PageSourceSearch

https://codethislab.com/wp-content/uploads/ctl-wp-studio/cache/booster/main_front.min.js?ver=6218

js codethislab.com collected 2026-09-24 23:26:37 UTC 3,047,328 bytes, 38,541 lines download raw bytes

1// file: /var/www/vhosts/codethislab.com/httpdocs/wp-content/plugins/ctl-wp-studio/classes/core/../../js/jquery.min.js
vendor: 89,476 bytes, lines 2-3
2/*! jQuery v3.5.1 | (c) JS Foundation and other contributors | jquery.org/license */
3!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.5.1",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0<t&&t-1 in e)}S.fn=S.prototype={jquery:f,constructor:S,length:0,toArray:function(){return s.call(this)},get:function(e){return null==e?s.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=S.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return S.each(this,e)},map:function(n){return this.pushStack(S.map(this,function(e,t){return n.call(e,t,e)}))},slice:function(){return this.pushStack(s.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},even:function(){return this.pushStack(S.grep(this,function(e,t){return(t+1)%2}))},odd:function(){return this.pushStack(S.grep(this,function(e,t){return t%2}))},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(0<=n&&n<t?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:u,sort:t.sort,splice:t.splice},S.extend=S.fn.extend=function(){var e,t,n,r,i,o,a=arguments[0]||{},s=1,u=arguments.length,l=!1;for("boolean"==typeof a&&(l=a,a=arguments[s]||{},s++),"object"==typeof a||m(a)||(a={}),s===u&&(a=this,s--);s<u;s++)if(null!=(e=arguments[s]))for(t in e)r=e[t],"__proto__"!==t&&a!==r&&(l&&r&&(S.isPlainObject(r)||(i=Array.isArray(r)))?(n=a[t],o=i&&!Array.isArray(n)?[]:i||S.isPlainObject(n)?n:{},i=!1,a[t]=S.extend(l,o,r)):void 0!==r&&(a[t]=r));return a},S.extend({expando:"jQuery"+(f+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isPlainObject:function(e){var t,n;return!(!e||"[object Object]"!==o.call(e))&&(!(t=r(e))||"function"==typeof(n=v.call(t,"constructor")&&t.constructor)&&a.call(n)===l)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},globalEval:function(e,t,n){b(e,{nonce:t&&t.nonce},n)},each:function(e,t){var n,r=0;if(p(e)){for(n=e.length;r<n;r++)if(!1===t.call(e[r],r,e[r]))break}else for(r in e)if(!1===t.call(e[r],r,e[r]))break;return e},makeArray:function(e,t){var n=t||[];return null!=e&&(p(Object(e))?S.merge(n,"string"==typeof e?[e]:e):u.call(n,e)),n},inArray:function(e,t,n){return null==t?-1:i.call(t,e,n)},merge:function(e,t){for(var n=+t.length,r=0,i=e.length;r<n;r++)e[i++]=t[r];return e.length=i,e},grep:function(e,t,n){for(var r=[],i=0,o=e.length,a=!n;i<o;i++)!t(e[i],i)!==a&&r.push(e[i]);return r},map:function(e,t,n){var r,i,o=0,a=[];if(p(e))for(r=e.length;o<r;o++)null!=(i=t(e[o],o,n))&&a.push(i);else for(o in e)null!=(i=t(e[o],o,n))&&a.push(i);return g(a)},guid:1,support:y}),"function"==typeof Symbol&&(S.fn[Symbol.iterator]=t[Symbol.iterator]),S.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(e,t){n["[object "+t+"]"]=t.toLowerCase()});var d=function(n){var e,d,b,o,i,h,f,g,w,u,l,T,C,a,E,v,s,c,y,S="sizzle"+1*new Date,p=n.document,k=0,r=0,m=ue(),x=ue(),A=ue(),N=ue(),D=function(e,t){return e===t&&(l=!0),0},j={}.hasOwnProperty,t=[],q=t.pop,L=t.push,H=t.push,O=t.slice,P=function(e,t){for(var n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1},R="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",M="[\\x20\\t\\r\\n\\f]",I="(?:\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\[^\\r\\n\\f]|[\\w-]|[^\0-\\x7f])+",W="\\["+M+"*("+I+")(?:"+M+"*([*^$|!~]?=)"+M+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+I+"))|)"+M+"*\\]",F=":("+I+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+W+")*)|.*)\\)|)",B=new RegExp(M+"+","g"),$=new RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),_=new RegExp("^"+M+"*,"+M+"*"),z=new RegExp("^"+M+"*([>+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="<a id='"+S+"'></a><select id='"+S+"-\r\\' msallowcapture=''><option selected=''></option></select>",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0<se(t,C,null,[e]).length},se.contains=function(e,t){return(e.ownerDocument||e)!=C&&T(e),y(e,t)},se.attr=function(e,t){(e.ownerDocument||e)!=C&&T(e);var n=b.attrHandle[t.toLowerCase()],r=n&&j.call(b.attrHandle,t.toLowerCase())?n(e,t,!E):void 0;return void 0!==r?r:d.attributes||!E?e.getAttribute(t):(r=e.getAttributeNode(t))&&r.specified?r.value:null},se.escape=function(e){return(e+"").replace(re,ie)},se.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},se.uniqueSort=function(e){var t,n=[],r=0,i=0;if(l=!d.detectDuplicates,u=!d.sortStable&&e.slice(0),e.sort(D),l){while(t=e[i++])t===e[i]&&(r=n.push(i));while(r--)e.splice(n[r],1)}return u=null,e},o=se.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=o(e)}else if(3===i||4===i)return e.nodeValue}else while(t=e[r++])n+=o(t);return n},(b=se.selectors={cacheLength:50,createPseudo:le,match:G,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1<t.indexOf(i):"$="===r?i&&t.slice(-i.length)===i:"~="===r?-1<(" "+t.replace(B," ")+" ").indexOf(i):"|="===r&&(t===i||t.slice(0,i.length+1)===i+"-"))}},CHILD:function(h,e,t,g,v){var y="nth"!==h.slice(0,3),m="last"!==h.slice(-4),x="of-type"===e;return 1===g&&0===v?function(e){return!!e.parentNode}:function(e,t,n){var r,i,o,a,s,u,l=y!==m?"nextSibling":"previousSibling",c=e.parentNode,f=x&&e.nodeName.toLowerCase(),p=!n&&!x,d=!1;if(c){if(y){while(l){a=e;while(a=a[l])if(x?a.nodeName.toLowerCase()===f:1===a.nodeType)return!1;u=l="only"===h&&!u&&"nextSibling"}return!0}if(u=[m?c.firstChild:c.lastChild],m&&p){d=(s=(r=(i=(o=(a=c)[S]||(a[S]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===k&&r[1])&&r[2],a=s&&c.childNodes[s];while(a=++s&&a&&a[l]||(d=s=0)||u.pop())if(1===a.nodeType&&++d&&a===e){i[h]=[k,s,d];break}}else if(p&&(d=s=(r=(i=(o=(a=e)[S]||(a[S]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===k&&r[1]),!1===d)while(a=++s&&a&&a[l]||(d=s=0)||u.pop())if((x?a.nodeName.toLowerCase()===f:1===a.nodeType)&&++d&&(p&&((i=(o=a[S]||(a[S]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]=[k,d]),a===e))break;return(d-=v)===g||d%g==0&&0<=d/g}}},PSEUDO:function(e,o){var t,a=b.pseudos[e]||b.setFilters[e.toLowerCase()]||se.error("unsupported pseudo: "+e);return a[S]?a(o):1<a.length?(t=[e,e,"",o],b.setFilters.hasOwnProperty(e.toLowerCase())?le(function(e,t){var n,r=a(e,o),i=r.length;while(i--)e[n=P(e,r[i])]=!(t[n]=r[i])}):function(e){return a(e,0,t)}):a}},pseudos:{not:le(function(e){var r=[],i=[],s=f(e.replace($,"$1"));return s[S]?le(function(e,t,n,r){var i,o=s(e,null,r,[]),a=e.length;while(a--)(i=o[a])&&(e[a]=!(t[a]=i))}):function(e,t,n){return r[0]=e,s(r,null,n,i),r[0]=null,!i.pop()}}),has:le(function(t){return function(e){return 0<se(t,e).length}}),contains:le(function(t){return t=t.replace(te,ne),function(e){return-1<(e.textContent||o(e)).indexOf(t)}}),lang:le(function(n){return V.test(n||"")||se.error("unsupported lang: "+n),n=n.replace(te,ne).toLowerCase(),function(e){var t;do{if(t=E?e.lang:e.getAttribute("xml:lang")||e.getAttribute("lang"))return(t=t.toLowerCase())===n||0===t.indexOf(n+"-")}while((e=e.parentNode)&&1===e.nodeType);return!1}}),target:function(e){var t=n.location&&n.location.hash;return t&&t.slice(1)===e.id},root:function(e){return e===a},focus:function(e){return e===C.activeElement&&(!C.hasFocus||C.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:ge(!1),disabled:ge(!0),checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!b.pseudos.empty(e)},header:function(e){return J.test(e.nodeName)},input:function(e){return Q.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:ve(function(){return[0]}),last:ve(function(e,t){return[t-1]}),eq:ve(function(e,t,n){return[n<0?n+t:n]}),even:ve(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:ve(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:ve(function(e,t,n){for(var r=n<0?n+t:t<n?t:n;0<=--r;)e.push(r);return e}),gt:ve(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}}).pseudos.nth=b.pseudos.eq,{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})b.pseudos[e]=de(e);for(e in{submit:!0,reset:!0})b.pseudos[e]=he(e);function me(){}function xe(e){for(var t=0,n=e.length,r="";t<n;t++)r+=e[t].value;return r}function be(s,e,t){var u=e.dir,l=e.next,c=l||u,f=t&&"parentNode"===c,p=r++;return e.first?function(e,t,n){while(e=e[u])if(1===e.nodeType||f)return s(e,t,n);return!1}:function(e,t,n){var r,i,o,a=[k,p];if(n){while(e=e[u])if((1===e.nodeType||f)&&s(e,t,n))return!0}else while(e=e[u])if(1===e.nodeType||f)if(i=(o=e[S]||(e[S]={}))[e.uniqueID]||(o[e.uniqueID]={}),l&&l===e.nodeName.toLowerCase())e=e[u]||e;else{if((r=i[c])&&r[0]===k&&r[1]===p)return a[2]=r[2];if((i[c]=a)[2]=s(e,t,n))return!0}return!1}}function we(i){return 1<i.length?function(e,t,n){var r=i.length;while(r--)if(!i[r](e,t,n))return!1;return!0}:i[0]}function Te(e,t,n,r,i){for(var o,a=[],s=0,u=e.length,l=null!=t;s<u;s++)(o=e[s])&&(n&&!n(o,r,i)||(a.push(o),l&&t.push(s)));return a}function Ce(d,h,g,v,y,e){return v&&!v[S]&&(v=Ce(v)),y&&!y[S]&&(y=Ce(y,e)),le(function(e,t,n,r){var i,o,a,s=[],u=[],l=t.length,c=e||function(e,t,n){for(var r=0,i=t.length;r<i;r++)se(e,t[r],n);return n}(h||"*",n.nodeType?[n]:n,[]),f=!d||!e&&h?c:Te(c,s,d,n,r),p=g?y||(e?d:l||v)?[]:t:f;if(g&&g(f,p,n,r),v){i=Te(p,u),v(i,[],n,r),o=i.length;while(o--)(a=i[o])&&(p[u[o]]=!(f[u[o]]=a))}if(e){if(y||d){if(y){i=[],o=p.length;while(o--)(a=p[o])&&i.push(f[o]=a);y(null,p=[],i,r)}o=p.length;while(o--)(a=p[o])&&-1<(i=y?P(e,a):s[o])&&(e[i]=!(t[i]=a))}}else p=Te(p===t?p.splice(l,p.length):p),y?y(null,t,p,r):H.apply(t,p)})}function Ee(e){for(var i,t,n,r=e.length,o=b.relative[e[0].type],a=o||b.relative[" "],s=o?1:0,u=be(function(e){return e===i},a,!0),l=be(function(e){return-1<P(i,e)},a,!0),c=[function(e,t,n){var r=!o&&(n||t!==w)||((i=t).nodeType?u(e,t,n):l(e,t,n));return i=null,r}];s<r;s++)if(t=b.relative[e[s].type])c=[be(we(c),t)];else{if((t=b.filter[e[s].type].apply(null,e[s].matches))[S]){for(n=++s;n<r;n++)if(b.relative[e[n].type])break;return Ce(1<s&&we(c),1<s&&xe(e.slice(0,s-1).concat({value:" "===e[s-2].type?"*":""})).replace($,"$1"),t,s<n&&Ee(e.slice(s,n)),n<r&&Ee(e=e.slice(n)),n<r&&xe(e))}c.push(t)}return we(c)}return me.prototype=b.filters=b.pseudos,b.setFilters=new me,h=se.tokenize=function(e,t){var n,r,i,o,a,s,u,l=x[e+" "];if(l)return t?0:l.slice(0);a=e,s=[],u=b.preFilter;while(a){for(o in n&&!(r=_.exec(a))||(r&&(a=a.slice(r[0].length)||a),s.push(i=[])),n=!1,(r=z.exec(a))&&(n=r.shift(),i.push({value:n,type:r[0].replace($," ")}),a=a.slice(n.length)),b.filter)!(r=G[o].exec(a))||u[o]&&!(r=u[o](r))||(n=r.shift(),i.push({value:n,type:o,matches:r}),a=a.slice(n.length));if(!n)break}return t?a.length:a?se.error(e):x(e,s).slice(0)},f=se.compile=function(e,t){var n,v,y,m,x,r,i=[],o=[],a=A[e+" "];if(!a){t||(t=h(e)),n=t.length;while(n--)(a=Ee(t[n]))[S]?i.push(a):o.push(a);(a=A(e,(v=o,m=0<(y=i).length,x=0<v.length,r=function(e,t,n,r,i){var o,a,s,u=0,l="0",c=e&&[],f=[],p=w,d=e||x&&b.find.TAG("*",i),h=k+=null==p?1:Math.random()||.1,g=d.length;for(i&&(w=t==C||t||i);l!==g&&null!=(o=d[l]);l++){if(x&&o){a=0,t||o.ownerDocument==C||(T(o),n=!E);while(s=v[a++])if(s(o,t||C,n)){r.push(o);break}i&&(k=h)}m&&((o=!s&&o)&&u--,e&&c.push(o))}if(u+=l,m&&l!==u){a=0;while(s=y[a++])s(c,f,t,n);if(e){if(0<u)while(l--)c[l]||f[l]||(f[l]=q.call(r));f=Te(f)}H.apply(r,f),i&&!e&&0<f.length&&1<u+y.length&&se.uniqueSort(r)}return i&&(k=h,w=p),c},m?le(r):r))).selector=e}return a},g=se.select=function(e,t,n,r){var i,o,a,s,u,l="function"==typeof e&&e,c=!r&&h(e=l.selector||e);if(n=n||[],1===c.length){if(2<(o=c[0]=c[0].slice(0)).length&&"ID"===(a=o[0]).type&&9===t.nodeType&&E&&b.relative[o[1].type]){if(!(t=(b.find.ID(a.matches[0].replace(te,ne),t)||[])[0]))return n;l&&(t=t.parentNode),e=e.slice(o.shift().value.length)}i=G.needsContext.test(e)?0:o.length;while(i--){if(a=o[i],b.relative[s=a.type])break;if((u=b.find[s])&&(r=u(a.matches[0].replace(te,ne),ee.test(o[0].type)&&ye(t.parentNode)||t))){if(o.splice(i,1),!(e=r.length&&xe(o)))return H.apply(n,r),n;break}}}return(l||f(e,c))(r,t,!E,n,!t||ee.test(e)&&ye(t.parentNode)||t),n},d.sortStable=S.split("").sort(D).join("")===S,d.detectDuplicates=!!l,T(),d.sortDetached=ce(function(e){return 1&e.compareDocumentPosition(C.createElement("fieldset"))}),ce(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||fe("type|href|height|width",function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),d.attributes&&ce(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||fe("value",function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue}),ce(function(e){return null==e.getAttribute("disabled")})||fe(R,function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),se}(C);S.find=d,S.expr=d.selectors,S.expr[":"]=S.expr.pseudos,S.uniqueSort=S.unique=d.uniqueSort,S.text=d.getText,S.isXMLDoc=d.isXML,S.contains=d.contains,S.escapeSelector=d.escape;var h=function(e,t,n){var r=[],i=void 0!==n;while((e=e[t])&&9!==e.nodeType)if(1===e.nodeType){if(i&&S(e).is(n))break;r.push(e)}return r},T=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},k=S.expr.match.needsContext;function A(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var N=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function D(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1<i.call(n,e)!==r}):S.filter(n,e,r)}S.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?S.find.matchesSelector(r,e)?[r]:[]:S.find.matches(e,S.grep(t,function(e){return 1===e.nodeType}))},S.fn.extend({find:function(e){var t,n,r=this.length,i=this;if("string"!=typeof e)return this.pushStack(S(e).filter(function(){for(t=0;t<r;t++)if(S.contains(i[t],this))return!0}));for(n=this.pushStack([]),t=0;t<r;t++)S.find(e,i[t],n);return 1<r?S.uniqueSort(n):n},filter:function(e){return this.pushStack(D(this,e||[],!1))},not:function(e){return this.pushStack(D(this,e||[],!0))},is:function(e){return!!D(this,"string"==typeof e&&k.test(e)?S(e):e||[],!1).length}});var j,q=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||j,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,j=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e<n;e++)if(S.contains(this,t[e]))return!0})},closest:function(e,t){var n,r=0,i=this.length,o=[],a="string"!=typeof e&&S(e);if(!k.test(e))for(;r<i;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(a?-1<a.index(n):1===n.nodeType&&S.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(1<o.length?S.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?i.call(S(e),this[0]):i.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(S.uniqueSort(S.merge(this.get(),S(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),S.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return h(e,"parentNode")},parentsUntil:function(e,t,n){return h(e,"parentNode",n)},next:function(e){return O(e,"nextSibling")},prev:function(e){return O(e,"previousSibling")},nextAll:function(e){return h(e,"nextSibling")},prevAll:function(e){return h(e,"previousSibling")},nextUntil:function(e,t,n){return h(e,"nextSibling",n)},prevUntil:function(e,t,n){return h(e,"previousSibling",n)},siblings:function(e){return T((e.parentNode||{}).firstChild,e)},children:function(e){return T(e.firstChild)},contents:function(e){return null!=e.contentDocument&&r(e.contentDocument)?e.contentDocument:(A(e,"template")&&(e=e.content||e),S.merge([],e.childNodes))}},function(r,i){S.fn[r]=function(e,t){var n=S.map(this,i,e);return"Until"!==r.slice(-5)&&(t=e),t&&"string"==typeof t&&(n=S.filter(t,n)),1<this.length&&(H[r]||S.uniqueSort(n),L.test(r)&&n.reverse()),this.pushStack(n)}});var P=/[^\x20\t\r\n\f]+/g;function R(e){return e}function M(e){throw e}function I(e,t,n,r){var i;try{e&&m(i=e.promise)?i.call(e).done(t).fail(n):e&&m(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}S.Callbacks=function(r){var e,n;r="string"==typeof r?(e=r,n={},S.each(e.match(P)||[],function(e,t){n[t]=!0}),n):S.extend({},r);var i,t,o,a,s=[],u=[],l=-1,c=function(){for(a=a||r.once,o=i=!0;u.length;l=-1){t=u.shift();while(++l<s.length)!1===s[l].apply(t[0],t[1])&&r.stopOnFalse&&(l=s.length,t=!1)}r.memory||(t=!1),i=!1,a&&(s=t?[]:"")},f={add:function(){return s&&(t&&!i&&(l=s.length-1,u.push(t)),function n(e){S.each(e,function(e,t){m(t)?r.unique&&f.has(t)||s.push(t):t&&t.length&&"string"!==w(t)&&n(t)})}(arguments),t&&!i&&c()),this},remove:function(){return S.each(arguments,function(e,t){var n;while(-1<(n=S.inArray(t,s,n)))s.splice(n,1),n<=l&&l--}),this},has:function(e){return e?-1<S.inArray(e,s):0<s.length},empty:function(){return s&&(s=[]),this},disable:function(){return a=u=[],s=t="",this},disabled:function(){return!s},lock:function(){return a=u=[],t||i||(s=t=""),this},locked:function(){return!!a},fireWith:function(e,t){return a||(t=[e,(t=t||[]).slice?t.slice():t],u.push(t),i||c()),this},fire:function(){return f.fireWith(this,arguments),this},fired:function(){return!!o}};return f},S.extend({Deferred:function(e){var o=[["notify","progress",S.Callbacks("memory"),S.Callbacks("memory"),2],["resolve","done",S.Callbacks("once memory"),S.Callbacks("once memory"),0,"resolved"],["reject","fail",S.Callbacks("once memory"),S.Callbacks("once memory"),1,"rejected"]],i="pending",a={state:function(){return i},always:function(){return s.done(arguments).fail(arguments),this},"catch":function(e){return a.then(null,e)},pipe:function(){var i=arguments;return S.Deferred(function(r){S.each(o,function(e,t){var n=m(i[t[4]])&&i[t[4]];s[t[1]](function(){var e=n&&n.apply(this,arguments);e&&m(e.promise)?e.promise().progress(r.notify).done(r.resolve).fail(r.reject):r[t[0]+"With"](this,n?[e]:arguments)})}),i=null}).promise()},then:function(t,n,r){var u=0;function l(i,o,a,s){return function(){var n=this,r=arguments,e=function(){var e,t;if(!(i<u)){if((e=a.apply(n,r))===o.promise())throw new TypeError("Thenable self-resolution");t=e&&("object"==typeof e||"function"==typeof e)&&e.then,m(t)?s?t.call(e,l(u,o,R,s),l(u,o,M,s)):(u++,t.call(e,l(u,o,R,s),l(u,o,M,s),l(u,o,R,o.notifyWith))):(a!==R&&(n=void 0,r=[e]),(s||o.resolveWith)(n,r))}},t=s?e:function(){try{e()}catch(e){S.Deferred.exceptionHook&&S.Deferred.exceptionHook(e,t.stackTrace),u<=i+1&&(a!==M&&(n=void 0,r=[e]),o.rejectWith(n,r))}};i?t():(S.Deferred.getStackHook&&(t.stackTrace=S.Deferred.getStackHook()),C.setTimeout(t))}}return S.Deferred(function(e){o[0][3].add(l(0,e,m(r)?r:R,e.notifyWith)),o[1][3].add(l(0,e,m(t)?t:R)),o[2][3].add(l(0,e,m(n)?n:M))}).promise()},promise:function(e){return null!=e?S.extend(e,a):a}},s={};return S.each(o,function(e,t){var n=t[2],r=t[5];a[t[1]]=n.add,r&&n.add(function(){i=r},o[3-e][2].disable,o[3-e][3].disable,o[0][2].lock,o[0][3].lock),n.add(t[3].fire),s[t[0]]=function(){return s[t[0]+"With"](this===s?void 0:this,arguments),this},s[t[0]+"With"]=n.fireWith}),a.promise(s),e&&e.call(s,s),s},when:function(e){var n=arguments.length,t=n,r=Array(t),i=s.call(arguments),o=S.Deferred(),a=function(t){return function(e){r[t]=this,i[t]=1<arguments.length?s.call(arguments):e,--n||o.resolveWith(r,i)}};if(n<=1&&(I(e,o.done(a(t)).resolve,o.reject,!n),"pending"===o.state()||m(i[t]&&i[t].then)))return o.then();while(t--)I(i[t],a(t),o.reject);return o.promise()}});var W=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;S.Deferred.exceptionHook=function(e,t){C.console&&C.console.warn&&e&&W.test(e.name)&&C.console.warn("jQuery.Deferred exception: "+e.message,e.stack,t)},S.readyException=function(e){C.setTimeout(function(){throw e})};var F=S.Deferred();function B(){E.removeEventListener("DOMContentLoaded",B),C.removeEventListener("load",B),S.ready()}S.fn.ready=function(e){return F.then(e)["catch"](function(e){S.readyException(e)}),this},S.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--S.readyWait:S.isReady)||(S.isReady=!0)!==e&&0<--S.readyWait||F.resolveWith(E,[S])}}),S.ready.then=F.then,"complete"===E.readyState||"loading"!==E.readyState&&!E.documentElement.doScroll?C.setTimeout(S.ready):(E.addEventListener("DOMContentLoaded",B),C.addEventListener("load",B));var $=function(e,t,n,r,i,o,a){var s=0,u=e.length,l=null==n;if("object"===w(n))for(s in i=!0,n)$(e,t,s,n[s],!0,o,a);else if(void 0!==r&&(i=!0,m(r)||(a=!0),l&&(a?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(S(e),n)})),t))for(;s<u;s++)t(e[s],n,a?r:r.call(e[s],s,t(e[s],n)));return i?e:l?t.call(e):u?t(e[0],n):o},_=/^-ms-/,z=/-([a-z])/g;function U(e,t){return t.toUpperCase()}function X(e){return e.replace(_,"ms-").replace(z,U)}var V=function(e){return 1===e.nodeType||9===e.nodeType||!+e.nodeType};function G(){this.expando=S.expando+G.uid++}G.uid=1,G.prototype={cache:function(e){var t=e[this.expando];return t||(t={},V(e)&&(e.nodeType?e[this.expando]=t:Object.defineProperty(e,this.expando,{value:t,configurable:!0}))),t},set:function(e,t,n){var r,i=this.cache(e);if("string"==typeof t)i[X(t)]=n;else for(r in t)i[X(r)]=t[r];return i},get:function(e,t){return void 0===t?this.cache(e):e[this.expando]&&e[this.expando][X(t)]},access:function(e,t,n){return void 0===t||t&&"string"==typeof t&&void 0===n?this.get(e,t):(this.set(e,t,n),void 0!==n?n:t)},remove:function(e,t){var n,r=e[this.expando];if(void 0!==r){if(void 0!==t){n=(t=Array.isArray(t)?t.map(X):(t=X(t))in r?[t]:t.match(P)||[]).length;while(n--)delete r[t[n]]}(void 0===t||S.isEmptyObject(r))&&(e.nodeType?e[this.expando]=void 0:delete e[this.expando])}},hasData:function(e){var t=e[this.expando];return void 0!==t&&!S.isEmptyObject(t)}};var Y=new G,Q=new G,J=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,K=/[A-Z]/g;function Z(e,t,n){var r,i;if(void 0===n&&1===e.nodeType)if(r="data-"+t.replace(K,"-$&").toLowerCase(),"string"==typeof(n=e.getAttribute(r))){try{n="true"===(i=n)||"false"!==i&&("null"===i?null:i===+i+""?+i:J.test(i)?JSON.parse(i):i)}catch(e){}Q.set(e,t,n)}else n=void 0;return n}S.extend({hasData:function(e){return Q.hasData(e)||Y.hasData(e)},data:function(e,t,n){return Q.access(e,t,n)},removeData:function(e,t){Q.remove(e,t)},_data:function(e,t,n){return Y.access(e,t,n)},_removeData:function(e,t){Y.remove(e,t)}}),S.fn.extend({data:function(n,e){var t,r,i,o=this[0],a=o&&o.attributes;if(void 0===n){if(this.length&&(i=Q.get(o),1===o.nodeType&&!Y.get(o,"hasDataAttrs"))){t=a.length;while(t--)a[t]&&0===(r=a[t].name).indexOf("data-")&&(r=X(r.slice(5)),Z(o,r,i[r]));Y.set(o,"hasDataAttrs",!0)}return i}return"object"==typeof n?this.each(function(){Q.set(this,n)}):$(this,function(e){var t;if(o&&void 0===e)return void 0!==(t=Q.get(o,n))?t:void 0!==(t=Z(o,n))?t:void 0;this.each(function(){Q.set(this,n,e)})},null,e,1<arguments.length,null,!0)},removeData:function(e){return this.each(function(){Q.remove(this,e)})}}),S.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=Y.get(e,t),n&&(!r||Array.isArray(n)?r=Y.access(e,t,S.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=S.queue(e,t),r=n.length,i=n.shift(),o=S._queueHooks(e,t);"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,function(){S.dequeue(e,t)},o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return Y.get(e,n)||Y.access(e,n,{empty:S.Callbacks("once memory").add(function(){Y.remove(e,[t+"queue",n])})})}}),S.fn.extend({queue:function(t,n){var e=2;return"string"!=typeof t&&(n=t,t="fx",e--),arguments.length<e?S.queue(this[0],t):void 0===n?this:this.each(function(){var e=S.queue(this,t,n);S._queueHooks(this,t),"fx"===t&&"inprogress"!==e[0]&&S.dequeue(this,t)})},dequeue:function(e){return this.each(function(){S.dequeue(this,e)})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,t){var n,r=1,i=S.Deferred(),o=this,a=this.length,s=function(){--r||i.resolveWith(o,[o])};"string"!=typeof e&&(t=e,e=void 0),e=e||"fx";while(a--)(n=Y.get(o[a],e+"queueHooks"))&&n.empty&&(r++,n.empty.add(s));return s(),i.promise(t)}});var ee=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,te=new RegExp("^(?:([+-])=|)("+ee+")([a-z%]*)$","i"),ne=["Top","Right","Bottom","Left"],re=E.documentElement,ie=function(e){return S.contains(e.ownerDocument,e)},oe={composed:!0};re.getRootNode&&(ie=function(e){return S.contains(e.ownerDocument,e)||e.getRootNode(oe)===e.ownerDocument});var ae=function(e,t){return"none"===(e=t||e).style.display||""===e.style.display&&ie(e)&&"none"===S.css(e,"display")};function se(e,t,n,r){var i,o,a=20,s=r?function(){return r.cur()}:function(){return S.css(e,t,"")},u=s(),l=n&&n[3]||(S.cssNumber[t]?"":"px"),c=e.nodeType&&(S.cssNumber[t]||"px"!==l&&+u)&&te.exec(S.css(e,t));if(c&&c[3]!==l){u/=2,l=l||c[3],c=+u||1;while(a--)S.style(e,t,c+l),(1-o)*(1-(o=s()/u||.5))<=0&&(a=0),c/=o;c*=2,S.style(e,t,c+l),n=n||[]}return n&&(c=+c||+u||0,i=n[1]?c+(n[1]+1)*n[2]:+n[2],r&&(r.unit=l,r.start=c,r.end=i)),i}var ue={};function le(e,t){for(var n,r,i,o,a,s,u,l=[],c=0,f=e.length;c<f;c++)(r=e[c]).style&&(n=r.style.display,t?("none"===n&&(l[c]=Y.get(r,"display")||null,l[c]||(r.style.display="")),""===r.style.display&&ae(r)&&(l[c]=(u=a=o=void 0,a=(i=r).ownerDocument,s=i.nodeName,(u=ue[s])||(o=a.body.appendChild(a.createElement(s)),u=S.css(o,"display"),o.parentNode.removeChild(o),"none"===u&&(u="block"),ue[s]=u)))):"none"!==n&&(l[c]="none",Y.set(r,"display",n)));for(c=0;c<f;c++)null!=l[c]&&(e[c].style.display=l[c]);return e}S.fn.extend({show:function(){return le(this,!0)},hide:function(){return le(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){ae(this)?S(this).show():S(this).hide()})}});var ce,fe,pe=/^(?:checkbox|radio)$/i,de=/<([a-z][^\/\0>\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="<textarea>x</textarea>",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="<option></option>",y.option=!!ce.lastChild;var ge={thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n<r;n++)Y.set(e[n],"globalEval",!t||Y.get(t[n],"globalEval"))}ge.tbody=ge.tfoot=ge.colgroup=ge.caption=ge.thead,ge.th=ge.td,y.option||(ge.optgroup=ge.option=[1,"<select multiple='multiple'>","</select>"]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d<h;d++)if((o=e[d])||0===o)if("object"===w(o))S.merge(p,o.nodeType?[o]:o);else if(me.test(o)){a=a||f.appendChild(t.createElement("div")),s=(de.exec(o)||["",""])[1].toLowerCase(),u=ge[s]||ge._default,a.innerHTML=u[1]+S.htmlPrefilter(o)+u[2],c=u[0];while(c--)a=a.lastChild;S.merge(p,a.childNodes),(a=f.firstChild).textContent=""}else p.push(t.createTextNode(o));f.textContent="",d=0;while(o=p[d++])if(r&&-1<S.inArray(o,r))i&&i.push(o);else if(l=ie(o),a=ve(f.appendChild(o),"script"),l&&ye(a),n){c=0;while(o=a[c++])he.test(o.type||"")&&n.push(o)}return f}var be=/^key/,we=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Te=/^([^.]*)(?:\.(.+)|)/;function Ce(){return!0}function Ee(){return!1}function Se(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function ke(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)ke(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Ee;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return S().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=S.guid++)),e.each(function(){S.event.add(this,t,i,r,n)})}function Ae(e,i,o){o?(Y.set(e,i,!1),S.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Y.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(S.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Y.set(this,i,r),t=o(this,i),this[i](),r!==(n=Y.get(this,i))||t?Y.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n.value}else r.length&&(Y.set(this,i,{value:S.event.trigger(S.extend(r[0],S.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Y.get(e,i)&&S.event.add(e,i,Ce)}S.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Y.get(t);if(V(t)){n.handler&&(n=(o=n).handler,i=o.selector),i&&S.find.matchesSelector(re,i),n.guid||(n.guid=S.guid++),(u=v.events)||(u=v.events=Object.create(null)),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof S&&S.event.triggered!==e.type?S.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(P)||[""]).length;while(l--)d=g=(s=Te.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=S.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=S.event.special[d]||{},c=S.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&S.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),S.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Y.hasData(e)&&Y.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(P)||[""]).length;while(l--)if(d=g=(s=Te.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=S.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||S.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)S.event.remove(e,d+t[l],n,r,!0);S.isEmptyObject(u)&&Y.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=new Array(arguments.length),u=S.event.fix(e),l=(Y.get(this,"events")||Object.create(null))[u.type]||[],c=S.event.special[u.type]||{};for(s[0]=u,t=1;t<arguments.length;t++)s[t]=arguments[t];if(u.delegateTarget=this,!c.preDispatch||!1!==c.preDispatch.call(this,u)){a=S.event.handlers.call(this,u,l),t=0;while((i=a[t++])&&!u.isPropagationStopped()){u.currentTarget=i.elem,n=0;while((o=i.handlers[n++])&&!u.isImmediatePropagationStopped())u.rnamespace&&!1!==o.namespace&&!u.rnamespace.test(o.namespace)||(u.handleObj=o,u.data=o.data,void 0!==(r=((S.event.special[o.origType]||{}).handle||o.handler).apply(i.elem,s))&&!1===(u.result=r)&&(u.preventDefault(),u.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,u),u.result}},handlers:function(e,t){var n,r,i,o,a,s=[],u=t.delegateCount,l=e.target;if(u&&l.nodeType&&!("click"===e.type&&1<=e.button))for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&("click"!==e.type||!0!==l.disabled)){for(o=[],a={},n=0;n<u;n++)void 0===a[i=(r=t[n]).selector+" "]&&(a[i]=r.needsContext?-1<S(i,this).index(l):S.find(i,this,null,[l]).length),a[i]&&o.push(r);o.length&&s.push({elem:l,handlers:o})}return l=this,u<t.length&&s.push({elem:l,handlers:t.slice(u)}),s},addProp:function(t,e){Object.defineProperty(S.Event.prototype,t,{enumerable:!0,configurable:!0,get:m(e)?function(){if(this.originalEvent)return e(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[t]},set:function(e){Object.defineProperty(this,t,{enumerable:!0,configurable:!0,writable:!0,value:e})}})},fix:function(e){return e[S.expando]?e:new S.Event(e)},special:{load:{noBubble:!0},click:{setup:function(e){var t=this||e;return pe.test(t.type)&&t.click&&A(t,"input")&&Ae(t,"click",Ce),!1},trigger:function(e){var t=this||e;return pe.test(t.type)&&t.click&&A(t,"input")&&Ae(t,"click"),!0},_default:function(e){var t=e.target;return pe.test(t.type)&&t.click&&A(t,"input")&&Y.get(t,"click")||A(t,"a")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&e.originalEvent&&(e.originalEvent.returnValue=e.result)}}}},S.removeEvent=function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n)},S.Event=function(e,t){if(!(this instanceof S.Event))return new S.Event(e,t);e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&!1===e.returnValue?Ce:Ee,this.target=e.target&&3===e.target.nodeType?e.target.parentNode:e.target,this.currentTarget=e.currentTarget,this.relatedTarget=e.relatedTarget):this.type=e,t&&S.extend(this,t),this.timeStamp=e&&e.timeStamp||Date.now(),this[S.expando]=!0},S.Event.prototype={constructor:S.Event,isDefaultPrevented:Ee,isPropagationStopped:Ee,isImmediatePropagationStopped:Ee,isSimulated:!1,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=Ce,e&&!this.isSimulated&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=Ce,e&&!this.isSimulated&&e.stopPropagation()},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=Ce,e&&!this.isSimulated&&e.stopImmediatePropagation(),this.stopPropagation()}},S.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,"char":!0,code:!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:function(e){var t=e.button;return null==e.which&&be.test(e.type)?null!=e.charCode?e.charCode:e.keyCode:!e.which&&void 0!==t&&we.test(e.type)?1&t?1:2&t?3:4&t?2:0:e.which}},S.event.addProp),S.each({focus:"focusin",blur:"focusout"},function(e,t){S.event.special[e]={setup:function(){return Ae(this,e,Se),!1},trigger:function(){return Ae(this,e),!0},delegateType:t}}),S.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(e,i){S.event.special[e]={delegateType:i,bindType:i,handle:function(e){var t,n=e.relatedTarget,r=e.handleObj;return n&&(n===this||S.contains(this,n))||(e.type=r.origType,t=r.handler.apply(this,arguments),e.type=i),t}}}),S.fn.extend({on:function(e,t,n,r){return ke(this,e,t,n,r)},one:function(e,t,n,r){return ke(this,e,t,n,r,1)},off:function(e,t,n){var r,i;if(e&&e.preventDefault&&e.handleObj)return r=e.handleObj,S(e.delegateTarget).off(r.namespace?r.origType+"."+r.namespace:r.origType,r.selector,r.handler),this;if("object"==typeof e){for(i in e)this.off(i,t,e[i]);return this}return!1!==t&&"function"!=typeof t||(n=t,t=void 0),!1===n&&(n=Ee),this.each(function(){S.event.remove(this,e,n,t)})}});var Ne=/<script|<style|<link/i,De=/checked\s*(?:[^=]|=\s*.checked.)/i,je=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;function qe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function Le(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function He(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Oe(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n<r;n++)S.event.add(t,i,s[i][n]);Q.hasData(e)&&(o=Q.access(e),a=S.extend({},o),Q.set(t,a))}}function Pe(n,r,i,o){r=g(r);var e,t,a,s,u,l,c=0,f=n.length,p=f-1,d=r[0],h=m(d);if(h||1<f&&"string"==typeof d&&!y.checkClone&&De.test(d))return n.each(function(e){var t=n.eq(e);h&&(r[0]=d.call(this,e,t.html())),Pe(t,r,i,o)});if(f&&(t=(e=xe(r,n[0].ownerDocument,!1,n,o)).firstChild,1===e.childNodes.length&&(e=t),t||o)){for(s=(a=S.map(ve(e,"script"),Le)).length;c<f;c++)u=e,c!==p&&(u=S.clone(u,!0,!0),s&&S.merge(a,ve(u,"script"))),i.call(n[c],u,c);if(s)for(l=a[a.length-1].ownerDocument,S.map(a,He),c=0;c<s;c++)u=a[c],he.test(u.type||"")&&!Y.access(u,"globalEval")&&S.contains(l,u)&&(u.src&&"module"!==(u.type||"").toLowerCase()?S._evalUrl&&!u.noModule&&S._evalUrl(u.src,{nonce:u.nonce||u.getAttribute("nonce")},l):b(u.textContent.replace(je,""),u,l))}return n}function Re(e,t,n){for(var r,i=t?S.filter(t,e):e,o=0;null!=(r=i[o]);o++)n||1!==r.nodeType||S.cleanData(ve(r)),r.parentNode&&(n&&ie(r)&&ye(ve(r,"script")),r.parentNode.removeChild(r));return e}S.extend({htmlPrefilter:function(e){return e},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=ie(e);if(!(y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||S.isXMLDoc(e)))for(a=ve(c),r=0,i=(o=ve(e)).length;r<i;r++)s=o[r],u=a[r],void 0,"input"===(l=u.nodeName.toLowerCase())&&pe.test(s.type)?u.checked=s.checked:"input"!==l&&"textarea"!==l||(u.defaultValue=s.defaultValue);if(t)if(n)for(o=o||ve(e),a=a||ve(c),r=0,i=o.length;r<i;r++)Oe(o[r],a[r]);else Oe(e,c);return 0<(a=ve(c,"script")).length&&ye(a,!f&&ve(e,"script")),c},cleanData:function(e){for(var t,n,r,i=S.event.special,o=0;void 0!==(n=e[o]);o++)if(V(n)){if(t=n[Y.expando]){if(t.events)for(r in t.events)i[r]?S.event.remove(n,r):S.removeEvent(n,r,t.handle);n[Y.expando]=void 0}n[Q.expando]&&(n[Q.expando]=void 0)}}}),S.fn.extend({detach:function(e){return Re(this,e,!0)},remove:function(e){return Re(this,e)},text:function(e){return $(this,function(e){return void 0===e?S.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return Pe(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||qe(this,e).appendChild(e)})},prepend:function(){return Pe(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=qe(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return Pe(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return Pe(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(S.cleanData(ve(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return S.clone(this,e,t)})},html:function(e){return $(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!Ne.test(e)&&!ge[(de.exec(e)||["",""])[1].toLowerCase()]){e=S.htmlPrefilter(e);try{for(;n<r;n++)1===(t=this[n]||{}).nodeType&&(S.cleanData(ve(t,!1)),t.innerHTML=e);t=0}catch(e){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var n=[];return Pe(this,arguments,function(e){var t=this.parentNode;S.inArray(this,n)<0&&(S.cleanData(ve(this)),t&&t.replaceChild(e,this))},n)}}),S.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,a){S.fn[e]=function(e){for(var t,n=[],r=S(e),i=r.length-1,o=0;o<=i;o++)t=o===i?this:this.clone(!0),S(r[o])[a](t),u.apply(n,t.get());return this.pushStack(n)}});var Me=new RegExp("^("+ee+")(?!px)[a-z%]+$","i"),Ie=function(e){var t=e.ownerDocument.defaultView;return t&&t.opener||(t=C),t.getComputedStyle(e)},We=function(e,t,n){var r,i,o={};for(i in t)o[i]=e.style[i],e.style[i]=t[i];for(i in r=n.call(e),t)e.style[i]=o[i];return r},Fe=new RegExp(ne.join("|"),"i");function Be(e,t,n){var r,i,o,a,s=e.style;return(n=n||Ie(e))&&(""!==(a=n.getPropertyValue(t)||n[t])||ie(e)||(a=S.style(e,t)),!y.pixelBoxStyles()&&Me.test(a)&&Fe.test(t)&&(r=s.width,i=s.minWidth,o=s.maxWidth,s.minWidth=s.maxWidth=s.width=a,a=n.width,s.width=r,s.minWidth=i,s.maxWidth=o)),void 0!==a?a+"":a}function $e(e,t){return{get:function(){if(!e())return(this.get=t).apply(this,arguments);delete this.get}}}!function(){function e(){if(l){u.style.cssText="position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0",l.style.cssText="position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%",re.appendChild(u).appendChild(l);var e=C.getComputedStyle(l);n="1%"!==e.top,s=12===t(e.marginLeft),l.style.right="60%",o=36===t(e.right),r=36===t(e.width),l.style.position="absolute",i=12===t(l.offsetWidth/3),re.removeChild(u),l=null}}function t(e){return Math.round(parseFloat(e))}var n,r,i,o,a,s,u=E.createElement("div"),l=E.createElement("div");l.style&&(l.style.backgroundClip="content-box",l.cloneNode(!0).style.backgroundClip="",y.clearCloneStyle="content-box"===l.style.backgroundClip,S.extend(y,{boxSizingReliable:function(){return e(),r},pixelBoxStyles:function(){return e(),o},pixelPosition:function(){return e(),n},reliableMarginLeft:function(){return e(),s},scrollboxSize:function(){return e(),i},reliableTrDimensions:function(){var e,t,n,r;return null==a&&(e=E.createElement("table"),t=E.createElement("tr"),n=E.createElement("div"),e.style.cssText="position:absolute;left:-11111px",t.style.height="1px",n.style.height="9px",re.appendChild(e).appendChild(t).appendChild(n),r=C.getComputedStyle(t),a=3<parseInt(r.height),re.removeChild(e)),a}}))}();var _e=["Webkit","Moz","ms"],ze=E.createElement("div").style,Ue={};function Xe(e){var t=S.cssProps[e]||Ue[e];return t||(e in ze?e:Ue[e]=function(e){var t=e[0].toUpperCase()+e.slice(1),n=_e.length;while(n--)if((e=_e[n]+t)in ze)return e}(e)||e)}var Ve=/^(none|table(?!-c[ea]).+)/,Ge=/^--/,Ye={position:"absolute",visibility:"hidden",display:"block"},Qe={letterSpacing:"0",fontWeight:"400"};function Je(e,t,n){var r=te.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3]||"px"):t}function Ke(e,t,n,r,i,o){var a="width"===t?1:0,s=0,u=0;if(n===(r?"border":"content"))return 0;for(;a<4;a+=2)"margin"===n&&(u+=S.css(e,n+ne[a],!0,i)),r?("content"===n&&(u-=S.css(e,"padding"+ne[a],!0,i)),"margin"!==n&&(u-=S.css(e,"border"+ne[a]+"Width",!0,i))):(u+=S.css(e,"padding"+ne[a],!0,i),"padding"!==n?u+=S.css(e,"border"+ne[a]+"Width",!0,i):s+=S.css(e,"border"+ne[a]+"Width",!0,i));return!r&&0<=o&&(u+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-o-u-s-.5))||0),u}function Ze(e,t,n){var r=Ie(e),i=(!y.boxSizingReliable()||n)&&"border-box"===S.css(e,"boxSizing",!1,r),o=i,a=Be(e,t,r),s="offset"+t[0].toUpperCase()+t.slice(1);if(Me.test(a)){if(!n)return a;a="auto"}return(!y.boxSizingReliable()&&i||!y.reliableTrDimensions()&&A(e,"tr")||"auto"===a||!parseFloat(a)&&"inline"===S.css(e,"display",!1,r))&&e.getClientRects().length&&(i="border-box"===S.css(e,"boxSizing",!1,r),(o=s in e)&&(a=e[s])),(a=parseFloat(a)||0)+Ke(e,t,n||(i?"border":"content"),o,r,a)+"px"}function et(e,t,n,r,i){return new et.prototype.init(e,t,n,r,i)}S.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Be(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,gridArea:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnStart:!0,gridRow:!0,gridRowEnd:!0,gridRowStart:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=X(t),u=Ge.test(t),l=e.style;if(u||(t=Xe(s)),a=S.cssHooks[t]||S.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(i=a.get(e,!1,r))?i:l[t];"string"===(o=typeof n)&&(i=te.exec(n))&&i[1]&&(n=se(e,t,i),o="number"),null!=n&&n==n&&("number"!==o||u||(n+=i&&i[3]||(S.cssNumber[s]?"":"px")),y.clearCloneStyle||""!==n||0!==t.indexOf("background")||(l[t]="inherit"),a&&"set"in a&&void 0===(n=a.set(e,n,r))||(u?l.setProperty(t,n):l[t]=n))}},css:function(e,t,n,r){var i,o,a,s=X(t);return Ge.test(t)||(t=Xe(s)),(a=S.cssHooks[t]||S.cssHooks[s])&&"get"in a&&(i=a.get(e,!0,n)),void 0===i&&(i=Be(e,t,r)),"normal"===i&&t in Qe&&(i=Qe[t]),""===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),S.each(["height","width"],function(e,u){S.cssHooks[u]={get:function(e,t,n){if(t)return!Ve.test(S.css(e,"display"))||e.getClientRects().length&&e.getBoundingClientRect().width?Ze(e,u,n):We(e,Ye,function(){return Ze(e,u,n)})},set:function(e,t,n){var r,i=Ie(e),o=!y.scrollboxSize()&&"absolute"===i.position,a=(o||n)&&"border-box"===S.css(e,"boxSizing",!1,i),s=n?Ke(e,u,n,a,i):0;return a&&o&&(s-=Math.ceil(e["offset"+u[0].toUpperCase()+u.slice(1)]-parseFloat(i[u])-Ke(e,u,"border",!1,i)-.5)),s&&(r=te.exec(t))&&"px"!==(r[3]||"px")&&(e.style[u]=t,t=S.css(e,u)),Je(0,t,s)}}}),S.cssHooks.marginLeft=$e(y.reliableMarginLeft,function(e,t){if(t)return(parseFloat(Be(e,"marginLeft"))||e.getBoundingClientRect().left-We(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+"px"}),S.each({margin:"",padding:"",border:"Width"},function(i,o){S.cssHooks[i+o]={expand:function(e){for(var t=0,n={},r="string"==typeof e?e.split(" "):[e];t<4;t++)n[i+ne[t]+o]=r[t]||r[t-2]||r[0];return n}},"margin"!==i&&(S.cssHooks[i+o].set=Je)}),S.fn.extend({css:function(e,t){return $(this,function(e,t,n){var r,i,o={},a=0;if(Array.isArray(t)){for(r=Ie(e),i=t.length;a<i;a++)o[t[a]]=S.css(e,t[a],!1,r);return o}return void 0!==n?S.style(e,t,n):S.css(e,t)},e,t,1<arguments.length)}}),((S.Tween=et).prototype={constructor:et,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||S.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(S.cssNumber[n]?"":"px")},cur:function(){var e=et.propHooks[this.prop];return e&&e.get?e.get(this):et.propHooks._default.get(this)},run:function(e){var t,n=et.propHooks[this.prop];return this.options.duration?this.pos=t=S.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):et.propHooks._default.set(this),this}}).init.prototype=et.prototype,(et.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=S.css(e.elem,e.prop,""))&&"auto"!==t?t:0},set:function(e){S.fx.step[e.prop]?S.fx.step[e.prop](e):1!==e.elem.nodeType||!S.cssHooks[e.prop]&&null==e.elem.style[Xe(e.prop)]?e.elem[e.prop]=e.now:S.style(e.elem,e.prop,e.now+e.unit)}}}).scrollTop=et.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},S.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},S.fx=et.prototype.init,S.fx.step={};var tt,nt,rt,it,ot=/^(?:toggle|show|hide)$/,at=/queueHooks$/;function st(){nt&&(!1===E.hidden&&C.requestAnimationFrame?C.requestAnimationFrame(st):C.setTimeout(st,S.fx.interval),S.fx.tick())}function ut(){return C.setTimeout(function(){tt=void 0}),tt=Date.now()}function lt(e,t){var n,r=0,i={height:e};for(t=t?1:0;r<4;r+=2-t)i["margin"+(n=ne[r])]=i["padding"+n]=e;return t&&(i.opacity=i.width=e),i}function ct(e,t,n){for(var r,i=(ft.tweeners[t]||[]).concat(ft.tweeners["*"]),o=0,a=i.length;o<a;o++)if(r=i[o].call(n,t,e))return r}function ft(o,e,t){var n,a,r=0,i=ft.prefilters.length,s=S.Deferred().always(function(){delete u.elem}),u=function(){if(a)return!1;for(var e=tt||ut(),t=Math.max(0,l.startTime+l.duration-e),n=1-(t/l.duration||0),r=0,i=l.tweens.length;r<i;r++)l.tweens[r].run(n);return s.notifyWith(o,[l,n,t]),n<1&&i?t:(i||s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l]),!1)},l=s.promise({elem:o,props:S.extend({},e),opts:S.extend(!0,{specialEasing:{},easing:S.easing._default},t),originalProperties:e,originalOptions:t,startTime:tt||ut(),duration:t.duration,tweens:[],createTween:function(e,t){var n=S.Tween(o,l.opts,e,t,l.opts.specialEasing[e]||l.opts.easing);return l.tweens.push(n),n},stop:function(e){var t=0,n=e?l.tweens.length:0;if(a)return this;for(a=!0;t<n;t++)l.tweens[t].run(1);return e?(s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l,e])):s.rejectWith(o,[l,e]),this}}),c=l.props;for(!function(e,t){var n,r,i,o,a;for(n in e)if(i=t[r=X(n)],o=e[n],Array.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),(a=S.cssHooks[r])&&"expand"in a)for(n in o=a.expand(o),delete e[r],o)n in e||(e[n]=o[n],t[n]=i);else t[r]=i}(c,l.opts.specialEasing);r<i;r++)if(n=ft.prefilters[r].call(l,o,c,l.opts))return m(n.stop)&&(S._queueHooks(l.elem,l.opts.queue).stop=n.stop.bind(n)),n;return S.map(c,ct,l),m(l.opts.start)&&l.opts.start.call(o,l),l.progress(l.opts.progress).done(l.opts.done,l.opts.complete).fail(l.opts.fail).always(l.opts.always),S.fx.timer(S.extend(u,{elem:o,anim:l,queue:l.opts.queue})),l}S.Animation=S.extend(ft,{tweeners:{"*":[function(e,t){var n=this.createTween(e,t);return se(n.elem,e,te.exec(t),n),n}]},tweener:function(e,t){m(e)?(t=e,e=["*"]):e=e.match(P);for(var n,r=0,i=e.length;r<i;r++)n=e[r],ft.tweeners[n]=ft.tweeners[n]||[],ft.tweeners[n].unshift(t)},prefilters:[function(e,t,n){var r,i,o,a,s,u,l,c,f="width"in t||"height"in t,p=this,d={},h=e.style,g=e.nodeType&&ae(e),v=Y.get(e,"fxshow");for(r in n.queue||(null==(a=S._queueHooks(e,"fx")).unqueued&&(a.unqueued=0,s=a.empty.fire,a.empty.fire=function(){a.unqueued||s()}),a.unqueued++,p.always(function(){p.always(function(){a.unqueued--,S.queue(e,"fx").length||a.empty.fire()})})),t)if(i=t[r],ot.test(i)){if(delete t[r],o=o||"toggle"===i,i===(g?"hide":"show")){if("show"!==i||!v||void 0===v[r])continue;g=!0}d[r]=v&&v[r]||S.style(e,r)}if((u=!S.isEmptyObject(t))||!S.isEmptyObject(d))for(r in f&&1===e.nodeType&&(n.overflow=[h.overflow,h.overflowX,h.overflowY],null==(l=v&&v.display)&&(l=Y.get(e,"display")),"none"===(c=S.css(e,"display"))&&(l?c=l:(le([e],!0),l=e.style.display||l,c=S.css(e,"display"),le([e]))),("inline"===c||"inline-block"===c&&null!=l)&&"none"===S.css(e,"float")&&(u||(p.done(function(){h.display=l}),null==l&&(c=h.display,l="none"===c?"":c)),h.display="inline-block")),n.overflow&&(h.overflow="hidden",p.always(function(){h.overflow=n.overflow[0],h.overflowX=n.overflow[1],h.overflowY=n.overflow[2]})),u=!1,d)u||(v?"hidden"in v&&(g=v.hidden):v=Y.access(e,"fxshow",{display:l}),o&&(v.hidden=!g),g&&le([e],!0),p.done(function(){for(r in g||le([e]),Y.remove(e,"fxshow"),d)S.style(e,r,d[r])})),u=ct(g?v[r]:0,r,p),r in v||(v[r]=u.start,g&&(u.end=u.start,u.start=0))}],prefilter:function(e,t){t?ft.prefilters.unshift(e):ft.prefilters.push(e)}}),S.speed=function(e,t,n){var r=e&&"object"==typeof e?S.extend({},e):{complete:n||!n&&t||m(e)&&e,duration:e,easing:n&&t||t&&!m(t)&&t};return S.fx.off?r.duration=0:"number"!=typeof r.duration&&(r.duration in S.fx.speeds?r.duration=S.fx.speeds[r.duration]:r.duration=S.fx.speeds._default),null!=r.queue&&!0!==r.queue||(r.queue="fx"),r.old=r.complete,r.complete=function(){m(r.old)&&r.old.call(this),r.queue&&S.dequeue(this,r.queue)},r},S.fn.extend({fadeTo:function(e,t,n,r){return this.filter(ae).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(t,e,n,r){var i=S.isEmptyObject(t),o=S.speed(e,n,r),a=function(){var e=ft(this,S.extend({},t),o);(i||Y.get(this,"finish"))&&e.stop(!0)};return a.finish=a,i||!1===o.queue?this.each(a):this.queue(o.queue,a)},stop:function(i,e,o){var a=function(e){var t=e.stop;delete e.stop,t(o)};return"string"!=typeof i&&(o=e,e=i,i=void 0),e&&this.queue(i||"fx",[]),this.each(function(){var e=!0,t=null!=i&&i+"queueHooks",n=S.timers,r=Y.get(this);if(t)r[t]&&r[t].stop&&a(r[t]);else for(t in r)r[t]&&r[t].stop&&at.test(t)&&a(r[t]);for(t=n.length;t--;)n[t].elem!==this||null!=i&&n[t].queue!==i||(n[t].anim.stop(o),e=!1,n.splice(t,1));!e&&o||S.dequeue(this,i)})},finish:function(a){return!1!==a&&(a=a||"fx"),this.each(function(){var e,t=Y.get(this),n=t[a+"queue"],r=t[a+"queueHooks"],i=S.timers,o=n?n.length:0;for(t.finish=!0,S.queue(this,a,[]),r&&r.stop&&r.stop.call(this,!0),e=i.length;e--;)i[e].elem===this&&i[e].queue===a&&(i[e].anim.stop(!0),i.splice(e,1));for(e=0;e<o;e++)n[e]&&n[e].finish&&n[e].finish.call(this);delete t.finish})}}),S.each(["toggle","show","hide"],function(e,r){var i=S.fn[r];S.fn[r]=function(e,t,n){return null==e||"boolean"==typeof e?i.apply(this,arguments):this.animate(lt(r,!0),e,t,n)}}),S.each({slideDown:lt("show"),slideUp:lt("hide"),slideToggle:lt("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,r){S.fn[e]=function(e,t,n){return this.animate(r,e,t,n)}}),S.timers=[],S.fx.tick=function(){var e,t=0,n=S.timers;for(tt=Date.now();t<n.length;t++)(e=n[t])()||n[t]!==e||n.splice(t--,1);n.length||S.fx.stop(),tt=void 0},S.fx.timer=function(e){S.timers.push(e),S.fx.start()},S.fx.interval=13,S.fx.start=function(){nt||(nt=!0,st())},S.fx.stop=function(){nt=null},S.fx.speeds={slow:600,fast:200,_default:400},S.fn.delay=function(r,e){return r=S.fx&&S.fx.speeds[r]||r,e=e||"fx",this.queue(e,function(e,t){var n=C.setTimeout(e,r);t.stop=function(){C.clearTimeout(n)}})},rt=E.createElement("input"),it=E.createElement("select").appendChild(E.createElement("option")),rt.type="checkbox",y.checkOn=""!==rt.value,y.optSelected=it.selected,(rt=E.createElement("input")).value="t",rt.type="radio",y.radioValue="t"===rt.value;var pt,dt=S.expr.attrHandle;S.fn.extend({attr:function(e,t){return $(this,S.attr,e,t,1<arguments.length)},removeAttr:function(e){return this.each(function(){S.removeAttr(this,e)})}}),S.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return"undefined"==typeof e.getAttribute?S.prop(e,t,n):(1===o&&S.isXMLDoc(e)||(i=S.attrHooks[t.toLowerCase()]||(S.expr.match.bool.test(t)?pt:void 0)),void 0!==n?null===n?void S.removeAttr(e,t):i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+""),n):i&&"get"in i&&null!==(r=i.get(e,t))?r:null==(r=S.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!y.radioValue&&"radio"===t&&A(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,i=t&&t.match(P);if(i&&1===e.nodeType)while(n=i[r++])e.removeAttribute(n)}}),pt={set:function(e,t,n){return!1===t?S.removeAttr(e,n):e.setAttribute(n,n),n}},S.each(S.expr.match.bool.source.match(/\w+/g),function(e,t){var a=dt[t]||S.find.attr;dt[t]=function(e,t,n){var r,i,o=t.toLowerCase();return n||(i=dt[o],dt[o]=r,r=null!=a(e,t,n)?o:null,dt[o]=i),r}});var ht=/^(?:input|select|textarea|button)$/i,gt=/^(?:a|area)$/i;function vt(e){return(e.match(P)||[]).join(" ")}function yt(e){return e.getAttribute&&e.getAttribute("class")||""}function mt(e){return Array.isArray(e)?e:"string"==typeof e&&e.match(P)||[]}S.fn.extend({prop:function(e,t){return $(this,S.prop,e,t,1<arguments.length)},removeProp:function(e){return this.each(function(){delete this[S.propFix[e]||e]})}}),S.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&S.isXMLDoc(e)||(t=S.propFix[t]||t,i=S.propHooks[t]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=S.find.attr(e,"tabindex");return t?parseInt(t,10):ht.test(e.nodeName)||gt.test(e.nodeName)&&e.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),y.optSelected||(S.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),S.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){S.propFix[this.toLowerCase()]=this}),S.fn.extend({addClass:function(t){var e,n,r,i,o,a,s,u=0;if(m(t))return this.each(function(e){S(this).addClass(t.call(this,e,yt(this)))});if((e=mt(t)).length)while(n=this[u++])if(i=yt(n),r=1===n.nodeType&&" "+vt(i)+" "){a=0;while(o=e[a++])r.indexOf(" "+o+" ")<0&&(r+=o+" ");i!==(s=vt(r))&&n.setAttribute("class",s)}return this},removeClass:function(t){var e,n,r,i,o,a,s,u=0;if(m(t))return this.each(function(e){S(this).removeClass(t.call(this,e,yt(this)))});if(!arguments.length)return this.attr("class","");if((e=mt(t)).length)while(n=this[u++])if(i=yt(n),r=1===n.nodeType&&" "+vt(i)+" "){a=0;while(o=e[a++])while(-1<r.indexOf(" "+o+" "))r=r.replace(" "+o+" "," ");i!==(s=vt(r))&&n.setAttribute("class",s)}return this},toggleClass:function(i,t){var o=typeof i,a="string"===o||Array.isArray(i);return"boolean"==typeof t&&a?t?this.addClass(i):this.removeClass(i):m(i)?this.each(function(e){S(this).toggleClass(i.call(this,e,yt(this),t),t)}):this.each(function(){var e,t,n,r;if(a){t=0,n=S(this),r=mt(i);while(e=r[t++])n.hasClass(e)?n.removeClass(e):n.addClass(e)}else void 0!==i&&"boolean"!==o||((e=yt(this))&&Y.set(this,"__className__",e),this.setAttribute&&this.setAttribute("class",e||!1===i?"":Y.get(this,"__className__")||""))})},hasClass:function(e){var t,n,r=0;t=" "+e+" ";while(n=this[r++])if(1===n.nodeType&&-1<(" "+vt(yt(n))+" ").indexOf(t))return!0;return!1}});var xt=/\r/g;S.fn.extend({val:function(n){var r,e,i,t=this[0];return arguments.length?(i=m(n),this.each(function(e){var t;1===this.nodeType&&(null==(t=i?n.call(this,e,S(this).val()):n)?t="":"number"==typeof t?t+="":Array.isArray(t)&&(t=S.map(t,function(e){return null==e?"":e+""})),(r=S.valHooks[this.type]||S.valHooks[this.nodeName.toLowerCase()])&&"set"in r&&void 0!==r.set(this,t,"value")||(this.value=t))})):t?(r=S.valHooks[t.type]||S.valHooks[t.nodeName.toLowerCase()])&&"get"in r&&void 0!==(e=r.get(t,"value"))?e:"string"==typeof(e=t.value)?e.replace(xt,""):null==e?"":e:void 0}}),S.extend({valHooks:{option:{get:function(e){var t=S.find.attr(e,"value");return null!=t?t:vt(S.text(e))}},select:{get:function(e){var t,n,r,i=e.options,o=e.selectedIndex,a="select-one"===e.type,s=a?null:[],u=a?o+1:i.length;for(r=o<0?u:a?o:0;r<u;r++)if(((n=i[r]).selected||r===o)&&!n.disabled&&(!n.parentNode.disabled||!A(n.parentNode,"optgroup"))){if(t=S(n).val(),a)return t;s.push(t)}return s},set:function(e,t){var n,r,i=e.options,o=S.makeArray(t),a=i.length;while(a--)((r=i[a]).selected=-1<S.inArray(S.valHooks.option.get(r),o))&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),S.each(["radio","checkbox"],function(){S.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=-1<S.inArray(S(e).val(),t)}},y.checkOn||(S.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})}),y.focusin="onfocusin"in C;var bt=/^(?:focusinfocus|focusoutblur)$/,wt=function(e){e.stopPropagation()};S.extend(S.event,{trigger:function(e,t,n,r){var i,o,a,s,u,l,c,f,p=[n||E],d=v.call(e,"type")?e.type:e,h=v.call(e,"namespace")?e.namespace.split("."):[];if(o=f=a=n=n||E,3!==n.nodeType&&8!==n.nodeType&&!bt.test(d+S.event.triggered)&&(-1<d.indexOf(".")&&(d=(h=d.split(".")).shift(),h.sort()),u=d.indexOf(":")<0&&"on"+d,(e=e[S.expando]?e:new S.Event(d,"object"==typeof e&&e)).isTrigger=r?2:3,e.namespace=h.join("."),e.rnamespace=e.namespace?new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,e.result=void 0,e.target||(e.target=n),t=null==t?[e]:S.makeArray(t,[e]),c=S.event.special[d]||{},r||!c.trigger||!1!==c.trigger.apply(n,t))){if(!r&&!c.noBubble&&!x(n)){for(s=c.delegateType||d,bt.test(s+d)||(o=o.parentNode);o;o=o.parentNode)p.push(o),a=o;a===(n.ownerDocument||E)&&p.push(a.defaultView||a.parentWindow||C)}i=0;while((o=p[i++])&&!e.isPropagationStopped())f=o,e.type=1<i?s:c.bindType||d,(l=(Y.get(o,"events")||Object.create(null))[e.type]&&Y.get(o,"handle"))&&l.apply(o,t),(l=u&&o[u])&&l.apply&&V(o)&&(e.result=l.apply(o,t),!1===e.result&&e.preventDefault());return e.type=d,r||e.isDefaultPrevented()||c._default&&!1!==c._default.apply(p.pop(),t)||!V(n)||u&&m(n[d])&&!x(n)&&((a=n[u])&&(n[u]=null),S.event.triggered=d,e.isPropagationStopped()&&f.addEventListener(d,wt),n[d](),e.isPropagationStopped()&&f.removeEventListener(d,wt),S.event.triggered=void 0,a&&(n[u]=a)),e.result}},simulate:function(e,t,n){var r=S.extend(new S.Event,n,{type:e,isSimulated:!0});S.event.trigger(r,null,t)}}),S.fn.extend({trigger:function(e,t){return this.each(function(){S.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return S.event.trigger(e,t,n,!0)}}),y.focusin||S.each({focus:"focusin",blur:"focusout"},function(n,r){var i=function(e){S.event.simulate(r,e.target,S.event.fix(e))};S.event.special[r]={setup:function(){var e=this.ownerDocument||this.document||this,t=Y.access(e,r);t||e.addEventListener(n,i,!0),Y.access(e,r,(t||0)+1)},teardown:function(){var e=this.ownerDocument||this.document||this,t=Y.access(e,r)-1;t?Y.access(e,r,t):(e.removeEventListener(n,i,!0),Y.remove(e,r))}}});var Tt=C.location,Ct={guid:Date.now()},Et=/\?/;S.parseXML=function(e){var t;if(!e||"string"!=typeof e)return null;try{t=(new C.DOMParser).parseFromString(e,"text/xml")}catch(e){t=void 0}return t&&!t.getElementsByTagName("parsererror").length||S.error("Invalid XML: "+e),t};var St=/\[\]$/,kt=/\r?\n/g,At=/^(?:submit|button|image|reset|file)$/i,Nt=/^(?:input|select|textarea|keygen)/i;function Dt(n,e,r,i){var t;if(Array.isArray(e))S.each(e,function(e,t){r||St.test(n)?i(n,t):Dt(n+"["+("object"==typeof t&&null!=t?e:"")+"]",t,r,i)});else if(r||"object"!==w(e))i(n,e);else for(t in e)Dt(n+"["+t+"]",e[t],r,i)}S.param=function(e,t){var n,r=[],i=function(e,t){var n=m(t)?t():t;r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(null==e)return"";if(Array.isArray(e)||e.jquery&&!S.isPlainObject(e))S.each(e,function(){i(this.name,this.value)});else for(n in e)Dt(n,e[n],t,i);return r.join("&")},S.fn.extend({serialize:function(){return S.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=S.prop(this,"elements");return e?S.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!S(this).is(":disabled")&&Nt.test(this.nodeName)&&!At.test(e)&&(this.checked||!pe.test(e))}).map(function(e,t){var n=S(this).val();return null==n?null:Array.isArray(n)?S.map(n,function(e){return{name:t.name,value:e.replace(kt,"\r\n")}}):{name:t.name,value:n.replace(kt,"\r\n")}}).get()}});var jt=/%20/g,qt=/#.*$/,Lt=/([?&])_=[^&]*/,Ht=/^(.*?):[ \t]*([^\r\n]*)$/gm,Ot=/^(?:GET|HEAD)$/,Pt=/^\/\//,Rt={},Mt={},It="*/".concat("*"),Wt=E.createElement("a");function Ft(o){return function(e,t){"string"!=typeof e&&(t=e,e="*");var n,r=0,i=e.toLowerCase().match(P)||[];if(m(t))while(n=i[r++])"+"===n[0]?(n=n.slice(1)||"*",(o[n]=o[n]||[]).unshift(t)):(o[n]=o[n]||[]).push(t)}}function Bt(t,i,o,a){var s={},u=t===Mt;function l(e){var r;return s[e]=!0,S.each(t[e]||[],function(e,t){var n=t(i,o,a);return"string"!=typeof n||u||s[n]?u?!(r=n):void 0:(i.dataTypes.unshift(n),l(n),!1)}),r}return l(i.dataTypes[0])||!s["*"]&&l("*")}function $t(e,t){var n,r,i=S.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&S.extend(!0,e,r),e}Wt.href=Tt.href,S.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Tt.href,type:"GET",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(Tt.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":It,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":S.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?$t($t(e,S.ajaxSettings),t):$t(S.ajaxSettings,e)},ajaxPrefilter:Ft(Rt),ajaxTransport:Ft(Mt),ajax:function(e,t){"object"==typeof e&&(t=e,e=void 0),t=t||{};var c,f,p,n,d,r,h,g,i,o,v=S.ajaxSetup({},t),y=v.context||v,m=v.context&&(y.nodeType||y.jquery)?S(y):S.event,x=S.Deferred(),b=S.Callbacks("once memory"),w=v.statusCode||{},a={},s={},u="canceled",T={readyState:0,getResponseHeader:function(e){var t;if(h){if(!n){n={};while(t=Ht.exec(p))n[t[1].toLowerCase()+" "]=(n[t[1].toLowerCase()+" "]||[]).concat(t[2])}t=n[e.toLowerCase()+" "]}return null==t?null:t.join(", ")},getAllResponseHeaders:function(){return h?p:null},setRequestHeader:function(e,t){return null==h&&(e=s[e.toLowerCase()]=s[e.toLowerCase()]||e,a[e]=t),this},overrideMimeType:function(e){return null==h&&(v.mimeType=e),this},statusCode:function(e){var t;if(e)if(h)T.always(e[T.status]);else for(t in e)w[t]=[w[t],e[t]];return this},abort:function(e){var t=e||u;return c&&c.abort(t),l(0,t),this}};if(x.promise(T),v.url=((e||v.url||Tt.href)+"").replace(Pt,Tt.protocol+"//"),v.type=t.method||t.type||v.method||v.type,v.dataTypes=(v.dataType||"*").toLowerCase().match(P)||[""],null==v.crossDomain){r=E.createElement("a");try{r.href=v.url,r.href=r.href,v.crossDomain=Wt.protocol+"//"+Wt.host!=r.protocol+"//"+r.host}catch(e){v.crossDomain=!0}}if(v.data&&v.processData&&"string"!=typeof v.data&&(v.data=S.param(v.data,v.traditional)),Bt(Rt,v,t,T),h)return T;for(i in(g=S.event&&v.global)&&0==S.active++&&S.event.trigger("ajaxStart"),v.type=v.type.toUpperCase(),v.hasContent=!Ot.test(v.type),f=v.url.replace(qt,""),v.hasContent?v.data&&v.processData&&0===(v.contentType||"").indexOf("application/x-www-form-urlencoded")&&(v.data=v.data.replace(jt,"+")):(o=v.url.slice(f.length),v.data&&(v.processData||"string"==typeof v.data)&&(f+=(Et.test(f)?"&":"?")+v.data,delete v.data),!1===v.cache&&(f=f.replace(Lt,"$1"),o=(Et.test(f)?"&":"?")+"_="+Ct.guid+++o),v.url=f+o),v.ifModified&&(S.lastModified[f]&&T.setRequestHeader("If-Modified-Since",S.lastModified[f]),S.etag[f]&&T.setRequestHeader("If-None-Match",S.etag[f])),(v.data&&v.hasContent&&!1!==v.contentType||t.contentType)&&T.setRequestHeader("Content-Type",v.contentType),T.setRequestHeader("Accept",v.dataTypes[0]&&v.accepts[v.dataTypes[0]]?v.accepts[v.dataTypes[0]]+("*"!==v.dataTypes[0]?", "+It+"; q=0.01":""):v.accepts["*"]),v.headers)T.setRequestHeader(i,v.headers[i]);if(v.beforeSend&&(!1===v.beforeSend.call(y,T,v)||h))return T.abort();if(u="abort",b.add(v.complete),T.done(v.success),T.fail(v.error),c=Bt(Mt,v,t,T)){if(T.readyState=1,g&&m.trigger("ajaxSend",[T,v]),h)return T;v.async&&0<v.timeout&&(d=C.setTimeout(function(){T.abort("timeout")},v.timeout));try{h=!1,c.send(a,l)}catch(e){if(h)throw e;l(-1,e)}}else l(-1,"No Transport");function l(e,t,n,r){var i,o,a,s,u,l=t;h||(h=!0,d&&C.clearTimeout(d),c=void 0,p=r||"",T.readyState=0<e?4:0,i=200<=e&&e<300||304===e,n&&(s=function(e,t,n){var r,i,o,a,s=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(i in s)if(s[i]&&s[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||e.converters[i+" "+u[0]]){o=i;break}a||(a=i)}o=o||a}if(o)return o!==u[0]&&u.unshift(o),n[o]}(v,T,n)),!i&&-1<S.inArray("script",v.dataTypes)&&(v.converters["text script"]=function(){}),s=function(e,t,n,r){var i,o,a,s,u,l={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)l[a.toLowerCase()]=e.converters[a];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift())if("*"===o)o=u;else if("*"!==u&&u!==o){if(!(a=l[u+" "+o]||l["* "+o]))for(i in l)if((s=i.split(" "))[1]===o&&(a=l[u+" "+s[0]]||l["* "+s[0]])){!0===a?a=l[i]:!0!==l[i]&&(o=s[0],c.unshift(s[1]));break}if(!0!==a)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(e){return{state:"parsererror",error:a?e:"No conversion from "+u+" to "+o}}}return{state:"success",data:t}}(v,s,T,i),i?(v.ifModified&&((u=T.getResponseHeader("Last-Modified"))&&(S.lastModified[f]=u),(u=T.getResponseHeader("etag"))&&(S.etag[f]=u)),204===e||"HEAD"===v.type?l="nocontent":304===e?l="notmodified":(l=s.state,o=s.data,i=!(a=s.error))):(a=l,!e&&l||(l="error",e<0&&(e=0))),T.status=e,T.statusText=(t||l)+"",i?x.resolveWith(y,[o,l,T]):x.rejectWith(y,[T,l,a]),T.statusCode(w),w=void 0,g&&m.trigger(i?"ajaxSuccess":"ajaxError",[T,v,i?o:a]),b.fireWith(y,[T,l]),g&&(m.trigger("ajaxComplete",[T,v]),--S.active||S.event.trigger("ajaxStop")))}return T},getJSON:function(e,t,n){return S.get(e,t,n,"json")},getScript:function(e,t){return S.get(e,void 0,t,"script")}}),S.each(["get","post"],function(e,i){S[i]=function(e,t,n,r){return m(t)&&(r=r||n,n=t,t=void 0),S.ajax(S.extend({url:e,type:i,dataType:r,data:t,success:n},S.isPlainObject(e)&&e))}}),S.ajaxPrefilter(function(e){var t;for(t in e.headers)"content-type"===t.toLowerCase()&&(e.contentType=e.headers[t]||"")}),S._evalUrl=function(e,t,n){return S.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,converters:{"text script":function(){}},dataFilter:function(e){S.globalEval(e,t,n)}})},S.fn.extend({wrapAll:function(e){var t;return this[0]&&(m(e)&&(e=e.call(this[0])),t=S(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstElementChild)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(n){return m(n)?this.each(function(e){S(this).wrapInner(n.call(this,e))}):this.each(function(){var e=S(this),t=e.contents();t.length?t.wrapAll(n):e.append(n)})},wrap:function(t){var n=m(t);return this.each(function(e){S(this).wrapAll(n?t.call(this,e):t)})},unwrap:function(e){return this.parent(e).not("body").each(function(){S(this).replaceWith(this.childNodes)}),this}}),S.expr.pseudos.hidden=function(e){return!S.expr.pseudos.visible(e)},S.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},S.ajaxSettings.xhr=function(){try{return new C.XMLHttpRequest}catch(e){}};var _t={0:200,1223:204},zt=S.ajaxSettings.xhr();y.cors=!!zt&&"withCredentials"in zt,y.ajax=zt=!!zt,S.ajaxTransport(function(i){var o,a;if(y.cors||zt&&!i.crossDomain)return{send:function(e,t){var n,r=i.xhr();if(r.open(i.type,i.url,i.async,i.username,i.password),i.xhrFields)for(n in i.xhrFields)r[n]=i.xhrFields[n];for(n in i.mimeType&&r.overrideMimeType&&r.overrideMimeType(i.mimeType),i.crossDomain||e["X-Requested-With"]||(e["X-Requested-With"]="XMLHttpRequest"),e)r.setRequestHeader(n,e[n]);o=function(e){return function(){o&&(o=a=r.onload=r.onerror=r.onabort=r.ontimeout=r.onreadystatechange=null,"abort"===e?r.abort():"error"===e?"number"!=typeof r.status?t(0,"error"):t(r.status,r.statusText):t(_t[r.status]||r.status,r.statusText,"text"!==(r.responseType||"text")||"string"!=typeof r.responseText?{binary:r.response}:{text:r.responseText},r.getAllResponseHeaders()))}},r.onload=o(),a=r.onerror=r.ontimeout=o("error"),void 0!==r.onabort?r.onabort=a:r.onreadystatechange=function(){4===r.readyState&&C.setTimeout(function(){o&&a()})},o=o("abort");try{r.send(i.hasContent&&i.data||null)}catch(e){if(o)throw e}},abort:function(){o&&o()}}}),S.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),S.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return S.globalEval(e),e}}}),S.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),S.ajaxTransport("script",function(n){var r,i;if(n.crossDomain||n.scriptAttrs)return{send:function(e,t){r=S("<script>").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Ut,Xt=[],Vt=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Xt.pop()||S.expando+"_"+Ct.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Vt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Vt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Vt,"$1"+r):!1!==e.jsonp&&(e.url+=(Et.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Xt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Ut=E.implementation.createHTMLDocument("").body).innerHTML="<form></form><form></form>",2===Ut.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1<s&&(r=vt(e.slice(s)),e=e.slice(0,s)),m(t)?(n=t,t=void 0):t&&"object"==typeof t&&(i="POST"),0<a.length&&S.ajax({url:e,type:i||"GET",dataType:"html",data:t}).done(function(e){o=arguments,a.html(r?S("<div>").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):("number"==typeof f.top&&(f.top+="px"),"number"==typeof f.left&&(f.left+="px"),c.css(f))}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=$e(y.pixelPosition,function(e,t){if(t)return t=Be(e,n),Me.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0<arguments.length?this.on(n,null,e,t):this.trigger(n)}});var Gt=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;S.proxy=function(e,t){var n,r,i;if("string"==typeof t&&(n=e[t],t=e,e=n),m(e))return r=s.call(arguments,2),(i=function(){return e.apply(t||this,r.concat(s.call(arguments)))}).guid=e.guid=e.guid||S.guid++,i},S.holdReady=function(e){e?S.readyWait++:S.ready(!0)},S.isArray=Array.isArray,S.parseJSON=JSON.parse,S.nodeName=A,S.isFunction=m,S.isWindow=x,S.camelCase=X,S.type=w,S.now=Date.now,S.isNumeric=function(e){var t=S.type(e);return("number"===t||"string"===t)&&!isNaN(e-parseFloat(e))},S.trim=function(e){return null==e?"":(e+"").replace(Gt,"")},"function"==typeof define&&define.amd&&define("jquery",[],function(){return S});var Yt=C.jQuery,Qt=C.$;return S.noConflict=function(e){return C.$===S&&(C.$=Qt),e&&C.jQuery===S&&(C.jQuery=Yt),S},"undefined"==typeof e&&(C.jQuery=C.$=S),S});
4// file: /var/www/vhosts/codethislab.com/httpdocs/wp-content/plugins/ctl-wp-studio/classes/core/../../js/jquery-ui.min.js
vendor: 66,595 bytes, lines 5-12
5/*! jQuery UI - v1.12.1 - 2016-09-14
6* http://jqueryui.com
7* Includes: widget.js, position.js, data.js, disable-selection.js, effect.js, effects/effect-blind.js, effects/effect-bounce.js, effects/effect-clip.js, effects/effect-drop.js, effects/effect-explode.js, effects/effect-fade.js, effects/effect-fold.js, effects/effect-highlight.js, effects/effect-puff.js, effects/effect-pulsate.js, effects/effect-scale.js, effects/effect-shake.js, effects/effect-size.js, effects/effect-slide.js, effects/effect-transfer.js, focusable.js, form-reset-mixin.js, jquery-1-7.js, keycode.js, labels.js, scroll-parent.js, tabbable.js, unique-id.js, widgets/accordion.js, widgets/autocomplete.js, widgets/button.js, widgets/checkboxradio.js, widgets/controlgroup.js, widgets/datepicker.js, widgets/dialog.js, widgets/draggable.js, widgets/droppable.js, widgets/menu.js, widgets/mouse.js, widgets/progressbar.js, widgets/resizable.js, widgets/selectable.js, widgets/selectmenu.js, widgets/slider.js, widgets/sortable.js, widgets/spinner.js, widgets/tabs.js, widgets/tooltip.js
8* Copyright jQuery Foundation and other contributors; Licensed MIT */
9
10(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){function e(t){for(var e=t.css("visibility");"inherit"===e;)t=t.parent(),e=t.css("visibility");return"hidden"!==e}function i(t){for(var e,i;t.length&&t[0]!==document;){if(e=t.css("position"),("absolute"===e||"relative"===e||"fixed"===e)&&(i=parseInt(t.css("zIndex"),10),!isNaN(i)&&0!==i))return i;t=t.parent()}return 0}function s(){this._curInst=null,this._keyEvent=!1,this._disabledInputs=[],this._datepickerShowing=!1,this._inDialog=!1,this._mainDivId="ui-datepicker-div",this._inlineClass="ui-datepicker-inline",this._appendClass="ui-datepicker-append",this._triggerClass="ui-datepicker-trigger",this._dialogClass="ui-datepicker-dialog",this._disableClass="ui-datepicker-disabled",this._unselectableClass="ui-datepicker-unselectable",this._currentClass="ui-datepicker-current-day",this._dayOverClass="ui-datepicker-days-cell-over",this.regional=[],this.regional[""]={closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],weekHeader:"Wk",dateFormat:"mm/dd/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},this._defaults={showOn:"focus",showAnim:"fadeIn",showOptions:{},defaultDate:null,appendText:"",buttonText:"...",buttonImage:"",buttonImageOnly:!1,hideIfNoPrevNext:!1,navigationAsDateFormat:!1,gotoCurrent:!1,changeMonth:!1,changeYear:!1,yearRange:"c-10:c+10",showOtherMonths:!1,selectOtherMonths:!1,showWeek:!1,calculateWeek:this.iso8601Week,shortYearCutoff:"+10",minDate:null,maxDate:null,duration:"fast",beforeShowDay:null,beforeShow:null,onSelect:null,onChangeMonthYear:null,onClose:null,numberOfMonths:1,showCurrentAtPos:0,stepMonths:1,stepBigMonths:12,altField:"",altFormat:"",constrainInput:!0,showButtonPanel:!1,autoSize:!1,disabled:!1},t.extend(this._defaults,this.regional[""]),this.regional.en=t.extend(!0,{},this.regional[""]),this.regional["en-US"]=t.extend(!0,{},this.regional.en),this.dpDiv=n(t("<div id='"+this._mainDivId+"' class='ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>"))}function n(e){var i="button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a";return e.on("mouseout",i,function(){t(this).removeClass("ui-state-hover"),-1!==this.className.indexOf("ui-datepicker-prev")&&t(this).removeClass("ui-datepicker-prev-hover"),-1!==this.className.indexOf("ui-datepicker-next")&&t(this).removeClass("ui-datepicker-next-hover")}).on("mouseover",i,o)}function o(){t.datepicker._isDisabledDatepicker(m.inline?m.dpDiv.parent()[0]:m.input[0])||(t(this).parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover"),t(this).addClass("ui-state-hover"),-1!==this.className.indexOf("ui-datepicker-prev")&&t(this).addClass("ui-datepicker-prev-hover"),-1!==this.className.indexOf("ui-datepicker-next")&&t(this).addClass("ui-datepicker-next-hover"))}function a(e,i){t.extend(e,i);for(var s in i)null==i[s]&&(e[s]=i[s]);return e}function r(t){return function(){var e=this.element.val();t.apply(this,arguments),this._refresh(),e!==this.element.val()&&this._trigger("change")}}t.ui=t.ui||{},t.ui.version="1.12.1";var h=0,l=Array.prototype.slice;t.cleanData=function(e){return function(i){var s,n,o;for(o=0;null!=(n=i[o]);o++)try{s=t._data(n,"events"),s&&s.remove&&t(n).triggerHandler("remove")}catch(a){}e(i)}}(t.cleanData),t.widget=function(e,i,s){var n,o,a,r={},h=e.split(".")[0];e=e.split(".")[1];var l=h+"-"+e;return s||(s=i,i=t.Widget),t.isArray(s)&&(s=t.extend.apply(null,[{}].concat(s))),t.expr[":"][l.toLowerCase()]=function(e){return!!t.data(e,l)},t[h]=t[h]||{},n=t[h][e],o=t[h][e]=function(t,e){return this._createWidget?(arguments.length&&this._createWidget(t,e),void 0):new o(t,e)},t.extend(o,n,{version:s.version,_proto:t.extend({},s),_childConstructors:[]}),a=new i,a.options=t.widget.extend({},a.options),t.each(s,function(e,s){return t.isFunction(s)?(r[e]=function(){function t(){return i.prototype[e].apply(this,arguments)}function n(t){return i.prototype[e].apply(this,t)}return function(){var e,i=this._super,o=this._superApply;return this._super=t,this._superApply=n,e=s.apply(this,arguments),this._super=i,this._superApply=o,e}}(),void 0):(r[e]=s,void 0)}),o.prototype=t.widget.extend(a,{widgetEventPrefix:n?a.widgetEventPrefix||e:e},r,{constructor:o,namespace:h,widgetName:e,widgetFullName:l}),n?(t.each(n._childConstructors,function(e,i){var s=i.prototype;t.widget(s.namespace+"."+s.widgetName,o,i._proto)}),delete n._childConstructors):i._childConstructors.push(o),t.widget.bridge(e,o),o},t.widget.extend=function(e){for(var i,s,n=l.call(arguments,1),o=0,a=n.length;a>o;o++)for(i in n[o])s=n[o][i],n[o].hasOwnProperty(i)&&void 0!==s&&(e[i]=t.isPlainObject(s)?t.isPlainObject(e[i])?t.widget.extend({},e[i],s):t.widget.extend({},s):s);return e},t.widget.bridge=function(e,i){var s=i.prototype.widgetFullName||e;t.fn[e]=function(n){var o="string"==typeof n,a=l.call(arguments,1),r=this;return o?this.length||"instance"!==n?this.each(function(){var i,o=t.data(this,s);return"instance"===n?(r=o,!1):o?t.isFunction(o[n])&&"_"!==n.charAt(0)?(i=o[n].apply(o,a),i!==o&&void 0!==i?(r=i&&i.jquery?r.pushStack(i.get()):i,!1):void 0):t.error("no such method '"+n+"' for "+e+" widget instance"):t.error("cannot call methods on "+e+" prior to initialization; "+"attempted to call method '"+n+"'")}):r=void 0:(a.length&&(n=t.widget.extend.apply(null,[n].concat(a))),this.each(function(){var e=t.data(this,s);e?(e.option(n||{}),e._init&&e._init()):t.data(this,s,new i(n,this))})),r}},t.Widget=function(){},t.Widget._childConstructors=[],t.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"<div>",options:{classes:{},disabled:!1,create:null},_createWidget:function(e,i){i=t(i||this.defaultElement||this)[0],this.element=t(i),this.uuid=h++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=t(),this.hoverable=t(),this.focusable=t(),this.classesElementLookup={},i!==this&&(t.data(i,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===i&&this.destroy()}}),this.document=t(i.style?i.ownerDocument:i.document||i),this.window=t(this.document[0].defaultView||this.document[0].parentWindow)),this.options=t.widget.extend({},this.options,this._getCreateOptions(),e),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:t.noop,_create:t.noop,_init:t.noop,destroy:function(){var e=this;this._destroy(),t.each(this.classesElementLookup,function(t,i){e._removeClass(i,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:t.noop,widget:function(){return this.element},option:function(e,i){var s,n,o,a=e;if(0===arguments.length)return t.widget.extend({},this.options);if("string"==typeof e)if(a={},s=e.split("."),e=s.shift(),s.length){for(n=a[e]=t.widget.extend({},this.options[e]),o=0;s.length-1>o;o++)n[s[o]]=n[s[o]]||{},n=n[s[o]];if(e=s.pop(),1===arguments.length)return void 0===n[e]?null:n[e];n[e]=i}else{if(1===arguments.length)return void 0===this.options[e]?null:this.options[e];a[e]=i}return this._setOptions(a),this},_setOptions:function(t){var e;for(e in t)this._setOption(e,t[e]);return this},_setOption:function(t,e){return"classes"===t&&this._setOptionClasses(e),this.options[t]=e,"disabled"===t&&this._setOptionDisabled(e),this},_setOptionClasses:function(e){var i,s,n;for(i in e)n=this.classesElementLookup[i],e[i]!==this.options.classes[i]&&n&&n.length&&(s=t(n.get()),this._removeClass(n,i),s.addClass(this._classes({element:s,keys:i,classes:e,add:!0})))},_setOptionDisabled:function(t){this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,!!t),t&&(this._removeClass(this.hoverable,null,"ui-state-hover"),this._removeClass(this.focusable,null,"ui-state-focus"))},enable:function(){return this._setOptions({disabled:!1})},disable:function(){return this._setOptions({disabled:!0})},_classes:function(e){function i(i,o){var a,r;for(r=0;i.length>r;r++)a=n.classesElementLookup[i[r]]||t(),a=e.add?t(t.unique(a.get().concat(e.element.get()))):t(a.not(e.element).get()),n.classesElementLookup[i[r]]=a,s.push(i[r]),o&&e.classes[i[r]]&&s.push(e.classes[i[r]])}var s=[],n=this;return e=t.extend({element:this.element,classes:this.options.classes||{}},e),this._on(e.element,{remove:"_untrackClassesElement"}),e.keys&&i(e.keys.match(/\S+/g)||[],!0),e.extra&&i(e.extra.match(/\S+/g)||[]),s.join(" ")},_untrackClassesElement:function(e){var i=this;t.each(i.classesElementLookup,function(s,n){-1!==t.inArray(e.target,n)&&(i.classesElementLookup[s]=t(n.not(e.target).get()))})},_removeClass:function(t,e,i){return this._toggleClass(t,e,i,!1)},_addClass:function(t,e,i){return this._toggleClass(t,e,i,!0)},_toggleClass:function(t,e,i,s){s="boolean"==typeof s?s:i;var n="string"==typeof t||null===t,o={extra:n?e:i,keys:n?t:e,element:n?this.element:t,add:s};return o.element.toggleClass(this._classes(o),s),this},_on:function(e,i,s){var n,o=this;"boolean"!=typeof e&&(s=i,i=e,e=!1),s?(i=n=t(i),this.bindings=this.bindings.add(i)):(s=i,i=this.element,n=this.widget()),t.each(s,function(s,a){function r(){return e||o.options.disabled!==!0&&!t(this).hasClass("ui-state-disabled")?("string"==typeof a?o[a]:a).apply(o,arguments):void 0}"string"!=typeof a&&(r.guid=a.guid=a.guid||r.guid||t.guid++);var h=s.match(/^([\w:-]*)\s*(.*)$/),l=h[1]+o.eventNamespace,c=h[2];c?n.on(l,c,r):i.on(l,r)})},_off:function(e,i){i=(i||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,e.off(i).off(i),this.bindings=t(this.bindings.not(e).get()),this.focusable=t(this.focusable.not(e).get()),this.hoverable=t(this.hoverable.not(e).get())},_delay:function(t,e){function i(){return("string"==typeof t?s[t]:t).apply(s,arguments)}var s=this;return setTimeout(i,e||0)},_hoverable:function(e){this.hoverable=this.hoverable.add(e),this._on(e,{mouseenter:function(e){this._addClass(t(e.currentTarget),null,"ui-state-hover")},mouseleave:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-hover")}})},_focusable:function(e){this.focusable=this.focusable.add(e),this._on(e,{focusin:function(e){this._addClass(t(e.currentTarget),null,"ui-state-focus")},focusout:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-focus")}})},_trigger:function(e,i,s){var n,o,a=this.options[e];if(s=s||{},i=t.Event(i),i.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase(),i.target=this.element[0],o=i.originalEvent)for(n in o)n in i||(i[n]=o[n]);return this.element.trigger(i,s),!(t.isFunction(a)&&a.apply(this.element[0],[i].concat(s))===!1||i.isDefaultPrevented())}},t.each({show:"fadeIn",hide:"fadeOut"},function(e,i){t.Widget.prototype["_"+e]=function(s,n,o){"string"==typeof n&&(n={effect:n});var a,r=n?n===!0||"number"==typeof n?i:n.effect||i:e;n=n||{},"number"==typeof n&&(n={duration:n}),a=!t.isEmptyObject(n),n.complete=o,n.delay&&s.delay(n.delay),a&&t.effects&&t.effects.effect[r]?s[e](n):r!==e&&s[r]?s[r](n.duration,n.easing,o):s.queue(function(i){t(this)[e](),o&&o.call(s[0]),i()})}}),t.widget,function(){function e(t,e,i){return[parseFloat(t[0])*(u.test(t[0])?e/100:1),parseFloat(t[1])*(u.test(t[1])?i/100:1)]}function i(e,i){return parseInt(t.css(e,i),10)||0}function s(e){var i=e[0];return 9===i.nodeType?{width:e.width(),height:e.height(),offset:{top:0,left:0}}:t.isWindow(i)?{width:e.width(),height:e.height(),offset:{top:e.scrollTop(),left:e.scrollLeft()}}:i.preventDefault?{width:0,height:0,offset:{top:i.pageY,left:i.pageX}}:{width:e.outerWidth(),height:e.outerHeight(),offset:e.offset()}}var n,o=Math.max,a=Math.abs,r=/left|center|right/,h=/top|center|bottom/,l=/[\+\-]\d+(\.[\d]+)?%?/,c=/^\w+/,u=/%$/,d=t.fn.position;t.position={scrollbarWidth:function(){if(void 0!==n)return n;var e,i,s=t("<div style='display:block;position:absolute;width:50px;height:50px;overflow:hidden;'><div style='height:100px;width:auto;'></div></div>"),o=s.children()[0];return t("body").append(s),e=o.offsetWidth,s.css("overflow","scroll"),i=o.offsetWidth,e===i&&(i=s[0].clientWidth),s.remove(),n=e-i},getScrollInfo:function(e){var i=e.isWindow||e.isDocument?"":e.element.css("overflow-x"),s=e.isWindow||e.isDocument?"":e.element.css("overflow-y"),n="scroll"===i||"auto"===i&&e.width<e.element[0].scrollWidth,o="scroll"===s||"auto"===s&&e.height<e.element[0].scrollHeight;return{width:o?t.position.scrollbarWidth():0,height:n?t.position.scrollbarWidth():0}},getWithinInfo:function(e){var i=t(e||window),s=t.isWindow(i[0]),n=!!i[0]&&9===i[0].nodeType,o=!s&&!n;return{element:i,isWindow:s,isDocument:n,offset:o?t(e).offset():{left:0,top:0},scrollLeft:i.scrollLeft(),scrollTop:i.scrollTop(),width:i.outerWidth(),height:i.outerHeight()}}},t.fn.position=function(n){if(!n||!n.of)return d.apply(this,arguments);n=t.extend({},n);var u,p,f,g,m,_,v=t(n.of),b=t.position.getWithinInfo(n.within),y=t.position.getScrollInfo(b),w=(n.collision||"flip").split(" "),k={};return _=s(v),v[0].preventDefault&&(n.at="left top"),p=_.width,f=_.height,g=_.offset,m=t.extend({},g),t.each(["my","at"],function(){var t,e,i=(n[this]||"").split(" ");1===i.length&&(i=r.test(i[0])?i.concat(["center"]):h.test(i[0])?["center"].concat(i):["center","center"]),i[0]=r.test(i[0])?i[0]:"center",i[1]=h.test(i[1])?i[1]:"center",t=l.exec(i[0]),e=l.exec(i[1]),k[this]=[t?t[0]:0,e?e[0]:0],n[this]=[c.exec(i[0])[0],c.exec(i[1])[0]]}),1===w.length&&(w[1]=w[0]),"right"===n.at[0]?m.left+=p:"center"===n.at[0]&&(m.left+=p/2),"bottom"===n.at[1]?m.top+=f:"center"===n.at[1]&&(m.top+=f/2),u=e(k.at,p,f),m.left+=u[0],m.top+=u[1],this.each(function(){var s,r,h=t(this),l=h.outerWidth(),c=h.outerHeight(),d=i(this,"marginLeft"),_=i(this,"marginTop"),x=l+d+i(this,"marginRight")+y.width,C=c+_+i(this,"marginBottom")+y.height,D=t.extend({},m),I=e(k.my,h.outerWidth(),h.outerHeight());"right"===n.my[0]?D.left-=l:"center"===n.my[0]&&(D.left-=l/2),"bottom"===n.my[1]?D.top-=c:"center"===n.my[1]&&(D.top-=c/2),D.left+=I[0],D.top+=I[1],s={marginLeft:d,marginTop:_},t.each(["left","top"],function(e,i){t.ui.position[w[e]]&&t.ui.position[w[e]][i](D,{targetWidth:p,targetHeight:f,elemWidth:l,elemHeight:c,collisionPosition:s,collisionWidth:x,collisionHeight:C,offset:[u[0]+I[0],u[1]+I[1]],my:n.my,at:n.at,within:b,elem:h})}),n.using&&(r=function(t){var e=g.left-D.left,i=e+p-l,s=g.top-D.top,r=s+f-c,u={target:{element:v,left:g.left,top:g.top,width:p,height:f},element:{element:h,left:D.left,top:D.top,width:l,height:c},horizontal:0>i?"left":e>0?"right":"center",vertical:0>r?"top":s>0?"bottom":"middle"};l>p&&p>a(e+i)&&(u.horizontal="center"),c>f&&f>a(s+r)&&(u.vertical="middle"),u.important=o(a(e),a(i))>o(a(s),a(r))?"horizontal":"vertical",n.using.call(this,t,u)}),h.offset(t.extend(D,{using:r}))})},t.ui.position={fit:{left:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollLeft:s.offset.left,a=s.width,r=t.left-e.collisionPosition.marginLeft,h=n-r,l=r+e.collisionWidth-a-n;e.collisionWidth>a?h>0&&0>=l?(i=t.left+h+e.collisionWidth-a-n,t.left+=h-i):t.left=l>0&&0>=h?n:h>l?n+a-e.collisionWidth:n:h>0?t.left+=h:l>0?t.left-=l:t.left=o(t.left-r,t.left)},top:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollTop:s.offset.top,a=e.within.height,r=t.top-e.collisionPosition.marginTop,h=n-r,l=r+e.collisionHeight-a-n;e.collisionHeight>a?h>0&&0>=l?(i=t.top+h+e.collisionHeight-a-n,t.top+=h-i):t.top=l>0&&0>=h?n:h>l?n+a-e.collisionHeight:n:h>0?t.top+=h:l>0?t.top-=l:t.top=o(t.top-r,t.top)}},flip:{left:function(t,e){var i,s,n=e.within,o=n.offset.left+n.scrollLeft,r=n.width,h=n.isWindow?n.scrollLeft:n.offset.left,l=t.left-e.collisionPosition.marginLeft,c=l-h,u=l+e.collisionWidth-r-h,d="left"===e.my[0]?-e.elemWidth:"right"===e.my[0]?e.elemWidth:0,p="left"===e.at[0]?e.targetWidth:"right"===e.at[0]?-e.targetWidth:0,f=-2*e.offset[0];0>c?(i=t.left+d+p+f+e.collisionWidth-r-o,(0>i||a(c)>i)&&(t.left+=d+p+f)):u>0&&(s=t.left-e.collisionPosition.marginLeft+d+p+f-h,(s>0||u>a(s))&&(t.left+=d+p+f))},top:function(t,e){var i,s,n=e.within,o=n.offset.top+n.scrollTop,r=n.height,h=n.isWindow?n.scrollTop:n.offset.top,l=t.top-e.collisionPosition.marginTop,c=l-h,u=l+e.collisionHeight-r-h,d="top"===e.my[1],p=d?-e.elemHeight:"bottom"===e.my[1]?e.elemHeight:0,f="top"===e.at[1]?e.targetHeight:"bottom"===e.at[1]?-e.targetHeight:0,g=-2*e.offset[1];0>c?(s=t.top+p+f+g+e.collisionHeight-r-o,(0>s||a(c)>s)&&(t.top+=p+f+g)):u>0&&(i=t.top-e.collisionPosition.marginTop+p+f+g-h,(i>0||u>a(i))&&(t.top+=p+f+g))}},flipfit:{left:function(){t.ui.position.flip.left.apply(this,arguments),t.ui.position.fit.left.apply(this,arguments)},top:function(){t.ui.position.flip.top.apply(this,arguments),t.ui.position.fit.top.apply(this,arguments)}}}}(),t.ui.position,t.extend(t.expr[":"],{data:t.expr.createPseudo?t.expr.createPseudo(function(e){return function(i){return!!t.data(i,e)}}):function(e,i,s){return!!t.data(e,s[3])}}),t.fn.extend({disableSelection:function(){var t="onselectstart"in document.createElement("div")?"selectstart":"mousedown";return function(){return this.on(t+".ui-disableSelection",function(t){t.preventDefault()})}}(),enableSelection:function(){return this.off(".ui-disableSelection")}});var c="ui-effects-",u="ui-effects-style",d="ui-effects-animated",p=t;t.effects={effect:{}},function(t,e){function i(t,e,i){var s=u[e.type]||{};return null==t?i||!e.def?null:e.def:(t=s.floor?~~t:parseFloat(t),isNaN(t)?e.def:s.mod?(t+s.mod)%s.mod:0>t?0:t>s.max?s.max:t)}function s(i){var s=l(),n=s._rgba=[];return i=i.toLowerCase(),f(h,function(t,o){var a,r=o.re.exec(i),h=r&&o.parse(r),l=o.space||"rgba";return h?(a=s[l](h),s[c[l].cache]=a[c[l].cache],n=s._rgba=a._rgba,!1):e}),n.length?("0,0,0,0"===n.join()&&t.extend(n,o.transparent),s):o[i]}function n(t,e,i){return i=(i+1)%1,1>6*i?t+6*(e-t)*i:1>2*i?e:2>3*i?t+6*(e-t)*(2/3-i):t}var o,a="backgroundColor borderBottomColor borderLeftColor borderRightColor borderTopColor color columnRuleColor outlineColor textDecorationColor textEmphasisColor",r=/^([\-+])=\s*(\d+\.?\d*)/,h=[{re:/rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,parse:function(t){return[t[1],t[2],t[3],t[4]]}},{re:/rgba?\(\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,parse:function(t){return[2.55*t[1],2.55*t[2],2.55*t[3],t[4]]}},{re:/#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})/,parse:function(t){return[parseInt(t[1],16),parseInt(t[2],16),parseInt(t[3],16)]}},{re:/#([a-f0-9])([a-f0-9])([a-f0-9])/,parse:function(t){return[parseInt(t[1]+t[1],16),parseInt(t[2]+t[2],16),parseInt(t[3]+t[3],16)]}},{re:/hsla?\(\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,space:"hsla",parse:function(t){return[t[1],t[2]/100,t[3]/100,t[4]]}}],l=t.Color=function(e,i,s,n){return new t.Color.fn.parse(e,i,s,n)},c={rgba:{props:{red:{idx:0,type:"byte"},green:{idx:1,type:"byte"},blue:{idx:2,type:"byte"}}},hsla:{props:{hue:{idx:0,type:"degrees"},saturation:{idx:1,type:"percent"},lightness:{idx:2,type:"percent"}}}},u={"byte":{floor:!0,max:255},percent:{max:1},degrees:{mod:360,floor:!0}},d=l.support={},p=t("<p>")[0],f=t.each;p.style.cssText="background-color:rgba(1,1,1,.5)",d.rgba=p.style.backgroundColor.indexOf("rgba")>-1,f(c,function(t,e){e.cache="_"+t,e.props.alpha={idx:3,type:"percent",def:1}}),l.fn=t.extend(l.prototype,{parse:function(n,a,r,h){if(n===e)return this._rgba=[null,null,null,null],this;(n.jquery||n.nodeType)&&(n=t(n).css(a),a=e);var u=this,d=t.type(n),p=this._rgba=[];return a!==e&&(n=[n,a,r,h],d="array"),"string"===d?this.parse(s(n)||o._default):"array"===d?(f(c.rgba.props,function(t,e){p[e.idx]=i(n[e.idx],e)}),this):"object"===d?(n instanceof l?f(c,function(t,e){n[e.cache]&&(u[e.cache]=n[e.cache].slice())}):f(c,function(e,s){var o=s.cache;f(s.props,function(t,e){if(!u[o]&&s.to){if("alpha"===t||null==n[t])return;u[o]=s.to(u._rgba)}u[o][e.idx]=i(n[t],e,!0)}),u[o]&&0>t.inArray(null,u[o].slice(0,3))&&(u[o][3]=1,s.from&&(u._rgba=s.from(u[o])))}),this):e},is:function(t){var i=l(t),s=!0,n=this;return f(c,function(t,o){var a,r=i[o.cache];return r&&(a=n[o.cache]||o.to&&o.to(n._rgba)||[],f(o.props,function(t,i){return null!=r[i.idx]?s=r[i.idx]===a[i.idx]:e})),s}),s},_space:function(){var t=[],e=this;return f(c,function(i,s){e[s.cache]&&t.push(i)}),t.pop()},transition:function(t,e){var s=l(t),n=s._space(),o=c[n],a=0===this.alpha()?l("transparent"):this,r=a[o.cache]||o.to(a._rgba),h=r.slice();return s=s[o.cache],f(o.props,function(t,n){var o=n.idx,a=r[o],l=s[o],c=u[n.type]||{};null!==l&&(null===a?h[o]=l:(c.mod&&(l-a>c.mod/2?a+=c.mod:a-l>c.mod/2&&(a-=c.mod)),h[o]=i((l-a)*e+a,n)))}),this[n](h)},blend:function(e){if(1===this._rgba[3])return this;var i=this._rgba.slice(),s=i.pop(),n=l(e)._rgba;return l(t.map(i,function(t,e){return(1-s)*n[e]+s*t}))},toRgbaString:function(){var e="rgba(",i=t.map(this._rgba,function(t,e){return null==t?e>2?1:0:t});return 1===i[3]&&(i.pop(),e="rgb("),e+i.join()+")"},toHslaString:function(){var e="hsla(",i=t.map(this.hsla(),function(t,e){return null==t&&(t=e>2?1:0),e&&3>e&&(t=Math.round(100*t)+"%"),t});return 1===i[3]&&(i.pop(),e="hsl("),e+i.join()+")"},toHexString:function(e){var i=this._rgba.slice(),s=i.pop();return e&&i.push(~~(255*s)),"#"+t.map(i,function(t){return t=(t||0).toString(16),1===t.length?"0"+t:t}).join("")},toString:function(){return 0===this._rgba[3]?"transparent":this.toRgbaString()}}),l.fn.parse.prototype=l.fn,c.hsla.to=function(t){if(null==t[0]||null==t[1]||null==t[2])return[null,null,null,t[3]];var e,i,s=t[0]/255,n=t[1]/255,o=t[2]/255,a=t[3],r=Math.max(s,n,o),h=Math.min(s,n,o),l=r-h,c=r+h,u=.5*c;return e=h===r?0:s===r?60*(n-o)/l+360:n===r?60*(o-s)/l+120:60*(s-n)/l+240,i=0===l?0:.5>=u?l/c:l/(2-c),[Math.round(e)%360,i,u,null==a?1:a]},c.hsla.from=function(t){if(null==t[0]||null==t[1]||null==t[2])return[null,null,null,t[3]];var e=t[0]/360,i=t[1],s=t[2],o=t[3],a=.5>=s?s*(1+i):s+i-s*i,r=2*s-a;return[Math.round(255*n(r,a,e+1/3)),Math.round(255*n(r,a,e)),Math.round(255*n(r,a,e-1/3)),o]},f(c,function(s,n){var o=n.props,a=n.cache,h=n.to,c=n.from;l.fn[s]=function(s){if(h&&!this[a]&&(this[a]=h(this._rgba)),s===e)return this[a].slice();var n,r=t.type(s),u="array"===r||"object"===r?s:arguments,d=this[a].slice();return f(o,function(t,e){var s=u["object"===r?t:e.idx];null==s&&(s=d[e.idx]),d[e.idx]=i(s,e)}),c?(n=l(c(d)),n[a]=d,n):l(d)},f(o,function(e,i){l.fn[e]||(l.fn[e]=function(n){var o,a=t.type(n),h="alpha"===e?this._hsla?"hsla":"rgba":s,l=this[h](),c=l[i.idx];return"undefined"===a?c:("function"===a&&(n=n.call(this,c),a=t.type(n)),null==n&&i.empty?this:("string"===a&&(o=r.exec(n),o&&(n=c+parseFloat(o[2])*("+"===o[1]?1:-1))),l[i.idx]=n,this[h](l)))})})}),l.hook=function(e){var i=e.split(" ");f(i,function(e,i){t.cssHooks[i]={set:function(e,n){var o,a,r="";if("transparent"!==n&&("string"!==t.type(n)||(o=s(n)))){if(n=l(o||n),!d.rgba&&1!==n._rgba[3]){for(a="backgroundColor"===i?e.parentNode:e;(""===r||"transparent"===r)&&a&&a.style;)try{r=t.css(a,"backgroundColor"),a=a.parentNode}catch(h){}n=n.blend(r&&"transparent"!==r?r:"_default")}n=n.toRgbaString()}try{e.style[i]=n}catch(h){}}},t.fx.step[i]=function(e){e.colorInit||(e.start=l(e.elem,i),e.end=l(e.end),e.colorInit=!0),t.cssHooks[i].set(e.elem,e.start.transition(e.end,e.pos))}})},l.hook(a),t.cssHooks.borderColor={expand:function(t){var e={};return f(["Top","Right","Bottom","Left"],function(i,s){e["border"+s+"Color"]=t}),e}},o=t.Color.names={aqua:"#00ffff",black:"#000000",blue:"#0000ff",fuchsia:"#ff00ff",gray:"#808080",green:"#008000",lime:"#00ff00",maroon:"#800000",navy:"#000080",olive:"#808000",purple:"#800080",red:"#ff0000",silver:"#c0c0c0",teal:"#008080",white:"#ffffff",yellow:"#ffff00",transparent:[null,null,null,0],_default:"#ffffff"}}(p),function(){function e(e){var i,s,n=e.ownerDocument.defaultView?e.ownerDocument.defaultView.getComputedStyle(e,null):e.currentStyle,o={};if(n&&n.length&&n[0]&&n[n[0]])for(s=n.length;s--;)i=n[s],"string"==typeof n[i]&&(o[t.camelCase(i)]=n[i]);else for(i in n)"string"==typeof n[i]&&(o[i]=n[i]);return o}function i(e,i){var s,o,a={};for(s in i)o=i[s],e[s]!==o&&(n[s]||(t.fx.step[s]||!isNaN(parseFloat(o)))&&(a[s]=o));return a}var s=["add","remove","toggle"],n={border:1,borderBottom:1,borderColor:1,borderLeft:1,borderRight:1,borderTop:1,borderWidth:1,margin:1,padding:1};t.each(["borderLeftStyle","borderRightStyle","borderBottomStyle","borderTopStyle"],function(e,i){t.fx.step[i]=function(t){("none"!==t.end&&!t.setAttr||1===t.pos&&!t.setAttr)&&(p.style(t.elem,i,t.end),t.setAttr=!0)}}),t.fn.addBack||(t.fn.addBack=function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))}),t.effects.animateClass=function(n,o,a,r){var h=t.speed(o,a,r);return this.queue(function(){var o,a=t(this),r=a.attr("class")||"",l=h.children?a.find("*").addBack():a;l=l.map(function(){var i=t(this);return{el:i,start:e(this)}}),o=function(){t.each(s,function(t,e){n[e]&&a[e+"Class"](n[e])})},o(),l=l.map(function(){return this.end=e(this.el[0]),this.diff=i(this.start,this.end),this}),a.attr("class",r),l=l.map(function(){var e=this,i=t.Deferred(),s=t.extend({},h,{queue:!1,complete:function(){i.resolve(e)}});return this.el.animate(this.diff,s),i.promise()}),t.when.apply(t,l.get()).done(function(){o(),t.each(arguments,function(){var e=this.el;t.each(this.diff,function(t){e.css(t,"")})}),h.complete.call(a[0])})})},t.fn.extend({addClass:function(e){return function(i,s,n,o){return s?t.effects.animateClass.call(this,{add:i},s,n,o):e.apply(this,arguments)}}(t.fn.addClass),removeClass:function(e){return function(i,s,n,o){return arguments.length>1?t.effects.animateClass.call(this,{remove:i},s,n,o):e.apply(this,arguments)}}(t.fn.removeClass),toggleClass:function(e){return function(i,s,n,o,a){return"boolean"==typeof s||void 0===s?n?t.effects.animateClass.call(this,s?{add:i}:{remove:i},n,o,a):e.apply(this,arguments):t.effects.animateClass.call(this,{toggle:i},s,n,o)}}(t.fn.toggleClass),switchClass:function(e,i,s,n,o){return t.effects.animateClass.call(this,{add:i,remove:e},s,n,o)}})}(),function(){function e(e,i,s,n){return t.isPlainObject(e)&&(i=e,e=e.effect),e={effect:e},null==i&&(i={}),t.isFunction(i)&&(n=i,s=null,i={}),("number"==typeof i||t.fx.speeds[i])&&(n=s,s=i,i={}),t.isFunction(s)&&(n=s,s=null),i&&t.extend(e,i),s=s||i.duration,e.duration=t.fx.off?0:"number"==typeof s?s:s in t.fx.speeds?t.fx.speeds[s]:t.fx.speeds._default,e.complete=n||i.complete,e}function i(e){return!e||"number"==typeof e||t.fx.speeds[e]?!0:"string"!=typeof e||t.effects.effect[e]?t.isFunction(e)?!0:"object"!=typeof e||e.effect?!1:!0:!0}function s(t,e){var i=e.outerWidth(),s=e.outerHeight(),n=/^rect\((-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto)\)$/,o=n.exec(t)||["",0,i,s,0];return{top:parseFloat(o[1])||0,right:"auto"===o[2]?i:parseFloat(o[2]),bottom:"auto"===o[3]?s:parseFloat(o[3]),left:parseFloat(o[4])||0}}t.expr&&t.expr.filters&&t.expr.filters.animated&&(t.expr.filters.animated=function(e){return function(i){return!!t(i).data(d)||e(i)}}(t.expr.filters.animated)),t.uiBackCompat!==!1&&t.extend(t.effects,{save:function(t,e){for(var i=0,s=e.length;s>i;i++)null!==e[i]&&t.data(c+e[i],t[0].style[e[i]])},restore:function(t,e){for(var i,s=0,n=e.length;n>s;s++)null!==e[s]&&(i=t.data(c+e[s]),t.css(e[s],i))},setMode:function(t,e){return"toggle"===e&&(e=t.is(":hidden")?"show":"hide"),e},createWrapper:function(e){if(e.parent().is(".ui-effects-wrapper"))return e.parent();var i={width:e.outerWidth(!0),height:e.outerHeight(!0),"float":e.css("float")},s=t("<div></div>").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",border:"none",margin:0,padding:0}),n={width:e.width(),height:e.height()},o=document.activeElement;try{o.id}catch(a){o=document.body}return e.wrap(s),(e[0]===o||t.contains(e[0],o))&&t(o).trigger("focus"),s=e.parent(),"static"===e.css("position")?(s.css({position:"relative"}),e.css({position:"relative"})):(t.extend(i,{position:e.css("position"),zIndex:e.css("z-index")}),t.each(["top","left","bottom","right"],function(t,s){i[s]=e.css(s),isNaN(parseInt(i[s],10))&&(i[s]="auto")}),e.css({position:"relative",top:0,left:0,right:"auto",bottom:"auto"})),e.css(n),s.css(i).show()},removeWrapper:function(e){var i=document.activeElement;return e.parent().is(".ui-effects-wrapper")&&(e.parent().replaceWith(e),(e[0]===i||t.contains(e[0],i))&&t(i).trigger("focus")),e}}),t.extend(t.effects,{version:"1.12.1",define:function(e,i,s){return s||(s=i,i="effect"),t.effects.effect[e]=s,t.effects.effect[e].mode=i,s},scaledDimensions:function(t,e,i){if(0===e)return{height:0,width:0,outerHeight:0,outerWidth:0};var s="horizontal"!==i?(e||100)/100:1,n="vertical"!==i?(e||100)/100:1;return{height:t.height()*n,width:t.width()*s,outerHeight:t.outerHeight()*n,outerWidth:t.outerWidth()*s}},clipToBox:function(t){return{width:t.clip.right-t.clip.left,height:t.clip.bottom-t.clip.top,left:t.clip.left,top:t.clip.top}},unshift:function(t,e,i){var s=t.queue();e>1&&s.splice.apply(s,[1,0].concat(s.splice(e,i))),t.dequeue()},saveStyle:function(t){t.data(u,t[0].style.cssText)},restoreStyle:function(t){t[0].style.cssText=t.data(u)||"",t.removeData(u)},mode:function(t,e){var i=t.is(":hidden");return"toggle"===e&&(e=i?"show":"hide"),(i?"hide"===e:"show"===e)&&(e="none"),e},getBaseline:function(t,e){var i,s;switch(t[0]){case"top":i=0;break;case"middle":i=.5;break;case"bottom":i=1;break;default:i=t[0]/e.height}switch(t[1]){case"left":s=0;break;case"center":s=.5;break;case"right":s=1;break;default:s=t[1]/e.width}return{x:s,y:i}},createPlaceholder:function(e){var i,s=e.css("position"),n=e.position();return e.css({marginTop:e.css("marginTop"),marginBottom:e.css("marginBottom"),marginLeft:e.css("marginLeft"),marginRight:e.css("marginRight")}).outerWidth(e.outerWidth()).outerHeight(e.outerHeight()),/^(static|relative)/.test(s)&&(s="absolute",i=t("<"+e[0].nodeName+">").insertAfter(e).css({display:/^(inline|ruby)/.test(e.css("display"))?"inline-block":"block",visibility:"hidden",marginTop:e.css("marginTop"),marginBottom:e.css("marginBottom"),marginLeft:e.css("marginLeft"),marginRight:e.css("marginRight"),"float":e.css("float")}).outerWidth(e.outerWidth()).outerHeight(e.outerHeight()).addClass("ui-effects-placeholder"),e.data(c+"placeholder",i)),e.css({position:s,left:n.left,top:n.top}),i},removePlaceholder:function(t){var e=c+"placeholder",i=t.data(e);i&&(i.remove(),t.removeData(e))},cleanUp:function(e){t.effects.restoreStyle(e),t.effects.removePlaceholder(e)},setTransition:function(e,i,s,n){return n=n||{},t.each(i,function(t,i){var o=e.cssUnit(i);o[0]>0&&(n[i]=o[0]*s+o[1])}),n}}),t.fn.extend({effect:function(){function i(e){function i(){r.removeData(d),t.effects.cleanUp(r),"hide"===s.mode&&r.hide(),a()}function a(){t.isFunction(h)&&h.call(r[0]),t.isFunction(e)&&e()}var r=t(this);s.mode=c.shift(),t.uiBackCompat===!1||o?"none"===s.mode?(r[l](),a()):n.call(r[0],s,i):(r.is(":hidden")?"hide"===l:"show"===l)?(r[l](),a()):n.call(r[0],s,a)}var s=e.apply(this,arguments),n=t.effects.effect[s.effect],o=n.mode,a=s.queue,r=a||"fx",h=s.complete,l=s.mode,c=[],u=function(e){var i=t(this),s=t.effects.mode(i,l)||o;i.data(d,!0),c.push(s),o&&("show"===s||s===o&&"hide"===s)&&i.show(),o&&"none"===s||t.effects.saveStyle(i),t.isFunction(e)&&e()};return t.fx.off||!n?l?this[l](s.duration,h):this.each(function(){h&&h.call(this)}):a===!1?this.each(u).each(i):this.queue(r,u).queue(r,i)},show:function(t){return function(s){if(i(s))return t.apply(this,arguments);var n=e.apply(this,arguments);return n.mode="show",this.effect.call(this,n)
11}}(t.fn.show),hide:function(t){return function(s){if(i(s))return t.apply(this,arguments);var n=e.apply(this,arguments);return n.mode="hide",this.effect.call(this,n)}}(t.fn.hide),toggle:function(t){return function(s){if(i(s)||"boolean"==typeof s)return t.apply(this,arguments);var n=e.apply(this,arguments);return n.mode="toggle",this.effect.call(this,n)}}(t.fn.toggle),cssUnit:function(e){var i=this.css(e),s=[];return t.each(["em","px","%","pt"],function(t,e){i.indexOf(e)>0&&(s=[parseFloat(i),e])}),s},cssClip:function(t){return t?this.css("clip","rect("+t.top+"px "+t.right+"px "+t.bottom+"px "+t.left+"px)"):s(this.css("clip"),this)},transfer:function(e,i){var s=t(this),n=t(e.to),o="fixed"===n.css("position"),a=t("body"),r=o?a.scrollTop():0,h=o?a.scrollLeft():0,l=n.offset(),c={top:l.top-r,left:l.left-h,height:n.innerHeight(),width:n.innerWidth()},u=s.offset(),d=t("<div class='ui-effects-transfer'></div>").appendTo("body").addClass(e.className).css({top:u.top-r,left:u.left-h,height:s.innerHeight(),width:s.innerWidth(),position:o?"fixed":"absolute"}).animate(c,e.duration,e.easing,function(){d.remove(),t.isFunction(i)&&i()})}}),t.fx.step.clip=function(e){e.clipInit||(e.start=t(e.elem).cssClip(),"string"==typeof e.end&&(e.end=s(e.end,e.elem)),e.clipInit=!0),t(e.elem).cssClip({top:e.pos*(e.end.top-e.start.top)+e.start.top,right:e.pos*(e.end.right-e.start.right)+e.start.right,bottom:e.pos*(e.end.bottom-e.start.bottom)+e.start.bottom,left:e.pos*(e.end.left-e.start.left)+e.start.left})}}(),function(){var e={};t.each(["Quad","Cubic","Quart","Quint","Expo"],function(t,i){e[i]=function(e){return Math.pow(e,t+2)}}),t.extend(e,{Sine:function(t){return 1-Math.cos(t*Math.PI/2)},Circ:function(t){return 1-Math.sqrt(1-t*t)},Elastic:function(t){return 0===t||1===t?t:-Math.pow(2,8*(t-1))*Math.sin((80*(t-1)-7.5)*Math.PI/15)},Back:function(t){return t*t*(3*t-2)},Bounce:function(t){for(var e,i=4;((e=Math.pow(2,--i))-1)/11>t;);return 1/Math.pow(4,3-i)-7.5625*Math.pow((3*e-2)/22-t,2)}}),t.each(e,function(e,i){t.easing["easeIn"+e]=i,t.easing["easeOut"+e]=function(t){return 1-i(1-t)},t.easing["easeInOut"+e]=function(t){return.5>t?i(2*t)/2:1-i(-2*t+2)/2}})}();var f=t.effects;t.effects.define("blind","hide",function(e,i){var s={up:["bottom","top"],vertical:["bottom","top"],down:["top","bottom"],left:["right","left"],horizontal:["right","left"],right:["left","right"]},n=t(this),o=e.direction||"up",a=n.cssClip(),r={clip:t.extend({},a)},h=t.effects.createPlaceholder(n);r.clip[s[o][0]]=r.clip[s[o][1]],"show"===e.mode&&(n.cssClip(r.clip),h&&h.css(t.effects.clipToBox(r)),r.clip=a),h&&h.animate(t.effects.clipToBox(r),e.duration,e.easing),n.animate(r,{queue:!1,duration:e.duration,easing:e.easing,complete:i})}),t.effects.define("bounce",function(e,i){var s,n,o,a=t(this),r=e.mode,h="hide"===r,l="show"===r,c=e.direction||"up",u=e.distance,d=e.times||5,p=2*d+(l||h?1:0),f=e.duration/p,g=e.easing,m="up"===c||"down"===c?"top":"left",_="up"===c||"left"===c,v=0,b=a.queue().length;for(t.effects.createPlaceholder(a),o=a.css(m),u||(u=a["top"===m?"outerHeight":"outerWidth"]()/3),l&&(n={opacity:1},n[m]=o,a.css("opacity",0).css(m,_?2*-u:2*u).animate(n,f,g)),h&&(u/=Math.pow(2,d-1)),n={},n[m]=o;d>v;v++)s={},s[m]=(_?"-=":"+=")+u,a.animate(s,f,g).animate(n,f,g),u=h?2*u:u/2;h&&(s={opacity:0},s[m]=(_?"-=":"+=")+u,a.animate(s,f,g)),a.queue(i),t.effects.unshift(a,b,p+1)}),t.effects.define("clip","hide",function(e,i){var s,n={},o=t(this),a=e.direction||"vertical",r="both"===a,h=r||"horizontal"===a,l=r||"vertical"===a;s=o.cssClip(),n.clip={top:l?(s.bottom-s.top)/2:s.top,right:h?(s.right-s.left)/2:s.right,bottom:l?(s.bottom-s.top)/2:s.bottom,left:h?(s.right-s.left)/2:s.left},t.effects.createPlaceholder(o),"show"===e.mode&&(o.cssClip(n.clip),n.clip=s),o.animate(n,{queue:!1,duration:e.duration,easing:e.easing,complete:i})}),t.effects.define("drop","hide",function(e,i){var s,n=t(this),o=e.mode,a="show"===o,r=e.direction||"left",h="up"===r||"down"===r?"top":"left",l="up"===r||"left"===r?"-=":"+=",c="+="===l?"-=":"+=",u={opacity:0};t.effects.createPlaceholder(n),s=e.distance||n["top"===h?"outerHeight":"outerWidth"](!0)/2,u[h]=l+s,a&&(n.css(u),u[h]=c+s,u.opacity=1),n.animate(u,{queue:!1,duration:e.duration,easing:e.easing,complete:i})}),t.effects.define("explode","hide",function(e,i){function s(){b.push(this),b.length===u*d&&n()}function n(){p.css({visibility:"visible"}),t(b).remove(),i()}var o,a,r,h,l,c,u=e.pieces?Math.round(Math.sqrt(e.pieces)):3,d=u,p=t(this),f=e.mode,g="show"===f,m=p.show().css("visibility","hidden").offset(),_=Math.ceil(p.outerWidth()/d),v=Math.ceil(p.outerHeight()/u),b=[];for(o=0;u>o;o++)for(h=m.top+o*v,c=o-(u-1)/2,a=0;d>a;a++)r=m.left+a*_,l=a-(d-1)/2,p.clone().appendTo("body").wrap("<div></div>").css({position:"absolute",visibility:"visible",left:-a*_,top:-o*v}).parent().addClass("ui-effects-explode").css({position:"absolute",overflow:"hidden",width:_,height:v,left:r+(g?l*_:0),top:h+(g?c*v:0),opacity:g?0:1}).animate({left:r+(g?0:l*_),top:h+(g?0:c*v),opacity:g?1:0},e.duration||500,e.easing,s)}),t.effects.define("fade","toggle",function(e,i){var s="show"===e.mode;t(this).css("opacity",s?0:1).animate({opacity:s?1:0},{queue:!1,duration:e.duration,easing:e.easing,complete:i})}),t.effects.define("fold","hide",function(e,i){var s=t(this),n=e.mode,o="show"===n,a="hide"===n,r=e.size||15,h=/([0-9]+)%/.exec(r),l=!!e.horizFirst,c=l?["right","bottom"]:["bottom","right"],u=e.duration/2,d=t.effects.createPlaceholder(s),p=s.cssClip(),f={clip:t.extend({},p)},g={clip:t.extend({},p)},m=[p[c[0]],p[c[1]]],_=s.queue().length;h&&(r=parseInt(h[1],10)/100*m[a?0:1]),f.clip[c[0]]=r,g.clip[c[0]]=r,g.clip[c[1]]=0,o&&(s.cssClip(g.clip),d&&d.css(t.effects.clipToBox(g)),g.clip=p),s.queue(function(i){d&&d.animate(t.effects.clipToBox(f),u,e.easing).animate(t.effects.clipToBox(g),u,e.easing),i()}).animate(f,u,e.easing).animate(g,u,e.easing).queue(i),t.effects.unshift(s,_,4)}),t.effects.define("highlight","show",function(e,i){var s=t(this),n={backgroundColor:s.css("backgroundColor")};"hide"===e.mode&&(n.opacity=0),t.effects.saveStyle(s),s.css({backgroundImage:"none",backgroundColor:e.color||"#ffff99"}).animate(n,{queue:!1,duration:e.duration,easing:e.easing,complete:i})}),t.effects.define("size",function(e,i){var s,n,o,a=t(this),r=["fontSize"],h=["borderTopWidth","borderBottomWidth","paddingTop","paddingBottom"],l=["borderLeftWidth","borderRightWidth","paddingLeft","paddingRight"],c=e.mode,u="effect"!==c,d=e.scale||"both",p=e.origin||["middle","center"],f=a.css("position"),g=a.position(),m=t.effects.scaledDimensions(a),_=e.from||m,v=e.to||t.effects.scaledDimensions(a,0);t.effects.createPlaceholder(a),"show"===c&&(o=_,_=v,v=o),n={from:{y:_.height/m.height,x:_.width/m.width},to:{y:v.height/m.height,x:v.width/m.width}},("box"===d||"both"===d)&&(n.from.y!==n.to.y&&(_=t.effects.setTransition(a,h,n.from.y,_),v=t.effects.setTransition(a,h,n.to.y,v)),n.from.x!==n.to.x&&(_=t.effects.setTransition(a,l,n.from.x,_),v=t.effects.setTransition(a,l,n.to.x,v))),("content"===d||"both"===d)&&n.from.y!==n.to.y&&(_=t.effects.setTransition(a,r,n.from.y,_),v=t.effects.setTransition(a,r,n.to.y,v)),p&&(s=t.effects.getBaseline(p,m),_.top=(m.outerHeight-_.outerHeight)*s.y+g.top,_.left=(m.outerWidth-_.outerWidth)*s.x+g.left,v.top=(m.outerHeight-v.outerHeight)*s.y+g.top,v.left=(m.outerWidth-v.outerWidth)*s.x+g.left),a.css(_),("content"===d||"both"===d)&&(h=h.concat(["marginTop","marginBottom"]).concat(r),l=l.concat(["marginLeft","marginRight"]),a.find("*[width]").each(function(){var i=t(this),s=t.effects.scaledDimensions(i),o={height:s.height*n.from.y,width:s.width*n.from.x,outerHeight:s.outerHeight*n.from.y,outerWidth:s.outerWidth*n.from.x},a={height:s.height*n.to.y,width:s.width*n.to.x,outerHeight:s.height*n.to.y,outerWidth:s.width*n.to.x};n.from.y!==n.to.y&&(o=t.effects.setTransition(i,h,n.from.y,o),a=t.effects.setTransition(i,h,n.to.y,a)),n.from.x!==n.to.x&&(o=t.effects.setTransition(i,l,n.from.x,o),a=t.effects.setTransition(i,l,n.to.x,a)),u&&t.effects.saveStyle(i),i.css(o),i.animate(a,e.duration,e.easing,function(){u&&t.effects.restoreStyle(i)})})),a.animate(v,{queue:!1,duration:e.duration,easing:e.easing,complete:function(){var e=a.offset();0===v.opacity&&a.css("opacity",_.opacity),u||(a.css("position","static"===f?"relative":f).offset(e),t.effects.saveStyle(a)),i()}})}),t.effects.define("scale",function(e,i){var s=t(this),n=e.mode,o=parseInt(e.percent,10)||(0===parseInt(e.percent,10)?0:"effect"!==n?0:100),a=t.extend(!0,{from:t.effects.scaledDimensions(s),to:t.effects.scaledDimensions(s,o,e.direction||"both"),origin:e.origin||["middle","center"]},e);e.fade&&(a.from.opacity=1,a.to.opacity=0),t.effects.effect.size.call(this,a,i)}),t.effects.define("puff","hide",function(e,i){var s=t.extend(!0,{},e,{fade:!0,percent:parseInt(e.percent,10)||150});t.effects.effect.scale.call(this,s,i)}),t.effects.define("pulsate","show",function(e,i){var s=t(this),n=e.mode,o="show"===n,a="hide"===n,r=o||a,h=2*(e.times||5)+(r?1:0),l=e.duration/h,c=0,u=1,d=s.queue().length;for((o||!s.is(":visible"))&&(s.css("opacity",0).show(),c=1);h>u;u++)s.animate({opacity:c},l,e.easing),c=1-c;s.animate({opacity:c},l,e.easing),s.queue(i),t.effects.unshift(s,d,h+1)}),t.effects.define("shake",function(e,i){var s=1,n=t(this),o=e.direction||"left",a=e.distance||20,r=e.times||3,h=2*r+1,l=Math.round(e.duration/h),c="up"===o||"down"===o?"top":"left",u="up"===o||"left"===o,d={},p={},f={},g=n.queue().length;for(t.effects.createPlaceholder(n),d[c]=(u?"-=":"+=")+a,p[c]=(u?"+=":"-=")+2*a,f[c]=(u?"-=":"+=")+2*a,n.animate(d,l,e.easing);r>s;s++)n.animate(p,l,e.easing).animate(f,l,e.easing);n.animate(p,l,e.easing).animate(d,l/2,e.easing).queue(i),t.effects.unshift(n,g,h+1)}),t.effects.define("slide","show",function(e,i){var s,n,o=t(this),a={up:["bottom","top"],down:["top","bottom"],left:["right","left"],right:["left","right"]},r=e.mode,h=e.direction||"left",l="up"===h||"down"===h?"top":"left",c="up"===h||"left"===h,u=e.distance||o["top"===l?"outerHeight":"outerWidth"](!0),d={};t.effects.createPlaceholder(o),s=o.cssClip(),n=o.position()[l],d[l]=(c?-1:1)*u+n,d.clip=o.cssClip(),d.clip[a[h][1]]=d.clip[a[h][0]],"show"===r&&(o.cssClip(d.clip),o.css(l,d[l]),d.clip=s,d[l]=n),o.animate(d,{queue:!1,duration:e.duration,easing:e.easing,complete:i})});var f;t.uiBackCompat!==!1&&(f=t.effects.define("transfer",function(e,i){t(this).transfer(e,i)})),t.ui.focusable=function(i,s){var n,o,a,r,h,l=i.nodeName.toLowerCase();return"area"===l?(n=i.parentNode,o=n.name,i.href&&o&&"map"===n.nodeName.toLowerCase()?(a=t("img[usemap='#"+o+"']"),a.length>0&&a.is(":visible")):!1):(/^(input|select|textarea|button|object)$/.test(l)?(r=!i.disabled,r&&(h=t(i).closest("fieldset")[0],h&&(r=!h.disabled))):r="a"===l?i.href||s:s,r&&t(i).is(":visible")&&e(t(i)))},t.extend(t.expr[":"],{focusable:function(e){return t.ui.focusable(e,null!=t.attr(e,"tabindex"))}}),t.ui.focusable,t.fn.form=function(){return"string"==typeof this[0].form?this.closest("form"):t(this[0].form)},t.ui.formResetMixin={_formResetHandler:function(){var e=t(this);setTimeout(function(){var i=e.data("ui-form-reset-instances");t.each(i,function(){this.refresh()})})},_bindFormResetHandler:function(){if(this.form=this.element.form(),this.form.length){var t=this.form.data("ui-form-reset-instances")||[];t.length||this.form.on("reset.ui-form-reset",this._formResetHandler),t.push(this),this.form.data("ui-form-reset-instances",t)}},_unbindFormResetHandler:function(){if(this.form.length){var e=this.form.data("ui-form-reset-instances");e.splice(t.inArray(this,e),1),e.length?this.form.data("ui-form-reset-instances",e):this.form.removeData("ui-form-reset-instances").off("reset.ui-form-reset")}}},"1.7"===t.fn.jquery.substring(0,3)&&(t.each(["Width","Height"],function(e,i){function s(e,i,s,o){return t.each(n,function(){i-=parseFloat(t.css(e,"padding"+this))||0,s&&(i-=parseFloat(t.css(e,"border"+this+"Width"))||0),o&&(i-=parseFloat(t.css(e,"margin"+this))||0)}),i}var n="Width"===i?["Left","Right"]:["Top","Bottom"],o=i.toLowerCase(),a={innerWidth:t.fn.innerWidth,innerHeight:t.fn.innerHeight,outerWidth:t.fn.outerWidth,outerHeight:t.fn.outerHeight};t.fn["inner"+i]=function(e){return void 0===e?a["inner"+i].call(this):this.each(function(){t(this).css(o,s(this,e)+"px")})},t.fn["outer"+i]=function(e,n){return"number"!=typeof e?a["outer"+i].call(this,e):this.each(function(){t(this).css(o,s(this,e,!0,n)+"px")})}}),t.fn.addBack=function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))}),t.ui.keyCode={BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38},t.ui.escapeSelector=function(){var t=/([!"#$%&'()*+,.\/:;<=>?@[\]^`{|}~])/g;return function(e){return e.replace(t,"\\$1")}}(),t.fn.labels=function(){var e,i,s,n,o;return this[0].labels&&this[0].labels.length?this.pushStack(this[0].labels):(n=this.eq(0).parents("label"),s=this.attr("id"),s&&(e=this.eq(0).parents().last(),o=e.add(e.length?e.siblings():this.siblings()),i="label[for='"+t.ui.escapeSelector(s)+"']",n=n.add(o.find(i).addBack(i))),this.pushStack(n))},t.fn.scrollParent=function(e){var i=this.css("position"),s="absolute"===i,n=e?/(auto|scroll|hidden)/:/(auto|scroll)/,o=this.parents().filter(function(){var e=t(this);return s&&"static"===e.css("position")?!1:n.test(e.css("overflow")+e.css("overflow-y")+e.css("overflow-x"))}).eq(0);return"fixed"!==i&&o.length?o:t(this[0].ownerDocument||document)},t.extend(t.expr[":"],{tabbable:function(e){var i=t.attr(e,"tabindex"),s=null!=i;return(!s||i>=0)&&t.ui.focusable(e,s)}}),t.fn.extend({uniqueId:function(){var t=0;return function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++t)})}}(),removeUniqueId:function(){return this.each(function(){/^ui-id-\d+$/.test(this.id)&&t(this).removeAttr("id")})}}),t.widget("ui.accordion",{version:"1.12.1",options:{active:0,animate:{},classes:{"ui-accordion-header":"ui-corner-top","ui-accordion-header-collapsed":"ui-corner-all","ui-accordion-content":"ui-corner-bottom"},collapsible:!1,event:"click",header:"> li > :first-child, > :not(li):even",heightStyle:"auto",icons:{activeHeader:"ui-icon-triangle-1-s",header:"ui-icon-triangle-1-e"},activate:null,beforeActivate:null},hideProps:{borderTopWidth:"hide",borderBottomWidth:"hide",paddingTop:"hide",paddingBottom:"hide",height:"hide"},showProps:{borderTopWidth:"show",borderBottomWidth:"show",paddingTop:"show",paddingBottom:"show",height:"show"},_create:function(){var e=this.options;this.prevShow=this.prevHide=t(),this._addClass("ui-accordion","ui-widget ui-helper-reset"),this.element.attr("role","tablist"),e.collapsible||e.active!==!1&&null!=e.active||(e.active=0),this._processPanels(),0>e.active&&(e.active+=this.headers.length),this._refresh()},_getCreateEventData:function(){return{header:this.active,panel:this.active.length?this.active.next():t()}},_createIcons:function(){var e,i,s=this.options.icons;s&&(e=t("<span>"),this._addClass(e,"ui-accordion-header-icon","ui-icon "+s.header),e.prependTo(this.headers),i=this.active.children(".ui-accordion-header-icon"),this._removeClass(i,s.header)._addClass(i,null,s.activeHeader)._addClass(this.headers,"ui-accordion-icons"))},_destroyIcons:function(){this._removeClass(this.headers,"ui-accordion-icons"),this.headers.children(".ui-accordion-header-icon").remove()},_destroy:function(){var t;this.element.removeAttr("role"),this.headers.removeAttr("role aria-expanded aria-selected aria-controls tabIndex").removeUniqueId(),this._destroyIcons(),t=this.headers.next().css("display","").removeAttr("role aria-hidden aria-labelledby").removeUniqueId(),"content"!==this.options.heightStyle&&t.css("height","")},_setOption:function(t,e){return"active"===t?(this._activate(e),void 0):("event"===t&&(this.options.event&&this._off(this.headers,this.options.event),this._setupEvents(e)),this._super(t,e),"collapsible"!==t||e||this.options.active!==!1||this._activate(0),"icons"===t&&(this._destroyIcons(),e&&this._createIcons()),void 0)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",t),this._toggleClass(null,"ui-state-disabled",!!t),this._toggleClass(this.headers.add(this.headers.next()),null,"ui-state-disabled",!!t)},_keydown:function(e){if(!e.altKey&&!e.ctrlKey){var i=t.ui.keyCode,s=this.headers.length,n=this.headers.index(e.target),o=!1;switch(e.keyCode){case i.RIGHT:case i.DOWN:o=this.headers[(n+1)%s];break;case i.LEFT:case i.UP:o=this.headers[(n-1+s)%s];break;case i.SPACE:case i.ENTER:this._eventHandler(e);break;case i.HOME:o=this.headers[0];break;case i.END:o=this.headers[s-1]}o&&(t(e.target).attr("tabIndex",-1),t(o).attr("tabIndex",0),t(o).trigger("focus"),e.preventDefault())}},_panelKeyDown:function(e){e.keyCode===t.ui.keyCode.UP&&e.ctrlKey&&t(e.currentTarget).prev().trigger("focus")},refresh:function(){var e=this.options;this._processPanels(),e.active===!1&&e.collapsible===!0||!this.headers.length?(e.active=!1,this.active=t()):e.active===!1?this._activate(0):this.active.length&&!t.contains(this.element[0],this.active[0])?this.headers.length===this.headers.find(".ui-state-disabled").length?(e.active=!1,this.active=t()):this._activate(Math.max(0,e.active-1)):e.active=this.headers.index(this.active),this._destroyIcons(),this._refresh()},_processPanels:function(){var t=this.headers,e=this.panels;this.headers=this.element.find(this.options.header),this._addClass(this.headers,"ui-accordion-header ui-accordion-header-collapsed","ui-state-default"),this.panels=this.headers.next().filter(":not(.ui-accordion-content-active)").hide(),this._addClass(this.panels,"ui-accordion-content","ui-helper-reset ui-widget-content"),e&&(this._off(t.not(this.headers)),this._off(e.not(this.panels)))},_refresh:function(){var e,i=this.options,s=i.heightStyle,n=this.element.parent();this.active=this._findActive(i.active),this._addClass(this.active,"ui-accordion-header-active","ui-state-active")._removeClass(this.active,"ui-accordion-header-collapsed"),this._addClass(this.active.next(),"ui-accordion-content-active"),this.active.next().show(),this.headers.attr("role","tab").each(function(){var e=t(this),i=e.uniqueId().attr("id"),s=e.next(),n=s.uniqueId().attr("id");e.attr("aria-controls",n),s.attr("aria-labelledby",i)}).next().attr("role","tabpanel"),this.headers.not(this.active).attr({"aria-selected":"false","aria-expanded":"false",tabIndex:-1}).next().attr({"aria-hidden":"true"}).hide(),this.active.length?this.active.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0}).next().attr({"aria-hidden":"false"}):this.headers.eq(0).attr("tabIndex",0),this._createIcons(),this._setupEvents(i.event),"fill"===s?(e=n.height(),this.element.siblings(":visible").each(function(){var i=t(this),s=i.css("position");"absolute"!==s&&"fixed"!==s&&(e-=i.outerHeight(!0))}),this.headers.each(function(){e-=t(this).outerHeight(!0)}),this.headers.next().each(function(){t(this).height(Math.max(0,e-t(this).innerHeight()+t(this).height()))}).css("overflow","auto")):"auto"===s&&(e=0,this.headers.next().each(function(){var i=t(this).is(":visible");i||t(this).show(),e=Math.max(e,t(this).css("height","").height()),i||t(this).hide()}).height(e))},_activate:function(e){var i=this._findActive(e)[0];i!==this.active[0]&&(i=i||this.active[0],this._eventHandler({target:i,currentTarget:i,preventDefault:t.noop}))},_findActive:function(e){return"number"==typeof e?this.headers.eq(e):t()},_setupEvents:function(e){var i={keydown:"_keydown"};e&&t.each(e.split(" "),function(t,e){i[e]="_eventHandler"}),this._off(this.headers.add(this.headers.next())),this._on(this.headers,i),this._on(this.headers.next(),{keydown:"_panelKeyDown"}),this._hoverable(this.headers),this._focusable(this.headers)},_eventHandler:function(e){var i,s,n=this.options,o=this.active,a=t(e.currentTarget),r=a[0]===o[0],h=r&&n.collapsible,l=h?t():a.next(),c=o.next(),u={oldHeader:o,oldPanel:c,newHeader:h?t():a,newPanel:l};e.preventDefault(),r&&!n.collapsible||this._trigger("beforeActivate",e,u)===!1||(n.active=h?!1:this.headers.index(a),this.active=r?t():a,this._toggle(u),this._removeClass(o,"ui-accordion-header-active","ui-state-active"),n.icons&&(i=o.children(".ui-accordion-header-icon"),this._removeClass(i,null,n.icons.activeHeader)._addClass(i,null,n.icons.header)),r||(this._removeClass(a,"ui-accordion-header-collapsed")._addClass(a,"ui-accordion-header-active","ui-state-active"),n.icons&&(s=a.children(".ui-accordion-header-icon"),this._removeClass(s,null,n.icons.header)._addClass(s,null,n.icons.activeHeader)),this._addClass(a.next(),"ui-accordion-content-active")))},_toggle:function(e){var i=e.newPanel,s=this.prevShow.length?this.prevShow:e.oldPanel;this.prevShow.add(this.prevHide).stop(!0,!0),this.prevShow=i,this.prevHide=s,this.options.animate?this._animate(i,s,e):(s.hide(),i.show(),this._toggleComplete(e)),s.attr({"aria-hidden":"true"}),s.prev().attr({"aria-selected":"false","aria-expanded":"false"}),i.length&&s.length?s.prev().attr({tabIndex:-1,"aria-expanded":"false"}):i.length&&this.headers.filter(function(){return 0===parseInt(t(this).attr("tabIndex"),10)}).attr("tabIndex",-1),i.attr("aria-hidden","false").prev().attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0})},_animate:function(t,e,i){var s,n,o,a=this,r=0,h=t.css("box-sizing"),l=t.length&&(!e.length||t.index()<e.index()),c=this.options.animate||{},u=l&&c.down||c,d=function(){a._toggleComplete(i)};return"number"==typeof u&&(o=u),"string"==typeof u&&(n=u),n=n||u.easing||c.easing,o=o||u.duration||c.duration,e.length?t.length?(s=t.show().outerHeight(),e.animate(this.hideProps,{duration:o,easing:n,step:function(t,e){e.now=Math.round(t)}}),t.hide().animate(this.showProps,{duration:o,easing:n,complete:d,step:function(t,i){i.now=Math.round(t),"height"!==i.prop?"content-box"===h&&(r+=i.now):"content"!==a.options.heightStyle&&(i.now=Math.round(s-e.outerHeight()-r),r=0)}}),void 0):e.animate(this.hideProps,o,n,d):t.animate(this.showProps,o,n,d)},_toggleComplete:function(t){var e=t.oldPanel,i=e.prev();this._removeClass(e,"ui-accordion-content-active"),this._removeClass(i,"ui-accordion-header-active")._addClass(i,"ui-accordion-header-collapsed"),e.length&&(e.parent()[0].className=e.parent()[0].className),this._trigger("activate",null,t)}}),t.ui.safeActiveElement=function(t){var e;try{e=t.activeElement}catch(i){e=t.body}return e||(e=t.body),e.nodeName||(e=t.body),e},t.widget("ui.menu",{version:"1.12.1",defaultElement:"<ul>",delay:300,options:{icons:{submenu:"ui-icon-caret-1-e"},items:"> *",menus:"ul",position:{my:"left top",at:"right top"},role:"menu",blur:null,focus:null,select:null},_create:function(){this.activeMenu=this.element,this.mouseHandled=!1,this.element.uniqueId().attr({role:this.options.role,tabIndex:0}),this._addClass("ui-menu","ui-widget ui-widget-content"),this._on({"mousedown .ui-menu-item":function(t){t.preventDefault()},"click .ui-menu-item":function(e){var i=t(e.target),s=t(t.ui.safeActiveElement(this.document[0]));!this.mouseHandled&&i.not(".ui-state-disabled").length&&(this.select(e),e.isPropagationStopped()||(this.mouseHandled=!0),i.has(".ui-menu").length?this.expand(e):!this.element.is(":focus")&&s.closest(".ui-menu").length&&(this.element.trigger("focus",[!0]),this.active&&1===this.active.parents(".ui-menu").length&&clearTimeout(this.timer)))},"mouseenter .ui-menu-item":function(e){if(!this.previousFilter){var i=t(e.target).closest(".ui-menu-item"),s=t(e.currentTarget);i[0]===s[0]&&(this._removeClass(s.siblings().children(".ui-state-active"),null,"ui-state-active"),this.focus(e,s))}},mouseleave:"collapseAll","mouseleave .ui-menu":"collapseAll",focus:function(t,e){var i=this.active||this.element.find(this.options.items).eq(0);e||this.focus(t,i)},blur:function(e){this._delay(function(){var i=!t.contains(this.element[0],t.ui.safeActiveElement(this.document[0]));i&&this.collapseAll(e)})},keydown:"_keydown"}),this.refresh(),this._on(this.document,{click:function(t){this._closeOnDocumentClick(t)&&this.collapseAll(t),this.mouseHandled=!1}})},_destroy:function(){var e=this.element.find(".ui-menu-item").removeAttr("role aria-disabled"),i=e.children(".ui-menu-item-wrapper").removeUniqueId().removeAttr("tabIndex role aria-haspopup");this.element.removeAttr("aria-activedescendant").find(".ui-menu").addBack().removeAttr("role aria-labelledby aria-expanded aria-hidden aria-disabled tabIndex").removeUniqueId().show(),i.children().each(function(){var e=t(this);e.data("ui-menu-submenu-caret")&&e.remove()})},_keydown:function(e){var i,s,n,o,a=!0;switch(e.keyCode){case t.ui.keyCode.PAGE_UP:this.previousPage(e);break;case t.ui.keyCode.PAGE_DOWN:this.nextPage(e);break;case t.ui.keyCode.HOME:this._move("first","first",e);break;case t.ui.keyCode.END:this._move("last","last",e);break;case t.ui.keyCode.UP:this.previous(e);break;case t.ui.keyCode.DOWN:this.next(e);break;case t.ui.keyCode.LEFT:this.collapse(e);break;case t.ui.keyCode.RIGHT:this.active&&!this.active.is(".ui-state-disabled")&&this.expand(e);break;case t.ui.keyCode.ENTER:case t.ui.keyCode.SPACE:this._activate(e);break;case t.ui.keyCode.ESCAPE:this.collapse(e);break;default:a=!1,s=this.previousFilter||"",o=!1,n=e.keyCode>=96&&105>=e.keyCode?""+(e.keyCode-96):String.fromCharCode(e.keyCode),clearTimeout(this.filterTimer),n===s?o=!0:n=s+n,i=this._filterMenuItems(n),i=o&&-1!==i.index(this.active.next())?this.active.nextAll(".ui-menu-item"):i,i.length||(n=String.fromCharCode(e.keyCode),i=this._filterMenuItems(n)),i.length?(this.focus(e,i),this.previousFilter=n,this.filterTimer=this._delay(function(){delete this.previousFilter},1e3)):delete this.previousFilter}a&&e.preventDefault()},_activate:function(t){this.active&&!this.active.is(".ui-state-disabled")&&(this.active.children("[aria-haspopup='true']").length?this.expand(t):this.select(t))},refresh:function(){var e,i,s,n,o,a=this,r=this.options.icons.submenu,h=this.element.find(this.options.menus);this._toggleClass("ui-menu-icons",null,!!this.element.find(".ui-icon").length),s=h.filter(":not(.ui-menu)").hide().attr({role:this.options.role,"aria-hidden":"true","aria-expanded":"false"}).each(function(){var e=t(this),i=e.prev(),s=t("<span>").data("ui-menu-submenu-caret",!0);a._addClass(s,"ui-menu-icon","ui-icon "+r),i.attr("aria-haspopup","true").prepend(s),e.attr("aria-labelledby",i.attr("id"))}),this._addClass(s,"ui-menu","ui-widget ui-widget-content ui-front"),e=h.add(this.element),i=e.find(this.options.items),i.not(".ui-menu-item").each(function(){var e=t(this);a._isDivider(e)&&a._addClass(e,"ui-menu-divider","ui-widget-content")}),n=i.not(".ui-menu-item, .ui-menu-divider"),o=n.children().not(".ui-menu").uniqueId().attr({tabIndex:-1,role:this._itemRole()}),this._addClass(n,"ui-menu-item")._addClass(o,"ui-menu-item-wrapper"),i.filter(".ui-state-disabled").attr("aria-disabled","true"),this.active&&!t.contains(this.element[0],this.active[0])&&this.blur()},_itemRole:function(){return{menu:"menuitem",listbox:"option"}[this.options.role]},_setOption:function(t,e){if("icons"===t){var i=this.element.find(".ui-menu-icon");this._removeClass(i,null,this.options.icons.submenu)._addClass(i,null,e.submenu)}this._super(t,e)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",t+""),this._toggleClass(null,"ui-state-disabled",!!t)},focus:function(t,e){var i,s,n;this.blur(t,t&&"focus"===t.type),this._scrollIntoView(e),this.active=e.first(),s=this.active.children(".ui-menu-item-wrapper"),this._addClass(s,null,"ui-state-active"),this.options.role&&this.element.attr("aria-activedescendant",s.attr("id")),n=this.active.parent().closest(".ui-menu-item").children(".ui-menu-item-wrapper"),this._addClass(n,null,"ui-state-active"),t&&"keydown"===t.type?this._close():this.timer=this._delay(function(){this._close()},this.delay),i=e.children(".ui-menu"),i.length&&t&&/^mouse/.test(t.type)&&this._startOpening(i),this.activeMenu=e.parent(),this._trigger("focus",t,{item:e})},_scrollIntoView:function(e){var i,s,n,o,a,r;this._hasScroll()&&(i=parseFloat(t.css(this.activeMenu[0],"borderTopWidth"))||0,s=parseFloat(t.css(this.activeMenu[0],"paddingTop"))||0,n=e.offset().top-this.activeMenu.offset().top-i-s,o=this.activeMenu.scrollTop(),a=this.activeMenu.height(),r=e.outerHeight(),0>n?this.activeMenu.scrollTop(o+n):n+r>a&&this.activeMenu.scrollTop(o+n-a+r))},blur:function(t,e){e||clearTimeout(this.timer),this.active&&(this._removeClass(this.active.children(".ui-menu-item-wrapper"),null,"ui-state-active"),this._trigger("blur",t,{item:this.active}),this.active=null)},_startOpening:function(t){clearTimeout(this.timer),"true"===t.attr("aria-hidden")&&(this.timer=this._delay(function(){this._close(),this._open(t)},this.delay))},_open:function(e){var i=t.extend({of:this.active},this.options.position);clearTimeout(this.timer),this.element.find(".ui-menu").not(e.parents(".ui-menu")).hide().attr("aria-hidden","true"),e.show().removeAttr("aria-hidden").attr("aria-expanded","true").position(i)},collapseAll:function(e,i){clearTimeout(this.timer),this.timer=this._delay(function(){var s=i?this.element:t(e&&e.target).closest(this.element.find(".ui-menu"));s.length||(s=this.element),this._close(s),this.blur(e),this._removeClass(s.find(".ui-state-active"),null,"ui-state-active"),this.activeMenu=s},this.delay)},_close:function(t){t||(t=this.active?this.active.parent():this.element),t.find(".ui-menu").hide().attr("aria-hidden","true").attr("aria-expanded","false")},_closeOnDocumentClick:function(e){return!t(e.target).closest(".ui-menu").length},_isDivider:function(t){return!/[^\-\u2014\u2013\s]/.test(t.text())},collapse:function(t){var e=this.active&&this.active.parent().closest(".ui-menu-item",this.element);e&&e.length&&(this._close(),this.focus(t,e))},expand:function(t){var e=this.active&&this.active.children(".ui-menu ").find(this.options.items).first();e&&e.length&&(this._open(e.parent()),this._delay(function(){this.focus(t,e)}))},next:function(t){this._move("next","first",t)},previous:function(t){this._move("prev","last",t)},isFirstItem:function(){return this.active&&!this.active.prevAll(".ui-menu-item").length},isLastItem:function(){return this.active&&!this.active.nextAll(".ui-menu-item").length},_move:function(t,e,i){var s;this.active&&(s="first"===t||"last"===t?this.active["first"===t?"prevAll":"nextAll"](".ui-menu-item").eq(-1):this.active[t+"All"](".ui-menu-item").eq(0)),s&&s.length&&this.active||(s=this.activeMenu.find(this.options.items)[e]()),this.focus(i,s)},nextPage:function(e){var i,s,n;return this.active?(this.isLastItem()||(this._hasScroll()?(s=this.active.offset().top,n=this.element.height(),this.active.nextAll(".ui-menu-item").each(function(){return i=t(this),0>i.offset().top-s-n}),this.focus(e,i)):this.focus(e,this.activeMenu.find(this.options.items)[this.active?"last":"first"]())),void 0):(this.next(e),void 0)},previousPage:function(e){var i,s,n;return this.active?(this.isFirstItem()||(this._hasScroll()?(s=this.active.offset().top,n=this.element.height(),this.active.prevAll(".ui-menu-item").each(function(){return i=t(this),i.offset().top-s+n>0}),this.focus(e,i)):this.focus(e,this.activeMenu.find(this.options.items).first())),void 0):(this.next(e),void 0)},_hasScroll:function(){return this.element.outerHeight()<this.element.prop("scrollHeight")},select:function(e){this.active=this.active||t(e.target).closest(".ui-menu-item");var i={item:this.active};this.active.has(".ui-menu").length||this.collapseAll(e,!0),this._trigger("select",e,i)},_filterMenuItems:function(e){var i=e.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&"),s=RegExp("^"+i,"i");return this.activeMenu.find(this.options.items).filter(".ui-menu-item").filter(function(){return s.test(t.trim(t(this).children(".ui-menu-item-wrapper").text()))})}}),t.widget("ui.autocomplete",{version:"1.12.1",defaultElement:"<input>",options:{appendTo:null,autoFocus:!1,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null,change:null,close:null,focus:null,open:null,response:null,search:null,select:null},requestIndex:0,pending:0,_create:function(){var e,i,s,n=this.element[0].nodeName.toLowerCase(),o="textarea"===n,a="input"===n;
12this.isMultiLine=o||!a&&this._isContentEditable(this.element),this.valueMethod=this.element[o||a?"val":"text"],this.isNewMenu=!0,this._addClass("ui-autocomplete-input"),this.element.attr("autocomplete","off"),this._on(this.element,{keydown:function(n){if(this.element.prop("readOnly"))return e=!0,s=!0,i=!0,void 0;e=!1,s=!1,i=!1;var o=t.ui.keyCode;switch(n.keyCode){case o.PAGE_UP:e=!0,this._move("previousPage",n);break;case o.PAGE_DOWN:e=!0,this._move("nextPage",n);break;case o.UP:e=!0,this._keyEvent("previous",n);break;case o.DOWN:e=!0,this._keyEvent("next",n);break;case o.ENTER:this.menu.active&&(e=!0,n.preventDefault(),this.menu.select(n));break;case o.TAB:this.menu.active&&this.menu.select(n);break;case o.ESCAPE:this.menu.element.is(":visible")&&(this.isMultiLine||this._value(this.term),this.close(n),n.preventDefault());break;default:i=!0,this._searchTimeout(n)}},keypress:function(s){if(e)return e=!1,(!this.isMultiLine||this.menu.element.is(":visible"))&&s.preventDefault(),void 0;if(!i){var n=t.ui.keyCode;switch(s.keyCode){case n.PAGE_UP:this._move("previousPage",s);break;case n.PAGE_DOWN:this._move("nextPage",s);break;case n.UP:this._keyEvent("previous",s);break;case n.DOWN:this._keyEvent("next",s)}}},input:function(t){return s?(s=!1,t.preventDefault(),void 0):(this._searchTimeout(t),void 0)},focus:function(){this.selectedItem=null,this.previous=this._value(
vendor: 4,123 bytes, line 12
12)},blur:function(t){return this.cancelBlur?(delete this.cancelBlur,void 0):(clearTimeout(this.searching),this.close(t),this._change(t),void 0)}}),this._initSource(),this.menu=t("<ul>").appendTo(this._appendTo()).menu({role:null}).hide().menu("instance"),this._addClass(this.menu.element,"ui-autocomplete","ui-front"),this._on(this.menu.element,{mousedown:function(e){e.preventDefault(),this.cancelBlur=!0,this._delay(function(){delete this.cancelBlur,this.element[0]!==t.ui.safeActiveElement(this.document[0])&&this.element.trigger("focus")})},menufocus:function(e,i){var s,n;return this.isNewMenu&&(this.isNewMenu=!1,e.originalEvent&&/^mouse/.test(e.originalEvent.type))?(this.menu.blur(),this.document.one("mousemove",function(){t(e.target).trigger(e.originalEvent)}),void 0):(n=i.item.data("ui-autocomplete-item"),!1!==this._trigger("focus",e,{item:n})&&e.originalEvent&&/^key/.test(e.originalEvent.type)&&this._value(n.value),s=i.item.attr("aria-label")||n.value,s&&t.trim(s).length&&(this.liveRegion.children().hide(),t("<div>").text(s).appendTo(this.liveRegion)),void 0)},menuselect:function(e,i){var s=i.item.data("ui-autocomplete-item"),n=this.previous;this.element[0]!==t.ui.safeActiveElement(this.document[0])&&(this.element.trigger("focus"),this.previous=n,this._delay(function(){this.previous=n,this.selectedItem=s})),!1!==this._trigger("select",e,{item:s})&&this._value(s.value),this.term=this._value(),this.close(e),this.selectedItem=s}}),this.liveRegion=t("<div>",{role:"status","aria-live":"assertive","aria-relevant":"additions"}).appendTo(this.document[0].body),this._addClass(this.liveRegion,null,"ui-helper-hidden-accessible"),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_destroy:function(){clearTimeout(this.searching),this.element.removeAttr("autocomplete"),this.menu.element.remove(),this.liveRegion.remove()},_setOption:function(t,e){this._super(t,e),"source"===t&&this._initSource(),"appendTo"===t&&this.menu.element.appendTo(this._appendTo()),"disabled"===t&&e&&this.xhr&&this.xhr.abort()},_isEventTargetInWidget:function(e){var i=this.menu.element[0];return e.target===this.element[0]||e.target===i||t.contains(i,e.target)},_closeOnClickOutside:function(t){this._isEventTargetInWidget(t)||this.close()},_appendTo:function(){var e=this.options.appendTo;return e&&(e=e.jquery||e.nodeType?t(e):this.document.find(e).eq(0)),e&&e[0]||(e=this.element.closest(".ui-front, dialog")),e.length||(e=this.document[0].body),e},_initSource:function(){var e,i,s=this;t.isArray(this.options.source)?(e=this.options.source,this.source=function(i,s){s(t.ui.autocomplete.filter(e,i.term))}):"string"==typeof this.options.source?(i=this.options.source,this.source=function(e,n){s.xhr&&s.xhr.abort(),s.xhr=t.ajax({url:i,data:e,dataType:"json",success:function(t){n(t)},error:function(){n([])}})}):this.source=this.options.source},_searchTimeout:function(t){clearTimeout(this.searching),this.searching=this._delay(function(){var e=this.term===this._value(),i=this.menu.element.is(":visible"),s=t.altKey||t.ctrlKey||t.metaKey||t.shiftKey;(!e||e&&!i&&!s)&&(this.selectedItem=null,this.search(null,t))},this.options.delay)},search:function(t,e){return t=null!=t?t:this._value(),this.term=this._value(),t.length<this.options.minLength?this.close(e):this._trigger("search",e)!==!1?this._search(t):void 0},_search:function(t){this.pending++,this._addClass("ui-autocomplete-loading"),this.cancelSearch=!1,this.source({term:t},this._response())},_response:function(){var e=++this.requestIndex;return t.proxy(function(t){e===this.requestIndex&&this.__response(t),this.pending--,this.pending||this._removeClass("ui-autocomplete-loading")},this)},__response:function(t){t&&(t=this._normalize(t)),this._trigger("response",null,{content:t}),!this.options.disabled&&t&&t.length&&!this.cancelSearch?(this._suggest(t),this._trigger("open")):this._close()},close:function(t){this.cancelSearch=!0,this._close(t)},_close:function(t){this._off(this.document,"mousedown"),this.menu.element.is(":visible")&&(this.menu.element.hide(),this.menu.blur(),this.isNewMenu=!0,this._trigger("close",t))}
vendor: 31,520 bytes, lines 12-13
12,_change:function(t){this.previous!==this._value()&&this._trigger("change",t,{item:this.selectedItem})},_normalize:function(e){return e.length&&e[0].label&&e[0].value?e:t.map(e,function(e){return"string"==typeof e?{label:e,value:e}:t.extend({},e,{label:e.label||e.value,value:e.value||e.label})})},_suggest:function(e){var i=this.menu.element.empty();this._renderMenu(i,e),this.isNewMenu=!0,this.menu.refresh(),i.show(),this._resizeMenu(),i.position(t.extend({of:this.element},this.options.position)),this.options.autoFocus&&this.menu.next(),this._on(this.document,{mousedown:"_closeOnClickOutside"})},_resizeMenu:function(){var t=this.menu.element;t.outerWidth(Math.max(t.width("").outerWidth()+1,this.element.outerWidth()))},_renderMenu:function(e,i){var s=this;t.each(i,function(t,i){s._renderItemData(e,i)})},_renderItemData:function(t,e){return this._renderItem(t,e).data("ui-autocomplete-item",e)},_renderItem:function(e,i){return t("<li>").append(t("<div>").text(i.label)).appendTo(e)},_move:function(t,e){return this.menu.element.is(":visible")?this.menu.isFirstItem()&&/^previous/.test(t)||this.menu.isLastItem()&&/^next/.test(t)?(this.isMultiLine||this._value(this.term),this.menu.blur(),void 0):(this.menu[t](e),void 0):(this.search(null,e),void 0)},widget:function(){return this.menu.element},_value:function(){return this.valueMethod.apply(this.element,arguments)},_keyEvent:function(t,e){(!this.isMultiLine||this.menu.element.is(":visible"))&&(this._move(t,e),e.preventDefault())},_isContentEditable:function(t){if(!t.length)return!1;var e=t.prop("contentEditable");return"inherit"===e?this._isContentEditable(t.parent()):"true"===e}}),t.extend(t.ui.autocomplete,{escapeRegex:function(t){return t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")},filter:function(e,i){var s=RegExp(t.ui.autocomplete.escapeRegex(i),"i");return t.grep(e,function(t){return s.test(t.label||t.value||t)})}}),t.widget("ui.autocomplete",t.ui.autocomplete,{options:{messages:{noResults:"No search results.",results:function(t){return t+(t>1?" results are":" result is")+" available, use up and down arrow keys to navigate."}}},__response:function(e){var i;this._superApply(arguments),this.options.disabled||this.cancelSearch||(i=e&&e.length?this.options.messages.results(e.length):this.options.messages.noResults,this.liveRegion.children().hide(),t("<div>").text(i).appendTo(this.liveRegion))}}),t.ui.autocomplete;var g=/ui-corner-([a-z]){2,6}/g;t.widget("ui.controlgroup",{version:"1.12.1",defaultElement:"<div>",options:{direction:"horizontal",disabled:null,onlyVisible:!0,items:{button:"input[type=button], input[type=submit], input[type=reset], button, a",controlgroupLabel:".ui-controlgroup-label",checkboxradio:"input[type='checkbox'], input[type='radio']",selectmenu:"select",spinner:".ui-spinner-input"}},_create:function(){this._enhance()},_enhance:function(){this.element.attr("role","toolbar"),this.refresh()},_destroy:function(){this._callChildMethod("destroy"),this.childWidgets.removeData("ui-controlgroup-data"),this.element.removeAttr("role"),this.options.items.controlgroupLabel&&this.element.find(this.options.items.controlgroupLabel).find(".ui-controlgroup-label-contents").contents().unwrap()},_initWidgets:function(){var e=this,i=[];t.each(this.options.items,function(s,n){var o,a={};return n?"controlgroupLabel"===s?(o=e.element.find(n),o.each(function(){var e=t(this);e.children(".ui-controlgroup-label-contents").length||e.contents().wrapAll("<span class='ui-controlgroup-label-contents'></span>")}),e._addClass(o,null,"ui-widget ui-widget-content ui-state-default"),i=i.concat(o.get()),void 0):(t.fn[s]&&(a=e["_"+s+"Options"]?e["_"+s+"Options"]("middle"):{classes:{}},e.element.find(n).each(function(){var n=t(this),o=n[s]("instance"),r=t.widget.extend({},a);if("button"!==s||!n.parent(".ui-spinner").length){o||(o=n[s]()[s]("instance")),o&&(r.classes=e._resolveClassesValues(r.classes,o)),n[s](r);var h=n[s]("widget");t.data(h[0],"ui-controlgroup-data",o?o:n[s]("instance")),i.push(h[0])}})),void 0):void 0}),this.childWidgets=t(t.unique(i)),this._addClass(this.childWidgets,"ui-controlgroup-item")},_callChildMethod:function(e){this.childWidgets.each(function(){var i=t(this),s=i.data("ui-controlgroup-data");s&&s[e]&&s[e]()})},_updateCornerClass:function(t,e){var i="ui-corner-top ui-corner-bottom ui-corner-left ui-corner-right ui-corner-all",s=this._buildSimpleOptions(e,"label").classes.label;this._removeClass(t,null,i),this._addClass(t,null,s)},_buildSimpleOptions:function(t,e){var i="vertical"===this.options.direction,s={classes:{}};return s.classes[e]={middle:"",first:"ui-corner-"+(i?"top":"left"),last:"ui-corner-"+(i?"bottom":"right"),only:"ui-corner-all"}[t],s},_spinnerOptions:function(t){var e=this._buildSimpleOptions(t,"ui-spinner");return e.classes["ui-spinner-up"]="",e.classes["ui-spinner-down"]="",e},_buttonOptions:function(t){return this._buildSimpleOptions(t,"ui-button")},_checkboxradioOptions:function(t){return this._buildSimpleOptions(t,"ui-checkboxradio-label")},_selectmenuOptions:function(t){var e="vertical"===this.options.direction;return{width:e?"auto":!1,classes:{middle:{"ui-selectmenu-button-open":"","ui-selectmenu-button-closed":""},first:{"ui-selectmenu-button-open":"ui-corner-"+(e?"top":"tl"),"ui-selectmenu-button-closed":"ui-corner-"+(e?"top":"left")},last:{"ui-selectmenu-button-open":e?"":"ui-corner-tr","ui-selectmenu-button-closed":"ui-corner-"+(e?"bottom":"right")},only:{"ui-selectmenu-button-open":"ui-corner-top","ui-selectmenu-button-closed":"ui-corner-all"}}[t]}},_resolveClassesValues:function(e,i){var s={};return t.each(e,function(n){var o=i.options.classes[n]||"";o=t.trim(o.replace(g,"")),s[n]=(o+" "+e[n]).replace(/\s+/g," ")}),s},_setOption:function(t,e){return"direction"===t&&this._removeClass("ui-controlgroup-"+this.options.direction),this._super(t,e),"disabled"===t?(this._callChildMethod(e?"disable":"enable"),void 0):(this.refresh(),void 0)},refresh:function(){var e,i=this;this._addClass("ui-controlgroup ui-controlgroup-"+this.options.direction),"horizontal"===this.options.direction&&this._addClass(null,"ui-helper-clearfix"),this._initWidgets(),e=this.childWidgets,this.options.onlyVisible&&(e=e.filter(":visible")),e.length&&(t.each(["first","last"],function(t,s){var n=e[s]().data("ui-controlgroup-data");if(n&&i["_"+n.widgetName+"Options"]){var o=i["_"+n.widgetName+"Options"](1===e.length?"only":s);o.classes=i._resolveClassesValues(o.classes,n),n.element[n.widgetName](o)}else i._updateCornerClass(e[s](),s)}),this._callChildMethod("refresh"))}}),t.widget("ui.checkboxradio",[t.ui.formResetMixin,{version:"1.12.1",options:{disabled:null,label:null,icon:!0,classes:{"ui-checkboxradio-label":"ui-corner-all","ui-checkboxradio-icon":"ui-corner-all"}},_getCreateOptions:function(){var e,i,s=this,n=this._super()||{};return this._readType(),i=this.element.labels(),this.label=t(i[i.length-1]),this.label.length||t.error("No label found for checkboxradio widget"),this.originalLabel="",this.label.contents().not(this.element[0]).each(function(){s.originalLabel+=3===this.nodeType?t(this).text():this.outerHTML}),this.originalLabel&&(n.label=this.originalLabel),e=this.element[0].disabled,null!=e&&(n.disabled=e),n},_create:function(){var t=this.element[0].checked;this._bindFormResetHandler(),null==this.options.disabled&&(this.options.disabled=this.element[0].disabled),this._setOption("disabled",this.options.disabled),this._addClass("ui-checkboxradio","ui-helper-hidden-accessible"),this._addClass(this.label,"ui-checkboxradio-label","ui-button ui-widget"),"radio"===this.type&&this._addClass(this.label,"ui-checkboxradio-radio-label"),this.options.label&&this.options.label!==this.originalLabel?this._updateLabel():this.originalLabel&&(this.options.label=this.originalLabel),this._enhance(),t&&(this._addClass(this.label,"ui-checkboxradio-checked","ui-state-active"),this.icon&&this._addClass(this.icon,null,"ui-state-hover")),this._on({change:"_toggleClasses",focus:function(){this._addClass(this.label,null,"ui-state-focus ui-visual-focus")},blur:function(){this._removeClass(this.label,null,"ui-state-focus ui-visual-focus")}})},_readType:function(){var e=this.element[0].nodeName.toLowerCase();this.type=this.element[0].type,"input"===e&&/radio|checkbox/.test(this.type)||t.error("Can't create checkboxradio on element.nodeName="+e+" and element.type="+this.type)},_enhance:function(){this._updateIcon(this.element[0].checked)},widget:function(){return this.label},_getRadioGroup:function(){var e,i=this.element[0].name,s="input[name='"+t.ui.escapeSelector(i)+"']";return i?(e=this.form.length?t(this.form[0].elements).filter(s):t(s).filter(function(){return 0===t(this).form().length}),e.not(this.element)):t([])},_toggleClasses:function(){var e=this.element[0].checked;this._toggleClass(this.label,"ui-checkboxradio-checked","ui-state-active",e),this.options.icon&&"checkbox"===this.type&&this._toggleClass(this.icon,null,"ui-icon-check ui-state-checked",e)._toggleClass(this.icon,null,"ui-icon-blank",!e),"radio"===this.type&&this._getRadioGroup().each(function(){var e=t(this).checkboxradio("instance");e&&e._removeClass(e.label,"ui-checkboxradio-checked","ui-state-active")})},_destroy:function(){this._unbindFormResetHandler(),this.icon&&(this.icon.remove(),this.iconSpace.remove())},_setOption:function(t,e){return"label"!==t||e?(this._super(t,e),"disabled"===t?(this._toggleClass(this.label,null,"ui-state-disabled",e),this.element[0].disabled=e,void 0):(this.refresh(),void 0)):void 0},_updateIcon:function(e){var i="ui-icon ui-icon-background ";this.options.icon?(this.icon||(this.icon=t("<span>"),this.iconSpace=t("<span> </span>"),this._addClass(this.iconSpace,"ui-checkboxradio-icon-space")),"checkbox"===this.type?(i+=e?"ui-icon-check ui-state-checked":"ui-icon-blank",this._removeClass(this.icon,null,e?"ui-icon-blank":"ui-icon-check")):i+="ui-icon-blank",this._addClass(this.icon,"ui-checkboxradio-icon",i),e||this._removeClass(this.icon,null,"ui-icon-check ui-state-checked"),this.icon.prependTo(this.label).after(this.iconSpace)):void 0!==this.icon&&(this.icon.remove(),this.iconSpace.remove(),delete this.icon)},_updateLabel:function(){var t=this.label.contents().not(this.element[0]);this.icon&&(t=t.not(this.icon[0])),this.iconSpace&&(t=t.not(this.iconSpace[0])),t.remove(),this.label.append(this.options.label)},refresh:function(){var t=this.element[0].checked,e=this.element[0].disabled;this._updateIcon(t),this._toggleClass(this.label,"ui-checkboxradio-checked","ui-state-active",t),null!==this.options.label&&this._updateLabel(),e!==this.options.disabled&&this._setOptions({disabled:e})}}]),t.ui.checkboxradio,t.widget("ui.button",{version:"1.12.1",defaultElement:"<button>",options:{classes:{"ui-button":"ui-corner-all"},disabled:null,icon:null,iconPosition:"beginning",label:null,showLabel:!0},_getCreateOptions:function(){var t,e=this._super()||{};return this.isInput=this.element.is("input"),t=this.element[0].disabled,null!=t&&(e.disabled=t),this.originalLabel=this.isInput?this.element.val():this.element.html(),this.originalLabel&&(e.label=this.originalLabel),e},_create:function(){!this.option.showLabel&!this.options.icon&&(this.options.showLabel=!0),null==this.options.disabled&&(this.options.disabled=this.element[0].disabled||!1),this.hasTitle=!!this.element.attr("title"),this.options.label&&this.options.label!==this.originalLabel&&(this.isInput?this.element.val(this.options.label):this.element.html(this.options.label)),this._addClass("ui-button","ui-widget"),this._setOption("disabled",this.options.disabled),this._enhance(),this.element.is("a")&&this._on({keyup:function(e){e.keyCode===t.ui.keyCode.SPACE&&(e.preventDefault(),this.element[0].click?this.element[0].click():this.element.trigger("click"))}})},_enhance:function(){this.element.is("button")||this.element.attr("role","button"),this.options.icon&&(this._updateIcon("icon",this.options.icon),this._updateTooltip())},_updateTooltip:function(){this.title=this.element.attr("title"),this.options.showLabel||this.title||this.element.attr("title",this.options.label)},_updateIcon:function(e,i){var s="iconPosition"!==e,n=s?this.options.iconPosition:i,o="top"===n||"bottom"===n;this.icon?s&&this._removeClass(this.icon,null,this.options.icon):(this.icon=t("<span>"),this._addClass(this.icon,"ui-button-icon","ui-icon"),this.options.showLabel||this._addClass("ui-button-icon-only")),s&&this._addClass(this.icon,null,i),this._attachIcon(n),o?(this._addClass(this.icon,null,"ui-widget-icon-block"),this.iconSpace&&this.iconSpace.remove()):(this.iconSpace||(this.iconSpace=t("<span> </span>"),this._addClass(this.iconSpace,"ui-button-icon-space")),this._removeClass(this.icon,null,"ui-wiget-icon-block"),this._attachIconSpace(n))},_destroy:function(){this.element.removeAttr("role"),this.icon&&this.icon.remove(),this.iconSpace&&this.iconSpace.remove(),this.hasTitle||this.element.removeAttr("title")},_attachIconSpace:function(t){this.icon[/^(?:end|bottom)/.test(t)?"before":"after"](this.iconSpace)},_attachIcon:function(t){this.element[/^(?:end|bottom)/.test(t)?"append":"prepend"](this.icon)},_setOptions:function(t){var e=void 0===t.showLabel?this.options.showLabel:t.showLabel,i=void 0===t.icon?this.options.icon:t.icon;e||i||(t.showLabel=!0),this._super(t)},_setOption:function(t,e){"icon"===t&&(e?this._updateIcon(t,e):this.icon&&(this.icon.remove(),this.iconSpace&&this.iconSpace.remove())),"iconPosition"===t&&this._updateIcon(t,e),"showLabel"===t&&(this._toggleClass("ui-button-icon-only",null,!e),this._updateTooltip()),"label"===t&&(this.isInput?this.element.val(e):(this.element.html(e),this.icon&&(this._attachIcon(this.options.iconPosition),this._attachIconSpace(this.options.iconPosition)))),this._super(t,e),"disabled"===t&&(this._toggleClass(null,"ui-state-disabled",e),this.element[0].disabled=e,e&&this.element.blur())},refresh:function(){var t=this.element.is("input, button")?this.element[0].disabled:this.element.hasClass("ui-button-disabled");t!==this.options.disabled&&this._setOptions({disabled:t}),this._updateTooltip()}}),t.uiBackCompat!==!1&&(t.widget("ui.button",t.ui.button,{options:{text:!0,icons:{primary:null,secondary:null}},_create:function(){this.options.showLabel&&!this.options.text&&(this.options.showLabel=this.options.text),!this.options.showLabel&&this.options.text&&(this.options.text=this.options.showLabel),this.options.icon||!this.options.icons.primary&&!this.options.icons.secondary?this.options.icon&&(this.options.icons.primary=this.options.icon):this.options.icons.primary?this.options.icon=this.options.icons.primary:(this.options.icon=this.options.icons.secondary,this.options.iconPosition="end"),this._super()},_setOption:function(t,e){return"text"===t?(this._super("showLabel",e),void 0):("showLabel"===t&&(this.options.text=e),"icon"===t&&(this.options.icons.primary=e),"icons"===t&&(e.primary?(this._super("icon",e.primary),this._super("iconPosition","beginning")):e.secondary&&(this._super("icon",e.secondary),this._super("iconPosition","end"))),this._superApply(arguments),void 0)}}),t.fn.button=function(e){return function(){return!this.length||this.length&&"INPUT"!==this[0].tagName||this.length&&"INPUT"===this[0].tagName&&"checkbox"!==this.attr("type")&&"radio"!==this.attr("type")?e.apply(this,arguments):(t.ui.checkboxradio||t.error("Checkboxradio widget missing"),0===arguments.length?this.checkboxradio({icon:!1}):this.checkboxradio.apply(this,arguments))}}(t.fn.button),t.fn.buttonset=function(){return t.ui.controlgroup||t.error("Controlgroup widget missing"),"option"===arguments[0]&&"items"===arguments[1]&&arguments[2]?this.controlgroup.apply(this,[arguments[0],"items.button",arguments[2]]):"option"===arguments[0]&&"items"===arguments[1]?this.controlgroup.apply(this,[arguments[0],"items.button"]):("object"==typeof arguments[0]&&arguments[0].items&&(arguments[0].items={button:arguments[0].items}),this.controlgroup.apply(this,arguments))}),t.ui.button,t.extend(t.ui,{datepicker:{version:"1.12.1"}});var m;t.extend(s.prototype,{markerClassName:"hasDatepicker",maxRows:4,_widgetDatepicker:function(){return this.dpDiv},setDefaults:function(t){return a(this._defaults,t||{}),this},_attachDatepicker:function(e,i){var s,n,o;s=e.nodeName.toLowerCase(),n="div"===s||"span"===s,e.id||(this.uuid+=1,e.id="dp"+this.uuid),o=this._newInst(t(e),n),o.settings=t.extend({},i||{}),"input"===s?this._connectDatepicker(e,o):n&&this._inlineDatepicker(e,o)},_newInst:function(e,i){var s=e[0].id.replace(/([^A-Za-z0-9_\-])/g,"\\\\$1");return{id:s,input:e,selectedDay:0,selectedMonth:0,selectedYear:0,drawMonth:0,drawYear:0,inline:i,dpDiv:i?n(t("<div class='"+this._inlineClass+" ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>")):this.dpDiv}},_connectDatepicker:function(e,i){var s=t(e);i.append=t([]),i.trigger=t([]),s.hasClass(this.markerClassName)||(this._attachments(s,i),s.addClass(this.markerClassName).on("keydown",this._doKeyDown).on("keypress",this._doKeyPress).on("keyup",this._doKeyUp),this._autoSize(i),t.data(e,"datepicker",i),i.settings.disabled&&this._disableDatepicker(e))},_attachments:function(e,i){var s,n,o,a=this._get(i,"appendText"),r=this._get(i,"isRTL");i.append&&i.append.remove(),a&&(i.append=t("<span class='"+this._appendClass+"'>"+a+"</span>"),e[r?"before":"after"](i.append)),e.off("focus",this._showDatepicker),i.trigger&&i.trigger.remove(),s=this._get(i,"showOn"),("focus"===s||"both"===s)&&e.on("focus",this._showDatepicker),("button"===s||"both"===s)&&(n=this._get(i,"buttonText"),o=this._get(i,"buttonImage"),i.trigger=t(this._get(i,"buttonImageOnly")?t("<img/>").addClass(this._triggerClass).attr({src:o,alt:n,title:n}):t("<button type='button'></button>").addClass(this._triggerClass).html(o?t("<img/>").attr({src:o,alt:n,title:n}):n)),e[r?"before":"after"](i.trigger),i.trigger.on("click",function(){return t.datepicker._datepickerShowing&&t.datepicker._lastInput===e[0]?t.datepicker._hideDatepicker():t.datepicker._datepickerShowing&&t.datepicker._lastInput!==e[0]?(t.datepicker._hideDatepicker(),t.datepicker._showDatepicker(e[0])):t.datepicker._showDatepicker(e[0]),!1}))},_autoSize:function(t){if(this._get(t,"autoSize")&&!t.inline){var e,i,s,n,o=new Date(2009,11,20),a=this._get(t,"dateFormat");a.match(/[DM]/)&&(e=function(t){for(i=0,s=0,n=0;t.length>n;n++)t[n].length>i&&(i=t[n].length,s=n);return s},o.setMonth(e(this._get(t,a.match(/MM/)?"monthNames":"monthNamesShort"))),o.setDate(e(this._get(t,a.match(/DD/)?"dayNames":"dayNamesShort"))+20-o.getDay())),t.input.attr("size",this._formatDate(t,o).length)}},_inlineDatepicker:function(e,i){var s=t(e);s.hasClass(this.markerClassName)||(s.addClass(this.markerClassName).append(i.dpDiv),t.data(e,"datepicker",i),this._setDate(i,this._getDefaultDate(i),!0),this._updateDatepicker(i),this._updateAlternate(i),i.settings.disabled&&this._disableDatepicker(e),i.dpDiv.css("display","block"))},_dialogDatepicker:function(e,i,s,n,o){var r,h,l,c,u,d=this._dialogInst;return d||(this.uuid+=1,r="dp"+this.uuid,this._dialogInput=t("<input type='text' id='"+r+"' style='position: absolute; top: -100px; width: 0px;'/>"),this._dialogInput.on("keydown",this._doKeyDown),t("body").append(this._dialogInput),d=this._dialogInst=this._newInst(this._dialogInput,!1),d.settings={},t.data(this._dialogInput[0],"datepicker",d)),a(d.settings,n||{}),i=i&&i.constructor===Date?this._formatDate(d,i):i,this._dialogInput.val(i),this._pos=o?o.length?o:[o.pageX,o.pageY]:null,this._pos||(h=document.documentElement.clientWidth,l=document.documentElement.clientHeight,c=document.documentElement.scrollLeft||document.body.scrollLeft,u=document.documentElement.scrollTop||document.body.scrollTop,this._pos=[h/2-100+c,l/2-150+u]),this._dialogInput.css("left",this._pos[0]+20+"px").css("top",this._pos[1]+"px"),d.settings.onSelect=s,this._inDialog=!0,this.dpDiv.addClass(this._dialogClass),this._showDatepicker(this._dialogInput[0]),t.blockUI&&t.blockUI(this.dpDiv),t.data(this._dialogInput[0],"datepicker",d),this},_destroyDatepicker:function(e){var i,s=t(e),n=t.data(e,"datepicker");s.hasClass(this.markerClassName)&&(i=e.nodeName.toLowerCase(),t.removeData(e,"datepicker"),"input"===i?(n.append.remove(),n.trigger.remove(),s.removeClass(this.markerClassName).off("focus",this._showDatepicker).off("keydown",this._doKeyDown).off("keypress",this._doKeyPress).off("keyup",this._doKeyUp)):("div"===i||"span"===i)&&s.removeClass(this.markerClassName).empty(),m===n&&(m=null))},_enableDatepicker:function(e){var i,s,n=t(e),o=t.data(e,"datepicker");n.hasClass(this.markerClassName)&&(i=e.nodeName.toLowerCase(),"input"===i?(e.disabled=!1,o.trigger.filter("button").each(function(){this.disabled=!1}).end().filter("img").css({opacity:"1.0",cursor:""})):("div"===i||"span"===i)&&(s=n.children("."+this._inlineClass),s.children().removeClass("ui-state-disabled"),s.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled",!1)),this._disabledInputs=t.map(this._disabledInputs,function(t){return t===e?null:t}))},_disableDatepicker:function(e){var i,s,n=t(e),o=t.data(e,"datepicker");n.hasClass(this.markerClassName)&&(i=e.nodeName.toLowerCase(),"input"===i?(e.disabled=!0,o.trigger.filter("button").each(function(){this.disabled=!0}).end().filter("img").css({opacity:"0.5",cursor:"default"})):("div"===i||"span"===i)&&(s=n.children("."+this._inlineClass),s.children().addClass("ui-state-disabled"),s.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled",!0)),this._disabledInputs=t.map(this._disabledInputs,function(t){return t===e?null:t}),this._disabledInputs[this._disabledInputs.length]=e)},_isDisabledDatepicker:function(t){if(!t)return!1;for(var e=0;this._disabledInputs.length>e;e++)if(this._disabledInputs[e]===t)return!0;return!1},_getInst:function(e){try{return t.data(e,"datepicker")}catch(i){throw"Missing instance data for this datepicker"}},_optionDatepicker:function(e,i,s){var n,o,r,h,l=this._getInst(e);return 2===arguments.length&&"string"==typeof i?"defaults"===i?t.extend({},t.datepicker._defaults):l?"all"===i?t.extend({},l.settings):this._get(l,i):null:(n=i||{},"string"==typeof i&&(n={},n[i]=s),l&&(this._curInst===l&&this._hideDatepicker(),o=this._getDateDatepicker(e,!0),r=this._getMinMaxDate(l,"min"),h=this._getMinMaxDate(l,"max"),a(l.settings,n),null!==r&&void 0!==n.dateFormat&&void 0===n.minDate&&(l.settings.minDate=this._formatDate(l,r)),null!==h&&void 0!==n.dateFormat&&void 0===n.maxDate&&(l.settings.maxDate=this._formatDate(l,h)),"disabled"in n&&(n.disabled?this._disableDatepicker(e):this._enableDatepicker(e)),this._attachments(t(e),l),this._autoSize(l),this._setDate(l,o),this._updateAlternate(l),this._updateDatepicker(l)),void 0)},_changeDatepicker:function(t,e,i){this._optionDatepicker(t,e,i)},_refreshDatepicker:function(t){var e=this._getInst(t);e&&this._updateDatepicker(e)},_setDateDatepicker:function(t,e){var i=this._getInst(t);i&&(this._setDate(i,e),this._updateDatepicker(i),this._updateAlternate(i))},_getDateDatepicker:function(t,e){var i=this._getInst(t);return i&&!i.inline&&this._setDateFromField(i,e),i?this._getDate(i):null},_doKeyDown:function(e){var i,s,n,o=t.datepicker._getInst(e.target),a=!0,r=o.dpDiv.is(".ui-datepicker-rtl");if(o._keyEvent=!0,t.datepicker._datepickerShowing)switch(e.keyCode){case 9:t.datepicker._hideDatepicker(),a=!1;break;case 13:return n=t("td."+t.datepicker._dayOverClass+":not(."+t.datepicker._currentClass+")",o.dpDiv),n[0]&&t.datepicker._selectDay(e.target,o.selectedMonth,o.selectedYear,n[0]),i=t.datepicker._get(o,"onSelect"),i?(s=t.datepicker._formatDate(o),i.apply(o.input?o.input[0]:null,[s,o])):t.datepicker._hideDatepicker(),!1;case 27:t.datepicker._hideDatepicker();break;case 33:t.datepicker._adjustDate(e.target,e.ctrlKey?-t.datepicker._get(o,"stepBigMonths"):-t.datepicker._get(o,"stepMonths"),"M");break;case 34:t.datepicker._adjustDate(e.target,e.ctrlKey?+t.datepicker._get(o,"stepBigMonths"):+t.datepicker._get(o,"stepMonths"),"M");break;case 35:(e.ctrlKey||e.metaKey)&&t.datepicker._clearDate(e.target),a=e.ctrlKey||e.metaKey;break;case 36:(e.ctrlKey||e.metaKey)&&t.datepicker._gotoToday(e.target),a=e.ctrlKey||e.metaKey;break;case 37:(e.ctrlKey||e.metaKey)&&t.datepicker._adjustDate(e.target,r?1:-1,"D"),a=e.ctrlKey||e.metaKey,e.originalEvent.altKey&&t.datepicker._adjustDate(e.target,e.ctrlKey?-t.datepicker._get(o,"stepBigMonths"):-t.datepicker._get(o,"stepMonths"),"M");break;case 38:(e.ctrlKey||e.metaKey)&&t.datepicker._adjustDate(e.target,-7,"D"),a=e.ctrlKey||e.metaKey;break;case 39:(e.ctrlKey||e.metaKey)&&t.datepicker._adjustDate(e.target,r?-1:1,"D"),a=e.ctrlKey||e.metaKey,e.originalEvent.altKey&&t.datepicker._adjustDate(e.target,e.ctrlKey?+t.datepicker._get(o,"stepBigMonths"):+t.datepicker._get(o,"stepMonths"),"M");break;case 40:(e.ctrlKey||e.metaKey)&&t.datepicker._adjustDate(e.target,7,"D"),a=e.ctrlKey||e.metaKey;break;default:a=!1}else 36===e.keyCode&&e.ctrlKey?t.datepicker._showDatepicker(this):a=!1;a&&(e.preventDefault(),e.stopPropagation())},_doKeyPress:function(e){var i,s,n=t.datepicker._getInst(e.target);return t.datepicker._get(n,"constrainInput")?(i=t.datepicker._possibleChars(t.datepicker._get(n,"dateFormat")),s=String.fromCharCode(null==e.charCode?e.keyCode:e.charCode),e.ctrlKey||e.metaKey||" ">s||!i||i.indexOf(s)>-1):void 0},_doKeyUp:function(e){var i,s=t.datepicker._getInst(e.target);if(s.input.val()!==s.lastVal)try{i=t.datepicker.parseDate(t.datepicker._get(s,"dateFormat"),s.input?s.input.val():null,t.datepicker._getFormatConfig(s)),i&&(t.datepicker._setDateFromField(s),t.datepicker._updateAlternate(s),t.datepicker._updateDatepicker(s))}catch(n){}return!0},_showDatepicker:function(e){if(e=e.target||e,"input"!==e.nodeName.toLowerCase()&&(e=t("input",e.parentNode)[0]),!t.datepicker._isDisabledDatepicker(e)&&t.datepicker._lastInput!==e){var s,n,o,r,h,l,c;s=t.datepicker._getInst(e),t.datepicker._curInst&&t.datepicker._curInst!==s&&(t.datepicker._curInst.dpDiv.stop(!0,!0),s&&t.datepicker._datepickerShowing&&t.datepicker._hideDatepicker(t.datepicker._curInst.input[0])),n=t.datepicker._get(s,"beforeShow"),o=n?n.apply(e,[e,s]):{},o!==!1&&(a(s.settings,o),s.lastVal=null,t.datepicker._lastInput=e,t.datepicker._setDateFromField(s),t.datepicker._inDialog&&(e.value=""),t.datepicker._pos||(t.datepicker._pos=t.datepicker._findPos(e),t.datepicker._pos[1]+=e.offsetHeight),r=!1,t(e).parents().each(function(){return r|="fixed"===t(this).css("position"),!r}),h={left:t.datepicker._pos[0],top:t.datepicker._pos[1]},t.datepicker._pos=null,s.dpDiv.empty(),s.dpDiv.css({position:"absolute",display:"block",top:"-1000px"}),t.datepicker._updateDatepicker(s),h=t.datepicker._checkOffset(s,h,r),s.dpDiv.css({position:t.datepicker._inDialog&&t.blockUI?"static":r?"fixed":"absolute",display:"none",left:h.left+"px",top:h.top+"px"}),s.inline||(l=t.datepicker._get(s,"showAnim"),c=t.datepicker._get(s,"duration"),s.dpDiv.css("z-index",i(t(e))+1),t.datepicker._datepickerShowing=!0,t.effects&&t.effects.effect[l]?s.dpDiv.show(l,t.datepicker._get(s,"showOptions"),c):s.dpDiv[l||"show"](l?c:null),t.datepicker._shouldFocusInput(s)&&s.input.trigger("focus"),t.datepicker._curInst=s))
13}},_updateDatepicker:function(e){this.maxRows=4,m=e,e.dpDiv.empty().append(this._generateHTML(e)),this._attachHandlers(e);var i,s=this._getNumberOfMonths(e),n=s[1],a=17,r=e.dpDiv.find("."+this._dayOverClass+" a");r.length>0&&o.apply(r.get(0)),e.dpDiv.removeClass("ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4").width(""),n>1&&e.dpDiv.addClass("ui-datepicker-multi-"+n).css("width",a*n+"em"),e.dpDiv[(1!==s[0]||1!==s[1]?"add":"remove")+"Class"]("ui-datepicker-multi"),e.dpDiv[(this._get(e,"isRTL")?"add":"remove")+"Class"]("ui-datepicker-rtl"),e===t.datepicker._curInst&&t.datepicker._datepickerShowing&&t.datepicker._shouldFocusInput(e)&&e.input.trigger("focus"),e.yearshtml&&(i=e.yearshtml,setTimeout(function(){i===e.yearshtml&&e.yearshtml&&e.dpDiv.find("select.ui-datepicker-year:first").replaceWith(e.yearshtml),i=e.yearshtml=null},0))},_shouldFocusInput:function(t){return t.input&&t.input.is(":visible")&&!t.input.is(":disabled")&&!t.input.is(":focus")},_checkOffset:function(e,i,s){var n=e.dpDiv.outerWidth(),o=e.dpDiv.outerHeight(),a=e.input?e.input.outerWidth():0,r=e.input?e.input.outerHeight():0,h=document.documentElement.clientWidth+(s?0:t(document).scrollLeft()),l=document.documentElement.clientHeight+(s?0:t(document).scrollTop());return i.left-=this._get(e,"isRTL")?n-a:0,i.left-=s&&i.left===e.input.offset().left?t(document).scrollLeft():0,i.top-=s&&i.top===e.input.offset().top+r?t(document).scrollTop():0,i.left-=Math.min(i.left,i.left+n>h&&h>n?Math.abs(i.left+n-h):0),i.top-=Math.min(i.top,i.top+o>l&&l>o?Math.abs(o+r):0),i},_findPos:function(e){for(var i,s=this._getInst(e),n=this._get(s,"isRTL");e&&("hidden"===e.type||1!==e.nodeType||t.expr.filters.hidden(e));)e=e[n?"previousSibling":"nextSibling"];return i=t(e).offset(),[i.left,i.top]},_hideDatepicker:function(e){var i,s,n,o,a=this._curInst;!a||e&&a!==t.data(e,"datepicker")||this._datepickerShowing&&(i=this._get(a,"showAnim"),s=this._get(a,"duration"),n=function(){t.datepicker._tidyDialog(a)},t.effects&&(t.effects.effect[i]||t.effects[i])?a.dpDiv.hide(i,t.datepicker._get(a,"showOptions"),s,n):a.dpDiv["slideDown"===i?"slideUp":"fadeIn"===i?"fadeOut":"hide"](i?s:null,n),i||n(),this._datepickerShowing=!1,o=this._get(a,"onClose"),o&&o.apply(a.input?a.input[0]:null,[a.input?a.input.val():"",a]),this._lastInput=null,this._inDialog&&(this._dialogInput.css({position:"absolute",left:"0",top:"-100px"}),t.blockUI&&(t.unblockUI(),t("body").append(this.dpDiv))),this._inDialog=!1)},_tidyDialog:function(t){t.dpDiv.removeClass(this._dialogClass).off(".ui-datepicker-calendar")},_checkExternalClick:function(e){if(t.datepicker._curInst){var i=t(e.target),s=t.datepicker._getInst(i[0]);(i[0].id!==t.datepicker._mainDivId&&0===i.parents("#"+t.datepicker._mainDivId).length&&!i.hasClass(t.datepicker.markerClassName)&&!i.closest("."+t.datepicker._triggerClass).length&&t.datepicker._datepickerShowing&&(!t.datepicker._inDialog||!t.blockUI)||i.hasClass(t.datepicker.markerClassName)&&t.datepicker._curInst!==s)&&t.datepicker._hideDatepicker()}},_adjustDate:function(e,i,s){var n=t(e),o=this._getInst(n[0]);this._isDisabledDatepicker(n[0])||(this._adjustInstDate(o,i+("M"===s?this._get(o,"showCurrentAtPos"):0),s),this._updateDatepicker(o))},_gotoToday:function(e){var i,s=t(e),n=this._getInst(s[0]);this._get(n,"gotoCurrent")&&n.currentDay?(n.selectedDay=n.currentDay,n.drawMonth=n.selectedMonth=n.currentMonth,n.drawYear=n.selectedYear=n.currentYear):(i=new Date,n.selectedDay=i.getDate(),n.drawMonth=n.selectedMonth=i.getMonth(),n.drawYear=n.selectedYear=i.getFullYear()),this._notifyChange(n),this._adjustDate(s)},_selectMonthYear:function(e,i,s){var n=t(e),o=this._getInst(n[0]);o["selected"+("M"===s?"Month":"Year")]=o["draw"+("M"===s?"Month":"Year")]=parseInt(i.options[i.selectedIndex].value,10),this._notifyChange(o),this._adjustDate(n)},_selectDay:function(e,i,s,n){var o,a=t(e);t(n).hasClass(this._unselectableClass)||this._isDisabledDatepicker(a[0])||(o=this._getInst(a[0]),o.selectedDay=o.currentDay=t("a",n).html(),o.selectedMonth=o.currentMonth=i,o.selectedYear=o.currentYear=s,this._selectDate(e,this._formatDate(o,o.currentDay,o.currentMonth,o.currentYear)))},_clearDate:function(e){var i=t(e);this._selectDate(i,"")},_selectDate:function(e,i){var s,n=t(e),o=this._getInst(n[0]);i=null!=i?i:this._formatDate(o),o.input&&o.input.val(i),this._updateAlternate(o),s=this._get(o,"onSelect"),s?s.apply(o.input?o.input[0]:null,[
vendor: 6,249 bytes, line 13
13i,o]):o.input&&o.input.trigger("change"),o.inline?this._updateDatepicker(o):(this._hideDatepicker(),this._lastInput=o.input[0],"object"!=typeof o.input[0]&&o.input.trigger("focus"),this._lastInput=null)},_updateAlternate:function(e){var i,s,n,o=this._get(e,"altField");o&&(i=this._get(e,"altFormat")||this._get(e,"dateFormat"),s=this._getDate(e),n=this.formatDate(i,s,this._getFormatConfig(e)),t(o).val(n))},noWeekends:function(t){var e=t.getDay();return[e>0&&6>e,""]},iso8601Week:function(t){var e,i=new Date(t.getTime());return i.setDate(i.getDate()+4-(i.getDay()||7)),e=i.getTime(),i.setMonth(0),i.setDate(1),Math.floor(Math.round((e-i)/864e5)/7)+1},parseDate:function(e,i,s){if(null==e||null==i)throw"Invalid arguments";if(i="object"==typeof i?""+i:i+"",""===i)return null;var n,o,a,r,h=0,l=(s?s.shortYearCutoff:null)||this._defaults.shortYearCutoff,c="string"!=typeof l?l:(new Date).getFullYear()%100+parseInt(l,10),u=(s?s.dayNamesShort:null)||this._defaults.dayNamesShort,d=(s?s.dayNames:null)||this._defaults.dayNames,p=(s?s.monthNamesShort:null)||this._defaults.monthNamesShort,f=(s?s.monthNames:null)||this._defaults.monthNames,g=-1,m=-1,_=-1,v=-1,b=!1,y=function(t){var i=e.length>n+1&&e.charAt(n+1)===t;return i&&n++,i},w=function(t){var e=y(t),s="@"===t?14:"!"===t?20:"y"===t&&e?4:"o"===t?3:2,n="y"===t?s:1,o=RegExp("^\\d{"+n+","+s+"}"),a=i.substring(h).match(o);if(!a)throw"Missing number at position "+h;return h+=a[0].length,parseInt(a[0],10)},k=function(e,s,n){var o=-1,a=t.map(y(e)?n:s,function(t,e){return[[e,t]]}).sort(function(t,e){return-(t[1].length-e[1].length)});if(t.each(a,function(t,e){var s=e[1];return i.substr(h,s.length).toLowerCase()===s.toLowerCase()?(o=e[0],h+=s.length,!1):void 0}),-1!==o)return o+1;throw"Unknown name at position "+h},x=function(){if(i.charAt(h)!==e.charAt(n))throw"Unexpected literal at position "+h;h++};for(n=0;e.length>n;n++)if(b)"'"!==e.charAt(n)||y("'")?x():b=!1;else switch(e.charAt(n)){case"d":_=w("d");break;case"D":k("D",u,d);break;case"o":v=w("o");break;case"m":m=w("m");break;case"M":m=k("M",p,f);break;case"y":g=w("y");break;case"@":r=new Date(w("@")),g=r.getFullYear(),m=r.getMonth()+1,_=r.getDate();break;case"!":r=new Date((w("!")-this._ticksTo1970)/1e4),g=r.getFullYear(),m=r.getMonth()+1,_=r.getDate();break;case"'":y("'")?x():b=!0;break;default:x()}if(i.length>h&&(a=i.substr(h),!/^\s+/.test(a)))throw"Extra/unparsed characters found in date: "+a;if(-1===g?g=(new Date).getFullYear():100>g&&(g+=(new Date).getFullYear()-(new Date).getFullYear()%100+(c>=g?0:-100)),v>-1)for(m=1,_=v;;){if(o=this._getDaysInMonth(g,m-1),o>=_)break;m++,_-=o}if(r=this._daylightSavingAdjust(new Date(g,m-1,_)),r.getFullYear()!==g||r.getMonth()+1!==m||r.getDate()!==_)throw"Invalid date";return r},ATOM:"yy-mm-dd",COOKIE:"D, dd M yy",ISO_8601:"yy-mm-dd",RFC_822:"D, d M y",RFC_850:"DD, dd-M-y",RFC_1036:"D, d M y",RFC_1123:"D, d M yy",RFC_2822:"D, d M yy",RSS:"D, d M y",TICKS:"!",TIMESTAMP:"@",W3C:"yy-mm-dd",_ticksTo1970:1e7*60*60*24*(718685+Math.floor(492.5)-Math.floor(19.7)+Math.floor(4.925)),formatDate:function(t,e,i){if(!e)return"";var s,n=(i?i.dayNamesShort:null)||this._defaults.dayNamesShort,o=(i?i.dayNames:null)||this._defaults.dayNames,a=(i?i.monthNamesShort:null)||this._defaults.monthNamesShort,r=(i?i.monthNames:null)||this._defaults.monthNames,h=function(e){var i=t.length>s+1&&t.charAt(s+1)===e;return i&&s++,i},l=function(t,e,i){var s=""+e;if(h(t))for(;i>s.length;)s="0"+s;return s},c=function(t,e,i,s){return h(t)?s[e]:i[e]},u="",d=!1;if(e)for(s=0;t.length>s;s++)if(d)"'"!==t.charAt(s)||h("'")?u+=t.charAt(s):d=!1;else switch(t.charAt(s)){case"d":u+=l("d",e.getDate(),2);break;case"D":u+=c("D",e.getDay(),n,o);break;case"o":u+=l("o",Math.round((new Date(e.getFullYear(),e.getMonth(),e.getDate()).getTime()-new Date(e.getFullYear(),0,0).getTime())/864e5),3);break;case"m":u+=l("m",e.getMonth()+1,2);break;case"M":u+=c("M",e.getMonth(),a,r);break;case"y":u+=h("y")?e.getFullYear():(10>e.getFullYear()%100?"0":"")+e.getFullYear()%100;break;case"@":u+=e.getTime();break;case"!":u+=1e4*e.getTime()+this._ticksTo1970;break;case"'":h("'")?u+="'":d=!0;break;default:u+=t.charAt(s)}return u},_possibleChars:function(t){var e,i="",s=!1,n=function(i){var s=t.length>e+1&&t.charAt(e+1)===i;return s&&e++,s};for(e=0;t.length>e;e++)if(s)"'"!==t.charAt(e)||n("'")?i+=t.charAt(e):s=!1;else switch(t.charAt(e)){case"d":case"m":case"y":case"@":i+="0123456789";break;case"D":case"M":return null;case"'":n("'")?i+="'":s=!0;break;default:i+=t.charAt(e)}return i},_get:function(t,e){return void 0!==t.settings[e]?t.settings[e]:this._defaults[e]},_setDateFromField:function(t,e){if(t.input.val()!==t.lastVal){var i=this._get(t,"dateFormat"),s=t.lastVal=t.input?t.input.val():null,n=this._getDefaultDate(t),o=n,a=this._getFormatConfig(t);try{o=this.parseDate(i,s,a)||n}catch(r){s=e?"":s}t.selectedDay=o.getDate(),t.drawMonth=t.selectedMonth=o.getMonth(),t.drawYear=t.selectedYear=o.getFullYear(),t.currentDay=s?o.getDate():0,t.currentMonth=s?o.getMonth():0,t.currentYear=s?o.getFullYear():0,this._adjustInstDate(t)}},_getDefaultDate:function(t){return this._restrictMinMax(t,this._determineDate(t,this._get(t,"defaultDate"),new Date))},_determineDate:function(e,i,s){var n=function(t){var e=new Date;return e.setDate(e.getDate()+t),e},o=function(i){try{return t.datepicker.parseDate(t.datepicker._get(e,"dateFormat"),i,t.datepicker._getFormatConfig(e))}catch(s){}for(var n=(i.toLowerCase().match(/^c/)?t.datepicker._getDate(e):null)||new Date,o=n.getFullYear(),a=n.getMonth(),r=n.getDate(),h=/([+\-]?[0-9]+)\s*(d|D|w|W|m|M|y|Y)?/g,l=h.exec(i);l;){switch(l[2]||"d"){case"d":case"D":r+=parseInt(l[1],10);break;case"w":case"W":r+=7*parseInt(l[1],10);break;case"m":case"M":a+=parseInt(l[1],10),r=Math.min(r,t.datepicker._getDaysInMonth(o,a));break;case"y":case"Y":o+=parseInt(l[1],10),r=Math.min(r,t.datepicker._getDaysInMonth(o,a))}l=h.exec(i)}return new Date(o,a,r)},a=null==i||""===i?s:"string"==typeof i?o(i):"number"==typeof i?isNaN(i)?s:n(i):new Date(i.getTime());return a=a&&"Invalid Date"==""+a?s:a,a&&(a.setHours(0),a.setMinutes(0),a.setSeconds(0),a.setMilliseconds(0)),this._daylightSavingAdjust(a)},_daylightSavingAdjust:function(t){return t?(t.setHours(t.getHours()>12?t.getHours()+2:0),t):null}
vendor: 24,689 bytes, lines 13-14
13,_setDate:function(t,e,i){var s=!e,n=t.selectedMonth,o=t.selectedYear,a=this._restrictMinMax(t,this._determineDate(t,e,new Date));t.selectedDay=t.currentDay=a.getDate(),t.drawMonth=t.selectedMonth=t.currentMonth=a.getMonth(),t.drawYear=t.selectedYear=t.currentYear=a.getFullYear(),n===t.selectedMonth&&o===t.selectedYear||i||this._notifyChange(t),this._adjustInstDate(t),t.input&&t.input.val(s?"":this._formatDate(t))},_getDate:function(t){var e=!t.currentYear||t.input&&""===t.input.val()?null:this._daylightSavingAdjust(new Date(t.currentYear,t.currentMonth,t.currentDay));return e},_attachHandlers:function(e){var i=this._get(e,"stepMonths"),s="#"+e.id.replace(/\\\\/g,"\\");e.dpDiv.find("[data-handler]").map(function(){var e={prev:function(){t.datepicker._adjustDate(s,-i,"M")},next:function(){t.datepicker._adjustDate(s,+i,"M")},hide:function(){t.datepicker._hideDatepicker()},today:function(){t.datepicker._gotoToday(s)},selectDay:function(){return t.datepicker._selectDay(s,+this.getAttribute("data-month"),+this.getAttribute("data-year"),this),!1},selectMonth:function(){return t.datepicker._selectMonthYear(s,this,"M"),!1},selectYear:function(){return t.datepicker._selectMonthYear(s,this,"Y"),!1}};t(this).on(this.getAttribute("data-event"),e[this.getAttribute("data-handler")])})},_generateHTML:function(t){var e,i,s,n,o,a,r,h,l,c,u,d,p,f,g,m,_,v,b,y,w,k,x,C,D,I,T,P,M,S,H,z,O,A,N,W,E,F,L,R=new Date,B=this._daylightSavingAdjust(new Date(R.getFullYear(),R.getMonth(),R.getDate())),Y=this._get(t,"isRTL"),j=this._get(t,"showButtonPanel"),q=this._get(t,"hideIfNoPrevNext"),K=this._get(t,"navigationAsDateFormat"),U=this._getNumberOfMonths(t),V=this._get(t,"showCurrentAtPos"),$=this._get(t,"stepMonths"),X=1!==U[0]||1!==U[1],G=this._daylightSavingAdjust(t.currentDay?new Date(t.currentYear,t.currentMonth,t.currentDay):new Date(9999,9,9)),Q=this._getMinMaxDate(t,"min"),J=this._getMinMaxDate(t,"max"),Z=t.drawMonth-V,te=t.drawYear;if(0>Z&&(Z+=12,te--),J)for(e=this._daylightSavingAdjust(new Date(J.getFullYear(),J.getMonth()-U[0]*U[1]+1,J.getDate())),e=Q&&Q>e?Q:e;this._daylightSavingAdjust(new Date(te,Z,1))>e;)Z--,0>Z&&(Z=11,te--);for(t.drawMonth=Z,t.drawYear=te,i=this._get(t,"prevText"),i=K?this.formatDate(i,this._daylightSavingAdjust(new Date(te,Z-$,1)),this._getFormatConfig(t)):i,s=this._canAdjustMonth(t,-1,te,Z)?"<a class='ui-datepicker-prev ui-corner-all' data-handler='prev' data-event='click' title='"+i+"'><span class='ui-icon ui-icon-circle-triangle-"+(Y?"e":"w")+"'>"+i+"</span></a>":q?"":"<a class='ui-datepicker-prev ui-corner-all ui-state-disabled' title='"+i+"'><span class='ui-icon ui-icon-circle-triangle-"+(Y?"e":"w")+"'>"+i+"</span></a>",n=this._get(t,"nextText"),n=K?this.formatDate(n,this._daylightSavingAdjust(new Date(te,Z+$,1)),this._getFormatConfig(t)):n,o=this._canAdjustMonth(t,1,te,Z)?"<a class='ui-datepicker-next ui-corner-all' data-handler='next' data-event='click' title='"+n+"'><span class='ui-icon ui-icon-circle-triangle-"+(Y?"w":"e")+"'>"+n+"</span></a>":q?"":"<a class='ui-datepicker-next ui-corner-all ui-state-disabled' title='"+n+"'><span class='ui-icon ui-icon-circle-triangle-"+(Y?"w":"e")+"'>"+n+"</span></a>",a=this._get(t,"currentText"),r=this._get(t,"gotoCurrent")&&t.currentDay?G:B,a=K?this.formatDate(a,r,this._getFormatConfig(t)):a,h=t.inline?"":"<button type='button' class='ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all' data-handler='hide' data-event='click'>"+this._get(t,"closeText")+"</button>",l=j?"<div class='ui-datepicker-buttonpane ui-widget-content'>"+(Y?h:"")+(this._isInRange(t,r)?"<button type='button' class='ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all' data-handler='today' data-event='click'>"+a+"</button>":"")+(Y?"":h)+"</div>":"",c=parseInt(this._get(t,"firstDay"),10),c=isNaN(c)?0:c,u=this._get(t,"showWeek"),d=this._get(t,"dayNames"),p=this._get(t,"dayNamesMin"),f=this._get(t,"monthNames"),g=this._get(t,"monthNamesShort"),m=this._get(t,"beforeShowDay"),_=this._get(t,"showOtherMonths"),v=this._get(t,"selectOtherMonths"),b=this._getDefaultDate(t),y="",k=0;U[0]>k;k++){for(x="",this.maxRows=4,C=0;U[1]>C;C++){if(D=this._daylightSavingAdjust(new Date(te,Z,t.selectedDay)),I=" ui-corner-all",T="",X){if(T+="<div class='ui-datepicker-group",U[1]>1)switch(C){case 0:T+=" ui-datepicker-group-first",I=" ui-corner-"+(Y?"right":"left");break;case U[1]-1:T+=" ui-datepicker-group-last",I=" ui-corner-"+(Y?"left":"right");break;default:T+=" ui-datepicker-group-middle",I=""}T+="'>"}for(T+="<div class='ui-datepicker-header ui-widget-header ui-helper-clearfix"+I+"'>"+(/all|left/.test(I)&&0===k?Y?o:s:"")+(/all|right/.test(I)&&0===k?Y?s:o:"")+this._generateMonthYearHeader(t,Z,te,Q,J,k>0||C>0,f,g)+"</div><table class='ui-datepicker-calendar'><thead>"+"<tr>",P=u?"<th class='ui-datepicker-week-col'>"+this._get(t,"weekHeader")+"</th>":"",w=0;7>w;w++)M=(w+c)%7,P+="<th scope='col'"+((w+c+6)%7>=5?" class='ui-datepicker-week-end'":"")+">"+"<span title='"+d[M]+"'>"+p[M]+"</span></th>";for(T+=P+"</tr></thead><tbody>",S=this._getDaysInMonth(te,Z),te===t.selectedYear&&Z===t.selectedMonth&&(t.selectedDay=Math.min(t.selectedDay,S)),H=(this._getFirstDayOfMonth(te,Z)-c+7)%7,z=Math.ceil((H+S)/7),O=X?this.maxRows>z?this.maxRows:z:z,this.maxRows=O,A=this._daylightSavingAdjust(new Date(te,Z,1-H)),N=0;O>N;N++){for(T+="<tr>",W=u?"<td class='ui-datepicker-week-col'>"+this._get(t,"calculateWeek")(A)+"</td>":"",w=0;7>w;w++)E=m?m.apply(t.input?t.input[0]:null,[A]):[!0,""],F=A.getMonth()!==Z,L=F&&!v||!E[0]||Q&&Q>A||J&&A>J,W+="<td class='"+((w+c+6)%7>=5?" ui-datepicker-week-end":"")+(F?" ui-datepicker-other-month":"")+(A.getTime()===D.getTime()&&Z===t.selectedMonth&&t._keyEvent||b.getTime()===A.getTime()&&b.getTime()===D.getTime()?" "+this._dayOverClass:"")+(L?" "+this._unselectableClass+" ui-state-disabled":"")+(F&&!_?"":" "+E[1]+(A.getTime()===G.getTime()?" "+this._currentClass:"")+(A.getTime()===B.getTime()?" ui-datepicker-today":""))+"'"+(F&&!_||!E[2]?"":" title='"+E[2].replace(/'/g,"&#39;")+"'")+(L?"":" data-handler='selectDay' data-event='click' data-month='"+A.getMonth()+"' data-year='"+A.getFullYear()+"'")+">"+(F&&!_?"&#xa0;":L?"<span class='ui-state-default'>"+A.getDate()+"</span>":"<a class='ui-state-default"+(A.getTime()===B.getTime()?" ui-state-highlight":"")+(A.getTime()===G.getTime()?" ui-state-active":"")+(F?" ui-priority-secondary":"")+"' href='#'>"+A.getDate()+"</a>")+"</td>",A.setDate(A.getDate()+1),A=this._daylightSavingAdjust(A);T+=W+"</tr>"}Z++,Z>11&&(Z=0,te++),T+="</tbody></table>"+(X?"</div>"+(U[0]>0&&C===U[1]-1?"<div class='ui-datepicker-row-break'></div>":""):""),x+=T}y+=x}return y+=l,t._keyEvent=!1,y},_generateMonthYearHeader:function(t,e,i,s,n,o,a,r){var h,l,c,u,d,p,f,g,m=this._get(t,"changeMonth"),_=this._get(t,"changeYear"),v=this._get(t,"showMonthAfterYear"),b="<div class='ui-datepicker-title'>",y="";if(o||!m)y+="<span class='ui-datepicker-month'>"+a[e]+"</span>";else{for(h=s&&s.getFullYear()===i,l=n&&n.getFullYear()===i,y+="<select class='ui-datepicker-month' data-handler='selectMonth' data-event='change'>",c=0;12>c;c++)(!h||c>=s.getMonth())&&(!l||n.getMonth()>=c)&&(y+="<option value='"+c+"'"+(c===e?" selected='selected'":"")+">"+r[c]+"</option>");y+="</select>"}if(v||(b+=y+(!o&&m&&_?"":"&#xa0;")),!t.yearshtml)if(t.yearshtml="",o||!_)b+="<span class='ui-datepicker-year'>"+i+"</span>";else{for(u=this._get(t,"yearRange").split(":"),d=(new Date).getFullYear(),p=function(t){var e=t.match(/c[+\-].*/)?i+parseInt(t.substring(1),10):t.match(/[+\-].*/)?d+parseInt(t,10):parseInt(t,10);return isNaN(e)?d:e},f=p(u[0]),g=Math.max(f,p(u[1]||"")),f=s?Math.max(f,s.getFullYear()):f,g=n?Math.min(g,n.getFullYear()):g,t.yearshtml+="<select class='ui-datepicker-year' data-handler='selectYear' data-event='change'>";g>=f;f++)t.yearshtml+="<option value='"+f+"'"+(f===i?" selected='selected'":"")+">"+f+"</option>";t.yearshtml+="</select>",b+=t.yearshtml,t.yearshtml=null}return b+=this._get(t,"yearSuffix"),v&&(b+=(!o&&m&&_?"":"&#xa0;")+y),b+="</div>"},_adjustInstDate:function(t,e,i){var s=t.selectedYear+("Y"===i?e:0),n=t.selectedMonth+("M"===i?e:0),o=Math.min(t.selectedDay,this._getDaysInMonth(s,n))+("D"===i?e:0),a=this._restrictMinMax(t,this._daylightSavingAdjust(new Date(s,n,o)));t.selectedDay=a.getDate(),t.drawMonth=t.selectedMonth=a.getMonth(),t.drawYear=t.selectedYear=a.getFullYear(),("M"===i||"Y"===i)&&this._notifyChange(t)},_restrictMinMax:function(t,e){var i=this._getMinMaxDate(t,"min"),s=this._getMinMaxDate(t,"max"),n=i&&i>e?i:e;return s&&n>s?s:n},_notifyChange:function(t){var e=this._get(t,"onChangeMonthYear");e&&e.apply(t.input?t.input[0]:null,[t.selectedYear,t.selectedMonth+1,t])},_getNumberOfMonths:function(t){var e=this._get(t,"numberOfMonths");return null==e?[1,1]:"number"==typeof e?[1,e]:e},_getMinMaxDate:function(t,e){return this._determineDate(t,this._get(t,e+"Date"),null)},_getDaysInMonth:function(t,e){return 32-this._daylightSavingAdjust(new Date(t,e,32)).getDate()},_getFirstDayOfMonth:function(t,e){return new Date(t,e,1).getDay()},_canAdjustMonth:function(t,e,i,s){var n=this._getNumberOfMonths(t),o=this._daylightSavingAdjust(new Date(i,s+(0>e?e:n[0]*n[1]),1));return 0>e&&o.setDate(this._getDaysInMonth(o.getFullYear(),o.getMonth())),this._isInRange(t,o)},_isInRange:function(t,e){var i,s,n=this._getMinMaxDate(t,"min"),o=this._getMinMaxDate(t,"max"),a=null,r=null,h=this._get(t,"yearRange");return h&&(i=h.split(":"),s=(new Date).getFullYear(),a=parseInt(i[0],10),r=parseInt(i[1],10),i[0].match(/[+\-].*/)&&(a+=s),i[1].match(/[+\-].*/)&&(r+=s)),(!n||e.getTime()>=n.getTime())&&(!o||e.getTime()<=o.getTime())&&(!a||e.getFullYear()>=a)&&(!r||r>=e.getFullYear())},_getFormatConfig:function(t){var e=this._get(t,"shortYearCutoff");return e="string"!=typeof e?e:(new Date).getFullYear()%100+parseInt(e,10),{shortYearCutoff:e,dayNamesShort:this._get(t,"dayNamesShort"),dayNames:this._get(t,"dayNames"),monthNamesShort:this._get(t,"monthNamesShort"),monthNames:this._get(t,"monthNames")}},_formatDate:function(t,e,i,s){e||(t.currentDay=t.selectedDay,t.currentMonth=t.selectedMonth,t.currentYear=t.selectedYear);var n=e?"object"==typeof e?e:this._daylightSavingAdjust(new Date(s,i,e)):this._daylightSavingAdjust(new Date(t.currentYear,t.currentMonth,t.currentDay));return this.formatDate(this._get(t,"dateFormat"),n,this._getFormatConfig(t))}}),t.fn.datepicker=function(e){if(!this.length)return this;t.datepicker.initialized||(t(document).on("mousedown",t.datepicker._checkExternalClick),t.datepicker.initialized=!0),0===t("#"+t.datepicker._mainDivId).length&&t("body").append(t.datepicker.dpDiv);var i=Array.prototype.slice.call(arguments,1);return"string"!=typeof e||"isDisabled"!==e&&"getDate"!==e&&"widget"!==e?"option"===e&&2===arguments.length&&"string"==typeof arguments[1]?t.datepicker["_"+e+"Datepicker"].apply(t.datepicker,[this[0]].concat(i)):this.each(function(){"string"==typeof e?t.datepicker["_"+e+"Datepicker"].apply(t.datepicker,[this].concat(i)):t.datepicker._attachDatepicker(this,e)}):t.datepicker["_"+e+"Datepicker"].apply(t.datepicker,[this[0]].concat(i))},t.datepicker=new s,t.datepicker.initialized=!1,t.datepicker.uuid=(new Date).getTime(),t.datepicker.version="1.12.1",t.datepicker,t.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase());var _=!1;t(document).on("mouseup",function(){_=!1}),t.widget("ui.mouse",{version:"1.12.1",options:{cancel:"input, textarea, button, select, option",distance:1,delay:0},_mouseInit:function(){var e=this;this.element.on("mousedown."+this.widgetName,function(t){return e._mouseDown(t)}).on("click."+this.widgetName,function(i){return!0===t.data(i.target,e.widgetName+".preventClickEvent")?(t.removeData(i.target,e.widgetName+".preventClickEvent"),i.stopImmediatePropagation(),!1):void 0}),this.started=!1},_mouseDestroy:function(){this.element.off("."+this.widgetName),this._mouseMoveDelegate&&this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(e){if(!_){this._mouseMoved=!1,this._mouseStarted&&this._mouseUp(e),this._mouseDownEvent=e;var i=this,s=1===e.which,n="string"==typeof this.options.cancel&&e.target.nodeName?t(e.target).closest(this.options.cancel).length:!1;return s&&!n&&this._mouseCapture(e)?(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){i.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(e)!==!1,!this._mouseStarted)?(e.preventDefault(),!0):(!0===t.data(e.target,this.widgetName+".preventClickEvent")&&t.removeData(e.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(t){return i._mouseMove(t)},this._mouseUpDelegate=function(t){return i._mouseUp(t)},this.document.on("mousemove."+this.widgetName,this._mouseMoveDelegate).on("mouseup."+this.widgetName,this._mouseUpDelegate),e.preventDefault(),_=!0,!0)):!0}},_mouseMove:function(e){if(this._mouseMoved){if(t.ui.ie&&(!document.documentMode||9>document.documentMode)&&!e.button)return this._mouseUp(e);if(!e.which)if(e.originalEvent.altKey||e.originalEvent.ctrlKey||e.originalEvent.metaKey||e.originalEvent.shiftKey)this.ignoreMissingWhich=!0;else if(!this.ignoreMissingWhich)return this._mouseUp(e)}return(e.which||e.button)&&(this._mouseMoved=!0),this._mouseStarted?(this._mouseDrag(e),e.preventDefault()):(this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,e)!==!1,this._mouseStarted?this._mouseDrag(e):this._mouseUp(e)),!this._mouseStarted)},_mouseUp:function(e){this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,e.target===this._mouseDownEvent.target&&t.data(e.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(e)),this._mouseDelayTimer&&(clearTimeout(this._mouseDelayTimer),delete this._mouseDelayTimer),this.ignoreMissingWhich=!1,_=!1,e.preventDefault()},_mouseDistanceMet:function(t){return Math.max(Math.abs(this._mouseDownEvent.pageX-t.pageX),Math.abs(this._mouseDownEvent.pageY-t.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),t.ui.plugin={add:function(e,i,s){var n,o=t.ui[e].prototype;for(n in s)o.plugins[n]=o.plugins[n]||[],o.plugins[n].push([i,s[n]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;o.length>n;n++)t.options[o[n][0]]&&o[n][1].apply(t.element,i)}},t.ui.safeBlur=function(e){e&&"body"!==e.nodeName.toLowerCase()&&t(e).trigger("blur")},t.widget("ui.draggable",t.ui.mouse,{version:"1.12.1",widgetEventPrefix:"drag",options:{addClasses:!0,appendTo:"parent",axis:!1,connectToSortable:!1,containment:!1,cursor:"auto",cursorAt:!1,grid:!1,handle:!1,helper:"original",iframeFix:!1,opacity:!1,refreshPositions:!1,revert:!1,revertDuration:500,scope:"default",scroll:!0,scrollSensitivity:20,scrollSpeed:20,snap:!1,snapMode:"both",snapTolerance:20,stack:!1,zIndex:!1,drag:null,start:null,stop:null},_create:function(){"original"===this.options.helper&&this._setPositionRelative(),this.options.addClasses&&this._addClass("ui-draggable"),this._setHandleClassName(),this._mouseInit()},_setOption:function(t,e){this._super(t,e),"handle"===t&&(this._removeHandleClassName(),this._setHandleClassName())},_destroy:function(){return(this.helper||this.element).is(".ui-draggable-dragging")?(this.destroyOnClear=!0,void 0):(this._removeHandleClassName(),this._mouseDestroy(),void 0)},_mouseCapture:function(e){var i=this.options;return this.helper||i.disabled||t(e.target).closest(".ui-resizable-handle").length>0?!1:(this.handle=this._getHandle(e),this.handle?(this._blurActiveElement(e),this._blockFrames(i.iframeFix===!0?"iframe":i.iframeFix),!0):!1)},_blockFrames:function(e){this.iframeBlocks=this.document.find(e).map(function(){var e=t(this);return t("<div>").css("position","absolute").appendTo(e.parent()).outerWidth(e.outerWidth()).outerHeight(e.outerHeight()).offset(e.offset())[0]})},_unblockFrames:function(){this.iframeBlocks&&(this.iframeBlocks.remove(),delete this.iframeBlocks)},_blurActiveElement:function(e){var i=t.ui.safeActiveElement(this.document[0]),s=t(e.target);s.closest(i).length||t.ui.safeBlur(i)},_mouseStart:function(e){var i=this.options;return this.helper=this._createHelper(e),this._addClass(this.helper,"ui-draggable-dragging"),this._cacheHelperProportions(),t.ui.ddmanager&&(t.ui.ddmanager.current=this),this._cacheMargins(),this.cssPosition=this.helper.css("position"),this.scrollParent=this.helper.scrollParent(!0),this.offsetParent=this.helper.offsetParent(),this.hasFixedAncestor=this.helper.parents().filter(function(){return"fixed"===t(this).css("position")}).length>0,this.positionAbs=this.element.offset(),this._refreshOffsets(e),this.originalPosition=this.position=this._generatePosition(e,!1),this.originalPageX=e.pageX,this.originalPageY=e.pageY,i.cursorAt&&this._adjustOffsetFromHelper(i.cursorAt),this._setContainment(),this._trigger("start",e)===!1?(this._clear(),!1):(this._cacheHelperProportions(),t.ui.ddmanager&&!i.dropBehaviour&&t.ui.ddmanager.prepareOffsets(this,e),this._mouseDrag(e,!0),t.ui.ddmanager&&t.ui.ddmanager.dragStart(this,e),!0)},_refreshOffsets:function(t){this.offset={top:this.positionAbs.top-this.margins.top,left:this.positionAbs.left-this.margins.left,scroll:!1,parent:this._getParentOffset(),relative:this._getRelativeOffset()},this.offset.click={left:t.pageX-this.offset.left,top:t.pageY-this.offset.top}},_mouseDrag:function(e,i){if(this.hasFixedAncestor&&(this.offset.parent=this._getParentOffset()),this.position=this._generatePosition(e,!0),this.positionAbs=this._convertPositionTo("absolute"),!i){var s=this._uiHash();if(this._trigger("drag",e,s)===!1)return this._mouseUp(new t.Event("mouseup",e)),!1;this.position=s.position}return this.helper[0].style.left=this.position.left+"px",this.helper[0].style.top=this.position.top+"px",t.ui.ddmanager&&t.ui.ddmanager.drag(this,e),!1},_mouseStop:function(e){var i=this,s=!1;return t.ui.ddmanager&&!this.options.dropBehaviour&&(s=t.ui.ddmanager.drop(this,e)),this.dropped&&(s=this.dropped,this.dropped=!1),"invalid"===this.options.revert&&!s||"valid"===this.options.revert&&s||this.options.revert===!0||t.isFunction(this.options.revert)&&this.options.revert.call(this.element,s)?t(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,10),function(){i._trigger("stop",e)!==!1&&i._clear()}):this._trigger("stop",e)!==!1&&this._clear(),!1},_mouseUp:function(e){return this._unblockFrames(),t.ui.ddmanager&&t.ui.ddmanager.dragStop(this,e),this.handleElement.is(e.target)&&this.element.trigger("focus"),t.ui.mouse.prototype._mouseUp.call(this,e)},cancel:function(){return this.helper.is(".ui-draggable-dragging")?this._mouseUp(new t.Event("mouseup",{target:this.element[0]})):this._clear(),this},_getHandle:function(e){return this.options.handle?!!t(e.target).closest(this.element.find(this.options.handle)).length:!0},_setHandleClassName:function(){this.handleElement=this.options.handle?this.element.find(this.options.handle):this.element,this._addClass(this.handleElement,"ui-draggable-handle")},_removeHandleClassName:function(){this._removeClass(this.handleElement,"ui-draggable-handle")},_createHelper:function(e){var i=this.options,s=t.isFunction(i.helper),n=s?t(i.helper.apply(this.element[0],[e])):"clone"===i.helper?this.element.clone().removeAttr("id"):this.element;return n.parents("body").length||n.appendTo("parent"===i.appendTo?this.element[0].parentNode:i.appendTo),s&&n[0]===this.element[0]&&this._setPositionRelative(),n[0]===this.element[0]||/(fixed|absolute)/.test(n.css("position"))||n.css("position","absolute"),n},_setPositionRelative:function(){/^(?:r|a|f)/.test(this.element.css("position"))||(this.element[0].style.position="relative")},_adjustOffsetFromHelper:function(e){"string"==typeof e&&(e=e.split(" ")),t.isArray(e)&&(e={left:+e[0],top:+e[1]||0}),"left"in e&&(this.offset.click.left=e.left+this.margins.left),"right"in e&&(this.offset.click.left=this.helperProportions.width-e.right+this.margins.left),"top"in e&&(this.offset.click.top=e.top+this.margins.top),"bottom"in e&&(this.offset.click.top=this.helperProportions.height-e.bottom+this.margins.top)},_isRootNode:function(t){return/(html|body)/i.test(t.tagName)||t===this.document[0]},_getParentOffset:function(){var e=this.offsetParent.offset(),i=this.document[0];return"absolute"===this.cssPosition&&this.scrollParent[0]!==i&&t.contains(this.scrollParent[0],this.offsetParent[0])&&(e.left+=this.scrollParent.scrollLeft(),e.top+=this.scrollParent.scrollTop()),this._isRootNode(this.offsetParent[0])&&(e={top:0,left:0}),{top:e.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:e.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if("relative"!==this.cssPosition)return{top:0,left:0};var t=this.element.position(),e=this._isRootNode(this.scrollParent[0]);return{top:t.top-(parseInt(this.helper.css("top"),10)||0)+(e?0:this.scrollParent.scrollTop()),left:t.left-(parseInt(this.helper.css("left"),10)||0)+(e?0:this.scrollParent.scrollLeft())}
14},_cacheMargins:function(){this.margins={left:parseInt(this.element.css("marginLeft"),10)||0,top:parseInt(this.element.css("marginTop"),10)||0,right:parseInt(this.element.css("marginRight"),10)||0,bottom:parseInt(this.element.css("marginBottom"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var e,i,s,n=this.options,o=this.document[0];return this.relativeContainer=null,n.containment?"window"===n.containment?(this.containment=[t(window).scrollLeft()-this.offset.relative.left-this.offset.parent.left,t(window).scrollTop()-this.offset.relative.top-this.offset.parent.top,t(window).scrollLeft()+t(window).width()-this.helperProportions.width-this.margins.left,t(window).scrollTop()+(t(window).height()||o.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top],void 0):"document"===n.containment?(this.containment=[0,0,t(o).width()-this.helperProportions.width-this.margins.left,(t(o).height()||o.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top],void 0):n.containment.constructor===Array?(this.containment=n.containment,void 0):("parent"===n.containment&&(n.containment=this.helper[0].parentNode),i=t(n.containment),s=i[0],s&&(e=/(scroll|auto)/.test(i.css("overflow")),this.containment=[(parseInt(i.css("borderLeftWidth"),10)||0)+(parseInt(i.css("paddingLeft"),10)||0),(parseInt(i.css("borderTopWidth"),10)||0)+(parseInt(i.css("paddingTop"),10)||0),(e?Math.max(s.scrollWidth,s.offsetWidth):s.offsetWidth)-(parseInt(i.css("borderRightWidth"),10)||0)-(parseInt(i.css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left-this.margins.right,(e?Math.max(s.scrollHeight,s.offsetHeight):s.offsetHeight)-(parseInt(i.css("borderBottomWidth"),10)||0)-(parseInt(i.css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top-this.margins.bottom],this.relativeContainer=i),void 0):(this.containment=null,void 0)},_convertPositionTo:function(t,e){e||(e=this.position);var i="absolute"===t?1:-1,s=this._isRootNode(this.scrollParent[0]);return{top:e.top+this.offset.relative.top*i+this.offset.parent.top*i-("fixed"===this.cssPosition?-this.offset.scroll.top:s?0:this.offset.scroll.top)*i,left:e.left+this.offset.relative.left*i+this.offset.parent.left*i-("fixed"===this.cssPosition?-this.offset.scroll.left:s?0:this.offset.scroll.left)*i}},_generatePosition:function(t,e){var i,s,n,o,a=this.options,r=this._isRootNode(this.scrollParent[0]),h=t.pageX,l=t.pageY;return r&&this.offset.scroll||(this.offset.scroll={top:this.scrollParent.scrollTop(),left:this.scrollParent.scrollLeft()}),e&&(this.containment&&(this.relativeContainer?(s=this.relativeContainer.offset(),i=[this.containment[0]+s.left,this.containment[1]+s.top,this.containment[2]+s.left,this.containment[3]+s.top]):i=this.containment,t.pageX-this.offset.click.left<i[0]&&(h=i[0]+this.offset.click.left),t.pageY-this.offset.click.top<i[1]&&(l=i[1]+this.offset.click.top),t.pageX-this.offset.click.left>i[2]&&(h=i[2]+this.offset.click.left),t.pageY-this.offset.click.top>i[3]&&(l=i[3]+this.offset.click.top)),a.grid&&(n=a.grid[1]?this.originalPageY+Math.round((l-this.originalPageY)/a.grid[1])*a.grid[1]:this.originalPageY,l=i?n-this.offset.click.top>=i[1]||n-this.offset.click.top>
vendor: 4,136 bytes, line 14
14i[3]?n:n-this.offset.click.top>=i[1]?n-a.grid[1]:n+a.grid[1]:n,o=a.grid[0]?this.originalPageX+Math.round((h-this.originalPageX)/a.grid[0])*a.grid[0]:this.originalPageX,h=i?o-this.offset.click.left>=i[0]||o-this.offset.click.left>i[2]?o:o-this.offset.click.left>=i[0]?o-a.grid[0]:o+a.grid[0]:o),"y"===a.axis&&(h=this.originalPageX),"x"===a.axis&&(l=this.originalPageY)),{top:l-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.offset.scroll.top:r?0:this.offset.scroll.top),left:h-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.offset.scroll.left:r?0:this.offset.scroll.left)}},_clear:function(){this._removeClass(this.helper,"ui-draggable-dragging"),this.helper[0]===this.element[0]||this.cancelHelperRemoval||this.helper.remove(),this.helper=null,this.cancelHelperRemoval=!1,this.destroyOnClear&&this.destroy()},_trigger:function(e,i,s){return s=s||this._uiHash(),t.ui.plugin.call(this,e,[i,s,this],!0),/^(drag|start|stop)/.test(e)&&(this.positionAbs=this._convertPositionTo("absolute"),s.offset=this.positionAbs),t.Widget.prototype._trigger.call(this,e,i,s)},plugins:{},_uiHash:function(){return{helper:this.helper,position:this.position,originalPosition:this.originalPosition,offset:this.positionAbs}}}),t.ui.plugin.add("draggable","connectToSortable",{start:function(e,i,s){var n=t.extend({},i,{item:s.element});s.sortables=[],t(s.options.connectToSortable).each(function(){var i=t(this).sortable("instance");i&&!i.options.disabled&&(s.sortables.push(i),i.refreshPositions(),i._trigger("activate",e,n))})},stop:function(e,i,s){var n=t.extend({},i,{item:s.element});s.cancelHelperRemoval=!1,t.each(s.sortables,function(){var t=this;t.isOver?(t.isOver=0,s.cancelHelperRemoval=!0,t.cancelHelperRemoval=!1,t._storedCSS={position:t.placeholder.css("position"),top:t.placeholder.css("top"),left:t.placeholder.css("left")},t._mouseStop(e),t.options.helper=t.options._helper):(t.cancelHelperRemoval=!0,t._trigger("deactivate",e,n))})},drag:function(e,i,s){t.each(s.sortables,function(){var n=!1,o=this;o.positionAbs=s.positionAbs,o.helperProportions=s.helperProportions,o.offset.click=s.offset.click,o._intersectsWith(o.containerCache)&&(n=!0,t.each(s.sortables,function(){return this.positionAbs=s.positionAbs,this.helperProportions=s.helperProportions,this.offset.click=s.offset.click,this!==o&&this._intersectsWith(this.containerCache)&&t.contains(o.element[0],this.element[0])&&(n=!1),n})),n?(o.isOver||(o.isOver=1,s._parent=i.helper.parent(),o.currentItem=i.helper.appendTo(o.element).data("ui-sortable-item",!0),o.options._helper=o.options.helper,o.options.helper=function(){return i.helper[0]},e.target=o.currentItem[0],o._mouseCapture(e,!0),o._mouseStart(e,!0,!0),o.offset.click.top=s.offset.click.top,o.offset.click.left=s.offset.click.left,o.offset.parent.left-=s.offset.parent.left-o.offset.parent.left,o.offset.parent.top-=s.offset.parent.top-o.offset.parent.top,s._trigger("toSortable",e),s.dropped=o.element,t.each(s.sortables,function(){this.refreshPositions()}),s.currentItem=s.element,o.fromOutside=s),o.currentItem&&(o._mouseDrag(e),i.position=o.position)):o.isOver&&(o.isOver=0,o.cancelHelperRemoval=!0,o.options._revert=o.options.revert,o.options.revert=!1,o._trigger("out",e,o._uiHash(o)),o._mouseStop(e,!0),o.options.revert=o.options._revert,o.options.helper=o.options._helper,o.placeholder&&o.placeholder.remove(),i.helper.appendTo(s._parent),s._refreshOffsets(e),i.position=s._generatePosition(e,!0),s._trigger("fromSortable",e),s.dropped=!1,t.each(s.sortables,function(){this.refreshPositions()}))})}}),t.ui.plugin.add("draggable","cursor",{start:function(e,i,s){var n=t("body"),o=s.options;n.css("cursor")&&(o._cursor=n.css("cursor")),n.css("cursor",o.cursor)},stop:function(e,i,s){var n=s.options;n._cursor&&t("body").css("cursor",n._cursor)}}),t.ui.plugin.add("draggable","opacity",{start:function(e,i,s){var n=t(i.helper),o=s.options;n.css("opacity")&&(o._opacity=n.css("opacity")),n.css("opacity",o.opacity)},stop:function(e,i,s){var n=s.options;n._opacity&&t(i.helper).css("opacity",n._opacity)}}
vendor: 8,104 bytes, line 14
14),t.ui.plugin.add("draggable","scroll",{start:function(t,e,i){i.scrollParentNotHidden||(i.scrollParentNotHidden=i.helper.scrollParent(!1)),i.scrollParentNotHidden[0]!==i.document[0]&&"HTML"!==i.scrollParentNotHidden[0].tagName&&(i.overflowOffset=i.scrollParentNotHidden.offset())},drag:function(e,i,s){var n=s.options,o=!1,a=s.scrollParentNotHidden[0],r=s.document[0];a!==r&&"HTML"!==a.tagName?(n.axis&&"x"===n.axis||(s.overflowOffset.top+a.offsetHeight-e.pageY<n.scrollSensitivity?a.scrollTop=o=a.scrollTop+n.scrollSpeed:e.pageY-s.overflowOffset.top<n.scrollSensitivity&&(a.scrollTop=o=a.scrollTop-n.scrollSpeed)),n.axis&&"y"===n.axis||(s.overflowOffset.left+a.offsetWidth-e.pageX<n.scrollSensitivity?a.scrollLeft=o=a.scrollLeft+n.scrollSpeed:e.pageX-s.overflowOffset.left<n.scrollSensitivity&&(a.scrollLeft=o=a.scrollLeft-n.scrollSpeed))):(n.axis&&"x"===n.axis||(e.pageY-t(r).scrollTop()<n.scrollSensitivity?o=t(r).scrollTop(t(r).scrollTop()-n.scrollSpeed):t(window).height()-(e.pageY-t(r).scrollTop())<n.scrollSensitivity&&(o=t(r).scrollTop(t(r).scrollTop()+n.scrollSpeed))),n.axis&&"y"===n.axis||(e.pageX-t(r).scrollLeft()<n.scrollSensitivity?o=t(r).scrollLeft(t(r).scrollLeft()-n.scrollSpeed):t(window).width()-(e.pageX-t(r).scrollLeft())<n.scrollSensitivity&&(o=t(r).scrollLeft(t(r).scrollLeft()+n.scrollSpeed)))),o!==!1&&t.ui.ddmanager&&!n.dropBehaviour&&t.ui.ddmanager.prepareOffsets(s,e)}}),t.ui.plugin.add("draggable","snap",{start:function(e,i,s){var n=s.options;s.snapElements=[],t(n.snap.constructor!==String?n.snap.items||":data(ui-draggable)":n.snap).each(function(){var e=t(this),i=e.offset();this!==s.element[0]&&s.snapElements.push({item:this,width:e.outerWidth(),height:e.outerHeight(),top:i.top,left:i.left})})},drag:function(e,i,s){var n,o,a,r,h,l,c,u,d,p,f=s.options,g=f.snapTolerance,m=i.offset.left,_=m+s.helperProportions.width,v=i.offset.top,b=v+s.helperProportions.height;for(d=s.snapElements.length-1;d>=0;d--)h=s.snapElements[d].left-s.margins.left,l=h+s.snapElements[d].width,c=s.snapElements[d].top-s.margins.top,u=c+s.snapElements[d].height,h-g>_||m>l+g||c-g>b||v>u+g||!t.contains(s.snapElements[d].item.ownerDocument,s.snapElements[d].item)?(s.snapElements[d].snapping&&s.options.snap.release&&s.options.snap.release.call(s.element,e,t.extend(s._uiHash(),{snapItem:s.snapElements[d].item})),s.snapElements[d].snapping=!1):("inner"!==f.snapMode&&(n=g>=Math.abs(c-b),o=g>=Math.abs(u-v),a=g>=Math.abs(h-_),r=g>=Math.abs(l-m),n&&(i.position.top=s._convertPositionTo("relative",{top:c-s.helperProportions.height,left:0}).top),o&&(i.position.top=s._convertPositionTo("relative",{top:u,left:0}).top),a&&(i.position.left=s._convertPositionTo("relative",{top:0,left:h-s.helperProportions.width}).left),r&&(i.position.left=s._convertPositionTo("relative",{top:0,left:l}).left)),p=n||o||a||r,"outer"!==f.snapMode&&(n=g>=Math.abs(c-v),o=g>=Math.abs(u-b),a=g>=Math.abs(h-m),r=g>=Math.abs(l-_),n&&(i.position.top=s._convertPositionTo("relative",{top:c,left:0}).top),o&&(i.position.top=s._convertPositionTo("relative",{top:u-s.helperProportions.height,left:0}).top),a&&(i.position.left=s._convertPositionTo("relative",{top:0,left:h}).left),r&&(i.position.left=s._convertPositionTo("relative",{top:0,left:l-s.helperProportions.width}).left)),!s.snapElements[d].snapping&&(n||o||a||r||p)&&s.options.snap.snap&&s.options.snap.snap.call(s.element,e,t.extend(s._uiHash(),{snapItem:s.snapElements[d].item})),s.snapElements[d].snapping=n||o||a||r||p)}}),t.ui.plugin.add("draggable","stack",{start:function(e,i,s){var n,o=s.options,a=t.makeArray(t(o.stack)).sort(function(e,i){return(parseInt(t(e).css("zIndex"),10)||0)-(parseInt(t(i).css("zIndex"),10)||0)});a.length&&(n=parseInt(t(a[0]).css("zIndex"),10)||0,t(a).each(function(e){t(this).css("zIndex",n+e)}),this.css("zIndex",n+a.length))}}),t.ui.plugin.add("draggable","zIndex",{start:function(e,i,s){var n=t(i.helper),o=s.options;n.css("zIndex")&&(o._zIndex=n.css("zIndex")),n.css("zIndex",o.zIndex)},stop:function(e,i,s){var n=s.options;n._zIndex&&t(i.helper).css("zIndex",n._zIndex)}}),t.ui.draggable,t.widget("ui.resizable",t.ui.mouse,{version:"1.12.1",widgetEventPrefix:"resize",options:{alsoResize:!1,animate:!1,animateDuration:"slow",animateEasing:"swing",aspectRatio:!1,autoHide:!1,classes:{"ui-resizable-se":"ui-icon ui-icon-gripsmall-diagonal-se"},containment:!1,ghost:!1,grid:!1,handles:"e,s,se",helper:!1,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:90,resize:null,start:null,stop:null},_num:function(t){return parseFloat(t)||0},_isNumber:function(t){return!isNaN(parseFloat(t))},_hasScroll:function(e,i){if("hidden"===t(e).css("overflow"))return!1;var s=i&&"left"===i?"scrollLeft":"scrollTop",n=!1;return e[s]>0?!0:(e[s]=1,n=e[s]>0,e[s]=0,n)},_create:function(){var e,i=this.options,s=this;this._addClass("ui-resizable"),t.extend(this,{_aspectRatio:!!i.aspectRatio,aspectRatio:i.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:i.helper||i.ghost||i.animate?i.helper||"ui-resizable-helper":null}),this.element[0].nodeName.match(/^(canvas|textarea|input|select|button|img)$/i)&&(this.element.wrap(t("<div class='ui-wrapper' style='overflow: hidden;'></div>").css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,e={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(e),this.originalElement.css("margin",0),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css(e),this._proportionallyResize()),this._setupHandles(),i.autoHide&&t(this.element).on("mouseenter",function(){i.disabled||(s._removeClass("ui-resizable-autohide"),s._handles.show())}).on("mouseleave",function(){i.disabled||s.resizing||(s._addClass("ui-resizable-autohide"),s._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy();var e,i=function(e){t(e).removeData("resizable").removeData("ui-resizable").off(".resizable").find(".ui-resizable-handle").remove()};return this.elementIsWrapper&&(i(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),i(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles();break;default:}},_setupHandles:function(){var e,i,s,n,o,a=this.options,r=this;if(this.handles=a.handles||(t(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=t(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),s=this.handles.split(","),this.handles={},i=0;s.length>i;i++)e=t.trim(s[i]),n="ui-resizable-"+e,o=t("<div>"),this._addClass(o,"ui-resizable-handle "+n),o.css({zIndex:a.zIndex}),this.handles[e]=".ui-resizable-"+e,this.element.append(o);this._renderAxis=function(e){var i,s,n,o;e=e||this.element;for(i in this.handles)this.handles[i].constructor===String?this.handles[i]=this.element.children(this.handles[i]).first().show():(this.handles[i].jquery||this.handles[i].nodeType)&&(this.handles[i]=t(this.handles[i]),this._on(this.handles[i],{mousedown:r._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(s=t(this.handles[i],this.element),o=/sw|ne|nw|se|n|s/.test(i)?s.outerHeight():s.outerWidth(),n=["padding",/ne|nw|n
vendor: 12,186 bytes, line 14
14/.test(i)?"Top":/se|sw|s/.test(i)?"Bottom":/^e$/.test(i)?"Right":"Left"].join(""),e.css(n,o),this._proportionallyResize()),this._handles=this._handles.add(this.handles[i])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){r.resizing||(this.className&&(o=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),r.axis=o&&o[1]?o[1]:"se")}),a.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._handles.remove()},_mouseCapture:function(e){var i,s,n=!1;for(i in this.handles)s=t(this.handles[i])[0],(s===e.target||t.contains(s,e.target))&&(n=!0);return!this.options.disabled&&n},_mouseStart:function(e){var i,s,n,o=this.options,a=this.element;return this.resizing=!0,this._renderProxy(),i=this._num(this.helper.css("left")),s=this._num(this.helper.css("top")),o.containment&&(i+=t(o.containment).scrollLeft()||0,s+=t(o.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:i,top:s},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:a.width(),height:a.height()},this.originalSize=this._helper?{width:a.outerWidth(),height:a.outerHeight()}:{width:a.width(),height:a.height()},this.sizeDiff={width:a.outerWidth()-a.width(),height:a.outerHeight()-a.height()},this.originalPosition={left:i,top:s},this.originalMousePosition={left:e.pageX,top:e.pageY},this.aspectRatio="number"==typeof o.aspectRatio?o.aspectRatio:this.originalSize.width/this.originalSize.height||1,n=t(".ui-resizable-"+this.axis).css("cursor"),t("body").css("cursor","auto"===n?this.axis+"-resize":n),this._addClass("ui-resizable-resizing"),this._propagate("start",e),!0},_mouseDrag:function(e){var i,s,n=this.originalMousePosition,o=this.axis,a=e.pageX-n.left||0,r=e.pageY-n.top||0,h=this._change[o];return this._updatePrevProperties(),h?(i=h.apply(this,[e,a,r]),this._updateVirtualBoundaries(e.shiftKey),(this._aspectRatio||e.shiftKey)&&(i=this._updateRatio(i,e)),i=this._respectSize(i,e),this._updateCache(i),this._propagate("resize",e),s=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),t.isEmptyObject(s)||(this._updatePrevProperties(),this._trigger("resize",e,this.ui()),this._applyChanges()),!1):!1},_mouseStop:function(e){this.resizing=!1;var i,s,n,o,a,r,h,l=this.options,c=this;return this._helper&&(i=this._proportionallyResizeElements,s=i.length&&/textarea/i.test(i[0].nodeName),n=s&&this._hasScroll(i[0],"left")?0:c.sizeDiff.height,o=s?0:c.sizeDiff.width,a={width:c.helper.width()-o,height:c.helper.height()-n},r=parseFloat(c.element.css("left"))+(c.position.left-c.originalPosition.left)||null,h=parseFloat(c.element.css("top"))+(c.position.top-c.originalPosition.top)||null,l.animate||this.element.css(t.extend(a,{top:h,left:r})),c.helper.height(c.size.height),c.helper.width(c.size.width),this._helper&&!l.animate&&this._proportionallyResize()),t("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",e),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px"),this.helper.css(t),t},_updateVirtualBoundaries:function(t){var e,i,s,n,o,a=this.options;o={minWidth:this._isNumber(a.minWidth)?a.minWidth:0,maxWidth:this._isNumber(a.maxWidth)?a.maxWidth:1/0,minHeight:this._isNumber(a.minHeight)?a.minHeight:0,maxHeight:this._isNumber(a.maxHeight)?a.maxHeight:1/0},(this._aspectRatio||t)&&(e=o.minHeight*this.aspectRatio,s=o.minWidth/this.aspectRatio,i=o.maxHeight*this.aspectRatio,n=o.maxWidth/this.aspectRatio,e>o.minWidth&&(o.minWidth=e),s>o.minHeight&&(o.minHeight=s),o.maxWidth>i&&(o.maxWidth=i),o.maxHeight>n&&(o.maxHeight=n)),this._vBoundaries=o},_updateCache:function(t){this.offset=this.helper.offset(),this._isNumber(t.left)&&(this.position.left=t.left),this._isNumber(t.top)&&(this.position.top=t.top),this._isNumber(t.height)&&(this.size.height=t.height),this._isNumber(t.width)&&(this.size.width=t.width)},_updateRatio:function(t){var e=this.position,i=this.size,s=this.axis;return this._isNumber(t.height)?t.width=t.height*this.aspectRatio:this._isNumber(t.width)&&(t.height=t.width/this.aspectRatio),"sw"===s&&(t.left=e.left+(i.width-t.width),t.top=null),"nw"===s&&(t.top=e.top+(i.height-t.height),t.left=e.left+(i.width-t.width)),t},_respectSize:function(t){var e=this._vBoundaries,i=this.axis,s=this._isNumber(t.width)&&e.maxWidth&&e.maxWidth<t.width,n=this._isNumber(t.height)&&e.maxHeight&&e.maxHeight<t.height,o=this._isNumber(t.width)&&e.minWidth&&e.minWidth>t.width,a=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,r=this.originalPosition.left+this.originalSize.width,h=this.originalPosition.top+this.originalSize.height,l=/sw|nw|w/.test(i),c=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),a&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&l&&(t.left=r-e.minWidth),s&&l&&(t.left=r-e.maxWidth),a&&c&&(t.top=h-e.minHeight),n&&c&&(t.top=h-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],s=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],n=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];4>e;e++)i[e]=parseFloat(s[e])||0,i[e]+=parseFloat(n[e])||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;this._proportionallyResizeElements.length>e;e++)t=this._proportionallyResizeElements[e],this.outerDimensions||(this.outerDimensions=this._getPaddingPlusBorderDimensions(t)),t.css({height:i.height()-this.outerDimensions.height||0,width:i.width()-this.outerDimensions.width||0})},_renderProxy:function(){var e=this.element,i=this.options;this.elementOffset=e.offset(),this._helper?(this.helper=this.helper||t("<div style='overflow:hidden;'></div>"),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++i.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize,s=this.originalPosition;return{left:s.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize,n=this.originalPosition;return{top:n.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},sw:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[e,i,s]))},ne:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},nw:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[e,i,s]))}},_propagate:function(e,i){t.ui.plugin.call(this,e,[i,this.ui()]),"resize"!==e&&this._trigger(e,i,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),t.ui.plugin.add("resizable","animate",{stop:function(e){var i=t(this).resizable("instance"),s=i.options,n=i._proportionallyResizeElements,o=n.length&&/textarea/i.test(n[0].nodeName),a=o&&i._hasScroll(n[0],"left")?0:i.sizeDiff.height,r=o?0:i.sizeDiff.width,h={width:i.size.width-r,height:i.size.height-a},l=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left)||null,c=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(t.extend(h,c&&l?{top:c,left:l}:{}),{duration:s.animateDuration,easing:s.animateEasing,step:function(){var s={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};n&&n.length&&t(n[0]).css({width:s.width,height:s.height}),i._updateCache(s),i._propagate("resize",e)}})}}),t.ui.plugin.add("resizable","containment",{start:function(){var e,i,s,n,o,a,r,h=t(this).resizable("instance"),l=h.options,c=h.element,u=l.containment,d=u instanceof t?u.get(0):/parent/.test(u)?c.parent().get(0):u;d&&(h.containerElement=t(d),/document/.test(u)||u===document?(h.containerOffset={left:0,top:0},h.containerPosition={left:0,top:0},h.parentData={element:t(document),left:0,top:0,width:t(document).width(),height:t(document).height()||document.body.parentNode.scrollHeight}):(e=t(d),i=[],t(["Top","Right","Left","Bottom"]).each(function(t,s){i[t]=h._num(e.css("padding"+s))}),h.containerOffset=e.offset(),h.containerPosition=e.position(),h.containerSize={height:e.innerHeight()-i[3],width:e.innerWidth()-i[1]},s=h.containerOffset,n=h.containerSize.height,o=h.containerSize.width,a=h._hasScroll(d,"left")?d.scrollWidth:o,r=h._hasScroll(d)?d.scrollHeight:n,h.parentData={element:d,left:s.left,top:s.top,width:a,height:r}))},resize:function(e){var i,s,n,o,a=t(this).resizable("instance"),r=a.options,h=a.containerOffset,l=a.position,c=a._aspectRatio||e.shiftKey,u={top:0,left:0},d=a.containerElement,p=!0;d[0]!==document&&/static/.test(d.css("position"))&&(u=h),l.left<(a._helper?h.left:0)&&(a.size.width=a.size.width+(a._helper?a.position.left-h.left:a.position.left-u.left),c&&(a.size.height=a.size.width/a.aspectRatio,p=!1),a.position.left=r.helper?h.left:0),l.top<(a._helper?h.top:0)&&(a.size.height=a.size.height+(a._helper?a.position.top-h.top:a.position.top),c&&(a.size.width=a.size.height*a.aspectRatio,p=!1),a.position.top=a._helper?h.top:0),n=a.containerElement.get(0)===a.element.parent().get(0),o=/relative|absolute/.test(a.containerElement.css("position")),n&&o?(a.offset.left=a.parentData.left+a.position.left,a.offset.top=a.parentData.top+a.position.top):(a.offset.left=a.element.offset().left,a.offset.top=a.element.offset().top),i=Math.abs(a.sizeDiff.width+(a._helper?a.offset.left-u.left:a.offset.left-h.left)),s=Math.abs(a.sizeDiff.height+(a._helper?a.offset.top-u.top:a.offset.top-h.top)),i+a.size.width>=a.parentData.width&&(a.size.width=a.parentData.width-i,c&&(a.size.height=a.size.width/a.aspectRatio,p=!1)),s+a.size.height>=a.parentData.height&&(a.size.height=a.parentData.height-s,c&&(a.size.width=a.size.height*a.aspectRatio,p=!1)),p||(a.position.left=a.prevPosition.left,a.position.top=a.prevPosition.top,a.size.width=a.prevSize.width,a.size.height=a.prevSize.height)},stop:function(){var e=t(this).resizable("instance"),i=e.options,s=e.containerOffset,n=e.containerPosition,o=e.containerElement,a=t(e.helper),r=a.offset(),h=a.outerWidth()-e.sizeDiff.width,l=a.outerHeight()-e.sizeDiff.height;e._helper&&!i.animate&&/relative/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l}),e._helper&&!i.animate&&/static/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l})}}),t.ui.plugin.add("resizable","alsoResize",{start:function(){var e=t(this).resizable("instance"),i=e.options;t(i.alsoResize).each(function(){var e=t(this);e.data("ui-resizable-alsoresize",{width:parseFloat(e.width()),height:parseFloat(e.height()),left:parseFloat(e.css("left")),top:parseFloat(e.css("top"))})})},resize:function(e,i){var s=t(this).resizable("instance"),n=s.options,o=s.originalSize,a=s.originalPosition,r={height:s.size.height-o.height||0,width:s.size.width-o.width||0,top:s.position.top-a.top||0,left
vendor: 27,543 bytes, lines 14-15
14:s.position.left-a.left||0};t(n.alsoResize).each(function(){var e=t(this),s=t(this).data("ui-resizable-alsoresize"),n={},o=e.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];t.each(o,function(t,e){var i=(s[e]||0)+(r[e]||0);i&&i>=0&&(n[e]=i||null)}),e.css(n)})},stop:function(){t(this).removeData("ui-resizable-alsoresize")}}),t.ui.plugin.add("resizable","ghost",{start:function(){var e=t(this).resizable("instance"),i=e.size;e.ghost=e.originalElement.clone(),e.ghost.css({opacity:.25,display:"block",position:"relative",height:i.height,width:i.width,margin:0,left:0,top:0}),e._addClass(e.ghost,"ui-resizable-ghost"),t.uiBackCompat!==!1&&"string"==typeof e.options.ghost&&e.ghost.addClass(this.options.ghost),e.ghost.appendTo(e.helper)},resize:function(){var e=t(this).resizable("instance");e.ghost&&e.ghost.css({position:"relative",height:e.size.height,width:e.size.width})},stop:function(){var e=t(this).resizable("instance");e.ghost&&e.helper&&e.helper.get(0).removeChild(e.ghost.get(0))}}),t.ui.plugin.add("resizable","grid",{resize:function(){var e,i=t(this).resizable("instance"),s=i.options,n=i.size,o=i.originalSize,a=i.originalPosition,r=i.axis,h="number"==typeof s.grid?[s.grid,s.grid]:s.grid,l=h[0]||1,c=h[1]||1,u=Math.round((n.width-o.width)/l)*l,d=Math.round((n.height-o.height)/c)*c,p=o.width+u,f=o.height+d,g=s.maxWidth&&p>s.maxWidth,m=s.maxHeight&&f>s.maxHeight,_=s.minWidth&&s.minWidth>p,v=s.minHeight&&s.minHeight>f;s.grid=h,_&&(p+=l),v&&(f+=c),g&&(p-=l),m&&(f-=c),/^(se|s|e)$/.test(r)?(i.size.width=p,i.size.height=f):/^(ne)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.top=a.top-d):/^(sw)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.left=a.left-u):((0>=f-c||0>=p-l)&&(e=i._getPaddingPlusBorderDimensions(this)),f-c>0?(i.size.height=f,i.position.top=a.top-d):(f=c-e.height,i.size.height=f,i.position.top=a.top+o.height-f),p-l>0?(i.size.width=p,i.position.left=a.left-u):(p=l-e.width,i.size.width=p,i.position.left=a.left+o.width-p))}}),t.ui.resizable,t.widget("ui.dialog",{version:"1.12.1",options:{appendTo:"body",autoOpen:!0,buttons:[],classes:{"ui-dialog":"ui-corner-all","ui-dialog-titlebar":"ui-corner-all"},closeOnEscape:!0,closeText:"Close",draggable:!0,hide:null,height:"auto",maxHeight:null,maxWidth:null,minHeight:150,minWidth:150,modal:!1,position:{my:"center",at:"center",of:window,collision:"fit",using:function(e){var i=t(this).css(e).offset().top;0>i&&t(this).css("top",e.top-i)}},resizable:!0,show:null,title:null,width:300,beforeClose:null,close:null,drag:null,dragStart:null,dragStop:null,focus:null,open:null,resize:null,resizeStart:null,resizeStop:null},sizeRelatedOptions:{buttons:!0,height:!0,maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0,width:!0},resizableRelatedOptions:{maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0},_create:function(){this.originalCss={display:this.element[0].style.display,width:this.element[0].style.width,minHeight:this.element[0].style.minHeight,maxHeight:this.element[0].style.maxHeight,height:this.element[0].style.height},this.originalPosition={parent:this.element.parent(),index:this.element.parent().children().index(this.element)},this.originalTitle=this.element.attr("title"),null==this.options.title&&null!=this.originalTitle&&(this.options.title=this.originalTitle),this.options.disabled&&(this.options.disabled=!1),this._createWrapper(),this.element.show().removeAttr("title").appendTo(this.uiDialog),this._addClass("ui-dialog-content","ui-widget-content"),this._createTitlebar(),this._createButtonPane(),this.options.draggable&&t.fn.draggable&&this._makeDraggable(),this.options.resizable&&t.fn.resizable&&this._makeResizable(),this._isOpen=!1,this._trackFocus()},_init:function(){this.options.autoOpen&&this.open()},_appendTo:function(){var e=this.options.appendTo;return e&&(e.jquery||e.nodeType)?t(e):this.document.find(e||"body").eq(0)},_destroy:function(){var t,e=this.originalPosition;this._untrackInstance(),this._destroyOverlay(),this.element.removeUniqueId().css(this.originalCss).detach(),this.uiDialog.remove(),this.originalTitle&&this.element.attr("title",this.originalTitle),t=e.parent.children().eq(e.index),t.length&&t[0]!==this.element[0]?t.before(this.element):e.parent.append(this.element)},widget:function(){return this.uiDialog
15},disable:t.noop,enable:t.noop,close:function(e){var i=this;this._isOpen&&this._trigger("beforeClose",e)!==!1&&(this._isOpen=!1,this._focusedElement=null,this._destroyOverlay(),this._untrackInstance(),this.opener.filter(":focusable").trigger("focus").length||t.ui.safeBlur(t.ui.safeActiveElement(this.document[0])),this._hide(this.uiDialog,this.options.hide,function(){i._trigger("close",e)}))},isOpen:function(){return this._isOpen},moveToTop:function(){this._moveToTop()},_moveToTop:function(e,i){var s=!1,n=this.uiDialog.siblings(".ui-front:visible").map(function(){return+t(this).css("z-index")}).get(),o=Math.max.apply(null,n);return o>=+this.uiDialog.css("z-index")&&(this.uiDialog.css("z-index",o+1),s=!0),s&&!i&&this._trigger("focus",e),s},open:function(){var e=this;return this._isOpen?(this._moveToTop()&&this._focusTabbable(),void 0):(this._isOpen=!0,this.opener=t(t.ui.safeActiveElement(this.document[0])),this._size(),this._position(),this._createOverlay(),this._moveToTop(null,!0),this.overlay&&this.overlay.css("z-index",this.uiDialog.css("z-index")-1),this._show(this.uiDialog,this.options.show,function(){e._focusTabbable(),e._trigger("focus")}),this._makeFocusTarget(),this._trigger("open"),void 0)},_focusTabbable:function(){var t=this._focusedElement;t||(t=this.element.find("[autofocus]")),t.length||(t=this.element.find(":tabbable")),t.length||(t=this.uiDialogButtonPane.find(":tabbable")),t.length||(t=this.uiDialogTitlebarClose.filter(":tabbable")),t.length||(t=this.uiDialog),t.eq(0).trigger("focus")},_keepFocus:function(e){function i(){var e=t.ui.safeActiveElement(this.document[0]),i=this.uiDialog[0]===e||t.contains(this.uiDialog[0],e);i||this._focusTabbable()}e.preventDefault(),i.call(this),this._delay(i)},_createWrapper:function(){this.uiDialog=t("<div>").hide().attr({tabIndex:-1,role:"dialog"}).appendTo(this._appendTo()),this._addClass(this.uiDialog,"ui-dialog","ui-widget ui-widget-content ui-front"),this._on(this.uiDialog,{keydown:function(e){if(this.options.closeOnEscape&&!e.isDefaultPrevented()&&e.keyCode&&e.keyCode===t.ui.keyCode.ESCAPE)return e.preventDefault(),this.close(e),void 0;if(e.keyCode===t.ui.keyCode.TAB&&!e.isDefaultPrevented()){var i=this.uiDialog.find(":tabbable"),s=i.filter(":first"),n=i.filter(":last");e.target!==n[0]&&e.target!==this.uiDialog[0]||e.shiftKey?e.target!==s[0]&&e.target!==this.uiDialog[0]||!e.shiftKey||(this._delay(function(){n.trigger("focus")}),e.preventDefault()):(this._delay(function(){s.trigger("focus")}),e.preventDefault())}},mousedown:function(t){this._moveToTop(t)&&this._focusTabbable()}}),this.element.find("[aria-describedby]").length||this.uiDialog.attr({"aria-describedby":this.element.uniqueId().attr("id")})},_createTitlebar:function(){var e;this.uiDialogTitlebar=t("<div>"),this._addClass(this.uiDialogTitlebar,"ui-dialog-titlebar","ui-widget-header ui-helper-clearfix"),this._on(this.uiDialogTitlebar,{mousedown:function(e){t(e.target).closest(".ui-dialog-titlebar-close")||this.uiDialog.trigger("focus")}}),this.uiDialogTitlebarClose=t("<button type='button'></button>").button({label:t("<a>").text(this.options.closeText).html(),icon:"ui-icon-closethick",showLabel:!1}).appendTo(this.uiDialogTitlebar),this._addClass(this.uiDialogTitlebarClose,"ui-dialog-titlebar-close"),this._on(this.uiDialogTitlebarClose,{click:function(t){t.preventDefault(),this.close(t)}}),e=t("<span>").uniqueId().prependTo(this.uiDialogTitlebar),this._addClass(e,"ui-dialog-title"),this._title(e),this.uiDialogTitlebar.prependTo(this.uiDialog),this.uiDialog.attr({"aria-labelledby":e.attr("id")})},_title:function(t){this.options.title?t.text(this.options.title):t.html("&#160;")},_createButtonPane:function(){this.uiDialogButtonPane=t("<div>"),this._addClass(this.uiDialogButtonPane,"ui-dialog-buttonpane","ui-widget-content ui-helper-clearfix"),this.uiButtonSet=t("<div>").appendTo(this.uiDialogButtonPane),this._addClass(this.uiButtonSet,"ui-dialog-buttonset"),this._createButtons()},_createButtons:function(){var e=this,i=this.options.buttons;return this.uiDialogButtonPane.remove(),this.uiButtonSet.empty(),t.isEmptyObject(i)||t.isArray(i)&&!i.length?(this._removeClass(this.uiDialog,"ui-dialog-buttons"),void 0):(t.each(i,function(i,s){var n,o;s=t.isFunction(s)?{click:s,text:i}:s,s=t.extend({type:"button"},s),n=s.click,o={icon:s.icon,iconPosition:s.iconPosition,showLabel:s.showLabel,icons:s.icons,text:s.text},delete s.click,delete s.icon,delete s.iconPosition,delete s.showLabel,delete s.icons,"boolean"==typeof s.text&&delete s.text,t("<button></button>",s).button(o).appendTo(e.uiButtonSet).on("click",function(){n.apply(e.element[0],arguments)})}),this._addClass(this.uiDialog,"ui-dialog-buttons"),this.uiDialogButtonPane.appendTo(this.uiDialog),void 0)},_makeDraggable:function(){function e(t){return{position:t.position,offset:t.offset}}var i=this,s=this.options;this.uiDialog.draggable({cancel:".ui-dialog-content, .ui-dialog-titlebar-close",handle:".ui-dialog-titlebar",containment:"document",start:function(s,n){i._addClass(t(this),"ui-dialog-dragging"),i._blockFrames(),i._trigger("dragStart",s,e(n))},drag:function(t,s){i._trigger("drag",t,e(s))},stop:function(n,o){var a=o.offset.left-i.document.scrollLeft(),r=o.offset.top-i.document.scrollTop();s.position={my:"left top",at:"left"+(a>=0?"+":"")+a+" "+"top"+(r>=0?"+":"")+r,of:i.window},i._removeClass(t(this),"ui-dialog-dragging"),i._unblockFrames(),i._trigger("dragStop",n,e(o))}})},_makeResizable:function(){function e(t){return{originalPosition:t.originalPosition,originalSize:t.originalSize,position:t.position,size:t.size}}var i=this,s=this.options,n=s.resizable,o=this.uiDialog.css("position"),a="string"==typeof n?n:"n,e,s,w,se,sw,ne,nw";this.uiDialog.resizable({cancel:".ui-dialog-content",containment:"document",alsoResize:this.element,maxWidth:s.maxWidth,maxHeight:s.maxHeight,minWidth:s.minWidth,minHeight:this._minHeight(),handles:a,start:function(s,n){i._addClass(t(this),"ui-dialog-resizing"),i._blockFrames(),i._trigger("resizeStart",s,e(n))},resize:function(t,s){i._trigger("resize",t,e(s))},stop:function(n,o){var a=i.uiDialog.offset(),r=a.left-i.document.scrollLeft(),h=a.top-i.document.scrollTop();s.height=i.uiDialog.height(),s.width=i.uiDialog.width(),s.position={my:"left top",at:"left"+(r>=0?"+":"")+r+" "+"top"+(h>=0?"+":"")+h,of:i.window},i._removeClass(t(this),"ui-dialog-resizing"),i._unblockFrames(),i._trigger("resizeStop",n,e(o))}}).css("position",o)},_trackFocus:function(){this._on(this.widget(),{focusin:function(e){this._makeFocusTarget(),this._focusedElement=t(e.target)}})},_makeFocusTarget:function(){this._untrackInstance(),this._trackingInstances().unshift(this)},_untrackInstance:function(){var e=this._trackingInstances(),i=t.inArray(this,e);-1!==i&&e.splice(i,1)},_trackingInstances:function(){var t=this.document.data("ui-dialog-instances");return t||(t=[],this.document.data("ui-dialog-instances",t)),t},_minHeight:function(){var t=this.options;return"auto"===t.height?t.minHeight:Math.min(t.minHeight,t.height)},_position:function(){var t=this.uiDialog.is(":visible");t||this.uiDialog.show(),this.uiDialog.position(this.options.position),t||this.uiDialog.hide()},_setOptions:function(e){var i=this,s=!1,n={};t.each(e,function(t,e){i._setOption(t,e),t in i.sizeRelatedOptions&&(s=!0),t in i.resizableRelatedOptions&&(n[t]=e)}),s&&(this._size(),this._position()),this.uiDialog.is(":data(ui-resizable)")&&this.uiDialog.resizable("option",n)},_setOption:function(e,i){var s,n,o=this.uiDialog;"disabled"!==e&&(this._super(e,i),"appendTo"===e&&this.uiDialog.appendTo(this._appendTo()),"buttons"===e&&this._createButtons(),"closeText"===e&&this.uiDialogTitlebarClose.button({label:t("<a>").text(""+this.options.closeText).html()}),"draggable"===e&&(s=o.is(":data(ui-draggable)"),s&&!i&&o.draggable("destroy"),!s&&i&&this._makeDraggable()),"position"===e&&this._position(),"resizable"===e&&(n=o.is(":data(ui-resizable)"),n&&!i&&o.resizable("destroy"),n&&"string"==typeof i&&o.resizable("option","handles",i),n||i===!1||this._makeResizable()),"title"===e&&this._title(this.uiDialogTitlebar.find(".ui-dialog-title")))},_size:function(){var t,e,i,s=this.options;this.element.show().css({width:"auto",minHeight:0,maxHeight:"none",height:0}),s.minWidth>s.width&&(s.width=s.minWidth),t=this.uiDialog.css({height:"auto",width:s.width}).outerHeight(),e=Math.max(0,s.minHeight-t),i="number"==typeof s.maxHeight?Math.max(0,s.maxHeight-t):"none","auto"===s.height?this.element.css({minHeight:e,maxHeight:i,height:"auto"}):this.element.height(Math.max(0,s.height-t)),this.uiDialog.is(":data(ui-resizable)")&&this.uiDialog.resizable("option","minHeight",this._minHeight())},_blockFrames:function(){this.iframeBlocks=this.document.find("iframe").map(function(){var e=t(this);return t("<div>").css({position:"absolute",width:e.outerWidth(),height:e.outerHeight()}).appendTo(e.parent()).offset(e.offset())[0]})},_unblockFrames:function(){this.iframeBlocks&&(this.iframeBlocks.remove(),delete this.iframeBlocks)},_allowInteraction:function(e){return t(e.target).closest(".ui-dialog").length?!0:!!t(e.target).closest(".ui-datepicker").length},_createOverlay:function(){if(this.options.modal){var e=!0;this._delay(function(){e=!1}),this.document.data("ui-dialog-overlays")||this._on(this.document,{focusin:function(t){e||this._allowInteraction(t)||(t.preventDefault(),this._trackingInstances()[0]._focusTabbable())}}),this.overlay=t("<div>").appendTo(this._appendTo()),this._addClass(this.overlay,null,"ui-widget-overlay ui-front"),this._on(this.overlay,{mousedown:"_keepFocus"}),this.document.data("ui-dialog-overlays",(this.document.data("ui-dialog-overlays")||0)+1)}},_destroyOverlay:function(){if(this.options.modal&&this.overlay){var t=this.document.data("ui-dialog-overlays")-1;t?this.document.data("ui-dialog-overlays",t):(this._off(this.document,"focusin"),this.document.removeData("ui-dialog-overlays")),this.overlay.remove(),this.overlay=null}}}),t.uiBackCompat!==!1&&t.widget("ui.dialog",t.ui.dialog,{options:{dialogClass:""},_createWrapper:function(){this._super(),this.uiDialog.addClass(this.options.dialogClass)},_setOption:function(t,e){"dialogClass"===t&&this.uiDialog.removeClass(this.options.dialogClass).addClass(e),this._superApply(arguments)}}),t.ui.dialog,t.widget("ui.droppable",{version:"1.12.1",widgetEventPrefix:"drop",options:{accept:"*",addClasses:!0,greedy:!1,scope:"default",tolerance:"intersect",activate:null,deactivate:null,drop:null,out:null,over:null},_create:function(){var e,i=this.options,s=i.accept;this.isover=!1,this.isout=!0,this.accept=t.isFunction(s)?s:function(t){return t.is(s)},this.proportions=function(){return arguments.length?(e=arguments[0],void 0):e?e:e={width:this.element[0].offsetWidth,height:this.element[0].offsetHeight}},this._addToManager(i.scope),i.addClasses&&this._addClass("ui-droppable")},_addToManager:function(e){t.ui.ddmanager.droppables[e]=t.ui.ddmanager.droppables[e]||[],t.ui.ddmanager.droppables[e].push(this)},_splice:function(t){for(var e=0;t.length>e;e++)t[e]===this&&t.splice(e,1)},_destroy:function(){var e=t.ui.ddmanager.droppables[this.options.scope];this._splice(e)},_setOption:function(e,i){if("accept"===e)this.accept=t.isFunction(i)?i:function(t){return t.is(i)};else if("scope"===e){var s=t.ui.ddmanager.droppables[this.options.scope];this._splice(s),this._addToManager(i)}this._super(e,i)},_activate:function(e){var i=t.ui.ddmanager.current;this._addActiveClass(),i&&this._trigger("activate",e,this.ui(i))},_deactivate:function(e){var i=t.ui.ddmanager.current;this._removeActiveClass(),i&&this._trigger("deactivate",e,this.ui(i))},_over:function(e){var i=t.ui.ddmanager.current;i&&(i.currentItem||i.element)[0]!==this.element[0]&&this.accept.call(this.element[0],i.currentItem||i.element)&&(this._addHoverClass(),this._trigger("over",e,this.ui(i)))},_out:function(e){var i=t.ui.ddmanager.current;i&&(i.currentItem||i.element)[0]!==this.element[0]&&this.accept.call(this.element[0],i.currentItem||i.element)&&(this._removeHoverClass(),this._trigger("out",e,this.ui(i)))},_drop:function(e,i){var s=i||t.ui.ddmanager.current,n=!1;return s&&(s.currentItem||s.element)[0]!==this.element[0]?(this.element.find(":data(ui-droppable)").not(".ui-draggable-dragging").each(function(){var i=t(this).droppable("instance");return i.options.greedy&&!i.options.disabled&&i.options.scope===s.options.scope&&i.accept.call(i.element[0],s.currentItem||s.element)&&v(s,t.extend(i,{offset:i.element.offset()}),i.options.tolerance,e)?(n=!0,!1):void 0}),n?!1:this.accept.call(this.element[0],s.currentItem||s.element)?(this._removeActiveClass(),this._removeHoverClass(),this._trigger("drop",e,this.ui(s)),this.element):!1):!1},ui:function(t){return{draggable:t.currentItem||t.element,helper:t.helper,position:t.position,offset:t.positionAbs}},_addHoverClass:function(){this._addClass("ui-droppable-hover")},_removeHoverClass:function(){this._removeClass("ui-droppable-hover")},_addActiveClass:function(){this._addClass("ui-droppable-active")},_removeActiveClass:function(){this._removeClass("ui-droppable-active")}});var v=t.ui.intersect=function(){function t(t,e,i){return t>=e&&e+i>t}return function(e,i,s,n){if(!i.offset)return!1;var o=(e.positionAbs||e.position.absolute).left+e.margins.left,a=(e.positionAbs||e.position.absolute).top+e.margins.top,r=o+e.helperProportions.width,h=a+e.helperProportions.height,l=i.offset.left,c=i.offset.top,u=l+i.proportions().width,d=c+i.proportions().height;switch(s){case"fit":return o>=l&&u>=r&&a>=c&&d>=h;case"intersect":return o+e.helperProportions.width/2>l&&u>r-e.helperProportions.width/2&&a+e.helperProportions.height/2>c&&d>h-e.helperProportions.height/2;case"pointer":return t(n.pageY,c,i.proportions().height)&&t(n.pageX,l,i.proportions().width);case"touch":return(a>=c&&d>=a||h>=c&&d>=h||c>a&&h>d)&&(o>=l&&u>=o||r>=l&&u>=r||l>o&&r>u);default:return!1}}}();t.ui.ddmanager={current:null,droppables:{"default":[]},prepareOffsets:function(e,i){var s,n,o=t.ui.ddmanager.droppables[e.options.scope]||[],a=i?i.type:null,r=(e.currentItem||e.element).find(":data(ui-droppable)").addBack();t:for(s=0;o.length>s;s++)if(!(o[s].options.disabled||e&&!o[s].accept.call(o[s].element[0],e.currentItem||e.element))){for(n=0;r.length>n;n++)if(r[n]===o[s].element[0]){o[s].proportions().height=0;continue t}o[s].visible="none"!==o[s].element.css("display"),o[s].visible&&("mousedown"===a&&o[s]._activate.call(o[s],i),o[s].offset=o[s].element.offset(),o[s].proportions({width:o[s].element[0].offsetWidth,height:o[s].element[0].offsetHeight}))}},drop:function(e,i){var s=!1;return t.each((t.ui.ddmanager.droppables[e.options.scope]||[]).slice(),function(){this.options&&(!this.options.disabled&&this.visible&&v(e,this,this.options.tolerance,i)&&(s=this._drop.call(this,i)||s),!this.options.disabled&&this.visible&&this.accept.call(this.element[0],e.currentItem||e.element)&&(this.isout=!0,this.isover=!1,this._deactivate.call(this,i)))}),s},dragStart:function(e,i){e.element.parentsUntil("body").on("scroll.droppable",function(){e.options.refreshPositions||t.ui.ddmanager.prepareOffsets(e,i)})},drag:function(e,i){e.options.refreshPositions&&t.ui.ddmanager.prepareOffsets(e,i),t.each(t.ui.ddmanager.droppables[e.options.scope]||[],function(){if(!this.options.disabled&&!this.greedyChild&&this.visible){var s,n,o,a=v(e,this,this.options.tolerance,i),r=!a&&this.isover?"isout":a&&!this.isover?"isover":null;r&&(this.options.greedy&&(n=this.options.scope,o=this.element.parents(":data(ui-droppable)").filter(function(){return t(this).droppable("instance").options.scope===n}),o.length&&(s=t(o[0]).droppable("instance"),s.greedyChild="isover"===r)),s&&"isover"===r&&(s.isover=!1,s.isout=!0,s._out.call(s,i)),this[r]=!0,this["isout"===r?"isover":"isout"]=!1,this["isover"===r?"_over":"_out"].call(this,i),s&&"isout"===r&&(s.isout=!1,s.isover=!0,s._over.call(s,i)))}})},dragStop:function(e,i){e.element.parentsUntil("body").off("scroll.droppable"),e.options.refreshPositions||t.ui.ddmanager.prepareOffsets(e,i)}},t.uiBackCompat!==!1&&t.widget("ui.droppable",t.ui.droppable,{options:{hoverClass:!1,activeClass:!1},_addActiveClass:function(){this._super(),this.options.activeClass&&this.element.addClass(this.options.activeClass)},_removeActiveClass:function(){this._super(),this.options.activeClass&&this.element.removeClass(this.options.activeClass)},_addHoverClass:function(){this._super(),this.options.hoverClass&&this.element.addClass(this.options.hoverClass)},_removeHoverClass:function(){this._super(),this.options.hoverClass&&this.element.removeClass(this.options.hoverClass)}}),t.ui.droppable,t.widget("ui.progressbar",{version:"1.12.1",options:{classes:{"ui-progressbar":"ui-corner-all","ui-progressbar-value":"ui-corner-left","ui-progressbar-complete":"ui-corner-right"},max:100,value:0,change:null,complete:null},min:0,_create:function(){this.oldValue=this.options.value=this._constrainedValue(),this.element.attr({role:"progressbar","aria-valuemin":this.min}),this._addClass("ui-progressbar","ui-widget ui-widget-content"),this.valueDiv=t("<div>").appendTo(this.element),this._addClass(this.valueDiv,"ui-progressbar-value","ui-widget-header"),this._refreshValue()},_destroy:function(){this.element.removeAttr("role aria-valuemin aria-valuemax aria-valuenow"),this.valueDiv.remove()},value:function(t){return void 0===t?this.options.value:(this.options.value=this._constrainedValue(t),this._refreshValue(),void 0)},_constrainedValue:function(t){return void 0===t&&(t=this.options.value),this.indeterminate=t===!1,"number"!=typeof t&&(t=0),this.indeterminate?!1:Math.min(this.options.max,Math.max(this.min,t))},_setOptions:function(t){var e=t.value;delete t.value,this._super(t),this.options.value=this._constrainedValue(e),this._refreshValue()},_setOption:function(t,e){"max"===t&&(e=Math.max(this.min,e)),this._super(t,e)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",t),this._toggleClass(null,"ui-state-disabled",!!t)},_percentage:function(){return this.indeterminate?100:100*(this.options.value-this.min)/(this.options.max-this.min)},_refreshValue:function(){var e=this.options.value,i=this._percentage();this.valueDiv.toggle(this.indeterminate||e>this.min).width(i.toFixed(0)+"%"),this._toggleClass(this.valueDiv,"ui-progressbar-complete",null,e===this.options.max)._toggleClass("ui-progressbar-indeterminate",null,this.indeterminate),this.indeterminate?(this.element.removeAttr("aria-valuenow"),this.overlayDiv||(this.overlayDiv=t("<div>").appendTo(this.valueDiv),this._addClass(this.overlayDiv,"ui-progressbar-overlay"))):(this.element.attr({"aria-valuemax":this.options.max,"aria-valuenow":e}),this.overlayDiv&&(this.overlayDiv.remove(),this.overlayDiv=null)),this.oldValue!==e&&(this.oldValue=e,this._trigger("change")),e===this.options.max&&this._trigger("complete")}}),t.widget("ui.selectable",t.ui.mouse,{version:"1.12.1",options:{appendTo:"body",autoRefresh:!0,distance:0,filter:"*",tolerance:"touch",selected:null,selecting:null,start:null,stop:null,unselected:null,unselecting:null},_create:function(){var e=this;this._addClass("ui-selectable"),this.dragged=!1,this.refresh=function(){e.elementPos=t(e.element[0]).offset(),e.selectees=t(e.options.filter,e.element[0]),e._addClass(e.selectees,"ui-selectee"),e.selectees.each(function(){var i=t(this),s=i.offset(),n={left:s.left-e.elementPos.left,top:s.top-e.elementPos.top};t.data(this,"selectable-item",{element:this,$element:i,left:n.left,top:n.top,right:n.left+i.outerWidth(),bottom:n.top+i.outerHeight(),startselected:!1,selected:i.hasClass("ui-selected"),selecting:i.hasClass("ui-selecting"),unselecting:i.hasClass("ui-unselecting")})})},this.refresh(),this._mouseInit(),this.helper=t("<div>"),this._addClass(this.helper,"ui-selectable-helper")},_destroy:function(){this.selectees.removeData("selectable-item"),this._mouseDestroy()},_mouseStart:function(e){var i=this,s=this.options;this.opos=[e.pageX,e.pageY],this.elementPos=t(this.element[0]).offset(),this.options.disabled||(this.selectees=t(s.filter,this.element[0]),this._trigger("start",e),t(s.appendTo).append(this.helper),this.helper.css({left:e.pageX,top:e.pageY,width:0,height:0}),s.autoRefresh&&this.refresh(),this.selectees.filter(".ui-selected").each(function(){var s=t.data(this,"selectable-item");s.startselected=!0,e.metaKey||e.ctrlKey||(i._removeClass(s.$element,"ui-selected"),s.selected=!1,i._addClass(s.$element,"ui-unselecting"),s.unselecting=!0,i._trigger("unselecting",e,{unselecting:s.element}))}),t(e.target).parents().addBack().each(function(){var s,n=t.data(this,"selectable-item");return n?(s=!e.metaKey&&!e.ctrlKey||!n.$element.hasClass("ui-selected"),i._removeClass(n.$element,s?"ui-unselecting":"ui-selected")._addClass(n.$element,s?"ui-selecting":"ui-unselecting"),n.unselecting=!s,n.selecting=s,n.selected=s,s?i._trigger("selecting",e,{selecting:n.element}):i._trigger("unselecting",e,{unselecting:n.element}),!1):void 0}))},_mouseDrag:function(e){if(this.dragged=!0,!this.options.disabled){var i,s=this,n=this.options,o=this.opos[0],a=this.opos[1],r=e.pageX,h=e.pageY;return o>r&&(i=r,r=o,o=i),a>h&&(i=h,h=a,a=i),this.helper.css({left:o,top:a,width:r-o,height:h-a}),this.selectees.each(function(){var i=t.data(this,"selectable-item"),l=!1,c={};i&&i.element!==s.element[0]&&(c.left=i.left+s.elementPos.left,c.right=i.right+s.elementPos.left,c.top=i.top+s.elementPos.top,c.bottom=i.bottom+s.elementPos.top,"touch"===n.tolerance?l=!(c.left>r||o>c.right||c.top>h||a>c.bottom):"fit"===n.tolerance&&(l=c.left>o&&r>c.right&&c.top>a&&h>c.bottom),l?(i.selected&&(s._removeClass(i.$element,"ui-selected"),i.selected=!1),i.unselecting&&(s._removeClass(i.$element,"ui-unselecting"),i.unselecting=!1),i.selecting||(s._addClass(i.$element,"ui-selecting"),i.selecting=!0,s._trigger("selecting",e,{selecting:i.element}))):(i.selecting&&((e.metaKey||e.ctrlKey)&&i.startselected?(s._removeClass(i.$element,"ui-selecting"),i.selecting=!1,s._addClass(i.$element,"ui-selected"),i.selected=!0):(s._removeClass(i.$element,"ui-selecting"),i.selecting=!1,i.startselected&&(s._addClass(i.$element,"ui-unselecting"),i.unselecting=!0),s._trigger("unselecting",e,{unselecting:i.element}))),i.selected&&(e.metaKey||e.ctrlKey||i.startselected||(s._removeClass(i.$element,"ui-selected"),i.selected=!1,s._addClass(i.$element,"ui-unselecting"),i.unselecting=!0,s._trigger("unselecting",e,{unselecting:i.element})))))}),!1}},_mouseStop:function(e){var i=this;return this.dragged=!1,t(".ui-unselecting",this.element[0]).each(function(){var s=t.data(this,"selectable-item");i._removeClass(s.$element,"ui-unselecting"),s.unselecting=!1,s.startselected=!1,i._trigger("unselected",e,{unselected:s.element})}),t(".ui-selecting",this.element[0]).each(function(){var s=t.data(this,"selectable-item");i._removeClass(s.$element,"ui-selecting")._addClass(s.$element,"ui-selected"),s.selecting=!1,s.selected=!0,s.startselected=!0,i._trigger("selected",e,{selected:s.element})}),this._trigger("stop",e),this.helper.remove(),!1}}),t.widget("ui.selectmenu",[t.ui.formResetMixin,{version:"1.12.1",defaultElement:"<select>",options:{appendTo:null,classes:{"ui-selectmenu-button-open":"ui-corner-top","ui-selectmenu-button-closed":"ui-corner-all"},disabled:null,icons:{button:"ui-icon-triangle-1-s"},position:{my:"left top",at:"left bottom",collision:"none"}
vendor: 4,710 bytes, line 15
15,width:!1,change:null,close:null,focus:null,open:null,select:null},_create:function(){var e=this.element.uniqueId().attr("id");this.ids={element:e,button:e+"-button",menu:e+"-menu"},this._drawButton(),this._drawMenu(),this._bindFormResetHandler(),this._rendered=!1,this.menuItems=t()},_drawButton:function(){var e,i=this,s=this._parseOption(this.element.find("option:selected"),this.element[0].selectedIndex);this.labels=this.element.labels().attr("for",this.ids.button),this._on(this.labels,{click:function(t){this.button.focus(),t.preventDefault()}}),this.element.hide(),this.button=t("<span>",{tabindex:this.options.disabled?-1:0,id:this.ids.button,role:"combobox","aria-expanded":"false","aria-autocomplete":"list","aria-owns":this.ids.menu,"aria-haspopup":"true",title:this.element.attr("title")}).insertAfter(this.element),this._addClass(this.button,"ui-selectmenu-button ui-selectmenu-button-closed","ui-button ui-widget"),e=t("<span>").appendTo(this.button),this._addClass(e,"ui-selectmenu-icon","ui-icon "+this.options.icons.button),this.buttonItem=this._renderButtonItem(s).appendTo(this.button),this.options.width!==!1&&this._resizeButton(),this._on(this.button,this._buttonEvents),this.button.one("focusin",function(){i._rendered||i._refreshMenu()})},_drawMenu:function(){var e=this;this.menu=t("<ul>",{"aria-hidden":"true","aria-labelledby":this.ids.button,id:this.ids.menu}),this.menuWrap=t("<div>").append(this.menu),this._addClass(this.menuWrap,"ui-selectmenu-menu","ui-front"),this.menuWrap.appendTo(this._appendTo()),this.menuInstance=this.menu.menu({classes:{"ui-menu":"ui-corner-bottom"},role:"listbox",select:function(t,i){t.preventDefault(),e._setSelection(),e._select(i.item.data("ui-selectmenu-item"),t)},focus:function(t,i){var s=i.item.data("ui-selectmenu-item");null!=e.focusIndex&&s.index!==e.focusIndex&&(e._trigger("focus",t,{item:s}),e.isOpen||e._select(s,t)),e.focusIndex=s.index,e.button.attr("aria-activedescendant",e.menuItems.eq(s.index).attr("id"))}}).menu("instance"),this.menuInstance._off(this.menu,"mouseleave"),this.menuInstance._closeOnDocumentClick=function(){return!1},this.menuInstance._isDivider=function(){return!1}},refresh:function(){this._refreshMenu(),this.buttonItem.replaceWith(this.buttonItem=this._renderButtonItem(this._getSelectedItem().data("ui-selectmenu-item")||{})),null===this.options.width&&this._resizeButton()},_refreshMenu:function(){var t,e=this.element.find("option");this.menu.empty(),this._parseOptions(e),this._renderMenu(this.menu,this.items),this.menuInstance.refresh(),this.menuItems=this.menu.find("li").not(".ui-selectmenu-optgroup").find(".ui-menu-item-wrapper"),this._rendered=!0,e.length&&(t=this._getSelectedItem(),this.menuInstance.focus(null,t),this._setAria(t.data("ui-selectmenu-item")),this._setOption("disabled",this.element.prop("disabled")))},open:function(t){this.options.disabled||(this._rendered?(this._removeClass(this.menu.find(".ui-state-active"),null,"ui-state-active"),this.menuInstance.focus(null,this._getSelectedItem())):this._refreshMenu(),this.menuItems.length&&(this.isOpen=!0,this._toggleAttr(),this._resizeMenu(),this._position(),this._on(this.document,this._documentClick),this._trigger("open",t)))},_position:function(){this.menuWrap.position(t.extend({of:this.button},this.options.position))},close:function(t){this.isOpen&&(this.isOpen=!1,this._toggleAttr(),this.range=null,this._off(this.document),this._trigger("close",t))},widget:function(){return this.button},menuWidget:function(){return this.menu},_renderButtonItem:function(e){var i=t("<span>");return this._setText(i,e.label),this._addClass(i,"ui-selectmenu-text"),i},_renderMenu:function(e,i){var s=this,n="";t.each(i,function(i,o){var a;o.optgroup!==n&&(a=t("<li>",{text:o.optgroup}),s._addClass(a,"ui-selectmenu-optgroup","ui-menu-divider"+(o.element.parent("optgroup").prop("disabled")?" ui-state-disabled":"")),a.appendTo(e),n=o.optgroup),s._renderItemData(e,o)})},_renderItemData:function(t,e){return this._renderItem(t,e).data("ui-selectmenu-item",e)},_renderItem:function(e,i){var s=t("<li>"),n=t("<div>",{title:i.element.attr("title")});return i.disabled&&this._addClass(s,null,"ui-state-disabled"),this._setText(n,i.label),s.append(n).appendTo(e)},_setText:function(t,e){e?t.text(e):t.html("&#160;")},_move:function(t,e){var i,s,n=".ui-menu-item";this.isOpen?i=this.menuItems.eq(this.focusIndex).parent("li"):(i=this.menuItems.eq(this.element[0].selectedIndex).parent("li"),n+=":not(.ui-state-disabled)"),s="first"===t||"last"===t?i["first"===t?"prevAll":"nextAll"](n).eq(-1):i[t+"All"](n).eq(0),s.length&&this.menuInstance.focus(e,s)},_getSelectedItem:function(){return this.menuItems.eq(this.element[0].selectedIndex).parent("li")}
vendor: 15,052 bytes, lines 15-16
15,_toggle:function(t){this[this.isOpen?"close":"open"](t)},_setSelection:function(){var t;this.range&&(window.getSelection?(t=window.getSelection(),t.removeAllRanges(),t.addRange(this.range)):this.range.select(),this.button.focus())},_documentClick:{mousedown:function(e){this.isOpen&&(t(e.target).closest(".ui-selectmenu-menu, #"+t.ui.escapeSelector(this.ids.button)).length||this.close(e))}},_buttonEvents:{mousedown:function(){var t;window.getSelection?(t=window.getSelection(),t.rangeCount&&(this.range=t.getRangeAt(0))):this.range=document.selection.createRange()},click:function(t){this._setSelection(),this._toggle(t)},keydown:function(e){var i=!0;switch(e.keyCode){case t.ui.keyCode.TAB:case t.ui.keyCode.ESCAPE:this.close(e),i=!1;break;case t.ui.keyCode.ENTER:this.isOpen&&this._selectFocusedItem(e);break;case t.ui.keyCode.UP:e.altKey?this._toggle(e):this._move("prev",e);break;case t.ui.keyCode.DOWN:e.altKey?this._toggle(e):this._move("next",e);break;case t.ui.keyCode.SPACE:this.isOpen?this._selectFocusedItem(e):this._toggle(e);break;case t.ui.keyCode.LEFT:this._move("prev",e);break;case t.ui.keyCode.RIGHT:this._move("next",e);break;case t.ui.keyCode.HOME:case t.ui.keyCode.PAGE_UP:this._move("first",e);break;case t.ui.keyCode.END:case t.ui.keyCode.PAGE_DOWN:this._move("last",e);break;default:this.menu.trigger(e),i=!1}i&&e.preventDefault()}},_selectFocusedItem:function(t){var e=this.menuItems.eq(this.focusIndex).parent("li");e.hasClass("ui-state-disabled")||this._select(e.data("ui-selectmenu-item"),t)},_select:function(t,e){var i=this.element[0].selectedIndex;this.element[0].selectedIndex=t.index,this.buttonItem.replaceWith(this.buttonItem=this._renderButtonItem(t)),this._setAria(t),this._trigger("select",e,{item:t}),t.index!==i&&this._trigger("change",e,{item:t}),this.close(e)},_setAria:function(t){var e=this.menuItems.eq(t.index).attr("id");this.button.attr({"aria-labelledby":e,"aria-activedescendant":e}),this.menu.attr("aria-activedescendant",e)},_setOption:function(t,e){if("icons"===t){var i=this.button.find("span.ui-icon");this._removeClass(i,null,this.options.icons.button)._addClass(i,null,e.button)}this._super(t,e),"appendTo"===t&&this.menuWrap.appendTo(this._appendTo()),"width"===t&&this._resizeButton()},_setOptionDisabled:function(t){this._super(t),this.menuInstance.option("disabled",t),this.button.attr("aria-disabled",t),this._toggleClass(this.button,null,"ui-state-disabled",t),this.element.prop("disabled",t),t?(this.button.attr("tabindex",-1),this.close()):this.button.attr("tabindex",0)},_appendTo:function(){var e=this.options.appendTo;return e&&(e=e.jquery||e.nodeType?t(e):this.document.find(e).eq(0)),e&&e[0]||(e=this.element.closest(".ui-front, dialog")),e.length||(e=this.document[0].body),e},_toggleAttr:function(){this.button.attr("aria-expanded",this.isOpen),this._removeClass(this.button,"ui-selectmenu-button-"+(this.isOpen?"closed":"open"))._addClass(this.button,"ui-selectmenu-button-"+(this.isOpen?"open":"closed"))._toggleClass(this.menuWrap,"ui-selectmenu-open",null,this.isOpen),this.menu.attr("aria-hidden",!this.isOpen)},_resizeButton:function(){var t=this.options.width;return t===!1?(this.button.css("width",""),void 0):(null===t&&(t=this.element.show().outerWidth(),this.element.hide()),this.button.outerWidth(t),void 0)},_resizeMenu:function(){this.menu.outerWidth(Math.max(this.button.outerWidth(),this.menu.width("").outerWidth()+1))},_getCreateOptions:function(){var t=this._super();return t.disabled=this.element.prop("disabled"),t},_parseOptions:function(e){var i=this,s=[];e.each(function(e,n){s.push(i._parseOption(t(n),e))}),this.items=s},_parseOption:function(t,e){var i=t.parent("optgroup");return{element:t,index:e,value:t.val(),label:t.text(),optgroup:i.attr("label")||"",disabled:i.prop("disabled")||t.prop("disabled")}},_destroy:function(){this._unbindFormResetHandler(),this.menuWrap.remove(),this.button.remove(),this.element.show(),this.element.removeUniqueId(),this.labels.attr("for",this.ids.element)}}]),t.widget("ui.slider",t.ui.mouse,{version:"1.12.1",widgetEventPrefix:"slide",options:{animate:!1,classes:{"ui-slider":"ui-corner-all","ui-slider-handle":"ui-corner-all","ui-slider-range":"ui-corner-all ui-widget-header"},distance:0,max:100,min:0,orientation:"horizontal",range:!1,step:1,value:0,values:null,change:null,slide:null,start:null,stop:null},numPages:5,_create:function(){this._keySliding=!1,this._mouseSliding=!1,this._animateOff=!0,this._handleIndex=null,this._detectOrientation(),this._mouseInit(),this._calculateNewMax(),this._addClass("ui-slider ui-slider-"+this.orientation,"ui-widget ui-widget-content"),this._refresh(),this._animateOff=!1
16},_refresh:function(){this._createRange(),this._createHandles(),this._setupEvents(),this._refreshValue()},_createHandles:function(){var e,i,s=this.options,n=this.element.find(".ui-slider-handle"),o="<span tabindex='0'></span>",a=[];for(i=s.values&&s.values.length||1,n.length>i&&(n.slice(i).remove(),n=n.slice(0,i)),e=n.length;i>e;e++)a.push(o);this.handles=n.add(t(a.join("")).appendTo(this.element)),this._addClass(this.handles,"ui-slider-handle","ui-state-default"),this.handle=this.handles.eq(0),this.handles.each(function(e){t(this).data("ui-slider-handle-index",e).attr("tabIndex",0)})},_createRange:function(){var e=this.options;e.range?(e.range===!0&&(e.values?e.values.length&&2!==e.values.length?e.values=[e.values[0],e.values[0]]:t.isArray(e.values)&&(e.values=e.values.slice(0)):e.values=[this._valueMin(),this._valueMin()]),this.range&&this.range.length?(this._removeClass(this.range,"ui-slider-range-min ui-slider-range-max"),this.range.css({left:"",bottom:""})):(this.range=t("<div>").appendTo(this.element),this._addClass(this.range,"ui-slider-range")),("min"===e.range||"max"===e.range)&&this._addClass(this.range,"ui-slider-range-"+e.range)):(this.range&&this.range.remove(),this.range=null)},_setupEvents:function(){this._off(this.handles),this._on(this.handles,this._handleEvents),this._hoverable(this.handles),this._focusable(this.handles)},_destroy:function(){this.handles.remove(),this.range&&this.range.remove(),this._mouseDestroy()},_mouseCapture:function(e){var i,s,n,o,a,r,h,l,c=this,u=this.options;return u.disabled?!1:(this.elementSize={width:this.element.outerWidth(),height:this.element.outerHeight()},this.elementOffset=this.element.offset(),i={x:e.pageX,y:e.pageY},s=this._normValueFromMouse(i),n=this._valueMax()-this._valueMin()+1,this.handles.each(function(e){var i=Math.abs(s-c.values(e));(n>i||n===i&&(e===c._lastChangedValue||c.values(e)===u.min))&&(n=i,o=t(this),a=e)}),r=this._start(e,a),r===!1?!1:(this._mouseSliding=!0,this._handleIndex=a,this._addClass(o,null,"ui-state-active"),o.trigger("focus"),h=o.offset(),l=!t(e.target).parents().addBack().is(".ui-slider-handle"),this._clickOffset=l?{left:0,top:0}:{left:e.pageX-h.left-o.width()/2,top:e.pageY-h.top-o.height()/2-(parseInt(o.css("borderTopWidth"),10)||0)-(parseInt(o.css("borderBottomWidth"),10)||0)+(parseInt(o.css("marginTop"),10)||0)},this.handles.hasClass("ui-state-hover")||this._slide(e,a,s),this._animateOff=!0,!0))},_mouseStart:function(){return!0},_mouseDrag:function(t){var e={x:t.pageX,y:t.pageY},i=this._normValueFromMouse(e);return this._slide(t,this._handleIndex,i),!1},_mouseStop:function(t){return this._removeClass(this.handles,null,"ui-state-active"),this._mouseSliding=!1,this._stop(t,this._handleIndex),this._change(t,this._handleIndex),this._handleIndex=null,this._clickOffset=null,this._animateOff=!1,!1},_detectOrientation:function(){this.orientation="vertical"===this.options.orientation?"vertical":"horizontal"},_normValueFromMouse:function(t){var e,i,s,n,o;return"horizontal"===this.orientation?(e=this.elementSize.width,i=t.x-this.elementOffset.left-(this._clickOffset?this._clickOffset.left:0)):(e=this.elementSize.height,i=t.y-this.elementOffset.top-(this._clickOffset?this._clickOffset.top:0)),s=i/e,s>1&&(s=1),0>s&&(s=0),"vertical"===this.orientation&&(s=1-s),n=this._valueMax()-this._valueMin(),o=this._valueMin()+s*n,this._trimAlignValue(o)},_uiHash:function(t,e,i){var s={handle:this.handles[t],handleIndex:t,value:void 0!==e?e:this.value()};return this._hasMultipleValues()&&(s.value=void 0!==e?e:this.values(t),s.values=i||this.values()),s},_hasMultipleValues:function(){return this.options.values&&this.options.values.length},_start:function(t,e){return this._trigger("start",t,this._uiHash(e))},_slide:function(t,e,i){var s,n,o=this.value(),a=this.values();this._hasMultipleValues()&&(n=this.values(e?0:1),o=this.values(e),2===this.options.values.length&&this.options.range===!0&&(i=0===e?Math.min(n,i):Math.max(n,i)),a[e]=i),i!==o&&(s=this._trigger("slide",t,this._uiHash(e,i,a)),s!==!1&&(this._hasMultipleValues()?this.values(e,i):this.value(i)))},_stop:function(t,e){this._trigger("stop",t,this._uiHash(e))},_change:function(t,e){this._keySliding||this._mouseSliding||(this._lastChangedValue=e,this._trigger("change",t,this._uiHash(e)))},value:function(t){return arguments.length?(this.options.value=this._trimAlignValue(t),this._refreshValue(),this._change(null,0),void 0):this._value()},values:function(e,i){var s,n,o;if(arguments.length>1)return this.options.values[e]=this._trimAlignValue(i),this._refreshValue(),this._change(null,e),void 0;if(!arguments.length)return this._values();if(!t.isArray(arguments[0]))return this._hasMultipleValues()?this._values(e):this.value();for(s=this.options.values,n=arguments[0],o=0;s.length>o;o+=1)s[o]=this._trimAlignValue(n[o]),this._change(null,o);this._refreshValue()},_setOption:function(e,i){var s,n=0;switch("range"===e&&this.options.range===!0&&("min"===i?(this.options.value=this._values(0),this.options.values=null):"max"===i&&(this.options.value=this._values(this.options.values.length-1),this.options.values=null)),t.isArray(this.options.values)&&(n=this.options.values.length),this._super(e,i),e){case"orientation":this._detectOrientation(),this._removeClass("ui-slider-horizontal ui-slider-vertical")._addClass("ui-slider-"+this.orientation),this._refreshValue(),this.options.range&&this._refreshRange(i),this.handles.css("horizontal"===i?"bottom":"left","");break;case"value":this._animateOff=!0,this._refreshValue(),this._change(null,0),this._animateOff=!1;break;case"values":for(this._animateOff=!0,this._refreshValue(),s=n-1;s>=0;s--)this._change(null,s);this._animateOff=!1;break;case"step":case"min":case"max":this._animateOff=!0,this._calculateNewMax(),this._refreshValue(),this._animateOff=!1;break;case"range":this._animateOff=!0,this._refresh(),this._animateOff=!1}},_setOptionDisabled:function(t){this._super(t),this._toggleClass(null,"ui-state-disabled",!!t)},_value:function(){var t=this.options.value;return t=this._trimAlignValue(t)},_values:function(t){var e,i,s;if(arguments.length)return e=this.options.values[t],e=this._trimAlignValue(e);if(this._hasMultipleValues()){for(i=this.options.values.slice(),s=0;i.length>s;s+=1)i[s]=this._trimAlignValue(i[s]);return i}return[]},_trimAlignValue:function(t){if(this._valueMin()>=t)return this._valueMin();if(t>=this._valueMax())return this._valueMax();var e=this.options.step>0?this.options.step:1,i=(t-this._valueMin())%e,s=t-i;return 2*Math.abs(i)>=e&&(s+=i>0?e:-e),parseFloat(s.toFixed(5))},_calculateNewMax:function(){var t=this.options.max,e=this._valueMin(),i=this.options.step,s=Math.round((t-e)/i)*i;t=s+e,t>this.options.max&&(t-=i),this.max=parseFloat(t.toFixed(this._precision()))},_precision:function(){var t=this._precisionOf(this.options.step);return null!==this.options.min&&(t=Math.max(t,this._precisionOf(this.options.min))),t},_precisionOf:function(t){var e=""+t,i=e.indexOf(".");return-1===i?0:e.length-i-1},_valueMin:function(){return this.options.min},_valueMax:function(){return this.max},_refreshRange:function(t){"vertical"===t&&this.range.css({width:"",left:""}),"horizontal"===t&&this.range.css({height:"",bottom:""})},_refreshValue:function(){var e,i,s,n,o,a=this.options.range,r=this.options,h=this,l=this._animateOff?!1:r.animate,c={};this._hasMultipleValues()?this.handles.each(function(s){i=100*((h.values(s)-h._valueMin())/(h._valueMax()-h._valueMin())),c["horizontal"===h.orientation?"left":"bottom"]=i+"%",t(this).stop(1,1)[l?"animate":"css"](c,r.animate),h.options.range===!0&&("horizontal"===h.orientation?(0===s&&h.range.stop(1,1)[l?"animate":"css"]({left:i+"%"},r.animate),1===s&&h.range[l?"animate":"css"]({width:i-e+"%"},{queue:!1,duration:r.animate})):(0===s&&h.range.stop(1,1)[l?"animate":"css"]({bottom:i+"%"},r.animate),1===s&&h.range[l?"animate":"css"]({height:i-e+"%"},{queue:!1,duration:r.animate}))),e=i}):(s=this.value(),n=this._valueMin(),o=this._valueMax(),i=o!==n?100*((s-n)/(o-n)):0,c["horizontal"===this.orientation?"left":"bottom"]=i+"%",this.handle.stop(1,1)[l?"animate":"css"](c,r.animate),"min"===a&&"horizontal"===this.orientation&&this.range.stop(1,1)[l?"animate":"css"]({width:i+"%"},r.animate),"max"===a&&"horizontal"===this.orientation&&this.range.stop(1,1)[l?"animate":"css"]({width:100-i+"%"},r.animate),"min"===a&&"vertical"===this.orientation&&this.range.stop(1,1)[l?"animate":"css"]({height:i+"%"},r.animate),"max"===a&&"vertical"===this.orientation&&this.range.stop(1,1)[l?"animate":"css"]({height:100-i+"%"},r.animate))},_handleEvents:{keydown:function(e){var i,s,n,o,a=t(e.target).data("ui-slider-handle-index");switch(e.keyCode){case t.ui.keyCode.HOME:case t.ui.keyCode.END:case t.ui.keyCode.PAGE_UP:case t.ui.keyCode.PAGE_DOWN:case t.ui.keyCode.UP:case t.ui.keyCode.RIGHT:case t.ui.keyCode.DOWN:case t.ui.keyCode.LEFT:if(e.preventDefault(),!this._keySliding&&(this._keySliding=!0,this._addClass(t(e.target),null,"ui-state-active"),i=this._start(e,a),i===!1))return}switch(o=this.options.step,s=n=this._hasMultipleValues()?this.values(a):this.value(),e.keyCode){case t.ui.keyCode.HOME:n=this._valueMin();break;case t.ui.keyCode.END:n=this._valueMax();break;case t.ui.keyCode.PAGE_UP:n=this._trimAlignValue(s+(this._valueMax()-this._valueMin())/this.numPages);break;case t.ui.keyCode.PAGE_DOWN:n=this._trimAlignValue(s-(this._valueMax()-this._valueMin())/this.numPages);break;case t.ui.keyCode.UP:case t.ui.keyCode.RIGHT:if(s===this._valueMax())return;n=this._trimAlignValue(s+o);break;case t.ui.keyCode.DOWN:case t.ui.keyCode.LEFT:if(s===this._valueMin())return;n=this._trimAlignValue(s-o)}this._slide(e,a,n)},keyup:function(e){var i=t(e.target).data("ui-slider-handle-index");this._keySliding&&(this._keySliding=!1,this._stop(e,i),this._change(e,i),this._removeClass(t(e.target),null,"ui-state-active"))}}}),t.widget("ui.sortable",t.ui.mouse,{version:"1.12.1",widgetEventPrefix:"sort",ready:!1,options:{appendTo:"parent",axis:!1,connectWith:!1,containment:!1,cursor:"auto",cursorAt:!1,dropOnEmpty:!0,forcePlaceholderSize:!1,forceHelperSize:!1,grid:!1,handle:!1,helper:"original",items:"> *",opacity:!1,placeholder:!1,revert:!1,scroll:!0,scrollSensitivity:20,scrollSpeed:20,scope:"default",tolerance:"intersect",zIndex:1e3,activate:null,beforeStop:null,change:null,deactivate:null,out:null,over:null,receive:null,remove:null,sort:null,start:null,stop:null,update:null}
vendor: 5,429 bytes, line 16
16,_isOverAxis:function(t,e,i){return t>=e&&e+i>t},_isFloating:function(t){return/left|right/.test(t.css("float"))||/inline|table-cell/.test(t.css("display"))},_create:function(){this.containerCache={},this._addClass("ui-sortable"),this.refresh(),this.offset=this.element.offset(),this._mouseInit(),this._setHandleClassName(),this.ready=!0},_setOption:function(t,e){this._super(t,e),"handle"===t&&this._setHandleClassName()},_setHandleClassName:function(){var e=this;this._removeClass(this.element.find(".ui-sortable-handle"),"ui-sortable-handle"),t.each(this.items,function(){e._addClass(this.instance.options.handle?this.item.find(this.instance.options.handle):this.item,"ui-sortable-handle")})},_destroy:function(){this._mouseDestroy();for(var t=this.items.length-1;t>=0;t--)this.items[t].item.removeData(this.widgetName+"-item");return this},_mouseCapture:function(e,i){var s=null,n=!1,o=this;return this.reverting?!1:this.options.disabled||"static"===this.options.type?!1:(this._refreshItems(e),t(e.target).parents().each(function(){return t.data(this,o.widgetName+"-item")===o?(s=t(this),!1):void 0}),t.data(e.target,o.widgetName+"-item")===o&&(s=t(e.target)),s?!this.options.handle||i||(t(this.options.handle,s).find("*").addBack().each(function(){this===e.target&&(n=!0)}),n)?(this.currentItem=s,this._removeCurrentsFromItems(),!0):!1:!1)},_mouseStart:function(e,i,s){var n,o,a=this.options;if(this.currentContainer=this,this.refreshPositions(),this.helper=this._createHelper(e),this._cacheHelperProportions(),this._cacheMargins(),this.scrollParent=this.helper.scrollParent(),this.offset=this.currentItem.offset(),this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left},t.extend(this.offset,{click:{left:e.pageX-this.offset.left,top:e.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()}),this.helper.css("position","absolute"),this.cssPosition=this.helper.css("position"),this.originalPosition=this._generatePosition(e),this.originalPageX=e.pageX,this.originalPageY=e.pageY,a.cursorAt&&this._adjustOffsetFromHelper(a.cursorAt),this.domPosition={prev:this.currentItem.prev()[0],parent:this.currentItem.parent()[0]},this.helper[0]!==this.currentItem[0]&&this.currentItem.hide(),this._createPlaceholder(),a.containment&&this._setContainment(),a.cursor&&"auto"!==a.cursor&&(o=this.document.find("body"),this.storedCursor=o.css("cursor"),o.css("cursor",a.cursor),this.storedStylesheet=t("<style>*{ cursor: "+a.cursor+" !important; }</style>").appendTo(o)),a.opacity&&(this.helper.css("opacity")&&(this._storedOpacity=this.helper.css("opacity")),this.helper.css("opacity",a.opacity)),a.zIndex&&(this.helper.css("zIndex")&&(this._storedZIndex=this.helper.css("zIndex")),this.helper.css("zIndex",a.zIndex)),this.scrollParent[0]!==this.document[0]&&"HTML"!==this.scrollParent[0].tagName&&(this.overflowOffset=this.scrollParent.offset()),this._trigger("start",e,this._uiHash()),this._preserveHelperProportions||this._cacheHelperProportions(),!s)for(n=this.containers.length-1;n>=0;n--)this.containers[n]._trigger("activate",e,this._uiHash(this));return t.ui.ddmanager&&(t.ui.ddmanager.current=this),t.ui.ddmanager&&!a.dropBehaviour&&t.ui.ddmanager.prepareOffsets(this,e),this.dragging=!0,this._addClass(this.helper,"ui-sortable-helper"),this._mouseDrag(e),!0},_mouseDrag:function(e){var i,s,n,o,a=this.options,r=!1;for(this.position=this._generatePosition(e),this.positionAbs=this._convertPositionTo("absolute"),this.lastPositionAbs||(this.lastPositionAbs=this.positionAbs),this.options.scroll&&(this.scrollParent[0]!==this.document[0]&&"HTML"!==this.scrollParent[0].tagName?(this.overflowOffset.top+this.scrollParent[0].offsetHeight-e.pageY<a.scrollSensitivity?this.scrollParent[0].scrollTop=r=this.scrollParent[0].scrollTop+a.scrollSpeed:e.pageY-this.overflowOffset.top<a.scrollSensitivity&&(this.scrollParent[0].scrollTop=r=this.scrollParent[0].scrollTop-a.scrollSpeed),this.overflowOffset.left+this.scrollParent[0].offsetWidth-e.pageX<a.scrollSensitivity?this.scrollParent[0].scrollLeft=r=this.scrollParent[0].scrollLeft+a.scrollSpeed:e.pageX-this.overflowOffset.left<a.scrollSensitivity&&(this.scrollParent[0].scrollLeft=r=this.scrollParent[0].scrollLeft-a.scrollSpeed)):(e.pageY-this.document.scrollTop()<a.scrollSensitivity?r=this.document.scrollTop(this.document.scrollTop()-a.scrollSpeed):this.window.height()-(e.pageY-this.document.scrollTop())<a.scrollSensitivity&&(r=this.document.scrollTop(this.document.scrollTop()+a.scrollSpeed)),e.pageX-this.document.scrollLeft()<a.scrollSensitivity?r=this.document.scrollLeft(this.document.scrollLeft()-a.scrollSpeed):this.window.width()-(e.pageX-this.document.scrollLeft())<a.scrollSensitivity&&(r=this.document.scrollLeft(this.document.scrollLeft()+a.scrollSpeed))),r!==!1&&t.ui.ddmanager&&!a.dropBehaviour&&t.ui.ddmanager.prepareOffsets(this,e)),this.positionAbs=this._convertPositionTo("absolute"),this.options.axis&&"y"===this.options.axis||(this.helper[0].style.left=this.position.left+"px"),this.options.axis&&"x"===this.options.axis||(this.helper[0].style.top=this.position.top+"px"),i=this.items.length-1;i>=0;i--)if(s=this.items[i],n=s.item[0],o=this._intersectsWithPointer(s),o&&s.instance===this.currentContainer&&n!==this.currentItem[0]&&this.placeholder[1===o?"next":"prev"]()[0]!==n&&!t.contains(this.placeholder[0],n)&&("semi-dynamic"===this.options.type?!t.contains(this.element[0],n):!0)){if
vendor: 4,213 bytes, line 16
16(this.direction=1===o?"down":"up","pointer"!==this.options.tolerance&&!this._intersectsWithSides(s))break;this._rearrange(e,s),this._trigger("change",e,this._uiHash());break}return this._contactContainers(e),t.ui.ddmanager&&t.ui.ddmanager.drag(this,e),this._trigger("sort",e,this._uiHash()),this.lastPositionAbs=this.positionAbs,!1},_mouseStop:function(e,i){if(e){if(t.ui.ddmanager&&!this.options.dropBehaviour&&t.ui.ddmanager.drop(this,e),this.options.revert){var s=this,n=this.placeholder.offset(),o=this.options.axis,a={};o&&"x"!==o||(a.left=n.left-this.offset.parent.left-this.margins.left+(this.offsetParent[0]===this.document[0].body?0:this.offsetParent[0].scrollLeft)),o&&"y"!==o||(a.top=n.top-this.offset.parent.top-this.margins.top+(this.offsetParent[0]===this.document[0].body?0:this.offsetParent[0].scrollTop)),this.reverting=!0,t(this.helper).animate(a,parseInt(this.options.revert,10)||500,function(){s._clear(e)})}else this._clear(e,i);return!1}},cancel:function(){if(this.dragging){this._mouseUp(new t.Event("mouseup",{target:null})),"original"===this.options.helper?(this.currentItem.css(this._storedCSS),this._removeClass(this.currentItem,"ui-sortable-helper")):this.currentItem.show();for(var e=this.containers.length-1;e>=0;e--)this.containers[e]._trigger("deactivate",null,this._uiHash(this)),this.containers[e].containerCache.over&&(this.containers[e]._trigger("out",null,this._uiHash(this)),this.containers[e].containerCache.over=0)}return this.placeholder&&(this.placeholder[0].parentNode&&this.placeholder[0].parentNode.removeChild(this.placeholder[0]),"original"!==this.options.helper&&this.helper&&this.helper[0].parentNode&&this.helper.remove(),t.extend(this,{helper:null,dragging:!1,reverting:!1,_noFinalSort:null}),this.domPosition.prev?t(this.domPosition.prev).after(this.currentItem):t(this.domPosition.parent).prepend(this.currentItem)),this},serialize:function(e){var i=this._getItemsAsjQuery(e&&e.connected),s=[];return e=e||{},t(i).each(function(){var i=(t(e.item||this).attr(e.attribute||"id")||"").match(e.expression||/(.+)[\-=_](.+)/);i&&s.push((e.key||i[1]+"[]")+"="+(e.key&&e.expression?i[1]:i[2]))}),!s.length&&e.key&&s.push(e.key+"="),s.join("&")},toArray:function(e){var i=this._getItemsAsjQuery(e&&e.connected),s=[];return e=e||{},i.each(function(){s.push(t(e.item||this).attr(e.attribute||"id")||"")}),s},_intersectsWith:function(t){var e=this.positionAbs.left,i=e+this.helperProportions.width,s=this.positionAbs.top,n=s+this.helperProportions.height,o=t.left,a=o+t.width,r=t.top,h=r+t.height,l=this.offset.click.top,c=this.offset.click.left,u="x"===this.options.axis||s+l>r&&h>s+l,d="y"===this.options.axis||e+c>o&&a>e+c,p=u&&d;return"pointer"===this.options.tolerance||this.options.forcePointerForContainers||"pointer"!==this.options.tolerance&&this.helperProportions[this.floating?"width":"height"]>t[this.floating?"width":"height"]?p:e+this.helperProportions.width/2>o&&a>i-this.helperProportions.width/2&&s+this.helperProportions.height/2>r&&h>n-this.helperProportions.height/2},_intersectsWithPointer:function(t){var e,i,s="x"===this.options.axis||this._isOverAxis(this.positionAbs.top+this.offset.click.top,t.top,t.height),n="y"===this.options.axis||this._isOverAxis(this.positionAbs.left+this.offset.click.left,t.left,t.width),o=s&&n;return o?(e=this._getDragVerticalDirection(),i=this._getDragHorizontalDirection(),this.floating?"right"===i||"down"===e?2:1:e&&("down"===e?2:1)):!1},_intersectsWithSides:function(t){var e=this._isOverAxis(this.positionAbs.top+this.offset.click.top,t.top+t.height/2,t.height),i=this._isOverAxis(this.positionAbs.left+this.offset.click.left,t.left+t.width/2,t.width),s=this._getDragVerticalDirection(),n=this._getDragHorizontalDirection();return this.floating&&n?"right"===n&&i||"left"===n&&!i:s&&("down"===s&&e||"up"===s&&!e)},_getDragVerticalDirection:function(){var t=this.positionAbs.top-this.lastPositionAbs.top;return 0!==t&&(t>0?"down":"up")},_getDragHorizontalDirection:function(){var t=this.positionAbs.left-this.lastPositionAbs.left;return 0!==t&&(t>0?"right":"left")},refresh:function(t){return this._refreshItems(t),this._setHandleClassName(),this.refreshPositions(),this},_connectWith:function(){var t=this.options;
vendor: 2,278 bytes, line 16
16return t.connectWith.constructor===String?[t.connectWith]:t.connectWith},_getItemsAsjQuery:function(e){function i(){r.push(this)}var s,n,o,a,r=[],h=[],l=this._connectWith();if(l&&e)for(s=l.length-1;s>=0;s--)for(o=t(l[s],this.document[0]),n=o.length-1;n>=0;n--)a=t.data(o[n],this.widgetFullName),a&&a!==this&&!a.options.disabled&&h.push([t.isFunction(a.options.items)?a.options.items.call(a.element):t(a.options.items,a.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),a]);for(h.push([t.isFunction(this.options.items)?this.options.items.call(this.element,null,{options:this.options,item:this.currentItem}):t(this.options.items,this.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),this]),s=h.length-1;s>=0;s--)h[s][0].each(i);return t(r)},_removeCurrentsFromItems:function(){var e=this.currentItem.find(":data("+this.widgetName+"-item)");this.items=t.grep(this.items,function(t){for(var i=0;e.length>i;i++)if(e[i]===t.item[0])return!1;return!0})},_refreshItems:function(e){this.items=[],this.containers=[this];var i,s,n,o,a,r,h,l,c=this.items,u=[[t.isFunction(this.options.items)?this.options.items.call(this.element[0],e,{item:this.currentItem}):t(this.options.items,this.element),this]],d=this._connectWith();if(d&&this.ready)for(i=d.length-1;i>=0;i--)for(n=t(d[i],this.document[0]),s=n.length-1;s>=0;s--)o=t.data(n[s],this.widgetFullName),o&&o!==this&&!o.options.disabled&&(u.push([t.isFunction(o.options.items)?o.options.items.call(o.element[0],e,{item:this.currentItem}):t(o.options.items,o.element),o]),this.containers.push(o));for(i=u.length-1;i>=0;i--)for(a=u[i][1],r=u[i][0],s=0,l=r.length;l>s;s++)h=t(r[s]),h.data(this.widgetName+"-item",a),c.push({item:h,instance:a,width:0,height:0,left:0,top:0})},refreshPositions:function(e){this.floating=this.items.length?"x"===this.options.axis||this._isFloating(this.items[0].item):!1,this.offsetParent&&this.helper&&(this.offset.parent=this._getParentOffset());var i,s,n,o;for(i=this.items.length-1;i>=0;i--)s=this.items[i],s.instance!==this.currentContainer&&this.currentContainer&&s.item[0]!==this.currentItem[0]||(n=this.options.toleranceElement?t(this.options.toleranceElement,s.item):s.item,e||(s.width=n.outerWidth(),s.height=n.outerHeight()),o=n.offset(),s.left=o.left,s.top=o.top);
vendor: 1,142 bytes, line 16
16if(this.options.custom&&this.options.custom.refreshContainers)this.options.custom.refreshContainers.call(this);else for(i=this.containers.length-1;i>=0;i--)o=this.containers[i].element.offset(),this.containers[i].containerCache.left=o.left,this.containers[i].containerCache.top=o.top,this.containers[i].containerCache.width=this.containers[i].element.outerWidth(),this.containers[i].containerCache.height=this.containers[i].element.outerHeight();return this},_createPlaceholder:function(e){e=e||this;var i,s=e.options;s.placeholder&&s.placeholder.constructor!==String||(i=s.placeholder,s.placeholder={element:function(){var s=e.currentItem[0].nodeName.toLowerCase(),n=t("<"+s+">",e.document[0]);return e._addClass(n,"ui-sortable-placeholder",i||e.currentItem[0].className)._removeClass(n,"ui-sortable-helper"),"tbody"===s?e._createTrPlaceholder(e.currentItem.find("tr").eq(0),t("<tr>",e.document[0]).appendTo(n)):"tr"===s?e._createTrPlaceholder(e.currentItem,n):"img"===s&&n.attr("src",e.currentItem.attr("src")),i||n.css("visibility","hidden"),n},update:function(t,n){(!i||s.forcePlaceholderSize)&&(n.height()||n.height(e.currentItem.innerHe
vendor: 5,526 bytes, line 16
16ight()-parseInt(e.currentItem.css("paddingTop")||0,10)-parseInt(e.currentItem.css("paddingBottom")||0,10)),n.width()||n.width(e.currentItem.innerWidth()-parseInt(e.currentItem.css("paddingLeft")||0,10)-parseInt(e.currentItem.css("paddingRight")||0,10)))}}),e.placeholder=t(s.placeholder.element.call(e.element,e.currentItem)),e.currentItem.after(e.placeholder),s.placeholder.update(e,e.placeholder)},_createTrPlaceholder:function(e,i){var s=this;e.children().each(function(){t("<td>&#160;</td>",s.document[0]).attr("colspan",t(this).attr("colspan")||1).appendTo(i)})},_contactContainers:function(e){var i,s,n,o,a,r,h,l,c,u,d=null,p=null;for(i=this.containers.length-1;i>=0;i--)if(!t.contains(this.currentItem[0],this.containers[i].element[0]))if(this._intersectsWith(this.containers[i].containerCache)){if(d&&t.contains(this.containers[i].element[0],d.element[0]))continue;d=this.containers[i],p=i}else this.containers[i].containerCache.over&&(this.containers[i]._trigger("out",e,this._uiHash(this)),this.containers[i].containerCache.over=0);if(d)if(1===this.containers.length)this.containers[p].containerCache.over||(this.containers[p]._trigger("over",e,this._uiHash(this)),this.containers[p].containerCache.over=1);else{for(n=1e4,o=null,c=d.floating||this._isFloating(this.currentItem),a=c?"left":"top",r=c?"width":"height",u=c?"pageX":"pageY",s=this.items.length-1;s>=0;s--)t.contains(this.containers[p].element[0],this.items[s].item[0])&&this.items[s].item[0]!==this.currentItem[0]&&(h=this.items[s].item.offset()[a],l=!1,e[u]-h>this.items[s][r]/2&&(l=!0),n>Math.abs(e[u]-h)&&(n=Math.abs(e[u]-h),o=this.items[s],this.direction=l?"up":"down"));if(!o&&!this.options.dropOnEmpty)return;if(this.currentContainer===this.containers[p])return this.currentContainer.containerCache.over||(this.containers[p]._trigger("over",e,this._uiHash()),this.currentContainer.containerCache.over=1),void 0;o?this._rearrange(e,o,null,!0):this._rearrange(e,null,this.containers[p].element,!0),this._trigger("change",e,this._uiHash()),this.containers[p]._trigger("change",e,this._uiHash(this)),this.currentContainer=this.containers[p],this.options.placeholder.update(this.currentContainer,this.placeholder),this.containers[p]._trigger("over",e,this._uiHash(this)),this.containers[p].containerCache.over=1}},_createHelper:function(e){var i=this.options,s=t.isFunction(i.helper)?t(i.helper.apply(this.element[0],[e,this.currentItem])):"clone"===i.helper?this.currentItem.clone():this.currentItem;return s.parents("body").length||t("parent"!==i.appendTo?i.appendTo:this.currentItem[0].parentNode)[0].appendChild(s[0]),s[0]===this.currentItem[0]&&(this._storedCSS={width:this.currentItem[0].style.width,height:this.currentItem[0].style.height,position:this.currentItem.css("position"),top:this.currentItem.css("top"),left:this.currentItem.css("left")}),(!s[0].style.width||i.forceHelperSize)&&s.width(this.currentItem.width()),(!s[0].style.height||i.forceHelperSize)&&s.height(this.currentItem.height()),s},_adjustOffsetFromHelper:function(e){"string"==typeof e&&(e=e.split(" ")),t.isArray(e)&&(e={left:+e[0],top:+e[1]||0}),"left"in e&&(this.offset.click.left=e.left+this.margins.left),"right"in e&&(this.offset.click.left=this.helperProportions.width-e.right+this.margins.left),"top"in e&&(this.offset.click.top=e.top+this.margins.top),"bottom"in e&&(this.offset.click.top=this.helperProportions.height-e.bottom+this.margins.top)},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var e=this.offsetParent.offset();return"absolute"===this.cssPosition&&this.scrollParent[0]!==this.document[0]&&t.contains(this.scrollParent[0],this.offsetParent[0])&&(e.left+=this.scrollParent.scrollLeft(),e.top+=this.scrollParent.scrollTop()),(this.offsetParent[0]===this.document[0].body||this.offsetParent[0].tagName&&"html"===this.offsetParent[0].tagName.toLowerCase()&&t.ui.ie)&&(e={top:0,left:0}),{top:e.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:e.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if("relative"===this.cssPosition){var t=this.currentItem.position();return{top:t.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:t.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.currentItem.css("marginLeft"),10)||0,top:parseInt(this.currentItem.css("marginTop"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var e,i,s,n=this.options;"parent"===n.containment&&(n.containment=this.helper[0].parentNode),("document"===n.containment||"window"===n.containment)&&(this.containment=[0-this.offset.relative.left-this.offset.parent.left,0-this.offset.relative.top-this.offset.parent.top,"document"===n.containment?this.document.width():this.window.width()-this.helperProportions.width-this.margins.left,("document"===n.containment?this.document.height()||document.body.parentNode.scrollHeight:this.window.height()||this.document[0].body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top]),/^(document|window|parent)$/.test(n.containment)||(e=t(n.containment)[0],i=t(n.containment).offset(),s="hidden"!==t(e).css("overflow"),this.containment=[i.left+(parseInt(t(e).css("borderLeftWidth"),10)||0)+(parseInt(t(e).css("paddingLeft"),10)||0)-this.margins.left,i.top+(parseInt(t(e).css("borderTopWidth"),
vendor: 6,309 bytes, lines 16-17
1610)||0)+(parseInt(t(e).css("paddingTop"),10)||0)-this.margins.top,i.left+(s?Math.max(e.scrollWidth,e.offsetWidth):e.offsetWidth)-(parseInt(t(e).css("borderLeftWidth"),10)||0)-(parseInt(t(e).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left,i.top+(s?Math.max(e.scrollHeight,e.offsetHeight):e.offsetHeight)-(parseInt(t(e).css("borderTopWidth"),10)||0)-(parseInt(t(e).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top])},_convertPositionTo:function(e,i){i||(i=this.position);var s="absolute"===e?1:-1,n="absolute"!==this.cssPosition||this.scrollParent[0]!==this.document[0]&&t.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,o=/(html|body)/i.test(n[0].tagName);return{top:i.top+this.offset.relative.top*s+this.offset.parent.top*s-("fixed"===this.cssPosition?-this.scrollParent.scrollTop():o?0:n.scrollTop())*s,left:i.left+this.offset.relative.left*s+this.offset.parent.left*s-("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():o?0:n.scrollLeft())*s}},_generatePosition:function(e){var i,s,n=this.options,o=e.pageX,a=e.pageY,r="absolute"!==this.cssPosition||this.scrollParent[0]!==this.document[0]&&t.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,h=/(html|body)/i.test(r[0].tagName);return"relative"!==this.cssPosition||this.scrollParent[0]!==this.document[0]&&this.scrollParent[0]!==this.offsetParent[0]||(this.offset.relative=this._getRelativeOffset()),this.originalPosition&&(this.containment&&(e.pageX-this.offset.click.left<this.containment[0]&&(o=this.containment[0]+this.offset.click.left),e.pageY-this.offset.click.top<this.containment[1]&&(a=this.containment[1]+this.offset.click.top),e.pageX-this.offset.click.left>this.containment[2]&&(o=this.containment[2]+this.offset.click.left),e.pageY-this.offset.click.top>this.containment[3]&&(a=this.containment[3]+this.offset.click.top)),n.grid&&(i=this.originalPageY+Math.round((a-this.originalPageY)/n.grid[1])*n.grid[1],a=this.containment?i-this.offset.click.top>=this.containment[1]&&i-this.offset.click.top<=this.containment[3]?i:i-this.offset.click.top>=this.containment[1]?i-n.grid[1]:i+n.grid[1]:i,s=this.originalPageX+Math.round((o-this.originalPageX)/n.grid[0])*n.grid[0],o=this.containment?s-this.offset.click.left>=this.containment[0]&&s-this.offset.click.left<=this.containment[2]?s:s-this.offset.click.left>=this.containment[0]?s-n.grid[0]:s+n.grid[0]:s)),{top:a-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.scrollParent.scrollTop():h?0:r.scrollTop()),left:o-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():h?0:r.scrollLeft())}},_rearrange:function(t,e,i,s){i?i[0].appendChild(this.placeholder[0]):e.item[0].parentNode.insertBefore(this.placeholder[0],"down"===this.direction?e.item[0]:e.item[0].nextSibling),this.counter=this.counter?++this.counter:1;var n=this.counter;
17this._delay(function(){n===this.counter&&this.refreshPositions(!s)})},_clear:function(t,e){function i(t,e,i){return function(s){i._trigger(t,s,e._uiHash(e))}}this.reverting=!1;var s,n=[];if(!this._noFinalSort&&this.currentItem.parent().length&&this.placeholder.before(this.currentItem),this._noFinalSort=null,this.helper[0]===this.currentItem[0]){for(s in this._storedCSS)("auto"===this._storedCSS[s]||"static"===this._storedCSS[s])&&(this._storedCSS[s]="");this.currentItem.css(this._storedCSS),this._removeClass(this.currentItem,"ui-sortable-helper")}else this.currentItem.show();for(this.fromOutside&&!e&&n.push(function(t){this._trigger("receive",t,this._uiHash(this.fromOutside))}),!this.fromOutside&&this.domPosition.prev===this.currentItem.prev().not(".ui-sortable-helper")[0]&&this.domPosition.parent===this.currentItem.parent()[0]||e||n.push(function(t){this._trigger("update",t,this._uiHash())}),this!==this.currentContainer&&(e||(n.push(function(t){this._trigger("remove",t,this._uiHash())}),n.push(function(t){return function(e){t._trigger("receive",e,this._uiHash(this))}}.call(this,this.currentContainer)),n.push(function(t){return function(e){t._trigger("update",e,this._uiHash(this))}}.call(this,this.currentContainer)))),s=this.containers.length-1;s>=0;s--)e||n.push(i("deactivate",this,this.containers[s])),this.containers[s].containerCache.over&&(n.push(i("out",this,this.containers[s])),this.containers[s].containerCache.over=0);if(this.storedCursor&&(this.document.find("body").css("cursor",this.storedCursor),this.storedStylesheet.remove()),this._storedOpacity&&this.helper.css("opacity",this._storedOpacity),this._storedZIndex&&this.helper.css("zIndex","auto"===this._storedZIndex?"":this._storedZIndex),this.dragging=!1,e||this._trigger("beforeStop",t,this._uiHash()),this.placeholder[0].parentNode.removeChild(this.placeholder[0]),this.cancelHelperRemoval||(this.helper[0]!==this.currentItem[0]&&this.helper.remove(),this.helper=null),!e){for(s=0;n.length>s;s++)n[s].call(this,t);this._trigger("stop",t,this._uiHash())}return this.fromOutside=!1,!this.cancelHelperRemoval},_trigger:function(){t.Widget.prototype._trigger.apply(this,arguments)===!1&&this.cancel()},_uiHash:function(e){var i=e||this;return{helper:i.helper,placeholder:i.placeholder||t([]),position:i.position,originalPosition:i.originalPosition,offset:i.positionAbs,item:i.currentItem,sender:e?e.element:null}}}),t.widget("ui.spinner",{version:"1.12.1",defaultElement:"<input>",widgetEventPrefix:"spin",options:{classes:{"ui-spinner":"ui-corner-all","ui-spinner-down":"ui-corner-br","ui-spinner-up":"ui-corner-tr"},culture:null,icons:{down:"ui-icon-triangle-1-s",up:"ui-icon-triangle-1-n"},incremental:!0,max:null,min:null,numberFormat:null,page:10,step:1,change:null,spin:null,start:null,stop:null},_create:function(){this._setOption("max",this.options.max),this._setOption("min",this.options.min),this._setOption("step",this.options.step),""!==this.value()&&this._value(this.element.val(),!0),this._draw(),this._on(this._events),this._refresh(),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_getCreateOptions:function(){var e=this._super(),i=this.element;return t.each(["min","max","step"],function(t,s){var n=i.attr(s);null!=n&&n.length&&(e[s]=n)}),e}
vendor: 5,966 bytes, line 17
17,_events:{keydown:function(t){this._start(t)&&this._keydown(t)&&t.preventDefault()},keyup:"_stop",focus:function(){this.previous=this.element.val()},blur:function(t){return this.cancelBlur?(delete this.cancelBlur,void 0):(this._stop(),this._refresh(),this.previous!==this.element.val()&&this._trigger("change",t),void 0)},mousewheel:function(t,e){if(e){if(!this.spinning&&!this._start(t))return!1;this._spin((e>0?1:-1)*this.options.step,t),clearTimeout(this.mousewheelTimer),this.mousewheelTimer=this._delay(function(){this.spinning&&this._stop(t)},100),t.preventDefault()}},"mousedown .ui-spinner-button":function(e){function i(){var e=this.element[0]===t.ui.safeActiveElement(this.document[0]);e||(this.element.trigger("focus"),this.previous=s,this._delay(function(){this.previous=s}))}var s;s=this.element[0]===t.ui.safeActiveElement(this.document[0])?this.previous:this.element.val(),e.preventDefault(),i.call(this),this.cancelBlur=!0,this._delay(function(){delete this.cancelBlur,i.call(this)}),this._start(e)!==!1&&this._repeat(null,t(e.currentTarget).hasClass("ui-spinner-up")?1:-1,e)},"mouseup .ui-spinner-button":"_stop","mouseenter .ui-spinner-button":function(e){return t(e.currentTarget).hasClass("ui-state-active")?this._start(e)===!1?!1:(this._repeat(null,t(e.currentTarget).hasClass("ui-spinner-up")?1:-1,e),void 0):void 0},"mouseleave .ui-spinner-button":"_stop"},_enhance:function(){this.uiSpinner=this.element.attr("autocomplete","off").wrap("<span>").parent().append("<a></a><a></a>")},_draw:function(){this._enhance(),this._addClass(this.uiSpinner,"ui-spinner","ui-widget ui-widget-content"),this._addClass("ui-spinner-input"),this.element.attr("role","spinbutton"),this.buttons=this.uiSpinner.children("a").attr("tabIndex",-1).attr("aria-hidden",!0).button({classes:{"ui-button":""}}),this._removeClass(this.buttons,"ui-corner-all"),this._addClass(this.buttons.first(),"ui-spinner-button ui-spinner-up"),this._addClass(this.buttons.last(),"ui-spinner-button ui-spinner-down"),this.buttons.first().button({icon:this.options.icons.up,showLabel:!1}),this.buttons.last().button({icon:this.options.icons.down,showLabel:!1}),this.buttons.height()>Math.ceil(.5*this.uiSpinner.height())&&this.uiSpinner.height()>0&&this.uiSpinner.height(this.uiSpinner.height())},_keydown:function(e){var i=this.options,s=t.ui.keyCode;switch(e.keyCode){case s.UP:return this._repeat(null,1,e),!0;case s.DOWN:return this._repeat(null,-1,e),!0;case s.PAGE_UP:return this._repeat(null,i.page,e),!0;case s.PAGE_DOWN:return this._repeat(null,-i.page,e),!0}return!1},_start:function(t){return this.spinning||this._trigger("start",t)!==!1?(this.counter||(this.counter=1),this.spinning=!0,!0):!1},_repeat:function(t,e,i){t=t||500,clearTimeout(this.timer),this.timer=this._delay(function(){this._repeat(40,e,i)},t),this._spin(e*this.options.step,i)},_spin:function(t,e){var i=this.value()||0;this.counter||(this.counter=1),i=this._adjustValue(i+t*this._increment(this.counter)),this.spinning&&this._trigger("spin",e,{value:i})===!1||(this._value(i),this.counter++)},_increment:function(e){var i=this.options.incremental;return i?t.isFunction(i)?i(e):Math.floor(e*e*e/5e4-e*e/500+17*e/200+1):1},_precision:function(){var t=this._precisionOf(this.options.step);return null!==this.options.min&&(t=Math.max(t,this._precisionOf(this.options.min))),t},_precisionOf:function(t){var e=""+t,i=e.indexOf(".");return-1===i?0:e.length-i-1},_adjustValue:function(t){var e,i,s=this.options;return e=null!==s.min?s.min:0,i=t-e,i=Math.round(i/s.step)*s.step,t=e+i,t=parseFloat(t.toFixed(this._precision())),null!==s.max&&t>s.max?s.max:null!==s.min&&s.min>t?s.min:t},_stop:function(t){this.spinning&&(clearTimeout(this.timer),clearTimeout(this.mousewheelTimer),this.counter=0,this.spinning=!1,this._trigger("stop",t))},_setOption:function(t,e){var i,s,n;return"culture"===t||"numberFormat"===t?(i=this._parse(this.element.val()),this.options[t]=e,this.element.val(this._format(i)),void 0):(("max"===t||"min"===t||"step"===t)&&"string"==typeof e&&(e=this._parse(e)),"icons"===t&&(s=this.buttons.first().find(".ui-icon"),this._removeClass(s,null,this.options.icons.up),this._addClass(s,null,e.up),n=this.buttons.last().find(".ui-icon"),this._removeClass(n,null,this.options.icons.down),this._addClass(n,null,e.down)),this._super(t,e),void 0)},_setOptionDisabled:function(t){this._super(t),this._toggleClass(this.uiSpinner,null,"ui-state-disabled",!!t),this.element.prop("disabled",!!t),this.buttons.button(t?"disable":"enable")},_setOptions:r(function(t){this._super(t)}),_parse:function(t){return"string"==typeof t&&""!==t&&(t=window.Globalize&&this.options.numberFormat?Globalize.parseFloat(t,10,this.options.culture):+t),""===t||isNaN(t)?null:t},_format:function(t){return""===t?"":window.Globalize&&this.options.numberFormat?Globalize.format(t,this.options.numberFormat,this.options.culture):t},_refresh:function(){this.element.attr({"aria-valuemin":this.options.min,"aria-valuemax":this.options.max,"aria-valuenow":this._parse(this.element.val())})},isValid:function(){var t=this.value();return null===t?!1:t===this._adjustValue(t)},_value:function(t,e){var i;""!==t&&(i=this._parse(t),null!==i&&(e||(i=this._adjustValue(i)),t=this._format(i))),this.element.val(t),this._refresh()},_destroy:function(){this.element.prop("disabled",!1).removeAttr("autocomplete role aria-valuemin aria-valuemax aria-valuenow"),this.uiSpinner.replaceWith(this.element)},stepUp:r(function(t){this._stepUp(t)}),_stepUp:function(t){this._start()&&(this._spin((t||1)*this.options.step),this._stop())},stepDown:r(function(t){this._stepDown(t)}),_stepDown:function(t){this._start()&&(this._spin((t||1)*-this.options.step),this._stop())},pageUp:r(function(t){this._stepUp((t||1)*this.options.page)}),pageDown:r(function(t){this._stepDown((t||1)*this.options.page)}),value:function(t){return arguments.length?(r(this._value).call(this,t),void 0):this._parse(this.element.val())},widget:function(){return this.uiSpinner}}
vendor: 17,899 bytes, line 17
17),t.uiBackCompat!==!1&&t.widget("ui.spinner",t.ui.spinner,{_enhance:function(){this.uiSpinner=this.element.attr("autocomplete","off").wrap(this._uiSpinnerHtml()).parent().append(this._buttonHtml())},_uiSpinnerHtml:function(){return"<span>"},_buttonHtml:function(){return"<a></a><a></a>"}}),t.ui.spinner,t.widget("ui.tabs",{version:"1.12.1",delay:300,options:{active:null,classes:{"ui-tabs":"ui-corner-all","ui-tabs-nav":"ui-corner-all","ui-tabs-panel":"ui-corner-bottom","ui-tabs-tab":"ui-corner-top"},collapsible:!1,event:"click",heightStyle:"content",hide:null,show:null,activate:null,beforeActivate:null,beforeLoad:null,load:null},_isLocal:function(){var t=/#.*$/;return function(e){var i,s;i=e.href.replace(t,""),s=location.href.replace(t,"");try{i=decodeURIComponent(i)}catch(n){}try{s=decodeURIComponent(s)}catch(n){}return e.hash.length>1&&i===s}}(),_create:function(){var e=this,i=this.options;this.running=!1,this._addClass("ui-tabs","ui-widget ui-widget-content"),this._toggleClass("ui-tabs-collapsible",null,i.collapsible),this._processTabs(),i.active=this._initialActive(),t.isArray(i.disabled)&&(i.disabled=t.unique(i.disabled.concat(t.map(this.tabs.filter(".ui-state-disabled"),function(t){return e.tabs.index(t)}))).sort()),this.active=this.options.active!==!1&&this.anchors.length?this._findActive(i.active):t(),this._refresh(),this.active.length&&this.load(i.active)},_initialActive:function(){var e=this.options.active,i=this.options.collapsible,s=location.hash.substring(1);return null===e&&(s&&this.tabs.each(function(i,n){return t(n).attr("aria-controls")===s?(e=i,!1):void 0}),null===e&&(e=this.tabs.index(this.tabs.filter(".ui-tabs-active"))),(null===e||-1===e)&&(e=this.tabs.length?0:!1)),e!==!1&&(e=this.tabs.index(this.tabs.eq(e)),-1===e&&(e=i?!1:0)),!i&&e===!1&&this.anchors.length&&(e=0),e},_getCreateEventData:function(){return{tab:this.active,panel:this.active.length?this._getPanelForTab(this.active):t()}},_tabKeydown:function(e){var i=t(t.ui.safeActiveElement(this.document[0])).closest("li"),s=this.tabs.index(i),n=!0;if(!this._handlePageNav(e)){switch(e.keyCode){case t.ui.keyCode.RIGHT:case t.ui.keyCode.DOWN:s++;break;case t.ui.keyCode.UP:case t.ui.keyCode.LEFT:n=!1,s--;break;case t.ui.keyCode.END:s=this.anchors.length-1;break;case t.ui.keyCode.HOME:s=0;break;case t.ui.keyCode.SPACE:return e.preventDefault(),clearTimeout(this.activating),this._activate(s),void 0;case t.ui.keyCode.ENTER:return e.preventDefault(),clearTimeout(this.activating),this._activate(s===this.options.active?!1:s),void 0;default:return}e.preventDefault(),clearTimeout(this.activating),s=this._focusNextTab(s,n),e.ctrlKey||e.metaKey||(i.attr("aria-selected","false"),this.tabs.eq(s).attr("aria-selected","true"),this.activating=this._delay(function(){this.option("active",s)},this.delay))}},_panelKeydown:function(e){this._handlePageNav(e)||e.ctrlKey&&e.keyCode===t.ui.keyCode.UP&&(e.preventDefault(),this.active.trigger("focus"))},_handlePageNav:function(e){return e.altKey&&e.keyCode===t.ui.keyCode.PAGE_UP?(this._activate(this._focusNextTab(this.options.active-1,!1)),!0):e.altKey&&e.keyCode===t.ui.keyCode.PAGE_DOWN?(this._activate(this._focusNextTab(this.options.active+1,!0)),!0):void 0},_findNextTab:function(e,i){function s(){return e>n&&(e=0),0>e&&(e=n),e}for(var n=this.tabs.length-1;-1!==t.inArray(s(),this.options.disabled);)e=i?e+1:e-1;return e},_focusNextTab:function(t,e){return t=this._findNextTab(t,e),this.tabs.eq(t).trigger("focus"),t},_setOption:function(t,e){return"active"===t?(this._activate(e),void 0):(this._super(t,e),"collapsible"===t&&(this._toggleClass("ui-tabs-collapsible",null,e),e||this.options.active!==!1||this._activate(0)),"event"===t&&this._setupEvents(e),"heightStyle"===t&&this._setupHeightStyle(e),void 0)},_sanitizeSelector:function(t){return t?t.replace(/[!"$%&'()*+,.\/:;<=>?@\[\]\^`{|}~]/g,"\\$&"):""},refresh:function(){var e=this.options,i=this.tablist.children(":has(a[href])");e.disabled=t.map(i.filter(".ui-state-disabled"),function(t){return i.index(t)}),this._processTabs(),e.active!==!1&&this.anchors.length?this.active.length&&!t.contains(this.tablist[0],this.active[0])?this.tabs.length===e.disabled.length?(e.active=!1,this.active=t()):this._activate(this._findNextTab(Math.max(0,e.active-1),!1)):e.active=this.tabs.index(this.active):(e.active=!1,this.active=t()),this._refresh()},_refresh:function(){this._setOptionDisabled(this.options.disabled),this._setupEvents(this.options.event),this._setupHeightStyle(this.options.heightStyle),this.tabs.not(this.active).attr({"aria-selected":"false","aria-expanded":"false",tabIndex:-1}),this.panels.not(this._getPanelForTab(this.active)).hide().attr({"aria-hidden":"true"}),this.active.length?(this.active.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0}),this._addClass(this.active,"ui-tabs-active","ui-state-active"),this._getPanelForTab(this.active).show().attr({"aria-hidden":"false"})):this.tabs.eq(0).attr("tabIndex",0)},_processTabs:function(){var e=this,i=this.tabs,s=this.anchors,n=this.panels;this.tablist=this._getList().attr("role","tablist"),this._addClass(this.tablist,"ui-tabs-nav","ui-helper-reset ui-helper-clearfix ui-widget-header"),this.tablist.on("mousedown"+this.eventNamespace,"> li",function(e){t(this).is(".ui-state-disabled")&&e.preventDefault()}).on("focus"+this.eventNamespace,".ui-tabs-anchor",function(){t(this).closest("li").is(".ui-state-disabled")&&this.blur()}),this.tabs=this.tablist.find("> li:has(a[href])").attr({role:"tab",tabIndex:-1}),this._addClass(this.tabs,"ui-tabs-tab","ui-state-default"),this.anchors=this.tabs.map(function(){return t("a",this)[0]}).attr({role:"presentation",tabIndex:-1}),this._addClass(this.anchors,"ui-tabs-anchor"),this.panels=t(),this.anchors.each(function(i,s){var n,o,a,r=t(s).uniqueId().attr("id"),h=t(s).closest("li"),l=h.attr("aria-controls");e._isLocal(s)?(n=s.hash,a=n.substring(1),o=e.element.find(e._sanitizeSelector(n))):(a=h.attr("aria-controls")||t({}).uniqueId()[0].id,n="#"+a,o=e.element.find(n),o.length||(o=e._createPanel(a),o.insertAfter(e.panels[i-1]||e.tablist)),o.attr("aria-live","polite")),o.length&&(e.panels=e.panels.add(o)),l&&h.data("ui-tabs-aria-controls",l),h.attr({"aria-controls":a,"aria-labelledby":r}),o.attr("aria-labelledby",r)}),this.panels.attr("role","tabpanel"),this._addClass(this.panels,"ui-tabs-panel","ui-widget-content"),i&&(this._off(i.not(this.tabs)),this._off(s.not(this.anchors)),this._off(n.not(this.panels)))},_getList:function(){return this.tablist||this.element.find("ol, ul").eq(0)},_createPanel:function(e){return t("<div>").attr("id",e).data("ui-tabs-destroy",!0)},_setOptionDisabled:function(e){var i,s,n;for(t.isArray(e)&&(e.length?e.length===this.anchors.length&&(e=!0):e=!1),n=0;s=this.tabs[n];n++)i=t(s),e===!0||-1!==t.inArray(n,e)?(i.attr("aria-disabled","true"),this._addClass(i,null,"ui-state-disabled")):(i.removeAttr("aria-disabled"),this._removeClass(i,null,"ui-state-disabled"));this.options.disabled=e,this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,e===!0)},_setupEvents:function(e){var i={};e&&t.each(e.split(" "),function(t,e){i[e]="_eventHandler"}),this._off(this.anchors.add(this.tabs).add(this.panels)),this._on(!0,this.anchors,{click:function(t){t.preventDefault()}}),this._on(this.anchors,i),this._on(this.tabs,{keydown:"_tabKeydown"}),this._on(this.panels,{keydown:"_panelKeydown"}),this._focusable(this.tabs),this._hoverable(this.tabs)},_setupHeightStyle:function(e){var i,s=this.element.parent();"fill"===e?(i=s.height(),i-=this.element.outerHeight()-this.element.height(),this.element.siblings(":visible").each(function(){var e=t(this),s=e.css("position");"absolute"!==s&&"fixed"!==s&&(i-=e.outerHeight(!0))}),this.element.children().not(this.panels).each(function(){i-=t(this).outerHeight(!0)}),this.panels.each(function(){t(this).height(Math.max(0,i-t(this).innerHeight()+t(this).height()))}).css("overflow","auto")):"auto"===e&&(i=0,this.panels.each(function(){i=Math.max(i,t(this).height("").height())}).height(i))},_eventHandler:function(e){var i=this.options,s=this.active,n=t(e.currentTarget),o=n.closest("li"),a=o[0]===s[0],r=a&&i.collapsible,h=r?t():this._getPanelForTab(o),l=s.length?this._getPanelForTab(s):t(),c={oldTab:s,oldPanel:l,newTab:r?t():o,newPanel:h};e.preventDefault(),o.hasClass("ui-state-disabled")||o.hasClass("ui-tabs-loading")||this.running||a&&!i.collapsible||this._trigger("beforeActivate",e,c)===!1||(i.active=r?!1:this.tabs.index(o),this.active=a?t():o,this.xhr&&this.xhr.abort(),l.length||h.length||t.error("jQuery UI Tabs: Mismatching fragment identifier."),h.length&&this.load(this.tabs.index(o),e),this._toggle(e,c))},_toggle:function(e,i){function s(){o.running=!1,o._trigger("activate",e,i)}function n(){o._addClass(i.newTab.closest("li"),"ui-tabs-active","ui-state-active"),a.length&&o.options.show?o._show(a,o.options.show,s):(a.show(),s())}var o=this,a=i.newPanel,r=i.oldPanel;this.running=!0,r.length&&this.options.hide?this._hide(r,this.options.hide,function(){o._removeClass(i.oldTab.closest("li"),"ui-tabs-active","ui-state-active"),n()}):(this._removeClass(i.oldTab.closest("li"),"ui-tabs-active","ui-state-active"),r.hide(),n()),r.attr("aria-hidden","true"),i.oldTab.attr({"aria-selected":"false","aria-expanded":"false"}),a.length&&r.length?i.oldTab.attr("tabIndex",-1):a.length&&this.tabs.filter(function(){return 0===t(this).attr("tabIndex")}).attr("tabIndex",-1),a.attr("aria-hidden","false"),i.newTab.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0})},_activate:function(e){var i,s=this._findActive(e);s[0]!==this.active[0]&&(s.length||(s=this.active),i=s.find(".ui-tabs-anchor")[0],this._eventHandler({target:i,currentTarget:i,preventDefault:t.noop}))},_findActive:function(e){return e===!1?t():this.tabs.eq(e)},_getIndex:function(e){return"string"==typeof e&&(e=this.anchors.index(this.anchors.filter("[href$='"+t.ui.escapeSelector(e)+"']"))),e},_destroy:function(){this.xhr&&this.xhr.abort(),this.tablist.removeAttr("role").off(this.eventNamespace),this.anchors.removeAttr("role tabIndex").removeUniqueId(),this.tabs.add(this.panels).each(function(){t.data(this,"ui-tabs-destroy")?t(this).remove():t(this).removeAttr("role tabIndex aria-live aria-busy aria-selected aria-labelledby aria-hidden aria-expanded")}),this.tabs.each(function(){var e=t(this),i=e.data("ui-tabs-aria-controls");i?e.attr("aria-controls",i).removeData("ui-tabs-aria-controls"):e.removeAttr("aria-controls")}),this.panels.show(),"content"!==this.options.heightStyle&&this.panels.css("height","")},enable:function(e){var i=this.options.disabled;i!==!1&&(void 0===e?i=!1:(e=this._getIndex(e),i=t.isArray(i)?t.map(i,function(t){return t!==e?t:null}):t.map(this.tabs,function(t,i){return i!==e?i:null})),this._setOptionDisabled(i))},disable:function(e){var i=this.options.disabled;if(i!==!0){if(void 0===e)i=!0;else{if(e=this._getIndex(e),-1!==t.inArray(e,i))return;i=t.isArray(i)?t.merge([e],i).sort():[e]}this._setOptionDisabled(i)}},load:function(e,i){e=this._getIndex(e);var s=this,n=this.tabs.eq(e),o=n.find(".ui-tabs-anchor"),a=this._getPanelForTab(n),r={tab:n,panel:a},h=function(t,e){"abort"===e&&s.panels.stop(!1,!0),s._removeClass(n,"ui-tabs-loading"),a.removeAttr("aria-busy"),t===s.xhr&&delete s.xhr};this._isLocal(o[0])||(this.xhr=t.ajax(this._ajaxSettings(o,i,r)),this.xhr&&"canceled"!==this.xhr.statusText&&(this._addClass(n,"ui-tabs-loading"),a.attr("aria-busy","true"),this.xhr.done(function(t,e,n){setTimeout(function(){a.html(t),s._trigger("load",i,r),h(n,e)},1)}).fail(function(t,e){setTimeout(function(){h(t,e)},1)})))},_ajaxSettings:function(e,i,s){var n=this;return{url:e.attr("href").replace(/#.*$/,""),beforeSend:function(e,o){return n._trigger("beforeLoad",i,t.extend({jqXHR:e,ajaxSettings:o},s))}}},_getPanelForTab:function(e){var i=t(e).attr("aria-controls");return this.element.find(this._sanitizeSelector("#"+i))}}),t.uiBackCompat!==!1&&t.widget("ui.tabs",t.ui.tabs,{_processTabs:function(){this._superApply(arguments),this._addClass(this.tabs,"ui-tab")}}),t.ui.tabs,t.widget("ui.tooltip",{version:"1.12.1",options:{classes:{"ui-tooltip":"ui-corner-all ui-widget-shadow"},content:function(){var e=t(this).attr("title")||"";return t("<a>").text(e).html()},hide:!0,items:"[title]:not([disabled])",position:{my:"left top+15",at:"left bottom",collision:"flipfit flip"},show:!0,track:!1,close:null,open:null},_addDescribedBy:function(e,i){var s=(e.attr("aria-describedby")||"").split(/\s+/);s.push(i),e.data("ui-tooltip-id",i).attr("aria-describedby",t.trim(s.join(" ")))},_removeDescribedBy:function(e){var i=e.data("ui-tooltip-id"),s=(e.attr("aria-describedby")||"").split(/\s+/),n=t.inArray(i,s);-1!==n&&s.splice(n,1),e.removeData("ui-tooltip-id"),s=t.trim(s.join(" ")),s?e.attr("aria-describedby",s):e.removeAttr("aria-describedby")},_create:function(){this._on({mouseover:"open",focusin:"open"}),this.tooltips={},this.parents={},this.liveRegion=t("<div>").attr({role:"log","aria-live":"assertive","aria-relevant":"additions"}).appendTo(this.document[0].body),this._addClass(this.liveRegion,null,"ui-helper-hidden-accessible"),this.disabledTitles=t([])},_setOption:function(e,i){var s=this;this._super(e,i),"content"===e&&t.each(this.tooltips,function(t,e){s._updateContent(e.element)})},_setOptionDisabled:function(t){this[t?"_disable":"_enable"]()},_disable:function(){var e=this;t.each(this.tooltips,function(i,s){var n=t.Event("blur");n.target=n.currentTarget=s.element[0],e.close(n,!0)}),this.disabledTitles=this.disabledTitles.add(this.element.find(this.options.items).addBack().filter(function(){var e=t(this);return e.is("[title]")?e.data("ui-tooltip-title",e.attr("title")).removeAttr("title"):void 0}))},_enable:function(){this.disabledTitles.each(function(){var e=t(this);e.data("ui-tooltip-title")&&e.attr("title",e.data("ui-tooltip-title"))}),this.disabledTitles=t([])},open:function(e){var i=this,s=t(e?e.target:this.element).closest(this.options.items);s.length&&!s.data("ui-tooltip-id")&&(s.attr("title")&&s.data("ui-tooltip-title",s.attr("title")),s.data("ui-tooltip-open",!0),e&&"mouseover"===e.type&&s.parents().each(function(){var e,s=t(this);s.data("ui-tooltip-open")&&(e=t.Event("blur"),e.target=e.currentTarget=this,i.close(e,!0)),s.attr("title")&&(s.uniqueId(),i.parents[this.id]={element:this,title:s.attr("title")},s.attr("title",""))}),this._registerCloseHandlers(e,s),this._updateContent(s,e))},_updateContent:function(t,e){var i,s=this.options.content,n=this,o=e?e.type:null;return"string"==typeof s||s.nodeType||s.jquery?this._open(e,t,s):(i=s.call(t[0],function(i){n._delay(function(){t.data("ui-tooltip-open")&&(e&&(e.type=o),this._open(e,t,i))})}),i&&this._open(e,t,i),void 0)},_open:function(e,i,s){function n(t){l.of=t,a.is(":hidden")||a.position(l)}var o,a,r,h,l=t.extend({},this.options.position);if(s){if(o=this._find(i))return o.tooltip.find(".ui-tooltip-content").html(s),void 0;i.is("[title]")&&(e&&"mouseover"===e.type?i.attr("title",""):i.removeAttr("title")),o=this._tooltip(i),a=o.tooltip,this._addDescribedBy(i,a.attr("id")),a.find(".ui-tooltip-content").html(s),this.liveRegion.children().hide(),h=t("<div>").html(a.find(".ui-tooltip-content").html()),h.removeAttr("name").find("[name]").removeAttr("name"),h.removeAttr("id").find("[id]").removeAttr("id"),h.appendTo(this.liveRegion),this.options.track&&e&&/^mouse/.test(e.type)?(this._on(this.document,{mousemove:n}),n(e)):a.position(t.extend({of:i},this.options.position)),a.hide(),this._show(a,this.options.show),this.options.track&&this.options.show&&this.options.show.delay&&(r=this.delayedShow=setInterval(function(){a.is(":visible")&&(n(l.of),clearInterval(r))},t.fx.interval)),this._trigger("open",e,{tooltip:a})}},_registerCloseHandlers:function(e,i){var s={keyup:function(e){if(e.keyCode===t.ui.keyCode.ESCAPE){var s=t.Event(e);s.currentTarget=i[0],this.close(s,!0)}}};i[0]!==this.element[0]&&(s.remove=function(){this._removeTooltip(this._find(i).tooltip)}),e&&"mouseover"!==e.type||(s.mouseleave="close"),e&&"focusin"!==e.type||(s.focusout="close"),this._on(!0,i,s)},close:function(e){var i,s=this,n=t(e?e.currentTarget:this.element),o=this._find(n);return o?(i=o.tooltip,o.closing||(clearInterval(this.delayedShow),n.data("ui-tooltip-title")&&!n.attr("title")&&n.attr("title",n.data("ui-tooltip-title")),this._removeDescribedBy(n),o.hiding=!0,i.stop(!0),this._hide(i,this.options.hide,function(){s._removeTooltip(t(this))}),n.removeData("ui-tooltip-open"),this._off(n,"mouseleave focusout keyup"),n[0]!==this.element[0]&&this._off(n,"remove"),this._off(this.document,"mousemove"),e&&"mouseleave"===e.type&&t.each(this.parents,function(e,i){t(i.element).attr("title",i.title),delete s.parents[e]}),o.closing=!0,this._trigger("close",e,{tooltip:i}),o.hiding||(o.closing=!1)),void 0):(n.removeData("ui-tooltip-open"),void 0)},_tooltip:function(e){var i=t("<div>").attr("role","tooltip"),s=t("<div>").appendTo(i),n=i.uniqueId().attr("id");return this._addClass(s,"ui-tooltip-content"),this._addClass(i,"ui-tooltip","ui-widget ui-widget-content"),i.appendTo(this._appendTo(e)),this.tooltips[n]={element:e,tooltip:i}},_find:function(t){var e=t.data("ui-tooltip-id");return e?this.tooltips[e]:null},_removeTooltip:function(t){t.remove(),delete this.tooltips[t.attr("id")]},_appendTo:function(t){var e=t.closest(".ui-front, dialog");return e.length||(e=this.document[0].body),e},_destroy:function(){var e=this;t.each(this.tooltips,function(i,s){var n=t.Event("blur"),o=s.element;n.target=n.currentTarget=o[0],e.close(n,!0),t("#"+i).remove(),o.data("ui-tooltip-title")&&(o.attr("title")||o.attr("title",o.data("ui-tooltip-title")),o.removeData("ui-tooltip-title"))}),this.liveRegion.remove()}}),t.uiBackCompat!==!1&&t.widget("ui.tooltip",t.ui.tooltip,{options:{tooltipClass:null},_tooltip:function(){var t=this._superApply(arguments);return this.options.tooltipClass&&t.tooltip.addClass(this.options.tooltipClass),t}}),t.ui.tooltip});
vendor: 2,253 bytes, lines 17-31
17
18// file: /var/www/vhosts/codethislab.com/httpdocs/wp-content/plugins/ctl-wp-studio/classes/core/../../../../../wp-includes/js/jquery/ui/core.min.js
19/*! jQuery UI - v1.14.2 - 2026-07-15
20* https://jqueryui.com
21* Includes: widget.js, position.js, data.js, disable-selection.js, focusable.js, form-reset-mixin.js, jquery-patch.js, keycode.js, labels.js, scroll-parent.js, tabbable.js, unique-id.js
22* Copyright OpenJS Foundation and other contributors; Licensed MIT */
23!function(t){"use strict";"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)}(function(x){"use strict";x.ui=x.ui||{};x.ui.version="1.14.2";
24/*!
25 * jQuery UI Widget 1.14.2
26 * https://jqueryui.com
27 *
28 * Copyright OpenJS Foundation and other contributors
29 * Released under the MIT license.
30 * https://jquery.org/license
31 */var o,n,W,C,s,r,l,a,h,i,f=0,c=Array.prototype.hasOwnProperty,u=Array.prototype.slice;x.cleanData=(o=x.cleanData,function(t){for(var e,i,n=0;null!=(i=t[n]);n++)(e=x._data(i,"events"))&&e.remove&&x(i).triggerHandler("remove");o(t)}),x.widget=function(t,i,e){var n,o,s,r,l={},a=t.split(".")[0];return"__proto__"===(t=t.split(".")[1])||"constructor"===t?x.error("Invalid widget name: "+t):(r=a+"-"+t,e||(e=i,i=x.Widget),Array.isArray(e)&&(e=x.extend.apply(null,[{}].concat(e))),x.expr.pseudos[r.toLowerCase()]=function(t){return!!x.data(t,r)},x[a]=x[a]||{},n=x[a][t],o=x[a][t]=function(t,e){if(!this||!this._createWidget)return new o(t,e);arguments.length&&this._createWidget(t,e)},x.extend(o,n,{version:e.version,_proto:x.extend({},e),_childConstructors:[]}),(s=new i).options=x.widget.extend({},s.options),x.each(e,function(e,n){function o(){return i.prototype[e].apply(this,arguments)}function s(t){return i.prototype[e].apply(this,t)}l[e]="function"!=typeof n?n:function(){var t,e=this._super,i=this._superApply;return this._super=o,this._superApply=s,t=n.apply(this,arguments),this._super=e,this._superApply=i,t}}),o.prototype=x.widget.extend(s,{widgetEventPrefix:n&&s.widgetEventPrefix||t},l,{constructor:o,namespace:a,widgetName:t,widgetFullName:r}),n?(x.each(n._childConstructors,function(t,e){var i=e.prototype;x.widget(i.namespace+"."+i.widgetName,o,e._proto)}),delete n._childConstructors):i._childConstructors.push(o),x.widget.bridge(t,o),o)}
vendor: 47,700 bytes, lines 31-99
31,x.widget.extend=function(t){for(var e,i,n=u.call(arguments,1),o=0,s=n.length;o<s;o++)for(e in n[o])i=n[o][e],c.call(n[o],e)&&void 0!==i&&(x.isPlainObject(i)?t[e]=x.isPlainObject(t[e])?x.widget.extend({},t[e],i):x.widget.extend({},i):t[e]=i);return t},x.widget.bridge=function(s,e){var r=e.prototype.widgetFullName||s;x.fn[s]=function(i){var t="string"==typeof i,n=u.call(arguments,1),o=this;return t?this.length||"instance"!==i?this.each(function(){var t,e=x.data(this,r);return"instance"===i?(o=e,!1):e?"function"!=typeof e[i]||"_"===i.charAt(0)?x.error("no such method '"+i+"' for "+s+" widget instance"):(t=e[i].apply(e,n))!==e&&void 0!==t?(o=t&&t.jquery?o.pushStack(t.get()):t,!1):void 0:x.error("cannot call methods on "+s+" prior to initialization; attempted to call method '"+i+"'")}):o=void 0:(n.length&&(i=x.widget.extend.apply(null,[i].concat(n))),this.each(function(){var t=x.data(this,r);t?(t.option(i||{}),t._init&&t._init()):x.data(this,r,new e(i,this))})),o}},x.Widget=function(){},x.Widget._childConstructors=[],x.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"<div>",options:{classes:{},disabled:!1,create:null},_createWidget:function(t,e){e=x(e||this.defaultElement||this)[0],this.element=x(e),this.uuid=f++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=x(),this.hoverable=x(),this.focusable=x(),this.classesElementLookup={},e!==this&&(x.data(e,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===e&&this.destroy()}}),this.document=x(e.style?e.ownerDocument:e.document||e),this.window=x(this.document[0].defaultView||this.document[0].parentWindow)),this.options=x.widget.extend({},this.options,this._getCreateOptions(),t),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:x.noop,_create:x.noop,_init:x.noop,destroy:function(){var i=this;this._destroy(),x.each(this.classesElementLookup,function(t,e){i._removeClass(e,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:x.noop,widget:function(){return this.element},option:function(t,e){var i,n,o,s=t;if(0===arguments.length)return x.widget.extend({},this.options);if("string"==typeof t)if(s={},t=(i=t.split(".")).shift(),i.length){for(n=s[t]=x.widget.extend({},this.options[t]),o=0;o<i.length-1;o++)n[i[o]]=n[i[o]]||{},n=n[i[o]];if(t=i.pop(),1===arguments.length)return void 0===n[t]?null:n[t];n[t]=e}else{if(1===arguments.length)return void 0===this.options[t]?null:this.options[t];s[t]=e}return this._setOptions(s),this},_setOptions:function(t){for(var e in t)this._setOption(e,t[e]);return this},_setOption:function(t,e){return"classes"===t&&this._setOptionClasses(e),this.options[t]=e,"disabled"===t&&this._setOptionDisabled(e),this},_setOptionClasses:function(t){var e,i,n;for(e in t)n=this.classesElementLookup[e],t[e]!==this.options.classes[e]&&n&&n.length&&(i=x(n.get()),this._removeClass(n,e),i.addClass(this._classes({element:i,keys:e,classes:t,add:!0})))},_setOptionDisabled:function(t){this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,!!t),t&&(this._removeClass(this.hoverable,null,"ui-state-hover"),this._removeClass(this.focusable,null,"ui-state-focus"))},enable:function(){return this._setOptions({disabled:!1})},disable:function(){return this._setOptions({disabled:!0})},_classes:function(o){var s=[],r=this;function t(t,e){for(var i,n=0;n<t.length;n++)i=r.classesElementLookup[t[n]]||x(),i=o.add?(function(){var i=[];o.element.each(function(t,e){x.map(r.classesElementLookup,function(t){return t}).some(function(t){return t.is(e)})||i.push(e)}),r._on(x(i),{remove:"_untrackClassesElement"})}(),x(x.uniqueSort(i.get().concat(o.element.get())))):x(i.not(o.element).get()),r.classesElementLookup[t[n]]=i,s.push(t[n]),e&&o.classes[t[n]]&&s.push(o.classes[t[n]])}return(o=x.extend({element:this.element,classes:this.options.classes||{}},o)).keys&&t(o.keys.match(/\S+/g)||[],!0),o.extra&&t(o.extra.match(/\S+/g)||[]),s.join(" ")},_untrackClassesElement:function(i){var n=this;x.each(n.classesElementLookup,function(t,e){-1!==x.inArray(i.target,e)&&(n.classesElementLookup[t]=x(e.not(i.target).get()))}),this._off(x(i.target))},_removeClass:function(t,e,i){return this._toggleClass(t,e,i,!1)},_addClass:function(t,e,i){return this._toggleClass(t,e,i,!0)},_toggleClass:function(t,e,i,n){var o="string"==typeof t||null===t,e={extra:o?e:i,keys:o?t:e,element:o?this.element:t,add:n="boolean"==typeof n?n:i};return e.element.toggleClass(this._classes(e),n),this},_on:function(o,s,t){var r,l=this;"boolean"!=typeof o&&(t=s,s=o,o=!1),t?(s=r=x(s),this.bindings=this.bindings.add(s)):(t=s,s=this.element,r=this.widget()),x.each(t,function(t,e){function i(){if(o||!0!==l.options.disabled&&!x(this).hasClass("ui-state-disabled"))return("string"==typeof e?l[e]:e).apply(l,arguments)}"string"!=typeof e&&(i.guid=e.guid=e.guid||i.guid||x.guid++);var t=t.match(/^([\w:-]*)\s*(.*)$/),n=t[1]+l.eventNamespace,t=t[2];t?r.on(n,t,i):s.on(n,i)})},_off:function(t,e){e=(e||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,t.off(e),this.bindings=x(this.bindings.not(t).get()),this.focusable=x(this.focusable.not(t).get()),this.hoverable=x(this.hoverable.not(t).get())},_delay:function(t,e){var i=this;return setTimeout(function(){return("string"==typeof t?i[t]:t).apply(i,arguments)},e||0)},_hoverable:function(t){this.hoverable=this.hoverable.add(t),this._on(t,{mouseenter:function(t){this._addClass(x(t.currentTarget),null,"ui-state-hover")},mouseleave:function(t){this._removeClass(x(t.currentTarget),null,"ui-state-hover")}})},_focusable:function(t){this.focusable=this.focusable.add(t),this._on(t,{focusin:function(t){this._addClass(x(t.currentTarget),null,"ui-state-focus")},focusout:function(t){this._removeClass(x(t.currentTarget),null,"ui-state-focus")}})},_trigger:function(t,e,i){var n,o,s=this.options[t];if(i=i||{},(e=x.Event(e)).type=(t===this.widgetEventPrefix?t:this.widgetEventPrefix+t).toLowerCase(),e.target=this.element[0],o=e.originalEvent)for(n in o)n in e||(e[n]=o[n]);return this.element.trigger(e,i),!("function"==typeof s&&!1===s.apply(this.element[0],[e].concat(i))||e.isDefaultPrevented())}},x.each({show:"fadeIn",hide:"fadeOut"},function(s,r){x.Widget.prototype["_"+s]=function(e,t,i){var n,o=(t="string"==typeof t?{effect:t}:t)?!0!==t&&"number"!=typeof t&&t.effect||r:s;"number"==typeof(t=t||{})?t={duration:t}:!0===t&&(t={}),n=!x.isEmptyObject(t),t.complete=i,t.delay&&e.delay(t.delay),n&&x.effects&&x.effects.effect[o]?e[s](t):o!==s&&e[o]?e[o](t.duration,t.easing,i):e.queue(function(t){x(this)[s](),i&&i.call(e[0]),t()})}}),x.widget;function E(t,e,i){return[parseFloat(t[0])*(h.test(t[0])?e/100:1),parseFloat(t[1])*(h.test(t[1])?i/100:1)]}function P(t,e){return parseInt(x.css(t,e),10)||0}function H(t){return null!=t&&t===t.window}
32/*!
33 * jQuery UI Position 1.14.2
34 * https://jqueryui.com
35 *
36 * Copyright OpenJS Foundation and other contributors
37 * Released under the MIT license.
38 * https://jquery.org/license
39 *
40 * https://api.jqueryui.com/position/
41 */
42W=Math.max,C=Math.abs,s=/left|center|right/,r=/top|center|bottom/,l=/[\+\-]\d+(\.[\d]+)?%?/,a=/^\w+/,h=/%$/,i=x.fn.position,x.position={scrollbarWidth:function(){var t,e,i;return void 0!==n?n:(i=(e=x("<div style='display:block;position:absolute;width:200px;height:200px;overflow:hidden;'><div style='height:300px;width:auto;'></div></div>")).children()[0],x("body").append(e),t=i.offsetWidth,e.css("overflow","scroll"),t===(i=i.offsetWidth)&&(i=e[0].clientWidth),e.remove(),n=t-i)},getScrollInfo:function(t){var e=t.isWindow||t.isDocument?"":t.element.css("overflow-x"),i=t.isWindow||t.isDocument?"":t.element.css("overflow-y"),e="scroll"===e||"auto"===e&&t.width<t.element[0].scrollWidth;return{width:"scroll"===i||"auto"===i&&t.height<t.element[0].scrollHeight?x.position.scrollbarWidth():0,height:e?x.position.scrollbarWidth():0}},getWithinInfo:function(t){var e=x(t||window),i=H(e[0]),n=!!e[0]&&9===e[0].nodeType;return{element:e,isWindow:i,isDocument:n,offset:!i&&!n?x(t).offset():{left:0,top:0},scrollLeft:e.scrollLeft(),scrollTop:e.scrollTop(),width:e.outerWidth(),height:e.outerHeight()}}},x.fn.position=function(c){var u,d,p,g,m,v,w,y,b,_,t,e;return c&&c.of?(v="string"==typeof(c=x.extend({},c)).of?x(document).find(c.of):x(c.of),w=x.position.getWithinInfo(c.within),y=x.position.getScrollInfo(w),b=(c.collision||"flip").split(" "),_={},e=9===(e=(t=v)[0]).nodeType?{width:t.width(),height:t.height(),offset:{top:0,left:0}}:H(e)?{width:t.width(),height:t.height(),offset:{top:t.scrollTop(),left:t.scrollLeft()}}:e.preventDefault?{width:0,height:0,offset:{top:e.pageY,left:e.pageX}}:{width:t.outerWidth(),height:t.outerHeight(),offset:t.offset()},v[0].preventDefault&&(c.at="left top"),d=e.width,p=e.height,m=x.extend({},g=e.offset),x.each(["my","at"],function(){var t,e,i=(c[this]||"").split(" ");(i=1===i.length?s.test(i[0])?i.concat(["center"]):r.test(i[0])?["center"].concat(i):["center","center"]:i)[0]=s.test(i[0])?i[0]:"center",i[1]=r.test(i[1])?i[1]:"center",t=l.exec(i[0]),e=l.exec(i[1]),_[this]=[t?t[0]:0,e?e[0]:0],c[this]=[a.exec(i[0])[0],a.exec(i[1])[0]]}),1===b.length&&(b[1]=b[0]),"right"===c.at[0]?m.left+=d:"center"===c.at[0]&&(m.left+=d/2),"bottom"===c.at[1]?m.top+=p:"center"===c.at[1]&&(m.top+=p/2),u=E(_.at,d,p),m.left+=u[0],m.top+=u[1],this.each(function(){var i,t,r=x(this),l=r.outerWidth(),a=r.outerHeight(),e=P(this,"marginLeft"),n=P(this,"marginTop"),o=l+e+P(this,"marginRight")+y.width,s=a+n+P(this,"marginBottom")+y.height,h=x.extend({},m),f=E(_.my,r.outerWidth(),r.outerHeight());"right"===c.my[0]?h.left-=l:"center"===c.my[0]&&(h.left-=l/2),"bottom"===c.my[1]?h.top-=a:"center"===c.my[1]&&(h.top-=a/2),h.left+=f[0],h.top+=f[1],i={marginLeft:e,marginTop:n},x.each(["left","top"],function(t,e){x.ui.position[b[t]]&&x.ui.position[b[t]][e](h,{targetWidth:d,targetHeight:p,elemWidth:l,elemHeight:a,collisionPosition:i,collisionWidth:o,collisionHeight:s,offset:[u[0]+f[0],u[1]+f[1]],my:c.my,at:c.at,within:w,elem:r})}),c.using&&(t=function(t){var e=g.left-h.left,i=e+d-l,n=g.top-h.top,o=n+p-a,s={target:{element:v,left:g.left,top:g.top,width:d,height:p},element:{element:r,left:h.left,top:h.top,width:l,height:a},horizontal:i<0?"left":0<e?"right":"center",vertical:o<0?"top":0<n?"bottom":"middle"};d<l&&C(e+i)<d&&(s.horizontal="center"),p<a&&C(n+o)<p&&(s.vertical="middle"),W(C(e),C(i))>W(C(n),C(o))?s.important="horizontal":s.important="vertical",c.using.call(this,t,s)}),r.offset(x.extend(h,{using:t}))})):i.apply(this,arguments)},x.ui.position={fit:{left:function(t,e){var i,n=e.within,o=n.isWindow?n.scrollLeft:n.offset.left,n=n.width,s=t.left-e.collisionPosition.marginLeft,r=o-s,l=s+e.collisionWidth-n-o;n<e.collisionWidth?0<r&&l<=0?(i=t.left+r+e.collisionWidth-n-o,t.left+=r-i):t.left=!(0<l&&r<=0)&&l<r?o+n-e.collisionWidth:o:0<r?t.left+=r:0<l?t.left-=l:t.left=W(t.left-s,t.left)},top:function(t,e){var i,n=e.within,n=n.isWindow?n.scrollTop:n.offset.top,o=e.within.height,s=t.top-e.collisionPosition.marginTop,r=n-s,l=s+e.collisionHeight-o-n;o<e.collisionHeight?0<r&&l<=0?(i=t.top+r+e.collisionHeight-o-n,t.top+=r-i):t.top=!(0<l&&r<=0)&&l<r?n+o-e.collisionHeight:n:0<r?t.top+=r:0<l?t.top-=l:t.top=W(t.top-s,t.top)}},flip:{left:function(t,e){var i=e.within,n=i.offset.left+i.scrollLeft,o=i.width,i=i.isWindow?i.scrollLeft:i.offset.left,s=t.left-e.collisionPosition.marginLeft,r=s-i,s=s+e.collisionWidth-o-i,l="left"===e.my[0]?-e.elemWidth:"right"===e.my[0]?e.elemWidth:0,a="left"===e.at[0]?e.targetWidth:"right"===e.at[0]?-e.targetWidth:0,h=-2*e.offset[0];r<0?((o=t.left+l+a+h+e.collisionWidth-o-n)<0||o<C(r))&&(t.left+=l+a+h):0<s&&(0<(n=t.left-e.collisionPosition.marginLeft+l+a+h-i)||C(n)<s)&&(t.left+=l+a+h)},top:function(t,e){var i=e.within,n=i.offset.top+i.scrollTop,o=i.height,i=i.isWindow?i.scrollTop:i.offset.top,s=t.top-e.collisionPosition.marginTop,r=s-i,s=s+e.collisionHeight-o-i,l="top"===e.my[1]?-e.elemHeight:"bottom"===e.my[1]?e.elemHeight:0,a="top"===e.at[1]?e.targetHeight:"bottom"===e.at[1]?-e.targetHeight:0,h=-2*e.offset[1];r<0?((o=t.top+l+a+h+e.collisionHeight-o-n)<0||o<C(r))&&(t.top+=l+a+h):0<s&&(0<(n=t.top-e.collisionPosition.marginTop+l+a+h-i)||C(n)<s)&&(t.top+=l+a+h)}},flipfit:{left:function(){x.ui.position.flip.left.apply(this,arguments),x.ui.position.fit.left.apply(this,arguments)},top:function(){x.ui.position.flip.top.apply(this,arguments),x.ui.position.fit.top.apply(this,arguments)}}};var t,e;
43/*!
44 * jQuery UI :data 1.14.2
45 * https://jqueryui.com
46 *
47 * Copyright OpenJS Foundation and other contributors
48 * Released under the MIT license.
49 * https://jquery.org/license
50 */x.ui.position,x.extend(x.expr.pseudos,{data:x.expr.createPseudo(function(e){return function(t){return!!x.data(t,e)}})}),x.fn.extend({disableSelection:(t="onselectstart"in document.createElement("div")?"selectstart":"mousedown",function(){return this.on(t+".ui-disableSelection",function(t){t.preventDefault()})}),enableSelection:function(){return this.off(".ui-disableSelection")}}),
51/*!
52 * jQuery UI Focusable 1.14.2
53 * https://jqueryui.com
54 *
55 * Copyright OpenJS Foundation and other contributors
56 * Released under the MIT license.
57 * https://jquery.org/license
58 */
59x.ui.focusable=function(t,e){var i,n,o,s=t.nodeName.toLowerCase();return"area"===s?(o=(i=t.parentNode).name,!(!t.href||!o||"map"!==i.nodeName.toLowerCase())&&0<(i=x("img[usemap='#"+o+"']")).length&&i.is(":visible")):(/^(input|select|textarea|button|object)$/.test(s)?(n=!t.disabled)&&(o=x(t).closest("fieldset")[0])&&(n=!o.disabled):n="a"===s&&t.href||e,n&&x(t).is(":visible")&&"visible"===x(t).css("visibility"))},x.extend(x.expr.pseudos,{focusable:function(t){return x.ui.focusable(t,null!=x.attr(t,"tabindex"))}}),x.ui.focusable,x.ui.formResetMixin={_formResetHandler:function(){var e=x(this);setTimeout(function(){var t=e.data("ui-form-reset-instances");x.each(t,function(){this.refresh()})})},_bindFormResetHandler:function(){var t;this.form=x(this.element.prop("form")),this.form.length&&((t=this.form.data("ui-form-reset-instances")||[]).length||this.form.on("reset.ui-form-reset",this._formResetHandler),t.push(this),this.form.data("ui-form-reset-instances",t))},_unbindFormResetHandler:function(){var t;this.form.length&&((t=this.form.data("ui-form-reset-instances")).splice(x.inArray(this,t),1),t.length?this.form.data("ui-form-reset-instances",t):this.form.removeData("ui-form-reset-instances").off("reset.ui-form-reset"))}},
60/*!
61 * jQuery UI Legacy jQuery Core patches 1.14.2
62 * https://jqueryui.com
63 *
64 * Copyright OpenJS Foundation and other contributors
65 * Released under the MIT license.
66 * https://jquery.org/license
67 *
68 */
69x.escapeSelector||(x.escapeSelector=function(t){return CSS.escape(t+"")}),x.fn.even&&x.fn.odd||x.fn.extend({even:function(){return this.filter(function(t){return t%2==0})},odd:function(){return this.filter(function(t){return t%2==1})}}),x.ui.keyCode={BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38},x.fn.labels=function(){var t,e,i;return this.length?this[0].labels&&this[0].labels.length?this.pushStack(this[0].labels):(e=this.eq(0).parents("label"),(t=this.attr("id"))&&(i=(i=this.eq(0).parents().last()).add((i.length?i:this).siblings()),t="label[for='"+CSS.escape(t)+"']",e=e.add(i.find(t).addBack(t))),this.pushStack(e)):this.pushStack([])},x.fn.scrollParent=function(t){var e=this.css("position"),i="absolute"===e,n=t?/(auto|scroll|hidden)/:/(auto|scroll)/,t=this.parents().filter(function(){var t=x(this);return(!i||"static"!==t.css("position"))&&n.test(t.css("overflow")+t.css("overflow-y")+t.css("overflow-x"))}).eq(0);return"fixed"!==e&&t.length?t:x(this[0].ownerDocument||document)},x.extend(x.expr.pseudos,{tabbable:function(t){var e=x.attr(t,"tabindex"),i=null!=e;return(!i||0<=e)&&x.ui.focusable(t,i)}}),x.fn.extend({uniqueId:(e=0,function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++e)})}),removeUniqueId:function(){return this.each(function(){/^ui-id-\d+$/.test(this.id)&&x(this).removeAttr("id")})}});x.ui.plugin={add:function(t,e,i){var n,o=x.ui[t].prototype;for(n in i)o.plugins[n]=o.plugins[n]||[],o.plugins[n].push([e,i[n]])},call:function(t,e,i,n){var o,s=t.plugins[e];if(s&&(n||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(o=0;o<s.length;o++)t.options[s[o][0]]&&s[o][1].apply(t.element,i)}}});
70// file: /var/www/vhosts/codethislab.com/httpdocs/wp-content/plugins/ctl-wp-studio/classes/core/../../../../../wp-includes/js/jquery/ui/mouse.min.js
71/*!
72 * jQuery UI Mouse 1.14.2
73 * https://jqueryui.com
74 *
75 * Copyright OpenJS Foundation and other contributors
76 * Released under the MIT license.
77 * https://jquery.org/license
78 */
79!function(e){"use strict";"function"==typeof define&&define.amd?define(["jquery","../version","../widget"],e):e(jQuery)}(function(o){"use strict";var n=!1;return o(document).on("mouseup",function(){n=!1}),o.widget("ui.mouse",{version:"1.14.2",options:{cancel:"input, textarea, button, select, option",distance:1,delay:0},_mouseInit:function(){var t=this;this.element.on("mousedown."+this.widgetName,function(e){return t._mouseDown(e)}).on("click."+this.widgetName,function(e){if(!0===o.data(e.target,t.widgetName+".preventClickEvent"))return o.removeData(e.target,t.widgetName+".preventClickEvent"),e.stopImmediatePropagation(),!1}),this.started=!1},_mouseDestroy:function(){this.element.off("."+this.widgetName),this._mouseMoveDelegate&&this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(e){var t,s,i;if(!n)return this._mouseMoved=!1,this._mouseStarted&&this._mouseUp(e),s=1===(this._mouseDownEvent=e).which,i="string"==typeof(t=this).options.cancel&&o(e.target).closest(this.options.cancel).length,s&&!i&&this._mouseCapture(e)&&(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){t.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=!1!==this._mouseStart(e),!this._mouseStarted)?e.preventDefault():(!0===o.data(e.target,this.widgetName+".preventClickEvent")&&o.removeData(e.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(e){return t._mouseMove(e)},this._mouseUpDelegate=function(e){return t._mouseUp(e)},this.document.on("mousemove."+this.widgetName,this._mouseMoveDelegate).on("mouseup."+this.widgetName,this._mouseUpDelegate),e.preventDefault(),n=!0)),!0},_mouseMove:function(e){if(this._mouseMoved&&!e.which)if(e.originalEvent.altKey||e.originalEvent.ctrlKey||e.originalEvent.metaKey||e.originalEvent.shiftKey)this.ignoreMissingWhich=!0;else if(!this.ignoreMissingWhich)return this._mouseUp(e);return(e.which||e.button)&&(this._mouseMoved=!0),this._mouseStarted?(this._mouseDrag(e),e.preventDefault()):(this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=!1!==this._mouseStart(this._mouseDownEvent,e),this._mouseStarted?this._mouseDrag(e):this._mouseUp(e)),!this._mouseStarted)},_mouseUp:function(e){this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,e.target===this._mouseDownEvent.target&&o.data(e.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(e)),this._mouseDelayTimer&&(clearTimeout(this._mouseDelayTimer),delete this._mouseDelayTimer),this.ignoreMissingWhich=!1,n=!1,e.preventDefault()},_mouseDistanceMet:function(e){return Math.max(Math.abs(this._mouseDownEvent.pageX-e.pageX),Math.abs(this._mouseDownEvent.pageY-e.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}})});
80// file: /var/www/vhosts/codethislab.com/httpdocs/wp-content/plugins/ctl-wp-studio/classes/core/../../../../../wp-includes/js/jquery/ui/draggable.min.js
81/*!
82 * jQuery UI Draggable 1.14.2
83 * https://jqueryui.com
84 *
85 * Copyright OpenJS Foundation and other contributors
86 * Released under the MIT license.
87 * https://jquery.org/license
88 */
89!function(t){"use strict";"function"==typeof define&&define.amd?define(["jquery","./mouse","../data","../plugin","../scroll-parent","../version","../widget"],t):t(jQuery)}(function(P){"use strict";return P.widget("ui.draggable",P.ui.mouse,{version:"1.14.2",widgetEventPrefix:"drag",options:{addClasses:!0,appendTo:"parent",axis:!1,connectToSortable:!1,containment:!1,cursor:"auto",cursorAt:!1,grid:!1,handle:!1,helper:"original",iframeFix:!1,opacity:!1,refreshPositions:!1,revert:!1,revertDuration:500,scope:"default",scroll:!0,scrollSensitivity:20,scrollSpeed:20,snap:!1,snapMode:"both",snapTolerance:20,stack:!1,zIndex:!1,drag:null,start:null,stop:null},_create:function(){"original"===this.options.helper&&this._setPositionRelative(),this.options.addClasses&&this._addClass("ui-draggable"),this._setHandleClassName(),this._mouseInit()},_setOption:function(t,e){this._super(t,e),"handle"===t&&(this._removeHandleClassName(),this._setHandleClassName())},_destroy:function(){(this.helper||this.element).is(".ui-draggable-dragging")?this.destroyOnClear=!0:(this._removeHandleClassName(),this._mouseDestroy())},_mouseCapture:function(t){var e=this.options;return!(this.helper||e.disabled||0<P(t.target).closest(".ui-resizable-handle").length||(this.handle=this._getHandle(t),!this.handle)||(this._blurActiveElement(t),this._blockFrames(!0===e.iframeFix?"iframe":e.iframeFix),0))},_blockFrames:function(t){this.iframeBlocks=this.document.find(t).map(function(){var t=P(this);return P("<div>").css("position","absolute").appendTo(t.parent()).outerWidth(t.outerWidth()).outerHeight(t.outerHeight()).offset(t.offset())[0]})},_unblockFrames:function(){this.iframeBlocks&&(this.iframeBlocks.remove(),delete this.iframeBlocks)},_blurActiveElement:function(t){var e=this.document[0].activeElement;P(t.target).closest(e).length||P(e).trigger("blur")},_mouseStart:function(t){var e=this.options;return this.helper=this._createHelper(t),this._addClass(this.helper,"ui-draggable-dragging"),this._cacheHelperProportions(),P.ui.ddmanager&&(P.ui.ddmanager.current=this),this._cacheMargins(),this.cssPosition=this.helper.css("position"),this.scrollParent=this.helper.scrollParent(!0),this.offsetParent=this.helper.offsetParent(),this.hasFixedAncestor=0<this.helper.parents().filter(function(){return"fixed"===P(this).css("position")}).length,this.positionAbs=this.element.offset(),this._refreshOffsets(t),this.originalPosition=this.position=this._generatePosition(t,!1),this.originalPageX=t.pageX,this.originalPageY=t.pageY,e.cursorAt&&this._adjustOffsetFromHelper(e.cursorAt),this._setContainment(),!1===this._trigger("start",t)?(this._clear(),!1):(this._cacheHelperProportions(),P.ui.ddmanager&&!e.dropBehaviour&&P.ui.ddmanager.prepareOffsets(this,t),this._mouseDrag(t,!0),P.ui.ddmanager&&P.ui.ddmanager.dragStart(this,t),!0)},_refreshOffsets:function(t){this.offset={top:this.positionAbs.top-this.margins.top,left:this.positionAbs.left-this.margins.left,scroll:!1,parent:this._getParentOffset(),relative:this._getRelativeOffset()},this.offset.click={left:t.pageX-this.offset.left,top:t.pageY-this.offset.top}},_mouseDrag:function(t,e){if(this.hasFixedAncestor&&(this.offset.parent=this._getParentOffset()),this.position=this._generatePosition(t,!0),this.positionAbs=this._convertPositionTo("absolute"),!e){e=this._uiHash();if(!1===this._trigger("drag",t,e))return this._mouseUp(new P.Event("mouseup",t)),!1;this.position=e.position}return this.helper[0].style.left=this.position.left+"px",this.helper[0].style.top=this.position.top+"px",P.ui.ddmanager&&P.ui.ddmanager.drag(this,t),!1},_mouseStop:function(t){var e=this,s=!1;return P.ui.ddmanager&&!this.options.dropBehaviour&&(s=P.ui.ddmanager.drop(this,t)),this.dropped&&(s=this.dropped,this.dropped=!1),"invalid"===this.options.revert&&!s||"valid"===this.options.revert&&s||!0===this.options.revert||"function"==typeof this.options.revert&&this.options.revert.call(this.element,s)?P(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,10),function(){!1!==e._trigger("stop",t)&&e._clear()}):!1!==this._trigger("stop",t)&&this._clear(),!1},_mouseUp:function(t){return this._unblockFrames(),P.ui.ddmanager&&P.ui.ddmanager.dragStop(this,t),this.handleElement.is(t.target)&&this.element.trigger("focus"),P.ui.mouse.prototype._mouseUp.call(this,t)},cancel:function(){return this.helper.is(".ui-draggable-dragging")?this._mouseUp(new P.Event("mouseup",{target:this.element[0]})):this._clear(),this},_getHandle:function(t){return!this.options.handle||!!P(t.target).closest(this.element.find(this.options.handle)).length},_setHandleClassName:function(){this.handleElement=this.options.handle?this.element.find(this.options.handle):this.element,this._addClass(this.handleElement,"ui-draggable-handle")},_removeHandleClassName:function(){this._removeClass(this.handleElement,"ui-draggable-handle")},_createHelper:function(t){var e=this.options,s="function"==typeof e.helper,t=s?P(e.helper.apply(this.element[0],[t])):"clone"===e.helper?this.element.clone().removeAttr("id"):this.element;return t.parents("body").length||t.appendTo("parent"===e.appendTo?this.element[0].parentNode:e.appendTo),s&&t[0]===this.element[0]&&this._setPositionRelative(),t[0]===this.element[0]||/(fixed|absolute)/.test(t.css("position"))||t.css("position","absolute"),t},_setPositionRelative:function(){/^(?:r|a|f)/.test(this.element.css("position"))||(this.element[0].style.position="relative")},_adjustOffsetFromHelper:function(t){"string"==typeof t&&(t=t.split(" ")),"left"in(t=Array.isArray(t)?{left:+t[0],top:+t[1]||0}:t)&&(this.offset.click.left=t.left+this.margins.left),"right"in t&&(this.offset.click.left=this.helperProportions.width-t.right+this.margins.left),"top"in t&&(this.offset.click.top=t.top+this.margins.top),"bottom"in t&&(this.offset.click.top=this.helperProportions.height-t.bottom+this.margins.top)},_isRootNode:function(t){return/(html|body)/i.test(t.tagName)||t===this.document[0]},_getParentOffset:function(){var t=this.offsetParent.offset(),e=this.document[0];return"absolute"===this.cssPosition&&this.scrollParent[0]!==e&&P.contains(this.scrollParent[0],this.offsetParent[0])&&(t.left+=this.scrollParent.scrollLeft(),t.top+=this.scrollParent.scrollTop()),{top:(t=this._isRootNode(this.offsetParent[0])?{top:0,left:0}:t).top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:t.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){var t,e;return"relative"!==this.cssPosition?{top:0,left:0}:(t=this.element.position(),e=this._isRootNode(this.scrollParent[0]),{top:t.top-(parseInt(this.helper.css("top"),10)||0)+(e?0:this.scrollParent.scrollTop()),left:t.left-(parseInt(this.helper.css("left"),10)||0)+(e?0:this.scrollParent.scrollLeft())})},_cacheMargins:function(){this.margins={left:parseInt(this.element.css("marginLeft"),10)||0,top:parseInt(this.element.css("marginTop"),10)||0,right:parseInt(this.element.css("marginRight"),10)||0,bottom:parseInt(this.element.css("marginBottom"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var t,e=this.options,s=this.document[0];this.relativeContainer=null,e.containment?"window"===e.containment?this.containment=[P(window).scrollLeft()-this.offset.relative.left-this.offset.parent.left,P(window).scrollTop()-this.offset.relative.top-this.offset.parent.top,P(window).scrollLeft()+P(window).width()-this.helperProportions.width-this.margins.left,P(window).scrollTop()+(P(window).height()||s.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top]:"document"===e.containment?this.containment=[0,0,P(s).width()-this.helperProportions.width-this.margins.left,(P(s).height()||s.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top]:e.containment.constructor===Array?this.containment=e.containment:("parent"===e.containment&&(e.containment=this.helper[0].parentNode),(e=(s=P(e.containment))[0])&&(t=/(scroll|auto)/.test(s.css("overflow")),this.containment=[(parseInt(s.css("borderLeftWidth"),10)||0)+(parseInt(s.css("paddingLeft"),10)||0),(parseInt(s.css("borderTopWidth"),10)||0)+(parseInt(s.css("paddingTop"),10)||0),(t?Math.max(e.scrollWidth,e.offsetWidth):e.offsetWidth)-(parseInt(s.css("borderRightWidth"),10)||0)-(parseInt(s.css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left-this.margins.right,(t?Math.max(e.scrollHeight,e.offsetHeight):e.offsetHeight)-(parseInt(s.css("borderBottomWidth"),10)||0)-(parseInt(s.css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top-this.margins.bottom],this.relativeContainer=s)):this.containment=null},_convertPositionTo:function(t,e){e=e||this.position;var t="absolute"===t?1:-1,s=this._isRootNode(this.scrollParent[0]);return{top:e.top+this.offset.relative.top*t+this.offset.parent.top*t-("fixed"===this.cssPosition?-this.offset.scroll.top:s?0:this.offset.scroll.top)*t,left:e.left+this.offset.relative.left*t+this.offset.parent.left*t-("fixed"===this.cssPosition?-this.offset.scroll.left:s?0:this.offset.scroll.left)*t}},_generatePosition:function(t,e){var s,i=this.options,o=this._isRootNode(this.scrollParent[0]),n=t.pageX,r=t.pageY;return o&&this.offset.scroll||(this.offset.scroll={top:this.scrollParent.scrollTop(),left:this.scrollParent.scrollLeft()}),{top:(r=e&&(this.containment&&(s=this.relativeContainer?(e=this.relativeContainer.offset(),[this.containment[0]+e.left,this.containment[1]+e.top,this.containment[2]+e.left,this.containment[3]+e.top]):this.containment,t.pageX-this.offset.click.left<s[0]&&(n=s[0]+this.offset.click.left),t.pageY-this.offset.click.top<s[1]&&(r=s[1]+this.offset.click.top),t.pageX-this.offset.click.left>s[2]&&(n=s[2]+this.offset.click.left),t.pageY-this.offset.click.top>s[3])&&(r=s[3]+this.offset.click.top),i.grid&&(e=i.grid[1]?this.originalPageY+Math.round((r-this.originalPageY)/i.grid[1])*i.grid[1]:this.originalPageY,r=!s||e-this.offset.click.top>=s[1]||e-this.offset.click.top>s[3]?e:e-this.offset.click.top>=s[1]?e-i.grid[1]:e+i.grid[1],t=i.grid[0]?this.originalPageX+Math.round((n-this.originalPageX)/i.grid[0])*i.grid[0]:this.originalPageX,n=!s||t-this.offset.click.left>=s[0]||t-this.offset.click.left>s[2]?t:t-this.offset.click.left>=s[0]?t-i.grid[0]:t+i.grid[0]),"y"===i.axis&&(n=this.originalPageX),"x"===i.axis)?this.originalPageY:r)-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.offset.scroll.top:o?0:this.offset.scroll.top),left:n-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.offset.scroll.left:o?0:this.offset.scroll.left)}},_clear:function(){this._removeClass(this.helper,"ui-draggable-dragging"),this.helper[0]===this.element[0]||this.cancelHelperRemoval||this.helper.remove(),this.helper=null,this.cancelHelperRemoval=!1,this.destroyOnClear&&this.destroy()},_trigger:function(t,e,s){return s=s||this._uiHash(),P.ui.plugin.call(this,t,[e,s,this],!0),/^(drag|start|stop)/.test(t)&&(this.positionAbs=this._convertPositionTo("absolute"),s.offset=this.positionAbs),P.Widget.prototype._trigger.call(this,t,e,s)},plugins:{},_uiHash:function(){return{helper:this.helper,position:this.position,originalPosition:this.originalPosition,offset:this.positionAbs}}}),P.ui.plugin.add("draggable","connectToSortable",{start:function(e,t,s){var i=P.extend({},t,{item:s.element});s.sortables=[],P(s.options.connectToSortable).each(function(){var t=P(this).sortable("instance");t&&!t.options.disabled&&(s.sortables.push(t),t.refreshPositions(),t._trigger("activate",e,i))})},stop:function(e,t,s){var i=P.extend({},t,{item:s.element});s.cancelHelperRemoval=!1,P.each(s.sortables,function(){var t=this;t.isOver?(t.isOver=0,s.cancelHelperRemoval=!0,t.cancelHelperRemoval=!1,t._storedCSS={position:t.placeholder.css("position"),top:t.placeholder.css("top"),left:t.placeholder.css("left")},t._mouseStop(e),t.options.helper=t.options._helper):(t.cancelHelperRemoval=!0,t._trigger("deactivate",e,i))})},drag:function(s,i,o){P.each(o.sortables,function(){var t=!1,e=this;e.positionAbs=o.positionAbs,e.helperProportions=o.helperProportions,e.offset.click=o.offset.click,e._intersectsWith(e.containerCache)&&(t=!0,P.each(o.sortables,function(){return this.positionAbs=o.positionAbs,this.helperProportions=o.helperProportions,this.offset.click=o.offset.click,t=this!==e&&this._intersectsWith(this.containerCache)&&P.contains(e.element[0],this.element[0])?!1:t})),t?(e.isOver||(e.isOver=1,o._parent=i.helper.parent(),e.currentItem=i.helper.appendTo(e.element).data("ui-sortable-item",!0),e.options._helper=e.options.helper,e.options.helper=function(){return i.helper[0]},s.target=e.currentItem[0],e._mouseCapture(s,!0),e._mouseStart(s,!0,!0),e.offset.click.top=o.offset.click.top,e.offset.click.left=o.offset.click.left,e.offset.parent.left-=o.offset.parent.left-e.offset.parent.left,e.offset.parent.top-=o.offset.parent.top-e.offset.parent.top,o._trigger("toSortable",s),o.dropped=e.element,P.each(o.sortables,function(){this.refreshPositions()}),o.currentItem=o.element,e.fromOutside=o),e.currentItem&&(e._mouseDrag(s),i.position=e.position)):e.isOver&&(e.isOver=0,e.cancelHelperRemoval=!0,e.options._revert=e.options.revert,e.options.revert=!1,e._trigger("out",s,e._uiHash(e)),e._mouseStop(s,!0),e.options.revert=e.options._revert,e.options.helper=e.options._helper,e.placeholder&&e.placeholder.remove(),i.helper.appendTo(o._parent),o._refreshOffsets(s),i.position=o._generatePosition(s,!0),o._trigger("fromSortable",s),o.dropped=!1,P.each(o.sortables,function(){this.refreshPositions()}))})}}),P.ui.plugin.add("draggable","cursor",{start:function(t,e,s){var i=P("body"),s=s.options;i.css("cursor")&&(s._cursor=i.css("cursor")),i.css("cursor",s.cursor)},stop:function(t,e,s){s=s.options;s._cursor&&P("body").css("cursor",s._cursor)}}),P.ui.plugin.add("draggable","opacity",{start:function(t,e,s){e=P(e.helper),s=s.options;e.css("opacity")&&(s._opacity=e.css("opacity")),e.css("opacity",s.opacity)},stop:function(t,e,s){s=s.options;s._opacity&&P(e.helper).css("opacity",s._opacity)}}),P.ui.plugin.add("draggable","scroll",{start:function(t,e,s){s.scrollParentNotHidden||(s.scrollParentNotHidden=s.helper.scrollParent(!1)),s.scrollParentNotHidden[0]!==s.document[0]&&"HTML"!==s.scrollParentNotHidden[0].tagName&&(s.overflowOffset=s.scrollParentNotHidden.offset())},drag:function(t,e,s){var i=s.options,o=!1,n=s.scrollParentNotHidden[0],r=s.document[0];n!==r&&"HTML"!==n.tagName?(i.axis&&"x"===i.axis||(s.overflowOffset.top+n.offsetHeight-t.pageY<i.scrollSensitivity?n.scrollTop=o=n.scrollTop+i.scrollSpeed:t.pageY-s.overflowOffset.top<i.scrollSensitivity&&(n.scrollTop=o=n.scrollTop-i.scrollSpeed)),i.axis&&"y"===i.axis||(s.overflowOffset.left+n.offsetWidth-t.pageX<i.scrollSensitivity?n.scrollLeft=o=n.scrollLeft+i.scrollSpeed:t.pageX-s.overflowOffset.left<i.scrollSensitivity&&(n.scrollLeft=o=n.scrollLeft-i.scrollSpeed))):(i.axis&&"x"===i.axis||(t.pageY-P(r).scrollTop()<i.scrollSensitivity?o=P(r).scrollTop(P(r).scrollTop()-i.scrollSpeed):P(window).height()-(t.pageY-P(r).scrollTop())<i.scrollSensitivity&&(o=P(r).scrollTop(P(r).scrollTop()+i.scrollSpeed))),i.axis&&"y"===i.axis||(t.pageX-P(r).scrollLeft()<i.scrollSensitivity?o=P(r).scrollLeft(P(r).scrollLeft()-i.scrollSpeed):P(window).width()-(t.pageX-P(r).scrollLeft())<i.scrollSensitivity&&(o=P(r).scrollLeft(P(r).scrollLeft()+i.scrollSpeed)))),!1!==o&&P.ui.ddmanager&&!i.dropBehaviour&&P.ui.ddmanager.prepareOffsets(s,t)}}),P.ui.plugin.add("draggable","snap",{start:function(t,e,s){var i=s.options;s.snapElements=[],P(i.snap.constructor!==String?i.snap.items||":data(ui-draggable)":i.snap).each(function(){var t=P(this),e=t.offset();this!==s.element[0]&&s.snapElements.push({item:this,width:t.outerWidth(),height:t.outerHeight(),top:e.top,left:e.left})})},drag:function(t,e,s){for(var i,o,n,r,l,a,h,p,c,f=s.options,d=f.snapTolerance,g=e.offset.left,u=g+s.helperProportions.width,m=e.offset.top,v=m+s.helperProportions.height,_=s.snapElements.length-1;0<=_;_--)a=(l=s.snapElements[_].left-s.margins.left)+s.snapElements[_].width,p=(h=s.snapElements[_].top-s.margins.top)+s.snapElements[_].height,u<l-d||a+d<g||v<h-d||p+d<m||!P.contains(s.snapElements[_].item.ownerDocument,s.snapElements[_].item)?(s.snapElements[_].snapping&&s.options.snap.release&&s.options.snap.release.call(s.element,t,P.extend(s._uiHash(),{snapItem:s.snapElements[_].item})),s.snapElements[_].snapping=!1):("inner"!==f.snapMode&&(i=Math.abs(h-v)<=d,o=Math.abs(p-m)<=d,n=Math.abs(l-u)<=d,r=Math.abs(a-g)<=d,i&&(e.position.top=s._convertPositionTo("relative",{top:h-s.helperProportions.height,left:0}).top),o&&(e.position.top=s._convertPositionTo("relative",{top:p,left:0}).top),n&&(e.position.left=s._convertPositionTo("relative",{top:0,left:l-s.helperProportions.width}).left),r)&&(e.position.left=s._convertPositionTo("relative",{top:0,left:a}).left),c=i||o||n||r,"outer"!==f.snapMode&&(i=Math.abs(h-m)<=d,o=Math.abs(p-v)<=d,n=Math.abs(l-g)<=d,r=Math.abs(a-u)<=d,i&&(e.position.top=s._convertPositionTo("relative",{top:h,left:0}).top),o&&(e.position.top=s._convertPositionTo("relative",{top:p-s.helperProportions.height,left:0}).top),n&&(e.position.left=s._convertPositionTo("relative",{top:0,left:l}).left),r)&&(e.position.left=s._convertPositionTo("relative",{top:0,left:a-s.helperProportions.width}).left),!s.snapElements[_].snapping&&(i||o||n||r||c)&&s.options.snap.snap&&s.options.snap.snap.call(s.element,t,P.extend(s._uiHash(),{snapItem:s.snapElements[_].item})),s.snapElements[_].snapping=i||o||n||r||c)}}),P.ui.plugin.add("draggable","stack",{start:function(t,e,s){var i,s=s.options,s=P.makeArray(P(s.stack)).sort(function(t,e){return(parseInt(P(t).css("zIndex"),10)||0)-(parseInt(P(e).css("zIndex"),10)||0)});s.length&&(i=parseInt(P(s[0]).css("zIndex"),10)||0,P(s).each(function(t){P(this).css("zIndex",i+t)}),this.css("zIndex",i+s.length))}}),P.ui.plugin.add("draggable","zIndex",{start:function(t,e,s){e=P(e.helper),s=s.options;e.css("zIndex")&&(s._zIndex=e.css("zIndex")),e.css("zIndex",s.zIndex)},stop:function(t,e,s){s=s.options;s._zIndex&&P(e.helper).css("zIndex",s._zIndex)}}),P.ui.draggable});
90// file: /var/www/vhosts/codethislab.com/httpdocs/wp-content/plugins/ctl-wp-studio/classes/core/../../../../../wp-includes/js/jquery/ui/resizable.min.js
91/*!
92 * jQuery UI Resizable 1.14.2
93 * https://jqueryui.com
94 *
95 * Copyright OpenJS Foundation and other contributors
96 * Released under the MIT license.
97 * https://jquery.org/license
98 */
99!function(t){"use strict";"function"==typeof define&&define.amd?define(["jquery","./mouse","../disable-selection","../plugin","../version","../widget"],t):t(jQuery)}(function(z){"use strict";return z.widget("ui.resizable",z.ui.mouse,{version:"1.14.2",widgetEventPrefix:"resize",options:{alsoResize:!1,animate:!1,animateDuration:"slow",animateEasing:"swing",aspectRatio:!1,autoHide:!1,classes:{"ui-resizable-se":"ui-icon ui-icon-gripsmall-diagonal-se"},containment:!1,ghost:!1,grid:!1,handles:"e,s,se",helper:!1,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:90,resize:null,start:null,stop:null},_num:function(t){return parseFloat(t)||0},_isNumber:function(t){return!isNaN(parseFloat(t))},_hasScroll:function(t,e){var i=!1,s=z(t).css("overflow");if("hidden"===s)return!1;if("scroll"===s)return!0;if(0<t[s=e&&"left"===e?"scrollLeft":"scrollTop"])return!0;try{t[s]=1,i=0<t[s],t[s]=0}catch(t){}return i},_create:function(){var t,e=this.options,i=this;this._addClass("ui-resizable"),z.extend(this,{_aspectRatio:!!e.aspectRatio,aspectRatio:e.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:e.helper||e.ghost||e.animate?e.helper||"ui-resizable-helper":null}),this.element[0].nodeName.match(/^(canvas|textarea|input|select|button|img)$/i)&&(this.element.wrap(z("<div class='ui-wrapper'></div>").css({overflow:"hidden",position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,t={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(t),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this._proportionallyResize()),this._setupHandles(),e.autoHide&&z(this.element).on("mouseenter",function(){e.disabled||(i._removeClass("ui-resizable-autohide"),i._handles.show())}).on("mouseleave",function(){e.disabled||i.resizing||(i._addClass("ui-resizable-autohide"),i._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy(),this._addedHandles.remove();function t(t){z(t).removeData("resizable").removeData("ui-resizable").off(".resizable")}var e;return this.elementIsWrapper&&(t(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),t(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles();break;case"aspectRatio":this._aspectRatio=!!e}},_setupHandles:function(){var t,e,i,s,h,n=this.options,o=this;if(this.handles=n.handles||(z(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=z(),this._addedHandles=z(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),i=this.handles.split(","),this.handles={},e=0;e<i.length;e++)s="ui-resizable-"+(t=String.prototype.trim.call(i[e])),h=z("<div>"),this._addClass(h,"ui-resizable-handle "+s),h.css({zIndex:n.zIndex}),this.handles[t]=".ui-resizable-"+t,this.element.children(this.handles[t]).length||(this.element.append(h),this._addedHandles=this._addedHandles.add(h));this._renderAxis=function(t){var e,i,s;for(e in t=t||this.element,this.handles)this.handles[e].constructor===String?this.handles[e]=this.element.children(this.handles[e]).first().show():(this.handles[e].jquery||this.handles[e].nodeType)&&(this.handles[e]=z(this.handles[e]),this._on(this.handles[e],{mousedown:o._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(s=z(this.handles[e],this.element),s=/sw|ne|nw|se|n|s/.test(e)?s.outerHeight():s.outerWidth(),i=["padding",/ne|nw|n/.test(e)?"Top":/se|sw|s/.test(e)?"Bottom":/^e$/.test(e)?"Right":"Left"].join(""),t.css(i,s),this._proportionallyResize()),this._handles=this._handles.add(this.handles[e])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){o.resizing||(this.className&&(h=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),o.axis=h&&h[1]?h[1]:"se")}),n.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._addedHandles.remove()},_mouseCapture:function(t){var e,i,s=!1;for(e in this.handles)(i=z(this.handles[e])[0])!==t.target&&!z.contains(i,t.target)||(s=!0);return!this.options.disabled&&s},_mouseStart:function(t){var e,i,s,h=this.options,n=this.element;return this.resizing=!0,this._renderProxy(),e=this._num(this.helper.css("left")),i=this._num(this.helper.css("top")),h.containment&&(e+=z(h.containment).scrollLeft()||0,i+=z(h.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:e,top:i},this._helper||(s=this._calculateAdjustedElementDimensions(n)),this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:s.width,height:s.height},this.originalSize=this._helper?{width:n.outerWidth(),height:n.outerHeight()}:{width:s.width,height:s.height},this.sizeDiff={width:n.outerWidth()-n.width(),height:n.outerHeight()-n.height()},this.originalPosition={left:e,top:i},this.originalMousePosition={left:t.pageX,top:t.pageY},this.aspectRatio="number"==typeof h.aspectRatio?h.aspectRatio:this.originalSize.width/this.originalSize.height||1,s=z(".ui-resizable-"+this.axis).css("cursor"),z("body").css("cursor","auto"===s?this.axis+"-resize":s),this._addClass("ui-resizable-resizing"),this._propagate("start",t),!0},_mouseDrag:function(t){var e=this.originalMousePosition,i=this.axis,s=t.pageX-e.left||0,e=t.pageY-e.top||0,i=this._change[i];return this._updatePrevProperties(),i&&(i=i.apply(this,[t,s,e]),this._updateVirtualBoundaries(t.shiftKey),(this._aspectRatio||t.shiftKey)&&(i=this._updateRatio(i,t)),i=this._respectSize(i,t),this._updateCache(i),this._propagate("resize",t),s=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),z.isEmptyObject(s)||(this._updatePrevProperties(),this._trigger("resize",t,this.ui()),this._applyChanges())),!1},_mouseStop:function(t){this.resizing=!1;var e,i,s,h=this.options,n=this;return this._helper&&(i=(e=(i=this._proportionallyResizeElements).length&&/textarea/i.test(i[0].nodeName))&&this._hasScroll(i[0],"left")?0:n.sizeDiff.height,e=e?0:n.sizeDiff.width,e={width:n.helper.width()-e,height:n.helper.height()-i},i=parseFloat(n.element.css("left"))+(n.position.left-n.originalPosition.left)||null,s=parseFloat(n.element.css("top"))+(n.position.top-n.originalPosition.top)||null,h.animate||this.element.css(z.extend(e,{top:s,left:i})),n.helper.height(n.size.height),n.helper.width(n.size.width),this._helper)&&!h.animate&&this._proportionallyResize(),z("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",t),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.helper.css(t),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px",this.helper.width(t.width)),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px",this.helper.height(t.height)),t},_updateVirtualBoundaries:function(t){var e,i,s,h=this.options,h={minWidth:this._isNumber(h.minWidth)?h.minWidth:0,maxWidth:this._isNumber(h.maxWidth)?h.maxWidth:1/0,minHeight:this._isNumber(h.minHeight)?h.minHeight:0,maxHeight:this._isNumber(h.maxHeight)?h.maxHeight:1/0};(this._aspectRatio||t)&&(t=h.minHeight*this.aspectRatio,i=h.minWidth/this.aspectRatio,e=h.maxHeight*this.aspectRatio,s=h.maxWidth/this.aspectRatio,h.minWidth<t&&(h.minWidth=t),h.minHeight<i&&(h.minHeight=i),e<h.maxWidth&&(h.maxWidth=e),s<h.maxHeight)&&(h.maxHeight=s),this._vBoundaries=h},_updateCache:function(t){this.offset=this.helper.offset(),this._isNumber(t.left)&&(this.position.left
vendor: 5,172 bytes, line 99
99=t.left),this._isNumber(t.top)&&(this.position.top=t.top),this._isNumber(t.height)&&(this.size.height=t.height),this._isNumber(t.width)&&(this.size.width=t.width)},_updateRatio:function(t){var e=this.position,i=this.size,s=this.axis;return this._isNumber(t.height)?t.width=t.height*this.aspectRatio:this._isNumber(t.width)&&(t.height=t.width/this.aspectRatio),"sw"===s&&(t.left=e.left+(i.width-t.width),t.top=null),"nw"===s&&(t.top=e.top+(i.height-t.height),t.left=e.left+(i.width-t.width)),t},_respectSize:function(t){var e=this._vBoundaries,i=this.axis,s=this._isNumber(t.width)&&e.maxWidth&&e.maxWidth<t.width,h=this._isNumber(t.height)&&e.maxHeight&&e.maxHeight<t.height,n=this._isNumber(t.width)&&e.minWidth&&e.minWidth>t.width,o=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,a=this.originalPosition.left+this.originalSize.width,l=this.originalPosition.top+this.originalSize.height,r=/sw|nw|w/.test(i),i=/nw|ne|n/.test(i);return n&&(t.width=e.minWidth),o&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),h&&(t.height=e.maxHeight),n&&r&&(t.left=a-e.minWidth),s&&r&&(t.left=a-e.maxWidth),o&&i&&(t.top=l-e.minHeight),h&&i&&(t.top=l-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],s=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],h=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];e<4;e++)i[e]=parseFloat(s[e])||0,i[e]+=parseFloat(h[e])||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_calculateAdjustedElementDimensions:function(t){var e,i,s=t.get(0);return"content-box"!==t.css("box-sizing")||!this._hasScroll(s)&&!this._hasScroll(s,"left")?{height:parseFloat(t.css("height")),width:parseFloat(t.css("width"))}:(e=parseFloat(s.style.width),s=parseFloat(s.style.height),i=this._getPaddingPlusBorderDimensions(t),e=isNaN(e)?this._getElementTheoreticalSize(t,i,"width"):e,{height:isNaN(s)?this._getElementTheoreticalSize(t,i,"height"):s,width:e})},_getElementTheoreticalSize:function(t,e,i){return Math.max(0,Math.ceil(t.get(0)["offset"+i[0].toUpperCase()+i.slice(1)]-e[i]-.5))||0},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;e<this._proportionallyResizeElements.length;e++)t=this._proportionallyResizeElements[e],this.outerDimensions||(this.outerDimensions=this._getPaddingPlusBorderDimensions(t)),t.css({height:i.height()-this.outerDimensions.height||0,width:i.width()-this.outerDimensions.width||0})},_renderProxy:function(){var t=this.element,e=this.options;this.elementOffset=t.offset(),this._helper?(this.helper=this.helper||z("<div></div>").css({overflow:"hidden"}),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++e.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize;return{left:this.originalPosition.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize;return{top:this.originalPosition.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(t,e,i){return z.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},sw:function(t,e,i){return z.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[t,e,i]))},ne:function(t,e,i){return z.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},nw:function(t,e,i){return z.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[t,e,i]))}},_propagate:function(t,e){z.ui.plugin.call(this,t,[e,this.ui()]),"resize"!==t&&this._trigger(t,e,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),z.ui.plugin.add("resizable","animate",{stop:function(e){var i=z(this).resizable("instance"),t=i.options,s=i._proportionallyResizeElements,h=s.length&&/textarea/i.test(s[0].nodeName),n=h&&i._hasScroll(s[0],"left")?0:i.sizeDiff.height,h=h?0:i.sizeDiff.width,h={width:i.size.width-h,height:i.size.height-n},n=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left)||null,o=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(z.extend(h,o&&n?{top:o,left:n}:{}),{duration:t.animateDuration,easing:t.animateEasing,step:function(){var t={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};s&&s.length&&z(s[0]).css({width:t.width,height:t.height}),i._updateCache(t),i._propagate("resize",e)}})}}),z.ui.plugin.add("resizable","containment",{start:function(){var i,s,t,e,h=z(this).resizable("instance"),n=h.options,o=h.element,n=n.
vendor: 3,247 bytes, line 99
99containment,o=n instanceof z?n.get(0):/parent/.test(n)?o.parent().get(0):n;o&&(h.containerElement=z(o),/document/.test(n)||n===document?(h.containerOffset={left:0,top:0},h.containerPosition={left:0,top:0},h.parentData={element:z(document),left:0,top:0,width:z(document).width(),height:z(document).height()||document.body.parentNode.scrollHeight}):(i=z(o),s=[],z(["Top","Right","Left","Bottom"]).each(function(t,e){s[t]=h._num(i.css("padding"+e))}),h.containerOffset=i.offset(),h.containerPosition=i.position(),h.containerSize={height:i.innerHeight()-s[3],width:i.innerWidth()-s[1]},n=h.containerOffset,e=h.containerSize.height,t=h.containerSize.width,t=h._hasScroll(o,"left")?o.scrollWidth:t,e=h._hasScroll(o)?o.scrollHeight:e,h.parentData={element:o,left:n.left,top:n.top,width:t,height:e}))},resize:function(t){var e=z(this).resizable("instance"),i=e.options,s=e.containerOffset,h=e.position,t=e._aspectRatio||t.shiftKey,n={top:0,left:0},o=e.containerElement,a=!0;o[0]!==document&&/static/.test(o.css("position"))&&(n=s),h.left<(e._helper?s.left:0)&&(e.size.width=e.size.width+(e._helper?e.position.left-s.left:e.position.left-n.left),t&&(e.size.height=e.size.width/e.aspectRatio,a=!1),e.position.left=i.helper?s.left:0),h.top<(e._helper?s.top:0)&&(e.size.height=e.size.height+(e._helper?e.position.top-s.top:e.position.top),t&&(e.size.width=e.size.height*e.aspectRatio,a=!1),e.position.top=e._helper?s.top:0),o=e.containerElement.get(0)===e.element.parent().get(0),i=/relative|absolute/.test(e.containerElement.css("position")),o&&i?(e.offset.left=e.parentData.left+e.position.left,e.offset.top=e.parentData.top+e.position.top):(e.offset.left=e.element.offset().left,e.offset.top=e.element.offset().top),h=Math.abs(e.sizeDiff.width+(e._helper?e.offset.left-n.left:e.offset.left-s.left)),o=Math.abs(e.sizeDiff.height+(e._helper?e.offset.top-n.top:e.offset.top-s.top)),h+e.size.width>=e.parentData.width&&(e.size.width=e.parentData.width-h,t)&&(e.size.height=e.size.width/e.aspectRatio,a=!1),o+e.size.height>=e.parentData.height&&(e.size.height=e.parentData.height-o,t)&&(e.size.width=e.size.height*e.aspectRatio,a=!1),a||(e.position.left=e.prevPosition.left,e.position.top=e.prevPosition.top,e.size.width=e.prevSize.width,e.size.height=e.prevSize.height)},stop:function(){var t=z(this).resizable("instance"),e=t.options,i=t.containerOffset,s=t.containerPosition,h=t.containerElement,n=z(t.helper),o=n.offset(),a=n.outerWidth()-t.sizeDiff.width,n=n.outerHeight()-t.sizeDiff.height;t._helper&&!e.animate&&/relative/.test(h.css("position"))&&z(this).css({left:o.left-s.left-i.left,width:a,height:n}),t._helper&&!e.animate&&/static/.test(h.css("position"))&&z(this).css({left:o.left-s.left-i.left,width:a,height:n})}}),z.ui.plugin.add("resizable","alsoResize",{start:function(){var i=z(this).resizable("instance"),t=i.options;z(t.alsoResize).each(function(){var t=z(this),e=i._calculateAdjustedElementDimensions(t);t.data("ui-resizable-alsoresize",{width:e.width,height:e.height,left:parseFloat(t.css("left")),top:parseFloat(t.css("top"))})})},resize:function(t,i){var e=z(this).resizable("instance"),s=e.options,h=e.originalSize,n=e.originalPosition,o={height:e.size.height-h.height||0,width:e.size.width-h.width||0,top:e.position.top-n.top||0,left
99:e.position.left-n.left||0};z(s.alsoResize).each(function(){var t=z(this),s=z(this).data("ui-resizable-alsoresize"),h={},e=t.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];z.each(e,function(t,e){var i=(s[e]||0)+(o[e]||0);i&&0<=i&&(h[e]=i||null)}),t.css(h)})},stop:function(){z(this).removeData("ui-resizable-alsoresize")}}),z.ui.plugin.add("resizable","ghost",{start:function(){var t=z(this).resizable("instance"),e=t.size;t.ghost=t.originalElement.clone(),t.ghost.css({opacity:.25,display:"block",position:"relative",height:e.height,width:e.width,margin:0,left:0,top:0}),t._addClass(t.ghost,"ui-resizable-ghost"),!0===z.uiBackCompat&&"string"==typeof t.options.ghost&&t.ghost.addClass(this.options.ghost),t.ghost.appendTo(t.helper)},resize:function(){var t=z(this).resizable("instance");t.ghost&&t.ghost.css({position:"relative",height:t.size.height,width:t.size.width})},stop:function(){var t=z(this).resizable("instance");t.ghost&&t.helper&&t.helper.get(0).removeChild(t.ghost.get(0))}}),z.ui.plugin.add("resizable","grid",{resize:function(){var t,e=z(this).resizable("instance"),i=e.options,s=e.size,h=e.originalSize,n=e.originalPosition,o=e.axis,a="number"==typeof i.grid?[i.grid,i.grid]:i.grid,l=a[0]||1,r=a[1]||1,p=Math.round((s.width-h.width)/l)*l,s=Math.round((s.height-h.height)/r)*r,d=h.width+p,g=h.height+s,u=i.maxWidth&&i.maxWidth<d,c=i.maxHeight&&i.maxHeight<g,f=i.minWidth&&i.minWidth>d,m=i.minHeight&&i.minHeight>g;i.grid=a,f&&(d+=l),m&&(g+=r),u&&(d-=l),c&&(g-=r),/^(se|s|e)$/.test(o)?(e.size.width=d,e.size.height=g):/^(ne)$/.test(o)?(e.size.width=d,e.size.height=g,e.position.top=n.top-s):/^(sw)$/.test(o)?(e.size.width=d,e.size.height=g,e.position.left=n.left-p):((g-r<=0||d-l<=0)&&(t=e._getPaddingPlusBorderDimensions(this)),0<g-r?(e.size.height=g,e.position.top=n.top-s):(g=r-t.height,e.size.height=g,e.position.top=n.top+h.height-g),0<d-l?(e.size.width=d,e.position.left=n.left-p):(d=l-t.width,e.size.width=d,e.position.left=n.left+h.width-d))}}),z.ui.resizable});
100// file: /var/www/vhosts/codethislab.com/httpdocs/wp-content/plugins/ctl-wp-studio/classes/core/../../js/select2.full.min.js
101/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */
102!function(n){"function"==typeof define&&define.amd?define(["jquery"],n):"object"==typeof module&&module.exports?module.exports=function(e,t){return void 0===t&&(t="undefined"!=typeof window?require("jquery"):require("jquery")(e)),n(t),t}:n(jQuery)}(function(u){var e=function(){if(u&&u.fn&&u.fn.select2&&u.fn.select2.amd)var e=u.fn.select2.amd;var t,n,r,h,o,s,f,g,m,v,y,_,i,a,b;function w(e,t){return i.call(e,t)}function l(e,t){var n,r,i,o,s,a,l,c,u,d,p,h=t&&t.split("/"),f=y.map,g=f&&f["*"]||{};if(e){for(s=(e=e.split("/")).length-1,y.nodeIdCompat&&b.test(e[s])&&(e[s]=e[s].replace(b,"")),"."===e[0].charAt(0)&&h&&(e=h.slice(0,h.length-1).concat(e)),u=0;u<e.length;u++)if("."===(p=e[u]))e.splice(u,1),--u;else if(".."===p){if(0===u||1===u&&".."===e[2]||".."===e[u-1])continue;0<u&&(e.splice(u-1,2),u-=2)}e=e.join("/")}if((h||g)&&f){for(u=(n=e.split("/")).length;0<u;--u){if(r=n.slice(0,u).join("/"),h)for(d=h.length;0<d;--d)if(i=(i=f[h.slice(0,d).join("/")])&&i[r]){o=i,a=u;break}if(o)break;!l&&g&&g[r]&&(l=g[r],c=u)}!o&&l&&(o=l,a=c),o&&(n.splice(0,a,o),e=n.join("/"))}return e}function A(t,n){return function(){var e=a.call(arguments,0);return"string"!=typeof e[0]&&1===e.length&&e.push(null),s.apply(h,e.concat([t,n]))}}function x(t){return function(e){m[t]=e}}function D(e){if(w(v,e)){var t=v[e];delete v[e],_[e]=!0,o.apply(h,t)}if(!w(m,e)&&!w(_,e))throw new Error("No "+e);return m[e]}function c(e){var t,n=e?e.indexOf("!"):-1;return-1<n&&(t=e.substring(0,n),e=e.substring(n+1,e.length)),[t,e]}function S(e){return e?c(e):[]}return e&&e.requirejs||(e?n=e:e={},m={},v={},y={},_={},i=Object.prototype.hasOwnProperty,a=[].slice,b=/\.js$/,f=function(e,t){var n,r,i=c(e),o=i[0],s=t[1];return e=i[1],o&&(n=D(o=l(o,s))),o?e=n&&n.normalize?n.normalize(e,(r=s,function(e){return l(e,r)})):l(e,s):(o=(i=c(e=l(e,s)))[0],e=i[1],o&&(n=D(o))),{f:o?o+"!"+e:e,n:e,pr:o,p:n}},g={require:function(e){return A(e)},exports:function(e){var t=m[e];return void 0!==t?t:m[e]={}},module:function(e){return{id:e,uri:"",exports:m[e],config:(t=e,function(){return y&&y.config&&y.c
102onfig[t]||{}})};var t}},o=function(e,t,n,r){var i,o,s,a,l,c,u,d=[],p=typeof n;if(c=S(r=r||e),"undefined"==p||"function"==p){for(t=!t.length&&n.length?["require","exports","module"]:t,l=0;l<t.length;l+=1)if("require"===(o=(a=f(t[l],c)).f))d[l]=g.require(e);else if("exports"===o)d[l]=g.exports(e),u=!0;else if("module"===o)i=d[l]=g.module(e);else if(w(m,o)||w(v,o)||w(_,o))d[l]=D(o);else{if(!a.p)throw new Error(e+" missing "+o);a.p.load(a.n,A(r,!0),x(o),{}),d[l]=m[o]}s=n?n.apply(m[e],d):void 0,e&&(i&&i.exports!==h&&i.exports!==m[e]?m[e]=i.exports:s===h&&u||(m[e]=s))}else e&&(m[e]=n)},t=n=s=function(e,t,n,r,i){if("string"==typeof e)return g[e]?g[e](t):D(f(e,S(t)).f);if(!e.splice){if((y=e).deps&&s(y.deps,y.callback),!t)return;t.splice?(e=t,t=n,n=null):e=h}return t=t||function(){},"function"==typeof n&&(n=r,r=i),r?o(h,e,t,n):setTimeout(function(){o(h,e,t,n)},4),s},s.config=function(e){return s(e)},t._defined=m,(r=function(e,t,n){if("string"!=typeof e)throw new Error("See almond README: incorrect module build, no module name");t.splice||(n=t,t=[]),w(m,e)||w(v,e)||(v[e]=[e,t,n])}).amd={jQuery:!0},e.requirejs=t,e.require=n,e.define=r),e.define("almond",function(){}),e.define("jquery",[],function(){var e=u||$;return null==e&&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."),e}),e.define("select2/utils",["jquery"],function(o){var i={};function u(e){var t=e.prototype,n=[];for(var r in t){"function"==typeof t[r]&&"constructor"!==r&&n.push(r)}return n}i.Extend=function(e,t){var n={}.hasOwnProperty;function r(){this.constructor=e}for(var i in t)n.call(t,i)&&(e[i]=t[i]);return r.prototype=t.prototype,e.prototype=new r,e.__super__=t.prototype,e},i.Decorate=function(r,i){var e=u(i),t=u(r);function o(){var e=Array.prototype.unshift,t=i.prototype.constructor.length,n=r.prototype.constructor;0<t&&(e.call(arguments,r.prototype.constructor),n=i.prototype.constructor),n.apply(this,arguments)}i.displayName=r.displayName,o.prototype=new function(){this.constructor=o};for(var n=0;n<t.length;n++){var s=t[n];o.prototype[s]=r.prototype[s]}function a(e){var t=function(){};e in o.prototype&&(t=o.prototype[e]);var n=i.prototype[e];return function(){return Array.prototype.unshift.call(arguments,t),n.apply(this,arguments)}}for(var l=0;l<e.length;l++){var c=e[l];o.prototype[c]=a(c)}return o};function e(){this.listeners={}}e.prototype.on=function(e,t){this.listeners=this.listeners||{},e in this.listeners?this.listeners[e].push(t):this.listeners[e]=[t]},e.prototype.trigger=function(e){var t=Array.prototype.slice,n=t.call(arguments,1);this.listeners=this.listeners||{},null==n&&(n=[]),0===n.length&&n.push({}),(n[0]._type=e)in this.listeners&&this.invoke(this.listeners[e],t.call(arguments,1)),"*"in this.listeners&&this.invoke(this.listeners["*"],arguments)},e.prototype.invoke=function(e,t){for(var n=0,r=e.length;n<r;n++)e[n].apply(this,t)},i.Observable=e,i.generateChars=function(e){for(var t="",n=0;n<e;n++){t+=Math.floor(36*Math.random()).toString(36)}return t},i.bind=function(e,t){return function(){e.apply(t,arguments)}},i._convertData=function(e){for(var t in e){var n=t.split("-"),r=e;if(1!==n.length){for(var i=0;i<n.length;i++){var o=n[i];(o=o.substring(0,1).toLowerCase()+o.substring(1))in r||(r[o]={}),i==n.length-1&&(r[o]=e[t]),r=r[o]}delete e[t]}}return e},i.hasScroll=function(e,t){var n=o(t),r=t.style.overflowX,i=t.style.overflowY;return(r!==i||"hidden"!==i&&"visible"!==i)&&("scroll"===r||"scroll"===i||(n.innerHeight()<t.scrollHeight||n.innerWidth()<t.scrollWidth))},i.escapeMarkup=function(e){var t={"\\":"&#92;","&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;","/":"&#47;"};return"string"!=typeof e?e:String(e).replace(/[&<>"'\/\\]/g,function(e){return t[e]})},i.appendMany=function(e,t){if("1.7"===o.fn.jquery.substr(0,3)){var n=o();o.map(t,function(e){n=n.add(e)}),t=n}e.append(t)},i.__cache={};var n=0;return i.GetUniqueElementId=function(e){var t=e.getAttribute("data-select2-id");return null==t&&(e.id?(t=e.id,e.setAttribute("data-select2-id",t)):(e.setAttribute("data-select2-id",++n),t=n.toString())),t},i.StoreData=function(e,t,n){var r=i.GetUniqueElementId(e);i.__cache[r]||(i.__cache[r]={}),i.__cache[r][t]=n},i.GetData=function(e,t){var n=i.GetUniqueElementId(e);
102return t?i.__cache[n]&&null!=i.__cache[n][t]?i.__cache[n][t]:o(e).data(t):i.__cache[n]},i.RemoveData=function(e){var t=i.GetUniqueElementId(e);null!=i.__cache[t]&&delete i.__cache[t],e.removeAttribute("data-select2-id")},i}),e.define("select2/results",["jquery","./utils"],function(h,f){function r(e,t,n){this.$element=e,this.data=n,this.options=t,r.__super__.constructor.call(this)}return f.Extend(r,f.Observable),r.prototype.render=function(){var e=h('<ul class="select2-results__options" role="listbox"></ul>');return this.options.get("multiple")&&e.attr("aria-multiselectable","true"),this.$results=e},r.prototype.clear=function(){this.$results.empty()},r.prototype.displayMessage=function(e){var t=this.options.get("escapeMarkup");this.clear(),this.hideLoading();var n=h('<li role="alert" aria-live="assertive" class="select2-results__option"></li>'),r=this.options.get("translations").get(e.message);n.append(t(r(e.args))),n[0].className+=" select2-results__message",this.$results.append(n)},r.prototype.hideMessages=function(){this.$results.find(".select2-results__message").remove()},r.prototype.append=function(e){this.hideLoading();var t=[];if(null!=e.results&&0!==e.results.length){e.results=this.sort(e.results);for(var n=0;n<e.results.length;n++){var r=e.results[n],i=this.option(r);t.push(i)}this.$results.append(t)}else 0===this.$results.children().length&&this.trigger("results:message",{message:"noResults"})},r.prototype.position=function(e,t){t.find(".select2-results").append(e)},r.prototype.sort=function(e){return this.options.get("sorter")(e)},r.prototype.highlightFirstItem=function(){var e=this.$results.find(".select2-results__option[aria-selected]"),t=e.filter("[aria-selected=true]");0<t.length?t.first().trigger("mouseenter"):e.first().trigger("mouseenter"),this.ensureHighlightVisible()},r.prototype.setClasses=function(){var t=this;this.data.current(function(e){var r=h.map(e,function(e){return e.id.toString()});t.$results.find(".select2-results__option[aria-selected]").each(function(){var e=h(this),t=f.GetData(this,"data"),n=""+t.id;null!=t.element&&t.element.selected||null==t.element&&-1<h.inArray(n,r)?e.attr("aria-selected","true"):e.attr("aria-selected","false")})})},r.prototype.showLoading=function(e){this.hideLoading();var t={disabled:!0,loading:!0,text:this.options.get("translations").get("searching")(e)},n=this.option(t);n.className+=" loading-results",this.$results.prepend(n)},r.prototype.hideLoading=function(){this.$results.find(".loading-results").remove()},r.prototype.option=function(e){var t=document.createElement("li");t.className="select2-results__option";var n={role:"option","aria-selected":"false"},r=window.Element.prototype.matches||window.Element.prototype.msMatchesSelector||window.Element.prototype.webkitMatchesSelector;for(var i in(null!=e.element&&r.call(e.element,":disabled")||null==e.element&&e.disabled)&&(delete n["aria-selected"],n["aria-disabled"]="true"),null==e.id&&delete n["aria-selected"],null!=e._resultId&&(t.id=e._resultId),e.title&&(t.title=e.title),e.children&&(n.role="group",n["aria-label"]=e.text,delete n["aria-selected"]),n){var o=n[i];t.setAttribute(i,o)}if(e.children){var s=h(t),a=document.createElement("strong");a.className="select2-results__group";h(a);this.template(e,a);for(var l=[],c=0;c<e.children.length;c++){var u=e.children[c],d=this.option(u);l.push(d)}var p=h("<ul></ul>",{class:"select2-results__options select2-results__options--nested"});p.append(l),s.append(a),s.append(p)}else this.template(e,t);return f.StoreData(t,"data",e),t},r.prototype.bind=function(t,e){var l=this,n=t.id+"-results";this.$results.attr("id",n),t.on("results:all",function(e){l.clear(),l.append(e.data),t.isOpen()&&(l.setClasses(),l.highlightFirstItem())}),t.on("results:append",function(e){l.append(e.data),t.isOpen()&&l.setClasses()}),t.on("query",function(e){l.hideMessages(),l.showLoading(e)}),t.on("select",function(){t.isOpen()&&(l.setClasses(),l.options.get("scrollAfterSelect")&&l.highlightFirstItem())}),t.on("unselect",function(){t.isOpen()&&(l.setClasses(),l.options.get("scrollAfterSelect")&&l.highlightFirstItem())}),t.on("open",function(){l.$results.attr("aria-expanded","true"),l.$results.attr("aria-hidden","false"),l.setClasses(),l.ensureHighlightVisible()}
102),t.on("close",function(){l.$results.attr("aria-expanded","false"),l.$results.attr("aria-hidden","true"),l.$results.removeAttr("aria-activedescendant")}),t.on("results:toggle",function(){var e=l.getHighlightedResults();0!==e.length&&e.trigger("mouseup")}),t.on("results:select",function(){var e=l.getHighlightedResults();if(0!==e.length){var t=f.GetData(e[0],"data");"true"==e.attr("aria-selected")?l.trigger("close",{}):l.trigger("select",{data:t})}}),t.on("results:previous",function(){var e=l.getHighlightedResults(),t=l.$results.find("[aria-selected]"),n=t.index(e);if(!(n<=0)){var r=n-1;0===e.length&&(r=0);var i=t.eq(r);i.trigger("mouseenter");var o=l.$results.offset().top,s=i.offset().top,a=l.$results.scrollTop()+(s-o);0===r?l.$results.scrollTop(0):s-o<0&&l.$results.scrollTop(a)}}),t.on("results:next",function(){var e=l.getHighlightedResults(),t=l.$results.find("[aria-selected]"),n=t.index(e)+1;if(!(n>=t.length)){var r=t.eq(n);r.trigger("mouseenter");var i=l.$results.offset().top+l.$results.outerHeight(!1),o=r.offset().top+r.outerHeight(!1),s=l.$results.scrollTop()+o-i;0===n?l.$results.scrollTop(0):i<o&&l.$results.scrollTop(s)}}),t.on("results:focus",function(e){e.element.addClass("select2-results__option--highlighted")}),t.on("results:message",function(e){l.displayMessage(e)}),h.fn.mousewheel&&this.$results.on("mousewheel",function(e){var t=l.$results.scrollTop(),n=l.$results.get(0).scrollHeight-t+e.deltaY,r=0<e.deltaY&&t-e.deltaY<=0,i=e.deltaY<0&&n<=l.$results.height();r?(l.$results.scrollTop(0),e.preventDefault(),e.stopPropagation()):i&&(l.$results.scrollTop(l.$results.get(0).scrollHeight-l.$results.height()),e.preventDefault(),e.stopPropagation())}),this.$results.on("mouseup",".select2-results__option[aria-selected]",function(e){var t=h(this),n=f.GetData(this,"data");"true"!==t.attr("aria-selected")?l.trigger("select",{originalEvent:e,data:n}):l.options.get("multiple")?l.trigger("unselect",{originalEvent:e,data:n}):l.trigger("close",{})}),this.$results.on("mouseenter",".select2-results__option[aria-selected]",function(e){var t=f.GetData(this,"data");l.getHighlightedResults().removeClass("select2-results__option--highlighted"),l.trigger("results:focus",{data:t,element:h(this)})})},r.prototype.getHighlightedResults=function(){return this.$results.find(".select2-results__option--highlighted")},r.prototype.destroy=function(){this.$results.remove()},r.prototype.ensureHighlightVisible=function(){var e=this.getHighlightedResults();if(0!==e.length){var t=this.$results.find("[aria-selected]").index(e),n=this.$results.offset().top,r=e.offset().top,i=this.$results.scrollTop()+(r-n),o=r-n;i-=2*e.outerHeight(!1),t<=2?this.$results.scrollTop(0):(o>this.$results.outerHeight()||o<0)&&this.$results.scrollTop(i)}},r.prototype.template=function(e,t){var n=this.options.get("templateResult"),r=this.options.get("escapeMarkup"),i=n(e,t);null==i?t.style.display="none":"string"==typeof i?t.innerHTML=r(i):h(t).append(i)},r}),e.define("select2/keys",[],function(){return{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}}),e.define("select2/selection/base",["jquery","../utils","../keys"],function(n,r,i){function o(e,t){this.$element=e,this.options=t,o.__super__.constructor.call(this)}return r.Extend(o,r.Observable),o.prototype.render=function(){var e=n('<span class="select2-selection" role="combobox"  aria-haspopup="true" aria-expanded="false"></span>');return this._tabindex=0,null!=r.GetData(this.$element[0],"old-tabindex")?this._tabindex=r.GetData(this.$element[0],"old-tabindex"):null!=this.$element.attr("tabindex")&&(this._tabindex=this.$element.attr("tabindex")),e.attr("title",this.$element.attr("title")),e.attr("tabindex",this._tabindex),e.attr("aria-disabled","false"),this.$selection=e},o.prototype.bind=function(e,t){var n=this,r=e.id+"-results";this.container=e,this.$selection.on("focus",function(e){n.trigger("focus",e)}),this.$selection.on("blur",function(e){n._handleBlur(e)}),this.$selection.on("keydown",function(e){n.trigger("keypress",e),e.which===i.SPACE&&e.preventDefault()}),e.on("results:focus",function(e){n.$selection.attr("aria-activedescendant",e.data._resultId)}),e.on("selection:update",function(e){n.update(e.data)}),e.on("open",function(){n.$selection.attr("aria-expanded","true"),n.$selection.attr("aria-owns",r),n._attachCloseHandler(e)}),e.on("close",function(){n.$selection.attr("aria-expanded","fal
102se"),n.$selection.removeAttr("aria-activedescendant"),n.$selection.removeAttr("aria-owns"),n.$selection.trigger("focus"),n._detachCloseHandler(e)}),e.on("enable",function(){n.$selection.attr("tabindex",n._tabindex),n.$selection.attr("aria-disabled","false")}),e.on("disable",function(){n.$selection.attr("tabindex","-1"),n.$selection.attr("aria-disabled","true")})},o.prototype._handleBlur=function(e){var t=this;window.setTimeout(function(){document.activeElement==t.$selection[0]||n.contains(t.$selection[0],document.activeElement)||t.trigger("blur",e)},1)},o.prototype._attachCloseHandler=function(e){n(document.body).on("mousedown.select2."+e.id,function(e){var t=n(e.target).closest(".select2");n(".select2.select2-container--open").each(function(){this!=t[0]&&r.GetData(this,"element").select2("close")})})},o.prototype._detachCloseHandler=function(e){n(document.body).off("mousedown.select2."+e.id)},o.prototype.position=function(e,t){t.find(".selection").append(e)},o.prototype.destroy=function(){this._detachCloseHandler(this.container)},o.prototype.update=function(e){throw new Error("The `update` method must be defined in child classes.")},o.prototype.isEnabled=function(){return!this.isDisabled()},o.prototype.isDisabled=function(){return this.options.get("disabled")},o}),e.define("select2/selection/single",["jquery","./base","../utils","../keys"],function(e,t,n,r){function i(){i.__super__.constructor.apply(this,arguments)}return n.Extend(i,t),i.prototype.render=function(){var e=i.__super__.render.call(this);return e.addClass("select2-selection--single"),e.html('<span class="select2-selection__rendered"></span><span class="select2-selection__arrow" role="presentation"><b role="presentation"></b></span>'),e},i.prototype.bind=function(t,e){var n=this;i.__super__.bind.apply(this,arguments);var r=t.id+"-container";this.$selection.find(".select2-selection__rendered").attr("id",r).attr("role","textbox").attr("aria-readonly","true"),this.$selection.attr("aria-labelledby",r),this.$selection.on("mousedown",function(e){1===e.which&&n.trigger("toggle",{originalEvent:e})}),this.$selection.on("focus",function(e){}),this.$selection.on("blur",function(e){}),t.on("focus",function(e){t.isOpen()||n.$selection.trigger("focus")})},i.prototype.clear=function(){var e=this.$selection.find(".select2-selection__rendered");e.empty(),e.removeAttr("title")},i.prototype.display=function(e,t){var n=this.options.get("templateSelection");return this.options.get("escapeMarkup")(n(e,t))},i.prototype.selectionContainer=function(){return e("<span></span>")},i.prototype.update=function(e){if(0!==e.length){var t=e[0],n=this.$selection.find(".select2-selection__rendered"),r=this.display(t,n);n.empty().append(r);var i=t.title||t.text;i?n.attr("title",i):n.removeAttr("title")}else this.clear()},i}),e.define("select2/selection/multiple",["jquery","./base","../utils"],function(i,e,l){function n(e,t){n.__super__.constructor.apply(this,arguments)}return l.Extend(n,e),n.prototype.render=function(){var e=n.__super__.render.call(this);return e.addClass("select2-selection--multiple"),e.html('<ul class="select2-selection__rendered"></ul>'),e},n.prototype.bind=function(e,t){var r=this;n.__super__.bind.apply(this,arguments),this.$selection.on("click",function(e){r.trigger("toggle",{originalEvent:e})}),this.$selection.on("click",".select2-selection__choice__remove",function(e){if(!r.isDisabled()){var t=i(this).parent(),n=l.GetData(t[0],"data");r.trigger("unselect",{originalEvent:e,data:n})}})},n.prototype.clear=function(){var e=this.$selection.find(".select2-selection__rendered");e.empty(),e.removeAttr("title")},n.prototype.display=function(e,t){var n=this.options.get("templateSelection");return this.options.get("escapeMarkup")(n(e,t))},n.prototype.selectionContainer=function(){return i('<li class="select2-selection__choice"><span class="select2-selection__choice__remove" role="presentation">&times;</span></li>')},n.prototype.update=function(e){if(this.clear(),0!==e.length){for(var t=[],n=0;n<e.length;n++){var r=e[n],i=this.selectionContainer(),o=this.display(r,i);i.append(o);var s=r.title||r.text;
102s&&i.attr("title",s),l.StoreData(i[0],"data",r),t.push(i)}var a=this.$selection.find(".select2-selection__rendered");l.appendMany(a,t)}},n}),e.define("select2/selection/placeholder",["../utils"],function(e){function t(e,t,n){this.placeholder=this.normalizePlaceholder(n.get("placeholder")),e.call(this,t,n)}return t.prototype.normalizePlaceholder=function(e,t){return"string"==typeof t&&(t={id:"",text:t}),t},t.prototype.createPlaceholder=function(e,t){var n=this.selectionContainer();return n.html(this.display(t)),n.addClass("select2-selection__placeholder").removeClass("select2-selection__choice"),n},t.prototype.update=function(e,t){var n=1==t.length&&t[0].id!=this.placeholder.id;if(1<t.length||n)return e.call(this,t);this.clear();var r=this.createPlaceholder(this.placeholder);this.$selection.find(".select2-selection__rendered").append(r)},t}),e.define("select2/selection/allowClear",["jquery","../keys","../utils"],function(i,r,a){function e(){}return e.prototype.bind=function(e,t,n){var r=this;e.call(this,t,n),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(e){r._handleClear(e)}),t.on("keypress",function(e){r._handleKeyboardClear(e,t)})},e.prototype._handleClear=function(e,t){if(!this.isDisabled()){var n=this.$selection.find(".select2-selection__clear");if(0!==n.length){t.stopPropagation();var r=a.GetData(n[0],"data"),i=this.$element.val();this.$element.val(this.placeholder.id);var o={data:r};if(this.trigger("clear",o),o.prevented)this.$element.val(i);else{for(var s=0;s<r.length;s++)if(o={data:r[s]},this.trigger("unselect",o),o.prevented)return void this.$element.val(i);this.$element.trigger("input").trigger("change"),this.trigger("toggle",{})}}}},e.prototype._handleKeyboardClear=function(e,t,n){n.isOpen()||t.which!=r.DELETE&&t.which!=r.BACKSPACE||this._handleClear(t)},e.prototype.update=function(e,t){if(e.call(this,t),!(0<this.$selection.find(".select2-selection__placeholder").length||0===t.length)){var n=this.options.get("translations").get("removeAllItems"),r=i('<span class="select2-selection__clear" title="'+n()+'">&times;</span>');a.StoreData(r[0],"data",t),this.$selection.find(".select2-selection__rendered").prepend(r)}},e}),e.define("select2/selection/search",["jquery","../utils","../keys"],function(r,a,l){function e(e,t,n){e.call(this,t,n)}return e.prototype.render=function(e){var t=r('<li class="select2-search select2-search--inline"><input class="select2-search__field" type="search" tabindex="-1" autocomplete="off" autocorrect="off" autocapitalize="none" spellcheck="false" role="searchbox" aria-autocomplete="list" /></li>');this.$searchContainer=t,this.$search=t.find("input");var n=e.call(this);return this._transferTabIndex(),n},e.prototype.bind=function(e,t,n){var r=this,i=t.id+"-results";e.call(this,t,n),t.on("open",function(){r.$search.attr("aria-controls",i),r.$search.trigger("focus")}),t.on("close",function(){r.$search.val(""),r.$search.removeAttr("aria-controls"),r.$search.removeAttr("aria-activedescendant"),r.$search.trigger("focus")}),t.on("enable",function(){r.$search.prop("disabled",!1),r._transferTabIndex()}),t.on("disable",function(){r.$search.prop("disabled",!0)}),t.on("focus",function(e){r.$search.trigger("focus")}),t.on("results:focus",function(e){e.data._resultId?r.$search.attr("aria-activedescendant",e.data._resultId):r.$search.removeAttr("aria-activedescendant")}),this.$selection.on("focusin",".select2-search--inline",function(e){r.trigger("focus",e)}),this.$selection.on("focusout",".select2-search--inline",function(e){r._handleBlur(e)}),this.$selection.on("keydown",".select2-search--inline",function(e){if(e.stopPropagation(),r.trigger("keypress",e),r._keyUpPrevented=e.isDefaultPrevented(),e.which===l.BACKSPACE&&""===r.$search.val()){var t=r.$searchContainer.prev(".select2-selection__choice");if(0<t.length){var n=a.GetData(t[0],"data");r.searchRemoveChoice(n),e.preventDefault()}}}),this.$selection.on("click",".select2-search--inline",function(e){r.$search.val()&&e.stopPropagation()});var o=document.documentMode,s=o&&o<=11;this.$selection.on("input.searchcheck",".select2-search--inline",function(e){s?r.$selection.off("input.search input.searchcheck"):r.$selection.off("keyup.search")}),this.$selection.on("keyup.search input.search",".select2-search--inline",function(e){if(s&&"input"===e.type)r.$selection.off("input.search input.searchcheck");else{var t=e.which;t!=l.SHIFT&&t!=l.CTRL&&t!=l.ALT&&t!=l.TAB&&r.handleSearch(e)}})},e.prototype._transferTabIndex=function(e){this.$search.attr("tabindex",this.$selection.attr("tabindex")),this.$selection.attr("tabindex","-1")},e.prototype.createPlaceholder=function(e,t){this.$search.attr("placeholder",t.text)},e.prototype.update=function(e,t){var n=this.$search[0]==document.activeElement;this.$search.attr("placeholder",""),e.call(this,t),this.$selection.find(".select2-selection__rendered").append(this.$searchContainer),this.resizeSearch(),n&&this.$search.trigger("focus")},e.prototype.handleSearch=function(){if(this.resizeSearch(),!this._keyUpPrevented){var e=this.$search.val();this.trigger("query",{term:e})}this._keyUpPrevented=!1},e.prototype.searchRemoveChoice=function(e,t){this.trigger("unselect",{data:t}),this.$search.val(t.text),this.handleSearch()},e.prototype.resizeSearch=function(){this.$search.css("width","25px");var e="";""!==this.$search.attr("placeholder")?e=this.$selection.find(".select2-selection__rendered").width():e=.75*(this.$search.val().length+1)+"em";this.$search.css("width",e)},e}),e.define("select2/selection/eventRelay",["jquery"],function(s){function e(){}return e.prototype.bind=function(e,t,n){var r=this,i=["open","opening","close","closing","select","selecting","unselect","unselecting","clear","clearing"],o=["opening","closing","selecting","unselecting","clearing"];e.call(this,t,n),t.on("*",function(e,t){if(-1!==s.inArray(e,i)){t=t||{};var n=s.Event("select2:"+e,{params:t});r.$element.trigger(n),-1!==s.inArray(e,o)&&(t.prevented=n.isDefaultPrevented())}})},e}),e.define("select2/translation",["jquery","require"],function(t,n){function r(e){this.dict=e||{}}return r.prototype.all=function(){return this.dict},r.prototype.get=function(e){return this.dict[e]},r.prototype.extend=function(e){this.dict=t.extend({},e.all(),this.dict)},r._cache={},r.loadPath=function(e){if(!(e in r._cache)){var t=n(e);r._cache[e]=t}return new r(r._cache[e])},r}),e.define("select2/diacritics",[],function(){return{"Ⓐ":"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","Ɓ":"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","Ꝺ":"D","DZ":"DZ","DŽ":"DZ","Dz":"Dz","Dž":"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","Ꝼ":"F","Ⓖ":"G","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","Ⓘ":"I","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","Ꞣ":"K","Ⓛ":"L","L":"L","Ŀ":"L","Ĺ":"L","Ľ":"L","Ḷ":"L","Ḹ":"L","Ļ":"L","Ḽ":"L","Ḻ":"L","Ł":"L","Ƚ":"L","Ɫ":"L","Ⱡ":"L","Ꝉ":"L","Ꝇ":"L","Ꞁ":"L","LJ":"LJ","Lj":"Lj","Ⓜ":"M","M":"M","Ḿ":"M","Ṁ":"M","Ṃ":"M","Ɱ":"M","Ɯ":"M","Ⓝ":"N","N":"N","Ǹ":"N","Ń":"N","Ñ":"N","Ṅ":"N","Ň":"N","Ṇ":"N","Ņ":"N","Ṋ":"N","Ṉ":"N","Ƞ":"N","Ɲ":"N","Ꞑ":"N","Ꞥ":"N","NJ":"NJ","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","Ꝍ":"O","Œ":"OE","Ƣ":"OI","Ꝏ":"OO","Ȣ":"OU","Ⓟ":"P","P":"P","Ṕ":"P","Ṗ":"P","Ƥ":"P","Ᵽ":"P","Ꝑ":"P","Ꝓ":"P","Ꝕ":"P","Ⓠ":"Q","Q":"Q","Ꝗ":"Q","Ꝙ":"Q","Ɋ":"Q","Ⓡ":"R","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","Ʉ":"U","Ⓥ":"V","V":"V","Ṽ":"V","Ṿ":"V","Ʋ":"
102V","Ꝟ":"V","Ʌ":"V","Ꝡ":"VY","Ⓦ":"W","W":"W","Ẁ":"W","Ẃ":"W","Ŵ":"W","Ẇ":"W","Ẅ":"W","Ẉ":"W","Ⱳ":"W","Ⓧ":"X","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","Ꝣ":"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","ɐ":"a","ꜳ":"aa","æ":"ae","ǽ":"ae","ǣ":"ae","ꜵ":"ao","ꜷ":"au","ꜹ":"av","ꜻ":"av","ꜽ":"ay","ⓑ":"b","b":"b","ḃ":"b","ḅ":"b","ḇ":"b","ƀ":"b","ƃ":"b","ɓ":"b","ⓒ":"c","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","ꝺ":"d","dz":"dz","dž":"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","ǝ":"e","ⓕ":"f","f":"f","ḟ":"f","ƒ":"f","ꝼ":"f","ⓖ":"g","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","ɥ":"h","ƕ":"hv","ⓘ":"i","i":"i","ì":"i","í":"i","î":"i","ĩ":"i","ī":"i","ĭ":"i","ï":"i","ḯ":"i","ỉ":"i","ǐ":"i","ȉ":"i","ȋ":"i","ị":"i","į":"i","ḭ":"i","ɨ":"i","ı":"i","ⓙ":"j","j":"j","ĵ":"j","ǰ":"j","ɉ":"j","ⓚ":"k","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","ꝇ":"l","lj":"lj","ⓜ":"m","m":"m","ḿ":"m","ṁ":"m","ṃ":"m","ɱ":"m","ɯ":"m","ⓝ":"n","n":"n","ǹ":"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","ɵ":"o","œ":"oe","ƣ":"oi","ȣ":"ou","ꝏ":"oo","ⓟ":"p","p":"p","ṕ":"p","ṗ":"p","ƥ":"p","ᵽ":"p","ꝑ":"p","ꝓ":"p","ꝕ":"p","ⓠ":"q","q":"q","ɋ":"q","ꝗ":"q","ꝙ":"q","ⓡ":"r","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","ẛ":"s","ⓣ":"t","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","ʉ":"u","ⓥ":"v","v":"v","ṽ":"v","ṿ":"v","ʋ":"v","ꝟ":"v","ʌ":"v","ꝡ":"vy","ⓦ":"w","w":"w","ẁ":"w","ẃ":"w","ŵ":"w","ẇ":"w","ẅ":"w","ẘ":"w","ẉ":"w","ⱳ":"w","ⓧ":"x","x":"x","ẋ":"x","ẍ":"x","ⓨ":"y","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","ꝣ":"z","Ά":"Α","Έ":"Ε","Ή":"Η","Ί":"Ι","Ϊ":"Ι","Ό":"Ο","Ύ":"Υ","Ϋ":"Υ","Ώ":"Ω","ά":"α","έ":"ε","ή":"η","ί":"ι","ϊ":"ι","ΐ":"ι","ό":"ο","ύ":"υ","ϋ":"υ","ΰ":"υ","ώ":"ω","ς":"σ","’":"'"}}),e.define("select2/data/base",["../utils"],function(r){function n(e,t){n.__super__.constructor.call(this)}return r.Extend(n,r.Observable),n.prototype.current=function(e){throw new Error("The `current` method must be defined in child classes.")},n.prototype.query=function(e,t){throw new Error("The `query` method must be defined in child classes.")},n.prototype.bind=function(e,t){},n.prototype.destroy=function(){},n.prototype.generateResultId=function(e,t){var n=e.id+"-result-";return n+=r.generateChars(4),null!=t.id?n+="-"+t.id.toString():n+="-"+r.generateChars(4),n},n}),e.define("select2/data/select",["./base","../utils","jquery"],function(e,a,l){function n(e,t){this.$element=e,this.options=t,n.__super__.constructor.call(this)}return a.Extend(n,e),n.prototype.current=function(e){var n=[],r=this;this.$element.find(":selected").each(function(){var e=l(this),t=r.item(e);n.push(t)}),e(n)},n.prototype.select=function(i){var o=this;if(i.selected=!0,l(i.element).is("option"))return i.element.selected=!0,void this.$element.trigger("input").trigger("change");if(this.$element.prop("multiple"))this.current(function(e){var t=[];(i=[i]).push.apply(i,e);for(var n=0;n<i.length;n++){var r=i[n].id;-1===l.inArray(r,t)&&t.push(r)}o.$element.val(t),o.$element.trigger("input").trigger("change")});else{var e=i.id;this.$element.val(e),this.$element.trigger("input").trigger("change")}},n.prototype.unselect=function(i){var o=this;if(this.$element.prop("multiple")){if(i.selected=!1,l(i.element).is("option"))return i.element.selected=!1,void this.$element.trigger("input").trigger("change");this.current(function(e){for(var t=[],n=0;n<e.length;n++){var r=e[n].id;r!==i.id&&-1===l.inArray(r,t)&&t.push(r)}o.$element.val(t),o.$element.trigger("input").trigger("change")})}},n.prototype.bind=function(e,t){var n=this;(this.container=e).on("select",function(e){n.select(e.data)}),e.on("unselect",function(e){n.unselect(e.data)})},n.prototype.destroy=function(){this.$element.find("*").each(function(){a.RemoveData(this)})},n.prototype.query=function(r,e){var i=[],o=this;this.$element.children().each(function(){var e=l(this);if(e.is("option")||e.is("optgroup")){var t=o.item(e),n=o.matches(r,t);null!==n&&i.push(n)}}),e({results:i})},n.prototype.addOptions=function(e){a.appendMany(this.$element,e)},n.prototype.option=function(e){var t;e.children?(t=document.createElement("optgroup")).label=e.text:void 0!==(t=document.createElement("option")).textContent?t.textContent=e.text:t.innerText=e.text,void 0!==e.id&&(t.value=e.id),e.disabled&&(t.disabled=!0),e.selected&&(t.selected=!0),e.title&&(t.title=e.title);var n=l(t),r=this._normalizeItem(e);return r.element=t,a.StoreData(t,"data",r),n},n.prototype.item=function(e){var t={};if(null!=(t=a.GetData(e[0],"data")))return t;if(e.is("option"))t={id:e.val(),text:e.text(),disabled:e.prop("disabled"),selected:e.prop("selected"),title:e.prop("title")};else if(e.is("optgroup")){t={text:e.prop("label"),children:[],title:e.prop("title")};for(var n=e.children("option"),r=[],i=0;i<n.length;i++){var o=l(n[i]),s=this.item(o);r.push(s)}t.children=r}return(t=this._normalizeItem(t)).element=e[0],a.StoreData(e[0],"data",t),t},n.prototype._normalizeItem=function(e){e!==Object(e)&&(e={id:e,text:e});return null!=(e=l.extend({},{text:""},e)).id&&(e.id=e.id.toString()),null!=e.text&&(e.text=e.text.toString()),null==e._resultId&&e.id&&null!=this.container&&(e._resultId=this.generateResultId(this.container,e)),l.extend({},{selected:!1,disabled:!1},e)},n.prototype.matches=function(e,t){return this.options.get("matcher")(e,t)},n}),e.define("select2/data/array",["./select","../utils","jquery"],function(e,f,g){function r(e,t){this._dataToConvert=t.get("data")||[],r.__super__.constructor.call(this,e,t)}return f.Extend(r,e),r.prototype.bind=function(e,t){r.__super__.bind.call(this,e,t),this.addOptions(this.convertToOptions(this._dataToConvert))},r.prototype.select=function(n){var e=this.$element.find("option").filter(function(e,t){return t.value==n.id.toString()});0===e.length&&(e=this.option(n),this.addOptions(e)),r.__super__.select.call(this,n)},r.prototype.convertToOptions=function(e){var t=this,n=this.$element.find("option"),r=n.map(function(){return t.item(g(this)).id}).get(),i=[];function o(e){return function(){return g(this).val()==e.id}}for(var s=0;s<e.length;s++){var a=this._normalizeItem(e[s]);if(0<=g.inArray(a.id,r)){var l=n.filter(o(a)),c=this.item(l),u=g.extend(!0,{},a,c),d=this.option(u);l.replaceWith(d)}else{var p=this.option(a);if(a.children){var h=this.convertToOptions(a.children);f.appendMany(p,h)}i.push(p)}}return i},r}),e.define("select2/data/ajax",["./array","../utils","jquery"],function(e,t,o){function n(e,t){this.ajaxOptions=this._applyDefaults(t.get("ajax")),null!=this.ajaxOptions.processResults&&(this.processResults=this.ajaxOptions.processResults),n.__super__.constructor.call(this,e,t)}return t.Extend(n,e),n.prototype._applyDefaults=function(e){var t={data:function(e){return o.extend({},e,{q:e.term})},transport:function(e,t,n){var r=o.ajax(e);return r.then(t),r.fail(n),r}};return o.extend({},t,e,!0)},n.prototype.processResults=function(e){return e},n.prototype.query=function(n,r){var i=this;null!=this._request&&(o.isFunction(this._request.abort)&&this._request.abort(),this._request=null);var t=o.extend({type:"GET"},this.ajaxOptions);function e(){var e=t.transport(t,function(e){var t=i.processResults(e,n);i.options.get("debug")&&window.console&&console.error&&(t&&t.results&&o.isArray(t.results)||console.error("Select2: The AJAX results did not return an array in the `results` key of the response.")),r(t)},function(){"status"in e&&(0===e.status||"0"===e.status)||i.trigger("results:message",{message:"errorLoading"})});i._request=e}"function"==typeof t.url&&(t.url=t.url.call(this.$element,n)),"function"==typeof t.data&&(t.data=t.data.call(this.$element,n)),this.ajaxOptions.delay&&null!=n.term?(this._queryTimeout&&window.clearTimeout(this._queryTimeout),this._queryTimeout=window.setTimeout(e,this.ajaxOptions.delay)):e()},n}),e.define("select2/data/tags",["jquery"],function(u){function e(e,t,n){var r=n.get("tags"),i=n.get("createTag");void 0!==i&&(this.createTag=i);var o=n.get("insertTag");if(void 0!==o&&(this.insertTag=o),e.call(this,t,n),u.isArray(r))for(var s=0;s<r.length;
102s++){var a=r[s],l=this._normalizeItem(a),c=this.option(l);this.$element.append(c)}}return e.prototype.query=function(e,c,u){var d=this;this._removeOldTags(),null!=c.term&&null==c.page?e.call(this,c,function e(t,n){for(var r=t.results,i=0;i<r.length;i++){var o=r[i],s=null!=o.children&&!e({results:o.children},!0);if((o.text||"").toUpperCase()===(c.term||"").toUpperCase()||s)return!n&&(t.data=r,void u(t))}if(n)return!0;var a=d.createTag(c);if(null!=a){var l=d.option(a);l.attr("data-select2-tag",!0),d.addOptions([l]),d.insertTag(r,a)}t.results=r,u(t)}):e.call(this,c,u)},e.prototype.createTag=function(e,t){var n=u.trim(t.term);return""===n?null:{id:n,text:n}},e.prototype.insertTag=function(e,t,n){t.unshift(n)},e.prototype._removeOldTags=function(e){this.$element.find("option[data-select2-tag]").each(function(){this.selected||u(this).remove()})},e}),e.define("select2/data/tokenizer",["jquery"],function(d){function e(e,t,n){var r=n.get("tokenizer");void 0!==r&&(this.tokenizer=r),e.call(this,t,n)}return e.prototype.bind=function(e,t,n){e.call(this,t,n),this.$search=t.dropdown.$search||t.selection.$search||n.find(".select2-search__field")},e.prototype.query=function(e,t,n){var i=this;t.term=t.term||"";var r=this.tokenizer(t,this.options,function(e){var t,n=i._normalizeItem(e);if(!i.$element.find("option").filter(function(){return d(this).val()===n.id}).length){var r=i.option(n);r.attr("data-select2-tag",!0),i._removeOldTags(),i.addOptions([r])}t=n,i.trigger("select",{data:t})});r.term!==t.term&&(this.$search.length&&(this.$search.val(r.term),this.$search.trigger("focus")),t.term=r.term),e.call(this,t,n)},e.prototype.tokenizer=function(e,t,n,r){for(var i=n.get("tokenSeparators")||[],o=t.term,s=0,a=this.createTag||function(e){return{id:e.term,text:e.term}};s<o.length;){var l=o[s];if(-1!==d.inArray(l,i)){var c=o.substr(0,s),u=a(d.extend({},t,{term:c}));null!=u?(r(u),o=o.substr(s+1)||"",s=0):s++}else s++}return{term:o}},e}),e.define("select2/data/minimumInputLength",[],function(){function e(e,t,n){this.minimumInputLength=n.get("minimumInputLength"),e.call(this,t,n)}return e.prototype.query=function(e,t,n){t.term=t.term||"",t.term.length<this.minimumInputLength?this.trigger("results:message",{message:"inputTooShort",args:{minimum:this.minimumInputLength,input:t.term,params:t}}):e.call(this,t,n)},e}),e.define("select2/data/maximumInputLength",[],function(){function e(e,t,n){this.maximumInputLength=n.get("maximumInputLength"),e.call(this,t,n)}return e.prototype.query=function(e,t,n){t.term=t.term||"",0<this.maximumInputLength&&t.term.length>this.maximumInputLength?this.trigger("results:message",{message:"inputTooLong",args:{maximum:this.maximumInputLength,input:t.term,params:t}}):e.call(this,t,n)},e}),e.define("select2/data/maximumSelectionLength",[],function(){function e(e,t,n){this.maximumSelectionLength=n.get("maximumSelectionLength"),e.call(this,t,n)}return e.prototype.bind=function(e,t,n){var r=this;e.call(this,t,n),t.on("select",function(){r._checkIfMaximumSelected()})},e.prototype.query=function(e,t,n){var r=this;this._checkIfMaximumSelected(function(){e.call(r,t,n)})},e.prototype._checkIfMaximumSelected=function(e,n){var r=this;this.current(function(e){var t=null!=e?e.length:0;0<r.maximumSelectionLength&&t>=r.maximumSelectionLength?r.trigger("results:message",{message:"maximumSelected",args:{maximum:r.maximumSelectionLength}}):n&&n()})},e}),e.define("select2/dropdown",["jquery","./utils"],function(t,e){function n(e,t){this.$element=e,this.options=t,n.__super__.constructor.call(this)}return e.Extend(n,e.Observable),n.prototype.render=function(){var e=t('<span class="select2-dropdown"><span class="select2-results"></span></span>');return e.attr("dir",this.options.get("dir")),this.$dropdown=e},n.prototype.bind=function(){},n.prototype.position=function(e,t){},n.prototype.destroy=function(){this.$dropdown.remove()},n}),e.define("select2/dropdown/search",["jquery","../utils"],function(o,e){function t(){}return t.prototype.render=function(e){var t=e.call(this),n=o('<span class="select2-search select2-search--dropdown"><input class="select2-search__field" type="search" tabindex="-1" autocomplete="off" autocorrect="off" autocapitalize="none" spellcheck="false" role="searchbox" aria-autocomplete="list" /></span>');return this.$searchContainer=n,this.$search=n.find("input"),t.prepend(n),t},t.prototype.bind=function(e,t,n){var r=this,i=t.id+"-results";e.call(this,t,n),this.$search.on("keydown",function(e){r.trigger("keypress",e),r._keyUpPrevented=e.isDefaultPrevented()}),this.$search.on("input",function(e){o(this).off("keyup")}),this.$search.on("keyup input",function(e){r.handleSearch(e)}),t.on("open",function(){r.$search.attr("tabindex",0),r.$search.attr("aria-controls",i),r.$search.trigger("focus"),window.setTimeout(function(){r.$search.trigger("focus")},0)}),t.on("close",function(){r.$search.attr("tabindex",-1),r.$search.removeAttr("aria-controls"),r.$search.removeAttr("aria-activedescendant"),r.$search.val(""),r.$search.trigger("blur")}),t.on("focus",function(){t.isOpen()||r.$search.trigger("focus")}),t.on("results:all",function(e){null!=e.query.term&&""!==e.query.term||(r.showSearch(e)?r.$searchContainer.removeClass("select2-search--hide"):r.$searchContainer.addClass("select2-search--hide"))}),t.on("results:focus",function(e){e.data._resultId?r.$search.attr("aria-activedescendant",e.data._resultId):r.$search.removeAttr("aria-activedescendant")})},t.prototype.handleSearch=function(e){if(!this._keyUpPrevented){var t=this.$search.val();this.trigger("query",{term:t})}this._keyUpPrevented=!1},t.prototype.showSearch=function(e,t){return!0},t}),e.define("select2/dropdown/hidePlaceholder",[],function(){function e(e,t,n,r){this.placeholder=this.normalizePlaceholder(n.get("placeholder")),e.call(this,t,n,r)}return e.prototype.append=function(e,t){t.results=this.removePlaceholder(t.results),e.call(this,t)},e.prototype.normalizePlaceholder=function(e,t){return"string"==typeof t&&(t={id:"",text:t}),t},e.prototype.removePlaceholder=function(e,t){for(var n=t.slice(0),r=t.length-1;0<=r;r--){var i=t[r];this.placeholder.id===i.id&&n.splice(r,1)}return n},e}),e.define("select2/dropdown/infiniteScroll",["jquery"],function(n){function e(e,t,n,r){this.lastParams={},e.call(this,t,n,r),this.$loadingMore=this.createLoadingMore(),this.loading=!1}return e.prototype.append=function(e,t){this.$loadingMore.remove(),this.loading=!1,e.call(this,t),this.showLoadingMore(t)&&(this.$results.append(this.$loadingMore),this.loadMoreIfNeeded())},e.prototype.bind=function(e,t,n){var r=this;e.call(this,t,n),t.on("query",function(e){r.lastParams=e,r.loading=!0}),t.on("query:append",function(e){r.lastParams=e,r.loading=!0}),this.$results.on("scroll",this.loadMoreIfNeeded.bind(this))},e.prototype.loadMoreIfNeeded=function(){var e=n.contains(document.documentElement,this.$loadingMore[0]);if(!this.loading&&e){var t=this.$results.offset().top+this.$results.outerHeight(!1);this.$loadingMore.offset().top+this.$loadingMore.outerHeight(!1)<=t+50&&this.loadMore()}},e.prototype.loadMore=function(){this.loading=!0;var e=n.extend({},{page:1},this.lastParams);e.page++,this.trigger("query:append",e)},e.prototype.showLoadingMore=function(e,t){return t.pagination&&t.pagination.more},e.prototype.createLoadingMore=function(){var e=n('<li class="select2-results__option select2-results__option--load-more"role="option" aria-disabled="true"></li>'),t=this.options.get("translations").get("loadingMore");return e.html(t(this.lastParams)),e},e}),e.define("select2/dropdown/attachBody",["jquery","../utils"],function(f,a){function e(e,t,n){this.$dropdownParent=f(n.get("dropdownParent")||document.body),e.call(this,t,n)}return e.prototype.bind=function(e,t,n){var r=this;e.call(this,t,n),t.on("open",function(){r._showDropdown(),r._attachPositioningHandler(t),r._bindContainerResultHandlers(t)}),t.on("close",function(){r._hideDropdown(),r._detachPositioningHandler(t)}),this.$dropdownContainer.on("mousedown",function(e){e.stopPropagation()})},e.prototype.destroy=function(e){e.call(this),this.$dropdownContainer.remove()},e.prototype.position=function(e,t,n){t.attr("class",n.attr("class")),t.removeClass("select2"),t.addClass("select2-container--open"),t.css({position:"absolute",top:-999999}),this.$container=n},e.prototype.render=function(e){var t=f("<span></span>"),n=e.call(this);return t.append(n),this.$dropdownContainer=t},e.prototype._hideDropdown=function(e){this.$dropdownContainer.detach()},e.prototype._bindContainerResultHandlers=function(e,t){if(!this._containerResultsHandlersBound){var n=this;t.on("results:all",function(){n._positionDropdown(),n._resizeDropdown()}),t.on("results:append",function(){n._positionDropdown(),n._resizeDropdown()}),t.on("results:message",function(){n._positionDropdown(),n._resizeDropdown()}),t.on("select",function(){n._positionDropdown(),n._resizeDropdown()}),t.on("unselect",function(){n._positionDropdown(),n._resizeDropdown()}),this._containerResultsHandlersBound=!0}},e.prototype._attachPositioningHandler=function(e,t){var n=this,r="scroll.
102select2."+t.id,i="resize.select2."+t.id,o="orientationchange.select2."+t.id,s=this.$container.parents().filter(a.hasScroll);s.each(function(){a.StoreData(this,"select2-scroll-position",{x:f(this).scrollLeft(),y:f(this).scrollTop()})}),s.on(r,function(e){var t=a.GetData(this,"select2-scroll-position");f(this).scrollTop(t.y)}),f(window).on(r+" "+i+" "+o,function(e){n._positionDropdown(),n._resizeDropdown()})},e.prototype._detachPositioningHandler=function(e,t){var n="scroll.select2."+t.id,r="resize.select2."+t.id,i="orientationchange.select2."+t.id;this.$container.parents().filter(a.hasScroll).off(n),f(window).off(n+" "+r+" "+i)},e.prototype._positionDropdown=function(){var e=f(window),t=this.$dropdown.hasClass("select2-dropdown--above"),n=this.$dropdown.hasClass("select2-dropdown--below"),r=null,i=this.$container.offset();i.bottom=i.top+this.$container.outerHeight(!1);var o={height:this.$container.outerHeight(!1)};o.top=i.top,o.bottom=i.top+o.height;var s=this.$dropdown.outerHeight(!1),a=e.scrollTop(),l=e.scrollTop()+e.height(),c=a<i.top-s,u=l>i.bottom+s,d={left:i.left,top:o.bottom},p=this.$dropdownParent;"static"===p.css("position")&&(p=p.offsetParent());var h={top:0,left:0};(f.contains(document.body,p[0])||p[0].isConnected)&&(h=p.offset()),d.top-=h.top,d.left-=h.left,t||n||(r="below"),u||!c||t?!c&&u&&t&&(r="below"):r="above",("above"==r||t&&"below"!==r)&&(d.top=o.top-h.top-s),null!=r&&(this.$dropdown.removeClass("select2-dropdown--below select2-dropdown--above").addClass("select2-dropdown--"+r),this.$container.removeClass("select2-container--below select2-container--above").addClass("select2-container--"+r)),this.$dropdownContainer.css(d)},e.prototype._resizeDropdown=function(){var e={width:this.$container.outerWidth(!1)+"px"};this.options.get("dropdownAutoWidth")&&(e.minWidth=e.width,e.position="relative",e.width="auto"),this.$dropdown.css(e)},e.prototype._showDropdown=function(e){this.$dropdownContainer.appendTo(this.$dropdownParent),this._positionDropdown(),this._resizeDropdown()},e}),e.define("select2/dropdown/minimumResultsForSearch",[],function(){function e(e,t,n,r){this.minimumResultsForSearch=n.get("minimumResultsForSearch"),this.minimumResultsForSearch<0&&(this.minimumResultsForSearch=1/0),e.call(this,t,n,r)}return e.prototype.showSearch=function(e,t){return!(function e(t){for(var n=0,r=0;r<t.length;r++){var i=t[r];i.children?n+=e(i.children):n++}return n}(t.data.results)<this.minimumResultsForSearch)&&e.call(this,t)},e}),e.define("select2/dropdown/selectOnClose",["../utils"],function(o){function e(){}return e.prototype.bind=function(e,t,n){var r=this;e.call(this,t,n),t.on("close",function(e){r._handleSelectOnClose(e)})},e.prototype._handleSelectOnClose=function(e,t){if(t&&null!=t.originalSelect2Event){var n=t.originalSelect2Event;if("select"===n._type||"unselect"===n._type)return}var r=this.getHighlightedResults();if(!(r.length<1)){var i=o.GetData(r[0],"data");null!=i.element&&i.element.selected||null==i.element&&i.selected||this.trigger("select",{data:i})}},e}),e.define("select2/dropdown/closeOnSelect",[],function(){function e(){}return e.prototype.bind=function(e,t,n){var r=this;e.call(this,t,n),t.on("select",function(e){r._selectTriggered(e)}),t.on("unselect",function(e){r._selectTriggered(e)})},e.prototype._selectTriggered=function(e,t){var n=t.originalEvent;n&&(n.ctrlKey||n.metaKey)||this.trigger("close",{originalEvent:n,originalSelect2Event:t})},e}),e.define("select2/i18n/en",[],function(){return{errorLoading:function(){return"The results could not be loaded."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Please delete "+t+" character";return 1!=t&&(n+="s"),n},inputTooShort:function(e){return"Please enter "+(e.minimum-e.input.length)+" or more characters"},loadingMore:function(){return"Loading more results…"},maximumSelected:function(e){var t="You can only select "+e.maximum+" item";return 1!=e.maximum&&(t+="s"),t},noResults:function(){return"No results found"},searching:function(){return"Searching…"},removeAllItems:function(){return"Remove all items"}}}),e.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(c,u,d,p,h,f,g,m,v,y,s,t,_,$,b,w,A,x,D,S,E,C,O,T,q,L,I,j,e){function n(){this.reset()}return n.prototype.apply=function(e){if(null==(e=c.extend(!0,{},this.defaults,e)).dataAdapter){if(null!=e.ajax?e.dataAdapter=b:null!=e.data?e.dataAdapter=$:e.dataAdapter=_,0<e.minimumInputLength&&(e.dataAdapter=y.Decorate(e.dataAdapter,x)),0<e.maximumInputLength&&(e.dataAdapter=y.Decorate(e.dataAdapter,D)),0<e.maximumSelectionLength&&(e.dataAdapter=y.Decorate(e.dataAdapter,S)),e.tags&&(e.dataAdapter=y.Decorate(e.dataAdapter,w)),null==e.tokenSeparators&&null==e.tokenizer||(e.dataAdapter=y.Decorate(e.dataAdapter,A)),null!=e.query){var t=u(e.amdBase+"compat/query");e.dataAdapter=y.Decorate(e.dataAdapter,t)}if(null!=e.initSelection){var n=u(e.amdBase+"compat/initSelection");e.dataAdapter=y.Decorate(e.dataAdapter,n)}}if(null==e.resultsAdapter&&(e.resultsAdapter=d,null!=e.ajax&&(e.resultsAdapter=y.Decorate(e.resultsAdapter,T)),null!=e.placeholder&&(e.resultsAdapter=y.Decorate(e.resultsAdapter,O)),e.selectOnClose&&(e.resultsAdapter=y.Decorate(e.resultsAdapter,I))),null==e.dropdownAdapter){if(e.multiple)e.dropdownAdapter=E;else{var r=y.Decorate(E,C);e.dropdownAdapter=r}if(0!==e.minimumResultsForSearch&&(e.dropdownAdapter=y.Decorate(e.dropdownAdapter,L)),e.closeOnSelect&&(e.dropdownAdapter=y.Decorate(e.dropdownAdapter,j)),null!=e.dropdownCssClass||null!=e.dropdownCss||null!=e.adaptDropdownCssClass){var i=u(e.amdBase+"compat/dropdownCss");e.dropdownAdapter=y.Decorate(e.dropdownAdapter,i)}e.dropdownAdapter=y.Decorate(e.dropdownAdapter,q)}if(null==e.selectionAdapter){if(e.multiple?e.selectionAdapter=h:e.selectionAdapter=p,null!=e.placeholder&&(e.selectionAdapter=y.Decorate(e.selectionAdapter,f)),e.allowClear&&(e.selectionAdapter=y.Decorate(e.selectionAdapter,g)),e.multiple&&(e.selectionAdapter=y.Decorate(e.selectionAdapter,m)),null!=e.containerCssClass||null!=e.containerCss||null!=e.adaptC
102ontainerCssClass){var o=u(e.amdBase+"compat/containerCss");e.selectionAdapter=y.Decorate(e.selectionAdapter,o)}e.selectionAdapter=y.Decorate(e.selectionAdapter,v)}e.language=this._resolveLanguage(e.language),e.language.push("en");for(var s=[],a=0;a<e.language.length;a++){var l=e.language[a];-1===s.indexOf(l)&&s.push(l)}return e.language=s,e.translations=this._processTranslations(e.language,e.debug),e},n.prototype.reset=function(){function a(e){return e.replace(/[^\u0000-\u007E]/g,function(e){return t[e]||e})}this.defaults={amdBase:"./",amdLanguageBase:"./i18n/",closeOnSelect:!0,debug:!1,dropdownAutoWidth:!1,escapeMarkup:y.escapeMarkup,language:{},matcher:function e(t,n){if(""===c.trim(t.term))return n;if(n.children&&0<n.children.length){for(var r=c.extend(!0,{},n),i=n.children.length-1;0<=i;i--)null==e(t,n.children[i])&&r.children.splice(i,1);return 0<r.children.length?r:e(t,r)}var o=a(n.text).toUpperCase(),s=a(t.term).toUpperCase();return-1<o.indexOf(s)?n:null},minimumInputLength:0,maximumInputLength:0,maximumSelectionLength:0,minimumResultsForSearch:0,selectOnClose:!1,scrollAfterSelect:!1,sorter:function(e){return e},templateResult:function(e){return e.text},templateSelection:function(e){return e.text},theme:"default",width:"resolve"}},n.prototype.applyFromElement=function(e,t){var n=e.language,r=this.defaults.language,i=t.prop("lang"),o=t.closest("[lang]").prop("lang"),s=Array.prototype.concat.call(this._resolveLanguage(i),this._resolveLanguage(n),this._resolveLanguage(r),this._resolveLanguage(o));return e.language=s,e},n.prototype._resolveLanguage=function(e){if(!e)return[];if(c.isEmptyObject(e))return[];if(c.isPlainObject(e))return[e];var t;t=c.isArray(e)?e:[e];for(var n=[],r=0;r<t.length;r++)if(n.push(t[r]),"string"==typeof t[r]&&0<t[r].indexOf("-")){var i=t[r].split("-")[0];n.push(i)}return n},n.prototype._processTranslations=function(e,t){for(var n=new s,r=0;r<e.length;r++){var i=new s,o=e[r];if("string"==typeof o)try{i=s.loadPath(o)}catch(e){try{o=this.defaults.amdLanguageBase+o,i=s.loadPath(o)}catch(e){t&&window.console&&console.warn&&console.warn('Select2: The language file for "'+o+'" could not be automatically loaded. A fallback will be used instead.')}}else i=c.isPlainObject(o)?new s(o):o;n.extend(i)}return n},n.prototype.set=function(e,t){var n={};n[c.camelCase(e)]=t;var r=y._convertData(n);c.extend(!0,this.defaults,r)},new n}),e.define("select2/options",["require","jquery","./defaults","./utils"],function(r,d,i,p){function e(e,t){if(this.options=e,null!=t&&this.fromElement(t),null!=t&&(this.options=i.applyFromElement(this.options,t)),this.options=i.apply(this.options),t&&t.is("input")){var n=r(this.get("amdBase")+"compat/inputData");this.options.dataAdapter=p.Decorate(this.options.dataAdapter,n)}}return e.prototype.fromElement=function(e){var t=["select2"];null==this.options.multiple&&(this.options.multiple=e.prop("multiple")),null==this.options.disabled&&(this.options.disabled=e.prop("disabled")),null==this.options.dir&&(e.prop("dir")?this.options.dir=e.prop("dir"):e.closest("[dir]").prop("dir")?this.options.dir=e.closest("[dir]").prop("dir"):this.options.dir="ltr"),e.prop("disabled",this.options.disabled),e.prop("multiple",this.options.multiple),p.GetData(e[0],"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.'),p.StoreData(e[0],"data",p.GetData(e[0],"select2Tags")),p.StoreData(e[0],"tags",!0)),p.GetData(e[0],"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."),e.attr("ajax--url",p.GetData(e[0],"ajaxUrl")),p.StoreData(e[0],"ajax-Url",p.GetData(e[0],"ajaxUrl")));var n={};function r(e,t){return t.toUpperCase()}for(var i=0;i<e[0].attributes.length;i++){var o=e[0].attributes[i].name,s="data-";if(o.substr(0,s.length)==s){var a=o.substring(s.length),l=p.GetData(e[0],a);n[a.replace(/-([a-z])/g,r)]=l}}
102d.fn.jquery&&"1."==d.fn.jquery.substr(0,2)&&e[0].dataset&&(n=d.extend(!0,{},e[0].dataset,n));var c=d.extend(!0,{},p.GetData(e[0]),n);for(var u in c=p._convertData(c))-1<d.inArray(u,t)||(d.isPlainObject(this.options[u])?d.extend(this.options[u],c[u]):this.options[u]=c[u]);return this},e.prototype.get=function(e){return this.options[e]},e.prototype.set=function(e,t){this.options[e]=t},e}),e.define("select2/core",["jquery","./options","./utils","./keys"],function(o,c,u,r){var d=function(e,t){null!=u.GetData(e[0],"select2")&&u.GetData(e[0],"select2").destroy(),this.$element=e,this.id=this._generateId(e),t=t||{},this.options=new c(t,e),d.__super__.constructor.call(this);var n=e.attr("tabindex")||0;u.StoreData(e[0],"old-tabindex",n),e.attr("tabindex","-1");var r=this.options.get("dataAdapter");this.dataAdapter=new r(e,this.options);var i=this.render();this._placeContainer(i);var o=this.options.get("selectionAdapter");this.selection=new o(e,this.options),this.$selection=this.selection.render(),this.selection.position(this.$selection,i);var s=this.options.get("dropdownAdapter");this.dropdown=new s(e,this.options),this.$dropdown=this.dropdown.render(),this.dropdown.position(this.$dropdown,i);var a=this.options.get("resultsAdapter");this.results=new a(e,this.options,this.dataAdapter),this.$results=this.results.render(),this.results.position(this.$results,this.$dropdown);var l=this;this._bindAdapters(),this._registerDomEvents(),this._registerDataEvents(),this._registerSelectionEvents(),this._registerDropdownEvents(),this._registerResultsEvents(),this._registerEvents(),this.dataAdapter.current(function(e){l.trigger("selection:update",{data:e})}),e.addClass("select2-hidden-accessible"),e.attr("aria-hidden","true"),this._syncAttributes(),u.StoreData(e[0],"select2",this),e.data("select2",this)};return u.Extend(d,u.Observable),d.prototype._generateId=function(e){return"select2-"+(null!=e.attr("id")?e.attr("id"):null!=e.attr("name")?e.attr("name")+"-"+u.generateChars(2):u.generateChars(4)).replace(/(:|\.|\[|\]|,)/g,"")},d.prototype._placeContainer=function(e){e.insertAfter(this.$element);var t=this._resolveWidth(this.$element,this.options.get("width"));null!=t&&e.css("width",t)},d.prototype._resolveWidth=function(e,t){var n=/^width:(([-+]?([0-9]*\.)?[0-9]+)(px|em|ex|%|in|cm|mm|pt|pc))/i;if("resolve"==t){var r=this._resolveWidth(e,"style");return null!=r?r:this._resolveWidth(e,"element")}if("element"==t){var i=e.outerWidth(!1);return i<=0?"auto":i+"px"}if("style"!=t)return"computedstyle"!=t?t:window.getComputedStyle(e[0]).width;var o=e.attr("style");if("string"!=typeof o)return null;for(var s=o.split(";"),a=0,l=s.length;a<l;a+=1){var c=s[a].replace(/\s/g,"").match(n);if(null!==c&&1<=c.length)return c[1]}return null},d.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)},d.prototype._registerDomEvents=function(){var t=this;this.$element.on("change.select2",function(){t.dataAdapter.current(function(e){t.trigger("selection:update",{data:e})})}),this.$element.on("focus.select2",function(e){t.trigger("focus",e)}),this._syncA=u.bind(this._syncAttributes,this),this._syncS=u.bind(this._syncSubtree,this),this.$element[0].attachEvent&&this.$element[0].attachEvent("onpropertychange",this._syncA);var e=window.MutationObserver||window.WebKitMutationObserver||window.MozMutationObserver;null!=e?(this._observer=new e(function(e){t._syncA(),t._syncS(null,e)}),this._observer.observe(this.$element[0],{attributes:!0,childList:!0,subtree:!1})):this.$element[0].addEventListener&&(this.$element[0].addEventListener("DOMAttrModified",t._syncA,!1),this.$element[0].addEventListener("DOMNodeInserted",t._syncS,!1),this.$element[0].addEventListener("DOMNodeRemoved",t._syncS,!1))},d.prototype._registerDataEvents=function(){var n=this;this.dataAdapter.on("*",function(e,t){n.trigger(e,t)})},d.prototype._registerSelectionEvents=function(){var n=this,r=["toggle","focus"];this.selection.on("toggle",function(){n.toggleDropdown()}),this.selection.on("focus",function(e){n.focus(e)}),this.selection.on("*",function(e,t){-1===o.inArray(e,r)&&n.trigger(e,t)})},d.prototype._registerDropdownEvents=function(){var n=this;this.dropdown.on("*",function(e,t){n.trigger(e,t)})},d.prototype._registerResultsEvents=function(){var n=this;this.results.on("*",function(e,t){n.trigger(e,t)})},d.prototype._registerEvents=function(){var n=this;this.on("open",function(){n.$container.addClass("select2-container--open")}),this.on("close",function(){n.$container.removeClass("select2-container--open")}),this.on("enable",function(){n.$container.removeClass("select2-container--disabled")}),this.on("disable",function(){n.$container.addClass("select2-container--disabled")}),this.on("blur",function(){n.$container.removeClass("select2-container--focus")}),this.on("query",function(t){n.isOpen()||n.trigger("open",{}),this.dataAdapter.query(t,function(e){n.trigger("results:all",{data:e,query:t})})}),this.on("query:append",function(t){this.dataAdapter.query(t,function(e){n.trigger("results:append",{data:e,query:t})})}),this.on("keypress",function(e){var t=e.which;n.isOpen()?t===r.ESC||t===r.TAB||t===r.UP&&e.altKey?(n.close(e),e.preventDefault()):t===r.ENTER?(n.trigger("results:select",{}),e.preventDefault()):t===r.SPACE&&e.ctrlKey?(n.trigger("results:toggle",{}),e.preventDefault()):t===r.UP?(n.trigger("results:previous",{}),e.preventDefault()):t===r.DOWN&&(n.trigger("results:next",{}),e.preventDefault()):(t===r.ENTER||t===r.SPACE||t===r.DOWN&&e.altKey)&&(n.open(),e.preventDefault())})},d.prototype._syncAttributes=function(){this.options.set("disabled",this.$element.prop("disabled")),this.isDisabled()?(this.isOpen()&&this.close(),this.trigger("disable",{})):this.trigger("enable",{})},d.prototype._isChangeMutation=function(e,t){var n=!1,r=this;if(!e||!e.target||"OPTION"===e.target.nodeName||"OPTGROUP"===e.target.nodeName){if(t)if(t.addedNodes&&0<t.addedNodes.length)for(var i=0;i<t.addedNodes.length;i++){t.addedNodes[i].selected&&(n=!0)}else t.removedNodes&&0<t.removedNodes.length?n=!0:o.isArray(t)&&o.each(t,function(e,t){if(r._isChangeMutation(e,t))return!(n=!0)});else n=!0;return n}},d.prototype._syncSubtree=function(e,t){var n=this._isChangeMutation(e,t),r=this;n&&this.dataAdapter.current(function(e){r.trigger("selection:update",{data:e})})},d.prototype.trigger=function(e,t){var n=d.__super__.trigger,r={open:"opening",close:"closing",select:"selecting",unselect:"unselecting",clear:"clearing"};if(void 0===t&&(t={}),e in r){var i=r[e],o={prevented:!1,name:e,args:t};if(n.call(this,i,o),o.prevented)return void(t.prevented=!0)}n.call(this,e,t)},d.prototype.toggleDropdown=function(){this.isDisabled()||(this.isOpen()?this.close():this.open())},d.prototype.open=function(){this.isOpen()||this.isDisabled()||this.trigger("query",{})},d.prototype.close=function(e){this.isOpen()&&this.trigger("close",{originalEvent:e})},d.prototype.isEnabled=function(){return!this.isDisabled()},d.prototype.isDisabled=function(){return this.options.get("disabled")},d.prototype.isOpen=function(){return this.$container.hasClass("select2-container--open")},d.prototype.hasFocus=function(){return this.$container.hasClass("select2-container--focus")}
102,d.prototype.focus=function(e){this.hasFocus()||(this.$container.addClass("select2-container--focus"),this.trigger("focus",{}))},d.prototype.enable=function(e){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!=e&&0!==e.length||(e=[!0]);var t=!e[0];this.$element.prop("disabled",t)},d.prototype.data=function(){this.options.get("debug")&&0<arguments.length&&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 t=[];return this.dataAdapter.current(function(e){t=e}),t},d.prototype.val=function(e){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==e||0===e.length)return this.$element.val();var t=e[0];o.isArray(t)&&(t=o.map(t,function(e){return e.toString()})),this.$element.val(t).trigger("input").trigger("change")},d.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",u.GetData(this.$element[0],"old-tabindex")),this.$element.removeClass("select2-hidden-accessible"),this.$element.attr("aria-hidden","false"),u.RemoveData(this.$element[0]),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},d.prototype.render=function(){var e=o('<span class="select2 select2-container"><span class="selection"></span><span class="dropdown-wrapper" aria-hidden="true"></span></span>');return e.attr("dir",this.options.get("dir")),this.$container=e,this.$container.addClass("select2-container--"+this.options.get("theme")),u.StoreData(e[0],"element",this.$element),e},d}),e.define("jquery-mousewheel",["jquery"],function(e){return e}),e.define("jquery.select2",["jquery","jquery-mousewheel","./select2/core","./select2/defaults","./select2/utils"],function(i,e,o,t,s){if(null==i.fn.select2){var a=["open","close","destroy"];i.fn.select2=function(t){if("object"==typeof(t=t||{}))return this.each(function(){var e=i.extend(!0,{},t);new o(i(this),e)}),this;if("string"!=typeof t)throw new Error("Invalid arguments for Select2: "+t);var n,r=Array.prototype.slice.call(arguments,1);return this.each(function(){var e=s.GetData(this,"select2");null==e&&window.console&&console.error&&console.error("The select2('"+t+"') method was called on an element that is not using Select2."),n=e[t].apply(e,r)}),-1<i.inArray(t,a)?this:n}}return null==i.fn.select2.defaults&&(i.fn.select2.defaults=t),o}),{define:e.define,require:e.require}}(),t=e.require("jquery.select2");return u.fn.select2.amd=e,t});
103// file: /var/www/vhosts/codethislab.com/httpdocs/wp-content/plugins/ctl-wp-studio/classes/core/../../js/sprintf.min.js
104/*! sprintf-js v1.1.2 | Copyright (c) 2007-present, Alexandru Mărășteanu <[email protected]> | BSD-3-Clause */
105!function(){"use strict";var g={not_string:/[^s]/,not_bool:/[^t]/,not_type:/[^T]/,not_primitive:/[^v]/,number:/[diefg]/,numeric_arg:/[bcdiefguxX]/,json:/[j]/,not_json:/[^j]/,text:/^[^\x25]+/,modulo:/^\x25{2}/,placeholder:/^\x25(?:([1-9]\d*)\$|\(([^)]+)\))?(\+)?(0|'[^$])?(-)?(\d+)?(?:\.(\d+))?([b-gijostTuvxX])/,key:/^([a-z_][a-z_\d]*)/i,key_access:/^\.([a-z_][a-z_\d]*)/i,index_access:/^\[(\d+)\]/,sign:/^[+-]/};function y(e){return function(e,t){var r,n,i,s,a,o,p,c,l,u=1,f=e.length,d="";for(n=0;n<f;n++)if("string"==typeof e[n])d+=e[n];
vendor: 4,102 bytes, lines 105-148
105else if("object"==typeof e[n]){if((s=e[n]).keys)for(r=t[u],i=0;i<s.keys.length;i++){if(null==r)throw new Error(y('[sprintf] Cannot access property "%s" of undefined value "%s"',s.keys[i],s.keys[i-1]));r=r[s.keys[i]]}else r=s.param_no?t[s.param_no]:t[u++];if(g.not_type.test(s.type)&&g.not_primitive.test(s.type)&&r instanceof Function&&(r=r()),g.numeric_arg.test(s.type)&&"number"!=typeof r&&isNaN(r))throw new TypeError(y("[sprintf] expecting number but found %T",r));switch(g.number.test(s.type)&&(c=0<=r),s.type){case"b":r=parseInt(r,10).toString(2);break;case"c":r=String.fromCharCode(parseInt(r,10));break;case"d":case"i":r=parseInt(r,10);break;case"j":r=JSON.stringify(r,null,s.width?parseInt(s.width):0);break;case"e":r=s.precision?parseFloat(r).toExponential(s.precision):parseFloat(r).toExponential();break;case"f":r=s.precision?parseFloat(r).toFixed(s.precision):parseFloat(r);break;case"g":r=s.precision?String(Number(r.toPrecision(s.precision))):parseFloat(r);break;case"o":r=(parseInt(r,10)>>>0).toString(8);break;case"s":r=String(r),r=s.precision?r.substring(0,s.precision):r;break;case"t":r=String(!!r),r=s.precision?r.substring(0,s.precision):r;break;case"T":r=Object.prototype.toString.call(r).slice(8,-1).toLowerCase(),r=s.precision?r.substring(0,s.precision):r;break;case"u":r=parseInt(r,10)>>>0;break;case"v":r=r.valueOf(),r=s.precision?r.substring(0,s.precision):r;break;case"x":r=(parseInt(r,10)>>>0).toString(16);break;case"X":r=(parseInt(r,10)>>>0).toString(16).toUpperCase()}g.json.test(s.type)?d+=r:(!g.number.test(s.type)||c&&!s.sign?l="":(l=c?"+":"-",r=r.toString().replace(g.sign,"")),o=s.pad_char?"0"===s.pad_char?"0":s.pad_char.charAt(1):" ",p=s.width-(l+r).length,a=s.width&&0<p?o.repeat(p):"",d+=s.align?l+r+a:"0"===o?l+a+r:a+l+r)}return d}(function(e){if(p[e])return p[e];var t,r=e,n=[],i=0;for(;r;){if(null!==(t=g.text.exec(r)))n.push(t[0]);else if(null!==(t=g.modulo.exec(r)))n.push("%");else{if(null===(t=g.placeholder.exec(r)))throw new SyntaxError("[sprintf] unexpected placeholder");if(t[2]){i|=1;var s=[],a=t[2],o=[];if(null===(o=g.key.exec(a)))throw new SyntaxError("[sprintf] failed to parse named argument key");for(s.push(o[1]);""!==(a=a.substring(o[0].length));)if(null!==(o=g.key_access.exec(a)))s.push(o[1]);else{if(null===(o=g.index_access.exec(a)))throw new SyntaxError("[sprintf] failed to parse named argument key");s.push(o[1])}t[2]=s}else i|=2;if(3===i)throw new Error("[sprintf] mixing positional and named placeholders is not (yet) supported");n.push({placeholder:t[0],param_no:t[1],keys:t[2],sign:t[3],pad_char:t[4],align:t[5],width:t[6],precision:t[7],type:t[8]})}r=r.substring(t[0].length)}return p[e]=n}(e),arguments)}function e(e,t){return y.apply(null,[e].concat(t||[]))}var p=Object.create(null);"undefined"!=typeof exports&&(exports.sprintf=y,exports.vsprintf=e),"undefined"!=typeof window&&(window.sprintf=y,window.vsprintf=e,"function"==typeof define&&define.amd&&define(function(){return{sprintf:y,vsprintf:e}}))}();
106//# sourceMappingURL=sprintf.min.js.map
107// file: /var/www/vhosts/codethislab.com/httpdocs/wp-content/plugins/ctl-wp-studio/classes/core/../../js/wp_actions_filters.js
108if ( typeof window.WPDK_FILTERS === 'undefined' ) {
109
110  // List of filters
111  window.WPDK_FILTERS = {};
112
113  // List of actions
114  window.WPDK_ACTIONS = {};
115
116  /**
117   * Used to add an action or filter. Internal use only.
118   *
119   * @param {string}   type             Type of hook, 'action' or 'filter'.
120   * @param {string}   tag              Name of action or filter.
121   * @param {Function} function_to_add  Function hook.
122   * @param {integer}  priority         Priority.
123   *
124   * @since 1.6.1
125   */
126  window._wpdk_add = function( type, tag, function_to_add, priority )
127  {
128    var lists = ( 'filter' == type ) ? WPDK_FILTERS : WPDK_ACTIONS;
129
130    // Defaults
131    priority = ( priority || 10 );
132
133    if( !( tag in lists ) ) {
134      lists[ tag ] = [];
135    }
136
137    if( !( priority in lists[ tag ] ) ) {
138      lists[ tag ][ priority ] = [];
139    }
140
141    lists[ tag ][ priority ].push( {
142      func : function_to_add,
143      pri  : priority
144    } );
145
146  };
147
148  /**
149   * Hook a function or method to a specific filter action.
150   *
151   * WPDK offers filter hooks to allow plugins to modify various types of internal data at runtime in a similar
152   * way as php `add_filter()`
153   *
154   * The following example shows how a callback function is bound to a filter hook.
155   * Note that $example is passed to the callback, (maybe) modified, then returned:
156   *
157   * <code>
158   * function example_callback( example ) {
159   * 	// Maybe modify $example in some way
160   * 	return example;
161   * }
162   * add_filter( 'example_filter', example_callback );
163   * </code>
164   *
165   * @param {string}   tag             The name of the filter to hook the function_to_add callback to.
166   * @param {Function} function_to_add The callback to be run when the filter is applied.
167   * @param {integer}  priority        Optional. Used to specify the order in which the functions
168   *                                   associated with a particular action are executed. Default 10.
169   *                                   Lower numbers correspond with earlier execution,
170   *                                   and functions with the same priority are executed
171   *                                   in the order in which they were added to the action.
172   * @return {boolean}
173   */
174  window.wpdk_add_filter = function( tag, function_to_add, priority )
175  {
176    _wpdk_add( 'filter', tag, function_to_add, priority );
177  };
178
179  /**
180   * Hooks a function on to a specific action.
181   *
182   * Actions are the hooks that the WPDK core launches at specific points during execution, or when specific
183   * events occur. Plugins can specify that one or more of its Javascript functions are executed at these points,
184   * using the Action API.
185   *
186   * @since 1.6.1
187   *
188   * @uses _wpdk_add() Adds an action. Parameter list and functionality are the same.
189   *
190   * @param {string}   tag             The name of the action to which the $function_to_add is hooked.
191   * @param {Function} function_to_add The name of the function you wish to be called.
192   * @param {integer}  priority        Optional. Used to specify the order in which the functions associated with a
193   *                                   particular action are executed. Default 10.
194   *                                   Lower numbers correspond with earlier execution, and functions with the same
195   *                                   priority are executed in the order in which they were added to the action.
196   *
197   * @return bool Will always return true.
198   */
199  window.wpdk_add_action = function( tag, function_to_add, priority )
200  {
201    _wpdk_add( 'action', tag, function_to_add, priority );
202  };
203
204  /**
205   * Do an action or apply filters.
206   *
207   * @param {string} type Type of "do" to do 'action' or 'filter'.
208   * @param {Array} args Optional. Original list of arguments. This array could be empty for 'action'.
209   * @returns {*}
210   */
211  window._wpdk_do = function( type, args )
212  {
213    var hook, lists = ( 'action' == type ) ? WPDK_ACTIONS : WPDK_FILTERS;
214    var tag = args[ 0 ];
215
216    if( !( tag in lists ) ) {
217      return args[ 1 ];
218    }
219
220    // Remove the first argument
221    [].shift.apply( args );
222
223    for( var pri in lists[ tag ] ) {
224
225      hook = lists[ tag ][ pri ];
226
227      if( typeof hook !== 'undefined' ) {
228
229        for( var f in hook ) {
230          var func = hook[ f ].func;
231
232          if( typeof func === "function" ) {
233
234            if( 'filter' === type ) {
235              args[ 0 ] = func.apply( null, args );
236            }
237            else {
238              func.apply( null, args );
239            }
240          }
241        }
242      }
243    }
244
245    if( 'filter' === type ) {
246      return args[ 0 ];
247    }
248
249  };
250
251  /**
252   * Call the functions added to a filter hook and the filtered value after all hooked functions are applied to it.
253   *
254   * The callback functions attached to filter hook $tag are invoked by calling this function. This function can be
255   * used to create a new filter hook by simply calling this function with the name of the new hook specified using
256   * the tag parameter.
257   *
258   * The function allows for additional arguments to be added and passed to hooks.
259   * <code>
260   * // Our filter callback function
261   * function example_callback( my_string, arg1, arg2 ) {
262   *	// (maybe) modify my_string
263   *	return my_string;
264   * }
265   * wpdk_add_filter( 'example_filter', example_callback, 10 );
266   *
267   * // Apply the filters by calling the 'example_callback' function we
268   * // "hooked" to 'example_filter' using the wpdk_add_filter() function above.
269   * // - 'example_filter' is the filter hook tag
270   * // - 'filter me' is the value being filtered
271   * // - arg1 and arg2 are the additional arguments passed to the callback.
272   *
273   * var value = wpdk_apply_filters( 'example_filter', 'filter me', arg1, arg2 );
274   * </code>
275   *
276   * @param {string} tag     The name of the filter hook.
277   * @param {*}      value   The value on which the filters hooked to <tt>tag</tt> are applied on.
278   * @param {...*}   varargs Optional. Additional variables passed to the functions hooked to <tt>tag</tt>.
279   *
280   * @return {*}
281   */
282  window.wpdk_apply_filters = function( tag, value, varargs )
283  {
284    return _wpdk_do( 'filter', arguments );
285  };
286
287  /**
288   * Execute functions hooked on a specific action hook.
289   *
290   * This function invokes all functions attached to action hook tag. It is possible to create new action hooks by
291   * simply calling this function, specifying the name of the new hook using the <tt>tag</tt> parameter.
292   *
293   * You can pass extra arguments to the hooks, much like you can with wpdk_apply_filters().
294   *
295   * @since 1.6.1
296   *
297   * @param {string} tag  The name of the action to be executed.
298   * @param {...*}   args Optional. Additional arguments which are passed on to the functions hooked to the action.
299   *                      Default empty.
300   *
301   */
302  window.wpdk_do_action = function( tag, args )
303  {
304    _wpdk_do( 'action', arguments );
305  };
306}
307// file: /var/www/vhosts/codethislab.com/httpdocs/wp-content/plugins/ctl-wp-studio/classes/core/../../js/base64.min.js
308
309
310//
311// THIS FILE IS AUTOMATICALLY GENERATED! DO NOT EDIT BY HAND!
312//
313;(function(global, factory) {
314    typeof exports === 'object' && typeof module !== 'undefined'
315        ? module.exports = factory()
316        : typeof define === 'function' && define.amd
317        ? define(factory) :
318        // cf. https://github.com/dankogai/js-base64/issues/119
319        (function() {
320            // existing version for noConflict()
321            const _Base64 = global.Base64;
322            const gBase64 = factory();
323            gBase64.noConflict = () => {
324                global.Base64 = _Base64;
325                return gBase64;
326            };
327            if (global.Meteor) { // Meteor.js
328                Base64 = gBase64;
329            }
330            global.Base64 = gBase64;
331        })();
332}((typeof self !== 'undefined' ? self
333        : typeof window !== 'undefined' ? window
334        : typeof global !== 'undefined' ? global
335        : this
336), function() {
337    'use strict';
338
339/**
340 *  base64.ts
341 *
342 *  Licensed under the BSD 3-Clause License.
343 *    http://opensource.org/licenses/BSD-3-Clause
344 *
345 *  References:
346 *    http://en.wikipedia.org/wiki/Base64
347 *
348 * @author Dan Kogai (https://github.com/dankogai)
349 */
350const version = '3.4.5';
351/**
352 * @deprecated use lowercase `version`.
353 */
354const VERSION = version;
355const _hasatob = typeof atob === 'function';
356const _hasbtoa = typeof btoa === 'function';
357const _hasBuffer = typeof Buffer === 'function';
358const b64ch = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789
358+/=';
359const b64chs = [...b64ch];
360const b64tab = ((a) => {
361    let tab = {};
362    a.forEach((c, i) => tab[c] = i);
363    return tab;
364})(b64chs);
365const b64re = /^(?:[A-Za-z\d+\/]{4})*?(?:[A-Za-z\d+\/]{2}(?:==)?|[A-Za-z\d+\/]{3}=?)?$/;
366const _fromCC = String.fromCharCode.bind(String);
367const _U8Afrom = typeof Uint8Array.from === 'function'
368    ? Uint8Array.from.bind(Uint8Array)
369    : (it, fn = (x) => x) => new Uint8Array(Array.prototype.slice.call(it, 0).map(fn));
370const _mkUriSafe = (src) => src
371    .replace(/[+\/]/g, (m0) => m0 == '+' ? '-' : '_')
372    .replace(/=+$/m, '');
373const _tidyB64 = (s) => s.replace(/[^A-Za-z0-9\+\/]/g, '');
374/**
375 * polyfill version of `btoa`
376 */
377const btoaPolyfill = (bin) => {
378    // console.log('polyfilled');
379    let u32, c0, c1, c2, asc = '';
380    const pad = bin.length % 3;
381    for (let i = 0; i < bin.length;) {
382        if ((c0 = bin.charCodeAt(i++)) > 255 ||
383            (c1 = bin.charCodeAt(i++)) > 255 ||
384            (c2 = bin.charCodeAt(i++)) > 255)
385            throw new TypeError('invalid character found');
386        u32 = (c0 << 16) | (c1 << 8) | c2;
387        asc += b64chs[u32 >> 18 & 63]
388            + b64chs[u32 >> 12 & 63]
389            + b64chs[u32 >> 6 & 63]
390            + b64chs[u32 & 63];
391    }
392    return pad ? asc.slice(0, pad - 3) + "===".substring(pad) : asc;
393};
394/**
395 * does what `window.btoa` of web browsers do.
396 * @param {String} bin binary string
397 * @returns {string} Base64-encoded string
398 */
399const _btoa = _hasbtoa ? (bin) => btoa(bin)
400    : _hasBuffer ? (bin) => Buffer.from(bin, 'binary').toString('base64')
401        : btoaPolyfill;
402const _fromUint8Array = _hasBuffer
403    ? (u8a) => Buffer.from(u8a).toString('base64')
404    : (u8a) => {
405        // cf. https://stackoverflow.com/questions/12710001/how-to-convert-uint8-array-to-base64-encoded-string/12713326#12713326
406        const maxargs = 0x1000;
407        let strs = [];
408        for (let i = 0, l = u8a.length; i < l; i += maxargs) {
409            strs.push(_fromCC.apply(null, u8a.subarray(i, i + maxargs)));
410        }
411        return _btoa(strs.join(''));
412    };
413/**
414 * converts a Uint8Array to a Base64 string.
415 * @param {boolean} [urlsafe] URL-and-filename-safe a la RFC4648 §5
416 * @returns {string} Base64 string
417 */
418const fromUint8Array = (u8a, urlsafe = false) => urlsafe ? _mkUriSafe(_fromUint8Array(u8a)) : _fromUint8Array(u8a);
419/**
420 * @deprecated should have been internal use only.
421 * @param {string} src UTF-8 string
422 * @returns {string} UTF-16 string
423 */
424const utob = (src) => unescape(encodeURIComponent(src));
425//
426const _encode = _hasBuffer
427    ? (s) => Buffer.from(s, 'utf8').toString('base64')
428    : (s) => _btoa(utob(s));
429/**
430 * converts a UTF-8-encoded string to a Base64 string.
431 * @param {boolean} [urlsafe] if `true` make the result URL-safe
432 * @returns {string} Base64 string
433 */
434const encode = (src, urlsafe = false) => urlsafe
435    ? _mkUriSafe(_encode(src))
436    : _encode(src);
437/**
438 * converts a UTF-8-encoded string to URL-safe Base64 RFC4648 §5.
439 * @returns {string} Base64 string
440 */
441const encodeURI = (src) => encode(src, true);
442/**
443 * @deprecated should have been internal use only.
444 * @param {string} src UTF-16 string
445 * @returns {string} UTF-8 string
446 */
447const btou = (src) => decodeURIComponent(escape(src));
448/**
449 * polyfill version of `atob`
450 */
451const atobPolyfill = (asc) => {
452    // console.log('polyfilled');
453    asc = asc.replace(/\s+/g, '');
454    if (!b64re.test(asc))
455        throw new TypeError('malformed base64.');
456    asc += '=='.slice(2 - (asc.length & 3));
457    let u24, bin = '', r1, r2;
458    for (let i = 0; i < asc.length;) {
459        u24 = b64tab[asc.charAt(i++)] << 18
460            | b64tab[asc.charAt(i++)] << 12
461            | (r1 = b64tab[asc.charAt(i++)]) << 6
462            | (r2 = b64tab[asc.charAt(i++)]);
463        bin += r1 === 64 ? _fromCC(u24 >> 16 & 255)
464            : r2 === 64 ? _fromCC(u24 >> 16 & 255, u24 >> 8 & 255)
465                : _fromCC(u24 >> 16 & 255, u24 >> 8 & 255, u24 & 255);
466    }
467    return bin;
468};
469/**
470 * does what `window.atob` of web browsers do.
471 * @param {String} asc Base64-encoded string
472 * @returns {string} binary string
473 */
474const _atob = _hasatob ? (asc) => atob(_tidyB64(asc))
475    : _hasBuffer ? (asc) => Buffer.from(asc, 'base64').toString('binary')
476        : atobPolyfill;
477const _decode = _hasBuffer
478    ? (a) => Buffer.from(a, 'base64').toString('utf8')
479    : (a) => btou(_atob(a));
480const _unURI = (a) => _tidyB64(a.replace(/[-_]/g, (m0) => m0 == '-' ? '+' : '/'));
481/**
482 * converts a Base64 string to a UTF-8 string.
483 * @param {String} src Base64 string.  Both normal and URL-safe are supported
484 * @returns {string} UTF-8 string
485 */
486const decode = (src) => _decode(_unURI(src));
487/**
488 * converts a Base64 string to a Uint8Array.
489 */
490const toUint8Array = _hasBuffer
491    ? (a) => _U8Afrom(Buffer.from(_unURI(a), 'base64'))
492    : (a) => _U8Afrom(_atob(_unURI(a)), c =>
492 c.charCodeAt(0));
493const _noEnum = (v) => {
494    return {
495        value: v, enumerable: false, writable: true, configurable: true
496    };
497};
498/**
499 * extend String.prototype with relevant methods
500 */
501const extendString = function () {
502    const _add = (name, body) => Object.defineProperty(String.prototype, name, _noEnum(body));
503    _add('fromBase64', function () { return decode(this); });
504    _add('toBase64', function (urlsafe) { return encode(this, urlsafe); });
505    _add('toBase64URI', function () { return encode(this, true); });
506    _add('toBase64URL', function () { return encode(this, true); });
507    _add('toUint8Array', function () { return toUint8Array(this); });
508};
509/**
510 * extend Uint8Array.prototype with relevant methods
511 */
512const extendUint8Array = function () {
513    const _add = (name, body) => Object.defineProperty(Uint8Array.prototype, name, _noEnum(body));
514    _add('toBase64', function (urlsafe) { return fromUint8Array(this, urlsafe); });
515    _add('toBase64URI', function () { return fromUint8Array(this, true); });
516    _add('toBase64URL', function () { return fromUint8Array(this, true); });
517};
518/**
519 * extend Builtin prototypes with relevant methods
520 */
521const extendBuiltins = () => {
522    extendString();
523    extendUint8Array();
524};
525const gBase64 = {
526    version: version,
527    VERSION: VERSION,
528    atob: _atob,
529    atobPolyfill: atobPolyfill,
530    btoa: _btoa,
531    btoaPolyfill: btoaPolyfill,
532    fromBase64: decode,
533    toBase64: encode,
534    encode: encode,
535    encodeURI: encodeURI,
536    encodeURL: encodeURI,
537    utob: utob,
538    btou: btou,
539    decode: decode,
540    fromUint8Array: fromUint8Array,
541    toUint8Array: toUint8Array,
542    extendString: extendString,
543    extendUint8Array: extendUint8Array,
544    extendBuiltins: extendBuiltins,
545};
546
547    //
548    // export Base64 to the namespace
549    //
550    // ES5 is yet to have Object.assign() that may make transpilers unhappy.
551    // gBase64.Base64 = Object.assign({}, gBase64);
552    gBase64.Base64 = {};
553    Object.keys(gBase64).forEach(k => gBase64.Base64[k] = gBase64[k]);
554    return gBase64;
555}));
556
557
558// file: /var/www/vhosts/codethislab.com/httpdocs/wp-content/plugins/ctl-wp-studio/classes/core/../../js/moment-with-locales.min.js
559!function(e,a){"object"==typeof exports&&"undefined"!=typeof module?module.exports=a():"function"==typeof define&&define.amd?define(a):e.moment=a()}(this,function(){"use strict";var e,n;function M(){return e.apply(null,arguments)}function i(e){return e instanceof Array||"[object Array]"===Object.prototype.toString.call(e)}function _(e){return null!=e&&"[object Object]"===Object.prototype.toString.call(e)}function h(e,a){return Object.prototype.hasOwnProperty.call(e,a)}function o(e){if(Object.getOwnPropertyNames)return 0===Object.getOwnPropertyNames(e).length;for(var a in e)if(h(e,a))return;return 1}function r(e){return void 0===e}function m(e){return"number"==typeof e||"[object Number]"===Object.prototype.toString.call(e)}function d(e){return e instanceof Date||"[object Date]"===Object.prototype.toString.call(e)}function u(e,a){for(var t=[],s=0;s<e.length;++s)t.push(a(e[s],s));return t}function l(e,a){for(var t in a)h(a,t)&&(e[t]=a[t]);return h(a,"toString")&&(e.toString=a.toString),h(a,"valueOf")&&(e.valueOf=a.valueOf),e}function c(e,a,t,s){return Sa(e,a,t,s,!0).utc()}function L(e){return null==e._pf&&(e._pf={empty:!1,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:!1,invalidEra:null,invalidMonth:null,invalidFormat:!1,userInvalidated:!1,iso:!1,parsedDateParts:[],era:null,meridiem:null,rfc2822:!1,weekdayMismatch:!1}),e._pf}function Y(e){if(null==e._isValid){var a=L(e),t=n.call(a.parsedDateParts,function(e){return null!=e}),s=!isNaN(e._d.getTime())&&a.overflow<0&&!a.empty&&!a.invalidEra&&!a.invalidMonth&&!a.invalidWeekday&&!a.weekdayMismatch&&!a.nullInput&&!a.invalidFormat&&!a.userInvalidated&&(!a.meridiem||a.meridiem&&t);if(e._strict&&(s=s&&0===a.charsLeftOver&&0===a.unusedTokens.length&&void 0===a.bigHour),null!=Object.isFrozen&&Object.isFrozen(e))return s;e._isValid=s}return e._isValid}function y(e){var a=c(NaN);return null!=e?l(L(a),e):L(a).userInvalidated=!0,a}n=Array.prototype.some?Array.prototype.some:function(e){for(var a=Object(this),t=a.length>>>0,s=0;s<t;s++)if(s in a&&e.call(this,a[s],s,a))return!0;return!1};var f=M.momentProperties=[],a=!1;function p(e,a){var t,s,n;if(r(a._isAMomentObject)||(e._isAMomentObject=a._isAMomentObject),r(a._i)||(e._i=a._i),r(a._f)||(e._f=a._f),r(a._l)||(e._l=a._l),r(a._str
vendor: 15,141 bytes, line 559
559ict)||(e._strict=a._strict),r(a._tzm)||(e._tzm=a._tzm),r(a._isUTC)||(e._isUTC=a._isUTC),r(a._offset)||(e._offset=a._offset),r(a._pf)||(e._pf=L(a)),r(a._locale)||(e._locale=a._locale),0<f.length)for(t=0;t<f.length;t++)r(n=a[s=f[t]])||(e[s]=n);return e}function k(e){p(this,e),this._d=new Date(null!=e._d?e._d.getTime():NaN),this.isValid()||(this._d=new Date(NaN)),!1===a&&(a=!0,M.updateOffset(this),a=!1)}function D(e){return e instanceof k||null!=e&&null!=e._isAMomentObject}function T(e){!1===M.suppressDeprecationWarnings&&"undefined"!=typeof console&&console.warn&&console.warn("Deprecation warning: "+e)}function t(n,r){var d=!0;return l(function(){if(null!=M.deprecationHandler&&M.deprecationHandler(null,n),d){for(var e,a,t=[],s=0;s<arguments.length;s++){if(e="","object"==typeof arguments[s]){for(a in e+="\n["+s+"] ",arguments[0])h(arguments[0],a)&&(e+=a+": "+arguments[0][a]+", ");e=e.slice(0,-2)}else e=arguments[s];t.push(e)}T(n+"\nArguments: "+Array.prototype.slice.call(t).join("")+"\n"+(new Error).stack),d=!1}return r.apply(this,arguments)},r)}var s,g={};function w(e,a){null!=M.deprecationHandler&&M.deprecationHandler(e,a),g[e]||(T(a),g[e]=!0)}function v(e){return"undefined"!=typeof Function&&e instanceof Function||"[object Function]"===Object.prototype.toString.call(e)}function b(e,a){var t,s=l({},e);for(t in a)h(a,t)&&(_(e[t])&&_(a[t])?(s[t]={},l(s[t],e[t]),l(s[t],a[t])):null!=a[t]?s[t]=a[t]:delete s[t]);for(t in e)h(e,t)&&!h(a,t)&&_(e[t])&&(s[t]=l({},s[t]));return s}function S(e){null!=e&&this.set(e)}M.suppressDeprecationWarnings=!1,M.deprecationHandler=null,s=Object.keys?Object.keys:function(e){var a,t=[];for(a in e)h(e,a)&&t.push(a);return t};function H(e,a,t){var s=""+Math.abs(e),n=a-s.length;return(0<=e?t?"+":"":"-")+Math.pow(10,Math.max(0,n)).toString().substr(1)+s}var j=/(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,x=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,P={},O={};function W(e,a,t,s){var n="string"==typeof s?function(){return this[s]()}:s;e&&(O[e]=n),a&&(O[a[0]]=function(){return H(n.apply(this,arguments),a[1],a[2])}),t&&(O[t]=function(){return this.localeData().ordinal(n.apply(this,arguments),e)})}function A(e,a){return e.isValid()?(a=E(a,e.localeData()),P[a]=P[a]||function(s){for(var e,n=s.match(j),a=0,r=n.length;a<r;a++)O[n[a]]?n[a]=O[n[a]]:n[a]=(e=n[a]).match(/\[[\s\S]/)?e.replace(/^\[|\]$/g,""):e.replace(/\\/g,"");return function(e){for(var a="",t=0;t<r;t++)a+=v(n[t])?n[t].call(e,s):n[t];return a}}(a),P[a](e)):e.localeData().invalidDate()}function E(e,a){var t=5;function s(e){return a.longDateFormat(e)||e}for(x.lastIndex=0;0<=t&&x.test(e);)e=e.replace(x,s),x.lastIndex=0,--t;return e}var F={};function z(e,a){var t=e.toLowerCase();F[t]=F[t+"s"]=F[a]=e}function N(e){return"string"==typeof e?F[e]||F[e.toLowerCase()]:void 0}function J(e){var a,t,s={};for(t in e)h(e,t)&&(a=N(t))&&(s[a]=e[t]);return s}var R={};function C(e,a){R[e]=a}function I(e){return e%4==0&&e%100!=0||e%400==0}function U(e){return e<0?Math.ceil(e)||0:Math.floor(e)}function G(e){var a=+e,t=0;return 0!=a&&isFinite(a)&&(t=U(a)),t}function V(a,t){return function(e){return null!=e?(K(this,a,e),M.updateOffset(this,t),this):B(this,a)}}function B(e,a){return e.isValid()?e._d["get"+(e._isUTC?"UTC":"")+a]():NaN}function K(e,a,t){e.isValid()&&!isNaN(t)&&("FullYear"===a&&I(e.year())&&1===e.month()&&29===e.date()?(t=G(t),e._d["set"+(e._isUTC?"UTC":"")+a](t,e.month(),Se(t,e.month()))):e._d["set"+(e._isUTC?"UTC":"")+a](t))}var q,Z=/\d/,$=/\d\d/,Q=/\d{3}/,X=/\d{4}/,ee=/[+-]?\d{6}/,ae=/\d\d?/,te=/\d\d\d\d?/,se=/\d\d\d\d\d\d?/,ne=/\d{1,3}/,re=/\d{1,4}/,de=/[+-]?\d{1,6}/,ie=/\d+/,_e=/[+-]?\d+/,oe=/Z|[+-]\d\d:?\d\d/gi,me=/Z|[+-]\d\d(?::?\d\d)?/gi,ue=/[0-9]{0,256}['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFF07\uFF10-\uFFEF]{1,256}|[\u0600-\u06FF\/]{1,256}(\s*?[\u0600-\u06FF]{1,256}){1,2}/i;function le(e,t,s){q[e]=v(t)?t:function(e,a){return e&&s?s:t}}function Me(e,a){return h(q,e)?q[e](a._strict,a._locale):new RegExp(he(e.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(e,a,t,s,n){return a||t||s||n})))}function he(e){return e.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}q={};var ce={};function Le(e,t){var a,s=t;for("string"==typeof e&&(e=[e]),m(t)&&(s=function(e,a){a[t]=G(e)}),a=0;a<e.length;a++)ce[e[a]]=s}function Ye(e,n){Le(e,function(e,a,t,s){t._w=t._w||{},n(e,t._w,t,s)})}var ye,fe=0,pe=1,ke=2,De=3,Te=4,ge=5,we=6,ve=7,be=8;function Se(e,a){if(isNaN(e)||isNaN(a))return NaN;var t,s=(a%(t=12)+t)%t;return e+=(a-s)/12,1==s?I(e)?29:28:31-s%7%2}ye=Array.prototype.indexOf?Array.prototype.indexOf:function(e){for(var a=0;a<this.length;++a)if(this[a]===e)return a;return-1},W("M",["MM",2],"Mo",function(){return this.month()+1}),W("MMM",0,0,function(e){return this.localeData().monthsShort(this,e)}),W("MMMM",0,0,function(e){return this.localeData().months(this,e)}),z("month","M"),C("month",8),le("M",ae),le("MM",ae,$),le("MMM",function(e,a){return a.monthsShortRegex(e)}),le("MMMM",function(e,a){return a.monthsRegex(e)}),Le(["M","MM"],function(e,a){a[pe]=G(e)-1}),Le(["MMM","MMMM"],function(e,a,t,s){var n=t._locale.monthsParse(e,s,t._strict);null!=n?a[pe]=n:L(t).invalidMonth=e});var He="January_February_March_April_May_June_July_August_September_October_November_December".split("_"),je="Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),xe=/D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/,Pe=ue,Oe=ue;function We(e,a){var t;if(!e.isValid())return e;if("string"==typeof a)if(/^\d+$/.test(a))a=G(a);else if(!m(a=e.localeData().monthsParse(a)))return e;return t=Math.min(e.date(),Se(e.year(),a)),e._d["set"+(e._isUTC?"UTC":"")+"Month"](a,t),e}function Ae(e){return null!=e?(We(this,e),M.updateOffset(this,!0),this):B(this,"Month")}function Ee(){function e(e,a){return a.length-e.length}for(var a,t=[],s=[],n=[],r=0;r<12;r++)a=c([2e3,r]),t.push(this.monthsShort(a,"")),s.push(this.months(a,"")),n.push(this.months(a,"")),n.push(this.monthsShort(a,""));for(t.sort(e),s.sort(e),n.sort(e),r=0;r<12;r++)t[r]=he(t[r]),s[r]=he(s[r]);for(r=0;r<24;r++)n[r]=he(n[r]);this._monthsRegex=new RegExp("^("+n.join("|")+")","i"),this._monthsShortRegex=this._monthsRegex,this._monthsStrictRegex=new RegExp("^("+s.join("|")+")","i"),this._monthsShortStrictRegex=new RegExp("^("+t.join("|")+")","i")}function Fe(e){return I(e)?366:365}W("Y",0,0,function(){var e=this.year();return e<=9999?H(e,4):"+"+e}),W(0,["YY",2],0,function(){return this.year()%100}),W(0,["YYYY",4],0,"year"),W(0,["YYYYY",5],0,"year"),W(0,["YYYYYY",6,!0],0,"year"),z("year","y"),C("year",1),le("Y",_e),le("YY",ae,$),le("YYYY",re,X),le("YYYYY",de,ee),le("YYYYYY",de,ee),Le(["YYYYY","YYYYYY"],fe),Le("YYYY",function(e,a){a[fe]=2===e.length?M.parseTwoDigitYear(e):G(e)}),Le("YY",function(e,a){a[fe]=M.parseTwoDigitYear(e)}),Le("Y",function(e,a){a[fe]=parseInt(e,10)}),M.parseTwoDigitYear=function(e){return G(e)+(68<G(e)?1900:2e3)};var ze=V("FullYear",!0);function Ne(e){var a,t;return e<100&&0<=e?((t=Array.prototype.slice.call(arguments))[0]=e+400,a=new Date(Date.UTC.apply(null,t)),isFinite(a.getUTCFullYear())&&a.setUTCFullYear(e)):a=new Date(Date.UTC.apply(null,arguments)),a}function Je(e,a,t){var s=7+a-t;return s-(7+Ne(e,0,s).getUTCDay()-a)%7-1}function Re(e,a,t,s,n){var r,d=1+7*(a-1)+(7+t-s)%7+Je(e,s,n),i=d<=0?Fe(r=e-1)+d:d>Fe(e)?(r=e+1,d-Fe(e)):(r=e,d);return{year:r,dayOfYear:i}}function Ce(e,a,t){var s,n,r=Je(e.year(),a,t),d=Math.floor((e.dayOfYear()-r-1)/7)+1;return d<1?s=d+Ie(n=e.year()-1,a,t):d>Ie(e.year(),a,t)?(s=d-Ie(e.year(),a,t),n=e.year()+1):(n=e.year(),s=d),{week:s,year:n}}function Ie(e,a,t){var s=Je(e,a,t),n=Je(e+1,a,t);return(Fe(e)-s+n)/7}W("w",["ww",2],"wo","week"),W("W",["WW",2],"Wo","isoWeek"),z("week","w"),z("isoWeek","W"),C("week",5),C("isoWeek",5),le("w",ae),le("ww",ae,$),le("W",ae),le("WW",ae,$),Ye(["w","ww","W","WW"],function(e,a,t,s){a[s.substr(0,1)]=G(e)});function Ue(e,a){return e.slice(a,7).concat(e.slice(0,a))}W("d",0,"do","day"),W("dd",0,0,function(e){return this.localeData().weekdaysMin(this,e)}),W("ddd",0,0,function(e){return this.localeData().weekdaysShort(this,e)}),W("dddd",0,0,function(e){return this.localeData().weekdays(this,e)}),W("e",0,0,"weekday"),W("E",0,0,"isoWeekday"),z("day","d"),z("weekday","e"),z("isoWeekday","E"),C("day",11),C("weekday",11),C("isoWeekday",11),le("d",ae),le("e",ae),le("E",ae),le("dd",function(e,a){return a.weekdaysMinRegex(e)}),le("ddd",function(e,a){return a.weekdaysShortRegex(e)}),le("dddd",function(e,a){return a.weekdaysRegex(e)}),Ye(["dd","ddd","dddd"],function(e,a,t,s){var n=t._locale.weekdaysParse(e,s,t._strict);null!=n?a.d=n:L(t).invalidWeekday=e}),Ye(["d","e","E"],function(e,a,t,s){a[s]=G(e)});var Ge="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),Ve="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),Be="Su_Mo_Tu_We_Th_Fr_Sa".split("_"),Ke=ue,qe=ue,Ze=ue;function $e(){function e(e,a){return a.length-e.length}for(var a,t,s,n,r=[],d=[],i=[],_=[],o=0;o<7;o++)a=c([2e3,1]).day(o),t=he(this.weekdaysMin(a,"")),s=he(this.weekdaysShort(a,"")),n=he(this.weekdays(a,"")),r.push(t),d.push(s),i.push(n),_.push(t),_.push(s),_.push(n);r.sort(e),d.sort(e),i.sort(e),_.sort(e),this._weekdaysRegex=new RegExp("^("+_.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+i.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+d.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+r.join("|")+")","i")}function Qe(){return this.hours()%12||12}function Xe(e,a){W(e,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),a)})}function ea(e,a){return a._meridiemParse}W("H",["HH",2],0,"hour"),W("h",["hh",2],0,Qe),W("k",["kk",2],0,function(){return this.hours()||24}),W("hmm",0,0,function(){return""+Qe.apply(this)+H(this.minutes(),2)}),W("hmmss",0,0,function(){return""+Qe.apply(this)+H(this.minutes(),2)+H(this.seconds(),2)}),W("Hmm",0,0,function(){return""+this.hours()+H(this.minutes(),2)}),W("Hmmss",0,0,function(){return""+this.hours()+H(this.minutes(),2)+H(this.seconds(),2)}),Xe("a",!0),Xe("A",!1),z("hour","h"),C("hour",13),le("a",ea),le("A",ea),le("H",ae),le("h",ae),le("k",ae),le("HH",ae,$),le("hh",ae,$),le("kk",ae,$),le("hmm",te),le("hmmss",se),le("Hmm",te),le("Hmmss",se),Le(["H","HH"],De),Le(["k","kk"],function(e,a,t){var s=G(e);a[De]=24===s?0:s}),Le(["a","A"],function(e,a,t){t._isPm=t._locale.isPM(e),t._meridiem=e}),Le(["h","hh"],function(e,a,t){a[De]=G(e),L(t).bigHour=!0}),Le("hmm",function(e,a,t){var s=e.length-2;a[De]=G(e.substr(0,s)),a[Te]=G(e.substr(s)),L(t).bigHour=!0}),Le("hmmss",function(e,a,t){var s=e.length-4,n=e.length-2;a[De]=G(e.substr(0,s)),a[Te]=G(e.substr(s,2)),a[ge]=G(e.substr(n)),L(t).bigHour=!0}),Le("Hmm",function(e,a,t){var s=e.length-2;a[De]=G(e.substr(0,s)),a[Te]=G(e.substr(s))}),Le("Hmmss",function(e,a,t){var s=e.length-4,n=e.length-2;a[De]=G(e.substr(0,s)),a[Te]=G(e.substr(s,2)),a[ge]=G(e.substr(n))});var aa=V("Hours",!0);var ta,sa={calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},longDateFormat:{LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},invalidDate:"Invalid date",ordinal:"%d",dayOfMonthOrdinalParse:/\d{1,2}/,relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",w:"a week",ww:"%d weeks",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},months:He,monthsShort:je,week:{dow:0,doy:6},weekdays:Ge,weekdaysMin:Be,weekdaysShort:Ve,meridiemParse:/[ap]\.?m?\.?/i},na={},ra={};function da(e){return e?e.toLowerCase().replace("_","-"):e}function ia(e){for(var a,t,s,n,r=0;r<e.length;){for(a=(n=da(e[r]).split("-")).length,t=(t=da(e[r+1]))?t.split("-"):null;0<a;){if(s=_a(n.slice(0,a).join("-")))return s;if(t&&t.length>=a&&function(e,a){for(var t=Math.min(e.length,a.length),s=0;s<t;s+=1)if(e[s]!==a[s])return s;return t}(n,t)>=a-1)break;a--}r++}return ta}function _a(a){var e;if(void 0===na[a]&&"undefined"!=typeof module&&module&&module.exports)try{e=ta._abbr,require("./locale/"+a),oa(e)}catch(e){na[a]=null}return na[a]}function oa(e,a){var t;return e&&((t=r(a)?ua(e):ma(e,a))?ta=t:"undefined"!=typeof console&&console.warn&&console.warn("Locale "+e+" not found. Did you forget to load it?")),ta._abbr}function ma(e,a){if(null===a)return delete na[e],null;var t,s=sa;if(a.abbr=e,null!=na[e])w("defineLocaleOverride","use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info."),s=na[e]._config;else if(null!=a.parentLocale)if(null!=na[a.parentLocale])s=na[a.parentLocale]._config;else{if(null==(t=_a(a.parentLocale)))return ra[a.parentLocale]||(ra[a.parentLocale]=[]),ra[a.parentLocale].push({name:e,config:a}),null;s=t._config}return na[e]=new S(b(s,a)),ra[e]&&ra[e].forEach(function(e){ma(e.name,e.config)}),oa(e),na[e]}function ua(e){var a;if(e&&e._locale&&e._locale._abbr&&(e=e._locale._abbr),!e)return ta;if(!i(e)){if(a=_a(e))return a;e=[e]}return ia(e)}function la(e){var a,t=e._a;return t&&-2===L(e).overflow&&(a=t[pe]<0||11<t[pe]?pe:t[ke]<1||t[ke]>Se(t[fe],t[pe])?ke:t[De]<0||24<t[De]||24===t[De]&&(0!==t[Te]||0!==t[ge]||0!==t[we])?De:t[Te]<0||59<t[Te]?Te:t[ge]<0||59<t[ge]?ge:t[we]<0||999<t[we]?we:-1,L(e)._overflowDayOfYear&&(a<fe||ke<a)&&(a=ke),L(e)._overflowWeeks&&-1===a&&(a=ve),L(e)._overflowWeekday&&-1===a&&(a=be),L(e).overflow=a),e}var Ma=/^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,ha=/^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d|))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,ca=/Z|[+-]\d\d(?::?\d\d)?/,La=[["YYYYYY-MM-DD",/[+-]\d{6}-\d\d-\d\d/],["YYYY-MM-DD",/\d{4}-\d\d-\d\d/],["GGGG-[W]WW-E",/\d{4}-W\d\d-\d/],["GGGG-[W]WW",/\d{4}-W\d\d/,!1],["YYYY-DDD",/\d{4}-\d{3}/],["YYYY-MM",/\d{4}-\d\d/,!1],["YYYYYYMMDD",/[+-]\d{10}/],["YYYYMMDD",/\d{8}/],["GGGG[W]WWE",/\d{4}W\d{3}/],["GGGG[W]WW",/\d{4}W\d{2}/,!1],["YYYYDDD",/\d{7}/],["YYYYMM",/\d{6}/,!1],["YYYY",/\d{4}/,!1]],Ya=[["HH:mm:ss.SSSS",/\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss,SSSS",/\d\d:\d\d:\d\d,\d+/],["HH:mm:ss",/\d\d:\d\d:\d\d/],["HH:mm",/\d\d:\d\d/],["HHmmss.SSSS",/\d\d\d\d\d\d\.\d+/],["HHmmss,SSSS",/\d\d\d\d\d\d,\d+/],["HHmmss",/\d\d\d\d\d\d/],["HHmm",/\d\d\d\d/],["HH",/\d\d/]],ya=/^\/?Date\((-?\d+)/i,fa=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/,pa={UT:0,GMT:0,EDT:-240,EST:-300,CDT:-300,CST:-360,MDT:-360,MST:-420,PDT:-420,PST:-480};function ka(e){var a,t,s,n,r,d,i=e._i,_=Ma.exec(i)||ha.exec(i);if(_){for(L(e).iso=!0,a=0,t=La.length;a<t;
vendor: 4,302 bytes, line 559
559a++)if(La[a][1].exec(_[1])){n=La[a][0],s=!1!==La[a][2];break}if(null==n)return void(e._isValid=!1);if(_[3]){for(a=0,t=Ya.length;a<t;a++)if(Ya[a][1].exec(_[3])){r=(_[2]||" ")+Ya[a][0];break}if(null==r)return void(e._isValid=!1)}if(!s&&null!=r)return void(e._isValid=!1);if(_[4]){if(!ca.exec(_[4]))return void(e._isValid=!1);d="Z"}e._f=n+(r||"")+(d||""),va(e)}else e._isValid=!1}function Da(e,a,t,s,n,r){var d=[function(e){var a=parseInt(e,10);{if(a<=49)return 2e3+a;if(a<=999)return 1900+a}return a}(e),je.indexOf(a),parseInt(t,10),parseInt(s,10),parseInt(n,10)];return r&&d.push(parseInt(r,10)),d}function Ta(e){var a,t,s,n,r=fa.exec(e._i.replace(/\([^)]*\)|[\n\t]/g," ").replace(/(\s\s+)/g," ").replace(/^\s\s*/,"").replace(/\s\s*$/,""));if(r){if(a=Da(r[4],r[3],r[2],r[5],r[6],r[7]),t=r[1],s=a,n=e,t&&Ve.indexOf(t)!==new Date(s[0],s[1],s[2]).getDay()&&(L(n).weekdayMismatch=!0,!void(n._isValid=!1)))return;e._a=a,e._tzm=function(e,a,t){if(e)return pa[e];if(a)return 0;var s=parseInt(t,10),n=s%100;return 60*((s-n)/100)+n}(r[8],r[9],r[10]),e._d=Ne.apply(null,e._a),e._d.setUTCMinutes(e._d.getUTCMinutes()-e._tzm),L(e).rfc2822=!0}else e._isValid=!1}function ga(e,a,t){return null!=e?e:null!=a?a:t}function wa(e){var a,t,s,n,r,d,i,_=[];if(!e._d){for(d=e,i=new Date(M.now()),s=d._useUTC?[i.getUTCFullYear(),i.getUTCMonth(),i.getUTCDate()]:[i.getFullYear(),i.getMonth(),i.getDate()],e._w&&null==e._a[ke]&&null==e._a[pe]&&function(e){var a,t,s,n,r,d,i,_,o;null!=(a=e._w).GG||null!=a.W||null!=a.E?(r=1,d=4,t=ga(a.GG,e._a[fe],Ce(Ha(),1,4).year),s=ga(a.W,1),((n=ga(a.E,1))<1||7<n)&&(_=!0)):(r=e._locale._week.dow,d=e._locale._week.doy,o=Ce(Ha(),r,d),t=ga(a.gg,e._a[fe],o.year),s=ga(a.w,o.week),null!=a.d?((n=a.d)<0||6<n)&&(_=!0):null!=a.e?(n=a.e+r,(a.e<0||6<a.e)&&(_=!0)):n=r);s<1||s>Ie(t,r,d)?L(e)._overflowWeeks=!0:null!=_?L(e)._overflowWeekday=!0:(i=Re(t,s,n,r,d),e._a[fe]=i.year,e._dayOfYear=i.dayOfYear)}(e),null!=e._dayOfYear&&(r=ga(e._a[fe],s[fe]),(e._dayOfYear>Fe(r)||0===e._dayOfYear)&&(L(e)._overflowDayOfYear=!0),t=Ne(r,0,e._dayOfYear),e._a[pe]=t.getUTCMonth(),e._a[ke]=t.getUTCDate()),a=0;a<3&&null==e._a[a];++a)e._a[a]=_[a]=s[a];for(;a<7;a++)e._a[a]=_[a]=null==e._a[a]?2===a?1:0:e._a[a];24===e._a[De]&&0===e._a[Te]&&0===e._a[ge]&&0===e._a[we]&&(e._nextDay=!0,e._a[De]=0),e._d=(e._useUTC?Ne:function(e,a,t,s,n,r,d){var i;return e<100&&0<=e?(i=new Date(e+400,a,t,s,n,r,d),isFinite(i.getFullYear())&&i.setFullYear(e)):i=new Date(e,a,t,s,n,r,d),i}).apply(null,_),n=e._useUTC?e._d.getUTCDay():e._d.getDay(),null!=e._tzm&&e._d.setUTCMinutes(e._d.getUTCMinutes()-e._tzm),e._nextDay&&(e._a[De]=24),e._w&&void 0!==e._w.d&&e._w.d!==n&&(L(e).weekdayMismatch=!0)}}function va(e){if(e._f!==M.ISO_8601)if(e._f!==M.RFC_2822){e._a=[],L(e).empty=!0;for(var a,t,s,n,r,d,i,_=""+e._i,o=_.length,m=0,u=E(e._f,e._locale).match(j)||[],l=0;l<u.length;l++)t=u[l],(a=(_.match(Me(t,e))||[])[0])&&(0<(s=_.substr(0,_.indexOf(a))).length&&L(e).unusedInput.push(s),_=_.slice(_.indexOf(a)+a.length),m+=a.length),O[t]?(a?L(e).empty=!1:L(e).unusedTokens.push(t),r=t,i=e,null!=(d=a)&&h(ce,r)&&ce[r](d,i._a,i,r)):e._strict&&!a&&L(e).unusedTokens.push(t);L(e).charsLeftOver=o-m,0<_.length&&L(e).unusedInput.push(_),e._a[De]<=12&&!0===L(e).bigHour&&0<e._a[De]&&(L(e).bigHour=void 0),L(e).parsedDateParts=e._a.slice(0),L(e).meridiem=e._meridiem,e._a[De]=function(e,a,t){var s;if(null==t)return a;return null!=e.meridiemHour?e.meridiemHour(a,t):(null!=e.isPM&&((s=e.isPM(t))&&a<12&&(a+=12),s||12!==a||(a=0)),a)}(e._locale,e._a[De],e._meridiem),null!==(n=L(e).era)&&(e._a[fe]=e._locale.erasConvertYear(n,e._a[fe])),wa(e),la(e)}else Ta(e);else ka(e)}function ba(e){var a,t,s=e._i,n=e._f;return e._locale=e._locale||ua(e._l),null===s||void 0===n&&""===s?y({nullInput:!0}):("string"==typeof s&&(e._i=s=e._locale.preparse(s)),D(s)?new k(la(s)):(d(s)?e._d=s:i(n)?function(e){var a,t,s,n,r,d,i=!1;if(0===e._f.length)return L(e).invalidFormat=!0,e._d=new Date(NaN);for(n=0;n<e._f.length;n++)r=0,d=!1,a=p({},e),null!=e._useUTC&&(a._useUTC=e._useUTC),a._f=e._f[n],va(a),Y(a)&&(d=!0),r+=L(a).charsLeftOver,r+=10*L(a).unusedTokens.length,L(a).score=r,i?r<s&&(s=r,t=a):(null==s||r<s||d)&&(s=r,t=a,d&&(i=!0));l(e,t||a)}(e):n?va(e):r(t=(a=e)._i)?a._d=new Date(M.now()):d(t)?a._d=new Date(t.valueOf()):"string"==typeof t?function(e){var a=ya.exec(e._i);
vendor: 17,640 bytes, line 559
559null===a?(ka(e),!1===e._isValid&&(delete e._isValid,Ta(e),!1===e._isValid&&(delete e._isValid,e._strict?e._isValid=!1:M.createFromInputFallback(e)))):e._d=new Date(+a[1])}(a):i(t)?(a._a=u(t.slice(0),function(e){return parseInt(e,10)}),wa(a)):_(t)?function(e){var a,t;e._d||(t=void 0===(a=J(e._i)).day?a.date:a.day,e._a=u([a.year,a.month,t,a.hour,a.minute,a.second,a.millisecond],function(e){return e&&parseInt(e,10)}),wa(e))}(a):m(t)?a._d=new Date(t):M.createFromInputFallback(a),Y(e)||(e._d=null),e))}function Sa(e,a,t,s,n){var r,d={};return!0!==a&&!1!==a||(s=a,a=void 0),!0!==t&&!1!==t||(s=t,t=void 0),(_(e)&&o(e)||i(e)&&0===e.length)&&(e=void 0),d._isAMomentObject=!0,d._useUTC=d._isUTC=n,d._l=t,d._i=e,d._f=a,d._strict=s,(r=new k(la(ba(d))))._nextDay&&(r.add(1,"d"),r._nextDay=void 0),r}function Ha(e,a,t,s){return Sa(e,a,t,s,!1)}M.createFromInputFallback=t("value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are discouraged. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.",function(e){e._d=new Date(e._i+(e._useUTC?" UTC":""))}),M.ISO_8601=function(){},M.RFC_2822=function(){};var ja=t("moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/",function(){var e=Ha.apply(null,arguments);return this.isValid()&&e.isValid()?e<this?this:e:y()}),xa=t("moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/",function(){var e=Ha.apply(null,arguments);return this.isValid()&&e.isValid()?this<e?this:e:y()});function Pa(e,a){var t,s;if(1===a.length&&i(a[0])&&(a=a[0]),!a.length)return Ha();for(t=a[0],s=1;s<a.length;++s)a[s].isValid()&&!a[s][e](t)||(t=a[s]);return t}var Oa=["year","quarter","month","week","day","hour","minute","second","millisecond"];function Wa(e){var a=J(e),t=a.year||0,s=a.quarter||0,n=a.month||0,r=a.week||a.isoWeek||0,d=a.day||0,i=a.hour||0,_=a.minute||0,o=a.second||0,m=a.millisecond||0;this._isValid=function(e){var a,t,s=!1;for(a in e)if(h(e,a)&&(-1===ye.call(Oa,a)||null!=e[a]&&isNaN(e[a])))return!1;for(t=0;t<Oa.length;++t)if(e[Oa[t]]){if(s)return!1;parseFloat(e[Oa[t]])!==G(e[Oa[t]])&&(s=!0)}return!0}(a),this._milliseconds=+m+1e3*o+6e4*_+1e3*i*60*60,this._days=+d+7*r,this._months=+n+3*s+12*t,this._data={},this._locale=ua(),this._bubble()}function Aa(e){return e instanceof Wa}function Ea(e){return e<0?-1*Math.round(-1*e):Math.round(e)}function Fa(e,t){W(e,0,0,function(){var e=this.utcOffset(),a="+";return e<0&&(e=-e,a="-"),a+H(~~(e/60),2)+t+H(~~e%60,2)})}Fa("Z",":"),Fa("ZZ",""),le("Z",me),le("ZZ",me),Le(["Z","ZZ"],function(e,a,t){t._useUTC=!0,t._tzm=Na(me,e)});var za=/([\+\-]|\d\d)/gi;function Na(e,a){var t,s,n=(a||"").match(e);return null===n?null:0===(s=60*(t=((n[n.length-1]||[])+"").match(za)||["-",0,0])[1]+G(t[2]))?0:"+"===t[0]?s:-s}function Ja(e,a){var t,s;return a._isUTC?(t=a.clone(),s=(D(e)||d(e)?e.valueOf():Ha(e).valueOf())-t.valueOf(),t._d.setTime(t._d.valueOf()+s),M.updateOffset(t,!1),t):Ha(e).local()}function Ra(e){return-Math.round(e._d.getTimezoneOffset())}function Ca(){return!!this.isValid()&&(this._isUTC&&0===this._offset)}M.updateOffset=function(){};var Ia=/^(-|\+)?(?:(\d*)[. ])?(\d+):(\d+)(?::(\d+)(\.\d*)?)?$/,Ua=/^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;function Ga(e,a){var t,s,n,r=e,d=null;return Aa(e)?r={ms:e._milliseconds,d:e._days,M:e._months}:m(e)||!isNaN(+e)?(r={},a?r[a]=+e:r.milliseconds=+e):(d=Ia.exec(e))?(t="-"===d[1]?-1:1,r={y:0,d:G(d[ke])*t,h:G(d[De])*t,m:G(d[Te])*t,s:G(d[ge])*t,ms:G(Ea(1e3*d[we]))*t}):(d=Ua.exec(e))?(t="-"===d[1]?-1:1,r={y:Va(d[2],t),M:Va(d[3],t),w:Va(d[4],t),d:Va(d[5],t),h:Va(d[6],t),m:Va(d[7],t),s:Va(d[8],t)}):null==r?r={}:"object"==typeof r&&("from"in r||"to"in r)&&(n=function(e,a){var t;if(!e.isValid()||!a.isValid())return{milliseconds:0,months:0};a=Ja(a,e),e.isBefore(a)?t=Ba(e,a):((t=Ba(a,e)).milliseconds=-t.milliseconds,t.months=-t.months);return t}(Ha(r.from),Ha(r.to)),(r={}).ms=n.milliseconds,r.M=n.months),s=new Wa(r),Aa(e)&&h(e,"_locale")&&(s._locale=e._locale),Aa(e)&&h(e,"_isValid")&&(s._isValid=e._isValid),s}function Va(e,a){var t=e&&parseFloat(e.replace(",","."));return(isNaN(t)?0:t)*a}function Ba(e,a){var t={};return t.months=a.month()-e.month()+12*(a.year()-e.year()),e.clone().add(t.months,"M").isAfter(a)&&--t.months,t.milliseconds=a-e.clone().add(t.months,"M"),t}function Ka(s,n){return function(e,a){var t;return null===a||isNaN(+a)||(w(n,"moment()."+n+"(period, number) is deprecated. Please use moment()."+n+"(number, period). See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info."),t=e,e=a,a=t),qa(this,Ga(e,a),s),this}}function qa(e,a,t,s){var n=a._milliseconds,r=Ea(a._days),d=Ea(a._months);e.isValid()&&(s=null==s||s,d&&We(e,B(e,"Month")+d*t),r&&K(e,"Date",B(e,"Date")+r*t),n&&e._d.setTime(e._d.valueOf()+n*t),s&&M.updateOffset(e,r||d))}Ga.fn=Wa.prototype,Ga.invalid=function(){return Ga(NaN)};var Za=Ka(1,"add"),$a=Ka(-1,"subtract");function Qa(e){return"string"==typeof e||e instanceof String}function Xa(e){return D(e)||d(e)||Qa(e)||m(e)||function(a){var e=i(a),t=!1;e&&(t=0===a.filter(function(e){return!m(e)&&Qa(a)}).length);return e&&t}(e)||function(e){var a,t,s=_(e)&&!o(e),n=!1,r=["years","year","y","months","month","M","days","day","d","dates","date","D","hours","hour","h","minutes","minute","m","seconds","second","s","milliseconds","millisecond","ms"];for(a=0;a<r.length;a+=1)t=r[a],n=n||h(e,t);return s&&n}(e)||null==e}function et(e,a){if(e.date()<a.date())return-et(a,e);var t=12*(a.year()-e.year())+(a.month()-e.month()),s=e.clone().add(t,"months"),n=a-s<0?(a-s)/(s-e.clone().add(t-1,"months")):(a-s)/(e.clone().add(1+t,"months")-s);return-(t+n)||0}function at(e){var a;return void 0===e?this._locale._abbr:(null!=(a=ua(e))&&(this._locale=a),this)}M.defaultFormat="YYYY-MM-DDTHH:mm:ssZ",M.defaultFormatUtc="YYYY-MM-DDTHH:mm:ss[Z]";var tt=t("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(e){return void 0===e?this.localeData():this.locale(e)});function st(){return this._locale}var nt=126227808e5;function rt(e,a){return(e%a+a)%a}function dt(e,a,t){return e<100&&0<=e?new Date(e+400,a,t)-nt:new Date(e,a,t).valueOf()}function it(e,a,t){return e<100&&0<=e?Date.UTC(e+400,a,t)-nt:Date.UTC(e,a,t)}function _t(e,a){return a.erasAbbrRegex(e)}function ot(){for(var e=[],a=[],t=[],s=[],n=this.eras(),r=0,d=n.length;r<d;++r)a.push(he(n[r].name)),e.push(he(n[r].abbr)),t.push(he(n[r].narrow)),s.push(he(n[r].name)),s.push(he(n[r].abbr)),s.push(he(n[r].narrow));this._erasRegex=new RegExp("^("+s.join("|")+")","i"),this._erasNameRegex=new RegExp("^("+a.join("|")+")","i"),this._erasAbbrRegex=new RegExp("^("+e.join("|")+")","i"),this._erasNarrowRegex=new RegExp("^("+t.join("|")+")","i")}function mt(e,a){W(0,[e,e.length],0,a)}function ut(e,a,t,s,n){var r;return null==e?Ce(this,s,n).year:((r=Ie(e,s,n))<a&&(a=r),function(e,a,t,s,n){var r=Re(e,a,t,s,n),d=Ne(r.year,0,r.dayOfYear);return this.year(d.getUTCFullYear()),this.month(d.getUTCMonth()),this.date(d.getUTCDate()),this}.call(this,e,a,t,s,n))}W("N",0,0,"eraAbbr"),W("NN",0,0,"eraAbbr"),W("NNN",0,0,"eraAbbr"),W("NNNN",0,0,"eraName"),W("NNNNN",0,0,"eraNarrow"),W("y",["y",1],"yo","eraYear"),W("y",["yy",2],0,"eraYear"),W("y",["yyy",3],0,"eraYear"),W("y",["yyyy",4],0,"eraYear"),le("N",_t),le("NN",_t),le("NNN",_t),le("NNNN",function(e,a){return a.erasNameRegex(e)}),le("NNNNN",function(e,a){return a.erasNarrowRegex(e)}),Le(["N","NN","NNN","NNNN","NNNNN"],function(e,a,t,s){var n=t._locale.erasParse(e,s,t._strict);n?L(t).era=n:L(t).invalidEra=e}),le("y",ie),le("yy",ie),le("yyy",ie),le("yyyy",ie),le("yo",function(e,a){return a._eraYearOrdinalRegex||ie}),Le(["y","yy","yyy","yyyy"],fe),Le(["yo"],function(e,a,t,s){var n;t._locale._eraYearOrdinalRegex&&(n=e.match(t._locale._eraYearOrdinalRegex)),t._locale.eraYearOrdinalParse?a[fe]=t._locale.eraYearOrdinalParse(e,n):a[fe]=parseInt(e,10)}),W(0,["gg",2],0,function(){return this.weekYear()%100}),W(0,["GG",2],0,function(){return this.isoWeekYear()%100}),mt("gggg","weekYear"),mt("ggggg","weekYear"),mt("GGGG","isoWeekYear"),mt("GGGGG","isoWeekYear"),z("weekYear","gg"),z("isoWeekYear","GG"),C("weekYear",1),C("isoWeekYear",1),le("G",_e),le("g",_e),le("GG",ae,$),le("gg",ae,$),le("GGGG",re,X),le("gggg",re,X),le("GGGGG",de,ee),le("ggggg",de,ee),Ye(["gggg","ggggg","GGGG","GGGGG"],function(e,a,t,s){a[s.substr(0,2)]=G(e)}),Ye(["gg","GG"],function(e,a,t,s){a[s]=M.parseTwoDigitYear(e)}),W("Q",0,"Qo","quarter"),z("quarter","Q"),C("quarter",7),le("Q",Z),Le("Q",function(e,a){a[pe]=3*(G(e)-1)}),W("D",["DD",2],"Do","date"),z("date","D"),C("date",9),le("D",ae),le("DD",ae,$),le("Do",function(e,a){return e?a._dayOfMonthOrdinalParse||a._ordinalParse:a._dayOfMonthOrdinalParseLenient}),Le(["D","DD"],ke),Le("Do",function(e,a){a[ke]=G(e.match(ae)[0])});var lt=V("Date",!0);W("DDD",["DDDD",3],"DDDo","dayOfYear"),z("dayOfYear","DDD"),C("dayOfYear",4),le("DDD",ne),le("DDDD",Q),Le(["DDD","DDDD"],function(e,a,t){t._dayOfYear=G(e)}),W("m",["mm",2],0,"minute"),z("minute","m"),C("minute",14),le("m",ae),le("mm",ae,$),Le(["m","mm"],Te);var Mt=V("Minutes",!1);W("s",["ss",2],0,"second"),z("second","s"),C("second",15),le("s",ae),le("ss",ae,$),Le(["s","ss"],ge);var ht,ct,Lt=V("Seconds",!1);for(W("S",0,0,function(){return~~(this.millisecond()/100)}),W(0,["SS",2],0,function(){return~~(this.millisecond()/10)}),W(0,["SSS",3],0,"millisecond"),W(0,["SSSS",4],0,function(){return 10*this.millisecond()}),W(0,["SSSSS",5],0,function(){return 100*this.millisecond()}),W(0,["SSSSSS",6],0,function(){return 1e3*this.millisecond()}),W(0,["SSSSSSS",7],0,function(){return 1e4*this.millisecond()}),W(0,["SSSSSSSS",8],0,function(){return 1e5*this.millisecond()}),W(0,["SSSSSSSSS",9],0,function(){return 1e6*this.millisecond()}),z("millisecond","ms"),C("millisecond",16),le("S",ne,Z),le("SS",ne,$),le("SSS",ne,Q),ht="SSSS";ht.length<=9;ht+="S")le(ht,ie);function Yt(e,a){a[we]=G(1e3*("0."+e))}for(ht="S";ht.length<=9;ht+="S")Le(ht,Yt);ct=V("Milliseconds",!1),W("z",0,0,"zoneAbbr"),W("zz",0,0,"zoneName");var yt=k.prototype;function ft(e){return e}yt.add=Za,yt.calendar=function(e,a){1===arguments.length&&(arguments[0]?Xa(arguments[0])?(e=arguments[0],a=void 0):function(e){for(var a=_(e)&&!o(e),t=!1,s=["sameDay","nextDay","lastDay","nextWeek","lastWeek","sameElse"],n=0;n<s.length;n+=1)t=t||h(e,s[n]);return a&&t}(arguments[0])&&(a=arguments[0],e=void 0):a=e=void 0);var t=e||Ha(),s=Ja(t,this).startOf("day"),n=M.calendarFormat(this,s)||"sameElse",r=a&&(v(a[n])?a[n].call(this,t):a[n]);return this.format(r||this.localeData().calendar(n,this,Ha(t)))},yt.clone=function(){return new k(this)},yt.diff=function(e,a,t){var s,n,r;if(!this.isValid())return NaN;if(!(s=Ja(e,this)).isValid())return NaN;switch(n=6e4*(s.utcOffset()-this.utcOffset()),a=N(a)){case"year":r=et(this,s)/12;break;case"month":r=et(this,s);break;case"quarter":r=et(this,s)/3;break;case"second":r=(this-s)/1e3;break;case"minute":r=(this-s)/6e4;break;case"hour":r=(this-s)/36e5;break;case"day":r=(this-s-n)/864e5;break;case"week":r=(this-s-n)/6048e5;break;default:r=this-s}return t?r:U(r)},yt.endOf=function(e){var a,t;if(void 0===(e=N(e))||"millisecond"===e||!this.isValid())return this;switch(t=this._isUTC?it:dt,e){case"year":a=t(this.year()+1,0,1)-1;break;case"quarter":a=t(this.year(),this.month()-this.month()%3+3,1)-1;break;case"month":a=t(this.year(),this.month()+1,1)-1;break;case"week":a=t(this.year(),this.month(),this.date()-this.weekday()+7)-1;break;case"isoWeek":a=t(this.year(),this.month(),this.date()-(this.isoWeekday()-1)+7)-1;break;case"day":case"date":a=t(this.year(),this.month(),this.date()+1)-1;break;case"hour":a=this._d.valueOf(),a+=36e5-rt(a+(this._isUTC?0:6e4*this.utcOffset()),36e5)-1;break;case"minute":a=this._d.valueOf(),a+=6e4-rt(a,6e4)-1;break;case"second":a=this._d.valueOf(),a+=1e3-rt(a,1e3)-1;break}return this._d.setTime(a),M.updateOffset(this,!0),this},yt.format=function(e){e=e||(this.isUtc()?M.defaultFormatUtc:M.defaultFormat);var a=A(this,e);return this.localeData().postformat(a)},yt.from=function(e,a){return this.isValid()&&(D(e)&&e.isValid()||Ha(e).isValid())?Ga({to:this,from:e}).locale(this.locale()).humanize(!a):this.localeData().invalidDate()},yt.fromNow=function(e){return this.from(Ha(),e)},yt.to=function(e,a){return this.isValid()&&(D(e)&&e.isValid()||Ha(e).isValid())?Ga({from:this,to:e}).locale(this.locale()).humanize(!a):this.localeData().invalidDate()},yt.toNow=function(e){return this.to(Ha(),e)},yt.get=function(e){return v(this[e=N(e)])?this[e]():this},yt.invalidAt=function(){return L(this).overflow},yt.isAfter=function(e,a){var t=D(e)?e:Ha(e);return!(!this.isValid()||!t.isValid())&&("millisecond"===(a=N(a)||"millisecond")?this.valueOf()>t.valueOf():t.valueOf()<this.clone().startOf(a).valueOf())},yt.isBefore=function(e,a){var t=D(e)?e:Ha(e);return!(!this.isValid()||!t.isValid())&&("millisecond"===(a=N(a)||"millisecond")?this.valueOf()<t.valueOf():this.clone().endOf(a).valueOf()<t.valueOf())},yt.isBetween=function(e,a,t,s){var n=D(e)?e:Ha(e),r=D(a)?a:Ha(a);return!!(this.isValid()&&n.isValid()&&r.isValid())&&(("("===(s=s||"()")[0]?this.isAfter(n,t):!this.isBefore(n,t))&&(")"===s[1]?this.isBefore(r,t):!this.isAfter(r,t)))},yt.isSame=function(e,a){var t,s=D(e)?e:Ha(e);return!(!this.isValid()||!s.isValid())&&("millisecond"===(a=N(a)||"millisecond")?this.valueOf()===s.valueOf():(t=s.valueOf(),this.clone().startOf(a).valueOf()<=t&&t<=this.clone().endOf(a).valueOf()))},yt.isSameOrAfter=function(e,a){return this.isSame(e,a)||this.isAfter(e,a)},yt.isSameOrBefore=function(e,a){return this.isSame(e,a)||this.isBefore(e,a)},yt.isValid=function(){return Y(this)},yt.lang=tt,yt.locale=at,yt.localeData=st,yt.max=xa,yt.min=ja,yt.parsingFlags=function(){return l({},L(this))},yt.set=function(e,a){if("object"==typeof e)for(var t=function(e){var a,t=[];for(a in e)h(e,a)&&t.push({unit:a,priority:R[a]});return t.sort(function(e,a){return e.priority-a.priority}),t}(e=J(e)),s=0;s<t.length;s++)this[t[s].unit](e[t[s].unit]);else if(v(this[e=N(e)]))return this[e](a);return this},yt.startOf=function(e){var a,t;if(void 0===(e=N(e))||"millisecond"===e||!this.isValid())return this;switch(t=this._isUTC?it:dt,e){case"year":a=t(this.year(),0,1);break;case"quarter":a=t(this.year(),this.month()-this.month()%3,1);break;case"month":a=t(this.year(),this.month(),1);break;case"week":a=t(this.year(),this.month(),this.date()-this.weekday());break;case"isoWeek":a=t(this.year(),this.month(),this.date()-(this.isoWeekday()-1));break;case"day":case"date":a=t(this.year(),this.month(),this.date());break;case"hour":a=this._d.valueOf(),a-=rt(a+(this._isUTC?0:6e4*this.utcOffset()),36e5);break;case"minute":a=this._d.valueOf(),a-=rt(a,6e4);break;case"second":a=this._d.valueOf(),a-=rt(a,1e3);break}return this._d.setTime(a),M.updateOffset(this,!0),this},yt.subtract=$a,yt.toArray=function(){var e=this;return[e.year(),e.month(),e.date(),e.hour(),e.minute(),e.second(),e.millisecond()]},yt.toObject=function(){var e=this;return{years:e.year(),months:e.month(),date:e.date(),hours:e.hours(),minutes:e.minutes(),seconds:e.seconds(),milliseconds:e.milliseconds()}},yt.toDate=function(){return new Date(this.valueOf())},yt.toISOString=function(e){if(!this.isValid())return null;var a=!0!==e,t=a?this.clone().utc():this;return t.year()<0||9999<t.year()?A(t,a?"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYYYY-MM-DD[T]HH:mm:ss.SSSZ"):v(Date.prototype.toISOString)?a?this.toDate().toISOString():new Date(this.valueOf()+60*this.utcOffset()*1e3).toISOString().replace("Z",A(t,"Z")):A(t,a?"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYY-MM-DD[T]HH:mm:ss.SSSZ")},yt.inspect=function(){if(!this.isValid())return"moment.invalid(/* "+this._i+" */)";var e,a,t,s="moment",n="";return this.isLocal()||(s=0===this.utcOffset()?"moment.utc":"moment.parseZone",n="Z"),e="["+s+'("]',a=0<=this.year()&&this.year()<=9999?"YYYY":"YYYYYY",t=n+'[")]',this.format(e+a+"-MM-DD[T]HH:mm:ss.SSS"+t)},"undefined"!=typeof Symbol&&null!=Symbol.for&&(yt[Symbol.for("nodejs.util.inspect.custom")]=function(){return"Moment<"+this.format()+">"}),yt.toJSON=function(){return this.isValid()?this.toISOString():null},yt.toString=function(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")},yt.unix=function(){return Math.floor(this.valueOf()/1e3)},yt.valueOf=function(){return this._d.valueOf()-6e4*(this._offset||0)},yt.creationData=function(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}},yt.eraName=function(){for(var e,a=this.localeData().eras(),t=0,s=a.length;t<s;++t){if(e=this.clone().startOf("day").valueOf(),a[t].since<=e&&e<=a[t].until)return a[t].name;if(a[t].until<=e&&e<=a[t].since)return a[t].name}return""},yt.eraNarrow=function(){for(var e,a=this.localeData().eras(),t=0,s=a.length;t<s;++t){if(e=this.clone().startOf("day").valueOf(),a[t].since<=e&&e<=a[t].until)return a[t].narrow;if(a[t].until<=e&&e<=a[t].since)return a[t].narrow}return""},yt.eraAbbr=function(){for(var e,a=this.localeData().eras(),t=0,s=a.length;t<s;++t){if(e=this.clone().startOf("day").valueOf(),a[t].since<=e&&e<=a[t].until)return a[t].abbr;if(a[t].until<=e&&e<=a[t].since)return a[t].abbr}return""},yt.eraYear=function(){for(var e,a,t=this.localeData().eras(),s=0,n=t.length;s<n;++s)if(e=t[s].since<=t[s].until?1:-1,a=this.clone().startOf("day").valueOf(),t[s].since<=a&&a<=t[s].until||t[
vendor: 4,528 bytes, line 559
559s].until<=a&&a<=t[s].since)return(this.year()-M(t[s].since).year())*e+t[s].offset;return this.year()},yt.year=ze,yt.isLeapYear=function(){return I(this.year())},yt.weekYear=function(e){return ut.call(this,e,this.week(),this.weekday(),this.localeData()._week.dow,this.localeData()._week.doy)},yt.isoWeekYear=function(e){return ut.call(this,e,this.isoWeek(),this.isoWeekday(),1,4)},yt.quarter=yt.quarters=function(e){return null==e?Math.ceil((this.month()+1)/3):this.month(3*(e-1)+this.month()%3)},yt.month=Ae,yt.daysInMonth=function(){return Se(this.year(),this.month())},yt.week=yt.weeks=function(e){var a=this.localeData().week(this);return null==e?a:this.add(7*(e-a),"d")},yt.isoWeek=yt.isoWeeks=function(e){var a=Ce(this,1,4).week;return null==e?a:this.add(7*(e-a),"d")},yt.weeksInYear=function(){var e=this.localeData()._week;return Ie(this.year(),e.dow,e.doy)},yt.weeksInWeekYear=function(){var e=this.localeData()._week;return Ie(this.weekYear(),e.dow,e.doy)},yt.isoWeeksInYear=function(){return Ie(this.year(),1,4)},yt.isoWeeksInISOWeekYear=function(){return Ie(this.isoWeekYear(),1,4)},yt.date=lt,yt.day=yt.days=function(e){if(!this.isValid())return null!=e?this:NaN;var a,t,s=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=e?(a=e,t=this.localeData(),e="string"!=typeof a?a:isNaN(a)?"number"==typeof(a=t.weekdaysParse(a))?a:null:parseInt(a,10),this.add(e-s,"d")):s},yt.weekday=function(e){if(!this.isValid())return null!=e?this:NaN;var a=(this.day()+7-this.localeData()._week.dow)%7;return null==e?a:this.add(e-a,"d")},yt.isoWeekday=function(e){if(!this.isValid())return null!=e?this:NaN;if(null==e)return this.day()||7;var a,t,s=(a=e,t=this.localeData(),"string"==typeof a?t.weekdaysParse(a)%7||7:isNaN(a)?null:a);return this.day(this.day()%7?s:s-7)},yt.dayOfYear=function(e){var a=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return null==e?a:this.add(e-a,"d")},yt.hour=yt.hours=aa,yt.minute=yt.minutes=Mt,yt.second=yt.seconds=Lt,yt.millisecond=yt.milliseconds=ct,yt.utcOffset=function(e,a,t){var s,n=this._offset||0;if(!this.isValid())return null!=e?this:NaN;if(null==e)return this._isUTC?n:Ra(this);if("string"==typeof e){if(null===(e=Na(me,e)))return this}else Math.abs(e)<16&&!t&&(e*=60);return!this._isUTC&&a&&(s=Ra(this)),this._offset=e,this._isUTC=!0,null!=s&&this.add(s,"m"),n!==e&&(!a||this._changeInProgress?qa(this,Ga(e-n,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,M.updateOffset(this,!0),this._changeInProgress=null)),this},yt.utc=function(e){return this.utcOffset(0,e)},yt.local=function(e){return this._isUTC&&(this.utcOffset(0,e),this._isUTC=!1,e&&this.subtract(Ra(this),"m")),this},yt.parseZone=function(){var e;return null!=this._tzm?this.utcOffset(this._tzm,!1,!0):"string"==typeof this._i&&(null!=(e=Na(oe,this._i))?this.utcOffset(e):this.utcOffset(0,!0)),this},yt.hasAlignedHourOffset=function(e){return!!this.isValid()&&(e=e?Ha(e).utcOffset():0,(this.utcOffset()-e)%60==0)},yt.isDST=function(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()},yt.isLocal=function(){return!!this.isValid()&&!this._isUTC},yt.isUtcOffset=function(){return!!this.isValid()&&this._isUTC},yt.isUtc=Ca,yt.isUTC=Ca,yt.zoneAbbr=function(){return this._isUTC?"UTC":""},yt.zoneName=function(){return this._isUTC?"Coordinated Universal Time":""},yt.dates=t("dates accessor is deprecated. Use date instead.",lt),yt.months=t("months accessor is deprecated. Use month instead",Ae),yt.years=t("years accessor is deprecated. Use year instead",ze),yt.zone=t("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",function(e,a){return null!=e?("string"!=typeof e&&(e=-e),this.utcOffset(e,a),this):-this.utcOffset()}),yt.isDSTShifted=t("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",function(){if(!r(this._isDSTShifted))return this._isDSTShifted;var e,a={};return p(a,this),(a=ba(a))._a?(e=(a._isUTC?c:Ha)(a._a),this._isDSTShifted=this.isValid()&&0<function(e,a,t){for(var s=Math.min(e.length,a.length),n=Math.abs(e.length-a.length),r=0,d=0;d<s;d++)(t&&e[d]!==a[d]||!t&&G(e[d])!==G(a[d]))&&r++;return r+n}(a._a,e.toArray())):this._isDSTShifted=!1,this._isDSTShifted});var pt=S.prototype;function kt(e,a,t,s){var n=ua(),r=c().set(s,a);return n[t](r,e)}function Dt(e,a,t){if(m(e)&&(a=e,e=void 0),e=e||"",null!=a)return kt(e,a,t,"month");for(var s=[],n=0;n<12;n++)s[n]=kt(e,n,t,"month");return s}
vendor: 11,692 bytes, line 559
559function Tt(e,a,t,s){a=("boolean"==typeof e?m(a)&&(t=a,a=void 0):(a=e,e=!1,m(t=a)&&(t=a,a=void 0)),a||"");var n,r=ua(),d=e?r._week.dow:0,i=[];if(null!=t)return kt(a,(t+d)%7,s,"day");for(n=0;n<7;n++)i[n]=kt(a,(n+d)%7,s,"day");return i}pt.calendar=function(e,a,t){var s=this._calendar[e]||this._calendar.sameElse;return v(s)?s.call(a,t):s},pt.longDateFormat=function(e){var a=this._longDateFormat[e],t=this._longDateFormat[e.toUpperCase()];return a||!t?a:(this._longDateFormat[e]=t.match(j).map(function(e){return"MMMM"===e||"MM"===e||"DD"===e||"dddd"===e?e.slice(1):e}).join(""),this._longDateFormat[e])},pt.invalidDate=function(){return this._invalidDate},pt.ordinal=function(e){return this._ordinal.replace("%d",e)},pt.preparse=ft,pt.postformat=ft,pt.relativeTime=function(e,a,t,s){var n=this._relativeTime[t];return v(n)?n(e,a,t,s):n.replace(/%d/i,e)},pt.pastFuture=function(e,a){var t=this._relativeTime[0<e?"future":"past"];return v(t)?t(a):t.replace(/%s/i,a)},pt.set=function(e){var a,t;for(t in e)h(e,t)&&(v(a=e[t])?this[t]=a:this["_"+t]=a);this._config=e,this._dayOfMonthOrdinalParseLenient=new RegExp((this._dayOfMonthOrdinalParse.source||this._ordinalParse.source)+"|"+/\d{1,2}/.source)},pt.eras=function(e,a){for(var t,s=this._eras||ua("en")._eras,n=0,r=s.length;n<r;++n){switch(typeof s[n].since){case"string":t=M(s[n].since).startOf("day"),s[n].since=t.valueOf();break}switch(typeof s[n].until){case"undefined":s[n].until=1/0;break;case"string":t=M(s[n].until).startOf("day").valueOf(),s[n].until=t.valueOf();break}}return s},pt.erasParse=function(e,a,t){var s,n,r,d,i,_=this.eras();for(e=e.toUpperCase(),s=0,n=_.length;s<n;++s)if(r=_[s].name.toUpperCase(),d=_[s].abbr.toUpperCase(),i=_[s].narrow.toUpperCase(),t)switch(a){case"N":case"NN":case"NNN":if(d===e)return _[s];break;case"NNNN":if(r===e)return _[s];break;case"NNNNN":if(i===e)return _[s];break}else if(0<=[r,d,i].indexOf(e))return _[s]},pt.erasConvertYear=function(e,a){var t=e.since<=e.until?1:-1;return void 0===a?M(e.since).year():M(e.since).year()+(a-e.offset)*t},pt.erasAbbrRegex=function(e){return h(this,"_erasAbbrRegex")||ot.call(this),e?this._erasAbbrRegex:this._erasRegex},pt.erasNameRegex=function(e){return h(this,"_erasNameRegex")||ot.call(this),e?this._erasNameRegex:this._erasRegex},pt.erasNarrowRegex=function(e){return h(this,"_erasNarrowRegex")||ot.call(this),e?this._erasNarrowRegex:this._erasRegex},pt.months=function(e,a){return e?i(this._months)?this._months[e.month()]:this._months[(this._months.isFormat||xe).test(a)?"format":"standalone"][e.month()]:i(this._months)?this._months:this._months.standalone},pt.monthsShort=function(e,a){return e?i(this._monthsShort)?this._monthsShort[e.month()]:this._monthsShort[xe.test(a)?"format":"standalone"][e.month()]:i(this._monthsShort)?this._monthsShort:this._monthsShort.standalone},pt.monthsParse=function(e,a,t){var s,n,r;if(this._monthsParseExact)return function(e,a,t){var s,n,r,d=e.toLocaleLowerCase();if(!this._monthsParse)for(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[],s=0;s<12;++s)r=c([2e3,s]),this._shortMonthsParse[s]=this.monthsShort(r,"").toLocaleLowerCase(),this._longMonthsParse[s]=this.months(r,"").toLocaleLowerCase();return t?"MMM"===a?-1!==(n=ye.call(this._shortMonthsParse,d))?n:null:-1!==(n=ye.call(this._longMonthsParse,d))?n:null:"MMM"===a?-1!==(n=ye.call(this._shortMonthsParse,d))||-1!==(n=ye.call(this._longMonthsParse,d))?n:null:-1!==(n=ye.call(this._longMonthsParse,d))||-1!==(n=ye.call(this._shortMonthsParse,d))?n:null}.call(this,e,a,t);for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),s=0;s<12;s++){if(n=c([2e3,s]),t&&!this._longMonthsParse[s]&&(this._longMonthsParse[s]=new RegExp("^"+this.months(n,"").replace(".","")+"$","i"),this._shortMonthsParse[s]=new RegExp("^"+this.monthsShort(n,"").replace(".","")+"$","i")),t||this._monthsParse[s]||(r="^"+this.months(n,"")+"|^"+this.monthsShort(n,""),this._monthsParse[s]=new RegExp(r.replace(".",""),"i")),t&&"MMMM"===a&&this._longMonthsParse[s].test(e))return s;if(t&&"MMM"===a&&this._shortMonthsParse[s].test(e))return s;if(!t&&this._monthsParse[s].test(e))return s}},pt.monthsRegex=function(e){return this._monthsParseExact?(h(this,"_monthsRegex")||Ee.call(this),e?this._monthsStrictRegex:this._monthsRegex):(h(this,"_monthsRegex")||(this._monthsRegex=Oe),this._monthsStrictRegex&&e?this._monthsStrictRegex:this._monthsRegex)},pt.monthsShortRegex=function(e){return this._monthsParseExact?(h(this,"_monthsRegex")||Ee.call(this),e?this._monthsShortStrictRegex:this._monthsShortRegex):(h(this,"_monthsShortRegex")||(this._monthsShortRegex=Pe),this._monthsShortStrictRegex&&e?this._monthsShortStrictRegex:this._monthsShortRegex)},pt.week=function(e){return Ce(e,this._week.dow,this._week.doy).week},pt.firstDayOfYear=function(){return this._week.doy},pt.firstDayOfWeek=function(){return this._week.dow},pt.weekdays=function(e,a){var t=i(this._weekdays)?this._weekdays:this._weekdays[e&&!0!==e&&this._weekdays.isFormat.test(a)?"format":"standalone"];return!0===e?Ue(t,this._week.dow):e?t[e.day()]:t},pt.weekdaysMin=function(e){return!0===e?Ue(this._weekdaysMin,this._week.dow):e?this._weekdaysMin[e.day()]:this._weekdaysMin},pt.weekdaysShort=function(e){return!0===e?Ue(this._weekdaysShort,this._week.dow):e?this._weekdaysShort[e.day()]:this._weekdaysShort},pt.weekdaysParse=function(e,a,t){var s,n,r;if(this._weekdaysParseExact)return function(e,a,t){var s,n,r,d=e.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],s=0;s<7;++s)r=c([2e3,1]).day(s),this._minWeekdaysParse[s]=this.weekdaysMin(r,"").toLocaleLowerCase(),this._shortWeekdaysParse[s]=this.weekdaysShort(r,"").toLocaleLowerCase(),this._weekdaysParse[s]=this.weekdays(r,"").toLocaleLowerCase();return t?"dddd"===a?-1!==(n=ye.call(this._weekdaysParse,d))?n:null:"ddd"===a?-1!==(n=ye.call(this._shortWeekdaysParse,d))?n:null:-1!==(n=ye.call(this._minWeekdaysParse,d))?n:null:"dddd"===a?-1!==(n=ye.call(this._weekdaysParse,d))||-1!==(n=ye.call(this._shortWeekdaysParse,d))||-1!==(n=ye.call(this._minWeekdaysParse,d))?n:null:"ddd"===a?-1!==(n=ye.call(this._shortWeekdaysParse,d))||-1!==(n=ye.call(this._weekdaysParse,d))||-1!==(n=ye.call(this._minWeekdaysParse,d))?n:null:-1!==(n=ye.call(this._minWeekdaysParse,d))||-1!==(n=ye.call(this._weekdaysParse,d))||-1!==(n=ye.call(this._shortWeekdaysParse,d))?n:null}.call(this,e,a,t);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),s=0;s<7;s++){if(n=c([2e3,1]).day(s),t&&!this._fullWeekdaysParse[s]&&(this._fullWeekdaysParse[s]=new RegExp("^"+this.weekdays(n,"").replace(".","\\.?")+"$","i"),this._shortWeekdaysParse[s]=new RegExp("^"+this.weekdaysShort(n,"").replace(".","\\.?")+"$","i"),this._minWeekdaysParse[s]=new RegExp("^"+this.weekdaysMin(n,"").replace(".","\\.?")+"$","i")),this._weekdaysParse[s]||(r="^"+this.weekdays(n,"")+"|^"+this.weekdaysShort(n,"")+"|^"+this.weekdaysMin(n,""),this._weekdaysParse[s]=new RegExp(r.replace(".",""),"i")),t&&"dddd"===a&&this._fullWeekdaysParse[s].test(e))return s;if(t&&"ddd"===a&&this._shortWeekdaysParse[s].test(e))return s;if(t&&"dd"===a&&this._minWeekdaysParse[s].test(e))return s;if(!t&&this._weekdaysParse[s].test(e))return s}},pt.weekdaysRegex=function(e){return this._weekdaysParseExact?(h(this,"_weekdaysRegex")||$e.call(this),e?this._weekdaysStrictRegex:this._weekdaysRegex):(h(this,"_weekdaysRegex")||(this._weekdaysRegex=Ke),this._weekdaysStrictRegex&&e?this._weekdaysStrictRegex:this._weekdaysRegex)},pt.weekdaysShortRegex=function(e){return this._weekdaysParseExact?(h(this,"_weekdaysRegex")||$e.call(this),e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):(h(this,"_weekdaysShortRegex")||(this._weekdaysShortRegex=qe),this._weekdaysShortStrictRegex&&e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex)},pt.weekdaysMinRegex=function(e){return this._weekdaysParseExact?(h(this,"_weekdaysRegex")||$e.call(this),e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):(h(this,"_weekdaysMinRegex")||(this._weekdaysMinRegex=Ze),this._weekdaysMinStrictRegex&&e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex)},pt.isPM=function(e){return"p"===(e+"").toLowerCase().charAt(0)},pt.meridiem=function(e,a,t){return 11<e?t?"pm":"PM":t?"am":"AM"},oa("en",{eras:[{since:"0001-01-01",until:1/0,offset:1,name:"Anno Domini",narrow:"AD",abbr:"AD"},{since:"0000-12-31",until:-1/0,offset:1,name:"Before Christ",narrow:"BC",abbr:"BC"}],dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(e){var a=e%10;return e+(1===G(e%100/10)?"th":1==a?"st":2==a?"nd":3==a?"rd":"th")}}),M.lang=t("moment.lang is deprecated. Use moment.locale instead.",oa),M.langData=t("moment.langData is deprecated. Use moment.localeData instead.",ua);var gt=Math.abs;function wt(e,a,t,s){var n=Ga(a,t);return e._milliseconds+=s*n._milliseconds,e._days+=s*n._days,e._months+=s*n._months,e._bubble()}function vt(e){return e<0?Math.floor(e):Math.ceil(e)}function bt(e){return 4800*e/146097}function St(e){return 146097*e/4800}function Ht(e){return function(){return this.as(e)}}var jt=Ht("ms"),xt=Ht("s"),Pt=Ht("m"),Ot=Ht("h"),Wt=Ht("d"),At=Ht("w"),Et=Ht("M"),Ft=Ht("Q"),zt=Ht("y");function Nt(e){return function(){return this.isValid()?this._data[e]:NaN}}var Jt=Nt("milliseconds"),Rt=Nt("seconds"),Ct=Nt("minutes"),It=Nt("hours"),Ut=Nt("days"),Gt=Nt("months"),Vt=Nt("years");var Bt=Math.round,Kt={ss:44,s:45,m:45,h:22,d:26,w:null,M:11};function qt(e,a,t,s){var n=Ga(e).abs(),r=Bt(n.as("s")),d=Bt(n.as("m")),i=Bt(n.as("h")),_=Bt(n.as("d")),o=Bt(n.as("M")),m=Bt(n.as("w")),u=Bt(n.as("y")),l=(r<=t.ss?["s",r]:r<t.s&&["ss",r])||d<=1&&["m"]||d<t.m&&["mm",d]||i<=1&&["h"]||i<t.h&&["hh",i]||_<=1&&["d"]||_<t.d&&["dd",_];return null!=t.w&&(l=l||m<=1&&["w"]||m<t.w&&["ww",m]),(l=l||o<=1&&["M"]||o<t.M&&["MM",o]||u<=1&&["y"]||["yy",u])[2]=a,l[3]=0<+e,l[4]=s,function(e,a,t,s,n){return n.relativeTime(a||1,!!t,e,s)}.apply(null,l)}var Zt=Math.abs;function $t(e){return(0<e)-(e<0)||+e}function Qt(){if(!this.isValid())return this.localeData().invalidDate();var e,a,t,s,n,r,d,i,_=Zt(this._milliseconds)/1e3,o=Zt(this._days),m=Zt(this._months),u=this.asSeconds();return u?(e=U(_/60),a=U(e/60),_%=60,e%=60,t=U(m/12),m%=12,s=_?_.toFixed(3).replace(/\.?0+$/,""):"",n=u<0?"-":"",r=$t(this._months)!==$t(u)?"-":"",d=$t(this._days)!==$t(u)?"-":"",i=$t(this._milliseconds)!==$t(u)?"-":"",n+"P"+(t?r+t+"Y":"")+(m?r+m+"M":"")+(o?d+o+"D":"")+(a||e||_?"T":"")+(a?i+a+"H":"")+(e?i+e+"M":"")+(_?i+s+"S":"")):"P0D"}var Xt=Wa.prototype;Xt.isValid=function(){return this._isValid},Xt.abs=function(){var e=this._data;return this._milliseconds=gt(this._milliseconds),this._days=gt(this._days),this._months=gt(this._months),e.milliseconds=gt(e.milliseconds),e.seconds=gt(e.seconds),e.minutes=gt(e.minutes),e.hours=gt(e.hours),e.months=gt(e.months),e.years=gt(e.years),this},Xt.add=function(e,a){return wt(this,e,a,1)},Xt.subtract=function(e,a){return wt(this,e,a,-1)},Xt.as=function(e){if(!this.isValid())return NaN;var a,t,s=this._milliseconds;if("month"===(e=N(e))||"quarter"===e||"year"===e)switch(a=this._days+s/864e5,t=this._months+bt(a),e){case"month":return t;case"quarter":return t/3;case"year":return t/12}else switch(a=this._days+Math.round(St(this._months)),e){case"week":return a/7+s/6048e5;case"day":return a+s/864e5;case"hour":return 24*a+s/36e5;case"minute":return 1440*a+s/6e4;case"second":return 86400*a+s/1e3;case"millisecond":return Math.floor(864e5*a)+s;default:throw new Error("Unknown unit "+e)}},Xt.asMilliseconds=jt,Xt.asSeconds=xt,Xt.asMinutes=Pt,Xt.asHours=Ot,Xt.asDays=Wt,Xt.asWeeks=At,Xt.asMonths=Et,Xt.asQuarters=
559Ft,Xt.asYears=zt,Xt.valueOf=function(){return this.isValid()?this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*G(this._months/12):NaN},Xt._bubble=function(){var e,a,t,s,n,r=this._milliseconds,d=this._days,i=this._months,_=this._data;return 0<=r&&0<=d&&0<=i||r<=0&&d<=0&&i<=0||(r+=864e5*vt(St(i)+d),i=d=0),_.milliseconds=r%1e3,e=U(r/1e3),_.seconds=e%60,a=U(e/60),_.minutes=a%60,t=U(a/60),_.hours=t%24,d+=U(t/24),i+=n=U(bt(d)),d-=vt(St(n)),s=U(i/12),i%=12,_.days=d,_.months=i,_.years=s,this},Xt.clone=function(){return Ga(this)},Xt.get=function(e){return e=N(e),this.isValid()?this[e+"s"]():NaN},Xt.milliseconds=Jt,Xt.seconds=Rt,Xt.minutes=Ct,Xt.hours=It,Xt.days=Ut,Xt.weeks=function(){return U(this.days()/7)},Xt.months=Gt,Xt.years=Vt,Xt.humanize=function(e,a){if(!this.isValid())return this.localeData().invalidDate();var t,s,n=!1,r=Kt;return"object"==typeof e&&(a=e,e=!1),"boolean"==typeof e&&(n=e),"object"==typeof a&&(r=Object.assign({},Kt,a),null!=a.s&&null==a.ss&&(r.ss=a.s-1)),t=this.localeData(),s=qt(this,!n,r,t),n&&(s=t.pastFuture(+this,s)),t.postformat(s)},Xt.toISOString=Qt,Xt.toString=Qt,Xt.toJSON=Qt,Xt.locale=at,Xt.localeData=st,Xt.toIsoString=t("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",Qt),Xt.lang=tt,W("X",0,0,"unix"),W("x",0,0,"valueOf"),le("x",_e),le("X",/[+-]?\d+(\.\d{1,3})?/),Le("X",function(e,a,t){t._d=new Date(1e3*parseFloat(e))}),Le("x",function(e,a,t){t._d=new Date(G(e))}),M.version="2.29.1",e=Ha,M.fn=yt,M.min=function(){return Pa("isBefore",[].slice.call(arguments,0))},M.max=function(){return Pa("isAfter",[].slice.call(arguments,0))},M.now=function(){return Date.now?Date.now():+new Date},M.utc=c,M.unix=function(e){return Ha(1e3*e)},M.months=function(e,a){return Dt(e,a,"months")},M.isDate=d,M.locale=oa,M.invalid=y,M.duration=Ga,M.isMoment=D,M.weekdays=function(e,a,t){return Tt(e,a,t,"weekdays")},M.parseZone=function(){return Ha.apply(null,arguments).parseZone()},M.localeData=ua,M.isDuration=Aa,M.monthsShort=function(e,a){return Dt(e,a,"monthsShort")},M.weekdaysMin=function(e,a,t){return Tt(e,a,t,"weekdaysMin")},M.defineLocale=ma,M.updateLocale=function(e,a){var t,s,n;return null!=a?(n=sa,null!=na[e]&&null!=na[e].parentLocale?na[e].set(b(na[e]._config,a)):(null!=(s=_a(e))&&(n=s._config),a=b(n,a),null==s&&(a.abbr=e),(t=new S(a)).parentLocale=na[e],na[e]=t),oa(e)):null!=na[e]&&(null!=na[e].parentLocale?(na[e]=na[e].parentLocale,e===oa()&&oa(e)):null!=na[e]&&delete na[e]),na[e]},M.locales=function(){return s(na)},M.weekdaysShort=function(e,a,t){return Tt(e,a,t,"weekdaysShort")},M.normalizeUnits=N,M.relativeTimeRounding=function(e){return void 0===e?Bt:"function"==typeof e&&(Bt=e,!0)},M.relativeTimeThreshold=function(e,a){return void 0!==Kt[e]&&(void 0===a?Kt[e]:(Kt[e]=a,"s"===e&&(Kt.ss=a-1),!0))},M.calendarFormat=function(e,a){var t=e.diff(a,"days",!0);return t<-6?"sameElse":t<-1?"lastWeek":t<0?"lastDay":t<1?"sameDay":t<2?"nextDay":t<7?"nextWeek":"sameElse"},M.prototype=yt,M.HTML5_FMT={DATETIME_LOCAL:"YYYY-MM-DDTHH:mm",DATETIME_LOCAL_SECONDS:"YYYY-MM-DDTHH:mm:ss",DATETIME_LOCAL_MS:"YYYY-MM-DDTHH:mm:ss.SSS",DATE:"YYYY-MM-DD",TIME:"HH:mm",TIME_SECONDS:"HH:mm:ss",TIME_MS:"HH:mm:ss.SSS",WEEK:"GGGG-[W]WW",MONTH:"YYYY-MM"},M.defineLocale("af",{months:"Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember".split("_"),monthsShort:"Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des".split("_"),weekdays:"Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag".split("_"),weekdaysShort:"Son_Maa_Din_Woe_Don_Vry_Sat".split("_"),weekdaysMin:"So_Ma_Di_Wo_Do_Vr_Sa".split("_"),meridiemParse:/vm|nm/i,isPM:function(e){return/^nm$/i.test(e)},meridiem:function(e,a,t){return e<12?t?"vm":"VM":t?"nm":"NM"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Vandag om] LT",nextDay:"[M\xf4re om] LT",nextWeek:"dddd [om] LT",lastDay:"[Gister om] LT",lastWeek:"[Laas] dddd [om] LT",sameElse:"L"},relativeTime:{future:"oor %s",past:"%s gelede",s:"'n paar sekondes",ss:"%d sekondes",m:"'n minuut",mm:"%d minute",h:"'n uur",hh:"%d ure",d:"'n dag",dd:"%d dae",M:"'n maand",MM:"%d maande",y:"'n jaar",yy:"%d jaar"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(e){return e+(1===e||8===e||20<=e?"ste":"de")},week:{dow:1,doy:4}});function es(e){return 0===e?0:1===e?1:2===e?2:3<=e%100&&e%100<=10?3:11<=e%100?4:5}function as(d){return function(e,a,t,s){var n=es(e),r=ts[d][es(e)];return 2===n&&(r=r[a?0:1]),r.replace(/%d/i,e)}}var ts={s:["\u0623\u0642\u0644 \u0645\u0646 \u062b\u0627\u0646\u064a\u0629","\u062b\u0627\u0646\u064a\u0629 \u0648\u0627\u062d\u062f\u0629",["\u062b\u0627\u0646\u064a\u062a\u0627\u0646","\u062b\u0627\u0646\u064a\u062a\u064a\u0646"],"%d \u062b\u0648\u0627\u0646","%d \u062b\u0627\u0646\u064a\u0629","%d \u062b\u0627\u0646\u064a\u0629"],m:["\u0623\u0642\u0644 \u0645\u0646 \u062f\u0642\u064a\u0642\u0629","\u062f\u0642\u064a\u0642\u0629 \u0648\u0627\u062d\u062f\u0629",["\u062f\u0642\u064a\u0642\u062a\u0627\u0646","\u062f\u0642\u064a\u0642\u062a\u064a\u0646"],"%d \u062f\u0642\u0627\u0626\u0642","%d \u062f\u0642\u064a\u0642\u0629","%d \u062f\u0642\u064a\u0642\u0629"],h:["\u0623\u0642\u0644 \u0645\u0646 \u0633\u0627\u0639\u0629","\u0633\u0627\u0639\u0629 \u0648\u0627\u062d\u062f\u0629",["\u0633\u0627\u0639\u062a\u0627\u0646","\u0633\u0627\u0639\u062a\u064a\u0646"],"%d \u0633\u0627\u0639\u0627\u062a","%d \u0633\u0627\u0639\u0629","%d \u0633\u0627\u0639\u0629"],d:["\u0623\u0642\u0644 \u0645\u0646 \u064a\u0648\u0645","\u064a\u0648\u0645 \u0648\u0627\u062d\u062f",["\u064a\u0648\u0645\u0627\u0646","\u064a\u0648\u0645\u064a\u0646"],"%d \u0623\u064a\u0627\u0645","%d \u064a\u0648\u0645\u064b\u0627","%d \u064a\u0648\u0645"],M:["\u0623\u0642\u0644 \u0645\u0646 \u0634\u0647\u0631","\u0634\u0647\u0631 \u0648\u0627\u062d\u062f",["\u0634\u0647\u0631\u0627\u0646","\u0634\u0647\u0631\u064a\u0646"],"%d \u0623\u0634\u0647\u0631","%d \u0634\u0647\u0631\u0627","%d \u0634\u0647\u0631"],y:["\u0623\u0642\u0644 \u0645\u0646 \u0639\u0627\u0645","\u0639\u0627\u0645 \u0648\u0627\u062d\u062f",["\u0639\u0627\u0645\u0627\u0646","\u0639\u0627\u0645\u064a\u0646"],"%d \u0623\u0639\u0648\u0627\u0645","%d \u0639\u0627\u0645\u064b\u0627","%d \u0639\u0627\u0645"]}
vendor: 14,432 bytes, line 559
559,ss=["\u062c\u0627\u0646\u0641\u064a","\u0641\u064a\u0641\u0631\u064a","\u0645\u0627\u0631\u0633","\u0623\u0641\u0631\u064a\u0644","\u0645\u0627\u064a","\u062c\u0648\u0627\u0646","\u062c\u0648\u064a\u0644\u064a\u0629","\u0623\u0648\u062a","\u0633\u0628\u062a\u0645\u0628\u0631","\u0623\u0643\u062a\u0648\u0628\u0631","\u0646\u0648\u0641\u0645\u0628\u0631","\u062f\u064a\u0633\u0645\u0628\u0631"];M.defineLocale("ar-dz",{months:ss,monthsShort:ss,weekdays:"\u0627\u0644\u0623\u062d\u062f_\u0627\u0644\u0625\u062b\u0646\u064a\u0646_\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621_\u0627\u0644\u062e\u0645\u064a\u0633_\u0627\u0644\u062c\u0645\u0639\u0629_\u0627\u0644\u0633\u0628\u062a".split("_"),weekdaysShort:"\u0623\u062d\u062f_\u0625\u062b\u0646\u064a\u0646_\u062b\u0644\u0627\u062b\u0627\u0621_\u0623\u0631\u0628\u0639\u0627\u0621_\u062e\u0645\u064a\u0633_\u062c\u0645\u0639\u0629_\u0633\u0628\u062a".split("_"),weekdaysMin:"\u062d_\u0646_\u062b_\u0631_\u062e_\u062c_\u0633".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/\u200fM/\u200fYYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/\u0635|\u0645/,isPM:function(e){return"\u0645"===e},meridiem:function(e,a,t){return e<12?"\u0635":"\u0645"},calendar:{sameDay:"[\u0627\u0644\u064a\u0648\u0645 \u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextDay:"[\u063a\u062f\u064b\u0627 \u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextWeek:"dddd [\u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastDay:"[\u0623\u0645\u0633 \u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastWeek:"dddd [\u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",sameElse:"L"},relativeTime:{future:"\u0628\u0639\u062f %s",past:"\u0645\u0646\u0630 %s",s:as("s"),ss:as("s"),m:as("m"),mm:as("m"),h:as("h"),hh:as("h"),d:as("d"),dd:as("d"),M:as("M"),MM:as("M"),y:as("y"),yy:as("y")},postformat:function(e){return e.replace(/,/g,"\u060c")},week:{dow:0,doy:4}}),M.defineLocale("ar-kw",{months:"\u064a\u0646\u0627\u064a\u0631_\u0641\u0628\u0631\u0627\u064a\u0631_\u0645\u0627\u0631\u0633_\u0623\u0628\u0631\u064a\u0644_\u0645\u0627\u064a_\u064a\u0648\u0646\u064a\u0648_\u064a\u0648\u0644\u064a\u0648\u0632_\u063a\u0634\u062a_\u0634\u062a\u0646\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0646\u0628\u0631_\u062f\u062c\u0646\u0628\u0631".split("_"),monthsShort:"\u064a\u0646\u0627\u064a\u0631_\u0641\u0628\u0631\u0627\u064a\u0631_\u0645\u0627\u0631\u0633_\u0623\u0628\u0631\u064a\u0644_\u0645\u0627\u064a_\u064a\u0648\u0646\u064a\u0648_\u064a\u0648\u0644\u064a\u0648\u0632_\u063a\u0634\u062a_\u0634\u062a\u0646\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0646\u0628\u0631_\u062f\u062c\u0646\u0628\u0631".split("_"),weekdays:"\u0627\u0644\u0623\u062d\u062f_\u0627\u0644\u0625\u062a\u0646\u064a\u0646_\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621_\u0627\u0644\u062e\u0645\u064a\u0633_\u0627\u0644\u062c\u0645\u0639\u0629_\u0627\u0644\u0633\u0628\u062a".split("_"),weekdaysShort:"\u0627\u062d\u062f_\u0627\u062a\u0646\u064a\u0646_\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0631\u0628\u0639\u0627\u0621_\u062e\u0645\u064a\u0633_\u062c\u0645\u0639\u0629_\u0633\u0628\u062a".split("_"),weekdaysMin:"\u062d_\u0646_\u062b_\u0631_\u062e_\u062c_\u0633".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[\u0627\u0644\u064a\u0648\u0645 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextDay:"[\u063a\u062f\u0627 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextWeek:"dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastDay:"[\u0623\u0645\u0633 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastWeek:"dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",sameElse:"L"},relativeTime:{future:"\u0641\u064a %s",past:"\u0645\u0646\u0630 %s",s:"\u062b\u0648\u0627\u0646",ss:"%d \u062b\u0627\u0646\u064a\u0629",m:"\u062f\u0642\u064a\u0642\u0629",mm:"%d \u062f\u0642\u0627\u0626\u0642",h:"\u0633\u0627\u0639\u0629",hh:"%d \u0633\u0627\u0639\u0627\u062a",d:"\u064a\u0648\u0645",dd:"%d \u0623\u064a\u0627\u0645",M:"\u0634\u0647\u0631",MM:"%d \u0623\u0634\u0647\u0631",y:"\u0633\u0646\u0629",yy:"%d \u0633\u0646\u0648\u0627\u062a"},week:{dow:0,doy:12}});function ns(e){return 0===e?0:1===e?1:2===e?2:3<=e%100&&e%100<=10?3:11<=e%100?4:5}function rs(d){return function(e,a,t,s){var n=ns(e),r=is[d][ns(e)];return 2===n&&(r=r[a?0:1]),r.replace(/%d/i,e)}}var ds={1:"1",2:"2",3:"3",4:"4",5:"5",6:"6",7:"7",8:"8",9:"9",0:"0"},is={s:["\u0623\u0642\u0644 \u0645\u0646 \u062b\u0627\u0646\u064a\u0629","\u062b\u0627\u0646\u064a\u0629 \u0648\u0627\u062d\u062f\u0629",["\u062b\u0627\u0646\u064a\u062a\u0627\u0646","\u062b\u0627\u0646\u064a\u062a\u064a\u0646"],"%d \u062b\u0648\u0627\u0646","%d \u062b\u0627\u0646\u064a\u0629","%d \u062b\u0627\u0646\u064a\u0629"],m:["\u0623\u0642\u0644 \u0645\u0646 \u062f\u0642\u064a\u0642\u0629","\u062f\u0642\u064a\u0642\u0629 \u0648\u0627\u062d\u062f\u0629",["\u062f\u0642\u064a\u0642\u062a\u0627\u0646","\u062f\u0642\u064a\u0642\u062a\u064a\u0646"],"%d \u062f\u0642\u0627\u0626\u0642","%d \u062f\u0642\u064a\u0642\u0629","%d \u062f\u0642\u064a\u0642\u0629"],h:["\u0623\u0642\u0644 \u0645\u0646 \u0633\u0627\u0639\u0629","\u0633\u0627\u0639\u0629 \u0648\u0627\u062d\u062f\u0629",["\u0633\u0627\u0639\u062a\u0627\u0646","\u0633\u0627\u0639\u062a\u064a\u0646"],"%d \u0633\u0627\u0639\u0627\u062a","%d \u0633\u0627\u0639\u0629","%d \u0633\u0627\u0639\u0629"],d:["\u0623\u0642\u0644 \u0645\u0646 \u064a\u0648\u0645","\u064a\u0648\u0645 \u0648\u0627\u062d\u062f",["\u064a\u0648\u0645\u0627\u0646","\u064a\u0648\u0645\u064a\u0646"],"%d \u0623\u064a\u0627\u0645","%d \u064a\u0648\u0645\u064b\u0627","%d \u064a\u0648\u0645"],M:["\u0623\u0642\u0644 \u0645\u0646 \u0634\u0647\u0631","\u0634\u0647\u0631 \u0648\u0627\u062d\u062f",["\u0634\u0647\u0631\u0627\u0646","\u0634\u0647\u0631\u064a\u0646"],"%d \u0623\u0634\u0647\u0631","%d \u0634\u0647\u0631\u0627","%d \u0634\u0647\u0631"],y:["\u0623\u0642\u0644 \u0645\u0646 \u0639\u0627\u0645","\u0639\u0627\u0645 \u0648\u0627\u062d\u062f",["\u0639\u0627\u0645\u0627\u0646","\u0639\u0627\u0645\u064a\u0646"],"%d \u0623\u0639\u0648\u0627\u0645","%d \u0639\u0627\u0645\u064b\u0627","%d \u0639\u0627\u0645"]},_s=["\u064a\u0646\u0627\u064a\u0631","\u0641\u0628\u0631\u0627\u064a\u0631","\u0645\u0627\u0631\u0633","\u0623\u0628\u0631\u064a\u0644","\u0645\u0627\u064a\u0648","\u064a\u0648\u0646\u064a\u0648","\u064a\u0648\u0644\u064a\u0648","\u0623\u063a\u0633\u0637\u0633","\u0633\u0628\u062a\u0645\u0628\u0631","\u0623\u0643\u062a\u0648\u0628\u0631","\u0646\u0648\u0641\u0645\u0628\u0631","\u062f\u064a\u0633\u0645\u0628\u0631"];M.defineLocale("ar-ly",{months:_s,monthsShort:_s,weekdays:"\u0627\u0644\u0623\u062d\u062f_\u0627\u0644\u0625\u062b\u0646\u064a\u0646_\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621_\u0627\u0644\u062e\u0645\u064a\u0633_\u0627\u0644\u062c\u0645\u0639\u0629_\u0627\u0644\u0633\u0628\u062a".split("_"),weekdaysShort:"\u0623\u062d\u062f_\u0625\u062b\u0646\u064a\u0646_\u062b\u0644\u0627\u062b\u0627\u0621_\u0623\u0631\u0628\u0639\u0627\u0621_\u062e\u0645\u064a\u0633_\u062c\u0645\u0639\u0629_\u0633\u0628\u062a".split("_"),weekdaysMin:"\u062d_\u0646_\u062b_\u0631_\u062e_\u062c_\u0633".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/\u200fM/\u200fYYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/\u0635|\u0645/,isPM:function(e){return"\u0645"===e},meridiem:function(e,a,t){return e<12?"\u0635":"\u0645"},calendar:{sameDay:"[\u0627\u0644\u064a\u0648\u0645 \u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextDay:"[\u063a\u062f\u064b\u0627 \u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextWeek:"dddd [\u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastDay:"[\u0623\u0645\u0633 \u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastWeek:"dddd [\u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",sameElse:"L"},relativeTime:{future:"\u0628\u0639\u062f %s",past:"\u0645\u0646\u0630 %s",s:rs("s"),ss:rs("s"),m:rs("m"),mm:rs("m"),h:rs("h"),hh:rs("h"),d:rs("d"),dd:rs("d"),M:rs("M"),MM:rs("M"),y:rs("y"),yy:rs("y")},preparse:function(e){return e.replace(/\u060c/g,",")},postformat:function(e){return e.replace(/\d/g,function(e){return ds[e]}).replace(/,/g,"\u060c")},week:{dow:6,doy:12}}),M.defineLocale("ar-ma",{months:"\u064a\u0646\u0627\u064a\u0631_\u0641\u0628\u0631\u0627\u064a\u0631_\u0645\u0627\u0631\u0633_\u0623\u0628\u0631\u064a\u0644_\u0645\u0627\u064a_\u064a\u0648\u0646\u064a\u0648_\u064a\u0648\u0644\u064a\u0648\u0632_\u063a\u0634\u062a_\u0634\u062a\u0646\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0646\u0628\u0631_\u062f\u062c\u0646\u0628\u0631".split("_"),monthsShort:"\u064a\u0646\u0627\u064a\u0631_\u0641\u0628\u0631\u0627\u064a\u0631_\u0645\u0627\u0631\u0633_\u0623\u0628\u0631\u064a\u0644_\u0645\u0627\u064a_\u064a\u0648\u0646\u064a\u0648_\u064a\u0648\u0644\u064a\u0648\u0632_\u063a\u0634\u062a_\u0634\u062a\u0646\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0646\u0628\u0631_\u062f\u062c\u0646\u0628\u0631".split("_"),weekdays:"\u0627\u0644\u0623\u062d\u062f_\u0627\u0644\u0625\u062b\u0646\u064a\u0646_\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621_\u0627\u0644\u062e\u0645\u064a\u0633_\u0627\u0644\u062c\u0645\u0639\u0629_\u0627\u0644\u0633\u0628\u062a".split("_"),weekdaysShort:"\u0627\u062d\u062f_\u0627\u062b\u0646\u064a\u0646_\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0631\u0628\u0639\u0627\u0621_\u062e\u0645\u064a\u0633_\u062c\u0645\u0639\u0629_\u0633\u0628\u062a".split("_"),weekdaysMin:"\u062d_\u0646_\u062b_\u0631_\u062e_\u062c_\u0633".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[\u0627\u0644\u064a\u0648\u0645 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextDay:"[\u063a\u062f\u0627 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextWeek:"dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastDay:"[\u0623\u0645\u0633 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastWeek:"dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",sameElse:"L"},relativeTime:{future:"\u0641\u064a %s",past:"\u0645\u0646\u0630 %s",s:"\u062b\u0648\u0627\u0646",ss:"%d \u062b\u0627\u0646\u064a\u0629",m:"\u062f\u0642\u064a\u0642\u0629",mm:"%d \u062f\u0642\u0627\u0626\u0642",h:"\u0633\u0627\u0639\u0629",hh:"%d \u0633\u0627\u0639\u0627\u062a",d:"\u064a\u0648\u0645",dd:"%d \u0623\u064a\u0627\u0645",M:"\u0634\u0647\u0631",MM:"%d \u0623\u0634\u0647\u0631",y:"\u0633\u0646\u0629",yy:"%d \u0633\u0646\u0648\u0627\u062a"},week:{dow:1,doy:4}});var os={1:"\u0661",2:"\u0662",3:"\u0663",4:"\u0664",5:"\u0665",6:"\u0666",7:"\u0667",8:"\u0668",9:"\u0669",0:"\u0660"},ms={"\u0661":"1","\u0662":"2","\u0663":"3","\u0664":"4","\u0665":"5","\u0666":"6","\u0667":"7","\u0668":"8","\u0669":"9","\u0660":"0"};M.defineLocale("ar-sa",{months:"\u064a\u0646\u0627\u064a\u0631_\u0641\u0628\u0631\u0627\u064a\u0631_\u0645\u0627\u0631\u0633_\u0623\u0628\u0631\u064a\u0644_\u0645\u0627\u064a\u0648_\u064a\u0648\u0646\u064a\u0648_\u064a\u0648\u0644\u064a\u0648_\u0623\u063a\u0633\u0637\u0633_\u0633\u0628\u062a\u0645\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0641\u0645\u0628\u0631_\u062f\u064a\u0633\u0645\u0628\u0631".split("_"),monthsShort:"\u064a\u0646\u0627\u064a\u0631_\u0641\u0628\u0631\u0627\u064a\u0631_\u0645\u0627\u0631\u0633_\u0623\u0628\u0631\u064a\u0644_\u0645\u0627\u064a\u0648_\u064a\u0648\u0646\u064a\u0648_\u064a\u0648\u0644\u064a\u0648_\u0623\u063a\u0633\u0637\u0633_\u0633\u0628\u062a\u0645\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0641\u0645\u0628\u0631_\u062f\u064a\u0633\u0645\u0628\u0631".split("_"),weekdays:"\u0627\u0644\u0623\u062d\u062f_\u0627\u0644\u0625\u062b\u0646\u064a\u0646_\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621_\u0627\u0644\u062e\u0645\u064a\u0633_\u0627\u0644\u062c\u0645\u0639\u0629_\u0627\u0644\u0633\u0628\u062a".split("_"),weekdaysShort:"\u0623\u062d\u062f_\u0625\u062b\u0646\u064a\u0646_\u062b\u0644\u0627\u062b\u0627\u0621_\u0623\u0631\u0628\u0639\u0627\u0621_\u062e\u0645\u064a\u0633_\u062c\u0645\u0639\u0629_\u0633\u0628\u062a".split("_"),weekdaysMin:"\u062d_\u0646_\u062b_\u0631_\u062e_\u062c_\u0633".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/\u0635|\u0645/,isPM:function(e){return"\u0645"===e},meridiem:function(e,a,t){return e<12?"\u0635":"\u0645"},calendar:{sameDay:"[\u0627\u0644\u064a\u0648\u0645 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextDay:"[\u063a\u062f\u0627 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextWeek:"dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastDay:"[\u0623\u0645\u0633 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastWeek:"dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",sameElse:"L"},relativeTime:{future:"\u0641\u064a %s",past:"\u0645\u0646\u0630 %s",s:"\u062b\u0648\u0627\u0646",ss:"%d \u062b\u0627\u0646\u064a\u0629",m:"\u062f\u0642\u064a\u0642\u0629",mm:"%d \u062f\u0642\u0627\u0626\u0642",h:"\u0633\u0627\u0639\u0629",hh:"%d \u0633\u0627\u0639\u0627\u062a",d:"\u064a\u0648\u0645",dd:"%d \u0623\u064a\u0627\u0645",M:"\u0634\u0647\u0631",MM:"%d \u0623\u0634\u0647\u0631",y:"\u0633\u0646\u0629",yy:"%d \u0633\u0646\u0648\u0627\u062a"},preparse:function(e){return e.replace(/[\u0661\u0662\u0663\u0664\u0665\u0666\u0667\u0668\u0669\u0660]/g,function(e){return ms[e]}).replace(/\u060c/g,",")},postformat:function(e){return e.replace(/\d/g,function(e){return os[e]}).replace(/,/g,"\u060c")},week:{dow:0,doy:6}}),M.defineLocale("ar-tn",{months:"\u062c\u0627\u0646\u0641\u064a_\u0641\u064a\u064
5591\u0631\u064a_\u0645\u0627\u0631\u0633_\u0623\u0641\u0631\u064a\u0644_\u0645\u0627\u064a_\u062c\u0648\u0627\u0646_\u062c\u0648\u064a\u0644\u064a\u0629_\u0623\u0648\u062a_\u0633\u0628\u062a\u0645\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0641\u0645\u0628\u0631_\u062f\u064a\u0633\u0645\u0628\u0631".split("_"),monthsShort:"\u062c\u0627\u0646\u0641\u064a_\u0641\u064a\u0641\u0631\u064a_\u0645\u0627\u0631\u0633_\u0623\u0641\u0631\u064a\u0644_\u0645\u0627\u064a_\u062c\u0648\u0627\u0646_\u062c\u0648\u064a\u0644\u064a\u0629_\u0623\u0648\u062a_\u0633\u0628\u062a\u0645\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0641\u0645\u0628\u0631_\u062f\u064a\u0633\u0645\u0628\u0631".split("_"),weekdays:"\u0627\u0644\u0623\u062d\u062f_\u0627\u0644\u0625\u062b\u0646\u064a\u0646_\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621_\u0627\u0644\u062e\u0645\u064a\u0633_\u0627\u0644\u062c\u0645\u0639\u0629_\u0627\u0644\u0633\u0628\u062a".split("_"),weekdaysShort:"\u0623\u062d\u062f_\u0625\u062b\u0646\u064a\u0646_\u062b\u0644\u0627\u062b\u0627\u0621_\u0623\u0631\u0628\u0639\u0627\u0621_\u062e\u0645\u064a\u0633_\u062c\u0645\u0639\u0629_\u0633\u0628\u062a".split("_"),weekdaysMin:"\u062d_\u0646_\u062b_\u0631_\u062e_\u062c_\u0633".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[\u0627\u0644\u064a\u0648\u0645 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextDay:"[\u063a\u062f\u0627 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextWeek:"dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastDay:"[\u0623\u0645\u0633 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastWeek:"dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",sameElse:"L"},relativeTime:{future:"\u0641\u064a %s",past:"\u0645\u0646\u0630 %s",s:"\u062b\u0648\u0627\u0646",ss:"%d \u062b\u0627\u0646\u064a\u0629",m:"\u062f\u0642\u064a\u0642\u0629",mm:"%d \u062f\u0642\u0627\u0626\u0642",h:"\u0633\u0627\u0639\u0629",hh:"%d \u0633\u0627\u0639\u0627\u062a",d:"\u064a\u0648\u0645",dd:"%d \u0623\u064a\u0627\u0645",M:"\u0634\u0647\u0631",MM:"%d \u0623\u0634\u0647\u0631",y:"\u0633\u0646\u0629",yy:"%d \u0633\u0646\u0648\u0627\u062a"},week:{dow:1,doy:4}});function us(e){return 0===e?0:1===e?1:2===e?2:3<=e%100&&e%100<=10?3:11<=e%100?4:5}function ls(d){return function(e,a,t,s){var n=us(e),r=cs[d][us(e)];return 2===n&&(r=r[a?0:1]),r.replace(/%d/i,e)}}var Ms={1:"\u0661",2:"\u0662",3:"\u0663",4:"\u0664",5:"\u0665",6:"\u0666",7:"\u0667",8:"\u0668",9:"\u0669",0:"\u0660"},hs={"\u0661":"1","\u0662":"2","\u0663":"3","\u0664":"4","\u0665":"5","\u0666":"6","\u0667":"7","\u0668":"8","\u0669":"9","\u0660":"0"},cs={s:["\u0623\u0642\u0644 \u0645\u0646 \u062b\u0627\u0646\u064a\u0629","\u062b\u0627\u0646\u064a\u0629 \u0648\u0627\u062d\u062f\u0629",["\u062b\u0627\u0646\u064a\u062a\u0627\u0646","\u062b\u0627\u0646\u064a\u062a\u064a\u0646"],"%d \u062b\u0648\u0627\u0646","%d \u062b\u0627\u0646\u064a\u0629","%d \u062b\u0627\u0646\u064a\u0629"],m:["\u0623\u0642\u0644 \u0645\u0646 \u062f\u0642\u064a\u0642\u0629","\u062f\u0642\u064a\u0642\u0629 \u0648\u0627\u062d\u062f\u0629",["\u062f\u0642\u064a\u0642\u062a\u0627\u0646","\u062f\u0642\u064a\u0642\u062a\u064a\u0646"],"%d \u062f\u0642\u0627\u0626\u0642","%d \u062f\u0642\u064a\u0642\u0629","%d \u062f\u0642\u064a\u0642\u0629"],h:["\u0623\u0642\u0644 \u0645\u0646 \u0633\u0627\u0639\u0629","\u0633\u0627\u0639\u0629 \u0648\u0627\u062d\u062f\u0629",["\u0633\u0627\u0639\u062a\u0627\u0646","\u0633\u0627\u0639\u062a\u064a\u0646"],"%d \u0633\u0627\u0639\u0627\u062a","%d \u0633\u0627\u0639\u0629","%d \u0633\u0627\u0639\u0629"],d:["\u0623\u0642\u0644 \u0645\u0646 \u064a\u0648\u0645","\u064a\u0648\u0645 \u0648\u0627\u062d\u062f",["\u064a\u0648\u0645\u0627\u0646","\u064a\u0648\u0645\u064a\u0646"],"%d \u0623\u064a\u0627\u0645","%d \u064a\u0648\u0645\u064b\u0627","%d \u064a\u0648\u0645"],M:["\u0623\u0642\u0644 \u0645\u0646 \u0634\u0647\u0631","\u0634\u0647\u0631 \u0648\u0627\u062d\u062f",["\u0634\u0647\u0631\u0627\u0646","\u0634\u0647\u0631\u064a\u0646"],"%d \u0623\u0634\u0647\u0631","%d \u0634\u0647\u0631\u0627","%d \u0634\u0647\u0631"],y:["\u0623\u0642\u0644 \u0645\u0646 \u0639\u0627\u0645","\u0639\u0627\u0645 \u0648\u0627\u062d\u062f",["\u0639\u0627\u0645\u0627\u0646","\u0639\u0627\u0645\u064a\u0646"],"%d \u0623\u0639\u0648\u0627\u0645","%d \u0639\u0627\u0645\u064b\u0627","%d \u0639\u0627\u0645"]},Ls=["\u064a\u0646\u0627\u064a\u0631","\u0641\u0628\u0631\u0627\u064a\u0631","\u0645\u0627\u0631\u0633","\u0623\u0628\u0631\u064a\u0644","\u0645\u0627\u064a\u0648","\u064a\u0648\u0646\u064a\u0648","\u064a\u0648\u0644\u064a\u0648","\u0623\u063a\u0633\u0637\u0633","\u0633\u0628\u062a\u0645\u0628\u0631","\u0623\u0643\u062a\u0648\u0628\u0631","\u0646\u0648\u0641\u0645\u0628\u0631","\u062f\u064a\u0633\u0645\u0628\u0631"];M.defineLocale("ar",{months:Ls,monthsShort:Ls,weekdays:"\u0627\u0644\u0623\u062d\u062f_\u0627\u0644\u0625\u062b\u0646\u064a\u0646_\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621_\u0627\u0644\u062e\u0645\u064a\u0633_\u0627\u0644\u062c\u0645\u0639\u0629_\u0627\u0644\u0633\u0628\u062a".split("_"),weekdaysShort:"\u0623\u062d\u062f_\u0625\u062b\u0646\u064a\u0646_\u062b\u0644\u0627\u062b\u0627\u0621_\u0623\u0631\u0628\u0639\u0627\u0621_\u062e\u0645\u064a\u0633_\u062c\u0645\u0639\u0629_\u0633\u0628\u062a".split("_"),weekdaysMin:"\u062d_\u0646_\u062b_\u0631_\u062e_\u062c_\u0633".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/\u200fM/\u200fYYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/\u0635|\u0645/,isPM:function(e){return"\u0645"===e},meridiem:function(e,a,t){return e<12?"\u0635":"\u0645"},calendar:{sameDay:"[\u0627\u0644\u064a\u0648\u0645 \u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextDay:"[\u063a\u062f\u064b\u0627 \u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextWeek:"dddd [\u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastDay:"[\u0623\u0645\u0633 \u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastWeek:"dddd [\u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",sameElse:"L"},relativeTime:{future:"\u0628\u0639\u062f %s",past:"\u0645\u0646\u0630 %s",s:ls("s"),ss:ls("s"),m:ls("m"),mm:ls("m"),h:ls("h"),hh:ls("h"),d:ls("d"),dd:ls("d"),M:ls("M"),MM:ls("M"),y:ls("y"),yy:ls("y")},preparse:function(e){return e.replace(/[\u0661\u0662\u0663\u0664\u0665\u0666\u0667\u0668\u0669\u0660]/g,function(e){return hs[e]}).replace(/\u060c/g,",")},postformat:function(e){return e.replace(/\d/g,function(e){return Ms[e]}).replace(/,/g,"\u060c")},week:{dow:6,doy:12}});var Ys={1:"-inci",5:"-inci",8:"-inci",70:"-inci",80:"-inci",2:"-nci",7:"-nci",20:"-nci",50:"-nci",3:"-\xfcnc\xfc",4:"-\xfcnc\xfc",100:"-\xfcnc\xfc",6:"-nc\u0131",9:"-uncu",10:"-uncu",30:"-uncu",60:"-\u0131nc\u0131",90:"-\u0131nc\u0131"};function ys(e,a,t){var s,n;return"m"===t?a?"\u0445\u0432\u0456\u043b\u0456\u043d\u0430":"\u0445\u0432\u0456\u043b\u0456\u043d\u0443":"h"===t?a?"\u0433\u0430\u0434\u0437\u0456\u043d\u0430":"\u0433\u0430\u0434\u0437\u0456\u043d\u0443":e+" "+(s=+e,n={ss:a?"\u0441\u0435\u043a\u0443\u043d\u0434\u0430_\u0441\u0435\u043a\u0443\u043d\u0434\u044b_\u0441\u0435\u043a\u0443\u043d\u0434":"\u0441\u0435\u043a\u0443\u043d\u0434\u0443_\u0441\u0435\u043a\u0443\u043d\u0434\u044b_\u0441\u0435\u043a\u0443\u043d\u0434",mm:a?"\u0445\u0432\u0456\u043b\u0456\u043d\u0430_\u0445\u0432\u0456\u043b\u0456\u043d\u044b_\u0445\u0432\u0456\u043b\u0456\u043d":"\u0445\u0432\u0456\u043b\u0456\u043d\u0443_\u0445\u0432\u0456\u043b\u0456\u043d\u044b_\u0445\u0432\u0456\u043b\u0456\u043d",hh:a?"\u0433\u0430\u0434\u0437\u0456\u043d\u0430_\u0433\u0430\u0434\u0437\u0456\u043d\u044b_\u0433\u0430\u0434\u0437\u0456\u043d":"\u0433\u0430\u0434\u0437\u0456\u043d\u0443_\u0433\u0430\u0434\u0437\u0456\u043d\u044b_\u0433\u0430\u0434\u0437\u0456\u043d",dd:"\u0434\u0437\u0435\u043d\u044c_\u0434\u043d\u0456_\u0434\u0437\u0451\u043d",MM:"\u043c\u0435\u0441\u044f\u0446_\u043c\u0435\u0441\u044f\u0446\u044b_\u043c\u0435\u0441\u044f\u0446\u0430\u045e",yy:"\u0433\u043e\u0434_\u0433\u0430\u0434\u044b_\u0433\u0430\u0434\u043e\u045e"}[t].split("_"),s%10==1&&s%100!=11?n[0]:2<=s%10&&s%10<=4&&(s%100<10||20<=s%100)?n[1]:n[2])}M.defineLocale("az",{months:"yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr".split("_"),monthsShort:"yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek".split("_"),weekdays:"Bazar_Bazar ert\u0259si_\xc7\u0259r\u015f\u
5590259nb\u0259 ax\u015fam\u0131_\xc7\u0259r\u015f\u0259nb\u0259_C\xfcm\u0259 ax\u015fam\u0131_C\xfcm\u0259_\u015e\u0259nb\u0259".split("_"),weekdaysShort:"Baz_BzE_\xc7Ax_\xc7\u0259r_CAx_C\xfcm_\u015e\u0259n".split("_"),weekdaysMin:"Bz_BE_\xc7A_\xc7\u0259_CA_C\xfc_\u015e\u0259".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[bug\xfcn saat] LT",nextDay:"[sabah saat] LT",nextWeek:"[g\u0259l\u0259n h\u0259ft\u0259] dddd [saat] LT",lastDay:"[d\xfcn\u0259n] LT",lastWeek:"[ke\xe7\u0259n h\u0259ft\u0259] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s sonra",past:"%s \u0259vv\u0259l",s:"bir ne\xe7\u0259 saniy\u0259",ss:"%d saniy\u0259",m:"bir d\u0259qiq\u0259",mm:"%d d\u0259qiq\u0259",h:"bir saat",hh:"%d saat",d:"bir g\xfcn",dd:"%d g\xfcn",M:"bir ay",MM:"%d ay",y:"bir il",yy:"%d il"},meridiemParse:/gec\u0259|s\u0259h\u0259r|g\xfcnd\xfcz|ax\u015fam/,isPM:function(e){return/^(g\xfcnd\xfcz|ax\u015fam)$/.test(e)},meridiem:function(e,a,t){return e<4?"gec\u0259":e<12?"s\u0259h\u0259r":e<17?"g\xfcnd\xfcz":"ax\u015fam"},dayOfMonthOrdinalParse:/\d{1,2}-(\u0131nc\u0131|inci|nci|\xfcnc\xfc|nc\u0131|uncu)/,ordinal:function(e){if(0===e)return e+"-\u0131nc\u0131";var a=e%10;return e+(Ys[a]||Ys[e%100-a]||Ys[100<=e?100:null])},week:{dow:1,doy:7}}),M.defineLocale("be",{months:{format:"\u0441\u0442\u0443\u0434\u0437\u0435\u043d\u044f_\u043b\u044e\u0442\u0430\u0433\u0430_\u0441\u0430\u043a\u0430\u0432\u0456\u043a\u0430_\u043a\u0440\u0430\u0441\u0430\u0432\u0456\u043a\u0430_\u0442\u0440\u0430\u045e\u043d\u044f_\u0447\u044d\u0440\u0432\u0435\u043d\u044f_\u043b\u0456\u043f\u0435\u043d\u044f_\u0436\u043d\u0456\u045e\u043d\u044f_\u0432\u0435\u0440\u0430\u0441\u043d\u044f_\u043a\u0430\u0441\u0442\u0440\u044b\u0447\u043d\u0456\u043a\u0430_\u043b\u0456\u0441\u0442\u0430\u043f\u0430\u0434\u0430_\u0441\u043d\u0435\u0436\u043d\u044f".split("_"),standalone:"\u0441\u0442\u0443\u0434\u0437\u0435\u043d\u044c_\u043b\u044e\u0442\u044b_\u0441\u0430\u043a\u0430\u0432\u0456\u043a_\u043a\u0440\u0430\u0441\u0430\u0432\u0456\u043a_\u0442\u0440\u0430\u0432\u0435\u043d\u044c_\u0447\u044d\u0440\u0432\u0435\u043d\u044c_\u043b\u0456\u043f\u0435\u043d\u044c_\u0436\u043d\u0456\u0432\u0435\u043d\u044c_\u0432\u0435\u0440\u0430\u0441\u0435\u043d\u044c_\u043a\u0430\u0441\u0442\u0440\u044b\u0447\u043d\u0456\u043a_\u043b\u0456\u0441\u0442\u0430\u043f\u0430\u0434_\u0441\u043d\u0435\u0436\u0430\u043d\u044c".split("_")},monthsShort:"\u0441\u0442\u0443\u0434_\u043b\u044e\u0442_\u0441\u0430\u043a_\u043a\u0440\u0430\u0441_\u0442\u0440\u0430\u0432_\u0447\u044d\u0440\u0432_\u043b\u0456\u043f_\u0436\u043d\u0456\u0432_\u0432\u0435\u0440_\u043a\u0430\u0441\u0442_\u043b\u0456\u0441\u0442_\u0441\u043d\u0435\u0436".
vendor: 7,259 bytes, line 559
559split("_"),weekdays:{format:"\u043d\u044f\u0434\u0437\u0435\u043b\u044e_\u043f\u0430\u043d\u044f\u0434\u0437\u0435\u043b\u0430\u043a_\u0430\u045e\u0442\u043e\u0440\u0430\u043a_\u0441\u0435\u0440\u0430\u0434\u0443_\u0447\u0430\u0446\u0432\u0435\u0440_\u043f\u044f\u0442\u043d\u0456\u0446\u0443_\u0441\u0443\u0431\u043e\u0442\u0443".split("_"),standalone:"\u043d\u044f\u0434\u0437\u0435\u043b\u044f_\u043f\u0430\u043d\u044f\u0434\u0437\u0435\u043b\u0430\u043a_\u0430\u045e\u0442\u043e\u0440\u0430\u043a_\u0441\u0435\u0440\u0430\u0434\u0430_\u0447\u0430\u0446\u0432\u0435\u0440_\u043f\u044f\u0442\u043d\u0456\u0446\u0430_\u0441\u0443\u0431\u043e\u0442\u0430".split("_"),isFormat:/\[ ?[\u0423\u0443\u045e] ?(?:\u043c\u0456\u043d\u0443\u043b\u0443\u044e|\u043d\u0430\u0441\u0442\u0443\u043f\u043d\u0443\u044e)? ?\] ?dddd/},weekdaysShort:"\u043d\u0434_\u043f\u043d_\u0430\u0442_\u0441\u0440_\u0447\u0446_\u043f\u0442_\u0441\u0431".split("_"),weekdaysMin:"\u043d\u0434_\u043f\u043d_\u0430\u0442_\u0441\u0440_\u0447\u0446_\u043f\u0442_\u0441\u0431".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY \u0433.",LLL:"D MMMM YYYY \u0433., HH:mm",LLLL:"dddd, D MMMM YYYY \u0433., HH:mm"},calendar:{sameDay:"[\u0421\u0451\u043d\u043d\u044f \u045e] LT",nextDay:"[\u0417\u0430\u045e\u0442\u0440\u0430 \u045e] LT",lastDay:"[\u0423\u0447\u043e\u0440\u0430 \u045e] LT",nextWeek:function(){return"[\u0423] dddd [\u045e] LT"},lastWeek:function(){switch(this.day()){case 0:case 3:case 5:case 6:return"[\u0423 \u043c\u0456\u043d\u0443\u043b\u0443\u044e] dddd [\u045e] LT";case 1:case 2:case 4:return"[\u0423 \u043c\u0456\u043d\u0443\u043b\u044b] dddd [\u045e] LT"}},sameElse:"L"},relativeTime:{future:"\u043f\u0440\u0430\u0437 %s",past:"%s \u0442\u0430\u043c\u0443",s:"\u043d\u0435\u043a\u0430\u043b\u044c\u043a\u0456 \u0441\u0435\u043a\u0443\u043d\u0434",m:ys,mm:ys,h:ys,hh:ys,d:"\u0434\u0437\u0435\u043d\u044c",dd:ys,M:"\u043c\u0435\u0441\u044f\u0446",MM:ys,y:"\u0433\u043e\u0434",yy:ys},meridiemParse:/\u043d\u043e\u0447\u044b|\u0440\u0430\u043d\u0456\u0446\u044b|\u0434\u043d\u044f|\u0432\u0435\u0447\u0430\u0440\u0430/,isPM:function(e){return/^(\u0434\u043d\u044f|\u0432\u0435\u0447\u0430\u0440\u0430)$/.test(e)},meridiem:function(e,a,t){return e<4?"\u043d\u043e\u0447\u044b":e<12?"\u0440\u0430\u043d\u0456\u0446\u044b":e<17?"\u0434\u043d\u044f":"\u0432\u0435\u0447\u0430\u0440\u0430"},dayOfMonthOrdinalParse:/\d{1,2}-(\u0456|\u044b|\u0433\u0430)/,ordinal:function(e,a){switch(a){case"M":case"d":case"DDD":case"w":case"W":return e%10!=2&&e%10!=3||e%100==12||e%100==13?e+"-\u044b":e+"-\u0456";case"D":return e+"-\u0433\u0430";default:return e}},week:{dow:1,doy:7}}),M.defineLocale("bg",{months:"\u044f\u043d\u0443\u0430\u0440\u0438_\u0444\u0435\u0432\u0440\u0443\u0430\u0440\u0438_\u043c\u0430\u0440\u0442_\u0430\u043f\u0440\u0438\u043b_\u043c\u0430\u0439_\u044e\u043d\u0438_\u044e\u043b\u0438_\u0430\u0432\u0433\u0443\u0441\u0442_\u0441\u0435\u043f\u0442\u0435\u043c\u0432\u0440\u0438_\u043e\u043a\u0442\u043e\u043c\u0432\u0440\u0438_\u043d\u043e\u0435\u043c\u0432\u0440\u0438_\u0434\u0435\u043a\u0435\u043c\u0432\u0440\u0438".split("_"),monthsShort:"\u044f\u043d\u0443_\u0444\u0435\u0432_\u043c\u0430\u0440_\u0430\u043f\u0440_\u043c\u0430\u0439_\u044e\u043d\u0438_\u044e\u043b\u0438_\u0430\u0432\u0433_\u0441\u0435\u043f_\u043e\u043a\u0442_\u043d\u043e\u0435_\u0434\u0435\u043a".split("_"),weekdays:"\u043d\u0435\u0434\u0435\u043b\u044f_\u043f\u043e\u043d\u0435\u0434\u0435\u043b\u043d\u0438\u043a_\u0432\u0442\u043e\u0440\u043d\u0438\u043a_\u0441\u0440\u044f\u0434\u0430_\u0447\u0435\u0442\u0432\u044a\u0440\u0442\u044a\u043a_\u043f\u0435\u0442\u044a\u043a_\u0441\u044a\u0431\u043e\u0442\u0430".split("_"),weekdaysShort:"\u043d\u0435\u0434_\u043f\u043e\u043d_\u0432\u0442\u043e_\u0441\u0440\u044f_\u0447\u0435\u0442_\u043f\u0435\u0442_\u0441\u044a\u0431".split("_"),weekdaysMin:"\u043d\u0434_\u043f\u043d_\u0432\u0442_\u0441\u0440_\u0447\u0442_\u043f\u0442_\u0441\u0431".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"D.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[\u0414\u043d\u0435\u0441 \u0432] LT",nextDay:"[\u0423\u0442\u0440\u0435 \u0432] LT",nextWeek:"dddd [\u0432] LT",lastDay:"[\u0412\u0447\u0435\u0440\u0430 \u0432] LT",lastWeek:function(){switch(this.day()){case 0:case 3:case 6:return"[\u041c\u0438\u043d\u0430\u043b\u0430\u0442\u0430] dddd [\u0432] LT";case 1:case 2:case 4:case 5:return"[\u041c\u0438\u043d\u0430\u043b\u0438\u044f] dddd [\u0432] LT"}},sameElse:"L"},relativeTime:{future:"\u0441\u043b\u0435\u0434 %s",past:"\u043f\u0440\u0435\u0434\u0438 %s",s:"\u043d\u044f\u043a\u043e\u043b\u043a\u043e \u0441\u0435\u043a\u0443\u043d\u0434\u0438",ss:"%d \u0441\u0435\u043a\u0443\u043d\u0434\u0438",m:"\u043c\u0438\u043d\u0443\u0442\u0430",mm:"%d \u043c\u0438\u043d\u0443\u0442\u0438",h:"\u0447\u0430\u0441",hh:"%d \u0447\u0430\u0441\u0430",d:"\u0434\u0435\u043d",dd:"%d \u0434\u0435\u043d\u0430",w:"\u0441\u0435\u0434\u043c\u0438\u0446\u0430",ww:"%d \u0441\u0435\u0434\u043c\u0438\u0446\u0438",M:"\u043c\u0435\u0441\u0435\u0446",MM:"%d \u043c\u0435\u0441\u0435\u0446\u0430",y:"\u0433\u043e\u0434\u0438\u043d\u0430",yy:"%d \u0433\u043e\u0434\u0438\u043d\u0438"},dayOfMonthOrdinalParse:/\d{1,2}-(\u0435\u0432|\u0435\u043d|\u0442\u0438|\u0432\u0438|\u0440\u0438|\u043c\u0438)/,ordinal:function(e){var a=e%10,t=e%100;return 0===e?e+"-\u0435\u0432":0==t?e+"-\u0435\u043d":10<t&&t<20?e+"-\u0442\u0438":1==a?e+"-\u0432\u0438":2==a?e+"-\u0440\u0438":7==a||8==a?e+"-\u043c\u0438":e+"-\u0442\u0438"},week:{dow:1,doy:7}}),M.defineLocale("bm",{months:"Zanwuyekalo_Fewuruyekalo_Marisikalo_Awirilikalo_M\u025bkalo_Zuw\u025bnkalo_Zuluyekalo_Utikalo_S\u025btanburukalo_\u0254kut\u0254burukalo_Nowanburukalo_Desanburukalo".split("_"),monthsShort:"Zan_Few_Mar_Awi_M\u025b_Zuw_Zul_Uti_S\u025bt_\u0254ku_Now_Des".split("_"),weekdays:"Kari_Nt\u025bn\u025bn_Tarata_Araba_Alamisa_Juma_Sibiri".split("_"),weekdaysShort:"Kar_Nt\u025b_Tar_Ara_Ala_Jum_Sib".split("_"),weekdaysMin:"Ka_Nt_Ta_Ar_Al_Ju_Si".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"MMMM [tile] D [san] YYYY",LLL:"MMMM [tile] D [san] YYYY [l\u025br\u025b] HH:mm",LLLL:"dddd MMMM [tile] D [san] YYYY [l\u025br\u025b] HH:mm"},calendar:{sameDay:"[Bi l\u025br\u025b] LT",nextDay:"[Sini l\u025br\u025b] LT",nextWeek:"dddd [don l\u025br\u025b] LT",lastDay:"[Kunu l\u025br\u025b] LT",lastWeek:"dddd [t\u025bm\u025bnen l\u025br\u025b] LT",sameElse:"L"},relativeTime:{future:"%s k\u0254n\u0254",past:"a b\u025b %s b\u0254",s:"sanga dama dama",ss:"sekondi %d",m:"miniti kelen",mm:"miniti %d",h:"l\u025br\u025b kelen",hh:"l\u025br\u025b %d",d:"tile kelen",dd:"tile %d",M:"kalo kelen",MM:"kalo %d",y:"san kelen",yy:"san %d"},week:{dow:1,doy:4}});var fs={1:"\u09e7",2:"\u09e8",3:"\u09e9",4:"\u09ea",5:"\u09eb",6:"\u09ec",7:"\u09ed",8:"\u09ee",9:"\u09ef",0:"\u09e6"},ps={"\u09e7":"1","\u09e8":"2","\u09e9":"3","\u09ea":"4","\u09eb":"5","\u09ec":"6","\u09ed":"7","\u09ee":"8","\u09ef":"9","\u09e6":"0"};M.defineLocale("bn-bd",{months:"\u099c\u09be\u09a8\u09c1\u09df\u09be\u09b0\u09bf_\u09ab\u09c7\u09ac\u09cd\u09b0\u09c1\u09df\u09be\u09b0\u09bf_\u09ae\u09be\u09b0\u09cd\u099a_\u098f\u09aa\u09cd\u09b0\u09bf\u09b2_\u
55909ae\u09c7_\u099c\u09c1\u09a8_\u099c\u09c1\u09b2\u09be\u0987_\u0986\u0997\u09b8\u09cd\u099f_\u09b8\u09c7\u09aa\u09cd\u099f\u09c7\u09ae\u09cd\u09ac\u09b0_\u0985\u0995\u09cd\u099f\u09cb\u09ac\u09b0_\u09a8\u09ad\u09c7\u09ae\u09cd\u09ac\u09b0_\u09a1\u09bf\u09b8\u09c7\u09ae\u09cd\u09ac\u09b0".split("_"),monthsShort:"\u099c\u09be\u09a8\u09c1_\u09ab\u09c7\u09ac\u09cd\u09b0\u09c1_\u09ae\u09be\u09b0\u09cd\u099a_\u098f\u09aa\u09cd\u09b0\u09bf\u09b2_\u09ae\u09c7_\u099c\u09c1\u09a8_\u099c\u09c1\u09b2\u09be\u0987_\u0986\u0997\u09b8\u09cd\u099f_\u09b8\u09c7\u09aa\u09cd\u099f_\u0985\u0995\u09cd\u099f\u09cb_\u09a8\u09ad\u09c7_\u09a1\u09bf\u09b8\u09c7".split("_"),weekdays:"\u09b0\u09ac\u09bf\u09ac\u09be\u09b0_\u09b8\u09cb\u09ae\u09ac\u09be\u09b0_\u09ae\u0999\u09cd\u0997\u09b2\u09ac\u09be\u09b0_\u09ac\u09c1\u09a7\u09ac\u09be\u09b0_\u09ac\u09c3\u09b9\u09b8\u09cd\u09aa\u09a4\u09bf\u09ac\u09be\u09b0_\u09b6\u09c1\u0995\u09cd\u09b0\u09ac\u09be\u09b0_\u09b6\u09a8\u09bf\u09ac\u09be\u09b0".split("_"),weekdaysShort:"\u09b0\u09ac\u09bf_\u09b8\u09cb\u09ae_\u09ae\u0999\u09cd\u0997\u09b2_\u09ac\u09c1\u09a7_\u09ac\u09c3\u09b9\u09b8\u09cd\u09aa\u09a4\u09bf_\u09b6\u09c1\u0995\u09cd\u09b0_\u09b6\u09a8\u09bf".split("_"),weekdaysMin:"\u09b0\u09ac\u09bf_\u09b8\u09cb\u09ae_\u09ae\u0999\u09cd\u0997\u09b2_\u09ac\u09c1\u09a7_\u09ac\u09c3\u09b9_\u09b6\u09c1\u0995\u09cd\u09b0_\u09b6\u09a8\u09bf".split("_"),longDateFormat:{LT:"A h:mm \u09b8\u09ae\u09df",LTS:"A h:mm:ss \u09b8\u09ae\u09df",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm \u09b8\u09ae\u09df",LLLL:"dddd, D MMMM YYYY, A h:mm \u09b8\u09ae\u09df"},calendar:{sameDay:"[\u0986\u099c] LT",nextDay:"[\u0986\u0997\u09be\u09ae\u09c0\u0995\u09be\u09b2] LT",nextWeek:"dddd, LT",lastDay:"[\u0997\u09a4\u0995\u09be\u09b2] LT",lastWeek:"[\u0997\u09a4] dddd, LT",sameElse:"L"},relativeTime:{future:"%s \u09aa\u09b0\u09c7",past:"%s \u0986\u0997\u09c7",s:"\u0995\u09df\u09c7\u0995 \u09b8\u09c7\u0995\u09c7\u09a8\u09cd\u09a1",ss:"%d \u09b8\u09c7\u0995\u09c7\u09a8\u09cd\u09a1",m:"\u098f\u0995 \u09ae\u09bf\u09a8\u09bf\u099f",mm:"%d \u09ae\u09bf\u09a8\u09bf\u099f",h:"\u098f\u0995 \u0998\u09a8\u09cd\u099f\u09be",hh:"%d \u0998\u09a8\u09cd\u099f\u09be",d:"\u098f\u0995 \u09a6\u09bf\u09a8",dd:"%d \u09a6\u09bf\u09a8",M:"\u098f\u0995 \u09ae\u09be\u09b8",MM:"%d \u09ae\u09be\u09b8",y:"\u098f\u0995 \u09ac\u099b\u09b0",yy:"%d \u09ac\u099b\u09b0"},preparse:function(e){return e.replace(/[\u09e7\u09e8\u09e9\u09ea\u09eb\u09ec\u09ed\u09ee\u09ef\u09e6]/g,function(e){return ps[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return fs[e]})},meridiemParse:/\u09b0\u09be\u09a4|\u09ad\u09cb\u09b0|\u09b8\u0995\u09be\u09b2|\u09a6\u09c1\u09aa\u09c1\u09b0|\u09ac\u09bf\u0995\u09be\u09b2|\u09b8\u09a8\u09cd\u09a7\u09cd\u09af\u09be|\u09b0\u09be\u09a4/,meridiemHour:function(e,a){return 12===e&&(e=0),"\u09b0\u09be\u09a4"===a?e<4?e:e+12:"\u09ad\u09cb\u09b0"===a||"\u09b8\u0995\u09be\u09b2"===a?e:"\u09a6\u09c1\u09aa\u09c1\u09b0"===a?3<=e?e:e+12:"\u09ac\u09bf\u0995\u09be\u09b2"===a||"\u09b8\u09a8\u09cd\u09a7\u09cd\u09af\u09be"===a?e+12:void 0},meridiem:function(e,a,t){return e<4?"\u09b0\u09be\u09a4":e<6?"\u09ad\u09cb\u09b0":e<12?"\u09b8\u0995\u09be\u09b2":e<15?"\u09a6\u09c1\u09aa\u09c1\u09b0":e<18?"\u09ac\u09bf\u0995\u09be\u09b2":e<20?"\u09b8\u09a8\u09cd\u09a7\u09cd\u09af\u09be":"\u09b0\u09be\u09a4"},week:{dow:0,doy:6}});var ks={1:"\u09e7",2:"\u09e8",3:"\u09e9",4:"\u09ea",5:"\u09eb",6:"\u09ec",7:"\u09ed",8:"\u09ee",9:"\u09ef",0:"\u09e6"},Ds={"\u09e7":"1","\u09e8":"2","\u09e9":"3","\u09ea":"4","\u09eb":"5","\u09ec":"6","\u09ed":"7","\u09ee":"8","\u09ef":"9","\u09e6":"0"};M.defineLocale("bn",{months:"\u099c\u09be\u09a8\u09c1\u09df\u09be\u09b0\u09bf_\u09ab\u09c7\u09ac\u09cd\u09b0\u09c1\u09df\u09be\u09b0\u09bf_\u09ae\u09be\u09b0\u09cd\u099a_\u098f\u09aa\u09cd\u09b0\u09bf\u09b2_\u09ae\u09c7_\u099c\u09c1\u09a8_\u099c\u09c1\u09b2\u09be\u0987_\u0986\u0997\u09b8\u09cd\u099f_\u09b8\u09c7\u09aa\u09cd\u099f\u09c7\u09ae\u09cd\u09ac\u09b0_\u0985\u0995\u09cd\u099f\u09cb\u09ac\u09b0_\u09a8\u09ad\u09c7\u09ae\u09cd\u09ac\u09b0_\u09a1\u09bf\u09b8\u09c7\u09ae\u09cd\u09ac\u09b0".split("_"),monthsShort:"\u099c\u09be\u09a8\u09c1_\u09ab\u09c7\u09ac\u09cd\u09b0\u09c1_\u09ae\u09be\u09b0\u09cd\u099a_\u098f\u09aa\u09cd\u09b0\u09bf\u09b2_\u
55909ae\u09c7_\u099c\u09c1\u09a8_\u099c\u09c1\u09b2\u09be\u0987_\u0986\u0997\u09b8\u09cd\u099f_\u09b8\u09c7\u09aa\u09cd\u099f_\u0985\u0995\u09cd\u099f\u09cb_\u09a8\u09ad\u09c7_\u09a1\u09bf\u09b8\u09c7".split("_"),weekdays:"\u09b0\u09ac\u09bf\u09ac\u09be\u09b0_\u09b8\u09cb\u09ae\u09ac\u09be\u09b0_\u09ae\u0999\u09cd\u0997\u09b2\u09ac\u09be\u09b0_\u09ac\u09c1\u09a7\u09ac\u09be\u09b0_\u09ac\u09c3\u09b9\u09b8\u09cd\u09aa\u09a4\u09bf\u09ac\u09be\u09b0_\u09b6\u09c1\u0995\u09cd\u09b0\u09ac\u09be\u09b0_\u09b6\u09a8\u09bf\u09ac\u09be\u09b0".split("_"),weekdaysShort:"\u09b0\u09ac\u09bf_\u09b8\u09cb\u09ae_\u09ae\u0999\u09cd\u0997\u09b2_\u09ac\u09c1\u09a7_\u09ac\u09c3\u09b9\u09b8\u09cd\u09aa\u09a4\u09bf_\u09b6\u09c1\u0995\u09cd\u09b0_\u09b6\u09a8\u09bf".split("_"),weekdaysMin:"\u09b0\u09ac\u09bf_\u09b8\u09cb\u09ae_\u09ae\u0999\u09cd\u0997\u09b2_\u09ac\u09c1\u09a7_\u09ac\u09c3\u09b9_\u09b6\u09c1\u0995\u09cd\u09b0_\u09b6\u09a8\u09bf".split("_"),longDateFormat:{LT:"A h:mm \u09b8\u09ae\u09df",LTS:"A h:mm:ss \u09b8\u09ae\u09df",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm \u09b8\u09ae\u09df",LLLL:"dddd, D MMMM YYYY, A h:mm \u09b8\u09ae\u09df"},calendar:{sameDay:"[\u0986\u099c] LT",nextDay:"[\u0986\u0997\u09be\u09ae\u09c0\u0995\u09be\u09b2] LT",nextWeek:"dddd, LT",lastDay:"[\u0997\u09a4\u0995\u09be\u09b2] LT",lastWeek:"[\u0997\u09a4] dddd, LT",sameElse:"L"},relativeTime:{future:"%s \u09aa\u09b0\u09c7",past:"%s \u0986\u0997\u09c7",s:"\u0995\u09df\u09c7\u0995 \u09b8\u09c7\u0995\u09c7\u09a8\u09cd\u09a1",ss:"%d \u09b8\u09c7\u0995\u09c7\u09a8\u09cd\u09a1",m:"\u098f\u0995 \u09ae\u09bf\u09a8\u09bf\u099f",mm:"%d \u09ae\u09bf\u09a8\u09bf\u099f",h:"\u098f\u0995 \u0998\u09a8\u09cd\u099f\u09be",hh:"%d \u0998\u09a8\u09cd\u099f\u09be",d:"\u098f\u0995 \u09a6\u09bf\u09a8",dd:"%d \u09a6\u09bf\u09a8",M:"\u098f\u0995 \u09ae\u09be\u09b8",MM:"%d \u09ae\u09be\u09b8",y:"\u098f\u0995 \u09ac\u099b\u09b0",yy:"%d \u09ac\u099b\u09b0"},preparse:function(e){return e.replace(/[\u09e7\u09e8\u09e9\u09ea\u09eb\u09ec\u09ed\u09ee\u09ef\u09e6]/g,function(e){return Ds[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return ks[e]})},meridiemParse:/\u09b0\u09be\u09a4|\u09b8\u0995\u09be\u09b2|\u09a6\u09c1\u09aa\u09c1\u09b0|\u09ac\u09bf\u0995\u09be\u09b2|\u09b0\u09be\u09a4/,meridiemHour:function(e,a){return 12===e&&(e=0),"\u09b0\u09be\u09a4"===a&&4<=e||"\u09a6\u09c1\u09aa\u09c1\u09b0"===a&&e<5||"\u09ac\u09bf\u0995\u09be\u09b2"===a?e+12:e},meridiem:function(e,a,t){return e<4?"\u09b0\u09be\u09a4":e<10?"\u09b8\u0995\u09be\u09b2":e<17?"\u09a6\u09c1\u09aa\u09c1\u09b0":e<20?"\u09ac\u09bf\u0995\u09be\u09b2":"\u09b0\u09be\u09a4"},week:{dow:0,doy:6}});var Ts={1:"\u0f21",2:"\u0f22",3:"\u0f23",4:"\u0f24",5:"\u0f25",6:"\u0f26",7:"\u0f27",8:"\u0f28",9:"\u0f29",0:"\u0f20"},gs={"\u0f21":"1","\u0f22":"2","\u0f23":"3","\u0f24":"4","\u0f25":"5","\u0f26":"6","\u0f27":"7","\u0f28":"8","\u0f29":"9","\u0f20":"0"};function ws(e,a,t){var s;return e+" "+(s={mm:"munutenn",MM:"miz",dd:"devezh"}[t],2!==e?s:function(e){var a={m:"v",b:"v",d:"z"};return void 0!==a[e.charAt(0)]?a[e.charAt(0)]+e.substring(1):e}(s))}M.defineLocale("bo",{months:"\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f51\u0f44\u0f0b\u0f54\u0f7c_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f42\u0f49\u0f72\u0f66\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f42\u0f66\u0f74\u0f58\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f5e\u0f72\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f63\u0f94\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f51\u0fb2\u0f74\u0f42\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f51\u0f74\u0f53\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f62\u0f92\u0fb1\u0f51\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f51\u0f42\u0f74\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f45\u0f74\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f45\u0f74\u0f0b\u0f42\u0f45\u0f72\u0f42\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f45\u0f74\u0f0b\u0f42\u0f49\u0f72\u0f66\u0f0b\u0f54".split("_"),monthsShort:"\u0f5f\u0fb3\u0f0b1_\u0f5f\u0fb3\u0f0b2_\u0f5f\u0fb3\u0f0b3_\u0f5f\u0fb3\u0f0b4_\u0f5f\u0fb3\u0f0b5_\u0f5f\u0fb3\u0f0b6_\u0f5f\u0fb3\u0f0b7_\u0f5f\u0fb3\u0f0b8_\u0f5f\u0fb3\u0f0b9_\u0f5f\u0fb3\u0f0b10_\u0f5f\u0fb3\u0f0b11_\u0f5f\u0fb3\u0f0b12".split("_"),monthsShortRegex:/^(\u0f5f\u0fb3\u0f0b\d{1,2})/,monthsParseExact:!0,weekdays:"\u0f42\u0f5f\u0f60\u0f0b\u0f49\u0f72\u0f0b\u0f58\u0f0b_\u0f42\u0f5f\u0f60\u0f0b\u0f5f\u0fb3\u0f0b\u0f56\u0f0b_\u0f42\u0f5f\u0f60\u0f0b\u0f58\u0f72\u0f42\u0f0b\u0f51\u0f58\u0f62\u0f0b_\u0f42\u0f5f\u0f60\u0f0b\u0f63\u0fb7\u0f42\u0f0b\u0f54\u0f0b_\u0f42\u0f5f\u0f60\u0f0b\u0f55\u0f74\u0f62\u0f0b\u0f56\u0f74_\u0f42\u0f5f\u0f60\u0f0b\u0f54\u0f0b\u0f66\u0f44\u0f66\u0f0b_\u0f42\u0f5f\u0f60\u0f0b\u0f66\u0fa4\u0f7a\u0f53\u0f0b\u0f54\u0f0b".split("_"),weekdaysShort:"\u0f49\u0f72\u0f0b\u0f58\u0f0b_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b_\u0f58\u0f72\u0f42\u0f0b\u0f51\u0f58\u0f62\u0f0b_\u0f63\u0fb7\u0f42\u0f0b\u0f54\u0f0b_\u0f55\u0f74\u0f62\u0f0b\u0f56\u0f74_\u0f54\u0f0b\u0f66\u0f44\u0f66\u0f0b_\u0f66\u0fa4\u0f7a\u0f53\u0f0b\u0f54\u0f0b".split("_"),weekdaysMin:"\u0f49\u0f72_\u0f5f\u0fb3_\u0f58\u0f72\u0f42_\u
5590f63\u0fb7\u0f42_\u0f55\u0f74\u0f62_\u0f66\u0f44\u0f66_\u0f66\u0fa4\u0f7a\u0f53".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm",LLLL:"dddd, D MMMM YYYY, A h:mm"},calendar:{sameDay:"[\u0f51\u0f72\u0f0b\u0f62\u0f72\u0f44] LT",nextDay:"[\u0f66\u0f44\u0f0b\u0f49\u0f72\u0f53] LT",nextWeek:"[\u0f56\u0f51\u0f74\u0f53\u0f0b\u0f55\u0fb2\u0f42\u0f0b\u0f62\u0f97\u0f7a\u0f66\u0f0b\u0f58], LT",lastDay:"[\u0f41\u0f0b\u0f66\u0f44] LT",lastWeek:"[\u0f56\u0f51\u0f74\u0f53\u0f0b\u0f55\u0fb2\u0f42\u0f0b\u0f58\u0f50\u0f60\u0f0b\u0f58] dddd, LT",sameElse:"L"},relativeTime:{future:"%s \u0f63\u0f0b",past:"%s \u0f66\u0f94\u0f53\u0f0b\u0f63",s:"\u0f63\u0f58\u0f0b\u0f66\u0f44",ss:"%d \u0f66\u0f90\u0f62\u0f0b\u0f46\u0f0d",m:"\u0f66\u0f90\u0f62\u0f0b\u0f58\u0f0b\u0f42\u0f45\u0f72\u0f42",mm:"%d \u0f66\u0f90\u0f62\u0f0b\u0f58",h:"\u0f46\u0f74\u0f0b\u0f5a\u0f7c\u0f51\u0f0b\u0f42\u0f45\u0f72\u0f42",hh:"%d \u0f46\u0f74\u0f0b\u0f5a\u0f7c\u0f51",d:"\u0f49\u0f72\u0f53\u0f0b\u0f42\u0f45\u0f72\u0f42",dd:"%d \u0f49\u0f72\u0f53\u0f0b",M:"\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f42\u0f45\u0f72\u0f42",MM:"%d \u0f5f\u0fb3\u0f0b\u0f56",y:"\u0f63\u0f7c\u0f0b\u0f42\u0f45\u0f72\u0f42",yy:"%d \u0f63\u0f7c"},preparse:function(e){return e.replace(/[\u0f21\u0f22\u0f23\u0f24\u0f25\u0f26\u0f27\u0f28\u0f29\u0f20]/g,function(e){return gs[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return Ts[e]})},meridiemParse:/\u0f58\u0f5a\u0f53\u0f0b\u0f58\u0f7c|\u0f5e\u0f7c\u0f42\u0f66\u0f0b\u0f40\u0f66|\u0f49\u0f72\u0f53\u0f0b\u0f42\u0f74\u0f44|\u0f51\u0f42\u0f7c\u0f44\u0f0b\u0f51\u0f42|\u0f58\u0f5a\u0f53\u0f0b\u0f58\u0f7c/,meridiemHour:function(e,a){return 12===e&&(e=0),"\u0f58\u0f5a\u0f53\u0f0b\u0f58\u0f7c"===a&&4<=e||"\u0f49\u0f72\u0f53\u0f0b\u0f42\u0f74\u0f44"===a&&e<5||"\u0f51\u0f42\u0f7c\u0f44\u0f0b\u0f51\u0f42"===a?e+12:e},meridiem:function(e,a,t){return e<4?"\u0f58\u0f5a\u0f53\u0f0b\u0f58\u0f7c":e<10?"\u0f5e\u0f7c\u0f42\u0f66\u0f0b\u0f40\u0f66":e<17?"\u0f49\u0f72\u0f53\u0f0b\u0f42\u0f74\u0f44":e<20?"\u0f51\u0f42\u0f7c\u0f44\u0f0b\u0f51\u0f42":"\u0f58\u0f5a\u0f53\u0f0b\u0f58\u0f7c"},week:{dow:0,doy:6}});var vs=[/^gen/i,/^c[\u02bc\']hwe/i,/^meu/i,/^ebr/i,/^mae/i,/^(mez|eve)/i,/^gou/i,/^eos/i,/^gwe/i,/^her/i,/^du/i,/^ker/i],bs=/^(genver|c[\u02bc\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu|gen|c[\u02bc\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,Ss=[/^Su/i,/^Lu/i,/^Me([^r]|$)/i,/^Mer/i,/^Ya/i,/^Gw/i,/^Sa/i];function Hs(e,a,t){var s=e+" ";switch(t){case"ss":return s+=1===e?"sekunda":2===e||3===e||4===e?"sekunde":"sekundi";case"m":return a?"jedna minuta":"jedne minute";case"mm":return s+=1!==e&&(2===e||3===e||4===e)?"minute":"minuta";case"h":return a?"jedan sat":"jednog sata";case"hh":return s+=1===e?"sat":2===e||3===e||4===e?"sata":"sati";case"dd":return s+=1===e?"dan":"dana";case"MM":return s+=1===e?"mjesec":2===e||3===e||4===e?"mjeseca":"mjeseci";case"yy":return s+=1!==e&&(2===e||3===e||4===e)?"godine":"godina"}}M.defineLocale("br",{months:"Genver_C\u02bchwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu".split("_"),monthsShort:"Gen_C\u02bchwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker".split("_"),weekdays:"Sul_Lun_Meurzh_Merc\u02bcher_Yaou_Gwener_Sadorn".split("_"),weekdaysShort:"Sul_Lun_Meu_Mer_Yao_Gwe_Sad".split("_"),weekdaysMin:"Su_Lu_Me_Mer_Ya_Gw_Sa".split("_"),weekdaysParse:Ss,fullWeekdaysParse:[/^sul/i,/^lun/i,/^meurzh/i,/^merc[\u02bc\']her/i,/^yaou/i,/^gwener/i,/^sadorn/i],shortWeekdaysParse:[/^Sul/i,/^Lun/i,/^Meu/i,/^Mer/i,/^Yao/i,/^Gwe/i,/^Sad/i],minWeekdaysParse:Ss,monthsRegex:bs,monthsShortRegex:bs,monthsStrictRegex:/^(genver|c[\u02bc\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu)/i,monthsShortStrictRegex:/^(gen|c[\u02bc\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,monthsParse:vs,longMonthsParse:vs,shortMonthsParse:vs,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [a viz] MMMM YYYY",LLL:"D [a viz] MMMM YYYY HH:mm",LLLL:"dddd, D [a viz] MMMM YYYY HH:mm"},calendar:{sameDay:"[Hiziv da] LT",nextDay:"[Warc\u02bchoazh da] LT",nextWeek:"dddd [da] LT",lastDay:"[Dec\u02bch da] LT",lastWeek:"dddd [paset da] LT",sameElse:"L"}
vendor: 18,452 bytes, line 559
559,relativeTime:{future:"a-benn %s",past:"%s \u02bczo",s:"un nebeud segondenno\xf9",ss:"%d eilenn",m:"ur vunutenn",mm:ws,h:"un eur",hh:"%d eur",d:"un devezh",dd:ws,M:"ur miz",MM:ws,y:"ur bloaz",yy:function(e){switch(function e(a){if(9<a)return e(a%10);return a}(e)){case 1:case 3:case 4:case 5:case 9:return e+" bloaz";default:return e+" vloaz"}}},dayOfMonthOrdinalParse:/\d{1,2}(a\xf1|vet)/,ordinal:function(e){return e+(1===e?"a\xf1":"vet")},week:{dow:1,doy:4},meridiemParse:/a.m.|g.m./,isPM:function(e){return"g.m."===e},meridiem:function(e,a,t){return e<12?"a.m.":"g.m."}}),M.defineLocale("bs",{months:"januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar".split("_"),monthsShort:"jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedjelja_ponedjeljak_utorak_srijeda_\u010detvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._\u010det._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_\u010de_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[ju\u010der u] LT",lastWeek:function(){switch(this.day()){case 0:case 3:return"[pro\u0161lu] dddd [u] LT";case 6:return"[pro\u0161le] [subote] [u] LT";case 1:case 2:case 4:case 5:return"[pro\u0161li] dddd [u] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"par sekundi",ss:Hs,m:Hs,mm:Hs,h:Hs,hh:Hs,d:"dan",dd:Hs,M:"mjesec",MM:Hs,y:"godinu",yy:Hs},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}}),M.defineLocale("ca",{months:{standalone:"gener_febrer_mar\xe7_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre".split("_"),format:"de gener_de febrer_de mar\xe7_d'abril_de maig_de juny_de juliol_d'agost_de setembre_d'octubre_de novembre_de desembre".split("_"),isFormat:/D[oD]?(\s)+MMMM/},monthsShort:"gen._febr._mar\xe7_abr._maig_juny_jul._ag._set._oct._nov._des.".split("_"),monthsParseExact:!0,weekdays:"diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte".split("_"),weekdaysShort:"dg._dl._dt._dc._dj._dv._ds.".split("_"),weekdaysMin:"dg_dl_dt_dc_dj_dv_ds".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM [de] YYYY",ll:"D MMM YYYY",LLL:"D MMMM [de] YYYY [a les] H:mm",lll:"D MMM YYYY, H:mm",LLLL:"dddd D MMMM [de] YYYY [a les] H:mm",llll:"ddd D MMM YYYY, H:mm"},calendar:{sameDay:function(){return"[avui a "+(1!==this.hours()?"les":"la")+"] LT"},nextDay:function(){return"[dem\xe0 a "+(1!==this.hours()?"les":"la")+"] LT"},nextWeek:function(){return"dddd [a "+(1!==this.hours()?"les":"la")+"] LT"},lastDay:function(){return"[ahir a "+(1!==this.hours()?"les":"la")+"] LT"},lastWeek:function(){return"[el] dddd [passat a "+(1!==this.hours()?"les":"la")+"] LT"},sameElse:"L"},relativeTime:{future:"d'aqu\xed %s",past:"fa %s",s:"uns segons",ss:"%d segons",m:"un minut",mm:"%d minuts",h:"una hora",hh:"%d hores",d:"un dia",dd:"%d dies",M:"un mes",MM:"%d mesos",y:"un any",yy:"%d anys"},dayOfMonthOrdinalParse:/\d{1,2}(r|n|t|\xe8|a)/,ordinal:function(e,a){return e+("w"!==a&&"W"!==a?1===e?"r":2===e?"n":3===e?"r":4===e?"t":"\xe8":"a")},week:{dow:1,doy:4}});var js="leden_\xfanor_b\u0159ezen_duben_kv\u011bten_\u010derven_\u010dervenec_srpen_z\xe1\u0159\xed_\u0159\xedjen_listopad_prosinec".split("_"),xs="led_\xfano_b\u0159e_dub_kv\u011b_\u010dvn_\u010dvc_srp_z\xe1\u0159_\u0159\xedj_lis_pro".split("_"),Ps=[/^led/i,/^\xfano/i,/^b\u0159e/i,/^dub/i,/^kv\u011b/i,/^(\u010dvn|\u010derven$|\u010dervna)/i,/^(\u010dvc|\u010dervenec|\u010dervence)/i,/^srp/i,/^z\xe1\u0159/i,/^\u0159\xedj/i,/^lis/i,/^pro/i],Os=/^(leden|\xfanor|b\u0159ezen|duben|kv\u011bten|\u010dervenec|\u010dervence|\u010derven|\u010dervna|srpen|z\xe1\u0159\xed|\u0159\xedjen|listopad|prosinec|led|\xfano|b\u0159e|dub|kv\u011b|\u010dvn|\u010dvc|srp|z\xe1\u0159|\u0159\xedj|lis|pro)/i;function Ws(e){return 1<e&&e<5&&1!=~~(e/10)}function As(e,a,t,s){var n=e+" ";switch(t){case"s":return a||s?"p\xe1r sekund":"p\xe1r sekundami";case"ss":return a||s?n+(Ws(e)?"sekundy":"sekund"):n+"sekundami";case"m":return a?"minuta":s?"minutu":"minutou";case"mm":return a||s?n+(Ws(e)?"minuty":"minut"):n+"minutami";case"h":return a?"hodina":s?"hodinu":"hodinou";case"hh":return a||s?n+(Ws(e)?"hodiny":"hodin"):n+"hodinami";case"d":return a||s?"den":"dnem";case"dd":return a||s?n+(Ws(e)?"dny":"dn\xed"):n+"dny";case"M":return a||s?"m\u011bs\xedc":"m\u011bs\xedcem";case"MM":return a||s?n+(Ws(e)?"m\u011bs\xedce":"m\u011bs\xedc\u016f"):n+"m\u011bs\xedci";case"y":return a||s?"rok":"rokem";case"yy":return a||s?n+(Ws(e)?"roky":"let"):n+"lety"}}function Es(e,a,t,s){var n={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[e+" Tage",e+" Tagen"],w:["eine Woche","einer Woche"],M:["ein Monat","einem Monat"],MM:[e+" Monate",e+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[e+" Jahre",e+" Jahren"]};return a?n[t][0]:n[t][1]}function Fs(e,a,t,s){var n={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[e+" Tage",e+" Tagen"],w:["eine Woche","einer Woche"],M:["ein Monat","einem Monat"],MM:[e+" Monate",e+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[e+" Jahre",e+" Jahren"]};return a?n[t][0]:n[t][1]}function zs(e,a,t,s){var n={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[e+" Tage",e+" Tagen"],w:["eine Woche","einer Woche"],M:["ein Monat","einem Monat"],MM:[e+" Monate",e+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[e+" Jahre",e+" Jahren"]};return a?n[t][0]:n[t][1]}M.defineLocale("cs",{months:js,monthsShort:xs,monthsRegex:Os,monthsShortRegex:Os,monthsStrictRegex:/^(leden|ledna|\xfanora|\xfanor|b\u0159ezen|b\u0159ezna|duben|dubna|kv\u011bten|kv\u011btna|\u010dervenec|\u010dervence|\u010derven|\u010dervna|srpen|srpna|z\xe1\u0159\xed|\u0159\xedjen|\u0159\xedjna|listopadu|listopad|prosinec|prosince)/i,monthsShortStrictRegex:/^(led|\xfano|b\u0159e|dub|kv\u011b|\u010dvn|\u010dvc|srp|z\xe1\u0159|\u0159\xedj|lis|pro)/i,monthsParse:Ps,longMonthsParse:Ps,shortMonthsParse:Ps,weekdays:"ned\u011ble_pond\u011bl\xed_\xfater\xfd_st\u0159eda_\u010dtvrtek_p\xe1tek_sobota".split("_"),weekdaysShort:"ne_po_\xfat_st_\u010dt_p\xe1_so".split("_"),weekdaysMin:"ne_po_\xfat_st_\u010dt_p\xe1_so".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd D. MMMM YYYY H:mm",l:"D. M. YYYY"},calendar:{sameDay:"[dnes v] LT",nextDay:"[z\xedtra v] LT",nextWeek:function(){switch(this.day()){case 0:return"[v ned\u011bli v] LT";case 1:case 2:return"[v] dddd [v] LT";case 3:return"[ve st\u0159edu v] LT";case 4:return"[ve \u010dtvrtek v] LT";case 5:return"[v p\xe1tek v] LT";case 6:return"[v sobotu v] LT"}},lastDay:"[v\u010dera v] LT",lastWeek:function(){switch(this.day()){case 0:return"[minulou ned\u011bli v] LT";case 1:case 2:return"[minul\xe9] dddd [v] LT";case 3:return"[minulou st\u0159edu v] LT";case 4:case 5:return"[minul\xfd] dddd [v] LT";case 6:return"[minulou sobotu v] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"p\u0159ed %s",s:As,ss:As,m:As,mm:As,h:As,hh:As,d:As,dd:As,M:As,MM:As,y:As,yy:As},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),M.defineLocale("cv",{months:"\u043a\u04d1\u0440\u043b\u0430\u0447_\u043d\u0430\u0440\u04d1\u0441_\u043f\u0443\u0448_\u0430\u043a\u0430_\u043c\u0430\u0439_\u04ab\u04d7\u0440\u0442\u043c\u0435_\u0443\u0442\u04d1_\u04ab\u0443\u0440\u043b\u0430_\u0430\u0432\u04d1\u043d_\u044e\u043f\u0430_\u0447\u04f3\u043a_\u0440\u0430\u0448\u0442\u0430\u0432".split("_"),monthsShort:"\u043a\u04d1\u0440_\u043d\u0430\u0440_\u043f\u0443\u0448_\u0430\u043a\u0430_\u043c\u0430\u0439_\u04ab\u04d7\u0440_\u0443\u0442\u04d1_\u04ab\u0443\u0440_\u0430\u0432\u043d_\u044e\u043f\u0430_\u0447\u04f3\u043a_\u0440\u0430\u0448".split("_"),weekdays:"\u0432\u044b\u0440\u0441\u0430\u0440\u043d\u0438\u043a\u0443\u043d_\u0442\u0443\u043d\u0442\u0438\u043a\u0443\u043d_\u044b\u0442\u043b\u0430\u0440\u0438\u043a\u0443\u043d_\u044e\u043d\u043a\u0443\u043d_\u043a\u04d7\u04ab\u043d\u0435\u0440\u043d\u0438\u043a\u0443\u043d_\u044d\u0440\u043d\u0435\u043a\u0443\u043d_\u0448\u04d1\u043c\u0430\u0442\u043a\u0443\u043d".split("_"),weekdaysShort:"\u0432\u044b\u0440_\u0442\u0443\u043d_\u044b\u0442\u043b_\u044e\u043d_\u043a\u04d7\u04ab_\u044d\u0440\u043d_\u0448\u04d1\u043c".split("_"),weekdaysMin:"\u0432\u0440_\u0442\u043d_\u044b\u0442_\u044e\u043d_\u043a\u04ab_\u044d\u0440_\u0448\u043c".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"YYYY [\u04ab\u0443\u043b\u0445\u0438] MMMM [\u0443\u0439\u04d1\u0445\u04d7\u043d] D[-\u043c\u04d7\u0448\u04d7]",LLL:"YYYY [\u04ab\u0443\u043b\u0445\u0438] MMMM [\u0443\u0439\u04d1\u0445\u04d7\u043d] D[-\u043c\u04d7\u0448\u04d7], HH:mm",LLLL:"dddd, YYYY [\u04ab\u0443\u043b\u0445\u0438] MMMM [\u0443\u0439\u04d1\u0445\u04d7\u043d] D[-\u043c\u04d7\u0448\u04d7], HH:mm"},calendar:{sameDay:"[\u041f\u0430\u044f\u043d] LT [\u0441\u0435\u0445\u0435\u0442\u0440\u0435]",nextDay:"[\u042b\u0440\u0430\u043d] LT [\u0441\u0435\u0445\u0435\u0442\u0440\u0435]",lastDay:"[\u04d6\u043d\u0435\u0440] LT [\u0441\u0435\u0445\u0435\u0442\u0440\u0435]",nextWeek:"[\u04aa\u0438\u0442\u0435\u0441] dddd LT [\u0441\u0435\u0445\u0435\u0442\u0440\u0435]",lastWeek:"[\u0418\u0440\u0442\u043d\u04d7] dddd LT [\u0441\u0435\u0445\u0435\u0442\u0440\u0435]",sameElse:"L"},relativeTime:{future:function(e){return e+(/\u0441\u0435\u0445\u0435\u0442$/i.exec(e)?"\u0440\u0435\u043d":/\u04ab\u0443\u043b$/i.exec(e)?"\u0442\u0430\u043d":"\u0440\u0430\u043d")},past:"%s \u043a\u0430\u044f\u043b\u043b\u0430",s:"\u043f\u04d7\u0440-\u0438\u043a \u04ab\u0435\u043a\u043a\u0443\u043d\u0442",ss:"%d \u04ab\u0435\u043a\u043a\u0443\u043d\u0442",m:"\u043f\u04d7\u0440 \u043c\u0438\u043d\u0443\u0442",mm:"%d \u043c\u0438\u043d\u0443\u0442",h:"\u043f\u04d7\u0440 \u0441\u0435\u0445\u0435\u0442",hh:"%d \u0441\u0435\u0445\u0435\u0442",d:"\u043f\u04d7\u0440 \u043a\u0443\u043d",dd:"%d \u043a\u0443\u043d",M:"\u043f\u04d7\u0440 \u0443\u0439\u04d1\u0445",MM:"%d \u0443\u0439\u04d1\u0445",y:"\u043f\u04d7\u0440 \u04ab\u0443\u043b",yy:"%d \u04ab\u0443\u043b"},dayOfMonthOrdinalParse:/\d{1,2}-\u043c\u04d7\u0448/,ordinal:"%d-\u043c\u04d7\u0448",week:{dow:1,doy:7}}),M.defineLocale("cy",{months:"Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr".split("_"),monthsShort:"Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag".split("_"),weekdays:"Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn".split("_"),weekdaysShort:"Sul_Llun_Maw_Mer_Iau_Gwe_Sad".split("_"),weekdaysMin:"Su_Ll_Ma_Me_Ia_Gw_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Heddiw am] LT",nextDay:"[Yfory am] LT",nextWeek:"dddd [am] LT",lastDay:"[Ddoe am] LT",lastWeek:"dddd [diwethaf am] LT",sameElse:"L"},relativeTime:{future:"mewn %s",past:"%s yn \xf4l",s:"ychydig eiliadau",ss:"%d eiliad",m:"munud",mm:"%d munud",h:"awr",hh:"%d awr",d:"diwrnod",dd:"%d diwrnod",M:"mis",MM:"%d mis",y:"blwyddyn",yy:"%d flynedd"},dayOfMonthOrdinalParse:/\d{1,2}(fed|ain|af|il|ydd|ed|eg)/,ordinal:function(e){var a="";return 20<e?a=40===e||50===e||60===e||80===e||100===e?"fed":"ain":0<e&&(a=["","af","il","ydd","ydd","ed","ed","ed","fed","fed","fed","eg","fed","eg","eg","fed","eg","eg","fed","eg","fed"][e]),e+a},week:{dow:1,doy:4}}),M.defineLocale("da",{months:"januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"),weekdays:"s\xf8ndag_mandag_tirsdag_onsdag_torsdag_fredag_l\xf8rdag".split("_"),weekdaysShort:"s\xf8n_man_tir_ons_tor_fre_l\xf8r".split("_"),weekdaysMin:"s\xf8_ma_ti_on_to_fr_l\xf8".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd [d.] D. MMMM YYYY [kl.] HH:mm"},calendar:{sameDay:"[i dag kl.] LT",nextDay:"[i morgen kl.] LT",nextWeek:"p\xe5 dddd [kl.] LT",lastDay:"[i g\xe5r kl.] LT",lastWeek:"[i] dddd[s kl.] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s siden",s:"f\xe5 sekunder",ss:"%d sekunder",m:"et minut",mm:"%d minutter",h:"en time",hh:"%d timer",d:"en dag",dd:"%d dage",M:"en m\xe5ned",MM:"%d m\xe5neder",y:"et \xe5r",yy:"%d \xe5r"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),M.defineLocale("de-at",{months:"J\xe4nner_Februar_M\xe4rz_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"J\xe4n._Feb._M\xe4rz_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So._Mo._Di._Mi._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[heute um] LT [Uhr]",sameElse:"L",nextDay:"[morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",ss:"%d Sekunden",m:Es,mm:"%d Minuten",h:Es,hh:"%d Stunden",d:Es,dd:Es,w:Es,ww:"%d Wochen",M:Es,MM:Es,y:Es,yy:Es},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),M.defineLocale("de-ch",{months:"Januar_Februar_M\xe4rz_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Feb._M\xe4rz_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[heute um] LT [Uhr]",sameElse:"L",nextDay:"[morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",ss:"%d Sekunden",m:Fs,mm:"%d Minuten",h:Fs,hh:"%d Stunden",d:Fs,dd:Fs,w:Fs,ww:"%d Wochen",M:Fs,MM:Fs,y:Fs,yy:Fs},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),M.defineLocale("de",{months:"Januar_Februar_M\xe4rz_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Feb._M\xe4rz_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So._Mo._Di._Mi._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[heute um] LT [Uhr]",sameElse:"L",nextDay:"[morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",ss:"%d Sekunden",m:zs,mm:"%d Minuten",h:zs,hh:"%d Stunden",d:zs,dd:zs,w:zs,ww:"%d Wochen",M:zs,MM:zs,y:zs,yy:zs},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});var Ns=["\u0796\u07ac\u0782\u07aa\u0787\u07a6\u0783\u07a9","\u078a\u07ac\u0784\u07b0\u0783\u07aa\u0787\u07a6\u0783\u07a9","\u0789\u07a7\u0783\u07a8\u0797\u07aa","\u0787\u07ad\u0795\u07b0\u0783\u07a9\u078d\u07aa","\u0789\u07ad","\u0796\u07ab\u0782\u07b0","\u0796\u07aa\u078d\u07a6\u0787\u07a8","\u0787\u07af\u078e\u07a6\u0790\u07b0\u0793\u07aa","\u0790\u07ac\u0795\u07b0\u0793\u07ac\u0789\u07b0\u0784\u07a6\u0783\u07aa","\u0787\u07ae\u0786\u07b0\u0793\u07af\u0784\u07a6\u0783\u07aa","\u0782\u07ae\u0788\u07ac\u0789\u07b0\u0784\u07a6\u0783\u07aa","\u0791\u07a8\u0790\u07ac\u0789\u07b0\u0784\u07a6\u0783\u07aa"],Js=["\u0787\u07a7\u078b\u07a8\u0787\u07b0\u078c\u07a6","\u0780\u07af\u0789\u07a6","\u0787\u07a6\u0782\u07b0\u078e\u07a7\u0783\u07a6","\u0784\u07aa\u078b\u07a6","\u0784\u07aa\u0783\u07a7\u0790\u07b0\u078a\u07a6\u078c\u07a8","\u0780\u07aa\u0786\u07aa\u0783\u07aa","\u0780\u07ae\u0782\u07a8\u0780\u07a8\u0783\u07aa"];M.defineLocale("dv",{months:Ns,monthsShort:Ns,weekdays:Js,weekdaysShort:Js,weekdaysMin:"\u0787\u07a7\u078b\u07a8_\u0780\u07af\u0789\u07a6_\u0787\u07a6\u0782\u07b0_\u0784\u07aa\u078b\u07a6_\u0784\u07aa\u0783\u07a7_\u0780\u07aa\u0786\u07aa_\u0780\u07ae\u0782\u07a8".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/M/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/\u0789\u0786|\u0789\u078a/,isPM:function(e){return"\u0789\u078a"===e},meridiem:function(e,a,t){return e<12?"\u0789\u0786":"\u0789\u078a"},calendar:{sameDay:"[\u0789\u07a8\u0787\u07a6\u078b\u07aa] LT",nextDay:"[\u0789\u07a7\u078b\u07a6\u0789\u07a7] LT",nextWeek:"dddd LT",lastDay:"[\u0787\u07a8\u0787\u07b0\u0794\u07ac] LT",lastWeek:"[\u078a\u07a7\u0787\u07a8\u078c\u07aa\u0788\u07a8] dddd LT",sameElse:"L"},relativeTime:{future:"\u078c\u07ac\u0783\u07ad\u078e\u07a6\u0787\u07a8 %s",past:"\u0786\u07aa\u0783\u07a8\u0782\u07b0 %s",s:"\u0790\u07a8\u0786\u07aa\u0782\u07b0\u078c\u07aa\u0786\u07ae\u0785\u07ac\u0787\u07b0",ss:"d% \u0790\u07a8\u0786\u07aa\u0782\u07b0\u078c\u07aa",m:"\u0789\u07a8\u0782\u07a8\u0793\u07ac\u0787\u07b0",mm:"\u0789\u07a8\u0782\u07a8\u0793\u07aa %d",h:"\u078e\u07a6\u0791\u07a8\u0787\u07a8\u0783\u07ac\u0787\u07b0",hh:"\u078e\u07a6\u0791\u07a8\u0787\u07a8\u0783\u07aa %d",d:"\u078b\u07aa\u0788\u07a6\u0780\u07ac\u0787\u07b0",dd:"\u078b\u07aa\u0788\u07a6\u0790\u07b0 %d",M:"\u0789\u07a6\u0780\u07ac\u0787\u07b0",MM:"\u0789\u07a6\u0790\u07b0 %d",y:"\u0787\u07a6\u0780\u07a6\u0783\u07ac\u0787\u07b0",yy:"\u0787\u07a6\u0780\u07a6\u0783\u07aa %d"},preparse:function(e){return e.replace(/\u060c/g,",")},postformat:function(e){return e.replace(/,/g,"\u060c")},week:{dow:7,doy:12}}
vendor: 4,689 bytes, line 559
559),M.defineLocale("el",{monthsNominativeEl:"\u0399\u03b1\u03bd\u03bf\u03c5\u03ac\u03c1\u03b9\u03bf\u03c2_\u03a6\u03b5\u03b2\u03c1\u03bf\u03c5\u03ac\u03c1\u03b9\u03bf\u03c2_\u039c\u03ac\u03c1\u03c4\u03b9\u03bf\u03c2_\u0391\u03c0\u03c1\u03af\u03bb\u03b9\u03bf\u03c2_\u039c\u03ac\u03b9\u03bf\u03c2_\u0399\u03bf\u03cd\u03bd\u03b9\u03bf\u03c2_\u0399\u03bf\u03cd\u03bb\u03b9\u03bf\u03c2_\u0391\u03cd\u03b3\u03bf\u03c5\u03c3\u03c4\u03bf\u03c2_\u03a3\u03b5\u03c0\u03c4\u03ad\u03bc\u03b2\u03c1\u03b9\u03bf\u03c2_\u039f\u03ba\u03c4\u03ce\u03b2\u03c1\u03b9\u03bf\u03c2_\u039d\u03bf\u03ad\u03bc\u03b2\u03c1\u03b9\u03bf\u03c2_\u0394\u03b5\u03ba\u03ad\u03bc\u03b2\u03c1\u03b9\u03bf\u03c2".split("_"),monthsGenitiveEl:"\u0399\u03b1\u03bd\u03bf\u03c5\u03b1\u03c1\u03af\u03bf\u03c5_\u03a6\u03b5\u03b2\u03c1\u03bf\u03c5\u03b1\u03c1\u03af\u03bf\u03c5_\u039c\u03b1\u03c1\u03c4\u03af\u03bf\u03c5_\u0391\u03c0\u03c1\u03b9\u03bb\u03af\u03bf\u03c5_\u039c\u03b1\u0390\u03bf\u03c5_\u0399\u03bf\u03c5\u03bd\u03af\u03bf\u03c5_\u0399\u03bf\u03c5\u03bb\u03af\u03bf\u03c5_\u0391\u03c5\u03b3\u03bf\u03cd\u03c3\u03c4\u03bf\u03c5_\u03a3\u03b5\u03c0\u03c4\u03b5\u03bc\u03b2\u03c1\u03af\u03bf\u03c5_\u039f\u03ba\u03c4\u03c9\u03b2\u03c1\u03af\u03bf\u03c5_\u039d\u03bf\u03b5\u03bc\u03b2\u03c1\u03af\u03bf\u03c5_\u0394\u03b5\u03ba\u03b5\u03bc\u03b2\u03c1\u03af\u03bf\u03c5".split("_"),months:function(e,a){return e?"string"==typeof a&&/D/.test(a.substring(0,a.indexOf("MMMM")))?this._monthsGenitiveEl[e.month()]:this._monthsNominativeEl[e.month()]:this._monthsNominativeEl},monthsShort:"\u0399\u03b1\u03bd_\u03a6\u03b5\u03b2_\u039c\u03b1\u03c1_\u0391\u03c0\u03c1_\u039c\u03b1\u03ca_\u0399\u03bf\u03c5\u03bd_\u0399\u03bf\u03c5\u03bb_\u0391\u03c5\u03b3_\u03a3\u03b5\u03c0_\u039f\u03ba\u03c4_\u039d\u03bf\u03b5_\u0394\u03b5\u03ba".split("_"),weekdays:"\u039a\u03c5\u03c1\u03b9\u03b1\u03ba\u03ae_\u0394\u03b5\u03c5\u03c4\u03ad\u03c1\u03b1_\u03a4\u03c1\u03af\u03c4\u03b7_\u03a4\u03b5\u03c4\u03ac\u03c1\u03c4\u03b7_\u03a0\u03ad\u03bc\u03c0\u03c4\u03b7_\u03a0\u03b1\u03c1\u03b1\u03c3\u03ba\u03b5\u03c5\u03ae_\u03a3\u03ac\u03b2\u03b2\u03b1\u03c4\u03bf".split("_"),weekdaysShort:"\u039a\u03c5\u03c1_\u0394\u03b5\u03c5_\u03a4\u03c1\u03b9_\u03a4\u03b5\u03c4_\u03a0\u03b5\u03bc_\u03a0\u03b1\u03c1_\u03a3\u03b1\u03b2".split("_"),weekdaysMin:"\u039a\u03c5_\u0394\u03b5_\u03a4\u03c1_\u03a4\u03b5_\u03a0\u03b5_\u03a0\u03b1_\u03a3\u03b1".split("_"),meridiem:function(e,a,t){return 11<e?t?"\u03bc\u03bc":"\u039c\u039c":t?"\u03c0\u03bc":"\u03a0\u039c"},isPM:function(e){return"\u03bc"===(e+"").toLowerCase()[0]},meridiemParse:/[\u03a0\u039c]\.?\u039c?\.?/i,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendarEl:{sameDay:"[\u03a3\u03ae\u03bc\u03b5\u03c1\u03b1 {}] LT",nextDay:"[\u0391\u03cd\u03c1\u03b9\u03bf {}] LT",nextWeek:"dddd [{}] LT",lastDay:"[\u03a7\u03b8\u03b5\u03c2 {}] LT",lastWeek:function(){switch(this.day()){case 6:return"[\u03c4\u03bf \u03c0\u03c1\u03bf\u03b7\u03b3\u03bf\u03cd\u03bc\u03b5\u03bd\u03bf] dddd [{}] LT";default:return"[\u03c4\u03b7\u03bd \u03c0\u03c1\u03bf\u03b7\u03b3\u03bf\u03cd\u03bc\u03b5\u03bd\u03b7] dddd [{}] LT"}},sameElse:"L"},calendar:function(e,a){var t,s=this._calendarEl[e],n=a&&a.hours();return t=s,("undefined"!=typeof Function&&t instanceof Function||"[object Function]"===Object.prototype.toString.call(t))&&(s=s.apply(a)),s.replace("{}",n%12==1?"\u03c3\u03c4\u03b7":"\u03c3\u03c4\u03b9\u03c2")},relativeTime:{future:"\u03c3\u03b5 %s",past:"%s \u03c0\u03c1\u03b9\u03bd",s:"\u03bb\u03af\u03b3\u03b1 \u03b4\u03b5\u03c5\u03c4\u03b5\u03c1\u03cc\u03bb\u03b5\u03c0\u03c4\u03b1",ss:"%d \u03b4\u03b5\u03c5\u03c4\u03b5\u03c1\u03cc\u03bb\u03b5\u03c0\u03c4\u03b1",m:"\u03ad\u03bd\u03b1 \u03bb\u03b5\u03c0\u03c4\u03cc",mm:"%d \u03bb\u03b5\u03c0\u03c4\u03ac",h:"\u03bc\u03af\u03b1 \u03ce\u03c1\u03b1",hh:"%d \u03ce\u03c1\u03b5\u03c2",d:"\u03bc\u03af\u03b1 \u03bc\u03ad\u03c1\u03b1",dd:"%d \u03bc\u03ad\u03c1\u03b5\u03c2",M:"\u03ad\u03bd\u03b1\u03c2 \u03bc\u03ae\u03bd\u03b1\u03c2",MM:"%d \u03bc\u03ae\u03bd\u03b5\u03c2",y:"\u03ad\u03bd\u03b1\u03c2 \u03c7\u03c1\u03cc\u03bd\u03bf\u03c2",yy:"%d \u03c7\u03c1\u03cc\u03bd\u03b9\u03b1"},dayOfMonthOrdinalParse:/\d{1,2}\u03b7/,ordinal:"%d\u03b7",week:{dow:1,doy:4}}),M.defineLocale("en-au",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LT
559S:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var a=e%10;return e+(1==~~(e%100/10)?"th":1==a?"st":2==a?"nd":3==a?"rd":"th")},week:{dow:0,doy:4}}),M.defineLocale("en-ca",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"YYYY-MM-DD",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var a=e%10;return e+(1==~~(e%100/10)?"th":1==a?"st":2==a?"nd":3==a?"rd":"th")}}),M.defineLocale("en-gb",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var a=e%10;return e+(1==~~(e%100/10)?"th":1==a?"st":2==a?"nd":3==a?"rd":"th")},week:{dow:1,doy:4}}),M.defineLocale("en-ie",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var a=e%10;return e+(1==~~(e%100/10)?"th":1==a?"st":2==a?"nd":3==a?"rd":"th")},week:{dow:1,doy:4}}),M.defineLocale("en-il",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var a=e%10;return e+(1==~~(e%100/10)?"th":1==a?"st":2==a?"nd":3==a?"rd":"th")}}),M.defineLocale("en-in",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LT
vendor: 3,522 bytes, line 559
559S:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var a=e%10;return e+(1==~~(e%100/10)?"th":1==a?"st":2==a?"nd":3==a?"rd":"th")},week:{dow:0,doy:6}}),M.defineLocale("en-nz",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var a=e%10;return e+(1==~~(e%100/10)?"th":1==a?"st":2==a?"nd":3==a?"rd":"th")},week:{dow:1,doy:4}}),M.defineLocale("en-sg",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var a=e%10;return e+(1==~~(e%100/10)?"th":1==a?"st":2==a?"nd":3==a?"rd":"th")},week:{dow:1,doy:4}}),M.defineLocale("eo",{months:"januaro_februaro_marto_aprilo_majo_junio_julio_a\u016dgusto_septembro_oktobro_novembro_decembro".split("_"),monthsShort:"jan_feb_mart_apr_maj_jun_jul_a\u016dg_sept_okt_nov_dec".split("_"),weekdays:"diman\u0109o_lundo_mardo_merkredo_\u0135a\u016ddo_vendredo_sabato".split("_"),weekdaysShort:"dim_lun_mard_merk_\u0135a\u016d_ven_sab".split("_"),weekdaysMin:"di_lu_ma_me_\u0135a_ve_sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"[la] D[-an de] MMMM, YYYY",LLL:"[la] D[-an de] MMMM, YYYY HH:mm",LLLL:"dddd[n], [la] D[-an de] MMMM, YYYY HH:mm",llll:"ddd, [la] D[-an de] MMM, YYYY HH:mm"},meridiemParse:/[ap]\.t\.m/i,isPM:function(e){return"p"===e.charAt(0).toLowerCase()},meridiem:function(e,a,t){return 11<e?t?"p.t.m.":"P.T.M.":t?"a.t.m."
vendor: 4,423 bytes, line 559
559:"A.T.M."},calendar:{sameDay:"[Hodia\u016d je] LT",nextDay:"[Morga\u016d je] LT",nextWeek:"dddd[n je] LT",lastDay:"[Hiera\u016d je] LT",lastWeek:"[pasintan] dddd[n je] LT",sameElse:"L"},relativeTime:{future:"post %s",past:"anta\u016d %s",s:"kelkaj sekundoj",ss:"%d sekundoj",m:"unu minuto",mm:"%d minutoj",h:"unu horo",hh:"%d horoj",d:"unu tago",dd:"%d tagoj",M:"unu monato",MM:"%d monatoj",y:"unu jaro",yy:"%d jaroj"},dayOfMonthOrdinalParse:/\d{1,2}a/,ordinal:"%da",week:{dow:1,doy:7}});var Rs="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),Cs="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),Is=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],Us=/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;M.defineLocale("es-do",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(e,a){return e?/-MMM-/.test(a)?Cs[e.month()]:Rs[e.month()]:Rs},monthsRegex:Us,monthsShortRegex:Us,monthsStrictRegex:/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,monthsShortStrictRegex:/^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,monthsParse:Is,longMonthsParse:Is,shortMonthsParse:Is,weekdays:"domingo_lunes_martes_mi\xe9rcoles_jueves_viernes_s\xe1bado".split("_"),weekdaysShort:"dom._lun._mar._mi\xe9._jue._vie._s\xe1b.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_s\xe1".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY h:mm A",LLLL:"dddd, D [de] MMMM [de] YYYY h:mm A"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[ma\xf1ana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un d\xeda",dd:"%d d\xedas",w:"una semana",ww:"%d semanas",M:"un mes",MM:"%d meses",y:"un a\xf1o",yy:"%d a\xf1os"},dayOfMonthOrdinalParse:/\d{1,2}\xba/,ordinal:"%d\xba",week:{dow:1,doy:4}});var Gs="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),Vs="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),Bs=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],Ks=/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;M.defineLocale("es-mx",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(e,a){return e?/-MMM-/.test(a)?Vs[e.month()]:Gs[e.month()]:Gs},monthsRegex:Ks,monthsShortRegex:Ks,monthsStrictRegex:/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,monthsShortStrictRegex:/^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,monthsParse:Bs,longMonthsParse:Bs,shortMonthsParse:Bs,weekdays:"domingo_lunes_martes_mi\xe9rcoles_jueves_viernes_s\xe1bado".split("_"),weekdaysShort:"dom._lun._mar._mi\xe9._jue._vie._s\xe1b.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_s\xe1".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY H:mm",LLLL:"dddd, D [de] MMMM [de] YYYY H:mm"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[ma\xf1ana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%
559d horas",d:"un d\xeda",dd:"%d d\xedas",w:"una semana",ww:"%d semanas",M:"un mes",MM:"%d meses",y:"un a\xf1o",yy:"%d a\xf1os"},dayOfMonthOrdinalParse:/\d{1,2}\xba/,ordinal:"%d\xba",week:{dow:0,doy:4},invalidDate:"Fecha inv\xe1lida"});var qs="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),Zs="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),$s=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],Qs=/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;M.defineLocale("es-us",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(e,a){return e?/-MMM-/.test(a)?Zs[e.month()]:qs[e.month()]:qs},monthsRegex:Qs,monthsShortRegex:Qs,monthsStrictRegex:/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,monthsShortStrictRegex:/^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,monthsParse:$s,longMonthsParse:$s,shortMonthsParse:$s,weekdays:"domingo_lunes_martes_mi\xe9rcoles_jueves_viernes_s\xe1bado".split("_"),weekdaysShort:"dom._lun._mar._mi\xe9._jue._vie._s\xe1b.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_s\xe1".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"MM/DD/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY h:mm A",LLLL:"dddd, D [de] MMMM [de] YYYY h:mm A"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[ma\xf1ana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un d\xeda",dd:"%d d\xedas",w:"una semana",ww:"%d semanas",M:"un mes",MM:"%d meses",y:"un a\xf1o",yy:"%d a\xf1os"},dayOfMonthOrdinalParse:/\d{1,2}\xba/,ordinal:"%d\xba",week:{dow:0,doy:6}});var Xs="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),en="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),an=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],tn=/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;function sn(e,a,t,s){var n={s:["m\xf5ne sekundi","m\xf5ni sekund","paar sekundit"],ss:[e+"sekundi",e+"sekundit"],m:["\xfche minuti","\xfcks minut"],mm:[e+" minuti",e+" minutit"],h:["\xfche tunni","tund aega","\xfcks tund"],hh:[e+" tunni",e+" tundi"],d:["\xfche p\xe4eva","\xfcks p\xe4ev"],M:["kuu aja","kuu aega","\xfcks kuu"],MM:[e+" kuu",e+" kuud"],y:["\xfche aasta","aasta","\xfcks aasta"],yy:[e+" aasta",e+" aastat"]};return a?n[t][2]?n[t][2]:n[t][1]:s?n[t][0]:n[t][1]}M.defineLocale("es",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(e,a){return e?/-MMM-/.test(a)?en[e.month()]:Xs[e.month()]:Xs},monthsRegex:tn,monthsShortRegex:tn,monthsStrictRegex:/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,monthsShortStrictRegex:/^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,monthsParse:an,longMonthsParse:an,shortMonthsParse:an,weekdays:"domingo_lunes_martes_mi\xe9rcoles_jueves_viernes_s\xe1bado".split("_"),weekdaysShort:"dom._lun._mar._mi\xe9._jue._vie._s\xe1b.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_s\xe1".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY H:mm",LLLL:"dddd, D [de] MMMM [de] YYYY H:mm"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[ma\xf1ana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%
559d horas",d:"un d\xeda",dd:"%d d\xedas",w:"una semana",ww:"%d semanas",M:"un mes",MM:"%d meses",y:"un a\xf1o",yy:"%d a\xf1os"},dayOfMonthOrdinalParse:/\d{1,2}\xba/,ordinal:"%d\xba",week:{dow:1,doy:4},invalidDate:"Fecha inv\xe1lida"}),M.defineLocale("et",{months:"jaanuar_veebruar_m\xe4rts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember".split("_"),monthsShort:"jaan_veebr_m\xe4rts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets".split("_"),weekdays:"p\xfchap\xe4ev_esmasp\xe4ev_teisip\xe4ev_kolmap\xe4ev_neljap\xe4ev_reede_laup\xe4ev".split("_"),weekdaysShort:"P_E_T_K_N_R_L".split("_"),weekdaysMin:"P_E_T_K_N_R_L".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[T\xe4na,] LT",nextDay:"[Homme,] LT",nextWeek:"[J\xe4rgmine] dddd LT",lastDay:"[Eile,] LT",lastWeek:"[Eelmine] dddd LT",sameElse:"L"},relativeTime:{future:"%s p\xe4rast",past:"%s tagasi",s:sn,ss:sn,m:sn,mm:sn,h:sn,hh:sn,d:sn,dd:"%d p\xe4eva",M:sn,MM:sn,y:sn,yy:sn},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),M.defineLocale("eu",{months:"urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua".split("_"),monthsShort:"urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.".split("_"),monthsParseExact:!0,weekdays:"igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata".split("_"),weekdaysShort:"ig._al._ar._az._og._ol._lr.".split("_"),weekdaysMin:"ig_al_ar_az_og_ol_lr".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY[ko] MMMM[ren] D[a]",LLL:"YYYY[ko] MMMM[ren] D[a] HH:mm",LLLL:"dddd, YYYY[ko] MMMM[ren] D[a] HH:mm",l:"YYYY-M-D",ll:"YYYY[ko] MMM D[a]",lll:"YYYY[ko] MMM D[a] HH:mm",llll:"ddd, YYYY[ko] MMM D[a] HH:mm"},calendar:{sameDay:"[gaur] LT[etan]",nextDay:"[bihar] LT[etan]",nextWeek:"dddd LT[etan]",lastDay:"[atzo] LT[etan]",lastWeek:"[aurreko] dddd LT[etan]",sameElse:"L"},relativeTime:{future:"%s barru",past:"duela %s",s:"segundo batzuk",ss:"%d segundo",m:"minutu bat",mm:"%d minutu",h:"ordu bat",hh:"%d ordu",d:"egun bat",dd:"%d egun",M:"hilabete bat",MM:"%d hilabete",y:"urte bat",yy:"%d urte"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}});var nn={1:"\u06f1",2:"\u06f2",3:"\u06f3",4:"\u06f4",5:"\u06f5",6:"\u06f6",7:"\u06f7",8:"\u06f8",9:"\u06f9",0:"\u06f0"},rn={"\u06f1":"1","\u06f2":"2","\u06f3":"3","\u06f4":"4","\u06f5":"5","\u06f6":"6","\u06f7":"7","\u06f8":"8","\u06f9":"9","\u06f0":"0"};M.defineLocale("fa",{months:"\u0698\u0627\u0646\u0648\u06cc\u0647_\u0641\u0648\u0631\u06cc\u0647_\u0645\u0627\u0631\u0633_\u0622\u0648\u0631\u06cc\u0644_\u0645\u0647_\u0698\u0648\u0626\u0646_\u0698\u0648\u0626\u06cc\u0647_\u0627\u0648\u062a_\u0633\u067e\u062a\u0627\u0645\u0628\u0631_\u0627\u06a9\u062a\u0628\u0631_\u0646\u0648\u0627\u0645\u0628\u0631_\u062f\u0633\u0627\u0645\u0628\u0631".split("_"),monthsShort:"\u0698\u0627\u0646\u0648\u06cc\u0647_\u0641\u0648\u0631\u06cc\u0647_\u0645\u0627\u0631\u0633_\u0622\u0648\u0631\u06cc\u0644_\u0645\u0647_\u0698\u0648\u0626\u0646_\u0698\u0648\u0626\u06cc\u0647_\u0627\u0648\u062a_\u0633\u067e\u062a\u0627\u0645\u0628\u0631_\u0627\u06a9\u062a\u0628\u0631_\u0646\u0648\u0627\u0645\u0628\u0631_\u062f\u0633\u0627\u0645\u0628\u0631".split("_"),weekdays:"\u06cc\u06a9\u200c\u0634\u0646\u0628\u0647_\u062f\u0648\u0634\u0646\u0628\u0647_\u0633\u0647\u200c\u0634\u0646\u0628\u0647_\u0686\u0647\u0627\u0631\u0634\u0646\u0628\u0647_\u067e\u0646\u062c\u200c\u0634\u0646\u0628\u0647_\u062c\u0645\u0639\u0647_\u0634\u0646\u0628\u0647".split("_"),weekdaysShort:"\u06cc\u06a9\u200c\u0634\u0646\u0628\u0647_\u062f\u0648\u0634\u0646\u0628\u0647_\u0633\u0647\u200c\u0634\u0646\u0628\u0647_\u0686\u0647\u0627\u0631\u0634\u0646\u0628\u0647_\u067e\u0646\u062c\u200c\u0634\u0646\u0628\u0647_\u062c\u0645\u0639\u0647_\u0634\u0646\u0628\u0647".split("_"),weekdaysMin:"\u06cc_\u062f_\u0633_\u0686_\u067e_\u062c_\u0634".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},meridiemParse:/\u0642\u0628\u0644 \u0627\u0632 \u0638\u0647\u0631|\u0628\u0639\u062f \u0627\u0632 \u0638\u0647\u0631/,isPM:function(e){return/\u0628\u0639\u062f \u0627\u0632 \u0638\u0647\u0631/.test(e)},meridiem:function(e,a,t){return e<12?"\u0642\u0628\u0644 \u0627\u0632 \u0638\u0647\u0631":"\u0628\u0639\u062f \u0627\u0632 \u0638\u0647\u0631"},calendar:{sameDay:"[\u0627\u0645\u0631\u0648\u0632 \u0633\u0627\u0639\u062a] LT",nextDay:"[\u0641\u0631\u062f\u0627 \u0633\u0627\u0639\u062a] LT",nextWeek:"dddd [\u0633\u0627\u0639\u062a] LT",lastDay:"[\u062f\u06cc\u0631\u0648\u0632 \u0633\u0627\u0639\u062a] LT",lastWeek:"dddd [\u067e\u06cc\u0634] [\u0633\u0627\u0639\u062a] LT",sameElse:"L"}
vendor: 14,632 bytes, line 559
559,relativeTime:{future:"\u062f\u0631 %s",past:"%s \u067e\u06cc\u0634",s:"\u0686\u0646\u062f \u062b\u0627\u0646\u06cc\u0647",ss:"%d \u062b\u0627\u0646\u06cc\u0647",m:"\u06cc\u06a9 \u062f\u0642\u06cc\u0642\u0647",mm:"%d \u062f\u0642\u06cc\u0642\u0647",h:"\u06cc\u06a9 \u0633\u0627\u0639\u062a",hh:"%d \u0633\u0627\u0639\u062a",d:"\u06cc\u06a9 \u0631\u0648\u0632",dd:"%d \u0631\u0648\u0632",M:"\u06cc\u06a9 \u0645\u0627\u0647",MM:"%d \u0645\u0627\u0647",y:"\u06cc\u06a9 \u0633\u0627\u0644",yy:"%d \u0633\u0627\u0644"},preparse:function(e){return e.replace(/[\u06f0-\u06f9]/g,function(e){return rn[e]}).replace(/\u060c/g,",")},postformat:function(e){return e.replace(/\d/g,function(e){return nn[e]}).replace(/,/g,"\u060c")},dayOfMonthOrdinalParse:/\d{1,2}\u0645/,ordinal:"%d\u0645",week:{dow:6,doy:12}});var dn="nolla yksi kaksi kolme nelj\xe4 viisi kuusi seitsem\xe4n kahdeksan yhdeks\xe4n".split(" "),_n=["nolla","yhden","kahden","kolmen","nelj\xe4n","viiden","kuuden",dn[7],dn[8],dn[9]];function on(e,a,t,s){var n,r,d="";switch(t){case"s":return s?"muutaman sekunnin":"muutama sekunti";case"ss":d=s?"sekunnin":"sekuntia";break;case"m":return s?"minuutin":"minuutti";case"mm":d=s?"minuutin":"minuuttia";break;case"h":return s?"tunnin":"tunti";case"hh":d=s?"tunnin":"tuntia";break;case"d":return s?"p\xe4iv\xe4n":"p\xe4iv\xe4";case"dd":d=s?"p\xe4iv\xe4n":"p\xe4iv\xe4\xe4";break;case"M":return s?"kuukauden":"kuukausi";case"MM":d=s?"kuukauden":"kuukautta";break;case"y":return s?"vuoden":"vuosi";case"yy":d=s?"vuoden":"vuotta";break}return r=s,d=((n=e)<10?r?_n[n]:dn[n]:n)+" "+d}M.defineLocale("fi",{months:"tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kes\xe4kuu_hein\xe4kuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu".split("_"),monthsShort:"tammi_helmi_maalis_huhti_touko_kes\xe4_hein\xe4_elo_syys_loka_marras_joulu".split("_"),weekdays:"sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai".split("_"),weekdaysShort:"su_ma_ti_ke_to_pe_la".split("_"),weekdaysMin:"su_ma_ti_ke_to_pe_la".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD.MM.YYYY",LL:"Do MMMM[ta] YYYY",LLL:"Do MMMM[ta] YYYY, [klo] HH.mm",LLLL:"dddd, Do MMMM[ta] YYYY, [klo] HH.mm",l:"D.M.YYYY",ll:"Do MMM YYYY",lll:"Do MMM YYYY, [klo] HH.mm",llll:"ddd, Do MMM YYYY, [klo] HH.mm"},calendar:{sameDay:"[t\xe4n\xe4\xe4n] [klo] LT",nextDay:"[huomenna] [klo] LT",nextWeek:"dddd [klo] LT",lastDay:"[eilen] [klo] LT",lastWeek:"[viime] dddd[na] [klo] LT",sameElse:"L"},relativeTime:{future:"%s p\xe4\xe4st\xe4",past:"%s sitten",s:on,ss:on,m:on,mm:on,h:on,hh:on,d:on,dd:on,M:on,MM:on,y:on,yy:on},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),M.defineLocale("fil",{months:"Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre".split("_"),monthsShort:"Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis".split("_"),weekdays:"Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado".split("_"),weekdaysShort:"Lin_Lun_Mar_Miy_Huw_Biy_Sab".split("_"),weekdaysMin:"Li_Lu_Ma_Mi_Hu_Bi_Sab".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"MM/D/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY HH:mm",LLLL:"dddd, MMMM DD, YYYY HH:mm"},calendar:{sameDay:"LT [ngayong araw]",nextDay:"[Bukas ng] LT",nextWeek:"LT [sa susunod na] dddd",lastDay:"LT [kahapon]",lastWeek:"LT [noong nakaraang] dddd",sameElse:"L"},relativeTime:{future:"sa loob ng %s",past:"%s ang nakalipas",s:"ilang segundo",ss:"%d segundo",m:"isang minuto",mm:"%d minuto",h:"isang oras",hh:"%d oras",d:"isang araw",dd:"%d araw",M:"isang buwan",MM:"%d buwan",y:"isang taon",yy:"%d taon"},dayOfMonthOrdinalParse:/\d{1,2}/,ordinal:function(e){return e},week:{dow:1,doy:4}}),M.defineLocale("fo",{months:"januar_februar_mars_apr\xedl_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_"),weekdays:"sunnudagur_m\xe1nadagur_t\xfdsdagur_mikudagur_h\xf3sdagur_fr\xedggjadagur_leygardagur".split("_"),weekdaysShort:"sun_m\xe1n_t\xfds_mik_h\xf3s_fr\xed_ley".split("_"),weekdaysMin:"su_m\xe1_t\xfd_mi_h\xf3_fr_le".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D. MMMM, YYYY HH:mm"},calendar:{sameDay:"[\xcd dag kl.] LT",nextDay:"[\xcd morgin kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[\xcd gj\xe1r kl.] LT",lastWeek:"[s\xed\xf0stu] dddd [kl] LT",sameElse:"L"},relativeTime:{future:"um %s",past:"%s s\xed\xf0ani",s:"f\xe1 sekund",ss:"%d sekundir",m:"ein minuttur",mm:"%d minuttir",h:"ein t\xedmi",hh:"%d t\xedmar",d:"ein dagur",dd:"%d dagar",M:"ein m\xe1na\xf0ur",MM:"%d m\xe1na\xf0ir",y:"eitt \xe1r",yy:"%d \xe1r"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),M.defineLocale("fr-ca",{months:"janvier_f\xe9vrier_mars_avril_mai_juin_juillet_ao\xfbt_septembre_octobre_novembre_d\xe9cembre".split("_"),monthsShort:"janv._f\xe9vr._mars_avr._mai_juin_juil._ao\xfbt_sept._oct._nov._d\xe9c.".split("_"),monthsParseExact:!0,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"di_lu_ma_me_je_ve_sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd\u2019hui \xe0] LT",nextDay:"[Demain \xe0] LT",nextWeek:"dddd [\xe0] LT",lastDay:"[Hier \xe0] LT",lastWeek:"dddd [dernier \xe0] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",ss:"%d secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(er|e)/,ordinal:function(e,a){switch(a){default:case"M":case"Q":case"D":case"DDD":case"d":return e+(1===e?"er":"e");case"w":case"W":return e+(1===e?"re":"e")}}}),M.defineLocale("fr-ch",{months:"janvier_f\xe9vrier_mars_avril_mai_juin_juillet_ao\xfbt_septembre_octobre_novembre_d\xe9cembre".split("_"),monthsShort:"janv._f\xe9vr._mars_avr._mai_juin_juil._ao\xfbt_sept._oct._nov._d\xe9c.".split("_"),monthsParseExact:!0,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"di_lu_ma_me_je_ve_sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd\u2019hui \xe0] LT",nextDay:"[Demain \xe0] LT",nextWeek:"dddd [\xe0] LT",lastDay:"[Hier \xe0] LT",lastWeek:"dddd [dernier \xe0] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",ss:"%d secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(er|e)/,ordinal:function(e,a){switch(a){default:case"M":case"Q":case"D":case"DDD":case"d":return e+(1===e?"er":"e");case"w":case"W":return e+(1===e?"re":"e")}},week:{dow:1,doy:4}});var mn=/(janv\.?|f\xe9vr\.?|mars|avr\.?|mai|juin|juil\.?|ao\xfbt|sept\.?|oct\.?|nov\.?|d\xe9c\.?|janvier|f\xe9vrier|mars|avril|mai|juin|juillet|ao\xfbt|septembre|octobre|novembre|d\xe9cembre)/i,un=[/^janv/i,/^f\xe9vr/i,/^mars/i,/^avr/i,/^mai/i,/^juin/i,/^juil/i,/^ao\xfbt/i,/^sept/i,/^oct/i,/^nov/i,/^d\xe9c/i];M.defineLocale("fr",{months:"janvier_f\xe9vrier_mars_avril_mai_juin_juillet_ao\xfbt_septembre_octobre_novembre_d\xe9cembre".split("_"),monthsShort:"janv._f\xe9vr._mars_avr._mai_juin_juil._ao\xfbt_sept._oct._nov._d\xe9c.".split("_"),monthsRegex:mn,monthsShortRegex:mn,monthsStrictRegex:/^(janvier|f\xe9vrier|mars|avril|mai|juin|juillet|ao\xfbt|septembre|octobre|novembre|d\xe9cembre)/i,monthsShortStrictRegex:/(janv\.?|f\xe9vr\.?|mars|avr\.?|mai|juin|juil\.?|ao\xfbt|sept\.?|oct\.?|nov\.?|d\xe9c\.?)/i,monthsParse:un,longMonthsParse:un,shortMonthsParse:un,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"di_lu_ma_me_je_ve_sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd\u2019hui \xe0] LT",nextDay:"[Demain \xe0] LT",nextWeek:"dddd [\xe0] LT",lastDay:"[Hier \xe0] LT",lastWeek:"dddd [dernier \xe0] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",ss:"%d secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",w:"une semaine",ww:"%d semaines",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(er|)/,ordinal:function(e,a){switch(a){case"D":return e+(1===e?"er":"");default:case"M":case"Q":case"DDD":case"d":return e+(1===e?"er":"e");case"w":case"W":return e+(1===e?"re":"e")}},week:{dow:1,doy:4}});var ln="jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.".split("_"),Mn="jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_");M.defineLocale("fy",{months:"jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber".split("_"),monthsShort:function(e,a){return e?/-MMM-/.test(a)?Mn[e.month()]:ln[e.month()]:ln},monthsParseExact:!0,weekdays:"snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon".split("_"),weekdaysShort:"si._mo._ti._wo._to._fr._so.".split("_"),weekdaysMin:"Si_Mo_Ti_Wo_To_Fr_So".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[hjoed om] LT",nextDay:"[moarn om] LT",nextWeek:"dddd [om] LT",lastDay:"[juster om] LT",lastWeek:"[\xf4fr\xfbne] dddd [om] LT",sameElse:"L"},relativeTime:{future:"oer %s",past:"%s lyn",s:"in pear sekonden",ss:"%d sekonden",m:"ien min\xfat",mm:"%d minuten",h:"ien oere",hh:"%d oeren",d:"ien dei",dd:"%d dagen",M:"ien moanne",MM:"%d moannen",y:"ien jier",yy:"%d jierren"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(e){return e+(1===e||8===e||20<=e?"ste":"de")},week:{dow:1,doy:4}});M.defineLocale("ga",{months:["Ean\xe1ir","Feabhra","M\xe1rta","Aibre\xe1n","Bealtaine","Meitheamh","I\xfail","L\xfanasa","Me\xe1n F\xf3mhair","Deireadh F\xf3mhair","Samhain","Nollaig"],monthsShort:["Ean","Feabh","M\xe1rt","Aib","Beal","Meith","I\xfail","L\xfan","M.F.","D.F.","Samh","Noll"],monthsParseExact:!0,weekdays:["D\xe9 Domhnaigh","D\xe9 Luain","D\xe9 M\xe1irt","D\xe9 C\xe9adaoin","D\xe9ardaoin","D\xe9 hAoine","D\xe9 Sathairn"],weekdaysShort:["Domh","Luan","M\xe1irt","C\xe9ad","D\xe9ar","Aoine","Sath"],weekdaysMin:["Do","Lu","M\xe1","C\xe9","D\xe9","A","Sa"],longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Inniu ag] LT",nextDay:"[Am\xe1rach ag] LT",nextWeek:"dddd [ag] LT",lastDay:"[Inn\xe9 ag] LT",lastWeek:"dddd [seo caite] [ag] LT",sameElse:"L"},relativeTime:{future:"i %s",past:"%s \xf3 shin",s:"c\xfapla soicind",ss:"%d soicind",m:"n\xf3im\xe9ad",mm:"%d n\xf3im\xe9ad",h:"uair an chloig",hh:"%d uair an chloig",d:"l\xe1",dd:"%d l\xe1",M:"m\xed",MM:"%d m\xedonna",y:"bliain",yy:"%d bliain"},dayOfMonthOrdinalParse:/\d{1,2}(d|na|mh)/,ordinal:function(e){return e+(1===e?"d":e%10==2?"na":"mh")},week:{dow:1,doy:4}});function hn(e,a,t,s){var n={s:["\u0925\u094b\u0921\u092f\u093e \u0938\u0945\u0915\u0902\u0921\u093e\u0902\u0928\u0940","\u0925\u094b\u0921\u0947 \u0938\u0945\u0915\u0902\u0921"],ss:[e+" \u0938\u0945\u0915\u0902\u0921\u093e\u0902\u0928\u0940",e+" \u0938\u0945\u0915\u0902\u0921"],m:["\u090f\u0915\u093e \u092e\u093f\u0923\u091f\u093e\u0928","\u090f\u0915 \u092e\u093f\u0928\u0942\u091f"],mm:[e+" \u092e\u093f\u0923\u091f\u093e\u0902\u0928\u0940",e+" \u092e\u093f\u0923\u091f\u093e\u0902"],h:["\u090f\u0915\u093e \u0935\u0930\u093e\u0928","\u090f\u0915 \u0935\u0930"],hh:[e+" \u0935\u0930\u093e\u0902\u0928\u0940",e+" \u0935\u0930\u093e\u0902"],d:["\u090f\u0915\u093e \u0926\u093f\u0938\u093e\u0928","\u090f\u0915 \u0926\u0940\u0938"],dd:[e+" \u0926\u093f\u0938\u093e\u0902\u0928\u0940",e+" \u0926\u0940\u0938"],M:["\u090f\u0915\u093e \u092e\u094d\u0939\u092f\u0928\u094d\u092f\u093e\u0928","\u090f\u0915 \u092e\u094d\u0939\u092f\u0928\u094b"],MM:[e+" \u092e\u094d\u0939\u092f\u0928\u094d\u092f\u093e\u0928\u0940",e+" \u092e\u094d\u0939\u092f\u0928\u0947"],y:["\u090f\u0915\u093e \u0935\u0930\u094d\u0938\u093e\u0928","\u090f\u0915 \u0935\u0930\u094d\u0938"],yy:[e+" \u0935\u0930\u094d\u0938\u093e\u0902\u0928\u0940",e+" \u0935\u0930\u094d\u0938\u093e\u0902"]};return s?n[t][0]:n[t][1]}function cn(e,a,t,s){var n={s:["thoddea sekondamni","thodde sekond"],ss:[e+" sekondamni",e+" sekond"],m:["eka mintan","ek minut"],mm:[e+" mintamni",e+" mintam"],h:["eka voran","ek vor"],hh:[e+" voramni",e+" voram"],d:["eka disan","ek dis"],dd:[e+" disamni",e+" dis"],M:["eka mhoinean","ek mhoino"],MM:[e+" mhoineamni",e+" mhoine"],y:["eka vorsan","ek voros"],yy:[e+" vorsamni",e+" vorsam"]};return s?n[t][0]:n[t][1]}M.defineLocale("gd",{months:["Am Faoilleach","An Gearran","Am M\xe0rt","An Giblean","An C\xe8itean","An t-\xd2gmhios","An t-Iuchar","An L\xf9nastal","An t-Sultain","An D\xe0mhair","An t-Samhain","An D\xf9bhlachd"],monthsShort:["Faoi","Gear","M\xe0rt","Gibl","C\xe8it","\xd2gmh","Iuch","L\xf9n","Sult","D\xe0mh","Samh","D\xf9bh"],monthsParseExact:!0,weekdays:["Did\xf2mhnaich","Diluain","Dim\xe0irt","Diciadain","Diardaoin","Dihaoine","Disathairne"],weekdaysShort:["Did","Dil","Dim","Dic","Dia","Dih","Dis"],weekdaysMin:["D\xf2","Lu","M\xe0","Ci","Ar","Ha","Sa"],longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[An-diugh aig] LT",nextDay:"[A-m\xe0ireach aig] LT",nextWeek:"dddd [aig] LT",lastDay:"[An-d\xe8 aig] LT",lastWeek:"dddd [seo chaidh] [aig] LT",sameElse:"L"},relativeTime:{future:"ann an %s",past:"bho chionn %s",s:"beagan diogan",ss:"%d diogan",m:"mionaid",mm:"%d mionaidean",h:"uair",hh:"%d uairean",d:"latha",dd:"%d latha",M:"m\xecos",MM:"%d m\xecosan",y:"bliadhna",yy:"%d bliadhna"},dayOfMonthOrdinalParse:/\d{1,2}(d|na|mh)/,ordinal:function(e){return e+(1===e?"d":e%10==2?"na":"mh")},week:{dow:1,doy:4}}),M.defineLocale("gl",{months:"xaneiro_febreiro_marzo_abril_maio_xu\xf1o_xullo_agosto_setembro_outubro_novembro_decembro".split("_"),monthsShort:"xan._feb._mar._abr._mai._xu\xf1._xul._ago._set._out._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"domingo_luns_martes_m\xe9rcores_xoves_venres_s\xe1bado".
vendor: 4,317 bytes, line 559
559split("_"),weekdaysShort:"dom._lun._mar._m\xe9r._xov._ven._s\xe1b.".split("_"),weekdaysMin:"do_lu_ma_m\xe9_xo_ve_s\xe1".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY H:mm",LLLL:"dddd, D [de] MMMM [de] YYYY H:mm"},calendar:{sameDay:function(){return"[hoxe "+(1!==this.hours()?"\xe1s":"\xe1")+"] LT"},nextDay:function(){return"[ma\xf1\xe1 "+(1!==this.hours()?"\xe1s":"\xe1")+"] LT"},nextWeek:function(){return"dddd ["+(1!==this.hours()?"\xe1s":"a")+"] LT"},lastDay:function(){return"[onte "+(1!==this.hours()?"\xe1":"a")+"] LT"},lastWeek:function(){return"[o] dddd [pasado "+(1!==this.hours()?"\xe1s":"a")+"] LT"},sameElse:"L"},relativeTime:{future:function(e){return 0===e.indexOf("un")?"n"+e:"en "+e},past:"hai %s",s:"uns segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"unha hora",hh:"%d horas",d:"un d\xeda",dd:"%d d\xedas",M:"un mes",MM:"%d meses",y:"un ano",yy:"%d anos"},dayOfMonthOrdinalParse:/\d{1,2}\xba/,ordinal:"%d\xba",week:{dow:1,doy:4}}),M.defineLocale("gom-deva",{months:{standalone:"\u091c\u093e\u0928\u0947\u0935\u093e\u0930\u0940_\u092b\u0947\u092c\u094d\u0930\u0941\u0935\u093e\u0930\u0940_\u092e\u093e\u0930\u094d\u091a_\u090f\u092a\u094d\u0930\u0940\u0932_\u092e\u0947_\u091c\u0942\u0928_\u091c\u0941\u0932\u092f_\u0911\u0917\u0938\u094d\u091f_\u0938\u092a\u094d\u091f\u0947\u0902\u092c\u0930_\u0911\u0915\u094d\u091f\u094b\u092c\u0930_\u0928\u094b\u0935\u094d\u0939\u0947\u0902\u092c\u0930_\u0921\u093f\u0938\u0947\u0902\u092c\u0930".split("_"),format:"\u091c\u093e\u0928\u0947\u0935\u093e\u0930\u0940\u091a\u094d\u092f\u093e_\u092b\u0947\u092c\u094d\u0930\u0941\u0935\u093e\u0930\u0940\u091a\u094d\u092f\u093e_\u092e\u093e\u0930\u094d\u091a\u093e\u091a\u094d\u092f\u093e_\u090f\u092a\u094d\u0930\u0940\u0932\u093e\u091a\u094d\u092f\u093e_\u092e\u0947\u092f\u093e\u091a\u094d\u092f\u093e_\u091c\u0942\u0928\u093e\u091a\u094d\u092f\u093e_\u091c\u0941\u0932\u092f\u093e\u091a\u094d\u092f\u093e_\u0911\u0917\u0938\u094d\u091f\u093e\u091a\u094d\u092f\u093e_\u0938\u092a\u094d\u091f\u0947\u0902\u092c\u0930\u093e\u091a\u094d\u092f\u093e_\u0911\u0915\u094d\u091f\u094b\u092c\u0930\u093e\u091a\u094d\u092f\u093e_\u0928\u094b\u0935\u094d\u0939\u0947\u0902\u092c\u0930\u093e\u091a\u094d\u092f\u093e_\u0921\u093f\u0938\u0947\u0902\u092c\u0930\u093e\u091a\u094d\u092f\u093e".split("_"),isFormat:/MMMM(\s)+D[oD]?/},monthsShort:"\u091c\u093e\u0928\u0947._\u092b\u0947\u092c\u094d\u0930\u0941._\u092e\u093e\u0930\u094d\u091a_\u090f\u092a\u094d\u0930\u0940._\u092e\u0947_\u091c\u0942\u0928_\u091c\u0941\u0932._\u0911\u0917._\u0938\u092a\u094d\u091f\u0947\u0902._\u0911\u0915\u094d\u091f\u094b._\u0928\u094b\u0935\u094d\u0939\u0947\u0902._\u0921\u093f\u0938\u0947\u0902.".split("_"),monthsParseExact:!0,weekdays:"\u0906\u092f\u0924\u093e\u0930_\u0938\u094b\u092e\u093e\u0930_\u092e\u0902\u0917\u0933\u093e\u0930_\u092c\u0941\u0927\u0935\u093e\u0930_\u092c\u093f\u0930\u0947\u0938\u094d\u0924\u093e\u0930_\u0938\u0941\u0915\u094d\u0930\u093e\u0930_\u0936\u0947\u0928\u0935\u093e\u0930".split("_"),weekdaysShort:"\u0906\u092f\u0924._\u0938\u094b\u092e._\u092e\u0902\u0917\u0933._\u092c\u0941\u0927._\u092c\u094d\u0930\u0947\u0938\u094d\u0924._\u0938\u0941\u0915\u094d\u0930._\u0936\u0947\u0928.".split("_"),weekdaysMin:"\u0906_\u0938\u094b_\u092e\u0902_\u092c\u0941_\u092c\u094d\u0930\u0947_\u0938\u0941_\u0936\u0947".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"A h:mm [\u0935\u093e\u091c\u0924\u093e\u0902]",LTS:"A h:mm:ss [\u0935\u093e\u091c\u0924\u093e\u0902]",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY A h:mm [\u0935\u093e\u091c\u0924\u093e\u0902]",LLLL:"dddd, MMMM Do, YYYY, A h:mm [\u0935\u093e\u091c\u0924\u093e\u0902]",llll:"ddd, D MMM YYYY, A h:mm [\u0935\u093e\u091c\u0924\u093e\u0902]"},calendar:{sameDay:"[\u0906\u092f\u091c] LT",nextDay:"[\u092b\u093e\u0932\u094d\u092f\u093e\u0902] LT",nextWeek:"[\u092b\u0941\u0921\u0932\u094b] dddd[,] LT",lastDay:"[\u0915\u093e\u0932] LT",lastWeek:"[\u092b\u093e\u091f\u0932\u094b] dddd[,] LT",sameElse:"L"},relativeTime:{future:"%s",past:"%s \u0906\u0926\u0940\u0902",s:hn,ss:hn,m:hn,mm:hn,h:hn,hh:hn,d:hn,dd:hn,M:hn,MM:hn,y:hn,yy:hn},dayOfMonthOrdinalParse:/\d{1,2}(\u0935\u0947\u0930)/,ordinal:function(e,a){switch(a){case"D":return e+"\u
5590935\u0947\u0930";default:case"M":case"Q":case"DDD":case"d":case"w":case"W":return e}},week:{dow:0,doy:3},meridiemParse:/\u0930\u093e\u0924\u0940|\u0938\u0915\u093e\u0933\u0940\u0902|\u0926\u0928\u092a\u093e\u0930\u093e\u0902|\u0938\u093e\u0902\u091c\u0947/,meridiemHour:function(e,a){return 12===e&&(e=0),"\u0930\u093e\u0924\u0940"===a?e<4?e:e+12:"\u0938\u0915\u093e\u0933\u0940\u0902"===a?e:"\u0926\u0928\u092a\u093e\u0930\u093e\u0902"===a?12<e?e:e+12:"\u0938\u093e\u0902\u091c\u0947"===a?e+12:void 0},meridiem:function(e,a,t){return e<4?"\u0930\u093e\u0924\u0940":e<12?"\u0938\u0915\u093e\u0933\u0940\u0902":e<16?"\u0926\u0928\u092a\u093e\u0930\u093e\u0902":e<20?"\u0938\u093e\u0902\u091c\u0947":"\u0930\u093e\u0924\u0940"}}),M.defineLocale("gom-latn",{months:{standalone:"Janer_Febrer_Mars_Abril_Mai_Jun_Julai_Agost_Setembr_Otubr_Novembr_Dezembr".split("_"),format:"Janerachea_Febrerachea_Marsachea_Abrilachea_Maiachea_Junachea_Julaiachea_Agostachea_Setembrachea_Otubrachea_Novembrachea_Dezembrachea".split("_"),isFormat:/MMMM(\s)+D[oD]?/},monthsShort:"Jan._Feb._Mars_Abr._Mai_Jun_Jul._Ago._Set._Otu._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Aitar_Somar_Mongllar_Budhvar_Birestar_Sukrar_Son'var".split("_"),weekdaysShort:"Ait._Som._Mon._Bud._Bre._Suk._Son.".split("_"),weekdaysMin:"Ai_Sm_Mo_Bu_Br_Su_Sn".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"A h:mm [vazta]",LTS:"A h:mm:ss [vazta]",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY A h:mm [vazta]",LLLL:"dddd, MMMM Do, YYYY, A h:mm [vazta]",llll:"ddd, D MMM YYYY, A h:mm [vazta]"},calendar:{sameDay:"[Aiz] LT",nextDay:"[Faleam] LT",nextWeek:"[Fuddlo] dddd[,] LT",lastDay:"[Kal] LT",lastWeek:"[Fattlo] dddd[,] LT",sameElse:"L"},relativeTime:{future:"%s",past:"%s adim",s:cn,ss:cn,m:cn,mm:cn,h:cn,hh:cn,d:cn,dd:cn,M:cn,MM:cn,y:cn,yy:cn},dayOfMonthOrdinalParse:/\d{1,2}(er)/,ordinal:function(e,a){switch(a){case"D":return e+"er";default:case"M":case"Q":case"DDD":case"d":case"w":case"W":return e}},week:{dow:0,doy:3},meridiemParse:/rati|sokallim|donparam|sanje/,meridiemHour:function(e,a){return 12===e&&(e=0),"rati"===a?e<4?e:e+12:"sokallim"===a?e:"donparam"===a?12<e?e:e+12:"sanje"===a?e+12:void 0},meridiem:function(e,a,t){return e<4?"rati":e<12?"sokallim":e<16?"donparam":e<20?"sanje":"rati"}});var Ln={1:"\u0ae7",2:"\u0ae8",3:"\u0ae9",4:"\u0aea",5:"\u0aeb",6:"\u0aec",7:"\u0aed",8:"\u0aee",9:"\u0aef",0:"\u0ae6"},Yn={"\u0ae7":"1","\u0ae8":"2","\u0ae9":"3","\u0aea":"4","\u0aeb":"5","\u0aec":"6","\u0aed":"7","\u0aee":"8","\u0aef":"9","\u0ae6":"0"};M.defineLocale("gu",{months:"\u0a9c\u0abe\u0aa8\u0acd\u0aaf\u0ac1\u0a86\u0ab0\u0ac0_\u0aab\u0ac7\u0aac\u0acd\u0ab0\u0ac1\u0a86\u0ab0\u0ac0_\u0aae\u0abe\u0ab0\u0acd\u0a9a_\u0a8f\u0aaa\u0acd\u0ab0\u0abf\u0ab2_\u0aae\u0ac7_\u0a9c\u0ac2\u0aa8_\u0a9c\u0ac1\u0ab2\u0abe\u0a88_\u0a91\u0a97\u0ab8\u0acd\u0a9f_\u0ab8\u0aaa\u0acd\u0a9f\u0ac7\u0aae\u0acd\u0aac\u0ab0_\u0a91\u0a95\u0acd\u0a9f\u0acd\u0aac\u0ab0_\u0aa8\u0ab5\u0ac7\u0aae\u0acd\u0aac\u0ab0_\u0aa1\u0abf\u0ab8\u0ac7\u0aae\u0acd\u0aac\u0ab0".split("_"),monthsShort:"\u0a9c\u0abe\u0aa8\u0acd\u0aaf\u0ac1._\u0aab\u0ac7\u0aac\u0acd\u0ab0\u0ac1._\u0aae\u0abe\u0ab0\u0acd\u0a9a_\u0a8f\u0aaa\u0acd\u0ab0\u0abf._\u0aae\u0ac7_\u0a9c\u0ac2\u0aa8_\u0a9c\u0ac1\u0ab2\u0abe._\u0a91\u0a97._\u0ab8\u0aaa\u0acd\u0a9f\u0ac7._\u0a91\u0a95\u0acd\u0a9f\u0acd._\u0aa8\u0ab5\u0ac7._\u0aa1\u0abf\u0ab8\u0ac7.".split("_"),monthsParseExact:!0,weekdays:"\u0ab0\u0ab5\u0abf\u0ab5\u0abe\u0ab0_\u0ab8\u0acb\u0aae\u0ab5\u0abe\u0ab0_\u0aae\u0a82\u0a97\u0ab3\u0ab5\u0abe\u0ab0_\u0aac\u0ac1\u0aa7\u0acd\u0ab5\u0abe\u0ab0_\u0a97\u0ac1\u0ab0\u0ac1\u0ab5\u0abe\u0ab0_\u0ab6\u0ac1\u0a95\u0acd\u0ab0\u0ab5\u0abe\u0ab0_\u0ab6\u0aa8\u0abf\u0ab5\u0abe\u0ab0".split("_"),weekdaysShort:"\u0ab0\u0ab5\u0abf_\u0ab8\u0acb\u0aae_\u0aae\u0a82\u0a97\u0ab3_\u0aac\u0ac1\u0aa7\u0acd_\u0a97\u0ac1\u0ab0\u0ac1_\u0ab6\u0ac1\u0a95\u0acd\u0ab0_\u0ab6\u0aa8\u0abf".split("_"),weekdaysMin:"\u0ab0_\u0ab8\u0acb_\u0aae\u0a82_\u0aac\u0ac1_\u0a97\u0ac1_\u0ab6\u0ac1_\u0ab6".split("_"),longDateFormat:{LT:"A h:mm \u0ab5\u0abe\u0a97\u0acd\u0aaf\u0ac7",LTS:"A h:mm:ss \u0ab5\u0abe\u0a97\u0acd\u0aaf\u0ac7",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm \u0ab5\u0abe\u0a97\u0acd\u0aaf\u0ac7",LLLL:"dddd, D MMMM YYYY, A h:mm \u0ab5\u0abe\u0a97\u0acd\u0aaf\u0ac7"},calendar:{sameDay:"[\u0a86\u0a9c] LT",nextDay:"[\u0a95\u0abe\u0ab2\u0ac7] LT",nextWeek:"dddd, LT",lastDay:"[\u0a97\u0a87\u0a95\u0abe\u0ab2\u0ac7] LT",lastWeek:"[\u0aaa\u0abe\u0a9b\u0ab2\u0abe] dddd, LT",sameElse:"L"},relativeTime:{future:"%s \u0aae\u0abe",past:"%s \u0aaa\u0ab9\u0ac7\u0ab2\u0abe",s:"\u0a85\u0aae\u0ac1\u0a95 \u0aaa\u0ab3\u0acb",ss:"%d \u0ab8\u0ac7\u0a95\u0a82\u0aa1",m:"\u0a8f\u0a95 \u0aae\u0abf\u0aa8\u0abf\u0a9f",mm:"%d \u0aae\u0abf\u0aa8\u0abf\u0a9f",h:"\u0a8f\u0a95 \u0a95\u0ab2\u0abe\u0a95",hh:"%
559d \u0a95\u0ab2\u0abe\u0a95",d:"\u0a8f\u0a95 \u0aa6\u0abf\u0ab5\u0ab8",dd:"%d \u0aa6\u0abf\u0ab5\u0ab8",M:"\u0a8f\u0a95 \u0aae\u0ab9\u0abf\u0aa8\u0acb",MM:"%d \u0aae\u0ab9\u0abf\u0aa8\u0acb",y:"\u0a8f\u0a95 \u0ab5\u0ab0\u0acd\u0ab7",yy:"%d \u0ab5\u0ab0\u0acd\u0ab7"},preparse:function(e){return e.replace(/[\u0ae7\u0ae8\u0ae9\u0aea\u0aeb\u0aec\u0aed\u0aee\u0aef\u0ae6]/g,function(e){return Yn[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return Ln[e]})},meridiemParse:/\u0ab0\u0abe\u0aa4|\u0aac\u0aaa\u0acb\u0ab0|\u0ab8\u0ab5\u0abe\u0ab0|\u0ab8\u0abe\u0a82\u0a9c/,meridiemHour:function(e,a){return 12===e&&(e=0),"\u0ab0\u0abe\u0aa4"===a?e<4?e:e+12:"\u0ab8\u0ab5\u0abe\u0ab0"===a?e:"\u0aac\u0aaa\u0acb\u0ab0"===a?10<=e?e:e+12:"\u0ab8\u0abe\u0a82\u0a9c"===a?e+12:void 0},meridiem:function(e,a,t){return e<4?"\u0ab0\u0abe\u0aa4":e<10?"\u0ab8\u0ab5\u0abe\u0ab0":e<17?"\u0aac\u0aaa\u0acb\u0ab0":e<20?"\u0ab8\u0abe\u0a82\u0a9c":"\u0ab0\u0abe\u0aa4"},week:{dow:0,doy:6}}),M.defineLocale("he",{months:"\u05d9\u05e0\u05d5\u05d0\u05e8_\u05e4\u05d1\u05e8\u05d5\u05d0\u05e8_\u05de\u05e8\u05e5_\u05d0\u05e4\u05e8\u
55905d9\u05dc_\u05de\u05d0\u05d9_\u05d9\u05d5\u05e0\u05d9_\u05d9\u05d5\u05dc\u05d9_\u05d0\u05d5\u05d2\u05d5\u05e1\u05d8_\u05e1\u05e4\u05d8\u05de\u05d1\u05e8_\u05d0\u05d5\u05e7\u05d8\u05d5\u05d1\u05e8_\u05e0\u05d5\u05d1\u05de\u05d1\u05e8_\u05d3\u05e6\u05de\u05d1\u05e8".split("_"),monthsShort:"\u05d9\u05e0\u05d5\u05f3_\u05e4\u05d1\u05e8\u05f3_\u05de\u05e8\u05e5_\u05d0\u05e4\u05e8\u05f3_\u05de\u05d0\u05d9_\u05d9\u05d5\u05e0\u05d9_\u05d9\u05d5\u05dc\u05d9_\u05d0\u05d5\u05d2\u05f3_\u05e1\u05e4\u05d8\u05f3_\u05d0\u05d5\u05e7\u05f3_\u05e0\u05d5\u05d1\u05f3_\u05d3\u05e6\u05de\u05f3".split("_"),weekdays:"\u05e8\u05d0\u05e9\u05d5\u05df_\u05e9\u05e0\u05d9_\u05e9\u05dc\u05d9\u05e9\u05d9_\u05e8\u05d1\u05d9\u05e2\u05d9_\u05d7\u05de\u05d9\u05e9\u05d9_\u05e9\u05d9\u05e9\u05d9_\u05e9\u05d1\u05ea".split("_"),weekdaysShort:"\u05d0\u05f3_\u05d1\u05f3_\u05d2\u05f3_\u05d3\u05f3_\u05d4\u05f3_\u05d5\u05f3_\u05e9\u05f3".split("_"),weekdaysMin:"\u05d0_\u05d1_\u05d2_\u05d3_\u05d4_\u05d5_\u05e9".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [\u05d1]MMMM YYYY",LLL:"D [\u05d1]MMMM YYYY HH:mm",LLLL:"dddd, D [\u05d1]MMMM YYYY HH:mm",l:"D/M/YYYY",ll:"D MMM YYYY",lll:"D MMM YYYY HH:mm",llll:"ddd, D MMM YYYY HH:mm"},calendar:{sameDay:"[\u05d4\u05d9\u05d5\u05dd \u05d1\u05be]LT",nextDay:"[\u05de\u05d7\u05e8 \u05d1\u05be]LT",nextWeek:"dddd [\u05d1\u05e9\u05e2\u05d4] LT",lastDay:"[\u05d0\u05ea\u05de\u05d5\u05dc \u05d1\u05be]LT",lastWeek:"[\u05d1\u05d9\u05d5\u05dd] dddd [\u05d4\u05d0\u05d7\u05e8\u05d5\u05df \u05d1\u05e9\u05e2\u05d4] LT",sameElse:"L"},relativeTime:{future:"\u05d1\u05e2\u05d5\u05d3 %s",past:"\u05dc\u05e4\u05e0\u05d9 %s",s:"\u05de\u05e1\u05e4\u05e8 \u05e9\u05e0\u05d9\u05d5\u05ea",ss:"%d \u05e9\u05e0\u05d9\u05d5\u05ea",m:"\u05d3\u05e7\u05d4",mm:"%d \u05d3\u05e7\u05d5\u05ea",h:"\u05e9\u05e2\u05d4",hh:function(e){return 2===e?"\u05e9\u05e2\u05ea\u05d9\u05d9\u05dd":e+" \u05e9\u05e2\u05d5\u05ea"},d:"\u05d9\u05d5\u05dd",dd:function(e){return 2===e?"\u05d9\u05d5\u05de\u05d9\u05d9\u05dd":e+" \u05d9\u05de\u05d9\u05dd"},M:"\u05d7\u05d5\u05d3\u05e9",MM:function(e){return 2===e?"\u05d7\u05d5\u05d3\u05e9\u05d9\u05d9\u05dd":e+" \u05d7\u05d5\u05d3\u05e9\u05d9\u05dd"},y:"\u05e9\u05e0\u05d4",yy:function(e){return 2===e?"\u05e9\u05e0\u05ea\u05d9\u05d9\u05dd":e%10==0&&10!==e?e+" \u05e9\u05e0\u05d4":e+" \u05e9\u05e0\u05d9\u05dd"}},meridiemParse:/\u05d0\u05d7\u05d4"\u05e6|\u05dc\u05e4\u05e0\u05d4"\u05e6|\u05d0\u05d7\u05e8\u05d9 \u05d4\u05e6\u05d4\u05e8\u05d9\u05d9\u05dd|\u05dc\u05e4\u05e0\u05d9 \u05d4\u05e6\u05d4\u05e8\u05d9\u05d9\u05dd|\u05dc\u05e4\u05e0\u05d5\u05ea \u05d1\u05d5\u05e7\u05e8|\u05d1\u05d1\u05d5\u05e7\u05e8|\u05d1\u05e2\u05e8\u05d1/i,isPM:function(e){return/^(\u05d0\u05d7\u05d4"\u05e6|\u05d0\u05d7\u05e8\u05d9 \u05d4\u05e6\u05d4\u05e8\u05d9\u05d9\u05dd|\u05d1\u05e2\u05e8\u05d1)$/.test(e)},meridiem:function(e,a,t){return e<5?"\u05dc\u05e4\u05e0\u05d5\u05ea \u05d1\u05d5\u05e7\u05e8":e<10?"\u05d1\u05d1\u05d5\u05e7\u05e8":e<12?t?'\u05dc\u05e4\u05e0\u05d4"\u05e6':"\u05dc\u05e4\u05e0\u05d9 \u05d4\u05e6\u05d4\u05e8\u05d9\u05d9\u05dd":e<18?t?'\u05d0\u05d7\u05d4"\u05e6':"\u05d0\u05d7\u05e8\u05d9 \u05d4\u05e6\u05d4\u05e8\u05d9\u05d9\u05dd":"\u05d1\u05e2\u05e8\u05d1"}});var yn={1:"\u0967",2:"\u0968",3:"\u0969",4:"\u096a",5:"\u096b",6:"\u096c",7:"\u096d",8:"\u096e",9:"\u096f",0:"\u0966"},fn={"\u0967":"1","\u0968":"2","\u0969":"3","\u096a":"4","\u096b":"5","\u096c":"6","\u096d":"7","\u096e":"8","\u096f":"9","\u0966":"0"},pn=[/^\u091c\u0928/i,/^\u092b\u093c\u0930|\u092b\u0930/i,/^\u092e\u093e\u0930\u094d\u091a/i,/^\u0905\u092a\u094d\u0930\u0948/i,/^\u092e\u0908/i,/^\u091c\u0942\u0928/i,/^\u091c\u0941\u0932/i,/^\u0905\u0917/i,/^\u0938\u093f\u0924\u0902|\u0938\u093f\u0924/i,/^\u0905\u0915\u094d\u091f\u0942/i,/^\u0928\u0935|\u0928\u0935\u0902/i,/^\u0926\u093f\u0938\u0902|\u0926\u093f\u0938/i];function kn(e,a,t){var s=e+" ";switch(t){case"ss":return s+=1===e?"sekunda":2===e||3===e||4===e?"sekunde":"sekundi";case"m":return a?"jedna minuta":"jedne minute";case"mm":return s+=1!==e&&(2===e||3===e||4===e)?"minute":"minuta";case"h":return a?"jedan sat":"jednog sata";case"hh":return s+=1===e?"sat":2===e||3===e||4===e?"sata":"sati";case"dd":return s+=1===e?"dan":"dana";case"MM":return s+=1===e?"mjesec":2===e||3===e||4===e?"mjeseca":"mjeseci";case"yy":return s+=1!==e&&(2===e||3===e||4===e)?"godine":"godina"}}M.defineLocale("hi",{months:{format:"\u091c\u0928\u0935\u0930\u0940_\u092b\u093c\u0930\u0935\u0930\u0940_\u092e\u093e\u0930\u094d\u091a_\u0905\u092a\u094d\u0930\u0948\u
5590932_\u092e\u0908_\u091c\u0942\u0928_\u091c\u0941\u0932\u093e\u0908_\u0905\u0917\u0938\u094d\u0924_\u0938\u093f\u0924\u092e\u094d\u092c\u0930_\u0905\u0915\u094d\u091f\u0942\u092c\u0930_\u0928\u0935\u092e\u094d\u092c\u0930_\u0926\u093f\u0938\u092e\u094d\u092c\u0930".split("_"),standalone:"\u091c\u0928\u0935\u0930\u0940_\u092b\u0930\u0935\u0930\u0940_\u092e\u093e\u0930\u094d\u091a_\u0905\u092a\u094d\u0930\u0948\u0932_\u092e\u0908_\u091c\u0942\u0928_\u091c\u0941\u0932\u093e\u0908_\u0905\u0917\u0938\u094d\u0924_\u0938\u093f\u0924\u0902\u092c\u0930_\u0905\u0915\u094d\u091f\u0942\u092c\u0930_\u0928\u0935\u0902\u092c\u0930_\u0926\u093f\u0938\u0902\u092c\u0930".split("_")},monthsShort:"\u091c\u0928._\u092b\u093c\u0930._\u092e\u093e\u0930\u094d\u091a_\u0905\u092a\u094d\u0930\u0948._\u092e\u0908_\u091c\u0942\u0928_\u091c\u0941\u0932._\u0905\u0917._\u0938\u093f\u0924._\u0905\u0915\u094d\u091f\u0942._\u0928\u0935._\u0926\u093f\u0938.".split("_"),weekdays:"\u0930\u0935\u093f\u0935\u093e\u0930_\u0938\u094b\u092e\u0935\u093e\u0930_\u092e\u0902\u0917\u0932\u0935\u093e\u0930_\u092c\u0941\u0927\u0935\u093e\u0930_\u0917\u0941\u0930\u0942\u0935\u093e\u0930_\u0936\u0941\u0915\u094d\u0930\u0935\u093e\u0930_\u0936\u0928\u093f\u0935\u093e\u0930".split("_"),weekdaysShort:"\u0930\u0935\u093f_\u0938\u094b\u092e_\u092e\u0902\u0917\u0932_\u092c\u0941\u0927_\u0917\u0941\u0930\u0942_\u0936\u0941\u0915\u094d\u0930_\u0936\u0928\u093f".split("_"),weekdaysMin:"\u0930_\u0938\u094b_\u092e\u0902_\u092c\u0941_\u0917\u0941_\u0936\u0941_\u0936".split("_"),longDateFormat:{LT:"A h:mm \u092c\u091c\u0947",LTS:"A h:mm:ss \u092c\u091c\u0947",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm \u092c\u091c\u0947",LLLL:"dddd, D MMMM YYYY, A h:mm \u092c\u091c\u0947"},monthsParse:pn,longMonthsParse:pn,shortMonthsParse:[/^\u091c\u0928/i,/^\u092b\u093c\u0930/i,/^\u092e\u093e\u0930\u094d\u091a/i,/^\u0905\u092a\u094d\u0930\u0948/i,/^\u092e\u0908/i,/^\u091c\u0942\u0928/i,/^\u091c\u0941\u0932/i,/^\u0905\u0917/i,/^\u0938\u093f\u0924/i,/^\u0905\u0915\u094d\u091f\u0942/i,/^\u0928\u0935/i,/^\u0926\u093f\u0938/i],monthsRegex:/^(\u091c\u0928\u0935\u0930\u0940|\u091c\u0928\.?|\u092b\u093c\u0930\u0935\u0930\u0940|\u092b\u0930\u0935\u0930\u0940|\u092b\u093c\u0930\.?|\u092e\u093e\u0930\u094d\u091a?|\u0905\u092a\u094d\u0930\u0948\u0932|\u0905\u092a\u094d\u0930\u0948\.?|\u092e\u0908?|\u091c\u0942\u0928?|\u091c\u0941\u0932\u093e\u0908|\u091c\u0941\u0932\.?|\u0905\u0917\u0938\u094d\u0924|\u0905\u0917\.?|\u0938\u093f\u0924\u092e\u094d\u092c\u0930|\u0938\u093f\u0924\u0902\u092c\u0930|\u0938\u093f\u0924\.?|\u0905\u0915\u094d\u091f\u0942\u092c\u0930|\u0905\u0915\u094d\u091f\u0942\.?|\u0928\u0935\u092e\u094d\u092c\u0930|\u0928\u0935\u0902\u092c\u0930|\u0928\u0935\.?|\u0926\u093f\u0938\u092e\u094d\u092c\u0930|\u0926\u093f\u0938\u0902\u092c\u0930|\u0926\u093f\u0938\.?)/i,monthsShortRegex:/^(\u091c\u0928\u0935\u0930\u0940|\u091c\u0928\.?|\u092b\u093c\u0930\u0935\u0930\u0940|\u092b\u0930\u0935\u0930\u0940|\u092b\u093c\u0930\.?|\u092e\u093e\u0930\u094d\u091a?|\u0905\u092a\u094d\u0930\u0948\u0932|\u0905\u092a\u094d\u0930\u0948\.?|\u092e\u0908?|\u091c\u0942\u0928?|\u091c\u0941\u0932\u093e\u0908|\u091c\u0941\u0932\.?|\u0905\u0917\u0938\u094d\u0924|\u0905\u0917\.?|\u0938\u093f\u0924\u092e\u094d\u092c\u0930|\u0938\u093f\u0924\u0902\u092c\u0930|\u0938\u093f\u0924\.?|\u0905\u0915\u094d\u091f\u0942\u092c\u0930|\u0905\u0915\u094d\u091f\u0942\.?|\u0928\u0935\u092e\u094d\u092c\u0930|\u0928\u0935\u0902\u092c\u0930|\u0928\u0935\.?|\u0926\u093f\u0938\u092e\u094d\u092c\u0930|\u0926\u093f\u0938\u0902\u092c\u0930|\u0926\u093f\u0938\.?)/i,monthsStrictRegex:/^(\u091c\u0928\u0935\u0930\u0940?|\u092b\u093c\u0930\u0935\u0930\u0940|\u092b\u0930\u0935\u0930\u0940?|\u092e\u093e\u0930\u094d\u091a?|\u0905\u092a\u094d\u0930\u0948\u0932?|\u092e\u0908?|\u091c\u0942\u0928?|\u091c\u0941\u0932\u093e\u0908?|\u0905\u0917\u0938\u094d\u0924?|\u0938\u093f\u0924\u092e\u094d\u092c\u0930|\u0938\u093f\u0924\u0902\u092c\u0930|\u0938\u093f\u0924?\.?|\u0905\u0915\u094d\u091f\u0942\u092c\u0930|\u0905\u0915\u094d\u091f\u0942\.?|\u0928\u0935\u092e\u094d\u092c\u0930|\u0928\u0935\u0902\u092c\u0930?|\u0926\u093f\u0938\u092e\u094d\u092c\u0930|\u0926\u093f\u0938\u0902\u092c\u0930?)/i,monthsShortStrictRegex:/^(\u091c\u0928\.?|\u092b\u093c\u0930\.?|\u092e\u093e\u0930\u094d\u091a?|\u0905\u092a\u094d\u0930\u0948\.?|\u092e\u0908?|\u091c\u0942\u0928?|\u091c\u0941\u0932\.?|\u0905\u0917\.?|\u0938\u093f\u0924\.?|\u0905\u0915\u094d\u091f\u0942\.?|\u0928\u0935\.?|\u0926\u093f\u0938\.?)/i,calendar:{sameDay:"[\u0906\u091c] LT",nextDay:"[\u0915\u0932] LT",nextWeek:"dddd, LT",lastDay:"[\u0915\u0932] LT",lastWeek:"[\u092a\u093f\u091b\u0932\u0947] dddd, LT",sameElse:"L"},relativeTime:{future:"%s \u092e\u0947\u0902",past:"%s \u092a\u0939\u0932\u0947",s:"\u0915\u0941\u091b \u0939\u0940 \u0915\u094d\u0937\u0923",ss:"%d \u0938\u0947\u0915\u0902\u0921",m:"\u090f\u0915 \u092e\u093f\u0928\u091f",mm:"%d \u092e\u093f\u0928\u091f",h:"\u090f\u0915 \u0918\u0902\u091f\u093e",hh:"%d \u0918\u0902\u091f\u0947",d:"\u090f\u0915 \u0926\u093f\u0928",dd:"%d \u0926\u093f\u0928",M:"\u090f\u0915 \u092e\u0939\u0940\u0928\u0947",MM:"%d \u092e\u0939\u0940\u0928\u0947",y:"\u090f\u0915 \u0935\u0930\u094d\u0937",yy:"%d \u0935\u0930\u094d\u0937"},preparse:function(e){return e.replace(/[\u0967\u0968\u0969\u096a\u096b\u096c\u096d\u096e\u096f\u0966]/g,function(e){return fn[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return yn[e]})},meridiemParse:/\u0930\u093e\u0924|\u0938\u0941\u092c\u0939|\u0926\u094b\u092a\u0939\u0930|\u0936\u093e\u092e/,meridiemHour:function(e,a){return 12===e&&(e=0),"\u0930\u093e\u0924"===a?e<4?e:e+12:"\u0938\u0941\u092c\u0939"===a?e:"\u0926\u094b\u092a\u0939\u0930"===a?10<=e?e:e+12:"\u0936\u093e\u092e"===a?e+12:void 0},meridiem:function(e,a,t){return e<4?"\u0930\u093e\u0924":e<10?"\u0938\u0941\u092c\u0939":e<17?"\u0926\u094b\u092a\u0939\u0930":e<20?"\u093
5596\u093e\u092e":"\u0930\u093e\u0924"},week:{dow:0,doy:6}}),M.defineLocale("hr",{months:{format:"sije\u010dnja_velja\u010de_o\u017eujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca".split("_"),standalone:"sije\u010danj_velja\u010da_o\u017eujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac".split("_")},monthsShort:"sij._velj._o\u017eu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.".split("_"),monthsParseExact:!0,weekdays:"nedjelja_ponedjeljak_utorak_srijeda_\u010detvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._\u010det._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_\u010de_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"Do MMMM YYYY",LLL:"Do MMMM YYYY H:mm",LLLL:"dddd, Do MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[ju\u010der u] LT",lastWeek:function(){switch(this.day()){case 0:return"[pro\u0161lu] [nedjelju] [u] LT";case 3:return"[pro\u0161lu] [srijedu] [u] LT";case 6:return"[pro\u0161le] [subote] [u] LT";case 1:case 2:case 4:case 5:return"[pro\u0161li] dddd [u] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"par sekundi",ss:kn,m:kn,mm:kn,h:kn,hh:kn,d:"dan",dd:kn,M:"mjesec",MM:kn,y:"godinu",yy:kn},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}});var Dn="vas\xe1rnap h\xe9tf\u0151n kedden szerd\xe1n cs\xfct\xf6rt\xf6k\xf6n p\xe9nteken szombaton".split(" ");function Tn(e,a,t,s){var n=e;switch(t){case"s":return s||a?"n\xe9h\xe1ny m\xe1sodperc":"n\xe9h\xe1ny m\xe1sodperce";case"ss":return n+(s||a)?" m\xe1sodperc":" m\xe1sodperce";case"m":return"egy"+(s||a?" perc":" perce");case"mm":return n+(s||a?" perc":" perce");case"h":return"egy"+(s||a?" \xf3ra":" \xf3r\xe1ja");case"hh":return n+(s||a?" \xf3ra":" \xf3r\xe1ja");case"d":return"egy"+(s||a?" nap":" napja");case"dd":return n+(s||a?" nap":" napja");case"M":return"egy"+(s||a?" h\xf3nap":" h\xf3napja");case"MM":return n+(s||a?" h\xf3nap":" h\xf3napja");case"y":return"egy"+(s||a?" \xe9v":" \xe9ve");case"yy":return n+(s||a?" \xe9v":" \xe9ve")}return""}function gn(e){return(e?"":"[m\xfalt] ")+"["+Dn[this.day()]+"] LT[-kor]"}function wn(e){return e%100==11||e%10!=1}function vn(e,a,t,s){var n=e+" ";switch(t){case"s":return a||s?"nokkrar sek\xfandur":"nokkrum sek\xfandum";case"ss":return wn(e)?n+(a||s?"sek\xfandur":"sek\xfandum"):n+"sek\xfanda";case"m":return a?"m\xedn\xfata":"m\xedn\xfatu";case"mm":return wn(e)?n+(a||s?"m\xedn\xfatur":"m\xedn\xfatum"):a?n+"m\xedn\xfata":n+"m\xedn\xfatu";case"hh":return wn(e)?n+(a||s?"klukkustundir":"klukkustundum"):n+"klukkustund";case"d":return a?"dagur":s?"dag":"degi";case"dd":return wn(e)?a?n+"dagar":n+(s?"daga":"d\xf6gum"):a?n+"dagur":n+(s?"dag":"degi");case"M":return a?"m\xe1nu\xf0ur":s?"m\xe1nu\xf0":"m\xe1nu\xf0i";case"MM":return wn(e)?a?n+"m\xe1nu\xf0ir":n+(s?"m\xe1nu\xf0i":"m\xe1nu\xf0um"):a?n+"m\xe1nu\xf0ur":n+(s?"m\xe1nu\xf0":"m\xe1nu\xf0i");case"y":return a||s?"\xe1r":"\xe1ri";case"yy":return wn(e)?n+(a||s?"\xe1r":"\xe1rum"):n+(a||s?"\xe1r":"\xe1ri")}}M.defineLocale("hu",{months:"janu\xe1r_febru\xe1r_m\xe1rcius_\xe1prilis_m\xe1jus_j\xfanius_j\xfalius_augusztus_szeptember_okt\xf3ber_november_december".split("_"),monthsShort:"jan._feb._m\xe1rc._\xe1pr._m\xe1j._j\xfan._j\xfal._aug._szept._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"vas\xe1rnap_h\xe9tf\u0151_kedd_szerda_cs\xfct\xf6rt\xf6k_p\xe9ntek_szombat".split("_"),weekdaysShort:"vas_h\xe9t_kedd_sze_cs\xfct_p\xe9n_szo".split("_"),weekdaysMin:"v_h_k_sze_cs_p_szo".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"YYYY.MM.DD.",LL:"YYYY. MMMM D.",LLL:"YYYY. MMMM D. H:mm",LLLL:"YYYY. MMMM D., dddd H:mm"},meridiemParse:/de|du/i,isPM:function(e){return"u"===e.charAt(1).toLowerCase()},meridiem:function(e,a,t){return e<12?!0===t?"de":"DE":!0===t?"du":"DU"},calendar:{sameDay:"[ma] LT[-kor]",nextDay:"[holnap] LT[-kor]",nextWeek:function(){return gn.call(this,!0)},lastDay:"[tegnap] LT[-kor]",lastWeek:function(){return gn.call(this,!1)},sameElse:"L"},relativeTime:{future:"%s m\xfalva",past:"%s",s:Tn,ss:Tn,m:Tn,mm:Tn,h:Tn,hh:Tn,d:Tn,dd:Tn,M:Tn,MM:T
vendor: 7,120 bytes, line 559
559n,y:Tn,yy:Tn},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),M.defineLocale("hy-am",{months:{format:"\u0570\u0578\u0582\u0576\u057e\u0561\u0580\u056b_\u0583\u0565\u057f\u0580\u057e\u0561\u0580\u056b_\u0574\u0561\u0580\u057f\u056b_\u0561\u057a\u0580\u056b\u056c\u056b_\u0574\u0561\u0575\u056b\u057d\u056b_\u0570\u0578\u0582\u0576\u056b\u057d\u056b_\u0570\u0578\u0582\u056c\u056b\u057d\u056b_\u0585\u0563\u0578\u057d\u057f\u0578\u057d\u056b_\u057d\u0565\u057a\u057f\u0565\u0574\u0562\u0565\u0580\u056b_\u0570\u0578\u056f\u057f\u0565\u0574\u0562\u0565\u0580\u056b_\u0576\u0578\u0575\u0565\u0574\u0562\u0565\u0580\u056b_\u0564\u0565\u056f\u057f\u0565\u0574\u0562\u0565\u0580\u056b".split("_"),standalone:"\u0570\u0578\u0582\u0576\u057e\u0561\u0580_\u0583\u0565\u057f\u0580\u057e\u0561\u0580_\u0574\u0561\u0580\u057f_\u0561\u057a\u0580\u056b\u056c_\u0574\u0561\u0575\u056b\u057d_\u0570\u0578\u0582\u0576\u056b\u057d_\u0570\u0578\u0582\u056c\u056b\u057d_\u0585\u0563\u0578\u057d\u057f\u0578\u057d_\u057d\u0565\u057a\u057f\u0565\u0574\u0562\u0565\u0580_\u0570\u0578\u056f\u057f\u0565\u0574\u0562\u0565\u0580_\u0576\u0578\u0575\u0565\u0574\u0562\u0565\u0580_\u0564\u0565\u056f\u057f\u0565\u0574\u0562\u0565\u0580".split("_")},monthsShort:"\u0570\u0576\u057e_\u0583\u057f\u0580_\u0574\u0580\u057f_\u0561\u057a\u0580_\u0574\u0575\u057d_\u0570\u0576\u057d_\u0570\u056c\u057d_\u0585\u0563\u057d_\u057d\u057a\u057f_\u0570\u056f\u057f_\u0576\u0574\u0562_\u0564\u056f\u057f".split("_"),weekdays:"\u056f\u056b\u0580\u0561\u056f\u056b_\u0565\u0580\u056f\u0578\u0582\u0577\u0561\u0562\u0569\u056b_\u0565\u0580\u0565\u0584\u0577\u0561\u0562\u0569\u056b_\u0579\u0578\u0580\u0565\u0584\u0577\u0561\u0562\u0569\u056b_\u0570\u056b\u0576\u0563\u0577\u0561\u0562\u0569\u056b_\u0578\u0582\u0580\u0562\u0561\u0569_\u0577\u0561\u0562\u0561\u0569".split("_"),weekdaysShort:"\u056f\u0580\u056f_\u0565\u0580\u056f_\u0565\u0580\u0584_\u0579\u0580\u0584_\u0570\u0576\u0563_\u0578\u0582\u0580\u0562_\u0577\u0562\u0569".split("_"),weekdaysMin:"\u056f\u0580\u056f_\u0565\u0580\u056f_\u0565\u0580\u0584_\u0579\u0580\u0584_\u0570\u0576\u0563_\u0578\u0582\u0580\u0562_\u0577\u0562\u0569".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY \u0569.",LLL:"D MMMM YYYY \u0569., HH:mm",LLLL:"dddd, D MMMM YYYY \u0569., HH:mm"},calendar:{sameDay:"[\u0561\u0575\u057d\u0585\u0580] LT",nextDay:"[\u057e\u0561\u0572\u0568] LT",lastDay:"[\u0565\u0580\u0565\u056f] LT",nextWeek:function(){return"dddd [\u0585\u0580\u0568 \u056a\u0561\u0574\u0568] LT"},lastWeek:function(){return"[\u0561\u0576\u0581\u0561\u056e] dddd [\u0585\u0580\u0568 \u056a\u0561\u0574\u0568] LT"},sameElse:"L"},relativeTime:{future:"%s \u0570\u0565\u057f\u0578",past:"%s \u0561\u057c\u0561\u057b",s:"\u0574\u056b \u0584\u0561\u0576\u056b \u057e\u0561\u0575\u0580\u056f\u0575\u0561\u0576",ss:"%d \u057e\u0561\u0575\u0580\u056f\u0575\u0561\u0576",m:"\u0580\u0578\u057a\u0565",mm:"%d \u0580\u0578\u057a\u0565",h:"\u056a\u0561\u0574",hh:"%d \u056a\u0561\u0574",d:"\u0585\u0580",dd:"%d \u0585\u0580",M:"\u0561\u0574\u056b\u057d",MM:"%d \u0561\u0574\u056b\u057d",y:"\u057f\u0561\u0580\u056b",yy:"%d \u057f\u0561\u0580\u056b"},meridiemParse:/\u0563\u056b\u0577\u0565\u0580\u057e\u0561|\u0561\u057c\u0561\u057e\u0578\u057f\u057e\u0561|\u0581\u0565\u0580\u0565\u056f\u057e\u0561|\u0565\u0580\u0565\u056f\u0578\u0575\u0561\u0576/,isPM:function(e){return/^(\u0581\u0565\u0580\u0565\u056f\u057e\u0561|\u0565\u0580\u0565\u056f\u0578\u0575\u0561\u0576)$/.test(e)},meridiem:function(e){return e<4?"\u0563\u056b\u0577\u0565\u0580\u057e\u0561":e<12?"\u0561\u057c\u0561\u057e\u0578\u057f\u057e\u0561":e<17?"\u0581\u0565\u0580\u0565\u056f\u057e\u0561":"\u0565\u0580\u0565\u056f\u0578\u0575\u0561\u0576"},dayOfMonthOrdinalParse:/\d{1,2}|\d{1,2}-(\u056b\u0576|\u0580\u0564)/,ordinal:function(e,a){switch(a){case"DDD":case"w":case"W":case"DDDo":return 1===e?e+"-\u056b\u0576":e+"-\u0580\u0564";default:return e}},week:{dow:1,doy:7}}),M.defineLocale("id",{months:"Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember".split("_"),monthsShort:"Jan_Feb_Mar_Apr_Mei_Jun_Jul_Agt_Sep_Okt_Nov_Des".split("_"),weekdays:"Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu".split("_"),weekdaysShort:"Min_Sen_Sel_Rab_Kam_Jum_Sab".split("_"),weekdaysMin:"Mg_Sn_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|siang|sore|malam/,meridiemHour:function(e,a){return 12===e&&(e=0),"pagi"===a?e:"siang"===a?11<=e?e:e+12:"sore"===a||"malam"===a?e+12:void 0},meridiem:function(e,a,t){return e<11?"pagi":e<15?"siang":e<19?"sore":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Besok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kemarin pukul] LT",lastWeek:"dddd [lalu pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lalu",s:"beberapa detik",ss:"%d detik",m:"semenit",mm:"%d menit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:0,doy:6}}),M.defineLocale("is",{months:"jan\xfaar_febr\xfaar_mars_apr\xedl_ma\xed_j\xfan\xed_j\xfal\xed_\xe1g\xfast_september_okt\xf3ber_n\xf3vember_desember".split("_"),monthsShort:"jan_feb_mar_apr_ma\xed_j\xfan_j\xfal_\xe1g\xfa_sep_okt_n\xf3v_des".split("_"),weekdays:"sunnudagur_m\xe1nudagur_\xferi\xf0judagur_mi\xf0vikudagur_fimmtudagur_f\xf6studagur_laugardagur".split("_"),weekdaysShort:"sun_m\xe1n_\xferi_mi\xf0_fim_f\xf6s_lau".split("_"),weekdaysMin:"Su_M\xe1_\xder_Mi_Fi_F\xf6_La".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] H:mm",LLLL:"dddd, D. MMMM YYYY [kl.] H:mm"},calendar:{sameDay:"[\xed dag kl.] LT",nextDay:"[\xe1 morgun kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[\xed g\xe6r kl.] LT",lastWeek:"[s\xed\xf0asta] dddd [kl.] LT",sameElse:"L"},relativeTime:{future:"eftir %s",past:"fyrir %s s\xed\xf0an",s:vn,ss:vn,m:vn,mm:vn,h:"klukkustund",hh:vn,d:vn,dd:vn,M:vn,MM:vn,y:vn,yy:vn},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),M.defineLocale("it-ch",{months:"gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre".split("_"),monthsShort:"gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic".split("_"),weekdays:"domenica_luned\xec_marted\xec_mercoled\xec_gioved\xec_venerd\xec_sabato".split("_"),weekdaysShort:"dom_lun_mar_mer_gio_ven_sab".split("_"),weekdaysMin:"do_lu_ma_me_gi_ve_sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Oggi alle] LT",nextDay:"[Domani alle] LT",nextWeek:"dddd [alle] LT",lastDay:"[Ieri alle] LT",lastWeek:function(){switch(this.day()){case 0:return"[la scorsa] dddd [alle] LT";default:return"[lo scorso] dddd [alle] LT"}},sameElse:"L"},relativeTime:{future:function(e){return(/^[0-9].+$/.test(e)?"tra":"in")+" "+e},past:"%s fa",s:"alcuni secondi",ss:"%d secondi",m:"un minuto",mm:"%d minuti",h:"un'ora",hh:"%
559d ore",d:"un giorno",dd:"%d giorni",M:"un mese",MM:"%d mesi",y:"un anno",yy:"%d anni"},dayOfMonthOrdinalParse:/\d{1,2}\xba/,ordinal:"%d\xba",week:{dow:1,doy:4}}),M.defineLocale("it",{months:"gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre".split("_"),monthsShort:"gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic".split("_"),weekdays:"domenica_luned\xec_marted\xec_mercoled\xec_gioved\xec_venerd\xec_sabato".split("_"),weekdaysShort:"dom_lun_mar_mer_gio_ven_sab".split("_"),weekdaysMin:"do_lu_ma_me_gi_ve_sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:function(){return"[Oggi a"+(1<this.hours()?"lle ":0===this.hours()?" ":"ll'")+"]LT"},nextDay:function(){return"[Domani a"+(1<this.hours()?"lle ":0===this.hours()?" ":"ll'")+"]LT"},nextWeek:function(){return"dddd [a"+(1<this.hours()?"lle ":0===this.hours()?" ":"ll'")+"]LT"},lastDay:function(){return"[Ieri a"+(1<this.hours()?"lle ":0===this.hours()?" ":"ll'")+"]LT"},lastWeek:function(){switch(this.day()){case 0:return"[La scorsa] dddd [a"+(1<this.hours()?"lle ":0===this.hours()?" ":"ll'")+"]LT";default:return"[Lo scorso] dddd [a"+(1<this.hours()?"lle ":0===this.hours()?" ":"ll'")+"]LT"}},sameElse:"L"},relativeTime:{future:"tra %s",past:"%s fa",s:"alcuni secondi",ss:"%d secondi",m:"un minuto",mm:"%d minuti",h:"un'ora",hh:"%d ore",d:"un giorno",dd:"%d giorni",w:"una settimana",ww:"%d settimane",M:"un mese",MM:"%d mesi",y:"un anno",yy:"%d anni"},dayOfMonthOrdinalParse:/\d{1,2}\xba/,ordinal:"%d\xba",week:{dow:1,doy:4}}),M.defineLocale("ja",{eras:[{since:"2019-05-01",offset:1,name:"\u4ee4\u548c",narrow:"\u32ff",abbr:"R"},{since:"1989-01-08",until:"2019-04-30",offset:1,name:"\u5e73\u6210",narrow:"\u337b",abbr:"H"},{since:"1926-12-25",until:"1989-01-07",offset:1,name:"\u662d\u548c",narrow:"\u337c",abbr:"S"},{since:"1912-07-30",until:"1926-12-24",offset:1,name:"\u5927\u6b63",narrow:"\u337d",abbr:"T"},{since:"1873-01-01",until:"1912-07-29",offset:6,name:"\u660e\u6cbb",narrow:"\u337e",abbr:"M"},{since:"0001-01-01",until:"1873-12-31",offset:1,name:"\u897f\u66a6",narrow:"AD",abbr:"AD"},{since:"0000-12-31",until:-1/0,offset:1,name:"\u7d00\u5143\u524d",narrow:"BC",abbr:"BC"}],eraYearOrdinalRegex:/(\u5143|\d+)\u5e74/,eraYearOrdinalParse:function(e,a){return"\u5143"===a[1]?1:parseInt(a[1]||e,10)},months:"1\u6708_2\u6708_3\u6708_4\u6708_5\u6708_6\u6708_7\u6708_8\u6708_9\u6708_10\u6708_11\u6708_12\u6708".split("_"),monthsShort:"1\u6708_2\u6708_3\u6708_4\u6708_5\u6708_6\u6708_7\u6708_8\u6708_9\u6708_10\u6708_11\u6708_12\u6708".split("_"),weekdays:"\u65e5\u66dc\u65e5_\u6708\u66dc\u65e5_\u706b\u66dc\u65e5_\u6c34\u66dc\u65e5_\u6728\u66dc\u65e5_\u91d1\u66dc\u65e5_\u571f\u66dc\u65e5".split("_"),weekdaysShort:"\u65e5_\u6708_\u706b_\u6c34_\u6728_\u91d1_\u571f".split("_"),weekdaysMin:"\u65e5_\u6708_\u706b_\u6c34_\u6728_\u91d1_\u571f".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY\u5e74M\u6708D\u65e5",LLL:"YYYY\u5e74M\u6708D\u65e5 HH:mm",LLLL:"YYYY\u5e74M\u6708D\u65e5 dddd HH:mm",l:"YYYY/MM/DD",ll:"YYYY\u5e74M\u6708D\u65e5",lll:"YYYY\u5e74M\u6708D\u65e5 HH:mm",llll:"YYYY\u5e74M\u6708D\u65e5(ddd) HH:mm"},meridiemParse:/\u5348\u524d|\u5348\u5f8c/i,isPM:function(e){return"\u5348\u5f8c"===e},meridiem:function(e,a,t){return e<12?"\u5348\u524d":"\u5348\u5f8c"},calendar:{sameDay:"[\u4eca\u65e5] LT",nextDay:"[\u660e\u65e5] LT",nextWeek:function(e){return e.week()!==this.week()?"[\u6765\u9031]dddd LT":"dddd LT"},lastDay:"[\u6628\u65e5] LT",lastWeek:function(e){return this.week()!==e.week()?"[\u5148\u9031]dddd LT":"dddd LT"},sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}\u65e5/,ordinal:function(e,a){switch(a){case"y":return 1===e?"\u5143\u5e74":e+"\u5e74";case"d":case"D":case"DDD":return e+"\u65e5";default:return e}},relativeTime:{future:"%s\u5f8c",past:"%s\u524d",s:"\u6570\u79d2",ss:"%d\u79d2",m:"1\u5206",mm:"%d\u5206",h:"1\u6642\u9593",hh:"%d\u6642\u9593",d:"1\u65e5",dd:"%d\u65e5",M:"1\u30f6\u6708",MM:"%d\u30f6\u6708",y:"1\u5e74",yy:"%d\u5e74"}}),M.defineLocale("jv",{months:"Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember".split("_"),monthsShort:"Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des".split("_"),weekdays:"Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu".split("_"),weekdaysShort:"Min_Sen_Sel_Reb_Kem_Jem_Sep".split("_"),weekdaysMin:"Mg_Sn_Sl_Rb_Km_Jm_Sp".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/enjing|siyang|sonten|ndalu/,meridiemHour:function(e,a){return 12===e&&(e=0),"enjing"===a?e:"siyang"===a?11<=e?e:e+12:"sonten"===a||"ndalu"===a?e+12:void 0},meridiem:function(e,a,t){return e<11?"enjing":e<15?"siyang":e<19?"sonten":"ndalu"},calendar:{sameDay:"[Dinten puniko pukul] LT",nextDay:"[Mbenjang pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kala wingi pukul] LT",lastWeek:"dddd [kepengker pukul] LT",sameElse:"L"},relativeTime:{future:"wonten ing %s",past:"%s ingkang kepengker",s:"sawetawis detik",ss:"%d detik",m:"setunggal menit",mm:"%d menit",h:"setunggal jam",hh:"%d jam",d:"sedinten",dd:"%d dinten",M:"sewulan",MM:"%d wulan",y:"setaun",yy:"%d taun"},week:{dow:1,doy:7}}
vendor: 7,702 bytes, line 559
559),M.defineLocale("ka",{months:"\u10d8\u10d0\u10dc\u10d5\u10d0\u10e0\u10d8_\u10d7\u10d4\u10d1\u10d4\u10e0\u10d5\u10d0\u10da\u10d8_\u10db\u10d0\u10e0\u10e2\u10d8_\u10d0\u10de\u10e0\u10d8\u10da\u10d8_\u10db\u10d0\u10d8\u10e1\u10d8_\u10d8\u10d5\u10dc\u10d8\u10e1\u10d8_\u10d8\u10d5\u10da\u10d8\u10e1\u10d8_\u10d0\u10d2\u10d5\u10d8\u10e1\u10e2\u10dd_\u10e1\u10d4\u10e5\u10e2\u10d4\u10db\u10d1\u10d4\u10e0\u10d8_\u10dd\u10e5\u10e2\u10dd\u10db\u10d1\u10d4\u10e0\u10d8_\u10dc\u10dd\u10d4\u10db\u10d1\u10d4\u10e0\u10d8_\u10d3\u10d4\u10d9\u10d4\u10db\u10d1\u10d4\u10e0\u10d8".split("_"),monthsShort:"\u10d8\u10d0\u10dc_\u10d7\u10d4\u10d1_\u10db\u10d0\u10e0_\u10d0\u10de\u10e0_\u10db\u10d0\u10d8_\u10d8\u10d5\u10dc_\u10d8\u10d5\u10da_\u10d0\u10d2\u10d5_\u10e1\u10d4\u10e5_\u10dd\u10e5\u10e2_\u10dc\u10dd\u10d4_\u10d3\u10d4\u10d9".split("_"),weekdays:{standalone:"\u10d9\u10d5\u10d8\u10e0\u10d0_\u10dd\u10e0\u10e8\u10d0\u10d1\u10d0\u10d7\u10d8_\u10e1\u10d0\u10db\u10e8\u10d0\u10d1\u10d0\u10d7\u10d8_\u10dd\u10d7\u10ee\u10e8\u10d0\u10d1\u10d0\u10d7\u10d8_\u10ee\u10e3\u10d7\u10e8\u10d0\u10d1\u10d0\u10d7\u10d8_\u10de\u10d0\u10e0\u10d0\u10e1\u10d9\u10d4\u10d5\u10d8_\u10e8\u10d0\u10d1\u10d0\u10d7\u10d8".split("_"),format:"\u10d9\u10d5\u10d8\u10e0\u10d0\u10e1_\u10dd\u10e0\u10e8\u10d0\u10d1\u10d0\u10d7\u10e1_\u10e1\u10d0\u10db\u10e8\u10d0\u10d1\u10d0\u10d7\u10e1_\u10dd\u10d7\u10ee\u10e8\u10d0\u10d1\u10d0\u10d7\u10e1_\u10ee\u10e3\u10d7\u10e8\u10d0\u10d1\u10d0\u10d7\u10e1_\u10de\u10d0\u10e0\u10d0\u10e1\u10d9\u10d4\u10d5\u10e1_\u10e8\u10d0\u10d1\u10d0\u10d7\u10e1".split("_"),isFormat:/(\u10ec\u10d8\u10dc\u10d0|\u10e8\u10d4\u10db\u10d3\u10d4\u10d2)/},weekdaysShort:"\u10d9\u10d5\u10d8_\u10dd\u10e0\u10e8_\u10e1\u10d0\u10db_\u10dd\u10d7\u10ee_\u10ee\u10e3\u10d7_\u10de\u10d0\u10e0_\u10e8\u10d0\u10d1".split("_"),weekdaysMin:"\u10d9\u10d5_\u10dd\u10e0_\u10e1\u10d0_\u10dd\u10d7_\u10ee\u10e3_\u10de\u10d0_\u10e8\u10d0".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[\u10d3\u10e6\u10d4\u10e1] LT[-\u10d6\u10d4]",nextDay:"[\u10ee\u10d5\u10d0\u10da] LT[-\u10d6\u10d4]",lastDay:"[\u10d2\u10e3\u10e8\u10d8\u10dc] LT[-\u10d6\u10d4]",nextWeek:"[\u10e8\u10d4\u10db\u10d3\u10d4\u10d2] dddd LT[-\u10d6\u10d4]",lastWeek:"[\u10ec\u10d8\u10dc\u10d0] dddd LT-\u10d6\u10d4",sameElse:"L"},relativeTime:{future:function(e){return e.replace(/(\u10ec\u10d0\u10db|\u10ec\u10e3\u10d7|\u10e1\u10d0\u10d0\u10d7|\u10ec\u10d4\u10da|\u10d3\u10e6|\u10d7\u10d5)(\u10d8|\u10d4)/,function(e,a,t){return"\u10d8"===t?a+"\u10e8\u10d8":a+t+"\u10e8\u10d8"})},past:function(e){return/(\u10ec\u10d0\u10db\u10d8|\u10ec\u10e3\u10d7\u10d8|\u10e1\u10d0\u10d0\u10d7\u10d8|\u10d3\u10e6\u10d4|\u10d7\u10d5\u10d4)/.test(e)?e.replace(/(\u10d8|\u10d4)$/,"\u10d8\u10e1 \u10ec\u10d8\u10dc"):/\u10ec\u10d4\u10da\u10d8/.test(e)?e.replace(/\u10ec\u10d4\u10da\u10d8$/,"\u10ec\u10da\u10d8\u10e1 \u10ec\u10d8\u10dc"):e},s:"\u10e0\u10d0\u10db\u10d3\u10d4\u10dc\u10d8\u10db\u10d4 \u10ec\u10d0\u10db\u10d8",ss:"%d \u10ec\u10d0\u10db\u10d8",m:"\u10ec\u10e3\u10d7\u10d8",mm:"%d \u10ec\u10e3\u10d7\u10d8",h:"\u10e1\u10d0\u10d0\u10d7\u10d8",hh:"%d \u10e1\u10d0\u10d0\u10d7\u10d8",d:"\u10d3\u10e6\u10d4",dd:"%d \u10d3\u10e6\u10d4",M:"\u10d7\u10d5\u10d4",MM:"%d \u10d7\u10d5\u10d4",y:"\u10ec\u10d4\u10da\u10d8",yy:"%d \u10ec\u10d4\u10da\u10d8"},dayOfMonthOrdinalParse:/0|1-\u10da\u10d8|\u10db\u10d4-\d{1,2}|\d{1,2}-\u10d4/,ordinal:function(e){return 0===e?e:1===e?e+"-\u10da\u10d8":e<20||e<=100&&e%20==0||e%100==0?"\u10db\u10d4-"+e:e+"-\u10d4"},week:{dow:1,doy:7}});var bn={0:"-\u0448\u0456",1:"-\u0448\u0456",2:"-\u0448\u0456",3:"-\u0448\u0456",4:"-\u0448\u0456",5:"-\u0448\u0456",6:"-\u0448\u044b",7:"-\u0448\u0456",8:"-\u0448\u0456",9:"-\u0448\u044b",10:"-\u0448\u044b",20:"-\u0448\u044b",30:"-\u0448\u044b",40:"-\u0448\u044b",50:"-\u0448\u0456",60:"-\u0448\u044b",70:"-\u0448\u0456",80:"-\u0448\u0456",90:"-\u0448\u044b",100:"-\u0448\u0456"};M.defineLocale("kk",{months:"\u049b\u0430\u04a3\u0442\u0430\u0440_\u0430\u049b\u043f\u0430\u043d_\u043d\u0430\u0443\u0440\u044b\u0437_\u0441\u04d9\u0443\u0456\u0440_\u043c\u0430\u043c\u044b\u0440_\u043c\u0430\u0443\u0441\u044b\u043c_\u0448\u0456\u043b\u0434\u0435_\u0442\u0430\u043c\u044b\u0437_\u049b\u044b\u0440\u043a\u04af\u0439\u0435\u043a_\u049b\u0430\u0437\u0430\u043d_\u049b\u0430\u0440\u0430\u0448\u0430_\u0436\u0435\u043b\u0442\u043e\u049b\u0441\u0430\u043d".split("_"),monthsShort:"\u049b\u0430\u04a3_\u0430\u049b\u043f_\u043d\u0430\u0443_\u0441\u04d9\u0443_\u043c\u0430\u043c_\u043c\u0430\u0443_\u0448\u0456\u043b_\u0442\u0430\u043c_\u049b\u044b\u0440_\u049b\u0430\u0437_\u049b\u0430\u0440_\u0436\u0435\u043b".split("_"),weekdays:"\u0436\u0435\u043a\u0441\u0435\u043d\u0431\u0456_\u0434\u04af\u0439\u0441\u0435\u043d\u0431\u0456_\u0441\u0435\u0439\u0441\u0435\u043d\u0431\u0456_\u0441\u04d9\u0440\u0441\u0435\u043d\u0431\u0456_\u0431\u0435\u0439\u0441\u0435\u043d\u0431\u0456_\u0436\u04b1\u043c\u0430_\u0441\u0435\u043d\u0431\u0456".split("_"),weekdaysShort:"\u0436\u0435\u043a_\u0434\u04af\u0439_\u0441\u0435\u0439_\u0441\u04d9\u0440_\u0431\u0435\u0439_\u0436\u04b1\u043c_\u0441\u0435\u043d".split("_"),weekdaysMin:"\u0436\u043a_\u0434\u0439_\u0441\u0439_\u0441\u0440_\u0431\u0439_\u0436\u043c_\u0441\u043d".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[\u0411\u04af\u0433\u0456\u043d \u0441\u0430\u0493\u0430\u0442] LT",nextDay:"[\u0415\u0440\u0442\u0435\u04a3 \u0441\u0430\u0493\u0430\u0442] LT",nextWeek:"dddd [\u0441\u0430\u0493\u0430\u0442] LT",lastDay:"[\u041a\u0435\u0448\u0435 \u0441\u0430\u0493\u0430\u0442] LT",lastWeek:"[\u04e8\u0442\u043a\u0435\u043d \u0430\u043f\u0442\u0430\u043d\u044b\u04a3] dddd [\u0441\u0430\u0493\u0430\u0442] LT",sameElse:"L"},relativeTime:{future:"%s \u0456\u0448\u0456\u043d\u0434\u0435",past:"%s \u0431\u04b1\u0440\u044b\u043d",s:"\u0431\u0456\u0440\u043d\u0435\u0448\u0435 \u0441\u0435\u043a\u0443\u043d\u0434",ss:"%d \u0441\u0435\u043a\u0443\u043d\u0434",m:"\u0431\u0456\u0440 \u043c\u0438\u043d\u0443\u0442",mm:"%d \u043c\u0438\u043d\u0443\u0442",h:"\u0431\u0456\u0440 \u0441\u0430\u0493\u0430\u0442",hh:"%d \u0441\u0430\u0493\u0430\u0442",d:"\u0431\u0456\u0440 \u043a\u04af\u043d",dd:"%d \u043a\u04af\u043d",M:"\u0431\u0456\u0440 \u0430\u0439",MM:"%d \u0430\u0439",y:"\u0431\u0456\u0440 \u0436\u044b\u043b",yy:"%d \u0436\u044b\u043b"},dayOfMonthOrdinalParse:/\d{1,2}-(\u0448\u0456|\u0448\u044b)/,ordinal:function(e){return e+(bn[e]||bn[e%10]||bn[100<=e?100:null])},week:{dow:1,doy:7}});var Sn={1:"\u17e1",2:"\u17e2",3:"\u17e3",4:"\u17e4",5:"\u17e5",6:"\u17e6",7:"\u17e7",8:"\u17e8",9:"\u17e9",0:"\u17e0"},Hn={"\u17e1":"1","\u17e2":"2","\u17e3":"3","\u17e4":"4","\u17e5":"5","\u17e6":"6","\u17e7":"7","\u17e8":"8","\u17e9":"9","\u17e0":"0"};M.defineLocale("km",{months:"\u1798\u1780\u179a\u17b6_\u1780\u17bb\u1798\u17d2\u1797\u17c8_\u1798\u17b8\u1793\u17b6_\u1798\u17c1\u179f\u17b6_\u17a7\u179f\u1797\u17b6_\u1798\u17b7\u1790\u17bb\u1793\u17b6_\u1780\u1780\u17d2\u1780\u178a\u17b6_\u179f\u17b8\u17a0\u17b6_\u1780\u1789\u17d2\u1789\u17b6_\u178f\u17bb\u179b\u17b6_\u179c\u17b7\u1785\u17d2\u1786\u17b7\u1780\u17b6_\u1792\u17d2\u1793\u17bc".split("_"),monthsShort:"\u1798\u1780\u179a\u17b6_\u1780\u17bb\u1798\u17d2\u1797\u17c8_\u1798\u17b8\u1793\u17b6_\u1798\u17c1\u179f\u17b6_\u17a7\u179f\u1797\u17b6_\u1798\u17b7\u1790\u17bb\u1793\u17b6_\u1780\u1780\u17d2\u1780\u178a\u17b6_\u179f\u17b8\u17a0\u17b6_\u1780\u1789\u17d2\u1789\u17b6_\u178f\u17bb\u179b\u17b6_\u179c\u17b7\u1785\u17d2\u1786\u17b7\u1780\u17b6_\u1792\u17d2\u1793\u17bc".split("_"),weekdays:"\u
55917a2\u17b6\u1791\u17b7\u178f\u17d2\u1799_\u1785\u17d0\u1793\u17d2\u1791_\u17a2\u1784\u17d2\u1782\u17b6\u179a_\u1796\u17bb\u1792_\u1796\u17d2\u179a\u17a0\u179f\u17d2\u1794\u178f\u17b7\u17cd_\u179f\u17bb\u1780\u17d2\u179a_\u179f\u17c5\u179a\u17cd".split("_"),weekdaysShort:"\u17a2\u17b6_\u1785_\u17a2_\u1796_\u1796\u17d2\u179a_\u179f\u17bb_\u179f".split("_"),weekdaysMin:"\u17a2\u17b6_\u1785_\u17a2_\u1796_\u1796\u17d2\u179a_\u179f\u17bb_\u179f".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},meridiemParse:/\u1796\u17d2\u179a\u17b9\u1780|\u179b\u17d2\u1784\u17b6\u1785/,isPM:function(e){return"\u179b\u17d2\u1784\u17b6\u1785"===e},meridiem:function(e,a,t){return e<12?"\u1796\u17d2\u179a\u17b9\u1780":"\u179b\u17d2\u1784\u17b6\u1785"},calendar:{sameDay:"[\u1790\u17d2\u1784\u17c3\u1793\u17c1\u17c7 \u1798\u17c9\u17c4\u1784] LT",nextDay:"[\u179f\u17d2\u17a2\u17c2\u1780 \u1798\u17c9\u17c4\u1784] LT",nextWeek:"dddd [\u1798\u17c9\u17c4\u1784] LT",lastDay:"[\u1798\u17d2\u179f\u17b7\u179b\u1798\u17b7\u1789 \u1798\u17c9\u17c4\u1784] LT",lastWeek:"dddd [\u179f\u1794\u17d2\u178f\u17b6\u17a0\u17cd\u1798\u17bb\u1793] [\u1798\u17c9\u17c4\u1784] LT",sameElse:"L"},relativeTime:{future:"%s\u1791\u17c0\u178f",past:"%s\u1798\u17bb\u1793",s:"\u1794\u17c9\u17bb\u1793\u17d2\u1798\u17b6\u1793\u179c\u17b7\u1793\u17b6\u1791\u17b8",ss:"%d \u179c\u17b7\u1793\u17b6\u1791\u17b8",m:"\u1798\u17bd\u1799\u1793\u17b6\u1791\u17b8",mm:"%d \u1793\u17b6\u1791\u17b8",h:"\u1798\u17bd\u1799\u1798\u17c9\u17c4\u1784",hh:"%d \u1798\u17c9\u17c4\u1784",d:"\u1798\u17bd\u1799\u1790\u17d2\u1784\u17c3",dd:"%d \u1790\u17d2\u1784\u17c3",M:"\u1798\u17bd\u1799\u1781\u17c2",MM:"%d \u1781\u17c2",y:"\u1798\u17bd\u1799\u1786\u17d2\u1793\u17b6\u17c6",yy:"%d \u1786\u17d2\u1793\u17b6\u17c6"},dayOfMonthOrdinalParse:/\u1791\u17b8\d{1,2}/,ordinal:"\u1791\u17b8%d",preparse:function(e){return e.replace(/[\u17e1\u17e2\u17e3\u17e4\u17e5\u17e6\u17e7\u17e8\u17e9\u17e0]/g,function(e){return Hn[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return Sn[e]})},week:{dow:1,doy:4}});var jn={1:"\u0ce7",2:"\u0ce8",3:"\u0ce9",4:"\u0cea",5:"\u0ceb",6:"\u0cec",7:"\u0ced",8:"\u0cee",9:"\u0cef",0:"\u0ce6"},xn={"\u0ce7":"1","\u0ce8":"2","\u0ce9":"3","\u0cea":"4","\u0ceb":"5","\u0cec":"6","\u0ced":"7","\u0cee":"8","\u0cef":"9","\u0ce6":"0"};M.defineLocale("kn",{months:"\u0c9c\u0ca8\u0cb5\u0cb0\u0cbf_\u0cab\u0cc6\u0cac\u0ccd\u0cb0\u0cb5\u0cb0\u0cbf_\u0cae\u0cbe\u0cb0\u0ccd\u0c9a\u0ccd_\u0c8f\u0caa\u0ccd\u0cb0\u0cbf\u0cb2\u0ccd_\u0cae\u0cc6\u0cd5_\u0c9c\u0cc2\u0ca8\u0ccd_\u0c9c\u0cc1\u0cb2\u0cc6\u0cd6_\u0c86\u0c97\u0cb8\u0ccd\u0c9f\u0ccd_\u0cb8\u0cc6\u0caa\u0ccd\u0c9f\u0cc6\u0c82\u0cac\u0cb0\u0ccd_\u0c85\u0c95\u0ccd\u0c9f\u0cc6\u0cc2\u0cd5\u0cac\u0cb0\u0ccd_\u0ca8\u0cb5\u0cc6\u0c82\u0cac\u0cb0\u0ccd_\u0ca1\u0cbf\u0cb8\u0cc6\u0c82\u0cac\u0cb0\u0ccd".split("_"),monthsShort:"\u0c9c\u0ca8_\u0cab\u0cc6\u0cac\u0ccd\u0cb0_\u0cae\u0cbe\u0cb0\u0ccd\u0c9a\u0ccd_\u0c8f\u0caa\u0ccd\u0cb0\u0cbf\u0cb2\u0ccd_\u0cae\u0cc6\u0cd5_\u0c9c\u0cc2\u0ca8\u0ccd_\u0c9c\u0cc1\u0cb2\u0cc6\u0cd6_\u0c86\u0c97\u0cb8\u0ccd\u0c9f\u0ccd_\u0cb8\u0cc6\u0caa\u0ccd\u0c9f\u0cc6\u0c82_\u0c85\u0c95\u0ccd\u0c9f\u0cc6\u0cc2\u0cd5_\u0ca8\u0cb5\u0cc6\u0c82_\u0ca1\u0cbf\u0cb8\u0cc6\u0c82".split("_"),monthsParseExact:!0,weekdays:"\u0cad\u0cbe\u0ca8\u0cc1\u0cb5\u0cbe\u0cb0_\u0cb8\u0cc6\u0cc2\u0cd5\u0cae\u0cb5\u0cbe\u0cb0_\u0cae\u0c82\u0c97\u0cb3\u0cb5\u0cbe\u0cb0_\u0cac\u0cc1\u0ca7\u0cb5\u0cbe\u0cb0_\u0c97\u0cc1\u0cb0\u0cc1\u0cb5\u0cbe\u0cb0_\u0cb6\u0cc1\u0c95\u0ccd\u0cb0\u0cb5\u0cbe\u0cb0_\u0cb6\u0ca8\u0cbf\u0cb5\u0cbe\u0cb0".split("_"),weekdaysShort:"\u0cad\u0cbe\u0ca8\u0cc1_\u0cb8\u0cc6\u0cc2\u0cd5\u0cae_\u0cae\u0c82\u0c97\u0cb3_\u0cac\u0cc1\u0ca7_\u0c97\u0cc1\u0cb0\u0cc1_\u0cb6\u0cc1\u0c95\u0ccd\u0cb0_\u0cb6\u0ca8\u0cbf".split("_"),weekdaysMin:"\u0cad\u0cbe_\u0cb8\u0cc6\u0cc2\u0cd5_\u0cae\u0c82_\u0cac\u0cc1_\u0c97\u0cc1_\u0cb6\u0cc1_\u0cb6".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm",LLLL:"dddd, D MMMM YYYY, A h:mm"},calendar:{sameDay:"[\u0c87\u0c82\u0ca6\u0cc1] LT",nextDay:"[\u0ca8\u0cbe\u0cb3\u0cc6] LT",nextWeek:"dddd, LT",lastDay:"[\u0ca8\u0cbf\u0ca8\u0ccd\u0ca8\u0cc6] LT",lastWeek:"[\u0c95\u0cc6\u0cc2\u0ca8\u0cc6\u0caf] dddd, LT",sameElse:"L"},relativeTime:{future:"%s \u0ca8\u0c82\u0ca4\u0cb0",past:"%s \u0cb9\u0cbf\u0c82\u0ca6\u0cc6",s:"\u0c95\u0cc6\u0cb2\u0cb5\u0cc1 \u0c95\u0ccd\u0cb7\u0ca3\u0c97\u0cb3\u0cc1",ss:"%d \u0cb8\u0cc6\u0c95\u0cc6\u0c82\u0ca1\u0cc1\u0c97\u0cb3\u0cc1",m:"\u0c92\u0c82\u0ca6\u0cc1 \u0ca8\u0cbf\u0cae\u0cbf\u0cb7",mm:"%d \u0ca8\u0cbf\u0cae\u0cbf\u0cb7",h:"\u0c92\u0c82\u0ca6\u0cc1 \u0c97\u0c82\u0c9f\u0cc6",hh:"%
559d \u0c97\u0c82\u0c9f\u0cc6",d:"\u0c92\u0c82\u0ca6\u0cc1 \u0ca6\u0cbf\u0ca8",dd:"%d \u0ca6\u0cbf\u0ca8",M:"\u0c92\u0c82\u0ca6\u0cc1 \u0ca4\u0cbf\u0c82\u0c97\u0cb3\u0cc1",MM:"%d \u0ca4\u0cbf\u0c82\u0c97\u0cb3\u0cc1",y:"\u0c92\u0c82\u0ca6\u0cc1 \u0cb5\u0cb0\u0ccd\u0cb7",yy:"%d \u0cb5\u0cb0\u0ccd\u0cb7"},preparse:function(e){return e.replace(/[\u0ce7\u0ce8\u0ce9\u0cea\u0ceb\u0cec\u0ced\u0cee\u0cef\u0ce6]/g,function(e){return xn[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return jn[e]})},meridiemParse:/\u0cb0\u0cbe\u0ca4\u0ccd\u0cb0\u0cbf|\u0cac\u0cc6\u0cb3\u0cbf\u0c97\u0ccd\u0c97\u0cc6|\u0cae\u0ca7\u0ccd\u0caf\u0cbe\u0cb9\u0ccd\u0ca8|\u0cb8\u0c82\u0c9c\u0cc6/,meridiemHour:function(e,a){return 12===e&&(e=0),"\u0cb0\u0cbe\u0ca4\u0ccd\u0cb0\u0cbf"===a?e<4?e:e+12:"\u0cac\u0cc6\u0cb3\u0cbf\u0c97\u0ccd\u0c97\u0cc6"===a?e:"\u0cae\u0ca7\u0ccd\u0caf\u0cbe\u0cb9\u0ccd\u0ca8"===a?10<=e?e:e+12:"\u0cb8\u0c82\u0c9c\u0cc6"===a?e+12:void 0},meridiem:function(e,a,t){return e<4?"\u0cb0\u0cbe\u0ca4\u0ccd\u0cb0\u0cbf":e<10?"\u0cac\u0cc6\u0cb3\u0cbf\u0c97\u0ccd\u0c97\u0cc6":e<17?"\u0cae\u0ca7\u0ccd\u0caf\u0cbe\u0cb9\u0ccd\u0ca8":e<20?"\u0cb8\u0c82\u0c9c\u0cc6":"\u0cb0\u0cbe\u0ca4\u0ccd\u0cb0\u0cbf"},dayOfMonthOrdinalParse:/\d{1,2}(\u0ca8\u0cc6\u0cd5)/,ordinal:function(e){return e+"\u0ca8\u0cc6\u0cd5"},week:{dow:0,doy:6}}),M.defineLocale("ko",{months:"1\uc6d4_2\uc6d4_3\uc6d4_4\uc6d4_5\uc6d4_6\uc6d4_7\uc6d4_8\uc6d4_9\uc6d4_10\uc6d4_11\uc6d4_12\uc6d4".split("_"),monthsShort:"1\uc6d4_2\uc6d4_3\uc6d4_4\uc6d4_5\uc6d4_6\uc6d4_7\uc6d4_8\uc6d4_9\uc6d4_10\uc6d4_11\uc6d4_12\uc6d4".split("_"),weekdays:"\uc77c\uc694\uc77c_\uc6d4\uc694\uc77c_\ud654\uc694\uc77c_\uc218\uc694\uc77c_\ubaa9\uc694\uc77c_\uae08\uc694\uc77c_\ud1a0\uc694\uc77c".split("_"),weekdaysShort:"\uc77c_\uc6d4_\ud654_\uc218_\ubaa9_\uae08_\ud1a0".split("_"),weekdaysMin:"\uc77c_\uc6d4_\ud654_\uc218_\ubaa9_\uae08_\ud1a0".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"YYYY.MM.DD.",LL:"YYYY\ub144 MMMM D\uc77c",LLL:"YYYY\ub144 MMMM D\uc77c A h:mm",LLLL:"YYYY\ub144 MMMM D\uc77c dddd A h:mm",l:"YYYY.MM.DD.",ll:"YYYY\ub144 MMMM D\uc77c",lll:"YYYY\ub144 MMMM D\uc77c A h:mm",llll:"YYYY\ub144 MMMM D\uc77c dddd A h:mm"},calendar:{sameDay:"\uc624\ub298 LT",nextDay:"\ub0b4\uc77c LT",nextWeek:"dddd LT",lastDay:"\uc5b4\uc81c LT",lastWeek:"\uc9c0\ub09c\uc8fc dddd LT",sameElse:"L"},relativeTime:{future:"%s \ud6c4",past:"%s \uc804",s:"\uba87 \ucd08",ss:"%d\ucd08",m:"1\ubd84",mm:"%d\ubd84",h:"\ud55c \uc2dc\uac04",hh:"%d\uc2dc\uac04",d:"\ud558\ub8e8",dd:"%d\uc77c",M:"\ud55c \ub2ec",MM:"%d\ub2ec",y:"\uc77c \ub144",yy:"%d\ub144"},dayOfMonthOrdinalParse:/\d{1,2}(\uc77c|\uc6d4|\uc8fc)/,ordinal:function(e,a){switch(a){case"d":case"D":case"DDD":return e+"\uc77c";case"M":return e+"\uc6d4";case"w":case"W":return e+"\uc8fc";default:return e}},meridiemParse:/\uc624\uc804|\uc624\ud6c4/,isPM:function(e){return"\uc624\ud6c4"===e},meridiem:function(e,a,t){return e<12?"\uc624\uc804":"\uc624\ud6c4"}});var Pn={1:"\u0661",2:"\u0662",3:"\u0663",4:"\u0664",5:"\u0665",6:"\u0666",7:"\u0667",8:"\u0668",9:"\u0669",0:"\u0660"},On={"\u0661":"1","\u0662":"2","\u0663":"3","\u0664":"4","\u0665":"5","\u0666":"6","\u0667":"7","\u0668":"8","\u0669":"9","\u0660":"0"},Wn=["\u06a9\u0627\u0646\u0648\u0646\u06cc \u062f\u0648\u0648\u06d5\u0645","\u0634\u0648\u0628\u0627\u062a","\u0626\u0627\u0632\u0627\u0631","\u0646\u06cc\u0633\u0627\u0646","\u0626\u0627\u06cc\u0627\u0631","\u062d\u0648\u0632\u06d5\u06cc\u0631\u0627\u0646","\u062a\u06d5\u0645\u0645\u0648\u0632","\u0626\u0627\u0628","\u0626\u06d5\u06cc\u0644\u0648\u0648\u0644","\u062a\u0634\u0631\u06cc\u0646\u06cc \u06cc\u06d5\u0643\u06d5\u0645","\u062a\u0634\u0631\u06cc\u0646\u06cc \u062f\u0648\u0648\u06d5\u0645","\u0643\u0627\u0646\u0648\u0646\u06cc \u06cc\u06d5\u06a9\u06d5\u0645"];M.defineLocale("ku",{months:Wn,monthsShort:Wn,weekdays:"\u06cc\u0647\u200c\u0643\u0634\u0647\u200c\u0645\u0645\u0647\u200c_\u062f\u0648\u0648\u0634\u0647\u200c\u0645\u0645\u0647\u200c_\u0633\u06ce\u0634\u0647\u200c\u0645\u0645\u0647\u200c_\u0686\u0648\u0627\u0631\u0634\u0647\u200c\u0645\u0645\u0647\u200c_\u067e\u06ce\u0646\u062c\u0634\u0647\u200c\u0645\u0645\u0647\u200c_\u0647\u0647\u200c\u06cc\u0646\u06cc_\u0634\u0647\u200c\u0645\u0645\u0647\u200c".split("_"),weekdaysShort:"\u06cc\u0647\u200c\u0643\u0634\u0647\u200c\u0645_\u062f\u0648\u0648\u0634\u0647\u200c\u0645_\u0633\u06ce\u0634\u0647\u200c\u0645_\u0686\u0648\u0627\u0631\u0634\u0647\u200c\u0645_\u067e\u06ce\u0646\u062c\u0634\u0647\u200c\u0645_\u0647\u0647\u200c\u06cc\u0646\u06cc_\u0634\u0647\u200c\u0645\u0645\u0647\u200c".split("_"),weekdaysMin:"\u06cc_\u062f_\u0633_\u0686_\u067e_\u0647_\u0634".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},meridiemParse:/\u0626\u06ce\u0648\u0627\u0631\u0647\u200c|\u0628\u0647\u200c\u06cc\u0627\u0646\u06cc/,isPM:function(e){return/\u0626\u06ce\u0648\u0627\u0631\u0647\u200c/.test(e)},meridiem:function(e,a,t){return e<12?"\u0628\u0647\u200c\u06cc\u0627\u0646\u06cc":"\u0626\u06ce\u0648\u0627\u0631\u0647\u200c"},calendar:{sameDay:"[\u0626\u0647\u200c\u0645\u0631\u06c6 \u0643\u0627\u062a\u0698\u0645\u06ce\u0631] LT",nextDay:"[\u0628\u0647\u200c\u06cc\u0627\u0646\u06cc \u0643\u0627\u062a\u0698\u0645\u06ce\u0631] LT",nextWeek:"dddd [\u0643\u0627\u062a\u0698\u0645\u06ce\u0631] LT",lastDay:"[\u062f\u0648\u06ce\u0646\u06ce \u0643\u0627\u062a\u0698\u0645\u06ce\u0631] LT",lastWeek:"dddd [\u0643\u0627\u062a\u0698\u0645\u06ce\u0631] LT",sameElse:"L"},relativeTime:{future:"\u0644\u0647\u200c %s",past:"%s",s:"\u0686\u0647\u200c\u0646\u062f \u0686\u0631\u0643\u0647\u200c\u06cc\u0647\u200c\u0643",ss:"\u0686\u0631\u0643\u0647\u200c %d",m:"\u06cc\u0647\u200c\u0643 \u062e\u0648\u0644\u0647\u200c\u0643",mm:"%d \u062e\u0648\u0644\u0647\u200c\u0643",h:"\u06cc\u0647\u200c\u0643 \u0643\u0627\u062a\u0698\u0645\u06ce\u0631",hh:"%d \u0643\u0627\u062a\u0698\u0645\u06ce\u0631",d:"\u06cc\u0647\u200c\u0643 \u0695\u06c6\u0698",dd:"%d \u0695\u06c6\u0698",M:"\u06cc\u0647\u200c\u0643 \u0645\u0627\u0646\u06af",MM:"%d \u0645\u0627\u0646\u06af",y:"\u06cc\u0647\u200c\u0643 \u0633\u0627\u06b5",yy:"%d \u0633\u0627\u06b5"},preparse:function(e){return e.replace(/[\u0661\u0662\u0663\u0664\u0665\u0666\u0667\u0668\u0669\u0660]/g,function(e){return On[e]}).replace(/\u060c/g,",")},postformat:function(e){return e.replace(/\d/g,function(e){return Pn[e]}).replace(/,/g,"\u060c")},week:{dow:6,doy:12}});var An={0:"-\u0447\u04af",1:"-\u0447\u0438",2:"-\u0447\u0438",3:"-\u0447\u04af",4:"-\u0447\u04af",5:"-\u0447\u0438",6:"-\u0447\u044b",7:"-\u0447\u0438",8:"-\u0447\u0438",9:"-\u0447\u0443",10:"-\u0447\u0443",20:"-\u0447\u044b",30:"-\u0447\u0443",40:"-\u0447\u044b",50:"-\u0447\u04af",60:"-\u0447\u044b",70:"-\u0447\u0438",80:"-\u0447\u0438",90:"-\u0447\u0443",100:"-\u0447\u04af"};function En(e,a,t,s){var n={m:["eng Minutt","enger Minutt"],h:["eng Stonn","enger Stonn"],d:["een Dag","engem Dag"],M:["ee Mount","engem Mount"],y:["ee Joer","engem Joer"]};return a?n[t][0]:n[t][1]}function Fn(e){if(e=parseInt(e,10),isNaN(e))return!1;if(e<0)return!0;
vendor: 6,691 bytes, line 559
559if(e<10)return 4<=e&&e<=7;if(e<100){var a=e%10;return 0==a?Fn(e/10):Fn(a)}if(e<1e4){for(;10<=e;)e/=10;return Fn(e)}return Fn(e/=1e3)}M.defineLocale("ky",{months:"\u044f\u043d\u0432\u0430\u0440\u044c_\u0444\u0435\u0432\u0440\u0430\u043b\u044c_\u043c\u0430\u0440\u0442_\u0430\u043f\u0440\u0435\u043b\u044c_\u043c\u0430\u0439_\u0438\u044e\u043d\u044c_\u0438\u044e\u043b\u044c_\u0430\u0432\u0433\u0443\u0441\u0442_\u0441\u0435\u043d\u0442\u044f\u0431\u0440\u044c_\u043e\u043a\u0442\u044f\u0431\u0440\u044c_\u043d\u043e\u044f\u0431\u0440\u044c_\u0434\u0435\u043a\u0430\u0431\u0440\u044c".split("_"),monthsShort:"\u044f\u043d\u0432_\u0444\u0435\u0432_\u043c\u0430\u0440\u0442_\u0430\u043f\u0440_\u043c\u0430\u0439_\u0438\u044e\u043d\u044c_\u0438\u044e\u043b\u044c_\u0430\u0432\u0433_\u0441\u0435\u043d_\u043e\u043a\u0442_\u043d\u043e\u044f_\u0434\u0435\u043a".split("_"),weekdays:"\u0416\u0435\u043a\u0448\u0435\u043c\u0431\u0438_\u0414\u04af\u0439\u0448\u04e9\u043c\u0431\u04af_\u0428\u0435\u0439\u0448\u0435\u043c\u0431\u0438_\u0428\u0430\u0440\u0448\u0435\u043c\u0431\u0438_\u0411\u0435\u0439\u0448\u0435\u043c\u0431\u0438_\u0416\u0443\u043c\u0430_\u0418\u0448\u0435\u043c\u0431\u0438".split("_"),weekdaysShort:"\u0416\u0435\u043a_\u0414\u04af\u0439_\u0428\u0435\u0439_\u0428\u0430\u0440_\u0411\u0435\u0439_\u0416\u0443\u043c_\u0418\u0448\u0435".split("_"),weekdaysMin:"\u0416\u043a_\u0414\u0439_\u0428\u0439_\u0428\u0440_\u0411\u0439_\u0416\u043c_\u0418\u0448".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[\u0411\u04af\u0433\u04af\u043d \u0441\u0430\u0430\u0442] LT",nextDay:"[\u042d\u0440\u0442\u0435\u04a3 \u0441\u0430\u0430\u0442] LT",nextWeek:"dddd [\u0441\u0430\u0430\u0442] LT",lastDay:"[\u041a\u0435\u0447\u044d\u044d \u0441\u0430\u0430\u0442] LT",lastWeek:"[\u04e8\u0442\u043a\u04e9\u043d \u0430\u043f\u0442\u0430\u043d\u044b\u043d] dddd [\u043a\u04af\u043d\u04af] [\u0441\u0430\u0430\u0442] LT",sameElse:"L"},relativeTime:{future:"%s \u0438\u0447\u0438\u043d\u0434\u0435",past:"%s \u043c\u0443\u0440\u0443\u043d",s:"\u0431\u0438\u0440\u043d\u0435\u0447\u0435 \u0441\u0435\u043a\u0443\u043d\u0434",ss:"%d \u0441\u0435\u043a\u0443\u043d\u0434",m:"\u0431\u0438\u0440 \u043c\u04af\u043d\u04e9\u0442",mm:"%d \u043c\u04af\u043d\u04e9\u0442",h:"\u0431\u0438\u0440 \u0441\u0430\u0430\u0442",hh:"%d \u0441\u0430\u0430\u0442",d:"\u0431\u0438\u0440 \u043a\u04af\u043d",dd:"%d \u043a\u04af\u043d",M:"\u0431\u0438\u0440 \u0430\u0439",MM:"%d \u0430\u0439",y:"\u0431\u0438\u0440 \u0436\u044b\u043b",yy:"%d \u0436\u044b\u043b"},dayOfMonthOrdinalParse:/\d{1,2}-(\u0447\u0438|\u0447\u044b|\u0447\u04af|\u0447\u0443)/,ordinal:function(e){return e+(An[e]||An[e%10]||An[100<=e?100:null])},week:{dow:1,doy:7}}),M.defineLocale("lb",{months:"Januar_Februar_M\xe4erz_Abr\xebll_Mee_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonndeg_M\xe9indeg_D\xebnschdeg_M\xebttwoch_Donneschdeg_Freideg_Samschdeg".split("_"),weekdaysShort:"So._M\xe9._D\xeb._M\xeb._Do._Fr._Sa.".split("_"),weekdaysMin:"So_M\xe9_D\xeb_M\xeb_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm [Auer]",LTS:"H:mm:ss [Auer]",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm [Auer]",LLLL:"dddd, D. MMMM YYYY H:mm [Auer]"},calendar:{sameDay:"[Haut um] LT",sameElse:"L",nextDay:"[Muer um] LT",nextWeek:"dddd [um] LT",lastDay:"[G\xebschter um] LT",lastWeek:function(){switch(this.day()){case 2:case 4:return"[Leschten] dddd [um] LT";default:return"[Leschte] dddd [um] LT"}}},relativeTime:{future:function(e){return Fn(e.substr(0,e.indexOf(" ")))?"a "+e:"an "+e},past:function(e){return Fn(e.substr(0,e.indexOf(" ")))?"viru "+e:"virun "+e},s:"e puer Sekonnen",ss:"%d Sekonnen",m:En,mm:"%d Minutten",h:En,hh:"%d Stonnen",d:En,dd:"%d Deeg",M:En,MM:"%d M\xe9int",y:En,yy:"%d Joer"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),M.defineLocale("lo",{months:"\u0ea1\u0eb1\u0e87\u0e81\u0ead\u0e99_\u0e81\u0eb8\u0ea1\u0e9e\u0eb2_\u0ea1\u0eb5\u0e99\u0eb2_\u0ec0\u0ea1\u0eaa\u0eb2_\u0e9e\u0eb6\u0e94\u0eaa\u0eb0\u0e9e\u0eb2_\u0ea1\u0eb4\u0e96\u0eb8\u0e99\u0eb2_\u0e81\u0ecd\u0ea5\u0eb0\u0e81\u0ebb\u0e94_\u0eaa\u0eb4\u0e87\u0eab\u0eb2_\u0e81\u0eb1\u0e99\u0e8d\u0eb2_\u0e95\u0eb8\u0ea5\u0eb2_\u0e9e\u0eb0\u0e88\u0eb4\u0e81_\u0e97\u0eb1\u0e99\u0ea7\u0eb2".split("_"),monthsShort:"\u0ea1\u0eb1\u0e87\u0e81\u0ead\u0e99_\u0e81\u0eb8\u0ea1\u0e9e\u0eb2_\u0ea1\u0eb5\u0e99\u0eb2_\u0ec0\u0ea1\u0eaa\u0eb2_\u0e9e\u0eb6\u0e94\u0eaa\u0eb0\u0e9e\u0eb2_\u0ea1\u0eb4\u0e96\u0eb8\u0e99\u0eb2_\u0e81\u0ecd\u0ea5\u0eb0\u0e81\u0ebb\u0e94_\u0eaa\u0eb4\u0e87\u0eab\u0eb2_\u0e81\u0eb1\u0e99\u0e8d\u0eb2_\u0e95\u0eb8\u0ea5\u0eb2_\u0e9e\u0eb0\u0e88\u0eb4\u0e81_\u0e97\u0eb1\u0e99\u0ea7\u0eb2".split("_"),weekdays:"\u0ead\u0eb2\u0e97\u0eb4\u0e94_\u0e88\u0eb1\u0e99_\u0ead\u0eb1\u0e87\u0e84\u0eb2\u0e99_\u0e9e\u0eb8\u0e94_\u0e9e\u0eb0\u0eab\u0eb1\u0e94_\u0eaa\u0eb8\u0e81_\u0ec0\u0eaa\u0ebb\u0eb2".split("_"),weekdaysShort:"\u0e97\u0eb4\u0e94_\u0e88\u0eb1\u0e99_\u0ead\u0eb1\u0e87\u0e84\u0eb2\u0e99_\u0e9e\u0eb8\u0e94_\u0e9e\u0eb0\u0eab\u0eb1\u0e94_\u0eaa\u0eb8\u0e81_\u0ec0\u0eaa\u0ebb\u0eb2".split("_"),weekdaysMin:"\u0e97_\u0e88_\u0ead\u0e84_\u0e9e_\u0e9e\u0eab_\u0eaa\u0e81_\u0eaa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"\u0ea7\u0eb1\u0e99dddd D MMMM YYYY HH:mm"},meridiemParse:/\u0e95\u0ead\u0e99\u0ec0\u0e8a\u0ebb\u0ec9\u0eb2|\u0e95\u0ead\u0e99\u0ec1\u0ea5\u0e87/,isPM:function(e){return"\u0e95\u0ead\u0e99\u0ec1\u0ea5\u0e87"===e},meridiem:function(e,a,t){return e<12?"\u0e95\u0ead\u0e99\u0ec0\u0e8a\u0ebb\u0ec9\u0eb2":"\u0e95\u0ead\u0e99\u0ec1\u0ea5\u0e87"},calendar:{sameDay:"[\u0ea1\u0eb7\u0ec9\u0e99\u0eb5\u0ec9\u0ec0\u0ea7\u0ea5\u0eb2] LT",nextDay:"[\u0ea1\u0eb7\u0ec9\u0ead\u0eb7\u0ec8\u0e99\u0ec0\u0ea7\u0ea5\u0eb2] LT",nextWeek:"[\u0ea7\u0eb1\u0e99]dddd[\u0edc\u0ec9\u0eb2\u0ec0\u0ea7\u0ea5\u0eb2] LT",lastDay:"[\u0ea1\u0eb7\u0ec9\u0ea7\u0eb2\u0e99\u0e99\u0eb5\u0ec9\u0ec0\u0ea7\u0ea5\u0eb2] LT",lastWeek:"[\u0ea7\u0eb1\u0e99]dddd[\u0ec1\u0ea5\u0ec9\u0ea7\u0e99\u0eb5\u0ec9\u0ec0\u0ea7\u0ea5\u0eb2] LT",sameElse:"L"},relativeTime:{future:"\u0ead\u0eb5\u0e81 %s",past:"%s\u0e9c\u0ec8\u0eb2\u0e99\u0ea1\u0eb2",s:"\u0e9a\u0ecd\u0ec8\u0ec0\u0e97\u0ebb\u0ec8\u0eb2\u0ec3\u0e94\u0ea7\u0eb4\u0e99\u0eb2\u0e97\u0eb5",ss:"%d \u0ea7\u0eb4\u0e99\u0eb2\u0e97\u0eb5",m:"1 \u0e99\u0eb2\u0e97\u0eb5",mm:"%d \u0e99\u0eb2\u0e97\u0eb5",h:"1 \u0e8a\u0ebb\u0ec8\u0ea7\u0ec2\u0ea1\u0e87",hh:"%
559d \u0e8a\u0ebb\u0ec8\u0ea7\u0ec2\u0ea1\u0e87",d:"1 \u0ea1\u0eb7\u0ec9",dd:"%d \u0ea1\u0eb7\u0ec9",M:"1 \u0ec0\u0e94\u0eb7\u0ead\u0e99",MM:"%d \u0ec0\u0e94\u0eb7\u0ead\u0e99",y:"1 \u0e9b\u0eb5",yy:"%d \u0e9b\u0eb5"},dayOfMonthOrdinalParse:/(\u0e97\u0eb5\u0ec8)\d{1,2}/,ordinal:function(e){return"\u0e97\u0eb5\u0ec8"+e}});var zn={ss:"sekund\u0117_sekund\u017ei\u0173_sekundes",m:"minut\u0117_minut\u0117s_minut\u0119",mm:"minut\u0117s_minu\u010di\u0173_minutes",h:"valanda_valandos_valand\u0105",hh:"valandos_valand\u0173_valandas",d:"diena_dienos_dien\u0105",dd:"dienos_dien\u0173_dienas",M:"m\u0117nuo_m\u0117nesio_m\u0117nes\u012f",MM:"m\u0117nesiai_m\u0117nesi\u0173_m\u0117nesius",y:"metai_met\u0173_metus",yy:"metai_met\u0173_metus"};function Nn(e,a,t,s){return a?Rn(t)[0]:s?Rn(t)[1]:Rn(t)[2]}function Jn(e){return e%10==0||10<e&&e<20}function Rn(e){return zn[e].split("_")}function Cn(e,a,t,s){var n=e+" ";return 1===e?n+Nn(0,a,t[0],s):a?n+(Jn(e)?Rn(t)[1]:Rn(t)[0]):s?n+Rn(t)[1]:n+(Jn(e)?Rn(t)[1]:Rn(t)[2])}M.defineLocale("lt",{months:{format:"sausio_vasario_kovo_baland\u017eio_gegu\u017e\u0117s_bir\u017eelio_liepos_rugpj\u016b\u010dio_rugs\u0117jo_spalio_lapkri\u010dio_gruod\u017eio".split("_"),standalone:"sausis_vasaris_kovas_balandis_gegu\u017e\u0117_bir\u017eelis_liepa_rugpj\u016btis_rugs\u0117jis_spalis_lapkritis_gruodis".split("_"),isFormat:/D[oD]?(\[[^\[\]]*\]|\s)+MMMM?|MMMM?(\[[^\[\]]*\]|\s)+D[oD]?/},monthsShort:"sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd".split("_"),weekdays:{format:"sekmadien\u012f_pirmadien\u012f_antradien\u012f_tre\u010diadien\u012f_ketvirtadien\u012f_penktadien\u012f_\u0161e\u0161tadien\u012f".split("_"),standalone:"sekmadienis_pirmadienis_antradienis_tre\u010diadienis_ketvirtadienis_penktadienis_\u0161e\u0161tadienis".split("_"),isFormat:/dddd HH:mm/},weekdaysShort:"Sek_Pir_Ant_Tre_Ket_Pen_\u0160e\u0161".split("_"),weekdaysMin:"S_P_A_T_K_Pn_\u0160".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY [m.] MMMM D [d.]",LLL:"YYYY [m.] MMMM D [d.], HH:mm [val.]",LLLL:"YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]",l:"YYYY-MM-DD",ll:"YYYY [m.] MMMM D [d.]",lll:"YYYY [m.] MMMM D [d.], HH:mm [val.]",llll:"YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]"},calendar:{sameDay:"[\u0160iandien] LT",nextDay:"[Rytoj] LT",nextWeek:"dddd LT",lastDay:"[Vakar] LT",lastWeek:"[Pra\u0117jus\u012f] dddd LT",sameElse:"L"},relativeTime:{future:"po %s",past:"prie\u0161 %s",s:function(e,a,t,s){return a?"kelios sekund\u0117s":s?"keli\u0173 sekund\u017ei\u0173":"kelias sekundes"},ss:Cn,m:Nn,mm:Cn,h:Nn,hh:Cn,d:Nn,dd:Cn,M:Nn,MM:Cn,y:Nn,yy:Cn},dayOfMonthOrdinalParse:/\d{1,2}-oji/,ordinal:function(e){return e+"-oji"},week:{dow:1,doy:4}});var In={ss:"sekundes_sekund\u0113m_sekunde_sekundes".split("_"),m:"min\u016btes_min\u016bt\u0113m_min\u016bte_min\u016btes".split("_"),mm:"min\u016btes_min\u016bt\u0113m_min\u016bte_min\u016btes".split("_"),h:"stundas_stund\u0101m_stunda_stundas".split("_"),hh:"stundas_stund\u0101m_stunda_stundas".split("_"),d:"dienas_dien\u0101m_diena_dienas".split("_"),dd:"dienas_dien\u0101m_diena_dienas".split("_"),M:"m\u0113ne\u0161a_m\u0113ne\u0161iem_m\u0113nesis_m\u0113ne\u0161i".split("_"),MM:"m\u0113ne\u0161a_m\u0113ne\u0161iem_m\u0113nesis_m\u0113ne\u0161i".split("_"),y:"gada_gadiem_gads_gadi".split("_"),yy:"gada_gadiem_gads_gadi".split("_")};function Un(e,a,t){return t?a%10==1&&a%100!=11?e[2]:e[3]:a%10==1&&a%100!=11?e[0]:e[1]}function Gn(e,a,t){return e+" "+Un(In[t],e,a)}function Vn(e,a,t){return Un(In[t],e,a)}M.defineLocale("lv",{months:"janv\u0101ris_febru\u0101ris_marts_apr\u012blis_maijs_j\u016bnijs_j\u016blijs_augusts_septembris_oktobris_novembris_decembris".split("_"),monthsShort:"jan_feb_mar_apr_mai_j\u016bn_j\u016bl_aug_sep_okt_nov_dec".split("_"),weekdays:"sv\u0113tdiena_pirmdiena_otrdiena_tre\u0161diena_ceturtdiena_piektdiena_sestdiena".split("_"),weekdaysShort:"Sv_P_O_T_C_Pk_S".split("_"),weekdaysMin:"Sv_P_O_T_C_Pk_S".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY.",LL:"YYYY. [gada] D. MMMM",LLL:"YYYY. [gada] D. MMMM, HH:mm",LLLL:"YYYY. [gada] D. MMMM, dddd, HH:mm"},calendar:{sameDay:"[\u0160odien pulksten] LT",nextDay:"[R\u012bt pulksten] LT",nextWeek:"dddd [pulksten] LT",lastDay:"[Vakar pulksten] LT",lastWeek:"[Pag\u0101ju\u0161\u0101] dddd [pulksten] LT",sameElse:"L"},relativeTime:{future:"p\u0113c %s",past:"pirms %s",s:function(e,a){return a?"da\u017eas sekundes":"da\u017e\u0101m sekund\u0113m"},ss:Gn,m:Vn,mm:Gn,h:Vn,hh:Gn,d:Vn,dd:Gn,M:Vn,MM:Gn,y:Vn,yy:Gn},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});var Bn={words:{ss:["sekund","sekunda","sekundi"],m:["jedan minut","jednog minuta"],mm:["minut","minuta","minuta"],h:["jedan sat","jednog sata"],hh:["sat","sata","sati"],dd:["dan","dana","dana"],MM:["mjesec","mjeseca","mjeseci"],yy:["godina","godine","godina"]},correctGrammaticalCase:function(e,a){return 1===e?a[0]:2<=e&&e<=4?a[1]:a[2]},translate:function(e,a,t){var s=Bn.words[t];return 1===t.length?a?s[0]:s[1]:e+" "+Bn.correctGrammaticalCase(e,s)}};function Kn(e,a,t,s){switch(t){case"s":return a?"\u0445\u044d\u0434\u0445\u044d\u043d \u0441\u0435\u043a\u0443\u043d\u0434":"\u0445\u044d\u0434\u0445\u044d\u043d \u0441\u0435\u043a\u0443\u043d\u0434\u044b\u043d";case"ss":return e+(a?" \u0441\u0435\u043a\u0443\u043d\u0434":" \u0441\u0435\u043a\u0443\u043d\u0434\u044b\u043d");case"m":case"mm":return e+(a?" \u043c\u0438\u043d\u0443\u0442":" \u043c\u0438\u043d\u0443\u0442\u044b\u043d");case"h":case"hh":return e+(a?" \u0446\u0430\u0433":" \u0446\u0430\u0433\u0438\u0439\u043d");case"d":case"dd":return e+(a?" \u04e9\u0434\u04e9\u0440":" \u04e9\u0434\u0440\u0438\u0439\u043d");case"M":case"MM":return e+(a?" \u0441\u0430\u0440":" \u0441\u0430\u0440\u044b\u043d");case"y":case"yy":return e+(a?" \u0436\u0438\u043b":" \u0436\u0438\u043b\u0438\u0439\u043d");default:return e}}M.defineLocale("me",{months:"januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar".split("_"),monthsShort:"jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedjelja_ponedjeljak_utorak_srijeda_\u010detvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._\u010det._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_\u010de_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sjutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[ju\u010de u] LT",lastWeek:function(){return["[pro\u0161le] [nedjelje] [u] LT","[pro\u0161log] [ponedjeljka] [u] LT","[pro\u0161log] [utorka] [u] LT","[pro\u0161le] [srijede] [u] LT","[pro\u0161log] [\u010detvrtka] [u] LT","[pro\u0161log] [petka] [u] LT","[pro\u0161le] [subote] [u] LT"][this.day()]},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"nekoliko sekundi",ss:Bn.translate,m:Bn.translate,mm:Bn.translate,h:Bn.translate,hh:Bn.translate,d:"dan",dd:Bn.translate,M:"mjesec",MM:Bn.translate,y:"godinu",yy:Bn.translate},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}}),M.defineLocale("mi",{months:"Kohi-t\u0101te_Hui-tanguru_Pout\u016b-te-rangi_Paenga-wh\u0101wh\u0101_Haratua_Pipiri_H\u014dngoingoi_Here-turi-k\u014dk\u0101_Mahuru_Whiringa-\u0101-nuku_Whiringa-\u0101-rangi_Hakihea".split("_"),monthsShort:"Kohi_Hui_Pou_Pae_Hara_Pipi_H\u014dngoi_Here_Mahu_Whi-nu_Whi-ra_Haki".split("_"),monthsRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,monthsStrictRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,monthsShortRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,monthsShortStrictRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,2}/i,weekdays:"R\u0101tapu_Mane_T\u016brei_Wenerei_T\u0101ite_Paraire_H\u0101tarei".split("_"),weekdaysShort:"Ta_Ma_T\u016b_We_T\u0101i_Pa_H\u0101".split("_"),weekdaysMin:"Ta_Ma_T\u016b_We_T\u0101i_Pa_H\u0101".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [i] HH:mm",LLLL:"dddd, D MMMM YYYY [i] HH:mm"},calendar:{sameDay:"[i teie mahana, i] LT",nextDay:"[apopo i] LT",nextWeek:"dddd [i] LT",lastDay:"[inanahi i] LT",lastWeek:"dddd [whakamutunga i] LT",sameElse:"L"},relativeTime:{future:"i roto i %s",past:"%s i mua",s:"te h\u0113kona ruarua",ss:"%d h\u0113kona",m:"he meneti",mm:"%d meneti",h:"te haora",hh:"%
559d haora",d:"he ra",dd:"%d ra",M:"he marama",MM:"%d marama",y:"he tau",yy:"%d tau"},dayOfMonthOrdinalParse:/\d{1,2}\xba/,ordinal:"%d\xba",week:{dow:1,doy:4}}),M.defineLocale("mk",{months:"\u0458\u0430\u043d\u0443\u0430\u0440\u0438_\u0444\u0435\u0432\u0440\u0443\u0430\u0440\u0438_\u043c\u0430\u0440\u0442_\u0430\u043f\u0440\u0438\u043b_\u043c\u0430\u0458_\u0458\u0443\u043d\u0438_\u0458\u0443\u043b\u0438_\u0430\u0432\u0433\u0443\u0441\u0442_\u0441\u0435\u043f\u0442\u0435\u043c\u0432\u0440\u0438_\u043e\u043a\u0442\u043e\u043c\u0432\u0440\u0438_\u043d\u043e\u0435\u043c\u0432\u0440\u0438_\u0434\u0435\u043a\u0435\u043c\u0432\u0440\u0438".split("_"),monthsShort:"\u0458\u0430\u043d_\u0444\u0435\u0432_\u043c\u0430\u0440_\u0430\u043f\u0440_\u043c\u0430\u0458_\u0458\u0443\u043d_\u0458\u0443\u043b_\u0430\u0432\u0433_\u0441\u0435\u043f_\u043e\u043a\u0442_\u043d\u043e\u0435_\u0434\u0435\u043a".split("_"),weekdays:"\u043d\u0435\u0434\u0435\u043b\u0430_\u043f\u043e\u043d\u0435\u0434\u0435\u043b\u043d\u0438\u043a_\u0432\u0442\u043e\u0440\u043d\u0438\u043a_\u0441\u0440\u0435\u0434\u0430_\u0447\u0435\u0442\u0432\u0440\u0442\u043e\u043a_\u043f\u0435\u0442\u043e\u043a_\u0441\u0430\u0431\u043e\u0442\u0430".split("_"),weekdaysShort:"\u043d\u0435\u0434_\u043f\u043e\u043d_\u0432\u0442\u043e_\u0441\u0440\u0435_\u0447\u0435\u0442_\u043f\u0435\u0442_\u0441\u0430\u0431".split("_"),weekdaysMin:"\u043de_\u043fo_\u0432\u0442_\u0441\u0440_\u0447\u0435_\u043f\u0435_\u0441a".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"D.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[\u0414\u0435\u043d\u0435\u0441 \u0432\u043e] LT",nextDay:"[\u0423\u0442\u0440\u0435 \u0432\u043e] LT",nextWeek:"[\u0412\u043e] dddd [\u0432\u043e] LT",lastDay:"[\u0412\u0447\u0435\u0440\u0430 \u0432\u043e] LT",lastWeek:function(){switch(this.day()){case 0:case 3:case 6:return"[\u0418\u0437\u043c\u0438\u043d\u0430\u0442\u0430\u0442\u0430] dddd [\u0432\u043e] LT";case 1:case 2:case 4:case 5:return"[\u0418\u0437\u043c\u0438\u043d\u0430\u0442\u0438\u043e\u0442] dddd [\u0432\u043e] LT"}},sameElse:"L"},relativeTime:{future:"\u0437\u0430 %s",past:"\u043f\u0440\u0435\u0434 %s",s:"\u043d\u0435\u043a\u043e\u043b\u043a\u0443 \u0441\u0435\u043a\u0443\u043d\u0434\u0438",ss:"%d \u0441\u0435\u043a\u0443\u043d\u0434\u0438",m:"\u0435\u0434\u043d\u0430 \u043c\u0438\u043d\u0443\u0442\u0430",mm:"%d \u043c\u0438\u043d\u0443\u0442\u0438",h:"\u0435\u0434\u0435\u043d \u0447\u0430\u0441",hh:"%d \u0447\u0430\u0441\u0430",d:"\u0435\u0434\u0435\u043d \u0434\u0435\u043d",dd:"%d \u0434\u0435\u043d\u0430",M:"\u0435\u0434\u0435\u043d \u043c\u0435\u0441\u0435\u0446",MM:"%d \u043c\u0435\u0441\u0435\u0446\u0438",y:"\u0435\u0434\u043d\u0430 \u0433\u043e\u0434\u0438\u043d\u0430",yy:"%d \u0433\u043e\u0434\u0438\u043d\u0438"},dayOfMonthOrdinalParse:/\d{1,2}-(\u0435\u0432|\u0435\u043d|\u0442\u0438|\u0432\u0438|\u0440\u0438|\u043c\u0438)/,ordinal:function(e){var a=e%10,t=e%100;return 0===e?e+"-\u0435\u0432":0==t?e+"-\u0435\u043d":10<t&&t<20?e+"-\u0442\u0438":1==a?e+"-\u0432\u0438":2==a?e+"-\u0440\u0438":7==a||8==a?e+"-\u043c\u0438":e+"-\u0442\u0438"},week:{dow:1,doy:7}}),M.defineLocale("ml",{months:"\u0d1c\u0d28\u0d41\u0d35\u0d30\u0d3f_\u0d2b\u0d46\u0d2c\u0d4d\u0d30\u0d41\u0d35\u0d30\u0d3f_\u0d2e\u0d3e\u0d7c\u0d1a\u0d4d\u0d1a\u0d4d_\u0d0f\u0d2a\u0d4d\u0d30\u0d3f\u0d7d_\u0d2e\u0d47\u0d2f\u0d4d_\u0d1c\u0d42\u0d7a_\u0d1c\u0d42\u0d32\u0d48_\u0d13\u0d17\u0d38\u0d4d\u0d31\u0d4d\u0d31\u0d4d_\u0d38\u0d46\u0d2a\u0d4d\u0d31\u0d4d\u0d31\u0d02\u0d2c\u0d7c_\u0d12\u0d15\u0d4d\u0d1f\u0d4b\u0d2c\u0d7c_\u0d28\u0d35\u0d02\u0d2c\u0d7c_\u0d21\u0d3f\u0d38\u0d02\u0d2c\u0d7c".split("_"),monthsShort:"\u0d1c\u0d28\u0d41._\u0d2b\u0d46\u0d2c\u0d4d\u0d30\u0d41._\u0d2e\u0d3e\u0d7c._\u0d0f\u0d2a\u0d4d\u0d30\u0d3f._\u0d2e\u0d47\u0d2f\u0d4d_\u0d1c\u0d42\u0d7a_\u0d1c\u0d42\u0d32\u0d48._\u0d13\u0d17._\u0d38\u0d46\u0d2a\u0d4d\u0d31\u0d4d\u0d31._\u0d12\u0d15\u0d4d\u0d1f\u0d4b._\u0d28\u0d35\u0d02._\u0d21\u0d3f\u0d38\u0d02.".split("_"),monthsParseExact:!0,weekdays:"\u0d1e\u0d3e\u0d2f\u0d31\u0d3e\u0d34\u0d4d\u0d1a_\u0d24\u0d3f\u0d19\u0d4d\u0d15\u0d33\u0d3e\u0d34\u0d4d\u0d1a_\u0d1a\u0d4a\u0d35\u0d4d\u0d35\u0d3e\u0d34\u0d4d\u0d1a_\u0d2c\u0d41\u0d27\u0d28\u0d3e\u0d34\u0d4d\u0d1a_\u0d35\u0d4d\u0d2f\u0d3e\u0d34\u0d3e\u0d34\u0d4d\u0d1a_\u0d35\u0d46\u0d33\u0d4d\u0d33\u0d3f\u0d2f\u0d3e\u0d34\u0d4d\u0d1a_\u0d36\u0d28\u0d3f\u0d2f\u0d3e\u0d34\u0d4d\u0d1a".split("_"),weekdaysShort:"\u0d1e\u0d3e\u0d2f\u0d7c_\u0d24\u0d3f\u0d19\u0d4d\u0d15\u0d7e_\u0d1a\u0d4a\u0d35\u0d4d\u0d35_\u0d2c\u0d41\u0d27\u0d7b_\u0d35\u0d4d\u0d2f\u0d3e\u0d34\u0d02_\u0d35\u0d46\u0d33\u0d4d\u0d33\u0d3f_\u0d36\u0d28\u0d3f".split("_"),weekdaysMin:"\u0d1e\u0d3e_\u0d24\u0d3f_\u0d1a\u0d4a_\u0d2c\u0d41_\u0d35\u0d4d\u0d2f\u0d3e_\u0d35\u0d46_\u0d36".split("_"),longDateFormat:{LT:"A h:mm -\u0d28\u0d41",LTS:"A h:mm:ss -\u0d28\u0d41",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm -\u0d28\u0d41",LLLL:"dddd, D MMMM YYYY, A h:mm -\u0d28\u0d41"},calendar:{sameDay:"[\u0d07\u0d28\u0d4d\u0d28\u0d4d] LT",nextDay:"[\u0d28\u0d3e\u0d33\u0d46] LT",nextWeek:"dddd, LT",lastDay:"[\u0d07\u0d28\u0d4d\u0d28\u0d32\u0d46] LT",lastWeek:"[\u0d15\u0d34\u0d3f\u0d1e\u0d4d\u0d1e] dddd, LT",sameElse:"L"},relativeTime:{future:"%s \u0d15\u0d34\u0d3f\u0d1e\u0d4d\u0d1e\u0d4d",past:"%s \u0d2e\u0d41\u0d7b\u0d2a\u0d4d",s:"\u0d05\u0d7d\u0d2a \u0d28\u0d3f\u0d2e\u0d3f\u0d37\u0d19\u0d4d\u0d19\u0d7e",ss:"%d \u0d38\u0d46\u0d15\u0d4d\u0d15\u0d7b\u0d21\u0d4d",m:"\u0d12\u0d30\u0d41 \u0d2e\u0d3f\u0d28\u0d3f\u0d31\u0d4d\u0d31\u0d4d",mm:"%d \u0d2e\u0d3f\u0d28\u0d3f\u0d31\u0d4d\u0d31\u0d4d",h:"\u0d12\u0d30\u0d41 \u0d2e\u0d23\u0d3f\u0d15\u0d4d\u0d15\u0d42\u0d7c",hh:"%
559d \u0d2e\u0d23\u0d3f\u0d15\u0d4d\u0d15\u0d42\u0d7c",d:"\u0d12\u0d30\u0d41 \u0d26\u0d3f\u0d35\u0d38\u0d02",dd:"%d \u0d26\u0d3f\u0d35\u0d38\u0d02",M:"\u0d12\u0d30\u0d41 \u0d2e\u0d3e\u0d38\u0d02",MM:"%d \u0d2e\u0d3e\u0d38\u0d02",y:"\u0d12\u0d30\u0d41 \u0d35\u0d7c\u0d37\u0d02",yy:"%d \u0d35\u0d7c\u0d37\u0d02"},meridiemParse:/\u0d30\u0d3e\u0d24\u0d4d\u0d30\u0d3f|\u0d30\u0d3e\u0d35\u0d3f\u0d32\u0d46|\u0d09\u0d1a\u0d4d\u0d1a \u0d15\u0d34\u0d3f\u0d1e\u0d4d\u0d1e\u0d4d|\u0d35\u0d48\u0d15\u0d41\u0d28\u0d4d\u0d28\u0d47\u0d30\u0d02|\u0d30\u0d3e\u0d24\u0d4d\u0d30\u0d3f/i,meridiemHour:function(e,a){return 12===e&&(e=0),"\u0d30\u0d3e\u0d24\u0d4d\u0d30\u0d3f"===a&&4<=e||"\u0d09\u0d1a\u0d4d\u0d1a \u0d15\u0d34\u0d3f\u0d1e\u0d4d\u0d1e\u0d4d"===a||"\u0d35\u0d48\u0d15\u0d41\u0d28\u0d4d\u0d28\u0d47\u0d30\u0d02"===a?e+12:e},meridiem:function(e,a,t){return e<4?"\u0d30\u0d3e\u0d24\u0d4d\u0d30\u0d3f":e<12?"\u0d30\u0d3e\u0d35\u0d3f\u0d32\u0d46":e<17?"\u0d09\u0d1a\u0d4d\u0d1a \u0d15\u0d34\u0d3f\u0d1e\u0d4d\u0d1e\u0d4d":e<20?"\u0d35\u0d48\u0d15\u0d41\u0d28\u0d4d\u0d28\u0d47\u0d30\u0d02":"\u0d30\u0d3e\u0d24\u0d4d\u0d30\u0d3f"}}),M.defineLocale("mn",{months:"\u041d\u044d\u0433\u0434\u04af\u0433\u044d\u044d\u0440 \u0441\u0430\u0440_\u0425\u043e\u0451\u0440\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440_\u0413\u0443\u0440\u0430\u0432\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440_\u0414\u04e9\u0440\u04e9\u0432\u0434\u04af\u0433\u044d\u044d\u0440 \u0441\u0430\u0440_\u0422\u0430\u0432\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440_\u0417\u0443\u0440\u0433\u0430\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440_\u0414\u043e\u043b\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440_\u041d\u0430\u0439\u043c\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440_\u0415\u0441\u0434\u04af\u0433\u044d\u044d\u0440 \u0441\u0430\u0440_\u0410\u0440\u0430\u0432\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440_\u0410\u0440\u0432\u0430\u043d \u043d\u044d\u0433\u0434\u04af\u0433\u044d\u044d\u0440 \u0441\u0430\u0440_\u0410\u0440\u0432\u0430\u043d \u0445\u043e\u0451\u0440\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440".split("_"),monthsShort:"1 \u0441\u0430\u0440_2 \u0441\u0430\u0440_3 \u0441\u0430\u0440_4 \u0441\u0430\u0440_5 \u0441\u0430\u0440_6 \u0441\u0430\u0440_7 \u0441\u0430\u0440_8 \u0441\u0430\u0440_9 \u0441\u0430\u0440_10 \u0441\u0430\u0440_11 \u0441\u0430\u0440_12 \u0441\u0430\u0440".split("_"),monthsParseExact:!0,weekdays:"\u041d\u044f\u043c_\u0414\u0430\u0432\u0430\u0430_\u041c\u044f\u0433\u043c\u0430\u0440_\u041b\u0445\u0430\u0433\u0432\u0430_\u041f\u04af\u0440\u044d\u0432_\u0411\u0430\u0430\u0441\u0430\u043d_\u0411\u044f\u043c\u0431\u0430".split("_"),weekdaysShort:"\u041d\u044f\u043c_\u0414\u0430\u0432_\u041c\u044f\u0433_\u041b\u0445\u0430_\u041f\u04af\u0440_\u0411\u0430\u0430_\u0411\u044f\u043c".split("_"),weekdaysMin:"\u041d\u044f_\u0414\u0430_\u041c\u044f_\u041b\u0445_\u041f\u04af_\u0411\u0430_\u0411\u044f".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY \u043e\u043d\u044b MMMM\u044b\u043d D",LLL:"YYYY \u043e\u043d\u044b MMMM\u044b\u043d D HH:mm",LLLL:"dddd, YYYY \u043e\u043d\u044b MMMM\u044b\u043d D HH:mm"},meridiemParse:/\u04ae\u04e8|\u04ae\u0425/i,isPM:function(e){return"\u04ae\u0425"===e},meridiem:function(e,a,t){return e<12?"\u04ae\u04e8":"\u04ae\u0425"},calendar:{sameDay:"[\u04e8\u043d\u04e9\u04e9\u0434\u04e9\u0440] LT",nextDay:"[\u041c\u0430\u0440\u0433\u0430\u0430\u0448] LT",nextWeek:"[\u0418\u0440\u044d\u0445] dddd LT",lastDay:"[\u04e8\u0447\u0438\u0433\u0434\u04e9\u0440] LT",lastWeek:"[\u04e8\u043d\u0433\u04e9\u0440\u0441\u04e9\u043d] dddd LT",sameElse:"L"},relativeTime:{future:"%s \u0434\u0430\u0440\u0430\u0430",past:"%s \u04e9\u043c\u043d\u04e9",s:Kn,ss:Kn,m:Kn,mm:Kn,h:Kn,hh:Kn,d:Kn,dd:Kn,M:Kn,MM:Kn,y:Kn,yy:Kn},dayOfMonthOrdinalParse:/\d{1,2} \u04e9\u0434\u04e9\u0440/,ordinal:function(e,a){switch(a){case"d":case"D":case"DDD":return e+" \u04e9\u0434\u04e9\u0440";default:return e}}});var qn={1:"\u0967",2:"\u0968",3:"\u0969",4:"\u096a",5:"\u096b",6:"\u096c",7:"\u096d",8:"\u096e",9:"\u096f",0:"\u0966"},Zn={"\u0967":"1","\u0968":"2","\u0969":"3","\u096a":"4","\u096b":"5","\u096c":"6","\u096d":"7","\u096e":"8","\u096f":"9","\u0966":"0"};function $n(e,a,t,s){var n="";if(a)switch(t){case"s":n="\u0915\u093e\u0939\u0940 \u0938\u0947\u0915\u0902\u0926";break;case"ss":n="%d \u0938\u0947\u0915\u0902\u0926";break;case"m":n="\u090f\u0915 \u092e\u093f\u0928\u093f\u091f";break;case"mm":n="%d \u092e\u093f\u0928\u093f\u091f\u0947";break;case"h":n="\u090f\u0915 \u0924\u093e\u0938";break;case"hh":n="%d \u0924\u093e\u0938";break;case"d":n="\u090f\u0915 \u0926\u093f\u0935\u0938";break;case"dd":n="%d \u0926\u093f\u0935\u0938";break;case"M":n="\u090f\u0915 \u092e\u0939\u093f\u0928\u093e";break;case"MM":n="%d \u092e\u0939\u093f\u0928\u0947";break;case"y":n="\u090f\u0915 \u0935\u0930\u094d\u0937";break;case"yy":n="%d \u0935\u0930\u094d\u0937\u0947";break}else switch(t){case"s":n="\u0915\u093e\u0939\u0940 \u0938\u0947\u0915\u0902\u0926\u093e\u0902";break;case"ss":n="%d \u0938\u0947\u0915\u0902\u0926\u093e\u0902";break;case"m":n="\u090f\u0915\u093e \u092e\u093f\u0928\u093f\u091f\u093e";break;case"mm":n="%d \u092e\u093f\u0928\u093f\u091f\u093e\u0902";break;case"h":n="\u090f\u0915\u093e \u0924\u093e\u0938\u093e";break;case"hh":n="%d \u0924\u093e\u0938\u093e\u0902";break;case"d":n="\u090f\u0915\u093e \u0926\u093f\u0935\u0938\u093e";break;case"dd":n="%d \u0926\u093f\u0935\u0938\u093e\u0902";break;case"M":n="\u090f\u0915\u093e \u092e\u0939\u093f\u0928\u094d\u092f\u093e";break;case"MM":n="%d \u092e\u0939\u093f\u0928\u094d\u092f\u093e\u0902";break;case"y":n="\u090f\u0915\u093e \u0935\u0930\u094d\u0937\u093e";break;case"yy":n="%d \u0935\u0930\u094d\u0937\u093e\u0902";break}return n.replace(/%d/i,e)}M.defineLocale("mr",{months:"\u091c\u093e\u0928\u0947\u0935\u093e\u0930\u0940_\u092b\u0947\u092c\u094d\u0930\u0941\u0935\u093e\u0930\u0940_\u092e\u093e\u0930\u094d\u091a_\u090f\u092a\u094d\u0930\u093f\u0932_\u092e\u0947_\u091c\u0942\u0928_\u091c\u0941\u0932\u0948_\u0911\u0917\u0938\u094d\u091f_\u0938\u092a\u094d\u091f\u0947\u0902\u092c\u0930_\u0911\u0915\u094d\u091f\u094b\u092c\u0930_\u0928\u094b\u0935\u094d\u0939\u0947\u0902\u092c\u0930_\u0921\u093f\u0938\u0947\u0902\u092c\u0930".split("_"),monthsShort:"\u091c\u093e\u0928\u0947._\u092b\u0947\u092c\u094d\u0930\u0941._\u092e\u093e\u0930\u094d\u091a._\u090f\u092a\u094d\u0930\u093f._\u092e\u0947._\u091c\u0942\u0928._\u091c\u0941\u0932\u0948._\u0911\u0917._\u0938\u092a\u094d\u091f\u0947\u0902._\u0911\u0915\u094d\u091f\u094b._\u0928\u094b\u0935\u094d\u0939\u0947\u0902._\u0921\u093f\u0938\u0947\u0902.".split("_"),monthsParseExact:!0,weekdays:"\u0930\u0935\u093f\u0935\u093e\u0930_\u0938\u094b\u092e\u0935\u093e\u0930_\u092e\u0902\u0917\u0933\u0935\u093e\u0930_\u092c\u0941\u0927\u0935\u093e\u0930_\u0917\u0941\u0930\u0942\u0935\u093e\u0930_\u0936\u0941\u0915\u094d\u0930\u0935\u093e\u0930_\u0936\u0928\u093f\u0935\u093e\u0930".split("_"),weekdaysShort:"\u0930\u0935\u093f_\u0938\u094b\u092e_\u092e\u0902\u0917\u0933_\u092c\u0941\u0927_\u0917\u0941\u0930\u0942_\u0936\u0941\u0915\u094d\u0930_\u0936\u0928\u093f".split("_"),weekdaysMin:"\u0930_\u0938\u094b_\u092e\u0902_\u092c\u0941_\u0917\u0941_\u0936\u0941_\u0936".split("_"),longDateFormat:{LT:"A h:mm \u0935\u093e\u091c\u0924\u093e",LTS:"A h:mm:ss \u0935\u093e\u091c\u0924\u093e",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm \u0935\u093e\u091c\u0924\u093e",LLLL:"dddd, D MMMM YYYY, A h:mm \u0935\u093e\u091c\u0924\u093e"},calendar:{sameDay:"[\u0906\u091c] LT",nextDay:"[\u0909\u0926\u094d\u092f\u093e] LT",nextWeek:"dddd, LT",lastDay:"[\u0915\u093e\u0932] LT",lastWeek:"[\u092e\u093e\u0917\u0940\u0932] dddd, LT",sameElse:"L"},relativeTime:{future:"%s\u092e\u0927\u094d\u092f\u0947",past:"%s\u092a\u0942\u0930\u094d\u0935\u0940",s:$n,ss:$n,m:$n,mm:$n,h:$n,hh:$n,d:$n,dd:$n,M:$n,MM:$n,y:$n,yy:$n},preparse:function(e){return e.replace(/[\u0967\u0968\u0969\u096a\u096b\u096c\u096d\u096e\u096f\u0966]/g,function(e){return Zn[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return qn[e]})},meridiemParse:/\u092a\u0939\u093e\u091f\u0947|\u0938\u0915\u093e\u0933\u0940|\u0926\u0941\u092a\u093e\u0930\u0940|\u0938\u093e\u092f\u0902\u0915\u093e\u0933\u0940|\u0930\u093e\u0924\u094d\u0930\u0940/,meridiemHour:function(e,a){return 12===e&&(e=0),"\u092a\u0939\u093e\u091f\u0947"===a||"\u0938\u0915\u093e\u0933\u0940"===a?e:"\u0926\u0941\u092a\u093e\u0930\u0940"===a||"\u0938\u093e\u092f\u0902\u0915\u093e\u0933\u0940"===a||"\u0930\u093e\u0924\u094d\u0930\u0940"===a?12<=e?e:e+12:void 0},meridiem:function(e,a,t){return 0<=e&&e<6?"\u092a\u0939\u093e\u091f\u0947":e<12?"\u0938\u0915\u093e\u0933\u0940":e<17?"\u0926\u0941\u092a\u093e\u0930\u0940":e<20?"\u0938\u093e\u092f\u0902\u0915\u093e\u0933\u0940":"\u0930\u093e\u0924\u094d\u0930\u0940"},week:{dow:0,doy:6}}),M.defineLocale("ms-my",{months:"Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis".split("_"),weekdays:"Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu".split("_"),weekdaysShort:"Ahd_Isn_Sel_Rab_Kha_Jum_Sab".split("_"),weekdaysMin:"Ah_Is_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|tengahari|petang|malam/,meridiemHour:function(e,a){return 12===e&&(e=0),"pagi"===a?e:"tengahari"===a?11<=e?e:e+12:"petang"===a||"malam"===a?e+12:void 0},meridiem:function(e,a,t){return e<11?"pagi":e<15?"tengahari":e<19?"petang":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Esok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kelmarin pukul] LT",lastWeek:"dddd [lepas pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lepas",s:"beberapa saat",ss:"%d saat",m:"seminit",mm:"%d minit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}}),M.defineLocale("ms",{months:"Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis".split("_"),weekdays:"Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu".split("_"),weekdaysShort:"Ahd_Isn_Sel_Rab_Kha_Jum_Sab".split("_"),weekdaysMin:"Ah_Is_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|tengahari|petang|malam/,meridiemHour:function(e,a){return 12===e&&(e=0),"pagi"===a?e:"tengahari"===a?11<=e?e:e+12:"petang"===a||"malam"===a?e+12:void 0},meridiem:function(e,a,t){return e<11?"pagi":e<15?"tengahari":e<19?"petang":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Esok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kelmarin pukul] LT",lastWeek:"dddd [lepas pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lepas",s:"beberapa saat",ss:"%d saat",m:"seminit",mm:"%d minit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}}),M.defineLocale("mt",{months:"Jannar_Frar_Marzu_April_Mejju_\u0120unju_Lulju_Awwissu_Settembru_Ottubru_Novembru_Di\u010bembru".split("_"),monthsShort:"Jan_Fra_Mar_Apr_Mej_\u0120un_Lul_Aww_Set_Ott_Nov_Di\u010b".split("_"),weekdays:"Il-\u0126add_It-Tnejn_It-Tlieta_L-Erbg\u0127a_Il-\u0126amis_Il-\u0120img\u0127a_Is-Sibt".split("_"),weekdaysShort:"\u0126ad_Tne_Tli_Erb_\u0126am_\u0120im_Sib".split("_"),weekdaysMin:"\u0126a_Tn_Tl_Er_\u0126a_\u0120i_Si".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Illum fil-]LT",nextDay:"[G\u0127ada fil-]LT",nextWeek:"dddd [fil-]LT",lastDay:"[Il-biera\u0127 fil-]LT",lastWeek:"dddd [li g\u0127adda] [fil-]LT",sameElse:"L"},relativeTime:{future:"f\u2019 %s",past:"%s ilu",s:"ftit sekondi",ss:"%d sekondi",m:"minuta",mm:"%d minuti",h:"sieg\u0127a",hh:"%d sieg\u0127at",d:"\u0121urnata",dd:"%d \u0121ranet",M:"xahar",MM:"%d xhur",y:"sena",yy:"%d sni"},dayOfMonthOrdinalParse:/\d{1,2}\xba/,ordinal:"%d\xba",week:{dow:1,doy:4}});var Qn={1:"\u1041",2:"\u1042",3:"\u1043",4:"\u1044",5:"\u1045",6:"\u1046",7:"\u1047",8:"\u1048",9:"\u1049",0:"\u1040"},Xn={"\u1041":"1","\u1042":"2","\u1043":"3","\u1044":"4","\u1045":"5","\u1046":"6","\u1047":"7","\u1048":"8","\u1049":"9","\u1040":"0"};M.defineLocale("my",{months:"\u1007\u1014\u103a\u1014\u101d\u102b\u101b\u102e_\u1016\u1031\u1016\u1031\u102c\u103a\u101d\u102b\u101b\u102e_\u1019\u1010\u103a_\u1027\u1015\u103c\u102e_\u1019\u1031_\u1007\u103d\u1014\u103a_\u1007\u1030\u101c\u102d\u102f\u1004\u103a_\u101e\u103c\u1002\u102f\u1010\u103a_\u1005\u1000\u103a\u1010\u1004\u103a\u1018\u102c_\u1021\u1031\u102c\u1000\u103a\u1010\u102d\u102f\u1018\u102c_\u1014\u102d\u102f\u101d\u1004\u103a\u1018\u102c_\u1012\u102e\u1007\u1004\u103a\u1018\u102c".split("_"),monthsShort:"\u1007\u1014\u103a_\u1016\u1031_\u1019\u1010\u103a_\u1015\u103c\u102e_\u1019\u1031_\u1007\u103d\u1014\u103a_\u101c\u102d\u102f\u1004\u103a_\u101e\u103c_\u1005\u1000\u103a_\u1021\u1031\u102c\u1000\u103a_\u1014\u102d\u102f_\u1012\u102e".split("_"),weekdays:"\u
5591010\u1014\u1004\u103a\u1039\u1002\u1014\u103d\u1031_\u1010\u1014\u1004\u103a\u1039\u101c\u102c_\u1021\u1004\u103a\u1039\u1002\u102b_\u1017\u102f\u1012\u1039\u1013\u101f\u1030\u1038_\u1000\u103c\u102c\u101e\u1015\u1010\u1031\u1038_\u101e\u1031\u102c\u1000\u103c\u102c_\u1005\u1014\u1031".split("_"),weekdaysShort:"\u1014\u103d\u1031_\u101c\u102c_\u1002\u102b_\u101f\u1030\u1038_\u1000\u103c\u102c_\u101e\u1031\u102c_\u1014\u1031".split("_"),weekdaysMin:"\u1014\u103d\u1031_\u101c\u102c_\u1002\u102b_\u101f\u1030\u1038_\u1000\u103c\u102c_\u101e\u1031\u102c_\u1014\u1031".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[\u101a\u1014\u1031.] LT [\u1019\u103e\u102c]",nextDay:"[\u1019\u1014\u1000\u103a\u1016\u103c\u1014\u103a] LT [\u1019\u103e\u102c]",nextWeek:"dddd LT [\u1019\u103e\u102c]",lastDay:"[\u1019\u1014\u1031.\u1000] LT [\u1019\u103e\u102c]",lastWeek:"[\u1015\u103c\u102e\u1038\u1001\u1032\u1037\u101e\u1031\u102c] dddd LT [\u1019\u103e\u102c]",sameElse:"L"},relativeTime:{future:"\u101c\u102c\u1019\u100a\u103a\u1037 %s \u1019\u103e\u102c",past:"\u101c\u103d\u1014\u103a\u1001\u1032\u1037\u101e\u1031\u102c %s \u1000",s:"\u1005\u1000\u1039\u1000\u1014\u103a.\u1021\u1014\u100a\u103a\u1038\u1004\u101a\u103a",ss:"%d \u1005\u1000\u1039\u1000\u1014\u1037\u103a",m:"\u1010\u1005\u103a\u1019\u102d\u1014\u1005\u103a",mm:"%d \u1019\u102d\u1014\u1005\u103a",h:"\u1010\u1005\u103a\u1014\u102c\u101b\u102e",hh:"%d \u1014\u102c\u101b\u102e",d:"\u1010\u1005\u103a\u101b\u1000\u103a",dd:"%d \u101b\u1000\u103a",M:"\u1010\u1005\u103a\u101c",MM:"%d \u101c",y:"\u1010\u1005\u103a\u1014\u103e\u1005\u103a",yy:"%d \u1014\u103e\u1005\u103a"},preparse:function(e){return e.replace(/[\u1041\u1042\u1043\u1044\u1045\u1046\u1047\u1048\u1049\u1040]/g,function(e){return Xn[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return Qn[e]})},week:{dow:1,doy:4}}),M.defineLocale("nb",{months:"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.".split("_"),monthsParseExact:!0,weekdays:"s\xf8ndag_mandag_tirsdag_onsdag_torsdag_fredag_l\xf8rdag".split("_"),weekdaysShort:"s\xf8._ma._ti._on._to._fr._l\xf8.".split("_"),weekdaysMin:"s\xf8_ma_ti_on_to_fr_l\xf8".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] HH:mm",LLLL:"dddd D. MMMM YYYY [kl.] HH:mm"},calendar:{sameDay:"[i dag kl.] LT",nextDay:"[i morgen kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[i g\xe5r kl.] LT",lastWeek:"[forrige] dddd [kl.] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s siden",s:"noen sekunder",ss:"%d sekunder",m:"ett minutt",mm:"%d minutter",h:"en time",hh:"%d timer",d:"en dag",dd:"%d dager",w:"en uke",ww:"%d uker",M:"en m\xe5ned",MM:"%d m\xe5neder",y:"ett \xe5r",yy:"%d \xe5r"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});var er={1:"\u0967",2:"\u0968",3:"\u0969",4:"\u096a",5:"\u096b",6:"\u096c",7:"\u096d",8:"\u096e",9:"\u096f",0:"\u0966"},ar={"\u0967":"1","\u0968":"2","\u0969":"3","\u096a":"4","\u096b":"5","\u096c":"6","\u096d":"7","\u096e":"8","\u096f":"9","\u0966":"0"};M.defineLocale("ne",{months:"\u091c\u0928\u0935\u0930\u0940_\u092b\u0947\u092c\u094d\u0930\u0941\u0935\u0930\u0940_\u092e\u093e\u0930\u094d\u091a_\u0905\u092a\u094d\u0930\u093f\u0932_\u092e\u0908_\u091c\u0941\u0928_\u091c\u0941\u0932\u093e\u0908_\u0905\u0917\u0937\u094d\u091f_\u0938\u0947\u092a\u094d\u091f\u0947\u092e\u094d\u092c\u0930_\u0905\u0915\u094d\u091f\u094b\u092c\u0930_\u0928\u094b\u092d\u0947\u092e\u094d\u092c\u0930_\u0921\u093f\u0938\u0947\u092e\u094d\u092c\u0930".split("_"),monthsShort:"\u091c\u0928._\u092b\u0947\u092c\u094d\u0930\u0941._\u092e\u093e\u0930\u094d\u091a_\u0905\u092a\u094d\u0930\u093f._\u092e\u0908_\u091c\u0941\u0928_\u091c\u0941\u0932\u093e\u0908._\u0905\u0917._\u0938\u0947\u092a\u094d\u091f._\u0905\u0915\u094d\u091f\u094b._\u0928\u094b\u092d\u0947._\u0921\u093f\u0938\u0947.".split("_"),monthsParseExact:!0,weekdays:"\u0906\u0907\u0924\u092c\u093e\u0930_\u0938\u094b\u092e\u092c\u093e\u0930_\u092e\u0919\u094d\u0917\u0932\u092c\u093e\u0930_\u092c\u0941\u0927\u092c\u093e\u0930_\u092c\u093f\u0939\u093f\u092c\u093e\u0930_\u0936\u0941\u0915\u094d\u0930\u092c\u093e\u0930_\u0936\u0928\u093f\u092c\u093e\u0930".split("_"),weekdaysShort:"\u0906\u0907\u0924._\u0938\u094b\u092e._\u092e\u0919\u094d\u0917\u0932._\u092c\u0941\u0927._\u092c\u093f\u0939\u093f._\u0936\u0941\u0915\u094d\u0930._\u0936\u0928\u093f.".split("_"),weekdaysMin:"\u0906._\u0938\u094b._\u092e\u0902._\u092c\u0941._\u092c\u093f._\u0936\u0941._\u0936.".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"A\u0915\u094b h:mm \u092c\u091c\u0947",LTS:"A\u0915\u094b h:mm:ss \u092c\u091c\u0947",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A\u0915\u094b h:mm \u092c\u091c\u0947",LLLL:"dddd, D MMMM YYYY, A\u0915\u094b h:mm \u092c\u091c\u0947"},preparse:function(e){return e.replace(/[\u0967\u0968\u0969\u096a\u096b\u096c\u096d\u096e\u096f\u0966]/g,function(e){return ar[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return er[e]})},meridiemParse:/\u0930\u093e\u0924\u093f|\u092c\u093f\u0939\u093e\u0928|\u0926\u093f\u0909\u0901\u0938\u094b|\u0938\u093e\u0901\u091d/,meridiemHour:function(e,a){return 12===e&&(e=0),"\u0930\u093e\u0924\u093f"===a?e<4?e:e+12:"\u092c\u093f\u0939\u093e\u0928"===a?e:"\u0926\u093f\u0909\u0901\u0938\u094b"===a?10<=e?e:e+12:"\u0938\u093e\u0901\u091d"===a?e+12:void 0},meridiem:function(e,a,t){return e<3?"\u0930\u093e\u0924\u093f":e<12?"\u092c\u093f\u0939\u093e\u0928":e<16?"\u0926\u093f\u0909\u0901\u0938\u094b":e<20?"\u0938\u093e\u0901\u091d":"\u0930\u093e\u0924\u093f"},calendar:{sameDay:"[\u0906\u091c] LT",nextDay:"[\u092d\u094b\u0932\u093f] LT",nextWeek:"[\u0906\u0909\u0901\u0926\u094b] dddd[,] LT",lastDay:"[\u0939\u093f\u091c\u094b] LT",lastWeek:"[\u0917\u090f\u0915\u094b] dddd[,] LT",sameElse:"L"},relativeTime:{future:"%s\u092e\u093e",past:"%s \u0905\u0917\u093e\u0921\u093f",s:"\u0915\u0947\u0939\u0940 \u0915\u094d\u0937\u0923",ss:"%d \u0938\u0947\u0915\u0947\u0923\u094d\u0921",m:"\u090f\u0915 \u092e\u093f\u0928\u0947\u091f",mm:"%d \u092e\u093f\u0928\u0947\u091f",h:"\u090f\u0915 \u0918\u0923\u094d\u091f\u093e",hh:"%d \u0918\u0923\u094d\u091f\u093e",d:"\u090f\u0915 \u0926\u093f\u0928",dd:"%d \u0926\u093f\u0928",M:"\u090f\u0915 \u092e\u0939\u093f\u0928\u093e",MM:"%d \u092e\u0939\u093f\u0928\u093e",y:"\u090f\u0915 \u092c\u0930\u094d\u0937",yy:"%d \u092c\u0930\u094d\u0937"},week:{dow:0,doy:6}});var tr="jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.".split("_"),sr="jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec".split("_"),nr=[/^jan/i,/^feb/i,/^maart|mrt.?$/i,/^apr/i,/^mei$/i,/^jun[i.]?$/i,/^jul[i.]?$/i,/^aug/i,/^sep/i,/^okt/i,/^nov/i,/^dec/i],rr=/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i;M.defineLocale("nl-be",{months:"januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december".split("_"),monthsShort:function(e,a){return e?/-MMM-/.test(a)?sr[e.month()]:tr[e.month()]:tr},monthsRegex:rr,monthsShortRegex:rr,monthsStrictRegex:/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,monthsShortStrictRegex:/^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,monthsParse:nr,longMonthsParse:nr,shortMonthsParse:nr,weekdays:"zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag".split("_"),weekdaysShort:"zo._ma._di._wo._do._vr._za.".split("_"),weekdaysMin:"zo_ma_di_wo_do_vr_za".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[vandaag om] LT",nextDay:"[morgen om] LT",nextWeek:"dddd [om] LT",lastDay:"[gisteren om] LT",lastWeek:"[afgelopen] dddd [om] LT",sameElse:"L"},relativeTime:{future:"over %s",past:"%s geleden",s:"een paar seconden",ss:"%d seconden",m:"\xe9\xe9n minuut",mm:"%d minuten",h:"\xe9\xe9n uur",hh:"%d uur",d:"\xe9\xe9n dag",dd:"%d dagen",M:"\xe9\xe9n maand",MM:"%d maanden",y:"\xe9\xe9n jaar",yy:"%d jaar"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(e){return e+(1===e||8===e||20<=e?"ste":"de")},week:{dow:1,doy:4}});var dr="jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.".split("_"),ir="jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec".split("_"),_r=[/^jan/i,/^feb/i,/^maart|mrt.?$/i,/^apr/i,/^mei$/i,/^jun[i.]?$/i,/^jul[i.]?$/i,/^aug/i,/^sep/i,/^okt/i,/^nov/i,/^dec/i],or=/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i;M.defineLocale("nl",{months:"januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december".split("_"),monthsShort:function(e,a){return e?/-MMM-/.test(a)?ir[e.month()]:dr[e.month()]:dr},monthsRegex:or,monthsShortRegex:or,monthsStrictRegex:/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,monthsShortStrictRegex:/^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,monthsParse:_r,longMonthsParse:_r,shortMonthsParse:_r,weekdays:"zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag".split("_"),weekdaysShort:"zo._ma._di._wo._do._vr._za.".split("_"),weekdaysMin:"zo_ma_di_wo_do_vr_za".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[vandaag om] LT",nextDay:"[morgen om] LT",nextWeek:"dddd [om] LT",lastDay:"[gisteren om] LT",lastWeek:"[afgelopen] dddd [om] LT",sameElse:"L"},relativeTime:{future:"over %s",past:"%s geleden",s:"een paar seconden",ss:"%d seconden",m:"\xe9\xe9n minuut",mm:"%d minuten",h:"\xe9\xe9n uur",hh:"%d uur",d:"\xe9\xe9n dag",dd:"%d dagen",w:"\xe9\xe9n week",ww:"%d weken",M:"\xe9\xe9n maand",MM:"%d maanden",y:"\xe9\xe9n jaar",yy:"%d jaar"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(e){return e+(1===e||8===e||20<=e?"ste":"de")},week:{dow:1,doy:4}}),M.defineLocale("nn",{months:"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.".split("_"),monthsParseExact:!0,weekdays:"sundag_m\xe5ndag_tysdag_onsdag_torsdag_fredag_laurdag".split("_"),weekdaysShort:"su._m\xe5._ty._on._to._fr._lau.".split("_"),weekdaysMin:"su_m\xe5_ty_on_to_fr_la".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] H:mm",LLLL:"dddd D. MMMM YYYY [kl.] HH:mm"},calendar:{sameDay:"[I dag klokka] LT",nextDay:"[I morgon klokka] LT",nextWeek:"dddd [klokka] LT",lastDay:"[I g\xe5r klokka] LT",lastWeek:"[F\xf8reg\xe5ande] dddd [klokka] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s sidan",s:"nokre sekund",ss:"%d sekund",m:"eit minutt",mm:"%d minutt",h:"ein time",hh:"%d timar",d:"ein dag",dd:"%d dagar",w:"ei veke",ww:"%d veker",M:"ein m\xe5nad",MM:"%d m\xe5nader",y:"eit \xe5r",yy:"%d \xe5r"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),M.defineLocale("oc-lnc",{months:{standalone:"geni\xe8r_febri\xe8r_mar\xe7_abril_mai_junh_julhet_agost_setembre_oct\xf2bre_novembre_decembre".split("_"),format:"de geni\xe8r_de febri\xe8r_de mar\xe7_d'abril_de mai_de junh_de julhet_d'agost_de setembre_d'oct\xf2bre_de novembre_de decembre".split("_"),isFormat:/D[oD]?(\s)+MMMM/},monthsShort:"gen._febr._mar\xe7_abr._mai_junh_julh._ago._set._oct._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"dimenge_diluns_dimars_dim\xe8cres_dij\xf2us_divendres_dissabte".split("_"),weekdaysShort:"dg._dl._dm._dc._dj._dv._ds.".split("_"),weekdaysMin:"dg_dl_dm_dc_dj_dv_ds".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM [de] YYYY",ll:"D MMM YYYY",LLL:"D MMMM [de] YYYY [a] H:mm",lll:"D MMM YYYY, H:mm",LLLL:"dddd D MMMM [de] YYYY [a] H:mm",llll:"ddd D MMM YYYY, H:mm"},calendar:{sameDay:"[u\xe8i a] LT",nextDay:"[deman a] LT",nextWeek:"dddd [a] LT",lastDay:"[i\xe8r a] LT",lastWeek:"dddd [passat a] LT",sameElse:"L"},relativeTime:{future:"d'aqu\xed %s",past:"fa %s",s:"unas segondas",ss:"%d segondas",m:"una minuta",mm:"%d minutas",h:"una ora",hh:"%
559d oras",d:"un jorn",dd:"%d jorns",M:"un mes",MM:"%d meses",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(r|n|t|\xe8|a)/,ordinal:function(e,a){return e+("w"!==a&&"W"!==a?1===e?"r":2===e?"n":3===e?"r":4===e?"t":"\xe8":"a")},week:{dow:1,doy:4}});var mr={1:"\u0a67",2:"\u0a68",3:"\u0a69",4:"\u0a6a",5:"\u0a6b",6:"\u0a6c",7:"\u0a6d",8:"\u0a6e",9:"\u0a6f",0:"\u0a66"},ur={"\u0a67":"1","\u0a68":"2","\u0a69":"3","\u0a6a":"4","\u0a6b":"5","\u0a6c":"6","\u0a6d":"7","\u0a6e":"8","\u0a6f":"9","\u0a66":"0"};M.defineLocale("pa-in",{months:"\u0a1c\u0a28\u0a35\u0a30\u0a40_\u0a2b\u0a3c\u0a30\u0a35\u0a30\u0a40_\u0a2e\u0a3e\u0a30\u0a1a_\u0a05\u0a2a\u0a4d\u0a30\u0a48\u0a32_\u0a2e\u0a08_\u0a1c\u0a42\u0a28_\u0a1c\u0a41\u0a32\u0a3e\u0a08_\u0a05\u0a17\u0a38\u0a24_\u0a38\u0a24\u0a70\u0a2c\u0a30_\u0a05\u0a15\u0a24\u0a42\u0a2c\u0a30_\u0a28\u0a35\u0a70\u0a2c\u0a30_\u0a26\u0a38\u0a70\u0a2c\u0a30".split("_"),monthsShort:"\u0a1c\u0a28\u0a35\u0a30\u0a40_\u0a2b\u0a3c\u0a30\u0a35\u0a30\u0a40_\u0a2e\u0a3e\u0a30\u0a1a_\u0a05\u0a2a\u0a4d\u0a30\u0a48\u0a32_\u0a2e\u0a08_\u0a1c\u0a42\u0a28_\u0a1c\u0a41\u0a32\u0a3e\u0a08_\u0a05\u0a17\u0a38\u0a24_\u0a38\u0a24\u0a70\u0a2c\u0a30_\u0a05\u0a15\u0a24\u0a42\u0a2c\u0a30_\u0a28\u0a35\u0a70\u0a2c\u0a30_\u0a26\u0a38\u0a70\u0a2c\u0a30".split("_"),weekdays:"\u0a10\u0a24\u0a35\u0a3e\u0a30_\u0a38\u0a4b\u0a2e\u0a35\u0a3e\u0a30_\u0a2e\u0a70\u0a17\u0a32\u0a35\u0a3e\u0a30_\u0a2c\u0a41\u0a27\u0a35\u0a3e\u0a30_\u0a35\u0a40\u0a30\u0a35\u0a3e\u0a30_\u0a38\u0a3c\u0a41\u0a71\u0a15\u0a30\u0a35\u0a3e\u0a30_\u0a38\u0a3c\u0a28\u0a40\u0a1a\u0a30\u0a35\u0a3e\u0a30".split("_"),weekdaysShort:"\u0a10\u0a24_\u0a38\u0a4b\u0a2e_\u0a2e\u0a70\u0a17\u0a32_\u0a2c\u0a41\u0a27_\u0a35\u0a40\u0a30_\u0a38\u0a3c\u0a41\u0a15\u0a30_\u0a38\u0a3c\u0a28\u0a40".split("_"),weekdaysMin:"\u0a10\u0a24_\u0a38\u0a4b\u0a2e_\u0a2e\u0a70\u0a17\u0a32_\u0a2c\u0a41\u0a27_\u0a35\u0a40\u0a30_\u0a38\u0a3c\u0a41\u0a15\u0a30_\u0a38\u0a3c\u0a28\u0a40".split("_"),longDateFormat:{LT:"A h:mm \u0a35\u0a1c\u0a47",LTS:"A h:mm:ss \u0a35\u0a1c\u0a47",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm \u0a35\u0a1c\u0a47",LLLL:"dddd, D MMMM YYYY, A h:mm \u0a35\u0a1c\u0a47"},calendar:{sameDay:"[\u0a05\u0a1c] LT",nextDay:"[\u0a15\u0a32] LT",nextWeek:"[\u0a05\u0a17\u0a32\u0a3e] dddd, LT",lastDay:"[\u0a15\u0a32] LT",lastWeek:"[\u0a2a\u0a3f\u0a1b\u0a32\u0a47] dddd, LT",sameElse:"L"},relativeTime:{future:"%s \u0a35\u0a3f\u0a71\u0a1a",past:"%s \u0a2a\u0a3f\u0a1b\u0a32\u0a47",s:"\u0a15\u0a41\u0a1d \u0a38\u0a15\u0a3f\u0a70\u0a1f",ss:"%d \u0a38\u0a15\u0a3f\u0a70\u0a1f",m:"\u0a07\u0a15 \u0a2e\u0a3f\u0a70\u0a1f",mm:"%d \u0a2e\u0a3f\u0a70\u0a1f",h:"\u0a07\u0a71\u0a15 \u0a18\u0a70\u0a1f\u0a3e",hh:"%d \u0a18\u0a70\u0a1f\u0a47",d:"\u0a07\u0a71\u0a15 \u0a26\u0a3f\u0a28",dd:"%d \u0a26\u0a3f\u0a28",M:"\u0a07\u0a71\u0a15 \u0a2e\u0a39\u0a40\u0a28\u0a3e",MM:"%d \u0a2e\u0a39\u0a40\u0a28\u0a47",y:"\u0a07\u0a71\u0a15 \u0a38\u0a3e\u0a32",yy:"%d \u0a38\u0a3e\u0a32"},preparse:function(e){return e.replace(/[\u0a67\u0a68\u0a69\u0a6a\u0a6b\u0a6c\u0a6d\u0a6e\u0a6f\u0a66]/g,function(e){return ur[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return mr[e]})},meridiemParse:/\u0a30\u0a3e\u0a24|\u0a38\u0a35\u0a47\u0a30|\u0a26\u0a41\u0a2a\u0a39\u0a3f\u0a30|\u0a38\u0a3c\u0a3e\u0a2e/,meridiemHour:function(e,a){return 12===e&&(e=0),"\u0a30\u0a3e\u0a24"===a?e<4?e:e+12:"\u0a38\u0a35\u0a47\u0a30"===a?e:"\u0a26\u0a41\u0a2a\u0a39\u0a3f\u0a30"===a?10<=e?e:e+12:"\u0a38\u0a3c\u0a3e\u0a2e"===a?e+12:void 0}
vendor: 4,765 bytes, line 559
559,meridiem:function(e,a,t){return e<4?"\u0a30\u0a3e\u0a24":e<10?"\u0a38\u0a35\u0a47\u0a30":e<17?"\u0a26\u0a41\u0a2a\u0a39\u0a3f\u0a30":e<20?"\u0a38\u0a3c\u0a3e\u0a2e":"\u0a30\u0a3e\u0a24"},week:{dow:0,doy:6}});var lr="stycze\u0144_luty_marzec_kwiecie\u0144_maj_czerwiec_lipiec_sierpie\u0144_wrzesie\u0144_pa\u017adziernik_listopad_grudzie\u0144".split("_"),Mr="stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_wrze\u015bnia_pa\u017adziernika_listopada_grudnia".split("_"),hr=[/^sty/i,/^lut/i,/^mar/i,/^kwi/i,/^maj/i,/^cze/i,/^lip/i,/^sie/i,/^wrz/i,/^pa\u017a/i,/^lis/i,/^gru/i];function cr(e){return e%10<5&&1<e%10&&~~(e/10)%10!=1}function Lr(e,a,t){var s=e+" ";switch(t){case"ss":return s+(cr(e)?"sekundy":"sekund");case"m":return a?"minuta":"minut\u0119";case"mm":return s+(cr(e)?"minuty":"minut");case"h":return a?"godzina":"godzin\u0119";case"hh":return s+(cr(e)?"godziny":"godzin");case"ww":return s+(cr(e)?"tygodnie":"tygodni");case"MM":return s+(cr(e)?"miesi\u0105ce":"miesi\u0119cy");case"yy":return s+(cr(e)?"lata":"lat")}}function Yr(e,a,t){return e+(20<=e%100||100<=e&&e%100==0?" de ":" ")+{ss:"secunde",mm:"minute",hh:"ore",dd:"zile",ww:"s\u0103pt\u0103m\xe2ni",MM:"luni",yy:"ani"}[t]}function yr(e,a,t){var s,n;return"m"===t?a?"\u043c\u0438\u043d\u0443\u0442\u0430":"\u043c\u0438\u043d\u0443\u0442\u0443":e+" "+(s=+e,n={ss:a?"\u0441\u0435\u043a\u0443\u043d\u0434\u0430_\u0441\u0435\u043a\u0443\u043d\u0434\u044b_\u0441\u0435\u043a\u0443\u043d\u0434":"\u0441\u0435\u043a\u0443\u043d\u0434\u0443_\u0441\u0435\u043a\u0443\u043d\u0434\u044b_\u0441\u0435\u043a\u0443\u043d\u0434",mm:a?"\u043c\u0438\u043d\u0443\u0442\u0430_\u043c\u0438\u043d\u0443\u0442\u044b_\u043c\u0438\u043d\u0443\u0442":"\u043c\u0438\u043d\u0443\u0442\u0443_\u043c\u0438\u043d\u0443\u0442\u044b_\u043c\u0438\u043d\u0443\u0442",hh:"\u0447\u0430\u0441_\u0447\u0430\u0441\u0430_\u0447\u0430\u0441\u043e\u0432",dd:"\u0434\u0435\u043d\u044c_\u0434\u043d\u044f_\u0434\u043d\u0435\u0439",ww:"\u043d\u0435\u0434\u0435\u043b\u044f_\u043d\u0435\u0434\u0435\u043b\u0438_\u043d\u0435\u0434\u0435\u043b\u044c",MM:"\u043c\u0435\u0441\u044f\u0446_\u043c\u0435\u0441\u044f\u0446\u0430_\u043c\u0435\u0441\u044f\u0446\u0435\u0432",yy:"\u0433\u043e\u0434_\u0433\u043e\u0434\u0430_\u043b\u0435\u0442"}[t].split("_"),s%10==1&&s%100!=11?n[0]:2<=s%10&&s%10<=4&&(s%100<10||20<=s%100)?n[1]:n[2])}M.defineLocale("pl",{months:function(e,a){return e?/D MMMM/.test(a)?Mr[e.month()]:lr[e.month()]:lr},monthsShort:"sty_lut_mar_kwi_maj_cze_lip_sie_wrz_pa\u017a_lis_gru".split("_"),monthsParse:hr,longMonthsParse:hr,shortMonthsParse:hr,weekdays:"niedziela_poniedzia\u0142ek_wtorek_\u015broda_czwartek_pi\u0105tek_sobota".split("_"),weekdaysShort:"ndz_pon_wt_\u015br_czw_pt_sob".split("_"),weekdaysMin:"Nd_Pn_Wt_\u015ar_Cz_Pt_So".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Dzi\u015b o] LT",nextDay:"[Jutro o] LT",nextWeek:function(){switch(this.day()){case 0:return"[W niedziel\u0119 o] LT";case 2:return"[We wtorek o] LT";case 3:return"[W \u015brod\u0119 o] LT";case 6:return"[W sobot\u0119 o] LT";default:return"[W] dddd [o] LT"}},lastDay:"[Wczoraj o] LT",lastWeek:function(){switch(this.day()){case 0:return"[W zesz\u0142\u0105 niedziel\u0119 o] LT";case 3:return"[W zesz\u0142\u0105 \u015brod\u0119 o] LT";case 6:return"[W zesz\u0142\u0105 sobot\u0119 o] LT";default:return"[W zesz\u0142y] dddd [o] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"%s temu",s:"kilka sekund",ss:Lr,m:Lr,mm:Lr,h:Lr,hh:Lr,d:"1 dzie\u0144",dd:"%d dni",w:"tydzie\u0144",ww:Lr,M:"miesi\u0105c",MM:Lr,y:"rok",yy:Lr},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),M.defineLocale("pt-br",{months:"janeiro_fevereiro_mar\xe7o_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro".split("_"),monthsShort:"jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez".split("_"),weekdays:"domingo_segunda-feira_ter\xe7a-feira_quarta-feira_quinta-feira_sexta-feira_s\xe1bado".split("_"),weekdaysShort:"dom_seg_ter_qua_qui_sex_s\xe1b".split("_"),weekdaysMin:"do_2\xaa_3\xaa_4\xaa_5\xaa_6\xaa_s\xe1".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY [\xe0s] HH:mm",LLLL:"dddd, D [de] MMMM [de] YYYY [\xe0s] HH:mm"},calendar:{sameDay:"[Hoje \xe0s] LT",nextDay:"[Amanh\xe3 \xe0s] LT",nextWeek:"dddd [\xe0s] LT",lastDay:"[Ontem \xe0s] LT",lastWeek:function(){return 0===this.day()||6===this.day()?"[\xdaltimo] dddd [\xe0s] LT":"[\xdaltima] dddd [\xe0s] LT"},sameElse:"L"},relativeTime:{future:"em %s",past:"h\xe1 %s",s:"poucos segundos",ss:"%d segundos",m:"um minuto",mm:"%d minutos",h:"uma hora",hh:"%
559d horas",d:"um dia",dd:"%d dias",M:"um m\xeas",MM:"%d meses",y:"um ano",yy:"%d anos"},dayOfMonthOrdinalParse:/\d{1,2}\xba/,ordinal:"%d\xba",invalidDate:"Data inv\xe1lida"}),M.defineLocale("pt",{months:"janeiro_fevereiro_mar\xe7o_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro".split("_"),monthsShort:"jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez".split("_"),weekdays:"Domingo_Segunda-feira_Ter\xe7a-feira_Quarta-feira_Quinta-feira_Sexta-feira_S\xe1bado".split("_"),weekdaysShort:"Dom_Seg_Ter_Qua_Qui_Sex_S\xe1b".split("_"),weekdaysMin:"Do_2\xaa_3\xaa_4\xaa_5\xaa_6\xaa_S\xe1".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY HH:mm",LLLL:"dddd, D [de] MMMM [de] YYYY HH:mm"},calendar:{sameDay:"[Hoje \xe0s] LT",nextDay:"[Amanh\xe3 \xe0s] LT",nextWeek:"dddd [\xe0s] LT",lastDay:"[Ontem \xe0s] LT",lastWeek:function(){return 0===this.day()||6===this.day()?"[\xdaltimo] dddd [\xe0s] LT":"[\xdaltima] dddd [\xe0s] LT"},sameElse:"L"},relativeTime:{future:"em %s",past:"h\xe1 %s",s:"segundos",ss:"%d segundos",m:"um minuto",mm:"%d minutos",h:"uma hora",hh:"%d horas",d:"um dia",dd:"%d dias",w:"uma semana",ww:"%d semanas",M:"um m\xeas",MM:"%d meses",y:"um ano",yy:"%d anos"},dayOfMonthOrdinalParse:/\d{1,2}\xba/,ordinal:"%d\xba",week:{dow:1,doy:4}}),M.defineLocale("ro",{months:"ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie".split("_"),monthsShort:"ian._feb._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"duminic\u0103_luni_mar\u021bi_miercuri_joi_vineri_s\xe2mb\u0103t\u0103".split("_"),weekdaysShort:"Dum_Lun_Mar_Mie_Joi_Vin_S\xe2m".split("_"),weekdaysMin:"Du_Lu_Ma_Mi_Jo_Vi_S\xe2".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[azi la] LT",nextDay:"[m\xe2ine la] LT",nextWeek:"dddd [la] LT",lastDay:"[ieri la] LT",lastWeek:"[fosta] dddd [la] LT",sameElse:"L"},relativeTime:{future:"peste %s",past:"%s \xeen urm\u0103",s:"c\xe2teva secunde",ss:Yr,m:"un minut",mm:Yr,h:"o or\u0103",hh:Yr,d:"o zi",dd:Yr,w:"o s\u0103pt\u0103m\xe2n\u0103",ww:Yr,M:"o lun\u0103",MM:Yr,y:"un an",yy:Yr},week:{dow:1,doy:7}});var fr=[/^\u044f\u043d\u0432/i,/^\u0444\u0435\u0432/i,/^\u043c\u0430\u0440/i,/^\u0430\u043f\u0440/i,/^\u043c\u0430[\u0439\u044f]/i,/^\u0438\u044e\u043d/i,/^\u0438\u044e\u043b/i,/^\u0430\u0432\u0433/i,/^\u0441\u0435\u043d/i,/^\u043e\u043a\u0442/i,/^\u043d\u043e\u044f/i,/^\u0434\u0435\u043a/i];M.defineLocale("ru",{months:{format:"\u044f\u043d\u0432\u0430\u0440\u044f_\u0444\u0435\u0432\u0440\u0430\u043b\u044f_\u043c\u0430\u0440\u0442\u0430_\u0430\u043f\u0440\u0435\u043b\u044f_\u043c\u0430\u044f_\u0438\u044e\u043d\u044f_\u0438\u044e\u043b\u044f_\u0430\u0432\u0433\u0443\u0441\u0442\u0430_\u0441\u0435\u043d\u0442\u044f\u0431\u0440\u044f_\u043e\u043a\u0442\u044f\u0431\u0440\u044f_\u043d\u043e\u044f\u0431\u0440\u044f_\u0434\u0435\u043a\u0430\u0431\u0440\u044f".split("_"),standalone:"\u044f\u043d\u0432\u0430\u0440\u044c_\u0444\u0435\u0432\u0440\u0430\u043b\u044c_\u043c\u0430\u0440\u0442_\u0430\u043f\u0440\u0435\u043b\u044c_\u043c\u0430\u0439_\u0438\u044e\u043d\u044c_\u0438\u044e\u043b\u044c_\u0430\u0432\u0433\u0443\u0441\u0442_\u0441\u0435\u043d\u0442\u044f\u0431\u0440\u044c_\u043e\u043a\u0442\u044f\u0431\u0440\u044c_\u043d\u043e\u044f\u0431\u0440\u044c_\u0434\u0435\u043a\u0430\u0431\u0440\u044c".split("_")},monthsShort:{format:"\u044f\u043d\u0432._\u0444\u0435\u0432\u0440._\u043c\u0430\u0440._\u0430\u043f\u0440._\u043c\u0430\u044f_\u0438\u044e\u043d\u044f_\u0438\u044e\u043b\u044f_\u0430\u0432\u0433._\u0441\u0435\u043d\u0442._\u043e\u043a\u0442._\u043d\u043e\u044f\u0431._\u0434\u0435\u043a.".split("_"),standalone:"\u044f\u043d\u0432._\u0444\u0435\u0432\u0440._\u043c\u0430\u0440\u0442_\u0430\u043f\u0440._\u043c\u0430\u0439_\u0438\u044e\u043d\u044c_\u0438\u044e\u043b\u044c_\u0430\u0432\u0433._\u0441\u0435\u043d\u0442._\u043e\u043a\u0442._\u043d\u043e\u044f\u0431._\u0434\u0435\u043a.".split("_")},weekdays:{standalone:"\u0432\u043e\u0441\u043a\u0440\u0435\u0441\u0435\u043d\u044c\u0435_\u043f\u043e\u043d\u0435\u0434\u0435\u043b\u044c\u043d\u0438\u043a_\u0432\u0442\u043e\u0440\u043d\u0438\u043a_\u0441\u0440\u0435\u0434\u0430_\u0447\u0435\u0442\u0432\u0435\u0440\u0433_\u043f\u044f\u0442\u043d\u0438\u0446\u0430_\u0441\u0443\u0431\u0431\u043e\u0442\u0430".split("_"),format:"\u0432\u043e\u0441\u043a\u0440\u0435\u0441\u0435\u043d\u044c\u0435_\u043f\u043e\u043d\u0435\u0434\u0435\u043b\u044c\u043d\u0438\u043a_\u0432\u0442\u043e\u0440\u043d\u0438\u043a_\u0441\u0440\u0435\u0434\u0443_\u0447\u0435\u0442\u0432\u0435\u0440\u0433_\u043f\u044f\u0442\u043d\u0438\u0446\u0443_\u0441\u0443\u0431\u0431\u043e\u0442\u0443".split("_"),isFormat:/\[ ?[\u0412\u0432] ?(?:\u043f\u0440\u043e\u0448\u043b\u0443\u044e|\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e|\u044d\u0442\u0443)? ?] ?dddd/},weekdaysShort:"\u0432\u0441_\u043f\u043d_\u0432\u0442_\u0441\u0440_\u0447\u0442_\u043f\u0442_\u0441\u0431".split("_"),weekdaysMin:"\u0432\u0441_\u043f\u043d_\u0432\u0442_\u0441\u0440_\u0447\u0442_\u043f\u0442_\u0441\u0431".split("_"),monthsParse:fr,longMonthsParse:fr,shortMonthsParse:fr,monthsRegex:/^(\u044f\u043d\u0432\u0430\u0440[\u044c\u044f]|\u044f\u043d\u0432\.?|\u0444\u0435\u0432\u0440\u0430\u043b[\u044c\u044f]|\u0444\u0435\u0432\u0440?\.?|\u043c\u0430\u0440\u0442\u0430?|\u043c\u0430\u0440\.?|\u0430\u043f\u0440\u0435\u043b[\u044c\u044f]|\u0430\u043f\u0440\.?|\u043c\u0430[\u0439\u044f]|\u0438\u044e\u043d[\u044c\u044f]|\u0438\u044e\u043d\.?|\u0438\u044e\u043b[\u044c\u044f]|\u0438\u044e\u043b\.?|\u0430\u0432\u0433\u0443\u0441\u0442\u0430?|\u0430\u0432\u0433\.?|\u0441\u0435\u043d\u0442\u044f\u0431\u0440[\u044c\u044f]|\u0441\u0435\u043d\u0442?\.?|\u043e\u043a\u0442\u044f\u0431\u0440[\u044c\u044f]|\u043e\u043a\u0442\.?|\u043d\u043e\u044f\u0431\u0440[\u044c\u044f]|\u043d\u043e\u044f\u0431?\.?|\u0434\u0435\u043a\u0430\u0431\u0440[\u044c\u044f]|\u0434\u0435\u043a\.?)/i,monthsShortRegex:/^(\u044f\u043d\u0432\u0430\u0440[\u044c\u044f]|\u044f\u043d\u0432\.?|\u0444\u0435\u0432\u0440\u0430\u043b[\u044c\u044f]|\u0444\u0435\u0432\u0440?\.?|\u043c\u0430\u0440\u0442\u0430?|\u043c\u0430\u0440\.?|\u0430\u043f\u0440\u0435\u043b[\u044c\u044f]|\u0430\u043f\u0440\.?|\u043c\u0430[\u0439\u044f]|\u0438\u044e\u043d[\u044c\u044f]|\u0438\u044e\u043d\.?|\u0438\u044e\u043b[\u044c\u044f]|\u0438\u044e\u043b\.?|\u0430\u0432\u0433\u0443\u0441\u0442\u0430?|\u0430\u0432\u0433\.?|\u0441\u0435\u043d\u0442\u044f\u0431\u0440[\u044c\u044f]|\u0441\u0435\u043d\u0442?\.?|\u043e\u043a\u0442\u044f\u0431\u0440[\u044c\u044f]|\u043e\u043a\u0442\.?|\u043d\u043e\u044f\u0431\u0440[\u044c\u044f]|\u043d\u043e\u044f\u0431?\.?|\u0434\u0435\u043a\u0430\u0431\u0440[\u044c\u044f]|\u0434\u0435\u043a\.?)/i,monthsStrictRegex:/^(\u044f\u043d\u0432\u0430\u0440[\u044f\u044c]|\u0444\u0435\u0432\u0440\u0430\u043b[\u044f\u044c]|\u043c\u0430\u0440\u0442\u0430?|\u0430\u043f\u0440\u0435\u043b[\u044f\u044c]|\u043c\u0430[\u044f\u0439]|\u0438\u044e\u043d[\u044f\u044c]|\u0438\u044e\u043b[\u044f\u044c]|\u0430\u0432\u0433\u0443\u0441\u0442\u0430?|\u0441\u0435\u043d\u0442\u044f\u0431\u0440[\u044f\u044c]|\u043e\u043a\u0442\u044f\u0431\u0440[\u044f\u044c]|\u043d\u043e\u044f\u0431\u0440[\u044f\u044c]|\u0434\u0435\u043a\u0430\u0431\u0440[\u044f\u044c])/i,monthsShortStrictRegex:/^(\u044f\u043d\u0432\.|\u0444\u0435\u0432\u0440?\.|\u
vendor: 16,384 bytes, line 559
559043c\u0430\u0440[\u0442.]|\u0430\u043f\u0440\.|\u043c\u0430[\u044f\u0439]|\u0438\u044e\u043d[\u044c\u044f.]|\u0438\u044e\u043b[\u044c\u044f.]|\u0430\u0432\u0433\.|\u0441\u0435\u043d\u0442?\.|\u043e\u043a\u0442\.|\u043d\u043e\u044f\u0431?\.|\u0434\u0435\u043a\.)/i,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY \u0433.",LLL:"D MMMM YYYY \u0433., H:mm",LLLL:"dddd, D MMMM YYYY \u0433., H:mm"},calendar:{sameDay:"[\u0421\u0435\u0433\u043e\u0434\u043d\u044f, \u0432] LT",nextDay:"[\u0417\u0430\u0432\u0442\u0440\u0430, \u0432] LT",lastDay:"[\u0412\u0447\u0435\u0440\u0430, \u0432] LT",nextWeek:function(e){if(e.week()===this.week())return 2===this.day()?"[\u0412\u043e] dddd, [\u0432] LT":"[\u0412] dddd, [\u0432] LT";switch(this.day()){case 0:return"[\u0412 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435] dddd, [\u0432] LT";case 1:case 2:case 4:return"[\u0412 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439] dddd, [\u0432] LT";case 3:case 5:case 6:return"[\u0412 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e] dddd, [\u0432] LT"}},lastWeek:function(e){if(e.week()===this.week())return 2===this.day()?"[\u0412\u043e] dddd, [\u0432] LT":"[\u0412] dddd, [\u0432] LT";switch(this.day()){case 0:return"[\u0412 \u043f\u0440\u043e\u0448\u043b\u043e\u0435] dddd, [\u0432] LT";case 1:case 2:case 4:return"[\u0412 \u043f\u0440\u043e\u0448\u043b\u044b\u0439] dddd, [\u0432] LT";case 3:case 5:case 6:return"[\u0412 \u043f\u0440\u043e\u0448\u043b\u0443\u044e] dddd, [\u0432] LT"}},sameElse:"L"},relativeTime:{future:"\u0447\u0435\u0440\u0435\u0437 %s",past:"%s \u043d\u0430\u0437\u0430\u0434",s:"\u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0435\u043a\u0443\u043d\u0434",ss:yr,m:yr,mm:yr,h:"\u0447\u0430\u0441",hh:yr,d:"\u0434\u0435\u043d\u044c",dd:yr,w:"\u043d\u0435\u0434\u0435\u043b\u044f",ww:yr,M:"\u043c\u0435\u0441\u044f\u0446",MM:yr,y:"\u0433\u043e\u0434",yy:yr},meridiemParse:/\u043d\u043e\u0447\u0438|\u0443\u0442\u0440\u0430|\u0434\u043d\u044f|\u0432\u0435\u0447\u0435\u0440\u0430/i,isPM:function(e){return/^(\u0434\u043d\u044f|\u0432\u0435\u0447\u0435\u0440\u0430)$/.test(e)},meridiem:function(e,a,t){return e<4?"\u043d\u043e\u0447\u0438":e<12?"\u0443\u0442\u0440\u0430":e<17?"\u0434\u043d\u044f":"\u0432\u0435\u0447\u0435\u0440\u0430"},dayOfMonthOrdinalParse:/\d{1,2}-(\u0439|\u0433\u043e|\u044f)/,ordinal:function(e,a){switch(a){case"M":case"d":case"DDD":return e+"-\u0439";case"D":return e+"-\u0433\u043e";case"w":case"W":return e+"-\u044f";default:return e}},week:{dow:1,doy:4}});var pr=["\u062c\u0646\u0648\u0631\u064a","\u0641\u064a\u0628\u0631\u0648\u0631\u064a","\u0645\u0627\u0631\u0686","\u0627\u067e\u0631\u064a\u0644","\u0645\u0626\u064a","\u062c\u0648\u0646","\u062c\u0648\u0644\u0627\u0621\u0650","\u0622\u06af\u0633\u067d","\u0633\u064a\u067e\u067d\u0645\u0628\u0631","\u0622\u06aa\u067d\u0648\u0628\u0631","\u0646\u0648\u0645\u0628\u0631","\u068a\u0633\u0645\u0628\u0631"],kr=["\u0622\u0686\u0631","\u0633\u0648\u0645\u0631","\u0627\u06b1\u0627\u0631\u0648","\u0627\u0631\u0628\u0639","\u062e\u0645\u064a\u0633","\u062c\u0645\u0639","\u0687\u0646\u0687\u0631"];M.defineLocale("sd",{months:pr,monthsShort:pr,weekdays:kr,weekdaysShort:kr,weekdaysMin:kr,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd\u060c D MMMM YYYY HH:mm"},meridiemParse:/\u0635\u0628\u062d|\u0634\u0627\u0645/,isPM:function(e){return"\u0634\u0627\u0645"===e},meridiem:function(e,a,t){return e<12?"\u0635\u0628\u062d":"\u0634\u0627\u0645"},calendar:{sameDay:"[\u0627\u0684] LT",nextDay:"[\u0633\u0680\u0627\u06bb\u064a] LT",nextWeek:"dddd [\u0627\u06b3\u064a\u0646 \u0647\u0641\u062a\u064a \u062a\u064a] LT",lastDay:"[\u06aa\u0627\u0644\u0647\u0647] LT",lastWeek:"[\u06af\u0632\u0631\u064a\u0644 \u0647\u0641\u062a\u064a] dddd [\u062a\u064a] LT",sameElse:"L"},relativeTime:{future:"%s \u067e\u0648\u0621",past:"%s \u0627\u06b3",s:"\u0686\u0646\u062f \u0633\u064a\u06aa\u0646\u068a",ss:"%d \u0633\u064a\u06aa\u0646\u068a",m:"\u0647\u06aa \u0645\u0646\u067d",mm:"%d \u0645\u0646\u067d",h:"\u0647\u06aa \u06aa\u0644\u0627\u06aa",hh:"%d \u06aa\u0644\u0627\u06aa",d:"\u0647\u06aa \u068f\u064a\u0646\u0647\u0646",dd:"%d \u068f\u064a\u0646\u0647\u0646",M:"\u0647\u06aa \u0645\u0647\u064a\u0646\u0648",MM:"%d \u0645\u0647\u064a\u0646\u0627",y:"\u0647\u06aa \u0633\u0627\u0644",yy:"%d \u0633\u0627\u0644"},preparse:function(e){return e.replace(/\u060c/g,",")},postformat:function(e){return e.replace(/,/g,"\u060c")},week:{dow:1,doy:4}}),M.defineLocale("se",{months:"o\u0111\u0111ajagem\xe1nnu_guovvam\xe1nnu_njuk\u010dam\xe1nnu_cuo\u014bom\xe1nnu_miessem\xe1nnu_geassem\xe1nnu_suoidnem\xe1nnu_borgem\xe1nnu_\u010dak\u010dam\xe1nnu_golggotm\xe1nnu_sk\xe1bmam\xe1nnu_juovlam\xe1nnu".split("_"),monthsShort:"o\u0111\u0111j_guov_njuk_cuo_mies_geas_suoi_borg_\u010dak\u010d_golg_sk\xe1b_juov".split("_"),weekdays:"sotnabeaivi_vuoss\xe1rga_ma\u014b\u014beb\xe1rga_gaskavahkku_duorastat_bearjadat_l\xe1vvardat".split("_"),weekdaysShort:"sotn_vuos_ma\u014b_gask_duor_bear_l\xe1v".split("_"),weekdaysMin:"s_v_m_g_d_b_L".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"MMMM D. [b.] YYYY",LLL:"MMMM D. [b.] YYYY [ti.] HH:mm",LLLL:"dddd, MMMM D. [b.] YYYY [ti.] HH:mm"},calendar:{sameDay:"[otne ti] LT",nextDay:"[ihttin ti] LT",nextWeek:"dddd [ti] LT",lastDay:"[ikte ti] LT",lastWeek:"[ovddit] dddd [ti] LT",sameElse:"L"},relativeTime:{future:"%s gea\u017ees",past:"ma\u014bit %s",s:"moadde sekunddat",ss:"%d sekunddat",m:"okta minuhta",mm:"%d minuhtat",h:"okta diimmu",hh:"%d diimmut",d:"okta beaivi",dd:"%d beaivvit",M:"okta m\xe1nnu",MM:"%d m\xe1nut",y:"okta jahki",yy:"%d jagit"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),M.defineLocale("si",{months:"\u0da2\u0db1\u0dc0\u0dcf\u0dbb\u0dd2_\u0db4\u0dd9\u0db6\u0dbb\u0dc0\u0dcf\u0dbb\u0dd2_\u0db8\u0dcf\u0dbb\u0dca\u0dad\u0dd4_\u0d85\u0db4\u0dca\u200d\u0dbb\u0dda\u0dbd\u0dca_\u0db8\u0dd0\u0dba\u0dd2_\u0da2\u0dd6\u0db1\u0dd2_\u0da2\u0dd6\u0dbd\u0dd2_\u0d85\u0d9c\u0ddd\u0dc3\u0dca\u0dad\u0dd4_\u0dc3\u0dd0\u0db4\u0dca\u0dad\u0dd0\u0db8\u0dca\u0db6\u0dbb\u0dca_\u0d94\u0d9a\u0dca\u0dad\u0ddd\u0db6\u0dbb\u0dca_\u0db1\u0ddc\u0dc0\u0dd0\u0db8\u0dca\u0db6\u0dbb\u0dca_\u0daf\u0dd9\u0dc3\u0dd0\u0db8\u0dca\u0db6\u0dbb\u0dca".split("_"),monthsShort:"\u0da2\u0db1_\u0db4\u0dd9\u0db6_\u0db8\u0dcf\u0dbb\u0dca_\u0d85\u0db4\u0dca_\u0db8\u0dd0\u0dba\u0dd2_\u0da2\u0dd6\u0db1\u0dd2_\u0da2\u0dd6\u0dbd\u0dd2_\u0d85\u0d9c\u0ddd_\u0dc3\u0dd0\u0db4\u0dca_\u0d94\u0d9a\u0dca_\u0db1\u0ddc\u0dc0\u0dd0_\u0daf\u0dd9\u0dc3\u0dd0".split("_"),weekdays:"\u0d89\u0dbb\u0dd2\u0daf\u0dcf_\u0dc3\u0db3\u0dd4\u0daf\u0dcf_\u0d85\u0d9f\u0dc4\u0dbb\u0dd4\u0dc0\u0dcf\u0daf\u0dcf_\u0db6\u0daf\u0dcf\u0daf\u0dcf_\u0db6\u0dca\u200d\u0dbb\u0dc4\u0dc3\u0dca\u0db4\u0dad\u0dd2\u0db1\u0dca\u0daf\u0dcf_\u0dc3\u0dd2\u0d9a\u0dd4\u0dbb\u0dcf\u0daf\u0dcf_\u0dc3\u0dd9\u0db1\u0dc3\u0dd4\u0dbb\u0dcf\u0daf\u0dcf".split("_"),weekdaysShort:"\u0d89\u0dbb\u0dd2_\u0dc3\u0db3\u0dd4_\u0d85\u0d9f_\u0db6\u0daf\u0dcf_\u0db6\u0dca\u200d\u0dbb\u0dc4_\u0dc3\u0dd2\u0d9a\u0dd4_\u0dc3\u0dd9\u0db1".split("_"),weekdaysMin:"\u0d89_\u0dc3_\u0d85_\u0db6_\u0db6\u0dca\u200d\u0dbb_\u0dc3\u0dd2_\u0dc3\u0dd9".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"a h:mm",LTS:"a h:mm:ss",L:"YYYY/MM/DD",LL:"YYYY MMMM D",LLL:"YYYY MMMM D, a h:mm",LLLL:"YYYY MMMM D [\u0dc0\u0dd0\u0db1\u0dd2] dddd, a h:mm:ss"},calendar:{sameDay:"[\u0d85\u0daf] LT[\u0da7]",nextDay:"[\u0dc4\u0dd9\u0da7] LT[\u0da7]",nextWeek:"dddd LT[\u0da7]",lastDay:"[\u0d8a\u0dba\u0dda] LT[\u0da7]",lastWeek:"[\u0db4\u0dc3\u0dd4\u0d9c\u0dd2\u0dba] dddd LT[\u0da7]",sameElse:"L"},relativeTime:{future:"%s\u0d9a\u0dd2\u0db1\u0dca",past:"%s\u0d9a\u0da7 \u0db4\u0dd9\u0dbb",s:"\u0dad\u0dad\u0dca\u0db4\u0dbb \u0d9a\u0dd2\u0dc4\u0dd2\u0db4\u0dba",ss:"\u0dad\u0dad\u0dca\u0db4\u0dbb %d",m:"\u0db8\u0dd2\u0db1\u0dd2\u0dad\u0dca\u0dad\u0dd4\u0dc0",mm:"\u0db8\u0dd2\u0db1\u0dd2\u0dad\u0dca\u0dad\u0dd4 %d",h:"\u0db4\u0dd0\u0dba",hh:"\u0db4\u0dd0\u0dba %d",d:"\u0daf\u0dd2\u0db1\u0dba",dd:"\u0daf\u0dd2\u0db1 %d",M:"\u0db8\u0dcf\u0dc3\u0dba",MM:"\u0db8\u0dcf\u0dc3 %d",y:"\u0dc0\u0dc3\u0dbb",yy:"\u0dc0\u0dc3\u0dbb %d"},dayOfMonthOrdinalParse:/\d{1,2} \u0dc0\u0dd0\u0db1\u0dd2/,ordinal:function(e){return e+" \u0dc0\u0dd0\u0db1\u0dd2"},meridiemParse:/\u0db4\u0dd9\u0dbb \u0dc0\u0dbb\u0dd4|\u0db4\u0dc3\u0dca \u0dc0\u0dbb\u0dd4|\u0db4\u0dd9.\u0dc0|\u0db4.\u0dc0./,isPM:function(e){return"\u0db4.\u0dc0."===e||"\u0db4\u0dc3\u0dca \u0dc0\u0dbb\u0dd4"===e},meridiem:function(e,a,t){return 11<e?t?"\u0db4.\u0dc0.":"\u0db4\u0dc3\u0dca \u0dc0\u0dbb\u0dd4":t?"\u0db4\u0dd9.\u0dc0.":"\u0db4\u0dd9\u0dbb \u0dc0\u0dbb\u0dd4"}});var Dr="janu\xe1r_febru\xe1r_marec_apr\xedl_m\xe1j_j\xfan_j\xfal_august_september_okt\xf3ber_november_december".split("_"),Tr="jan_feb_mar_apr_m\xe1j_j\xfan_j\xfal_aug_sep_okt_nov_dec".split("_");function gr(e){return 1<e&&e<5}function wr(e,a,t,s){var n=e+" ";switch(t){case"s":return a||s?"p\xe1r sek\xfand":"p\xe1r sekundami";case"ss":return a||s?n+(gr(e)?"sekundy":"sek\xfand"):n+"sekundami";case"m":return a?"min\xfata":s?"min\xfatu":"min\xfatou";case"mm":return a||s?n+(gr(e)?"min\xfaty":"min\xfat"):n+"min\xfatami";case"h":return a?"hodina":s?"hodinu":"hodinou";case"hh":return a||s?n+(gr(e)?"hodiny":"hod\xedn"):n+"hodinami";case"d":return a||s?"de\u0148":"d\u0148om";case"dd":return a||s?n+(gr(e)?"dni":"dn\xed"):n+"d\u0148ami";case"M":return a||s?"mesiac":"mesiacom";case"MM":return a||s?n+(gr(e)?"mesiace":"mesiacov"):n+"mesiacmi";case"y":return a||s?"rok":"rokom";case"yy":return a||s?n+(gr(e)?"roky":"rokov"):n+"rokmi"}}function vr(e,a,t,s){var n=e+" ";switch(t){case"s":return a||s?"nekaj sekund":"nekaj sekundami";case"ss":return n+=1===e?a?"sekundo":"sekundi":2===e?a||s?"sekundi":"sekundah":e<5?a||s?"sekunde":"sekundah":"sekund";case"m":return a?"ena minuta":"eno minuto";case"mm":return n+=1===e?a?"minuta":"minuto":2===e?a||s?"minuti":"minutama":e<5?a||s?"minute":"minutami":a||s?"minut":"minutami";case"h":return a?"ena ura":"eno uro";case"hh":return n+=1===e?a?"ura":"uro":2===e?a||s?"uri":"urama":e<5?a||s?"ure":"urami":a||s?"ur":"urami";case"d":return a||s?"en dan":"enim dnem";case"dd":return n+=1===e?a||s?"dan":"dnem":2===e?a||s?"dni":"dnevoma":a||s?"dni":"dnevi";case"M":return a||s?"en mesec":"enim mesecem";case"MM":return n+=1===e?a||s?"mesec":"mesecem":2===e?a||s?"meseca":"mesecema":e<5?a||s?"mesece":"meseci":a||s?"mesecev":"meseci";case"y":return a||s?"eno leto":"enim letom";case"yy":return n+=1===e?a||s?"leto":"letom":2===e?a||s?"leti":"letoma":e<5?a||s?"leta":"leti":a||s?"let":"leti"}}M.defineLocale("sk",{months:Dr,monthsShort:Tr,weekdays:"nede\u013ea_pondelok_utorok_streda_\u0161tvrtok_piatok_sobota".split("_"),weekdaysShort:"ne_po_ut_st_\u0161t_pi_so".split("_"),weekdaysMin:"ne_po_ut_st_\u0161t_pi_so".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd D. MMMM YYYY H:mm"},calendar:{sameDay:"[dnes o] LT",nextDay:"[zajtra o] LT",nextWeek:function(){switch(this.day()){case 0:return"[v nede\u013eu o] LT";case 1:case 2:return"[v] dddd [o] LT";case 3:return"[v stredu o] LT";case 4:return"[vo \u0161tvrtok o] LT";case 5:return"[v piatok o] LT";case 6:return"[v sobotu o] LT"}},lastDay:"[v\u010dera o] LT",lastWeek:function(){switch(this.day()){case 0:return"[minul\xfa nede\u013eu o] LT";case 1:case 2:return"[minul\xfd] dddd [o] LT";case 3:return"[minul\xfa stredu o] LT";case 4:case 5:return"[minul\xfd] dddd [o] LT";case 6:return"[minul\xfa sobotu o] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"pred %s",s:wr,ss:wr,m:wr,mm:wr,h:wr,hh:wr,d:wr,dd:wr,M:wr,MM:wr,y:wr,yy:wr},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),M.defineLocale("sl",{months:"januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december".split("_"),monthsShort:"jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedelja_ponedeljek_torek_sreda_\u010detrtek_petek_sobota".split("_"),weekdaysShort:"ned._pon._tor._sre._\u010det._pet._sob.".split("_"),weekdaysMin:"ne_po_to_sr_\u010de_pe_so".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD. MM. YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danes ob] LT",nextDay:"[jutri ob] LT",nextWeek:function(){switch(this.day()){case 0:return"[v] [nedeljo] [ob] LT";case 3:return"[v] [sredo] [ob] LT";case 6:return"[v] [soboto] [ob] LT";case 1:case 2:case 4:case 5:return"[v] dddd [ob] LT"}},lastDay:"[v\u010deraj ob] LT",lastWeek:function(){switch(this.day()){case 0:return"[prej\u0161njo] [nedeljo] [ob] LT";case 3:return"[prej\u0161njo] [sredo] [ob] LT";case 6:return"[prej\u0161njo] [soboto] [ob] LT";case 1:case 2:case 4:case 5:return"[prej\u0161nji] dddd [ob] LT"}},sameElse:"L"},relativeTime:{future:"\u010dez %s",past:"pred %s",s:vr,ss:vr,m:vr,mm:vr,h:vr,hh:vr,d:vr,dd:vr,M:vr,MM:vr,y:vr,yy:vr},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}}),M.defineLocale("sq",{months:"Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_N\xebntor_Dhjetor".split("_"),monthsShort:"Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_N\xebn_Dhj".split("_"),weekdays:"E Diel_E H\xebn\xeb_E Mart\xeb_E M\xebrkur\xeb_E Enjte_E Premte_E Shtun\xeb".split("_"),weekdaysShort:"Die_H\xebn_Mar_M\xebr_Enj_Pre_Sht".split("_"),weekdaysMin:"D_H_Ma_M\xeb_E_P_Sh".split("_"),weekdaysParseExact:!0,meridiemParse:/PD|MD/,isPM:function(e){return"M"===e.charAt(0)},meridiem:function(e,a,t){return e<12?"PD":"MD"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Sot n\xeb] LT",nextDay:"[Nes\xebr n\xeb] LT",nextWeek:"dddd [n\xeb] LT",lastDay:"[Dje n\xeb] LT",lastWeek:"dddd [e kaluar n\xeb] LT",sameElse:"L"},relativeTime:{future:"n\xeb %s",past:"%s m\xeb par\xeb",s:"disa sekonda",ss:"%d sekonda",m:"nj\xeb minut\xeb",mm:"%d minuta",h:"nj\xeb or\xeb",hh:"%d or\xeb",d:"nj\xeb dit\xeb",dd:"%d dit\xeb",M:"nj\xeb muaj",MM:"%d muaj",y:"nj\xeb vit",yy:"%d vite"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});var br={words:{ss:["\u0441\u0435\u043a\u0443\u043d\u0434\u0430","\u0441\u0435\u043a\u0443\u043d\u0434\u0435","\u0441\u0435\u043a\u0443\u043d\u0434\u0438"],m:["\u0458\u0435\u0434\u0430\u043d \u043c\u0438\u043d\u0443\u0442","\u0458\u0435\u0434\u043d\u0435 \u043c\u0438\u043d\u0443\u0442\u0435"],mm:["\u043c\u0438\u043d\u0443\u0442","\u043c\u0438\u043d\u0443\u0442\u0435","\u043c\u0438\u043d\u0443\u0442\u0430"],h:["\u0458\u0435\u0434\u0430\u043d \u0441\u0430\u0442","\u0458\u0435\u0434\u043d\u043e\u0433 \u0441\u0430\u0442\u0430"],hh:["\u0441\u0430\u0442","\u0441\u0430\u0442\u0430","\u0441\u0430\u0442\u0438"],dd:["\u0434\u0430\u043d","\u0434\u0430\u043d\u0430","\u0434\u0430\u043d\u0430"],MM:["\u043c\u0435\u0441\u0435\u0446","\u043c\u0435\u0441\u0435\u0446\u0430","\u043c\u0435\u0441\u0435\u0446\u0438"],yy:["\u0433\u043e\u0434\u0438\u043d\u0430","\u0433\u043e\u0434\u0438\u043d\u0435","\u0433\u043e\u0434\u0438\u043d\u0430"]},correctGrammaticalCase:function(e,a){return 1===e?a[0]:2<=e&&e<=4?a[1]:a[2]},translate:function(e,a,t){var s=br.words[t];return 1===t.length?a?s[0]:s[1]:e+" "+br.correctGrammaticalCase(e,s)}};M.defineLocale("sr-cyrl",{months:"\u0458\u0430\u043d\u0443\u0430\u0440_\u0444\u0435\u0431\u0440\u0443\u0430\u0440_\u043c\u0430\u0440\u0442_\u0430\u043f\u0440\u0438\u043b_\u043c\u0430\u0458_\u0458\u0443\u043d_\u0458\u0443\u043b_\u0430\u0432\u0433\u0443\u0441\u0442_\u0441\u0435\u043f\u0442\u0435\u043c\u0431\u0430\u0440_\u043e\u043a\u0442\u043e\u0431\u0430\u0440_\u043d\u043e\u0432\u0435\u043c\u0431\u0430\u0440_\u0434\u0435\u0446\u0435\u043c\u0431\u0430\u0440".split("_"),monthsShort:"\u0458\u0430\u043d._\u0444\u0435\u0431._\u043c\u0430\u0440._\u0430\u043f\u0440._\u043c\u0430\u0458_\u0458\u0443\u043d_\u0458\u0443\u043b_\u0430\u0432\u0433._\u0441\u0435\u043f._\u043e\u043a\u0442._\u043d\u043e\u0432._\u0434\u0435\u0446.".split("_"),monthsParseExact:!0,weekdays:"\u043d\u0435\u0434\u0435\u0459\u0430_\u043f\u043e\u043d\u0435\u0434\u0435\u0459\u0430\u043a_\u0443\u0442\u043e\u0440\u0430\u043a_\u0441\u0440\u0435\u0434\u0430_\u0447\u0435\u0442\u0432\u0440\u0442\u0430\u043a_\u043f\u0435\u0442\u0430\u043a_\u0441\u0443\u0431
559\u043e\u0442\u0430".split("_"),weekdaysShort:"\u043d\u0435\u0434._\u043f\u043e\u043d._\u0443\u0442\u043e._\u0441\u0440\u0435._\u0447\u0435\u0442._\u043f\u0435\u0442._\u0441\u0443\u0431.".split("_"),weekdaysMin:"\u043d\u0435_\u043f\u043e_\u0443\u0442_\u0441\u0440_\u0447\u0435_\u043f\u0435_\u0441\u0443".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"D. M. YYYY.",LL:"D. MMMM YYYY.",LLL:"D. MMMM YYYY. H:mm",LLLL:"dddd, D. MMMM YYYY. H:mm"},calendar:{sameDay:"[\u0434\u0430\u043d\u0430\u0441 \u0443] LT",nextDay:"[\u0441\u0443\u0442\u0440\u0430 \u0443] LT",nextWeek:function(){switch(this.day()){case 0:return"[\u0443] [\u043d\u0435\u0434\u0435\u0459\u0443] [\u0443] LT";case 3:return"[\u0443] [\u0441\u0440\u0435\u0434\u0443] [\u0443] LT";case 6:return"[\u0443] [\u0441\u0443\u0431\u043e\u0442\u0443] [\u0443] LT";case 1:case 2:case 4:case 5:return"[\u0443] dddd [\u0443] LT"}},lastDay:"[\u0458\u0443\u0447\u0435 \u0443] LT",lastWeek:function(){return["[\u043f\u0440\u043e\u0448\u043b\u0435] [\u043d\u0435\u0434\u0435\u0459\u0435] [\u0443] LT","[\u043f\u0440\u043e\u0448\u043b\u043e\u0433] [\u043f\u043e\u043d\u0435\u0434\u0435\u0459\u043a\u0430] [\u0443] LT","[\u043f\u0440\u043e\u0448\u043b\u043e\u0433] [\u0443\u0442\u043e\u0440\u043a\u0430] [\u0443] LT","[\u043f\u0440\u043e\u0448\u043b\u0435] [\u0441\u0440\u0435\u0434\u0435] [\u0443] LT","[\u043f\u0440\u043e\u0448\u043b\u043e\u0433] [\u0447\u0435\u0442\u0432\u0440\u0442\u043a\u0430] [\u0443] LT","[\u043f\u0440\u043e\u0448\u043b\u043e\u0433] [\u043f\u0435\u0442\u043a\u0430] [\u0443] LT","[\u043f\u0440\u043e\u0448\u043b\u0435] [\u0441\u0443\u0431\u043e\u0442\u0435] [\u0443] LT"][this.day()]},sameElse:"L"},relativeTime:{future:"\u0437\u0430 %s",past:"\u043f\u0440\u0435 %s",s:"\u043d\u0435\u043a\u043e\u043b\u0438\u043a\u043e \u0441\u0435\u043a\u0443\u043d\u0434\u0438",ss:br.translate,m:br.translate,mm:br.translate,h:br.translate,hh:br.translate,d:"\u0434\u0430\u043d",dd:br.translate,M:"\u043c\u0435\u0441\u0435\u0446",MM:br.translate,y:"\u0433\u043e\u0434\u0438\u043d\u0443",yy:br.translate},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}});var Sr={words:{ss:["sekunda","sekunde","sekundi"],m:["jedan minut","jedne minute"],mm:["minut","minute","minuta"],h:["jedan sat","jednog sata"],hh:["sat","sata","sati"],dd:["dan","dana","dana"],MM:["mesec","meseca","meseci"],yy:["godina","godine","godina"]},correctGrammaticalCase:function(e,a){return 1===e?a[0]:2<=e&&e<=4?a[1]:a[2]},translate:function(e,a,t){var s=Sr.words[t];return 1===t.length?a?s[0]:s[1]:e+" "+Sr.correctGrammaticalCase(e,s)}};M.defineLocale("sr",{months:"januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar".split("_"),monthsShort:"jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedelja_ponedeljak_utorak_sreda_\u010detvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sre._\u010det._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_\u010de_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"D. M. YYYY.",LL:"D. MMMM YYYY.",LLL:"D. MMMM YYYY. H:mm",LLLL:"dddd, D. MMMM YYYY. H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedelju] [u] LT";case 3:return"[u] [sredu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[ju\u010de u] LT",lastWeek:function(){return["[pro\u0161le] [nedelje] [u] LT","[pro\u0161log] [ponedeljka] [u] LT","[pro\u0161log] [utorka] [u] LT","[pro\u0161le] [srede] [u] LT","[pro\u0161log] [\u010detvrtka] [u] LT","[pro\u0161log] [petka] [u] LT","[pro\u0161le] [subote] [u] LT"][this.day()]},sameElse:"L"},relativeTime:{future:"za %s",past:"pre %s",s:"nekoliko sekundi",ss:Sr.translate,m:Sr.translate,mm:Sr.translate,h:Sr.translate,hh:Sr.translate,d:"dan",dd:Sr.translate,M:"mesec",MM:Sr.translate,y:"godinu",yy:Sr.translate},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}}),M.defineLocale("ss",{months:"Bhimbidvwane_Indlovana_Indlov'lenkhulu_Mabasa_Inkhwekhweti_Inhlaba_Kholwane_Ingci_Inyoni_Imphala_Lweti_Ingongoni".split("_"),monthsShort:"Bhi_Ina_Inu_Mab_Ink_Inh_Kho_Igc_Iny_Imp_Lwe_Igo".split("_"),weekdays:"Lisontfo_Umsombuluko_Lesibili_Lesitsatfu_Lesine_Lesihlanu_Umgcibelo".split("_"),weekdaysShort:"Lis_Umb_Lsb_Les_Lsi_Lsh_Umg".split("_"),weekdaysMin:"Li_Us_Lb_Lt_Ls_Lh_Ug".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h:mm A",LT
vendor: 18,962 bytes, line 559
559S:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Namuhla nga] LT",nextDay:"[Kusasa nga] LT",nextWeek:"dddd [nga] LT",lastDay:"[Itolo nga] LT",lastWeek:"dddd [leliphelile] [nga] LT",sameElse:"L"},relativeTime:{future:"nga %s",past:"wenteka nga %s",s:"emizuzwana lomcane",ss:"%d mzuzwana",m:"umzuzu",mm:"%d emizuzu",h:"lihora",hh:"%d emahora",d:"lilanga",dd:"%d emalanga",M:"inyanga",MM:"%d tinyanga",y:"umnyaka",yy:"%d iminyaka"},meridiemParse:/ekuseni|emini|entsambama|ebusuku/,meridiem:function(e,a,t){return e<11?"ekuseni":e<15?"emini":e<19?"entsambama":"ebusuku"},meridiemHour:function(e,a){return 12===e&&(e=0),"ekuseni"===a?e:"emini"===a?11<=e?e:e+12:"entsambama"===a||"ebusuku"===a?0===e?0:e+12:void 0},dayOfMonthOrdinalParse:/\d{1,2}/,ordinal:"%d",week:{dow:1,doy:4}}),M.defineLocale("sv",{months:"januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"),weekdays:"s\xf6ndag_m\xe5ndag_tisdag_onsdag_torsdag_fredag_l\xf6rdag".split("_"),weekdaysShort:"s\xf6n_m\xe5n_tis_ons_tor_fre_l\xf6r".split("_"),weekdaysMin:"s\xf6_m\xe5_ti_on_to_fr_l\xf6".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [kl.] HH:mm",LLLL:"dddd D MMMM YYYY [kl.] HH:mm",lll:"D MMM YYYY HH:mm",llll:"ddd D MMM YYYY HH:mm"},calendar:{sameDay:"[Idag] LT",nextDay:"[Imorgon] LT",lastDay:"[Ig\xe5r] LT",nextWeek:"[P\xe5] dddd LT",lastWeek:"[I] dddd[s] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"f\xf6r %s sedan",s:"n\xe5gra sekunder",ss:"%d sekunder",m:"en minut",mm:"%d minuter",h:"en timme",hh:"%d timmar",d:"en dag",dd:"%d dagar",M:"en m\xe5nad",MM:"%d m\xe5nader",y:"ett \xe5r",yy:"%d \xe5r"},dayOfMonthOrdinalParse:/\d{1,2}(\:e|\:a)/,ordinal:function(e){var a=e%10;return e+(1!=~~(e%100/10)&&(1==a||2==a)?":a":":e")},week:{dow:1,doy:4}}),M.defineLocale("sw",{months:"Januari_Februari_Machi_Aprili_Mei_Juni_Julai_Agosti_Septemba_Oktoba_Novemba_Desemba".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ago_Sep_Okt_Nov_Des".split("_"),weekdays:"Jumapili_Jumatatu_Jumanne_Jumatano_Alhamisi_Ijumaa_Jumamosi".split("_"),weekdaysShort:"Jpl_Jtat_Jnne_Jtan_Alh_Ijm_Jmos".split("_"),weekdaysMin:"J2_J3_J4_J5_Al_Ij_J1".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"hh:mm A",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[leo saa] LT",nextDay:"[kesho saa] LT",nextWeek:"[wiki ijayo] dddd [saat] LT",lastDay:"[jana] LT",lastWeek:"[wiki iliyopita] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s baadaye",past:"tokea %s",s:"hivi punde",ss:"sekunde %d",m:"dakika moja",mm:"dakika %d",h:"saa limoja",hh:"masaa %d",d:"siku moja",dd:"siku %d",M:"mwezi mmoja",MM:"miezi %d",y:"mwaka mmoja",yy:"miaka %d"},week:{dow:1,doy:7}});var Hr={1:"\u0be7",2:"\u0be8",3:"\u0be9",4:"\u0bea",5:"\u0beb",6:"\u0bec",7:"\u0bed",8:"\u0bee",9:"\u0bef",0:"\u0be6"},jr={"\u0be7":"1","\u0be8":"2","\u0be9":"3","\u0bea":"4","\u0beb":"5","\u0bec":"6","\u0bed":"7","\u0bee":"8","\u0bef":"9","\u0be6":"0"};M.defineLocale("ta",{months:"\u0b9c\u0ba9\u0bb5\u0bb0\u0bbf_\u0baa\u0bbf\u0baa\u0bcd\u0bb0\u0bb5\u0bb0\u0bbf_\u0bae\u0bbe\u0bb0\u0bcd\u0b9a\u0bcd_\u0b8f\u0baa\u0bcd\u0bb0\u0bb2\u0bcd_\u0bae\u0bc7_\u0b9c\u0bc2\u0ba9\u0bcd_\u0b9c\u0bc2\u0bb2\u0bc8_\u0b86\u0b95\u0bb8\u0bcd\u0b9f\u0bcd_\u0b9a\u0bc6\u0baa\u0bcd\u0b9f\u0bc6\u0bae\u0bcd\u0baa\u0bb0\u0bcd_\u0b85\u0b95\u0bcd\u0b9f\u0bc7\u0bbe\u0baa\u0bb0\u0bcd_\u0ba8\u0bb5\u0bae\u0bcd\u0baa\u0bb0\u0bcd_\u0b9f\u0bbf\u0b9a\u0bae\u0bcd\u0baa\u0bb0\u0bcd".split("_"),monthsShort:"\u0b9c\u0ba9\u0bb5\u0bb0\u0bbf_\u0baa\u0bbf\u0baa\u0bcd\u0bb0\u0bb5\u0bb0\u0bbf_\u0bae\u0bbe\u0bb0\u0bcd\u0b9a\u0bcd_\u0b8f\u0baa\u0bcd\u0bb0\u0bb2\u0bcd_\u0bae\u0bc7_\u0b9c\u0bc2\u0ba9\u0bcd_\u0b9c\u0bc2\u0bb2\u0bc8_\u0b86\u0b95\u0bb8\u0bcd\u0b9f\u0bcd_\u0b9a\u0bc6\u0baa\u0bcd\u0b9f\u0bc6\u0bae\u0bcd\u0baa\u0bb0\u0bcd_\u0b85\u0b95\u0bcd\u0b9f\u0bc7\u0bbe\u0baa\u0bb0\u0bcd_\u0ba8\u0bb5\u0bae\u0bcd\u0baa\u0bb0\u0bcd_\u0b9f\u0bbf\u0b9a\u0bae\u0bcd\u0baa\u0bb0\u0bcd".split("_"),weekdays:"\u0b9e\u0bbe\u0baf\u0bbf\u0bb1\u0bcd\u0bb1\u0bc1\u0b95\u0bcd\u0b95\u0bbf\u0bb4\u0bae\u0bc8_\u0ba4\u0bbf\u0b99\u0bcd\u0b95\u0b9f\u0bcd\u0b95\u0bbf\u0bb4\u0bae\u0bc8_\u0b9a\u0bc6\u0bb5\u0bcd\u0bb5\u0bbe\u0baf\u0bcd\u0b95\u0bbf\u0bb4\u0bae\u0bc8_\u0baa\u0bc1\u0ba4\u0ba9\u0bcd\u0b95\u0bbf\u0bb4\u0bae\u0bc8_\u0bb5\u0bbf\u0baf\u0bbe\u0bb4\u0b95\u0bcd\u0b95\u0bbf\u0bb4\u0bae\u0bc8_\u0bb5\u0bc6\u0bb3\u0bcd\u0bb3\u0bbf\u0b95\u0bcd\u0b95\u0bbf\u0bb4\u0bae\u0bc8_\u0b9a\u0ba9\u0bbf\u0b95\u0bcd\u0b95\u0bbf\u0bb4\u0bae\u0bc8".split("_"),weekdaysShort:"\u0b9e\u0bbe\u0baf\u0bbf\u0bb1\u0bc1_\u0ba4\u0bbf\u0b99\u0bcd\u0b95\u0bb3\u0bcd_\u0b9a\u0bc6\u0bb5\u0bcd\u0bb5\u0bbe\u0baf\u0bcd_\u0baa\u0bc1\u0ba4\u0ba9\u0bcd_\u0bb5\u0bbf\u0baf\u0bbe\u0bb4\u0ba9\u0bcd_\u0bb5\u0bc6\u0bb3\u0bcd\u0bb3\u0bbf_\u0b9a\u0ba9\u0bbf".split("_"),weekdaysMin:"\u0b9e\u0bbe_\u0ba4\u0bbf_\u0b9a\u0bc6_\u0baa\u0bc1_\u0bb5\u0bbf_\u0bb5\u0bc6_\u0b9a".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, HH:mm",LLLL:"dddd, D MMMM YYYY, HH:mm"},calendar:{sameDay:"[\u0b87\u0ba9\u0bcd\u0bb1\u0bc1] LT",nextDay:"[\u0ba8\u0bbe\u0bb3\u0bc8] LT",nextWeek:"dddd, LT",lastDay:"[\u0ba8\u0bc7\u0bb1\u0bcd\u0bb1\u0bc1] LT",lastWeek:"[\u0b95\u0b9f\u0ba8\u0bcd\u0ba4 \u0bb5\u0bbe\u0bb0\u0bae\u0bcd] dddd, LT",sameElse:"L"},relativeTime:{future:"%s \u0b87\u0bb2\u0bcd",past:"%s \u0bae\u0bc1\u0ba9\u0bcd",s:"\u0b92\u0bb0\u0bc1 \u0b9a\u0bbf\u0bb2 \u0bb5\u0bbf\u0ba8\u0bbe\u0b9f\u0bbf\u0b95\u0bb3\u0bcd",ss:"%d \u0bb5\u0bbf\u0ba8\u0bbe\u0b9f\u0bbf\u0b95\u0bb3\u0bcd",m:"\u0b92\u0bb0\u0bc1 \u0ba8\u0bbf\u0bae\u0bbf\u0b9f\u0bae\u0bcd",mm:"%d \u0ba8\u0bbf\u0bae\u0bbf\u0b9f\u0b99\u0bcd\u0b95\u0bb3\u0bcd",h:"\u0b92\u0bb0\u0bc1 \u0bae\u0ba3\u0bbf \u0ba8\u0bc7\u0bb0\u0bae\u0bcd",hh:"%d \u0bae\u0ba3\u0bbf \u0ba8\u0bc7\u0bb0\u0bae\u0bcd",d:"\u0b92\u0bb0\u0bc1 \u0ba8\u0bbe\u0bb3\u0bcd",dd:"%d \u0ba8\u0bbe\u0b9f\u0bcd\u0b95\u0bb3\u0bcd",M:"\u0b92\u0bb0\u0bc1 \u0bae\u0bbe\u0ba4\u0bae\u0bcd",MM:"%d \u0bae\u0bbe\u0ba4\u0b99\u0bcd\u0b95\u0bb3\u0bcd",y:"\u0b92\u0bb0\u0bc1 \u0bb5\u0bb0\u0bc1\u0b9f\u0bae\u0bcd",yy:"%d \u0b86\u0ba3\u0bcd\u0b9f\u0bc1\u0b95\u0bb3\u0bcd"},dayOfMonthOrdinalParse:/\d{1,2}\u0bb5\u0ba4\u0bc1/,ordinal:function(e){return e+"\u0bb5\u0ba4\u0bc1"},preparse:function(e){return e.replace(/[\u0be7\u0be8\u0be9\u0bea\u0beb\u0bec\u0bed\u0bee\u0bef\u0be6]/g,function(e){return jr[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return Hr[e]})},meridiemParse:/\u0baf\u0bbe\u0bae\u0bae\u0bcd|\u0bb5\u0bc8\u0b95\u0bb1\u0bc8|\u0b95\u0bbe\u0bb2\u0bc8|\u0ba8\u0ba3\u0bcd\u0baa\u0b95\u0bb2\u0bcd|\u0b8e\u0bb1\u0bcd\u0baa\u0bbe\u0b9f\u0bc1|\u0bae\u0bbe\u0bb2\u0bc8/,meridiem:function(e,a,t){return e<2?" \u0baf\u0bbe\u0bae\u0bae\u0bcd":e<6?" \u0bb5\u0bc8\u0b95\u0bb1\u0bc8":e<10?" \u0b95\u0bbe\u0bb2\u0bc8":e<14?" \u0ba8\u0ba3\u0bcd\u0baa\u0b95\u0bb2\u0bcd":e<18?" \u0b8e\u0bb1\u0bcd\u0baa\u0bbe\u0b9f\u0bc1":e<22?" \u0bae\u0bbe\u0bb2\u0bc8":" \u0baf\u0bbe\u0bae\u0bae\u0bcd"},meridiemHour:function(e,a){return 12===e&&(e=0),"\u0baf\u0bbe\u0bae\u0bae\u0bcd"===a?e<2?e:e+12:"\u0bb5\u0bc8\u0b95\u0bb1\u0bc8"===a||"\u0b95\u0bbe\u0bb2\u0bc8"===a||"\u0ba8\u0ba3\u0bcd\u0baa\u0b95\u0bb2\u0bcd"===a&&10<=e?e:e+12},week:{dow:0,doy:6}}),M.defineLocale("te",{months:"\u0c1c\u0c28\u0c35\u0c30\u0c3f_\u0c2b\u0c3f\u0c2c\u0c4d\u0c30\u0c35\u0c30\u0c3f_\u0c2e\u0c3e\u0c30\u0c4d\u0c1a\u0c3f_\u0c0f\u0c2a\u0c4d\u0c30\u0c3f\u0c32\u0c4d_\u0c2e\u0c47_\u0c1c\u0c42\u0c28\u0c4d_\u0c1c\u0c41\u0c32\u0c48_\u0c06\u0c17\u0c38\u0c4d\u0c1f\u0c41_\u0c38\u0c46\u0c2a\u0c4d\u0c1f\u0c46\u0c02\u0c2c\u0c30\u0c4d_\u0c05\u0c15\u0c4d\u0c1f\u0c4b\u0c2c\u0c30\u0c4d_\u0c28\u0c35\u0c02\u0c2c\u0c30\u0c4d_\u0c21\u0c3f\u0c38\u0c46\u0c02\u0c2c\u0c30\u0c4d".split("_"),monthsShort:"\u0c1c\u0c28._\u0c2b\u0c3f\u0c2c\u0c4d\u0c30._\u0c2e\u0c3e\u0c30\u0c4d\u0c1a\u0c3f_\u0c0f\u0c2a\u0c4d\u0c30\u0c3f._\u0c2e\u0c47_\u0c1c\u0c42\u0c28\u0c4d_\u0c1c\u0c41\u0c32\u0c48_\u0c06\u0c17._\u0c38\u0c46\u0c2a\u0c4d._\u0c05\u0c15\u0c4d\u0c1f\u0c4b._\u0c28\u0c35._\u0c21\u0c3f\u0c38\u0c46.".split("_"),monthsParseExact:!0,weekdays:"\u0c06\u0c26\u0c3f\u0c35\u0c3e\u0c30\u0c02_\u0c38\u0c4b\u0c2e\u0c35\u0c3e\u0c30\u0c02_\u0c2e\u0c02\u0c17\u0c33\u0c35\u0c3e\u0c30\u0c02_\u0c2c\u0c41\u0c27\u0c35\u0c3e\u0c30\u0c02_\u0c17\u0c41\u0c30\u0c41\u0c35\u0c3e\u0c30\u0c02_\u0c36\u0c41\u0c15\u0c4d\u0c30\u0c35\u0c3e\u0c30\u0c02_\u0c36\u0c28\u0c3f\u0c35\u0c3e\u0c30\u0c02".split("_"),weekdaysShort:"\u0c06\u0c26\u0c3f_\u0c38\u0c4b\u0c2e_\u0c2e\u0c02\u0c17\u0c33_\u0c2c\u0c41\u0c27_\u0c17\u0c41\u0c30\u0c41_\u0c36\u0c41\u0c15\u0c4d\u0c30_\u0c36\u0c28\u0c3f".split("_"),weekdaysMin:"\u0c06_\u0c38\u0c4b_\u0c2e\u0c02_\u0c2c\u0c41_\u0c17\u0c41_\u0c36\u0c41_\u0c36".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm",LLLL:"dddd, D MMMM YYYY, A h:mm"},calendar:{sameDay:"[\u0c28\u0c47\u0c21\u0c41] LT",nextDay:"[\u0c30\u0c47\u0c2a\u0c41] LT",nextWeek:"dddd, LT",lastDay:"[\u0c28\u0c3f\u0c28\u0c4d\u0c28] LT",lastWeek:"[\u0c17\u0c24] dddd, LT",sameElse:"L"},relativeTime:{future:"%s \u0c32\u0c4b",past:"%s \u0c15\u0c4d\u0c30\u0c3f\u0c24\u0c02",s:"\u0c15\u0c4a\u0c28\u0c4d\u0c28\u0c3f \u0c15\u0c4d\u0c37\u0c23\u0c3e\u0c32\u0c41",ss:"%d \u0c38\u0c46\u0c15\u0c28\u0c4d\u0c32\u0c41",m:"\u0c12\u0c15 \u0c28\u0c3f\u0c2e\u0c3f\u0c37\u0c02",mm:"%d \u0c28\u0c3f\u0c2e\u0c3f\u0c37\u0c3e\u0c32\u0c41",h:"\u0c12\u0c15 \u0c17\u0c02\u0c1f",hh:"%d \u0c17\u0c02\u0c1f\u0c32\u0c41",d:"\u0c12\u0c15 \u0c30\u0c4b\u0c1c\u0c41",dd:"%d \u0c30\u0c4b\u0c1c\u0c41\u0c32\u0c41",M:"\u0c12\u0c15 \u0c28\u0c46\u0c32",MM:"%d \u0c28\u0c46\u0c32\u0c32\u0c41",y:"\u0c12\u0c15 \u0c38\u0c02\u0c35\u0c24\u0c4d\u0c38\u0c30\u0c02",yy:"%d \u0c38\u0c02\u0c35\u0c24\u0c4d\u0c38\u0c30\u0c3e\u0c32\u0c41"},dayOfMonthOrdinalParse:/\d{1,2}\u0c35/,ordinal:"%d\u0c35",meridiemParse:/\u0c30\u0c3e\u0c24\u0c4d\u0c30\u0c3f|\u0c09\u0c26\u0c2f\u0c02|\u0c2e\u0c27\u0c4d\u0c2f\u0c3e\u0c39\u0c4d\u0c28\u0c02|\u0c38\u0c3e\u0c2f\u0c02\u0c24\u0c4d\u0c30\u0c02/,meridiemHour:function(e,a){return 12===e&&(e=0),"\u0c30\u0c3e\u0c24\u0c4d\u0c30\u0c3f"===a?e<4?e:e+12:"\u0c09\u0c26\u0c2f\u0c02"===a?e:"\u0c2e\u0c27\u0c4d\u0c2f\u0c3e\u0c39\u0c4d\u0c28\u0c02"===a?10<=e?e:e+12:"\u0c38\u0c3e\u0c2f\u0c02\u0c24\u0c4d\u0c30\u0c02"===a?e+12:void 0},meridiem:function(e,a,t){return e<4?"\u0c30\u0c3e\u0c24\u0c4d\u0c30\u0c3f":e<10?"\u0c09\u0c26\u0c2f\u0c02":e<17?"\u0c2e\u0c27\u0c4d\u0c2f\u0c3e\u0c39\u0c4d\u0c28\u0c02":e<20?"\u0c38\u0c3e\u0c2f\u0c02\u0c24\u0c4d\u0c30\u0c02":"\u0c30\u0c3e\u0c24\u0c4d\u0c30\u0c3f"},week:{dow:0,doy:6}}),M.defineLocale("tet",{months:"Janeiru_Fevereiru_Marsu_Abril_Maiu_Ju\xf1u_Jullu_Agustu_Setembru_Outubru_Novembru_Dezembru".split("_"),monthsShort:"Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez".split("_"),weekdays:"Domingu_Segunda_Tersa_Kuarta_Kinta_Sesta_Sabadu".split("_"),weekdaysShort:"Dom_Seg_Ters_Kua_Kint_Sest_Sab".split("_"),weekdaysMin:"Do_Seg_Te_Ku_Ki_Ses_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Ohin iha] LT",nextDay:"[Aban iha] LT",nextWeek:"dddd [iha] LT",lastDay:"[Horiseik iha] LT",lastWeek:"dddd [semana kotuk] [iha] LT",sameElse:"L"},relativeTime:{future:"iha %s",past:"%s liuba",s:"segundu balun",ss:"segundu %d",m:"minutu ida",mm:"minutu %d",h:"oras ida",hh:"oras %d",d:"loron ida",dd:"loron %d",M:"fulan ida",MM:"fulan %d",y:"tinan ida",yy:"tinan %d"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var a=e%10;return e+(1==~~(e%100/10)?"th":1==a?"st":2==a?"nd":3==a?"rd":"th")},week:{dow:1,doy:4}});var xr={0:"-\u0443\u043c",1:"-\u0443\u043c",2:"-\u044e\u043c",3:"-\u044e\u043c",4:"-\u0443\u043c",5:"-\u0443\u043c",6:"-\u0443\u043c",7:"-\u0443\u043c",8:"-\u0443\u043c",9:"-\u0443\u043c",10:"-\u0443\u043c",12:"-\u0443\u043c",13:"-\u0443\u043c",20:"-\u0443\u043c",30:"-\u044e\u043c",40:"-\u0443\u043c",50:"-\u0443\u043c",60:"-\u0443\u043c",70:"-\u0443\u043c",80:"-\u0443\u043c",90:"-\u0443\u043c",100:"-\u0443\u043c"};M.defineLocale("tg",{months:{format:"\u044f\u043d\u0432\u0430\u0440\u0438_\u0444\u0435\u0432\u0440\u0430\u043b\u0438_\u043c\u0430\u0440\u0442\u0438_\u0430\u043f\u0440\u0435\u043b\u0438_\u043c\u0430\u0439\u0438_\u0438\u044e\u043d\u0438_\u0438\u044e\u043b\u0438_\u0430\u0432\u0433\u0443\u0441\u0442\u0438_\u0441\u0435\u043d\u0442\u044f\u0431\u0440\u0438_\u043e\u043a\u0442\u044f\u0431\u0440\u0438_\u043d\u043e\u044f\u0431\u0440\u0438_\u0434\u0435\u043a\u0430\u0431\u0440\u0438".split("_"),standalone:"\u044f\u043d\u0432\u0430\u0440_\u0444\u0435\u0432\u0440\u0430\u043b_\u043c\u0430\u0440\u0442_\u0430\u043f\u0440\u0435\u043b_\u043c\u0430\u0439_\u0438\u044e\u043d_\u0438\u044e\u043b_\u0430\u0432\u0433\u0443\u0441\u0442_\u0441\u0435\u043d\u0442\u044f\u0431\u0440_\u043e\u043a\u0442\u044f\u0431\u0440_\u043d\u043e\u044f\u0431\u0440_\u0434\u0435\u043a\u0430\u0431\u0440".split("_")},monthsShort:"\u044f\u043d\u0432_\u0444\u0435\u0432_\u043c\u0430\u0440_\u0430\u043f\u0440_\u043c\u0430\u0439_\u0438\u044e\u043d_\u0438\u044e\u043b_\u0430\u0432\u0433_\u0441\u0435\u043d_\u043e\u043a\u0442_\u043d\u043e\u044f_\u0434\u0435\u043a".split("_"),weekdays:"\u044f\u043a\u0448\u0430\u043d\u0431\u0435_\u0434\u0443\u0448\u0430\u043d\u0431\u0435_\u0441\u0435\u0448\u0430\u043d\u0431\u0435_\u0447\u043e\u0440\u0448\u0430\u043d\u0431\u0435_\u043f\u0430\u043d\u04b7\u0448\u0430\u043d\u0431\u0435_\u04b7\u0443\u043c\u044a\u0430_\u0448\u0430\u043d\u0431\u0435".split("_"),weekdaysShort:"\u044f\u0448\u0431_\u0434\u0448\u0431_\u0441\u0448\u0431_\u0447\u0448\u0431_\u043f\u0448\u0431_\u04b7\u0443\u043c_\u0448\u043d\u0431".split("_"),weekdaysMin:"\u044f\u0448_\u0434\u0448_\u0441\u0448_\u0447\u0448_\u043f\u0448_\u04b7\u043c_\u0448\u0431".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[\u0418\u043c\u0440\u04ef\u0437 \u0441\u043e\u0430\u0442\u0438] LT",nextDay:"[\u0424\u0430\u0440\u0434\u043e \u0441\u043e\u0430\u0442\u0438] LT",lastDay:"[\u0414\u0438\u0440\u04ef\u0437 \u0441\u043e\u0430\u0442\u0438] LT",nextWeek:"dddd[\u0438] [\u04b3\u0430\u0444\u0442\u0430\u0438 \u043e\u044f\u043d\u0434\u0430 \u0441\u043e\u0430\u0442\u0438] LT",lastWeek:"dddd[\u0438] [\u04b3\u0430\u0444\u0442\u0430\u0438 \u0433\u0443\u0437\u0430\u0448\u0442\u0430 \u0441\u043e\u0430\u0442\u0438] LT",sameElse:"L"},relativeTime:{future:"\u0431\u0430\u044a\u0434\u0438 %s",past:"%s \u043f\u0435\u0448",s:"\u044f\u043a\u0447\u0430\u043d\u0434 \u0441\u043e\u043d\u0438\u044f",m:"\u044f\u043a \u0434\u0430\u049b\u0438\u049b\u0430",mm:"%d \u0434\u0430\u049b\u0438\u049b\u0430",h:"\u044f\u043a \u0441\u043e\u0430\u0442",hh:"%d \u0441\u043e\u0430\u0442",d:"\u044f\u043a \u0440\u04ef\u0437",dd:"%d \u0440\u04ef\u0437",M:"\u044f\u043a \u043c\u043e\u04b3",MM:"%d \u043c\u043e\u04b3",y:"\u044f\u043a \u0441\u043e\u043b",yy:"%d \u0441\u043e\u043b"},meridiemParse:/\u0448\u0430\u0431|\u0441\u0443\u0431\u04b3|\u0440\u04ef\u0437|\u0431\u0435\u0433\u043e\u04b3/,meridiemHour:function(e,a){return 12===e&&(e=0),"\u0448\u0430\u0431"===a?e<4?e:e+12:"\u0441\u0443\u0431\u04b3"===a?e:"\u0440\u04ef\u0437"===a?11<=e?e:e+12:"\u0431\u0435\u0433\u043e\u04b3"===a?e+12:void 0},meridiem:function(e,a,t){return e<4?"\u0448\u0430\u0431":e<11?"\u0441\u0443\u0431\u04b3":e<16?"\u0440\u04ef\u0437":e<19?"\u0431\u0435\u0433\u043e\u04b3":"\u0448\u0430\u0431"},dayOfMonthOrdinalParse:/\d{1,2}-(\u0443\u043c|\u044e\u043c)/,ordinal:function(e){return e+(xr[e]||xr[e%10]||xr[100<=e?100:null])},week:{dow:1,doy:7}}),M.defineLocale("th",{months:"\u0e21\u0e01\u0e23\u0e32\u0e04\u0e21_\u0e01\u0e38\u0e21\u0e20\u0e32\u0e1e\u0e31\u0e19\u0e18\u0e4c_\u0e21\u0e35\u0e19\u0e32\u0e04\u0e21_\u0e40\u0e21\u0e29\u0e32\u0e22\u0e19_\u0e1e\u0e24\u0e29\u0e20\u0e32\u0e04\u0e21_\u0e21\u0e34\u0e16\u0e38\u0e19\u0e32\u0e22\u0e19_\u0e01\u0e23\u0e01\u0e0e\u0e32\u0e04\u0e21_\u0e2a\u0e34\u0e07\u0e2b\u0e32\u0e04\u0e21_\u0e01\u0e31\u0e19\u0e22\u0e32\u0e22\u0e19_\u0e15\u0e38\u0e25\u0e32\u0e04\u0e21_\u0e1e\u0e24\u0e28\u0e08\u0e34\u0e01\u0e32\u0e22\u0e19_\u0e18\u0e31\u0e19\u0e27\u0e32\u0e04\u0e21".split("_"),monthsShort:"\u0e21.\u0e04._\u0e01.\u0e1e._\u0e21\u0e35.\u0e04._\u0e40\u0e21.\u0e22._\u0e1e.\u0e04._\u0e21\u0e34.\u0e22._\u0e01.\u0e04._\u0e2a.\u0e04._\u0e01.\u0e22._\u0e15.\u0e04._\u0e1e.\u0e22._\u0e18.\u0e04.".split("_"),monthsParseExact:!0,weekdays:"\u0e2d\u0e32\u0e17\u0e34\u0e15\u0e22\u0e4c_\u0e08\u0e31\u0e19\u0e17\u0e23\u0e4c_\u0e2d\u0e31\u0e07\u0e04\u0e32\u0e23_\u0e1e\u0e38\u0e18_\u0e1e\u0e24\u0e2b\u0e31\u0e2a\u0e1a\u0e14\u0e35_\u0e28\u0e38\u0e01\u0e23\u0e4c_\u0e40\u0e2a\u0e32\u0e23\u0e4c".split("_"),weekdaysShort:"\u0e2d\u0e32\u0e17\u0e34\u0e15\u0e22\u0e4c_\u0e08\u0e31\u0e19\u0e17\u0e23\u0e4c_\u0e2d\u0e31\u0e07\u0e04\u0e32\u0e23_\u0e1e\u0e38\u0e18_\u0e1e\u0e24\u0e2b\u0e31\u0e2a_\u0e28\u0e38\u0e01\u0e23\u0e4c_\u0e40\u0e2a\u0e32\u0e23\u0e4c".split("_"),weekdaysMin:"\u0e2d\u0e32._\u0e08._\u0e2d._\u0e1e._\u0e1e\u0e24._\u0e28._\u0e2a.".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY \u0e40\u0e27\u0e25\u0e32 H:mm",LLLL:"\u0e27\u0e31\u0e19dddd\u0e17\u0e35\u0e48 D MMMM YYYY \u0e40\u0e27\u0e25\u0e32 H:mm"},meridiemParse:/\u0e01\u0e48\u0e2d\u0e19\u0e40\u0e17\u0e35\u0e48\u0e22\u0e07|\u0e2b\u0e25\u0e31\u0e07\u0e40\u0e17\u0e35\u0e48\u0e22\u0e07/,isPM:function(e){return"\u0e2b\u0e25\u0e31\u0e07\u0e40\u0e17\u0e35\u0e48\u0e22\u0e07"===e},meridiem:function(e,a,t){return e<12?"\u0e01\u0e48\u0e2d\u0e19\u0e40\u0e17\u0e35\u0e48\u0e22\u0e07":"\u0e2b\u0e25\u0e31\u0e07\u0e40\u0e17\u0e35\u0e48\u0e22\u0e07"},calendar:{sameDay:"[\u0e27\u0e31\u0e19\u0e19\u0e35\u0e49 \u0e40\u0e27\u0e25\u0e32] LT",nextDay:"[\u0e1e\u0e23\u0e38\u0e48\u0e07\u0e19\u0e35\u0e49 \u0e40\u0e27\u0e25\u0e32] LT",nextWeek:"dddd[\u0e2b\u0e19\u0e49\u0e32 \u0e40\u0e27\u0e25\u0e32] LT",lastDay:"[\u0e40\u0e21\u0e37\u0e48\u0e2d\u0e27\u0e32\u0e19\u0e19\u0e35\u0e49 \u0e40\u0e27\u0e25\u0e32] LT",lastWeek:"[\u0e27\u0e31\u0e19]dddd[\u0e17\u0e35\u0e48\u0e41\u0e25\u0e49\u0e27 \u0e40\u0e27\u0e25\u0e32] LT",sameElse:"L"},relativeTime:{future:"\u0e2d\u0e35\u0e01 %s",past:"%s\u0e17\u0e35\u0e48\u0e41\u0e25\u0e49\u0e27",s:"\u0e44\u0e21\u0e48\u0e01\u0e35\u0e48\u0e27\u0e34\u0e19\u0e32\u0e17\u0e35",ss:"%d \u0e27\u0e34\u0e19\u0e32\u0e17\u0e35",m:"1 \u0e19\u0e32\u0e17\u0e35",mm:"%d \u0e19\u0e32\u0e17\u0e35",h:"1 \u0e0a\u0e31\u0e48\u0e27\u0e42\u0e21\u0e07",hh:"%d \u0e0a\u0e31\u0e48\u0e27\u0e42\u0e21\u0e07",d:"1 \u0e27\u0e31\u0e19",dd:"%d \u0e27\u0e31\u0e19",w:"1 \u0e2a\u0e31\u0e1b\u0e14\u0e32\u0e2b\u0e4c",ww:"%d \u0e2a\u0e31\u0e1b\u0e14\u0e32\u0e2b\u0e4c",M:"1 \u0e40\u0e14\u0e37\u0e2d\u0e19",MM:"%d \u0e40\u0e14\u0e37\u0e2d\u0e19",y:"1 \u0e1b\u0e35",yy:"%d \u0e1b\u0e35"}});
559var Pr={1:"'inji",5:"'inji",8:"'inji",70:"'inji",80:"'inji",2:"'nji",7:"'nji",20:"'nji",50:"'nji",3:"'\xfcnji",4:"'\xfcnji",100:"'\xfcnji",6:"'njy",9:"'unjy",10:"'unjy",30:"'unjy",60:"'ynjy",90:"'ynjy"};M.defineLocale("tk",{months:"\xddanwar_Fewral_Mart_Aprel_Ma\xfd_I\xfdun_I\xfdul_Awgust_Sent\xfdabr_Okt\xfdabr_No\xfdabr_Dekabr".split("_"),monthsShort:"\xddan_Few_Mar_Apr_Ma\xfd_I\xfdn_I\xfdl_Awg_Sen_Okt_No\xfd_Dek".split("_"),weekdays:"\xddek\u015fenbe_Du\u015fenbe_Si\u015fenbe_\xc7ar\u015fenbe_Pen\u015fenbe_Anna_\u015eenbe".split("_"),weekdaysShort:"\xddek_Du\u015f_Si\u015f_\xc7ar_Pen_Ann_\u015een".split("_"),weekdaysMin:"\xddk_D\u015f_S\u015f_\xc7r_Pn_An_\u015en".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[bug\xfcn sagat] LT",nextDay:"[ertir sagat] LT",nextWeek:"[indiki] dddd [sagat] LT",lastDay:"[d\xfc\xfdn] LT",lastWeek:"[ge\xe7en] dddd [sagat] LT",sameElse:"L"},relativeTime:{future:"%s so\u0148",past:"%s \xf6\u0148",s:"birn\xe4\xe7e sekunt",m:"bir minut",mm:"%d minut",h:"bir sagat",hh:"%d sagat",d:"bir g\xfcn",dd:"%d g\xfcn",M:"bir a\xfd",MM:"%d a\xfd",y:"bir \xfdyl",yy:"%d \xfdyl"},ordinal:function(e,a){switch(a){case"d":case"D":case"Do":case"DD":return e;default:if(0===e)return e+"'unjy";var t=e%10;return e+(Pr[t]||Pr[e%100-t]||Pr[100<=e?100:null])}},week:{dow:1,doy:7}}),M.defineLocale("tl-ph",{months:"Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre".split("_"),monthsShort:"Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis".split("_"),weekdays:"Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado".split("_"),weekdaysShort:"Lin_Lun_Mar_Miy_Huw_Biy_Sab".split("_"),weekdaysMin:"Li_Lu_Ma_Mi_Hu_Bi_Sab".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"MM/D/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY HH:mm",LLLL:"dddd, MMMM DD, YYYY HH:mm"},calendar:{sameDay:"LT [ngayong araw]",nextDay:"[Bukas ng] LT",nextWeek:"LT [sa susunod na] dddd",lastDay:"LT [kahapon]",lastWeek:"LT [noong nakaraang] dddd",sameElse:"L"},relativeTime:{future:"sa loob ng %s",past:"%s ang nakalipas",s:"ilang segundo",ss:"%d segundo",m:"isang minuto",mm:"%d minuto",h:"isang oras",hh:"%d oras",d:"isang araw",dd:"%d araw",M:"isang buwan",MM:"%d buwan",y:"isang taon",yy:"%d taon"},dayOfMonthOrdinalParse:/\d{1,2}/,ordinal:function(e){return e},week:{dow:1,doy:4}});var Or="pagh_wa\u2019_cha\u2019_wej_loS_vagh_jav_Soch_chorgh_Hut".split("_");function Wr(e,a,t,s){var n=function(e){var a=Math.floor(e%1e3/100),t=Math.floor(e%100/10),s=e%10,n="";0<a&&(n+=Or[a]+"vatlh");0<t&&(n+=(""!==n?" ":"")+Or[t]+"maH");0<s&&(n+=(""!==n?" ":"")+Or[s]);return""===n?"pagh":n}(e);switch(t){case"ss":return n+" lup";case"mm":return n+" tup";case"hh":return n+" rep";case"dd":return n+" jaj";case"MM":return n+" jar";case"yy":return n+" DIS"}}M.defineLocale("tlh",{months:"tera\u2019 jar wa\u2019_tera\u2019 jar cha\u2019_tera\u2019 jar wej_tera\u2019 jar loS_tera\u2019 jar vagh_tera\u2019 jar jav_tera\u2019 jar Soch_tera\u2019 jar chorgh_tera\u2019 jar Hut_tera\u2019 jar wa\u2019maH_tera\u2019 jar wa\u2019maH wa\u2019_tera\u2019 jar wa\u2019maH cha\u2019".split("_"),monthsShort:"jar wa\u2019_jar cha\u2019_jar wej_jar loS_jar vagh_jar jav_jar Soch_jar chorgh_jar Hut_jar wa\u2019maH_jar wa\u2019maH wa\u2019_jar wa\u2019maH cha\u2019".split("_"),monthsParseExact:!0,weekdays:"lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj".split("_"),weekdaysShort:"lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj".split("_"),weekdaysMin:"lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[DaHjaj] LT",nextDay:"[wa\u2019leS] LT",nextWeek:"LLL",lastDay:"[wa\u2019Hu\u2019] LT",lastWeek:"LLL",sameElse:"L"},relativeTime:{future:function(e){var a=e;return a=-1!==e.indexOf("jaj")?a.slice(0,-3)+"leS":-1!==e.indexOf("jar")?a.slice(0,-3)+"waQ":-1!==e.indexOf("DIS")?a.slice(0,-3)+"nem":a+" pIq"},past:function(e){var a=e;return a=-1!==e.indexOf("jaj")?a.slice(0,-3)+"Hu\u2019":-1!==e.indexOf("jar")?a.slice(0,-3)+"wen":-1!==e.indexOf("DIS")?a.slice(0,-3)+"ben":a+" ret"},s:"puS lup",ss:Wr,m:"wa\u2019 tup",mm:Wr,h:"wa\u2019 rep",hh:Wr,d:"wa\u2019 jaj",dd:Wr,M:"wa\u2019 jar",MM:Wr,y:"wa\u2019 DIS",yy:Wr},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});var Ar={1:"'inci",5:"'inci",8:"'inci",70:"'inci",80:"'inci",2:"'nci",7:"'nci",20:"'nci",50:"'nci",3:"'\xfcnc\xfc",4:"'\xfcnc\xfc",100:"'\xfcnc\xfc",6:"'nc\u0131",9:"'uncu",10:"'uncu",30:"'uncu",60:"'\u0131nc\u0131",90:"'\u0131nc\u0131"};function Er(e,a,t,s){var n={s:["viensas secunds","'iensas secunds"],ss:[e+" secunds",e+" secunds"],m:["'n m\xedut","'iens m\xedut"],mm:[e+" m\xeduts",e+" m\xeduts"],h:["'n \xfeora","'iensa \xfeora"],hh:[e+" \xfeoras",e+" \xfeoras"],d:["'n ziua","'iensa ziua"],dd:[e+" ziuas",e+" ziuas"],M:["'n mes","'iens mes"],MM:[e+" mesen",e+" mesen"],y:["'n ar","'iens ar"],yy:[e+" ars",e+" ars"]};return s||a?n[t][0]:n[t][1]}function Fr(e,a,t){var s,n;return"m"===t?a?"\u0445\u0432\u0438\u043b\u0438\u043d\u0430":"\u0445\u0432\u0438\u043b\u0438\u043d\u0443":"h"===t?a?"\u0433\u043e\u0434\u0438\u043d\u0430":"\u0433\u043e\u0434\u0438\u043d\u0443":e+" "+(s=+e,n={ss:a?"\u0441\u0435\u043a\u0443\u043d\u0434\u0430_\u0441\u0435\u043a\u0443\u043d\u0434\u0438_\u0441\u0435\u043a\u0443\u043d\u0434":"\u0441\u0435\u043a\u0443\u043d\u0434\u0443_\u0441\u0435\u043a\u0443\u043d\u0434\u0438_\u0441\u0435\u043a\u0443\u043d\u0434",mm:a?"\u0445\u0432\u0438\u043b\u0438\u043d\u0430_\u0445\u0432\u0438\u043b\u0438\u043d\u0438_\u0445\u0432\u0438\u043b\u0438\u043d":"\u0445\u0432\u0438\u043b\u0438\u043d\u0443_\u0445\u0432\u0438\u043b\u0438\u043d\u0438_\u0445\u0432\u0438\u043b\u0438\u043d",hh:a?"\u0433\u043e\u0434\u0438\u043d\u0430_\u0433\u043e\u0434\u0438\u043d\u0438_\u0433\u043e\u0434\u0438\u043d":"\u0433\u043e\u0434\u0438\u043d\u0443_\u0433\u043e\u0434\u0438\u043d\u0438_\u0433\u043e\u0434\u0438\u043d",dd:"\u0434\u0435\u043d\u044c_\u0434\u043d\u0456_\u0434\u043d\u0456\u0432",MM:"\u043c\u0456\u0441\u044f\u0446\u044c_\u043c\u0456\u0441\u044f\u0446\u0456_\u043c\u0456\u0441\u044f\u0446\u0456\u0432",yy:"\u0440\u0456\u043a_\u0440\u043e\u043a\u0438_\u0440\u043e\u043a\u0456\u0432"}[t].split("_"),s%10==1&&s%100!=11?n[0]:2<=s%10&&s%10<=4&&(s%100<10||20<=s%100)?n[1]:n[2])}
vendor: 2,708 bytes, line 559
559function zr(e){return function(){return e+"\u043e"+(11===this.hours()?"\u0431":"")+"] LT"}}M.defineLocale("tr",{months:"Ocak_\u015eubat_Mart_Nisan_May\u0131s_Haziran_Temmuz_A\u011fustos_Eyl\xfcl_Ekim_Kas\u0131m_Aral\u0131k".split("_"),monthsShort:"Oca_\u015eub_Mar_Nis_May_Haz_Tem_A\u011fu_Eyl_Eki_Kas_Ara".split("_"),weekdays:"Pazar_Pazartesi_Sal\u0131_\xc7ar\u015famba_Per\u015fembe_Cuma_Cumartesi".split("_"),weekdaysShort:"Paz_Pts_Sal_\xc7ar_Per_Cum_Cts".split("_"),weekdaysMin:"Pz_Pt_Sa_\xc7a_Pe_Cu_Ct".split("_"),meridiem:function(e,a,t){return e<12?t?"\xf6\xf6":"\xd6\xd6":t?"\xf6s":"\xd6S"},meridiemParse:/\xf6\xf6|\xd6\xd6|\xf6s|\xd6S/,isPM:function(e){return"\xf6s"===e||"\xd6S"===e},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[bug\xfcn saat] LT",nextDay:"[yar\u0131n saat] LT",nextWeek:"[gelecek] dddd [saat] LT",lastDay:"[d\xfcn] LT",lastWeek:"[ge\xe7en] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s sonra",past:"%s \xf6nce",s:"birka\xe7 saniye",ss:"%d saniye",m:"bir dakika",mm:"%d dakika",h:"bir saat",hh:"%d saat",d:"bir g\xfcn",dd:"%d g\xfcn",w:"bir hafta",ww:"%d hafta",M:"bir ay",MM:"%d ay",y:"bir y\u0131l",yy:"%d y\u0131l"},ordinal:function(e,a){switch(a){case"d":case"D":case"Do":case"DD":return e;default:if(0===e)return e+"'\u0131nc\u0131";var t=e%10;return e+(Ar[t]||Ar[e%100-t]||Ar[100<=e?100:null])}},week:{dow:1,doy:7}}),M.defineLocale("tzl",{months:"Januar_Fevraglh_Mar\xe7_Avr\xefu_Mai_G\xfcn_Julia_Guscht_Setemvar_Listop\xe4ts_Noemvar_Zecemvar".split("_"),monthsShort:"Jan_Fev_Mar_Avr_Mai_G\xfcn_Jul_Gus_Set_Lis_Noe_Zec".split("_"),weekdays:"S\xfaladi_L\xfane\xe7i_Maitzi_M\xe1rcuri_Xh\xfaadi_Vi\xe9ner\xe7i_S\xe1turi".split("_"),weekdaysShort:"S\xfal_L\xfan_Mai_M\xe1r_Xh\xfa_Vi\xe9_S\xe1t".split("_"),weekdaysMin:"S\xfa_L\xfa_Ma_M\xe1_Xh_Vi_S\xe1".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD.MM.YYYY",LL:"D. MMMM [dallas] YYYY",LLL:"D. MMMM [dallas] YYYY HH.mm",LLLL:"dddd, [li] D. MMMM [dallas] YYYY HH.mm"},meridiemParse:/d\'o|d\'a/i,isPM:function(e){return"d'o"===e.toLowerCase()},meridiem:function(e,a,t){return 11<e?t?"d'o":"D'O":t?"d'a":"D'A"},calendar:{sameDay:"[oxhi \xe0] LT",nextDay:"[dem\xe0 \xe0] LT",nextWeek:"dddd [\xe0] LT",lastDay:"[ieiri \xe0] LT",lastWeek:"[s\xfcr el] dddd [lasteu \xe0] LT",sameElse:"L"},relativeTime:{future:"osprei %s",past:"ja%s",s:Er,ss:Er,m:Er,mm:Er,h:Er,hh:Er,d:Er,dd:Er,M:Er,MM:Er,y:Er,yy:Er},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),M.defineLocale("tzm-latn",{months:"innayr_br\u02e4ayr\u02e4_mar\u02e4s\u02e4_ibrir_mayyw_ywnyw_ywlywz_\u0263w\u0161t_\u0161wtanbir_kt\u02e4
559wbr\u02e4_nwwanbir_dwjnbir".split("_"),monthsShort:"innayr_br\u02e4ayr\u02e4_mar\u02e4s\u02e4_ibrir_mayyw_ywnyw_ywlywz_\u0263w\u0161t_\u0161wtanbir_kt\u02e4wbr\u02e4_nwwanbir_dwjnbir".split("_"),weekdays:"asamas_aynas_asinas_akras_akwas_asimwas_asi\u1e0dyas".split("_"),weekdaysShort:"asamas_aynas_asinas_akras_akwas_asimwas_asi\u1e0dyas".split("_"),weekdaysMin:"asamas_aynas_asinas_akras_akwas_asimwas_asi\u1e0dyas".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[asdkh g] LT",nextDay:"[aska g] LT",nextWeek:"dddd [g] LT",lastDay:"[assant g] LT",lastWeek:"dddd [g] LT",sameElse:"L"},relativeTime:{future:"dadkh s yan %s",past:"yan %s",s:"imik",ss:"%d imik",m:"minu\u1e0d",mm:"%d minu\u1e0d",h:"sa\u025ba",hh:"%d tassa\u025bin",d:"ass",dd:"%d ossan",M:"ayowr",MM:"%d iyyirn",y:"asgas",yy:"%d isgasn"},week:{dow:6,doy:12}}),M.defineLocale("tzm",{months:"\u2d49\u2d4f\u2d4f\u2d30\u2d62\u2d54_\u2d31\u2d55\u2d30\u2d62\u2d55_\u2d4e\u2d30\u2d55\u2d5a_\u2d49\u2d31\u2d54\u2d49\u2d54_\u2d4e\u2d30\u2d62\u2d62\u2d53_\u2d62\u2d53\u2d4f\u2d62\u2d53_\u2d62\u2d53\u2d4d\u2d62\u2d53\u2d63_\u2d56\u2d53\u2d5b\u2d5c_\u2d5b\u2d53\u2d5c\u2d30\u2d4f\u2d31\u2d49\u2d54_\u2d3d\u2d5f\u2d53\u2d31\u2d55_\u2d4f\u2d53\u2d61\u2d30\u2d4f\u2d31\u2d49\u2d54_\u2d37\u2d53\u2d4a\u2d4f\u2d31\u2d49\u2d54".split("_"),monthsShort:"\u2d49\u2d4f\u2d4f\u2d30\u2d62\u2d54_\u2d31\u2d55\u2d30\u2d62\u2d55_\u2d4e\u2d30\u2d55\u2d5a_\u2d49\u2d31\u2d54\u2d49\u2d54_\u2d4e\u2d30\u2d62\u2d62\u2d53_\u2d62\u2d53\u2d4f\u2d62\u2d53_\u2d62\u2d53\u2d4d\u2d62\u2d53\u2d63_\u2d56\u2d53\u2d5b\u2d5c_\u2d5b\u2d53\u2d5c\u2d30\u2d4f\u2d31\u2d49\u2d54_\u2d3d\u2d5f\u2d53\u2d31\u2d55_\u2d4f\u2d53\u2d61\u2d30\u2d4f\u2d31\u2d49\u2d54_\u2d37\u2d53\u2d4a\u2d4f\u2d31\u2d49\u2d54".split("_"),weekdays:"\u2d30\u2d59\u2d30\u2d4e\u2d30\u2d59_\u2d30\u2d62\u2d4f\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d4f\u2d30\u2d59_\u2d30\u2d3d\u2d54\u2d30\u2d59_\u2d30\u2d3d\u2d61\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d4e\u2d61\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d39\u2d62\u2d30\u2d59".split("_"),weekdaysShort:"\u2d30\u2d59\u2d30\u2d4e\u2d30\u2d59_\u2d30\u2d62\u2d4f\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d4f\u2d30\u2d59_\u2d30\u2d3d\u2d54\u2d30\u2d59_\u2d30\u2d3d\u2d61\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d4e\u2d61\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d39\u2d62\u2d30\u2d59".split("_"),weekdaysMin:"\u2d30\u2d59\u2d30\u2d4e\u2d30\u2d59_\u2d30\u2d62\u2d4f\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d4f\u2d30\u2d59_\u2d30\u2d3d\u2d54\u2d30\u2d59_\u2d30\u2d3d\u2d61\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d4e\u2d61\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d39\u2d62\u2d30\u2d59".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[\u2d30\u2d59\u2d37\u2d45 \u2d34] LT",nextDay:"[\u2d30\u2d59\u2d3d\u2d30 \u2d34] LT",nextWeek:"dddd [\u2d34] LT",lastDay:"[\u2d30\u2d5a\u2d30\u2d4f\u2d5c \u2d34] LT",lastWeek:"dddd [\u2d34] LT",sameElse:"L"},relativeTime:{future:"\u2d37\u2d30\u2d37\u2d45 \u2d59 \u2d62\u2d30\u2d4f %s",past:"\u2d62\u2d30\u2d4f %s",s:"\u2d49\u2d4e\u2d49\u2d3d",ss:"%d \u2d49\u2d4e\u2d49\u2d3d",m:"\u2d4e\u2d49\u2d4f\u2d53\u2d3a",mm:"%d \u2d4e\u2d49\u2d4f\u2d53\u2d3a",h:"\u2d59\u2d30\u2d44\u2d30",hh:"%d \u2d5c\u2d30\u2d59\u2d59\u2d30\u2d44\u2d49\u2d4f",d:"\u2d30\u2d59\u2d59",dd:"%d o\u2d59\u2d59\u2d30\u2d4f",M:"\u2d30\u2d62o\u2d53\u2d54",MM:"%d \u2d49\u2d62\u2d62\u2d49\u2d54\u2d4f",y:"\u2d30\u2d59\u2d33\u2d30\u2d59",yy:"%d \u2d49\u2d59\u2d33\u2d30\u2d59\u2d4f"},week:{dow:6,doy:12}}),M.defineLocale("ug-cn",{months:"\u064a\u0627\u0646\u06cb\u0627\u0631_\u0641\u06d0\u06cb\u0631\u0627\u0644_\u0645\u0627\u0631\u062a_\u0626\u0627\u067e\u0631\u06d0\u0644_\u0645\u0627\u064a_\u0626\u0649\u064a\u06c7\u0646_\u0626\u0649\u064a\u06c7\u0644_\u0626\u0627\u06cb\u063a\u06c7\u0633\u062a_\u0633\u06d0\u0646\u062a\u06d5\u0628\u0649\u0631_\u0626\u06c6\u0643\u062a\u06d5\u0628\u0649\u0631_\u0646\u0648\u064a\u0627\u0628\u0649\u0631_\u062f\u06d0\u0643\u0627\u0628\u0649\u0631".split("_"),monthsShort:"\u064a\u0627\u0646\u06cb\u0627\u0631_\u0641\u06d0\u06cb\u0631\u0627\u0644_\u0645\u0627\u0631\u062a_\u0626\u0627\u067e\u0631\u06d0\u0644_\u0645\u0627\u064a_\u0626\u0649\u064a\u06c7\u0646_\u0626\u0649\u064a\u06c7\u0644_\u0626\u0627\u06cb\u063a\u06c7\u0633\u062a_\u0633\u06d0\u0646\u062a\u06d5\u0628\u0649\u0631_\u0626\u06c6\u0643\u062a\u06d5\u0628\u0649\u0631_\u0646\u0648\u064a\u0627\u0628\u0649\u0631_\u062f\u06d0\u0643\u0627\u0628\u0649\u0631".split("_"),weekdays:"\u064a\u06d5\u0643\u0634\u06d5\u0646\u0628\u06d5_\u062f\u06c8\u0634\u06d5\u0646\u0628\u06d5_\u0633\u06d5\u064a\u0634\u06d5\u0646\u0628\u06d5_\u0686\u0627\u0631\u0634\u06d5\u0646\u0628\u06d5_\u067e\u06d5\u064a\u0634\u06d5\u0646\u0628\u06d5_\u062c\u06c8\u0645\u06d5_\u0634\u06d5\u0646\u0628\u06d5".split("_"),weekdaysShort:"\u064a\u06d5_\u062f\u06c8_\u0633\u06d5_\u0686\u0627_\u067e\u06d5_\u062c\u06c8_\u0634\u06d5".split("_"),weekdaysMin:"\u064a\u06d5_\u062f\u06c8_\u0633\u06d5_\u0686\u0627_\u067e\u06d5_\u062c\u06c8_\u0634\u06d5".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY-\u064a\u0649\u0644\u0649M-\u0626\u0627\u064a\u0646\u0649\u06adD-\u0643\u06c8\u0646\u0649",LLL:"YYYY-\u064a\u0649\u0644\u0649M-\u0626\u0627\u064a\u0646\u0649\u06adD-\u0643\u06c8\u0646\u0649\u060c HH:mm",LLLL:"dddd\u060c YYYY-\u064a\u0649\u0644\u0649M-\u0626\u0627\u064a\u0646\u0649\u06adD-\u0643\u06c8\u0646\u0649\u060c HH:mm"},meridiemParse:/\u064a\u06d0\u0631\u0649\u0645 \u0643\u06d0\u0686\u06d5|\u0633\u06d5\u06be\u06d5\u0631|\u0686\u06c8\u0634\u062a\u0649\u0646 \u0628\u06c7\u0631\u06c7\u0646|\u0686\u06c8\u0634|\u0686\u06c8\u0634\u062a\u0649\u0646 \u0643\u06d0\u064a\u0649\u0646|\u0643\u06d5\u0686/,meridiemHour:function(e,a){return 12===e&&(e=0),"\u064a\u06d0\u0631\u0649\u0645 \u0643\u06d0\u0686\u06d5"===a||"\u0633\u06d5\u06be\u06d5\u0631"===a||"\u0686\u06c8\u0634\u062a\u0649\u0646 \u0628\u06c7\u0631\u06c7\u0646"===a||"\u0686\u06c8\u0634\u062a\u0649\u0646 \u0643\u06d0\u064a\u0649\u0646"!==a&&"\u0643\u06d5\u0686"!==a&&11<=e?e:e+12},meridiem:function(e,a,t){var s=100*e+a;return s<600?"\u064a\u06d0\u0631\u0649\u0645 \u0643\u06d0\u0686\u06d5":s<900?"\u0633\u06d5\u06be\u06d5\u0631":s<1130?"\u0686\u06c8\u0634\u062a\u0649\u0646 \u0628\u06c7\u0631\u06c7\u0646":s<1230?"\u0686\u06c8\u0634":s<1800?"\u0686\u06c8\u0634\u062a\u0649\u0646 \u0643\u06d0\u064a\u0649\u0646":"\u0643\u06d5\u0686"},calendar:{sameDay:"[\u0628\u06c8\u06af\u06c8\u0646 \u0633\u0627\u0626\u06d5\u062a] LT",nextDay:"[\u0626\u06d5\u062a\u06d5 \u0633\u0627\u0626\u06d5\u062a] LT",nextWeek:"[\u0643\u06d0\u0644\u06d5\u0631\u0643\u0649] dddd [\u0633\u0627\u0626\u06d5\u062a] LT",lastDay:"[\u062a\u06c6\u0646\u06c8\u06af\u06c8\u0646] LT",lastWeek:"[\u0626\u0627\u0644\u062f\u0649\u0646\u0642\u0649] dddd [\u0633\u0627\u0626\u06d5\u062a] LT",sameElse:"L"},relativeTime:{future:"%s \u0643\u06d0\u064a\u0649\u0646",past:"%s \u0628\u06c7\u0631\u06c7\u0646",s:"\u0646\u06d5\u0686\u0686\u06d5 \u0633\u06d0\u0643\u0648\u0646\u062a",ss:"%d \u0633\u06d0\u0643\u0648\u0646\u062a",m:"\u0628\u0649\u0631 \u0645\u0649\u0646\u06c7\u062a",mm:"%d \u0645\u0649\u0646\u06c7\u062a",h:"\u0628\u0649\u0631 \u0633\u0627\u0626\u06d5\u062a",hh:"%
559d \u0633\u0627\u0626\u06d5\u062a",d:"\u0628\u0649\u0631 \u0643\u06c8\u0646",dd:"%d \u0643\u06c8\u0646",M:"\u0628\u0649\u0631 \u0626\u0627\u064a",MM:"%d \u0626\u0627\u064a",y:"\u0628\u0649\u0631 \u064a\u0649\u0644",yy:"%d \u064a\u0649\u0644"},dayOfMonthOrdinalParse:/\d{1,2}(-\u0643\u06c8\u0646\u0649|-\u0626\u0627\u064a|-\u06be\u06d5\u067e\u062a\u06d5)/,ordinal:function(e,a){switch(a){case"d":case"D":case"DDD":return e+"-\u0643\u06c8\u0646\u0649";case"w":case"W":return e+"-\u06be\u06d5\u067e\u062a\u06d5";default:return e}},preparse:function(e){return e.replace(/\u060c/g,",")},postformat:function(e){return e.replace(/,/g,"\u060c")},week:{dow:1,doy:7}}),M.defineLocale("uk",{months:{format:"\u0441\u0456\u0447\u043d\u044f_\u043b\u044e\u0442\u043e\u0433\u043e_\u0431\u0435\u0440\u0435\u0437\u043d\u044f_\u043a\u0432\u0456\u0442\u043d\u044f_\u0442\u0440\u0430\u0432\u043d\u044f_\u0447\u0435\u0440\u0432\u043d\u044f_\u043b\u0438\u043f\u043d\u044f_\u0441\u0435\u0440\u043f\u043d\u044f_\u0432\u0435\u0440\u0435\u0441\u043d\u044f_\u0436\u043e\u0432\u0442\u043d\u044f_\u043b\u0438\u0441\u0442\u043e\u043f\u0430\u0434\u0430_\u0433\u0440\u0443\u0434\u043d\u044f".split("_"),standalone:"\u0441\u0456\u0447\u0435\u043d\u044c_\u043b\u044e\u0442\u0438\u0439_\u0431\u0435\u0440\u0435\u0437\u0435\u043d\u044c_\u043a\u0432\u0456\u0442\u0435\u043d\u044c_\u0442\u0440\u0430\u0432\u0435\u043d\u044c_\u0447\u0435\u0440\u0432\u0435\u043d\u044c_\u043b\u0438\u043f\u0435\u043d\u044c_\u0441\u0435\u0440\u043f\u0435\u043d\u044c_\u0432\u0435\u0440\u0435\u0441\u0435\u043d\u044c_\u0436\u043e\u0432\u0442\u0435\u043d\u044c_\u043b\u0438\u0441\u0442\u043e\u043f\u0430\u0434_\u0433\u0440\u0443\u0434\u0435\u043d\u044c".split("_")},monthsShort:"\u0441\u0456\u0447_\u043b\u044e\u0442_\u0431\u0435\u0440_\u043a\u0432\u0456\u0442_\u0442\u0440\u0430\u0432_\u0447\u0435\u0440\u0432_\u043b\u0438\u043f_\u0441\u0435\u0440\u043f_\u0432\u0435\u0440_\u0436\u043e\u0432\u0442_\u043b\u0438\u0441\u0442_\u0433\u0440\u0443\u0434".split("_"),weekdays:function(e,a){var t={nominative:"\u043d\u0435\u0434\u0456\u043b\u044f_\u043f\u043e\u043d\u0435\u0434\u0456\u043b\u043e\u043a_\u0432\u0456\u0432\u0442\u043e\u0440\u043e\u043a_\u0441\u0435\u0440\u0435\u0434\u0430_\u0447\u0435\u0442\u0432\u0435\u0440_\u043f\u2019\u044f\u0442\u043d\u0438\u0446\u044f_\u0441\u0443\u0431\u043e\u0442\u0430".split("_"),accusative:"\u043d\u0435\u0434\u0456\u043b\u044e_\u043f\u043e\u043d\u0435\u0434\u0456\u043b\u043e\u043a_\u0432\u0456\u0432\u0442\u043e\u0440\u043e\u043a_\u0441\u0435\u0440\u0435\u0434\u0443_\u0447\u0435\u0442\u0432\u0435\u0440_\u043f\u2019\u044f\u0442\u043d\u0438\u0446\u044e_\u0441\u0443\u0431\u043e\u0442\u0443".split("_"),genitive:"\u043d\u0435\u0434\u0456\u043b\u0456_\u043f\u043e\u043d\u0435\u0434\u0456\u043b\u043a\u0430_\u0432\u0456\u0432\u0442\u043e\u0440\u043a\u0430_\u0441\u0435\u0440\u0435\u0434\u0438_\u0447\u0435\u0442\u0432\u0435\u0440\u0433\u0430_\u043f\u2019\u044f\u0442\u043d\u0438\u0446\u0456_\u0441\u0443\u0431\u043e\u0442\u0438".split("_")};return!0===e?t.nominative.slice(1,7).concat(t.nominative.slice(0,1)):e?t[/(\[[\u0412\u0432\u0423\u0443]\]) ?dddd/.test(a)?"accusative":/\[?(?:\u043c\u0438\u043d\u0443\u043b\u043e\u0457|\u043d\u0430\u0441\u0442\u0443\u043f\u043d\u043e\u0457)? ?\] ?dddd/.test(a)?"genitive":"nominative"][e.day()]:t.nominative},weekdaysShort:"\u043d\u0434_\u043f\u043d_\u0432\u0442_\u0441\u0440_\u0447\u0442_\u043f\u0442_\u0441\u0431".split("_"),weekdaysMin:"\u043d\u0434_\u043f\u043d_\u0432\u0442_\u0441\u0440_\u0447\u0442_\u043f\u0442_\u0441\u0431".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY \u0440.",LLL:"D MMMM YYYY \u0440., HH:mm",LLLL:"dddd, D MMMM YYYY \u0440., HH:mm"},calendar:{sameDay:zr("[\u0421\u044c\u043e\u0433\u043e\u0434\u043d\u0456 "),nextDay:zr("[\u0417\u0430\u0432\u0442\u0440\u0430 "),lastDay:zr("[\u0412\u0447\u043e\u0440\u0430 "),nextWeek:zr("[\u0423] dddd ["),lastWeek:function(){switch(this.day()){case 0:case 3:case 5:case 6:return zr("[\u041c\u0438\u043d\u0443\u043b\u043e\u0457] dddd [").call(this);case 1:case 2:case 4:return zr("[\u041c\u0438\u043d\u0443\u043b\u043e\u0433\u043e] dddd [").call(this)}},sameElse:"L"},relativeTime:{future:"\u0437\u0430 %s",past:"%s \u0442\u043e\u043c\u0443",s:"\u0434\u0435\u043a\u0456\u043b\u044c\u043a\u0430 \u0441\u0435\u043a\u0443\u043d\u0434",ss:Fr,m:Fr,mm:Fr,h:"\u0433\u043e\u0434\u0438\u043d\u0443",hh:Fr,d:"\u0434\u0435\u043d\u044c",dd:Fr,M:"\u043c\u0456\u0441\u044f\u0446\u044c",MM:Fr,y:"\u0440\u0456\u043a",yy:Fr},meridiemParse:/\u043d\u043e\u0447\u0456|\u0440\u0430\u043d\u043a\u0443|\u0434\u043d\u044f|\u0432\u0435\u0447\u043e\u0440\u0430/,isPM:function(e){return/^(\u0434\u043d\u044f|\u0432\u0435\u0447\u043e\u0440\u0430)$/.test(e)},meridiem:function(e,a,t){return e<4?"\u043d\u043e\u0447\u0456":e<12?"\u0440\u0430\u043d\u043a\u0443":e<17?"\u0434\u043d\u044f":"\u0432\u0435\u0447\u043e\u0440\u0430"},dayOfMonthOrdinalParse:/\d{1,2}-(\u0439|\u0433\u043e)/,ordinal:function(e,a){switch(a){case"M":case"d":case"DDD":case"w":case"W":return e+"-\u0439";case"D":return e+"-\u0433\u043e";default:return e}},week:{dow:1,doy:7}});var Nr=["\u062c\u0646\u0648\u0631\u06cc","\u0641\u0631\u0648\u0631\u06cc","\u0645\u0627\u0631\u0686","\u0627\u067e\u0631\u06cc\u0644","\u0645\u0626\u06cc","\u062c\u0648\u0646","\u062c\u0648\u0644\u0627\u0626\u06cc","\u0627\u06af\u0633\u062a","\u0633\u062a\u0645\u0628\u0631","\u0627\u06a9\u062a\u0648\u0628\u0631","\u0646\u0648\u0645\u0628\u0631","\u062f\u0633\u0645\u0628\u0631"],Jr=["\u0627\u062a\u0648\u0627\u0631","\u067e\u06cc\u0631","\u0645\u0646\u06af\u0644","\u0628\u062f\u06be","\u062c\u0645\u0639\u0631\u0627\u062a","\u062c\u0645\u0639\u06c1","\u06c1\u064
5591\u062a\u06c1"];return M.defineLocale("ur",{months:Nr,monthsShort:Nr,weekdays:Jr,weekdaysShort:Jr,weekdaysMin:Jr,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd\u060c D MMMM YYYY HH:mm"},meridiemParse:/\u0635\u0628\u062d|\u0634\u0627\u0645/,isPM:function(e){return"\u0634\u0627\u0645"===e},meridiem:function(e,a,t){return e<12?"\u0635\u0628\u062d":"\u0634\u0627\u0645"},calendar:{sameDay:"[\u0622\u062c \u0628\u0648\u0642\u062a] LT",nextDay:"[\u06a9\u0644 \u0628\u0648\u0642\u062a] LT",nextWeek:"dddd [\u0628\u0648\u0642\u062a] LT",lastDay:"[\u06af\u0630\u0634\u062a\u06c1 \u0631\u0648\u0632 \u0628\u0648\u0642\u062a] LT",lastWeek:"[\u06af\u0630\u0634\u062a\u06c1] dddd [\u0628\u0648\u0642\u062a] LT",sameElse:"L"},relativeTime:{future:"%s \u0628\u0639\u062f",past:"%s \u0642\u0628\u0644",s:"\u0686\u0646\u062f \u0633\u06cc\u06a9\u0646\u0688",ss:"%d \u0633\u06cc\u06a9\u0646\u0688",m:"\u0627\u06cc\u06a9 \u0645\u0646\u0679",mm:"%d \u0645\u0646\u0679",h:"\u0627\u06cc\u06a9 \u06af\u06be\u0646\u0679\u06c1",hh:"%d \u06af\u06be\u0646\u0679\u06d2",d:"\u0627\u06cc\u06a9 \u062f\u0646",dd:"%d \u062f\u0646",M:"\u0627\u06cc\u06a9 \u0645\u0627\u06c1",MM:"%d \u0645\u0627\u06c1",y:"\u0627\u06cc\u06a9 \u0633\u0627\u0644",yy:"%d \u0633\u0627\u0644"},preparse:function(e){return e.replace(/\u060c/g,",")},postformat:function(e){return e.replace(/,/g,"\u060c")},week:{dow:1,doy:4}}),M.defineLocale("uz-latn",{months:"Yanvar_Fevral_Mart_Aprel_May_Iyun_Iyul_Avgust_Sentabr_Oktabr_Noyabr_Dekabr".split("_"),monthsShort:"Yan_Fev_Mar_Apr_May_Iyun_Iyul_Avg_Sen_Okt_Noy_Dek".split("_"),weekdays:"Yakshanba_Dushanba_Seshanba_Chorshanba_Payshanba_Juma_Shanba".split("_"),weekdaysShort:"Yak_Dush_Sesh_Chor_Pay_Jum_Shan".split("_"),weekdaysMin:"Ya_Du_Se_Cho_Pa_Ju_Sha".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"D MMMM YYYY, dddd HH:mm"},calendar:{sameDay:"[Bugun soat] LT [da]",nextDay:"[Ertaga] LT [da]",nextWeek:"dddd [kuni soat] LT [da]",lastDay:"[Kecha soat] LT [da]",lastWeek:"[O'tgan] dddd [kuni soat] LT [da]",sameElse:"L"},relativeTime:{future:"Yaqin %s ichida",past:"Bir necha %s oldin",s:"soniya",ss:"%d soniya",m:"bir daqiqa",mm:"%d daqiqa",h:"bir soat",hh:"%d soat",d:"bir kun",dd:"%d kun",M:"bir oy",MM:"%d oy",y:"bir yil",yy:"%d yil"},week:{dow:1,doy:7}}),M.defineLocale("uz",{months:"\u044f\u043d\u0432\u0430\u0440_\u0444\u0435\u0432\u0440\u0430\u043b_\u043c\u0430\u0440\u0442_\u0430\u043f\u0440\u0435\u043b_\u043c\u0430\u0439_\u0438\u044e\u043d_\u0438\u044e\u043b_\u0430\u0432\u0433\u0443\u0441\u0442_\u0441\u0435\u043d\u0442\u044f\u0431\u0440_\u043e\u043a\u0442\u044f\u0431\u0440_\u043d\u043e\u044f\u0431\u0440_\u0434\u0435\u043a\u0430\u0431\u0440".split("_"),monthsShort:"\u044f\u043d\u0432_\u0444\u0435\u0432_\u043c\u0430\u0440_\u0430\u043f\u0440_\u043c\u0430\u0439_\u0438\u044e\u043d_\u0438\u044e\u043b_\u0430\u0432\u0433_\u0441\u0435\u043d_\u043e\u043a\u0442_\u043d\u043e\u044f_\u0434\u0435\u043a".split("_"),weekdays:"\u042f\u043a\u0448\u0430\u043d\u0431\u0430_\u0414\u0443\u0448\u0430\u043d\u0431\u0430_\u0421\u0435\u0448\u0430\u043d\u0431\u0430_\u0427\u043e\u0440\u0448\u0430\u043d\u0431\u0430_\u041f\u0430\u0439\u0448\u0430\u043d\u0431\u0430_\u0416\u0443\u043c\u0430_\u0428\u0430\u043d\u0431\u0430".split("_"),weekdaysShort:"\u042f\u043a\u0448_\u0414\u0443\u0448_\u0421\u0435\u0448_\u0427\u043e\u0440_\u041f\u0430\u0439_\u0416\u0443\u043c_\u0428\u0430\u043d".split("_"),weekdaysMin:"\u042f\u043a_\u0414\u0443_\u0421\u0435_\u0427\u043e_\u041f\u0430_\u0416\u0443_\u0428\u0430".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"D MMMM YYYY, dddd HH:mm"},calendar:{sameDay:"[\u0411\u0443\u0433\u0443\u043d \u0441\u043e\u0430\u0442] LT [\u0434\u0430]",nextDay:"[\u042d\u0440\u0442\u0430\u0433\u0430] LT [\u0434\u0430]",nextWeek:"dddd [\u043a\u0443\u043d\u0438 \u0441\u043e\u0430\u0442] LT [\u0434\u0430]",lastDay:"[\u041a\u0435\u0447\u0430 \u0441\u043e\u0430\u0442] LT [\u0434\u0430]",lastWeek:"[\u0423\u0442\u0433\u0430\u043d] dddd [\u043a\u0443\u043d\u0438 \u0441\u043e\u0430\u0442] LT [\u0434\u0430]",sameElse:"L"},relativeTime:{future:"\u042f\u043a\u0438\u043d %s \u0438\u0447\u0438\u0434\u0430",past:"\u0411\u0438\u0440 \u043d\u0435\u0447\u0430 %s \u043e\u043b\u0434\u0438\u043d",s:"\u0444\u0443\u0440\u0441\u0430\u0442",ss:"%d \u0444\u0443\u0440\u0441\u0430\u0442",m:"\u0431\u0438\u0440 \u0434\u0430\u043a\u0438\u043a\u0430",mm:"%d \u0434\u0430\u043a\u0438\u043a\u0430",h:"\u0431\u0438\u0440 \u0441\u043e\u0430\u0442",hh:"%d \u0441\u043e\u0430\u0442",d:"\u0431\u0438\u0440 \u043a\u0443\u043d",dd:"%d \u043a\u0443\u043d",M:"\u0431\u0438\u0440 \u043e\u0439",MM:"%d \u043e\u0439",y:"\u0431\u0438\u0440 \u0439\u0438\u043b",yy:"%d \u0439\u0438\u043b"},week:{dow:1,doy:7}}),M.defineLocale("vi",{months:"th\xe1ng 1_th\xe1ng 2_th\xe1ng 3_th\xe1ng 4_th\xe1ng 5_th\xe1ng 6_th\xe1ng 7_th\xe1ng 8_th\xe1ng 9_th\xe1ng 10_th\xe1ng 11_th\xe1ng 12".split("_"),monthsShort:"Thg 01_Thg 02_Thg 03_Thg 04_Thg 05_Thg 06_Thg 07_Thg 08_Thg 09_Thg 10_Thg 11_Thg 12".split("_"),monthsParseExact:!0,weekdays:"ch\u1ee7 nh\u1eadt_th\u1ee9 hai_th\u1ee9 ba_th\u1ee9 t\u01b0_th\u1ee9 n\u0103m_th\u1ee9 s\xe1u_th\u1ee9 b\u1ea3y".split("_"),weekdaysShort:"CN_T2_T3_T4_T5_T6_T7".split("_"),weekdaysMin:"CN_T2_T3_T4_T5_T6_T7".split("_"),weekdaysParseExact:!0,meridiemParse:/sa|ch/i,isPM:function(e){return/^ch$/i.test(e)}
vendor: 4,234 bytes, line 559
559,meridiem:function(e,a,t){return e<12?t?"sa":"SA":t?"ch":"CH"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM [n\u0103m] YYYY",LLL:"D MMMM [n\u0103m] YYYY HH:mm",LLLL:"dddd, D MMMM [n\u0103m] YYYY HH:mm",l:"DD/M/YYYY",ll:"D MMM YYYY",lll:"D MMM YYYY HH:mm",llll:"ddd, D MMM YYYY HH:mm"},calendar:{sameDay:"[H\xf4m nay l\xfac] LT",nextDay:"[Ng\xe0y mai l\xfac] LT",nextWeek:"dddd [tu\u1ea7n t\u1edbi l\xfac] LT",lastDay:"[H\xf4m qua l\xfac] LT",lastWeek:"dddd [tu\u1ea7n tr\u01b0\u1edbc l\xfac] LT",sameElse:"L"},relativeTime:{future:"%s t\u1edbi",past:"%s tr\u01b0\u1edbc",s:"v\xe0i gi\xe2y",ss:"%d gi\xe2y",m:"m\u1ed9t ph\xfat",mm:"%d ph\xfat",h:"m\u1ed9t gi\u1edd",hh:"%d gi\u1edd",d:"m\u1ed9t ng\xe0y",dd:"%d ng\xe0y",w:"m\u1ed9t tu\u1ea7n",ww:"%d tu\u1ea7n",M:"m\u1ed9t th\xe1ng",MM:"%d th\xe1ng",y:"m\u1ed9t n\u0103m",yy:"%d n\u0103m"},dayOfMonthOrdinalParse:/\d{1,2}/,ordinal:function(e){return e},week:{dow:1,doy:4}}),M.defineLocale("x-pseudo",{months:"J~\xe1\xf1\xfa\xe1~r\xfd_F~\xe9br\xfa~\xe1r\xfd_~M\xe1rc~h_\xc1p~r\xedl_~M\xe1\xfd_~J\xfa\xf1\xe9~_J\xfal~\xfd_\xc1\xfa~g\xfast~_S\xe9p~t\xe9mb~\xe9r_\xd3~ct\xf3b~\xe9r_\xd1~\xf3v\xe9m~b\xe9r_~D\xe9c\xe9~mb\xe9r".split("_"),monthsShort:"J~\xe1\xf1_~F\xe9b_~M\xe1r_~\xc1pr_~M\xe1\xfd_~J\xfa\xf1_~J\xfal_~\xc1\xfag_~S\xe9p_~\xd3ct_~\xd1\xf3v_~D\xe9c".split("_"),monthsParseExact:!0,weekdays:"S~\xfa\xf1d\xe1~\xfd_M\xf3~\xf1d\xe1\xfd~_T\xfa\xe9~sd\xe1\xfd~_W\xe9d~\xf1\xe9sd~\xe1\xfd_T~h\xfars~d\xe1\xfd_~Fr\xedd~\xe1\xfd_S~\xe1t\xfar~d\xe1\xfd".split("_"),weekdaysShort:"S~\xfa\xf1_~M\xf3\xf1_~T\xfa\xe9_~W\xe9d_~Th\xfa_~Fr\xed_~S\xe1t".split("_"),weekdaysMin:"S~\xfa_M\xf3~_T\xfa_~W\xe9_T~h_Fr~_S\xe1".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[T~\xf3d\xe1~\xfd \xe1t] LT",nextDay:"[T~\xf3m\xf3~rr\xf3~w \xe1t] LT",nextWeek:"dddd [\xe1t] LT",lastDay:"[\xdd~\xe9st~\xe9rd\xe1~\xfd \xe1t] LT",lastWeek:"[L~\xe1st] dddd [\xe1t] LT",sameElse:"L"},relativeTime:{future:"\xed~\xf1 %s",past:"%s \xe1~g\xf3",s:"\xe1 ~f\xe9w ~s\xe9c\xf3~\xf1ds",ss:"%d s~\xe9c\xf3\xf1~ds",m:"\xe1 ~m\xed\xf1~\xfat\xe9",mm:"%d m~\xed\xf1\xfa~t\xe9s",h:"\xe1~\xf1 h\xf3~\xfar",hh:"%d h~\xf3\xfars",d:"\xe1 ~d\xe1\xfd",dd:"%d d~\xe1\xfds",M:"\xe1 ~m\xf3\xf1~th",MM:"%d m~\xf3\xf1t~hs",y:"\xe1 ~\xfd\xe9\xe1r",yy:"%d \xfd~\xe9\xe1rs"},dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(e){var a=e%10;return e+(1==~~(e%100/10)?"th":1==a?"st":2==a?"nd":3==a?"rd":"th")},week:{dow:1,doy:4}}),M.defineLocale("yo",{months:"S\u1eb9\u0301r\u1eb9\u0301_E\u0300re\u0300le\u0300_\u1eb8r\u1eb9\u0300na\u0300_I\u0300gbe\u0301_E\u0300bibi_O\u0300ku\u0300du_Ag\u1eb9mo_O\u0300gu\u0301n_Owewe_\u1ecc\u0300wa\u0300ra\u0300_Be\u0301lu\u0301_\u1ecc\u0300p\u1eb9\u0300\u0300".split("_"),monthsShort:"S\u1eb9\u0301r_E\u0300rl_\u1eb8rn_I\u0300gb_E\u0300bi_O\u0300ku\u0300_Ag\u1eb9_O\u0300gu\u0301_Owe_\u1ecc\u0300wa\u0300_Be\u0301l_\u1ecc\u0300p\u1eb9\u0300\u0300".split("_"),weekdays:"A\u0300i\u0300ku\u0301_Aje\u0301_I\u0300s\u1eb9\u0301gun_\u1eccj\u1ecd\u0301ru\u0301_\u1eccj\u1ecd\u0301b\u1ecd_\u1eb8ti\u0300_A\u0300ba\u0301m\u1eb9\u0301ta".split("_"),weekdaysShort:"A\u0300i\u0300k_Aje\u0301_I\u0300s\u1eb9\u0301_\u1eccjr_\u1eccjb_\u1eb8ti\u0300_A\u0300ba\u0301".split("_"),weekdaysMin:"A\u0300i\u0300_Aj_I\u0300s_\u1eccr_\u1eccb_\u1eb8t_A\u0300b".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[O\u0300ni\u0300 ni] LT",nextDay:"[\u1ecc\u0300la ni] LT",nextWeek:"dddd [\u1eccs\u1eb9\u0300 to\u0301n'b\u1ecd] [ni] LT",lastDay:"[A\u0300na ni] LT",lastWeek:"dddd [\u1eccs\u1eb9\u0300 to\u0301l\u1ecd\u0301] [ni] LT",sameElse:"L"},relativeTime:{future:"ni\u0301 %s",past:"%s k\u1ecdja\u0301",s:"i\u0300s\u1eb9ju\u0301 aaya\u0301 die",ss:"aaya\u0301 %d",m:"i\u0300s\u1eb9ju\u0301 kan",mm:"i\u0300s\u1eb9ju\u0301 %d",h:"wa\u0301kati kan",hh:"wa\u0301kati %d",d:"\u1ecdj\u1ecd\u0301 kan",dd:"\u1ecdj\u1ecd\u0301 %d",M:"osu\u0300 kan",MM:"osu\u0300 %d",y:"\u1ecddu\u0301n kan",yy:"\u1ecddu\u0301n %d"},dayOfMonthOrdinalParse:/\u1ecdj\u1ecd\u0301\s\d{1,2}
vendor: 16,881 bytes, lines 559-906
559/,ordinal:"\u1ecdj\u1ecd\u0301 %d",week:{dow:1,doy:4}}),M.defineLocale("zh-cn",{months:"\u4e00\u6708_\u4e8c\u6708_\u4e09\u6708_\u56db\u6708_\u4e94\u6708_\u516d\u6708_\u4e03\u6708_\u516b\u6708_\u4e5d\u6708_\u5341\u6708_\u5341\u4e00\u6708_\u5341\u4e8c\u6708".split("_"),monthsShort:"1\u6708_2\u6708_3\u6708_4\u6708_5\u6708_6\u6708_7\u6708_8\u6708_9\u6708_10\u6708_11\u6708_12\u6708".split("_"),weekdays:"\u661f\u671f\u65e5_\u661f\u671f\u4e00_\u661f\u671f\u4e8c_\u661f\u671f\u4e09_\u661f\u671f\u56db_\u661f\u671f\u4e94_\u661f\u671f\u516d".split("_"),weekdaysShort:"\u5468\u65e5_\u5468\u4e00_\u5468\u4e8c_\u5468\u4e09_\u5468\u56db_\u5468\u4e94_\u5468\u516d".split("_"),weekdaysMin:"\u65e5_\u4e00_\u4e8c_\u4e09_\u56db_\u4e94_\u516d".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY\u5e74M\u6708D\u65e5",LLL:"YYYY\u5e74M\u6708D\u65e5Ah\u70b9mm\u5206",LLLL:"YYYY\u5e74M\u6708D\u65e5ddddAh\u70b9mm\u5206",l:"YYYY/M/D",ll:"YYYY\u5e74M\u6708D\u65e5",lll:"YYYY\u5e74M\u6708D\u65e5 HH:mm",llll:"YYYY\u5e74M\u6708D\u65e5dddd HH:mm"},meridiemParse:/\u51cc\u6668|\u65e9\u4e0a|\u4e0a\u5348|\u4e2d\u5348|\u4e0b\u5348|\u665a\u4e0a/,meridiemHour:function(e,a){return 12===e&&(e=0),"\u51cc\u6668"===a||"\u65e9\u4e0a"===a||"\u4e0a\u5348"===a||"\u4e0b\u5348"!==a&&"\u665a\u4e0a"!==a&&11<=e?e:e+12},meridiem:function(e,a,t){var s=100*e+a;return s<600?"\u51cc\u6668":s<900?"\u65e9\u4e0a":s<1130?"\u4e0a\u5348":s<1230?"\u4e2d\u5348":s<1800?"\u4e0b\u5348":"\u665a\u4e0a"},calendar:{sameDay:"[\u4eca\u5929]LT",nextDay:"[\u660e\u5929]LT",nextWeek:function(e){return e.week()!==this.week()?"[\u4e0b]dddLT":"[\u672c]dddLT"},lastDay:"[\u6628\u5929]LT",lastWeek:function(e){return this.week()!==e.week()?"[\u4e0a]dddLT":"[\u672c]dddLT"},sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(\u65e5|\u6708|\u5468)/,ordinal:function(e,a){switch(a){case"d":case"D":case"DDD":return e+"\u65e5";case"M":return e+"\u6708";case"w":case"W":return e+"\u5468";default:return e}},relativeTime:{future:"%s\u540e",past:"%s\u524d",s:"\u51e0\u79d2",ss:"%d \u79d2",m:"1 \u5206\u949f",mm:"%d \u5206\u949f",h:"1 \u5c0f\u65f6",hh:"%d \u5c0f\u65f6",d:"1 \u5929",dd:"%d \u5929",w:"1 \u5468",ww:"%d \u5468",M:"1 \u4e2a\u6708",MM:"%d \u4e2a\u6708",y:"1 \u5e74",yy:"%d \u5e74"},week:{dow:1,doy:4}}),M.defineLocale("zh-hk",{months:"\u4e00\u6708_\u4e8c\u6708_\u4e09\u6708_\u56db\u6708_\u4e94\u6708_\u516d\u6708_\u4e03\u6708_\u516b\u6708_\u4e5d\u6708_\u5341\u6708_\u5341\u4e00\u6708_\u5341\u4e8c\u6708".split("_"),monthsShort:"1\u6708_2\u6708_3\u6708_4\u6708_5\u6708_6\u6708_7\u6708_8\u6708_9\u6708_10\u6708_11\u6708_12\u6708".split("_"),weekdays:"\u661f\u671f\u65e5_\u661f\u671f\u4e00_\u661f\u671f\u4e8c_\u661f\u671f\u4e09_\u661f\u671f\u56db_\u661f\u671f\u4e94_\u661f\u671f\u516d".split("_"),weekdaysShort:"\u9031\u65e5_\u9031\u4e00_\u9031\u4e8c_\u9031\u4e09_\u9031\u56db_\u9031\u4e94_\u9031\u516d".split("_"),weekdaysMin:"\u65e5_\u4e00_\u4e8c_\u4e09_\u56db_\u4e94_\u516d".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY\u5e74M\u6708D\u65e5",LLL:"YYYY\u5e74M\u6708D\u65e5 HH:mm",LLLL:"YYYY\u5e74M\u6708D\u65e5dddd HH:mm",l:"YYYY/M/D",ll:"YYYY\u5e74M\u6708D\u65e5",lll:"YYYY\u5e74M\u6708D\u65e5 HH:mm",llll:"YYYY\u5e74M\u6708D\u65e5dddd HH:mm"},meridiemParse:/\u51cc\u6668|\u65e9\u4e0a|\u4e0a\u5348|\u4e2d\u5348|\u4e0b\u5348|\u665a\u4e0a/,meridiemHour:function(e,a){return 12===e&&(e=0),"\u51cc\u6668"===a||"\u65e9\u4e0a"===a||"\u4e0a\u5348"===a?e:"\u4e2d\u5348"===a?11<=e?e:e+12:"\u4e0b\u5348"===a||"\u665a\u4e0a"===a?e+12:void 0},meridiem:function(e,a,t){var s=100*e+a;return s<600?"\u51cc\u6668":s<900?"\u65e9\u4e0a":s<1200?"\u4e0a\u5348":1200===s?"\u4e2d\u5348":s<1800?"\u4e0b\u5348":"\u665a\u4e0a"},calendar:{sameDay:"[\u4eca\u5929]LT",nextDay:"[\u660e\u5929]LT",nextWeek:"[\u4e0b]ddddLT",lastDay:"[\u6628\u5929]LT",lastWeek:"[\u4e0a]ddddLT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(\u65e5|\u6708|\u9031)/,ordinal:function(e,a){switch(a){case"d":case"D":case"DDD":return e+"\u65e5";case"M":return e+"\u6708";case"w":case"W":return e+"\u9031";default:return e}},relativeTime:{future:"%s\u5f8c",past:"%s\u524d",s:"\u5e7e\u79d2",ss:"%d \u79d2",m:"1 \u5206\u9418",mm:"%d \u5206\u9418",h:"1 \u5c0f\u6642",hh:"%d \u5c0f\u6642",d:"1 \u5929",dd:"%d \u5929",M:"1 \u500b\u6708",MM:"%d \u500b\u6708",y:"1 \u5e74",yy:"%d \u5e74"}}),M.defineLocale("zh-mo",{months:"\u4e00\u6708_\u4e8c\u6708_\u4e09\u6708_\u56db\u6708_\u4e94\u6708_\u516d\u6708_\u4e03\u6708_\u516b\u6708_\u4e5d\u6708_\u5341\u6708_\u5341\u4e00\u6708_\u5341\u4e8c\u6708".split("_"),monthsShort:"1\u6708_2\u6708_3\u6708_4\u6708_5\u6708_6\u6708_7\u6708_8\u6708_9\u6708_10\u6708_11\u6708_12\u6708".split("_"),weekdays:"\u661f\u671f\u65e5_\u661f\u671f\u4e00_\u661f\u671f\u4e8c_\u661f\u671f\u4e09_\u661f\u671f\u56db_\u661f\u671f\u4e94_\u661f\u671f\u516d".split("_"),weekdaysShort:"\u9031\u65e5_\u9031\u4e00_\u9031\u4e8c_\u9031\u4e09_\u9031\u56db_\u9031\u4e94_\u9031\u516d".split("_"),weekdaysMin:"\u65e5_\u4e00_\u4e8c_\u4e09_\u56db_\u4e94_\u516d".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"YYYY\u5e74M\u6708D\u65e5",LLL:"YYYY\u5e74M\u6708D\u65e5 HH:mm",LLLL:"YYYY\u5e74M\u6708D\u65e5dddd HH:mm",l:"D/M/YYYY",ll:"YYYY\u5e74M\u6708D\u65e5",lll:"YYYY\u5e74M\u6708D\u65e5 HH:mm",llll:"YYYY\u5e74M\u6708D\u65e5dddd HH:mm"},meridiemParse:/\u51cc\u6668|\u65e9\u4e0a|\u4e0a\u5348|\u4e2d\u5348|\u4e0b\u5348|\u665a\u4e0a/,meridiemHour:function(e,a){return 12===e&&(e=0),"\u51cc\u6668"===a||"\u65e9\u4e0a"===a||"\u4e0a\u5348"===a?e:"\u4e2d\u5348"===a?11<=e?e:e+12:"\u4e0b\u5348"===a||"\u665a\u4e0a"===a?e+12:void 0},meridiem:function(e,a,t){var s=100*e+a;return s<600?"\u51cc\u6668":s<900?"\u65e9\u4e0a":s<1130?"\u4e0a\u5348":s<1230?"\u4e2d\u5348":s<1800?"\u4e0b\u5348":"\u665a\u4e0a"},calendar:{sameDay:"[\u4eca\u5929] LT",nextDay:"[\u660e\u5929] LT",nextWeek:"[\u4e0b]dddd LT",lastDay:"[\u6628\u5929] LT",lastWeek:"[\u4e0a]dddd LT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(\u65e5|\u6708|\u9031)/,ordinal:function(e,a){switch(a){case"d":case"D":case"DDD":return e+"\u65e5";case"M":return e+"\u6708";case"w":case"W":return e+"\u9031";default:return e}},relativeTime:{future:"%s\u5167",past:"%s\u524d",s:"\u5e7e\u79d2",ss:"%d \u79d2",m:"1 \u5206\u9418",mm:"%d \u5206\u9418",h:"1 \u5c0f\u6642",hh:"%d \u5c0f\u6642",d:"1 \u5929",dd:"%d \u5929",M:"1 \u500b\u6708",MM:"%d \u500b\u6708",y:"1 \u5e74",yy:"%d \u5e74"}}),M.defineLocale("zh-tw",{months:"\u4e00\u6708_\u4e8c\u6708_\u4e09\u6708_\u56db\u6708_\u4e94\u6708_\u516d\u6708_\u4e03\u6708_\u516b\u6708_\u4e5d\u6708_\u5341\u6708_\u5341\u4e00\u6708_\u5341\u4e8c\u6708".split("_"),monthsShort:"1\u6708_2\u6708_3\u6708_4\u6708_5\u6708_6\u6708_7\u6708_8\u6708_9\u6708_10\u6708_11\u6708_12\u6708".split("_"),weekdays:"\u661f\u671f\u65e5_\u661f\u671f\u4e00_\u661f\u671f\u4e8c_\u661f\u671f\u4e09_\u661f\u671f\u56db_\u661f\u671f\u4e94_\u661f\u671f\u516d".split("_"),weekdaysShort:"\u9031\u65e5_\u9031\u4e00_\u9031\u4e8c_\u9031\u4e09_\u9031\u56db_\u9031\u4e94_\u9031\u516d".split("_"),weekdaysMin:"\u65e5_\u4e00_\u4e8c_\u4e09_\u56db_\u4e94_\u516d".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY\u5e74M\u6708D\u65e5",LLL:"YYYY\u5e74M\u6708D\u65e5 HH:mm",LLLL:"YYYY\u5e74M\u6708D\u65e5dddd HH:mm",l:"YYYY/M/D",ll:"YYYY\u5e74M\u6708D\u65e5",lll:"YYYY\u5e74M\u6708D\u65e5 HH:mm",llll:"YYYY\u5e74M\u6708D\u65e5dddd HH:mm"},meridiemParse:/\u51cc\u6668|\u65e9\u4e0a|\u4e0a\u5348|\u4e2d\u5348|\u4e0b\u5348|\u665a\u4e0a/,meridiemHour:function(e,a){return 12===e&&(e=0),"\u51cc\u6668"===a||"\u65e9\u4e0a"===a||"\u4e0a\u5348"===a?e:"\u4e2d\u5348"===a?11<=e?e:e+12:"\u4e0b\u5348"===a||"\u665a\u4e0a"===a?e+12:void 0},meridiem:function(e,a,t){var s=100*e+a;return s<600?"\u51cc\u6668":s<900?"\u65e9\u4e0a":s<1130?"\u4e0a\u5348":s<1230?"\u4e2d\u5348":s<1800?"\u4e0b\u5348":"\u665a\u4e0a"},calendar:{sameDay:"[\u4eca\u5929] LT",nextDay:"[\u660e\u5929] LT",nextWeek:"[\u4e0b]dddd LT",lastDay:"[\u6628\u5929] LT",lastWeek:"[\u4e0a]dddd LT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(\u65e5|\u6708|\u9031)/,ordinal:function(e,a){switch(a){case"d":case"D":case"DDD":return e+"\u65e5";case"M":return e+"\u6708";case"w":case"W":return e+"\u9031";default:return e}},relativeTime:{future:"%s\u5f8c",past:"%s\u524d",s:"\u5e7e\u79d2",ss:"%d \u79d2",m:"1 \u5206\u9418",mm:"%d \u5206\u9418",h:"1 \u5c0f\u6642",hh:"%d \u5c0f\u6642",d:"1 \u5929",dd:"%d \u5929",M:"1 \u500b\u6708",MM:"%d \u500b\u6708",y:"1 \u5e74",yy:"%d \u5e74"}}),M.locale("en"),M});
560//# sourceMappingURL=moment-with-locales.min.js.map
561// file: /var/www/vhosts/codethislab.com/httpdocs/wp-content/plugins/ctl-wp-studio/classes/core/../../js/moment-timezone-with-data.js
562//! moment-timezone.js
563//! version : 0.5.34
564//! Copyright (c) JS Foundation and other contributors
565//! license : MIT
566//! github.com/moment/moment-timezone
567
568(function (root, factory) {
569	"use strict";
570
571	/*global define*/
572	if (typeof module === 'object' && module.exports) {
573		module.exports = factory(require('moment')); // Node
574	} else if (typeof define === 'function' && define.amd) {
575		define(['moment'], factory);                 // AMD
576	} else {
577		factory(root.moment);                        // Browser
578	}
579}(this, function (moment) {
580	"use strict";
581
582	// Resolves es6 module loading issue
583	if (moment.version === undefined && moment.default) {
584		moment = moment.default;
585	}
586
587	// Do not load moment-timezone a second time.
588	// if (moment.tz !== undefined) {
589	// 	logError('Moment Timezone ' + moment.tz.version + ' was already loaded ' + (moment.tz.dataVersion ? 'with data from ' : 'without any data') + moment.tz.dataVersion);
590	// 	return moment;
591	// }
592
593	var VERSION = "0.5.34",
594		zones = {},
595		links = {},
596		countries = {},
597		names = {},
598		guesses = {},
599		cachedGuess;
600
601	if (!moment || typeof moment.version !== 'string') {
602		logError('Moment Timezone requires Moment.js. See https://momentjs.com/timezone/docs/#/use-it/browser/');
603	}
604
605	var momentVersion = moment.version.split('.'),
606		major = +momentVersion[0],
607		minor = +momentVersion[1];
608
609	// Moment.js version check
610	if (major < 2 || (major === 2 && minor < 6)) {
611		logError('Moment Timezone requires Moment.js >= 2.6.0. You are using Moment.js ' + moment.version + '. See momentjs.com');
612	}
613
614	/************************************
615		Unpacking
616	************************************/
617
618	function charCodeToInt(charCode) {
619		if (charCode > 96) {
620			return charCode - 87;
621		} else if (charCode > 64) {
622			return charCode - 29;
623		}
624		return charCode - 48;
625	}
626
627	function unpackBase60(string) {
628		var i = 0,
629			parts = string.split('.'),
630			whole = parts[0],
631			fractional = parts[1] || '',
632			multiplier = 1,
633			num,
634			out = 0,
635			sign = 1;
636
637		// handle negative numbers
638		if (string.charCodeAt(0) === 45) {
639			i = 1;
640			sign = -1;
641		}
642
643		// handle digits before the decimal
644		for (i; i < whole.length; i++) {
645			num = charCodeToInt(whole.charCodeAt(i));
646			out = 60 * out + num;
647		}
648
649		// handle digits after the decimal
650		for (i = 0; i < fractional.length; i++) {
651			multiplier = multiplier / 60;
652			num = charCodeToInt(fractional.charCodeAt(i));
653			out += num * multiplier;
654		}
655
656		return out * sign;
657	}
658
659	function arrayToInt (array) {
660		for (var i = 0; i < array.length; i++) {
661			array[i] = unpackBase60(array[i]);
662		}
663	}
664
665	function intToUntil (array, length) {
666		for (var i = 0; i < length; i++) {
667			array[i] = Math.round((array[i - 1] || 0) + (array[i] * 60000)); // minutes to milliseconds
668		}
669
670		array[length - 1] = Infinity;
671	}
672
673	function mapIndices (source, indices) {
674		var out = [], i;
675
676		for (i = 0; i < indices.length; i++) {
677			out[i] = source[indices[i]];
678		}
679
680		return out;
681	}
682
683	function unpack (string) {
684		var data = string.split('|'),
685			offsets = data[2].split(' '),
686			indices = data[3].split(''),
687			untils  = data[4].split(' ');
688
689		arrayToInt(offsets);
690		arrayToInt(indices);
691		arrayToInt(untils);
692
693		intToUntil(untils, indices.length);
694
695		return {
696			name       : data[0],
697			abbrs      : mapIndices(data[1].split(' '), indices),
698			offsets    : mapIndices(offsets, indices),
699			untils     : untils,
700			population : data[5] | 0
701		};
702	}
703
704	/************************************
705		Zone object
706	************************************/
707
708	function Zone (packedString) {
709		if (packedString) {
710			this._set(unpack(packedString));
711		}
712	}
713
714	Zone.prototype = {
715		_set : function (unpacked) {
716			this.name       = unpacked.name;
717			this.abbrs      = unpacked.abbrs;
718			this.untils     = unpacked.untils;
719			this.offsets    = unpacked.offsets;
720			this.population = unpacked.population;
721		},
722
723		_index : function (timestamp) {
724			var target = +timestamp,
725				untils = this.untils,
726				i;
727
728			for (i = 0; i < untils.length; i++) {
729				if (target < untils[i]) {
730					return i;
731				}
732			}
733		},
734
735		countries : function () {
736			var zone_name = this.name;
737			return Object.keys(countries).filter(function (country_code) {
738				return countries[country_code].zones.indexOf(zone_name) !== -1;
739			});
740		},
741
742		parse : function (timestamp) {
743			var target  = +timestamp,
744				offsets = this.offsets,
745				untils  = this.untils,
746				max     = untils.length - 1,
747				offset, offsetNext, offsetPrev, i;
748
749			for (i = 0; i < max; i++) {
750				offset     = offsets[i];
751				offsetNext = offsets[i + 1];
752				offsetPrev = offsets[i ? i - 1 : i];
753
754				if (offset < offsetNext && tz.moveAmbiguousForward) {
755					offset = offsetNext;
756				} else if (offset > offsetPrev && tz.moveInvalidForward) {
757					offset = offsetPrev;
758				}
759
760				if (target < untils[i] - (offset * 60000)) {
761					return offsets[i];
762				}
763			}
764
765			return offsets[max];
766		},
767
768		abbr : function (mom) {
769			return this.abbrs[this._index(mom)];
770		},
771
772		offset : function (mom) {
773			logError("zone.offset has been deprecated in favor of zone.utcOffset");
774			return this.offsets[this._index(mom)];
775		},
776
777		utcOffset : function (mom) {
778			return this.offsets[this._index(mom)];
779		}
780	};
781
782	/************************************
783		Country object
784	************************************/
785
786	function Country (country_name, zone_names) {
787		this.name = country_name;
788		this.zones = zone_names;
789	}
790
791	/************************************
792		Current Timezone
793	************************************/
794
795	function OffsetAt(at) {
796		var timeString = at.toTimeString();
797		var abbr = timeString.match(/\([a-z ]+\)/i);
798		if (abbr && abbr[0]) {
799			// 17:56:31 GMT-0600 (CST)
800			// 17:56:31 GMT-0600 (Central Standard Time)
801			abbr = abbr[0].match(/[A-Z]/g);
802			abbr = abbr ? abbr.join('') : undefined;
803		} else {
804			// 17:56:31 CST
805			// 17:56:31 GMT+0800 (台北標準時間)
806			abbr = timeString.match(/[A-Z]{3,5}/g);
807			abbr = abbr ? abbr[0] : undefined;
808		}
809
810		if (abbr === 'GMT') {
811			abbr = undefined;
812		}
813
814		this.at = +at;
815		this.abbr = abbr;
816		this.offset = at.getTimezoneOffset();
817	}
818
819	function ZoneScore(zone) {
820		this.zone = zone;
821		this.offsetScore = 0;
822		this.abbrScore = 0;
823	}
824
825	ZoneScore.prototype.scoreOffsetAt = function (offsetAt) {
826		this.offsetScore += Math.abs(this.zone.utcOffset(offsetAt.at) - offsetAt.offset);
827		if (this.zone.abbr(offsetAt.at).replace(/[^A-Z]/g, '') !== offsetAt.abbr) {
828			this.abbrScore++;
829		}
830	};
831
832	function findChange(low, high) {
833		var mid, diff;
834
835		while ((diff = ((high.at - low.at) / 12e4 | 0) * 6e4)) {
836			mid = new OffsetAt(new Date(low.at + diff));
837			if (mid.offset === low.offset) {
838				low = mid;
839			} else {
840				high = mid;
841			}
842		}
843
844		return low;
845	}
846
847	function userOffsets() {
848		var startYear = new Date().getFullYear() - 2,
849			last = new OffsetAt(new Date(startYear, 0, 1)),
850			offsets = [last],
851			change, next, i;
852
853		for (i = 1; i < 48; i++) {
854			next = new OffsetAt(new Date(startYear, i, 1));
855			if (next.offset !== last.offset) {
856				change = findChange(last, next);
857				offsets.push(change);
858				offsets.push(new OffsetAt(new Date(change.at + 6e4)));
859			}
860			last = next;
861		}
862
863		for (i = 0; i < 4; i++) {
864			offsets.push(new OffsetAt(new Date(startYear + i, 0, 1)));
865			offsets.push(new OffsetAt(new Date(startYear + i, 6, 1)));
866		}
867
868		return offsets;
869	}
870
871	function sortZoneScores (a, b) {
872		if (a.offsetScore !== b.offsetScore) {
873			return a.offsetScore - b.offsetScore;
874		}
875		if (a.abbrScore !== b.abbrScore) {
876			return a.abbrScore - b.abbrScore;
877		}
878		if (a.zone.population !== b.zone.population) {
879			return b.zone.population - a.zone.population;
880		}
881		return b.zone.name.localeCompare(a.zone.name);
882	}
883
884	function addToGuesses (name, offsets) {
885		var i, offset;
886		arrayToInt(offsets);
887		for (i = 0; i < offsets.length; i++) {
888			offset = offsets[i];
889			guesses[offset] = guesses[offset] || {};
890			guesses[offset][name] = true;
891		}
892	}
893
894	function guessesForUserOffsets (offsets) {
895		var offsetsLength = offsets.length,
896			filteredGuesses = {},
897			out = [],
898			i, j, guessesOffset;
899
900		for (i = 0; i < offsetsLength; i++) {
901			guessesOffset = guesses[offsets[i].offset] || {};
902			for (j in guessesOffset) {
903				if (guessesOffset.hasOwnProperty(j)) {
904					filteredGuesses[j] = true;
905				}
906			}
vendor: 4,401 bytes, lines 906-1109
906
907		}
908
909		for (i in filteredGuesses) {
910			if (filteredGuesses.hasOwnProperty(i)) {
911				out.push(names[i]);
912			}
913		}
914
915		return out;
916	}
917
918	function rebuildGuess () {
919
920		// use Intl API when available and returning valid time zone
921		try {
922			var intlName = Intl.DateTimeFormat().resolvedOptions().timeZone;
923			if (intlName && intlName.length > 3) {
924				var name = names[normalizeName(intlName)];
925				if (name) {
926					return name;
927				}
928				logError("Moment Timezone found " + intlName + " from the Intl api, but did not have that data loaded.");
929			}
930		} catch (e) {
931			// Intl unavailable, fall back to manual guessing.
932		}
933
934		var offsets = userOffsets(),
935			offsetsLength = offsets.length,
936			guesses = guessesForUserOffsets(offsets),
937			zoneScores = [],
938			zoneScore, i, j;
939
940		for (i = 0; i < guesses.length; i++) {
941			zoneScore = new ZoneScore(getZone(guesses[i]), offsetsLength);
942			for (j = 0; j < offsetsLength; j++) {
943				zoneScore.scoreOffsetAt(offsets[j]);
944			}
945			zoneScores.push(zoneScore);
946		}
947
948		zoneScores.sort(sortZoneScores);
949
950		return zoneScores.length > 0 ? zoneScores[0].zone.name : undefined;
951	}
952
953	function guess (ignoreCache) {
954		if (!cachedGuess || ignoreCache) {
955			cachedGuess = rebuildGuess();
956		}
957		return cachedGuess;
958	}
959
960	/************************************
961		Global Methods
962	************************************/
963
964	function normalizeName (name) {
965		return (name || '').toLowerCase().replace(/\//g, '_');
966	}
967
968	function addZone (packed) {
969		var i, name, split, normalized;
970
971		if (typeof packed === "string") {
972			packed = [packed];
973		}
974
975		for (i = 0; i < packed.length; i++) {
976			split = packed[i].split('|');
977			name = split[0];
978			normalized = normalizeName(name);
979			zones[normalized] = packed[i];
980			names[normalized] = name;
981			addToGuesses(normalized, split[2].split(' '));
982		}
983	}
984
985	function getZone (name, caller) {
986
987		name = normalizeName(name);
988
989		var zone = zones[name];
990		var link;
991
992		if (zone instanceof Zone) {
993			return zone;
994		}
995
996		if (typeof zone === 'string') {
997			zone = new Zone(zone);
998			zones[name] = zone;
999			return zone;
1000		}
1001
1002		// Pass getZone to prevent recursion more than 1 level deep
1003		if (links[name] && caller !== getZone && (link = getZone(links[name], getZone))) {
1004			zone = zones[name] = new Zone();
1005			zone._set(link);
1006			zone.name = names[name];
1007			return zone;
1008		}
1009
1010		return null;
1011	}
1012
1013	function getNames () {
1014		var i, out = [];
1015
1016		for (i in names) {
1017			if (names.hasOwnProperty(i) && (zones[i] || zones[links[i]]) && names[i]) {
1018				out.push(names[i]);
1019			}
1020		}
1021
1022		return out.sort();
1023	}
1024
1025	function getCountryNames () {
1026		return Object.keys(countries);
1027	}
1028
1029	function addLink (aliases) {
1030		var i, alias, normal0, normal1;
1031
1032		if (typeof aliases === "string") {
1033			aliases = [aliases];
1034		}
1035
1036		for (i = 0; i < aliases.length; i++) {
1037			alias = aliases[i].split('|');
1038
1039			normal0 = normalizeName(alias[0]);
1040			normal1 = normalizeName(alias[1]);
1041
1042			links[normal0] = normal1;
1043			names[normal0] = alias[0];
1044
1045			links[normal1] = normal0;
1046			names[normal1] = alias[1];
1047		}
1048	}
1049
1050	function addCountries (data) {
1051		var i, country_code, country_zones, split;
1052		if (!data || !data.length) return;
1053		for (i = 0; i < data.length; i++) {
1054			split = data[i].split('|');
1055			country_code = split[0].toUpperCase();
1056			country_zones = split[1].split(' ');
1057			countries[country_code] = new Country(
1058				country_code,
1059				country_zones
1060			);
1061		}
1062	}
1063
1064	function getCountry (name) {
1065		name = name.toUpperCase();
1066		return countries[name] || null;
1067	}
1068
1069	function zonesForCountry(country, with_offset) {
1070		country = getCountry(country);
1071
1072		if (!country) return null;
1073
1074		var zones = country.zones.sort();
1075
1076		if (with_offset) {
1077			return zones.map(function (zone_name) {
1078				var zone = getZone(zone_name);
1079				return {
1080					name: zone_name,
1081					offset: zone.utcOffset(new Date())
1082				};
1083			});
1084		}
1085
1086		return zones;
1087	}
1088
1089	function loadData (data) {
1090		addZone(data.zones);
1091		addLink(data.links);
1092		addCountries(data.countries);
1093		tz.dataVersion = data.version;
1094	}
1095
1096	function zoneExists (name) {
1097		if (!zoneExists.didShowError) {
1098			zoneExists.didShowError = true;
1099				logError("moment.tz.zoneExists('" + name + "') has been deprecated in favor of !moment.tz.zone('" + name + "')");
1100		}
1101		return !!getZone(name);
1102	}
1103
1104	function needsOffset (m) {
1105		var isUnixTimestamp = (m._f === 'X' || m._f === 'x');
1106		return !!(m._a && (m._tzm === undefined) && !isUnixTimestamp);
1107	}
1108
1109	function 
vendor: 5,510 bytes, lines 1109-1264
1109logError (message) {
1110		if (typeof console !== 'undefined' && typeof console.error === 'function') {
1111			console.error(message);
1112		}
1113	}
1114
1115	/************************************
1116		moment.tz namespace
1117	************************************/
1118
1119	function tz (input) {
1120		var args = Array.prototype.slice.call(arguments, 0, -1),
1121			name = arguments[arguments.length - 1],
1122			zone = getZone(name),
1123			out  = moment.utc.apply(null, args);
1124
1125		if (zone && !moment.isMoment(input) && needsOffset(out)) {
1126			out.add(zone.parse(out), 'minutes');
1127		}
1128
1129		out.tz(name);
1130
1131		return out;
1132	}
1133
1134	tz.version      = VERSION;
1135	tz.dataVersion  = '';
1136	tz._zones       = zones;
1137	tz._links       = links;
1138	tz._names       = names;
1139	tz._countries	= countries;
1140	tz.add          = addZone;
1141	tz.link         = addLink;
1142	tz.load         = loadData;
1143	tz.zone         = getZone;
1144	tz.zoneExists   = zoneExists; // deprecated in 0.1.0
1145	tz.guess        = guess;
1146	tz.names        = getNames;
1147	tz.Zone         = Zone;
1148	tz.unpack       = unpack;
1149	tz.unpackBase60 = unpackBase60;
1150	tz.needsOffset  = needsOffset;
1151	tz.moveInvalidForward   = true;
1152	tz.moveAmbiguousForward = false;
1153	tz.countries    = getCountryNames;
1154	tz.zonesForCountry = zonesForCountry;
1155
1156	/************************************
1157		Interface with Moment.js
1158	************************************/
1159
1160	var fn = moment.fn;
1161
1162	moment.tz = tz;
1163
1164	moment.defaultZone = null;
1165
1166	moment.updateOffset = function (mom, keepTime) {
1167		var zone = moment.defaultZone,
1168			offset;
1169
1170		if (mom._z === undefined) {
1171			if (zone && needsOffset(mom) && !mom._isUTC) {
1172				mom._d = moment.utc(mom._a)._d;
1173				mom.utc().add(zone.parse(mom), 'minutes');
1174			}
1175			mom._z = zone;
1176		}
1177		if (mom._z) {
1178			offset = mom._z.utcOffset(mom);
1179			if (Math.abs(offset) < 16) {
1180				offset = offset / 60;
1181			}
1182			if (mom.utcOffset !== undefined) {
1183				var z = mom._z;
1184				mom.utcOffset(-offset, keepTime);
1185				mom._z = z;
1186			} else {
1187				mom.zone(offset, keepTime);
1188			}
1189		}
1190	};
1191
1192	fn.tz = function (name, keepTime) {
1193		if (name) {
1194			if (typeof name !== 'string') {
1195				throw new Error('Time zone name must be a string, got ' + name + ' [' + typeof name + ']');
1196			}
1197			this._z = getZone(name);
1198			if (this._z) {
1199				moment.updateOffset(this, keepTime);
1200			} else {
1201				logError("Moment Timezone has no data for " + name + ". See http://momentjs.com/timezone/docs/#/data-loading/.");
1202			}
1203			return this;
1204		}
1205		if (this._z) { return this._z.name; }
1206	};
1207
1208	function abbrWrap (old) {
1209		return function () {
1210			if (this._z) { return this._z.abbr(this); }
1211			return old.call(this);
1212		};
1213	}
1214
1215	function resetZoneWrap (old) {
1216		return function () {
1217			this._z = null;
1218			return old.apply(this, arguments);
1219		};
1220	}
1221
1222	function resetZoneWrap2 (old) {
1223		return function () {
1224			if (arguments.length > 0) this._z = null;
1225			return old.apply(this, arguments);
1226		};
1227	}
1228
1229	fn.zoneName  = abbrWrap(fn.zoneName);
1230	fn.zoneAbbr  = abbrWrap(fn.zoneAbbr);
1231	fn.utc       = resetZoneWrap(fn.utc);
1232	fn.local     = resetZoneWrap(fn.local);
1233	fn.utcOffset = resetZoneWrap2(fn.utcOffset);
1234
1235	moment.tz.setDefault = function(name) {
1236		if (major < 2 || (major === 2 && minor < 9)) {
1237			logError('Moment Timezone setDefault() requires Moment.js >= 2.9.0. You are using Moment.js ' + moment.version + '.');
1238		}
1239		moment.defaultZone = name ? getZone(name) : null;
1240		return moment;
1241	};
1242
1243	// Cloning a moment should include the _z property.
1244	var momentProperties = moment.momentProperties;
1245	if (Object.prototype.toString.call(momentProperties) === '[object Array]') {
1246		// moment 2.8.1+
1247		momentProperties.push('_z');
1248		momentProperties.push('_a');
1249	} else if (momentProperties) {
1250		// moment 2.7.0
1251		momentProperties._z = null;
1252	}
1253
1254	loadData({
1255		"version": "2021e",
1256		"zones": [
1257			"Africa/Abidjan|LMT GMT|g.8 0|01|-2ldXH.Q|48e5",
1258			"Africa/Nairobi|LMT +0230 EAT +0245|-2r.g -2u -30 -2J|012132|-2ua2r.g N6nV.g 3Fbu h1cu dzbJ|47e5",
1259			"Africa/Algiers|PMT WET WEST CET CEST|-9.l 0 -10 -10 -20|0121212121212121343431312123431213|-2nco9.l cNb9.l HA0 19A0 1iM0 11c0 1oo0 Wo0 1rc0 QM0 1EM0 UM0 DA0 Imo0 rd0 De0 9Xz0 1fb0 1ap0 16K0 2yo0 mEp0 hwL0 jxA0 11A0 dDd0 17b0 11B0 1cN0 2Dy0 1cN0 1fB0 1cL0|26e5",
1260			"Africa/Lagos|LMT GMT +0030 WAT|-d.z 0 -u -10|01023|-2B40d.z 7iod.z dnXK.p dLzH.z|17e6",
1261			"Africa/Bissau|LMT -01 GMT|12.k 10 0|012|-2ldX0 2xoo0|39e4",
1262			"Africa/Maputo|LMT CAT|-2a.k -20|01|-2GJea.k|26e5",
1263			"Africa/Cairo|EET EEST|-20 -30|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-1bIO0 vb0 1ip0 11z0 1iN0 1nz0 12p0 1pz0 10N0 1pz0 16p0 1jz0 s3d0 Vz0 1oN0 11b0 1oO0 10N0 1pz0 10N0 1pb0 10N0 1pb0 10N0 1pb0 10N0 1pz0 10N0 1pb0 10N0 1pb0 11d0 1oL0 11d0 1pb0 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 1oL0 11d0 1WL0 rd0 1Rz0 wp0 1pb0 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 1qL0 Xd0 1oL0 11d0 1oL0 11d0 1pb0 11d0 1oL0 11d0 1oL0 11d0 1ny0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 WL0 1qN0 Rb0 1wp0 On0 1zd0 Lz0 1EN0 Fb0 c10 8n0 8Nd0 gL0 e10 mn0|15e6",
1264			"Africa/Casablanca|LMT +00 +01|u.k 0 -10|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212|-2gMnt.E 130Lt.E rb0 Dd0 dVb0 b6p0 TX0 EoB0 LL0 gnd0 rz0 43d0 AL0 1Nd0 XX0 1Cp0 pz0 dEp0 4mn0 SyN0 AL0 1Nd0 wn0 1FB0 Db0 1zd0 Lz0 1Nf0 wM0 co0 go0 1o00 s00 dA0 vc0 11A0 A00 e00 y00 11A0 uM0 e00 Dc0 11A0 s00 e00 IM0 WM0 mo0 gM0 LA0 WM0 jA0 e
126400 28M0 e00 2600 gM0 2600 e00 2600 gM0 2600 gM0 2600 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 2600 gM0 2600 gM0 2600 e00 2600 gM0 2600 e00 2600 gM0 2600 gM0 2600 e00 2600 gM0|32e5",
1265			"Africa/Ceuta|WET WEST CET CEST|0 -10 -10 -20|010101010101010101010232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-25KN0 11z0 drd0 18p0 3HX0 17d0 1fz0 1a10 1io0 1a00 1y7o0 LL0 gnd0 rz0 43d0 AL0 1Nd0 XX0 1Cp0 pz0 dEp0 4VB0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|85e3",
1266			"Africa/El_Aaiun|LMT -01 +00 +01|Q.M 10 0 -10|012323232323232323232323232323232323232323232323232323232323232323232323232323232323|-1rDz7.c 1GVA7.c 6L0 AL0 1Nd0 XX0 1Cp0 pz0 1cBB0 AL0 1Nd0 wn0 1FB0 Db0 1zd0 Lz0 1Nf0 wM0 co0 go0 1o00 s00 dA0 vc0 11A0 A00 e00 y00 11A0 uM0 e00 Dc0 11A0 s00 e00 IM0 WM0 mo0 gM0 LA0 WM0 jA0 e
126600 28M0 e00 2600 gM0 2600 e00 2600 gM0 2600 gM0 2600 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 2600 gM0 2600 gM0 2600 e00 2600 gM0 2600 e00 2600 gM0 2600 gM0 2600 e00 2600 gM0|20e4",
1267			"Africa/Johannesburg|SAST SAST SAST|-1u -20 -30|012121|-2GJdu 1Ajdu 1cL0 1cN0 1cL0|84e5",
1268			"Africa/Juba|LMT CAT CAST EAT|-26.s -20 -30 -30|012121212121212121212121212121212131|-1yW26.s 1zK06.s 16L0 1iN0 17b0 1jd0 17b0 1ip0 17z0 1i10 17X0 1hB0 18n0 1hd0 19b0 1gp0 19z0 1iN0 17b0 1ip0 17z0 1i10 18n0 1hd0 18L0 1gN0 19b0 1gp0 19z0 1iN0 17z0 1i10 17X0 yGd0 PeX0|",
1269			"Africa/Khartoum|LMT CAT CAST EAT|-2a.8 -20 -30 -30|012121212121212121212121212121212131|-1yW2a.8 1zK0a.8 16L0 1iN0 17b0 1jd0 17b0 1ip0 17z0 1i10 17X0 1hB0 18n0 1hd0 19b0 1gp0 19z0 1iN0 17b0 1ip0 17z0 1i10 18n0 1hd0 18L0 1gN0 19b0 1gp0 19z0 1iN0 17z0 1i10 17X0 yGd0 HjL0|51e5",
1270			"Africa/Monrovia|MMT MMT GMT|H.8 I.u 0|012|-23Lzg.Q 28G01.m|11e5",
1271			"Africa/Ndjamena|LMT WAT WAST|-10.c -10 -20|0121|-2le10.c 2J3c0.c Wn0|13e5",
1272			"Africa/Sao_Tome|LMT GMT WAT|A.J 0 -10|0121|-2le00 4i6N0 2q00|",
1273			"Africa/Tripoli|LMT CET CEST EET|-Q.I -10 -20 -20|012121213121212121212121213123123|-21JcQ.I 1hnBQ.I vx0 4iP0 xx0 4eN0 Bb0 7ip0 U0n0 A10 1db0 1cN0 1db0 1dd0 1db0 1eN0 1bb0 1e10 1cL0 1c10 1db0 1dd0 1db0 1cN0 1db0 1q10 fAn0 1ep0 1db0 AKq0 TA0 1o00|11e5",
1274			"Africa/Tunis|PMT CET CEST|-9.l -10 -20|0121212121212121212121212121212121|-2nco9.l 18pa9.l 1qM0 DA0 3Tc0 11B0 1ze0 WM0 7z0 3d0 14L0 1cN0 1f90 1ar0 16J0 1gXB0 WM0 1rA0 11c0 nwo0 Ko0 1cM0 1cM0 1rA0 10M0 zuM0 10N0 1aN0 1qM0 WM0 1qM0 11A0 1o00|20e5",
1275			"Africa/Windhoek|+0130 SAST SAST CAT WAT|-1u -20 -30 -20 -10|01213434343434343434343434343434343434343434343434343|-2GJdu 1Ajdu 1cL0 1SqL0 9Io0 16P0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0|32e4",
1276			"America/Adak|NST NWT NPT BST BDT AHST HST HDT|b0 a0 a0 b0 a0 a0 a0 90|012034343434343434343434343434343456767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676|-17SX0 8wW0 iB0 Qlb0 52O0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 cm0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|326",
1277			"America/Anchorage|AST AWT APT AHST AHDT YST AKST AKDT|a0 90 90 a0 90 90 90 80|012034343434343434343434343434343456767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676|-17T00 8wX0 iA0 Qlb0 52O0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 cm0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|30e4",
1278			"America/Puerto_Rico|AST AWT APT|40 30 30|0120|-17lU0 7XT0 iu0|24e5",
1279			"America/Araguaina|LMT -03 -02|3c.M 30 20|0121212121212121212121212121212121212121212121212121|-2glwL.c HdKL.c 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 dMN0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 ny10 Lz0|14e4",
1280			"America/Argentina/Buenos_Aires|CMT -04 -03 -02|4g.M 40 30 20|01212121212121212121212121212121212121212123232323232323232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wp0 Rb0 1wp0 TX0 A4p0 uL0 1qN0 WL0|",
1281			"America/Argentina/Catamarca|CMT -04 -03 -02|4g.M 40 30 20|01212121212121212121212121212121212121212123232323132321232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wq0 Ra0 1wp0 TX0 rlB0 7B0 8zb0 uL0|",
1282			"America/Argentina/Cordoba|CMT -04 -03 -02|4g.M 40 30 20|01212121212121212121212121212121212121212123232323132323232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wq0 Ra0 1wp0 TX0 A4p0 uL0 1qN0 WL0|",
1283			"America/Argentina/Jujuy|CMT -04 -03 -02|4g.M 40 30 20|012121212121212121212121212121212121212121232323121323232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1ze0 TX0 1ld0 WK0 1wp0 TX0 A4p0 uL0|",
1284			"America/Argentina/La_Rioja|CMT -04 -03 -02|4g.M 40 30 20|012121212121212121212121212121212121212121232323231232321232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Qn0 qO0 16n0 Rb0 1wp0 TX0 rlB0 7B0 8zb0 uL0|",
1285			"America/Argentina/Mendoza|CMT -04 -03 -02|4g.M 40 30 20|01212121212121212121212121212121212121212123232312121321232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1u20 SL0 1vd0 Tb0 1wp0 TW0 ri10 Op0 7TX0 uL0|",
1286			"America/Argentina/Rio_Gallegos|CMT -04 -03 -02|4g.M 40 30 20|01212121212121212121212121212121212121212123232323232321232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wp0 Rb0 1wp0 TX0 rlB0 7B0 8zb0 uL0|",
1287			"America/Argentina/Salta|CMT -04 -03 -02|4g.M 40 30 20|012121212121212121212121212121212121212121232323231323232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wq0 Ra0 1wp0 TX0 A4p0 uL0|",
1288			"America/Argentina/San_Juan|CMT -04 -03 -02|4g.M 40 30 20|012121212121212121212121212121212121212121232323231232321232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Qn0 qO0 16n0 Rb0 1wp0 TX0 rld0 m10 8lb0 uL0|",
1289			"America/Argentina/San_Luis|CMT -04 -03 -02|4g.M 40 30 20|012121212121212121212121212121212121212121232323121212321212|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 XX0 1q20 SL0 AN0 vDb0 m10 8lb0 8L0 jd0 1qN0 WL0 1qN0|",
1290			"America/Argentina/Tucuman|CMT -04 -03 -02|4g.M 40 30 20|0121212121212121212121212121212121212121212323232313232123232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wq0 Ra0 1wp0 TX0 rlB0 4N0 8BX0 uL0 1qN0 WL0|",
1291			"America/Argentina/Ushuaia|CMT -04 -03 -02|4g.M 40 30 20|01212121212121212121212121212121212121212123232323232321232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wp0 Rb0 1wp0 TX0 rkN0 8p0 8zb0 uL0|",
1292			"America/Asuncion|AMT -04 -03|3O.E 40 30|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212|-1x589.k 1DKM9.k 3CL0 3Dd0 10L0 1pB0 10n0 1pB0 10n0 1pB0 1cL0 1dd0 1db0 1dd0 1cL0 1dd0 1cL0 1dd0 1cL0 1dd0 1db0 1dd0 1cL0 1dd0 1cL0 1dd0 1cL0 1dd0 1db0 1dd0 1cL0 1lB0 14n0 1dd0 1cL0 1fd0 WL0 1rd0 1aL0 1dB0 Xz0 1qp0 Xb0 1qN0 10L0 1rB0 TX0 1tB0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 1cL0 WN0 1qL0 11B0 1nX0 1ip0 WL0 1qN0 WL0 1qN0 WL0 1tB0 TX0 1tB0 TX0 1tB0 19X0 1a10 1fz0 1a10 1fz0 1cN0 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0|28e5",
1293			"America/Panama|CMT EST|5j.A 50|01|-2uduE.o|15e5",
1294			"America/Bahia_Banderas|LMT MST CST PST MDT CDT|71 70 60 80 60 50|0121212131414141414141414141414141414152525252525252525252525252525252525252525252525252525252|-1UQF0 deL0 8lc0 17c0 10M0 1dd0 otX0 gmN0 P2N0 13Vd0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nW0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0|84e3",
1295			"America/Bahia|LMT -03 -02|2y.4 30 20|01212121212121212121212121212121212121212121212121212121212121|-2glxp.U HdLp.U 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 1EN0 Lz0 1C10 IL0 1HB0 Db0 1HB0 On0 1zd0 On0 1zd0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 l5B0 Rb0|27e5",
1296			"America/Barbados|LMT AST ADT -0330|3W.t 40 30 3u|0121213121212121|-2m4k1.v 1eAN1.v RB0 1Bz0 Op0 1rb0 11d0 1jJc0 IL0 1ip0 17b0 1ip0 17b0 1ld0 13b0|28e4",
1297			"America/Belem|LMT -03 -02|3d.U 30 20|012121212121212121212121212121|-2glwK.4 HdKK.4 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0|20e5",
1298			"America/Belize|LMT CST -0530 CWT CPT CDT|5Q.M 60 5u 50 50 50|012121212121212121212121212121212121212121212121213412121212121212121212121212121212121212121215151|-2kBu7.c fPA7.c Onu 1zcu Rbu 1wou Rbu 1wou Rbu 1zcu Onu 1zcu Onu 1zcu Rbu 1wou Rbu 1wou Rbu 1wou Rbu 1zcu Onu 1zcu Onu 1zcu Rbu 1wou Rbu 1wou Rbu 1zcu Onu 1zcu Onu 1zcu Onu 1zcu Rbu 1wou Rbu 1wou Rbu 1zcu Onu 1zcu Onu 1zcu Rbu Rcu 7Bt0 Ni0 4nd0 Rbu 1wou Rbu 1wou Rbu 1zcu Onu 1zcu Onu 1zcu Rbu 1wou Rbu 1wou Rbu 1wou Rbu 1zcu Onu 1zcu Onu 1zcu Rbu 1wou Rbu 1wou Rbu 1zcu Onu 1zcu Onu 1zcu Onu 1zcu Rbu 1wou Rbu 1wou Rbu 1zcu Onu e9Au qn0 lxB0 mn0|57e3",
1299			"America/Boa_Vista|LMT -04 -03|42.E 40 30|0121212121212121212121212121212121|-2glvV.k HdKV.k 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 smp0 WL0 1tB0 2L0|62e2",
1300			"America/Bogota|BMT -05 -04|4U.g 50 40|0121|-2eb73.I 38yo3.I 2en0|90e5",
1301			"America/Boise|PST PDT MST MWT MPT MDT|80 70 70 60 60 60|0101023425252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252|-261q0 1nX0 11B0 1nX0 8C10 JCL0 8x20 ix0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 Dd0 1Kn0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|21e4",
1302			"America/Cambridge_Bay|-00 MST MWT MPT MDDT MDT CST CDT EST|0 70 60 60 50 60 60 50 50|0123141515151515151515151515151515151515151515678651515151515151515151515151515151515151515151515151515151515151515151515151|-21Jc0 RO90 8x20 ix0 LCL0 1fA0 zgO0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11A0 1nX0 2K0 WQ0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|15e2",
1303			"America/Campo_Grande|LMT -04 -03|3C.s 40 30|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2glwl.w HdLl.w 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 1EN0 Lz0 1C10 IL0 1HB0 Db0 1HB0 On0 1zd0 On0 1zd0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 1C10 Lz0 1Ip0 HX0 1zd0 On0 1HB0 IL0 1wp0 On0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 Rb0 1zd0 Lz0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 On0 1zd0 On0 1HB0 FX0|77e4",
1304			"America/Cancun|LMT CST EST EDT CDT|5L.4 60 50 40 50|0123232341414141414141414141414141414141412|-1UQG
13040 2q2o0 yLB0 1lb0 14p0 1lb0 14p0 Lz0 xB0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 Dd0|63e4",
1305			"America/Caracas|CMT -0430 -04|4r.E 4u 40|01212|-2kV7w.k 28KM2.k 1IwOu kqo0|29e5",
1306			"America/Cayenne|LMT -04 -03|3t.k 40 30|012|-2mrwu.E 2gWou.E|58e3",
1307			"America/Chicago|CST CDT EST CWT CPT|60 50 50 50 50|01010101010101010101010101010101010102010101010103401010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261s0 1nX0 11B0 1nX0 1wp0 TX0 WN0 1qL0 1cN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 11B0 1Hz0 14p0 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 RB0 8x30 iw0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|92e5",
1308			"America/Chihuahua|LMT MST CST CDT MDT|74.k 70 60 50 60|0121212323241414141414141414141414141414141414141414141414141414141414141414141414141414141|-1UQF0 deL0 8lc0 17c0 10M0 1dd0 2zQN0 1lb0 14p0 1lb0 14q0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0|81e4",
1309			"America/Costa_Rica|SJMT CST CDT|5A.d 60 50|0121212121|-1Xd6n.L 2lu0n.L Db0 1Kp0 Db0 pRB0 15b0 1kp0 mL0|12e5",
1310			"America/Phoenix|MST MDT MWT|70 60 60|01010202010|-261r0 1nX0 11B0 1nX0 SgN0 4Al1 Ap0 1db0 SWqX 1cL0|42e5",
1311			"America/Cuiaba|LMT -04 -03|3I.k 40 30|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2glwf.E HdLf.E 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 1EN0 Lz0 1C10 IL0 1HB0 Db0 1HB0 On0 1zd0 On0 1zd0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 4a10 HX0 1zd0 On0 1HB0 IL0 1wp0 On0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 Rb0 1zd0 Lz0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 On0 1zd0 On0 1HB0 FX0|54e4",
1312			"America/Danmarkshavn|LMT -03 -02 GMT|1e.E 30 20 0|01212121212121212121212121212121213|-2a5WJ.k 2z5fJ.k 19U0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 DC0|8",
1313			"America/Dawson_Creek|PST PDT PWT PPT MST|80 70 70 70 70|0102301010101010101010101010101010101010101010101010101014|-25TO0 1in0 UGp0 8x10 iy0 3NB0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 ML0|12e3",
1314			"America/Dawson|YST YDT YWT YPT YDDT PST PDT MST|90 80 80 80 70 80 70 70|010102304056565656565656565656565656565656565656565656565656565656565656565656565656565656567|-25TN0 1in0 1o10 13V0 Ser0 8x00 iz0 LCL0 1fA0 jrA0 fNd0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1z90|13e2",
1315			"America/Denver|MST MDT MWT MPT|70 60 60 60|01010101023010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261r0 1nX0 11B0 1nX0 11B0 1qL0 WN0 mn0 Ord0 8x20 ix0 LCN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|26e5",
1316			"America/Detroit|LMT CST EST EWT EPT EDT|5w.b 60 50 40 40 40|0123425252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252|-2Cgir.N peqr.N 156L0 8x40 iv0 6fd0 11z0 JxX1 SMX 1cN0 1cL0 aW10 1cL0 s10 1Vz0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|37e5",
1317			"America/Edmonton|LMT MST MDT MWT MPT|7x.Q 70 60 60 60|0121212121212134121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2yd4q.8 shdq.8 1in0 17d0 hz0 2dB0 1fz0 1a10 11z0 1qN0 WL0 1qN0 11z0 IGN0 8x20 ix0 3NB0 11z0 XQp0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|10e5",
1318			"America/Eirunepe|LMT -05 -04|4D.s 50 40|0121212121212121212121212121212121|-2glvk.w HdLk.w 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 dPB0 On0 yTd0 d5X0|31e3",
1319			"America/El_Salvador|LMT CST CDT|5U.M 60 50|012121|-1XiG3.c 2Fvc3.c WL0 1qN0 WL0|11e5",
1320			"America/Tijuana|LMT MST PST PDT PWT PPT|7M.4 70 80 70 70 70|012123245232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-1UQE0 4PX0 8mM0 8lc0 SN0 1cL0 pHB0 83r0 zI0 5O10 1Rz0 cOO0 11A0 1o00 11A0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 BUp0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 U10 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|20e5",
1321			"America/Fort_Nelson|PST PDT PWT PPT MST|80 70 70 70 70|01023010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010104|-25TO0 1in0 UGp0 8x10 iy0 3NB0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0|39e2",
1322			"America/Fort_Wayne|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|010101023010101010101010101040454545454545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 QI10 Db0 RB0 8x30 iw0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 5Tz0 1o10 qLb0 1cL0 1cN0 1cL0 1qhd0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|",
1323			"America/Fortaleza|LMT -03 -02|2y 30 20|0121212121212121212121212121212121212121|-2glxq HdLq 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 nsp0 WL0 1tB0 5z0 2mN0 On0|34e5",
1324			"America/Glace_Bay|LMT AST ADT AWT APT|3X.M 40 30 30 30|012134121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2IsI0.c CwO0.c 1in0 UGp0 8x50 iu0 iq10 11z0 Jg10 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|19e3",
1325			"America/Godthab|LMT -03 -02|3q.U 30 20|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2a5Ux.4 2z5dx.4 19U0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|17e3",
1326			"America/Goose_Bay|NST NDT NST NDT NWT NPT AST ADT ADDT|3u.Q 2u.Q 3u 2u 2u 2u 40 30 20|01023232323232324523232323232323232323232323232323232323232676767676767676767676767676767676767676767676867676
13267676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676|-25TSt.8 1in0 DXb0 2HbX.8 WL0 1qN0 WL0 1qN0 WL0 1tB0 TX0 1tB0 WL0 1qN0 WL0 1qN0 7UHu itu 1tB0 WL0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1tB0 WL0 1ld0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 S10 g0u 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14n1 1lb0 14p0 1nW0 11C0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zcX Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|76e2",
1327			"America/Grand_Turk|KMT EST EDT AST|57.a 50 40 40|0121212121212121212121212121212121212121212121212121212121212121212121212132121212121212121212121212121212121212121|-2l1uQ.O 2HHBQ.O 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 7jA0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|37e2",
1328			"America/Guatemala|LMT CST CDT|62.4 60 50|0121212121|-24KhV.U 2efXV.U An0 mtd0 Nz0 ifB0 17b0 zDB0 11z0|13e5",
1329			"America/Guayaquil|QMT -05 -04|5e 50 40|0121|-1yVSK 2uILK rz0|27e5",
1330			"America/Guyana|LMT -04 -0345 -03|3Q.D 40 3J 30|01231|-2mf87.l 8Hc7.l 2r7bJ Ey0f|80e4",
1331			"America/Halifax|LMT AST ADT AWT APT|4e.o 40 30 30 30|0121212121212121212121212121212121212121212121212134121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2IsHJ.A xzzJ.A 1db0 3I30 1in0 3HX0 IL0 1E10 ML0 1yN0 Pb0 1Bd0 Mn0 1Bd0 Rz0 1w10 Xb0 1w10 LX0 1w10 Xb0 1w10 Lz0 1C10 Jz0 1E10 OL0 1yN0 Un0 1qp0 Xb0 1qp0 11X0 1w10 Lz0 1HB0 LX0 1C10 FX0 1w10 Xb0 1qp0 Xb0 1BB0 LX0 1td0 Xb0 1qp0 Xb0 Rf0 8x50 iu0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 3Qp0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 3Qp0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 6i10 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|39e4",
1332			"America/Havana|HMT CST CDT|5t.A 50 40|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1Meuu.o 72zu.o ML0 sld0 An0 1Nd0 Db0 1Nd0 An0 6Ep0 An0 1Nd0 An0 JDd0 Mn0 1Ap0 On0 1fd0 11X0 1qN0 WL0 1wp0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 14n0 1ld0 14L0 1kN0 15b0 1kp0 1cL0 1cN0 1fz0 1a10 1fz0 1fB0 11z0 14p0 1nX0 11B0 1nX0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 14n0 1ld0 14n0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 1a10 1in0 1a10 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 17c0 1o00 11A0 1qM0 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 11A0 6i00 Rc0 1wo0 U00 1tA0 Rc0 1wo0 U00 1wo0 U00 1zc0 U00 1qM0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0|21e5",
1333			"America/Hermosillo|LMT MST CST PST MDT|7n.Q 70 60 80 60|0121212131414141|-1UQF0 deL0 8lc0 17c0 10M0 1dd0 otX0 gmN0 P2N0 13Vd0 1lb0 14p0 1lb0 14p0 1lb0|64e4",
1334			"America/Indiana/Knox|CST CDT CWT CPT EST|60 50 50 50 50|0101023010101010101010101010101010101040101010101010101010101010101010101010101010101010141010101010101010101010101010101010101010101010101010101010101010|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 3NB0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 11z0 1o10 11z0 1o10 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 3Cn0 8wp0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 z8o0 1o00 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|",
1335			"America/Indiana/Marengo|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|0101023010101010101010104545454545414545454545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 dyN0 11z0 6fd0 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 jrz0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1VA0 LA0 1BX0 1e6p0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|",
1336			"America/Indiana/Petersburg|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|01010230101010101010101010104010101010101010101010141014545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 njX0 WN0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 3Fb0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 19co0 1o00 Rd0 1zb0 Oo0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|",
1337			"America/Indiana/Tell_City|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|01010230101010101010101010401054541010101010101010101010101010101010101010101010101010101010101010|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 njX0 WN0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 8wn0 1cN0 1cL0 1cN0 1cK0 1cN0 1cL0 1qhd0 1o00 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|",
1338			"America/Indiana/Vevay|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|010102304545454545454545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 kPB0 Awn0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1lnd0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|",
1339			"America/Indiana/Vincennes|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|01010230101010101010101010101010454541014545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 1o10 11z0 g0p0 11z0 1o10 11z0 1qL0 WN0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 WL0 1qN0 1cL0 1cN0 1cL0 1cN0 caL0 1cL0 1cN0 1cL0 1qhd0 1o00 Rd0 1zb0 Oo0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|",
1340			"America/Indiana/Winamac|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|01010230101010101010101010101010101010454541054545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 jrz0 1cL0 1cN0 1cL0 1qhd0 1o00 Rd0 1za0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|",
1341			"America/Inuvik|-00 PST PDDT MST MDT|0 80 60 70 60|0121343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343|-FnA0 tWU0 1fA0 wPe0 2pz0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|35e2",
1342			"America/Iqaluit|-00 EWT EPT EST EDDT EDT CST CDT|0 40 40 50 30 40 60 50|01234353535353535353535353535353535353535353567353535353535353535353535353535353535353535353535353535353535353535353535353|-16K00 7nX0 iv0 LCL0 1fA0 zgO0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11C0 1nX0 11A0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|67e2",
1343			"America/Jamaica|KMT EST EDT|57.a 50 40|0121212121212121212121|-2l1uQ.O 2uM1Q.O 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0|94e4",
1344			"America/Juneau|PST PWT PPT PDT YDT YST AKST AKDT|80 70 70 70 80 90 90 80|01203030303030303030303030403030356767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676|-17T20 8x10 iy0 Vo10 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cM0 1cM0 1cL0 1cN0 1fz0 1a10 1fz0 co0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|33e3",
1345			"America/Kentucky/Louisville|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|0101010102301010101010101010101010101454545454545414545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 3Fd0 Nb0 LPd0 11z0 RB0 8x30 iw0 1nX1 e0X 9vd0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 xz0 gso0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1VA0 LA0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|",
1346			"America/Kentucky/Monticello|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|0101023010101010101010101010101010101010101010101010101010101010101010101454545454545454545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 SWp0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11A0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|",
1347			"America/La_Paz|CMT BST -04|4w.A 3w.A 40|012|-1x37r.o 13b0|19e5",
1348			"America/Lima|LMT -05 -04|58.A 50 40|0121212121212121|-2tyGP.o 1bDzP.o zX0 1aN0 1cL0 1cN0 1cL0 1PrB0 zX0 1O10 zX0 6Gp0 zX0 98p0 zX0|11e6",
1349			"America/Los_Angeles|PST PDT PWT PPT|80 70 70 70|010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261q0 1nX0 11B0 1nX0 SgN0 8x10 iy0 5Wp1 1VaX 3dA0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1a00 1fA0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|15e6",
1350			"America/Maceio|LMT -03 -02|2m.Q 30 20|012121212121212121212121212121212121212121|-2glxB.8 HdLB.8 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 dMN0 Lz0 8Q10 WL0 1tB0 5z0 2mN0 On0|93e4",
1351			"America/Managua|MMT CST EST CDT|5J.c 60 50 50|0121313121213131|-1quie.M 1yAMe.M 4mn0 9Up0 Dz0 1K10 Dz0 s3F0 1KH0 DB0 9In0 k8p0 19X0 1o30 11y0|22e5",
1352			"America/Manaus|LMT -04 -03|40.4 40 30|01212121212121212121212121212121|-2glvX.U HdKX.U 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 dPB0 On0|19e5",
1353			"America/Martinique|FFMT AST ADT|44.k 40 30|0121|-2mPTT.E 2LPbT.E 19X0|39e4",
1354			"America/Matamoros|LMT CST CDT|6E 60 50|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1UQG0 2FjC0 1nX0 i6p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 U10 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|45e4",
1355			"America/Mazatlan|LMT MST CST PST MDT|75.E 70 60 80 60|0121212131414141414141414141414141414141414141414141414141414141414141414141414141414141414141|-1UQF0 deL0 8lc0 17c0 10M0 1dd0 otX0 gmN0 P2N0 13Vd0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0|44e4",
1356			"America/Menominee|CST CDT CWT CPT EST|60 50 50 50 50|01010230101041010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 1o10 11z0 LCN0 1fz0 6410 9Jb0 1cM0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|85e2",
1357			"America/Merida|LMT CST EST CDT|5W.s 60 50 50|0121313131313131313131313131313131313131313131313131313131313131313131313131313131313131|-1UQG0 2q2o0 2hz0 wu30 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0|11e5",
1358			"America/Metlakatla|PST PWT PPT PDT AKST AKDT|80 70 70 70 90 80|01203030303030303030303030303030304545450454545454545454545454545454545454545454|-17T20 8x10 iy0 Vo10 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1hU10 Rd0 1zb0 Op0 1zb0 Op0 1zb0 uM0 jB0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|14e2",
1359			"America/Mexico_City|LMT MST CST CDT CWT|6A.A 70 60 50 50|012121232324232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-1UQF0 deL0 8lc0 17c0 10M0 1dd0 gEn0 TX0 3xd0 Jb0 6zB0 SL0 e5d0 17b0 1Pff0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0|20e6",
1360			"America/Miquelon|LMT AST -03 -02|3I.E 40 30 20|012323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-2mKkf.k 2LTAf.k gQ10 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|61e2",
1361			"America/Moncton|EST AST ADT AWT APT|50 40 30 30 30|012121212121212121212134121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2IsH0 CwN0 1in0 zAo0 An0 1Nd0 An0 1Nd0 An0 1Nd0 An0 1Nd0 An0 1Nd0 An0 1K10 Lz0 1zB0 NX0 1u10 Wn0 S20 8x50 iu0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 3Cp0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14n1 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 ReX 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|64e3",
1362			"America/Monterrey|LMT CST CDT|6F.g 60 50|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1UQG0 2FjC0 1nX0 i6p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0|41e5",
1363			"America/Montevideo|LMT MMT -04 -03 -0330 -0230 -02 -0130|3I.P 3I.P 40 30 3u 2u 20 1u|012343434343434343434343435353636353636375363636363636363636363636363636363636363636363|-2tRUf.9 sVc0 8jcf.9 1db0 1dcu 1cLu 1dcu 1cLu ircu 11zu 1o0u 11zu 1o0u 11zu 1o0u 11zu 1qMu WLu 1qMu WLu 1fAu 1cLu 1o0u 11zu NAu 3jXu zXu Dq0u 19Xu pcu jz0 cm10 19X0 6tB0 1fbu 3o0u jX0 4vB0 xz0 3Cp0 mmu 1a10 IMu Db0 4c10 uL0 1Nd0 An0 1SN0 uL0 mp0 28L0 iPB0 un0 1SN0 xz0 1zd0 Lz0 1zd0 Rb0 1zd0 On0 1wp0 Rb0 s8p0 1fB0 1ip0 11z0 1ld0 14n0 1o10 11z0 1o10 11z0 1o10 14n0 1ld0 14n0 1ld0 14n0 1o10 11z0 1o10 11z0 1o10 11z0|17e5",
1364			"America/Toronto|EST EDT EWT EPT|50 40 40 40|01010101010101010101010101010101010101010101012301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-25TR0 1in0 11Wu 1nzu 1fD0 WJ0 1wr0 Nb0 1Ap0 On0 1zd0 On0 1wp0 TX0 1tB0 TX0 1tB0 TX0 1tB0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 4kM0 8x40 iv0 1o10 11z0 1nX0 11z0 1o10 11z0 1o10 1qL0 11D0 1nX0 11B0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|65e5",
1365			"America/New_York|EST EDT EWT EPT|50 40 40 40|01010101010101010101010101010101010101010101010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261t0 1nX0 11B0 1nX0 11B0 1qL0 1a10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 RB0 8x40 iv0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|21e6",
1366			"America/Nipigon|EST EDT EWT EPT|50 40 40 40|010123010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-25TR0 1in0 Rnb0 3je0 8x40 iv0 19yN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|16e2",
1367			"America/Nome|NST NWT NPT BST BDT YST AKST AKDT|b0 a0 a0 b0 a0 90 90 80|012034343434343434343434343434343456767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676|-17SX0 8wW0 iB0 Qlb0 52O0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 cl0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|38e2",
1368			"America/Noronha|LMT -02 -01|29.E 20 10|0121212121212121212121212121212121212121|-2glxO.k HdKO.k 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 nsp0 WL0 1tB0 2L0 2pB0 On0|30e2",
1369			"America/North_Dakota/Beulah|MST MDT MWT MPT CST CDT|70 60 60 60 60 50|010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101014545454545454545454545454545454545454545454545454545454|-261r0 1nX0 11B0 1nX0 SgN0 8x20 ix0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Oo0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|",
1370			"America/North_Dakota/Center|MST MDT MWT MPT CST CDT|70 60 60 60 60 50|010102301010101010101010101010101010101010101010101010101014545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-261r0 1nX0 11B0 1nX0 SgN0 8x20 ix0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14o0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|",
1371			"America/North_Dakota/New_Salem|MST MDT MWT MPT CST CDT|70 60 60 60 60 50|010102301010101010101010101010101010101010101010101010101010101010101010101010101454545454545454545454545454545454545454545454545454545454545454545454|-261r0 1nX0 11B0 1nX0 SgN0 8x20 ix0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14o0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|",
1372			"America/Ojinaga|LMT MST CST CDT MDT|6V.E 70 60 50 60|0121212323241414141414141414141414141414141414141414141414141414141414141414141414141414141|-1UQF0 de
1372L0 8lc0 17c0 10M0 1dd0 2zQN0 1lb0 14p0 1lb0 14q0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 U10 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|23e3",
1373			"America/Pangnirtung|-00 AST AWT APT ADDT ADT EDT EST CST CDT|0 40 30 30 20 30 40 50 60 50|012314151515151515151515151515151515167676767689767676767676767676767676767676767676767676767676767676767676767676767676767|-1XiM0 PnG0 8x50 iu0 LCL0 1fA0 zgO0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1o00 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11C0 1nX0 11A0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|14e2",
1374			"America/Paramaribo|LMT PMT PMT -0330 -03|3E.E 3E.Q 3E.A 3u 30|01234|-2nDUj.k Wqo0.c qanX.I 1yVXN.o|24e4",
1375			"America/Port-au-Prince|PPMT EST EDT|4N 50 40|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-28RHb 2FnMb 19X0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14q0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 i6n0 1nX0 11B0 1nX0 d430 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 3iN0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|23e5",
1376			"America/Rio_Branco|LMT -05 -04|4v.c 50 40|01212121212121212121212121212121|-2glvs.M HdLs.M 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 NBd0 d5X0|31e4",
1377			"America/Porto_Velho|LMT -04 -03|4f.A 40 30|012121212121212121212121212121|-2glvI.o HdKI.o 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0|37e4",
1378			"America/Punta_Arenas|SMT -05 -04 -03|4G.K 50 40 30|0102021212121212121232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323|-2q2jh.e fJAh.e 5knG.K 1Vzh.e jRAG.K 1pbh.e 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 nHX0 op0 blz0 ko0 Qeo0 WL0 1zd0 On0 1ip0 11z0 1o10 11z0 1qN0 WL0 1ld0 14n0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 1cL0 1cN0 11z0 1o10 11z0 1qN0 WL0 1fB0 19X0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1ip0 1fz0 1fB0 11z0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1o10 19X0 1fB0 1nX0 G10 1EL0 Op0 1zb0 Rd0 1wn0 Rd0 46n0 Ap0|",
1379			"America/Rainy_River|CST CDT CWT CPT|60 50 50 50|010123010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-25TQ0 1in0 Rnb0 3je0 8x30 iw0 19yN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|842",
1380			"America/Rankin_Inlet|-00 CST CDDT CDT EST|0 60 40 50 50|012131313131313131313131313131313131313131313431313131313131313131313131313131313131313131313131313131313131313131313131|-vDc0 keu0 1fA0 zgO0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|26e2",
1381			"America/Recife|LMT -03 -02|2j.A 30 20|0121212121212121212121212121212121212121|-2glxE.o HdLE.o 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 nsp0 WL0 1tB0 2L0 2pB0 On0|33e5",
1382			"America/Regina|LMT MST MDT MWT MPT CST|6W.A 70 60 60 60 60|012121212121212121212121341212121212121212121212121215|-2AD51.o uHe1.o 1in0 s2L0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 66N0 1cL0 1cN0 19X0 1fB0 1cL0 1fB0 1cL0 1cN0 1cL0 M30 8x20 ix0 1ip0 1cL0 1ip0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 3NB0 1cL0 1cN0|19e4",
1383			"America/Resolute|-00 CST CDDT CDT EST|0 60 40 50 50|012131313131313131313131313131313131313131313431313131313431313131313131313131313131313131313131313131313131313131313131|-SnA0 GWS0 1fA0 zgO0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|229",
1384			"America/Santarem|LMT -04 -03|3C.M 40 30|0121212121212121212121212121212|-2glwl.c HdLl.c 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 NBd0|21e4",
1385			"America/Santiago|SMT -05 -04 -03|4G.K 50 40 30|010202121212121212321232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323|-2q2jh.e fJAh.e 5knG.K 1Vzh.e jRAG.K 1pbh.e 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 nHX0 op0 9Bz0 jb0 1oN0 ko0 Qeo0 WL0 1zd0 On0 1ip0 11z0 1o10 11z0 1qN0 WL0 1ld0 14n0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 1cL0 1cN0 11z0 1o10 11z0 1qN0 WL0 1fB0 19X0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1ip0 1fz0 1fB0 11z0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1o10 19X0 1fB0 1nX0 G10 1EL0 Op0 1zb0 Rd0 1wn0 Rd0 46n0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1zb0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0|62e5",
1386			"America/Santo_Domingo|SDMT EST EDT -0430 AST|4E 50 40 4u 40|01213131313131414|-1ttjk 1lJMk Mn0 6sp0 Lbu 1Cou yLu 1RAu wLu 1QMu xzu 1Q0u xXu 1PAu 13jB0 e00|29e5",
1387			"America/Sao_Paulo|LMT -03 -02|36.s 30 20|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2glwR.w HdKR.w 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 pTd0 PX0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 1EN0 Lz0 1C10 IL0 1HB0 Db0 1HB0 On0 1zd0 On0 1zd0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 1C10 Lz0 1Ip0 HX0 1zd0 On0 1HB0 IL0 1wp0 On0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 Rb0 1zd0 Lz0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 On0 1zd0 On0 1HB0 FX0|20e6",
1388			"America/Scoresbysund|LMT -02 -01 +00|1r.Q 20 10 0|0121323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-2a5Ww.8 2z5ew.8 1a00 1cK0 1cL0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|452",
1389			"America/Sitka|PST PWT PPT PDT YST AKST AKDT|80 70 70 70 90 90 80|01203030303030303030303030303030345656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565|-17T20 8x10 iy0 Vo10 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 co0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|90e2",
1390			"America/St_Johns|NST NDT NST NDT NWT NPT NDDT|3u.Q 2u.Q 3u 2u 2u 2u 1u|01010101010101010101010101010101010102323232323232324523232323232323232323232323232323232323232323232323232323232323232323232323232323232326232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-28oit.8 14L0 1nB0 1in0 1gm0 Dz0 1JB0 1cL0 1cN0 1cL0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1fB0 1cL0 1cN0 1cL0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1fB0 1cL0 1fB0 19X0 1fB0 19X0 10O0 eKX.8 19X0 1iq0 WL0 1qN0 WL0 1qN0 WL0 1tB0 TX0 1tB0 WL0 1qN0 WL0 1qN0 7UHu itu 1tB0 WL0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1tB0 WL0 1ld0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14n1 1lb0 14p0 1nW0 11C0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zcX Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|11e4",
1391			"America/Swift_Current|LMT MST MDT MWT MPT CST|7b.k 70 60 60 60 60|012134121212121212121215|-2AD4M.E uHdM.E 1in0 UGp0 8x20 ix0 1o10 17b0 1ip0 11z0 1o10 11z0 1o10 11z0 isN0 1cL0 3Cp0 1cL0 1cN0 11z0 1qN0 WL0 pMp0|16e3",
1392			"America/Tegucigalpa|LMT CST CDT|5M.Q 60 50|01212121|-1WGGb.8 2ETcb.8 WL0 1qN0 WL0 GRd0 AL0|11e5",
1393			"America/Thule|LMT AST ADT|4z.8 40 30|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2a5To.Q 31NBo.Q 1cL0 1cN0 1cL0 1fB0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|656",
1394			"America/Thunder_Bay|CST EST EWT EPT EDT|60 50 40 40 40|0123141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141|-2q5S0 1iaN0 8x40 iv0 XNB0 1cL0 1cN0 1fz0 1cN0 1cL0 3Cp0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|11e4",
1395			"America/Vancouver|PST PDT PWT PPT|80 70 70 70|0102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-25TO0 1in0 UGp0 8x10 iy0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|23e5",
1396			"America/Whitehorse|YST YDT YWT YPT YDDT PST PDT MST|90 80 80 80 70 80 70 70|010102304056565656565656565656565656565656565656565656565656565656565656565656565656565656567|-25TN0 1in0 1o10 13V0 Ser0 8x00 iz0 LCL0 1fA0 3NA0 vrd0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1z90|23e3",
1397			"America/Winnipeg|CST CDT CWT CPT|60 50 50 50|010101023010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aIi0 WL0 3ND0 1in0 Jap0 Rb0 aCN0 8x30 iw0 1tB0 11z0 1ip0 11z0 1o10 11z0 1o10 11z0 1rd0 10L0 1op0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 1cL0 1cN0 11z0 6i10 WL0 6i10 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1a00 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1a00 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|66e4",
1398			"America/Yakutat|YST YWT YPT YDT AKST AKDT|90 80 80 80 90 80|01203030303030303030303030303030304545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-17T10 8x00 iz0 Vo10 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 cn0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|642",
1399			"America/Yellowknife|-00 MST MWT MPT MDDT MDT|0 70 60 60 50 60|012314151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151|-1pdA0 hix0 8x20 ix0 LCL0 1fA0 zgO0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|19e3",
1400			"Antarctica/Casey|-00 +08 +11|0 -80 -b0|0121212121212|-2q00 1DjS0 T90 40P0 KL0 blz0 3m10 1o30 14k0 1kr0 12l0 1o01|10",
1401			"Antarctica/Davis|-00 +07 +05|0 -70 -50|01012121|-vyo0 iXt0 alj0 1D7v0 VB0 3Wn0 KN0|70",
1402			"Pacific/Port_Moresby|+10|-a0|0||25e4",
1403			"Antarctica/Macquarie|AEST AEDT -00|-a0 -b0 0|010201010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|-29E80 1a00 4SK0 1ayy0 Lvs0 1cM0 1o00 Rc0 1wo0 Rc0 1wo0 U00 1wo0 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 11A0 1qM0 WM0 1qM0 Oo0 1zc0 Oo0 1zc0 Oo0 1wo0 WM0 1tA0 WM0 1tA0 U00 1tA0 U00 1tA0 11A0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 11A0 1o00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1cM0 1cM0 3Co0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0|1",
1404			"Antarctica/Mawson|-00 +06 +05|0 -60 -50|012|-CEo0 2fyk0|60",
1405			"Pacific/Auckland|NZMT NZST NZST NZDT|-bu -cu -c0 -d0|010202020202
140502020202020202023232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323|-1GCVu Lz0 1tB0 11zu 1o0u 11zu 1o0u 11zu 1o0u 14nu 1lcu 14nu 1lcu 1lbu 11Au 1nXu 11Au 1nXu 11Au 1nXu 11Au 1nXu 11Au 1qLu WMu 1qLu 11Au 1n1bu IM0 1C00 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1qM0 14o0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1io0 17c0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1io0 17c0 1io0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00|14e5",
1406			"Antarctica/Palmer|-00 -03 -04 -02|0 30 40 20|0121212121213121212121212121212121212121212121212121212121212121212121212121212121|-cao0 nD0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 jsN0 14N0 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 1cL0 1cN0 11z0 1o10 11z0 1qN0 WL0 1fB0 19X0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1ip0 1fz0 1fB0 11z0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1o10 19X0 1fB0 1nX0 G10 1EL0 Op0 1zb0 Rd0 1wn0 Rd0 46n0 Ap0|40",
1407			"Antarctica/Rothera|-00 -03|0 30|01|gOo0|130",
1408			"Asia/Riyadh|LMT +03|-36.Q -30|01|-TvD6.Q|57e5",
1409			"Antarctica/Troll|-00 +00 +02|0 0 -20|01212121212121212121212121212121212121212121212121212121212121212121|1puo0 hd0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|40",
1410			"Antarctica/Vostok|-00 +06|0 -60|01|-tjA0|25",
1411			"Europe/Oslo|CET CEST|-10 -20|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2awM0 Qm0 W6o0 5pf0 WM0 1fA0 1cM0 1cM0 1cM0 1cM0 wJc0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1qM0 WM0 zpc0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|62e4",
1412			"Asia/Almaty|LMT +05 +06 +07|-57.M -50 -60 -70|012323232323232323232321232323232323232323232323232|-1Pc57.M eUo7.M 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0|15e5",
1413			"Asia/Amman|LMT EET EEST|-2n.I -20 -30|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1yW2n.I 1HiMn.I KL0 1oN0 11b0 1oN0 11b0 1pd0 1dz0 1cp0 11b0 1op0 11b0 fO10 1db0 1e10 1cL0 1cN0 1cL0 1cN0 1fz0 1pd0 10n0 1ld0 14n0 1hB0 15b0 1ip0 19X0 1cN0 1cL0 1cN0 17b0 1ld0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1So0 y00 1fc0 1dc0 1co0 1dc0 1cM0 1cM0 1cM0 1o00 11A0 1lc0 17c0 1cM0 1cM0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 4bX0 Dd0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 LA0 1C00 LA0 1C00 Oo0 1zc0 Oo0 1C00 LA0 1C00 LA0 1C00 LA0 1C00 LA0 1C00 Oo0 1zc0 Oo0 1C00 LA0 1C00 LA0 1C00 LA0 1C00 LA0 1C00 Oo0 1C00 LA0 1C00|25e5",
1414			"Asia/Anadyr|LMT +12 +13 +14 +11|-bN.U -c0 -d0 -e0 -b0|01232121212121212121214121212121212121212121212121212121212141|-1PcbN.U eUnN.U 23CL0 1db0 2q10 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 2sp0 WM0|13e3",
1415			"Asia/Aqtau|LMT +04 +05 +06|-3l.4 -40 -50 -60|012323232323232323232123232312121212121212121212|-1Pc3l.4 eUnl.4 24PX0 2pX0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0|15e4",
1416			"Asia/Aqtobe|LMT +04 +05 +06|-3M.E -40 -50 -60|0123232323232323232321232323232323232323232323232|-1Pc3M.E eUnM.E 23CL0 3Db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0|27e4",
1417			"Asia/Ashgabat|LMT +04 +05 +06|-3R.w -40 -50 -60|0123232323232323232323212|-1Pc3R.w eUnR.w 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0|41e4",
1418			"Asia/Atyrau|LMT +03 +05 +06 +04|-3r.I -30 -50 -60 -40|01232323232323232323242323232323232324242424242|-1Pc3r.I eUor.I 24PW0 2pX0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 2sp0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0|",
1419			"Asia/Baghdad|BMT +03 +04|-2V.A -30 -40|012121212121212121212121212121212121212121212121212121|-26BeV.A 2ACnV.A 11b0 1cp0 1dz0 1dd0 1db0 1cN0 1cp0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1de0 1dc0 1dc0 1dc0 1cM0 1dc0 1cM0 1dc0 1cM0 1dc0 1dc0 1dc0 1cM0 1dc0 1cM0 1dc0 1cM0 1dc0 1dc0 1dc0 1cM0 1dc0 1cM0 1dc0 1cM0 1dc0 1dc0 1dc0 1cM0 1dc0 1cM0 1dc0 1cM0 1dc0|66e5",
1420			"Asia/Qatar|LMT +04 +03|-3q.8 -40 -30|012|-21Jfq.8 27BXq.8|96e4",
1421			"Asia/Baku|LMT +03 +04 +05|-3j.o -30 -40 -50|01232323232323232323232123232323232323232323232323232323232323232|-1Pc3j.o 1jUoj.o WCL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 1cM0 9Je0 1o00 11z0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|27e5",
1422			"Asia/Bangkok|BMT +07|-6G.4 -70|01|-218SG.4|15e6",
1423			"Asia/Barnaul|LMT +06 +07 +08|-5z -60 -70 -80|0123232323232323232323212323232321212121212121212121212121212121212|-21S5z pCnz 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 p90 LE0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3rd0|",
1424			"Asia/Beirut|EET EEST|-20 -30|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-21aq0 1on0 1410 1db0 19B0 1in0 1ip0 WL0 1lQp0 11b0 1oN0 11b0 1oN0 11b0 1pd0 11b0 1oN0 11b0 q6N0 En0 1oN0 11b0 1oN0 11b0 1oN0 11b0 1pd0 11b0 1oN0 11b0 1op0 11b0 dA10 17b0 1iN0 17b0 1iN0 17b0 1iN0 17b0 1vB0 SL0 1mp0 13z0 1iN0 17b0 1iN0 17b0 1jd0 12n0 1a10 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0|22e5",
1425			"Asia/Bishkek|LMT +05 +06 +07|-4W.o -50 -60 -70|012323232323232323232321212121212121212121212121212|-1Pc4W.o eUnW.o 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2e00 1tX0 17b0 1ip0 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1cPu 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0|87e4",
1426			"Asia/Brunei|LMT +0730 +08|-7D.E -7u -80|012|-1KITD.E gDc9.E|42e4",
1427			"Asia/Kolkata|MMT IST +0630|-5l.a -5u -6u|012121|-2zOtl.a 1r2LP.a 1un0 HB0 7zX0|15e6",
1428			"Asia/Chita|LMT +08 +09 +10|-7x.Q -80 -90 -a0|012323232323232323232321232323232323232323232323232323232323232312|-21Q7x.Q pAnx.Q 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3re0|33e4",
1429			"Asia/Choibalsan|LMT +07 +08 +10 +09|-7C -70 -80 -a0 -90|0123434343434343434343434343434343434343434343424242|-2APHC 2UkoC cKn0 1da0 1dd0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 6hD0 11z0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 3Db0 h1f0 1cJ0 1cP0 1cJ0|38e3",
1430			"Asia/Shanghai|CST CDT|-80 -90|01010101010101010101010101010|-23uw0 18n0 OjB0 Rz0 11d0 1wL0 A10 8HX0 1G10 Tz0 1ip0 1jX0 1cN0 11b0 1oN0 aL0 1tU30 Rb0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0|23e6",
1431			"Asia/Colombo|MMT +0530 +06 +0630|-5j.w -5u -60 -6u|01231321|-2zOtj.w 1rFbN.w 1zzu 7Apu 23dz0 11zu n3cu|22e5",
1432			"Asia/Dhaka|HMT +0630 +0530 +06 +07|-5R.k -6u -5u -60 -70|0121343|-18LFR.k 1unn.k HB0 m6n0 2kxbu 1i00|16e6",
1433			"Asia/Damascus|LMT EET EEST|-2p.c -20 -30|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-21Jep.c Hep.c 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1xRB0 11X0 1oN0 10L0 1pB0 11b0 1oN0 10L0 1mp0 13X0 1oN0 11b0 1pd0 11b0 1oN0 11b0 1oN0 11b0 1oN0 11b0 1pd0 11b0 1oN0 11b0 1oN0 11b0 1oN0 11b0 1pd0 11b0 1oN0 Nb0 1AN0 Nb0 bcp0 19X0 1gp0 19X0 3ld0 1xX0 Vd0 1Bz0 Sp0 1vX0 10p0 1dz0 1cN0 1cL0 1db0 1db0 1g10 1an0 1ap0 1db0 1fd0 1db0 1cN0 1db0 1dd0 1db0 1cp0 1dz0 1c10 1dX0 1cN0 1db0 1dd0 1db0 1cN0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1db0 1cN0 1db0 1cN0 19z0 1fB0 1qL0 11B0 1on0 Wp0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0|26e5",
1434			"Asia/Dili|LMT +08 +09|-8m.k -80 -90|01212|-2le8m.k 1dnXm.k 1nfA0 Xld0|19e4",
1435			"Asia/Dubai|LMT +04|-3F.c -40|01|-21JfF.c|39e5",
1436			"Asia/Dushanbe|LMT +05 +06 +07|-4z.c -50 -60 -70|012323232323232323232321|-1Pc4z.c eUnz.c 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2hB0|76e4",
1437			"Asia/Famagusta|LMT EET EEST +03|-2f.M -20 -30 -30|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212312
1437121212121212121212121212121212121212121|-1Vc2f.M 2a3cf.M 1cL0 1qp0 Xz0 19B0 19X0 1fB0 1db0 1cp0 1cL0 1fB0 19X0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1o30 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 15U0 2Ks0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|",
1438			"Asia/Gaza|EET EEST IST IDT|-20 -30 -20 -30|010101010101010101010101010101010123232323232323232323232323232320101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-1c2o0 MM0 iM0 4JA0 10o0 1pA0 10M0 1pA0 16o0 1jA0 16o0 1jA0 pBa0 Vz0 1oN0 11b0 1oO0 10N0 1pz0 10N0 1pb0 10N0 1pb0 10N0 1pb0 10N0 1pz0 10N0 1pb0 10N0 1pb0 11d0 1oL0 dW0 hfB0 Db0 1fB0 Rb0 bXB0 gM0 8Q00 IM0 1wo0 TX0 1HB0 IL0 1s10 10n0 1o10 WL0 1zd0 On0 1ld0 11z0 1o10 14n0 1o10 14n0 1nd0 12n0 1nd0 Xz0 1q10 12n0 M10 C00 17c0 1io0 17c0 1io0 17c0 1o00 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 17c0 1io0 18N0 1bz0 19z0 1gp0 1610 1iL0 11z0 1o10 14o0 1lA1 SKX 1xd1 MKX 1AN0 1a00 1fA0 1cL0 1cN0 1nX0 1210 1nA0 1210 1qL0 WN0 1qL0 WN0 1qL0 11c0 1on0 11B0 1o00 11A0 1qo0 Xc0 1qo0 Xc0 1qo0 1200 1nA0 1200 1qo0 Xc0 1qo0 Xc0 1qo0 Xc0 1qo0 Xc0 1qo0 1200 1nA0 1200 1qo0 Xc0 1qo0 Xc0 1qo0 Xc0 1qo0 Xc0 1qo0 1200 1qo0 Xc0 1qo0|18e5",
1439			"Asia/Hebron|EET EEST IST IDT|-20 -30 -20 -30|01010101010101010101010101010101012323232323232323232323232323232010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-1c2o0 MM0 iM0 4JA0 10o0 1pA0 10M0 1pA0 16o0 1jA0 16o0 1jA0 pBa0 Vz0 1oN0 11b0 1oO0 10N0 1pz0 10N0 1pb0 10N0 1pb0 10N0 1pb0 10N0 1pz0 10N0 1pb0 10N0 1pb0 11d0 1oL0 dW0 hfB0 Db0 1fB0 Rb0 bXB0 gM0 8Q00 IM0 1wo0 TX0 1HB0 IL0 1s10 10n0 1o10 WL0 1zd0 On0 1ld0 11z0 1o10 14n0 1o10 14n0 1nd0 12n0 1nd0 Xz0 1q10 12n0 M10 C00 17c0 1io0 17c0 1io0 17c0 1o00 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 17c0 1io0 18N0 1bz0 19z0 1gp0 1610 1iL0 12L0 1mN0 14o0 1lc0 Tb0 1xd1 MKX bB0 cn0 1cN0 1a00 1fA0 1cL0 1cN0 1nX0 1210 1nA0 1210 1qL0 WN0 1qL0 WN0 1qL0 11c0 1on0 11B0 1o00 11A0 1qo0 Xc0 1qo0 Xc0 1qo0 1200 1nA0 1200 1qo0 Xc0 1qo0 Xc0 1qo0 Xc0 1qo0 Xc0 1qo0 1200 1nA0 1200 1qo0 Xc0 1qo0 Xc0 1qo0 Xc0 1qo0 Xc0 1qo0 1200 1qo0 Xc0 1qo0|25e4",
1440			"Asia/Ho_Chi_Minh|LMT PLMT +07 +08 +09|-76.E -76.u -70 -80 -90|0123423232|-2yC76.E bK00.a 1h7b6.u 5lz0 18o0 3Oq0 k5b0 aW00 BAM0|90e5",
1441			"Asia/Hong_Kong|LMT HKT HKST HKWT JST|-7A.G -80 -90 -8u -90|0123412121212121212121212121212121212121212121212121212121212121212121|-2CFH0 1taO0 Hc0 xUu 9tBu 11z0 1tDu Rc0 1wo0 11A0 1cM0 11A0 1o00 11A0 1o00 11A0 1o00 14o0 1o00 11A0 1nX0 U10 1tz0 U10 1wn0 Rd0 1wn0 U10 1tz0 U10 1tz0 U10 1tz0 U10 1wn0 Rd0 1wn0 Rd0 1wn0 U10 1tz0 U10 1tz0 17d0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 s10 1Vz0 1cN0 1cL0 1cN0 1cL0 6fd0 14n0|73e5",
1442			"Asia/Hovd|LMT +06 +07 +08|-66.A -60 -70 -80|012323232323232323232323232323232323232323232323232|-2APG6.A 2Uko6.A cKn0 1db0 1dd0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 6hD0 11z0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 kEp0 1cJ0 1cP0 1cJ0|81e3",
1443			"Asia/Irkutsk|IMT +07 +08 +09|-6V.5 -70 -80 -90|01232323232323232323232123232323232323232323232323232323232323232|-21zGV.5 pjXV.5 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|60e4",
1444			"Europe/Istanbul|IMT EET EEST +03 +04|-1U.U -20 -30 -30 -40|0121212121212121212121212121212121212121212121234312121212121212121212121212121212121212121212121212121212121212123|-2ogNU.U dzzU.U 11b0 8tB0 1on0 1410 1db0 19B0 1in0 3Rd0 Un0 1oN0 11b0 zSN0 CL0 mp0 1Vz0 1gN0 8yn0 1yp0 ML0 1kp0 17b
14440 1ip0 17b0 1fB0 19X0 1ip0 19X0 1ip0 17b0 qdB0 38L0 1jd0 Tz0 l6O0 11A0 WN0 1qL0 TB0 1tX0 U10 1tz0 11B0 1in0 17d0 z90 cne0 pb0 2Cp0 1800 14o0 1dc0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1a00 1fA0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WO0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 Xc0 1qo0 WM0 1qM0 11A0 1o00 1200 1nA0 11A0 1tA0 U00 15w0|13e6",
1445			"Asia/Jakarta|BMT +0720 +0730 +09 +08 WIB|-77.c -7k -7u -90 -80 -70|01232425|-1Q0Tk luM0 mPzO 8vWu 6kpu 4PXu xhcu|31e6",
1446			"Asia/Jayapura|LMT +09 +0930 WIT|-9m.M -90 -9u -90|0123|-1uu9m.M sMMm.M L4nu|26e4",
1447			"Asia/Jerusalem|JMT IST IDT IDDT|-2k.E -20 -30 -40|01212121212121321212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-26Bek.E SyOk.E MM0 iM0 4JA0 10o0 1pA0 10M0 1pA0 16o0 1jA0 16o0 1jA0 3LA0 Eo0 oo0 1co0 1dA0 16o0 10M0 1jc0 1tA0 14o0 1cM0 1a00 11A0 1Nc0 Ao0 1Nc0 Ao0 1Ko0 LA0 1o00 WM0 EQK0 Db0 1fB0 Rb0 bXB0 gM0 8Q00 IM0 1wo0 TX0 1HB0 IL0 1s10 10n0 1o10 WL0 1zd0 On0 1ld0 11z0 1o10 14n0 1o10 14n0 1nd0 12n0 1nd0 Xz0 1q10 12n0 1hB0 1dX0 1ep0 1aL0 1eN0 17X0 1nf0 11z0 1tB0 19W0 1e10 17b0 1ep0 1gL0 18N0 1fz0 1eN0 17b0 1gq0 1gn0 19d0 1dz0 1c10 17X0 1hB0 1gn0 19d0 1dz0 1c10 17X0 1kp0 1dz0 1c10 1aL0 1eN0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0|81e4",
1448			"Asia/Kabul|+04 +0430|-40 -4u|01|-10Qs0|46e5",
1449			"Asia/Kamchatka|LMT +11 +12 +13|-ay.A -b0 -c0 -d0|012323232323232323232321232323232323232323232323232323232323212|-1SLKy.A ivXy.A 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 2sp0 WM0|18e4",
1450			"Asia/Karachi|LMT +0530 +0630 +05 PKT PKST|-4s.c -5u -6u -50 -50 -60|012134545454|-2xoss.c 1qOKW.c 7zX0 eup0 LqMu 1fy00 1cL0 dK10 11b0 1610 1jX0|24e6",
1451			"Asia/Urumqi|LMT +06|-5O.k -60|01|-1GgtO.k|32e5",
1452			"Asia/Kathmandu|LMT +0530 +0545|-5F.g -5u -5J|012|-21JhF.g 2EGMb.g|12e5",
1453			"Asia/Khandyga|LMT +08 +09 +10 +11|-92.d -80 -90 -a0 -b0|0123232323232323232323212323232323232323232323232343434343434343432|-21Q92.d pAp2.d 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 qK0 yN0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 17V0 7zD0|66e2",
1454			"Asia/Krasnoyarsk|LMT +06 +07 +08|-6b.q -60 -70 -80|01232323232323232323232123232323232323232323232323232323232323232|-21Hib.q prAb.q 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|10e5",
1455			"Asia/Kuala_Lumpur|SMT +07 +0720 +0730 +09 +08|-6T.p -70 -7k -7u -90 -80|0123435|-2Bg6T.p 17anT.p l5XE 17bO 8Fyu 1so1u|71e5",
1456			"Asia/Kuching|LMT +0730 +08 +0820 +09|-7l.k -7u -80 -8k -90|0123232323232323242|-1KITl.k gDbP.k 6ynu AnE 1O0k AnE 1NAk AnE 1NAk AnE 1NAk AnE 1O0k AnE 1NAk AnE pAk 8Fz0|13e4",
1457			"Asia/Macau|LMT CST +09 +10 CDT|-7y.a -80 -90 -a0 -90|012323214141414141414141414141414141414141414141414141414141414141414141|-2CFHy.a 1uqKy.a PX0 1kn0 15B0 11b0 4Qq0 1oM0 11c0 1ko0 1u00 11A0 1cM0 11c0 1o00 11A0 1o00 11A0 1oo0 1400 1o00 11A0 1o00 U00 1tA0 U00 1wo0 Rc0 1wru U10 1tz0 U10 1tz0 U10 1tz0 U10 1wn0 Rd0 1wn0 Rd0 1wn0 U10 1tz0 U10 1tz0 17d0 1cK0 1cO0 1cK0 1cO0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 s10 1Vz0 1cN0 1cL0 1cN0 1cL0 6fd0 14n0|57e4",
1458			"Asia/Magadan|LMT +10 +11 +12|-a3.c -a0 -b0 -c0|012323232323232323232321232323232323232323232323232323232323232312|-1Pca3.c eUo3.c 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3Cq0|95e3",
1459			"Asia/Makassar|LMT MMT +08 +09 WITA|-7V.A -7V.A -80 -90 -80|01234|-21JjV.A vfc0 myLV.A 8ML0|15e5",
1460			"Asia/Manila|PST PDT JST|-80 -90 -90|010201010|-1kJI0 AL0 cK10 65X0 mXB0 vX0 VK10 1db0|24e6",
1461			"Asia/Nicosia|LMT EET EEST|-2d.s -20 -30|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1Vc2d.s 2a3cd.s 1cL0 1qp0 Xz0 19B0 19X0 1fB0 1db0 1cp0 1cL0 1fB0 19X0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1o30 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|32e4",
1462			"Asia/Novokuznetsk|LMT +06 +07 +08|-5M.M -60 -70 -80|012323232323232323232321232323232323232323232323232323232323212|-1PctM.M eULM.M 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 2sp0 WM0|55e4",
1463			"Asia/Novosibirsk|LMT +06 +07 +08|-5v.E -60 -70 -80|0123232323232323232323212323212121212121212121212121212121212121212|-21Qnv.E pAFv.E 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 ml0 Os0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 4eN0|15e5",
1464			"Asia/Omsk|LMT +05 +06 +07|-4R.u -50 -60 -70|01232323232323232323232123232323232323232323232323232323232323232|-224sR.u pMLR.u 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|12e5",
1465			"Asia/Oral|LMT +03 +05 +06 +04|-3p.o -30 -50 -60 -40|01232323232323232424242424242424242424242424242|-1Pc3p.o eUop.o 23CK0 3Db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1fA0 1cM0 1cM0 IM0 1EM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0|27e4",
1466			"Asia/Pontianak|LMT PMT +0730 +09 +08 WITA WIB|-7h.k -7h.k -7u -90 -80 -80 -70|012324256|-2ua7h.k XE00 munL.k 8Rau 6kpu 4PXu xhcu Wqnu|23e4",
1467			"Asia/Pyongyang|LMT KST JST KST|-8n -8u -90 -90|012313|-2um8n 97XR 1lTzu 2Onc0 6BA0|29e5",
1468			"Asia/Qostanay|LMT +04 +05 +06|-4e.s -40 -50 -60|012323232323232323232123232323232323232323232323|-1Pc4e.s eUoe.s 23CL0 3Db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0|",
1469			"Asia/Qyzylorda|LMT +04 +05 +06|-4l.Q -40 -50 -60|01232323232323232323232323232323232323232323232|-1Pc4l.Q eUol.Q 23CL0 3Db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 3ao0 1EM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 zQl0|73e4",
1470			"Asia/Rangoon|RMT +0630 +09|-6o.L -6u -90|0121|-21Jio.L SmnS.L 7j9u|48e5",
1471			"Asia/Sakhalin|LMT +09 +11 +12 +10|-9u.M -90 -b0 -c0 -a0|01232323232323232323232423232323232424242424242424242424242424242|-2AGVu.M 1BoMu.M 1qFa0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 2pB0 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3rd0|58e4",
1472			"Asia/Samarkand|LMT +04 +05 +06|-4r.R -40 -50 -60|01232323232323232323232|-1Pc4r.R eUor.R 23CL0 3Db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0|36e4",
1473			"Asia/Seoul|LMT KST JST KST KDT KDT|-8r.Q -8u -90 -90 -a0 -9u|012343434343151515151515134343|-2um8r.Q 97XV.Q 1m1zu 6CM0 Fz0 1kN0 14n0 1kN0 14L0 1zd0 On0 69B0 2I0u OL0 1FB0 Rb0 1qN0 TX0 1tB0 TX0 1tB0 TX0 1tB0 TX0 2ap0 12FBu 11A0 1o00 11A0|23e6",
1474			"Asia/Srednekolymsk|LMT +10 +11 +12|-ae.Q -a0 -b0 -c0|01232323232323232323232123232323232323232323232323232323232323232|-1Pcae.Q eUoe.Q 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|35e2",
1475			"Asia/Taipei|CST JST CDT|-80 -90 -90|01020202020202020202020202020202020202020|-1iw80 joM0 1yo0 Tz0 1ip0 1jX0 1cN0 11b0 1oN0 11b0 1oN0 11b0 1oN0 11b0 10N0 1BX0 10p0 1pz0 10p0 1pz0 10p0 1db0 1dd0 1db0 1cN0 1db0 1cN0 1db0 1cN0 1db0 1BB0 ML0 1Bd0 ML0 uq10 1db0 1cN0 1db0 97B0 AL0|74e5",
1476			"Asia/Tashkent|LMT +05 +06 +07|-4B.b -50 -60 -70|012323232323232323232321|-1Pc4B.b eUnB.b 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0|23e5",
1477			"Asia/Tbilisi|TBMT +03 +04 +05|-2X.b -30 -40 -50|0123232323232323232323212121232323232323232323212|-1Pc2X.b 1jUnX.b WCL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 1cK0 1cL0 1cN0 1cL0 1cN0 2pz0 1cL0 1fB0 3Nz0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 An0 Os0 WM0|11e5",
1478			"Asia/Tehran|LMT TMT +0330 +04 +05 +0430|-3p.I -3p.I -3u -40 -50 -4u|01234325252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252|-2btDp.I 1d3c0 1huLT.I TXu 1pz0 sN0 vAu 1cL0 1dB0 1en0 pNB0 UL0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 64p0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0|14e6",
1479			"Asia/Thimphu|LMT +0530 +06|-5W.A -5u -60|012|-Su5W.A 1BGMs.A|79e3",
1480			"Asia/Tokyo|JST JDT|-90 -a0|010101010|-QJJ0 Rc0 1lc0 14o0 1zc0 Oo0 1zc0 Oo0|38e6",
1481			"Asia/Tomsk|LMT +06 +07 +08|-5D.P -60 -70 -80|0123232323232323232323212323232323232323232323212121212121212121212|-21NhD.P pxzD.P 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 co0 1bB0 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3Qp0|10e5",
1482			"Asia/Ulaanbaatar|LMT +07 +08 +09|-77.w -70 -80 -90|012323232323232323232323232323232323232323232323232|-2APH7.w 2Uko7.w cKn0 1db0 1dd0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 6hD0 11z0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 kEp0 1cJ0 1cP0 1cJ0|12e5",
1483			"Asia/Ust-Nera|LMT +08 +09 +12 +11 +10|-9w.S -80 -90 -c0 -b0 -a0|012343434343434343434345434343434343434343434343434343434343434345|-21Q9w.S pApw.S 23CL0 1d90 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 17V0 7zD0|65e2",
1484			"Asia/Vladivostok|LMT +09 +10 +11|-8L.v -90 -a0 -b0|01232323232323232323232123232323232323232323232323232323232323232|-1SJIL.v itXL.v 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|60e4",
1485			"Asia/Yakutsk|LMT +08 +09 +10|-8C.W -80 -90 -a0|01232323232323232323232123232323232323232323232323232323232323232|-21Q8C.W pAoC.W 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|28e4",
1486			"Asia/Yekaterinburg|LMT PMT +04 +05 +06|-42.x -3J.5 -40 -50 -60|012343434343434343434343234343434343434343434343434343434343434343|-2ag42.x 7mQh.s qBvJ.5 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|14e5",
1487			"Asia/Yerevan|LMT +03 +04 +05|-2W -30 -40 -50|0123232323232323232323212121212323232323232323232323232323232|-1Pc2W 1jUnW WCL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 4RX0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0|13e5",
1488			"Atlantic/Azores|HMT -02 -01 +00 WET|1S.w 20 10 0 0|0121212121212121212121212121212121212121212123212321232123212121212121212121212121212121212121212121232323232323232323232323232323234323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-2ldW0 aPX0 Sp0 LX0 1vc0 Tc0 1uM0 SM0 1vc0 Tc0 1vc0 SM0 1vc0 6600 1co0 3E00 17c0 1fA0 1a00 1io0 1a00 1io0 17c0 3I00 17c0 1cM0 1cM0 3Fc0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Dc0 1tA0 1cM0 1dc0 1400 gL0 IM0 s10 U00 dX0 Rc0 pd0 Rc0 gL0 Oo0 pd0 Rc0 gL0 Oo0 pd0 14o0 1cM0 1cP0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 qIl0 1cM0 1fA0 1cM0 1cM0 1cN0 1cL0 1cN0 1cM0 1cM0 1cM0 1cM0 1cN0 1cL0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cL0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|25e4",
1489			"Atlantic/Bermuda|BMT BST AST ADT|4j.i 3j.i 40 30|010102323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-28p7E.G 1bb0 1i10 11X0 ru30 thbE.G 1P
1489X0 11B0 1tz0 Rd0 1zb0 Op0 1zb0 3I10 Lz0 1EN0 FX0 1HB0 FX0 1Kp0 Db0 1Kp0 Db0 1Kp0 FX0 93d0 11z0 GAp0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|65e3",
1490			"Atlantic/Canary|LMT -01 WET WEST|11.A 10 0 -10|01232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-1UtaW.o XPAW.o 1lAK0 1a10 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|54e4",
1491			"Atlantic/Cape_Verde|LMT -02 -01|1y.4 20 10|01212|-2ldW0 1eEo0 7zX0 1djf0|50e4",
1492			"Atlantic/Faroe|LMT WET WEST|r.4 0 -10|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2uSnw.U 2Wgow.U 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|49e3",
1493			"Atlantic/Madeira|FMT -01 +00 +01 WET WEST|17.A 10 0 -10 0 -10|0121212121212121212121212121212121212121212123212321232123212121212121212121212121212121212121212121454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-2ldX0 aPX0 Sp0 LX0 1vc0 Tc0 1uM0 SM0 1vc0 Tc0 1vc0 SM0 1vc0 6600 1co0 3E00 17c0 1fA0 1a00 1io0 1a00 1io0 17c0 3I00 17c0 1cM0 1cM0 3Fc0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Dc0 1tA0 1cM0 1dc0 1400 gL0 IM0 s10 U00 dX0 Rc0 pd0 Rc0 gL0 Oo0 pd0 Rc0 gL0 Oo0 pd0 14o0 1cM0 1cP0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 qIl0 1cM0 1fA0 1cM0 1cM0 1cN0 1cL0 1cN0 1cM0 1cM0 1cM0 1cM0 1cN0 1cL0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|27e4",
1494			"Atlantic/Reykjavik|LMT -01 +00 GMT|1s 10 0 0|012121212121212121212121212121212121212121212121212121212121212121213|-2uWmw mfaw 1Bd0 ML0 1LB0 Cn0 1LB0 3fX0 C10 HrX0 1cO0 LB0 1EL0 LA0 1C00 Oo0 1wo0 Rc0 1wo0 Rc0 1wo0 Rc0 1zc0 Oo0 1zc0 14o0 1lc0 14o0 1lc0 14o0 1o00 11A0 1lc0 14o0 1o00 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1o00 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1o00 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1o00 14o0|12e4",
1495			"Atlantic/South_Georgia|-02|20|0||30",
1496			"Atlantic/Stanley|SMT -04 -03 -02|3P.o 40 30 20|012121212121212323212121212121212121212121212121212121212121212121212|-2kJw8.A 12bA8.A 19X0 1fB0 19X0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 Cn0 1Cc10 WL0 1qL0 U10 1tz0 2mN0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1tz0 U10 1tz0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1tz0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qN0 U10 1wn0 Rd0 1wn0 U10 1tz0 U10 1tz0 U10 1tz0 U10 1tz0 U10 1wn0 U10 1tz0 U10 1tz0 U10|21e2",
1497			"Australia/Sydney|AEST AEDT|-a0 -b0|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|-293k0 xc0 10jc0 yM0 1cM0 1cM0 1fA0 1a00 17c00 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 14o0 1o00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 U00 1qM0 WM0 1tA0 WM0 1tA0 U00 1tA0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 11A0 1o00 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 14o0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0|40e5",
1498			"Australia/Adelaide|ACST ACDT|-9u -au|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|-293ju xc0 10jc0 yM0 1cM0 1cM0 1fA0 1a00 17c00 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 U00 1qM0 WM0 1tA0 WM0 1tA0 U00 1tA0 U00 1tA0 Oo0 1zc0 WM0 1qM0 Rc0 1zc0 U00 1tA0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 14o0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0|11e5",
1499			"Australia/Brisbane|AEST AEDT|-a0 -b0|01010101010101010|-293k0 xc0 10jc0 yM0 1cM0 1cM0 1fA0 1a00 17c00 LA0 H1A0 Oo0 1zc0 Oo0 1zc0 Oo0|20e5",
1500			"Australia/Broken_Hill|ACST ACDT|-9u -au|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|-293ju xc0 10jc0 yM0 1cM0 1cM0 1fA0 1a00 17c00 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 14o0 1o00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 U00 1qM0 WM0 1tA0 WM0 1tA0 U00 1tA0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 14o0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0|18e3",
1501			"Australia/Hobart|AEST AEDT|-a0 -b0|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|-29E80 1a00 1qM0 Oo0 1zc0 Oo0 TAo0 yM0 1cM0 1cM0 1fA0 1a00 VfA0 1cM0 1o00 Rc0 1wo0 Rc0 1wo0 U00 1wo0 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 11A0 1qM0 WM0 1qM0 Oo0 1zc0 Oo0 1zc0 Oo0 1wo0 WM0 1tA0 WM0 1tA0 U00 1tA0 U00 1tA0 11A0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 11A0 1o00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0|21e4",
1502			"Australia/Darwin|ACST ACDT|-9u -au|010101010|-293ju xc0 10jc0 yM0 1cM0 1cM0 1fA0 1a00|12e4",
1503			"Australia/Eucla|+0845 +0945|-8J -9J|0101010101010101010|-293iJ xc0 10jc0 yM0 1cM0 1cM0 1gSo0 Oo0 l5A0 Oo0 iJA0 G00 zU00 IM0 1qM0 11A0 1o00 11A0|368",
1504			"Australia/Lord_Howe|AEST +1030 +1130 +11|-a0 -au -bu -b0|0121212121313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313|raC0 1zdu Rb0 1zd0 On0 1zd0 On0 1zd0 On0 1zd0 TXu 1qMu WLu 1tAu WLu 1tAu TXu 1tAu Onu 1zcu Onu 1zcu Onu 1zcu Rbu 1zcu Onu 1zcu Onu 1zcu 11zu 1o0u 11zu 1o0u 11zu 1o0u 11zu 1qMu WLu 11Au 1nXu 1qMu 11zu 1o0u 11zu 1o0u 11zu 1qMu WLu 1qMu 11zu 1o0u WLu 1qMu 14nu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1fzu 1cMu 
15041cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu|347",
1505			"Australia/Lindeman|AEST AEDT|-a0 -b0|010101010101010101010|-293k0 xc0 10jc0 yM0 1cM0 1cM0 1fA0 1a00 17c00 LA0 H1A0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0|10",
1506			"Australia/Melbourne|AEST AEDT|-a0 -b0|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|-293k0 xc0 10jc0 yM0 1cM0 1cM0 1fA0 1a00 17c00 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 U00 1qM0 WM0 1qM0 11A0 1tA0 U00 1tA0 U00 1tA0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 11A0 1o00 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 14o0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0|39e5",
1507			"Australia/Perth|AWST AWDT|-80 -90|0101010101010101010|-293i0 xc0 10jc0 yM0 1cM0 1cM0 1gSo0 Oo0 l5A0 Oo0 iJA0 G00 zU00 IM0 1qM0 11A0 1o00 11A0|18e5",
1508			"CET|CET CEST|-10 -20|01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aFe0 11d0 1iO0 11A0 1o00 11A0 Qrc0 6i00 WM0 1fA0 1cM0 1cM0 1cM0 16M0 1gMM0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|",
1509			"Pacific/Easter|EMT -07 -06 -05|7h.s 70 60 50|012121212121212121212121212123232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323|-1uSgG.w 1s4IG.w WL0 1zd0 On0 1ip0 11z0 1o10 11z0 1qN0 WL0 1ld0 14n0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 2pA0 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 1cL0 1cN0 11z0 1o10 11z0 1qN0 WL0 1fB0 19X0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1ip0 1fz0 1fB0 11z0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1o10 19X0 1fB0 1nX0 G10 1EL0 Op0 1zb0 Rd0 1wn0 Rd0 46n0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1zb0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0|30e2",
1510			"CST6CDT|CST CDT CWT CPT|60 50 50 50|010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|",
1511			"EET|EET EEST|-20 -30|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|hDB0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|",
1512			"Europe/Dublin|DMT IST GMT BST IST|p.l -y.D 0 -10 -10|01232323232324242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242|-2ax9y.D Rc0 1fzy.D 14M0 1fc0 1g00 1co0 1dc0 1co0 1oo0 1400 1dc0 19A0 1io0 1io0 WM0 1o00 14o0 1o00 17c0 1io0 17c0 1fA0 1a00 1lc0 17c0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1cM0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1a00 1io0 1qM0 Dc0 g600 14o0 1wo0 17c0 1io0 11A0 1o00 17c0 1fA0 1a00 1fA0 1cM0 1fA0 1a00 17c0 1fA0 1a00 1io0 17c0 1lc0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1a00 1a00 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1tA0 IM0 90o0 U00 1tA0 U00 1tA0 U00 1tA0 U00 1tA0 WM0 1qM0 WM0 1qM0 WM0 1tA0 U00 1tA0 U00 1tA0 11z0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 14o0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|12e5",
1513			"EST|EST|50|0||",
1514			"EST5EDT|EST EDT EWT EPT|50 40 40 40|010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261t0 1nX0 11B0 1nX0 SgN0 8x40 iv0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|",
1515			"Etc/GMT-0|GMT|0|0||",
1516			"Etc/GMT-1|+01|-10|0||",
1517			"Etc/GMT-11|+11|-b0|0||",
1518			"Pacific/Tarawa|+12|-c0|0||29e3",
1519			"Etc/GMT-13|+13|-d0|0||",
1520			"Etc/GMT-14|+14|-e0|0||",
1521			"Etc/GMT-2|+02|-20|0||",
1522			"Etc/GMT-3|+03|-30|0||",
1523			"Etc/GMT-4|+04|-40|0||",
1524			"Etc/GMT-5|+05|-50|0||",
1525			"Etc/GMT-6|+06|-60|0||",
1526			"Indian/Christmas|+07|-70|0||21e2",
1527			"Etc/GMT-8|+08|-80|0||",
1528			"Pacific/Palau|+09|-90|0||21e3",
1529			"Etc/GMT+1|-01|10|0||",
1530			"Etc/GMT+10|-10|a0|0||",
1531			"Etc/GMT+11|-11|b0|0||",
1532			"Etc/GMT+12|-12|c0|0||",
1533			"Etc/GMT+3|-03|30|0||",
1534			"Etc/GMT+4|-04|40|0||",
1535			"Etc/GMT+5|-05|50|0||",
1536			"Etc/GMT+6|-06|60|0||",
1537			"Etc/GMT+7|-07|70|0||",
1538			"Etc/GMT+8|-08|80|0||",
1539			"Etc/GMT+9|-09|90|0||",
1540			"Etc/UTC|UTC|0|0||",
1541			"Europe/Amsterdam|AMT NST +0120 +0020 CEST CET|-j.w -1j.w -1k -k -20 -10|010101010101010101010101010101010101010101012323234545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545|-2aFcj.w 11b0 1iP0 11A0 1io0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1co0 1io0 1yo0 Pc0 1a00 1fA0 1Bc0 Mo0 1tc0 U
1541o0 1tA0 U00 1uo0 W00 1s00 VA0 1so0 Vc0 1sM0 UM0 1wo0 Rc0 1u00 Wo0 1rA0 W00 1s00 VA0 1sM0 UM0 1w00 fV0 BCX.w 1tA0 U00 1u00 Wo0 1sm0 601k WM0 1fA0 1cM0 1cM0 1cM0 16M0 1gMM0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|16e5",
1542			"Europe/Andorra|WET CET CEST|0 -10 -20|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-UBA0 1xIN0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|79e3",
1543			"Europe/Astrakhan|LMT +03 +04 +05|-3c.c -30 -40 -50|012323232323232323212121212121212121212121212121212121212121212|-1Pcrc.c eUMc.c 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1fA0 1cM0 3Co0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3rd0|10e5",
1544			"Europe/Athens|AMT EET EEST CEST CET|-1y.Q -20 -30 -20 -10|012123434121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2a61x.Q CNbx.Q mn0 kU10 9b0 3Es0 Xa0 1fb0 1dd0 k3X0 Nz0 SCp0 1vc0 SO0 1cM0 1a00 1ao0 1fc0 1a10 1fG0 1cg0 1dX0 1bX0 1cQ0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|35e5",
1545			"Europe/London|GMT BST BDST|0 -10 -20|0101010101010101010101010101010101010101010101010121212121210101210101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2axa0 Rc0 1fA0 14M0 1fc0 1g00 1co0 1dc0 1co0 1oo0 1400 1dc0 19A0 1io0 1io0 WM0 1o00 14o0 1o00 17c0 1io0 17c0 1fA0 1a00 1lc0 17c0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1cM0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1a00 1io0 1qM0 Dc0 2Rz0 Dc0 1zc0 Oo0 1zc0 Rc0 1wo0 17c0 1iM0 FA0 xB0 1fA0 1a00 14o0 bb0 LA0 xB0 Rc0 1wo0 11A0 1o00 17c0 1fA0 1a00 1fA0 1cM0 1fA0 1a00 17c0 1fA0 1a00 1io0 17c0 1lc0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1a00 1a00 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1tA0 IM0 90o0 U00 1tA0 U00 1tA0 U00 1tA0 U00 1tA0 WM0 1qM0 WM0 1qM0 WM0 1tA0 U00 1tA0 U00 1tA0 11z0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 14o0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|10e6",
1546			"Europe/Belgrade|CET CEST|-10 -20|01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-19RC0 3IP0 WM0 1fA0 1cM0 1cM0 1rc0 Qo0 1vmo0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|12e5",
1547			"Europe/Berlin|CET CEST CEMT|-10 -20 -30|01010101010101210101210101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aFe0 11d0 1iO0 11A0 1o00 11A0 Qrc0 6i00 WM0 1fA0 1cM0 1cM0 1cM0 kL0 Nc0 m10 WM0 1ao0 1cp0 dX0 jz0 Dd0 1io0 17c0 1fA0 1a00 1ehA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|41e5",
1548			"Europe/Prague|CET CEST GMT|-10 -20 0|01010101010101010201010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aFe0 11d0 1iO0 11A0 1o00 11A0 Qrc0 6i00 WM0 1fA0 1cM0 1cM0 1cM0 1cM0 1qM0 11c0 mp0 xA0 mn0 17c0 1io0 17c0 1fc0 1ao0 1bNc0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|13e5",
1549			"Europe/Brussels|WET CET CEST WEST|0 -10 -20 -10|0121212103030303030303030303030303030303030303030303212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2ehc0 3zX0 11c0 1iO0 11A0 1o00 11A0 my0 Ic0 1qM0 Rc0 1EM0 UM0 1u00 10o0 1io0 1io0 17c0 1a00 1fA0 1cM0 1cM0 1io0 17c0 1fA0 1a00 1io0 1a30 1io0 17c0 1fA0 1a00 1io0 17c0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Dc0 y00 5Wn0 WM0 1fA0 1cM0 16M0 1iM0 16M0 1C00 Uo0 1eeo0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|21e5",
1550			"Europe/Bucharest|BMT EET EEST|-1I.o -20 -30|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1xApI.o 20LI.o RA0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1Axc0 On0 1fA0 1a10 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cK0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cL0 1cN0 1cL0 1fB0 1nX0 11E0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|19e5",
1551			"Europe/Budapest|CET CEST|-10 -20|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aFe0 11d0 1iO0 11A0 1o00 11A0 1oo0 11c0 1lc0 17c0 O1V0 3Nf0 WM0 1fA0 1cM0 1cM0 1oJ0 1dd0 1020 1fX0 1cp0 1cM0 1cM0 1cM0 1fA0 1a00 bhy0 Rb0 1wr0 Rc0 1C00 LA0 1C00 LA0 SNW0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cO0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|17e5",
1552			"Europe/Zurich|CET CEST|-10 -20|01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-19Lc0 11A0 1o00 11A0 1xG10 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|38e4",
1553			"Europe/Chisinau|CMT BMT EET EEST CEST CET MSK MSD|-1T -1I.o -20 -30 -20 -10 -30 -40|012323232323232323234545467676767676767676767323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-26jdT wGMa.A 20LI.o RA0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 27A0 2en0 39g0 WM0 1fA0 1cM0 V90 1t7z0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 gL0 WO0 1cM0 1cM0 1cK0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1nX0 11D0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|67e4",
1554			"Europe/Copenhagen|CET CEST|-10 -20|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2azC0 Tz0 VuO0 60q0 WM0 1fA0 1cM0 1cM0 1cM0 S00 1HA0 Nc0 1C00 Dc0 1Nc0 Ao0 1h5A0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|12e5",
1555			"Europe/Gibraltar|GMT BST BDST CET CEST|0 -10 -20 -10 -20|010101010101010101010101010101010101010101010101012121212121010121010101010101010101034343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343|-2axa0 Rc0 1fA0 14M0 1fc0 1g00 1co0 1dc0 1co0 1oo0 1400 1dc0 19A0 1io0 1io0 WM0 1o00 14o0 1o00 17c0 1io0 17c0 1fA0 1a00 1lc0 17c0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1cM0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1a00 1io0 1qM0 Dc0 2Rz0 Dc0 1zc0 Oo0 1zc0 Rc0 1wo0 17c0 1iM0 FA0 xB0 1fA0 1a00 14o0 bb0 LA0 xB0 Rc0 1wo0 11A0 1o00 17c0 1fA0 1a00 1fA0 1cM0 1fA0 1a00 17c0 1fA0 1a00 1io0 17c0 1lc0 17c0 1fA0 10Jz0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|30e3",
1556			"Europe/Helsinki|HMT EET EEST|-1D.N -20 -30|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1WuND.N OULD.N 1dA0 1xGq0 1cM0 1cM0 1cM0 1cN0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|12e5",
1557			"Europe/Kaliningrad|CET CEST EET EEST MSK MSD +03|-10 -20 -20 -30 -30 -40 -30|01010101010101232454545454545454543232323232323232323232323232323232323232323262|-2aFe0 11d0 1iO0 11A0 1o00 11A0 Qrc0 6i00 WM0 1fA0 1cM0 1cM0 1cM0 390 7A0 1en0 12N0 1pbb0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|44e4",
1558			"Europe/Kiev|KMT EET MSK CEST CET MSD EEST|-22.4 -20 -30 -20 -10 -40 -30|0123434252525252525252525256161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161|-1Pc22.4 eUo2.4 rnz0 2Hg0 WM0 1fA0 da0 1v4m0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 Db0 3220 1cK0 1cL0 1cN0 1cL0 1cN0 1cL0 1cQ0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|34e5",
1559			"Europe/Kirov|LMT +03 +04 +05|-3i.M -30 -40 -50|01232323232323232321212121212121212121212121212121212121212121|-22WM0 qH90 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1fA0 1cM0 3Co0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|48e4",
1560			"Europe/Lisbon|LMT WET WEST WEMT CET CEST|A.J 0 -10 -20 -10 -20|01212121212121212121212121212121212121212121232123212321232121212121212121212121212121212121212121214121212121212121212121212121212124545454212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2le00 aPX0 Sp0 LX0 1vc0 Tc0 1uM0 SM0 1vc0 Tc0 1vc0 SM0 1vc0 6600 1co0 3E00 17c0 1fA0 1a00 1io0 1a00 1io0 17c0 3I00 17c0 1cM0 1cM0 3Fc0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Dc0 1tA0 1cM0 1dc0 1400 gL0 IM0 s10 U00 dX0 Rc0 pd0 Rc0 gL0 Oo0 pd0 Rc0 gL0 Oo0 pd0 14o0 1cM0 1cP0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 pvy0 1cM0 1cM0 1fA0 1cM0 1cM0 1cN0 1cL0 1cN0 1cM0 1cM0 1cM0 1cM0 1cN0 1cL0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|27e5",
1561			"Europe/Luxembourg|LMT CET CEST WET WEST WEST WET|-o.A -10 -20 0 -10 -20 -10|0121212134343434343434343434343434343434343434343434565651212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2DG0o.A t6mo.A TB0 1nX0 Up0 1o20 11A0 rW0 CM0 1qP0 R90 1EO0 UK0 1u20 10m0 1ip0 1in0 17e0 19W0 1fB0 1db0 1cp0 1in0 17d0 1fz0 1a10 1in0 1a10 1in0 17f0 1fA0 1a00 1io0 17c0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Dc0 vA0 60L0 WM0 1fA0 1cM0 17c0 1io0 16M0 1C00 Uo0 1eeo0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|54e4",
1562			"Europe/Madrid|WET WEST WEMT CET CEST|0 -10 -20 -10 -20|010101010101010101210343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343|-25Td0 19B0 1cL0 1dd0 b1z0 18p0 3HX0 17d0 1fz0 1a10 1io0 1a00 1in0 17d0 iIn0 Hd0 1cL0 bb0 1200 2s20 14n0 5aL0 Mp0 1vz0 17d0 1in0 17d0 1in0 17d0 1in0 17d0 6hX0 11B0 XHX0 1a10 1fz0 1a10 19X0 1cN0 1fz0 1a10 1fC0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|62e5",
1563			"Europe/Malta|CET CEST|-10 -20|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2arB0 Lz0 1cN0 1db0 1410 1on0 Wp0 1qL0 17d0 1cL0 M3B0 5M20 WM0 1fA0 1co0 17c0 1iM0 16m0 1de0 1lc0 14m0 1lc0 WO0 1qM0 GTW0 On0 1C10 LA0 1C00 LA0 1EM0 LA0 1C00 LA0 1zc0 Oo0 1C00 Oo0 1co0 1cM0 1lA0 Xc0 1qq0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1iN0 19z0 1fB0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|42e4",
1564			"Europe/Minsk|MMT EET MSK CEST CET MSD EEST +03|-1O -20 -30 -20 -10 -40 -30 -30|01234343252525252525252525261616161616161616161616161616161616161617|-1Pc1O eUnO qNX0 3gQ0 WM0 1fA0 1cM0 Al0 1tsn0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 3Fc0 1cN0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0|19e5",
1565			"Europe/Monaco|PMT WET WEST WEMT CET CEST|-9.l 0 -10 -20 -10 -20|01212121212121212121212121212121212121212121212121232323232345454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-2n5c9.l cFX9.l HA0 19A0 1iM0 11c0 1oo0 Wo0 1rc0 QM0 1EM0 UM0 1u00 10o0 1io0 1wo0 Rc0 1a00 1fA0 1cM0 1cM0 1io0 17c0 1fA0 1a00 1io0 1a00 1io0 17c0 1fA0 1a00 1io0 17c0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Df0 2RV0 11z0 11B0 1ze0 WM0 1fA0 1cM0 1fa0 1aq0 16M0 1ekn0 1cL0 1fC0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|38e3",
1566			"Europe/Moscow|MMT MMT MST MDST MSD MSK +05 EET EEST MSK|-2u.h -2v.j -3v.j -4v.j -40 -30 -50 -20 -30 -40|012132345464575454545454545454545458754545454545454545454545454545454545454595|-2ag2u.h 2pyW.W 1bA0 11X0 GN0 1Hb0 c4v.j ik0 3DA0 dz0 15A0 c10 2q10 iM10 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|16e6",
1567			"Europe/Paris|PMT WET WEST CEST CET WEMT|-9.l 0 -10 -20 -10 -20|0121212121212121212121212121212121212121212121212123434352543434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434|-2nco9.l cNb9.l HA0 19A0 1iM0 11c0 1oo0 Wo0 1rc0 QM0 1EM0 UM0 1u00 10o0 1io0 1wo0 Rc0 1a00 1fA0 1cM0 1cM0 1io0 17c0 1fA0 1a00 1io0 1a00 1io0 17c0 1fA0 1a00 1io0 17c0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Df0 Ik0 5M30 WM0 1fA0 1cM0 Vx0 hB0 1aq0 16M0 1ekn0 1cL0 1fC0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|11e6",
1568			"Europe/Riga|RMT LST EET MSK CEST CET MSD EEST|-1A.y -2A.y -2
15680 -30 -20 -10 -40 -30|010102345454536363636363636363727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272|-25TzA.y 11A0 1iM0 ko0 gWm0 yDXA.y 2bX0 3fE0 WM0 1fA0 1cM0 1cM0 4m0 1sLy0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 1o00 11A0 1o00 11A0 1qM0 3oo0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|64e4",
1569			"Europe/Rome|CET CEST|-10 -20|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2arB0 Lz0 1cN0 1db0 1410 1on0 Wp0 1qL0 17d0 1cL0 M3B0 5M20 WM0 1fA0 1cM0 16M0 1iM0 16m0 1de0 1lc0 14m0 1lc0 WO0 1qM0 GTW0 On0 1C10 LA0 1C00 LA0 1EM0 LA0 1C00 LA0 1zc0 Oo0 1C00 Oo0 1C00 LA0 1zc0 Oo0 1C00 LA0 1C00 LA0 1zc0 Oo0 1C00 Oo0 1zc0 Oo0 1fC0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|39e5",
1570			"Europe/Samara|LMT +03 +04 +05|-3k.k -30 -40 -50|0123232323232323232121232323232323232323232323232323232323212|-22WM0 qH90 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1fA0 2y10 14m0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 2sp0 WM0|12e5",
1571			"Europe/Saratov|LMT +03 +04 +05|-34.i -30 -40 -50|012323232323232321212121212121212121212121212121212121212121212|-22WM0 qH90 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1cM0 1cM0 1fA0 1cM0 3Co0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 5810|",
1572			"Europe/Simferopol|SMT EET MSK CEST CET MSD EEST MSK|-2g -20 -30 -20 -10 -40 -30 -40|012343432525252525252525252161616525252616161616161616161616161616161616172|-1Pc2g eUog rEn0 2qs0 WM0 1fA0 1cM0 3V0 1u0L0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1Q00 4eL0 1cL0 1cN0 1cL0 1cN0 dX0 WL0 1cN0 1cL0 1fB0 1o30 11B0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11z0 1nW0|33e4",
1573			"Europe/Sofia|EET CET CEST EEST|-20 -10 -20 -30|01212103030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030|-168L0 WM0 1fA0 1cM0 1cM0 1cN0 1mKH0 1dd0 1fb0 1ap0 1fb0 1a20 1fy0 1a30 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cK0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1nX0 11E0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|12e5",
1574			"Europe/Stockholm|CET CEST|-10 -20|01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2azC0 TB0 2yDe0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|15e5",
1575			"Europe/Tallinn|TMT CET CEST EET MSK MSD EEST|-1D -10 -20 -20 -30 -40 -30|012103421212454545454545454546363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363|-26oND teD 11A0 1Ta0 4rXl KSLD 2FX0 2Jg0 WM0 1fA0 1cM0 18J0 1sTX0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o10 11A0 1qM0 5QM0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|41e4",
1576			"Europe/Tirane|LMT CET CEST|-1j.k -10 -20|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2glBj.k 14pcj.k 5LC0 WM0 4M0 1fCK0 10n0 1op0 11z0 1pd0 11z0 1qN0 WL0 1qp0 Xb0 1qp0 Xb0 1qp0 11z0 1lB0 11z0 1qN0 11z0 1iN0 16n0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|42e4",
1577			"Europe/Ulyanovsk|LMT +03 +04 +05 +02|-3d.A -30 -40 -50 -20|01232323232323232321214121212121212121212121212121212121212121212|-22WM0 qH90 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3rd0|13e5",
1578			"Europe/Uzhgorod|CET CEST MSK MSD EET EEST|-10 -20 -30 -40 -20 -30|010101023232323232323232320454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-1cqL0 6i00 WM0 1fA0 1cM0 1ml0 1Cp0 1r3W0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1Q00 1Nf0 2pw0 1cL0 1cN0 1cL0 1cN0 1cL0 1cQ0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|11e4",
1579			"Europe/Vienna|CET CEST|-10 -20|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aFe0 11d0 1iO0 11A0 1o00 11A0 3KM0 14o0 LA00 6i00 WM0 1fA0 1cM0 1cM0 1cM0 400 2qM0 1ao0 1co0 1cM0 1io0 17c0 1gHa0 19X0 1cP0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|18e5",
1580			"Europe/Vilnius|WMT KMT CET EET MSK CEST MSD EEST|-1o -1z.A -10 -20 -30 -20 -40 -30|012324525254646464646464646473737373737373737352537373737373737373737373737373737373737373737373737373737373737373737373|-293do 6ILM.o 1Ooz.A zz0 Mfd0 29W0 3is0 WM0 1fA0 1cM0 LV0 1tgL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11B0 1o00 11A0 1qM0 8io0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|54e4",
1581			"Europe/Volgograd|LMT +03 +04 +05|-2V.E -30 -40 -50|0123232323232323212121212121212121212121212121212121212121212121|-21IqV.E psLV.E 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1cM0 1cM0 1fA0 1cM0 3Co0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 9Jd0 5gn0|10e5",
1582			"Europe/Warsaw|WMT CET CEST EET EEST|-1o -10 -20 -20 -30|012121234312121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2ctdo 1LXo 11d0 1iO0 11A0 1o00 11A0 1on0 11A0 6zy0 HWP0 5IM0 WM0 1fA0 1cM0 1dz0 1mL0 1en0 15B0 1aq0 1nA0 11A0 1io0 17c0 1fA0 1a00 iDX0 LA0 1cM0 1cM0 1C00 Oo0 1cM0 1cM0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1C00 LA0 uso0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|17e5",
1583			"Europe/Zaporozhye|+0220 EET MSK CEST CET MSD EEST|-2k -20 -30 -20 -10 -40 -30|01234342525252525252525252526161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161|-1Pc2k eUok rdb0 2RE0 WM0 1fA0 8m0 1v9a0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cK0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cQ0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|77e4",
1584			"HST|HST|a0|0||",
1585			"Indian/Chagos|LMT +05 +06|-4N.E -50 -60|012|-2xosN.E 3AGLN.E|30e2",
1586			"Indian/Cocos|+0630|-6u|0||596",
1587			"Indian/Kerguelen|-00 +05|0 -50|01|-MG00|130",
1588			"Indian/Mahe|LMT +04|-3F.M -40|01|-2xorF.M|79e3",
1589			"Indian/Maldives|MMT +05|-4S -50|01|-olgS|35e4",
1590			"Indian/Mauritius|LMT +04 +05|-3O -40 -50|012121|-2xorO 34unO 14L0 12kr0 11z0|15e4",
1591			"Indian/Reunion|LMT +04|-3F.Q -40|01|-2mDDF.Q|84e4",
1592			"Pacific/Kwajalein|+11 +10 +09 -12 +12|-b0 -a0 -90 c0 -c0|012034|-1kln0 akp0 6Up0 12ry0 Wan0|14e3",
1593			"MET|MET MEST|-10 -20|01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aFe0 11d0 1iO0 11A0 1o00 11A0 Qrc0 6i00 WM0 1fA0 1cM0 1cM0 1cM0 16M0 1gMM0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|",
1594			"MST|MST|70|0||",
1595			"MST7MDT|MST MDT MWT MPT|70 60 60 60|010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261r0 1nX0 11B0 1nX0 SgN0 8x20 ix0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|",
1596			"Pacific/Chatham|+1215 +1245 +1345|-cf -cJ -dJ|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212|-WqAf 1adef IM0 1C00 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1qM0 14o0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1io0 17c0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1io0 17c0 1io0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00|600",
1597			"Pacific/Apia|LMT -1130 -11 -10 +14 +13|bq.U bu b0 a0 -e0 -d0|01232345454545454545454545|-2nDMx.4 1yW03.4 2rRbu 1ff0 1a00 CI0 AQ0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0|37e3",
1598			"Pacific/Bougainville|+10 +09 +11|-a0 -90 -b0|0102|-16Wy0 7CN0 2MQp0|18e4",
1599			"Pacific/Chuuk|+10 +09|-a0 -90|01010|-2ewy0 axB0 RVX0 axd0|49e3",
1600			"Pacific/Efate|LMT +11 +12|-bd.g -b0 -c0|012121212121212121212121|-2l9nd.g 2uNXd.g Dc0 n610 1cL0 1cN0 1cL0 1fB0 19X0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 Lz0 1Nd0 An0|66e3",
1601			"Pacific/Enderbury|-00 -12 -11 +13|0 c0 b0 -d0|0123|-1iIo0 1GsA0 B7X0|1",
1602			"Pacific/Fakaofo|-11 +13|b0 -d0|01|1Gfn0|483",
1603			"Pacific/Fiji|LMT +12 +13|-bT.I -c0 -d0|01212121212121212121212121212121212121212121212121212121212121|-2bUzT.I 3m8NT.I LA0 1EM0 IM0 nJc0 LA0 1o00 Rc0 1wo0 Ao0 1Nc0 Ao0 1Q00 xz0 1SN0 uM0 1SM0 uM0 1VA0 s00 1VA0 s00 1VA0 s00 20o0 pc0 2hc0 bc0 4q00 pc0 20o0 pc0 20o0 pc0 20o0 s00 1VA0 s00 20o0 pc0 20o0 pc0 20o0 pc0 20o0 pc0 20o0 s00 20o0 pc0 20o0 pc0 20o0 pc0 20o0 pc0 20o0 s00 1VA0 s00|88e4",
1604			"Pacific/Galapagos|LMT -05 -06|5W.o 50 60|01212|-1yVS1.A 2dTz1.A gNd0 rz0|25e3",
1605			"Pacific/Gambier|LMT -09|8X.M 90|01|-2jof0.c|125",
1606			"Pacific/Guadalcanal|LMT +11|-aD.M -b0|01|-2joyD.M|11e4",
1607			"Pacific/Guam|GST +09 GDT ChST|-a0 -90 -b0 -a0|01020202020202020203|-18jK0 6pB0 AhB0 3QL0 g2p0 3p91 WOX rX0 1zd0 Rb0 1wp0 Rb0 5xd0 rX0 5sN0 zb1 1C0X On0 ULb0|17e4",
1608			"Pacific/Honolulu|HST HDT HWT HPT HST|au 9u 9u 9u a0|0102304|-1thLu 8x0 lef0 8wWu iAu 46p0|37e4",
1609			"Pacific/Kiritimati|-1040 -10 +14|aE a0 -e0|012|nIaE B7Xk|51e2",
1610			"Pacific/Kosrae|+11 +09 +10 +12|-b0 -90 -a0 -c0|01021030|-2ewz0 axC0 HBy0 akp0 axd0 WOK0 1bdz0|66e2",
1611			"Pacific/Majuro|+11 +09 +10 +12|-b0 -90 -a0 -c0|0102103|-2ewz0 axC0 HBy0 akp0 6RB0 12um0|28e3",
1612			"Pacific/Marquesas|LMT -0930|9i 9u|01|-2joeG|86e2",
1613			"Pacific/Pago_Pago|LMT SST|bm.M b0|01|-2nDMB.c|37e2",
1614			"Pacific/Nauru|LMT +1130 +09 +12|-b7.E -bu -90 -c0|01213|-1Xdn7.E QCnB.E 7mqu 1lnbu|10e3",
1615			"Pacific/Niue|LMT -1120 -11|bj.E bk b0|012|-FScE.k suo0.k|12e2",
1616			"Pacific/Norfolk|+1112 +1130 +1230 +11 +12|-bc -bu -cu -b0 -c0|012134343434343434343434343434343434343434|-Kgbc W01G Oo0 1COo0 9Jcu 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0|25e4",
1617			"Pacific/Noumea|LMT +11 +12|-b5.M -b0 -c0|01212121|-2l9n5.M 2EqM5.M xX0 1PB0 yn0 HeP0 Ao0|98e3",
1618			"Pacific/Pitcairn|-0830 -08|8u 80|01|18Vku|56",
1619			"Pacific/Pohnpei|+11 +09 +10|-b0 -90 -a0|010210|-2ewz0 axC0 HBy0 akp0 axd0|34e3",
1620			"Pacific/Rarotonga|LMT -1030 -0930 -10|aD.4 au 9u a0|0123232323232323232323232323|-FSdk.U 13tbO.U IL0 1zcu Onu 1zcu Onu 1zcu Rbu 1zcu Onu 1zcu Onu 1zcu Onu 1zcu Onu 1zcu Onu 1zcu Rbu 1zcu Onu 1zcu Onu 1zcu Onu|13e3",
1621			"Pacific/Tahiti|LMT -10|9W.g a0|01|-2joe1.I|18e4",
1622			"Pacific/Tongatapu|LMT +1220 +13 +14|-cj.c -ck -d0 -e0|01232323232|-XbMj.c BgLX.c 1yndk 15A0 1wo0 xz0 1Q10 xz0 zWN0 s00|75e3",
1623			"PST8PDT|PST PDT PWT PPT|80 70 70 70|010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261q0 1nX0 11B0 1nX0 SgN0 8x10 iy0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|",
1624			"WET|WET WEST|0 -10|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|hDB0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|"
1625		],
1626		"links": [
1627			"Africa/Abidjan|Africa/Accra",
1628			"Africa/Abidjan|Africa/Bamako",
1629			"Africa/Abidjan|Africa/Banjul",
1630			"Africa/Abidjan|Africa/Conakry",
1631			"Africa/Abidjan|Africa/Dakar",
1632			"Africa/Abidjan|Africa/Freetown",
1633			"Africa/Abidjan|Africa/Lome",
1634			"Africa/Abidjan|Africa/Nouakchott",
1635			"Africa/Abidjan|Africa/Ouagadougou",
1636			"Africa/Abidjan|Africa/Timbuktu",
1637			"Africa/Abidjan|Atlantic/St_Helena",
1638			"Africa/Cairo|Egypt",
1639			"Africa/Johannesburg|Africa/Maseru",
1640			"Africa/Johannesburg|Africa/Mbabane",
1641			"Africa/Lagos|Africa/Bangui",
1642			"Africa/Lagos|Africa/Brazzaville",
1643			"Africa/Lagos|Africa/Douala",
1644			"Africa/Lagos|Africa/Kinshasa",
1645			"Africa/Lagos|Africa/Libreville",
1646			"Africa/Lagos|Africa/Luanda",
1647			"Africa/Lagos|Africa/Malabo",
1648			"Africa/Lagos|Africa/Niamey",
1649			"Africa/Lagos|Africa/Porto-Novo",
1650			"Africa/Maputo|Africa/Blantyre",
1651			"Africa/Maputo|Africa/Bujumbura",
1652			"Africa/Maputo|Africa/Gaborone",
1653			"Africa/Maputo|Africa/Harare",
1654			"Africa/Maputo|Africa/Kigali",
1655			"Africa/Maputo|Africa/Lubumbashi",
1656			"Africa/Maputo|Africa/Lusaka",
1657			"Africa/Nairobi|Africa/Addis_Ababa",
1658			"Africa/Nairobi|Africa/Asmara",
1659			"Africa/Nairobi|Africa/Asmera",
1660			"Africa/Nairobi|Africa/Dar_es_Salaam",
1661			"Africa/Nairobi|Africa/Djibouti",
1662			"Africa/Nairobi|Africa/Kampala",
1663			"Africa/Nairobi|Africa/Mogadishu",
1664			"Africa/Nairobi|Indian/Antananarivo",
1665			"Africa/Nairobi|Indian/Comoro",
1666			"Africa/Nairobi|Indian/Mayotte",
1667			"Africa/Tripoli|Libya",
1668			"America/Adak|America/Atka",
1669			"America/Adak|US/Aleutian",
1670			"America/Anchorage|US/Alaska",
1671			"America/Argentina/Buenos_Aires|America/Buenos_Aires",
1672			"America/Argentina/Catamarca|America/Argentina/ComodRivadavia",
1673			"America/Argentina/Catamarca|America/Catamarca",
1674			"America/Argentina/Cordoba|America/Cordoba",
1675			"America/Argentina/Cordoba|America/Rosario",
1676			"America/Argentina/Jujuy|America/Jujuy",
1677			"America/Argentina/Mendoza|America/Mendoza",
1678			"America/Chicago|US/Central",
1679			"America/Denver|America/Shiprock",
1680			"America/Denver|Navajo",
1681			"America/Denver|US/Mountain",
1682			"America/Detroit|US/Michigan",
1683			"America/Edmonton|Canada/Mountain",
1684			"America/Fort_Wayne|America/Indiana/Indianapolis",
1685			"America/Fort_Wayne|America/Indianapolis",
1686			"America/Fort_Wayne|US/East-Indiana",
1687			"America/Godthab|America/Nuuk",
1688			"America/Halifax|Canada/Atlantic",
1689			"America/Havana|Cuba",
1690			"America/Indiana/Knox|America/Knox_IN",
1691			"America/Indiana/Knox|US/Indiana-Starke",
1692			"America/Jamaica|Jamaica",
1693			"America/Kentucky/Louisville|America/Louisville",
1694			"America/Los_Angeles|US/Pacific",
1695			"America/Manaus|Brazil/West",
1696			"America/Mazatlan|Mexico/BajaSur",
1697			"America/Mexico_City|Mexico/General",
1698			"America/New_York|US/Eastern",
1699			"America/Noronha|Brazil/DeNoronha",
1700			"America/Panama|America/Atikokan",
1701			"America/Panama|America/Cayman",
1702			"America/Panama|America/Coral_Harbour",
1703			"America/Phoenix|America/Creston",
1704			"America/Phoenix|US/Arizona",
1705			"America/Puerto_Rico|America/Anguilla",
1706			"America/Puerto_Rico|America/Antigua",
1707			"America/Puerto_Rico|America/Aruba",
1708			"America/Puerto_Rico|America/Blanc-Sablon",
1709			"America/Puerto_Rico|America/Curacao",
1710			"America/Puerto_Rico|America/Dominica",
1711			"America/Puerto_Rico|America/Grenada",
1712			"America/Puerto_Rico|America/Guadeloupe",
1713			"America/Puerto_Rico|America/Kralendijk",
1714			"America/Puerto_Rico|America/Lower_Princes",
1715			"America/Puerto_Rico|America/Marigot",
1716			"America/Puerto_Rico|America/Montserrat",
1717			"America/Puerto_Rico|America/Port_of_Spain",
1718			"America/Puerto_Rico|America/St_Barthelemy",
1719			"America/Puerto_Rico|America/St_Kitts",
1720			"America/Puerto_Rico|America/St_Lucia",
1721			"America/Puerto_Rico|America/St_Thomas",
1722			"America/Puerto_Rico|America/St_Vincent",
1723			"America/Puerto_Rico|America/Tortola",
1724			"America/Puerto_Rico|America/Virgin",
1725			"America/Regina|Canada/Saskatchewan",
1726			"America/Rio_Branco|America/Porto_Acre",
1727			"America/Rio_Branco|Brazil/Acre",
1728			"America/Santiago|Chile/Continental",
1729			"America/Sao_Paulo|Brazil/East",
1730			"America/St_Johns|Canada/Newfoundland",
1731			"America/Tijuana|America/Ensenada",
1732			"America/Tijuana|America/Santa_Isabel",
1733			"America/Tijuana|Mexico/BajaNorte",
1734			"America/Toronto|America/Montreal",
1735			"America/Toronto|America/Nassau",
1736			"America/Toronto|Canada/Eastern",
1737			"America/Vancouver|Canada/Pacific",
1738			"America/Whitehorse|Canada/Yukon",
1739			"America/Winnipeg|Canada/Central",
1740			"Asia/Ashgabat|Asia/Ashkhabad",
1741			"Asia/Bangkok|Asia/Phnom_Penh",
1742			"Asia/Bangkok|Asia/Vientiane",
1743			"Asia/Dhaka|Asia/Dacca",
1744			"Asia/Dubai|Asia/Muscat",
1745			"Asia/Ho_Chi_Minh|Asia/Saigon",
1746			"Asia/Hong_Kong|Hongkong",
1747			"Asia/Jerusalem|Asia/Tel_Aviv",
1748			"Asia/Jerusalem|Israel",
1749			"Asia/Kathmandu|Asia/Katmandu",
1750			"Asia/Kolkata|Asia/Calcutta",
1751			"Asia/Kuala_Lumpur|Asia/Singapore",
1752			"Asia/Kuala_Lumpur|Singapore",
1753			"Asia/Macau|Asia/Macao",
1754			"Asia/Makassar|Asia/Ujung_Pandang",
1755			"Asia/Nicosia|Europe/Nicosia",
1756			"Asia/Qatar|Asia/Bahrain",
1757			"Asia/Rangoon|Asia/Yangon",
1758			"Asia/Riyadh|Antarctica/Syowa",
1759			"Asia/Riyadh|Asia/Aden",
1760			"Asia/Riyadh|Asia/Kuwait",
1761			"Asia/Seoul|ROK",
1762			"Asia/Shanghai|Asia/Chongqing",
1763			"Asia/Shanghai|Asia/Chungking",
1764			"Asia/Shanghai|Asia/Harbin",
1765			"Asia/Shanghai|PRC",
1766			"Asia/Taipei|ROC",
1767			"Asia/Tehran|Iran",
1768			"Asia/Thimphu|Asia/Thimbu",
1769			"Asia/Tokyo|Japan",
1770			"Asia/Ulaanbaatar|Asia/Ulan_Bator",
1771			"Asia/Urumqi|Asia/Kashgar",
1772			"Atlantic/Faroe|Atlantic/Faeroe",
1773			"Atlantic/Reykjavik|Iceland",
1774			"Atlantic/South_Georgia|Etc/GMT+2",
1775			"Australia/Adelaide|Australia/South",
1776			"Australia/Brisbane|Australia/Queensland",
1777			"Australia/Broken_Hill|Australia/Yancowinna",
1778			"Australia/Darwin|Australia/North",
1779			"Australia/Hobart|Australia/Currie",
1780			"Australia/Hobart|Australia/Tasmania",
1781			"Australia/Lord_Howe|Australia/LHI",
1782			"Australia/Melbourne|Australia/Victoria",
1783			"Australia/Perth|Australia/West",
1784			"Australia/Sydney|Australia/ACT",
1785			"Australia/Sydney|Australia/Canberra",
1786			"Australia/Sydney|Australia/NSW",
1787			"Etc/GMT-0|Etc/GMT",
1788			"Etc/GMT-0|Etc/GMT+0",
1789			"Etc/GMT-0|Etc/GMT0",
1790			"Etc/GMT-0|Etc/Greenwich",
1791			"Etc/GMT-0|GMT",
1792			"Etc/GMT-0|GMT+0",
1793			"Etc/GMT-0|GMT-0",
1794			"Etc/GMT-0|GMT0",
1795			"Etc/GMT-0|Greenwich",
1796			"Etc/UTC|Etc/UCT",
1797			"Etc/UTC|Etc/Universal",
1798			"Etc/UTC|Etc/Zulu",
1799			"Etc/UTC|UCT",
1800			"Etc/UTC|UTC",
1801			"Etc/UTC|Universal",
1802			"Etc/UTC|Zulu",
1803			"Europe/Belgrade|Europe/Ljubljana",
1804			"Europe/Belgrade|Europe/Podgorica",
1805			"Europe/Belgrade|Europe/Sarajevo",
1806			"Europe/Belgrade|Europe/Skopje",
1807			"Europe/Belgrade|Europe/Zagreb",
1808			"Europe/Chisinau|Europe/Tiraspol",
1809			"Europe/Dublin|Eire",
1810			"Europe/Helsinki|Europe/Mariehamn",
1811			"Europe/Istanbul|Asia/Istanbul",
1812			"Europe/Istanbul|Turkey",
1813			"Europe/Lisbon|Portugal",
1814			"Europe/London|Europe/Belfast",
1815			"Europe/London|Europe/Guernsey",
1816			"Europe/London|Europe/Isle_of_Man",
1817			"Europe/London|Europe/Jersey",
1818			"Europe/London|GB",
1819			"Europe/London|GB-Eire",
1820			"Europe/Moscow|W-SU",
1821			"Europe/Oslo|Arctic/Longyearbyen",
1822			"Europe/Oslo|Atlantic/Jan_Mayen",
1823			"Europe/Prague|Europe/Bratislava",
1824			"Europe/Rome|Europe/San_Marino",
1825			"Europe/Rome|Europe/Vatican",
1826			"Europe/Warsaw|Poland",
1827			"Europe/Zurich|Europe/Busingen",
1828			"Europe/Zurich|Europe/Vaduz",
1829			"Indian/Christmas|Etc/GMT-7",
1830			"Pacific/Auckland|Antarctica/McMurdo",
1831			"Pacific/Auckland|Antarctica/South_Pole",
1832			"Pacific/Auckland|NZ",
1833			"Pacific/Chatham|NZ-CHAT",
1834			"Pacific/Chuuk|Pacific/Truk",
1835			"Pacific/Chuuk|Pacific/Yap",
1836			"Pacific/Easter|Chile/EasterIsland",
1837			"Pacific/Enderbury|Pacific/Kanton",
1838			"Pacific/Guam|Pacific/Saipan",
1839			"Pacific/Honolulu|Pacific/Johnston",
1840			"Pacific/Honolulu|US/Hawaii",
1841			"Pacific/Kwajalein|Kwajalein",
1842			"Pacific/Pago_Pago|Pacific/Midway",
1843			"Pacific/Pago_Pago|Pacific/Samoa",
1844			"Pacific/Pago_Pago|US/Samoa",
1845			"Pacific/Palau|Etc/GMT-9",
1846			"Pacific/Pohnpei|Pacific/Ponape",
1847			"Pacific/Port_Moresby|Antarctica/DumontDUrville",
1848			"Pacific/Port_Moresby|Etc/GMT-10",
1849			"Pacific/Tarawa|Etc/GMT-12",
1850			"Pacific/Tarawa|Pacific/Funafuti",
1851			"Pacific/Tarawa|Pacific/Wake",
1852			"Pacific/Tarawa|Pacific/Wallis"
1853		],
1854		"countries": [
1855			"AD|Europe/Andorra",
1856			"AE|Asia/Dubai",
1857			"AF|Asia/Kabul",
1858			"AG|America/Port_of_Spain America/Antigua",
1859			"AI|America/Port_of_Spain America/Anguilla",
1860			"AL|Europe/Tirane",
1861			"AM|Asia/Yerevan",
1862			"AO|Africa/Lagos Africa/Luanda",
1863			"AQ|Antarctica/Casey Antarctica/Davis Antarctica/DumontDUrville Antarctica/Mawson Antarctica/Palmer Antarctica/Rothera Antarctica/Syowa Antarctica/Troll Antarctica/Vostok Pacific/Auckland Antarctica/McMurdo",
1864			"AR|America/Argentina/Buenos_Aires America/Argentina/Cordoba America/Argentina/Salta America/Argentina/Jujuy America/Argentina/Tucuman America/Argentina/Catamarca America/Argentina/La_Rioja America/Argentina/San_Juan America/Argentina/Mendoza America/Argentina/San_Luis America/Argentina/Rio_Gallegos America/Argentina/Ushuaia",
1865			"AS|Pacific/Pago_Pago",
1866			"AT|Europe/Vienna",
1867			"AU|Australia/Lord_Howe Antarctica/Macquarie Australia/Hobart Australia/Melbourne Australia/Sydney Australia/Broken_Hill Australia/Brisbane Australia/Lindeman Australia/Adelaide Australia/Darwin Australia/Perth Australia/Eucla",
1868			"AW|America/Curacao America/Aruba",
1869			"AX|Europe/Helsinki Europe/Mariehamn",
1870			"AZ|Asia/Baku",
1871			"BA|Europe/Belgrade Europe/Sarajevo",
1872			"BB|America/Barbados",
1873			"BD|Asia/Dhaka",
1874			"BE|Europe/Brussels",
1875			"BF|Africa/Abidjan Africa/Ouagadougou",
1876			"BG|Europe/Sofia",
1877			"BH|Asia/Qatar Asia/Bahrain",
1878			"BI|Africa/Maputo Africa/Bujumbura",
1879			"BJ|Africa/Lagos Africa/Porto-Novo",
1880			"BL|America/Port_of_Spain America/St_Barthelemy",
1881			"BM|Atlantic/Bermuda",
1882			"BN|Asia/Brunei",
1883			"BO|America/La_Paz",
1884			"BQ|America/Curacao America/Kralendijk",
1885			"BR|America/Noronha America/Belem America/Fortaleza America/Recife America/Araguaina America/Maceio America/Bahia America/Sao_Paulo America/Campo_Grande America/Cuiaba America/Santarem America/Porto_Velho America/Boa_Vista America/Manaus America/Eirunepe America/Rio_Branco",
1886			"BS|America/Nassau",
1887			"BT|Asia/Thimphu",
1888			"BW|Africa/Maputo Africa/Gaborone",
1889			"BY|Europe/Minsk",
1890			"BZ|America/Belize",
1891			"CA|America/St_Johns America/Halifax America/Glace_Bay America/Moncton America/Goose_Bay America/Blanc-Sablon America/Toronto America/Nipigon America/Thunder_Bay America/Iqaluit America/Pangnirtung America/Atikokan America/Winnipeg America/Rainy_River America/Resolute America/Rankin_Inlet America/Regina America/Swift_Current America/Edmonton America/Cambridge_Bay America/Yellowknife America/Inuvik America/Creston America/Dawson_Creek America/Fort_Nelson America/Whitehorse America/Dawson America/Vancouver",
1892			"CC|Indian/Cocos",
1893			"CD|Africa/Maputo Africa/Lagos Africa/Kinshasa Africa/Lubumbashi",
1894			"CF|Africa/Lagos Africa/Bangui",
1895			"CG|Africa/Lagos Africa/Brazzaville",
1896			"CH|Europe/Zurich",
1897			"CI|Africa/Abidjan",
1898			"CK|Pacific/Rarotonga",
1899			"CL|America/Santiago America/Punta_Arenas Pacific/Easter",
1900			"CM|Africa/Lagos Africa/Douala",
1901			"CN|Asia/Shanghai Asia/Urumqi",
1902			"CO|America/Bogota",
1903			"CR|America/Costa_Rica",
1904			"CU|America/Havana",
1905			"CV|Atlantic/Cape_Verde",
1906			"CW|America/Curacao",
1907			"CX|Indian/Christmas",
1908			"CY|Asia/Nicosia Asia/Famagusta",
1909			"CZ|Europe/Prague",
1910			"DE|Europe/Zurich Europe/Berlin Europe/Busingen",
1911			"DJ|Africa/Nairobi Africa/Djibouti",
1912			"DK|Europe/Copenhagen",
1913			"DM|America/Port_of_Spain America/Dominica",
1914			"DO|America/Santo_Domingo",
1915			"DZ|Africa/Algiers",
1916			"EC|America/Guayaquil Pacific/Galapagos",
1917			"EE|Europe/Tallinn",
1918			"EG|Africa/Cairo",
1919			"EH|Africa/El_Aaiun",
1920			"ER|Africa/Nairobi Africa/Asmara",
1921			"ES|Europe/Madrid Africa/Ceuta Atlantic/Canary",
1922			"ET|Africa/Nairobi Africa/Addis_Ababa",
1923			"FI|Europe/Helsinki",
1924			"FJ|Pacific/Fiji",
1925			"FK|Atlantic/Stanley",
1926			"FM|Pacific/Chuuk Pacific/Pohnpei Pacific/Kosrae",
1927			"FO|Atlantic/Faroe",
1928			"FR|Europe/Paris",
1929			"GA|Africa/Lagos Africa/Libreville",
1930			"GB|Europe/London",
1931			"GD|America/Port_of_Spain America/Grenada",
1932			"GE|Asia/Tbilisi",
1933			"GF|America/Cayenne",
1934			"GG|Europe/London Europe/Guernsey",
1935			"GH|Africa/Accra",
1936			"GI|Europe/Gibraltar",
1937			"GL|America/Nuuk America/Danmarkshavn America/Scoresbysund America/Thule",
1938			"GM|Africa/Abidjan Africa/Banjul",
1939			"GN|Africa/Abidjan Africa/Conakry",
1940			"GP|America/Port_of_Spain America/Guadeloupe",
1941			"GQ|Africa/Lagos Africa/Malabo",
1942			"GR|Europe/Athens",
1943			"GS|Atlantic/South_Georgia",
1944			"GT|America/Guatemala",
1945			"GU|Pacific/Guam",
1946			"GW|Africa/Bissau",
1947			"GY|America/Guyana",
1948			"HK|Asia/Hong_Kong",
1949			"HN|America/Tegucigalpa",
1950			"HR|Europe/Belgrade Europe/Zagreb",
1951			"HT|America/Port-au-Prince",
1952			"HU|Europe/Budapest",
1953			"ID|Asia/Jakarta Asia/Pontianak Asia/Makassar Asia/Jayapura",
1954			"IE|Europe/Dublin",
1955			"IL|Asia/Jerusalem",
1956			"IM|Europe/London Europe/Isle_of_Man",
1957			"IN|Asia/Kolkata",
1958			"IO|Indian/Chagos",
1959			"IQ|Asia/Baghdad",
1960			"IR|Asia/Tehran",
1961			"IS|Atlantic/Reykjavik",
1962			"IT|Europe/Rome",
1963			"JE|Europe/London Europe/Jersey",
1964			"JM|America/Jamaica",
1965			"JO|Asia/Amman",
1966			"JP|Asia/Tokyo",
1967			"KE|Africa/Nairobi",
1968			"KG|Asia/Bishkek",
1969			"KH|Asia/Bangkok Asia/Phnom_Penh",
1970			"KI|Pacific/Tarawa Pacific/Enderbury Pacific/Kiritimati",
1971			"KM|Africa/Nairobi Indian/Comoro",
1972			"KN|America/Port_of_Spain America/St_Kitts",
1973			"KP|Asia/Pyongyang",
1974			"KR|Asia/Seoul",
1975			"KW|Asia/Riyadh Asia/Kuwait",
1976			"KY|America/Panama America/Cayman",
1977			"KZ|Asia/Almaty Asia/Qyzylorda Asia/Qostanay Asia/Aqtobe Asia/Aqtau Asia/Atyrau Asia/Oral",
1978			"LA|Asia/Bangkok Asia/Vientiane",
1979			"LB|Asia/Beirut",
1980			"LC|America/Port_of_Spain America/St_Lucia",
1981			"LI|Europe/Zurich Europe/Vaduz",
1982			"LK|Asia/Colombo",
1983			"LR|Africa/Monrovia",
1984			"LS|Africa/Johannesburg Africa/Maseru",
1985			"LT|Europe/Vilnius",
1986			"LU|Europe/Luxembourg",
1987			"LV|Europe/Riga",
1988			"LY|Africa/Tripoli",
1989			"MA|Africa/Casablanca",
1990			"MC|Europe/Monaco",
1991			"MD|Europe/Chisinau",
1992			"ME|Europe/Belgrade Europe/Podgorica",
1993			"MF|America/Port_of_Spain America/Marigot",
1994			"MG|Africa/Nairobi Indian/Antananarivo",
1995			"MH|Pacific/Majuro Pacific/Kwajalein",
1996			"MK|Europe/Belgrade Europe/Skopje",
1997			"ML|Africa/Abidjan Africa/Bamako",
1998			"MM|Asia/Yangon",
1999			"MN|Asia/Ulaanbaatar Asia/Hovd Asia/Choibalsan",
2000			"MO|Asia/Macau",
2001			"MP|Pacific/Guam Pacific/Saipan",
2002			"MQ|America/Martinique",
2003			"MR|Africa/Abidjan Africa/Nouakchott",
2004			"MS|America/Port_of_Spain America/Montserrat",
2005			"MT|Europe/Malta",
2006			"MU|Indian/Mauritius",
2007			"MV|Indian/Maldives",
2008			"MW|Africa/Maputo Africa/Blantyre",
2009			"MX|America/Mexico_City America/Cancun America/Merida America/Monterrey America/Matamoros America/Mazatlan America/Chihuahua America/Ojinaga America/Hermosillo America/Tijuana America/Bahia_Banderas",
2010			"MY|Asia/Kuala_Lumpur Asia/Kuching",
2011			"MZ|Africa/Maputo",
2012			"NA|Africa/Windhoek",
2013			"NC|Pacific/Noumea",
2014			"NE|Africa/Lagos Africa/Niamey",
2015			"NF|Pacific/Norfolk",
2016			"NG|Africa/Lagos",
2017			"NI|America/Managua",
2018			"NL|Europe/Amsterdam",
2019			"NO|Europe/Oslo",
2020			"NP|Asia/Kathmandu",
2021			"NR|Pacific/Nauru",
2022			"NU|Pacific/Niue",
2023			"NZ|Pacific/Auckland Pacific/Chatham",
2024			"OM|Asia/Dubai Asia/Muscat",
2025			"PA|America/Panama",
2026			"PE|America/Lima",
2027			"PF|Pacific/Tahiti Pacific/Marquesas Pacific/Gambier",
2028			"PG|Pacific/Port_Moresby Pacific/Bougainville",
2029			"PH|Asia/Manila",
2030			"PK|Asia/Karachi",
2031			"PL|Europe/Warsaw",
2032			"PM|America/Miquelon",
2033			"PN|Pacific/Pitcairn",
2034			"PR|America/Puerto_Rico",
2035			"PS|Asia/Gaza Asia/Hebron",
2036			"PT|Europe/Lisbon Atlantic/Madeira Atlantic/Azores",
2037			"PW|Pacific/Palau",
2038			"PY|America/Asuncion",
2039			"QA|Asia/Qatar",
2040			"RE|Indian/Reunion",
2041			"RO|Europe/Bucharest",
2042			"RS|Europe/Belgrade",
2043			"RU|Europe/Kaliningrad Europe/Moscow Europe/Simferopol Europe/Kirov Europe/Volgograd Europe/Astrakhan Europe/Saratov Europe/Ulyanovsk Europe/Samara Asia/Yekaterinburg Asia/Omsk Asia/Novosibirsk Asia/Barnaul Asia/Tomsk Asia/Novokuznetsk Asia/Krasnoyarsk Asia/Irkutsk Asia/Chita Asia/Yakutsk Asia/Khandyga Asia/Vladivostok Asia/Ust-Nera Asia/Magadan Asia/Sakhalin Asia/Srednekolymsk Asia/Kamchatka Asia/Anadyr",
2044			"RW|Africa/Maputo Africa/Kigali",
2045			"SA|Asia/Riyadh",
2046			"SB|Pacific/Guadalcanal",
2047			"SC|Indian/Mahe",
2048			"SD|Africa/Khartoum",
2049			"SE|Europe/Stockholm",
2050			"SG|Asia/Singapore",
2051			"SH|Africa/Abidjan Atlantic/St_Helena",
2052			"SI|Europe/Belgrade Europe/Ljubljana",
2053			"SJ|Europe/Oslo Arctic/Longyearbyen",
2054			"SK|Europe/Prague Europe/Bratislava",
2055			"SL|Africa/Abidjan Africa/Freetown",
2056			"SM|Europe/Rome Europe/San_Marino",
2057			"SN|Africa/Abidjan Africa/Dakar",
2058			"SO|Africa/Nairobi Africa/Mogadishu",
2059			"SR|America/Paramaribo",
2060			"SS|Africa/Juba",
2061			"ST|Africa/Sao_Tome",
2062			"SV|America/El_Salvador",
2063			"SX|America/Curacao America/Lower_Princes",
2064			"SY|Asia/Damascus",
2065			"SZ|Africa/Johannesburg Africa/Mbabane",
2066			"TC|America/Grand_Turk",
2067			"TD|Africa/Ndjamena",
2068			"TF|Indian/Reunion Indian/Kerguelen",
2069			"TG|Africa/Abidjan Africa/Lome",
2070			"TH|Asia/Bangkok",
2071			"TJ|Asia/Dushanbe",
2072			"TK|Pacific/Fakaofo",
2073			"TL|Asia/Dili",
2074			"TM|Asia/Ashgabat",
2075			"TN|Africa/Tunis",
2076			"TO|Pacific/Tongatapu",
2077			"TR|Europe/Istanbul",
2078			"TT|America/Port_of_Spain",
2079			"TV|Pacific/Funafuti",
2080			"TW|Asia/Taipei",
2081			"TZ|Africa/Nairobi Africa/Dar_es_Salaam",
2082			"UA|Europe/Simferopol Europe/Kiev Europe/Uzhgorod Europe/Zaporozhye",
2083			"UG|Africa/Nairobi Africa/Kampala",
2084			"UM|Pacific/Pago_Pago Pacific/Wake Pacific/Honolulu Pacific/Midway",
2085			"US|America/New_York America/Detroit America/Kentucky/Louisville America/Kentucky/Monticello America/Indiana/Indianapolis America/Indiana/Vincennes America/Indiana/Winamac America/Indiana/Marengo America/Indiana/Petersburg America/Indiana/Vevay America/Chicago America/Indiana/Tell_City America/Indiana/Knox America/Menominee America/North_Dakota/Center America/North_Dakota/New_Salem America/North_Dakota/Beulah America/Denver America/Boise America/Phoenix America/Los_Angeles America/Anchorage America/Juneau America/Sitka America/Metlakatla America/Yakutat America/Nome America/Adak Pacific/Honolulu",
2086			"UY|America/Montevideo",
2087			"UZ|Asia/Samarkand Asia/Tashkent",
2088			"VA|Europe/Rome Europe/Vatican",
2089			"VC|America/Port_of_Spain America/St_Vincent",
2090			"VE|America/Caracas",
2091			"VG|America/Port_of_Spain America/Tortola",
2092			"VI|America/Port_of_Spain America/St_Thomas",
2093			"VN|Asia/Bangkok Asia/Ho_Chi_Minh",
2094			"VU|Pacific/Efate",
2095			"WF|Pacific/Wallis",
2096			"WS|Pacific/Apia",
2097			"YE|Asia/Riyadh Asia/Aden",
2098			"YT|Africa/Nairobi Indian/Mayotte",
2099			"ZA|Africa/Johannesburg",
2100			"ZM|Africa/Maputo Africa/Lusaka",
2101			"ZW|Africa/Maputo Africa/Harare"
2102		]
2103	});
2104
2105
2106	return moment;
2107}));
2108// file: /var/www/vhosts/codethislab.com/httpdocs/wp-content/plugins/ctl-wp-studio/classes/core/../../js/clipboard.min.js
2109/*!
2110 * clipboard.js v2.0.6
2111 * https://clipboardjs.com/
2112 *
2113 * Licensed MIT © Zeno Rocha
2114 */
2115!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.ClipboardJS=e():t.ClipboardJS=e()}(this,function(){return n={134:(t,e,n)=>{"use strict";n.d(e,{default:()=>r});var e=n(817),o=n.n(e);function i(t){return(i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function a(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}const c=function(){function e(t){!function(t){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this),this.resolveOptions(t),this.initSelection()}var t,n,r;return t=e,(n=[{key:"resolveOptions",value:function(){var t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};this.action=t.action,this.container=t.container,this.emitter=t.emitter,this.target=t.target,this.text=t.text,this.trigger=t.trigger,this.selectedText=""}},{key:"initSelection",value:function(){this.text?this.selectFake():this.target&&this.selectTarget()}},{key:"selectFake",value:function(){var t=this,e="rtl"==document.documentElement.getAttribute("dir");this.removeFake(),this.fakeHandlerCallback=function(){return t.removeFake()},this.fakeHandler=this.container.addEventListener("click",this.fakeHandlerCallback)||!0,this.fakeElem=document.createElement("textarea"),this.fakeElem.style.fontSize="12pt",this.fakeElem.style.border="0",this.fakeElem.style.padding="0",this.fakeElem.style.margin="0",this.fakeElem.style.position="absolute",this.fakeElem.style[e?"right":"left"]="-9999px";e=window.pageYOffset||document.documentElement.scrollTop;this.fakeElem.style.top="".concat(e,"px"),this.fakeElem.setAttribute("readonly",""),this.fakeElem.value=this.text,this.container.appendChild(this.fakeElem),this.selectedText=o()(this.fakeElem),this.copyText()}},{key:"removeFake",value:function(){this.fakeHandler&&(this.container.removeEventListener("click",this.fakeHandlerCallback),this.fakeHandler=null,this.fakeHandlerCallback=null),this.fakeElem&&(this.container.removeChild(this.fakeElem),this.fakeElem=null)}},{key:"selectTarget",value:function(){this.selectedText=o()(this.target),this.copyText()}},{key:"copyText",value:function(){var e;try{e=document.execCommand(this.action)}catch(t){e=!1}this.handleResult(e)}},{key:"handleResult",value:function(t){this.emitter.emit(t?"success":"error",{action:this.action,text:this.selectedText,trigger:this.trigger,clearSelection:this.clearSelection.bind(this)})}},{key:"clearSelection",value:function(){this.trigger&&this.trigger.focus(),document.activeElement.blur(),window.getSelection().removeAllRanges()}},{key:"destroy",value:function(){this.removeFake()}},{key:"action",set:function(){var t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:"copy";if(this._action=t,"copy"!==this._action&&"cut"!==this._action)throw new Error('Invalid "action" value, use either "copy" or "cut"')},get:function(){return this._action}},{key:"target",set:function(t){if(void 0!==t){if(!t||"object"!==i(t)||
vendor: 6,053 bytes, line 2115
21151!==t.nodeType)throw new Error('Invalid "target" value, use a valid Element');if("copy"===this.action&&t.hasAttribute("disabled"))throw new Error('Invalid "target" attribute. Please use "readonly" instead of "disabled" attribute');if("cut"===this.action&&(t.hasAttribute("readonly")||t.hasAttribute("disabled")))throw new Error('Invalid "target" attribute. You can\'t cut text from elements with "readonly" or "disabled" attributes');this._target=t}},get:function(){return this._target}}])&&a(t.prototype,n),r&&a(t,r),e}();var e=n(279),l=n.n(e),e=n(370),u=n.n(e);function s(t){return(s="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function f(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}function h(t,e){return(h=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}function d(n){var r=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch(t){return!1}}();return function(){var t,e=p(n);return t=r?(t=p(this).constructor,Reflect.construct(e,arguments,t)):e.apply(this,arguments),e=this,!(t=t)||"object"!==s(t)&&"function"!=typeof t?function(t){if(void 0!==t)return t;throw new ReferenceError("this hasn't been initialised - super() hasn't been called")}(e):t}}function p(t){return(p=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function y(t,e){t="data-clipboard-".concat(t);if(e.hasAttribute(t))return e.getAttribute(t)}const r=function(){!function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&h(t,e)}(o,l());var t,e,n,r=d(o);function o(t,e){var n;return function(t){if(!(t instanceof o))throw new TypeError("Cannot call a class as a function")}(this),(n=r.call(this)).resolveOptions(e),n.listenClick(t),n}return t=o,n=[{key:"isSupported",value:function(){var t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:["copy","cut"],t="string"==typeof t?[t]:t,e=!!document.queryCommandSupported;return t.forEach(function(t){e=e&&!!document.queryCommandSupported(t)}),e}}],(e=[{key:"resolveOptions",value:function(){var t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};this.action="function"==typeof t.action?t.action:this.defaultAction,this.target="function"==typeof t.target?t.target:this.defaultTarget,this.text="function"==typeof t.text?t.text:this.defaultText,this.container="object"===s(t.container)?t.container:document.body}},{key:"listenClick",value:function(t){var e=this;this.listener=u()(t,"click",function(t){return e.onClick(t)})}},{key:"onClick",value:function(t){t=t.delegateTarget||t.currentTarget;this.clipboardAction&&(this.clipboardAction=null),this.clipboardAction=new c({action:this.action(t),target:this.target(t),text:this.text(t),container:this.container,trigger:t,emitter:this})}},{key:"defaultAction",value:function(t){return y("action",t)}},{key:"defaultTarget",value:function(t){t=y("target",t);if(t)return document.querySelector(t)}},{key:"defaultText",value:function(t){return y("text",t)}},{key:"destroy",value:function(){this.listener.destroy(),this.clipboardAction&&(this.clipboardAction.destroy(),this.clipboardAction=null)}}])&&f(t.prototype,e),n&&f(t,n),o}()},828:t=>{var e;"undefined"==typeof Element||Element.prototype.matches||((e=Element.prototype).matches=e.matchesSelector||e.mozMatchesSelector||e.msMatchesSelector||e.oMatchesSelector||e.webkitMatchesSelector),t.exports=function(t,e){for(;t&&9!==t.nodeType;){if("function"==typeof t.matches&&t.matches(e))return t;t=t.parentNode}}},438:(t,e,n)=>{var a=n(828);function i(t,e,n,r,o){var i=function(e,n,t,r){return function(t){t.delegateTarget=a(t.target,n),t.delegateTarget&&r.call(e,t)}}.apply(this,arguments);return t.addEventListener(n,i,o),{destroy:function(){t.removeEventListener(n,i,o)}}}t.exports=function(t,e,n,r,o){return"function"==typeof t.addEventListener?i.apply(null,arguments):"function"==typeof n?i.bind(null,document).apply(null,arguments):("string"==typeof t&&(t=document.querySelectorAll(t)),Array.prototype.map.call(t,function(t){return i(t,e,n,r,o)}))}},879:(t,n)=>{n.node=function(t){return void 0!==t&&t instanceof HTMLElement&&1===t.nodeType},n.nodeList=function(t){var e=Object.prototype.toString.call(t);return void 0!==t&&("[object NodeList]"===e||"[object HTMLCollection]"===e)&&"length"in t&&(0===t.length||n.node(t[0]))},n.string=function(t){return"string"==typeof t||t instanceof String},n.fn=function(t){return"[object Function]"===Object.prototype.toString.call(t)}},370:(t,e,n)=>{var u=n(879),s=n(438);t.exports=function(t,e,n){if(!t&&!e&&!n)throw new Error("Missing required arguments");if(!u.string(e))throw new TypeError("Second argument must be a String");if(!u.fn(n))throw new TypeError("Third argument must be a Function");if(u.node(t))return c=e,l=n,(a=t).addEventListener(c,l),{destroy:function(){a.removeEventListener(c,l)}};if(u.nodeList(t))return r=t,o=e,i=n,Array.prototype.forEach.call(r,function(t){t.addEventListener(o,i)}),{destroy:function(){Array.prototype.forEach.call(r,function(t){t.removeEventListener(o,i)})}};if(u.string(t))return t=t,e=e,n=n,s(document.body,t,e,n);throw new TypeError("First argument must be a String, HTMLElement, HTMLCollection, or NodeList");var r,o,i,a,c,l}},817:t=>{t.exports=function(t){var e,n="SELECT"===t.nodeName?(t.focus(),t.value):"INPUT"===t.nodeName||"TEXTAREA"===t.nodeName?((e=t.hasAttribute("readonly"))||t.setAttribute("readonly",""),t.select(),t.setSelectionRange(0,t.value.length),e||t.removeAttribute("readonly"),t.value):(t.hasAttribute("contenteditable")&&t.focu
2115s(),n=window.getSelection(),(e=document.createRange()).selectNodeContents(t),n.removeAllRanges(),n.addRange(e),n.toString());return n}},279:t=>{function e(){}e.prototype={on:function(t,e,n){var r=this.e||(this.e={});return(r[t]||(r[t]=[])).push({fn:e,ctx:n}),this},once:function(t,e,n){var r=this;function o(){r.off(t,o),e.apply(n,arguments)}return o._=e,this.on(t,o,n)},emit:function(t){for(var e=[].slice.call(arguments,1),n=((this.e||(this.e={}))[t]||[]).slice(),r=0,o=n.length;r<o;r++)n[r].fn.apply(n[r].ctx,e);return this},off:function(t,e){var n=this.e||(this.e={}),r=n[t],o=[];if(r&&e)for(var i=0,a=r.length;i<a;i++)r[i].fn!==e&&r[i].fn._!==e&&o.push(r[i]);return o.length?n[t]=o:delete n[t],this}},t.exports=e,t.exports.TinyEmitter=e}},o={},r.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return r.d(e,{a:e}),e},r.d=(t,e)=>{for(var n in e)r.o(e,n)&&!r.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},r.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r(134).default;function r(t){if(o[t])return o[t].exports;var e=o[t]={exports:{}};return n[t](e,e.exports,r),e.exports}var n,o});
2116// file: /var/www/vhosts/codethislab.com/httpdocs/wp-content/plugins/ctl-wp-studio/classes/core/../../js/chroma.min.js
2117/**
2118 * chroma.js - JavaScript library for color conversions
2119 *
2120 * Copyright (c) 2011-2019, Gregor Aisch
2121 * All rights reserved.
2122 *
2123 * Redistribution and use in source and binary forms, with or without
2124 * modification, are permitted provided that the following conditions are met:
2125 *
2126 * 1. Redistributions of source code must retain the above copyright notice, this
2127 * list of conditions and the following disclaimer.
2128 *
2129 * 2. Redistributions in binary form must reproduce the above copyright notice,
2130 * this list of conditions and the following disclaimer in the documentation
2131 * and/or other materials provided with the distribution.
2132 *
2133 * 3. The name Gregor Aisch may not be used to endorse or promote products
2134 * derived from this software without specific prior written permission.
2135 *
2136 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
2137 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
2138 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
2139 * DISCLAIMED. IN NO EVENT SHALL GREGOR AISCH OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
2140 * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
2141 * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
2142 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
2143 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
2144 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
2145 * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
2146 *
2147 * -------------------------------------------------------
2148 *
2149 * chroma.js includes colors from colorbrewer2.org, which are released under
2150 * the following license:
2151 *
2152 * Copyright (c) 2002 Cynthia Brewer, Mark Harrower,
2153 * and The Pennsylvania State University.
2154 *
2155 * Licensed under the Apache License, Version 2.0 (the "License");
2156 * you may not use this file except in compliance with the License.
2157 * You may obtain a copy of the License at
2158 * http://www.apache.org/licenses/LICENSE-2.0
2159 *
2160 * Unless required by applicable law or agreed to in writing,
2161 * software distributed under the License is distributed on an
2162 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
2163 * either express or implied. See the License for the specific
2164 * language governing permissions and limitations under the License.
2165 *
2166 * ------------------------------------------------------
2167 *
2168 * Named colors are taken from X11 Color Names.
2169 * http://www.w3.org/TR/css3-color/#svg-color
2170 *
2171 * @preserve
2172 */
2173
2174!function(r,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(r="undefined"!=typeof globalThis?globalThis:r||self).chroma=e()}(this,(function(){"use strict";for(var r=function(r,e,n){return void 0===e&&(e=0),void 0===n&&(n=1),r<e?e:r>n?n:r},e=r,n={},t=0,a=["Boolean","Number","String","Function","Array","Date","RegExp","Undefined","Null"];t<a.length;t+=1){var f=a[t];n["[object "+f+"]"]=f.toLowerCase()}var o=function(r){return n[Object.prototype.toString.call(r)]||"object"},u=o,c=o,i=Math.PI,l={clip_rgb:function(r){r._clipped=!1,r._unclipped=r.slice(0);for(var n=0;n<=3;n++)n<3?((r[n]<0||r[n]>255)&&(r._clipped=!0),r[n]=e(r[n],0,255)):3===n&&(r[n]=e(r[n],0,1));return r},limit:r,type:o,unpack:function(r,e){return void 0===e&&(e=null),r.length>=3?Array.prototype.slice.call(r):"object"==u(r[0])&&e?e.split("").filter((function(e){return void 0!==r[0][e]})).map((function(e){return r[0][e]})):r[0]},last:function(r){if(r.length<2)return null;var e=r.length-1;return"string"==c(r[e])?r[e].toLowerCase():null},PI:i,TWOPI:2*i,PITHIRD:i/3,DEG2RAD:i/180,RAD2DEG:180/i},h={format:{},autodetect:[]},s=l.last,d=l.clip_rgb,b=l.type,p=h,g=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var n=this;if("object"===b(r[0])&&r[0].constructor&&r[0].constructor===this.constructor)return r[0];var t=s(r),a=!1;if(!t){a=!0,p.sorted||(p.autodetect=p.autodetect.sort((function(r,e){return e.p-r.p})),p.sorted=!0);for(var f=0,o=p.autodetect;f<o.length;f+=1){var u=o[f];if(t=u.test.apply(u,r))break}}if(!p.format[t])throw new Error("unknown format: "+r);var c=p.format[t].apply(null,a?r:r.slice(0,-1));n._rgb=d(c),3===n._rgb.length&&n._rgb.push(1)};g.prototype.toString=function(){return"function"==b(this.hex)?this.hex():"["+this._rgb.join(",")+"]"};var v=g,m=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(m.Color,[null].concat(r)))};m.Color=v,m.version="2.4.2";var y=m,k=l.unpack,w=Math.max,M=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var n=k(r,"rgb"),t=n[0],a=n[1],f=n[2],o=1-w(t/=255,w(a/=255,f/=255)),u=o<1?1/(1-o):0,c=(1-t-o)*u,i=(1-a-o)*u,l=(1-f-o)*u;return[c,i,l,o]},N=l.unpack,_=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var n=(r=N(r,"cmyk"))[0],t=r[1],a=r[2],f=r[3],o=r.length>4?r[4]:1;return 1===f?[0,0,0,o]:[n>=1?0:255*(1-n)*(1-f),t>=1?0:255*(1-t)*(1-f),a>=1?0:255*(1-a)*(1-f),o]},x=y,A=v,E=h,F=l.unpack,P=l.type,O=M;A.prototype.cmyk=function(){return O(this._rgb)},x.cmyk=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(A,[null].concat(r,["cmyk"])))},E.format.cmyk=_,E.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=F(r,"cmyk"),"array"===P(r)&&4===r.length)return"cmyk"}});var j=l.unpack,G=l.last,R=function(r){return Math.round(100*r)/100},q=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var n=j(r,"hsla"),t=G(r)||"lsa";return n[0]=R(n[0]||0),n[1]=R(100*n[1])+"%",n[2]=R(100*n[2])+"%","hsla"===t||n.length>3&&n[3]<1?(n[3]=n.length>3?n[3]:1,t="hsla"):n.length=3,t+"("+n.join(",")+")"},L=l.unpack,I=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var n=(r=L(r,"rgba"))[0],t=r[1],a=r[2];n/=255,t/=255,a/=255;var f,o,u=Math.min(n,t,a),c=Math.max(n,t,a),i=(c+u)/2;return c===u?(f=0,o=Number.NaN):f=i<.5?(c-u)/(c+u):(c-u)/(2-c-u),n==c?o=(t-a)/(c-u):t==c?o=2+(a-n)/(c-u):a==c&&(o=4+(n-t)/(c-u)),(o*=60)<0&&(o+=360),r.length>3&&void 0!==r[3]?[o,f,i,r[3]]:[o,f,i]},B=l.unpack,C=l.last,D=q,Y=I,S=Math.round,T=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var n=B(r,"rgba"),t=C(r)||"rgb";return"hsl"==t.substr(0,3)?D(Y(n),t):(n[0]=S(n[0]),n[1]=S(n[1]),n[2]=S(n[2]),("rgba"===t||n.length>3&&n[3]<1)&&(n[3]=n.length>3?n[3]:1,t="rgba"),t+"("+n.slice(0,"rgb"===t?3:4).join(",")+")")},$=l.unpack,z=Math.round,X=function(){for(var r,e=[],n=arguments.length;n--;)e[n]=arguments[n];var t,a,f,o=(e=$(e,"hsl"))[0],u=e[1],c=e[2];if(0===u)t=a=f=255*c;else{var i=[0,0,0],l=[0,0,0],h=c<.5?c*(1+u):c+u-c*u,s=2*c-h,d=o/360;i[0]=d+1/3,i[1]=d,i[2]=d-1/3;for(var b=0;b<3;b++)i[b]<0&&(i[b]+=1),i[b]>1&&(i[b]-=1),6*i[b]<1?l[b]=s+6*(h-s)*i[b]:2*i[b]<1?l[b]=h:3*i[b]<2?l[b]=s+(h-s)*(2/3-i[b])*6:l[b]=s;t=(r=[z(255*l[0]),z(255*l[1]),z(255*l[2])])[0],a=r[1],f=r[2]}return e.length>3?[t,a,f,e[3]]:[t,a,f,1]},U=X,V=h,W=/^rgb\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*\)$/,K=/^rgba\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*,\s*([01]|[01]?\.\d+)\)$/,Z=/^rgb\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,H=/^rgba\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,J=/^hsl\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,Q=/^hsla\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,rr=Math.round,er=function(r){var e;if(r=r.toLowerCase().trim(),V.format.named)try{return V.format.named(r)}catch(r){}if(e=r.match(W)){for(var n=e.slice(1,4),t=0;t<3;t++)n[t]=+n[t];return n[3]=1,n}if(e=r.match(K)){for(var a=e.slice(1,5),f=0;f<4;f++)a[f]=+a[f];return a}if(e=r.match(Z)){for(var o=e.slice(1,4),u=0;u<3;u++)o[u]=rr(2.55*o[u]);return o[3]=1,o}if(e=r.match(H)){for(var c=e.slice(1,5),i=0;i<3;i++)c[i]=rr(2.55*c[i]);return c[3]=+c[3],c}if(e=r.match(J)){var l=e.slice(1,4);l[1]*=.01,l[2]*=.01;var h=U(l);return h[3]=1,h}if(e=r.match(Q)){var s=e.slice(1,4);s[1]*=.01,s[2]*=.01;var d=U(s);return d[3]=+e[4],d}};er.test=function(r){return W.test(r)||K.test(r)||Z.test(r)||H.test(r)||J.test(r)||Q.test(r)};var nr=y,tr=v,ar=h,fr=l.type,or=T,ur=er;tr.prototype.css=function(r){return or(this._rgb,r)},nr.css=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(tr,[null].concat(r,["css"])))},ar.format.css=ur,ar.autodetect.push({p:5,test:function(r){for(var e=[],n=arguments.length-1;n-- >0;)e[n]=arguments[n+1];if(!e.length&&"string"===fr(r)&&ur.test(r))return"css"}});var cr=v,ir=y,lr=l.unpack;h.format.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var n=lr(r,"rgba");return n[0]*=255,n[1]*=255,n[2]*=255,n},ir.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(cr,[null].concat(r,["gl"])))},cr.prototype.gl=function(){var r=this._rgb;return[r[0]/255,r[1]/255,r[2]/255,r[3]]};var hr=l.unpack,sr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var n,t=hr(r,"rgb"),a=t[0],f=t[1],o=t[2],u=Math.min(a,f,o),c=Math.max(a,f,o),i=c-u,l=100*i/255,h=u/(255-i)*100;return 0===i?n=Number.NaN:(a===c&&(n=(f-o)/i),f===c&&(n=2+(o-a)/i),o===c&&(n=4+(a-f)/i),(n*=60)<0&&(n+=360)),[n,l,h]},dr=l.unpack,br=Math.floor,pr=function(){for(var r,e,n,t,a,f,o=[],u=arguments.length;u--;)o[u]=arguments[u];var c,i,l,h=(o=dr(o,"hcg"))[0],s=o[1],d=o[2];d*=255;var b=255*s;if(0===s)c=i=l=d;else{360===h&&(h=0),h>360&&(h-=360),h<0&&(h+=360);var p=br(h/=60),g=h-p,v=d*(1-s),m=v+b*(1-g),y=v+b*g,k=v+b;switch(p){case 0:c=(r=[k,y,v])[0],i=r[1],l=r[2];break;case 1:c=(e=[m,k,v])[0],i=e[1],l=e[2];break;case 2:c=(n=[v,k,y])[0],i=n[1],l=n[2];break;case 3:c=(t=[v,m,k])[0],i=t[1],l=t[2];break;case 4:c=(a=[y,v,k])[0],i=a[1],l=a[2];break;case 5:c=(f=[k,v,m])[0],i=f[1],l=f[2]}}return[c,i,l,o.length>3?o[3]:1]},gr=l.unpack,vr=l.type,mr=y,yr=v,kr=h,wr=sr;yr.prototype.hcg=function(){return wr(this._rgb)},mr.hcg=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(yr,[null].concat(r,["hcg"])))},kr.format.hcg=pr,kr.autodetect.push({p:1,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=gr(r,"hcg"),"array"===vr(r)&&3===r.length)return"hcg"}});var Mr=l.unpack,Nr=l.last,_r=Math.round,xr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var n=Mr(r,"rgba"),t=n[0],a=n[1],f=n[2],o=n[3],u=Nr(r)||"auto";
vendor: 3,477 bytes, line 2174
2174void 0===o&&(o=1),"auto"===u&&(u=o<1?"rgba":"rgb");var c=(t=_r(t))<<16|(a=_r(a))<<8|(f=_r(f)),i="000000"+c.toString(16);i=i.substr(i.length-6);var l="0"+_r(255*o).toString(16);switch(l=l.substr(l.length-2),u.toLowerCase()){case"rgba":return"#"+i+l;case"argb":return"#"+l+i;default:return"#"+i}},Ar=/^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/,Er=/^#?([A-Fa-f0-9]{8}|[A-Fa-f0-9]{4})$/,Fr=function(r){if(r.match(Ar)){4!==r.length&&7!==r.length||(r=r.substr(1)),3===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]);var e=parseInt(r,16);return[e>>16,e>>8&255,255&e,1]}if(r.match(Er)){5!==r.length&&9!==r.length||(r=r.substr(1)),4===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]+r[3]+r[3]);var n=parseInt(r,16);return[n>>24&255,n>>16&255,n>>8&255,Math.round((255&n)/255*100)/100]}throw new Error("unknown hex color: "+r)},Pr=y,Or=v,jr=l.type,Gr=h,Rr=xr;Or.prototype.hex=function(r){return Rr(this._rgb,r)},Pr.hex=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Or,[null].concat(r,["hex"])))},Gr.format.hex=Fr,Gr.autodetect.push({p:4,test:function(r){for(var e=[],n=arguments.length-1;n-- >0;)e[n]=arguments[n+1];if(!e.length&&"string"===jr(r)&&[3,4,5,6,7,8,9].indexOf(r.length)>=0)return"hex"}});var qr=l.unpack,Lr=l.TWOPI,Ir=Math.min,Br=Math.sqrt,Cr=Math.acos,Dr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var n,t=qr(r,"rgb"),a=t[0],f=t[1],o=t[2],u=Ir(a/=255,f/=255,o/=255),c=(a+f+o)/3,i=c>0?1-u/c:0;return 0===i?n=NaN:(n=(a-f+(a-o))/2,n/=Br((a-f)*(a-f)+(a-o)*(f-o)),n=Cr(n),o>f&&(n=Lr-n),n/=Lr),[360*n,i,c]},Yr=l.unpack,Sr=l.limit,Tr=l.TWOPI,$r=l.PITHIRD,zr=Math.cos,Xr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var n,t,a,f=(r=Yr(r,"hsi"))[0],o=r[1],u=r[2];return isNaN(f)&&(f=0),isNaN(o)&&(o=0),f>360&&(f-=360),f<0&&(f+=360),(f/=360)<1/3?t=1-((a=(1-o)/3)+(n=(1+o*zr(Tr*f)/zr($r-Tr*f))/3)):f<2/3?a=1-((n=(1-o)/3)+(t=(1+o*zr(Tr*(f-=1/3))/zr($r-Tr*f))/3)):n=1-((t=(1-o)/3)+(a=(1+o*zr(Tr*(f-=2/3))/zr($r-Tr*f))/3)),[255*(n=Sr(u*n*3)),255*(t=Sr(u*t*3)),255*(a=Sr(u*a*3)),r.length>3?r[3]:1]},Ur=l.unpack,Vr=l.type,Wr=y,Kr=v,Zr=h,Hr=Dr;Kr.prototype.hsi=function(){return Hr(this._rgb)},Wr.hsi=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Kr,[null].concat(r,["hsi"])))},Zr.format.hsi=Xr,Zr.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ur(r,"hsi"),"array"===Vr(r)&&3===r.length)return"hsi"}});var Jr=l.unpack,Qr=l.type,re=y,ee=v,ne=h,te=I;ee.prototype.hsl=function(){return te(this._rgb)},re.hsl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(ee,[null].concat(r,["hsl"])))},ne.format.hsl=X,ne.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Jr(r,"hsl"),"array"===Qr(r)&&3===r.length)return"hsl"}});var ae=l.unpack,fe=Math.min,oe=Math.max,ue=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var n,t,a,f=(r=ae(r,"rgb"))[0],o=r[1],u=r[2],c=fe(f,o,u),i=oe(f,o,u),l=i-c;return a=i/255,0===i?(n=Number.NaN,t=0):(t=l/i,f===i&&(n=(o-u)/l),o===i&&(n=2+(u-f)/l),u===i&&(n=4+(f-o)/l),(n*=60)<0&&(n+=360)),[n,t,a]},ce=l.unpack,ie=Math.floor,le=function(){for(var r,e,n,t,a,f,o=[],u=arguments.length;u--;)o[u]=arguments[u];var c,i,l,h=(o=ce(o,"hsv"))[0],s=o[1],d=o[2];if(d*=255,0===s)c=i=l=d;else{360===h&&(h=0),h>360&&(h-=360),h<0&&(h+=360);
2174var b=ie(h/=60),p=h-b,g=d*(1-s),v=d*(1-s*p),m=d*(1-s*(1-p));switch(b){case 0:c=(r=[d,m,g])[0],i=r[1],l=r[2];break;case 1:c=(e=[v,d,g])[0],i=e[1],l=e[2];break;case 2:c=(n=[g,d,m])[0],i=n[1],l=n[2];break;case 3:c=(t=[g,v,d])[0],i=t[1],l=t[2];break;case 4:c=(a=[m,g,d])[0],i=a[1],l=a[2];break;case 5:c=(f=[d,g,v])[0],i=f[1],l=f[2]}}return[c,i,l,o.length>3?o[3]:1]},he=l.unpack,se=l.type,de=y,be=v,pe=h,ge=ue;be.prototype.hsv=function(){return ge(this._rgb)},de.hsv=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(be,[null].concat(r,["hsv"])))},pe.format.hsv=le,pe.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=he(r,"hsv"),"array"===se(r)&&3===r.length)return"hsv"}});var ve={Kn:18,Xn:.95047,Yn:1,Zn:1.08883,t0:.137931034,t1:.206896552,t2:.12841855,t3:.008856452},me=ve,ye=l.unpack,ke=Math.pow,we=function(r){return(r/=255)<=.04045?r/12.92:ke((r+.055)/1.055,2.4)},Me=function(r){return r>me.t3?ke(r,1/3):r/me.t2+me.t0},Ne=function(r,e,n){return r=we(r),e=we(e),n=we(n),[Me((.4124564*r+.3575761*e+.1804375*n)/me.Xn),Me((.2126729*r+.7151522*e+.072175*n)/me.Yn),Me((.0193339*r+.119192*e+.9503041*n)/me.Zn)]},_e=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var n=ye(r,"rgb"),t=n[0],a=n[1],f=n[2],o=Ne(t,a,f),u=o[0],c=o[1],i=o[2],l=116*c-16;return[l<0?0:l,500*(u-c),200*(c-i)]},xe=ve,Ae=l.unpack,Ee=Math.pow,Fe=function(r){return 255*(r<=.00304?12.92*r:1.055*Ee(r,1/2.4)-.055)},Pe=function(r){return r>xe.t1?r*r*r:xe.t2*(r-xe.t0)},Oe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var n,t,a,f=(r=Ae(r,"lab"))[0],o=r[1],u=r[2];return t=(f+16)/116,n=isNaN(o)?t:t+o/500,a=isNaN(u)?t:t-u/200,t=xe.Yn*Pe(t),n=xe.Xn*Pe(n),a=xe.Zn*Pe(a),[Fe(3.2404542*n-1.5371385*t-.4985314*a),Fe(-.969266*n+1.8760108*t+.041556*a),Fe(.0556434*n-.2040259*t+1.0572252*a),r.length>3?r[3]:1]},je=l.unpack,Ge=l.type,Re=y,qe=v,Le=h,Ie=_e;qe.prototype.lab=function(){return Ie(this._rgb)},Re.lab=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(qe,[null].concat(r,["lab"])))},Le.format.lab=Oe,Le.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=je(r,"lab"),"array"===Ge(r)&&3===r.length)return"lab"}});var Be=l.unpack,Ce=l.RAD2DEG,De=Math.sqrt,Ye=Math.atan2,Se=Math.round,Te=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var n=Be(r,"lab"),t=n[0],a=n[1],f=n[2],o=De(a*a+f*f),u=(Ye(f,a)*Ce+360)%360;return 0===Se(1e4*o)&&(u=Number.NaN),[t,o,u]},$e=l.unpack,ze=_e,Xe=Te,Ue=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var n=$e(r,"rgb"),t=n[0],a=n[1],f=n[2],o=ze(t,a,f),u=o[0],c=o[1],i=o[2];return Xe(u,c,i)},Ve=l.unpack,We=l.DEG2RAD,Ke=Math.sin,Ze=Math.cos,He=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var n=Ve(r,"lch"),t=n[0],a=n[1],f=n[2];return isNaN(f)&&(f=0),[t,Ze(f*=We)*a,Ke(f)*a]},Je=l.unpack,Qe=He,rn=Oe,en=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var n=(r=Je(r,"lch"))[0],t=r[1],a=r[2],f=Qe(n,t,a),o=f[0],u=f[1],c=f[2],i=rn(o,u,c),l=i[0],h=i[1],s=i[2];return[l,h,s,r.length>3?r[3]:1]},nn=l.unpack,tn=en,an=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var n=nn(r,"hcl").reverse();return tn.apply(void 0,n)},fn=l.unpack,on=l.type,un=y,cn=v,ln=h,hn=Ue;cn.prototype.lch=function(){return hn(this._rgb)},cn.prototype.hcl=function(){return hn(this._rgb).reverse()},un.lch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(cn,[null].concat(r,["lch"])))},un.hcl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(cn,[null].concat(r,["hcl"])))},ln.format.lch=en,ln.format.hcl=an,["lch","hcl"].forEach((function(r){return ln.autodetect.push({p:2,test:function(){for(var e=[],n=arguments.length;n--;)e[n]=arguments[n];if(e=fn(e,r),"array"===on(e)&&3===e.length)return r}})}));var sn={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflower:"#6495ed",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",laserlemon:"#ffff54",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrod:"#fafad2",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",maroon2:"#7f0000",maroon3:"#b03060",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",purple2:"#7f007f",purple3:"#a020f0",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",s
2174almon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},dn=h,bn=l.type,pn=sn,gn=Fr,vn=xr;v.prototype.name=function(){for(var r=vn(this._rgb,"rgb"),e=0,n=Object.keys(pn);e<n.length;e+=1){var t=n[e];if(pn[t]===r)return t.toLowerCase()}return r},dn.format.named=function(r){if(r=r.toLowerCase(),pn[r])return gn(pn[r]);throw new Error("unknown color name: "+r)},dn.autodetect.push({p:5,test:function(r){for(var e=[],n=arguments.length-1;n-- >0;)e[n]=arguments[n+1];if(!e.length&&"string"===bn(r)&&pn[r.toLowerCase()])return"named"}});var mn=l.unpack,yn=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var n=mn(r,"rgb"),t=n[0],a=n[1],f=n[2];return(t<<16)+(a<<8)+f},kn=l.type,wn=function(r){if("number"==kn(r)&&r>=0&&r<=16777215)return[r>>16,r>>8&255,255&r,1];throw new Error("unknown num color: "+r)},Mn=y,Nn=v,_n=h,xn=l.type,An=yn;Nn.prototype.num=function(){return An(this._rgb)},Mn.num=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Nn,[null].concat(r,["num"])))},_n.format.num=wn,_n.autodetect.push({p:5,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(1===r.length&&"number"===xn(r[0])&&r[0]>=0&&r[0]<=16777215)return"num"}});var En=y,Fn=v,Pn=h,On=l.unpack,jn=l.type,Gn=Math.round;Fn.prototype.rgb=function(r){return void 0===r&&(r=!0),!1===r?this._rgb.slice(0,3):this._rgb.slice(0,3).map(Gn)},Fn.prototype.rgba=function(r){return void 0===r&&(r=!0),this._rgb.slice(0,4).map((function(e,n){return n<3?!1===r?e:Gn(e):e}))}
2174,En.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Fn,[null].concat(r,["rgb"])))},Pn.format.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var n=On(r,"rgba");return void 0===n[3]&&(n[3]=1),n},Pn.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=On(r,"rgba"),"array"===jn(r)&&(3===r.length||4===r.length&&"number"==jn(r[3])&&r[3]>=0&&r[3]<=1))return"rgb"}});var Rn=Math.log,qn=function(r){var e,n,t,a=r/100;return a<66?(e=255,n=a<6?0:-155.25485562709179-.44596950469579133*(n=a-2)+104.49216199393888*Rn(n),t=a<20?0:.8274096064007395*(t=a-10)-254.76935184120902+115.67994401066147*Rn(t)):(e=351.97690566805693+.114206453784165*(e=a-55)-40.25366309332127*Rn(e),n=325.4494125711974+.07943456536662342*(n=a-50)-28.0852963507957*Rn(n),t=255),[e,n,t,1]},Ln=qn,In=l.unpack,Bn=Math.round,Cn=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];for(var n,t=In(r,"rgb"),a=t[0],f=t[2],o=1e3,u=4e4,c=.4;u-o>c;){var i=Ln(n=.5*(u+o));i[2]/i[0]>=f/a?u=n:o=n}return Bn(n)},Dn=y,Yn=v,Sn=h,Tn=Cn;Yn.prototype.temp=Yn.prototype.kelvin=Yn.prototype.temperature=function(){return Tn(this._rgb)},Dn.temp=Dn.kelvin=Dn.temperature=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Yn,[null].concat(r,["temp"])))},Sn.format.temp=Sn.format.kelvin=Sn.format.temperature=qn;var $n=l.unpack,zn=Math.cbrt,Xn=Math.pow,Un=Math.sign,Vn=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var n=$n(r,"rgb"),t=n[0],a=n[1],f=n[2],o=[Wn(t/255),Wn(a/255),Wn(f/255)],u=o[0],c=o[1],i=o[2],l=zn(.4122214708*u+.5363325363*c+.0514459929*i),h=zn(.2119034982*u+.6806995451*c+.1073969566*i),s=zn(.0883024619*u+.2817188376*c+.6299787005*i);return[.2104542553*l+.793617785*h-.0040720468*s,1.9779984951*l-2.428592205*h+.4505937099*s,.0259040371*l+.7827717662*h-.808675766*s]};function Wn(r){var e=Math.abs(r);return e<.04045?r/12.92:(Un(r)||1)*Xn((e+.055)/1.055,2.4)}var Kn=l.unpack,Zn=Math.pow,Hn=Math.sign,Jn=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var n=(r=Kn(r,"lab"))[0],t=r[1],a=r[2],f=Zn(n+.3963377774*t+.2158037573*a,3),o=Zn(n-.1055613458*t-.0638541728*a,3),u=Zn(n-.0894841775*t-1.291485548*a,3);return[255*Qn(4.0767416621*f-3.3077115913*o+.2309699292*u),255*Qn(-1.2684380046*f+2.6097574011*o-.3413193965*u),255*Qn(-.0041960863*f-.7034186147*o+1.707614701*u),r.length>3?r[3]:1]};function Qn(r){var e=Math.abs(r);return e>.0031308?(Hn(r)||1)*(1.055*Zn(e,1/2.4)-.055):12.92*r}var rt=l.unpack,et=l.type,nt=y,tt=v,at=h,ft=Vn;tt.prototype.oklab=function(){return ft(this._rgb)},nt.oklab=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(tt,[null].concat(r,["oklab"])))},at.format.oklab=Jn,at.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=rt(r,"oklab"),"array"===et(r)&&3===r.length)return"oklab"}});var ot=l.unpack,ut=Vn,ct=Te,it=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var n=ot(r,"rgb"),t=n[0],a=n[1],f=n[2],o=ut(t,a,f),u=o[0],c=o[1],i=o[2];return ct(u,c,i)},lt=l.unpack,ht=He,st=Jn,dt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var n=(r=lt(r,"lch"))[0],t=r[1],a=r[2],f=ht(n,t,a),o=f[0],u=f[1],c=f[2],i=st(o,u,c),l=i[0],h=i[1],s=i[2];return[l,h,s,r.length>3?r[3]:1]},bt=l.unpack,pt=l.type,gt=y,vt=v,mt=h,yt=it;vt.prototype.oklch=function(){return yt(this._rgb)},gt.oklch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(vt,[null].concat(r,["oklch"])))},mt.format.oklch=dt,mt.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=bt(r,"oklch"),"array"===pt(r)&&3===r.length)return"oklch"}});var kt=v,wt=l.type;kt.prototype.alpha=function(r,e){return void 0===e&&(e=!1),void 0!==r&&"number"===wt(r)?e?(this._rgb[3]=r,this):new kt([this._rgb[0],this._rgb[1],this._rgb[2],r],"rgb"):this._rgb[3]},v.prototype.clipped=function(){return this._rgb._clipped||!1};var Mt=v,Nt=ve;Mt.prototype.darken=function(r){void 0===r&&(r=1);var e=this.lab();return e[0]-=Nt.Kn*r,new Mt(e,"lab").alpha(this.alpha(),!0)},Mt.prototype.brighten=function(r){return void 0===r&&(r=1),this.darken(-r)},Mt.prototype.darker=Mt.prototype.darken,Mt.prototype.brighter=Mt.prototype.brighten,v.prototype.get=function(r){var e=r.split("."),n=e[0],t=e[1],a=this[n]();if(t){var f=n.indexOf(t)-("ok"===n.substr(0,2)?2:0);if(f>-1)return a[f];throw new Error("unknown channel "+t+" in mode "+n)}return a};var _t=v,xt=l.type,At=Math.pow;_t.prototype.luminance=function(r){if(void 0!==r&&"number"===xt(r)){if(0===r)return new _t([0,0,0,this._rgb[3]],"rgb");if(1===r)return new _t([255,255,255,this._rgb[3]],"rgb");var e=this.luminance(),n=20,t=function(e,a){var f=e.interpolate(a,.5,"rgb"),o=f.luminance();return Math.abs(r-o)<1e-7||!n--?f:o>r?t(e,f):t(f,a)},a=(e>
vendor: 17,908 bytes, line 2174
2174r?t(new _t([0,0,0]),this):t(this,new _t([255,255,255]))).rgb();return new _t(a.concat([this._rgb[3]]))}return Et.apply(void 0,this._rgb.slice(0,3))};var Et=function(r,e,n){return.2126*(r=Ft(r))+.7152*(e=Ft(e))+.0722*(n=Ft(n))},Ft=function(r){return(r/=255)<=.03928?r/12.92:At((r+.055)/1.055,2.4)},Pt={},Ot=v,jt=l.type,Gt=Pt,Rt=function(r,e,n){void 0===n&&(n=.5);for(var t=[],a=arguments.length-3;a-- >0;)t[a]=arguments[a+3];var f=t[0]||"lrgb";if(Gt[f]||t.length||(f=Object.keys(Gt)[0]),!Gt[f])throw new Error("interpolation mode "+f+" is not defined");return"object"!==jt(r)&&(r=new Ot(r)),"object"!==jt(e)&&(e=new Ot(e)),Gt[f](r,e,n).alpha(r.alpha()+n*(e.alpha()-r.alpha()))},qt=v,Lt=Rt;qt.prototype.mix=qt.prototype.interpolate=function(r,e){void 0===e&&(e=.5);for(var n=[],t=arguments.length-2;t-- >0;)n[t]=arguments[t+2];return Lt.apply(void 0,[this,r,e].concat(n))};var It=v;It.prototype.premultiply=function(r){void 0===r&&(r=!1);var e=this._rgb,n=e[3];return r?(this._rgb=[e[0]*n,e[1]*n,e[2]*n,n],this):new It([e[0]*n,e[1]*n,e[2]*n,n],"rgb")};var Bt=v,Ct=ve;Bt.prototype.saturate=function(r){void 0===r&&(r=1);var e=this.lch();return e[1]+=Ct.Kn*r,e[1]<0&&(e[1]=0),new Bt(e,"lch").alpha(this.alpha(),!0)},Bt.prototype.desaturate=function(r){return void 0===r&&(r=1),this.saturate(-r)};var Dt=v,Yt=l.type;Dt.prototype.set=function(r,e,n){void 0===n&&(n=!1);var t=r.split("."),a=t[0],f=t[1],o=this[a]();if(f){var u=a.indexOf(f)-("ok"===a.substr(0,2)?2:0);if(u>-1){if("string"==Yt(e))switch(e.charAt(0)){case"+":case"-":o[u]+=+e;break;case"*":o[u]*=+e.substr(1);break;case"/":o[u]/=+e.substr(1);break;default:o[u]=+e}else{if("number"!==Yt(e))throw new Error("unsupported value for Color.set");o[u]=e}var c=new Dt(o,a);return n?(this._rgb=c._rgb,this):c}throw new Error("unknown channel "+f+" in mode "+a)}return o};var St=v;Pt.rgb=function(r,e,n){var t=r._rgb,a=e._rgb;return new St(t[0]+n*(a[0]-t[0]),t[1]+n*(a[1]-t[1]),t[2]+n*(a[2]-t[2]),"rgb")};var Tt=v,$t=Math.sqrt,zt=Math.pow;Pt.lrgb=function(r,e,n){var t=r._rgb,a=t[0],f=t[1],o=t[2],u=e._rgb,c=u[0],i=u[1],l=u[2];return new Tt($t(zt(a,2)*(1-n)+zt(c,2)*n),$t(zt(f,2)*(1-n)+zt(i,2)*n),$t(zt(o,2)*(1-n)+zt(l,2)*n),"rgb")};var Xt=v;Pt.lab=function(r,e,n){var t=r.lab(),a=e.lab();return new Xt(t[0]+n*(a[0]-t[0]),t[1]+n*(a[1]-t[1]),t[2]+n*(a[2]-t[2]),"lab")};var Ut=v,Vt=function(r,e,n,t){var a,f,o,u,c,i,l,h,s,d,b,p,g;return"hsl"===t?(o=r.hsl(),u=e.hsl()):"hsv"===t?(o=r.hsv(),u=e.hsv()):"hcg"===t?(o=r.hcg(),u=e.hcg()):"hsi"===t?(o=r.hsi(),u=e.hsi()):"lch"===t||"hcl"===t?(t="hcl",o=r.hcl(),u=e.hcl()):"oklch"===t&&(o=r.oklch().reverse(),u=e.oklch().reverse()),"h"!==t.substr(0,1)&&"oklch"!==t||(c=(a=o)[0],l=a[1],s=a[2],i=(f=u)[0],h=f[1],d=f[2]),isNaN(c)||isNaN(i)?isNaN(c)?isNaN(i)?p=Number.NaN:(p=i,1!=s&&0!=s||"hsv"==t||(b=h)):(p=c,1!=d&&0!=d||"hsv"==t||(b=l)):p=c+n*(i>c&&i-c>180?i-(c+360):i<c&&c-i>180?i+360-c:i-c),void 0===b&&(b=l+n*(h-l)),g=s+n*(d-s),new Ut("oklch"===t?[g,b,p]:[p,b,g],t)},Wt=Vt,Kt=function(r,e,n){return Wt(r,e,n,"lch")};Pt.lch=Kt,Pt.hcl=Kt;var Zt=v;Pt.num=function(r,e,n){var t=r.num(),a=e.num();return new Zt(t+n*(a-t),"num")};var Ht=Vt;Pt.hcg=function(r,e,n){return Ht(r,e,n,"hcg")};var Jt=Vt;Pt.hsi=function(r,e,n){return Jt(r,e,n,"hsi")};var Qt=Vt;Pt.hsl=function(r,e,n){return Qt(r,e,n,"hsl")};var ra=Vt;Pt.hsv=function(r,e,n){return ra(r,e,n,"hsv")};var ea=v;Pt.oklab=function(r,e,n){var t=r.oklab(),a=e.oklab();return new ea(t[0]+n*(a[0]-t[0]),t[1]+n*(a[1]-t[1]),t[2]+n*(a[2]-t[2]),"oklab")};var na=Vt;Pt.oklch=function(r,e,n){return na(r,e,n,"oklch")};var ta=v,aa=l.clip_rgb,fa=Math.pow,oa=Math.sqrt,ua=Math.PI,ca=Math.cos,ia=Math.sin,la=Math.atan2,ha=function(r,e){for(var n=r.length,t=[0,0,0,0],a=0;a<r.length;a++){var f=r[a],o=e[a]/n,u=f._rgb;t[0]+=fa(u[0],2)*o,t[1]+=fa(u[1],2)*o,t[2]+=fa(u[2],2)*o,t[3]+=u[3]*o}return t[0]=oa(t[0]),t[1]=oa(t[1]),t[2]=oa(t[2]),t[3]>.9999999&&(t[3]=1),new ta(aa(t))},sa=y,da=l.type,ba=Math.pow,pa=function(r){var e="rgb",n=sa("#ccc"),t=0,a=[0,1],f=[],o=[0,0],u=!1,c=[],i=!1,l=0,h=1,s=!1,d={},b=!0,p=1,g=function(r){if((r=r||["#fff","#000"])&&"string"===da(r)&&sa.brewer&&sa.brewer[r.toLowerCase()]&&(r=sa.brewer[r.toLowerCase()]),"array"===da(r)){1===r.length&&(r=[r[0],r[0]]),r=r.slice(0);for(var e=0;e<r.length;e++)r[e]=sa(r[e]);f.length=0;for(var n=0;n<r.length;n++)f.push(n/(r.length-1))}return k(),c=r},v=function(r){return r},m=function(r){return r},y=function(r,t){var a,i;if(null==t&&(t=!1),isNaN(r)||null===r)return n;if(t)i=r;else if(u&&u.length>2){var s=function(r){if(null!=u){for(var e=u.length-1,n=0;n<e&&r>=u[n];)n++;return n-1}return 0}(r);i=s/(u.length-2)}else i=h!==l?(r-l)/(h-l):1;i=m(i),t||(i=v(i)),1!==p&&(i=ba(i,p)),i=o[0]+i*(1-o[0]-o[1]),i=Math.min(1,Math.max(0,i));var g=Math.floor(1e4*i);if(b&&d[g])a=d[g];else{if("array"===da(c))for(var y=0;y<f.length;y++){var k=f[y];if(i<=k){a=c[y];break}if(i>=k&&y===f.length-1){a=c[y];break}if(i>k&&i<f[y+1]){i=(i-k)/(f[y+1]-k),a=sa.interpolate(c[y],c[y+1],i,e);break}}else"function"===da(c)&&(a=c(i));b&&(d[g]=a)}return a},k=function(){return d={}};g(r);var w=function(r){var e=sa(y(r));return i&&e[i]?e[i]():e};return w.classes=function(r){if(null!=r){if("array"===da(r))u=r,a=[r[0],r[r.length-1]];else{var e=sa.analyze(a);u=0===r?[e.min,e.max]:sa.limits(e,"e",r)}return w}return u},w.domain=function(r){if(!arguments.length)return a;l=r[0],h=r[r.length-1],f=[];var e=c.length;if(r.length===e&&l!==h)for(var n=0,t=Array.from(r);n<t.length;n+=1){var o=t[n];f.push((o-l)/(h-l))}else{for(var u=0;u<e;u++)f.push(u/(e-1));if(r.length>2){var i=r.map((function(e,n){return n/(r.length-1)})),s=r.map((function(r){return(r-l)/(h-l)}));s.every((function(r,e){return i[e]===r}))||(m=function(r){if(r<=0||r>=1)return r;for(var e=0;r>=s[e+1];)e++;var n=(r-s[e])/(s[e+1]-s[e]);return i[e]+n*(i[e+1]-i[e])})}}return a=[l,h],w},w.mode=function(r){return arguments.length?(e=r,k(),w):e},w.range=function(r,e){return g(r),w},w.out=function(r){return i=r,w},w.spread=function(r){return arguments.length?(t=r,w):t},w.correctLightness=function(r){return null==r&&(r=!0),s=r,k(),v=s?function(r){for(var e=y(0,!0).lab()[0],n=y(1,!0).lab()[0],t=e>n,a=y(r,!0).lab()[0],f=e+(n-e)*r,o=a-f,u=0,c=1,i=20;Math.abs(o)>.01&&i-- >0;)t&&(o*=-1),o<0?(u=r,r+=.5*(c-r)):(c=r,r+=.5*(u-r)),a=y(r,!0).lab()[0],o=a-f;return r}:function(r){return r},w},w.padding=function(r){return null!=r?("number"===da(r)&&(r=[r,r]),o=r,w):o},w.colors=function(e,n){arguments.length<2&&(n="hex");var t=[];if(0===arguments.length)t=c.slice(0);else if(1===e)t=[w(.5)];else if(e>1){var f=a[0],o=a[1]-f;t=ga(0,e,!1).map((function(r){return w(f+r/(e-1)*o)}))}else{r=[];var i=[];if(u&&u.length>2)for(var l=1,h=u.length,s=1<=h;s?l<h:l>h;s?l++:l--)i.push(.5*(u[l-1]+u[l]));else i=a;t=i.map((function(r){return w(r)}))}return sa[n]&&(t=t.map((function(r){return r[n]()}))),t},w.cache=function(r){return null!=r?(b=r,w):b},w.gamma=function(r){return null!=r?(p=r,w):p},w.nodata=function(r){return null!=r?(n=sa(r),w):n},w};function ga(r,e,n){for(var t=[],a=r<e,f=n?a?e+1:e-1:e,o=r;a?o<f:o>f;a?o++:o--)t.push(o);return t}var va=v,ma=pa,ya=y,ka=function(r,e,n){if(!ka[n])throw new Error("unknown blend mode "+n);return ka[n](r,e)},wa=function(r){return function(e,n){var t=ya(n).rgb(),a=ya(e).rgb();return ya.rgb(r(t,a))}},Ma=function(r){return function(e,n){var t=[];return t[0]=r(e[0],n[0]),t[1]=r(e[1],n[1]),t[2]=r(e[2],n[2]),t}};ka.normal=wa(Ma((function(r){return r}))),ka.multiply=wa(Ma((function(r,e){return r*e/255}))),ka.screen=wa(Ma((function(r,e){return 255*(1-(1-r/255)*(1-e/255))}))),ka.overlay=wa(Ma((function(r,e){return e<128?2*r*e/255:255*(1-2*(1-r/255)*(1-e/255))}))),ka.darken=wa(Ma((function(r,e){return r>e?e:r}))),ka.lighten=wa(Ma((function(r,e){return r>e?r:e}))),ka.dodge=wa(Ma((function(r,e){return 255===r||(r=e/255*255/(1-r/255))>255?255:r}))),ka.burn=wa(Ma((function(r,e){return 255*(1-(1-e/255)/(r/255))})));for(var Na=ka,_a=l.type,xa=l.clip_rgb,Aa=l.TWOPI,Ea=Math.pow,Fa=Math.sin,Pa=Math.cos,Oa=y,ja=v,Ga=Math.floor,Ra=Math.random,qa=o,La=Math.log,Ia=Math.pow,Ba=Math.floor,Ca=Math.abs,Da=function(r,e){void 0===e&&(e=null);var n={min:Number.MAX_VALUE,max:-1*Number.MAX_VALUE,sum:0,values:[],count:0};return"object"===qa(r)&&(r=Object.values(r)),r.forEach((function(r){e&&"object"===qa(r)&&(r=r[e]),null==r||isNaN(r)||(n.values.push(r),n.sum+=r,r<n.min&&(n.min=r),r>n.max&&(n.max=r),n.count+=1)})),n.domain=[n.min,n.max],n.limits=function(r,e){return Ya(n,r,e)},n},Ya=function(r,e,n){void 0===e&&(e="equal"),void 0===n&&(n=7),"array"==qa(r)&&(r=Da(r));var t=r.min,a=r.max,f=r.values.sort((function(r,e){return r-e}));if(1===n)return[t,a];var o=[];if("c"===e.substr(0,1)&&(o.push(t),o.push(a)),"e"===e.substr(0,1)){o.push(t);for(var u=1;u<n;u++)o.push(t+u/n*(a-t));o.push(a)}else if("l"===e.substr(0,1)){if(t<=0)throw new Error("Logarithmic scales are only possible for values > 0");var c=Math.LOG10E*La(t),i=Math.LOG10E*La(a);o.push(t);for(var l=1;l<n;l++)o.push(Ia(10,c+l/n*(i-c)));o.push(a)}else if("q"===e.substr(0,1)){o.push(t);for(var h=1;h<n;h++){var s=(f.length-1)*h/n,d=Ba(s);if(d===s)o.push(f[d]);else{var b=s-d;o.push(f[d]*(1-b)+f[d+1]*b)}}o.push(a)}else if("k"===e.substr(0,1)){var p,g=f.length,v=new Array(g),m=new Array(n),y=!0,k=0,w=null;(w=[]).push(t);for(var M=1;M<n;M++)w.push(t+M/n*(a-t));for(w.push(a);y;){for(var N=0;N<n;N++)m[N]=0;for(var _=0;_<g;_++)for(var x=f[_],A=Number.MAX_VALUE,E=void 0,F=0;F<n;F++){var P=Ca(w[F]-x);P<A&&(A=P,E=F),m[E]++,v[_]=E}for(var O=new Array(n),j=0;j<n;j++)O[j]=null;for(var G=0;G<g;G++)null===O[p=v[G]]?O[p]=f[G]:O[p]+=f[G];for(var R=0;R<n;R++)O[R]*=1/m[R];y=!1;for(var q=0;q<n;q++)if(O[q]!==w[q]){y=!0;break}w=O,++k>200&&(y=!1)}for(var L={},I=0;I<n;I++)L[I]=[];for(var B=0;B<g;B++)L[p=v[B]].push(f[B]);for(var C=[],D=0;D<n;D++)C.push(L[D][0]),C.push(L[D][L[D].length-1]);C=C.sort((function(r,e){return r-e})),o.push(C[0]);for(var Y=1;Y<C.length;Y+=2){var S=C[Y];isNaN(S)||-1!==o.indexOf(S)||o.push(S)}}return o},Sa={analyze:Da,limits:Ya},Ta=v,$a=v,za=Math.sqrt,Xa=Math.pow,Ua=Math.min,Va=Math.max,Wa=Math.atan2,Ka=Math.abs,Za=Math.cos,Ha=Math.sin,Ja=Math.exp,Qa=Math.PI,rf=v,ef=v,nf=y,tf=pa,af={cool:function(){return tf([nf.hsl(180,1,.9),nf.hsl(250,.7,.4)])},hot:function(){return tf(["#000","#f00","#ff0","#fff"]).mode("rgb")}},ff={OrRd:["#fff7ec","#fee8c8","#fdd49e","#fdbb84","#fc8d59","#ef6548","#d7301f","#b30000","#7f0000"],PuBu:["#fff7fb","#ece7f2","#d0d1e6","#a6bddb","#74a9cf","#3690c0","#0570b0","#045a8d","#023858"],BuPu:["#f7fcfd","#e0ecf4","#bfd3e6","#9ebcda","#8c96c6","#8c6bb1","#88419d","#810f7c","#4d004b"],Oranges:["#fff5eb","#fee6ce","#fdd0a2","#fdae6b","#fd8d3c","#f16913","#d94801","#a63603","#7f2704"],BuGn:["#f7fcfd","#e5f5f9","#ccece6","#99d8c9","#66c2a4","#41ae76","#238b45","#006d2c","#00441b"],YlOrBr:["#ffffe5","#fff7bc","#fee391","#fec44f","#fe9929","#ec7014","#cc4c02","#993404","#662506"],YlGn:["#ffffe5","#f7fcb9","#d9f0a3","#addd8e","#78c679","#41ab5d","#238443","#006837","#004529"],Reds:["#fff5f0","#fee0d2","#fcbba1","#fc9272","#fb6a4a","#ef3b2c","#cb181d","#a50f15","#67000d"],RdPu:["#fff7f3","#fde0dd","#fcc5c0","#fa9fb5","#f768a1","#dd3497","#ae017e","#7a0177","#49006a"],Greens:["#f7fcf5","#e5f5e0","#c7e9c0","#a1d99b","#74c476","#41ab5d","#238b45","#006d2c","#00441b"],YlGnBu:["#ffffd9","#edf8b1","#c7e9b4","#7fcdbb","#41b6c4","#1d91c0","#225ea8","#253494","#081d58"],Purples:["#fcfbfd","#efedf5","#dadaeb","#bcbddc","#9e9ac8","#807dba","#6a51a3","#54278f","#3f007d"],GnBu:["#f7fcf0","#e0f3db","#ccebc5","#a8ddb5","#7bccc4","#4eb3d3","#2b8cbe","#0868ac","#084081"],Greys:["#ffffff","#f0f0f0","#d9d9d9","#bdbdbd","#969696","#737373","#525252","#252525","#000000"],YlOrRd:["#ffffcc","#ffeda0","#fed976","#feb24c","#fd8d3c","#fc4e2a","#e31a1c","#bd0026","#800026"],PuRd:["#f7f4f9","#e7e1ef","#d4b9da","#c994c7","#df65b0","#e7298a","#ce1256","#980043","#67001f"],Blues:["#f7fbff","#deebf7","#c6dbef","#9ecae1","#6baed6","#4292c6","#2171b5","#08519c","#08306b"],PuBuGn:["#fff7fb","#ece2f0","#d0d1e6","#a6bddb","#67a9cf","#3690c0","#02818a","#016c59","#014636"],Viridis:["#440154","#482777","#3f4a8a","#31678e","#26838f","#1f9d8a","#6cce5a","#b6de2b","#fee825"],Spectral:["#9e0142","#d53e4f","#f46d43","#fdae61","#fee08b","#ffffbf","#e6f598","#abdda4","#66c2a5","#3288bd","#5e4fa2"],RdYlGn:["#a50026","#d73027","#f46d43","#fdae61","#fee08b","#ffffbf","#d9ef8b","#a6d96a","#66bd63","#1a9850","#006837"],RdBu:["#67001f","#b2182b","#d6604d","#f4a582","#fddbc7","#f7f7f7","#d1e5f0","#92c5de","#4393c3","#2166ac","#053061"],PiYG:["#8e0152","#c51b7d","#de77ae","#f1b6da","#fde0ef","#f7f7f7","#e6f5d0","#b8e186","#7fbc41","#4d9221","#276419"],PRGn:["#40004b","#762a83","#9970ab","#c2a5cf","#e7d4e8","#f7f7f7","#d9f0d3","#a6dba0","#5aae61","#1b7837","#00441b"],RdYlBu:["#a50026","#d73027","#f46d43","#fdae61","#fee090","#ffffbf","#e0f3f8","#abd9e9","#74add1","#4575b4","#313695"],BrBG:["#543005","#8c510a","#bf812d","#dfc27d","#f6e8c3","#f5f5f5","#c7eae5","#80cdc1","#35978f","#01665e","#003c30"],RdGy:["#67001f","#b2182b","#d6604d","#f4a582","#fddbc7","#ffffff","#e0e0e0","#bababa","#878787","#4d4d4d","#1a1a1a"],PuOr:["#7f3b08","#b35806","#e08214","#fdb863","#fee0b6","#f7f7f7","#d8daeb","#b2abd2","#8073ac","#542788","#2d004b"],Set2:["#66c2a5","#fc8d62","#8da0cb","#e78ac3","#a6d854","#ffd92f","#e5c494","#b3b3b3"],Accent:["#7fc97f","#beaed4","#fdc086","#ffff99","#386cb0","#f0027f","#bf5b17","#666666"],Set1:["#e41a1c","#377eb8","#4daf4a","#984ea3","#ff7f00","#ffff33","#a65628","#f781bf","#999999"],Set3:["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3","#fdb462","#b3de69","#fccde5","#d9d9d9","#bc80bd","#ccebc5","#ffed6f"],Dark2:["#1b9e77","#d95f02","#7570b3","#e7298a","#66a61e","#e6ab02","#a6761d","#666666"],Paired:["#a6cee3","#1f78b4","#b2df8a","#33a02c","#fb9a99","#e31a1c","#fdbf6f","#ff7f00","#cab2d6","#6a3d9a","#ffff99","#b15928"],Pastel2:["#b3e2cd","#fdcdac","#cbd5e8","#f4cae4","#e6f5c9","#fff2ae","#f1e2cc","#cccccc"],Pastel1:["#fbb4ae","#b3cde3","#ccebc5","#decbe4","#fed9a6","#ffffcc","#e5d8bd","#fddaec","#f2f2f2"]},of=0,uf=Object.keys(ff);of<uf.length;of+=1){var cf=uf[of];ff[cf.toLowerCase()]=ff[cf]}var lf=ff,hf=y;return hf.average=function(r,e,n){void 0===e&&(e="lrgb"),void 0===n&&(n=null);var t=r.length;n||(n=Array.from(new Array(t)).map((function(){return 1})));var a=t/n.reduce((function(r,e){return r+e}));if(n.forEach((function(r,e){n[e]*=a})),r=r.map((function(r){return new ta(r)})),"lrgb"===e)return ha(r,n);for(var f=r.shift(),o=f.get(e),u=[],c=0,i=0,l=0;l<o.length;l++)if(o[l]=(o[l]||0)*n[0],u.push(isNaN(o[l])?0:n[0]),"h"===e.charAt(l)&&!isNaN(o[l])){var h=o[l]/180*ua;c+=ca(h)*n[0],i+=ia(h)*n[0]}var s=f.alpha()*n[0];r.forEach((function(r,t){var a=r.get(e);s+=r.alpha()*n[t+1];for(var f=0;f<o.length;f++)if(!isNaN(a[f]))if(u[f]+=n[t+1],"h"===e.charAt(f)){var l=a[f]/180*ua;c+=ca(l)*n[t+1],i+=ia(l)*n[t+1]}else o[f]+=a[f]*n[t+1]}));for(var d=0;d<o.length;d++)if("h"===e.charAt(d)){for(var b=la(i/u[d],c/u[d])/ua*180;b<0;)b+=360;for(;b>=360;)b-=360;o[d]=b}else o[d]=o[d]/u[d];return s/=t,new ta(o,e).alpha(s>.99999?1:s,!0)},hf.bezier=function(r){var e=function(r){var e,n,t,a,f,o,u;if(2===(r=r.map((function(r){return new va(r)}))).length)e=r.map((function(r){return r.lab()})),f=e[0],o=e[1],a=function(r){var e=[0,1,2].map((function(e){return f[e]+r*(o[e]-f[e])}));return new va(e,"lab")};else if(3===r.length)n=r.map((function(r){return r.lab()})),f=n[0],o=n[1],u=n[2],a=function(r){var e=[0,1,2].map((function(e){return(1-r)*(1-r)*f[e]+2*(1-r)*r*o[e]+r*r*u[e]}));return new va(e,"lab")};else if(4===r.length){var c;t=r.map((function(r){return r.lab()})),f=t[0],o=t[1],u=t[2],c=t[3],a=function(r){var e=[0,1,2].map((function(e){return(1-r)*(1-r)*(1-r)*f[e]+3*(1-r)*(1-r)*r*o[e]+3*(1-r)*r*r*u[e]+r*r*r*c[e]}));return new va(e,"lab")}}else{if(!(r.length>=5))throw new RangeError("No point in running bezier with only one color.");var i,l,h;i=r.map((function(r){return r.lab()})),h=r.length-1,l=function(r){for(var e=[1,1],n=1;n<r;n++){for(var t=[1],a=1;a<=e.length;a++)t[a]=(e[a]||0)+e[a-1];e=t}return e}(h),a=function(r){var e=1-r,n=[0,1,2].map((function(n){return i.reduce((function(t,a,f){return t+l[f]*Math.pow(e,h-f)*Math.pow(r,f)*a[n]}),0)}));return new va(n,"lab")}}return a}(r);return e.scale=function(){return ma(e)},e},hf.blend=Na,hf.cubehelix=function(r,e,n,t,a){void 0===r&&(r=300),void 0===e&&(e=-1.5),void 0===n&&(n=1),void 0===t&&(t=1),void 0===a&&(a=[0,1]);var f,o=0;"array"===_a(a)?f=a[1]-a[0]:(f=0,a=[a,a]);var u=function(u){var c=Aa*((r+120)/360+e*u),i=Ea(a[0]+f*u,t),l=(0!==o?n[0]+u*o:n)*i*(1-i)/2,h=Pa(c),s=Fa(c);return Oa(xa([255*(i+l*(-.14861*h+1.78277*s)),255*(i+l*(-.29227*h-.90649*s)),255*(i+l*(1.97294*h)),1]))};return u.start=function(e){return null==e?r:(r=e,u)},u.rotations=function(r){return null==r?e:(e=r,u)},u.gamma=function(r){return null==r?t:(t=r,u)},u.hue=function(r){return null==r?n:("array"===_a(n=r)?0===(o=n[1]-n[0])&&(n=n[1]):o=0,u)},u.lightness=function(r){return null==r?a:("array"===_a(r)?(a=r,f=r[1]-r[0]):(a=[r,r],f=0),u)},u.scale=function(){return Oa.scale(u)},u.hue(n),u},hf.mix=hf.interpolate=Rt,hf.random=function(){for(var r="#",e=0;e<6;e++)r+="0123456789abcdef".charAt(Ga(16*Ra()));return new ja(r,"hex")},hf.scale=pa,hf.analyze=Sa.analyze,hf.contrast=function(r,e){r=new Ta(r),e=new Ta(e);var n=r.luminance(),t=e.luminance();return n>t?(n+.05)/(t+.05):(t+.05)/(n+.05)},hf.deltaE=function(r,e,n,t,a){void 0===n&&(n=1),void 0===t&&(t=1),void 0===a&&(a=1);var f=function(r){return 360*r/(2*Qa)},o=function(r){return 2*Qa*r/360};r=new $a(r),e=new $a(e);var u=Array.from(r.lab()),c=u[0],i=u[1],l=u[2],h=Array.from(e.lab()),s=h[0],d=h[1],b=h[2],p=(c+s)/2,g=(za(Xa(i,2)+Xa(l,2))+za(Xa(d,2)+Xa(b,2)))/2,v=.5*(1-za(Xa(g,7)/(Xa(g,7)+Xa(25,7)))),m=i*(1+v),y=d*(1+v),k=za(Xa(m,2)+Xa(l,2)),w=za(Xa(y,2)+Xa(b,2)),M=(k+w)/2,N=f(Wa(l,m)),_=f(Wa(b,y)),x=N>=0?N:N+360,A=_>=0?_:_+360,E=Ka(x-A)>180?(x+A+360)/2:(x+A)/2,F=1-.17*Za(o(E-30))+.24*Za(o(2*E))+.32*Za(o(3*E+6))-.2*Za(o(4*E-63)),P=A-x;
2174P=Ka(P)<=180?P:A<=x?P+360:P-360,P=2*za(k*w)*Ha(o(P)/2);var O=s-c,j=w-k,G=1+.015*Xa(p-50,2)/za(20+Xa(p-50,2)),R=1+.045*M,q=1+.015*M*F,L=30*Ja(-Xa((E-275)/25,2)),I=-(2*za(Xa(M,7)/(Xa(M,7)+Xa(25,7))))*Ha(2*o(L)),B=za(Xa(O/(n*G),2)+Xa(j/(t*R),2)+Xa(P/(a*q),2)+I*(j/(t*R))*(P/(a*q)));return Va(0,Ua(100,B))},hf.distance=function(r,e,n){void 0===n&&(n="lab"),r=new rf(r),e=new rf(e);var t=r.get(n),a=e.get(n),f=0;for(var o in t){var u=(t[o]||0)-(a[o]||0);f+=u*u}return Math.sqrt(f)},hf.limits=Sa.limits,hf.valid=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];try{return new(Function.prototype.bind.apply(ef,[null].concat(r))),!0}catch(r){return!1}},hf.scales=af,hf.colors=sn,hf.brewer=lf,hf}));
2175// file: /var/www/vhosts/codethislab.com/httpdocs/wp-content/plugins/ctl-wp-studio/classes/core/../../js/panzoom.min.js
2176/**
2177* Panzoom for panning and zooming elements using CSS transforms
2178* Copyright Timmy Willison and other contributors
2179* https://github.com/timmywil/panzoom/blob/main/MIT-License.txt
2180*/
2181!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).Panzoom=e()}(this,function(){"use strict";var Y=function(){return(Y=Object.assign||function(t){for(var e,n=1,o=arguments.length;n<o;n++)for(var r in e=arguments[n])Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t}).apply(this,arguments)};function C(t,e){for(var n=t.length;n--;)if(t[n].pointerId===e.pointerId)return n;return-1}function T(t,e){if(e.touches)for(var n=0,o=0,r=e.touches;o<r.length;o++){var a=r[o];a.pointerId=n++,T(t,a)}else-1<(n=C(t,e))&&t.splice(n,1),t.push(e)}function N(t){for(var e,n=(t=t.slice(0)).pop();e=t.pop();)n={clientX:(e.clientX-n.clientX)/2+n.clientX,clientY:(e.clientY-n.clientY)/2+n.clientY};return n}function L(t){var e;return t.length<2?0:(e=t[0],t=t[1],Math.sqrt(Math.pow(Math.abs(t.clientX-e.clientX),2)+Math.pow(Math.abs(t.clientY-e.clientY),2)))}"undefined"!=typeof window&&(window.NodeList&&!NodeList.prototype.forEach&&(NodeList.prototype.forEach=Array.prototype.forEach),"function"!=typeof window.CustomEvent&&(window.CustomEvent=function(t,e){e=e||{bubbles:!1,cancelable:!1,detail:null};var n=document.createEvent("CustomEvent");return n.initCustomEvent(t,e.bubbles,e.cancelable,e.detail),n}));var V={down:"mousedown",move:"mousemove",up:"mouseup mouseleave"};function D(t,e,n,o){V[t].split(" ").forEach(function(t){e.addEventListener(t,n,o)})}function G(t,e,n){V[t].split(" ").forEach(function(t){e.removeEventListener(t,n)})}"undefined"!=typeof window&&("function"==typeof window.PointerEvent?V={down:"pointerdown",move:"pointermove",up:"pointerup pointerleave pointercancel"}:"function"==typeof window.TouchEvent&&(V={down:"touchstart",move:"touchmove",up:"touchend touchcancel"}));var a,i="undefined"!=typeof document&&!!document.documentMode;var c=["webkit","moz","ms"],l={};function I(t){if(l[t])return l[t];var e=a=a||document.createElement("div").style;if(t in e)return l[t]=t;for(var n=t[0].toUpperCase()+t.slice(1),o=c.length;o--;){var r="".concat(c[o]).concat(n);if(r in e)return l[t]=r}}function o(t,e){return parseFloat(e[I(t)])||0}function s(t,e,n){void 0===n&&(n=window.getComputedStyle(t));t="border"===e?"Width":"";return{left:o("".concat(e,"Left").concat(t),n),right:o("".concat(e,"Right").concat(t),n),top:o("".concat(e,"Top").concat(t),n),bottom:o("".concat(e,"Bottom").concat(t),n)}}function W(t,e,n){t.style[I(e)]=n}function Z(t){var e=t.parentNode,n=window.getComputedStyle(t),o=window.getComputedStyle(e),r=t.getBoundingClientRect(),a=e.getBoundingClientRect();return{elem:{style:n,width:r.width,height:r.height,top:r.top,bottom:r.bottom,left:r.left,right:r.right,margin:s(t,"margin",n),border:s(t,"border",n)},parent:{style:o,width:a.width,height:a.height,top:a.top,bottom:a.bottom,left:a.left,right:a.right,padding:s(e,"padding",o),border:s(e,"border",o)}}}var q=/^http:[\w\.\/]+svg$/;var B={animate:!1,canvas:!1,cursor:"move",disablePan:!1,disableZoom:!1,disableXAxis:!1,disableYAxis:!1,duration:200,easing:"ease-in-out",exclude:[],excludeClass:"panzoom-exclude",handleStartEvent:function(t){t.preventDefault(),t.stopPropagation()},maxScale:4,minScale:.125,overflow:"hidden",panOnlyWhenZoomed:!1,pinchAndPan:!1,relative:!1,setTransform:function(t,e,n){var o=e.x,r=e.y,a=e.scale,e=e.isSVG;W(t,"transform","scale(".concat(a,") translate(").concat(o,"px, ").concat(r,"px)")),e&&i&&(a=window.getComputedStyle(t).getPropertyValue("transform"),t.setAttribute("transform",a))},startX:0,startY:0,startScale:1,step:.3,touchAction:"none"};function t(u,f){if(!u)throw new Error("Panzoom requires an element as an argument");
2181if(1!==u.nodeType)throw new Error("Panzoom requires an element with a nodeType of 1");if(e=(t=u).ownerDocument,t=t.parentNode,!(e&&t&&9===e.nodeType&&1===t.nodeType&&e.documentElement.contains(t)))throw new Error("Panzoom should be called on elements that have been attached to the DOM");f=Y(Y({},B),f),e=u;var t,e,l=q.test(e.namespaceURI)&&"svg"!==e.nodeName.toLowerCase(),n=u.parentNode;n.style.overflow=f.overflow,n.style.userSelect="none",n.style.touchAction=f.touchAction,(f.canvas?n:u).style.cursor=f.cursor,u.style.userSelect="none",u.style.touchAction=f.touchAction,W(u,"transformOrigin","string"==typeof f.origin?f.origin:l?"0 0":"50% 50%");var r,a,i,c,s,d,m=0,h=0,v=1,p=!1;function g(t,e,n){n.silent||(n=new CustomEvent(t,{detail:e}),u.dispatchEvent(n))}function y(o,r,t){var a={x:m,y:h,scale:v,isSVG:l,originalEvent:t};return requestAnimationFrame(function(){var t,e,n;"boolean"==typeof r.animate&&(r.animate?(t=u,e=r,n=I("transform"),W(t,"transition","".concat(n," ").concat(e.duration,"ms ").concat(e.easing))):W(u,"transition","none")),r.setTransform(u,a,r),g(o,a,r),g("panzoomchange",a,r)}),a}function w(t,e,n,o){var r,a,i,c,l,s,d,o=Y(Y({},f),o),p={x:m,y:h,opts:o};return!o.force&&(o.disablePan||o.panOnlyWhenZoomed&&v===o.startScale)||(t=parseFloat(t),e=parseFloat(e),o.disableXAxis||(p.x=(o.relative?m:0)+t),o.disableYAxis||(p.y=(o.relative?h:0)+e),o.contain&&(e=((r=(e=(t=Z(u)).elem.width/v)*n)-e)/2,i=((a=(i=t.elem.height/v)*n)-i)/2,"inside"===o.contain?(c=(-t.elem.margin.left-t.parent.padding.left+e)/n,l=(t.parent.width-r-t.parent.padding.left-t.elem.margin.left-t.parent.border.left-t.parent.border.right+e)/n,p.x=Math.max(Math.min(p.x,l),c),s=(-t.elem.margin.top-t.parent.padding.top+i)/n,d=(t.parent.height-a-t.parent.padding.top-t.elem.margin.top-t.parent.border.top-t.parent.border.bottom+i)/n,p.y=Math.max(Math.min(p.y,d),s)):"outside"===o.contain&&(c=(-(r-t.parent.width)-t.parent.padding.left-t.parent.border.left-t.parent.border.right+e)/n,l=(e-t.parent.padding.left)/n,p.x=Math.max(Math.min(p.x,l),c),s=(-(a-t.parent.height)-t.parent.padding.top-t.parent.border.top-t.parent.border.bottom+i)/n,d=(i-t.parent.padding.top)/n,p.y=Math.max(Math.min(p.y,d),s))),o.roundPixels&&(p.x=Math.round(p.x),p.y=Math.round(p.y))),p}function b(t,e){var n,o,r,a,e=Y(Y({},f),e),i={scale:v,opts:e};return!e.force&&e.disableZoom||(n=f.minScale,o=f.maxScale,e.contain&&(a=(e=Z(u)).elem.width/v,r=e.elem.height/v,1<a&&1<r&&(a=(e.parent.width-e.parent.border.left-e.parent.border.right)/a,e=(e.parent.height-e.parent.border.top-e.parent.border.bottom)/r,"inside"===f.contain?o=Math.min(o,a,e):"outside"===f.contain&&(n=Math.max(n,a,e)))),i.scale=Math.min(Math.max(t,n),o)),i}function x(t,e,n,o){t=w(t,e,v,n);return m!==t.x||h!==t.y?(m=t.x,h=t.y,y("panzoompan",t.opts,o)):{x:m,y:h,scale:v,isSVG:l,originalEvent:o}}function E(t,e,n){var o,r,e=b(t,e),a=e.opts;if(a.force||!a.disableZoom)return t=e.scale,e=m,o=h,a.focal&&(e=((r=a.focal).x/t-r.x/v+m*t)/t,o=(r.y/t-r.y/v+h*t)/t),r=w(e,o,t,{relative:!1,force:!0}),m=r.x,h=r.y,v=t,y("panzoomzoom",a,n)}function o(t,e){e=Y(Y(Y({},f),{animate:!0}),e);return E(v*Math.exp((t?1:-1)*e.step),e)}function S(t,e,n,o){var r=Z(u),a=r.parent.width-r.parent.padding.left-r.parent.padding.right-r.parent.border.left-r.parent.border.right,i=r.parent.height-r.parent.padding.top-r.parent.padding.bottom-r.parent.border.top-r.parent.border.bottom,c=e.clientX-r.parent.left-r.parent.padding.left-r.parent.border.left-r.elem.margin.left,e=e.clientY-r.parent.top-r.parent.padding.top-r.parent.border.top-r.elem.margin.top,r=(l||(c-=r.elem.width/v/2,e-=r.elem.height/v/2),{x:c/a*(a*t),y:e/i*(i*t)});return E(t,Y(Y({},n),{animate:!1,focal:r}),o)}E(f.startScale,{animate:!1,force:!0}),setTimeout(function(){x(f.startX,f.startY,{animate:!1,force:!0})});var M=[];function A(t){!function(t,e){for(var n,o,r=t;null!=r;r=r.parentNode)if(n=r,o=e.excludeClass,1===n.nodeType&&-1<" ".concat((n.getAttribute("class")||"").trim()," ").indexOf(" ".concat(o," "))||-1<e.exclude.indexOf(r))return 1}(t.target,f)&&(T(M,t),p=!0,f.handleStartEvent(t),g("panzoomstart",{x:r=m,y:a=h,scale:v,isSVG:l,originalEvent:t}
2181,f),t=N(M),i=t.clientX,c=t.clientY,s=v,d=L(M))}function P(t){var e,n,o;p&&void 0!==r&&void 0!==a&&void 0!==i&&void 0!==c&&(T(M,t),e=N(M),n=1<M.length,o=v,n&&(0===d&&(d=L(M)),S(o=b((L(M)-d)*f.step/80+s).scale,e,{animate:!1},t)),n&&!f.pinchAndPan||x(r+(e.clientX-i)/o,a+(e.clientY-c)/o,{animate:!1},t))}function O(t){1===M.length&&g("panzoomend",{x:m,y:h,scale:v,isSVG:l,originalEvent:t},f);var e=M;if(t.touches)for(;e.length;)e.pop();else{t=C(e,t);-1<t&&e.splice(t,1)}p&&(p=!1,r=a=i=c=void 0)}var z=!1;function X(){z||(z=!0,D("down",f.canvas?n:u,A),D("move",document,P,{passive:!0}),D("up",document,O,{passive:!0}))}return f.noBind||X(),{bind:X,destroy:function(){z=!1,G("down",f.canvas?n:u,A),G("move",document,P),G("up",document,O)},eventNames:V,getPan:function(){return{x:m,y:h}},getScale:function(){return v},getOptions:function(){var t,e=f,n={};for(t in e)e.hasOwnProperty(t)&&(n[t]=e[t]);return n},handleDown:A,handleMove:P,handleUp:O,pan:x,reset:function(t){var t=Y(Y(Y({},f),{animate:!0,force:!0}),t),e=(v=b(t.startScale,t).scale,w(t.startX,t.startY,v,t));return m=e.x,h=e.y,y("panzoomreset",t)},resetStyle:function(){n.style.overflow="",n.style.userSelect="",n.style.touchAction="",n.style.cursor="",u.style.cursor="",u.style.userSelect="",u.style.touchAction="",W(u,"transformOrigin","")},setOptions:function(t){for(var e in t=void 0===t?{}:t)t.hasOwnProperty(e)&&(f[e]=t[e]);(t.hasOwnProperty("cursor")||t.hasOwnProperty("canvas"))&&(n.style.cursor=u.style.cursor="",(f.canvas?n:u).style.cursor=f.cursor),t.hasOwnProperty("overflow")&&(n.style.overflow=t.overflow),t.hasOwnProperty("touchAction")&&(n.style.touchAction=t.touchAction,u.style.touchAction=t.touchAction)},setStyle:function(t,e){return W(u,t,e)},zoom:E,zoomIn:function(t){return o(!0,t)},zoomOut:function(t){return o(!1,t)},zoomToPoint:S,zoomWithWheel:function(t,e){t.preventDefault();var e=Y(Y(Y({},f),e),{animate:!1}),n=0===t.deltaY&&t.deltaX?t.deltaX:t.deltaY;return S(b(v*Math.exp((n<0?1:-1)*e.step/3),e).scale,t,e,t)}}}return t.defaultOptions=B,t});
2182// file: /var/www/vhosts/codethislab.com/httpdocs/wp-content/plugins/ctl-wp-studio/classes/core/../../js/commons.js
2183var CTL_WP_STUDIO = function( szPluginCode, szLocalizationPrefix ){
2184    
2185    var doc = window.document;
2186
2187    this._cbRequestFullScreen = doc.documentElement.requestFullscreen || doc.documentElement.mozRequestFullScreen || doc.documentElement.webkitRequestFullScreen || doc.documentElement.msRequestFullscreen;
2188    this._cbCancelFullScreen  = window.document.exitFullscreen || window.document.mozCancelFullScreen || window.document.webkitExitFullscreen || window.document.msExitFullscreen;
2189    this._szPluginCode   = szPluginCode;
2190    this._cssClassDomain = szPluginCode + "-";
2191    this._szLocalizationPrefix = szLocalizationPrefix;
2192    this._idRoot         = "#" + this._cssClassDomain;
2193    this._classRoot      = "." + this._cssClassDomain;
2194    this._idLoadingDlg   = null;
2195    this._oLangCommon    = window[szLocalizationPrefix+"common_localization"];
2196    this._bStopLoading   = false;
2197    
2198    this._aSelect2AjaxDataFilters = [];
2199    this._aSelect2ChangeValue     = [];
2200    
2201    // Create Base64 Object
2202    var oParent = this;
2203    this._base64={_keyStr:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",encode:function(e){var t="";var n,r,i,s,o,u,a;var f=0;e=oParent._base64._utf8_encode(e);while(f<e.length){n=e.charCodeAt(f++);r=e.charCodeAt(f++);i=e.charCodeAt(f++);s=n>>2;o=(n&3)<<4|r>>4;u=(r&15)<<2|i>>6;a=i&63;if(isNaN(r)){u=a=64}else if(isNaN(i)){a=64}t=t+this._keyStr.charAt(s)+this._keyStr.charAt(o)+this._keyStr.charAt(u)+this._keyStr.charAt(a)}return t},decode:function(e){var t="";var n,r,i;var s,o,u,a;var f=0;e=e.replace(/[^A-Za-z0-9+/=]/g,"");while(f<e.length){s=this._keyStr.indexOf(e.charAt(f++));o=this._keyStr.indexOf(e.charAt(f++));u=this._keyStr.indexOf(e.charAt(f++));a=this._keyStr.indexOf(e.charAt(f++));n=s<<2|o>>4;r=(o&15)<<4|u>>2;i=(u&3)<<6|a;t=t+String.fromCharCode(n);if(u!=64){t=t+String.fromCharCode(r)}if(a!=64){t=t+String.fromCharCode(i)}}t=oParent._base64._utf8_decode(t);return t},_utf8_encode:function(e){e=e.replace(/rn/g,"n");var t="";for(var n=0;n<e.length;n++){var r=e.charCodeAt(n);if(r<128){t+=String.fromCharCode(r)}else if(r>127&&r<2048){t+=String.fromCharCode(r>>6|192);t+=String.fromCharCode(r&63|128)}else{t+=String.fromCharCode(r>>12|224);t+=String.fromCharCode(r>>6&63|128);t+=String.fromCharCode(r&63|128)}}return t},_utf8_decode:function(e){var t="";var n=0;var r=c1=c2=0;while(n<e.length){r=e.charCodeAt(n);if(r<128){t+=String.fromCharCode(r);n++}else if(r>191&&r<224){c2=e.charCodeAt(n+1);t+=String.fromCharCode((r&31)<<6|c2&63);n+=2}else{c2=e.charCodeAt(n+1);c3=e.charCodeAt(n+2);t+=String.fromCharCode((r&15)<<12|(c2&63)<<6|c3&63);n+=3}}return t}};
2204
2205    this.addSlashes = function( szString ) {
2206        return szString.replace(/\\/g, '\\\\').
2207        replace(/\u0008/g, '\\b').
2208        replace(/\t/g, '\\t').
2209        replace(/\n/g, '\\n').
2210        replace(/\f/g, '\\f').
2211        replace(/\r/g, '\\r').
2212        replace(/'/g, '\\\'').
2213        replace(/"/g, '\\"');    
2214    };
2215};
2216
2217CTL_WP_STUDIO.prototype.initDocumentationPage = function(){
2218    jQuery(".ctl-wp-studio-img-guide").each( function(){
2219        jQuery(this).attr("data-size","300");
2220        jQuery(this).click(function(){
2221            if( jQuery(this).attr("data-size") === "300"){
2222                jQuery(this).attr("data-size","100");
2223                jQuery(this).find("img").addClass( "ctl-wp-studio-img-class-100");
2224            }else{
2225                jQuery(this).attr("data-size","300");
2226                jQuery(this).find("img").removeClass( "ctl-wp-studio-img-class-100");
2227            }
2228        });
2229    });
2230};
2231
2232CTL_WP_STUDIO.prototype.getSize = function(Name) {
2233       var size;
2234       var name = Name.toLowerCase();
2235       var document = window.document;
2236       var documentElement = document.documentElement;
2237       if (window["inner" + Name] === undefined) {
2238               // IE6 & IE7 don't have window.innerWidth or innerHeight
2239               size = documentElement["client" + Name];
2240       }else if (window["inner" + Name] !== documentElement["client" + Name]) {
2241               // WebKit doesn't include scrollbars while calculating viewport size so we have to get fancy
2242
2243               // Insert markup to test if a media query will match document.doumentElement["client" + Name]
2244               var bodyElement = document.createElement("body");
2245               bodyElement.id = "vpw-test-b";
2246               bodyElement.style.cssText = "overflow:scroll";
2247               var divElement = document.createElement("div");
2248               divElement.id = "vpw-test-d";
2249               divElement.style.cssText = "position:absolute;top:-1000px";
2250               // Getting specific on the CSS selector so it won't get overridden easily
2251               divElement.innerHTML = "<style>@media(" + name + ":" + documentElement["client" + Name] + "px){body#vpw-test-b div#vpw-test-d{" + name + ":7px!important}}</style>";
2252               bodyElement.appendChild(divElement);
2253               documentElement.insertBefore(bodyElement, document.head);
2254
2255               if (divElement["offset" + Name] === 7) {
2256                       // Media query matches document.documentElement["client" + Name]
2257                       size = documentElement["client" + Name];
2258               }
2259               else {
2260                       // Media query didn't match, use window["inner" + Name]
2261                       size = window["inner" + Name];
2262               }
2263               // Cleanup
2264               documentElement.removeChild(bodyElement);
2265       }else{
2266               // Default to use window["inner" + Name]
2267               size = window["inner" + Name];
2268       }
2269       return size;
2270};
2271
2272CTL_WP_STUDIO.prototype.getCSSValue = function( szCSSProp ) { 
2273    var aValues = szCSSProp.match(/^([+-]?(?:\d+|\d*\.\d+))([a-z]*|%)$/);
2274
2275    if(!aValues){
2276        return null;
2277    }else{
2278        return aValues[1];   
2279    }
2280};
2281
2282CTL_WP_STUDIO.prototype.scrollToTop = function( cb, cbOwner){
2283
2284    jQuery('html,body,.modal').animate({ scrollTop: 0 }, 'slow', function(){
2285        if(cb){
2286            cb.call(cbOwner);    
2287        }        
2288    });
2289};
2290
2291CTL_WP_STUDIO.prototype.scrollToSelector = function(id, iExtraOffset){
2292//    _bScrollSiteAnimation = true;
2293
2294    var iOffsetTop =  jQuery(id).offset().top + ( iExtraOffset ? iExtraOffset : 0 );
2295
2296    jQuery('html,body,.modal').stop().animate({ scrollTop: iOffsetTop }, 'slow', function(){
2297        //        _bScrollSiteAnimation = false;
2298    });
2299};
2300
2301CTL_WP_STUDIO.prototype.getCSSUnitOfMeasurement = function( szCSSProp ) {
2302    
2303    var aValues = szCSSProp.match(/^([+-]?(?:\d+|\d*\.\d+))([a-z]*|%)$/);
2304
2305    if(!aValues){
2306        return null;
2307    }else{
2308        return aValues[2];   
2309    }
2310};
2311
2312CTL_WP_STUDIO.prototype.requestFullScreen = function() {
2313    if(this._cbRequestFullScreen){
2314        this._cbRequestFullScreen.call(window.document.documentElement);    
2315    }
2316};
2317
2318CTL_WP_STUDIO.prototype.cancelFullScreen = function() {
2319    if(this._cbCancelFullScreen){
2320        this._cbCancelFullScreen.call(window.document);
2321    }   
2322};
2323
2324CTL_WP_STUDIO.prototype.base64toPDF = function(data, szNameDocument) {
2325	
2326	if ( !szNameDocument ){
2327		szNameDocument = 'file';
2328	}
2329	
2330    var bufferArray = this.base64ToArrayBuffer(data);
2331    var blobStore = new Blob([bufferArray], { type: "application/pdf" });
2332    if (window.navigator && window.navigator.msSaveOrOpenBlob) {
2333        window.navigator.msSaveOrOpenBlob(blobStore, szNameDocument + ".pdf");
2334        return;
2335    }
2336    var data = window.URL.createObjectURL(blobStore);
2337    var link = document.createElement('a');
2338    document.body.appendChild(link);
2339    link.href = data;
2340    link.download = szNameDocument + ".pdf";
2341    link.click();
2342    window.URL.revokeObjectURL(data);
2343    link.remove();
2344};
2345
2346CTL_WP_STUDIO.prototype.base64toFile = function(data, type, ext, szNameDocument) {
2347	
2348    if ( !szNameDocument ){
2349            szNameDocument = 'file';
2350    }
2351	
2352    var bufferArray = this.base64ToArrayBuffer(data);
2353    var blobStore = new Blob([bufferArray], { type: type });
2354    if (window.navigator && window.navigator.msSaveOrOpenBlob) {
2355        window.navigator.msSaveOrOpenBlob(blobStore, szNameDocument + "." + ext);
2356        return;
2357    }
2358    var data = window.URL.createObjectURL(blobStore);
2359    var link = document.createElement('a');
2360    document.body.appendChild(link);
2361    link.href = data;
2362    link.download = szNameDocument + "." + ext;
2363    link.click();
2364    window.URL.revokeObjectURL(data);
2365    link.remove();
2366};
2367
2368CTL_WP_STUDIO.prototype.base64ToArrayBuffer = function(data) {
2369    var bString = window.atob(data);
2370    var bLength = bString.length;
2371    var bytes = new Uint8Array(bLength);
2372    for (var i = 0; i < bLength; i++) {
2373        var ascii = bString.charCodeAt(i);
2374        bytes[i] = ascii;
2375    }
2376    return bytes;
2377};
2378
2379CTL_WP_STUDIO.prototype.makeCode = function( iDigits, bAllowNumbers ) {
2380    var code = "";
2381    var chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
2382    
2383    if (!iDigits){
2384        iDigits = 32;
2385    }
2386    
2387    if ( bAllowNumbers ){
2388        chars += '0123456789';
2389    }
2390    
2391    for( var i=0; i < iDigits; i++ ){
2392        code += chars.charAt(Math.floor(Math.random() * chars.length));
2393    }
2394    return code; 
2395};
2396
2397CTL_WP_STUDIO.prototype.shuffleArray = function(array) {
2398    var currentIndex = array.length
2399      , temporaryValue
2400      , randomIndex
2401      ;
2402  
2403    // While there remain elements to shuffle...
2404    while (0 !== currentIndex) {
2405  
2406      // Pick a remaining element...
2407      randomIndex = Math.floor(Math.random() * currentIndex);
2408      currentIndex -= 1;
2409  
2410      // And swap it with the current element.
2411      temporaryValue = array[currentIndex];
2412      array[currentIndex] = array[randomIndex];
2413      array[randomIndex] = temporaryValue;
2414    }
2415  
2416    return array;
2417  };
2418
2419  CTL_WP_STUDIO.prototype.shuffleString = function( string ){
2420
2421    var that= string.split("");
2422    var len = that.length,t,i
2423    while(len){
2424     i=Math.random()*len-- |0;
2425     t=that[len],that[len]=that[i],that[i]=t;
2426    }
2427    return that.join("");
2428 }
2429
2430CTL_WP_STUDIO.prototype.showLoading = function(szMsg){
2431    var szHtml = "";    
2432    var id     = this.makeCode();
2433
2434    szHtml += "<div id='"+id+"' class='ctl-wp-studio-loading-dlg-wrapper'>";
2435    szHtml +=   "<div class='ctl-wp-studio-dlg-block'></div>";
2436    szHtml +=   "<div class='ctl-wp-studio-dlg-content'>";
2437    szHtml +=       "<div class='ctl-wp-studio-dlg-content-body'>";
2438    
2439    if(szMsg){
2440        szHtml +=           "<p>"+szMsg+"</p>";        
2441    }
2442    
2443    if( window.BOOTSTRAP ){
2444        szHtml += '<div class="text-center">';
2445        szHtml += '<div class="spinner-border spinner-border-sm text-secondary" role="status">';
2446          szHtml += '<span class="sr-only">Loading...</span>';
2447        szHtml += '</div>';
2448      szHtml += '</div>';
2449    }else{
2450        szHtml += "<i class='animate-spin ctl-wp-studio-icons-spin5'></i>";    
2451    }
2452    
2453    szHtml +=       "</div>";
2454    szHtml +=   "</div>";
2455    szHtml += "</div>";
2456
2457    jQuery("body").append(szHtml);    
2458    jQuery("#"+id +" .ctl-wp-studio-dlg-block").addClass("ctl-wp-studio-dlg-block-show");
2459    jQuery("#"+id +" .ctl-wp-studio-dlg-content").addClass("ctl-wp-studio-content-show");
2460
2461    return id;
2462};
2463
2464    CTL_WP_STUDIO.prototype.showDialog = function( szTitle, szHtmlContent, aBtn, bRemoveClose, bFullscreenButton ){
2465    
2466    var szHtml = "";
2467    var id = this.makeCode();
2468
2469    szHtml += "<div id='"+id+"' class='ctl-wp-studio-dlg-wrapper " + 
2470            this._cssClassDomain+"fixed'>";
2471        szHtml += "<div class='ctl-wp-studio-dlg-block'></div>";
2472        szHtml += "<div class='ctl-wp-studio-dlg-content'>";
2473        
2474            szHtml += "<div class='ctl-wp-studio-dlg-header'>";
2475                szHtml += "<div class='ctl-wp-studio-dlg-title'>"+szTitle+"</div>";
2476                
2477                szHtml += '<div class="ctl-wp-studio-dlg-header-buttons">';
2478                    if ( bFullscreenButton === true ){
2479                        szHtml += "<div class='ctl-wp-studio-action-dlg-fullscreen'><i class='ctl-wp-studio-icons-resize-full'></i></div>";
2480                    }
2481
2482                    if( bRemoveClose !== true ){
2483                        szHtml += "<div class='ctl-wp-studio-action-dlg-close ctl-wp-studio-dlg-close ctl-wp-studio-icons-cancel'></div>"; 
2484                    }
2485                szHtml += "</div>";
2486            szHtml += "</div>";
2487            
2488            szHtml += "<div class='ctl-wp-studio-dlg-content-body'>";
2489                szHtml += "<div class='ctl-wp-studio-dlg-content-body-scrollable'>";
2490            szHtml += szHtmlContent;
2491                szHtml += "</div>";
2492            szHtml += "</div>";
2493
2494            if( aBtn && aBtn.length > 0 ){
2495                szHtml += "<div class='ctl-wp-studio-dlg-footer'>";
2496                    szHtml += "<div class='ctl-wp-studio-dlg-footer-content'>";
2497                for( var i=0; i < aBtn.length; i++){
2498                    
2499                    if ( aBtn[i].cb ){
2500                        if ( aBtn[i].cb.indexOf("window.open") == -1 && 
2501                        aBtn[i].cb.indexOf("(") == -1 && aBtn[i].cb.indexOf(")") == -1 ){
2502                            aBtn[i].cb += '(\''+id+'\');';
2503                        }
2504                    }
2505
2506                    if( window.BOOTSTRAP ){
2507                        if ( aBtn[i].cb ){
2508                            szHtml += '<button ' + (aBtn[i].attributes ? aBtn[i].attributes : '') + ' type="button" onclick="' + aBtn[i].cb +
2509                                      '" class="button btn' + 
2510                                      ( aBtn[i].primary ? ' btn-primary' : ' btn-secondary') +' '+ aBtn[i].classes +'">'+
2511                                      aBtn[i].txt+'</button>'; 
2512                        }else{
2513                            szHtml += '<button ' + (aBtn[i].attributes ? aBtn[i].attributes : '') + ' type="button" class="button btn' + 
2514                                      ( aBtn[i].primary ? ' btn-primary' : ' btn-secondary') +' '+ aBtn[i].classes +'">'+
2515                                      aBtn[i].txt+'</button>';  
2516                        }
2517                    }else{
2518                        if ( aBtn[i].cb ){
2519
2520                            szHtml += '<div onclick="' + aBtn[i].cb +
2521                                      '" ' + (aBtn[i].attributes ? aBtn[i].attributes : '') + ' class="button ' + 
2522                                      ( aBtn[i].primary ? ' button-primary' : ' button-secondary') +' '+ aBtn[i].classes +'">'+
2523                                      aBtn[i].txt+'</div>';  
2524
2525                        }else{
2526                            szHtml += '<div ' + (aBtn[i].attributes ? aBtn[i].attributes : '') + ' class="button ' + 
2527                                      ( aBtn[i].primary ? ' button-primary' : ' button-secondary') +' '+ aBtn[i].classes +'">'+
2528                                      aBtn[i].txt+'</div>';       
2529                        }
2530                    }                   
2531                }
2532                    szHtml += "</div>";
2533                szHtml += "</div>";
2534            }
2535            
2536        szHtml += "</div>";
2537    szHtml += "</div>";
2538
2539    jQuery("body").append(szHtml);
2540
2541    jQuery("#"+id +" .ctl-wp-studio-dlg-block").addClass("ctl-wp-studio-dlg-block-show");
2542    jQuery("#"+id +" .ctl-wp-studio-dlg-content").addClass("ctl-wp-studio-content-show");
2543    
2544
2545    setTimeout(() => {
2546        g_oCTLWPStudio.refreshDialogComponents(jQuery("#"+id));
2547    }, 100);
2548
2549    return id;
2550};
2551
2552CTL_WP_STUDIO.prototype.activateColorPicker = function( oNodeInputText ){
2553    oNodeInputText.colorPicker({
2554    customBG: '#222',
2555    margin: '5px 0 0',
2556    doRender: 'div div',
2557    colorNames: {
2558        '191970': 'midnightblue',
2559        '696969': 'dimgrey',
2560        '708090': 'slategrey',
2561        '778899': 'lightslategrey',
2562        '800000': 'maroon',
2563        '800080': 'purple',
2564        '808000': 'olive',
2565        '808080': 'grey',
2566        'F0F8FF': 'aliceblue',
2567        'FAEBD7': 'antiquewhite',
2568        '00FFFF': 'cyan',
2569        '7FFFD4': 'aquamarine',
2570        'F0FFFF': 'azure',
2571        'F5F5DC': 'beige',
2572        'FFE4C4': 'bisque',
2573        '000000': 'black',
2574        'FFEBCD': 'blanchedalmond',
2575        '0000FF': 'blue',
2576        '8A2BE2': 'blueviolet',
2577        'A52A2A': 'brown',
2578        'DEB887': 'burlywood',
2579        '5F9EA0': 'cadetblue',
2580        '7FFF00': 'chartreuse',
2581        'D2691E': 'chocolate',
2582        'FF7F50': 'coral',
2583        '6495ED': 'cornflowerblue',
2584        'FFF8DC': 'cornsilk',
2585        'DC143C': 'crimson',
2586        '00008B': 'darkblue',
2587        '008B8B': 'darkcyan',
2588        'B8860B': 'darkgoldenrod',
2589        'A9A9A9': 'darkgrey',
2590        '006400': 'darkgreen',
2591        'BDB76B': 'darkkhaki',
2592        '8B008B': 'darkmagenta',
2593        '556B2F': 'darkolivegreen',
2594        'FF8C00': 'darkorange',
2595        '9932CC': 'darkorchid',
2596        '8B0000': 'darkred',
2597        'E9967A': 'darksalmon',
2598        '8FBC8F': 'darkseagreen',
2599        '483D8B': 'darkslateblue',
2600        '2F4F4F': 'darkslategrey',
2601        '00CED1': 'darkturquoise',
2602        '9400D3': 'darkviolet',
2603        'FF1493': 'deeppink',
2604        '00BFFF': 'deepskyblue',
2605        '1E90FF': 'dodgerblue',
2606        'B22222': 'firebrick',
2607        'FFFAF0': 'floralwhite',
2608        '228B22': 'forestgreen',
2609        'FF00FF': 'magenta',
2610        'DCDCDC': 'gainsboro',
2611        'F8F8FF': 'ghostwhite',
2612        'FFD700': 'gold',
2613        'DAA520': 'goldenrod',
2614        '008000': 'green',
2615        'ADFF2F': 'greenyellow',
2616        'F0FFF0': 'honeydew',
2617        'FF69B4': 'hotpink',
2618        'CD5C5C': 'indianred',
2619        '4B0082': 'indigo',
2620        'FFFFF0': 'ivory',
2621        'F0E68C': 'khaki',
2622        'E6E6FA': 'lavender',
2623        'FFF0F5': 'lavenderblush',
2624        '7CFC00': 'lawngreen',
2625        'FFFACD': 'lemonchiffon',
2626        'ADD8E6': 'lightblue',
2627        'F08080': 'lightcoral',
2628        'E0FFFF': 'lightcyan',
2629        'FAFAD2': 'lightgoldenrodyellow',
2630        'D3D3D3': 'lightgrey',
2631        '90EE90': 'lightgreen',
2632        'FFB6C1': 'lightpink',
2633        'FFA07A': 'lightsalmon',
2634        '20B2AA': 'lightseagreen',
2635        '87CEFA': 'lightskyblue',
2636        'B0C4DE': 'lightsteelblue',
2637        'FFFFE0': 'lightyellow',
2638        '00FF00': 'lime',
2639        '32CD32': 'limegreen',
2640        'FAF0E6': 'linen',
2641        '66CDAA': 'mediumaquamarine',
2642        '0000CD': 'mediumblue',
2643        'BA55D3': 'mediumorchid',
2644        '9370DB': 'mediumpurple',
2645        '3CB371': 'mediumseagreen',
2646        '7B68EE': 'mediumslateblue',
2647        '00FA9A': 'mediumspringgreen',
2648        '48D1CC': 'mediumturquoise',
2649        'C71585': 'mediumvioletred',
2650        'F5FFFA': 'mintcream',
2651        'FFE4E1': 'mistyrose',
2652        'FFE4B5': 'moccasin',
2653        'FFDEAD': 'navajowhite',
2654        '000080': 'navy',
2655        'FDF5E6': 'oldlace',
2656        '6B8E23': 'olivedrab',
2657        'FFA500': 'orange',
2658        'FF4500': 'orangered',
2659        'DA70D6': 'orchid',
2660        'EEE8AA': 'palegoldenrod',
2661        '98FB98': 'palegreen',
2662        'AFEEEE': 'paleturquoise',
2663        'DB7093': 'palevioletred',
2664        'FFEFD5': 'papayawhip',
2665        'FFDAB9': 'peachpuff',
2666        'CD853F': 'peru',
2667        'FFC0CB': 'pink',
2668        'DDA0DD': 'plum',
2669        'B0E0E6': 'powderblue',
2670        'FF0000': 'red',
2671        'BC8F8F': 'rosybrown',
2672        '4169E1': 'royalblue',
2673        '8B4513': 'saddlebrown',
2674        'FA8072': 'salmon',
2675        'F4A460': 'sandybrown',
2676        '2E8B57': 'seagreen',
2677        'FFF5EE': 'seashell',
2678        'A0522D': 'sienna',
2679        'C0C0C0': 'silver',
2680        '87CEEB': 'skyblue',
2681        '6A5ACD': 'slateblue',
2682        'FFFAFA': 'snow',
2683        '00FF7F': 'springgreen',
2684        '4682B4': 'steelblue',
2685        'D2B48C': 'tan',
2686        '008080': 'teal',
2687        'D8BFD8': 'thistle',
2688        'FF6347': 'tomato',
2689        '40E0D0': 'turquoise',
2690        'EE82EE': 'violet',
2691        'F5DEB3': 'wheat',
2692        'FFFFFF': 'white',
2693        'F5F5F5': 'whitesmoke',
2694        'FFFF00': 'yellow',
2695        '9ACD32': 'yellowgreen'
2696    },
2697
2698    buildCallback: function(jQueryelm) {
2699        var that = this;
2700
2701        jQueryelm.append('<div class="cp-patch"><div></div></div><div class="cp-disp"></div>');
2702    },
2703
2704    cssAddon: // could also be in a css file instead
2705        '.cp-patch{float:left; margin:9px 0 0;' +
2706            'height:24px; width: 24px; border:1px solid #aaa;}
2706' +
2707            
2708        '.cp-patch{background-image: url(\'data:image/gif;base64,R0lGODlhDAAMAIABAMzMzP///yH5BAEAAAEALAAAAAAMAAwAAAIWhB+ph5ps3IMyQFBvzVRq3zmfGC5QAQA7\');}' +
2709
2710        '.cp-patch div{height:24px; width: 24px;}' +
2711        '.cp-disp{padding:4px 0 4px 4px; margin-top:10px; font-size:12px;' +
2712            'height:16px; line-height:16px; color:#333;}' +
2713        '.cp-color-picker{border:1px solid #999; padding:8px; box-shadow:5px 5px 16px rgba(0,0,0,0.4);' +
2714            'background:#eee; overflow:visible; border-radius:3px;}' +
2715        '.cp-color-picker:after{content:""; display:block; ' +
2716            'position:absolute; top:-8px; left:8px; border:8px solid #eee; border-width: 0px 8px 8px;' +
2717            'border-color: transparent transparent #eee}' +
2718        // simulate border...
2719        '.cp-color-picker:before{content:""; display:block; ' +
2720            'position:absolute; top:-9px; left:8px; border:8px solid #eee; border-width: 0px 8px 8px;' +
2721            'border-color: transparent transparent #999}' +
2722        '.cp-xy-slider{border:1px solid #aaa; margin-bottom:10px; width:150px; height:150px;}' +
2723        '.cp-xy-slider:active {cursor:none;}' +
2724        '.cp-xy-cursor{width:12px; height:12px; margin:-6px}' +
2725        '.cp-z-slider{margin-left:8px; border:1px solid #aaa; height:150px; width:24px;}' +
2726        '.cp-z-cursor{border-width:5px; margin-top:-5px;}' +
2727        '.cp-color-picker .cp-alpha{width:152px; margin:10px 0 0; height:6px; border-radius:6px;' +
2728            'overflow:visible; border:1px solid #aaa; box-sizing:border-box;' +
2729            'background: linear-gradient(to right, rgba(238,238,238,1) 0%,rgba(238,238,238,0) 100%);}' +
2730        '.cp-alpha-cursor{background: #eee; border-radius: 100%;' +
2731            'width:14px; height:14px; margin:-5px -7px; border:1px solid #999!important;' +
2732            'box-shadow:inset -2px -4px 3px #ccc}' +
2733                     '.cp-xy-slider{height:100px}' +
2734        '.cp-z-slider{height:100px}' +
2735        '.cp-xy-slider, .cp-patch, .cp-z-slider{box-shadow: inset 1px 1px 8px rgba(0,0,0,.15),' +
2736            ' inset -1px -1px 6px rgba(0,0,0,.15);',
2737
2738    renderCallback: function(jQueryelm, toggled) {
2739        var colors = this.color.colors,
2740            rgb = colors.RND.rgb;
2741
2742        jQuery('.cp-patch div').css({'background-color': jQueryelm[0].style.backgroundColor});
2743        jQuery('.cp-disp').text(this.color.options.colorNames[colors.HEX] || jQueryelm.val());
2744        if (toggled === true) {
2745            // here you can recalculate position after showing the color picker
2746            // in case it doesn't fit into view.
2747            jQuery('.trigger').removeClass('active');
2748            jQueryelm.closest('.trigger').addClass('active');
2749        } else if (toggled === false) {
2750            jQueryelm.closest('.trigger').removeClass('active');
2751        }
2752                    
2753                    jQueryelm.trigger("color.change", [toggled]);
2754    } });    
2755};
2756
2757CTL_WP_STUDIO.prototype.createAdminSelect2 = function( oNodeSelect ){
2758
2759    var szTypeSearch     = oNodeSelect.attr("data-type-search");
2760    var szCustomPostType = oNodeSelect.attr("data-custom-post-type");
2761    var szGroupSlug      = oNodeSelect.attr("data-group-slug");
2762    var iImage           = parseInt(oNodeSelect.attr("data-get-image"));
2763
2764    var fnTemplateRendering = function(state) {
2765        if(state.img){
2766            return jQuery('<img onerror="g_oCTLWPStudio.onImageError(this)"class="ctl-wp-studio-select2-option-img" src="' + state.img + '"/><span>' + state.text + "</span>");
2767        }else if ( state.svg ){
2768            return jQuery( state.svg + '<span>' + state.text + "</span>");                
2769        }else if ( state.element && state.element.attributes && 
2770                    state.element.attributes["data-color"]){
2771            return jQuery( "<span class='ctl-wp-studio-editor-palette-preview'><svg width='18' height='18'><rect width='100%' height='100%' style='fill:"+jQuery(state.element).attr("data-color")+";' /></svg></span><span>" + state.text + "</span>");  
2772        }else{
2773            return state.text;
2774        }
2775    };
2776
2777    var oConfig = {  
2778        width: '100%', // Forza la larghezza corretta
2779        templateSelection : fnTemplateRendering,
2780        templateResult: fnTemplateRendering,  
2781        language: {
2782            inputTooShort: function (args) {
2783                var remainingChars = args.minimum - args.input.length;
2784
2785                var message = g_oCTLWPStudio._oLangAdmin["Please enter"] +
2786                            " " + remainingChars + " " + 
2787                            g_oCTLWPStudio._oLangAdmin["or more characters"];
2788
2789                return message;
2790            },                
2791            errorLoading: function () {
2792                return g_oCTLWPStudio._oLangAdmin["The results could not be loaded."];
2793            },
2794            loadingMore: function () {
2795                return g_oCTLWPStudio._oLangAdmin["Loading more results..."];
2796            },                
2797            searching: function(){
2798                return g_oCTLWPStudio._oLangAdmin["Searching..."];
2799            },
2800            noResults: function(){
2801                return g_oCTLWPStudio._oLangAdmin["No Results Found!"];
2802            }
2803        },
2804        escapeMarkup: function (markup) {
2805            return markup;
2806        },            
2807        // minimumInputLength: 3
2808    };
2809
2810    oConfig["placeholder"] = g_oCTLWPStudio._oLangAdmin["Search..."];    
2811    oConfig["allowClear"]  = true;
2812
2813    if ( szTypeSearch != "QUERY_SET_FILTER_FIXED_SET" && szTypeSearch != undefined){
2814        oConfig["ajax"] = {
2815            url: ajaxurl,
2816            dataType: 'json',
2817            type: 'POST',
2818            processResults: function (data) {
2819                // Tranforms the top-level key of the response object from 'items' to 'results'                  
2820                oNodeSelect.prop("data-items", data.items);     
2821                return {
2822                results: data.items
2823                };
2824            },              
2825            data: function (params) {
2826                
2827            var query = {
2828                search: params.term,
2829                page: params.page || -1,
2830                type_search: szTypeSearch,
2831                custom_post_type : szCustomPostType,
2832                group_slug : szGroupSlug,
2833
2834                action: g_oCTLWPStudio._szPluginCode,
2835                image : iImage,
2836                execute: "select2-search"
2837            };
2838            
2839            for( var i = 0; i < g_oCTLWPStudio._aSelect2AjaxDataFilters.length; i++ ){
2840                var oFilter = g_oCTLWPStudio._aSelect2AjaxDataFilters[i];                    
2841                query = oFilter.cb.call( oFilter.cbOwner, query, oNodeSelect );
2842            }
2843
2844            // Query parameters will be ?search=[term]&page=[page]
2845            return query;
2846            }
2847        };
2848    }
2849
2850    oNodeSelect.select2(oConfig).on("change", function (e) {
2851        for( var i = 0; i < g_oCTLWPStudio._aSelect2ChangeValue.length; i++ ){
2852            var oCallback = g_oCTLWPStudio._aSelect2ChangeValue[i];                    
2853            oCallback.cb.call( oCallback.cbOwner, oNodeSelect, jQuery(this).val() );
2854        }            
2855    });  
2856    
2857	setTimeout(function(){
2858		if(oNodeSelect.next('.select2-container').length === 0) {
2859			console.error("Select2 fallito su:", oNodeSelect.attr('id'), "Riprovo...");
2860
2861			g_oCTLWPStudio.createAdminSelect2(oNodeSelect);
2862		}
2863	}, 100);    
2864};
2865
2866CTL_WP_STUDIO.prototype.refreshDialogComponents = function( oNodeParent ){
2867
2868    let oParent = this;
2869
2870    // refresh dialog components
2871    oNodeParent.find(".ctl-wp-studio-tabs-container").tabs({ active: 0 });            
2872    oNodeParent.find(".ctl-wp-studio-choose-color-container input").each(function(){
2873        g_oCTLWPStudio.activateColorPicker(jQuery(this));    
2874    });
2875
2876    oNodeParent.find( ".ctl-wp-studio-form-control-wrapper .ctl-wp-studio-select2-search" ).each(function(){
2877        g_oCTLWPStudio.createAdminSelect2(jQuery(this));
2878    });  
2879
2880    oNodeParent.find( ".ctl-wp-studio-select2-static" ).each(function(){
2881        g_oCTLWPStudio.createAdminSelect2(jQuery(this));
2882    });  
2883
2884    g_oCTLWPStudio.initSelectPalette(oNodeParent);
2885
2886    oNodeParent.find(".ace-editor").each(function(){        
2887        var oNodeTextArea = jQuery(this).find("textarea");
2888        var oNodeAceTarget = jQuery(this).find(".ace-target");
2889        var editor = ace.edit(oNodeAceTarget[0]);
2890        editor.$blockScrolling = Infinity;
2891        editor.setTheme("ace/theme/chrome");        
2892        
2893        editor.insert( oNodeTextArea.val() );
2894        editor.getSession().on('change', function(e) {
2895            oNodeTextArea.val( editor.getValue() );
2896        });           
2897        
2898        if ( jQuery(this).hasClass("ace-js-language")){
2899            editor.getSession().setMode("ace/mode/javascript");
2900        }else if ( jQuery(this).hasClass("ace-php-language")){
2901            editor.getSession().setMode("ace/mode/php");            
2902            editor.getSession().setMode({path:"ace/mode/php", inline:true});
2903        }         
2904    });  
2905
2906    oNodeParent.find(".ctl-wp-studio-tabs-container").each(function(){  
2907        jQuery(this).tabs({ active: 0 });
2908        if ( jQuery(this).hasClass("ctl-wp-studio-tabs-container-vertical") ){
2909            jQuery(this).addClass("ui-tabs-vertical ui-helper-clearfix");
2910            jQuery(this).find("li").removeClass( "ui-corner-top" ).addClass( "ui-corner-left" );
2911        }
2912    });
2913    
2914    oNodeParent.find(".ctl-wp-studio-sortable-select-list-selected").each(function(){        
2915        var oNodeList   = jQuery(this);
2916        var oNodeSelect = jQuery(this).closest(".ctl-wp-studio-settings-sortable-select-container").find("select");
2917
2918        jQuery(this).sortable({
2919            update : function(){           
2920                oNodeSelect.html("");
2921                oNodeList.find("li").each(function(){
2922                    oNodeSelect.append('<option value="'+ jQuery(this).attr("data-value") +'" selected="selected">'+jQuery(this).html()+'</option>');
2923                });
2924                
2925            }
2926        }).disableSelection();
2927    });
2928
2929    oNodeParent.find(".ctl-wp-studio-sortable").each(function(){
2930        oParent.makePostTableSortable(jQuery(this));
2931    });    
2932
2933    oNodeParent.find(".ctl-wp-studio-choose-repeater-key-value-container ul").each(function(){                
2934        jQuery(this).sortable().disableSelection();
2935    });      
2936    oNodeParent.find(".ctl-wp-studio-form-control-repeater ul").each(function(){                
2937        jQuery(this).sortable().disableSelection();
2938    });    
2939    oNodeParent.find(".ctl-wp-studio-choose-repeater-container ul").each(function(){                
2940        jQuery(this).sortable().disableSelection();
2941    });   
2942         
2943};
2944
2945CTL_WP_STUDIO.prototype.initSelectPalette = function( oNodeParent ){
2946
2947    if (!oNodeParent){
2948        oNodeParent = jQuery("body");
2949    }
2950
2951    oNodeParent.find('.ctl-wp-studio-palette-container select').on("input", function(){
2952        var oNodeInput = jQuery(this).closest(".ctl-wp-studio-choose-color-container").
2953                                                    find(".ctl-wp-studio-color-input");
2954        oNodeInput.val('');
2955        oNodeInput.attr("style","");
2956    });
2957
2958    oNodeParent.find(".ctl-wp-studio-color-input").each( function(){
2959        jQuery(this).on("color.change", 
2960            function( e, bColorPickerAppeared ){
2961                if ( bColorPickerAppeared !== undefined ){
2962                    return;
2963                }
2964                jQuery(this).closest(".ctl-wp-studio-choose-color-container").
2965                            find(".ctl-wp-studio-palette-container select").val(null).trigger("change");
2966            }
2967        );        
2968   });
2969
2970};
2971
2972CTL_WP_STUDIO.prototype.replaceAll = function(source, search, replacement) {
2973    return source.replace(new RegExp(search, 'g'), replacement);
2974};
2975
2976CTL_WP_STUDIO.prototype.getUrlVar = function(sParam){
2977    var sPageURL = window.location.search.substring(1);
2978    var sURLVariables = sPageURL.split('&');
2979    for (var i = 0; i < sURLVariables.length; i++) {
2980        var sParameterName = sURLVariables[i].split('=');
2981        if (sParameterName[0] === sParam) {
2982            return sParameterName[1];
2983        }
2984    }
2985    return null;
2986};
2987
2988CTL_WP_STUDIO.prototype.redirect = function(szUrlDest, bLoading, bCheckHardRedirect, aPostParams = null){
2989    var szRedirect = szUrlDest;
2990    
2991    if ( bCheckHardRedirect === true && this.getUrlVar("hredirect") ){
2992        szRedirect = Base64.decode(this.getUrlVar("hredirect"));
2993    }
2994    
2995    if (bLoading === true){
2996       this.showLoading(""); 
2997    }    
2998    
2999    if(aPostParams){
3000        var form = jQuery('<form>', {
3001            'method': 'POST',
3002            'action': szRedirect
3003        });
3004        Object.keys(aPostParams).forEach(function(key){
3005            form.append(jQuery('<input>', {
3006                'type': 'hidden',
3007                'name': key,
3008                'value': aPostParams[key]
3009            }));
3010        });
3011        jQuery('body').append(form);
3012        form.submit();
3013    }else{
3014        window.location.href = szRedirect;
3015    }
3016};
3017CTL_WP_STUDIO.prototype.appendHtml = function( oNode, html ){
3018    oNode.append(html);
3019    jQuery(document).trigger("append-html", [ oNode, html ]);
3020};
3021
3022CTL_WP_STUDIO.prototype.setHtml = function( oNode, html ){
3023    oNode.html(html);
3024    jQuery(document).trigger("set-html", [ oNode, html ]);
3025};
3026
3027CTL_WP_STUDIO.prototype.getStringUrlParam = function(szUrl, szParam){
3028    var vars = [], hash;
3029    var hashes = szUrl.slice(szUrl.indexOf('?') + 1).split('&');
3030    for(var i = 0; i < hashes.length; i++)
3031    {
3032        hash = hashes[i].split('=');
3033        vars.push(hash[0]);
3034        vars[hash[0]] = hash[1];
3035    }
3036    return vars[szParam];
3037};
3038
3039CTL_WP_STUDIO.prototype.getUrlParam = function(a){
3040    a = encodeURIComponent(a);
3041    for(var f=window.location.search.substring(1).split("&"),c=0;c<f.length;c++){var e=f[c].split("=");if(e[0]===a)return e[1];}
3042};
3043
3044CTL_WP_STUDIO.prototype.getUrlVars = function(urlVars) {
3045    urlVars = urlVars.trim();
3046    var oFinalData = new Array();
3047    var hashes = urlVars.split('&');
3048    for (var i = 0; i < hashes.length; i++) {
3049        var hash = hashes[i].split('=');
3050        oFinalData[hash[0]] = hash[1];
3051    }
3052    return oFinalData;
3053};
3054
3055CTL_WP_STUDIO.prototype.closeDlg = function(idDlg){
3056
3057    jQuery("body").removeClass("ctl-dlg-fullscreen");
3058
3059    if( idDlg && jQuery('#'+idDlg).length > 0 ){
3060        jQuery('#'+idDlg).remove();
3061    }    
3062};
3063
3064CTL_WP_STUDIO.prototype.loadingSetMessage = function(id, szMsg) {
3065    jQuery("#"+id).find("p").text(szMsg);
3066};
3067
3068             
3069CTL_WP_STUDIO.prototype.removeURLParameter = function(url, parameter) {
3070    //prefer to use l.search if you have a location/link object
3071    var urlparts= url.split('?');
3072    if (urlparts.length>=2) {
3073
3074        var prefix= encodeURIComponent(parameter)+'=';
3075        var pars= urlparts[1].split(/[&;]/g);
3076
3077        //reverse iteration as may be destructive
3078        for (var i= pars.length; i-- > 0;) {
3079            //idiom for string.startsWith
3080            if (pars[i].lastIndexOf(prefix, 0) !== -1) {
3081                pars.splice(i, 1);
3082            }
3083        }
3084
3085        url= urlparts[0]+'?'+pars.join('&');
3086        return url;
3087    } else {
3088        return url;
3089    }
3090};
3091
3092
3093CTL_WP_STUDIO.prototype.removeParameterFromUrl = function(szURL, szKey) {
3094    if(!szURL || !szKey){
3095        return;
3096    }
3097    oURLResult = new URL(szURL);
3098    oURLResult.searchParams.delete(szKey);
3099    return oURLResult.toString();
3100};
3101
3102CTL_WP_STUDIO.prototype.addParameterToUrl = function(url, parameterName, parameterValue, atStart/*Add param before others*/){
3103    replaceDuplicates = true;
3104    if(url.indexOf('#') > 0){
3105        var cl = url.indexOf('#');
3106        urlhash = url.substring(url.indexOf('#'),url.length);
3107    } else {
3108        urlhash = '';
3109        cl = url.length;
3110    }
3111    sourceUrl = url.substring(0,cl);
3112
3113    var urlParts = sourceUrl.split("?");
3114    var newQueryString = "";
3115
3116    if (urlParts.length > 1)
3117    {
3118        var parameters = urlParts[1].split("&");
3119        for (var i=0; (i < parameters.length); i++)
3120        {
3121            var parameterParts = parameters[i].split("=");
3122            if (!(replaceDuplicates && parameterParts[0] === parameterName))
3123            {
3124                if (newQueryString === "")
3125                    newQueryString = "?";
3126                else
3127                    newQueryString += "&";
3128                newQueryString += parameterParts[0] + "=" + (parameterParts[1]?parameterParts[1]:'');
3129            }
3130        }
3131    }
3132    if (newQueryString === "")
3133        newQueryString = "?";
3134
3135    if(atStart){
3136        newQueryString = '?'+ parameterName + "=" + parameterValue + (newQueryString.length>1?'&'+newQueryString.substring(1):'');
3137    } else {
3138        if (newQueryString !== "" && newQueryString !== '?')
3139            newQueryString += "&";
3140        newQueryString += parameterName + "=" + (parameterValue?parameterValue:'');
3141    }
3142    return urlParts[0] + newQueryString + urlhash;
3143};
3144
3145CTL_WP_STUDIO.prototype.getUrlParams = function(){
3146  const params = new URLSearchParams(window.location.search);
3147  const obj = {};
3148
3149  for (const [key, value] of params.entries()) {
3150    // Verifichiamo se la chiave termina con []
3151    if (key.endsWith('[]')) {
3152      const cleanKey = key.slice(0, -2); // Rimuoviamo [] dalla chiave
3153      
3154      if (!obj[cleanKey]) {
3155        obj[cleanKey] = []; // Inizializziamo l'array se non esiste
3156      }
3157      obj[cleanKey].push(value);
3158    } else {
3159      // Comportamento standard per chiavi normali
3160      obj[key] = value;
3161    }
3162  }
3163
3164  return obj;
3165}
3166CTL_WP_STUDIO.prototype.sanitizeTitle = function(str){
3167	str = str.replace(/^\s+|\s+$/g, ''); // trim
3168	str = str.toLowerCase();
3169
3170	// remove accents, swap ñ for n, etc
3171	var from = "àáäâèéëêìíïîòóöôùúüûñçěščřžýúůďťň·/_,:;";
3172	var to   = "aaaaeeeeiiiioooouuuuncescrzyuudtn------";
3173
3174	for (var i=0, l=from.length ; i<l ; i++){
3175		str = str.replace(new RegExp(from.charAt(i), 'g'), to.charAt(i));
3176	}
3177
3178	str = str.replace('.', '-') // replace a dot by a dash 
3179		.replace(/[^a-z0-9 -]/g, '') // remove invalid chars
3180		.replace(/\s+/g, '-') // collapse whitespace and replace by a dash
3181		.replace(/-+/g, '-') // collapse dashes
3182		.replace( /\//g, '' ); // collapse all forward-slashes
3183
3184	return str;
3185};
3186
3187CTL_WP_STUDIO.prototype.numberFormat = function(number, decimals, dec_point, thousands_sep) {
3188
3189    number = (number + '')
3190        .replace(/[^0-9+\-Ee.]/g, '');
3191    var n = !isFinite(+number) ? 0 : +number,
3192        prec = !isFinite(+decimals) ? 0 : Math.abs(decimals),
3193        sep = (typeof thousands_sep === 'undefined') ? ',' : thousands_sep,
3194        dec = (typeof dec_point === 'undefined') ? '.' : dec_point,
3195        s = '',
3196        toFixedFix = function(n, prec) {
3197            var k = Math.pow(10, prec);
3198            return '' + (Math.round(n * k) / k)
3199                    .toFixed(prec);
3200        };
3201    // Fix for IE parseFloat(0.55).toFixed(0) = 0;
3202    s = (prec ? toFixedFix(n, prec) : '' + Math.round(n))
3203        .split('.');
3204    if (s[0].length > 3) {
3205        s[0] = s[0].replace(/\B(?=(?:\d{3})+(?!\d))/g, sep);
3206    }
3207    if ((s[1] || '')
3208            .length < prec) {
3209        s[1] = s[1] || '';
3210        s[1] += new Array(prec - s[1].length + 1)
3211            .join('0');
3212    }
3213    return s.join(dec);
3214};
3215
3216CTL_WP_STUDIO.prototype.moveAtIndex = function(oTableBodySelector, i, oContent) {
3217
3218    if(i < 0){
3219        return false;
3220    }
3221
3222    if(i===0){
3223        oContent.prependTo(oTableBodySelector);
3224        return true;
3225    }else if( i < oTableBodySelector.children().length ){
3226        oContent.insertAfter(oTableBodySelector.children().eq(i));
3227        return true;
3228    }
3229    return false;
3230};    
3231
3232
3233CTL_WP_STUDIO.prototype.getCSS = function(a) {
3234    var sheets = document.styleSheets, o = {};
3235    for (var i in sheets) {
3236        var rules = sheets[i].rules || sheets[i].cssRules;
3237        for (var r in rules) {
3238            if (a.is(rules[r].selectorText)) {
3239                o = $.extend(o, this.__css2json(rules[r].style), this.__css2json(a.attr('style')));
3240            }
3241        }
3242    }
3243    return o;
3244};
3245
3246CTL_WP_STUDIO.prototype.arraySortBy = function(aData, szProp) {
3247    function __compare(a,b){
3248        if (a[szProp] < b[szProp]){
3249            return -1;    
3250        }        
3251        if (a[szProp] > b[szProp]){
3252          return 1;
3253        }
3254        return 0;
3255    }
3256
3257    aData.sort(__compare); 
3258};
3259
3260CTL_WP_STUDIO.prototype.__css2json = function(css) {
3261    var s = {};
3262    if (!css) return s;
3263    if (css instanceof CSSStyleDeclaration) {
3264        for (var i in css) {
3265            if ((css[i]).toLowerCase) {
3266                s[(css[i]).toLowerCase()] = (css[css[i]]);
3267            }
3268        }
3269    } else if (typeof css === "string") {
3270        css = css.split("; ");
3271        for (var i in css) {
3272            var l = css[i].split(": ");
3273            s[l[0].toLowerCase()] = (l[1]);
3274        }
3275    }
3276    return s;
3277};
3278
3279CTL_WP_STUDIO.prototype.getScroll = function(){
3280    if(window.pageYOffset !== undefined){
3281        return { x : pageXOffset, y: pageYOffset};
3282    }
3283    else{
3284        var sx, sy, d= document, r= d.documentElement, b= d.body;
3285        sx= r.scrollLeft || b.scrollLeft || 0;
3286        sy= r.scrollTop || b.scrollTop || 0;
3287        return { x:sx, y:sy };
3288    }
3289};
3290
3291CTL_WP_STUDIO.prototype.shareTwitter = function( szLink, szName, szDescription ){
3292    var szTweetbegin = 'http://twitter.com/home?status=';
3293    var szTweettxt = szDescription + " - " + szName + " " + szLink;
3294    var szFinaltweet = szTweetbegin +encodeURIComponent(szTweettxt);
3295    window.open(szFinaltweet,'_blank');
3296};
3297
3298CTL_WP_STUDIO.prototype.shareFacebook = function( szLink, szName, szC
3298aption, szDescription, szPicture ){
3299    FB.ui({
3300        method: 'feed',
3301        display : "popup",
3302        link: szLink,
3303        caption: szCaption,
3304        description: szDescription,
3305        name: szName,
3306        picture : szPicture
3307    }, function(response){
3308
3309    });
3310};
3311
3312CTL_WP_STUDIO.prototype.filterList = function( oNodeInput ){
3313
3314    var oParent = this;
3315    var szKey                = jQuery.trim(oNodeInput.val()).toLowerCase();
3316    var szDataTitleSelector  = oNodeInput.attr("data-title-selector");
3317    var szDataTargetSelector = oNodeInput.attr("data-target-selector");
3318    var szDataDisplayTrue    = oNodeInput.attr("data-display-true");    
3319    var oNodeTableData = oNodeInput.closest(".ctl-wp-studio-list-wrapper");
3320    oNodeTableData = oNodeTableData.find(".ctl-wp-studio-list-content");    
3321    var aTitleRows = oNodeTableData.find(szDataTitleSelector);
3322         
3323    aTitleRows.each(function(){
3324
3325        var oNodeTargetSelector = jQuery(this).closest(szDataTargetSelector);
3326        var szSrcNameGame       = jQuery.trim(jQuery(this).text());
3327
3328        var szName              = szSrcNameGame.toLowerCase();        
3329        var index               = szName.indexOf(szKey);
3330
3331        if (index >= 0) {
3332            var szNewString = szSrcNameGame.substr(0,index) +
3333                    "<strong>" +  szSrcNameGame.substr(index,szKey.length) + "</strong>" +
3334                szSrcNameGame.substr(index+szKey.length, szSrcNameGame.length - (index + szKey.length));
3335                           
3336
3337            if( oNodeTargetSelector.hasClass(oParent._cssClassDomain + "list-item-selected-hidden") === false ){
3338                jQuery(this).addClass("data-found");
3339                jQuery(this).removeClass("data-not-found");
3340                jQuery(this).html(szNewString); 
3341            }else{
3342                jQuery(this).addClass("data-not-found");
3343                jQuery(this).removeClass("data-found");
3344                jQuery(this).html(jQuery(this).text()); 
3345            }
3346        } else {            
3347            jQuery(this).addClass("data-not-found");
3348            jQuery(this).removeClass("data-found");
3349            jQuery(this).html(jQuery(this).text());
3350        }
3351        
3352        if ( oNodeTargetSelector.find(".data-found").length > 0 ){
3353            oNodeTargetSelector.css("display", szDataDisplayTrue);              
3354        }else{
3355            oNodeTargetSelector.css("display", "none");  
3356        }
3357    });
3358};
3359
3360CTL_WP_STUDIO.prototype.cloneNode = function( oNodeSource ){
3361    var oNodeClone = oNodeSource.clone();
3362    
3363    var oCloneSelectOptions    = oNodeClone.find('select');
3364    var oOriginalSelectOptions = oNodeSource.find('select');    
3365    
3366    if(oOriginalSelectOptions){
3367        oOriginalSelectOptions.each(function(index){
3368            var aCloneOptions = oCloneSelectOptions.eq(index).find("option");
3369            var aOriginalOptions = jQuery(this).find("option");
3370
3371            aOriginalOptions.each(function(index){
3372                aCloneOptions.eq(index).prop('selected',
3373                                jQuery(this).prop('selected'));                                
3374            });
3375        });                       
3376    } 
3377
3378
3379    return oNodeClone;
3380};
3381
3382CTL_WP_STUDIO.prototype.getSortableHelper = function(){
3383    var oParent = this;
3384    var fixHelperModified = function(e, oNode) {
3385        var $originals = oNode.children();
3386        var $helper    = oParent.cloneNode(oNode);       
3387        var szTagName  = $helper[0].tagName.toLowerCase();
3388        
3389        $helper.children().each(function(index){
3390            jQuery(this).width($originals.eq(index).width());
3391            jQuery(this).css("background-color","#ffe7b3");
3392            jQuery(this).closest(szTagName).css("border","1px solid #ffc64c");
3393            jQuery(this).closest(szTagName).css("background-color","#ffe7b3");
3394            jQuery(this).closest(szTagName + " *").each( function(){
3395                jQuery(this).css("background-color","#ffe7b3");
3396            });
3397        });  
3398        
3399        return $helper;
3400    };
3401    return fixHelperModified;
3402};
3403
3404CTL_WP_STUDIO.prototype.makePostTableSortable = function( oTBodyNode){
3405    var oParent = this;
3406
3407    if( this._oLangCommon["bIsMobile"] !== 1){
3408        oTBodyNode.sortable({
3409            update : function(){
3410                oParent.updatePostOrdering();
3411            },
3412            helper: oParent.getSortableHelper(),
3413            placeholder: "ui-sortable-placeholder"
3414        }).disableSelection();                              
3415    }    
3416};
3417
3418CTL_WP_STUDIO.prototype.updatePostOrdering = function(){    
3419    if( jQuery("#the-list").hasClass("ctl-wp-studio-no-update-post-ordering") ){
3420        return;
3421    }
3422    
3423    var oParent   = this;
3424    var aOrdering = [];    
3425    
3426    jQuery("#the-list tbody tr").each(function(){
3427        aOrdering.push(jQuery(this).attr("id").split("-")[1]);
3428    });
3429
3430    jQuery.ajax({
3431        url: oParent._oLangCommon.ajaxurl,
3432        type: "post",
3433        data: { 
3434            "execute"  : "set-post-ordering",
3435            "action"   : oParent._szPluginCode,
3436            "ordering" : aOrdering
3437        }
3438    }).done(function (data) {
3439        data = oParent.getUrlVars(data);
3440        if (data.status === "false"){
3441            alert(oParent._oLangCommon["Ooops! Something Went Wrong!"]);
3442        }else{
3443            var i = 0;
3444            jQuery(".ctl-wp-studio-post-ordering").each(function(){
3445                jQuery(this).text(i+1);
3446                i++;
3447            });
3448        }
3449    }).fail(function (jqXHR, textStatus) {
3450        alert(oParent._oLangCommon["Ooops! Something Went Wrong!"]);
3451    });    
3452};
3453
3454CTL_WP_STUDIO.prototype.addNestedPropToObj = function (obj, name, value) {
3455    var path = name.split('.'),
3456        current = obj,
3457        len = path.length - 1,
3458        i = 0;
3459    for (; i < len; i++) {
3460        current[path[i]] = current[path[i]] || {};
3461        current = current[path[i]];
3462    }
3463    if ( 0 < path[i].indexOf( "[]" ) ) {
3464        name = path[i].replace('[]', '');
3465        current[name] = current[name] || [];
3466        current[name].push(value);
3467    } else {
3468        current[path[i]] = value;
3469    }
3470    return obj;
3471};
3472
3473CTL_WP_STUDIO.prototype.parseShortCode = function(shortCode) {
3474	var re = /(\s+|\W)|(\w+)/g;
3475	var match;
3476	var token;
3477	var curAttribute = '';
3478	var quoteChar;
3479	var mode = 'NOT STARTED';
3480	var parsedValue = {
3481		name: '',
3482		attributes: {},
3483		content: ''
3484	};
3485	var hasContent = (shortCode.match(/\]/g) || []).length;
3486	if (hasContent > 2) {
3487		throw ('invalid shortCode: match more then 2 tokens "]". Use only shortcode with this function. Example "[name]teste[/name]" or "[name prop=value]"');
3488	} else if (hasContent === 1) {
3489		hasContent = false;
3490	} else {
3491		hasContent = true;
3492	}
3493
3494	while ((match = re.exec(shortCode)) !== null) {
3495		token = match[0];
3496		if (mode === 'COMPLETE') {
3497			break;
3498		}
3499
3500		switch (mode) {
3501		case 'NOT STARTED':
3502			if (token === '[') {
3503				mode = 'GETNAME';
3504			}
3505			break;
3506		case 'GETNAME':
3507			if (!(/\s/.test(token))) {
3508				if (!(/\]/.test(token))) {
3509					parsedValue.name += token;
3510				} else {
3511					mode = 'GETCONTENT';
3512				}
3513			} else if (parsedValue.name) {
3514				mode = 'PARSING';
3515			}
3516			break;
3517		case 'GETCONTENT':
3518			if (!(/\[/.test(token))) {
3519				parsedValue.content += token;
3520			} else if (parsedValue.name) {
3521				mode = 'COMPLETE';
3522			}
3523			break;
3524		case 'PARSING':
3525			// if non text char throw it
3526			if (token === "]") {
3527				if (hasContent === 1) {
3528					mode = 'COMPLETE';
3529				} else {
3530					mode = 'GETCONTENT';
3531				}
3532			} else if (token === "=") {
3533				if (!curAttribute) throw ('invalid token: "' + token + '" encountered at ' + match.index);
3534				else mode = 'GET ATTRIBUTE VALUE';
3535			} else if (!/\s/.test(token)) {
3536				curAttribute += token;
3537			} else if (curAttribute) {
3538				mode = 'SET ATTRIBUTE';
3539			}
3540			break;
3541		case 'SET ATTRIBUTE':
3542			// these are always from match[1]
3543			if (/\s/.test(token)) { parsedValue.attributes[curAttribute] = null; }
3544			else if (token === '=') { mode = 'GET ATTRIBUTE VALUE'; }
3545			else { throw ('invalid token: "' + token + '" encountered at ' + match.index); }
3546			break;
3547		case 'GET ATTRIBUTE VALUE':
3548			if (!(/\s/.test(token))) {
3549				if (/["']/.test(token)) {
3550					quoteChar = token;
3551					parsedValue.attributes[curAttribute] = '';
3552					mode = 'GET QUOTED ATTRIBUTE VALUE';
3553				} else {
3554					parsedValue.attributes[curAttribute] = token;
3555					curAttribute = '';
3556					mode = 'PARSING';
3557				}
3558			}
3559			break;
3560		case 'GET QUOTED ATTRIBUTE VALUE':
3561			if (/\\/.test(token)) { mode = 'ESCAPE VALUE'; }
3562			else if (token === quoteChar) {
3563				mode = 'PARSING';
3564				curAttribute = '';
3565			}
3566			else { parsedValue.attributes[curAttribute] += token; }
3567			break;
3568		case 'ESCAPE VALUE':
3569			if (/\\'"/.test(token)) { parsedValue.attributes[curAttribute] += token; }
3570			else { parsedValue.attributes[curAttribute] += '\\' + token; }
3571			mode = 'GET QUOTED ATTRIBUTE VALUE';
3572			break;
3573
3574		}
3575	}
3576	if (curAttribute && !parsedValue.attributes[curAttribute]) {
3577		parsedValue.attributes[curAttribute] = '';
3578	}
3579	return parsedValue;
3580};
3581
3582CTL_WP_STUDIO.prototype.isJsonString = function( szString ){
3583    try{
3584        JSON.parse(szString);
3585    }catch(e){
3586        return false;
3587    }
3588    return true;
3589};
3590
3591
3592CTL_WP_STUDIO.prototype.showStoppableLoading = function(szMsg, szStop){
3593    var szHtml = "";    
3594    var id = this.makeCode();
3595    szHtml += "<div id='"+id+"' class='ctl-wp-studio-loading-dlg-wrapper'>";
3596    szHtml +=   "<div class='ctl-wp-studio-dlg-block'></div>";
3597    szHtml +=   "<div class='ctl-wp-studio-dlg-content'>";
3598    szHtml +=       "<p>"+szMsg+"</p>";
3599    szHtml +=       "<i class='animate-spin ctl-wp-studio-icons-arrows-cw'></i>";
3600
3601            szHtml += "<div class='ctl-wp-studio-loading-btn-container'>";
3602                szHtml += "<div class='button-primary ctl-wp-studio-btn-stop'>" + szStop + "</div>";
3603            szHtml += "</div>";
3604
3605    szHtml +=   "</div>";
3606    szHtml += "</div>";
3607
3608    jQuery("body").append(szHtml);
3609    jQuery("#"+id +" .ctl-wp-studio-dlg-block").addClass( "ctl-wp-studio-dlg-block-show");
3610    jQuery("#"+id +" .ctl-wp-studio-dlg-content").addClass( "ctl-wp-studio-content-show");
3611
3612    return id;
3613};
3614
3615CTL_WP_STUDIO.prototype.initLoadingStopButton = function( cbStop, cbStopOwner ){
3616    this._bStopLoading = false;
3617    
3618    jQuery( "#" + this._idLoadingDlg + " ctl-wp-studio-btn-stop").on("click", function(){
3619        if( jQuery(this).attr("disabled") !== "disabled" ){
3620            jQuery(this).attr("disabled","disabled");
3621            cbStop.call(cbStopOwner);
3622        }
3623    });        
3624};  
3625
3626CTL_WP_STUDIO.prototype.createSelect2 = function( oNodeSelect ){
3627    var oParent = this;
3628    var szTypeSearch = oNodeSelect.attr("data-type-search");
3629     var szCustomPostType = oNodeSelect.attr("data-custom-post-type");
3630     var szMetaKey        = oNodeSelect.attr("data-meta-key");
3631     var szGroupSlug      = oNodeSelect.attr("data-group-slug");
3632     var szSource         = oNodeSelect.attr("data-source");
3633     var szUserRole       = oNodeSelect.attr("data-user-role");
3634     var aUserRoles       = oNodeSelect.attr("data-user-roles") ? 
3635                                    oNodeSelect.attr("data-user-roles") : "";
3636     var aPostStatuses    = oNodeSelect.attr("data-post-statuses") ? 
3637                                    oNodeSelect.attr("data-post-statuses") : "";                                    
3638     var bOwnedPosts      = oNodeSelect.attr("data-owned-posts");
3639     var iImage           = parseInt(oNodeSelect.attr("data-get-image"));
3640     var idAncestorDescendant = parseInt(oNodeSelect.attr("data-ancestor-descendant"));
3641     var iAncestorLevel       = parseInt(oNodeSelect.attr("data-ancestor-level"));
3642
3643    let szLabelSuggestion = oNodeSelect.data("label-suggestion");
3644    if ( !szLabelSuggestion ){
3645        szLabelSuggestion = g_oCTLWPStudio._oLangCommon["Search..."];
3646    }
3647
3648     if ( oNodeSelect[0].hasAttribute("readonly") ){
3649         return;
3650     }
3651
3652     var bDisabled = oNodeSelect[0].hasAttribute("disabled");
3653	
3654	var oSelectInit = {
3655         disabled : bDisabled,
3656         theme: 'bootstrap4',
3657         templateResult: function(state) {
3658             if(state.img){
3659                 return jQuery('<img onerror="g_oCTLWPStudio.onImageError(this)"class="ctl-wp-studio-select2-option-img" src="' + state.img + '"/><span>' + state.text + "</span>");
3660             }else{
3661                 return state.text;
3662             }
3663         },            
3664         language: {
3665             inputTooShort: function (args) {
3666               var remainingChars = args.minimum - args.input.length;
3667
3668               return sprintf(oParent._oLangCommon["Please enter %d or more characters"], remainingChars);
3669             },                
3670             errorLoading: function () {
3671                 return oParent._oLangCommon["The results could not be loaded."];
3672             },
3673             loadingMore: function () {
3674               return oParent._oLangCommon["Loading more results..."];
3675             },                
3676             searching: function(){
3677                 return oParent._oLangCommon["Searching..."];
3678             },
3679             noResults: function(){
3680                 return oParent._oLangCommon["No Results Found!"];
3681             }
3682         },
3683         escapeMarkup: function (markup) {
3684             return markup;
3685         },            
3686         ajax: {
3687           url: oParent._oLangCommon.ajaxurl,
3688           dataType: 'json',
3689           type: 'POST',
3690           processResults: function (data) {
3691               // Tranforms the top-level key of the response object from 'items' to 'results'
3692               oNodeSelect.prop("data-items", data.items);    
3693               return {
3694                 results: data.items
3695               };
3696           },              
3697           data: function (params) {
3698
3699            var query = {
3700                search: params.term,
3701                page: params.page || -1,
3702                type_search: szTypeSearch,
3703                image : iImage,
3704                custom_post_type : szCustomPostType,
3705                meta_key : szMetaKey,
3706                group_slug : szGroupSlug,
3707                user_role : szUserRole,
3708                user_roles : aUserRoles,
3709                post_statuses : aPostStatuses,
3710                source : szSource,
3711                action: g_oCTLWPStudio._szPluginCode,
3712                execute: "select2-search"
3713            };
3714
3715            if ( !isNaN(idAncestorDescendant)){
3716                query["ancestor_descendant"] = idAncestorDescendant;
3717            }
3718            if ( !isNaN(iAncestorLevel)){
3719                query["ancestor_level"] = iAncestorLevel;
3720            }
3721
3722            if ( bOwnedPosts ){
3723                query["owned_posts"] = 1;
3724            }            
3725
3726             for( var i = 0; i < g_oCTLWPStudio._aSelect2AjaxDataFilters.length; i++ ){
3727                 var oFilter = g_oCTLWPStudio._aSelect2AjaxDataFilters[i];                    
3728                 query = oFilter.cb.call( oFilter.cbOwner, query, oNodeSelect );
3729             }
3730
3731             // Query parameters will be ?search=[term]&page=[page]
3732             return query;
3733           }
3734         },
3735         placeholder: szLabelSuggestion,
3736      //   minimumInputLength: 3
3737     };
3738	
3739     if ( jQuery("body").hasClass("wp-admin")){
3740        delete oSelectInit["theme"];
3741     }
3742
3743	if ( oNodeSelect.closest(".input-group").length === 0 ){
3744		oSelectInit["width"]      = '100%';
3745   	    oSelectInit["allowClear"] = true;
3746	}else{
3747		if ( oNodeSelect.closest(".input-group").find(".btn-action-empty-select2").length === 0 ){
3748			oSelectInit["allowClear"] = true;
3749		}
3750	}	
3751	
3752     oNodeSelect.select2(oSelectInit).on("change", function (e) {
3753         for( var i = 0; i < g_oCTLWPStudio._aSelect2ChangeValue.length; i++ ){
3754             var oCallback = g_oCTLWPStudio._aSelect2ChangeValue[i];                    
3755             oCallback.cb.call( oCallback.cbOwner, oNodeSelect, jQuery(this).val() );
3756         }            
3757     });    
3758};
3759
3760CTL_WP_STUDIO.prototype.checkIfImageExists = function( szUrl, cbLoad, cbError ) {
3761    let oTester = new Image();
3762    oTester.onload  = cbLoad;
3763    oTester.onerror = cbError;
3764    oTester.src     = szUrl;
3765};
3766
3767CTL_WP_STUDIO.prototype.setIdLoadingDlg = function(idLoadingDlg){
3768    this._idLoadingDlg = idLoadingDlg;
3769};
3770
3771CTL_WP_STUDIO.prototype.getIdLoadingDlg = function(){
3772    return this._idLoadingDlg;
3773};
3774
3775CTL_WP_STUDIO.prototype.changeStateButton = function(id, iState){
3776    
3777    this._idLoadingDlg = this.showLoading(this._oLangCommon["Loading"]);    
3778    var oParent = this;
3779
3780    jQuery.post(
3781        oParent._oLangCommon.ajaxurl,
3782        {
3783            'action': oParent._oLangCommon["szPluginDir"],
3784            'execute': "change-state-group",
3785            'id' : id,
3786            'state' : iState
3787        }).done(
3788        function(response){
3789            var oData = oParent.getUrlVars(response);
3790            oParent.closeDlg(oParent._idLoadingDlg);
3791            if( oData["res"] === "true" ){
3792                window.location.reload();
3793            }else{
3794                alert(oParent._oLangCommon["Ooops! Something Went Wrong!"]);
3795            }
3796        }
3797    ).fail( function(){
3798        oParent.closeDlg(oParent._idLoadingDlg);
3799        alert(oParent._oLangCommon["Ooops! Something Went Wrong!"]);
3800    });
3801};
3802
3803CTL_WP_STUDIO.prototype.onImageError = function( oImage ){       
3804    oImage.src = this._oLangCommon["szDefaultImage"];     
3805};
3806
3807/**
3808 * Convert an image
3809 * to a base64 url
3810 * @param  {String}   url
3811 * @param  {Function} callback
3812 * @param  {String}   [outputFormat=image/png]
3813 */
3814CTL_WP_STUDIO.prototype.convertImgToBase64URL = function(url, callback, outputFormat){
3815	var img = new Image();
3816	img.crossOrigin = 'Anonymous';
3817	img.onload = function(){
3818		var canvas = document.createElement('CANVAS'),
3819			ctx = canvas.getContext('2d'), dataURL;
3820		canvas.height = this.height;
3821		canvas.width = this.width;
3822		ctx.drawImage(this, 0, 0);
3823		dataURL = canvas.toDataURL(outputFormat);
3824		callback(dataURL);
3825		canvas = null;
3826	};
3827	img.src = url;
3828};
3829
3830CTL_WP_STUDIO.prototype.writeCookie = function(name, value, duration) {
3831    var expiringDate = new Date();
3832    var nowDate = new Date();
3833    expiringDate.setTime(nowDate.getTime() + (parseInt(duration) * 24 * 60 * 60 * 1000));
3834    document.cookie = name + '=' + encodeURI(value) +
3835            '; expires=' + expiringDate.toGMTString() + '; path = /';
3836};
3837
3838CTL_WP_STUDIO.prototype.readCookie = function(nomeCookie) {
3839    if (document.cookie.length > 0){
3840        var start = document.cookie.indexOf(nomeCookie + "=");
3841        if (start !== -1) {
3842            start = start + nomeCookie.length + 1;
3843            var end = document.cookie.indexOf(";",start);
3844            if (end === -1) end = document.cookie.length;
3845            return decodeURI(document.cookie.substring(start,end));
3846        }else{
3847            return "";
3848        }
3849    }
3850    return "";
3851};
3852
3853CTL_WP_STUDIO.prototype.removeCookie = function(nomeCookie) {
3854    this.writeCookie(nomeCookie,'',-1);
3855};
3856
3857CTL_WP_STUDIO.prototype.isCookie = function() {
3858    document.cookie = 'test_cookie';
3859    var testcookie = (document.cookie.indexOf('test_cookie') !== -1) ? true : false;
3860    return testcookie;
3861};
3862
3863var g_oCTLWPStudio = new CTL_WP_STUDIO("ctl-wp-studio", "ctl_wp_studio_");
3864
3865window.onload = function() {
3866    var currentState = history.state;
3867    var newState = {...currentState, ctl_url: window.location.href}; // Aggiungi un marcatore 'skip'
3868    history.replaceState(newState, "");
3869};
3870
3871window.addEventListener('popstate', function(event) {
3872    if (event.state && event.state.ctl_url && event.state.ctl_url == window.location.href ){		
3873		if ( ctl_wp_studio_common_localization["szHomeUrl"] != window.location.href ){
3874			console.log(history.length);
3875			if ( history.length > 0 ){
3876				g_oCTLWPStudio.showLoading();
3877				history.go(-1);
3878			}
3879		}		
3880    }
3881});
3882
3883jQuery(window).ready(function(){    
3884    var oParent = g_oCTLWPStudio;
3885
3886    window.addEventListener('pagehide', () => {
3887        if ( jQuery(".ctl-wp-studio-loading-dlg-wrapper").length > 0 ){
3888            jQuery(".ctl-wp-studio-loading-dlg-wrapper").remove();
3889        }
3890    });
3891
3892    if(!jQuery.fn.serializeForm){
3893        jQuery.fn.serializeForm = function () {
3894            var oData = {}; 
3895            jQuery(this).find("[name]").each(function(){
3896
3897                var szName = jQuery(this).attr("name");
3898                var szNodeName = jQuery(this).prop('nodeName');
3899
3900                if ( oData[szName] === undefined){
3901                    switch( szNodeName ){
3902                        case "INPUT":{
3903                            switch( jQuery(this).attr("type") ){
3904                                case "radio":
3905                                case "checkbox":{
3906                                    if( jQuery(this).is(":checked") ){
3907                                        oData[szName] = jQuery(this).val();
3908                                    }
3909                                }break;
3910                                default:{
3911                                    oData[szName] = jQuery(this).val();
3912                                }break;
3913                            }
3914                        }break;
3915                        default:{
3916                            oData[szName] = jQuery(this).val();
3917                        }break;
3918                    }
3919                }
3920            });
3921            return oData;
3922        };  
3923    }    
3924
3925    if(!jQuery.fn.serializeObject){
3926        jQuery.fn.serializeObject = function () {
3927            var o = {},
3928                a = this.serializeArray(),
3929                i = 0,
3930                len = a.length;
3931            for (; i < len; i++) {
3932                o = oParent.addNestedPropToObj(o, a[i].name, a[i].value);
3933            }
3934            return o;
3935        };  
3936    }
3937
3938    jQuery(document).on("input", ".ctl-vulcano-strip-icon-class", function(){
3939
3940        let value = jQuery(this).val().trim();
3941
3942        // Se non ci sono <tag> esci
3943        if (!/<[^>]+>/.test(value)) return;
3944
3945        // Parse HTML incollato
3946        let parser = new DOMParser();
3947        let doc = parser.parseFromString(value, "text/html");
3948
3949        // Trova il primo elemento HTML valido
3950        let el = doc.body.firstElementChild;
3951
3952        if (el && el.classList.length > 0) {
3953            jQuery(this).val(el.classList.value);
3954        }        
3955    });
3956
3957    jQuery(window).on("unload", function() {
3958        if ( jQuery(".ctl-wp-studio-loading-dlg-wrapper").length > 0 ){
3959            jQuery(".ctl-wp-studio-loading-dlg-wrapper").remove();
3960        }
3961    });
3962
3963    jQuery(document).on('error', "img",function(){       
3964        jQuery(this).attr("srcset", "");
3965        jQuery(this).attr("data-large_image", "");        
3966        jQuery(this).attr("src", g_oCTLWPStudio._oLangCommon["szDefaultImage"]);        
3967    });    
3968    
3969    jQuery(".ctl-wp-studio-choose-repeater-image-container ul").each(function(){                
3970        jQuery(this).sortable().disableSelection();
3971    });   
3972    
3973    jQuery(".ctl-wp-studio-choose-repeater-file-container ul").each(function(){                
3974        jQuery(this).sortable().disableSelection();
3975    });       
3976    
3977    jQuery(".ctl-wp-studio-choose-repeater-column-breakpoints-container ul").each(function(){                
3978        jQuery(this).sortable().disableSelection();
3979    });        
3980
3981    jQuery(document).on("click", ".ctl-vulcano-scroll-to-selector", function(e){
3982        e.preventDefault();
3983        e.stopPropagation();
3984        let oNodeButton = jQuery(this);
3985        let id = oNodeButton.attr("href");
3986
3987
3988        var iOffsetTop = jQuery(id).offset().top;
3989
3990        if( oNodeButton.closest(".modal").length > 0 ){            
3991            jQuery(id)[0].scrollIntoView({ behavior: 'smooth', block: 'start', inline: 'start' });
3992        }else{
3993            iOffsetTop -= 150;
3994            jQuery('html,body').stop().animate({ scrollTop: iOffsetTop }, 'slow');    
3995        }  
3996      
3997    });
3998    
3999    jQuery(".ctl-wp-studio-sortable-select-list-selected").each(function(){        
4000        var oNodeList   = jQuery(this);
4001        var oNodeSelect = jQuery(this).closest(".ctl-wp-studio-settings-sortable-select-container").find("select");
4002
4003        jQuery(this).sortable({
4004            update : function(){           
4005                oNodeSelect.html("");
4006                oNodeList.find("li").each(function(){
4007                    oNodeSelect.append('<option value="'+ jQuery(this).attr("data-value") +'" selected="selected">'+jQuery(this).html()+'</option>');
4008                });
4009                
4010            }
4011        }).disableSelection();
4012    });
4013
4014    jQuery(".ctl-wp-studio-sortable").each(function(){
4015        oParent.makePostTableSortable(jQuery(this));
4016    });
4017
4018    jQuery(document).on("click",".ctl-reload-page", function(e){
4019        oParent.showLoading();
4020        window.location.reload();        
4021    });
4022
4023    jQuery(document).on("click dblclick",".ctl-show-loading", function(e){
4024        if (e.ctrlKey || e.shiftKey || e.metaKey || e.which == 2) {
4025            return true;
4026        }
4027
4028        if (jQuery(this).attr("target") == "_blank"){
4029            return true;
4030        }
4031
4032        if ( jQuery(this).hasClass("ctl-css-tweaker-inspector")){
4033            return true;
4034        }
4035
4036        oParent.showLoading();
4037    });
4038
4039	jQuery(document).on("click",".ctl-action-history-back", function(e){
4040		if ( window.history.length > 1 ){
4041			g_oCTLWPStudio.showLoading();
4042			window.history.back();
4043		}
4044	});
4045
4046    jQuery(document).on("click", ".ctl-wp-studio-list-content li", function(){
4047        var oNodeInput = jQuery(this).closest(".ctl-wp-studio-list-wrapper").
4048                find(".ctl-wp-studio-list-filter>input");
4049        oNodeInput.val("");
4050        oParent.filterList(oNodeInput);
4051    });  
4052      
4053    
4054    jQuery(document).on('input', ".ctl-wp-studio-list-filter>input", function () {
4055        oParent.filterList(jQuery(this));
4056    });    
4057
4058
4059    jQuery(document).on("click", ".ctl-wp-studio-action-dlg-fullscreen", function(){
4060
4061        if ( jQuery("body").hasClass("ctl-dlg-fullscreen") ){
4062            jQuery(this).find("i").attr("class", "ctl-wp-studio-icons-resize-full");
4063        }else{
4064            jQuery(this).find("i").attr("class", "ctl-wp-studio-icons-resize-small");
4065        }
4066
4067        jQuery("body").toggleClass("ctl-dlg-fullscreen");
4068        window.dispatchEvent(new Event('resize'));
4069    });    
4070
4071    jQuery(document).on("click", ".ctl-wp-studio-action-dlg-close", function(){
4072        jQuery("body").removeClass("ctl-dlg-fullscreen");
4073        jQuery(this).closest(".ctl-wp-studio-dlg-wrapper").remove();
4074    });    
4075    
4076    jQuery(document).on("click", ".ctl-wp-studio-dlg-action-close",  
4077        function(){   
4078            g_oCTLWPStudio.closeDlg(jQuery(this).closest(".ctl-wp-studio-dlg-wrapper").attr("id"));
4079        });
4080        
4081    jQuery(document).on("click",".ctl-wp-studio-action-view-file ",function(){    
4082        var szFileUrl = jQuery(this).closest(".ctl-wp-studio-choose-file-container").find("input").val();
4083
4084        var win = window.open(szFileUrl, '_blank');
4085        win.focus();
4086    });          
4087
4088    jQuery( ".ctl-wp-studio-form-control-wrapper " + 
4089            ".ctl-wp-studio-select2-search" ).each(function(){
4090        g_oCTLWPStudio.createSelect2(jQuery(this));
4091    });    
4092    
4093    jQuery(document).on("click",".ctl-wp-studio-action-html-sortable-select-empty",function(){    
4094        var oNodeContainer = jQuery(this).closest(".ctl-wp-studio-settings-select-container");
4095        var oNodeSelect   = oNodeContainer.find("select");
4096        var oNodeList     = oNodeContainer.find(".ctl-wp-studio-sortable-select-list-selected");
4097        var oNodeComplete = oNodeContainer.find(".ctl-wp-studio-sortable-select-list-complete");  
4098        
4099        oNodeSelect.html("");
4100        
4101        oNodeList.find("li").each(function(){
4102            oNodeComplete.append('<li data-value="'+ jQuery(this).attr("data-value") +'">'+jQuery(this).text()+'</li>');                         
4103        });
4104        
4105        oNodeList.html("");
4106    });  
4107    
4108    jQuery(document).on("click",".ctl-wp-studio-action-html-sortable-select-all",function(){ 
4109        
4110        var oNodeContainer = jQuery(this).closest(".ctl-wp-studio-settings-select-container");
4111        var oNodeSelect   = oNodeContainer.find("select");
4112        var oNodeList     = oNodeContainer.find(".ctl-wp-studio-sortable-select-list-selected");
4113        var oNodeComplete = oNodeContainer.find(".ctl-wp-studio-sortable-select-list-complete");  
4114        
4115        oNodeSelect.html("");
4116        
4117        oNodeList.find("li").each(function(){
4118            oNodeComplete.append('<li data-value="'+ jQuery(this).attr("data-value") +'">'+jQuery(this).text()+'</li>');                         
4119        });
4120        
4121        oNodeList.html("");
4122        
4123        oNodeContainer.find(".ctl-wp-studio-sortable-select-list-complete li").each(
4124            function(){
4125                oNodeSelect.append( '<option selected="selected" value="' + jQuery(this).attr("data-value") +'">' +  jQuery(this).text() + '</option>' );
4126                
4127                oNodeList.append( '<li data-value="' + jQuery(this).attr("data-value") +'">' +  jQuery(this).text() + '</li>' ); 
4128                
4129                jQuery(this).remove();
4130            });
4131    });     
4132    
4133    jQuery(document).on("mouseover",".vulcano-shortcode-performances", function(e){
4134        var idWidget = jQuery(this).attr("data-widget-id");
4135        jQuery('.widget-'+idWidget).addClass("vulcano-shortcode-hover");
4136    });
4137
4138    jQuery(document).on("mouseout",".vulcano-shortcode-performances", function(e){
4139        var idWidget = jQuery(this).attr("data-widget-id");
4140        jQuery('.widget-'+idWidget).removeClass("vulcano-shortcode-hover");
4141    });
4142
4143    jQuery(document).on("click",".ctl-wp-studio-action-post-ordering-move-down", function(e){
4144        e.preventDefault();
4145
4146        var oNodeContainer = jQuery(this).closest("tbody");
4147        var index          = jQuery(this).closest("tr").index();
4148
4149        if ( index == oNodeContainer.children().length-1 ){
4150            return;
4151        }
4152
4153        var oNodeToClone = jQuery(this).closest("tr");        
4154        var oNodeCloned  = oNodeToClone.clone();
4155        oNodeToClone.remove();
4156        
4157        oNodeCloned.insertAfter(oNodeContainer.children().eq(index));
4158        oParent.updatePostOrdering();
4159
4160    });
4161
4162    jQuery(document).on("click",".ctl-wp-studio-action-post-ordering-move-up", function(e){        
4163        e.preventDefault();
4164
4165        var oNodeContainer = jQuery(this).closest("tbody");
4166        var index          = jQuery(this).closest("tr").index()-1;
4167
4168        if ( index < 0 ){
4169            return;
4170        }
4171
4172        var oNodeToClone = jQuery(this).closest("tr");        
4173        var oNodeCloned  = oNodeToClone.clone();
4174        oNodeToClone.remove();
4175        
4176        oNodeCloned.insertBefore(oNodeContainer.children().eq(index));
4177        oParent.updatePostOrdering();
4178    });   
4179    
4180    jQuery(".ctl-wp-studio-action-toggle-state").on("click",function(e){
4181        e.preventDefault();
4182        jQuery(this).blur();
4183        var iCurState = parseInt(jQuery(this).attr("data-state"));
4184
4185        if( iCurState === 1 ){
4186            iCurState = 0;
4187        }else{
4188            iCurState = 1;
4189        }
4190
4191        g_oCTLWPStudio.changeStateButton(jQuery(this).closest("tr").attr("data-id"), iCurState);
4192    });    
4193
4194    jQuery(window).resize(function() {
4195        g_oCTLWPStudio.onResize();
4196    });    
4197
4198    g_oCTLWPStudio.onResize();
4199
4200    g_oCTLWPStudio.applyChromaCorrection();
4201
4202    wpdk_add_action("ctl-theme-bootstrap-modals-show-modal", function( oNodeModal ){        
4203        g_oCTLWPStudio.applyChromaCorrection(oNodeModal);   
4204    });
4205
4206    
4207});
4208
4209function numberFormat (number, decimals, dec_point, thousands_sep) {
4210    // Strip all characters but numerical ones.
4211    number = (number + '').replace(/[^0-9+\-Ee.]/g, '');
4212    var n = !isFinite(+number) ? 0 : +number,
4213        prec = !isFinite(+decimals) ? 0 : Math.abs(decimals),
4214        sep = (typeof thousands_sep === 'undefined') ? ',' : thousands_sep,
4215        dec = (typeof dec_point === 'undefined') ? '.' : dec_point,
4216        s = '',
4217        toFixedFix = function (n, prec) {
4218            var k = Math.pow(10, prec);
4219            return '' + Math.round(n * k) / k;
4220        };
4221    // Fix for IE parseFloat(0.55).toFixed(0) = 0;
4222    s = (prec ? toFixedFix(n, prec) : '' + Math.round(n)).split('.');
4223    if (s[0].length > 3) {
4224        s[0] = s[0].replace(/\B(?=(?:\d{3})+(?!\d))/g, sep);
4225    }
4226    if ((s[1] || '').length < prec) {
4227        s[1] = s[1] || '';
4228        s[1] += new Array(prec - s[1].length + 1).join('0');
4229    }
4230    return s.join(dec);
4231}
4232
4233function sprintfNumber( szZero, szSingle, szPlural, iNum ){
4234    if ( iNum === 0 ){
4235        return szZero;
4236    }else if ( iNum === 1 ){
4237        return sprintf(szSingle, iNum);
4238    }else{
4239        return sprintf(szPlural, iNum);
4240    }
4241}    
4242
4243function htmlEntities(str) {
4244    return String(str).replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/"/g, '&quot;');
4245}
4246
4247function get_html_translation_table (table, quoteStyle) { // eslint-disable-line camelcase
4248
4249  var entities = {};
4250  var hashMap = {};
4251  var decimal;
4252  var constMappingTable = {};
4253  var constMappingQuoteStyle = {};
4254  var useTable = {};
4255  var useQuoteStyle = {};
4256
4257  // Translate arguments
4258  constMappingTable[0] = 'HTML_SPECIALCHARS';
4259  constMappingTable[1] = 'HTML_ENTITIES';
4260  constMappingQuoteStyle[0] = 'ENT_NOQUOTES';
4261  constMappingQuoteStyle[2] = 'ENT_COMPAT';
4262  constMappingQuoteStyle[3] = 'ENT_QUOTES';
4263
4264  useTable = !isNaN(table)
4265    ? constMappingTable[table]
4266    : table
4267      ? table.toUpperCase()
4268      : 'HTML_SPECIALCHARS';
4269
4270  useQuoteStyle = !isNaN(quoteStyle)
4271    ? constMappingQuoteStyle[quoteStyle]
4272    : quoteStyle
4273      ? quoteStyle.toUpperCase()
4274      : 'ENT_COMPAT';
4275
4276  if (useTable !== 'HTML_SPECIALCHARS' && useTable !== 'HTML_ENTITIES') {
4277    throw new Error('Table: ' + useTable + ' not supported');
4278  }
4279
4280  entities['38'] = '&amp;';
4281  if (useTable === 'HTML_ENTITIES') {
4282    entities['160'] = '&nbsp;';
4283    entities['161'] = '&iexcl;';
4284    entities['162'] = '&cent;';
4285    entities['163'] = '&pound;';
4286    entities['164'] = '&curren;';
4287    entities['165'] = '&yen;';
4288    entities['166'] = '&brvbar;';
4289    entities['167'] = '&sect;';
4290    entities['168'] = '&uml;';
4291    entities['169'] = '&copy;';
4292    entities['170'] = '&ordf;';
4293    entities['171'] = '&laquo;';
4294    entities['172'] = '&not;';
4295    entities['173'] = '&shy;';
4296    entities['174'] = '&reg;';
4297    entities['175'] = '&macr;';
4298    entities['176'] = '&deg;';
4299    entities['177'] = '&plusmn;';
4300    entities['178'] = '&sup2;';
4301    entities['179'] = '&sup3;';
4302    entities['180'] = '&acute;';
4303    entities['181'] = '&micro;';
4304    entities['182'] = '&para;';
4305    entities['183'] = '&middot;';
4306    entities['184'] = '&cedil;';
4307    entities['185'] = '&sup1;';
4308    entities['186'] = '&ordm;';
4309    entities['187'] = '&raquo;';
4310    entities['188'] = '&frac14;';
4311    entities['189'] = '&frac12;';
4312    entities['190'] = '&frac34;';
4313    entities['191'] = '&iquest;';
4314    entities['192'] = '&Agrave;';
4315    entities['193'] = '&Aacute;';
4316    entities['194'] = '&Acirc;';
4317    entities['195'] = '&Atilde;';
4318    entities['196'] = '&Auml;';
4319    entities['197'] = '&Aring;';
4320    entities['198'] = '&AElig;';
4321    entities['199'] = '&Ccedil;';
4322    entities['200'] = '&Egrave;';
4323    entities['201'] = '&Eacute;';
4324    entities['202'] = '&Ecirc;';
4325    entities['203'] = '&Euml;';
4326    entities['204'] = '&Igrave;';
4327    entities['205'] = '&Iacute;';
4328    entities['206'] = '&Icirc;';
4329    entities['207'] = '&Iuml;';
4330    entities['208'] = '&ETH;';
4331    entities['209'] = '&Ntilde;';
4332    entities['210'] = '&Ograve;';
4333    entities['211'] = '&Oacute;';
4334    entities['212'] = '&Ocirc;';
4335    entities['213'] = '&Otilde;';
4336    entities['214'] = '&Ouml;';
4337    entities['215'] = '&times;';
4338    entities['216'] = '&Oslash;';
4339    entities['217'] = '&Ugrave;';
4340    entities['218'] = '&Uacute;';
4341    entities['219'] = '&Ucirc;';
4342    entities['220'] = '&Uuml;';
4343    entities['221'] = '&Yacute;';
4344    entities['222'] = '&THORN;';
4345    entities['223'] = '&szlig;';
4346    entities['224'] = '&agrave;';
4347    entities['225'] = '&aacute;';
4348    entities['226'] = '&acirc;';
4349    entities['227'] = '&atilde;';
4350    entities['228'] = '&auml;';
4351    entities['229'] = '&aring;';
4352    entities['230'] = '&aelig;';
4353    entities['231'] = '&ccedil;';
4354    entities['232'] = '&egrave;';
4355    entities['233'] = '&eacute;';
4356    entities['234'] = '&ecirc;';
4357    entities['235'] = '&euml;';
4358    entities['236'] = '&igrave;';
4359    entities['237'] = '&iacute;';
4360    entities['238'] = '&icirc;';
4361    entities['239'] = '&iuml;';
4362    entities['240'] = '&eth;';
4363    entities['241'] = '&ntilde;';
4364    entities['242'] = '&ograve;';
4365    entities['243'] = '&oacute;';
4366    entities['244'] = '&ocirc;';
4367    entities['245'] = '&otilde;';
4368    entities['246'] = '&ouml;';
4369    entities['247'] = '&divide;';
4370    entities['248'] = '&oslash;';
4371    entities['249'] = '&ugrave;';
4372    entities['250'] = '&uacute;';
4373    entities['251'] = '&ucirc;';
4374    entities['252'] = '&uuml;';
4375    entities['253'] = '&yacute;';
4376    entities['254'] = '&thorn;';
4377    entities['255'] = '&yuml;';
4378  }
4379
4380  if (useQuoteStyle !== 'ENT_NOQUOTES') {
4381    entities['34'] = '&quot;';
4382  }
4383  if (useQuoteStyle === 'ENT_QUOTES') {
4384    entities['39'] = '&#39;';
4385  }
4386  entities['60'] = '&lt;';
4387  entities['62'] = '&gt;';
4388
4389  // ascii decimals to real symbols
4390  for (decimal in entities) {
4391    if (entities.hasOwnProperty(decimal)) {
4392      hashMap[String.fromCharCode(decimal)] = entities[decimal];
4393    }
4394  }
4395
4396  return hashMap;
4397};
4398
4399
4400function html_entity_decode (string, quoteStyle) { // eslint-disable-line camelcase
4401
4402  
4403  var tmpStr = '';
4404  var entity = '';
4405  var symbol = '';
4406  tmpStr = string.toString();
4407
4408  var hashMap = get_html_translation_table('HTML_ENTITIES', quoteStyle);
4409  if (hashMap === false) {
4410    return false;
4411  }
4412
4413  // @todo: &amp; problem
4414  // https://locutus.io/php/get_html_translation_table:416#comment_97660
4415  delete (hashMap['&']);
4416  hashMap['&'] = '&amp;';
4417
4418  for (symbol in hashMap) {
4419    entity = hashMap[symbol];
4420    tmpStr = tmpStr.split(entity).join(symbol);
4421  }
4422  tmpStr = tmpStr.split('&#039;').join("'");
4423
4424  return tmpStr;
4425}
4426
4427
4428function stripslashes(str) {
4429  return (str + '')
4430    .replace(/\\(.?)/g, function (s, n1) {
4431      switch (n1) {
4432        case '\\':
4433          return '\\';
4434        case '0':
4435          return '\u0000';
4436        case '':
4437          return '';
4438        default:
4439          return n1;
4440      }
4441    });
4442};
4443
4444function addslashes (str) {  
4445  return (str + '')
4446    .replace(/[\\"']/g, '\\$&')
4447    .replace(/\u0000/g, '\\0');
4448}
4449
4450
4451 CTL_WP_STUDIO.prototype.resizeAspectRatioElements = function( oNodeDom ){
4452    var oParent = this;
4453
4454    if (oNodeDom){
4455        setTimeout(function(){
4456            oNodeDom.find(".ctl-aspect-ratio").each(function(){
4457                oParent.__onResize(jQuery(this));
4458            });
4459        },500);
4460
4461        oNodeDom.find(".ctl-aspect-ratio").each(function(){
4462            oParent.__onResize(jQuery(this));
4463        });
4464    }else{
4465        jQuery(".ctl-aspect-ratio").each(function(){
4466            oParent.__onResize(jQuery(this));
4467        }); 
4468    }
4469 };
4470
4471CTL_WP_STUDIO.prototype.onResize = function( oNodeDom ){
4472
4473    this.resizeAspectRatioElements(oNodeDom);
4474}
4475
4476CTL_WP_STUDIO.prototype.__onResize = function( oNodeDom ){
4477    var szAspectRatio = oNodeDom.attr("data-aspect-ratio");
4478        
4479    if( szAspectRatio === "-1" ){
4480        return;
4481    }
4482    
4483    var aValues = oNodeDom.attr("data-aspect-ratio").split(":");
4484    var w = aValues[0];
4485    var h = aValues[1]; 
4486    var iCurW = oNodeDom.width();
4487    var iNewH = Math.round(iCurW  * (h/w));
4488
4489    if( oNodeDom.attr("data-max-height")  ){
4490        var iMaxHeight = parseInt(oNodeDom.attr("data-max-height"));
4491        if( iNewH > iMaxHeight ){
4492            iNewH = iMaxHeight;
4493        } 
4494    }
4495    
4496    oNodeDom.css( "height" , iNewH + "px");    
4497}
4498
4499CTL_WP_STUDIO.prototype.printLayout = function(szNodeSelector, szPageFormat, szPrintOrientation){
4500    if (!szPageFormat){
4501        szPageFormat = 'A4';
4502    }    
4503    
4504    if (!szPrintOrientation){
4505        szPrintOrientation = 'portrait';
4506    }
4507    
4508    var oRestorePage = jQuery('body').clone();
4509
4510    oNodeElementToPrint = this.normalizePrintableLayout(jQuery(szNodeSelector), szPageFormat);
4511    jQuery('body').addClass("ctl-printing");
4512    jQuery('body').addClass("ctl-printing-"+szPageFormat);
4513    jQuery('body').html(oNodeElementToPrint)
4514    window.print();
4515
4516    setTimeout( function(){
4517        jQuery('body').removeClass("ctl-printing");
4518        jQuery('body').removeClass("ctl-printing-"+szPageFormat);
4519        jQuery('body').empty().append(oRestorePage.children());
4520    }, 1000 );
4521}
4522
4523CTL_WP_STUDIO.prototype.normalizePrintableLayout = function(oNodeToNormalize, szPageFormat, szPrintOrientation){
4524    oNodeToNormalize = oNodeToNormalize.clone();
4525    
4526    switch(szPageFormat){
4527        case 'A4':{
4528            if ( szPrintOrientation === 'portrait'){
4529                oNodeToNormalize.css('width', '21cm');
4530                oNodeToNormalize.css('min-height', '29.7cm');
4531            }
4532        }break;
4533        case "58mm":{
4534            if ( szPrintOrientation === 'portrait'){
4535                oNodeToNormalize.css('width', '58mm');
4536            }
4537        }break;
4538    }
4539    
4540    oNodeToNormalize.find('.d-print-none').remove();
4541    oNodeToNormalize.find('.form-control').attr('readonly', true);
4542    oNodeToNormalize.find('.form-control').each(function(){
4543        jQuery(this).attr('value',jQuery(this).val());
4544    });
4545    oNodeToNormalize.find('.ctl-table-td-cell').removeClass('editable');
4546    oNodeToNormalize.find('.ctl-table-th-cell').removeClass('sorting');
4547    
4548    oNodeToNormalize = wpdk_apply_filters("ctl-print-normalize-jquery-node", oNodeToNormalize );
4549    
4550    return oNodeToNormalize;
4551}
4552
4553CTL_WP_STUDIO.prototype.isValidBase64 = function (str) {
4554    if (typeof str !== 'string') return false;
4555
4556    // Base64 regex: only A-Z, a-z, 0-9, +, / and optional = padding
4557    const base64Regex = /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/;
4558
4559    // Quick format check
4560    if (!base64Regex.test(str) || str.length % 4 !== 0) {
4561        return false;
4562    }
4563
4564    try {
4565        Base64.decode(str); // Will throw if invalid
4566        return true;
4567    } catch (e) {
4568        return false;
4569    }
4570}
4571
4572CTL_WP_STUDIO.prototype.adminGetPostsByMeta = function( meta_key, meta_value, 
4573                                                        post_type = "post",
4574                                                        posts_per_page = -1,
4575                                                        post_status = "any",
4576                                                        cb = null, 
4577                                                        cbOwner = null ){
4578        var oFormData = {
4579            "execute"    : "get-posts-by-meta",
4580            "action"     : this._szPluginCode,
4581            "meta_key"   : meta_key,
4582            "meta_value" : meta_value,
4583            "post_type"  : post_type,
4584            "posts_per_page" : posts_per_page,
4585            "post_status"    : post_status
4586        }
4587
4588        var idLoadingDlg = this.showLoading(this._oLangCommon["Loading"]); 
4589        var oParent = this;
4590
4591        jQuery.ajax({
4592            url: oParent._oLangCommon.ajaxurl,
4593            type: "post",
4594            data: oFormData
4595        }).done(function (data) {
4596            data = JSON.parse(data);
4597
4598            oParent.closeDlg(idLoadingDlg);
4599
4600            if (data.res === "false"){
4601                alert(oParent._oLangCommon["Ooops! Something Went Wrong!"]);
4602            }else{             
4603                if(cb){
4604                    if (cbOwner){
4605                        cb.call(cbOwner);    
4606                    }else{
4607                        cb.call(this, data.posts );
4608                    }        
4609                }                  
4610            }
4611        }).fail(function (jqXHR, textStatus) {
4612            alert(oParent._oLangCommon["Ooops! Something Went Wrong!"]);
4613        });          
4614}
4615
4616CTL_WP_STUDIO.prototype.applyChromaCorrection = function( oNodeDom = null){
4617
4618    let oNodeToApplyChromaCorrection = null;
4619
4620    if (oNodeDom){
4621        oNodeToApplyChromaCorrection = oNodeDom.find(".chroma-apply-correction");
4622    }else{
4623        oNodeToApplyChromaCorrection = jQuery(".chroma-apply-correction");
4624    }
4625
4626	oNodeToApplyChromaCorrection.each(function(){
4627		var szBGColor = jQuery(this).css("background-color");
4628		if (!szBGColor || szBGColor === "transparent" || szBGColor === "rgba(0, 0, 0, 0)"){
4629			return;
4630		}
4631		jQuery(this).css("color", (chroma(szBGColor).luminance() < 0.5 ? "color : #fff;" : "color : #303030;"));
4632	});
4633}
4634
4635CTL_WP_STUDIO.prototype.onAppMobileBackHistory = function() {
4636    console.log("onAppMobileBackHistory");
4637};
4638
4639CTL_WP_STUDIO.prototype.isIOS = function() {
4640    if(g_oCTLWPStudio.isIpad()){
4641        return true;
4642    }
4643    
4644    var iDevices = [
4645        'iPad Simulator',
4646        'iPhone Simulator',
4647        'iPod Simulator',
4648        'iPad',
4649        'iPhone',
4650        'iPod' 
4651    ]; 
4652    
4653    while (iDevices.length) {
4654        if (navigator.platform === iDevices.pop()){
4655            return true; 
4656        } 
4657    } 
4658    
4659    return false; 
4660}
4661
4662CTL_WP_STUDIO.prototype.openWindow = function(url, target) {
4663
4664    const nomeTab = url;
4665
4666    // Applichiamo la logica solo se è un link esterno/nuova scheda
4667    if (target === '_blank') {
4668/*
4669        // Avvisiamo le altre schede
4670        canalenavigazione.postMessage({
4671            tipo: 'RICHIESTA_FOCUS',
4672            nome: nomeTab
4673        });
4674*/
4675        // Apriamo la finestra (se è già aperta, il browser userà quella esistente)
4676        window.open(url, nomeTab);
4677
4678    }else{
4679        window.open(url, target);
4680    }						
4681		
4682}
4683
4684CTL_WP_STUDIO.prototype.isIpad = function() {
4685    var isIpad = navigator.userAgent.toLowerCase().indexOf('ipad') !== -1;
4686
4687    if (!isIpad && navigator.userAgent.match(/Mac/) && navigator.maxTouchPoints && navigator.maxTouchPoints > 2) {
4688        return true;
4689    }
4690
4691    return isIpad;
4692}
4693
4694CTL_WP_STUDIO.prototype.isAndroid = function() {
4695    return navigator.userAgent.toLowerCase().indexOf("android") > -1;
4696};
4697
4698CTL_WP_STUDIO.prototype.downloadFile = function( urlFile, fileName = null, bLoading = false ){
4699
4700    if(fileName === null){
4701        fileName = urlFile.split("/").pop();
4702    }
4703
4704    try{
4705        let oJSONDataApp = {
4706            action: "download_file",
4707            name: fileName,
4708            url: urlFile
4709        }
4710        
4711        if(!this.isIOS()){
4712            if(Android){
4713                Android.postMessage(JSON.stringify(oJSONDataApp));
4714            }else{
4715                this.downloadFromBrowser(urlFile, fileName, bLoading);
4716            }
4717        }else{
4718            if (window.webkit && window.webkit.messageHandlers && window.webkit.messageHandlers.iosBridge) {
4719                window.webkit.messageHandlers.iosBridge.postMessage(
4720                    JSON.stringify(oJSONDataApp)
4721               );   
4722            }else{
4723                this.downloadFromBrowser(urlFile, fileName, bLoading);
4724            }
4725        }
4726    }catch(e){
4727        this.downloadFromBrowser(urlFile, fileName, bLoading);
4728    }
4729}
4730
4731CTL_WP_STUDIO.prototype.downloadFromBrowser = function( urlFile, szFileName, bLoading = false ){
4732    /*let link      = document.createElement("a");
4733    link.href     = urlFile;
4734    link.download = szFileName;
4735    link.target  = "_blank";    
4736    link.click();
4737    link = null;
4738*/
4739
4740/*
4741    const a = document.createElement('a');
4742    a.href = urlFile;
4743    a.download = szFileName || '';
4744    document.body.appendChild(a);
4745    a.click();
4746    document.body.removeChild(a);
4747    */
4748
4749    var idLoading = null;
4750    if (bLoading){
4751        idLoading = this.showLoading(g_oCTLWPStudio._oLangCommon["Loading"]);
4752    }
4753   
4754
4755    fetch(urlFile)
4756    .then(res => {
4757      if (!res.ok) throw new Error('Network response was not ok');		
4758      return res.blob();
4759    })
4760    .then(blob => {
4761        const blobUrl = URL.createObjectURL(blob);
4762        const a = document.createElement('a');
4763        a.href = blobUrl;
4764        a.download = szFileName;
4765        document.body.appendChild(a);
4766        a.click();
4767        a.remove();
4768        URL.revokeObjectURL(blobUrl);
4769
4770        if (bLoading){
4771            g_oCTLWPStudio.closeDlg(idLoading);
4772        }			
4773    })
4774    .catch(err => {
4775         if (bLoading){
4776            g_oCTLWPStudio.closeDlg(idLoading);
4777        }
4778        console.error('Download error:', err)
4779    });    
4780}
4781// file: /var/www/vhosts/codethislab.com/httpdocs/wp-content/plugins/ctl-wp-studio/classes/modules/ctl-smtp/php/../js/front.js
4782jQuery(document).ready(function(){
4783
4784
4785    jQuery(document).on("click", ".btn-action-remove-attachment-from-mail-sender ", function(){
4786        var oNodeButton = jQuery(this);
4787        oNodeButton.closest("li").remove();
4788    });
4789
4790    jQuery(document).on("click", ".ctl-smtp-action-edit-smtp-params", function(){              
4791        ctlSMTPEditSMTPParams(jQuery(this));     
4792    });
4793
4794    jQuery(document).on("click", ".ctl-smtp-action-test-email", function(){              
4795        ctlSMTPShowMailModal( g_oCTLSMTPLocalizationFront["Test Email"],
4796                              "", "", g_oCTLSMTPLocalizationFront["Test Email"], g_oCTLSMTPLocalizationFront["Hello world"], [],
4797                            "ctl-smtp-action-send-test-email");   
4798    });
4799
4800    jQuery(document).on("click", ".ctl-smtp-action-send-test-email", function(){              
4801        ctlSMTPShowSendMail(jQuery(this));     
4802    });
4803
4804    jQuery(document).on("click", ".ctl-smtp-action-show-help", function(){              
4805        ctlSMTPShowHelpModal(jQuery(this));     
4806    });
4807
4808    jQuery(document).on("click", ".ctl-smtp-action-reset-smtp-params", function(){              
4809        ctlSMTPResetSMTPParams(jQuery(this));     
4810    });
4811});
4812
4813function ctlSMTPShowHelpModal( oNodeButton ){
4814
4815    var oFormData = {};
4816    oFormData['action']           = 'ctl-wp-studio';
4817    oFormData['execute']          = 'ctl-smtp';        
4818    oFormData['extension-action'] = 'get-html-smtp-guide';  
4819    oFormData["click-class"]      = "ctl-smtp-action-show-help";
4820
4821    var idLoading = g_oCTLWPStudio.showLoading("");
4822    
4823    jQuery.ajax({
4824        url : g_oCTLWPStudio._oLangCommon["ajaxurl"],
4825        type: "POST",
4826        data : oFormData,
4827        cache: false,
4828        method: 'POST',
4829        success:function(response, textStatus, jqXHR){
4830            g_oCTLWPStudio.closeDlg(idLoading);
4831            var oResponse = jQuery.parseJSON(response);
4832
4833            g_oCTLBootstrapModals.showModal({
4834                wrapper_classes : "ctl-smtp-help-modal",
4835                modal_title : g_oCTLSMTPLocalizationFront["Help"],
4836                modal_content : oResponse.html,
4837                entrance_animation : "animate__slideInUp",
4838                exit_animation : "animate__slideOutDown",                        
4839                closeable : true,
4840                width: '80',
4841                height: '100',
4842                position: "centered"
4843            });
4844        },
4845        error: function(jqXHR, textStatus, errorThrown){
4846            g_oCTLWPStudio.closeDlg(idLoading);
4847            alert(g_oCTLWPStudio._oLangCommon["Ooops! Something Went Wrong!"]);  
4848        }
4849    });
4850}
4851
4852
4853function ctlSMTPShowMailModal( szModalTitle, szTo, szCC, szSubject, szMessage, aAttachments, szSendAction, szSendAttributes = ""){
4854
4855	var oConfigEmailDest = {
4856        'field-name': 'email-dest',
4857        'label-title': g_oCTLSMTPLocalizationFront["To"],
4858        'label-description': g_oCTLSMTPLocalizationFront["Email address of the recipient."],
4859        'mandatory': true,
4860        'display' : 3
4861    };  
4862
4863	var oConfigEmailCC = {
4864        'field-name': 'email-cc',
4865        'label-title': g_oCTLSMTPLocalizationFront["CC"],
4866        'label-description': g_oCTLSMTPLocalizationFront["Email address of the CC recipient."],
4867        'mandatory': false,
4868        'display' : 3
4869    };      
4870	
4871    var oConfigEmailSubject = {
4872        'field-name': 'email-subject',
4873        'label-title': g_oCTLSMTPLocalizationFront["Subject"],
4874        'label-description': g_oCTLSMTPLocalizationFront["Subject of the email."],
4875        'mandatory': true,
4876        'display' : 3
4877    };
4878	
4879    var oConfigEmailMessage = {
4880        "field-name": "email-message",
4881        "label-title": g_oCTLSMTPLocalizationFront["Message"],
4882        "label-description": g_oCTLSMTPLocalizationFront["Email body."],
4883        "mandatory": true,
4884        'display' : 3
4885    };
4886
4887    var oConfigAttachmentsMessage = {
4888        "field-name": "email-attachments",
4889        "label-title": g_oCTLSMTPLocalizationFront["Attachments"],
4890        'display' : 3
4891    };    
4892
4893    html = '';
4894    html += '<form>';
4895    html +=          formFieldsBuildTextField(oConfigEmailDest, szTo);
4896    html +=          formFieldsBuildTextField(oConfigEmailCC, szCC);
4897    html +=          formFieldsBuildTextField(oConfigEmailSubject, szSubject);
4898    html +=          formFieldsBuildTextAreaField(oConfigEmailMessage, szMessage);
4899
4900    if ( aAttachments.length > 0 ){
4901        let szAttachmentsList = "";
4902        for(let i = 0; i < aAttachments.length; i++){
4903            szAttachmentsList += '<li class="px-2 py-1 list-group-item d-flex justify-content-between align-items-start">';
4904                szAttachmentsList += '<a style="direction: rtl;" class="text-left btn btn-xs btn-link text-truncate" href="'+aAttachments[i]+'" target="_blank">'+aAttachments[i]+'</a>';
4905                szAttachmentsList += '<input type="hidden" name="attachments[]" value="'+aAttachments[i]+'" />';
4906                szAttachmentsList += '<button type="button" class="btn btn-xs btn-action-remove-attachment-from-mail-sender btn-danger ml-3">
4906<i class="fa-solid fa-trash-can px-1"></i></button>';
4907            szAttachmentsList += '</li>';
4908        }
4909
4910        let htmlAttachments = '';
4911        htmlAttachments += '<div class="ctl-smtp-send-files-via-mail-modal">';
4912        htmlAttachments += '    <ul class="list-group">'+szAttachmentsList+'</ul>';
4913        htmlAttachments += '</div>';
4914
4915        html += formFieldsBuildHtmlField( oConfigAttachmentsMessage, htmlAttachments);
4916    }
4917
4918    html += '</form>';
4919
4920    var oButtonConfig = {
4921        "button-title"   : g_oCTLSMTPLocalizationFront["Send"],
4922        "display"        : "inline-block",
4923        "icon-class"     : "fa-solid fa-paper-plane",
4924        "classes"        : szSendAction,
4925        "semantic-color" : "primary",
4926        "data-attr"      : szSendAttributes
4927    };                
4928    var oSendButton = formFieldsBuildButtonField(oButtonConfig);
4929
4930    g_oCTLBootstrapModals.showModal({
4931        wrapper_classes : "ctl-smtp-send-email-modal",
4932        modal_title : szModalTitle,
4933        modal_content : html,
4934        entrance_animation : "animate__slideInUp",
4935        exit_animation : "animate__slideOutDown",                        
4936        closeable : true,
4937        width: '70',
4938        position: "centered",
4939        footer_btn_close: false,
4940        footer_buttons: [oSendButton]
4941    });
4942}
4943
4944function ctlSMTPShowSendMail( oNodeButton ){
4945    var oNodeForm = oNodeButton.closest(".ctl-modal-content").find("form").first();
4946    var oFormData = oNodeForm.serializeObject();
4947
4948    oFormData['action']           = 'ctl-wp-studio';
4949    oFormData['execute']          = 'ctl-smtp';        
4950    oFormData['extension-action'] = 'test-email';  
4951    oFormData["click-class"]      = "ctl-smtp-action-send-test-email";
4952
4953    if(ctlFormFieldsCheckIfFormIsFilled(oNodeForm) === false ){
4954        return;
4955    }
4956
4957    var idLoading = g_oCTLWPStudio.showLoading("");
4958    
4959    jQuery.ajax({
4960        url : g_oCTLWPStudio._oLangCommon["ajaxurl"],
4961        type: "POST",
4962        data : oFormData,
4963        cache: false,
4964        method: 'POST',
4965        success:function(response, textStatus, jqXHR){
4966            g_oCTLWPStudio.closeDlg(idLoading);
4967            var oResponse = jQuery.parseJSON(response);
4968
4969            alert(oResponse.alert);
4970            
4971            if(oResponse.res){
4972                g_oCTLBootstrapModals.closeModal(oNodeButton.closest(".modal"));
4973            }
4974        },
4975        error: function(jqXHR, textStatus, errorThrown){
4976            g_oCTLWPStudio.closeDlg(idLoading);
4977            alert(g_oCTLWPStudio._oLangCommon["Ooops! Something Went Wrong!"]);  
4978        }
4979    });
4980}
4981
4982function ctlSMTPEditSMTPParams( oNodeButton ){
4983    var oNodeForm = oNodeButton.closest(".ctl-smtp-params").find("form").first();
4984    var oFormData = oNodeForm.serializeObject();
4985
4986    oFormData['action']           = 'ctl-wp-studio';
4987    oFormData['execute']          = 'ctl-smtp';        
4988    oFormData['extension-action'] = 'edit-smtp-params';  
4989    oFormData["click-class"]      = "ctl-smtp-action-edit-smtp-params";
4990
4991    if(ctlFormFieldsCheckIfFormIsFilled(oNodeForm) === false ){
4992        return;
4993    }
4994
4995    var idLoading = g_oCTLWPStudio.showLoading("");
4996    
4997    jQuery.ajax({
4998        url : g_oCTLWPStudio._oLangCommon["ajaxurl"],
4999        type: "POST",
5000        data : oFormData,
5001        cache: false,
5002        method: 'POST',
5003        success:function(response, textStatus, jqXHR){
5004            var oResponse = jQuery.parseJSON(response);
5005
5006            if( oResponse.res === false ){              
5007                g_oCTLWPStudio.closeDlg(idLoading);
5008	
5009                ctlFormFieldsApplyErrors(oNodeForm, oResponse.errors);
5010				
5011                if ( oResponse.alert ){
5012                    g_oCTLBootstrapModals.alert("", oResponse.alert );
5013                }
5014
5015                jQuery(document).trigger("ajax-update", [ oFormData["click-class"], false, oFormData, oResponse ] );                
5016            }else{                
5017                window.location.reload();
5018            }
5019        },
5020        error: function(jqXHR, textStatus, errorThrown){
5021            jQuery(document).trigger("ajax-update", [ oFormData["click-class"], false, oFormData, oResponse ] );
5022            g_oCTLWPStudio.closeDlg(idLoading);
5023            alert(g_oCTLWPStudio._oLangCommon["Ooops! Something Went Wrong!"]);  
5024        }
5025    });
5026}
5027
5028function ctlSMTPResetSMTPParams( oNodeButton ){
5029    var szConfirmBtnTitle = g_oCTLSMTPLocalizationFront["Yes"];
5030    var id = g_oCTLBootstrapModals.showModal({
5031        modal_content : g_oCTLSMTPLocalizationFront["Do you want to reset SMTP params?"],
5032        closeable : false,
5033        position: "centered",
5034        button_close_title : g_oCTLSMTPLocalizationFront["No"],
5035        footer_buttons : ['<button class="btn btn-outline-primary" data-confirm="modal">'+szConfirmBtnTitle+'</button>']
5036    });
5037
5038    jQuery('#'+id + ' button[data-confirm="modal"]').on( "click", function(){  
5039        var oFormData = {};
5040
5041        oFormData['action']           = 'ctl-wp-studio';
5042        oFormData['execute']          = 'ctl-smtp';        
5043        oFormData['extension-action'] = 'reset-smtp-params';  
5044        oFormData["click-class"]      = "ctl-smtp-action-reset-smtp-params";
5045
5046        var idLoading = g_oCTLWPStudio.showLoading("");
5047        
5048        jQuery.ajax({
5049            url : g_oCTLWPStudio._oLangCommon["ajaxurl"],
5050            type: "POST",
5051            data : oFormData,
5052            cache: false,
5053            method: 'POST',
5054            success:function(response, textStatus, jqXHR){
5055                var oResponse = jQuery.parseJSON(response);
5056
5057                if( oResponse.res === true ){              
5058                    window.location.reload();               
5059                }
5060            },
5061            error: function(jqXHR, textStatus, errorThrown){
5062                jQuery(document).trigger("ajax-update", [ oFormData["click-class"], false, oFormData, oResponse ] );
5063                g_oCTLWPStudio.closeDlg(idLoading);
5064                alert(g_oCTLWPStudio._oLangCommon["Ooops! Something Went Wrong!"]);  
5065            }
5066        });
5067    });
5068}
5069// file: /var/www/vhosts/codethislab.com/httpdocs/wp-content/plugins/ctl-wp-studio/classes/modules/ctl-documentation/php/../js/front.js
5070jQuery(document).ready(function(){
5071    jQuery(document).on("click", ".ctl-documentation-action-show-current-page-doc", function(){              
5072        ctlVulcanoDocumentationShowCurrentPageDoc(jQuery(this));     
5073    });
5074
5075    jQuery(document).on("click", ".ctl-documentation-action-show-current-modal-doc", function(){              
5076        ctlVulcanoDocumentationShowCurrentModalDoc(jQuery(this));     
5077    });    
5078
5079    jQuery(document).on("click", ".ctl-vulcano-admin-gui-shortcut-action-widget-documentation", function(){              
5080        ctlVulcanoDocumentationGetWidgetDocumentation(jQuery(this));     
5081    });
5082
5083    jQuery(document).on("click", ".ctl-documentation-action-update-widget-documentation", function(){              
5084        ctlVulcanoDocumentationUpdateWidgetDocumentation(jQuery(this));     
5085    });    
5086
5087    jQuery(document).on("click", ".ctl-documentation-action-reset-widget-documentation", function(){              
5088        ctlVulcanoDocumentationResetWidgetDocumentation(jQuery(this));     
5089    });    
5090    
5091    wpdk_add_action("ctl-theme-bootstrap-tabs-shown-tab", function( oNodeTabPane ){        
5092        ctlVulcanoDocumentationBuildIndex(oNodeTabPane);
5093        ctlVulcanoDocumentationBuildAnonymousWidgets(oNodeTabPane);
5094    });	
5095	
5096    wpdk_add_action("ctl-theme-bootstrap-modals-show-modal", function( oNodeModal ){        
5097        ctlVulcanoDocumentationBuildIndex(oNodeModal);
5098        ctlVulcanoDocumentationBuildAnonymousWidgets(oNodeModal);
5099    });
5100
5101    ctlVulcanoDocumentationBuildIndex();
5102});
5103
5104function ctlVulcanoDocumentationUpdateWidgetDocumentation(oNodeButton){
5105
5106    let oFormData = jQuery("#"+oNodeButton.data("form-id")).serializeForm();
5107
5108    oFormData['action']           = 'ctl-wp-studio';
5109    oFormData['execute']          = 'ctl-documentation';   
5110    oFormData['widget-id']        = oNodeButton.data("widget-id");
5111    oFormData['widget-type']      = oNodeButton.data("widget-type");  
5112    oFormData['shortcode-type']   = oNodeButton.data("shortcode-type");  
5113    oFormData['extension-action'] = 'update-widget-documentation';
5114
5115    var idLoading = g_oCTLWPStudio.showLoading("");
5116    
5117    jQuery.ajax({
5118        url : g_oCTLWPStudio._oLangCommon["ajaxurl"],
5119        type: "POST",
5120        data : oFormData,
5121        cache: false,
5122        method: 'POST',
5123        success:function(response, textStatus, jqXHR){
5124            g_oCTLWPStudio.closeDlg(idLoading);
5125            var oResponse = jQuery.parseJSON(response);
5126
5127            if ( oResponse.res === true ){  
5128                g_oCTLBootstrapModals.closeModalAndStack();
5129
5130                __ctlVulcanoDocumentationResetUpdateButton(oNodeButton, oResponse.custom_documentation);
5131            }else{
5132                if ( oResponse.desc ){
5133                    g_oCTLBootstrapModals.alert("", oResponse.desc );
5134                }else{
5135                    g_oCTLBootstrapModals.alert("", g_oCTLWPStudio._oLangCommon["Ooops! Something Went Wrong!"]);
5136                }  
5137            }
5138        },
5139        error: function(jqXHR, textStatus, errorThrown){
5140            g_oCTLWPStudio.closeDlg(idLoading);
5141            alert(g_oCTLWPStudio._oLangCommon["Ooops! Something Went Wrong!"]);  
5142        }
5143    });  
5144}
5145
5146function ctlVulcanoDocumentationResetWidgetDocumentation(oNodeButton){
5147
5148    let oFormData = jQuery("#"+oNodeButton.data("form-id")).serializeForm();
5149
5150    oFormData['action']           = 'ctl-wp-studio';
5151    oFormData['execute']          = 'ctl-documentation';   
5152    oFormData['widget-id']        = oNodeButton.data("widget-id");
5153    oFormData['widget-type']      = oNodeButton.data("widget-type");  
5154    oFormData['shortcode-type']   = oNodeButton.data("shortcode-type");  
5155    oFormData['extension-action'] = 'reset-widget-documentation';
5156
5157    var idLoading = g_oCTLWPStudio.showLoading("");
5158    
5159    jQuery.ajax({
5160        url : g_oCTLWPStudio._oLangCommon["ajaxurl"],
5161        type: "POST",
5162        data : oFormData,
5163        cache: false,
5164        method: 'POST',
5165        success:function(response, textStatus, jqXHR){
5166            g_oCTLWPStudio.closeDlg(idLoading);
5167            var oResponse = jQuery.parseJSON(response);
5168
5169            if ( oResponse.res === true ){ 
5170                
5171                __ctlVulcanoDocumentationResetUpdateButton(oNodeButton, false);
5172
5173                g_oCTLBootstrapModals.closeModalAndStack();
5174            }else{
5175                if ( oResponse.desc ){
5176                    g_oCTLBootstrapModals.alert("", oResponse.desc );
5177                }else{
5178                    g_oCTLBootstrapModals.alert("", g_oCTLWPStudio._oLangCommon["Ooops! Something Went Wrong!"]);
5179                }  
5180            }
5181        },
5182        error: function(jqXHR, textStatus, errorThrown){
5183            g_oCTLWPStudio.closeDlg(idLoading);
5184            alert(g_oCTLWPStudio._oLangCommon["Ooops! Something Went Wrong!"]);  
5185        }
5186    });  
5187
5188}
5189
5190function __ctlVulcanoDocumentationResetUpdateButton(oNodeButton, bCustomDocumentation = false){
5191    let oNodeWidgetButton = jQuery(".ctl-vulcano-admin-gui-shortcut-action-widget-documentation[data-widget-id='" + oNodeButton.data("widget-id") + "'][data-widget-type='" + oNodeButton.data("widget-type") + "'][data-shortcode-type='" + oNodeButton.data("shortcode-type") + "']");
5192
5193    let oNodeIconEmpty = oNodeWidgetButton.find("i.ctl-wp-studio-icons-circle-empty");
5194    let oNodeIcon      = oNodeWidgetButton.find("i.ctl-wp-studio-icons-circle");
5195
5196    if ( bCustomDocumentation === true ){
5197        if (oNodeIconEmpty.length > 0){
5198            oNodeIconEmpty.removeClass("ctl-wp-studio-icons-circle-empty");
5199            oNodeIconEmpty.addClass("ctl-wp-studio-icons-circle");
5200        }
5201    }else{
5202        if (oNodeIcon.length > 0){
5203            oNodeIcon.removeClass("ctl-wp-studio-icons-circle");
5204            oNodeIcon.addClass("ctl-wp-studio-icons-circle-empty");                        
5205        }
5206    }    
5207}
5208
5209function ctlVulcanoDocumentationGetWidgetDocumentation(oNodeButton){
5210    var oFormData = {};
5211    oFormData['action']           = 'ctl-wp-studio';
5212    oFormData['execute']          = 'ctl-documentation';   
5213    oFormData['widget-id']        = oNodeButton.data("widget-id");
5214    oFormData['widget-type']      = oNodeButton.data("widget-type");  
5215    oFormData['shortcode-type']   = oNodeButton.data("shortcode-type");  
5216    oFormData['extension-action'] = 'get-widget-documentation';
5217
5218    var idLoading = g_oCTLWPStudio.showLoading("");
5219    
5220    jQuery.ajax({
5221        url : g_oCTLWPStudio._oLangCommon["ajaxurl"],
5222        type: "POST",
5223        data : oFormData,
5224        cache: false,
5225        method: 'POST',
5226        success:function(response, textStatus, jqXHR){
5227            g_oCTLWPStudio.closeDlg(idLoading);
5228            var oResponse = jQuery.parseJSON(response);
5229
5230            let html = Base64.decode(oResponse.html);
5231
5232            g_oCTLBootstrapModals.showModal({
5233                modal_title : g_oCTLDocumentationLocalizationFront["Documentation"],
5234                modal_content : html,
5235                entrance_animation : "animate__slideInUp",
5236                exit_animation : "animate__slideOutDown",                        
5237                closeable : true,
5238                width: '80',
5239                position: "centered"
5240            });
5241        },
5242        error: function(jqXHR, textStatus, errorThrown){
5243            g_oCTLWPStudio.closeDlg(idLoading);
5244            alert(g_oCTLWPStudio._oLangCommon["Ooops! Something Went Wrong!"]);  
5245        }
5246    });    
5247}
5248
5249function ctlVulcanoDocumentationShowCurrentModalDoc( oNodeButton ){
5250    var oFormData = {};
5251    oFormData['action']           = 'ctl-wp-studio';
5252    oFormData['execute']          = 'ctl-documentation';   
5253    oFormData['modal-id']         = oNodeButton.data("widget-id");     
5254    oFormData['extension-action'] = 'get-modal-documentation'; 
5255
5256    var idLoading = g_oCTLWPStudio.showLoading("");
5257    
5258    jQuery.ajax({
5259        url : g_oCTLWPStudio._oLangCommon["ajaxurl"],
5260        type: "POST",
5261        data : oFormData,
5262        cache: false,
5263        method: 'POST',
5264        success:function(response, textStatus, jqXHR){
5265            g_oCTLWPStudio.closeDlg(idLoading);
5266            var oResponse = jQuery.parseJSON(response);
5267
5268            let html = Base64.decode(oResponse.html);
5269
5270            g_oCTLBootstrapModals.showModal({
5271                wrapper_classes : "ctl-documentation-current-modal-doc-modal",
5272                modal_title : g_oCTLDocumentationLocalizationFront["Documentation"],
5273                modal_content : html,
5274                entrance_animation : "animate__slideInUp",
5275                exit_animation : "animate__slideOutDown",                        
5276                closeable : true,
5277                width: '80',
5278                position: "centered"
5279            });
5280        },
5281        error: function(jqXHR, textStatus, errorThrown){
5282            g_oCTLWPStudio.closeDlg(idLoading);
5283            alert(g_oCTLWPStudio._oLangCommon["Ooops! Something Went Wrong!"]);  
5284        }
5285    });
5286}
5287
5288function ctlVulcanoDocumentationShowCurrentPageDoc( oNodeButton ){
5289    
5290    var oFormData = {};
5291    oFormData['action']           = 'ctl-wp-studio';
5292    oFormData['execute']          = 'ctl-documentation';   
5293    oFormData['page-id']          = jQuery("body").data("page-id");     
5294    oFormData['extension-action'] = 'get-page-documentation';  
5295    oFormData['sidebar-index']    = true; 
5296
5297    var idLoading = g_oCTLWPStudio.showLoading("");
5298    
5299    jQuery.ajax({
5300        url : g_oCTLWPStudio._oLangCommon["ajaxurl"],
5301        type: "POST",
5302        data : oFormData,
5303        cache: false,
5304        method: 'POST',
5305        success:function(response, textStatus, jqXHR){
5306            g_oCTLWPStudio.closeDlg(idLoading);
5307            var oResponse = jQuery.parseJSON(response);
5308
5309            let html = Base64.decode(oResponse.html);
5310
5311            g_oCTLBootstrapModals.showModal({
5312                wrapper_classes : "ctl-documentation-current-page-doc-modal",
5313                modal_title : g_oCTLDocumentationLocalizationFront["Documentation"],
5314                modal_content : html,
5315                entrance_animation : "animate__slideInUp",
5316                exit_animation : "animate__slideOutDown",                        
5317                closeable : true,
5318                width: '80',
5319                position: "centered"
5320            });
5321        },
5322        error: function(jqXHR, textStatus, errorThrown){
5323            g_oCTLWPStudio.closeDlg(idLoading);
5324            alert(g_oCTLWPStudio._oLangCommon["Ooops! Something Went Wrong!"]);  
5325        }
5326    });
5327}
5328
5329function ctlVulcanoDocumentationBuildIndex(oNodeDom){
5330
5331    let oNodeParentToInit = null;
5332
5333    if (oNodeDom){
5334        oNodeParentToInit = oNodeDom;
5335    }else{
5336        oNodeParentToInit = jQuery("body");
5337    }
5338
5339    let oNodeContent = oNodeParentToInit.find(".ctl-documentation-content");
5340
5341    let htmlItems = __ctlVulcanoDocumentationBuildItems(oNodeContent, true);
5342    let html = '';
5343
5344    html += '<h1 class="ctl-documentation-index-title">';
5345        html += "Indice";
5346    html += '</h1>';   
5347    html += htmlItems;
5348    
5349    oNodeParentToInit.find(".ctl-documentation-index").html(html);    
5350}
5351
5352function __ctlVulcanoDocumentationBuildItems(oContainer) {
5353    let html = '';
5354    let currentLevel = 0;
5355    
5356    // 1. Seleziona tutti i titoli del documento in ordine lineare
5357    let oTitles = oContainer.find(".ctl-documentation-section-title");
5358    
5359    oTitles.each(function(index) {
5360        let oTitle = jQuery(this);
5361        let szTagName = oTitle.prop("tagName"); // Es. "H1", "H2", "H3..."
5362        let level = parseInt(szTagName.substring(1)); // Estrae il numero (1, 2, 3, 4)
5363        
5364        // 2. Pulizia del testo (rimuove i link "torna su" o icone d-print-none)
5365        let oClone = oTitle.clone();
5366        oClone.find("a, button, .d-print-none, i").remove();
5367        let szTitleText = oClone.text().trim();
5368        let szId = oTitle.attr("id");
5369        
5370        if (!szId) return; // Salta il titolo se non ha un ID di ancoraggio
5371        
5372        // Inizializzazione al primo ciclo
5373        if (currentLevel === 0) {
5374            html += "<ul class='ctl-documentation-index-list list-unstyled'>";
5375            currentLevel = level;
5376        }
5377        
5378        // 3. Gestione dei livelli dell'indice (Albero UL/LI)
5379        if (level > currentLevel) {
5380            // Se scendiamo di livello (es. da H1 a H2), apriamo una nuova lista
5381            while (level > currentLevel) {
5382                html += "<ul class='ctl-documentation-index-list list-unstyled ml-3'>";
5383                currentLevel++;
5384            }
5385        } else if (level < currentLevel) {
5386            // Se risaliamo di livello (es. da H3 a H2), chiudiamo le liste aperte
5387            while (level < currentLevel) {
5388                html += "</li></ul>";
5389                currentLevel--;
5390            }
5391            html += "</li>";
5392        } else {
5393            // Stesso livello, chiudiamo solo il list-item precedente
5394            if (index > 0) {
5395                html += "</li>";
5396            }
5397        }
5398        
5399        // 4. Costruzione del link dell'indice
5400        let szAnchorClasses = "ctl-documentation-index-link ctl-vulcano-scroll-to-selector";
5401        html += "<li class='ctl-documentation-index-item'>";
5402        html += '<a href="#' + szId + '" class="' + szAnchorClasses + '">' + szTitleText + '</a>';
5403    });
5404    
5405    // Chiude tutti i tag rimasti aperti alla fine del ciclo
5406    while (currentLevel > 0) {
5407        html += "</li></ul>";
5408        currentLevel--;
5409    }
5410    
5411    return html;
5412}
5413
5414function ctlVulcanoDocumentationBuildAnonymousWidgets(oNodeDom){
5415
5416    let oNodeParentToInit = null;
5417
5418    if (oNodeDom){
5419        oNodeParentToInit = oNodeDom;
5420    }else{
5421        oNodeParentToInit = jQuery("body");
5422    }
5423
5424    oNodeParentToInit.find(".ctl-documentation-rolling-number-widget").each(function(){
5425
5426        if (jQuery(this).closest(".ctl-documentation-widget-form").length > 0){
5427            return;
5428        }
5429
5430        let oNodeWidget = jQuery(this);
5431        let idWidget    = jQuery(this).data("widget-id");
5432
5433        jQuery(".ctl-rolling-number-" + idWidget).clone().appendTo(oNodeWidget);
5434
5435        oNodeWidget.find(".ctl-vulcano-admin-gui-shortcut-actions").remove();
5436        oNodeWidget.find(".btn-rolling-number-view-page").remove();
5437
5438        oNodeWidget.find(".ctl-rolling-number-index").text("xxxx");
5439        oNodeWidget.css("max-width","150px");
5440    });
5441
5442    jQuery(".ctl-documentation-table-widget").each(function(){
5443
5444        if (jQuery(this).closest(".ctl-documentation-widget-form").length > 0){
5445            return;
5446        }
5447        
5448        let oNodeWidget = jQuery(this);
5449        let idWidget    = jQuery(this).data("widget-id");
5450
5451        let oNodeTable = jQuery(".ctl-theme-table-main-wrapper-" + idWidget).clone()
5452        
5453        oNodeTable.appendTo(oNodeWidget);
5454
5455        let iCntRowCounter = 0;
5456        let iLimitRows = 6;
5457
5458        if ( oNodeTable.hasClass("ctl-table-cards") ){
5459            iLimitRows = 1;
5460        }
5461
5462        oNodeTable.find(".ctl-vulcano-admin-gui-shortcut-actions").remove();
5463
5464        oNodeTable.find("tbody tr").each(function(){
5465
5466            if ( jQuery(this).attr("data-resource-id") == "table-fake-row" ){
5467                jQuery(this).remove();
5468                return;
5469            }
5470
5471            iCntRowCounter++;
5472            
5473            if (iCntRowCounter > iLimitRows ){
5474                jQuery(this).remove();
5475            }else{
5476                jQuery(this).removeAttr("data-resource-id");
5477
5478                jQuery(this).find("td").each(function(){
5479                    let oNodeTd = jQuery(this);
5480
5481                    if ( oNodeTd.hasClass("ctl-table-row-actions")){
5482
5483                    }else{
5484                        switch(oNodeTd.attr("data-format")){
5485                            case "POST-STATUS":{
5486
5487                            }break;
5488                            default:{
5489                                oNodeTd.find(".ctl-table-cell-data").text("xxxx");                    
5490                            }
5491                        }
5492                    }
5493                });
5494            }
5495        });
5496
5497        oNodeWidget.css("zoom","0.5");
5498    });
5499
5500
5501}
5502// file: /var/www/vhosts/codethislab.com/httpdocs/wp-content/plugins/ctl-wp-studio/classes/modules/ctl-health/php/../js/front.js
5503jQuery(document).ready(function(){
5504
5505    jQuery(document).on("click", ".ctl-health-action-clear-total-cache", function(){              
5506        ctlHealthClearTotalCache(jQuery(this));     
5507    });
5508
5509    jQuery(document).on("click", ".ctl-health-action-clear-folder-cache", function(){              
5510        ctlHealthClearFolderCache(jQuery(this));     
5511    });   
5512
5513    jQuery(document).on("click", ".ctl-health-action-clear-error-log", function(){              
5514        ctlHealthClearErrorLog(jQuery(this));     
5515    });       
5516});
5517
5518function ctlHealthClearTotalCache( oNodeButton ){
5519    let idConfirmModal = g_oCTLBootstrapModals.confirm("", g_oCTLHealthLocalizationFront["Do you want to clear the total cache?"],
5520        g_oCTLHealthLocalizationFront["Yes"], function(){
5521
5522            var oFormData = {};
5523
5524            oFormData['action']           = 'ctl-wp-studio';
5525            oFormData['execute']          = 'ctl-health';        
5526            oFormData['extension-action'] = 'clear-total-cache';  
5527            oFormData['widget-id']        = oNodeButton.data("widget-id");
5528
5529            var idLoading = g_oCTLWPStudio.showLoading("");
5530            
5531            jQuery.ajax({
5532                url : g_oCTLWPStudio._oLangCommon["ajaxurl"],
5533                type: "POST",
5534                data : oFormData,
5535                cache: false,
5536                method: 'POST',
5537                success:function(response, textStatus, jqXHR){
5538                    var oResponse = jQuery.parseJSON(response);
5539
5540                    if( oResponse.res === true ){     
5541                        g_oCTLBootstrapModals.closeModal(jQuery("#"+idConfirmModal));          
5542                        window.location.reload();               
5543                    }else{
5544                        g_oCTLWPStudio.closeDlg(idLoading);
5545
5546                        if (oResponse.desc) {
5547                            g_oCTLBootstrapModals.alert(oResponse.desc);
5548                        }
5549                    }
5550                },
5551                error: function(jqXHR, textStatus, errorThrown){
5552                    g_oCTLWPStudio.closeDlg(idLoading);
5553                    alert(g_oCTLWPStudio._oLangCommon["Ooops! Something Went Wrong!"]);  
5554                }
5555            });
5556        }
5557    );
5558}
5559
5560function ctlHealthClearErrorLog( oNodeButton ){
5561    let idConfirmModal = g_oCTLBootstrapModals.confirm("", g_oCTLHealthLocalizationFront["Do you want to clear the error log?"],
5562        g_oCTLHealthLocalizationFront["Yes"], function(){
5563
5564            var oFormData = {};
5565
5566            oFormData['action']           = 'ctl-wp-studio';
5567            oFormData['execute']          = 'ctl-health';        
5568            oFormData['extension-action'] = 'clear-error-log';  
5569            oFormData['widget-id']        = oNodeButton.data("widget-id");
5570
5571            var idLoading = g_oCTLWPStudio.showLoading("");
5572            
5573            jQuery.ajax({
5574                url : g_oCTLWPStudio._oLangCommon["ajaxurl"],
5575                type: "POST",
5576                data : oFormData,
5577                cache: false,
5578                method: 'POST',
5579                success:function(response, textStatus, jqXHR){
5580                    var oResponse = jQuery.parseJSON(response);
5581
5582                    g_oCTLWPStudio.closeDlg(idLoading);
5583
5584                    if( oResponse.res === true ){       
5585                        g_oCTLBootstrapModals.closeModal(jQuery("#"+idConfirmModal));        
5586                        
5587                        g_oCTLWPStudio.showLoading("");
5588                        window.location.reload();
5589                    }else{
5590                        if (oResponse.desc) {
5591                            g_oCTLBootstrapModals.alert(oResponse.desc);
5592                        }
5593                    }
5594                },
5595                error: function(jqXHR, textStatus, errorThrown){
5596                    g_oCTLWPStudio.closeDlg(idLoading);
5597                    alert(g_oCTLWPStudio._oLangCommon["Ooops! Something Went Wrong!"]);  
5598                }
5599            });
5600        }
5601    );
5602}    
5603
5604function ctlHealthClearFolderCache( oNodeButton ){
5605    let idConfirmModal = g_oCTLBootstrapModals.confirm("", g_oCTLHealthLocalizationFront["Do you want to clear the folder cache?"],
5606        g_oCTLHealthLocalizationFront["Yes"], function(){
5607
5608            var oFormData = {};
5609
5610            oFormData['action']           = 'ctl-wp-studio';
5611            oFormData['execute']          = 'ctl-health';        
5612            oFormData['extension-action'] = 'clear-folder-cache';  
5613            oFormData['widget-id']        = oNodeButton.closest("ul").data("widget-id");
5614            oFormData['folder']           = oNodeButton.data("folder");
5615
5616            var idLoading = g_oCTLWPStudio.showLoading("");
5617            
5618            jQuery.ajax({
5619                url : g_oCTLWPStudio._oLangCommon["ajaxurl"],
5620                type: "POST",
5621                data : oFormData,
5622                cache: false,
5623                method: 'POST',
5624                success:function(response, textStatus, jqXHR){
5625                    var oResponse = jQuery.parseJSON(response);
5626
5627                    g_oCTLWPStudio.closeDlg(idLoading);
5628
5629                    if( oResponse.res === true ){       
5630                        g_oCTLBootstrapModals.closeModal(jQuery("#"+idConfirmModal));        
5631                        oNodeButton.closest("li").find(".badge").text("0 MB");
5632                    }else{
5633                        if (oResponse.desc) {
5634                            g_oCTLBootstrapModals.alert(oResponse.desc);
5635                        }
5636                    }
5637                },
5638                error: function(jqXHR, textStatus, errorThrown){
5639                    g_oCTLWPStudio.closeDlg(idLoading);
5640                    alert(g_oCTLWPStudio._oLangCommon["Ooops! Something Went Wrong!"]);  
5641                }
5642            });
5643        }
5644    );
5645}
5646// file: /var/www/vhosts/codethislab.com/httpdocs/wp-content/plugins/ctl-wp-studio/classes/extensions/ctl-background-slideshow/php/../js/front.js
5647var g_fBackgroundSlideshowInitialScale = 1.3;
5648var g_fBackgroundSlideshowOffset       = 100;
5649var g_fBackgroundSlideshowMultiplier   = .25;
5650
5651jQuery(window).scroll(function(){ 
5652    ctlAnimateSequenceOfImages();
5653});
5654window.addEventListener("orientationchange", function(){
5655    ctlAnimateSequenceOfImages();
5656});
5657window.addEventListener("touchmove", function(){
5658    ctlAnimateSequenceOfImages();
5659});
5660jQuery(window).resize(function() {
5661    ctlAnimateSequenceOfImages();
5662});
5663
5664jQuery(window).ready(function(){  
5665    jQuery(".ctl-background-slideshow").each(function(){
5666        var oNodeSlideShow = jQuery(this);
5667
5668        var fMovement = (
5669                (g_fBackgroundSlideshowInitialScale * g_fBackgroundSlideshowOffset) - 
5670                        g_fBackgroundSlideshowOffset)*g_fBackgroundSlideshowMultiplier;
5671        oNodeSlideShow.children().each(function(){
5672            var oDataAnimation = ctlBackgroundSlideshowPrepareAnimation(
5673                                            jQuery(this), g_fBackgroundSlideshowInitialScale, fMovement);            
5674            oDataAnimation["opacity"]  = 0;
5675            oDataAnimation["duration"] = 0;            
5676            jQuery(this).transition(oDataAnimation);
5677        });
5678    });
5679
5680    ctlAnimateSequenceOfImages();
5681});
5682
5683
5684jQuery(window).on('load', function() { // makes sure the whole site is loaded  
5685
5686    jQuery(".ctl-background-slideshow").each(function(){
5687        var oNodeSlideShow = jQuery(this);
5688        
5689        var iSlideDuration      = parseInt(oNodeSlideShow.attr("data-slide-duration"));        
5690        var iFadeDuration       = parseInt(oNodeSlideShow.attr("data-fade-duration"));
5691        var iTransitionDuration = parseInt(oNodeSlideShow.attr("data-transition-duration"));
5692        
5693
5694        var fBackgroundSlideshowOffset = g_fBackgroundSlideshowOffset;
5695        var oNodeLast = oNodeSlideShow.children().last();
5696                
5697        if ( oNodeLast.attr("data-animation") !== "none" ){
5698            fBackgroundSlideshowOffset = 200;
5699        }
5700        
5701        var fMovement = (
5702                (g_fBackgroundSlideshowInitialScale * fBackgroundSlideshowOffset) - 
5703                        fBackgroundSlideshowOffset)*g_fBackgroundSlideshowMultiplier;        
5704        
5705        var oDataAnimation = ctlBackgroundSlideshowPrepareAnimation(
5706                                            oNodeLast, g_fBackgroundSlideshowInitialScale, fMovement);            
5707        oDataAnimation["opacity"]  = 1;
5708        oDataAnimation["duration"] = iTransitionDuration;    
5709        oDataAnimation["easing"] = 'ease';
5710
5711        oNodeLast.transition({ x:0, y:0, opacity : 1, scale: g_fBackgroundSlideshowInitialScale, duration:0 })
5712              .transition(oDataAnimation);
5713
5714        if ( oNodeSlideShow.children().length > 1 ){
5715            setInterval(function(){            
5716                var oNode1 = oNodeSlideShow.children().eq(oNodeSlideShow.children().length-1);
5717                var oNode2 = oNodeSlideShow.children().eq(oNodeSlideShow.children().length-2);
5718
5719                var fBackgroundSlideshowOffset = g_fBackgroundSlideshowOffset;
5720
5721                if ( oNode2.attr("data-animation") !== "none" ){
5722                    fBackgroundSlideshowOffset = 200;
5723                }
5724
5725                var fMovement = (
5726                        (g_fBackgroundSlideshowInitialScale * fBackgroundSlideshowOffset) - 
5727                                fBackgroundSlideshowOffset)*g_fBackgroundSlideshowMultiplier;   
5728                var oDataAnimation = ctlBackgroundSlideshowPrepareAnimation(
5729                                                        oNode2, g_fBackgroundSlideshowInitialScale, fMovement);  
5730
5731                oDataAnimation["opacity"]  = 1;
5732                oDataAnimation["duration"] = iTransitionDuration;    
5733                oDataAnimation["easing"] = 'in-out';
5734
5735                oNode1.transition({ opacity: 0, duration: iFadeDuration, complete: function(){
5736                    oNode1.insertBefore( oNodeSlideShow.children().first() );    
5737                } });
5738
5739                oNode2.transition({ x:0, y:0, opacity : 1, scale: g_fBackgroundSlideshowInitialScale, duration:0 })
5740                      .transition(oDataAnimation);
5741
5742            }, iSlideDuration);
5743        }
5744
5745
5746    });   
5747    
5748});
5749
5750function ctlAnimateSequenceOfImages() {
5751
5752    var scrollTop  = jQuery(window).scrollTop();
5753    var iWindowOffset = scrollTop + jQuery(window).outerHeight();
5754
5755    jQuery(".ctl-sequence-images").each(function(){
5756        var oNodeSequence = jQuery(this);
5757        var iOffset    = oNodeSequence.attr("data-delay-offset");
5758        var iNumFrames = oNodeSequence.attr("data-num-frames");
5759
5760        var iTestOffset  = iWindowOffset - iOffset;
5761        var iPieceHeight = 0;
5762        var fAmount      = 0;
5763
5764        if ( iTestOffset >= oNodeSequence.offset().top  ) {
5765            iPieceHeight = (iTestOffset - oNodeSequence.offset().top);
5766            if ( iPieceHeight > oNodeSequence.height() ){
5767                iPieceHeight = oNodeSequence.height();
5768            }
5769        }
5770        
5771        if (iPieceHeight > 0 ){
5772            fAmount = iPieceHeight/oNodeSequence.height();
5773        }
5774
5775        var imageIndex = Math.round(fAmount * (iNumFrames-1));
5776        var iPreviousIndex = -1;
5777
5778        if ( oNodeSequence.attr("data-image-index") && 
5779            imageIndex != oNodeSequence.attr("data-image-index")){
5780            iPreviousIndex = Number(oNodeSequence.attr("data-image-index"));            
5781        }   
5782        
5783        var bUpdateSequence = false;
5784
5785        switch( oNodeSequence.attr("data-direction") ){        
5786            case "back-and-forth":{
5787                bUpdateSequence = true;
5788            }break;
5789            case "only-forward":{
5790                if ( iPreviousIndex < imageIndex ){
5791                    bUpdateSequence = true;
5792                }
5793            }break;
5794        }
5795
5796        if ( bUpdateSequence){
5797            oNodeSequence.find("img").eq(iPreviousIndex).css("display", "none");
5798            oNodeSequence.find("img").eq(imageIndex).css("display", "block");
5799            oNodeSequence.attr("data-image-index", imageIndex);
5800        }
5801    });
5802}
5803
5804function ctlBackgroundSlideshowPrepareAnimation( oNodeSlide, fInitialScale, fMovement ){
5805    var szZoom      = oNodeSlide.attr("data-zoom");
5806    var szAnimation = oNodeSlide.attr("data-animation");
5807    var szEase      = oNodeSlide.attr("data-ease");
5808
5809    var oDataAnimation = {
5810        scale : fInitialScale,
5811        ease : szEase,
5812        x : 0,
5813        y : 0
5814    };
5815
5816
5817    switch( szZoom ){
5818        case "zoom-in":{
5819            oDataAnimation["scale"] = fInitialScale * 1.1;  
5820        }break;
5821        case "zoom-out":{
5822            oDataAnimation["scale"] = fInitialScale / 1.1;  
5823        }break;        
5824    }
5825    
5826    switch( szAnimation ){
5827        case "bottom":{
5828            oDataAnimation["y"] = "-"+fMovement+"%"; 
5829            oDataAnimation["transformOrigin"] = '50% 0%';
5830        }break;
5831        case "top":{
5832            oDataAnimation["y"] = fMovement+ "%";
5833            oDataAnimation["transformOrigin"] = '50% 100%';
5834        }break;
5835        case "left":{
5836            oDataAnimation["x"] = fMovement + "%";  
5837            oDataAnimation["transformOrigin"] = '100% 50%';
5838        }break;
5839        case "right":{
5840            oDataAnimation["x"] = "-"+fMovement+"%";
5841            oDataAnimation["transformOrigin"] = '0% 50%';
5842        }break;
5843    
5844        case "bottom-left":{
5845            oDataAnimation["x"] = fMovement + "%"; 
5846            oDataAnimation["y"] = "-"+fMovement+"%";              
5847            oDataAnimation["transformOrigin"] = '100% 0%';
5848        }break;
5849        case "bottom-right":{
5850            oDataAnimation["x"] = "-"+fMovement+"%"; 
5851            oDataAnimation["y"] = "-"+fMovement+"%";  
5852            oDataAnimation["transformOrigin"] = '100% 100%';
5853        }break;
5854    
5855        case "top-left":{
5856            oDataAnimation["x"] = fMovement + "%";  
5857            oDataAnimation["y"] = fMovement + "%";
5858            oDataAnimation["transformOrigin"] = '0% 0%';
5859        }break;
5860        case "top-right":{
5861            oDataAnimation["x"] = "-"+fMovement+"%";  
5862            oDataAnimation["y"] = fMovement + "%";
5863            oDataAnimation["transformOrigin"] = '0% 100%';
5864        }break;      
5865        default:{
5866            oDataAnimation["transformOrigin"] = '50% 50%';
5867        }
5868    }   
5869    
5870    return oDataAnimation;
5871}
5872// file: /var/www/vhosts/codethislab.com/httpdocs/wp-content/plugins/ctl-wp-studio/classes/extensions/ctl-bootstrap-4/php/../js/popper.min.js
5873/*
5874 Copyright (C) Federico Zivolo 2019
5875 Distributed under the MIT License (license terms are at http://opensource.org/licenses/MIT).
5876 */(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}
vendor: 3,236 bytes, line 5876
5876function 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'],10)+parseFloat(e['border'+n+'Width'],10)}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,10),c=parseFloat(m.borderLeftWidth,10);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,10),y=parseFloat(m.marginLeft,10
vendor: 13,566 bytes, line 5876
5876);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]
vendor: 2,544 bytes, line 5876
5876,10),E=parseFloat(w['border'+f+'Width'],10),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;
5876void 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});
5877//# sourceMappingURL=popper.min.js.map
5878
5879// file: /var/www/vhosts/codethislab.com/httpdocs/wp-content/plugins/ctl-wp-studio/classes/extensions/ctl-bootstrap-4/php/../js/bootstrap.min.js
5880/*!
5881  * Bootstrap v4.5.3 (https://getbootstrap.com/)
5882  * Copyright 2011-2020 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
5883  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
5884  */
5885!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),t}function r(){return(r=Object.assign||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}).apply(this,arguments)}function u(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}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("transitionend")},supportsTransitionEnd:function(){return Boolean("transitionend")},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=u,o.default.event.special[d.TRANSITION_END]={bindType:"transitionend",delegateType:"transitionend",handle:function(t){if(o.default(t.target).is(this))return t.handleObj.handler.apply(this,arguments)}};var f="alert",c=o.default.fn[f],h=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)}
vendor: 26,256 bytes, line 5885
5885,e.dispose=function(){o.default.removeData(this._element,"bs.alert"),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("bs.alert");i||(i=new t(this),n.data("bs.alert",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.5.3"}}]),t}();o.default(document).on("click.bs.alert.data-api",'[data-dismiss="alert"]',h._handleDismiss(new h)),o.default.fn[f]=h._jQueryInterface,o.default.fn[f].Constructor=h,o.default.fn[f].noConflict=function(){return o.default.fn[f]=c,h._jQueryInterface};var g=o.default.fn.button,m=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('input:not([type="hidden"])');if(i){if("radio"===i.type)if(i.checked&&this._element.classList.contains("active"))t=!1;else{var a=n.querySelector(".active");a&&o.default(a).removeClass("active")}t&&("checkbox"!==i.type&&"radio"!==i.type||(i.checked=!this._element.classList.contains("active")),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("active")),t&&o.default(this._element).toggleClass("active"))},e.dispose=function(){o.default.removeData(this._element,"bs.button"),this._element=null},t._jQueryInterface=function(e,n){return this.each((function(){var i=o.default(this),a=i.data("bs.button");a||(a=new t(this),i.data("bs.button",a)),a.shouldAvoidTriggerChange=n,"toggle"===e&&a[e]()}))},l(t,null,[{key:"VERSION",get:function(){return"4.5.3"}}]),t}();o.default(document).on("click.bs.button.data-api",'[data-toggle^="button"]',(function(t){var e=t.target,n=e;if(o.default(e).hasClass("btn")||(e=o.default(e).closest(".btn")[0]),!e||e.hasAttribute("disabled")||e.classList.contains("disabled"))t.preventDefault();else{var i=e.querySelector('input:not([type="hidden"])');if(i&&(i.hasAttribute("disabled")||i.classList.contains("disabled")))return void t.preventDefault();"INPUT"!==n.tagName&&"LABEL"===e.tagName||m._jQueryInterface.call(o.default(e),"toggle","INPUT"===n.tagName)}})).on("focus.bs.button.data-api blur.bs.button.data-api",'[data-toggle^="button"]',(function(t){var e=o.default(t.target).closest(".btn")[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('input:not([type="hidden"])');o.checked||o.hasAttribute("checked")?i.classList.add("active"):i.classList.remove("active")}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("active"):l.classList.remove("active")}})),o.default.fn.button=m._jQueryInterface,o.default.fn.button.Constructor=m,o.default.fn.button.noConflict=function(){return o.default.fn.button=g,m._jQueryInterface};var p="carousel",_=".bs.carousel",v=o.default.fn[p],b={interval:5e3,keyboard:!0,slide:!1,pause:"hover",wrap:!0,touch:!0},y={interval:"(number|boolean)",keyboard:"boolean",slide:"(boolean|string)",pause:"(string|boolean)",wrap:"boolean",touch:"boolean"},E={TOUCH:"touch",PEN:"pen"},w=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("next")},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("prev")},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._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(".active.carousel-item");var n=this._getItemIndex(this._activeElement);if(!(t>this._items.length-1||t<0))if(this._isSliding)o.default(this._element).one("slid.bs.carousel",(function(){return e.to(t)}));else{if(n===t)return this.pause(),void this.cycle();var i=t>n?"next":"prev";this._slide(i,this._items[t])}},e.dispose=function(){o.default(this._element).off(_),o.default.removeData(this._element,"bs.carousel"),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({},b,t),d.typeCheckConfig(p,t,y),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&&E[e.originalEvent.pointerType.toUpperCase()]?t.touchStartX=e.originalEvent.clientX:t._pointerEvent||(t.touchStartX=e.originalEvent.touches[0].clientX)},n=function(e){t._pointerEvent&&E[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){e.originalEvent.touches&&e.originalEvent.touches.length>1?t.touchDeltaX=0:t.touchDeltaX=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="next"===t,i="prev"===t,o=this._getItemIndex(e),a=this._items.length-1;if((i&&0===o||n&&o===a)&&!this._config.wrap)return e;var s=(o+("prev"===t?-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(".active.carousel-item")),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("active");var n=this._indicatorsElement.children[this._getItemIndex(t)];n&&o.default(n).addClass("active")}},e._slide=function(t,e){var n,i,a,s=this,l=this._element.querySelector(".active.carousel-item"),r=this._getItemIndex(l),u=e||l&&this._getItemByDirection(t,l),f=this._getItemIndex(u),c=Boolean(this._interval);if("next"===t?(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("active"))this._isSliding=!1;else if(!this._triggerSlideEvent(u,a).isDefaultPrevented()&&l&&u){this._isSliding=!0,c&&this.pause(),this._setActiveIndicatorElement(u);var h=o.default.Event("slid.bs.carousel",{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=parseInt(u.getAttribute("data-interval"),10);g?(this._config.defaultInterval=this._config.defaultInterval||this._config.interval,this._config.interval=g):this._config.interval=this._config.defaultInterval||this._config.interval;var m=d.getTransitionDurationFromElement(l);o.default(l).one(d.TRANSITION_END,(function(){o.default(u).removeClass(n+" "+i).addClass("active"),o.default(l).removeClass("active "+i+" "+n),s._isSliding=!1,setTimeout((function(){return o.default(s._element).trigger(h)}),0)})).emulateTransitionEnd(m)}else o.default(l).removeClass("active"),o.default(u).addClass("active"),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("bs.carousel"),i=r({},b,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("bs.carousel",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("bs.carousel").to(s),e.preventDefault()}}},l(t,null,[{key:"VERSION",get:function(){return"4.5.3"}},{key:"Default",get:function(){return b}}]),t}();o.default(document).on("click.bs.carousel.data-api","[data-slide], [data-slide-to]",w._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]);w._jQueryInterface.call(i,i.data())}})),o.default.fn[p]=w._jQueryInterface,o.default.fn[p].Constructor=w,o.default.fn[p].noConflict=function(){return o.default.fn[p]=v,w._jQueryInterface};var T="collapse",C=o.default.fn[T],S={toggle:!0,parent:""},N={toggle:"boolean",parent:"(string|element)"},D=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('[data-toggle="collapse"]')),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("show")?this.hide():this.show()},e.show=function(){var e,n,i=this;if(!this._isTransitioning&&!o.default(this._element).hasClass("show")&&(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("collapse")}))).length&&(e=null),!(e&&(n=o.default(e).not(this._selector).data("bs.collapse"))&&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("bs.collapse",null));var s=this._getDimension();o.default(this._element).removeClass("collapse").addClass("collapsing"),this._element.style[s]=0,this._triggerArray.length&&o.default(this._triggerArray).removeClass("collapsed").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("collapsing").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("show")){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("collapsing").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);if(null!==l)o.default([].slice.call(document.querySelectorAll(l))).hasClass("show")||o.default(s).addClass("collapsed").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("collapsing").addClass("collapse").trigger("hidden.bs.collapse")})).emulateTransitionEnd(r)}}},e.setTransitioning=function(t){this._isTransitioning=t},e.dispose=function(){o.default.removeData(this._element,"bs.collapse"),this._config=null,this._parent=null,this._element=null,this._triggerArray=null,this._isTransitioning=null},e._getConfig=function(t){return(t=r({},S,t)).toggle=Boolean(t.toggle),d.typeCheckConfig(T,t,N),t},e._getDimension=function(){return o.default(this._element).hasClass("width")?"width":"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("show");e.length&&o.default(e).toggleClass("collapsed",!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("bs.collapse"),a=r({},S,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("bs.collapse",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.5.3"}},{key:"Default",get:function(){return S}}]),t}();o.default(document).on("click.bs.collapse.data-api",'[data-toggle="collapse"]',(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("bs.collapse")?"toggle":e.data();D._jQueryInterface.call(t,n)}))})),o.default.fn[T]=D._jQueryInterface,o.default.fn[T].Constructor=D,o.default.fn[T].noConflict=function(){return o.default.fn[T]=C,D._jQueryInterface};var k="dropdown",A=o.default.fn[k],I=new RegExp("38|40|27"),j={offset:0,flip:!0,boundary:"scrollParent",reference:"toggle",display:"dynamic",popperConfig:null},O={offset:"(number|string|function)",flip:"boolean",boundary:"(string|element)",reference:"(string|element)",display:"string",popperConfig:"(null|object)"},x=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("disabled")){var e=o.default(this._menu).hasClass("show");t._clearMenus(),e||this.show(!0)}},e.show=function(e){if(void 0===e&&(e=!1),!(this._element.disabled||o.default(this._element).hasClass("disabled")||o.default(this._menu).hasClass("show"))){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.js (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("show"),o.default(s).toggleClass("show").trigger(o.default.Event("shown.bs.dropdown",n))}}},e.hide=function(){if(!this._element.disabled&&!o.default(this._element).hasClass("disabled")&&o.default(this._menu).hasClass("show")){var e={relatedTarget:this._element},n=o.default.Event("hide.bs.dropdown",e),i=t._getParentFromElement(this._element);o.default(i).trigger(n),n.isDefaultPrevented()||(this._popper&&this._popper.destroy(),o.default(this._menu).toggleClass("show"),o.default(i).toggleClass("show").trigger(o.default.Event("hidden.bs.dropdown",e)))}},e.dispose=function(){o.default.removeData(this._element,"bs.dropdown"),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(k,t,this.constructor.DefaultType),t},e._getMenuElement=function(){if(!this._menu){var e=t._getParentFromElement(this._element);e&&(this._menu=e.querySelector(".dropdown-menu"))}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("dropdown-menu-right")?"top-end":"top-start":t.hasClass("dropright")?e="right-start":t.hasClass("dropleft")?e="left-start":o.default(this._menu).hasClass("dropdown-menu-right")&&(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("bs.dropdown");if(n||(n=new t(this,"object"==typeof e?e:null),o.default(this).data("bs.dropdown",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('[data-toggle="dropdown"]')),i=0,a=n.length;i<a;i++){var s=t._getParentFromElement(n[i]),l=o.default(n[i]).data("bs.dropdown"),r={relatedTarget:n[i]};if(e&&"click"===e.type&&(r.clickEvent=e),l){var u=l._menu;if(o.default(s).hasClass("show")&&!(e&&("click"===e.type&&/input|textarea/i.test(e.target.tagName)||"keyup"===e.type&&9===e.which)&&o.default.contains(s,e.target))){var d=o.default.Event("hide.bs.dropdown",r);o.default(s).trigger(d),d.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("show"),o.default(s).removeClass("show").trigger(o.default.Event("hidden.bs.dropdown",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(".dropdown-menu").length):!I.test(e.which))&&!this.disabled&&!o.default(this).hasClass("disabled")){var n=t._getParentFromElement(this),i=o.default(n).hasClass("show");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('[data-toggle="dropdown"]')).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.5.3"}},{key:"Default",get:function(){return j}},{key:"DefaultType",get:function(){return O}}]),t}();o.default(document).on("keydown.bs.dropdown.data-api",'[data-toggle="dropdown"]',x._dataApiKeydownHandler).on("keydown.bs.dropdown.data-api",".dropdown-menu",x._dataApiKeydownHandler).on("click.bs.dropdown.data-api keyup.bs.dropdown.data-api",x._clearMenus).on("click.bs.dropdown.data-api",'[data-toggle="dropdown"]',(function(t){t.preventDefault(),t.stopPropagation(),x._jQueryInterface.call(o.default(this),"toggle")})).on("click.bs.dropdown.data-api",".dropdown form",(function(t){t.stopPropagation()})),o.default.fn[k]=x._jQueryInterface,o.default.fn[k].Constructor=x,o.default.fn[k].noConflict=function(){return o.default.fn[k]=A,x._jQueryInterface};var P=o.default.fn.modal,R={backdrop:!0,keyboard:!0,focus:!0,show:!0},L={backdrop:"(boolean|string)",keyboard:"boolean",focus:"boolean",show:"boolean"},q=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){o.default(this._element).hasClass("fade")&&(this._isTransitioning=!0);var n=o.default.Event("show.bs.modal",{relatedTarget:t});o.default(this._element).trigger(n),this._isShown||n.isDefaultPrevented()||(this._isShown=!0,this._checkScrollbar(),this._setScrollbar(),this._adjustDialog(),this._setEscapeEvent(),this._setResizeEvent(),o.default(this._element).on("click.dismiss.bs.modal",'[data-dismiss="modal"]',(function(t){return e.hide(t)})),o.default(this._dialog).on("mousedown.dismiss.bs.modal",(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("fade");if(i&&(this._isTransitioning=!0),this._setEscapeEvent(),this._setResizeEvent(),o.default(document).off("focusin.bs.modal"),o.default(this._element).removeClass("show"),o.default(this._element).off("
5885click.dismiss.bs.modal"),o.default(this._dialog).off("mousedown.dismiss.bs.modal"),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("focusin.bs.modal"),o.default.removeData(this._element,"bs.modal"),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({},R,t),d.typeCheckConfig("modal",t,L),t},e._triggerBackdropTransition=function(){var t=this;if("static"===this._config.backdrop){var e=o.default.Event("hidePrevented.bs.modal");if(o.default(this._element).trigger(e),e.isDefaultPrevented())return;var n=this._element.scrollHeight>document.documentElement.clientHeight;n||(this._element.style.overflowY="hidden"),this._element.classList.add("modal-static");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("modal-static"),n||o.default(t._element).one(d.TRANSITION_END,(function(){t._element.style.overflowY=""})).emulateTransitionEnd(t._element,i)})).emulateTransitionEnd(i),this._element.focus()}else this.hide()},e._showElement=function(t){var e=this,n=o.default(this._element).hasClass("fade"),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("show"),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("focusin.bs.modal").on("focusin.bs.modal",(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("keydown.dismiss.bs.modal",(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("keydown.dismiss.bs.modal")},e._setResizeEvent=function(){var t=this;this._isShown?o.default(window).on("resize.bs.modal",(function(e){return t.handleUpdate(e)})):o.default(window).off("resize.bs.modal")},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("modal-open"),t._resetAdjustments(),t._resetScrollbar(),o.default(t._element).trigger("hidden.bs.modal")}))},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("fade")?"fade":"";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("click.dismiss.bs.modal",(function(t){e._ignoreBackdropClick?e._ignoreBackdropClick=!1:t.target===t.currentTarget&&e._triggerBackdropTransition()})),n&&d.reflow(this._backdrop),o.default(this._backdrop).addClass("show"),!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("show");var a=function(){e._removeBackdrop(),t&&t()};if(o.default(this._element).hasClass("fade")){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(".fixed-top, .fixed-bottom, .is-fixed, .sticky-top")),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("modal-open")},e._resetScrollbar=function(){var t=[].slice.call(document.querySelectorAll(".fixed-top, .fixed-bottom, .is-fixed, .sticky-top"));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("bs.modal"),a=r({},R,o.default(this).data(),"object"==typeof e&&e?e:{});if(i||(i=new t(this,a),o.default(this).data("bs.modal",i)),"string"==typeof e){if("undefined"==typeof i[e])throw new TypeError('No method n
5885amed "'+e+'"');i[e](n)}else a.show&&i.show(n)}))},l(t,null,[{key:"VERSION",get:function(){return"4.5.3"}},{key:"Default",get:function(){return R}}]),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("bs.modal")?"toggle":r({},o.default(e).data(),o.default(this).data());"A"!==this.tagName&&"AREA"!==this.tagName||t.preventDefault();var s=o.default(e).one("show.bs.modal",(function(t){t.isDefaultPrevented()||s.one("hidden.bs.modal",(function(){o.default(n).is(":visible")&&n.focus()}))}));q._jQueryInterface.call(o.default(e),a,this)})),o.default.fn.modal=q._jQueryInterface,o.default.fn.modal.Constructor=q,o.default.fn.modal.noConflict=function(){return o.default.fn.modal=P,q._jQueryInterface};var F=["background","cite","href","itemtype","longdesc","poster","src","xlink:href"],Q={"*":["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:[]},B=/^(?:(?:https?|mailto|ftp|tel|file):|[^#&/:?]*(?:[#/?]|$))/gi,H=/^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 U(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===F.indexOf(n)||Boolean(t.nodeValue.match(B)||t.nodeValue.match(H));for(var i=e.filter((function(t){return t instanceof RegExp})),o=0,a=i.length;o<a;o++)if(n.match(i[o]))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 M="tooltip",W=o.default.fn[M],V=new RegExp("(^|\\s)bs-tooltip\\S+","g"),z=["sanitize","whiteList","sanitizeFn"],K={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)",sanitize:"boolean",sanitizeFn:"(null|function)",whiteList:"object",popperConfig:"(null|object)"},X={AUTO:"auto",TOP:"top",RIGHT:"right",BOTTOM:"bottom",LEFT:"left"},Y={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",sanitize:!0,sanitizeFn:null,whiteList:Q,popperConfig:null},$={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"},J=function(){function t(t,e){if("undefined"==typeof a.default)throw new TypeError("Bootstrap's tooltips require Popper.js (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("show"))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("fade");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("show"
vendor: 6,825 bytes, line 5885
5885),"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),"out"===e&&t._leave(null,t)};if(o.default(this.tip).hasClass("fade")){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(){"show"!==e._hoverState&&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("show"),"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("fade")){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=U(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 X[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="hover"===e?t.constructor.Event.MOUSEENTER:t.constructor.Event.FOCUSIN,i="hover"===e?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?"focus":"hover"]=!0),o.default(e.getTipElement()).hasClass("show")||"show"===e._hoverState?e._hoverState="show":(clearTimeout(e._timeout),e._hoverState="show",e.config.delay&&e.config.delay.show?e._timeout=setTimeout((function(){"show"===e._hoverState&&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?"focus":"hover"]=!1),e._isWithActiveTrigger()||(clearTimeout(e._timeout),e._hoverState="out",e.config.delay&&e.config.delay.hide?e._timeout=setTimeout((function(){"out"===e._hoverState&&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!==z.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(M,t,this.constructor.DefaultType),t.sanitize&&(t.template=U(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(V);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("fade"),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("bs.tooltip"),a="object"==typeof e&&e;if((i||!/dispose|hide/.test(e))&&(i||(i=new t(this,a),n.data("bs.tooltip",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.
58855.3"}},{key:"Default",get:function(){return Y}},{key:"NAME",get:function(){return M}},{key:"DATA_KEY",get:function(){return"bs.tooltip"}},{key:"Event",get:function(){return $}},{key:"EVENT_KEY",get:function(){return".bs.tooltip"}},{key:"DefaultType",get:function(){return K}}]),t}();o.default.fn[M]=J._jQueryInterface,o.default.fn[M].Constructor=J,o.default.fn[M].noConflict=function(){return o.default.fn[M]=W,J._jQueryInterface};var G="popover",Z=o.default.fn[G],tt=new RegExp("(^|\\s)bs-popover\\S+","g"),et=r({},J.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>'}),nt=r({},J.DefaultType,{content:"(string|element|function)"}),it={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"},ot=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,e.__proto__=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(tt);null!==e&&e.length>0&&t.removeClass(e.join(""))},i._jQueryInterface=function(t){return this.each((function(){var e=o.default(this).data("bs.popover"),n="object"==typeof t?t:null;if((e||!/dispose|hide/.test(t))&&(e||(e=new i(this,n),o.default(this).data("bs.popover",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.5.3"}},{key:"Default",get:function(){return et}},{key:"NAME",get:function(){return G}},{key:"DATA_KEY",get:function(){return"bs.popover"}},{key:"Event",get:function(){return it}},{key:"EVENT_KEY",get:function(){return".bs.popover"}},{key:"DefaultType",get:function(){return nt}}]),i}(J);o.default.fn[G]=ot._jQueryInterface,o.default.fn[G].Constructor=ot,o.default.fn[G].noConflict=function(){return o.default.fn[G]=Z,ot._jQueryInterface};var at="scrollspy",st=o.default.fn[at],lt={offset:10,method:"auto",target:""},rt={offset:"number",method:"string",target:"(string|element)"},ut=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":"position",n="auto"===this._config.method?e:this._config.method,i="position"===n?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((function(t){return t})).sort((function(t,e){return t[0]-e[0]}
vendor: 8,484 bytes, line 5885
5885)).forEach((function(e){t._offsets.push(e[0]),t._targets.push(e[1])}))},e.dispose=function(){o.default.removeData(this._element,"bs.scrollspy"),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({},lt,"object"==typeof t&&t?t:{})).target&&d.isElement(t.target)){var e=o.default(t.target).attr("id");e||(e=d.getUID(at),o.default(t.target).attr("id",e)),t.target="#"+e}return d.typeCheckConfig(at,t,rt),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("active"),n.addClass("active")):(n.addClass("active"),n.parents(".nav, .list-group").prev(".nav-link, .list-group-item").addClass("active"),n.parents(".nav, .list-group").prev(".nav-item").children(".nav-link").addClass("active")),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("active")})).forEach((function(t){return t.classList.remove("active")}))},t._jQueryInterface=function(e){return this.each((function(){var n=o.default(this).data("bs.scrollspy");if(n||(n=new t(this,"object"==typeof e&&e),o.default(this).data("bs.scrollspy",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.5.3"}},{key:"Default",get:function(){return lt}}]),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]);ut._jQueryInterface.call(n,n.data())}})),o.default.fn[at]=ut._jQueryInterface,o.default.fn[at].Constructor=ut,o.default.fn[at].noConflict=function(){return o.default.fn[at]=st,ut._jQueryInterface};var dt=o.default.fn.tab,ft=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("active")||o.default(this._element).hasClass("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?"> li > .active":".active";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,"bs.tab"),this._element=null},e._activate=function(t,e,n){var i=this,a=(!e||"UL"!==e.nodeName&&"OL"!==e.nodeName?o.default(e).children(".active"):o.default(e).find("> li > .active"))[0],s=n&&a&&o.default(a).hasClass("fade"),l=function(){return i._transitionComplete(t,a,n)};if(a&&s){var r=d.getTransitionDurationFromElement(a);o.default(a).removeClass("show").one(d.TRANSITION_END,l).emulateTransitionEnd(r)}else l()},e._transitionComplete=function(t,e,n){if(e){o.default(e).removeClass("active");var i=o.default(e.parentNode).find("> .dropdown-menu .active")[0];i&&o.default(i).removeClass("active"),"tab"===e.getAttribute("role")&&e.setAttribute("aria-selected",!1)}if(o.default(t).addClass("active"),"tab"===t.getAttribute("role")&&t.setAttribute("aria-selected",!0),d.reflow(t),t.classList.contains("fade")&&t.classList.add("show"),t.parentNode&&o.default(t.parentNode).hasClass("dropdown-menu")){var a=o.default(t).closest(".dropdown")[0];if(a){var s=[].slice.call(a.querySelectorAll(".dropdown-toggle"));o.default(s).addClass("active")}t.setAttribute("aria-expanded",!0)}n&&n()},t._jQueryInterface=function(e){return this.each((function(){var n=o.default(this),i=n.data("bs.tab");if(i||(i=new t(this),n.data("bs.tab",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.5.3"}}]),t}();o.default(document).on("click.bs.tab.data-api",'[data-toggle="tab"], [data-toggle="pill"], [data-toggle="list"]',(function(t){t.preventDefault(),ft._jQueryInterface.call(o.default(this),"show")})),o.default.fn.tab=ft._jQueryInterface,o.default.fn.tab.Constructor=ft,o.default.fn.tab.noConflict=function(){return o.default.fn.tab=dt,ft._jQueryInterface};var ct=o.default.fn.toast,ht={animation:"boolean",autohide:"boolean",delay:"number"},gt={animation:!0,autohide:!0,delay:500},mt=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("showing"),t._element.classList.add("show"),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("hide"),d.reflow(this._element),this._element.classList.add("showing"),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("show")){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("show")&&this._element.classList.remove("show"),o.default(this._element).off("click.dismiss.bs.toast"),o.default.removeData(this._element,"bs.toast"),this._element=null,this._config=null},e._getConfig=function(t){return t=r({},gt,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("click.dismiss.bs.toast",'[data-dismiss="toast"]',(function(){return t.hide()}))},e._close=function(){var t=this,e=function(){t._element.classList.add("hide"),o.default(t._element).trigger("hidden.bs.toast")};if(this._element.classList.remove("show"),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("bs.toast");if(i||(i=new t(this,"object"==typeof e&&e),n.data("bs.toast",i)),"string"==typeof e){if("undefined"==typeof i[e])throw new TypeError('No method n
5885amed "'+e+'"');i[e](this)}}))},l(t,null,[{key:"VERSION",get:function(){return"4.5.3"}},{key:"DefaultType",get:function(){return ht}},{key:"Default",get:function(){return gt}}]),t}();o.default.fn.toast=mt._jQueryInterface,o.default.fn.toast.Constructor=mt,o.default.fn.toast.noConflict=function(){return o.default.fn.toast=ct,mt._jQueryInterface},t.Alert=h,t.Button=m,t.Carousel=w,t.Collapse=D,t.Dropdown=x,t.Modal=q,t.Popover=ot,t.Scrollspy=ut,t.Tab=ft,t.Toast=mt,t.Tooltip=J,t.Util=d,Object.defineProperty(t,"__esModule",{value:!0})}));
5886//# sourceMappingURL=bootstrap.min.js.map
5887// file: /var/www/vhosts/codethislab.com/httpdocs/wp-content/plugins/ctl-wp-studio/classes/extensions/ctl-bootstrap-4/php/../js/front.js
5888jQuery(window).ready(function(){ 
5889    bootstrap4ApplyAccessibilityFontSize();
5890
5891    wpdk_add_action("ctl-theme-bootstrap-modals-show-modal", function( oNodeModal ){  
5892        bootstrap4ApplyAccessibilityFontSize();   
5893    });
5894
5895    wpdk_add_action("ctl-calendar-refresh", function( oNodeCalendar ){  
5896        bootstrap4ApplyAccessibilityFontSize();   
5897    });    
5898    
5899    window.addEventListener("orientationchange", function(){
5900        bootstrap4ApplyAccessibilityFontSize();  
5901    });
5902    window.addEventListener("touchmove", function(){
5903        bootstrap4ApplyAccessibilityFontSize();  
5904    });    
5905    jQuery(window).resize(function() {
5906        bootstrap4ApplyAccessibilityFontSize();  
5907    });	   
5908
5909    wpdk_add_action("ctl-vulcano-theme-resize-layout", function(){    
5910        bootstrap4ApplyAccessibilityFontSize();  
5911    });  
5912
5913});
5914
5915function bootstrap4ApplyAccessibilityFontSize(){
5916    let fFontMultiplier = 1;
5917
5918    if ( jQuery("body").hasClass("accessibility-font-size-normal") ){
5919        return;
5920    }else if ( jQuery("body").hasClass("accessibility-font-size-large") ){
5921        fFontMultiplier = 1.333;
5922    }else if ( jQuery("body").hasClass("accessibility-font-size-extra-large") ){
5923        fFontMultiplier = 1.666;
5924    }else if ( jQuery("body").hasClass("accessibility-font-size-maximum") ){
5925        fFontMultiplier = 2;
5926    }else{
5927        return;
5928    } 
5929
5930    let szSelectorToUpdate = "h1, h2, h3, h4, h5, p";
5931
5932    szSelectorToUpdate += ", .btn, .btn i, .btn .btn-text, .ctl-form-field-label, .custom-control-label, .form-control, .ctl-form-field-description, .invali
5932d-feedback, .ctldatafield";
5933
5934    szSelectorToUpdate += ", .select2-selection__rendered";
5935    szSelectorToUpdate += ", .select2-selection__placeholder";
5936    szSelectorToUpdate += ", .select2-selection__arrow";
5937    szSelectorToUpdate += ", .select2-selection__arrow b";
5938    szSelectorToUpdate += ", .select2-selection__choice";
5939    szSelectorToUpdate += ", .select2-selection__choice__remove";
5940    szSelectorToUpdate += ", .select2-selection__choice__placeholder";
5941    szSelectorToUpdate += ", .select2-selection__choice__remove b";
5942    szSelectorToUpdate += ", .select2-selection__choice__remove i";
5943    szSelectorToUpdate += ", .select2-selection__choice__placeholder i";
5944    szSelectorToUpdate += ", .select2-selection__placeholder i";
5945    szSelectorToUpdate += ", .select2-selection__placeholder span";
5946    szSelectorToUpdate += ", .select2-selection__rendered span";
5947    szSelectorToUpdate += ", .select2-selection__arrow span";
5948    szSelectorToUpdate += ", .select2-selection__arrow i";
5949    szSelectorToUpdate += ", .select2-selection__rendered i";
5950    szSelectorToUpdate += ", .select2-selection__rendered b";
5951
5952
5953    szSelectorToUpdate += ", .navbar i";
5954
5955    szSelectorToUpdate += ", .ctl-theme-bootstrap-menu-col-nav-pills .tab-label, .ctl-theme-bootstrap-menu-col-nav-pills .ctl-tab-icon";
5956    szSelectorToUpdate += ", .nav-pills .tab-label, .nav-pills .ctl-tab-icon";	
5957
5958    szSelectorToUpdate += ", .ctlwpmenu-widget .menu-item-icon, .ctlwpmenu-widget .menu-item-text";
5959
5960    szSelectorToUpdate += ", .modal-title, .modal-body, .modal-footer";
5961
5962    szSelectorToUpdate += ", .ctl-table-cell-data, .ctl-table-cell-data .post-status";
5963
5964    szSelectorToUpdate += ", .breadcrumb-item, .breadcrumb-divider";
5965
5966    szSelectorToUpdate += ", footer *";
5967
5968    szSelectorToUpdate += ", .ctl-calendar-month-body .ctl-calendar-day h4 span";
5969
5970    jQuery(szSelectorToUpdate).each(function(){
5971        var oNodeElement = jQuery(this);
5972        var fOriginalFontSize = parseFloat(oNodeElement.attr("src-font-size"));
5973        if (!fOriginalFontSize){
5974            fOriginalFontSize = parseFloat(oNodeElement.css("font-size"));
5975            oNodeElement.attr("src-font-size", fOriginalFontSize);
5976        }
5977
5978        var fNewFontSize = fOriginalFontSize * fFontMultiplier;
5979        oNodeElement.css("font-size", fNewFontSize + "px");        
5980    });
5981}
5982// file: /var/www/vhosts/codethislab.com/httpdocs/wp-content/plugins/ctl-wp-studio/classes/extensions/ctl-chrome-php/php/../js/front.js
5983class CVulcanoMutex {
5984    constructor() {
5985        this._locked = false;
5986        this._waiting = [];
5987    }
5988
5989    lock() {
5990        const unlock = () => {
5991            const next = this._waiting.shift();
5992            if (next) next(unlock);
5993            else this._locked = false;
5994        };
5995
5996        if (this._locked) {
5997            return new Promise(resolve => this._waiting.push(resolve)).then(() => unlock);
5998        } else {
5999            this._locked = true;
6000            return Promise.resolve(unlock);
6001        }
6002    }
6003}
6004
6005
6006jQuery(document).ready(function () {
6007    
6008    jQuery(document).on("click", ".ctl-chrome-php-action-send-pdf-via-mail", function(){
6009
6010        var oNodeButton = jQuery(this);
6011        var oNodeForm   = jQuery(this).closest(".modal").find("form");
6012
6013        if(ctlFormFieldsCheckIfFormIsFilled(oNodeForm) === false ){
6014            return;
6015        }
6016
6017        var oFormData   = oNodeForm.serializeObject();
6018
6019        oFormData['action']    = 'ctl-wp-studio';
6020        oFormData['execute']   = 'ctl-chrome-php';
6021        oFormData['widget-id'] = oNodeButton.data("widget-id");
6022        oFormData['extension-action'] = 'send-pdf-via-mail';
6023
6024        var idLoading = g_oCTLWPStudio.showLoading("");
6025
6026        jQuery.ajax({
6027            url: g_oCTLWPStudio._oLangCommon["ajaxurl"],
6028            type: "POST",
6029            data: oFormData,
6030            cache: false,
6031            method: 'POST',
6032            success: function (response, textStatus, jqXHR) {
6033                let oResponse = jQuery.parseJSON(response);
6034
6035                g_oCTLWPStudio.closeDlg(idLoading);
6036                if (oResponse.res === false) {
6037                    alert(oResponse.desc);
6038                } else {
6039                    g_oCTLBootstrapModals.closeLastModal();
6040                }
6041            },
6042            error: function (jqXHR, textStatus, errorThrown) {
6043                g_oCTLWPStudio.closeDlg(idLoading);
6044                alert(g_oCTLWPStudio._oLangCommon["Ooops! Something Went Wrong!"]);
6045            }
6046        });
6047    });
6048
6049    jQuery(document).on("click", ".ctl-chrome-php-action-show-send-pdf-via-mail", function(){
6050        var oNodeButton = jQuery(this);
6051        var oEmailData = JSON.parse(Base64.decode(oNodeButton.attr("data-email")));
6052
6053        ctlSMTPShowMailModal(
6054                oEmailData.modal_title, oEmailData.dest_email, oEmailData.dest_email_cc, 
6055                oEmailData.subject, oEmailData.body, oEmailData.attachments, "ctl-chrome-php-action-send-pdf-via-mail", 'data-widget-id="' + oNodeButton.data("widget-id") + '"');
6056    });
6057
6058
6059    jQuery(document).on("click", ".ctl-chrome-php-action-generate-pdf", function () {
6060        var oNodeForm = jQuery(this).closest("form");
6061        var oFormData = oNodeForm.serializeObject();
6062
6063        oFormData['action'] = 'ctl-wp-studio';
6064        oFormData['execute'] = 'ctl-chrome-php';
6065        oFormData['extension-action'] = 'generate-pdf';
6066        oFormData["get-params"] = g_oCTLWPStudio.getUrlParams();        
6067
6068        __ctlChromePHPGeneratePDF(oFormData);
6069    });
6070
6071    jQuery(document).on("click", ".btn-action-pdf-row", function () {
6072        let oFormData = {};
6073        let oNodeTR = jQuery(this).closest("tr");
6074
6075        oFormData['action'] = 'ctl-wp-studio';
6076        oFormData['execute'] = 'ctl-chrome-php';
6077        oFormData['extension-action'] = 'generate-pdf';
6078        oFormData["get-params"] = g_oCTLWPStudio.getUrlParams();
6079        oFormData['resource-id'] = oNodeTR.data("resource-id");
6080        oFormData["widget-id"] = jQuery(this).data("pdf-widget-id");
6081
6082        oNodeTR.find("td").each(function () {
6083            let szFieldName = jQuery(this).data("field-name");
6084            if (szFieldName) {
6085                let szFieldValue = jQuery(this).data("value");
6086                oFormData[szFieldName] = szFieldValue;
6087            }
6088        });
6089
6090        __ctlChromePHPGeneratePDF(oFormData);
6091    });
6092
6093    jQuery(document).on("click", ".ctl-chrome-php-action-generate-pdf-archive-pdf", function () {
6094        __ctlChromePHPGenerateArchivePDF(jQuery(this), "pdf");
6095    });
6096
6097    jQuery(document).on("click", ".ctl-chrome-php-action-generate-pdf-archive-zip", function () {
6098        __ctlChromePHPGenerateArchivePDF(jQuery(this), "zip");
6099    });
6100
6101    jQuery(document).on("click", ".btn-action-pdf-selected-rows", function () {
6102
6103        let idTable = jQuery(this).data("table-id");
6104        let oNodeMainWrapper = jQuery(".ctl-theme-table-main-wrapper-" + idTable);
6105
6106        let oNodeTableBody = oNodeMainWrapper.find("tbody");
6107        let aResourceIds = [];
6108        let aResourceData = [];
6109
6110        oNodeTableBody
6111            .find("tr.ctl-table-row .ctl-theme-tables-row-selector input[type=checkbox]:checked")
6112            .each(function () {
6113                let oNodeRow = jQuery(this).closest("tr");
6114                let idResource = Number(oNodeRow.attr("data-resource-id"));
6115                aResourceIds.push(idResource);
6116
6117                let oFormData = {};
6118                oNodeRow.find("td").each(function () {
6119                    let szFieldName = jQuery(this).data("field-name");
6120                    if (szFieldName) {
6121                        let szFieldValue = jQuery(this).data("value");
6122                        oFormData[szFieldName] = szFieldValue;
6123                    }
6124                });
6125
6126                aResourceData.push({
6127                    id: idResource,
6128                    data: oFormData,
6129                });
6130            });
6131
6132        if (aResourceIds.length === 0) {
6133            g_oCTLBootstrapModals.alert("", g_oCTLChromePhpLocalizationFront["Select at least one row."]);
6134            return;
6135        }
6136
6137        let szPDFArchive = jQuery(this).data("pdf-multiple-archive");
6138
6139        if (!szPDFArchive) {
6140            szPDFArchive = "modal";
6141        }
6142
6143        if (szPDFArchive === "modal") {
6144
6145            let szAttributes = 'data-resource-ids="' + Base64.encode(JSON.stringify(aResourceIds)) +
6146                '" data-pdf-widget-id="' + jQuery(this).data("pdf-widget-id") + '" data-resources="' + Base64.encode(JSON.stringify(aResourceData)) + '"';
6147
6148            g_oCTLBootstrapModals.showModal({
6149                entrance_alpha: true,
6150                exit_alpha: true,
6151                position: "centered",
6152                entrance_animation: "animate__slideInUp",
6153                exit_animation: "animate__slideOutDown",
6154                modal_title: g_oCTLChromePhpLocalizationFront["Prepare PDF archive"],
6155                modal_content: g_oCTLChromePhpLocalizationFront["Do you want to generate a PDF archive in unique PDF or Zip with separated PDFs?"] + '<div class="ctl-pdf-archive-counter"></div>',
6156                footer_buttons: [
6157                    '<button ' + szAttributes + ' class="btn btn-primary ctl-chrome-php-action-generate-pdf-archive-zip"><i class="ctl-wp-studio-icons-file-archive mr-1"></i>' + g_oCTLChromePhpLocalizationFront["Zip File"] + '</button>',
6158                    '<button ' + szAttributes + ' class="btn btn-primary ctl-chrome-php-action-generate-pdf-archive-pdf"><i class="ctl-wp-studio-icons-file-pdf mr-1"></i>' +
6159                    g_oCTLChromePhpLocalizationFront["Unique PDF"] + '</button>',],
6160            });
6161        } else {
6162            let oFormData = {};
6163            oFormData['action'] = 'ctl-wp-studio';
6164            oFormData['execute'] = 'ctl-chrome-php';
6165            oFormData['resource-ids'] = aResourceIds;
6166            oFormData['resources'] = aResourceData;
6167            oFormData["widget-id"] = jQuery(this).data("pdf-widget-id");
6168            oFormData['extension-action'] = 'generate-array-pdf';
6169            oFormData['archive'] = szPDFArchive;
6170            oFormData["get-params"] = g_oCTLWPStudio.getUrlParams();     
6171            __ctlChromePHPGeneratePDF(oFormData);
6172        }
6173
6174    });
6175
6176    jQuery(document).on("click", ".btn-save-pdf-viewer", function () {
6177        let szPDFURL = jQuery(this).data("pdf-url");
6178        g_oCTLWPStudio.downloadFile(szPDFURL);
6179    });
6180
6181});
6182
6183function __ctlChromePHPGeneratePDF(oFormData = null, cb = null) {
6184
6185    var idLoading = g_oCTLWPStudio.showLoading("");
6186
6187    jQuery.ajax({
6188        url: g_oCTLWPStudio._oLangCommon["ajaxurl"],
6189        type: "POST",
6190        data: oFormData,
6191        cache: false,
6192        method: 'POST',
6193        success: function (response, textStatus, jqXHR) {
6194            let oResponse = jQuery.parseJSON(response);
6195
6196            g_oCTLWPStudio.closeDlg(idLoading);
6197            if (oResponse.res === false) {
6198                alert(oResponse.desc);
6199            } else {
6200
6201                if (oResponse["refresh-dropbox"]) {
6202                    wpdk_do_action("ctl-dropbox-reload-widget",
6203                        oResponse["dropbox-widget"], oResponse["dropbox-resource"]);
6204                }
6205
6206                if (cb) {
6207                    cb(oResponse);
6208                }
6209
6210                if (oResponse.preview) {
6211                    ctlShowPDFViewer(oFormData["widget-id"], oResponse.pdfURL, { show_save_button: true }, {}, oResponse.email_data);
6212                } else {
6213                    g_oCTLWPStudio.downloadFile(oResponse.pdfURL, null, true);
6214                }
6215
6216            }
6217        },
6218        error: function (jqXHR, textStatus, errorThrown) {
6219            g_oCTLWPStudio.closeDlg(idLoading);
6220            alert(g_oCTLWPStudio._oLangCommon["Ooops! Something Went Wrong!"]);
6221        }
6222    });
6223}
6224
6225function __ctlChromePHPGenerateBackgroundPDF(oFormData = null, cb = null) {
6226
6227    __ctlChromePHPUpdateArchiveProgressBar();
6228
6229    var idLoading = g_oCTLWPStudio.showLoading("");
6230
6231    jQuery.ajax({
6232        url: g_oCTLWPStudio._oLangCommon["ajaxurl"],
6233        type: "POST",
6234        data: oFormData,
6235        cache: false,
6236        method: 'POST',
6237        success: function (response, textStatus, jqXHR) {
6238            let oResponse = jQuery.parseJSON(response);
6239
6240            g_oCTLWPStudio.closeDlg(idLoading);
6241            if (oResponse.res === false) {
6242                alert(oResponse.desc);
6243            } else {
6244                if (cb) {
6245                    cb(oResponse);
6246                }
6247            }
6248        },
6249        error: function (jqXHR, textStatus, errorThrown) {
6250            g_oCTLWPStudio.closeDlg(idLoading);
6251            alert(g_oCTLWPStudio._oLangCommon["Ooops! Something Went Wrong!"]);
6252        }
6253    });
6254}
6255
6256
6257async function __ctlChromePHPPrepareSinglePDFForArchive(szBackgroun
6257dPDF = null, cb = null) {
6258
6259    const unlock = await window["g_oPDFMakerMutex"].lock();
6260
6261    __ctlChromePHPUpdateArchiveProgressBar();
6262
6263    window["g_iCntArchivePDF"] += 1;
6264    unlock();
6265
6266    let oFormData = {};
6267    oFormData['action'] = 'ctl-wp-studio';
6268    oFormData['execute'] = 'ctl-chrome-php';
6269    oFormData["widget-id"] = window["g_idWidgetPDF"];
6270    oFormData['resource-id'] = window["g_aArchivePDFIds"][window["g_iCntArchivePDF"] - 1];
6271    oFormData['extension-action'] = 'generate-pdf';
6272
6273    if (szBackgroundPDF) {
6274        oFormData['background'] = szBackgroundPDF;
6275    }
6276
6277    jQuery.ajax({
6278        url: g_oCTLWPStudio._oLangCommon["ajaxurl"],
6279        type: "POST",
6280        data: oFormData,
6281        cache: false,
6282        method: 'POST',
6283        success: function (response, textStatus, jqXHR) {
6284            let oResponse = jQuery.parseJSON(response);
6285
6286            if (oResponse.res === false) {
6287                alert(oResponse.desc);
6288            } else {
6289                window["g_aArchivePDFUrls"].push(oResponse.pdfPath);
6290
6291                if (window["g_iCntArchivePDF"] === window["g_aArchivePDFUrls"].length) {
6292
6293                    window["g_aArchivePDFUrls"] = window["g_aArchivePDFUrls"].sort((a, b) => {
6294
6295                        const nameA = a.split("/").pop().toLowerCase();
6296                        const nameB = b.split("/").pop().toLowerCase();
6297
6298                        return nameA.localeCompare(nameB);
6299                    });
6300
6301                    g_oCTLWPStudio.closeDlg(window["g_idLoadingArchivePDF"]);
6302
6303                    let oFormData = {};
6304                    oFormData['action'] = 'ctl-wp-studio';
6305                    oFormData['execute'] = 'ctl-chrome-php';
6306                    oFormData["widget-id"] = window["g_idWidgetPDF"];
6307                    oFormData['urls'] = window["g_aArchivePDFUrls"];
6308                    oFormData['extension-action'] = 'generate-archive-pdf';
6309                    oFormData['archive'] = window["g_szPDFMakerTypeArchive"];
6310                    oFormData["get-params"] = g_oCTLWPStudio.getUrlParams();     
6311
6312                    __ctlChromePHPGeneratePDF(oFormData, function (oResponse) {
6313                        __ctlChromePHPUpdateArchiveProgressBar();
6314
6315                        g_oCTLBootstrapModals.closeLastModal();
6316                        if (cb) {
6317                            cb(oResponse);
6318                        }
6319                    });
6320                } else if (window["g_iCntArchivePDF"] < window["g_aArchivePDFIds"].length) {
6321                    __ctlChromePHPUpdateArchiveProgressBar();
6322                    __ctlChromePHPPrepareSinglePDFForArchive(szBackgroun
6322dPDF, cb);
6323                }
6324            }
6325        },
6326        error: function (jqXHR, textStatus, errorThrown) {
6327            console.log("error in __ctlChromePHPPrepareSinglePDFForArchive");
6328            console.log(oFormData);
6329            console.log(jqXHR);
6330            console.log(textStatus);
6331            console.log(errorThrown);
6332            //alert(g_oCTLWPStudio._oLangCommon["Ooops! Something Went Wrong!"]);  
6333        }
6334    });
6335}
6336
6337function __ctlChromePHPUpdateArchiveProgressBar() {
6338    let fPercentage = (window["g_iCntArchivePDF"] / window["g_aArchivePDFIds"].length) * 100;
6339    let htmlProgressBar = '<div class="progress mt-3">';
6340    htmlProgressBar += '<div class="progress-bar bg-primary" role="progressbar" style="width: ' + fPercentage + '%;" aria-valuenow="' + fPercentage + '" aria-valuemin="0" aria-valuemax="100">' + Math.round(fPercentage) + '%</div>';
6341    htmlProgressBar += '</div>';
6342
6343    jQuery(".ctl-pdf-archive-counter").html(htmlProgressBar);
6344}
6345
6346function __ctlChromePHPGenerateArchivePDF(oNodeButton, szArchive) {
6347    let aIds = JSON.parse(Base64.decode(oNodeButton.data("resource-ids")));
6348    let idWidget = oNodeButton.data("pdf-widget-id");
6349
6350    if (aIds.length < 4) {
6351        let oFormData = {};
6352        oFormData['action'] = 'ctl-wp-studio';
6353        oFormData['execute'] = 'ctl-chrome-php';
6354        oFormData['resource-ids'] = aIds;
6355        oFormData['resources'] = JSON.parse(Base64.decode(oNodeButton.data("resources")));
6356        oFormData["widget-id"] = idWidget;
6357        oFormData['extension-action'] = 'generate-array-pdf';
6358        oFormData['archive'] = szArchive;
6359        oFormData["get-params"] = g_oCTLWPStudio.getUrlParams();     
6360
6361        __ctlChromePHPGeneratePDF(oFormData, function () {
6362            g_oCTLBootstrapModals.closeLastModal();
6363        });
6364    } else {
6365        window["g_iCntArchivePDF"] = 0;
6366        window["g_idWidgetPDF"] = idWidget;
6367        window["g_aArchivePDFUrls"] = [];
6368        window["g_aArchivePDFIds"] = aIds;
6369        window["g_oPDFMakerMutex"] = new CVulcanoMutex();
6370        window["g_szPDFMakerTypeArchive"] = szArchive;
6371
6372        let iThreadToUse = 6;
6373
6374        if (window["g_aArchivePDFIds"].length < iThreadToUse) {
6375            iThreadToUse = window["g_aArchivePDFIds"].length;
6376        }
6377
6378        // prepare background
6379        let oFormData = {};
6380        oFormData['action'] = 'ctl-wp-studio';
6381        oFormData['execute'] = 'ctl-chrome-php';
6382        oFormData["widget-id"] = idWidget;
6383        oFormData['extension-action'] = 'generate-bg-pdf';
6384
6385        __ctlChromePHPGenerateBackgroundPDF(oFormData, function (oResult) {
6386            window["g_idLoadingArchivePDF"] = g_oCTLWPStudio.showLoading("");
6387            for (let i = 0; i < iThreadToUse; i++) {
6388                __ctlChromePHPPrepareSinglePDFForArchive(oResult.pdfPath, function (oResult) {
6389                    // This callback is called when the final PDF or ZIP is generated
6390                });
6391            }
6392        });
6393    }
6394}
6395
6396function ctlShowPDFViewer(idWidget, szPDFURL, aSettingsModal = {}, aSettingsViewer = {}, oEmailData = {}) {
6397
6398    if (!szPDFURL) {
6399        alert("Invalid PDF URL");
6400        return;
6401    }
6402
6403    let szPDFURLParts = szPDFURL.split("/");
6404
6405    let szPDFFileName = szPDFURL;
6406    if (szPDFURLParts.length > 0) {
6407        szPDFFileName = szPDFURLParts[szPDFURLParts.length - 1];
6408    }
6409
6410    let szMainModalClass = "ctl-show-pdf-viewer-modal";
6411
6412    let aSettingsModalDefault = {
6413        height: "70",
6414        width: "80",
6415        entrance_alpha: true,
6416        exit_alpha: true,
6417        position: "centered",
6418        entrance_animation: "animate__slideInUp",
6419        exit_animation: "animate__slideOutDown",
6420        modal_title: szPDFFileName,
6421        modal_size: "modal-xl",
6422        footer_buttons: [],
6423        wrapper_classes: "",
6424        show_save_button: false
6425    };
6426
6427    aSettingsModal = Object.assign(aSettingsModalDefault, aSettingsModal);
6428
6429    aSettingsModal.wrapper_classes += " " + szMainModalClass;
6430
6431    let aSettingsViewerDefault = {
6432        locale: "it",
6433        classes: "",
6434        // viewer-extra-styles: "",
6435        "show-open-file-button": false,
6436        "show-stamp-button": false,
6437        "show-ink-button": false,
6438        "show-free-text-button": false,
6439        "show-highlight-button": false,
6440        "show-save-button": false
6441    };
6442
6443    aSettingsViewer = Object.assign(aSettingsViewerDefault, aSettingsViewer);
6444
6445    let szViewerExtraStyles = "";
6446
6447    if (!aSettingsViewer["show-save-button"]) {
6448        szViewerExtraStyles += "#secondaryDownload { display: none; } ";
6449        szViewerExtraStyles += "#downloadButton { display: none; } ";
6450    }
6451
6452    if (!aSettingsViewer["show-open-file-button"]) {
6453        szViewerExtraStyles += "#secondaryOpenFile { display: none; } ";
6454    }
6455
6456    if (!aSettingsViewer["show-stamp-button"]) {
6457        szViewerExtraStyles += "#editorStamp { display: none; } ";
6458    }
6459
6460    if (!aSettingsViewer["show-ink-button"]) {
6461        szViewerExtraStyles += "#editorInk { display: none; } ";
6462    }
6463
6464    if (!aSettingsViewer["show-free-text-button"]) {
6465        szViewerExtraStyles += "#editorFreeText { display: none; } ";
6466    }
6467
6468    if (!aSettingsViewer["show-highlight-button"]) {
6469        szViewerExtraStyles += "#editorHighlight { display: none; } ";
6470    }
6471
6472    szViewerExtraStyles += "#mainContainer {min-width: 0px;}";
6473
6474    let szPDFViewerURL = jQuery(".script-pdfjs-viewer").data("pdf-viewer-url");
6475    let html = '<pdfjs-viewer-element'
6476
6477    let szPDFViewerClasses = "ctl-chrome-php-pdfjs-viewer";
6478    if (aSettingsViewer.classes) {
6479        szPDFViewerClasses += ' ' + aSettingsViewer.classes;
6480    }
6481
6482    html += ' class="' + szPDFViewerClasses + '"';
6483    html += ' src="' + szPDFURL + '"';
6484    html += ' viewer-path="' + szPDFViewerURL + '"';
6485    html += ' locale="it"';
6486    html += ' viewer-extra-styles="' + szViewerExtraStyles + '"';
6487    html += ' ></pdfjs-viewer-element>';
6488
6489    let szModalClasses = "ctl-chrome-php-pdfjs-viewer-modal";
6490    if (aSettingsModal.classes) {
6491        szModalClasses += ' ' + aSettingsModal.classes;
6492    }
6493
6494    aSettingsModal.modal_content = html;
6495
6496    if (aSettingsModal.show_save_button) {
6497        let szButtonHtml = '<button class="btn btn-primary btn-save-pdf-viewer" data-pdf-url="' + szPDFURL + '">';
6498        szButtonHtml += '<i class="ctl-wp-studio-icons-download-cloud mr-2"></i>' + g_oCTLChromePhpLocalizationFront["Download"];
6499        szButtonHtml += '</button>';
6500
6501        aSettingsModal.footer_buttons.push(szButtonHtml);
6502    }
6503
6504    if (idWidget && g_bSMTP) {
6505        let szButtonHtml = '<button data-widget-id="' + idWidget + '" class="btn btn-primary ctl-chrome-php-action-show-send-pdf-via-mail" data-email="' + Base64.encode(JSON.stringify(oEmailData)) + '">';
6506        szButtonHtml += '<i class="fa-solid fa-paper-plane mr-2"></i>' + g_oCTLChromePhpLocalizationFront["Send via email"];
6507        szButtonHtml += '</button>';
6508
6509        aSettingsModal.footer_buttons.push(szButtonHtml);
6510    }    
6511
6512    g_oCTLBootstrapModals.showModal(aSettingsModal);
6513}
6514// file: /var/www/vhosts/codethislab.com/httpdocs/wp-content/plugins/ctl-wp-studio/classes/extensions/ctl-css-tweaker/php/../js/front.js
6515var CTL_CSS_TWEAKER = function( szPluginCode, szLocalizationPrefix ){
6516    CTL_WP_STUDIO.call(this, szPluginCode, szLocalizationPrefix);
6517};
6518
6519CTL_CSS_TWEAKER.prototype = Object.create(CTL_WP_STUDIO.prototype);
6520
6521CTL_CSS_TWEAKER.prototype._mouseX = 0;
6522CTL_CSS_TWEAKER.prototype._mouseY = 0;
6523CTL_CSS_TWEAKER.prototype._szInspectorClass = "";
6524CTL_CSS_TWEAKER.prototype._aMediaRules = [];
6525
6526CTL_CSS_TWEAKER.prototype._aFrameworkClasses = [
6527        // Bootstrap
6528        "text-center",
6529        "text-left",
6530        "text-right", 
6531        
6532        "hidden-xs","hidden-sm","hidden-md","hidden-lg",
6533        "visible-xs","visible-sm","visible-md","visible-lg",
6534        "col-1","col-2","col-3","col-4","col-5","col-6","col-7","col-8","col-9","col-10","col-11","col-12",
6535        "col-xs-1","col-xs-2","col-xs-3","col-xs-4","col-xs-5","col-xs-6",
6536        "col-xs-7","col-xs-7","col-xs-9","col-xs-10","col-xs-11","col-xs-12",
6537        "col-sm-1","col-sm-2","col-sm-3","col-sm-4","col-sm-5","col-sm-6",
6538        "col-sm-7","col-sm-7","col-sm-9","col-sm-10","col-sm-11","col-sm-12",        
6539        "col-md-1","col-md-2","col-md-3","col-md-4","col-md-5","col-md-6",
6540        "col-md-7","col-md-7","col-md-9","col-md-10","col-md-11","col-md-12",                
6541        "col-lg-1","col-lg-2","col-lg-3","col-lg-4","col-lg-5","col-lg-6",
6542        "col-lg-7","col-lg-7","col-lg-9","col-lg-10","col-lg-11","col-lg-12",                        
6543        
6544        // WP
6545        
6546        // Font Awesome
6547        "fa"
6548    ];
6549    
6550CTL_CSS_TWEAKER.prototype._aFalseClasses = [ 
6551        "cat-item-", 
6552        "page-item-", 
6553        "post-",
6554        "product-",
6555        "postid-",
6556        "recent-posts",
6557        "search-",
6558        "menu-item-"
6559    ];
6560
6561CTL_CSS_TWEAKER.prototype.updateCross = function(e){    
6562    jQuery(this._idRoot + "editor-container").css("display","block");
6563    
6564    var oNode = jQuery(this._idRoot + "editor-container svg");
6565    var x = this._mouseX;
6566    var y = this._mouseY - this.getScroll().y;
6567    var h = oNode.find('#h'); 
6568    var v = oNode.find('#v');
6569
6570    h.attr("y1",y);
6571    h.attr("y2",y);
6572    h.attr("x2","100%");
6573
6574    v.attr("x1",x);
6575    v.attr("x2",x);
6576    v.attr("y2","100%");      
6577};
6578
6579CTL_CSS_TWEAKER.prototype.getSheets = function(){
6580    return document.styleSheets;
6581};
6582
6583CTL_CSS_TWEAKER.prototype.isUsedClassInRules = function( szClassName) {
6584    //return true;
6585
6586    var sheets = document.styleSheets;
6587
6588    for (var i = 0; i < sheets.length; i++) {
6589        if(!sheets[i].rules){
6590            continue;
6591        }
6592
6593        for( var k = 0; k < sheets[i].rules.length; k++ ){
6594            if(!sheets[i].rules[k] || !sheets[i].rules[k].selectorText){
6595                continue;
6596            }            
6597            var szSelector = sheets[i].rules[k].selectorText.toString();
6598
6599            if( szSelector.indexOf(szClassName) !== -1 ){
6600                return true;
6601            }
6602            
6603        }
6604    }
6605    return false;
6606};
6607
6608CTL_CSS_TWEAKER.prototype.computeCSSMediaRules = function(){
6609
6610    var aMediaRules = [];    
6611    var sheets = document.styleSheets;
6612
6613    for (var i = 0; i < sheets.length; i++) {
6614        if (!sheets[i].hasOwnProperty('cssRules')) {
6615            continue;
6616        }
6617
6618        for( var k = 0; k < sheets[i].cssRules.length; k++ ){
6619            var oStyle = sheets[i].cssRules[k];
6620                      
6621            if( oStyle.constructor.name !== "CSSMediaRule"){
6622                continue;
6623            }            
6624 
6625            if( oStyle.media && oStyle.media.mediaText ){
6626                
6627                if( !oStyle.cssRules || oStyle.cssRules.length === 0){
6628                    continue;
6629                }
6630                
6631                if( oStyle.media.mediaText.indexOf("max-width") === -1 &&
6632                    oStyle.media.mediaText.indexOf("min-width") === -1 ){
6633                    continue;
6634                }
6635
6636                for( var p = 0; p < oStyle.cssRules.length; p++ ){
6637                    var oRule = oStyle.cssRules[p];
6638                    var oSelector = document.querySelector(oRule.selectorText);
6639
6640                    if(!oSelector){
6641                        continue;
6642                    }    
6643
6644                    aMediaRules.push( 
6645                        { style : JSON.stringify(window.getComputedStyle(oSelector, null)),
6646                          selector : oSelector,
6647                          rule :  oRule } );
6648                }  
6649            }
6650        }
6651    }
6652
6653    return aMediaRules;
6654};
6655
6656CTL_CSS_TWEAKER.prototype.getSelectorCSSMediaRules = function(szSelector){
6657   
6658    var oSelector = document.querySelector(szSelector);
6659    var aMatchedMediaRules = [];
6660    
6661    if(!oSelector){
6662        return aMatchedMediaRules;
6663    }
6664
6665    var szStyle1  = JSON.stringify(window.getComputedStyle(oSelector, null));
6666
6667    for (var i = 0; i < this._aMediaRules.length; i++) {
6668        if( szStyle1 === this._aMediaRules[i].style){
6669            aMatchedMediaRules.push(this._aMediaRules[i].rule);
6670        } 
6671    }
6672
6673    return aMatchedMediaRules;
6674};
6675
6676CTL_CSS_TWEAKER.prototype.getMatchedCSSMediaRules = function(szSelector){
6677    
6678    var aMatchedMediaRules = [];
6679    var sheets    = document.styleSheets;
6680    var oSelector = null;
6681    
6682    try {
6683        var oSelector = document.querySelector(szSelector);
6684
6685        if(!oSelector){
6686            return null;
6687        }
6688    }
6689    catch(e) {
6690      console.log(e);
6691      return null;
6692    }      
6693
6694
6695    var szStyle1  = JSON.stringify(window.getComputedStyle(oSelector, null));
6696                   
6697    for (var i = 0; i < sheets.length; i++) {
6698        if (!sheets[i].hasOwnProperty('cssRules')) {
6699            continue;
6700        }
6701
6702        for( var k = 0; k < sheets[i].cssRules.length; k++ ){
6703            var oStyle = sheets[i].cssRules[k];
6704            if ( oStyle.toString().indexOf("CSSMediaRule") === -1 ){
6705                continue;  
6706            }
6707
6708            if( oStyle.media && window.matchMedia(oStyle.media.mediaText).matches ){
6709
6710                if( !oStyle.cssRules || oStyle.cssRules.length === 0){
6711                    continue;
6712                }
6713                
6714                if( oStyle.media.mediaText.indexOf("max-width") === -1 ){
6715                    continue;
6716                }
6717
6718                var szBreakPointValue = (oStyle.media.mediaText.replace( /[^\d\.]*/g, ''));
6719
6720                if( szBreakPointValue === "" ){
6721                    continue;
6722                }                
6723
6724                for( var p = 0; p < oStyle.cssRules.length; p++ ){
6725                    var oRule = oStyle.cssRules[p];
6726                    var oSelector = document.querySelector(oRule.selectorText);
6727
6728                    if(!oSelector){
6729                        continue;
6730                    }    
6731
6732                    var szStyle2 = JSON.stringify(window.getComputedStyle(oSelector, null));
6733                    
6734                    if( szStyle1 === szStyle2){
6735                        aMatchedMediaRules.push({ rule : oRule, breakpoint : szBreakPointValue });
6736                    }
6737                }  
6738            }
6739        }
6740    }
6741
6742    return aMatchedMediaRules;
6743};
6744
6745CTL_CSS_TWEAKER.prototype.isSelectorValid = function(szSelector){
6746    try {
6747        var oSelector = document.querySelector(szSelector);
6748    }
6749    catch(e) {
6750        console.log(e);
6751        return null;
6752    }  
6753};
6754
6755CTL_CSS_TWEAKER.prototype.getSelectorStyle = function(szSelector){
6756    
6757    try {
6758        var oSelector = document.querySelector(szSelector);
6759
6760        if(!oSelector){
6761            return null;
6762        }else{
6763            return window.getComputedStyle(oSelector, null);
6764        } 
6765    }
6766    catch(e) {
6767      console.log(e);
6768      return null;
6769    }    
6770    
6771   
6772};
6773
6774CTL_CSS_TWEAKER.prototype.onToggleInspector = function(){
6775    if( jQuery(this._idRoot + "editor-container").length > 0 ){
6776        jQuery(this._idRoot + "editor-container").remove();
6777    }else{
6778        this.initCross();
6779    }
6780};
6781
6782CTL_CSS_TWEAKER.prototype.updateTempStyle = function( szCSS, aLinkCSS ){
6783
6784  //  szCSS = /*this._base64.decode(*/szCSS/*)*/;
6785
6786    jQuery( this._idRoot + "temp-style").text(szCSS);
6787    
6788    for( var i = 0; i < aLinkCSS.length; i++ ){
6789        var oLinkNode = jQuery('<link href="' +                
6790                            this._base64.decode(aLinkCSS[i]) +                
6791                        '" rel="stylesheet">');
6792
6793        oLinkNode.addClass(this._classRoot+"link-css");
6794        jQuery("head").append(oLinkNode);
6795    }    
6796};
6797
6798CTL_CSS_TWEAKER.prototype.addInspector = function(){  
6799    parent.g_oCTLTweaker.onUpdateStyle(false);
6800    this.initCross();
6801    
6802 }; 
6803 
6804CTL_CSS_TWEAKER.prototype.removeInspector = function(){   
6805    var oParent = this;
6806    jQuery('*').each(function(){
6807        jQuery(this).removeClass(oParent._szInspectorClass);
6808    });
6809    
6810    jQuery(this._idRoot + "editor-container").remove();
6811    
6812    
6813
6814    jQuery("body").off("mousemove");
6815    jQuery("body").off("mouseleave");
6816    jQuery(document).off("hover mouseover",'.'+g_oCTLTweaker._szInspectorClass);
6817    jQuery(document).off("click",'.'+g_oCTLTweaker._szInspectorClass);    
6818 }; 
6819
6820CTL_CSS_TWEAKER.prototype.__updateHighLight = function( oNodeElement ){
6821
6822    var oParent = this;
6823
6824    jQuery(this._idRoot + "highlight-container").empty();
6825    jQuery(this._idRoot + "highlight-container").css("display","block");
6826    
6827    var offset = oNodeElement.offset();
6828    var oNodeHighLight = jQuery(this._idRoot + 'highlight');
6829
6830    oNodeHighLight.css("top", (offset.top-this.getScroll().y - 
6831                                                    parseInt(oNodeElement.css("margin-top"))) );
6832    oNodeHighLight.css("left", (offset.left-this.getScroll().x -
6833                                                    parseInt(oNodeElement.css("margin-left"))) );
6834    oNodeHighLight.css("width", oNodeElement.innerWidth() );
6835    oNodeHighLight.css("height", oNodeElement.innerHeight() );
6836
6837    oNodeHighLight.css("border-top-width", oNodeElement.css("margin-top") );
6838    oNodeHighLight.css("border-left-width", oNodeElement.css("margin-left") );
6839    oNodeHighLight.css("border-bottom-width", oNodeElement.css("margin-bottom") );
6840    oNodeHighLight.css("border-right-width", oNodeElement.css("margin-right") );
6841
6842    var szFinalPath = this.__detectSelector(oNodeElement); 
6843    var oNodePreviewSelector = jQuery("#" + this._cssClassDomain + "preview-selector");
6844
6845    oNodePreviewSelector.css("left","0px");
6846    oNodePreviewSelector.css("top","0px");
6847    oNodePreviewSelector.css("display","block");
6848    oNodePreviewSelector.find(this._classRoot + "label-selector").text(szFinalPath);
6849
6850    var iNodePreviewSelectorWidth = oNodePreviewSelector.outerWidth();    
6851    var iTopPosition =  (offset.top-this.getScroll().y - 14 -
6852                                                parseInt(oNodeElement.css("margin-top")));
6853    var iLeftPosition = offset.left-this.getScroll().x -
6854                                                parseInt(oNodeElement.css("margin-left"));
6855    
6856    if( iTopPosition < 0 ){
6857        iTopPosition +=  14;
6858        iTopPosition += parseInt(oNodeElement.css("margin-top")) * 2;
6859        iTopPosition += parseInt(oNodeElement.outerHeight());
6860        
6861        if( iTopPosition > jQuery(window).height() ){
6862            iTopPosition = 0;
6863        }
6864    }
6865    
6866    oNodePreviewSelector.css("top", iTopPosition );
6867          
6868    if( iNodePreviewSelectorWidth > oNodeElement.outerWidth() ){
6869        var iDiff = oNodePreviewSelector.outerWidth()-oNodeElement.outerWidth();
6870        iLeftPosition = iLeftPosition -iDiff;
6871    }   
6872    
6873    oNodePreviewSelector.css("left", iLeftPosition );         
6874
6875    if( oNodePreviewSelector.offset().left < 0 ){
6876        oNodePreviewSelector.css("left", "0px" );   
6877    }
6878
6879    jQuery(szFinalPath).each(function(){
6880        var iW = jQuery(this).outerWidth();
6881        var iH = jQuery(this).outerHeight();
6882        
6883        if( iW === 0 || iH === 0){
6884            return;
6885        }
6886        
6887        var oNodeRect = jQuery("<div class='"+oParent._cssClassDomain+"preview-selector-highlight'></div>");
6888        oNodeRect.appendTo(jQuery(oParent._idRoot + "highlight-container"));
6889        oNodeRect.css("top", jQuery(this).offset().top - oParent.getScroll().y);
6890        oNodeRect.css("left", jQuery(this).offset().left  - oParent.getScroll().x);
6891        oNodeRect.css("width", iW);
6892        oNodeRect.css("height", iH);
6893    });
6894    
6895};
6896
6897CTL_CSS_TWEAKER.prototype.onHighLightSelector = function( szSelector, bAnimation ){
6898
6899    var oParent    = this;
6900    var oFirstNode = null;
6901    
6902    jQuery(oParent._idRoot + "highlight-container").empty();
6903
6904    var oSelectorNode = null;
6905    try{
6906        oSelectorNode = jQuery(szSelector);
6907        oSelectorNode.each(function(){
6908            if(!oFirstNode){
6909                oFirstNode = jQuery(this);
6910            }
6911        });         
6912    }catch(e){
6913        
6914    }
6915
6916    if(oFirstNode){
6917        var iOffsetTop = oFirstNode.offset().top - 100;
6918        
6919        if( bAnimation === false ){
6920            jQuery(oParent._idRoot + "highlight-container").css("display","block");
6921            jQuery(szSelector).each(function(){
6922                var iW = jQuery(this).outerWidth();
6923                var iH = jQuery(this).outerHeight();
6924
6925                if( iW === 0 || iH === 0){
6926                    return;
6927                }
6928
6929                var oNodeRect = jQuery("<div class='"+oParent._cssClassDomain+"preview-selector-highlight'></div>");
6930                oNodeRect.appendTo(jQuery(oParent._idRoot + "highlight-container"));
6931                oNodeRect.css("top", jQuery(this).offset().top - oParent.getScroll().y);
6932                oNodeRect.css("left", jQuery(this).offset().left  - oParent.getScroll().x);
6933                oNodeRect.css("width", iW);
6934                oNodeRect.css("height", iH);
6935           });
6936        }else{
6937            jQuery("body").animate({ scrollTop: iOffsetTop }, 'slow',function(){
6938                setTimeout( function(){
6939
6940                    jQuery(oParent._idRoot + "highlight-container").css("display","block");
6941                    jQuery(szSelector).each(function(){
6942                        var iW = jQuery(this).outerWidth();
6943                        var iH = jQuery(this).outerHeight();
6944
6945                        if(!oFirstNode){
6946                            oFirstNode = jQuery(this);
6947                        }
6948
6949                        if( iW === 0 || iH === 0){
6950                            return;
6951                        }
6952
6953                        var oNodeRect = jQuery("<div class='"+oParent._cssClassDomain+"preview-selector-highlight'></div>");
6954                        oNodeRect.appendTo(jQuery(oParent._idRoot + "highlight-container"));
6955                        oNodeRect.css("top", jQuery(this).offset().top - oParent.getScroll().y);
6956                        oNodeRect.css("left", jQuery(this).offset().left  - oParent.getScroll().x);
6957                        oNodeRect.css("width", iW);
6958                        oNodeRect.css("height", iH);
6959                   });
6960                }, 100 );
6961            });   
6962        }
6963
6964        return true;
6965    }else{
6966        return false;
6967    }
6968};
6969
6970CTL_CSS_TWEAKER.prototype.initCross = function(){
6971    var html    = '';
6972    var oParent = this;
6973    
6974    this._szInspectorClass = this._cssClassDomain + "inspector";
6975
6976    html += '<div id="' + this._cssClassDomain + 'editor-container">';
6977        html += '<div id="' + this._cssClassDomain + 'highlight"></div>';
6978        html += '<svg height="100%" width="100%">';
6979            html += '<line id="h" x1="0" y1="0" x2="0" y2="0" style="stroke:#0085ba;stroke-width:1" />';
6980            html += '<line id="v" x1="0" y1="0" x2="0" y2="0" style="stroke:#0085ba;stroke-width:1" />';
6981        html += '</svg>';
6982    html += '</div>';
6983
6984    html += '<div id="' + this._cssClassDomain + 'highlight-container">';
6985
6986    html += '</div>';
6987    
6988    html += '<div id="' + this._cssClassDomain + 'preview-selector">';
6989        html += '<ul>';
6990            html += '<li class="' + this._cssClassDomain + 'label-selector"></li>';
6991        html += '</ul>';
6992    html += '</div>';
6993    
6994    jQuery("body").append(html);
6995    
6996    jQuery('*').each(function(){        
6997        if( jQuery(this).parents( "#"+oParent._cssClassDomain+"preview-selector").length > 0 ){
6998            return;
6999        }
7000        if(jQuery(this).attr("id") === oParent._cssClassDomain + "preview-selector" ||
7001           jQuery(this).attr("id") === oParent._cssClassDomain + 'editor-container' ||
7002           jQuery(this).hasClass(oParent._cssClassDomain+"label-selector") ){
7003            return;
7004        }
7005        
7006        jQuery(this).addClass(oParent._szInspectorClass);
7007    });
7008    
7009    this._aMediaRules = this.computeCSSMediaRules();
7010    
7011    
7012    
7013    jQuery("body").mousemove(function( e ) {
7014        g_oCTLTweaker._mouseX = e.pageX;
7015        g_oCTLTweaker._mouseY = e.pageY;
7016        g_oCTLTweaker.updateCross();
7017    });
7018    jQuery("body").mouseleave(function(e){
7019        e.stopPropagation();
7020        e.preventDefault();        
7021        g_oCTLTweaker.hideAllHighLights();
7022    }); 
7023    jQuery(document).on("hover mouseover",'.'+g_oCTLTweaker._szInspectorClass,
7024        function(e){
7025           e.stopPropagation();
7026           //e.preventDefault();
7027           g_oCTLTweaker.__updateHighLight(jQuery(this));
7028        }
7029    );
7030    
7031    jQuery(document).on("click",'.'+g_oCTLTweaker._szInspectorClass,
7032       function(e){           
7033
7034           e.preventDefault();  
7035           e.stopPropagation();
7036
7037           if(e.originalEvent === undefined){
7038               return;
7039           }
7040 
7041           g_oCTLTweaker.__updateHighLight(jQuery(this));  
7042           var szFinalPath  = g_oCTLTweaker.__detectSelector(jQuery(this));   
7043           var szAllSelectorsPath  = g_oCTLTweaker.__detectAllSelectors(jQuery(this), false);    
7044           var szUniquePath = g_oCTLTweaker.__detectUniqueSelector(jQuery(this));           
7045           var szIdSelector  = g_oCTLTweaker.__detectAllSelectors(jQuery(this),true);    
7046
7047           var aPath = [];
7048           
7049                     
7050           aPath.push(szFinalPath);
7051           
7052           if( szFinalPath !== szAllSelectorsPath ){
7053            aPath.push(szAllSelectorsPath);
7054           }
7055
7056           if(szFinalPath !== szUniquePath){
7057               aPath.push(szUniquePath);
7058           }
7059           
7060           if(szIdSelector.length > 0 && 
7061              szIdSelector !== szFinalPath && 
7062              szIdSelector !== szAllSelectorsPath){
7063               aPath.push(szIdSelector);
7064           }
7065           
7066           parent.g_oCTLTweaker.onSelectClassPathToOverride(aPath);          
7067       }   
7068    );     
7069};
7070
7071CTL_CSS_TWEAKER.prototype.hideAllHighLights = function(){
7072    jQuery(this._idRoot + "editor-container").css("display","none");
7073    jQuery(this._idRoot + "preview-selector").css("display","none");
7074    jQuery(this._idRoot + "highlight-container").css("display","none"); 
7075};
7076
7077
7078CTL_CSS_TWEAKER.prototype.__detectUniqueSelector = function( oNodeElement ){
7079    
7080    var el = oNodeElement[0];
7081    var names = [];
7082    while (el.parentNode) {
7083        if (el.id) {
7084            names.unshift('#' + el.id);
7085            break;
7086        } else {
7087            if (el === el.ownerDocument.documentElement || el === el.ownerDocument.body) {
7088                names.unshift(el.tagName.toLowerCase());
7089            } else {
7090                for (var c = 1, e = el; e.previousElementSibling; e = e.previousElementSibling, c++) {}
7091                names.unshift(el.tagName.toLowerCase() + ':nth-child(' + c + ')');
7092            }
7093            el = el.parentNode;
7094        }
7095    }
7096    return names.join('>');    
7097};
7098
7099CTL_CSS_TWEAKER.prototype.__getJSONStyleByNode = function( oNode ){
7100    return JSON.stringify(window.getComputedStyle(oNode[0], null));    
7101};
7102
7103
7104CTL_CSS_TWEAKER.prototype.__getJSONStyleBySelector = function( szSelector ){
7105    return JSON.stringify(window.getComputedStyle(document.querySelector(szSelector), null));    
7106};
7107
7108CTL_CSS_TWEAKER.prototype.__getStyleByArraySelectorString = function( aPath ){        
7109    var szTestSelector = aPath.toString();
7110    szTestSelector = szTestSelector.replace(/,/g,' ');
7111    return this.__getJSONStyleBySelector(szTestSelector);   
7112};
7113
7114CTL_CSS_TWEAKER.prototype.__getStyleByArraySelectorObject = function( aPath ){   
7115    var aTestSelector = [];  
7116    for( var i = 0; i < aPath.length; i++ ){        
7117        aTestSelector.push(aPath[i].selector);
7118    }
7119    return this.__getStyleByArraySelectorString(aTestSelector);  
7120};
7121
7122CTL_CSS_TWEAKER.prototype.__detectAllSelectors = function( oNodeElement, bStopWithId ){
7123    var path = "";
7124    while (oNodeElement.length) {
7125        var realNode = oNodeElement[0], name = realNode.localName;
7126        
7127        var classes  = oNodeElement.attr("class");
7128        var id       = oNodeElement.attr("id");
7129        var aClasses = [];
7130    
7131        // clean classes array
7132        if( classes ){  
7133            aClasses = this.__cleanClasses(classes); 
7134            
7135            if( aClasses.length > 0 ){
7136                classes = "";
7137                // normalize path
7138                for( var i = 0; i < aClasses.length; i++ ){
7139                    classes += "." + aClasses[i];
7140                }
7141                classes = classes.trim();
7142            }else{
7143                classes = null;
7144            }
7145        }        
7146
7147        if (!name){
7148            break;
7149        }
7150        
7151        name = name.toLowerCase();
7152                    
7153        var parent = oNodeElement.parent();        
7154
7155        if( id && bStopWithId ){
7156            path = '#' + id + (path ? '>' + path : '');
7157            break;
7158        }else if(classes){
7159            if(path !== ""){
7160                path = ">" + path;
7161            }
7162            path = classes + path;
7163        }else{
7164            if(path !== ""){
7165                path = ">" + path;
7166            }            
7167            path = name + path;
7168        }
7169        oNodeElement = parent;
7170    }
7171
7172    return path;
7173};
7174
7175CTL_CSS_TWEAKER.prototype.__detectSelector = function( oNodeElement ){
7176    var aDataPath     = [];
7177    var aSelectorPath = [];
7178    
7179//    var szUniquePath  = this.__detectUniqueSelector(oNodeElement);
7180    var szFinalPath   = this.__traverseNode( oNodeElement, aDataPath, aSelectorPath );
7181    var iStartLength  = jQuery(szFinalPath).length;    
7182    var szTestStyle   = this.__getJSONStyleBySelector(szFinalPath);
7183
7184    if( aSelectorPath.length > 2 ){
7185         var aTmpPath = aSelectorPath.slice();
7186         for( var k = 0; k < aSelectorPath.length-1; k++ ){
7187
7188            var aSelector2  = aTmpPath.slice(1, aTmpPath.length);
7189            var szSelector2 = aSelector2.toString().replace(/,/g,' ');
7190            var szStyle2    = this.__getStyleByArraySelectorString(aSelector2);
7191            
7192            aTmpPath = aSelector2;
7193
7194            if( jQuery(szSelector2).length !== iStartLength ||
7195                szTestStyle !== szStyle2 || 
7196                oNodeElement.is(szSelector2) === false ){
7197                break;
7198            }else{          
7199                szFinalPath = szSelector2; 
7200                aDataPath.splice(0,1);
7201            }  
7202         }
7203    }
7204
7205        
7206    szFinalPath = "";
7207    for( var i = 0; i < aDataPath.length; i++ ){
7208        if( aDataPath[i].type === "class" || aDataPath[i].type === "class_and_tag" ){
7209            var aTestClasses = aDataPath[i].selector.split(".");
7210            
7211            if(aTestClasses.length > 1 ){
7212                aDataPath[i].selector = "";
7213
7214                for( var k = 0; k < aTestClasses.length; k++){
7215                    
7216                    var szPrefix = ".";
7217                    
7218                    if( aTestClasses[k] === "" ){
7219                        continue;
7220                    }else if (k === 0){
7221                       szPrefix = ""; 
7222                    }
7223              
7224                    var szCurClass = szPrefix + aTestClasses[k];                    
7225
7226                    var szNewSelector = "";
7227                    for( var m = 0; m < aTestClasses.length; m++){
7228                        szPrefix = ".";
7229                        if( aTestClasses[m] === "" ){
7230                            continue;
7231                        }else if (m === 0){
7232                           szPrefix = ""; 
7233                        }                        
7234                        if( m !== k && aTestClasses[m] !== "" ){
7235                            szNewSelector += szPrefix + aTestClasses[m];  
7236                        }  
7237                    }
7238
7239                    aDataPath[i].selector = szNewSelector;
7240                                        
7241                    var szTestSelector = this.__getSelectorFromDataPath(aDataPath);
7242                    if( szTestSelector !== "" ){
7243                        var szCurStyle = this.__getJSONStyleBySelector(szTestSelector);
7244
7245                        if( jQuery(szTestSelector).length === iStartLength &&
7246                            szTestStyle === szCurStyle && 
7247                            oNodeElement.is(szTestSelector) === true ){
7248                            aTestClasses[k] = "";
7249                        }
7250                    }
7251                }     
7252               
7253                aDataPath[i].selector = "";
7254                for( var k = 0; k < aTestClasses.length; k++){
7255                    if(aTestClasses[k] !== ""){
7256                        szPrefix = ".";
7257                        if( aTestClasses[k] === "" ){
7258                            continue;
7259                        }else if (k === 0){
7260                           szPrefix = ""; 
7261                        }                          
7262                        aDataPath[i].selector += szPrefix + aTestClasses[k]; 
7263                    }
7264                }
7265                aDataPath[i].selector = aDataPath[i].selector;
7266            }
7267        }
7268               
7269        if(aDataPath[i].selector !== ""){
7270            szFinalPath += aDataPath[i].selector + " "; 
7271        }
7272   }
7273   
7274    szFinalPath = szFinalPath.trim();
7275
7276    this.__removeHolesFromDataPath(aDataPath);
7277
7278    return szFinalPath;       
7279};
7280
7281CTL_CSS_TWEAKER.prototype.__getSelectorFromDataPath = function( aDataPath ){
7282    var szTestSelector = "";
7283    for ( var k = 0; k < aDataPath.length; k++ ){
7284        if( aDataPath[k].selector !== "" ){
7285            szTestSelector += aDataPath[k].selector + " ";    
7286        }        
7287    }         
7288    return szTestSelector.trim();   
7289};
7290
7291CTL_CSS_TWEAKER.prototype.__removeHolesFromDataPath = function( aDataPath ){
7292    var iSteps = aDataPath.length;
7293    for( var i = 0; i < iSteps; i++ ){
7294        if( aDataPath[i].selector === "" ){
7295            aDataPath.splice(i,1);
7296            iSteps--;
7297            i--;
7298        }
7299    } 
7300};
7301        
7302CTL_CSS_TWEAKER.prototype.__isTagName = function( szSelector ){
7303    switch(szSelector){
7304        case "div":
7305        case "p":
7306        case "h1":
7307        case "h2":
7308        case "h3":
7309        case "h4":
7310        case "h5":
7311        case "h6":
7312        case "a":
7313        case "ul":
7314        case "li":
7315        case "span":
7316        case "nav":
7317        case "header":
7318        case "article":
7319        case "ol":
7320        case "br":
7321        case "i":
7322        case "span":
7323        case "section":
7324        case "footer":
7325        case "em":
7326        case "menu":
7327        case "iframe":
7328        case "object":
7329        case "aside":
7330        case "audio":
7331        case "canvas":
7332        case "button":
7333        case "caption":
7334        case "center":
7335        case "table":
7336        case "th":
7337        case "td":
7338        case "tr":
7339        case "form":
7340        case "label":
7341        case "fieldset":
7342        case "input":
7343        case "input[type=submit]":
7344        case "input[type=text]":
7345        case "input[type=number]":
7346        case "input[type=button]":
7347        case "input[type=checkbox]":
7348        case "input[type=date]":
7349        case "input[type=email]":
7350        case "input[type=month]":
7351        case "input[type=password]":
7352        case "input[type=radio]":
7353        case "input[type=range]":
7354        case "input[type=file]":
7355        case "input[type=image]":
7356        case "input[type=hidden]":
7357        case "input[type=datetime-local]":
7358        case "textarea":
7359        case "figure":
7360        case "figcaption":
7361        case "frame":
7362        case "frameset":
7363        case "head":
7364        case "hr":
7365        case "html":
7366        case "legend":
7367        case "main":
7368        case "menuitem":
7369        case "meta":
7370        case "script":
7371        case "noscript":
7372        case "select":
7373        case "option":
7374        case "pre":
7375        case "strong":
7376        case "summary":
7377        case "tbody":
7378        case "tfoot":
7379        case "thead":
7380        case "title":
7381        case "video":{
7382            return true;
7383        }break;
7384        default:{
7385            return false;    
7386        }
7387    }
7388};
7389
7390CTL_CSS_TWEAKER.prototype.getCSSValue = function( szSelector, szPropName ){
7391    return jQuery(szSelector).css(szPropName);
7392};
7393
7394CTL_CSS_TWEAKER.prototype.setCSSValue = function( szSelector, szPropName, szValue ){
7395    jQuery(szSelector).css(szPropName, szValue);
7396};
7397
7398
7399CTL_CSS_TWEAKER.prototype.removeValueFromArray = function( aData, value ) {
7400    var iLen = aData.length;
7401    for (var i = 0; i < iLen; i++) {
7402        if (aData[i] === value) {
7403            aData.splice(i, 1);
7404            i--;
7405            iLen--;
7406        }
7407    }
7408    return aData;
7409};
7410
7411CTL_CSS_TWEAKER.prototype.__checkThereAreNumberAfterString = function( szFullString, szSubstring ){
7412    if( szFullString.indexOf(szSubstring, 0) === -1 ){
7413        return false;
7414    } 
7415    
7416    parseInt( szFullString.substring(szSubstring.length ) );
7417    
7418};
7419
7420CTL_CSS_TWEAKER.prototype.__cleanId = function( id ){
7421    //---------------------------------
7422    // remove wp classes used as id            
7423    for( var k = 0; k < this._aFalseClasses.length; k++ ){                
7424        if( id.indexOf(this._aFalseClasses[k]) === 0 &&
7425            parseInt( id.substring(this._aFalseClasses[k].length ) ) ){
7426            id = null;
7427            break;
7428        }                
7429    }  
7430    return id;
7431};
7432
7433CTL_CSS_TWEAKER.prototype.__cleanClasses = function( classes ){
7434    
7435    var aClasses = classes.trim().split(" ");      
7436    
7437    //---------------------------------
7438    // remove CTL Tweaker Classes
7439    this.removeValueFromArray(aClasses, this._szInspectorClass);  
7440
7441    for( var i = 0; i < aClasses.length; i++ ){                    
7442        //---------------------------------
7443        // remove wp classes used as id            
7444        for( var k = 0; k < this._aFalseClasses.length; k++ ){                
7445            if( aClasses[i].indexOf(this._aFalseClasses[k]) === 0 &&
7446                parseInt( aClasses[i].substring(this._aFalseClasses[k].length ) ) ){
7447                aClasses[i] = "";
7448                break;
7449            }                
7450        }
7451        //---------------------------------
7452        // remove framework classes                       
7453        for( var k = 0; k < this._aFrameworkClasses.length; k++ ){ 
7454            if( aClasses[i] === this._aFrameworkClasses[k] ){
7455                aClasses[i] = "";
7456                break;
7457            }  
7458        }
7459    }
7460    // remove holes
7461    this.removeValueFromArray(aClasses, "");
7462    
7463    return aClasses;
7464};
7465
7466CTL_CSS_TWEAKER.prototype.__traverseNode = function( oNode, aPath, aSelectorPath ){
7467    var classes  = oNode.attr("class");
7468    var tagName  = oNode.prop("tagName");
7469    var oParent  = oNode.parent();
7470    var aClasses = [];
7471 
7472    // clean classes array
7473    if(classes){      
7474        aClasses = classes.trim().split(" ");      
7475        aClasses = this.removeValueFromArray(aClasses, this._szInspectorClass); 
7476        
7477        for( var i = 0; i < aClasses.length; i++ ){                    
7478            //---------------------------------
7479            // remove wp classes used as id            
7480            for( var k = 0; k < this._aFalseClasses.length; k++ ){                
7481                if( aClasses[i].indexOf(this._aFalseClasses[k]) === 0 &&
7482                    parseInt( aClasses[i].substring(this._aFalseClasses[k].length ) ) ){
7483                    aClasses[i] = "";
7484                    break;
7485                }                
7486            }
7487            
7488            /*
7489            var aTest1 = aClasses[i].split("-"), aTest2 = aClasses[i].split("_");
7490            if( parseInt(aTest1[aTest1.length-1]) || parseInt(aTest2[aTest2.length-1]) ){
7491                aClasses[i] = "";
7492            }
7493            */
7494            
7495            //---------------------------------
7496            // remove framework classes                       
7497            for( var k = 0; k < this._aFrameworkClasses.length; k++ ){ 
7498                if( aClasses[i] === this._aFrameworkClasses[k] ){
7499                    aClasses[i] = "";
7500                    break;
7501                }  
7502            }
7503        }        
7504        
7505        aClasses = this.removeValueFromArray(aClasses, ""); 
7506    }
7507    
7508    if(tagName){
7509        tagName = tagName.toLowerCase();
7510        if(tagName === "input" &&
7511           oNode.attr("type") !== "" ){       
7512            tagName+="[type="+ oNode.attr("type") +"]";
7513        }       
7514    }
7515
7516    if( aClasses.length > 0 ){
7517        classes = "";
7518        if( aClasses.length === 1 && tagName){
7519            classes = tagName + "." + aClasses[0];
7520            aPath.unshift( { selector: classes, type : "class_and_tag" } );
7521        }else{
7522            for( var i = 0; i < aClasses.length; i++ ){  
7523                classes += "." + aClasses[i];               
7524            }            
7525            aPath.unshift( { selector: classes, type : "class" } );
7526        }
7527        
7528        aSelectorPath.unshift(classes);
7529    }else if(tagName){
7530        aPath.unshift( { selector: tagName, type : "tag" } );
7531        aSelectorPath.unshift(tagName);
7532    }
7533
7534    
7535    if( tagName !== "body" && oParent.length > 0 ){
7536        this.__traverseNode(oParent, aPath, aSelectorPath);
7537    }
7538    
7539    return aSelectorPath.toString().replace(/,/g,' ');
7540};
7541
7542jQuery(document).ready(function(){
7543    
7544    if(!parent || !parent.g_oCTLTweaker){
7545        return;
7546    }
7547    
7548    if ( g_oCTLTweaker.getUrlParam("inspector") === "true" ){
7549        parent.g_oCTLTweaker.onUpdateStyle(false);
7550        g_oCTLTweaker.initCross();
7551    }else if( g_oCTLTweaker.getUrlParam("inspector") === "false" ){
7552        parent.g_oCTLTweaker.onUpdateStyle(false);
7553    }
7554
7555    if ( g_oCTLTweaker.getUrlParam("tweak-id") ){
7556        jQuery("#tweak-" + g_oCTLTweaker.getUrlParam("tweak-id")).remove();
7557    }
7558
7559    jQuery(document).resize(function(){
7560        g_oCTLTweaker.hideAllHighLights();                
7561    });
7562
7563    jQuery(document).scroll(function(){
7564        g_oCTLTweaker.hideAllHighLights();
7565    });
7566
7567    jQuery(window).on("unload",function(){        
7568        if( g_oCTLTweaker.getUrlParam("inspector") ){
7569            parent.g_oCTLTweaker.onUnloadIframe();
7570        }
7571    });
7572});
7573
7574var g_oCTLTweaker = new CTL_CSS_TWEAKER("ctl-css-tweaker", "ctl_css_tweaker_");
7575// file: /var/www/vhosts/codethislab.com/httpdocs/wp-content/plugins/ctl-wp-studio/classes/extensions/ctl-dropbox/php/../js/front.js
7576jQuery(window).ready(function(){    
7577
7578    wpdk_add_action("ctl-theme-bootstrap-modals-show-modal", function(oNodeModal){
7579        oNodeModal.find(".ctl-dropbox-folder-wrapper").each( function(){
7580            let oNodeFolderWrapper = jQuery(this);
7581            let idWidget = oNodeFolderWrapper.attr("data-widget-id");
7582			
7583			if (oNodeFolderWrapper.find(".ctl-dropbox-first-loader").length > 0 ){
7584				let idResource = oNodeFolderWrapper.find(".ctl-dropbox-first-loader").attr("data-resource-id");
7585				ctlDropboxRefreshHtmlFolder(idWidget, idResource, false, true);				
7586			}
7587
7588        });
7589    });
7590
7591    wpdk_add_action("ctl-dropbox-reload-widget", function( idWidget, idResource, bShowLoading = true){   
7592        ctlDropboxRefreshHtmlFolder(idWidget, idResource, bShowLoading, false);
7593    } );
7594	
7595    jQuery(".ctl-dropbox-folder-wrapper").each( function(){
7596        let oNodeFolderWrapper = jQuery(this);
7597        let idWidget = oNodeFolderWrapper.attr("data-widget-id");
7598		
7599		if (oNodeFolderWrapper.find(".ctl-dropbox-first-loader").length > 0 ){
7600	        let idResource = oNodeFolderWrapper.find(".ctl-dropbox-first-loader").attr("data-resource-id");
7601			ctlDropboxRefreshHtmlFolder(idWidget, idResource, false, true);
7602		}
7603    });
7604	
7605	jQuery(document).on("click", ".ctl-dropbox-action-reload-widget",function(){
7606		let oNodeButton = jQuery(this);
7607		let idWidget = oNodeButton.attr("data-widget-id");
7608        let idResource = oNodeButton.attr("data-resource-id");
7609		let html = '<div class="text-center ctl-dropbox-first-loader" data-resource-id="' + idResource + '">'+
7610                            '<div class="spinner-border text-secondary" role="status"><span class="sr-only">Loading...</span></div></div>';
7611		
7612		oNodeButton.closest(".ctl-wp-studio-form-control-wrapper").html(html);
7613		ctlDropboxRefreshHtmlFolder(idWidget, idResource, false, false);
7614	});
7615	
7616    jQuery(document).on("click", ".ctl-dropbox-action-img-preview", function( e ){
7617        ctlDropboxShowImagePreview( jQuery(this) );
7618    });
7619
7620    jQuery(document).on("click", ".ctl-dropbox-action-open-folder", function( e ){
7621        ctlDropboxOpenFolder( jQuery(this) );
7622    });
7623
7624    jQuery(document).on("dblclick", ".ctl-dropbox-action-dblclick-open-folder", function( e ){
7625        ctlDropboxOpenFolder( jQuery(this) );
7626    });    
7627
7628    jQuery(document).on("click", ".ctl-dropbox-show-upload-dialog", function(){
7629        var oFormData = {};
7630
7631        oFormData["limit-extensions"]  = ["ctl-dropbox", "ctl-form-fields"];        
7632        oFormData["action"]  = 'ctl-wp-studio';
7633        oFormData["execute"] = 'ctl-dropbox';  
7634        oFormData["extension-action"] = 'upload-form';
7635        oFormData["widget-id"]        = jQuery(this).attr("data-widget-id");
7636        oFormData["relative-path"]    = jQuery(this).attr("data-relative-path");
7637        oFormData["resource-id"]      = jQuery(this).attr("data-resource-id");
7638        
7639        var idLoading = g_oCTLWPStudio.showLoading("");
7640
7641        jQuery.post(
7642            g_oCTLWPStudio._oLangCommon["ajaxurl"], oFormData      
7643        ).done( function(response){
7644            var oResponse = jQuery.parseJSON(response);
7645            g_oCTLWPStudio.closeDlg(idLoading);
7646
7647            if( oResponse.res === false ){                              
7648                if ( oResponse.desc){
7649                    alert(oResponse.desc);
7650                }   
7651            }else{
7652  
7653                g_oCTLBootstrapModals.showModal({
7654                    wrapper_classes : "ctl-dropbox-upload-file-dialog",
7655                    modal_title : g_oCTLDropBoxLocalizationFront["Upload file"],
7656                    modal_content : Base64.decode(oResponse.html),
7657                    closeable : true,
7658                    width: '80',
7659                    position: "centered",
7660                    entrance_animation : "animate__slideInUp",
7661                    exit_animation : "animate__slideOutDown",                    
7662                });
7663
7664            }
7665        }).fail( function(){    
7666            g_oCTLWPStudio.closeDlg(idLoading);
7667            alert(g_oCTLWPStudio._oLangCommon["Ooops! Something Went Wrong!"]);
7668        }); 
7669    });
7670
7671    jQuery(document).on("click", ".ctl-dropbox-action-pdf-preview", function(){
7672        ctlDropboxShowPDFPreview(jQuery(this));
7673    });
7674
7675    jQuery(document).on("click", ".ctl-dropbox-action-create-folder", function(){
7676        ctlDropboxCreateFolder(jQuery(this));
7677    });
7678
7679    jQuery(document).on("click", ".ctl-dropbox-action-rename", function(){
7680        ctlDropboxRenameFile(jQuery(this));
7681    });
7682
7683    jQuery(document).on("click", ".ctl-dropbox-show-rename-file-dialog", function(){
7684        ctlDropboxShowRenameFileDialog(jQuery(this));
7685    });
7686
7687    jQuery(document).on("click", ".ctl-dropbox-show-create-folder-dialog", function(){
7688        ctlDropboxShowCreateFolderDialog(jQuery(this));
7689    });
7690
7691    jQuery(document).on("click", ".ctl-dropbox-action-upload", function(){
7692        var oNodeModal = jQuery(this).closest(".modal");
7693        var oNodeForm  = null;
7694        if ( oNodeModal.length == 0){
7695            oNodeForm = jQuery(this).closest("form");
7696        }else{
7697            oNodeForm = oNodeModal.find("form");
7698        }
7699        
7700        if ( ctlFormFieldsCheckIfFormIsFilled(oNodeForm) === false){
7701            return;
7702        }
7703
7704        var aAllowedExtensions = jQuery(this).attr("data-file-extensions");
7705        if ( aAllowedExtensions != "" ){
7706            aAllowedExtensions = aAllowedExtensions.split(",");
7707        }else{
7708            aAllowedExtensions = [];
7709        }
7710
7711        ctlDropboxUploadFilesFromVulcano(oNodeForm, aAllowedExtensions);
7712    });
7713
7714    jQuery(document).on("click", ".ctl-dropbox-action-download", function( e ){
7715        
7716        let oNodeButton = jQuery(this);
7717        let szFileName = oNodeButton.attr("data-path-file").split('/').pop();
7718		   
7719        var oFormData = {};
7720
7721        oFormData["limit-extensions"]  = ["ctl-dropbox"];
7722        oFormData["action"]  = 'ctl-wp-studio';
7723        oFormData["execute"] = 'ctl-dropbox';  
7724        oFormData["extension-action"] = 'download';
7725        oFormData["widget-id"] = jQuery(this).attr("data-widget-id");
7726        oFormData["path-file"] = jQuery(this).attr("data-path-file");
7727        
7728        var idLoading = g_oCTLWPStudio.showLoading("");
7729
7730        jQuery.post(
7731            g_oCTLWPStudio._oLangCommon["ajaxurl"], oFormData      
7732        ).done( function(response){
7733            var oResponse = jQuery.parseJSON(response);
7734
7735            g_oCTLWPStudio.closeDlg(idLoading);
7736
7737            if( oResponse.res === false ){                              
7738                if ( oResponse.desc){
7739                    alert(oResponse.desc);
7740                }   
7741            }else{
7742                if ( oResponse.url ){
7743                    g_oCTLWPStudio.downloadFile(oResponse.url, szFileName);              
7744                }else{
7745                    g_oCTLBootstrapModals.alert("", g_oCTLDropBoxLocalizationFront["File not found!"]);
7746                }
7747            }
7748        }).fail( function(){    
7749            g_oCTLWPStudio.closeDlg(idLoading);
7750            alert(g_oCTLWPStudio._oLangCommon["Ooops! Something Went Wrong!"]);
7751        });          
7752    });
7753
7754    jQuery(document).on("click", ".ctl-dropbox-action-delete-folder-content", function( e ){
7755
7756        var oNodeButton = jQuery(this);
7757
7758        var idConfirmDlg = g_oCTLBootstrapModals.confirm(
7759            "", g_oCTLDropBoxLocalizationFront["Do you really want to delete the folder content?"],
7760            g_oCTLDropBoxLocalizationFront["Yes"], function(){
7761
7762            jQuery("#"+idConfirmDlg).modal("hide");
7763            
7764            var oFormData = {};
7765
7766            oFormData["limit-extensions"]  = ["ctl-dropbox", 
7767											  "ctl-editors-framework", 
7768											  "ctl-form-fields"];
7769            oFormData["action"]  = 'ctl-wp-studio';
7770            oFormData["execute"] = 'ctl-dropbox';  
7771            oFormData["extension-action"] = 'delete-folder-content';
7772            oFormData["widget-id"] = oNodeButton.attr("data-widget-id");
7773            oFormData["resource-id"] = oNodeButton.attr("data-resource-id");
7774            oFormData["resource-type"] = oNodeButton.attr("data-resource-type");
7775            oFormData["relative-path"] = oNodeButton.attr("data-relative-path");
7776            
7777            var idLoading = g_oCTLWPStudio.showLoading("");
7778    
7779            jQuery.post(
7780                g_oCTLWPStudio._oLangCommon["ajaxurl"], oFormData      
7781            ).done( function(response){
7782                var oResponse = jQuery.parseJSON(response);
7783    
7784                if( oResponse.res === false ){              
7785                    g_oCTLWPStudio.closeDlg(idLoading);
7786                    if ( oResponse.desc){
7787                        alert(oResponse.desc);
7788                    }   
7789                }else{
7790                    g_oCTLWPStudio.closeDlg(idLoading);	
7791                    jQuery(".ctl-dropbox-folder-wrapper[data-widget-id='"+oFormData["widget-id"]+"']").replaceWith(Base64.decode(oResponse.html));
7792                    wpdk_do_action("ctl-dropbox-refresh-html-folder", oFormData["widget-id"]);
7793                }
7794            }).fail( function(){    
7795                g_oCTLWPStudio.closeDlg(idLoading);
7796                alert(g_oCTLWPStudio._oLangCommon["Ooops! Something Went Wrong!"]);
7797            }); 
7798        });
7799    });
7800
7801    jQuery(document).on("click", ".ctl-dropbox-action-delete", function( e ){
7802
7803        var oNodeButton = jQuery(this);
7804
7805        var idConfirmDlg = g_oCTLBootstrapModals.confirm(
7806            "", g_oCTLDropBoxLocalizationFront["Do you really want to delete the file?"],
7807            g_oCTLDropBoxLocalizationFront["Yes"], function(){
7808
7809            jQuery("#"+idConfirmDlg).modal("hide");
7810            
7811            var oFormData = {};
7812
7813            oFormData["limit-extensions"]  = ["ctl-dropbox", 
7814											  "ctl-editors-framework",
7815											  "ctl-form-fields"];
7816            oFormData["action"]  = 'ctl-wp-studio';
7817            oFormData["execute"] = 'ctl-dropbox';  
7818            oFormData["extension-action"] = 'delete';
7819            oFormData["widget-id"] = oNodeButton.attr("data-widget-id");
7820            oFormData["resource-id"] = oNodeButton.attr("data-resource-id");
7821            oFormData["resource-type"] = oNodeButton.attr("data-resource-type");
7822            oFormData["relative-path"] = oNodeButton.attr("data-relative-path");
7823            
7824            var idLoading = g_oCTLWPStudio.showLoading("");
7825    
7826            jQuery.post(
7827                g_oCTLWPStudio._oLangCommon["ajaxurl"], oFormData      
7828            ).done( function(response){
7829                var oResponse = jQuery.parseJSON(response);
7830    
7831                if( oResponse.res === false ){              
7832                    g_oCTLWPStudio.closeDlg(idLoading);
7833                    if ( oResponse.desc){
7834                        alert(oResponse.desc);
7835                    }   
7836                }else{
7837                    g_oCTLWPStudio.closeDlg(idLoading);	
7838                    jQuery(".ctl-dropbox-folder-wrapper[data-widget-id='"+oFormData["widget-id"]+"']").replaceWith(Base64.decode(oResponse.html));
7839                    wpdk_do_action("ctl-dropbox-refresh-html-folder", oFormData["widget-id"]);
7840                }
7841            }).fail( function(){    
7842                g_oCTLWPStudio.closeDlg(idLoading);
7843                alert(g_oCTLWPStudio._oLangCommon["Ooops! Something Went Wrong!"]);
7844            }); 
7845        });
7846    });
7847
7848    jQuery(document).on("click", ".ctl-dropbox-action-disconnect", function( e ){
7849
7850        var oFormData = {};
7851
7852        oFormData["limit-extensions"]  = ["ctl-dropbox"];
7853        oFormData["action"]  = 'ctl-wp-studio';
7854        oFormData["execute"] = 'ctl-dropbox';  
7855        oFormData["extension-action"] = 'disconnect';
7856        
7857        var idLoading = g_oCTLWPStudio.showLoading("");
7858
7859        jQuery.post(
7860            g_oCTLWPStudio._oLangCommon["ajaxurl"], oFormData      
7861        ).done( function(response){
7862            var oResponse = jQuery.parseJSON(response);
7863
7864            if( oResponse.res === false ){              
7865                g_oCTLWPStudio.closeDlg(idLoading);
7866                if ( oResponse.desc){
7867                    alert(oResponse.desc);
7868                }   
7869            }else{
7870                window.location.reload();
7871            }
7872        }).fail( function(){    
7873            g_oCTLWPStudio.closeDlg(idLoading);
7874            alert(g_oCTLWPStudio._oLangCommon["Ooops! Something Went Wrong!"]);
7875        });          
7876    });
7877
7878    jQuery(document).on("click", ".ctl-dropbox-action-save-auth-code", function( e ){
7879
7880        var oNodeForm = jQuery(this).closest("form");
7881
7882        if ( ctlFormFieldsCheckIfFormIsFilled(oNodeForm) === false){
7883            return;
7884        }
7885
7886        var oFormData = oNodeForm.serializeObject();
7887
7888        oFormData["limit-extensions"]  = ["ctl-dropbox"];
7889        oFormData["action"]  = 'ctl-wp-studio';
7890        oFormData["execute"] = 'ctl-dropbox';  
7891        oFormData["extension-action"] = 'save-auth-code';
7892        
7893        var idLoading = g_oCTLWPStudio.showLoading("");
7894
7895        jQuery.post(
7896            g_oCTLWPStudio._oLangCommon["ajaxurl"], oFormData      
7897        ).done( function(response){
7898            var oResponse = jQuery.parseJSON(response);
7899
7900            if( oResponse.res === false ){              
7901                g_oCTLWPStudio.closeDlg(idLoading);
7902                if ( oResponse.desc){
7903                    alert(oResponse.desc);
7904                }   
7905            }else{
7906                window.location.reload();
7907            }
7908        }).fail( function(){    
7909            g_oCTLWPStudio.closeDlg(idLoading);
7910            alert(g_oCTLWPStudio._oLangCommon["Ooops! Something Went Wrong!"]);
7911        });          
7912    });
7913});
7914
7915function ctlDropboxShowImageRemoveSpinner(domImage){
7916    var oNodeImage = jQuery(domImage);
7917    var oNodeImagePreview = oNodeImage.closest(".ctl-dropbox-image-preview");
7918    var oNodespinner = oNodeImagePreview.find(".ctl-dropbox-image-loader");
7919    oNodespinner.remove();
7920    oNodeImage.removeClass("d-none");
7921    oNodeImage.addClass("d-block");
7922}
7923
7924function ctlDropboxRenameFile( oNodeButton ){
7925
7926    var oNodeForm = oNodeButton.closest(".modal").find("form");
7927
7928    if ( ctlFormFieldsCheckIfFormIsFilled(oNodeForm) === false){
7929        return;
7930    }
7931
7932    var oFormData = oNodeForm.serializeObject();
7933
7934    oFormData["limit-extensions"]  = ["ctl-dropbox", 
7935									  "ctl-editors-framework", 
7936									  "ctl-form-fields"];
7937    oFormData["action"]  = 'ctl-wp-studio';
7938    oFormData["execute"] = 'ctl-dropbox';  
7939    oFormData["extension-action"] = 'rename';
7940    
7941    var idLoading = g_oCTLWPStudio.showLoading("");
7942
7943    jQuery.post(
7944        g_oCTLWPStudio._oLangCommon["ajaxurl"], oFormData      
7945    ).done( function(response){
7946        var oResponse = jQuery.parseJSON(response);
7947
7948        g_oCTLWPStudio.closeDlg(idLoading);
7949
7950        if( oResponse.res === false ){              
7951            g_oCTLWPStudio.closeDlg(idLoading);
7952            if ( oResponse.desc){
7953                alert(oResponse.desc);
7954            }   
7955        }else{
7956            g_oCTLBootstrapModals.closeLastModal(); 
7957			
7958			if (oResponse.html){
7959            	jQuery(".ctl-dropbox-folder-wrapper[data-widget-id='"+oFormData["widget-id"]+"
7959']").replaceWith(Base64.decode(oResponse.html));
7960            	wpdk_do_action("ctl-dropbox-refresh-html-folder", oFormData["widget-id"]);
7961			}
7962        }
7963    }).fail( function(){    
7964        g_oCTLWPStudio.closeDlg(idLoading);
7965        alert(g_oCTLWPStudio._oLangCommon["Ooops! Something Went Wrong!"]);
7966    });
7967    
7968}
7969
7970function ctlDropboxShowPDFPreview( oNodeButton ){
7971    let szFileName = oNodeButton.attr("data-path-file").split('/').pop();
7972        
7973    var oFormData = {};
7974
7975    oFormData["limit-extensions"]  = ["ctl-dropbox"];
7976    oFormData["action"]  = 'ctl-wp-studio';
7977    oFormData["execute"] = 'ctl-dropbox';  
7978    oFormData["extension-action"] = 'pdf-preview';
7979    oFormData["widget-id"] = oNodeButton.attr("data-widget-id");
7980    oFormData["path-file"] = oNodeButton.attr("data-path-file");
7981    oFormData["resource-id"] = oNodeButton.attr("data-resource-id");
7982
7983    var idLoading = g_oCTLWPStudio.showLoading("");
7984
7985    jQuery.post(
7986        g_oCTLWPStudio._oLangCommon["ajaxurl"], oFormData      
7987    ).done( function(response){
7988        var oResponse = jQuery.parseJSON(response);
7989
7990        g_oCTLWPStudio.closeDlg(idLoading);
7991
7992        if( oResponse.res === false ){                              
7993            if ( oResponse.desc){
7994                alert(oResponse.desc);
7995            }   
7996        }else{
7997            if ( oResponse.url ){
7998                let bDownloadPermitted = oNodeButton.closest(".ctl-dropbox-folder-data").hasClass("ctl-dropbox-action-download-file");
7999                ctlShowPDFViewer(
8000                        oNodeButton.attr("data-widget-id"), oResponse.url, 
8001                        {show_save_button : bDownloadPermitted}, {}, {
8002                            attachments : [ oResponse.url ]
8003                        });
8004            }else{
8005                g_oCTLBootstrapModals.alert("", g_oCTLDropBoxLocalizationFront["File not found!"]);
8006            }
8007        }
8008    }).fail( function(){    
8009        g_oCTLWPStudio.closeDlg(idLoading);
8010        alert(g_oCTLWPStudio._oLangCommon["Ooops! Something Went Wrong!"]);
8011    });   
8012}
8013
8014function ctlDropboxCreateFolder( oNodeButton ){
8015
8016    var oNodeForm = oNodeButton.closest(".modal").find("form");
8017
8018    if ( ctlFormFieldsCheckIfFormIsFilled(oNodeForm) === false){
8019        return;
8020    }
8021
8022    var oFormData = oNodeForm.serializeObject();
8023
8024    oFormData["limit-extensions"]  = ["ctl-dropbox", 
8025									  "ctl-editors-framework", 
8026									  "ctl-form-fields"];
8027    oFormData["action"]  = 'ctl-wp-studio';
8028    oFormData["execute"] = 'ctl-dropbox';  
8029    oFormData["extension-action"] = 'create-folder';
8030    
8031    var idLoading = g_oCTLWPStudio.showLoading("");
8032
8033    jQuery.post(
8034        g_oCTLWPStudio._oLangCommon["ajaxurl"], oFormData      
8035    ).done( function(response){
8036        var oResponse = jQuery.parseJSON(response);
8037
8038        g_oCTLWPStudio.closeDlg(idLoading);
8039
8040        if( oResponse.res === false ){              
8041            g_oCTLWPStudio.closeDlg(idLoading);
8042            if ( oResponse.desc){
8043                alert(oResponse.desc);
8044            }   
8045        }else{
8046            g_oCTLBootstrapModals.closeLastModal();      
8047            jQuery(".ctl-dropbox-folder-wrapper[data-widget-id='"+oFormData["widget-id"]+"']").replaceWith(Base64.decode(oResponse.html),);
8048			wpdk_do_action("ctl-dropbox-refresh-html-folder", oFormData["widget-id"]);
8049            
8050        }
8051    }).fail( function(){    
8052        g_oCTLWPStudio.closeDlg(idLoading);
8053        alert(g_oCTLWPStudio._oLangCommon["Ooops! Something Went Wrong!"]);
8054    });
8055
8056}
8057
8058function ctlDropboxShowRenameFileDialog( oNodeButton ){
8059    
8060    var html = "";
8061
8062    html += '<form>';
8063
8064        html += '<input type="hidden" name="relative-path" value="'+oNodeButton.attr("data-relative-path")+'" />';
8065        html += '<input type="hidden" name="widget-id" value="'+oNodeButton.attr("data-widget-id")+'" />';
8066        html += '<input type="hidden" name="resource-id" value="'+oNodeButton.attr("data-resource-id")+'" />';
8067        html += '<input type="hidden" name="old-name" value="'+oNodeButton.attr("data-file-name")+'" />';
8068
8069        html += formFieldsBuildTextField({
8070            'label-title' : g_oCTLDropBoxLocalizationFront["New name"],
8071            'field-name'  : 'new-name',
8072            'field-value' : oNodeButton.attr("data-file-name"),
8073            'mandatory'   : true,
8074
8075            'display'     : 3,
8076        }, oNodeButton.attr("data-file-name"));
8077	
8078        let htmlButtons = formFieldsBuildButtonField({
8079            'button-title' : g_oCTLDropBoxLocalizationFront["Rename"],
8080            'display'      : 'inline-block',
8081            'classes'      : 'ctl-dropbox-action-rename',
8082            'display'     : 12,
8083        });
8084
8085        html += formFieldsBuildHtmlField( {
8086            "display"         : 12,
8087            "align-value"     : "right",
8088            "wrapper-classes" : "ctl-editor-framework-editor-buttons d-print-none"
8089        }, htmlButtons);        
8090
8091	
8092    html += '</form>';
8093    g_oCTLBootstrapModals.showModal({
8094        wrapper_classes : "ctl-dropbox-rename-file-dialog",
8095        modal_title : g_oCTLDropBoxLocalizationFront["Rename"],
8096        modal_content : html,
8097        closeable : true,
8098        width: '70',
8099        position: "centered",
8100        entrance_animation : "animate__slideInUp",
8101        exit_animation : "animate__slideOutDown",
8102        footer_btn_close : false,
8103    });
8104    jQuery(".ctl-dropbox-rename-file-dialog form .form-control").first().focus();
8105
8106}
8107
8108function ctlDropboxShowCreateFolderDialog( oNodeButton ){
8109
8110    var html = "";
8111
8112    html += '<form>';
8113
8114        html += '<input type="hidden" name="relative-path" value="'+oNodeButton.attr("data-relative-path")+'" />';
8115        html += '<input type="hidden" name="widget-id" value="'+oNodeButton.attr("data-widget-id")+'" />';
8116        html += '<input type="hidden" name="resource-id" value="'+oNodeButton.attr("data-resource-id")+'" />';
8117
8118        html += formFieldsBuildTextField({
8119            'label-title' : g_oCTLDropBoxLocalizationFront["Folder name"],
8120            'field-name'  : 'folder-name',
8121            'mandatory'   : true,
8122            'display'     : 12,
8123        });        
8124        
8125        let htmlButtons = formFieldsBuildButtonField({
8126            'button-title' : g_oCTLDropBoxLocalizationFront["Create folder"],
8127            'display'      : 'inline-block',
8128            'classes'      : 'ctl-dropbox-action-create-folder',
8129            'display'      : 12,
8130        });  
8131
8132        html += formFieldsBuildHtmlField( {
8133            "display"         : 12,
8134            "align-value"     : "right",
8135            "wrapper-classes" : "ctl-editor-framework-editor-buttons d-print-none"
8136        }, htmlButtons);        
8137
8138    html += '</form>';
8139
8140    g_oCTLBootstrapModals.showModal({
8141        wrapper_classes : "ctl-dropbox-create-folder-dialog",
8142        modal_title : g_oCTLDropBoxLocalizationFront["Create folder"],
8143        modal_content : html,
8144        closeable : true,
8145        width: '50',
8146        position: "centered",
8147        entrance_animation : "animate__slideInUp",
8148        exit_animation : "animate__slideOutDown", 
8149        footer_btn_close : false,                   
8150    });
8151
8152    jQuery(".ctl-dropbox-create-folder-dialog form .form-control").first().focus();
8153}
8154
8155function ctlDropboxShowImagePreview( oNodeImg ){
8156
8157    var html = "";
8158
8159    html += '<div class="ctl-dropbox-image-preview">';
8160        html += '<div class="text-center ctl-dropbox-image-loader">';    
8161            html += '<i class="spinner-border text-primary"></i>'
8162        html += '</div>';
8163        html += '<img onload="ctlDropboxShowImageRemoveSpinner(this)" class="d-none mx-auto img-thumbnail img-fluid" src="' + oNodeImg.attr("data-image-url") + '" />';
8164    html += '</div>';
8165
8166    g_oCTLBootstrapModals.showModal({
8167        wrapper_classes : "ctl-dropbox-image-preview-dialog",
8168        modal_title : oNodeImg.attr("data-image-name"),
8169        modal_content : html,
8170        closeable : true,
8171        width: '80',
8172        position: "centered",
8173        entrance_animation : "animate__slideInUp",
8174        exit_animation : "animate__slideOutDown", 
8175        footer_btn_close : false,                   
8176    });
8177}
8178
8179function ctlDropboxUploadFilesFromVulcano( oNodeForm, aAllowedExtensions ) {
8180    var oFormData = oNodeForm.serializeObject();
8181
8182    var oFormData = new FormData();
8183
8184    var oFormSerializableData = oNodeForm.serializeObject();
8185     
8186    if ( ctlFormFieldsCheckIfFormIsFilled(oNodeForm) === false){
8187        return;
8188    }
8189
8190    oFormData.append( 'limit-extensions', ["ctl-dropbox", "ctl-editors-framework"] );
8191    oFormData.append( 'extension-action', 'upload-files' );
8192    oFormData.append( 'widget-id', oFormSerializableData["widget-id"] );
8193    oFormData.append( 'resource-id', oFormSerializableData["resource-id"] );
8194    oFormData.append( 'relative-path', oFormSerializableData["relative-path"] );
8195    oFormData.append( 'action', 'ctl-wp-studio' );
8196    oFormData.append( 'execute', 'ctl-dropbox' );  
8197
8198    let aFiles = oNodeForm.find('.custom-file-input')[0].files;
8199    for (let i = 0; i < aFiles.length; i++) {
8200        oFormData.append( 'file[]', aFiles[i] );
8201    }
8202
8203    ctlDropboxAjaxUpdateFormData(oNodeForm, oFormData, function(oResponse){              
8204        if ( oResponse.res === true ){
8205            ctlFormFieldsClearForm(oNodeForm);
8206            g_oCTLBootstrapModals.closeLastModal();
8207            jQuery(".ctl-dropbox-folder-wrapper[data-widget-id='"+oFormSerializableData["widget-id"]+"']").replaceWith(Base64.decode(oResponse.html));
8208            wpdk_do_action("ctl-dropbox-refresh-html-folder", oFormSerializableData["widget-id"]);
8209        }           
8210    });    
8211}
8212
8213function ctlDropboxAjaxUpdateFormData( oNodeForm, oFormData, cb ){
8214    var idLoading = g_oCTLWPStudio.showLoading("");
8215    
8216    jQuery.ajax({
8217        url : g_oCTLWPStudio._oLangCommon["ajaxurl"],
8218        type: "POST",
8219        data : oFormData,
8220        cache: false,
8221        processData : false,
8222        contentType : false,
8223        method: 'POST',
8224        success:function(response, textStatus, jqXHR){
8225            var oResponse = jQuery.parseJSON(response);
8226
8227            if( oResponse.res === false ){     
8228
8229                if(oResponse.alert){
8230                    g_oCTLBootstrapModals.alert("", oResponse.alert);
8231                }
8232
8233                if (oResponse.errors){
8234                    ctlFormFieldsApplyErrors(oNodeForm, oResponse.errors);
8235                }
8236                
8237                g_oCTLWPStudio.closeDlg(idLoading);    
8238            }else{
8239                g_oCTLWPStudio.closeDlg(idLoading);                    
8240                if (cb){
8241                    cb.call(this, oResponse);
8242                }
8243            }
8244        },
8245        error: function(jqXHR, textStatus, errorThrown){
8246            g_oCTLWPStudio.closeDlg(idLoading);
8247            alert(g_oCTLWPStudio._oLangCommon["Ooops! Something Went Wrong!"]);  
8248        }
8249    });    
8250}
8251
8252function ctlDropboxOpenFolder( oNodeButton ){
8253    
8254    var oFormData = {};
8255    oFormData["limit-extensions"]  = ["ctl-dropbox", "ctl-editors-framework", "ctl-form-fields"]; 
8256    oFormData["action"]  = 'ctl-wp-studio';
8257    oFormData["execute"] = 'ctl-dropbox';  
8258    oFormData["extension-action"] = 'html-folder';
8259    oFormData["widget-id"]        = oNodeButton.attr("data-widget-id");
8260    oFormData["resource-id"]      = oNodeButton.attr("data-resource-id");
8261    oFormData["relative-path"]    = oNodeButton.attr("data-relative-path");
8262
8263    var idLoading = g_oCTLWPStudio.showLoading("");
8264
8265    jQuery.post(
8266        g_oCTLWPStudio._oLangCommon["ajaxurl"], oFormData      
8267    ).done( function(response){
8268        var oResponse = jQuery.parseJSON(response);
8269
8270        if( oResponse.res === false ){              
8271            g_oCTLWPStudio.closeDlg(idLoading);
8272            if ( oResponse.desc){
8273                alert(oResponse.desc);
8274            }   
8275        }else{
8276            g_oCTLWPStudio.closeDlg(idLoading);
8277            jQuery(".ctl-dropbox-folder-wrapper[data-widget-id='"+oFormData["widget-id"]+"']").replaceWith(Base64.decode(oResponse.html),);
8278            wpdk_do_action("ctl-dropbox-refresh-html-folder", oFormData["widget-id"]);
8279        }
8280    }).fail( function(){    
8281        g_oCTLWPStudio.closeDlg(idLoading);
8282        alert(g_oCTLWPStudio._oLangCommon["Ooops! Something Went Wrong!"]);
8283    }); 
8284}
8285
8286function ctlDropboxRefreshHtmlFolder( idWidget, idResource, bShowLoading = true, bFirstLoad = false ) {
8287    var oFormData = {};
8288
8289    oFormData["limit-extensions"]  = ["ctl-dropbox", "ctl-editors-framework", "ctl-form-fields"];
8290    oFormData["action"]  = 'ctl-wp-studio';
8291    oFormData["execute"] = 'ctl-dropbox';  
8292    oFormData["widget-id"]        = idWidget;
8293    oFormData["resource-id"]      = idResource;
8294    oFormData["extension-action"] = 'html-folder';
8295    
8296    let idLoading = 0;
8297
8298    if(bShowLoading){
8299        idLoading = g_oCTLWPStudio.showLoading("");
8300    }
8301	
8302    jQuery.post(
8303        g_oCTLWPStudio._oLangCommon["ajaxurl"], oFormData      
8304    ).done( function(response){
8305        var oResponse = jQuery.parseJSON(response);
8306
8307        if( oResponse.res === false ){  
8308            if(bShowLoading){
8309                g_oCTLWPStudio.closeDlg(idLoading);
8310            }            
8311            if ( oResponse.desc){
8312                alert(oResponse.desc);
8313            }   
8314        }else{
8315            if(bShowLoading){
8316                g_oCTLWPStudio.closeDlg(idLoading);
8317            }
8318            g_oCTLBootstrapModals.closeModal(jQuery(".ctl-dropbox-upload-file-dialog"));      
8319            jQuery(".ctl-dropbox-folder-wrapper[data-widget-id='"+idWidget+"']").replaceWith(Base64.decode(oResponse.html));
8320            if(bFirstLoad){
8321                wpdk_do_action("ctl-dropbox-folder-first-load", idWidget);
8322            }else{
8323				wpdk_do_action("ctl-dropbox-refresh-html-folder", idWidget);
8324			}
8325        }
8326    }).fail( function(){    
8327		
8328		let html = '<div class="alert alert-danger d-flex justify-content-between">';
8329			html += '<span>'+g_oCTLDropBoxLocalizationFront["Communication error with Dropbox"]+'</span>';
8330			html +='<button data-resource-id="'+idResource+'" data-widget-id="'+idWidget+'" class="ctl-dropbox-action-reload-widget btn btn-danger btn-xs"><i class="ctl-wp-studio-icons-ccw px-1"></i> '+g_oCTLDropBoxLocalizationFront["Please try again"]+'</button>';
8331		html += '</div>';
8332		
8333		jQuery(".ctl-dropbox-folder-wrapper[data-widget-id='"+idWidget+"'] .ctl-wp-studio-form-control-wrapper").html(html);
8334		
8335        if(bShowLoading){
8336            g_oCTLWPStudio.closeDlg(idLoading);
8337        }
8338    }); 
8339}
8340// file: /var/www/vhosts/codethislab.com/httpdocs/wp-content/plugins/ctl-wp-studio/classes/extensions/ctl-easing/php/../js/easing.js
8341//----------------------
8342// Bounce
8343
8344/**
8345 * BOUNCE EASING OUT: exponentially decaying parabolic bounce, Interpolates a value between b and c parameters
8346 * <p></br><b>Note:</b></br>
8347 * &nbsp&nbsp&nbspt and d parameters can be in frames or seconds/milliseconds
8348 *
8349 * @param t Elapsed time
8350 * @param b Initial position
8351 * @param c Final position
8352 * @param d Duration
8353 * @return A value between b and c parameters
8354 */
8355function easeOutBounce(t, b, c, d) {
8356    if ((t/= d) < (1 / 2.75)) {
8357        return c * (7.5625 * t * t) + b;
8358    } else if (t < (2 / 2.75)) {
8359        return c * (7.5625 * (t -= (1.5 / 2.75)) * t + .75) + b;
8360    } else if (t < (2.5 / 2.75)) {
8361        return c * (7.5625 * (t -= (2.25 / 2.75)) * t + .9375) + b;
8362    } else {
8363        return c * (7.5625 * (t -= (2.625 / 2.75)) * t + .984375) + b;
8364    }
8365};
8366/**
8367 * BOUNCE EASING IN: exponentially decaying parabolic bounce, Interpolates a value between b and c parameters
8368 * <p></br><b>Note:</b></br>
8369 * &nbsp&nbsp&nbspt and d parameters can be in frames or seconds/milliseconds
8370 *
8371 * @param t Elapsed time
8372 * @param b Initial position
8373 * @param c Final position
8374 * @param d Duration
8375 * @return A value between b and c parameters
8376 */
8377function easeInBounce(t, b, c, d) {
8378    return c - this.easeOutBounce(d - t, 0, c, d) + b;
8379};
8380/**
8381 * BOUNCE EASING IN/OUT: exponentially decaying parabolic bounce, Interpolates a value between b and c parameters
8382 * <p></br><b>Note:</b></br>
8383 * &nbsp&nbsp&nbspt and d parameters can be in frames or seconds/milliseconds
8384 *
8385 * @param t Elapsed time
8386 * @param b Initial position
8387 * @param c Final position
8388 * @param d Duration
8389 * @return A value between b and c parameters
8390 */
8391function easeInOutBounce(t, b, c, d) {
8392    if (t < d / 2)
8393        return this.easeInBounce(t * 2, 0, c, d) * .5 + b;
8394    else
8395        return this.easeOutBounce(t * 2 - d, 0, c, d) * .5 + c * .5 + b;
8396};
8397
8398//----------------------
8399// Circ
8400
8401/**
8402 * Interpolates a value between b and c parameters
8403 * <p></br><b>Note:</b></br>
8404 * &nbsp&nbsp&nbspt and d parameters can be in frames or seconds/milliseconds
8405 *
8406 * @param t Elapsed time
8407 * @param b Initial position
8408 * @param c Final position
8409 * @param d Duration
8410 * @return A value between b and c parameters
8411 */
8412function easeInCirc(t, b, c, d) {
8413    return -c * (Math.sqrt(1 - (t /= d) * t) - 1) + b;
8414};
8415/**
8416 * Interpolates a value between b and c parameters
8417 * <p></br><b>Note:</b></br>
8418 * &nbsp&nbsp&nbspt and d parameters can be in frames or seconds/milliseconds
8419 *
8420 * @param t Elapsed time
8421 * @param b Initial position
8422 * @param c Final position
8423 * @param d Duration
8424 * @return A value between b and c parameters
8425 */
8426function easeOutCirc(t, b, c, d) {
8427    return c * Math.sqrt(1 - (t = t / d - 1) * t) + b;
8428};
8429/**
8430 * Interpolates a value between b and c parameters
8431 * <p></br><b>Note:</b></br>
8432 * &nbsp&nbsp&nbspt and d parameters can be in frames or seconds/milliseconds
8433 *
8434 * @param t Elapsed time
8435 * @param b Initial position
8436 * @param c Final position
8437 * @param d Duration
8438 * @return A value between b and c parameters
8439 */
8440function easeInOutCirc(t, b, c, d) {
8441    if ((t /= d / 2) < 1)
8442        return -c / 2 * (Math.sqrt(1 - t * t) - 1) + b;
8443    return c / 2 * (Math.sqrt(1 - (t -= 2) * t) + 1) + b;
8444};
8445
8446//----------------------
8447// Cubic
8448function easeInCubic(t, b, c, d) {
8449    return c * (t /= d) * t * t + b;
8450};
8451
8452function easeOutCubic(t, b, c, d) {
8453    return c * ((t = t / d - 1) * t * t + 1) + b;
8454};
8455
8456function easeInOutCubic(t, b, c, d) {
8457    if ((t /= d / 2) < 1)
8458        return c / 2 * t * t * t + b;
8459    return c / 2 * ((t -= 2) * t * t + 2) + b;
8460};
8461
8462//----------------------
8463// Elastic
8464function easeInElastic(t, b, c, d, a, p) {
8465    var s = 0;
8466    if (t === 0) {
8467        return b;
8468    }
8469    if ((t /= d) === 1) {
8470        return b + c;
8471    }
8472    if (!p) {
8473        p = d * .3;
8474    }
8475    if (!a || a < Math.abs(c)) {
8476        a = c;
8477        s = p / 4;
8478    } else {
8479        s = p / (2 * Math.PI) * Math.asin(c / a);
8480    }
8481    return -(a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t * d - s) * (2 * Math.PI) / p)) + b;
8482};
8483
8484function easeOutElastic(t, b, c, d, a, p) {
8485    var s = 0;
8486    if (t === 0) {
8487        return b;
8488    }
8489    if ((t /= d) === 1) {
8490        return b + c;
8491    }
8492    if (!p) {
8493        p = d * .3;
8494    }
8495    if (!a || a < Math.abs(c)) {
8496        a = c;
8497        s = p / 4;
8498    } else {
8499        s = p / (2 * Math.PI) * Math.asin(c / a);
8500    }
8501    return (a * Math.pow(2, -10 * t) * Math.sin((t * d - s) * (2 * Math.PI) / p) + c + b);
8502};
8503
8504function easeInOutElastic(t, b, c, d, a, p) {
8505    var s = 0;
8506    if (t === 0) {
8507        return b;
8508    }
8509    if ((t /= d) === 1) {
8510        return b + c;
8511    }
8512    if (!p) {
8513        p = d * .3;
8514    }
8515    if (!a || a < Math.abs(c)) {
8516        a = c;
8517        s = p / 4;
8518    } else {
8519        s = p / (2 * Math.PI) * Math.asin(c / a);
8520    }
8521    if (t < 1) {
8522        return -.5 * (a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t * d - s) * (2 * Math.PI) / p)) + b;
8523    }
8524    return a * Math.pow(2, -10 * (t -= 1)) * Math.sin((t * d - s) * (2 * Math.PI) / p) * .5 + c + b;
8525};
8526
8527//----------------------
8528// Expo
8529/**
8530 * Interpolates a value between b and c parameters
8531 * <p></br><b>Note:</b></br>
8532 * &nbsp&nbsp&nbspt and d parameters can be in frames or seconds/milliseconds
8533 *
8534 * @param t Elapsed time
8535 * @param b Initial position
8536 * @param c Final position
8537 * @param d Duration
8538 * @return A value between b and c parameters
8539 */
8540function easeInExpo(t, b, c, d) {
8541    return (t === 0) ? b : c * Math.pow(2, 10 * (t / d - 1)) + b;
8542};
8543
8544/**
8545 * Interpolates a value between b and c parameters
8546 * <p></br><b>Note:</b></br>
8547 * &nbsp&nbsp&nbspt and d parameters can be in frames or seconds/milliseconds
8548 *
8549 * @param t Elapsed time
8550 * @param b Initial position
8551 * @param c Final position
8552 * @param d Duration
8553 * @return A value between b and c parameters
8554 */
8555function easeOutExpo(t, b, c, d) {
8556    return (t === d) ? b + c : c * (-Math.pow(2, -10 * t / d) + 1) + b;
8557};
8558
8559/**
8560 * Interpolates a value between b and c parameters
8561 * <p></br><b>Note:</b></br>
8562 * &nbsp&nbsp&nbspt and d parameters can be in frames or seconds/milliseconds
8563 *
8564 * @param t Elapsed time
8565 * @param b Initial position
8566 * @param c Final position
8567 * @param d Duration
8568 * @return A value between b and c parameters
8569 */
8570
8571function easeInOutExpo(t, b, c, d) {
8572    if (t === 0)
8573        return b;
8574    if (t === d)
8575        return b + c;
8576    if ((t /= d / 2) < 1)
8577        return c / 2 * Math.pow(2, 10 * (t - 1)) + b;
8578    return c / 2 * (-Math.pow(2, -10 * --t) + 2) + b;
8579};
8580
8581//----------------------
8582// Linear	
8583/**
8584 * Interpolates a value between b and c parameters
8585 * <p></br><b>Note:</b></br>
8586 * &nbsp&nbsp&nbspt and d parameters can be in frames or seconds/milliseconds
8587 *
8588 * @param t Elapsed time
8589 * @param b Initial position
8590 * @param c Final position
8591 * @param d Duration
8592 * @return A value between b and c parameters
8593 */
8594
8595function easeLinear(t, b, c, d) {
8596    return c * t / d + b;
8597};
8598
8599//----------------------
8600// Quad		
8601/**
8602 * Interpolates a value between b and c parameters
8603 * <p></br><b>Note:</b></br>
8604 * &nbsp&nbsp&nbspt and d parameters can be in frames or seconds/milliseconds
8605 *
8606 * @param t Elapsed time
8607 * @param b Initial position
8608 * @param c Final position
8609 * @param d Duration
8610 * @return A value between b and c parameters
8611 */
8612function easeInQuad(t, b, c, d) {
8613    return c * (t /= d) * t + b;
8614};
8615
8616/**
8617 * Interpolates a value between b and c parameters
8618 * <p></br><b>Note:</b></br>
8619 * &nbsp&nbsp&nbspt and d parameters can be in frames or seconds/milliseconds
8620 *
8621 * @param t Elapsed time
8622 * @param b Initial position
8623 * @param c Final position
8624 * @param d Duration
8625 * @return A value between b and c parameters
8626 */
8627
8628function easeOutQuad(t, b, c, d) {
8629    return -c * (t /= d) * (t - 2) + b;
8630};
8631
8632/**
8633 * Interpolates a value between b and c parameters
8634 * <p></br><b>Note:</b></br>
8635 * &nbsp&nbsp&nbspt and d parameters can be in frames or seconds/milliseconds
8636 *
8637 * @param t Elapsed time
8638 * @param b Initial position
8639 * @param c Final position
8640 * @param d Duration
8641 * @return A value between b and c parameters
8642 */
8643function easeInOutQuad(t, b, c, d) {
8644    if ((t /= d / 2) < 1)
8645        return c / 2 * t * t + b;
8646    return -c / 2 * ((--t) * (t - 2) - 1) + b;
8647};
8648
8649//----------------------
8650// Quart
8651/**
8652 * Interpolates a value between b and c parameters
8653 * <p></br><b>Note:</b></br>
8654 * &nbsp&nbsp&nbspt and d parameters can be in frames or seconds/milliseconds
8655 *
8656 * @param t Elapsed time
8657 * @param b Initial position
8658 * @param c Final position
8659 * @param d Duration
8660 * @return A value between b and c parameters
8661 */
8662function easeInQuart(t, b, c, d) {
8663    return c * (t /= d) * t * t * t + b;
8664};
8665
8666/**
8667 * Interpolates a value between b and c parameters
8668 * <p></br><b>Note:</b></br>
8669 * &nbsp&nbsp&nbspt and d parameters can be in frames or seconds/milliseconds
8670 *
8671 * @param t Elapsed time
8672 * @param b Initial position
8673 * @param c Final position
8674 * @param d Duration
8675 * @return A value between b and c parameters
8676 */
8677
8678function easeOutQuart (t, b, c, d) {
8679    return -c * ((t = t / d - 1) * t * t * t - 1) + b;
8680};
8681/**
8682 * Interpolates a value between b and c parameters
8683 * <p></br><b>Note:</b></br>
8684 * &nbsp&nbsp&nbspt and d parameters can be in frames or seconds/milliseconds
8685 *
8686 * @param t Elapsed time
8687 * @param b Initial position
8688 * @param c Final position
8689 * @param d Duration
8690 * @return A value between b and c parameters
8691 */
8692function easeInOutQuart(t, b, c, d) {
8693    if ((t /= d / 2) < 1)
8694        return c / 2 * t * t * t * t + b;
8695    return -c / 2 * ((t -= 2) * t * t * t - 2) + b;
8696};
8697
8698//----------------------
8699// Quint		
8700/**
8701 * Interpolates a value between b and c parameters
8702 * <p></br><b>Note:</b></br>
8703 * &nbsp&nbsp&nbspt and d parameters can be in frames or seconds/milliseconds
8704 *
8705 * @param t Elapsed time
8706 * @param b Initial position
8707 * @param c Final position
8708 * @param d Duration
8709 * @return A value between b and c parameters
8710 */
8711function easeInQuint(t, b, c, d) {
8712    return c * (t /= d) * t * t * t * t + b;
8713};
8714/**
8715 * Interpolates a value between b and c parameters
8716 * <p></br><b>Note:</b></br>
8717 * &nbsp&nbsp&nbspt and d parameters can be in frames or seconds/milliseconds
8718 *
8719 * @param t Elapsed time
8720 * @param b Initial position
8721 * @param c Final position
8722 * @param d Duration
8723 * @return A value between b and c parameters
8724 */
8725function easeOutQuint(t, b, c, d) {
8726    return c * ((t = t / d - 1) * t * t * t * t + 1) + b;
8727};
8728/**
8729 * Interpolates a value between b and c parameters
8730 * <p></br><b>Note:</b></br>
8731 * &nbsp&nbsp&nbspt and d parameters can be in frames or seconds/milliseconds
8732 *
8733 * @param t Elapsed time
8734 * @param b Initial position
8735 * @param c Final position
8736 * @param d Duration
8737 * @return A value between b and c parameters
8738 */
8739function easeInOutQuint(t, b, c, d) {
8740    if ((t /= d / 2) < 1)
8741        return c / 2 * t * t * t * t * t + b;
8742    return c / 2 * ((t -= 2) * t * t * t * t + 2) + b;
8743};
8744
8745//----------------------
8746// Sine	
8747/**
8748 * Interpolates a value between b and c parameters
8749 * <p></br><b>Note:</b></br>
8750 * &nbsp&nbsp&nbspt and d parameters can be in frames or seconds/milliseconds
8751 *
8752 * @param t Elapsed time
8753 * @param b Initial position
8754 * @param c Final position
8755 * @param d Duration
8756 * @return A value between b and c parameters
8757 */
8758function easeInSine(t, b, c, d) {
8759    return -c * Math.cos(t / d * (Math.PI / 2)) + c + b;
8760};
8761/**
8762 * Interpolates a value between b and c parameters
8763 * <p></br><b>Note:</b></br>
8764 * &nbsp&nbsp&nbspt and d parameters can be in frames or seconds/milliseconds
8765 *
8766 * @param t Elapsed time
8767 * @param b Initial position
8768 * @param c Final position
8769 * @param d Duration
8770 * @return A value between b and c parameters
8771 */
8772function easeOutSine(t, b, c, d) {
8773    return c * Math.sin(t / d * (Math.PI / 2)) + b;
8774};
8775/**
8776 * Interpolates a value between b and c parameters
8777 * <p></br><b>Note:</b></br>
8778 * &nbsp&nbsp&nbspt and d parameters can be in frames or seconds/milliseconds
8779 *
8780 * @param t Elapsed time
8781 * @param b Initial position
8782 * @param c Final position
8783 * @param d Duration
8784 * @return A value between b and c parameters
8785 */
8786function easeInOutSine(t, b, c, d) {
8787    return -c / 2 * (Math.cos(Math.PI * t / d) - 1) + b;
8788};
8789
8790//----------------------
8791// Back
8792function easeInBack(t, b, c, d) {
8793    var s = 1.70158;
8794    return c * (t /= d) * t * ((s + 1) * t - s) + b;
8795};
8796
8797function easeOutBack(t, b, c, d) {
8798    var s = 1.70158;
8799    return c * ((t = t / d - 1) * t * ((s + 1) * t + s) + 1) + b;
8800};
8801
8802function easeInOutBack(t, b, c, d) {
8803    var s = 1.70158;
8804    if ((t /= d / 2) < 1)
8805        return c / 2 * (t * t * (((s *= (1.525)) + 1) * t - s)) + b;
8806    return c / 2 * ((t -= 2) * t * (((s *= (1.525)) + 1) * t + s) + 2) + b;
8807};
8808// file: /var/www/vhosts/codethislab.com/httpdocs/wp-content/plugins/ctl-wp-studio/classes/extensions/ctl-gallery-photoswipe/php/../js/photoswipe-ui-default.min.js
8809/*! PhotoSwipe Default UI - 4.1.3 - 2019-01-08
8810* http://photoswipe.com
8811* Copyright (c) 2019 Dmitry Semenov; */
8812!function(a,b){"function"==typeof define&&define.amd?define(b):"object"==typeof exports?module.exports=b():a.PhotoSwipeUI_Default=b()}(this,function(){"use strict";var a=function(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v=this,w=!1,x=!0,y=!0,z={barsSize:{top:44,bottom:"auto"},closeElClasses:["item","caption","zoom-wrap","ui","top-bar"],timeToIdle:4e3,timeToIdleOutside:1e3,loadingIndicatorDelay:1e3,addCaptionHTMLFn:function(a,b){return a.title?(b.children[0].innerHTML=a.title,!0):(b.children[0].innerHTML="",!1)},closeEl:!0,captionEl:!0,fullscreenEl:!0,zoomEl:!0,shareEl:!0,counterEl:!0,arrowEl:!0,preloaderEl:!0,tapToClose:!1,tapToToggleControls:!0,clickToCloseNonZoomable:!0,shareButtons:[{id:"facebook",label:"Share on Facebook",url:"https://www.facebook.com/sharer/sharer.php?u={{url}}"},{id:"twitter",label:"Tweet",url:"https://twitter.com/intent/tweet?text={{text}}&url={{url}}"},{id:"pinterest",label:"Pin it",url:"http://www.pinterest.com/pin/create/button/?url={{url}}&media={{image_url}}&description={{text}}"},{id:"download",label:"Download image",url:"{{raw_image_url}}",download:!0}],getImageURLForShare:function(){return a.currItem.src||""},getPageURLForShare:function(){return window.location.href},getTextForShare:function(){return a.currItem.title||""},indexIndicatorSep:" / ",fitControlsWidth:1200},A=function(a){if(r)return!0;a=a||window.event,q.timeToIdle&&q.mouseUsed&&!k&&K();for(var c,d,e=a.target||a.srcElement,f=e.getAttribute("class")||"",g=0;g<S.length;g++)c=S[g],c.onTap&&f.indexOf("pswp__"+c.name)>-1&&(c.onTap(),d=!0);if(d){a.stopPropagation&&a.stopPropagation(),r=!0;var h=b.features.isOldAndroid?600:30;s=setTimeout(function(){r=!1},h)}},B=function(){return!a.likelyTouchDevice||q.mouseUsed||screen.width>q.fitControlsWidth},C=function(a,c,d){b[(d?"add":"remove")+"Class"](a,"pswp__"+c)},D=function(){var a=1===q.getNumItemsFn();a!==p&&(C(d,"ui--one-slide",a),p=a)},E=function(){C(i,"share-modal--hidden",y)},F=function(){return y=!y,y?(b.removeClass(i,"pswp__share-modal--fade-in"),setTimeout(function(){y&&E()},300)):(E(),setTimeout(function(){y||b.addClass(i,"pswp__share-modal--fade-in")},30)),y||H(),!1},G=function(b){b=b||window.event;var c=b.target||b.srcElement;return a.shout("shareLinkClick",b,c),!!c.href&&(!!c.hasAttribute("download")||(window.open(c.href,"pswp_share","scrollbars=yes,resizable=yes,toolbar=no,location=yes,width=550,height=420,top=100,left="+(window.screen?Math.round(screen.width/2-275):100)),y||F(),!1))},H=function(){for(var a,b,c,d,e,f="",g=0;g<q.shareButtons.length;g++)a=q.shareButtons[g],c=q.getImageURLForShare(a),d=q.getPageURLForShare(a),e=q.getTextForShare(a),b=a.url.replace("{{url}}",encodeURIComponent(d)).replace("{{image_url}}",encodeURIComponent(c)).replace("{{raw_image_url}}",c).replace("{{text}}",encodeURIComponent(e)),f+='<a href="'+b+'" target="_blank" class="pswp__share--'+a.id+'"'+(a.download?"download":"")+">"+a.label+"</a>",q.parseShareButtonOut&&(f=q.parseShareButtonOut(a,f));i.children[0].innerHTML=f,i.children[0].onclick=G},I=function(a){for(var c=0;c<q.closeElClasses.length;c++)if(b.hasClass(a,"pswp__"+q.closeElClasses[c]))return!0},J=0,K=function(){clearTimeout(u),J=0,k&&v.setIdle(!1)},L=function(a){a=a?a:window.event;var b=a.relatedTarget||a.toElement;b&&"HTML"!==b.nodeName||(clearTimeout(u),u=setTimeout(function(){v.setIdle(!0)},q.timeToIdleOutside))},M=function(){q.fullscreenEl&&!b.features.isOldAndroid&&(c||(c=v.getFullscreenAPI()),c?(b.bind(document,c.eventK,v.updateFullscreen),v.updateFullscreen(),b.addClass(a.template,"pswp--supports-fs")):b.removeClass(a.template,"pswp--supports-fs"))},N=function(){q.preloaderEl&&(O(!0),l("beforeChange",function(){clearTimeout(o),o=setTimeout(function(){a.currItem&&a.currItem.loading?(!a.allowProgressiveImg()||a.currItem.img&&!a.currItem.img.naturalWi
8812dth)&&O(!1):O(!0)},q.loadingIndicatorDelay)}),l("imageLoadComplete",function(b,c){a.currItem===c&&O(!0)}))},O=function(a){n!==a&&(C(m,"preloader--active",!a),n=a)},P=function(a){var c=a.vGap;if(B()){var g=q.barsSize;if(q.captionEl&&"auto"===g.bottom)if(f||(f=b.createEl("pswp__caption pswp__caption--fake"),f.appendChild(b.createEl("pswp__caption__center")),d.insertBefore(f,e),b.addClass(d,"pswp__ui--fit")),q.addCaptionHTMLFn(a,f,!0)){var h=f.clientHeight;c.bottom=parseInt(h,10)||44}else c.bottom=g.top;else c.bottom="auto"===g.bottom?0:g.bottom;c.top=g.top}else c.top=c.bottom=0},Q=function(){q.timeToIdle&&l("mouseUsed",function(){b.bind(document,"mousemove",K),b.bind(document,"mouseout",L),t=setInterval(function(){J++,2===J&&v.setIdle(!0)},q.timeToIdle/2)})},R=function(){l("onVerticalDrag",function(a){x&&a<.95?v.hideControls():!x&&a>=.95&&v.showControls()});var a;l("onPinchClose",function(b){x&&b<.9?(v.hideControls(),a=!0):a&&!x&&b>.9&&v.showControls()}),l("zoomGestureEnded",function(){a=!1,a&&!x&&v.showControls()})},S=[{name:"caption",option:"captionEl",onInit:function(a){e=a}},{name:"share-modal",option:"shareEl",onInit:function(a){i=a},onTap:function(){F()}},{name:"button--share",option:"shareEl",onInit:function(a){h=a},onTap:function(){F()}},{name:"button--zoom",option:"zoomEl",onTap:a.toggleDesktopZoom},{name:"counter",option:"counterEl",onInit:function(a){g=a}},{name:"button--close",option:"closeEl",onTap:a.close},{name:"button--arrow--left",option:"arrowEl",onTap:a.prev},{name:"button--arrow--right",option:"arrowEl",onTap:a.next},{name:"button--fs",option:"fullscreenEl",onTap:function(){c.isFullscreen()?c.exit():c.enter()}},{name:"preloader",option:"preloaderEl",onInit:function(a){m=a}}],T=function(){var a,c,e,f=function(d){if(d)for(var f=d.length,g=0;g<f;g++){a=d[g],c=a.className;for(var h=0;h<S.length;h++)e=S[h],c.indexOf("pswp__"+e.name)>-1&&(q[e.option]?(b.removeClass(a,"pswp__element--disabled"),e.onInit&&e.onInit(a)):b.addClass(a,"pswp__element--disabled"))}};f(d.children);var g=b.getChildByClass(d,"pswp__top-bar");g&&f(g.children)};v.init=function(){b.extend(a.options,z,!0),q=a.options,d=b.getChildByClass(a.scrollWrap,"pswp__ui"),l=a.listen,R(),l("beforeChange",v.update),l("doubleTap",function(b){var c=a.currItem.initialZoomLevel;a.getZoomLevel()!==c?a.zoomTo(c,b,333):a.zoomTo(q.getDoubleTapZoom(!1,a.currItem),b,333)}),l("preventDragEvent",function(a,b,c){var d=a.target||a.srcElement;d&&d.getAttribute("class")&&a.type.indexOf("mouse")>-1&&(d.getAttribute("class").indexOf("__caption")>0||/(SMALL|STRONG|EM)/i.test(d.tagName))&&(c.prevent=!1)}),l("bindEvents",function(){b.bind(d,"pswpTap click",A),b.bind(a.scrollWrap,"pswpTap",v.onGlobalTap),a.likelyTouchDevice||b.bind(a.scrollWrap,"mouseover",v.onMouseOver)}),l("unbindEvents",function(){y||F(),t&&clearInterval(t),b.unbind(document,"mouseout",L),b.unbind(document,"mousemove",K),b.unbind(d,"pswpTap click",A),b.unbind(a.scrollWrap,"pswpTap",v.onGlobalTap),b.unbind(a.scrollWrap,"mouseover",v.onMouseOver),c&&(b.unbind(document,c.eventK,v.updateFullscreen),c.isFullscreen()&&(q.hideAnimationDuration=0,c.exit()),c=null)}),l("destroy",function(){q.captionEl&&(f&&d.removeChild(f),b.removeClass(e,"pswp__caption--empty")),i&&(i.children[0].onclick=null),b.removeClass(d,"pswp__ui--over-close"),b.addClass(d,"pswp__ui--hidden"),v.setIdle(!1)}),q.showAnimationDuration||b.removeClass(d,"pswp__ui--hidden"),l("initialZoomIn",function(){q.showAnimationDuration&&b.removeClass(d,"pswp__ui--hidden")}),l("initialZoomOut",function(){b.addClass(d,"pswp__ui--hidden")}),l("parseVerticalMargin",P),T(),q.shareEl&&h&&i&&(y=!0),D(),Q(),M(),N()},v.setIdle=function(a){k=a,C(d,"ui--idle",a)},v.update=function(){x&&a.currItem?(v.updateIndexIndicator(),q.captionEl&&(q.addCaptionHTMLFn(a.currItem,e),C(e,"caption--empty",!a.currItem.title)),w=!0):w=!1,y||F(),D()},v.updateFullscreen=function(d){d&&setTimeout(function(){a.setScrollOffset(0,b.getScrollY())},50),b[(c.isFullscreen()?"add":"remove")+"Class"](a.template,"pswp--fs")},v.updateIndexIndicator=function(){q.counterEl&&(g.innerHTML=a.getCurrentIndex()+1+q.indexIndicatorSep+q.getNumItemsFn())},v.onGlobalTap=function(c){c=c||window.event;var d=c.target||c.srcElement;if(!r)if(c.detail&&"mouse"===c.detail.pointerType){if(I(d))return void a.close();b.hasClass(d,"pswp__img")&&(1===a.getZoomLevel()&&a.getZoomLevel()<=a.currItem.fitRatio?q.clickToCloseNonZoomable&&a.close():a.toggleDesktopZoom(c.detail.releasePoint))}else if(q.tapToToggleControls&&(x?v.hideControls():v.showControls()),q.tapToClose&&(b.hasClass(d,"pswp__img")||I(d)))return void a.close()},v.onMouseOver=function(a){a=a||window.event;var b=a.target||a.srcElement;C(d,"ui--over-close",I(b))},v.hideControls=function(){b.addClass(d,"pswp__ui--hidden"),x=!1}
8812,v.showControls=function(){x=!0,w||v.update(),b.removeClass(d,"pswp__ui--hidden")},v.supportsFullscreen=function(){var a=document;return!!(a.exitFullscreen||a.mozCancelFullScreen||a.webkitExitFullscreen||a.msExitFullscreen)},v.getFullscreenAPI=function(){var b,c=document.documentElement,d="fullscreenchange";return c.requestFullscreen?b={enterK:"requestFullscreen",exitK:"exitFullscreen",elementK:"fullscreenElement",eventK:d}:c.mozRequestFullScreen?b={enterK:"mozRequestFullScreen",exitK:"mozCancelFullScreen",elementK:"mozFullScreenElement",eventK:"moz"+d}:c.webkitRequestFullscreen?b={enterK:"webkitRequestFullscreen",exitK:"webkitExitFullscreen",elementK:"webkitFullscreenElement",eventK:"webkit"+d}:c.msRequestFullscreen&&(b={enterK:"msRequestFullscreen",exitK:"msExitFullscreen",elementK:"msFullscreenElement",eventK:"MSFullscreenChange"}),b&&(b.enter=function(){return j=q.closeOnScroll,q.closeOnScroll=!1,"webkitRequestFullscreen"!==this.enterK?a.template[this.enterK]():void a.template[this.enterK](Element.ALLOW_KEYBOARD_INPUT)},b.exit=function(){return q.closeOnScroll=j,document[this.exitK]()},b.isFullscreen=function(){return document[this.elementK]}),b}};return a});
8813// file: /var/www/vhosts/codethislab.com/httpdocs/wp-content/plugins/ctl-wp-studio/classes/extensions/ctl-gallery-photoswipe/php/../js/photoswipe.min.js
8814/*! PhotoSwipe - v4.1.3 - 2019-01-08
8815* http://photoswipe.com
8816* Copyright (c) 2019 Dmitry Semenov; */
8817!function(a,b){"function"==typeof define&&define.amd?define(b):"object"==typeof exports?module.exports=b():a.PhotoSwipe=b()}(this,function(){"use strict";var a=function(a,b,c,d){var e={features:null,bind:function(a,b,c,d){var e=(d?"remove":"add")+"EventListener";b=b.split(" ");for(var f=0;f<b.length;f++)b[f]&&a[e](b[f],c,!1)},isArray:function(a){return a instanceof Array},createEl:function(a,b){var c=document.createElement(b||"div");return a&&(c.className=a),c},getScrollY:function(){var a=window.pageYOffset;return void 0!==a?a:document.documentElement.scrollTop},unbind:function(a,b,c){e.bind(a,b,c,!0)},removeClass:function(a,b){var c=new RegExp("(\\s|^)"+b+"(\\s|$)");a.className=a.className.replace(c," ").replace(/^\s\s*/,"").replace(/\s\s*$/,"")},addClass:function(a,b){e.hasClass(a,b)||(a.className+=(a.className?" ":"")+b)},hasClass:function(a,b){return a.className&&new RegExp("(^|\\s)"+b+"(\\s|$)").test(a.className)},getChildByClass:function(a,b){for(var c=a.firstChild;c;){if(e.hasClass(c,b))return c;c=c.nextSibling}},arraySearch:function(a,b,c){for(var d=a.length;d--;)if(a[d][c]===b)return d;return-1},extend:function(a,b,c){for(var d in b)if(b.hasOwnProperty(d)){if(c&&a.hasOwnProperty(d))continue;a[d]=b[d]}},easing:{sine:{out:function(a){return Math.sin(a*(Math.PI/2))},inOut:function(a){return-(Math.cos(Math.PI*a)-1)/2}},cubic:{out:function(a){return--a*a*a+1}}},detectFeatures:function(){if(e.features)return e.features;var a=e.createEl(),b=a.style,c="",d={};if(d.oldIE=document.all&&!document.addEventListener,d.touch="ontouchstart"in window,window.requestAnimationFrame&&(d.raf=window.requestAnimationFrame,d.caf=window.cancelAnimationFrame),d.pointerEvent=!!window.PointerEvent||navigator.msPointerEnabled,!d.pointerEvent){var f=navigator.userAgent;if(/iP(hone|od)/.test(navigator.platform)){var g=navigator.appVersion.match(/OS (\d+)_(\d+)_?(\d+)?/);g&&g.length>0&&(g=parseInt(g[1],10),g>=1&&g<8&&(d.isOldIOSPhone=!0))}var h=f.match(/Android\s([0-9\.]*)/),i=h?h[1]:0;i=parseFloat(i),i>=1&&(i<4.4&&(d.isOldAndroid=!0),d.androidVersion=i),d.isMobileOpera=/opera mini|o
8817pera mobi/i.test(f)}for(var j,k,l=["transform","perspective","animationName"],m=["","webkit","Moz","ms","O"],n=0;n<4;n++){c=m[n];for(var o=0;o<3;o++)j=l[o],k=c+(c?j.charAt(0).toUpperCase()+j.slice(1):j),!d[j]&&k in b&&(d[j]=k);c&&!d.raf&&(c=c.toLowerCase(),d.raf=window[c+"RequestAnimationFrame"],d.raf&&(d.caf=window[c+"CancelAnimationFrame"]||window[c+"CancelRequestAnimationFrame"]))}if(!d.raf){var p=0;d.raf=function(a){var b=(new Date).getTime(),c=Math.max(0,16-(b-p)),d=window.setTimeout(function(){a(b+c)},c);return p=b+c,d},d.caf=function(a){clearTimeout(a)}}return d.svg=!!document.createElementNS&&!!document.createElementNS("http://www.w3.org/2000/svg","svg").createSVGRect,e.features=d,d}};e.detectFeatures(),e.features.oldIE&&(e.bind=function(a,b,c,d){b=b.split(" ");for(var e,f=(d?"detach":"attach")+"Event",g=function(){c.handleEvent.call(c)},h=0;h<b.length;h++)if(e=b[h])if("object"==typeof c&&c.handleEvent){if(d){if(!c["oldIE"+e])return!1}else c["oldIE"+e]=g;a[f]("on"+e,c["oldIE"+e])}else a[f]("on"+e,c)});var f=this,g=25,h=3,i={allowPanToNext:!0,spacing:.12,bgOpacity:1,mouseUsed:!1,loop:!0,pinchToClose:!0,closeOnScroll:!0,closeOnVerticalDrag:!0,verticalDragRange:.75,hideAnimationDuration:333,showAnimationDuration:333,showHideOpacity:!1,focus:!0,escKey:!0,arrowKeys:!0,mainScrollEndFriction:.35,panEndFriction:.35,isClickableElement:function(a){return"A"===a.tagName},getDoubleTapZoom:function(a,b){return a?1:b.initialZoomLevel<.7?1:1.33},maxSpreadZoom:1.33,modal:!0,scaleMode:"fit"};e.extend(i,d);var j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,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,$,_,aa,ba,ca,da,ea,fa,ga,ha,ia,ja,ka,la,ma=function(){return{x:0,y:0}},na=ma(),oa=ma(),pa=ma(),qa={},ra=0,sa={},ta=ma(),ua=0,va=!0,wa=[],xa={},ya=!1,za=function(a,b){e.extend(f,b.publicMethods),wa.push(a)},Aa=function(a){var b=ac();return a>b-1?a-b:a<0?b+a:a},Ba={},Ca=function(a,b){return Ba[a]||(Ba[a]=[]),Ba[a].push(b)},Da=function(a){var b=Ba[a];if(b){var c=Array.prototype.slice.call(arguments);c.shift();for(var d=0;d<b.length;d++)b[d].apply(f,c)}},Ea=function(){return(new Date).getTime()},Fa=function(a){ja=a,f.bg.style.opacity=a*i.bgOpacity},Ga=function(a,b,c,d,e){(!ya||e&&e!==f.currItem)&&(d/=e?e.fitRatio:f.currItem.fitRatio),a[E]=u+b+"px, "+c+"px"+v+" scale("+d+")"},Ha=function(a){ea&&(a&&(s>f.currItem.fitRatio?ya||(mc(f.currItem,!1,!0),ya=!0):ya&&(mc(f.currItem),ya=!1)),Ga(ea,pa.x,pa.y,s))},Ia=function(a){a.container&&Ga(a.container.style,a.initialPosition.x,a.initialPosition.y,a.initialZoomLevel,a)},Ja=function(a,b){b[E]=u+a+"px, 0px"+v},Ka=function(a,b){if(!i.loop&&b){var c=m+(ta.x*ra-a)/ta.x,d=Math.round(a-tb.x);(c<0&&d>0||c>=ac()-1&&d<0)&&(a=tb.x+d*i.mainScrollEndFriction)}tb.x=a,Ja(a,n)},La=function(a,b){var c=ub[a]-sa[a];return oa[a]+na[a]+c-c*(b/t)},Ma=function(a,b){a.x=b.x,a.y=b.y,b.id&&(a.id=b.id)},Na=function(a){a.x=Math.round(a.x),a.y=Math.round(a.y)},Oa=null,Pa=function(){Oa&&(e.unbind(document,"mousemove",Pa),e.addClass(a,"pswp--has_mouse"),i.mouseUsed=!0,Da("mouseUsed")),Oa=setTimeout(function(){Oa=null},100)},Qa=function(){e.bind(document,"keydown",f),N.transform&&e.bind(f.scrollWrap,"click",f),i.mouseUsed||e.bind(document,"mousemove",Pa),e.bind(window,"resize scroll orientationchange",f),Da("bindEvents")},Ra=function(){e.unbind(window,"resize scroll orientationchange",f),e.unbind(window,"scroll",r.scroll),e.unbind(document,"keydown",f),e.unbind(document,"mousemove",Pa),N.transform&&e.unbind(f.scrollWrap,"click",f),V&&e.unbind(window,p,f),clearTimeout(O),Da("unbindEvents")},Sa=function(a,b){var c=ic(f.currItem,qa,a);return b&&(da=c),c},Ta=function(a){return a||(a=f.currItem),a.initialZoomLevel},Ua=function(a){return a||(a=f.currItem),a.w>0?i.maxSpreadZoom:1},Va=function(a,b,c,d){return d===f.currItem.initialZoomLevel?(c[a]=f.currItem.initialPosition[a],!0):(c[a]=La(a,d),c[a]>b.min[a]?(c[a]=b.min[a],!0):c[a]<b.max[a]&&(c[a]=b.max[a],!0))},Wa=function(){if(E){var b=N.perspective&&!G;return u="translate"+(b?"3d(":"("),void(v=N.perspective?", 0px)":")")}E="left",e.addClass(a,"pswp--ie"),Ja=function(a,b){b.left=a+"px"},Ia=function(a){var b=a.fitRatio>1?1:a.fitRatio,c=a.container.style,d=b*a.w,e=b*a.h;c.width=d+"px",c.height=e+"px",c.left=a.initialPosition.x+"px",c.top=a.initialPosition.y+"px"},Ha=function(){if(ea){var a=ea,b=f.currItem,c=b.fitRatio>1?1:b.fitRatio,d=c*b.w,e=c*b.h;a.width=d+"px",a.height=e+"px",a.left=pa.x+"px",a.top=pa.y+"px"}}},Xa=function(a){var b="";i.escKey&&27===a.keyCode?b="close":i.arrowKeys&&(37===a.keyCode?b="prev":39===a.keyCode&&(b="next")),b&&(a.ctrlKey||a.altKey||a.shiftKey||a.metaKey||(a.preventDefault?a.preventDefault():a.returnValue=!1,f[b]()))},Ya=function(a){a&&(Y||X||fa||T)&&(a.preventDefault(),a.stopPropagation())},Za=function(){f.setScrollOffset(0,e.getScrollY())},$a={},_a=0,ab=function(a){$a[a]&&($a[a].raf&&I($a[a].raf),_a--,delete $a[a])},bb=function(a){$a[a]&&ab(a),$a[a]||(_a++,$a[a]={})},cb=function(){for(var a in $a)$a.hasOwnProperty(a)&&ab(a)},db=function(a,b,c,d,e,f,g){var h,i=Ea();
8817bb(a);var j=function(){if($a[a]){if(h=Ea()-i,h>=d)return ab(a),f(c),void(g&&g());f((c-b)*e(h/d)+b),$a[a].raf=H(j)}};j()},eb={shout:Da,listen:Ca,viewportSize:qa,options:i,isMainScrollAnimating:function(){return fa},getZoomLevel:function(){return s},getCurrentIndex:function(){return m},isDragging:function(){return V},isZooming:function(){return aa},setScrollOffset:function(a,b){sa.x=a,M=sa.y=b,Da("updateScrollOffset",sa)},applyZoomPan:function(a,b,c,d){pa.x=b,pa.y=c,s=a,Ha(d)},init:function(){if(!j&&!k){var c;f.framework=e,f.template=a,f.bg=e.getChildByClass(a,"pswp__bg"),J=a.className,j=!0,N=e.detectFeatures(),H=N.raf,I=N.caf,E=N.transform,L=N.oldIE,f.scrollWrap=e.getChildByClass(a,"pswp__scroll-wrap"),f.container=e.getChildByClass(f.scrollWrap,"pswp__container"),n=f.container.style,f.itemHolders=y=[{el:f.container.children[0],wrap:0,index:-1},{el:f.container.children[1],wrap:0,index:-1},{el:f.container.children[2],wrap:0,index:-1}],y[0].el.style.display=y[2].el.style.display="none",Wa(),r={resize:f.updateSize,orientationchange:function(){clearTimeout(O),O=setTimeout(function(){qa.x!==f.scrollWrap.clientWidth&&f.updateSize()},500)},scroll:Za,keydown:Xa,click:Ya};var d=N.isOldIOSPhone||N.isOldAndroid||N.isMobileOpera;for(N.animationName&&N.transform&&!d||(i.showAnimationDuration=i.hideAnimationDuration=0),c=0;c<wa.length;c++)f["init"+wa[c]]();if(b){var g=f.ui=new b(f,e);g.init()}Da("firstUpdate"),m=m||i.index||0,(isNaN(m)||m<0||m>=ac())&&(m=0),f.currItem=_b(m),(N.isOldIOSPhone||N.isOldAndroid)&&(va=!1),a.setAttribute("aria-hidden","false"),i.modal&&(va?a.style.position="fixed":(a.style.position="absolute",a.style.top=e.getScrollY()+"px")),void 0===M&&(Da("initialLayout"),M=K=e.getScrollY());var l="pswp--open ";for(i.mainClass&&(l+=i.mainClass+" "),i.showHideOpacity&&(l+="pswp--animate_opacity "),l+=G?"pswp--touch":"pswp--notouch",l+=N.animationName?" pswp--css_animation":"",l+=N.svg?" pswp--svg":"",e.addClass(a,l),f.updateSize(),o=-1,ua=null,c=0;c<h;c++)Ja((c+o)*ta.x,y[c].el.style);L||e.bind(f.scrollWrap,q,f),Ca("initialZoomInEnd",function(){f.setContent(y[0],m-1),f.setContent(y[2],m+1),y[0].el.style.display=y[2].el.style.display="block",i.focus&&a.focus(),Qa()}),f.setContent(y[1],m),f.updateCurrItem(),Da("afterInit"),va||(w=setInterval(function(){_a||V||aa||s!==f.currItem.initialZoomLevel||f.updateSize()},1e3)),e.addClass(a,"pswp--visible")}},close:function(){j&&(j=!1,k=!0,Da("close"),Ra(),cc(f.currItem,null,!0,f.destroy))},destroy:function(){Da("destroy"),Xb&&clearTimeout(Xb),a.setAttribute("aria-hidden","true"),a.className=J,w&&clearInterval(w),e.unbind(f.scrollWrap,q,f),e.unbind(window,"scroll",f),zb(),cb(),Ba=null},panTo:function(a,b,c){c||(a>da.min.x?a=da.min.x:a<da.max.x&&(a=da.max.x),b>da.min.y?b=da.min.y:b<da.max.y&&(b=da.max.y)),pa.x=a,pa.y=b,Ha()},handleEvent:function(a){a=a||window.event,r[a.type]&&r[a.type](a)},goTo:function(a){a=Aa(a);var b=a-m;ua=b,m=a,f.currItem=_b(m),ra-=b,Ka(ta.x*ra),cb(),fa=!1,f.updateCurrItem()},next:function(){f.goTo(m+1)},prev:function(){f.goTo(m-1)},updateCurrZoomItem:function(a){if(a&&Da("beforeChange",0),y[1].el.children.length){var b=y[1].el.children[0];ea=e.hasClass(b,"pswp__zoom-wrap")?b.style:null}else ea=null;da=f.currItem.bounds,t=s=f.currItem.initialZoomLevel,pa.x=da.center.x,pa.y=da.center.y,a&&Da("afterChange")},invalidateCurrItems:function(){x=!0;for(var a=0;a<h;a++)y[a].item&&(y[a].item.needsUpdate=!0)},updateCurrItem:function(a){if(0!==ua){var b,c=Math.abs(ua);if(!(a&&c<2)){f.currItem=_b(m),ya=!1,Da("beforeChange",ua),c>=h&&(o+=ua+(ua>0?-h:h),c=h);for(var d=0;d<c;d++)ua>0?(b=y.shift(),y[h-1]=b,o++,Ja((o+2)*ta.x,b.el.style),f.setContent(b,m-c+d+1+1)):(b=y.pop(),y.unshift(b),o--,Ja(o*ta.x,b.el.style),f.setContent(b,m+c-d-1-1));if(ea&&1===Math.abs(ua)){var e=_b(z);e.initialZoomLevel!==s&&(ic(e,qa),mc(e),Ia(e))}ua=0,f.updateCurrZoomItem(),z=m,Da("afterChange")}}},updateSize:function(b){if(!va&&i.modal){var c=e.getScrollY();if(M!==c&&(a.style.top=c+"px",M=c),!b&&xa.x===window.innerWidth&&xa.y===window.innerHeight)return;xa.x=window.innerWidth,xa.y=window.innerHeight,a.style.height=xa.y+"px"}if(qa.x=f.scrollWrap.clientWidth,qa.y=f.scrollWrap.clientHeight,Za(),ta.x=qa.x+Math.round(qa.x*i.spacing),ta.y=qa.y,Ka(ta.x*ra),Da("beforeResize"),void 0!==o){for(var d,g,j,k=0;k<h;k++)d=y[k],Ja((k+o)*ta.x,d.el.style),j=m+k-1,i.loop&&ac()>2&&(j=Aa(j)),g=_b(j),g&&(x||g.needsUpdate||!g.bounds)?(f.cleanSlide(g),f.setContent(d,j),1===k&&(f.currItem=g,f.updateCurrZoomItem(!0)),g.needsUpdate=!1):d.index===-1&&j>=0&&f.setContent(d,j),g&&g.container&&(ic(g,qa),mc(g),Ia(g));x=!1}
8817t=s=f.currItem.initialZoomLevel,da=f.currItem.bounds,da&&(pa.x=da.center.x,pa.y=da.center.y,Ha(!0)),Da("resize")},zoomTo:function(a,b,c,d,f){b&&(t=s,ub.x=Math.abs(b.x)-pa.x,ub.y=Math.abs(b.y)-pa.y,Ma(oa,pa));var g=Sa(a,!1),h={};Va("x",g,h,a),Va("y",g,h,a);var i=s,j={x:pa.x,y:pa.y};Na(h);var k=function(b){1===b?(s=a,pa.x=h.x,pa.y=h.y):(s=(a-i)*b+i,pa.x=(h.x-j.x)*b+j.x,pa.y=(h.y-j.y)*b+j.y),f&&f(b),Ha(1===b)};c?db("customZoomTo",0,1,c,d||e.easing.sine.inOut,k):k(1)}},fb=30,gb=10,hb={},ib={},jb={},kb={},lb={},mb=[],nb={},ob=[],pb={},qb=0,rb=ma(),sb=0,tb=ma(),ub=ma(),vb=ma(),wb=function(a,b){return a.x===b.x&&a.y===b.y},xb=function(a,b){return Math.abs(a.x-b.x)<g&&Math.abs(a.y-b.y)<g},yb=function(a,b){return pb.x=Math.abs(a.x-b.x),pb.y=Math.abs(a.y-b.y),Math.sqrt(pb.x*pb.x+pb.y*pb.y)},zb=function(){Z&&(I(Z),Z=null)},Ab=function(){V&&(Z=H(Ab),Qb())},Bb=function(){return!("fit"===i.scaleMode&&s===f.currItem.initialZoomLevel)},Cb=function(a,b){return!(!a||a===document)&&(!(a.getAttribute("class")&&a.getAttribute("class").indexOf("pswp__scroll-wrap")>-1)&&(b(a)?a:Cb(a.parentNode,b)))},Db={},Eb=function(a,b){return Db.prevent=!Cb(a.target,i.isClickableElement),Da("preventDragEvent",a,b,Db),Db.prevent},Fb=function(a,b){return b.x=a.pageX,b.y=a.pageY,b.id=a.identifier,b},Gb=function(a,b,c){c.x=.5*(a.x+b.x),c.y=.5*(a.y+b.y)},Hb=function(a,b,c){if(a-Q>50){var d=ob.length>2?ob.shift():{};d.x=b,d.y=c,ob.push(d),Q=a}},Ib=function(){var a=pa.y-f.currItem.initialPosition.y;return 1-Math.abs(a/(qa.y/2))},Jb={},Kb={},Lb=[],Mb=function(a){for(;Lb.length>0;)Lb.pop();return F?(la=0,mb.forEach(function(a){0===la?Lb[0]=a:1===la&&(Lb[1]=a),la++})):a.type.indexOf("touch")>-1?a.touches&&a.touches.length>0&&(Lb[0]=Fb(a.touches[0],Jb),a.touches.length>1&&(Lb[1]=Fb(a.touches[1],Kb))):(Jb.x=a.pageX,Jb.y=a.pageY,Jb.id="",Lb[0]=Jb),Lb},Nb=function(a,b){var c,d,e,g,h=0,j=pa[a]+b[a],k=b[a]>0,l=tb.x+b.x,m=tb.x-nb.x;return c=j>da.min[a]||j<da.max[a]?i.panEndFriction:1,j=pa[a]+b[a]*c,!i.allowPanToNext&&s!==f.currItem.initialZoomLevel||(ea?"h"!==ga||"x"!==a||X||(k?(j>da.min[a]&&(c=i.panEndFriction,h=da.min[a]-j,d=da.min[a]-oa[a]),(d<=0||m<0)&&ac()>1?(g=l,m<0&&l>nb.x&&(g=nb.x)):da.min.x!==da.max.x&&(e=j)):(j<da.max[a]&&(c=i.panEndFriction,h=j-da.max[a],d=oa[a]-da.max[a]),(d<=0||m>0)&&ac()>1?(g=l,m>0&&l<nb.x&&(g=nb.x)):da.min.x!==da.max.x&&(e=j))):g=l,"x"!==a)?void(fa||$||s>f.currItem.fitRatio&&(pa[a]+=b[a]*c)):(void 0!==g&&(Ka(g,!0),$=g!==nb.x),da.min.x!==da.max.x&&(void 0!==e?pa.x=e:$||(pa.x+=b.x*c)),void 0!==g)},Ob=function(a){if(!("mousedown"===a.type&&a.button>0)){if($b)return void a.preventDefault();if(!U||"mousedown"!==a.type){if(Eb(a,!0)&&a.preventDefault(),Da("pointerDown"),F){var b=e.arraySearch(mb,a.pointerId,"id");b<0&&(b=mb.length),mb[b]={x:a.pageX,y:a.pageY,id:a.pointerId}}var c=Mb(a),d=c.length;_=null,cb(),V&&1!==d||(V=ha=!0,e.bind(window,p,f),S=ka=ia=T=$=Y=W=X=!1,ga=null,Da("firstTouchStart",c),Ma(oa,pa),na.x=na.y=0,Ma(kb,c[0]),Ma(lb,kb),nb.x=ta.x*ra,ob=[{x:kb.x,y:kb.y}],Q=P=Ea(),Sa(s,!0),zb(),Ab()),!aa&&d>1&&!fa&&!$&&(t=s,X=!1,aa=W=!0,na.y=na.x=0,Ma(oa,pa),Ma(hb,c[0]),Ma(ib,c[1]),Gb(hb,ib,vb),ub.x=Math.abs(vb.x)-pa.x,ub.y=Math.abs(vb.y)-pa.y,ba=ca=yb(hb,ib))}}},Pb=function(a){if(a.preventDefault(),F){var b=e.arraySearch(mb,a.pointerId,"id");if(b>-1){var c=mb[b];c.x=a.pageX,c.y=a.pageY}}if(V){var d=Mb(a);if(ga||Y||aa)_=d;else if(tb.x!==ta.x*ra)ga="h";else{var f=Math.abs(d[0].x-kb.x)-Math.abs(d[0].y-kb.y);Math.abs(f)>=gb&&(ga=f>0?"h":"v",_=d)}}},Qb=function(){if(_){var a=_.length;if(0!==a)if(Ma(hb,_[0]),jb.x=hb.x-kb.x,jb.y=hb.y-kb.y,aa&&a>1){if(kb.x=hb.x,kb.y=hb.y,!jb.x&&!jb.y&&wb(_[1],ib))return;Ma(ib,_[1]),X||(X=!0,Da("zoomGestureStarted"));var b=yb(hb,ib),c=Vb(b);c>f.currItem.initialZoomLevel+f.currItem.initialZoomLevel/15&&(ka=!0);var d=1,e=Ta(),g=Ua();if(c<e)if(i.pinchToClose&&!ka&&t<=f.currItem.initialZoomLevel){var h=e-c,j=1-h/(e/1.2);Fa(j),Da("onPinchClose",j),ia=!0}else d=(e-c)/e,d>1&&(d=1),c=e-d*(e/3);else c>g&&(d=(c-g)/(6*e),d>1&&(d=1),c=g+d*e);d<0&&(d=0),ba=b,Gb(hb,ib,rb),na.x+=rb.x-vb.x,na.y+=rb.y-vb.y,Ma(vb,rb),pa.x=La("x",c),pa.y=La("y",c),S=c>s,s=c,Ha()}else{if(!ga)return;if(ha&&(ha=!1,Math.abs(jb.x)>=gb&&(jb.x-=_[0].x-lb.x),Math.abs(jb.y)>=gb&&(jb.y-=_[0].y-lb.y)),kb.x=hb.x,kb.y=hb.y,0===jb.x&&0===jb.y)return;if("v"===ga&&i.closeOnVerticalDrag&&!Bb()){na.y+=jb.y,pa.y+=jb.y;var k=Ib();return T=!0,Da("onVerticalDrag",k),Fa(k),void Ha()}Hb(Ea(),hb.x,hb.y),Y=!0,da=f.currItem.bounds;var l=Nb("x",jb);l||(Nb("y",jb),Na(pa),Ha())}}}
8817,Rb=function(a){if(N.isOldAndroid){if(U&&"mouseup"===a.type)return;a.type.indexOf("touch")>-1&&(clearTimeout(U),U=setTimeout(function(){U=0},600))}Da("pointerUp"),Eb(a,!1)&&a.preventDefault();var b;if(F){var c=e.arraySearch(mb,a.pointerId,"id");if(c>-1)if(b=mb.splice(c,1)[0],navigator.msPointerEnabled){var d={4:"mouse",2:"touch",3:"pen"};b.type=d[a.pointerType],b.type||(b.type=a.pointerType||"mouse")}else b.type=a.pointerType||"mouse"}var g,h=Mb(a),j=h.length;if("mouseup"===a.type&&(j=0),2===j)return _=null,!0;1===j&&Ma(lb,h[0]),0!==j||ga||fa||(b||("mouseup"===a.type?b={x:a.pageX,y:a.pageY,type:"mouse"}:a.changedTouches&&a.changedTouches[0]&&(b={x:a.changedTouches[0].pageX,y:a.changedTouches[0].pageY,type:"touch"})),Da("touchRelease",a,b));var k=-1;if(0===j&&(V=!1,e.unbind(window,p,f),zb(),aa?k=0:sb!==-1&&(k=Ea()-sb)),sb=1===j?Ea():-1,g=k!==-1&&k<150?"zoom":"swipe",aa&&j<2&&(aa=!1,1===j&&(g="zoomPointerUp"),Da("zoomGestureEnded")),_=null,Y||X||fa||T)if(cb(),R||(R=Sb()),R.calculateSwipeSpeed("x"),T){var l=Ib();if(l<i.verticalDragRange)f.close();else{var m=pa.y,n=ja;db("verticalDrag",0,1,300,e.easing.cubic.out,function(a){pa.y=(f.currItem.initialPosition.y-m)*a+m,Fa((1-n)*a+n),Ha()}),Da("onVerticalDrag",1)}}else{if(($||fa)&&0===j){var o=Ub(g,R);if(o)return;g="zoomPointerUp"}if(!fa)return"swipe"!==g?void Wb():void(!$&&s>f.currItem.fitRatio&&Tb(R))}},Sb=function(){var a,b,c={lastFlickOffset:{},lastFlickDist:{},lastFlickSpeed:{},slowDownRatio:{},slowDownRatioReverse:{},speedDecelerationRatio:{},speedDecelerationRatioAbs:{},distanceOffset:{},backAnimDestination:{},backAnimStarted:{},calculateSwipeSpeed:function(d){ob.length>1?(a=Ea()-Q+50,b=ob[ob.length-2][d]):(a=Ea()-P,b=lb[d]),c.lastFlickOffset[d]=kb[d]-b,c.lastFlickDist[d]=Math.abs(c.lastFlickOffset[d]),c.lastFlickDist[d]>20?c.lastFlickSpeed[d]=c.lastFlickOffset[d]/a:c.lastFlickSpeed[d]=0,Math.abs(c.lastFlickSpeed[d])<.1&&(c.lastFlickSpeed[d]=0),c.slowDownRatio[d]=.95,c.slowDownRatioReverse[d]=1-c.slowDownRatio[d],c.speedDecelerationRatio[d]=1},calculateOverBoundsAnimOffset:function(a,b){c.backAnimStarted[a]||(pa[a]>da.min[a]?c.backAnimDestination[a]=da.min[a]:pa[a]<da.max[a]&&(c.backA
8817nimDestination[a]=da.max[a]),void 0!==c.backAnimDestination[a]&&(c.slowDownRatio[a]=.7,c.slowDownRatioReverse[a]=1-c.slowDownRatio[a],c.speedDecelerationRatioAbs[a]<.05&&(c.lastFlickSpeed[a]=0,c.backAnimStarted[a]=!0,db("bounceZoomPan"+a,pa[a],c.backAnimDestination[a],b||300,e.easing.sine.out,function(b){pa[a]=b,Ha()}))))},calculateAnimOffset:function(a){c.backAnimStarted[a]||(c.speedDecelerationRatio[a]=c.speedDecelerationRatio[a]*(c.slowDownRatio[a]+c.slowDownRatioReverse[a]-c.slowDownRatioReverse[a]*c.timeDiff/10),c.speedDecelerationRatioAbs[a]=Math.abs(c.lastFlickSpeed[a]*c.speedDecelerationRatio[a]),c.distanceOffset[a]=c.lastFlickSpeed[a]*c.speedDecelerationRatio[a]*c.timeDiff,pa[a]+=c.distanceOffset[a])},panAnimLoop:function(){if($a.zoomPan&&($a.zoomPan.raf=H(c.panAnimLoop),c.now=Ea(),c.timeDiff=c.now-c.lastNow,c.lastNow=c.now,c.calculateAnimOffset("x"),c.calculateAnimOffset("y"),Ha(),c.calculateOverBoundsAnimOffset("x"),c.calculateOverBoundsAnimOffset("y"),c.speedDecelerationRatioAbs.x<.05&&c.speedDecelerationRatioAbs.y<.05))return pa.x=Math.round(pa.x),pa.y=Math.round(pa.y),Ha(),void ab("zoomPan")}};return c},Tb=function(a){return a.calculateSwipeSpeed("y"),da=f.currItem.bounds,a.backAnimDestination={},a.backAnimStarted={},Math.abs(a.lastFlickSpeed.x)<=.05&&Math.abs(a.lastFlickSpeed.y)<=.05?(a.speedDecelerationRatioAbs.x=a.speedDecelerationRatioAbs.y=0,a.calculateOverBoundsAnimOffset("x"),a.calculateOverBoundsAnimOffset("y"),!0):(bb("zoomPan"),a.lastNow=Ea(),void a.panAnimLoop())},Ub=function(a,b){var c;fa||(qb=m);var d;if("swipe"===a){var g=kb.x-lb.x,h=b.lastFlickDist.x<10;g>fb&&(h||b.lastFlickOffset.x>20)?d=-1:g<-fb&&(h||b.lastFlickOffset.x<-20)&&(d=1)}var j;d&&(m+=d,m<0?(m=i.loop?ac()-1:0,j=!0):m>=ac()&&(m=i.loop?0:ac()-1,j=!0),j&&!i.loop||(ua+=d,ra-=d,c=!0));var k,l=ta.x*ra,n=Math.abs(l-tb.x);return c||l>tb.x==b.lastFlickSpeed.x>0?(k=Math.abs(b.lastFlickSpeed.x)>0?n/Math.abs(b.lastFlickSpeed.x):333,k=Math.min(k,400),k=Math.max(k,250)):k=333,qb===m&&(c=!1),fa=!0,Da("mainScrollAnimStart"),db("mainScroll",tb.x,l,k,e.easing.cubic.out,Ka,function(){cb(),fa=!1,qb=-1,(c||qb!==m)&&f.updateCurrItem(),Da("mainScrollAnimComplete")}),c&&f.updateCurrItem(!0),c},Vb=function(a){return 1/ca*a*t},Wb=function(){var a=s,b=Ta(),c=Ua();s<b?a=b:s>c&&(a=c);var d,g=1,h=ja;return ia&&!S&&!ka&&s<b?(f.close(),!0):(ia&&(d=function(a){Fa((g-h)*a+h)}),f.zoomTo(a,0,200,e.easing.cubic.out,d),!0)};za("Gestures",{publicMethods:{initGestures:function(){var a=function(a,b,c,d,e){A=a+b,B=a+c,C=a+d,D=e?a+e:""};F=N.pointerEvent,F&&N.touch&&(N.touch=!1),F?navigator.msPointerEnabled?a("MSPointer","Down","Move","Up","Cancel"):a("pointer","down","move","up","cancel"):N.touch?(a("touch","start","move","end","cancel"),G=!0):a("mouse","down","move","up"),p=B+" "+C+" "+D,q=A,F&&!G&&(G=navigator.maxTouchPoints>1||navigator.msMaxTouchPoints>1),f.likelyTouchDevice=G,r[A]=Ob,r[B]=Pb,r[C]=Rb,D&&(r[D]=r[C]),N.touch&&(q+=" mousedown",p+=" mousemove mouseup",r.mousedown=r[A],r.mousemove=r[B],r.mouseup=r[C]),G||(i.allowPanToNext=!1)}}});var Xb,Yb,Zb,$b,_b,ac,bc,cc=function(b,c,d,g){Xb&&clearTimeout(Xb),$b=!0,Zb=!0;var h;b.initialLayout?(h=b.initialLayout,b.initialLayout=null):h=i.getThumbBoundsFn&&i.getThumbBoundsFn(m);var j=d?i.hideAnimationDuration:i.showAnimationDuration,k=function(){ab("initialZoom"),d?(f.template.removeAttribute("style"),f.bg.removeAttribute("style")):(Fa(1),c&&(c.style.display="block"),e.addClass(a,"pswp--animated-in"),Da("initialZoom"+(d?"OutEnd":"InEnd"))),g&&g(),$b=!1};if(!j||!h||void 0===h.x)return Da("initialZoom"+(d?"Out":"In")),s=b.initialZoomLevel,Ma(pa,b.initialPosition),Ha(),a.style.opacity=d?0:1,Fa(1),void(j?setTimeout(function(){k()},j):k());var n=function(){var c=l,g=!f.currItem.src||f.currItem.loadError||i.showHideOpacity;b.miniImg&&(b.miniImg.style.webkitBackfaceVisibility="hidden"),d||(s=h.w/b.w,pa.x=h.x,pa.y=h.y-K,f[g?"template":"bg"].style.opacity=.001,Ha()),bb("initialZoom"),d&&!c&&e.removeClass(a,"pswp--animated-in"),g&&(d?e[(c?"remove":"add")+"Class"](a,"pswp--animate_opacity"):setTimeout(function(){e.addClass(a,"pswp--animate_opacity")},30)),Xb=setTimeout(function(){if(Da("initialZoom"+(d?"Out":"In")),d){var f=h.w/b.w,i={x:pa.x,y:pa.y},l=s,m=ja,n=function(b){1===b?(s=f,pa.x=h.x,pa.y=h.y-M):(s=(f-l)*b+l,pa.x=(h.x-i.x)*b+i.x,pa.y=(h.y-M-i.y)*b+i.y),Ha(),g?a.style.opacity=1-b:Fa(m-b*m)};c?db("initialZoom",0,1,j,e.easing.cubic.out,n,k):(n(1),Xb=setTimeout(k,j+20))}else s=b.initialZoomLevel,Ma(pa,b.initialPosition),Ha(),Fa(1),g?a.style.opacity=1:Fa(1),Xb=setTimeout(k,j+20)},d?25:90)};n()},dc={},ec=[],fc={index:0,errorMsg:'<div class="pswp__error-msg"><a href="%url%" target="_blank">The image</a> could not be loaded.</div>',forceProgressiveLoading:!1,preload:[1,1],getNumItemsFn:function(){return Yb.length}},gc=function(){return{center:{x:0,y:0},max:{x:0,y:0},min:{x:0,y:0}}},hc=function(a,b,c){var d=a.bounds;d.center.x=Math.round((dc.x-b)/2),d.center.y=Math.round((dc.y-c)/2)+a.vGap.top,d.max.x=b>dc.x?Math.round(dc.x-b):d.center.x,d.max.y=c>dc.y?Math.round(dc.y-c)+a.vGap.top:d.center.y,d.min.x=b>dc.x?0:d.center.x,d.min.y=c>dc.y?a.vGap.top:d.center.y},ic=function(a,b,c){if(a.src&&!a.loadError){var d=!c;if(d&&(a.vGap||(a.vGap={top:0,bottom:0}),Da("parseVerticalMargin",a)),dc.x=b.x,dc.y=b.y-a.vGap.top-a.vGap.bottom,d){var e=dc.x/a.w,f=dc.y/a.h;a.fitRatio=e<f?e:f;var g=i.scaleMode;"orig"===g?c=1:"fit"===g&&(c=a.fitRatio),c>1&&(c=1),a.initialZoomLevel=c,a.bounds||(a.bounds=gc())}if(!c)return;return hc(a,a.w*c,a.h*c),d&&c===a.initialZoomLevel&&(a.initialPosition=a.bounds.center),a.bounds}return a.w=a.h=0,a.initialZoomLevel=a.fitRatio=1,a.bounds=gc(),a.initialPosition=a.bounds.center,a.bounds},jc=function(a,b,c,d,e,g){b.loadError||d&&(b.imageAppended=!0,mc(b,d,b===f.currItem&&ya),c.appendChild(d),g&&setTimeout(function(){b&&b.loaded&&b.placeholder&&(b.placeholder.style.display="none",b.placeholder=null)},500))},kc=function(a){a.loading=!0,a.loaded=!1;var b=a.img=e.createEl("pswp__img","img"),c=function(){a.loading=!1,a.loaded=!0,a.loadComplete?a.loadComplete(a):a.img=null,b.onload=b.onerror=null,b=null};
8817return b.onload=c,b.onerror=function(){a.loadError=!0,c()},b.src=a.src,b},lc=function(a,b){if(a.src&&a.loadError&&a.container)return b&&(a.container.innerHTML=""),a.container.innerHTML=i.errorMsg.replace("%url%",a.src),!0},mc=function(a,b,c){if(a.src){b||(b=a.container.lastChild);var d=c?a.w:Math.round(a.w*a.fitRatio),e=c?a.h:Math.round(a.h*a.fitRatio);a.placeholder&&!a.loaded&&(a.placeholder.style.width=d+"px",a.placeholder.style.height=e+"px"),b.style.width=d+"px",b.style.height=e+"px"}},nc=function(){if(ec.length){for(var a,b=0;b<ec.length;b++)a=ec[b],a.holder.index===a.index&&jc(a.index,a.item,a.baseDiv,a.img,!1,a.clearPlaceholder);ec=[]}};za("Controller",{publicMethods:{lazyLoadItem:function(a){a=Aa(a);var b=_b(a);b&&(!b.loaded&&!b.loading||x)&&(Da("gettingData",a,b),b.src&&kc(b))},initController:function(){e.extend(i,fc,!0),f.items=Yb=c,_b=f.getItemAt,ac=i.getNumItemsFn,bc=i.loop,ac()<3&&(i.loop=!1),Ca("beforeChange",function(a){var b,c=i.preload,d=null===a||a>=0,e=Math.min(c[0],ac()),g=Math.min(c[1],ac());for(b=1;b<=(d?g:e);b++)f.lazyLoadItem(m+b);for(b=1;b<=(d?e:g);b++)f.lazyLoadItem(m-b)}),Ca("initialLayout",function(){f.currItem.initialLayout=i.getThumbBoundsFn&&i.getThumbBoundsFn(m)}),Ca("mainScrollAnimComplete",nc),Ca("initialZoomInEnd",nc),Ca("destroy",function(){for(var a,b=0;b<Yb.length;b++)a=Yb[b],a.container&&(a.container=null),a.placeholder&&(a.placeholder=null),a.img&&(a.img=null),a.preloader&&(a.preloader=null),a.loadError&&(a.loaded=a.loadError=!1);ec=null})},getItemAt:function(a){return a>=0&&(void 0!==Yb[a]&&Yb[a])},allowProgressiveImg:function(){return i.forceProgressiveLoading||!G||i.mouseUsed||screen.width>1200},setContent:function(a,b){i.loop&&(b=Aa(b));var c=f.getItemAt(a.index);c&&(c.container=null);var d,g=f.getItemAt(b);if(!g)return void(a.el.innerHTML="");Da("gettingData",b,g),a.index=b,a.item=g;var h=g.container=e.createEl("pswp__zoom-wrap");if(!g.src&&g.html&&(g.html.tagName?h.appendChild(g.html):h.innerHTML=g.html),lc(g),ic(g,qa),!g.src||g.loadError||g.loaded)g.src&&!g.loadError&&(d=e.createEl("pswp__img","img"),d.style.opacity=1,d.src=g.src,mc(g,d),jc(b,g,h,d,!0));else{if(g.loadComplete=function(c){if(j){if(a&&a.index===b){if(lc(c,!0))return c.loadComplete=c.img=null,ic(c,qa),Ia(c),void(a.index===m&&f.updateCurrZoomItem());c.imageAppended?!$b&&c.placeholder&&(c.placeholder.style.display="none",c.placeholder=null):N.transform&&(fa||$b)?ec.push({item:c,baseDiv:h,img:c.img,index:b,holder:a,clearPlaceholder:!0}):jc(b,c,h,c.img,fa||$b,!0)}c.loadComplete=null,c.img=null,Da("imageLoadComplete",b,c)}},e.features.transform){var k="pswp__img pswp__img--placeholder";k+=g.msrc?"":" pswp__img--placeholder--blank";var l=e.createEl(k,g.msrc?"img":"");g.msrc&&(l.src=g.msrc),mc(g,l),h.appendChild(l),g.placeholder=l}g.loading||kc(g),f.allowProgressiveImg()&&(!Zb&&N.transform?ec.push({item:g,baseDiv:h,img:g.img,index:b,holder:a}):jc(b,g,h,g.img,!0,!0))}Zb||b!==m?Ia(g):(ea=h.style,cc(g,d||g.img)),a.el.innerHTML="",a.el.appendChild(h)},cleanSlide:function(a){a.img&&(a.img.onload=a.img.onerror=null),a.loaded=a.loading=a.img=a.imageAppended=!1}}});var oc,pc={},qc=function(a,b,c){var d=document.createEvent("CustomEvent"),e={origEvent:a,target:a.target,releasePoint:b,pointerType:c||"touch"};d.initCustomEvent("pswpTap",!0,!0,e),a.target.dispatchEvent(d)};za("Tap",{publicMethods:{initTap:function(){Ca("firstTouchStart",f.onTapStart),Ca("touchRelease",f.onTapRelease),Ca("destroy",function(){pc={},oc=null})},onTapStart:function(a){a.length>1&&(clearTimeout(oc),oc=null)},onTapRelease:function(a,b){if(b&&!Y&&!W&&!_a){var c=b;if(oc&&(clearTimeout(oc),oc=null,xb(c,pc)))return void Da("doubleTap",c);if("mouse"===b.type)return void qc(a,b,"mouse");var d=a.target.tagName.toUpperCase();if("BUTTON"===d||e.hasClass(a.target,"pswp__single-tap"))return void qc(a,b);Ma(pc,c),oc=setTimeout(function(){qc(a,b),oc=null},300)}}}});var rc;za("DesktopZoom",{publicMethods:{initDesktopZoom:function(){L||(G?Ca("mouseUsed",function(){f.setupDesktopZoom()}):f.setupDesktopZoom(!0))},setupDesktopZoom:function(b){rc={};var c="wheel mousewheel DOMMouseScroll";Ca("bindEvents",function(){e.bind(a,c,f.handleMouseWheel)}),Ca("unbindEvents",function(){rc&&e.unbind(a,c,f.handleMouseWheel)}),f.mouseZoomedIn=!1;var d,g=function(){f.mouseZoomedIn&&(e.removeClass(a,"pswp--zoomed-in"),f.mouseZoomedIn=!1),s<1?e.addClass(a,"pswp--zoom-allowed"):e.removeClass(a,"pswp--zoom-allowed"),h()},h=function(){d&&(e.removeClass(a,"pswp--dragging"),d=!1)};Ca("resize",g),Ca("afterChange",g),Ca("pointerDown",function(){f.mouseZoomedIn&&(d=!0,e.addClass(a,"pswp--dragging"))}),Ca("pointerUp",h),b||g()}
8817,handleMouseWheel:function(a){if(s<=f.currItem.fitRatio)return i.modal&&(!i.closeOnScroll||_a||V?a.preventDefault():E&&Math.abs(a.deltaY)>2&&(l=!0,f.close())),!0;if(a.stopPropagation(),rc.x=0,"deltaX"in a)1===a.deltaMode?(rc.x=18*a.deltaX,rc.y=18*a.deltaY):(rc.x=a.deltaX,rc.y=a.deltaY);else if("wheelDelta"in a)a.wheelDeltaX&&(rc.x=-.16*a.wheelDeltaX),a.wheelDeltaY?rc.y=-.16*a.wheelDeltaY:rc.y=-.16*a.wheelDelta;else{if(!("detail"in a))return;rc.y=a.detail}Sa(s,!0);var b=pa.x-rc.x,c=pa.y-rc.y;(i.modal||b<=da.min.x&&b>=da.max.x&&c<=da.min.y&&c>=da.max.y)&&a.preventDefault(),f.panTo(b,c)},toggleDesktopZoom:function(b){b=b||{x:qa.x/2+sa.x,y:qa.y/2+sa.y};var c=i.getDoubleTapZoom(!0,f.currItem),d=s===c;f.mouseZoomedIn=!d,f.zoomTo(d?f.currItem.initialZoomLevel:c,b,333),e[(d?"remove":"add")+"Class"](a,"pswp--zoomed-in")}}});var sc,tc,uc,vc,wc,xc,yc,zc,Ac,Bc,Cc,Dc,Ec={history:!0,galleryUID:1},Fc=function(){return Cc.hash.substring(1)},Gc=function(){sc&&clearTimeout(sc),uc&&clearTimeout(uc)},Hc=function(){var a=Fc(),b={};if(a.length<5)return b;var c,d=a.split("&");for(c=0;c<d.length;c++)if(d[c]){var e=d[c].split("=");e.length<2||(b[e[0]]=e[1])}if(i.galleryPIDs){var f=b.pid;for(b.pid=0,c=0;c<Yb.length;c++)if(Yb[c].pid===f){b.pid=c;break}}else b.pid=parseInt(b.pid,10)-1;return b.pid<0&&(b.pid=0),b},Ic=function(){if(uc&&clearTimeout(uc),_a||V)return void(uc=setTimeout(Ic,500));vc?clearTimeout(tc):vc=!0;var a=m+1,b=_b(m);b.hasOwnProperty("pid")&&(a=b.pid);var c=yc+"&gid="+i.galleryUID+"&pid="+a;zc||Cc.hash.indexOf(c)===-1&&(Bc=!0);var d=Cc.href.split("#")[0]+"#"+c;Dc?"#"+c!==window.location.hash&&history[zc?"replaceState":"pushState"]("",document.title,d):zc?Cc.replace(d):Cc.hash=c,zc=!0,tc=setTimeout(function(){vc=!1},60)};za("History",{publicMethods:{initHistory:function(){if(e.extend(i,Ec,!0),i.history){Cc=window.location,Bc=!1,Ac=!1,zc=!1,yc=Fc(),Dc="pushState"in history,yc.indexOf("gid=")>-1&&(yc=yc.split("&gid=")[0],yc=yc.split("?gid=")[0]),Ca("afterChange",f.updateURL),Ca("unbindEvents",function(){e.unbind(window,"hashchange",f.onHashChange)});var a=function(){xc=!0,Ac||(Bc?history.back():yc?Cc.hash=yc:Dc?history.pushState("",document.title,Cc.pathname+Cc.search):Cc.hash=""),Gc()};Ca("unbindEvents",function(){l&&a()}),Ca("destroy",function(){xc||a()}),Ca("firstUpdate",function(){m=Hc().pid});var b=yc.indexOf("pid=");b>-1&&(yc=yc.substring(0,b),"&"===yc.slice(-1)&&(yc=yc.slice(0,-1))),setTimeout(function(){j&&e.bind(window,"hashchange",f.onHashChange)},40)}},onHashChange:function(){return Fc()===yc?(Ac=!0,void f.close()):void(vc||(wc=!0,f.goTo(Hc().pid),wc=!1))},updateURL:function(){Gc(),wc||(zc?sc=setTimeout(Ic,800):Ic())}}}),e.extend(f,eb)};return a});
8818// file: /var/www/vhosts/codethislab.com/httpdocs/wp-content/plugins/ctl-wp-studio/classes/extensions/ctl-gallery-photoswipe/php/../js/front.js
8819jQuery(document).ready(function(){
8820
8821    jQuery(document).on("append-html", function( e, oNode, html ){
8822        ctlGalleryPhotoSwipeInit('.ctl-gallery-photoswipe');
8823    });
8824    
8825    jQuery(document).on("set-html", function( e, oNode, html ){
8826        ctlGalleryPhotoSwipeInit('.ctl-gallery-photoswipe');
8827    });    
8828    
8829    wpdk_add_action("ctl-theme-bootstrap-modals-show-modal", function( oNodeModal ){        
8830        ctlGalleryPhotoSwipeInit('.ctl-gallery-photoswipe');
8831    });
8832
8833    ctlGalleryPhotoSwipeInit('.ctl-gallery-photoswipe');
8834});
8835
8836function ctlGalleryPhotoSwipeInit(gallerySelector) {
8837
8838    // parse slide data (url, title, size ...) from DOM elements 
8839    // (children of gallerySelector)
8840    var parseThumbnailElements = function(el) {
8841
8842        //var thumbElements = el.childNodes,
8843        var thumbElements = el.querySelectorAll("FIGURE"),
8844            numNodes = thumbElements.length,
8845            items = [],
8846            figureEl,
8847            linkEl,
8848            size,
8849            item;
8850
8851
8852        for(var i = 0; i < numNodes; i++) {
8853
8854            figureEl = thumbElements[i]; // <figure> element
8855
8856            // include only element nodes 
8857            if(figureEl.nodeType !== 1) {
8858                continue;
8859            }
8860
8861            linkEl = figureEl.querySelector("A"); // <a> element
8862            size = linkEl.getAttribute('data-size').split('x');
8863
8864            // create slide object
8865            item = {
8866                src: linkEl.getAttribute('href'),
8867                w: parseInt(size[0], 10),
8868                h: parseInt(size[1], 10),
8869                width: 100, 
8870                height :100
8871            };
8872
8873            if(figureEl.children.length > 1) {
8874                item.title = figureEl.querySelector("FIGCAPTION").innerHTML; 
8875            }
8876
8877            if(linkEl.children.length > 0) {
8878                // <img> thumbnail element, retrieving thumbnail url
8879                item.msrc = linkEl.querySelector("IMG").getAttribute('src');
8880            } 
8881
8882            item.el = figureEl; // save link to element for getThumbBoundsFn
8883            items.push(item);
8884        }
8885
8886        return items;
8887    };
8888
8889    // find nearest parent element
8890    var closest = function closest(el, fn) {
8891        return el && ( fn(el) ? el : closest(el.parentNode, fn) );
8892    };
8893
8894    // triggers when user clicks on thumbnail
8895    var onThumbnailsClick = function(e) {
8896        e = e || window.event;
8897        e.preventDefault ? e.preventDefault() : e.returnValue = false;
8898
8899        var eTarget = e.target || e.srcElement;
8900
8901        // find root element of slide
8902        var clickedListItem = closest(eTarget, function(el) {
8903            return (el.tagName && 
8904                    (el.tagName.toUpperCase() === 'FIGURE' ) );
8905        });
8906
8907
8908        if(!clickedListItem) {
8909            return;
8910        }
8911
8912        // find index of clicked item by looping through all child nodes
8913        // alternatively, you may define index via data- attribute
8914        
8915        var clickedGallery = clickedListItem.closest(gallerySelector),
8916        childNodes = clickedGallery.querySelectorAll("figure"),
8917            numChildNodes = childNodes.length,
8918            nodeIndex = 0,
8919            index;
8920
8921        for (var i = 0; i < numChildNodes; i++) {
8922            if(childNodes[i].nodeType !== 1) { 
8923                continue; 
8924            }
8925
8926            if(childNodes[i] === clickedListItem) {
8927                index = nodeIndex;
8928                break;
8929            }
8930            nodeIndex++;
8931        }
8932
8933        if(index >= 0) {
8934            // open PhotoSwipe if valid index found
8935            openPhotoSwipe( index, clickedGallery );
8936        }
8937        return false;
8938    };
8939
8940    // parse picture index and gallery index from URL (#&pid=1&gid=2)
8941    var photoswipeParseHash = function() {
8942        var hash = window.location.hash.substring(1),
8943        params = {};
8944
8945        if(hash.length < 5) {
8946            return params;
8947        }
8948
8949        var vars = hash.split('&');
8950        for (var i = 0; i < vars.length; i++) {
8951            if(!vars[i]) {
8952                continue;
8953            }
8954            var pair = vars[i].split('=');  
8955            if(pair.length < 2) {
8956                continue;
8957            }           
8958            params[pair[0]] = pair[1];
8959        }
8960
8961        if(params.gid) {
8962            params.gid = parseInt(params.gid, 10);
8963        }
8964
8965        return params;
8966    };
8967
8968    var openPhotoSwipe = function(index, galleryElement, disableAnimation, fromURL) {
8969        var pswpElement = document.querySelectorAll('.pswp')[0],
8970            gallery,
8971            options,
8972            items;
8973
8974        items = parseThumbnailElements(galleryElement);
8975
8976        // define options (if needed)
8977        options = {
8978            history: false,
8979            // define gallery index (for URL)
8980            galleryUID: galleryElement.getAttribute('data-pswp-uid'),
8981
8982            getThumbBoundsFn: function(index) {
8983                // See Options -> getThumbBoundsFn section of documentation for more info
8984                var thumbnail = items[index].el.getElementsByTagName('img')[0], // find thumbnail
8985                    pageYScroll = window.pageYOffset || document.documentElement.scrollTop,
8986                    rect = thumbnail.getBoundingClientRect(); 
8987
8988                return {x:rect.left, y:rect.top + pageYScroll, w:rect.width};
8989            }
8990        };
8991
8992        // PhotoSwipe opened from URL
8993        if(fromURL) {
8994            if(options.galleryPIDs) {
8995                // parse real index when custom PIDs are used 
8996                // http://photoswipe.com/documentation/faq.html#custom-pid-in-url
8997                for(var j = 0; j < items.length; j++) {
8998                    if(items[j].pid === index) {
8999                        options.index = j;
9000                        break;
9001                    }
9002                }
9003            } else {
9004                // in URL indexes start from 1
9005                options.index = parseInt(index, 10) - 1;
9006            }
9007        } else {
9008            options.index = parseInt(index, 10);
9009        }
9010
9011        // exit if index not found
9012        if( isNaN(options.index) ) {
9013            return;
9014        }
9015
9016        if(disableAnimation) {
9017            options.showAnimationDuration = 0;
9018        }
9019
9020        // Pass data to PhotoSwipe and initialize it
9021        gallery = new PhotoSwipe( pswpElement, PhotoSwipeUI_Default, items, options);
9022        gallery.init();
9023    };
9024
9025    // loop through all gallery elements and bind events
9026    var galleryElements = document.querySelectorAll( gallerySelector );
9027
9028    for(var i = 0, l = galleryElements.length; i < l; i++) {
9029        galleryElements[i].setAttribute('data-pswp-uid', i+1);
9030        galleryElements[i].onclick = onThumbnailsClick;
9031    }
9032
9033    // Parse URL and open gallery if it contains #&pid=3&gid=1
9034    var hashData = photoswipeParseHash();
9035    if(hashData.pid && hashData.gid) {
9036        openPhotoSwipe( hashData.pid ,  galleryElements[ hashData.gid - 1 ], true, true );
9037    }
9038};
9039// file: /var/www/vhosts/codethislab.com/httpdocs/wp-content/plugins/ctl-wp-studio/classes/extensions/ctl-html-block/php/../js/front.js
9040jQuery(document).ready(function(){        
9041    
9042    jQuery(".ctl-audio-bars audio").each(function(){
9043        var oAudio = jQuery(this)[0];
9044        oAudio.addEventListener('ended',function(){
9045            if ( jQuery(this).prop("loop")){
9046                return;            
9047            }            
9048            this.currentTime = 0;
9049            var oNodeBars = jQuery(this).closest(".ctl-audio-bars");
9050            oNodeBars.removeClass("animated");
9051        });
9052    });
9053
9054    jQuery(document).on("click", ".ctl-audio-bars", function(){
9055        var oNodeAudio = jQuery(this).find("audio");
9056		var oAudio = oNodeAudio[0];
9057		oAudio.volume = 1;
9058
9059        if ( jQuery(this).hasClass("animated") ){
9060            oAudio.muted = true;
9061            oAudio.pause();
9062            jQuery(this).removeClass("animated");
9063        }else{
9064            oAudio.muted = false;
9065            oAudio.play();
9066            jQuery(this).addClass("animated");
9067        }
9068    });
9069
9070    jQuery(document).on("click", ".ctl-img-block-cta a", function(e){
9071		var szUrl = jQuery(this).attr("href");
9072		if ( szUrl.length > 1 && szUrl.charAt(0) === "#"){
9073			e.preventDefault();
9074			e.stopPropagation();
9075			g_oCTLWPStudio.scrollToSelector(szUrl, -100);
9076		}
9077	});
9078
9079    jQuery(document).on("click", ".ctl-video-block-action-restart", function(){
9080        jQuery(this).closest(".ctl-video-block-item-wrapper").find("video")[0].currentTime = 0;
9081    });
9082    
9083    jQuery(document).on("click", ".ctl-video-block-action-toggle-volume", function(){
9084       switch(jQuery(this).attr("data-state")){
9085           case "on":{
9086                jQuery(this).attr("data-state", "off");
9087                jQuery(this).find('i').addClass("ctl-wp-studio-icons-volume-off");
9088                jQuery(this).find('i').removeClass("ctl-wp-studio-icons-volume-up-1");
9089                jQuery(this).closest(".ctl-video-block-item-wrapper").find("video").prop('muted', true);
9090           }break;
9091           case "off":{
9092                jQuery(this).attr("data-state", "on");   
9093                jQuery(this).find('i').removeClass("ctl-wp-studio-icons-volume-off");
9094                jQuery(this).find('i').addClass("ctl-wp-studio-icons-volume-up-1");     
9095                jQuery(this).closest(".ctl-video-block-item-wrapper").find("video").prop('muted', false);
9096           }break;           
9097       } 
9098    });
9099    
9100    jQuery(document).on("click", ".ctl-video-block-action-cover-video-toggle-play", function(){
9101        // check first current controls
9102        var oNodeTogglePlay = jQuery(this).closest(
9103                    ".ctl-video-block-item-wrapper").find(".ctl-video-block-action-toggle-play");
9104        if ( oNodeTogglePlay.length > 0 ){
9105            oNodeTogglePlay.click();
9106            return;
9107        }
9108
9109        // direct video play/pause
9110        var oVideo = jQuery(this)[0];
9111        if ( oVideo.paused ){
9112            oVideo.play();
9113        }else{
9114            oVideo.pause();
9115        }
9116    });
9117
9118    jQuery(document).on("click", ".ctl-video-block-action-toggle-play", function(){
9119       switch(jQuery(this).attr("data-state")){
9120           case "on":{
9121                jQuery(this).attr("data-state", "off");
9122                jQuery(this).find('i').removeClass("ctl-wp-studio-icons-pause");
9123                jQuery(this).find('i').addClass("ctl-wp-studio-icons-play");
9124                jQuery(this).closest(".ctl-video-block-item-wrapper").find("video")[0].pause();
9125           }break;
9126           case "off":{
9127                jQuery(this).attr("data-state", "on");   
9128                jQuery(this).find('i').addClass("ctl-wp-studio-icons-pause");
9129                jQuery(this).find('i').removeClass("ctl-wp-studio-icons-play");       
9130                jQuery(this).closest(".ctl-video-block-item-wrapper").find("video")[0].play();
9131           }break;           
9132       }         
9133    });    
9134
9135});
9136// file: /var/www/vhosts/codethislab.com/httpdocs/wp-content/plugins/ctl-wp-studio/classes/extensions/ctl-php-block/php/../js/front.js
9137jQuery(document).ready(function(){
9138    jQuery(document).on("click", ".ctl-daemon-edit-action-toggle-status", function(){
9139            let bRunning = jQuery(this).data("status") === "running" ? true : false;
9140            if(bRunning){
9141                stopJavaDaemon.call(this);
9142            }else{
9143                startJavaDaemon.call(this);
9144            }
9145        }
9146    );
9147
9148    jQuery(document).on("click", ".ctl-vulcano-java-daemon-handler-container .ctl-java-daemon-stop", stopJavaDaemon);
9149    jQuery(document).on("click", ".ctl-vulcano-java-daemon-handler-container .ctl-java-daemon-start", startJavaDaemon);
9150    jQuery(document).on("click", ".ctl-daemon-edit-action-edit-settings", saveDaemonSettings);
9151});
9152
9153function saveDaemonSettings(){
9154    let oNodeForm  = jQuery(this).closest("form");
9155
9156    if(!ctlFormFieldsCheckIfFormIsFilled(oNodeForm)){
9157        return;
9158    }
9159
9160    let oFormData = oNodeForm.serializeObject();
9161
9162    oFormData['action']           = 'ctl-wp-studio';
9163    oFormData['execute']          = 'ctl-php-block';        
9164    oFormData['extension-action'] = 'save-daemon-settings';      
9165
9166    let idLoading = g_oCTLWPStudio.showLoading("");
9167
9168    jQuery.ajax({
9169        url : g_oCTLWPStudio._oLangCommon["ajaxurl"],
9170        type: "POST",
9171        data : oFormData,
9172        cache: false,
9173        method: 'POST',
9174        success:function(response, textStatus, jqXHR){				
9175            var oResponse = jQuery.parseJSON(response);
9176            
9177            if( oResponse.res === false ){
9178                g_oCTLWPStudio.closeDlg(idLoading);
9179                if ( oResponse.alert ){
9180                    alert(oResponse.alert);
9181                }else{
9182                    alert(g_oCTLWPStudio._oLangCommon["Ooops! Something Went Wrong!"]);  
9183                }           
9184            }else{  
9185                if ( oResponse.to_be_restarted ){
9186                    g_oCTLWPStudio.closeDlg(idLoading);
9187                    
9188                    g_oCTLBootstrapModals.alert(
9189                        oResponse.title,
9190                        oResponse.html,
9191                        ()=> {
9192                            g_oCTLWPStudio.showLoading("");
9193                            window.location.reload();
9194                        }
9195                    );
9196                }else{
9197                    window.location.reload();
9198                }
9199
9200                
9201            }
9202        },
9203        error: function(jqXHR, textStatus, errorThrown){
9204            g_oCTLWPStudio.closeDlg(idLoading);
9205            alert(g_oCTLWPStudio._oLangCommon["Ooops! Something Went Wrong!"]);  
9206        }
9207    });  
9208}
9209
9210function stopJavaDaemon(){
9211
9212    var oFormData  = {};
9213
9214    oFormData['action']           = 'ctl-wp-studio';
9215    oFormData['execute']          = 'ctl-php-block';        
9216    oFormData['extension-action'] = 'stop-java-daemon';      
9217    oFormData['daemon-id']        = jQuery(this).val();
9218
9219    let idLoading = g_oCTLWPStudio.showLoading("");
9220
9221    jQuery.ajax({
9222        url : g_oCTLWPStudio._oLangCommon["ajaxurl"],
9223        type: "POST",
9224        data : oFormData,
9225        cache: false,
9226        method: 'POST',
9227        success:function(response, textStatus, jqXHR){				
9228            var oResponse = jQuery.parseJSON(response);
9229
9230            if( oResponse.res === false ){
9231                g_oCTLWPStudio.closeDlg(idLoading);
9232                if ( oResponse.alert ){
9233                    alert(oResponse.alert);
9234                }else{
9235                    alert(g_oCTLWPStudio._oLangCommon["Ooops! Something Went Wrong!"]);  
9236                }           
9237            }else{  
9238                __changeDaemonStatusButton(oFormData['daemon-id'], false);
9239                g_oCTLWPStudio.closeDlg(idLoading);
9240                //window.location.reload();
9241            }
9242        },
9243        error: function(jqXHR, textStatus, errorThrown){
9244            g_oCTLWPStudio.closeDlg(idLoading);
9245            alert(g_oCTLWPStudio._oLangCommon["Ooops! Something Went Wrong!"]);  
9246        }
9247    });  
9248}
9249
9250function startJavaDaemon(){
9251    var oFormData  = {};
9252
9253    oFormData['action']           = 'ctl-wp-studio';
9254    oFormData['execute']          = 'ctl-php-block';        
9255    oFormData['extension-action'] = 'start-java-daemon';      
9256    oFormData['daemon-id']        = jQuery(this).val();
9257
9258    let idLoading = g_oCTLWPStudio.showLoading("");
9259
9260    jQuery.ajax({
9261        url : g_oCTLWPStudio._oLangCommon["ajaxurl"],
9262        type: "POST",
9263        data : oFormData,
9264        cache: false,
9265        method: 'POST',
9266        success:function(response, textStatus, jqXHR){				
9267            var oResponse = jQuery.parseJSON(response);
9268
9269            if( oResponse.res === false ){
9270                g_oCTLWPStudio.closeDlg(idLoading);
9271                if ( oResponse.alert ){
9272                    alert(oResponse.alert);
9273                }else{
9274                    alert(g_oCTLWPStudio._oLangCommon["Ooops! Something Went Wrong!"]);  
9275                }           
9276            }else{  
9277                //window.location.reload();
9278                __changeDaemonStatusButton(oFormData['daemon-id'], true);
9279                g_oCTLWPStudio.closeDlg(idLoading);
9280                //jQuery(".ctl-vulcano-java-daemon-handler-container .ctl-java-daemon-stop[value='"+oFormData['daemon-id']+"']");
9281            }
9282        },
9283        error: function(jqXHR, textStatus, errorThrown){
9284            g_oCTLWPStudio.closeDlg(idLoading);
9285            alert(g_oCTLWPStudio._oLangCommon["Ooops! Something Went Wrong!"]);  
9286        }
9287    });  
9288}
9289
9290function __changeDaemonStatusButton(idButton, bRunning){
9291    let oNodeButton = jQuery(".ctl-daemon-edit-action-toggle-status-"+idButton);
9292    let szIconStop = oNodeButton.data("icon-off");
9293    let szIconStart = oNodeButton.data("icon-on");
9294    if(bRunning){
9295        let szIcon = oNodeButton.data("icon-on");
9296        let szButtonTitle = oNodeButton.data("toggle-on");
9297        oNodeButton.removeClass("ctl-java-daemon-start").addClass("ctl-java-daemon-stop");
9298        oNodeButton.find("i").removeClass(szIconStart).addClass(szIconStop);
9299        oNodeButton.find("span").text(szButtonTitle);
9300        oNodeButton.data("status", "running");
9301    }else{
9302        
9303        let szButtonTitle = oNodeButton.data("toggle-off");
9304        oNodeButton.removeClass("ctl-java-daemon-stop").addClass("ctl-java-daemon-start");
9305        oNodeButton.find("i").removeClass(szIconStop).addClass(szIconStart);
9306        oNodeButton.find("span").text(szButtonTitle);
9307        oNodeButton.data("status", "stopped");
9308    }
9309}
9310// file: /var/www/vhosts/codethislab.com/httpdocs/wp-content/plugins/ctl-wp-studio/classes/extensions/ctl-scroll-top/php/../js/commons.js
9311var g_bCtlScrollTopAnimation = false;
9312
9313jQuery(window).ready(function(){ 
9314   
9315    jQuery(document).on("click", ".ctl-scroll-top-scroll-button", function(){
9316        g_bCtlScrollTopAnimation = true;
9317        ctlScrollTopFadeOut();
9318        g_oCTLWPStudio.scrollToTop(ctlScrollTopEndAnimation,window);        
9319    });
9320    
9321    ctlScrollTopUpdateScrollButton(); 
9322});
9323
9324jQuery(window).resize(function () {
9325    ctlScrollTopUpdateScrollButton();
9326});
9327
9328jQuery(window).scroll(function () {
9329    ctlScrollTopUpdateScrollButton();
9330});
9331
9332function ctlScrollTopEndAnimation(){
9333    g_bCtlScrollTopAnimation = false;
9334}
9335
9336function ctlScrollTopFadeIn(){
9337    jQuery(".ctl-scroll-top-scroll-button").addClass("ctl-scroll-top-fade-in");
9338}
9339
9340function ctlScrollTopFadeOut(){
9341    jQuery(".ctl-scroll-top-scroll-button").removeClass("ctl-scroll-top-fade-in");
9342}
9343
9344function ctlScrollTopUpdateScrollButton(){
9345    
9346    if(g_bCtlScrollTopAnimation === true){
9347        return;
9348    }
9349    
9350    var iCurScroll = jQuery(window).scrollTop();
9351
9352    if( iCurScroll > parseInt(jQuery(".ctl-scroll-top-scroll-button").attr("data-min-scroll")) ){
9353        ctlScrollTopFadeIn();
9354    }else{
9355        ctlScrollTopFadeOut();
9356    }  
9357}
9358// file: /var/www/vhosts/codethislab.com/httpdocs/wp-content/plugins/ctl-wp-studio/classes/extensions/ctl-theme-wp-widgets/php/../js/front.js
9359jQuery(document).ready(function(){    
9360    jQuery('.ctlwpmenu-collapsible .dropright').hover(function() {
9361      jQuery(this).find('.dropdown-menu').first().stop(true, true).delay(0).fadeIn(200);
9362    }, function() {
9363      jQuery(this).find('.dropdown-menu').first().stop(true, true).delay(100).fadeOut(200);
9364    });  
9365
9366    if ( jQuery("body").hasClass("page")){
9367      jQuery(".menu-item-page-active").each(function(){
9368        var oNodeCollapsible = jQuery(this).closest(".ctlwpmenu-collapsible");
9369        if ( oNodeCollapsible.length > 0 ){
9370          oNodeCollapsible.closest(".menu-item").find(".expandable").click();
9371        }
9372      });
9373    }
9374});
9375// file: /var/www/vhosts/codethislab.com/httpdocs/wp-content/plugins/ctl-wp-studio/classes/extensions/ctl-user-roles/php/../js/front.js
9376jQuery(document).ready(function(){
9377    
9378    jQuery(document).on("click", ".ctl-user-roles-action-switch-user", function(){
9379        ctlUserRolesSwitchUser(jQuery(this));
9380    });
9381
9382    if( jQuery(".ctl-user-roles-login-tabs .nav-tabs").length > 0 ){
9383        jQuery(".ctl-user-roles-login-tabs .nav-tabs").find(".nav-item").first().click();
9384    }
9385
9386    jQuery(".ctl-user-roles-login-wrapper input").on('keyup', function (e) {
9387        if (e.keyCode === 13) {
9388            jQuery(this).blur();
9389            ctlUserRolesTryLogin( jQuery(this).closest(".ctl-user-roles-login-wrapper").find("form") );   
9390        }
9391    });     
9392        
9393    jQuery(document).on( "click", ".ctl-user-role-action-change-role", function(){        
9394        ctlUserRolesListRolesAndShowChangeRoleDialog(true);
9395    }); 
9396
9397    jQuery(document).on( "click", ".ctl-user-roles-action-login", function(){        
9398        ctlUserRolesTryLogin( jQuery(this).closest(".ctl-user-roles-login-wrapper").find("form") );           
9399    }); 
9400    
9401    jQuery(document).on( "click", ".ctl-user-roles-action-logout", function(e){  
9402		e.preventDefault();
9403        ctlUserRolesLogout();           
9404    });           
9405});
9406
9407function ctlUserRolesLogout(){
9408    
9409    var oFormData = {};    
9410    oFormData["action"]  = "ctl-wp-studio";
9411    oFormData["execute"] = "ctl-user-roles";    
9412    oFormData['extension-action'] = "logout";  
9413
9414    var idLoading = g_oCTLWPStudio.showLoading("");    
9415    jQuery.post(
9416        ctl_wp_studio_common_localization["ajaxurl"], oFormData ).done(
9417        function(response){           
9418            var oResult = JSON.parse(response);
9419
9420            if ( oResult.redirect ){
9421                window.location.href = oResult.redirect;
9422            }else{
9423                g_oCTLWPStudio.closeDlg(idLoading); 
9424            }
9425
9426        }).fail( function(){
9427            g_oCTLWPStudio.closeDlg(idLoading);
9428            alert(ctl_wp_studio_common_localization["Error"]);
9429        });
9430}
9431
9432function ctlUserRolesSwitchUser( oNodeButton ){
9433
9434    var oNodeForm = oNodeButton.closest("form");
9435    var oFormData = oNodeForm.serializeObject();
9436
9437    oFormData["action"]  = "ctl-wp-studio";
9438    oFormData["execute"] = "ctl-user-roles";    
9439    oFormData['extension-action'] = "switch-user";  
9440
9441    var idLoading = g_oCTLWPStudio.showLoading("");    
9442    jQuery.post(
9443        ctl_wp_studio_common_localization["ajaxurl"], oFormData ).done(
9444        function(response){           
9445            var oResult = JSON.parse(response);
9446
9447            if ( oResult.res == false ){
9448                g_oCTLWPStudio.closeDlg(idLoading);
9449                if ( oResult.redirect ){
9450                    g_oCTLWPStudio.showLoading("");    
9451                    window.location.href = oResult.redirect;
9452                }else if(oResult.desc){
9453                    alert(oResult.desc);
9454                }
9455            }else{
9456                if ( oResult.redirect ){
9457                    window.location.href = oResult.redirect;
9458                }
9459            }
9460        }).fail( function(){
9461            g_oCTLWPStudio.closeDlg(idLoading);
9462            alert(ctl_wp_studio_common_localization["Error"]);
9463        });    
9464}
9465
9466function ctlUserRolesListRolesAndShowChangeRoleDialog( bClose ){
9467    var oFormData = {};    
9468    oFormData["limit-extensions"] = [ "ctl-user-roles" ];
9469    oFormData["action"]  = "ctl-wp-studio";
9470    oFormData["execute"] = "ctl-user-roles";    
9471    oFormData['extension-action'] = "list-user-roles-urls";  
9472
9473    var idLoading = g_oCTLWPStudio.showLoading("");    
9474    jQuery.post(
9475        ctl_wp_studio_common_localization["ajaxurl"], oFormData ).done(
9476        function(response){           
9477
9478            g_oCTLWPStudio.closeDlg(idLoading);
9479
9480            var oResult = JSON.parse(response);
9481
9482            if ( oResult.res == false ){
9483                if ( oResult.redirect ){
9484                    g_oCTLWPStudio.showLoading("");    
9485                    window.location.href = oResult.redirect;
9486                }else if(oResult.desc){
9487                    alert(oResult.desc);
9488                }
9489            }else{
9490                if ( oResult.redirect ){
9491                    ctlUserRolesShowChangeRoleDialog(
9492                        oResult.redirect, 
9493                        bClose, oResult['label-change-role-modal']);
9494                }
9495            }
9496
9497        }).fail( function(){
9498            g_oCTLWPStudio.closeDlg(idLoading);
9499            alert(ctl_wp_studio_common_localization["Error"]);
9500        });
9501}
9502
9503function ctlUserRolesShowChangeRoleDialog( aRedirect, bClose, szModalTitle ){
9504    if ( aRedirect && aRedirect.length > 1 ){
9505        var html = '';
9506        html += '<div class="w-100">';
9507            html += '<div class="row mb-n3">';
9508                for( var i = 0; i < aRedirect.length; i++ ){
9509                    html += '<div class="col col-12 col-md-6 mb-3">';
9510                        if (g_bEnablePageAjaxLoading){
9511                            html += '<div data-page-id="' + aRedirect[i]["page-id"] + '" data-href="'+
9512                            aRedirect[i].url +
9513                            '" class="d-flex align-items-center justify-content-center ctl-ajax-loading-page btn btn-primary w-100 h-100 btn-action-close-modal">';
9514                                html += aRedirect[i].label;    
9515                            html += '</div>';
9516                        }else{
9517                            html += '<a target="_self" href="'+
9518                            aRedirect[i].url +
9519                            '" class="d-flex align-items-center justify-content-center btn btn-primary w-100 h-100 btn-action-close-modal ctl-show-loading">';
9520                                html += aRedirect[i].label;    
9521                            html += '</a>';
9522                        }
9523                    html += '</div>';
9524                }        
9525            html += '</div>';        
9526        html += '</div>';
9527
9528        var oModalData = { 
9529            modal_title        : szModalTitle,
9530            modal_content      : html,
9531            position           : "centered",
9532            entrance_animation : "animate__slideInUp",
9533            exit_animation     : "animate__slideOutDown",
9534        };
9535
9536        if ( !bClose ){
9537            oModalData["closeable"]        = false;
9538            oModalData["footer_btn_close"] = false;
9539        }
9540
9541        g_oCTLBootstrapModals.showModal(oModalData);                    
9542
9543    }else{
9544        g_oCTLWPStudio.showLoading("");
9545        window.location.href = aRedirect[0].url;
9546    }
9547}
9548
9549function ctlUserRolesTryLogin( oNodeForm ){
9550    
9551    if ( !ctlFormFieldsCheckIfFormIsFilled(oNodeForm) ){
9552        return;
9553    }
9554    
9555    ctlFormFieldsCleanErrors(oNodeForm);
9556    
9557    var oFormData = oNodeForm.serializeObject();    
9558    oFormData["action"]  = "ctl-wp-studio";
9559    oFormData["execute"] = "ctl-user-roles";    
9560    oFormData['extension-action'] = "try-login";    
9561    
9562    var idLoading = g_oCTLWPStudio.showLoading("");    
9563    jQuery.post(
9564        ctl_wp_studio_common_localization["ajaxurl"], oFormData ).done(
9565        function(response){           
9566            var oResult = JSON.parse(response);
9567
9568            if ( oResult.res === false ){
9569                var bReload = false;
9570                if ( oResult.errors && oResult.errors.length > 0 ){
9571                    
9572                    ctlFormFieldsApplyErrors( oNodeForm, oResult.errors);
9573                    
9574                    var szDialogMessages = "";
9575                    for( var i = 0; i < oResult.errors.length; i++ ){
9576                        var oError = oResult.errors[i];
9577                        if( !oError.name ){    
9578                            szDialogMessages += '<p>'+ oError.desc + "</p>";
9579                            if ( oError.code === "invalid_nonce" ){
9580                                bReload = true;
9581                            }
9582                        }
9583                    }
9584
9585                    if ( szDialogMessages !== "" ){
9586                        var oModalConfig = {
9587                            wrapper_classes : "ctl-quick-login-modal-errors",
9588                            modal_content : szDialogMessages,
9589                            button_close_title : g_oCTLUserRolesLocalizationFront['Continue'],
9590                            button_close_class : "btn-primary", 
9591                            position : "centered",
9592                            closeable : false
9593                        };
9594                        
9595                        if ( bReload ){
9596                            oModalConfig["button_close_class"] += ' btn-refresh-page';
9597                            oModalConfig["button_close_title"] = g_oCTLUserRolesLocalizationFront['Reload the page'];
9598                        }
9599                        
9600                        g_oCTLBootstrapModals.showModal(oModalConfig);                     
9601                    }
9602
9603                    g_oCTLWPStudio.closeDlg(idLoading); 
9604                }                
9605            }
9606   
9607            if ( oResult.redirect ){
9608                g_oCTLWPStudio.closeDlg(idLoading); 
9609                ctlUserRolesShowChangeRoleDialog(oResult.redirect, false, oResult['label-change-role-modal']);
9610            }else{
9611                g_oCTLWPStudio.closeDlg(idLoading); 
9612            }
9613
9614        }).fail( function(){
9615            g_oCTLWPStudio.closeDlg(idLoading);
9616            alert(ctl_wp_studio_common_localization["Error"]);
9617        });
9618}
9619// file: /var/www/vhosts/codethislab.com/httpdocs/wp-content/plugins/ctl-wp-studio/classes/extensions/ctl-justified-gallery/php/../js/jquery.justifiedGallery.min.js
vendor: 19,284 bytes, lines 9620-9627
9620/*!
9621 * justifiedGallery - v3.8.1
9622 * http://miromannino.github.io/Justified-Gallery/
9623 * Copyright (c) 2020 Miro Mannino
9624 * Licensed under the MIT license.
9625 */
9626
9627!function(e){"function"==typeof define&&define.amd?define(["jquery"],e):"object"==typeof module&&module.exports?module.exports=function(t,i){return void 0===i&&(i="undefined"!=typeof window?require("jquery"):require("jquery")(t)),e(i),i}:e(jQuery)}(function(l){var r=function(t,i){this.settings=i,this.checkSettings(),this.imgAnalyzerTimeout=null,this.entries=null,this.buildingRow={entriesBuff:[],width:0,height:0,aspectRatio:0},this.lastFetchedEntry=null,this.lastAnalyzedIndex=-1,this.yield={every:2,flushed:0},this.border=0<=i.border?i.border:i.margins,this.maxRowHeight=this.retrieveMaxRowHeight(),this.suffixRanges=this.retrieveSuffixRanges(),this.offY=this.border,this.rows=0,this.spinner={phase:0,timeSlot:150,$el:l('<div class="jg-spinner"><span></span><span></span><span></span></div>'),intervalId:null},this.scrollBarOn=!1,this.checkWidthIntervalId=null,this.galleryWidth=t.width(),this.$gallery=t};r.prototype.getSuffix=function(t,i){var e,s;for(e=i<t?t:i,s=0;s<this.suffixRanges.length;s++)if(e<=this.suffixRanges[s])return this.settings.sizeRangeSuffixes[this.suffixRanges[s]];return this.settings.sizeRangeSuffixes[this.suffixRanges[s-1]]},r.prototype.removeSuffix=function(t,i){return t.substring(0,t.length-i.length)},r.prototype.endsWith=function(t,i){return-1!==t.indexOf(i,t.length-i.length)},r.prototype.getUsedSuffix=function(t){for(var i in this.settings.sizeRangeSuffixes)if(this.settings.sizeRangeSuffixes.hasOwnProperty(i)){if(0===this.settings.sizeRangeSuffixes[i].length)continue;if(this.endsWith(t,this.settings.sizeRangeSuffixes[i]))return this.settings.sizeRangeSuffixes[i]}return""},r.prototype.newSrc=function(t,i,e,s){var n;if(this.settings.thumbnailPath)n=this.settings.thumbnailPath(t,i,e,s);else{var r=t.match(this.settings.extension),o=null!==r?r[0]:"";n=t.replace(this.settings.extension,""),n=this.removeSuffix(n,this.getUsedSuffix(n)),n+=this.getSuffix(i,e)+o}return n},r.prototype.showImg=function(t,i){this.settings.cssAnimation?(t.addClass("jg-entry-visible"),i&&i()):(t.stop().fadeTo(this.settings.imagesAnimationDuration,1,i),t.find(this.settings.imgSelector).stop().fadeTo(this.settings.imagesAnimationDuration,1,i))},r.prototype.extractImgSrcFromImage=function(t){var i=t.data("safe-src"),e="data-safe-src";return void 0===i&&(i=t.attr("src"),e="src"),t.data("jg.originalSrc",i),t.data("jg.src",i),t.data("jg.originalSrcLoc",e),i},r.prototype.imgFromEntry=function(t){var i=t.find(this.settings.imgSelector);return 0===i.length?null:i},r.prototype.captionFromEntry=function(t){var i=t.find("> .jg-caption");return 0===i.length?null:i},r.prototype.displayEntry=function(t,i,e,s,n,r){t.width(s),t.height(r),t.css("top",e),t.css("left",i);var o=this.imgFromEntry(t);if(null!==o){o.css("width",s),o.css("height",n),o.css("margin-left",-s/2),o.css("margin-top",-n/2);var a=o.data("jg.src");if(a){a=this.newSrc(a,s,n,o[0]),o.one("error",function(){this.resetImgSrc(o)});var h=function(){o.attr("src",a)};"skipped"===t.data("jg.loaded")&&a?this.onImageEvent(a,function(){this.showImg(t,h),t.data("jg.loaded",!0)}.bind(this)):this.showImg(t,h)}}else this.showImg(t);this.displayEntryCaption(t)},r.prototype.displayEntryCaption=function(t){var i=this.imgFromEntry(t);if(null!==i&&this.settings.captions){var e=this.captionFromEntry(t);if(null===e){var s=i.attr("alt");this.isValidCaption(s)||(s=t.attr("title")),this.isValidCaption(s)&&(e=l('<div class="jg-caption">'+s+"</div>"),t.append(e),t.data("jg.createdCaption",!0))}null!==e&&(this.settings.cssAnimation||e.stop().fadeTo(0,this.settings.captionSettings.nonVisibleOpacity),this.addCaptionEventsHandlers(t))}else this.removeCaptionEventsHandlers(t)},r.prototype.isValidCaption=function(t){return void 0!==t&&0<t.length},r.prototype.onEntryMouseEnterForCaption=function(t){var i=this.captionFromEntry(l(t.currentTarget));this.settings.cssAnimation?i.addClass("jg-caption-visible").removeClass("jg-caption-hidden"):i.stop().fadeTo(this.settings.captionSettings.animationDuration,this.settings.captionSettings.visibleOpacity)},r.prototype.onEntryMouseLeaveForCaption=function(t){var i=this.captionFromEntry(l(t.currentTarget));this.settings.cssAnimation?i.removeClass("jg-caption-visible").removeClass("jg-caption-hidden"):i.stop().fadeTo(this.settings.captionSettings.animationDuration,this.settings.captionSettings.nonVisibleOpacity)},r.prototype.addCaptionEventsHandlers=function(t){var i=t.data("jg.captionMouseEvents");void 0===i&&(i={mouseenter:l.proxy(this.onEntryMouseEnterForCaption,this),mouseleave:l.proxy(this.onEntryMouseLeaveForCaption,this)},t.on("mouseenter",void 0,void 0,i.mouseenter),t.on("mouseleave",void 0,void 0,i.mouseleave),t.data("jg.captionMouseEvents",i))},r.prototype.removeCaptionEventsHandlers=function(t){var i=t.data("jg.captionMouseEvents");void 0!==i&&(t.off("mouseenter",void 0,i.mouseenter),t.off("mouseleave",void 0,i.mouseleave),t.removeData("jg.captionMouseEvents"))},r.prototype.clearBuildingRow=function(){this.buildingRow.entriesBuff=[],this.buildingRow.aspectRatio=0,this.buildingRow.width=0},r.prototype.prepareBuildingRow=function(t,i){var e,s,n,r,o,a=!0,h=0,g=this.galleryWidth-2*this.border-(this.buildingRow.entriesBuff.length-1)*this.settings.margins,l=g/this.buildingRow.aspectRatio,u=this.settings.rowHeight,d=this.buildingRow.width/g>this.settings.justifyThreshold;if(i||t&&"hide"===this.settings.lastRow&&!d){for(e=0;e<this.buildingRow.entriesBuff.length;e++)s=this.buildingRow.entriesBuff[e],this.settings.cssAnimation?s.removeClass("jg-entry-visible"):(s.stop().fadeTo(0,.1),s.find("> img, > a > img").fadeTo(0,0));return-1}for(t&&!d&&"justify"!==this.settings.lastRow&&"hide"!==this.settings.lastRow&&(a=!1,0<this.rows&&(a=(u=(this.offY-this.border-this.settings.margins*this.rows)/this.rows)*this.buildingRow.aspectRatio/g>this.settings.justifyThreshold)),e=0;e<this.buildingRow.entriesBuff.length;e++)n=(s=this.buildingRow.entriesBuff[e]).data("jg.width")/s.data("jg.height"),o=a?(r=e===this.buildingRow.entriesBuff.length-1?g:l*n,l):(r=u*n,u),g-=Math.round(r),s.data("jg.jwidth",Math.round(r)),s.data("jg.jheight",Math.ceil(o)),(0===e||o<h)&&(h=o);return this.buildingRow.height=h,a},r.prototype.flushRow=function(t,i){var e,s,n,r=this.settings,o=this.border;if(s=this.prepareBuildingRow(t,i),i||t&&"hide"===r.lastRow&&-1===s)this.clearBuildingRow();else{if(this.maxRowHeight&&this.maxRowHeight<this.buildingRow.height&&(this.buildingRow.height=this.maxRowHeight),t&&("center"===r.lastRow||"right"===r.lastRow)){var a=this.galleryWidth-2*this.border-(this.buildingRow.entriesBuff.length-1)*r.margins;for(n=0;n<this.buildingRow.entriesBuff.length;n++)a-=(e=this.buildingRow.entriesBuff[n]).data("jg.jwidth");"center"===r.lastRow?o+=Math.round(a/2):"right"===r.lastRow&&(o+=a)}var h=this.buildingRow.entriesBuff.length-1;for(n=0;n<=h;n++)e=this.buildingRow.entriesBuff[this.settings.rtl?h-n:n],this.displayEntry(e,o,this.offY,e.data("jg.jwidth"),e.data("jg.jheight"),this.buildingRow.height),o+=e.data("jg.jwidth")+r.margins;this.galleryHeightToSet=this.offY+this.buildingRow.height+this.border,this.setGalleryTempHeight(this.galleryHeightToSet+this.getSpinnerHeight()),(!t||this.buildingRow.height<=r.rowHeight&&s)&&(this.offY+=this.buildingRow.height+r.margins,this.rows+=1,this.clearBuildingRow(),this.settings.triggerEvent.call(this,"jg.rowflush"))}};var i=0;r.prototype.rememberGalleryHeight=function(){i=this.$gallery.height(),this.$gallery.height(i)},r.prototype.setGalleryTempHeight=function(t){i=Math.max(t,i),this.$gallery.height(i)},r.prototype.setGalleryFinalHeight=function(t){i=t,this.$gallery.height(t)},r.prototype.checkWidth=function(){this.checkWidthIntervalId=setInterval(l.proxy(function(){if(this.$gallery.is(":visible")){var t=parseFloat(this.$gallery.width());Math.abs(t-this.galleryWidth)>this.settings.refreshSensitivity&&(this.galleryWidth=t,this.rewind(),this.rememberGalleryHeight(),this.startImgAnalyzer(!0))}},this),this.settings.refreshTime)},r.prototype.isSpinnerActive=function(){return null!==this.spinner.intervalId},r.prototype.getSpinnerHeight=function(){return this.spinner.$el.innerHeight()},r.prototype.stopLoadingSpinnerAnimation=function(){clearInterval(this.spinner.intervalId),this.spinner.intervalId=null,this.setGalleryTempHeight(this.$gallery.height()-this.getSpinnerHeight()),this.spinner.$el.detach()},r.prototype.startLoadingSpinnerAnimation=function(){var t=this.spinner,i=t.$el.find("span");clearInterval(t.intervalId),this.$gallery.append(t.$el),this.setGalleryTempHeight(this.offY+this.buildingRow.height+this.getSpinnerHeight()),t.intervalId=setInterval(function(){t.phase<i.length?i.eq(t.phase).fadeTo(t.timeSlot,1):i.eq(t.phase-i.length).fadeTo(t.timeSlot,0),t.phase=(t.phase+1)%(2*i.length)},t.timeSlot)},r.prototype.rewind=function(){this.lastFetchedEntry=null,this.lastAnalyzedIndex=-1,this.offY=this.border,this.rows=0,this.clearBuildingRow()},r.prototype.getSelectorWithoutSpinner=function(){return this.settings.selector+", div:not(.jg-spinner)"},r.prototype.getAllEntries=function(){var t=this.getSelectorWithoutSpinner();return this.$gallery.children(t).toArray()},r.prototype.updateEntries=function(t){var i;if(t&&null!=this.lastFetchedEntry){var e=this.getSelectorWithoutSpinner();i=l(this.lastFetchedEntry).nextAll(e).toArray()}else this.entries=[],i=this.getAllEntries();return 0<i.length&&(l.isFunction(this.settings.sort)?i=this.sortArray(i):this.settings.randomize&&(i=this.shuffleArray(i)),this.lastFetchedEntry=i[i.length-1],this.settings.filter?i=this.filterArray(i):this.resetFilters(i)),this.entries=this.entries.concat(i),!0},r.prototype.insertToGallery=function(t){var i=this;l.each(t,function(){l(this).appendTo(i.$gallery)})},r.prototype.shuffleArray=function(t){var i,e,s;for(i=t.length-1;0<i;i--)e=Math.floor(Math.random()*(i+1)),s=t[i],t[i]=t[e],t[e]=s;return this.insertToGallery(t),t},r.prototype.sortArray=function(t){return t.sort(this.settings.sort),this.insertToGallery(t),t},r.prototype.resetFilters=function(t){for(var i=0;i<t.length;i++)l(t[i]).removeClass("jg-filtered")},r.prototype.filterArray=function(t){var e=this.settings;if("string"===l.type(e.filter))return t.filter(function(t){var i=l(t);return i.is(e.filter)?(i.removeClass("jg-filtered"),!0):(i.addClass("jg-filtered").removeClass("jg-visible"),!1)});if(l.isFunction(e.filter)){for(var i=t.filter(e.filter),s=0;s<t.length;s++)-1===i.indexOf(t[s])?l(t[s]).addClass("jg-filtered").removeClass("jg-visible"):l(t[s]).removeClass("jg-filtered");return i}},r.prototype.resetImgSrc=function(t){"src"===t.data("jg.originalSrcLoc")?t.attr("src",t.data("jg.originalSrc")):t.attr("src","")},r.prototype.destroy=function(){clearInterval(this.checkWidthIntervalId),this.stopImgAnalyzerStarter(),l.each(this.getAllEntries(),l.proxy(function(t,i){var e=l(i);e.css("width",""),e.css("height",""),e.css("top",""),e.css("left",""),e.data("jg.loaded",void 0),e.removeClass("jg-entry jg-filtered jg-entry-visible");var s=this.imgFromEntry(e);s&&(s.css("width",""),s.css("height",""),s.css("margin-left",""),s.css("margin-top",""),this.resetImgSrc(s),s.data("jg.originalSrc",void 0),s.data("jg.originalSrcLoc",void 0),s.data("jg.src",void 0)),this.removeCaptionEventsHandlers(e);var n=this.captionFromEntry(e);e.data("jg.createdCaption")?(e.data("jg.createdCaption",void 0),null!==n&&n.remove()):null!==n&&n.fadeTo(0,1)},this)),this.$gallery.css("height",""),this.$gallery.removeClass("justified-gallery"),this.$gallery.data("jg.controller",void 0),this.settings.triggerEvent.call(this,"jg.destroy")},r.prototype.analyzeImages=function(t){for(var i=this.lastAnalyzedIndex+1;i<this.entries.length;i++){var e=l(this.entries[i]);if(!0===e.data("jg.loaded")||"skipped"===e.data("jg.loaded")){var s=this.galleryWidth-2*this.border-(this.buildingRow.entriesBuff.length-1)*this.settings.margins,n=e.data("jg.width")/e.data("jg.height");if(this.buildingRow.entriesBuff.push(e),this.buildingRow.aspectRatio+=n,this.buildingRow.width+=n*this.settings.rowHeight,this.lastAnalyzedIndex=i,s/(this.buildingRow.aspectRatio+n)<this.settings.rowHeight&&(this.flushRow(!1,0<this.settings.maxRowsCount&&this.rows===this.settings.maxRowsCount),++this.yield.flushed>=this.yield.every))return void this.startImgAnalyzer(t)}else if("error"!==e.data("jg.loaded"))return}0<this.buildingRow.entriesBuff.length&&this.flushRow(!0,0<this.settings.maxRowsCount&&this.rows===this.settings.maxRowsCount),this.isSpinnerActive()&&this.stopLoadingSpinnerAnimation(),this.stopImgAnalyzerStarter(),this.setGalleryFinalHeight(this.galleryHeightToSet),this.settings.triggerEvent.call(this,t?"jg.resize":"jg.complete")},r.prototype.stopImgAnalyzerStarter=function(){this.yield.flushed=0,null!==this.imgAnalyzerTimeout&&(clearTimeout(this.imgAnalyzerTimeout),this.imgAnalyzerTimeout=null)},r.prototype.startImgAnalyzer=function(t){var i=this;this.stopImgAnalyzerStarter(),this.imgAnalyzerTimeout=setTimeout(function(){i.analyzeImages(t)},.001)},r.prototype.onImageEvent=function(t,i,e){if(i||e){var s=new Image,n=l(s);i&&n.one("load",function(){n.off("load error"),i(s)}),e&&n.one("error",function(){n.off("load error"),e(s)}),s.src=t}},r.prototype.init=function(){var a=!1,h=!1,g=this;l.each(this.entries,function(t,i){var e=l(i),s=g.imgFromEntry(e);if(e.addClass("jg-entry"),!0!==e.data("jg.loaded")&&"skipped"!==e.data("jg.loaded"))if(null!==g.settings.rel&&e.attr("rel",g.settings.rel),null!==g.settings.target&&e.attr("target",g.settings.target),null!==s){var n=g.extractImgSrcFromImage(s);if(!1===g.settings.waitThumbnailsLoad||!n){var r=parseFloat(s.attr("width")),o=parseFloat(s.attr("height"));if("svg"===s.prop("tagName")&&(r=parseFloat(s[0].getBBox().width),o=parseFloat(s[0].getBBox().height)),!isNaN(r)&&!isNaN(o))return e.data("jg.width",r),e.data("jg.height",o),e.data("jg.loaded","skipped"),h=!0,g.startImgAnalyzer(!1),!0}e.data("jg.loaded",!1),a=!0,g.isSpinnerActive()||g.startLoadingSpinnerAnimation(),g.onImageEvent(n,function(t){e.data("jg.width",t.width),e.data("jg.height",t.height),e.data("jg.loaded",!0),g.startImgAnalyzer(!1)},function(){e.data("jg.loaded","error"),g.startImgAnalyzer(!1)})}else e.data("jg.loaded",!0),e.data("jg.width",e.width()|parseFloat(e.css("width"))|1),e.data("jg.height",e.height()|parseFloat(e.css("height"))|1)}),a||h||this.startImgAnalyzer(!1),this.checkWidth()},r.prototype.checkOrConvertNumber=function(t,i){if("string"===l.type(t[i])&&(t[i]=parseFloat(t[i])),"number"!==l.type(t[i]))throw i+" must be a number";if(isNaN(t[i]))throw"invalid number for "+i},r.prototype.checkSizeRangesSuffixes=function(){if("object"!==l.type(this.settings.sizeRangeSuffixes))throw"sizeRangeSuffixes must be defined and must be an object";var t=[];for(var i in this.settings.sizeRangeSuffixes)this.settings.sizeRangeSuffixes.hasOwnProperty(i)&&t.push(i);for(var e={0:""},s=0;s<t.length;s++)if("string"===l.type(t[s]))try{e[parseInt(t[s].replace(/^[a-z]+/,""),10)]=this.settings.sizeRangeSuffixes[t[s]]}catch(t){throw"sizeRangeSuffixes keys must contains correct numbers ("+t+")"}else e[t[s]]=this.settings.sizeRangeSuffixes[t[s]];this.settings.sizeRangeSuffixes=e},r.prototype.retrieveMaxRowHeight=function(){var t=null,i=this.settings.rowHeight;if("string"===l.type(this.settings.maxRowHeight))t=this.settings.maxRowHeight.match(/^[0-9]+%$/)?i*parseFloat(this.settings.maxRowHeight.match(/^([0-9]+)%$/)[1])/100:parseFloat(this.settings.maxRowHeight);else{if("number"!==l.type(this.settings.maxRowHeight)){if(!1===this.settings.maxRowHeight||null==this.settings.maxRowHeight)return null;throw"maxRowHeight must be a number or a percentage"}t=this.settings.maxRowHeight}if(isNaN(t))throw"invalid number for maxRowHeight";return t<i&&(t=i),t},r.prototype.checkSettings=function(){this.checkSizeRangesSuffixes(),this.checkOrConvertNumber(this.settings,"rowHeight"),this.checkOrConvertNumber(this.settings,"margins"),this.checkOrConvertNumber(this.settings,"border"),this.checkOrConvertNumber(this.settings,"maxRowsCount");var t=["justify","nojustify","left","center","right","hide"];if(-1===t.indexOf(this.settings.lastRow))throw"lastRow must be one of: "+t.join(", ");if(this.checkOrConvertNumber(this.settings,"justifyThreshold"),this.settings.justifyThreshold<0||1<this.settings.justifyThreshold)throw"justifyThreshold must be in the interval [0,1]";if("boolean"!==l.type(this.settings.cssAnimation))throw"cssAnimation must be a boolean";if("boolean"!==l.type(this.settings.captions))throw"captions must be a boolean";if(this.checkOrConvertNumber(this.settings.captionSettings,"animationDuration"),this.checkOrConvertNumber(this.settings.captionSettings,"visibleOpacity"),this.settings.captionSettings.visibleOpacity<0||1<this.settings.captionSettings.visibleOpacity)throw"captionSettings.visibleOpacity must be in the interval [0, 1]";if(this.checkOrConvertNumber(this.settings.captionSettings,"nonVisibleOpacity"),this.settings.captionSettings.nonVisibleOpacity<0||1<this.settings.captionSettings.nonVisibleOpacity)throw"captionSettings.nonVisibleOpacity must be in the interval [0, 1]";if(this.checkOrConvertNumber(this.settings,"imagesAnimationDuration"),this.checkOrConvertNumber(this.settings,"refreshTime"),this.checkOrConvertNumber(this.settings,"refreshSensitivity"),"boolean"!==l.type(this.settings.randomize))throw"randomize must be a boolean";if("string"!==l.type(this.settings.selector))throw"selector must be a string";if(!1!==this.settings.sort&&!l.isFunction(this.settings.sort))throw"sort must be false or a comparison function";if(!1!==this.settings.filter&&!l.isFunction(this.settings.filter)&&"string"!==l.type(this.settings.filter))throw"filter must be false, a string or a filter function"},r.prototype.retrieveSuffixRanges=function(){var t=[];for(var i in this.settings.sizeRangeSuffixes)this.settings.sizeRangeSuffixes.hasOwnProperty(i)&&t.push(parseInt(i,10));return t.sort(function(t,i){return i<t?1:t<i?-1:0}),t},r.prototype.updateSettings=function(t){this.settings=l.extend({},this.settings,t),this.checkSettings(),this.border=0<=this.settings.border?this.settings.border:this.settings.margins,this.maxRowHeight=this.retrieveMaxRowHeight(),this.suffixRanges=this.retrieveSuffixRanges()},r.prototype.defaults={sizeRangeSuffixes:{},thumbnailPath:void 0,rowHeight:120,maxRowHeight:!1,maxRowsCount:0,margins:1,border:-1,lastRow:"nojustify",justifyThreshold:.9,waitThumbnailsLoad:!0,captions:!0,cssAnimation:!0,imagesAnimationDuration:500,captionSettings:{animationDuration:500,visibleOpacity:.7,nonVisibleOpacity:0},rel:null,target:null,extension:/\.[^.\\/]+$/,refreshTime:200,refreshSensitivity:0,randomize:!1,rtl:!1,sort:!1,filter:!1,selector:"a",imgSelector:"> img, > a > img, > svg, > a > svg",triggerEvent:function(t){this.$gallery.trigger(t)}},l.fn.justifiedGallery=function(n){return this.each(function(t,i){var e=l(i);e.addClass("justified-gallery");var s=e.data("jg.controller");if(void 0===s){if(null!=n&&"object"!==l.type(n)){if("destroy"===n)return;throw"The argument must be an object"}s=new r(e,l.extend({},r.prototype.defaults,n)),e.data("jg.controller",s)}else if("norewind"===n);else{if("destroy"===n)return void s.destroy();s.updateSettings(n),s.rewind()}s.updateEntries("norewind"===n)&&s.init()})}});
9627
9628// file: /var/www/vhosts/codethislab.com/httpdocs/wp-content/plugins/ctl-wp-studio/classes/extensions/ctl-theme-bootstrap-breadcrumb/php/../js/front.js
9629jQuery(document).ready(function(){
9630
9631    window.addEventListener("orientationchange", function(){
9632        ctlThemeBootstrapBreadcrumbTabsHorizontalScrollCheck();
9633    }); 
9634
9635    jQuery(window).resize(function() {
9636        ctlThemeBootstrapBreadcrumbTabsHorizontalScrollCheck();
9637    });	 
9638
9639	ctlThemeBootstrapBreadcrumbTabsHorizontalScrollCheck();
9640});
9641
9642function ctlThemeBootstrapBreadcrumbTabsHorizontalScrollCheck(){
9643    jQuery(".breadcrumb").each(function(){
9644        if (this.scrollWidth > this.clientWidth){
9645			jQuery(this).scrollLeft(this.scrollWidth);
9646        }
9647    });  
9648}
9649// file: /var/www/vhosts/codethislab.com/httpdocs/wp-content/plugins/ctl-wp-studio/classes/extensions/ctl-vulcano-theme/php/../js/front.js
9650jQuery(window).on('load', function() { 
9651
9652    ctlVulcanoThemeUpdateSidebar();
9653    ctlVulcanoStartColAnimations();
9654    ctlVulcanoThemeUpdateSiteContent();
9655});
9656
9657jQuery(document).ready(function(){
9658
9659    ctlUpdateOnlineStatus();
9660    window.addEventListener('online',  ctlUpdateOnlineStatus);
9661    window.addEventListener('offline', ctlUpdateOnlineStatus);
9662
9663    const width  = window.innerWidth || 
9664    document.documentElement.clientWidth || 
9665    document.body.clientWidth;
9666
9667    if ( width < 992 ){
9668        setTimeout(function(){
9669            document.getElementsByTagName("body")[0].classList.add("layout-ready");
9670            jQuery("body").removeClass("stop-transitions");
9671        }, 300);
9672    }else{
9673        document.getElementsByTagName("body")[0].classList.add("layout-ready");
9674        jQuery("body").removeClass("stop-transitions");
9675    }
9676
9677
9678    if ( jQuery(".ctl-theme-section-dots-navigation").length > 0 ){
9679        var html = "";
9680        html += '<ul class="ctl-theme-section-dots-navigation-menu">';
9681
9682        var iCnt = 0;
9683        jQuery(".ctl-theme-section-dots-navigation").each(function(){
9684            html += '<li>';
9685                html += '<a class="ctl-scroll-to" href="#' + jQuery(this).attr("id") + '">';
9686                    html += '<i data-index="'+iCnt+'" class="ctl-wp-studio-icons-circle-empty"></i>';
9687                html += '</a>';
9688            html += '</li>';
9689            iCnt++;
9690        });
9691
9692        html += '</ul>';
9693        jQuery(".layout-site-content-inner").append(html);
9694    }
9695
9696
9697	jQuery(document).on('shown.bs.collapse', '.accordion .collapse', function () {    	
9698		ctlVulcanoResizeLayout(); 		
9699	});
9700	
9701	jQuery(document).on('hidden.bs.collapse', '.accordion .collapse', function () {
9702		ctlVulcanoResizeLayout(); 
9703	});    
9704
9705    jQuery(document).on("click", '.ctl-theme-section-dots-navigation-menu a', function(e){
9706        var oNodeIcon = jQuery(this).find("i");
9707
9708        if( oNodeIcon.hasClass("ctl-wp-studio-icons-dot-circled") ){
9709            oNodeIcon.removeClass("ctl-wp-studio-icons-dot-circled");
9710            oNodeIcon.addClass("ctl-wp-studio-icons-circle-empty");
9711        }else{
9712            oNodeIcon.removeClass("ctl-wp-studio-icons-circle-empty");
9713            oNodeIcon.addClass("ctl-wp-studio-icons-dot-circled");
9714        }
9715
9716        jQuery('.ctl-theme-section-dots-navigation-menu i').each(function(){
9717            if ( jQuery(this).attr("data-index") != oNodeIcon.attr("data-index") ){
9718                jQuery(this).removeClass("ctl-wp-studio-icons-dot-circled");
9719                jQuery(this).addClass("ctl-wp-studio-icons-circle-empty");
9720            }
9721        });
9722    });
9723
9724    jQuery(document).on("click", '.ctl-scroll-to', function(e){
9725        var oNodeAnchor = jQuery(this);
9726        var iOffsetTop = jQuery(oNodeAnchor.attr("href")).eq(0).offset().top;
9727    
9728        var iAddingOffset = 150;
9729        if ( jQuery("header").length > 0 ){
9730            iAddingOffset = Math.floor(jQuery("header").outerHeight());
9731        }
9732
9733        jQuery("body").addClass("scroll-to-animating");
9734
9735        if( oNodeAnchor.closest(".modal").length > 0 ){
9736            iOffsetTop -= jQuery('.modal-body').offset().top;
9737            jQuery('.modal-body').animate({ scrollTop: iOffsetTop }, 'slow', function(){
9738                jQuery("body").removeClass("scroll-to-animating");
9739                ctlVulcanoUpdateDotsMenu();
9740            });    
9741        }else{
9742            iOffsetTop -= iAddingOffset;
9743            jQuery('html,body').animate({ scrollTop: iOffsetTop }, 'slow', function(){
9744                jQuery("body").removeClass("scroll-to-animating");
9745                ctlVulcanoUpdateDotsMenu();
9746            });    
9747        }      
9748    });
9749    
9750
9751    jQuery(document).on("mouseenter", 
9752			"body.layout-collapsible-menu-collapsed .layout-collapsible-menu", function(e){			
9753		jQuery("body").removeClass("layout-collapsible-menu-collapsed");			
9754		ctlVulcanoResizeLayout();	
9755    });
9756	
9757    jQuery(document).on("mouseleave", ".layout-collapsible-menu", function(e){				
9758		if ( !jQuery("body").hasClass("layout-collapsible-menu-collapsed") &&
9759										   	 jQuery("body").hasClass("bp-up-to-md") ){
9760			jQuery("body").addClass("layout-collapsible-menu-collapsed");
9761			ctlVulcanoResizeLayout();	
9762		}
9763    });	
9764	
9765    jQuery(window).scroll(function(){ 
9766        ctlVulcanoStartColAnimations();
9767        ctlVulcanoThemeUpdateSidebar();
9768        ctlVulcanoUpdateDotsMenu();
9769    });
9770
9771    jQuery(document).on("click", ".ctl-ajax-loading-page", function(e){
9772        e.preventDefault();
9773
9774        if (window.location.href == jQuery(this).attr("data-href") ){
9775            return;
9776        }
9777
9778        var oNodeButton = jQuery(this);
9779        var idDialog = g_oCTLWPStudio.showLoading();  
9780
9781        var oFormData = {};
9782        oFormData["action"]  = 'ctl-wp-studio';
9783        oFormData["execute"] = 'ctl-vulcano-theme'; 
9784        oFormData["extension-action"] = 'print-layout';
9785        oFormData["layout-id"] = jQuery(this).attr("data-layout-id");
9786        oFormData["page-id"] = jQuery(this).attr("data-page-id");
9787        oFormData["page-url"] = jQuery(this).attr("data-href");
9788
9789        jQuery.post(
9790            g_oCTLWPStudio._oLangCommon["ajaxurl"], oFormData      
9791        ).done( function(response){
9792            var oResponse = jQuery.parseJSON(response);
9793            g_oCTLWPStudio.closeDlg(idDialog);
9794            if( oResponse.res === false ){                                      
9795                g_oCTLWPStudio.closeDlg(idDialog);
9796                if ( oResponse.desc ){                           
9797                    g_oCTLBootstrapModals.alert("Attenzione", oResponse.desc);
9798                }else{
9799                    alert(g_oCTLWPStudio._oLangCommon["Ooops! Something Went Wrong!"]);
9800                }
9801            }else{
9802                var html = Base64.decode(oResponse.html);
9803                jQuery(".layout-site-content-outer").remove();
9804                jQuery("body").prepend(html);
9805                window.history.pushState(oResponse.title, "", oNodeButton.attr("data-href"));
9806                document.title = oResponse.title;
9807
9808                g_oCTLWPStudio.applyChromaCorrection();
9809                wpdk_do_action("ctl-theme-bootstrap-modals-show-modal", jQuery(".layout-site-content-outer") );
9810                ctlVulcanoResizeLayout();
9811            }            
9812        }).fail( function(){    
9813            g_oCTLWPStudio.closeDlg(idDialog);
9814            alert(g_oCTLWPStudio._oLangCommon["Ooops! Something Went Wrong!"]);
9815        });  
9816    });
9817
9818    jQuery(document).on("click", ".ctl-vulcano-theme-sidebar-toggle", function(e){
9819        e.preventDefault();
9820
9821        jQuery("body").toggleClass("layout-collapsible-menu-collapsed");
9822        ctlVulcanoResizeLayout();
9823    });
9824
9825    jQuery(document).on("mouseleave", ".layout-mega-menu", function(e){
9826        var oNodeNavLink = jQuery(this).closest("li");
9827        oNodeNavLink.removeClass("show-mega-menu");
9828    });
9829
9830    jQuery(document).on("click", "header .navbar .nav-link", function(e){
9831
9832        var idMenuItem = jQuery(this).closest("li").attr("id");
9833
9834		if ( jQuery(this).find(".open-mega-menu").length > 0 ){
9835			e.preventDefault();
9836		}
9837		
9838        jQuery(".open-mega-menu").each(function(){
9839            var oNodeMenuItem = jQuery(this).closest("li");
9840            if ( idMenuItem === oNodeMenuItem.attr("id")){
9841                oNodeMenuItem.toggleClass("show-mega-menu");
9842            }else{
9843                oNodeMenuItem.removeClass("show-mega-menu");
9844            }
9845        });
9846    });
9847	
9848    jQuery(document).on("mouseover", "header .navbar .nav-link", function(e){
9849        var idMenuItem = jQuery(this).closest("li").attr("id");
9850        jQuery(".open-mega-menu").each(function(){
9851            var oNodeMenuItem = jQuery(this).closest("li");
9852            if ( idMenuItem === oNodeMenuItem.attr("id")){
9853                oNodeMenuItem.addClass("show-mega-menu");
9854            }else{
9855                oNodeMenuItem.removeClass("show-mega-menu");
9856            }
9857        });
9858    });	
9859
9860    var oNodeLayout = jQuery("body").find(".layout");
9861    if( oNodeLayout.length === 0 ){
9862        jQuery(".ctlthemelayout-action-edit-layout").remove();
9863        return;
9864    }    
9865    
9866    jQuery(document).on( "click", ".ctlthemelayout-action-edit-layout", function(e){
9867        
9868       e.preventDefault();
9869       e.stopPropagation();
9870
9871       var oNodeLayout = jQuery("body").find(".layout-site-content-inner");
9872
9873        var id = null;
9874
9875        if ( oNodeLayout.length > 0 ){
9876            id = oNodeLayout.attr("data-layout-id");
9877        }
9878        
9879        if (id === null){
9880            oNodeLayout = jQuery("body").find(".layout");
9881            if ( oNodeLayout.length > 0 ){
9882                oNodeLayout = oNodeLayout.first();
9883                id = oNodeLayout.attr("data-layout-id");            
9884            }
9885        }
9886
9887        if (id === null){
9888            return;
9889        } 
9890
9891
9892       var szAdminUrl = jQuery(this).find("span").attr("data-admin-url");
9893       window.location.href= szAdminUrl + "post.php?post="+id+"&action=edit";
9894       
9895    });
9896    
9897	
9898    window.addEventListener("orientationchange", function(){
9899        ctlVulcanoApplyBreakpointClass();
9900		ctlVulcanoResizeSidebar();
9901        ctlVulcanoResizeLayout();
9902    });
9903    window.addEventListener("touchmove", function(){
9904        ctlVulcanoThemeUpdateSidebar(); 
9905    });    
9906    jQuery(window).resize(function() {
9907        ctlVulcanoApplyBreakpointClass();
9908		ctlVulcanoResizeSidebar();
9909        ctlVulcanoResizeLayout();
9910    });	   
9911
9912    wpdk_add_action("ctl-vulcano-theme-resize-layout", function(){    
9913        ctlVulcanoResizeLayout();
9914    });    
9915
9916    ctlVulcanoApplyBreakpointClass();
9917    ctlVulcanoResizeSidebar();
9918    ctlVulcanoResizeLayout();
9919});
9920
9921
9922function __ctlVulcanoResizeLayout(){
9923    vhCheck();    
9924	ctlVulcanoThemeUpdateSidebar();
9925    ctlVulcanoThemeUpdateSiteContent(); 
9926	ctlVulcanoInitColAnimations(); 	
9927    ctlVulcanoStartColAnimations();
9928    ctlVulcanoUpdateDotsMenu();  
9929
9930    wpdk_do_action("on_ctl-vulcano-theme-resize-layout");   
9931}
9932
9933function ctlVulcanoResizeLayout(){
9934
9935    __ctlVulcanoResizeLayout();
9936    
9937    setTimeout(function(){
9938        __ctlVulcanoResizeLayout();
9939    }, 350);
9940}
9941
9942function ctlVulcanoUpdateDotsMenu(){
9943    // fixfix
9944
9945    if (jQuery("body").hasClass("scroll-to-animating")){
9946        return;
9947    }
9948
9949    if ( jQuery(".ctl-theme-section-dots-navigation").length == 0 ){
9950        return;
9951    }
9952
9953    var idVisibileSection = null;
9954    var iCnt = 0;
9955    jQuery(".ctl-theme-section-dots-navigation").each(function(){
9956        var oNodeSection = jQuery(this);
9957        if ( ctlVulcanoThemeCalculateVisibilityForDiv(oNodeSection) > 0 ){
9958            idVisibileSection = iCnt;
9959        }
9960        iCnt++;
9961    });
9962
9963    jQuery('.ctl-theme-section-dots-navigation-menu i').each(function(){
9964        if ( jQuery(this).attr("data-index") == idVisibileSection ){
9965            jQuery(this).removeClass("ctl-wp-studio-icons-circle-empty");
9966            jQuery(this).addClass("ctl-wp-studio-icons-dot-circled");
9967        }else{
9968            jQuery(this).removeClass("ctl-wp-studio-icons-dot-circled");
9969            jQuery(this).addClass("ctl-wp-studio-icons-circle-empty");
9970        }
9971    });
9972}
9973
9974function ctlVulcanoThemeUpdateSiteContent(){
9975    var oNodeSiteContent = jQuery(".layout-site-content-automatic-margin-top");
9976
9977    if (oNodeSiteContent.length === 0 ){
9978        return;
9979    }
9980
9981    var fHeaderVisibility = 0;
9982    var fHeaderOffset     = 0;
9983
9984    if ( jQuery("header").length > 0 && jQuery("header").css("position") === "fixed" ){
9985        fHeaderVisibility += jQuery("header").outerHeight();
9986        fHeaderOffset += jQuery("header").position().top;
9987    }
9988    fHeaderOffset = 0;
9989    oNodeSiteContent.css("margin-top", (fHeaderVisibility+fHeaderOffset)+ "px")
9990}
9991
9992function ctlVulcanoThemeLoadLayout( idLayout, cb, cbOwner, aGetParams = {}, aPostParams = {} ){
9993    var idDialog = g_oCTLWPStudio.showLoading();  
9994
9995    var oFormData = {};
9996    oFormData["action"]  = 'ctl-wp-studio';
9997    oFormData["execute"] = 'ctl-vulcano-theme'; 
9998    oFormData["extension-action"] = 'get-layout';
9999    oFormData["layout-id"]   = idLayout;
10000    oFormData["get-params"]  = aGetParams;
10001    oFormData["post-params"] = aPostParams;
10002
10003    jQuery.post(
10004        g_oCTLWPStudio._oLangCommon["ajaxurl"], oFormData      
10005    ).done( function(response){
10006        var oResponse = jQuery.parseJSON(response);
10007        g_oCTLWPStudio.closeDlg(idDialog);
10008        if( oResponse.res === false ){                                      
10009            g_oCTLWPStudio.closeDlg(idDialog);
10010            if ( oResponse.desc ){                           
10011                g_oCTLBootstrapModals.alert("Attenzione", oResponse.desc);
10012            }else{
10013                alert(g_oCTLWPStudio._oLangCommon["Ooops! Something Went Wrong!"]);
10014            }
10015        }else{
10016            var html = Base64.decode(oResponse.html);            
10017            cb.call( cbOwner, html );
10018            g_oCTLWPStudio.applyChromaCorrection();
10019            ctlVulcanoResizeLayout();
10020        }
10021        
10022    }).fail( function(){    
10023        g_oCTLWPStudio.closeDlg(idDialog);
10024        alert(g_oCTLWPStudio._oLangCommon["Ooops! Something Went Wrong!"]);
10025    });  
10026}
10027
10028function ctlVulcanoResizeSidebar(){
10029    if ( jQuery(".layout-sidebar-menu").length > 0 ){
10030        if ( jQuery("body.bp-up-to-md").length > 0 ){
10031            jQuery("body").addClass("layout-collapsible-menu-collapsed");
10032        }else{
10033            jQuery("body").removeClass("layout-collapsible-menu-collapsed");
10034        }	        
10035        jQuery("body").addClass("layout-sidebar-active");
10036    }
10037}
10038
10039function ctlVulcanoThemeUpdateSidebar(){
10040    var fSidebarOffset        = 0;
10041    var fHeaderVisibility     = 0;
10042    var fHeaderOffset         = 0;
10043    var fFooterVisibility     = 0;
10044	
10045    if ( jQuery("header").length > 0 && jQuery("header").css("position") === "fixed" ){
10046        fHeaderVisibility += jQuery("header").outerHeight();
10047        fHeaderOffset += jQuery("header").position().top;
10048    }
10049
10050    if ( jQuery("footer").length > 0 ){
10051        if ( jQuery("footer").css("position") === "fixed"){
10052            fFooterVisibility = jQuery("footer").outerHeight();
10053        }else{
10054            fFooterVisibility = ctlVulcanoThemeCalculateVisibilityForDiv(jQuery("footer"));
10055        }
10056    }    
10057
10058    if ( jQuery(".layout-menu-external").length == 0 ){
10059        if ( jQuery(window).width() < 576 ){
10060            fSidebarOffset = fHeaderVisibility + fHeaderOffset;
10061        }else{
10062            fSidebarOffset = fHeaderVisibility + fHeaderOffset + fFooterVisibility;
10063        }
10064    }else{
10065        if ( jQuery(window).width() < 576 ){
10066            fSidebarOffset = fHeaderOffset + fHeaderVisibility;
10067        }else{
10068            fSidebarOffset = fHeaderOffset;
10069        }
10070    }
10071
10072    document.querySelector(':root').style.setProperty('--vh-sidebar-offset', fSidebarOffset + 'px');
10073
10074	__ctlVulcanoThemeUpdateFooterBar();
10075}
10076
10077function __ctlVulcanoThemeUpdateFooterBar(){
10078	
10079	if ( jQuery(".layout-sidebar-menu").length == 0 ){
10080		return;
10081	}
10082
10083    if ( jQuery("body").hasClass("bp-xs") ){ 
10084		if ( jQuery(".layout-footer-menu").length == 0 ){
10085			var html = "";
10086			html += '<div class="layout-footer-menu d-flex fixed-bottom w-100 justify-content-around"></div>';
10087			jQuery("body").append(html);
10088			
10089			if(g_bCTLVulcanoThemeHistoryBackInMobileFooterMenuEnabled){
10090				// check if browser history is available
10091				if (window.history && window.history.pushState && window.history.length > 1 &&
10092					 ctl_wp_studio_common_localization["szHomeUrl"] != window.location.href ) {
10093
10094					var url = window.location.href;
10095					url = url.replace(ctl_wp_studio_common_localization["szHomeUrl"], "");
10096		
10096			var aUrlParts = url.split("/");
10097					var i = 0;
10098					while( i < aUrlParts.length ){
10099						if (aUrlParts[i] == ""){
10100							aUrlParts.splice(i,1);
10101						}else{	
10102							i++;
10103						}					
10104					}
10105
10106					if ( aUrlParts.length > 1 ){
10107						var html = '<a href="#" class="ctl-action-history-back mobile-footer-menu p-2 w-100 text-center" ><i class="ctl-wp-studio-icons-level-up menu-item-icon"></i><span class="menu-item-text w-100 text-center d-block m-0">' + g_oCTLVulcanoThemeLocalizationFront["Back"] + '</span></a>';
10108						jQuery(".layout-footer-menu").append(html);					
10109					}				
10110				}
10111			}
10112
10113            jQuery(".layout-sidebar-menu a.mobile-footer-menu").each(function(){
10114				var oNode = jQuery(this).clone();
10115
10116                // clean anchor
10117				//oNode.find(".menu-item-text").remove();	
10118				oNode.addClass("p-2");
10119                oNode.find(".menu-item-text").addClass("w-100");
10120                oNode.find(".menu-item-text").addClass("text-center");
10121                oNode.find(".menu-item-text").addClass("d-block");
10122                oNode.find(".menu-item-text").addClass("m-0");
10123                oNode.addClass("w-100");
10124				oNode.addClass("text-center");				
10125				oNode.removeClass("d-flex");
10126				oNode.removeClass("align-items-baseline");
10127                
10128				jQuery(".layout-footer-menu").append(oNode);
10129			});	
10130		
10131
10132			var iOffset = jQuery(".layout-footer-menu").outerHeight();
10133			
10134			jQuery(".ctl-scroll-top-scroll-button").css("margin-bottom", iOffset + "px");
10135            if ( jQuery("footer").length > 0 ){
10136			    jQuery("footer").css("margin-bottom", iOffset + "px");
10137            }       
10138            jQuery('.layout-site-content-outer').css("margin-bottom", iOffset + "px");     
10139		}
10140    }else if ( jQuery(".layout-footer-menu").length > 0 ){
10141		jQuery(".layout-footer-menu").remove();
10142		jQuery(".ctl-scroll-top-scroll-button").css("margin-bottom", "0px");
10143        if ( jQuery("footer").length > 0 ){
10144		    jQuery("footer").css("margin-bottom", "0px");
10145        }        
10146        jQuery('.layout-site-content-outer').css("margin-bottom", "0px");  
10147	}
10148}
10149
10150
10151function ctlVulcanoThemeCalculateVisibilityForDiv(div$) {
10152    var windowHeight = jQuery(window).height(),
10153        docScroll = jQuery(document).scrollTop(),
10154        divPosition = div$.offset().top,
10155        divHeight = div$.outerHeight(),
10156        hiddenBefore = docScroll - divPosition,
10157        hiddenAfter = (divPosition + divHeight) - (docScroll + windowHeight);
10158
10159    if ((docScroll > divPosition + divHeight) || (divPosition > docScroll + windowHeight)) {
10160        return 0;
10161    } else {
10162        var result = 100;
10163        var pixels = 0;
10164
10165        if (hiddenBefore > 0) {
10166            result -= (hiddenBefore * 100) / divHeight;
10167            pixels += hiddenBefore;
10168        }
10169
10170        if (hiddenAfter > 0) {
10171            result -= (hiddenAfter * 100) / divHeight;
10172            pixels += hiddenAfter;
10173        }
10174
10175        result = divHeight + (hiddenBefore + hiddenAfter);
10176
10177        return divHeight - pixels;
10178    }
10179}
10180
10181function ctlVulcanoInitColAnimations(){
10182	
10183	var szBreakPoint = jQuery("body").attr("bp");
10184	if ( szBreakPoint == "xxl"){
10185		szBreakPoint = "xl";
10186	}
10187	
10188	var szLastBreakPoint = jQuery("body").attr("data-last-entrance-bp");
10189	
10190	if ( szBreakPoint ==  szLastBreakPoint){
10191		return;	
10192	}
10193	
10194    jQuery( ".ctl-col-animation").each(function(){
10195		var szAnimation  = jQuery(this).attr("data-entrance-animation-"+szBreakPoint);
10196
10197		if ( szAnimation ){
10198			var szOffset     = jQuery(this).attr("data-entrance-offset-"+szBreakPoint);
10199			var szIterations = jQuery(this).attr("data-entrance-animation-iterations-"+szBreakPoint);
10200			var szSpeed      = jQuery(this).attr("data-entrance-animation-speed-"+szBreakPoint);
10201			var szDelay      = jQuery(this).attr("data-entrance-animation-delay-"+szBreakPoint);
10202			var szFadein     = jQuery(this).attr("data-entrance-fadein-"+szBreakPoint);		
10203			
10204			jQuery(this).attr("data-entrance-animation", szAnimation);
10205			jQuery(this).attr("data-entrance-offset", szOffset);
10206
10207			if ( szFadein ){
10208				jQuery(this).attr("data-entrance-fadein", szFadein);	
10209				jQuery(this).animate({opacity:0}
10209,0);
10210			}
10211
10212			jQuery(this).attr("data-entrance-iterations", szIterations);
10213			jQuery(this).attr("data-entrance-speed", szSpeed);
10214			jQuery(this).attr("data-entrance-delay", szDelay);
10215
10216			jQuery(this).addClass("ctl-col-breakpoint-animation");
10217
10218		}
10219    });
10220	
10221	jQuery("body").attr("data-last-entrance-bp", szBreakPoint);
10222}
10223
10224function ctlVulcanoApplyBreakpointClass(){
10225    var width = window.innerWidth;
10226
10227    jQuery("body").removeClass("bp-xs");
10228    jQuery("body").removeClass("bp-sm");
10229    jQuery("body").removeClass("bp-md");
10230    jQuery("body").removeClass("bp-lg");
10231    jQuery("body").removeClass("bp-xl");
10232    jQuery("body").removeClass("bp-xxl");
10233    
10234    jQuery("body").removeClass("bp-up-to-sm");
10235    jQuery("body").removeClass("bp-up-to-md");
10236    jQuery("body").removeClass("bp-up-to-lg");
10237    jQuery("body").removeClass("bp-up-to-xl");
10238
10239    if( width >= 1400 ){
10240		jQuery("body").attr("bp","xxl");		
10241        jQuery("body").addClass("bp-xxl");
10242    }else if( width >= 1200 ){
10243		jQuery("body").attr("bp","xl");		
10244        jQuery("body").addClass("bp-xl");
10245        jQuery("body").addClass("bp-up-to-xl");                
10246    }else if( width >= 992 ){
10247		jQuery("body").attr("bp","lg");
10248        jQuery("body").addClass("bp-lg");
10249        jQuery("body").addClass("bp-up-to-xl");
10250        jQuery("body").addClass("bp-up-to-lg");
10251    }else if( width >= 768 ){
10252		jQuery("body").attr("bp","md");		
10253        jQuery("body").addClass("bp-md");
10254        jQuery("body").addClass("bp-up-to-xl");
10255        jQuery("body").addClass("bp-up-to-lg");
10256        jQuery("body").addClass("bp-up-to-md");
10257    }else if( width >= 576 ){
10258		jQuery("body").attr("bp","sm");
10259        jQuery("body").addClass("bp-sm");
10260        jQuery("body").addClass("bp-up-to-xl");
10261        jQuery("body").addClass("bp-up-to-lg");
10262        jQuery("body").addClass("bp-up-to-md");
10263        jQuery("body").addClass("bp-up-to-sm");
10264    }else{
10265		jQuery("body").attr("bp","xs");
10266        jQuery("body").addClass("bp-xs");
10267        jQuery("body").addClass("bp-up-to-xl");
10268        jQuery("body").addClass("bp-up-to-lg");
10269        jQuery("body").addClass("bp-up-to-md");
10270        jQuery("body").addClass("bp-up-to-sm");
10271    }	
10272	
10273}
10274
10275
10276function ctlVulcanoStartColAnimations(){
10277    var scrollTop  = jQuery(window).scrollTop();
10278    var iWindowOffset = scrollTop + jQuery(window).outerHeight();
10279
10280    jQuery(".ctl-col-breakpoint-animation").each(function(){
10281
10282        var iOffset = Number(jQuery(this).attr("data-entrance-offset"));
10283        
10284        if (!iOffset){
10285            iOffset = 50;
10286        }
10287
10288        var iFadein = Number(jQuery(this).attr("data-entrance-fadein"));
10289        
10290
10291        if ( iWindowOffset - iOffset >= jQuery(this).offset().top  ) {
10292            jQuery(this).addClass("animate__animated");
10293            jQuery(this).addClass(jQuery(this).attr("data-entrance-animation"));
10294            if ( jQuery(this).attr("data-entrance-iterations") ){
10295                jQuery(this).addClass(jQuery(this).attr("data-entrance-iterations"));            
10296            } 
10297            
10298            if ( jQuery(this).attr("data-entrance-speed") ){
10299                jQuery(this).addClass(jQuery(this).attr("data-entrance-speed"));            
10300            } 
10301
10302            if ( jQuery(this).attr("data-entrance-delay") ){
10303                jQuery(this).addClass(jQuery(this).attr("data-entrance-delay"));  
10304                
10305                var iDelay = 0;
10306                switch(jQuery(this).attr("data-entrance-delay")){
10307                    case "animate__delay-250ms":{
10308                        iDelay = 250;
10309                    }break;         
10310                    case "animate__delay-500ms":{
10311                        iDelay = 500;
10312                    }break;        
10313                    case "animate__delay-750ms":{
10314                        iDelay = 750;
10315                    }break;                                                            
10316                    case "animate__delay-1s":{
10317                        iDelay = 1000;
10318                    }break;
10319                    case "animate__delay-1250ms":{
10320                        iDelay = 1250;
10321                    }break;        
10322                    case "animate__delay-1500ms":{
10323                        iDelay = 1500;
10324                    }break;         
10325                    case "animate__delay-1750ms":{
10326                        iDelay = 1750;
10327                    }break;                                                                    
10328                    case "animate__delay-2s":{
10329                        iDelay = 2000;
10330                    }break;       
10331                    case "animate__delay-3s":{
10332                        iDelay = 3000;
10333                    }break; 
10334                    case "animate__delay-4s":{
10335                        iDelay = 4000;
10336                    }break;     
10337                    case "animate__delay-5s":{
10338                        iDelay = 5000;
10339                    }break;                                                                   
10340                }
10341				
10342				if (iFadein){
10343	                jQuery(this).delay(iDelay).animate({opacity:1},iFadein);
10344				}  				
10345
10346            }else{
10347				
10348				if (iFadein){
10349                	jQuery(this).animate({opacity:1},iFadein);
10350				}  								
10351            }             
10352        }
10353    });
10354}
10355
10356function ctlUpdateOnlineStatus(event) {
10357    if ( navigator ){
10358        if ( navigator.onLine ){
10359            jQuery("body").removeClass("offline");
10360            jQuery(".ctl-vulcano-theme-online-monitor .ctl-theme-bootstrap-menu-item-text").text(
10361                g_oCTLVulcanoThemeLocalizationFront["online"]);
10362            jQuery(".ctl-vulcano-theme-online-monitor h3").text(
10363                    g_oCTLVulcanoThemeLocalizationFront["online"]);                
10364        }else{
10365            jQuery("body").addClass("offline");
10366            jQuery(".ctl-vulcano-theme-online-monitor .ctl-theme-bootstrap-menu-item-text").text(
10367                g_oCTLVulcanoThemeLocalizationFront["offline"]);
10368            jQuery(".ctl-vulcano-theme-online-monitor h3").text(
10369                g_oCTLVulcanoThemeLocalizationFront["offline"]);                
10370        }
10371    }
10372  }
10373
10374/* THEME ANALYZER */
10375var g_iTimeStart = Date.now();
10376jQuery(document).ready(function(){
10377    jQuery('#ctl-theme-analyzer').draggable({
10378        handle: "h2",
10379        containment : "window"
10380    });
10381});
10382jQuery(window).on('load', function() { 
10383    jQuery(".ctl-theme-analyzer-loading-time").text( (Date.now() - g_iTimeStart) + " ms" );
10384});
10385// file: /var/www/vhosts/codethislab.com/httpdocs/wp-content/plugins/ctl-wp-studio/classes/extensions/ctl-vulcano-theme/php/../js/vh-check.min.js
10386!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n():"function"==typeof define&&define.amd?define(n):e.vhCheck=n()}(this,function(){"use strict";var r=function(){return(r=Object.assign||function(e){for(var n,t=1,o=arguments.length;t<o;t++)for(var r in n=arguments[t])Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r]);return e}).apply(this,arguments)};function n(){var e,n,t=((e=document.createElement("div")).style.cssText="position: fixed; top: 0; height: 100vh; pointer-events: none;",document.documentElement.insertBefore(e,document.documentElement.firstChild),e),o=window.innerHeight,r=t.offsetHeight,i=r-o;return n=t,document.documentElement.removeChild(n),{vh:r,windowHeight:o,offset:i,isNeeded:0!==i,value:0}}function i(){}function e(){var e=n();return e.value=e.offset,e}var c=Object.freeze({noop:i,computeDifference:e,redefineVhUnit:function(){var e=n();return e.value=.01*e.windowHeight,e}});function u(e){return"string"==typeof e&&0<e.length}var a=Object.freeze({cssVarName:"vh-offset",redefineVh:!1,method:e,force:!1,bind:!0,updateOnTouch:!1,onUpdate:i});var t=!1,o=[];try{var f=Object.defineProperty({},"passive",{get:function(){t=!0}});window.addEventListener("test",f,f),window.removeEventListener("test",f,f)}catch(e){t=!1}function d(e,n){o.push({eventName:e,callback:n}),window.addEventListener(e,n,!!t&&{passive:!0})}function s(){o.forEach(function(e){window.removeEventListener(e.eventName,e.callback)}),o=[]}function m(e,n){document.documentElement.style.setProperty("--"+e,n.value+"px")}function h(e,n){return r({},e,{unbind:s,recompute:n.method})}return function(e){var n=Object.freeze(function(e){if(u(e))return r({},a,{cssVarName:e});if("object"!=typeof e)return a;var n,t={force:!0===e.force,bind:!1!==e.bind,updateOnTouch:!0===e.updateOnTouch,onUpdate:(n=e.onUpdate,"function"==typeof n?e.onUpdate:i)},o=!0===e.redefineVh;return t.method=c[o?"redefineVhUnit":"computeDifference"],t.cssVarName=u(e.cssVarName)?e.cssVarName:o?"vh":a.cssVarName,t}(e)),t=h(n.method(),n);if(!t.isNeeded&&!n.force)return t;if(m(n.cssVarName,t),n.onUpdate(t),!n.bind)return t;function o(){window.requestAnimationFrame(function(){var e=n.method();m(n.cssVarName,e),n.onUpdate(h(e,n))})}return t.unbind(),d("orientationchange",o),n.updateOnTouch&&d("touchmove",o),t}});
10387
10388// file: /var/www/vhosts/codethislab.com/httpdocs/wp-content/plugins/ctl-wp-studio/classes/extensions/ctl-theme-bootstrap-menu/php/../js/front.js
10389jQuery(window).scroll(function () {    
10390    var st = jQuery(this).scrollTop();    
10391    jQuery("nav.navbar").each(function(){
10392        if ( st > jQuery(this).height() ){
10393            jQuery(this).addClass("ctlthememenu-scroll");
10394        }else{
10395            jQuery(this).removeClass("ctlthememenu-scroll");
10396        }
10397    });    
10398});
10399
10400
10401jQuery(document).ready(function(){
10402        
10403    jQuery(".ctl-nav-menu-action-buttons.ctl-navbar-action-change-main-filters").each(function(){
10404        var oNodeButton = jQuery(this);
10405        let aParams = oNodeButton.attr("data-params");
10406        
10407        if (aParams){
10408            let iCntFoundParamsInUrl = 0;
10409
10410            aParams = JSON.parse(aParams);
10411
10412            for( let i = 0; i < aParams.length; i++ ){
10413                if ( g_oCTLWPStudio.getUrlParam(aParams[i].param + (aParams[i].multiple ? "[]" : "") ) ){
10414                    iCntFoundParamsInUrl++;                    
10415                }
10416            }
10417
10418            if ( iCntFoundParamsInUrl > 0 ){
10419                oNodeButton.find(".counter").text(iCntFoundParamsInUrl).removeClass("d-none");
10420            }            
10421        }
10422    });
10423
10424    jQuery(document).on("mouseover",'.dropdown-show-on-hover .navbar-nav .dropdown:not(.show)',function(e) {
10425        e.preventDefault();
10426        var oNodeToggle = jQuery(this).find(".dropdown-toggle-action").first();
10427        oNodeToggle.click();        
10428        oNodeToggle.blur();
10429    });      
10430
10431    jQuery(document).on("mouseleave",'.dropdown-show-on-hover .navbar-nav .dropdown.show',function(e) {
10432        e.preventDefault();
10433        var oNodeToggle = jQuery(this).find(".dropdown-toggle-action").first();
10434        oNodeToggle.click();
10435        oNodeToggle.blur();
10436    });          
10437
10438    jQuery(window).resize(function(){
10439        
10440        var oNodeToggler = jQuery(".navbar-toggler");
10441        
10442        if ( oNodeToggler.length === 0 ){
10443            return;
10444        }
10445
10446        if ( oNodeToggler.css("display") === "none" ){
10447            jQuery("body").removeClass("hamburger-shown");
10448            var oNodeHamburger = oNodeToggler.find(".hamburger");
10449            oNodeHamburger.removeClass("is-active");
10450            oNodeToggler.attr("aria-expanded", "false");
10451            
10452            var oNodeNav = oNodeToggler.closest("nav");
10453            
10454            oNodeNav.find(".navbar-collapse").each(function(){
10455                jQuery(this).removeClass("show");
10456            });
10457
10458            oNodeNav.find(".dropdown-toggle").each( function(){
10459               jQuery(this).dropdown("dispose");
10460            });
10461            
10462        }else{
10463            jQuery("body").addClass("hamburger-shown");
10464        } 
10465    });
10466    
10467    jQuery('[data-toggle="offcanvas-collapse"]').on('click', function () {
10468        jQuery('.offcanvas-collapse').toggleClass('open');
10469        jQuery(this).toggleClass('open');
10470        jQuery("body").toggleClass('noscroll');
10471        jQuery("html").toggleClass('noscroll');
10472    });  
10473
10474    jQuery(document).on("click",'.ctl-main-filters-action-submit',function(e) {
10475        g_oCTLWPStudio.showLoading(""); 
10476        var oNodeForm = jQuery(this).closest(".modal").find("form");
10477        oNodeForm.submit();
10478    });
10479    
10480    jQuery(document).on("click",'.ctl-navbar-action-change-main-filters',function(e) {
10481
10482        var oFormData = {};    
10483        oFormData["action"]  = "ctl-wp-studio";
10484        oFormData["execute"] = "ctl-theme-bootstrap-menu";    
10485        oFormData["widget-id"]        = jQuery(this).attr("data-widget-id");
10486        oFormData["get-params"]       = g_oCTLWPStudio.getUrlParams();
10487        oFormData['extension-action'] = "change-main-filters"; 
10488        oFormData['limit-extensions'] = ["ctl-theme-bootstrap-menu", "ctl-form-fields"];         
10489
10490        var idLoading = g_oCTLWPStudio.showLoading("");    
10491        jQuery.post(
10492            ctl_wp_studio_common_localization["ajaxurl"], oFormData ).done(
10493            function(response){ 
10494                
10495                g_oCTLWPStudio.closeDlg(idLoading);
10496
10497                var oResult = JSON.parse(response);
10498
10499                if ( oResult.res == true ){
10500                    g_oCTLBootstrapModals.showModal({ 
10501                        modal_title        : Base64.decode(oResult.title),
10502                        modal_content      : Base64.decode(oResult.html),
10503                        position           : "centered",
10504                        entrance_animation : "animate__slideInUp",
10505                        exit_animation     : "animate__slideOutDown",                        
10506                    });
10507                }else{
10508                    g_oCTLBootstrapModals.alert(oResult.desc);
10509                }
10510
10511            }).fail( function(){
10512                g_oCTLWPStudio.closeDlg(idLoading);
10513                alert(ctl_wp_studio_common_localization["Error"]);
10514            });
10515    });
10516
10517    jQuery(document).on("click",'.ctl-nav-menu-action-alert-logout',function(e) {
10518
10519        var oNodeButton = jQuery(this);
10520
10521        g_oCTLBootstrapModals.confirm(
10522            oNodeButton.attr("data-alert-title") ? Base64.decode(oNodeButton.attr("data-alert-title")) : "", 
10523            oNodeButton.attr("data-alert-message") ? Base64.decode(oNodeButton.attr("data-alert-message")) : "", 
10524            oNodeButton.attr("data-alert-continue") ? Base64.decode(oNodeButton.attr("data-alert-continue")) : "", function(){
10525            g_oCTLBootstrapModals.closeModalAndStack();
10526            ctlUserRolesLogout();
10527        });
10528    });
10529    
10530    jQuery('.navbar-toggler').on('click', function (){
10531        
10532        jQuery("body").addClass("hamburger-shown");
10533        
10534        var oNodeHamburger = jQuery(this).find(".hamburger");
10535        
10536        var oNodeLabelOpen = jQuery(this).find(".ctlthememenu-toggle-label-open-menu");
10537        var oNodeLabelClose = jQuery(this).find(".ctlthememenu-toggle-label-close-menu");
10538
10539        if( jQuery(this).attr("aria-expanded") === "false" ){
10540            oNodeHamburger.addClass("is-active");
10541            
10542            if(oNodeLabelOpen.length > 0 ){
10543                oNodeLabelOpen.addClass("ctlthememenu-display-none");               
10544                oNodeLabelClose.removeClass("ctlthememenu-display-none");
10545            }
10546        }else{
10547            oNodeHamburger.removeClass("is-active");
10548            
10549            if(oNodeLabelOpen.length > 0 ){
10550                oNodeLabelOpen.removeClass("ctlthememenu-display-none");
10551                oNodeLabelClose.addClass("ctlthememenu-display-none");
10552            }            
10553        }
10554    }); 
10555
10556
10557});
10558// file: /var/www/vhosts/codethislab.com/httpdocs/wp-content/plugins/ctl-wp-studio/classes/extensions/ctl-theme-bootstrap-modals/php/../js/front.js
10559var CTL_BOOTSTRAP_MODALS = function(){
10560    this._aDialogs = [];
10561};
10562
10563
10564var CTL_TOASTS = function(){
10565    
10566};
10567
10568var g_oToasts             = new CTL_TOASTS();
10569var g_oCTLBootstrapModals = new CTL_BOOTSTRAP_MODALS();
10570
10571jQuery(window).ready(function(){
10572
10573
10574    g_oToasts.showToasts();
10575    
10576    jQuery(document).on("click", ".ctl-theme-bootstrap-toasts-content .close", function(){
10577        var oNodeToast = jQuery(this).closest(".toast");
10578        
10579        oNodeToast.removeClass( "animate__fadeInRight");
10580        oNodeToast.addClass( "animate__fadeOutRight"); 
10581
10582        oNodeToast.fadeOut(1000, function(){
10583            oNodeToast.remove();
10584        });
10585    });
10586
10587    jQuery(document).on("click", ".btn-action-open-modal", function(e){    
10588        e.preventDefault();
10589        g_oCTLBootstrapModals.loadModal(
10590                jQuery(this).attr("data-modal-id"),
10591                null, 
10592                jQuery(this).attr("data-modal-extra-data"));
10593    });
10594
10595    jQuery(document).on("show.bs.modal",  ".modal", function(){
10596
10597        if ( !jQuery(this).hasClass("ctl-modal")){
10598            return;
10599        }
10600
10601        var oModalDialog = jQuery(this).find(".modal-dialog");
10602        if( oModalDialog.hasClass("animated")){  
10603            oModalDialog.addClass( jQuery(this).attr("data-anim-entrance"));  
10604
10605            if ( jQuery(this).attr("data-entrance-alpha") === "true"){
10606                oModalDialog.animate({duration:1000});
10607            }
10608        }        
10609    });
10610
10611    jQuery(document).on("click",  ".btn-action-close-stack-modals", function(e){
10612        g_oCTLBootstrapModals.closeModalAndStack();
10613    });  
10614
10615    jQuery(document).on("click", ".btn-action-dialog-maximize", function(e){
10616        e.preventDefault();
10617        var oNodeButton = jQuery(this);
10618        var idModal    = oNodeButton.attr("data-maximize-selector");
10619        var bMaximized = oNodeButton.attr("data-maximized");
10620        var oNodeModal = jQuery(idModal).find(".modal-dialog");
10621
10622        if (bMaximized == "true"){
10623            oNodeButton.attr("data-maximized", "false");
10624            oNodeButton.find("i").attr("class", "ctl-wp-studio-icons-resize-full-alt");
10625            oNodeModal.removeClass('modal-dialog-100vw');
10626            oNodeModal.removeClass('modal-dialog-100vh');            
10627        }else{
10628            oNodeButton.attr("data-maximized", "true");
10629            oNodeButton.find("i").attr("class", "ctl-wp-studio-icons-resize-small");
10630            oNodeModal.addClass('modal-dialog-100vw');
10631            oNodeModal.addClass('modal-dialog-100vh');
10632        }
10633    });
10634
10635    jQuery(document).on("click",  ".btn-action-close-modal", function(e){
10636        g_oCTLBootstrapModals.closeModal(jQuery(this).closest(".modal"));
10637    });  
10638
10639    jQuery(document).on("hidden.bs.modal",  ".modal", function(){
10640
10641        if ( !jQuery(this).hasClass("ctl-modal")){
10642            return;
10643        }
10644
10645        for( var i = 0; i < g_oCTLBootstrapModals._aDialogs.length; i++){
10646            if (g_oCTLBootstrapModals._aDialogs[i] === jQuery(this).attr("id")){
10647                g_oCTLBootstrapModals._aDialogs.splice(i,1);
10648                break;
10649            }
10650        }
10651
10652        jQuery(this).remove();
10653
10654        if ( g_oCTLBootstrapModals._aDialogs.length > 0 ){
10655			var oNodeLastModal = jQuery("#"+g_oCTLBootstrapModals._aDialogs[g_oCTLBootstrapModals._aDialogs.length-1] )
10656            oNodeLastModal.fadeIn();
10657			oNodeLastModal.next().fadeIn();
10658        }
10659
10660        if ( g_oCTLBootstrapModals._aDialogs.length === 0 ){
10661            jQuery("html").css("overflow","auto");
10662        }
10663    });    
10664
10665    jQuery(document).on("hide.bs.modal",  ".modal", function(e){
10666        if ( !jQuery(this).hasClass("ctl-modal")){
10667            return;
10668        }
10669
10670        var oModal = jQuery(this);
10671        var oModalDialog = oModal.find(".modal-dialog");
10672        if( oModalDialog.hasClass("animated")){            
10673            oModalDialog.removeClass( oModal.attr("data-anim-entrance"));
10674            oModalDialog.addClass( oModal.attr("data-anim-exit"));     
10675            
10676            oModalDialog.fadeOut({duration:1000});
10677        }
10678    });    
10679});
10680
10681CTL_BOOTSTRAP_MODALS.prototype.loadModal = function( idModal, oExtraData, idLayoutExtraData, cbClose = null ){
10682    var idLoading = g_oCTLWPStudio.showLoading("");
10683    
10684    var oFormData = {};
10685    oFormData['action']  ='ctl-wp-studio';
10686    oFormData['execute'] ='ctl-theme-bootstrap-modals';
10687    oFormData['extension-action'] = 'open-modal';        
10688    oFormData['modal-id']         = idModal;
10689
10690    oFormData["get-params"] = g_oCTLWPStudio.getUrlParams();
10691
10692    if ( oExtraData ){
10693        jQuery.extend( oFormData, oExtraData);                          
10694    }
10695
10696    if ( idLayoutExtraData ){
10697        var oNodeForm = jQuery(".layout-" + idLayoutExtraData);
10698
10699        if(ctlFormFieldsCheckIfFormIsFilled(oNodeForm) === false ){
10700            return;
10701        }
10702
10703        var oData = oNodeForm.serializeObject();
10704        jQuery.extend( oFormData, oData);                          
10705    } 
10706
10707    if ( jQuery(this).closest("form").length > 0 ){
10708        var oNodeForm = jQuery(this).closest("form");
10709        var oData     = oNodeForm.serializeObject();
10710
10711        jQuery.extend( oFormData, oData);
10712    }
10713
10714    jQuery.ajax({
10715        url : g_oCTLWPStudio._oLangCommon["ajaxurl"],
10716        type: "POST",
10717        data : oFormData,
10718        cache: false,
10719        method: 'POST',
10720        success:function(response, textStatus, jqXHR){
10721            g_oCTLWPStudio.closeDlg(idLoading);
10722
10723            var oResponse = jQuery.parseJSON(response);
10724
10725            if( oResponse.res === false ){     
10726
10727                
10728            }else{
10729                var aFooterButtons = [];
10730
10731                if ( oResponse.footer_buttons ){
10732                    aFooterButtons = oResponse.footer_buttons.map((szB64HTMLButton) => {
10733                        return Base64.decode(szB64HTMLButton);
10734                    });
10735                }
10736
10737                let szNewUrl = window.location.href;
10738                for (let index = 0; index < oResponse.params_to_append_to_url.length; index++) {
10739                    let szKey = oResponse.params_to_append_to_url[index];
10740                    
10741                    if(!oFormData.hasOwnProperty(szKey)){
10742                        continue;
10743                    
10744                    }
10745                    szNewUrl = g_oCTLWPStudio.addParameterToUrl(szNewUrl, szKey, oFormData[szKey]);
10746                }
10747                
10748                window.history.pushState(document.title, '', szNewUrl);
10749
10750                g_oCTLBootstrapModals.showModal({  
10751                    modal_id         : idModal,   
10752                    cb_close         : cbClose,                   
10753                    closeable        : oResponse.closeable === 0 ? false : true,
10754                    modal_title      : oResponse.modal_title,
10755                    modal_content    : Base64.decode(oResponse.html),
10756                    footer_btn_close : oResponse.footer_btn_close === 0 ? false : true,
10757
10758                    width    : oResponse.width,
10759                    height   : oResponse.height,
10760                    rounded : oResponse.rounded === 0 ? false : true,
10761                    entrance_animation : oResponse.entrance_animation,
10762                    exit_animation : oResponse.exit_animation ,
10763                    entrance_alpha : oResponse.entrance_alpha === 0 ? false : true,
10764                    exit_alpha : oResponse.exit_alpha === 0 ? false : true,                        
10765                    position       : oResponse.position,
10766                    animation : true,
10767                    wrapper_classes : oResponse.classes,
10768                    draggable : oResponse.draggable === 0 ? false : true,
10769                    closing_action : (!oResponse.closing_action) ? "close_modal" : oResponse.closing_action,
10770                    closing_redirect : oResponse.closing_redirect,
10771                    closing_external_url : oResponse.closing_external_url,
10772
10773                    button_close_title : oResponse.label_close,
10774                    button_close_class : "btn-secondary",
10775                    no_margins : false,                        
10776                    
10777                    footer_buttons : aFooterButtons,
10778                });
10779            }
10780        },
10781        error: function(jqXHR, textStatus, errorThrown){               
10782            g_oCTLWPStudio.closeDlg(idLoading);
10783            alert(g_oCTLWPStudio._oLangCommon["Ooops! Something Went Wrong!"]);  
10784        }
10785    });
10786};
10787
10788CTL_BOOTSTRAP_MODALS.prototype.closeLastModal = function(){
10789    if ( g_oCTLBootstrapModals._aDialogs.length > 0 ){
10790        let idLastModal  = g_oCTLBootstrapModals._aDialogs[g_oCTLBootstrapModals._aDialogs.length-1];
10791        g_oCTLBootstrapModals.closeModal(jQuery("#"+idLastModal));     
10792    }
10793};
10794
10795CTL_BOOTSTRAP_MODALS.prototype.closeModalAndStack = function( oNodeModal = null ){
10796    var iLimitDialog = 0;
10797    var idLastModal  = 0;
10798
10799    if ( g_oCTLBootstrapModals._aDialogs.length > 0 ){
10800        iLimitDialog = g_oCTLBootstrapModals._aDialogs.length-1;
10801        idLastModal  = g_oCTLBootstrapModals._aDialogs[g_oCTLBootstrapModals._aDialogs.length-1];
10802
10803        for( var i = 0; i < iLimitDialog; i++){
10804            var id = g_oCTLBootstrapModals._aDialogs[i];
10805            jQuery("#"+id).modal("dispose");
10806            jQuery("#"+id).next().remove();
10807            jQuery("#"+id).remove();
10808        }        
10809    }
10810
10811    g_oCTLBootstrapModals._aDialogs = [];
10812
10813    if (!oNodeModal){
10814        if ( idLastModal !== 0 ){
10815            g_oCTLBootstrapModals.closeModal(jQuery("#"+idLastModal));
10816        }
10817    }else{
10818        g_oCTLBootstrapModals.closeModal(oNodeModal);        
10819    }
10820};
10821
10822CTL_BOOTSTRAP_MODALS.prototype.closeModal = function( oNodeModal ){
10823
10824    var oModalDialog = oNodeModal.find(".modal-dialog");
10825    var oModalBackdrop = jQuery(".modal-backdrop").last();
10826    if( oModalDialog.hasClass("animated")){
10827        oModalDialog.removeClass( oNodeModal.attr("data-anim-entrance"));
10828        oModalDialog.addClass( oNodeModal.attr("data-anim-exit")); 
10829
10830        if ( oNodeModal.attr("data-exit-alpha") === "true"){
10831            oModalDialog.fadeOut({duration:1000});
10832        }
10833
10834        setTimeout(function(){
10835            oNodeModal.modal("hide");
10836        },1000);
10837        setTimeout(function(){
10838            oModalBackdrop.fadeOut();
10839
10840            
10841                switch(oNodeModal.attr("data-closing-action")){
10842                    case "close_and_reload":
10843                        g_oCTLWPStudio.showLoading();
10844                        window.location.reload();
10845                        break;
10846                    case "close_and_redirect":
10847                        if ( !oNodeModal.attr("data-closing-redirect") ){
10848                            alert(g_oCTLWPStudio._oLangCommon["Ooops! Something Went Wrong!"] + " - Redirect is empty");
10849                            break;
10850                        }
10851                        window.location.href = oNodeModal.attr("data-closing-redirect");
10852                        break;
10853                    case "close_and_open_external_url":
10854                        if ( !oNodeModal.attr("data-closing-external-url") ){
10855                            alert(g_oCTLWPStudio._oLangCommon["Ooops! Something Went Wrong!"] + " - External link is empty");
10856                            break;
10857                        }
10858                        window.open(oNodeModal.attr("data-closing-external-url"), "_self");
10859                        break;
10860                }
10861            
10862
10863        },200);            
10864    }
10865};
10866
10867CTL_BOOTSTRAP_MODALS.prototype.buildModal = function( oConfig ){
10868   
10869    var html = '';
10870    var id   = g_oCTLWPStudio.makeCode();
10871    var szModalClasses = 'modal-dialog';    
10872    var szModalWrapperClasses = 'modal ctl-modal';
10873    var szModalContentClasses = 'modal-content ctl-modal-content';
10874    var szAttrs = '';
10875   
10876    szModalClasses += ' modal-dialog-' + oConfig.position;
10877   
10878    if ( oConfig.no_margins ){
10879        szModalClasses += ' modal-dialog-no-margins';
10880    }
10881   
10882    switch(oConfig.width){
10883        case "100":{
10884            szModalClasses += ' modal-dialog-100vw';            
10885        }break;
10886        case "90":{
10887            szModalClasses += ' modal-dialog-90vw';
10888        }break;
10889        case "80":{
10890            szModalClasses += ' modal-dialog-80vw';
10891        }break;
10892        case "70":{
10893            szModalClasses += ' modal-dialog-70vw';
10894        }break;
10895    }
10896
10897    switch(oConfig.height){
10898        case "100":{
10899            szModalClasses += ' modal-dialog-100vh';            
10900        }break;
10901        case "90":{
10902            szModalClasses += ' modal-dialog-90vh';
10903        }break;        
10904        case "80":{
10905            szModalClasses += ' modal-dialog-80vh';
10906        }break;        
10907        case "70":{
10908            szModalClasses += ' modal-dialog-70vh';
10909        }break;
10910        default:{
10911            szModalClasses += ' modal-dialog-height-auto';
10912        }
10913    }
10914
10915    if ( oConfig.animation === true ){        
10916        szModalClasses += ' animated animate__animated';
10917    }
10918   
10919    if ( oConfig.wrapper_classes !== "" ){
10920        szModalWrapperClasses += ' ' + oConfig.wrapper_classes;
10921    }
10922
10923    if ( oConfig.modal_id ){
10924        szModalWrapperClasses += ' ctl-modal-' + oConfig.modal_id;
10925        szAttrs += ' data-widget-id="' + oConfig.modal_id + '"';
10926    }    
10927   
10928    szAttrs += ' data-anim-entrance="' + oConfig.entrance_animation +'"';
10929    szAttrs += ' data-anim-exit="' + oConfig.exit_animation + '"';
10930
10931    szAttrs += ' data-entrance-alpha="' + oConfig.entrance_alpha + '"';
10932    szAttrs += ' data-exit-alpha="' + oConfig.exit_alpha + '"'; 
10933
10934    szAttrs += ' data-closing-action="' + oConfig.closing_action + '"'; 
10935
10936    szAttrs += ' data-closing-redirect="' + oConfig.closing_redirect + '"'; 
10937
10938    szAttrs += ' data-closing-external-url="' + oConfig.closing_external_url + '"'; 
10939
10940
10941    
10942       
10943    if ( oConfig.attributes ){
10944        szAttrs += ' ' + oConfig.attributes; 
10945    }
10946
10947    if ( oConfig.rounded === false ){
10948        szModalContentClasses += ' rounded-0';
10949    }    
10950   
10951    if ( oConfig.footer_btn_close ){        
10952        var szCloseBtn = '<button type="button" class="btn btn-action-close-modal '+
10953                            oConfig.button_close_class+'">'+oConfig.button_close_title +'</button>';
10954                   
10955        oConfig.footer_buttons.unshift(szCloseBtn);                                  
10956    }
10957 
10958    html += '<div id="'+id+'" class="'+szModalWrapperClasses+'" tabindex="-1" role="dialog" aria-hidden="true"'+szAttrs+'>';
10959      html += '<div class="'+szModalClasses+'" role="document">';
10960        html += '<div class="'+szModalContentClasses+'">';
10961       
10962       
10963          var szHeader = '<div class="modal-header align-items-center ctl-modal-header">';
10964          var bJumpHeader = true;
10965            if ( oConfig.modal_title && oConfig.modal_title !== "" ){
10966              szHeader += '<h5 class="modal-title ctl-modal-title">' + oConfig.modal_title + '</h5>';  
10967              bJumpHeader = false;
10968            }
10969
10970            szHeader += '<div class="ctl-modal-header-buttons d-flex ml-auto">';
10971
10972            if ( oConfig.width != "100" && oConfig.height != "100" ){                
10973                szHeader += '<button data-maximized="false" data-maximize-selector="#'+id+'" type="button" class="btn-action-dialog-maximize">';
10974                  szHeader += '<i class="ctl-wp-studio-icons-resize-full-alt"></i>';
10975                szHeader += '</button>';                   
10976            }
10977
10978            if ( oConfig.modal_id && jQuery(".ctl-documentation-action-show-current-page-doc").length > 0 ){
10979                szHeader += '<button type="button" class="ctl-documentation-action-show-current-modal-doc" data-widget-id="'+oConfig.modal_id+'" aria-label="'+
10980                        g_oCTLBootstrapModalsLocalizationFront["Documentation"] +'">';
10981                  szHeader += '<i class="ctl-wp-studio-icons-help"></i>';
10982                szHeader += '</button>';
10983            }
10984
10985            if ( oConfig.closeable ){
10986                szHeader += '<button type="button" class="close btn-action-close-modal" aria-label="'+
10987                        oConfig.button_close_title +'">';
10988                  //szHeader += '<span aria-hidden="true">&times;</span>';
10989                  szHeader += '<i class="ctl-wp-studio-icons-cancel-1"></i>';                  
10990                szHeader += '</button>';                
10991                bJumpHeader = false;
10992            }
10993            szHeader += '</div>';
10994
10995          szHeader += '</div>';
10996         
10997          if (!bJumpHeader){
10998              html += szHeader;
10999          }
11000         
11001          html += '<div class="modal-body ctl-modal-body">';
11002          html += oConfig.modal_content;
11003          html += '</div>';
11004         
11005          if ( oConfig.footer_buttons.length > 0 ){          
11006            html += '<div class="modal-footer ctl-modal-footer">'; 
11007            html +=     '<div class="modal-footer-extra-buttons">'; 
11008            html +=     '</div>';          
11009            html +=     '<div class="modal-footer-buttons">';          
11010            for( var i = 0; i < oConfig.footer_buttons.length; i++ ){
11011                html += oConfig.footer_buttons[i];
11012            }
11013            html +=     '</div>';
11014            html += '</div>';          
11015          }else{
11016            html += '<div class="modal-footer d-none">';
11017            html +=     '<div class="modal-footer-extra-buttons">'; 
11018            html +=     '</div>'; 
11019            html +=     '<div class="modal-footer-buttons">';
11020            html +=     '</div>';
11021            html += '</div>';          
11022          }
11023          
11024         
11025        html += '</div>';
11026      html += '</div>';
11027    html += '</div>';  
11028   
11029    return { html : html, id : id };
11030};
11031
11032CTL_BOOTSTRAP_MODALS.prototype.message = function( szHtmlContent, szBtnTitle, cb = null ){
11033    var id = this.showModal({
11034        modal_content : szHtmlContent,
11035        closeable : false,
11036        position: "centered",
11037        button_close_title : szBtnTitle,
11038        button_close_class : "btn-primary"
11039    });
11040   
11041    if(cb){
11042        jQuery('#'+id + ' .btn-action-close-modal').on( "click", cb);
11043    }
11044   
11045    return id;
11046};
11047
11048CTL_BOOTSTRAP_MODALS.prototype.alert = function( szTitle, szHtmlContent, cb = null, szBtnClose = null ){    
11049    var oConfig = {
11050        modal_title : szTitle,
11051        modal_content : szHtmlContent,
11052        position : "centered",
11053        closeable : false
11054    };
11055    
11056    if (szBtnClose){
11057        oConfig["button_close_title"] = szBtnClose;
11058    }
11059
11060    var id = this.showModal(oConfig);    
11061
11062    if(cb){
11063        jQuery('#'+id + ' .btn-action-close-modal').on( "click", cb);
11064    }
11065   
11066    return id;
11067};
11068
11069CTL_BOOTSTRAP_MODALS.prototype.confirm = function( szTitle, szHtmlContent,
11070                                                   szConfirmBtnTitle, cb = null ){
11071    var id = this.showModal({
11072        modal_title : szTitle,
11073        modal_content : szHtmlContent,
11074        closeable : ( szTitle && szTitle !== "" ) ? true : false,
11075        position: "centered",
11076        entrance_animation : "animate__slideInUp",
11077        exit_animation     : "animate__slideOutDown",        
11078        footer_buttons : ['<button class="btn btn-primary" data-confirm="modal">'+szConfirmBtnTitle+'</button>']
11079    });
11080   
11081    if(cb){
11082        jQuery('#'+id + ' button[data-confirm="modal"]').on( "click", cb);
11083    }
11084   
11085    return id;
11086};
11087
11088CTL_BOOTSTRAP_MODALS.prototype.showModal = function( oConfig ){
11089   
11090    var oData = {
11091        cb_close      : null,
11092        closeable     : true,
11093        modal_id      : null,
11094        modal_title   : "",
11095        modal_content : "",
11096        button_close_title : g_oCTLBootstrapModalsLocalizationFront["Close"],
11097        button_close_class : "btn-secondary",
11098        position   : 'default',
11099        no_margins : false,
11100        width  : 'auto',
11101        height : 'auto',
11102        animation : true,
11103        rounded   : true,
11104        entrance_animation : 'animate__fadeIn',
11105        exit_animation : 'animate__fadeOut',
11106        entrance_alpha : false,
11107        exit_alpha : false,        
11108        footer_btn_close : true,
11109        wrapper_classes : '',
11110        attributes : '',
11111        footer_buttons : [],
11112        draggable : false,
11113        closing_action : "close_modal",
11114        closing_redirect : "",
11115        closing_external_url : "",
11116
11117    };
11118    jQuery.extend( oData, oConfig);
11119   
11120    oConfig = oData;
11121
11122    if (this._aDialogs.length > 0 ){
11123        jQuery("#"+this._aDialogs[this._aDialogs.length-1]).fadeOut({duration:200});
11124        jQuery(".modal-backdrop").last().fadeOut({duration:200});
11125    }   
11126
11127    var oModalData = this.buildModal(oConfig);  
11128   
11129    jQuery('body').append(oModalData.html);  
11130   
11131    var oBootstrapConfig = {};
11132   
11133    if ( oConfig.closeable === false ){
11134        oBootstrapConfig["backdrop"] = 'static';
11135        oBootstrapConfig["keyboard"] = false;
11136    }
11137   
11138    jQuery('#'+oModalData.id).modal(oBootstrapConfig);
11139   
11140    if ( oConfig.draggable === true ){
11141        jQuery('#'+oModalData.id).draggable({
11142            handle: ".modal-header"
11143        });
11144    }
11145
11146    if ( oConfig.cb_close ){
11147        $('#'+oModalData.id).on("hidden.bs.modal", function () {
11148            oConfig.cb_close();
11149        }); 
11150    }
11151
11152    g_oCTLWPStudio.applyChromaCorrection();
11153    wpdk_do_action("ctl-theme-bootstrap-modals-show-modal", jQuery('#'+oModalData.id) );
11154
11155    g_oCTLWPStudio.onResize(jQuery('#'+oModalData.id));
11156   
11157    g_oCTLWPStudio.resizeAspectRatioElements(jQuery('#'+oModalData.id));
11158
11159    jQuery("html").css("overflow","hidden");    
11160   
11161    this._aDialogs.push(oModalData.id);
11162
11163    return oModalData.id;
11164};
11165
11166CTL_TOASTS.prototype.showToasts = function(){
11167    jQuery(".toast.animated").each(function(){
11168        if ( !jQuery(this).hasClass("animate__fadeInRight")){
11169            jQuery(this).addClass("animate__fadeInRight");
11170        }
11171    });    
11172};
11173
11174CTL_TOASTS.prototype.appendToast = function( szTitle, szMessage, szCode, szClass, bAutoClose ){
11175    var guid = g_oCTLWPStudio.makeCode(4); 
11176    jQuery(".ctl-theme-bootstrap-toasts-content").append(
11177            this.buildToast( szTitle, szMessage, szCode, szClass, guid ) );            
11178    this.showToasts();
11179
11180    if ( bAutoClose === true ){
11181        setTimeout(function(){
11182            jQuery("#"+guid).find(".close").click();
11183        }, 5000);        
11184    }
11185};
11186
11187CTL_TOASTS.prototype.buildToast = function( szTitle, szMessage, szCode, szUserClasses, guid ){
11188    var html = '';
11189
11190    szClass = 'toast animated animate__animated';
11191
11192    if (szUserClasses){
11193        szClass += ' ' + szUserClasses;
11194    }
11195    
11196    if ( szCode ){
11197        szMessage = '<div class="alert alert-' + szCode + '">' + szMessage + '</div>';
11198    }
11199
11200    html += '<div id="'+guid+'" class="'+szClass+'" role="alert" aria-live="assertive" aria-atomic="true">';
11201        html += '<div class="toast-header">';
11202            //html += '<img src="..." class="rounded mr-2" alt="...">';
11203            html += '<strong class="mr-auto">'+szTitle+'</strong>';
11204            html += '<small class="text-muted"></small>';
11205            html += '<button type="button" class="ml-2 mb-1 close" data-dismiss="toast" aria-label="' +
11206                    g_oCTLBootstrapModalsLocalizationFront["Close"] + '">';
11207                html += '<span aria-hidden="true">&times;</span>';
11208            html += '</button>';
11209        html += '</div>';
11210        html += '<div class="toast-body">';
11211            html += szMessage;
11212        html += '</div>';
11213    html += '</div>';
11214    
11215    return html;
11216};
11217
11218
11219
11220CTL_TOASTS.prototype.onCheckUserNotifications = function(){
11221    var oParent = this;
11222    
11223    jQuery.post(
11224        g_oCTLWPStudio._oLangCommon["ajaxurl"],{                
11225            'action'           : 'ctl-wp-studio',
11226            'execute'          : 'ctl-theme-bootstrap-modals',
11227            'extension-action' : 'user-notification'
11228        }      
11229    ).done( function(response){
11230        var aData = JSON.parse(response);
11231
11232        for( var i = 0; i < aData.notifications.length; i++ ){
11233            var oNotification = aData.notifications[i];
11234            
11235            oParent.appendToast(
11236                        oNotification["title"],
11237                        oNotification["message"],
11238                        oNotification["url"],
11239                        oNotification["code"],
11240                        oNotification["class"]);
11241        }
11242
11243    }).fail( function(){            
11244        setTimeout( function(){
11245            oParent.onCheckUserNotifications();
11246        }, 5000);
11247    });
11248
11249};
11250// file: /var/www/vhosts/codethislab.com/httpdocs/wp-content/plugins/ctl-wp-studio/classes/extensions/ctl-form-fields/php/../js/common.js
11251var CTL_GEO = function(){
11252  
11253};
11254
11255CTL_GEO.prototype.filterSelect2ChangeValue = function( oNodeSelect, szValue ){
11256    switch(oNodeSelect.attr("name")){
11257        case "country":{         
11258            
11259            var aExcludedCountry = ["AF","AT","AX","BE","BH","BI","CZ","DE","DK","EE","FI","FR","GP","GF","IS","IL","IM","KR","KW","LB","LU","MQ","MT","NL","NO","PL","PT","RE","RS","SG","SK","SI","LK","SE"];
11260                
11261            if ( aExcludedCountry.includes(szValue)){
11262                jQuery(".ctl-geo-zone-select").closest(".ctl-geo-address-zone").addClass("d-none");
11263            }else{
11264                var oNodeZone = jQuery(".ctl-geo-zone-select");
11265                if ( oNodeZone.length > 0 ){
11266                    oNodeZone.val("").trigger('change');
11267                }                 
11268                jQuery(".ctl-geo-zone-select").closest(".ctl-geo-address-zone").removeClass("d-none");
11269            }    
11270
11271            var oNodeCity = jQuery(".ctl-geo-city-select");
11272            if ( oNodeCity.length > 0 ){
11273                oNodeCity.val("").trigger('change');
11274            }             
11275        }break;
11276        case "zone":{                
11277            var oNodeCity = jQuery(".ctl-geo-city-select");
11278            if ( oNodeCity.length > 0 ){
11279                oNodeCity.val("").trigger('change');
11280            }             
11281        }break;        
11282    }
11283};
11284
11285CTL_GEO.prototype.filterSelect2AjaxData = function( oData, oNodeSelect ){
11286
11287    switch( oData.type_search ){
11288        case "QUERY_SET_FILTER_WOO_ZONES":{
11289            var szGeoGuid = oNodeSelect.attr("data-geo-guid"); 
11290            var oNodeCountry = jQuery(".ctl-geo-country-select."+szGeoGuid);
11291          //  var oNodeCountry = oNodeSelect.closest(".ctl-geo-fields").find(".ctl-geo-country-select");
11292            if( oNodeCountry.val() ){
11293                oData["country"] = oNodeCountry.val();
11294            }
11295        }break;
11296        case "QUERY_SET_FILTER_CITIES":{
11297            var szGeoGuid = oNodeSelect.attr("data-geo-guid"); 
11298            var oNodeCountry = jQuery(".ctl-geo-country-select."+szGeoGuid);
11299
11300           // var oNodeCountry = oNodeSelect.closest(".ctl-geo-fields").find(".ctl-geo-country-select");
11301            if( oNodeCountry.val() ){
11302                oData["country"] = oNodeCountry.val();
11303            }
11304
11305            var oNodeZone = jQuery(".ctl-geo-zone-select."+szGeoGuid);
11306            // var oNodeZone = oNodeSelect.closest(".ctl-geo-fields").find(".ctl-geo-zone-select");
11307            if( oNodeZone.val() ){
11308                oData["zone"] = oNodeZone.val();
11309            }            
11310        }break;
11311    }
11312    
11313    return oData;    
11314};
11315
11316var g_oCTLGeo = new CTL_GEO();
11317
11318function ctlSummernoteInit(){
11319    jQuery(".summernote-textarea").each(function(){         
11320        let szFieldName = jQuery(this).attr("name");
11321        var oConfig = {
11322            cleaner:{
11323                limitChars: jQuery(this).attr("maxlength"),
11324                limitDisplay: "both",
11325                limitStop: false,
11326                limitType: "text",
11327            },
11328            callbacks: {
11329                onChange: function(contents, editable) {
11330                    let oNodeTextArea = editable.closest(".ctltextareafield").find("[name='" + szFieldName + "']");
11331
11332                    const text = $('<div>').html(contents).text();
11333                    const maxLength = parseInt(oNodeTextArea.attr("maxlength"), 10);
11334
11335                    if (text.length > maxLength && maxLength > 0) {
11336                        const truncated = text.substring(0, maxLength);
11337                        $(this).summernote('code', truncated);
11338                        oNodeTextArea.val(truncated).trigger("change");
11339                        let $editable = jQuery(editable);
11340                        let editableNode = $editable[0];
11341
11342                        // Posizionamento caret alla fine del contenuto dell'area modificabile
11343                        if (editableNode) {
11344                            $editable.focus();
11345
11346                            var range = document.createRange();
11347                            var sel = window.getSelection();
11348
11349                            // Seleziona tutto il contenuto dell'area modificabile
11350                            range.selectNodeContents(editableNode);
11351                            
11352                            // collapse(false) sposta il punto di inserimento esattamente alla FINE
11353                            range.collapse(false);
11354
11355                            sel.removeAllRanges();
11356                            sel.addRange(range);
11357                        }
11358                    }else{
11359                        oNodeTextArea.val(contents).trigger("change");
11360                    }
11361                },
11362                onKeydown: function(e) {
11363                    const text = $(this).summernote('code')
11364                        .replace(/<[^>]*>/g, '') // rimuove i tag HTML
11365                        .replace(/&nbsp;/g, ' ');
11366
11367                    let oNodeTextArea = $(this).closest(".ctltextareafield").find("[name='" + szFieldName + "']");
11368                    const maxLength = parseInt(oNodeTextArea.attr("maxlength"), 10);
11369
11370                    if (text.length >= maxLength &&
11371                        window.getSelection().toString().length == 0 &&
11372                        e.key.length === 1 &&
11373                        e.keyCode !== 8 &&   // Backspace
11374                        e.keyCode !== 46 &&  // Delete
11375                        !e.ctrlKey &&
11376                        !e.metaKey) {
11377                        e.preventDefault();
11378                    }
11379                }
11380              }
11381        };
11382        if( jQuery(this).attr("data-summernote-tabsize") ){
11383            oConfig["tabsize"] = parseInt(jQuery(this).attr("data-summernote-tabsize"));
11384        }
11385        if( jQuery(this).attr("data-summernote-height") ){
11386            oConfig["height"] = parseInt(jQuery(this).attr("data-summernote-height"));
11387        } 
11388        
11389        if ( jQuery(this).closest(".modal").length > 0 ){
11390            oConfig["dialogsInBody"] = true;
11391        }
11392
11393        let guid = jQuery(this).attr("id");
11394        jQuery("#"+guid).summernote(oConfig);
11395    });
11396}
11397
11398jQuery(document).ready(function(){
11399    
11400    ctlSignatureFormControl();
11401    
11402    var szSelectorToMaximize = g_oCTLWPStudio.getUrlVar("maximize");
11403    if (szSelectorToMaximize){
11404        var oNodeButton = jQuery('button[data-maximize-selector="' + szSelectorToMaximize + '"]');
11405        if ( oNodeButton.length > 0 ){
11406            ctlFormFieldsMaximizeSelector(oNodeButton);
11407        }
11408    }
11409    
11410    g_oCTLWPStudio._aSelect2AjaxDataFilters.push( {
11411        cb : g_oCTLGeo.filterSelect2AjaxData,
11412        cbOwner : g_oCTLGeo
11413    });
11414    
11415    g_oCTLWPStudio._aSelect2ChangeValue.push( {
11416        cb : g_oCTLGeo.filterSelect2ChangeValue,
11417        cbOwner : g_oCTLGeo
11418    });
11419
11420    jQuery(document).on("change", ".ctls2searchfield.print-layout-on-change-value select", function(){
11421        let oNodeSelect = jQuery(this);
11422        let szValue = oNodeSelect.val();
11423
11424        let oNodeFormGroup = oNodeSelect.closest(".form-group");
11425        let idWidget = oNodeFormGroup.attr("widget-id");
11426        let oNodeChangeValueLayoutWrapper = oNodeFormGroup.parent().find(".change-value-layout-wrapper[widget-id='" + idWidget + "']");
11427
11428        let oFormData = {};
11429        oFormData['action']           = 'ctl-wp-studio';
11430        oFormData['execute']          = 'ctl-form-fields';
11431        oFormData['extension-action'] = 'search-field-print-change-value-layout';
11432        oFormData['widget-id']        = idWidget;
11433        oFormData['value']            = szValue;
11434        oFormData["get-params"]       = g_oCTLWPStudio.getUrlParams();
11435
11436        var idLoading = g_oCTLWPStudio.showLoading("");
11437        jQuery.ajax({
11438            url : g_oCTLWPStudio._oLangCommon["ajaxurl"],
11439            type: "POST",
11440            data : oFormData,
11441            cache: false,
11442            method: 'POST',
11443            success: function(response, textStatus, jqXHR){
11444                g_oCTLWPStudio.closeDlg(idLoading);
11445                var oResponse = jQuery.parseJSON(response);
11446                if( oResponse.res === false ){
11447                    alert(g_oCTLWPStudio._oLangCommon["Ooops! Something Went Wrong!"]); 
11448                }else{
11449                    oNodeChangeValueLayoutWrapper.html(Base64.decode(oResponse.html));
11450                    oNodeChangeValueLayoutWrapper.removeClass("d-none");
11451
11452                    wpdk_do_action("ctl-theme-bootstrap-modals-show-modal", oNodeChangeValueLayoutWrapper); 
11453                    ctlVulcanoResizeLayout(); 
11454                }
11455            },error: function(jqXHR, textStatus, errorThrown){
11456                g_oCTLWPStudio.closeDlg(idLoading);
11457                alert(g_oCTLWPStudio._oLangCommon["Ooops! Something Went Wrong!"]);
11458            }
11459        });
11460    });
11461
11462    jQuery(document).on("click", ".ctl-form-field-repeater-remove-item", function(){
11463        let oNodeRemoveButton = jQuery(this);
11464
11465        let oNodeWrapper    = oNodeRemoveButton.closest(".ctl-form-field-repeater-wrapper");
11466        let oNodeLayoutList = oNodeWrapper.find(".ctl-form-field-repeater-layout-list");
11467        let aNodesListItems = oNodeLayoutList.find(".ctl-form-field-repeater-layout-list-item");
11468
11469        if(aNodesListItems.length-1 <= Number(oNodeLayoutList.data("min-layouts"))){
11470            oNodeRemoveButton.addClass("d-none");
11471        }
11472
11473        oNodeLayoutList.find(".ctl-form-field-repeater-layout-list-item").last().remove();
11474    });
11475
11476    jQuery(document).on("click", ".ctl-form-field-repeater-add-item", function(){
11477        let oNodeAddButton = jQuery(this);
11478        let oNodeWrapper    = oNodeAddButton.closest(".ctl-form-field-repeater-wrapper");
11479        let oNodeLayoutList = oNodeWrapper.find(".ctl-form-field-repeater-layout-list");
11480
11481        var oFormData = {};
11482        oFormData['action']           = 'ctl-wp-studio';
11483        oFormData['execute']          = 'ctl-form-fields';
11484        oFormData['extension-action'] = 'repeater-layout';
11485        oFormData['widget-id']        = oNodeWrapper.data("widget-id");
11486        oFormData["get-params"]       = g_oCTLWPStudio.getUrlParams();
11487
11488        var idLoading = g_oCTLWPStudio.showLoading("");
11489        jQuery.ajax({
11490            url : g_oCTLWPStudio._oLangCommon["ajaxurl"],
11491            type: "POST",
11492            data : oFormData,
11493            cache: false,
11494            method: 'POST',
11495            success: function(response, textStatus, jqXHR){
11496                g_oCTLWPStudio.closeDlg(idLoading);
11497                var oResponse = jQuery.parseJSON(response);
11498                if( oResponse.res === false ){
11499                    alert(g_oCTLWPStudio._oLangCommon["Ooops! Something Went Wrong!"]); 
11500                }else{
11501                    var html = Base64.decode(oResponse.html);
11502                    oNodeLayoutList.append(html);
11503
11504                    let aNodesListItems = oNodeLayoutList.find(".ctl-form-field-repeater-layout-list-item");
11505                    if( aNodesListItems.length > Number(oNodeLayoutList.data("min-layouts")) ){
11506                        oNodeWrapper.find(".ctl-form-field-repeater-remove-item").removeClass("d-none");
11507                    }
11508
11509                    wpdk_do_action("ctl-theme-bootstrap-modals-show-modal", oNodeLayoutList); 
11510                    ctlVulcanoResizeLayout(); 
11511                }
11512            },error: function(jqXHR, textStatus, errorThrown){
11513                g_oCTLWPStudio.closeDlg(idLoading);
11514                alert(g_oCTLWPStudio._oLangCommon["Ooops! Something Went Wrong!"]);
11515            }
11516        });        
11517    });
11518
11519    jQuery(document).on("change", ".ctl-form-fields-radio-dynamic-layout input[type=radio]", function(){
11520
11521        let idDynamicLayouts = jQuery(this).attr("data-guid-dynamic-layouts");
11522        let oNodeAttachLayout = jQuery("#"+idDynamicLayouts);
11523        let szDataLayouts = jQuery(this).closest(".ctl-wp-studio-form-control-wrapper").data("radio-layouts");
11524
11525        if (!szDataLayouts || 
11526            szDataLayouts === ""){
11527            return;
11528        }
11529
11530        let aLayouts = JSON.parse(Base64.decode(szDataLayouts));
11531        let idOption = aLayouts[jQuery(this).val()];
11532
11533        if (!idOption){
11534            oNodeAttachLayout.html("");
11535            wpdk_do_action("ctl-theme-bootstrap-modals-show-modal", oNodeAttachLayout);  
11536            ctlVulcanoResizeLayout();
11537            return;
11538        }
11539
11540        var oFormData = {};
11541        oFormData['action']  ='ctl-wp-studio';
11542        oFormData['execute'] ='ctl-form-fields';
11543        oFormData['extension-action'] ='radio-option-layout';
11544        oFormData['option-id']        = idOption;
11545        oFormData["get-params"]       = g_oCTLWPStudio.getUrlParams();
11546
11547        var idLoading = g_oCTLWPStudio.showLoading("");
11548        jQuery.ajax({
11549            url : g_oCTLWPStudio._oLangCommon["ajaxurl"],
11550            type: "POST",
11551            data : oFormData,
11552            cache: false,
11553            method: 'POST',
11554            success: function(response, textStatus, jqXHR){
11555                g_oCTLWPStudio.closeDlg(idLoading);
11556                var oResponse = jQuery.parseJSON(response);
11557                if( oResponse.res === false ){
11558                    alert(g_oCTLWPStudio._oLangCommon["Ooops! Something Went Wrong!"]); 
11559                }else{
11560                    var html = Base64.decode(oResponse.html);
11561                    oNodeAttachLayout.html(html);
11562                    wpdk_do_action("ctl-theme-bootstrap-modals-show-modal", oNodeAttachLayout); 
11563                    ctlVulcanoResizeLayout(); 
11564                }
11565            },error: function(jqXHR, textStatus, errorThrown){
11566                g_oCTLWPStudio.closeDlg(idLoading);
11567                alert(g_oCTLWPStudio._oLangCommon["Ooops! Something Went Wrong!"]);
11568            }
11569        });
11570    });
11571
11572    jQuery(document).on("change", "select.ctl-form-fields-select-dynamic-layout", function(){
11573
11574        let idDynamicLayouts = jQuery(this).attr("data-guid-dynamic-layouts");
11575        let oNodeAttachLayout = jQuery("#"+idDynamicLayouts);
11576
11577        let szDataLayouts = jQuery(this).closest(".ctl-wp-studio-form-control-wrapper").data("select-layouts");
11578
11579        if (!szDataLayouts || 
11580            szDataLayouts === ""){
11581            return;
11582        }
11583
11584        let aLayouts = JSON.parse(Base64.decode(szDataLayouts));
11585        let idOption = aLayouts[jQuery(this).val()];
11586
11587        if (!idOption){
11588            oNodeAttachLayout.html("");
11589            wpdk_do_action("ctl-theme-bootstrap-modals-show-modal", oNodeAttachLayout);  
11590            ctlVulcanoResizeLayout();
11591            return;
11592        }
11593
11594        var oFormData = {};
11595        oFormData['action']  ='ctl-wp-studio';
11596        oFormData['execute'] ='ctl-form-fields';
11597        oFormData['extension-action'] ='select-option-layout';
11598        oFormData['option-id']        = idOption;
11599        oFormData["get-params"]       = g_oCTLWPStudio.getUrlParams();
11600
11601        var idLoading = g_oCTLWPStudio.showLoading("");
11602        jQuery.ajax({
11603            url : g_oCTLWPStudio._oLangCommon["ajaxurl"],
11604            type: "POST",
11605            data : oFormData,
11606            cache: false,
11607            method: 'POST',
11608            success: function(response, textStatus, jqXHR){
11609                g_oCTLWPStudio.closeDlg(idLoading);
11610                var oResponse = jQuery.parseJSON(response);
11611                if( oResponse.res === false ){
11612                    alert(g_oCTLWPStudio._oLangCommon["Ooops! Something Went Wrong!"]); 
11613                }else{
11614                    var html = Base64.decode(oResponse.html);
11615                    oNodeAttachLayout.html(html);
11616                    wpdk_do_action("ctl-theme-bootstrap-modals-show-modal", oNodeAttachLayout);  
11617                    ctlVulcanoResizeLayout();
11618                }
11619            },error: function(jqXHR, textStatus, errorThrown){
11620                g_oCTLWPStudio.closeDlg(idLoading);
11621                alert(g_oCTLWPStudio._oLangCommon["Ooops! Something Went Wrong!"]);
11622            }
11623        });
11624    });
11625
11626
11627    jQuery(document).on("click", ".btn-action-switch-3s-state", function(){
11628        let oNodeFormControl = jQuery(this).closest(".ctlswitch3sfield");
11629        let oNodeSwitch = oNodeFormControl.find(".switch");
11630        let oNodeControlWrapper = oNodeFormControl.find(".ctl-switch-3s-control-wrapper");
11631        let oNodeInput = oNodeFormControl.find('input[type=hidden]');        
11632        let szNewState = jQuery(this).data("state");
11633
11634        let szOldState = oNodeControlWrapper.data("state");
11635        if (szOldState){
11636            oNodeControlWrapper.removeClass("ctl-switch-3s-" + szOldState);
11637        
11638            if ( szOldState == szNewState ){
11639                szNewState = "neutral";
11640                oNodeFormControl.find('input[type=hidden]').val("");
11641            }
11642        }
11643
11644        oNodeControlWrapper.data("state", szNewState);
11645        oNodeControlWrapper.addClass("ctl-switch-3s-" + szNewState);
11646
11647        switch(szNewState ){
11648            case "on":{
11649                oNodeInput.val(oNodeSwitch.attr("data-on-value"));
11650            }break;
11651            case "off":{
11652                oNodeInput.val(oNodeSwitch.attr("data-off-value"));
11653            }break;
11654            case "neutral":{
11655                oNodeInput.val("");
11656            }break;
11657        }
11658    });
11659
11660   
11661
11662    jQuery(document).on("input change paste", ".profit-field input[type=number]", function(){
11663        var oNode = jQuery(this);
11664
11665        oNode.removeClass("ctl-positive-color");
11666        oNode.removeClass("ctl-negative-color");
11667        oNode.removeClass("ctl-neutral-color");
11668
11669        if ( oNode.val() > 0 ){
11670            oNode.addClass("ctl-positive-color");
11671        }else if ( oNode.val() < 0 ){
11672            oNode.addClass("ctl-negative-color");
11673        }else{
11674            oNode.addClass("ctl-neutral-color");
11675        }
11676    });
11677
11678    jQuery(document).on("click", ".btn-action-open-create-modal", function(){
11679        var idCreateModal  = jQuery(this).attr("data-modal-id");
11680        var oNodeWrapper = jQuery(this).closest(".ctl-wp-studio-form-control-wrapper");
11681        var oNodeSelect  = oNodeWrapper.find("select");
11682
11683        if ( oNodeSelect.is('[readonly]') ){
11684            return;
11685        }
11686
11687        if ( oNodeSelect.hasClass("ctl-form-fields-cascading-select2-search-cpt") ){
11688            var iParentIndex = Number(oNodeSelect.attr("data-parent-select-index"));
11689
11690            if ( isNaN(iParentIndex) === false ){
11691                var oNodeParentSelect = jQuery(".ctl-form-fields-cascading-select2-search-cpt-"+iParentIndex);
11692                var idParentValue = Number(oNodeParentSelect.val());
11693
11694                if ( isNaN(idParentValue) === false && idParentValue > 0 ){
11695                    g_oCTLBootstrapModals.loadModal(idCreateModal, { "parent-id" : idParentValue });
11696                }
11697            }else{
11698				g_oCTLBootstrapModals.loadModal(idCreateModal);
11699			}
11700        }else{
11701            g_oCTLBootstrapModals.loadModal(idCreateModal);
11702        }
11703    });
11704
11705    jQuery(document).on("click", ".btn-action-open-edit-modal", function(){
11706        var idEditModal  = jQuery(this).attr("data-modal-id");
11707        var oNodeWrapper = jQuery(this).closest(".ctl-wp-studio-form-control-wrapper");
11708        var oNodeSelect  = oNodeWrapper.find("select");
11709
11710        if ( oNodeSelect.is('[readonly]') ){
11711            return;
11712        }
11713
11714        g_oCTLBootstrapModals.loadModal(idEditModal, { "resource-id" : oNodeSelect.val() });
11715    });
11716
11717    jQuery(document).on("input change paste", ".ctl-wp-studio-select2-search", function(){
11718        var oNodeWrapper = jQuery(this).closest(".ctl-wp-studio-form-control-wrapper");
11719        var oNodeBtnOpenEditModal = oNodeWrapper.find(".btn-action-open-edit-modal");
11720
11721        if ( oNodeBtnOpenEditModal.length > 0 ){
11722            if ( jQuery(this).val() !== "" && jQuery(this).val() !== null ){
11723                oNodeBtnOpenEditModal.removeClass("d-none");
11724            }else{
11725                oNodeBtnOpenEditModal.addClass("d-none");
11726            }            
11727        }
11728    });
11729
11730    jQuery(document).on("focus", "input.form-control,textarea.form-control", function(){
11731        if ( !jQuery("body").hasClass("bp-xs")){
11732                return;
11733        }
11734        var oNode      = jQuery(this);
11735        var iOffsetTop = oNode.offset().top;
11736            if( oNode.closest(".modal").length > 0 ){
11737            iOffsetTop -= jQuery('.modal-body').offset().top;
11738            jQuery('.modal-body').animate({ scrollTop: iOffsetTop }, 'slow');    
11739        }else{
11740            iOffsetTop -= 150;
11741            jQuery('html,body').animate({ scrollTop: iOffsetTop }, 'slow');    
11742        }            
11743    });    
11744    
11745    jQuery(document).on("click", ".ctl-form-fields-action-edit-text-field", function(){
11746        var idConfigField = jQuery(this).attr("data-id-field-config");
11747        var oNodeName     = jQuery(this).closest(".modal-content").find("input[name=field-name]");
11748        var oNodeGuid     = jQuery(this).closest(".modal-content").find("input[name=guid]");
11749        var oNodeForm     = jQuery(this).closest(".modal-content").find("form");
11750        var oFormData     = oNodeForm.serializeObject();
11751
11752        if ( ctlFormFieldsCheckIfFormIsFilled(oNodeForm) === false){
11753            return;
11754        }
11755        
11756        var oConfig = {
11757            "id"    : g_oCTLWPStudio.makeCode(4),
11758            "title" : oNodeName.val(),
11759            "name"  : g_oCTLWPStudio.sanitizeTitle(oNodeName.val()),
11760            "type"  : "text",
11761            "mandatory" : oFormData["mandatory"]
11762        };
11763
11764        g_oCTLBootstrapModals.closeModal(jQuery(this).closest(".modal"));
11765
11766        oNodeFieldData = jQuery("#" + idConfigField).find(".ctl-form-fields-config-fields-data");
11767        oNodeFieldContainer = jQuery("#" + idConfigField).find(".ctl-form-fields-config-fields-container");
11768
11769        var szConfig = oNodeFieldData.val();
11770        aConfigFields = JSON.parse(Base64.decode(szConfig));
11771        for( var i = 0; i < aConfigFields.length; i++ ){
11772            if ( aConfigFields[i].id == oNodeGuid.val() ){
11773                aConfigFields[i] = jQuery.extend(aConfigFields[i], oConfig);
11774                break;
11775            }
11776        }
11777
11778        __ctlFormFieldsUpdateConfigFieldList(oNodeFieldContainer, aConfigFields);
11779        oNodeFieldData.val( Base64.encode(JSON.stringify(aConfigFields)) );
11780    });
11781
11782    jQuery(document).on("click", ".ctl-form-fields-action-edit-calendar-field", function(){
11783        var idConfigField = jQuery(this).attr("data-id-field-config");
11784        var oNodeName     = jQuery(this).closest(".modal-content").find("input[name=field-name]");
11785        var oNodeGuid     = jQuery(this).closest(".modal-content").find("input[name=guid]");
11786        var oNodeForm     = jQuery(this).closest(".modal-content").find("form");
11787        var oFormData     = oNodeForm.serializeObject();
11788
11789        if ( ctlFormFieldsCheckIfFormIsFilled(oNodeForm) === false){
11790            return;
11791        }
11792        
11793        var oConfig = {
11794            "id"    : g_oCTLWPStudio.makeCode(4),
11795            "title" : oNodeName.val(),
11796            "name"  : g_oCTLWPStudio.sanitizeTitle(oNodeName.val()),
11797            "type"  : "text",
11798            "mandatory" : oFormData["mandatory"]
11799        };
11800
11801        g_oCTLBootstrapModals.closeModal(jQuery(this).closest(".modal"));
11802
11803        oNodeFieldData = jQuery("#" + idConfigField).find(".ctl-form-fields-config-fields-data");
11804        oNodeFieldContainer = jQuery("#" + idConfigField).find(".ctl-form-fields-config-fields-container");
11805
11806        var szConfig = oNodeFieldData.val();
11807        aConfigFields = JSON.parse(Base64.decode(szConfig));
11808        for( var i = 0; i < aConfigFields.length; i++ ){
11809            if ( aConfigFields[i].id == oNodeGuid.val() ){
11810                aConfigFields[i] = jQuery.extend(aConfigFields[i], oConfig);
11811                break;
11812            }
11813        }
11814
11815        __ctlFormFieldsUpdateConfigFieldList(oNodeFieldContainer, aConfigFields);
11816        oNodeFieldData.val( Base64.encode(JSON.stringify(aConfigFields)) );
11817    });
11818
11819    jQuery(document).on("click", ".ctl-form-fields-action-edit-radio-field", function(){
11820        var idConfigField = jQuery(this).attr("data-id-field-config");
11821        var oNodeSelect   = jQuery(this).closest(".modal-content").find(".ctl-draggable-hidden-select");
11822        var oNodeName     = jQuery(this).closest(".modal-content").find("input[name=field-name]");
11823        var oNodeGuid     = jQuery(this).closest(".modal-content").find("input[name=guid]");
11824        var oNodeForm     = jQuery(this).closest(".modal-content").find(".ctl-form-fields-add-field");
11825
11826        var oFormData = oNodeForm.serializeObject();
11827
11828        if ( ctlFormFieldsCheckIfFormIsFilled(oNodeForm) === false){
11829            return;
11830        }
11831
11832        var aRadioFieldData = [];
11833        oNodeSelect.find("option").each(function(){
11834            aRadioFieldData.push({
11835                value : jQuery(this).attr("value"),
11836                label : jQuery(this).text()
11837            });
11838        });
11839
11840        var oConfig = {
11841            "id"    : oNodeGuid.val(),
11842            "title" : oNodeName.val(),
11843            "name"  : g_oCTLWPStudio.sanitizeTitle(oNodeName.val()),
11844            "type"  : "radio",
11845            "items" : aRadioFieldData,
11846            "mandatory" : oFormData["mandatory"] 
11847        };
11848
11849        g_oCTLBootstrapModals.closeModal(jQuery(this).closest(".modal"));
11850
11851        oNodeFieldData = jQuery("#" + idConfigField).find(".ctl-form-fields-config-fields-data");
11852        oNodeFieldContainer = jQuery("#" + idConfigField).find(".ctl-form-fields-config-fields-container");
11853
11854        var szConfig = oNodeFieldData.val();
11855        aConfigFields = JSON.parse(Base64.decode(szConfig));
11856        for( var i = 0; i < aConfigFields.length; i++ ){
11857            if ( aConfigFields[i].id == oNodeGuid.val() ){
11858                aConfigFields[i] = jQuery.extend(aConfigFields[i], oConfig);
11859                break;
11860            }
11861        }
11862
11863        __ctlFormFieldsUpdateConfigFieldList(oNodeFieldContainer, aConfigFields);
11864        oNodeFieldData.val( Base64.encode(JSON.stringify(aConfigFields)) );
11865    });
11866
11867    jQuery(document).on("click", ".ctl-form-field-action-signature-clear", function(){
11868        jQuery(this).closest(".ctl-signature-img-container").addClass("d-none");
11869        var oNodeSignatureField = jQuery(this).closest(".ctlsignaturefield");
11870        oNodeSignatureField.find("textarea").val("");
11871
11872        let oNodeIFrame = oNodeSignatureField.find(".ctl-signature-iframe").first();
11873        let szStrokeColor = oNodeIFrame.data('stroke-color');
11874        let szStrokeWidth = oNodeIFrame.data('stroke-width');
11875
11876        oNodeIFrame[0].contentWindow.triggerEvent(
11877            'changeColor', 
11878            szStrokeColor
11879        );
11880
11881        oNodeIFrame[0].contentWindow.triggerEvent(
11882            'changeStrokeWidth', 
11883            szStrokeWidth
11884        );
11885
11886        oNodeSignatureField.find(".ctl-signature-iframe-container").removeClass("d-none");
11887        g_oCTLWPStudio.onResize();
11888
11889        oNodeIFrame[0].scrollIntoView({block:"nearest",container:"nearest"});
11890    });
11891
11892    jQuery(document).on("click", ".ctl-form-field-show-upload-signature-dialog", function(){
11893        var oFormData = {};
11894
11895        let oNodeFormControlWrapper = jQuery(this).closest(".ctl-wp-studio-form-control-wrapper");
11896        let szWidgetID = oNodeFormControlWrapper.data("widget-id");
11897
11898        let html = '';
11899        html += '<form data-widget-id="'+ szWidgetID +'">';
11900        html += formFieldsBuildUploadAreaField({
11901            "field-name"     : "upload-image",
11902            // "preview-image"  : szTypeMedia === "image" ? true : false,
11903            "browse-icon"    : "",
11904            "btn-outlined"   : true,
11905            "mandatory"      : true,
11906            "mandatory-on-label" : true,
11907            "label-button"   : g_oCTLEditorsFrameworkLocalizationFront["Browse"],
11908            "append-buttons" : '<button type="button" class="' + 
11909                           'btn btn-outline-primary ctl-form-fields-upload-signature">'+
11910                           g_oCTLEditorsFrameworkLocalizationFront["Continue"]+'</button>'
11911        });
11912        html += '</form>';
11913
11914        g_oCTLBootstrapModals.showModal({
11915            wrapper_classes : "ctl-form-field-upload-signature-dialog",
11916            modal_title : g_oCTLDropBoxLocalizationFront["Upload file"],
11917            modal_content : html,
11918            closeable : true,
11919            width: '80',
11920            position: "centered",
11921            entrance_animation : "animate__slideInUp",
11922            exit_animation : "animate__slideOutDown",                    
11923        });
11924    });
11925
11926    jQuery(document).on("click", ".ctl-form-fields-upload-signature", function(){
11927        let oNodeForm = jQuery(this).closest("form");
11928        let szWidgetID = oNodeForm.data("widget-id");
11929
11930        let oNodeModal = jQuery(this).closest(".modal");
11931        let oInputFiles = oNodeForm.find('input[name="upload-image"]')[0].files;
11932        
11933        if(oInputFiles.length > 0) {
11934            let oNodeSignatureFormControlWrapper = 
11935                jQuery(".ctl-wp-studio-form-control-wrapper.ctlsignaturefield[data-widget-id='"+ szWidgetID +"']");
11936            let oNodeIFrame = oNodeSignatureFormControlWrapper.find(".ctl-signature-iframe-container iframe").first();
11937            let oContentWindow = oNodeIFrame[0].contentWindow;
11938            let oFileToPrint = oInputFiles.item(0);
11939
11940            let aAllowedFileTypes = ['image/jpeg', 'image/png'];
11941            if (!aAllowedFileTypes.includes(oFileToPrint.type)) {
11942                alert(g_oCTLFormFieldsLocalizationCommon["Invalid file type. Please upload a JPEG or PNG image."]);
11943                return;
11944            }
11945
11946            let oFileReader = new FileReader();
11947            oFileReader.readAsDataURL(oFileToPrint);
11948            oFileReader.onload = function () {
11949                oContentWindow.triggerEvent('drawUploadedImage', oFileReader.result);
11950                g_oCTLBootstrapModals.closeModal(oNodeModal);
11951            };
11952            oFileReader.onerror = function (error) {
11953                alert(g_oCTLFormFieldsLocalizationCommon["Ooops! Something Went Wrong!"]);
11954            };
11955        }
11956    });
11957
11958    jQuery(document).on("click", ".ctl-form-fields-action-config-fields-edit-item", function(){
11959        var oNodeListItem = jQuery(this).closest("li");
11960
11961        var szData = oNodeListItem.attr("data-field");
11962        var oData  = JSON.parse(Base64.decode(szData));
11963
11964        switch(oData.type){
11965            case "radio":{
11966                __ctlFormFieldsConfigFieldsEditRadioField(oData, 
11967                            jQuery(this).closest(".ctlcustomfields").attr("id") );
11968            }break;
11969            case "text":{
11970                __ctlFormFieldsConfigFieldsEditTextField(oData, 
11971                            jQuery(this).closest(".ctlcustomfields").attr("id") );
11972            }break;   
11973            case "calendar":{
11974                __ctlFormFieldsConfigFieldsEditCalendarField(oData, 
11975                            jQuery(this).closest(".ctlcustomfields").attr("id") );
11976            }break;                        
11977        }
11978    });
11979
11980    jQuery(document).on("click", ".ctl-form-fields-action-config-fields-remove-item", function(){
11981        var oNodeListItem  = jQuery(this).closest("li");
11982        var oNodeContainer = oNodeListItem.closest(".container-fluid");
11983        var base64Data     = oNodeContainer.find(".ctl-form-fields-config-fields-data").val();
11984
11985        var aConfig        = JSON.parse(Base64.decode(base64Data));
11986
11987        aConfig.splice(oNodeListItem.index(),1);
11988
11989        oNodeContainer.find(".ctl-form-fields-config-fields-data").val(Base64.encode(JSON.stringify(aConfig)));
11990
11991        oNodeListItem.remove();
11992    });
11993
11994    jQuery(".ctl-form-fields-config-fields-container").each(function(){        
11995        if( g_oCTLWPStudio._oLangCommon["bIsMobile"] !== 1){
11996            jQuery(this).sortable({
11997                update : function(){
11998
11999                    var oNodeList = jQuery(this);
12000                    var aUpdatedData = [];
12001                    oNodeList.find("li").each(function(){
12002                        aUpdatedData.push(JSON.parse(Base64.decode(jQuery(this).attr("data-field"))));
12003                    });
12004
12005                    var oNodeValue = oNodeList.closest(".ctlcustomfields").find(".ctl-form-fields-config-fields-data");
12006
12007                    oNodeValue.val(Base64.encode(JSON.stringify(aUpdatedData)));
12008                },
12009                helper: g_oCTLWPStudio.getSortableHelper(),
12010                placeholder: "ui-sortable-placeholder"
12011            }).disableSelection();                              
12012        }   
12013    });    
12014 
12015
12016    jQuery(document).on("click", ".ctl-form-fields-action-insert-radio-field", function(){
12017
12018        var idConfigField = jQuery(this).attr("data-id-field-config");
12019        var oNodeSelect   = jQuery(this).closest(".modal-content").find(".ctl-draggable-hidden-select");
12020        var oNodeName     = jQuery(this).closest(".modal-content").find("input[name=field-name]");
12021        var oNodeForm     = jQuery(this).closest(".modal-content").find(".ctl-form-fields-add-field");
12022
12023        var oFormData = oNodeForm.serializeObject();
12024
12025        if ( ctlFormFieldsCheckIfFormIsFilled(oNodeForm) === false){
12026            return;
12027        }
12028
12029        var aRadioFieldData = [];
12030        oNodeSelect.find("option").each(function(){
12031            aRadioFieldData.push({
12032                value : jQuery(this).attr("value"),
12033                label : jQuery(this).text()
12034            });
12035        });
12036
12037        var oConfig = {
12038            "id"    : g_oCTLWPStudio.makeCode(4),
12039            "title" : oNodeName.val(),
12040            "name"  : g_oCTLWPStudio.sanitizeTitle(oNodeName.val()),
12041            "type"  : "radio",
12042            "items" : aRadioFieldData,
12043            "mandatory" : oFormData["mandatory"] 
12044        };
12045
12046        g_oCTLBootstrapModals.closeModal(jQuery(this).closest(".modal"));
12047
12048        oNodeFieldData = jQuery("#" + idConfigField).find(".ctl-form-fields-config-fields-data");
12049        oNodeFieldContainer = jQuery("#" + idConfigField).find(".ctl-form-fields-config-fields-container");
12050
12051        var szConfig = oNodeFieldData.val();
12052        var aConfigFields = null;
12053        if (!szConfig){
12054            aConfigFields = [];
12055        }else{
12056            aConfigFields = JSON.parse(Base64.decode(szConfig));
12057        }
12058        aConfigFields.push(oConfig);
12059        __ctlFormFieldsUpdateConfigFieldList(oNodeFieldContainer, aConfigFields);
12060        oNodeFieldData.val( Base64.encode(JSON.stringify(aConfigFields)) );
12061    });    
12062
12063    jQuery(document).on("click", ".ctl-form-fields-action-insert-text-field", function(){
12064        var idConfigField = jQuery(this).attr("data-id-field-config");
12065        var oNodeName     = jQuery(this).closest(".modal-content").find("input[name=field-name]");
12066        var oNodeForm     = jQuery(this).closest(".modal-content").find(".ctl-form-fields-add-field");
12067        var oFormData     = oNodeForm.serializeObject();
12068
12069        if ( ctlFormFieldsCheckIfFormIsFilled(oNodeForm) === false){
12070            return;
12071        }
12072        
12073        var oConfig = {
12074            "id"    : g_oCTLWPStudio.makeCode(4),
12075            "title" : oNodeName.val(),
12076            "name"  : g_oCTLWPStudio.sanitizeTitle(oNodeName.val()),
12077            "type"  : "text",
12078            "mandatory" : oFormData["mandatory"]
12079        };
12080
12081        g_oCTLBootstrapModals.closeModal(jQuery(this).closest(".modal"));
12082
12083        oNodeFieldData = jQuery("#" + idConfigField).find(".ctl-form-fields-config-fields-data");
12084        oNodeFieldContainer = jQuery("#" + idConfigField).find(".ctl-form-fields-config-fields-container");
12085
12086        var szConfig = oNodeFieldData.val();
12087        var aConfigFields = null;
12088        if (!szConfig){
12089            aConfigFields = [];
12090        }else{
12091            aConfigFields = JSON.parse(Base64.decode(szConfig));
12092        }
12093        aConfigFields.push(oConfig);
12094        __ctlFormFieldsUpdateConfigFieldList(oNodeFieldContainer, aConfigFields);
12095        oNodeFieldData.val( Base64.encode(JSON.stringify(aConfigFields)) );
12096    });
12097
12098    jQuery(document).on("click", ".ctl-form-fields-action-insert-calendar-field", function(){
12099        var idConfigField = jQuery(this).attr("data-id-field-config");
12100        var oNodeName     = jQuery(this).closest(".modal-content").find("input[name=field-name]");
12101        var oNodeForm     = jQuery(this).closest(".modal-content").find(".ctl-form-fields-add-field");
12102        var oFormData     = oNodeForm.serializeObject();
12103
12104        if ( ctlFormFieldsCheckIfFormIsFilled(oNodeForm) === false){
12105            return;
12106        }
12107        
12108        var oConfig = {
12109            "id"    : g_oCTLWPStudio.makeCode(4),
12110            "title" : oNodeName.val(),
12111            "name"  : g_oCTLWPStudio.sanitizeTitle(oNodeName.val()),
12112            "type"  : "calendar",
12113            "mandatory" : oFormData["mandatory"]
12114        };
12115
12116        g_oCTLBootstrapModals.closeModal(jQuery(this).closest(".modal"));
12117
12118        oNodeFieldData = jQuery("#" + idConfigField).find(".ctl-form-fields-config-fields-data");
12119        oNodeFieldContainer = jQuery("#" + idConfigField).find(".ctl-form-fields-config-fields-container");
12120
12121        var szConfig = oNodeFieldData.val();
12122        var aConfigFields = null;
12123        if (!szConfig){
12124            aConfigFields = [];
12125        }else{
12126            aConfigFields = JSON.parse(Base64.decode(szConfig));
12127        }
12128        aConfigFields.push(oConfig);
12129        __ctlFormFieldsUpdateConfigFieldList(oNodeFieldContainer, aConfigFields);
12130        oNodeFieldData.val( Base64.encode(JSON.stringify(aConfigFields)) );
12131    });
12132
12133	jQuery(document).on("click", ".ctl-form-fields-action-add-radio-field", function(){
12134        var oNodeButton    = jQuery(this);	
12135        var oNodeModal     = oNodeButton.closest(".modal");	
12136		
12137        var html = "";
12138
12139        html += '<form class="ctl-form-fields-add-field">';
12140
12141        html += formFieldsBuildTextField({
12142            'label-title' : "Nome campo",
12143            'field-name'  : 'field-name',
12144            'classes'     : 'form-control-sm',
12145            'mandatory'   : true,
12146            'display'     : 12,
12147        });        
12148        
12149        html += formFieldsBuildDraggableListField({
12150            "fieldname" : "radio-values",
12151            "display"   : 12,
12152            "label-title" : "Input radio per scelta singola",
12153            "show-values" : true,
12154            "manually-add-items" : true,
12155            "delete-items"       : true, 
12156            'mandatory'          : true,
12157        });
12158
12159        html += formFieldsBuildRadioField({
12160            'label-title' : "Obbligatorio?",
12161            "field-name"  : "mandatory",
12162            "display"     : 12,
12163            'mandatory'   : true,
12164        }, [ { "label" : "si", "value" : 1, "selected" : false },
12165             { "label" : "no", "value" : 0, "selected" : false } ]);
12166        
12167        html += '</form>';
12168
12169        g_oCTLBootstrapModals.showModal({ 
12170            modal_title   : "Radio field",
12171            modal_content : html,
12172            position      : "centered",
12173            entrance_animation : "animate__slideInUp",
12174            exit_animation : "animate__slideOutDown",
12175            footer_buttons : ['<button data-id-field-config="' + 
12176                                oNodeButton.attr("data-id-field-config") + 
12177                                '" class="btn btn-primary ctl-form-fields-action-insert-radio-field">inserisci</button>']
12178        });        
12179	});
12180
12181	jQuery(document).on("click", ".ctl-form-fields-action-add-calendar-field", function(){
12182        var oNodeButton    = jQuery(this);	
12183        var oNodeModal     = oNodeButton.closest(".modal");	
12184		
12185        var html = "";
12186
12187        html += '<form class="ctl-form-fields-add-field">';
12188
12189        html += formFieldsBuildTextField({
12190            'label-title' : "Nome campo",
12191            'field-name'  : 'field-name',
12192            'classes'     : 'form-control-sm',
12193            'mandatory'   : true,
12194            'display'     : 12,
12195        });        
12196        
12197        html += formFieldsBuildRadioField({
12198            'label-title' : "Obbligatorio?",
12199            "field-name"  : "mandatory",
12200            "display"     : 12,
12201            'mandatory'   : true,
12202        }, [ { "label" : "si", "value" : 1, "selected" : false },
12203             { "label" : "no", "value" : 0, "selected" : false } ]);
12204        
12205        html += '</form>';
12206
12207        g_oCTLBootstrapModals.showModal({ 
12208            modal_title   : "Calendar date",
12209            modal_content : html,
12210            position      : "centered",
12211            entrance_animation : "animate__slideInUp",
12212            exit_animation : "animate__slideOutDown",
12213            footer_buttons : ['<button data-id-field-config="' + 
12214                                oNodeButton.attr("data-id-field-config") + 
12215                                '" class="btn btn-primary ctl-form-fields-action-insert-calendar-field">inserisci</button>']
12216        });        
12217	});
12218
12219	jQuery(document).on("click", ".ctl-form-fields-action-add-text-field", function(){
12220        var oNodeButton    = jQuery(this);	
12221        var oNodeModal     = oNodeButton.closest(".modal");	
12222		
12223        var html = "";
12224
12225        html += '<form class="ctl-form-fields-add-field">';
12226
12227        html += formFieldsBuildTextField({
12228            'label-title' : "Nome campo",
12229            'field-name'  : 'field-name',
12230            'classes'     : 'form-control-sm',
12231            'display'     : 12,
12232            'mandatory'   : true,
12233        });        
12234
12235        html += formFieldsBuildRadioField({
12236            'label-title' : "Obbligatorio?",
12237            "field-name"  : "mandatory",
12238            "display"     : 12,
12239            'mandatory'   : true,
12240        }, [ { "label" : "si", "value" : 1, "selected" : false },
12241             { "label" : "no", "value" : 0, "selected" : false } ]);        
12242
12243        html += '</form>';
12244
12245        g_oCTLBootstrapModals.showModal({ 
12246            modal_title   : "Text field",
12247            modal_content : html,
12248            position      : "centered",
12249            entrance_animation : "animate__slideInUp",
12250            exit_animation : "animate__slideOutDown",
12251            footer_buttons : ['<button data-id-field-config="' + 
12252                                oNodeButton.attr("data-id-field-config") + 
12253                                '" class="btn btn-primary ctl-form-fields-action-insert-text-field">inserisci</button>']
12254        });        
12255	});    
12256
12257    jQuery(document).on("click", ".ctl-form-fields-action-delete-fields", function(){
12258        var oNodeButton    = jQuery(this);
12259        var oNodeContainer = oNodeButton.closest(".ctl-form-fields-config-fields-container");
12260        oNodeContainer.html("");
12261        alert("delete");
12262    });    
12263
12264
12265	jQuery(document).on("click", ".ctl-form-fields-config-action-add-field", function(){
12266        var oNodeButton    = jQuery(this);
12267        var oNodeContainer = oNodeButton.closest(".ctl-form-fields-config-fields-container");
12268        
12269        var html = '';
12270        html += '<div class="container-fluid">';
12271            html += '<div class="row">';
12272                html += '<div class="col col-12 col-md-6">';
12273                    html += '<button class="btn btn-xs mb-3 btn-primary w-100 ctl-form-fields-action-add-radio-field" data-id-field-config="' +
12274                                                        oNodeButton.attr("data-id-field-config") + '">';
12275                        html += 'radio';    
12276                    html += '</button>';
12277                html += '</div>';
12278                html += '<div class="col col-12 col-md-6">';
12279                    html += '<button class="btn btn-xs mb-3 btn-primary w-100 ctl-form-fields-action-add-text-field" data-id-field-config="' +
12280                    oNodeButton.attr("data-id-field-config") + '">';
12281                        html += 'input text';    
12282                    html += '</button>';
12283                html += '</div>';  
12284                html += '<div class="col col-12 col-md-6">';
12285                    html += '<button class="btn btn-xs mb-3 btn-primary w-100 ctl-form-fields-action-add-calendar-field" data-id-field-config="' +
12286                    oNodeButton.attr("data-id-field-config") + '">';
12287                        html += 'calendar';    
12288                    html += '</button>';
12289                html += '</div>';                                
12290            html += '</div>';        
12291        html += '</div>';
12292
12293        g_oCTLBootstrapModals.showModal({ 
12294            modal_title   : "elementi",
12295            modal_content : html,
12296            position      : "centered",
12297            entrance_animation : "animate__slideInUp",
12298            exit_animation : "animate__slideOutDown",
12299        });
12300    });    
12301
12302
12303    jQuery(document).on("change", ".ctl-commercial-user-type input[type=radio]", function(){
12304
12305        var idGuid = jQuery(this).closest(".custom-radio").attr("data-commercial-user-type-guid");
12306
12307        formFieldRefreshCommercialUserFields(idGuid, true);
12308    });
12309
12310    jQuery(document).on("click", ".ctl-form-fields-action-delete-gallery-media", function(){
12311        var oNodeForm = jQuery(this).closest("form");
12312        var oFormData = oNodeForm.serializeObject();
12313
12314        formFieldsDeleteGalleryMedia( 
12315                oFormData["resource-id"], 
12316                oFormData["resource-type"], 
12317                oFormData["field-name"], 
12318                jQuery(this).attr("data-id"),
12319                oFormData["edit-widget-id"] );                            
12320    });
12321    
12322
12323    jQuery(document).on("click",".ctl-form-fields-action-upload-gallery-media", function(){
12324        var oNodeForm = jQuery(this).closest("form"); 
12325
12326        if ( ctlFormFieldsCheckIfFormIsFilled(oNodeForm) === false){
12327            return;
12328        }
12329
12330        var idEditWidget = oNodeForm.find('input[name=edit-widget-id').val();
12331        var szFieldName  = oNodeForm.find('input[name=field-name]').val();
12332
12333        var oFormData = new FormData();
12334        oFormData.append( 'resource-id', oNodeForm.find('input[name=resource-id]').val() );
12335        oFormData.append( 'resource-type', oNodeForm.find('input[name=resource-type]').val() );
12336        oFormData.append( 'edit-widget-id', idEditWidget );
12337        oFormData.append( 'field-name',  szFieldName);
12338       
12338 oFormData.append( 'file', oNodeForm.find('input[name=upload-image]')[0].files[0] );
12339        oFormData.append( 'action', 'ctl-wp-studio' );
12340        oFormData.append( 'execute', 'ctl-form-fields' );        
12341        oFormData.append( 'extension-action', 'upload-gallery-media' );
12342
12343        ctlFormFieldsAjaxUpdateFormData(oNodeForm, oFormData, function(oResponse){     
12344            if ( oResponse.res === true ){       
12345                jQuery("#media-gallery .alert-warning").addClass("d-none");
12346                jQuery(".ctl-media-gallery-folder").prepend(
12347                            formFieldsHtmlImageInMediaGallery(oResponse.last_media ));
12348                
12349                var oNodeContainer  = jQuery('.ctl-edit-data-container-'+idEditWidget);
12350                var oNodGalleryList  = oNodeContainer.find('.ctl-media-gallery-list[data-field-name="'+
12351                                                szFieldName+'"]');
12352
12353                var htmlImg = ctlFormFieldsHtmlMediaPreview(oResponse.last_media.url);
12354                var html = "";
12355
12356                html += '<li data-id="' + oResponse.last_media.id + '">';
12357                    html += '<input type="hidden" name="' + szFieldName +
12358                            '[]" value="' + oResponse.last_media.id + '"/>';
12359                    html += htmlImg;
12360                html += '</li>';
12361             
12362                oNodGalleryList.append(html);
12363
12364                ctlFormFieldsCleanErrors(oNodGalleryList.closest(".form-group"));
12365
12366                ctlFormFieldsClearForm(oNodeForm); 
12367                jQuery(".ctl-media-gallery-modal .tab-link-media-gallery").click();
12368                g_oCTLWPStudio.onResize(jQuery(".ctl-media-gallery-folder"));                 
12369            } else{
12370                if ( oResponse.desc ){
12371                    g_oCTLBootstrapModals.alert("", oResponse.desc );
12372                }                
12373            }          
12374        });
12375    });    
12376    
12377    jQuery(document).on("click", ".ctl-form-fields-action-edit-media-gallery", function(){
12378        var oNodeContainer = jQuery(this).closest(".ctl-form-fields-media-gallery-list-wrapper");
12379        formFieldsMediaGallery(oNodeContainer, 
12380                                         jQuery(this).attr("data-field-name"),
12381                                         jQuery(this).attr("data-resource-id"),
12382                                         jQuery(this).attr("data-resource-type"),
12383                                         jQuery(this).attr("data-edit-widget-id"));
12384    });  
12385
12386    jQuery(document).on("click", ".ctl-editors-action-empty-media-field", function(){
12387        ctlEditorFrameworkEmptyMediaField(jQuery(this));
12388    });
12389
12390    jQuery(document).on("click", ".ctl-editor-framework-action-upload-file", function(){
12391        ctlEditorFrameworkUploadFileInVulcanoMediaGallery(jQuery(this));
12392    });
12393
12394    jQuery(document).on("change", ".ctl-form-fields-cascading-select2-search-cpt", 
12395                                                                        function(e, bAvoidRefresh){
12396
12397        if ( bAvoidRefresh === true ){
12398            return;
12399        }
12400
12401        var oNodeSelect          = jQuery(this);        
12402        var idCascadingFieldGuid = oNodeSelect.attr("data-cascading-fields-guid");
12403
12404        var index = Number(oNodeSelect.attr("data-select-index"));
12405
12406        while(true){
12407            var oNodeNextSelect = 
12408                jQuery("."+idCascadingFieldGuid+".ctl-form-fields-cascading-select2-search-cpt-"+(index+1)+ "");
12409            if ( oNodeNextSelect.length === 0 ){
12410                break;
12411            }
12412    
12413            oNodeNextSelect.val(null);
12414            oNodeNextSelect.trigger("change",[true]);    
12415            oNodeNextSelect.attr("readonly", true);        
12416            ctlFormFieldsCreateCascadingSelect2CPT(oNodeNextSelect);
12417
12418            index++;
12419        }
12420
12421        if ( oNodeSelect.val() !== "" && oNodeSelect.val() !== null ){
12422            var oNodeNextSelect = 
12423                    jQuery("."+idCascadingFieldGuid+".ctl-form-fields-cascading-select2-search-cpt-"+
12424                                    (Number(oNodeSelect.attr("data-select-index"))+1)+ "");
12425
12426            if ( oNodeNextSelect.length > 0 ){
12427                var oFormData = {};
12428                oFormData['action']           = 'ctl-wp-studio';
12429                oFormData['execute']          = 'ctl-form-fields';        
12430                oFormData['extension-action'] = 'check-next-cascading-select-items-availability';
12431                oFormData['post-parent'] = oNodeSelect.val();
12432                oFormData['select-id'] = oNodeNextSelect.attr("data-select-id");
12433                oFormData['widget-id'] = oNodeSelect.attr("data-widget-id");
12434                
12435                var idLoading = g_oCTLWPStudio.showLoading("");
12436                
12437                jQuery.ajax({
12438                    url : g_oCTLWPStudio._oLangCommon["ajaxurl"],
12439                    type: "POST",
12440                    data : oFormData,
12441                    cache: false,
12442                    method: 'POST',
12443                    success:function(response, textStatus, jqXHR){
12444
12445                        var oResponse = jQuery.parseJSON(response);
12446                        g_oCTLWPStudio.closeDlg(idLoading);
12447
12448                        let oNodeNextSelectWrapper = oNodeNextSelect.closest(".ctl-wp-studio-form-control-wrapper");
12449                        let oNodeNextSelectFormGroup = oNodeNextSelect.closest(".form-group");
12450                        
12451                        if( oResponse.res === true ){
12452                            if(oNodeNextSelect.attr("data-mandatory") === "true"){
12453                                oNodeNextSelectWrapper.addClass("mandatory");
12454                                oNodeNextSelectFormGroup.addClass("mandatory-on-label");
12455                            }
12456                        }else{    
12457                            oNodeNextSelectWrapper.removeClass("mandatory");
12458                            oNodeNextSelectFormGroup.removeClass("mandatory-on-label");
12459                        }
12460                    },
12461                    error: function(jqXHR, textStatus, errorThrown){
12462                        g_oCTLWPStudio.closeDlg(idLoading);
12463                        alert(g_oCTLWPStudio._oLangCommon["Ooops! Something Went Wrong!"]);  
12464                    }
12465                });  
12466
12467                oNodeNextSelect.removeAttr('readonly');             
12468                oNodeNextSelect.trigger("change",[true]);            
12469            }
12470        }
12471    });
12472
12473    jQuery(document).on("change", ".ctlbirthdatefield select", function(){
12474
12475        var oNodeBirthDate = jQuery(this).closest(".ctlbirthdatefield");
12476        var oNodeInput     = oNodeBirthDate.find(".final-value");
12477
12478        let aDateContents = ["year","month","day"];
12479        var szFinalDate = "";
12480		for (let i = 0; i < aDateContents.length; i++) {
12481            const szContent = aDateContents[i];
12482            if (oNodeBirthDate.find('select[name="'+ oNodeInput.attr("name")+'-'+szContent+'"]').length > 0) {
12483                let szValue = oNodeBirthDate.find('select[name="'+ oNodeInput.attr("name")+'-'+szContent+'"]').val();
12484                if(szValue){
12485                    szFinalDate += szValue + "-";
12486                }
12487            }
12488        }
12489
12490        if (szFinalDate.length > 0) {
12491            szFinalDate = szFinalDate.substring(0,szFinalDate.length-1);
12492        }
12493		
12494        oNodeInput.val(szFinalDate);
12495    });
12496
12497    jQuery(document).on("append-html", function( e, oNode, html ){
12498        ctlSummernoteInit();   
12499    });
12500    
12501    jQuery(document).on("set-html", function( e, oNode, html ){
12502        ctlSummernoteInit();      
12503    });    
12504
12505    ctlSummernoteInit();
12506
12507    jQuery("body").find(".ctl-form-field-repeater-layout-list").each(
12508            function(){
12509                ctlFormFieldsAssignIndexesToArrayFields(jQuery(this).find(".ctl-form-field-repeater-layout-list-item")
12510            );
12511        }
12512    );         
12513
12514    jQuery(document).on("click", ".ctl-pinpad-action-digit", function(){
12515        var iValue = jQuery(this).val();
12516        var oNodeInput = jQuery(this).closest(".ctlpinpadfield").find('input.form-control');
12517        oNodeInput.val(oNodeInput.val()+iValue);
12518
12519        ctlFormFieldCleanError(oNodeInput);         
12520    });
12521
12522    jQuery(document).on("click", ".ctl-calculator-action-digit", function(){
12523        var iValue = jQuery(this).val();
12524        var oNodeInput = jQuery(this).closest(".ctlcalcfield").find('input.form-control');
12525        oNodeInput.val(oNodeInput.val()+iValue);
12526
12527        ctlFormFieldCleanError(oNodeInput);  
12528    });    
12529
12530    jQuery(document).on("click", ".ctl-pinpad-action-send", function(){
12531        var oNodeInput = jQuery(this).closest(".ctlpinpadfield").find('input.form-control');
12532        jQuery(document).trigger('ctlpinpadfield-enter',[oNodeInput]);
12533    });  
12534
12535    jQuery(document).on("click", ".ctl-calculator-action-submit", function(){
12536        var oNodeForm = jQuery(this).closest("form");
12537        var oNodeInput = jQuery(this).closest(".ctlcalcfield").find('input.form-control');
12538
12539        oNodeForm.find(".ctl-calculator-action-equal").click();
12540
12541        if ( ctlFormFieldsCheckIfFormIsFilled(oNodeForm)){
12542			if(jQuery(this).hasClass("ctl-calculator-show-loading-dlg")){
12543            	g_oCTLWPStudio.showLoading();
12544			}
12545            oNodeForm.trigger("submit");
12546        }        
12547    });      
12548
12549    jQuery(document).on("click", ".ctl-pinpad-action-canc", function(){
12550        var oNodeInput = jQuery(this).closest(".ctlpinpadfield").find('input.form-control');
12551        var szValue = oNodeInput.val();
12552        oNodeInput.val(szValue.substring(0,szValue.length-1));
12553    });   
12554    
12555    jQuery(document).on("click", ".ctl-calculator-action-canc", function(){
12556        var oNodeInput = jQuery(this).closest(".ctlcalcfield").find('input.form-control');
12557        var szValue = oNodeInput.val();
12558        oNodeInput.val(szValue.substring(0,szValue.length-1));
12559    });       
12560    
12561    jQuery(document).on("click", ".ctl-calculator-action-equal", function(){
12562        var oNodeInput = jQuery(this).closest(".ctlcalcfield").find('input.form-control');
12563        var szValue = oNodeInput.val();
12564
12565        var oEpsilon = new Epsilon.ExpressionParser();
12566		oEpsilon.setExpression(szValue);
12567		try {
12568			szResult = oEpsilon.evaluate();
12569		} catch (e) {
12570			szResult = "";
12571		}
12572        oNodeInput.val(szResult);
12573    }); 
12574    
12575
12576    jQuery(document).on("click", ".ctl-editors-action-show-media-field-dlg", function(){
12577        ctlEditorFrameworkMediaFieldDlg(jQuery(this));
12578    });      
12579
12580    jQuery(document).on("dblclick", ".ctl-pinpad-action-canc", function(){
12581        jQuery(this).closest(".ctlpinpadfield").find('input.form-control').val("");
12582    });      
12583
12584    jQuery(document).on("dblclick", ".ctl-calculator-action-canc", function(){
12585        jQuery(this).closest(".ctlcalcfield").find('input.form-control').val("");
12586    });      
12587
12588    jQuery(document).on("append-html", function( e, oNode, html ){
12589        ctlApplySelect2(oNode);
12590        new ClipboardJS('.ctl-btn-action-clipboard');           
12591        ctlApplyColorPicker(oNode);
12592    });
12593    
12594    jQuery(document).on("set-html", function( e, oNode, html ){
12595        ctlApplySelect2(oNode);
12596        new ClipboardJS('.ctl-btn-action-clipboard');      
12597        ctlApplyColorPicker(oNode);
12598    });    
12599
12600    wpdk_add_action("ctl-theme-bootstrap-tabs-shown-tab", function( oNodeTab ){    
12601        ctlApplySelect2(oNodeTab);
12602    });    
12603    
12604    wpdk_add_action("ctl-theme-bootstrap-modals-show-modal", function( oNodeModal ){        
12605        ctlApplySelect2(oNodeModal);
12606        
12607        new ClipboardJS('.ctl-btn-action-clipboard');        
12608        
12609        ctlApplyColorPicker(oNodeModal);
12610        ctlSignatureFormControl(oNodeModal);
12611
12612        ctlSummernoteInit();   
12613		ctlApplyCommercialUserFields();
12614
12615        oNodeModal.find(".ctl-form-field-repeater-layout-list").each(function(){
12616            ctlFormFieldsAssignIndexesToArrayFields(jQuery(this).find(".ctl-form-field-repeater-layout-list-item"));
12617        });        
12618    });
12619
12620    jQuery(document).on('input keypress change paste', '.force-uppercase', function() {
12621        jQuery(this).val(function (index, value) {
12622            value = value.toUpperCase();
12623            return value;
12624        });
12625    });
12626    
12627    jQuery(document).on('blur', '.floating-label input[type=text], .floating-label input[type=password], .floating-label input[type=email], .floating-label input[type=number], textarea', function() {            
12628        if (jQuery(this).val() === "" ){
12629            var oNodeFormGroup = jQuery(this).closest(".floating-label");            
12630            oNodeFormGroup.removeClass("floating-label-normal");                   
12631        }           
12632    });    
12633    
12634    jQuery(document).on('focus', '.floating-label input[type=text], .floating-label input[type=password], .floating-label input[type=email], .floating-label input[type=number], textarea', function() {
12635        var oNodeFormGroup = jQuery(this).closest(".floating-label");            
12636        oNodeFormGroup.addClass("floating-label-normal");   
12637    });        
12638    
12639     
12640    
12641    jQuery(document).on('input keypress change paste', '.force-lowercase', function() {
12642        jQuery(this).val(function (index, value) {
12643            value = value.toLowerCase();
12644            return value;
12645        });
12646    });     
12647   
12648    jQuery(document).on("click",".draggable-search-in-list .btn-cancel-search", function(){
12649        var oNodeInputSearch = jQuery(this).closest(".draggable-search-in-list").
12650                find(".draggable-action-search-in-list");
12651        oNodeInputSearch.val("");
12652        ctlDraggableSearchInList(
12653                jQuery(this).closest(".draggable"), "");        
12654    });   
12655    
12656    jQuery(document).on("click", ".btn-action-print", function(){
12657        g_oCTLWPStudio.printLayout(jQuery(this).attr("data-print-selector"));
12658    });
12659
12660    jQuery(document).on("click", ".btn-action-maximize", function(){
12661        var szSelectorToMaximize = jQuery(this).attr("data-maximize-selector");
12662
12663        var oNodeButton = jQuery('button[data-maximize-selector="' + szSelectorToMaximize + '"]');
12664
12665        ctlFormFieldsMaximizeSelector(oNodeButton);
12666    });
12667
12668    jQuery(document).on("input paste",".draggable-action-search-in-list", function(){
12669        ctlDraggableSearchInList(
12670                jQuery(this).closest(".draggable"), jQuery(this).val());
12671    });    
12672   
12673   jQuery(document).on("click", ".btn-action-toggle-password-type", function(e){
12674       e.preventDefault();
12675       
12676       var oNodeInput = jQuery(this).closest(".input-group").find("input");
12677       var oNodeIcon  = jQuery(this).find("i");
12678       
12679       if ( oNodeInput.attr("type") === "text" ){
12680           oNodeInput.attr("type", "password"); 
12681           oNodeIcon.removeClass("ctl-wp-studio-icons-eye-off");
12682           oNodeIcon.addClass("ctl-wp-studio-icons-eye");
12683       }else if ( oNodeInput.attr("type") === "password" ){
12684           oNodeInput.attr("type", "text"); 
12685           oNodeIcon.addClass("ctl-wp-studio-icons-eye-off");
12686           oNodeIcon.removeClass("ctl-wp-studio-icons-eye");           
12687       }
12688   });
12689   
12690    jQuery(document).on("click", ".btn-action-next-date", function(){
12691        var oNodeFormGroup = jQuery(this).closest(".form-group");
12692        
12693        if ( oNodeFormGroup.hasClass("ctldatetimefield-wrapper")){
12694            var oNodeDatePicker = oNodeFormGroup.find(".date-gfx");
12695            var oMomentNow = moment(oNodeDatePicker.val(), oNodeDatePicker.attr("data-format")).add(1, 'days');
12696
12697            oNodeDatePicker.val( 
12698                oMomentNow
12699                .format(oNodeDatePicker.attr("data-format"))).trigger('input');
12700
12701        }else{
12702            var oNodeDatePicker = oNodeFormGroup.find(".datetimepicker-input");
12703
12704            if (!oNodeDatePicker.val()){
12705                return;
12706            }
12707            oNodeDatePicker.val( 
12708                        moment(oNodeDatePicker.val(), oNodeDatePicker.attr("data-format"))
12709                        .add(1, 'days')
12710                        .format(oNodeDatePicker.attr("data-format"))).trigger('input');
12711        }
12712    });
12713
12714    jQuery(document).on("click", ".btn-action-today-date", function(){
12715        var oNodeFormGroup = jQuery(this).closest(".form-group");
12716
12717        if ( oNodeFormGroup.hasClass("ctldatetimefield-wrapper")){
12718            var oNodeDatePicker = oNodeFormGroup.find(".date-gfx");
12719            var oNodeTimePicker = oNodeFormGroup.find(".time-gfx");
12720
12721            var oMomentNow = moment();
12721
12722
12723            oNodeDatePicker.val( 
12724                oMomentNow
12725                .format(oNodeDatePicker.attr("data-format"))).trigger('input');
12726            oNodeTimePicker.val( 
12727                oMomentNow
12728                .format(oNodeTimePicker.attr("data-format"))).trigger('input');                
12729
12730        }else{
12731            var oNodeDatePicker = oNodeFormGroup.find(".datetimepicker-input");
12732            oNodeDatePicker.val( 
12733                        moment()
12734                        .format(oNodeDatePicker.attr("data-format"))).trigger('input');  
12735        }
12736    });
12737
12738    jQuery(document).on("click", ".btn-action-prev-date", function(){
12739        var oNodeFormGroup = jQuery(this).closest(".form-group");
12740        
12741        if ( oNodeFormGroup.hasClass("ctldatetimefield-wrapper")){
12742            var oNodeDatePicker = oNodeFormGroup.find(".date-gfx");
12743            var oMomentNow = moment(oNodeDatePicker.val(), oNodeDatePicker.attr("data-format")).add(-1, 'days');
12744
12745            oNodeDatePicker.val( 
12746                oMomentNow
12747                .format(oNodeDatePicker.attr("data-format"))).trigger('input');
12748
12749        }else{
12750            var oNodeDatePicker = oNodeFormGroup.find(".datetimepicker-input");
12751
12752            if (!oNodeDatePicker.val()){
12753                return;
12754            }
12755            oNodeDatePicker.val( 
12756                        moment(oNodeDatePicker.val(), oNodeDatePicker.attr("data-format"))
12757                        .add(-1, 'days')
12758                        .format(oNodeDatePicker.attr("data-format"))).trigger('input');
12759        }
12760    });    
12761   
12762
12763    jQuery(document).on("click", ".btn-action-empty-date", function(){
12764        jQuery(this).closest(".form-group").find(".datetimepicker-input").val("");
12765        jQuery(this).closest(".form-group").find(".datetimepicker-input").trigger('empty-field');
12766    });
12767   
12768    jQuery(document).on("click", ".btn-action-empty-select2", function(){
12769        jQuery(this).closest(".form-group").find("select").val(null).trigger('change');
12770    });
12771	
12772    jQuery(document).on("click", ".btn-action-all-select2", function(){
12773		jQuery(this).closest(".form-group").find("select > option").prop("selected", false);
12774		
12775		jQuery(this).closest(".form-group").find("select > option").each(function(){
12776            if ( jQuery(this).attr("value") !== "" && jQuery(this).attr("value") !== null &&
12777   			     jQuery(this).attr("value") !== undefined ){
12778                jQuery(this).prop("selected","selected");
12779            }
12780        });
12781		jQuery(this).closest(".form-group").find("select").trigger('change');
12782    });	
12783   
12784    jQuery(document).on("click",".btn-clear-field-in-group", function(){
12785        var oNodeInputGroup = jQuery(this).closest(".input-group");        
12786        if ( oNodeInputGroup.find("input").length > 0 ){
12787            var szClearValue = oNodeInputGroup.find("input").attr("data-clear-value");
12788            oNodeInputGroup.find("input").val( szClearValue ? szClearValue : "");
12789        }
12790    });
12791   
12792    jQuery(document).on("click",".btn-action-generate-strong-password", function(){
12793        var oNodeFormControlWrapper = jQuery(this).closest(".ctl-wp-studio-form-control-wrapper");        
12794        if ( oNodeFormControlWrapper.find("input").length > 0 ){
12795            var oNodeInput = oNodeFormControlWrapper.find("input");
12796
12797            var code = "";
12798            var aCharsets = [
12799                { set : "!?*#$", min : 1, max : 4 },
12800                { set : "ABCDEFGHIJKLMNOPQRSTUVWXYZ", min : 4, max : 8 },
12801                { set : "abcdefghijklmnopqrstuvwxyz", min : 4, max : 8 },
12802                { set : "0123456789", min : 1, max : 8 }
12803            ]
12804
12805            for ( var k = 0; k < aCharsets.length; k++ ){
12806                var iLimit = Math.floor(Math.random() * aCharsets[k].max);
12807                iLimit = iLimit < aCharsets[k].min ? aCharsets[k].min  : iLimit;
12808                for( var i = 0; i < iLimit; i++ ){
12809                    code += aCharsets[k].set.charAt(Math.floor(Math.random() * aCharsets[k].set.length));
12810                }
12811            }
12812
12813            code = g_oCTLWPStudio.shuffleString(code);
12814
12815            oNodeInput.val(code); 
12816            if (oNodeInput.attr("type") == "password"){
12817                oNodeFormControlWrapper.find(".btn-action-toggle-password-type").click();
12818            }
12819        }
12820    });
12821
12822    jQuery(document).on("click", ".select-on-focus", function () {
12823       jQuery(this).select();
12824    });
12825   
12826    jQuery(document).on("click", ".ctlbtnfield .btn", function(){        
12827        if ( jQuery(this).attr("data-task-loading") !== "1" ){
12828            return;
12829        }
12830        
12831        if ( jQuery(this).hasClass("loading") &&
12832             jQuery(this).attr("data-task-stoppable") === "1" &&
12833             !jQuery(this).hasClass("closing") ){
12834            jQuery(this).addClass("closing");
12835        }else{
12836            jQuery(this).addClass("loading");
12837            jQuery(this).removeClass("closing");            
12838        }   
12839    });
12840   
12841   jQuery(document).on("click", ".switch-label", function(){
12842       var oNodeSwitch    = jQuery(this).closest(".switch");
12843       var oNodeFormGroup = oNodeSwitch.closest(".form-group");
12844       var oNodeInput     = oNodeFormGroup.find(".ctlswitchfield input");
12845       
12846       if ( oNodeSwitch.hasClass("on")){       
12847           oNodeSwitch.removeClass("on");
12848           oNodeInput.val(oNodeSwitch.attr("data-off-value"));
12849       }else{
12850           oNodeInput.val(oNodeSwitch.attr("data-on-value"));
12851           oNodeSwitch.addClass("on");
12852       }
12853       
12854       jQuery(document).trigger('ctlswitchfield-change',[oNodeSwitch, oNodeInput]);
12855   });
12856   
12857    // Drag enter
12858    jQuery(document).on("dragenter", '.ctl-file-upload-drag-drop-area-content', function (e) {
12859        e.stopPropagation();
12860        e.preventDefault();
12861    });     
12862    // Drag over
12863    jQuery(document).on("dragover", '.ctl-file-upload-drag-drop-area-content', function (e) {
12864        e.stopPropagation();
12865        e.preventDefault();		
12866	jQuery(this).addClass("ctl-file-upload-drag-drop-area-content-hover");
12867    });    
12868    
12869	// Drag leave
12870    jQuery(document).on("dragleave", '.ctl-file-upload-drag-drop-area-content', function (e) {
12871        e.stopPropagation();
12872        e.preventDefault();
12873        jQuery(this).removeClass("ctl-file-upload-drag-drop-area-content-hover");
12874    });    
12875    
12876    // Open file selector on div click
12877    jQuery(document).on("click", '.ctl-file-upload-drag-drop-area-content', function(){
12878        jQuery(this).closest(".ctl-upload-file-field-wrapper").find(".custom-file-input").click();
12879    });
12880    
12881        // Drop
12882    jQuery(document).on('drop', '.ctl-file-upload-drag-drop-area-content', function (e) {
12883        e.stopPropagation();
12884        e.preventDefault();
12885
12886	    jQuery(this).removeClass("ctl-file-upload-drag-drop-area-content-hover");		
12887		
12888        var file = e.originalEvent.dataTransfer.files;
12889        
12890
12891        var oNodeInput = jQuery(this).closest(".ctl-upload-file-field-wrapper").find(".custom-file-input");
12892        var oNodeLabel = jQuery(this).closest(".ctl-upload-file-field-wrapper").find(".custom-file-label");
12893        
12894        oNodeInput.prop('files',  file);
12895
12896        for (let i = 0; i < file.length; i++) {
12897            if (i > 0) {
12898                oNodeLabel.text(oNodeLabel.text() + ", " + file[i].name);
12899            }else{
12900                oNodeLabel.text(file[i].name);
12901            }
12902        }
12903
12904        oNodeInput.trigger('change');
12905    });
12906
12907    jQuery(document).on('change', 'select.ctl-vat-country', function (e) {
12908        let oNodeSelect = jQuery(this);
12909        let szVal = oNodeSelect.val();
12910        let oNodeVATNumber = oNodeSelect.closest(".input-group").find(".ctl-vat-number");
12911
12912        let aAlphaVatCountries = [
12913            'AT',
12914            'CY',
12915            'ES',
12916            'FR',
12917            'GB',
12918            'IE'
12919        ];
12920        
12921        if (!aAlphaVatCountries.includes(szVal)) {
12922            // Solo numeri
12923            oNodeVATNumber.val(oNodeVATNumber.val().replace(/\D/g, ''));
12924        } else {
12925            // Solo lettere e numeri
12926            oNodeVATNumber.val(oNodeVATNumber.val().replace(/[^a-zA-Z0-9]/g, '').toUpperCase());
12927        }
12928    });
12929	
12930    jQuery(document).on('input', 'input.ctl-vat-number', function (e) {
12931        let aAlphaVatCountries = [
12932            'AT',
12933            'CY',
12934            'ES',
12935            'FR',
12936            'GB',
12937            'IE'
12938        ];
12939
12940        let oNodeInput = jQuery(this);
12941        let szVATCountry = oNodeInput.closest(".input-group").find(".ctl-vat-country").val();
12942        if (!aAlphaVatCountries.includes(szVATCountry)) {
12943            // Solo numeri
12944            oNodeInput.val(oNodeInput.val().replace(/\D/g, ''));
12945        } else {
12946            // Solo lettere e numeri
12947            oNodeInput.val(oNodeInput.val().replace(/[^a-zA-Z0-9]/g, '').toUpperCase());
12948        }
12949    });
12950
12951    jQuery(document).on('change keydown paste input', '.vat-number-check', function(){
12952		let aButtonClassesToRemove = ["btn-success", "btn-danger"];
12953		
12954		let oNodeButton = jQuery('.btn-action-check-vat-number');
12955		for(var i = 0; i < aButtonClassesToRemove.length; i++){
12956			oNodeButton.removeClass(aButtonClassesToRemove[i]);
12957		}
12958		
12959		oNodeButton.addClass("btn-outline-secondary");
12960		
12961		let aIconClassesToRemove = ["ctl-wp-studio-icons-ok", "ctl-wp-studio-icons-cancel"];
12962		let oNodeIcon = oNodeButton.find("i");
12963
12964		for(var i = 0; i < aIconClassesToRemove.length; i++){
12965			oNodeIcon.removeClass(aIconClassesToRemove[i]);
12966		}
12967		
12968		oNodeIcon.addClass("ctl-wp-studio-icons-info");
12969	});
12970	
12971	jQuery(document).on('click', '.btn-action-check-vat-number', function() {
12972	
12973		var oNodeWrapper    = jQuery(this).closest(".ctlvatfield");
12974        var oNodeVatCountry = oNodeWrapper.find(".ctl-vat-country");
12975        var oNodeVatNumber  = oNodeWrapper.find(".ctl-vat-number");
12976		
12977		if ( !oNodeVatCountry.val() || !oNodeVatNumber.val() ){
12978            return;
12979        }
12980
12981		var oFormData = {};
12982		oFormData['action']           = 'ctl-wp-studio';
12983		oFormData['execute']          = 'ctl-form-fields';        
12984		oFormData['extension-action'] = 'check-vat-number';  		
12985		oFormData['vat-number']       = oNodeVatNumber.val();
12986        oFormData['vat-country']      = oNodeVatCountry.val();
12987		
12988		var idLoading = g_oCTLWPStudio.showLoading("");
12989		
12990		var oNodeButton = jQuery(this);
12991		var oNodeIcon = jQuery(this).find("i");
12992		
12993		jQuery.ajax({
12994			url : g_oCTLWPStudio._oLangCommon["ajaxurl"],
12995			type: "POST",
12996			data : oFormData,
12997			cache: false,
12998			method: 'POST',
12999			success:function(response, textStatus, jqXHR){
13000
13001				var oResponse = jQuery.parseJSON(response);
13002				g_oCTLWPStudio.closeDlg(idLoading);
13003				if( oResponse.res === false ){              
13004				
13005					if ( oResponse.errors ){
13006						ctlFormFieldsApplyErrors(oNodeForm, oResponse.errors);
13007					}  
13008
13009					if ( oResponse.alert ){
13010						g_oCTLBootstrapModals.alert("", oResponse.alert );
13011					}            
13012				}else{                
13013					g_oCTLWPStudio.closeDlg(idLoading);
13014					
13015					let szIconClassToReplace = oResponse.valid ? "ctl-wp-studio-icons-ok" : "ctl-wp-studio-icons-cancel";
13016					oNodeIcon.removeClass("ctl-wp-studio-icons-info").addClass(szIconClassToReplace);
13017					
13018					let szButtonClassToReplace = oResponse.valid ? "btn-success" : "btn-danger";
13019					oNodeButton.removeClass("btn-outline-secondary").addClass(szButtonClassToReplace);
13020					
13021					if ( oResponse.alert ){
13022						g_oCTLBootstrapModals.alert("", oResponse.alert );
13023					}                        
13024				}
13025			},
13026			error: function(jqXHR, textStatus, errorThrown){
13027				jQuery(document).trigger("ajax-update", [ oFormData["click-class"], false ] );
13028				g_oCTLWPStudio.closeDlg(idLoading);
13029				alert(g_oCTLWPStudio._oLangCommon["Ooops! Something Went Wrong!"]);  
13030			}
13031		});  
13032	});
13033
13034    jQuery(document).on('click', '.btn-action-submit-ajax', function(){
13035        var oNodeForm  = jQuery(this).closest("form");   
13036
13037        if ( ctlFormFieldsCheckIfFormIsFilled(oNodeForm) ){
13038            let oFormData = new FormData();
13039
13040            oFormData.append( 'action', 'ctl-wp-studio' );
13041            oFormData.append( 'execute', 'ctl-php-block' );        
13042            oFormData.append( 'extension-action', jQuery(this).attr("data-ajax-action"));
13043            
13044            oInputFormData = oNodeForm.serializeObject()            
13045
13046            for (let szKey in oInputFormData) {
13047				const value = oInputFormData[szKey];
13048
13049				if (Array.isArray(value)) {
13050					value.forEach(item => {
13051						oFormData.append(szKey+"[]", item);
13052					});
13053				} else {
13054					oFormData.append(szKey, value);
13055				}
13056			}
13057
13058            let aAttributes = jQuery(this).data();
13059            for (let szKey in aAttributes) {
13060                if ( szKey === "ajaxAction" || szKey === "clickClass" || szKey === "ajaxUrl" ){
13061                    continue;
13062                }
13063                oFormData.append( szKey, aAttributes[szKey] );
13064            }
13065
13066            if(oNodeForm.find('.custom-file-input').length > 0){
13067                oNodeForm.find('.custom-file-input').each(function(){
13068                    let oInputFiles = jQuery(this)[0].files;
13069                    let szFieldName = jQuery(this).attr("name");
13070                    for (let i = 0; i < oInputFiles.length; i++) {
13071                        oFormData.append( szFieldName + '[]', oInputFiles[i] );
13072                    }
13073                });
13074            }
13075            
13076            var idLoading = g_oCTLWPStudio.showLoading("");
13077    
13078            jQuery.ajax({
13079                url : g_oCTLWPStudio._oLangCommon["ajaxurl"],
13080                type: "POST",
13081                data : oFormData,
13082                cache: false,
13083                processData : false,
13084                contentType : false,
13085                method: 'POST',
13086                success:function(response, textStatus, jqXHR){                    
13087                    var oResponse = jQuery.parseJSON(response);
13088                    
13089                    g_oCTLWPStudio.closeDlg(idLoading);
13090
13091                    if ( oResponse.res == true ){
13092                        ctlFormFieldsClearForm(oNodeForm); 
13093                    }
13094
13095                    if(oResponse.download){
13096                        g_oCTLWPStudio.downloadFile(oResponse.download);
13097                    }else if ( oResponse.alert ){
13098                        g_oCTLBootstrapModals.alert("", oResponse.alert, function(){
13099                            if ( oResponse.res == true ){
13100                                g_oCTLWPStudio.showLoading("");
13101                                if ( oResponse.redirect ){
13102                                    window.location.href = oResponse.redirect;
13103                                }else{
13104                                    window.location.reload();
13105                                }
13106                            }
13107                        } );
13108                    }else if ( oResponse.res == true ){
13109                        g_oCTLWPStudio.showLoading("");
13110                        if ( oResponse.redirect ){
13111                            window.location.href = oResponse.redirect;
13112                        }else{
13113                            window.location.reload();
13114                        }                        
13115                    }  
13116                },
13117                error: function(jqXHR, textStatus, errorThrown){
13118                    g_oCTLWPStudio.closeDlg(idLoading);
13119                    alert(g_oCTLWPStudio._oLangCommon["Ooops! Something Went Wrong!"]);  
13120                }
13121            });  
13122        }        
13123    });
13124	
13125    jQuery(document).on('click', '.btn-action-submit-email', function() {
13126
13127        var oNodeForm  = jQuery(this).closest("form");        
13128        var oNodeModal = jQuery(this).closest(".modal");
13129        
13130        if ( ctlFormFieldsCheckIfFormIsFilled(oNodeForm) ){
13131            var oFormData = {};
13132            oFormData['action']           = 'ctl-wp-studio';
13133            oFormData['execute']          = 'ctl-form-fields';        
13134            oFormData['extension-action'] = 'submit-email';  
13135            oFormData['layout-id']        = oNodeForm.attr("data-layout-id");
13136            oFormData['widget-id']        = jQuery(this).attr("widget-id");  
13137            oFormData['data']             = oNodeForm.serializeObject();
13138
13139            var idLoading = g_oCTLWPStudio.showLoading("");
13140    
13141            jQuery.ajax({
13142                url : g_oCTLWPStudio._oLangCommon["ajaxurl"],
13143                type: "POST",
13144                data : oFormData,
13145                cache: false,
13146                method: 'POST',
13147                success:function(response, textStatus, jqXHR){
13148                    
13149                    var oResponse = jQuery.parseJSON(response);
13150        
13151                    if( oResponse.res === false ){              
13152                        g_oCTLWPStudio.closeDlg(idLoading);
13153                        if ( oResponse.errors ){
13154                            ctlFormFieldsApplyErrors(oNodeForm, oResponse.errors);
13155                        }  
13156    
13157                        if ( oResponse.alert ){
13158                            g_oCTLBootstrapModals.alert("", oResponse.alert );
13159                        }            
13160                    }else{                
13161                        g_oCTLWPStudio.closeDlg(idLoading);
13162
13163                        if ( oNodeModal.length > 0 ){
13164                            g_oCTLBootstrapModals.closeModal(oNodeModal);
13165                        }
13166
13167                        if ( oResponse.alert ){
13168                            g_oCTLBootstrapModals.alert("", oResponse.alert );
13169                        }                        
13170                    }
13171                },
13172                error: function(jqXHR, textStatus, errorThrown){
13173                    jQuery(document).trigger("ajax-update", [ oFormData["click-class"], false ] );
13174                    g_oCTLWPStudio.closeDlg(idLoading);
13175                    alert(g_oCTLWPStudio._oLangCommon["Ooops! Something Went Wrong!"]);  
13176                }
13177            });  
13178        }
13179    });   
13180
13181    jQuery(document).on("submit", "form", function(e){
13182        if ( ctlFormFieldsCheckIfFormIsFilled(jQuery(this)) ){
13183            if ( jQuery(this).find(".btn-show-loading-on-submit").length > 0 ){
13184                g_oCTLWPStudio.showLoading();
13185            }
13186            return true;
13187        }else{
13188            return false;
13189        }
13190    });
13191
13192    jQuery(document).on("click", ".btn-refresh-page", function(){
13193        g_oCTLWPStudio.showLoading();
13194        window.location.reload();
13195    });    
13196
13197    jQuery(document).on("click", ".btn-clear-form-and-submit", function(){   
13198        let oNodeForm = jQuery(this).closest("form");
13199        ctlFormFieldsClearForm(oNodeForm);
13200        oNodeForm.submit();
13201    });            
13202
13203    jQuery(document).on("click", ".btn-clear-form", function(){   
13204        ctlFormFieldsClearForm(jQuery(this).closest("form"));
13205    });
13206        
13207    jQuery(document).on("click", ".ctl-form-fields-clear-errors", function(){   
13208        var oNodeForm = jQuery(this).closest("form");
13209        if ( oNodeForm.length > 0 ){
13210            ctlFormFieldsCleanErrors(oNodeForm);   
13211        }
13212    });
13213
13214    jQuery(document).on("click", ".btn-action-open-view-page", function(){
13215        var value      = jQuery(this).closest(".ctl-wp-studio-form-control-wrapper").find("select").val();
13216        if (!value){
13217            return;
13218        }
13219
13220        var szUrl      = jQuery(this).attr("data-url");
13221        var szReferral = jQuery(this).attr("data-referral");
13222        var szTarget   = jQuery(this).attr("data-target");
13223
13224		szUrl = g_oCTLWPStudio.addParameterToUrl(szUrl,szReferral,value);
13225		
13226        if ( szTarget === "_blank" ){
13227            window.open(szUrl, '_blank');
13228        }else{
13229            g_oCTLWPStudio.showLoading();
13230            window.location.href = szUrl;
13231        }
13232
13233    });
13234
13235    jQuery(document).on("focus", ".ctltextareafield .note-editable,.form-control", function(){             
13236        ctlFormFieldCleanError(jQuery(this));       
13237    });  
13238
13239    jQuery(document).on("click", ".ctl-form-fields-action-click-custom-file-input", function(){
13240        ctlFormFieldCleanError(jQuery(this)); 
13241    }); 
13242    
13243    jQuery(document).on("click", ".custom-file-input", function(){
13244        ctlFormFieldCleanError(jQuery(this)); 
13245    }); 
13246    
13247    jQuery(document).on("focus", ".custom-radio", function(){
13248        ctlFormFieldCleanError(jQuery(this)); 
13249    });
13250    
13251    jQuery(document).on("focus", ".select2-selection", function(){
13252        ctlFormFieldCleanError(jQuery(this)); 
13253    }); 
13254    
13255    jQuery(document).on("focus", ".custom-checkbox", function(){
13256        ctlFormFieldCleanError(jQuery(this)); 
13257    });     
13258    
13259    jQuery(document).on("click", ".ctl-form-fields-action-click-custom-file-input", function(){
13260        jQuery(this).closest(".ctluploadfield").find('input[type=file]').click();
13261    });    
13262    
13263    jQuery(document).on("change", ".custom-file-image-input", function() {
13264        var oNodeFormControlWrapper = jQuery(this).closest(".ctl-upload-file-field-wrapper");                           
13265        var oImageNode              = oNodeFormControlWrapper.find(".image-preview");
13266
13267        if ( oImageNode.length > 0) {
13268            let bSetDefaultImage = true;
13269            if(this.files && this.files[0]) {
13270                var aFileParts = this.files[0].name.split(".")
13271                
13272                var ext = aFileParts[aFileParts.length-1];
13273                if ( ext == "png" || ext == "gif" || ext == "jpg" || ext == "jpeg" || ext == "bmp" ){
13274                    oImageNode.attr("src", URL.createObjectURL(this.files[0]));
13275                    oNodeFormControlWrapper.removeClass("img-default"); 
13276
13277                    bSetDefaultImage = false;
13278                }
13279            }
13280
13281            if(bSetDefaultImage){
13282                oImageNode.attr("src", oImageNode.attr("data-default-image"));
13283                oNodeFormControlWrapper.addClass("img-default"); 
13284            }
13285        }        
13286
13287        
13288    });
13289
13290    jQuery(document).on("input paste change blur", ".ctlipfield input", function() {
13291        let oNodeInput = jQuery(this);
13292        let ipFormat   = oNodeInput.attr("data-ip-format");
13293
13294        switch(ipFormat){
13295            case "ipv4":{
13296                const value = oNodeInput.val().trim();
13297                value.replace(/[^0-9.]/g, '');
13298
13299                const parts = value.split(".");
13300
13301                // Se non ha 4 parti, non è valido
13302                if (parts.length > 4) {
13303                    parts = parts.splice(0, 4);
13304                }
13305
13306                const validParts = parts.map(part => {
13307                    // Rimuovi zeri iniziali e converti in numero
13308                    let num = parseInt(part, 10);
13309
13310                    // Se NaN o fuori range, resetta input
13311                    if (isNaN(num) || num < 0 || num > 255) {
13312                        return "";
13313                    }
13314
13315                    return String(num);
13316                });
13317
13318                // Ricostruisci IP "sanificato"
13319                oNodeInput.val(validParts.join("."));
13320            }break;
13321        }
13322    });
13323
13324    jQuery(document).on("change", ".custom-file-input", function() {
13325       /* var oNodeFormControlWrapper = jQuery(this).closest(".ctl-upload-file-field-wrapper");
13326        var oNodeMultipleFiles = oNodeFormControlWrapper
13327                                        .find(".ctl-form-fields-multiple-files-preview");  
13328        */                                
13329
13330        //var fileName                = jQuery(this).val().split("\\").pop();
13331
13332        /*
13333        var oImageNode              = jQuery(this).closest(".ctl-upload-file-field-wrapper").
13334                                                    find(".image-preview");
13335*/
13336        var input = this;
13337        var szFileNames = "";
13338        if (input.files){
13339            for( var i = 0; i < input.files.length; i++){
13340                szFileNames += input.files[i].name + ( input.files.length > 1 ? ", " : "");
13341            }
13342        }
13343
13344        jQuery(this).siblings(".custom-file-label").addClass("selected").html(szFileNames);
13345
13346/*
13347        if (input.files && input.files[0]) {
13348            var reader = new FileReader();
13349            reader.onload = function(e) {
13350                
13351                if ( oNodeMultipleFiles.length ){                                            
13352                    var html = '';
13353                    html = '<li>';
13354                        html += '<img class="image-preview rounded img-thumbnail" src="'+ e.target.result + '"/>';
13355                        html += '<span class="text-filename">'+  fileName +'</span>';
13356                        html += '<button class="btn btn-xs btn-anchor ctl-form-fields-multiple-files-action-remove"><i class="fas fa-trash-alt"></i></button>';
13357                        html += '<input class="d-none" name=""/>';
13358                    html += '</li>';
13359
13360                    oNodeMultipleFiles.append(html);
13361                }else if ( oImageNode.length > 0 ){   
13362                    
13363                    var szFileName = fileName.replace(/^.*[\\\/]/, '');
13364                    var ext = szFileName.substring(szFileName.lastIndexOf('+ ')+1, szFileName.length) || szFileName;
13365
13366                    if ( ext == "png" || ext == "gif" || ext == "jpg" || ext == "jpeg" ||
13367                         ext == "bmp" ){
13368                        oImageNode.attr('src', e.target.result);     
13369                        oImageNode.removeClass('d-none');     
13370                    }else{
13371                        oImageNode.addClass('d-none');
13372                    }
13373  
13374                    oImageNode.closest(".ctl-wp-studio-form-control-wrapper").removeClass("img-default"); 
13375                }                
13376            };
13377            reader.readAsDataURL(input.files[0]);
13378        }      
13379        */
13380    });   
13381
13382    wpdk_add_action("ctl-theme-bootstrap-modals-show-modal", function (oNodeModal) {
13383        initCTLNumberFieldAjaxCalculation(oNodeModal);
13384    });
13385
13386    jQuery("form").each(function(){
13387        initCTLNumberFieldAjaxCalculation(jQuery(this));
13388    });
13389    
13390
13391    ctlApplyAutoFocus();
13392    ctlApplySelect2();
13393    ctlApplyCustomFieldsEditor();
13394    new ClipboardJS('.ctl-btn-action-clipboard');    
13395    ctlApplyColorPicker();
13396	ctlApplyCommercialUserFields();    
13397});
13398
13399
13400function initCTLNumberFieldAjaxCalculation(oNodeParent){
13401    
13402    oNodeParent.find('.ctl-number-field-ajax-calculation').each(function(){
13403        let iWidgetID = jQuery(this).attr("data-widget-id");
13404        let oNodeNumberFieldAjaxCalculation = jQuery(this);
13405        let oNodeEditPostDataContainer = oNodeNumberFieldAjaxCalculation.closest(".ctl-edit-post-data-container");
13406        let oAjaxActive = null;
13407        if ( oNodeEditPostDataContainer.length > 0 ){
13408
13409            let aNodesForm = oNodeEditPostDataContainer.children("form");
13410            
13411            for (let i = 0; i < aNodesForm.length; i++) {
13412                let oNodeForm = aNodesForm[i];
13413                jQuery(oNodeForm).find(":input").each(function () {
13414                    jQuery(this).off("paste input").on("paste input", function (e) {
13415                        e.stopPropagation();
13416                        if(oAjaxActive !== null){
13417                            oAjaxActive.abort();
13418                        }
13419                        oAjaxActive = ctlNumberFieldAjaxCalculation(
13420                                oNodeNumberFieldAjaxCalculation,
13421                                aNodesForm,
13422                                iWidgetID,
13423                                oNodeEditPostDataContainer
13424                            );
13425                    });
13426                });
13427            }
13428        }else{
13429            jQuery(this).closest("form").each(function () {
13430                let oNodeForm = jQuery(this);
13431                oNodeForm.find(":input").each(function () {
13432                    jQuery(this).off("paste input").on("paste input", function () {
13433                        if(oAjaxActive !== null){
13434                            oAjaxActive.abort();
13435                        }
13436                        oAjaxActive = ctlNumberFieldAjaxCalculation(
13437                            oNodeNumberFieldAjaxCalculation,
13438                            [oNodeForm],
13439                            iWidgetID,
13440                            null
13441                        );
13442                    });
13443                });
13444            });
13445        }
13446    });
13447}
13448
13449function ctlNumberFieldAjaxCalculation(oNodeNumberFieldAjaxCalculation, aNodesForm, iNumberFieldWidgetID, oNodeEditPostDataContainer = null){
13450    let oNodeFormControlWrapper = jQuery(oNodeNumberFieldAjaxCalculation).find(".ctl-wp-studio-form-control-wrapper");
13451    oNodeFormControlWrapper.removeClass("is-invalid");
13452
13453    let oNodeInput = jQuery(oNodeNumberFieldAjaxCalculation).find("input");
13454    oNodeInput.val("");
13455
13456    let oFormData = new FormData();
13457
13458    oFormData.append( 'action', 'ctl-wp-studio' );
13459    oFormData.append( 'execute', 'ctl-form-fields' );        
13460    oFormData.append( 'extension-action', "number-field-ajax-calculation");
13461    
13462    let oInputFormData = {};
13463
13464    for(let i = 0; i < aNodesForm.length; i++) {
13465        let oNodeForm = jQuery(aNodesForm[i]);
13466        oInputFormData = {...oInputFormData, ...oNodeForm.serializeObject()};
13467    }
13468
13469    for (let szKey in oInputFormData) {
13470        const value = oInputFormData[szKey];
13471
13472        if (Array.isArray(value)) {
13473            value.forEach(item => {
13474                oFormData.append(szKey+"[]", item);
13475            });
13476        } else {
13477            oFormData.append(szKey, value);
13478        }
13479    }
13480
13481    let aAttributes = jQuery(this).data();
13482    for (let szKey in aAttributes) {
13483        if ( szKey === "ajaxAction" || szKey === "clickClass" || szKey === "ajaxUrl" ){
13484            continue;
13485        }
13486        oFormData.append( szKey, aAttributes[szKey] );
13487    }
13488
13489    for(let i = 0; i < aNodesForm.length; i++) {
13490        let oNodeForm = jQuery(aNodesForm[i]);
13491        if(oNodeForm.find('.custom-file-input').length > 0){
13492            oNodeForm.find('.custom-file-input').each(function(){
13493                let oInputFiles = jQuery(this)[0].files;
13494                let szFieldName = jQuery(this).attr("name");
13495                for (let i = 0; i < oInputFiles.length; i++) {
13496                    oFormData.append( szFieldName + '[]', oInputFiles[i] );
13497                }
13498            });
13499        }
13500    }
13501
13502    oFormData.append('widget-id', iNumberFieldWidgetID);
13503    
13504    let aGETParams = g_oCTLWPStudio.getUrlParams();
13505
13506    for (let szKey in aGETParams) {
13507        const value = aGETParams[szKey];
13508        oFormData.append(`get-params[${szKey}]`, value);
13509    }
13510
13511    bTriggerAutoSave = false;
13512
13513    if(oNodeEditPostDataContainer !== null 
13514    && oNodeEditPostDataContainer.data("autosave") === 1){
13515        bTriggerAutoSave = true;
13516    }
13517
13518    return jQuery.ajax({
13519        url : g_oCTLWPStudio._oLangCommon["ajaxurl"],
13520        type: "POST",
13521        data : oFormData,
13522        cache: false,
13523        processData : false,
13524        contentType : false,
13525        method: 'POST',
13526        success:function(response, textStatus, jqXHR){                    
13527            let oResponse = jQuery.parseJSON(response);
13528            
13529            if ( oResponse.res === true ){
13530                oNodeInput.val(oResponse.value);
13531                
13532                if(bTriggerAutoSave){
13533                    ctlEditorFrameworkEditPostAutoSaveData(oNodeEditPostDataContainer.find(".ctl-editors-action-edit-post-data"));
13534                }
13535
13536            }else{
13537                if ( oResponse.error ){
13538                    oNodeFormControlWrapper.addClass("is-invalid");
13539
13540                    jQuery(oNodeNumberFieldAjaxCalculation).find(".invalid-feedback").text(oResponse.error);
13541                }else if(oResponse.alert){
13542                    g_oCTLBootstrapModals.alert("", oResponse.alert );
13543                }else{
13544                    alert(g_oCTLWPStudio._oLangCommon["Ooops! Something Went Wrong!"]); 
13545                }
13546            }
13547        },
13548        error: function(jqXHR, textStatus, errorThrown){
13549            if (textStatus !== 'abort') {
13550                alert(g_oCTLWPStudio._oLangCommon["Ooops! Something Went Wrong!"]);  
13551            }
13552        }
13553    });  
13554}    
13555
13556
13557function ctlApplyAutoFocus(){
13558    jQuery(".form-control.auto-focus").each(function(){
13559        var oNode = jQuery(this);
13560        oNode.attr("tabindex", "0");
13561        setTimeout(function(){
13562            oNode.focus();
13563        }, 100);
13564    });
13565}
13566
13567function ctlApplyCommercialUserFields(){
13568	jQuery(".ctl-commercial-user-type").each(function(){
13569        var idGuid = jQuery(this).closest(".custom-radio").eq(0).attr("data-commercial-user-type-guid");
13570        formFieldRefreshCommercialUserFields(idGuid, false);
13571    }); 
13572}
13573
13574function ctlFormFieldsClearForm( oNodeForm ){
13575    oNodeForm.find(".ctltextfield").each(function(){
13576		if (jQuery(this).attr("type") === "hidden" ){
13577			return;
13578		}        
13579        jQuery(this).find('input').val("");
13580    });    
13581    oNodeForm.find(".ctlcolorfield").each(function(){
13582        jQuery(this).find('input').val("");
13583    });        
13584    oNodeForm.find(".ctluploadfield").each(function(){
13585        jQuery(this).find('input').val("");
13586        jQuery(this).find('.custom-file-label').text("");
13587        jQuery(this).find('input').trigger("change");
13588        
13589        var oNodePreviewImage = jQuery(this).find(".image-preview");
13590        if ( oNodePreviewImage.length > 0 ){
13591            oNodePreviewImage.attr("src", oNodePreviewImage.attr("data-default-image"));
13592        }
13593    });
13594    oNodeForm.find(".ctltextareafield").each(function(){
13595            jQuery(this).find('textarea').val(""); 
13596    });
13597    oNodeForm.find(".ctlipfield").each(function(){
13598            jQuery(this).find('input').val(""); 
13599    });    
13600    oNodeForm.find(".ctldatefield").each(function(){
13601            jQuery(this).find('input').val(""); 
13602    }); 
13603    oNodeForm.find(".ctlnumfield").each(function(){
13604            jQuery(this).find('input').val(""); 
13605    });   
13606    oNodeForm.find(".ctlcheckfield").each(function(){
13607            jQuery(this).find('input').prop("checked", false);
13608    });           
13609    oNodeForm.find(".ctlselectfield").each(function(){
13610            jQuery(this).find("option:selected").prop("selected", false);            
13611    }); 
13612    oNodeForm.find(".ctlselectfield select").each(function(){
13613        jQuery(this).val(null);
13614        jQuery(this).trigger('change');
13615    });
13616	oNodeForm.find(".ctls2searchfield").each(function(){
13617            jQuery(this).find("option:selected").prop("selected", false);            
13618    }); 
13619    oNodeForm.find(".ctls2searchfield select").each(function(){
13620        jQuery(this).val(null);
13621        jQuery(this).trigger('change');
13622    });    
13623
13624    oNodeForm.find(".ctlswitch3sfield").each(function(){
13625        jQuery(this).find("input").val("");
13626        let oNodeControlWrapper = jQuery(this).find(".ctl-switch-3s-control-wrapper");
13627        let szNewState = jQuery(this).data("state");
13628
13629        let szOldState = oNodeControlWrapper.data("state");
13630
13631        if (szNewState == null || szNewState == undefined){
13632            szNewState = "neutral";
13633        }
13634
13635        if (szOldState){
13636            oNodeControlWrapper.removeClass("ctl-switch-3s-" + szOldState);        
13637            if ( szOldState == szNewState ){
13638                szNewState = "neutral";
13639                oNodeControlWrapper.find('input[type=hidden]').val("");
13640            }
13641        }
13642
13643        oNodeControlWrapper.data("state", szNewState);
13644        oNodeControlWrapper.addClass("ctl-switch-3s-" + szNewState);
13645    });
13646
13647    oNodeForm.find(".ctlswitchfield").each(function(){
13648        var oNodeInput = jQuery(this).find(".switch input");
13649        var oNodeInputHidden = jQuery(this).find('input[type=hidden]')
13650
13651        var szOffValue = jQuery(this).find('.switch').attr("data-off-value");
13652
13653        oNodeInputHidden.val(szOffValue)
13654        oNodeInput.val(szOffValue);
13655
13656        jQuery(this).find('.switch').removeClass('on');
13657        jQuery(this).find('input[type=checkbox]').prop('checked', false);
13658    });
13659
13660    ctlFormFieldsCleanErrors(oNodeForm);	
13661}
13662
13663function ctlApplyColorPicker( oNodeParent = null ){
13664
13665    if ( !oNodeParent ){
13666        oNodeParent = jQuery("body");
13667    }
13668
13669    oNodeParent.find(".ctl-color-picker").each(function(){
13670        jQuery(this).colorpicker(
13671            { 
13672                debug : true,
13673                format: "rgba",
13674                useAlpha: true,
13675                popover: {
13676                    placement: 'top'
13677                  }                 
13678            }
13679        );
13680    });
13681}
13682
13683function __ctlFormFieldsConfigFieldsEditTextField( oData, idConfigField ){
13684    var html = "";
13685
13686    html += '<form>';
13687
13688    html += formFieldsBuildHiddenField({
13689        'field-name'  : 'guid',
13690    }, oData.id);  
13691
13692    html += formFieldsBuildTextField({
13693        'label-title' : "Nome campo",
13694        'field-name'  : 'field-name',
13695        'classes'     : 'form-control-sm',
13696        'display'     : 12,
13697        'mandatory'   : true,
13698    }, oData["title"]);        
13699
13700    html += formFieldsBuildRadioField({
13701        'label-title' : "Obbligatorio?",
13702        "field-name"  : "mandatory",
13703        "display"     : 12,
13704        'mandatory'   : true,
13705    }, [ { "label" : "si", "value" : 1, "selected" : false },
13706         { "label" : "no", "value" : 0, "selected" : false } ], oData["mandatory"]);        
13707
13708    html += '</form>';
13709
13710    g_oCTLBootstrapModals.showModal({ 
13711        modal_title   : "Text field",
13712        modal_content : html,
13713        position      : "centered",
13714        entrance_animation : "animate__slideInUp",
13715        exit_animation : "animate__slideOutDown",
13716        footer_buttons : ['<button data-id-field-config="' + idConfigField + 
13717        '" class="btn btn-primary ctl-form-fields-action-edit-text-field">modifica</button>']
13718    }); 
13719}
13720
13721function __ctlFormFieldsConfigFieldsEditCalendarField( oData, idConfigField ){
13722    var html = "";
13723
13724    html += '<form>';
13725
13726    html += formFieldsBuildHiddenField({
13727        'field-name'  : 'guid',
13728    }, oData.id);  
13729
13730    html += formFieldsBuildTextField({
13731        'label-title' : "Nome campo",
13732        'field-name'  : 'field-name',
13733        'classes'     : 'form-control-sm',
13734        'display'     : 12,
13735        'mandatory'   : true,
13736    }, oData["title"]);        
13737
13738    html += formFieldsBuildRadioField({
13739        'label-title' : "Obbligatorio?",
13740        "field-name"  : "mandatory",
13741        "display"     : 12,
13742        'mandatory'   : true,
13743    }, [ { "label" : "si", "value" : 1, "selected" : false },
13744         { "label" : "no", "value" : 0, "selected" : false } ], oData["mandatory"]);        
13745
13746    html += '</form>';
13747
13748    g_oCTLBootstrapModals.showModal({ 
13749        modal_title   : "Text field",
13750        modal_content : html,
13751        position      : "centered",
13752        entrance_animation : "animate__slideInUp",
13753        exit_animation : "animate__slideOutDown",
13754        footer_buttons : ['<button data-id-field-config="' + idConfigField + 
13755        '" class="btn btn-primary ctl-form-fields-action-edit-calendar-field">modifica</button>']
13756    }); 
13757}
13758
13759function __ctlFormFieldsConfigFieldsEditRadioField( oData, idConfigField ){
13760    var html = "";
13761
13762    html += '<form>';
13763
13764    html += formFieldsBuildHiddenField({
13765        'field-name'  : 'guid',
13766    }, oData.id);       
13767
13768    html += formFieldsBuildTextField({
13769        'label-title' : "Nome campo",
13770        'field-name'  : 'field-name',
13771        'classes'     : 'form-control-sm',
13772        'mandatory'   : true,
13773        'display'     : 12,
13774    }, oData.title);        
13775    
13776    html += formFieldsBuildDraggableListField({
13777        "fieldname" : "radio-values",
13778        "display"   : 12,
13779        "label-title" : "Input radio per scelta singola",
13780        "show-values" : true,
13781        "manually-add-items" : true,
13782        "delete-items"       : true, 
13783        'mandatory'          : true,
13784    }, oData.items);
13785
13786    html += formFieldsBuildRadioField({
13787        'label-title' : "Obbligatorio?",
13788        "field-name"  : "mandatory",
13789        "display"     : 12,
13790        'mandatory'   : true,
13791    }, [ { "label" : "si", "value" : 1, "selected" : false },
13792         { "label" : "no", "value" : 0, "selected" : false } ], oData["mandatory"] );
13793    
13794    html += '</form>';
13795
13796    g_oCTLBootstrapModals.showModal({ 
13797        modal_title   : "Radio field",
13798        modal_content : html,
13799        position      : "centered",
13800        entrance_animation : "animate__slideInUp",
13801        exit_animation : "animate__slideOutDown",
13802        footer_buttons : ['<button data-id-field-config="' + idConfigField + 
13803                            '" class="btn btn-primary ctl-form-fields-action-edit-radio-field">modifica</button>']
13804    });    
13805}
13806
13807function ctlApplyCustomFieldsEditor(){
13808    jQuery( ".ctl-wp-studio-form-control-wrapper .ctl-form-fields-config-fields-data").each(function(){
13809        var szValue = jQuery(this).val();
13810        if (!szValue){
13811            return;
13812        }
13813
13814        var oNodeFieldContainer = jQuery(this).closest(".ctlcustomfields").find(".ctl-form-fields-config-fields-container");
13815        __ctlFormFieldsUpdateConfigFieldList( oNodeFieldContainer, JSON.parse(Base64.decode(szValue)) ) 
13816    });
13817}
13818
13819function ctlFormFieldsAjaxUpdateFormData( oNodeForm, oFormData, cb ){
13820    var idLoading = g_oCTLWPStudio.showLoading("");
13821    
13822    jQuery.ajax({
13823        url : g_oCTLWPStudio._oLangCommon["ajaxurl"],
13824        type: "POST",
13825        data : oFormData,
13826        cache: false,
13827        processData : false,
13828        contentType : false,
13829        method: 'POST',
13830        success:function(response, textStatus, jqXHR){
13831            var oResponse = jQuery.parseJSON(response);
13832
13833            if( oResponse.res === false ){     
13834                ctlFormFieldsApplyErrors(oNodeForm, oResponse.errors);
13835            }
13836
13837            g_oCTLWPStudio.closeDlg(idLoading);                    
13838            if (cb){
13839                cb.call(this, oResponse);
13840            }            
13841        },
13842        error: function(jqXHR, textStatus, errorThrown){
13843            g_oCTLWPStudio.closeDlg(idLoading);
13844            alert(g_oCTLWPStudio._oLangCommon["Ooops! Something Went Wrong!"]);  
13845        }
13846    });    
13847}
13848
13849
13850function ctlFormFieldsMaximizeSelector( oNodeButton ){
13851
13852    var url = window.location.href;
13853    oNodeToMaximize = jQuery(oNodeButton.attr("data-maximize-selector"));
13854
13855    var bMaximized = oNodeToMaximize.hasClass("ctl-maximize");
13856
13857    if ( bMaximized ){
13858        oNodeToMaximize.removeClass("ctl-maximize");
13859        url = g_oCTLWPStudio.removeParameterFromUrl(url, "maximize");
13860    }else{
13861        oNodeToMaximize.addClass("ctl-maximize");
13862        url = g_oCTLWPStudio.addParameterToUrl(url, "maximize", oNodeButton.attr("data-maximize-selector"));  
13863    }
13864
13865    if ( oNodeButton.closest(".ctl-theme-table-main-wrapper").length > 0 ){
13866        oNodeButton.closest(".ctl-theme-table-main-wrapper").find(".btn-action-maximize").each(function(){
13867            if (bMaximized){
13868                jQuery(this).find(".btn-text").text(g_oCTLFormFieldsLocalizationCommon["Maximize"]);
13869                jQuery(this).find("i").attr("class", "ctl-wp-studio-icons-resize-full-alt");
13870            }else{
13871                jQuery(this).find(".btn-text").text(g_oCTLFormFieldsLocalizationCommon["Minimize"]);    
13872                jQuery(this).find("i").attr("class", "ctl-wp-studio-icons-resize-small");
13873            }
13874        });
13875    }else{
13876        if (bMaximized){
13877            oNodeButton.find(".btn-text").text(g_oCTLFormFieldsLocalizationCommon["Maximize"]);
13878            oNodeButton.find("i").attr("class", "ctl-wp-studio-icons-resize-full-alt");
13879        }else{
13880            oNodeButton.find(".btn-text").text(g_oCTLFormFieldsLocalizationCommon["Minimize"]);    
13881            oNodeButton.find("i").attr("class", "ctl-wp-studio-icons-resize-small");
13882        }
13883    }
13884
13885    oNodeButton.blur();
13886
13887    if(history.pushState) {
13888        history.pushState(null, null, url);
13889    }   
13890
13891    window.dispatchEvent(new Event('resize'));  
13892
13893    if ( bMaximized ){
13894        var iOffsetTop = oNodeToMaximize.offset().top;
13895            if( oNodeToMaximize.closest(".modal").length > 0 ){
13896            iOffsetTop -= jQuery('.modal-body').offset().top;
13897            jQuery('.modal-body').animate({ scrollTop: iOffsetTop }, 'slow');    
13898        }else{
13899            iOffsetTop -= 150;
13900            jQuery('html,body').animate({ scrollTop: iOffsetTop }, 'slow');    
13901        } 
13902    }
13903}
13904
13905/**
13906 * @param {jQuery} $aNodes - Un oggetto jQuery contenente i contenitori da indicizzare
13907 */
13908function ctlFormFieldsAssignIndexesToArrayFields($aNodes) {
13909
13910    // Usiamo la collezione totale di nodi per garantire che l'index sia progressivo
13911    $aNodes.each(function(globalIndex) {
13912        const $container = $(this);
13913
13914        // Cerchiamo tutti gli elementi con un attributo 'name' nel blocco corrente
13915        $container.find('[name]').each(function() {
13916            const $campo = $(this);
13917            const currentName = $campo.attr('name') || "";
13918
13919            // 1. Aggiornamento del Name (Cardinalità)
13920            // La regex ora è più flessibile per catturare [] o [0], [1], ecc.
13921            const regex = /\[(\d*)\]/; 
13922            
13923            if (regex.test(currentName)) {
13924                // Sostituiamo qualsiasi cosa ci sia tra le quadre con globalIndex
13925                const newName = currentName.replace(regex, `[${globalIndex}]`);
13926                $campo.attr('name', newName);
13927            }
13928
13929            // 2. Ripristino del check (Cruciale per i radio che perdono il valore)
13930            if ($campo.is(':radio, :checkbox')) {
13931                if ($campo.attr('checked') !== undefined || $campo.prop('checked') === true) {
13932                    $campo.prop('checked', true);
13933                }
13934            }
13935
13936            // 3. Gestione ID e Label per Bootstrap Custom Controls
13937            const oldId = $campo.attr('id');
13938            if (oldId) {
13939                // Puliamo l'ID da eventuali indici precedenti per evitare accumuli (es: id_0_0_0)
13940                const baseId = oldId.replace(/_\d+$/, "");
13941                const newId = `${baseId}_${globalIndex}`;
13942                
13943                $campo.attr('id', newId);
13944
13945                // Aggiorniamo la label corrispondente
13946                // Cerchiamo la label che ha il vecchio ID o che è stata già rinominata
13947                $container.find(`label[for^="${baseId}"]`).attr('for', newId);
13948            }
13949        });
13950    });
13951}
13952
13953function ctlApplySelect2( oNodeParent = null ){
13954
13955    if ( !oNodeParent ){
13956        oNodeParent = jQuery('body');
13957    }
13958
13959    oNodeParent.find( ".ctl-wp-studio-form-control-wrapper .ctl-wp-studio-select2-search" ).each(function(){
13960/*
13961        google android drops with optimized ux on mobile, do fallback with select2, is the best way to use select multiple on mobile
13962        if ( !jQuery(this).attr("data-type-search") &&
13963             jQuery(this).prop("multiple") && g_oCTLWPStudio._oLangCommon["bIsMobile"] ){
13964            return;
13965        }
13966*/
13967        g_oCTLWPStudio.createSelect2(jQuery(this));
13968    });   
13969
13970    oNodeParent.find(".ctl-select2").each(function(){
13971/*
13972        google android drops with optimized ux on mobile, do fallback with select2, is the best way to use select multiple on mobile
13973        if ( !jQuery(this).attr("data-type-search") &&
13974             jQuery(this).prop("multiple") && g_oCTLWPStudio._oLangCommon["bIsMobile"] ){
13975			jQuery(this).find("option[value='']").remove();
13976            return;
13977        }
13978*/
13979        var oConfig = { 
13980            width: jQuery(this).data('width') ? 
13981                        jQuery(this).data('width') : 
13982                        jQuery(this).hasClass('w-100') ? 
13983                        '100%' : 'style',
13984            placeholder: ""};
13985        
13986        //if ( g_aActivatedExtension.includes("ctl-bootstrap-4")){
13987            oConfig["theme"] = 'bootstrap4';
13988        //}
13989        
13990        jQuery(this).find("option").each(function(){
13991            if ( jQuery(this).val() == "" || !jQuery(this).val() ){
13992                oConfig["placeholder"] = jQuery(this).text();
13993            }
13994        });
13995		
13996		if (!jQuery(this).attr("multiple")){
13997			oConfig["allowClear"] = true;
13998		}
13999        
14000        if ( jQuery(this).data('allow-clear') === false ){
14001            oConfig["allowClear"] = false;
14002        }
14003
14004        if ( jQuery(this).data('search-input') === false ){
14005            oConfig["minimumResultsForSearch"] = Infinity;
14006        }        
14007
14008        jQuery(this).select2(oConfig);
14009    });
14010
14011    oNodeParent.find(".ctl-form-fields-cascading-select2-search-cpt").each(function(){
14012        ctlFormFieldsCreateCascadingSelect2CPT(jQuery(this));
14013    }); 
14014
14015    oNodeParent.find(".ctl-form-fields-cascading-select2-search-cpt").each(function(){
14016        let index = jQuery(this).data("select-index");
14017        if ( index == 0 && 
14018            (jQuery(this).val() === "" || jQuery(this).val() === null) ){
14019            jQuery(this).trigger("change");
14020        }
14021    });
14022    
14023    oNodeParent.find(".ctl-wp-studio-select2-search-posts").each(function(){
14024        ctlFormFieldsCreateSelect2SearchCPTs(jQuery(this));
14025    }); 
14026
14027    oNodeParent.find(".ctl-wp-studio-select2-search-users").each(function(){
14028        ctlFormFieldsCreateSelect2SearchUsers(jQuery(this));
14029    });     
14030}
14031
14032function ctlFormFieldsDeentitize( szValue ) {
14033    var ret = szValue.replace(/&gt;/g, '>');
14034    ret = ret.replace(/&lt;/g, '<');
14035    ret = ret.replace(/&quot;/g, '"');
14036    ret = ret.replace(/&apos;/g, "'");
14037    ret = ret.replace(/&amp;/g, '&');
14038    return ret;
14039};
14040
14041function ctlFormFieldsCreateSelect2SearchCPTs( oNodeSelect ){
14042    var idWidget = oNodeSelect.attr("data-widget-id");
14043	var idPostParent = oNodeSelect.data("post-parent-id");
14044
14045    var bDisabled = oNodeSelect[0].hasAttribute("disabled");
14046
14047    let szLabelSuggestion = oNodeSelect.data("label-suggestion");
14048    if ( !szLabelSuggestion ){
14049        szLabelSuggestion = g_oCTLWPStudio._oLangCommon["Search..."];
14050    }
14051	var oSelectInit = {
14052        width: '100%', 
14053         disabled : bDisabled,
14054         theme: 'bootstrap4',
14055         templateResult: function(state) {
14056            if(state.img){
14057                return jQuery('<img onerror="g_oCTLWPStudio.onImageError(this)"class="ctl-wp-studio-select2-option-img" src="' + state.img + '"/><span>' + state.text + "</span>");
14058            }else{
14059               return state.text;
14060            }
14061         },       
14062		templateSelection: function (data) {
14063			if (!data.id) return data.text;
14064
14065			const $option = $(data.element);
14066			let szValue = ctlFormFieldsDeentitize($option.html());
14067			return szValue; 
14068		},              
14069         language: {
14070            inputTooShort: function (args) {
14071            var remainingChars = args.minimum - args.input.length;
14072
14073            return sprintf(g_oCTLWPStudio._oLangCommon["Please enter %d or more characters"], remainingChars);
14074            },                
14075            errorLoading: function () {
14076                return g_oCTLWPStudio._oLangCommon["The results could not be loaded."];
14077            },
14078            loadingMore: function () {
14079            return g_oCTLWPStudio._oLangCommon["Loading more results..."];
14080            },                
14081            searching: function(){
14082                return g_oCTLWPStudio._oLangCommon["Searching..."];
14083            },
14084            noResults: function(){
14085                return g_oCTLWPStudio._oLangCommon["No Results Found!"];
14086            }
14087         },
14088         escapeMarkup: function (markup) {
14089             return markup;
14090         },            
14091         ajax: {
14092            url: g_oCTLWPStudio._oLangCommon.ajaxurl,
14093            dataType: 'json',
14094            type: 'POST',
14095            processResults: function (data) {
14096                // Tranforms the top-level key of the response object from 'items' to 'results'
14097                oNodeSelect.prop("data-items", data.items);
14098
14099                return {
14100                    results: data.items
14101                };
14102            },              
14103            data: function (params) {
14104                var query = {
14105                    search             : params.term,
14106                    page               : params.page || -1,
14107                    action             : g_oCTLWPStudio._szPluginCode,
14108                    execute            : "ctl-form-fields",
14109                    "widget-id"        : idWidget,                    
14110                    "extension-action" : "select2-search-posts",
14111					"get-params"       : g_oCTLWPStudio.getUrlParams()
14112                };       
14113				if(idPostParent){
14114					query["post-parent-id"] = idPostParent;
14115				}
14116                return query;
14117            }
14118        },
14119        placeholder: szLabelSuggestion
14120     };
14121	
14122	if ( oNodeSelect.closest(".input-group").length === 0 ){
14123		oSelectInit["width"]      = '100%';
14124   	    oSelectInit["allowClear"] = true;
14125	}else{
14126		if ( oNodeSelect.closest(".input-group").find(".btn-action-empty-select2").length === 0 ){
14127			oSelectInit["allowClear"] = true;
14128		}
14129	}	
14130    
14131    oNodeSelect.select2(oSelectInit);
14132};
14133
14134function ctlFormFieldsCreateSelect2SearchUsers( oNodeSelect ){
14135    var idWidget = oNodeSelect.attr("data-widget-id");
14136    let szTargetedPost = oNodeSelect.data("targeted-post-id");
14137
14138    var bDisabled = oNodeSelect[0].hasAttribute("disabled");
14139
14140    let szLabelSuggestion = oNodeSelect.data("label-suggestion");
14141    if ( !szLabelSuggestion ){
14142        szLabelSuggestion = g_oCTLWPStudio._oLangCommon["Search..."];
14143    }
14144
14145	var oSelectInit = {
14146         disabled : bDisabled,
14147         theme: 'bootstrap4',
14148         templateResult: function(state) {
14149            if(state.img){
14150                return jQuery('<img onerror="g_oCTLWPStudio.onImageError(this)"class="ctl-wp-studio-select2-option-img" src="' + state.img + '"/><span>' + state.text + "</span>");
14151            }else{
14152                return state.text;
14153            }
14154         },  
14155        templateSelection: function (data) {
14156            if (!data.id) return data.text;
14157
14158            const $option = $(data.element);
14159            return $option.html(); // mostra il contenuto anche nel campo selezionato
14160        },                   
14161         language: {
14162            inputTooShort: function (args) {
14163            var remainingChars = args.minimum - args.input.length;
14164
14165            return sprintf(g_oCTLWPStudio._oLangCommon["Please enter %d or more characters"], remainingChars);
14166            },                
14167            errorLoading: function () {
14168                return g_oCTLWPStudio._oLangCommon["The results could not be loaded."];
14169            },
14170            loadingMore: function () {
14171            return g_oCTLWPStudio._oLangCommon["Loading more results..."];
14172            },                
14173            searching: function(){
14174                return g_oCTLWPStudio._oLangCommon["Searching..."];
14175            },
14176            noResults: function(){
14177                return g_oCTLWPStudio._oLangCommon["No Results Found!"];
14178            }
14179         },
14180         escapeMarkup: function (markup) {
14181             return markup;
14182         },            
14183         ajax: {
14184            url: g_oCTLWPStudio._oLangCommon.ajaxurl,
14185            dataType: 'json',
14186            type: 'POST',
14187            processResults: function (data) {
14188                // Tranforms the top-level key of the response object from 'items' to 'results'
14189                oNodeSelect.prop("data-items", data.items);    
14190                return {
14191                    results: data.items
14192                };
14193            },              
14194            data: function (params) {
14195                var query = {
14196                    search             : params.term,
14197                    page               : params.page || -1,
14198                    action             : g_oCTLWPStudio._szPluginCode,
14199                    execute            : "ctl-form-fields",
14200                    "widget-id"        : idWidget,                    
14201                    "extension-action" : "select2-search-users",
14202                    "get-params"       : g_oCTLWPStudio.getUrlParams(),
14203                };        
14204
14205                if ( szTargetedPost ){
14206                    query["targeted-post-id"] = szTargetedPost;
14207                }
14208
14209                return query;
14210            }
14211        },
14212        placeholder: szLabelSuggestion
14213     };
14214	
14215	if ( oNodeSelect.closest(".input-group").length === 0 ){
14216		oSelectInit["width"]      = '100%';
14217   	    oSelectInit["allowClear"] = true;
14218	}else{
14219		if ( oNodeSelect.closest(".input-group").find(".btn-action-empty-select2").length === 0 ){
14220			oSelectInit["allowClear"] = true;
14221		}
14222	}	
14223    
14224    oNodeSelect.select2(oSelectInit);
14225};
14226
14227function ctlFormFieldsCreateCascadingSelect2CPT( oNodeSelect ){
14228
14229    var bDisabled = oNodeSelect[0].hasAttribute("disabled");
14230
14231    let szLabelSuggestion = oNodeSelect.data("label-suggestion");
14232    if ( !szLabelSuggestion ){
14233        szLabelSuggestion = g_oCTLWPStudio._oLangCommon["Search..."];
14234    }
14235
14236	var oSelectInit = {
14237         disabled : bDisabled,
14238         theme: 'bootstrap4',
14239         templateResult: function(state) {
14240            if(state.img){
14241                return jQuery('<img onerror="g_oCTLWPStudio.onImageError(this)"class="ctl-wp-studio-select2-option-img" src="' + state.img + '"/><span>' + state.text + "</span>");
14242            }else{
14243                return state.text;
14244            }
14245         },            
14246         language: {
14247            inputTooShort: function (args) {
14248            var remainingChars = args.minimum - args.input.length;
14249
14250            return sprintf(g_oCTLWPStudio._oLangCommon["Please enter %d or more characters"], remainingChars);
14251            },                
14252            errorLoading: function () {
14253                return g_oCTLWPStudio._oLangCommon["The results could not be loaded."];
14254            },
14255            loadingMore: function () {
14256            return g_oCTLWPStudio._oLangCommon["Loading more results..."];
14257            },                
14258            searching: function(){
14259                return g_oCTLWPStudio._oLangCommon["Searching..."];
14260            },
14261            noResults: function(){
14262                return g_oCTLWPStudio._oLangCommon["No Results Found!"];
14263            }
14264         },
14265         escapeMarkup: function (markup) {
14266             return markup;
14267         },            
14268         ajax: {
14269            url: g_oCTLWPStudio._oLangCommon.ajaxurl,
14270            dataType: 'json',
14271            type: 'POST',
14272            processResults: function (data) {
14273                // Tranforms the top-level key of the response object from 'items' to 'results'
14274                oNodeSelect.prop("data-items", data.items);    
14275                return {
14276                    results: data.items
14277                };
14278            },              
14279            data: function (params) {
14280                var idCascadingFieldGuid = oNodeSelect.attr("data-cascading-fields-guid");
14281                var idWidget       = oNodeSelect.attr("data-widget-id");
14282                var idSelect       = oNodeSelect.attr("data-select-id");
14283                var idParentSelect = oNodeSelect.attr("data-parent-select-index");
14284                var oNodeParentSelect = jQuery(
14285                                        "."+idCascadingFieldGuid+".ctl-form-fields-cascading-select2-search-cpt-"+idParentSelect);
14286                var idPostParent   = ( oNodeParentSelect.length > 0 ? oNodeParentSelect.val() : 0 );
14287
14288                
14289                var query = {
14290                    search             : params.term,
14291                    page               : params.page || -1,
14292                    action             : g_oCTLWPStudio._szPluginCode,
14293                    execute            : "ctl-form-fields",
14294                    "widget-id"        : idWidget,         
14295                    "select-id"        : idSelect,                
14296                    "extension-action" : "cascading-select-search2-cpt",
14297                    "post-parent"      : idPostParent,
14298                    "get-params"       : g_oCTLWPStudio.getUrlParams()
14299                };
14300
14301                return query;
14302            }
14303        },
14304        placeholder: szLabelSuggestion
14305     };
14306	
14307	if ( oNodeSelect.closest(".input-group").length === 0 ){
14308		oSelectInit["width"]      = '100%';
14309   	    oSelectInit["allowClear"] = true;
14310	}else{
14311		if ( oNodeSelect.closest(".input-group").find(".btn-action-empty-select2").length === 0 ){
14312			oSelectInit["allowClear"] = true;
14313		}
14314	}	
14315    
14316    oNodeSelect.select2(oSelectInit);
14317};
14318
14319function ctlFormFieldsScrollToError(){
14320    if ( jQuery(".is-invalid").length === 0 ){
14321        return;
14322    }
14323    let oNodeAccordion = jQuery(".is-invalid").closest(".collapse");
14324    if ( oNodeAccordion.length > 0 ){
14325        oNodeAccordion.collapse('show');
14326    }
14327 
14328    var oNodefirstError = jQuery(".is-invalid").eq(0);
14329    var iOffsetTop = jQuery(".is-invalid").eq(0).offset().top;
14330    if( oNodefirstError.closest(".modal").length > 0 ){
14331        iOffsetTop -= jQuery('.modal-body').offset().top;
14332        jQuery('.modal-body').stop().animate({ scrollTop: iOffsetTop }, 'slow');    
14333    }else{
14334        iOffsetTop -= 150;
14335        jQuery('html,body').stop().animate({ scrollTop: iOffsetTop }, 'slow');    
14336    }             
14337}
14338
14339function ctlFormFieldCleanError( oNodeControl ){    
14340    var oNodeFormGroup = oNodeControl.closest(".form-group").eq(0);
14341
14342    oNodeFormGroup.find(".is-invalid").each(function(){
14343        jQuery(this).removeClass("is-invalid");
14344    });  
14345    oNodeFormGroup.find(".invalid-feedback").each(function(){
14346        jQuery(this).text("");
14347    });                    
14348}
14349
14350function ctlFormFieldsCleanErrors( oNodeForm ){
14351    if ( oNodeForm.length > 0 ){
14352        oNodeForm.find(".is-invalid").each(function(){
14353            jQuery(this).removeClass("is-invalid");
14354        });  
14355        oNodeForm.find(".invalid-feedback").each(function(){
14356            jQuery(this).text("");
14357        });                    
14358    } 
14359}
14360
14361function ctlFormFieldsApplyErrors( oNodeForm, aErrors ){
14362
14363    if ( !aErrors ){
14364        return;
14365    }    
14366    
14367    if ( aErrors.length > 0 ){
14368        for( var i = 0; i < aErrors.length; i++ ){
14369            var oError = aErrors[i];
14370            var oNodeField  = oNodeForm.find('*[name="'+oError.name+'"]');
14371
14372            if("index" in oError){
14373                oNodeField = oNodeField.eq(oError.index);
14374            }
14375
14376            if( oNodeField.length > 0 ){
14377                ctlFormFieldsApplyError( oNodeField, oError.desc );
14378            }  
14379        }    
14380        ctlFormFieldsScrollToError();
14381    }
14382}
14383
14384function ctlFormFieldsCheckIfFormIsFilled( oNode, bShowErrors = true ){ 
14385
14386    if ( bShowErrors ){
14387        ctlFormFieldsCleanErrors(oNode);  
14388    }
14389    
14390    var bFilled = true;
14391    
14392    oNode.find(".ctl-wp-studio-form-control-wrapper").each(function(){
14393        if ( !ctlFormFieldsCheckIfFormControlIsFilled(jQuery(this), bShowErrors) ){
14394            bFilled = false;
14395        }
14396    }); 
14397    
14398    if (!bFilled && bShowErrors == true ){
14399        ctlFormFieldsScrollToError();
14400    }
14401    
14402    return bFilled;
14403}
14404
14405function ctlFormFieldsCheckIfFormControlIsFilled( oNodeFormControlWrapper, bShowErrors = true ){ 
14406
14407    if ( oNodeFormControlWrapper.hasClass("ctlhtmlfield")){
14408        let oNodeDropboxFolderWrapper = oNodeFormControlWrapper.closest(".ctl-dropbox-folder-wrapper");
14409        if(oNodeDropboxFolderWrapper.length > 0){
14410            return __ctlFormFieldsValidateDropboxFolderField(oNodeDropboxFolderWrapper, bShowErrors);
14411        }
14412    }
14413
14414	if ( oNodeFormControlWrapper.hasClass("ctlnumfield") ){
14415        return __ctlFormFieldsValidateNumberField(oNodeFormControlWrapper, bShowErrors );
14416	}else if ( oNodeFormControlWrapper.hasClass("ctltextfield") ){
14417        return __ctlFormFieldsValidateTextField(oNodeFormControlWrapper, bShowErrors);
14418	}else if ( oNodeFormControlWrapper.hasClass("ctlibanfield") ){
14419        return __ctlFormFieldsValidateIbanField(oNodeFormControlWrapper, bShowErrors);
14420	}else if ( oNodeFormControlWrapper.hasClass("ctlcffield") ){
14421        return __ctlFormFieldsValidateCFField(oNodeFormControlWrapper, bShowErrors);
14422	}else if ( oNodeFormControlWrapper.hasClass("ctlipfield") ){
14423        return __ctlFormFieldsValidateIPField(oNodeFormControlWrapper, bShowErrors);
14424	}else if ( oNodeFormControlWrapper.hasClass("ctlcolorfield") ){
14425        return __ctlFormFieldsValidateColorField(oNodeFormControlWrapper, bShowErrors);
14426    }else if ( oNodeFormControlWrapper.hasClass("ctltextareafield") ){
14427        return __ctlFormFieldsValidateTextAreaField(oNodeFormControlWrapper, bShowErrors);
14428	}else if ( oNodeFormControlWrapper.hasClass("ctlselectfield") ){
14429        return __ctlFormFieldsValidateSelectField(oNodeFormControlWrapper, bShowErrors);
14430	}else if ( oNodeFormControlWrapper.hasClass("ctls2searchfield") ){
14431        return __ctlFormFieldsValidateSelectField(oNodeFormControlWrapper, bShowErrors);
14432	}else if ( oNodeFormControlWrapper.hasClass("ctlradiofield") ){
14433        return __ctlFormFieldsValidateRadioField(oNodeFormControlWrapper, bShowErrors);
14434	}else if ( oNodeFormControlWrapper.hasClass("ctlcheckfield") ){
14435        return __ctlFormFieldsValidateCheckField(oNodeFormControlWrapper, bShowErrors);
14436	}else if ( oNodeFormControlWrapper.hasClass("ctldatefield") ){
14437        return __ctlFormFieldsValidateTextField(oNodeFormControlWrapper, bShowErrors);
14438	}else if ( oNodeFormControlWrapper.hasClass("ctluploadfield") ){
14439        return __ctlFormFieldsValidateInputFileField(oNodeFormControlWrapper, bShowErrors);
14440	}else if ( oNodeFormControlWrapper.hasClass("ctlbirthdatefield") ){ 
14441        return __ctlFormFieldsValidateBirthdateField(oNodeFormControlWrapper, bShowErrors);
14442	}else if ( oNodeFormControlWrapper.hasClass("ctldraglistfield") ){ 
14443        return __ctlFormFieldsValidateDraggableListField(oNodeFormControlWrapper, bShowErrors);
14444	}else if ( oNodeFormControlWrapper.hasClass("ctlsignaturefield") ){ 
14445        return __ctlFormFieldsValidateSignatureField(oNodeFormControlWrapper, bShowErrors);
14446	}else if ( oNodeFormControlWrapper.hasClass("mandatory")){
14447		return __ctlFormFieldsValidateGenericField(oNodeFormControlWrapper, bShowErrors);  
14448	}
14449
14450	return true;
14451}
14452
14453function __ctlFormFieldsValidateGenericField(oNodeFormControlWrapper, bShowErrors = true){
14454    var oNodeField = oNodeFormControlWrapper.find('input[type=text]');
14455    
14456    if ( oNodeField.length === 0 ){
14457        oNodeField = oNodeFormControlWrapper.find('input[type=password]');
14458    }
14459    
14460    if ( oNodeField.length === 0 ){
14461        oNodeField = oNodeFormControlWrapper.find('input[type=email]');
14462    }
14463
14464    if ( oNodeField.length === 0 ){
14465        oNodeField = oNodeFormControlWrapper.find('input[type=hidden]');
14466    } 
14467
14468    if ( oNodeField.length === 0 ){
14469        oNodeField = oNodeFormControlWrapper.find('input[type=number]');
14470    }     
14471    
14472    if ( oNodeField.length === 0 ){
14473        oNodeField = oNodeFormControlWrapper.find('textarea');
14474    } 
14475    
14476    if ( oNodeField.length === 0 ){
14477        oNodeField = oNodeFormControlWrapper.find('.ctl-media-gallery-list');
14478    }     
14479    
14480    var szValue = oNodeField.val();
14481
14482	if ( !szValue || szValue === "" || szValue === 0 ){
14483        if (bShowErrors){
14484		    ctlFormFieldsApplyError(oNodeField, g_oCTLFormFieldsLocalizationCommon["Empty field"] );		
14485        }
14486		return false;
14487	}
14488	
14489	return true;
14490}
14491
14492function ctlFormFieldsApplyError( oNodeField, szErrorMessage ){    
14493    oNodeField.closest(".ctl-wp-studio-form-control-wrapper").addClass("is-invalid");
14494    oNodeField.addClass("is-invalid");
14495    var oNodeInvalidFeedback = oNodeField.closest(".form-group").find(".invalid-feedback");
14496    oNodeInvalidFeedback.text(szErrorMessage);    
14497}
14498
14499function __ctlFormFieldsValidateNumberField(oNodeFormControlWrapper, bShowErrors = true ){
14500
14501    var oNodeField = oNodeFormControlWrapper.find('input[type=number]');
14502	var szValue = oNodeField.val();
14503	
14504	if ( oNodeFormControlWrapper.hasClass("mandatory") ){
14505        if( szValue === "" ){
14506            var aAlternativeFields = oNodeFormControlWrapper.attr("data-alternative-mandatory-fields");
14507            if ( aAlternativeFields ){
14508                var oNodeForm = oNodeFormControlWrapper.closest("form");
14509                aAlternativeFields = aAlternativeFields.split(",");
14510                var bFound = false;
14511                for( var i = 0; i < aAlternativeFields.length; i++ ){
14512                    oNodeForm.find('input[name='+aAlternativeFields[i]+'],select[name='+aAlternativeFields[i]+'],textarea[name='+aAlternativeFields[i]+']' ).each(function(){
14513                        if ( jQuery(this).val() !== "" ){
14514                            bFound = true;
14515                        }
14516                    });
14517                }
14518                if (!bFound){
14519                    if (bShowErrors){
14520                        ctlFormFieldsApplyError(oNodeField, g_oCTLFormFieldsLocalizationCommon["Empty field"] );
14521                    }                    
14522                    return false;
14523                }
14524            }else{
14525                if (bShowErrors){
14526                    ctlFormFieldsApplyError(oNodeField, g_oCTLFormFieldsLocalizationCommon["Empty field"] );
14527                }
14528                return false;
14529            }
14530        }
14531	}
14532
14533    if ( szValue === "" ){
14534        return true;
14535    }
14536
14537	if ( szValue !== "" && isNaN(szValue) ){
14538        if (bShowErrors){
14539            ctlFormFieldsApplyError(oNodeField, 
14540                            g_oCTLFormFieldsLocalizationCommon["This field accept only numbers"]);
14541        }
14542		return false;
14543	}
14544
14545    var fValue = Number(szValue);
14546        
14547    if ( oNodeField.hasClass("validate-not-zero") ){                                    
14548        if ( fValue === 0 ){
14549            if (bShowErrors){
14550                ctlFormFieldsApplyError(oNodeField, 
14551                                                g_oCTLFormFieldsLocalizationCommon["This field doesn't accept zero value"]);            
14552            }
14553            return false;
14554        }
14555    }
14556    
14557    if ( oNodeField.hasClass("validate-unsigned") ){                     
14558        if (fValue < 0 ){
14559            if (bShowErrors){
14560                ctlFormFieldsApplyError(oNodeField, 
14561                                                g_oCTLFormFieldsLocalizationCommon["This field accept only positive numbers"]);
14562            }
14563            return false;
14564        }
14565    }   
14566
14567    if ( oNodeField.hasClass("validate-integer") ){        
14568        if (!Number.isInteger(Number(fValue)) ){
14569            if (bShowErrors){
14570                ctlFormFieldsApplyError(oNodeField, 
14571                                                g_oCTLFormFieldsLocalizationCommon["This field accept only integer numbers"]);
14572            }
14573            return false;
14574        }
14575    }   
14576
14577
14578    if ( oNodeField.hasClass("validate-min-value") ){ 
14579        var iMin = Number(oNodeField.attr("min"));
14580         
14581        if ( szValue === "" || fValue < iMin ){
14582            if (bShowErrors){
14583                ctlFormFieldsApplyError(oNodeField, 
14584                    sprintfNumber(
14585                        g_oCTLFormFieldsLocalizationCommon["The value must be greater than or equal to %d"],
14586                        g_oCTLFormFieldsLocalizationCommon["The value must be greater than or equal to %d"],
14587                        g_oCTLFormFieldsLocalizationCommon["The value must be greater than or equal to %d"], 
14588                        iMin+""));
14589            } 
14590            return false;
14591        }
14592    }
14593 
14594    if ( oNodeField.hasClass("validate-max-value") ){ 
14595        var iMax = Number(oNodeField.attr("max"));
14596
14597        if ( fValue > iMax ){
14598            if (bShowErrors){
14599                ctlFormFieldsApplyError(oNodeField, 
14600                    sprintfNumber(
14601                        g_oCTLFormFieldsLocalizationCommon["The value must be lower than or equal to %d"],
14602                        g_oCTLFormFieldsLocalizationCommon["The value must be lower than or equal to %d"],
14603                        g_oCTLFormFieldsLocalizationCommon["The value must be lower than or equal to %d"], 
14604                        iMax)); 
14605            }
14606            return false;
14607        }        
14608    }   
14609
14610    return true;
14611}
14612
14613function __ctlFormFieldsValidateInputFileField(oNodeFormControlWrapper, bShowErrors = true){
14614
14615    var oNodeField = oNodeFormControlWrapper.find('input[type=file]');
14616    var szValue = oNodeField.val();
14617
14618    if ( oNodeField.data("max-file-uploads") ){
14619        var aFiles    = oNodeField[0].files;
14620        let iMaxFileUploads = parseInt(oNodeField.data("max-file-uploads"), 10);
14621        
14622        if (aFiles.length > iMaxFileUploads){
14623            if (bShowErrors){        
14624                if(iMaxFileUploads > 1){
14625                    ctlFormFieldsApplyError(oNodeField, 
14626                        sprintf(g_oCTLFormFieldsLocalizationCommon["Exceeded the limit of %d files"], 
14627                            iMaxFileUploads
14628                        )
14629                    );
14630                }else{
14631                    ctlFormFieldsApplyError(oNodeField, 
14632                        g_oCTLFormFieldsLocalizationCommon["You can only upload one file"]
14633                    );
14634                }
14635            }
14636            return false;
14637        }
14638    }
14639    
14640    if ( oNodeFormControlWrapper.hasClass("mandatory") ){        
14641        if( szValue === "" ){    
14642            if ( oNodeFormControlWrapper.hasClass("img-default") ){
14643                return true;
14644            }
14645
14646            if (bShowErrors){        
14647                ctlFormFieldsApplyError(oNodeField, 
14648                                            g_oCTLFormFieldsLocalizationCommon["Empty field"] );
14649            }
14650            return false;
14651        }
14652    }
14653    return true;
14654}
14655
14656function __ctlFormFieldsValidateColorField(oNodeFormControlWrapper, bShowErrors = true ){
14657    var oNodeField = oNodeFormControlWrapper.find('input[type=text]');
14658    
14659    if ( oNodeField.length === 0 ){
14660        return true;
14661    }    
14662    
14663    var szValue = oNodeField.val();
14664
14665	if ( oNodeFormControlWrapper.hasClass("mandatory") ){
14666        if( szValue === "" ){
14667            var aAlternativeFields = oNodeFormControlWrapper.attr("data-alternative-mandatory-fields");
14668            if ( aAlternativeFields ){
14669                var oNodeForm = oNodeFormControlWrapper.closest("form");
14670                aAlternativeFields = aAlternativeFields.split(",");
14671                var bFound = false;
14672                for( var i = 0; i < aAlternativeFields.length; i++ ){
14673                    oNodeForm.find('input[name='+aAlternativeFields[i]+'],select[name='+aAlternativeFields[i]+'],textarea[name='+aAlternativeFields[i]+']' ).each(function(){
14674                        if ( jQuery(this).val() !== "" ){
14675                            bFound = true;
14676                        }
14677                    });
14678                }
14679                if (!bFound){
14680                    if (bShowErrors){
14681                        ctlFormFieldsApplyError(oNodeField, g_oCTLFormFieldsLocalizationCommon["Empty field"] );
14682                    }
14683                    return false;
14684                }
14685            }else{
14686                if (bShowErrors){
14687                    ctlFormFieldsApplyError(oNodeField, g_oCTLFormFieldsLocalizationCommon["Empty field"] );
14688                }
14689                return false;
14690            }
14691        }
14692	}	
14693    return true;
14694}
14695
14696function __ctlFormFieldsUpdateConfigFieldList( oNodeFieldContainer, aConfigFields ){
14697    var html = "";
14698
14699    for( var i = 0; i < aConfigFields.length; i++ ){
14700        var oField = aConfigFields[i];
14701
14702        html += '<li id="' + oField.id + '" data-field="' + Base64.encode(JSON.stringify(oField)) + '">';
14703            html += '<span class="ctl-form-fields-config-field-title">' + oField.title + '</span>';
14704            html += '<span class="ctl-form-fields-config-actions">';
14705                html += '<i class="ctl-form-fields-action-config-fields-edit-item fas fa-pencil"></i>';
14706                html += '<i class="ctl-form-fields-action-config-fields-remove-item fas fa-trash-alt"></i>';
14707            html += '</span>';
14708        html += '</li>';
14709    }
14710
14711    oNodeFieldContainer.html(html);
14712}
14713
14714function ctlEditorFrameworkMediaFieldDlg( oNodeButton ){
14715    var oNodeFormGroup         = oNodeButton.closest(".form-group");
14716    var oNodeInputHidden       = oNodeFormGroup.find("input[type=hidden]");
14717    var oNodeEditDataContainer = oNodeButton.closest(".ctl-edit-data-container");
14718
14719    if ( oNodeEditDataContainer.length == 0 ){
14720        alert("PLEASE USE MEDIA FIELD IN EDIT USER/POST DATA");
14721        return;
14722    }
14723
14724    var oFormData = {};
14725    oNodeEditDataContainer.find("form").each(function(){
14726        oFormData = jQuery.extend(jQuery(this).serializeObject(), oFormData); 
14727    });
14728
14729    ctlEditorFrameworkShowVulcanoMediaGallery( oFormData["widget-id"], 
14730                                              oNodeEditDataContainer.attr("data-type"),
14731                                              oNodeEditDataContainer.attr("data-type") == "post" ?
14732                                              oFormData["post-id"] : oFormData["user-id"],
14733                                              oNodeInputHidden.attr("name"));
14734}
14735
14736function ctlEditorFrameworkEmptyMediaField( oNodeButton ){
14737    var oNodeWrapper = oNodeButton.closest(".ctl-wp-studio-form-control-wrapper");
14738    oNodeWrapper.find(".ctl-form-fields-media-preview").html("");
14739    oNodeWrapper.find('input[type=hidden]').val("");
14740    oNodeWrapper.find('.ctl-editors-action-preview-media-field').addClass('d-none');
14741    oNodeButton.addClass("d-none");
14742}
14743
14744function ctlEditorFrameworkUploadFileInVulcanoMediaGallery( oNodeButton ){
14745    var oNodeModal = oNodeButton.closest(".modal"); 
14746    var oNodeForm  = oNodeButton.closest("form"); 
14747
14748    if ( ctlFormFieldsCheckIfFormIsFilled(oNodeForm) === false){
14749        return;
14750    }
14751
14752    var oFormData = new FormData();
14753    var idWidget    = oNodeForm.find('input[name=widget-id]').val();
14754    var szMetaField = oNodeForm.find('input[name=meta-field]').val();
14755
14756    oFormData.append( 'resource-id', oNodeForm.find('input[name=resource-id]').val() );
14757    oFormData.append( 'data-type', oNodeForm.find('input[name=data-type]').val() );
14758    oFormData.append( 'meta-field', szMetaField );
14759    oFormData.append( 'file', oNodeForm.find('input[name=upload-file]')[0].files[0] );
14760    oFormData.append( 'widget-id', idWidget );
14761    oFormData.append( 'action', 'ctl-wp-studio' );
14762    oFormData.append( 'execute', 'ctl-editors-framework' );        
14763    oFormData.append( 'extension-action', 'upload-media' );
14764
14765    ctlEditorFrameworkAjaxUpdateFormData(oNodeForm, oFormData, false, function(oResponse){      
14766        if ( oResponse.res === true ){
14767            var oNodeContainer  = jQuery('.ctl-edit-data-container-'+idWidget);
14768            var oNodeInputField = oNodeContainer.find('input[name='+szMetaField+']');
14769            var oNodeWrapper    = oNodeInputField.closest(".ctl-wp-studio-form-control-wrapper");
14770            var oNodPreview     = oNodeWrapper.find(".ctl-form-fields-media-preview");
14771            oNodPreview.html(ctlFormFieldsHtmlMediaPreview(oResponse.last_media.url));
14772            oNodeInputField.val(oResponse.last_media.id);
14773
14774            oNodeWrapper.find('.ctl-editors-action-preview-media-field').attr("href", oResponse.last_media.url);
14775            oNodeWrapper.find('.ctl-editors-action-preview-media-field').removeClass('d-none');
14776            oNodeWrapper.find('.ctl-editors-action-empty-media-field').removeClass('d-none');
14777
14778            oNodeModal.modal("hide");
14779        }           
14780    });
14781}
14782
14783function ctlFormFieldsHtmlMediaPreview( url ){
14784
14785    if (!url){
14786        return "";
14787    }
14788
14789    var szFileName = url.replace(/^.*[\\\/]/, '');
14790    var ext = szFileName.substring(szFileName.lastIndexOf('+ ')+1, szFileName.length) || szFileName;
14791
14792    htmlImg  = '';
14793
14794    switch(ext){
14795        case 'jpg':
14796        case 'jpeg':
14797        case 'gif':
14798        case 'bmp':
14799        case 'png': {
14800            htmlImg += '<img class="img-fluid image-preview rounded img-thumbnail"';
14801            htmlImg += ' src="' + url + '" />';
14802        }break;
14803        case "pdf":{
14804            htmlImg += '<div class="image-preview rounded img-thumbnail">';
14805            htmlImg += '<i class="ctl-wp-studio-icons-file-pdf"></i></div>';
14806        }break;
14807        case "zip":{
14808            htmlImg += '<div class="img-fluid image-preview rounded img-thumbnail">';
14809            htmlImg += '<i class="ctl-wp-studio-icons-file-archive"></i></div>';
14810        }break;
14811        default:{
14812            htmlImg += '<div class="img-fluid image-preview rounded img-thumbnail">';
14813            htmlImg += '<i class="ctl-wp-studio-icons-doc-text"></i></div>';            
14814        }
14815    }   
14816
14817    htmlImg += '<small class="d-block ctl-post-media-name">' + szFileName + '</small>';
14818
14819    return htmlImg;
14820}        
14821
14822
14823function ctlEditorFrameworkShowVulcanoMediaGallery( idWidget, 
14824                                                    szTypeResource,
14825                                                    idResource, 
14826                                                    szFieldName){
14827    var htmlHiddenFields = "";
14828
14829    htmlHiddenFields += formFieldsBuildHiddenField({
14830        'field-name' : 'widget-id',
14831    }, idWidget);  
14832
14833    htmlHiddenFields += formFieldsBuildHiddenField({
14834        'field-name' : 'meta-field',
14835    }, szFieldName);  
14836    
14837    htmlHiddenFields += formFieldsBuildHiddenField({
14838        'field-name' : 'data-type',
14839    }, (!szTypeResource ? "" : szTypeResource) );      
14840
14841    htmlHiddenFields += formFieldsBuildHiddenField({
14842        'field-name' : 'resource-id',
14843    }, (!idResource ? "" : idResource) ); 
14844
14845    var html = "";
14846    html += '<div id="upload-media">';
14847    html += '<form method="post" enctype="multipart/form-data">';
14848
14849    html += htmlHiddenFields;
14850
14851    html += formFieldsBuildUploadAreaField({
14852        "field-name"      : "upload-file",
14853        "wrapper-classes" : "mb-0",
14854        "preview-image"   : true,
14855        "browse-icon"     : "",
14856        "btn-outlined"    : true,
14857        "mandatory"       : true,
14858        "mandatory-on-label" : true,
14859        "label-button"   : g_oCTLEditorsFrameworkLocalizationFront["Browse"],
14860        "append-buttons" : '<button type="button" class="' + 
14861                           'btn btn-outline-primary ctl-editor-framework-action-upload-file">'+
14862                           g_oCTLEditorsFrameworkLocalizationFront["Continue"]+'</button>'
14863    } );
14864
14865    html += '</form>';
14866
14867    html += '</div>';
14868
14869    g_oCTLBootstrapModals.showModal({
14870        wrapper_classes : "ctl-media-gallery-modal",
14871        modal_title : g_oCTLEditorsFrameworkLocalizationFront["Upload"],
14872        modal_content : html,
14873        closeable : true,
14874        width: '80',
14875        position: "centered",
14876    });
14877}
14878
14879function __ctlFormFieldsValidateTextField(oNodeFormControlWrapper, bShowErrors = true ){
14880    var oNodeField = oNodeFormControlWrapper.find('input[type=text]');
14881    
14882    if ( oNodeField.length === 0 ){
14883        oNodeField = oNodeFormControlWrapper.find('input[type=password]');
14884    }
14885    
14886    if ( oNodeField.length === 0 ){
14887        oNodeField = oNodeFormControlWrapper.find('input[type=email]');
14888    }
14889
14890    if ( oNodeField.length === 0 ){
14891        oNodeField = oNodeFormControlWrapper.find('input[type=hidden]');
14892    } 
14893    
14894    if ( oNodeField.length === 0 ){
14895        oNodeField = oNodeFormControlWrapper.find('textarea');
14896    }     
14897    
14898    if ( oNodeField.length === 0 ){
14899        return true;
14900    }    
14901    
14902    var szValue = oNodeField.val();
14903
14904	if ( oNodeFormControlWrapper.hasClass("mandatory") ){
14905		if( szValue === "" ){
14906            var aAlternativeFields = oNodeFormControlWrapper.attr("data-alternative-mandatory-fields");
14907            if ( aAlternativeFields ){
14908                var oNodeForm = oNodeFormControlWrapper.closest("form");
14909                aAlternativeFields = aAlternativeFields.split(",");
14910                var bFound = false;
14911                for( var i = 0; i < aAlternativeFields.length; i++ ){
14912                    oNodeForm.find('input[name='+aAlternativeFields[i]+'],select[name='+aAlternativeFields[i]+'],textarea[name='+aAlternativeFields[i]+']' ).each(function(){
14913                        if ( jQuery(this).val() !== "" ){
14914                            bFound = true;
14915                        }
14916                    });
14917                }
14918                if (!bFound){
14919                    if (bShowErrors){
14920                        ctlFormFieldsApplyError(oNodeField, g_oCTLFormFieldsLocalizationCommon["Empty field"] );
14921                    }                    
14922                    return false;
14923                }
14924            }else{
14925                if (bShowErrors){
14926                    ctlFormFieldsApplyError(oNodeField, g_oCTLFormFieldsLocalizationCommon["Empty field"] );
14927                }
14928                return false;
14929            }           
14930		}else{
14931            var aPairingFields = oNodeFormControlWrapper.attr("data-pairing-fields");
14932            if ( aPairingFields ){
14933                var oNodeForm = oNodeFormControlWrapper.closest("form");
14934                aPairingFields = aPairingFields.split(",");
14935                var bFound = false;
14936
14937                var szErrMessage = "";
14938
14939                for( var i = 0; i < aPairingFields.length; i++ ){
14940                    oNodeForm.find('input[name='+aPairingFields[i]+']' ).each(function(){
14941                        if ( jQuery(this).val() !== szValue ){
14942                            bFound = true;
14943                            szErrMessage += 
14944                                sprintf(g_oCTLFormFieldsLocalizationCommon["This field must be equal to '%s'"],
14945                                jQuery(this).closest(".form-group").find(".ctl-form-field-label").text())+ " ";
14946                        }
14947                    });
14948                }
14949                if (bFound){
14950                    if (bShowErrors){
14951                        ctlFormFieldsApplyError(oNodeField, szErrMessage );
14952                    }
14953                    return false;
14954                }
14955            }             
14956        }
14957	}	
14958	 
14959	if ( szValue !== "" ){
14960            
14961        if ( oNodeField.hasClass("trim-value") && szValue ){
14962            szValue = szValue.trim();
14963            oNodeField.val(szValue);
14964        }               
14965    
14966        if ( oNodeField.hasClass("validate-regex") ){  
14967            var szRegex = Base64.decode(oNodeField.attr("data-validate-regex"));
14968            
14969            // check if the regex is in literal notation
14970            if ( szRegex.charAt(0) === '/' && 
14971                    szRegex.charAt(szRegex.length-1) === '/' ){
14972                szRegex = szRegex.substring(1, szRegex.length-2);
14973            }
14974            
14975            var re = new RegExp(szRegex, 'g');       
14976            var szError = Base64.decode(oNodeField.attr("data-label-fail-regex"));
14977
14978            var aMatches = szValue.match(re);
14979
14980            if ( !aMatches || aMatches[0] !== szValue ){
14981                if (bShowErrors){
14982                    ctlFormFieldsApplyError(oNodeField, szError);            
14983                }
14984                return false;
14985            }
14986        }
14987                
14988                                 
14989		if ( oNodeField.hasClass("validate-email") ){     
14990			var re = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))/;
14991			if ( !re.test(szValue) ){
14992                if (bShowErrors){
14993                    ctlFormFieldsApplyError(oNodeField, 
14994                                    g_oCTLFormFieldsLocalizationCommon["Invalid email format"]);            
14995                }
14996				return false;
14997			}
14998		}
14999		
15000		if ( oNodeField.hasClass("validate-only-digits") ){        
15001			var re =  /^\d+/g;               
15002			if ( !re.test(szValue) ){
15003                if (bShowErrors){
15004                    ctlFormFieldsApplyError(oNodeField, 
15005                                    g_oCTLFormFieldsLocalizationCommon["This field accept only numbers"]);           
15006                } 
15007				return false;
15008			}
15009		}  
15010                
15011		if ( oNodeField.hasClass("validate-exclude-digits") ){        
15012			var szTest = szValue.replace(/[0-9]/g, '');                              
15013            if ( szTest !== szValue){
15014                if (bShowErrors){
15015                    ctlFormFieldsApplyError(oNodeField, 
15016                                                    g_oCTLFormFieldsLocalizationCommon["This field doesn't accept numbers"]);            
15017                }
15018                return false;
15019            }
15020		}                  
15021		
15022		if ( oNodeField.hasClass("validate-integer") ){                     
15023            if (!Number.isInteger(Number(szValue)) ){
15024                if (bShowErrors){
15025                    ctlFormFieldsApplyError(oNodeField, 
15026                                                    g_oCTLFormFieldsLocalizationCommon["This field accept only integer numbers"]);
15027                }
15028                return false;
15029            }
15030		}       
15031		
15032		if ( oNodeField.hasClass("validate-number") ){                     
15033            if (isNaN(Number(szValue)) ){
15034                if (bShowErrors){
15035                    ctlFormFieldsApplyError(oNodeField, 
15036                                                    g_oCTLFormFieldsLocalizationCommon["This field accept only numbers"]);
15037                }
15038                return false;
15039            }
15040		}
15041                
15042		if ( oNodeField.hasClass("validate-one-uppercase") ){                     
15043            var iCntUppercase = 0;
15044            for ( var i = 0; i < szValue.length; i++){          
15045                if ( "ABCDEFGHIJKLMNOPQRSTUVWXYZ".indexOf(szValue.charAt(i)) !== -1 ){                                                      iCntUppercase++;
15046                    break;
15047                }
15048            }                      
15049            if ( iCntUppercase === 0 ){
15050                if (bShowErrors){
15051                    ctlFormFieldsApplyError(oNodeField, 
15052                        g_oCTLFormFieldsLocalizationCommon["Enter at least one uppercase char: A-Z"]);
15053                }
15054                return false;                        
15055            }
15056        } 
15057                
15058		if ( oNodeField.hasClass("validate-one-lowercase") ){                     
15059            var iCntLowercase = 0;
15060            for ( var i = 0; i < szValue.length; i++){          
15061                if ( "abcdefghijklmnopqrstuvwxyz".indexOf(szValue.charAt(i)) !== -1 ){                                                      iCntLowercase++;
15062                    break;
15063                }
15064            }  
15065            if ( iCntLowercase === 0 ){
15066                if (bShowErrors){
15067                    ctlFormFieldsApplyError(oNodeField, 
15068                        g_oCTLFormFieldsLocalizationCommon["Enter at least one lowercase char: a-z"]);
15069                }
15070                return false;                        
15071            }                    
15072        }    
15073                
15074		if ( oNodeField.hasClass("validate-one-digit") ){    
15075            var iCntDigits = 0;
15076            for ( var i = 0; i < szValue.length; i++){
15077                if ( "0123456789".indexOf(szValue.charAt(i)) !== -1 ){                                                                      iCntDigits++;
15078                    break;
15079                }
15080            }  
15081            if ( iCntDigits === 0 ){
15082                if (bShowErrors){
15083                    ctlFormFieldsApplyError(oNodeField, 
15084                        g_oCTLFormFieldsLocalizationCommon["Enter at least one digit: 0-9"]);
15085                }
15086                return false;                        
15087            }                         
15088        }                    
15089		
15090		if ( oNodeField.hasClass("validate-one-special") ){  
15091            var iCntSpecialChars = 0;
15092            for ( var i = 0; i < szValue.length; i++){                        
15093                if ( "!#$%&()*+,-.:;<:?@[]^_{|}~".indexOf(szValue.charAt(i)) !== -1 ){                                                     iCntSpecialChars++;
15094                    break;
15095                }
15096            }  
15097            if ( iCntSpecialChars === 0 ){
15098                if (bShowErrors){
15099                    ctlFormFieldsApplyError(oNodeField, 
15100                        g_oCTLFormFieldsLocalizationCommon["Enter at least one special char: !#$%&()*+,-.:;<=>?@[]^_{|}~"]);
15101                }
15102                return false;                        
15103            }                        
15104        }                
15105                
15106		if ( oNodeField.hasClass("validate-unsigned") ){     
15107            var fValue = Number(szValue);
15108            if ( fValue < 0 || isNaN(fValue) ){
15109                if (bShowErrors){
15110                    ctlFormFieldsApplyError(oNodeField, 
15111                                                    g_oCTLFormFieldsLocalizationCommon["This field accept only positive numbers"]);
15112                }
15113                return false;
15114            }
15115		}   
15116                
15117		if ( oNodeField.hasClass("validate-not-zero") ){                                    
15118            if ( szValue === "0" || szValue === 0 ){
15119                if (bShowErrors){
15120                    ctlFormFieldsApplyError(oNodeField, 
15121                                                    g_oCTLFormFieldsLocalizationCommon["This field doesn't accept zero value"]);            
15122                }
15123                return false;
15124            }
15125		}                
15126
15127		if ( oNodeField.attr("data-exact-length") ){ 
15128            var iLength = Number(oNodeField.attr("data-exact-length"));
15129
15130            if ( iLength > 0 && szValue.length !== iLength ){
15131                if (bShowErrors){
15132                    ctlFormFieldsApplyError(oNodeField, 
15133                                            sprintfNumber("",
15134                                            g_oCTLFormFieldsLocalizationCommon["The value must be %d character long"],
15135                                            g_oCTLFormFieldsLocalizationCommon["The value must be %d characters long"], 
15136                                            iLength)); 
15137                }
15138                return false;
15139            }
15140		}        
15141        
15142		if ( oNodeField.attr("data-min-length") ){ 
15143            var iMin = Number(oNodeField.attr("data-min-length"));
15144
15145            if ( iMin > 0 && szValue.length < iMin ){
15146                if (bShowErrors){
15147                    ctlFormFieldsApplyError(oNodeField, 
15148                                            sprintfNumber("",
15149                                            g_oCTLFormFieldsLocalizationCommon["The value must be at least %d character"],
15150                                            g_oCTLFormFieldsLocalizationCommon["The value must be at least %d characters"], 
15151                                            iMin)); 
15152                }
15153                return false;
15154            }
15155		}
15156		
15157		if ( oNodeField.attr("data-max-length") ){ 
15158            var iMax = Number(oNodeField.attr("data-max-length"));
15159
15160            if ( szValue.length > iMax ){
15161                if (bShowErrors){
15162                    ctlFormFieldsApplyError(oNodeField, 
15163                                            sprintfNumber("",
15164                                            g_oCTLFormFieldsLocalizationCommon["The value must not exceed %d character"],
15165                                            g_oCTLFormFieldsLocalizationCommon["The value must not exceed %d characters"], 
15166                                            iMax)); 
15167                }
15168                return false;
15169            }        
15170		}    
15171	}
15172
15173    return true;
15174}
15175
15176function __ctlFormFieldsValidateIbanField( oNodeFormControlWrapper, bShowErrors = true ){
15177    var oNodeField = oNodeFormControlWrapper.find('input[type=text]');
15178    
15179    if ( oNodeField.length === 0 ){
15180        return true;
15181    }    
15182    
15183    var szValue = oNodeField.val();
15184
15185	if ( oNodeFormControlWrapper.hasClass("mandatory") ){
15186		if( szValue === "" ){
15187            var aAlternativeFields = oNodeFormControlWrapper.attr("data-alternative-mandatory-fields");
15188            if ( aAlternativeFields ){
15189                var oNodeForm = oNodeFormControlWrapper.closest("form");
15190                aAlternativeFields = aAlternativeFields.split(",");
15191                var bFound = false;
15192                for( var i = 0; i < aAlternativeFields.length; i++ ){
15193                    oNodeForm.find('input[name='+aAlternativeFields[i]+'],select[name='+aAlternativeFields[i]+'],textarea[name='+aAlternativeFields[i]+']' ).each(function(){
15194                        if ( jQuery(this).val() !== "" ){
15195                            bFound = true;
15196                        }
15197                    });
15198                }
15199                if (!bFound){
15200                    if (bShowErrors){
15201                        ctlFormFieldsApplyError(oNodeField, g_oCTLFormFieldsLocalizationCommon["Empty field"] );
15202                    }
15203                    return false;
15204                }
15205            }else{
15206                if (bShowErrors){
15207                    ctlFormFieldsApplyError(oNodeField, g_oCTLFormFieldsLocalizationCommon["Empty field"] );
15208                }
15209                return false;
15210            }           
15211		}else{
15212            var aPairingFields = oNodeFormControlWrapper.attr("data-pairing-fields");
15213            if ( aPairingFields ){
15214                var oNodeForm = oNodeFormControlWrapper.closest("form");
15215                aPairingFields = aPairingFields.split(",");
15216                var bFound = false;
15217
15218                var szErrMessage = "";
15219
15220                for( var i = 0; i < aPairingFields.length; i++ ){
15221                    oNodeForm.find('input[name='+aPairingFields[i]+']' ).each(function(){
15222                        if ( jQuery(this).val() !== szValue ){
15223                            bFound = true;
15224                            szErrMessage += 
15225                                sprintf(g_oCTLFormFieldsLocalizationCommon["This field must be equal to '%s'"],
15226                                jQuery(this).closest(".form-group").find(".ctl-form-field-label").text())+ " ";
15227                        }
15228                    });
15229                }
15230                if (bFound){
15231                    if (bShowErrors){
15232                        ctlFormFieldsApplyError(oNodeField, szErrMessage );
15233                    }
15234                    return false;
15235                }
15236            }             
15237        }
15238	}	
15239	 
15240	if ( szValue !== ""  ){            
15241        if ( oNodeField.hasClass("trim-value") && szValue ){
15242            szValue = szValue.trim();
15243            oNodeField.val(szValue);
15244        }               
15245
15246		if ( oNodeField.attr("data-exact-length") ){ 
15247            var iLength = Number(oNodeField.attr("data-exact-length"));
15248
15249            if ( iLength > 0 && szValue.length !== iLength ){
15250                if (bShowErrors){
15251                    ctlFormFieldsApplyError(oNodeField, 
15252                                            sprintfNumber("",
15253                                            g_oCTLFormFieldsLocalizationCommon["The value must be %d character long"],
15254                                            g_oCTLFormFieldsLocalizationCommon["The value must be %d characters long"], 
15255                                            iLength)); 
15256                }
15257                return false;
15258            }
15259		}        
15260	}
15261
15262    return true;
15263}
15264
15265function __ctlFormFieldsValidateIPField(oNodeFormControlWrapper, bShowErrors = true){
15266    var oNodeField = oNodeFormControlWrapper.find('input[type=text]');
15267    
15268    if ( oNodeField.length === 0 ){
15269        return true;
15270    }    
15271    
15272    var szValue = oNodeField.val();
15273
15274	if ( oNodeFormControlWrapper.hasClass("mandatory") ){
15275		if( szValue === "" ){
15276            if (bShowErrors){
15277                ctlFormFieldsApplyError(oNodeField, g_oCTLFormFieldsLocalizationCommon["Empty field"] );
15278            }
15279            return false;        
15280		}
15281	}	
15282	 
15283	if ( szValue !== ""  ){
15284            
15285        if ( oNodeField.hasClass("trim-value") && szValue ){
15286            szValue = szValue.trim();
15287            oNodeField.val(szValue);
15288        }               
15289
15290        switch( oNodeField.attr("data-ip-format")){
15291            case "ipv4":{
15292                const parts = szValue.trim().split(".");
15293                let bResult = true;
15294
15295                if (parts.length !== 4){
15296                    ctlFormFieldsApplyError(oNodeField, 
15297                                            g_oCTLFormFieldsLocalizationCommon["Please type a valid ipv4 value"]); 
15298                    return false;
15299                } 
15300
15301                bResult = parts.every(part => {
15302                    if (!/^\d+$/.test(part)) return false; // solo numeri
15303                    const n = Number(part);
15304                    return n >= 0 && n <= 255 && String(n) === part; // niente zeri iniziali
15305                });
15306
15307                if (!bResult && bShowErrors){
15308                    ctlFormFieldsApplyError(oNodeField, 
15309                                            g_oCTLFormFieldsLocalizationCommon["Please type a valid ipv4 value"]); 
15310                    return false;
15311                }
15312
15313            }break;
15314            case "ipv6":{
15315                const re = new RegExp('^(([0-9a-fA-F]{1,4}:){7}([0-9a-fA-F]{1,4}|::)|(([0-9a-fA-F]{1,4}:){1,7}:)|(([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4})|(([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2})|(([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3})|(([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4})|(([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5})|([0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|(::([0-9a-fA-F]{1,4}:){0,5}([0-9a-fA-F]{1,4}|:))|(::))$');
15316                if ( !re.test(szValue) ){
15317                    if (bShowErrors){   
15318                        ctlFormFieldsApplyError(oNodeField, 
15319                                                g_oCTLFormFieldsLocalizationCommon["Please type a valid ipv6 value"]); 
15320                    }
15321                    return false;
15322                }
15323            }break;
15324        }
15325	}
15326
15327    return true;
15328}
15329
15330function __ctlFormFieldsValidateCFField(oNodeFormControlWrapper, bShowErrors = true){
15331    var oNodeField = oNodeFormControlWrapper.find('input[type=text]');
15332    
15333    if ( oNodeField.length === 0 ){
15334        return true;
15335    }    
15336    
15337    var szValue = oNodeField.val();
15338
15339	if ( oNodeFormControlWrapper.hasClass("mandatory") ){
15340		if( szValue === "" ){
15341            if (bShowErrors){
15342                ctlFormFieldsApplyError(oNodeField, g_oCTLFormFieldsLocalizationCommon["Empty field"] );
15343            }
15344            return false;        
15345		}
15346	}	
15347	 
15348	if ( szValue !== ""  ){
15349            
15350        if ( oNodeField.hasClass("trim-value") && szValue ){
15351            szValue = szValue.trim();
15352            oNodeField.val(szValue);
15353        }               
15354
15355		if ( oNodeField.attr("data-exact-length") ){ 
15356            var iLength = Number(oNodeField.attr("data-exact-length"));
15357
15358            if ( iLength > 0 && szValue.length !== iLength ){
15359                if (bShowErrors){
15360                    ctlFormFieldsApplyError(oNodeField, 
15361                                            sprintfNumber("",
15362                                            g_oCTLFormFieldsLocalizationCommon["The value must be %d character long"],
15363                                            g_oCTLFormFieldsLocalizationCommon["The value must be %d characters long"], 
15364                                            iLength)); 
15365                }
15366                return false;
15367            }
15368		}        
15369	}
15370
15371    return true;
15372}
15373
15374function __ctlFormFieldsValidateTextAreaField(oNodeFormControlWrapper, bShowErrors = true){
15375    
15376    var oNodeField = oNodeFormControlWrapper.find('textarea');
15377    var szValue    = oNodeField.val();
15378
15379    if ( oNodeFormControlWrapper.hasClass("mandatory") ){
15380        if( szValue === "" ){
15381            if (bShowErrors){
15382                ctlFormFieldsApplyError(oNodeField, 
15383                                            g_oCTLFormFieldsLocalizationCommon["Empty field"] );
15384            }
15385            return false;
15386        }
15387        
15388        if ( oNodeField.hasClass("validate-not-empty-tags") ){          
15389            var szCleanText = oNodeField.val().replace(/<\/?[^>]+(>|)/g, "");
15390            szCleanText = szCleanText.replace("<br>","");
15391            szCleanText = szCleanText.replace("</br>","");
15392            szCleanText = szCleanText.replace("\n","");
15393            szCleanText = szCleanText.replace("\r","");
15394            szCleanText = szCleanText.replace("\t","");
15395            szCleanText = szCleanText.trim();
15396
15397            if ( szCleanText === "" ){
15398                if (bShowErrors){
15399                    ctlFormFieldsApplyError(oNodeField, 
15400                                                g_oCTLFormFieldsLocalizationCommon["Empty field"] );            
15401                }
15402                return false;
15403            }
15404        }        
15405    }	
15406
15407    return true;
15408}
15409
15410function __ctlFormFieldsValidateHtmlField(oNodeFormControlWrapper, bShowErrors = true){
15411    return true;
15412}
15413
15414function __ctlFormFieldsValidateBirthdateField(oNodeFormControlWrapper, bShowErrors = true){
15415    var oNodeFields  = oNodeFormControlWrapper.find('select');	
15416	var iCnt = 0;
15417    var iNumFields = oNodeFields.length;
15418
15419    if ( oNodeFormControlWrapper.hasClass("mandatory") ){
15420		oNodeFormControlWrapper.find('select option:selected').each(function(){
15421			if (jQuery(this).attr("value") || jQuery(this).attr("value") != ""){
15422				iCnt++;
15423			}else{
15424				var oNodeField = jQuery(this).closest("select");
15425                if (bShowErrors){
15426				    ctlFormFieldsApplyError(oNodeField, g_oCTLFormFieldsLocalizationCommon["Empty field"] );
15427                }
15428			}
15429		});		
15430		
15431        if( iCnt < iNumFields ){
15432            return false;
15433        }
15434    }
15435    
15436    return true;
15437}
15438
15439function __ctlFormFieldsValidateSignatureField(oNodeFormControlWrapper, bShowErrors = true) { 
15440    var oNodeField = oNodeFormControlWrapper.find('textarea');
15441    var szValue = oNodeField.val();
15442
15443    if ( oNodeFormControlWrapper.hasClass("mandatory") ){
15444        if( !szValue || szValue === "" ){
15445            if (bShowErrors){
15446                oNodeFormControlWrapper.addClass("is-invalid");
15447                oNodeField.addClass("is-invalid");
15448                var oNodeInvalidFeedback = oNodeFormControlWrapper.children(".invalid-feedback").first();
15449                oNodeInvalidFeedback.text(g_oCTLFormFieldsLocalizationCommon["Empty field"]);
15450            }
15451            return false;
15452        }
15453    }
15454
15455    return true;
15456}
15457
15458function __ctlFormFieldsValidateDropboxFolderField(oNodeDropboxFolderWrapper, bShowErrors = true) { 
15459    var oNodeFormControlWrapper = oNodeDropboxFolderWrapper.find('.ctl-wp-studio-form-control-wrapper');
15460
15461    if ( oNodeFormControlWrapper.hasClass("mandatory") ){
15462        let oNodeField = oNodeDropboxFolderWrapper.find('input.dropbox-files');
15463        if( oNodeField.length == 0 || !oNodeField.val() || oNodeField.val() === "" ){
15464            if (bShowErrors){
15465                oNodeDropboxFolderWrapper.addClass("is-invalid");
15466                var oNodeInvalidFeedback = oNodeDropboxFolderWrapper.find(".invalid-feedback").first();
15467                oNodeInvalidFeedback.text(g_oCTLFormFieldsLocalizationCommon["Empty field"]);
15468            }
15469            return false;
15470        }
15471    }
15472
15473    return true;
15474}
15475
15476function __ctlFormFieldsValidateDraggableListField(oNodeFormControlWrapper, bShowErrors = true ){
15477    var oNodeField  = oNodeFormControlWrapper.find('select');
15478    var szValue     = oNodeField.find("option").length;
15479
15480    if ( oNodeFormControlWrapper.hasClass("mandatory") ){
15481        if( !szValue || szValue === "" || szValue === 0 ){
15482            if (bShowErrors){
15483                oNodeField.closest(".ctl-wp-studio-form-control-wrapper").addClass("is-invalid");
15484                oNodeField.addClass("is-invalid");
15485                var oNodeInvalidFeedback = oNodeFormControlWrapper.find(".draggable-error .invalid-feedback");
15486                oNodeInvalidFeedback.text(g_oCTLFormFieldsLocalizationCommon["Empty field"]);                  
15487            }
15488            return false;
15489        }
15490    }
15491    
15492    return true;
15493}
15494
15495function __ctlFormFieldsValidateSelectField(oNodeFormControlWrapper, bShowErrors = true ){
15496
15497    if(oNodeFormControlWrapper.data("rendering-mode") === "checkbox"){
15498        let oNodeField = oNodeFormControlWrapper.find('input[type=checkbox]');
15499
15500        if ( oNodeFormControlWrapper.hasClass("mandatory") ){
15501            let bChecked = false;
15502            oNodeField.each(function(){
15503                if ( jQuery(this).is(':checked') ){
15504                    bChecked = true;
15505                    return;
15506                }
15507            });
15508
15509            if (!bChecked){
15510                if (bShowErrors){
15511                    ctlFormFieldsApplyError(oNodeField, g_oCTLFormFieldsLocalizationCommon["Empty field"] );
15512                }
15513                return false;
15514            }
15515        }
15516    }else{
15517        var oNodeField  = oNodeFormControlWrapper.find('select');
15518        var oNodeOption = oNodeFormControlWrapper.find('select option:selected');
15519        var szValue     = oNodeOption.attr("value");
15520
15521        if ( oNodeFormControlWrapper.hasClass("mandatory") ){
15522            if( !szValue || szValue === "" || 
15523                ( Array.isArray(szValue) && szValue.length === 0 ) ){
15524
15525                var aAlternativeFields = oNodeFormControlWrapper.attr("data-alternative-mandatory-fields");
15526                if ( aAlternativeFields ){
15527                    var oNodeForm = oNodeFormControlWrapper.closest("form");
15528                    aAlternativeFields = aAlternativeFields.split(",");
15529                    var bFound = false;
15530                    for( var i = 0; i < aAlternativeFields.length; i++ ){
15531                        oNodeForm.find('input[name='+aAlternativeFields[i]+'],select[name='+aAlternativeFields[i]+'],textarea[name='+aAlternativeFields[i]+']' ).each(function(){
15532                            if ( jQuery(this).val() !== "" ){
15533                                bFound = true;
15534                            }
15535                        });
15536                    }
15537                    if (!bFound){
15538                        if (bShowErrors){
15539                            ctlFormFieldsApplyError(oNodeField, g_oCTLFormFieldsLocalizationCommon["Empty field"] );
15540                        }
15541                        return false;
15542                    }
15543                }else{
15544
15545                    // check exceptions
15546                    if ( oNodeField.hasClass("ctl-geo-zone-select") && 
15547                        oNodeField.closest(".ctl-geo-address-zone").hasClass("d-none") ){
15548                        return true;
15549                    }
15550
15551                    if (bShowErrors){
15552                        ctlFormFieldsApplyError(oNodeField, g_oCTLFormFieldsLocalizationCommon["Empty field"] );
15553                    }
15554                    return false;
15555                }
15556            }
15557        }
15558    }
15559    
15560    
15561    
15562    return true;
15563}
15564
15565function __ctlFormFieldsValidateCheckField(oNodeFormControlWrapper, bShowErrors = true){
15566    
15567    var oNodeField = oNodeFormControlWrapper.find('input[type=checkbox]');
15568
15569	if ( oNodeFormControlWrapper.hasClass("mandatory") ){
15570		if( !oNodeField.is(':checked') ){
15571            if (bShowErrors){
15572			    ctlFormFieldsApplyError(oNodeField, 
15573						g_oCTLFormFieldsLocalizationCommon["Empty field"]);
15574            }
15575			return false;
15576		}
15577	}
15578    
15579    return true;
15580}
15581
15582function __ctlFormFieldsValidateRadioField(oNodeFormControlWrapper, bShowErrors = true){
15583    var oNodeField = oNodeFormControlWrapper.find('input[type=radio]');
15584
15585    if ( oNodeFormControlWrapper.hasClass("mandatory") ){
15586        var bChecked = false;
15587        
15588        if ( oNodeFormControlWrapper.hasClass("validate-yes") ){  
15589            var aValidValues = ["TRUE", "true", "True", "1", true, 1, 
15590                                "YES", "SI", "yes", "si", "Y", "y", "Yes" ];
15591
15592            oNodeField.each(function(){                
15593                if ( jQuery(this).is(':checked') &&
15594                     aValidValues.includes(jQuery(this).val()) ){
15595                    bChecked = true;
15596                }                
15597            });            
15598            
15599            if( bChecked === false ){
15600                if (bShowErrors){
15601                    ctlFormFieldsApplyError(oNodeField,
15602                                        g_oCTLFormFieldsLocalizationCommon["Select yes to continue"]);
15603                }
15604                return false;
15605            }            
15606        }else{
15607            oNodeField.each(function(){                
15608                if ( jQuery(this).is(':checked') ){
15609                    bChecked = true;
15610                }                
15611            });                        
15612            
15613            if( bChecked === false ){
15614                if (bShowErrors){
15615                    ctlFormFieldsApplyError(oNodeField,
15616                                        g_oCTLFormFieldsLocalizationCommon["Empty field"]);
15617                }
15618                return false;
15619            }            
15620        }       
15621    }
15622    
15623    return true;
15624}
15625
15626function formFieldsBuildSwitchField( oConfig, szDefaultValue ){
15627
15628    var oDefault = {
15629        "label-title" : "",
15630        "label-description" : "",                
15631        "field-name" : "",
15632        "mandatory" : false,
15633        "display" : 12,
15634        "label-align" : "left",
15635        "label-v-align" : "",
15636        "readonly" : false,
15637        "data-attr" : "",
15638        "classes" : "",
15639        "control-classes" : "",
15640        "disabled" : false,
15641
15642        "data-on-label" : "",
15643        "data-on-value" : "1",
15644
15645        "data-off-label" : "",
15646        "data-off-value" : "0",
15647        
15648        "mandatory-on-label" : true,
15649    };
15650
15651    oConfig = jQuery.extend(oDefault, oConfig);
15652
15653    if ( szDefaultValue === null || szDefaultValue === undefined ){
15654        szDefaultValue = oConfig["data-off-value"];
15655    }
15656
15657    var guid = "";
15658    if (oConfig["field-name"]){
15659        guid = oConfig["field-name"] + "-";    
15660    }
15661    guid += g_oCTLWPStudio.makeCode(4);             
15662
15663    var html = "";
15664
15665    var szFormInputControl = "form-control";            
15666    var szFormGroupClasses = "form-group";
15667
15668    var szLabelClasses = "ctl-form-field-label";
15669    var szFormControlClasses = 'ctl-wp-studio-form-control-wrapper';
15670
15671    szFormControlClasses += " ctlswitchfield";
15672
15673    if( oConfig["readonly"] ){
15674        szFormControlClasses += " readonly";
15675    }            
15676    if( oConfig["disabled"] ){
15677        szFormControlClasses += " disabled";
15678    }                        
15679    
15680    if( !oConfig["readonly"] && !oConfig["disabled"] && oConfig["mandatory"] ){
15681        szFormControlClasses += " mandatory";
15682        
15683        if ( oConfig["mandatory-on-label"] ){
15684            szFormGroupClasses += " mandatory-on-label";
15685        }                     
15686    }
15687
15688
15689    if( oConfig["classes"] ){
15690        szFormInputControl += " " + oConfig["classes"];
15691    }
15692            
15693    if( oConfig["control-classes"] ){
15694        szFormGroupClasses += " "  + oConfig["control-classes"];
15695    }        
15696
15697    var iDisplay = oConfig["display"];
15698
15699    switch(iDisplay){
15700        case 12:{
15701            szLabelClasses += " d-block";
15702        }break;
15703        case 10:{
15704            szFormGroupClasses += " row";
15705            szLabelClasses += " col col-12 col-sm-10";
15706            szFormControlClasses += " col col-12 col-sm-2";
15707            if ( oConfig["label-v-align"] !== ""){
15708                szFormGroupClasses += " " + oConfig["label-v-align"];
15709            }
15710        }break;
15711        case 9:{
15712            szFormGroupClasses += " row";
15713            szLabelClasses += " col col-12 col-sm-9";
15714            szFormControlClasses += " col col-12 col-sm-3";
15715            if ( oConfig["label-v-align"] !== ""){
15716                szFormGroupClasses += " " + oConfig["label-v-align"];
15717            }               
15718        }break;        
15719        case 6:{
15720            szFormGroupClasses += " row";
15721            szLabelClasses += " col col-12 col-sm-6";
15722            szFormControlClasses += " col col-12 col-sm-6";
15723            
15724            if ( oConfig["label-v-align"] !== ""){
15725                szFormGroupClasses += " " + oConfig["label-v-align"];
15726            }               
15727        }break;
15728        case 3:{
15729            szFormGroupClasses += " row";
15730            szLabelClasses += " col col-12 col-sm-3";
15731            szFormControlClasses += " col col-12 col-sm-9";
15732            
15733            if ( oConfig["label-v-align"] !== ""){
15734                szFormGroupClasses += " " + oConfig["label-v-align"];
15735            }               
15736        }break;  
15737        case 2:{
15738            szFormGroupClasses += " row";
15739            szLabelClasses += " col col-12 col-sm-2";
15740            szFormControlClasses += " col col-12 col-sm-10";
15741            
15742            if ( oConfig["label-v-align"] !== ""){
15743                szFormGroupClasses += " " + oConfig["label-v-align"];
15744            }               
15745        }break;  
15746        case -1:{
15747            szFormGroupClasses+= " d-inline-block";
15748            szLabelClasses += " col col-auto d-inline-block pr-0";
15749            szFormControlClasses += " col col-auto d-inline-block";
15750            
15751            if ( oConfig["label-v-align"] !== ""){
15752                szFormGroupClasses += " " + oConfig["label-v-align"];
15753            }               
15754        }break;          
15755        case "inline-block":{
15756            szLabelClasses += " col col-auto d-inline-block";
15757            szFormControlClasses += " col col-auto d-inline-block";
15758        }break;              
15759    }
15760
15761    szLabelClasses += " text-" + oConfig["label-align"];
15762
15763    html += '<div class="' + szFormGroupClasses +'">';
15764
15765    if ( oConfig["label-title"] !== "" ){
15766        html += '<label role="button" class="' + szLabelClasses +'" for="' + guid + '">' + 
15767                oConfig["label-title"] + '</label>';
15768    }
15769
15770    html += '<div class="' + szFormControlClasses + '">';
15771
15772    html += '<input';
15773
15774    html += ' type="hidden"';
15775    html += ' name="' + oConfig["field-name"] + '"';
15776    html += ' class="' + szFormInputControl + '"';
15777
15778    html += ' value="' + szDefaultValue + '"';    
15779
15780
15781    var szSwitchLabelClasses = "switch-label";
15782             
15783    if ( oConfig["readonly"] ){
15784        html += ' readonly';
15785        szSwitchLabelClasses += " switch-readonly";
15786    }
15787    
15788    if ( oConfig["disabled"] ){                
15789        html += ' disabled';
15790        szSwitchLabelClasses += " switch-disabled";
15791    }                 
15792
15793    if ( oConfig["data-attr"] !== "" ){
15794        html += ' ' + oConfig["data-attr"];
15795    }
15796
15797
15798    html += ' />'; 
15799
15800    html += '<div data-on-label="' +
15801            oConfig["data-on-label"] + '" data-on-value="'+ 
15802            oConfig["data-on-value"] + '" data-off-label="'+
15803            oConfig["data-off-label"] + '" data-off-value="'+
15804            oConfig["data-off-value"] + '" class="switch switch-sm'+
15805            ( oConfig["data-on-value"] === szDefaultValue ? ' on' : '') +'">';
15806    
15807    if ( oConfig["data-off-label"]){
15808        html += '<span class="mr-2">' + oConfig["data-off-label"] + '</span>';
15809    }    
15810    
15811    html += '<input type="checkbox" class="switch" id="' + guid +'" ' +
15812            ( oConfig["data-on-value"] === szDefaultValue ? ' checked' : '') + '>';
15813    
15814    html += '<label class="' + szSwitchLabelClasses + '"';
15815    
15816    if ( oConfig["readonly"] || oConfig["disabled"] ){
15817        html += ' tabindex="-1"';
15818    }    
15819    
15820    html += ' for="' + guid +'"></label>';
15821      
15822    if ( oConfig["data-on-label"]){
15823        html += '<span class="ml-2">' + oConfig["data-on-label"] + '</span>';
15824    }        
15825      
15826    html += '</div>';
15827
15828
15829    if ( oConfig["label-description"] !== "" ){
15830        html += '<small class="ctl-form-field-description">' + oConfig["label-description"] + '</small>';
15831    }
15832
15833    html += '<div class="invalid-feedback"></div>';
15834
15835    html += '</div>';
15836    
15837    html += '</div>';
15838
15839    return html;
15840}  
15841
15842
15843function formFieldsDisableSwitch( oNodeInput ){
15844    var oNodeSwitchContainer = oNodeInput.closest('.ctlswitchfield');
15845    oNodeInput.val(oNodeSwitchContainer.find('.switch').attr("data-off-value"));
15846    oNodeSwitchContainer.find('.switch').removeClass('on');
15847    oNodeSwitchContainer.find('label').addClass('switch-disabled');
15848    oNodeSwitchContainer.find('input[type=checkbox]').prop('checked', false);
15849}
15850
15851function formFieldsEnableSwitch( oNodeInput ){
15852    var oNodeSwitchContainer = oNodeInput.closest('.ctlswitchfield');
15853    oNodeSwitchContainer.find('label').removeClass('switch-disabled');
15854}
15855
15856function formFieldsBuildCalendarDateField( oConfig, szDefaultValue = ""){
15857            
15858    var oDefault = {
15859        "label-title"        : "",
15860        "label-suggestion"   : "",
15861        "label-description"  : "",                
15862        "field-name"         : "",
15863        "mandatory"          : false,
15864        "display"            : 12,
15865        "label-align"        : "left",
15866        "label-v-align"      : "",
15867        "readonly"           : false,
15868        "readonly-to-data-field" : false,
15869        "data-attr"          : "",
15870        "data-logic-attr"          : "",
15871        "classes"            : "",
15872        "autocomplete"       : false,
15873        "align-value"        : "left",
15874        "disabled"           : false,
15875        "form-group-classes" : "",
15876        'show-empty-button'  : false,
15877        "show-extra-buttons" : false,
15878        "mandatory-on-label" : true,
15879        "floating-label"     : false, 
15880        "debug"              : false,  
15881        'date-format'        : "DD/MM/YYYY",
15882
15883        "alternative-mandatory-fields" : [],
15884        "widget-id"                    : 0,
15885
15886        "min-date" : "",
15887        "min-date-unit" : "",
15888        "min-date-type" : "",        
15889        "max-date" : "",
15890        "max-date-unit" : "",
15891        "max-date-type" : "",        
15892
15893    };
15894   
15895    oConfig = jQuery.extend(oDefault, oConfig);
15896
15897    if ( oConfig["readonly-to-data-field"] && 
15898         oConfig["readonly"] ){
15899        oConfig["rendering"] = "date";
15900       // return $this->buildDataField( oConfig, szDefaultValue);
15901       return '';
15902    }
15903
15904    var guid = g_oCTLWPStudio.makeCode(4); 
15905    var iDisplay = oConfig["display"];    
15906    var html = "";
15907    var szFormInputControl = "form-control";
15908            
15909    if ( !oConfig["readonly"] && !oConfig["disabled"] ){
15910        szFormInputControl += " datetimepicker-input";
15911    }
15912
15913    var szFormGroupClasses = 'form-group' + ' ' + oConfig["form-group-classes"]
15914
15915    var szLabelClasses = "ctl-form-field-label";
15916    var szFormControlClasses = 'ctl-wp-studio-form-control-wrapper';
15917       
15918    szFormControlClasses += " ctldatefield";
15919			
15920    if( !oConfig["readonly"] && !oConfig["disabled"] && oConfig["mandatory"] ){
15921        szFormControlClasses += " mandatory";
15922        
15923        if ( oConfig["mandatory-on-label"] ){
15924            szFormGroupClasses += " mandatory-on-label";
15925        }                
15926    }
15927            
15928    if( oConfig["classes"] ){
15929        szFormInputControl += " " + oConfig["classes"];
15930    }
15931            
15932    if ( oConfig["floating-label"] && iDisplay == 12 ){                
15933        szFormGroupClasses += " floating-label";
15934        
15935        oConfig["label-suggestion"] = "";    
15936        oConfig["label-align"]      = "left";
15937        
15938        if ( szDefaultValue ){
15939            szFormGroupClasses += " floating-label-normal";
15940        }
15941    }               
15942            
15943    szFormInputControl += " text-" + oConfig["align-value"];
15944    
15945    if ( !oConfig["autocomplete"] ){
15946        oConfig["data-attr"] += ' autocomplete="off"';
15947    }      
15948    
15949    if ( oConfig["debug"] ){
15950        oConfig["data-attr"] += ' data-debug="true"';
15951    }else{
15952        oConfig["data-attr"] += ' data-debug="false"';
15953    }                  
15954
15955    switch(iDisplay){
15956        case 12:{
15957            szLabelClasses += " d-block";
15958        }break;
15959        case 10:{
15960            szFormGroupClasses += " row";
15961            szLabelClasses += " col col-12 col-sm-10";
15962            szFormControlClasses += " col col-12 col-sm-2"; 
15963            if ( oConfig["label-v-align"]){
15964                szFormGroupClasses += " " + oConfig["label-v-align"];
15965            }
15966        }break;
15967        case 9:{
15968            szFormGroupClasses += " row";
15969            szLabelClasses += " col col-12 col-sm-9";
15970            szFormControlClasses += " col col-12 col-sm-3";
15971
15972            if ( oConfig["label-v-align"]){
15973                szFormGroupClasses += " " + oConfig["label-v-align"];
15974            }
15975        }break;
15976        case 6:{
15977            szFormGroupClasses+= " row";
15978            szLabelClasses += " col col-12 col-sm-6";
15979            szFormControlClasses += " col col-12 col-sm-6";
15980            
15981            if ( oConfig["label-v-align"]){
15982                szFormGroupClasses += " " + oConfig["label-v-align"];
15983            }                                
15984        }break;
15985        case 3:{
15986            szFormGroupClasses+= " row";
15987            szLabelClasses += " col col-12 col-sm-3";
15988            szFormControlClasses += " col col-12 col-sm-9";
15989            
15990            if ( oConfig["label-v-align"]){
15991                szFormGroupClasses += " " + oConfig["label-v-align"];
15992            }                                
15993        }break;  
15994        case 2:{
15995            szFormGroupClasses+= " row";
15996            szLabelClasses += " col col-12 col-sm-2";
15997            szFormControlClasses += " col col-12 col-sm-10";
15998            
15999            if ( oConfig["label-v-align"]){
16000                szFormGroupClasses += " " + oConfig["label-v-align"];
16001            }                                
16002        }break;  
16003        case -1:{
16004            szFormGroupClasses += " d-inline-block";
16005            szLabelClasses += " col col-auto d-inline-block pr-0";
16006            szFormControlClasses += " col col-auto d-inline-block";
16007            
16008            if ( oConfig["label-v-align"]){
16009                szFormGroupClasses += " " + oConfig["label-v-align"];
16010            }                                
16011        }break;
16012        case "inline-block":{
16013            szLabelClasses += " col col-auto d-inline-block";
16014            szFormControlClasses += " col col-auto  d-inline-block";
16015        }break;              
16016    }
16017            
16018    szLabelClasses += " text-" + oConfig["label-align"];
16019    
16020    html += '<div class="'+ szFormGroupClasses+ '"';
16021    if ( oConfig["widget-id"]){                
16022        html += ' widget-id="'+ oConfig["widget-id"]+ '"';
16023    }    
16024    html += '>';
16025    
16026    if ( oConfig["label-title"] != "" || 
16027        (iDisplay != 12 && iDisplay != "inline-block" && iDisplay != -1)){
16028        html += '<label class="'+ szLabelClasses+ '" for="'+ guid+ '">'+ oConfig["label-title"]+ '</label>';
16029    }
16030
16031    html += '<div class="'+ szFormControlClasses+ '"';            
16032    if (oConfig['alternative-mandatory-fields'] && 
16033        Array.isArray(oConfig['alternative-mandatory-fields']) &&
16034        oConfig['alternative-mandatory-fields'].length > 0 ){
16035        html += ' data-alternative-mandatory-fields="' + 
16036        oConfig['alternative-mandatory-fields'].join(',')+ '"';
16037    }           
16038    html += '>';
16039
16040    html += '<input type="hidden" name="'+ oConfig["field-name"]+ '"';
16041    if ( oConfig["data-logic-attr"] ){
16042        html += ' ' + oConfig["data-logic-attr"];
16043    }
16044    html += ' value="' + szDefaultValue + ' "/>';
16045
16046    var guidDateTime = "datetime-" + g_oCTLWPStudio.makeCode(4); 
16047        
16048    html += '<div id="'+ guidDateTime+ '" class="input-group date" data-target-input="nearest">';
16049    
16050    
16051    html += '<input id="'+ guid+ '"';
16052    
16053    html += ' data-bind="value:addStart,valueUpdate:\'input\'"';
16054
16055    if ( !oConfig["readonly"] && !oConfig["disabled"] ){	
16056        html += ' data-toggle="datetimepicker" data-target="#' + guidDateTime + '"';			
16057    }
16058
16059    szGfxValue = szDefaultValue;
16060
16061    if ( oConfig['date-format'] != "none" &&
16062        oConfig['date-format'] != "" ){
16063
16064        if ( oConfig['date-format'] == "L" ){
16065            oConfig['date-format'] = "DD/MM/YYYY";
16066        }
16067    }	  
16068    
16069    if( oConfig["min-date"] ){
16070        html += ' data-min-date="' + oConfig["min-date"] + '"';
16071    }else if ( oConfig["min-date-unit"] && oConfig["min-date-type"] ){
16072        var oMoment = moment();
16073        oMoment = oMoment.subtract(oConfig["min-date-unit"], oConfig["min-date-type"]);
16074
16075        html += ' data-min-date="' + oMoment.format("YYYY-MM-DD") + '"';
16076    }    
16077
16078    if( oConfig["max-date"] ){
16079        html += ' data-max-date="' + oConfig["max-date"] + '"';
16080    }else if ( oConfig["max-date-unit"] && oConfig["max-date-type"] ){
16081        var oMoment = moment();
16082        oMoment = oMoment.subtract(oConfig["max-date-unit"], oConfig["max-date-type"]);
16083
16084        html += ' data-max-date="' + oMoment.format("YYYY-MM-DD") + '"';
16085    }        
16086
16087    html += ' data-format="' + oConfig['date-format'] + '"';              
16088
16089    if (szDefaultValue){
16090        var oMoment = moment(szDefaultValue, "YYYY-MM-DD");
16091        switch(oConfig["date-format"]){
16092            case "DD/MM/YYYY":{
16093                szGfxValue = oMoment.format("DD/MM/YYYY");  
16094            }break;
16095        }
16096    }
16097
16098    html += ' type="text"';
16099    html += ' name="'+ oConfig["field-name"]+ '-gfx"';
16100    html += ' class="'+ szFormInputControl+ '"';
16101    
16102    html += ' data-value="'+ szDefaultValue+ '"';                 
16103    html += ' value="'+ szGfxValue+ '"'; 
16104
16105    if ( oConfig["readonly"] ){
16106        html += ' readonly';
16107    }
16108    
16109    if ( oConfig["disabled"] ){                
16110        html += ' disabled';
16111    }               
16112    
16113    if ( oConfig["label-suggestion"] ){
16114        html += ' placeholder="'+ oConfig["label-suggestion"]+ '"';                    
16115    }
16116    
16117    if ( oConfig["data-attr"] ){
16118        html += ' ' + oConfig["data-attr"];
16119    }
16120    
16121    html += ' onkeydown="return false" inputmode="none"';
16122    
16123    html += '/>'; 
16124    
16125        
16126    html += '<div class="input-group-append" data-target="#'+ guidD
16126ateTime+ '"';
16127    
16128    if ( !oConfig["readonly"] && !oConfig["disabled"] ){	
16129        html += ' data-toggle="datetimepicker"';
16130    }
16131    
16132    html += '>';
16133    
16134    html += '<div class="input-group-text"><i class="ctl-wp-studio-icons-calendar"></i></div>';
16135    html += '</div>';            
16136
16137    html += '</div>';
16138
16139
16140    if ( !oConfig["readonly"] && oConfig["show-extra-buttons"] ){
16141        html += '<button title="'+ g_oCTLFormFieldsLocalizationCommon["Prev"] + '" type="button" class="btn btn-xs mt-2 mr-2 btn-outline-secondary btn-action-prev-date"><i class="ctl-wp-studio-icons-left-open-1"></i></button>';
16142
16143        html += '<button title="' + g_oCTLFormFieldsLocalizationCommon["Today"] + '" type="button" class="btn btn-xs mt-2 mr-2 btn-outline-secondary btn-action-today-date"><span class="btn-text">' + g_oCTLFormFieldsLocalizationCommon["Today"] + '</span></button>';                
16144
16145        html += '<button title="' + g_oCTLFormFieldsLocalizationCommon["Next"] + '" type="button" class="btn btn-xs mt-2 mr-2 btn-outline-secondary btn-action-next-date"><i class="ctl-wp-studio-icons-right-open-1"></i></button>';   
16146    }
16147    
16148    if ( !oConfig["readonly"] && oConfig["show-empty-button"] ){
16149        html += '<button title="' + g_oCTLFormFieldsLocalizationCommon["Empty"] + '" type="button" class="btn btn-xs mt-2 btn-outline-secondary btn-action-empty-date">';
16150        
16151        if (!oConfig["show-extra-buttons"]){
16152            html += '<span class="btn-text ml-1">' + g_oCTLFormFieldsLocalizationCommon["Empty"] + '</span>';
16153        }
16154        
16155        html += '</button>';        
16156    }            
16157
16158    if ( oConfig["label-description"] ){
16159        html += '<small class="ctl-form-field-description">'+ oConfig["label-description"]+ '</small>';
16160    }
16161                
16162    html += '<div class="invalid-feedback text-' + oConfig["label-align"] + '"></div>';
16163    
16164    html += '</div>';
16165    html += '</div>';
16166
16167    return html;
16168}  
16169
16170function formFieldsGenerateFieldGuid(oConfig){
16171    let guid = "";
16172    if ( oConfig["field-name"] ){
16173        if ( oConfig["field-name"].endsWith("[]") ){
16174            guid = oConfig["field-name"].substring(0, oConfig["field-name"].length-2) + "-";    
16175        }else{
16176            guid = oConfig["field-name"] + "-";    
16177        }
16178    }
16179    guid += g_oCTLWPStudio.makeCode(4);    
16180
16181    return guid;
16182}
16183
16184function formFieldsBuildCheck( oConfig, szDefaultValue, bChecked ){
16185
16186    let oDefault = {
16187        "check-description" : "",                
16188        "field-name" : "",
16189        "data-attr"  : "",
16190        "classes"    : "",
16191        "disabled"   : false,
16192        "readonly"   : false,
16193        "id"         : ""
16194    };
16195
16196    oConfig = jQuery.extend(oDefault, oConfig);
16197
16198    if(!oConfig["id"]){
16199        guid = formFieldsGenerateFieldGuid(oConfig);
16200    }else{
16201        guid = oConfig["id"];
16202    }
16203
16204    var szItemClasses = "custom-control custom-checkbox";
16205
16206    if ( oConfig["classes"] !== "" ){
16207        szItemClasses += ' ' + oConfig["classes"];
16208    }
16209
16210    let html = "";
16211
16212    html += '<div class="' + szItemClasses + '" ' + oConfig["data-attr"]  + '>';
16213
16214    if ( !oConfig["field-name"].endsWith("[]") ){
16215        html += '<input type="hidden" name="' + oConfig["field-name"] + '-hidden" value="1" />';
16216    }else{
16217        html += '<input type="hidden" name="' + oConfig["field-name"].replace("[]", "") + '-hidden[]" value="" />';
16218    }    
16219
16220    html += '<input type="checkbox" id="' + guid + '" value="' + szDefaultValue
16221            + '" name="' + oConfig["field-name"] + '" class="custom-control-input"';
16222
16223    if ( oConfig["disabled"] ){
16224    html += ' disabled'; 
16225    }
16226    if ( oConfig["readonly"] ){
16227    html += ' readonly'; 
16228    }     
16229    if ( bChecked ){
16230    html += ' checked'; 
16231    }    
16232
16233    html += '>';
16234
16235    html += '<label class="custom-control-label custom-checkbox-fake-label" for="' + guid + '">';
16236    if ( oConfig["check-description"] !== "" ){
16237        html += oConfig["check-description"];
16238    }
16239    html += '</label>';
16240
16241    html += '</div>'; 
16242    return html;
16243}
16244
16245function formFieldsBuildCheckField( oConfig, szDefaultValue, bChecked ){
16246    var oDefault = {
16247        "label-title" : "",
16248        "label-description" : "",
16249        "check-description" : "",                
16250        "field-name" : "",
16251        "mandatory" : false,
16252        "display" : 12,
16253        "label-align" : "left",
16254        "label-v-align" : "",
16255        "data-attr" : "",
16256        "classes" : "",
16257        "control-classes" : "",
16258        "disabled" : false,
16259        "readonly" : false,
16260        "mandatory-on-label" : true,
16261        "id" : "",
16262    };
16263
16264    oConfig = jQuery.extend(oDefault, oConfig);
16265
16266    let guid = "";
16267
16268    if ( !oConfig["id"] ){
16269        guid = formFieldsGenerateFieldGuid(oConfig);
16270    }else{
16271        guid = oConfig["id"];
16272    }   
16273
16274    var html = "";           
16275
16276    var szFormGroupClasses   = "form-group";
16277    var szLabelClasses       = "ctl-form-field-label";    
16278    var szFormControlClasses = 'ctl-wp-studio-form-control-wrapper';
16279
16280    szFormControlClasses += " ctlcheckfield";
16281
16282    if( !oConfig["readonly"] && !oConfig["disabled"] && oConfig["mandatory"] ){
16283        szFormControlClasses += " mandatory";
16284        
16285        if ( oConfig["mandatory-on-label"] ){
16286            szFormGroupClasses += " mandatory-on-label";
16287        }        
16288    }
16289
16290    if ( oConfig["control-classes"] !== "" ){
16291        szFormControlClasses += ' ' + oConfig["control-classes"];
16292    }     
16293
16294    var iDisplay = parseInt(oConfig["display"]);
16295
16296    switch(iDisplay){
16297        case 12:{
16298            szLabelClasses += " d-block";
16299        }break;
16300        case 10:{
16301            szFormGroupClasses   += " row";
16302            szLabelClasses       += " col col-12 col-sm-10";
16303            szFormControlClasses += " col col-12 col-sm-2";
16304
16305            if ( oConfig["label-v-align"] !== ""){
16306                szFormGroupClasses += " " + oConfig["label-v-align"];
16307            }            
16308        }break;
16309        case 9:{
16310            szFormGroupClasses   += " row";
16311            szLabelClasses       += " col col-12 col-sm-9";
16312            szFormControlClasses += " col col-12 col-sm-3";
16313
16314            if ( oConfig["label-v-align"] !== ""){
16315                szFormGroupClasses += " " + oConfig["label-v-align"];
16316            }            
16317        }break;
16318        case 6:{
16319            szFormGroupClasses   += " row";
16320            szLabelClasses       += " col col-12 col-sm-6";
16321            szFormControlClasses += " col col-12 col-sm-6";
16322            
16323            if ( oConfig["label-v-align"] !== ""){
16324                szFormGroupClasses += " " + oConfig["label-v-align"];
16325            }            
16326        }break;
16327        case 3:{
16328            szFormGroupClasses   += " row";
16329            szLabelClasses       += " col col-12 col-sm-3";
16330            szFormControlClasses += " col col-12 col-sm-9";
16331            
16332            if ( oConfig["label-v-align"] !== ""){
16333                szFormGroupClasses += " " + oConfig["label-v-align"];
16334            }            
16335        }break;  
16336        case 2:{
16337            szFormGroupClasses   += " row";
16338            szLabelClasses       += " col col-12 col-sm-2";
16339            szFormControlClasses += " col col-12 col-sm-10";
16340            
16341            if ( oConfig["label-v-align"] !== ""){
16342                szFormGroupClasses += " " + oConfig["label-v-align"];
16343            }            
16344        }break;    
16345        case -1:{
16346            szFormGroupClasses+= " d-inline-block";
16347            szLabelClasses += " col col-auto d-inline-block pr-0";
16348            szFormControlClasses += " col col-auto d-inline-block";
16349            
16350            if ( oConfig["label-v-align"] !== ""){
16351                szFormGroupClasses += " " + oConfig["label-v-align"];
16352            }            
16353        }break; 
16354        case -2:{
16355            szFormGroupClasses   += " row";
16356            szLabelClasses       += " col col-auto";
16357            szFormControlClasses += " col col-auto";
16358            
16359            if ( oConfig["label-v-align"] !== ""){
16360                szFormGroupClasses += " " + oConfig["label-v-align"];
16361            }            
16362        }break;            
16363    }
16364
16365    szLabelClasses += " text-" + oConfig["label-align"] ;
16366
16367    html += '<div class="' + szFormGroupClasses + '">';
16368
16369    if ( oConfig["label-title"] !== "" ){
16370        html += '<label role="button" class="' + szLabelClasses + '" for="' + guid +
16371                '">' + oConfig["label-title"]  + '</label>';
16372    }
16373
16374    oConfig["id"] = guid;
16375
16376    html += '<div class="' + szFormControlClasses +'">';
16377
16378    html += formFieldsBuildCheck( oConfig, szDefaultValue, bChecked );
16379
16380    if ( oConfig["label-description"] !== "" ){                
16381        html += '<div><small class="ctl-form-field-description">' + oConfig["label-description"] + '</small></div>';
16382    }
16383
16384    html += '<div class="invalid-feedback"></div>';            
16385
16386    html += '</div>';
16387
16388    html += '</div>';            
16389
16390    return html;
16391}   
16392
16393
16394function formFieldsBuildAnchorField( oConfig, szUrl ){
16395    
16396    let oDefault = {
16397        "label-anchor"   : "",
16398        "label-title"    : "",               
16399        "display"        : 12,
16400        "button-align"   : "left",
16401        "semantic-color" : "link",
16402        "data-attr"      : "",
16403        "classes"        : "",
16404        "label-description" : "",
16405        "target"            : "_self",
16406        "rel"               : "none",
16407        "widget-id"         : 0,
16408        "icon-align"     : "left",
16409        "icon-class"     : "",        
16410        "remove-button-style" : false,
16411        "anchor-size"   : "normal",
16412        
16413        "control-classes"	: "",
16414        "wrapper-classes"	: "",
16415
16416        "title-attribute" : "",
16417    };
16418
16419    oConfig = jQuery.extend(oDefault, oConfig);        
16420
16421    let html = "";
16422
16423    let szFormControlClasses = "";
16424    let szFormGroupClasses = "form-group";
16425
16426    if( oConfig["control-classes"] ){
16427        szFormControlClasses += " " + oConfig["control-classes"];
16428    }
16429
16430    if( oConfig["wrapper-classes"] ){
16431        szFormGroupClasses += " " + oConfig["wrapper-classes"];
16432    }
16433
16434    let iDisplay = Number(oConfig["display"]);
16435
16436    switch(iDisplay){
16437        case 12:{
16438            szFormControlClasses += " text-" + oConfig["button-align"];
16439        }break;
16440        case 10:{
16441            szFormGroupClasses   += " row justify-content-end";
16442            szFormControlClasses += " col col-sm-2";
16443            szFormControlClasses += " text-" + oConfig["button-align"];
16444        }break;
16445        case 9:{
16446            szFormGroupClasses   += " row justify-content-end";
16447            szFormControlClasses += " col col-sm-3";
16448            szFormControlClasses += " text-" + oConfig["button-align"];
16449        }break;
16450        case 6:{
16451            szFormGroupClasses   += " row justify-content-end";
16452            szFormControlClasses += " col col-sm-6";
16453            szFormControlClasses += " text-" + oConfig["button-align"];
16454        }break;
16455        case 3:{
16456            szFormGroupClasses   += " row justify-content-end";
16457            szFormControlClasses += " col col-sm-9";
16458            szFormControlClasses += " text-" + oConfig["button-align"];
16459        }break;  
16460        case 2:{
16461            szFormGroupClasses   += " row justify-content-end";
16462            szFormControlClasses += " col col-sm-10";
16463            szFormControlClasses += " text-" + oConfig["button-align"];
16464        }break;  
16465        case -1:{
16466            szFormGroupClasses   += " d-inline-block justify-content-end";
16467            szFormControlClasses += " col col-auto d-inline-block";
16468        }break;            
16469        default:{
16470            if ( oConfig["display"] == "inline-block" ){
16471                szFormGroupClasses += " d-inline-block";
16472            }
16473        }
16474    }            
16475
16476    html += '<div class="'+ szFormGroupClasses +'"';
16477    if ( oConfig["widget-id"]){                
16478        html += ' widget-id="'+ oConfig["widget-id"] +'"';
16479    }    
16480    html += '>';      
16481
16482    html += '<div class="'+ szFormControlClasses.trim() +'">';  
16483
16484    html += formFieldsBuildAnchor(oConfig, szUrl);
16485
16486    if ( oConfig["label-description"] !== "" ){
16487        html += '<div><small class="ctl-form-field-description">' + oConfig["label-description"] + '</small></div>';
16488    }                
16489    html += '</div>';  
16490    html += '</div>';            
16491
16492    
16493    return html;
16494}     
16495
16496function buildAnchor( oConfig, szUrl ){
16497    let oDefault = {
16498        "label-anchor"   : "", 
16499        "label-title"    : "",            
16500        "display"        : 12,
16501        "button-align"   : "left",
16502        "semantic-color" : "link",
16503        "data-attr"      : "",
16504        "classes"        : "",
16505        "target"         : "_self",
16506        "rel"            : "none",
16507        "icon-align"     : "left",
16508        "icon-class"     : "",
16509        "remove-button-style" : false,
16510        "anchor-size"   : "normal",
16511        "title-attribute" : "",
16512    };
16513
16514    oConfig = jQuery.extend(oDefault, oConfig);               
16515
16516    let szClasses = "";
16517
16518    if(!oConfig["remove-button-style"]){
16519        szClasses = "btn btn-" + oConfig["semantic-color"];
16520    }
16521
16522    if (oConfig["anchor-size"]){
16523        switch(oConfig["anchor-size"]){
16524            case "extra-small":{
16525                szClasses += " btn-xs";
16526            }break;
16527            case "small":{
16528                szClasses += " btn-sm";
16529            }break;
16530            case "large":{
16531                szClasses += " btn-lg";
16532            }break;
16533        }
16534    }    
16535    
16536    if ( oConfig["classes"]){
16537        szClasses += ' ' + oConfig["classes"];
16538    }
16539
16540    html = "";
16541
16542    html += '<a href="' + $szUrl + '"';
16543
16544    if( oConfig["rel"] != "none"){
16545        html += ' rel="' + oConfig["rel"] + '"';
16546    }                
16547    
16548    html += ' target="' + oConfig["target"] + '"';
16549
16550
16551    if ( oConfig["title-attribute"] ){
16552        html += ' title="' + formFieldsEscapeHtmlAttr(oConfig["title-attribute"]) + '"';
16553    }else if ( oConfig["label-anchor"] ){
16554        html += ' title="' + formFieldsEscapeHtmlAttr(oConfig["label-anchor"]) + '"';
16555    }
16556
16557    html += ' class="' + szClasses + '" ';
16558    html += oConfig["data-attr"] + '>';
16559
16560
16561    if ( oConfig["icon-class"] ){
16562        htmlIcon = '<i class="' + oConfig["icon-class"] + '"></i>';
16563
16564        if( oConfig["icon-align"] == "left" ){
16565            html += htmlIcon;
16566        }
16567
16568        let iMarginDimension = 2;
16569        if ( szClasses.indexOf("btn-sm") !== -1 ){
16570            iMarginDimension = 1;
16571        }
16572
16573        if ( oConfig["label-anchor"] ){
16574            html += '<span class="';
16575            if(!oConfig["remove-button-style"]){
16576                html += 'btn-text';
16577            }
16578
16579            html +=
16580                ( oConfig["icon-align"] == "right" ? (' mr-' + iMarginDimension) : (' ml-' + iMarginDimension))
16581                + '">';
16582            html += oConfig["label-anchor"];                
16583            html += '</span>';
16584        }
16585
16586        if( oConfig["icon-align"] == "right" ){
16587            html += htmlIcon;
16588        }
16589    }else{
16590        html += oConfig["label-anchor"];
16591    }
16592    
16593    html += '</a>';    
16594    
16595    return html;
16596}
16597
16598
16599function formFieldsBuildButtonField( oConfig, szDefaultValue ){
16600
16601    var oDefault = {
16602        "label-title" : "",
16603        "label-align" : "text-left",
16604        "label-v-align" : "",
16605        "button-title" : "",    
16606        'hide-button-title' : false,
16607        "label-description" : "",                
16608        "field-name" : "",
16609        "display" : 12,
16610        "button-align" : "left",
16611        "button-size" : "normal",
16612        "semantic-color" : "primary",
16613        "data-attr" : "",
16614        
16615        "classes" : "",
16616        "wrapper-classes" : "",
16617        "text-classes" : "",
16618
16619        "type" : "button",
16620        "clear-errors" : false,
16621        "form-method" : "post",
16622        "disabled" : false,
16623        "form-group-classes" : "",
16624        "button-id" : "", 
16625        "icon-class" : "",
16626        "icon-align" : "left",
16627
16628        "show-loading-on-submit" : false,
16629
16630        "task-loading" : false,
16631        "task-stoppable" : false,
16632
16633        "selector-to-print" : "",
16634        "selector-to-maximize" : "",
16635        "background-color"  : "",
16636
16637        "title-attribute" : "",
16638    };
16639
16640    oConfig = jQuery.extend(oDefault, oConfig);            
16641
16642    var html = "";
16643
16644    var szLabelClasses       = "ctl-form-field-label text-" + oConfig["label-align"];
16645    var szFormControlClasses = "";
16646    var szFormGroupClasses   = "form-group";
16647    
16648    szFormGroupClasses += ' ' + oConfig["form-group-classes"];
16649    szFormControlClasses += " ctlbtnfield";
16650
16651    var szButtonClasses = "btn btn-" + oConfig["semantic-color"];
16652
16653    if ( oConfig["classes"] ){
16654        szButtonClasses += ' ' + oConfig["classes"];
16655    }
16656
16657    if ( oConfig["clear-errors"] ){
16658        szButtonClasses += ' ctl-form-fields-clear-errors';
16659    }
16660
16661    var iDisplay = parseInt(oConfig["display"]);
16662
16663    switch(iDisplay){            
16664        case 12:{
16665            szLabelClasses += " d-block";
16666            szFormControlClasses += " text-" + oConfig["button-align"];
16667        }break;
16668        case 10:{
16669            szLabelClasses += " col col-12 col-sm-10";
16670            szFormGroupClasses+= " row justify-content-end";
16671            szFormControlClasses += " col col-12 col-sm-2";
16672            szFormControlClasses += " text-" + oConfig["button-align"];
16673
16674            if ( oConfig["label-title"] === "" ){
16675                szFormControlClasses += " offset-sm-2";
16676            }
16677
16678            if ( oConfig["label-v-align"] !== ""){
16679                szFormGroupClasses += " " + oConfig["label-v-align"];
16680            }            
16681        }break;
16682        case 9:{
16683            szLabelClasses += " col col-12 col-sm-9";
16684            szFormGroupClasses+= " row justify-content-end";
16685            szFormControlClasses += " col col-12 col-sm-3";
16686            szFormControlClasses += " text-" + oConfig["button-align"];
16687
16688            if ( oConfig["label-title"] === "" ){
16689                szFormControlClasses += " offset-sm-3";
16690            }
16691
16692            if ( oConfig["label-v-align"] !== ""){
16693                szFormGroupClasses += " " + oConfig["label-v-align"];
16694            }            
16695        }break;
16696        case 6:{
16697            szLabelClasses += " col col-12 col-sm-6";
16698            szFormGroupClasses+= " row justify-content-end";
16699            szFormControlClasses += " col col-12 col-sm-6";
16700            szFormControlClasses += " text-" + oConfig["button-align"];
16701
16702            if ( oConfig["label-title"] === "" ){
16703                szFormControlClasses += " offset-sm-6";
16704            }
16705            
16706            if ( oConfig["label-v-align"] !== ""){
16707                szFormGroupClasses += " " + oConfig["label-v-align"];
16708            }              
16709        }break;
16710        case 3:{
16711            szLabelClasses += " col col-12 col-sm-3";
16712            szFormGroupClasses+= " row justify-content-end";
16713            szFormControlClasses += " col col-12 col-sm-9";
16714            szFormControlClasses += " text-" + oConfig["button-align"];
16715
16716            if ( oConfig["label-title"] === "" ){
16717                szFormControlClasses += " offset-sm-3";
16718            }         
16719            
16720            if ( oConfig["label-v-align"] !== ""){
16721                szFormGroupClasses += " " + oConfig["label-v-align"];
16722            }            
16723        }break;  
16724        case 2:{
16725            szLabelClasses += " col col-12 col-sm-2";
16726            szFormGroupClasses+= " row justify-content-end";
16727            szFormControlClasses += " col col-12 col-sm-10";
16728            szFormControlClasses += " text-" + oConfig["button-align"];
16729
16730            if ( oConfig["label-title"] === "" ){
16731                szFormControlClasses += " offset-sm-2";
16732            }     
16733            
16734            if ( oConfig["label-v-align"] !== ""){
16735                szFormGroupClasses += " " + oConfig["label-v-align"];
16736            }            
16737        }break;  
16738        default:{
16739            if ( oConfig["display"] === "inline-block" ){
16740                szLabelClasses += " col col-auto d-inline-block";                        
16741                if ( oConfig["label-title"] !== "" ){
16742                    szFormGroupClasses = "form-group col-auto d-inline-block";
16743                }else{
16744                    szFormGroupClasses = "d-inline-block";
16745                }                        
16746            }
16747        }
16748    }            
16749
16750    if( oConfig["wrapper-classes"] ){
16751        szFormGroupClasses += " " + oConfig["wrapper-classes"];
16752    }     
16753
16754    html+= '<div class="' + szFormGroupClasses + '">';
16755
16756    if ( oConfig["label-title"] !== "" ){
16757        html+= '<label class="' + szLabelClasses + '">' + oConfig["label-title"] + '</label>';
16758    }            
16759
16760    html += '<div class="' + szFormControlClasses + '">'; 
16761
16762        html += formFieldsBuildButton(oConfig, szDefaultValue);
16763
16764        if ( oConfig["label-description"] !== "" ){
16765            html+= '<small class="ctl-form-field-description">' + oConfig["label-description"] + '</small>';
16766        }    
16767        
16768    html+= '</div>';
16769
16770    html+= '</div>';            
16771
16772
16773    return html;
16774}  
16775
16776function formFieldsBuildButton( oConfig, szDefaultValue ){
16777
16778    oDefault = {
16779        "button-title"      : "",    
16780        'hide-button-title' : false,
16781        "field-name"        : "",
16782        "display"           : 12,
16783        "button-size"       : "normal",
16784        "button-align"      : "left",
16785        "semantic-color"    : "primary",
16786        "data-attr"         : "",
16787        "classes"           : "",
16788        "text-classes"      : "",
16789        "type"              : "button",
16790        "clear-errors"      : false,
16791        "form-method"       : "post",
16792        "disabled"          : false,
16793        "button-id"         : "", 
16794        "icon-class"        : "",
16795        "icon-align"        : "left",                
16796        "show-loading-on-submit" : false,                
16797        "task-loading"    : false,
16798        "task-stoppable"  : false,
16799        "modal-id"        : 0,
16800        "widget-id"       : 0,
16801        "selector-to-print" : '',
16802        "selector-to-maximize" : "",   
16803        "background-color"  : "",
16804        "title-attribute" : "",     
16805    };
16806
16807    oConfig = jQuery.extend(oDefault, oConfig);    
16808
16809    var html = "";                                            
16810
16811    var szButtonClasses = "btn btn-" + oConfig["semantic-color"];
16812
16813    if (oConfig["button-size"]){
16814        switch(oConfig["button-size"]){
16815            case "extra-small":{
16816                szButtonClasses += " btn-xs";
16817            }break;
16818            case "small":{
16819                szButtonClasses += " btn-sm";
16820            }break;
16821            case "large":{
16822                szButtonClasses += " btn-lg";
16823            }break;
16824        }
16825    }   
16826
16827    if ( oConfig["classes"] ){
16828        szButtonClasses += ' ' + oConfig["classes"];
16829    }
16830    
16831    if ( oConfig["clear-errors"] ){
16832        szButtonClasses += ' ctl-form-fields-clear-errors';
16833    }
16834
16835    html += '<button';
16836
16837    if ( oConfig["button-id"] ){                
16838        html += ' id="' + oConfig["button-id"] + '"';
16839    }  
16840    
16841    if ( oConfig["widget-id"] ){                
16842        html += ' widget-id="' + oConfig["widget-id"] + '"';
16843    }              
16844    
16845    if ( oConfig["type"] == "submit" && oConfig["form-method"] ){
16846        html += ' formmethod="' + oConfig["form-method"] + '"';
16847    }
16848    
16849    if ( oConfig["field-name"] ){                
16850        html += ' name="' + oConfig["field-name"] + '"';
16851    }
16852    
16853    if ( oConfig["background-color"]){                
16854        html += ' style="background-color:' + oConfig["background-color"] + '"';
16855    }
16856
16857    switch(oConfig["type"]){
16858        case "print":{
16859            szButtonClasses += " btn-action-print";
16860        }break;        
16861        case "maximize":{
16862            szButtonClasses += " btn-action-maximize";
16863            oConfig["icon-class"] = "ctl-wp-studio-icons-resize-full-alt";     
16864        }break;         
16865        case "clear-form-and-submit":{
16866            szButtonClasses += " btn-clear-form-and-submit";
16867        }break;        
16868        case "clear-form":{
16869            szButtonClasses += " btn-clear-form";
16870        }break;
16871        case "refresh-page":{
16872            szButtonClasses += " btn-refresh-page";
16873        }break;     
16874        case "close-modal":{
16875            szButtonClasses += " btn-action-close-modal";
16876        }break;  
16877        case "close-stack-modals":{
16878            szButtonClasses += " btn-action-close-stack-modals";
16879        }break; 
16880        case "logout":{
16881            szButtonClasses += " ctl-user-roles-action-logout";
16882        }break;       
16883        case "toggle-sidebar":{
16884            szButtonClasses += " ctl-vulcano-theme-sidebar-toggle";
16885        }break;                                       
16886        case "open-modal":{
16887            szButtonClasses += " btn-action-open-modal";
16888        }break;  
16889        case "toggle":{
16890            if ( oConfig["data-attr"] ){                
16891                oConfig["data-attr"] += ' ';                        
16892            }  
16893            oConfig["data-attr"] += ' data-toggle="button"';                        
16894        }break;               
16895        case "submit-email":{
16896            szButtonClasses += " btn-action-submit-email";
16897        }break;                                                                
16898        case "submit":{
16899            if ( oConfig["show-loading-on-submit"]){
16900                szButtonClasses += " btn-show-loading-on-submit";
16901            }                        
16902        }break;
16903    }
16904    
16905    if ( szButtonClasses ){                
16906        html += ' class="' + szButtonClasses + '"';
16907    }   
16908    
16909    if ( oConfig["data-attr"] ){                
16910        html += ' ' + oConfig["data-attr"];
16911    }   
16912
16913    if ( oConfig["type"] == "open-modal" && oConfig["modal-id"] ){
16914        html += ' data-modal-id="' + oConfig["modal-id"] + '"';
16915    }
16916    if ( oConfig["type"] == "print" && oConfig["selector-to-print"]){
16917        html += ' data-print-selector="' + oConfig["selector-to-print"] + '"';
16918    }     
16919    if ( oConfig["type"] == "maximize" && oConfig["selector-to-maximize"]){
16920        html += ' data-maximize-selector="' + oConfig["selector-to-maximize"] + '"';
16921    }       
16922
16923    if ( oConfig["disabled"] ){                
16924        html += ' disabled';
16925    } 
16926
16927    if ( oConfig["title-attribute"] ){
16928        html += ' title="' + formFieldsEscapeHtmlAttr(oConfig["title-attribute"]) + '"';
16929    }else if ( oConfig["button-title"] ){
16930        html += ' title="' + formFieldsEscapeHtmlAttr(oConfig["button-title"]) + '"';
16931    }
16932    
16933    if ( oConfig["task-loading"] ){
16934        html += ' data-task-loading="1"';
16935    }
16936    
16937    if ( oConfig["task-stoppable"] ){
16938        html += ' data-task-stoppable="1"';
16939    }                
16940    
16941    if ( szDefaultValue ){
16942        html += ' value="' + szDefaultValue + '"';    
16943    }                
16944    
16945    switch(oConfig["type"]){
16946        case "submit":{
16947            html += ' type="submit">';
16948        }break;
16949        default:{
16950            html += ' type="button">';
16951        }
16952    }
16953    
16954    if ( oConfig["task-loading"] ){    
16955        html += ' <span class="spinner-border spinner-border-sm" role="status" aria-hidden="true"></span>';
16956    }           
16957
16958    if ( oConfig["icon-align"] == "left" && oConfig["icon-class"] ){
16959        html += '<i class="' + oConfig["icon-class"] + '"></i>';     
16960    }
16961    
16962    if ( !oConfig['hide-button-title'] && oConfig["button-title"] !== "" ){            
16963        var szTextClasses = "btn-text";
16964        if (oConfig["text-classes"]){
16965            szTextClasses += ' ' + oConfig["text-classes"];
16966        }
16967
16968        var iMarginDimension = 2;
16969        if (  szButtonClasses.indexOf("btn-xs") !== -1){
16970            iMarginDimension = 1;
16971        }
16972
16973        if (oConfig["icon-class"]){
16974            switch(oConfig["icon-align"]){
16975                case "left":{
16976                    szTextClasses += ' ml-' + iMarginDimension;
16977                }break;
16978                case "right":{
16979                    szTextClasses += ' mr-' + iMarginDimension;
16980                }break;
16981            }
16982        }        
16983
16984        html += '<span class="' + szTextClasses + '">';
16985            html += oConfig["button-title"];                     
16986        html += '</span>';                      
16987    }
16988    
16989    if ( oConfig["icon-align"] == "right" && oConfig["icon-class"] ){
16990        html += '<i class="' + oConfig["icon-class"] + '"></i>';    
16991    }                
16992    
16993    html += '</button>';
16994
16995    return html;
16996}
16997
16998function formFieldsEscapeHtmlAttr(str) {
16999  return str
17000    .replace(/&/g, "&amp;")
17001    .replace(/"/g, "&quot;")
17002    .replace(/'/g, "&#39;")
17003    .replace(/</g, "&lt;")
17004    .replace(/>/g, "&gt;");
17005}
17006
17007function formFieldsBuildColorField( oConfig, szDefaultValue ){
17008
17009    var oDefault = {
17010        "label-title" : "",
17011        "label-suggestion" : "",
17012        "label-description" : "",                
17013        "field-name" : "",
17014        "mandatory" : false,
17015        "display" : 12,
17016        "label-align" : "left",
17017        "label-v-align" : "",
17018        "readonly" : false,
17019        "data-attr" : "",
17020        "classes" : "",
17021        "control-classes" : "", 
17022        "wrapper-classes" : "",
17023        "input-group-classes" : "",         
17024        "autocomplete" : false,
17025        "align-value" : "left",
17026        "disabled" : false,
17027        
17028        "mandatory-on-label" : true,
17029        "floating-label" : false,     
17030    };
17031
17032    oConfig = jQuery.extend(oDefault, oConfig);    
17033
17034    if (!szDefaultValue){
17035        szDefaultValue = "";
17036    }
17037
17038
17039    var guid = "";
17040    if (oConfig["field-name"]){
17041        guid = oConfig["field-name"] + "-";    
17042    }
17043    guid += g_oCTLWPStudio.makeCode(4);             
17044
17045    var html = "";
17046
17047    var szFormInputControl = "form-control";
17048
17049    var szFormGroupClasses = "form-group ctl-color-picker";
17050    var szLabelClasses     = "ctl-form-field-label";
17051    var szFormControlClasses = 'ctl-wp-studio-form-control-wrapper';
17052
17053    szFormControlClasses += " ctltextfield";
17054
17055    if( !oConfig["readonly"] && !oConfig["disabled"] && oConfig["mandatory"] ){
17056        szFormControlClasses += " mandatory";
17057        
17058        if ( oConfig["mandatory-on-label"] ){
17059            szFormGroupClasses += " mandatory-on-label";
17060        }        
17061    }
17062
17063    if( oConfig["classes"] ){
17064        szFormInputControl += " " + oConfig["classes"];
17065    }
17066    
17067    if( oConfig["wrapper-classes"] ){
17068        szFormGroupClasses += " " + oConfig["wrapper-classes"];
17069    }  
17070    
17071    if( oConfig["control-classes"] ){
17072        szFormControlClasses += " " + oConfig["control-classes"];
17073    }         
17074
17075    if ( oConfig["floating-label"] && iDisplay === 12 ){                
17076        szFormGroupClasses += " floating-label";
17077
17078        oConfig["label-suggestion"] = "";    
17079        oConfig["label-align"]      = "left";
17080
17081        if ( szDefaultValue ){
17082            szFormGroupClasses += " floating-label-normal";
17083        }
17084    }      
17085
17086    szFormInputControl += " text-" + oConfig["align-value"];
17087
17088    if ( !oConfig["autocomplete"] ){
17089        oConfig["data-attr"] += ' autocomplete="off"';
17090    }              
17091
17092    var iDisplay = oConfig["display"];
17093
17094    switch(iDisplay){
17095        case 12:{
17096            szLabelClasses += " d-block";
17097        }break;
17098        case 10:{
17099            szFormGroupClasses+= " row";
17100            szLabelClasses += " col col-12 col-sm-10";
17101            szFormControlClasses += " col col-12 col-sm-2";
17102
17103            if ( oConfig["label-v-align"] !== ""){
17104                szFormGroupClasses += " " + oConfig["label-v-align"];
17105            }            
17106        }break;
17107        case 9:{
17108            szFormGroupClasses+= " row";
17109            szLabelClasses += " col col-12 col-sm-9";
17110            szFormControlClasses += " col col-12 col-sm-3";
17111            if ( oConfig["label-v-align"] !== ""){
17112                szFormGroupClasses += " " + oConfig["label-v-align"];
17113            }            
17114        }break;
17115        case 6:{
17116            szFormGroupClasses+= " row";
17117            szLabelClasses += " col col-12 col-sm-6";
17118            szFormControlClasses += " col col-12 col-sm-6";
17119            
17120            if ( oConfig["label-v-align"] !== ""){
17121                szFormGroupClasses += " " + oConfig["label-v-align"];
17122            }               
17123        }break;
17124        case 3:{
17125            szFormGroupClasses+= " row";
17126            szLabelClasses += " col col-12 col-sm-3";
17127            szFormControlClasses += " col col-12 col-sm-9";
17128            
17129            if ( oConfig["label-v-align"] !== ""){
17130                szFormGroupClasses += " " + oConfig["label-v-align"];
17131            }               
17132        }break;  
17133        case 2:{
17134            szFormGroupClasses+= " row";
17135            szLabelClasses += " col col-12 col-sm-2";
17136            szFormControlClasses += " col col-12 col-sm-10";
17137            
17138            if ( oConfig["label-v-align"] !== ""){
17139                szFormGroupClasses += " " + oConfig["label-v-align"];
17140            }               
17141        }break;  
17142        case -1:{
17143            szFormGroupClasses+= " d-inline-block";
17144            szLabelClasses += " col col-auto d-inline-block pr-0";
17145            szFormControlClasses += " col col-auto d-inline-block";
17146            
17147            if ( oConfig["label-v-align"] !== ""){
17148                szFormGroupClasses += " " + oConfig["label-v-align"];
17149            }               
17150        }break;          
17151        case "inline-block":{
17152            szLabelClasses += " col col-auto d-inline-block";
17153            szFormControlClasses += " col col-auto  d-inline-block";
17154        }break;              
17155    }
17156
17157    szLabelClasses += " text-" + oConfig["label-align"];
17158
17159    html+= '<div class="' + szFormGroupClasses + '">';
17160
17161    if ( oConfig["label-title"] !== "" || iDisplay !== 12 ){
17162        html+= '<label class="' + szLabelClasses + '" for="' + guid + '">' + 
17163                oConfig["label-title"] + '</label>';
17164    }
17165
17166    html+= '<div class="' + szFormControlClasses + '">';
17167
17168    let szInputGroupClasses = "input-group colorpicker-element";
17169    if ( oConfig["input-group-classes"] ){
17170        szInputGroupClasses += " " + oConfig["input-group-classes"];
17171        szInputGroupClasses = szInputGroupClasses.trim();
17172    }
17173
17174    html+= '<div class="' + szInputGroupClasses + '">';
17175
17176    html+= '<input id="' + guid + '"';
17177
17178    html+= ' type="' + oConfig["type-field"] + '"';
17179    html+= ' name="' + oConfig["field-name"] + '"';
17180    html+= ' class="' + szFormInputControl + '"';
17181
17182    if ( szDefaultValue ){
17183        html += ' value="' + szDefaultValue + '"';    
17184        html += ' data-color="' + szDefaultValue + '"';    
17185    }
17186
17187    if ( oConfig["readonly"] ){
17188        html += ' readonly';
17189    }
17190
17191    if ( oConfig["disabled"] ){                
17192        html+= ' disabled';
17193    }               
17194
17195    if ( (oConfig["label-suggestion"]) ){
17196        html += ' placeholder="' + oConfig["label-suggestion"] + '"';                    
17197    }
17198
17199    if ( (oConfig["data-attr"]) ){
17200        html += ' ' + oConfig["data-attr"];
17201    }
17202
17203    html += ' />'; 
17204
17205
17206        html += '<span class="input-group-append">'; 
17207            html += '<span class="input-group-text colorpicker-input-addon"><i></i></span>';
17208        html += '</span>';
17209
17210
17211    html += '</div>';   
17212
17213    if ( oConfig["label-description"] !== "" ){
17214        html+= '<small class="ctl-form-field-description">' + oConfig["label-description"] + '</small>';
17215    }
17216
17217    html+= '<div class="invalid-feedback"></div>';
17218
17219    html+= '</div>';
17220
17221    html+= '</div>';
17222
17223
17224    return html;
17225}  
17226
17227function formFieldsBuildNumberField( oConfig, fDefaultValue = "" ){            
17228    var html = "";
17229
17230    var oDefault = {
17231    "label-title" : "",
17232    "label-suggestion" : "",
17233    "label-description" : "",                
17234    "field-name" : "",
17235    "mandatory" : false,
17236    "display" : 12,
17237    "label-align" : "left",
17238    "label-v-align" : "",
17239    "readonly" : false,
17240    "data-attr" : "",
17241    "wrapper-classes" : "",
17242    "input-group-classes" : "",
17243    "classes" : "",
17244    "autocomplete" : false,
17245    "min-value" : null,
17246    "max-value" : null,
17247    "step-value" : null,
17248    "align-value" : "left",
17249    "disabled" : false,
17250    "append-icon-class" : "",
17251    "append-text" : "",
17252    "append-icon-pos" : "prepend",
17253
17254    "validate-not-zero" : false,   
17255    "validate-unsigned" : false,
17256    "validate-integer" : false,
17257
17258    "validate-min-value" : false,
17259    "validate-max-value" : false,
17260
17261    "mandatory-on-label" : true,
17262    "floating-label" : false,                
17263    };            
17264
17265    oConfig = jQuery.extend(oDefault, oConfig);    
17266
17267    var guid = "";
17268    if (oConfig["field-name"]){
17269        guid = oConfig["field-name"] + "-";    
17270    }
17271    guid += g_oCTLWPStudio.makeCode(4);  
17272
17273
17274    var szFormInputControl = "form-control";
17275
17276    var szFormGroupClasses = "form-group";
17277    var szLabelClasses = "ctl-form-field-label";
17278
17279    var szFormControlClasses = 'ctl-wp-studio-form-control-wrapper';
17280
17281    szFormControlClasses += " ctlnumfield";
17282
17283    var iDisplay = Number(oConfig["display"]);            
17284
17285    if( !oConfig["readonly"] && !oConfig["disabled"] && oConfig["mandatory"] ){
17286        szFormControlClasses += " mandatory";
17287        
17288        if ( oConfig["mandatory-on-label"] ){
17289            szFormGroupClasses += " mandatory-on-label";
17290        }        
17291    }
17292
17293    if ( !oConfig["autocomplete"] ){
17294        oConfig["data-attr"] += ' autocomplete="off"';
17295    }              
17296
17297    if( !oConfig["wrapper-classes"] ){
17298        szFormGroupClasses += " " + oConfig["wrapper-classes"];
17299    }       
17300
17301    var iDisplay = oConfig["display"];
17302
17303    switch(iDisplay){
17304        case 12:{
17305            szLabelClasses += " d-block";
17306        }break;
17307        case 10:{
17308            szFormGroupClasses+= " row";
17309            szLabelClasses += " col col-12 col-sm-10";
17310            szFormControlClasses += " col col-12 col-sm-2";
17311
17312            if ( oConfig["label-v-align"] !== ""){
17313                szFormGroupClasses += " " + oConfig["label-v-align"];
17314            }            
17315        }break;
17316        case 9:{
17317            szFormGroupClasses+= " row";
17318            szLabelClasses += " col col-12 col-sm-9";
17319            szFormControlClasses += " col col-12 col-sm-3";
17320
17321            if ( oConfig["label-v-align"] !== ""){
17322                szFormGroupClasses += " " + oConfig["label-v-align"];
17323            }            
17324        }break;
17325        case 6:{
17326            szFormGroupClasses+= " row";
17327            szLabelClasses += " col col-12 col-sm-6";
17328            szFormControlClasses += " col col-12 col-sm-6";
17329            
17330            if ( oConfig["label-v-align"] !== ""){
17331                szFormGroupClasses += " " + oConfig["label-v-align"];
17332            }               
17333        }break;
17334        case 3:{
17335            szFormGroupClasses+= " row";
17336            szLabelClasses += " col col-12 col-sm-3";
17337            szFormControlClasses += " col col-12 col-sm-9";
17338            
17339            if ( oConfig["label-v-align"] !== ""){
17340                szFormGroupClasses += " " + oConfig["label-v-align"];
17341            }               
17342        }break;  
17343        case 2:{
17344            szFormGroupClasses+= " row";
17345            szLabelClasses += " col col-12 col-sm-2";
17346            szFormControlClasses += " col col-12 col-sm-10";
17347            
17348            if ( oConfig["label-v-align"] !== ""){
17349                szFormGroupClasses += " " + oConfig["label-v-align"];
17350            }               
17351        }break;  
17352        case -1:{
17353            szFormGroupClasses+= " d-inline-block";
17354            szLabelClasses += " col col-auto d-inline-block pr-0";
17355            szFormControlClasses += " col col-auto d-inline-block";
17356            
17357            if ( oConfig["label-v-align"] !== ""){
17358                szFormGroupClasses += " " + oConfig["label-v-align"];
17359            }               
17360        }break;          
17361        case "inline-block":{
17362            szLabelClasses += " col col-auto d-inline-block";
17363            szFormControlClasses += " col col-auto  d-inline-block";
17364        }break;              
17365    }
17366
17367    szFormInputControl += " text-" + oConfig["align-value"];
17368
17369    if ( oConfig["validate-not-zero"]){
17370        szFormInputControl += ' validate-not-zero';
17371    }           
17372
17373    if ( oConfig["validate-unsigned"]){
17374        szFormInputControl += ' validate-unsigned';
17375    }  
17376
17377    if ( oConfig["validate-integer"]){
17378        szFormInputControl += ' validate-integer';
17379    }  
17380
17381    if ( oConfig["validate-min-value"]){
17382        szFormInputControl += ' validate-min-value';
17383    }               
17384
17385    if ( oConfig["validate-max-value"]){
17386        szFormInputControl += ' validate-max-value';
17387    }   
17388
17389    if ( oConfig["floating-label"] && iDisplay === 12 ){                
17390        szFormGroupClasses += " floating-label";
17391
17392        oConfig["label-suggestion"] = "";    
17393        oConfig["label-align"]      = "left";
17394
17395        if ( !isNaN(fDefaultValue) ){
17396            szFormGroupClasses += " floating-label-normal";
17397        }
17398    }   
17399
17400    szLabelClasses += " text-" + oConfig["label-align"];
17401
17402    if (oConfig["classes"]){
17403        szFormInputControl += ' ' + oConfig["classes"];
17404    }
17405
17406    html += '<div class="' + szFormGroupClasses + '">';
17407
17408    if ( oConfig["label-title"] !== "" || iDisplay !== 12 ){
17409        html += '<label class="' + szLabelClasses + '" for="' + guid + '">' + 
17410            oConfig["label-title"] + '</label>';
17411    }
17412
17413    html += '<div class="' + szFormControlClasses + '">';
17414
17415    if ( oConfig["append-icon-class"] !== "" || oConfig["append-text"] !== "" ){ 
17416        
17417        let szInputGroupClasses = "input-group";
17418        if ( oConfig["input-group-classes"] ){
17419            szInputGroupClasses += " " + oConfig["input-group-classes"];
17420            szInputGroupClasses = szInputGroupClasses.trim();
17421        }
17422
17423        html += '<div class="' + szInputGroupClasses + '">';
17424        if ( oConfig["append-icon-pos"] === "prepend" ){
17425            html += '<div class="input-group-prepend">';
17426            html += '<span class="input-group-text">';
17427            if(oConfig["append-icon-class"] !== ""){
17428                html += '<i class="' + oConfig["append-icon-class"] + '"></i>';
17429            }else{
17430                html += oConfig["append-text"];
17431            }
17432            html += '</span>';                
17433            html += '</div>';                
17434        }
17435    }
17436
17437    html += '<input id="' + guid +'" type="number" name="' + 
17438                oConfig["field-name"] + '" class="' + szFormInputControl + '"';
17439
17440    html += ' value="' + fDefaultValue +'"';  
17441
17442    if ( oConfig["data-attr"] ){
17443        html += ' ' + oConfig["data-attr"];
17444    }
17445
17446    if ( oConfig["readonly"] ){
17447        html += ' readonly';
17448    }
17449
17450    if ( oConfig["min-value"] !== null ){
17451        html += ' min="' + oConfig["min-value"]  + '"';
17452    }            
17453
17454    if ( oConfig["max-value"] !== null ){
17455        html += ' max="' + oConfig["max-value"] + '"';
17456    }  
17457
17458    if ( oConfig["step-value"] !== null && !isNaN(oConfig["step-value"]) ){
17459        html += ' step="' + oConfig["step-value"]  +'"';
17460    }else{
17461        html += ' step="any"';
17462    }               
17463
17464    if ( oConfig["disabled"] ){                
17465        html += ' disabled';
17466    }             
17467
17468    if ( oConfig["label-suggestion"] ){
17469        html += ' placeholder="' + oConfig["label-suggestion"] + '"';                    
17470    }            
17471
17472    html += '/>'; 
17473
17474    if ( oConfig["append-icon-class"] !== "" || oConfig["append-text"] !== "" ){                
17475        if ( oConfig["append-icon-pos"] == "append" ){
17476            html += '<div class="input-group-append">';
17477            html += '<span class="input-group-text">';
17478            if(oConfig["append-icon-class"] !== ""){
17479                html += '<i class="' + oConfig["append-icon-class"] + '"></i>';
17480            }else{
17481                html += oConfig["append-text"];
17482            }
17483            html += '</span>';                
17484            html += '</div>';                
17485        }
17486        html += '</div>';   
17487    }            
17488
17489    if ( oConfig["label-description"] !== "" ){
17490        html += '<small class="ctl-form-field-description">' + oConfig["label-description"] + '</small>';
17491    }
17492
17493    html += '<div class="invalid-feedback"></div>';
17494
17495    html += '</div>';
17496
17497    html += '</div>';
17498
17499    return html;
17500}
17501
17502function formFieldsBuildTextField( oConfig, szDefaultValue ){
17503
17504    var oDefault = {
17505        "label-title" : "",
17506        "label-suggestion" : "",
17507        "label-description" : "",                
17508        "field-name" : "",
17509        "mandatory" : false,
17510        "display" : 12,
17511        "label-align" : "left",
17512        "label-v-align" : "",
17513        "readonly" : false,
17514        "data-attr" : "",
17515        "classes" : "",
17516        "label-classes" : "", 
17517        "control-classes" : "", 
17518        "wrapper-classes" : "",         
17519        "autocomplete" : false,
17520        "align-value" : "left",
17521        "disabled" : false,
17522        "type-field" : "text",
17523
17524        "append-icon-class" : "",
17525        "append-icon-pos" : "prepend",                
17526
17527        "trim-value" : false,
17528        "validate-not-zero" : false,
17529        "validate-email" : false,
17530        "validate-only-digits" : false,
17531        "validate-exclude-digits" : false,
17532        "validate-integer" : false,
17533        "validate-number" : false,
17534        "validate-unsigned" : false,                                
17535        "validate-min-length" : false,
17536        
17537        "validate-one-uppercase" : false,
17538        "validate-one-lowercase" : false,
17539        "validate-one-digit" : false,
17540        "validate-one-special" : false,
17541        
17542        "force-uppercase" : false,
17543        "force-lowercase" : false,
17544        
17545        "validate-exact-length" : false,
17546        "exact-chars" : 0,           
17547        
17548        "min-chars" : 0,
17549        "validate-max-length" : false,
17550        "max-chars" : 0,      
17551
17552        "validate-regex" : "",
17553        "label-fail-regex" : "",
17554
17555        "select-on-focus" : 0,
17556        "auto-focus" : 0,
17557        "inputmode-none" : 0,
17558        "clear-field" : 0,
17559        "clear-value" : "",
17560        
17561        "mandatory-on-label" : true,
17562        "floating-label" : false,     
17563        
17564        'append-buttons' : [] 
17565    };
17566
17567    oConfig = jQuery.extend(oDefault, oConfig);    
17568
17569    if (!szDefaultValue){
17570        szDefaultValue = "";
17571    }
17572
17573    if ( !(oConfig["type-field"]) ){
17574        oConfig["type-field"] = "text";
17575    }
17576
17577    var guid = "";
17578    if (oConfig["field-name"]){
17579        guid = oConfig["field-name"] + "-";    
17580    }
17581    guid += g_oCTLWPStudio.makeCode(4);             
17582
17583    var html = "";
17584
17585    var szFormInputControl = "form-control";
17586
17587    var szFormGroupClasses = "form-group";
17588    var szLabelClasses     = "ctl-form-field-label";
17589    var szFormControlClasses = 'ctl-wp-studio-form-control-wrapper';
17590
17591    szFormControlClasses += " ctltextfield";
17592
17593    if( !oConfig["readonly"] && !oConfig["disabled"] && oConfig["mandatory"] ){
17594        szFormControlClasses += " mandatory";
17595        
17596        if ( oConfig["mandatory-on-label"] ){
17597            szFormGroupClasses += " mandatory-on-label";
17598        }        
17599    }
17600
17601    if( oConfig["classes"] ){
17602        szFormInputControl += " " + oConfig["classes"];
17603    }
17604    
17605    if( oConfig["label-classes"] ){
17606        szLabelClasses += " " + oConfig["label-classes"];
17607    }  
17608
17609    if( oConfig["wrapper-classes"] ){
17610        szFormGroupClasses += " " + oConfig["wrapper-classes"];
17611    }  
17612    
17613    if( oConfig["control-classes"] ){
17614        szFormControlClasses += " " + oConfig["control-classes"];
17615    }         
17616
17617    if ( oConfig["floating-label"] && iDisplay === 12 ){                
17618        szFormGroupClasses += " floating-label";
17619
17620        oConfig["label-suggestion"] = "";    
17621        oConfig["label-align"]      = "left";
17622
17623        if ( szDefaultValue ){
17624            szFormGroupClasses += " floating-label-normal";
17625        }
17626    }      
17627
17628    szFormInputControl += " text-" + oConfig["align-value"];
17629
17630    if ( (oConfig["validate-regex"])){
17631        szFormInputControl += ' validate-regex';
17632    }
17633
17634    if ( (oConfig["select-on-focus"])){
17635        szFormInputControl += ' select-on-focus';
17636    }
17637    if ( (oConfig["auto-focus"])){
17638        szFormInputControl += ' auto-focus';
17639    }    
17640
17641    if ( oConfig["validate-not-zero"]){
17642        szFormInputControl += ' validate-not-zero';
17643    }
17644    if ( oConfig["validate-email"]){
17645        szFormInputControl += ' validate-email';
17646    }
17647    if ( oConfig["validate-only-digits"]){
17648        szFormInputControl += ' validate-only-digits';
17649    } 
17650    if ( oConfig["validate-exclude-digits"]){
17651        szFormInputControl += ' validate-exclude-digits';
17652    }             
17653    if ( oConfig["validate-integer"]){
17654        szFormInputControl += ' validate-integer';
17655    }              
17656    if ( oConfig["validate-number"]){
17657        szFormInputControl += ' validate-number';
17658    }      
17659    if ( oConfig["validate-unsigned"]){
17660        szFormInputControl += ' validate-unsigned';
17661    }  
17662    if ( oConfig["force-uppercase"]){
17663        szFormInputControl += ' force-uppercase';
17664    }  
17665    if ( oConfig["force-lowercase"]){
17666        szFormInputControl += ' force-lowercase';
17667    }      
17668    
17669    if ( oConfig["validate-one-uppercase"]){
17670        szFormInputControl += ' validate-one-uppercase';
17671    }    
17672    if ( oConfig["validate-one-lowercase"]){
17673        szFormInputControl += ' validate-one-lowercase';
17674    }    
17675    if ( oConfig["validate-one-digit"]){
17676        szFormInputControl += ' validate-one-digit';
17677    }    
17678    if ( oConfig["validate-one-special"]){
17679        szFormInputControl += ' validate-one-special';
17680    }        
17681
17682
17683    if ( (oConfig["validate-regex"])){
17684        oConfig["data-attr"] += ' data-validate-regex="' +
17685                Base64.encode(oConfig["validate-regex"]) + '"';             
17686        oConfig["data-attr"] += ' data-label-fail-regex="' +
17687                Base64.encode(oConfig["label-fail-regex"]) + '"';
17688    }            
17689
17690    if ( (oConfig["clear-value"]) ){
17691        oConfig["data-attr"] += ' data-clear-value="'+ 
17692                oConfig["clear-value"] + '"';                
17693    }
17694
17695    if ( oConfig["inputmode-none"]){
17696        oConfig["data-attr"] += ' inputmode="none"';
17697    }  
17698
17699    if ( oConfig["validate-min-length"]){
17700        oConfig["data-attr"] += ' data-min-length="' + oConfig["min-chars"]  +'"';
17701    }    
17702    if ( oConfig["validate-max-length"]){
17703        oConfig["data-attr"] += ' data-max-length="' + oConfig["max-chars"]  +'"';
17704    }        
17705    if ( oConfig["validate-exact-length"]){
17706        oConfig["data-attr"] += ' data-exact-length="' + oConfig["exact-chars"]  +'"';
17707    }            
17708
17709    if ( !oConfig["autocomplete"] ){
17710        oConfig["data-attr"] += ' autocomplete="off"';
17711    }              
17712
17713    var iDisplay = oConfig["display"];
17714
17715
17716    switch(iDisplay){
17717        case 12:{
17718            szLabelClasses += " d-block";
17719        }break;
17720        case 10:{
17721            szFormGroupClasses+= " row";
17722            szLabelClasses += " col col-12 col-sm-10";
17723            szFormControlClasses += " col col-12 col-sm-2";
17724            if ( oConfig["label-v-align"] !== ""){
17725                szFormGroupClasses += " " + oConfig["label-v-align"];
17726            }            
17727        }break;
17728        case 9:{
17729            szFormGroupClasses+= " row";
17730            szLabelClasses += " col col-12 col-sm-9";
17731            szFormControlClasses += " col col-12 col-sm-3";
17732
17733            if ( oConfig["label-v-align"] !== ""){
17734                szFormGroupClasses += " " + oConfig["label-v-align"];
17735            }            
17736        }break;
17737        case 6:{
17738            szFormGroupClasses+= " row";
17739            szLabelClasses += " col col-12 col-sm-6";
17740            szFormControlClasses += " col col-12 col-sm-6";
17741            
17742            if ( oConfig["label-v-align"] !== ""){
17743                szFormGroupClasses += " " + oConfig["label-v-align"];
17744            }               
17745        }break;
17746        case 3:{
17747            szFormGroupClasses+= " row";
17748            szLabelClasses += " col col-12 col-sm-3";
17749            szFormControlClasses += " col col-12 col-sm-9";
17750            
17751            if ( oConfig["label-v-align"] !== ""){
17752                szFormGroupClasses += " " + oConfig["label-v-align"];
17753            }               
17754        }break;  
17755        case 2:{
17756            szFormGroupClasses+= " row";
17757            szLabelClasses += " col col-12 col-sm-2";
17758            szFormControlClasses += " col col-12 col-sm-10";
17759            
17760            if ( oConfig["label-v-align"] !== ""){
17761                szFormGroupClasses += " " + oConfig["label-v-align"];
17762            }               
17763        }break;  
17764        case -1:{
17765            szFormGroupClasses+= " d-inline-block";
17766            szLabelClasses += " col col-auto d-inline-block pr-0";
17767            szFormControlClasses += " col col-auto d-inline-block";
17768            
17769            if ( oConfig["label-v-align"] !== ""){
17770                szFormGroupClasses += " " + oConfig["label-v-align"];
17771            }               
17772        }break;          
17773        case "inline-block":{
17774            szLabelClasses += " col col-auto d-inline-block";
17775            szFormControlClasses += " col col-auto  d-inline-block";
17776        }break;              
17777    }
17778
17779    szLabelClasses += " text-" + oConfig["label-align"];
17780
17781    html+= '<div class="' + szFormGroupClasses + '">';
17782
17783    if ( oConfig["label-title"] !== "" || iDisplay !== 12 ){
17784        html+= '<label class="' + szLabelClasses + '" for="' + guid + '">' + 
17785                oConfig["label-title"] + '</label>';
17786    }
17787
17788    html+= '<div class="' + szFormControlClasses + '">';
17789
17790    var bInputGroup = false;
17791    if ( oConfig["append-icon-class"] !== "" || 
17792         (oConfig["clear-field"]) ||
17793         (oConfig["append-buttons"].length > 0) ||
17794         oConfig["type-field"] === "password"
17795        ){    
17796    
17797        bInputGroup = true;
17798
17799        html+= '<div class="input-group">';
17800
17801        if ( oConfig["append-icon-class"] !== "" &&
17802             oConfig["append-icon-pos"] === "prepend"  ){
17803            html+= '<div class="input-group-prepend">';
17804                html+= '<span class="input-group-text">';
17805                    html+= '<i class="' + oConfig["append-icon-class"]  + '"></i>';
17806                html+= '</span>';                
17807            html+= '</div>';                
17808        }
17809    }            
17810
17811    html+= '<input id="' + guid + '"';
17812
17813    html+= ' type="' + oConfig["type-field"] + '"';
17814    html+= ' name="' + oConfig["field-name"] + '"';
17815    html+= ' class="' + szFormInputControl + '"';
17816
17817       if ( szDefaultValue ){
17818        html += ' value="' + szDefaultValue + '"';    
17819       }
17820
17821    if ( oConfig["readonly"] ){
17822        html += ' readonly';
17823    }
17824
17825    if ( oConfig["disabled"] ){                
17826        html+= ' disabled';
17827    }               
17828
17829    if ( (oConfig["label-suggestion"]) ){
17830        html += ' placeholder="' + oConfig["label-suggestion"] + '"';                    
17831    }
17832
17833    if ( (oConfig["data-attr"]) ){
17834        html += ' ' + oConfig["data-attr"];
17835    }
17836
17837    html += ' />'; 
17838
17839    if ( bInputGroup ){        
17840
17841        var htmlAppend = "";
17842        if ( oConfig["append-icon-pos"] === "append" ){                    
17843                htmlAppend += '<span class="input-group-text">';
17844                    htmlAppend += '<i class="'+ oConfig["append-icon-class"] +'"></i>';
17845                htmlAppend += '</span>';                                    
17846        }
17847
17848        if ( oConfig["clear-field"] ){
17849            htmlAppend += '<button class="btn btn-secondary btn-clear-field-in-group" type="button">';
17850                htmlAppend += '<i class="ctl-wp-studio-icons-trash"></i>';
17851            htmlAppend += '</button>';                       
17852        }
17853
17854
17855        if ( oConfig["type-field"] === "password" ){
17856            htmlAppend += '<button class="btn btn-outline-secondary btn-action-toggle-password-type" type="button">';
17857                htmlAppend += '<i class="ctl-wp-studio-icons-eye"></i>';
17858            htmlAppend += '</button>';                       
17859        }   
17860        
17861        for( var i = 0; i < oConfig["append-buttons"].length; i++ ){
17862            htmlAppend += oConfig["append-buttons"][i];
17863        }
17864
17865        if ( htmlAppend !== "" ){
17866            html += '<div class="input-group-append">'; 
17867            html += htmlAppend;
17868            html += '</div>';
17869        }
17870
17871        html += '</div>';   
17872    }                 
17873
17874    if ( oConfig["label-description"] !== "" ){
17875        html+= '<small class="ctl-form-field-description">' + oConfig["label-description"] + '</small>';
17876    }
17877
17878    html+= '<div class="invalid-feedback"></div>';
17879
17880    html+= '</div>';
17881
17882    html+= '</div>';
17883
17884
17885    return html;
17886}  
17887
17888
17889function formFieldsBuildHiddenField( oConfig, szValue ){  
17890    
17891    var oDefault = {               
17892        "field-name" : "",
17893        "classes" : ""        
17894    };
17895
17896    oConfig = jQuery.extend(oDefault, oConfig); 
17897
17898    var szFieldName = oConfig["field-name"];
17899    if ( oConfig["field-name"].indexOf("[]") === -1 ){
17900        szFieldName += "[]";
17901    }    
17902
17903    if ( Array.isArray(szValue) ){
17904        for( var i = 0; i < szValue.length; i++ ){
17905            var guid = "";
17906            if (oConfig["field-name"]){
17907                guid = oConfig["field-name"] + "-";    
17908            }
17909            guid += g_oCTLWPStudio.makeCode(4);  
17910        
17911            var html = "";
17912            html += '<input id="' + guid + '"';            
17913            html += ' type="hidden"';
17914            html += ' name="' + szFieldName + '"';    
17915            
17916            if (oConfig["classes"] !== ""){
17917                html += ' class="' + oConfig["classes"] + '"';    
17918            }
17919            
17920            html += ' value="' + szValue[i] + '"';    
17921            html += ' />'; 
17922        }
17923    }else{
17924        var guid = "";
17925        if (oConfig["field-name"]){
17926            guid = oConfig["field-name"] + "-";    
17927        }
17928        guid += g_oCTLWPStudio.makeCode(4);  
17929    
17930        var html = "";
17931        html += '<input id="' + guid + '"';            
17932        html += ' type="hidden"';
17933        html += ' name="' + oConfig["field-name"] + '"';    
17934        
17935        if (oConfig["classes"] !== ""){
17936            html += ' class="' + oConfig["classes"] + '"';    
17937        }
17938        
17939        html += ' value="' + szValue + '"';    
17940        html += ' />'; 
17941    }
17942
17943    return html;
17944}
17945
17946function formFieldRefreshCommercialUserFields( idGuid, bEmptyFields ){
17947    var oNodeRadio = jQuery(".ctl-commercial-user-type."+idGuid).find("input[name='commercial-user-type']:checked");
17948
17949    var szNodeParentToShowOrHide = ".form-group";
17950    var iNumCols = 0;
17951    if ( oNodeRadio.closest(".ctl-edit-post-form").length > 0 ){
17952        var oNodeForm = oNodeRadio.closest(".ctl-edit-post-form");
17953        iNumCols  = Number(oNodeForm.attr("data-num-cols"));
17954    }
17955
17956    if ( iNumCols > 1 ){
17957        switch(oNodeRadio.val()){
17958            case "company":{
17959                jQuery(".ctl-commercial-name."+idGuid)
17960                    .closest(szNodeParentToShowOrHide)
17961                    .closest(".col")
17962                    .removeClass("d-none");
17963                jQuery(".ctl-commercial-alias."+idGuid)
17964                    .closest(szNodeParentToShowOrHide)
17965                    .closest(".col")
17966                    .removeClass("d-none");
17967                jQuery(".ctl-commercial-vat."+idGuid)
17968                    .closest(szNodeParentToShowOrHide)
17969                    .closest(".col")
17970                    .removeClass("d-none");    
17971                jQuery(".ctl-commercial-attachments."+idGuid)
17972                    .closest(szNodeParentToShowOrHide)
17973                    .closest(".col")
17974                    .removeClass("d-none");       
17975
17976                jQuery(".ctl-commercial-cf."+idGuid)
17977                    .closest(szNodeParentToShowOrHide)
17978                    .closest(".col")
17979                    .addClass("d-none");
17980                jQuery(".ctl-commercial-first-name."+idGuid)
17981                    .closest(szNodeParentToShowOrHide)
17982                    .closest(".col")
17983                    .addClass("d-none");
17984                jQuery(".ctl-commercial-last-name."+idGuid)
17985                    .closest(szNodeParentToShowOrHide)
17986                    .closest(".col")
17987                    .addClass("d-none");   
17988                    
17989                if (bEmptyFields){
17990                    jQuery(".ctl-commercial-first-name."+idGuid).val(""); 
17991                    jQuery(".ctl-commercial-last-name."+idGuid).val(""); 
17992                    jQuery(".ctl-commercial-cf."+idGuid).val("");
17993                }
17994                
17995                jQuery(".ctl-commercial-first-name."+idGuid).removeClass("is-invalid");
17996                jQuery(".ctl-commercial-last-name."+idGuid).removeClass("is-invalid");
17997                jQuery(".ctl-commercial-cf."+idGuid).removeClass("is-invalid");
17998
17999                jQuery(".ctl-commercial-first-name."+idGuid).closest(".ctl-wp-studio-form-control-wrapper").removeClass("is-invalid")
18000                jQuery(".ctl-commercial-last-name."+idGuid).closest(".ctl-wp-studio-form-control-wrapper").removeClass("is-invalid");
18001                jQuery(".ctl-commercial-cf."+idGuid).closest(".ctl-wp-studio-form-control-wrapper").removeClass("is-invalid");
18002
18003            }break;
18004            case "individual":{
18005                jQuery(".ctl-commercial-alias."+idGuid)
18006                    .closest(szNodeParentToShowOrHide)
18007                    .closest(".col")
18008                    .removeClass("d-none"); 
18009                jQuery(".ctl-commercial-first-name."+idGuid)
18010                    .closest(szNodeParentToShowOrHide)
18011                    .closest(".col")
18012                    .removeClass("d-none"); 
18013                jQuery(".ctl-commercial-last-name."+idGuid)
18014                    .closest(szNodeParentToShowOrHide)
18015                    .closest(".col")
18016                    .removeClass("d-none"); 
18017                jQuery(".ctl-commercial-vat."+idGuid)
18018                    .closest(szNodeParentToShowOrHide)
18019                    .closest(".col")
18020                    .removeClass("d-none");   
18021                jQuery(".ctl-commercial-cf."+idGuid)
18022                    .closest(szNodeParentToShowOrHide)
18023                    .closest(".col")
18024                    .removeClass("d-none");   
18025    
18026                jQuery(".ctl-commercial-name."+idGuid)
18027                    .closest(szNodeParentToShowOrHide)
18028                    .closest(".col")
18029                    .addClass("d-none");    
18030                jQuery(".ctl-commercial-attachments."+idGuid)
18031                    .closest(szNodeParentToShowOrHide)
18032                    .closest(".col")
18033                    .addClass("d-none");  
18034                
18035                if (bEmptyFields){
18036                    jQuery(".ctl-commercial-name."+idGuid).val(""); 
18037                }
18038
18039                jQuery(".ctl-commercial-name."+idGuid).removeClass("is-invalid");
18040                jQuery(".ctl-commercial-name."+idGuid).closest(".ctl-wp-studio-form-control-wrapper").removeClass("is-invalid");
18041            }break;
18042            case "private":{
18043                jQuery(".ctl-commercial-first-name."+idGuid)
18044                    .closest(szNodeParentToShowOrHide)
18045                    .closest(".col")
18046                    .removeClass("d-none"); 
18047                jQuery(".ctl-commercial-last-name."+idGuid)
18048                    .closest(szNodeParentToShowOrHide)
18049                    .closest(".col")
18050                    .removeClass("d-none");             
18051                jQuery(".ctl-commercial-cf."+idGuid)
18052                    .closest(szNodeParentToShowOrHide)
18053                    .closest(".col")
18054                    .removeClass("d-none");
18055    
18056                jQuery(".ctl-commercial-name."+idGuid)
18057                    .closest(szNodeParentToShowOrHide)
18058                    .closest(".col")
18059                    .addClass("d-none");
18060                jQuery(".ctl-commercial-alias."+idGuid)
18061                    .closest(szNodeParentToShowOrHide)
18062                    .closest(".col")
18063                    .addClass("d-none");
18064                jQuery(".ctl-commercial-vat."+idGuid)
18065                    .closest(szNodeParentToShowOrHide)
18066                    .closest(".col")
18067                    .addClass("d-none");
18068                jQuery(".ctl-commercial-attachments."+idGuid)
18069                    .closest(szNodeParentToShowOrHide)
18070                    .closest(".col")
18071                    .addClass("d-none"); 
18072                    
18073                    if (bEmptyFields){
18074                        jQuery(".ctl-commercial-name."+idGuid).val("");
18075                        jQuery(".ctl-commercial-alias."+idGuid).val("");
18076                        jQuery(".ctl-commercial-vat."+idGuid).val("");
18077                    }
18078
18079                    jQuery(".ctl-commercial-name."+idGuid).removeClass("is-invalid");
18080                    jQuery(".ctl-commercial-alias."+idGuid).removeClass("is-invalid");
18081                    jQuery(".ctl-commercial-vat."+idGuid).removeClass("is-invalid");
18082
18083                    jQuery(".ctl-commercial-name."+idGuid).closest(".ctl-wp-studio-form-control-wrapper").removeClass("is-invalid");
18084                    jQuery(".ctl-commercial-alias."+idGuid).closest(".ctl-wp-studio-form-control-wrapper").removeClass("is-invalid");
18085                    jQuery(".ctl-commercial-vat."+idGuid).closest(".ctl-wp-studio-form-control-wrapper").removeClass("is-invalid");
18086            }break;                        
18087        }    
18088    }else{
18089        switch(oNodeRadio.val()){
18090            case "company":{
18091                jQuery(".ctl-commercial-name."+idGuid).closest(szNodeParentToShowOrHide).removeClass("d-none");
18092                jQuery(".ctl-commercial-alias."+idGuid).closest(szNodeParentToShowOrHide).removeClass("d-none");
18093                jQuery(".ctl-commercial-vat."+idGuid).closest(szNodeParentToShowOrHide).removeClass("d-none");    
18094                jQuery(".ctl-commercial-attachments."+idGuid).closest(szNodeParentToShowOrHide).removeClass("d-none");                                
18095    
18096                jQuery(".ctl-commercial-cf."+idGuid).closest(szNodeParentToShowOrHide).addClass("d-none");
18097                jQuery(".ctl-commercial-first-name."+idGuid).closest(szNodeParentToShowOrHide).addClass("d-none");
18098                jQuery(".ctl-commercial-last-name."+idGuid).closest(szNodeParentToShowOrHide).addClass("d-none");
18099    
18100                if (bEmptyFields){
18101                    jQuery(".ctl-commercial-first-name."+idGuid).val(""); 
18102                    jQuery(".ctl-commercial-last-name."+idGuid).val(""); 
18103                    jQuery(".ctl-commercial-cf."+idGuid).val("");   
18104                }
18105
18106                jQuery(".ctl-commercial-first-name."+idGuid).removeClass("is-invalid");
18107                jQuery(".ctl-commercial-last-name."+idGuid).removeClass("is-invalid");
18108                jQuery(".ctl-commercial-cf."+idGuid).removeClass("is-invalid");
18109
18110                jQuery(".ctl-commercial-first-name."+idGuid).closest(".ctl-wp-studio-form-control-wrapper").removeClass("is-invalid");
18111                jQuery(".ctl-commercial-last-name."+idGuid).closest(".ctl-wp-studio-form-control-wrapper").removeClass("is-invalid");
18112                jQuery(".ctl-commercial-cf."+idGuid).closest(".ctl-wp-studio-form-control-wrapper").removeClass("is-invalid");
18113
18114            }break;
18115            case "individual":{
18116                jQuery(".ctl-commercial-name."+idGuid).closest(szNodeParentToSho
18116wOrHide).removeClass("d-none");
18117                jQuery(".ctl-commercial-alias."+idGuid).closest(szNodeParentToShowOrHide).removeClass("d-none"); 
18118                jQuery(".ctl-commercial-first-name."+idGuid).closest(szNodeParentToShowOrHide).removeClass("d-none"); 
18119                jQuery(".ctl-commercial-last-name."+idGuid).closest(szNodeParentToShowOrHide).removeClass("d-none"); 
18120                jQuery(".ctl-commercial-vat."+idGuid).closest(szNodeParentToShowOrHide).removeClass("d-none");   
18121                jQuery(".ctl-commercial-cf."+idGuid).closest(szNodeParentToShowOrHide).removeClass("d-none");   
18122    
18123                // jQuery(".ctl-commercial-name."+idGuid).closest(szNodeParentToShowOrHide).addClass("d-none");    
18124                jQuery(".ctl-commercial-attachments."+idGuid).closest(szNodeParentToShowOrHide).addClass("d-none");                
18125                
18126                // if (bEmptyFields){
18127                //     jQuery(".ctl-commercial-name."+idGuid).val(""); 
18128                // }
18129
18130                // jQuery(".ctl-commercial-name."+idGuid).removeClass("is-invalid");
18131                // jQuery(".ctl-commercial-name."+idGuid).closest(".ctl-wp-studio-form-control-wrapper").removeClass("is-invalid");
18132
18133            }break;
18134            case "private":{
18135                jQuery(".ctl-commercial-first-name."+idGuid).closest(szNodeParentToShowOrHide).removeClass("d-none"); 
18136                jQuery(".ctl-commercial-last-name."+idGuid).closest(szNodeParentToShowOrHide).removeClass("d-none");             
18137                jQuery(".ctl-commercial-cf."+idGuid).closest(szNodeParentToShowOrHide).removeClass("d-none");
18138    
18139                jQuery(".ctl-commercial-name."+idGuid).closest(szNodeParentToShowOrHide).addClass("d-none");
18140                jQuery(".ctl-commercial-alias."+idGuid).closest(szNodeParentToShowOrHide).addClass("d-none");
18141                jQuery(".ctl-commercial-vat."+idGuid).closest(szNodeParentToShowOrHide).addClass("d-none");
18142                jQuery(".ctl-commercial-attachments."+idGuid).closest(szNodeParentToShowOrHide).addClass("d-none");  
18143                            
18144                if (bEmptyFields){
18145                    jQuery(".ctl-commercial-name."+idGuid).val(""); 
18146                    jQuery(".ctl-commercial-alias."+idGuid).val(""); 
18147                    jQuery(".ctl-commercial-vat."+idGuid).val(""); 
18148                }
18149
18150                jQuery(".ctl-commercial-name."+idGuid).removeClass("is-invalid");
18151                jQuery(".ctl-commercial-alias."+idGuid).removeClass("is-invalid");
18152                jQuery(".ctl-commercial-vat."+idGuid).removeClass("is-invalid");
18153
18154                jQuery(".ctl-commercial-name."+idGuid).closest(".ctl-wp-studio-form-control-wrapper").removeClass("is-invalid");
18155                jQuery(".ctl-commercial-alias."+idGuid).closest(".ctl-wp-studio-form-control-wrapper").removeClass("is-invalid");
18156                jQuery(".ctl-commercial-vat."+idGuid).closest(".ctl-wp-studio-form-control-wrapper").removeClass("is-invalid");
18157            }break;                        
18158        }    
18159    }
18160
18161    wpdk_do_action("ctl-vulcano-theme-resize-layout");  
18162}
18163
18164
18165function formFieldsDeleteGalleryMedia( idResource, typeResource, szFieldName, idMedia, idEditWidget ){
18166    var oRequestData = {};
18167    oRequestData["action"]           = 'ctl-wp-studio';
18168    oRequestData["execute"]          = 'ctl-form-fields';  
18169    oRequestData["field-name"]       = szFieldName;     
18170    oRequestData["resource-id"]      = idResource;
18171    oRequestData["resource-type"]    = typeResource; 
18172    oRequestData["edit-widget-id"]   = idEditWidget; 
18173    oRequestData["media-id"]         = idMedia;  
18174    oRequestData["extension-action"] = 'delete-gallery-media';
18175
18176    var idLoading = g_oCTLWPStudio.showLoading("");
18177
18178    jQuery.ajax({
18179        url : g_oCTLWPStudio._oLangCommon["ajaxurl"],
18180        type: "POST",
18181        data : oRequestData,
18182        cache: false,
18183        method: 'POST',
18184        success:function(response, textStatus, jqXHR){
18185            g_oCTLWPStudio.closeDlg(idLoading);
18186
18187            var oResponse = jQuery.parseJSON(response);
18188
18189            if( oResponse.res === false ){              
18190                alert(oResponse.desc); 
18191            }else{
18192                var oNodeImageListItem = null;
18193
18194                oNodeImageListItem = jQuery(".ctl-media-gallery-folder li[data-id="+oResponse.media_id+"]");
18195                if ( oNodeImageListItem.length > 0 ){
18196                    oNodeImageListItem.remove();
18197                }
18198
18199                oNodeImageListItem = jQuery(".ctl-media-gallery-list li[data-id="+oResponse.media_id+"]");
18200                if ( oNodeImageListItem.length > 0 ){
18201                    oNodeImageListItem.remove();
18202                }  
18203                
18204                if ( jQuery(".ctl-media-gallery-list li").length == 0 ){ 
18205                    jQuery("#media-gallery .alert-warning").removeClass("d-none");
18206                }
18207            }
18208        },
18209        error: function(jqXHR, textStatus, errorThrown){
18210            g_oCTLWPStudio.closeDlg(idLoading);
18211            alert(g_oCTLWPStudio._oLangCommon["Ooops! Something Went Wrong!"]);  
18212        }
18213    });  
18214}
18215
18216function formFieldsMediaGallery( oNodeWrapper, szFieldName, idResource, typeResource, idEditWidget ){
18217
18218    var aCurSelection = new Array();
18219    oNodeWrapper.find('.ctl-media-gallery-list li').each(function(){
18220        aCurSelection.push(jQuery(this).attr("data-id"));
18221    });
18222
18223    var oRequestData = {};
18224    oRequestData["action"]           = 'ctl-wp-studio';
18225    oRequestData["execute"]          = 'ctl-form-fields';  
18226    oRequestData["field-name"]       = szFieldName;     
18227    oRequestData["resource-id"]      = idResource;
18228    oRequestData["resource-type"]    = typeResource; 
18229    oRequestData["edit-widget-id"]   = idEditWidget;    
18230    oRequestData["extension-action"] = 'get-media-gallery-folder';
18231
18232    var idLoading = g_oCTLWPStudio.showLoading("");
18233
18234    jQuery.ajax({
18235        url : g_oCTLWPStudio._oLangCommon["ajaxurl"],
18236        type: "POST",
18237        data : oRequestData,
18238        cache: false,
18239        method: 'POST',
18240        success:function(response, textStatus, jqXHR){
18241            g_oCTLWPStudio.closeDlg(idLoading);
18242
18243            var oResponse = jQuery.parseJSON(response);
18244
18245            if( oResponse.res === false ){              
18246                alert(oResponse.desc); 
18247            }else{
18248                formFieldsShowMediaGallery(
18249                        idResource, 
18250                        typeResource,     
18251                        szFieldName,                         
18252                        oResponse.gallery,
18253                        oResponse.max_upload,
18254                        idEditWidget );
18255            }
18256        },
18257        error: function(jqXHR, textStatus, errorThrown){
18258            g_oCTLWPStudio.closeDlg(idLoading);
18259            alert(g_oCTLWPStudio._oLangCommon["Ooops! Something Went Wrong!"]);  
18260        }
18261    });  
18262}
18263
18264function formFieldsShowMediaGallery( idResource, szTypeResource, szFieldName, aGallery, szMaxUpload, idEditWidget ){
18265
18266    var htmlHiddenFields = "";
18267
18268
18269    htmlHiddenFields += formFieldsBuildHiddenField({
18270        'field-name' : 'resource-id',
18271    }, idResource);  
18272    htmlHiddenFields += formFieldsBuildHiddenField({
18273        'field-name' : 'resource-type',
18274    }, szTypeResource); 
18275    htmlHiddenFields += formFieldsBuildHiddenField({
18276        'field-name' : 'field-name',
18277    }, szFieldName);   
18278    htmlHiddenFields += formFieldsBuildHiddenField({
18279        'field-name' : 'edit-widget-id',
18280    }, idEditWidget);          
18281
18282
18283    var html = "";
18284
18285    html += '<div class="nav nav-tabs" id="nav-tab" role="tablist">';
18286        html += '<a class="nav-link tab-link-media-gallery active" data-toggle="tab" href="#media-gallery" ';
18287        html += 'role="tab" aria-selected="true">'+
18288        g_oCTLFormFieldsLocalizationCommon["Gallery"]+'</a>';
18289        html += '<a class="nav-link tab-link-upload-media" data-toggle="tab" href="#upload-media" ';
18290        html += 'role="tab" aria-selected="false">'+
18291        g_oCTLFormFieldsLocalizationCommon["Upload"]+'</a>';
18292    html += '</div>';
18293
18294    html += '<div class="tab-content mt-2">';        
18295
18296    html += '<div class="tab-pane fade show active" id="media-gallery" role="tabpanel">';
18297    html += '<form method="post">';
18298
18299    html += htmlHiddenFields;
18300
18301    html += '<div class="alert alert-warning ' + (aGallery.length == 0 ? '' : 'd-none') + '">';
18302        html += g_oCTLFormFieldsLocalizationCommon["No items were loaded.<br>Please click on the upload tab to upload a new item!"];
18303    html += '</div>';
18304
18305    html += '<ul class="ctl-media-gallery-folder">';
18306
18307    for( var i = 0; i < aGallery.length; i++ ){
18308        var oImage = aGallery[i];
18309
18310        html += formFieldsHtmlImageInMediaGallery(oImage);
18311    }
18312    html += '</ul>';
18313
18314    html += '</form>';
18315    html += '</div>';
18316
18317    html += '<div class="tab-pane fade" id="upload-media" role="tabpanel">';
18318    html += '<form method="post" enctype="multipart/form-data">';
18319
18320    html += htmlHiddenFields;
18321
18322    html += formFieldsBuildUploadAreaField({
18323        "label-description" : sprintf(g_oCTLFormFieldsLocalizationCommon["Max upload file size %s"], szMaxUpload),
18324        "field-name"     : "upload-image",
18325        "preview-image"  : false,//szTypeMedia === "image" ? true : false,
18326        "browse-icon"    : "",
18327        "btn-outlined"   : true,
18328        "mandatory"      : true,
18329        "mandatory-on-label" : true,
18330        "label-button"   : g_oCTLFormFieldsLocalizationCommon["Browse"],
18331        "append-buttons" : '<button type="button" class="' + 
18332                           'btn btn-outline-primary ctl-form-fields-action-upload-gallery-media">'+
18333                           g_oCTLFormFieldsLocalizationCommon["Upload"]+'</button>'
18334    });
18335
18336    html += '</form>';
18337
18338    html += '</div>';
18339
18340    html += '</div>';
18341
18342    g_oCTLBootstrapModals.showModal({
18343        wrapper_classes : "ctl-media-gallery-modal",
18344        modal_title : g_oCTLFormFieldsLocalizationCommon["Media Gallery"],
18345        modal_content : html,
18346        closeable : true,
18347        width: '80',
18348        position: "centered",
18349    });
18350
18351    if ( aGallery.length === 0 ){
18352        jQuery(".ctl-media-gallery-modal .tab-link-upload-media").click();
18353    }
18354}
18355
18356function formFieldsHtmlMediaPreview( url ){
18357
18358    var szFileName = url.replace(/^.*[\\\/]/, '');
18359    var ext = szFileName.substring(szFileName.lastIndexOf('+ ')+1, szFileName.length) || szFileName;
18360    
18361    var htmlImg = '';
18362
18363    htmlImg += '<a href="' + url + '" target="_blank">';
18364
18365    switch(ext){
18366        case 'jpg':
18367        case 'jpeg':
18368        case 'gif':
18369        case 'png':
18370        case 'bmp':{
18371            htmlImg += '<img data-aspect-ratio="4:3" class="ctl-aspect-ratio img-fluid image-preview rounded img-thumbnail w-100"';
18372            htmlImg += ' src="' + url + '" />';
18373        }break;
18374        case "pdf":{
18375            htmlImg += '<div data-aspect-ratio="4:3" class="ctl-aspect-ratio img-fluid image-preview rounded img-thumbnail w-100">';
18376            htmlImg += '<i class="ctl-wp-studio-icons-file-pdf"></i></div>';
18377        }break;
18378        case "zip":{
18379            htmlImg += '<div data-aspect-ratio="4:3" class="ctl-aspect-ratio img-fluid image-preview rounded img-thumbnail w-100">';
18380            htmlImg += '<i class="ctl-wp-studio-icons-file-archive"></i></div>';
18381        }break;
18382        default:{
18383            htmlImg += '<div data-aspect-ratio="4:3" class="ctl-aspect-ratio img-fluid image-preview rounded img-thumbnail w-100">';
18384            htmlImg += '<i class="ctl-wp-studio-icons-doc-text"></i></div>';            
18385        }
18386    }   
18387    
18388    htmlImg += '</a>';
18389
18390    return htmlImg;
18391}
18392
18393function formFieldsHtmlImageInMediaGallery( oMedia ){
18394    var guid = g_oCTLWPStudio.makeCode(4);   
18395
18396    // check extension
18397    
18398    var szFileName = oMedia.url.replace(/^.*[\\\/]/, '');
18399    var htmlImg = formFieldsHtmlMediaPreview(oMedia.url);
18400
18401    var html = '';
18402    html += '<li data-id="'+oMedia.id+'" data-url="'+oMedia.url+'">';
18403        html += htmlImg;
18404        html += '<div class="input-group input-group-sm mt-2 mb-3">';
18405            html += '<input class="form-control" type="text" value="'+ szFileName +'" disabled/>';
18406            html += '<div class="input-group-append">';
18407                html += '<button data-id="'+oMedia.id+'" type="button" ';
18408                    html += 'class="btn btn-xs btn-outline-danger ctl-form-fields-action-delete-gallery-media">';
18409                    html += '<i class="ctl-wp-studio-icons-trash"></i>';
18410                html += '</button>';
18411            html += '</div>';
18412        html += '</div>';
18413    html += '</li>';
18414
18415    return html;
18416}
18417
18418
18419
18420function formFieldsBuildDateField( oConfig, szDefaultValue ){
18421
18422    var oDefault = {
18423        "label-title" : "",
18424        "label-suggestion" : "",
18425        "label-description" : "",                
18426        "field-name" : "",
18427        "mandatory" : false,
18428        "display" : 12,
18429        "label-align" : "left",
18430        "label-v-align" : "",
18431        "readonly" : false,
18432        "data-attr" : "",
18433        "classes" : "",
18434        "autocomplete" : false,
18435        "align-value" : "left",
18436        "disabled" : false,
18437        "date-format" : "",
18438        "form-group-classes" : "",
18439        
18440        "mandatory-on-label" : true,
18441        "floating-label" : false, 
18442        "debug" : false,           
18443    };
18444    
18445    if (!szDefaultValue){
18446        szDefaultValue = "";
18447    }
18448
18449    oConfig = jQuery.extend(oDefault, oConfig); 
18450
18451    var guid = "";
18452    if (oConfig["field-name"]){
18453        guid = oConfig["field-name"] + "-";    
18454    }
18455    guid += g_oCTLWPStudio.makeCode(4);             
18456
18457    var iDisplay = oConfig["display"];
18458
18459    var html = "";
18460    var szFormInputControl = "form-control datetimepicker-input";
18461
18462    var szFormGroupClasses = "form-group";
18463    szFormGroupClasses += ' ' + oConfig["form-group-classes"];
18464    var szLabelClasses       = "ctl-form-field-label";
18465    var szFormControlClasses = 'ctl-wp-studio-form-control-wrapper';
18466
18467    szFormControlClasses += " ctldatefield";
18468
18469    if( !oConfig["readonly"] && !oConfig["disabled"] && oConfig["mandatory"] ){
18470        szFormControlClasses += " mandatory";
18471        
18472        if ( oConfig["mandatory-on-label"] ){
18473            szFormGroupClasses += " mandatory-on-label";
18474        }        
18475    }
18476
18477    if( oConfig["classes"] ){
18478        szFormInputControl += " " + oConfig["classes"];
18479    }
18480
18481    if ( oConfig["floating-label"] && iDisplay === 12 ){                
18482        szFormGroupClasses += " floating-label";
18483
18484        oConfig["label-suggestion"] = "";    
18485        oConfig["label-align"]      = "left";
18486
18487        if ( szDefaultValue ){
18488            szFormGroupClasses += " floating-label-normal";
18489        }
18490    }   
18491
18492    szFormInputControl += " text-" + oConfig["align-value"];
18493
18494    if ( !oConfig["autocomplete"] ){
18495        oConfig["data-attr"] += ' autocomplete="off"';
18496    }      
18497    
18498    if ( !oConfig["debug"] ){
18499        oConfig["data-attr"] += ' data-debug="true"';
18500    }else{
18501        oConfig["data-attr"] += ' data-debug="false"';
18502    }                  
18503
18504    switch(iDisplay){
18505        case 12:{
18506            szLabelClasses += " d-block";
18507        }break;
18508        case 10:{
18509            szFormGroupClasses+= " row";
18510            szLabelClasses += " col col-12 col-sm-10";
18511            szFormControlClasses += " col col-12 col-sm-2";
18512
18513            if ( oConfig["label-v-align"] !== ""){
18514                szFormGroupClasses += " " + oConfig["label-v-align"];
18515            }            
18516        }break;
18517        case 9:{
18518            szFormGroupClasses+= " row";
18519            szLabelClasses += " col col-12 col-sm-9";
18520            szFormControlClasses += " col col-12 col-sm-3"; 
18521
18522            if ( oConfig["label-v-align"] !== ""){
18523                szFormGroupClasses += " " + oConfig["label-v-align"];
18524            }            
18525        }break;
18526        case 6:{
18527            szFormGroupClasses+= " row";
18528            szLabelClasses += " col col-12 col-sm-6";
18529            szFormControlClasses += " col col-12 col-sm-6";
18530            
18531            if ( oConfig["label-v-align"] !== ""){
18532                szFormGroupClasses += " " + oConfig["label-v-align"];
18533            }            
18534        }break;
18535        case 3:{
18536            szFormGroupClasses+= " row";
18537            szLabelClasses += " col col-12 col-sm-3";
18538            szFormControlClasses += " col col-12 col-sm-9";
18539            
18540            if ( oConfig["label-v-align"] !== ""){
18541                szFormGroupClasses += " " + oConfig["label-v-align"];
18542            }            
18543        }break;  
18544        case 2:{
18545            szFormGroupClasses+= " row";
18546            szLabelClasses += " col col-12 col-sm-2";
18547            szFormControlClasses += " col col-12 col-sm-10";
18548            
18549            if ( oConfig["label-v-align"] !== ""){
18550                szFormGroupClasses += " " + oConfig["label-v-align"];
18551            }            
18552        }break;  
18553        case -1:{
18554            szFormGroupClasses+= " d-inline-block";
18555            szLabelClasses += " col col-auto d-inline-block pr-0";
18556            szFormControlClasses += " col col-auto d-inline-block";
18557            
18558            if ( oConfig["label-v-align"] !== ""){
18559                szFormGroupClasses += " " + oConfig["label-v-align"];
18560            }            
18561        }break;         
18562        case "inline-block":{
18563            szLabelClasses += " col col-auto d-inline-block";
18564            szFormControlClasses += " col col-auto  d-inline-block";
18565        }break;              
18566    }
18567
18568    szLabelClasses += " text-" + oConfig["label-align"];
18569
18570    html+= '<div class="' + szFormGroupClasses + '">';
18571
18572    if ( oConfig["label-title"] !== "" || iDisplay !== 12 ){
18573        html+= '<label class="' + szLabelClasses +'" for="' + guid + '">' +
18574                oConfig["label-title"] + '</label>';
18575    }
18576
18577    html+= '<div class="' + szFormControlClasses + '">';
18578
18579    html += '<div id="'+guid+'" class="input-group date" data-target-input="nearest">';
18580
18581    html+= '<input';
18582    html+= ' data-toggle="datetimepicker" data-target="#' + guid + '"';
18583
18584    if ( oConfig['date-format'] !== "none" &&
18585         oConfig['date-format'] !== "" ){
18586        html+= ' data-format="'+ oConfig['date-format'] +'"';                
18587    }
18588
18589    html+= ' type="text"';
18590    html+= ' name="'+oConfig["field-name"]+'"';
18591    html+= ' class="'+szFormInputControl+'"';
18592
18593    if ( (szDefaultValue) ){
18594        html += ' data-value="'+szDefaultValue+'"'; 
18595    }
18596
18597    if ( oConfig["readonly"] ){
18598        html += ' readonly';
18599    }
18600
18601    if ( oConfig["disabled"] ){                
18602        html+= ' disabled';
18603    }               
18604
18605    if ( (oConfig["label-suggestion"]) ){
18606        html += ' placeholder="'+oConfig["label-suggestion"]+'"';                    
18607    }
18608
18609    if ( (oConfig["data-attr"]) ){
18610        html += ' ' + oConfig["data-attr"];
18611    }
18612
18613    html += ' />'; 
18614
18615    html += '<div class="input-group-append" data-target="#'+guid+'" data-toggle="datetimepicker">';
18616        html += '<div class="input-group-text"><i class="ctl-wp-studio-icons-calendar"></i></div>';
18617    html += '</div>';            
18618
18619    html += '</div>';
18620
18621    if ( oConfig["label-description"] !== "" ){
18622        html+= '<small class="ctl-form-field-description">' + oConfig["label-description"] + '</small>';
18623    }
18624
18625    html+= '<div class="invalid-feedback"></div>';            
18626    html+= '</div>';
18627    html+= '</div>';
18628
18629    return html;
18630}       
18631
18632function formFieldsBuildSelectField( oConfig, aFields, defaultValue ){
18633    var oDefault = {
18634        "label-title" : "",
18635        "label-suggestion" : "",
18636        "label-description" : "",                
18637        "field-name" : "",
18638        "mandatory" : false,
18639        "display" : 12,
18640        "label-align" : "left",
18641        "label-v-align" : "",
18642        "readonly" : false,
18643        "data-attr" : "",
18644        "classes" : "",
18645        "wrapper-classes" : "",
18646        "control-classes" : "",
18647        "autocomplete" : false,
18648        "disabled" : false,
18649        'allow-multiple' : false,
18650        'enable-select2' : false,
18651        'show-empty-button' : false,
18652        
18653        "mandatory-on-label" : true,        
18654    };
18655
18656    if (!defaultValue){
18657        defaultValue = "";
18658    }
18659
18660    if ( !aFields ){
18661        aFields = [];
18662    }
18663
18664    oConfig = jQuery.extend(oDefault, oConfig); 
18665
18666    var guid = "";
18667    if (oConfig["field-name"]){
18668        guid = oConfig["field-name"] + "-";    
18669    }
18670    guid += g_oCTLWPStudio.makeCode(4);            
18671
18672    var szFormSelectControl = "form-control custom-select";
18673
18674    var szFormGroupClasses = "form-group";
18675    var szLabelClasses = "ctl-form-field-label";
18676    var szFormControlClasses = 'ctl-wp-studio-form-control-wrapper';
18677
18678    szFormControlClasses += " ctlselectfield";            
18679
18680    if( !oConfig["readonly"] && !oConfig["disabled"] && oConfig["mandatory"] ){
18681        szFormControlClasses += " mandatory";
18682        
18683        if ( oConfig["mandatory-on-label"] ){
18684            szFormGroupClasses += " mandatory-on-label";
18685        }        
18686    }
18687
18688    if ( oConfig["readonly"] || oConfig["disabled"] ){
18689        szFormSelectControl += ' disabled';
18690        
18691        oConfig["enable-select2"] = false;
18692    }
18693
18694    if ((oConfig["classes"])){
18695        szFormSelectControl += ' ' + oConfig["classes"];
18696    }  
18697    
18698            
18699    if ((oConfig["control-classes"])){
18700        szFormControlClasses += ' ' + oConfig["control-classes"];
18701    } 
18702    
18703    if ((oConfig["wrapper-classes"])){
18704        szFormGroupClasses += ' ' + oConfig["classes"];
18705    }      
18706
18707    if (oConfig["enable-select2"]){
18708        szFormSelectControl += ' ctl-select2';
18709    }                
18710
18711    if ( !oConfig["autocomplete"] ){
18712        oConfig["data-attr"] += ' autocomplete="off"';
18713    }              
18714
18715    var iDisplay = parseInt(oConfig["display"] );
18716
18717    switch(iDisplay){
18718        case 12:{
18719            szLabelClasses += " d-block";
18720        }break;
18721        case 10:{
18722            szFormGroupClasses+= " row";
18723            szLabelClasses += " col col-12 col-sm-10";
18724            szFormControlClasses += " col col-12 col-sm-2";
18725
18726            if ( oConfig["label-v-align"] !== ""){
18727                szFormGroupClasses += " " + oConfig["label-v-align"];
18728            }            
18729        }break;
18730        case 9:{
18731            szFormGroupClasses+= " row";
18732            szLabelClasses += " col col-12 col-sm-9";
18733            szFormControlClasses += " col col-12 col-sm-3";
18734
18735            if ( oConfig["label-v-align"] !== ""){
18736                szFormGroupClasses += " " + oConfig["label-v-align"];
18737            }            
18738        }break;
18739        case 6:{
18740            szFormGroupClasses+= " row";
18741            szLabelClasses += " col col-12 col-sm-6";
18742            szFormControlClasses += " col col-12 col-sm-6";
18743            
18744            if ( oConfig["label-v-align"] !== ""){
18745                szFormGroupClasses += " " + oConfig["label-v-align"];
18746            }               
18747        }break;
18748        case 3:{
18749            szFormGroupClasses+= " row";
18750            szLabelClasses += " col col-12 col-sm-3";
18751            szFormControlClasses += " col col-12 col-sm-9";
18752            
18753            if ( oConfig["label-v-align"] !== ""){
18754                szFormGroupClasses += " " + oConfig["label-v-align"];
18755            }               
18756        }break;  
18757        case 2:{
18758            szFormGroupClasses+= " row";
18759            szLabelClasses += " col col-12 col-sm-2";
18760            szFormControlClasses += " col col-12 col-sm-10";
18761            
18762            if ( oConfig["label-v-align"] !== ""){
18763                szFormGroupClasses += " " + oConfig["label-v-align"];
18764            }               
18765        }break; 
18766        case -1:{
18767            szFormGroupClasses+= " d-inline-block";
18768            szLabelClasses += " col col-auto d-inline-block pr-0";
18769            szFormControlClasses += " col col-auto d-inline-block";
18770            
18771            if ( oConfig["label-v-align"] !== ""){
18772                szFormGroupClasses += " " + oConfig["label-v-align"];
18773            }               
18774        }break;     
18775    }
18776
18777    szLabelClasses += " text-" + oConfig["label-align"] ;
18778
18779    var html = "";
18780
18781    html+= '<div class="' + szFormGroupClasses + '">';
18782
18783    if ( oConfig["label-title"] !== "" || iDisplay !== 12 ){
18784        html+= '<label class="' + szLabelClasses + '" for="' + guid  + '">' + 
18785                oConfig["label-title"] + '</label>';
18786    }
18787
18788    var szFieldName = oConfig["field-name"];
18789    if (oConfig["allow-multiple"]){
18790        if ( oConfig["field-name"].indexOf("[]") === -1 ){
18791            szFieldName += "[]";
18792        }                         
18793    }              
18794
18795    html+= '<div class="' + szFormControlClasses + '">';
18796    
18797    if (oConfig["show-empty-button"]){
18798        html += '<div class="input-group">';
18799    }    
18800    
18801
18802    if ( !szFieldName.endsWith("[]") ){
18803        html += '<input type="hidden" name="' + szFieldName + '-hidden" value="1" />';
18804    }else{
18805        html += '<input type="hidden" name="' + szFieldName.replace("[]", "-hidden[]") + '" value="1" />';
18806    }
18807
18808    html += '<select id="' + guid + '" name="' + szFieldName +
18809            '" class="' + szFormSelectControl + '"';
18810    if (oConfig["readonly"]){
18811        html+= ' readonly';                
18812    }
18813    if (oConfig["allow-multiple"]){
18814        html+= ' multiple';                
18815    }            
18816    if (oConfig["disabled"]){
18817        html+= ' disabled';                
18818    }            
18819    if ( (oConfig["data-attr"]) ){
18820        html+= ' ' + oConfig["data-attr"];
18821    }
18822    html+= '>'; 
18823
18824    if ( (oConfig["label-suggestion"]) ){
18825        html+= '<option value="">' + oConfig["label-suggestion"] + '</option>';  
18826    }                  
18827
18828    for( var i = 0; i < aFields.length; i++ ){                        
18829        var oItem = aFields[i];
18830        var oField = formFieldsUnpackSelectItemData(oItem);    
18831
18832        if ( typeof oField === "object" ){
18833            
18834            var bSelected = false;
18835            
18836            if ( (typeof defaultValue) === "string" && oField["value"] === defaultValue){
18837                bSelected = true;
18838            }else if ( Array.isArray(defaultValue) ){
18839                var aValues = defaultValue;
18840                for ( var k = 0; k < aValues.length; k++ ){
18841                    if ( oField["value"] === aValues[k] ){
18842                        bSelected = true;
18843                        break;
18844                    }
18845                }
18846            }
18847            
18848            html+= '<option value="' + oField["value"] + '" ' + 
18849                    ( bSelected ? 'selected' : '') +
18850                    '>' + oField["label"] + '</option>';                        
18851        }                 
18852    }                
18853
18854
18855    html+= '</select>';                                
18856
18857    if (oConfig["show-empty-button"]){
18858        html += '<div class="input-group-append">';
18859            html += '<button type="button" class="btn btn-outline-secondary btn-action-empty-select2">'+
18860                    g_oCTLFormFieldsLocalizationCommon["Empty field"]+'</button>';
18861        html += '</div>';
18862        html += '</div>';
18863    }
18864
18865    if ( oConfig["label-description"] !== "" ){
18866        html+= '<small class="ctl-form-field-description">' + oConfig["label-description"] + '</small>';
18867    }
18868
18869    html+= '<div class="invalid-feedback"></div>';            
18870
18871/*
18872    if (oConfig["show-empty-button"]){
18873        html+= '<button type="button" class="mt-2 btn btn-xs btn-secondary btn-action-empty-select2">'+
18874                g_oCTLFormFieldsLocalizationCommon["Empty field"]+'</button>';
18875    }
18876*/
18877
18878    html+= '</div>';
18879
18880    html+= '</div>';            
18881
18882    return html;
18883}
18884        
18885function formFieldsBuildTextAreaField( oConfig, szDefaultValue ){
18886
18887    var oDefault = {
18888        "label-title" : "",
18889        "label-suggestion" : "",
18890        "label-description" : "",                
18891        "field-name" : "",
18892        "mandatory" : false,
18893        "display" : 12,
18894        "label-align" : "left",
18895        "label-v-align" : "",
18896        "readonly" : false,
18897        "data-attr" : "",
18898        "classes" : "",
18899        "control-classes" : "", 
18900        "wrapper-classes" : "",           
18901        "autocomplete" : false,
18902        "disabled" : false,
18903        "validate-not-empty-tags" : false,
18904        
18905        "mandatory-on-label" : true,
18906        "floating-label" : false,     
18907        
18908        "enable-summernote" : false,
18909        "enable-copy" : false,
18910        "enable-resize"   : true,
18911        "textarea-height" : 150,        
18912    };
18913
18914    oConfig = jQuery.extend(oDefault, oConfig); 
18915
18916    if ( !szDefaultValue ){
18917        szDefaultValue = "";
18918    }
18919
18920    var guid = "";
18921    if (oDefault["field-name"]){
18922        guid = oDefault["field-name"] + "-";    
18923    }
18924    guid += g_oCTLWPStudio.makeCode(4);
18925
18926    var html = "";
18927
18928    var szFormInputControl = "form-control";
18929
18930    var szFormGroupClasses = "form-group";
18931    var szLabelClasses = "ctl-form-field-label";
18932    var szFormControlClasses = 'ctl-wp-studio-form-control-wrapper';
18933
18934    szFormControlClasses += " ctltextareafield";
18935
18936    if( !oConfig["readonly"] && !oConfig["disabled"] && oConfig["mandatory"] ){
18937        szFormControlClasses += " mandatory";
18938        
18939        if ( oConfig["mandatory-on-label"] ){
18940            szFormGroupClasses += " mandatory-on-label";
18941        }        
18942    }
18943
18944    if( oConfig["classes"] ){
18945        szFormInputControl += " " + oConfig["classes"];
18946    }
18947    
18948    if( oConfig["wrapper-classes"] ){
18949        szFormGroupClasses += " " + oConfig["wrapper-classes"];
18950    }  
18951    
18952    if( oConfig["control-classes"] ){
18953        szFormControlClasses += " " + oConfig["control-classes"];
18954    }    
18955    
18956    if ( oConfig["validate-not-empty-tags"] ){
18957        szFormInputControl += " validate-not-empty-tags";
18958    }    
18959
18960    if ( oConfig["enable-summernote"] ){
18961        szFormInputControl += " summernote-textarea";
18962    }        
18963
18964    if ( !oConfig["autocomplete"] ){
18965        oConfig["data-attr"] += ' autocomplete="off"';
18966    }            
18967
18968    if ( oConfig["disabled"] ){                
18969        html+= ' disabled';
18970    }                
18971
18972    var iDisplay = parseInt(oConfig["display"]);
18973
18974
18975    if ( oConfig["floating-label"] && iDisplay === 12 &&
18976        !oConfig["enable-summernote"] ){                
18977        szFormGroupClasses += " floating-label";
18978
18979        oConfig["label-suggestion"] = "";    
18980        oConfig["label-align"]      = "left";
18981
18982        if ( szDefaultValue ){
18983            szFormGroupClasses += " floating-label-normal";
18984        }
18985    }   
18986
18987    switch(iDisplay){
18988        case 12:{
18989            szLabelClasses += " d-block";
18990        }break;
18991        case 10:{
18992            szFormGroupClasses+= " row";
18993            szLabelClasses += " col col-12 col-sm-10";
18994            szFormControlClasses += " col col-12 col-sm-2";
18995
18996            if ( oConfig["label-v-align"] !== ""){
18997                szFormGroupClasses += " " + oConfig["label-v-align"];   
18998            }         
18999        }break;
19000        case 9:{
19001            szFormGroupClasses+= " row";
19002            szLabelClasses += " col col-12 col-sm-9";
19003            szFormControlClasses += " col col-12 col-sm-3";
19004
19005            if ( oConfig["label-v-align"] !== ""){
19006                szFormGroupClasses += " " + oConfig["label-v-align"];
19007            }            
19008        }break;
19009        case 6:{
19010            szFormGroupClasses+= " row";
19011            szLabelClasses += " col col-12 col-sm-6";
19012            szFormControlClasses += " col col-12 col-sm-6";
19013            
19014            if ( oConfig["label-v-align"] !== ""){
19015                szFormGroupClasses += " " + oConfig["label-v-align"];
19016            }               
19017        }break;
19018        case 3:{
19019            szFormGroupClasses+= " row";
19020            szLabelClasses += " col col-12 col-sm-3";
19021            szFormControlClasses += " col col-12 col-sm-9";
19022            
19023            if ( oConfig["label-v-align"] !== ""){
19024                szFormGroupClasses += " " + oConfig["label-v-align"];
19025            }               
19026        }break;  
19027        case 2:{
19028            szFormGroupClasses+= " row";
19029            szLabelClasses += " col col-12 col-sm-2";
19030            szFormControlClasses += " col col-12 col-sm-10";
19031            
19032            if ( oConfig["label-v-align"] !== ""){
19033                szFormGroupClasses += " " + oConfig["label-v-align"];
19034            }               
19035        }break;
19036        case -1:{
19037            szFormGroupClasses+= " d-inline-block";
19038            szLabelClasses += " col col-auto d-inline-block pr-0";
19039            szFormControlClasses += " col col-auto d-inline-block";
19040            
19041            if ( oConfig["label-v-align"] !== ""){
19042                szFormGroupClasses += " " + oConfig["label-v-align"];
19043            }               
19044        }break;      
19045    }
19046
19047    szLabelClasses += " text-" + oConfig["label-align"];
19048
19049    html+= '<div class="' + szFormGroupClasses + '">';
19050
19051    if ( oConfig["label-title"] !== "" || iDisplay !== 12 ){
19052        html+= '<label class="' + szLabelClasses + '" for="' + guid + 
19053                '">' + oConfig["label-title"] + '</label>';
19054    }
19055
19056    html+= '<div class="' + szFormControlClasses + '">';
19057    html+= '<textarea id="' + guid + '"';
19058
19059    html+= ' type="text"';
19060    html+= ' name="' + oConfig["field-name"] + '"';
19061    html+= ' class="' + szFormInputControl + '"';
19062
19063    if ( oConfig["readonly"] ){
19064        html += ' readonly';
19065    }
19066
19067    if(!oConfig["enable-resize"]){
19068        html += 'resize: none;';
19069    }    
19070
19071    if ( oConfig["textarea-height"] ){
19072        html += ' style="height: ' + oConfig["textarea-height"] + 'px;"';
19073        if ( oConfig["enable-summernote"] ){
19074            html += ' data-summernote-height="' + oConfig["textarea-height"] + '"';                    
19075        }
19076    }    
19077
19078    if ( (oConfig["label-suggestion"]) ){
19079        html += ' placeholder="' + oConfig["label-suggestion"] + '"';                    
19080    }
19081
19082    if ( (oConfig["data-attr"]) ){
19083        html += ' ' + oConfig["data-attr"];
19084    }
19085
19086    html += '>';
19087
19088//    if ( (szDefaultValue) ){
19089        html += szDefaultValue;    
19090//    }            
19091
19092    html += '</textarea>'; 
19093
19094    if ( oConfig["label-description"] !== "" ){
19095        html+= '<small class="ctl-form-field-description">' + oConfig["label-description"] + '</small>';
19096    }
19097
19098    if ( oConfig["enable-copy"] ){
19099        html += '<div class="mt-2 mb-2"><button class="btn btn-xs btn-secondary ctl-btn-action-clipboard" data-clipboard-target="#'+
19100        guid+'" type="button"><i class="ctl-wp-studio-icons-docs"></i><span class="ml-1 btn-text">'+
19101        g_oCTLFormFieldsLocalizationCommon["copy"] + '</span></button></div>'
19102    }    
19103
19104    html+= '<div class="invalid-feedback"></div>';
19105
19106    html+= '</div>';
19107
19108    html+= '</div>';
19109
19110
19111    return html;
19112}      
19113
19114function formFieldsBuildUploadAreaField( oConfig, szDefaultValue ){
19115    var oDefault = {
19116        "label-title" : "",
19117        "label-suggestion" : "",
19118        "label-description" : "", 
19119        "label-drag-drop" : "", 
19120        "label-button" : "browse", 
19121        "field-name" : "",
19122        "mandatory" : false,
19123        "display" : 12,
19124        "label-align" : "left",
19125        "label-v-align" : "",
19126        "readonly" : false,
19127        "data-attr" : "",
19128
19129        "classes" : "",
19130        "label-classes"   : "",
19131        "control-classes" : "", 
19132        "wrapper-classes" : "", 
19133
19134        "autocomplete" : false,
19135        "disabled" : false,
19136        "preview-image" : false,
19137        "drop-area" : true,
19138        "mandatory-on-label" : true,   
19139        
19140        "append-buttons" : [],
19141        "btn-outlined" : false,
19142        "browse-icon" : "ctl-wp-studio-icons-attach",   
19143        
19144        "multiple" : false,
19145    };
19146
19147    if (!szDefaultValue){
19148        szDefaultValue = "";
19149    }
19150
19151    oConfig = jQuery.extend(oDefault, oConfig); 
19152
19153    var guid = "";
19154    if (oConfig["field-name"]){
19155        guid = oConfig["field-name"] + "-";    
19156    }
19157    guid += g_oCTLWPStudio.makeCode(4);                 
19158
19159    var html = "";
19160
19161    var szFormControlClasses    = "";
19162    var szFormGroupClasses      = "form-group";
19163    var szLabelClasses          = "ctl-form-field-label";
19164    var szWrapperControlClasses = 'ctl-wp-studio-form-control-wrapper';
19165    var szInputFieldClasses     = "custom-file-input";
19166
19167    if( oConfig["control-classes"] ){
19168        szFormControlClasses += " " + oConfig["control-classes"];
19169    }     
19170
19171    if( oConfig["label-classes"] ){
19172        szLabelClasses += " " + oConfig["label-classes"];
19173    }             
19174    
19175    if( oConfig["wrapper-classes"] ){
19176        szFormGroupClasses += " " + oConfig["wrapper-classes"];
19177    }                
19178    
19179    if( oConfig["classes"] ){
19180        szInputFieldClasses += " " + oConfig["classes"];
19181    }    
19182
19183    if( !oConfig["readonly"] && !oConfig["disabled"] && oConfig["mandatory"] ){
19184        szWrapperControlClasses += " mandatory";
19185
19186        if ( szDefaultValue === ctl_wp_studio_common_localization["szDefaultImage"] ||
19187             szDefaultValue === "" || szDefaultValue === undefined ){
19188            szWrapperControlClasses += " img-default";
19189        }
19190        
19191        if ( oConfig["mandatory-on-label"] ){
19192            szFormGroupClasses += " mandatory-on-label";
19193        }        
19194    }
19195
19196    if ( !oConfig["autocomplete"] ){
19197        oConfig["data-attr"] += ' autocomplete="off"';
19198    }  
19199
19200    if ( oConfig["multiple"] ){
19201        oConfig["data-attr"] += ' multiple';
19202        if ( oConfig["field-name"].indexOf("[]") === -1 ){
19203            oConfig["field-name"] += "[]";
19204        }
19205    }     
19206
19207    var iDisplay = parseInt(oConfig["display"]);
19208
19209    szWrapperControlClasses += " ctl-upload-file-field-wrapper ctluploadfield";
19210
19211    switch(iDisplay){
19212        case 12:{
19213            szLabelClasses += " d-block";
19214        }break;
19215        case 10:{
19216            szFormGroupClasses+= " row align-items-end";
19217            szLabelClasses += " col col-12 col-sm-10";
19218            szWrapperControlClasses += " col col-12 col-sm-2";  
19219
19220            if ( oConfig["label-v-align"] !== ""){
19221                szFormGroupClasses += " " + oConfig["label-v-align"];
19222            }            
19223        }break;
19224        case 9:{
19225            szFormGroupClasses+= " row align-items-end";
19226            szLabelClasses += " col col-12 col-sm-9";
19227            szWrapperControlClasses += " col col-12 col-sm-3";
19228
19229            if ( oConfig["label-v-align"] !== ""){
19230                szFormGroupClasses += " " + oConfig["label-v-align"];
19231            }            
19232        }break;
19233        case 6:{
19234            szFormGroupClasses+= " row align-items-end";
19235            szLabelClasses += " col col-12 col-sm-6";
19236            szWrapperControlClasses += " col col-12 col-sm-6";
19237            
19238            if ( oConfig["label-v-align"] !== ""){
19239                szFormGroupClasses += " " + oConfig["label-v-align"];
19240            }               
19241        }break;
19242        case 3:{
19243            szFormGroupClasses+= " row align-items-end";
19244            szLabelClasses += " col col-12 col-sm-3";
19245            szWrapperControlClasses += " col col-12 col-sm-9";
19246            
19247            if ( oConfig["label-v-align"] !== ""){
19248                szFormGroupClasses += " " + oConfig["label-v-align"];
19249            }               
19250        }break;  
19251        case 2:{
19252            szFormGroupClasses+= " row align-items-end";
19253            szLabelClasses += " col col-12 col-sm-2";
19254            szWrapperControlClasses += " col col-12 col-sm-10";
19255            
19256            if ( oConfig["label-v-align"] !== ""){
19257                szFormGroupClasses += " " + oConfig["label-v-align"];
19258            }               
19259        }break; 
19260        case -1:{
19261            szFormGroupClasses+= " d-inline-block align-items-end";
19262            szLabelClasses += " col col-auto d-inline-block pr-0";
19263            szFormControlClasses += " col col-auto d-inline-block";
19264            
19265            if ( oConfig["label-v-align"] !== ""){
19266                szFormGroupClasses += " " + oConfig["label-v-align"];
19267            }               
19268        }break;      
19269    }
19270
19271    szLabelClasses += " mb-3 text-" + oConfig["label-align"];
19272
19273    html+= '<div class="' + szFormGroupClasses + '">';
19274
19275    if ( oConfig["label-title"] !== "" ){
19276        html+= '<label class="' + szLabelClasses + '" for="' + guid + 
19277                '">' + oConfig["label-title"] + '</label>';
19278    }
19279
19280    html+= '<div class="' + szWrapperControlClasses + '">';
19281
19282    html+= '<div class="' + szFormControlClasses + '">';
19283
19284        html+= '<div class="row">';
19285
19286            var szUploadColClasses = "col-12 mb-3 align-self-end";
19287            
19288            if ( !szDefaultValue ){
19289                szDefaultValue = ctl_wp_studio_common_localization["szDefaultImage"];                         
19290            }
19291
19292            if ( oConfig["preview-image"]){
19293                html+= '<div class="col-12 col-sm-3 mb-3 pr-sm-0">';
19294                    html+= '<img class="img-fluid image-preview rounded img-thumbnail w-100 ctl-editor-framework-action-img-preview" ';
19295                    html += ' data-default-image="'+ctl_wp_studio_common_localization["szDefaultImage"]+
19296                            '" src="' + szDefaultValue + '" />';
19297                html+= '</div>';
19298
19299                szUploadColClasses += " col-sm-9";
19300                szInputFieldClasses += " custom-file-image-input";
19301            }
19302
19303
19304            html+= '<div class="'+ szUploadColClasses + '">';
19305
19306                if ( oConfig["drop-area"]){
19307                    html+= '<div class="ctl-file-upload-drag-drop-area mb-2 d-none d-sm-block">';
19308                        html+= '<div class="ctl-file-upload-drag-drop-area-content rounded">';
19309                            html+= '<p class="text-center">'; 
19310                                html+= '<i class="ctl-wp-studio-icons-upload-cloud"></i><br>';
19311                                html+= oConfig["label-drag-drop"];
19312                            html+= '</p>';
19313                        html+= '</div>'; 
19314                    html+= '</div>';                                             
19315                }
19316
19317                html+= '<div class="input-group">';
19318
19319                    html+= '<div class="custom-file">';
19320                        html+= '<input type="file" class="' +
19321                                szInputFieldClasses + '" name="' + oConfig["field-name"] + '"';
19322                    if ( (oConfig["data-attr"]) ){
19323                        html += ' ' + oConfig["data-attr"];
19324                    } 
19325
19326                    html += '>';
19327                    html+= '<label class="custom-file-label">';
19328
19329                    if ( (oConfig["label-suggestion"]) ){
19330                        html += oConfig["label-suggestion"];                    
19331                    }                                  
19332
19333                        html += '</label>';            
19334                    html+= '</div>';
19335    
19336                    html+= '<div class="input-group-append">';
19337
19338                        var szBtnOutlined = "";
19339                        if( oConfig["btn-outlined"] ){
19340                            szBtnOutlined = 'outline-';
19341                        }
19342
19343                        html+= '<button type="button" class="btn btn-'+szBtnOutlined+
19344                                        'secondary ctl-form-fields-action-click-custom-file-input">';                            
19345                        if ( oConfig["browse-icon"] ){
19346                            html+= '<i class="'+oConfig["browse-icon"]+'"></i>';
19347                            html+= '<span class="btn-text d-none d-md-inline-block">' +
19348                                    oConfig["label-button"]  +'</span>';
19349                        }else{
19350                            html += oConfig["label-button"];
19351                        }
19352                        html += '</button>';
19353
19354                        for( var i = 0; i < oConfig["append-buttons"].length; i++ ){
19355                            html += oConfig["append-buttons"][i];
19356                        }
19357                    html+= '</div>';                    
19358                html+= '</div>';
19359
19360                html+= '<div class="invalid-feedback"></div>'; 
19361                
19362
19363                if ( oConfig["label-description"] !== "" ){
19364                    html+= '<small class="ctl-form-field-description">' + oConfig["label-description"] + '</small>';
19365                }
19366
19367            html+= '</div>';    
19368
19369        html+= '</div>';
19370
19371    html+= '</div>';
19372
19373    html+= '</div>';
19374
19375    html+= '</div>';
19376
19377
19378    return html;
19379}   
19380
19381function formFieldsBuildRadioField( oConfig, aFields, szDefaultValue ){
19382    var oDefault = {
19383        "label-title" : "",
19384        "label-description" : "",
19385        "radio-description" : "",
19386        "field-name" : "",
19387        "mandatory" : false,
19388        "display"     : 12,
19389        "label-classes" : "",
19390        "label-align" : "left",
19391        "label-v-align" : "",
19392        "data-attr" : "",
19393        "classes" : "",
19394        "control-classes" : "",
19395        "radio-align" : "inline",
19396        "disabled" : false,
19397        "readonly" : false,
19398        "mandatory-on-label" : true,
19399        "validate-yes"       : false,
19400    };
19401
19402    oConfig = jQuery.extend(oDefault, oConfig); 
19403
19404    var szFormGroupClasses   = "form-group";
19405    var szLabelClasses       = "ctl-form-field-label";
19406    var szFormControlClasses = 'ctl-wp-studio-form-control-wrapper';
19407
19408    szFormControlClasses += " ctlradiofield";
19409
19410    if( !oConfig["readonly"] && !oConfig["disabled"] && oConfig["mandatory"] ){
19411        szFormControlClasses += " mandatory";
19412        
19413        if ( oConfig["mandatory-on-label"] ){
19414            szFormGroupClasses += " mandatory-on-label";
19415        }        
19416    }
19417
19418    if ( oConfig["validate-yes"]){
19419        szFormControlClasses += ' validate-yes';                
19420    }      
19421
19422    if ((oConfig["control-classes"])){
19423        szFormControlClasses += ' ' + oConfig["control-classes"];
19424    }        
19425
19426    var iDisplay = parseInt(oConfig["display"] );
19427
19428    switch(iDisplay){
19429        case 12:{
19430            szLabelClasses += " d-block";
19431        }break;
19432        case 10:{
19433            szFormGroupClasses   += " row";
19434            szLabelClasses       += " col col-12 col-sm-10";
19435            szFormControlClasses += " col col-12 col-sm-2";
19436
19437            if ( oConfig["label-v-align"] !== ""){
19438                szFormGroupClasses += " " + oConfig["label-v-align"];
19439            }            
19440        }break;
19441        case 9:{
19442            szFormGroupClasses   += " row";
19443            szLabelClasses       += " col col-12 col-sm-9";
19444            szFormControlClasses += " col col-12 col-sm-3"; 
19445
19446            if ( oConfig["label-v-align"] !== ""){
19447                szFormGroupClasses += " " + oConfig["label-v-align"];
19448            }            
19449        }break;
19450        case 6:{
19451            szFormGroupClasses   += " row";
19452            szLabelClasses       += " col col-12 col-sm-6";
19453            szFormControlClasses += " col col-12 col-sm-6";
19454            
19455            if ( oConfig["label-v-align"] !== ""){
19456                szFormGroupClasses += " " + oConfig["label-v-align"];
19457            }            
19458        }break;
19459        case 3:{
19460            szFormGroupClasses   += " row";
19461            szLabelClasses       += " col col-12 col-sm-3";
19462            szFormControlClasses += " col col-12 col-sm-9";
19463            
19464            if ( oConfig["label-v-align"] !== ""){
19465                szFormGroupClasses += " " + oConfig["label-v-align"];
19466            }            
19467        }break;  
19468        case 2:{
19469            szFormGroupClasses   += " row";
19470            szLabelClasses       += " col col-12 col-sm-2";
19471            szFormControlClasses += " col col-12 col-sm-10";
19472            
19473            if ( oConfig["label-v-align"] !== ""){
19474                szFormGroupClasses += " " + oConfig["label-v-align"];
19475            }            
19476        }break;   
19477        case -1:{
19478            szFormGroupClasses+= " d-inline-block";
19479            szLabelClasses += " col col-auto d-inline-block pr-0";
19480            szFormControlClasses += " col col-auto d-inline-block";
19481            
19482            if ( oConfig["label-v-align"] !== ""){
19483                szFormGroupClasses += " " + oConfig["label-v-align"];
19484            }            
19485        }break;     
19486    }
19487
19488    szLabelClasses += " text-" + oConfig["label-align"];
19489
19490    if( oConfig["label-classes"] ){
19491        szLabelClasses += " " + oConfig["label-classes"];
19492    }
19493
19494    var szItemClasses = "custom-control custom-radio";
19495
19496    if ( oConfig["classes"] ){
19497        szItemClasses += " " + oConfig["classes"];
19498    }
19499
19500    switch(oConfig["radio-align"]){
19501        case "inline":{
19502            szItemClasses += " custom-control-inline";
19503        }break;
19504    }
19505
19506    var html = "";
19507
19508    html+= '<div class="' + szFormGroupClasses + '">';
19509
19510    if ( oConfig["label-title"] !== "" || iDisplay !== 12 ){
19511        html += '<label class="' + szLabelClasses + '" for="' + oConfig["field-name"] + '">' + 
19512                oConfig["label-title"] + '</label>';
19513    }
19514
19515    html+= '<div class="' + szFormControlClasses + '" ' + oConfig["data-attr"] + '>';
19516
19517    if ( (oConfig["radio-description"])){
19518        html += '<div>' + oConfig["radio-description"] + '</div>';
19519    }            
19520
19521    for( var i = 0; i < aFields.length; i++ ){ 
19522        
19523        var oItem = aFields[i];
19524        var id    = "radio-" + g_oCTLWPStudio.makeCode(4);
19525
19526        var oField = formFieldsUnpackSelectItemData(oItem);
19527
19528        html+= '<div class="' + szItemClasses + '">';
19529          html+= '<input type="radio" id="' + id + '" value="'+ oField["value"]
19530                  + '" name="' + oConfig["field-name"] + '" class="custom-control-input" ' + 
19531                  (szDefaultValue == oField["value"] ? 'checked' : '') + '>';
19532          html+= '<label role="button" class="custom-control-label" for="' + id + '">' +
19533                  oField["label"] + '</label>';
19534        html+= '</div>';            
19535    }                               
19536
19537    if ( oConfig["label-description"] !== "" ){
19538        html+= '<div><small class="ctl-form-field-description">' + oConfig["label-description"] + '</small></div>';
19539    }
19540
19541    html+= '<div class="invalid-feedback"></div>';            
19542
19543    html+= '</div>';
19544
19545    html+= '</div>';            
19546
19547    return html;
19548} 
19549
19550function formFieldsUnpackSelectItemData(oItem){
19551    if ( typeof oItem === "string" ){                
19552        oItem = html_entity_decode(oItem, "ENT_QUOTES");                        
19553        oItem = stripslashes(oItem);                    
19554
19555        var aData = oItem.split("#");
19556        return { "label" : aData[0], "value" : aData[1] };
19557    }else if ( typeof oItem === "object" ){
19558        if ( (oItem["label"] !== null && oItem["label"] !== undefined ) && 
19559             (oItem["value"] !== null && oItem["value"] !== undefined ) ){
19560            return oItem;
19561        }else{
19562            return null;
19563        }
19564    }else{
19565        return null;
19566    }
19567}
19568
19569/* DRAGGABLE LIST */
19570
19571jQuery(document).ready(function(){
19572
19573    jQuery(document).on('click', '.draggable-empty-list', function(){
19574        ctlDraggableRemoveItems(jQuery(this)); 
19575    });
19576    
19577    jQuery(document).on('click', '.draggable-add-value', function(){
19578        ctlDraggableAddManuallyItem(jQuery(this)); 
19579    });    
19580
19581    jQuery(document).on("mousedown", ".draggable-delete-item", function(e){
19582        e.preventDefault();
19583        e.stopPropagation();
19584        if ( e.which !== 1 ){
19585            return;
19586        }
19587        ctlDraggableItemOnDeleteItem(jQuery(this));
19588    });
19589    
19590    jQuery(document).on("mousedown", ".draggable-edit-item", function(e){
19591        e.preventDefault();
19592        e.stopPropagation();
19593        if ( e.which !== 1 ){
19594            return;
19595        }
19596        ctlDraggableItemOnEditItem(jQuery(this));
19597    });    
19598
19599    jQuery(document).on("mousedown", ".draggable-item", function(e){
19600        if ( e.which !== 1 ){
19601            return;
19602        }  
19603
19604        ctlDraggableItemOnMouseDownItem(jQuery(this), 
19605                                e.clientX, e.clientY, 
19606                                e.offsetX, e.offsetY  );
19607    });
19608    
19609    jQuery(document).on("click", ".btn-draggable-action-edit-option", function(){
19610        ctlDraggableItemOnChangeItemValue(jQuery(this));
19611    });
19612
19613    jQuery(document).on("mousemove", function(e){
19614        ctlDraggableDocumentOnMouseMove(e.clientX, e.clientY);
19615    });
19616
19617    jQuery(document).on("mouseup", function(e){
19618        ctlDraggableDocumentOnMouseUp(e.clientX, e.clientY);
19619    });
19620    
19621    
19622    jQuery(document).on("mousemove", ".draggable ul", function(e){
19623        ctlDraggableListOnMouseMove(jQuery(this), e.clientX, e.clientY);
19624    });
19625
19626    jQuery(document).on("mouseout", ".draggable ul", function(e){
19627        ctlDraggableListOnMouseOut(jQuery(this), e.clientX, e.clientY);
19628    }); 
19629    
19630    jQuery(document).on("mouseup", ".draggable ul", function(e){
19631        ctlDraggableListOnMouseUp(jQuery(this), 
19632                                e.clientX, e.clientY,
19633                                e.pageX, e.pageY );
19634    });     
19635      
19636    
19637});
19638
19639function ctlDraggableRemoveItems( oNodeButton ){
19640    var oNodeDraggable = oNodeButton.closest(".draggable");
19641    var oNodeList      = oNodeDraggable.find("ul");
19642    
19643    oNodeList.find('.draggable-delete-item').each(function(){
19644        ctlDraggableItemOnDeleteItem(jQuery(this));
19645    });
19646    
19647    var oNodeNewItemLabel = oNodeDraggable.find('input[name=list-label]');
19648    var oNodeNewItemValue = oNodeDraggable.find('input[name=list-value]');
19649
19650    var oNodeNewItemSelect = oNodeDraggable.find('.ctl-wp-studio-select2-search');
19651
19652    if ( oNodeNewItemLabel.length > 0 ){
19653        oNodeNewItemLabel.val('');
19654        oNodeNewItemValue.val('');
19655    }
19656 
19657    if ( oNodeNewItemSelect.length > 0 ){
19658        oNodeNewItemSelect.val(null).trigger('change');
19659    }
19660}
19661   
19662function ctlDraggableAddManuallyItem( oNodeButton ){
19663    
19664    var oNodeDraggable = oNodeButton.closest(".draggable");    
19665    var oNodeError     = oNodeDraggable.find(".draggable-error");
19666    
19667    oNodeError.removeClass("is-invalid");
19668    oNodeError.find('.invalid-feedback').text('');     
19669    
19670    var oNodeInputListLabel = oNodeDraggable.find('input[name=list-label]');
19671    var oNodeSelect         = oNodeDraggable.find('.ctl-wp-studio-select2-search');
19672
19673    var szLabel = null;
19674    var szValue = null;
19675 	var bValidValue = true;
19676	
19677    if ( oNodeInputListLabel.length > 0 ){
19678        var oNodeInputListValue = oNodeDraggable.find('input[name=list-value]');
19679
19680        szLabel = oNodeInputListLabel.val();
19681        szValue = oNodeInputListValue.val();
19682
19683        oNodeInputListLabel.val('');
19684        oNodeInputListValue.val('');   
19685		
19686		if ( (szLabel === undefined || szLabel.trim() === "") ){    
19687			ctlFormFieldsApplyError(oNodeInputListLabel, g_oCTLFormFieldsLocalizationCommon["Empty field"]);						
19688			bValidValue = false;
19689		}
19690
19691		if ( szValue === undefined || szValue.trim() === "" ){    
19692			ctlFormFieldsApplyError(oNodeInputListValue, g_oCTLFormFieldsLocalizationCommon["Empty field"]);			
19693			bValidValue = false;
19694		}  		
19695    }else if ( oNodeSelect.length > 0 ){
19696        szLabel = oNodeSelect.find("option:selected").text();
19697        szValue = oNodeSelect.val();
19698
19699        oNodeSelect.val(null).trigger('change');
19700
19701		if ( szValue === undefined || szValue.trim() === "" ){
19702			bValidValue = false;
19703			ctlFormFieldsApplyError(oNodeSelect, g_oCTLFormFieldsLocalizationCommon["Empty field"]);
19704		}
19705    }
19706    
19707    if (!bValidValue){
19708        return;
19709    }
19710    
19711    szLabel = szLabel.trim();
19712    szValue = szValue.trim();
19713    
19714    ctlDraggableAddItem(oNodeDraggable, szLabel, szValue); 
19715}
19716
19717function ctlDraggableAddItem(oNodeDraggable, szLabel, szValue, bScroll ){
19718    
19719    var oNodeList      = oNodeDraggable.find("ul");
19720    var oNodeSelect    = oNodeDraggable.find(".ctl-draggable-hidden-select");
19721    let oNodeSelectKey = oNodeDraggable.find(".ctl-draggable-hidden-select-key");
19722    var oNodeError     = oNodeDraggable.find(".draggable-error");    
19723    
19724    szLabel = szLabel.trim();
19725    szValue = szValue.trim();
19726    
19727    if ( oNodeList.hasClass("draggable-list-avoid-duplicates") ){
19728        var bFindDuplicate = false;
19729        oNodeList.find('li').each(function(){
19730            if ( jQuery(this).attr("data-value") === szValue ){
19731                bFindDuplicate = true;
19732            }
19733        });
19734        if ( bFindDuplicate ){
19735            oNodeError.addClass("is-invalid");
19736            oNodeError.find('.invalid-feedback').text(g_oCTLFormFieldsLocalizationCommon["Duplicate value"]);          
19737            return;
19738        }
19739    }
19740    
19741    var html = '';
19742    var guid = g_oCTLWPStudio.makeCode(4);        
19743    html += '<li id="'+ guid +
19744            '" class="draggable-item ctl-wp-studio-noselect list-group-item" data-value="'+szValue+'"';            
19745    if ( oNodeDraggable.attr('data-group') ){
19746        html += ' data-group="' + oNodeDraggable.attr('data-group') + '"';
19747    }            
19748    html += '>';
19749    
19750    html += '<div class="draggable-item-label">'+szLabel+'</div>';
19751    
19752    if ( oNodeList.hasClass('draggable-list-show-values') ){
19753        html += '<div class="draggable-item-value">'+szValue+'</div>';
19754    }
19755    
19756    html += '<div class="draggable-item-actions">';
19757
19758    if ( oNodeList.hasClass('draggable-list-item-editing') ){
19759        html += '<i class="fas fa-pencil-alt draggable-edit-item"></i>';
19760    }    
19761    
19762    if ( oNodeList.hasClass('draggable-list-item-deletion') ){
19763        html += '<i class="fas fa-trash-alt draggable-delete-item"></i>';
19764    }
19765    
19766    html += '</div>';
19767
19768    html += '<div class="draggable-item-extras"></div>';
19769
19770    html += '</li>';
19771    
19772    oNodeList.append(html);
19773    
19774    oNodeSelect.append('<option value="'+szValue+'" selected="selected">'+szLabel+'</option>');
19775    oNodeSelectKey.append('<option value="'+szLabel+'" selected="selected">'+szValue+'</option>');
19776    
19777    oNodeSelect.trigger("change");
19778    
19779    oNodeDraggable.find('input[name=list-label]').val('');
19780    oNodeDraggable.find('input[name=list-value]').val('');
19781    
19782    if (bScroll){
19783        oNodeList.animate({ scrollTop: oNodeList[0].scrollHeight }, 'slow' );      
19784    }
19785}
19786
19787
19788
19789function ctlDraggableItemOnEditItem( oNodeButton ){
19790    var oNodeList      = oNodeButton.closest("ul");
19791    var oNodeItem      = oNodeButton.closest("li");
19792    var oNodeDraggable = oNodeButton.closest(".draggable");
19793    var idDraggable    = oNodeDraggable.attr("id");
19794    var szValue        = oNodeItem.attr("data-value");
19795    
19796    if ( oNodeList.hasClass("draggable-list-custom-editing") ){
19797        jQuery(document).trigger("ctl-draggable-editing", [ oNodeDraggable, oNodeItem, szValue ]);
19798        return;
19799    }
19800    
19801    var html = '';
19802    
19803    html += '<form>';
19804
19805    html += formFieldsBuildHiddenField({
19806        'field-name' : 'draggable-id',
19807    }, idDraggable);    
19808    
19809    html += formFieldsBuildHiddenField({
19810        'field-name' : 'draggable-item-id',
19811    }, oNodeItem.attr("id"));        
19812    
19813    html += formFieldsBuildHiddenField({
19814        'field-name' : 'original-value',
19815    }, szValue);       
19816    
19817    html += formFieldsBuildTextField({
19818        'field-name' : 'option-label',
19819        'label-title' : g_oCTLFormFieldsLocalizationCommon["Option Label"], 
19820        'mandatory' : true,
19821    }, oNodeItem.find(".draggable-item-label").text());    
19822    
19823    html += formFieldsBuildTextField({
19824        'field-name' : 'option-value',
19825        'label-title' : g_oCTLFormFieldsLocalizationCommon["Option Value"], 
19826        'mandatory' : true,
19827    }, szValue);
19828    
19829    html += '</form>';
19830    
19831    g_oCTLBootstrapModals.showModal({
19832        modal_content : html,
19833        position: 'centered',
19834        modal_title : g_oCTLFormFieldsLocalizationCommon["Edit Option"],
19835        footer_buttons:[
19836            '<button class="btn btn-primary btn-draggable-action-edit-option">'+g_oCTLFormFieldsLocalizationCommon["Save Option"]+'</button>'
19837        ]
19838    });
19839}
19840
19841function ctlDraggableItemOnDeleteItem( oNodeButton ){
19842    var oNodeList      = oNodeButton.closest("ul");
19843    var oNodeItem      = oNodeButton.closest("li");
19844    var oNodeDraggable = oNodeButton.closest(".draggable");
19845    var oNodeSelect    = oNodeDraggable.find(".ctl-draggable-hidden-select");
19846    var szValue        = oNodeItem.attr("data-value");
19847    
19848    if ( oNodeList.hasClass("draggable-list-custom-deletion") ){
19849        jQuery(document).trigger("ctl-draggable-deletion", [ oNodeDraggable, oNodeItem, szValue ]);
19850        return;
19851    }
19852    
19853    oNodeItem.fadeOut(500,"linear",function(){
19854        oNodeItem.remove();
19855    });
19856    
19857    oNodeSelect.find("option").each(function(){
19858        if ( jQuery(this).attr("value") === szValue ){
19859            jQuery(this).remove();
19860            oNodeSelect.trigger("change");
19861        } 
19862    });
19863
19864    var oNodeSelectKey = oNodeDraggable.find(".ctl-draggable-hidden-select-key");
19865    oNodeSelectKey.find("option").each(function(){
19866        if ( jQuery(this).attr("value") === szValue ){
19867            jQuery(this).remove();
19868        } 
19869    });
19870}
19871
19872function ctlDraggableItemOnChangeItemValue( oNodeButton ){
19873    var oNodeModal = oNodeButton.closest(".modal");
19874    var oNodeForm  = oNodeModal.find("form");
19875    var oFormData  = oNodeForm.serializeObject();
19876    
19877    if ( ctlFormFieldsCheckIfFormIsFilled(oNodeForm) === false){
19878        return;
19879    }
19880
19881    var idDraggable      = oFormData["draggable-id"];
19882    var idDraggableItem  = oFormData["draggable-item-id"];
19883    var oNodeDraggable   = jQuery("#"+idDraggable);
19884    var oNodeDraggableItem = jQuery("#"+idDraggableItem);
19885    var oNodeList        = oNodeDraggable.find("ul");
19886    var oNodeSelect      = oNodeDraggable.find(".ctl-draggable-hidden-select");    
19887    var szValue          = oFormData['option-value'];
19888    var szLabel          = oFormData['option-label'];
19889    var szOriginalValue  = oFormData['original-value'];
19890    
19891    if ( oNodeList.hasClass("draggable-list-avoid-duplicates") ){
19892
19893        var bFindDuplicate = false;
19894        oNodeList.find('li').each(function(){
19895            if ( jQuery(this).attr("data-value") === szValue &&
19896                 idDraggableItem !== jQuery(this).attr("id")){
19897                bFindDuplicate = true;
19898            }
19899        });
19900
19901        if ( bFindDuplicate ){
19902            ctlFormFieldsApplyErrors(oNodeForm, [
19903                { name : 'option-value',
19904                  desc : g_oCTLFormFieldsLocalizationCommon["Duplicate value"] }
19905            ]);
19906            
19907            return;
19908        }
19909    }
19910
19911    oNodeDraggableItem.attr("data-value", szValue);
19912    oNodeDraggableItem.find(".draggable-item-value").text(szValue);
19913    oNodeDraggableItem.find(".draggable-item-label").text(szLabel);
19914
19915    oNodeSelect.find("option").each(function(){
19916        if ( jQuery(this).attr("value") === szOriginalValue ){
19917            jQuery(this).attr("value", szValue);
19918            jQuery(this).text(szLabel);
19919        }
19920    });
19921
19922    jQuery(document).trigger("ctl-draggable-list-item-change", [ oNodeDraggable, oNodeSelect]);
19923
19924    oNodeModal.modal("hide");    
19925}
19926
19927function ctlDraggableListRemoveItem( oNodeDraggable, szValue ){
19928
19929    oNodeDraggable.find("li").each(function(){
19930        if( jQuery(this).attr("data-value") === szValue ){
19931            jQuery(this).fadeOut(500,"linear",function(){
19932                jQuery(this).remove();
19933            });
19934        }
19935    });
19936
19937    var oNodeSelect = oNodeDraggable.find(".ctl-draggable-hidden-select");    
19938    
19939    oNodeSelect.find("option").each(function(){
19940       if ( jQuery(this).attr("value") === szValue ){
19941           jQuery(this).remove();
19942       } 
19943    });
19944}
19945
19946function ctlDraggableListOnMouseUp( oNodeList, x, y, pageX, pageY ){
19947
19948    var oNodeDraggableDest = oNodeList.closest(".draggable");
19949
19950    oNodeList.removeClass("draggable-list-hover");    
19951    
19952    var oNodeItem = jQuery(".draggable-fixed-item");
19953
19954    if( oNodeItem.length === 0 ){
19955        return;
19956    }
19957    
19958    if ( oNodeList.hasClass("draggable-list-avoid-drop-items") ){
19959        return;
19960    }
19961    
19962    var szDestGroupName   = oNodeDraggableDest.attr("data-group");
19963    var szSourceGroupName = oNodeItem.attr("data-group");
19964    
19965    if ( szDestGroupName !== "" && szDestGroupName !== szSourceGroupName ){
19966        return;
19967    }
19968    
19969    var oNodeHoveredItem = null;
19970    var oNodeAlreadyPresentItem = null;
19971    oNodeList.find('li').each(function(){
19972        if ( jQuery(this).is(":hover") ){
19973            oNodeHoveredItem = jQuery(this);
19974        }
19975        
19976        if ( jQuery(this).attr("id") === oNodeItem.attr("id")){
19977            oNodeAlreadyPresentItem = jQuery(this);
19978        }
19979    });
19980    
19981    if ( oNodeList.hasClass("draggable-list-avoid-duplicates") && !oNodeAlreadyPresentItem ){    
19982        var bFoundDuplicates = false;
19983        oNodeList.find("li").each(function(){
19984            if ( jQuery(this).attr("data-value") === oNodeItem.attr("data-value")){
19985                bFoundDuplicates = true;
19986            }
19987        });
19988        if (bFoundDuplicates){
19989            return;
19990        }
19991    }
19992    
19993    var oNodeCloned = oNodeItem.clone();
19994    oNodeCloned.removeClass("draggable-fixed-item"); 
19995    
19996    if ( oNodeList.hasClass("draggable-list-item-editing")){
19997        oNodeCloned.find(".draggable-item-actions").append('<i class="fas fa-pencil-alt draggable-edit-item"></i>');
19998    }    
19999    
20000    if ( oNodeList.hasClass("draggable-list-item-deletion")){
20001        oNodeCloned.find(".draggable-item-actions").append('<i class="fas fa-tras
20001h-alt draggable-delete-item"></i>');
20002    }
20003    
20004    if ( oNodeList.hasClass('draggable-list-show-values') ){
20005        if ( oNodeCloned.find('.draggable-item-value').length === 0 ){
20006            oNodeCloned.append('<div class="draggable-item-value">'+oNodeCloned.attr("data-value")+'</div>');
20007        }
20008    }else if ( oNodeCloned.find('.draggable-item-value').length === 1 ){
20009        oNodeCloned.find('.draggable-item-value').remove();
20010    }
20011    
20012    oNodeCloned.attr("id", g_oCTLWPStudio.makeCode(4) );
20013    oNodeCloned.css("left", "auto");
20014    oNodeCloned.css("top", "auto");
20015    
20016    oNodeCloned.addClass("list-group-item");
20017        
20018    var iScrollTop = 0;    
20019        
20020  
20021    if ( oNodeHoveredItem &&
20022         (oNodeHoveredItem.attr("data-value") === oNodeCloned.attr("data-value")) ){
20023        iScrollTop = (oNodeHoveredItem.index()) * oNodeHoveredItem.outerHeight();
20024    }else{            
20025        if ( oNodeHoveredItem ){        
20026            if ( (pageY - oNodeHoveredItem.offset().top) < 
20027                  (oNodeHoveredItem.outerHeight()/2) ){
20028                oNodeCloned.insertBefore(oNodeHoveredItem);            
20029            }else{
20030                oNodeCloned.insertAfter(oNodeHoveredItem);
20031            }
20032            iScrollTop = (oNodeCloned.index()) * oNodeCloned.outerHeight();
20033        }else{
20034            oNodeList.append(oNodeCloned);  
20035            iScrollTop = oNodeList[0].scrollHeight; 
20036        }
20037
20038        if ( oNodeAlreadyPresentItem ){
20039            oNodeAlreadyPresentItem.remove();
20040        }    
20041    }
20042
20043    oNodeList.animate({ scrollTop: iScrollTop }, 'slow' );
20044    
20045    var oNodeSelect    = oNodeDraggableDest.find(".ctl-draggable-hidden-select");
20046    var szValue        = oNodeCloned.attr("data-value");  
20047    
20048    oNodeSelect.html("");
20049	
20050	var idDraggable = oNodeCloned.attr("data-draggable-id");
20051    var oNodeDraggableSource = jQuery("#"+idDraggable);
20052    var oNodeSourceList      = oNodeDraggableSource.find("ul");
20053
20054    if ( idDraggable !== oNodeDraggableDest.attr("id") ){    
20055        if ( oNodeSourceList.hasClass("draggable-list-item-removable") ){
20056            var oNodeSourceSelect = oNodeDraggableSource.find(".ctl-draggable-hidden-select");
20057            oNodeSourceSelect.find("option").each(function(){
20058               if ( jQuery(this).attr("value") === szValue ){
20059                   jQuery(this).remove();
20060                   oNodeSourceSelect.trigger("change");
20061               } 
20062            });   
20063            oNodeSourceList.find("li").each(function(){
20064               if ( jQuery(this).attr("data-value") === szValue ){
20065                   jQuery(this).remove();
20066               }             
20067            });
20068        }
20069    }
20070	
20071	
20072    oNodeList.find("li").each(function(){ 
20073        oNodeSelect.append('<option value="'+jQuery(this).attr("data-value")+
20074                '" selected="selected">'+jQuery(this).find(".draggable-item-label").text()+'</option>');
20075        oNodeSelect.trigger("change");
20076    });
20077    
20078    
20079
20080    jQuery(document).trigger("ctl-draggable-list-change", 
20081            [ oNodeCloned, oNodeDraggableDest, oNodeDraggableSource ]);
20082}
20083
20084function ctlDraggableListOnMouseMove( oNodeList, x, y){
20085    var oNodeItem = jQuery(".draggable-fixed-item");
20086
20087    if( oNodeItem.length === 0 ){
20088        return;
20089    }
20090    
20091    var oNodeDraggableDest = oNodeList.closest(".draggable");
20092    var szDestGroupName    = oNodeDraggableDest.attr("data-group");
20093    var szSourceGroupName  = oNodeItem.attr("data-group");
20094    
20095    if ( szDestGroupName !== "" && szDestGroupName !== szSourceGroupName ){
20096        return;
20097    }    
20098    
20099    oNodeList.addClass("draggable-list-hover");
20100}
20101
20102function ctlDraggableListOnMouseOut( oNodeList, x, y){
20103    var oNodeItem = jQuery(".draggable-fixed-item");
20104
20105    if( oNodeItem.length === 0 ){
20106        return;
20107    }
20108
20109    oNodeList.removeClass("draggable-list-hover");    
20110}
20111
20112function ctlDraggableDocumentOnMouseUp( x, y ){
20113    var oNodeItem = jQuery(".draggable-fixed-item");
20114
20115    if( oNodeItem.length === 0 ){
20116        return;
20117    }
20118    
20119    oNodeItem.remove();
20120}
20121
20122function ctlDraggableDocumentOnMouseMove( x, y ){
20123    var oNodeItem = jQuery(".draggable-fixed-item");
20124
20125    if( oNodeItem.length === 0 ){
20126        return;
20127    }
20128
20129    var iOffsetX = Number(oNodeItem.attr("data-offset-x"));
20130    var iOffsetY = Number(oNodeItem.attr("data-offset-y"));
20131
20132    oNodeItem.css("left", (x - iOffsetX)+ "px");
20133    oNodeItem.css("top", (y - iOffsetY) + "px");
20134}
20135
20136function ctlDraggableItemOnMouseDownItem( oNodeItem, x, y, offsetX, offsetY  ){
20137    
20138    var oNodeDraggable = oNodeItem.closest(".draggable");
20139    var oNodeList      = oNodeItem.closest("ul");
20140    
20141    if ( oNodeList.hasClass("draggable-list-avoid-drag") ){
20142        return;
20143    }    
20144    
20145    var oNodeCloned = oNodeItem.clone();
20146    oNodeCloned.find(".draggable-item-actions").html("");
20147
20148    var idDraggable = oNodeDraggable.attr("id");
20149    
20150    oNodeCloned.removeClass("list-group-item");
20151    oNodeCloned.addClass("draggable-fixed-item");
20152    
20153    oNodeCloned.attr("data-draggable-id", idDraggable);
20154    
20155    jQuery("body").append(oNodeCloned);
20156
20157    if ( offsetX > oNodeCloned.outerWidth() ){
20158        offsetX = oNodeCloned.outerWidth()/2;
20159    }
20160    
20161    if ( offsetY > oNodeCloned.outerHeight() ){
20162        offsetY = oNodeCloned.outerHeight()/2;
20163    }    
20164
20165    oNodeCloned.attr("data-offset-x", offsetX);
20166    oNodeCloned.attr("data-offset-y", offsetY);
20167    
20168    oNodeCloned.css("left", (x - offsetX)+ "px");
20169    oNodeCloned.css("top", (y - offsetY) + "px");  
20170}
20171
20172
20173function ctlDraggableSearchInList( oNodeDraggable, szKey ){
20174
20175    szKey = szKey.toLowerCase();
20176
20177    if ( szKey === "" ){
20178        oNodeDraggable.find(".draggable-item").removeClass("d-none");
20179    }else{
20180        oNodeDraggable.find(".draggable-item").addClass("d-none");
20181    }
20182    
20183    oNodeDraggable.find("ul").each(function(){ 
20184        jQuery(this).find(".draggable-item").each(function(){
20185            var szTextData = jQuery(this).find(".draggable-item-label").text().toLowerCase();           
20186            if ( szTextData.indexOf(szKey) !== -1 ){
20187                jQuery(this).removeClass("d-none");
20188            }
20189        });
20190    });    
20191}
20192
20193
20194/* TABLE VALUES */
20195
20196jQuery(document).ready(function(){
20197
20198    jQuery(document).on("input paste change blur", ".table-values-wrapper input", function(){
20199        ctlTableValuesWriteJSONData(jQuery(this).closest(".table-values-wrapper"));
20200    });
20201
20202    jQuery(".ctltablevaluesfield .table-values-wrapper").each(function(){
20203        ctlTableValuesInit(jQuery(this));
20204    });
20205
20206    jQuery(document).on("click",'.ctl-table-values-delete-row', function(){        
20207        var oNodeTableValuesWrapper = jQuery(this).closest(".table-values-wrapper");
20208        var oNodeRow = jQuery(this).closest(".row");      
20209        
20210        oNodeTableValuesWrapper.attr("data-rows", Number(oNodeTableValuesWrapper.attr("data-rows"))-1);    
20211        
20212        oNodeRow.fadeOut(500,"linear",function(){
20213            oNodeRow.remove();
20214            if ( oNodeTableValuesWrapper.find(".row").length < 2 ){
20215                ctlTableValuesAddRow(oNodeTableValuesWrapper);
20216            }else{
20217                ctlTableValuesWriteJSONData(oNodeTableValuesWrapper);
20218            }                
20219        });        
20220            
20221    });
20222    
20223    jQuery(document).on("click", ".ctl-table-values-delete-col", function(){
20224        ctlTableValuesDeleteCol(jQuery(this).closest(".col"));
20225    });
20226    
20227    jQuery(document).on('click', '.table-values-empty-table', function(){
20228        var oNodeTableValuesWrapper = jQuery(this).closest(".table-values-wrapper");
20229        var oNodeTableValuesContent = oNodeTableValuesWrapper.find(".table-values-content");
20230        oNodeTableValuesWrapper.attr("data-rows", "0");
20231        oNodeTableValuesWrapper.attr("data-cols", "0");
20232        oNodeTableValuesContent.html("");        
20233        
20234        ctlTableValuesAddRow(oNodeTableValuesWrapper);
20235    });
20236    
20237    jQuery(document).on('click', '.table-values-add-rows', function(){
20238        ctlTableValuesAddRow(jQuery(this).closest(".table-values-wrapper"));
20239    });
20240    
20241    jQuery(document).on('click', '.table-values-add-cols', function(){
20242        ctlTableValuesAddCol(jQuery(this).closest(".table-values-wrapper"));
20243    });    
20244
20245});
20246
20247function ctlTableValuesWriteJSONData( oNodeTableValuesWrapper ){
20248    
20249    var aData   = [];
20250    var aLabels = [];
20251    var bErrorCols  = false;
20252    var bErrorEmptyValues  = false;    
20253    
20254    var oNodeTableValuesMain     = oNodeTableValuesWrapper.closest(".ctltablevaluesfield");    
20255    var bAllColValuesMandatories = oNodeTableValuesMain.hasClass("validate-col-values-mandatories");
20256    
20257    oNodeTableValuesWrapper.find(".row").each(function(){  
20258        
20259        if ( jQuery(this).hasClass("col-controller") ){
20260            jQuery(this).find(".col").each(function(){                
20261                if ( jQuery(this).hasClass("cell-blank")){
20262                    return;
20263                }            
20264                
20265                var szLabel = jQuery(this).find("input").val();
20266
20267                if ( !szLabel ){
20268                    bErrorCols = true;
20269                }
20270                
20271                aLabels.push(szLabel);
20272            });
20273        }else{
20274            var aRowData = {};
20275
20276            jQuery(this).find(".col").each(function(){
20277                
20278                if ( jQuery(this).hasClass("row-controller")){
20279                    return;
20280                }
20281
20282                var indexCol = Number(jQuery(this).index())-1;
20283
20284                aRowData[aLabels[indexCol]] = jQuery(this).find("input").val();
20285                
20286                if (!aRowData[aLabels[indexCol]] && bAllColValuesMandatories){
20287                    bErrorEmptyValues = true;
20288                }
20289            });   
20290            aData.push(aRowData);
20291        }
20292    });
20293
20294
20295    var oNodeTextarea = oNodeTableValuesMain.find("textarea");
20296    var szValue = JSON.stringify(aData);
20297    oNodeTextarea.val(szValue);   
20298
20299    if ( bErrorCols || bErrorEmptyValues ){
20300        oNodeTableValuesMain.addClass("is-invalid");
20301        oNodeTextarea.addClass("is-invalid");
20302        
20303        var szErrors = "";
20304        
20305        if ( bErrorCols ){
20306            szErrors += '<p>' + g_oCTLFormFieldsLocalizationCommon["Column names cannot be empty"] + '</p>';
20307        }
20308        if ( bErrorEmptyValues ){
20309            szErrors += '<p>' + g_oCTLFormFieldsLocalizationCommon["Values cannot be empty"] + '</p>';
20310        }        
20311        
20312        oNodeTableValuesMain.find(".invalid-feedback").html(szErrors);
20313        
20314        jQuery(document).trigger("ctl-table-values-error", [ oNodeTableValuesMain, oNodeTextarea, szValue ]);
20315    }else{
20316        oNodeTableValuesMain.removeClass("is-invalid");
20317        oNodeTextarea.removeClass("is-invalid");
20318        oNodeTableValuesMain.find(".invalid-feedback").html("");
20319        
20320        jQuery(document).trigger("ctl-table-values-change", [ oNodeTableValuesMain, oNodeTextarea, szValue ]);
20321    }
20322}
20323
20324function ctlTableValuesDeleteCol( oNodeCol ){
20325    var oNodeTableValuesWrapper = oNodeCol.closest(".table-values-wrapper");
20326    var indexCol = oNodeCol.index();
20327    
20328    oNodeTableValuesWrapper.find(".row").each(function(){
20329        var oNodeCol = jQuery(this).find('.col:nth-child(' + (indexCol+1)+ ')');
20330        oNodeCol.fadeOut(500,"linear",function(){
20331            oNodeCol.remove();
20332                
20333            if ( oNodeTableValuesWrapper.find(".row.col-controller").find(".col").length < 2 ){
20334                ctlTableValuesAddCol(oNodeTableValuesWrapper);
20335            }else{
20336                ctlTableValuesWriteJSONData(oNodeTableValuesWrapper);
20337            }            
20338        });         
20339    });
20340    
20341    oNodeTableValuesWrapper.attr("data-cols", Number(oNodeTableValuesWrapper.attr("data-cols"))-1);
20342
20343}
20344
20345function ctlTableValuesAddCol( oNodeTableValuesWrapper ){
20346   
20347    var oNodeTableValuesMain = oNodeTableValuesWrapper.closest(".ctltablevaluesfield");        
20348    var oNodeTableValuesContent = oNodeTableValuesWrapper.find(".table-values-content");
20349    var iCurRows = Number(oNodeTableValuesWrapper.attr("data-rows"));
20350    var iCurCols = Number(oNodeTableValuesWrapper.attr("data-cols"));
20351
20352    if ( iCurRows === 0 ){
20353        ctlTableValuesAddRow(oNodeTableValuesWrapper);
20354        return;
20355    }
20356    
20357    var szBtnStyle = oNodeTableValuesMain.hasClass("btn-outlined") ? 'outline-' : '';
20358
20359    oNodeTableValuesContent.find(".row").each(function(){
20360        var guid = g_oCTLWPStudio.makeCode(8);          
20361        var oNodeRow = jQuery(this);
20362        var html = '<div id="'+guid+'" class="col">';
20363
20364        if ( oNodeRow.hasClass('col-controller') ){
20365            html += '<div class="input-group input-group-sm">';
20366              html += '<div class="input-group-prepend">';
20367                html += '<button class="btn btn-'+szBtnStyle+'danger ctl-table-values-delete-col" type="button"><i class="ctl-wp-studio-icons-trash"></i></button>';
20368              html += '</div>';
20369              html += '<input type="text" class="form-control" placeholder="...">';
20370            html += '</div>';            
20371        }else{
20372            html += '<input type="text" class="form-control form-control-sm" placeholder="...">';
20373        }
20374
20375        oNodeRow.append(html);
20376        html += '</div>';
20377    });
20378
20379    iCurCols++;
20380    oNodeTableValuesWrapper.attr("data-cols",iCurCols);  
20381    ctlTableValuesWriteJSONData(oNodeTableValuesWrapper);
20382}
20383
20384function ctlTableValuesAddRow(oNodeTableValuesWrapper){
20385    
20386    var oNodeTableValuesMain = oNodeTableValuesWrapper.closest(".ctltablevaluesfield");      
20387    var oNodeTableValuesContent = oNodeTableValuesWrapper.find(".table-values-content");
20388    var iCurRows = Number(oNodeTableValuesWrapper.attr("data-rows"));
20389    var iCurCols = Number(oNodeTableValuesWrapper.attr("data-cols"));
20390    var szBtnStyle = oNodeTableValuesMain.hasClass("btn-outlined") ? 'outline-' : '';
20391    
20392    if ( iCurRows === 0  && jQuery(".row.col-controller").length === 0 ){
20393        oNodeTableValuesContent.append('<div class="row col-controller"></div>');
20394        oNodeTableValuesContent.find(".col-controller").prepend('<div class="col cell-blank">');   
20395    }
20396    
20397    var guid = g_oCTLWPStudio.makeCode(8);  
20398    oNodeTableValuesContent.append('<div id="'+guid+'" class="row"></div>');
20399
20400    iCurRows++;
20401    oNodeTableValuesWrapper.attr("data-rows",iCurRows);
20402
20403    //----------------------------------
20404    // ROW CONTROLLER
20405    var guidRowController = g_oCTLWPStudio.makeCode(8);
20406    var htmlRowController = '<div id="'+guidRowController+'" class="col row-controller">';
20407    htmlRowController += '<button class="btn btn-'+szBtnStyle+'danger btn-xs ctl-table-values-delete-row" type="button"><i class="ctl-wp-studio-icons-trash"></i></button>';
20408    htmlRowController += '</div>';        
20409    jQuery("#"+guid).append(htmlRowController);           
20410    //----------------------------------
20411
20412    for ( var i = 0; i < iCurCols; i++ ){
20413        var guidCol = g_oCTLWPStudio.makeCode(8);        
20414        var html = '';
20415        html += '<div id="'+guidCol+'" class="col">';
20416        html += '<input type="text" class="form-control form-control-sm" placeholder="...">';
20417        html += '</div>';
20418        jQuery("#"+guid).append(html);
20419    }    
20420
20421    if ( iCurCols === 0 ){
20422        ctlTableValuesAddCol(oNodeTableValuesWrapper);
20423        iCurCols++;
20424    }       
20425    ctlTableValuesWriteJSONData(oNodeTableValuesWrapper);    
20426}
20427
20428function ctlTableValuesInit( oNodeTableValues ){
20429    
20430    var oNodeTableValuesMain = oNodeTableValues.closest(".ctltablevaluesfield");      
20431    var szBtnStyle = oNodeTableValuesMain.hasClass("btn-outlined") ? 'outline-' : '';    
20432    
20433    var html = "";
20434    
20435    html += '<div class="table-values-header-actions mb-2">';
20436        html += '<button type="button" class="btn btn-xs btn-'+szBtnStyle+'primary table-values-add-rows mr-2">';
20437            html += '<i class="fas fa-plus mr-2"></i>' + g_oCTLFormFieldsLocalizationCommon["add rows"];
20438        html += '</button>';
20439        html += '<button type="button" class="btn btn-xs btn-'+szBtnStyle+'primary table-values-add-cols mr-2">';
20440            html += '<i class="fas fa-plus mr-2"></i>' + g_oCTLFormFieldsLocalizationCommon["add cols"];
20441        html += '</button>';  
20442        html += '<button type="button" class="btn btn-xs btn-'+szBtnStyle+'danger table-values-empty-table float-right">';
20443            html += '<i class="fas fa-trash-alt mr-2"></i>' + g_oCTLFormFieldsLocalizationCommon["empty table"];
20444        html += '</button>';          
20445    html += '</div>'; 
20446    
20447    html += '<div class="table-values-content rounded container-fluid mb-2">';
20448    html += '</div>'; 
20449    
20450    oNodeTableValues.html(html);
20451    
20452    var oNodeTableValuesMain = oNodeTableValues.closest(".ctltablevaluesfield");
20453    var oNodeTextarea = oNodeTableValuesMain.find("textarea");    
20454    
20455    var szData = oNodeTextarea.val();
20456
20457    if ( g_oCTLWPStudio.isJsonString(szData) ){
20458        var aData = JSON.parse(szData);  
20459
20460        if ( aData && Array.isArray(aData) && aData.length > 0 ){
20461            var oRow = aData[0];
20462            for ( var key in oRow ){
20463                ctlTableValuesAddCol(oNodeTableValues); 
20464            }
20465
20466            for ( var i = 0; i < aData.length-1; i++ ){
20467                ctlTableValuesAddRow(oNodeTableValues); 
20468            }    
20469            
20470            var k = 1;
20471            for ( var key in oRow ){
20472                var oNodeHeaderRow = oNodeTableValues.find(".row.col-controller");                
20473                oNodeHeaderRow.find(".col").eq(k).find("input").val(key);
20474                k++;
20475            }
20476            for ( var i = 0; i < aData.length; i++ ){
20477                var k = 1;     
20478                var oRowData = aData[i];
20479                var oNodeRow = oNodeTableValues.find(".row").eq(i+1);
20480                for ( var key in oRow ){
20481                    oNodeRow.find(".col").eq(k).find("input").val(oRowData[key]);
20482                    k++;
20483                }
20484            }    
20485
20486            oNodeTableValuesMain.removeClass("is-invalid");
20487            oNodeTextarea.removeClass("is-invalid");
20488            oNodeTableValuesMain.find(".invalid-feedback").text("");
20489            
20490        }else{
20491            ctlTableValuesAddRow(oNodeTableValues);    
20492        }        
20493    }else{
20494        ctlTableValuesAddRow(oNodeTableValues);            
20495    }
20496    
20497    ctlTableValuesWriteJSONData(oNodeTableValuesMain);
20498}
20499
20500function formFieldsBuildHtmlField( oConfig, szHtml, szDefaultValue = ""){
20501            
20502    var oDefault = {
20503        "label-title" : "",
20504        "label-description" : "",                
20505        "field-name" : "",
20506        "mandatory" : false,
20507        "display" : 12,
20508        "label-align" : "left",
20509        "label-v-align" : "",
20510        "align-value" : "left",
20511        "classes" : "",    
20512        "control-classes" : "",
20513        "wrapper-classes" : "",
20514        "mandatory-on-label" : true,
20515        "floating-label"     : false,    
20516        "widget-id"          : 0,            
20517    };
20518    
20519    oConfig = jQuery.extend(oDefault, oConfig);    
20520
20521    var guid = "";
20522    if (oConfig["field-name"]){
20523        guid = oConfig["field-name"] + "-";    
20524    }
20525    guid += g_oCTLWPStudio.makeCode(4);  
20526    
20527    var iDisplay = Number(oConfig["display"]);
20528    
20529    var html = "";
20530
20531    szFormGroupClasses = "form-group";
20532    szLabelClasses = "ctl-form-field-label";
20533    szFormControlClasses = 'ctl-wp-studio-form-control-wrapper';
20534    
20535    szFormControlClasses += " ctlhtmlfield";
20536    szFormControlClasses += " text-" + oConfig["align-value"];
20537
20538    if( oConfig["mandatory"] ){
20539        szFormControlClasses += " mandatory";
20540        
20541        if ( oConfig["mandatory-on-label"]){
20542            szFormGroupClasses += " mandatory-on-label";
20543        }                
20544    }
20545    
20546    if( oConfig["classes"] ){
20547        szFormControlClasses += " " + oConfig["classes"];
20548    }
20549    
20550    if ( oConfig["floating-label"] && iDisplay == 12 ){                
20551        szFormGroupClasses += " floating-label";
20552          
20553        oConfig["label-align"]      = "left";
20554        
20555        if ( szDefaultValue ){
20556            szFormGroupClasses += " floating-label-normal";
20557        }
20558    }                
20559
20560    if( oConfig["control-classes"] ){
20561        szFormControlClasses += " " + oConfig["control-classes"];
20562    }     
20563    
20564    if( oConfig["wrapper-classes"] ){
20565        szFormGroupClasses += " " + oConfig["wrapper-classes"];
20566    }                
20567
20568    switch(iDisplay){
20569        case 12:{
20570            szLabelClasses += " d-block";
20571        }break;
20572        case 10:{
20573            szFormGroupClasses+= " row";
20574            szLabelClasses += " col col-12 col-sm-10";
20575            szFormControlClasses += " col col-12 col-sm-2";
20576            
20577            if ( oConfig["label-v-align"]){
20578                szFormGroupClasses += " " + oConfig["label-v-align"];
20579            }                    
20580        }break;
20581        case 9:{
20582            szFormGroupClasses+= " row";
20583            szLabelClasses += " col col-12 col-sm-9";
20584            szFormControlClasses += " col col-12 col-sm-3";
20585
20586            if ( oConfig["label-v-align"]){
20587                szFormGroupClasses += " " + oConfig["label-v-align"];
20588            }                                
20589        }break;
20590        case 6:{
20591            szFormGroupClasses+= " row";
20592            szLabelClasses += " col col-12 col-sm-6";
20593            szFormControlClasses += " col col-12 col-sm-6";
20594            
20595            if ( oConfig["label-v-align"]){
20596                szFormGroupClasses += " " + oConfig["label-v-align"];
20597            }                                
20598        }break;
20599        case 3:{
20600            szFormGroupClasses+= " row";
20601            szLabelClasses += " col col-12 col-sm-3";
20602            szFormControlClasses += " col col-12 col-sm-9";
20603            
20604            if ( oConfig["label-v-align"]){
20605                szFormGroupClasses += " " + oConfig["label-v-align"];
20606            }                                
20607        }break;  
20608        case 2:{
20609            szFormGroupClasses+= " row";
20610            szLabelClasses += " col col-12 col-sm-2";
20611            szFormControlClasses += " col col-12 col-sm-10";
20612            
20613            if ( oConfig["label-v-align"]){
20614                szFormGroupClasses += " " + oConfig["label-v-align"];
20615            }                                
20616        }break;     
20617        case -1:{
20618            szFormGroupClasses += " d-inline-block";
20619            szLabelClasses += " col col-auto d-inline-block pr-0";
20620            szFormControlClasses += " col col-auto d-inline-block";
20621            
20622            if ( oConfig["label-v-align"]){
20623                szFormGroupClasses += " " + oConfig["label-v-align"];
20624            }                                
20625        }break;            
20626    }
20627    
20628    szLabelClasses += " text-" + oConfig["label-align"];
20629    
20630    html+= '<div class="' + szFormGroupClasses + '"';
20631    if ( oConfig["widget-id"]){                
20632        html+= ' widget-id="' + oConfig["widget-id"] + '"';
20633    }    
20634    html += '>';
20635
20636    if ( oConfig["label-title"] != "" || 
20637        (iDisplay != 12 && iDisplay != "inline-block" && iDisplay != -1)){
20638        html+= '<legend class="' + szLabelClasses + '" for="' + guid + '">' + oConfig["label-title"] + '</legend>';
20639    }
20640
20641    html+= '<fieldset class="' + szFormControlClasses + '">';
20642    
20643    html += szHtml;
20644
20645    if ( oConfig["label-description"] ){
20646        html+= '<small class="ctl-form-field-description">' + oConfig["label-description"] + '</small>';
20647    }
20648    
20649    html+= '<div class="invalid-feedback text-' + oConfig["label-align"] + '"></div>';
20650    
20651    html+= '</div>';
20652
20653    html+= '</fieldset>';
20654
20655    
20656    
20657    return html;
20658}   
20659
20660function formFieldsBuildDraggableListField(oConfig, aValues ){
20661    oDefault = {
20662        "orientation"     : "v",                
20663        "removable-items" : false,
20664        "delete-items"    : false,
20665        "edit-items"      : false,
20666        "custom-deletion" : false,
20667        "custom-editing"  : false,
20668        "dataset"         : "fixed",
20669        "field-name"        : "",
20670        "field-name-key"    : "",
20671        "avoid-duplicates"  : true,
20672        "avoid-drag-items"  : false,
20673        "label-title"       : "",
20674        "label-description" : "",
20675        "avoid-drop-items"  : false,
20676        "search-in-list"    : false,
20677        "show-values"       : false,
20678        "classes"           : '',                
20679        "list-height"       : 0,
20680        "list-max-height"   : 200,
20681        "group-name"        : "",
20682        "manually-add-items" : false,                    
20683        "label-search"       : g_oCTLFormFieldsLocalizationCommon["Search..."],
20684        "widget-id"          : 0,
20685        "mandatory"          : false,
20686        "mandatory-on-label" : true,
20687    };
20688    
20689    oConfig = jQuery.extend(oDefault, oConfig);    
20690
20691    var guid = "";
20692    if (oConfig["field-name"]){
20693        guid = oConfig["field-name"] + "-";    
20694    }
20695    guid += g_oCTLWPStudio.makeCode(4);  
20696
20697    iDisplay = oConfig["display"];
20698
20699    
20700    szClasses = "draggable form-group";
20701    
20702    if (oConfig["classes"]){
20703        szClasses += ' ' + oConfig["classes"];
20704    }
20705    
20706    if (oConfig["group-name"]){
20707        szClasses += ' ' + oConfig["group-name"];
20708    }            
20709    
20710    html = '';
20711    html += '<div id="' + guid + '" class="' + szClasses + '"';
20712    
20713    if (oConfig["group-name"]){
20714        html += ' data-group="' + oConfig["group-name"] + '"';
20715    }  
20716    
20717    html +='>';
20718
20719    szFormGroupClasses = "form-group";
20720    szLabelClasses     = "ctl-form-field-label";
20721    szFormControlClasses = 'ctl-wp-studio-form-control-wrapper';            
20722    szFormControlClasses += " ctldraglistfield";
20723
20724    if( oConfig["mandatory"] ){
20725        szFormControlClasses += " mandatory";
20726
20727        if ( oConfig["mandatory-on-label"] ){
20728            szFormGroupClasses += " mandatory-on-label";
20729        }        
20730    }
20731
20732    switch(iDisplay){
20733        case 12:{
20734            szLabelClasses += " d-block";
20735        }break;
20736        case 10:{
20737            szFormGroupClasses+= " row";
20738            szLabelClasses += " col col-12 col-sm-10";
20739            szFormControlClasses += " col col-12 col-sm-2";
20740
20741            if ( oConfig["label-v-align"]){
20742                szFormGroupClasses += " " + oConfig["label-v-align"];
20743            }                        
20744        }break;
20745        case 9:{
20746            szFormGroupClasses+= " row";
20747            szLabelClasses += " col col-12 col-sm-9";
20748            szFormControlClasses += " col col-12 col-sm-3";
20749            if ( oConfig["label-v-align"]){
20750                szFormGroupClasses += " " + oConfig["label-v-align"];
20751            }                        
20752        }break;
20753        case 6:{
20754            szFormGroupClasses+= " row";
20755            szLabelClasses += " col col-12 col-sm-6";
20756            szFormControlClasses += " col col-12 col-sm-6";
20757            
20758            if ( oConfig["label-v-align"]){
20759                szFormGroupClasses += " " + oConfig["label-v-align"];
20760            }                        
20761        }break;
20762        case 3:{
20763            szFormGroupClasses   += " row";
20764            szLabelClasses       += " col col-12 col-sm-3";
20765            szFormControlClasses += " col col-12 col-sm-9";
20766            
20767            if ( oConfig["label-v-align"] ){
20768                szFormGroupClasses += " " + oConfig["label-v-align"];
20769            }                        
20770        }break;  
20771        case 2:{
20772            szFormGroupClasses   += " row";
20773            szLabelClasses       += " col col-12 col-sm-2";
20774            szFormControlClasses += " col col-12 col-sm-10";
20775            
20776            if ( oConfig["label-v-align"] ){
20777                szFormGroupClasses += " " + oConfig["label-v-align"];
20778            }                        
20779        }break;  
20780        case -1:{
20781            szFormGroupClasses   += " d-inline-block";
20782            szLabelClasses       += " col col-auto d-inline-block pr-0";
20783            szFormControlClasses += " col col-auto d-inline-block";
20784            
20785            if ( oConfig["label-v-align"] ){
20786                szFormGroupClasses += " " + oConfig["label-v-align"];
20787            }                        
20788        }break;
20789        case "inline-block":{
20790            szLabelClasses       += " col col-auto d-inline-block";
20791            szFormControlClasses += " col col-auto d-inline-block";
20792        }break;              
20793    }
20794
20795    html += '<div class="' + szFormGroupClasses + '"';
20796    if ( oConfig["widget-id"] ){                
20797        html+= ' widget-id="' + oConfig["widget-id"] + '"';
20798    }    
20799    html += '>';
20800
20801    if ( oConfig["label-title"] ){
20802       html += '<label class="' + szLabelClasses + '">' + oConfig["label-title"] + '</label>'; 
20803    }
20804
20805    html+= '<div class="' + szFormControlClasses + '">';
20806
20807    
20808    if ( oConfig['search-in-list'] ){                
20809        id = g_oCTLWPStudio.makeCode(4);
20810        html += '<div class="input-group input-group-sm mb-3 draggable-search-in-list">';
20811
20812        html += '<div class="input-group-prepend">';
20813            html += '<span class="input-group-text"><i class="ctl-wp-studio-icons-search"></i></span>';
20814        html += '</div>';                
20815        
20816          html += '<input type="text" class="form-control draggable-action-search-in-list" placeholder="'.
20817                oConfig['label-search'] +
20818                  '" aria-describedby="' + id + '" />';
20819          html += '<div class="input-group-append">';
20820            html += '<button class="btn btn-primary btn-cancel-search" type="button" id="' + id + 
20821                    '"><i class="ctl-wp-studio-icons-cancel"></i></button>';
20822          html += '</div>';
20823        html += '</div>';
20824    }            
20825    
20826    szListClasses = 'draggable-list-' + oConfig["orientation"];
20827    
20828    szListClasses += ' list-group';
20829    
20830    if ( oConfig["removable-items"]){
20831        szListClasses+= ' draggable-list-item-removable'; 
20832    }
20833    
20834    if ( oConfig["delete-items"]){
20835        szListClasses+= ' draggable-list-item-deletion'; 
20836    }   
20837    
20838    if ( oConfig["edit-items"]){
20839        szListClasses+= ' draggable-list-item-editing'; 
20840    }               
20841    
20842    if ( oConfig["custom-deletion"]){
20843        szListClasses+= ' draggable-list-custom-deletion'; 
20844    }   
20845    
20846    if ( oConfig["custom-editing"]){
20847        szListClasses+= ' draggable-list-custom-editing'; 
20848    }               
20849    
20850    if ( oConfig["avoid-duplicates"]){
20851        szListClasses+= ' draggable-list-avoid-duplicates'; 
20852    }  
20853    
20854    if ( oConfig["avoid-drag-items"]){
20855        szListClasses+= ' draggable-list-avoid-drag'; 
20856    }              
20857
20858    if ( oConfig["avoid-drop-items"]){
20859        szListClasses+= ' draggable-list-avoid-drop-items'; 
20860    }              
20861    
20862    if ( oConfig["show-values"]){
20863        szListClasses+= ' draggable-list-show-values'; 
20864    }
20865
20866    if ( oConfig["draggable-sm"]){
20867        szListClasses+= ' draggable-sm'; 
20868    }
20869    
20870    var szFieldName = oConfig["field-name"];
20871    if ( oConfig["field-name"].indexOf("[]") === -1 ){
20872        szFieldName += "[]";
20873    }
20874
20875    htmlSelect = "";
20876
20877    if ( !oConfig["field-name"].endsWith("[]") ){
20878        htmlSelect += '<input type="hidden" name="' + oConfig["field-name"] + '-hidden" value="1" />';        
20879    }else{
20880        htmlSelect += '<input type="hidden" name="' + oConfig["field-name"].replace("[]","") + '-hidden" value="1" />';
20881    }
20882
20883    htmlSelect += '<select name="' + szFieldName + '" class="d-none ctl-draggable-hidden-select" multiple>';        
20884    
20885    let szFieldNameKey = oConfig["field-name-key"];
20886    if ( szFieldNameKey.indexOf("[]") === -1 ){
20887        szFieldNameKey += "[]";
20888    }
20889
20890    bSelectedKey = false;
20891
20892
20893    if ( empty(szFieldNameKey) && !empty(szFieldName) ){
20894        szFieldNameKey = szFieldName + '-key[]';
20895    }
20896        
20897    bSelectedKey = false;
20898    if(!empty(szFieldNameKey)){
20899        htmlSelectKey = "";
20900
20901        if ( !oConfig["field-name-key"].endsWith("[]") ){
20902            htmlSelectKey += '<input type="hidden" name="'+oConfig["field-name-key"]+'-hidden" value="1" />';
20903        }else{
20904            htmlSelectKey += '<input type="hidden" name="'+oConfig["field-name-key"].replace("[]","")+'-hidden" value="1" />';
20905        }
20906
20907        htmlSelectKey += '<select name="'+szFieldNameKey + '" class="d-none ctl-draggable-hidden-select-key" multiple>';   
20908        bSelectedKey = true;         
20909    }
20910
20911
20912
20913    html += '<ul class="' + szListClasses + '"';
20914    
20915    if ( oConfig["list-height"] || oConfig["list-max-height"] ){                
20916        html += ' style="';
20917        
20918        if ( oConfig["list-height"] ){
20919           html += ' height: ' + oConfig["list-height"] + 'px;';
20920        }
20921        if ( oConfig["list-max-height"] ){
20922           html += ' max-height: ' + oConfig["list-max-height"] + 'px;';
20923        }       
20924        
20925        html += '"';
20926    }
20927
20928    html += '>';
20929    
20930    if (aValues){
20931		for( var i = 0; i < aValues.length; i++ ){
20932		    var oValue = aValues[i];
20933  
20934            guid = g_oCTLWPStudio.makeCode(16);
20935            
20936            oValue = formFieldsUnpackSelectItemData(oValue);                                  
20937            
20938            szClasses = 'draggable-item ctl-wp-studio-noselect';
20939            
20940            szClasses += ' list-group-item';
20941            
20942            if (oConfig["group-name"]){
20943                szClasses += ' ' + oConfig["group-name"];
20944            }                     
20945       
20946            htmlSelect += '<option selected="selected" value="' + oValue["value"] + '">' + oValue["label"] + '</option>';
20947            if(bSelectedKey){
20948                htmlSelectKey += '<option selected="selected" value="'+oValue["label"]+'">'+oValue["value"]+'</option>';
20949            }
20950        
20951            html += '<li id="' + guid + '" class="' + szClasses + '" data-value="' + oValue["value"] + '"';
20952            
20953            if (oConfig["group-name"]){
20954                html += ' data-group="' + oConfig["group-name"] + '"';
20955            }  
20956            
20957            html +='>';
20958            
20959            iCntSpacing = 0;
20960            if ( oConfig["edit-items"]){
20961                iCntSpacing++;
20962            }
20963            if ( oConfig["delete-items"]){
20964                iCntSpacing++;
20965            }                
20966            
20967            html += '<div class="draggable-item-label draggable-spacing-' + iCntSpacing + '">' + oValue["label"] + '</div>';
20968            
20969            if ( oConfig["show-values"]){
20970                html += '<div class="draggable-item-value draggable-spacing-' + iCntSpacing + '"">' + oValue["value"] + '</div>';
20971            }
20972    
20973            html += '<div class="draggable-item-actions">';
20974            if ( oConfig["edit-items"]){
20975                html += '<i class="fas fa-pencil-alt draggable-edit-item"></i>';
20976            }
20977            
20978            if ( oConfig["delete-items"]){
20979                html += '<i class="fas fa-trash-alt draggable-delete-item"></i>';
20980            }
20981            html += '</div>';
20982            
20983            html += '<div class="draggable-item-extras"></div>';
20984                    
20985            html += '</li>';
20986        }
20987    }
20988
20989
20990    html += '</ul>';
20991    
20992    htmlSelect += '</select>';
20993    html += htmlSelect;
20994
20995    if(bSelectedKey){
20996        htmlSelectKey += '</select>';
20997        html += htmlSelectKey;
20998    }
20999
21000    if ( oConfig["manually-add-items"] ){
21001        html += '<div class="draggable-manually-add-items mt-2 border rounded px-3 pt-3">';
21002
21003        iButtonsDisplay = 12;
21004
21005        switch(oConfig["dataset"]){
21006            case "cpt":{                        
21007                oConfigSelect2 = array();
21008                oConfigSelect2["enable-select2"] = false;
21009                oConfigSelect2["classes"]        = "ctl-wp-studio-select2-search";
21010                oConfigSelect2["data-attr"]      = 
21011                    'data-type-search="QUERY_SET_FILTER_CUSTOM_POST_TYPE" data-custom-post-type="' + 
21012                                                                                     oConfig['cpt']  +'"';
21013
21014                if ( oConfig["cpt-search-enable-image"] ){
21015                    oConfigSelect2["data-attr"] += ' data-get-image="1"'; 
21016                } 
21017                oConfigSelect2["label-suggestion"] = g_oCTLFormFieldsLocalizationCommon["Search..."];
21018
21019                html += formFieldsBuildSelectField(oConfigSelect2);
21020
21021            }break;
21022            case "fixed":{
21023
21024                iButtonsDisplay = 3;
21025
21026                html += formFieldsBuildTextField({
21027                    'label-title' : g_oCTLFormFieldsLocalizationCommon["Item Label"],
21028                    'field-name' : 'list-label',
21029                    'classes' : 'form-control-sm',
21030                    'display':iButtonsDisplay,
21031                });
21032                html += formFieldsBuildTextField({
21033                    'label-title' : g_oCTLFormFieldsLocalizationCommon["Item Value"],
21034                    'field-name'  : 'list-value',
21035                    'classes'     : 'form-control-sm',
21036                    'display'     : iButtonsDisplay,
21037                });     
21038            }break;
21039        }
21040
21041        htmlButtons = "";
21042        htmlButtons += formFieldsBuildButtonField({
21043            'button-title' : g_oCTLFormFieldsLocalizationCommon["add value"],
21044            'display'      : 'inline-block',
21045            'classes'      : 'btn-xs draggable-add-value mr-2',
21046    });  
21047        htmlButtons += formFieldsBuildButtonField({
21048            'button-title'   : g_oCTLFormFieldsLocalizationCommon["empty list"],
21049            'display'        : 'inline-block',
21050            'semantic-color' : 'secondary',
21051            'classes'        : 'btn-xs draggable-empty-list',
21052        });   
21053
21054        html += formFieldsBuildHtmlField({
21055                "display" : iButtonsDisplay, 
21056            }, htmlButtons
21057        );                                    
21058    }
21059    
21060    if ( oConfig["label-description"] ){
21061        html+= '<small class="ctl-form-field-description">' + oConfig["label-description"] + '</small>';
21062    }            
21063    
21064    html += '</div>'; 
21065
21066    html+= '<div class="draggable-error">';   
21067        html+= '<div class="invalid-feedback"></div>';
21068    html += '</div>';   
21069
21070    html += '</div>'; 
21071    
21072    html += '</div>'; 
21073            
21074    return html;                    
21075}
21076
21077function ctlSignatureFormControl( oNodeParent = null ){
21078
21079    if ( !oNodeParent ){
21080        oNodeParent = jQuery("body");
21081    }
21082
21083    if(oNodeParent.find('.ctlsignaturefield').length < 1){
21084        return;
21085    }
21086
21087    oNodeParent.find('.ctl-signature-iframe').each(function(){
21088        let oSignatureIFrameContainer = jQuery(this).closest('.ctl-signature-iframe-container');
21089        let oNodeSignatureField = oSignatureIFrameContainer.closest(".ctlsignaturefield");
21090        let oNodeTextarea = oNodeSignatureField.find("textarea");
21091
21092        let szStrokeColor = jQuery(this).data('stroke-color');
21093        let szStrokeWidth = jQuery(this).data('stroke-width');
21094
21095        jQuery(this.contentWindow).on('load',function(){
21096            var oContentWindow = this;
21097            var oEraseButton      = oSignatureIFrameContainer.find('.ctl-form-field-erase-signature').first();
21098            var oColorField       = oSignatureIFrameContainer.find('.ctl-form-field-color-signature').first();
21099            var oStrokeWidthField = oSignatureIFrameContainer.find('.ctl-form-field-signature-stroke-width').first();
21100            
21101            oEraseButton.on('click',null,function(){
21102                oContentWindow.triggerEvent('eraseDraw');
21103                oNodeTextarea.val('');
21104            })
21105
21106            oColorField.on('change',null,function(){
21107                oContentWindow.triggerEvent('changeColor', jQuery(this).val());
21108            })
21109
21110            oStrokeWidthField.on('change input paste',null,function(){
21111                oContentWindow.triggerEvent('changeStrokeWidth', jQuery(this).val());
21112            })
21113
21114            oContentWindow.triggerEvent(
21115                'changeColor', 
21116                szStrokeColor
21117            );
21118
21119            oContentWindow.triggerEvent(
21120                'changeStrokeWidth', 
21121                szStrokeWidth
21122            );
21123        })        
21124    })
21125}
21126
21127function onCTLSignatureEventGetSignature(){
21128    
21129} 
21130
21131function onCTLSignatureEventSaveSignature(szResultFieldID, szBse64PngSignature){
21132    let oNodeTextarea = jQuery('#' + szResultFieldID);
21133    ctlFormFieldCleanError(oNodeTextarea);
21134
21135    oNodeTextarea.val(szBse64PngSignature);
21136}
21137
21138function ctlSketchFormControl( guidTextarea ){
21139	
21140    let oNodeSketchField = jQuery('#' + guidTextarea).closest('.ctlsketchfield');
21141	
21142
21143    let oNodeTextareaSavedImage = oNodeSketchField.find("textarea[data-field-type='saved-image']");
21144    let oNodeTextareaDefaultImage = oNodeSketchField.find("textarea[data-field-type='default-image']");
21145
21146	let oNodeIframe    = oNodeSketchField.find("iframe")[0];
21147    var oContentWindow = oNodeIframe.contentWindow;
21148	
21149	let szStrokeColor = jQuery(oNodeIframe).data('stroke-color');
21150    let szStrokeWidth = jQuery(oNodeIframe).data('stroke-width');
21151	
21152    var oEraseButton      = oNodeSketchField.find('.ctl-form-field-erase-sketch').first();
21153    var oColorField       = oNodeSketchField.find('.ctl-form-field-color-sketch').first();
21154    var oStrokeWidthField = oNodeSketchField.find('.ctl-form-field-sketch-stroke-width').first();
21155    
21156
21157    oEraseButton.on('click',null,function(){
21158        oContentWindow.triggerEvent('drawUploadedImage', oNodeTextareaDefaultImage.val());
21159        oNodeTextareaSavedImage.val('');
21160    })
21161
21162    oColorField.on('change',null,function(){
21163        oContentWindow.triggerEvent('changeColor', jQuery(this).val());
21164    })
21165
21166    oStrokeWidthField.on('change input paste',null,function(){
21167        oContentWindow.triggerEvent('changeStrokeWidth', jQuery(this).val());
21168    })
21169
21170    oContentWindow.triggerEvent('drawUploadedImage', oNodeTextareaSavedImage.val());
21171
21172    oContentWindow.triggerEvent(
21173        'changeColor', 
21174        szStrokeColor
21175    );
21176
21177    oContentWindow.triggerEvent(
21178        'changeStrokeWidth', 
21179        szStrokeWidth
21180    );
21181}
21182
21183function onCTLSketchEventGetSketch(){
21184    
21185} 
21186
21187function onCTLSketchEventSaveSketch(szResultFieldID, szBase64PngSketch){
21188    let oNodeTextarea = jQuery('#' + szResultFieldID);
21189    ctlFormFieldCleanError(oNodeTextarea);
21190
21191    oNodeTextarea.val(szBase64PngSketch);
21192}
21193// file: /var/www/vhosts/codethislab.com/httpdocs/wp-content/plugins/ctl-wp-studio/classes/extensions/ctl-form-fields/php/../js/tempusdominus-bootstrap-4.min.js
21194/*!@preserve
21195 * Tempus Dominus Bootstrap4 v5.39.0 (https://tempusdominus.github.io/bootstrap-4/)
21196 * Copyright 2016-2020 Jonathan Peterson and contributors
21197 * Licensed under MIT (https://github.com/tempusdominus/bootstrap-3/blob/master/LICENSE)
21198 */
vendor: 61,341 bytes, lines 21198-21199
21198
21199if("undefined"==typeof jQuery)throw new Error("Tempus Dominus Bootstrap4's requires jQuery. jQuery must be included before Tempus Dominus Bootstrap4's JavaScript.");if(!function(){var t=jQuery.fn.jquery.split(" ")[0].split(".");if(t[0]<2&&t[1]<9||1===t[0]&&9===t[1]&&t[2]<1||4<=t[0])throw new Error("Tempus Dominus Bootstrap4's requires at least jQuery v3.0.0 but less than v4.0.0")}(),"undefined"==typeof moment)throw new Error("Tempus Dominus Bootstrap4's requires moment.js. Moment.js must be included before Tempus Dominus Bootstrap4's JavaScript.");var version=moment.version.split(".");if(version[0]<=2&&version[1]<17||3<=version[0])throw new Error("Tempus Dominus Bootstrap4's requires at least moment.js v2.17.0 but less than v3.0.0");!function(){function s(t,e){for(var i=0;i<e.length;i++){var s=e[i];s.enumerable=s.enumerable||!1,s.configurable=!0,"value"in s&&(s.writable=!0),Object.defineProperty(t,s.key,s)}}var a,n,o,r,d,h,l,c,u,_,f,m,w,g,i,b,v,M=(a=jQuery,n=moment,l={DATA_TOGGLE:'[data-toggle="'+(r=o="datetimepicker")+'"]'},c={INPUT:o+"-input"},u={CHANGE:"change"+(d="."+r),BLUR:"blur"+d,KEYUP:"keyup"+d,KEYDOWN:"keydown"+d,FOCUS:"focus"+d,CLICK_DATA_API:"click"+d+(h=".data-api"),UPDATE:"update"+d,ERROR:"error"+d,HIDE:"hide"+d,SHOW:"show"+d},_=[{CLASS_NAME:"days",NAV_FUNCTION:"M",NAV_STEP:1},{CLASS_NAME:"months",NAV_FUNCTION:"y",NAV_STEP:1},{CLASS_NAME:"years",NAV_FUNCTION:"y",NAV_STEP:10},{CLASS_NAME:"decades",NAV_FUNCTION:"y",NAV_STEP:100}],f={up:38,38:"up",down:40,40:"down",left:37,37:"left",right:39,39:"right",tab:9,9:"tab",escape:27,27:"escape",enter:13,13:"enter",pageUp:33,33:"pageUp",pageDown:34,34:"pageDown",shift:16,16:"shift",control:17,17:"control",space:32,32:"space",t:84,84:"t",delete:46,46:"delete"},m=["times","days","months","years","decades"],v={timeZone:"",format:!(b={time:"clock",date:"calendar",up:"arrow-up",down:"arrow-down",previous:"arrow-left",next:"arrow-right",today:"arrow-down-circle",clear:"trash-2",close:"x"}),dayViewHeaderFormat:"MMMM YYYY",extraFormats:!(i={timeZone:-39,format:-38,dayViewHeaderFormat:-37,extraFormats:-36,stepping:-35,minDate:-34,maxDate:-33,useCurrent:-32,collapse:-31,locale:-30,defaultDate:-29,disabledDates:-28,enabledDates:-27,icons:-26,tooltips:-25,useStrict:-24,sideBySide:-23,daysOfWeekDisabled:-22,calendarWeeks:-21,viewMode:-20,toolbarPlacement:-19,buttons:-18,widgetPositioning:-17,widgetParent:-16,ignoreReadonly:-15,keepOpen:-14,focusOnShow:-13,inline:-12,keepInvalid:-11,keyBinds:-10,debug:-9,allowInputToggle:-8,disabledTimeIntervals:-7,disabledHours:-6,enabledHours:-5,viewDate:-4,allowMultidate:-3,multidateSeparator:-2,updateOnlyThroughDateOption:-1,date:1}),stepping:1,minDate:!(g={}),maxDate:!(w={}),useCurrent:!0,collapse:!0,locale:n.locale(),defaultDate:!1,disabledDates:!1,enabledDates:!1,icons:{type:"class",time:"fa fa-clock-o",date:"fa fa-calendar",up:"fa fa-arrow-up",down:"fa fa-arrow-down",previous:"fa fa-chevron-left",next:"fa fa-chevron-right",today:"fa fa-calendar-check-o",clear:"fa fa-trash",close:"fa fa-times"},tooltips:{today:"Go to today",clear:"Clear selection",close:"Close the picker",selectMonth:"Select Month",prevMonth:"Previous Month",nextMonth:"Next Month",selectYear:"Select Year",prevYear:"Previous Year",nextYear:"Next Year",selectDecade:"Select Decade",prevDecade:"Previous Decade",nextDecade:"Next Decade",prevCentury:"Previous Century",nextCentury:"Next Century",pickHour:"Pick Hour",incrementHour:"Increment Hour",decrementHour:"Decrement Hour",pickMinute:"Pick Minute",incrementMinute:"Increment Minute",decrementMinute:"Decrement Minute",pickSecond:"Pick Second",incrementSecond:"Increment Second",decrementSecond:"Decrement Second",togglePeriod:"Toggle Period",selectTime:"Select Time",selectDate:"Select Date"},useStrict:!1,sideBySide:!1,daysOfWeekDisabled:!1,calendarWeeks:!1,viewMode:"days",toolbarPlacement:"default",buttons:{showToday:!1,showClear:!1,showClose:!1},widgetPositioning:{horizontal:"auto",vertical:"auto"},widgetParent:null,readonly:!1,ignoreReadonly:!1,keepOpen:!1,focusOnShow:!0,inline:!1,keepInvalid:!1,keyBinds:{up:function(){if(!this.widget)return!1;var t=this._dates[0]||this.getMoment();return this.widget.find(".datepicker").is(":visible")?this.date(t.clone().subtract(7,"d")):this.date(t.clone().add(this.stepping(),"m")),!0},down:function(){if(!this.widget)return this.show(),!1;var t=this._dates[0]||this.getMoment();return this.widget.find(".datepicker").is(":visible")?this.date(t.clone().add(7,"d")):this.date(t.clone().subtract(this.stepping(),"m")),!0},"control up":function(){if(!this.widget)return!1;var t=this._dates[0]||this.getMoment();return this.widget.find(".datepicker").is(":visible")?this.date(t.clone().subtract(1,"y")):this.date(t.clone().add(1,"h")),!0},"control down":function(){if(!this.widget)return!1;var t=this._dates[0]||this.getMoment();return this.widget.find(".datepicker").is(":visible")?this.date(t.clone().add(1,"y")):this.date(t.clone().subtract(1,"h")),!0},left:function(){if(!this.widget)return!1;var t=this._dates[0]||this.getMoment();return this.widget.find(".datepicker").is(":visible")&&this.date(t.clone().subtract(1,"d")),!0},right:function(){if(!this.widget)return!1;var t=this._dates[0]||this.getMoment();return this.widget.find(".datepicker").is(":visible")&&this.date(t.clone().add(1,"d")),!0},pageUp:function(){if(!this.widget)return!1;var t=this._dates[0]||this.getMoment();return this.widget.find(".datepicker").is(":visible")&&this.date(t.clone().subtract(1,"M")),!0},pageDown:function(){if(!this.widget)return!1;var t=this._dates[0]||this.getMoment();return this.widget.find(".datepicker").is(":visible")&&this.date(t.clone().add(1,"M")),!0},enter:function(){return!!this.widget&&(this.hide(),!0)},escape:function(){return!!this.widget&&(this.hide(),!0)},"control space":function(){return!!this.widget&&(this.widget.find(".timepicker").is(":visible")&&this.widget.find('.btn[data-action="togglePeriod"]').click(),!0)},t:function(){return!!this.widget&&(this.date(this.getMoment()),!0)},delete:function(){return!!this.widget&&(this.clear(),!0)}},debug:!1,allowInputToggle:!1,disabledTimeIntervals:!1,disabledHours:!1,enabledHours:!1,viewDate:!1,allowMultidate:!1,multidateSeparator:", ",updateOnlyThroughDateOption:!1,promptTimeOnDateChange:!1,promptTimeOnDateChangeTransitionDelay:200},function(){function p(t,e){this._options=this._getOptions(e),this._element=t,this._dates=[],this._datesFormatted=[],this._viewDate=null,this.unset=!0,this.component=!1,this.widget=!1,this.use24Hours=null,this.actualFormat=null,this.parseFormats=null,this.currentViewMode=null,this.MinViewModeNumber=0,this.isInitFormatting=!1,this.isInit=!1,this.isDateUpdateThroughDateOptionFromClientCode=!1,this.hasInitDate=!1,this.initDate=void 0,this._notifyChangeEventContext=void 0,this._currentPromptTimeTimeout=null,this._int()}var t,e,i=p.prototype;return i._int=function(){this.isInit=!0;var t=this._element.data("target-input");this._element.is("input")?this.input=this._element:void 0!==t&&(this.input="nearest"===t?this._element.find("input"):a(t)),this._dates=[],this._dates[0]=this.getMoment(),this._viewDate=this.getMoment().clone(),a.extend(!0,this._options,this._dataToOptions()),this.hasInitDate=!1,this.initDate=void 0,this.options(this._options),this.isInitFormatting=!0,this._initFormatting(),this.isInitFormatting=!1,void 0!==this.input&&this.input.is("input")&&0!==this.input.val().trim().length?this._setValue(this._parseInputDate(this.input.val().trim()),0):this._options.defaultDate&&void 0!==this.input&&void 0===this.input.attr("placeholder")&&this._setValue(this._options.defaultDate,0),this.hasInitDate&&this.date(this.initDate),this._options.inline&&this.show(),this.isInit=!1},i._update=function(){this.widget&&(this._fillDate(),this._fillTime())},i._setValue=function(t,e){var i=void 0===e,s=!t&&i,a=this.isDateUpdateThroughDateOptionFromClientCode,n=!this.isInit&&this._options.updateOnlyThroughDateOption&&!a,o="",r=!1,d=this.unset?null:this._dates[e];if(!d&&!this.unset&&i&&s&&(d=this._dates[this._dates.length-1]),!t)return n?void this._notifyEvent({type:p.Event.CHANGE,date:t,oldDate:d,isClear:s,isInvalid:r,isDateUpdateThroughDateOptionFromClientCode:a,isInit:this.isInit}):(!this._options.allowMultidate||1===this._dates.length||s?(this.unset=!0,this._dates=[],this._datesFormatted=[]):(o=""+this._element.data("date")+this._options.multidateSeparator,o=d&&o.replace(""+d.format(this.actualFormat)+this._options.multidateSeparator,"").replace(""+this._options.multidateSeparator+this._options.multidateSeparator,"").replace(new RegExp(this._options.multidateSeparator.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&")+"\\s*$"),"")||"",this._dates.splice(e,1),this._datesFormatted.splice(e,1)),o=D(o),void 0!==this.input&&(this.input.val(o),this.input.trigger("input")),this._element.data("date",o),this._notifyEvent({type:p.Event.CHANGE,date:!1,oldDate:d,isClear:s,isInvalid:r,isDateUpdateThroughDateOptionFromClientCode:a,isInit:this.isInit}),void this._update());if(t=t.clone().locale(this._options.locale),this._hasTimeZone()&&t.tz(this._options.timeZone),1!==this._options.stepping&&t.minutes(Math.round(t.minutes()/this._options.stepping)*this._options.stepping).seconds(0),this._isValid(t)){if(n)return void this._notifyEvent({type:p.Event.CHANGE,date:t.clone(),oldDate:d,isClear:s,isInvalid:r,isDateUpdateThroughDateOptionFromClientCode:a,isInit:this.isInit});if(this._dates[e]=t,this._datesFormatted[e]=t.format("YYYY-MM-DD"),this._viewDate=t.clone(),this._options.allowMultidate&&1<this._dates.length){for(var h=0;h<this._dates.length;h++)o+=""+this._dates[h].format(this.actualFormat)+this._options.multidateSeparator;o=o.replace(new RegExp(this._options.multidateSeparator+"\\s*$"),"")}else o=this._dates[e].format(this.actualFormat);o=D(o),void 0!==this.input&&(this.input.val(o),this.input.trigger("input")),this._element.data("date",o),this.unset=!1,this._update(),this._notifyEvent({type:p.Event.CHANGE,date:this._dates[e].clone(),oldDate:d,isClear:s,isInvalid:r,isDateUpdateThroughDateOptionFromClientCode:a,isInit:this.isInit})}else r=!0,this._options.keepInvalid?this._notifyEvent({type:p.Event.CHANGE,date:t,oldDate:d,isClear:s,isInvalid:r,isDateUpdateThroughDateOptionFromClientCode:a,isInit:this.isInit}):void 0!==this.input&&(this.input.val(""+(this.unset?"":this._dates[e].format(this.actualFormat))),this.input.trigger("input")),this._notifyEvent({type:p.Event.ERROR,date:t,oldDate:d})},i._change=function(t){var e=a(t.target).val().trim(),i=e?this._parseInputDate(e):null;return this._setValue(i,0),t.stopImmediatePropagation(),!1},i._getOptions=function(t){return t=a.extend(!0,{},v,t&&t.icons&&"feather"===t.icons.type?{icons:b}:{},t)},i._hasTimeZone=function(){return void 0!==n.tz&&void 0!==this._options.timeZone&&null!==this._options.timeZone&&""!==this._options.timeZone},i._isEnabled=function(t){if("string"!=typeof t||1<t.length)throw new TypeError("isEnabled expects a single character string parameter");switch(t){case"y":return-1!==this.actualFormat.indexOf("Y");case"M":return-1!==this.actualFormat.indexOf("M");case"d":return-1!==this.actualFormat.toLowerCase().indexOf("d");case"h":case"H":return-1!==this.actualFormat.toLowerCase().indexOf("h");case"m":return-1!==this.actualFormat.indexOf("m");case"s":return-1!==this.actualFormat.indexOf("s");case"a":case"A":return-1!==this.actualFormat.toLowerCase().indexOf("a");default:return!1}},i._hasTime=function(){return this._isEnabled("h")||this._isEnabled("m")||this._isEnabled("s")},i._hasDate=function(){return this._isEnabled("y")||this._isEnabled("M")||this._isEnabled("d")},i._dataToOptions=function(){var i=this._element.data(),s={};return i.dateOptions&&i.dateOptions instanceof Object&&(s=a.extend(!0,s,i.dateOptions)),a.each(this._options,function(t){var e="date"+t.charAt(0).toUpperCase()+t.slice(1);void 0!==i[e]?s[t]=i[e]:delete s[t]}),s},i._format=function(){return this._options.format||"YYYY-MM-DD HH:mm"},i._areSameDates=function(t,e){var i=this._format();return t&&e&&(t.isSame(e)||n(t.format(i),i).isSame(n(e.format(i),i)))},i._notifyEvent=function(t){if(t.type===p.Event.CHANGE){if(this._notifyChangeEventContext=this._notifyChangeEventContext||0,this._notifyChangeEventContext++,t.date&&this._areSameDates(t.date,t.oldDate)||!t.isClear&&!t.date&&!t.oldDate||1<this._notifyChangeEventContext)return void(this._notifyChangeEventContext=void 0);this._handlePromptTimeIfNeeded(t)}this._element.trigger(t),this._notifyChangeEventContext=void 0},i._handlePromptTimeIfNeeded=function(t){if(this._options.promptTimeOnDateChange){if(!t.oldDate&&this._options.useCurrent)return;if(t.oldDate&&t.date&&(t.oldDate.format("YYYY-MM-DD")===t.date.format("YYYY-MM-DD")||t.oldDate.format("YYYY-MM-DD")!==t.date.format("YYYY-MM-DD")&&t.oldDate.format("HH:mm:ss")!==t.date.format("HH:mm:ss")))return;var e=this;clearTimeout(this._currentPromptTimeTimeout),this._currentPromptTimeTimeout=setTimeout(function(){e.widget&&e.widget.find('[data-action="togglePicker"]').click()},this._options.promptTimeOnDateChangeTransitionDelay)}},i._viewUpdate=function(t){"y"===t&&(t="YYYY"),this._notifyEvent({type:p.Event.UPDATE,change:t,viewDate:this._viewDate.clone()})},i._showMode=function(t){this.widget&&(t&&(this.currentViewMode=Math.max(this.MinViewModeNumber,Math.min(3,this.currentViewMode+t))),this.widget.find(".datepicker > div").hide().filter(".datepicker-"+_[this.currentViewMode].CLASS_NAME).show())},i._isInDisabledDates=function(t){return!0===this._options.disabledDates[t.format("YYYY-MM-DD")]},i._isInEnabledDates=function(t){return!0===this._options.enabledDates[t.format("YYYY-MM-DD")]},i._isInDisabledHours=function(t){return!0===this._options.disabledHours[t.format("H")]},i._isInEnabledHours=function(t){return!0===this._options.enabledHours[t.format("H")]},i._isValid=function(t,e){if(!t||!t.isValid())return!1;if(this._options.disabledDates&&"d"===e&&this._isInDisabledDates(t))return!1;if(this._options.enabledDates&&"d"===e&&!this._isInEnabledDates(t))return!1;if(this._options.minDate&&t.isBefore(this._options.minDate,e))return!1;if(this._options.maxDate&&t.isAfter(this._options.maxDate,e))return!1;if(this._options.daysOfWeekDisabled&&"d"===e&&-1!==this._options.daysOfWeekDisabled.indexOf(t.day()))return!1;if(this._options.disabledHours&&("h"===e||"m"===e||"s"===e)&&this._isInDisabledHours(t))return!1;if(this._options.enabledHours&&("h"===e||"m"===e||"s"===e)&&!this._isInEnabledHours(t))return!1;if(this._options.disabledTimeIntervals&&("h"===e||"m"===e||"s"===e)){var i=!1;if(a.each(this._options.disabledTimeIntervals,function(){if(t.isBetween(this[0],this[1]))return!(i=!0)}),i)return!1}return!0},i._parseInputDate=function(t,e){var i=(void 0===e?{}:e).isPickerShow,s=void 0!==i&&i;return void 0===this._options.parseInputDate||s?n.isMoment(t)||(t=this.getMoment(t)):t=this._options.parseInputDate(t),t},i._keydown=function(t){var e,i,s,a,n=null,o=[],r={},d=t.which;for(e in w[d]="p",w)w.hasOwnProperty(e)&&"p"===w[e]&&(o.push(e),parseInt(e,10)!==d&&(r[e]=!0));for(e in this._options.keyBinds)if(this._options.keyBinds.hasOwnProperty(e)&&"function"==typeof this._options.keyBinds[e]&&(s=e.split(" ")).length===o.length&&f[d]===s[s.length-1]){for(a=!0,i=s.length-2;0<=i;i--)if(!(f[s[i]]in r)){a=!1;break}if(a){n=this._options.keyBinds[e];break}}n&&n.call(this)&&(t.stopPropagation(),t.preventDefault())},i._keyup=function(t){w[t.which]="r",g[t.which]&&(g[t.which]=!1,t.stopPropagation(),t.preventDefault())},i._indexGivenDates=function(t){var e={},i=this;return a.each(t,function(){var t=i._parseInputDate(this);t.isValid()&&(e[t.format("YYYY-MM-DD")]=!0)}),!!Object.keys(e).length&&e},i._indexGivenHours=function(t){var e={};return a.each(t,function(){e[this]=!0}),!!Object.keys(e).length&&e},i._initFormatting=function(){var t=this._options.format||"L LT",e=this;this.actualFormat=t.replace(/(\[[^\[]*])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,function(t){return(e.isInitFormatting&&null===e._options.date?e.getMoment():e._dates[0]).localeData().longDateFormat(t)||t}),this.parseFormats=this._options.extraFormats?this._options.extraFormats.slice():[],this.parseFormats.indexOf(t)<0&&this.parseFormats.indexOf(this.actualFormat)<0&&this.parseFormats.push(this.actualFormat),this.use24Hours=this.actualFormat.toLowerCase().indexOf("a")<1&&this.actualFormat.replace(/\[.*?]/g,"").indexOf("h")<1,this._isEnabled("y")&&(this.MinViewModeNumber=2),this._isEnabled("M")&&(this.MinViewModeNumber=1),this._isEnabled("d")&&(this.MinViewModeNumber=0),this.currentViewMode=Math.max(this.MinViewModeNumber,this.currentViewMode),this.unset||this._setValue(this._dates[0],0)},i._getLastPickedDate=function(){var t=this._dates[this._getLastPickedDateIndex()];return!t&&this._options.allowMultidate&&(t=n(new Date)),t},i._getLastPickedDateIndex=function(){return this._dates.length-1},i.getMoment=function(t){var e=null==t?n().clone().locale(this._options.locale):this._hasTimeZone()?n.tz(t,this.parseFormats,this._options.locale,this._options.useStrict,this._options.timeZone):n(t,this.parseFormats,this._options.locale,this._options.useStrict);return this._hasTimeZone()&&e.tz(this._options.timeZone),e},i.toggle=function(){return this.widget?this.hide():this.show()},i.readonly=function(t){if(0===arguments.length)return this._options.readonly;if("boolean"!=typeof t)throw new TypeError("readonly() expects a boolean parameter");this._options.readonly=t,void 0!==this.input&&this.input.prop("readonly",this._options.readonly),this.widget&&(this.hide(),this.show())},i.ignoreReadonly=function(t){if(0===arguments.length)return this._options.ignoreReadonly;if("boolean"!=typeof t)throw new TypeError("ignoreReadonly() expects a boolean parameter");this._options.ignoreReadonly=t},i.options=function(t){if(0===arguments.length)return a.extend(!0,{},this._options);if(!(t instanceof Object))throw new TypeError("options() this.options parameter should be an object");a.extend(!0,this._options,t);var s=this,e=Object.keys(this._options).sort(k);a.each(e,function(t,e){var i=s._options[e];if(void 0!==s[e]){if(s.isInit&&"date"===e)return s.hasInitDate=!0,void(s.initDate=i);s[e](i)}})},i.date=function(t,e){if(e=e||0,0===arguments.length)return this.unset?null:this._options.allowMultidate?this._dates.join(this._options.multidateSeparator):this._dates[e].clone();if(!(null===t||"string"==typeof t||n.isMoment(t)||t instanceof Date))throw new TypeError("date() parameter must be one of [null, string, moment or Date]");"string"==typeof t&&y(t)&&(t=new Date(t)),this._setValue(null===t?null:this._parseInputDate(t),e)},i.updateOnlyThroughDateOption=function(t){if("boolean"!=typeof t)throw new TypeError("updateOnlyThroughDateOption() expects a boolean parameter");this._options.updateOnlyThroughDateOption=t},i.format=function(t){if(0===arguments.length)return this._options.format;if("string"!=typeof t&&("boolean"!=typeof t||!1!==t))throw new TypeError("format() expects a string or boolean:false parameter "+t);this._options.format=t,this.actualFormat&&this._initFormatting()},i.timeZone=function(t){if(0===arguments.length)return this._options.timeZone;if("string"!=typeof t)throw new TypeError("newZone() expects a string parameter");this._options.timeZone=t},i.dayViewHeaderFormat=function(t){if(0===arguments.length)return this._options.dayViewHeaderFormat;if("string"!=typeof t)throw new TypeError("dayViewHeaderFormat() expects a string parameter");this._options.dayViewHeaderFormat=t},i.extraFormats=function(t){if(0===arguments.length)return this._options.extraFormats;if(!1!==t&&!(t instanceof Array))throw new TypeError("extraFormats() expects an array or false parameter");this._options.extraFormats=t,this.parseFormats&&this._initFormatting()},i.disabledDates=function(t){if(0===arguments.length)return this._options.disabledDates?a.extend({},this._options.disabledDates):this._options.disabledDates;if(!t)return this._options.disabledDates=!1,this._update(),!0;if(!(t instanceof Array))throw new TypeError("disabledDates() expects an array parameter");this._options.disabledDates=this._indexGivenDates(t),this._options.enabledDates=!1,this._update()},i.enabledDates=function(t){if(0===arguments.length)return this._options.enabledDates?a.extend({},this._options.enabledDates):this._options.enabledDates;if(!t)return this._options.enabledDates=!1,this._update(),!0;if(!(t instanceof Array))throw new TypeError("enabledDates() expects an array parameter");this._options.enabledDates=this._indexGivenDates(t),this._options.disabledDates=!1,this._update()},i.daysOfWeekDisabled=function(t){if(0===arguments.length)return this._options.daysOfWeekDisabled.splice(0);if("boolean"==typeof t&&!t)return this._options.daysOfWeekDisabled=!1,this._update(),!0;if(!(t instanceof Array))throw new TypeError("daysOfWeekDisabled() expects an array parameter");if(this._options.daysOfWeekDisabled=t.reduce(function(t,e){return 6<(e=parseInt(e,10))||e<0||isNaN(e)||-1===t.indexOf(e)&&t.push(e),t},[]).sort(),this._options.useCurrent&&!this._options.keepInvalid)for(var e=0;e<this._dates.length;e++){for(var i=0;!this._isValid(this._dates[e],"d");){if(this._dates[e].add(1,"d"),31===i)throw"Tried 31 times to find a valid date";i++}this._setValue(this._dates[e],e)}this._update()},i.maxDate=function(t){if(0===arguments.length)return this._options.maxDate?this._options.maxDate.clone():this._options.maxDate;if("boolean"==typeof t&&!1===t)return this._options.maxDate=!1,this._update(),!0;"string"==typeof t&&("now"!==t&&"moment"!==t||(t=this.getMoment()));var e=this._parseInputDate(t);if(!e.isValid())throw new TypeError("maxDate() Could not parse date parameter: "+t);if(this._options.minDate&&e.isBefore(this._options.minDate))throw new TypeError("maxDate() date parameter is before this.options.minDate: "+e.format(this.actualFormat));this._options.maxDate=e;for(var i=0;i<this._dates.length;i++)this._options.useCurrent&&!this._options.keepInvalid&&this._dates[i].isAfter(t)&&this._setValue(this._options.maxDate,i);this._viewDate.isAfter(e)&&(this._viewDate=e.clone().subtract(this._options.stepping,"m")),this._update()},i.minDate=function(t){if(0===arguments.length)return this._options.minDate?this._options.minDate.clone():this._options.minDate;if("boolean"==typeof t&&!1===t)return this._options.minDate=!1,this._update(),!0;"string"==typeof t&&("now"!==t&&"moment"!==t||(t=this.getMoment()));var e=this._parseInputDate(t);if(!e.isValid())throw new TypeError("minDate() Could not parse date parameter: "+t);if(this._options.maxDate&&e.isAfter(this._options.maxDate))throw new TypeError("minDate() date parameter is after this.options.maxDate: "+e.format(this.actualFormat));this._options.minDate=e;for(var i=0;i<this._dates.length;i++)this._options.useCurrent&&!this._options.keepInvalid&&this._dates[i].isBefore(t)&&this._setValue(this._options.minDate,i);this._viewDate.isBefore(e)&&(this._viewDate=e.clone().add(this._options.stepping,"m")),this._update()},i.defaultDate=function(t){if(0===arguments.length)return this._options.defaultDate?this._options.defaultDate.clone():this._options.defaultDate;if(!t)return!(this._options.defaultDate=!1);"string"==typeof t&&(t="now"===t||"moment"===t?this.getMoment():this.getMoment(t));var e=this._parseInputDate(t);if(!e.isValid())throw new TypeError("defaultDate() Could not parse date parameter: "+t);if(!this._isValid(e))throw new TypeError("defaultDate() date passed is invalid according to component setup validations");this._options.defaultDate=e,(this._options.defaultDate&&this._options.inline||void 0!==this.input&&""===this.input.val().trim())&&this._setValue(this._options.defaultDate,0)},i.locale=function(t){if(0===arguments.length)return this._options.locale;if(!n.localeData(t))throw new TypeError("locale() locale "+t+" is not loaded from moment locales!");this._options.locale=t;for(var e=0;e<this._dates.length;e++)this._dates[e].locale(this._options.locale);this._viewDate.locale(this._options.locale),this.actualFormat&&this._initFormatting(),this.widget&&(this.hide(),this.show())},i.stepping=function(t){if(0===arguments.length)return this._options.stepping;t=parseInt(t,10),(isNaN(t)||t<1)&&(t=1),this._options.stepping=t},i.useCurrent=function(t){var e=["year","month","day","hour","minute"];if(0===arguments.length)return this._options.useCurrent;if("boolean"!=typeof t&&"string"!=typeof t)throw new TypeError("useCurrent() expects a boolean or string parameter");if("string"==typeof t&&-1===e.indexOf(t.toLowerCase()))throw new TypeError("useCurrent() expects a string parameter of "+e.join(", "));this._options.useCurrent=t},i.collapse=function(t){if(0===arguments.length)return this._options.collapse;if("boolean"!=typeof t)throw new TypeError("collapse() expects a boolean parameter");if(this._options.collapse===t)return!0;this._options.collapse=t,this.widget&&(this.hide(),this.show())},i.icons=function(t){if(0===arguments.length)return a.extend({},this._options.icons);if(!(t instanceof Object))throw new TypeError("icons() expects parameter to be an Object");a.extend(this._options.icons,t),this.widget&&(this.hide(),this.show())},i.tooltips=function(t){if(0===arguments.length)return a.extend({},this._options.tooltips);if(!(t instanceof Object))throw new TypeError("tooltips() expects parameter to be an Object");a.extend(this._options.tooltips,t),this.widget&&(this.hide(),this.show())},i.useStrict=function(t){if(0===arguments.length)return this._options.useStrict;if("boolean"!=typeof t)throw new TypeError("useStrict() expects a boolean parameter");this._options.useStrict=t},i.sideBySide=function(t){if(0===arguments.length)return this._options.sideBySide;if("boolean"!=typeof t)throw new TypeError("sideBySide() expects a boolean parameter");this._options.sideBySide=t,this.widget&&(this.hide(),this.show())},i.viewMode=function(t){if(0===arguments.length)return this._options.viewMode;if("string"!=typeof t)throw new TypeError("viewMode() expects a string parameter");if(-1===p.ViewModes.indexOf(t))throw new TypeError("viewMode() parameter must be one of ("+p.ViewModes.join(", ")+") value");this._options.viewMode=t,this.currentViewMode=Math.max(p.ViewModes.indexOf(t)-1,this.MinViewModeNumber),this._showMode()},i.calendarWeeks=function(t){if(0===arguments.length)return this._options.calendarWeeks;if("boolean"!=typeof t)throw new TypeError("calendarWeeks() expects parameter to be a boolean value");this._options.calendarWeeks=t,this._update()},i.buttons=function(t){if(0===arguments.length)return a.extend({},this._options.buttons);if(!(t instanceof Object))throw new TypeError("buttons() expects parameter to be an Object");if(a.extend(this._options.buttons,t),"boolean"!=typeof this._options.buttons.showToday)throw new TypeError("buttons.showToday expects a boolean parameter");if("boolean"!=typeof this._options.buttons.showClear)throw new TypeError("buttons.showClear expects a boolean parameter");if("boolean"!=typeof this._options.buttons.showClose)throw new TypeError("buttons.showClose expects a boolean parameter");this.widget&&(this.hide(),this.show())},i.keepOpen=function(t){if(0===arguments.length)return this._options.keepOpen;if("boolean"!=typeof t)throw new TypeError("keepOpen() expects a boolean parameter");this._options.keepOpen=t},i.focusOnShow=function(t){if(0===arguments.length)return this._options.focusOnShow;if("boolean"!=typeof t)throw new TypeError("focusOnShow() expects a boolean parameter");this._options.focusOnShow=t},i.inline=function(t){if(0===arguments.length)return this._options.inline;if("boolean"!=typeof t)throw new TypeError("inline() expects a boolean parameter");this._options.inline=t},i.clear=function(){this._setValue(null)},i.keyBinds=function(t){if(0===arguments.length)return this._options.keyBinds;this._options.keyBinds=t},i.debug=function(t){if("boolean"!=typeof t)throw new TypeError("debug() expects a boolean parameter");this._options.debug=t},i.allowInputToggle=function(t){if(0===arguments.length)return this._options.allowInputToggle;if("boolean"!=typeof t)throw new TypeError("allowInputToggle() expects a boolean parameter");this._options.allowInputToggle=t},i.keepInvalid=function(t){if(0===arguments.length)return this._options.keepInvalid;if("boolean"!=typeof t)throw new TypeError("keepInvalid() expects a boolean parameter");this._options.keepInvalid=t},i.datepickerInput=function(t){if(0===arguments.length)return this._options.datepickerInput;if("string"!=typeof t)throw new TypeError("datepickerInput() expects a string parameter");this._options.datepickerInput=t},i.parseInputDate=function(t){if(0===arguments.length)return this._options.parseInputDate;if("function"!=typeof t)throw new TypeError("parseInputDate() should be as function");this._options.parseInputDate=t},i.disabledTimeIntervals=function(t){if(0===arguments.length)return this._options.disabledTimeIntervals?a.extend({},this._options.disabledTimeIntervals):this._options.disabledTimeIntervals;if(!t)return this._options.disabledTimeIntervals=!1,this._update(),!0;if(!(t instanceof Array))throw new TypeError("disabledTimeIntervals() expects an array parameter");this._options.disabledTimeIntervals=t,this._update()},i.disabledHours=function(t){if(0===arguments.length)return this._options.disabledHours?a.extend({},this._options.disabledHours):this._options.disabledHours;if(!t)return this._options.disabledHours=!1,this._update(),!0;if(!(t instanceof Array))throw new TypeError("disabledHours() expects an array parameter");if(this._options.disabledHours=this._indexGivenHours(t),this._options.enabledHours=!1,this._options.useCurrent&&!this._options.keepInvalid)for(var e=0;e<this._dates.length;e++){for(var i=0;!this._isValid(this._dates[e],"h");){if(this._dates[e].add(1,"h"),24===i)throw"Tried 24 times to find a valid date";i++}this._setValue(this._dates[e],e)}this._update()},i.enabledHours=function(t){if(0===arguments.length)return this._options.enabledHours?a.extend({},this._options.enabledHours):this._options.enabledHours;if(!t)return this._options.enabledHours=!1,this._update(),!0;if(!(t instanceof Array))throw new TypeError("enabledHours() expects an array parameter");if(this._options.enabledHours=this._indexGivenHours(t),this._options.disabledHours=!1,this._options.useCurrent&&!this._options.keepInvalid)for(var e=0;e<this._dates.length;e++){for(var i=0;!this._isValid(this._dates[e],"h");){if(this._dates[e].add(1,"h"),24===i)throw"Tried 24 times to find a valid date";i++}this._setValue(this._dates[e],e)}this._update()},i.viewDate=function(t){if(0===arguments.length)return this._viewDate.clone();if(!t)return this._viewDate=(this._dates[0]||this.getMoment()).clone(),!0;if(!("string"==typeof t||n.isMoment(t)||t instanceof Date))throw new TypeError("viewDate() parameter must be one of [string, moment or Date]");this._viewDate=this._parseInputDate(t),this._update(),this._viewUpdate(_[this.currentViewMode]&&_[this.currentViewMode].NAV_FUNCTION)},i._fillDate=function(){},i._useFeatherIcons=function(){return"feather"===this._options.icons.type},i.allowMultidate=function(t){if("boolean"!=typeof t)throw new TypeError("allowMultidate() expects a boolean parameter");this._options.allowMultidate=t},i.multidateSeparator=function(t){if(0===arguments.length)return this._options.multidateSeparator;if("string"!=typeof t)throw new TypeError("multidateSeparator expects a string parameter");this._options.multidateSeparator=t},t=p,(e=[{key:"NAME",get:function(){return o}},{key:"DATA_KEY",get:function(){return r}},{key:"EVENT_KEY",get:function(){return d}},{key:"DATA_API_KEY",get:function(){return h}},{key:"DatePickerModes",get:function(){return _}},{key:"ViewModes",get:function(){return m}},{key:"Event",get:function(){return u}},{key:"Selector",get:function(){return l}},{key:"Default",get:function(){return v},set:function(t){v=t}},{key:"ClassName",get:function(){return c}}])&&s(t,e),p}());function y(t){return e=new Date(t),"[object Date]"===Object.prototype.toString.call(e)&&!isNaN(e.getTime());var e}function D(t){return t.replace(/(^\s+)|(\s+$)/g,"")}function k(t,e){return i[t]&&i[e]?i[t]<0&&i[e]<0?Math.abs(i[e])-Math.abs(i[t]):i[t]<0?-1:i[e]<0?1:i[t]-i[e]:i[t]?i[t]:i[e]?i[e]:0}var E,t,p,C,T,x;E=jQuery,t=E.fn[M.NAME],p=["top","bottom","auto"],C=["left","right","auto"],T=["default","top","bottom"],x=function(d){var t,e;function n(t,e){var i=d.call(this,t,e)||this;return i._init(),i}e=d,(t=n).prototype=Object.create(e.prototype),(t.prototype.constructor=t).__proto__=e;var i=n.prototype;return i._init=function(){var t;this._element.hasClass("input-group")&&(0===(t=this._element.find(".datepickerbutton")).length?this.component=this._element.find('[data-toggle="datetimepicker"]'):this.component=t)},i._iconTag=function(t){return"undefined"!=typeof feather&&this._useFeatherIcons()&&feather.icons[t]?E("<span>").html(feather.icons[t].toSvg()):E("<span>").addClass(t)},i._getDatePickerTemplate=function(){var t=E("<thead>").append(E("<tr>").append(E("<th>").addClass("prev").attr("data-action","previous").append(this._iconTag(this._options.icons.previous))).append(E("<th>").addClass("picker-switch").attr("data-action","pickerSwitch").attr("colspan",this._options.calendarWeeks?"6":"5")).append(E("<th>").addClass("next").attr("data-action","next").append(this._iconTag(this._options.icons.next)))),e=E("<tbody>").append(E("<tr>").append(E("<td>").attr("colspan",this._options.calendarWeeks?"8":"7")));return[E("<div>").addClass("datepicker-days").append(E("<table>").addClass("table table-sm").append(t).append(E("<tbody>"))),E("<div>").addClass("datepicker-months").append(E("<table>").addClass("table-condensed").append(t.clone()).append(e.clone())),E("<div>").addClass("datepicker-years").append(E("<table>").addClass("table-condensed").append(t.clone()).append(e.clone())),E("<div>").addClass("datepicker-decades").append(E("<table>").addClass("table-condensed").append(t.clone()).append(e.clone()))]},i._getTimePickerMainTemplate=function(){var t=E("<tr>"),e=E("<tr>"),i=E("<tr>");return this._isEnabled("h")&&(t.append(E("<td>").append(E("<a>").attr({href:"#",tabindex:"-1",title:this._options.tooltips.incrementHour}).addClass("btn").attr("data-action","incrementHours").append(this._iconTag(this._options.icons.up)))),e.append(E("<td>").append(E("<span>").addClass("timepicker-hour").attr({"data-time-component":"hours",title:this._options.tooltips.pickHour}).attr("data-action","showHours"))),i.append(E("<td>").append(E("<a>").attr({href:"#",tabindex:"-1",title:this._options.tooltips.decrementHour}).addClass("btn").attr("data-action","decrementHours").append(this._iconTag(this._options.icons.down))))),this._isEnabled("m")&&(this._isEnabled("h")&&(t.append(E("<td>").addClass("separator")),e.append(E("<td>").addClass("separator").html(":")),i.append(E("<td>").addClass("separator"))),t.append(E("<td>").append(E("<a>").attr({href:"#",tabindex:"-1",title:this._options.tooltips.incrementMinute}).addClass("btn").attr("data-action","incrementMinutes").append(this._iconTag(this._options.icons.up)))),e.append(E("<td>").append(E("<span>").addClass("timepicker-minute").attr({"data-time-component":"minutes",title:this._options.tooltips.pickMinute}).attr("data-action","showMinutes"))),i.append(E("<td>").append(E("<a>").attr({href:"#",tabindex:"-1",title:this._options.tooltips.decrementMinute}).addClass("btn").attr("data-action","decrementMinutes").append(this._iconTag(this._options.icons.down))))),this._isEnabled("s")&&(this._isEnabled("m")&&(t.append(E("<td>").addClass("separator")),e.append(E("<td>").addClass("separator").html(":")),i.append(E("<td>").addClass("separator"))),t.append(E("<td>").append(E("<a>").attr({href:"#",tabindex:"-1",title:this._options.tooltips.incrementSecond}).addClass("btn").attr("data-action","incrementSeconds").append(this._iconTag(this._options.icons.up)))),e.append(E("<td>").append(E("<span>").addClass("timepicker-second").attr({"data-time-component":"seconds",title:this._options.tooltips.pickSecond}).attr("data-action","showSeconds"))),i.append(E("<td>").append(E("<a>").attr({href:"#",tabindex:"-1",title:this._options.tooltips.decrementSecond}).addClass("btn").attr("data-action","decrementSeconds").append(this._iconTag(this._options.icons.down))))),this.use24Hours||(t.append(E("<td>").addClass("separator")),e.append(E("<td>").append(E("<button>").addClass("btn btn-primary").attr({"data-action":"togglePeriod",tabindex:"-1",title:this._options.tooltips.togglePeriod}))),i.append(E("<td>").addClass("separator"))),E("<div>").addClass("timepicker-picker").append(E("<table>").addClass("table-condensed").append([t,e,i]))},i._getTimePickerTemplate=function(){var t=E("<div>").addClass("timepicker-hours").append(E("<table>").addClass("table-condensed")),e=E("<div>").addClass("timepicker-minutes").append(E("<table>").addClass("table-condensed")),i=E("<div>").addClass("timepicker-seconds").append(E("<table>").addClass("table-condensed")),s=[this._getTimePickerMainTemplate()];return this._isEnabled("h")&&s.push(t),this._isEnabled("m")&&s.push(e),this._isEnabled("s")&&s.push(i),s},i._getToolbar=function(){var t,e,i=[];return this._options.buttons.showToday&&i.push(E("<td>").append(E("<a>").attr({href:"#",tabindex:"-1","data-action":"today",title:this._options.tooltips.today}).append(this._iconTag(this._options.icons.today)))),!this._options.sideBySide&&this._options.collapse&&this._hasDate()&&this._hasTime()&&(e="times"===this._options.viewMode?(t=this._options.tooltips.selectDate,this._options.icons.date):(t=this._options.tooltips.selectTime,this._options.icons.time),i.push(E("<td>").append(E("<a>").attr({href:"#",tabindex:"-1","data-action":"togglePicker",title:t}).append(this._iconTag(e))))),this._options.buttons.showClear&&i.push(E("<td>").append(E("<a>").attr({href:"#",tabindex:"-1","data-action":"clear",title:this._options.tooltips.clear}).append(this._iconTag(this._options.icons.clear)))),this._options.buttons.showClose&&i.push(E("<td>").append(E("<a>").attr({href:"#",tabindex:"-1","data-action":"close",title:this._options.tooltips.close}).append(this._iconTag(this._options.icons.close)))),0===i.length?"":E("<table>").addClass("table-condensed").append(E("<tbody>").append(E("<tr>").append(i)))},i._getTemplate=function(){var t=E("<div>").addClass(("bootstrap-datetimepicker-widget dropdown-menu "+(this._options.calendarWeeks?"tempusdominus-bootstrap-datetimepicker-widget-with-calendar-weeks":"")+" "+(this._useFeatherIcons()?"tempusdominus-bootstrap-datetimepicker-widget-with-feather-icons":"")+" ").trim()),e=E("<div>").addClass("datepicker").append(this._getDatePickerTemplate()),i=E("<div>").addClass("timepicker").append(this._getTimePickerTemplate()),s=E("<ul>").addClass("list-unstyled"),a=E("<li>").addClass(("picker-switch"+(this._options.collapse?" accordion-toggle":"")+" "+(this._useFeatherIcons()?"picker-switch-with-feathers-icons":"")).trim()).append(this._getToolbar());return this._options.inline&&t.removeClass("dropdown-menu"),this.use24Hours&&t.addClass("usetwentyfour"),(void 0!==this.input&&this.input.prop("readonly")||this._options.readonly)&&t.addClass("bootstrap-datetimepicker-widget-readonly"),this._isEnabled("s")&&!this.use24Hours&&t.addClass("wider"),this._options.sideBySide&&this._hasDate()&&this._hasTime()?(t.addClass("timepicker-sbs"),"top"===this._options.toolbarPlacement&&t.append(a),t.append(E("<div>").addClass("row").append(e.addClass("col-md-6")).append(i.addClass("col-md-6"))),"bottom"!==this._options.toolbarPlacement&&"default"!==this._options.toolbarPlacement||t.append(a),t):("top"===this._options.toolbarPlacement&&s.append(a),this._hasDate()&&s.append(E("<li>").addClass(this._options.collapse&&this._hasTime()?"collapse":"").addClass(this._options.collapse&&this._hasTime()&&"times"===this._options.viewMode?"":"show").append(e)),"default"===this._options.toolbarPlacement&&s.append(a),this._hasTime()&&s.append(E("<li>").addClass(this._options.collapse&&this._hasDate()?"collapse":"").addClass(this._options.collapse&&this._hasDate()&&"times"===this._options.viewMode?"show":"").append(i)),"bottom"===this._options.toolbarPlacement&&s.append(a),t.append(s))},i._place=function(t){var e,i=t&&t.data&&t.data.picker||this,s=i._options.widgetPositioning.vertical,a=i._options.widgetPositioning.horizontal,n=(i.component&&i.component.length?i.component:i._element).position(),o=(i.component&&i.component.length?i.component:i._element).offset();if(i._options.widgetParent)e=i._options.widgetParent.append(i.widget);else if(i._element.is("input"))e=i._element.after(i.widget).parent();else{if(i._options.inline)return void(e=i._element.append(i.widget));e=i._element,i._element.children().first().after(i.widget)}if("auto"===s&&(s=o.top+1.5*i.widget.height()>=E(window).height()+E(window).scrollTop()&&i.widget.height()+i._element.outerHeight()<o.top?"top":"bottom"),"auto"===a&&(a=e.width()<o.left+i.widget.outerWidth()/2&&o.left+i.widget.outerWidth()>E(window).width()?"right":"left"),"top"===s?i.widget.addClass("top").removeClass("bottom"):i.widget.addClass("bottom").removeClass("top"),"right"===a?i.widget.addClass("float-right"):i.widget.removeClass("float-right"),"relative"!==e.css("position")&&(e=e.parents().filter(function(){return"relative"===E(this).css("position")}).first()),0===e.length)throw new Error("datetimepicker component should be placed within a relative positioned container");i.widget.css({top:"top"===s?"auto":n.top+i._element.outerHeight()+"px",bottom:"top"===s?e.outerHeight()-(e===i._element?0:n.top)+"px":"auto",left:"left"===a?(e===i._element?0:n.left)+"px":"auto",right:"left"===a?"auto":e.outerWidth()-i._element.outerWidth()-(e===i._element?0:n.left)+"px"})},i._fillDow=function(){var t=E("<tr>"),e=this._viewDate.clone().startOf("w").startOf("d");for(!0===this._options.calendarWeeks&&t.append(E("<th>").addClass("cw").text("#"));e.isBefore(this._viewDate.clone().endOf("w"));)t.append(E("<th>").addClass("dow").text(e.format("dd"))),e.add(1,"d");this.widget.find(".datepicker-days thead").append(t)},i._fillMonths=function(){for(var t=[],e=this._viewDate.clone().startOf("y").startOf("d");e.isSame(this._viewDate,"y");)t.push(E("<span>").attr("data-action","selectMonth").addClass("month").text(e.format("MMM"))),e.add(1,"M");this.widget.find(".datepicker-months td").empty().append(t)},i._updateMonths=function(){var t=this.widget.find(".datepicker-months"),e=t.find("th"),i=t.find("tbody").find("span"),s=this,a=this._getLastPickedDate();e.eq(0).find("span").attr("title",this._options.tooltips.prevYear),e.eq(1).attr("title",this._options.tooltips.selectYear),e.eq(2).find("span").attr("title",this._options.tooltips.nextYear),t.find(".disabled").removeClass("disabled"),this._isValid(this._viewDate.clone().subtract(1,"y"),"y")||e.eq(0).addClass("disabled"),e.eq(1).text(this._viewDate.year()),this._isValid(this._viewDate.clone().add(1,"y"),"y")||e.eq(2).addClass("disabled"),i.removeClass("active"),a&&a.isSame(this._viewDate,"y")&&!this.unset&&i.eq(a.month()).addClass("active"),i.each(function(t){s._isValid(s._viewDate.clone().month(t),"M")||E(this).addClass("disabled")})},i._getStartEndYear=function(t,e){var i=t/10,s=Math.floor(e/t)*t;return[s,s+9*i,Math.floor(e/i)*i]},i._updateYears=function(){var t=this.widget.find(".datepicker-years"),e=t.find("th"),i=this._getStartEndYear(10,this._viewDate.year()),s=this._viewDate.clone().year(i[0]),a=this._viewDate.clone().year(i[1]),n="";for(e.eq(0).find("span").attr("title",this._options.tooltips.prevDecade),e.eq(1).attr("title",this._options.tooltips.selectDecade),e.eq(2).find("span").attr("title",this._options.tooltips.nextDecade),t.find(".disabled").removeClass("disabled"),this._options.minDate&&this._options.minDate.isAfter(s,"y")&&e.eq(0).addClass("disabled"),e.eq(1).text(s.year()+"-"+a.year()),this._options.maxDate&&this._options.maxDate.isBefore(a,"y")&&e.eq(2).addClass("disabled"),n+='<span data-action="selectYear" class="year old'+(this._isValid(s,"y")?"":" disabled")+'">'+(s.year()-1)+"</span>";!s.isAfter(a,"y");)n+='<span data-action="selectYear" class="year'+(s.isSame(this._getLastPickedDate(),"y")&&!this.unset?" active":"")+(this._isValid(s,"y")?"":" disabled")+'">'+s.year()+"</span>",s.add(1,"y");n+='<span data-action="selectYear" class="year old'+(this._isValid(s,"y")?"":" disabled")+'">'+s.year()+"</span>",t.find("td").html(n)},i._updateDecades=function(){var t,e=this.widget.find(".datepicker-decades"),i=e.find("th"),s=this._getStartEndYear(100,this._viewDate.year()),a=this._viewDate.clone().year(s[0]),n=this._viewDate.clone().year(s[1]),o=this._getLastPickedDate(),r=!1,d=!1,h="";for(i.eq(0).find("span").attr("title",this._options.tooltips.prevCentury),i.eq(2).find("span").attr("title",this._options.tooltips.nextCentury),e.find(".disabled").removeClass("disabled"),(0===a.year()||this._options.minDate&&this._options.minDate.isAfter(a,"y"))&&i.eq(0).addClass("disabled"),i.eq(1).text(a.year()+"-"+n.year()),this._options.maxDate&&this._options.maxDate.isBefore(n,"y")&&i.eq(2).addClass("disabled"),a.year()-10<0?h+="<span>&nbsp;</span>":h+='<span data-action="selectDecade" class="decade old" data-selection="'+(a.year()+6)+'">'+(a.year()-10)+"</span>";!a.isAfter(n,"y");)t=a.year()+11,r=this._options.minDate&&this._options.minDate.isAfter(a,"y")&&this._options.minDate.year()<=t,d=this._options.maxDate&&this._options.maxDate.isAfter(a,"y")&&this._options.maxDate.year()<=t,h+='<span data-action="selectDecade" class="decade'+(o&&o.isAfter(a)&&o.year()<=t?" active":"")+(this._isValid(a,"y")||r||d?"":" disabled")+'" data-selection="'+(a.year()+6)+'">'+a.year()+"</span>",a.add(10,"y");h+='<span data-action="selectDecade" class="decade old" data-selection="'+(a.year()+6)+'">'+a.year()+"</span>",e.find("td").html(h)},i._fillDate=function(){d.prototype._fillDate.call(this);var t,e,i,s,a,n=this.widget.find(".datepicker-days"),o=n.find("th"),r=[];if(this._hasDate()){for(o.eq(0).find("span").attr("title",this._options.tooltips.prevMonth),o.eq(1).attr("title",this._options.tooltips.selectMonth),o.eq(2).find("span").attr("title",this._options.tooltips.nextMonth),n.find(".disabled").removeClass("disabled"),o.eq(1).text(this._viewDate.format(this._options.dayViewHeaderFormat)),this._isValid(this._viewDate.clone().subtract(1,"M"),"M")||o.eq(0).addClass("disabled"),this._isValid(this._viewDate.clone().add(1,"M"),"M")||o.eq(2).addClass("disabled"),t=this._viewDate.clone().startOf("M").startOf("w").startOf("d"),s=0;s<42;s++){0===t.weekday()&&(e=E("<tr>"),this._options.calendarWeeks&&e.append('<td class="cw">'+t.week()+"</td>"),r.push(e)),i="",t.isBefore(this._viewDate,"M")&&(i+=" old"),t.isAfter(this._viewDate,"M")&&(i+=" new"),this._options.allowMultidate?-1!==(a=this._datesFormatted.indexOf(t.format("YYYY-MM-DD")))&&t.isSame(this._datesFormatted[a],"d")&&!this.unset&&(i+=" active"):t.isSame(this._getLastPickedDate(),"d")&&!this.unset&&(i+=" active"),this._isValid(t,"d")||(i+=" disabled"),t.isSame(this.getMoment(),"d")&&(i+=" today"),0!==t.day()&&6!==t.day()||(i+=" weekend"),e.append('<td data-action="selectDay" data-day="'+t.format("L")+'" class="day'+i+'">'+t.date()+"</td>"),t.add(1,"d")}E("body").addClass("tempusdominus-bootstrap-datetimepicker-widget-day-click"),E("body").append('<div class="tempusdominus-bootstrap-datetimepicker-widget-day-click-glass-panel"></div>'),n.find("tbody").empty().append(r),E("body").find(".tempusdominus-bootstrap-datetimepicker-widget-day-click-glass-panel").remove(),E("body").removeClass("tempusdominus-bootstrap-datetimepicker-widget-day-click"),this._updateMonths(),this._updateYears(),this._updateDecades()}},i._fillHours=function(){var t=this.widget.find(".timepicker-hours table"),e=this._viewDate.clone().startOf("d"),i=[],s=E("<tr>");for(11<this._viewDate.hour()&&!this.use24Hours&&e.hour(12);e.isSame(this._viewDate,"d")&&(this.use24Hours||this._viewDate.hour()<12&&e.hour()<12||11<this._viewDate.hour());)e.hour()%4==0&&(s=E("<tr>"),i.push(s)),s.append('<td data-action="selectHour" class="hour'+(this._isValid(e,"h")?"":" disabled")+'">'+e.format(this.use24Hours?"HH":"hh")+"</td>"),e.add(1,"h");t.empty().append(i)},i._fillMinutes=function(){for(var t=this.widget.find(".timepicker-minutes table"),e=this._viewDate.clone().startOf("h"),i=[],s=1===this._options.stepping?5:this._options.stepping,a=E("<tr>");this._viewDate.isSame(e,"h");)e.minute()%(4*s)==0&&(a=E("<tr>"),i.push(a)),a.append('<td data-action="selectMinute" class="minute'+(this._isValid(e,"m")?"":" disabled")+'">'+e.format("mm")+"</td>"),e.add(s,"m");t.empty().append(i)},i._fillSeconds=function(){for(var t=this.widget.find(".timepicker-seconds table"),e=this._viewDate.clone().startOf("m"),i=[],s=E("<tr>");this._viewDate.isSame(e,"m");)e.second()%20==0&&(s=E("<tr>"),i.push(s)),s.append('<td data-action="selectSecond" class="second'+(this._isValid(e,"s")?"":" disabled")+'">'+e.format("ss")+"</td>"),e.add(5,"s");t.empty().append(i)},i._fillTime=function(){var t,e,i=this.widget.find(".timepicker span[data-time-component]"),s=this._getLastPickedDate();this.use24Hours||(t=this.widget.find(".timepicker [data-action=togglePeriod]"),e=s?s.clone().add(12<=s.hours()?-12:12,"h"):void 0,s&&t.text(s.format("A")),this._isValid(e,"h")?t.removeClass("disabled"):t.addClass("disabled")),s&&i.filter("[data-time-component=hours]").text(s.format(this.use24Hours?"HH":"hh")),s&&i.filter("[data-time-component=minutes]").text(s.format("mm")),s&&i.filter("[data-time-component=seconds]").text(s.format("ss")),this._fillHours(),this._fillMinutes(),this._fillSeconds()},i._doAction=function(t,e){var i=this._getLastPickedDate();if(E(t.currentTarget).is(".disabled"))return!1;switch(e=e||E(t.currentTarget).data("action")){case"next":var s=M.DatePickerModes[this.currentViewMode].NAV_FUNCTION;this._viewDate.add(M.DatePickerModes[this.currentViewMode].NAV_STEP,s),this._fillDate(),this._viewUpdate(s);break;case"previous":var a=M.DatePickerModes[this.currentViewMode].NAV_FUNCTION;this._viewDate.subtract(M.DatePickerModes[this.currentViewMode].NAV_STEP,a),this._fillDate(),this._viewUpdate(a);break;case"pickerSwitch":this._showMode(1);break;case"selectMonth":var n=E(t.target).closest("tbody").find("span").index(E(t.target));this._viewDate.month(n),this.currentViewMode===this.MinViewModeNumber?(this._setValue(i.clone().year(this._viewDate.year()).month(this._viewDate.month()),this._getLastPickedDateIndex()),this._options.inline||this.hide()):(this._showMode(-1),this._fillDate()),this._viewUpdate("M");break;case"selectYear":var o=parseInt(E(t.target).text(),10)||0;this._viewDate.year(o),this.currentViewMode===this.MinViewModeNumber?(this._setValue(i.clone().year(this._viewDate.year()),this._getLastPickedDateIndex()),this._options.inline||this.hide()):(this._showMode(-1),this._fillDate()),this._viewUpdate("YYYY");break;case"selectDecade":var r=parseInt(E(t.target).data("selection"),10)||0;this._viewDate.year(r),this.currentViewMode===this.MinViewModeNumber?(this._setValue(i.clone().year(this._viewDate.year()),this._getLastPickedDateIndex()),this._options.inline||this.hide()):(this._showMode(-1),this._fillDate()),this._viewUpdate("YYYY");break;case"selectDay":var d=this._viewDate.clone();E(t.target).is(".old")&&d.subtract(1,"M"),E(t.target).is(".new")&&d.add(1,"M");var h=d.date(parseInt(E(t.target).text(),10)),p=0;this._options.allowMultidate?-1!==(p=this._datesFormatted.indexOf(h.format("YYYY-MM-DD")))?this._setValue(null,p):this._setValue(h,this._getLastPickedDateIndex()+1):this._setValue(h,this._getLastPickedDateIndex()),this._hasTime()||this._options.keepOpen||this._options.inline||this._options.allowMultidate||this.hide();break;case"incrementHours":if(!i)break;var l=i.clone().add(1,"h");this._isValid(l,"h")&&(this._getLastPickedDateIndex()<0&&this.date(l),this._setValue(l,this._getLastPickedDateIndex()));break;case"incrementMinutes":if(!i)break;var c=i.clone().add(this._options.stepping,"m");this._isValid(c,"m")&&(this._getLastPickedDateIndex()<0&&this.date(c),this._setValue(c,this._getLastPickedDateIndex()));break;case"incrementSeconds":if(!i)break;var u=i.clone().add(1,"s");this._isValid(u,"s")&&(this._getLastPickedDateIndex()<0&&this.date(u),this._setValue(u,this._getLastPickedDateIndex()));break;case"decrementHours":if(!i)break;var _=i.clone().subtract(1,"h");this._isValid(_,"h")&&(this._getLastPickedDateIndex()<0&&this.date(_),this._setValue(_,this._getLastPickedDateIndex()));break;case"decrementMinutes":if(!i)break;var f=i.clone().subtract(this._options.stepping,"m");this._isValid(f,"m")&&(this._getLastPickedDateIndex()<0&&this.date(f),this._setValue(f,this._getLastPickedDateIndex()));break;case"decrementSeconds":if(!i)break;var m=i.clone().subtract(1,"s");this._isValid(m,"s")&&(this._getLastPickedDateIndex()<0&&this.date(m),this._setValue(m,this._getLastPickedDateIndex()));break;case"togglePeriod":this._setValue(i.clone().add(12<=i.hours()?-12:12,"h"),this._getLastPickedDateIndex());break;case"togglePicker":var w,g,b=E(t.target),v=b.closest("a"),y=b.closest("ul"),D=y.find(".show"),k=y.find(".collapse:not(.show)"),C=b.is("span")?b:b.find("span");if(D&&D.length){if((w=D.data("collapse"))&&w.transitioning)return!0;D.collapse?(D.collapse("hide"),k.collapse("show")):(D.removeClass("show"),k.addClass("show")),this._useFeatherIcons()?(v.toggleClass(this._options.icons.time+" "+this._options.icons.date),g=v.hasClass(this._options.icons.time)?this._options.icons.date:this._options.icons.time,v.html(this._iconTag(g))):C.toggleClass(this._options.icons.time+" "+this._options.icons.date),(this._useFeatherIcons()?v.hasClass(this._options.icons.date):C.hasClass(this._options.icons.date))?v.attr("title",this._options.tooltips.selectDate):v.attr("title",this._options.tooltips.selectTime)}break;case"showPicker":this.widget.find(".timepicker > div:not(.timepicker-picker)").hide(),this.widget.find(".timepicker .timepicker-picker").show();break;case"showHours":this.widget.find(".timepicker .timepicker-picker").hide(),this.widget.find(".timepicker .timepicker-hours").show();break;case"showMinutes":this.widget.find(".timepicker .timepicker-picker").hide(),this.widget.find(".timepicker .timepicker-minutes").show();break;case"showSeconds":this.widget.find(".timepicker .timepicker-picker").hide(),this.widget.find(".timepicker .timepicker-seconds").show();break;case"selectHour":var T=parseInt(E(t.target).text(),10);this.use24Hours||(12<=i.hours()?12!==T&&(T+=12):12===T&&(T=0)),this._setValue(i.clone().hours(T),this._getLastPickedDateIndex()),this._isEnabled("a")||this._isEnabled("m")||this._options.keepOpen||this._options.inline?this._doAction(t,"showPicker"):this.hide();break;case"selectMinute":this._setValue(i.clone().minutes(parseInt(E(t.target).text(),10)),this._getLastPickedDateIndex()),this._isEnabled("a")||this._isEnabled("s")||this._options.keepOpen||this._options.inline?this._doAction(t,"showPicker"):this.hide();break;case"selectSecond":this._setValue(i.clone().seconds(parseInt(E(t.target).text(),10)),this._getLastPickedDateIndex()),this._isEnabled("a")||this._options.keepOpen||this._options.inline?this._doAction(t,"showPicker"):this.hide();break;case"clear":this.clear();break;case"close":this.hide();break;case"today":var x=this.getMoment();this._isValid(x,"d")&&this._setValue(x,this._getLastPickedDateIndex());break}return!1},i.hide=function(){var t,e=!1;this.widget&&(this.widget.find(".collapse").each(function(){var t=E(this).data("collapse");return!t||!t.transitioning||!(e=!0)}),e||(this.component&&this.component.hasClass("btn")&&this.component.toggleClass("active"),this.widget.hide(),E(window).off("resize",this._place),this.widget.off("click","[data-action]"),this.widget.off("mousedown",!1),this.widget.remove(),this.widget=!1,void 0!==this.input&&void 0!==this.input.val()&&0!==this.input.val().trim().length&&this._setValue(this._parseInputDate(this.input.val().trim(),{isPickerShow:!1}),0),t=this._getLastPickedDate(),this._notifyEvent({type:M.Event.HIDE,date:this.unset?null:t?t.clone():void 0}),void 0!==this.input&&this.input.blur(),this._viewDate=t?t.clone():this.getMoment()))},i.show=function(){var t,e=!1;if(void 0!==this.input){if(this.input.prop("disabled")||!this._options.ignoreReadonly&&this.input.prop("readonly")||this.widget)return;void 0!==this.input.val()&&0!==this.input.val().trim().length?this._setValue(this._parseInputDate(this.input.val().trim(),{isPickerShow:!0}),0):e=!0}else e=!0;e&&this.unset&&this._options.useCurrent&&(t=this.getMoment(),"string"==typeof this._options.useCurrent&&(t={year:function(t){return t.month(0).date(1).hours(0).seconds(0).minutes(0)},month:function(t){return t.date(1).hours(0).seconds(0).minutes(0)},day:function(t){return t.hours(0).seconds(0).minutes(0)},hour:function(t){return t.seconds(0).minutes(0)},minute:function(t){return t.seconds(0)}}[this._options.useCurrent](t)),this._setValue(t,0)),this.widget=this._getTemplate(),this._fillDow(),this._fillMonths(),this.widget.find(".timepicker-hours").hide(),this.widget.find(".timepicker-minutes").hide(),this.widget.find(".timepicker-seconds").hide(),this._update(),this._showMode(),E(window).on("resize",{picker:this},this._place),this.widget.on("click","[data-action]",E.proxy(this._doAction,this)),this.widget.on("mousedown",!1),this.component&&this.component.hasClass("btn")&&this.component.toggleClass("active"),this._place(),this.widget.show(),void 0!==this.input&&this._options.focusOnShow&&!this.input.is(":focus")&&this.input.focus(),this._notifyEvent({type:M.Event.SHOW})},i.destroy=function(){this.hide(),this._element.removeData(M.DATA_KEY),this._element.removeData("date")},i.disable=function(){this.hide(),this.component&&this.component.hasClass("btn")&&this.component.addClass("disabled"),void 0!==this.input&&this.input.prop("disabled",!0)},i.enable=function(){this.component&&this.component.hasClass("btn")&&this.component.removeClass("disabled"),void 0!==this.input&&this.input.prop("disabled",!1)},i.toolbarPlacement=function(t){if(0===arguments.length)return this._options.toolbarPlacement;if("string"!=typeof t)throw new TypeError("toolbarPlacement() expects a string parameter");if(-1===T.indexOf(t))throw new TypeError("toolbarPlacement() parameter must be one of ("+T.join(", ")+") value");this._options.toolbarPlacement=t,this.widget&&(this.hide(),this.show())},i.widgetPositioning=function(t){if(0===arguments.length)return E.extend({},this._options.widgetPositioning);if("[object Object]"!=={}.toString.call(t))throw new TypeError("widgetPositioning() expects an object variable");if(t.horizontal){if("string"!=typeof t.horizontal)throw new TypeError("widgetPositioning() horizontal variable must be a string");if(t.horizontal=t.horizontal.toLowerCase(),-1===C.indexOf(t.horizontal))throw new TypeError("widgetPositioning() expects horizontal parameter to be one of ("+C.join(", ")+")");this._options.widgetPositioning.horizontal=t.horizontal}if(t.vertical){if("string"!=typeof t.vertical)throw new TypeError("widgetPositioning() vertical variable must be a string");if(t.vertical=t.vertical.toLowerCase(),-1===p.indexOf(t.vertical))throw new TypeError("widgetPositioning() expects vertical parameter to be one of ("+p.join(", ")+")");this._options.widgetPositioning.vertical=t.vertical}this._update()},i.widgetParent=function(t){if(0===arguments.length)return this._options.widgetParent;if("string"==typeof t&&(t=E(t)),null!==t&&"string"!=typeof t&&!(t instanceof E))throw new TypeError("widgetParent() expects a string or a jQuery object parameter");this._options.widgetParent=t,this.widget&&(this.hide(),this.show())},i.setMultiDate=function(t){var e=this._options.format;this.clear();for(var i=0;i<t.length;i++){var s=moment(t[i],e);this._setValue(s,i)}},n._jQueryHandleThis=function(t,e,i){var s=E(t).data(M.DATA_KEY);if("object"==typeof e&&E.extend({},M.Default,e),s||(s=new n(E(t),e),E(t).data(M.DATA_KEY,s)),"string"==typeof e){if(void 0===s[e])throw new Error('No method named "'+e+'"');if(void 0===i)return s[e]();"date"===e&&(s.isDateUpdateThroughDateOptionFromClientCode=!0);var a=s[e](i);return s.isDateUpdateThroughDateOptionFromClientCode=!1,a}},n._jQueryInterface=function(t,e){return 1===this.length?n._jQueryHandleThis(this[0],t,e):this.each(function(){n._jQueryHandleThis(this,t,e)})},n}(M),E(document).on(M.Event.CLICK_DATA_API,M.Selector.DATA_TOGGLE,function(){var t=E(this),e=I(t),i=e.data(M.DATA_KEY);0!==e.length&&(i._options.allowInputToggle&&t.is('input[data-toggle="datetimepicker"]')||x._jQueryInterface.call(e,"toggle"))}).on(M.Event.CHANGE,"."+M.ClassName.INPUT,function(t){var e=I(E(this));0===e.length||t.isInit||x._jQueryInterface.call(e,"_change",t)}).on(M.Event.BLUR,"."+M.ClassName.INPUT,function(t){var e=I(E(this)),i=e.data(M.DATA_KEY);0!==e.length&&(i._options.debug||window.debug||x._jQueryInterface.call(e,"hide",t))}).on(M.Event.KEYDOWN,"."+M.ClassName.INPUT,function(t){var e=I(E(this));0!==e.length&&x._jQueryInterface.call(e,"_keydown",t)}).on(M.Event.KEYUP,"."+M.ClassName.INPUT,function(t){var e=I(E(this));0!==e.length&&x._jQueryInterface.call(e,"_keyup",t)}).on(M.Event.FOCUS,"."+M.ClassName.INPUT,function(t){var e=I(E(this)),i=e.data(M.DATA_KEY);0!==e.length&&i._options.allowInputToggle&&x._jQueryInterface.call(e,"show",t)}),E.fn[M.NAME]=x._jQueryInterface,E.fn[M.NAME].Constructor=x,E.fn[M.NAME].noConflict=function(){return E.fn[M.NAME]=t,x._jQueryInterface};function I(t){var e,i=t.data("target");return i||(i=t.attr("href")||"",i=/^#[a-z]/i.test(i)?i:null),0===(e=E(i)).length?t:(e.data(M.DATA_KEY)||E.extend({},e.data(),E(this).data()),e)}}();
21199
21200// file: /var/www/vhosts/codethislab.com/httpdocs/wp-content/plugins/ctl-wp-studio/classes/extensions/ctl-form-fields/php/../js/front.tempusdominus.js
21201// TEMPUS DOMINUS INIT
21202
21203jQuery(document).ready(function () {
21204
21205    $(document).on('show.datetimepicker', function (e) {
21206		if (ctlTempusDominusHasOverflowParent($(e.target))){
21207			const picker = $(e.target).data('datetimepicker');
21208			if (picker && picker.widget) {
21209				picker.widget.addClass('ctl-tempus-dominus-fixed');
21210				$('<div class="ctl-tempus-dominus-fixed-backdrop"></div>')
21211    				.insertBefore(picker.widget);
21212				
21213				let oNodeLabel = jQuery(e.target).closest(".ctldatetimefield-wrapper").find(".ctl-form-field-label");
21214
21215                if (oNodeLabel.length == 0 ){
21216					oNodeLabel = jQuery(e.target).closest(".form-group").find(".ctl-form-field-label");
21217				}
21218
21219				if (oNodeLabel.length > 0 ){
21220					$('<div class="ctl-tempus-dominus-fixed-label">' + oNodeLabel.text() + '</div>')
21221						.insertBefore(picker.widget.find("ul"));	
21222				}
21223			}
21224		}
21225	});
21226	
21227	$(document).on('hide.datetimepicker', function (e) {
21228		$('.ctl-tempus-dominus-fixed-backdrop').remove();
21229	});
21230
21231    jQuery(document).on('empty-field', '.datetimepicker-input', function (e) {
21232        var oNodeWrapper = jQuery(this).closest(".ctl-wp-studio-form-control-wrapper.ctldatefield");
21233        var oNodeSource = jQuery(this);
21234        var oNodeLogic = oNodeWrapper.find('input[type="hidden"]');
21235
21236        oNodeSource.val("");
21237        oNodeLogic.val("").trigger("change");
21238    });
21239
21240    jQuery(document).on('change input paste', '.datetimepicker-input', function (e) {
21241        e.preventDefault();
21242        e.stopPropagation();
21243        
21244
21245        __ctlTempusDominusCheckValueLimits(jQuery(this));
21246        __ctlTempusDominusUpdateDateTimeFieldPickerMinMax(jQuery(this));
21247        updateDateTimePickerInput(jQuery(this));
21248
21249    });
21250
21251    jQuery(document).on('change input paste', '.ctldatetimefield-wrapper input[name=time-gfx]', function (e) {
21252        if(!jQuery(this).data("tempusdominus-initialized")){
21253            return;
21254        }
21255        e.preventDefault();
21256        e.stopPropagation();     
21257        
21258        var oNodeLinked = jQuery(this).closest(".ctldatetimefield-wrapper").find(".ctl-vulcano-date-interval-linked");
21259
21260        if (oNodeLinked.length == 0) {
21261            return;
21262        }
21263
21264        if ( oNodeLinked.hasClass("ctl-vulcano-date-interval-start") ){
21265            __updateLinkedDateTimePickerInputStart(oNodeLinked);
21266        }else if ( oNodeLinked.hasClass("ctl-vulcano-date-interval-end") ){
21267            __updateLinkedDateTimePickerInputEnd(oNodeLinked);
21268        }
21269    });
21270
21271    jQuery(document).on('change input paste', '.ctl-vulcano-date-interval-linked.ctl-vulcano-date-interval-start', function (e) {
21272        e.preventDefault();
21273        e.stopPropagation();
21274        
21275        __updateLinkedDateTimePickerInputStart(jQuery(this));
21276    });
21277    jQuery(document).on('change input paste', '.ctl-vulcano-date-interval-linked.ctl-vulcano-date-interval-end', function (e) {
21278        e.preventDefault();
21279        e.stopPropagation();
21280        
21281        __updateLinkedDateTimePickerInputEnd(jQuery(this));
21282    });
21283
21284    jQuery(document).on('change input paste', '.ctl-vulcano-time-interval-linked.ctl-vulcano-time-interval-start', function (e) {
21285        e.preventDefault();
21286        e.stopPropagation();
21287        
21288        __updateLinkedTimePickerInputStart(jQuery(this));
21289    });
21290    jQuery(document).on('change input paste', '.ctl-vulcano-time-interval-linked.ctl-vulcano-time-interval-end', function (e) {
21291        e.preventDefault();
21292        e.stopPropagation();
21293        
21294        __updateLinkedTimePickerInputEnd(jQuery(this));
21295    });    
21296
21297    wpdk_add_action("ctl-theme-bootstrap-modals-show-modal", function (oNodeModal) {
21298        oNodeModal.find('.datetimepicker-input').each(function () {
21299            buildTempusDominusDatePicker(jQuery(this));
21300        });
21301        
21302        oNodeModal.find('.datetimepicker-input').each(function () {
21303            __ctlTempusDominusCheckValueLimits(jQuery(this));
21304            __ctlTempusDominusUpdateDateTimeFieldPickerMinMax(jQuery(this));
21305            updateDateTimePickerInput(jQuery(this));
21306        });
21307    });
21308
21309
21310    jQuery(document).on("append-html", function (e, oNode, html) {
21311        oNode.find('.datetimepicker-input').each(function () {
21312            buildTempusDominusDatePicker(jQuery(this));
21313        });
21314
21315        oNode.find('.datetimepicker-input').each(function () {
21316            __ctlTempusDominusCheckValueLimits(jQuery(this));
21317            __ctlTempusDominusUpdateDateTimeFieldPickerMinMax(jQuery(this));
21318        });
21319    });
21320
21321    jQuery(document).on("set-html", function (e, oNode, html) {
21322        oNode.find('.datetimepicker-input').each(function () {
21323            buildTempusDominusDatePicker(jQuery(this));
21324        });
21325
21326        oNode.find('.datetimepicker-input').each(function () {
21327            __ctlTempusDominusCheckValueLimits(jQuery(this));
21328            __ctlTempusDominusUpdateDateTimeFieldPickerMinMax(jQuery(this));
21329        });
21330    });
21331
21332
21333    ctlApplyDateTimePicker();
21334});
21335
21336function __updateLinkedTimePickerInputStart(oNodeInputStart) {
21337    var oNodeForm    = oNodeInputStart.closest("form");
21338    if (oNodeForm.length == 0) {
21339        return;
21340    }    
21341
21342    oNodeInputEnd = oNodeForm.find('.ctl-vulcano-time-interval-end');
21343
21344    var oMomentStart = moment(oNodeInputStart.val(), "HH:mm");
21345    var oMomentEnd   = moment(oNodeInputEnd.val(), "HH:mm");
21346
21347    if (oMomentStart.isValid() && oNodeInputEnd.val() == "") {
21348        oNodeInputEnd.val(oMomentStart.format("HH:mm")).trigger("change");
21349        return;
21350    }
21351
21352    if ( !oMomentStart.isValid() || !oMomentEnd.isValid() ){
21353        return; 
21354    }
21355
21356    var diffInMinutes = oMomentEnd.diff(oMomentStart, 'minutes');
21357
21358    if (diffInMinutes < 0 ) {
21359        oNodeInputEnd.val(oMomentStart.format("HH:mm")).trigger("change");
21360    }
21361}
21362
21363function __updateLinkedTimePickerInputEnd(oNodeInputEnd) {
21364    var oNodeForm    = oNodeInputEnd.closest("form");
21365    if (oNodeForm.length == 0) {
21366        return;
21367    }    
21368
21369    oNodeInputStart = oNodeForm.find('.ctl-vulcano-time-interval-start');
21370
21371    var oMomentStart = moment(oNodeInputStart.val(), "HH:mm");
21372    var oMomentEnd   = moment(oNodeInputEnd.val(), "HH:mm");
21373
21374    if ( !oMomentStart.isValid() || !oMomentEnd.isValid() ){
21375        return; 
21376    }
21377
21378    var diffInMinutes = oMomentEnd.diff(oMomentStart, 'minutes');
21379
21380    if (diffInMinutes < 0 ) {
21381        oNodeInputStart.val(oMomentEnd.format("HH:mm")).trigger("change");
21382    } 
21383}
21384
21385function __updateLinkedDateTimePickerInputEnd(oNodeInputEnd) {
21386    var oNodeForm    = oNodeInputEnd.closest("form");
21387    var szDateFormat = oNodeInputEnd.attr("data-format");
21388
21389    if (oNodeForm.length == 0) {
21390        return;
21391    }
21392    var oNodeInputStart = oNodeForm.find('.ctl-vulcano-date-interval-start');
21393
21394    let szStartDate = oNodeInputStart.val();
21395    let szEndDate   = oNodeInputEnd.val();
21396
21397    var oMomentStart = moment(szStartDate, szDateFormat);
21398    var oMomentEnd   = moment(szEndDate,szDateFormat);
21399
21400    var diffInDays = oMomentEnd.diff(oMomentStart, 'days');
21401    if (oMomentEnd.isValid()) {
21402        if ( diffInDays < 0 ){
21403            oNodeInputStart.val(oMomentEnd.format(szDateFormat)).trigger("change");
21404        }else if(szStartDate == szEndDate){
21405            __updateLinkedDateTimePickerInput(oNodeInputStart, oNodeInputEnd, "end");
21406        }
21407    }
21408}
21409
21410function __updateLinkedDateTimePickerInputStart(oNodeInputStart) {
21411    var oNodeForm    = oNodeInputStart.closest("form");
21412    var szDateFormat = oNodeInputStart.attr("data-format");
21413
21414    if (oNodeForm.length == 0) {
21415        return;
21416    }
21417    var oNodeInputEnd   = oNodeForm.find('.ctl-vulcano-date-interval-end');
21418
21419    let szStartDate = oNodeInputStart.val();
21420    let szEndDate   = oNodeInputEnd.val();
21421
21422    var oMomentStart = moment(szStartDate, szDateFormat);
21423    var oMomentEnd  = moment(szEndDate, szDateFormat);
21424
21425    var diffInDays = oMomentEnd.diff(oMomentStart, 'days');
21426
21427    if (oMomentStart.isValid() ) {
21428        if ( diffInDays < 0 ){
21429            oNodeInputEnd.val(oMomentStart.format(szDateFormat)).trigger("change");
21430        }else if(szStartDate == szEndDate){
21431            __updateLinkedDateTimePickerInput(oNodeInputStart, oNodeInputEnd, "start");              
21432        }
21433    }
21434}
21435
21436function __updateLinkedDateTimePickerInput(oNodeInputStart, oNodeInputEnd, szDirection) {
21437    var oNodeFormGroupStart = oNodeInputStart.closest(".form-group");
21438    var oNodeFormGroupEnd   = oNodeInputEnd.closest(".form-group"); 
21439    
21440    if (oNodeFormGroupStart.hasClass("ctldatetimefield-wrapper") && 
21441        oNodeFormGroupEnd.hasClass("ctldatetimefield-wrapper")) {
21442            
21443        var oNodeTimeStart = oNodeFormGroupStart.find(".time-gfx"); 
21444        var oNodeTimeEnd   = oNodeFormGroupEnd.find(".time-gfx"); 
21445
21446        var oMomentTimeStart = moment(oNodeTimeStart.val(), "HH:mm");
21447        var oMomentTimeEnd   = moment(oNodeTimeEnd.val(), "HH:mm");
21448
21449        if (oMomentTimeEnd.isValid() && oMomentTimeStart.isValid()) {
21450
21451            switch(szDirection){
21452                case "start": {
21453                    if (oMomentTimeEnd.diff(oMomentTimeStart, 'minutes') < 0) {
21454                        oNodeTimeEnd.val(oMomentTimeStart.format("HH:mm")).trigger("change");
21455                    }
21456                }break;
21457                case "end": {
21458                    if (oMomentTimeEnd.diff(oMomentTimeStart, 'minutes') < 0) {
21459                        oNodeTimeStart.val(oMomentTimeEnd.format("HH:mm")).trigger("change");
21460                    }
21461                }break;
21462            }
21463        }                    
21464    }
21465}
21466
21467function updateDateTimePickerInput(oNodeInput) {
21468    var oNodeWrapper = oNodeInput.closest(".ctl-wp-studio-form-control-wrapper.ctldatefield");
21469    if (oNodeWrapper.length == 0) {
21470        return;
21471    }
21472
21473    var oNodeFormGroup = oNodeWrapper.closest(".form-group");
21474    var oNodeLogic = oNodeWrapper.find('input[type="hidden"]');
21475
21476    if (oNodeFormGroup.hasClass("ctldatetimefield-wrapper")) {
21477        var oNodeDatePicker = oNodeFormGroup.find(".date-gfx");
21478        var oNodeTimePicker = oNodeFormGroup.find(".time-gfx");
21479
21480        var szDateFormat = oNodeDatePicker.attr("data-format");
21481        var szTimeFormat = oNodeTimePicker.attr("data-format");
21482
21483        var szDateValue = oNodeDatePicker.val();
21484        var szTimeValue = oNodeTimePicker.val();
21485
21486        var szFormat = szDateFormat + " " + szTimeFormat;
21487        var szSourceDate = szDateValue + " " + szTimeValue;
21488
21489        szDateValue = szDateValue.trim();
21490
21491        if (szDateValue == "") {
21492            oNodeLogic.val("").trigger("change");
21493        } else {
21494            switch (szFormat) {
21495                case "L":
21496                case "DD/MM/YYYY HH:mm:ss": {
21497                    szMySqlDate = moment(szSourceDate, szFormat).format("YYYY-MM-DD HH:mm:ss");
21498                } break;
21499                case "DD/MM/YYYY HH:mm": {
21500                    szMySqlDate = moment(szSourceDate, szFormat).format("YYYY-MM-DD HH:mm:ss");
21501                } break;
21502            }
21503        }
21504
21505        oNodeLogic.val(szMySqlDate).trigger("change");
21506    } else {
21507        var szFormat = oNodeInput.attr("data-format");
21508
21509        var szDateValue = oNodeInput.val();
21510        szDateValue = szDateValue.trim();
21511
21512        if (szDateValue == "") {
21513            oNodeLogic.val("").trigger("change");
21514        } else {
21515            var szSourceDate = oNodeInput.val();
21516            var szMySqlDate = szSourceDate;
21517
21518            switch (szFormat) {
21519                case "DD/MM/YYYY":
21520                case "L": {
21521                    szMySqlDate = moment(szSourceDate, szFormat).format("YYYY-MM-DD");
21522                } break;
21523                case "DD/MM/YYYY HH:mm:ss": {
21524                    szMySqlDate = moment(szSourceDate, szFormat).format("YYYY-MM-DD HH:mm:ss");
21525                } break;
21526            }
21527
21528            oNodeLogic.val(szMySqlDate).trigger("change");
21529        }
21530    }
21531}
21532
21533function ctlApplyDateTimePicker() {
21534    jQuery('.datetimepicker-input').each(function () {
21535        buildTempusDominusDatePicker(jQuery(this));
21536    });
21537
21538    jQuery('.datetimepicker-input').each(function () {
21539        __ctlTempusDominusCheckValueLimits(jQuery(this));
21540        __ctlTempusDominusUpdateDateTimeFieldPickerMinMax(jQuery(this));
21541    });
21542}
21543
21544function buildTempusDominusDatePicker(oNodeInput) {
21545    if (oNodeInput.data("tempusdominus-initialized")) {
21546        return;
21547    }
21548    var oNodeLogicInput = oNodeInput.closest(".ctl-wp-studio-form-control-wrapper").find('input[type="hidden"]');
21549    var szFormat = oNodeInput.attr("data-format");
21550
21551    if (!szFormat || szFormat === "") {
21552        szFormat = "DD/MM/YYYY";
21553    }
21554
21555    var bTime = false;
21556    if (szFormat == "HH:mm" || szFormat == "LT") {
21557        bTime = true;
21558    }
21559
21560    var bDebug = oNodeInput.attr("data-debug") == "true" ? true : false;
21561
21562    var szDataValue = oNodeInput.attr("data-value");
21563
21564    var oConfig = {
21565        icons: {
21566            time: "fa fa-clock",
21567            date: "fa fa-calendar-alt",
21568            up: "fa fa-arrow-up",
21569            down: "fa fa-arrow-down"
21570        },
21571        debug: bDebug,
21572        locale: g_oCTLTempusdominusDatepickerLocalizationFront["user_locale"],
21573        format: szFormat,
21574        useCurrent: false,
21575        widgetPositioning: {
21576            horizontal: 'auto',
21577            vertical: 'bottom'
21578        },
21579    };
21580
21581    if (ctlTempusDominusHasOverflowParent(oNodeInput)){
21582		oConfig["widgetParent"] = 'body';
21583	}
21584
21585    if (oNodeInput.attr("data-min-date")) {
21586        let oMinDate = new Date(oNodeInput.attr("data-min-date"));
21587        oConfig["minDate"] = moment(oMinDate.getFullYear() + "-" + (oMinDate.getMonth() + 1) + "-" + oMinDate.getDate(), "YYYY-MM-DD");
21588    }
21589    if (oNodeInput.attr("data-max-date")) {
21590        let oMaxDate = new Date(oNodeInput.attr("data-max-date"));
21591        oConfig["maxDate"] = moment(oMaxDate.getFullYear() + "-" + (oMaxDate.getMonth() + 1) + "-" + oMaxDate.getDate(), "YYYY-MM-DD");
21592    }    
21593
21594    if (oNodeInput.attr("data-stepping")) {
21595        oConfig["stepping"] = oNodeInput.attr("data-stepping");
21596    }
21597
21598    if (!bTime) {
21599        if (szDataValue) {
21600            oConfig["defaultDate"] = moment(szDataValue, "YYYY-MM-DD");
21601
21602            if (!oConfig["defaultDate"].isValid()) {
21603                oConfig["defaultDate"] = moment();
21604            }
21605
21606            if(oConfig["minDate"] && oConfig["defaultDate"].isBefore(oConfig["minDate"])){
21607                oConfig["defaultDate"] = oConfig["minDate"].clone();
21608            }
21609            if(oConfig["maxDate"] && oConfig["defaultDate"].isAfter(oConfig["maxDate"])){
21610                oConfig["defaultDate"] = oConfig["maxDate"].clone();
21611            }
21612        }
21613    }
21614
21615    if (oNodeInput.closest(".date").length > 0) {
21616        oNodeInput.closest(".date").datetimepicker(oConfig);
21617    } else {
21618        oNodeInput.datetimepicker(oConfig);
21619    }
21620
21621    oNodeInput.data("tempusdominus-initialized", true);
21622
21623    if (oConfig["defaultDate"]) {
21624        oNodeInput.val(oConfig["defaultDate"].format(szFormat));
21625        oNodeLogicInput.val(szDataValue);
21626    }
21627
21628    if (oNodeInput.closest(".modal-body").length > 0) {
21629        // avoid to crop the datepicker
21630    }
21631
21632    
21633}
21634
21635function ctlTempusDominusHasOverflowParent(oNodeInput) {
21636    let $current = oNodeInput.parent();
21637    
21638    while ($current.length && $current[0] !== document ) {
21639		
21640        // Eccezione per body e html
21641        if ($current.is('body, html')) {
21642            break;
21643        }
21644        		
21645        const overflow = $current.css('overflow');
21646        const overflowY = $current.css('overflow-y');
21647        const overflowX = $current.css('overflow-x');
21648        
21649        if (overflow !== 'visible' || overflowY !== 'visible' || overflowX !== 'visible') {
21650            return $current;  // ritorna il nodo problematico
21651        }
21652        
21653        $current = $current.parent();
21654    }
21655    
21656    return null;  // nessun parent con overflow problematico
21657}
21658
21659function __ctlTempusDominusUpdateDateTimeFieldPickerMinMax(oNodeInput) {
21660    if(oNodeInput.length == 0 || !oNodeInput.data("tempusdominus-initialized")){
21661        return;
21662    }
21663
21664    let oNodeFormGroup = oNodeInput.closest(".form-group");
21665
21666    let oNodeDatePicker = oNodeFormGroup.find(".date-gfx");
21667    let oNodeTimePicker = oNodeFormGroup.find(".time-gfx");
21668    
21669    if (oNodeFormGroup.hasClass("ctldatetimefield-wrapper") && 
21670        oNodeInput.hasClass("date-gfx") &&
21671        (oNodeInput.attr("data-min-date") || oNodeInput.attr("data-max-date")) &&
21672        oNodeTimePicker.length > 0
21673    ) {
21674        let szDateFormat = oNodeDatePicker.attr("data-format");
21675        let szTimeFormat = oNodeTimePicker.attr("data-format");
21676
21677        let szDateValue = oNodeDatePicker.val();
21678        let szTimeValue = oNodeTimePicker.val();
21679
21680        let szCurrentDate = moment(szDateValue, szDateFormat).format("YYYY-MM-DD");
21681
21682        let oCurrentTime = moment(szTimeValue, szTimeFormat);
21683
21684        let oNow = moment();
21685
21686        let oTempusDominusInstance;
21687        if (oNodeTimePicker.closest(".date").length > 0) {
21688            oTempusDominusInstance = oNodeTimePicker.closest(".date");
21689        } else {
21690            oTempusDominusInstance = oNodeTimePicker;
21691        }
21692
21693        if(oNodeInput.attr("data-min-date")){
21694            let oMinDate = moment(oNodeInput.attr("data-min-date"));
21695
21696            if(moment(oMinDate).format("YYYY-MM-DD") == szCurrentDate){
21697                oMinDate.set({
21698                    year: oNow.year(),
21699                    month: oNow.month(),
21700                    date: oNow.date()
21701                });
21702                
21703                oTempusDominusInstance.datetimepicker('minDate', oMinDate);
21704
21705                if(oCurrentTime.isBefore(oMinDate)){
21706                    oTempusDominusInstance.datetimepicker('date', oMinDate);
21707                }
21708            }else{
21709                oTempusDominusInstance.datetimepicker('minDate', false);
21710            }
21711        }
21712        
21713        if(oNodeInput.attr("data-max-date")){
21714            let oMaxDate = moment(oNodeInput.attr("data-max-date"));
21715            if(moment(oMaxDate).format("YYYY-MM-DD") == szCurrentDate){
21716                oMaxDate.set({
21717                    year: oNow.year(),
21718                    month: oNow.month(),
21719                    date: oNow.date()
21720                });
21721
21722                oTempusDominusInstance.datetimepicker('maxDate', oMaxDate);
21723
21724                if(oCurrentTime.isAfter(oMaxDate)){
21725                    oTempusDominusInstance.datetimepicker('date', oMaxDate);
21726                }
21727            }else{
21728                oTempusDominusInstance.datetimepicker('maxDate', false);
21729            }
21730        }
21731    }
21732}
21733
21734function __ctlTempusDominusCheckValueLimits(oNodeInput) {
21735    if(oNodeInput.length == 0 || !oNodeInput.data("tempusdominus-initialized")){
21736        return;
21737    }
21738    let oNodeFormGroup = oNodeInput.closest(".form-group");
21739
21740    let oNodeDatePicker = oNodeFormGroup.find(".date-gfx");
21741    let oNodeTimePicker = oNodeFormGroup.find(".time-gfx");
21742
21743    if((oNodeInput.attr("data-min-date") || oNodeInput.attr("data-max-date")) && oNodeInput.hasClass("date-gfx")){
21744        let oMinDate = oNodeInput.attr("data-min-date") ? moment(oNodeInput.attr("data-min-date")) : null;
21745        let oMaxDate = oNodeInput.attr("data-max-date") ? moment(oNodeInput.attr("data-max-date")) : null;
21746
21747        let oVal = moment(oNodeInput.val(), oNodeInput.attr("data-format"));
21748
21749        if(oMinDate && oVal.isBefore(oMinDate,'day')){
21750            oNodeInput.val(oMinDate.format(oNodeInput.attr("data-format"))).trigger("change");
21751        }
21752        if(oMaxDate && oVal.isAfter(oMaxDate,'day')){
21753            oNodeInput.val(oMaxDate.format(oNodeInput.attr("data-format"))).trigger("change");
21754        }
21755    }else if(oNodeFormGroup.hasClass("ctldatetimefield-wrapper") && 
21756        oNodeInput.hasClass("time-gfx") &&
21757        (oNodeDatePicker.attr("data-min-date") || oNodeDatePicker.attr("data-max-date"))
21758    ){
21759        let oTempusDominusInstance;
21760        if (oNodeInput.closest(".date").length > 0) {
21761            oTempusDominusInstance = oNodeInput.closest(".date");
21762        } else {
21763            oTempusDominusInstance = oNodeInput;
21764        }
21765
21766        let oMinDate = oTempusDominusInstance.datetimepicker('minDate');
21767        let oMaxDate = oTempusDominusInstance.datetimepicker('maxDate');
21768
21769        let oVal = moment(oNodeInput.val(), oNodeInput.attr("data-format"));
21770
21771        let oNow = moment();
21772        if(oMinDate){
21773            // Prevent time input's Date to change when minDate is set
21774            if(!oTempusDominusInstance.datetimepicker('date').isSame(oNow, 'day')){
21775                oTempusDominusInstance.datetimepicker('date', oMinDate.clone().set({
21776                    year: oNow.year(),
21777                    month: oNow.month(),
21778                    date: oNow.date()
21779                }));
21780            }
21781
21782            oVal.set({
21783                year: oMinDate.year(),
21784                month: oMinDate.month(),
21785                date: oMinDate.date()
21786            });
21787
21788            if(oVal.isBefore(oMinDate)){
21789                oNodeInput.val(oMinDate.format(oNodeInput.attr("data-format"))).trigger("change");
21790            }
21791        }
21792
21793        if(oMaxDate){
21794            // Prevent time input's Date to change when maxDate is set
21795            if(!oTempusDominusInstance.datetimepicker('date').isSame(oNow, 'day')){
21796                oTempusDominusInstance.datetimepicker('date', oMaxDate.clone().set({
21797                    year: oNow.year(),
21798                    month: oNow.month(),
21799                    date: oNow.date()
21800                }));
21801            }
21802
21803            oVal.set({
21804                year: oMaxDate.year(),
21805                month: oMaxDate.month(),
21806                date: oMaxDate.date()
21807            });
21808
21809            if(oVal.isAfter(oMaxDate)){
21810                oNodeInput.val(oMaxDate.format(oNodeInput.attr("data-format"))).trigger("change");
21811            }
21812        }
21813    }
21814}
21815// file: /var/www/vhosts/codethislab.com/httpdocs/wp-content/plugins/ctl-wp-studio/classes/extensions/ctl-form-fields/php/../js/epsilon.js
21816Array.prototype.top = function () {
21817    return this[this.length - 1];
21818};
21819var Epsilon;
21820(function (Epsilon) {
21821    var ZERO = 48;
21822    var NINE = 57;
21823    var CAP_A = 65;
21824    var CAP_Z = 90;
21825    var DEC_POINT = 46;
21826    var ExpressionTree = (function () {
21827        function ExpressionTree(token, left, right) {
21828            this.pointer = null;
21829            this.left = null;
21830            this.right = null;
21831            this.operator = null;
21832            switch (arguments.length) {
21833                case 1:
21834                    this.pointer = token;
21835                    this.left = this.right = this.operator = null;
21836                    break;
21837                case 2:
21838                    this.pointer = null;
21839                    this.operator = token;
21840                    this.left = new ExpressionTree(0);
21841                    this.right = left;
21842                    break;
21843                case 3:
21844                    this.pointer = null;
21845                    this.operator = token;
21846                    this.left = right;
21847                    this.right = left;
21848                    break;
21849                default:
21850                    this.pointer = this.left = this.right = this.operator = null;
21851                    break;
21852            }
21853        }
21854        ExpressionTree.prototype.evaluate = function () {
21855            if (this.left && this.left.operator) {
21856                this.left.evaluate();
21857            }
21858            if (this.right && this.right.operator) {
21859                this.right.evaluate();
21860            }
21861            switch (this.operator) {
21862                case "+":
21863                    this.pointer = this.left.value() + this.right.value();
21864                    break;
21865                case "-":
21866                    this.pointer = this.left.value() - this.right.value();
21867                    break;
21868                case "*":
21869                case "X":
21870				case "x":
21871                    this.pointer = this.left.value() * this.right.value();
21872                    break;
21873                case "/":
21874                    this.pointer = this.left.value() / this.right.value();
21875                    break;
21876                default:
21877                    break;
21878            }
21879            return this.value();
21880        };
21881        ExpressionTree.prototype.value = function () {
21882            if (typeof this.pointer === "number") {
21883                return this.pointer;
21884            }
21885            if (this.pointer.charCodeAt(0) >= ZERO && this.pointer.charCodeAt(0) <= NINE || this.pointer.charCodeAt(0) === DEC_POINT) {
21886                this.pointer = parseFloat(this.pointer);
21887            }
21888            else if (this.pointer.charCodeAt(0) >= CAP_A && this.pointer.charCodeAt(0) <= CAP_Z) {
21889                this.pointer = this.getDomVal();
21890            }
21891            return this.pointer;
21892        };
21893        ExpressionTree.prototype.getDomVal = function () {
21894            var el = document.getElementById(this.pointer);
21895            if (!el) {
21896                el = document.querySelector("[data-formula-ref='" + this.pointer + "']");
21897            }
21898            return this.getElementValue(el);
21899        };
21900        ExpressionTree.prototype.getElementValue = function (el) {
21901            var val = 0, parser, text;
21902            if (el && el.getAttribute("data-formula")) {
21903                parser = new ExpressionParser(el.getAttribute("data-formula"));
21904                val = parser.evaluate();
21905            }
21906            else if (el && el.value) {
21907                val = parseFloat(el.value) || 0;
21908            }
21909            else if (el) {
21910                text = el.textContent || el.innerText;
21911                val = parseFloat(text) || 0;
21912            }
21913            return val;
21914        };
21915        return ExpressionTree;
21916    })();
21917    Epsilon.ExpressionTree = ExpressionTree;
21918    var ExpressionParser = (function () {
21919        function ExpressionParser(expr) {
21920            this.expr = expr;
21921            this.expression = null;
21922            this.operatorStack = [];
21923            this.valueStack = [];
21924            this.expression = expr;
21925        }
21926        ExpressionParser.prototype.parse = function () {
21927            var expr = this.expression.split(""), token, temp, valueToken = false;
21928            while (expr.length) {
21929                token = expr.shift();
21930                temp = [];
21931                if (token === "(") {
21932                    this.operatorStack.push("(");
21933                    valueToken = false;
21934                }
21935                else if (token === ")") {
21936					var iRetry = this.expression.length;
21937					
21938                    while (this.operatorStack.top() !== "(" && iRetry>=0) {
21939                        // Push a new node on the value stack
21940						
21941                        this.valueStack.push(new ExpressionTree(this.operatorStack.pop(), this.valueStack.pop(), this.valueStack.pop()));
21942						iRetry--;
21943                    }
21944                    // remove the opening bracket
21945                    this.operatorStack.pop();
21946                    valueToken = true;
21947                }
21948                else if (this.isValueFragment(token)) {
21949                    // Token is a number
21950                    temp.push(token);
21951                    while (expr.length && this.isValueFragment(expr[0])) {
21952                        temp.push(expr.shift());
21953                    }
21954                    this.valueStack.push(new ExpressionTree(temp.join("")));
21955                    valueToken = true;
21956                }
21957                else if (token === "-" && !valueToken) {
21958                    // Unary negative operator (negative sign)
21959                    while (expr.length && this.isValueFragment(expr[0])) {
21960                        temp.push(expr.shift());
21961                    }
21962                    this.valueStack.push(new ExpressionTree(token, new ExpressionTree(temp.join(""))));
21963                    valueToken = true;
21964                }
21965                else if (this.isOperator(token)) {
21966                    while (this.operatorStack.length && ((this.operatorStack.top() === "*" || this.operatorStack.top() === "/" || this.operatorStack.top() === "x") || ((token === "+" || token === "-") && (this.operatorStack.top() === "+" || this.operatorStack.top() === "-")))) {
21967                        this.valueStack.push(new ExpressionTree(this.operatorStack.pop(), this.valueStack.pop(), this.valueStack.pop()));
21968                    }
21969                    this.operatorStack.push(token);
21970                    valueToken = false;
21971                }
21972            }
21973            while (this.operatorStack.length) {
21974                this.valueStack.push(new ExpressionTree(this.operatorStack.pop(), this.valueStack.pop(), this.valueStack.pop()));
21975            }
21976        };
21977        ExpressionParser.prototype.isOperator = function (token) {
21978            return token === "+" || token === "-" || token === "*" || token === "/" || token === "x";
21979        };
21980        ExpressionParser.prototype.isValueFragment = function (token) {
21981            return (token.charCodeAt(0) >= ZERO && token.charCodeAt(0) <= NINE) || (token.charCodeAt(0) >= CAP_A && token.charCodeAt(0) <= CAP_Z) || token.charCodeAt(0) === DEC_POINT;
21982        };
21983        ExpressionParser.prototype.value = function () {
21984            return this.valueStack[0].evaluate();
21985        };
21986        ExpressionParser.prototype.evaluate = function (e) {
21987            if (arguments.length) {
21988                this.setExpression(e);
21989            }
21990            this.parse();
21991            return this.value();
21992        };
21993        ExpressionParser.prototype.setExpression = function (e) {
21994            this.expression = e;
21995            this.operatorStack = [];
21996            this.valueStack = [];
21997        };
21998        return ExpressionParser;
21999    })();
22000    Epsilon.ExpressionParser = ExpressionParser;
22001    function epsilon(els) {
22002        var parser = new ExpressionParser(), elements = els || document.querySelectorAll("[data-formula]"), i, value;
22003        if (elements.length === undefined) {
22004            elements = new Array(elements);
22005        }
22006        for (i = 0; elements && i < elements.length; i++) {
22007            value = parser.evaluate(elements[i].getAttribute("data-formula")).toString();
22008            if (elements[i].textContent !== undefined) {
22009                elements[i].textContent = value;
22010            }
22011            else {
22012                elements[i].innerText = value;
22013            }
22014        }
22015    }
22016    Epsilon.epsilon = epsilon;
22017})(Epsilon || (Epsilon = {}));
22018//# sourceMappingURL=epsilon.js.map
22019// file: /var/www/vhosts/codethislab.com/httpdocs/wp-content/plugins/ctl-wp-studio/classes/extensions/ctl-form-fields/php/../js/screenfull.min.js
22020/*!
22021* screenfull
22022* v5.1.0 - 2020-12-24
22023* (c) Sindre Sorhus; MIT License
22024*/
22025
22026!function(){"use strict";var c="undefined"!=typeof window&&void 0!==window.document?window.document:{},e="undefined"!=typeof module&&module.exports,s=function(){for(var e,n=[["requestFullscreen","exitFullscreen","fullscreenElement","fullscreenEnabled","fullscreenchange","fullscreenerror"],["webkitRequestFullscreen","webkitExitFullscreen","webkitFullscreenElement","webkitFullscreenEnabled","webkitfullscreenchange","webkitfullscreenerror"],["webkitRequestFullScreen","webkitCancelFullScreen","webkitCurrentFullScreenElement","webkitCancelFullScreen","webkitfullscreenchange","webkitfullscreenerror"],["mozRequestFullScreen","mozCancelFullScreen","mozFullScreenElement","mozFullScreenEnabled","mozfullscreenchange","mozfullscreenerror"],["msRequestFullscreen","msExitFullscreen","msFullscreenElement","msFullscreenEnabled","MSFullscreenChange","MSFullscreenError"]],l=0,r=n.length,t={};l<r;l++)if((e=n[l])&&e[1]in c){for(l=0;l<e.length;l++)t[n[0][l]]=e[l];return t}return!1}(),l={change:s.fullscreenchange,error:s.fullscreenerror},n={request:function(t,u){return new Promise(function(e,n){var l=function(){this.off("change",l),e()}.bind(this);this.on("change",l);var r=(t=t||c.documentElement)[s.requestFullscreen](u);r instanceof Promise&&r.then(l).catch(n)}.bind(this))},exit:function(){return new Promise(function(e,n){var l,r;this.isFullscreen?(l=function(){this.off("change",l),e()}.bind(this),this.on("change",l),(r=c[s.exitFullscreen]())instanceof Promise&&r.then(l).catch(n)):e()}.bind(this))},toggle:function(e,n){return this.isFullscreen?this.exit():this.request(e,n)},onchange:function(e){this.on("change",e)},onerror:function(e){this.on("error",e)},on:function(e,n){e=l[e];e&&c.addEventListener(e,n,!1)},off:function(e,n){e=l[e];e&&c.removeEventListener(e,n,!1)},raw:s};s?(Object.defineProperties(n,{isFullscreen:{get:function(){return Boolean(c[s.fullscreenElement])}},element:{enumerable:!0,get:function(){return c[s.fullscreenElement]}},isEnabled:{enumerable:!0,get:function(){return Boolean(c[s.fullscreenEnabled])}}}),e?module.exports=n:window.screenfull=n):e?module.exports={isEnabled:!1}:window.screenfull={isEnabled:!1}}();
22027// file: /var/www/vhosts/codethislab.com/httpdocs/wp-content/plugins/ctl-wp-studio/classes/extensions/ctl-form-fields/php/../js/bootstrap-colorpicker.min.js
22028/*!
22029 * Bootstrap Colorpicker - Bootstrap Colorpicker is a modular color picker plugin for Bootstrap 4.
22030 * @package bootstrap-colorpicker
22031 * @version v3.2.0
22032 * @license MIT
22033 * @link https://itsjavi.com/bootstrap-colorpicker/
22034 * @link https://github.com/itsjavi/bootstrap-colorpicker.git
22035 */
22036(function webpackUniversalModuleDefinition(root,factory){if(typeof exports==="object"&&typeof module==="object")module.exports=factory(require("jquery"));else if(typeof define==="function"&&define.amd)define("bootstrap-colorpicker",["jquery"],factory);else if(typeof exports==="object")exports["bootstrap-colorpicker"]=factory(require("jquery"));else root["bootstrap-colorpicker"]=factory(root["jQuery"])})(window,function(__WEBPACK_EXTERNAL_MODULE__0__){return function(modules){var installedModules={};function __webpack_require__(moduleId){if(installedModules[moduleId]){return installedModules[moduleId].exports}var module=installedModules[moduleId]={i:moduleId,l:false,exports:{}};modules[moduleId].call(module.exports,module,module.exports,__webpack_require__);module.l=true;return module.exports}__webpack_require__.m=modules;__webpack_require__.c=installedModules;__webpack_require__.d=function(exports,name,getter){if(!__webpack_require__.o(exports,name)){Object.defineProperty(exports,name,{enumerable:true,get:getter})}};__webpack_require__.r=function(exports){if(typeof Symbol!=="undefined"&&Symbol.toStringTag){Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"})}Object.defineProperty(exports,"__esModule",{value:true})};__webpack_require__.t=function(value,mode){if(mode&1)value=__webpack_require__(value);if(mode&8)return value;
vendor: 11,734 bytes, line 22036
22036if(mode&4&&typeof value==="object"&&value&&value.__esModule)return value;var ns=Object.create(null);__webpack_require__.r(ns);Object.defineProperty(ns,"default",{enumerable:true,value});if(mode&2&&typeof value!="string")for(var key in value)__webpack_require__.d(ns,key,function(key){return value[key]}.bind(null,key));return ns};__webpack_require__.n=function(module){var getter=module&&module.__esModule?function getDefault(){return module["default"]}:function getModuleExports(){return module};__webpack_require__.d(getter,"a",getter);return getter};__webpack_require__.o=function(object,property){return Object.prototype.hasOwnProperty.call(object,property)};__webpack_require__.p="";return __webpack_require__(__webpack_require__.s=7)}([function(module,exports){module.exports=__WEBPACK_EXTERNAL_MODULE__0__},function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:true});var _createClass=function(){function defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||false;descriptor.configurable=true;if("value"in descriptor)descriptor.writable=true;Object.defineProperty(target,descriptor.key,descriptor)}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor}}();var _jquery=__webpack_require__(0);var _jquery2=_interopRequireDefault(_jquery);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function")}}var Extension=function(){function Extension(colorpicker){var options=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};_classCallCheck(this,Extension);this.colorpicker=colorpicker;this.options=options;if(!(this.colorpicker.element&&this.colorpicker.element.length)){throw new Error("Extension: this.colorpicker.element is not valid")}this.colorpicker.element.on("colorpickerCreate.colorpicker-ext",_jquery2.default.proxy(this.onCreate,this));this.colorpicker.element.on("colorpickerDestroy.colorpicker-ext",_jquery2.default.proxy(this.onDestroy,this));this.colorpicker.element.on("colorpickerUpdate.colorpicker-ext",_jquery2.default.proxy(this.onUpdate,this));this.colorpicker.element.on("colorpickerChange.colorpicker-ext",_jquery2.default.proxy(this.onChange,this));this.colorpicker.element.on("colorpickerInvalid.colorpicker-ext",_jquery2.default.proxy(this.onInvalid,this));this.colorpicker.element.on("colorpickerShow.colorpicker-ext",_jquery2.default.proxy(this.onShow,this));this.colorpicker.element.on("colorpickerHide.colorpicker-ext",_jquery2.default.proxy(this.onHide,this));this.colorpicker.element.on("colorpickerEnable.colorpicker-ext",_jquery2.default.proxy(this.onEnable,this));this.colorpicker.element.on("colorpickerDisable.colorpicker-ext",_jquery2.default.proxy(this.onDisable,this))}_createClass(Extension,[{key:"resolveColor",value:function resolveColor(color){var realColor=arguments.length>1&&arguments[1]!==undefined?arguments[1]:true;return false}},{key:"onCreate",value:function onCreate(event){}},{key:"onDestroy",value:function onDestroy(event){this.colorpicker.element.off(".colorpicker-ext")}},{key:"onUpdate",value:function onUpdate(event){}},{key:"onChange",value:function onChange(event){}},{key:"onInvalid",value:function onInvalid(event){}},{key:"onHide",value:function onHide(event){}},{key:"onShow",value:function onShow(event){}},{key:"onDisable",value:function onDisable(event){}},{key:"onEnable",value:function onEnable(event){}}]);return Extension}();exports.default=Extension;module.exports=exports.default},function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.ColorItem=exports.HSVAColor=undefined;var _createClass=function(){function defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||false;descriptor.configurable=true;if("value"in descriptor)descriptor.writable=true;Object.defineProperty(target,descriptor.key,descriptor)}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor}}();var _color=__webpack_require__(16);var _color2=_interopRequireDefault(_color);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function")}}var HSVAColor=function(){function HSVAColor(h,s,v,a){_classCallCheck(this,HSVAColor);this.h=isNaN(h)?0:h;this.s=isNaN(s)?0:s;this.v=isNaN(v)?0:v;this.a=isNaN(h)?1:a}_createClass(HSVAColor,[{key:"toString",value:function toString(){return this.h+", "+this.s+"%, "+this.v+"%, "+this.a}}]);return HSVAColor}();var ColorItem=function(){_createClass(ColorItem,[{key:"api",value:function api(fn){for(var _len=arguments.length,args=Array(_len>1?_len-1:0),_key=1;_key<_len;_key++){args[_key-1]=arguments[_key]}if(arguments.length===0){return this._color}var result=this._color[fn].apply(this._color,args);if(!(result instanceof _color2.default)){return result}return new ColorItem(result,this.format)}},{key:"original",get:function get(){return this._original}}],[{key:"HSVAColor",get:function get(){return HSVAColor}}]);function ColorItem(){var color=arguments.length>0&&arguments[0]!==undefined?arguments[0]:null;var format=arguments.length>1&&arguments[1]!==undefined?arguments[1]:null;_classCallCheck(this,ColorItem);this.replace(color,format)}_createClass(ColorItem,[{key:"replace",value:function replace(color){var format=arguments.length>1&&arguments[1]!==undefined?arguments[1]:null;format=ColorItem.sanitizeFormat(format);this._original={color,format,valid:true};this._color=ColorItem.parse(color);if(this._color===null){this._color=(0,_color2.default)();this._original.valid=false;return}this._format=format?format:ColorItem.isHex(color)?"hex":this._color.model}},{key:"isValid",value:function isValid(){return this._original.valid===true}},{key:"setHueRatio",value:function setHueRatio(h){this.hue=(1-h)*360}},{key:"setSaturationRatio",value:function setSaturationRatio(s){this.saturation=s*100}},{key:"setValueRatio",value:function setValueRatio(v){this.value=(1-v)*100}},{key:"setAlphaRatio",value:function setAlphaRatio(a){this.alpha=1-a}},{key:"isDesaturated",value:function isDesaturated(){return this.saturation===0}},{key:"isTransparent",value:function isTransparent(){return this.alpha===0}},{key:"hasTransparency",value:function hasTransparency(){return this.hasAlpha()&&this.alpha<1}},{key:"hasAlpha",value:function hasAlpha(){return!isNaN(this.alpha)}},{key:"toObject",value:function toObject(){return new HSVAColor(this.hue,this.saturation,this.value,this.alpha)}},{key:"toHsva",value:function toHsva(){return this.toObject()}},{key:"toHsvaRatio",value:function toHsvaRatio(){return new HSVAColor(this.hue/360,this.saturation/100,this.value/100,this.alpha)}},{key:"toString",value:function toString(){return this.string()}},{key:"string",value:function string(){var format=arguments.length>0&&arguments[0]!==undefined?arguments[0]:null;format=ColorItem.sanitizeFormat(format?format:this.format);if(!format){return this._color.round().string()}if(this._color[format]===undefined){throw new Error("Unsupported color format: '"+format+"'")}var str=this._color[format]();return str.round?str.round().string():str}},{key:"equals",value:function equals(color){color=color instanceof ColorItem?color:new ColorItem(color);if(!color.isValid()||!this.isValid()){return false}return this.hue===color.hue&&this.saturation===color.saturation&&this.value===color.value&&this.alpha===color.alpha}},{key:"getClone",value:function getClone(){return new ColorItem(this._color,this.format)}},{key:"getCloneHueOnly",value:function getCloneHueOnly(){return new ColorItem([this.hue,100,100,1],this.format)}},{key:"getCloneOpaque",value:function getCloneOpaque(){return new ColorItem(this._color.alpha(1),this.format)}},{key:"toRgbString",value:function toRgbString(){return this.string("rgb")}},{key:"toHexString",value:function toHexString(){return this.string("hex")}},{key:"toHslString",value:function toHslString(){return this.string("hsl")}},{key:"isDark",value:function isDark(){return this._color.isDark()}},{key:"isLight",value:function isLight(){return this._color.isLight()}},{key:"generate",value:function generate(formula){var hues=[];if(Array.isArray(formula)){hues=formula}else if(!ColorItem.colorFormulas.hasOwnProperty(formula)){throw new Error("No color formula found with the name '"+formula+"'.")}else{hues=ColorItem.colorFormulas[formula]}var colors=[],mainColor=this._color,format=this.format;hues.forEach(function(hue){var levels=[hue?(mainColor.hue()+hue)%360:mainColor.hue(),mainColor.saturationv(),mainColor.value(),mainColor.alpha()];colors.push(new ColorItem(levels,format))});return colors}},{key:"hue",get:function get(){return this._color.hue()},set:function set(value){this._color=this._color.hue(value)}},{key:"saturation",get:function get(){return this._color.saturationv()},set:function set(value){this._color=this._color.saturationv(value)}},{key:"value",get:function get(){return this._color.value()},set:function set(value){this._color=this._color.value(value)}},{key:"alpha",get:function get(){var a=this._color.alpha();return isNaN(a)?1:a},set:function set(value){this._color=this._color.alpha(Math.round(value*100)/100)}},{key:"format",get:function get(){return this._format?this._format:this._color.model},set:function set(value){this._format=ColorItem.sanitizeFormat(value)}}],[{key:"parse",value:function parse(color){if(color instanceof _color2.default){return color}if(color instanceof ColorItem){return color._color}var format=null;if(color instanceof HSVAColor){color=[color.h,color.s,color.v,isNaN(color.a)?1:color.a]}else{color=ColorItem.sanitizeString(color)}if(color===null){return null}if(Array.isArray(color)){format="hsv"}try{return(0,_color2.default)(color,format)}catch(e){return null}}},{key:"sanitizeString",value:function sanitizeString(str){if(!(typeof str==="string"||str instanceof String)){return str}if(str.match(/^[0-9a-f]{2,}$/i)){return"#"+str}if(str.toLowerCase()==="transparent"){return"#FFFFFF00"}return str}},{key:"isHex",value:function isHex(str){if(!(typeof str==="string"||str instanceof String)){return false}return!!str.match(/^#?[0-9a-f]{2,}$/i)}},{key:"sanitizeFormat",value:function sanitizeFormat(format){switch(format){case"hex":case"hex3":case"hex4":case"hex6":case"hex8":return"hex";case"rgb":case"rgba":case"keyword":case"name":return"rgb";case"hsl":case"hsla":case"hsv":case"hsva":case"hwb":case"hwba":return"hsl";default:return""}}}]);return ColorItem}();ColorItem.colorFormulas={complementary:[180],triad:[0,120,240],tetrad:[0,90,180,270],splitcomplement:[0,72,216]};exports.default=ColorItem;exports.HSVAColor=HSVAColor;exports.ColorItem=ColorItem},function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:true});var sassVars={bar_size_short:16,base_margin:6,columns:6};var sliderSize=sassVars.bar_size_short*sassVars.columns+sassVars.base_margin*(sassVars.columns-1);exports.default={customClass:null,color:false,fallbackColor:false,format:"auto",horizontal:false,inline:false,container:false,popover:{animation:true,placement:"bottom",fallbackPlacement:"flip"},debug:false,input:"input",addon:".colorpicker-input-addon",auto
vendor: 26,488 bytes, line 22036
22036InputFallback:true,useHashPrefix:true,useAlpha:true,template:'<div class="colorpicker">\n      <div class="colorpicker-saturation"><i class="colorpicker-guide"></i></div>\n      <div class="colorpicker-hue"><i class="colorpicker-guide"></i></div>\n      <div class="colorpicker-alpha">\n        <div class="colorpicker-alpha-color"></div>\n        <i class="colorpicker-guide"></i>\n      </div>\n    </div>',extensions:[{name:"preview",options:{showText:true}}],sliders:{saturation:{selector:".colorpicker-saturation",maxLeft:sliderSize,maxTop:sliderSize,callLeft:"setSaturationRatio",callTop:"setValueRatio"},hue:{selector:".colorpicker-hue",maxLeft:0,maxTop:sliderSize,callLeft:false,callTop:"setHueRatio"},alpha:{selector:".colorpicker-alpha",childSelector:".colorpicker-alpha-color",maxLeft:0,maxTop:sliderSize,callLeft:false,callTop:"setAlphaRatio"}},slidersHorz:{saturation:{selector:".colorpicker-saturation",maxLeft:sliderSize,maxTop:sliderSize,callLeft:"setSaturationRatio",callTop:"setValueRatio"},hue:{selector:".colorpicker-hue",maxLeft:sliderSize,maxTop:0,callLeft:"setHueRatio",callTop:false},alpha:{selector:".colorpicker-alpha",childSelector:".colorpicker-alpha-color",maxLeft:sliderSize,maxTop:0,callLeft:"setAlphaRatio",callTop:false}}};module.exports=exports.default},function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:true});var _typeof=typeof Symbol==="function"&&typeof Symbol.iterator==="symbol"?function(obj){return typeof obj}:function(obj){return obj&&typeof Symbol==="function"&&obj.constructor===Symbol&&obj!==Symbol.prototype?"symbol":typeof obj};var _createClass=function(){function defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||false;descriptor.configurable=true;if("value"in descriptor)descriptor.writable=true;Object.defineProperty(target,descriptor.key,descriptor)}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor}}();var _Extension2=__webpack_require__(1);var _Extension3=_interopRequireDefault(_Extension2);var _jquery=__webpack_require__(0);var _jquery2=_interopRequireDefault(_jquery);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function")}}function _possibleConstructorReturn(self,call){if(!self){throw new ReferenceError("this hasn't been initialised - super() hasn't been called")}return call&&(typeof call==="object"||typeof call==="function")?call:self}function _inherits(subClass,superClass){if(typeof superClass!=="function"&&superClass!==null){throw new TypeError("Super expression must either be null or a function, not "+typeof superClass)}subClass.prototype=Object.create(superClass&&superClass.prototype,{constructor:{value:subClass,enumerable:false,writable:true,configurable:true}});if(superClass)Object.setPrototypeOf?Object.setPrototypeOf(subClass,superClass):subClass.__proto__=superClass}var defaults={colors:null,namesAsValues:true};var Palette=function(_Extension){_inherits(Palette,_Extension);_createClass(Palette,[{key:"colors",get:function get(){return this.options.colors}}]);function Palette(colorpicker){var options=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};_classCallCheck(this,Palette);var _this=_possibleConstructorReturn(this,(Palette.__proto__||Object.getPrototypeOf(Palette)).call(this,colorpicker,_jquery2.default.extend(true,{},defaults,options)));if(!Array.isArray(_this.options.colors)&&_typeof(_this.options.colors)!=="object"){_this.options.colors=null}return _this}_createClass(Palette,[{key:"getLength",value:function getLength(){if(!this.options.colors){return 0}if(Array.isArray(this.options.colors)){return this.options.colors.length}if(_typeof(this.options.colors)==="object"){return Object.keys(this.options.colors).length}return 0}},{key:"resolveColor",value:function resolveColor(color){var realColor=arguments.length>1&&arguments[1]!==undefined?arguments[1]:true;if(this.getLength()<=0){return false}if(Array.isArray(this.options.colors)){if(this.options.colors.indexOf(color)>=0){return color}if(this.options.colors.indexOf(color.toUpperCase())>=0){return color.toUpperCase()}if(this.options.colors.indexOf(color.toLowerCase())>=0){return color.toLowerCase()}return false}if(_typeof(this.options.colors)!=="object"){return false}if(!this.options.namesAsValues||realColor){return this.getValue(color,false)}return this.getName(color,this.getName("#"+color))}},{key:"getName",value:function getName(value){var defaultValue=arguments.length>1&&arguments[1]!==undefined?arguments[1]:false;if(!(typeof value==="string")||!this.options.colors){return defaultValue}for(var name in this.options.colors){if(!this.options.colors.hasOwnProperty(name)){continue}if(this.options.colors[name].toLowerCase()===value.toLowerCase()){return name}}return defaultValue}},{key:"getValue",value:function getValue(name){var defaultValue=arguments.length>1&&arguments[1]!==undefined?arguments[1]:false;if(!(typeof name==="string")||!this.options.colors){return defaultValue}if(this.options.colors.hasOwnProperty(name)){return this.options.colors[name]}return defaultValue}}]);return Palette}(_Extension3.default);exports.default=Palette;module.exports=exports.default},function(module,exports,__webpack_require__){"use strict";module.exports={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],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],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]}},function(module,exports,__webpack_require__){var cssKeywords=__webpack_require__(5);var reverseKeywords={};for(var key in cssKeywords){if(cssKeywords.hasOwnProperty(key)){reverseKeywords[cssKeywords[key]]=key}}var convert=module.exports={rgb:{channels:3,labels:"rgb"},hsl:{channels:3,labels:"hsl"},hsv:{channels:3,labels:"hsv"},hwb:{channels:3,labels:"hwb"},cmyk:{channels:4,labels:"cmyk"},xyz:{channels:3,labels:"xyz"},lab:{channels:3,labels:"lab"},lch:{channels:3,labels:"lch"},hex:{channels:1,labels:["hex"]},keyword:{channels:1,labels:["keyword"]},ansi16:{channels:1,labels:["ansi16"]},ansi256:{channels:1,labels:["ansi256"]},hcg:{channels:3,labels:["h","c","g"]},apple:{channels:3,labels:["r16","g16","b16"]},gray:{channels:1,labels:["gray"]}};for(var model in convert){if(convert.hasOwnProperty(model)){if(!("channels"in convert[model])){throw new Error("missing channels property: "+model)}if(!("labels"in convert[model])){throw new Error("missing channel labels property: "+model)}if(convert[model].labels.length!==convert[model].channels){throw new Error("channel and label counts mismatch: "+model)}var channels=convert[model].channels;var labels=convert[model].labels;delete convert[model].channels;delete convert[model].labels;Object.defineProperty(convert[model],"channels",{value:channels});Object.defineProperty(convert[model],"labels",{value:labels})}}convert.rgb.hsl=function(rgb){var r=rgb[0]/255;var g=rgb[1]/255;var b=rgb[2]/255;var min=Math.min(r,g,b);var max=Math.max(r,g,b);var delta=max-min;var h;var s;var l;if(max===min){h=0}else if(r===max){h=(g-b)/delta}else if(g===max){h=2+(b-r)/delta}else if(b===max){h=4+(r-g)/delta}h=Math.min(h*60,360);if(h<0){h+=360}l=(min+max)/2;if(max===min){s=0}else if(l<=.5){s=delta/(max+min)}else{s=delta/(2-max-min)}return[h,s*100,l*100]};convert.rgb.hsv=function(rgb){var rdif;var gdif;var bdif;var h;var s;var r=rgb[0]/255;var g=rgb[1]/255;var b=rgb[2]/255;var v=Math.max(r,g,b);var diff=v-Math.min(r,g,b);var diffc=function(c){return(v-c)/6/diff+1/2};if(diff===0){h=s=0}else{s=diff/v;rdif=diffc(r);gdif=diffc(g);bdif=diffc(b);if(r===v){h=bdif-gdif}else if(g===v){h=1/3+rdif-bdif}else if(b===v){h=2/3+gdif-rdif}if(h<0){h+=1}else if(h>1){h-=1}}return[h*360,s*100,v*100]};convert.rgb.hwb=function(rgb){var r=rgb[0];var g=rgb[1];var b=rgb[2];var h=convert.rgb.hsl(rgb)[0];var w=1/255*Math.min(r,Math.min(g,b));b=1-1/255*Math.max(r,Math.max(g,b));return[h,w*100,b*100]};convert.rgb.cmyk=function(rgb){var r=rgb[0]/255;var g=rgb[1]/255;var b=rgb[2]/255;var c;var m;var y;var k;k=Math.min(1-r,1-g,1-b);c=(1-r-k)/(1-k)||0;m=(1-g-k)/(1-k)||0;y=(1-b-k)/(1-k)||0;return[c*100,m*100,y*100,k*100]};function comparativeDistance(x,y){return Math.pow(x[0]-y[0],2)+Math.pow(x[1]-y[1],2)+Math.pow(x[2]-y[2],2)}convert.rgb.keyword=function(rgb){var reversed=reverseKeywords[rgb];if(reversed){return reversed}var currentClosestDistance=Infinity;var currentClosestKeyword;for(var keyword in cssKeywords){if(cssKeywords.hasOwnProperty(keyword)){var value=cssKeywords[keyword];var distance=comparativeDistance(rgb,value);if(distance<currentClosestDistance){currentClosestDistance=distance;currentClosestKeyword=keyword}}}return currentClosestKeyword};convert.keyword.rgb=function(keyword){return cssKeywords[keyword]};convert.rgb.xyz=function(rgb){var r=rgb[0]/255;var g=rgb[1]/255;var b=rgb[2]/255;r=r>.04045?Math.pow((r+.055)/1.055,2.4):r/12.92;g=g>.04045?Math.pow((g+.055)/1.055,2.4):g/12.92;b=b>.04045?Math.pow((b+.055)/1.055,2.4):b/12.92;var x=r*.4124+g*.3576+b*.1805;var y=r*.2126+g*.7152+b*.0722;var z=r*.0193+g*.1192+b*.9505;return[x*100,y*100,z*100]};convert.rgb.lab=function(rgb){var xyz=convert.rgb.xyz(rgb);var x=xyz[0];var y=xyz[1];var z=xyz[2];var l;var a;var b;x/=95.047;y/=100;z/=108.883;x=x>.008856?Math.pow(x,1/3):7.787*x+16/116;y=y>.008856?Math.pow(y,1/3):7.787*y+16/116;z=z>.008856?Math.pow(z,1/3):7.787*z+16/116;l=116*y-16;a=500*(x-y);b=200*(y-z);return[l,a,b]};convert.hsl.rgb=function(hsl){var h=hsl[0]/360;var s=hsl[1]/100;var l=hsl[2]/100;var t1;var t2;var t3;var rgb;var val;if(s===0){val=l*255;return[val,val,val]}if(l<.5){t2=l*(1+s)}else{t2=l+s-l*s}t1=2*l-t2;rgb=[0,0,0];for(var i=0;i<3;i++){t3=h+1/3*-(i-1);if(t3<0){t3++}if(t3>1){t3--}if(6*t3<1){val=t1+(t2-t1)*6*t3}else if(2*t3<1){val=t2}else if(3*t3<2){val=t1+(t2-t1)*(2/3-t3)*6}else{val=t1}rgb[i]=val*255}return rgb};convert.hsl.hsv=function(hsl){var h=hsl[0];var s=hsl[1]/100;var l=hsl[2]/100;var smin=s;var lmin=Math.max(l,.01);var sv;var v;l*=2;s*=l<=1?l:2-l;smin*=lmin<=1?lmin:2-lmin;v=(l+s)/2;sv=l===0?2*smin/(lmin+smin):2*s/(l+s);return[h,sv*100,v*100]};convert.hsv.rgb=function(hsv){var h=hsv[0]/60;var s=hsv[1]/100;var v=hsv[2]/100;var hi=Math.floor(h)%6;var f=h-Math.floor(h);var p=255*v*(1-s);var q=255*v*(1-s*f);var t=255*v*(1-s*(1-f));v*=255;switch(hi){case 0:return[v,t,p];case 1:return[q,v,p];case 2:return[p,v,t];case 3:return[p,q,v];case 4:return[t,p,v];case 5:return[v,p,q]}};convert.hsv.hsl=function(hsv){var h=hsv[0];var s=hsv[1]/100;var v=hsv[2]/100;var vmin=Math.max(v,.01);var lmin;var sl;var l;l=(2-s)*v;lmin=(2-s)*vmin;sl=s*vmin;sl/=lmin<=1?lmin:2-lmin;sl=sl||0;l/=2;return[h,sl*100,l*100]};convert.hwb.rgb=function(hwb){var h=hwb[0]/360;var wh=hwb[1]/100;var bl=hwb[2]/100;var ratio=wh+bl;var i;var v;var f;var n;if(ratio>1){wh/=ratio;bl/=ratio}i=Math.floor(6*h);v=1-bl;f=6*h-i;if((i&1)!==0){f=1-f}n=wh+f*(v-wh);var r;var g;var b;switch(i){default:case 6:case 0:r=v;g=n;b=wh;break;case 1:r=n;g=v;b=wh;break;case 2:r=wh;g=v;b=n;break;case 3:r=wh;g=n;b=v;break;case 4:r=n;g=wh;b=v;break;case 5:r=v;g=wh;b=n;break}return[r*255,g*255,b*255]};convert.cmyk.rgb=function(cmyk){var c=cmyk[0]/100;var m=cmyk[1]/100;var y=cmyk[2]/100;var k=cmyk[3]/100;var r;var g;var b;r=1-Math.min(1,c*(1-k)+k);g=1-Math.min(1,m*(1-k)+k);b=1-Math.min(1,y*(1-k)+k);return[r*255,g*255,b*255]};convert.xyz.rgb=function(xyz){var x=xyz[0]/100;var y=xyz[1]/100;var z=xyz[2]/100;var r;var g;var b;r=x*3.2406+y*-1.5372+z*-.4986;g=x*-.9689+y*1.8758+z*.0415;b=x*.0557+y*-.204+z*1.057;r=r>.0031308?1.055*Math.pow(r,1/2.4)-.055:r*12.92;g=g>.0031308?1.055*Math.pow(g,1/2.4)-.055:g*12.92;b=b>.0031308?1.055*Math.pow(b,1/2.4)-.055:b*12.92;r=Math.min(Math.max(0,r),1);g=Math.min(Math.max(0,g),1);b=Math.min(Math.max(0,b),1);return[r*255,g*255,b*255]};convert.xyz.lab=function(xyz){var x=xyz[0];var y=xyz[1];var z=xyz[2];var l;var a;var b;x/=95.047;y/=100;z/=108.883;x=x>.008856?Math.pow(x,1/3):7.787*x+16/116;y=y>.008856?Math.pow(y,1/3):7.787*y+16/116;z=z>.008856?Math.pow(z,1/3):7.787*z+16/116;l=116*y-16;a=500*(x-y);b=200*(y-z);return[l,a,b]};convert.lab.xyz=function(lab){var l=lab[0];var a=lab[1];var b=lab[2];var x;var y;var z;y=(l+16)/116;x=a/500+y;z=y-b/200;var y2=Math.pow(y,3);var x2=Math.pow(x,3);var z2=Math.pow(z,3);y=y2>.008856?y2:(y-16/116)/7.787;x=x2>.008856?x2:(x-16/116)/7.787;z=z2>.008856?z2:(z-16/116)/7.787;x*=95.047;y*=100;z*=108.883;return[x,y,z]};convert.lab.lch=function(lab){var l=lab[0];var a=lab[1];var b=lab[2];var hr;var h;var c;hr=Math.atan2(b,a);h=hr*360/2/Math.PI;if(h<0){h+=360}c=Math.sqrt(a*a+b*b);return[l,c,h]};convert.lch.lab=function(lch){var l=lch[0];var c=lch[1];var h=lch[2];var a;var b;var hr;hr=h/360*2*Math.PI;a=c*Math.cos(hr);b=c*Math.sin(hr);return[l,a,b]};convert.rgb.ansi16=function(args){var r=args[0];var g=args[1];var b=args[2];var value=1 in arguments?arguments[1]:convert.rgb.hsv(args)[2];value=Math.round(value/50);if(value===0){return 30}var ansi=30+(Math.round(b/255)<<2|Math.round(g/255)<<1|Math.round(r/255));if(value===2){ansi+=60}return ansi};convert.hsv.ansi16=function(args){return convert.rgb.ansi16(convert.hsv.rgb(args),args[2])};convert.rgb.ansi256=function(args){var r=args[0];var g=args[1];var b=args[2];if(r===g&&g===b){if(r<8){return 16}if(r>248){return 231}return Math.round((r-8)/247*24)+232}var ansi=16+36*Math.round(r/255*5)+6*Math.round(g/255*5)+Math.round(b/255*5);return ansi};convert.ansi16.rgb=function(args){var color=args%10;if(color===0||color===7){if(args>50){color+=3.5}color=color/10.5*255;return[color,color,color]}var mult=(~~(args>50)+1)*.5;var r=(color&1)*mult*255;var g=(color>>1&1)*mult*255;var b=(color>>2&1)*mult*255;return[r,g,b]};convert.ansi256.rgb=function(args){if(args>=232){var c=(args-232)*10+8;return[c,c,c]}args-=16;var rem;var r=Math.floor(args/36)/5*255;var g=Math.floor((rem=args%36)/6)/5*255;var b=rem%6/5*255;return[r,g,b]};convert.rgb.hex=function(args){var integer=((Math.round(args[0])&255)<<16)+((Math.round(args[1])&255)<<8)+(Math.round(args[2])&255);var string=integer.toString(16).toUpperCase();return"000000".substring(string.length)+string};convert.hex.rgb=function(args){var match=args.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);if(!match){return[0,0,0]}var colorString=match[0];if(match[0].length===3){colorString=colorString.split("").map(function(char){return char+char}).join("")}var integer=parseInt(colorString,16);var r=integer>>16&255;var g=integer>>8&255;var b=integer&255;return[r,g,b]};convert.rgb.hcg=function(rgb){var r=rgb[0]/255;var g=rgb[1]/255;var b=rgb[2]/255;var max=Math.max(Math.max(r,g),b);var min=Math.min(Math.min(r,g),b);var chroma=max-min;var grayscale;var hue;if(chroma<1){grayscale=min/(1-chroma)}else{grayscale=0}if(chroma<=0){hue=0}else if(max===r){hue=(g-b)/chroma%6}else if(max===g){hue=2+(b-r)/chroma}else{hue=4+(r-g)/chroma+4}hue/=6;hue%=1;return[hue*360,chroma*100,grayscale*100]};convert.hsl.hcg=function(hsl){var s=hsl[1]/100;var l=hsl[2]/100;var c=1;var f=0;if(l<.5){c=2*s*l}else{c=2*s*(1-l)}if(c<1){f=(l-.5*c)/(1-c)}return[hsl[0],c*100,f*100]};convert.hsv.hcg=function(hsv){var s=hsv[1]/100;var v=hsv[2]/100;var c=s*v;var f=0;if(c<1){f=(v-c)/(1-c)}return[hsv[0],c*100,f*100]};convert.hcg.rgb=function(hcg){var h=hcg[0]/360;var c=hcg[1]/100;var g=hcg[2]/100;if(c===0){return[g*255,g*255,g*255]}var pure=[0,0,0];var hi=h%1*6;var v=hi%1;var w=1-v;var mg=0;switch(Math.floor(hi)){case 0:pure[0]=1;pure[1]=v;pure[2]=0;break;case 1:pure[0]=w;pure[1]=1;pure[2]=0;break;case 2:pure[0]=0;pure[1]=1;pure[2]=v;break;case 3:pure[0]=0;pure[1]=w;pure[2]=1;break;case 4:pure[0]=v;pure[1]=0;pure[2]=1;break;default:pure[0]=1;pure[1]=0;pure[2]=w}mg=(1-c)*g;return[(c*pure[0]+mg)*255,(c*pure[1]+mg)*255,(c*pure[2]+mg)*255]};convert.hcg.hsv=function(hcg){var c=hcg[1]/100;var g=hcg[2]/100;var v=c+g*(1-c);var f=0;if(v>0){f=c/v}return[hcg[0],f*100,v*100]};convert.hcg.hsl=function(hcg){var c=hcg[1]/100;var g=hcg[2]/100;var l=g*(1-c)+.5*c;var s=0;if(l>0&&l<.5){s=c/(2*l)}else if(l>=.5&&l<1){s=c/(2*(1-l))}return[hcg[0],s*100,l*100]};convert.hcg.hwb=function(hcg){var c=hcg[1]/100;var g=hcg[2]/100;var v=c+g*(1-c);return[hcg[0],(v-c)*100,(1-v)*100]};convert.hwb.hcg=function(hwb){var w=hwb[1]/100;var b=hwb[2]/100;var v=1-b;var c=v-w;var g=0;if(c<1){g=(v-c)/(1-c)}return[hwb[0],c*100,g*100]};convert.apple.rgb=function(apple){return[apple[0]/65535*255,apple[1]/65535*255,apple[2]/65535*255]};convert.rgb.apple=function(rgb){return[rgb[0]/255*65535,rgb[1]/255*65535,rgb[2]/255*65535]};convert.gray.rgb=function(args){return[args[0]/100*255,args[0]/100*255,args[0]/100*255]};convert.gray.hsl=convert.gray.hsv=function(args){return[0,0,args[0]]};convert.gray.hwb=function(gray){return[0,100,gray[0]]};convert.gray.cmyk=function(gray){return[0,0,0,gray[0]]};convert.gray.lab=function(gray){return[gray[0],0,0]};convert.gray.hex=function(gray){var val=Math.round(gray[0]/100*255)&255;var integer=(val<<16)+(val<<8)+val;var string=integer.toString(16).toUpperCase();return"000000".substring(string.length)+string};convert.rgb.gray=function(rgb){var val=(rgb[0]+rgb[1]+rgb[2])/3;return[val/255*100]}},function(module,exports,__webpack_require__){"use strict";var _typeof=typeof Symbol==="function"&&typeof Symbol.iterator==="symbol"?function(obj){return typeof obj}:function(obj){return obj&&typeof Symbol==="function"&&obj.constructor===Symbol&&obj!==Symbol.prototype?"symbol":typeof obj};var _Colorpicker=__webpack_require__(8);var _Colorpicker2=_interopRequireDefault(_Colorpicker);var _jquery=__webpack_require__(0);var _jquery2=_interopRequireDefault(_jquery);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var plugin="colorpicker";_jquery2.default[plugin]=_Colorpicker2.default;_jquery2.default.fn[plugin]=function(option){var fnArgs=Array.prototype.slice.call(arguments,1),isSingleElement=this.length===1,returnValue=null;var $elements=this.each(function(){var $this=(0,_jquery2.default)(this),inst=$this.data(plugin),options=(typeof option==="undefined"?"undefined":_typeof(option))==="object"?option:{};if(!inst){inst=new _Colorpicker2.default(this,options);$this.data(plugin,inst)}if(!isSingleElement){return}returnValue=$this;if(typeof option==="string"){if(option==="colorpicker"){returnValue=inst}else if(_jquery2.default.isFunction(inst[option])){returnValue=inst[option].apply(inst,fnArgs)}else{returnValue=inst[option]}}});return isSingleElement?returnValue:$elements};_jquery2.default.fn[plugin].constructor=_Colorpicker2.default},function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:true});var _createClass=function(){function defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||false;descriptor.configurable=true;if("value"in descriptor)descriptor.writable=true;Object.defineProperty(target,descriptor.key,descriptor)}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor}}();var _Extension=__webpack_require__(1);var _Extension2=_interopRequireDefault(_Extension);var _options=__webpack_require__(3);var _options2=_interopRequireDefault(_options);var _extensions=__webpack_require__(9);var _extensions2=_interopRequireDefault(_extensions);var _jquery=__webpack_require__(0);var _jquery2=_interopRequireDefault(_jquery);var _SliderHandler=__webpack_require__(13);var _SliderHandler2=_interopRequireDefault(_SliderHandler);var _PopupHandler=__webpack_require__(14);var _PopupHandler2=_interopRequireDefault(_PopupHandler);var _InputHandler=__webpack_require__(15);var _InputHandler2=_interopRequireDefault(_InputHandler);var _ColorHandler=__webpack_require__(22);var _ColorHandler2=_interopRequireDefault(_ColorHandler);var _PickerHandler=__webpack_require__(23);var _PickerHandler2=_interopRequireDefault(_PickerHandler);var _AddonHandler=__webpack_require__(24);var _AddonHandler2=_interopRequireDefault(_AddonHandler);var _ColorItem=__webpack_require__(2);var _ColorItem2=_interopRequireDefault(_ColorItem);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function")}}var colorPickerIdCounter=0;var root=typeof self!=="undefined"?self:undefined;var Colorpicker=function(){_createClass(Colorpicker,[{key:"color",get:function get(){return this.colorHandler.color}},{key:"format",get:function get(){return this.colorHandler.format}},{key:"picker",get:function get(){return this.pickerHandler.picker}}],[{key:"Color",get:function get(){return _ColorItem2.default}},{key:"Extension",get:function get(){return _Extension2.default}}]);function Colorpicker(element,options){_classCallCheck(this,Colorpicker);colorPickerIdCounter+=1;this.id=colorPickerIdCounter;this.lastEvent={alias:null,e:null};this.element=(0,_jquery2.default)(element).addClass("colorpicker-element").attr("data-colorpicker-id",this.id);this.options=_jquery2.default.extend(true,{},_options2.default,options,this.element.data());this.disabled=false;this.extensions=[];this.container=this.options.container===true||this.options.container!==true&&this.options.inline===true?this.element:this.options.container;this.container=this.container!==false?(0,_jquery2.default)(this.container):false;this.inputHandler=new _InputHandler2.default(this);this.colorHandler=new _ColorHandler2.default(this);this.sliderHandler=new _SliderHandler2.default(this);this.popupHandler=new _PopupHandler2.default(this,root);this.pickerHandler=new _PickerHandler2.default(this);this.addonHandler=new _AddonHandler2.default(this);this.init();(0,_jquery2.default)(_jquery2.default.proxy(function(){this.trigger("colorpickerCreate")},this))}_createClass(Colorpicker,[{key:"init",value:function init(){this.addonHandler.bind();this.inputHandler.bind();this.initExtensions();this.colorHandler.bind();this.pickerHandler.bind();this.sliderHandler.bind();this.popupHandler.bind();this.pickerHandler.attach();this.update();if(this.inputHandler.isDisabled()){this.disable()}}},{key:"initExtensions",value:function initExtensions(){var _this=this;if(!Array.isArray(this.options.extensions)){this.options.extensions=[]}if(this.options.debug){this.options.extensions.push({name:"debugger"})}this.options.extensions.forEach(function(ext){_this.registerExtension(Colorpicker.extensions[ext.name.toLowerCase()],ext.options||{})})}},{key:"registerExtension",value:function registerExtension(ExtensionClass){var config=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};var ext=new ExtensionClass(this,config);this.extensions.push(ext);return ext}},{key:"destroy",value:function destroy(){var color=this.color;this.sliderHandler.unbind();this.inputHandler.unbind();this.popupHandler.unbind();this.colorHandler.unbind();this.addonHandler.unbind();this.pickerHandler.unbind();this.element.removeClass("colorpicker-element").removeData("colorpicker"
vendor: 785 bytes, line 22036
22036,"color").off(".colorpicker");this.trigger("colorpickerDestroy",color)}},{key:"show",value:function show(e){this.popupHandler.show(e)}},{key:"hide",value:function hide(e){this.popupHandler.hide(e)}},{key:"toggle",value:function toggle(e){this.popupHandler.toggle(e)}},{key:"getValue",value:function getValue(){var defaultValue=arguments.length>0&&arguments[0]!==undefined?arguments[0]:null;var val=this.colorHandler.color;val=val instanceof _ColorItem2.default?val:defaultValue;if(val instanceof _ColorItem2.default){return val.string(this.format)}return val}},{key:"setValue",value:function setValue(val){if(this.isDisabled()){return}var ch=this.colorHandler;if(ch.hasColor()&&!!val&&ch.color.equals(val)||!ch.hasColor()&&!val){return}ch.color=val?ch.createColor(val,this.options.auto
vendor: 23,833 bytes, line 22036
22036InputFallback):null;this.trigger("colorpickerChange",ch.color,val);this.update()}},{key:"update",value:function update(){if(this.colorHandler.hasColor()){this.inputHandler.update()}else{this.colorHandler.assureColor()}this.addonHandler.update();this.pickerHandler.update();this.trigger("colorpickerUpdate")}},{key:"enable",value:function enable(){this.inputHandler.enable();this.disabled=false;this.picker.removeClass("colorpicker-disabled");this.trigger("colorpickerEnable");return true}},{key:"disable",value:function disable(){this.inputHandler.disable();this.disabled=true;this.picker.addClass("colorpicker-disabled");this.trigger("colorpickerDisable");return true}},{key:"isEnabled",value:function isEnabled(){return!this.isDisabled()}},{key:"isDisabled",value:function isDisabled(){return this.disabled===true}},{key:"trigger",value:function trigger(eventName){var color=arguments.length>1&&arguments[1]!==undefined?arguments[1]:null;var value=arguments.length>2&&arguments[2]!==undefined?arguments[2]:null;this.element.trigger({type:eventName,colorpicker:this,color:color?color:this.color,value:value?value:this.getValue()})}}]);return Colorpicker}();Colorpicker.extensions=_extensions2.default;exports.default=Colorpicker;module.exports=exports.default},function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.Palette=exports.Swatches=exports.Preview=exports.Debugger=undefined;var _Debugger=__webpack_require__(10);var _Debugger2=_interopRequireDefault(_Debugger);var _Preview=__webpack_require__(11);var _Preview2=_interopRequireDefault(_Preview);var _Swatches=__webpack_require__(12);var _Swatches2=_interopRequireDefault(_Swatches);var _Palette=__webpack_require__(4);var _Palette2=_interopRequireDefault(_Palette);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}exports.Debugger=_Debugger2.default;exports.Preview=_Preview2.default;exports.Swatches=_Swatches2.default;exports.Palette=_Palette2.default;exports.default={debugger:_Debugger2.default,preview:_Preview2.default,swatches:_Swatches2.default,palette:_Palette2.default}},function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:true});var _createClass=function(){function defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||false;descriptor.configurable=true;if("value"in descriptor)descriptor.writable=true;Object.defineProperty(target,descriptor.key,descriptor)}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor}}();var _get=function get(object,property,receiver){if(object===null)object=Function.prototype;var desc=Object.getOwnPropertyDescriptor(object,property);if(desc===undefined){var parent=Object.getPrototypeOf(object);if(parent===null){return undefined}else{return get(parent,property,receiver)}}else if("value"in desc){return desc.value}else{var getter=desc.get;if(getter===undefined){return undefined}return getter.call(receiver)}};var _Extension2=__webpack_require__(1);var _Extension3=_interopRequireDefault(_Extension2);var _jquery=__webpack_require__(0);var _jquery2=_interopRequireDefault(_jquery);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function")}}function _possibleConstructorReturn(self,call){if(!self){throw new ReferenceError("this hasn't been initialised - super() hasn't been called")}return call&&(typeof call==="object"||typeof call==="function")?call:self}function _inherits(subClass,superClass){if(typeof superClass!=="function"&&superClass!==null){throw new TypeError("Super expression must either be null or a function, not "+typeof superClass)}subClass.prototype=Object.create(superClass&&superClass.prototype,{constructor:{value:subClass,enumerable:false,writable:true,configurable:true}});if(superClass)Object.setPrototypeOf?Object.setPrototypeOf(subClass,superClass):subClass.__proto__=superClass}var Debugger=function(_Extension){_inherits(Debugger,_Extension);function Debugger(colorpicker){var options=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};_classCallCheck(this,Debugger);var _this=_possibleConstructorReturn(this,(Debugger.__proto__||Object.getPrototypeOf(Debugger)).call(this,colorpicker,options));_this.eventCounter=0;if(_this.colorpicker.inputHandler.hasInput()){_this.colorpicker.inputHandler.input.on("change.colorpicker-ext",_jquery2.default.proxy(_this.onChangeInput,_this))}return _this}_createClass(Debugger,[{key:"log",value:function log(eventName){var _console;for(var _len=arguments.length,args=Array(_len>1?_len-1:0),_key=1;_key<_len;_key++){args[_key-1]=arguments[_key]}this.eventCounter+=1;var logMessage="#"+this.eventCounter+": Colorpicker#"+this.colorpicker.id+" ["+eventName+"]";(_console=console).debug.apply(_console,[logMessage].concat(args));this.colorpicker.element.trigger({type:"colorpickerDebug",colorpicker:this.colorpicker,color:this.color,value:null,debug:{debugger:this,eventName,logArgs:args,logMessage}})}},{key:"resolveColor",value:function resolveColor(color){var realColor=arguments.length>1&&arguments[1]!==undefined?arguments[1]:true;this.log("resolveColor()",color,realColor);return false}},{key:"onCreate",value:function onCreate(event){this.log("colorpickerCreate");return _get(Debugger.prototype.__proto__||Object.getPrototypeOf(Debugger.prototype),"onCreate",this).call(this,event)}},{key:"onDestroy",value:function onDestroy(event){this.log("colorpickerDestroy");this.eventCounter=0;if(this.colorpicker.inputHandler.hasInput()){this.colorpicker.inputHandler.input.off(".colorpicker-ext")}return _get(Debugger.prototype.__proto__||Object.getPrototypeOf(Debugger.prototype),"onDestroy",this).call(this,event)}},{key:"onUpdate",value:function onUpdate(event){this.log("colorpickerUpdate")}},{key:"onChangeInput",value:function onChangeInput(event){this.log("input:change.colorpicker",event.value,event.color)}},{key:"onChange",value:function onChange(event){this.log("colorpickerChange",event.value,event.color)}},{key:"onInvalid",value:function onInvalid(event){this.log("colorpickerInvalid",event.value,event.color)}},{key:"onHide",value:function onHide(event){this.log("colorpickerHide");this.eventCounter=0}},{key:"onShow",value:function onShow(event){this.log("colorpickerShow")}},{key:"onDisable",value:function onDisable(event){this.log("colorpickerDisable")}},{key:"onEnable",value:function onEnable(event){this.log("colorpickerEnable")}}]);return Debugger}(_Extension3.default);exports.default=Debugger;module.exports=exports.default},function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:true});var _createClass=function(){function defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||false;descriptor.configurable=true;if("value"in descriptor)descriptor.writable=true;Object.defineProperty(target,descriptor.key,descriptor)}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor}}();var _get=function get(object,property,receiver){if(object===null)object=Function.prototype;var desc=Object.getOwnPropertyDescriptor(object,property);if(desc===undefined){var parent=Object.getPrototypeOf(object);if(parent===null){return undefined}else{return get(parent,property,receiver)}}else if("value"in desc){return desc.value}else{var getter=desc.get;if(getter===undefined){return undefined}return getter.call(receiver)}};var _Extension2=__webpack_require__(1);var _Extension3=_interopRequireDefault(_Extension2);var _jquery=__webpack_require__(0);var _jquery2=_interopRequireDefault(_jquery);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function")}}function _possibleConstructorReturn(self,call){if(!self){throw new ReferenceError("this hasn't been initialised - super() hasn't been called")}return call&&(typeof call==="object"||typeof call==="function")?call:self}function _inherits(subClass,superClass){if(typeof superClass!=="function"&&superClass!==null){throw new TypeError("Super expression must either be null or a function, not "+typeof superClass)}subClass.prototype=Object.create(superClass&&superClass.prototype,{constructor:{value:subClass,enumerable:false,writable:true,configurable:true}});if(superClass)Object.setPrototypeOf?Object.setPrototypeOf(subClass,superClass):subClass.__proto__=superClass}var Preview=function(_Extension){_inherits(Preview,_Extension);function Preview(colorpicker){var options=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};_classCallCheck(this,Preview);var _this=_possibleConstructorReturn(this,(Preview.__proto__||Object.getPrototypeOf(Preview)).call(this,colorpicker,_jquery2.default.extend(true,{},{template:'<div class="colorpicker-bar colorpicker-preview"><div /></div>',showText:true,format:colorpicker.format},options)));_this.element=(0,_jquery2.default)(_this.options.template);_this.elementInner=_this.element.find("div");return _this}_createClass(Preview,[{key:"onCreate",value:function onCreate(event){_get(Preview.prototype.__proto__||Object.getPrototypeOf(Preview.prototype),"onCreate",this).call(this,event);this.colorpicker.picker.append(this.element)}},{key:"onUpdate",value:function onUpdate(event){_get(Preview.prototype.__proto__||Object.getPrototypeOf(Preview.prototype),"onUpdate",this).call(this,event);if(!event.color){this.elementInner.css("backgroundColor",null).css("color",null).html("");return}this.elementInner.css("backgroundColor",event.color.toRgbString());if(this.options.showText){this.elementInner.html(event.color.string(this.options.format||this.colorpicker.format));if(event.color.isDark()&&event.color.alpha>.5){this.elementInner.css("color","white")}else{this.elementInner.css("color","black")}}}}]);return Preview}(_Extension3.default);exports.default=Preview;module.exports=exports.default},function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:true});var _createClass=function(){function defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||false;descriptor.configurable=true;if("value"in descriptor)descriptor.writable=true;Object.defineProperty(target,descriptor.key,descriptor)}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor}}();var _get=function get(object,property,receiver){if(object===null)object=Function.prototype;var desc=Object.getOwnPropertyDescriptor(object,property);if(desc===undefined){var parent=Object.getPrototypeOf(object);if(parent===null){return undefined}else{return get(parent,property,receiver)}}else if("value"in desc){return desc.value}else{var getter=desc.get;if(getter===undefined){return undefined}return getter.call(receiver)}};var _Palette2=__webpack_require__(4);var _Palette3=_interopRequireDefault(_Palette2);var _jquery=__webpack_require__(0);var _jquery2=_interopRequireDefault(_jquery);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function")}}function _possibleConstructorReturn(self,call){if(!self){throw new ReferenceError("this hasn't been initialised - super() hasn't been called")}return call&&(typeof call==="object"||typeof call==="function")?call:self}function _inherits(subClass,superClass){if(typeof superClass!=="function"&&superClass!==null){throw new TypeError("Super expression must either be null or a function, not "+typeof superClass)}subClass.prototype=Object.create(superClass&&superClass.prototype,{constructor:{value:subClass,enumerable:false,writable:true,configurable:true}});if(superClass)Object.setPrototypeOf?Object.setPrototypeOf(subClass,superClass):subClass.__proto__=superClass}var defaults={barTemplate:'<div class="colorpicker-bar colorpicker-swatches">\n                    <div class="colorpicker-swatches--inner"></div>\n                </div>',swatchTemplate:'<i class="colorpicker-swatch"><i class="colorpicker-swatch--inner"></i></i>'};var Swatches=function(_Palette){_inherits(Swatches,_Palette);function Swatches(colorpicker){var options=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};_classCallCheck(this,Swatches);var _this=_possibleConstructorReturn(this,(Swatches.__proto__||Object.getPrototypeOf(Swatches)).call(this,colorpicker,_jquery2.default.extend(true,{},defaults,options)));_this.element=null;return _this}_createClass(Swatches,[{key:"isEnabled",value:function isEnabled(){return this.getLength()>0}},{key:"onCreate",value:function onCreate(event){_get(Swatches.prototype.__proto__||Object.getPrototypeOf(Swatches.prototype),"onCreate",this).call(this,event);if(!this.isEnabled()){return}this.element=(0,_jquery2.default)(this.options.barTemplate);this.load();this.colorpicker.picker.append(this.element)}},{key:"load",value:function load(){var _this2=this;var colorpicker=this.colorpicker,swatchContainer=this.element.find(".colorpicker-swatches--inner"),isAliased=this.options.namesAsValues===true&&!Array.isArray(this.colors);swatchContainer.empty();_jquery2.default.each(this.colors,function(name,value){var $swatch=(0,_jquery2.default)(_this2.options.swatchTemplate).attr("data-name",name).attr("data-value",value).attr("title",isAliased?name+": "+value:value).on("mousedown.colorpicker touchstart.colorpicker",function(e){var $sw=(0,_jquery2.default)(this);colorpicker.setValue(isAliased?$sw.attr("data-name"):$sw.attr("data-value"))});$swatch.find(".colorpicker-swatch--inner").css("background-color",value);swatchContainer.append($swatch)});swatchContainer.append((0,_jquery2.default)('<i class="colorpicker-clear"></i>'))}}]);return Swatches}(_Palette3.default);exports.default=Swatches;module.exports=exports.default},function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:true});var _createClass=function(){function defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||false;descriptor.configurable=true;if("value"in descriptor)descriptor.writable=true;Object.defineProperty(target,descriptor.key,descriptor)}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor}}();var _jquery=__webpack_require__(0);var _jquery2=_interopRequireDefault(_jquery);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function")}}var SliderHandler=function(){function SliderHandler(colorpicker){_classCallCheck(this,SliderHandler);this.colorpicker=colorpicker;this.currentSlider=null;this.mousePointer={left:0,top:0};this.onMove=_jquery2.default.proxy(this.defaultOnMove,this)}_createClass(SliderHandler,[{key:"defaultOnMove",value:function defaultOnMove(top,left){if(!this.currentSlider){return}var slider=this.currentSlider,cp=this.colorpicker,ch=cp.colorHandler;var color=!ch.hasColor()?ch.getFallbackColor():ch.color.getClone();slider.guideStyle.left=left+"px";slider.guideStyle.top=top+"px";if(slider.callLeft){color[slider.callLeft](left/slider.maxLeft)}if(slider.callTop){color[slider.callTop](top/slider.maxTop)}cp.setValue(color);cp.popupHandler.focus()}},{key:"bind",value:function bind(){var sliders=this.colorpicker.options.horizontal?this.colorpicker.options.slidersHorz:this.colorpicker.options.sliders;var sliderClasses=[];for(var sliderName in sliders){if(!sliders.hasOwnProperty(sliderName)){continue}sliderClasses.push(sliders[sliderName].selector)}this.colorpicker.picker.find(sliderClasses.join(", ")).on("mousedown.colorpicker touchstart.colorpicker",_jquery2.default.proxy(this.pressed,this))}},{key:"unbind",value:function unbind(){(0,_jquery2.default)(this.colorpicker.picker).off({"mousemove.colorpicker":_jquery2.default.proxy(this.moved,this),"touchmove.colorpicker":_jquery2.default.proxy(this.moved,this),"mouseup.colorpicker":_jquery2.default.proxy(this.released,this),"touchend.colorpicker":_jquery2.default.proxy(this.released,this)})}},{key:"pressed",value:function pressed(e){if(this.colorpicker.isDisabled()){return}this.colorpicker.lastEvent.alias="pressed";this.colorpicker.lastEvent.e=e;if(!e.pageX&&!e.pageY&&e.originalEvent&&e.originalEvent.touches){e.pageX=e.originalEvent.touches[0].pageX;e.pageY=e.originalEvent.touches[0].pageY}var target=(0,_jquery2.default)(e.target);var zone=target.closest("div");var sliders=this.colorpicker.options.horizontal?this.colorpicker.options.slidersHorz:this.colorpicker.options.sliders;if(zone.is(".colorpicker")){return}this.currentSlider=null;for(var sliderName in sliders){if(!sliders.hasOwnProperty(sliderName)){continue}var slider=sliders[sliderName];if(zone.is(slider.selector)){this.currentSlider=_jquery2.default.extend({},slider,{name:sliderName});break}else if(slider.childSelector!==undefined&&zone.is(slider.childSelector)){this.currentSlider=_jquery2.default.extend({},slider,{name:sliderName});zone=zone.parent();break}}var guide=zone.find(".colorpicker-guide").get(0);if(this.currentSlider===null||guide===null){return}var offset=zone.offset();this.currentSlider.guideStyle=guide.style;this.currentSlider.left=e.pageX-offset.left;this.currentSlider.top=e.pageY-offset.top;this.mousePointer={left:e.pageX,top:e.pageY};(0,_jquery2.default)(this.colorpicker.picker).on({"mousemove.colorpicker":_jquery2.default.proxy(this.moved,this),"touchmove.colorpicker":_jquery2.default.proxy(this.moved,this),"mouseup.colorpicker":_jquery2.default.proxy(this.released,this),"touchend.colorpicker":_jquery2.default.proxy(this.released,this)}).trigger("mousemove")}},{key:"moved",value:function moved(e){this.colorpicker.lastEvent.alias="moved";this.colorpicker.lastEvent.e=e;if(!e.pageX&&!e.pageY&&e.originalEvent&&e.originalEvent.touches){e.pageX=e.originalEvent.touches[0].pageX;e.pageY=e.originalEvent.touches[0].pageY}e.preventDefault();var left=Math.max(0,Math.min(this.currentSlider.maxLeft,this.currentSlider.left+((e.pageX||this.mousePointer.left)-this.mousePointer.left)));var top=Math.max(0,Math.min(this.currentSlider.maxTop,this.currentSlider.top+((e.pageY||this.mousePointer.top)-this.mousePointer.top)));this.onMove(top,left)}},{key:"released",value:function released(e){this.colorpicker.lastEvent.alias="released";this.colorpicker.lastEvent.e=e;(0,_jquery2.default)(this.colorpicker.picker).off({"mousemove.colorpicker":this.moved,"touchmove.colorpicker":this.moved,"mouseup.colorpicker":this.released,"touchend.colorpicker":this.released})}}]);return SliderHandler}();exports.default=SliderHandler;module.exports=exports.default},function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:true});var _createClass=function(){function defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||false;descriptor.configurable=true;if("value"in descriptor)descriptor.writable=true;Object.defineProperty(target,descriptor.key,descriptor)}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor}}();var _jquery=__webpack_require__(0);var _jquery2=_interopRequireDefault(_jquery);var _options=__webpack_require__(3);var _options2=_interopRequireDefault(_options);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function")}}var PopupHandler=function(){function PopupHandler(colorpicker,root){_classCallCheck(this,PopupHandler);this.root=root;this.colorpicker=colorpicker;this.popoverTarget=null;this.popoverTip=null;this.clicking=false;this.hidding=false;this.showing=false}_createClass(PopupHandler,[{key:"bind",value:function bind(){var cp=this.colorpicker;if(cp.options.inline){cp.picker.addClass("colorpicker-inline colorpicker-visible");return}cp.picker.addClass("colorpicker-popup colorpicker-hidden");if(!this.hasInput&&!this.hasAddon){return}if(cp.options.popover){this.createPopover()}if(this.hasAddon){if(!this.addon.attr("tabindex")){this.addon.attr("tabindex",0)}this.addon.on({"mousedown.colorpicker touchstart.colorpicker":_jquery2.default.proxy(this.toggle,this)});this.addon.on({"focus.colorpicker":_jquery2.default.proxy(this.show,this)});this.addon.on({"focusout.colorpicker":_jquery2.default.proxy(this.hide,this)})}if(this.hasInput&&!this.hasAddon){this.input.on({"mousedown.colorpicker touchstart.colorpicker":_jquery2.default.proxy(this.show,this),"focus.colorpicker":_jquery2.default.proxy(this.show,this)});this.input.on({"focusout.colorpicker":_jquery2.default.proxy(this.hide,this)})}(0,_jquery2.default)(this.root).on("resize.colorpicker",_jquery2.default.proxy(this.reposition,this))}},{key:"unbind",value:function unbind(){if(this.hasInput){this.input.off({"mousedown.colorpicker touchstart.colorpicker":_jquery2.default.proxy(this.show,this),"focus.colorpicker":_jquery2.default.proxy(this.show,this)});this.input.off({"focusout.colorpicker":_jquery2.default.proxy(this.hide,this)})}if(this.hasAddon){this.addon.off({"mousedown.colorpicker touchstart.colorpicker":_jquery2.default.proxy(this.toggle,this)});this.addon.off({"focus.colorpicker":_jquery2.default.proxy(this.show,this)});this.addon.off({"focusout.colorpicker":_jquery2.default.proxy(this.hide,this)})}if(this.popoverTarget){this.popoverTarget.popover("dispose")}(0,_jquery2.default)(this.root).off("resize.colorpicker",_jquery2.default.proxy(this.reposition,this));(0,_jquery2.default)(this.root.document).off("mousedown.colorpicker touchstart.colorpicker",_jquery2.default.proxy(this.hide,this));(0,_jquery2.default)(this.root.document).off("mousedown.colorpicker touchstart.colorpicker",_jquery2.default.proxy(this.onClickingInside,this))}},{key:"isClickingInside",value:function isClickingInside(e){if(!e){return false}return this.isOrIsInside(this.popoverTip,e.currentTarget)||this.isOrIsInside(this.popoverTip,e.target)||this.isOrIsInside(this.colorpicker.picker,e.currentTarget)||this.isOrIsInside(this.colorpicker.picker,e.target)}},{key:"isOrIsInside",value:function isOrIsInside(container,element){if(!container||!element){return false}element=(0,_jquery2.default)(element);return element.is(container)||container.find(element).length>0}},{key:"onClickingInside",value:function onClickingInside(e){this.clicking=this.isClickingInside(e)}},{key:"createPopover",value:function createPopover(){var cp=this.colorpicker;this.popoverTarget=this.hasAddon?this.addon:this.input;cp.picker.addClass("colorpicker-bs-popover-content");this.popoverTarget.popover(_jquery2.default.extend(true,{},_options2.default.popover,cp.options.popover,{trigger:"manual",content:cp.picker,html:true}));
22036this.popoverTip=
vendor: 25,095 bytes, line 22036
22036(0,_jquery2.default)(this.popoverTarget.popover("getTipElement").data("bs.popover").tip);this.popoverTip.addClass("colorpicker-bs-popover");this.popoverTarget.on("shown.bs.popover",_jquery2.default.proxy(this.fireShow,this));this.popoverTarget.on("hidden.bs.popover",_jquery2.default.proxy(this.fireHide,this))}},{key:"reposition",value:function reposition(e){if(this.popoverTarget&&this.isVisible()){this.popoverTarget.popover("update")}}},{key:"toggle",value:function toggle(e){if(this.isVisible()){this.hide(e)}else{this.show(e)}}},{key:"show",value:function show(e){if(this.isVisible()||this.showing||this.hidding){return}this.showing=true;this.hidding=false;this.clicking=false;var cp=this.colorpicker;cp.lastEvent.alias="show";cp.lastEvent.e=e;if(e&&(!this.hasInput||this.input.attr("type")==="color")&&e&&e.preventDefault){e.stopPropagation();e.preventDefault()}if(this.isPopover){(0,_jquery2.default)(this.root).on("resize.colorpicker",_jquery2.default.proxy(this.reposition,this))}cp.picker.addClass("colorpicker-visible").removeClass("colorpicker-hidden");if(this.popoverTarget){this.popoverTarget.popover("show")}else{this.fireShow()}}},{key:"fireShow",value:function fireShow(){this.hidding=false;this.showing=false;if(this.isPopover){(0,_jquery2.default)(this.root.document).on("mousedown.colorpicker touchstart.colorpicker",_jquery2.default.proxy(this.hide,this));(0,_jquery2.default)(this.root.document).on("mousedown.colorpicker touchstart.colorpicker",_jquery2.default.proxy(this.onClickingInside,this))}this.colorpicker.trigger("colorpickerShow")}},{key:"hide",value:function hide(e){if(this.isHidden()||this.showing||this.hidding){return}var cp=this.colorpicker,clicking=this.clicking||this.isClickingInside(e);this.hidding=true;this.showing=false;this.clicking=false;cp.lastEvent.alias="hide";cp.lastEvent.e=e;if(clicking){this.hidding=false;return}if(this.popoverTarget){this.popoverTarget.popover("hide")}else{this.fireHide()}}},{key:"fireHide",value:function fireHide(){this.hidding=false;this.showing=false;var cp=this.colorpicker;cp.picker.addClass("colorpicker-hidden").removeClass("colorpicker-visible");(0,_jquery2.default)(this.root).off("resize.colorpicker",_jquery2.default.proxy(this.reposition,this));(0,_jquery2.default)(this.root.document).off("mousedown.colorpicker touchstart.colorpicker",_jquery2.default.proxy(this.hide,this));(0,_jquery2.default)(this.root.document).off("mousedown.colorpicker touchstart.colorpicker",_jquery2.default.proxy(this.onClickingInside,this));cp.trigger("colorpickerHide")}},{key:"focus",value:function focus(){if(this.hasAddon){return this.addon.focus()}if(this.hasInput){return this.input.focus()}return false}},{key:"isVisible",value:function isVisible(){return this.colorpicker.picker.hasClass("colorpicker-visible")&&!this.colorpicker.picker.hasClass("colorpicker-hidden")}},{key:"isHidden",value:function isHidden(){return this.colorpicker.picker.hasClass("colorpicker-hidden")&&!this.colorpicker.picker.hasClass("colorpicker-visible")}},{key:"input",get:function get(){return this.colorpicker.inputHandler.input}},{key:"hasInput",get:function get(){return this.colorpicker.inputHandler.hasInput()}},{key:"addon",get:function get(){return this.colorpicker.addonHandler.addon}},{key:"hasAddon",get:function get(){return this.colorpicker.addonHandler.hasAddon()}},{key:"isPopover",get:function get(){return!this.colorpicker.options.inline&&!!this.popoverTip}}]);return PopupHandler}();exports.default=PopupHandler;module.exports=exports.default},function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:true});var _createClass=function(){function defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||false;descriptor.configurable=true;if("value"in descriptor)descriptor.writable=true;Object.defineProperty(target,descriptor.key,descriptor)}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor}}();var _jquery=__webpack_require__(0);var _jquery2=_interopRequireDefault(_jquery);var _ColorItem=__webpack_require__(2);var _ColorItem2=_interopRequireDefault(_ColorItem);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function")}}var InputHandler=function(){function InputHandler(colorpicker){_classCallCheck(this,InputHandler);this.colorpicker=colorpicker;this.input=this.colorpicker.element.is("input")?this.colorpicker.element:this.colorpicker.options.input?this.colorpicker.element.find(this.colorpicker.options.input):false;if(this.input&&this.input.length===0){this.input=false}this._initValue()}_createClass(InputHandler,[{key:"bind",value:function bind(){if(!this.hasInput()){return}this.input.on({"keyup.colorpicker":_jquery2.default.proxy(this.onkeyup,this)});this.input.on({"change.colorpicker":_jquery2.default.proxy(this.onchange,this)})}},{key:"unbind",value:function unbind(){if(!this.hasInput()){return}this.input.off(".colorpicker")}},{key:"_initValue",value:function _initValue(){if(!this.hasInput()){return}var val="";[this.input.val(),this.input.data("color"),this.input.attr("data-color")].map(function(item){if(item&&val===""){val=item}});if(val instanceof _ColorItem2.default){val=this.getFormattedColor(val.string(this.colorpicker.format))}else if(!(typeof val==="string"||val instanceof String)){val=""}this.input.prop("value",val)}},{key:"getValue",value:function getValue(){if(!this.hasInput()){return false}return this.input.val()}},{key:"setValue",value:function setValue(val){if(!this.hasInput()){return}var inputVal=this.input.prop("value");val=val?val:"";if(val===(inputVal?inputVal:"")){return}this.input.prop("value",val);this.input.trigger({type:"change",colorpicker:this.colorpicker,color:this.colorpicker.color,value:val})}},{key:"getFormattedColor",value:function getFormattedColor(){var val=arguments.length>0&&arguments[0]!==undefined?arguments[0]:null;val=val?val:this.colorpicker.colorHandler.getColorString();if(!val){return""}val=this.colorpicker.colorHandler.resolveColorDelegate(val,false);if(this.colorpicker.options.useHashPrefix===false){val=val.replace(/^#/g,"")}return val}},{key:"hasInput",value:function hasInput(){return this.input!==false}},{key:"isEnabled",value:function isEnabled(){return this.hasInput()&&!this.isDisabled()}},{key:"isDisabled",value:function isDisabled(){return this.hasInput()&&this.input.prop("disabled")===true}},{key:"disable",value:function disable(){if(this.hasInput()){this.input.prop("disabled",true)}}},{key:"enable",value:function enable(){if(this.hasInput()){this.input.prop("disabled",false)}}},{key:"update",value:function update(){if(!this.hasInput()){return}if(this.colorpicker.options.autoInputFallback===false&&this.colorpicker.colorHandler.isInvalidColor()){return}this.setValue(this.getFormattedColor())}},{key:"onchange",value:function onchange(e){this.colorpicker.lastEvent.alias="input.change";this.colorpicker.lastEvent.e=e;var val=this.getValue();if(val!==e.value){this.colorpicker.setValue(val)}}},{key:"onkeyup",value:function onkeyup(e){this.colorpicker.lastEvent.alias="input.keyup";this.colorpicker.lastEvent.e=e;var val=this.getValue();if(val!==e.value){this.colorpicker.setValue(val)}}}]);return InputHandler}();exports.default=InputHandler;module.exports=exports.default},function(module,exports,__webpack_require__){"use strict";var colorString=__webpack_require__(17);var convert=__webpack_require__(20);var _slice=[].slice;var skippedModels=["keyword","gray","hex"];var hashedModelKeys={};Object.keys(convert).forEach(function(model){hashedModelKeys[_slice.call(convert[model].labels).sort().join("")]=model});var limiters={};function Color(obj,model){if(!(this instanceof Color)){return new Color(obj,model)}if(model&&model in skippedModels){model=null}if(model&&!(model in convert)){throw new Error("Unknown model: "+model)}var i;var channels;if(obj==null){this.model="rgb";this.color=[0,0,0];this.valpha=1}else if(obj instanceof Color){this.model=obj.model;this.color=obj.color.slice();this.valpha=obj.valpha}else if(typeof obj==="string"){var result=colorString.get(obj);if(result===null){throw new Error("Unable to parse color from string: "+obj)}this.model=result.model;channels=convert[this.model].channels;this.color=result.value.slice(0,channels);this.valpha=typeof result.value[channels]==="number"?result.value[channels]:1}else if(obj.length){this.model=model||"rgb";channels=convert[this.model].channels;var newArr=_slice.call(obj,0,channels);this.color=zeroArray(newArr,channels);this.valpha=typeof obj[channels]==="number"?obj[channels]:1}else if(typeof obj==="number"){obj&=16777215;this.model="rgb";this.color=[obj>>16&255,obj>>8&255,obj&255];this.valpha=1}else{this.valpha=1;var keys=Object.keys(obj);if("alpha"in obj){keys.splice(keys.indexOf("alpha"),1);this.valpha=typeof obj.alpha==="number"?obj.alpha:0}var hashedKeys=keys.sort().join("");if(!(hashedKeys in hashedModelKeys)){throw new Error("Unable to parse color from object: "+JSON.stringify(obj))}this.model=hashedModelKeys[hashedKeys];var labels=convert[this.model].labels;var color=[];for(i=0;i<labels.length;i++){color.push(obj[labels[i]])}this.color=zeroArray(color)}if(limiters[this.model]){channels=convert[this.model].channels;for(i=0;i<channels;i++){var limit=limiters[this.model][i];if(limit){this.color[i]=limit(this.color[i])}}}this.valpha=Math.max(0,Math.min(1,this.valpha));if(Object.freeze){Object.freeze(this)}}Color.prototype={toString:function(){return this.string()},toJSON:function(){return this[this.model]()},string:function(places){var self=this.model in colorString.to?this:this.rgb();self=self.round(typeof places==="number"?places:1);var args=self.valpha===1?self.color:self.color.concat(this.valpha);return colorString.to[self.model](args)},percentString:function(places){var self=this.rgb().round(typeof places==="number"?places:1);var args=self.valpha===1?self.color:self.color.concat(this.valpha);return colorString.to.rgb.percent(args)},array:function(){return this.valpha===1?this.color.slice():this.color.concat(this.valpha)},object:function(){var result={};var channels=convert[this.model].channels;var labels=convert[this.model].labels;for(var i=0;i<channels;i++){result[labels[i]]=this.color[i]}if(this.valpha!==1){result.alpha=this.valpha}return result},unitArray:function(){var rgb=this.rgb().color;rgb[0]/=255;rgb[1]/=255;rgb[2]/=255;if(this.valpha!==1){rgb.push(this.valpha)}return rgb},unitObject:function(){var rgb=this.rgb().object();rgb.r/=255;rgb.g/=255;rgb.b/=255;if(this.valpha!==1){rgb.alpha=this.valpha}return rgb},round:function(places){places=Math.max(places||0,0);return new Color(this.color.map(roundToPlace(places)).concat(this.valpha),this.model)},alpha:function(val){if(arguments.length){return new Color(this.color.concat(Math.max(0,Math.min(1,val))),this.model)}return this.valpha},red:getset("rgb",0,maxfn(255)),green:getset("rgb",1,maxfn(255)),blue:getset("rgb",2,maxfn(255)),hue:getset(["hsl","hsv","hsl","hwb","hcg"],0,function(val){return(val%360+360)%360}),saturationl:getset("hsl",1,maxfn(100)),lightness:getset("hsl",2,maxfn(100)),saturationv:getset("hsv",1,maxfn(100)),value:getset("hsv",2,maxfn(100)),chroma:getset("hcg",1,maxfn(100)),gray:getset("hcg",2,maxfn(100)),white:getset("hwb",1,maxfn(100)),wblack:getset("hwb",2,maxfn(100)),cyan:getset("cmyk",0,maxfn(100)),magenta:getset("cmyk",1,maxfn(100)),yellow:getset("cmyk",2,maxfn(100)),black:getset("cmyk",3,maxfn(100)),x:getset("xyz",0,maxfn(100)),y:getset("xyz",1,maxfn(100)),z:getset("xyz",2,maxfn(100)),l:getset("lab",0,maxfn(100)),a:getset("lab",1),b:getset("lab",2),keyword:function(val){if(arguments.length){return new Color(val)}return convert[this.model].keyword(this.color)},hex:function(val){if(arguments.length){return new Color(val)}return colorString.to.hex(this.rgb().round().color)},rgbNumber:function(){var rgb=this.rgb().color;return(rgb[0]&255)<<16|(rgb[1]&255)<<8|rgb[2]&255},luminosity:function(){var rgb=this.rgb().color;var lum=[];for(var i=0;i<rgb.length;i++){var chan=rgb[i]/255;lum[i]=chan<=.03928?chan/12.92:Math.pow((chan+.055)/1.055,2.4)}return.2126*lum[0]+.7152*lum[1]+.0722*lum[2]},contrast:function(color2){var lum1=this.luminosity();var lum2=color2.luminosity();if(lum1>lum2){return(lum1+.05)/(lum2+.05)}return(lum2+.05)/(lum1+.05)},level:function(color2){var contrastRatio=this.contrast(color2);if(contrastRatio>=7.1){return"AAA"}return contrastRatio>=4.5?"AA":""},isDark:function(){var rgb=this.rgb().color;var yiq=(rgb[0]*299+rgb[1]*587+rgb[2]*114)/1e3;return yiq<128},isLight:function(){return!this.isDark()},negate:function(){var rgb=this.rgb();for(var i=0;i<3;i++){rgb.color[i]=255-rgb.color[i]}return rgb},lighten:function(ratio){var hsl=this.hsl();hsl.color[2]+=hsl.color[2]*ratio;return hsl},darken:function(ratio){var hsl=this.hsl();hsl.color[2]-=hsl.color[2]*ratio;return hsl},saturate:function(ratio){var hsl=this.hsl();hsl.color[1]+=hsl.color[1]*ratio;return hsl},desaturate:function(ratio){var hsl=this.hsl();hsl.color[1]-=hsl.color[1]*ratio;return hsl},whiten:function(ratio){var hwb=this.hwb();hwb.color[1]+=hwb.color[1]*ratio;return hwb},blacken:function(ratio){var hwb=this.hwb();hwb.color[2]+=hwb.color[2]*ratio;return hwb},grayscale:function(){var rgb=this.rgb().color;var val=rgb[0]*.3+rgb[1]*.59+rgb[2]*.11;return Color.rgb(val,val,val)},fade:function(ratio){return this.alpha(this.valpha-this.valpha*ratio)},opaquer:function(ratio){return this.alpha(this.valpha+this.valpha*ratio)},rotate:function(degrees){var hsl=this.hsl();var hue=hsl.color[0];hue=(hue+degrees)%360;hue=hue<0?360+hue:hue;hsl.color[0]=hue;return hsl},mix:function(mixinColor,weight){if(!mixinColor||!mixinColor.rgb){throw new Error('Argument to "mix" was not a Color instance, but rather an instance of '+typeof mixinColor)}var color1=mixinColor.rgb();var color2=this.rgb();var p=weight===undefined?.5:weight;var w=2*p-1;var a=color1.alpha()-color2.alpha();var w1=((w*a===-1?w:(w+a)/(1+w*a))+1)/2;var w2=1-w1;return Color.rgb(w1*color1.red()+w2*color2.red(),w1*color1.green()+w2*color2.green(),w1*color1.blue()+w2*color2.blue(),color1.alpha()*p+color2.alpha()*(1-p))}};Object.keys(convert).forEach(function(model){if(skippedModels.indexOf(model)!==-1){return}var channels=convert[model].channels;Color.prototype[model]=function(){if(this.model===model){return new Color(this)}if(arguments.length){return new Color(arguments,model)}var newAlpha=typeof arguments[channels]==="number"?channels:this.valpha;return new Color(assertArray(convert[this.model][model].raw(this.color)).concat(newAlpha),model)};Color[model]=function(color){if(typeof color==="number"){color=zeroArray(_slice.call(arguments),channels)}return new Color(color,model)}});function roundTo(num,places){return Number(num.toFixed(places))}function roundToPlace(places){return function(num){return roundTo(num,places)}}function getset(model,channel,modifier){model=Array.isArray(model)?model:[model];model.forEach(function(m){(limiters[m]||(limiters[m]=[]))[channel]=modifier});model=model[0];return function(val){var result;if(arguments.length){if(modifier){val=modifier(val)}result=this[model]();result.color[channel]=val;return result}result=this[model]().color[channel];if(modifier){result=modifier(result)}return result}}function maxfn(max){return function(v){return Math.max(0,Math.min(max,v))}}function assertArray(val){return Array.isArray(val)?val:[val]}function zeroArray(arr,length){for(var i=0;i<length;i++){if(typeof arr[i]!=="number"){arr[i]=0}}return arr}module.exports=Color},function(module,exports,__webpack_require__){var colorNames=__webpack_require__(5);var swizzle=__webpack_require__(18);var reverseNames={};for(var name in colorNames){if(colorNames.hasOwnProperty(name)){reverseNames[colorNames[name]]=name}}var cs=module.exports={to:{},get:{}};cs.get=function(string){var prefix=string.substring(0,3).toLowerCase();var val;var model;switch(prefix){case"hsl":val=cs.get.hsl(string);model="hsl";break;case"hwb":val=cs.get.hwb(string);model="hwb";break;default:val=cs.get.rgb(string);model="rgb";break}if(!val){return null}return{model,value:val}};cs.get.rgb=function(string){if(!string){return null}var abbr=/^#([a-f0-9]{3,4})$/i;var hex=/^#([a-f0-9]{6})([a-f0-9]{2})?$/i;var rgba=/^rgba?\(\s*([+-]?\d+)\s*,\s*([+-]?\d+)\s*,\s*([+-]?\d+)\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)$/;var per=/^rgba?\(\s*([+-]?[\d\.]+)\%\s*,\s*([+-]?[\d\.]+)\%\s*,\s*([+-]?[\d\.]+)\%\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)$/;var keyword=/(\D+)/;var rgb=[0,0,0,1];var match;var i;var hexAlpha;if(match=string.match(hex)){hexAlpha=match[2];match=match[1];for(i=0;i<3;i++){var i2=i*2;rgb[i]=parseInt(match.slice(i2,i2+2),16)}if(hexAlpha){rgb[3]=Math.round(parseInt(hexAlpha,16)/255*100)/100}}else if(match=string.match(abbr)){match=match[1];hexAlpha=match[3];for(i=0;i<3;i++){rgb[i]=parseInt(match[i]+match[i],16)}if(hexAlpha){rgb[3]=Math.round(parseInt(hexAlpha+hexAlpha,16)/255*100)/100}}else if(match=string.match(rgba)){for(i=0;i<3;i++){rgb[i]=parseInt(match[i+1],0)}if(match[4]){rgb[3]=parseFloat(match[4])}}else if(match=string.match(per)){for(i=0;i<3;i++){rgb[i]=Math.round(parseFloat(match[i+1])*2.55)}if(match[4]){rgb[3]=parseFloat(match[4])}}else if(match=string.match(keyword)){if(match[1]==="transparent"){return[0,0,0,0]}rgb=colorNames[match[1]];if(!rgb){return null}rgb[3]=1;return rgb}else{return null}for(i=0;i<3;i++){rgb[i]=clamp(rgb[i],0,255)}rgb[3]=clamp(rgb[3],0,1);return rgb};cs.get.hsl=function(string){if(!string){return null}var hsl=/^hsla?\(\s*([+-]?(?:\d*\.)?\d+)(?:deg)?\s*,\s*([+-]?[\d\.]+)%\s*,\s*([+-]?[\d\.]+)%\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)$/;var match=string.match(hsl);if(match){var alpha=parseFloat(match[4]);var h=(parseFloat(match[1])+360)%360;var s=clamp(parseFloat(match[2]),0,100);var l=clamp(parseFloat(match[3]),0,100);var a=clamp(isNaN(alpha)?1:alpha,0,1);return[h,s,l,a]}return null};cs.get.hwb=function(string){if(!string){return null}var hwb=/^hwb\(\s*([+-]?\d*[\.]?\d+)(?:deg)?\s*,\s*([+-]?[\d\.]+)%\s*,\s*([+-]?[\d\.]+)%\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)$/;var match=string.match(hwb);if(match){var alpha=parseFloat(match[4]);var h=(parseFloat(match[1])%360+360)%360;var w=clamp(parseFloat(match[2]),0,100);var b=clamp(parseFloat(match[3]),0,100);var a=clamp(isNaN(alpha)?1:alpha,0,1);return[h,w,b,a]}return null};cs.to.hex=function(){var rgba=swizzle(arguments);return"#"+hexDouble(rgba[0])+hexDouble(rgba[1])+hexDouble(rgba[2])+(rgba[3]<1?hexDouble(Math.round(rgba[3]*255)):"")};cs.to.rgb=function(){var rgba=swizzle(arguments);return rgba.length<4||rgba[3]===1?"rgb("+Math.round(rgba[0])+", "+Math.round(rgba[1])+", "+Math.round(rgba[2])+")":"rgba("+Math.round(rgba[0])+", "+Math.round(rgba[1])+", "+Math.round(rgba[2])+", "+rgba[3]+")"};cs.to.rgb.percent=function(){var rgba=swizzle(arguments);var r=Math.round(rgba[0]/255*100);var g=Math.round(rgba[1]/255*100);var b=Math.round(rgba[2]/255*100);return rgba.length<4||rgba[3]===1?"rgb("+r+"%, "+g+"%, "+b+"%)":"rgba("+r+"%, "+g+"%, "+b+"%, "+rgba[3]+")"};cs.to.hsl=function(){var hsla=swizzle(arguments);return hsla.length<4||hsla[3]===1?"hsl("+hsla[0]+", "+hsla[1]+"%, "+hsla[2]+"%)":"hsla("+hsla[0]+", "+hsla[1]+"%, "+hsla[2]+"%, "+hsla[3]+")"};cs.to.hwb=function(){var hwba=swizzle(arguments);var a="";if(hwba.length>=4&&hwba[3]!==1){a=", "+hwba[3]}return"hwb("+hwba[0]+", "+hwba[1]+"%, "+hwba[2]+"%"+a+")"};cs.to.keyword=function(rgb){return reverseNames[rgb.slice(0,3)]};function clamp(num,min,max){return Math.min(Math.max(min,num),max)}function hexDouble(num){var str=num.toString(16).toUpperCase();return str.length<2?"0"+str:str}},function(module,exports,__webpack_require__){"use strict";var isArrayish=__webpack_require__(19);var concat=Array.prototype.concat;var slice=Array.prototype.slice;var swizzle=module.exports=function swizzle(args){var results=[];for(var i=0,len=args.length;i<len;i++){var arg=args[i];if(isArrayish(arg)){results=concat.call(results,slice.call(arg))}else{results.push(arg)}}return results};swizzle.wrap=function(fn){return function(){return fn(swizzle(arguments))}}},function(module,exports,__webpack_require__){"use strict";module.exports=function isArrayish(obj){if(!obj){return false}return obj instanceof Array||Array.isArray(obj)||obj.length>=0&&obj.splice instanceof Function}},function(module,exports,__webpack_require__){var conversions=__webpack_require__(6);var route=__webpack_require__(21);var convert={};var models=Object.keys(conversions);function wrapRaw(fn){var wrappedFn=function(args){if(args===undefined||args===null){return args}if(arguments.length>1){args=Array.prototype.slice.call(arguments)}return fn(args)};if("conversion"in fn){wrappedFn.conversion=fn.conversion}return wrappedFn}function wrapRounded(fn){var wrappedFn=function(args){if(args===undefined||args===null){return args}if(arguments.length>1){args=Array.prototype.slice.call(arguments)}var result=fn(args);if(typeof result==="object"){for(var len=result.length,i=0;i<len;i++){result[i]=Math.round(result[i])}}return result};if("conversion"in fn){wrappedFn.conversion=fn.conversion}return wrappedFn}models.forEach(function(fromModel){convert[fromModel]={};Object.defineProperty(convert[fromModel],"channels",{value:conversions[fromModel].channels});Object.defineProperty(convert[fromModel],"labels",{value:conversions[fromModel].labels});var routes=route(fromModel);var routeModels=Object.keys(routes);routeModels.forEach(function(toModel){var fn=routes[toModel];convert[fromModel][toModel]=wrapRounded(fn);convert[fromModel][toModel].raw=wrapRaw(fn)})});module.exports=convert},function(module,exports,__webpack_require__){var conversions=__webpack_require__(6);function buildGraph(){var graph={};var models=Object.keys(conversions);for(var len=models.length,i=0;i<len;i++){graph[models[i]]={distance:-1,parent:null}}return graph}function deriveBFS(fromModel){var graph=buildGraph();var queue=[fromModel];graph[fromModel].distance=0;while(queue.length){var current=queue.pop();var adjacents=Object.keys(conversions[current]);for(var len=adjacents.length,i=0;i<len;i++){var adjacent=adjacents[i];var node=graph[adjacent];if(node.distance===-1){node.distance=graph[current].distance+1;node.parent=current;queue.unshift(adjacent)}}}return graph}function link(from,to){return function(args){return to(from(args))}}function wrapConversion(toModel,graph){var path=[graph[toModel].parent,toModel];var fn=conversions[graph[toModel].parent][toModel];var cur=graph[toModel].parent;while(graph[cur].parent){path.unshift(graph[cur].parent);fn=link(conversions[graph[cur].parent][cur],fn);cur=graph[cur].parent}fn.conversion=path;return fn}module.exports=function(fromModel){var graph=deriveBFS(fromModel);var conversion={};var models=Object.keys(graph);for(var len=models.length,i=0;i<len;i++){var toModel=models[i];var node=graph[toModel];if(node.parent===null){continue}conversion[toModel]=wrapConversion(toModel,graph)}return conversion}},function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:true});var _createClass=function(){function defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||false;descriptor.configurable=true;if("value"in descriptor)descriptor.writable=true;Object.defineProperty(target,descriptor.key,descriptor)}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor}}();var _jquery=__webpack_require__(0);var _jquery2=_interopRequireDefault(_jquery);var _ColorItem=__webpack_require__(2);var _ColorItem2=_interopRequireDefault(_ColorItem);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function")}}var ColorHandler=function(){function ColorHandler(colorpicker){_classCallCheck(this,ColorHandler);this.colorpicker=colorpicker}_createClass(ColorHandler,[{key:"bind",value:function bind(){if(this.colorpicker.options.color){this.color=this.createColor(this.colorpicker.options.color);return}if(!this.color&&!!this.colorpicker.inputHandler.getValue()){this.color=this.createColor(this.colorpicker.inputHandler.getValue(),this.colorpicker.options.autoInputFallback)}}},{key:"unbind",value:function unbind(){this.colorpicker.element.removeData("color")}},{key:"getColorString",value:function getColorString(){if(!this.hasColor()){return""}return this.color.string(this.format)}},{key:"setColorString",value:function setColorString(val){var color=val?this.createColor(val):null;this.color=color?color:null}},{key:"createColor",value:function createColor(val){var fallbackOnInvalid=arguments.length>1&&arguments[1]!==undefined?arguments[1]:true;var 
22036color=new _ColorItem2.default(this.resolveColorDelegate(val),this.format
vendor: 7,463 bytes, lines 22036-22037
22036);if(!color.isValid()){if(fallbackOnInvalid){color=this.getFallbackColor()}this.colorpicker.trigger("colorpickerInvalid",color,val)}if(!this.isAlphaEnabled()){color.alpha=1}return color}},{key:"getFallbackColor",value:function getFallbackColor(){if(this.fallback&&this.fallback===this.color){return this.color}var fallback=this.resolveColorDelegate(this.fallback);var color=new _ColorItem2.default(fallback,this.format);if(!color.isValid()){console.warn("The fallback color is invalid. Falling back to the previous color or black if any.");return this.color?this.color:new _ColorItem2.default("#000000",this.format)}return color}},{key:"assureColor",value:function assureColor(){if(!this.hasColor()){this.color=this.getFallbackColor()}return this.color}},{key:"resolveColorDelegate",value:function resolveColorDelegate(color){var realColor=arguments.length>1&&arguments[1]!==undefined?arguments[1]:true;var extResolvedColor=false;_jquery2.default.each(this.colorpicker.extensions,function(name,ext){if(extResolvedColor!==false){return}extResolvedColor=ext.resolveColor(color,realColor)});return extResolvedColor?extResolvedColor:color}},{key:"isInvalidColor",value:function isInvalidColor(){return!this.hasColor()||!this.color.isValid()}},{key:"isAlphaEnabled",value:function isAlphaEnabled(){return this.colorpicker.options.useAlpha!==false}},{key:"hasColor",value:function hasColor(){return this.color instanceof _ColorItem2.default}},{key:"fallback",get:function get(){return this.colorpicker.options.fallbackColor?this.colorpicker.options.fallbackColor:this.hasColor()?this.color:null}},{key:"format",get:function get(){if(this.colorpicker.options.format){return this.colorpicker.options.format}if(this.hasColor()&&this.color.hasTransparency()&&this.color.format.match(/^hex/)){return this.isAlphaEnabled()?"rgba":"hex"}if(this.hasColor()){return this.color.format}return"rgb"}},{key:"color",get:function get(){return this.colorpicker.element.data("color")},set:function set(value){this.colorpicker.element.data("color",value);if(value instanceof _ColorItem2.default&&this.colorpicker.options.format==="auto"){this.colorpicker.options.format=this.color.format}}}]);return ColorHandler}();exports.default=ColorHandler;module.exports=exports.default},function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:true});var _createClass=function(){function defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||false;descriptor.configurable=true;if("value"in descriptor)descriptor.writable=true;Object.defineProperty(target,descriptor.key,descriptor)}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor}}();var _jquery=__webpack_require__(0);var _jquery2=_interopRequireDefault(_jquery);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function")}}var PickerHandler=function(){function PickerHandler(colorpicker){_classCallCheck(this,PickerHandler);this.colorpicker=colorpicker;this.picker=null}_createClass(PickerHandler,[{key:"bind",value:function bind(){var picker=this.picker=(0,_jquery2.default)(this.options.template);if(this.options.customClass){picker.addClass(this.options.customClass)}if(this.options.horizontal){picker.addClass("colorpicker-horizontal")}if(this._supportsAlphaBar()){this.options.useAlpha=true;picker.addClass("colorpicker-with-alpha")}else{this.options.useAlpha=false}}},{key:"attach",value:function attach(){var pickerParent=this.colorpicker.container?this.colorpicker.container:null;if(pickerParent){this.picker.appendTo(pickerParent)}}},{key:"unbind",value:function unbind(){this.picker.remove()}},{key:"_supportsAlphaBar",value:function _supportsAlphaBar(){return(this.options.useAlpha||this.colorpicker.colorHandler.hasColor()&&this.color.hasTransparency())&&this.options.useAlpha!==false&&(!this.options.format||this.options.format&&!this.options.format.match(/^hex([36])?$/i))}},{key:"update",value:function update(){if(!this.colorpicker.colorHandler.hasColor()){return}var vertical=this.options.horizontal!==true,slider=vertical?this.options.sliders:this.options.slidersHorz;var saturationGuide=this.picker.find(".colorpicker-saturation .colorpicker-guide"),hueGuide=this.picker.find(".colorpicker-hue .colorpicker-guide"),alphaGuide=this.picker.find(".colorpicker-alpha .colorpicker-guide");var hsva=this.color.toHsvaRatio();if(hueGuide.length){hueGuide.css(vertical?"top":"left",(vertical?slider.hue.maxTop:slider.hue.maxLeft)*(1-hsva.h))}if(alphaGuide.length){alphaGuide.css(vertical?"top":"left",(vertical?slider.alpha.maxTop:slider.alpha.maxLeft)*(1-hsva.a))}if(saturationGuide.length){saturationGuide.css({top:slider.saturation.maxTop-hsva.v*slider.saturation.maxTop,left:hsva.s*slider.saturation.maxLeft})}this.picker.find(".colorpicker-saturation").css("backgroundColor",this.color.getCloneHueOnly().toHexString());var hexColor=this.color.toHexString();var alphaBg="";if(this.options.horizontal){alphaBg="linear-gradient(to right, "+hexColor+" 0%, transparent 100%)"}else{alphaBg="linear-gradient(to bottom, "+hexColor+" 0%, transparent 100%)"}this.picker.find(".colorpicker-alpha-color").css("background",alphaBg)}},{key:"options",get:function get(){return this.colorpicker.options}},{key:"color",get:function get(){return this.colorpicker.colorHandler.color}}]);return PickerHandler}();exports.default=PickerHandler;module.exports=exports.default},function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:true});var _createClass=function(){function defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||false;descriptor.configurable=true;if("value"in descriptor)descriptor.writable=true;Object.defineProperty(target,descriptor.key,descriptor)}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor}}();function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function")}}var AddonHandler=function(){function AddonHandler(colorpicker){_classCallCheck(this,AddonHandler);this.colorpicker=colorpicker;this.addon=null}_createClass(AddonHandler,[{key:"hasAddon",value:function hasAddon(){return!!this.addon}},{key:"bind",value:function bind(){this.addon=this.colorpicker.options.addon?this.colorpicker.element.find(this.colorpicker.options.addon):null;if(this.addon&&this.addon.length===0){this.addon=null}}},{key:"unbind",value:function unbind(){if(this.hasAddon()){this.addon.off(".colorpicker")}}},{key:"update",value:function update(){if(!this.colorpicker.colorHandler.hasColor()||!this.hasAddon()){return}var colorStr=this.colorpicker.colorHandler.getColorString();var styles={background:colorStr};var icn=this.addon.find("i").eq(0);if(icn.length>0){icn.css(styles)}else{this.addon.css(styles)}}}]);return AddonHandler}();exports.default=AddonHandler;module.exports=exports.default}])});
22037//# sourceMappingURL=bootstrap-colorpicker.min.js.map
22037
22038// file: /var/www/vhosts/codethislab.com/httpdocs/wp-content/plugins/ctl-wp-studio/classes/extensions/ctl-form-fields/php/../js/nouislider.min.js
22039/*! nouislider - 14.6.1 - 8/17/2020 */
22040!function(t){"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?module.exports=t():window.noUiSlider=t()}(function(){"use strict";var lt="14.6.1";function ut(t){t.parentElement.removeChild(t)}function a(t){return null!=t}function ct(t){t.preventDefault()}function o(t){return"number"==typeof t&&!isNaN(t)&&isFinite(t)}function pt(t,e,r){0<r&&(ht(t,e),setTimeout(function(){mt(t,e)},r))}function ft(t){return Math.max(Math.min(t,100),0)}function dt(t){return Array.isArray(t)?t:[t]}function e(t){var e=(t=String(t)).split(".");return 1<e.length?e[1].length:0}function ht(t,e){t.classList&&!/\s/.test(e)?t.classList.add(e):t.className+=" "+e}function mt(t,e){t.classList&&!/\s/.test(e)?t.classList.remove(e):t.className=t.className.replace(new RegExp("(^|\\b)"+e.split(" ").join("|")+"(\\b|$)","gi")," ")}function gt(t){var e=void 0!==window.pageXOffset,r="CSS1Compat"===(t.compatMode||"");return{x:e?window.pageXOffset:r?t.documentElement.scrollLeft:t.body.scrollLeft,y:e?window.pageYOffset:r?t.documentElement.scrollTop:t.body.scrollTop}}function c(t,e){return 100/(e-t)}function p(t,e,r){return 100*e/(t[r+1]-t[r])}function f(t,e){for(var r=1;t>=e[r];)r+=1;return r}function r(t,e,r){if(r>=t.slice(-1)[0])return 100;var n,i,o=f(r,t),s=t[o-1],a=t[o],l=e[o-1],u=e[o];return l+(i=r,p(n=[s,a],n[0]<0?i+Math.abs(n[0]):i-n[0],0)/c(l,u))}function n(t,e,r,n){if(100===n)return n;var i,o,s=f(n,t),a=t[s-1],l=t[s];return r?(l-a)/2<n-a?l:a:e[s-1]?t[s-1]+(i=n-t[s-1],o=e[s-1],Math.round(i/o)*o):n}function s(t,e,r){var n;if("number"==typeof e&&(e=[e]),!Array.isArray(e))throw new Error("noUiSlider ("+lt+"): 'range' contains invalid value.");if(!o(n="min"===t?0:"max"===t?100:parseFloat(t))||!o(e[0]))throw new Error("noUiSlider ("+lt+"): 'range' value isn't numeric.");r.xPct.push(n),r.xVal.push(e[0]),n?r.xSteps.push(!isNaN(e[1])&&e[1]):isNaN(e[1])||(r.xSteps[0]=e[1]),r.xHighestCompleteStep.push(0)}function l(t,e,r){if(e)if(r.xVal[t]!==r.xVal[t+1]){r.xSteps[t]=p([r.xVal[t],r.xVal[t+1]],e,0)/c(r.xPct[t],r.xPct[t+1]);var n=(r.xVal[t+1]-r.xVal[t])/r.xNumSteps[t],i=Math.ceil(Number(n.toFixed(3))-1),o=r.xVal[t]+r.xNumSteps[t]*i;r.xHighestCompleteStep[t]=o}else r.xSteps[t]=r.xHighestCompleteStep[t]=r.xVal[t]}function i(t,e,r){var n;this.xPct=[],this.xVal=[],this.xSteps=[r||!1],this.xNumSteps=[!1],this.xHighestCompleteStep=[],this.snap=e;var i=[];for(n in t)t.hasOwnProperty(n)&&i.push([t[n],n]);for(i.length&&"object"==typeof i[0][0]?i.sort(function(t,e){return t[0][0]-e[0][0]}):i.sort(function(t,e){return t[0]-e[0]}),n=0;n<i.length;n++)s(i[n][1],i[n][0],this);for(this.xNumSteps=this.xSteps.slice(0),n=0;n<this.xNumSteps.length;n++)l(n,this.xNumSteps[n],this)}i.prototype.getDistance=function(t){var e,r=[];for(e=0;e<this.xNumSteps.length-1;e++){var n=this.xNumSteps[e];if(n&&t/n%1!=0)throw new Error("noUiSlider ("+lt+"): 'limit', 'margin' and 'padding' of "+this.xPct[e]+"% range must be divisible by step.");r[e]=p(this.xVal,t,e)}return r},i.prototype.getAbsoluteDistance=function(t,e,r){var n,i=0;if(t<this.xPct[this.xPct.length-1])for(;t>this.xPct[i+1];)i++;else t===this.xPct[this.xPct.length-1]&&(i=this.xPct.length-2);r||t!==this.xPct[i+1]||i++;var o=1,s=e[i],a=0,l=0,u=0,c=0;for(n=r?(t-this.xPct[i])/(this.xPct[i+1]-this.xPct[i]):(this.xPct[i+1]-t)/(this.xPct[i+1]-this.xPct[i]);0<s;)a=this.xPct[i+1+c]-this.xPct[i+c],100<e[i+c]*o+100-100*n?(l=a*n,o=(s-100*n)/e[i+c],n=1):(l=e[i+c]*a/100*o,o=0),r?(u-=l,1<=this.xPct.length+c&&c--):(u+=l,1<=this.xPct.length-c&&c++),s=e[i+c]*o;return t+u},i.prototype.toStepping=function(t){return t=r(this.xVal,this.xPct,t)},i.prototype.fromStepping=function(t){return function(t,e,r){if(100<=r)return t.slice(-1)[0];var n,i=f(r,e),o=t[i-1],s=t[i],a=e[i-1],l=e[i];return n=[o,s],(r-a)*c(a,l)*(n[1]-n[0])/100+n[0]}(this.xVal,this.xPct,t)},i.prototype.getStep=function(t){return t=n(this.xPct,this.xSteps,this.snap,t)},i.prototype.getDefaultStep=function(t,e,r){var n=f(t,this.xPct);return(100===t||e&&t===this.xPct[n-1])&&(n=Math.max(n-1,1)),(this.xVal[n]-this.xVal[n-1])/r},i.prototype.getNearbySteps=function(t){var e=f(t,this.xPct);return{stepBefore:{startValue:this.xVal[e-2],step:this.xNumSteps[e-2],highestStep:this.xHighestCompleteStep[e-2]},thisStep:{startValue:this.xVal[e-1],step:this.xNumSteps[e-1],highestStep:this.xHighestCompleteStep[e-1]},stepAfter:{startValue:this.xVal[e],step:this.xNumSteps[e],highestStep:this.xHighestCompleteStep[e]}}},i.prototype.countStepDecimals=function(){var t=this.xNumSteps.map(e);return Math.max.apply(null,t)}
22040,i.prototype.convert=function(t){return this.getStep(this.toStepping(t))};var u={to:function(t){return void 0!==t&&t.toFixed(2)},from:Number},d={target:"target",base:"base",origin:"origin",handle:"handle",handleLower:"handle-lower",handleUpper:"handle-upper",touchArea:"touch-area",horizontal:"horizontal",vertical:"vertical",background:"background",connect:"connect",connects:"connects",ltr:"ltr",rtl:"rtl",textDirectionLtr:"txt-dir-ltr",textDirectionRtl:"txt-dir-rtl",draggable:"draggable",drag:"state-drag",tap:"state-tap",active:"active",tooltip:"tooltip",pips:"pips",pipsHorizontal:"pips-horizontal",pipsVertical:"pips-vertical",marker:"marker",markerHorizontal:"marker-horizontal",markerVertical:"marker-vertical",markerNormal:"marker-normal",markerLarge:"marker-large",markerSub:"marker-sub",value:"value",valueHorizontal:"value-horizontal",valueVertical:"value-vertical",valueNormal:"value-normal",valueLarge:"value-large",valueSub:"value-sub"};function h(t){if("object"==typeof(e=t)&&"function"==typeof e.to&&"function"==typeof e.from)return!0;var e;throw new Error("noUiSlider ("+lt+"): 'format' requires 'to' and 'from' methods.")}function m(t,e){if(!o(e))throw new Error("noUiSlider ("+lt+"): 'step' is not numeric.");t.singleStep=e}function g(t,e){if(!o(e))throw new Error("noUiSlider ("+lt+"): 'keyboardPageMultiplier' is not numeric.");t.keyboardPageMultiplier=e}function v(t,e){if(!o(e))throw new Error("noUiSlider ("+lt+"): 'keyboardDefaultStep' is not numeric.");t.keyboardDefaultStep=e}function b(t,e){if("object"!=typeof e||Array.isArray(e))throw new Error("noUiSlider ("+lt+"): 'range' is not an object.");if(void 0===e.min||void 0===e.max)throw new Error("noUiSlider ("+lt+"): Missing 'min' or 'max' in 'range'.");if(e.min===e.max)throw new Error("noUiSlider ("+lt+"): 'range' 'min' and 'max' cannot be equal.");t.spectrum=new i(e,t.snap,t.singleStep)}function x(t,e){if(e=dt(e),!Array.isArray(e)||!e.length)throw new Error("noUiSlider ("+lt+"): 'start' option is incorrect.");t.handles=e.length,t.start=e}function S(t,e){if("boolean"!=typeof(t.snap=e))throw new Error("noUiSlider ("+lt+"): 'snap' option must be a boolean.")}function w(t,e){if("boolean"!=typeof(t.animate=e))throw new Error("noUiSlider ("+lt+"): 'animate' option must be a boolean.")}function y(t,e){if("number"!=typeof(t.animationDuration=e))throw new Error("noUiSlider ("+lt+"): 'animationDuration' option must be a number.")}function E(t,e){var r,n=[!1];if("lower"===e?e=[!0,!1]:"upper"===e&&(e=[!1,!0]),!0===e||!1===e){for(r=1;r<t.handles;r++)n.push(e);n.push(!1)}else{if(!Array.isArray(e)||!e.length||e.length!==t.handles+1)throw new Error("noUiSlider ("+lt+"): 'connect' option doesn't match handle count.");n=e}t.connect=n}function C(t,e){switch(e){case"horizontal":t.ort=0;break;case"vertical":t.ort=1;break;default:throw new Error("noUiSlider ("+lt+"): 'orientation' option is invalid.")}}function P(t,e){if(!o(e))throw new Error("noUiSlider ("+lt+"): 'margin' option must be numeric.");0!==e&&(t.margin=t.spectrum.getDistance(e))}function N(t,e){if(!o(e))throw new Error("noUiSlider ("+lt+"): 'limit' option must be numeric.");if(t.limit=t.spectrum.getDistance(e),!t.limit||t.handles<2)throw new Error("noUiSlider ("+lt+"): 'limit' option is only supported on linear sliders with 2 or more handles.")}function k(t,e){var r;if(!o(e)&&!Array.isArray(e))throw new Error("noUiSlider ("+lt+"): 'padding' option must be numeric or array of exactly 2 numbers.");if(Array.isArray(e)&&2!==e.length&&!o(e[0])&&!o(e[1]))throw new Error("noUiSlider ("+lt+"): 'padding' option must be numeric or array of exactly 2 numbers.");if(0!==e){for(Array.isArray(e)||(e=[e,e]),t.padding=[t.spectrum.getDistance(e[0]),t.spectrum.getDistance(e[1])],r=0;r<t.spectrum.xNumSteps.length-1;r++)if(t.padding[0][r]<0||t.padding[1][r]<0)throw new Error("noUiSlider ("+lt+"): 'padding' option must be a positive number(s).");var n=e[0]+e[1],i=t.spectrum.xVal[0];if(1<n/(t.spectrum.xVal[t.spectrum.xVal.length-1]-i))throw new Error("noUiSlider ("+lt+"): 'padding' option must not exceed 100% of the range.")}}function U(t,e){switch(e){case"ltr":t.dir=0;break;case"rtl":t.dir=1;break;default:throw new Error("noUiSlider ("+lt+"): 'direction' option was not recognized.")}}function A(t,e){if("string"!=typeof e)throw new Error("noUiSlider ("+lt+"): 'behaviour' must be a string containing options.");var r=0<=e.indexOf("tap"),n=0<=e.indexOf("drag"),i=0<=e.indexOf("fixed"),o=0<=e.indexOf("snap"),s=0<=e.indexOf("hover"),a=0<=e.indexOf("unconstrained");if(i){if(2!==t.handles)throw new Error("noUiSlider ("+lt+"): 'fixed' behaviour must be used with 2 handles");P(t,t.start[1]-t.start[0])}if(a&&(t.margin||t.limit))throw new Error("noUiSlider ("+lt+"): 'unconstrained' behaviour cannot be used with margin or limit");t.events={tap:r||o,drag:n,fixed:i,snap:o,hover:s,unconstrained:a}}function V(t,e){if(!1!==e)if(!0===e){t.tooltips=[];for(var r=0;r<t.handles;r++)t.tooltips.push(!0)}else{if(t.tooltips=dt(e),t.tooltips.length!==t.handles)throw new Error("noUiSlider ("+lt+"): must pass a formatter for all handles.");t.tooltips.forEach(function(t){if("boolean"!=typeof t&&("object"!=typeof t||"function"!=typeof t.to))throw new Error("noUiSlider ("+lt+"): 'tooltips' must be passed a formatter or 'false'.")})}}function D(t,e){h(t.ariaFormat=e)}function M(t,e){h(t.format=e)}function O(t,e){if("boolean"!=typeof(t.keyboardSupport=e))throw new Error("noUiSlider ("+lt+"): 'keyboardSupport' option must be a boolean.")}function L(t,e){t.documentElement=e}function z(t,e){if("string"!=typeof e&&!1!==e)throw new Error("noUiSlider ("+lt+"): 'cssPrefix' must be a string or `false`.");t.cssPrefix=e}function H(t,e){if("object"!=typeof e)throw new Error("noUiSlider ("+lt+"): 'cssClasse
22040s' must be an object.");if("string"==typeof t.cssPrefix)for(var r in t.cssClasses={},e)e.hasOwnProperty(r)&&(t.cssClasses[r]=t.cssPrefix+e[r]);else t.cssClasses=e}function vt(e){var r={margin:0,limit:0,padding:0,animate:!0,animationDuration:300,ariaFormat:u,format:u},n={step:{r:!1,t:m},keyboardPageMultiplier:{r:!1,t:g},keyboardDefaultStep:{r:!1,t:v},start:{r:!0,t:x},connect:{r:!0,t:E},direction:{r:!0,t:U},snap:{r:!1,t:S},animate:{r:!1,t:w},animationDuration:{r:!1,t:y},range:{r:!0,t:b},orientation:{r:!1,t:C},margin:{r:!1,t:P},limit:{r:!1,t:N},padding:{r:!1,t:k},behaviour:{r:!0,t:A},ariaFormat:{r:!1,t:D},format:{r:!1,t:M},tooltips:{r:!1,t:V},keyboardSupport:{r:!0,t:O},documentElement:{r:!1,t:L},cssPrefix:{r:!0,t:z},cssClasses:{r:!0,t:H}},i={connect:!1,direction:"ltr",behaviour:"tap",orientation:"horizontal",keyboardSupport:!0,cssPrefix:"noUi-",cssClasses:d,keyboardPageMultiplier:5,keyboardDefaultStep:10};e.format&&!e.ariaFormat&&(e.ariaFormat=e.format),Object.keys(n).forEach(function(t){if(!a(e[t])&&void 0===i[t]){if(n[t].r)throw new Error("noUiSlider ("+lt+"): '"+t+"' is required.");return!0}n[t].t(r,a(e[t])?e[t]:i[t])}),r.pips=e.pips;var t=document.createElement("div"),o=void 0!==t.style.msTransform,s=void 0!==t.style.transform;r.transformRule=s?"transform":o?"msTransform":"webkitTransform";return r.style=[["left","top"],["right","bottom"]][r.dir][r.ort],r}function j(t,b,o){var l,u,s,c,i,a,e,p,f=window.navigator.pointerEnabled?{start:"pointerdown",move:"pointermove",end:"pointerup"}:window.navigator.msPointerEnabled?{start:"MSPointerDown",move:"MSPointerMove",end:"MSPointerUp"}:{start:"mousedown touchstart",move:"mousemove touchmove",end:"mouseup touchend"},d=window.CSS&&CSS.supports&&CSS.supports("touch-action","none")&&function(){var t=!1;try{var e=Object.defineProperty({},"passive",{get:function(){t=!0}});window.addEventListener("test",null,e)}catch(t){}return t}(),h=t,y=b.spectrum,x=[],S=[],m=[],g=0,v={},w=t.ownerDocument,E=b.documentElement||w.documentElement,C=w.body,P=-1,N=0,k=1,U=2,A="rtl"===w.dir||1===b.ort?0:100;function V(t,e){var r=w.createElement("div");return e&&ht(r,e),t.appendChild(r),r}function D(t,e){var r=V(t,b.cssClasses.origin),n=V(r,b.cssClasses.handle);return V(n,b.cssClasses.touchArea),n.setAttribute("data-handle",e),b.keyboardSupport&&(n.setAttribute("tabindex","0"),n.addEventListener("keydown",function(t){return function(t,e){if(O()||L(e))return!1;var r=["Left","Right"],n=["Down","Up"],i=["PageDown","PageUp"],o=["Home","End"];b.dir&&!b.ort?r.reverse():b.ort&&!b.dir&&(n.reverse(),i.reverse());var s,a=t.key.replace("Arrow",""),l=a===i[0],u=a===i[1],c=a===n[0]||a===r[0]||l,p=a===n[1]||a===r[1]||u,f=a===o[0],d=a===o[1];if(!(c||p||f||d))return!0;if(t.preventDefault(),p||c){var h=b.keyboardPageMultiplier,m=c?0:1,g=at(e),v=g[m];if(null===v)return!1;!1===v&&(v=y.getDefaultStep(S[e],c,b.keyboardDefaultStep)),(u||l)&&(v*=h),v=Math.max(v,1e-7),v*=c?-1:1,s=x[e]+v}else s=d?b.spectrum.xVal[b.spectrum.xVal.length-1]:b.spectrum.xVal[0];return rt(e,y.toStepping(s),!0,!0),J("slide",e),J("update",e),J("change",e),J("set",e),!1}(t,e)})),n.setAttribute("role","slider"),n.setAttribute("aria-orientation",b.ort?"vertical":"horizontal"),0===e?ht(n,b.cssClasses.handleLower):e===b.handles-1&&ht(n,b.cssClasses.handleUpper),r}function M(t,e){return!!e&&V(t,b.cssClasses.connect)}function r(t,e){return!!b.tooltips[e]&&V(t.firstChild,b.cssClasses.tooltip)}function O(){return h.hasAttribute("disabled")}function L(t){return u[t].hasAttribute("disabled")}function z(){i&&(G("update.tooltips"),i.forEach(function(t){t&&ut(t)}),i=null)}function H(){z(),i=u.map(r),$("update.tooltips",function(t,e,r){if(i[e]){var n=t[e];!0!==b.tooltips[e]&&(n=b.tooltips[e].to(r[e])),i[e].innerHTML=n}})}function j(e,i,o){var s=w.createElement("div"),a=[];a[N]=b.cssClasses.valueNormal,a[k]=b.cssClasses.valueLarge,a[U]=b.cssClasses.valueSub;var l=[];l[N]=b.cssClasses.markerNormal,l[k]=b.cssClasses.markerLarge,l[U]=b.cssClasses.markerSub;var u=[b.cssClasses.valueHorizontal,b.cssClasses.valueVertical],c=[b.cssClasses.markerHorizontal,b.cssClasses.markerVertical];
22040function p(t,e){var r=e===b.cssClasses.value,n=r?a:l;return e+" "+(r?u:c)[b.ort]+" "+n[t]}return ht(s,b.cssClasses.pips),ht(s,0===b.ort?b.cssClasses.pipsHorizontal:b.cssClasses.pipsVertical),Object.keys(e).forEach(function(t){!function(t,e,r){if((r=i?i(e,r):r)!==P){var n=V(s,!1);n.className=p(r,b.cssClasses.marker),n.style[b.style]=t+"%",N<r&&((n=V(s,!1)).className=p(r,b.cssClasses.value),n.setAttribute("data-value",e),n.style[b.style]=t+"%",n.innerHTML=o.to(e))}}(t,e[t][0],e[t][1])}),s}function F(){c&&(ut(c),c=null)}function R(t){F();var m,g,v,b,e,r,x,S,w,n=t.mode,i=t.density||1,o=t.filter||!1,s=function(t,e,r){if("range"===t||"steps"===t)return y.xVal;if("count"===t){if(e<2)throw new Error("noUiSlider ("+lt+"): 'values' (>= 2) required for mode 'count'.");var n=e-1,i=100/n;for(e=[];n--;)e[n]=n*i;e.push(100),t="positions"}return"positions"===t?e.map(function(t){return y.fromStepping(r?y.getStep(t):t)}):"values"===t?r?e.map(function(t){return y.fromStepping(y.getStep(y.toStepping(t)))}):e:void 0}(n,t.values||!1,t.stepped||!1),a=(m=i,g=n,v=s,b={},e=y.xVal[0],r=y.xVal[y.xVal.length-1],S=x=!1,w=0,(v=v.slice().sort(function(t,e){return t-e}).filter(function(t){return!this[t]&&(this[t]=!0)},{}))[0]!==e&&(v.unshift(e),x=!0),v[v.length-1]!==r&&(v.push(r),S=!0),v.forEach(function(t,e){var r,n,i,o,s,a,l,u,c,p,f=t,d=v[e+1],h="steps"===g;if(h&&(r=y.xNumSteps[e]),r||(r=d-f),!1!==f)for(void 0===d&&(d=f),r=Math.max(r,1e-7),n=f;n<=d;n=(n+r).toFixed(7)/1){for(u=(s=(o=y.toStepping(n))-w)/m,p=s/(c=Math.round(u)),i=1;i<=c;i+=1)b[(a=w+i*p).toFixed(5)]=[y.fromStepping(a),0];l=-1<v.indexOf(n)?k:h?U:N,!e&&x&&n!==d&&(l=0),n===d&&S||(b[o.toFixed(5)]=[n,l]),w=o}}),b),l=t.format||{to:Math.round};return c=h.appendChild(j(a,o,l))}function T(){var t=l.getBoundingClientRect(),e="offset"+["Width","Height"][b.ort];return 0===b.ort?t.width||l[e]:t.height||l[e]}function B(n,i,o,s){var e=function(t){return!!(t=function(t,e,r){var n,i,o=0===t.type.indexOf("touch"),s=0===t.type.indexOf("mouse"),a=0===t.type.indexOf("pointer");0===t.type.indexOf("MSPointer")&&(a=!0);if(o){var l=function(t){return t.target===r||r.contains(t.target)||t.target.shadowRoot&&t.target.shadowRoot.contains(r)};if("touchstart"===t.type){var u=Array.prototype.filter.call(t.touches,l);if(1<u.length)return!1;n=u[0].pageX,i=u[0].pageY}else{var c=Array.prototype.find.call(t.changedTouches,l);if(!c)return!1;n=c.pageX,i=c.pageY}}e=e||gt(w),(s||a)&&(n=t.clientX+e.x,i=t.clientY+e.y);return t.pageOffset=e,t.points=[n,i],t.cursor=s||a,t}(t,s.pageOffset,s.target||i))&&(!(O()&&!s.doNotReject)&&(e=h,r=b.cssClasses.tap,!((e.classList?e.classList.contains(r):new RegExp("\\b"+r+"\\b").test(e.className))&&!s.doNotReject)&&(!(n===f.start&&void 0!==t.buttons&&1<t.buttons)&&((!s.hover||!t.buttons)&&(d||t.preventDefault(),t.calcPoint=t.points[b.ort],void o(t,s))))));var e,r},r=[];return n.split(" ").forEach(function(t){i.addEventListener(t,e,!!d&&{passive:!0}),r.push([t,e])}),r}function q(t){var e,r,n,i,o,s,a=100*(t-(e=l,r=b.ort,n=e.getBoundingClientRect(),i=e.ownerDocument,o=i.documentElement,s=gt(i),/webkit.*Chrome.*Mobile/i.test(navigator.userAgent)&&(s.x=0),r?n.top+s.y-o.clientTop:n.left+s.x-o.clientLeft))/T();return a=ft(a),b.dir?100-a:a}function X(t,e){"mouseout"===t.type&&"HTML"===t.target.nodeName&&null===t.relatedTarget&&_(t,e)}function Y(t,e){if(-1===navigator.appVersion.indexOf("MSIE 9")&&0===t.buttons&&0!==e.buttonsProperty)return _(t,e);var r=(b.dir?-1:1)*(t.calcPoint-e.startCalcPoint);Z(0<r,100*r/e.baseSize,e.locations,e.handleNumbers)}function _(t,e){e.handle&&(mt(e.handle,b.cssClasses.active),g-=1),e.listeners.forEach(function(t){E.removeEventListener(t[0],t[1])}),0===g&&(mt(h,b.cssClasses.drag),et(),t.cursor&&(C.style.cursor="",C.removeEventListener("selectstart",ct))),e.handleNumbers.forEach(function(t){J("change",t),J("set",t),J("end",t)})}function I(t,e){if(e.handleNumbers.some(L))return!1;var r;1===e.handleNumbers.length&&(r=u[e.handleNumbers[0]].children[0],g+=1,ht(r,b.cssClasses.active));t.stopPropagation();var n=[],i=B(f.move,E,Y,{target:t.target,handle:r,listeners:n,startCalcPoint:t.calcPoint,baseSize:T(),pageOffset:t.pageOffset,handleNumbers:e.handleNumbers,buttonsProperty:t.buttons,locations:S.slice()}),o=B(f.end,E,_,{target:t.target,handle:r,listeners:n,doNotReject:!0,handleNumbers:e.handleNumbers}),s=B("mouseout",E,X,{target:t.target,handle:r,listeners:n,doNotReject:!0,handleNumbers:e.handleNumbers});n.push.apply(n,i.concat(o,s)),t.cursor&&(C.style.cursor=getComputedStyle(t.target).cursor,1<u.length&&ht(h,b.cssClasse
22040s.drag),C.addEventListener("selectstart",ct,!1)),e.handleNumbers.forEach(function(t){J("start",t)})}function n(t){if(!t.buttons&&!t.touches)return!1;t.stopPropagation();var i,o,s,e=q(t.calcPoint),r=(i=e,s=!(o=100),u.forEach(function(t,e){if(!L(e)){var r=S[e],n=Math.abs(r-i);(n<o||n<=o&&r<i||100===n&&100===o)&&(s=e,o=n)}}),s);if(!1===r)return!1;b.events.snap||pt(h,b.cssClasses.tap,b.animationDuration),rt(r,e,!0,!0),et(),J("slide",r,!0),J("update",r,!0),J("change",r,!0),J("set",r,!0),b.events.snap&&I(t,{handleNumbers:[r]})}function W(t){var e=q(t.calcPoint),r=y.getStep(e),n=y.fromStepping(r);Object.keys(v).forEach(function(t){"hover"===t.split(".")[0]&&v[t].forEach(function(t){t.call(a,n)})})}function $(t,e){v[t]=v[t]||[],v[t].push(e),"update"===t.split(".")[0]&&u.forEach(function(t,e){J("update",e)})}function G(t){var n=t&&t.split(".")[0],i=n&&t.substring(n.length);Object.keys(v).forEach(function(t){var e=t.split(".")[0],r=t.substring(e.length);n&&n!==e||i&&i!==r||delete v[t]})}function J(r,n,i){Object.keys(v).forEach(function(t){var e=t.split(".")[0];r===e&&v[t].forEach(function(t){t.call(a,x.map(b.format.to),n,x.slice(),i||!1,S.slice(),a)})})}function K(t,e,r,n,i,o){var s;return 1<u.length&&!b.events.unconstrained&&(n&&0<e&&(s=y.getAbsoluteDistance(t[e-1],b.margin,0),r=Math.max(r,s)),i&&e<u.length-1&&(s=y.getAbsoluteDistance(t[e+1],b.margin,1),r=Math.min(r,s))),1<u.length&&b.limit&&(n&&0<e&&(s=y.getAbsoluteDistance(t[e-1],b.limit,0),r=Math.min(r,s)),i&&e<u.length-1&&(s=y.getAbsoluteDistance(t[e+1],b.limit,1),r=Math.max(r,s))),b.padding&&(0===e&&(s=y.getAbsoluteDistance(0,b.padding[0],0),r=Math.max(r,s)),e===u.length-1&&(s=y.getAbsoluteDistance(100,b.padding[1],1),r=Math.min(r,s))),!((r=ft(r=y.getStep(r)))===t[e]&&!o)&&r}function Q(t,e){var r=b.ort;return(r?e:t)+", "+(r?t:e)}function Z(t,n,r,e){var i=r.slice(),o=[!t,t],s=[t,!t];e=e.slice(),t&&e.reverse(),1<e.length?e.forEach(function(t,e){var r=K(i,t,i[t]+n,o[e],s[e],!1);!1===r?n=0:(n=r-i[t],i[t]=r)}):o=s=[!0];var a=!1;e.forEach(function(t,e){a=rt(t,r[t]+n,o[e],s[e])||a}),a&&e.forEach(function(t){J("update",t),J("slide",t)})}function tt(t,e){return b.dir?100-t-e:t}function et(){m.forEach(function(t){var e=50<S[t]?-1:1,r=3+(u.length+e*t);u[t].style.zIndex=r})}function rt(t,e,r,n){return!1!==(e=K(S,t,e,r,n,!1))&&(function(t,e){S[t]=e,x[t]=y.fromStepping(e);var r="translate("+Q(10*(tt(e,0)-A)+"%","0")+")";u[t].style[b.transformRule]=r,nt(t),nt(t+1)}(t,e),!0)}function nt(t){if(s[t]){var e=0,r=100;0!==t&&(e=S[t-1]),t!==s.length-1&&(r=S[t]);var n=r-e,i="translate("+Q(tt(e,n)+"%","0")+")",o="scale("+Q(n/100,"1")+")";s[t].style[b.transformRule]=i+" "+o}}function it(t,e){return null===t||!1===t||void 0===t?S[e]:("number"==typeof t&&(t=String(t)),t=b.format.from(t),!1===(t=y.toStepping(t))||isNaN(t)?S[e]:t)}function ot(t,e){var r=dt(t),n=void 0===S[0];e=void 0===e||!!e,b.animate&&!n&&pt(h,b.cssClasses.tap,b.animationDuration),m.forEach(function(t){rt(t,it(r[t],t),!0,!1)});for(var i=1===m.length?0:1;i<m.length;++i)m.forEach(function(t){rt(t,S[t],!0,!0)});et(),m.forEach(function(t){J("update",t),null!==r[t]&&e&&J("set",t)})}function st(){var t=x.map(b.format.to);return 1===t.length?t[0]:t}function at(t){var e=S[t],r=y.getNearbySteps(e),n=x[t],i=r.thisStep.step,o=null;if(b.snap)return[n-r.stepBefore.startValue||null,r.stepAfter.startValue-n||null];!1!==i&&n+i>r.stepAfter.startValue&&(i=r.stepAfter.startValue-n),o=n>r.thisStep.startValue?r.thisStep.step:!1!==r.stepBefore.step&&n-r.stepBefore.highestStep,100===e?i=null:0===e&&(o=null);var s=y.countStepDecimals();return null!==i&&!1!==i&&(i=Number(i.toFixed(s))),null!==o&&!1!==o&&(o=Number(o.toFixed(s))),[o,i]}return ht(e=h,b.cssClasses.target),0===b.dir?ht(e,b.cssClasses.ltr):ht(e,b.cssClasses.rtl),0===b.ort?ht(e,b.cssClasses.horizontal):ht(e,b.cssClasses.vertical),ht(e,"rtl"===getComputedStyle(e).direction?b.cssClasses.textDirectionRtl:b.cssClasses.textDirectionLtr),l=V(e,b.cssClasses.base),function(t,e){var r=V(e,b.cssClasses.connects);u=[],(s=[]).push(M(r,t[0]));for(var n=0;n<b.handles;n++)u.push(D(e,n)),m[n]=n,s.push(M(r,t[n+1]))}(b.connect,l),(p=b.events).fixed||u.forEach(function(t,e){B(f.start,t.children[0],I,{handleNumbers:[e]})}),p.tap&&B(f.start,l,n,{}),p.hover&&B(f.move,l,W,{hover:!0}
22040),p.drag&&s.forEach(function(t,e){if(!1!==t&&0!==e&&e!==s.length-1){var r=u[e-1],n=u[e],i=[t];ht(t,b.cssClasses.draggable),p.fixed&&(i.push(r.children[0]),i.push(n.children[0])),i.forEach(function(t){B(f.start,t,I,{handles:[r,n],handleNumbers:[e-1,e]})})}}),ot(b.start),b.pips&&R(b.pips),b.tooltips&&H(),$("update",function(t,e,s,r,a){m.forEach(function(t){var e=u[t],r=K(S,t,0,!0,!0,!0),n=K(S,t,100,!0,!0,!0),i=a[t],o=b.ariaFormat.to(s[t]);r=y.fromStepping(r).toFixed(1),n=y.fromStepping(n).toFixed(1),i=y.fromStepping(i).toFixed(1),e.children[0].setAttribute("aria-valuemin",r),e.children[0].setAttribute("aria-valuemax",n),e.children[0].setAttribute("aria-valuenow",i),e.children[0].setAttribute("aria-valuetext",o)})}),a={destroy:function(){for(var t in b.cssClasses)b.cssClasses.hasOwnProperty(t)&&mt(h,b.cssClasses[t]);for(;h.firstChild;)h.removeChild(h.firstChild);delete h.noUiSlider},steps:function(){return m.map(at)},on:$,off:G,get:st,set:ot,setHandle:function(t,e,r){if(!(0<=(t=Number(t))&&t<m.length))throw new Error("noUiSlider ("+lt+"): invalid handle number, got: "+t);rt(t,it(e,t),!0,!0),J("update",t),r&&J("set",t)},reset:function(t){ot(b.start,t)},__moveHandles:function(t,e,r){Z(t,e,S,r)},options:o,updateOptions:function(e,t){var r=st(),n=["margin","limit","padding","range","animate","snap","step","format","pips","tooltips"];n.forEach(function(t){void 0!==e[t]&&(o[t]=e[t])});var i=vt(o);n.forEach(function(t){void 0!==e[t]&&(b[t]=i[t])}),y=i.spectrum,b.margin=i.margin,b.limit=i.limit,b.padding=i.padding,b.pips?R(b.pips):F(),b.tooltips?H():z(),S=[],ot(e.start||r,t)},target:h,removePips:F,removeTooltips:z,getTooltips:function(){return i},getOrigins:function(){return u},pips:R}}return{__spectrum:i,version:lt,cssClasses:d,create:function(t,e){if(!t||!t.nodeName)throw new Error("noUiSlider ("+lt+"): create requires a single element, got: "+t);if(t.noUiSlider)throw new Error("noUiSlider ("+lt+"): Slider was already initialized.");var r=j(t,vt(e),e);return t.noUiSlider=r}}});
22041// file: /var/www/vhosts/codethislab.com/httpdocs/wp-content/plugins/ctl-wp-studio/classes/extensions/ctl-google-recaptcha-v2/php/../js/front.js
22042jQuery(document).ready(function(){
22043    wpdk_add_action("ctl-theme-bootstrap-modals-show-modal", function( oNodeModal ){  
22044        oNodeModal.find(".ctl-google-recaptcha-v2-container").each(function(){
22045            var sSiteKey = jQuery(this).attr("data-sitekey");
22046            if( sSiteKey ){
22047                grecaptcha.render( this, {
22048                    "sitekey": sSiteKey
22049                });
22050            }
22051        });
22052    });
22053
22054    jQuery(document).on('click', '.g-recaptcha-enterprise', function(e){
22055        let oNodeButton    = jQuery(this);
22056        let oNodeContainer = jQuery(this).closest(".ctl-google-recaptcha-container");
22057        let idDialog       = g_oCTLWPStudio.showLoading("");
22058
22059        ctlFormFieldCleanError( oNodeButton );
22060
22061        oNodeButton.find('i').attr("class", "fa-regular fa-square");
22062
22063        grecaptcha.enterprise.ready(function() {
22064            grecaptcha.enterprise.execute(oNodeButton.attr("data-sitekey"), {action: 'check'}).then(function(token) {
22065                oNodeContainer.find("input[name='g-recaptcha-response']").val(token);
22066                g_oCTLWPStudio.closeDlg(idDialog);
22067
22068                oNodeButton.find('i').attr("class", "fa-regular fa-square-check");
22069            });
22070        });
22071    });
22072});
22073// file: /var/www/vhosts/codethislab.com/httpdocs/wp-content/plugins/ctl-wp-studio/classes/extensions/ctl-progressive-counters/php/../js/front.js
22074jQuery(document).ready(function(){
22075    jQuery(document).on('click', '.ctl-progressive-counter-action-reset', function(e){        
22076        var oNodeButton = jQuery(this);
22077
22078        g_oCTLBootstrapModals.confirm(
22079            g_oCTLProgressiveCounterLocalizationFront["Attention!"],
22080            g_oCTLProgressiveCounterLocalizationFront["Are you sure to reset this counter?"] + "\n" + 
22081            g_oCTLProgressiveCounterLocalizationFront["This action isn't reversible!"],
22082            g_oCTLProgressiveCounterLocalizationFront["Yes"], function(){
22083
22084                g_oCTLBootstrapModals.closeModalAndStack();
22085
22086                var oFormData  = {};        
22087                oFormData["widget-id"]        = oNodeButton.attr("data-widget-id");
22088                oFormData['action']           = 'ctl-wp-studio';
22089                oFormData['execute']          = 'ctl-progressive-counters';        
22090                oFormData['extension-action'] = 'reset-progressive-counter';      
22091                let idLoading = g_oCTLWPStudio.showLoading("");
22092
22093
22094                jQuery.ajax({
22095                        url : g_oCTLWPStudio._oLangCommon["ajaxurl"],
22096                        type: "POST",
22097                        data : oFormData,
22098                        cache: false,
22099                        method: 'POST',
22100                        success:function(response, textStatus, jqXHR){				
22101                            var oResponse = jQuery.parseJSON(response);
22102                            
22103                            if( oResponse.res === false ){
22104                                g_oCTLWPStudio.closeDlg(idLoading);
22105                                if ( oResponse.desc ){
22106                                    g_oCTLBootstrapModals.alert(oResponse.desc);
22107                                }else{
22108                                    alert(g_oCTLWPStudio._oLangCommon["Ooops! Something Went Wrong!"]);  
22109                                }           
22110                            }else{  
22111                                g_oCTLWPStudio.closeDlg(idLoading);
22112                                g_oCTLBootstrapModals.alert("", g_oCTLProgressiveCounterLocalizationFront["Counter reset!"]); 
22113                            }
22114                        },
22115                        error: function(jqXHR, textStatus, errorThrown){
22116                            g_oCTLWPStudio.closeDlg(idLoading);
22117                            alert(g_oCTLWPStudio._oLangCommon["Ooops! Something Went Wrong!"]);  
22118                        }
22119                    });  
22120
22121            });
22122    });
22123});
22124// file: /var/www/vhosts/codethislab.com/httpdocs/wp-content/plugins/ctl-wp-studio/classes/extensions/ctl-rolling-number/php/../js/front.js
22125jQuery(document).ready(function(){    
22126	
22127  ctlRollingNumberUpdate();
22128  ctlRollingNumberInitGauge();
22129
22130	setTimeout( function(){
22131  		ctlRollingNumberUpdate();
22132		ctlRollingNumberInitGauge();
22133	},100);
22134	
22135
22136    wpdk_add_action("ctl-theme-bootstrap-tabs-shown-tab", function( oNodeTabPane ){        
22137        ctlRollingNumberUpdate(oNodeTabPane);
22138        ctlRollingNumberInitGauge(oNodeTabPane);
22139    });	
22140	
22141    wpdk_add_action("ctl-theme-bootstrap-modals-show-modal", function( oNodeModal ){        
22142        ctlRollingNumberUpdate(oNodeModal);
22143        ctlRollingNumberInitGauge(oNodeModal);
22144    });
22145	
22146
22147});
22148
22149jQuery(window).scroll(function() {
22150  ctlRollingNumberUpdate();
22151});
22152
22153function ctlRollingNumberInitGauge( oNodeDom = null ){
22154
22155    let oNodeParentToInit = null;
22156
22157    if (oNodeDom){
22158        oNodeParentToInit = oNodeDom;
22159    }else{
22160        oNodeParentToInit = jQuery("body");
22161    }
22162
22163    oNodeParentToInit.find(".gauge-container").each(function(){
22164        var oNodeGauge = jQuery(this);
22165
22166    var cpuGauge = Gauge(oNodeGauge[0], {
22167        max: oNodeGauge.attr("data-max"),
22168        // custom label renderer
22169        label: function(value) {
22170        return Math.round(value) + "/" + this.max;
22171        },
22172        showValue : false,
22173        value: oNodeGauge.attr("data-end"),
22174        // Custom dial colors (Optional)
22175        color: function(value) {
22176                if (oNodeGauge.attr("data-fill-color")){
22177                    return oNodeGauge.attr("data-fill-color" );
22178                }else{
22179                    if(value < 20) {
22180                        return "#5ee432"; // green
22181                        }else if(value < 40) {
22182                        return "#fffa50"; // yellow
22183                        }else if(value < 60) {
22184                        return "#f7aa38"; // orange
22185                        }else {
22186                        return "#ef4655"; // red
22187                        }
22188                }
22189        }
22190    });	
22191    });    
22192}
22193
22194function ctlRollingNumberUpdate( oNodeDom = null){
22195
22196    let oNodeParentToInit = null;
22197
22198    if (oNodeDom){
22199        oNodeParentToInit = oNodeDom;
22200    }else{
22201        oNodeParentToInit = jQuery("body");
22202    }
22203	
22204  oNodeParentToInit.find(".ctl-rolling-number").each(function(){   
22205	  
22206	  	if (jQuery(this).attr("data-started") == "1"){
22207			return;
22208		}
22209	  
22210        if ( jQuery(this).closest(".modal").length > 0 ){
22211            ctlRollingNumberAnimate(jQuery(this));
22212            jQuery(this).attr("data-started", 1); 
22213        }else{
22214            var fTop = jQuery(this).offset().top - window.innerHeight + 100;
22215		
22216            var iStarted = Number(jQuery(this).attr("data-started"));
22217            if (iStarted === 0 && jQuery(window).scrollTop() > fTop) {
22218                ctlRollingNumberAnimate(jQuery(this));
22219                jQuery(this).attr("data-started", 1);
22220            }
22221        }
22222  });
22223}
22224
22225function ctlRollingNumberFormat( value, szTypeSymbol, szSymbol, szNumberFormat, iDecimalDigitsNumber ){
22226    var szValue;
22227
22228    switch(szTypeSymbol){
22229        case "eur":{            
22230            szValue = value.toLocaleString('it-IT', {
22231                style: 'currency',
22232                currency: 'EUR',
22233              });
22234        }break
22235        default:{
22236            switch (szNumberFormat) {
22237                case "check": {
22238                    szValue = (value >= 1) ? '<i class="fa-solid fa-check"></i>' : '<i class="fa-solid fa-xmark"></i>';
22239                } break;
22240                case "stars": {
22241                    szValue = "";
22242                    var iStars = Math.round(value);
22243                    for (var i=0; i<iStars; i++) {
22244                        szValue += "★";
22245                    }
22246                    for (var i=iStars; i<5; i++) {
22247                        szValue += "☆";
22248                    }
22249                } break;
22250                case "hdd-size":{
22251                    if (value < 1024) {
22252                        szValue = Math.floor(value) + " bytes";
22253                    } else if (value < 1048576) {
22254                        szValue = (value / 1024).toFixed(iDecimalDigitsNumber) + " KB";
22255                    } else if (value < 1073741824) {
22256                        szValue = (value / (1024 * 1024)).toFixed(iDecimalDigitsNumber) + " MB";
22257                    } else if (value < 1099511627776) {
22258                        szValue = (value / (1024 * 1024 * 1024)).toFixed(iDecimalDigitsNumber) + " GB";
22259                    } else {
22260                        szValue = (value / (1024 * 1024 * 1024 * 1024)).toFixed(iDecimalDigitsNumber) + " TB";
22261                    }
22262                }break;
22263                case "rounded-integer": {
22264                    szValue = Math.round(value) + "";
22265                } break;
22266                case "integer": {
22267                    szValue = Math.floor(value) + "";
22268                } break;
22269                case "decimal": {
22270                    szValue = value.toFixed(iDecimalDigitsNumber) + "";
22271                } break;
22272            }
22273
22274            szValue += szSymbol;
22275        }
22276    }
22277
22278    return szValue;
22279}
22280
22281function ctlRollingNumberAnimate( oNodeRollingNumber ){
22282  
22283    var oNodeIndex = oNodeRollingNumber.find(".ctl-rolling-number-index");
22284    var oNodeIndexSpan = oNodeIndex.find("span");
22285
22286    var szIndex      = oNodeIndex.attr("data-index");
22287    var iStart       = Number(oNodeIndex.attr("data-start"));
22288    var iEnd         = Number(oNodeIndex.attr("data-end"));
22289    var iDuration    = Number(oNodeIndex.attr("data-duration"));
22290    var szSymbol     = oNodeIndex.attr("data-symbol");
22291    var szTypeSymbol = oNodeIndex.attr("data-type-symbol");
22292    var szNumberFormat = oNodeIndex.attr("data-number-format");
22293    var iDecimalDigitsNumber = Number(oNodeIndex.attr("data-decimal-digits-number"));
22294
22295  
22296    szIndex = szIndex.replace("%d", "%s");
22297
22298    jQuery({
22299        countNum: iStart
22300    }).animate(
22301        { 
22302            countNum: iEnd 
22303        },
22304        {
22305            duration: iDuration,
22306            easing: 'swing',
22307            step: function() {
22308                szValue = ctlRollingNumberFormat(this.countNum, szTypeSymbol, szSymbol, szNumberFormat, iDecimalDigitsNumber);
22309                oNodeIndexSpan.html(szValue);
22310            },
22311            complete: function() {   
22312                szValue = ctlRollingNumberFormat(this.countNum, szTypeSymbol, szSymbol, szNumberFormat, iDecimalDigitsNumber);
22313                oNodeIndexSpan.html(szValue);
22314            }
22315        }
22316    );
22317}
22318// file: /var/www/vhosts/codethislab.com/httpdocs/wp-content/plugins/ctl-wp-studio/classes/extensions/ctl-rolling-number/php/../js/gauge.js
22319/* global window, define, module */
22320(function(global, factory) {
22321    var Gauge = factory(global);
22322    if(typeof define === "function" && define.amd) {
22323      // AMD support
22324      define(function() {return Gauge;});
22325    }else if(typeof module === "object" && module.exports) {
22326      // CommonJS support
22327      module.exports = Gauge;
22328    }else {
22329      // We are probably running in the browser
22330      global.Gauge = Gauge;
22331    }
22332  })(typeof window === "undefined" ? this : window, function(global, undefined) {
22333  
22334    var document = global.document,
22335      slice = Array.prototype.slice,
22336      requestAnimationFrame = (global.requestAnimationFrame ||
22337          global.mozRequestAnimationFrame ||
22338          global.webkitRequestAnimationFrame ||
22339          global.msRequestAnimationFrame ||
22340          function(cb) {
22341            return setTimeout(cb, 1000 / 60);
22342          });
22343  
22344    // EXPERIMENTAL!!
22345    /**
22346     * Simplistic animation function for animating the gauge. That's all!
22347     * Options are:
22348     * {
22349     *  duration: 1,    // In seconds
22350     *  start: 0,       // The start value
22351     *  end: 100,       // The end value
22352     *  step: function, // REQUIRED! The step function that will be passed the value and does something
22353     *  easing: function // The easing function. Default is easeInOutCubic
22354     * }
22355     */
22356    function Animation(options) {
22357      var duration = options.duration,
22358          currentIteration = 1,
22359          iterations = 60 * duration,
22360          start = options.start || 0,
22361          end = options.end,
22362          change = end - start,
22363          step = options.step,
22364          easing = options.easing || function easeInOutCubic(pos) {
22365            // https://github.com/danro/easing-js/blob/master/easing.js
22366            if ((pos/=0.5) < 1) return 0.5*Math.pow(pos,3);
22367            return 0.5 * (Math.pow((pos-2),3) + 2);
22368          };
22369  
22370      function animate() {
22371        var progress = currentIteration / iterations, 
22372            value = change * easing(progress) + start;
22373        // console.log(progress + ", " + value);
22374        step(value, currentIteration);
22375        currentIteration += 1;
22376  
22377        if(progress < 1) {
22378          requestAnimationFrame(animate);
22379        }
22380      }
22381      // start!
22382      requestAnimationFrame(animate);
22383    }
22384  
22385  
22386  
22387    var Gauge = (function() {
22388      var SVG_NS = "http://www.w3.org/2000/svg";
22389  
22390      var GaugeDefaults = {
22391        centerX: 50,
22392        centerY: 50
22393      };
22394  
22395      var defaultOptions = {
22396        dialRadius: 40,
22397        dialStartAngle: 135,
22398        dialEndAngle: 45,
22399        value: 0,
22400        max: 100,
22401        min: 0,
22402        valueDialClass: "value",
22403        valueClass: "value-text",
22404        dialClass: "dial",
22405        gaugeClass: "gauge",
22406        showValue: true,
22407        gaugeColor: null,
22408        label: function(val) {return Math.round(val);}
22409      };
22410  
22411      function shallowCopy(/* source, ...targets*/) {
22412        var target = arguments[0], sources = slice.call(arguments, 1);
22413        sources.forEach(function(s) {
22414          for(var k in s) {
22415            if(s.hasOwnProperty(k)) {
22416              target[k] = s[k];
22417            }
22418          }
22419        });
22420        return target;
22421      }
22422  
22423      /**
22424       * A utility function to create SVG dom tree
22425       * @param {String} name The SVG element name
22426       * @param {Object} attrs The attributes as they appear in DOM e.g. stroke-width and not strokeWidth
22427       * @param {Array} children An array of children (can be created by this same function)
22428       * @return The SVG element
22429       */
22430      function svg(name, attrs, children) {
22431        var elem = document.createElementNS(SVG_NS, name);
22432        for(var attrName in attrs) {
22433          elem.setAttribute(attrName, attrs[attrName]);
22434        }
22435  
22436        if(children) {
22437          children.forEach(function(c) {
22438            elem.appendChild(c);
22439          });
22440        }
22441        return elem;
22442      }
22443  
22444      /**
22445       * Translates percentage value to angle. e.g. If gauge span angle is 180deg, then 50%
22446       * will be 90deg
22447       */
22448      function getAngle(percentage, gaugeSpanAngle) {
22449        return percentage * gaugeSpanAngle / 100;
22450      }
22451  
22452      function normalize(value, min, limit) {
22453        var val = Number(value);
22454        if(val > limit) return limit;
22455        if(val < min) return min;
22456        return val;
22457      }
22458  
22459      function getValueInPercentage(value, min, max) {
22460        var newMax = max - min, newVal = value - min;
22461        return 100 * newVal / newMax;
22462        // var absMin = Math.abs(min);
22463        // return 100 * (absMin + value) / (max + absMin);
22464      }
22465  
22466      /**
22467       * Gets cartesian co-ordinates for a specified radius and angle (in degrees)
22468       * @param cx {Number} The center x co-oriinate
22469       * @param cy {Number} The center y co-ordinate
22470       * @param radius {Number} The radius of the circle
22471       * @param angle {Number} The angle in degrees
22472       * @return An object with x,y co-ordinates
22473       */
22474      function getCartesian(cx, cy, radius, angle) {
22475        var rad = angle * Math.PI / 180;
22476        return {
22477          x: Math.round((cx + radius * Math.cos(rad)) * 1000) / 1000,
22478          y: Math.round((cy + radius * Math.sin(rad)) * 1000) / 1000
22479        };
22480      }
22481  
22482      // Returns start and end points for dial
22483      // i.e. starts at 135deg ends at 45deg with large arc flag
22484      // REMEMBER!! angle=0 starts on X axis and then increases clockwise
22485      function getDialCoords(radius, startAngle, endAngle) {
22486        var cx = GaugeDefaults.centerX,
22487            cy = GaugeDefaults.centerY;
22488        return {
22489          end: getCartesian(cx, cy, radius, endAngle),
22490            start: getCartesian(cx, cy, radius, startAngle)
22491        };
22492      }
22493  
22494      /**
22495       * Creates a Gauge object. This should be called without the 'new' operator. Various options
22496       * can be passed for the gauge:
22497       * {
22498       *    dialStartAngle: The angle to start the dial. MUST be greater than dialEndAngle. Default 135deg
22499       *    dialEndAngle: The angle to end the dial. Default 45deg
22500       *    radius: The gauge's radius. Default 400
22501       *    max: The maximum value of the gauge. Default 100
22502       *    value: The starting value of the gauge. Default 0
22503       *    label: The function on how to render the center label (Should return a value)
22504       * }
22505       * @param {Element} elem The DOM into which to render the gauge
22506       * @param {Object} opts The gauge options
22507       * @return a Gauge object
22508       */
22509      return function Gauge(elem, opts) {
22510        opts = shallowCopy({}, defaultOptions, opts);
22511        var gaugeContainer = elem,
22512            limit = opts.max,
22513            min = opts.min,
22514            value = normalize(opts.value, min, limit),
22515            radius = opts.dialRadius,
22516            displayValue = opts.showValue,
22517            startAngle = opts.dialStartAngle,
22518            endAngle = opts.dialEndAngle,
22519            valueDialClass = opts.valueDialClass,
22520            valueTextClass = opts.valueClass,
22521            valueLabelClass = opts.valueLabelClass,
22522            dialClass = opts.dialClass,
22523            gaugeClass = opts.gaugeClass,
22524            gaugeColor = opts.color,
22525            gaugeValueElem,
22526            gaugeValuePath,
22527            label = opts.label,
22528            viewBox = opts.viewBox,
22529            instance;
22530  
22531        if(startAngle < endAngle) {
22532          console.log("WARN! startAngle < endAngle, Swapping");
22533          var tmp = startAngle;
22534          startAngle = endAngle;
22535          endAngle = tmp;
22536        }
22537  
22538        function pathString(radius, startAngle, endAngle, largeArc) {
22539          var coords = getDialCoords(radius, startAngle, endAngle),
22540              start = coords.start,
22541              end = coords.end,
22542              largeArcFlag = typeof(largeArc) === "undefined" ? 1 : largeArc;
22543  
22544          return [
22545            "M", start.x, start.y, 
22546            "A", radius, radius, 0, largeArcFlag, 1, end.x, end.y
22547          ].join(" ");
22548        }
22549  
22550        function initializeGauge(elem) {
22551          gaugeValueElem = svg("text", {
22552            x: 50,
22553            y: 50,
22554            fill: "#999",
22555            "class": valueTextClass,
22556            "font-size": "100%",
22557            "font-family": "sans-serif",
22558            "font-weight": "normal",
22559            "text-anchor": "middle",
22560            "alignment-baseline": "middle",
22561            "dominant-baseline": "central"
22562          });
22563  
22564          gaugeValuePath = svg("path", {
22565            "class": valueDialClass,
22566            fill: "none",
22567            stroke: "#666",
22568            "stroke-width": 2.5,
22569            d: pathString(radius, startAngle, startAngle) // value of 0
22570          });
22571  
22572          var angle = getAngle(100, 360 - Math.abs(startAngle - endAngle));
22573          var flag = angle <= 180 ? 0 : 1;
22574          var gaugeElement = svg("svg", {"viewBox": viewBox || "0 0 100 100", "class": gaugeClass}, [
22575            svg("path", {
22576              "class": dialClass,
22577              fill: "none",
22578              stroke: "#eee",
22579              "stroke-width": 2,
22580              d: pathString(radius, startAngle, endAngle, flag)
22581            }),
22582            svg("g", { "class": "text-container" }, [gaugeValueElem]),
22583            gaugeValuePath
22584          ]);
22585          elem.appendChild(gaugeElement);
22586        }
22587  
22588        function updateGauge(theValue, frame) {
22589          var val = getValueInPercentage(theValue, min, limit),
22590              // angle = getAngle(val, 360 - Math.abs(endAngle - startAngle)),
22591              angle = getAngle(val, 360 - Math.abs(startAngle - endAngle)),
22592              // this is because we are using arc greater than 180deg
22593              flag = angle <= 180 ? 0 : 1;
22594          if(displayValue) {
22595            gaugeValueElem.textContent = label.call(opts, theValue);
22596          }
22597          gaugeValuePath.setAttribute("d", pathString(radius, startAngle, angle + startAngle, flag));
22598        }
22599  
22600        function setGaugeColor(value, duration) {        
22601          var c = gaugeColor.call(opts, value), 
22602              dur = duration * 1000,
22603              pathTransition = "stroke " + dur + "ms ease";
22604              // textTransition = "fill " + dur + "ms ease";
22605  
22606          gaugeValuePath.style.stroke = c;
22607          gaugeValuePath.style["-webkit-transition"] = pathTransition;
22608          gaugeValuePath.style["-moz-transition"] = pathTransition;
22609          gaugeValuePath.style.transition = pathTransition;
22610          /*
22611          gaugeValueElem.style = [
22612            "fill: " + c,
22613            "-webkit-transition: " + textTransition,
22614            "-moz-transition: " + textTransition,
22615            "transition: " + textTransition,
22616          ].join(";");
22617          */
22618        }
22619  
22620        instance = {
22621          setMaxValue: function(max) {
22622            limit = max;
22623          },
22624          setValue: function(val) {
22625            value = normalize(val, min, limit);
22626            if(gaugeColor) {
22627              setGaugeColor(value, 0)
22628            }
22629            updateGauge(value);
22630          },
22631          setValueAnimated: function(val, duration) {
22632              var oldVal = value;
22633            value = normalize(val, min, limit);
22634            if(oldVal === value) {
22635              return;
22636            }
22637  
22638            if(gaugeColor) {
22639              setGaugeColor(value, duration);
22640            }
22641            Animation({
22642              start: oldVal || 0,
22643              end: value,
22644              duration: duration || 1,
22645              step: function(val, frame) {
22646                updateGauge(val, frame);
22647              }
22648            });
22649          },
22650          getValue: function() {
22651            return value;
22652          }
22653        };
22654  
22655        initializeGauge(gaugeContainer);
22656        instance.setValue(value);
22657        return instance;
22658      };
22659    })();
22660  
22661    return Gauge;
22662  });
22663// file: /var/www/vhosts/codethislab.com/httpdocs/wp-content/plugins/ctl-wp-studio/classes/extensions/ctl-theme-bootstrap-tabs/php/../js/front.js
22664jQuery(document).ready(function(){
22665
22666    ctlThemeTabRefreshTabsByHash();
22667    ctlThemeTabInitValidation();
22668    ctlThemeTabResizeVerticalTabsMenu();
22669    ctlThemeTabRefreshHorizontalTabsScroller();
22670    ctlThemeTabRefreshHorizontalTabsScrollingButton();
22671    ctlThemeTabFixDuplicateTabs();
22672
22673    // non è possibile mappare l'evento scroll direttamente sull'elemento .nav-horizontal perché non è un elemento che genera l'evento scroll, quindi si mappa l'evento scroll sul document e si verifica se l'elemento che sta scorrendo corrisponde al selettore desiderato
22674    document.addEventListener('scroll', function(e) {
22675        // Verifica che e.target sia un elemento HTML valido dotato del metodo .matches()
22676        if (e.target && typeof e.target.matches === 'function' && 
22677            e.target.matches('.ctlgrouptabs-h-mobile .nav-horizontal')) {
22678                
22679            e.stopPropagation(); // Impedisce la risalita (bubbling) dell'evento
22680            ctlThemeTabRefreshHorizontalTabsScrollingButton();
22681        }
22682    }, true); // <-- Il valore "true" abilita la fase di Capturing    
22683
22684    jQuery(document).on("click", ".ctl-theme-tabs-h-nav-action-modal-item", function(e){
22685        e.preventDefault();
22686
22687        let idWidget = jQuery(this).data("widget-id");
22688        let href     = jQuery(this).attr("href");
22689        let oNodeWrapper = jQuery(".ctlgrouptabs-wrapper[data-widget-id='" + idWidget + "']");
22690        let oNodeAnchor  = oNodeWrapper.find(`.nav-horizontal a[href="${href}"]`);
22691
22692        if ( oNodeAnchor.length > 0 ){
22693            oNodeAnchor.click();
22694        }
22695
22696        g_oCTLBootstrapModals.closeLastModal();
22697    });
22698
22699    jQuery(document).on("click", ".ctl-theme-tabs-h-nav-show-modal", function(e){
22700        e.preventDefault();
22701        
22702        let oNodeList    = jQuery(this).closest(".ctl-theme-bootstrap-tabs-navbar-horizontal-container").find(".nav-horizontal");
22703        let oNodeWrapper = jQuery(this).closest(".ctlgrouptabs-wrapper");
22704        let idWidget     = oNodeWrapper.data("widget-id");
22705
22706        let szModalTitle = "";
22707
22708        if ( oNodeWrapper.attr("data-label-title") ){
22709            szModalTitle = oNodeWrapper.attr("data-label-title");
22710            szModalTitle = JSON.parse(Base64.decode(szModalTitle));
22711        }
22712
22713        let html = "";
22714
22715        html += '<div class="row">';
22716
22717        oNodeList.children().each(function(){
22718            let oNodeListItem = jQuery(this);
22719
22720            let oNodeCloned = oNodeListItem.clone();
22721            let oNodeAnchor = oNodeCloned.find("a");
22722            oNodeAnchor.attr("data-widget-id", idWidget);
22723
22724            oNodeAnchor.removeClass("active");
22725            oNodeAnchor.removeClass("nav-link");
22726            oNodeAnchor.addClass("btn");
22727            oNodeAnchor.addClass("btn-primary");
22728            oNodeAnchor.addClass("h-100");
22729            oNodeAnchor.addClass("ctl-theme-tabs-h-nav-action-modal-item");
22730
22731            html += '<div class="col col-6 mb-3">';
22732                // attach the tab item html and itself
22733                html += oNodeCloned.html();
22734            html += '</div>';
22735        });
22736        html += '</div>';
22737
22738        let aSettingsModal = {
22739            wrapper_classes : "",
22740            modal_title : szModalTitle,
22741            modal_content : html,
22742            closeable : true,
22743            width: '70',
22744            position: "centered",
22745            entrance_animation : "animate__slideInUp",
22746            exit_animation : "animate__slideOutDown", 
22747            footer_btn_close : true,  
22748            footer_buttons : []                 
22749        };
22750
22751        g_oCTLBootstrapModals.showModal(aSettingsModal);        
22752    });
22753
22754    jQuery(document).on("dblclick", ".ctl-theme-tabs-h-nav-left", function(e){
22755        e.preventDefault();
22756        e.stopPropagation();
22757        let oNodeList = jQuery(this).closest(".ctl-theme-bootstrap-tabs-navbar-horizontal-container").find(".nav-horizontal");
22758        oNodeList.stop().animate({scrollLeft: 0 }, 500);
22759    });
22760
22761    jQuery(document).on("click", ".ctl-theme-tabs-h-nav-left", function(e){
22762        e.preventDefault();
22763        let oNodeList = jQuery(this).closest(".ctl-theme-bootstrap-tabs-navbar-horizontal-container").find(".nav-horizontal");
22764        oNodeList.stop().animate({scrollLeft: oNodeList.scrollLeft() - 200}, 300);          
22765    });
22766
22767    jQuery(document).on("dblclick", ".ctl-theme-tabs-h-nav-right", function(e){
22768        e.preventDefault();
22769        e.stopPropagation();
22770        let oNodeList = jQuery(this).closest(".ctl-theme-bootstrap-tabs-navbar-horizontal-container").find(".nav-horizontal");
22771        oNodeList.stop().animate({scrollLeft: oNodeList[0].scrollWidth }, 500);
22772    });
22773
22774    jQuery(document).on("click", ".ctl-theme-tabs-h-nav-right", function(e){
22775        e.preventDefault();
22776        let oNodeList = jQuery(this).closest(".ctl-theme-bootstrap-tabs-navbar-horizontal-container").find(".nav-horizontal");
22777        oNodeList.stop().animate({scrollLeft: oNodeList.scrollLeft() + 200}, 300);        
22778    });
22779
22780    jQuery(document).on("mouseenter", 
22781			"body.vertical-tabs-menu-collapsed .ctl-theme-bootstrap-menu-col-nav-pills", function(e){	
22782
22783        if ( jQuery("body").hasClass("bp-up-to-md") ){
22784            return;
22785        }
22786
22787		jQuery("body").removeClass("vertical-tabs-menu-collapsed");	
22788        wpdk_do_action("ctl-vulcano-theme-resize-layout");  		
22789    });
22790	
22791    jQuery(document).on("mouseleave", ".ctl-theme-bootstrap-menu-col-nav-pills", function(e){				
22792		if ( !jQuery("body").hasClass("vertical-tabs-menu-collapsed") &&
22793										   	 jQuery("body").hasClass("bp-up-to-md") ){
22794			jQuery("body").addClass("vertical-tabs-menu-collapsed");			
22795		}
22796        wpdk_do_action("ctl-vulcano-theme-resize-layout");  
22797    });	
22798    
22799    jQuery(document).on("click", ".vertical-tabs-menu-toggle", function(e){
22800        e.preventDefault();
22801        jQuery("body").toggleClass("vertical-tabs-menu-collapsed");
22802        wpdk_do_action("ctl-vulcano-theme-resize-layout");  
22803    });    
22804
22805    window.addEventListener("orientationchange", function(){
22806        ctlThemeTabResizeVerticalTabsMenu();
22807        ctlThemeTabRefreshHorizontalTabsScroller();
22808        ctlThemeTabRefreshHorizontalTabsScrollingButton();
22809    }); 
22810    jQuery(window).resize(function() {
22811        ctlThemeTabResizeVerticalTabsMenu();
22812        ctlThemeTabRefreshHorizontalTabsScroller();
22813        ctlThemeTabRefreshHorizontalTabsScrollingButton();
22814    });	    
22815
22816    jQuery(document).on("click", '.nav-tabs a, .nav-pills a', function (e) { 
22817        var oNodeWrapper = jQuery(this).closest(".ctlgrouptabs-wrapper");     
22818        var szNewHash = "";
22819
22820        if ( oNodeWrapper.closest(".modal").length == 0 ){
22821            if (oNodeWrapper.length > 0 && 
22822                !oNodeWrapper.hasClass("ctlgrouptabs-wizard") ){
22823                
22824                var szAppendHash = this.hash;    
22825                szAppendHash     = szAppendHash.replace("#", "");
22826    
22827                var aAppendHashParts = szAppendHash.split("-");
22828    
22829                if ( aAppendHashParts.length == 1 ){
22830                    szNewHash = "#" + szAppendHash;
22831                }else{
22832                    var iIndexToReplace  = aAppendHashParts[aAppendHashParts.length-1];
22833                    var szCurHash = window.location.hash;
22834                    szCurHash = szCurHash.replace("#", "");
22835        
22836                    var aHashes = szCurHash.split("&");  
22837        
22838                    var bHashReplaced = false;
22839                    for( var i = 0; i < aHashes.length; i++){
22840                        var aHashParts = aHashes[i].split("-"); 
22841                        if (!aHashParts){
22842                            continue;
22843                        }
22844                        if ( iIndexToReplace == aHashParts[aHashParts.length-1] ){
22845                            aHashes[i] = szAppendHash;
22846                            bHashReplaced = true;
22847                            break;
22848                        }
22849                    }
22850        
22851                    var szNewHash = aHashes.join("&");
22852                    if ( !bHashReplaced ){
22853                        if ( szCurHash.length > 0 ){
22854                            szNewHash += "&" + szAppendHash;
22855                        }else{
22856                            szNewHash += szAppendHash;
22857                        }
22858                    }
22859        
22860                    szNewHash = "#" + szNewHash;
22861                }         
22862            }else{
22863                szNewHash = this.hash; 
22864            }  
22865
22866            if(history.pushState) {
22867                history.pushState(null, null, szNewHash);
22868            }else {
22869                location.hash = szNewHash;
22870            }              
22871        } 
22872
22873        if ( oNodeWrapper.length > 0 ){
22874            var oNode      = jQuery(this);
22875            var iOffsetTop = oNodeWrapper.offset().top - 150;
22876            if( oNode.closest(".modal").length > 0 ){
22877                iOffsetTop -= jQuery('.modal-body').offset().top;
22878                jQuery('.modal-body').animate({ scrollTop: iOffsetTop }, 'slow');    
22879            }else{
22880                iOffsetTop -= 150;
22881                jQuery('html,body').animate({ scrollTop: iOffsetTop }, 'slow');    
22882            }  
22883        }
22884
22885        wpdk_do_action("ctl-vulcano-theme-resize-layout");   
22886    });
22887
22888    jQuery(document).on('mouseover', '.nav-tabs > li, .nav-pills > li', function() {    
22889        if( jQuery(this).closest(".ctlgrouptabs-wrapper").attr("data-show-tab") === "mouseover" ){
22890            if (jQuery(this).hasClass('hoverblock')){
22891              return;
22892            }else{
22893                jQuery(this).find('a').tab('show');
22894                wpdk_do_action("ctl-vulcano-theme-resize-layout");   
22895            }            
22896        }
22897    });
22898
22899    jQuery(document).on('click', '.nav-tabs > li a, .nav-pills > li a', function(e) {         
22900        if ( jQuery(this).attr("data-toggle") !== "wizard"){
22901            ctlThemeTabScrollToActiveTab(jQuery(this));
22902            return;
22903        }
22904        
22905        var oNodeListContainer      = jQuery(this).closest("ul");     
22906        var oNodeListActiveItem     = oNodeListContainer.find(".active").parent();
22907        var oNodeListNextItemAnchor = jQuery(this);
22908        var oNodeListNextItem       = jQuery(this).parent();
22909        
22910        if ( oNodeListNextItem.index() === oNodeListActiveItem.index() ){
22911            return;
22912        }
22913        
22914        var oNodeTabWrapper    = oNodeListContainer.closest(".ctlgrouptabs-wrapper");
22915        var oNodePaneContainer = oNodeTabWrapper.find(".tab-content");
22916        var oNodeCurrentPane   = oNodePaneContainer.children().eq(oNodeListActiveItem.index());
22917
22918        ctlThemeTabWizardNavigation(
22919                    oNodeCurrentPane, oNodeListContainer, 
22920                    oNodeListActiveItem.index(), oNodeListNextItem.index());
22921    });     
22922
22923    jQuery('.nav-tabs > li, .nav-pills > li').find('a').click(function() {   
22924        if( jQuery(this).closest(".ctlgrouptabs-wrapper").attr("data-show-tab") === "mouseover" ){    
22925          jQuery(this).parent().siblings().addClass('hoverblock');
22926        }
22927    });
22928    
22929    jQuery(document).on( 'click', '.ctl-theme-tab-wizard-but-next', function(){
22930        var oNodePane        = null;
22931        var oNodeTabsWrapper = null;
22932
22933        if (jQuery(this).closest(".modal").length > 0 ){
22934            oNodePane        = jQuery(this).closest(".modal").find(".tab-pane.active");
22935            oNodeTabsWrapper = jQuery(this).closest(".modal").find(".ctlgrouptabs-wrapper");
22936        }else{
22937            oNodePane        = jQuery(this).closest(".tab-pane");
22938            oNodeTabsWrapper = jQuery(this).closest(".ctlgrouptabs-wrapper");
22939        }
22940
22941        ctlThemeTabWizardNavigation(oNodePane, 
22942                                    oNodeTabsWrapper.find(".nav").first(), 
22943                                    oNodePane.index(), oNodePane.index()+1);
22944    });
22945    
22946    jQuery(document).on( 'click', '.ctl-theme-tab-wizard-but-prev', function(){    
22947        var oNodePane = null;
22948        var oNodeTabsWrapper = null;
22949
22950        if (jQuery(this).closest(".modal").length > 0 ){
22951            oNodePane = jQuery(this).closest(".modal").find(".tab-pane.active");
22952            oNodeTabsWrapper = jQuery(this).closest(".modal").find(".ctlgrouptabs-wrapper");
22953        }else{
22954            oNodePane = jQuery(this).closest(".tab-pane");
22955            oNodeTabsWrapper = jQuery(this).closest(".ctlgrouptabs-wrapper");
22956        }
22957
22958        ctlThemeTabWizardNavigation(oNodePane, 
22959                                    oNodeTabsWrapper.find(".nav").first(), 
22960                                    oNodePane.index(), oNodePane.index()-1);
22961    });  
22962    
22963    jQuery(document).on( 'click', '.ctl-theme-tab-wizard-but-save', function(){    
22964        var oNodePane        = jQuery(this).closest(".tab-pane");
22965        var oNodeWizard      = jQuery(this).closest(".ctlgrouptabs-wizard");
22966        var oGeneralFormData = {};
22967        
22968        if ( ctlThemeTabWizardNavigation(oNodePane, 
22969                                    jQuery(this).closest(".ctlgrouptabs-wrapper").find(".nav"), 
22970                                    oNodePane.index(), oNodePane.index()) ){            
22971            oNodeWizard.find(".tab-pane form").each(function(){
22972                var oFormData = jQuery(this).serializeObject();
22973                oGeneralFormData = jQuery.extend(oGeneralFormData, oFormData); 
22974            });
22975            
22976            jQuery(document).trigger("ctl-tabs-wizard-save", [ oNodeWizard, oGeneralFormData, oNodePane ]);
22977        }
22978    });    
22979    
22980    jQuery(document).on('show.bs.tab', 
22981            '.nav-link[data-toggle="tab"],.nav-link[data-toggle="wizard"],.nav-link[data-toggle="pill"]', function (e) {  
22982
22983		wpdk_do_action("ctl-theme-bootstrap-tabs-show-tab", 
22984            jQuery(jQuery(e.target).attr("href")), jQuery(e.target));             
22985    });
22986	
22987    jQuery(document).on('shown.bs.tab', 
22988            '.nav-link[data-toggle="tab"],.nav-link[data-toggle="wizard"],.nav-link[data-toggle="pill"]', function (e) {
22989        wpdk_do_action("ctl-theme-bootstrap-tabs-shown-tab", jQuery(jQuery(e.target).attr("href")), 
22990        jQuery(e.target));  
22991
22992        let oNodeWrapper  = jQuery(e.target).closest(".ctlgrouptabs-wrapper");
22993        let oNodeNav      = oNodeWrapper.find(".nav");
22994        let oNodeListItem = jQuery(e.target).closest("li");
22995        let idNodeTab     = oNodeListItem.attr("data-tab-id");
22996        let oNodeModalContent = oNodeWrapper.closest(".ctl-modal-content");
22997        let iIndexTab = oNodeListItem.data("tab-pos");
22998
22999        if ( oNodeWrapper.hasClass("ctlgrouptabs-dynamic-tabs") ){
23000
23001            let oNodeTabPane = jQuery(".tab-pane[data-tab-id='" + idNodeTab + "']");
23002            let oNodeTabLayout = oNodeTabPane.find(".layout-tab");
23003
23004            // Disable wizard next button while loading
23005            if ( oNodeWrapper.hasClass("ctlgrouptabs-wizard")){
23006
23007                let oNodeNextButton;
23008                if(oNodeModalContent.length > 0 ){
23009                    oNodeNextButton = oNodeModalContent.find(".ctl-theme-tab-wizard-but-next");
23010                }else{
23011                    let oNodeWizardNavbar = oNodeTabPane.find(".ctl-theme-tab-wizard-navbar");
23012                    oNodeNextButton   = oNodeWizardNavbar.find(".ctl-theme-tab-wizard-but-next");
23013                }
23014
23015                if ( oNodeNextButton.length > 0 ){
23016                    oNodeNextButton.addClass("disabled");
23017                }
23018
23019                for( var i = iIndexTab+1; i < oNodeNav.children().length; i++ ){
23020                    oNodeNav.children().eq(i).find("a").addClass("disabled");
23021                }                  
23022            }
23023
23024            var oFormData = {};
23025            oFormData["action"]           = 'ctl-wp-studio';
23026            oFormData["execute"]          = 'ctl-theme-bootstrap-tabs';  
23027            oFormData["extension-action"] = 'reload-tab-content';
23028            oFormData["tab-id"]           = idNodeTab;
23029            oFormData["widget-id"]        = oNodeWrapper.data("widget-id");
23030            oFormData["get-params"]       = g_oCTLWPStudio.getUrlParams();
23031
23032            if ( oNodeWrapper.hasClass("ctlgrouptabs-serialize-previous-tab-data") ){
23033                let oGeneralFormData = {};
23034                let iPrevTabIndex = iIndexTab-1;
23035				
23036                if ( iPrevTabIndex == -1 ){
23037                    oNodeWrapper.find(".tab-pane[data-tab-pos='0'] form").each(function(){
23038                        let oTabFormData = jQuery(this).serializeObject();
23039                        oGeneralFormData = jQuery.extend(oGeneralFormData, oTabFormData); 
23040                    });
23041                }else if ( iPrevTabIndex > -1 ){
23042                    oNodeWrapper.find(".tab-pane[data-tab-pos='" + iPrevTabIndex + "'] form").each(function(){
23043                        let oTabFormData = jQuery(this).serializeObject();
23044                        oGeneralFormData = jQuery.extend(oGeneralFormData, oTabFormData); 
23045                    });
23046                }
23047
23048                oFormData["g_oFormData"] = oGeneralFormData;           
23049            }
23050			
23051            oNodeTabLayout.html("<div class='text-center py-5'><div class='spinner-border text-primary' role='status'><span class='sr-only'>Loading...</span></div></div>");
23052
23053            jQuery.ajax({
23054                url : g_oCTLWPStudio._oLangCommon["ajaxurl"],
23055                type: "POST",
23056                data : oFormData,
23057                cache: false,
23058                method: 'POST',
23059                success:function(response, textStatus, jqXHR){
23060                    var oResponse = jQuery.parseJSON(response);
23061
23062                    if (oResponse.res){
23063                        oNodeTabLayout.replaceWith(Base64.decode(oResponse.html));
23064                        oNodeTabLayout = oNodeTabPane.find(".layout-tab");
23065
23066                        // Enable wizard next button after loading
23067                        if ( oNodeWrapper.hasClass("ctlgrouptabs-wizard")){
23068                            let oNodeNextButton;
23069                            if(oNodeModalContent.length > 0 ){
23070                                oNodeNextButton = oNodeModalContent.find(".ctl-theme-tab-wizard-but-next");
23071                            }else{
23072                                let oNodeWizardNavbar = oNodeTabPane.find(".ctl-theme-tab-wizard-navbar");
23073                                oNodeNextButton   = oNodeWizardNavbar.find(".ctl-theme-tab-wizard-but-next");
23074                            }
23075                            if ( oNodeNextButton.length > 0 ){
23076                                oNodeNextButton.removeClass("disabled");
23077                            }
23078                        }
23079
23080                        wpdk_do_action("ctl-theme-bootstrap-modals-show-modal", oNodeTabLayout);  
23081                        ctlVulcanoResizeLayout();
23082                    }
23083                },
23084                error: function(jqXHR, textStatus, errorThrown){
23085                    alert(g_oCTLWPStudio._oLangCommon["Ooops! Something Went Wrong!"]);  
23086                }
23087            });  
23088        }          
23089    });	
23090
23091    wpdk_add_action("ctl-theme-bootstrap-modals-show-modal", function( oNodeModal ){  
23092		if(!oNodeModal.hasClass("ctl-modal")){
23093			oNodeModal = oNodeModal.closest(".modal");
23094		}
23095        __ctlThemeTabsAdaptModal(oNodeModal);   
23096        ctlThemeTabResizeVerticalTabsMenu();
23097        ctlThemeTabRefreshHorizontalTabsScroller();
23098        ctlThemeTabRefreshHorizontalTabsScrollingButton();
23099    });  
23100    wpdk_add_action("ctl-theme-bootstrap-tabs-show-tab", function( oNodeTabPane, oNodeTabAnchor ){  
23101        g_oCTLWPStudio.resizeAspectRatioElements(oNodeTabPane);   
23102        if ( oNodeTabPane.closest(".modal").length == 0 ){
23103            return;
23104        }   
23105        __ctlThemeTabsAdaptModal(oNodeTabPane.closest(".modal"), oNodeTabPane, oNodeTabAnchor);   
23106        ctlThemeTabResizeVerticalTabsMenu();
23107        ctlThemeTabRefreshHorizontalTabsScroller();
23108        ctlThemeTabRefreshHorizontalTabsScrollingButton();
23109    });  
23110    wpdk_add_action("ctl-theme-bootstrap-tabs-shown-tab", function( oNodeTabPane, oNodeTabAnchor ){  
23111        g_oCTLWPStudio.resizeAspectRatioElements(oNodeTabPane);    
23112    });  
23113    
23114});
23115
23116function __ctlThemeTabsAdaptModal( oNodeModal, oNodeTabPane, oNodeTabAnchor ){
23117    var oNodeTabsWizard = oNodeModal.find(".ctlgrouptabs-wizard");
23118    if ( oNodeTabsWizard.length > 0 ){
23119        __ctlThemeWizardTabsAdaptModal(oNodeModal, oNodeTabPane, oNodeTabAnchor);
23120    }else{
23121        __ctlThemeClassicTabsAdaptModal(oNodeModal, oNodeTabPane, oNodeTabAnchor);
23122    }    
23123}
23124
23125function __ctlThemeClassicTabsAdaptModal( oNodeModal, oNodeTabPane, oNodeTabAnchor ){
23126
23127    if (!oNodeTabPane){
23128        oNodeTabPane = jQuery(oNodeModal.find(".nav-link.active").attr("href"));
23129    }
23130
23131    if ( oNodeTabPane.length == 0 ){
23132        return;
23133    }
23134
23135    let oNodeTabWrapper = oNodeTabPane.closest(".ctlgrouptabs-wrapper");
23136    if(oNodeTabWrapper.hasClass("ctlgrouptabs-multilanguage")){
23137        return;
23138    }
23139
23140    var oNodeModalFooter = oNodeModal.find(".ctl-modal-footer");
23141    if ( oNodeModalFooter.length == 0 ){
23142        return;
23143    }
23144
23145    var oNodeModalFooterExtraButtons = oNodeModalFooter.find(".modal
23145-footer-extra-buttons"); 
23146    var oNodeModalFooterButtons = oNodeModalFooter.find(".modal-footer-buttons"); 
23147
23148    var oNodeEditorButtons = oNodeTabPane.find(".ctl-editor-framework-editor-buttons");
23149    if (oNodeEditorButtons.length == 0 ){
23150
23151        oNodeModalFooterExtraButtons.find("button").each(function(){
23152            var szClasses = jQuery(this).attr("class");
23153
23154            if ( szClasses.indexOf("ctl-editors-actio") !== -1 ){
23155                oNodeModalFooterExtraButtons.html("");
23156            }
23157        });
23158
23159        return;
23160    }    
23161
23162    oNodeModalFooterExtraButtons.html(oNodeEditorButtons.clone().html());
23163    oNodeEditorButtons.addClass("d-none");     
23164    
23165    var oNodeCloseModalExtraButton = oNodeModalFooterExtraButtons.find(".btn-action-close-modal");
23166    var oNodeCloseModalButton = oNodeModalFooterButtons.find(".btn-action-close-modal");
23167
23168    if(oNodeCloseModalExtraButton.length > 0){
23169        if(oNodeCloseModalButton.length > 0){
23170            oNodeCloseModalExtraButton.remove();
23171            oNodeCloseModalButton.removeClass("d-none");
23172        }
23173    }else if(oNodeCloseModalButton.length > 0){
23174        oNodeCloseModalButton.addClass("d-none");
23175    }
23176}
23177
23178function __ctlThemeWizardTabsAdaptModal( oNodeModal, oNodeTabPane, oNodeTabAnchor ){
23179    var oNodeTabsWizard = oNodeModal.find(".ctlgrouptabs-wizard");
23180    
23181    if ( oNodeTabsWizard.length == 0 ){
23182        return;
23183    }
23184
23185    if (!oNodeTabPane){
23186        oNodeTabPane = jQuery(oNodeModal.find(".nav-link.active").attr("href"));
23187    }
23188
23189    if ( oNodeTabPane.length == 0 ){
23190        return;
23191    }
23192
23193    var oNodeWizardNavbar = oNodeTabPane.find(".ctl-theme-tab-wizard-navbar");
23194
23195    if (oNodeWizardNavbar.length == 0 ){
23196        return;
23197    }
23198
23199    var oNodeModalFooter = oNodeModal.find(".ctl-modal-footer");
23200    if ( oNodeModalFooter.length == 0 ){
23201        return;
23202    }
23203
23204    var oNodeModalFooterExtraButtons = oNodeModalFooter.find(".modal-footer-extra-buttons"); 
23205    var oNodeModalFooterButtons = oNodeModalFooter.find(".modal-footer-buttons"); 
23206
23207    var oNodeEditorsButtons = oNodeTabPane.find(".ctl-editor-framework-editor-buttons");
23208
23209    oNodeWizardNavbar.removeClass("d-none"); 
23210
23211    let oNodeWizardNavbarCloned = oNodeWizardNavbar.clone();
23212
23213    let aNavbarButtons = [];
23214    oNodeWizardNavbarCloned.find(".btn").each(function(){
23215        let oNodeButton = jQuery(this);
23216        aNavbarButtons.push(oNodeButton.prop("outerHTML"));
23217    });
23218
23219    if ( oNodeEditorsButtons.length > 0 ){
23220        oNodeEditorsButtons.removeClass("d-none");
23221		
23222		let oNodeEditorsButtonsCloned = oNodeEditorsButtons.clone();
23223		
23224        oNodeEditorsButtons.addClass("d-none");
23225
23226        if (oNodeEditorsButtonsCloned.find(".btn-action-close-modal").length > 0 ){
23227            oNodeEditorsButtonsCloned.find(".btn-action-close-modal").remove();
23228        }
23229
23230		oNodeModalFooterExtraButtons.html('<div class="container-fluid mx-0"><div class="row">' + aNavbarButtons.join("") + oNodeEditorsButtonsCloned.html() + '</div></div>');
23231		
23232    }else{
23233        oNodeModalFooterExtraButtons.html('<div class="container-fluid mx-0"><div class="row">' + aNavbarButtons.join("") + '</div></div>');
23234    }
23235
23236    oNodeModalFooter.removeClass("d-none");
23237    oNodeWizardNavbar.addClass("d-none");   
23238}
23239
23240function ctlThemeTabFixDuplicateTabs() {
23241    // 1. Cerchiamo tutti i trigger dei tab (BS4 usa data-toggle="tab")
23242    const triggers = document.querySelectorAll('[data-toggle="tab"], [data-toggle="pill"], [data-toggle="wizard"]');
23243    const targets = Array.from(triggers).map(t => t.getAttribute('data-target') || t.getAttribute('href'));
23244    
23245    // 2. Verifichiamo se esistono duplicati
23246    const hasDuplicates = targets.some((target, index) => targets.indexOf(target) !== index);
23247
23248    if (hasDuplicates) {
23249        console.warn("BS4 Fix: Rilevati tab duplicati. Sistemo gli ID...");
23250        
23251        // Selezioniamo i contenitori dei link (nav-tabs o nav-pills)
23252        const tabGroups = document.querySelectorAll('.nav-tabs, .nav-pills');
23253
23254        tabGroups.forEach((group, groupIndex) => {
23255            // Lasciamo invariato il primo gruppo, modifichiamo dal secondo in poi
23256            if (groupIndex === 0) return;
23257
23258            const links = group.querySelectorAll('[data-toggle="tab"], [data-toggle="pill"], [data-toggle="wizard"]');
23259            
23260            links.forEach((link) => {
23261
23262                // BS4 può usare data-target o l'attributo href
23263                let selector = link.getAttribute('data-target') || link.getAttribute('href');
23264                
23265                if (!selector || selector === "#" || !selector.startsWith('#')) return;
23266
23267                const oldId = selector.substring(1);
23268                const newId = oldId + "-group-" + groupIndex;
23269
23270                // Aggiorniamo il trigger (il link/bottone)
23271                if (link.hasAttribute('data-target')) {
23272                    link.setAttribute('data-target', '#' + newId);
23273                } else {
23274                    link.setAttribute('href', '#' + newId);
23275                }
23276                
23277                link.setAttribute('aria-controls', newId);
23278
23279                // IMPORTANTE: In BS4 i tab-pane sono spesso fuori dal nav. 
23280                // Cerchiamo l'elemento con l'ID vecchio e lo rinominiamo.
23281                // Usiamo querySelector per essere sicuri di prendere quello non ancora rinominato.
23282                const wrapper = link.closest('.ctlgrouptabs-wrapper');
23283                const pane = wrapper ? wrapper.querySelector('#' + oldId) : document.getElementById(oldId);
23284                if (pane) {
23285                    pane.id = newId;
23286                }
23287            });
23288        });
23289    }
23290}
23291
23292function ctlThemeTabRefreshTabsByHash(){
23293
23294    if (!window.location.hash){
23295        return;
23296    }
23297
23298    var szCurHash = window.location.hash;
23299
23300    szCurHash = szCurHash.replace("#", "");
23301
23302    var aHashes = szCurHash.split("&");  
23303
23304    for( var i = 0; i < aHashes.length; i++){
23305        var szFoundHash = "#" + aHashes[i];
23306
23307        if (jQuery('.nav a[href="' + szFoundHash+ '"]').length == 0 ){
23308            continue;   
23309        }
23310
23311        var oNodeWrapper = jQuery('.nav a[href="' + szFoundHash + '"]')
23312                                                        .closest(".ctlgrouptabs-wrapper");
23313        if (oNodeWrapper.length > 0 ){
23314
23315            if (!oNodeWrapper.hasClass("ctlgrouptabs-wizard")){
23316                jQuery('.nav a[href="' + szFoundHash + '"]').tab('show');
23317            }else if (oNodeWrapper.hasClass("ctl-tabs-starting-hash")){
23318                var oNodeAnchor  = jQuery('.nav a[href="' + szFoundHash + '"]');
23319                var oNodeNavItem = oNodeAnchor.closest(".nav-item");
23320                var oNodeListNavItems = oNodeNavItem.closest("ul");
23321                var indexNavItem = Number(oNodeNavItem.attr("data-tab-pos"))+1;
23322                for( var i = 0; i < indexNavItem; i++ ){
23323                    var oNodeCurrentAnchor = oNodeListNavItems.find("li").eq(i).find("a");
23324                    oNodeCurrentAnchor.removeClass("disabled");
23325                }
23326                jQuery('.nav a[href="' + szFoundHash + '"]').tab('show');
23327            }
23328        }else{
23329            jQuery('.nav a[href="' + szFoundHash + '"]').tab('show');
23330        }        
23331    }	
23332}
23333
23334function ctlThemeTabWizardNavigation( oNodePane, oNodeNav, 
23335                                      iCurIndex, iNextIndex ){
23336    var oNodeAnchor = oNodeNav.children().eq(iNextIndex).find("a");
23337
23338    var bFilled  = true;
23339    
23340    if ( iCurIndex < iNextIndex ){
23341        bFilled = ctlFormFieldsCheckIfFormIsFilled(oNodePane);
23342    }
23343    
23344    bFilled = wpdk_apply_filters(
23345            "ctl-theme-tab-wizard-check-tab-form", 
23346            bFilled, oNodePane, iCurIndex, iNextIndex, oNodeNav);
23347
23348    if (!bFilled ){
23349        if ( iNextIndex < iCurIndex ){
23350            for( var i = iCurIndex; i < oNodeNav.children().length; i++ ){
23351                oNodeNav.children().eq(i).find("a").addClass("disabled");
23352            }       
23353            oNodeAnchor.tab('show');
23354
23355            if ( oNodePane.closest(".modal").length == 0){
23356                if(history.pushState) {
23357                    history.pushState(null, null, oNodeAnchor[0].hash);
23358                }else {
23359                    location.hash = oNodeAnchor[0].hash;
23360                }             
23361            }
23362        }else{
23363            for( var i = iCurIndex+1; i < oNodeNav.children().length; i++ ){
23364                oNodeNav.children().eq(i).find("a").addClass("disabled");
23365            }            
23366        }               
23367    }else{
23368        oNodeAnchor.removeClass("disabled");
23369        oNodeAnchor.tab('show');
23370
23371        if ( oNodePane.closest(".modal").length == 0){
23372            if(history.pushState) {
23373                history.pushState(null, null, oNodeAnchor[0].hash);
23374            }else {
23375                location.hash = oNodeAnchor[0].hash;
23376            }
23377        }
23378
23379        ctlThemeTabScrollToActiveTab(oNodeAnchor);
23380
23381        wpdk_do_action("ctl-vulcano-theme-resize-layout");
23382    }
23383    
23384    return bFilled;
23385     
23386}
23387
23388function ctlThemeTabScrollToActiveTab( oNodeAnchor ){
23389    return;
23390    if (oNodeAnchor.closest(".ctlgrouptabs-wrapper").hasClass("ctlgrouptabs-h-mobile")){
23391        let oNodeUL = oNodeAnchor.closest("ul");
23392        // scroll at the middle of the ul
23393        let iScrollLeft = oNodeUL.scrollLeft();
23394        let iULWidth = oNodeUL.width();
23395        let iAnchorLeft = oNodeAnchor.position().left;
23396        let iAnchorWidth = oNodeAnchor.outerWidth();
23397        let iNewScrollLeft = iScrollLeft + iAnchorLeft - (iULWidth / 2) + (iAnchorWidth / 2);
23398
23399        oNodeUL.delay(100).animate({scrollLeft: iNewScrollLeft}, 300);
23400    }
23401}
23402
23403function ctlThemeTabInitValidation(){
23404    jQuery(".ctl-tab-form-validation").each(function(){
23405        var oNodeLink = jQuery(this).closest("a");
23406        var idTab = oNodeLink.attr("href");
23407        
23408        jQuery(document).on("change input paste", idTab + " input", function(){
23409            ctlThemeTabRefreshValidation();
23410        });
23411        jQuery(document).on("change input paste", idTab + " textarea", function(){
23412            ctlThemeTabRefreshValidation();
23413        });        
23414        jQuery(document).on("change input paste", idTab + " select", function(){
23415            ctlThemeTabRefreshValidation();
23416        });
23417    });
23418
23419    ctlThemeTabRefreshValidation();
23420}
23421
23422function ctlThemeTabRefreshValidation(){
23423
23424    jQuery(".ctl-tab-form-validation").each(function(){
23425        var oNodeIconValidation = jQuery(this);
23426        var oNodeLink = jQuery(this).closest("a");
23427        var idTab = oNodeLink.attr("href");
23428        var oNodeTabDestination = jQuery(idTab);
23429
23430        oNodeTabDestination.find("form").each(function(){
23431            var oNodeForm = jQuery(this);
23432
23433            if ( ctlFormFieldsCheckIfFormIsFilled(oNodeForm, false) === false){
23434                oNodeIconValidation.addClass("ctl-wp-studio-icons-asterisk");                
23435            }else{
23436                oNodeIconValidation.removeClass("ctl-wp-studio-icons-asterisk");            
23437            }
23438        });
23439
23440    });
23441}
23442
23443function ctlThemeTabRefreshHorizontalTabsScroller(){
23444    jQuery(".ctl-theme-bootstrap-tabs-navbar-horizontal-container .nav-horizontal").each(function(){
23445        const element = this;
23446        const canScroll = element.scrollWidth > element.clientWidth;
23447
23448        let oNodeContainer = jQuery(this).closest(".ctl-theme-bootstrap-tabs-navbar-horizontal-container");
23449
23450        if (canScroll){
23451            jQuery(this).closest(".ctl-theme-bootstrap-tabs-navbar-horizontal-container").addClass("ctl-theme-bootstrap-tabs-h-nav-scrollable");
23452        }else{
23453            jQuery(this).closest(".ctl-theme-bootstrap-tabs-navbar-horizontal-container").removeClass("ctl-theme-bootstrap-tabs-h-nav-scrollable");
23454        }
23455    });
23456}
23457
23458function ctlThemeTabRefreshHorizontalTabsScrollingButton(){
23459    jQuery(".ctl-theme-bootstrap-tabs-navbar-horizontal-container .nav-horizontal").each(function(){
23460        const element = this;
23461        const canScroll = element.scrollWidth > element.clientWidth;
23462
23463        let oNodeContainer = jQuery(this).closest(".ctl-theme-bootstrap-tabs-navbar-horizontal-container");
23464
23465        if (canScroll){
23466            if ( element.scrollLeft === 0 ){
23467                oNodeContainer.find(".ctl-theme-tabs-h-nav-left-container").addClass("width-0");
23468            }else{
23469                oNodeContainer.find(".ctl-theme-tabs-h-nav-left-container").removeClass("width-0");
23470            }
23471
23472            if ( element.scrollLeft + element.clientWidth >= element.scrollWidth -1){
23473                oNodeContainer.find(".ctl-theme-tabs-h-nav-right-container").addClass("width-0");
23474            }else{
23475                oNodeContainer.find(".ctl-theme-tabs-h-nav-right-container").removeClass("width-0");
23476            }
23477        }
23478    });        
23479}
23480
23481function ctlThemeTabResizeVerticalTabsMenu(){
23482    if ( jQuery(".ctl-theme-bootstrap-menu-col-nav-pills").length > 0 ){
23483        jQuery("body").addClass("vertical-tabs-menu-active");
23484
23485        if ( jQuery("body.bp-up-to-md").length > 0 ){
23486            jQuery("body").addClass("vertical-tabs-menu-collapsed");
23487        }else{
23488            jQuery("body").removeClass("vertical-tabs-menu-collapsed");
23489        }	        
23490    }
23491}
23492// file: /var/www/vhosts/codethislab.com/httpdocs/wp-content/plugins/ctl-wp-studio/classes/extensions/ctl-theme-bootstrap-wp-category/php/../js/front.js
23493jQuery(document).ready(function(){
23494
23495    jQuery(document).on("change", ".ctl-post-category-filters select", function(){
23496        jQuery(this).closest("form").find('input[name=o]').val("");
23497    });
23498
23499    jQuery(document).on( "click", ".ctlthemecat-action-load-more-items", function(){
23500        var id          = jQuery(this).attr("data-id");
23501        var idCategory  = parseInt(jQuery(this).attr("data-cat-id"));
23502        var items       = parseInt(jQuery(this).attr("data-limit"));
23503        var offset      = parseInt(jQuery(this).attr("data-offset"));
23504        var oNodeButton = jQuery(this);
23505        
23506        oNodeButton.addClass("loading");
23507        oNodeButton.removeClass("closing");
23508        
23509        jQuery.post(
23510            g_oCTLWPStudio._oLangCommon["ajaxurl"],{                
23511                'action'           : 'ctl-wp-studio',
23512                'execute'          : 'ctl-theme-bootstrap-wp-category',
23513                'extension-action' : 'load-more-items',                        
23514                'id'               : id,
23515                'cat-id'           : idCategory,
23516                'offset'           : offset
23517            }      
23518        ).done( function(response){
23519            oNodeButton.addClass("closing");
23520            if(response === ""){
23521                return;
23522            }
23523            
23524            var oNodeRow = oNodeButton.parents("#ctlthemecat-124").find(".ctlthemecat-row-items");            
23525            oNodeRow.append(response);
23526            oNodeButton.attr("data-offset", (offset+items) );
23527            
23528        }).fail( function(){            
23529            oNodeButton.addClass("closing");
23530            alert(g_oCTLWPStudio._oLangCommon["Ooops! Something Went Wrong!"]);        
23531        });
23532    });    
23533});
23534// file: /var/www/vhosts/codethislab.com/httpdocs/wp-content/plugins/ctl-wp-studio/classes/extensions/ctl-theme-tables/php/../js/front.js
23535jQuery(document).ready(function () {
23536
23537    ctlThemeTableRefreshStickyColumnsShadow();
23538    
23539    // non è possibile mappare l'evento scroll direttamente sull'elemento .nav-horizontal perché non è un elemento che genera l'evento scroll, quindi si mappa l'evento scroll sul document e si verifica se l'elemento che sta scorrendo corrisponde al selettore desiderato
23540    document.addEventListener('scroll', function(e) {
23541        // Verifica che e.target sia un elemento HTML valido dotato del metodo .matches()
23542        if (e.target && typeof e.target.matches === 'function' && 
23543            e.target.matches('.ctl-theme-tables-wrapper')) {
23544                
23545            e.stopPropagation(); // Impedisce la risalita (bubbling) dell'evento
23546            ctlThemeTableRefreshStickyColumnsShadow();
23547        }
23548    }, true); // <-- Il valore "true" abilita la fase di Capturing    
23549
23550    const oURLParams = new URLSearchParams(window.location.search);
23551
23552    let aSortOnParams = oURLParams.getAll("sort-on[]");
23553
23554    if (aSortOnParams) {
23555        let aSortByParams = oURLParams.getAll("sort-by[]");
23556
23557        jQuery(".ctlgrouptablecols thead th").each(function () {
23558            let szSortName = jQuery(this).attr("data-sort-param-name");
23559            if (!szSortName) {
23560                return;
23561            }
23562
23563            let iIndex = aSortOnParams.indexOf(szSortName);
23564
23565            jQuery(this).addClass("sort-" + aSortByParams[iIndex]);
23566        });
23567    }
23568
23569    jQuery(".ctl-table-auto-refresh").each(function () {
23570        __ctlThemeTableSetAutoRefresh(jQuery(this));
23571    });
23572
23573    jQuery(document).on("click", ".btn-action-row-open-modal", function() {
23574
23575        let oNodeButton = jQuery(this);
23576
23577        let szReferral = oNodeButton.attr("data-resource-referral");
23578        let idResource = oNodeButton.attr("data-resource-id");
23579
23580        if ( szReferral.length > 0 && idResource.length > 0 ){
23581            url = g_oCTLWPStudio.addParameterToUrl(window.location.href, szReferral, idResource);
23582            if (history.pushState) {
23583                history.pushState(null, null, url);
23584            }
23585        }
23586
23587        g_oCTLBootstrapModals.loadModal(
23588                oNodeButton.attr("data-modal-id"),
23589                null, 
23590                oNodeButton.attr("data-modal-extra-data")
23591        );
23592    });
23593
23594    jQuery(document).on("click", ".btn-action-user-logout-row", function () {
23595        var oNodeButton = jQuery(this);
23596        var oNodeTR = oNodeButton.closest("tr");
23597        var oNodeMainTableWrapper = oNodeButton.closest(".ctl-theme-table-main-wrapper");
23598
23599        var idLoading = g_oCTLWPStudio.showLoading("");
23600        var oFormData = {};
23601        oFormData['action'] = 'ctl-wp-studio';
23602        oFormData['execute'] = 'ctl-theme-tables';
23603        oFormData['extension-action'] = 'user-logout';
23604        oFormData['table-id'] = oNodeMainTableWrapper.attr("data-table-id");
23605        oFormData['user-id'] = oNodeTR.attr("data-resource-id");
23606
23607        jQuery.ajax({
23608            url: g_oCTLWPStudio._oLangCommon["ajaxurl"],
23609            type: "POST",
23610            data: oFormData,
23611            cache: false,
23612            method: 'POST',
23613            success: function (response, textStatus, jqXHR) {
23614                var oResponse = JSON.parse(response);
23615                g_oCTLWPStudio.closeDlg(idLoading);
23616
23617                if (oResponse.res === true) {
23618                    if (oResponse.redirect) {
23619                        g_oCTLWPStudio.showLoading("");
23620                        window.location.href = oResponse.redirect;
23621                    } else {
23622                        g_oCTLBootstrapModals.alert("",
23623                            g_oCTLThemeTablesLocalizationFront["User logged out successfully!"]);
23624                    }
23625                } else if (oResponse.desc) {
23626                    alert(oResponse.desc);
23627                } else {
23628                    g_oCTLWPStudio.closeDlg(idLoading);
23629                    alert(g_oCTLWPStudio._oLangCommon["Ooops! Something Went Wrong!"]);
23630                }
23631            },
23632            error: function (jqXHR, textStatus, errorThrown) {
23633                g_oCTLWPStudio.closeDlg(idLoading);
23634                alert(g_oCTLWPStudio._oLangCommon["Ooops! Something Went Wrong!"]);
23635            }
23636        });
23637    });
23638
23639    jQuery(document).on("click", ".btn-action-change-post-status-row", function () {
23640        var oNodeButton = jQuery(this);
23641        let szStatusValue = oNodeButton.attr("data-status-value");
23642
23643        var oNodeTR = oNodeButton.closest("tr");
23644        var oNodeMainTableWrapper = oNodeButton.closest(".ctl-theme-table-main-wrapper");
23645
23646        var idLoading = g_oCTLWPStudio.showLoading("");
23647        var oFormData = {};
23648        oFormData['action'] = 'ctl-wp-studio';
23649        oFormData['execute'] = 'ctl-theme-tables';
23650        oFormData['extension-action'] = 'change-post-status';
23651        oFormData['post-status'] = szStatusValue;
23652        oFormData['table-id'] = oNodeMainTableWrapper.attr("data-table-id");
23653        oFormData['resource-id'] = oNodeTR.attr("data-resource-id");
23654
23655        jQuery.ajax({
23656            url: g_oCTLWPStudio._oLangCommon["ajaxurl"],
23657            type: "POST",
23658            data: oFormData,
23659            cache: false,
23660            method: 'POST',
23661            success: function (response, textStatus, jqXHR) {
23662                var oResponse = JSON.parse(response);
23663                g_oCTLWPStudio.closeDlg(idLoading);
23664
23665                if (oResponse.res === true) {
23666                    window.location.reload();
23667                } else if (oResponse.desc) {
23668                    alert(oResponse.desc);
23669                } else {
23670                    g_oCTLWPStudio.closeDlg(idLoading);
23671                    alert(g_oCTLWPStudio._oLangCommon["Ooops! Something Went Wrong!"]);
23672                }
23673            },
23674            error: function (jqXHR, textStatus, errorThrown) {
23675                g_oCTLWPStudio.closeDlg(idLoading);
23676                alert(g_oCTLWPStudio._oLangCommon["Ooops! Something Went Wrong!"]);
23677            }
23678        });
23679    });
23680
23681    jQuery(document).on("click", ".btn-action-add-qty-split-post", function () {
23682        var oNodeButton = jQuery(this);
23683        var oNodeInput = oNodeButton.closest("li").find("input");
23684        var oNodeListItem = oNodeButton.closest("li");
23685        var fQty = Number(oNodeInput.val()) / 2;
23686        oNodeInput.val(fQty);
23687
23688        var oNodeNewItem = oNodeListItem.clone();
23689
23690        oNodeListItem.after(oNodeNewItem);
23691    });
23692
23693    jQuery(document).on("click", ".btn-action-maximize", function () {
23694        let oNodeButton = jQuery(this);
23695        let oNodeToMaximize = jQuery(oNodeButton.attr("data-maximize-selector"));
23696
23697        let bMaximized = oNodeToMaximize.hasClass("ctl-maximize");
23698
23699        let oNodeTableScrollableWrapper = oNodeToMaximize.find(".ctl-theme-tables-scrollable-wrapper");
23700
23701        if (oNodeTableScrollableWrapper.length === 0) {
23702            return;
23703        }
23704
23705        if (bMaximized) {
23706            __ctlResizeMaximizedTable(oNodeTableScrollableWrapper);
23707        } else {
23708            let fMaxHeight = oNodeTableScrollableWrapper.attr("data-max-height");
23709            oNodeTableScrollableWrapper.css("max-height", fMaxHeight + "px");
23710        }
23711    });
23712
23713    jQuery(document).on("click", ".btn-action-ajax-refresh-table", function () {
23714        let oNodeButton = jQuery(this);
23715
23716        let oNodeMainWrapper = oNodeButton.closest(".ctl-theme-table-main-wrapper");
23717
23718        ctlThemeTableAjaxRefreshTable(oNodeMainWrapper);
23719    });
23720
23721    jQuery(document).on("click", ".btn-action-massive-edit", function () {
23722        __ctlThemeTableMassiveOperations(jQuery(this));
23723    });
23724
23725    jQuery(document).on("click", ".btn-action-massive-creation", function () {
23726        __ctlThemeTableMassiveOperations(jQuery(this));
23727    });
23728
23729    jQuery(document).on("click", "button.ctl-table-row-action", function () {
23730        jQuery(this).blur();
23731    });
23732
23733    jQuery(document).on("click", ".btn-action-remove-qty-split-post", function () {
23734        let oNodeButton = jQuery(this);
23735        let oNodeListItem = oNodeButton.closest("li");
23736        let oNodeList = oNodeListItem.closest("ul");
23737
23738        if (oNodeList.children("li").length <= 1) {
23739            g_oCTLBootstrapModals.alert("",
23740                g_oCTLThemeTablesLocalizationFront["You can't remove all the items!"]);
23741            return;
23742        }
23743
23744        let oNodeInput = oNodeListItem.find("input");
23745        let fQty = Number(oNodeInput.val());
23746
23747        // fixfix
23748
23749        oNodeListItem.remove();
23750    });
23751
23752    jQuery(document).on("click", ".btn-action-split-post-row", function () {
23753        __ctlThemeTablePreSplitPost(jQuery(this));
23754    });
23755
23756    jQuery(document).on("change", ".ctl-table-calendar-action-period, .ctl-table-calendar-action-month, .ctl-table-calendar-action-year, .ctl-table-calendar-action-day", function (e,) {
23757
23758        var oNodeMainWrapper = jQuery(this).closest(".ctl-theme-table-main-wrapper");
23759
23760        if (jQuery(this).val() == "gantt") {
23761            __ctlThemeTableUpdatePeriod(oNodeMainWrapper, 0, true);
23762        } else {
23763            var oNodeWidget = jQuery(this).closest(".ctl-table-calendar-control
23763s");
23764
23765            if (oNodeWidget.find('.ctl-table-calendar-action-year').length === 0 ||
23766                oNodeWidget.find('.ctl-table-calendar-action-month').length === 0 ||
23767                oNodeWidget.find('.ctl-table-calendar-action-day').length === 0) {
23768                __ctlThemeTableUpdatePeriod(oNodeMainWrapper, 0, true);
23769            } else {
23770                var szDate = oNodeWidget.find('.ctl-table-calendar-action-year').val() + "-" +
23771                    oNodeWidget.find('.ctl-table-calendar-action-month').val() + "-" +
23772                    oNodeWidget.find('.ctl-table-calendar-action-day').val();
23773                __ctlThemeTableUpdatePeriod(oNodeMainWrapper, 0, true, szDate);
23774            }
23775        }
23776    });
23777
23778    jQuery(document).on("click", ".ctl-table-calendar-action-submit", function () {
23779        var oNodeMainWrapper = jQuery(this).closest(".ctl-theme-table-main-wrapper");
23780        __ctlThemeTableUpdatePeriod(oNodeMainWrapper, 0, false);
23781    });
23782    jQuery(document).on("click", ".ctl-table-calendar-action-prev-period", function () {
23783        var oNodeMainWrapper = jQuery(this).closest(".ctl-theme-table-main-wrapper");
23784        __ctlThemeTableUpdatePeriod(oNodeMainWrapper, -1, true);
23785    });
23786    jQuery(document).on("click", ".ctl-table-calendar-action-today", function () {
23787        var oNodeMainWrapper = jQuery(this).closest(".ctl-theme-table-main-wrapper");
23788        var oMoment = moment();
23789        __ctlThemeTableUpdatePeriod(oNodeMainWrapper, 0, true, oMoment.format("YYYY-MM-DD"));
23790    });
23791    jQuery(document).on("click", ".ctl-table-calendar-action-next-period", function () {
23792        var oNodeMainWrapper = jQuery(this).closest(".ctl-theme-table-main-wrapper");
23793        __ctlThemeTableUpdatePeriod(oNodeMainWrapper, 1, true);
23794    });
23795
23796    jQuery(document).on("change", ".ctl-table-auto-refresh", function () {
23797        __ctlThemeTableSetAutoRefresh(jQuery(this), true);
23798    });
23799
23800    jQuery(document).on("click", ".ctl-table-action-save-cell-value", function () {
23801        ctlTableSaveInputCell(jQuery(this))
23802        g_oCTLBootstrapModals.closeModalAndStack();
23803    });
23804
23805
23806    jQuery(document).on("click", ".ctl-theme-tables-action-popup-full-text", function () {
23807        var oNodeTD = jQuery(this).closest("td");
23808        var szText = oNodeTD.attr("data-value");
23809
23810        if (oNodeTD.attr("data-encode-value") == "base64") {
23811            szText = Base64.decode(szText);
23812        }
23813
23814        var oModalData = {
23815            modal_title: oNodeTD.find(".ctl-card-content-title").text(),
23816            modal_content: szText,
23817            position: "centered",
23818            entrance_animation: "animate__slideInUp",
23819            exit_animation: "animate__slideOutDown",
23820        };
23821        g_oCTLBootstrapModals.showModal(oModalData);
23822    });
23823
23824    jQuery(document).on("click", ".btn-save-row", function () {
23825        var oNodeButton = jQuery(this);
23826        if (!oNodeButton.attr("data-script-type")) {
23827            return;
23828        }
23829
23830        var oNodeTR = jQuery(this).closest("tr");
23831        var oFormData = __ctlTableSerializeRow(oNodeTR);
23832
23833        switch (oNodeButton.attr("data-script-type")) {
23834            case "ajax-block": {
23835                __ctlTableSaveRowWithAjaxBlock(oFormData,
23836                    oNodeButton.attr("data-ajax-block"),
23837                    oNodeButton.attr("data-script-method"));
23838            } break;
23839        }
23840
23841    });
23842
23843    jQuery(document).on("click", ".ctl-table-action-toggle-view", function () {
23844        var oNodeTablewrapper = jQuery(this).closest(".ctl-theme-table-main-wrapper");
23845
23846        if (!oNodeTablewrapper.hasClass("ctl-table-cards")) {
23847            oNodeTablewrapper.addClass("ctl-cards-visualization-lock");
23848        } else {
23849            oNodeTablewrapper.removeClass("ctl-cards-visualization-lock");
23850        }
23851        ctlToggleCardsVisualization(oNodeTablewrapper);
23852    });
23853
23854    jQuery(window).on('resize', function () {
23855        ctlResizeScrollableTables(false);
23856        ctlCheckIfForceCardVisualization();
23857        ctlTableInitStickyCols();
23858        ctlResizeMaximizedTables();
23859        ctlThemeTableRefreshStickyColumnsShadow();
23860    });
23861
23862    window.addEventListener("orientationchange", function () {
23863        ctlCheckIfForceCardVisualization();
23864        ctlThemeTableRefreshStickyColumnsShadow();
23865    });
23866
23867    wpdk_add_action("ctl-theme-bootstrap-tabs-show-tab", function (oNodeTab, oNodeAnchor) {
23868        if (oNodeTab.find(".ctl-theme-table-main-wrapper").length > 0) {
23869            ctlResizeScrollableTables(true, 500, oNodeTab);
23870            ctlCheckIfForceCardVisualization(oNodeTab);
23871            ctlTableInitStickyCols(oNodeTab);
23872            ctlTableInitGantt(oNodeTab);
23873            ctlResizeMaximizedTables(oNodeTab);
23874            ctlTableInitSorting(oNodeTab);
23875            ctlThemeTableRefreshStickyColumnsShadow();
23876        }
23877    });
23878
23879    wpdk_add_action("ctl-theme-bootstrap-tabs-shown-tab", function (oNodeTab, oNodeAnchor) {
23880        ctlThemeTableRefreshStickyColumnsShadow();
23881    });
23882
23883    wpdk_add_action("ctl-theme-bootstrap-modals-show-modal", function (oNodeModal) {
23884        if (oNodeModal.find(".ctl-theme-table-main-wrapper").length > 0) {
23885            ctlResizeScrollableTables(true, 500, oNodeModal);
23886            ctlCheckIfForceCardVisualization(oNodeModal);
23887            ctlTableInitStickyCols(oNodeModal);
23888            ctlTableInitGantt(oNodeModal);
23889            ctlResizeMaximizedTables(oNodeModal);
23890            ctlTableInitSorting(oNodeModal);
23891            ctlThemeTableRefreshStickyColumnsShadow();
23892        }
23893    });
23894
23895    jQuery(document).on("dblclick", ".ctl-table-enable-dblclk-to-view tbody tr", function () {
23896        var oNodeViewRecord = jQuery(this).find(".ctl-theme-tables-action-view-record");
23897        var oNodeModalViewRecord = jQuery(this).find(".btn-action-row-open-modal");
23898
23899        if (oNodeViewRecord.length > 0) {
23900            oNodeViewRecord = oNodeViewRecord.children().first();
23901            oNodeViewRecord.click();
23902        } else if (oNodeModalViewRecord.length > 0) {
23903            oNodeModalViewRecord.click();
23904        }
23905    });
23906
23907    jQuery(document).on("ctlswitchfield-change", function (e, oNodeSwitch, oNodeInput) {
23908        var oNodeTD = oNodeSwitch.closest("td");
23909        if (oNodeSwitch.length === 0) {
23910            return;
23911        }
23912        oNodeTD.attr("data-value", oNodeInput.val());
23913    });
23914
23915    jQuery(document).on('change', '.ctl-table-instant-filters input[type=radio]', function () {
23916
23917        var oNodeMainWrapper = jQuery(this).closest(".ctl-theme-table-main-wrapper");
23918
23919
23920        // reset filters if needed
23921        if (jQuery(this).attr("data-match-value") === "*") {
23922            if (oNodeMainWrapper.find(".ctl-theme-tables-action-search-in-table").length > 0) {
23923                oNodeMainWrapper.find(".ctl-theme-tables-action-search-in-table").val("");
23924            }
23925            ctlTableSearchInTable(
23926                jQuery(this).closest(".ctl-theme-table-main-wrapper"), "");
23927            return;
23928        }
23929
23930
23931        var szComparison = jQuery(this).attr("data-comparison");
23932        var idCol = jQuery(this).attr("data-col-id");
23933
23934        switch (jQuery(this).attr("data-type-filter")) {
23935            case "string": {
23936                var aMatchValues = JSON.parse(Base64.decode(jQuery(this).attr("data-match-values")));
23937                var bMatchCaseInsensitive = jQuery(this).attr("data-match-ci") === "0" ? false : true;
23938
23939                if (bMatchCaseInsensitive) {
23940                    for (var i = 0; i < aMatchValues.length; i++) {
23941                        aMatchValues[i] = aMatchValues[i].toLowerCase();
23942                    }
23943                }
23944
23945
23946                oNodeMainWrapper.find(".ctl-table-col-" + idCol).each(function () {
23947                    var bMatch = false;
23948                    var szCellValue = jQuery(this).attr("data-value");
23949
23950                    if (jQuery(this).attr("data-encode-value") == "base64") {
23951                        szCellValue = Base64.decode(szCellValue);
23952                    }
23953
23954                    if (bMatchCaseInsensitive) {
23955                        szCellValue = szCellValue.toLowerCase();
23956                    }
23957
23958                    switch (szComparison) {
23959                        case "contain-or": {
23960                            for (var i = 0; i < aMatchValues.length; i++) {
23961                                if (szCellValue.indexOf(aMatchValues[i]) >= 0) {
23962                                    bMatch = true;
23963                                }
23964                            }
23965                        } break;
23966                        case "contain-and": {
23967                            bMatch = true;
23968                            for (var i = 0; i < aMatchValues.length; i++) {
23969                                if (szCellValue.indexOf(aMatchValues[i]) === -1) {
23970                                    bMatch = false;
23971                                }
23972                            }
23973                        } break;
23974                        case "equal": {
23975                            bMatch = true;
23976                            for (var i = 0; i < aMatchValues.length; i++) {
23977                                if (szCellValue !== aMatchValues[i]) {
23978                                    bMatch = false;
23979                                }
23980                            }
23981                        } break;
23982                        case "exclude": {
23983                            bMatch = true;
23984                            for (var i = 0; i < aMatchValues.length; i++) {
23985                                if (szCellValue.indexOf(aMatchValues[i]) >= 0) {
23986                                    bMatch = false;
23987                                }
23988                            }
23989                        } break;
23990                    }
23991
23992                    if (bMatch) {
23993                        jQuery(this).closest("tr").css("display", "table-row");
23994                    } else {
23995                        jQuery(this).closest("tr").css("display", "none");
23996                    }
23997                });
23998            } break;
23999        }
24000
24001        ctlTableUpdateCounter(oNodeMainWrapper);
24002        ctlTableRefreshFooterCalculations(oNodeMainWrapper.find("tbody").closest("table"));
24003
24004        window.dispatchEvent(new Event('resize'));
24005    });
24006
24007    jQuery(document).on("click", ".ctl-theme-tables-search-in-table .btn-cancel-search", function () {
24008        var oNodeInputSearch = jQuery(this).closest(".ctl-theme-tables-search-in-table").
24009            find(".ctl-theme-tables-action-search-in-table");
24010        oNodeInputSearch.val("");
24011        ctlTableSearchInTable(
24012            jQuery(this).closest(".ctl-theme-table-main-wrapper"), "");
24013    });
24014
24015    jQuery(document).on("input paste", ".ctl-theme-tables-action-search-in-table", function () {
24016        ctlTableSearchInTable(
24017            jQuery(this).closest(".ctl-theme-table-main-wrapper"), jQuery(this).val());
24018    });
24019
24020    jQuery(document).on("click", ".ctl-theme-table-main-wrapper .btn-change-status-selected-rows", function () {
24021        ctlTableChangeStatusRows(jQuery(this));
24022    });
24023
24024    jQuery(document).on("click", ".ctl-theme-table-main-wrapper .btn-delete-selected-rows", function () {
24025        ctlTableDeleteRows(jQuery(this), jQuery(this).hasClass("custom-deletion"));
24026    });
24027
24028    jQuery(document).on("click", ".ctl-theme-table-main-wrapper .btn-delete-row", function () {
24029        ctlTableDeleteRow(jQuery(this), jQuery(this).hasClass("custom-deletion"));
24030    });
24031
24032    jQuery(document).on("click", ".ctl-theme-table-main-wrapper .btn-add-row", function () {
24033        ctlTableAddRow(jQuery(this).closest(".ctl-theme-table-main-wrapper").find("tbody"));
24034    });
24035
24036    jQuery(document).on("click", ".ctl-theme-tables-action-select-all .custom-control-label", function () {
24037        var oNodeCheck = jQuery(this).closest(".custom-checkbox").find(".custom-control-input");
24038        var oNodeTableBody = jQuery(this).closest(".ctl-theme-tables-wrapper").find("tbody");
24039        var bCheck = oNodeCheck.is(':checked') ? false : true;
24040        oNodeTableBody.find("tr").each(function () {
24041            if (jQuery(this).css("display") !== "none") {
24042                jQuery(this).find('.ctl-theme-tables-row-selector .custom-control-input').prop('checked', bCheck);
24043            }
24044        });
24045    });
24046
24047    jQuery(document).on("click", ".ctlgrouptablecols .editable", function (e) {
24048        if (!jQuery(this).hasClass("editing")) {
24049            ctlTableMakeColEditable(jQuery(this));
24050        }
24051    });
24052
24053
24054    jQuery(document).on("click", ".btn-action-user-logout-selected-rows", function () {
24055        var oNodeButton = jQuery(this);
24056        var oNodeMainTableWrapper = oNodeButton.closest(".ctl-theme-table-main-wrapper");
24057        var oNodeTableBody = oNodeMainTableWrapper.find("tbody");
24058
24059        var aResourceIds = [];
24060
24061        oNodeTableBody
24062            .find("tr.ctl-table-row .ctl-theme-tables-row-selector input[type=checkbox]:checked")
24063            .each(function () {
24064                var oNodeRow = jQuery(this).closest("tr");
24065                var idResource = oNodeRow.attr("data-resource-id");
24066                aResourceIds.push(idResource);
24067            });
24068
24069        if (aResourceIds.length == 0) {
24070            g_oCTLBootstrapModals.alert("",
24071                g_oCTLThemeTablesLocalizationFront["Select at least one row."]);
24072            return;
24073        }
24074
24075        var idLoading = g_oCTLWPStudio.showLoading("");
24076
24077        var oFormData = {};
24078        oFormData['action'] = 'ctl-wp-studio';
24079        oFormData['execute'] = 'ctl-theme-tables';
24080        oFormData['extension-action'] = 'users-logout';
24081        oFormData['table-id'] =
24082            jQuery(this).closest(".ctl-theme-table-main-wrapper").attr("data-table-id");
24083        oFormData['resource-ids'] = aResourceIds;
24084        oFormData["get-params"] = g_oCTLWPStudio.getUrlParams();
24085
24086        jQuery.ajax({
24087            url: g_oCTLWPStudio._oLangCommon["ajaxurl"],
24088            type: "POST",
24089            data: oFormData,
24090            cache: false,
24091            method: 'POST',
24092            success: function (response, textStatus, jqXHR) {
24093                var oResponse = JSON.parse(response);
24094                g_oCTLWPStudio.closeDlg(idLoading);
24095
24096                if (oResponse.res === true) {
24097                    if (oResponse.redirect) {
24098                        g_oCTLWPStudio.showLoading("");
24099                        window.location.href = oResponse.redirect;
24100                    } else {
24101                        g_oCTLBootstrapModals.alert("",
24102                            g_oCTLThemeTablesLocalizationFront["Users logged out successfully!"]);
24103                    }
24104                } else if (oResponse.desc) {
24105                    alert(oResponse.desc);
24106                } else {
24107                    alert(g_oCTLWPStudio._oLangCommon["Ooops! Something Went Wrong!"]);
24108                }
24109            },
24110            error: function (jqXHR, textStatus, errorThrown) {
24111                g_oCTLWPStudio.closeDlg(idLoading);
24112                alert(g_oCTLWPStudio._oLangCommon["Ooops! Something Went Wrong!"]);
24113            }
24114        });
24115    });
24116
24117    jQuery(document).on("click", ".btn-convert-selected-rows", function () {
24118        var oNodeButton = jQuery(this);
24119        var oNodeMainTableWrapper = oNodeButton.closest(".ctl-theme-table-main-wrapper");
24120        var oNodeTableBody = oNodeMainTableWrapper.find("tbody");
24121
24122        var aResourceIds = [];
24123
24124        oNodeTableBody
24125            .find("tr.ctl-table-row .ctl-theme-tables-row-selector input[type=checkbox]:checked")
24126            .each(function () {
24127                var oNodeRow = jQuery(this).closest("tr");
24128                var idResource = oNodeRow.attr("data-resource-id");
24129                aResourceIds.push(idResource);
24130            });
24131
24132        if (aResourceIds.length == 0) {
24133            g_oCTLBootstrapModals.alert("",
24134                g_oCTLThemeTablesLocalizationFront["Select at least one row."]);
24135            return;
24136        }
24137
24138        var idLoading = g_oCTLWPStudio.showLoading("");
24139
24140        var oFormData = {};
24141        oFormData['action'] = 'ctl-wp-studio';
24142        oFormData['execute'] = 'ctl-theme-tables';
24143        oFormData['extension-action'] = 'convert-selected-rows';
24144        oFormData['table-id'] =
24145            jQuery(this).closest(".ctl-theme-table-main-wrapper").attr("data-table-id");
24146        oFormData['resource-ids'] = aResourceIds;
24147        oFormData["get-params"] = g_oCTLWPStudio.getUrlParams();
24148
24149        jQuery.ajax({
24150            url: g_oCTLWPStudio._oLangCommon["ajaxurl"],
24151            type: "POST",
24152            data: oFormData,
24153            cache: false,
24154            method: 'POST',
24155            success: function (response, textStatus, jqXHR) {
24156                var oResponse = JSON.parse(response);
24157
24158                if (oResponse.res === true) {
24159                    window.location.reload();
24160                } else if (oResponse.desc) {
24161                    g_oCTLWPStudio.closeDlg(idLoading);
24162                    alert(oResponse.desc);
24163                } else {
24164                    g_oCTLWPStudio.closeDlg(idLoading);
24165                    alert(g_oCTLWPStudio._oLangCommon["Ooops! Something Went Wrong!"]);
24166                }
24167            },
24168            error: function (jqXHR, textStatus, errorThrown) {
24169                g_oCTLWPStudio.closeDlg(idLoading);
24170                alert(g_oCTLWPStudio._oLangCommon["Ooops! Something Went Wrong!"]);
24171            }
24172        });
24173    });
24174
24175    jQuery(document).on("click", ".btn-group-together-selected-rows", function () {
24176        var oNodeButton = jQuery(this);
24177        var oNodeMainTableWrapper = oNodeButton.closest(".ctl-theme-table-main-wrapper");
24178        var oNodeTableBody = oNodeMainTableWrapper.find("tbody");
24179
24180        var aResourceIds = [];
24181
24182        oNodeTableBody
24183            .find("tr.ctl-table-row .ctl-theme-tables-row-selector input[type=checkbox]:checked")
24184            .each(function () {
24185                var oNodeRow = jQuery(this).closest("tr");
24186                var idResource = oNodeRow.attr("data-resource-id");
24187                aResourceIds.push(idResource);
24188            });
24189
24190        if (aResourceIds.length == 0) {
24191            g_oCTLBootstrapModals.alert("",
24192                g_oCTLThemeTablesLocalizationFront["Select at least one row."]);
24193            return;
24194        }
24195
24196        var idLoading = g_oCTLWPStudio.showLoading("");
24197
24198        var oFormData = {};
24199        oFormData['action'] = 'ctl-wp-studio';
24200        oFormData['execute'] = 'ctl-theme-tables';
24201        oFormData['extension-action'] = 'group-together-selected-rows';
24202        oFormData['table-id'] =
24203            jQuery(this).closest(".ctl-theme-table-main-wrapper").attr("data-table-id");
24204        oFormData['resource-ids'] = aResourceIds;
24205        oFormData["get-params"] = g_oCTLWPStudio.getUrlParams();
24206
24207        jQuery.ajax({
24208            url: g_oCTLWPStudio._oLangCommon["ajaxurl"],
24209            type: "POST",
24210            data: oFormData,
24211            cache: false,
24212            method: 'POST',
24213            success: function (response, textStatus, jqXHR) {
24214                var oResponse = JSON.parse(response);
24215
24216                if (oResponse.res === true) {
24217                    if (oResponse.redirect) {
24218                        window.location.href = oResponse.redirect;
24219                    } else {
24220                        window.location.reload();
24221                    }
24222                } else if (oResponse.desc) {
24223                    g_oCTLWPStudio.closeDlg(idLoading);
24224                    alert(oResponse.desc);
24225                } else {
24226                    g_oCTLWPStudio.closeDlg(idLoading);
24227                    alert(g_oCTLWPStudio._oLangCommon["Ooops! Something Went Wrong!"]);
24228                }
24229            },
24230            error: function (jqXHR, textStatus, errorThrown) {
24231                g_oCTLWPStudio.closeDlg(idLoading);
24232                alert(g_oCTLWPStudio._oLangCommon["Ooops! Something Went Wrong!"]);
24233            }
24234        });
24235    });
24236
24237    jQuery(document).on("click", ".btn-duplicate-selected-rows", function () {
24238        let oNodeButton = jQuery(this);
24239        let oNodeMainTableWrapper = oNodeButton.closest(".ctl-theme-table-main-wrapper");
24240        let oNodeTableBody = oNodeMainTableWrapper.find("tbody");
24241
24242        let aResourceIds = [];
24243
24244        oNodeTableBody
24245            .find("tr.ctl-table-row .ctl-theme-tables-row-selector input[type=checkbox]:checked")
24246            .each(function () {
24247                let oNodeRow = jQuery(this).closest("tr");
24248                let idResource = oNodeRow.attr("data-resource-id");
24249                aResourceIds.push(idResource);
24250            });
24251
24252        if (aResourceIds.length == 0) {
24253            g_oCTLBootstrapModals.alert("",
24254                g_oCTLThemeTablesLocalizationFront["Select at least one row."]);
24255            return;
24256        }
24257
24258        let idLoading = g_oCTLWPStudio.showLoading("");
24259
24260        let oFormData = {};
24261        oFormData['action'] = 'ctl-wp-studio';
24262        oFormData['execute'] = 'ctl-theme-tables';
24263        oFormData['extension-action'] = 'duplicate-selected-rows';
24264        oFormData['table-id'] =
24265            jQuery(this).closest(".ctl-theme-table-main-wrapper").attr("data-table-id");
24266        oFormData['resource-ids'] = aResourceIds;
24267        oFormData["get-params"] = g_oCTLWPStudio.getUrlParams();
24268
24269        jQuery.ajax({
24270            url: g_oCTLWPStudio._oLangCommon["ajaxurl"],
24271            type: "POST",
24272            data: oFormData,
24273            cache: false,
24274            method: 'POST',
24275            success: function (response, textStatus, jqXHR) {
24276                let oResponse = JSON.parse(response);
24277
24278                if (oResponse.res === true) {
24279                    window.location.reload();
24280                } else if (oResponse.desc) {
24281                    g_oCTLWPStudio.closeDlg(idLoading);
24282                    alert(oResponse.desc);
24283                } else {
24284                    g_oCTLWPStudio.closeDlg(idLoading);
24285                    alert(g_oCTLWPStudio._oLangCommon["Ooops! Something Went Wrong!"]);
24286                }
24287            },
24288            error: function (jqXHR, textStatus, errorThrown) {
24289                g_oCTLWPStudio.closeDlg(idLoading);
24290                alert(g_oCTLWPStudio._oLangCommon["Ooops! Something Went Wrong!"]);
24291            }
24292        });
24293    });
24294
24295    jQuery(document).on("click", ".table-footer-actions .btn-export-all-data-in-csv", function (e) {
24296        var idLoading = g_oCTLWPStudio.showLoading("");
24297
24298        var oFormData = {};
24299        oFormData['action'] = 'ctl-wp-studio';
24300        oFormData['execute'] = 'ctl-theme-tables';
24301        oFormData['extension-action'] = 'export-all-data-in-csv';
24302        oFormData['table-id'] =
24303            jQuery(this).closest(".ctl-theme-table-main-wrapper").attr("data-table-id");
24304
24305        jQuery.ajax({
24306            url: g_oCTLWPStudio._oLangCommon["ajaxurl"],
24307            type: "POST",
24308            data: oFormData,
24309            cache: false,
24310            method: 'POST',
24311            success: function (response, textStatus, jqXHR) {
24312                g_oCTLWPStudio.closeDlg(idLoading);
24313                var oResponse = JSON.parse(response);
24314
24315                if (oResponse.res === true) {
24316                    var csvContent = "data:text/csv;charset=utf-8," + encodeURIComponent(oResponse.csv);
24317
24318                    var link = document.createElement("a");
24319                    link.setAttribute("href", csvContent);
24320
24321                    var szFileName = prompt(g_oCTLThemeTablesLocalizationFront["Type a filename..."]);
24322
24323                    if (!szFileName) {
24324                        return;
24325                    }
24326
24327                    link.setAttribute("download", szFileName + ".csv");
24328                    document.body.appendChild(link);
24329
24330                    link.click();
24331                }
24332            },
24333            error: function (jqXHR, textStatus, errorThrown) {
24334                g_oCTLWPStudio.closeDlg(idLoading);
24335                alert(g_oCTLWPStudio._oLangCommon["Ooops! Something Went Wrong!"]);
24336            }
24337        });
24338    });
24339
24340    jQuery(document).on("click", ".table-footer-actions .btn-export-csv", function (e) {
24341        var idLoading = g_oCTLWPStudio.showLoading("");
24342
24343        __ctlThemeTableAjaxExportCsv(
24344            jQuery(this).closest(".ctl-theme-table-main-wrapper").attr("data-table-id"),
24345            g_oCTLWPStudio.getUrlParams(),
24346            1,
24347            ()=>{
24348                g_oCTLWPStudio.closeDlg(idLoading);
24349            }
24350        );
24351    });
24352
24353    jQuery(document).on("click", ".table-footer-actions .btn-js-export-csv", function (e) {
24354        var oNodeMainWrapper = jQuery(this).closest(".ctl-theme-table-main-wrapper");
24355
24356
24357
24358        var aFile = new Array();
24359        var szSeparator = ";";
24360
24361        var aRow = new Array();
24362        oNodeMainWrapper.find("thead").first().find("th.ctl-table-th-cell").each(function () {
24363            if (jQuery(this).hasClass("table-actions")) {
24364                return;
24365            }
24366
24367            aRow.push(JSON.stringify(jQuery(this).find(".ctl-table-cell-data").text()));
24368        });
24369        aFile.push(aRow);
24370
24371        oNodeMainWrapper.find(".ctl-table-row").each(function () {
24372
24373            if (jQuery(this).css("display") === "none") {
24374                return;
24375            }
24376
24377            var aRow = new Array();
24378            jQuery(this).find(".ctl-table-td-cell").each(function () {
24379                let oNodeTdCell = jQuery(this);
24380
24381
24382                let szCSVExportedValue = oNodeTdCell.attr("data-csv-exported-value");
24383                let szValue = "";
24384                switch (szCSVExportedValue) {
24385                    default:
24386                    case "cell-value": {
24387                        szValue = oNodeTdCell.attr("data-value");
24388
24389                        if (oNodeTdCell.attr("data-encode-value") == "base64") {
24390                            szValue = Base64.decode(szValue);
24391                            szValue = new DOMParser().parseFromString(szValue, "text/html").documentElement.textContent;
24392                        }
24393                    } break;
24394                    case "formatted-value": {
24395                        switch (oNodeTdCell.attr("data-format")) {
24396                            case "LIST": {
24397                                let aNodesListItems = oNodeTdCell.find(".ctl-theme-tables-list-items li");
24398                                szValue = aNodesListItems.map(function () {
24399                                    return jQuery(this).text();
24400                                }).get().join(", ");
24401                            } break;
24402                            default: {
24403                                szValue = oNodeTdCell.find(".ctl-table-cell-data").text();
24404                            } break;
24405                        }
24406
24407                    } break;
24408                }
24409
24410                aRow.push(JSON.stringify(szValue));
24411            });
24412            aFile.push(aRow);
24413        });
24414
24415
24416        const BOM = '\uFEFF'; // Unicode BOM character
24417        const blob = new Blob([BOM + aFile.map(e => e.join(szSeparator)).join("\r\n")], { type: 'text/csv;charset=utf-8;' });
24418
24419        const url = URL.createObjectURL(blob);
24420
24421        var link = document.createElement("a");
24422        link.setAttribute("href", url);
24423
24424        var szFileName = prompt(g_oCTLThemeTablesLocalizationFront["Type a filename..."]);
24425
24426        if (!szFileName) {
24427            return;
24428        }
24429
24430        link.setAttribute("download", szFileName + ".csv");
24431        document.body.appendChild(link);
24432
24433        link.click();
24434
24435        wpdk_do_action("ctl-theme-tables-export-csv", oNodeMainWrapper);
24436    }); 
24437
24438    jQuery(document).on("click", ".ctlgrouptablecols thead th", function () {
24439
24440        if (!jQuery(this).hasClass("sorting")) {
24441            return;
24442        }
24443
24444        let oNodeTableWrapper = jQuery(this).closest(".ctl-theme-table-main-wrapper");
24445        let szTablePostFilterID = oNodeTableWrapper.attr("data-post-filter-id");
24446        let szSortName = jQuery(this).attr("data-sort-param-name");
24447
24448        bPostFilterPagination = false;
24449
24450        if (szTablePostFilterID && szTablePostFilterID !== "") {
24451
24452            let oNodeInputSearchField = jQuery(".ctl-post-filters-" + szTablePostFilterID);
24453
24454            if (jQuery(".ctl-post-filters-pagination-wrapper-" + szTablePostFilterID).length > 0
24455                && oNodeInputSearchField.find("[name='" + szSortName + "']").length > 0) {
24456                bPostFilterPagination = true;
24457            }
24458        }
24459
24460        if (bPostFilterPagination) {
24461
24462            let oURLSearchParams = new URLSearchParams();
24463
24464            let aSortOnParams = oURLParams.getAll("sort-on[]");
24465            let aSortByParams = oURLParams.getAll("sort-by[]");
24466
24467            let iIndex = aSortOnParams.indexOf(szSortName);
24468            if (iIndex !== -1) {
24469                aSortByParams[iIndex] = aSortByParams[iIndex] === "asc" ? "desc" : "asc";
24470            } else {
24471                aSortOnParams.push(szSortName);
24472                aSortByParams.push("asc");
24473            }
24474
24475            oURLSearchParams.delete("sort-on[]");
24476            oURLSearchParams.delete("sort-by[]");
24477
24478            for (const szValue of aSortOnParams) {
24479                oURLSearchParams.append("sort-on[]", szValue);
24480            }
24481
24482            for (const szValue of aSortByParams) {
24483                oURLSearchParams.append("sort-by[]", szValue);
24484            }
24485
24486            g_oCTLWPStudio.showLoading("");
24487            window.location.href = window.location.origin + window.location.pathname + "?" + oURLSearchParams.toString();
24488
24489        } else {
24490            var iCurIndex = jQuery(this).index();
24491
24492            jQuery(this).closest("thead").find("th").each(function () {
24493
24494                if (iCurIndex === jQuery(this).index()) {
24495                    return;
24496                }
24497                jQuery(this).removeClass("sort-desc");
24498                jQuery(this).removeClass("sort-asc");
24499            });
24500
24501            if (!jQuery(this).hasClass("sort-asc")) {
24502                jQuery(this).addClass("sort-asc");
24503                jQuery(this).removeClass("sort-desc");
24504
24505                if (jQuery(this).hasClass("custom-sorting")) {
24506                    jQuery(document).trigger("ctl-table-header-sort-by-col", [jQuery(this), "ASC"]);
24507                } else {
24508                    ctlTableSortByColumn(
24509                        jQuery(this).closest(".ctl-theme-tables-wrapper").find("tbody"),
24510                        jQuery(this).index(), jQuery(this).attr("data-type"), "ASC");
24511                }
24512            } else {
24513                jQuery(this).addClass("sort-desc");
24514                jQuery(this).removeClass("sort-asc");
24515
24516                if (jQuery(this).hasClass("custom-sorting")) {
24517                    jQuery(document).trigger("ctl-table-header-sort-by-col", [jQuery(this), "DESC"]);
24518                } else {
24519                    ctlTableSortByColumn(jQuery(this).closest(".ctl-theme-tables-wrapper").find("tbody"),
24520                        jQuery(this).index(), jQuery(this).attr("data-type"), "DESC");
24521                }
24522            }
24523        }
24524    });
24525
24526    ctlResizeScrollableTables(true, 500);
24527    ctlCheckIfForceCardVisualization();
24528    ctlTableInitSorting();
24529    ctlTableInitStickyCols();
24530    ctlTableInitGantt();
24531    ctlResizeMaximizedTables();
24532
24533    wpdk_add_action("ctl-vulcano-theme-resize-layout", function () {
24534        ctlResizeMaximizedTables();
24535    });
24536});
24537
24538function ctlTableInitGantt(oNodeParent = null) {
24539    if (!oNodeParent) {
24540        oNodeParent = jQuery("body");
24541    }
24542
24543    oNodeParent.find(".ctl-table-row-gantt").each(function () {
24544
24545        var oNodeTR = jQuery(this);
24546        var oGanttInfo = oNodeTR.attr("data-gantt");
24547
24548        oGanttInfo = Base64.decode(oGanttInfo);
24549        oGanttInfo = JSON.parse(oGanttInfo);
24550
24551        var szDateStart = oGanttInfo.start;
24552        var szDateEnd = oGanttInfo.end;
24553        var oDateStart = moment(szDateStart);
24554        var oDateEnd = moment(szDateEnd);
24555
24556        if (!szDateStart || !szDateEnd) {
24557            return;
24558        }
24559
24560        oNodeTR.find(".ctl-table-calendar-day").each(function () {
24561            var oNodeTD = jQuery(this);
24562            var szCurrentDate = oNodeTD.attr("data-date");
24563            var oCurrentDate = moment(szCurrentDate);
24564            var bCheck = false;
24565            var html = "";
24566
24567            if (oCurrentDate.isBetween(szDateStart, szDateEnd)) {
24568                html += '<span class="ctl-table-cell-gantt ctl-table-cell-gantt-middle" style="background-color: ' + oGanttInfo.color + ';"></span>';
24569                bCheck = true;
24570            } else if (oDateStart.isSame(szCurrentDate)) {
24571                html += '<span class="ctl-table-cell-gantt ctl-table-cell-gantt-start" style="background-color: ' + oGanttInfo.color + ';"></span>';
24572                bCheck = true;
24573            } else if (oDateEnd.isSame(szCurrentDate)) {
24574                html += '<span class="ctl-table-cell-gantt ctl-table-cell-gantt-end" style="background-color: ' + oGanttInfo.color + ';"></span>';
24575                bCheck = true;
24576            }
24577
24578            if (bCheck) {
24579                var oNodeCellData = oNodeTD.find(".ctl-table-cell-data");
24580                oNodeCellData.html(html);
24581            }
24582        });
24583    });
24584}
24585
24586function ctlTableInitStickyCols(oNodeContainer = null) {
24587    setTimeout(function () {
24588        __ctlTableInitStickyCols(oNodeContainer);
24589    }, 500);
24590
24591    __ctlTableInitStickyCols(oNodeContainer);
24592}
24593
24594function __ctlTableInitStickyCols(oNodeContainer) {
24595
24596    if (!oNodeContainer) {
24597        oNodeContainer = jQuery("body");
24598    }
24599
24600    oNodeContainer.find("thead tr").each(function () {
24601        var oNodeTR = jQuery(this);
24602        var iMaxCol = 0;
24603        var bFoundSticky = false;
24604        //STICKY LEFT
24605        oNodeTR.find(".ctl-table-th-sticky-col-left").each(function () {
24606            bFoundSticky = true;
24607            var oNodeTD = jQuery(this);
24608            var iCol = oNodeTD.index() + 1;
24609            var iOffset = 0;
24610
24611            if (oNodeTD.index() > iMaxCol) {
24612                iMaxCol = oNodeTD.index();
24613            }
24614
24615            for (var i = 0; i < iCol; i++) {
24616                var oNodeCurrentTD = oNodeTR.find("th").eq(i);
24617                if (!oNodeCurrentTD.hasClass("d-none")) {
24618                    oNodeCurrentTD.css("left", iOffset + "px");
24619                    iOffset += oNodeCurrentTD.outerWidth();
24620                }
24621            }
24622        });
24623        if (bFoundSticky) {
24624            oNodeTR.find("th").eq(iMaxCol).addClass("ctl-table-td-sticky-last-col-left");
24625        }
24626
24627        //STICKY RIGHT
24628
24629        var iTotCol = 0;
24630
24631        oNodeTR.find(".ctl-table-th-sticky-col-right").each(function () {
24632            if (jQuery(this).index() > iTotCol) {
24633                iTotCol = jQuery(this).index();
24634            }
24635        });
24636
24637
24638        var iMinCol = iTotCol;
24639        bFoundSticky = false;
24640        jQuery(oNodeTR.find(".ctl-table-th-sticky-col-right").get().reverse()).each(function () {
24641
24642            bFoundSticky = true;
24643            var oNodeTD = jQuery(this);
24644            var iCol = oNodeTD.index() - 1;
24645            var iOffset = 0;
24646
24647            if (oNodeTD.index() < iMinCol) {
24648                iMinCol = oNodeTD.index();
24649            }
24650
24651            for (var i = iTotCol; i > iCol; i--) {
24652                var oNodeCurrentTD = oNodeTR.find("th").eq(i);
24653                if (!oNodeCurrentTD.hasClass("d-none")) {
24654                    oNodeCurrentTD.css("right", iOffset + "px");
24655                    iOffset += oNodeCurrentTD.outerWidth();
24656                }
24657            }
24658        });
24659        if (bFoundSticky) {
24660            oNodeTR.find("th").eq(iMinCol).addClass("ctl-table-td-sticky-last-col-right");
24661        }
24662    });
24663
24664    oNodeContainer.find("tbody tr, tfoot tr").each(function () {
24665        var oNodeTR = jQuery(this);
24666        var iMaxCol = 0;
24667        var bFoundSticky = false;
24668        oNodeTR.find(".ctl-table-td-sticky-col-left").each(function () {
24669            bFoundSticky = true;
24670            var oNodeTD = jQuery(this);
24671            var iCol = oNodeTD.index() + 1;
24672            var iOffset = 0;
24673
24674            if (oNodeTD.index() > iMaxCol) {
24675                iMaxCol = oNodeTD.index();
24676            }
24677
24678            for (var i = 0; i < iCol; i++) {
24679                var oNodeCurrentTD = oNodeTR.find("td").eq(i);
24680                if (!oNodeCurrentTD.hasClass("d-none")) {
24681                    oNodeCurrentTD.css("left", iOffset + "px");
24682                    iOffset += oNodeCurrentTD.outerWidth();
24683                }
24684            }
24685        });
24686        if (bFoundSticky) {
24687            oNodeTR.find("td").eq(iMaxCol).addClass("ctl-table-td-sticky-last-col-left");
24688        }
24689
24690        var iTotCol = 0;
24691
24692        oNodeTR.find(".ctl-table-td-sticky-col-right").each(function () {
24693            if (jQuery(this).index() > iTotCol) {
24694                iTotCol = jQuery(this).index();
24695            }
24696        });
24697
24698        var iMinCol = iTotCol;
24699        bFoundSticky = false;
24700        jQuery(oNodeTR.find(".ctl-table-td-sticky-col-right").get().reverse()).each(function () {
24701
24702            bFoundSticky = true;
24703            var oNodeTD = jQuery(this);
24704            var iCol = oNodeTD.index() - 1;
24705            var iOffset = 0;
24706
24707            if (oNodeTD.index() < iMinCol) {
24708                iMinCol = oNodeTD.index();
24709            }
24710
24711            for (var i = iTotCol; i > iCol; i--) {
24712                var oNodeCurrentTD = oNodeTR.find("td").eq(i);
24713                //iOffset += parseInt(oNodeTD.children(".ctl-table-bg-cell-data").css("padding-right"));
24714                if (!oNodeCurrentTD.hasClass("d-none")) {
24715                    oNodeCurrentTD.css("right", iOffset + "px");
24716                    iOffset += oNodeCurrentTD.outerWidth();
24717                }
24718            }
24719        });
24720        if (bFoundSticky) {
24721            oNodeTR.find("td").eq(iMinCol).addClass("ctl-table-td-sticky-last-col-right");
24722        }
24723    });
24724}
24725
24726
24727function ctlTableInitSorting(oNodeParent = null) {
24728
24729    if (!oNodeParent) {
24730        oNodeParent = jQuery("body");
24731    }
24732
24733    oNodeParent.find(".ctl-theme-table-main-wrapper.ctl-table-post-sortable").each(function () {
24734        ctlTableMakePostTableSortable(jQuery(this));
24735    });
24736
24737    oNodeParent.find(".ctl-theme-table-kanban.ctl-theme-table-kanban-sortable").each(function () {
24738        ctlTableMakeKanbanSortable(jQuery(this));
24739    });
24740}
24741
24742function ctlTableSaveInputCell(oNodeSaveButton, bIgnoreNewValue) {
24743
24744    var id = oNodeSaveButton.attr("data-td-id");
24745    var oNodeInput = oNodeSaveButton.closest(".modal").find(".modal-body :input");
24746
24747    var oNodeTD = jQuery("#" + id);
24748
24749
24750    var oNodeTABLE = oNodeTD.closest("table");
24751    var oNodeTR = oNodeTD.closest("tr");
24752    var oNodeTFOOT = oNodeTD.closest("tfoot");
24753
24754    var oNodeCellData = oNodeTD.find(".ctl-table-cell-data");
24755    var szPrevValue = oNodeTD.attr("data-value");
24756    var szDataFormat = oNodeTD.attr("data-format");
24757    var idResource = oNodeTR.attr("data-resource-id");
24758
24759    if (oNodeTFOOT.length > 0) {
24760        szDataFormat = oNodeTD.attr("footer-data-format");
24761    }
24762
24763    var col = oNodeTD.parent().children().index(oNodeTD);
24764    var row = oNodeTR.parent().children().index(oNodeTR);
24765
24766
24767    if (oNodeTD.attr("data-encode-value") == "base64") {
24768        szPrevValue = Base64.encode(szPrevValue);
24769    }
24770
24771    if (bIgnoreNewValue) {
24772        szStoredValue = oNodeTD.attr("data-value");
24773
24774        if (oNodeTD.attr("data-encode-value") == "base64") {
24775            szOriginalValue = Base64.encode(szStoredValue);
24776        } else {
24777            szOriginalValue = szStoredValue;
24778        }
24779    } else {
24780        szOriginalValue = oNodeInput.val();
24781
24782        if (oNodeTD.attr("data-encode-value") == "base64") {
24783            szStoredValue = Base64.encode(szOriginalValue);
24784        } else {
24785            szStoredValue = szOriginalValue;
24786        }
24787
24788        oNodeTD.attr("data-value", szStoredValue);
24789    }
24790
24791    oNodeTD.removeClass("editing");
24792    oNodeCellData.removeClass("w-100");
24793
24794    var szFormattedValue = "";
24795
24796    switch (szDataFormat) {
24797        case "DD-MMM-YY": {
24798            if (szOriginalValue !== "") {
24799                szFormattedValue = moment(szOriginalValue, "YYYY-MM-DD",
24800                    ctl_wp_studio_common_localization["locale"]).format('DD-MMM-YY');
24801            }
24802        } break;
24803        case 'EU-CURRENCY': {
24804            if (szOriginalValue !== "") {
24805                szFormattedValue = '€ ' + numberFormat(parseFloat(szOriginalValue), 2, ',', '.');
24806                //                 szFormattedValue = new Intl.NumberFormat('it-IT', {
24807                //                     style: 'currency',
24808                //                     currency: 'EUR',
24809                //                   }).format(parseFloat(szOriginalValue));
24810                // 				 szFormattedValue = `€ ${szFormattedValue.replace('€', '').trim()}`;
24811            }
24812        } break;
24813        default: {
24814            szFormattedValue = szOriginalValue;
24815        }
24816    }
24817
24818    oNodeCellData.html(szFormattedValue);
24819    ctlTableRefreshFooterCalculationsByCol(oNodeTABLE, col + 1,
24820        oNodeTD);
24821
24822    var aData = [idResource, szOriginalValue, szFormattedValue, szPrevValue, row, col];
24823
24824    jQuery(document).trigger("ctl-table-save-cell", aData);
24825}
24826
24827function ctlTableMakePostTableSortable(oNodeTABLE) {
24828    var oNodeTBODY = oNodeTABLE.find("tbody");
24829    var idTable = oNodeTABLE.attr("data-table-id");
24830
24831    oNodeTBODY.sortable({
24832        update: function () {
24833
24834            var aPostIds = [];
24835            oNodeTBODY.find("tr").each(function () {
24836                var idResource = jQuery(this).attr("data-resource-id");
24837                if (!isNaN(idResource)) {
24838                    aPostIds.push(idResource);
24839                }
24840            });
24841
24842            idLoading = g_oCTLWPStudio.showLoading("");
24843
24844            var oFormData = {};
24845            oFormData['action'] = 'ctl-wp-studio';
24846            oFormData['execute'] = 'ctl-theme-tables';
24847            oFormData['extension-action'] = 'sort-table';
24848            oFormData['table-id'] = idTable;
24849            oFormData['post-ids'] = aPostIds;
24850
24851            jQuery.ajax({
24852                url: g_oCTLWPStudio._oLangCommon["ajaxurl"],
24853                type: "POST",
24854                data: oFormData,
24855                cache: false,
24856                method: 'POST',
24857                success: function (response, textStatus, jqXHR) {
24858                    g_oCTLWPStudio.closeDlg(idLoading);
24859                    var oResponse = jQuery.parseJSON(response);
24860
24861                    if (oResponse.res === false) {
24862                        alert(oResponse.desc);
24863                    }
24864                },
24865                error: function (jqXHR, textStatus, errorThrown) {
24866                    g_oCTLWPStudio.closeDlg(idLoading);
24867                    alert(g_oCTLWPStudio._oLangCommon["Ooops! Something Went Wrong!"]);
24868                }
24869            });
24870        },
24871        helper: ctlTableSortableHelper(),
24872        placeholder: "ui-sortable-placeholder"
24873    }).disableSelection();
24874};
24875
24876function ctlTableMakeKanbanSortable(oNodeKanbanTable) {
24877    var idTable = oNodeKanbanTable.attr("data-table-id");
24878
24879    oNodeKanbanTable.find(".ctl-theme-table-kanban-rows-container").each(function () {
24880
24881        var oNodeRowsContainer = jQuery(this);
24882
24883        var oNodeKanbanColumn = null;
24884        var oNodeRowItem = null;
24885
24886        oNodeRowsContainer.sortable({
24887            revert: true,
24888            scroll: true,
24889            scrollSensitivity: 100,
24890            dropOnEmpty: true,
24891            // tolerance : "pointer",
24892            tolerance: "intersect",
24893            connectWith: ".ctl-theme-table-kanban-rows-container",
24894            stop: function (event, ui) {
24895                oNodeRowItem.css("opacity", "1");
24896
24897                oNodeRowItem = jQuery(ui.item);
24898
24899                if (oNodeRowItem.closest(".modal").length > 0) {
24900                    g_oCTLWPStudio.scrollToSelector("#" + oNodeRowItem.attr("id"));
24901                } else {
24902                    var fOffset = 60;
24903                    if (jQuery("header").length > 0) {
24904                        fOffset += jQuery("header").height();
24905                    }
24906                    g_oCTLWPStudio.scrollToSelector("#" + oNodeRowItem.attr("id"), - fOffset);
24907                }
24908            },
24909            start: function (event, ui) {
24910                oNodeKanbanColumn = jQuery(event.currentTarget).closest(".ctl-theme-table-kanban-column-container");
24911
24912                oNodeRowItem = jQuery(ui.item);
24913
24914                oNodeRowItem.css("display", "block");
24915                oNodeRowItem.css("opacity", "0.5");
24916            },
24917            remove: function (event, ui) {
24918                oNodeRowItem.css("opacity", "1");
24919
24920                // scroll the column to top if empty
24921                if (oNodeKanbanColumn.find(".ctl-theme-table-kanban-row").length == 0) {
24922                    oNodeKanbanColumn.animate({ scrollTop: 0 }, 0);
24923                }
24924            },
24925            update: function () {
24926                var aPostIds = [];
24927                oNodeRowsContainer.find(".ctl-theme-table-kanban-row").each(function () {
24928                    var idResource = jQuery(this).attr("data-resource-id");
24929                    if (!isNaN(idResource)) {
24930                        aPostIds.push(idResource);
24931                    }
24932                });
24933
24934                return;
24935
24936                idLoading = g_oCTLWPStudio.showLoading("");
24937
24938                var oFormData = {};
24939                oFormData['action'] = 'ctl-wp-studio';
24940                oFormData['execute'] = 'ctl-theme-tables';
24941                oFormData['extension-action'] = 'sort-table';
24942                oFormData['table-id'] = idTable;
24943                oFormData['post-ids'] = aPostIds;
24944
24945                jQuery.ajax({
24946                    url: g_oCTLWPStudio._oLangCommon["ajaxurl"],
24947                    type: "POST",
24948                    data: oFormData,
24949                    cache: false,
24950                    method: 'POST',
24951                    success: function (response, textStatus, jqXHR) {
24952                        g_oCTLWPStudio.closeDlg(idLoading);
24953                        var oResponse = jQuery.parseJSON(response);
24954
24955                        if (oResponse.res === false) {
24956                            alert(oResponse.desc);
24957                        }
24958                    },
24959                    error: function (jqXHR, textStatus, errorThrown) {
24960                        g_oCTLWPStudio.closeDlg(idLoading);
24961                        alert(g_oCTLWPStudio._oLangCommon["Ooops! Something Went Wrong!"]);
24962                    }
24963                });
24964            },
24965            helper: ctlTableKanbanSortableHelper(),
24966            placeholder: "ui-sortable-placeholder"
24967        }).disableSelection();
24968    });
24969};
24970
24971function ctlTableCloneNode(oNodeSource) {
24972    var oNodeClone = oNodeSource.clone();
24973
24974    var oCloneSelectOptions = oNodeClone.find('select');
24975    var oOriginalSelectOptions = oNodeSource.find('select');
24976
24977    if (oOriginalSelectOptions) {
24978        oOriginalSelectOptions.each(function (index) {
24979            var aCloneOptions = oCloneSelectOptions.eq(index).find("option");
24980            var aOriginalOptions = jQuery(this).find("option");
24981
24982            aOriginalOptions.each(function (index) {
24983                aCloneOptions.eq(index).prop('selected',
24984                    jQuery(this).prop('selected'));
24985            });
24986        });
24987    }
24988
24989    /*
24990        // se non dovesse funzionare con i radio
24991        var oCloneRadios    = oCloneHtml.find('input[type=radio]');
24992        var oOriginalRadios = jQuery(this).find('input[type=radio]');                    
24993        if(oOriginalRadios){
24994            oOriginalRadios.each(function(index){
24995                oCloneRadios.eq(index).prop("checked", this.checked);
24996            });                       
24997        }         
24998       */
24999
25000    return oNodeClone;
25001};
25002
25003function ctlTableKanbanSortableHelper() {
25004    var fixHelperModified = function (e, oNode) {
25005        var $helper = ctlTableCloneNode(oNode);
25006        $helper.addClass("ui-sortable-movable");
25007        return $helper;
25008    };
25009    return fixHelperModified;
25010};
25011
25012function ctlTableSortableHelper() {
25013    var fixHelperModified = function (e, oNode) {
25014        var $originals = oNode.children();
25015        var $helper = ctlTableCloneNode(oNode);
25016        var szTagName = $helper[0].tagName.toLowerCase();
25017
25018        $helper.children().each(function (index) {
25019            jQuery(this).width($originals.eq(index).width());
25020            jQuery(this).css("background-color", "#ffe7b3");
25021            jQuery(this).closest(szTagName).css("border", "1px solid #ffc64c");
25022            jQuery(this).closest(szTagName).css("background-color", "#ffe7b3");
25023            jQuery(this).closest(szTagName + " *").each(function () {
25024                jQuery(this).css("background-color", "#ffe7b3");
25025            });
25026        });
25027
25028        return $helper;
25029    };
25030    return fixHelperModified;
25031};
25032
25033
25034function ctlTableRefreshFooterCalculationsByCol(oNodeTABLE, iTdCol, oNodeTD) {
25035
25036    szFooterCalculations = oNodeTD.attr("data-footer-calculations");
25037    szDataFormat = oNodeTD.attr("footer-data-format")
25038    szDataMaxDecimals = oNodeTD.attr("data-number-max-decimals");
25039
25040    if (!szFooterCalculations || szFooterCalculations == "none") {
25041        return;
25042    }
25043
25044    var oNodeTBODY = oNodeTABLE.find("tbody");
25045    var oNodeTFOOT = oNodeTABLE.find("tfoot");
25046
25047    if (oNodeTFOOT.length == 0) {
25048        return;
25049    }
25050
25051    switch (szFooterCalculations) {
25052        case "summation": {
25053            var fSum = 0;
25054            oNodeTBODY.find("tr td:nth-child(" + iTdCol + ")").each(function () {
25055                if (jQuery(this).closest("tr").css("display") == "none") {
25056                    return;
25057                }
25058                fSum += Number(jQuery(this).attr("data-value"));
25059            });
25060            let oNodeTDFooter = oNodeTFOOT.find("tr td:nth-child(" + iTdCol + ") .ctl-table-cell-data");
25061
25062            oNodeTDFooter.html(
25063                __ctlThemeTableFormatCell(fSum, {
25064                    "data-format": szDataFormat,
25065                    "data-number-max-decimals": szDataMaxDecimals
25066                }));
25067            __updateValueAttributeTDFooter(oNodeTDFooter, fSum);
25068        } break;
25069
25070        case "average": {
25071            var fSum = 0;
25072            var iCnt = 0;
25073
25074            oNodeTBODY.find("tr td:nth-child(" + iTdCol + ")").each(function () {
25075                if (jQuery(this).closest("tr").css("display") == "none") {
25076                    return;
25077                }
25078                iCnt++;
25079                fSum += Number(jQuery(this).attr("data-value"));
25080            });
25081            let oNodeTDFooter = oNodeTFOOT.find("tr td:nth-child(" + iTdCol + ") .ctl-table-cell-data");
25082            var fValue = fSum / iCnt;
25083            oNodeTDFooter.html(
25084                __ctlThemeTableFormatCell(fValue, {
25085                    "data-format": szDataFormat,
25086                    "data-number-max-decimals": szDataMaxDecimals
25087                }));
25088
25089            __updateValueAttributeTDFooter(oNodeTDFooter, fSum);
25090        } break;
25091        case "min-max": {
25092            var fMin = null;
25093            var fMax = null;
25094
25095            oNodeTBODY.find("tr td:nth-child(" + iTdCol + ")").each(function () {
25096                if (jQuery(this).closest("tr").css("display") == "none") {
25097                    return;
25098                }
25099
25100                var fValue = Number(jQuery(this).attr("data-value"));
25101
25102                if (fMin === null) {
25103                    fMin = fValue;
25104                } else if (fValue < fMin) {
25105                    fMin = fValue;
25106                }
25107
25108                if (fMax === null) {
25109                    fMax = fValue;
25110                } else if (fValue > fMax) {
25111                    fMax = fValue;
25112                }
25113            });
25114            let oNodeTDFooter = oNodeTFOOT.find("tr td:nth-child(" + iTdCol + ") .ctl-table-cell-data");
25115            oNodeTDFooter.html(
25116                __ctlThemeTableFormatCell(fMin, {
25117                    "data-format": szDataFormat,
25118                    "data-number-max-decimals": szDataMaxDecimals
25119                }) + " / " +
25120                __ctlThemeTableFormatCell(fMax, {
25121                    "data-format": szDataFormat,
25122                    "data-number-max-decimals": szDataMaxDecimals
25123                }));
25124            __updateValueAttributeTDFooter(oNodeTDFooter, fSum);
25125        } break;
25126    }
25127}
25128
25129function __updateValueAttributeTDFooter(oNodeTDFooter, szNewValue) {
25130    let szDataEncode = oNodeTDFooter.attr("data-encode-value");
25131
25132    switch (szDataEncode) {
25133        case "base64":
25134            szNewValue = Base64.encode(szNewValue);
25135            break;
25136    }
25137    oNodeTDFooter.attr("data-value", szNewValue);
25138}
25139
25140function ctlTableRefreshFooterCalculations(oNodeTABLE) {
25141
25142    var oNodeTBODY = oNodeTABLE.find("tbody");
25143    var oNodeFakeRow = oNodeTBODY.find("tr").first();
25144    var oNodeTFOOT = oNodeTABLE.find("tfoot");
25145
25146    if (oNodeTFOOT.length == 0) {
25147        return;
25148    }
25149
25150    var aFooterData = [];
25151    var iCntVisibleRows = 0;
25152
25153    oNodeFakeRow.find("td").each(function () {
25154        var oData = {};
25155
25156        if (jQuery(this).attr("data-footer-calculations")) {
25157            oData["footer-calculations"] = jQuery(this).attr("data-footer-calculations");
25158            oData["number-max-decimals"] = jQuery(this).attr("data-number-max-decimals");
25159            oData["data-format"] = jQuery(this).attr("data-format");
25160
25161            if (jQuery(this).attr("data-apply-threshold-colors")) {
25162                oData["apply-threshold-colors"] = jQuery(this).attr("data-apply-threshold-colors");
25163            }
25164
25165            if (jQuery(this).attr("data-threshold-style")) {
25166                oData["threshold-style"] = jQuery(this).attr("data-threshold-style");
25167            }
25168
25169            for (var i = 0; i < 3; i++) {
25170                if (jQuery(this).attr("data-threshold-color-" + i)) {
25171                    oData["threshold-color-" + i] = jQuery(this).attr("data-threshold-color-" + i);
25172                }
25173                if (jQuery(this).attr("data-threshold-op-" + i)) {
25174                    oData["threshold-op-" + i] = jQuery(this).attr("data-threshold-op-" + i);
25175                }
25176                if (!isNaN(jQuery(this).attr("data-threshold-value-" + i))) {
25177                    oData["threshold-value-" + i] = Number(jQuery(this).attr("data-threshold-value-" + i));
25178                }
25179            }
25180
25181            switch (oData["footer-calculations"]) {
25182                case "min-max": {
25183                    oData["min"] = null;
25184                    oData["max"] = null;
25185                } break;
25186                case "average":
25187                case "summation": {
25188                    oData["sum"] = 0;
25189                } break;
25190            }
25191
25192            aFooterData.push(oData);
25193        } else {
25194            aFooterData.push(null);
25195        }
25196    });
25197
25198    oNodeTBODY.find("tr").each(function () {
25199
25200        var oNodeTR = jQuery(this);
25201        if (jQuery(this).css("display") == "none") {
25202            return;
25203        }
25204
25205        iCntVisibleRows++;
25206
25207        oNodeTR.find("td").each(function () {
25208            var oNodeTD = jQuery(this);
25209            var iCol = oNodeTD.index();
25210
25211            if (!aFooterData[iCol]) {
25212                return;
25213            }
25214
25215            switch (aFooterData[iCol]["footer-calculations"]) {
25216                case "average":
25217                case "summation": {
25218                    var fValue = Number(oNodeTD.attr("data-value"));
25219
25220                    if (!isNaN(fValue)) {
25221                        if (isNaN(aFooterData[iCol]["sum"])) {
25222                            aFooterData[iCol]["sum"] = 0;
25223                        }
25224                        aFooterData[iCol]["sum"] += fValue;
25225                    }
25226                } break;
25227                case "min-max": {
25228                    var fValue = Number(oNodeTD.attr("data-value"));
25229
25230                    if (!isNaN(fValue)) {
25231                        if (isNaN(aFooterData[iCol]["min"])) {
25232                            aFooterData[iCol]["min"] = fValue;
25233                        } else if (fValue < aFooterData[iCol]["min"]) {
25234                            aFooterData[iCol]["min"] = fValue;
25235                        }
25236
25237                        if (isNaN(aFooterData[iCol]["max"])) {
25238                            aFooterData[iCol]["max"] = fValue;
25239                        } else if (fValue > aFooterData[iCol]["max"]) {
25240                            aFooterData[iCol]["max"] = fValue;
25241                        }
25242                    }
25243
25244                } break;
25245            }
25246        });
25247    });
25248
25249
25250    for (var i = 0; i < aFooterData.length; i++) {
25251        var oFooterData = aFooterData[i];
25252
25253        if (!oFooterData) {
25254            continue;
25255        }
25256
25257        iTdCol = i + 1;
25258
25259        switch (oFooterData["footer-calculations"]) {
25260            case "summation": {
25261                oNodeTFOOT.find("tr td:nth-child(" + iTdCol + ")").attr("data-format", oFooterData["sum"]);
25262                oNodeTFOOT.find("tr td:nth-child(" + iTdCol + ") .ctl-table-cell-data").html(
25263                    __ctlThemeTableFormatCell(oFooterData["sum"], oFooterData));
25264            } break;
25265
25266            case "average": {
25267                var fValue = oFooterData["sum"] / iCntVisibleRows;
25268                oNodeTFOOT.find("tr td:nth-child(" + iTdCol + ")").attr("data-format", fValue);
25269                oNodeTFOOT.find("tr td:nth-child(" + iTdCol + ") .ctl-table-cell-data").html(
25270                    __ctlThemeTableFormatCell(fValue, oFooterData));
25271            } break;
25272            case "min-max": {
25273                oNodeTFOOT.find("tr td:nth-child(" + iTdCol + ")").attr("data-format",
25274                    oFooterData["min"] + " / " + oFooterData["max"]);
25275                oNodeTFOOT.find("tr td:nth-child(" + iTdCol + ") .ctl-table-cell-data").html(
25276                    __ctlThemeTableFormatCell(oFooterData["min"], oFooterData) + " / " +
25277                    __ctlThemeTableFormatCell(oFooterData["max"], oFooterData));
25278            } break;
25279
25280        }
25281    }
25282
25283}
25284
25285
25286function ctlTableMakeColEditable(oNodeEditableCell) {
25287
25288    var oNodeCellData = oNodeEditableCell.find(".ctl-table-cell-data");
25289    var oNodeTD = oNodeEditableCell.closest("td");
25290    var szDataType = oNodeEditableCell.attr("data-type");
25291    var szDataFormat = oNodeEditableCell.attr("data-format");
25292    var szDataInput = oNodeEditableCell.attr("data-input");
25293
25294    if (szDataType === "boolean" && szDataFormat === "SWITCH") {
25295        return;
25296    }
25297
25298    let szHtmlModalContent = '';
25299
25300    switch (szDataType) {
25301        case "boolean": {
25302
25303            oNodeEditableCell.addClass("editing");
25304            oNodeCellData.addClass("w-100");
25305            oNodeCellData.css("width", "auto");
25306
25307            var szHtmlInput = '';
25308
25309            var aData = szDataInput.split("-");
25310            var szOnValue = aData[1];
25311            var szOffValue = aData[2];
25312
25313            szHtmlInput += formFieldsBuildSwitchField({
25314                "data-on-label": "",
25315                "data-on-value": szOnValue,
25316                "data-off-label": "",
25317                "data-off-value": szOffValue
25318            });
25319
25320            oNodeCellData.html(szHtmlInput);
25321        } break;
25322        case "float": {
25323            var szValue = oNodeEditableCell.attr('data-value');
25324
25325            oNodeEditableCell.attr("id", g_oCTLWPStudio.makeCode(10));
25326
25327            let oConfigNumberField = {
25328                "field-name": "table-cell-value",
25329                "wrapper-classes": "mb-0",
25330            };
25331
25332            szHtmlModalContent += formFieldsBuildNumberField(oConfigNumberField, szValue);
25333        } break;
25334        default: {
25335            var szValue = oNodeEditableCell.attr('data-value');
25336
25337            oNodeEditableCell.attr("id", g_oCTLWPStudio.makeCode(10));
25338
25339            var szHtmlInput = '';
25340            var oConfigTextArea = {
25341                "field-name": "table-cell-value",
25342                "wrapper-classes": "mb-0",
25343            };
25344
25345            if (oNodeEditableCell.attr("data-encode-value") == "base64") {
25346                szValue = Base64.decode(szValue);
25347                oConfigTextArea["enable-summernote"] = true;
25348                oConfigTextArea["textarea-height"] = "100";
25349            }
25350
25351            szHtmlModalContent += formFieldsBuildTextAreaField(oConfigTextArea, szValue);
25352        }
25353    }
25354
25355    if (szHtmlModalContent) {
25356        var oModalData = {
25357            modal_title: oNodeTD.find(".ctl-card-content-title").text(),
25358            modal_content: szHtmlModalContent,
25359            position: "centered",
25360            entrance_animation: "animate__slideInUp",
25361            exit_animation: "animate__slideOutDown",
25362            footer_buttons: [
25363                '<button data-td-id="' + oNodeEditableCell.attr("id") + '" class="btn btn-primary ctl-table-action-save-cell-value"><i class="ctl-wp-studio-icons-floppy"></i><span class="btn-text ml-2">' +
25364                g_oCTLThemeTablesLocalizationFront["Save"] + '</span></button>'
25365            ]
25366        };
25367        g_oCTLBootstrapModals.showModal(oModalData);
25368    }
25369}
25370
25371function ctlToggleCardsVisualization(oNodeMainWrapper) {
25372
25373    var oNodeTable = oNodeMainWrapper.find(".ctl-theme-tables-wrapper .ctlgrouptablecols");
25374    var oNodeButton = oNodeMainWrapper.find(".ctl-table-action-toggle-view");
25375    var szBsClasses = oNodeTable.attr("data-bs-classes");
25376
25377    var oNodeTableWrapper = oNodeMainWrapper.find(".ctl-theme-tables-wrapper");
25378    oNodeTableWrapper.scrollTop(0);
25379    oNodeTableWrapper.scrollLeft(0);
25380
25381    if (szBsClasses === undefined || szBsClasses === "") {
25382        szBsClasses = "";
25383
25384        if (oNodeTable.hasClass("table-hover")) {
25385            szBsClasses += 'table-hover ';
25386            oNodeTable.removeClass("table-hover");
25387        }
25388
25389        if (oNodeTable.hasClass("table")) {
25390            szBsClasses += 'table ';
25391            oNodeTable.removeClass("table");
25392        }
25393
25394        if (oNodeTable.hasClass("table-striped")) {
25395            szBsClasses += 'table-striped ';
25396            oNodeTable.removeClass("table-striped");
25397        }
25398
25399        if (oNodeTable.hasClass("table-sm")) {
25400            szBsClasses += 'table-sm ';
25401            oNodeTable.removeClass("table-sm");
25402        }
25403
25404        if (oNodeTable.hasClass("table-bordered")) {
25405            szBsClasses += 'table-bordered ';
25406            oNodeTable.removeClass("table-bordered");
25407        }
25408
25409        oNodeTable.attr("data-bs-classes", szBsClasses);
25410
25411        if (oNodeButton.length > 0) {
25412            oNodeButton.find('i').attr("class", "ctl-wp-studio-icons-table");
25413            oNodeButton.find('.btn-text').text(g_oCTLThemeTablesLocalizationFront["View as table"]);
25414        }
25415    } else {
25416        oNodeTable.addClass(szBsClasses);
25417        oNodeTable.attr("data-bs-classes", "");
25418
25419        if (oNodeButton.length > 0) {
25420            oNodeButton.find('i').attr("class", "ctl-wp-studio-icons-th");
25421            oNodeButton.find('.btn-text').text(g_oCTLThemeTablesLocalizationFront["View as cards"]);
25422        }
25423    }
25424
25425    oNodeMainWrapper.toggleClass("ctl-table-cards");
25426
25427    window.dispatchEvent(new Event('resize'));
25428}
25429
25430function ctlCheckIfForceCardVisualization(oNodeParent = null) {
25431    var width = window.innerWidth;
25432
25433    if (!oNodeParent) {
25434        oNodeParent = jQuery("body");
25435    }
25436
25437    oNodeParent.find(".ctl-theme-table-main-wrapper").each(function () {
25438        if (!jQuery(this).hasClass("ctl-table-force-cards-on-md")) {
25439            return;
25440        }
25441
25442        if (jQuery(this).hasClass("ctl-table-force-cards-on-md") &&
25443            jQuery(this).find(".ctl-table-action-toggle-view").length > 0) {
25444            var oNodeButtonToggleView = jQuery(this).find(".ctl-table-action-toggle-view");
25445
25446            if (width < 768) {
25447                oNodeButtonToggleView.removeClass("d-inline-block");
25448                oNodeButtonToggleView.addClass("d-none");
25449            } else {
25450                oNodeButtonToggleView.addClass("d-inline-block");
25451            }
25452        }
25453
25454        if (width < 768 && !jQuery(this).hasClass("ctl-table-cards")) {
25455            ctlToggleCardsVisualization(jQuery(this));
25456        } else if (width > 767 && jQuery(this).hasClass("ctl-table-cards") &&
25457            !jQuery(this).hasClass("ctl-cards-visualization-lock")) {
25458            ctlToggleCardsVisualization(jQuery(this));
25459        }
25460    });
25461}
25462
25463function ctlResizeScrollableTables(bDelay, iTime, oNodeParent = null) {
25464
25465    if (!oNodeParent) {
25466        oNodeParent = jQuery("body");
25467    }
25468
25469    oNodeParent.find(".ctl-theme-tables-scrollable-wrapper").each(function () {
25470        var oNodeTablesScrollableWrapper = jQuery(this);
25471        var oNodeInnerTable = jQuery(this).find(".ctlgrouptablecols");
25472        var oNodeOuterTable = jQuery(this).closest(".ctl-theme-tables-wrapper").find(".scrollable");
25473
25474        oNodeTablesScrollableWrapper.css("width", "100%");
25475        oNodeInnerTable.css("width", "100%");
25476        oNodeOuterTable.css("width", "100%");
25477    });
25478
25479    if (bDelay) {
25480        setTimeout(function () {
25481            __ctlResizeScrollableTables(oNodeParent);
25482        }, iTime ? iTime : 500);
25483    } else {
25484        __ctlResizeScrollableTables(oNodeParent);
25485    }
25486}
25487
25488function __ctlResizeScrollableTables(oNodeParent = null) {
25489
25490    if (!oNodeParent) {
25491        oNodeParent = jQuery("body");
25492    }
25493
25494    oNodeParent.find(".ctl-theme-tables-scrollable-wrapper").each(function () {
25495
25496        var oNodeTablesScrollableWrapper = jQuery(this);
25497        var oNodeInnerTable = jQuery(this).find(".ctlgrouptablecols");
25498        var oNodeOuterTable = jQuery(this).closest(".ctl-theme-tables-wrapper").find(".scrollable");
25499        var oNodeInnerThead = oNodeInnerTable.find("thead");
25500        var oNodeOuterThead = jQuery(this).closest(".ctl-theme-tables-wrapper").find(".scrollable thead");
25501        var oNodeTableMainWrapper = oNodeTablesScrollableWrapper.closest(".ctl-theme-table-main-wrapper");
25502
25503        if (oNodeTableMainWrapper.hasClass("ctl-table-cards")) {
25504            oNodeInnerTable.css("width", "100%");
25505            oNodeOuterTable.css("width", "100%");
25506            oNodeTablesScrollableWrapper.css("width", "100%");
25507        } else {
25508            var i = 0;
25509            var iTotalWidth = 0;
25510
25511            oNodeInnerThead.find("th").each(function () {
25512                var iTHWidth = jQuery(this).outerWidth();
25513
25514                if (!jQuery(this).hasClass("d-none")) {
25515                    iTotalWidth += iTHWidth;
25516                    jQuery(this).css("width", iTHWidth + "px");
25517                    oNodeOuterThead.find("th").eq(i).css("width", jQuery(this).outerWidth() + "px");
25518                }
25519
25520                i++;
25521            });
25522
25523            oNodeInnerTable.css("width", iTotalWidth + "px");
25524            oNodeOuterTable.css("width", iTotalWidth + "px");
25525            oNodeTablesScrollableWrapper.css("width", iTotalWidth + "px");
25526        }
25527    });
25528}
25529
25530function ctlTableUpdateCardinality(oNodeTableBody) {
25531    var oNodeTableMainWrapper = oNodeTableBody.closest(".ctl-theme-table-main-wrapper");
25532    var bCardinality = parseInt(oNodeTableMainWrapper.attr("data-cardinality")) === 1 ? true : false;
25533
25534    if (!bCardinality) {
25535        return;
25536    }
25537
25538    var n = 1;
25539    oNodeTableBody.find("tr").each(function () {
25540        if (jQuery(this).attr("data-resource-id") === "table-fake-row") {
25541            return;
25542        }
25543        jQuery(this).find(".cardinality .ctl-table-cell-data").text(n + '.');
25544        n++;
25545    });
25546}
25547
25548function ctlTableSortByColumn(oNodeTableBody, iIndexCol, szDataType, szSortMode) {
25549
25550    var aTableHtml = new Array();
25551
25552    var oNodeTable = oNodeTableBody.closest("table");
25553    var oNodeFakeRow = oNodeTableBody.find("tr[data-resource-id=table-fake-row]");
25554    var oClonedNodeFakeRow = oNodeFakeRow.clone();
25555
25556    oNodeFakeRow.remove();
25557
25558    oNodeTableBody.find("tr").each(function () {
25559        aTableHtml.push({
25560            html: jQuery(this).clone(),//[0]+outerHTML,
25561            value: jQuery(this).children().eq(iIndexCol).attr("data-value")
25562        });
25563    });
25564
25565    ctlTableSortByValue(aTableHtml, "value", szDataType, szSortMode);
25566    oNodeTableBody.html("");
25567
25568    for (var i = 0; i < aTableHtml.length; i++) {
25569        oNodeTableBody.append(aTableHtml[i]["html"]);
25570    }
25571
25572    oNodeTableBody.prepend(oClonedNodeFakeRow);
25573
25574    ctlTableUpdateCardinality(oNodeTableBody);
25575    ctlTableRefreshFooterCalculations(oNodeTable);
25576}
25577
25578function ctlTableSearchInTable(oNodeMainWrapper, szKey) {
25579    var oNodeTableBody = oNodeMainWrapper.find("tbody");
25580
25581    szKey = szKey.toLowerCase();
25582
25583    if (szKey === "") {
25584        oNodeTableBody.find("tr").css("display", "table-row");
25585    } else {
25586        oNodeTableBody.find("tr").css("display", "none");
25587    }
25588
25589    oNodeTableBody.find("tr").each(function () {
25590        jQuery(this).find(".ctl-table-cell-data").each(function () {
25591            var szTextData = jQuery(this).text().toLowerCase();
25592            if (szTextData.indexOf(szKey) !== -1) {
25593                jQuery(this).closest("tr").css("display", "table-row");
25594            }
25595        });
25596    });
25597
25598    oNodeTableBody.find("tr").each(function () {
25599        if (jQuery(this).css("display") === "none") {
25600            jQuery(this).find("input[type=checkbox]").prop("checked", false);
25601        }
25602    });
25603
25604    ctlTableUpdateCounter(oNodeMainWrapper);
25605    ctlTableRefreshFooterCalculations(oNodeTableBody.closest("table"));
25606
25607    window.dispatchEvent(new Event('resize'));
25608}
25609
25610function ctlTableChangeStatusRows(oNodeButton) {
25611
25612    var oNodeMainTableWrapper = oNodeButton.closest(".ctl-theme-table-main-wrapper");
25613    var oNodeTableBody = oNodeMainTableWrapper.find("tbody");
25614    var aIdsToUpdate = [];
25615
25616    oNodeTableBody
25617        .find("tr.ctl-table-row .ctl-theme-tables-row-selector input[type=checkbox]:checked")
25618        .each(function () {
25619            aIdsToUpdate.push(jQuery(this).closest("tr").attr("data-resource-id"));
25620        });
25621
25622    if (aIdsToUpdate.length === 0) {
25623        g_oCTLBootstrapModals.alert("",
25624            g_oCTLThemeTablesLocalizationFront["Select at least one row."]);
25625        return;
25626    }
25627
25628    ctlTableAjaxChangeStatusOfPosts(oNodeMainTableWrapper.attr("data-table-id"),
25629        aIdsToUpdate, oNodeButton.val());
25630}
25631
25632function ctlTableDeleteRows(oNodeButton, bCustomDeletion) {
25633
25634    var oNodeMainTableWrapper = oNodeButton.closest(".ctl-theme-table-main-wrapper");
25635    var oNodeTableBody = oNodeMainTableWrapper.find("tbody");
25636    var oNodeTable = oNodeTableBody.closest("table");
25637    var iCntRowsToDelete = 0;
25638
25639    if (oNodeButton.hasClass("confirm")) {
25640        oNodeTableBody
25641            .find("tr.ctl-table-row .ctl-theme-tables-row-selector input[type=checkbox]:checked")
25642            .each(function () {
25643                iCntRowsToDelete++;
25644            });
25645
25646        if (iCntRowsToDelete === 0) {
25647            g_oCTLBootstrapModals.alert("",
25648                g_oCTLThemeTablesLocalizationFront["Select at least one row."]);
25649            return;
25650        }
25651
25652        var szConfirmBtnTitle = g_oCTLThemeTablesLocalizationFront["Yes"];
25653        var id = g_oCTLBootstrapModals.showModal({
25654            modal_content: g_oCTLThemeTablesLocalizationFront["Do you want to delete the selected rows?"],
25655            closeable: false,
25656            position: "centered",
25657            button_close_title: g_oCTLThemeTablesLocalizationFront["No"],
25658            footer_buttons: ['<button class="btn btn-outline-primary" data-confirm="modal">' + szConfirmBtnTitle + '</button>']
25659        });
25660        jQuery('#' + id + ' button[data-confirm="modal"]').on("click", function () {
25661
25662            oNodeTableBody.find("tr.ctl-table-row .ctl-theme-tables-row-selector input[type=checkbox]:checked").each(function () {
25663                var oNodeRow = jQuery(this).closest("tr");
25664                if (bCustomDeletion) {
25665                    jQuery(document).trigger("ctl-table-delete-row", [
25666                        oNodeMainTableWrapper.attr("data-main-class"), oNodeRow]);
25667                } else {
25668                    ctlTableDeleteRow(oNodeRow.find(".btn-delete-row"), false, true);
25669                }
25670            });
25671
25672            var oNodeCheckSelectMultiple = oNodeMainTableWrapper.find(
25673                ".ctl-theme-tables-action-select-all .custom-control-input");
25674            if (oNodeCheckSelectMultiple.length > 0) {
25675                oNodeCheckSelectMultiple.prop("checked", false);
25676            }
25677
25678            ctlTableUpdateCounter(oNodeMainTableWrapper);
25679            ctlTableUpdateCardinality(oNodeTableBody);
25680            ctlTableRefreshFooterCalculations(oNodeTable);
25681            jQuery('#' + id).modal('hide');
25682        });
25683    } else {
25684        oNodeTableBody.find("tr.ctl-table-row input[type=checkbox]:checked").each(function () {
25685            jQuery(this).closest("tr").remove();
25686            iCntRowsToDelete++;
25687        });
25688
25689        if (iCntRowsToDelete === 0) {
25690            ctlTableUpdateCounter(oNodeMainTableWrapper);
25691            ctlTableUpdateCardinality(oNodeTableBody);
25692            ctlTableRefreshFooterCalculations(oNodeTable);
25693        }
25694    }
25695}
25696
25697function ctlTableRemoveNodeRow(oNodeRow) {
25698    var oNodeTable = oNodeRow.closest("table");
25699    var oNodeMainTableWrapper = oNodeRow.closest(".ctl-theme-table-main-wrapper");
25700
25701    oNodeRow.fadeOut("slow", function () {
25702        oNodeRow.remove();
25703        ctlTableUpdateCounter(oNodeMainTableWrapper);
25704        ctlTableUpdateCardinality(oNodeMainTableWrapper.find("tbody"));
25705        ctlTableRefreshFooterCalculations(oNodeTable);
25706        ctlVulcanoResizeLayout();
25707    });
25708}
25709
25710function ctlTableAjaxChangeStatusOfPosts(idTable, aResourceIds, szStatus) {
25711
25712    var idLoading = g_oCTLWPStudio.showLoading("");
25713
25714    var oFormData = {};
25715    oFormData['action'] = 'ctl-wp-studio';
25716    oFormData['execute'] = 'ctl-theme-tables';
25717    oFormData['extension-action'] = 'change-status-of-posts';
25718    oFormData['table-id']     = idTable;
25719    oFormData['resource-ids'] = aResourceIds;
25720    oFormData['post-status']  = szStatus;
25721
25722    jQuery.ajax({
25723        url: g_oCTLWPStudio._oLangCommon["ajaxurl"],
25724        type: "POST",
25725        data: oFormData,
25726        cache: false,
25727        method: 'POST',
25728        success: function (response, textStatus, jqXHR) {
25729            var oResponse = jQuery.parseJSON(response);
25730            if (oResponse.res === true) {
25731                if ( oResponse.alert ){
25732                    g_oCTLWPStudio.closeDlg(idLoading);
25733
25734                    g_oCTLBootstrapModals.alert("", oResponse.alert, function(){
25735                                g_oCTLWPStudio.showLoading("");
25736                                window.location.reload();
25737                            }, g_oCTLThemeTablesLocalizationFront["Continue"]);
25738                }else{
25739                    window.location.reload();
25740                }
25741            } else {
25742                g_oCTLWPStudio.closeDlg(idLoading);
25743                alert(oResponse.desc);
25744            }
25745        },
25746        error: function (jqXHR, textStatus, errorThrown) {
25747            g_oCTLWPStudio.closeDlg(idLoading);
25748            alert(g_oCTLWPStudio._oLangCommon["Ooops! Something Went Wrong!"]);
25749        }
25750    });
25751}
25752
25753function ctlTableAjaxDeleteResource(idTable, idResource, oNodeRow, bMultipleDeletion) {
25754
25755    var idLoading = null;
25756
25757    if (!bMultipleDeletion) {
25758        idLoading = g_oCTLWPStudio.showLoading("");
25759    }
25760
25761    var oFormData = {};
25762    oFormData['action'] = 'ctl-wp-studio';
25763    oFormData['execute'] = 'ctl-theme-tables';
25764    oFormData['extension-action'] = 'delete-resource';
25765    oFormData['table-id'] = idTable;
25766    oFormData['resource-id'] = idResource;
25767    oFormData["get-params"] = g_oCTLWPStudio.getUrlParams();
25768
25769    jQuery.ajax({
25770        url: g_oCTLWPStudio._oLangCommon["ajaxurl"],
25771        type: "POST",
25772        data: oFormData,
25773        cache: false,
25774        method: 'POST',
25775        success: function (response, textStatus, jqXHR) {
25776            g_oCTLWPStudio.closeDlg(idLoading);
25777
25778            var oResponse = jQuery.parseJSON(response);
25779
25780            if (oResponse.res === true) {
25781                ctlTableRemoveNodeRow(oNodeRow);
25782            }
25783        },
25784        error: function (jqXHR, textStatus, errorThrown) {
25785            g_oCTLWPStudio.closeDlg(idLoading);
25786            alert(g_oCTLWPStudio._oLangCommon["Ooops! Something Went Wrong!"]);
25787        }
25788    });
25789}
25790
25791
25792function ctlTableDeleteRow(oNodeButton, bCustomDeletion, bMultipleDeletion) {
25793    var oNodeMainTableWrapper = oNodeButton.closest(".ctl-theme-table-main-wrapper");
25794
25795    let oNodeRow = null;
25796    if (oNodeMainTableWrapper.hasClass("ctl-theme-table-kanban")) {
25797        oNodeRow = oNodeButton.closest(".ctl-theme-table-kanban-row");
25798    } else {
25799        oNodeRow = oNodeButton.closest("tr");
25800    }
25801
25802    var idResource = oNodeRow.attr("data-resource-id");
25803    var szDataType = oNodeButton.attr("data-type");
25804
25805    if (!idResource && !bCustomDeletion) {
25806        ctlTableRemoveNodeRow(oNodeRow);
25807        return;
25808    }
25809
25810    if (oNodeButton.hasClass("confirm") && !bMultipleDeletion) {
25811        var szConfirmBtnTitle = g_oCTLThemeTablesLocalizationFront["Yes"];
25812        var id = g_oCTLBootstrapModals.showModal({
25813            modal_content: g_oCTLThemeTablesLocalizationFront["Do you want to delete this row?"],
25814            closeable: false,
25815            position: "centered",
25816            button_close_title: g_oCTLThemeTablesLocalizationFront["No"],
25817            footer_buttons: ['<button class="btn btn-outline-primary" data-confirm="modal">' + szConfirmBtnTitle + '</button>']
25818        });
25819        jQuery('#' + id + ' button[data-confirm="modal"]').on("click", function () {
25820
25821            if (bCustomDeletion) {
25822                jQuery(document).trigger("ctl-table-delete-row", [
25823                    oNodeMainTableWrapper.attr("data-main-class"), oNodeRow]);
25824            } else if (szDataType == "post-filter" ||
25825                szDataType == "user-filter") {
25826                ctlTableAjaxDeleteResource(
25827                    oNodeMainTableWrapper.attr("data-table-id"),
25828                    idResource, oNodeRow);
25829            } else {
25830                ctlTableRemoveNodeRow(oNodeRow);
25831            }
25832
25833            jQuery('#' + id).modal('hide');
25834        });
25835    } else {
25836        if (bCustomDeletion) {
25837            jQuery(document).trigger("ctl-table-delete-row", [
25838                oNodeMainTableWrapper.attr("data-main-class"), oNodeRow]);
25839        } else if (szDataType == "post-filter" ||
25840            szDataType == "user-filter") {
25841            ctlTableAjaxDeleteResource(
25842                oNodeMainTableWrapper.attr("data-table-id"),
25843                idResource, oNodeRow, bMultipleDeletion);
25844        } else {
25845            ctlTableRemoveNodeRow(oNodeRow);
25846        }
25847    }
25848}
25849
25850function ctlTableUpdateCounter(oNodeMainTableWrapper) {
25851    var oNodeTableBody = oNodeMainTableWrapper.find("tbody");
25852    var oNodeRowCounter = oNodeMainTableWrapper.find(".ctl-theme-tables-row-counter small");
25853
25854    if (oNodeRowCounter.length > 0) {
25855        // remove the fake row
25856        var iCntRows = oNodeTableBody.children().length - 1;
25857
25858        iCntRows = 0;
25859        oNodeTableBody.find(".ctl-table-row").each(function () {
25860            if (jQuery(this).css("display") !== "none") {
25861                iCntRows++;
25862            }
25863        });
25864
25865        if (iCntRows === 0) {
25866            oNodeRowCounter.text(stripslashes(oNodeMainTableWrapper.attr("data-label-no-rows")));
25867        } else if (iCntRows === 1) {
25868            oNodeRowCounter.text(stripslashes(oNodeMainTableWrapper.attr("data-label-one-row")));
25869        } else {
25870            oNodeRowCounter.text(
25871                sprintf(stripslashes(oNodeMainTableWrapper.attr("data-label-more-rows")), iCntRows)
25872            );
25873        }
25874    }
25875}
25876
25877function ctlTableAddRow(oNodeTableBody) {
25878
25879    var oNodeTable = oNodeTableBody.closest("table");
25880    var oNodeMainTableWrapper = oNodeTableBody.closest(".ctl-theme-table-main-wrapper");
25881    var oFakeRow = oNodeTableBody.find("tr[data-resource-id=table-fake-row]");
25882
25883    var oNewRow = oFakeRow.clone();
25884
25885    oNewRow.addClass("ctl-table-row");
25886    oNewRow.attr("data-resource-id", "");
25887    oNewRow.find("td").each(function () {
25888        var oNodeTD = jQuery(this);
25889        var oNodeCellData = jQuery(this).find(".ctl-table-cell-data");
25890
25891        oNodeTD.removeClass("editing");
25892
25893
25894        if (oNodeTD.hasClass("editable") &&
25895            oNodeTD.attr("data-format") === "SWITCH" &&
25896            oNodeTD.attr("data-type") === "boolean") {
25897
25898            var oNodeSwitch = oFakeRow.find(".switch");
25899
25900            oNodeCellData.html(
25901                formFieldsBuildSwitchField({
25902                    "data-on-label": oNodeSwitch.attr("data-on-label"),
25903                    "data-on-value": oNodeSwitch.attr("data-on-value"),
25904                    "data-off-label": oNodeSwitch.attr("data-off-label"),
25905                    "data-off-value": oNodeSwitch.attr("data-off-value")
25906                }, oNodeSwitch.attr("data-off-value"))
25907            );
25908
25909            oNodeTD.attr("data-value", oNodeSwitch.attr("data-off-value"));
25910        } else if (oNodeTD.hasClass("multiple-selection")) {
25911            oNodeCellData.html(
25912                formFieldsBuildCheck({
25913                    "classes": 'ctl-theme-tables-row-selector',
25914                    "field-name": oNodeMainTableWrapper.attr("data-selection-field-name")
25915                },
25916                    "", false)
25917            );
25918        } else if (!oNodeCellData.hasClass("ctl-table-row-actions")) {
25919            oNodeTD.attr("data-value", "");
25920        }
25921    });
25922
25923    oNodeTableBody.append(oNewRow);
25924
25925    var oNodeScrollableWrapper = oNodeTableBody.closest('.ctl-theme-tables-scrollable-wrapper');
25926
25927    if (oNodeScrollableWrapper.length > 0) {
25928        oNodeScrollableWrapper.animate({ scrollTop: oNodeScrollableWrapper[0].scrollHeight }, 'slow');
25929    } else {
25930        var iOffsetTop = oNewRow.offset().top;
25931        jQuery('html,body,.modal').animate({ scrollTop: iOffsetTop }, 'slow');
25932    }
25933
25934    ctlTableUpdateCounter(oNodeMainTableWrapper);
25935    ctlTableUpdateCardinality(oNodeTableBody);
25936    ctlTableRefreshFooterCalculations(oNodeTable);
25937}
25938
25939function ctlTableSortByValue(aData, szProp, szDataType, szOrder) {
25940
25941    var __compare = null;
25942
25943    switch (szDataType) {
25944        case "int":
25945        case "float": {
25946            __compare = function __compareNumber(a, b) {
25947                var fValueA = Number(a[szProp]);
25948                var fValueB = Number(b[szProp]);
25949
25950                if (isNaN(fValueA)) { fValueA = 0; }
25951                if (isNaN(fValueB)) { fValueB = 0; }
25952
25953                if (szOrder === "ASC") {
25954                    if (fValueA < fValueB) { return -1; }
25955                    if (fValueA > fValueB) { return 1; }
25956                } else {
25957                    if (fValueA > fValueB) { return -1; }
25958                    if (fValueA < fValueB) { return 1; }
25959                }
25960                return 0;
25961            };
25962        } break;
25963        default: {
25964            __compare = function __compareString(a, b) {
25965                if (szOrder === "ASC") {
25966                    if (a[szProp] < b[szProp]) { return -1; }
25967                    if (a[szProp] > b[szProp]) { return 1; }
25968                } else {
25969                    if (a[szProp] > b[szProp]) { return -1; }
25970                    if (a[szProp] < b[szProp]) { return 1; }
25971                }
25972                return 0;
25973            };
25974        }
25975    }
25976
25977    aData.sort(__compare);
25978};
25979
25980function __ctlThemeTableFormatCell(value, oItemConfig, oRowData, bFooter = false) {
25981
25982    szDataFormat = bFooter ? oItemConfig["footer-data-format"] : oItemConfig["data-format"];
25983    szDataInput = bFooter ? oItemConfig["footer-data-input"] : oItemConfig["data-input"];
25984
25985    switch (szDataFormat) {
25986        case "HOURS": {
25987            if (value) {
25988                value = Math.round(value / 3600);
25989            } else {
25990                value = 0;
25991            }
25992        } break;
25993        case "MINUTES": {
25994            if (value) {
25995                value = Math.round(value / 60);
25996            } else {
25997                value = 0;
25998            }
25999        } break;
26000        case "HOURS-MINUTES":
26001        case "HOURS-MINUTES-FROM-SECONDS":{
26002            if (value) {
26003                iHours = Math.floor(value / 3600);
26004                iMinutes = Math.floor((value % 3600) / 60);
26005                value = iHours + "h " + iMinutes + "m";
26006            } else {
26007                value = "0h 0m";
26008            }
26009        }break;
26010        case "HOURS-MINUTES-FROM-MINUTES":{
26011            if (value) {
26012                iHours = Math.floor(value / 60);
26013                iMinutes = value % 60;
26014                value = iHours + "h " + iMinutes + "m";
26015            } else {
26016                value = "0h 0m";
26017            }
26018        }break;
26019        case "HOURS-MINUTES": {
26020            if (value) {
26021                iHours = Math.floor(value / 3600);
26022                iMinutes = Math.floor((value % 3600) / 60);
26023                value = iHours + ":" + iMinutes.toString().padStart(2, "0");
26024            } else {
26025                value = "0:00";
26026            }
26027        } break;
26028        case "DD/MM/YYYY": {
26029            if (value) {
26030                value = moment(value, "YYYY-MM-DD").format("DD/MM/YYYY");
26031            }
26032        } break;
26033        case "YYYY-MM-DD HH:MM:SS": {
26034            if (value) {
26035
26036                switch (oItemConfig["data-input"]) {
26037                    case "YYYY-MM-DD HH:mm:ss": {
26038                        timestamp = Number(moment(value).format("X"));
26039                    } break;
26040                    case "timestamp": {
26041                        timestamp = Number(value);
26042                    } break;
26043                    default: {
26044                        timestamp = Number(value);
26045                    }
26046                }
26047
26048                switch (oItemConfig["date-offset"]) {
26049                    case "website": {
26050                        timestamp = timestamp +
26051                            (g_iWebsiteTimeZoneOffset * 3600);
26052
26053                    } break;
26054                    case "user": {
26055                        console.log("to be implemented");
26056                    } break;
26057                }
26058
26059                value = moment.unix(timestamp).format('YYYY-MM-DD HH:mm:ss');
26060            }
26061        } break;
26062        case "DD-MMM-YY": {
26063            value = moment(value).format('DD-MMM-YY');
26064        } break;
26065        case "POST-STATUS": {
26066            oItemConfig["allow-html"] = true;
26067
26068            if (oRowData["resource-type"]) {
26069                var szPostStatus = value;
26070                var oStatusSettings = g_oCPTConfig["statuses"][oRowData["resource-type"]][value];
26071                if (!oStatusSettings) {
26072                    return value;
26073                }
26074
26075                var szStyle = "";
26076                var szStatusLabel = oStatusSettings["status-label"];
26077
26078                if (jQuery("html").attr("lang")) {
26079                    let curLanguage = jQuery("html").attr("lang");
26080
26081                    if (oStatusSettings["status-label-" + curLanguage]) {
26082                        szStatusLabel = oStatusSettings["status-label-" + curLanguage];
26083                    }
26084                }
26085
26086                if (oStatusSettings["color"]) {
26087                    szStyle = ' style="background-color: ' + oStatusSettings["color"] + ';"';
26088                }
26089
26090                value = '<span class="post-status chroma-apply-correction post-status-' + szPostStatus +
26091                    '" ' + szStyle + '>' + szStatusLabel + '</span>';
26092            }
26093        } break;
26094        case "COLOR": {
26095            if (value) {
26096                oItemConfig["allow-html"] = true;
26097                var szStyle = ' style="background-color: ' + value + ';"';
26098                value = '<span class="post-color chroma-apply-correction" ' + szStyle + '>' +
26099                    value + '</span>';
26100            }
26101        } break;
26102        case "USER-STATUS": {
26103            oItemConfig["allow-html"] = true;
26104            var szUserStatus = value;
26105            if (oItemConfig["label-user-status-" + value]) {
26106                value = oItemConfig["label-user-status-" + value];
26107            }
26108            value = '<span class="user-status-' + szUserStatus + '">' +
26109                value + '</span>';
26110        } break;
26111        case "EU-CURRENCY": {
26112            if (!isNaN(value)) {
26113
26114                aTags = __ctlThemeTablesGenerateThresholdTags(oItemConfig, value);
26115
26116				
26117                value = '€ ' + numberFormat(value, oItemConfig["number-max-decimals"], ',', '.');
26118                oItemConfig["allow-html"] = true;
26119
26120                if (aTags.length > 0) {
26121                    value = aTags[0] + value + aTags[1];
26122                }
26123            }
26124        } break;
26125        case "PERCENTAGE": {
26126            if (!isNaN(value)) {
26127                value = parseFloat(value);
26128
26129                aTags = __ctlThemeTablesGenerateThresholdTags(oItemConfig, value);
26130
26131                value = value.toFixed(oItemConfig["number-max-decimals"]);
26132                value += '%';
26133
26134                if (aTags.length > 0) {
26135                    value = aTags[0] + value + aTags[1];
26136                    oItemConfig["allow-html"] = true;
26137                }
26138            }
26139        } break;
26140        case "YT_ID": {
26141            value = '<iframe class="ctl-aspect-ratio" data-aspect-ratio="16:9" width="100%"  src="https://www.youtube.com/embed/' + value + '" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>';
26142            oItemConfig["allow-html"] = true;
26143        } break;
26144        case "GMAPS_GPS_COORDS": {
26145            let aCoords = value.split(" ");
26146            if (aCoords.length === 2) {
26147                value = '<a target="_blank" href="https://maps.google.com/?q=' +
26148                    encodeURI(aCoords[0].trim() + ',' + aCoords[1].trim()) + '">' +
26149                    '<i class="ctl-wp-studio-icons-location"></i>' + value + '</a>';
26150                oItemConfig["allow-html"] = true;
26151            }
26152        } break;
26153        case "GMAPS_URL": {
26154            value = '<a target="_blank" href="https://maps.google.com/?q=' + encodeURI(value) + '">' +
26155                '<i class="ctl-wp-studio-icons-location"></i>' + value + '</a>';
26156            oItemConfig["allow-html"] = true;
26157        } break;
26158        case "NUMBER": {
26159
26160            aTags = __ctlThemeTablesGenerateThresholdTags(oItemConfig, value);
26161            value = numberFormat(value, oItemConfig["number-max-decimals"], ',', '.');
26162
26163            if (aTags.length > 0) {
26164                value = aTags[0] + value + aTags[1];
26165                oItemConfig["allow-html"] = true;
26166            }
26167        } break;
26168        case "NUMBER-ITALIAN": {
26169
26170            aTags = __ctlThemeTablesGenerateThresholdTags(oItemConfig, value);
26171            value = numberFormat(value, oItemConfig["number-max-decimals"], ',', '.');
26172            if (aTags.length > 0) {
26173                value = aTags[0] + value + aTags[1];
26174                oItemConfig["allow-html"] = true;
26175            }
26176
26177        } break;
26178        case "INTEGER": {
26179
26180            aTags = __ctlThemeTablesGenerateThresholdTags(oItemConfig, value);
26181            value = numberFormat(value, 0, ',', '.');
26182
26183            if (aTags.length > 0) {
26184                value = aTags[0] + value + aTags[1];
26185                oItemConfig["allow-html"] = true;
26186            }
26187
26188        } break;
26189        case "POPUP-FULL-TEXT": {
26190            if (value) {
26191                value = '<button type="button" class="btn btn-sm btn-link ctl-theme-tables-action-popup-full-text"><i class="ctl-wp-studio-icons-eye"></i></button>';
26192                oItemConfig["allow-html"] = true;
26193            }
26194        } break;
26195        case "INPUT_FLOAT": {
26196            if (!Number.isNaN(valuehtmlCellData)) {
26197                value = 0;
26198            }
26199
26200            if (!bFooter) {
26201                value = formFieldsBuildTextField({
26202                    "validate-number": true,
26203                    "display": "inline-block",
26204                    "field-name": oItemConfig["field-name"],
26205                    "control-classes": "px-0",
26206                    "wrapper-classes": "m-0",
26207                    "classes": "form-control-sm",
26208                    "align-value": oItemConfig["col-align"],
26209                    "select-on-focus": true,
26210                }, valuehtmlCellData);
26211                oItemConfig["allow-html"] = true;
26212            }
26213        } break;
26214        case "IMAGE": {
26215            if (value && value != "-") {
26216                value = '<img src="' + value + '" class="img-fluid ctl-editor-framework-action-img-preview"/>';
26217                oItemConfig["allow-html"] = true;
26218            }
26219        } break;
26220        case "URL": {
26221            if (value && value != "-") {
26222                value = '<a target="_blank" href="' + value + '">' + value + '</a>';
26223                oItemConfig["allow-html"] = true;
26224            }
26225        } break;
26226        case "PHONE": {
26227            if (value) {
26228                value = '<a href="tel:' + value + '">' + value + '</a>';;
26229                oItemConfig["allow-html"] = true;
26230            }
26231        } break;
26232        case "EMAIL": {
26233            if (value) {
26234                value = '<a href="mailto:' + value + '">' + value + '</a>';;
26235                oItemConfig["allow-html"] = true;
26236            }
26237        } break;
26238        case "LIST": {
26239            if (value) {
26240                let aItems = [];
26241                switch ($szDataInput) {
26242                    case "ARRAY-INT":
26243                    case "ARRAY-STRING": {
26244                        aItems = JSON.parse(Base64.decode(value));
26245                    } break;
26246                    default: {
26247                        aItems = JSON.parse(value);
26248                    }
26249                }
26250
26251                var htmlValue = '<ul class="ctl-theme-tables-list-items px-0 mx-0 list-unstyled">';
26252                for (var k = 0; k < aItems.length; k++) {
26253                    var item = aItems[k];
26254                    htmlValue += '<li>' + item + '</li>';
26255                }
26256                htmlValue += '</ul>';
26257                value = htmlValue;
26258            }
26259
26260            oItemConfig["allow-html"] = true;
26261        } break;
26262        case "INLINE-LIST": {
26263            if (value) {
26264                let aItems = [];
26265                switch ($szDataInput) {
26266                    case "ARRAY-INT":
26267                    case "ARRAY-STRING": {
26268                        aItems = JSON.parse(Base64.decode(value));
26269                    } break;
26270                    default: {
26271                        aItems = JSON.parse(value);
26272                    }
26273                }
26274
26275                var htmlValue = '<ul class="ctl-theme-tables-inline-list-items px-0 mx-0 list-unstyled">';
26276                for (var k = 0; k < aItems.length; k++) {
26277                    var item = aItems[k];
26278                    htmlValue += '<li>' + item + '</li>';
26279                }
26280                htmlValue += '</ul>';
26281                value = htmlValue;
26282            }
26283
26284            oItemConfig["allow-html"] = true;
26285        } break;
26286        case "ATTACHMENTS": {
26287            if (value) {
26288                value = JSON.parse(value);
26289
26290                var htmlValue = '<ul class="ctl-theme-tables-list-attachments px-0 mx-0 list-unstyled">';
26291                for (var k = 0; k < value.length; k++) {
26292                    var url = value[k];
26293                    var filename = url.split('/').pop();
26294                    htmlValue += '<li><a class="" target="_blank" href="' + url + '"><i class="ctl-wp-studio-icons-download-cloud mr-1"></i><span>' + filename + '</span></a></li>';
26295                }
26296                htmlValue += '</ul>';
26297                value = htmlValue;
26298            }
26299
26300            oItemConfig["allow-html"] = true;
26301        } break;
26302        case "GALLERY": {
26303            if (value) {
26304                value = JSON.parse(value);
26305                var htmlValue = '<ul class="ctl-theme-tables-list-gallery px-0 mx-0 list-unstyled">';
26306                for (var k = 0; k < value.length; k++) {
26307                    var url = value[k];
26308                    htmlValue += '<img src="' + url + '" class="img-fluid"/>';
26309                }
26310                htmlValue += '</ul>';
26311                value = htmlValue;
26312            }
26313            oItemConfig["allow-html"] = true;
26314        } break;
26315        case "SWITCH": {
26316            if (value !== "") {
26317                var aData = oItemConfig["data-input"].split("-");
26318                var szOnValue = aData[1];
26319                var szOffValue = aData[2];
26320
26321                value = formFieldsBuildSwitchField({
26322                    "control-classes": "mb-0",
26323                    "data-on-value": szOnValue,
26324                    "data-off-value": szOffValue,
26325                    "readonly": !oItemConfig["editable"]
26326                }, value);
26327                oItemConfig["allow-html"] = true;
26328            } else {
26329                var aData = oItemConfig["data-input"].split("-");
26330                var szOnValue = aData[1];
26331                var szOffValue = aData[2];
26332
26333                if (szOffValue == "empty") {
26334                    szOffValue = "0";
26335
26336                    value = formFieldsBuildSwitchField({
26337                        "control-classes": "mb-0",
26338                        "data-on-value": szOnValue,
26339                        "data-off-value": "0",
26340                        "readonly": !oItemConfig["editable"]
26341                    }, "0");
26342                    oItemConfig["allow-html"] = true;
26343                }
26344            }
26345        } break;
26346    }
26347
26348    return value;
26349}
26350
26351function __ctlThemeTablesGenerateThresholdTags(oItemConfig, fValue) {
26352
26353    if (oItemConfig["apply-threshold-colors"]) {
26354        for (var i = 0; i < 3; i++) {
26355            if (!(oItemConfig["threshold-color-" + i]) ||
26356                !(oItemConfig["threshold-op-" + i])) {
26357                continue;
26358            }
26359
26360            color = oItemConfig["threshold-color-" + i];
26361
26362            szStartTag = '<span style="color: ' + color + ';" class="ctl-threshold-color-' + i + '">';
26363
26364            if (oItemConfig["threshold-style"]) {
26365                switch (oItemConfig["threshold-style"]) {
26366                    case "badge": {
26367                        szStartTag = '<span style="background-color: ' + color + ';" class="ctl-theme-table-threshold-tag chroma-apply-correction ctl-threshold-color-' + i + '">';
26368                    } break;
26369                    case "text": {
26370                        szStartTag = '<span style="color: ' + color + ';" class="ctl-threshold-color-' + i + '">';
26371                    } break;
26372                }
26373            }
26374
26375            szEndTag = '</span>';
26376
26377            fValue = Number(fValue);
26378            switch (oItemConfig["threshold-op-" + i]) {
26379                case "greater-than": {
26380                    if (fValue > oItemConfig["threshold-value-" + i]) {
26381                        return [szStartTag, szEndTag];
26382                    }
26383                } break;
26384                case "greater-equal-than": {
26385                    if (fValue >= oItemConfig["threshold-value-" + i]) {
26386                        return [szStartTag, szEndTag];
26387                    }
26388                } break;
26389                case "equal": {
26390                    if (fValue == oItemConfig["threshold-value-" + i]) {
26391                        return [szStartTag, szEndTag];
26392                    }
26393                } break;
26394                case "lower-equal-than": {
26395                    if (fValue <= oItemConfig["threshold-value-" + i]) {
26396                        return [szStartTag, szEndTag];
26397                    }
26398                } break;
26399                case "lower-than": {
26400                    if (fValue < oItemConfig["threshold-value-" + i]) {
26401                        return [szStartTag, szEndTag];
26402                    }
26403                } break;
26404            }
26405        }
26406    }
26407    return [];
26408}
26409
26410
26411function ctlThemeTablesBuildCSV(oData, aRows) {
26412
26413    var oConfig = oData["table"];
26414    var aHeader = oData["headers"];
26415    var aItemConfig = oData["items"];
26416    var aActions = oData["actions"];
26417
26418    if (!aRows) {
26419        aRows = [];
26420    }
26421
26422    var oDefault = {
26423        'table-title': '',
26424        'table-desc': '',
26425        'head-classes': '',
26426        'striped': true,
26427        'bordered': false,
26428        'hover': true,
26429        'caption': '',
26430        'responsive': true,
26431        'borderless': false,
26432        'small': false,
26433        'max-height': 0,
26434        'hide-if-empty': false,
26435
26436        'print-num-rows': false,
26437        'label-no-rows': '',
26438        'label-one-row': '',
26439        'label-more-rows': '',
26440
26441        'action-position': 'right',
26442        'footer-actions-in-modals': false,
26443        'footer-actions-position': 'bottom',
26444        'footer-actions-horizontal-alignment': 'right',
26445        'action-add-rows': false,
26446        'action-new-row': false,
26447        'action-save-table': false,
26448        'action-search-in-table': false,
26449
26450        'custom-deletion': false,
26451        'confirm-delete': false,
26452
26453        'message-if-empty': '',
26454        'multiple-selection': false,
26455        'show-cardinality': false,
26456        'cardinality-width': '0',
26457        'selection-field-name': '',
26458        'class': '',
26459
26460        'print-table': false,
26461        'maxmize-table': false,
26462    };
26463
26464    oConfig = jQuery.extend(oDefault, oConfig);
26465
26466    szSeparator = ';';
26467
26468
26469
26470    var aCSVTotal = new Array();
26471    var aCSVRow = new Array();
26472
26473    for (var i = 0; i < aHeader.length; i++) {
26474        var oHeader = aHeader[i];
26475        aCSVRow.push(oHeader["label"]);
26476    }
26477    aCSVTotal.push(aCSVRow);
26478
26479    for (var i = 0; i < aRows.length; i++) {
26480        var oRow = aRows[i];
26481        aCSVTotal.push(oRow.items);
26482    }
26483
26484    var csvContent = "data:text/csv;charset=utf-8," + aCSVTotal.map(e => e.join(szSeparator)).join("\r\n");
26485    var encodedUri = encodeURI(csvContent);
26486    var link = document.createElement("a");
26487    link.setAttribute("href", encodedUri);
26488    var szFileName = prompt(g_oCTLThemeTablesLocalizationFront["Type a filename..."]);
26489
26490    if (!szFileName) {
26491        return;
26492    }
26493    link.setAttribute("download", szFileName + ".csv");
26494    document.body.appendChild(link);
26495    link.click();
26496}
26497
26498function ctlThemeTablesBuildTable(idTableWidget, oData, aRows) {
26499
26500    var oConfig = oData["table"];
26501    var aHeader = oData["headers"];
26502    var aItemConfig = oData["items"];
26503    var aActions = oData["actions"];
26504
26505    if (!aRows) {
26506        aRows = [];
26507    }
26508
26509    var html = "";
26510
26511    var oDefault = {
26512        'table-title': '',
26513        'head-classes': '',
26514        'striped': true,
26515        'bordered': false,
26516        'hover': true,
26517        'caption': '',
26518        'responsive': true,
26519        'borderless': false,
26520        'small': false,
26521        'max-height': 0,
26522        'hide-if-empty': false,
26523
26524        'print-num-rows': false,
26525        'label-no-rows': '',
26526        'label-one-row': '',
26527        'label-more-rows': '',
26528        'label-split-post-modal-title': '',
26529
26530        'action-position': 'right',
26531        'action-add-rows': false,
26532        'action-new-row': false,
26533        'action-save-table': false,
26534        'action-search-in-table': false,
26535
26536        'custom-deletion': false,
26537        'confirm-delete': false,
26538
26539        'message-if-empty': '',
26540        'multiple-selection': false,
26541        'show-cardinality': false,
26542        'cardinality-width': '0',
26543        'selection-field-name': '',
26544        'class': '',
26545
26546        'print-table': false,
26547        'maxmize-table': false,
26548
26549        "period-cell-min-width": 0,
26550        "period-create-modal-id": 0,
26551        "period-edit-modal-id": 0,
26552    };
26553
26554    oConfig = jQuery.extend(oDefault, oConfig);
26555
26556    if (!aRows || aRows.length === 0) {
26557        if (oConfig["hide-if-empty"]) {
26558            return html;
26559        }
26560        aRows = [];
26561    }
26562
26563    var szClasses = 'form-group ctl-theme-tables-wrapper';
26564    var szMainWrapperClasses = 'ctl-theme-table-main-wrapper ctl-theme-table-main-wrapper-' + idTableWidget;
26565
26566
26567    if (oConfig['cards-view']) {
26568        szMainWrapperClasses += ' ctl-table-cards';
26569    }
26570
26571    if (oConfig['force-cards-view-on-md']) {
26572        szMainWrapperClasses += ' ctl-table-force-cards-on-md';
26573    }
26574
26575    if (oConfig['cards-distribution']) {
26576        szMainWrapperClasses += ' ctl-table-cards-distribution-' + oConfig['cards-distribution'];
26577    }
26578    if (oConfig['cards-alignment']) {
26579        szMainWrapperClasses += ' ctl-table-cards-alignment-' + oConfig['cards-alignment'];
26580    }
26581
26582    if (oConfig["class"]) {
26583        szMainWrapperClasses += ' ' + oConfig["class"];
26584    }
26585
26586    szMainWrapperClasses += ' ctl-table-calendar-single-selection-mode';
26587
26588    var guid = g_oCTLWPStudio.makeCode(4);
26589    html += '<div id="' + guid + '" data-main-class="' + oConfig["class"] + '" class="' + szMainWrapperClasses + '"';
26590    html += ' data-table-id="' + idTableWidget + '"';
26591    html += ' data-cardinality="' + oConfig['show-cardinality'] + '"';
26592    html += ' data-selection-field-name="' + oConfig["selection-field-name"] + '"';
26593    html += ' data-label-no-rows="' + addslashes(oConfig["label-no-rows"]) + '"';
26594    html += ' data-label-one-row="' + addslashes(oConfig["label-one-row"]) + '"';
26595    html += ' data-label-more-rows="' + addslashes(oConfig["label-more-rows"]) + '"';
26596    html += ' data-label-split-post-modal-title="' + addslashes(oConfig["label-split-post-modal-title"]) + '"';
26597
26598    if (oConfig["period-cell-min-width"]) {
26599        html += ' data-period-cell-min-width="' + oConfig["period-cell-min-width"] + '"';
26600    }
26601
26602    if (oConfig["period-create-modal-id"]) {
26603        html += ' data-period-create-modal-id="' + oConfig["period-create-modal-id"] + '"';
26604    }
26605    if (oConfig["period-edit-modal-id"]) {
26606        html += ' data-period-edit-modal-id="' + oConfig["period-edit-modal-id"] + '"';
26607    }
26608    html += '>';
26609
26610    if (oConfig['table-title']) {
26611        html += '<h3 class="ctl-theme-tables-title">' + oConfig['table-title'] + '</h3>';
26612    }
26613
26614    if (oConfig['table-desc']) {
26615        html += '<div class="ctl-theme-tables-desc">' + oConfig['table-desc'] + '</div>';
26616    }
26617
26618    if (oConfig["message-if-empty"] !== "" && aRows.length == 0) {
26619        html += '<div class="alert alert-warning" role="alert">';
26620        html += oConfig["message-if-empty"];
26621        html += '</div>';
26622        html += '</div>';
26623        return html;
26624    }
26625
26626    var htmlFooterActions = "";
26627
26628    if (oConfig['footer-custom-actions']) {
26629        for (var k = 0; k < oConfig['footer-custom-actions'].length; k++) {
26630            var oConfigButton = oConfig['footer-custom-actions'][k];
26631            htmlFooterActions += formFieldsBuildButtonField(
26632                oConfigButton, oConfigButton["default-value"]);
26633        }
26634    }
26635
26636    if (oConfig['action-add-rows']) {
26637        var oButtonConfig = {
26638            "display": "inline-block",
26639            "icon-class": "ctl-wp-studio-icons-plus",
26640            "classes": "btn-sm btn-add-row"
26641        };
26642
26643        if (oConfig['label-new-row']) {
26644            oButtonConfig["button-title"] = oConfig['label-new-row'];
26645        } else {
26646            oButtonConfig["button-title"] = g_oCTLThemeTablesLocalizationFront["Add row"];
26647        }
26648
26649        htmlFooterActions += formFieldsBuildButtonField(oButtonConfig);
26650    }
26651
26652    if (oConfig['action-new-row']) {
26653        var oButtonConfig = {
26654            "display": "inline-block",
26655            "icon-class": "ctl-wp-studio-icons-plus",
26656            "classes": "btn-sm btn-new-row"
26657        };
26658
26659        if (oConfig['label-new-row']) {
26660            oButtonConfig["button-title"] = oConfig['label-new-row'];
26661        } else {
26662            oButtonConfig["button-title"] = g_oCTLThemeTablesLocalizationFront["New row"];
26663        }
26664
26665        htmlFooterActions += formFieldsBuildButtonField(oButtonConfig);
26666    }
26667
26668    if (oConfig['action-save-table']) {
26669        htmlFooterActions += formFieldsBuildButtonField({
26670            "button-title": g_oCTLThemeTablesLocalizationFront["Save"],
26671            "display": "inline-block",
26672            "icon-class": "ctl-wp-studio-icons-floppy",
26673            "classes": "btn-sm btn-save-table"
26674        });
26675    }
26676
26677    if (aRows.length > 0) {
26678        if (oConfig['multiple-selection']) {
26679
26680            if (oConfig["action-pdf"] && oConfig["pdf-widget-id"]) {
26681                var oButtonConfig = {
26682                    "button-title": g_oCTLThemeTablesLocalizationFront["PDF"],
26683                    "display": "inline-block",
26684                    "icon-class": "ctl-wp-studio-icons-file-pdf",
26685                    "classes": "btn-sm btn-action-pdf-selected-rows btn-table-footer-action",
26686                    "semantic-color": "secondary",
26687                    "data-attr": 'data-table-id="' + idTableWidget +
26688                        '" data-pdf-widget-id="' + oConfig["pdf-widget-id"] + '" =' + oConfig["pdf-multiple-archive"] + '"'
26689                };
26690                htmlFooterActions += formFieldsBuildButtonField(oButtonConfig);
26691            }
26692
26693            if (oConfig["action-generate-invoice"] && oConfig["invoice-maker-widget-id"]) {
26694                var oButtonConfig = {
26695                    "button-title": g_oCTLThemeTablesLocalizationFront["Generate invoice"],
26696                    "display": "inline-block",
26697                    "icon-class": "fa-solid fa-file-invoice-dollar",
26698                    "classes": "btn-sm btn-action-generate-invoice-selected-rows btn-table-footer-action",
26699                    "semantic-color": "secondary",
26700                    "data-attr": 'data-table-id="' + idTableWidget +
26701                        '" data-invoice-maker-widget-id="' + oConfig["invoice-maker-widget-id"] + '"'
26702                };
26703                htmlFooterActions += formFieldsBuildButtonField(oButtonConfig);
26704            }
26705
26706            if (oConfig["action-user-logout"]) {
26707                var oButtonConfig = {
26708                    "button-title": g_oCTLThemeTablesLocalizationFront["Logout"],
26709                    "display": "inline-block",
26710                    "icon-class": "ctl-wp-studio-icons-off",
26711                    "classes": "btn-sm btn-action-user-logout-selected-rows btn-table-footer-action",
26712                    "semantic-color": "secondary",
26713                    "data-attr": 'data-table-id="' + idTableWidget + '"'
26714
26715                };
26716                htmlFooterActions += formFieldsBuildButtonField(oButtonConfig);
26717            }
26718
26719            if (oConfig["action-delete"]) {
26720                var oButtonConfig = {
26721                    "button-title": g_oCTLThemeTablesLocalizationFront["Delete"],
26722                    "display": "inline-block",
26723                    "icon-class": "ctl-wp-studio-icons-trash",
26724                    "classes": "btn-sm btn-delete-selected-rows",
26725                    "semantic-color": "danger"
26726                };
26727
26728                if (oConfig["confirm-delete"]) {
26729                    oButtonConfig["classes"] += ' confirm';
26730                }
26731                htmlFooterActions += formFieldsBuildButtonField(oButtonConfig);
26732            }
26733        }
26734
26735        if (oConfig["export-csv"]) {
26736
26737            let szClasses = "btn-sm btn-table-footer-action ";
26738            if (oConfig["data-type"] === "table-data") {
26739                szClasses += "btn-js-export-csv";
26740            }else{
26741                szClasses += "btn-export-csv";
26742            }
26743
26744            var oButtonConfig = {
26745                "button-title": g_oCTLThemeTablesLocalizationFront["Export CSV"],
26746                "display": "inline-block",
26747                "icon-class": "ctl-wp-studio-icons-download-cloud",
26748                "classes": szClasses,
26749                "semantic-color": "primary"
26750            };
26751            htmlFooterActions += formFieldsBuildButtonField(oButtonConfig);
26752        }
26753
26754        if (oConfig["export-all-data-csv"]) {
26755            var oButtonConfig = {
26756                "button-title": g_oCTLThemeTablesLocalizationFront["Export all data in CSV"],
26757                "display": "inline-block",
26758                "icon-class": "ctl-wp-studio-icons-download-cloud",
26759                "classes": "btn-sm btn-export-all-data-in-csv",
26760                "semantic-color": "primary"
26761            };
26762            htmlFooterActions += formFieldsBuildButtonField(oButtonConfig);
26763        }
26764
26765        if (oConfig["print-table"]) {
26766            var oButtonConfig = {
26767                "button-title": g_oCTLThemeTablesLocalizationFront["Print"],
26768                "display": "inline-block",
26769                "icon-class": "ctl-wp-studio-icons-print",
26770                "classes": "btn-sm",
26771                "semantic-color": "primary",
26772                "selector-to-print": "#" + guid,
26773                "type": "print"
26774            };
26775            htmlFooterActions += formFieldsBuildButtonField(oButtonConfig);
26776        }
26777
26778        if (oConfig["maximize-table"]) {
26779            var oButtonConfig = {
26780                "button-title": g_oCTLThemeTablesLocalizationFront["Maximize"],
26781                "display": "inline-block",
26782                "icon-class": "ctl-wp-studio-icons-resize-full-alt",
26783                "classes": "btn-sm",
26784                "semantic-color": "primary",
26785                "selector-to-maximize": ".ctl-theme-table-main-wrapper-" + idTableWidget,
26786                "type": "maximize"
26787            };
26788            htmlFooterActions += formFieldsBuildButtonField(oButtonConfig);
26789        }
26790
26791        if (oConfig["view-as-cards"]) {
26792            var oButtonConfig = {
26793                "display": "inline-block",
26794                "classes": "btn-sm ctl-table-action-toggle-view",
26795                "semantic-color": "primary"
26796            };
26797
26798            if (oConfig["cards-view"]) {
26799                oButtonConfig["button-title"] = g_oCTLThemeTablesLocalizationFront["View as table"];
26800                oButtonConfig["icon-class"] = "ctl-wp-studio-icons-table";
26801            } else {
26802                oButtonConfig["button-title"] = g_oCTLThemeTablesLocalizationFront["View as cards"];
26803                oButtonConfig["icon-class"] = "ctl-wp-studio-icons-th";
26804            }
26805
26806            htmlFooterActions += formFieldsBuildButtonField(oButtonConfig);
26807        }
26808    }
26809
26810    if (oConfig["refresh-page"]) {
26811        oButtonConfig = {
26812            "button-title": g_oCTLThemeTablesLocalizationFront["Reload"],
26813            "display": "inline-block",
26814            "icon-class": "ctl-wp-studio-icons-ccw",
26815            "classes": "btn-sm",
26816            "semantic-color": "secondary",
26817            "type": "refresh-page"
26818        };
26819        htmlFooterActions += formFieldsBuildButtonField(oButtonConfig);
26820    }
26821
26822    if (htmlFooterActions !== "") {
26823        let szFooterClasses = "table-footer-actions d-print-none";
26824
26825        switch (oConfig["footer-actions-horizontal-alignment"]) {
26826            case "left": {
26827                szFooterClasses += " text-left";
26828            } break;
26829            case "center": {
26830                szFooterClasses += " text-center";
26831            } break;
26832            case "right": {
26833                szFooterClasses += " text-right";
26834            } break;
26835        }
26836
26837        if (!oConfig["footer-actions-in-modals"]) {
26838            szFooterClasses += " ctl-editor-framework-editor-buttons";
26839        }
26840
26841        htmlFooterActions = '<div class="' + szFooterClasses + '">' +
26842            htmlFooterActions + '</div>';
26843    }
26844
26845    if (oConfig["footer-actions-position"] === "top" ||
26846        oConfig["footer-actions-position"] === "both") {
26847        html += htmlFooterActions;
26848    }
26849
26850    html += '<div class="row d-print-none">';
26851
26852    if (oConfig['action-search-in-table']) {
26853        var id = g_oCTLWPStudio.makeCode(4);
26854        html += '<div class="input-group input-group-sm col-12 col-md-6 col-lg-4 mb-3 ctl-theme-tables-search-in-table">';
26855
26856        html += '<div class="input-group-prepend">';
26857        html += '<span class="input-group-text"><i class="ctl-wp-studio-icons-search"></i></span>';
26858        html += '</div>';
26859
26860        html += '<input type="text" class="form-control ctl-theme-tables-action-search-in-table" placeholder="' +
26861            "Search..." +
26862            '" aria-describedby="' + id + '">';
26863        html += '<div class="input-group-append">';
26864        html += '<button class="btn btn-outline-primary btn-cancel-search" type="button" id="' + id +
26865            '"><i class="ctl-wp-studio-icons-cancel"></i></button>';
26866        html += '</div>';
26867        html += '</div>';
26868    }
26869
26870
26871    var aIstantFilters = [];
26872    var bPrintTFoot = false;
26873    var bUseStickyColumnsLeft = false;
26874    var bUseStickyColumnsRight = false;
26875    for (var i = 0; i < aItemConfig.length; i++) {
26876        var oItemConfig = aItemConfig[i];
26877
26878        if (oItemConfig["footer-calculations"] != "none") {
26879            bPrintTFoot = true;
26880        }
26881
26882        if (!(oItemConfig["instant-filters"])) {
26883            aIstantFilters = aIstantFilters.concat(oItemConfig['instant-filters']);
26884        }
26885
26886        if (oItemConfig["sticky-col"]) {
26887            if (oItemConfig["sticky-col"] == "left") {
26888                bUseStickyColumnsLeft = true;
26889            } else if (oItemConfig["sticky-col"] == "right") {
26890                bUseStickyColumnsRight = true;
26891            }
26892        }
26893    }
26894
26895    if (aIstantFilters.length > 0) {
26896        iFilterCnt = 0;
26897        html += '<div class="ctl-table-instant-filters col-12 col-md-6 col-lg-8 mb-3 text-right">';
26898        html += '<label><strong><small>filtro</small></strong></label>';
26899        html += '<ul>';
26900        html += '<li>';
26901        html += '<div class="custom-control custom-radio custom-control-inline">';
26902        html += '<input type="radio" id="ctl-instant-filter-' + iFilterCnt + '" name="ctl-instant-filter-table-' + idTableWidget + '" class="custom-control-input" data-match-value="*" data-comparison="contain" checked>';
26903        html += '<label class="custom-control-label" for="ctl-instant-filter-' + iFilterCnt + '"><small>' +
26904            g_oCTLThemeTablesLocalizationFront["All"] + '</small></label>';
26905        html += '</div>';
26906        html += '</li>';
26907
26908        iFilterCnt++;
26909
26910        for (var i = 0; i < aIstantFilters.length; i++) {
26911            oFilterData = aIstantFilters[i];
26912
26913            szAttributes = 'data-type-filter="' + oFilterData["type"] + '"';
26914
26915            switch (oFilterData["type"]) {
26916                case "string": {
26917                    szAttributes += ' data-comparison="' + oFilterData["string-comparison"] + '"';
26918                    szAttributes += ' data-match-values="' + Base64.encode(JSON.stringify(oFilterData["string-values"])) + '"';
26919                    szAttributes += ' data-match-ci="' + oFilterData["string-ci"] + '"';
26920                } break;
26921            }
26922
26923            html += '<li>';
26924            html += '<div class="custom-control custom-radio custom-control-inline">';
26925            html += '<input type="radio" id="ctl-instant-filter-' + iFilterCnt + '" name="ctl-instant-filter-table-' + idTableWidget + '" class="custom-control-input"' +
26926                szAttributes + ' data-col-id="' + oFilterData["col-id"] + '">';
26927            html += '<label class="custom-control-label" for="ctl-instant-filter-' + iFilterCnt 
26927+ '"><small>' +
26928                oFilterData["label-filter"] + '</small></label>';
26929            html += '</div>';
26930            html += '</li>';
26931            iFilterCnt++;
26932        }
26933        html += '</ul>';
26934        html += '</div>';
26935    }
26936
26937    if (oConfig['print-num-rows']) {
26938
26939        var iCntRows = aRows.length;
26940        var szNumRows = "";
26941
26942        if (iCntRows === 0) {
26943            szNumRows = oConfig["label-no-rows"];
26944        } else if (iCntRows === 1) {
26945            szNumRows = oConfig["label-one-row"];
26946        } else {
26947            szNumRows = sprintf(oConfig["label-more-rows"], iCntRows);
26948        }
26949
26950        var szCounterClasses = '';
26951        if (oConfig['action-search-in-table']) {
26952            szCounterClasses = 'col-12 col-md-6 col-lg-8';
26953        } else {
26954            szCounterClasses = 'col-12';
26955        }
26956
26957        html += '<div class="' + szCounterClasses + ' mb-3 align-self-end text-right">';
26958        html += '<p class="ctl-theme-tables-row-counter d-inline"><small>' + szNumRows + '</small></p>';
26959        html += '</div>';
26960    }
26961    html += '</div>';
26962
26963    html += '<div class="' + szClasses + '">';
26964
26965    var szBootStrapAttributes = "";
26966    var szTableClasses = 'ctlgrouptablecols';
26967    var szTableHeaderClasses = 'scrollable ctlgrouptablecols';
26968    var szTableHeadClasses = '';
26969
26970    if (oConfig['cards-view']) {
26971        szTableClasses += ' ';
26972        szBootStrapAttributes += 'table';
26973    } else {
26974        szTableClasses += ' table';
26975        szTableHeaderClasses += ' table';
26976    }
26977
26978    if (oConfig['striped']) {
26979        if (oConfig['cards-view']) {
26980            szBootStrapAttributes += ' table-striped';
26981        } else {
26982            szTableClasses += ' table-striped';
26983            szTableHeaderClasses += ' table-striped';
26984        }
26985    }
26986
26987    if (oConfig['bordered']) {
26988        if (oConfig['cards-view']) {
26989            szBootStrapAttributes += 'table-bordered';
26990        } else {
26991            szTableClasses += ' table-bordered';
26992            szTableHeaderClasses += ' table-bordered';
26993        }
26994    }
26995
26996    if (oConfig['borderless']) {
26997        if (oConfig['cards-view']) {
26998            szBootStrapAttributes += ' table-borderless';
26999        } else {
27000            szTableClasses += ' table-borderless';
27001            szTableHeaderClasses += ' table-borderless';
27002        }
27003    }
27004
27005    if (oConfig['hover']) {
27006        if (oConfig['cards-view']) {
27007            szBootStrapAttributes += ' table-hover';
27008        } else {
27009            szTableClasses += ' table-hover';
27010        }
27011    }
27012
27013    if (oConfig['small']) {
27014        if (oConfig['cards-view']) {
27015            szBootStrapAttributes += ' table-sm';
27016        } else {
27017            szTableClasses += ' table-sm';
27018            szTableHeaderClasses += ' table-sm';
27019        }
27020    }
27021
27022    if ((oConfig['head-classes'])) {
27023        szTableHeadClasses += ' ' + oConfig['head-classes'];
27024    }
27025
27026    if (oConfig["cardinality-width"] !== "0" && oConfig["cardinality-width"]) {
27027        oConfig["cardinality-width"] += 'px';
27028    } else {
27029        oConfig["cardinality-width"] = "auto";
27030    }
27031
27032    var htmlFoot = "";
27033    htmlFoot += "<tfoot>";
27034    htmlFoot += "<tr>";
27035
27036    var htmlHead = '';
27037    htmlHead += '<thead class="' + szTableHeadClasses + '">';
27038    htmlHead += '<tr>';
27039
27040    if (oConfig["enable-post-sorting"]) {
27041
27042        var szTHClasses = 'text-right tbl-td-post-sorting d-print-none';
27043        if (bUseStickyColumnsLeft) {
27044            szTHClasses += ' ctl-table-th-sticky-col ctl-table-th-sticky-col-left';
27045        }
27046
27047        htmlHead += '<th class="' + szTHClasses + '"';
27048        htmlHead += ' style="width:30px;';
27049        htmlHead += '"';
27050        htmlHead += '>';
27051        htmlHead += '<div class="ctl-table-bg-cell-data"></div>';
27052        htmlHead += '<div class="ctl-table-cell-data"></div>';
27053        htmlHead += '</th>';
27054
27055        htmlFoot += '<td class="d-print-none"><div class="ctl-table-bg-cell-data"></div></td>';
27056    }
27057
27058    if (oConfig['multiple-selection']) {
27059
27060        var szTHClasses = 'text-center multiple-selection d-print-none';
27061        if (bUseStickyColumnsLeft) {
27062            szTHClasses += ' ctl-table-th-sticky-col ctl-table-th-sticky-col-left';
27063        }
27064
27065        htmlHead += '<th class="' + szTHClasses + '">';
27066        htmlHead += '<div class="ctl-table-bg-cell-data"></div>';
27067        htmlHead += '<div class="ctl-table-cell-data">';
27068        htmlHead += formFieldsBuildCheck(
27069            { "classes": 'ctl-theme-tables-action-select-all' }, 1);
27070        htmlHead += '</div>';
27071        htmlHead += '</th>';
27072        htmlFoot += '<td class="d-print-none"><div class="ctl-table-bg-cell-data"></div></td>';
27073    }
27074
27075    if (oConfig['show-cardinality']) {
27076        var szTHClasses = 'ctl-table-th-cell text-right cardinality';
27077        if (bUseStickyColumnsLeft) {
27078            szTHClasses += ' ctl-table-th-sticky-col ctl-table-th-sticky-col-left';
27079        }
27080
27081        htmlHead += '<th class="' + szTHClasses + '"';
27082        htmlHead += ' style="width:' + oConfig["cardinality-width"] + ';';
27083        if (oConfig["cardinality-width"] !== "auto") {
27084            htmlHead += ' min-width:' + oConfig["cardinality-width"] + ';';
27085        }
27086        htmlHead += '"';
27087        htmlHead += '>';
27088        htmlHead += '<div class="ctl-table-bg-cell-data"></div>';
27089        htmlHead += '<div class="ctl-table-cell-data">';
27090        htmlHead += '#';
27091        htmlHead += '</div>';
27092        htmlHead += '</th>';
27093
27094        htmlFoot += '<td><div class="ctl-table-bg-cell-data"></div></td>';
27095    }
27096
27097
27098    if (oConfig['show-post-locks']) {
27099        var szTHClasses = 'text-right post-locks';
27100        if (bUseStickyColumnsLeft) {
27101            szTHClasses += ' ctl-table-th-sticky-col ctl-table-th-sticky-col-left';
27102        }
27103
27104        htmlHead += '<th class="' + szTHClasses + '"';
27105        htmlHead += ' style="width:50px;';
27106        htmlHead += '"';
27107        htmlHead += '>';
27108        htmlHead += '<div class="ctl-table-bg-cell-data"></div>';
27109        htmlHead += '<div class="ctl-table-cell-data">';
27110        htmlHead += '</div>';
27111        htmlHead += '</th>';
27112
27113        htmlFoot += '<td><div class="ctl-table-bg-cell-data"></div></td>';
27114    }
27115
27116    if (aActions.length > 0 &&
27117        (oConfig["action-position"] == "left" || oConfig["action-position"] == "both")) {
27118        htmlHead += __ctlThemeTableFormatTHActions(oConfig, "left");
27119    }
27120
27121    for (var i = 0; i < aHeader.length; i++) {
27122        var htmlHeadAttrs = "";
27123        var oHeader = aHeader[i];
27124        var oItemConfig = aItemConfig[i];
27125
27126        htmlHead += '<th';
27127
27128        htmlHead += ' class="ctl-table-th-cell';
27129        if ((oHeader["classes"])) {
27130            htmlHead += ' ' + oHeader["classes"];
27131        }
27132
27133        if (oItemConfig["sticky-col"]) {
27134            htmlHead += ' ctl-table-th-sticky-col';
27135        }
27136
27137        htmlHead += '"';
27138
27139        htmlHead += ' style="';
27140
27141        if ((oHeader["width"]) &&
27142            oHeader["width"] !== "0%" &&
27143            oHeader["width"] !== "0px") {
27144            htmlHead += ' width: ' + oHeader["width"] + ';';
27145            htmlHeadAttrs += ' data-width="width: ' + oHeader["width"] + '"';
27146        }
27147
27148        if ((oHeader["min-width"]) &&
27149            oHeader["min-width"] !== "0%" &&
27150            oHeader["min-width"] !== "0px") {
27151            htmlHead += ' min-width: ' + oHeader["min-width"] + ';';
27152        }
27153
27154        if ((oHeader["data-type"])) {
27155            htmlHeadAttrs += ' data-type="' + oHeader["data-type"] + '"';
27156        }
27157
27158        if ((oHeader["field-name"])) {
27159            htmlHeadAttrs += ' data-field-name="' + oHeader["field-name"] + '"';
27160        }
27161
27162        htmlHead += '"';
27163
27164        htmlHead += htmlHeadAttrs;
27165
27166        htmlHead += '>';
27167        htmlHead += '<div class="ctl-table-bg-cell-data"></div>';
27168        htmlHead += '<div class="ctl-table-cell-data">';
27169        htmlHead += oHeader["label"];
27170        htmlHead += '</div>';
27171        htmlHead += '</th>';
27172    }
27173
27174    if (aActions.length > 0 &&
27175        (oConfig["action-position"] == "right" || oConfig["action-position"] == "both")) {
27176        htmlHead += __ctlThemeTableFormatTHActions(oConfig, "right");
27177    }
27178
27179    htmlHead += '</tr>';
27180    htmlHead += '</thead>';
27181
27182    if (oConfig['max-height']) {
27183        html += '<div class="ctl-table-used-as-header"><table class="' +
27184            szTableHeaderClasses + '" data-bs-classes="' + szBootStrapAttributes + '">';
27185        html += htmlHead;
27186        html += '</table></div>';
27187        html += '<div class="ctl-theme-tables-scrollable-wrapper" style="max-height:'
27188            + oConfig['max-height'] + 'px;">';
27189    }
27190
27191    html += '<table class="' + szTableClasses + '" data-bs-classe
27191s="' +
27192        szBootStrapAttributes + '">';
27193    if (!oConfig['max-height']) {
27194        if (oConfig['caption'] !== '') {
27195            html += '<caption>' + oConfig['caption'] + '</caption>';
27196        }
27197    }
27198
27199    html += htmlHead;
27200    html += '<tbody>';
27201
27202    html += __ctlThemeTablesBuildFakeRow(oConfig, aItemConfig, aHeader, aActions);
27203    var n = 1;
27204    for (var i = 0; i < aRows.length; i++) {
27205        var oRow = aRows[i];
27206        html += __ctlThemeTablesBuildRow(n, oRow, oConfig, aItemConfig,
27207            aHeader, aActions);
27208        n++;
27209    }
27210    html += '</tbody>';
27211
27212    if (bPrintTFoot) {
27213        if (aActions.length > 0) {
27214            if (oConfig["action-position"] == "left" || oConfig["action-position"] == "both") {
27215                htmlFoot += '<td class="d-print-none"><div class="ctl-table-bg-cell-data"></div></td>';
27216            }
27217        }
27218
27219        for (i = 0; i < aItemConfig.length; i++) {
27220            oItemConfig = aItemConfig[i];
27221
27222            switch (oItemConfig["type"]) {
27223                case "classic": {
27224                    g_szTableFooterDay = "";
27225                    htmlFoot += __ctlThemeTableCreateTableFooter(oItemConfig, aHeader[i],
27226                        g_aTableFooterCalculations[i], aRows);
27227                } break;
27228                case "period": {
27229                    g_szTableFooterDay = "";
27230                    for (var k = 0; k < aDays.length; k++) {
27231                        szDay = aDays[k];
27232                        g_szTableFooterDay = szDay;
27233                        htmlFoot += __ctlThemeTableCreateTableFooter(oItemConfig, aHeader[i], g_aTableFooterCalculations[i], aRows);
27234                    }
27235                }
27236            }
27237
27238            if (oItemConfig["footer-colspan"] && oItemConfig["footer-colspan"] > 1) {
27239                i += oItemConfig["footer-colspan"] - 1;
27240            }
27241        }
27242
27243        if (aActions.length > 0) {
27244            if (oConfig["action-position"] == "right" || oConfig["action-position"] == "both") {
27245                htmlFoot += '<td class="d-print-none"><div class="ctl-table-bg-cell-data"></div></td>';
27246            }
27247        }
27248
27249        htmlFoot += "</tr>";
27250        htmlFoot += "</tfoot>";
27251
27252        html += htmlFoot;
27253    }
27254
27255    html += '</table>';
27256
27257    if ((oConfig['max-height'])) {
27258        html += '</div>';
27259    }
27260
27261    html += '</div>';
27262
27263    if (oConfig["footer-actions-position"] === "bottom" ||
27264        oConfig["footer-actions-position"] === "both") {
27265        html += htmlFooterActions;
27266    }
27267
27268    html += '</div>';
27269
27270    return html;
27271}
27272
27273function __ctlThemeTableFormatTHActions(oConfig, szStickyDirection) {
27274    var htmlHead = "";
27275    szTHClasses = 'text-center table-actions d-print-none';
27276    if (oConfig["action-sticky"]) {
27277        szTHClasses += ' ctl-table-th-sticky-col ctl-table-th-sticky-col-' + szStickyDirection;
27278    }
27279
27280    htmlHead += '<th';
27281    htmlHead += ' class="' + szTHClasses + ' ctl-table-th-cell';
27282    htmlHead += '"';
27283    htmlHead += ' style="';
27284
27285    if (oConfig["actions-width"] &&
27286        oConfig["actions-width"] != "0%" &&
27287        oConfig["actions-width"] != "0px") {
27288
27289        htmlHead += ' width: ' + oConfig["actions-width"] + 'px;';
27290        htmlHead += ' min-width: ' + oConfig["actions-width"] + 'px;';
27291    }
27292
27293    htmlHead += '"';
27294    htmlHead += ' data-width="' + oConfig["actions-width"] + '"';
27295    htmlHead += '>';
27296    htmlHead += '<div class="ctl-table-bg-cell-data"></div>';
27297    htmlHead += '<div class="ctl-table-cell-data">';
27298    htmlHead += oConfig["label-actions"];
27299    htmlHead += '</div>';
27300    htmlHead += '</th>';
27301
27302    return htmlHead;
27303}
27304
27305function __ctlThemeTableCreateTableFooter(oItemConfig, oHeader, oTableFooterCalculations, aRows) {
27306    var htmlFoot = "";
27307
27308    if (!oItemConfig["footer-calculations"]) {
27309        oItemConfig["footer-calculations"] = "none";
27310    }
27311
27312    var szFooterClasses = ' ctl-table-footer-td-display-' + oItemConfig["footer-calculations"];
27313
27314    if (oItemConfig["footer-editable"]) {
27315        szFooterClasses += ' editable';
27316    }
27317
27318    if (oItemConfig["sorting"]) {
27319        szFooterClasses += ' sorting';
27320    }
27321
27322    if (oItemConfig["footer-col-class"]) {
27323        szFooterClasses += ' ' + oItemConfig["footer-col-class"];
27324    }
27325
27326    if (oItemConfig["display"]) {
27327        szFooterClasses += ' d-' + oItemConfig["display"];
27328    }
27329
27330    var value = "";
27331    var htmlCellData = "";
27332    htmlCellData += '<div class="ctl-table-cell-data">';
27333
27334
27335
27336    switch (oItemConfig["footer-calculations"]) {
27337        case "average": {
27338            value = oTableFooterCalculations / count(aRows);
27339            htmlCellData += __ctlThemeTableFormatCell(value, oItemConfig, null, true);
27340        } break;
27341        case "summation": {
27342            value = 0;
27343            if (oTableFooterCalculations) {
27344                value = oTableFooterCalculations;
27345            }
27346            htmlCellData +=
27347                __ctlThemeTableFormatCell(value, oItemConfig, null, true);
27348        } break;
27349        case "min-max": {
27350            value = oTableFooterCalculations["min"] + " / " +
27351                oTableFooterCalculations["max"];
27352
27353            htmlCellData +=
27354                __ctlThemeTableFormatCell(oTableFooterCalculations["min"],
27355                    oItemConfig, null, true) + " / " +
27356                __ctlThemeTableFormatCell(oTableFooterCalculations["max"],
27357                    oItemConfig, null, true);
27358        } break;
27359        case "label": {
27360            if (oTableFooterCalculations) {
27361                htmlCellData += oTableFooterCalculations;
27362            }
27363            szFooterClasses += " ctl-wp-studio-noselect";
27364        } break;
27365        case "php-block": {
27366            htmlCellData += __ctlThemeTableFormatCell(oTableFooterCalculations, oItemConfig, null, true);
27367        } break;
27368    }
27369    htmlCellData += '</div>';
27370
27371    if (oItemConfig["footer-align"]) {
27372        szFooterClasses += " text-" + oItemConfig["footer-align"];
27373    } else {
27374        szFooterClasses += " text-" + oItemConfig["col-align"];
27375    }
27376
27377    if (oItemConfig["sticky-col"]) {
27378        szFooterClasses += " ctl-table-td-sticky-col";
27379    }
27380
27381    htmlFoot += '<td class="' + szFooterClasses + '"';
27382
27383
27384    if (oItemConfig["footer-colspan"] && oItemConfig["footer-colspan"] > 1) {
27385        htmlFoot += ' colspan="' + oItemConfig["footer-colspan"] + '"';
27386    }
27387
27388    if (oItemConfig["field-name"]) {
27389        htmlFoot += ' data-field-name="' + oItemConfig["field-name"] + '"';
27390    }
27391
27392    if (oItemConfig["store-data-value"]) {
27393        if (oItemConfig["allow-html"]) {
27394            htmlFoot += ' data-encode-value="base64" data-value="' + Base64.encode(value) + '"';
27395        } else {
27396            htmlFoot += ' data-encode-value="none" data-value="' + value + '"';
27397        }
27398
27399    }
27400    if (oItemConfig["footer-data-format"]) {
27401        htmlFoot += ' footer-data-format="' + oItemConfig["footer-data-format"] + '"';
27402    }
27403
27404    if (oItemConfig["number-max-decimals"]) {
27405        htmlFoot += ' data-number-max-decimals="' + oItemConfig["number-max-decimals"] + '"';
27406    }
27407
27408    if (oItemConfig["footer-data-input"]) {
27409        htmlFoot += ' footer-data-input="' + oItemConfig["footer-data-input"] + '"';
27410    }
27411
27412    if (oItemConfig["footer-calculations"]) {
27413        htmlFoot += ' data-footer-calculations="' + oItemConfig["footer-calculations"] + '"';
27414    }
27415
27416    if (oItemConfig["data-type"]) {
27417        htmlFoot += ' data-type="' + oItemConfig["data-type"] + '"';
27418    }
27419
27420    htmlFoot += '>';
27421
27422    htmlFoot += '<div class="ctl-table-bg-cell-data"></div>';
27423
27424    if (!oHeader["hide-label-in-cards"]) {
27425        htmlFoot += '<label class="ctl-card-content-title">';
27426        if (g_szTableFooterDay) {
27427            htmlFoot += __ctlThemeTableGetTableHeaderPeriodLabel(
27428                g_szTableFooterDay,
27429                oHeader["label-period"]);
27430        } else {
27431            htmlFoot += oHeader["label"];
27432        }
27433        htmlFoot += '</label>';
27434    }
27435
27436    htmlFoot += htmlCellData;
27437
27438    htmlFoot += "</td>";
27439    return htmlFoot;
27440}
27441
27442function __ctlThemeTableGetTableHeaderPeriodLabel(szDate, szFormat) {
27443    var oMoment = moment(szDate, "YYYY-MM-DD");
27444
27445    var html = "";
27446
27447    if (szDate == moment().format("YYYY-MM-DD")) {
27448        html += '<div class="ctl-table-calendar-header ctl-calendar-day-today">';
27449    } else {
27450        html += '<div class="ctl-table-calendar-header">';
27451    }
27452
27453    switch (szFormat) {
27454        case "Dd": {
27455            szDayLabel = oMoment.format("D");
27456
27457            switch (szDayLabel) {
27458                case "Mon": {
27459                    szDayLabel = g_oCTLThemeTablesLocalizationFront["MON"];
27460                } break;
27461                case "Tue": {
27462                    szDayLabel = g_oCTLThemeTablesLocalizationFront["TUE"];
27463                } break;
27464                case "Wed": {
27465                    szDayLabel = g_oCTLThemeTablesLocalizationFront["WED"];
27466                } break;
27467                case "Thu": {
27468                    szDayLabel = g_oCTLThemeTablesLocalizationFront["THU"];
27469                } break;
27470                case "Fri": {
27471                    szDayLabel = g_oCTLThemeTablesLocalizationFront["FRI"];
27472                } break;
27473                case "Sat": {
27474                    szDayLabel = g_oCTLThemeTablesLocalizationFront["SAT"];
27475                } break;
27476                case "Sun": {
27477                    szDayLabel = g_oCTLThemeTablesLocalizationFront["SUN"];
27478                } break;
27479            }
27480
27481            szDayLabel = '<div class="ctl-table-calendar-day-label">' + szDayLabel + '</div>';
27482
27483            html += szDayLabel + '<div class="ctl-table-calendar-day"><span>' + oMoment.format("j"); + '</span></div>';
27484        } break;
27485        default: {
27486            html += date('d', iTime);
27487        }
27488    }
27489
27490    html += '</div>';
27491
27492    return html;
27493}
27494
27495function __ctlThemeTableUpdatePeriod(oNodeMainWrapper, iDirection, bSubmit, szCurDate = null) {
27496
27497    var oNodeControls = oNodeMainWrapper.find(".ctl-table-calendar-control
27497s");
27498
27499    if (szCurDate == null) {
27500        szCurDate = oNodeControls.find('input[name=cdate]').val();
27501    }
27502    var szPeriod = oNodeControls.find('select[name=period]').val();
27503
27504    var szStartDate = "";
27505    var szEndDate = "";
27506
27507    switch (szPeriod) {
27508        case "gantt": {
27509            szEndDate = szStartDate = szCurDate = moment().format("YYYY-MM-DD");
27510        } break;
27511        case "month": {
27512            var oMoment = moment(szCurDate, "YYYY-MM-DD");
27513            if (iDirection != 0) {
27514                oMoment.add(iDirection, 'months');
27515            }
27516            szCurDate = oMoment.format("YYYY-MM-DD");
27517
27518            szStartDate = oMoment.startOf('month').format("YYYY-MM-DD");
27519            szEndDate = oMoment.endOf('month').format("YYYY-MM-DD");
27520        } break;
27521        case "day": {
27522            var oMoment = moment(szCurDate, "YYYY-MM-DD");
27523            if (iDirection != 0) {
27524                oMoment.add(iDirection, 'days');
27525            }
27526            szStartDate = szEndDate = szCurDate = oMoment.format("YYYY-MM-DD");
27527        } break;
27528        case "week": {
27529            var oMoment = moment(szCurDate, "YYYY-MM-DD");
27530            if (iDirection != 0) {
27531                oMoment.add(iDirection, 'weeks');
27532            }
27533            szCurDate = oMoment.format("YYYY-MM-DD");
27534
27535            szStartDate = oMoment.startOf('isoWeek').format("YYYY-MM-DD");
27536            szEndDate = oMoment.endOf('isoWeek').format("YYYY-MM-DD");
27537        } break;
27538    }
27539
27540    oNodeControls.find('input[name=cdate]').val(szCurDate);
27541    oNodeControls.find('input[name=cdate-gfx]').val(moment(szCurDate, "YYYY-MM-DD").format("DD/MM/YYYY"));
27542
27543    oNodeControls.find('input[name=cstart]').val(szStartDate);
27544    oNodeControls.find('input[name=cstart-gfx]').val(moment(szStartDate, "YYYY-MM-DD").format("DD/MM/YYYY"));
27545    oNodeControls.find('input[name=cend]').val(szEndDate);
27546    oNodeControls.find('input[name=cend-gfx]').val(moment(szEndDate, "YYYY-MM-DD").format("DD/MM/YYYY"));
27547
27548    if (bSubmit) {
27549        oNodeControls.find('.ctl-table-calendar-action-submit').click();
27550    }
27551}
27552
27553function ctlThemeTableAjaxRefreshTable(oNodeMainWrapper) {
27554    if (!oNodeMainWrapper || oNodeMainWrapper.length == 0) {
27555        return;
27556    }
27557
27558    let idTableWidget = oNodeMainWrapper.attr("data-table-id");
27559
27560    var oFormData = {};
27561    oFormData['action'] = 'ctl-wp-studio';
27562    oFormData['execute'] = 'ctl-theme-tables';
27563    oFormData['extension-action'] = 'ajax-refresh-table';
27564    oFormData['table-id'] = idTableWidget;
27565    oFormData["get-params"] = g_oCTLWPStudio.getUrlParams();
27566
27567    var idLoading = g_oCTLWPStudio.showLoading("");
27568
27569    jQuery.ajax({
27570        url: g_oCTLWPStudio._oLangCommon["ajaxurl"],
27571        type: "POST",
27572        data: oFormData,
27573        cache: false,
27574        method: 'POST',
27575        success: function (response, textStatus, jqXHR) {
27576            var oResponse = JSON.parse(response);
27577            g_oCTLWPStudio.closeDlg(idLoading);
27578
27579            if (oResponse.res === true) {
27580                oNodeMainWrapper.replaceWith(oResponse.html);
27581
27582                oNodeMainWrapper = jQuery('.ctl-theme-table-main-wrapper-' + idTableWidget);
27583
27584                wpdk_do_action("ctl-theme-bootstrap-modals-show-modal", oNodeMainWrapper.parent());
27585                ctlVulcanoResizeLayout();
27586                
27587                __ctlThemeTableSetAutoRefresh(jQuery('.ctl-theme-table-main-wrapper-' + idTableWidget).find('.ctl-table-auto-refresh'));
27588
27589            } else if (oResponse.desc) {
27590                alert(oResponse.desc);
27591            } else {
27592                alert(g_oCTLWPStudio._oLangCommon["Ooops! Something Went Wrong!"]);
27593            }
27594        },
27595        error: function (jqXHR, textStatus, errorThrown) {
27596            g_oCTLWPStudio.closeDlg(idLoading);
27597            alert(g_oCTLWPStudio._oLangCommon["Ooops! Something Went Wrong!"]);
27598        }
27599    });
27600}
27601
27602function __ctlThemeTableMassiveOperations(oNodeButton) {
27603    var oNodeMainTableWrapper = oNodeButton.closest(".ctl-theme-table-main-wrapper");
27604    var oNodeTableBody = oNodeMainTableWrapper.find("tbody");
27605    var idModal = oNodeButton.attr("data-modal-id");
27606
27607    var aIds = [];
27608
27609    oNodeTableBody
27610        .find("tr.ctl-table-row .ctl-theme-tables-row-selector input[type=checkbox]:checked")
27611        .each(function () {
27612            var oNodeRow = jQuery(this).closest("tr");
27613            var idResource = oNodeRow.attr("data-resource-id");
27614            aIds.push(idResource);
27615        });
27616
27617    if (aIds.length == 0) {
27618        g_oCTLBootstrapModals.alert("", g_oCTLThemeTablesLocalizationFront["You must select at least one row!"]);
27619        return;
27620    }
27621
27622    g_oCTLBootstrapModals.loadModal(idModal, { "resource-id": aIds });
27623}
27624
27625function __ctlThemeTableSetAutoRefresh(oNodeSelect, bChanged = false) {
27626    var url = null;
27627    var idRefreshInterval = oNodeSelect.attr("data-refresh-interval");
27628
27629    if (idRefreshInterval) {
27630        clearTimeout(idRefreshInterval);
27631    }
27632
27633    let idTableWidget = oNodeSelect.attr("data-table-id");
27634
27635    if(!bChanged){
27636        let iGetParamsAutoRefresh = g_oCTLWPStudio.getUrlParam("autorefresh-" + idTableWidget);
27637        if (iGetParamsAutoRefresh) {
27638            oNodeSelect.val(iGetParamsAutoRefresh);
27639        }
27640    }else{
27641        jQuery('.ctl-theme-table-main-wrapper-' + idTableWidget).find('.ctl-table-auto-refresh').val(oNodeSelect.val());
27642    }
27643
27644    oNodeSelect.removeAttr("data-refresh-interval");
27645
27646    let iRefreshTime  = Number(oNodeSelect.val());
27647
27648    if (iRefreshTime > 0) {
27649        idRefreshInterval = setTimeout(function () {
27650            ctlThemeTableAjaxRefreshTable(jQuery('.ctl-theme-table-main-wrapper-' + idTableWidget));
27651        }, iRefreshTime);
27652
27653        oNodeSelect.attr("data-refresh-interval", idRefreshInterval);
27654
27655        url = g_oCTLWPStudio.addParameterToUrl(window.location.href, "autorefresh-" + idTableWidget, oNodeSelect.val());
27656
27657        if (history.pushState) {
27658            history.pushState(null, null, url);
27659        }
27660    } else {
27661        url = g_oCTLWPStudio.removeParameterFromUrl(window.location.href, "autorefresh-" + idTableWidget);
27662    }
27663
27664    if (history.pushState) {
27665        history.pushState(null, null, url);
27666    }
27667}
27668
27669function __ctlThemeTablesBuildFakeRow(oConfig, aItemConfig, aHeader, aActions) {
27670    var aFakeItems = [];
27671
27672    for (var i = 0; i < aItemConfig.length; i++) {
27673        switch (aItemConfig["data-input"]) {
27674            case "bool-true-false": {
27675                aFakeItems.push("false");
27676            } break;
27677            case "bool-TRUE-FALSE": {
27678                aFakeItems.push("FALSE");
27679            } break;
27680            case "bool-1-0": {
27681                aFakeItems.push("0");
27682            } break;
27683            case "bool-yes-no": {
27684                aFakeItems.push("no");
27685            } break;
27686            case "bool-YES-NO": {
27687                aFakeItems.push("NO");
27688            } break;
27689            case "double":
27690            case "float":
27691            case "integer": {
27692                aFakeItems.push("0");
27693            } break;
27694            case "YYYY-MM-DD": {
27695                aFakeItems.push("0000-00-00");
27696            } break;
27697            default: {
27698                aFakeItems.push("");
27699            }
27700        }
27701    }
27702
27703    return __ctlThemeTablesBuildRow(0, {
27704        "resource-id": "table-fake-row",
27705        "items": aFakeItems
27706    }, oConfig, aItemConfig, aHeader, aActions);
27707}
27708
27709function __ctlThemeTablesBuildRow(n, oRow, oConfig, aItemConfig,
27710    aHeader, aActions) {
27711    var aReferrals = {};
27712    var aItems = oRow["items"];
27713
27714    for (var i = 0; i < aItems.length; i++) {
27715        var oItemConfig = aItemConfig[i];
27716        if ((oItemConfig["store-data-value"]) && oItemConfig["referral-alias"]) {
27717            aReferrals[oItemConfig["referral-alias"]] = aItems[i];
27718        }
27719    }
27720
27721    var html = "";
27722
27723    html += '<tr';
27724
27725    var szRowClasses = "";
27726
27727    if (oRow["resource-id"] !== "table-fake-row") {
27728        szRowClasses += ' ctl-table-row';
27729
27730        if (oRow["gantt-info"]) {
27731            szRowClasses += " ctl-table-row-gantt";
27732            html += ' data-gantt="' + Base64.encode(JSON.stringify(oRow["gantt-info"])) + '"';
27733        }
27734    }
27735
27736    szRowClasses = szRowClasses.trim();
27737
27738    if (szRowClasses) {
27739        html += ' class="' + szRowClasses + '"';
27740    }
27741
27742    if (oRow["resource-id"]) {
27743        html += ' data-resource-id="' + oRow["resource-id"] + '"';
27744    }
27745    html += '>';
27746
27747    var htmlActions = "";
27748    if (aActions.length > 0) {
27749        htmlActions += '<td class="text-center ctl-table-td-actions d-print-none';
27750        if (oConfig["action-sticky"]) {
27751            htmlActions += ' ctl-table-th-sticky-col ctl-table-th-sticky-col-';
27752            if ((oConfig["action-position"] == "left" || oConfig["action-position"] == "both")) {
27753                htmlActions += 'left';
27754            } else {
27755                htmlActions += 'right';
27756            }
27757        }
27758
27759        htmlActions += '">';
27760
27761        htmlActions += '<div class="ctl-table-bg-cell-data"></div>';
27762        htmlActions += '<div class="ctl-table-cell-data ctl-table-row-actions ctl-table-row-actions-size-' +
27763            aActions.length + '"';
27764
27765        htmlActions += ' style="width: ' + oConfig["actions-width"] + 'px"';
27766
27767        htmlActions += '>';
27768
27769        for (var i = 0; i < aActions.length; i++) {
27770            var oAction = aActions[i];
27771
27772            switch (oAction["type"]) {
27773                case "user-logout": {
27774                    $htmlActions += '<button class="btn btn-action-user-logout-row btn-sm btn-outline-primary"><i class="ctl-wp-studio-icons-off"></i></button>';
27775                } break;
27776                case "split-post": {
27777                    $htmlActions += '<button class="btn btn-action-split-post-row btn-sm btn-outline-primary"><i class="fa-solid fa-file-half-dashed"></i></button>';
27778                } break;
27779                case "pdf": {
27780                    $htmlActions += '<button data-widget-id="' + oAction["pdf-widget-id"] + '" class="btn btn-action-pdf-row btn-sm btn-outline-primary "><i class="ctl-wp-studio-icons-file-pdf"></i></button>';
27781                } break;
27782                case "generate-invoice": {
27783                    $htmlActions += '<button data-widget-id="' + oAction["invoice-maker-widget-id"] + '" class="btn btn-action-generate-invoice-row btn-sm btn-outline-primary "><i class="fa-solid fa-file-invoice-dollar"></i></button>';
27784                } break;
27785                case "author": {
27786                    if (oAction["page"] && oRow["author-id"] && !oRow["invalid-author-role"]) {
27787                        var szUrl = g_oCTLWPStudio.addParameterToUrl(
27788                            oAction["page"],
27789                            oAction["referral"],
27790                            oRow["author-id"]);
27791
27792                        for (var key in aReferrals) {
27793                            value = aReferrals[key];
27794                            szUrl += '&' + key + '=' + encodeURI(value);
27795                        }
27796
27797                        htmlActions += '<a target="' + oAction["target"] + '" class="ctl-show-loading btn btn-outline-primary btn-sm ctl-theme-tables-action-view-record-author ctl-table-row-action" href="' + szUrl + '">';
27798
27799                        if (!oConfig["action-author-view-icon"]) {
27800                            htmlActions += '<i class="ctl-wp-studio-icons-user"></i>';
27801                        } else {
27802                            htmlActions += '<i class="' + oConfig["action-author-view-icon"] + '"></i>';
27803                        }
27804
27805                        htmlActions += '</a>';
27806                    }
27807                } break;
27808                case "author2": {
27809                    if (oAction["page"] && oRow["author-id"] && !oRow["invalid-author2-role"]) {
27810                        var szUrl = g_oCTLWPStudio.addParameterToUrl(
27811                            oAction["page"],
27812                            oAction["referral"],
27813                            oRow["author-id"]);
27814
27815                        for (var key in aReferrals) {
27816                            value = aReferrals[key];
27817                            szUrl += '&' + key + '=' + encodeURI(value);
27818                        }
27819
27820                        htmlActions += '<a target="' + oAction["target"] + '" class="ctl-show-loading btn btn-outline-primary btn-sm ctl-theme-tables-action-view-record-author2 ctl-table-row-action" href="' + szUrl + '">';
27821
27822                        if (!oConfig["action-author2-view-icon"]) {
27823                            htmlActions += '<i class="ctl-wp-studio-icons-user"></i>';
27824                        } else {
27825                            htmlActions += '<i class="' + oConfig["action-author2-view-icon"] + '"></i>';
27826                        }
27827
27828                        htmlActions += '</a>';
27829                    }
27830                } break;
27831                case "derivate": {
27832                    if (oAction["page"] && oRow["derivate-id"]) {
27833                        var szUrl = g_oCTLWPStudio.addParameterToUrl(
27834                            oAction["page"],
27835                            oAction["referral"],
27836                            oRow["derivate-id"]);
27837
27838                        for (var key in aReferrals) {
27839                            value = aReferrals[key];
27840                            szUrl += '&' + key + '=' + encodeURI(value);
27841                        }
27842
27843                        htmlActions += '<a target="' + oAction["target"] + '" class="ctl-show-loading btn btn-outline-primary btn-sm ctl-theme-tables-action-view-record-derivate ctl-table-row-action" href="' + szUrl + '">';
27844
27845                        if (!oConfig["action-derivate-view-icon"]) {
27846                            htmlActions += '<i class="fa-solid fa-clone"></i>';
27847                        } else {
27848                            htmlActions += '<i class="' + oConfig["action-derivate-view-icon"] + '"></i>';
27849                        }
27850
27851                        htmlActions += '</a>';
27852                    }
27853                } break;
27854                case "parent": {
27855                    if (oAction["page"] && oRow["parent-id"] && !oRow["ivalid-parent-post-type"]) {
27856                        var szUrl = g_oCTLWPStudio.addParameterToUrl(
27857                            oAction["page"],
27858                            oAction["referral"],
27859                            oRow["parent-id"]);
27860
27861                        for (var key in aReferrals) {
27862                            value = aReferrals[key];
27863                            szUrl += '&' + key + '=' + encodeURI(value);
27864                        }
27865
27866                        htmlActions += '<a target="' + oAction["target"] + '" class="ctl-show-loading btn btn-outline-primary btn-sm ctl-theme-tables-action-view-record-parent ctl-table-row-action" href="' + szUrl + '">';
27867
27868                        if (!oConfig["action-parent-view-icon"]) {
27869                            htmlActions += '<i class="ctl-wp-studio-icons-reply"></i>';
27870                        } else {
27871                            htmlActions += '<i class="' + oConfig["action-parent-view-icon"] + '"></i>';
27872                        }
27873
27874                        htmlActions += '</a>';
27875                    }
27876                } break;
27877                case "parent2": {
27878                    if (oAction["page"] && oRow["parent-id"] && !oRow["ivalid-parent2-post-type"]) {
27879                        var szUrl = g_oCTLWPStudio.addParameterToUrl(
27880                            oAction["page"],
27881                            oAction["referral"],
27882                            oRow["parent-id"]);
27883
27884                        for (var key in aReferrals) {
27885                            value = aReferrals[key];
27886                            szUrl += '&' + key + '=' + encodeURI(value);
27887                        }
27888
27889                        htmlActions += '<a target="' + oAction["target"] + '" class="ctl-show-loading btn btn-outline-primary btn-sm ctl-theme-tables-action-view-record-parent2 ctl-table-row-action" href="' + szUrl + '">';
27890
27891                        if (!oConfig["action-parent2-view-icon"]) {
27892                            htmlActions += '<i class="ctl-wp-studio-icons-reply"></i>';
27893                        } else {
27894                            htmlActions += '<i class="' + oConfig["action-parent2-view-icon"] + '"></i>';
27895                        }
27896
27897                        htmlActions += '</a>';
27898                    }
27899                } break;
27900                case "user-from-post-author": {
27901                    if (oAction["page"] && oRow["user-id"]) {
27902                        var szUrl = g_oCTLWPStudio.addParameterToUrl(
27903                            oAction["page"],
27904                            oAction["referral"],
27905                            oRow["user-id"]);
27906
27907                        for (var key in aReferrals) {
27908                            value = aReferrals[key];
27909                            szUrl += '&' + key + '=' + encodeURI(value);
27910                        }
27911
27912                        htmlActions += '<a target="' + oAction["target"] + '" class="ctl-show-loading btn btn-outline-primary btn-sm ctl-theme-tables-action-view-record-user-from-post-author ctl-table-row-action" href="' + szUrl + '">';
27913
27914                        if (!oConfig["action-user-from-post-author-view-icon"]) {
27915                            htmlActions += '<i class="ctl-wp-studio-icons-user"></i>';
27916                        } else {
27917                            htmlActions += '<i class="' + oConfig["action-user-from-post-author-view-icon"] + '"></i>';
27918                        }
27919
27920                        htmlActions += '</a>';
27921                    }
27922                } break;
27923                case "view": {
27924
27925                    var htmlIcon = "";
27926                    if (!oConfig["action-view-icon"]) {
27927                        if (oConfig["user-filter"]) {
27928                            htmlIcon = '<i class="ctl-wp-studio-icons-user"></i>';
27929                        } else {
27930                            htmlIcon = '<i class="ctl-wp-studio-icons-doc-text"></i>';
27931                        }
27932                    } else {
27933                        htmlIcon = '<i class="' + oConfig["action-view-icon"] + '"></i>';
27934                    }
27935
27936                    if ((oAction["page"])) {
27937                        var szUrl = g_oCTLWPStudio.addParameterToUrl(
27938                            oAction["page"],
27939                            oAction["referral"],
27940                            oRow["resource-id"]);
27941
27942                        for (var key in aReferrals) {
27943                            value = aReferrals[key];
27944                            szUrl += '&' + key + '=' + encodeURI(value);
27945                        }
27946
27947                        htmlActions += '<a target="' + oAction["target"] + '" class="ctl-show-loading btn btn-outline-primary btn-sm ctl-theme-tables-action-view-record" href="' + szUrl + '">';
27948
27949                        htmlActions += htmlIcon;
27950
27951                        htmlActions += '</a>';
27952                    } else if (oAction["modal-id"]) {
27953
27954                        var id = g_oCTLWPStudio.makeCode(6)
27955                        htmlActions += '<form class="d-none layout-' + id + '">';
27956                        htmlActions += '<input type="hidden" name="' + oAction["referral"] + '" value="' + oRow["resource-id"] + '">';
27957                        htmlActions += '</form>';
27958                        htmlActions += '<button data-modal-extra-data="' + id + '" data-modal-id="' + oAction["modal-id"] + '" class="btn btn-outline-primary btn-action-row-open-modal btn-sm ctl-table-row-action" type="button">';
27959                        htmlActions += htmlIcon;
27960                        htmlActions += '</button>';
27961                    } else {
27962                        htmlActions += '<button class="btn btn-outline-primary btn-sm ctl-theme-tables-action-view-record ctl-table-row-action" type="button">';
27963                        htmlActions += htmlIcon;
27964                        htmlActions += '</button>';
27965                    }
27966                } break;
27967                case "delete": {
27968                    if (!oRow["readonly"] && oRow["allow-deletion"]) {
27969                        htmlActions += '<button class="btn btn-outline-danger btn-sm btn-delete-row ctl-table-row-action';
27970                        htmlActions += (oAction["confirm"] ? ' confirm' : '');
27971                        htmlActions += (oConfig["custom-deletion"] ? ' custom-deletion' : '');
27972                        htmlActions += '"';
27973                        htmlActions += ' data-type="' + oConfig['data-type'] + '"';
27974                        htmlActions += ' type="button">';
27975                        htmlActions += '<i class="ctl-wp-studio-icons-trash"></i>';
27976
27977                        if (oConfig["action-delete-label"]) {
27978                            $htmlActions += '<span class="btn-text ml-2">' + oConfig["action-delete-label"] + '</span>';
27979                        }
27980
27981                        htmlActions += '</button>';
27982                    }
27983                } break;
27984            }
27985
27986        }
27987        htmlActions += '</div>';
27988        htmlActions += '</td>';
27989    }
27990
27991    if (oConfig["enable-post-sorting"]) {
27992        html += '<td class="text-right tbl-td-post-sorting d-print-none">';
27993        html += '<div class="ctl-table-bg-cell-data"></div>';
27994        html += '<div class="ctl-table-cell-data">';
27995        html += '<i class="ctl-wp-studio-icons-arrow-combo"></i>';
27996        html += '</div>';
27997        html += '</td>';
27998    }
27999
28000    if (oConfig['multiple-selection']) {
28001        html += '<td class="text-center multiple-selection d-print-none">';
28002        html += '<div class="ctl-table-bg-cell-data"></div>';
28003        html += '<div class="ctl-table-cell-data">';
28004        if (!oRow["readonly"]) {
28005            html += formFieldsBuildCheck(
28006                {
28007                    "classes": 'ctl-theme-tables-row-selector',
28008                    "field-name": oConfig['selection-field-name']
28009                }, oRow["resource-id"]);
28010        }
28011        html += '</div>';
28012        html += '</td>';
28013    }
28014
28015    if (oConfig['show-cardinality']) {
28016        html += '<td class="text-right cardinality ctl-table-td-cell" data-value="' + n + '" data-csv-exported-value="cell-value">';
28017        html += '<div class="ctl-table-bg-cell-data"></div>';
28018        html += '<div class="ctl-table-cell-data">';
28019        html += n + ".";
28020        html += '</div>';
28021        html += '</td>';
28022    }
28023
28024    if (oConfig['show-post-locks']) {
28025        html += '<td class="text-right post-locks">';
28026        html += '<div class="ctl-table-bg-cell-data"></div>';
28027        html += '<div class="ctl-table-cell-data">';
28028        if (!oRow["readonly"]) {
28029            html += '<i class="ctl-wp-studio-icons-lock-open"><i>';
28030        } else {
28031            html += '<i class="ctl-wp-studio-icons-lock"><i>';
28032        }
28033        html += '</div>';
28034        html += '</td>';
28035    }
28036
28037    if (oConfig["action-position"] === "left" || oConfig["action-position"] === "both") {
28038        html += htmlActions;
28039    }
28040
28041    for (var i = 0; i < aItems.length; i++) {
28042        var value = aItems[i];
28043        var oItemConfig = aItemConfig[i];
28044
28045        if ((oItemConfig["editable"])) {
28046            oItemConfig["classes"] += ' editable';
28047        }
28048
28049        html += '<td';
28050
28051        var szItemClasses = "ctl-table-td-cell ctl-table-col-" + oItemConfig["col-id"];
28052
28053        if (oItemConfig["field-name"]) {
28054            szItemClasses += ' ctl-table-cell-field';
28055        }
28056
28057        if (oItemConfig["sticky-col"]) {
28058            szItemClasses += ' ctl-table-td-sticky-col';
28059        }
28060
28061        if (oItemConfig["classes"] !== "") {
28062            szItemClasses += ' ' + oItemConfig["classes"];
28063        }
28064        if (szItemClasses !== "") {
28065            html += ' class="' + szItemClasses + '"';
28066        }
28067
28068        html += ' style="';
28069        if ((oItemConfig["width"])) {
28070            html += ' width: ' + oItemConfig["width"] + ';';
28071        }
28072        if ((oItemConfig["min-width"])) {
28073            html += ' min-width: ' + oItemConfig["width"] + ';';
28074        }
28075        html += '"';
28076
28077        if ((oItemConfig["field-name"])) {
28078            html += ' data-field-name="' + oItemConfig["field-name"] + '"';
28079        }
28080
28081        if (oItemConfig["sticky-col"]) {
28082            szItemClasses += ' ctl-table-td-sticky-col';
28083        }
28084
28085        if (oItemConfig["csv-exported-value"]) {
28086            html += ' data-csv-exported-value="' + oItemConfig["csv-exported-value"] + '"';
28087        }
28088
28089        if ((oItemConfig["store-data-value"])) {
28090            if (oItemConfig["allow-html"]) {
28091                html += ' data-encode-value="base64" data-value="' + Base64.encode(value) + '"';
28092            } else {
28093                html += ' data-encode-value="none" data-value="' + value + '"';
28094            }
28095            html += ' data-referral-alias="' + oItemConfig["referral-alias"] + '"';
28096        }
28097
28098        if ((oItemConfig["data-format"])) {
28099            html += ' data-format="' + oItemConfig["data-format"] + '"';
28100        }
28101
28102        if ((oItemConfig["data-input"])) {
28103            html += ' data-input="' + oItemConfig["data-input"] + '"';
28104        }
28105
28106        if (oItemConfig["footer-calculations"]) {
28107            html += ' data-footer-calculations="' + oItemConfig["footer-calculations"] + '"';
28108        }
28109
28110        if ((oItemConfig["data-type"])) {
28111            html += ' data-type="' + oItemConfig["data-type"] + '"';
28112        }
28113
28114        html += '>';
28115
28116        var szTextTransformClass = "";
28117
28118        switch (oItemConfig["text-transform"]) {
28119            case "uppercase": {
28120                szTextTransformClass = " text-uppercase";
28121            } break;
28122            case "capitalize": {
28123                szTextTransformClass = " text-capitalize";
28124            } break;
28125            case "lowercase": {
28126                szTextTransformClass = " text-lowercase";
28127            } break;
28128            default: {
28129                szTextTransformClass = "";
28130            }
28131        }
28132
28133        html += '<div class="ctl-table-bg-cell-data"></div>';
28134
28135        if (!aHeader[i]["hide-label-in-cards"]) {
28136            html += '<label class="ctl-card-content-title">' + aHeader[i]["label"] + '</label>';
28137        }
28138
28139        html += '<div class="ctl-table-cell-data' + szTextTransformClass + '"';
28140        if ((oItemConfig["width"]) &&
28141            oItemConfig["width"] !== "0%" &&
28142            oItemConfig["width"] !== "0px") {
28143            html += ' style="width: ' + oItemConfig["width"] + '"';
28144        }
28145        html += '>';
28146
28147        value = __ctlThemeTableFormatCell(value, oItemConfig, oRow);
28148
28149        if (!oItemConfig["allow-html"]) {
28150            value = htmlEntities(value);
28151        }
28152
28153        html += value;
28154
28155        html += '</div>';
28156        html += '</td>';
28157    }
28158
28159    if (oConfig["action-position"] && oConfig["action-position"] !== "left") {
28160        html += htmlActions;
28161    }
28162
28163    html += '</tr>';
28164
28165    return html;
28166}
28167
28168
28169function __ctlTableSerializeRow(oNodeTR) {
28170    var oFormData = {};
28171    oFormData["resource-id"] = oNodeTR.attr("data-resource-id");
28172    oNodeTR.find("td").each(function () {
28173        var oNodeTD = jQuery(this);
28174        if (oNodeTD.attr("data-field-name")) {
28175
28176            switch (oNodeTD.attr("data-format")) {
28177                case "INPUT_FLOAT": {
28178                    oFormData[oNodeTD.attr("data-field-name")] = oNodeTD.find("input").val();
28179                } break;
28180                default: {
28181
28182                    if (oNodeTD.attr("data-encode-value") == "base64") {
28183                        oFormData[oNodeTD.attr("data-field-name")] = Base64.decode(oNodeTD.attr("data-value"));
28184                    } else {
28185                        oFormData[oNodeTD.attr("data-field-name")] = oNodeTD.attr("data-value");
28186                    }
28187                }
28188            }
28189        }
28190    });
28191
28192    return oFormData;
28193}
28194
28195function __ctlTableSaveRowWithAjaxBlock(oFormData, szAjaxAction) {
28196
28197
28198    oFormData['action'] = 'ctl-wp-studio';
28199    oFormData['execute'] = 'ctl-php-block';
28200    oFormData['extension-action'] = szAjaxAction;
28201
28202    oFormData['url-params'] = g_oCTLWPStudio.getUrlParams();
28203
28204    var idLoading = g_oCTLWPStudio.showLoading("");
28205    jQuery.ajax({
28206        url: g_oCTLWPStudio._oLangCommon["ajaxurl"],
28207        type: "POST",
28208        data: oFormData,
28209        cache: false,
28210        method: 'POST',
28211        success: function (response, textStatus, jqXHR) {
28212            g_oCTLWPStudio.closeDlg(idLoading);
28213            var oResponse = jQuery.parseJSON(response);
28214            if (oResponse.res === false) {
28215                alert(g_oCTLWPStudio._oLangCommon["Ooops! Something Went Wrong!"]);
28216            } else {
28217
28218            }
28219        }, error: function (jqXHR, textStatus, errorThrown) {
28220            g_oCTLWPStudio.closeDlg(idLoading);
28221            alert(g_oCTLWPStudio._oLangCommon["Ooops! Something Went Wrong!"]);
28222        }
28223    });
28224
28225}
28226
28227function __ctlThemeTablePreSplitPost(oNodeButton) {
28228
28229    var oNodeTR = oNodeButton.closest("tr");
28230    var oNodeTableWrapper = oNodeTR.closest(".ctl-theme-table-main-wrapper");
28231    var idResource = oNodeTR.attr("data-resource-id");
28232
28233    var oFormData = {};
28234    oFormData['action'] = 'ctl-wp-studio';
28235    oFormData['execute'] = 'ctl-theme-tables';
28236    oFormData['extension-action'] = 'pre-split-post-row';
28237    oFormData['table-id'] = oNodeTableWrapper.attr("data-table-id");
28238    oFormData['resource-id'] = idResource;
28239    oFormData["get-params"] = g_oCTLWPStudio.getUrlParams();
28240
28241    var idLoading = g_oCTLWPStudio.showLoading("");
28242
28243    jQuery.ajax({
28244        url: g_oCTLWPStudio._oLangCommon["ajaxurl"],
28245        type: "POST",
28246        data: oFormData,
28247        cache: false,
28248        method: 'POST',
28249        success: function (response, textStatus, jqXHR) {
28250            var oResponse = JSON.parse(response);
28251            g_oCTLWPStudio.closeDlg(idLoading);
28252
28253            if (oResponse.res === true) {
28254                __ctlThemeTableShowSplitPostModal(oNodeButton, Number(oResponse.quantity));
28255            } else if (oResponse.desc) {
28256                alert(oResponse.desc);
28257            } else {
28258                alert(g_oCTLWPStudio._oLangCommon["Ooops! Something Went Wrong!"]);
28259            }
28260        },
28261        error: function (jqXHR, textStatus, errorThrown) {
28262            g_oCTLWPStudio.closeDlg(idLoading);
28263            alert(g_oCTLWPStudio._oLangCommon["Ooops! Something Went Wrong!"]);
28264        }
28265    });
28266}
28267
28268function __ctlThemeTableCreateSplitQuantityPostInput(fQuantity) {
28269    let html = '';
28270
28271    html += '<li>';
28272    html += '<div class="input-group mb-3">';
28273    html += '<input type="number" class="form-control" name="qty[]" value="' + fQuantity + '">';
28274    html += '<div class="input-group-append">';
28275    html += '<button class="btn btn-outline-secondary btn-action-add-qty-split-post" type="button"><i class="fa-solid fa-file-half-dashed"></i></button>';
28276    html += '</div>';
28277    html += '<div class="input-group-append">';
28278    html += '<button class="btn btn-outline-danger btn-action-remove-qty-split-post" type="button"><i class="ctl-wp-studio-icons-trash"></i></button>';
28279    html += '</div>';
28280    html += '</div>';
28281    html += '</li>';
28282
28283    return html;
28284}
28285
28286function __ctlThemeTableShowSplitPostModal(oNodeButton, fQuantity) {
28287    let oNodeTR = oNodeButton.closest("tr");
28288    let oNodeTableWrapper = oNodeTR.closest(".ctl-theme-table-main-wrapper");
28289    let szModalTitle = oNodeTableWrapper.attr("data-label-split-post-modal-title");
28290    let idResource = oNodeTR.attr("data-resource-id");
28291
28292    let szMessage = g_oCTLThemeTablesLocalizationFront["The quantity to be divided is %s."];
28293    szMessage = sprintf(szMessage, '<span class="badge badge-primary">' + fQuantity + '</span>');
28294
28295    let html = '<form>';
28296    html += '<div class="ctl-theme-tables-action-split-post-row">';
28297    html += '<input type="hidden" name="resource-id" value="' + idResource + '">';
28298    html += '<input type="hidden" name="table-id" value="' + oNodeTableWrapper.attr("data-table-id") + '">';
28299    html += '<input type="hidden" name="source-qty" value="' + fQuantity + '">';
28300
28301    html += '<p class="ctl-theme-tables-action-split-post-row-text">';
28302    html += szMessage;
28303    html += '</p>';
28304    html += '<ul class="list-unstyled">';
28305    html += __ctlThemeTableCreateSplitQuantityPostInput(fQuantity);
28306    html += '</ul>';
28307    html += '</div>';
28308    html += '</form>';
28309
28310    g_oCTLBootstrapModals.showModal({
28311        modal_title: szModalTitle,
28312        modal_content: html,
28313        position: "centered",
28314        entrance_animation: "animate__slideInUp",
28315        exit_animation: "animate__slideOutDown",
28316        footer_buttons: ['<button class="btn btn-primary btn-action-split-post-row-confirm">' +
28317            g_oCTLThemeTablesLocalizationFront["Continue"] + '</button>'
28318        ]
28319    });
28320
28321    jQuery(".btn-action-split-post-row-confirm").on("click", function () {
28322
28323        var oNodeForm = jQuery(this).closest(".modal").find("form");
28324        var oFormData = oNodeForm.serializeObject();
28325
28326        let fQtyFound = 0;
28327        oNodeForm.find("input[name='qty[]']").each(function () {
28328            fQtyFound += Number(jQuery(this).val());
28329        });
28330
28331        if (fQtyFound != Number(oFormData["source-qty"])) {
28332            g_oCTLBootstrapModals.alert("", g_oCTLThemeTablesLocalizationFront["The sum of the quantities does not match the original quantity!"]);
28333            return;
28334        }
28335
28336        oFormData['action'] = 'ctl-wp-studio';
28337        oFormData['execute'] = 'ctl-theme-tables';
28338        oFormData['extension-action'] = 'split-post-row';
28339        oFormData['table-id'] = oNodeTableWrapper.attr("data-table-id");
28340        oFormData['resource-id'] = idResource;
28341        oFormData["get-params"] = g_oCTLWPStudio.getUrlParams();
28342        var idLoading = g_oCTLWPStudio.showLoading("");
28343
28344        jQuery.ajax({
28345            url: g_oCTLWPStudio._oLangCommon["ajaxurl"],
28346            type: "POST",
28347            data: oFormData,
28348            cache: false,
28349            method: 'POST',
28350            success: function (response, textStatus, jqXHR) {
28351                var oResponse = JSON.parse(response);
28352
28353                if (oResponse.res === true) {
28354                    window.location.reload();
28355                } else if (oResponse.desc) {
28356                    g_oCTLWPStudio.closeDlg(idLoading);
28357                    alert(oResponse.desc);
28358                } else {
28359                    g_oCTLWPStudio.closeDlg(idLoading);
28360                    alert(g_oCTLWPStudio._oLangCommon["Ooops! Something Went Wrong!"]);
28361                }
28362            },
28363            error: function (jqXHR, textStatus, errorThrown) {
28364                g_oCTLWPStudio.closeDlg(idLoading);
28365                alert(g_oCTLWPStudio._oLangCommon["Ooops! Something Went Wrong!"]);
28366            }
28367        });
28368    });
28369}
28370
28371function ctlResizeMaximizedTables(oNodeParent = null) {
28372    setTimeout(function () {
28373        if (!oNodeParent) {
28374            oNodeParent = jQuery("body");
28375        }
28376        oNodeParent.find(".ctl-theme-table-main-wrapper.ctl-maximize").each(function () {
28377            let oNodeTableScrollableWrapper = jQuery(this).find(".ctl-theme-tables-scrollable-wrapper");
28378            if (oNodeTableScrollableWrapper.length > 0) {
28379                __ctlResizeMaximizedTable(oNodeTableScrollableWrapper);
28380            }
28381        });
28382    }, 500);
28383}
28384
28385function __ctlResizeMaximizedTable(oNodeTableScrollableWrapper) {
28386    let oNodeTableWrapper = oNodeTableScrollableWrapper.closest(".ctl-theme-tables-wrapper");
28387    let oPosition = oNodeTableWrapper.position();
28388
28389    let fWindowHeight = jQuery(window).height();
28390
28391    let fMaxHeight = (fWindowHeight - oPosition.top - 30); // 30px for bottom margin
28392
28393    let oNodeFooterButtonsDown = jQuery(oNodeTableWrapper).nextAll().filter(".table-footer-actions");
28394
28395    if (oNodeFooterButtonsDown.length > 0) {
28396        fMaxHeight -= oNodeFooterButtonsDown.outerHeight();
28397    }
28398    oNodeTableScrollableWrapper.css("max-height", fMaxHeight + "px");
28399}
28400
28401function __ctlThemeTableAjaxExportCsv($idTable, $aGetParams, $iOffset = 1, cbEnd){
28402    var oFormData = {};
28403    oFormData['action'] = 'ctl-wp-studio';
28404    oFormData['execute'] = 'ctl-theme-tables';
28405    oFormData['extension-action'] = 'export-csv';
28406    oFormData['table-id'] = $idTable;
28407    oFormData['offset'] = $iOffset;
28408    oFormData["get-params"] = $aGetParams;
28409
28410    jQuery.ajax({
28411        url: g_oCTLWPStudio._oLangCommon["ajaxurl"],
28412        type: "POST",
28413        data: oFormData,
28414        cache: false,
28415        method: 'POST',
28416        success: function (response, textStatus, jqXHR) {
28417            var oResponse = JSON.parse(response);
28418
28419            if (oResponse.res === true) {
28420                if(oResponse.continue){
28421                    __ctlThemeTableAjaxExportCsv($idTable, $aGetParams, $iOffset + 1, cbEnd);
28422                } else {
28423                    g_oCTLWPStudio.downloadFile(oResponse.url, oResponse.filename);
28424                    
28425                    if (cbEnd){
28426                        cbEnd.call(this, oResponse);
28427                    }
28428                }
28429            }
28430        },
28431        error: function (jqXHR, textStatus, errorThrown) {
28432            if (cbEnd){
28433                cbEnd.call(this);
28434            }
28435            alert(g_oCTLWPStudio._oLangCommon["Ooops! Something Went Wrong!"]);
28436        }
28437    });
28438}
28439
28440function ctlThemeTableRefreshStickyColumnsShadow(){
28441    jQuery(".ctl-theme-tables-wrapper").each(function(){
28442        const element = this;
28443        const canScroll = element.scrollWidth > element.clientWidth;
28444
28445        if (canScroll){
28446            if ( element.scrollLeft === 0 ){
28447                jQuery(this).removeClass("ctl-table-show-left-sticky-col-shadow");
28448            }else{
28449                jQuery(this).addClass("ctl-table-show-left-sticky-col-shadow");
28450            }
28451
28452            if ( element.scrollLeft + element.clientWidth >= element.scrollWidth -1){
28453                jQuery(this).removeClass("ctl-table-show-right-sticky-col-shadow");
28454            }else{
28455                jQuery(this).addClass("ctl-table-show-right-sticky-col-shadow");
28456            }
28457        }else{
28458            jQuery(this).removeClass("ctl-table-show-left-sticky-col-shadow");
28459            jQuery(this).removeClass("ctl-table-show-right-sticky-col-shadow");
28460        }
28461    });        
28462}
28463// file: /var/www/vhosts/codethislab.com/httpdocs/wp-content/plugins/ctl-wp-studio/classes/extensions/ctl-user-access-form/php/../js/front.js
28464var g_oConfirmDialog = null;
28465var g_ctlUserAccessFormLoadingDialog = null;
28466
28467jQuery(document).ready(function(){
28468    jQuery(".ctl-user-access-form-form-register input[type=text], .ctl-user-access-form-form-register input[type=number], .ctl-user-access-form-form-register input[type=email], .ctl-user-access-form-form-register input[type=password]").on('keyup', function (e) {
28469        if (e.keyCode === 13) {
28470            jQuery(this).blur();
28471            ctl_user_try_access( jQuery(this)
28472                    .closest(".ctl-user-access-form-wrapper"), "try-register" );   
28473        }
28474    });    
28475    
28476    jQuery(".ctl-user-access-form-form-login input[type=text], .ctl-user-access-form-form-login input[type=number], .ctl-user-access-form-form-login input[type=email], .ctl-user-access-form-form-login input[type=password]").on('keyup', function (e) {
28477        if (e.keyCode === 13) {
28478            jQuery(this).blur();
28479            ctl_user_try_access( jQuery(this)
28480                    .closest(".ctl-user-access-form-wrapper"), "try-login" );   
28481        }
28482    });       
28483    
28484    jQuery(document).on("click", ".ctl-user-access-form-action-resend-confirm-email", function(){
28485        ctl_user_custom_login_resend_confirm_email_dialog( jQuery(this) );  
28486    });
28487
28488    jQuery(document).on("click", ".ctl-user-access-form-action-confirm-phone", function(){
28489        let oNodeForm = jQuery(this).closest(".modal").find("form");
28490
28491        if ( ctlFormFieldsCheckIfFormIsFilled(oNodeForm) === false ){
28492            return;
28493        }
28494
28495        let oFormData = oNodeForm.serializeObject();
28496
28497        ctl_user_custom_login_confirm( "confirm-phone", 
28498                    oFormData["user_id"], oFormData["phone_prefix"], 
28499                    oFormData["phone"], oFormData["pin"], 
28500                    oFormData["login_form_id"], oFormData["register_form_id"] );  
28501    });
28502
28503    jQuery(document).on("click", ".ctl-user-access-form-request-reset-password", function(){
28504
28505        var oNodeForm = jQuery(this).closest("form");
28506        var oFormData = oNodeForm.serializeObject();
28507
28508        if ( ctlFormFieldsCheckIfFormIsFilled(oNodeForm) === false ){
28509            return;
28510        }        
28511
28512        oFormData["action"]  = g_oCTLWPStudio._szPluginCode;
28513        oFormData["execute"] = "ctl-user-access-form";
28514        oFormData["extension-action"] = "request-reset-password";
28515
28516        g_oCTLWPStudio._idLoadingDlg = 
28517                g_oCTLWPStudio.showLoading(""); 
28518 
28519        jQuery.post(
28520            ctl_wp_studio_common_localization["ajaxurl"],oFormData).done(
28521            function(response){
28522                g_oCTLWPStudio.closeDlg(g_oCTLWPStudio._idLoadingDlg);
28523                var oResponse = jQuery.parseJSON(response);  
28524
28525                if ( oResponse.res === true ){  
28526
28527                    ctlFormFieldsClearForm(oNodeForm);
28528
28529                    if ( oResponse.alert ){
28530                        g_oCTLBootstrapModals.alert("", oResponse.alert , ()=>{
28531							if(oResponse.redirect){
28532								g_oCTLWPStudio.showLoading(""); 
28533                                window.location.href = oResponse.redirect;
28534							}
28535						});
28536                    }else{
28537                        window.location.reload();
28538                    }                     
28539                }else{
28540                    alert(ctl_wp_studio_common_localization["Ooops! Something Went Wrong!"]);
28541                }
28542            }
28543        ).fail( function(){
28544            g_oCTLWPStudio.closeDlg(g_oCTLWPStudio._idLoadingDlg);
28545            alert(ctl_wp_studio_common_localization["Ooops! Something Went Wrong!"]);
28546        });     
28547    });
28548
28549    jQuery(document).on("click", ".ctl-user-access-form-change-password", function(){
28550
28551        var oNodeForm = jQuery(this).closest("form");
28552        var oFormData = oNodeForm.serializeObject();
28553
28554        if ( ctlFormFieldsCheckIfFormIsFilled(oNodeForm) === false ){
28555            return;
28556        }        
28557
28558        oFormData["action"]  = g_oCTLWPStudio._szPluginCode;
28559        oFormData["execute"] = "ctl-user-access-form";
28560        oFormData["extension-action"] = "change-password";
28561
28562        g_oCTLWPStudio._idLoadingDlg = 
28563                g_oCTLWPStudio.showLoading(""); 
28564 
28565        jQuery.post(
28566            ctl_wp_studio_common_localization["ajaxurl"],oFormData).done(
28567            function(response){
28568                g_oCTLWPStudio.closeDlg(g_oCTLWPStudio._idLoadingDlg);
28569                var oResponse = jQuery.parseJSON(response);  
28570
28571                if ( oResponse.res === true ){  
28572                    ctlFormFieldsClearForm(oNodeForm);
28573                    if ( oResponse.alert ){
28574                        g_oCTLBootstrapModals.alert("", oResponse.alert, function(){
28575                            if ( oResponse.redirect ){
28576                                g_oCTLWPStudio.showLoading(""); 
28577                                window.location.href = oResponse.redirect;
28578                            }
28579                        } );                        
28580                    }                     
28581                }else{
28582                    alert(ctl_wp_studio_common_localization["Ooops! Something Went Wrong!"]);
28583                }
28584            }
28585        ).fail( function(){
28586            g_oCTLWPStudio.closeDlg(g_oCTLWPStudio._idLoadingDlg);
28587            alert(ctl_wp_studio_common_localization["Ooops! Something Went Wrong!"]);
28588        });     
28589    });
28590    
28591    jQuery(document).on("click", ".ctl-user-access-form-action-login", function(){
28592        ctl_user_try_access( jQuery(this)
28593                .closest(".ctl-user-access-form-wrapper"), "try-login" );
28594    });
28595    
28596    jQuery(document).on("click", ".ctl-user-access-form-action-register", function(){
28597        ctl_user_try_access( jQuery(this)
28598                .closest(".ctl-user-access-form-wrapper"), "try-register" );        
28599    });   
28600    
28601    jQuery(document).on("click", ".ctl-user-access-form-action-update-registration-data", function(){       
28602        ctl_user_try_access( jQuery(this)
28603                .closest(".ctl-user-access-form-wrapper"), "update-register" );   
28604    });
28605});
28606
28607function ctl_user_custom_login_resend_confirm_email_dialog( oNodeButton ){
28608    let oNodeForm = oNodeButton.closest(".modal").find("form");
28609    var idUser  = oNodeForm.find("input[name=user_id]").val();
28610
28611    var oFormData = {};
28612    oFormData["action"]           = "ctl-wp-studio";
28613    oFormData["execute"]          = "ctl-user-access-form";
28614    oFormData["extension-action"] = "resend-confirm-email";
28615    oFormData["user_id"]          = idUser;
28616
28617    g_ctlUserAccessFormLoadingDialog = g_oCTLWPStudio.showLoading("");
28618    
28619    jQuery.post(
28620        ctl_wp_studio_common_localization["ajaxurl"], oFormData ).done(
28621        function(response){   
28622            var aResult = JSON.parse(response);
28623
28624            g_oCTLWPStudio.closeDlg(g_ctlUserAccessFormLoadingDialog);
28625            g_oCTLBootstrapModals.closeLastModal();
28626
28627            g_oCTLBootstrapModals.alert("", aResult.message );
28628        }).fail( function(){
28629            g_oCTLWPStudio.closeDlg(g_oConfirmDialog);      
28630    }); 
28631}
28632
28633function ctl_user_custom_login_confirm( szExecute, idUser, szPhonePrefix, szPhone, szPin, 
28634                                                                idLoginFormId, idRegisterFormId ){
28635    var oFormData = {};
28636    oFormData["action"]    = "ctl-wp-studio";
28637    oFormData["execute"]   = "ctl-user-access-form";
28638    oFormData["extension-action"] = szExecute;
28639    oFormData["pin"]     = szPin;
28640    oFormData["phone"]   = szPhone;
28641    oFormData["phone_prefix"]     = szPhonePrefix;
28642    oFormData["user_id"]          = idUser;
28643    oFormData["login_form_id"]    = idLoginFormId;
28644    oFormData["register_form_id"] = idRegisterFormId;
28645    
28646    g_ctlUserAccessFormLoadingDialog = g_oCTLWPStudio.showLoading("");
28647    
28648    jQuery.post(
28649        ctl_wp_studio_common_localization["ajaxurl"], oFormData ).done(
28650        function(response){   
28651            var aResult = JSON.parse(response);
28652
28653            g_oCTLWPStudio.closeDlg(g_ctlUserAccessFormLoadingDialog);
28654
28655            if( aResult.res === false ){
28656                g_oCTLBootstrapModals.closeLastModal();
28657                g_oCTLBootstrapModals.alert("", aResult.message );
28658            }else{
28659                g_oCTLBootstrapModals.closeLastModal();
28660                if( aResult.redirect ){
28661                    g_oCTLWPStudio.showLoading("");
28662                
28663                    let aPostParams = null;
28664                    if(aResult.post_params && Object.keys(aResult.post_params).length > 0){
28665                        aPostParams = aResult.post_params;
28666                    }
28667
28668                    g_oCTLWPStudio.redirect(aResult.redirect, true, true, aPostParams);
28669                }else{
28670                    g_oCTLBootstrapModals.confirm("", aResult.message, g_oCTLUserAccessFormLocalizationFront["Continue"], function(){
28671                        g_oCTLWPStudio.showLoading("");
28672                        window.location.reload();                
28673                    });                    
28674                }           
28675            }
28676        }).fail( function(){
28677            g_oCTLWPStudio.closeDlg(g_oConfirmDialog);
28678            alert(ctl_wp_studio_common_localization["Error"]);
28679    }); 
28680}
28681
28682function ctl_user_custom_login_close_confirm_dialog(){
28683    g_oCTLWPStudio.closeDlg(g_oConfirmDialog);
28684}
28685
28686function ctl_user_try_access( oNodeContainer, szExecute ){
28687    
28688    var oFormData      = oNodeContainer.find(".ctl-user-access-form-data").serializeObject();    
28689    var oFormReferrals = oNodeContainer.find(".ctl-user-access-form-referrals").serializeObject();    
28690    var oNodeExtraData = oNodeContainer.find(".ctl-user-access-extra-data form");
28691    var oNodeFormPolicies = oNodeContainer.find(".ctl-user-access-policies");
28692
28693    var oNodeForm = oNodeContainer.find("form");
28694    
28695    oNodeContainer.find(".field-error").each(function(){
28696        jQuery(this).text("");
28697    });
28698    oNodeContainer.find(".form-errors").each(function(){
28699        jQuery(this).html("");
28700    });    
28701    
28702    if ( !ctlFormFieldsCheckIfFormIsFilled(oNodeForm) ){
28703        return;
28704    }
28705
28706    if ( oNodeExtraData.length > 0 ){
28707        if ( !ctlFormFieldsCheckIfFormIsFilled(oNodeForm) ){
28708            return;
28709        }else{
28710            oFormData["extra-data"] = oNodeExtraData.serializeObject();
28711        }
28712    }    
28713    
28714    if ( oNodeFormPolicies.length > 0 ){
28715        if ( !ctlFormFieldsCheckIfFormIsFilled(oNodeFormPolicies) ){
28716            return;
28717        }
28718        var oPolicyData = oNodeFormPolicies.serializeObject();
28719        oFormData = jQuery.extend(oFormData, oPolicyData);            
28720    }
28721
28722    oFormData["action"]    = "ctl-wp-studio";
28723    oFormData["execute"]   = "ctl-user-access-form";
28724    oFormData["extension-action"]   = szExecute;
28725    oFormData["referrals"]  = oFormReferrals;
28726    oFormData["get-params"] = g_oCTLWPStudio.getUrlParams();
28727
28728    g_ctlUserAccessFormLoadingDialog = g_oCTLWPStudio.showLoading("");
28729    
28730    jQuery.post(
28731        ctl_wp_studio_common_localization["ajaxurl"], oFormData ).done(
28732        function(response){           
28733            var aResult = JSON.parse(response);
28734
28735            g_oCTLWPStudio.closeDlg(g_ctlUserAccessFormLoadingDialog);
28736
28737            if( aResult.res === false ){
28738                var bJumpToRegistration = false;                
28739                var bIncompatibleRole   = false;
28740                var szDialogMessages    = "";
28741                var bAttachedFormErrors = false;
28742    
28743                for( var i = 0; i < aResult.errors.length; i++ ){
28744                    var oError = aResult.errors[i];
28745
28746                    switch(oError.code){
28747                        case "wrong_credentials":{
28748                            bJumpToRegistration = true;
28749                        }break;
28750                        case "incompatible_role":{
28751                            bIncompatibleRole = true;
28752
28753                            g_oCTLBootstrapModals.alert("", oError.label );
28754                        }break;   
28755                        case "invalid_nonce":{
28756                            
28757                            g_oCTLBootstrapModals.confirm( "",
28758                                oError.label,
28759                                g_oCTLUserAccessFormLocalizationFront["Continue"],
28760                                function(){
28761                                    g_oCTLWPStudio.showLoading("");
28762                                    window.location.reload();
28763                                });                                 
28764                            return;
28765                        }break;                       
28766                    }
28767
28768                    var bScrollToField = false;
28769                    var bScrollModal = false;
28770                    var iMinScrollOffsetTop;
28771                    if( oError.field ){    
28772                        var oNodeField = oNodeContainer.find('*[name="'+oError.field+'"]');
28773                        if ( oNodeField.length > 0 ){                            
28774                            oNodeField.addClass("is-invalid");
28775                            oNodeField.closest(".ctl-wp-studio-form-control-wrapper").addClass("is-invalid");
28776                            var oNodeInvalidFeedback = oNodeField.closest(".form-group").eq(0).find(".invalid-feedback");
28777                            oNodeInvalidFeedback.text(oError.label);                            
28778                            bAttachedFormErrors = true;
28779
28780
28781                            var iOffsetTop = oNodeField.offset().top;
28782                            if( oNodeField.closest(".modal").length > 0 ){
28783                                bScrollModal = true;
28784
28785                                iOffsetTop -= jQuery('.modal-body').offset().top;
28786
28787                                bScrollToField = true;
28788                                if(!iMinScrollOffsetTop || iMinScrollOffsetTop > iOffsetTop){
28789                                    iMinScrollOffsetTop = iOffsetTop;
28790                                }
28791                            }else{
28792                                iOffsetTop -= 150;
28793                                if(!iMinScrollOffsetTop || iMinScrollOffsetTop > iOffsetTop){
28794                                    iMinScrollOffsetTop = iOffsetTop;
28795                                }
28796                            }
28797                        }
28798                    }else if( oError.field_container ){
28799                        szDialogMessages += '<p>'+oError.label+'</p>';
28800                    }else{
28801                        szDialogMessages += '<p>'+oError.label+'</p>';
28802                    }                   
28803                }
28804
28805                if(bScrollToField){
28806                    if(bScrollModal){
28807                        jQuery('.modal-body').animate({ scrollTop: iMinScrollOffsetTop }, 'slow');  
28808                    }else{
28809                        jQuery('html,body').animate({ scrollTop: iOffsetTop }, 'slow');    
28810                    }
28811                }
28812                
28813                if ( bJumpToRegistration === true ){
28814                    var oNodeRegistrationPage = oNodeForm.find('input[name=registration-page]');
28815                    if ( oNodeRegistrationPage.length > 0 ){
28816                        g_oCTLBootstrapModals.confirm(
28817                            g_oCTLUserAccessFormLocalizationFront["Go to registration page"],
28818                            g_oCTLUserAccessFormLocalizationFront["You are not yet registered on our site, continue to go to the registration page."],
28819                            g_oCTLUserAccessFormLocalizationFront["Continue"],
28820                            function(){
28821                                g_oCTLWPStudio.redirect(oNodeRegistrationPage.val(), true );
28822                            });                                    
28823                    }else if(szDialogMessages !== ""){
28824                        g_oCTLBootstrapModals.alert("", szDialogMessages );
28825                    }else{
28826                        // fixfix
28827                        g_oCTLBootstrapModals.alert("", g_oCTLUserAccessFormLocalizationFront["Wrong credentials"] );
28828                    }
28829                }else if (bIncompatibleRole){
28830                    g_oCTLBootstrapModals.alert("",
28831                                g_oCTLUserAccessFormLocalizationFront["You cannot login from this page."]);
28832                }else if ( szDialogMessages !== "" ){
28833                    var oModalConfig = {
28834                        modal_content : szDialogMessages,
28835                        button_close_title : g_oCTLUserAccessFormLocalizationFront['Continue'],
28836                        button_close_class : "btn-primary", 
28837                        position : "centered",
28838                        closeable : false
28839                    };                         
28840                    g_oCTLBootstrapModals.showModal(oModalConfig);  
28841                }
28842                
28843                if ( bAttachedFormErrors ){                    
28844                    var iOffsetTop = 
28845                    jQuery(".ctl-wp-studio-form-control-wrapper.is-invalid").eq(0).offset().top - 150;
28846                    jQuery('html,body,.modal').animate({ scrollTop: iOffsetTop }, 'slow');
28847                }
28848                
28849            }else{
28850
28851                
28852
28853                if (aResult.hasOwnProperty("close-stack-dialog") && aResult["close-stack-dialog"] == true) {
28854                    g_oCTLBootstrapModals.closeModalAndStack();
28855                }else if( aResult.redirect ){
28856
28857                    if ( aResult.redirect.indexOf("reload") === 0 ){
28858                        window.location.reload(); 
28859                    }else{
28860						
28861                        let aPostParams = null;
28862						if(aResult.post_params && Object.keys(aResult.post_params).length > 0){
28863                            aPostParams = aResult.post_params;
28864                        }
28865
28866                        g_oCTLWPStudio.redirect(aResult.redirect, true, true, aPostParams);
28867                    }
28868
28869                }else{
28870                    if( aResult.confirm === "phone" ){
28871                        var html = '<form>'; 
28872                        html += "<div class='form-group'>";
28873                        html += sprintf(g_oCTLUserAccessFormLocalizationFront["We just sent a <strong>PIN</strong> via SMS to the phone number: <strong>%s</strong>"], aResult.phone );
28874                         html += "</div>";
28875                        
28876                        html += "<input type='hidden' name='register_form_id' value='"+aResult.register_form_id+"'/>";
28877                        html += "<input type='hidden' name='login_form_id' value='"+aResult.login_form_id+"'/>";
28878                        html += "<input type='hidden' name='user_id' value='"+aResult.user_id+"'/>";
28879                        html += "<input type='hidden' name='phone_prefix' value='"+aResult.phone_prefix+"'/>";
28880                        html += "<input type='hidden' name='phone' value='"+aResult.phone+"'/>";
28881
28882                        html += formFieldsBuildNumberField({
28883                            "label-title" : "",
28884                            "display"     : 12,
28885                            "mandatory"   : true,
28886                            "field-name" : "pin",
28887                            "validate-not-zero" : true,   
28888                            "validate-unsigned" : true,
28889                            "validate-integer" : true,
28890                            "floating-label" : false
28891                        });
28892
28893                        html += '</form>';
28894                        
28895                        g_oConfirmDialog = g_oCTLBootstrapModals.showModal(
28896                            {
28897                                modal_title : g_oCTLUserAccessFormLocalizationFront["Enter your PIN"],
28898                                modal_content : html,
28899                                position        : "centered",
28900                                entrance_animation : "animate__slideInUp",
28901                                exit_animation : "animate__slideOutDown",
28902                                footer_buttons : [
28903                                    '<button class="btn btn-primary ctl-user-access-form-action-confirm-phone"><span class="btn-text">'+
28904                                    g_oCTLUserAccessFormLocalizationFront["Continue"]+'</span></button>'
28905                                ] 
28906                            });
28907                        
28908                    }else if( aResult.confirm === "email" ){
28909                    
28910                        var html = "<form>";
28911                        html += "<input type='hidden' name='user_id' value='"+aResult.user_id+"'/>";
28912                        html += g_oCTLUserAccessFormLocalizationFront["Check your mailbox, we just sent a <strong>confirmation url</strong> to your email used during registration"];
28913                         html += "</form>";
28914                       
28915                        g_oConfirmDialog = g_oCTLBootstrapModals.showModal({
28916                            modal_title : g_oCTLUserAccessFormLocalizationFront["Email validation"],
28917                            modal_content : html,
28918                            position        : "centered",
28919                            entrance_animation : "animate__slideInUp",
28920                            exit_animation : "animate__slideOutDown",
28921                            footer_buttons : [
28922                                '<button class="btn btn-primary ctl-user-access-form-action-resend-confirm-email"><span class="btn-text">'+
28923                                g_oCTLUserAccessFormLocalizationFront["Resend confirmation email"]+'</span></button>'
28924                            ]   
28925                        });
28926                    }else{                        
28927                        var oModalConfig = {
28928                            modal_content : aResult.message,
28929                            button_close_title : g_oCTLUserAccessFormLocalizationFront['Continue'],
28930                            button_close_class : "btn-primary", 
28931                            position : "centered",
28932                            closeable : false
28933                        };                        
28934                        if (oFormData["redirect"]){
28935                            oModalConfig["cb_close"] = function(){
28936                                if ( oFormData["redirect"].indexOf("reload") === 0 ){
28937                                    window.location.reload(); 
28938                                }else{
28939                                    g_oCTLWPStudio.redirect(oFormData["redirect"], true );
28940                                }
28941                            };
28942                        }                                                
28943                        g_oCTLBootstrapModals.showModal(oModalConfig);                          
28944                    }                   
28945                }                
28946            }
28947
28948        }).fail( function(){
28949            g_oCTLWPStudio.closeDlg(g_ctlUserAccessFormLoadingDialog);
28950            alert(ctl_wp_studio_common_localization["Error"]);
28951    });     
28952}
28953// file: /var/www/vhosts/codethislab.com/httpdocs/wp-content/plugins/ctl-wp-studio/classes/extensions/ctl-ecommerce/php/../js/front.js
28954jQuery(document).ready(function(){
28955
28956    jQuery(document).on("click", ".btn-cart-summary-action-add-product-into-cart", function(){
28957        ctlEcommerceAddProductIntoCartFromCartSummary(jQuery(this));
28958    });
28959
28960    jQuery(document).on("click", ".ctl-ecommerce-action-convert-order", function(){
28961        var oNodeForm = jQuery(this).closest("form");
28962        ctlEcommerceConvertOrder(oNodeForm);
28963    });
28964
28965    jQuery(document).on("click", ".btn-action-cancel-order", function(){
28966        var oNodeForm = jQuery(this).closest("form");
28967        ctlEcommerceCancelOrder(oNodeForm);
28968    });
28969    
28970    jQuery(document).on("click", ".btn-action-increment-cart-product-qty", function(){
28971        var oNodeForm = jQuery(this).closest("form");
28972        ctlEcommerceIncrementCartProductQty(oNodeForm);
28973    });
28974    jQuery(document).on("click", ".btn-action-decrement-cart-product-qty", function(){
28975        var oNodeForm = jQuery(this).closest("form");
28976        ctlEcommerceDecrementCartProductQty(oNodeForm);
28977    });   
28978    
28979    jQuery(document).on("click", ".btn-action-increment-cart-item-qty", function(){
28980        var oNodeForm = jQuery(this).closest("form");
28981        ctlEcommerceIncrementCartItemQty(oNodeForm);
28982    });
28983    jQuery(document).on("click", ".btn-action-decrement-cart-item-qty", function(){
28984        var oNodeForm = jQuery(this).closest("form");
28985        ctlEcommerceDecrementCartItemQty(oNodeForm);
28986    });       
28987
28988    jQuery(document).on("click", ".btn-action-pay-order", function(){
28989        ctlEcommercePayOrder(jQuery(this));
28990    });
28991
28992    jQuery(document).on("click", ".action-update-qty", function(){       
28993        var oNodeInput = jQuery("input[name=upgrade-stock-quantity]");
28994        var iQtyToAdd  = Number(jQuery(this).text());        
28995        var iSign      = jQuery("input[name=sign]:checked").val() === "minus" ? -1 : 1;
28996        var iPrevQty   = Number(oNodeInput.val());
28997
28998        oNodeInput.val( (iQtyToAdd*iSign) + iPrevQty);
28999    });
29000
29001    jQuery(".ctl-ecommerce-action-apply-focus").each(function(){
29002        jQuery(this).focus();
29003    });
29004
29005    jQuery(document).on("click", ".btn-action-add-product-to-cart", function(){
29006        var oNodecontainer = jQuery(this).closest(".ctl-ecommerce-product-container");
29007
29008        var oNodeQty = oNodecontainer.find('input[name=qty]');
29009
29010        ctlEcommercePutProductIntoCart(oNodecontainer.attr("data-product-id"), 
29011                                       oNodecontainer.attr("data-product-title"), 
29012                                       oNodeQty.length > 0 ? oNodeQty.val() : 1);
29013    });
29014
29015    jQuery(document).on("click", ".btn-action-update-cart-item-qty", function(){
29016        var oNodeForm = jQuery(this).closest("form");
29017        ctlEcommerceUpdateCartItemQty(oNodeForm);
29018    });    
29019
29020    jQuery(document).on("click", ".btn-action-place-order", function(){
29021        ctlEcommercePlaceOrder(jQuery(this));
29022    });        
29023
29024    jQuery(document).on("click", ".btn-action-remove-cart-item", function(){
29025        var oNodeForm = jQuery(this).closest("form");
29026        ctlEcommerceRemoveCartItem(oNodeForm);
29027    });     
29028    
29029    jQuery(document).on("click", ".btn-action-empty-cart", function(){
29030        ctlEcommerceEmptyCart(jQuery(this));
29031    });         
29032
29033    jQuery(document).on("click", ".ctl-cart-action-open-cart", function(){
29034        var urlCartPage = jQuery(this).attr("data-url"); 
29035        g_oCTLWPStudio.showLoading("");
29036        window.location.href = urlCartPage;
29037    });    
29038
29039    
29040
29041    if (jQuery(".ctl-cart-action-open-cart").length > 0){
29042        jQuery(".ctl-cart-action-open-cart").addClass("ctl-loading");
29043        ctlEcommerceGetCart();
29044    }
29045
29046    
29047});
29048
29049function ctlEcommercePlaceOrder(oNodeButton){
29050    var oFormData  = {};
29051    oFormData['action']           = 'ctl-wp-studio';
29052    oFormData['execute']          = 'ctl-ecommerce';        
29053    oFormData['extension-action'] = 'place-order';  
29054
29055    oFormData['widget-id']   = oNodeButton.attr("data-widget-id");
29056    oFormData['widget-type'] = oNodeButton.attr("data-widget-type");
29057    oFormData['cart-id']     = oNodeButton.attr("data-cart-id");
29058
29059
29060    var idLoading = g_oCTLWPStudio.showLoading("");
29061
29062    jQuery.ajax({
29063        url : g_oCTLWPStudio._oLangCommon["ajaxurl"],
29064        type: "POST",
29065        data : oFormData,
29066        cache: false,
29067        method: 'POST',
29068        success:function(response, textStatus, jqXHR){				
29069            var oResponse = jQuery.parseJSON(response);
29070
29071            g_oCTLWPStudio.closeDlg(idLoading);
29072            if( oResponse.res === false ){               
29073                if ( oResponse.alert ){
29074                    alert(oResponse.alert);
29075                }else{
29076                    alert(g_oCTLWPStudio._oLangCommon["Ooops! Something Went Wrong!"]);  
29077                }           
29078            }else{  
29079                g_oCTLWPStudio.showLoading("");
29080                window.location.href = oResponse.url_order;
29081            }
29082        },
29083        error: function(jqXHR, textStatus, errorThrown){
29084            g_oCTLWPStudio.closeDlg(idLoading);
29085            alert(g_oCTLWPStudio._oLangCommon["Ooops! Something Went Wrong!"]);  
29086        }
29087    }); 
29088}
29089
29090function ctlEcommerceUpdateCartItemQty( oNodeForm ){
29091    var oFormData  = oNodeForm.serializeObject(); 
29092    oFormData['action']           = 'ctl-wp-studio';
29093    oFormData['execute']          = 'ctl-ecommerce';        
29094    oFormData['extension-action'] = 'update-cart-item-qty';  
29095    oFormData['limit-extensions'] = ["ctl-ecommerce"];
29096
29097    var idLoading = g_oCTLWPStudio.showLoading("");
29098
29099    jQuery.ajax({
29100        url : g_oCTLWPStudio._oLangCommon["ajaxurl"],
29101        type: "POST",
29102        data : oFormData,
29103        cache: false,
29104        method: 'POST',
29105        success:function(response, textStatus, jqXHR){				
29106            var oResponse = jQuery.parseJSON(response);
29107            g_oCTLWPStudio.closeDlg(idLoading);
29108            if( oResponse.res === false ){               
29109                if ( oResponse.alert ){
29110                    alert(oResponse.alert);
29111                }else{
29112                    alert(g_oCTLWPStudio._oLangCommon["Ooops! Something Went Wrong!"]);  
29113                }           
29114            }else{  
29115                g_oCTLWPStudio.showLoading("");
29116                window.location.reload();
29117            }
29118        },
29119        error: function(jqXHR, textStatus, errorThrown){
29120            g_oCTLWPStudio.closeDlg(idLoading);
29121            alert(g_oCTLWPStudio._oLangCommon["Ooops! Something Went Wrong!"]);  
29122        }
29123    });  
29124}
29125
29126function ctlEcommerceEmptyCart( oNodeButton ){
29127    var oFormData  = {}; 
29128    oFormData['action']           = 'ctl-wp-studio';
29129    oFormData['execute']          = 'ctl-ecommerce';        
29130    oFormData['extension-action'] = 'empty-cart';  
29131    oFormData['limit-extensions'] = ["ctl-ecommerce", "ctl-editors-framework"];
29132
29133    oFormData['widget-id'] = oNodeButton.attr("data-widget-id");
29134    oFormData['cart-id']   = oNodeButton.attr("data-cart-id");
29135
29136    var idLoading = g_oCTLWPStudio.showLoading("");
29137
29138    jQuery.ajax({
29139        url : g_oCTLWPStudio._oLangCommon["ajaxurl"],
29140        type: "POST",
29141        data : oFormData,
29142        cache: false,
29143        method: 'POST',
29144        success:function(response, textStatus, jqXHR){				
29145            var oResponse = jQuery.parseJSON(response);
29146            g_oCTLWPStudio.closeDlg(idLoading);
29147            if( oResponse.res === false ){               
29148                if ( oResponse.alert ){
29149                    alert(oResponse.alert);
29150                }else{
29151                    alert(g_oCTLWPStudio._oLangCommon["Ooops! Something Went Wrong!"]);  
29152                }           
29153            }else{  
29154                g_oCTLWPStudio.showLoading("");
29155                window.location.reload();
29156            }
29157        },
29158        error: function(jqXHR, textStatus, errorThrown){
29159            g_oCTLWPStudio.closeDlg(idLoading);
29160            alert(g_oCTLWPStudio._oLangCommon["Ooops! Something Went Wrong!"]);  
29161        }
29162    });
29163}
29164
29165function ctlEcommerceRemoveCartItem( oNodeForm ){
29166    var oFormData  = oNodeForm.serializeObject(); 
29167    oFormData['action']           = 'ctl-wp-studio';
29168    oFormData['execute']          = 'ctl-ecommerce';        
29169    oFormData['extension-action'] = 'remove-cart-item';  
29170    oFormData['limit-extensions'] = ["ctl-ecommerce", "ctl-editors-framework"];
29171
29172    var idLoading = g_oCTLWPStudio.showLoading("");
29173
29174    jQuery.ajax({
29175        url : g_oCTLWPStudio._oLangCommon["ajaxurl"],
29176        type: "POST",
29177        data : oFormData,
29178        cache: false,
29179        method: 'POST',
29180        success:function(response, textStatus, jqXHR){				
29181            var oResponse = jQuery.parseJSON(response);
29182            g_oCTLWPStudio.closeDlg(idLoading);
29183            if( oResponse.res === false ){               
29184                if ( oResponse.alert ){
29185                    alert(oResponse.alert);
29186                }else{
29187                    alert(g_oCTLWPStudio._oLangCommon["Ooops! Something Went Wrong!"]);  
29188                }           
29189            }else{  
29190                oNodeForm.fadeOut( "slow", function() { 
29191                    oNodeForm.remove();
29192                });
29193                g_oCTLWPStudio.showLoading("");
29194                window.location.reload();
29195            }
29196        },
29197        error: function(jqXHR, textStatus, errorThrown){
29198            g_oCTLWPStudio.closeDlg(idLoading);
29199            alert(g_oCTLWPStudio._oLangCommon["Ooops! Something Went Wrong!"]);  
29200        }
29201    }); 
29202}
29203
29204function ctlEcommerceIncrementCartProductQty( oNodeForm ){
29205    var oNodeInputQty = oNodeForm.find(".ctl-ecommerce-cart-product-qty");
29206    var iQty = oNodeInputQty.val();
29207    iQty++;
29208    oNodeInputQty.val(iQty);
29209   
29210}
29211function ctlEcommerceDecrementCartProductQty( oNodeForm ){
29212    var oNodeInputQty = oNodeForm.find(".ctl-ecommerce-cart-product-qty");
29213    var iQty = oNodeInputQty.val();
29214
29215    if ( iQty == 1 ){
29216        return;
29217    }
29218
29219    iQty--;
29220    oNodeInputQty.val(iQty);
29221    
29222}
29223
29224
29225function ctlEcommerceIncrementCartItemQty( oNodeForm ){
29226    var oNodeInputQty = oNodeForm.find(".ctl-ecommerce-cart-item-qty");
29227    var iQty = oNodeInputQty.val();
29228    iQty++;
29229    oNodeInputQty.val(iQty);
29230    oNodeForm.find(".btn-action-update-cart-item-qty").click();
29231}
29232function ctlEcommerceDecrementCartItemQty( oNodeForm ){
29233    var oNodeInputQty = oNodeForm.find(".ctl-ecommerce-cart-item-qty");
29234    var iQty = oNodeInputQty.val();
29235
29236    if ( iQty == 0 ){
29237        return;
29238    }
29239
29240    iQty--;
29241
29242    oNodeInputQty.val(iQty);
29243    oNodeForm.find(".btn-action-update-cart-item-qty").click();
29244}
29245
29246function ctlEcommerceConvertOrder( oNodeForm ){
29247    var oFormData  = oNodeForm.serializeObject(); 
29248    oFormData['action']           = 'ctl-wp-studio';
29249    oFormData['execute']          = 'ctl-ecommerce';        
29250    oFormData['extension-action'] = 'convert-order';  
29251    oFormData['limit-extensions'] = ["ctl-ecommerce", "ctl-editors-framework"];  
29252
29253
29254    var idLoading = g_oCTLWPStudio.showLoading("");
29255
29256    jQuery.ajax({
29257        url : g_oCTLWPStudio._oLangCommon["ajaxurl"],
29258        type: "POST",
29259        data : oFormData,
29260        cache: false,
29261        method: 'POST',
29262        success:function(response, textStatus, jqXHR){                
29263            var oResponse = jQuery.parseJSON(response);
29264            g_oCTLWPStudio.closeDlg(idLoading); 
29265            if( oResponse.res === false ){               
29266                if ( oResponse.alert ){
29267                    alert(oResponse.alert);
29268                }else{
29269                    alert(g_oCTLWPStudio._oLangCommon["Ooops! Something Went Wrong!"]);  
29270                }           
29271            }else{                  
29272                if ( oResponse.redirect ){
29273                    g_oCTLWPStudio.showLoading("");
29274                    window.location.href = oResponse.redirect;
29275                }
29276            }
29277        },
29278        error: function(jqXHR, textStatus, errorThrown){
29279            g_oCTLWPStudio.closeDlg(idLoading);
29280            alert(g_oCTLWPStudio._oLangCommon["Ooops! Something Went Wrong!"]);  
29281        }
29282    });  
29283}
29284
29285function ctlEcommerceCancelOrder( oNodeForm ){
29286    var oFormData  = oNodeForm.serializeObject(); 
29287    oFormData['action']           = 'ctl-wp-studio';
29288    oFormData['execute']          = 'ctl-ecommerce';        
29289    oFormData['extension-action'] = 'cancel-order';  
29290
29291    var idLoading = g_oCTLWPStudio.showLoading("");
29292
29293    jQuery.ajax({
29294        url : g_oCTLWPStudio._oLangCommon["ajaxurl"],
29295        type: "POST",
29296        data : oFormData,
29297        cache: false,
29298        method: 'POST',
29299        success:function(response, textStatus, jqXHR){				
29300            var oResponse = jQuery.parseJSON(response);
29301            g_oCTLWPStudio.closeDlg(idLoading);
29302            if( oResponse.res === false ){               
29303                if ( oResponse.alert ){
29304                    alert(oResponse.alert);
29305                }else{
29306                    alert(g_oCTLWPStudio._oLangCommon["Ooops! Something Went Wrong!"]);  
29307                }           
29308            }else{                  
29309                g_oCTLWPStudio.showLoading("");
29310                window.location.href = oResponse.redirect;
29311            }
29312        },
29313        error: function(jqXHR, textStatus, errorThrown){
29314            g_oCTLWPStudio.closeDlg(idLoading);
29315            alert(g_oCTLWPStudio._oLangCommon["Ooops! Something Went Wrong!"]);  
29316        }
29317    });  
29318}
29319
29320function ctlEcommercePayOrder( oNodeButton ){
29321
29322    var oNodeForm = oNodeButton.closest("form");
29323    var oFormData = oNodeForm.serializeObject(); 
29324
29325    oFormData['action']           = 'ctl-wp-studio';
29326    oFormData['execute']          = 'ctl-ecommerce';        
29327    oFormData['extension-action'] = 'pay-order'; 
29328    
29329    var oNodeFormBillingAddress = jQuery(".ctl-ecommerce-form-billing-address");
29330    if ( oNodeFormBillingAddress.length > 0 ){
29331        var oBillingAddressFormData = oNodeFormBillingAddress.serializeObject();
29332        if ( ctlFormFieldsCheckIfFormIsFilled(oNodeFormBillingAddress) === false){
29333            return;
29334        }else{
29335            oFormData['billing-address'] = oBillingAddressFormData["billing-address"]; 
29336        }
29337    }
29338
29339    var oNodeFormShippingAddress = jQuery(".ctl-ecommerce-form-shipping-address");
29340    if ( oNodeFormShippingAddress.length > 0 ){
29341        var oShippingAddressFormData = oNodeFormShippingAddress.serializeObject();
29342        if ( ctlFormFieldsCheckIfFormIsFilled(oNodeFormShippingAddress) === false){
29343            return;
29344        }else{
29345            oFormData['shipping-address'] = oShippingAddressFormData["shipping-address"]; 
29346        }
29347    }    
29348
29349    var idLoading = g_oCTLWPStudio.showLoading("");
29350
29351    jQuery.ajax({
29352        url : g_oCTLWPStudio._oLangCommon["ajaxurl"],
29353        type: "POST",
29354        data : oFormData,
29355        cache: false,
29356        method: 'POST',
29357        success:function(response, textStatus, jqXHR){				
29358            var oResponse = jQuery.parseJSON(response);
29359            g_oCTLWPStudio.closeDlg(idLoading);
29360            if( oResponse.res === false ){               
29361                if ( oResponse.alert ){
29362                    alert(oResponse.alert);
29363                }else{
29364                    alert(g_oCTLWPStudio._oLangCommon["Ooops! Something Went Wrong!"]);  
29365                }           
29366            }else{  
29367                switch(oFormData['payment-method'] ){
29368                    case "nexi":{
29369                            g_oCTLWPStudio.showLoading("");
29370                            jQuery("#nexi-payment").submit();
29371                        return;
29372                    }break;
29373                    case "bank-transfer":{
29374                        g_oCTLWPStudio.showLoading("");
29375                        window.location.href = oNodeButton.attr("data-redirect") +
29376                                                "?order-id=" + oFormData["order-id"];
29377                    }break;
29378                    case "sdd":{
29379                        g_oCTLWPStudio.showLoading("");
29380                        window.location.href = oNodeButton.attr("data-redirect") +
29381                                                "?order-id=" + oFormData["order-id"];
29382                    }break;
29383                }
29384            }
29385        },
29386        error: function(jqXHR, textStatus, errorThrown){
29387            g_oCTLWPStudio.closeDlg(idLoading);
29388            alert(g_oCTLWPStudio._oLangCommon["Ooops! Something Went Wrong!"]);  
29389        }
29390    });  
29391}
29392
29393function ctlEcommerceAddProductIntoCartFromCartSummary( oNodeButton ){
29394    var oNodeForm = oNodeButton.closest("form");
29395    var oFormData  = oNodeForm.serializeObject();
29396
29397    oFormData['action']           = 'ctl-wp-studio';
29398    oFormData['execute']          = 'ctl-ecommerce';        
29399    oFormData['extension-action'] = 'add-product-to-cart-from-cart-summary';  
29400
29401
29402    if ( !oFormData['product-id'] || !oFormData['qty'] ){
29403        g_oCTLBootstrapModals.alert("", g_oCTLEcommerceLocalizationFront["Select at least one product."]); 
29404        return;
29405    }
29406
29407    var idLoading = g_oCTLWPStudio.showLoading("");
29408
29409    jQuery.ajax({
29410        url : g_oCTLWPStudio._oLangCommon["ajaxurl"],
29411        type: "POST",
29412        data : oFormData,
29413        cache: false,
29414        method: 'POST',
29415        success:function(response, textStatus, jqXHR){				
29416            var oResponse = jQuery.parseJSON(response);
29417            g_oCTLWPStudio.closeDlg(idLoading);
29418            if( oResponse.res === false ){               
29419                if ( oResponse.alert ){
29420                    alert(oResponse.alert);
29421                }else{
29422                    alert(g_oCTLWPStudio._oLangCommon["Ooops! Something Went Wrong!"]);  
29423                }           
29424            }else{  
29425                g_oCTLWPStudio.showLoading("");
29426                window.location.reload();
29427            }
29428        },
29429        error: function(jqXHR, textStatus, errorThrown){
29430            g_oCTLWPStudio.closeDlg(idLoading);
29431            alert(g_oCTLWPStudio._oLangCommon["Ooops! Something Went Wrong!"]);  
29432        }
29433    });      
29434
29435}
29436
29437
29438function ctlEcommercePutProductIntoCart( idProduct, szProductTitle, iQty ){
29439    var oFormData  = {}; 
29440    oFormData['action']           = 'ctl-wp-studio';
29441    oFormData['execute']          = 'ctl-ecommerce';        
29442    oFormData['extension-action'] = 'add-product-to-cart';  
29443    oFormData['qty']              = iQty;
29444    oFormData['product-id']       = idProduct;
29445
29446    var idLoading = g_oCTLWPStudio.showLoading("");
29447
29448    jQuery.ajax({
29449        url : g_oCTLWPStudio._oLangCommon["ajaxurl"],
29450        type: "POST",
29451        data : oFormData,
29452        cache: false,
29453        method: 'POST',
29454        success:function(response, textStatus, jqXHR){				
29455            var oResponse = jQuery.parseJSON(response);
29456            g_oCTLWPStudio.closeDlg(idLoading);
29457            if( oResponse.res === false ){               
29458                if ( oResponse.alert ){
29459                    alert(oResponse.alert);
29460                }else{
29461                    alert(g_oCTLWPStudio._oLangCommon["Ooops! Something Went Wrong!"]);  
29462                }           
29463            }else{  
29464                ctlEcommerceGetCart();
29465
29466                var htmlCartLink = '<hr><a href="' + oResponse.url_cart + 
29467                                   '" class="ctl-show-loading d-block"><i class="ctl-wp-studio-icons-basket mr-1"></i>' + 
29468                                   g_oCTLEcommerceLocalizationFront["go to cart"] + '</a>';
29469
29470                g_oToasts.appendToast( g_oCTLEcommerceLocalizationFront["Cart"], 
29471                                        szProductTitle + htmlCartLink, "info", "text-break", true );
29472            }
29473        },
29474        error: function(jqXHR, textStatus, errorThrown){
29475            g_oCTLWPStudio.closeDlg(idLoading);
29476            alert(g_oCTLWPStudio._oLangCommon["Ooops! Something Went Wrong!"]);  
29477        }
29478    });  
29479}
29480
29481function ctlEcommerceGetCart(){
29482    var oFormData  = {}; 
29483    oFormData['action']           = 'ctl-wp-studio';
29484    oFormData['execute']          = 'ctl-ecommerce';        
29485    oFormData['extension-action'] = 'get-cart';  
29486
29487    jQuery.ajax({
29488        url : g_oCTLWPStudio._oLangCommon["ajaxurl"],
29489        type: "POST",
29490        data : oFormData,
29491        cache: false,
29492        method: 'POST',
29493        success:function(response, textStatus, jqXHR){				
29494            var oResponse = jQuery.parseJSON(response);
29495
29496            if( oResponse.res === false ){
29497                if ( oResponse.alert ){
29498                    alert(oResponse.alert);
29499                }else{
29500                    alert(g_oCTLWPStudio._oLangCommon["Ooops! Something Went Wrong!"]);  
29501                }           
29502            }else{  
29503                ctlEcommerceUpdateCartIcon(oResponse.items, 
29504                                           oResponse.total_qty, 
29505                                           oResponse.total_price,
29506                                           oResponse.url_cart );
29507            }
29508        },
29509        error: function(jqXHR, textStatus, errorThrown){
29510            alert(g_oCTLWPStudio._oLangCommon["Ooops! Something Went Wrong!"]);  
29511        }
29512    }); 
29513}
29514
29515function ctlEcommerceUpdateCartIcon( items, total_qty, total_price, url_cart ){
29516    var oNodeCartIcon = jQuery(".ctl-cart-action-open-cart"); 
29517    
29518    if ( oNodeCartIcon.length === 0 ){
29519        return;
29520    }
29521
29522    var oNodeCounter = oNodeCartIcon.find(".counter");
29523
29524    if ( total_qty > 0 ){
29525        oNodeCounter.fadeIn();
29526        oNodeCounter.text(total_qty);
29527        oNodeCounter.removeClass("d-none");
29528    }else{
29529        oNodeCounter.text("");
29530        oNodeCounter.addClass("d-none");        
29531    }
29532
29533    oNodeCartIcon.removeClass("ctl-loading");
29534
29535    oNodeCartIcon.attr("data-url", url_cart);
29536}
29537// file: /var/www/vhosts/codethislab.com/httpdocs/wp-content/plugins/ctl-wp-studio/classes/extensions/ctl-editors-framework/php/../js/front.js
29538function __ctlEditorFrameworkMapEventKeyDownSaveHandler(){
29539    jQuery(document).off('keydown', '.ctltextfield .form-control, .ctlnumfield .form-control');
29540    jQuery(document).one('keydown', '.ctltextfield .form-control, .ctlnumfield .form-control', function(e){
29541        if(e.key === "Enter" && !e.originalEvent.repeat) {
29542            var oNodeControl = jQuery(this);
29543
29544            if (oNodeControl.closest(".ctl-multi-edit-post").length > 0 ){
29545                oNodeControl.closest(".ctl-multi-edit-post").find(".ctl-editors-action-multi-edit-posts:visible").click();
29546            }else if (oNodeControl.closest(".ctl-edit-post").length > 0 ){
29547                if ( oNodeControl.closest(".ctl-modal-content").length > 0 ){
29548                    oNodeControl.closest(".ctl-modal-content").find(".ctl-editors-action-edit-post-data:visible").click();
29549                }else{
29550                    oNodeControl.closest(".ctl-edit-post").find(".ctl-editors-action-edit-post-data:visible").click();
29551                }
29552            }else if (oNodeControl.closest(".ctl-create-post").length > 0 ){
29553                if ( oNodeControl.closest(".ctl-modal-content").length > 0 ){
29554                    oNodeControl.closest(".ctl-modal-content").find(".ctl-editors-action-create-post:visible").click();
29555                }else{
29556                    oNodeControl.closest(".ctl-create-post").find(".ctl-editors-action-create-post:visible").click();
29557                }
29558            }else if (oNodeControl.closest(".ctl-create-user").length > 0 ){
29559                if ( oNodeControl.closest(".ctl-modal-content").length > 0 ){
29560                    oNodeControl.closest(".ctl-modal-content").find(".ctl-editors-action-create-user:visible").click();
29561                }else{
29562                    oNodeControl.closest(".ctl-create-user").find(".ctl-editors-action-create-user:visible").click();
29563                }
29564            }else if (oNodeControl.closest(".ctl-edit-user").length > 0 ){
29565                if ( oNodeControl.closest(".ctl-modal-content").length > 0 ){
29566                    oNodeControl.closest(".ctl-modal-content").find(".ctl-editors-action-edit-user-data:visible").click();
29567                }else{
29568                    oNodeControl.closest(".ctl-edit-user").find(".ctl-editors-action-edit-user-data:visible").click();
29569                }
29570            }
29571        }else{
29572            __ctlEditorFrameworkMapEventKeyDownSaveHandler();
29573        }
29574    });    
29575}
29576
29577jQuery(document).ready(function(){
29578
29579    jQuery(document).on( "click", ".ctl-multilanguage-action-apply-language", function(){        
29580        ctlMultilanguageApplyLanguage(jQuery(this).attr("data-lang"));
29581    });     
29582
29583    jQuery(document).on( "click", ".ctl-multilanguage-action-change-language", function(){        
29584        ctlMultilanguageListLanguagesAndShowChangeLanguageDialog(true);
29585    }); 
29586
29587    jQuery(document).on('click', ".ctl-wp-studio-form-control-wrapper button", function(){ 
29588        jQuery(this).blur();
29589    }); 
29590    
29591    __ctlEditorFrameworkInitPriceCalculationFields();
29592
29593    wpdk_add_action("ctl-theme-bootstrap-modals-show-modal", function( oNodeModal ){  
29594        __ctlEditorFrameworkInitPriceCalculationFields();      
29595        __ctlEditorFrameworkAdaptModal(oNodeModal);     
29596    });
29597
29598    //--------------------------
29599
29600    __ctlEditorFrameworkMapEventKeyDownSaveHandler();
29601    
29602    //--------------------------
29603
29604    jQuery(document).on("ajax-update", function( e, szClickAction, bSuccess, oFormData, oResponse ){
29605        switch(szClickAction){
29606            case "ctl-editors-action-edit-post":{
29607                var oNodeMultiEditPosts = jQuery(".ctl-edit-data-container-"+oFormData["widget-id"]).closest(".ctl-multi-edit-post");
29608
29609                if ( oNodeMultiEditPosts.length > 0 ){
29610                    __ctlEditorFrameworkMultiEditPostsExecuteForm(
29611                        oNodeMultiEditPosts.find(".ctl-editors-action-multi-edit-posts"));
29612                }
29613            }break;
29614        }
29615    });    
29616
29617    jQuery(document).on("click", ".ctl-editors-action-goods-receipt-confirm-quantity", function(){
29618        var fQuantity = parseFloat(jQuery(this).data("quantity"));
29619        var oNodeForm = jQuery(this).closest(".ctl-edit-post-form");
29620
29621        oNodeForm.find('input[name=goods-receipt]').val(fQuantity).trigger("change");
29622    });
29623
29624    jQuery(document).on("click", ".ctl-editors-action-goods-receipt-confirm-quantity-and-save-post", function(){
29625        var fQuantity = parseFloat(jQuery(this).data("quantity"));
29626        var oNodeForm = jQuery(this).closest(".ctl-edit-post-form");
29627        var oNodeContainer = jQuery(this).closest(".ctl-edit-post-data-container");
29628
29629        oNodeForm.find('input[name=goods-receipt]').val(fQuantity).trigger("change");
29630
29631        jQuery(".ctl-editors-action-edit-post-data-"+oNodeForm.find("input[name=widget-id]").val()).first().click();
29632    });
29633
29634    jQuery(document).on("click", ".ctl-editors-framework-action-preview-pdf", function(e){
29635        e.preventDefault();
29636        e.stopPropagation();
29637        ctlShowPDFViewer(0,jQuery(this).attr("href"), {show_save_button : true});
29638    });
29639
29640    jQuery(document).on("click", ".ctl-editors-action-multi-edit-posts", function(){
29641        let oNodeButton = jQuery(this);
29642        let oNodeMultiEditPosts = jQuery(this).closest(".ctl-multi-edit-post");
29643
29644        window["g_aEditPostSequence"] = [];
29645
29646        let bFormErrors = false;
29647        oNodeMultiEditPosts.find(".ctl-editors-action-edit-post-data").each(function(){
29648            let oNodeButtonEditPostData = jQuery(this);
29649            window["g_aEditPostSequence"].push(oNodeButtonEditPostData);
29650                    
29651            let oNodeForm = jQuery("form[data-widget-id="+oNodeButtonEditPostData.attr("data-widget-id")+"]");
29652            let oFormData = oNodeForm.serializeObject();
29653
29654            let aStatusesToIgnoreMandatoryFields = 
29655                oNodeButtonEditPostData.attr("data-statuses-to-ignore-mandatory-fields").split(",");
29656            let bIgnoreMandatoryFields = false;
29657            for( let i = 0; i < aStatusesToIgnoreMandatoryFields.length; i++ ){
29658                if ( aStatusesToIgnoreMandatoryFields[i] === oFormData["post-status"] ){
29659                    bIgnoreMandatoryFields = true;
29660                    break;
29661                }
29662            }
29663
29664            if( bIgnoreMandatoryFields == false && 
29665                ctlFormFieldsCheckIfFormIsFilled(oNodeForm) === false ){
29666                bFormErrors = true;
29667            }
29668
29669            let oNodeExtraForm = null;
29670            if ( oFormData["extra-form-id"]){
29671                oNodeExtraForm = jQuery("form.layout-"+oFormData["extra-form-id"]);
29672                if ( bIgnoreMandatoryFields || ctlFormFieldsCheckIfFormIsFilled(oNodeExtraForm) ){
29673                    oFormData["extra-data"] = oNodeExtraForm.serializeObject();
29674                }else{
29675                    bFormErrors = true;
29676                }
29677            }
29678        });
29679
29680        if (bFormErrors){
29681            __ctlEditorFrameworkMapEventKeyDownSaveHandler();
29682            return;
29683        }
29684
29685        __ctlEditorFrameworkMultiEditPostsExecuteForm(oNodeButton);
29686    });
29687
29688    jQuery(document).on("change", 'input[id*="calendar-all-day"]',function(){
29689        var oNodeCheckbox = jQuery(this);
29690        var oNodeRow = oNodeCheckbox.closest(".row");
29691        var oNodeTimeStartPicker = oNodeRow.find(".calendar-time-start-picker");
29692        var oNodeTimeEndPicker = oNodeRow.find(".calendar-time-end-picker");
29693
29694        if(oNodeCheckbox.is(":checked")){
29695            oNodeTimeStartPicker.addClass("d-none");
29696            oNodeTimeEndPicker.addClass("d-none");
29697
29698            let oNodeTimeStartInput = oNodeTimeStartPicker.find('input[name="calendar-times-start[]"]');
29699            let oNodeTimeEndInput = oNodeTimeEndPicker.find('input[name="calendar-times-end[]"]');
29700
29701            oNodeTimeStartInput.data("value-before-all-day", oNodeTimeStartInput.val());
29702            oNodeTimeEndInput.data("value-before-all-day", oNodeTimeEndInput.val());
29703
29704            oNodeTimeStartInput.val(
29705                moment("00:00:00", "HH:mm:ss").locale("it").format(oNodeTimeStartInput.attr("data-format"))
29706            ).trigger('input');
29707
29708            oNodeTimeEndInput.val(
29709                moment("00:00:00", "HH:mm:ss").locale("it").format(oNodeTimeEndInput.attr("data-format"))
29710            ).trigger('input');
29711        }else{
29712            oNodeTimeStartPicker.removeClass("d-none");
29713            oNodeTimeEndPicker.removeClass("d-none");
29714
29715            let oNodeTimeStartInput = oNodeTimeStartPicker.find('input[name="calendar-times-start[]"]');
29716            let oNodeTimeEndInput = oNodeTimeEndPicker.find('input[name="calendar-times-end[]"]');
29717
29718            oNodeTimeStartInput.val(
29719                moment(oNodeTimeStartInput.data("value-before-all-day"), "HH:mm:ss").locale("it").format(oNodeTimeStartInput.attr("data-format"))
29720            ).trigger('input');
29721
29722            oNodeTimeEndInput.val(
29723                moment(oNodeTimeEndInput.data("value-before-all-day"), "HH:mm:ss").locale("it").format(
29723oNodeTimeEndInput.attr("data-format"))
29724            ).trigger('input');
29725        }
29726    });
29727
29728    jQuery(document).on("change", 'select[name="vat-tax"]',function(){
29729        var oNodeSelect      = jQuery(this);
29730        var idSelectedVATTax = oNodeSelect.find("option:selected").val();
29731        
29732        var oNodeCreatePost = oNodeSelect.closest(".ctl-create-post");
29733        var oNodeEditPost   = oNodeSelect.closest(".ctl-edit-post");
29734        var oEditorFormToUpdate;
29735        if (oNodeCreatePost.length > 0) {
29736            oEditorFormToUpdate = oNodeCreatePost;
29737        }else if(oNodeEditPost.length > 0){
29738            oEditorFormToUpdate = oNodeEditPost;
29739        }
29740
29741        let szVatTaxFieldName = "vat-tax";
29742        if (idSelectedVATTax) {
29743            __ctlEditorFrameworkUpdateVATTaxPercentage(
29744                oNodeSelect,
29745                idSelectedVATTax,
29746                ()=>{
29747                    __ctlEditorFrameworkUpdatePriceCalculations(oEditorFormToUpdate,szVatTaxFieldName);
29748                }
29749            );
29750        }else{
29751            oNodeSelect.data("vat-tax-percentage", 0);
29752            __ctlEditorFrameworkUpdatePriceCalculations(oEditorFormToUpdate,szVatTaxFieldName);
29753        }
29754    });
29755
29756    jQuery(document).on("change", 'select[name="brand"]',function(){
29757        var oNodeSelect      = jQuery(this);
29758        var idSelectedBrand = oNodeSelect.find("option:selected").val();
29759        
29760        var oNodeCreatePost = oNodeSelect.closest(".ctl-create-post");
29761        var oNodeEditPost   = oNodeSelect.closest(".ctl-edit-post");
29762        var oEditorFormToUpdate;
29763        if (oNodeCreatePost.length > 0) {
29764            oEditorFormToUpdate = oNodeCreatePost;
29765        }else if(oNodeEditPost.length > 0){
29766            oEditorFormToUpdate = oNodeEditPost;
29767        }
29768
29769        let szPriceListDiscountFieldName = "price-list-discount";
29770        if (idSelectedBrand) {
29771            __ctlEditorFrameworkUpdateBrandPriceData(
29772                oNodeSelect,
29773                idSelectedBrand,
29774                ( fPriceListDiscount )=>{
29775                    oEditorFormToUpdate.find('input[name=price-list-discount]').val(fPriceListDiscount);
29776                    __ctlEditorFrameworkUpdatePriceCalculations(oEditorFormToUpdate,szPriceListDiscountFieldName);
29777                }
29778            );
29779        }else{
29780            oEditorFormToUpdate.find('input[name=price-list-discount]').val(0);
29781            __ctlEditorFrameworkUpdatePriceCalculations(oEditorFormToUpdate,szPriceListDiscountFieldName);
29782        }
29783    });    
29784
29785    jQuery(document).on("change input paste", ".ctl-create-post-form input[name=percentage-profit], .ctl-create-post-form input[name=price], .ctl-create-post-form input[name=price-list], .ctl-create-post-form input[name=price-list-discount], .ctl-create-post-form input[name=qty], .ctl-create-post-form input[name=qty-2],  .ctl-create-post-form input[name=qty-3], .ctl-create-post-form input[name=cost], .ctl-create-post-form input[name=discount]", function(e, bPreventCalculations){
29786        if(!bPreventCalculations){
29787            __ctlEditorFrameworkUpdatePriceCalculations(jQuery(this).closest(".ctl-create-post"),jQuery(this).attr("name"));
29788        }
29789    });
29790
29791    jQuery(document).on("change input paste", ".ctl-edit-post-form input[name=percentage-profit], .ctl-edit-post-form input[name=price], .ctl-edit-post-form input[name=price-list], .ctl-edit-post-form input[name=price-list-discount], .ctl-edit-post-form input[name=qty], .ctl-edit-post-form input[name=qty-2], .ctl-edit-post-form input[name=qty-3], .ctl-edit-post-form input[name=cost], .ctl-edit-post-form input[name=discount]", function(e, bPreventCalculations){
29792        if(!bPreventCalculations){
29793            __ctlEditorFrameworkUpdatePriceCalculations(jQuery(this).closest(".ctl-edit-post"),jQuery(this).attr("name"));
29794        }
29795    });
29796
29797    jQuery(document).on("change input paste", ".ctl-edit-user-form input[name=price], .ctl-edit-user-form input[name=cost]", function(e, bPreventCalculations){
29798        if(!bPreventCalculations){
29799            __ctlEditorFrameworkUpdatePriceCalculations(jQuery(this).closest(".ctl-edit-user"),jQuery(this).attr("name"));
29800        }
29801    });    
29802
29803    jQuery(document).on("change input paste", ".ctluploadfield .custom-file-input", function(){
29804        let oButtonUploadGalleryAttachment = jQuery(this).closest(".ctluploadfield").find(".ctl-editor-framework-action-upload-gallery-attachment");
29805
29806        if ( oButtonUploadGalleryAttachment.length > 0 ){
29807            if ( jQuery(this).val() == "" ){
29808                oButtonUploadGalleryAttachment.addClass("disabled");
29809            }else{
29810                oButtonUploadGalleryAttachment.removeClass("disabled");
29811            }
29812        }
29813
29814        let oButtonUploadGalleryImage = jQuery(this).closest(".ctluploadfield").find(".ctl-editor-framework-action-upload-gallery-image");
29815        if ( oButtonUploadGalleryImage.length > 0 ){
29816            if ( jQuery(this).val() == "" ){
29817                oButtonUploadGalleryImage.addClass("disabled");
29818            }else{
29819                oButtonUploadGalleryImage.removeClass("disabled");
29820            }
29821        }
29822
29823    });
29824
29825    jQuery(document).on("change input paste", ".ctluploadfield .custom-file-image-input", function(){
29826        let oButtonUpload = jQuery(this).closest(".ctluploadfield").find(".ctl-editor-framework-action-upload-post-featured-image");
29827        if ( jQuery(this).val() == "" ){
29828            oButtonUpload.addClass("disabled");
29829        }else{
29830            oButtonUpload.removeClass("disabled");
29831        }
29832    });
29833
29834    jQuery(document).on("click", ".ctl-editors-action-add-workers-into-group", function(){
29835        __ctlHRManagementAddWorkersIntoGroup(jQuery(this));
29836    });
29837
29838    jQuery(document).on("click", ".ctl-editors-action-derivate-post", function(){
29839        __ctlEditorFrameworkDerivatePost(jQuery(this));
29840    });
29841
29842    jQuery(document).on("click", ".ctl-editors-action-change-post-status", function(){
29843        __ctlEditorFrameworkChangePostStatus(jQuery(this));
29844    });
29845
29846    jQuery(document).on("click", ".ctl-editors-inline-status-buttons-action-change-post-status", function(){
29847        __ctlEditorFrameworkInlineStatusButtonsChangePostStatus(jQuery(this));
29848    });    
29849
29850    jQuery(document).on("click", ".ctl-editors-action-massive-import-upload", function(){
29851        __ctlEditorFrameworkMassiveImportUpload(jQuery(this));
29852    });
29853    jQuery(document).on("click", ".ctl-editors-action-massive-import-compute", function(){
29854        __ctlEditorFrameworkMassiveImportCompute(jQuery(this));
29855    });    
29856    jQuery(document).on("click", ".ctl-editors-action-massive-import-clear", function(){
29857        __ctlEditorFrameworkMassiveImportClear(jQuery(this));
29858    });        
29859
29860    jQuery(document).on("click", ".ctl-editors-action-show-edit-post-status", function(){
29861        __ctlEditorFrameworkShowEditPostStatus(jQuery(this));
29862    }); 
29863           
29864    jQuery(document).on("click", ".ctl-editors-action-edit-user-quotas", function(){
29865        __ctlEditorFrameworkEditUserQuotas(jQuery(this));
29866    });    
29867
29868    jQuery(document).on("click", ".ctl-editors-framework-action-send-editor-request", function(){
29869        __ctlEditorFrameworkUserSendEditorRequest(jQuery(this));
29870    });  
29871
29872    jQuery(document).on("click", ".btn-action-show-post-differencies", function(){
29873        ctlEditorFrameworkShowPostRestorePoint(
29874                    JSON.parse(
29875                        Base64.decode(
29876                            jQuery(this).attr("data-differencies"))));
29877    });
29878
29879    jQuery(document).on("click", ".ctl-editors-action-empty-post-featured-image", function(){
29880        var oNodeWrapper = jQuery(this).closest(".ctl-post-featured-image-wrapper");
29881        var szDefaultImage = oNodeWrapper.find('img').attr("data-default-image");
29882
29883        oNodeWrapper.find('img').attr("src",szDefaultImage);
29884        oNodeWrapper.find('input[name=featured-image-id]').val("");
29885        jQuery(this).addClass("d-none");
29886
29887        if ( szDefaultImage == ctl_wp_studio_common_localization["szDefaultImage"] ){
29888            oNodeWrapper.find(".ctl-editors-action-download-featured-image").addClass("d-none");
29889        }else{
29890            oNodeWrapper.find(".ctl-editors-action-download-featured-image").attr("href", szDefaultImage);
29891        }
29892
29893        ctlEditorFrameworkEditPostAutoSaveData(jQuery(this).closest(".ctl-edit-post-data-container").find(".ctl-editors-action-edit-post-data"));    
29894    });
29895
29896    jQuery(document).on("click", ".ctl-editors-action-empty-profile-picture", function(){
29897        var oNodeWrapper = jQuery(this).closest(".ctl-user-profile-picture-wrapper");
29898        oNodeWrapper.find('img').attr("src", ctl_wp_studio_common_localization["szDefaultImage"]);
29899        oNodeWrapper.find('input[name=profile_picture]').val("");
29900        oNodeWrapper.find('.ctl-editors-action-preview-media-field').addClass('d-none');
29901    });    
29902
29903    jQuery(document).on("click", ".ctl-editor-framework-action-clear-image-gallery", function(){
29904        var oNodeModal = jQuery(this).closest(".modal");
29905        var oNodeForm = jQuery("#media-gallery").find("form");
29906
29907        oNodeForm.find('input[name="ctl-media-gallery-selected[]"]').prop( "checked", false );
29908
29909        __ctlEditorFrameworkUpdatePostGallery(oNodeForm, "image");
29910
29911        oNodeModal.modal("hide");
29912    });
29913    
29914    jQuery(document).on("click", ".ctl-editors-action-delete-post-status", function(){
29915        var oNodeForm = jQuery(this).closest("form");
29916
29917        if ( ctlFormFieldsCheckIfFormIsFilled(oNodeForm) === false){
29918            return;
29919        }
29920
29921        var oFormData = oNodeForm.serializeObject();
29922
29923        oFormData['action']           = 'ctl-wp-studio';
29924        oFormData['execute']          = 'ctl-editors-framework';        
29925        oFormData['extension-action'] = 'delete-post-status';
29926        oFormData['post-id'] = jQuery(this).attr("data-post-id");  
29927
29928        var idLoading = g_oCTLWPStudio.showLoading("");
29929    
29930        jQuery.ajax({
29931            url : g_oCTLWPStudio._oLangCommon["ajaxurl"],
29932            type: "POST",
29933            data : oFormData,
29934            cache: false,
29935            method: 'POST',
29936            success:function(response, textStatus, jqXHR){  
29937                var oResponse = jQuery.parseJSON(response);    
29938                if( oResponse.res === false ){   
29939                    g_oCTLWPStudio.closeDlg(idLoading);                                     
29940                    if ( oResponse.alert ){
29941                        g_oCTLBootstrapModals.alert("", oResponse.alert );
29942                    }                
29943                }else{
29944                    window.location.reload();
29945                }
29946            },
29947            error: function(jqXHR, textStatus, errorThrown){
29948                g_oCTLWPStudio.closeDlg(idLoading);
29949                alert(g_oCTLWPStudio._oLangCommon["Ooops! Something Went Wrong!"]);  
29950            }
29951        }); 
29952    });
29953
29954    jQuery(document).on("click", ".ctl-editors-action-update-post-status", function(){
29955        var oNodeForm = jQuery(this).closest("form");
29956
29957        if ( ctlFormFieldsCheckIfFormIsFilled(oNodeForm) === false){
29958            return;
29959        }
29960
29961        var oFormData = oNodeForm.serializeObject();
29962
29963        oFormData['action']           = 'ctl-wp-studio';
29964        oFormData['execute']          = 'ctl-editors-framework';        
29965        oFormData['extension-action'] = 'update-post-status';  
29966
29967        var idLoading = g_oCTLWPStudio.showLoading("");
29968    
29969        jQuery.ajax({
29970            url : g_oCTLWPStudio._oLangCommon["ajaxurl"],
29971            type: "POST",
29972            data : oFormData,
29973            cache: false,
29974            method: 'POST',
29975            success:function(response, textStatus, jqXHR){  
29976                g_oCTLWPStudio.closeDlg(idLoading);              
29977                var oResponse = jQuery.parseJSON(response);    
29978                if( oResponse.res === false ){                                      
29979                    if ( oResponse.alert ){
29980                        g_oCTLBootstrapModals.alert("", oResponse.alert );
29981                    }                
29982                }else{
29983                    if ( oResponse.redirect ){
29984                        window.location.href = oResponse.redirect;
29985                    }else{
29986                        window.location.reload();
29987                    } 
29988                }
29989            },
29990            error: function(jqXHR, textStatus, errorThrown){
29991                g_oCTLWPStudio.closeDlg(idLoading);
29992                alert(g_oCTLWPStudio._oLangCommon["Ooops! Something Went Wrong!"]);  
29993            }
29994        }); 
29995    });
29996
29997    jQuery(document).on("click", ".ctl-editors-action-create-post-status", function(){
29998        var oNodeForm = jQuery(this).closest("form");
29999
30000        if ( ctlFormFieldsCheckIfFormIsFilled(oNodeForm) === false){
30001            return;
30002        }
30003
30004        var oFormData = oNodeForm.serializeObject();
30005
30006        oFormData['action']           = 'ctl-wp-studio';
30007        oFormData['execute']          = 'ctl-editors-framework';        
30008        oFormData['extension-action'] = 'create-post-status';  
30009
30010        var idLoading = g_oCTLWPStudio.showLoading("");
30011    
30012        jQuery.ajax({
30013            url : g_oCTLWPStudio._oLangCommon["ajaxurl"],
30014            type: "POST",
30015            data : oFormData,
30016            cache: false,
30017            method: 'POST',
30018            success:function(response, textStatus, jqXHR){  
30019                g_oCTLWPStudio.closeDlg(idLoading);              
30020                var oResponse = jQuery.parseJSON(response);    
30021                if( oResponse.res === false ){                                      
30022                    if ( oResponse.alert ){
30023                        g_oCTLBootstrapModals.alert("", oResponse.alert );
30024                    }                
30025                }else{
30026                    if ( oResponse.redirect ){
30027                        window.location.href = oResponse.redirect;
30028                    }else{
30029                        window.location.reload();
30030                    } 
30031                }
30032            },
30033            error: function(jqXHR, textStatus, errorThrown){
30034                g_oCTLWPStudio.closeDlg(idLoading);
30035                alert(g_oCTLWPStudio._oLangCommon["Ooops! Something Went Wrong!"]);  
30036            }
30037        }); 
30038    });
30039
30040    jQuery(document).on("click", ".ctl-editors-action-show-post-history", function(){
30041
30042        var oFormData = {};
30043        var oNodeForm = jQuery("form[data-widget-id="+jQuery(this).attr("data-widget-id")+"]");
30044        var oFormData = oNodeForm.serializeObject();
30045        
30046        oFormData['action']           = 'ctl-wp-studio';
30047        oFormData['execute']          = 'ctl-editors-framework';        
30048        oFormData['extension-action'] = 'get-post-history';  
30049
30050        var idLoading = g_oCTLWPStudio.showLoading("");
30051    
30052        jQuery.ajax({
30053            url : g_oCTLWPStudio._oLangCommon["ajaxurl"],
30054            type: "POST",
30055            data : oFormData,
30056            cache: false,
30057            method: 'POST',
30058            success:function(response, textStatus, jqXHR){  
30059                g_oCTLWPStudio.closeDlg(idLoading);              
30060                var oResponse = jQuery.parseJSON(response);    
30061                if( oResponse.res === false ){                                      
30062                    if ( oResponse.alert ){
30063                        g_oCTLBootstrapModals.alert("", oResponse.alert );
30064                    }else if ( oResponse.desc ){
30065                        switch(oResponse.desc){
30066                            case "invalid_user":{
30067                                g_oCTLWPStudio.showLoading("");
30068                                window.location.reload();
30069                            }break;
30070                            default:{
30071                                g_oCTLBootstrapModals.alert("", oResponse.desc);
30072                            }
30073                        }
30074                    }                 
30075                }else{
30076                    g_oCTLBootstrapModals.showModal({
30077                        wrapper_classes : "ctl-post-history",
30078                        modal_title : g_oCTLEditorsFrameworkLocalizationFront["Post history"],
30079                        modal_content : ctlEditorFrameworkFormatPostHistory( 
30080                                    oResponse.history, oResponse.current ),
30081                        entrance_animation : "animate__slideInUp",
30082                        exit_animation : "animate__slideOutDown",                        
30083                        closeable : true,
30084                        width: '50',
30085                        position: "centered",
30086                    });
30087                }
30088            },
30089            error: function(jqXHR, textStatus, errorThrown){
30090                g_oCTLWPStudio.closeDlg(idLoading);
30091                alert(g_oCTLWPStudio._oLangCommon["Ooops! Something Went Wrong!"]);  
30092            }
30093        }); 
30094    });
30095
30096    jQuery(document).on("click", ".ctl-editor-framework-action-update-image-gallery", function(){
30097        var oNodeModal = jQuery(this).closest(".modal");
30098        var oNodeForm = jQuery("#media-gallery").find("form");
30099
30100        __ctlEditorFrameworkUpdatePostGallery(oNodeForm, "image");
30101
30102        oNodeModal.modal("hide");
30103    });
30104
30105    jQuery(document).on("click", ".ctl-editor-framework-action-clear-attachment-gallery", function(){
30106        var oNodeModal = jQuery(this).closest(".modal");
30107        var oNodeForm = jQuery("#media-gallery").find("form");
30108
30109        oNodeForm.find('input[name="ctl-media-gallery-selected[]"]').prop( "checked", false );
30110
30111        __ctlEditorFrameworkUpdatePostGallery(oNodeForm, "attachment");
30112
30113        oNodeModal.modal("hide");
30114    });
30115
30116    jQuery(document).on("click", ".ctl-editor-framework-action-upload-profile-picture", function(){
30117        var oNodeModal = jQuery(this).closest(".modal"); 
30118        var oNodeForm  = jQuery(this).closest("form"); 
30119
30120        if ( ctlFormFieldsCheckIfFormIsFilled(oNodeForm) === false){
30121            return;
30122        }
30123
30124        var oFormData = new FormData();
30125        oFormData.append( 'user-id', oNodeForm.find('input[name=user-id]').val() );
30126        oFormData.append( 'extension-action', 'upload-profile-picture' );
30127        oFormData.append( 'file', oNodeForm.find('input[name=upload-image]')[0].files[0] );
30128        oFormData.append( 'widget-id', oNodeForm.find('input[name=widget-id]').val() );
30129        oFormData.append( 'action', 'ctl-wp-studio' );
30130        oFormData.append( 'execute', 'ctl-editors-framework' );        
30131
30132        ctlEditorFrameworkAjaxUpdateFormData(oNodeForm, oFormData, false, function(oResponse){      
30133            if ( oResponse.res === true ){
30134                jQuery(".ctl-user-profile-picture-wrapper").find("img").attr("src", oResponse.last_media.url);
30135                jQuery(".ctl-user-profile-picture-wrapper").find('input[name=profile_picture]').val(oResponse.last_media.id);
30136
30137                jQuery(".ctl-user-profile-picture-wrapper").find('.ctl-editors-action-preview-media-field').attr("href", oResponse.last_media.url);
30138                jQuery(".ctl-user-profile-picture-wrapper").find('.ctl-editors-action-preview-media-field').removeClass('d-none');
30139                jQuery(".ctl-user-profile-picture-wrapper").find('.ctl-editors-action-empty-profile-picture').removeClass('d-none');
30140
30141                oNodeModal.modal("hide");
30142            } else if ( oResponse.desc ){
30143                switch(oResponse.desc){
30144                    case "invalid_user":{
30145                        g_oCTLWPStudio.showLoading("");
30146                        window.location.reload();
30147                    }break;
30148                    default:{
30149                        g_oCTLBootstrapModals.alert("", oResponse.desc);
30150                    }
30151                }
30152            }          
30153        });
30154    });
30155
30156    jQuery(document).on("click", ".ctl-editor-framework-action-upload-post-featured-image", function(){
30157        var oNodeModal = jQuery(this).closest(".modal"); 
30158        var oNodeForm  = jQuery(this).closest("form"); 
30159
30160        if ( ctlFormFieldsCheckIfFormIsFilled(oNodeForm) === false){
30161            return;
30162        }
30163
30164        var oFormData = new FormData();
30165        oFormData.append( 'post-id', oNodeForm.find('input[name=post-id]').val() );
30166        oFormData.append( 'file', oNodeForm.find('input[name=upload-image]')[0].files[0] );
30167        oFormData.append( 'widget-id', oNodeForm.find('input[name=widget-id]').val() );
30168        oFormData.append( 'action', 'ctl-wp-studio' );
30169        oFormData.append( 'execute', 'ctl-editors-framework' );        
30170        oFormData.append( 'extension-action', 'upload-post-featured-image' );
30171
30172        ctlEditorFrameworkAjaxUpdateFormData(oNodeForm, oFormData, false, function(oResponse){      
30173            if ( oResponse.res === true ){
30174                jQuery("form[data-widget-id=" + oFormData.get('widget-id') + "] .ctl-post-featured-image-wrapper").find("img").attr("src", oResponse.last_media.url);
30175                jQuery("form[data-widget-id=" + oFormData.get('widget-id') + "] .ctl-post-featured-image-wrapper").find('input[name=featured-image-id]').val(oResponse.last_media.id).trigger("change");
30176
30177                jQuery("form[data-widget-id=" + oFormData.get('widget-id') + "] .ctl-post-featured-image-wrapper").find(".ctl-editors-action-download-featured-image").attr("href", oResponse.last_media.url);
30178                jQuery("form[data-widget-id=" + oFormData.get('widget-id') + "] .ctl-post-featured-image-wrapper").find(".ctl-editors-action-empty-post-featured-image").removeClass("d-none");
30179                oNodeModal.modal("hide");
30180            }else if ( oResponse.desc ){
30181                switch(oResponse.desc){
30182                    case "invalid_user":{
30183                        g_oCTLWPStudio.showLoading("");
30184                        window.location.reload();
30185                    }break;
30186                    default:{
30187                        g_oCTLBootstrapModals.alert("", oResponse.desc);
30188                    }
30189                }
30190            }            
30191        });
30192    });
30193
30194    jQuery(document).on("click", ".ctl-editor-framework-action-update-attachment-gallery", function(){
30195        var oNodeModal = jQuery(this).closest(".modal");
30196        var oNodeForm = jQuery("#media-gallery").find("form");
30197
30198        __ctlEditorFrameworkUpdatePostGallery(oNodeForm, "attachment");
30199
30200        oNodeModal.modal("hide");
30201    });   
30202    
30203    jQuery(document).on("click", ".ctl-editor-framework-action-delete-post-media-image", function(){
30204        var oNodeForm = jQuery(this).closest("form");
30205        var oFormData = oNodeForm.serializeObject();
30206
30207        __ctlEditorFrameworkDeletePostImage( 
30208                            oFormData["widget-id"],
30209                            oFormData["post-id"], 
30210                            jQuery(this).attr("data-id") );
30211    });
30212
30213    jQuery(document).on("click", ".ctl-editor-framework-action-delete-post-media-attachment", function(){
30214        var oNodeForm = jQuery(this).closest("form");
30215        var oFormData = oNodeForm.serializeObject();
30216        jQuery(this).attr("data-id")
30217
30218        __ctlEditorFrameworkDeletePostAttachment( 
30219                            oFormData["widget-id"],
30220                            oFormData["post-id"], 
30221                            jQuery(this).attr("data-id") );
30222    });    
30223
30224    jQuery(document).on("click",".ctl-editor-framework-action-upload-gallery-image", function(){
30225        let oNodeModal = jQuery(this).closest(".modal");
30226        let oNodeForm  = jQuery(this).closest("form"); 
30227        let oNodeMediaGalleryFolder = oNodeModal.find(".ctl-media-gallery-folder");
30228
30229        if ( ctlFormFieldsCheckIfFormIsFilled(oNodeForm) === false){
30230            return;
30231        }
30232
30233        var oFormData = new FormData();
30234        oFormData.append( 'post-id', oNodeForm.find('input[name=post-id]').val() );
30235        oFormData.append( 'widget-id', oNodeForm.find('input[name=widget-id]').val() );
30236        oFormData.append( 'action', 'ctl-wp-studio' );
30237        oFormData.append( 'execute', 'ctl-editors-framework' );        
30238        oFormData.append( 'extension-action', 'upload-post-gallery-image' );
30239
30240        let aFiles = oNodeForm.find('input[type="file"]')[0].files;
30241        for (let i = 0; i < aFiles.length; i++) {
30242            oFormData.append( 'file[]', aFiles[i] );
30243        }
30244
30245        ctlEditorFrameworkAjaxUpdateFormData(oNodeForm, oFormData, false, function(oResponse){      
30246            if ( oResponse.res === true ){
30247
30248                oResponse.new_media.forEach( mediaItem => {
30249                    oNodeMediaGalleryFolder.prepend(
30250                        __ctlEditorFrameworkHtmlImageInMediaGallery(mediaItem, true, "image"));
30251                });
30252
30253                ctlFormFieldsClearForm(oNodeForm); 
30254                jQuery(".ctl-media-gallery-modal .tab-link-media-gallery").click();
30255                g_oCTLWPStudio.onResize(oNodeMediaGalleryFolder);    
30256            }else if ( oResponse.desc ){
30257                switch(oResponse.desc){
30258                    case "invalid_user":{
30259                        g_oCTLWPStudio.showLoading("");
30260                        window.location.reload();
30261                    }break;
30262                    default:{
30263                        g_oCTLBootstrapModals.alert("", oResponse.desc);
30264                    }
30265                }
30266            }             
30267        });
30268    });
30269
30270    jQuery(document).on("click",".ctl-editor-framework-action-upload-gallery-attachment", function(){
30271        let oNodeModal = jQuery(this).closest(".modal");
30272        let oNodeForm  = jQuery(this).closest("form"); 
30273        let oNodeMediaGalleryFolder = oNodeModal.find(".ctl-media-gallery-folder");
30274
30275        if ( ctlFormFieldsCheckIfFormIsFilled(oNodeForm) === false){
30276            return;
30277        }
30278
30279        let oFormData = new FormData();
30280        oFormData.append( 'post-id', oNodeForm.find('input[name=post-id]').val() );
30281        oFormData.append( 'widget-id', oNodeForm.find('input[name=widget-id]').val() );
30282        oFormData.append( 'action', 'ctl-wp-studio' );
30283        oFormData.append( 'execute', 'ctl-editors-framework' );        
30284        oFormData.append( 'extension-action', 'upload-post-gallery-attachment' );
30285
30286        let aFiles = oNodeForm.find('input[type="file"]')[0].files;
30287        for (let i = 0; i < aFiles.length; i++) {
30288            oFormData.append( 'file[]', aFiles[i] );
30289        }
30290
30291        ctlEditorFrameworkAjaxUpdateFormData(oNodeForm, oFormData, false, function(oResponse){      
30292            if ( oResponse.res === true ){
30293
30294                oResponse.new_media.forEach( mediaItem => {
30295                    oNodeMediaGalleryFolder.prepend(
30296                        __ctlEditorFrameworkHtmlImageInMediaGallery(mediaItem, true, "attachment"));
30297                });
30298
30299                ctlFormFieldsClearForm(oNodeForm); 
30300                jQuery(".ctl-media-gallery-modal .tab-link-media-gallery").click();
30301
30302                g_oCTLWPStudio.onResize(oNodeMediaGalleryFolder);    
30303            }else if ( oResponse.desc ){
30304                switch(oResponse.desc){
30305                    case "invalid_user":{
30306                        g_oCTLWPStudio.showLoading("");
30307                        window.location.reload();
30308                    }break;
30309                }
30310            }          
30311        });
30312    });    
30313
30314    jQuery(document).on("click", ".ctl-editors-action-show-profile-picture-dlg", function(){
30315        var oNodeContainer = jQuery(this).closest(".ctl-edit-user-data-container");
30316        ctlEditorFrameworkProfilePicture(oNodeContainer);
30317    });    
30318    
30319    jQuery(document).on("input paste change", ".ctl-edit-post-data-container[data-autosave=1] input,.ctl-edit-post-data-container[data-autosave=1] textarea", function(){
30320
30321        ctlEditorFrameworkEditPostAutoSaveData(jQuery(this).closest(".ctl-edit-post-data-container").find(".ctl-editors-action-edit-post-data"));
30322    });
30323    jQuery(document).on("change", ".ctl-edit-post-data-container[data-autosave=1] select", function(){
30324
30325        ctlEditorFrameworkEditPostAutoSaveData(jQuery(this).closest(".ctl-edit-post-data-container").find(".ctl-editors-action-edit-post-data"));
30326    });    
30327    
30328    jQuery(document).on("click", ".ctl-editors-action-show-post-featured-image-dlg", function(){
30329        let szMaxFileSize = jQuery(this).attr("data-max-file-size");
30330
30331        var oNodeContainer = jQuery(this).closest(".ctl-edit-post-data-container");
30332        ctlEditorFrameworkFeaturedImage(oNodeContainer,szMaxFileSize);
30333    });
30334
30335    jQuery(document).on("click", ".ctl-editors-action-edit-post-gallery", function(){
30336        var oNodeContainer = jQuery(this).closest(".ctl-edit-post-data-container");
30337        ctlEditorFrameworkMediaGallery(oNodeContainer);
30338    });
30339
30340    jQuery(document).on("click", ".ctl-editors-action-edit-post-attachments", function(){
30341        ctlFormFieldCleanError(jQuery(this));
30342        var oNodeContainer = jQuery(this).closest(".ctl-edit-post-data-container");
30343        ctlEditorFrameworkPostAttachmentsGallery(oNodeContainer);
30344    });    
30345
30346    jQuery(document).on("click", ".ctl-editor-framework-action-img-preview", function( e ){
30347        let oNodeControlWrapper = jQuery(this).closest(".ctl-wp-studio-form-control-wrapper");
30348        let oNodeField = oNodeControlWrapper.find('input[name="featured-image-id"]');
30349
30350        if(oNodeField.length > 0 && !oNodeField.val()){
30351            oNodeControlWrapper.find(".ctl-editors-action-show-post-featured-image-dlg").click();
30352        }else{
30353            __ctlEditorFrameworkImagePreview( jQuery(this).attr("src"), jQuery(this).attr("title") );
30354        }
30355    });
30356 
30357    jQuery(document).on("click", ".ctl-editors-action-convert-post-to-user", function(){
30358        var oNodeForm = jQuery("form[data-widget-id="+jQuery(this).attr("data-widget-id")+"]");
30359        var oFormData = oNodeForm.serializeObject();
30360
30361        var bFormErrors = false;
30362        if(ctlFormFieldsCheckIfFormIsFilled(oNodeForm) === false ){
30363            bFormErrors = true;
30364        }
30365
30366        var oNodeExtraForm = null;
30367        if ( oFormData["extra-form-id"]){
30368            oNodeExtraForm = jQuery("form.layout-"+oFormData["extra-form-id"]);
30369            if ( ctlFormFieldsCheckIfFormIsFilled(oNodeExtraForm) ){
30370                oFormData["extra-data"] = oNodeExtraForm.serializeObject();
30371            }else{
30372                bFormErrors = true;
30373            }
30374        }        
30375
30376        if (bFormErrors){
30377            return;
30378        }
30379
30380        var idLoading = g_oCTLWPStudio.showLoading("");
30381
30382        oFormData['action']           = 'ctl-wp-studio';
30383        oFormData['execute']          = 'ctl-editors-framework';    
30384        oFormData['extension-action'] = 'edit-post-data';
30385        oFormData["click-class"] = "ctl-editors-action-convert-post-to-user";
30386        jQuery.ajax({
30387            url : g_oCTLWPStudio._oLangCommon["ajaxurl"],
30388            type: "POST",
30389            data : oFormData,
30390            cache: false,
30391            method: 'POST',
30392            success:function(response, textStatus, jqXHR){
30393                var oResponse = jQuery.parseJSON(response);
30394
30395                if( oResponse.res === false ){              
30396                    g_oCTLWPStudio.closeDlg(idLoading);
30397        
30398                    ctlFormFieldsApplyErrors(oNodeForm, oResponse.errors);
30399                    if (oNodeExtraForm){
30400                        ctlFormFieldsApplyErrors(oNodeExtraForm, oResponse.errors);
30401                    }				
30402                    
30403                    if ( oResponse.alert ){
30404                        g_oCTLBootstrapModals.alert("", oResponse.alert );
30405                    }
30406    
30407                    jQuery(document).trigger("ajax-update", [ oFormData["click-class"], false ] );                
30408                }else{
30409                    delete oFormData["extra-data"];
30410                    oFormData['extension-action'] = 'convert-post-to-user';
30411                    oFormData["get-params"] = g_oCTLWPStudio.getUrlParams();
30412                
30413                    jQuery.ajax({
30414                        url : g_oCTLWPStudio._oLangCommon["ajaxurl"],
30415                        type: "POST",
30416                        data : oFormData,
30417                        cache: false,
30418                        method: 'POST',
30419                        success:function(response, textStatus, jqXHR){                
30420                            var oResponse = jQuery.parseJSON(response);    
30421                            if( oResponse.res === false ){                                      
30422                                if ( oResponse.alert ){
30423                                    g_oCTLWPStudio.closeDlg(idLoading);
30424                                    g_oCTLBootstrapModals.alert("", oResponse.alert );
30425                                }else if ( oResponse.desc ){
30426                                    switch(oResponse.desc){
30427                                        case "invalid_user":{
30428                                            window.location.reload();
30429                                        }break;
30430                                    }
30431                                }                
30432                            }else{
30433                                window.location.href = oResponse.redirect;
30434                            }
30435                        },
30436                        error: function(jqXHR, textStatus, errorThrown){
30437                            g_oCTLWPStudio.closeDlg(idLoading);
30438                            alert(g_oCTLWPStudio._oLangCommon["Ooops! Something Went Wrong!"]);  
30439                        }
30440                    });  
30441                }
30442            },
30443            error: function(jqXHR, textStatus, errorThrown){
30444                jQuery(document).trigger("ajax-update", [ oFormData["click-class"], false ] );
30445                g_oCTLWPStudio.closeDlg(idLoading);
30446                alert(g_oCTLWPStudio._oLangCommon["Ooops! Something Went Wrong!"]);  
30447            }
30448        });
30449    });
30450
30451
30452jQuery(document).on("click", ".ctl-editors-action-duplicate-post", function(){
30453    var oNodeForm = jQuery("form[data-widget-id="+jQuery(this).attr("data-widget-id")+"]");
30454    var oFormData = oNodeForm.serializeObject();
30455
30456    var idLoading = g_oCTLWPStudio.showLoading("");
30457
30458    oFormData['action']           = 'ctl-wp-studio';
30459    oFormData['execute']          = 'ctl-editors-framework';    
30460    oFormData['extension-action'] = 'duplicate-post';
30461
30462    jQuery.ajax({
30463        url : g_oCTLWPStudio._oLangCommon["ajaxurl"],
30464        type: "POST",
30465        data : oFormData,
30466        cache: false,
30467        method: 'POST',
30468        success:function(response, textStatus, jqXHR){
30469            var oResponse = jQuery.parseJSON(response);
30470
30471            if( oResponse.res === false ){              
30472                g_oCTLWPStudio.closeDlg(idLoading);
30473
30474                if ( oResponse.alert ){
30475                    g_oCTLWPStudio.closeDlg(idLoading);                         
30476                    g_oCTLBootstrapModals.alert("", oResponse.alert );
30477                }else if ( oResponse.desc ){
30478                    switch(oResponse.desc){
30479                        case "invalid_user":{
30480                            window.location.reload();
30481                        }break;
30482                    }
30483                }                 
30484            }else{                             
30485                if (oResponse.redirect){
30486                    window.location.href = oResponse.redirect;
30487                }else{
30488                    window.location.reload();
30489                }
30490            }            
30491        },
30492        error: function(jqXHR, textStatus, errorThrown){
30493            jQuery(document).trigger("ajax-update", [ oFormData["click-class"], false ] );
30494            g_oCTLWPStudio.closeDlg(idLoading);
30495            alert(g_oCTLWPStudio._oLangCommon["Ooops! Something Went Wrong!"]);  
30496        }
30497    });
30498});  
30499
30500    jQuery(document).on("click", ".ctl-editors-action-convert-post-to-post", function(){
30501        var oNodeForm = jQuery("form[data-widget-id="+jQuery(this).attr("data-widget-id")+"]");
30502        var oNodeContainer = oNodeForm.closest(".ctl-edit-post-data-container");
30503        var oFormData = oNodeForm.serializeObject();
30504        
30505        var bFormErrors = false;
30506        
30507        if(ctlFormFieldsCheckIfFormIsFilled(oNodeForm) === false ){
30508            bFormErrors = true;
30509        }
30510
30511        var oNodeExtraForm = null;
30512        if ( oFormData["extra-form-id"]){
30513            oNodeExtraForm = jQuery("form.layout-"+oFormData["extra-form-id"]);
30514            if ( ctlFormFieldsCheckIfFormIsFilled(oNodeExtraForm) ){
30515                oFormData["extra-data"] = oNodeExtraForm.serializeObject();
30516            }else{
30517                bFormErrors = true;
30518            }
30519        }
30520
30521        if (bFormErrors){
30522            return;
30523        }
30524
30525        var idLoading = g_oCTLWPStudio.showLoading("");
30526
30527        oFormData['action']           = 'ctl-wp-studio';
30528        oFormData['execute']          = 'ctl-editors-framework';    
30529        oFormData['extension-action'] = 'edit-post-data';
30530        oFormData["click-class"] = "ctl-editors-action-convert-post-to-post";
30531
30532        let cbConvertPostToPost = ()=>{
30533            delete oFormData["extra-data"];
30534            oFormData['extension-action'] = 'convert-post-to-post';  
30535            oFormData["get-params"] = g_oCTLWPStudio.getUrlParams();
30536        
30537            jQuery.ajax({
30538                url : g_oCTLWPStudio._oLangCommon["ajaxurl"],
30539                type: "POST",
30540                data : oFormData,
30541                cache: false,
30542                method: 'POST',
30543                success:function(response, textStatus, jqXHR){                
30544                    var oResponse = jQuery.parseJSON(response);    
30545                    if( oResponse.res === false ){                 
30546                        if ( oResponse.alert ){
30547                            g_oCTLWPStudio.closeDlg(idLoading);                         
30548                            g_oCTLBootstrapModals.alert("", oResponse.alert );
30549                        }else if ( oResponse.desc ){
30550                            switch(oResponse.desc){
30551                                case "invalid_user":{
30552                                    window.location.reload();
30553                                }break;
30554                            }
30555                        }                 
30556                    }else if (oResponse.redirect){
30557                        window.location.href = oResponse.redirect;
30558                    }else{
30559                        window.location.reload();
30560                    }
30561                },
30562                error: function(jqXHR, textStatus, errorThrown){
30563                    g_oCTLWPStudio.closeDlg(idLoading);
30564                    alert(g_oCTLWPStudio._oLangCommon["Ooops! Something Went Wrong!"]);  
30565                }
30566            });
30567        }
30568
30569        if(oNodeContainer.hasClass("ctl-post-readonly")){
30570            cbConvertPostToPost();
30571            return;
30572        }
30573        
30574        jQuery.ajax({
30575            url : g_oCTLWPStudio._oLangCommon["ajaxurl"],
30576            type: "POST",
30577            data : oFormData,
30578            cache: false,
30579            method: 'POST',
30580            success:function(response, textStatus, jqXHR){
30581                var oResponse = jQuery.parseJSON(response);
30582
30583                if( oResponse.res === false ){              
30584                    g_oCTLWPStudio.closeDlg(idLoading);
30585        
30586                    ctlFormFieldsApplyErrors(oNodeForm, oResponse.errors);
30587                    if (oNodeExtraForm){
30588                        ctlFormFieldsApplyErrors(oNodeExtraForm, oResponse.errors);
30589                    }				
30590                    
30591                    if ( oResponse.alert ){
30592                        g_oCTLBootstrapModals.alert("", oResponse.alert );
30593                    }
30594    
30595                    jQuery(document).trigger("ajax-update", [ oFormData["click-class"], false ] );                
30596                }else{
30597                    cbConvertPostToPost();
30598                }
30599            },
30600            error: function(jqXHR, textStatus, errorThrown){
30601                jQuery(document).trigger("ajax-update", [ oFormData["click-class"], false ] );
30602                g_oCTLWPStudio.closeDlg(idLoading);
30603                alert(g_oCTLWPStudio._oLangCommon["Ooops! Something Went Wrong!"]);  
30604            }
30605        });
30606    });    
30607
30608    jQuery(document).on("click", ".ctl-editors-action-edit-post-data", function(){         
30609        ctlEditorFrameworkEditPostSaveData(jQuery(this));     
30610    });
30611
30612    jQuery(document).on("click", ".ctl-editors-action-reset-post-status", function(){      
30613
30614        var oNodeButton = jQuery(this);
30615
30616        var oNodeContainer = oNodeButton.closest(".ctl-reset-post-statuses");
30617        var oNodeForm = oNodeContainer.find("form");
30618        var oFormData = {};
30619
30620        if ( oNodeForm.length > 0 ){
30621            if(ctlFormFieldsCheckIfFormIsFilled(oNodeForm) === false ){
30622                return;
30623            }
30624
30625            oFormData = oNodeForm.serializeObject();
30626        }
30627
30628        var idConfirmDialog = g_oCTLBootstrapModals.confirm(
30629            "",
30630            g_oCTLEditorsFrameworkLocalizationFront["Are you sure?"], 
30631            g_oCTLEditorsFrameworkLocalizationFront["Continue"], 
30632            function(){                
30633                g_oCTLBootstrapModals.closeModalAndStack(jQuery('#' + idConfirmDialog));
30634                ctlEditorFrameworkAjaxResetPostStatus(oNodeButton, oFormData);                
30635            });
30636        
30637    });
30638
30639    jQuery(document).on("click", ".ctl-editors-action-edit-wp-options", function(){      
30640        
30641        var oNodeForm = jQuery("form[data-widget-id="+jQuery(this).attr("data-widget-id")+"]");
30642
30643        var bFormErrors = false;
30644
30645        if(ctlFormFieldsCheckIfFormIsFilled(oNodeForm) === false ){
30646            bFormErrors = true;
30647        }
30648
30649        var oFormData = oNodeForm.serializeObject();
30650        oFormData['action']           = 'ctl-wp-studio';
30651        oFormData['execute']          = 'ctl-editors-framework';        
30652        oFormData['extension-action'] = 'edit-wp-options';  
30653        oFormData["click-class"]      = "ctl-editors-action-edit-wp-options";
30654        oFormData["widget-id"]        = jQuery(this).attr("data-widget-id");
30655
30656		var oNodeExtraForm = null;
30657        if ( oFormData["form-id"]){
30658            oNodeExtraForm = jQuery("form.layout-"+oFormData["form-id"]);
30659            if ( ctlFormFieldsCheckIfFormIsFilled(oNodeExtraForm) ){
30660                oFormData["extra-data"] = oNodeExtraForm.serializeObject();
30661            }else{
30662                bFormErrors = true;
30663            }
30664        }
30665
30666        if (bFormErrors){
30667            return;
30668        }
30669
30670        jQuery(document).trigger(oFormData["click-class"]);
30671
30672        ctlEditorFrameworkAjaxUpdateObjectData(oNodeForm, oFormData, oNodeExtraForm, function(){
30673            g_oCTLWPStudio.showLoading("");
30674            window.location.reload();
30675            
30676        });       
30677    });
30678
30679    
30680    jQuery(document).on("click", ".ctl-editors-action-edit-user-data", function(){      
30681        
30682        var oNodeButton = jQuery(this);
30683        var oNodeForm = jQuery("form[data-widget-id="+jQuery(this).attr("data-widget-id")+"]");
30684		
30685        var bFormErrors = false;
30686        if(ctlFormFieldsCheckIfFormIsFilled(oNodeForm) === false ){
30687            bFormErrors = true;
30688        }		
30689		
30690        var oFormData = oNodeForm.serializeObject();
30691
30692        oFormData['action']           = 'ctl-wp-studio';
30693        oFormData['execute']          = 'ctl-editors-framework';        
30694        oFormData['extension-action'] = 'edit-user-data';  
30695        oFormData["click-class"]      = "ctl-editors-action-edit-user-data";
30696
30697		var oNodeExtraForm = null;
30698		
30699        if ( oFormData["extra-form-id"]){
30700            oNodeExtraForm = jQuery("form.layout-"+oFormData["extra-form-id"]);
30701            if ( ctlFormFieldsCheckIfFormIsFilled(oNodeExtraForm) ){
30702                oFormData["extra-data"] = oNodeExtraForm.serializeObject();
30703            }else{
30704                bFormErrors = true;
30705            }
30706        }
30707
30708        if (bFormErrors){
30709            __ctlEditorFrameworkMapEventKeyDownSaveHandler();
30710            return;
30711        }
30712
30713        jQuery(document).trigger(oFormData["click-class"]);
30714
30715        ctlEditorFrameworkAjaxUpdateObjectData(oNodeForm, oFormData, oNodeExtraForm, function(){
30716            if ( oNodeButton.attr("data-popup") === "true" ){
30717                g_oCTLBootstrapModals.alert(
30718                    oNodeButton.attr("data-title"), 
30719                    oNodeButton.attr("data-message"),
30720                    function(){
30721                        if( oNodeButton.closest(".modal").length > 0 ){
30722                            iOffsetTop = jQuery('.modal-body').offset().top;
30723                            jQuery('.modal-body').animate({ scrollTop: iOffsetTop }, 'slow');    
30724                        }else{
30725
30726                            iOffsetTop = 0;
30727                            
30728                            jQuery('html,body').animate({ scrollTop: iOffsetTop }, 'slow');    
30729                        }   
30730
30731                        if ( oNodeButton.attr("data-closing-action")){
30732                            switch(oNodeButton.attr("data-closing-action")){
30733                                case "reload-page":{
30734                                    window.location.reload();
30735                                }break;
30736                                case "close-stack-dialog":{
30737                                    g_oCTLBootstrapModals.closeModalAndStack();
30738                                }break;
30739                                case "close-last-dialog":{
30740                                    g_oCTLBootstrapModals.closeLastModal();
30741                                }break;                                
30742                            }    
30743                        }
30744                    }, oNodeButton.attr("data-button"));       
30745            }else if ( oNodeButton.attr("data-closing-action")){
30746                switch(oNodeButton.attr("data-closing-action")){
30747                    case "reload-page":{
30748                        window.location.reload();
30749                    }break;
30750                    case "close-stack-dialog":{
30751                        g_oCTLBootstrapModals.closeModalAndStack();
30752                    }break;
30753                    case "close-last-dialog":{
30754                        g_oCTLBootstrapModals.closeLastModal();
30755                    }break;                    
30756                }    
30757            }
30758        }); 
30759    });    
30760
30761
30762    jQuery(document).on("click", ".ctl-editors-action-delete-post", function(){        
30763        var oFormData = {};
30764        oFormData['action']  ='ctl-wp-studio';
30765        oFormData['execute'] ='ctl-editors-framework';
30766        oFormData['extension-action'] ='delete-post';        
30767        oFormData['post-ids']    = JSON.parse(Base64.decode(jQuery(this).attr("data-post-ids")));
30768        oFormData['widget-id']   = jQuery(this).attr("data-widget-id");
30769        oFormData["click-class"] = "ctl-editors-action-delete-post";
30770        
30771        var szRedirect      = jQuery(this).attr("data-redirect");
30772        var szClosingAction = jQuery(this).attr("data-closing-action");
30773        
30774        if ( jQuery(this).attr("data-popup") === "true" ){
30775            var idConfirmDialog = g_oCTLBootstrapModals.confirm(
30776                    jQuery(this).attr("data-title"), 
30777                    jQuery(this).attr("data-message"),
30778                    jQuery(this).attr("data-button"), 
30779            function(){                
30780                g_oCTLBootstrapModals.closeModalAndStack(jQuery('#' + idConfirmDialog));
30781                ctlEditorFrameworkAjaxDeletePost(oFormData, function(){
30782                    switch(szClosingAction){
30783                        case "redirect":{
30784                            g_oCTLWPStudio.showLoading("");
30785                            window.location.href = szRedirect;
30786                        }break;
30787                        case "reload-page":{
30788                            g_oCTLWPStudio.showLoading("");
30789                            window.location.reload();
30790                        }break;
30791                        case "close-stack-dialog":{
30792                            g_oCTLBootstrapModals.closeModalAndStack();
30793                        }break;
30794                        case "close-last-dialog":{
30795                            g_oCTLBootstrapModals.closeLastModal();
30796                        }break;                        
30797                    }
30798                });                
30799            });
30800        }else{
30801            ctlEditorFrameworkAjaxDeletePost(oFormData, function(){
30802                switch(szClosingAction){
30803                    case "redirect":{
30804                        window.location.href = szRedirect;
30805                    }break;
30806                    case "reload-page":{
30807                        window.location.reload();
30808                    }break;
30809                    case "close-stack-dialog":{
30810                        g_oCTLBootstrapModals.closeModalAndStack();
30811                    }break;
30812                    case "close-last-dialog":{
30813                        g_oCTLBootstrapModals.closeLastModal();
30814                    }break;                    
30815                }
30816            });            
30817        }
30818    });
30819
30820
30821    jQuery(document).on("click", ".ctl-editors-action-delete-user", function(){        
30822        var oFormData = {};
30823        oFormData['action']  ='ctl-wp-studio';
30824        oFormData['execute'] ='ctl-editors-framework';
30825        oFormData['extension-action'] ='delete-user';        
30826        oFormData['user-ids']    = JSON.parse(Base64.decode(jQuery(this).attr("data-user-ids")));
30827        oFormData['widget-id']   = jQuery(this).attr("data-widget-id");
30828        oFormData["click-class"] = "ctl-editors-action-delete-user";
30829        
30830        var szRedirect      = jQuery(this).attr("data-redirect");
30831        var szClosingAction = jQuery(this).attr("data-closing-action");
30832        
30833        if ( jQuery(this).attr("data-popup") === "true" ){
30834            var idConfirmDialog = g_oCTLBootstrapModals.confirm(
30835                    jQuery(this).attr("data-title"), 
30836                    jQuery(this).attr("data-message"),
30837                    jQuery(this).attr("data-button"), 
30838            function(){                
30839                g_oCTLBootstrapModals.closeModalAndStack(jQuery('#' + idConfirmDialog));
30840                ctlEditorFrameworkAjaxDeleteUser(oFormData, function(){
30841                    switch(szClosingAction){
30842                        case "redirect":{
30843                            g_oCTLWPStudio.showLoading("");
30844                            window.location.href = szRedirect;
30845                        }break;
30846                        case "reload-page":{
30847                            g_oCTLWPStudio.showLoading("");
30848                            window.location.reload();
30849                        }break;
30850                        case "close-stack-dialog":{
30851                            g_oCTLBootstrapModals.closeModalAndStack();
30852                        }break;
30853                        case "close-last-dialog":{
30854                            g_oCTLBootstrapModals.closeLastModal();
30855                        }break;                        
30856                    }
30857                });                
30858            });
30859        }else{
30860            ctlEditorFrameworkAjaxDeleteUser(oFormData, function(){
30861                switch(szClosingAction){
30862                    case "redirect":{
30863                        window.location.href = szRedirect;
30864                    }break;
30865                    case "reload-page":{
30866                        window.location.reload();
30867                    }break;
30868                    case "close-stack-dialog":{
30869                        g_oCTLBootstrapModals.closeModalAndStack();
30870                    }break;
30871                    case "close-last-dialog":{
30872                        g_oCTLBootstrapModals.closeLastModal();
30873                    }break;                    
30874                }
30875            });            
30876        }
30877    });
30878    
30879    jQuery(document).on("click", ".ctl-editors-action-trash-post", function(){        
30880        var oFormData = {};
30881        oFormData['action']  ='ctl-wp-studio';
30882        oFormData['execute'] ='ctl-editors-framework';
30883        oFormData['extension-action'] ='trash-post';        
30884        oFormData['post-id']     = jQuery(this).attr("data-post-id");
30885        oFormData['widget-id']   = jQuery(this).attr("data-widget-id");
30886        oFormData["click-class"] = "ctl-editors-action-trash-post";
30887        
30888        var szRedirect = jQuery(this).attr("data-redirect");
30889        
30890        if ( jQuery(this).attr("data-popup") === "true" ){
30891            var idConfirmDialog = g_oCTLBootstrapModals.confirm(
30892                    jQuery(this).attr("data-title"), 
30893                    jQuery(this).attr("data-message"),
30894                    jQuery(this).attr("data-button"), 
30895            function(){                
30896                jQuery('#' + idConfirmDialog).modal('hide');                
30897                ctlEditorFrameworkAjaxTrashPost(oFormData, szRedirect);                
30898            });
30899        }else{
30900            ctlEditorFrameworkAjaxTrashPost(oFormData, szRedirect);            
30901        }
30902    }); 
30903
30904    jQuery(document).on("submit", ".ctl-create-post form, .ctl-create-user form, .ctl-edit-post form, .ctl-edit-user form", function(e){
30905        e.preventDefault();
30906        return false;
30907    });
30908
30909    jQuery(document).on("click", ".ctl-editors-action-create-post", function(){
30910        ctlEditorFrameworkCreatePost(jQuery(this));
30911    });
30912    
30913    jQuery(document).on("click", ".ctl-editors-action-create-user", function(){
30914        ctlEditorFrameworkCreateUser(jQuery(this).closest(".ctl-create-user"));
30915    });    
30916   
30917    
30918    jQuery(document).on("click", ".ctl-editors-action-edit-post-featured-image", function(){
30919        var oNodeFormGroup = jQuery(this).closest(".form-group");
30920        var oNodeForm = jQuery(this).closest("form");        
30921        var oNodeRedirect = oNodeForm.find('input[name=redirect]');
30922
30923        var oFormData = new FormData();
30924        oFormData.append( 'post-id', oNodeForm.find('input[name=post-id]').val() );
30925        oFormData.append( 'file', oNodeForm.find('input[name=post-featured-image]')[0].files[0] );
30926        oFormData.append( 'widget-id', oNodeForm.find('input[name=widget-id]').val() );
30927        oFormData.append( 'action', 'ctl-wp-studio' );
30928        oFormData.append( 'execute', 'ctl-editors-framework' );        
30929        oFormData.append( 'extension-action', 'edit-post-featured-image' );
30930
30931        oFormData.append("click-class", "ctl-editors-action-edit-post-featured-image");
30932
30933        jQuery(document).trigger(oFormData.get("click-class"));
30934
30935        ctlEditorFrameworkAjaxUpdateFormData(oNodeForm, oFormData, false, function(){            
30936            if ( !oNodeFormGroup.hasClass("d-none") ){
30937                g_oCTLBootstrapModals.message( 
30938                g_oCTLEditorsFrameworkLocalizationFront["Image uploaded correctly."],
30939                g_oCTLEditorsFrameworkLocalizationFront["Continue"], function(){
30940                    if ( oNodeRedirect.length > 0 ){
30941                        g_oCTLWPStudio.showLoading("");
30942                        window.location.href = oNodeRedirect.val();
30943                    }
30944                });
30945            }
30946        });
30947    });
30948
30949    __ctlEditorMakeGallerySortable();
30950});
30951
30952function ctlEditorFrameworkCreateUser( oNodeCreateUser ){
30953    var bContinue       = true;
30954
30955    // check if all forms are filled
30956    oNodeCreateUser.find("form").each(function(){
30957        if(ctlFormFieldsCheckIfFormIsFilled(jQuery(this)) === false ){
30958            bContinue = false;
30959        }
30960    });
30961
30962    if (!bContinue){
30963        __ctlEditorFrameworkMapEventKeyDownSaveHandler();
30964        return;
30965    }
30966
30967    var oNodeForm   = oNodeCreateUser.find(".ctl-create-user-form");
30968    var oNodeButton = oNodeCreateUser.find(".ctl-editors-action-create-user");
30969
30970    var oFormData = oNodeForm.serializeObject();
30971    oFormData["action"]  = 'ctl-wp-studio';
30972    oFormData["execute"] = 'ctl-editors-framework';  
30973    oFormData["extension-action"] = 'create-user';
30974     
30975	var oNodeExtraForm = null;
30976	
30977    if ( oNodeButton.attr("data-extra-form") ){
30978        oNodeExtraForm = oNodeCreateUser.find(".layout-" + oNodeButton
30979                                .attr("data-extra-form"));
30980        if(ctlFormFieldsCheckIfFormIsFilled(oNodeExtraForm) === false ){
30981            __ctlEditorFrameworkMapEventKeyDownSaveHandler();
30982            return;
30983        }
30984        oFormData["extra-form"] = oNodeExtraForm.serializeObject();                                   
30985    }               
30986
30987    ctlEditorFrameworkAjaxUpdateObjectData(oNodeForm, oFormData, oNodeExtraForm);    
30988}
30989
30990function __ctlEditorFrameworkUserSendEditorRequest( oNodeButton ){
30991    
30992    var idWidget  = oNodeButton.attr("data-widget-id");
30993    var oNodeForm = jQuery("form[data-widget-id="+idWidget+"]");
30994
30995    if ( ctlFormFieldsCheckIfFormIsFilled(oNodeForm) === false){
30996        return;
30997    } 
30998
30999    var oFormData = oNodeForm.serializeObject();
31000    oFormData["action"]  = 'ctl-wp-studio';
31001    oFormData["execute"] = 'ctl-editors-framework';  
31002    oFormData["extension-action"] = 'user-send-editor-request';
31003
31004    var idLoading = g_oCTLWPStudio.showLoading("");
31005    
31006    jQuery.ajax({
31007        url : g_oCTLWPStudio._oLangCommon["ajaxurl"],
31008        type: "POST",
31009        data : oFormData,
31010        cache: false,
31011        method: 'POST',
31012        success:function(response, textStatus, jqXHR){            
31013            var oResponse = jQuery.parseJSON(response);
31014
31015            if( oResponse.res === false ){  
31016                g_oCTLWPStudio.closeDlg(idLoading);                            
31017                if (oResponse.errors){
31018                    ctlFormFieldsApplyErrors(oNodeForm, oResponse.errors);
31019                }                
31020                if ( oResponse.alert ){
31021                    g_oCTLBootstrapModals.alert("", oResponse.alert );
31022                }
31023            }else {
31024                g_oCTLWPStudio.closeDlg(idLoading);        
31025                g_oCTLBootstrapModals.confirm(
31026                    "",
31027                    g_oCTLEditorsFrameworkLocalizationFront["Request sent correctly."], 
31028                    g_oCTLEditorsFrameworkLocalizationFront["Continue"], 
31029                    function(){     
31030                        g_oCTLWPStudio.showLoading("");           
31031                        window.location.reload();              
31032                    });
31033            }
31034        },
31035        error: function(jqXHR, textStatus, errorThrown){
31036            g_oCTLWPStudio.closeDlg(idLoading);
31037            alert(g_oCTLWPStudio._oLangCommon["Ooops! Something Went Wrong!"]);  
31038        }
31039    });    
31040}
31041
31042
31043function __ctlEditorFrameworkEditUserQuotas( oNodeButton ){    
31044    var oNodeForm  = oNodeButton.closest("form");
31045
31046    if ( ctlFormFieldsCheckIfFormIsFilled(oNodeForm) === false){
31047        return;
31048    } 
31049
31050    var oFormData = oNodeForm.serializeObject();
31051    oFormData["action"]  = 'ctl-wp-studio';
31052    oFormData["execute"] = 'ctl-editors-framework';  
31053    oFormData["extension-action"] = 'edit-user-quotas';
31054
31055    var idLoading = g_oCTLWPStudio.showLoading("");
31056    
31057    jQuery.ajax({
31058        url : g_oCTLWPStudio._oLangCommon["ajaxurl"],
31059        type: "POST",
31060        data : oFormData,
31061        cache: false,
31062        method: 'POST',
31063        success:function(response, textStatus, jqXHR){            
31064            var oResponse = jQuery.parseJSON(response);
31065
31066            if( oResponse.res === false ){  
31067                g_oCTLWPStudio.closeDlg(idLoading);                            
31068                if (oResponse.errors){
31069                    ctlFormFieldsApplyErrors(oNodeForm, oResponse.errors);
31070                }                
31071                if ( oResponse.alert ){
31072                    g_oCTLBootstrapModals.alert("", oResponse.alert );
31073                }
31074            }else {
31075                window.location.reload();
31076            }
31077        },
31078        error: function(jqXHR, textStatus, errorThrown){
31079            g_oCTLWPStudio.closeDlg(idLoading);
31080            alert(g_oCTLWPStudio._oLangCommon["Ooops! Something Went Wrong!"]);  
31081        }
31082    });
31083}
31084
31085function __ctlEditorFrameworkDerivatePost( oNodeButton ){
31086    var oNodeDerivatePost = jQuery(".ctl-derivate-post-"+oNodeButton.attr("data-widget-id"));
31087    var oNodeForm  = oNodeDerivatePost.find("form.ctl-derivate-post-form");
31088
31089    oNodeForm.find(".ctl-calculator-action-equal").click();
31090
31091    let bFormErrors = false;
31092    if ( ctlFormFieldsCheckIfFormIsFilled(oNodeForm) === false){
31093        bFormErrors = true;
31094    } 
31095
31096    var oFormData = oNodeForm.serializeObject();
31097
31098    let oNodeExtraForm = null;
31099    if ( oFormData["extra-form-id"]){
31100        oNodeExtraForm = jQuery("form.layout-"+oFormData["extra-form-id"]);
31101        if ( ctlFormFieldsCheckIfFormIsFilled(oNodeExtraForm) ){
31102            oFormData["extra-data"] = oNodeExtraForm.serializeObject();
31103        }else{
31104            bFormErrors = true;
31105        }
31106    }        
31107
31108    if(bFormErrors){
31109        return;
31110    }
31111
31112    oFormData["action"]  = 'ctl-wp-studio';
31113    oFormData["execute"] = 'ctl-editors-framework';  
31114    oFormData["extension-action"] = 'derivate-post';
31115
31116    var idLoading = g_oCTLWPStudio.showLoading("");
31117    
31118    jQuery.ajax({
31119        url : g_oCTLWPStudio._oLangCommon["ajaxurl"],
31120        type: "POST",
31121        data : oFormData,
31122        cache: false,
31123        method: 'POST',
31124        success:function(response, textStatus, jqXHR){
31125            g_oCTLWPStudio.closeDlg(idLoading);
31126            var oResponse = jQuery.parseJSON(response);
31127
31128            if( oResponse.res === false ){                              
31129                if (oResponse.errors){
31130                    ctlFormFieldsApplyErrors(oNodeForm, oResponse.errors);
31131                }                
31132                if ( oResponse.alert ){
31133                    g_oCTLBootstrapModals.alert("", oResponse.alert );
31134                }
31135            }else {
31136
31137                ctlFormFieldsClearForm(oNodeForm);
31138				if(oNodeExtraForm !== null){
31139					ctlFormFieldsClearForm(oNodeExtraForm);
31140				}
31141
31142                if ( oNodeButton.attr("data-popup") === "true" &&
31143                     oNodeButton.attr("data-title") &&
31144                     oNodeButton.attr("data-message") ){
31145                    g_oCTLBootstrapModals.alert(
31146                        oNodeButton.attr("data-title"), 
31147                        oNodeButton.attr("data-message"),
31148                        function(){   
31149                            switch(oResponse["redirect-type"]){
31150                                case "reload":{
31151                                    g_oCTLWPStudio.showLoading();
31152                                    window.location.reload();
31153                                }break;
31154                                case "redirect":{
31155                                    g_oCTLWPStudio.showLoading();
31156                                    window.location.href = oResponse.redirect;
31157                                }break;
31158                                case "close-stack-dialog-and-load-modal":{
31159                                    g_oCTLBootstrapModals.closeModalAndStack();
31160                                    var oExtraData = {};
31161                                    oExtraData[oResponse["modal-post-alias"]] = oResponse["post-id"];
31162                                    g_oCTLBootstrapModals.loadModal(
31163                                        oResponse["edit-modal-id"], oExtraData); 
31164                                }break; 
31165                                case "close-last-dialog-and-load-modal":{
31166                                    g_oCTLBootstrapModals.closeLastModal();
31167                                    var oExtraData = {};
31168                                    oExtraData[oResponse["modal-post-alias"]] = oResponse["post-id"];
31169                                    g_oCTLBootstrapModals.loadModal(
31170                                        oResponse["edit-modal-id"], oExtraData); 
31171                                }break;
31172                                case "load-modal-close-stack-dialog-and-refresh-table":{
31173                                    g_oCTLBootstrapModals.closeModalAndStack();
31174                                    var oExtraData = {};
31175                                    oExtraData[oResponse["modal-post-alias"]] = oResponse["post-id"];
31176                                    g_oCTLBootstrapModals.loadModal(
31177                                        oResponse["edit-modal-id"], oExtraData); 
31178
31179                                    if(oResponse["table-to-refresh"]){
31180                                        ctlThemeTableAjaxRefreshTable(
31181                                            jQuery(".ctl-theme-table-main-wrapper[data-table-id='" + oResponse["table-to-refresh"] + "']")
31182                                        );
31183                                    }
31184                                }break;  
31185                                case "load-modal-close-stack-dialog-and-refresh-calendar":{
31186                                    g_oCTLBootstrapModals.closeModalAndStack();
31187                                    var oExtraData = {};
31188                                    oExtraData[oResponse["modal-post-alias"]] = oResponse["post-id"];
31189                                    g_oCTLBootstrapModals.loadModal(
31190                                        oResponse["edit-modal-id"], oExtraData, null, function(){
31191                                            if ( jQuery(".ctl-calendar-action-reload").length > 0 ){
31192                                                jQuery(".ctl-calendar-action-reload").click();
31193                                            }  
31194                                        }); 
31195
31196                                }break;  
31197                                case "close-stack-dialog-and-refresh-table":{
31198                                    g_oCTLBootstrapModals.closeModalAndStack();
31199                                    if(oResponse["table-to-refresh"]){
31200                                        ctlThemeTableAjaxRefreshTable(
31201                                            jQuery(".ctl-theme-table-main-wrapper[data-table-id='" + oResponse["table-to-refresh"] + "']")
31202                                        );
31203                                    }
31204                                }break;    
31205                                case "close-last-dialog-and-refresh-table":{
31206                                    g_oCTLBootstrapModals.closeLastModal();
31207                                    if(oResponse["table-to-refresh"]){
31208                                        ctlThemeTableAjaxRefreshTable(
31209                                            jQuery(".ctl-theme-table-main-wrapper[data-table-id='" + oResponse["table-to-refresh"] + "']")
31210                                        );
31211                                    }
31212                                }break;                                                                                        
31213                            }
31214                        },
31215                        oNodeButton.attr("data-button")                        
31216                    );
31217                }else{
31218                    switch(oResponse["redirect-type"]){
31219                        case "reload":{
31220                            g_oCTLWPStudio.showLoading();
31221                            window.location.reload();
31222                        }break;
31223                        case "redirect":{
31224                            g_oCTLWPStudio.showLoading();
31225                            window.location.href = oResponse.redirect;
31226                        }break;
31227                        case "close-stack-dialog-and-load-modal":{
31228                            g_oCTLBootstrapModals.closeModalAndStack();
31229                            var oExtraData = {};
31230                            oExtraData[oResponse["modal-post-alias"]] = oResponse["post-id"];
31231                            g_oCTLBootstrapModals.loadModal(
31232                                oResponse["edit-modal-id"], oExtraData); 
31233                        }break;  
31234                        case "close-last-dialog-and-load-modal":{
31235                            g_oCTLBootstrapModals.closeLastModal();
31236                            var oExtraData = {};
31237                            oExtraData[oResponse["modal-post-alias"]] = oResponse["post-id"];
31238                            g_oCTLBootstrapModals.loadModal(
31239                                oResponse["edit-modal-id"], oExtraData); 
31240                        }break;  
31241                        case "load-modal-close-stack-dialog-and-refresh-table":{
31242                            g_oCTLBootstrapModals.closeModalAndStack();
31243                            var oExtraData = {};
31244                            oExtraData[oResponse["modal-post-alias"]] = oResponse["post-id"];
31245                            g_oCTLBootstrapModals.loadModal(
31246                                oResponse["edit-modal-id"], oExtraData); 
31247
31248                            if(oResponse["table-to-refresh"]){
31249                                ctlThemeTableAjaxRefreshTable(
31250                                    jQuery(".ctl-theme-table-main-wrapper[data-table-id='" + oResponse["table-to-refresh"] + "']")
31251                                );
31252                            }
31253                        }break;  
31254                        case "load-modal-close-stack-dialog-and-refresh-calendar":{
31255                            g_oCTLBootstrapModals.closeModalAndStack();
31256                            var oExtraData = {};
31257                            oExtraData[oResponse["modal-post-alias"]] = oResponse["post-id"];
31258                            g_oCTLBootstrapModals.loadModal(
31259                                oResponse["edit-modal-id"], oExtraData, null, function(){
31260                                    if ( jQuery(".ctl-calendar-action-reload").length > 0 ){
31261                                        jQuery(".ctl-calendar-action-reload").click();
31262                                    }
31263                                });
31264                        }break;  
31265                        case "close-stack-dialog-and-refresh-table":{
31266                            g_oCTLBootstrapModals.closeModalAndStack();
31267                            if(oResponse["table-to-refresh"]){
31268                                ctlThemeTableAjaxRefreshTable(
31269                                    jQuery(".ctl-theme-table-main-wrapper[data-table-id='" + oResponse["table-to-refresh"] + "']")
31270                                );
31271                            }
31272                        }break;    
31273                        case "close-last-dialog-and-refresh-table":{
31274                            g_oCTLBootstrapModals.closeLastModal();
31275                            if(oResponse["table-to-refresh"]){
31276                                ctlThemeTableAjaxRefreshTable(
31277                                    jQuery(".ctl-theme-table-main-wrapper[data-table-id='" + oResponse["table-to-refresh"] + "']")
31278                                );
31279                            }
31280                        }break;                                                                          
31281                    }                
31282                }
31283            }
31284        },
31285        error: function(jqXHR, textStatus, errorThrown){
31286            g_oCTLWPStudio.closeDlg(idLoading);
31287            alert(g_oCTLWPStudio._oLangCommon["Ooops! Something Went Wrong!"]);  
31288        }
31289    });
31290}
31291
31292function ctlEditorUpdateAddressParamsWithCalendarDate( szCurDate ){
31293    var aUrlParams = g_oCTLWPStudio.getUrlParams();
31294
31295    
31296    if ( aUrlParams["cstart"] && aUrlParams["cend"] && aUrlParams["cdate"] &&  aUrlParams["period"]){
31297
31298        var szStartDate = "";
31299        var szEndDate   = "";
31300
31301        switch(aUrlParams["period"]){
31302            case "month":{
31303                var oMoment = moment(szCurDate, "YYYY-MM-DD");
31304                szStartDate = oMoment.startOf('month').format("YYYY-MM-DD");
31305                szEndDate   = oMoment.endOf('month').format("YYYY-MM-DD");
31306            }break;
31307            case "day":{
31308                szStartDate = szEndDate = szCurDate;
31309            }break;
31310            case "week":{
31311                var oMoment = moment(szCurDate, "YYYY-MM-DD");
31312                szStartDate = oMoment.startOf('isoWeek').format("YYYY-MM-DD");
31313                szEndDate   = oMoment.endOf('isoWeek').format("YYYY-MM-DD");
31314            }break;
31315        }
31316
31317        var url = window.location.href;
31318        url = g_oCTLWPStudio.removeParameterFromUrl(url, "cstart");
31319        url = g_oCTLWPStudio.removeParameterFromUrl(url, "cend");
31320        url = g_oCTLWPStudio.removeParameterFromUrl(url, "cdate");
31321        url = g_oCTLWPStudio.removeParameterFromUrl(url, "cdate-gfx");
31322
31323        url = g_oCTLWPStudio.addParameterToUrl(url, "cstart", szStartDate);
31324        url = g_oCTLWPStudio.addParameterToUrl(url, "cend", szEndDate);
31325        url = g_oCTLWPStudio.addParameterToUrl(url, "cdate", szCurDate);                
31326        window.history.pushState(document.title, "", url);
31327    }
31328}
31329
31330function ctlEditorFrameworkCreatePost( oNodeButtonCreate ){
31331    var oNodeCreatePost = jQuery(".ctl-create-post-"+oNodeButtonCreate.attr("data-widget-id"));
31332
31333    var bContinue       = true;
31334
31335    oNodeCreatePost.find("form").each(function(){
31336        if(ctlFormFieldsCheckIfFormIsFilled(jQuery(this)) === false ){
31337            bContinue = false;
31338        }
31339    });
31340
31341    if (!bContinue){
31342        __ctlEditorFrameworkMapEventKeyDownSaveHandler();
31343        return;
31344    }
31345
31346    var oNodeForm = oNodeCreatePost.find(".ctl-create-post-form");
31347    var oFormData = oNodeForm.serializeObject();
31348
31349    oFormData["action"]  = 'ctl-wp-studio';
31350    oFormData["execute"] = 'ctl-editors-framework';  
31351    oFormData["extension-action"]  = 'create-post';
31352    oFormData["allow-duplication"] = oNodeButtonCreate.attr("data-allow-duplication");
31353
31354	var oNodeExtraForm = null;
31355	
31356    if ( oNodeButtonCreate.attr("data-extra-form") ){
31357        oNodeExtraForm = oNodeCreatePost.find(".layout-" + 
31358                            oNodeButtonCreate.attr("data-extra-form"));
31359        if(ctlFormFieldsCheckIfFormIsFilled(oNodeExtraForm) === false ){
31360            __ctlEditorFrameworkMapEventKeyDownSaveHandler();
31361            return;
31362        }
31363        oFormData["extra-form"] = oNodeExtraForm.serializeObject();                                   
31364    }      
31365
31366    ctlEditorFrameworkAjaxUpdateObjectData(oNodeForm, oFormData, oNodeExtraForm);    
31367}
31368
31369function ctlEditorFrameworkAjaxUpdateFormData( oNodeForm, oFormData, bReloadPage, cb ){
31370    let idLoading = g_oCTLWPStudio.showLoading("");
31371    
31372    jQuery.ajax({
31373        url : g_oCTLWPStudio._oLangCommon["ajaxurl"],
31374        type: "POST",
31375        data : oFormData,
31376        cache: false,
31377        processData : false,
31378        contentType : false,
31379        method: 'POST',
31380        success:function(response, textStatus, jqXHR){
31381            let oResponse = jQuery.parseJSON(response);
31382
31383            if( oResponse.res === false ){     
31384
31385                ctlFormFieldsApplyErrors(oNodeForm, oResponse.errors);
31386
31387                jQuery(document).trigger("ajax-update", [ oFormData.get("click-class"), false ] );
31388                g_oCTLWPStudio.closeDlg(idLoading);
31389
31390            }else{
31391                jQuery(document).trigger("ajax-update", [ oFormData.get("click-class"), true ] );   
31392                
31393                if ( bReloadPage ){
31394                    g_oCTLWPStudio.showLoading("");
31395                    window.location.reload();
31396                }else{
31397                    g_oCTLWPStudio.closeDlg(idLoading);                    
31398                    if (cb){
31399                        cb.call(this, oResponse);
31400                    }
31401                }
31402            }
31403        },
31404        error: function(jqXHR, textStatus, errorThrown){
31405            jQuery(document).trigger("ajax-update", [ oFormData.get("click-class"), false ] );
31406            g_oCTLWPStudio.closeDlg(idLoading);
31407            alert(g_oCTLWPStudio._oLangCommon["Ooops! Something Went Wrong!"]);  
31408        }
31409    });    
31410}
31411
31412function __ctlEditorMakeGallerySortable(){
31413    jQuery(".ctl-media-gallery-list").each( function(){
31414        let oNodeGalleryList = jQuery(this);
31415        jQuery(this).sortable({            
31416        update : function(){
31417            let oNodeInput = oNodeGalleryList.find('input[type="hidden"]');
31418            if ( oNodeInput.length > 0 ){
31419                oNodeInput.first().trigger("change");
31420            }
31421        },        
31422        helper: __ctlEditorGetSortableHelper(),
31423        placeholder : 'ctl-media-gallery-list-item-placeholder'
31424            
31425        }).disableSelection();  
31426        
31427        jQuery(this).data( "ui-sortable" ).floating = true;
31428    });    
31429}
31430
31431
31432function __ctlEditorGetSortableHelper(){
31433    let fixHelperModified = function(e, oNode) {
31434        let $originals = oNode.children();
31435        let $helper    = __ctlEditorCloneNode(oNode);       
31436        let szTagName  = $helper[0].tagName.toLowerCase();
31437        
31438        $helper.children().each(function(index){
31439            jQuery(this).width($originals.eq(index).width());
31440            jQuery(this).css("background-color","#ffe7b3");
31441            jQuery(this).closest(szTagName).css("border","1px solid #ffc64c");
31442            jQuery(this).closest(szTagName).css("background-color","#ffe7b3");
31443            jQuery(this).closest(szTagName + " *").each( function(){
31444                jQuery(this).css("background-color","#ffe7b3");
31445            });
31446        });  
31447        
31448        return $helper;
31449    };
31450    return fixHelperModified;
31451};
31452
31453function __ctlEditorCloneNode( oNodeSource ){
31454    let oNodeClone = oNodeSource.clone();
31455    
31456    let oCloneSelectOptions    = oNodeClone.find('select');
31457    let oOriginalSelectOptions = oNodeSource.find('select');    
31458    
31459    if(oOriginalSelectOptions){
31460        oOriginalSelectOptions.each(function(index){
31461            let aCloneOptions = oCloneSelectOptions.eq(index).find("option");
31462            let aOriginalOptions = jQuery(this).find("option");
31463
31464            aOriginalOptions.each(function(index){
31465                aCloneOptions.eq(index).prop('selected',
31466                                jQuery(this).prop('selected'));                                
31467            });
31468        });                       
31469    } 
31470    return oNodeClone;
31471};
31472
31473function __ctlEditorFrameworkUpdateBrandPriceData( oNodeBrand, idBrand, cbSuccess){
31474    var oFormData = {};
31475    oFormData['action']           = 'ctl-wp-studio';
31476    oFormData['execute']          = 'ctl-editors-framework';        
31477    oFormData['extension-action'] = 'get-brand-price-data';
31478    oFormData['brand-id']         = idBrand;  
31479
31480    var idLoading = g_oCTLWPStudio.showLoading("");
31481
31482    jQuery.ajax({
31483        url : g_oCTLWPStudio._oLangCommon["ajaxurl"],
31484        type: "POST",
31485        data : oFormData,
31486        cache: false,
31487        method: 'POST',
31488        success:function(response, textStatus, jqXHR){  
31489            var oResponse = jQuery.parseJSON(response);    
31490            if( oResponse.res === false ){   
31491                g_oCTLWPStudio.closeDlg(idLoading);                                     
31492                alert(g_oCTLWPStudio._oLangCommon["Ooops! Something Went Wrong!"]);            
31493            }else{
31494                g_oCTLWPStudio.closeDlg(idLoading);
31495
31496                if (cbSuccess) {
31497                    cbSuccess.call(this, [oResponse["price-list-discount"]] );
31498                }
31499            }
31500        },
31501        error: function(jqXHR, textStatus, errorThrown){
31502            g_oCTLWPStudio.closeDlg(idLoading);
31503            alert(g_oCTLWPStudio._oLangCommon["Ooops! Something Went Wrong!"]);  
31504        }
31505    });
31506}
31507
31508function __ctlEditorFrameworkUpdateVATTaxPercentage( oNodeVATTax, idVATTax, cbSuccess){
31509    var oFormData = {};
31510    oFormData['action']           = 'ctl-wp-studio';
31511    oFormData['execute']          = 'ctl-editors-framework';        
31512    oFormData['extension-action'] = 'get-vat-tax-percentage';
31513    oFormData['vat-tax-id'] = idVATTax;  
31514
31515    var idLoading = g_oCTLWPStudio.showLoading("");
31516
31517    jQuery.ajax({
31518        url : g_oCTLWPStudio._oLangCommon["ajaxurl"],
31519        type: "POST",
31520        data : oFormData,
31521        cache: false,
31522        method: 'POST',
31523        success:function(response, textStatus, jqXHR){  
31524            var oResponse = jQuery.parseJSON(response);    
31525            if( oResponse.res === false ){   
31526                g_oCTLWPStudio.closeDlg(idLoading);                                     
31527                alert(g_oCTLWPStudio._oLangCommon["Ooops! Something Went Wrong!"]);            
31528            }else{
31529                g_oCTLWPStudio.closeDlg(idLoading);
31530                oNodeVATTax.data("vat-tax-percentage", oResponse["vat-tax-percentage"]);
31531                if (cbSuccess) {
31532                    cbSuccess.call(this);
31533                }
31534            }
31535        },
31536        error: function(jqXHR, textStatus, errorThrown){
31537            g_oCTLWPStudio.closeDlg(idLoading);
31538            alert(g_oCTLWPStudio._oLangCommon["Ooops! Something Went Wrong!"]);  
31539        }
31540    });
31541}
31542
31543function __ctlEditorFrameworkUpdatePriceCalculations( oNodeMain, szUpdatedFieldName){
31544
31545    if ( oNodeMain.attr("data-js-price-calculation") === "0"){
31546        return;
31547    } 
31548
31549    var oNodePriceList             = oNodeMain.find('input[name=price-list]');
31550    var oNodePriceListDiscount     = oNodeMain.find('input[name=price-list-discount]');
31551    var oNodeDiscount              = oNodeMain.find('input[name=discount]');
31552    var oNodePercentageProfit      = oNodeMain.find('input[name=percentage-profit]');
31553    var oNodeTotal                 = oNodeMain.find('input[name=total]');    
31554    var oNodeTotalTaxed            = oNodeMain.find('input[name=total-taxed]');
31555    var oNodeQty                   = oNodeMain.find('input[name=qty]');
31556    var oNodeQtyMultiplier2        = oNodeMain.find('input[name=qty-2]');
31557    var oNodeQtyMultiplier3        = oNodeMain.find('input[name=qty-3]');    
31558    var oNodeCost                  = oNodeMain.find('input[name=cost]');
31559    var oNodePrice                 = oNodeMain.find('input[name=price]');
31560    var oNodeProfit                = oNodeMain.find('input[name=profit]'); 
31561    var oNodeTotalCost             = oNodeMain.find('input[name=total-cost]');
31562    var oNodeTotalCostTaxed        = oNodeMain.find('input[name=total-cost-taxed]');
31563    var oNodeTotalProfit           = oNodeMain.find('input[name=total-profit]');   
31564    var oNodeTotalProfitPercentage = oNodeMain.find('input[name=total-profit-percentage]');   
31565    var oNodeVATTax                = oNodeMain.find('[name=vat-tax]'); 
31566    if(oNodeVATTax.length == 0){
31567        oNodeVATTax = oNodeMain.find('[data-field-name=vat-tax]');
31568    }
31569
31570    const iQty = oNodeQty.length > 0 ? Number(oNodeQty.val()) : 1;    
31571    const iQtyMultiplier2 = oNodeQtyMultiplier2.length > 0 ? Number(oNodeQtyMultiplier2.val()) : 1;
31572    const iQtyMultiplier3 = oNodeQtyMultiplier3.length > 0 ? Number(oNodeQtyMultiplier3.val()) : 1;
31573    const iTotalQty = iQty * iQtyMultiplier2 * iQtyMultiplier3;
31574
31575    const szDiscountType = oNodeDiscount.length > 0 ? oNodeDiscount.attr("data-discount-type") : "percentage";
31576    const fDiscount = oNodeDiscount.length > 0 ? Number(oNodeDiscount.val()) : 0;
31577    
31578    const fVATTaxPercentage = oNodeVATTax.length > 0 && oNodeVATTax.val() ? oNodeVATTax.data("vat-tax-percentage") : 0;
31579
31580    const fMinPrice = oNodePrice.length > 0 && oNodePrice.attr("data-min-price") ? Number(oNodePrice.attr("data-min-price")) : 0;
31581    const bBlockMinPrice = oNodePrice.length > 0 && oNodePrice.attr("data-min-price-block") == "1" ? true : false;
31582    const bAlertMinPrice = oNodePrice.length > 0 && oNodePrice.attr("data-min-price-alert") == "1" ? true : false;
31583
31584    var fCost = 0;
31585    var fPrice = 0;
31586
31587    var fProfit;
31588    var fPercentageProfit;
31589
31590    var fTotal;
31591    var fBaseTotal;
31592    var fTotalTaxed;
31593
31594    var fTotalCost;
31595    var fTotalCostTaxed;
31596
31597    var fTotalProfit;
31598    var fTotalProfitPercentage;
31599    
31600    if(oNodePrice.length > 0){
31601        fPrice = Number(oNodePrice.val());
31602    }
31603
31604    if ( oNodePriceList.length > 0 && oNodePriceListDiscount.length > 0){
31605        var fPriceList         = Number(oNodePriceList.val());
31606        var fPriceListDiscount = Number(oNodePriceListDiscount.val());
31607        fCost    = fPriceList - (fPriceList * (fPriceListDiscount / 100));
31608    }else if( oNodeCost.length > 0 ){
31609        fCost = Number(oNodeCost.val());
31610    }
31611
31612    
31613     // total
31614    if (oNodeTotal.length > 0){
31615        fTotal = Number(oNodeTotal.val());
31616        fBaseTotal = fTotal;
31617    }else{
31618        fTotal = iTotalQty * fPrice;
31619        fBaseTotal = fTotal;
31620    }
31621
31622    // total-cost
31623    if(oNodeTotalCost.length > 0){
31624        fTotalCost = Number(oNodeTotalCost.val());
31625    }else{
31626        fTotalCost = fCost * iTotalQty;
31627    }
31628
31629    // total-cost-taxed
31630    if(oNodeTotalCostTaxed.length > 0){
31631        fTotalCostTaxed = Number(oNodeTotalCostTaxed.val());
31632    }else{
31633        fTotalCostTaxed = fTotalCost * (1+(fVATTaxPercentage/100));
31634    }
31635
31636    // profit
31637    if(oNodeProfit.length > 0){
31638        fProfit = Number(oNodeProfit.val());
31639    }else{
31640        fProfit = fPrice - fCost;
31641    }
31642
31643    // percentage-profit
31644    if(oNodePercentageProfit.length > 0){
31645        fPercentageProfit = Number(oNodePercentageProfit.val());
31646    }else{
31647        if(fCost == 0){
31648            fPercentageProfit = 100;
31649        }else{
31650            fPercentageProfit = (fProfit) / fCost * 100;
31651        }
31652    }
31653
31654    // total-profit
31655    if(oNodeTotalProfit.length > 0){
31656        fTotalProfit = Number(oNodeTotalProfit.val());
31657    }else{
31658        fTotalProfit = fTotal - fTotalCost;
31659    }
31660
31661    // total-profit-percentage
31662    if(oNodeTotalProfitPercentage.length > 0){
31663        fTotalProfitPercentage = Number(oNodeTotalProfitPercentage.val());
31664    }else{
31665        if(fTotalCost == 0){
31666            fTotalProfitPercentage = 100;
31667        }else{
31668            fTotalProfitPercentage = (fTotalProfit) / fTotalCost * 100;
31669        }
31670    }
31671
31672
31673    let cbTryChangeFieldValue = ( oNodeField, fNewValue ) => {
31674        if( oNodeField.length == 0 ){
31675            return;
31676        }
31677
31678        if(oNodeField.data("ignore-js-calculation") === 1){
31679            return;
31680        }
31681
31682        let szCurFieldValue = oNodeField.val();
31683        let fCurValue = Number(szCurFieldValue);
31684        let fFixedValue = Number(fNewValue).toFixed(2);
31685
31686        if(!isNaN(fFixedValue)){
31687            if ( fCurValue != fFixedValue || szCurFieldValue == "" ){
31688                oNodeField.val(fFixedValue);
31689                oNodeField.trigger("change",[true]);
31690            }
31691        }
31692        
31693    }
31694
31695    let oRecalculationFunctions = {
31696        "price": () => {
31697            let bMinPriceBlocked = false;
31698            // check if price is lower than min price
31699            if ( fPrice < fMinPrice ){
31700                if ( bBlockMinPrice ){
31701                    fPrice = fMinPrice;
31702                    cbTryChangeFieldValue(oNodePrice, fPrice);
31703                    bMinPriceBlocked = true;
31704                }
31705                if ( bAlertMinPrice ){
31706                    if ( oNodePrice.length > 0 ){
31707                        var oNodeControlWrapper = oNodePrice.closest(".ctl-wp-studio-form-control-wrapper");
31708                        oNodeControlWrapper.find(".invalid-feedback").text(
31709                                    g_oCTLEditorsFrameworkLocalizationFront["Price is lower than minimum price"]);
31710                        oNodeControlWrapper.addClass("is-invalid");
31711                    }
31712                }
31713            }else{
31714                if ( oNodePrice.length > 0 ){
31715                    var oNodeControlWrapper = oNodePrice.closest(".ctl-wp-studio-form-control-wrapper");
31716                    oNodeControlWrapper.find(".invalid-feedback").text("");
31717                    oNodeControlWrapper.removeClass("is-invalid");
31718                }
31719            }
31720
31721            let aFieldsToUpdate = [
31722                "total",
31723                "total-taxed",
31724                "profit",
31725                "percentage-profit",
31726                "total-profit",
31727                "total-profit-percentage"
31728            ];
31729
31730            for (let i = 0; i < aFieldsToUpdate.length; i++) {
31731                const field = aFieldsToUpdate[i];
31732                if (szUpdatedFieldName !== field || bMinPriceBlocked) {
31733                    oRecalculationFunctions[field]();
31734                }
31735            }
31736        },
31737        "cost": () => {
31738            let aFieldsToUpdate = [
31739                "total-cost",
31740                "total-cost-taxed",
31741                "profit",
31742                "percentage-profit",
31743                "total-profit",
31744                "total-profit-percentage"
31745            ];
31746            for (let i = 0; i < aFieldsToUpdate.length; i++) {
31747                const field = aFieldsToUpdate[i];
31748                if (szUpdatedFieldName !== field) {
31749                    oRecalculationFunctions[field]();
31750                }
31751            }
31752        },
31753        "total": () => {
31754            fTotal = iTotalQty * fPrice;
31755            fBaseTotal = fTotal;
31756
31757            if ( fDiscount > 0 ){        
31758                let fDiscountAmountValue = 0;
31759                switch(szDiscountType){
31760                    case "percentage":{
31761                        fDiscountAmountValue = fBaseTotal * (fDiscount / 100);
31762                    }break;
31763                    case "value":{
31764                        fDiscountAmountValue = fDiscount;
31765                    }break;
31766                }
31767                fTotal = fTotal - fDiscountAmountValue;
31768            }
31769
31770            cbTryChangeFieldValue(oNodeTotal, fTotal);
31771        },
31772        "total-taxed": () => {
31773            fTotalTaxed = fTotal * (1+(fVATTaxPercentage/100));
31774            cbTryChangeFieldValue(oNodeTotalTaxed, fTotalTaxed);
31775        },
31776        "total-cost": () => {
31777            fTotalCost = fCost * iTotalQty;
31778            cbTryChangeFieldValue(oNodeTotalCost, fTotalCost);
31779        },
31780        "total-cost-taxed": () => {
31781            fTotalCostTaxed = fTotalCost * (1+(fVATTaxPercentage/100));
31782            cbTryChangeFieldValue(oNodeTotalCostTaxed, fTotalCostTaxed);
31783        },
31784        "profit": () => {
31785            fProfit = fPrice - fCost;
31786            cbTryChangeFieldValue(oNodeProfit, fProfit);
31787        },
31788        "percentage-profit": () => {
31789            if(fCost == 0){
31790                fPercentageProfit = 100;
31791            }else{
31792                fPercentageProfit = fProfit / fCost * 100;
31793            }
31794            cbTryChangeFieldValue(oNodePercentageProfit, fPercentageProfit);
31795        },
31796        "total-profit": () => {
31797            fTotalProfit = fTotal - fTotalCost;
31798            cbTryChangeFieldValue(oNodeTotalProfit, fTotalProfit);
31799        },
31800        "total-profit-percentage": () => {
31801            if(iTotalQty == 0){
31802                fTotalProfitPercentage = 0;
31803            }else if(fCost == 0){
31804                fTotalProfitPercentage = 100;
31805            }else{
31806                fTotalProfitPercentage = (fTotalProfit/fTotalCost)*100;
31807            }
31808            
31809            cbTryChangeFieldValue(oNodeTotalProfitPercentage, fTotalProfitPercentage);
31810        }
31811    } 
31812
31813    switch(szUpdatedFieldName){
31814        case "price-list":
31815        case "price-list-discount":{
31816            fPrice = fCost;
31817            cbTryChangeFieldValue(oNodeCost, fCost);
31818            cbTryChangeFieldValue(oNodePrice, fPrice);
31819
31820            oRecalculationFunctions["cost"]();
31821            oRecalculationFunctions["price"]();
31822        }break;
31823        case "discount":{
31824            oRecalculationFunctions["price"]();
31825            // oRecalculationFunctions["total"]();
31826            // oRecalculationFunctions["total-taxed"]();
31827        }break;
31828        case "qty":
31829        case "qty-2":
31830        case "qty-3":{
31831            oRecalculationFunctions["price"]();
31832            oRecalculationFunctions["cost"]();
31833        }break;
31834        case "price":{
31835            oRecalculationFunctions["price"]();
31836        }break;
31837        case "cost":{
31838            oRecalculationFunctions["cost"]();
31839        }break;
31840        case "vat-tax":{
31841            oRecalculationFunctions["total-taxed"]();
31842            oRecalculationFunctions["total-cost-taxed"]();
31843        }break;
31844        case "total-cost":{
31845            fTotalCost = Number(oNodeTotalCost.val());
31846            
31847            fCost = fTotalCost / iTotalQty;
31848            cbTryChangeFieldValue(oNodeCost, fCost);
31849
31850            oRecalculationFunctions["cost"]();
31851        }break;
31852        case "total":{
31853            fTotal = Number(oNodeTotal.val());
31854            fBaseTotal = fTotal;
31855
31856            if ( fDiscount > 0 ){        
31857                let fDiscountAmountValue = 0;
31858                switch(szDiscountType){
31859                    case "percentage":{
31860                        fDiscountAmountValue = fTotal * (fDiscount / (100-fDiscount));
31861                    }break;
31862                    case "value":{
31863                        fDiscountAmountValue = fDiscount;
31864                    }break;
31865                }
31866                fBaseTotal = fTotal + fDiscountAmountValue;
31867            }
31868            
31869            fPrice = fBaseTotal / iTotalQty;
31870            cbTryChangeFieldValue(oNodePrice, fPrice);
31871
31872            oRecalculationFunctions["price"]();
31873        }break;
31874        case "total-taxed":{
31875            fTotalTaxed = Number(oNodeTotalTaxed.val());
31876            
31877            fPrice = (fTotalTaxed / iTotalQty) / (1+(fVATTaxPercentage/100));
31878            cbTryChangeFieldValue(oNodePrice, fPrice);
31879            
31880            oRecalculationFunctions["price"]();
31881        }break;
31882        case "total-cost-taxed":{
31883            fTotalCostTaxed = Number(oNodeTotalCostTaxed.val());
31884            
31885            fCost = (fTotalCostTaxed / iTotalQty) / (1+(fVATTaxPercentage/100));
31886            cbTryChangeFieldValue(oNodeCost, fCost);
31887
31888            oRecalculationFunctions["cost"]();
31889        }break;
31890        case "profit":{
31891            fProfit = Number(oNodeProfit.val());
31892            
31893            fPrice = fProfit + fCost;
31894            cbTryChangeFieldValue(oNodePrice, fPrice);
31895
31896            oRecalculationFunctions["price"]();
31897        }break;
31898        case "percentage-profit":{
31899            fPercentageProfit = Number(oNodePercentageProfit.val());
31900            
31901            fPrice = fCost + (fCost * (fPercentageProfit / 100));
31902            cbTryChangeFieldValue(oNodePrice, fPrice);
31903            
31904            oRecalculationFunctions["price"]();
31905        }break;
31906        case "total-profit":{
31907            fTotalProfit = Number(oNodeTotalProfit.val());
31908            
31909            fPrice = (fTotalProfit / iTotalQty) + fCost;
31910            cbTryChangeFieldValue(oNodePrice, fPrice);
31911
31912            oRecalculationFunctions["price"]();
31913        }break;
31914        case "total-profit-percentage":{
31915            fTotalProfitPercentage = Number(oNodeTotalProfitPercentage.val());
31916
31917            fPrice = fCost * (1 + fTotalProfitPercentage / 100);
31918            cbTryChangeFieldValue(oNodePrice, fPrice);
31919
31920            oRecalculationFunctions["price"]();
31921        }break;
31922    }
31923}
31924
31925function ctlEditorFrameworkAjaxUpdateObjectData( oNodeForm, oFormData, oNodeExtraForm, cb ){
31926    var idLoading = g_oCTLWPStudio.showLoading("");
31927    
31928    jQuery.ajax({
31929        url : g_oCTLWPStudio._oLangCommon["ajaxurl"],
31930        type: "POST",
31931        data : oFormData,
31932        cache: false,
31933        method: 'POST',
31934        success:function(response, textStatus, jqXHR){
31935            var oResponse = jQuery.parseJSON(response);
31936
31937            if( oResponse.res === false ){              
31938                g_oCTLWPStudio.closeDlg(idLoading);
31939	
31940                ctlFormFieldsApplyErrors(oNodeForm, oResponse.errors);
31941                if (oNodeExtraForm){
31942                    ctlFormFieldsApplyErrors(oNodeExtraForm, oResponse.errors);
31943                }				
31944				
31945                if ( oResponse.alert ){
31946                    g_oCTLBootstrapModals.alert("", oResponse.alert );
31947                }
31948
31949                jQuery(document).trigger("ajax-update", [ oFormData["click-class"], false, oFormData, oResponse ] );                
31950            }else{
31951
31952                if( oResponse.reload ){
31953                    jQuery(document).trigger("ajax-update", [ oFormData["click-class"], true, oFormData, oResponse ] );
31954
31955                    if ( oResponse["remove-hashes-from-reload-url"] ){
31956                        window.location.hash = "";
31957                    }
31958                    window.location.reload();
31959                }else if( oResponse.redirect ){
31960                    jQuery(document).trigger("ajax-update", [ oFormData["click-class"], true, oFormData, oResponse ] );
31961                    window.location.href = oResponse.redirect;
31962                }else if ( oResponse['close-stack-dialog'] ){
31963                    g_oCTLWPStudio.closeDlg(idLoading);
31964                    jQuery(document).trigger("ajax-update", [ oFormData["click-class"], true, oFormData, oResponse ] );
31965                    g_oCTLBootstrapModals.closeModalAndStack();
31966                }else if ( oResponse['close-last-dialog'] ){
31967                    g_oCTLWPStudio.closeDlg(idLoading);
31968                    jQuery(document).trigger("ajax-update", [ oFormData["click-class"], true, oFormData, oResponse ] );
31969                    g_oCTLBootstrapModals.closeLastModal();
31970                }else if ( oResponse['close-stack-dialog-and-refresh-calendar'] ){
31971                    g_oCTLWPStudio.closeDlg(idLoading);
31972                    jQuery(document).trigger("ajax-update", [ oFormData["click-class"], true, oFormData, oResponse ] );
31973                    g_oCTLBootstrapModals.closeModalAndStack();
31974                    if ( jQuery(".ctl-calendar-action-reload").length > 0 ){
31975                        jQuery(".ctl-calendar-action-reload").click();
31976                    }   
31977                }else if ( oResponse['close-stack-dialog-and-refresh-table'] ){
31978                    g_oCTLWPStudio.closeDlg(idLoading);
31979
31980                    jQuery(document).trigger("ajax-update", [ oFormData["click-class"], true, oFormData, oResponse ] );
31981
31982                    if(oResponse["table-to-refresh"]){
31983                        ctlThemeTableAjaxRefreshTable(
31984                            jQuery(".ctl-theme-table-main-wrapper[data-table-id='" + oResponse["table-to-refresh"] + "']")
31985                        );
31986                    }
31987
31988                    g_oCTLBootstrapModals.closeModalAndStack();
31989                }else if ( oResponse['close-last-dialog-and-refresh-table'] ){
31990                    g_oCTLWPStudio.closeDlg(idLoading);
31991
31992                    jQuery(document).trigger("ajax-update", [ oFormData["click-class"], true, oFormData, oResponse ] );
31993
31994                    if(oResponse["table-to-refresh"]){
31995                        ctlThemeTableAjaxRefreshTable(
31996                            jQuery(".ctl-theme-table-main-wrapper[data-table-id='" + oResponse["table-to-refresh"] + "']")
31997                        );
31998                    }
31999
32000                    g_oCTLBootstrapModals.closeLastModal();
32001                }else if ( oResponse['load-modal-close-stack-dialog-and-refresh-table'] ){
32002                    g_oCTLWPStudio.closeDlg(idLoading);
32003
32004                    jQuery(document).trigger("ajax-update", [ oFormData["click-class"], true, oFormData, oResponse ] );
32005
32006                    var oExtraData = {};
32007                    oExtraData[oResponse["post-param"]] = oResponse["post-id"];
32008
32009                    g_oCTLBootstrapModals.closeModalAndStack();
32010                    g_oCTLBootstrapModals.loadModal(
32011                        oResponse["new-modal-id"], oExtraData, null, function(){
32012                            if(oResponse["table-to-refresh"]){
32013                                ctlThemeTableAjaxRefreshTable(
32014                                    jQuery(".ctl-theme-table-main-wrapper[data-table-id='" + oResponse["table-to-refresh"] + "']")
32015                                );
32016                            }
32017                        });     
32018
32019                }else if ( oResponse['load-modal-close-stack-dialog-and-refresh-calendar'] ){
32020                    g_oCTLWPStudio.closeDlg(idLoading);
32021
32022                    jQuery(document).trigger("ajax-update", [ oFormData["click-class"], true, oFormData, oResponse ] );
32023
32024                    var oExtraData = {};
32025                    oExtraData[oResponse["post-param"]] = oResponse["post-id"];
32026
32027                    g_oCTLBootstrapModals.closeModalAndStack();
32028                    g_oCTLBootstrapModals.loadModal(
32029                        oResponse["new-modal-id"], oExtraData, null, function(){
32030                            if ( jQuery(".ctl-calendar-action-reload").length > 0 ){
32031                                jQuery(".ctl-calendar-action-reload").click();
32032                            }  
32033                        });     
32034
32035                }else if ( oResponse['close-stack-dialog-and-load-modal'] ){
32036                    g_oCTLWPStudio.closeDlg(idLoading);
32037                    jQuery(document).trigger("ajax-update", [ oFormData["click-class"], true, oFormData, oResponse ] );
32038                    g_oCTLBootstrapModals.closeModalAndStack();
32039
32040                    var oExtraData = {};
32041                    oExtraData[oResponse["post-param"]] = oResponse["post-id"];
32042
32043                    g_oCTLBootstrapModals.loadModal(
32044                        oResponse["new-modal-id"], oExtraData);
32045                    
32046                }else if ( oResponse['close-last-dialog-and-load-modal'] ){
32047                    g_oCTLWPStudio.closeDlg(idLoading);
32048                    jQuery(document).trigger("ajax-update", [ oFormData["click-class"], true, oFormData, oResponse ] );
32049                    g_oCTLBootstrapModals.closeLastModal();
32050
32051                    var oExtraData = {};
32052                    oExtraData[oResponse["post-param"]] = oResponse["post-id"];
32053
32054                    g_oCTLBootstrapModals.loadModal(
32055                        oResponse["new-modal-id"], oExtraData);
32056                    
32057                }else if ( oResponse['load-modal-and-reload-page'] ){
32058                    g_oCTLWPStudio.closeDlg(idLoading);
32059                    jQuery(document).trigger("ajax-update", [ oFormData["click-class"], true, oFormData, oResponse ] );
32060                    
32061                    var oExtraData = {};
32062                    oExtraData[oResponse["post-param"]] = oResponse["post-id"];
32063
32064                    g_oCTLBootstrapModals.closeModalAndStack();
32065                    g_oCTLBootstrapModals.loadModal(
32066                        oResponse["new-modal-id"], oExtraData, null, function(){
32067                            g_oCTLWPStudio.showLoading("");
32068                            window.location.reload();
32069                        });                    
32070                }else{                
32071                    var iReload = parseInt(oNodeForm.find('input[name=reload-page]').val());                
32072                    if ( iReload === 1 ){
32073                        window.location.reload();
32074                    }else{
32075                        g_oCTLWPStudio.closeDlg(idLoading);
32076                        jQuery(document).trigger("ajax-update", [ oFormData["click-class"], true, oFormData, oResponse ] );  
32077
32078                        if (cb){
32079                            cb.call(this, oResponse);
32080                        }
32081                    }
32082                }                
32083
32084            } 
32085
32086            __ctlEditorFrameworkMapEventKeyDownSaveHandler()
32087        },
32088        error: function(jqXHR, textStatus, errorThrown){
32089            __ctlEditorFrameworkMapEventKeyDownSaveHandler();
32090            jQuery(document).trigger("ajax-update", [ oFormData["click-class"], false, oFormData, null ] );
32091            g_oCTLWPStudio.closeDlg(idLoading);
32092            alert(g_oCTLWPStudio._oLangCommon["Ooops! Something Went Wrong!"]);  
32093        }
32094    });    
32095}
32096
32097function ctlEditorFrameworkAjaxDeletePost( oFormData, cb ){
32098    var idLoading = g_oCTLWPStudio.showLoading("");
32099
32100    jQuery.ajax({
32101        url : g_oCTLWPStudio._oLangCommon["ajaxurl"],
32102        type: "POST",
32103        data : oFormData,
32104        cache: false,
32105        method: 'POST',
32106        success:function(response, textStatus, jqXHR){            
32107            var oResponse = jQuery.parseJSON(response);
32108
32109            if( oResponse.res === false ){              
32110                g_oCTLWPStudio.closeDlg(idLoading);
32111                alert(g_oCTLWPStudio._oLangCommon["Ooops! Something Went Wrong!"]); 
32112            }else{
32113                g_oCTLWPStudio.closeDlg(idLoading);                    
32114                if (cb){
32115                    cb.call(this, oResponse);
32116                } 
32117            }
32118        },
32119        error: function(jqXHR, textStatus, errorThrown){
32120            g_oCTLWPStudio.closeDlg(idLoading);
32121            alert(g_oCTLWPStudio._oLangCommon["Ooops! Something Went Wrong!"]);  
32122        }
32123    });  
32124}
32125
32126function ctlEditorFrameworkAjaxDeleteUser( oFormData, cb ){
32127    var idLoading = g_oCTLWPStudio.showLoading("");
32128
32129    jQuery.ajax({
32130        url : g_oCTLWPStudio._oLangCommon["ajaxurl"],
32131        type: "POST",
32132        data : oFormData,
32133        cache: false,
32134        method: 'POST',
32135        success:function(response, textStatus, jqXHR){            
32136            var oResponse = jQuery.parseJSON(response);
32137
32138            if( oResponse.res === false ){              
32139                g_oCTLWPStudio.closeDlg(idLoading);
32140                alert(g_oCTLWPStudio._oLangCommon["Ooops! Something Went Wrong!"]); 
32141            }else{
32142                g_oCTLWPStudio.closeDlg(idLoading);                    
32143                if (cb){
32144                    cb.call(this, oResponse);
32145                } 
32146            }
32147        },
32148        error: function(jqXHR, textStatus, errorThrown){
32149            g_oCTLWPStudio.closeDlg(idLoading);
32150            alert(g_oCTLWPStudio._oLangCommon["Ooops! Something Went Wrong!"]);  
32151        }
32152    });  
32153}
32154
32155function ctlEditorFrameworkAjaxTrashPost( oFormData, szRedirect ){
32156    var idLoading = g_oCTLWPStudio.showLoading("");
32157
32158    jQuery.ajax({
32159        url : g_oCTLWPStudio._oLangCommon["ajaxurl"],
32160        type: "POST",
32161        data : oFormData,
32162        cache: false,
32163        method: 'POST',
32164        success:function(response, textStatus, jqXHR){
32165            g_oCTLWPStudio.closeDlg(idLoading);
32166
32167            var oResponse = jQuery.parseJSON(response);
32168
32169            if( oResponse.res === false ){              
32170                alert(g_oCTLWPStudio._oLangCommon["Ooops! Something Went Wrong!"]); 
32171            }else{
32172                window.location.href = szRedirect;
32173            }
32174        },
32175        error: function(jqXHR, textStatus, errorThrown){
32176            g_oCTLWPStudio.closeDlg(idLoading);
32177            alert(g_oCTLWPStudio._oLangCommon["Ooops! Something Went Wrong!"]);  
32178        }
32179    });  
32180}
32181
32182
32183function ctlEditorFrameworkPostAttachmentsGallery( oNodeWrapper ){
32184
32185    var oFormData = {};
32186    oNodeWrapper.find("form").each(function(){
32187        oFormData = jQuery.extend(jQuery(this).serializeObject(), oFormData); 
32188    });
32189
32190    var aCurSelection = new Array();
32191    oNodeWrapper.find('.ctl-media-gallery-list li').each(function(){
32192        aCurSelection.push(jQuery(this).attr("data-id"));
32193    });
32194
32195    var oRequestData = {};
32196    oRequestData["action"]  = 'ctl-wp-studio';
32197    oRequestData["execute"] = 'ctl-editors-framework';  
32198    oRequestData["post-id"] = oFormData["post-id"]; 
32199    oRequestData["widget-id"] = oFormData["widget-id"];  
32200    oRequestData["extension-action"] = 'get-post-attachments-folder';
32201
32202    var idLoading = g_oCTLWPStudio.showLoading("");
32203
32204    jQuery.ajax({
32205        url : g_oCTLWPStudio._oLangCommon["ajaxurl"],
32206        type: "POST",
32207        data : oRequestData,
32208        cache: false,
32209        method: 'POST',
32210        success:function(response, textStatus, jqXHR){
32211            g_oCTLWPStudio.closeDlg(idLoading);
32212
32213            var oResponse = jQuery.parseJSON(response);
32214
32215            if( oResponse.res === false ){              
32216                if ( oResponse.desc ){
32217                    switch(oResponse.desc){
32218                        case "invalid_user":{
32219                            g_oCTLWPStudio.showLoading("");
32220                            window.location.reload();
32221                        }break;
32222                        default:{
32223                            g_oCTLBootstrapModals.alert("", oResponse.desc);
32224                        }
32225                    }
32226                } 
32227            }else{
32228                ctlEditorFrameworkShowMediaGallery(
32229                        oFormData["widget-id"],
32230                        oFormData["post-id"], 
32231                        oResponse.gallery, 
32232                        aCurSelection, 
32233                        oResponse.upload_max_filesize,
32234                        oResponse.max_file_uploads, "attachment");
32235            }
32236        },
32237        error: function(jqXHR, textStatus, errorThrown){
32238            g_oCTLWPStudio.closeDlg(idLoading);
32239            alert(g_oCTLWPStudio._oLangCommon["Ooops! Something Went Wrong!"]);  
32240        }
32241    });  
32242}
32243
32244function ctlEditorFrameworkFeaturedImage( oNodeWrapper, szMaxFileSize = null ){
32245
32246    var oFormData = {};
32247    oNodeWrapper.find("form").each(function(){
32248        oFormData = jQuery.extend(jQuery(this).serializeObject(), oFormData); 
32249    });
32250
32251    let idPost = oFormData["post-id"];
32252    if( "child-post-id" in oFormData ){
32253        idPost = oFormData["child-post-id"];
32254    }
32255
32256    ctlEditorFrameworkShowSingleMediaGallery(
32257                                oFormData["widget-id"],
32258                                idPost, "post-featured-image", szMaxFileSize);
32259}
32260
32261function ctlEditorFrameworkProfilePicture( oNodeWrapper ){
32262
32263    var oFormData = {};
32264    oNodeWrapper.find("form").each(function(){
32265        oFormData = jQuery.extend(jQuery(this).serializeObject(), oFormData); 
32266    });
32267
32268    ctlEditorFrameworkShowSingleMediaGallery(
32269            oFormData["widget-id"],
32270            oFormData["user-id"],
32271            "profile-picture");
32272}
32273
32274function ctlEditorFrameworkMediaGallery( oNodeWrapper ){
32275
32276    var oFormData = {};
32277    oNodeWrapper.find("form").each(function(){
32278        oFormData = jQuery.extend(jQuery(this).serializeObject(), oFormData); 
32279    });
32280
32281    var aCurSelection = new Array();
32282    oNodeWrapper.find('.ctl-media-gallery-list li').each(function(){
32283        aCurSelection.push(jQuery(this).attr("data-id"));
32284    });
32285
32286    var oRequestData = {};
32287    oRequestData["action"]  = 'ctl-wp-studio';
32288    oRequestData["execute"] = 'ctl-editors-framework';  
32289    oRequestData["post-id"] = oFormData["post-id"]; 
32290    oRequestData["widget-id"] = oFormData["widget-id"];  
32291    oRequestData["extension-action"] = 'get-post-gallery-folder';
32292
32293    var idLoading = g_oCTLWPStudio.showLoading("");
32294
32295    jQuery.ajax({
32296        url : g_oCTLWPStudio._oLangCommon["ajaxurl"],
32297        type: "POST",
32298        data : oRequestData,
32299        cache: false,
32300        method: 'POST',
32301        success:function(response, textStatus, jqXHR){
32302            g_oCTLWPStudio.closeDlg(idLoading);
32303
32304            var oResponse = jQuery.parseJSON(response);
32305
32306            if( oResponse.res === false ){              
32307                if ( oResponse.desc ){
32308                    switch(oResponse.desc){
32309                        case "invalid_user":{
32310                            g_oCTLWPStudio.showLoading("");
32311                            window.location.reload();
32312                        }break;
32313                        default:{
32314                            g_oCTLBootstrapModals.alert("", oResponse.desc);
32315                        }
32316                    }
32317                } 
32318            }else{
32319                ctlEditorFrameworkShowMediaGallery(
32320                        oFormData["widget-id"],
32321                        oFormData["post-id"], 
32322                        oResponse.gallery, aCurSelection, 
32323                        oResponse.upload_max_filesize, 
32324                        oResponse.max_file_uploads,"image");
32325            }
32326        },
32327        error: function(jqXHR, textStatus, errorThrown){
32328            g_oCTLWPStudio.closeDlg(idLoading);
32329            alert(g_oCTLWPStudio._oLangCommon["Ooops! Something Went Wrong!"]);  
32330        }
32331    });  
32332}
32333
32334function __ctlEditorFrameworkHtmlImageInPostGallery( oMedia, szTypeMedia ){
32335
32336    var szFieldName = "";
32337
32338    switch(szTypeMedia){
32339        case "image":{
32340            szFieldName = "post-gallery";
32341        }break;
32342        case "attachment":{
32343            szFieldName = "post-attachments";
32344        }break;        
32345    }
32346
32347    let html = "";
32348    let szFileName = oMedia.url.replace(/^.*[\\\/]/, '');
32349
32350    html += '<li data-id="' + oMedia.id + '" data-url="'+oMedia.url+'">';
32351    html += '<input type="hidden" name="'+szFieldName+'[]" value="' + oMedia.id +'"/>';
32352    html += __ctlEditorFrameworkHtmlMediaPreview(oMedia.url);
32353    html += '<small title="' + szFileName + '" class="ctl-post-media-name">' + szFileName +'</small>';
32354
32355    html += '</li>';
32356
32357    return html;
32358}
32359
32360
32361function __ctlEditorFrameworkHtmlMediaPreview( url ){
32362
32363    let szFileName = url.replace(/^.*[\\\/]/, '');
32364    let ext = szFileName.substring(szFileName.lastIndexOf('.')+1, szFileName.length) || szFileName;
32365    
32366    let htmlImg    = '';
32367    let htmlAnchor = '';
32368    let bAnchor    = true;
32369    let szAnchorClasses = '';
32370    let szTarget = '_blank';
32371
32372    switch(ext){
32373        case 'jpg':
32374        case 'jpeg':
32375        case 'gif':
32376        case 'png':
32377        case 'bmp':{
32378            bAnchor = false;
32379            htmlImg += '<img title="' + szFileName + '" class="ctl-post-attachment-gallery-list-item ctl-editor-framework-action-img-preview img-fluid image-preview rounded img-thumbnail w-100"';
32380            htmlImg += ' src="' + url + '" />';
32381        }break;
32382        case "pdf":{
32383            szTarget = '_self';
32384            szAnchorClasses = 'ctl-editors-framework-action-preview-pdf';
32385            htmlImg += '<div title="' + szFileName + '" class="ctl-post-attachment-gallery-list-item img-fluid image-preview rounded img-thumbnail w-100">';
32386            htmlImg += '<i class="ctl-wp-studio-icons-file-pdf"></i></div>';
32387        }break;
32388        case "zip":{
32389            htmlImg += '<div title="' + szFileName + '" class="ctl-post-attachment-gallery-list-item img-fluid image-preview rounded img-thumbnail w-100">';
32390            htmlImg += '<i class="ctl-wp-studio-icons-file-archive"></i></div>';
32391        }break;
32392        default:{
32393            htmlImg += '<div title="' + szFileName + '" class="ctl-post-attachment-gallery-list-item img-fluid image-preview rounded img-thumbnail w-100">';
32394            htmlImg += '<i class="ctl-wp-studio-icons-doc-text"></i></div>';            
32395        }
32396    }   
32397    
32398    if (bAnchor){
32399        htmlAnchor += '<a class="' + szAnchorClasses + '" href="' + url + '" target="' + szTarget + '">';
32400    }
32401    
32402    htmlAnchor += htmlImg;
32403
32404    if (bAnchor){
32405        htmlAnchor += '</a>';
32406    }
32407
32408    return htmlAnchor;
32409}
32410
32411function __ctlEditorFrameworkHtmlImageInMediaGallery( oMedia, bSelected, szTypeMedia ){
32412    var guid = g_oCTLWPStudio.makeCode(4);   
32413
32414    // check extension
32415    
32416    var szFileName = oMedia.url.replace(/^.*[\\\/]/, '');
32417
32418    var htmlImg = __ctlEditorFrameworkHtmlMediaPreview(oMedia.url);
32419
32420    var html = '';
32421    html += '<li data-id="'+oMedia.id+'" data-url="'+oMedia.url+'">';
32422        html += htmlImg;
32423        html += '<div class="input-group input-group-sm mt-2 mb-3">';
32424            html += '<div class="input-group-prepend">';
32425                html += '<div class="custom-control custom-checkbox">';
32426                    html += '<input id="' + guid + '" type="checkbox" class="custom-control-input" ';
32427                    html += 'name="ctl-media-gallery-selected[]" '+
32428                            'value="' + oMedia.id + '" ' +
32429                            (bSelected ? 'checked' : '' )+'/>';
32430                    html += '<label class="custom-control-label" ';
32431                    html += 'for="'+guid+'"></label>';
32432                html += '</div>';
32433            html += '</div>';
32434            html += '<input class="form-control" type="text" title="'+ szFileName +'" value="'+ szFileName +'" disabled/>';
32435            html += '<div class="input-group-append">';
32436                html += '<button data-id="'+oMedia.id+'" type="button" ';
32437                    html += 'class="btn btn-sm btn-outline-danger ctl-editor-framework-action-delete-post-media-'+szTypeMedia+'">';
32438                    html += '<i class="ctl-wp-studio-icons-trash"></i>';
32439                html += '</button>';
32440            html += '</div>';
32441        html += '</div>';
32442    html += '</li>';
32443
32444    return html;
32445}
32446
32447function __ctlEditorFrameworkMassiveImportCompute( oNodeButton ){
32448    var oNodeForm = oNodeButton.closest("form");
32449
32450    var oNodeItems = oNodeForm.find(".csv-list li");
32451    var oNodeItem  = oNodeItems.first();
32452
32453    var oFormData = new FormData();
32454    oFormData.append( 'extension-action', 'massive-import-compute' );
32455    oFormData.append( 'widget-id', oNodeForm.find('input[name=widget-id]').val() );
32456    oFormData.append( 'parent-id', oNodeForm.find('input[name=parent-id]').val() );
32457    oFormData.append( 'file', oNodeItem.attr("data-file") );
32458    oFormData.append( 'action', 'ctl-wp-studio' );
32459    oFormData.append( 'execute', 'ctl-editors-framework' );        
32460
32461    ctlEditorFrameworkAjaxUpdateFormData(oNodeForm, oFormData, false, function(oResponse){      
32462        if ( oResponse.res === true ){
32463            oNodeItem.remove();
32464
32465            oNodeItems = oNodeForm.find(".csv-list li");
32466
32467            if ( oNodeItems.length == 0 ){
32468                g_oCTLBootstrapModals.alert("", g_oCTLEditorsFrameworkLocalizationFront["Import completed"], function(){
32469                    if ( oResponse.redirect ){
32470                        g_oCTLWPStudio.showLoading("");
32471                        window.location.href = oResponse.redirect;
32472                    }
32473                });
32474                return;
32475            }
32476
32477            __ctlEditorFrameworkMassiveImportCompute(oNodeButton);
32478        } else{
32479            g_oCTLBootstrapModals.alert("", oResponse.desc);
32480        }          
32481    });
32482}
32483
32484function __ctlEditorFrameworkMassiveImportClear( oNodeButton ){
32485    var oNodeForm = oNodeButton.closest("form");
32486
32487    var oFormData = new FormData();
32488    oFormData.append( 'extension-action', 'massive-import-clear' );
32489    oFormData.append( 'widget-id', oNodeForm.find('input[name=widget-id]').val() );
32490    oFormData.append( 'action', 'ctl-wp-studio' );
32491    oFormData.append( 'execute', 'ctl-editors-framework' );        
32492
32493    ctlEditorFrameworkAjaxUpdateFormData(oNodeForm, oFormData, false, function(oResponse){      
32494        if ( oResponse.res === true ){
32495            g_oCTLWPStudio.showLoading("");
32496            window.location.reload();
32497        }           
32498    });
32499}
32500
32501function __ctlEditorFrameworkMassiveImportUpload( oNodeButton ){
32502    var oNodeForm = oNodeButton.closest("form");
32503
32504    if ( ctlFormFieldsCheckIfFormIsFilled(oNodeForm) === false){
32505        return;
32506    }
32507
32508    var oNodeInput = oNodeForm.find('input[name="csv"], input[name="csv[]"]');
32509    var aFiles    = oNodeInput[0].files;
32510    
32511    var oFormData = new FormData();
32512    oFormData.append( 'extension-action', 'massive-import-upload' );
32513    oFormData.append( 'widget-id', oNodeForm.find('input[name=widget-id]').val() );
32514    oFormData.append( 'parent-id', oNodeForm.find('input[name=parent-id]').val() );
32515    oFormData.append( 'action', 'ctl-wp-studio' );
32516    oFormData.append( 'execute', 'ctl-editors-framework' );        
32517    for ( var i = 0; i < aFiles.length; i++ ){
32518        oFormData.append( 'file[]', aFiles[i] );
32519    }    
32520
32521    ctlEditorFrameworkAjaxUpdateFormData(oNodeForm, oFormData, false, function(oResponse){              
32522        if ( oResponse.res === true ){
32523            if(oResponse.alert){
32524                g_oCTLBootstrapModals.alert("", oResponse.alert, function(){
32525                                g_oCTLWPStudio.showLoading("");
32526                                window.location.reload();
32527                }, g_oCTLEditorsFrameworkLocalizationFront["Continue"]);
32528        
32529            } else {
32530                g_oCTLWPStudio.showLoading("");
32531                window.location.reload();
32532            } 
32533        }           
32534    });
32535
32536}
32537
32538function __ctlEditorFrameworkUpdatePostGallery( oNodeForm, szTypeMedia ){
32539
32540    jQuery(".ctl-edit-post-form").each(function(){
32541        let oNodeEditPostForm = jQuery(this);
32542        if ( Number(jQuery(this).find('input[name=widget-id]').val()) === 
32543             Number(oNodeForm.find('input[name=widget-id]').val()) &&
32544
32545             Number(jQuery(this).find('input[name=post-id]').val()) === 
32546             Number(oNodeForm.find('input[name=post-id]').val()) ){
32547
32548            var oNodePostGallery = jQuery(this).find(".ctl-post-"+szTypeMedia+"-gallery-list");
32549            var oFormData        = oNodeForm.serializeObject();
32550            var aSelectedImages  = oFormData["ctl-media-gallery-selected"];
32551
32552            if (!aSelectedImages){
32553                aSelectedImages = [];
32554            }
32555
32556            var aCurrentImages = [];
32557            oNodePostGallery.find("li").each(function(){
32558                if ( !aSelectedImages.includes( jQuery(this).attr("data-id") ) ){
32559                    jQuery(this).remove();
32560                }else{
32561                    aCurrentImages.push(jQuery(this).attr("data-id"));
32562                }
32563            });
32564
32565            for( var i = 0; i < aSelectedImages.length; i++ ){
32566                if( !aCurrentImages.includes(aSelectedImages[i])){
32567                    oNodePostGallery.append(__ctlEditorFrameworkHtmlImageInPostGallery(
32568                        { 
32569                            id : aSelectedImages[i],
32570                            url : jQuery('.ctl-media-gallery-folder li[data-id=' +
32571                                            aSelectedImages[i] + ']').attr("data-url")
32572                        }, szTypeMedia
32573                    ));
32574                }
32575            }
32576
32577            let oNodeLastInput = oNodePostGallery.find('input').last();
32578            if ( oNodeLastInput.length > 0 ){
32579                oNodeLastInput.trigger("change");
32580            }else{
32581                let oNodeEditPostcontainer = oNodeEditPostForm.closest(".ctl-edit-post-data-container");
32582
32583                if ( oNodeEditPostcontainer.data("autosave") == "1" ){
32584                    if (oNodeEditPostForm.closest(".modal").length > 0 ){
32585                        ctlEditorFrameworkEditPostAutoSaveData(oNodeEditPostForm.closest(".modal").find(".ctl-editors-action-edit-post-data"));
32586                    }else{
32587                        ctlEditorFrameworkEditPostAutoSaveData(oNodeEditPostcontainer.find(".ctl-editors-action-edit-post-data"));
32588                    }
32589                }
32590            }
32591
32592            g_oCTLWPStudio.onResize(oNodePostGallery);            
32593        }
32594    });
32595}
32596
32597
32598function __ctlEditorFrameworkDeletePostAttachment( idWidget, idPost, idAttachment ){
32599    var oRequestData = {};
32600    oRequestData["action"]  = 'ctl-wp-studio';
32601    oRequestData["execute"] = 'ctl-editors-framework';  
32602    oRequestData["post-id"] = idPost; 
32603    oRequestData["widget-id"] = idWidget;  
32604    oRequestData["attachment-id"]    = idAttachment;  
32605    oRequestData["extension-action"] = 'delete-post-attachment';
32606
32607    var idLoading = g_oCTLWPStudio.showLoading("");
32608
32609    jQuery.ajax({
32610        url : g_oCTLWPStudio._oLangCommon["ajaxurl"],
32611        type: "POST",
32612        data : oRequestData,
32613        cache: false,
32614        method: 'POST',
32615        success:function(response, textStatus, jqXHR){
32616            g_oCTLWPStudio.closeDlg(idLoading);
32617
32618            var oResponse = jQuery.parseJSON(response);
32619
32620            if( oResponse.res === false ){              
32621                if ( oResponse.desc ){
32622                    switch(oResponse.desc){
32623                        case "invalid_user":{
32624                            g_oCTLWPStudio.showLoading("");
32625                            window.location.reload();
32626                        }break;
32627                        default:{
32628                            g_oCTLBootstrapModals.alert("", oResponse.desc);
32629                        }
32630                    }
32631                } 
32632            }else{
32633                var oNodeImageListItem = null;
32634
32635                oNodeImageListItem = jQuery(".ctl-media-gallery-folder li[data-id="+oResponse.attachment_id+"]");
32636                if ( oNodeImageListItem.length > 0 ){
32637                    oNodeImageListItem.remove();
32638                }
32639
32640                oNodeImageListItem = jQuery(".ctl-media-gallery-list li[data-id="+oResponse.attachment_id+"]");
32641                if ( oNodeImageListItem.length > 0 ){
32642                    oNodeImageListItem.remove();
32643                }  
32644                
32645                if ( jQuery(".ctl-media-gallery-folder li").length === 0 ){
32646                    jQuery(".ctl-media-gallery-modal .tab-link-upload-media").click();
32647                }
32648
32649                if ( jQuery(".ctl-edit-data-container-"+idWidget).length > 0 ){
32650                    let oNodeEditPostContainer = jQuery(".ctl-edit-data-container-"+idWidget);
32651                    if ( oNodeEditPostContainer.data("autosave") == "1" ){
32652                        if (oNodeEditPostContainer.closest(".modal").length > 0 ){
32653                            ctlEditorFrameworkEditPostAutoSaveData(oNodeEditPostContainer.closest(".modal").find(".ctl-editors-action-edit-post-data"));
32654                        }else{
32655                            ctlEditorFrameworkEditPostAutoSaveData(oNodeEditPostContainer.find(".ctl-editors-action-edit-post-data"));
32656                        }
32657                    }
32658                }
32659            }
32660        },
32661        error: function(jqXHR, textStatus, errorThrown){
32662            g_oCTLWPStudio.closeDlg(idLoading);
32663            alert(g_oCTLWPStudio._oLangCommon["Ooops! Something Went Wrong!"]);  
32664        }
32665    });  
32666}
32667
32668function __ctlEditorFrameworkDeletePostImage( idWidget, idPost, idImage ){
32669    var oRequestData = {};
32670    oRequestData["action"]  = 'ctl-wp-studio';
32671    oRequestData["execute"] = 'ctl-editors-framework';  
32672    oRequestData["post-id"] = idPost; 
32673    oRequestData["widget-id"] = idWidget;  
32674    oRequestData["image-id"]  = idImage;  
32675    oRequestData["extension-action"] = 'delete-post-image';
32676
32677    var idLoading = g_oCTLWPStudio.showLoading("");
32678
32679    jQuery.ajax({
32680        url : g_oCTLWPStudio._oLangCommon["ajaxurl"],
32681        type: "POST",
32682        data : oRequestData,
32683        cache: false,
32684        method: 'POST',
32685        success:function(response, textStatus, jqXHR){
32686            g_oCTLWPStudio.closeDlg(idLoading);
32687
32688            var oResponse = jQuery.parseJSON(response);
32689
32690            if( oResponse.res === false ){              
32691                if ( oResponse.desc ){
32692                    switch(oResponse.desc){
32693                        case "invalid_user":{
32694                            g_oCTLWPStudio.showLoading("");
32695                            window.location.reload();
32696                        }break;
32697                        default:{
32698                            g_oCTLBootstrapModals.alert("", oResponse.desc);
32699                        }
32700                    }
32701                } 
32702            }else{
32703                var oNodeImageListItem = null;
32704
32705                oNodeImageListItem = jQuery(".ctl-media-gallery-folder li[data-id="+oResponse.image_id+"]");
32706                if ( oNodeImageListItem.length > 0 ){
32707                    oNodeImageListItem.remove();
32708                }
32709
32710                oNodeImageListItem = jQuery(".ctl-media-gallery-list li[data-id="+oResponse.image_id+"]");
32711                if ( oNodeImageListItem.length > 0 ){
32712                    oNodeImageListItem.remove();
32713                }  
32714                
32715                if ( jQuery(".ctl-media-gallery-folder li").length === 0 ){
32716                    jQuery(".ctl-media-gallery-modal .tab-link-upload-media").click();
32717                }
32718            }
32719        },
32720        error: function(jqXHR, textStatus, errorThrown){
32721            g_oCTLWPStudio.closeDlg(idLoading);
32722            alert(g_oCTLWPStudio._oLangCommon["Ooops! Something Went Wrong!"]);  
32723        }
32724    });  
32725}
32726
32727function ctlEditorFrameworkShowSingleMediaGallery( idWidget, idResource, szTypeMedia, szMaxFileSize = null ){
32728    var htmlHiddenFields = "";
32729
32730    htmlHiddenFields += formFieldsBuildHiddenField({
32731        'field-name' : 'widget-id',
32732    }, idWidget);  
32733
32734
32735    switch(szTypeMedia){
32736        case "profile-picture":{
32737            htmlHiddenFields += formFieldsBuildHiddenField({
32738                'field-name' : 'user-id',
32739            }, idResource); 
32740        }break;
32741        default:{
32742            htmlHiddenFields += formFieldsBuildHiddenField({
32743                'field-name' : 'post-id',
32744            }, idResource); 
32745        }
32746    }
32747
32748    var html = "";
32749    html += '<div id="upload-media">';
32750    html += '<form method="post" enctype="multipart/form-data">';
32751
32752    html += htmlHiddenFields;
32753
32754    let szLabelDescription = "";
32755    if(szMaxFileSize){
32756        szLabelDescription = sprintf(g_oCTLEditorsFrameworkLocalizationFront["Max upload file size %s"], szMaxFileSize);
32757    }
32758
32759    html += formFieldsBuildUploadAreaField({
32760        "field-name"     : "upload-image",
32761        "wrapper-classes"  : "mb-0",
32762        "preview-image"  : true,
32763        "browse-icon"    : "",
32764        "btn-outlined"   : true,
32765        "mandatory"      : true,
32766        "mandatory-on-label" : true,
32767        "label-button"   : g_oCTLEditorsFrameworkLocalizationFront["Browse"],
32768        "label-description" : szLabelDescription,
32769        "append-buttons" : '<button type="button" class="' + 
32770                           'btn btn-primary disabled ctl-editor-framework-action-upload-'+szTypeMedia+'">'+
32771                           g_oCTLEditorsFrameworkLocalizationFront["Continue"]+'</button>'
32772    } );
32773
32774    html += '</form>';
32775
32776    html += '</div>';
32777
32778    g_oCTLBootstrapModals.showModal({
32779        wrapper_classes : "ctl-media-gallery-modal",
32780        modal_title : g_oCTLEditorsFrameworkLocalizationFront["Upload"],
32781        modal_content : html,
32782        footer_btn_close : false,
32783        closeable : true,
32784        width: '80',
32785        position: "centered",
32786        entrance_animation : "animate__slideInUp",
32787        exit_animation : "animate__slideOutDown",  
32788    });
32789}
32790
32791function __ctlEditorFrameworkMatchPostDifferences( oCurrentPost, oOldPost ){
32792    var oMetaDifferencies = {};
32793    var iCntDifferencies = 0;
32794
32795    for( var key in oCurrentPost["metas"] ){
32796        if ( oOldPost["metas"][key]  ){
32797            if ( oCurrentPost["metas"][key][0] !== oOldPost["metas"][key][0]){
32798                oMetaDifferencies[key] = { 
32799                    "prev" :  oOldPost["metas"][key][0],
32800                    "current" :  oCurrentPost["metas"][key][0] 
32801                };
32802                iCntDifferencies++;
32803            }
32804        }
32805    }
32806
32807    var oPostDifferencies = {};
32808    var aPostKeys = [ "post_title", "post_content", "post_excerpt", "post_status", "post_author",  "post_parent" ];
32809    for( var k = 0; k < aPostKeys.length; k++ ){
32810        var key = aPostKeys[k];
32811        if ( oCurrentPost["post"][key] !== oOldPost["post"][key]){
32812            oPostDifferencies[key] = {
32813                 "prev"    : oOldPost["post"][key],
32814                 "current" : oCurrentPost["post"][key]  
32815            };
32816            iCntDifferencies++;            
32817        }
32818    }
32819
32820    return { "metas" : oMetaDifferencies, 
32821             "post"  : oPostDifferencies, 
32822             "previous-date"  : oOldPost["post"]["post_date"],
32823             "count" : iCntDifferencies };
32824}
32825
32826function __htmlPostDifference( oDifferencies, key ){
32827    var html = '';
32828
32829    var szSemantic = "";
32830
32831    html += '<div class="row">';
32832        html += '<div class="col col-12">';
32833            html += '<h5 class="text-center">' + key + '</h5>';        
32834        html += '</div>';    
32835        html += '<div class="col col-6">';
32836
32837            szSemantic = "info";
32838
32839            html += '<div class="alert alert-' + szSemantic + ' mb-0 h-100 text-break">' + oDifferencies[key]["current"] + '</div>';
32840        html += '</div>';
32841        html += '<div class="col col-6">';
32842
32843            szSemantic = "warning";
32844
32845            html += '<div class="alert alert-' + szSemantic + ' mb-0 h-100 text-break">' + oDifferencies[key]["prev"] + '</div>';
32846        html += '</div>';            
32847    html += '</div>';
32848
32849    return html;
32850}
32851
32852function __ctlEditorFrameworkShowEditPostStatus( oNodeButton ){
32853
32854    var oFormData = {};
32855    var idWidget = oNodeButton.attr("data-widget-id");
32856    var szFormSelector = "form[data-widget-id="+idWidget+"]";
32857    var oNodeForm = jQuery(szFormSelector);
32858    var oFormData = oNodeForm.serializeObject();
32859    
32860    oFormData['action']           = 'ctl-wp-studio';
32861    oFormData['execute']          = 'ctl-editors-framework';        
32862    oFormData['extension-action'] = 'get-post-change-statuses';  
32863
32864    var idLoading = g_oCTLWPStudio.showLoading("");
32865
32866    jQuery.ajax({
32867        url : g_oCTLWPStudio._oLangCommon["ajaxurl"],
32868        type: "POST",
32869        data : oFormData,
32870        cache: false,
32871        method: 'POST',
32872        success:function(response, textStatus, jqXHR){  
32873            g_oCTLWPStudio.closeDlg(idLoading);              
32874            var oResponse = jQuery.parseJSON(response);    
32875            if( oResponse.res === false ){                                      
32876                if ( oResponse.alert ){
32877                    g_oCTLBootstrapModals.alert("", oResponse.alert );
32878                }else if ( oResponse.desc ){
32879                    switch(oResponse.desc){
32880                        case "invalid_user":{
32881                            g_oCTLWPStudio.showLoading("");
32882                            window.location.reload();
32883                        }break;
32884                        default:{
32885                            g_oCTLBootstrapModals.alert("", oResponse.desc);
32886                        }
32887                    }
32888                }                 
32889            }else{
32890
32891                var html = "";
32892
32893                html += '<form data-widget-id="' + idWidget + '">';
32894                html += '<div class="row justify-content-center">';
32895
32896                if(oResponse["show-post-status-note"]){
32897                    html += '<div class="col-12">';
32898                        html += formFieldsBuildTextAreaField({
32899                            "label-title" : g_oCTLEditorsFrameworkLocalizationFront["Status notes"],
32900                            "display" : 12,
32901                            "field-name" : "post-status-note",
32902                            "mandatory" : oResponse["mandatory-post-status-note"]
32903                        });
32904                    html += '</div>';
32905                }
32906
32907                for( var i = 0; i < oResponse.statuses.length; i++ ){
32908                    var oStatus = oResponse.statuses[i];
32909                    html += '<div class="col col-12 col-sm-6 col-md-6 mb-2">';
32910                        html += '<button style="background-color:'+ oStatus["color"] +';" class="btn h-100 w-100  chroma-apply-correction ctl-editors-action-change-post-status" type="button" value="'+
32911                        oStatus.value +'">' + oStatus.label + '</button>';
32912                    html += '</div>';
32913                }
32914
32915                html += '</div>';
32916                html += '</form>';
32917
32918                g_oCTLBootstrapModals.showModal({
32919                    wrapper_classes : "ctl-post-edit-status",
32920                    modal_title : g_oCTLEditorsFrameworkLocalizationFront["Edit Status"],
32921                    modal_content : html,                              
32922                    closeable : true,
32923                    footer_btn_close : false,
32924                    width: '60',
32925                    position: "centered",
32926                    entrance_animation : "animate__slideInUp",
32927                    exit_animation : "animate__slideOutDown",                      
32928                    attributes : 'data-form-selector="' + Base64.encode(szFormSelector) + '"'
32929                });
32930            }
32931        },
32932        error: function(jqXHR, textStatus, errorThrown){
32933            g_oCTLWPStudio.closeDlg(idLoading);
32934            alert(g_oCTLWPStudio._oLangCommon["Ooops! Something Went Wrong!"]);  
32935        }
32936    });     
32937}
32938
32939function __ctlEditorFrameworkAdaptModal( oNodeModal ){
32940
32941    var oNodeEditorButtons = oNodeModal.find(".ctl-editor-framework-editor-buttons");
32942    var oNodeModalFooter   = oNodeModal.find(".modal-footer");
32943    var oNodeWizard        = oNodeModal.find(".ctlgrouptabs-wrapper.ctlgrouptabs-wizard");   
32944
32945    if ( oNodeModalFooter.length == 0 ){
32946        return;
32947    }
32948
32949    if ( oNodeWizard.length > 0 ){
32950        return;
32951    }
32952
32953    if (oNodeEditorButtons.length == 0 ){  
32954        return;
32955    }
32956
32957    if ( oNodeEditorButtons.closest(".ctlgrouptabs-wrapper").length > 0 ){
32958        return;
32959    }
32960
32961    let oNodeModalFooterExtraButtons = oNodeModalFooter.find(".modal-footer-extra-buttons"); 
32962    let oNodeModalFooterButtons = oNodeModalFooter.find(".modal-footer-buttons"); 
32963
32964    oNodeModalFooterExtraButtons.html(oNodeEditorButtons.html());
32965    oNodeModalFooter.removeClass("d-none");
32966    oNodeEditorButtons.addClass("d-none");
32967
32968    var oNodeCloseModalExtraButton = oNodeModalFooterExtraButtons.find(".btn-action-close-modal");
32969    var oNodeCloseModalButton = oNodeModalFooterButtons.find(".btn-action-close-modal");
32970
32971    if(oNodeCloseModalExtraButton.length > 0){
32972        if(oNodeCloseModalButton.length > 0){
32973            oNodeCloseModalExtraButton.remove();
32974            oNodeCloseModalButton.removeClass("d-none");
32975        }
32976    }else if(oNodeCloseModalButton.length > 0){
32977        oNodeCloseModalButton.addClass("d-none");
32978    }
32979}
32980
32981function __ctlEditorFrameworkImagePreview( szImageUrl, szImageTitle = "" ){
32982
32983    var html = "";
32984
32985    html += '<div class="ctl-editor-framework-image-preview d-flex h-100 align-items-center">';
32986        html += '<div class="text-center ctl-editor-framework-image-loader">';    
32987            html += '<i class="spinner-border text-primary"></i>'
32988        html += '</div>';
32989        html += '<img onload="__ctlEditorFrameworkImageRemoveSpinner(this)" class="d-none mx-auto img-fluid" src="' + szImageUrl+ '" />';
32990    html += '</div>';
32991
32992    let aSettingsModal = {
32993        wrapper_classes : "ctl-editor-framework-image-preview-dialog",
32994        modal_title : szImageTitle,
32995        modal_content : html,
32996        closeable : true,
32997        width: '80',
32998        position: "centered",
32999        entrance_animation : "animate__slideInUp",
33000        exit_animation : "animate__slideOutDown", 
33001        footer_btn_close : true,  
33002        footer_buttons : []                 
33003    };
33004
33005    let szButtonHtml = '<button class="btn btn-primary btn-save-pdf-viewer" data-pdf-url="' + szImageUrl + '">';
33006    szButtonHtml += '<i class="ctl-wp-studio-icons-download-cloud mr-2"></i>' + g_oCTLEditorsFrameworkLocalizationFront["Download"];
33007    szButtonHtml+= '</button>';
33008
33009    aSettingsModal.footer_buttons.push(szButtonHtml);
33010
33011    g_oCTLBootstrapModals.showModal(aSettingsModal);
33012}
33013
33014function __ctlEditorFrameworkImageRemoveSpinner(domImage){
33015    var oNodeImage = jQuery(domImage);
33016    var oNodeImagePreview = oNodeImage.closest(".ctl-editor-framework-image-preview");
33017    var oNodespinner = oNodeImagePreview.find(".ctl-editor-framework-image-loader");
33018    oNodespinner.remove();
33019    oNodeImage.removeClass("d-none");
33020    oNodeImage.addClass("d-block");
33021}
33022
33023function __ctlEditorFrameworkInitPriceCalculationFields( ){
33024
33025    jQuery(".ctl-edit-post,.ctl-create-post,.ctl-create-user,.ctl-edit-user").each(function(){
33026
33027        var oNode = jQuery(this);
33028
33029        var oNodePriceList         = oNode.find('input[name=price-list]');
33030        var oNodePriceListDiscount = oNode.find('input[name=price-list-discount]');
33031        var oNodeCost        = oNode.find('input[name=cost]');
33032
33033        if ( oNodePriceList.length > 0 && 
33034            oNodePriceListDiscount.length > 0 &&
33035            oNodeCost.length > 0 ){
33036            // because cost is derived from price list and its discount
33037            let oNodeFormGroup = oNodeCost.closest(".form-group");
33038            oNodeFormGroup.addClass("ctl-form-input-disabled");
33039            oNodeCost.attr("tabindex", "-1");
33040        }
33041
33042        let aFieldsToBlock = [
33043            "total-profit",
33044            "total-cost",
33045            "total-cost-taxed",
33046            "total-taxed",
33047            "total",
33048            "profit",
33049            // "percentage-profit",
33050            "total-profit-percentage"
33051        ];
33052
33053        if ( oNode.attr("data-js-block-price-totals") === "0"){
33054            let aCreatePostFields = [
33055                "total-profit",
33056                "total-cost",
33057                "total-cost-taxed",
33058                "total-taxed",
33059                "total",
33060                "profit",
33061                // "percentage-profit",
33062                "total-profit-percentage"
33063            ];
33064
33065            let szCreatePostFieldsSelector = aCreatePostFields.map(field => '.ctl-create-post-form input[name='+field+']' ).join(',');
33066            let szEditPostFieldsSelector = aCreatePostFields.map(field => '.ctl-edit-post-form input[name='+field+']' ).join(',');
33067
33068            jQuery(document).on("change input paste", szCreatePostFieldsSelector, function(e, bPreventCalculations){
33069                if( !bPreventCalculations ){
33070                    __ctlEditorFrameworkUpdatePriceCalculations(jQuery(this).closest(".ctl-create-post"),jQuery(this).attr("name"));
33071                }
33072            });
33073
33074            jQuery(document).on("change input paste", szEditPostFieldsSelector, function(e, bPreventCalculations){
33075                if( !bPreventCalculations ){
33076                    __ctlEditorFrameworkUpdatePriceCalculations(jQuery(this).closest(".ctl-edit-post"),jQuery(this).attr("name"));
33077                }
33078            });
33079            return;
33080        } 
33081
33082        
33083
33084        aFieldsToBlock.forEach(szFieldName => {
33085            __ctlEditorFrameworkBlockPriceField(oNode, szFieldName);
33086        });         
33087    });
33088    
33089}
33090
33091function __ctlEditorFrameworkBlockPriceField(oNodeMain, szFieldName){
33092    let oNodeField = oNodeMain.find('input[name='+szFieldName+']');
33093
33094    if ( oNodeField.length == 0 ){
33095        return;
33096    }
33097    
33098    let oNodeFormGroup = oNodeField.closest(".form-group");
33099    oNodeFormGroup.addClass("ctl-form-input-disabled");
33100    oNodeField.attr("tabindex", "-1");
33101}
33102
33103function __ctlEditorFrameworkInlineStatusButtonsChangePostStatus( oNodeButton ){
33104
33105    var idWidgetID = oNodeButton.attr("data-widget-id");
33106
33107    let oPostStatusField = jQuery('form[data-widget-id='+idWidgetID+']').find('input[name=post-status]').filter('[value='+ oNodeButton.val() +']');
33108    let bChecked = oPostStatusField.prop('checked');
33109    
33110    
33111    oPostStatusField.prop('checked', true);
33112
33113    let oNodeMultiEditPost = oNodeButton.closest(".ctl-multi-edit-post");
33114    if(oNodeMultiEditPost.length > 0){
33115        oPostStatusField.data('checked-before-btn-click', bChecked);
33116        oNodeMultiEditPost.find(".ctl-editors-action-multi-edit-posts").click();
33117    }else{
33118        jQuery(".ctl-editors-action-edit-post-data-"+idWidgetID).first().click();
33119        oPostStatusField.prop('checked', bChecked);
33120    }
33121}
33122
33123function __ctlEditorFrameworkChangePostStatus( oNodeButton ){
33124    var oNodeModal = oNodeButton.closest(".modal");
33125    var oNodeForm  = oNodeButton.closest("form");
33126    var idWidgetID = oNodeForm.attr("data-widget-id");
33127    var oNodeNote  = oNodeForm.find('textarea[name=post-status-note]');
33128
33129    if(!ctlFormFieldsCheckIfFormIsFilled(oNodeForm)){
33130        return;
33131    }
33132    
33133    var szFormSelector = Base64.decode(oNodeModal.attr("data-form-selector"));
33134
33135    jQuery(szFormSelector).find('textarea[name=post-status-note]').val(oNodeNote.val());
33136
33137    let oPostStatusField = jQuery(szFormSelector).find('input[name=post-status]').filter('[value='+ oNodeButton.val() +']');
33138    let bChecked = oPostStatusField.prop('checked');
33139
33140    oPostStatusField.prop('checked', true);
33141
33142    g_oCTLBootstrapModals.closeModal(oNodeModal);
33143
33144    let oNodeMultiEditPost = jQuery(szFormSelector).closest(".ctl-multi-edit-post");
33145    if(oNodeMultiEditPost.length > 0){
33146        oPostStatusField.data('checked-before-btn-click', bChecked);
33147        oNodeMultiEditPost.find(".ctl-editors-action-multi-edit-posts").click();
33148    }else{
33149        jQuery(".ctl-editors-action-edit-post-data-"+idWidgetID).first().click();
33150        oPostStatusField.prop('checked', bChecked);
33151    }
33152}
33153
33154function ctlEditorFrameworkShowPostRestorePoint( oPostDifferencies ){
33155    var html = '';
33156    
33157    html += '<div class="container-fluid">';
33158
33159    html += '<div class="row">';
33160        html += '<div class="col col-6">';
33161            html += '<h4 class="text-center">' + g_oCTLEditorsFrameworkLocalizationFront["Current values"] + '</h4>';   
33162        html += '</div>';
33163        html += '<div class="col col-6">';
33164            html += '<h4 class="text-center">' + g_oCTLEditorsFrameworkLocalizationFront["Previous values"] + '</h4>'; 
33165        html += '</div>';            
33166    html += '</div>';
33167
33168    for( var key in oPostDifferencies["post"] ){
33169        html += __htmlPostDifference(oPostDifferencies["post"], key);   
33170        html += '<hr>';     
33171    }
33172    for( var key in oPostDifferencies["metas"] ){
33173        html += __htmlPostDifference(oPostDifferencies["metas"], key);
33174        html += '<hr>';
33175    }    
33176
33177    html += '</div>';
33178
33179    g_oCTLBootstrapModals.showModal({
33180        wrapper_classes : "ctl-post-restore-point",
33181        //modal_title : g_oCTLEditorsFrameworkLocalizationFront["Restore point"],
33182        modal_title : sprintf(g_oCTLEditorsFrameworkLocalizationFront["Restore point %s"], '<small>(' + oPostDifferencies["previous-date"] + ')</small>'),
33183        modal_content : html,
33184        entrance_animation : "animate__slideInUp",
33185        exit_animation : "animate__slideOutDown",                                
33186        closeable : true,
33187        width: '70',
33188        position: "centered",
33189    });
33190}
33191
33192function ctlEditorFrameworkFormatPostHistory( aHistory, oCurrentPostData ){
33193
33194    var html = "";
33195
33196
33197    if ( aHistory.length == 0 ){
33198
33199        html += '<div class="alert alert-info mb-0">';
33200            html += '<i class="ctl-wp-studio-icons-info-circled mr-2"></i>';
33201            html += g_oCTLEditorsFrameworkLocalizationFront["There are no history for this post!"];
33202        html += '</div>';
33203
33204        return html;
33205    }
33206
33207    html += '<ul class="ctl-post-history-list">';
33208
33209    for( var i = 0; i < aHistory.length; i++ ){
33210        var oData = aHistory[i];
33211
33212        var oDifferencies = __ctlEditorFrameworkMatchPostDifferences(oCurrentPostData, oData);
33213
33214        var szAuthor      = "";
33215        var htmlButAction = "";
33216
33217        if ( !oData["author"]["first_name"] && !oData["author"]["last_name"] ){
33218            szAuthor = oData["author"]["first_name"] + " " + oData["author"]["last_name"];
33219        }else{
33220            szAuthor = oData["author"]["user_email"];
33221        }
33222
33223        if ( oDifferencies.count > 0 ){
33224            htmlButAction = '<button data-differencies="'+Base64.encode(JSON.stringify(oDifferencies))+'" class="btn btn-sm btn-primary btn-action-show-post-differencies"><i class="ctl-wp-studio-icons-zoom-in"></i>('+oDifferencies.count+')</button>';
33225        }else{
33226            htmlButAction = '<button class="btn btn-sm btn-secondary disabled" disabled><i class="ctl-wp-studio-icons-zoom-in"></i>(0)</button>';            
33227        }
33228
33229        szTime        = '<span class="ctl-post-history-item-time">' + oData["post"]["post_date_gmt"] + '</span>';
33230        szAuthor      = '<span class="ctl-post-history-item-author">' + szAuthor + '</span>';
33231        htmlButAction = '<span class="ctl-post-history-item-actions">' + htmlButAction + '</span>';
33232
33233        html += '<li>' + szTime + szAuthor + htmlButAction + '</li>';
33234    }
33235    html += '</ul>';
33236
33237
33238    return html;
33239}
33240
33241function ctlEditorFrameworkShowMediaGallery( idWidget, idPost, aGallery, aCurSelection, 
33242                                             upload_max_filesize, max_file_uploads, szTypeMedia ){
33243
33244
33245    var htmlHiddenFields = "";
33246
33247    htmlHiddenFields += formFieldsBuildHiddenField({
33248        'field-name' : 'widget-id',
33249    }, idWidget);  
33250
33251    htmlHiddenFields += formFieldsBuildHiddenField({
33252        'field-name' : 'post-id',
33253    }, idPost);  
33254
33255
33256    var html = "";
33257
33258    html += '<div class="ctlgrouptabs-wrapper">';
33259    html += '<ul class="nav nav-pills nav-horizontal justify-content-start mb-3" id="nav-tab" role="tablist">';
33260        html += '<li class="nav-item">';
33261            html += '<a class="nav-link tab-link-media-gallery active" data-toggle="tab" href="#media-gallery" ';
33262            html += 'role="tab" aria-selected="true">'+
33263                        g_oCTLEditorsFrameworkLocalizationFront["Media Gallery"]+'</a>';
33264        html += '</li>';
33265
33266        html += '<li class="nav-item">';
33267            html += '<a class="nav-link tab-link-upload-media" data-toggle="tab" href="#upload-media" ';
33268            html += 'role="tab" aria-selected="false">'+
33269                        g_oCTLEditorsFrameworkLocalizationFront["Upload"]+'</a>';
33270        html += '</li>';
33271    html += '</ul>';
33272
33273    html += '<div class="tab-content mt-2">';        
33274
33275    html += '<div class="tab-pane fade show active" id="media-gallery" role="tabpanel">';
33276    html += '<form method="post">';
33277
33278    html += htmlHiddenFields;
33279
33280    html += '<ul class="ctl-media-gallery-folder">';
33281    for( var i = 0; i < aGallery.length; i++ ){
33282        var oImage = aGallery[i];
33283
33284        html += __ctlEditorFrameworkHtmlImageInMediaGallery(
33285                            oImage, 
33286                            aCurSelection.includes(String(oImage.id)),
33287                            szTypeMedia);
33288    }
33289    html += '</ul>';
33290
33291    html += '</form>';
33292    html += '</div>';
33293
33294    html += '<div class="tab-pane fade" id="upload-media" role="tabpanel">';
33295    html += '<form method="post" enctype="multipart/form-data">';
33296
33297    html += htmlHiddenFields;
33298
33299    html += formFieldsBuildUploadAreaField({
33300        "label-description" : sprintf(g_oCTLEditorsFrameworkLocalizationFront["Max upload file size %s"], upload_max_filesize) + ".<br>" + sprintf(g_oCTLEditorsFrameworkLocalizationFront["Upload limit: %s files"], max_file_uploads) + ".",
33301        "field-name"     : "upload-image",
33302        "preview-image"  : false,
33303        "browse-icon"    : "",
33304        "btn-outlined"   : true,
33305        "mandatory"      : true,
33306        "mandatory-on-label" : true,
33307        "multiple"       : true,
33308        "label-button"   : g_oCTLEditorsFrameworkLocalizationFront["Browse"],
33309        "append-buttons" : '<button type="button" class="' + 
33310                           'btn disabled btn-primary ctl-editor-framework-action-upload-gallery-'+szTypeMedia+'">'+
33311                           g_oCTLEditorsFrameworkLocalizationFront["Upload"]+'</button>'
33312    });
33313
33314    html += '</form>';
33315
33316    html += '</div>';
33317
33318    html += '</div>';
33319
33320    html += '</div>';
33321
33322    g_oCTLBootstrapModals.showModal({
33323        wrapper_classes : "ctl-media-gallery-modal",
33324        modal_title : g_oCTLEditorsFrameworkLocalizationFront["Media Gallery"],
33325        modal_content : html,
33326        closeable : true,
33327        width: '80',
33328        position: "centered",
33329        entrance_animation : "animate__slideInUp",
33330        exit_animation : "animate__slideOutDown",          
33331        footer_buttons : [
33332            '<button type="button" class="btn btn-warning ctl-editor-framework-action-clear-'+szTypeMedia+'-gallery">'+
33333            g_oCTLEditorsFrameworkLocalizationFront["Clear selection"] + '</button>',
33334
33335            '<button type="button" class="btn btn-primary ctl-editor-framework-action-update-'+szTypeMedia+'-gallery">'+
33336            g_oCTLEditorsFrameworkLocalizationFront["Update selection"] + '</button>' ]
33337    });
33338
33339    if ( aGallery.length === 0 ){
33340        jQuery(".ctl-media-gallery-modal .tab-link-upload-media").click();
33341    }
33342}
33343
33344function ctlMultilanguageApplyLanguage( szLang ){
33345    g_oCTLWPStudio.showLoading("");
33346    window.location.href = g_oCTLWPStudio.addParameterToUrl(window.location.href, "lang", szLang);
33347}
33348
33349function ctlMultilanguageListLanguagesAndShowChangeLanguageDialog( bClose ){
33350    var oFormData = {};    
33351    oFormData["action"]  = "ctl-wp-studio";
33352    oFormData["execute"] = "list-languages";      
33353
33354    var idLoading = g_oCTLWPStudio.showLoading("");    
33355    jQuery.post(
33356        ctl_wp_studio_common_localization["ajaxurl"], oFormData ).done(
33357        function(response){           
33358
33359            g_oCTLWPStudio.closeDlg(idLoading);
33360
33361            var oResult = JSON.parse(response);
33362
33363            if ( oResult.res == false ){
33364                if ( oResult.redirect ){
33365                    g_oCTLWPStudio.showLoading("");    
33366                    window.location.href = oResult.redirect;
33367                }else if(oResult.desc){
33368                    alert(oResult.desc);
33369                }
33370            }else{
33371                ctlMultilanguageShowChangeLanguageDialog(oResult.languages);
33372            }
33373
33374        }).fail( function(){
33375            g_oCTLWPStudio.closeDlg(idLoading);
33376            alert(ctl_wp_studio_common_localization["Error"]);
33377        });
33378}
33379
33380function ctlMultilanguageShowChangeLanguageDialog( aLanguages ){
33381
33382    if ( aLanguages.length == 0 ){
33383        return;
33384    }
33385
33386    var html = '';
33387    html += '<div class="w-100">';
33388        html += '<div class="row">';
33389
33390        for( var i = 0; i < aLanguages.length; i++ ){
33391            var oLanguage = aLanguages[i];
33392            html += '<div class="col col-12 col-md-6">';
33393                html += '<button data-lang="' + oLanguage.lang + '" type="button" class="w-100 mb-3 btn btn-primary ctl-multilanguage-action-apply-language">';
33394                    html += '<span class="mr-2 flag-icon flag-icon-' + oLanguage.flag + '"></span>';
33395                    html += '<span class="btn-text">';
33396                        html += oLanguage.label;
33397                    html += '</span>';
33398                html += '</button>';
33399            html += '</div>';
33400        }
33401        html += '</div>';
33402    html += '</div>';
33403
33404    var oModalData = { 
33405        modal_title        : g_oCTLEditorsFrameworkLocalizationFront["Change language"],
33406        modal_content      : html,
33407        position           : "centered",
33408        entrance_animation : "animate__slideInUp",
33409        exit_animation     : "animate__slideOutDown",
33410    };
33411
33412    g_oCTLBootstrapModals.showModal(oModalData);                    
33413}
33414
33415function ctlEditorFrameworkAjaxResetPostStatus( oNodeButton, oFormData ){
33416    var idWidget = oNodeButton.attr("data-widget-id");
33417    oFormData["action"]  = 'ctl-wp-studio';
33418    oFormData["execute"] = 'ctl-editors-framework';  
33419    oFormData["extension-action"] = 'reset-post-status';
33420    oFormData["widget-id"] = idWidget;
33421
33422    var idLoading = g_oCTLWPStudio.showLoading("");
33423    
33424    jQuery.ajax({
33425        url : g_oCTLWPStudio._oLangCommon["ajaxurl"],
33426        type: "POST",
33427        data : oFormData,
33428        cache: false,
33429        method: 'POST',
33430        success:function(response, textStatus, jqXHR){
33431            g_oCTLWPStudio.closeDlg(idLoading);
33432            var oResponse = jQuery.parseJSON(response);
33433
33434            if( oResponse.res === false ){                                          
33435                if ( oResponse.alert ){
33436                    g_oCTLBootstrapModals.alert("", oResponse.alert );
33437                }
33438            }else {
33439                if( oResponse.continue === true ){ 
33440                    var oNodeCounter = jQuery(".cnt-widget-"+idWidget);
33441                    var iCounter = Number(oNodeCounter.text());
33442                    oNodeCounter.text(iCounter-1);
33443
33444                    oNodeButton.click();
33445                }else{
33446                    window.location.reload();
33447                }
33448            }
33449        },
33450        error: function(jqXHR, textStatus, errorThrown){
33451            g_oCTLWPStudio.closeDlg(idLoading);
33452            alert(g_oCTLWPStudio._oLangCommon["Ooops! Something Went Wrong!"]);  
33453        }
33454    });
33455}
33456
33457function ctlEditorFrameworkEditPostAutoSaveData( oNodeButton ){
33458    var oNodeForm = jQuery("form[data-widget-id="+oNodeButton.attr("data-widget-id")+"]");
33459    var oFormData = oNodeForm.serializeObject();
33460
33461    oFormData['action']           = 'ctl-wp-studio';
33462    oFormData['execute']          = 'ctl-editors-framework';        
33463    oFormData['extension-action'] = 'edit-post-data';  
33464    oFormData["autosave"]         = true;
33465
33466    var oNodeExtraForm = null;
33467    if ( oFormData["extra-form-id"]){
33468        oNodeExtraForm = jQuery("form.layout-"+oFormData["extra-form-id"]);
33469        oFormData["extra-data"] = oNodeExtraForm.serializeObject();
33470    }
33471
33472    jQuery.ajax({
33473        url : g_oCTLWPStudio._oLangCommon["ajaxurl"],
33474        type: "POST",
33475        data : oFormData,
33476        cache: false,
33477        method: 'POST',
33478        success:function(response, textStatus, jqXHR){
33479            var oResponse = jQuery.parseJSON(response);
33480            if ( oResponse.desc ){
33481                switch(oResponse.desc){
33482                    case "invalid_user":{
33483                        g_oCTLWPStudio.showLoading("");
33484                        window.location.reload();
33485                    }break;
33486                }
33487            } 
33488        },
33489        error: function(jqXHR, textStatus, errorThrown){
33490            alert(g_oCTLWPStudio._oLangCommon["Ooops! Something Went Wrong!"]);  
33491        }
33492    });   
33493}
33494
33495function ctlEditorFrameworkEditPostSaveData( oNodeButton ){
33496    var oNodeForm = jQuery("form[data-widget-id="+oNodeButton.attr("data-widget-id")+"]");
33497    var oFormData = oNodeForm.serializeObject();
33498
33499    oFormData['action']           = 'ctl-wp-studio';
33500    oFormData['execute']          = 'ctl-editors-framework';        
33501    oFormData['extension-action'] = 'edit-post-data';  
33502    oFormData["click-class"]      = "ctl-editors-action-edit-post";
33503
33504    var aStatusesToIgnoreMandatoryFields = oNodeButton.attr("data-statuses-to-ignore-mandatory-fields").split(",");
33505    var bIgnoreMandatoryFields = false;
33506    for( var i = 0; i < aStatusesToIgnoreMandatoryFields.length; i++ ){
33507        if ( aStatusesToIgnoreMandatoryFields[i] === oFormData["post-status"] ){
33508            bIgnoreMandatoryFields = true;
33509            break;
33510        }
33511    }
33512	
33513    var bFormErrors = false;
33514    if( bIgnoreMandatoryFields == false && 
33515        ctlFormFieldsCheckIfFormIsFilled(oNodeForm) === false ){
33516        bFormErrors = true;
33517    }
33518
33519    var oNodeExtraForm = null;
33520    if ( oFormData["extra-form-id"]){
33521        oNodeExtraForm = jQuery("form.layout-"+oFormData["extra-form-id"]);
33522        if ( bIgnoreMandatoryFields || ctlFormFieldsCheckIfFormIsFilled(oNodeExtraForm) ){
33523            oFormData["extra-data"] = oNodeExtraForm.serializeObject();
33524        }else{
33525            bFormErrors = true;
33526        }
33527    }
33528
33529    if (bFormErrors){
33530        __ctlEditorFrameworkMapEventKeyDownSaveHandler();
33531        return;
33532    }
33533
33534    jQuery(document).trigger(oFormData["click-class"]);
33535
33536    ctlEditorFrameworkAjaxUpdateObjectData(oNodeForm, oFormData, oNodeExtraForm, function( oResponse ){
33537        if ( oNodeButton.attr("data-popup") === "true" ){
33538            g_oCTLBootstrapModals.alert(
33539                oNodeButton.attr("data-title"), 
33540                oNodeButton.attr("data-message"),
33541                function(){
33542                    if( oNodeButton.closest(".modal").length > 0 ){
33543                        iOffsetTop = jQuery('.modal-body').offset().top;
33544                        jQuery('.modal-body').animate({ scrollTop: iOffsetTop }, 'slow');    
33545                    }else{
33546                        iOffsetTop = 0;
33547                        
33548                        jQuery('html,body').animate({ scrollTop: iOffsetTop }, 'slow');    
33549                    }   
33550
33551                    if ( oNodeButton.attr("data-closing-action")){
33552                        switch(oNodeButton.attr("data-closing-action")){
33553                            case "reload-page":{
33554                                g_oCTLWPStudio.showLoading("");
33555                                window.location.reload();
33556                            }break;
33557                            case "reload-page-address-calendar-date":{
33558                                if (oFormData["calendar-dates"] && oFormData["calendar-dates"].length == 1){
33559                                    ctlEditorUpdateAddressParamsWithCalendarDate(oFormData["calendar-dates"][0]);
33560                                }
33561                                window.location.reload();
33562                            }break;                                
33563                            case "redirect":{
33564                                if ( oResponse.redirect ){
33565                                    window.location.href = oResponse.redirect;
33566                                }
33567                            }break;                                
33568                            case "close-stack-dialog":{
33569                                g_oCTLBootstrapModals.closeModalAndStack();
33570                            }break;
33571                            case "close-last-dialog":{
33572                                g_oCTLBootstrapModals.closeLastModal();
33573                            }break;                            
33574                            case "close-stack-dialog-and-refresh-calendar":{
33575                                g_oCTLBootstrapModals.closeModalAndStack();
33576                                if ( jQuery(".ctl-calendar-action-reload").length > 0 ){
33577                                    jQuery(".ctl-calendar-action-reload").click();
33578                                }else if ( jQuery(".ctl-calendar-table-controls").length > 0 ){
33579                                    jQuery(".ctl-calendar-table-controls .ctl-calendar-table-btn-submit").click();
33580                                }                              
33581                            }break;                  
33582                            case "load-modal-close-stack-dialog-and-refresh-calendar":{
33583                                var oExtraData = {};
33584                                oExtraData[oResponse["redirect-param"]] = oResponse["post-id"];
33585
33586                                g_oCTLBootstrapModals.closeModalAndStack();
33587                                g_oCTLBootstrapModals.loadModal(
33588                                oResponse["new-modal-id"], oExtraData, null, function(){
33589                                    if ( jQuery(".ctl-calendar-action-reload").length > 0 ){
33590                                        jQuery(".ctl-calendar-action-reload").click();
33591                                    }else if ( jQuery(".ctl-calendar-table-controls").length > 0 ){
33592                                        jQuery(".ctl-calendar-table-controls .ctl-calendar-table-btn-submit").click();
33593                                    }   
33594                                });
33595                            }break;              
33596                            case "load-modal-close-stack-dialog-and-refresh-table":{
33597                                var oExtraData = {};
33598                                oExtraData[oResponse["redirect-param"]] = oResponse["post-id"];
33599
33600                                g_oCTLBootstrapModals.closeModalAndStack();
33601                                g_oCTLBootstrapModals.loadModal(
33602                                oResponse["new-modal-id"], oExtraData, null, function(){
33603                                    if(oResponse["table-to-refresh"]){
33604                                        ctlThemeTableAjaxRefreshTable(
33605                                            jQuery(".ctl-theme-table-main-wrapper[data-table-id='" + 
33606                                                                oResponse["table-to-refresh"] + "']")
33607                                        );
33608                                    }
33609                                });
33610                            }break;
33611                            case "close-stack-dialog-and-refresh-table":{
33612                                g_oCTLBootstrapModals.closeModalAndStack();                             
33613                                if(oResponse["table-to-refresh"]){
33614                                    ctlThemeTableAjaxRefreshTable(
33615                                        jQuery(".ctl-theme-table-main-wrapper[data-table-id='" + 
33616                                                            oResponse["table-to-refresh"] + "']")
33617                                    );
33618                                }
33619                            }break;
33620                            case "close-last-dialog-and-refresh-table":{
33621                                g_oCTLBootstrapModals.closeLastModal();                             
33622                                if(oResponse["table-to-refresh"]){
33623                                    ctlThemeTableAjaxRefreshTable(
33624                                        jQuery(".ctl-theme-table-main-wrapper[data-table-id='" + 
33625                                                            oResponse["table-to-refresh"] + "']")
33626                                    );
33627                                }
33628                            }break;
33629                            case "previous-page":{
33630                                window.history.back();
33631                            }
33632                        }    
33633                    }
33634                }, oNodeButton.attr("data-button"),);
33635        }else{
33636            if ( oNodeButton.attr("data-closing-action")){
33637                switch(oNodeButton.attr("data-closing-action")){
33638                    case "reload-page":{
33639                        g_oCTLWPStudio.showLoading("");
33640                        window.location.reload();
33641                    }break;
33642                    case "close-stack-dialog":{
33643                        g_oCTLBootstrapModals.closeModalAndStack();
33644                    }break;
33645                    case "close-last-dialog":{
33646                        g_oCTLBootstrapModals.closeLastModal();
33647                    }break;                    
33648                    case "close-stack-dialog-and-refresh-calendar":{
33649                        g_oCTLBootstrapModals.closeModalAndStack();
33650                        if ( jQuery(".ctl-calendar-action-reload").length > 0 ){
33651                            jQuery(".ctl-calendar-action-reload").click();
33652                        }
33652else if ( jQuery(".ctl-calendar-table-controls").length > 0 ){
33653                            jQuery(".ctl-calendar-table-controls .ctl-calendar-table-btn-submit").click();
33654                        }                                     
33655                    }break;                
33656                    case "load-modal-close-stack-dialog-and-refresh-calendar":{
33657                        var oExtraData = {};
33658                        oExtraData[oResponse["redirect-param"]] = oResponse["post-id"];
33659
33660                        g_oCTLBootstrapModals.closeModalAndStack();
33661                        g_oCTLBootstrapModals.loadModal(
33662                        oResponse["new-modal-id"], oExtraData, null, function(){
33663                            if ( jQuery(".ctl-calendar-action-reload").length > 0 ){
33664                                jQuery(".ctl-calendar-action-reload").click();
33665                            }else if ( jQuery(".ctl-calendar-table-controls").length > 0 ){
33666                                jQuery(".ctl-calendar-table-controls .ctl-calendar-table-btn-submit").click();
33667                            }   
33668                        });
33669                    }break;              
33670                    case "load-modal-close-stack-dialog-and-refresh-table":{
33671                        var oExtraData = {};
33672                        oExtraData[oResponse["redirect-param"]] = oResponse["post-id"];
33673
33674                        g_oCTLBootstrapModals.closeModalAndStack();
33675                        g_oCTLBootstrapModals.loadModal(
33676                        oResponse["new-modal-id"], oExtraData, null, function(){
33677                            if(oResponse["table-to-refresh"]){
33678                                ctlThemeTableAjaxRefreshTable(
33679                                    jQuery(".ctl-theme-table-main-wrapper[data-table-id='" + 
33680                                                        oResponse["table-to-refresh"] + "']")
33681                                );
33682                            }
33683                        });
33684                    }break;
33685                    case "close-stack-dialog-and-refresh-table":{
33686                        g_oCTLBootstrapModals.closeModalAndStack();                             
33687                        if(oResponse["table-to-refresh"]){
33688                            ctlThemeTableAjaxRefreshTable(
33689                                jQuery(".ctl-theme-table-main-wrapper[data-table-id='" + 
33690                                                    oResponse["table-to-refresh"] + "']")
33691                            );
33692                        }
33693                    }break; 
33694                    case "close-last-dialog-and-refresh-table":{
33695                        g_oCTLBootstrapModals.closeLastModal();                             
33696                        if(oResponse["table-to-refresh"]){
33697                            ctlThemeTableAjaxRefreshTable(
33698                                jQuery(".ctl-theme-table-main-wrapper[data-table-id='" + 
33699                                                    oResponse["table-to-refresh"] + "']")
33700                            );
33701                        }
33702                    }break;
33703                    case "previous-page":{
33704                        window.history.back();
33705                    }                      
33706                }    
33707            }
33708        }
33709    });  
33710}
33711
33712function __ctlEditorFrameworkMultiEditPostsExecuteForm( oNodeButton ){
33713    
33714    if ( window["g_aEditPostSequence"].length === 0){
33715        var szClosingAction = oNodeButton.attr("data-closing-action");
33716
33717        switch( szClosingAction ){
33718            default:
33719            case "none":{
33720                
33721            }break;
33722            case "reload-page":{
33723                g_oCTLWPStudio.showLoading("");
33724                window.location.reload();
33725            }break;
33726            case "reload-page-address-calendar-date":{
33727                if (oFormData["calendar-dates"] && oFormData["calendar-dates"].length == 1){
33728                    ctlEditorUpdateAddressParamsWithCalendarDate(oFormData["calendar-dates"][0]);
33729                }
33730                window.location.reload();
33731            }break;
33732            case "redirect":{
33733                g_oCTLWPStudio.showLoading("");
33734                window.location.href = oNodeButton.attr("data-redirect");
33735            }break;
33736            case "close-stack-dialog":{
33737                g_oCTLBootstrapModals.closeModalAndStack();
33738            }break;
33739            case "close-last-dialog":{
33740                g_oCTLBootstrapModals.closeLastModal();
33741            }break;
33742            case "close-stack-dialog-and-refresh-calendar":{
33743                g_oCTLBootstrapModals.closeModalAndStack();
33744                if ( jQuery(".ctl-calendar-action-reload").length > 0 ){
33745                    jQuery(".ctl-calendar-action-reload").click();
33746                }
33746else if ( jQuery(".ctl-calendar-table-controls").length > 0 ){
33747                    jQuery(".ctl-calendar-table-controls .ctl-calendar-table-btn-submit").click();
33748                }  
33749            }break;
33750        } 
33751        
33752        __ctlEditorFrameworkMapEventKeyDownSaveHandler();
33753
33754        return;
33755    }
33756    
33757    var oButtonData = window["g_aEditPostSequence"].shift();
33758    ctlEditorFrameworkMultiEditPostsSaveData(oButtonData);
33759}
33760
33761function ctlEditorFrameworkMultiEditPostsSaveData( oNodeButton ){
33762    
33763    var oNodeForm = jQuery("form[data-widget-id="+oNodeButton.attr("data-widget-id")+"]");
33764    var oFormData = oNodeForm.serializeObject();
33765
33766	let oNodeMultiEditPost = oNodeButton.closest(".ctl-multi-edit-post");
33767    let idMultiEditPost = oNodeMultiEditPost.attr("data-widget-id");
33768
33769    oFormData['action']           = 'ctl-wp-studio';
33770    oFormData['execute']          = 'ctl-editors-framework';        
33771    oFormData['extension-action'] = 'edit-post-data';  
33772    oFormData["click-class"]      = "ctl-editors-action-edit-post";
33773	oFormData["multi-edit-post-id"] = idMultiEditPost;
33774
33775
33776    jQuery(document).trigger(oFormData["click-class"]);
33777
33778    let oNodeExtraForm = null;
33779    if ( oFormData["extra-form-id"]){
33780        oNodeExtraForm = jQuery("form.layout-"+oFormData["extra-form-id"]);
33781        oFormData["extra-data"] = oNodeExtraForm.serializeObject();
33782    }
33783
33784    let oPostStatusField = oNodeForm.find('input[name=post-status]:checked');
33785    if ( oPostStatusField.length > 0 ){
33786        let bChecked = oPostStatusField.data('checked-before-btn-click');
33787        if ( bChecked !== undefined ){
33788            oPostStatusField.prop('checked', bChecked);
33789            oPostStatusField.removeData('checked-before-btn-click');
33790        }
33791    }
33792
33793    ctlEditorFrameworkAjaxUpdateObjectData(oNodeForm, oFormData, oNodeExtraForm, function( oResponse ){
33794        // do something...
33795    });  
33796
33797}
33798// file: /var/www/vhosts/codethislab.com/httpdocs/wp-content/plugins/ctl-wp-studio/classes/extensions/ctl-post-filters/php/../js/front.js
33799jQuery(document).ready(function(){
33800    jQuery(document).on("submit", "form.ctl-post-filters-form, form.ctl-user-filters-form", function(){
33801		if ( ctlFormFieldsCheckIfFormIsFilled(jQuery(this)) === false){
33802        	return;
33803    	}		
33804        g_oCTLWPStudio.showLoading();
33805    });
33806
33807    wpdk_add_action("ctl-theme-bootstrap-modals-show-modal", function( oNodeModal ){        
33808        oNodeModal.find(".ctl-filter-wrapper form").each(function(){
33809            let oNodeForm = jQuery(this);
33810            if ( oNodeForm.hasClass("form-search-collapsible")  ){
33811                ctlFiltersCollapseSearchForm(oNodeForm.closest(".ctl-filter-wrapper"), oNodeForm);
33812            }
33813        }); 
33814    });  
33815
33816    jQuery(".ctl-filter-wrapper form").each(function(){
33817        let oNodeForm = jQuery(this);
33818        if ( oNodeForm.hasClass("form-search-collapsible")  ){
33819            ctlFiltersCollapseSearchForm(oNodeForm.closest(".ctl-filter-wrapper"), oNodeForm);
33820        }
33821    });
33822
33823    
33824    jQuery(document).on("click", ".btn-action-clear-form-search", function(){
33825        let oNodeWrapper = jQuery(this).closest(".ctl-filter-wrapper");
33826        oNodeWrapper.find(".btn-clear-form").click();
33827        oNodeWrapper.find(".btn-show-loading-on-submit").click();          
33828    });
33829
33830    jQuery(document).on("click", ".btn-action-hide-filters", function(){
33831        let oNodeWrapper = jQuery(this).closest(".ctl-filter-wrapper");
33832        oNodeWrapper.find(".btn-action-form-search-toggle").click();
33833
33834        ctlVulcanoResizeLayout();
33835    });
33836    
33837    jQuery(document).on("click", ".btn-action-form-search-toggle", function(){
33838        let oNodeWrapper = jQuery(this).closest(".ctl-filter-wrapper");
33839
33840        oNodeWrapper.find(".form-search-toggle-container").toggleClass("d-none");
33841        oNodeWrapper.find(".form-search-toggle-container").toggleClass("d-block");
33842
33843        ctlVulcanoResizeLayout();
33844    });
33845});
33846
33847function ctlFiltersCollapseSearchForm( oNodeWrapper, oNodeForm ){
33848
33849    var aFields = [];
33850
33851    oNodeForm.find('input[type=text]').each(function(){
33852        
33853        szName = jQuery(this).attr("name");
33854        
33855        if ( szName.indexOf("-gfx") != -1 ){
33856            aFields.push(szName.replace("-gfx", ""));
33857        }else{
33858            if (szName){
33859                aFields.push(szName);    
33860            }
33861        }
33862    });
33863    
33864    oNodeForm.find('input[type=radio]').each(function(){
33865        szName = jQuery(this).attr("name");
33866        if (szName){
33867            aFields.push(szName);    
33868        }
33869    });    
33870    
33871    oNodeForm.find('input[type=checkbox]').each(function(){
33872        szName = jQuery(this).attr("name");
33873        if (szName){
33874            aFields.push(szName);    
33875        }
33876    });    
33877    
33878    oNodeForm.find('.ctlswitchfield,.ctlswitch3sfield').each(function(){
33879        jQuery(this).find('input[type=hidden]').each(function(){
33880            szName = jQuery(this).attr("name");
33881            if (szName){
33882                aFields.push(szName);    
33883            }
33884        }); 
33885    });     
33886    
33887    
33888    oNodeForm.find('input[type=number]').each(function(){
33889        szName = jQuery(this).attr("name");
33890        if (szName){
33891            aFields.push(szName);    
33892        }
33893    });    
33894    
33895    oNodeForm.find('select').each(function(){
33896        szName = jQuery(this).attr("name");
33897        if (szName){
33898            aFields.push(szName);    
33899        }
33900    });   
33901    
33902    var iCntFoundParams = 0;
33903    for ( var i = 0; i < aFields.length; i++ ){
33904        let value = oNodeForm.find("[name='" + aFields[i] + "']").val();
33905        if (value != null && value != ""){
33906            iCntFoundParams++;
33907        }
33908    }
33909
33910
33911    let bClearForm = false;
33912    if ( oNodeForm.find(".btn-clear-form").length > 0 ){
33913        bClearForm = true;
33914    }
33915    
33916    let szFiltersMessage = '';
33917
33918    let html = '<div class="row">';
33919        html += '<div class="col">';
33920            html += '<button data-toggle="collapse" data-target="#'+oNodeForm.attr("id")+'" class="btn btn-info btn-action-form-search-toggle w-100" type="button">';
33921            
33922            szFiltersMessage += '<i class="fa-solid fa-filter mr-2"></i>';
33923            
33924            if ( iCntFoundParams > 0 ){
33925                szFiltersMessage += g_oCTLPostFiltersLocalizationFront['Active filters'] + ' (' + iCntFoundParams + ')';
33926            }else{
33927                szFiltersMessage += g_oCTLPostFiltersLocalizationFront['Apply search filters'];
33928            }
33929            html += szFiltersMessage;
33930            html += '</button>'
33931        html += '</div>';
33932
33933        if ( iCntFoundParams == 0 ){
33934            oNodeWrapper.find(".ctl-filter-active-filters-summary").html('');
33935        }else{
33936            oNodeWrapper.find(".ctl-filter-active-filters-summary").html('<span class="small p-2">' + szFiltersMessage + '</span>');
33937        }
33938
33939        if ( bClearForm ){
33940            html += '<div class="col col-auto pl-0">';
33941            html += '<button class="btn btn-xs-hide-label btn-danger btn-action-clear-form-search" type="button">';
33942            html += '<i class="fa-solid fa-xmark"></i>';
33943            html += '<span class="btn-text ml-2">'+oNodeForm.find(".btn-clear-form .btn-text").text()+'</span>';
33944            html += '</button>';
33945            html += '</div>';
33946        }
33947        
33948    html += '</div>';
33949
33950    oNodeWrapper.find(".form-search-toggle-container").append(html);
33951
33952
33953    
33954}
33955// file: /var/www/vhosts/codethislab.com/httpdocs/wp-content/plugins/ctl-wp-studio/classes/extensions/ctl-calendar/php/../js/front.js
33956jQuery(document).ready(function () {
33957
33958    window.addEventListener("orientationchange", function () {
33959        ctlCalendarsResize(true);
33960    });
33961
33962    jQuery(window).resize(function () {
33963        ctlCalendarsResize(true);
33964    });
33965
33966    wpdk_add_action("ctl-theme-bootstrap-modals-show-modal", function (oNodeModal) {
33967        oNodeModal.find(".ctl-calendar-widget").each(function () {
33968            let oMoment = ctlCalendarMoment(jQuery(this));
33969
33970            ctlCalendarUpdateBody(
33971                jQuery(this),
33972                ctlCalendarView(jQuery(this)),
33973                oMoment, oMoment);
33974        });
33975
33976        oNodeModal.find(".ctl-table-calendar-widget").each(function () {
33977            ctlTableCalendarInit(jQuery(this), jQuery(this).attr("data-period"));
33978        });
33979    });
33980
33981    wpdk_add_action("on_ctl-vulcano-theme-resize-layout", function () {
33982        ctlCalendarsResize(true);
33983    });
33984
33985    setTimeout(function () {
33986        jQuery(".ctl-calendar-widget").each(function () {
33987            let oMoment = ctlCalendarMoment(jQuery(this));
33988            ctlCalendarUpdateBody(
33989                jQuery(this),
33990                ctlCalendarView(jQuery(this)),
33991                oMoment, oMoment);
33992        });
33993
33994        jQuery(".ctl-table-calendar-widget").each(function () {
33995            ctlTableCalendarInit(jQuery(this), jQuery(this).attr("data-period"));
33996        });
33997    }, 50)
33998
33999    jQuery(document).on("click", ".ctl-calendar-toggle-filter-editors", function () {
34000        var oNodeButton = jQuery(this);
34001
34002        var bShow = oNodeButton.attr("data-state") == "false";
34003
34004        oNodeButton.attr("data-state", bShow ? "true" : "false");
34005        oNodeButton.find("i").toggleClass("fa-square-check", !bShow);
34006        oNodeButton.find("i").toggleClass("fa-square", bShow);
34007
34008        oNodeButton.find("span").text(bShow ? g_oCTLCalendarLocalizationFront["Uncheck them all"] : g_oCTLCalendarLocalizationFront["Select them all"]);
34009
34010        if (bShow) {
34011            oNodeButton.closest(".ctl-calendar-filter-users").find("input[type=checkbox]").prop("checked", true).trigger("change");
34012            oNodeButton.removeClass("btn-outline-success").addClass("btn-outline-warning");
34013        } else {
34014            oNodeButton.closest(".ctl-calendar-filter-users").find("input[type=checkbox]").prop("checked", false).trigger("change");
34015            oNodeButton.removeClass("btn-outline-warning").addClass("btn-outline-success");
34016        }
34017    });
34018
34019    jQuery(document).on("change", ".ctl-calendar-filter-users input", function () {
34020
34021        var bShow = jQuery(this).is(':checked');
34022
34023        let idMe = Number(jQuery("body").attr("data-user-id"));
34024        let oNodeFilterUsers = jQuery(this).closest(".ctl-calendar-filter-users");
34025        var idEditor = Number(jQuery(this).val());
34026        var oNodeCalendar = jQuery(this).closest(".ctl-calendar-widget");
34027        let bShowEditors = oNodeCalendar.attr("data-editor-filter-self") == "1" ? false : true;
34028
34029        if (oNodeCalendar.attr("data-state-filter-editors")) {
34030            let szStateFilterEditors = oNodeCalendar.attr("data-state-filter-editors");
34031            aStateFilterEditors = JSON.parse(szStateFilterEditors);
34032
34033            aStateFilterEditors = __ctlCalendarUpdateEditorState(oNodeCalendar, aStateFilterEditors,
34034                            idEditor, idMe, bShowEditors);
34035
34036            for (let key in aStateFilterEditors["editors"]) {
34037                if (aStateFilterEditors["editors"][key].id == idEditor) {
34038                    aStateFilterEditors["editors"][key].visibility = bShow;
34039                    break;
34040                }
34041            }
34042            oNodeCalendar.attr("data-state-filter-editors", JSON.stringify(aStateFilterEditors));
34043        }
34044
34045        if (!bShow) {
34046            let oNodeToggleEditors = oNodeCalendar.find(".ctl-calendar-toggle-filter-editors");
34047            oNodeToggleEditors.attr("data-state", "false");
34048            oNodeToggleEditors.find("i").removeClass("fa-square").addClass("fa-square-check");
34049            oNodeToggleEditors.find("span").text(g_oCTLCalendarLocalizationFront["Select them all"]);
34050            oNodeToggleEditors.removeClass("btn-outline-warning").addClass("btn-outline-success");
34051        } else {
34052
34053            let bAllChecked = true;
34054            oNodeFilterUsers.find(".custom-control-input").each(function () {
34055                if (!jQuery(this).is(':checked')) {
34056                    bAllChecked = false;
34057                }
34058            });
34059
34060            if (bAllChecked) {
34061                let oNodeToggleEditors = oNodeCalendar.find(".ctl-calendar-toggle-filter-editors");
34062                oNodeToggleEditors.attr("data-state", "true");
34063                oNodeToggleEditors.find("i").removeClass("fa-square-check").addClass("fa-square");
34064                oNodeToggleEditors.find("span").text(g_oCTLCalendarLocalizationFront["Uncheck them all"]);
34065                oNodeToggleEditors.removeClass("btn-outline-success").addClass("btn-outline-warning");
34066            }
34067        }
34068
34069        __ctlCalendarRefreshEditorsVisibility(oNodeCalendar);
34070    });
34071
34072    jQuery(document).on("click", ".ctl-calendar-day-item-compacted", function (e) {
34073        e.preventDefault();
34074        e.stopPropagation();
34075
34076        var oNodeCalendarDay    = jQuery(this).closest(".ctl-calendar-day");
34077        var oNodeCalendarWidget = jQuery(this).closest(".ctl-calendar-widget");
34078        var idCreateModal       = oNodeCalendarWidget.attr("data-create-modal-id");
34079        var idEditModal         = oNodeCalendarWidget.attr("data-edit-modal-id");
34080        var szDate              = oNodeCalendarDay.attr("data-date");
34081
34082        var szTitle = "";
34083        szTitle += oNodeCalendarDay.find("h4").text();
34084        szTitle += " " + oNodeCalendarWidget.find(".ctl-calendar-action-month option:selected").text();
34085        szTitle += " " + oNodeCalendarWidget.find(".ctl-calendar-action-year option:selected").text();
34086
34087        ctlCalendarEditDay(oNodeCalendarDay, szTitle, szDate, idCreateModal, idEditModal, null, true);
34088    });
34089
34090    jQuery(document).on("click", ".ctl-calendar-single-selection-mode .ctl-calendar-day", function (e) {
34091
34092        var oNodeCalendarDay    = jQuery(this);
34093        var oNodeCalendarWidget = jQuery(this).closest(".ctl-calendar-widget");
34094        var idCreateModal       = oNodeCalendarWidget.attr("data-create-modal-id");
34095        var idEditModal         = oNodeCalendarWidget.attr("data-edit-modal-id");
34096        var szDate              = oNodeCalendarDay.attr("data-date");
34097
34098        var szTitle = "";
34099        szTitle += oNodeCalendarDay.find("h4").text();
34100        szTitle += " " + oNodeCalendarWidget.find(".ctl-calendar-action-month option:selected").text();
34101        szTitle += " " + oNodeCalendarWidget.find(".ctl-calendar-action-year option:selected").text();
34102
34103        ctlCalendarEditDay(jQuery(this), szTitle, szDate, idCreateModal, idEditModal);
34104    });
34105
34106
34107    jQuery(document).on("click", ".ctl-calendar-month-body .ctl-calendar-day h4 span", function (e) {
34108        e.stopPropagation();
34109        var oNodeDay = jQuery(this).closest(".ctl-calendar-day");
34110        var oNodeWidget = jQuery(this).closest(".ctl-calendar-widget");
34111
34112        var bOptionFound = false;
34113        jQuery(".ctl-calendar-action-view-mode option").each(function () {
34114            if (jQuery(this).val() == "day") {
34115                bOptionFound = true;
34116            }
34117        });
34118
34119        if (bOptionFound) {
34120
34121            let oOffsetDate = moment(oNodeDay.attr("data-date"), "YYYY-MM-DD");
34122            let oNodeDatePicker = oNodeWidget.find("input[name=ctl-calendar-date-gfx]");
34123
34124            if (oNodeDatePicker.length > 0) {
34125                oNodeDatePicker.val(
34126                    oOffsetDate.format(oNodeDatePicker.attr("data-format")));
34127            }
34128
34129            jQuery(".ctl-calendar-action-year").val(oNodeDay.attr("data-year"));
34130            jQuery(".ctl-calendar-action-month").val(oNodeDay.attr("data-month"));
34131            jQuery(".ctl-calendar-action-day").val(oNodeDay.attr("data-day"));
34132            jQuery(".ctl-calendar-action-view-mode").val("day").trigger("change");
34133        }
34134    });
34135
34136    jQuery(document).on("click", ".ctl-calendar-week-header h3", function () {
34137        var szDate = jQuery(this).attr("data-day");
34138        var oMoment = moment(szDate, "YYYY-MM-DD");
34139
34140        var bOptionFound = false;
34141        jQuery(".ctl-calendar-action-view-mode option").each(function () {
34142            if (jQuery(this).val() == "day") {
34143                bOptionFound = true;
34144            }
34145        });
34146
34147        if (bOptionFound) {
34148            jQuery(".ctl-calendar-action-year").val(oMoment.format("YYYY"));
34149            jQuery(".ctl-calendar-action-month").val(oMoment.format("MM"));
34150            jQuery(".ctl-calendar-action-day").val(oMoment.format("DD")).trigger("change", [true]);
34151            jQuery(".ctl-calendar-action-view-mode").val("day").trigger("change");
34152        }
34153    });
34154
34155    jQuery(document).on("click", ".ctl-calendar-show-create-modal", function () {
34156
34157        var oNodeButton = jQuery(this);
34158
34159        var szDateStart = oNodeButton.attr("data-calendar-date-start");
34160        var szDateEnd   = oNodeButton.attr("data-calendar-date-end");
34161        var idModal  = oNodeButton.attr("data-general-create-modal-id");
34162
34163        ctlCalendarWriteItem(idModal, {
34164            "calendar-date-start": szDateStart,
34165            "calendar-date-end": szDateEnd,
34166        });
34167    });
34168
34169    jQuery(document).on("click", ".ctl-calendar-action-select-all", function () {
34170        var oNodeCalendarWidget = jQuery(this).closest(".ctl-calendar-widget");
34171        var oNodeMonth = oNodeCalendarWidget.find(".ctl-calendar-action-month");
34172
34173        oNodeCalendarWidget.find(".ctl-calendar-day").each(function () {
34174            var currentMonth = jQuery(this).attr("data-month");
34175
34176            if (oNodeMonth.val() == currentMonth) {
34177                jQuery(this).addClass("ctl-calendar-day-selected");
34178            } else {
34179                jQuery(this).removeClass("ctl-calendar-day-selected");
34180            }
34181        });
34182    });
34183
34184    jQuery(document).on("click", ".ctl-calendar-action-multiple-new", function () {
34185        let oNodeCalendarWidget = jQuery(this).closest(".ctl-calendar-widget");
34186        let oNodeSelectedDays = oNodeCalendarWidget.find(".ctl-calendar-day-selected");
34187
34188        if (oNodeSelectedDays.length == 0) {
34189            g_oCTLBootstrapModals.alert("", g_oCTLCalendarLocalizationFront["You must select at least one day!"]);
34190            return;
34191        }
34192
34193        var idModal = oNodeCalendarWidget.attr("data-create-modal-id");
34194
34195        if (!idModal) {
34196            return;
34197        }
34198
34199        var aDates = [];
34200        oNodeSelectedDays.each(function () {
34201            aDates.push(jQuery(this).attr("data-date"));
34202        });
34203
34204        ctlCalendarWriteItem(idModal, {
34205            "calendar-dates": aDates
34206        });
34207    });
34208
34209    jQuery(document).on("click", ".ctl-calendar-action-multiple-edit", function () {
34210        var oNodeCalendarWidget = jQuery(this).closest(".ctl-calendar-widget");
34211
34212        oNodeSelectedDays = oNodeCalendarWidget.find(".ctl-calendar-day-selected");
34213
34214        if (oNodeSelectedDays.length == 0) {
34215            g_oCTLBootstrapModals.alert("", g_oCTLCalendarLocalizationFront["You must select at least one day!"]);
34216            return;
34217        }
34218
34219        var idModal = oNodeCalendarWidget.attr("data-edit-modal-id");
34220        var aIds = {};
34221
34222        oNodeSelectedDays.each(function () {
34223            var oNodeDay = jQuery(this);
34224            oNodeDay.find(".ctl-calendar-day-item").each(function () {
34225                var oNodeDayItem = jQuery(this);
34226                var cpt = oNodeDayItem.attr("data-cpt");
34227                if (!aIds[cpt]) {
34228                    aIds[cpt] = [];
34229                }
34230                aIds[cpt].push(Number(oNodeDayItem.attr("data-id")));
34231            });
34232        });
34233
34234        if (idModal) {
34235            var iCntCPT = 0;
34236            var szLastCPT = "";
34237            for (var cpt in aIds) {
34238                iCntCPT++;
34239                szLastCPT = cpt;
34240            }
34241
34242            if (iCntCPT == 1) {
34243                g_oCTLBootstrapModals.loadModal(idModal, { "post-id": aIds[szLastCPT] });
34244            } else if (iCntCPT > 1) {
34245                alert("disambigua cpt");
34246            }
34247        }
34248    });
34249
34250    jQuery(document).on("click", ".ctl-calendar-action-close-multiple-selection", function () {
34251        var oNodeCloseMultipleSelection = jQuery(this);
34252        var oNodeCalendarWidget = jQuery(this).closest(".ctl-calendar-widget");
34253        var oNodeControlsContainer = oNodeCloseMultipleSelection.closest(".ctl-calendar-control
34253s-container");
34254        var oNodeOpenMultipleSelection = oNodeControlsContainer.find(
34255            ".ctl-calendar-action-open-multiple-selection");
34256        var oNodeControls = oNodeControlsContainer.find(".ctl-calendar-controls");
34257        var oNodeMultipleSelectionButtons = oNodeControlsContainer.find(".ctl-calendar-multiple-selection-btn");
34258
34259        oNodeCalendarWidget.find(".ctl-calendar-day").removeClass("ctl-calendar-day-selected");
34260
34261        oNodeOpenMultipleSelection.removeClass("d-none");
34262        oNodeControls.removeClass("d-none");
34263        oNodeMultipleSelectionButtons.addClass("d-none");
34264
34265        oNodeCalendarWidget.removeClass("ctl-calendar-multiple-selection-mode");
34266        oNodeCalendarWidget.addClass("ctl-calendar-single-selection-mode");
34267
34268        ctlVulcanoResizeLayout();
34269    });
34270
34271    jQuery(document).on("click", ".ctl-calendar-action-open-multiple-selection", function () {
34272
34273        var oNodeOpenMultipleSelection = jQuery(this);
34274        var oNodeCalendarWidget = jQuery(this).closest(".ctl-calendar-widget");
34275        var oNodeControlsContainer = oNodeOpenMultipleSelection.closest(".ctl-calendar-controls-container");
34276        var oNodeControls = oNodeControlsContainer.find(".ctl-calendar-controls");
34277        var oNodeMultipleSelectionButtons = oNodeControlsContainer.find(".ctl-calendar-multiple-selection-btn");
34278
34279        oNodeOpenMultipleSelection.addClass("d-none");
34280        oNodeControls.addClass("d-none");
34281        oNodeMultipleSelectionButtons.removeClass("d-none");
34282
34283        oNodeCalendarWidget.addClass("ctl-calendar-multiple-selection-mode");
34284        oNodeCalendarWidget.removeClass("ctl-calendar-single-selection-mode");
34285
34286        ctlVulcanoResizeLayout();
34287    });
34288
34289    jQuery(document).on("click",
34290        ".ctl-calendar-single-selection-mode .ctl-calendar-hourly-activity .ctl-calendar-item-parent", function (e) {
34291
34292            e.stopPropagation();
34293            e.preventDefault();
34294
34295            var oNodeHourlyActivity = jQuery(this).closest(".ctl-calendar-hourly-activity");
34296            var szHour = oNodeHourlyActivity.attr("data-hour");
34297            var szDateStart = oNodeHourlyActivity.attr("data-mysql-date");
34298            var oNodeCalendarWidget = jQuery(this).closest(".ctl-calendar-widget");
34299            var idModal = oNodeCalendarWidget.attr("data-create-modal-id");
34300
34301            if (!idModal) {
34302                return;
34303            }
34304
34305            if (szHour == "xx" || !szHour) {
34306                szHour = "00";
34307
34308                var idCreateModal = oNodeCalendarWidget.attr("data-create-modal-id");
34309                var idEditModal = oNodeCalendarWidget.attr("data-edit-modal-id");
34310                var szTitle = "";
34311
34312                szTitle += oNodeCalendarWidget.find(".ctl-calendar-action-day option:selected").text();
34313                szTitle += " " + oNodeCalendarWidget.find(".ctl-calendar-action-month option:selected").text();
34314                szTitle += " " + oNodeCalendarWidget.find(".ctl-calendar-action-year option:selected").text();
34315
34316                ctlCalendarEditDay(jQuery(this), szTitle, szDate, idCreateModal, idEditModal);
34317            } else {
34318                var iNumNextHour = parseInt(szHour, 10);
34319                iNumNextHour = iNumNextHour + 1;
34320                if (iNumNextHour >= 24) {
34321                    iNumNextHour = 0;
34322                }
34323
34324                var szNextHour = iNumNextHour.toString().padStart(2, '0');
34325
34326                var oConfig = {
34327                    "calendar-date-start": szDateStart,
34328                    "calendar-date-end": szDateStart,
34329                    "calendar-date-start-local": szDateStart + " " + szHour + ":00:00",
34330                    "calendar-date-end-local": szDateStart + " " + szNextHour + ":00:00",
34331                    "parent-id": jQuery(this).attr("data-parent-id"),
34332                };
34333
34334                ctlCalendarWriteItem(idModal, oConfig);
34335            }
34336        });
34337
34338    jQuery(document).on("click", ".ctl-calendar-single-selection-mode .ctl-calendar-hourly-activity", function (e) {
34339        var szHour = jQuery(this).attr("data-hour");
34340        var oNodeCalendarWidget = jQuery(this).closest(".ctl-calendar-widget");
34341        var szDate = jQuery(this).attr("data-mysql-date");
34342
34343        if (szHour == "xx" || !szHour) {
34344            szHour = "00";
34345
34346            var idCreateModal = oNodeCalendarWidget.attr("data-create-modal-id");
34347            var idEditModal = oNodeCalendarWidget.attr("data-edit-modal-id");
34348            var szTitle = "";
34349
34350            szTitle += oNodeCalendarWidget.find(".ctl-calendar-action-day option:selected").text();
34351            szTitle += " " + oNodeCalendarWidget.find(".ctl-calendar-action-month option:selected").text();
34352            szTitle += " " + oNodeCalendarWidget.find(".ctl-calendar-action-year option:selected").text();
34353
34354            ctlCalendarEditDay(jQuery(this), szTitle, szDate, idCreateModal, idEditModal);
34355        } else {
34356            var idModal = oNodeCalendarWidget.attr("data-create-modal-id");
34357            if (!idModal) {
34358                return;
34359            }
34360
34361            var iNumNextHour = parseInt(szHour, 10);
34362            iNumNextHour = iNumNextHour + 1;
34363
34364            if (iNumNextHour >= 24) {
34365                iNumNextHour = 0;
34366            }
34367
34368            var szNextHour = iNumNextHour.toString().padStart(2, '0');
34369
34370            var oConfig = {
34371                "calendar-date-start": szDate,
34372                "calendar-date-end": szDate,
34373                "calendar-date-start-local": szDate + " " + szHour + ":00:00",
34374                "calendar-date-end-local": szDate + " " + szNextHour + ":00:00",
34375            };
34376
34377            ctlCalendarWriteItem(idModal, oConfig);
34378        }
34379    });
34380
34381    jQuery(document).on("click", ".ctl-calendar-day-action-close", function () {
34382        var oNodeDayContainer = jQuery(this).closest(".ctl-calendar-day-container");
34383
34384        oNodeDayContainer.fadeOut(400, function () {
34385            oNodeDayContainer.addClass("d-none");
34386            oNodeDayContainer.attr("style", "");
34387        });
34388
34389        var iOffset = 30;
34390        if (jQuery("header").css("position") == "fixed") {
34391            iOffset += jQuery("header").height();
34392        }
34393        g_oCTLWPStudio.scrollToSelector(".ctl-calen dar-widget", - iOffset);
34394    });
34395
34396    jQuery(document).on("click", ".ctl-calendar-single-selection-mode .ctl-calendar-day-item a", function (e) {
34397        e.stopPropagation();
34398        window.location = jQuery(this).attr("href");
34399    });
34400
34401    jQuery(document).on("click", ".modal .ctl-calendar-day-item", function (e) {
34402
34403        if (jQuery(this).find("a").length > 0) {
34404            return;
34405        }
34406
34407        e.preventDefault();
34408        e.stopPropagation();
34409
34410        var idPost = jQuery(this).attr("data-id");
34411        var oNodeModal = jQuery(this).closest(".modal");
34412        var idModal = oNodeModal.attr("data-general-edit-modal-id");
34413
34414        if (idModal) {
34415            let szReferral = jQuery(this).attr("data-edit-modal-referral");
34416            if (!szReferral) {
34417                szReferral = "post-id";
34418            }
34419
34420            url = g_oCTLWPStudio.addParameterToUrl(window.location.href, szReferral, idPost);
34421            if (history.pushState) {
34422                history.pushState(null, null, url);
34423            }
34424
34425            g_oCTLBootstrapModals.loadModal(idModal, { [szReferral]: idPost });
34426        }
34427    });
34428
34429    jQuery(document).on("click", ".ctl-table-calendar-single-selection-mode .ctl-calendar-day-item, .ctl-calendar-single-selection-mode .ctl-calendar-day-item", function (e) {
34430
34431        if (jQuery(this).find("a").length > 0) {
34432            return;
34433        }
34434
34435        if (jQuery(this).hasClass("ctl-calendar-day-item-compacted")) {
34436            return;
34437        }
34438
34439        e.preventDefault();
34440        e.stopPropagation();
34441
34442        var idPost = jQuery(this).attr("data-id");
34443
34444
34445        var oNodeCalendarWidget = jQuery(this).closest(".ctl-calendar-widget");
34446        var idModal = jQuery(this).attr("data-edit-modal-id");
34447
34448        if (!idModal) {
34449            idModal = oNodeCalendarWidget.attr("data-edit-modal-id");
34450        }
34451
34452        if (idModal) {
34453            let szReferral = jQuery(this).attr("data-edit-modal-referral");
34454            if (!szReferral) {
34455                szReferral = "post-id";
34456            }
34457
34458            url = g_oCTLWPStudio.addParameterToUrl(window.location.href, szReferral, idPost);
34459            if (history.pushState) {
34460                history.pushState(null, null, url);
34461            }
34462
34463            g_oCTLBootstrapModals.loadModal(idModal, { [szReferral]: idPost });
34464        }
34465
34466    });
34467
34468    jQuery(document).on("click", ".ctl-calendar-multiple-selection-mode .ctl-calendar-day", function () {
34469        jQuery(this).toggleClass("ctl-calendar-day-selected");
34470    });
34471
34472    jQuery(document).on("click", ".ctl-table-calendar-single-selection-mode .ctl-table-calendar-day", function (e) {
34473
34474        if (jQuery(this).find("a").length > 0) {
34475            return;
34476        }
34477
34478        e.preventDefault();
34479        e.stopPropagation();
34480
34481        var oNodeCalendarDay = jQuery(this);
34482        var oNodeTR = oNodeCalendarDay.closest("tr");
34483        var oNodeTableCalendarWidget = jQuery(this).closest(".ctl-theme-table-main-wrapper");
34484
34485        var idCreateModal = oNodeTableCalendarWidget.attr("data-period-create-modal-id");
34486        var idEditModal = oNodeTableCalendarWidget.attr("data-period-edit-modal-id");
34487        var szDate = oNodeCalendarDay.attr("data-date");
34488
34489        var idResource = oNodeTR.attr("data-resource-id");
34490
34491        var oExtraData = {
34492            'resource-id': idResource
34493        }
34494
34495        ctlCalendarEditDay(jQuery(this), szTitle, szDate, idCreateModal, idEditModal, oExtraData);
34496    });
34497
34498    jQuery(document).on("click", ".ctl-calendar-action-reload", function () {
34499        ctlCalendarRefreshData(jQuery(this).closest(".ctl-calendar-widget"));
34500    });
34501
34502    jQuery(document).on("change", ".ctl-calendar-action-view-mode", function () {
34503        var oNodeWidget = jQuery(this).closest(".ctl-calendar-widget");
34504        oNodeWidget.find('input[name=cview]').val(jQuery(this).val());
34505        ctlCalendarChangeViewMode(jQuery(this).closest(".ctl-calendar-widget"));
34506    });
34507
34508    jQuery(document).on("change", ".ctl-calendar-controls-container input[name=ctl-calendar-date]", function () {
34509        if (jQuery(this).attr("data-prev-date") == jQuery(this).val()) {
34510            return;
34511        }
34512
34513        // update the prev date for the next comparison
34514        jQuery(this).attr("data-prev-date", jQuery(this).val());
34515        var oNodeInput = jQuery(this);
34516        var szDate = oNodeInput.val();
34517        var aParts = szDate.split("-");
34518
34519        var oNodeWidget = oNodeInput.closest(".ctl-calendar-widget");
34520
34521        jQuery(".ctl-calendar-widget-form-date").find('input[name=cday]').val(aParts[2]);
34522        jQuery(".ctl-calendar-widget-form-date").find('input[name=cmonth]').val(aParts[1]);
34523        jQuery(".ctl-calendar-widget-form-date").find('input[name=cyear]').val(aParts[0]);
34524
34525        oNodeWidget.find('.ctl-calendar-action-year').val(aParts[0]).trigger('change', [true]);
34526        oNodeWidget.find('.ctl-calendar-action-month').val(aParts[1]).trigger('change', [true]);
34527        oNodeWidget.find('.ctl-calendar-action-day').val(aParts[2]).trigger('change', [false]);
34528    });
34529
34530    jQuery(document).on("change", ".ctl-calendar-action-month", function (e, bAvoidRefresh) {
34531        var oNodeWidget = jQuery(this).closest(".ctl-calendar-widget");
34532        oNodeWidget.find('input[name=cmonth]').val(jQuery(this).val());
34533        if (bAvoidRefresh) {
34534            return;
34535        }
34536        ctlCalendarRefreshData(oNodeWidget);
34537    });
34538
34539    jQuery(document).on("change", ".ctl-calendar-action-year", function (e, bAvoidRefresh) {
34540        var oNodeWidget = jQuery(this).closest(".ctl-calendar-widget");
34541        oNodeWidget.find('input[name=cyear]').val(jQuery(this).val());
34542        if (bAvoidRefresh) {
34543            return;
34544        }
34545        ctlCalendarRefreshData(oNodeWidget);
34546    });
34547
34548    jQuery(document).on("change", ".ctl-calendar-action-day", function (e, bAvoidRefresh) {
34549        var oNodeWidget = jQuery(this).closest(".ctl-calendar-widget");
34550        oNodeWidget.find('input[name=cday]').val(jQuery(this).val());
34551        if (bAvoidRefresh) {
34552            return;
34553        }
34554        ctlCalendarRefreshData(oNodeWidget);
34555    });
34556
34557    jQuery(document).on("click", ".ctl-calendar-action-today", function () {
34558        let oNodeWidget = jQuery(this).closest(".ctl-calendar-widget");
34559        let oOffsetDate = moment();
34560        let oNodeDatePicker = oNodeWidget.find("input[name=ctl-calendar-date-gfx]");
34561
34562        if (oNodeDatePicker.length > 0) {
34563            oNodeDatePicker.val(
34564                oOffsetDate.format(oNodeDatePicker.attr("data-format"))).trigger('change');
34565        } else {
34566            oNodeWidget.find(".ctl-calendar-widget-form-date").find('input[name=cday]').val(oOffsetDate.format("DD"));
34567            oNodeWidget.find(".ctl-calendar-widget-form-date").find('input[name=cmonth]').val(oOffsetDate.format("MM"));
34568            oNodeWidget.find(".ctl-calendar-widget-form-date").find('input[name=cyear]').val(oOffsetDate.format("YYYY"));
34569
34570            oNodeWidget.find('.ctl-calendar-action-year').val(oOffsetDate.format("YYYY")).trigger('change', [true]);
34571            oNodeWidget.find('.ctl-calendar-action-month').val(oOffsetDate.format("MM")).trigger('change', [true]);
34572            oNodeWidget.find('.ctl-calendar-action-day').val(oOffsetDate.format("DD")).trigger('change', [false]);
34573        }
34574    });
34575
34576    jQuery(document).on("click", ".ctl-calendar-action-prev", function () {
34577        let oNodeWidget = jQuery(this).closest(".ctl-calendar-widget");
34578        let szViewMode = oNodeWidget.find(".ctl-calendar-action-view-mode").val();
34579        let oOffsetDate = oNodeWidget[0]["offset-date"];
34580
34581        switch (szViewMode) {
34582            case "month": {
34583                oOffsetDate.subtract(1, "months");
34584            } break;
34585            case "week": {
34586                oOffsetDate.subtract(1, "weeks");
34587            } break;
34588            case "day": {
34589                oOffsetDate.subtract(1, "days");
34590            } break;
34591        }
34592
34593        let oNodeDatePicker = oNodeWidget.find("input[name=ctl-calendar-date-gfx]");
34594        if (oNodeDatePicker.length > 0) {
34595            oNodeDatePicker.val(
34596                oOffsetDate.format(oNodeDatePicker.attr("data-format"))).trigger('change');
34597        } else {
34598            oNodeWidget.find(".ctl-calendar-widget-form-date").find('input[name=cday]').val(oOffsetDate.format("DD"));
34599            oNodeWidget.find(".ctl-calendar-widget-form-date").find('input[name=cmonth]').val(oOffsetDate.format("MM"));
34600            oNodeWidget.find(".ctl-calendar-widget-form-date").find('input[name=cyear]').val(oOffsetDate.format("YYYY"));
34601
34602            oNodeWidget.find('.ctl-calendar-action-year').val(oOffsetDate.format("YYYY")).trigger('change', [true]);
34603            oNodeWidget.find('.ctl-calendar-action-month').val(oOffsetDate.format("MM")).trigger('change', [true]);
34604            oNodeWidget.find('.ctl-calendar-action-day').val(oOffsetDate.format("DD")).trigger('change', [false]);
34605        }
34606    });
34607
34608    jQuery(document).on("click", ".ctl-calendar-action-next", function () {
34609        let oNodeWidget = jQuery(this).closest(".ctl-calendar-widget");
34610        let szViewMode = oNodeWidget.find(".ctl-calendar-action-view-mode").val();
34611        let oOffsetDate = oNodeWidget[0]["offset-date"];
34612
34613        switch (szViewMode) {
34614            case "month": {
34615                oOffsetDate.add(1, "months");
34616            } break;
34617            case "week": {
34618                oOffsetDate.add(1, "weeks");
34619            } break;
34620            case "day": {
34621                oOffsetDate.add(1, "days");
34622            } break;
34623        }
34624
34625        let oNodeDatePicker = oNodeWidget.find("input[name=ctl-calendar-date-gfx]");
34626        if (oNodeDatePicker.length > 0) {
34627            oNodeDatePicker.val(
34628                oOffsetDate.format(oNodeDatePicker.attr("data-format"))).trigger('change');
34629        } else {
34630            oNodeWidget.find(".ctl-calendar-widget-form-date").find('input[name=cday]').val(oOffsetDate.format("DD"));
34631            oNodeWidget.find(".ctl-calendar-widget-form-date").find('input[name=cmonth]').val(oOffsetDate.format("MM"));
34632            oNodeWidget.find(".ctl-calendar-widget-form-date").find('input[name=cyear]').val(oOffsetDate.format("YYYY"));
34633
34634            oNodeWidget.find('.ctl-calendar-action-year').val(oOffsetDate.format("YYYY")).trigger('change', [true]);
34635            oNodeWidget.find('.ctl-calendar-action-month').val(oOffsetDate.format("MM")).trigger('change', [true]);
34636            oNodeWidget.find('.ctl-calendar-action-day').val(oOffsetDate.format("DD")).trigger('change', [false]);
34637        }
34638
34639    });
34640});
34641
34642function ctlCalendarView(oNodeCalendarWidget) {
34643    let oNodeFormDate = oNodeCalendarWidget.find(".ctl-calendar-widget-form-date");
34644    let oFormDateValues = oNodeFormDate.serializeObject();
34645
34646    return oFormDateValues["cview"];
34647}
34648
34649function ctlCalendarMoment(oNodeCalendarWidget) {
34650    let oNodeFormDate = oNodeCalendarWidget.find(".ctl-calendar-widget-form-date");
34651    let oFormDateValues = oNodeFormDate.serializeObject();
34652
34653    let oMoment = moment(
34654        oFormDateValues.cyear + "-" +
34655        oFormDateValues.cmonth + "-" +
34656        oFormDateValues.cday).locale(g_oCTLCalendarLocalizationFront["user_locale"]);
34657
34658    return oMoment;
34659}
34660
34661function ctlCalendarWriteItem(idModal, oExtraData = null) {
34662    g_oCTLBootstrapModals.loadModal(idModal, oExtraData);
34663}
34664
34665function ctlCalendarGetFestivityDays(oNodeCalendar) {
34666    let aFestivityDays = [];
34667    switch (g_oCTLCalendarLocalizationFront["user_locale"]) {
34668        case "it_IT": {
34669            aFestivityDays = ["01-01", "01-06", "04-25", "05-01", "06-02", "08-15", "11-01", "12-08", "12-25", "12-26"];
34670
34671            let oNodeFormDate = oNodeCalendar.find(".ctl-calendar-widget-form-date");
34672            let oFormDateValues = oNodeFormDate.serializeObject();
34673            let aEaster = getEaster(oFormDateValues.cyear);
34674            let iEasterMonth = aEaster[0];
34675            let iEasterDay = aEaster[1];
34676
34677            //Pasqua
34678            aFestivityDays.push(
34679                String(iEasterMonth).padStart(2, '0') + "-" + String(iEasterDay).padStart(2, '0')
34680            );
34681
34682            let oEasterDate = new Date(oFormDateValues.cyear, iEasterMonth - 1, iEasterDay);
34683            oEasterDate.setDate(oEasterDate.getDate() + 1);
34684
34685            //Pasquetta
34686            aFestivityDays.push(
34687                String(oEasterDate.getMonth() + 1).padStart(2, '0') + "-" + String(oEasterDate.getDate()).padStart(2, '0')
34688            );
34689        } break;
34690        default: {
34691
34692        } break;
34693    }
34694
34695    let szPatronalFeastDay = oNodeCalendar.data("patronal-feast-day");
34696    if (szPatronalFeastDay) {
34697        aFestivityDays.push(szPatronalFeastDay);
34698    }
34699
34700    return aFestivityDays;
34701}
34702
34703/**
34704* Calculates Easter in the Gregorian/Western (Catholic and Protestant) calendar 
34705* based on the algorithm by Oudin (1940) from http://www.tondering.dk/claus/cal/easter.php
34706* @returns {array} [int month, int day]
34707*/
34708function getEaster(year) {
34709    year = parseInt(year);
34710    var f = Math.floor,
34711        // Golden Number - 1
34712        G = year % 19,
34713        C = f(year / 100),
34714        // related to Epact
34715        H = (C - f(C / 4) - f((8 * C + 13) / 25) + 19 * G + 15) % 30,
34716        // number of days from 21 March to the Paschal full moon
34717        I = H - f(H / 28) * (1 - f(29 / (H + 1)) * f((21 - G) / 11)),
34718        // weekday for the Paschal full moon
34719        J = (year + f(year / 4) + I + 2 - C + f(C / 4)) % 7,
34720        // number of days from 21 March to the Sunday on or before the Paschal full moon
34721        L = I - J,
34722        month = 3 + f((L + 40) / 44),
34723        day = L + 28 - 31 * f(month / 4);
34724
34725    return [month, day];
34726}
34727
34728function ctlCalendarEditDay(oNodeCalendarDay, szTitle, szDate, idCreateModal, idEditModal, oExtraData = null, bCompacted = false) {
34729
34730    if (bCompacted && oNodeCalendarDay.find(".ctl-calendar-day-item").length > 0) {
34731
34732        if (oNodeCalendarDay.closest(".modal").length == 0) {
34733
34734            var oConfigModal = {
34735                modal_content: oNodeCalendarDay.html(),
34736                modal_title: szTitle,
34737                position: "centered",
34738                wrapper_classes: "ctl-calendar-single-selection-mode",
34739                entrance_animation: "animate__slideInUp",
34740                exit_animation: "animate__slideOutDown"
34741            };
34742
34743            var szAttributes = "";
34744            if (idCreateModal) {
34745                szAttributes += 'data-general-create-modal-id="' + idCreateModal + '" ';
34746                oConfigModal["footer_buttons"] = [
34747                    '<button class="btn btn-primary ctl-calendar-show-create-modal" data-calendar-date-start="' + szDate + '" data-calendar-date-end="' + szDate + '" data-general-create-modal-id="' + idCreateModal + '"><i class="ctl-wp-studio-icons-plus"></i><span class="btn-text ml-2">' +
34748                    g_oCTLCalendarLocalizationFront["Add"] + '</span></button>'
34749                ]
34750            }
34751
34752            if (idEditModal) {
34753                szAttributes += 'data-general-edit-modal-id="' + idEditModal + '" ';
34754            }
34755
34756            if (szAttributes.length > 0) {
34757                oConfigModal["attributes"] = szAttributes;
34758            }
34759
34760            g_oCTLBootstrapModals.showModal(oConfigModal);
34761            return;
34762        }
34763    }
34764
34765    var oData = {
34766        "calendar-date-start": szDate,
34767        "calendar-date-end": szDate,
34768    };
34769
34770    if (oExtraData) {
34771        oData = jQuery.extend(oData, oExtraData);
34772    }
34773
34774    if (idCreateModal) {
34775        ctlCalendarWriteItem(idCreateModal, oData);
34776    }
34777}
34778
34779function ctlCalendarShowWeekDetail(oNodeCalendarWidget, oMoment, iDays, oDayItems) {
34780
34781    var aHideWeekDays = JSON.parse(Base64.decode(oNodeCalendarWidget.attr("data-hide-week-days")));
34782
34783    var oNodeCalendarContent = oNodeCalendarWidget.find(".ctl-calendar-content");
34784
34785    oNodeCalendarWidget[0]["offset-date"] = oMoment;
34786
34787    // crea elenco parent ids se necessario
34788    var aTestIds = [];
34789    var aParentIds = [];
34790    for (var szDay in oDayItems) {
34791        for (var i = 0; i < oDayItems[szDay].length; i++) {
34792            var oDayItem = oDayItems[szDay][i];
34793            if (oDayItem["parent-id"] && aTestIds.includes(oDayItem["parent-id"]) == false) {
34794                aTestIds.push(oDayItem["parent-id"]);
34795                aParentIds.push({ id: oDayItem["parent-id"], label: oDayItem["parent-label"] });
34796            }
34797        }
34798    }
34799    g_oCTLWPStudio.arraySortBy(aParentIds, "label");
34800
34801    if (aParentIds.length > 0 && oNodeCalendarWidget.attr("data-group-data-by-parent") == "1") {
34802        oNodeCalendarWidget.addClass("ctl-calendar-group-by-parent");
34803    }
34804
34805    var iHours = 24;
34806    var szExtraClasses = "";
34807
34808    if (oNodeCalendarWidget.attr("data-disable-hour-interval") == "1") {
34809        iHours = 0;
34810    }
34811
34812    var html = "";
34813    html += '<div class="ctl-calendar-week-header' + szExtraClasses + '">';
34814    html += '<div class="row">';
34815
34816    html += '<div class="col">';
34817    html += '</div>';
34818
34819    if (iDays == 1 && oNodeCalendarWidget.attr("data-group-data-by-parent") == "1" &&
34820        aParentIds.length > 0 && jQuery("body").hasClass("bp-up-to-sm") == false) {
34821
34822        html += '<div class="col">';
34823
34824        html += '<div class="container-fluid px-0">';
34825        html += '<div class="row">';
34826
34827        html += '<div class="col col-12">';
34828        html += '<div class="ctl-calendar-cell">';
34829        html += '<h3>...</h3>';
34830        html += '</div>';
34831
34832        html += '<div class="d-flex ctl-calendar-item-parent-labels-container">';
34833        for (var j = 0; j < aParentIds.length; j++) {
34834            var oParent = aParentIds[j];
34835            html += '<div class="ctl-calendar-item-parent-label" data-parent-id="' + oParent.id + '">';
34836            html += '<div class="p-1 text-center">' + oParent.label + '</div>';
34837            html += '</div>';
34838        }
34839        html += '</div>';
34840        html += '</div>';
34841        html += '</div>';
34842        html += '</div>';
34843
34844    } else {
34845
34846        var oTmpMoment = oMoment.clone();
34847
34848        for (var i = 0; i < iDays; i++) {
34849
34850            if (iDays > 1 && aHideWeekDays.includes(oTmpMoment.day())) {
34851                oTmpMoment.add(1, "days");
34852                continue;
34853            }
34854
34855            html += '<div class="col ctl-calendar-date-header">';
34856            html += '<div class="ctl-calendar-cell">';
34857            html += '<h3>...</h3>';
34858            html += '</div>';
34859            html += '</div>';
34860
34861            oTmpMoment.add(1, "days");
34862        }
34863    }
34864
34865    html += '</div>';
34866    html += '</div>';
34867
34868    if (iDays == 1) {
34869        html += '<div class="ctl-calendar-week-body ctl-calendar-week-body-single-day' + szExtraClasses + '">';
34870    } else {
34871        html += '<div class="ctl-calendar-week-body' + szExtraClasses + '">';
34872    }
34873
34874    for (var i = -1; i < iHours; i++) {
34875        var szHour = i == -1 ? 'xx' : ctlCalendarPaddy(i, 2);
34876
34877        if (i == -1) {
34878            html += '<div class="row ctl-calendar-row ctl-calendar-row-full-day">';
34879            html += '<div class="col ctl-calendar-hour">';
34880            html += '<span>' + g_oCTLCalendarLocalizationFront["full day"] + '</span>';
34881            html += '</div>';
34882        } else {
34883            if (i == 0) {
34884                html += '<div class="ctl-calendar-hours-container">';
34885            }
34886            html += '<div class="row ctl-calendar-row">';
34887            html += '<div class="col ctl-calendar-hour">';
34888            html += '<span>' + ctlCalendarPaddy(i, 2) + ":00" + '</span>';
34889            html += '</div>';
34890        }
34891
34892        var oTmpMoment = oMoment.clone();
34893
34894        if (iDays == 1 && oNodeCalendarWidget.attr("data-group-data-by-parent") == "1" &&
34895            aParentIds.length > 0 && jQuery("body").hasClass("bp-up-to-sm") == false) {
34896
34897            for (var j = 0; j < aParentIds.length; j++) {
34898                var oParent = aParentIds[j];
34899                html += '<div data-mysql-date="' + oMoment.format("YYYY-MM-DD") + '" data-hour="' + szHour + '" class="col ctl-calendar-hourly-activity ctl-calendar-item-parent ctl-calendar-item-parent-id-' + oParent.id + ' ctl-calendar-hour-' + szHour + '" data-parent-id="' + oParent.id + '">';
34900                html += '</div>';
34901            }
34902        } else {
34903            for (var k = 0; k < iDays; k++) {
34904
34905                if (iDays > 1 && aHideWeekDays.includes(oTmpMoment.day())) {
34906                    oTmpMoment.add(1, "days");
34907                    continue;
34908                }
34909
34910                html += '<div data-mysql-date="' + oMoment.format("YYYY-MM-DD") + '" data-hour="' + szHour + '" class="col ctl-calendar-hourly-activity ctl-calendar-hour-' + szHour + '">';
34911                html += '</div>';
34912
34913                oTmpMoment.add(1, "days");
34914            }
34915        }
34916
34917        html += '</div>';
34918
34919    }
34920
34921    html += '</div>'; // close ctl-calendar-hours-container
34922    html += '</div>';
34923
34924    html += '</div>';
34925
34926    oNodeCalendarContent.html(html);
34927}
34928
34929function ctlCalendarPaddy(num, padlen, padchar) {
34930    var pad_char = typeof padchar !== 'undefined' ? padchar : '0';
34931    var pad = new Array(1 + padlen).join(pad_char);
34932    return (pad + num).slice(-pad.length);
34933}
34934
34935function ctlCalendarChangeViewMode(oNodeWidget) {
34936    var oNodeViewMode = oNodeWidget.find(".ctl-calendar-action-view-mode");
34937    var oMoment = ctlCalendarMoment(oNodeWidget);
34938
34939    if (!oMoment.isValid()) {
34940        return;
34941    }
34942
34943    if (jQuery("body").hasClass("bp-up-to-sm") && oNodeViewMode.val() == "week") {
34944        oNodeViewMode.val("day").trigger("change");
34945        return;
34946    }
34947
34948    switch (oNodeViewMode.val()) {
34949        case "month": {
34950            ctlCalendarShowMonthDetail(oNodeWidget, oMoment);
34951        } break;
34952        case "week": {
34953            ctlCalendarShowWeekDetail(oNodeWidget, oMoment, 7);
34954        } break;
34955        case "day": {
34956            ctlCalendarShowWeekDetail(oNodeWidget, oMoment, 1);
34957        } break;
34958    }
34959
34960    wpdk_do_action("ctl-vulcano-theme-resize-layout");
34961    ctlCalendarRefreshData(oNodeWidget);
34962}
34963
34964function ctlCalendarRefreshData(oNodeWidget) {
34965
34966    var oNodeViewMode = oNodeWidget.find(".ctl-calendar-action-view-mode");
34967    var oNodeYear = oNodeWidget.find(".ctl-calendar-action-year");
34968    var oNodeMonth = oNodeWidget.find(".ctl-calendar-action-month");
34969    var oNodeDay = oNodeWidget.find(".ctl-calendar-action-day");
34970
34971    var oOffsetDate = null;
34972    var oSelectedDate = moment(oNodeYear.val() + "-" + oNodeMonth.val() + "-" + oNodeDay.val(), "YYYY-MM-DD");
34973
34974    oSelectedDate.locale(g_oCTLCalendarLocalizationFront["user_locale"]);
34975
34976    oOffsetDate = oSelectedDate;
34977
34978    oNodeWidget[0]["offset-date"] = oOffsetDate;
34979
34980    ctlCalendarUpdateBody(oNodeWidget, oNodeViewMode.val(), oOffsetDate, oSelectedDate);
34981}
34982
34983function ctlCalendarUpdateBody(oNodeCalendar, szViewMode, oMomentOffsetDate, oMomentSelectedDate) {
34984
34985    var aHideWeekDays = JSON.parse(Base64.decode(oNodeCalendar.attr("data-hide-week-days")));
34986
34987    var oNodeForm = oNodeCalendar.find(".ctl-calendar-widget-form-date");
34988    var oFormData = oNodeForm.serializeObject();
34989
34990    var iCurrentDay = oMomentOffsetDate.format("D");
34991    var iCurrentMonth = oMomentOffsetDate.format("M");
34992    var iCurrentYear = oMomentOffsetDate.format("YYYY");
34993
34994    oFormData['action']  = 'ctl-wp-studio';
34995    oFormData['execute'] = 'ctl-calendar';
34996    oFormData['extension-action'] = 'get-' + szViewMode;
34997    oFormData['cmonth'] = iCurrentMonth;
34998    oFormData['cday']   = iCurrentDay;
34999    oFormData['cyear']  = iCurrentYear;
35000    oFormData['get-params'] = g_oCTLWPStudio.getUrlParams();
35001
35002    var idLoading = g_oCTLWPStudio.showLoading("");
35003
35004    jQuery.ajax({
35005        url: g_oCTLWPStudio._oLangCommon["ajaxurl"],
35006        type: "POST",
35007        data: oFormData,
35008        cache: false,
35009        method: 'POST',
35010        success: function (response, textStatus, jqXHR) {
35011            var oResponse = jQuery.parseJSON(response);
35012
35013            if (oResponse.res === false) {
35014                g_oCTLWPStudio.closeDlg(idLoading);
35015                if (oResponse.alert) {
35016                    g_oCTLBootstrapModals.alert("", oResponse.alert);
35017                }
35018            } else {
35019                g_oCTLWPStudio.closeDlg(idLoading);
35020
35021                if (oResponse.items) {
35022                    var oDayItems = {};
35023                    var aListItems = oResponse.items;
35024                    for (var i = 0; i < aListItems.length; i++) {
35025
35026                        // discard items for hidden days
35027                        if ((szViewMode == "week" || szViewMode == "month") &&
35028                            aHideWeekDays.includes(moment(aListItems[i]["start"], "YYYY-MM-DD").day())) {
35029                            continue;
35030                        }
35031
35032                        if (!oDayItems[aListItems[i]["start"]]) {
35033                            oDayItems[aListItems[i]["start"]] = [];
35034                        }
35035                        oDayItems[aListItems[i]["start"]].push(aListItems[i]);
35036                    }
35037
35038                    ctlCalendarInit(oNodeCalendar, oMomentOffsetDate, szViewMode, oDayItems);
35039
35040                    switch (szViewMode) {
35041                        case "month": {
35042                            __ctlCalendarUpdateBodyMonth(oNodeCalendar,
35043                                oMomentOffsetDate, oDayItems,
35044                                oResponse["compact-calendar-items"],
35045                                oResponse["calendar-items-post-types"]);
35046                        } break;
35047                        case "week": {
35048                            __ctlCalendarUpdateBodyWeek(oNodeCalendar,
35049                                oResponse, oDayItems, 7);
35050                        } break;
35051                        case "day": {
35052                            __ctlCalendarUpdateBodyWeek(oNodeCalendar,
35053                                oResponse, oDayItems, 1);
35054                        } break;
35055                    }
35056                }
35057
35058                var url = window.location.href;
35059
35060                url = g_oCTLWPStudio.removeParameterFromUrl(url, "cday");
35061                url = g_oCTLWPStudio.removeParameterFromUrl(url, "cmonth");
35062                url = g_oCTLWPStudio.removeParameterFromUrl(url, "cyear");
35063                url = g_oCTLWPStudio.removeParameterFromUrl(url, "cview");
35064
35065                var oReturnedStartMomentDate = null;
35066                var oReturnedEndMomentDate = null;
35067
35068                if (szViewMode == "month") {
35069                    oReturnedStartMomentDate = moment(oMomentOffsetDate.format("YYYY") + "-" + oMomentOffsetDate.format("MM") + "-01", 'YYYY-MM-DD');
35070                    oReturnedEndMomentDate = moment(oResponse.end, 'YYYY-MM-DD');
35071                } else {
35072                    oReturnedStartMomentDate = moment(oResponse.start, 'YYYY-MM-DD');
35073                    oReturnedEndMomentDate = moment(oResponse.end, 'YYYY-MM-DD');
35074                }
35075
35076                var szCurrentDay = oReturnedStartMomentDate.format("DD");
35077                var szCurrentMonth = oReturnedStartMomentDate.format("MM");
35078                var szCurrentYear = oReturnedStartMomentDate.format("YYYY");
35079
35080                var oNodeActionMonth = oNodeCalendar.find(".ctl-calendar-action-month");
35081                var oNodeActionYear = oNodeCalendar.find(".ctl-calendar-action-year");
35082                var oNodeActionDay = oNodeCalendar.find(".ctl-calendar-action-day");
35083                var oNodeViewMode = oNodeCalendar.find(".ctl-calendar-action-view-mode");
35084
35085
35086                url = g_oCTLWPStudio.addParameterToUrl(url, "cmonth", oMomentSelectedDate.format("MM"));
35087                url = g_oCTLWPStudio.addParameterToUrl(url, "cyear", oMomentSelectedDate.format("YYYY"));
35088                url = g_oCTLWPStudio.addParameterToUrl(url, "cday", oMomentSelectedDate.format("DD"));
35089
35090                url = g_oCTLWPStudio.addParameterToUrl(url, "cview", oNodeViewMode.val());
35091
35092                window.history.pushState(document.title, "", url);
35093
35094                var monthDate = moment(szCurrentYear + '-' + szCurrentMonth, 'YYYY-MM');
35095                var daysInMonth = monthDate.daysInMonth();
35096                var arrDays = [];
35097                while (daysInMonth) {
35098                    var current = moment().date(daysInMonth);
35099                    arrDays.push(current.format('YYYY-MM-DD'));
35100                    daysInMonth--;
35101                }
35102                arrDays = arrDays.reverse();
35103
35104
35105                oNodeActionMonth.removeClass("d-none");
35106                oNodeActionYear.removeClass("d-none");
35107
35108                wpdk_do_action("ctl-vulcano-theme-resize-layout");
35109            }
35110
35111            g_oCTLWPStudio.applyChromaCorrection();
35112
35113            jQuery(".chroma-apply-correction").each(function () {
35114                var szBGColor = jQuery(this).css("background-color");
35115
35116                if (!szBGColor || szBGColor == "rgba(0, 0, 0, 0)" || szBGColor == "transparent") {
35117                    return;
35118                }
35119                jQuery(this).css("color", (chroma(szBGColor).luminance() < 0.5 ? "color : #fff;" : ""));
35120            });
35121        },
35122        error: function (jqXHR, textStatus, errorThrown) {
35123            g_oCTLWPStudio.closeDlg(idLoading);
35124            alert(g_oCTLWPStudio._oLangCommon["Ooops! Something Went Wrong!"]);
35125        }
35126    });
35127}
35128
35129function __ctlCalendarRefreshEditorFilters(oNodeCalendar, aFoundEditors) {
35130
35131    if (oNodeCalendar.attr("data-editor-filter") === "0") {
35132        return;
35133    }
35134
35135    let aFilterEditors = {};
35136    let szStateFilterEditors = oNodeCalendar.attr("data-state-filter-editors");
35137
35138    if (szStateFilterEditors !== undefined && szStateFilterEditors !== "") {
35139        aStateFilterEditors = JSON.parse(szStateFilterEditors);
35140        aFilterEditors = aStateFilterEditors["editors"];
35141    }
35142
35143    let idMe = jQuery("body").attr("data-user-id");
35144
35145    let aSortedEditors = [];
35146
35147    let aFullEditorList = oNodeCalendar.attr("data-editors-list");
35148    if (aFullEditorList) {
35149        aSortedEditors = JSON.parse(Base64.decode(aFullEditorList));
35150    }else{
35151        if (idMe && aFoundEditors["user-" + idMe]) {
35152            aSortedEditors.push(aFoundEditors["user-" + idMe]);
35153        }
35154        for (var key in aFoundEditors) {
35155            if (idMe && key == "user-" + idMe) {
35156                continue;
35157            }
35158            aSortedEditors.push(aFoundEditors[key]);
35159        }
35160
35161        // sort array by label
35162        aSortedEditors.sort(function (a, b) {
35163            if (a.label < b.label) {
35164                return -1;
35165            }
35166            if (a.label > b.label) {
35167                return 1;
35168            }
35169            return 0;
35170        });
35171    }
35172
35173    var html = "";
35174    let iCountSelectedEditors = 0;
35175
35176    for (let i = 0; i < aSortedEditors.length; i++) {
35177
35178        var oFoundEditor = aSortedEditors[i];
35179        let bChecked = false;
35180
35181        for (let key in aFilterEditors) {
35182            if (aFilterEditors[key].id === oFoundEditor.id) {
35183                bChecked = aFilterEditors[key].visibility;
35184                break;
35185            }
35186        }
35187
35188        if (bChecked) {
35189            iCountSelectedEditors++;
35190        }
35191
35192        // count elements
35193        let iCountEditorElements = oNodeCalendar.find(".ctl-calendar-day-item-editor-stripe-" + oFoundEditor.id).length;
35194
35195        var szLabel = '<div class="badge d-flex justify-content-between align-items-center mt-1" style="' +
35196            (chroma(oFoundEditor.color).luminance() < 0.5 ? "color : #fff;" : "") +
35197            ';background-color:' + oFoundEditor.color + ';"><span class="ctl-calendar-editor-label text-left text-break text-wrap">' +
35198            String(oFoundEditor["label"]).trim() + '</span>' + ( iCountEditorElements > 0 ? '<span class="text-right ctl-calendar-editor-items-count">(' + iCountEditorElements + ')</span>' : "") + 
35199            '</span></div>';
35200
35201        let guid = g_oCTLWPStudio.makeCode(4);
35202
35203        html += '<div class="col-6 col-sm-4 col-md-12 custom-control custom-checkbox mb-0">';
35204        html += '<div class="container-fluid">';
35205        html += '<div class="row">';
35206        html += '<input class="custom-control-input col-auto" type="checkbox" id="' + guid + '" value="' + oFoundEditor.id
35207            + '" name="' + "editor-" + oFoundEditor.id + '" ' + (bChecked ? 'checked' : '') + '/>';
35208
35209        html += '<label class="custom-control-label col ml-3" role="button" for="' + guid +
35210            '">' + szLabel + '</label>';
35211        html += '</div>';
35212        html += '</div>';
35213        html += '</div>';
35214    }
35215
35216    if (aSortedEditors.length > 0) {
35217        html += '<div class="col-12">';
35218        if (iCountSelectedEditors == aSortedEditors.length) {
35219            html += '<button data-state="true" class="btn btn-xs btn-outline-warning w-100 mt-2 ctl-calendar-toggle-filter-editors"><i class="fa-solid fa-square"></i><span class="ml-1">' + g_oCTLCalendarLocalizationFront["Uncheck them all"]  + '</span></button>';            
35220        } else {
35221            html += '<button data-state="false" class="btn btn-xs btn-outline-success w-100 mt-2 ctl-calendar-toggle-filter-editors"><i class="fa-solid fa-square-check"></i><span class="ml-1">' + g_oCTLCalendarLocalizationFront["Select them all"] + '</span></button>';
35222        }
35223        html += '</div>';
35224    }
35225
35226    oNodeCalendar.find(".ctl-calendar-filter-users > .row").html(html);
35227}
35228
35229function __ctlCalendarparseTime(str) {
35230    const [hours, minutes] = str.split(":").map(Number);
35231    const date = new Date();
35232    date.setHours(hours, minutes, 0, 0);
35233    return date;
35234}
35235
35236function __ctlCalendarhasOverlap(startA, endA, startB, endB) {
35237    const start1 = __ctlCalendarparseTime(startA);
35238    const end1 = __ctlCalendarparseTime(endA);
35239    const start2 = __ctlCalendarparseTime(startB);
35240    const end2 = __ctlCalendarparseTime(endB);
35241
35242    return start1 < end2 && start2 < end1;
35243}
35244
35245function __ctlCalendarcheckIslandOfOverlappedItems(oNodeCalendar, aDayElements) {
35246
35247    let bGroupDayItemsByParent = false;
35248    let szViewMode = oNodeCalendar.find(".ctl-calendar-action-view-mode").val();
35249
35250    if (szViewMode == "day" && oNodeCalendar.attr("data-group-data-by-parent") == "1" &&
35251        jQuery("body").hasClass("bp-up-to-sm") == false) {
35252        bGroupDayItemsByParent = true;
35253    }
35254
35255    let aIslands = [];
35256    let oOverlappedOffsets = {};
35257
35258    for (let i = 0; i < aDayElements.length; i++) {
35259        var oNodeDayItem = aDayElements[i];
35260
35261        var iStartHour = Number(oNodeDayItem.attr("data-start-hour"));
35262        var iEndHour = Number(oNodeDayItem.attr("data-end-hour"));
35263        var iStartMinutes = Number(oNodeDayItem.attr("data-start-minutes"));
35264        var iEndMinutes = Number(oNodeDayItem.attr("data-end-minutes"));
35265
35266        if (iStartHour === 0 && iStartMinutes === 0 &&
35267            iEndHour === 0 && iEndMinutes === 0) {
35268            continue;
35269        }
35270
35271        var szStartTime = sprintf("%02d:%02d", iStartHour, iStartMinutes);
35272        var szEndTime = sprintf("%02d:%02d", iEndHour, iEndMinutes);
35273
35274        // check if the day item is already inserted in an island
35275        let bInsertedInIsland = false;
35276        for (let k = 0; k < aIslands.length; k++) {
35277            let aCurrentIsland = aIslands[k];
35278
35279            for (let m = 0; m < aCurrentIsland.length; m++) {
35280                let oIslandItem = aCurrentIsland[m];
35281
35282                if (oIslandItem.attr("data-id") == oNodeDayItem.attr("data-id")) {
35283                    bInsertedInIsland = true;
35284                    break;
35285                }
35286            }
35287
35288            if (bInsertedInIsland) {
35289                break;
35290            }
35291        }
35292
35293        // not inserted in island, check overlaps with the next items
35294        if (!bInsertedInIsland) {
35295            for (let k = 0; k < aIslands.length; k++) {
35296                let aCurrentIsland = aIslands[k];
35297                let j=0;
35298                for (let m = 0; m < aCurrentIsland.length; m++) {
35299                    let oIslandItem = aCurrentIsland[m];
35300
35301                    var iOtherStartHour    = Number(oIslandItem.attr("data-start-hour"));
35302                    var iOtherEndHour      = Number(oIslandItem.attr("data-end-hour"));
35303                    var iOtherStartMinutes = Number(oIslandItem.attr("data-start-minutes"));
35304                    var iOtherEndMinutes   = Number(oIslandItem.attr("data-end-minutes"));
35305
35306                    if (__ctlCalendarhasOverlap(
35307                        szStartTime,
35308                        szEndTime,
35309                        sprintf("%02d:%02d", iOtherStartHour, iOtherStartMinutes),
35310                        sprintf("%02d:%02d", iOtherEndHour, iOtherEndMinutes)
35311                    )) {
35312
35313                        if (bGroupDayItemsByParent &&
35314                            oNodeDayItem.attr("data-parent-id") != oIslandItem.attr("data-parent-id")) {
35315                            continue;
35316                        }
35317
35318                        bInsertedInIsland = true;
35319
35320                        oOverlappedOffsets["id-" + oNodeDayItem.attr("data-id")] = j + 1;
35321                        j++;
35322                        aCurrentIsland.push(oNodeDayItem);
35323                        break;
35324                    }
35325                }
35326
35327                if (bInsertedInIsland) {
35328                    break;
35329                }
35330            }
35331        }
35332
35333        if (!bInsertedInIsland) {
35334            oOverlappedOffsets["id-" + oNodeDayItem.attr("data-id")] = 0;
35335            aIslands.push([oNodeDayItem]);
35336        }
35337    }
35338
35339    return {
35340        'islands': aIslands,
35341        'offsets': oOverlappedOffsets
35342    };
35343}
35344
35345function __ctlCalendarAdaptDayItems(oNodeCalendar) {
35346
35347    var k = -1;
35348
35349    if (jQuery("body").hasClass("bp-up-to-sm")) {
35350        if (oNodeCalendar.find(".ctl-calendar-action-view-mode").val() == "week") {
35351            oNodeCalendar.find(".ctl-calendar-action-view-mode").val("day").trigger("change");
35352            return;
35353        } else if (oNodeCalendar.find(".ctl-calendar-action-view-mode").val() == "day" &&
35354            oNodeCalendar.find(".ctl-calendar-item-parent-labels-container").length > 0) {
35355            oNodeCalendar.find(".ctl-calendar-action-view-mode").val("day").trigger("change");
35356            return;
35357        }
35358    } else {
35359        if (oNodeCalendar.find(".ctl-calendar-action-view-mode").val() == "day" &&
35360            oNodeCalendar.attr("data-group-data-by-parent") == "1" &&
35361            oNodeCalendar.hasClass("ctl-calendar-group-by-parent") &&
35362            oNodeCalendar.find(".ctl-calendar-item-parent-labels-container").length == 0) {
35363            oNodeCalendar.removeClass("ctl-calendar-group-by-parent")
35364            oNodeCalendar.find(".ctl-calendar-action-view-mode").val("day").trigger("change");
35365            return;
35366        }
35367    }
35368
35369    // check if manage overlapped items is enabled    
35370    if (oNodeCalendar.attr("data-manage-overlapped-items-in-week-day-view") === "1") {
35371        //CODICE OVERLAP
35372
35373        var aColumns = {};
35374        oNodeCalendar.find(".ctl-calendar-week-body .ctl-calendar-hourly-activity").each(function () {
35375
35376            var szDate = jQuery(this).attr("data-mysql-date");
35377            jQuery(this).find(".ctl-calendar-day-item").each(function () {
35378
35379                if (jQuery(this).closest(".ctl-calendar-dolly-items").length > 0) {
35380                    return;
35381                }
35382
35383                if (!aColumns[szDate]) {
35384                    aColumns[szDate] = [];
35385                }
35386                aColumns[szDate].push(jQuery(this));
35387            });
35388
35389
35390            if (jQuery(this).find(".ctl-calendar-dolly-items").length == 0) {
35391                jQuery(this).append('<div class="ctl-calendar-dolly-items"></div>');
35392
35393                jQuery(this).find(".ctl-calendar-day-item").each(function () {
35394
35395                    var oNodeDayItem = jQuery(this);
35396                    var iStartHour = Number(oNodeDayItem.attr("data-start-hour"));
35397                    var iEndHour = Number(oNodeDayItem.attr("data-end-hour"));
35398                    var iStartMinutes = Number(oNodeDayItem.attr("data-start-minutes"));
35399                    var iEndMinutes = Number(oNodeDayItem.attr("data-end-minutes"));
35400
35401                    if (iStartHour === 0 && iStartMinutes === 0 &&
35402                        iEndHour === 0 && iEndMinutes === 0) {
35403                        return;
35404                    }
35405
35406                    jQuery(this).clone().appendTo(jQuery(this).closest(".ctl-calendar-hourly-activity").find(".ctl-calendar-dolly-items"));
35407                    jQuery(this).css("visibility", "hidden");
35408                });
35409            }
35410        });
35411    }
35412
35413
35414    for (var szDate in aColumns) {
35415        let iOffsetX = 0;
35416
35417        let oResult = __ctlCalendarcheckIslandOfOverlappedItems(oNodeCalendar, aColumns[szDate]);
35418        let aIslands = oResult["islands"];
35419        let oOffsets = oResult["offsets"];
35420
35421        // iteriamo i calendar item di una giornata singola
35422        for (let i = 0; i < aColumns[szDate].length; i++) {
35423
35424            // calendar item del giorno szDate
35425            var oNodeDayItem = aColumns[szDate][i];
35426
35427            var iStartHour    = Number(oNodeDayItem.attr("data-start-hour"));
35428            var iEndHour      = Number(oNodeDayItem.attr("data-end-hour"));
35429            var iStartMinutes = Number(oNodeDayItem.attr("data-start-minutes"));
35430            var iEndMinutes   = Number(oNodeDayItem.attr("data-end-minutes"));
35431
35432            // escludiamo i fullday
35433            if (iStartHour === 0 && iStartMinutes === 0 &&
35434                iEndHour === 0 && iEndMinutes === 0) {
35435                continue;
35436            }
35437
35438            var iNumHours = (iEndHour - iStartHour);
35439            var oNodeStartingHour = oNodeCalendar.find(":not(.ctl-calendar-dolly-items) .ctl-calendar-hour-" + sprintf("%02d", iStartHour));
35440            var oNodeEndingHour   = oNodeCalendar.find(":not(.ctl-calendar-dolly-items) .ctl-calendar-hour-" + sprintf("%02d", iEndHour));
35441
35442            var oNodeDollyItem = oNodeDayItem.closest(".ctl-calendar-hourly-activity").find(".ctl-calendar-dolly-items .ctl-calendar-day-item").eq(oNodeDayItem.index());
35443            var iStartingHeight = oNodeDayItem.outerHeight();
35444
35445            iOffsetX = oOffsets["id-" + oNodeDayItem.attr("data-id")];
35446
35447            let fFinalOffset = iOffsetX * 30 + 5;
35448            oNodeDollyItem.css("left", fFinalOffset + "px");
35449            oNodeDollyItem.css("right", "5px");
35450            oNodeDollyItem.css("width", "calc( 100% - " + fFinalOffset + "px) !important");
35451
35452            // how minutes correspond to iStartHour : iStartMinutes and iEndHour : iEndMinutes
35453            var iMinutesInTotal = (iNumHours * 60) + (iEndMinutes - iStartMinutes);
35454            var iMinuteHeight   = iStartingHeight / iMinutesInTotal;
35455            var iTotalHeight    = 0;
35456
35457            for (var k = 0; k < iNumHours + 1; k++) {
35458                var oNodeHour = oNodeCalendar.find(".ctl-calendar-hour-" + sprintf("%02d", (iStartHour + k)));
35459                let iMinutesHeightToTest = 60;
35460
35461                if (k == 0) {
35462                    iMinutesHeightToTest = 60 - iStartMinutes;
35463                } else if (k == iNumHours) {
35464                    iMinutesHeightToTest = iEndMinutes;
35465                }
35466
35467                let iFoundHourHeight = 40;
35468                oNodeHour.find(".ctl-calendar-day-item").each(function () {
35469                    if ( iFoundHourHeight < jQuery(this).height() ) {
35470                        iFoundHourHeight = jQuery(this).height();
35471                    }
35472                });
35473
35474                let fPartialHeight = (oNodeHour.outerHeight() / 60) * iMinutesHeightToTest;
35475
35476                if (k == iNumHours && (iTotalHeight + fPartialHeight) < iStartingHeight ) {
35477                    
35478                    let fCurrentMinuteHeight = (iStartingHeight - iTotalHeight) / iMinutesHeightToTest;
35479
35480                    // fixfix 
35481                    //oNodeHour.css("height", (fCurrentMinuteHeight * 60) + "px");
35482                    
35483                    fPartialHeight = ((fCurrentMinuteHeight * 60) / 60) * iMinutesHeightToTest;
35484                }
35485
35486                iTotalHeight += fPartialHeight;
35487            }
35488
35489            var iOffsetTop = (oNodeStartingHour.outerHeight() / 60) * iStartMinutes;
35490
35491            oNodeDollyItem.find(".ctl-calendar-day-item-bg").css("height", iTotalHeight + "px");
35492            oNodeDollyItem.css("height", iTotalHeight + "px");
35493
35494            oNodeDollyItem.css("top", iOffsetTop + "px");
35495
35496            iOffsetX++;
35497        }
35498    }
35499
35500    let szViewMode = oNodeCalendar.find(".ctl-calendar-action-view-mode").val();
35501
35502    if (szViewMode != "day") {
35503        for (var n = 0; n < oNodeCalendar.find(".ctl-calendar-row").length; n++) {
35504            let oNodeRow = oNodeCalendar.find(".ctl-calendar-row").eq(n);
35505            if (szViewMode !== "month" && !oNodeRow.hasClass("ctl-calendar-row-full-day")) {
35506                continue;
35507            }
35508            __ctlCalendarItemOptimizeHeightForMonth(oNodeRow);
35509        }
35510    }
35511}
35512
35513function __ctlCalendarUpdateEditorState(oNodeCalendar, aStateFilterEditors, idEditor, idMe, bShowEditors) {
35514
35515    if (!aStateFilterEditors["editors"]["editor-" + idEditor]) {
35516
35517        aStateFilterEditors["editors"]["editor-" + idEditor] = {
35518            id: idEditor
35519        };
35520
35521        if (aStateFilterEditors.loaded == true) {
35522            if (idMe == idEditor) {
35523                aStateFilterEditors["editors"]["editor-" + idEditor]["visibility"] = true;
35524            } else {
35525                aStateFilterEditors["editors"]["editor-" + idEditor]["visibility"] = bShowEditors;
35526            }
35527        } else {
35528            if (!bShowEditors) {
35529                if (idMe == idEditor) {
35530                    aStateFilterEditors["editors"]["editor-" + idEditor]["visibility"] = true;
35531                } else {
35532                    aStateFilterEditors["editors"]["editor-" + idEditor]["visibility"] = false;
35533                }
35534            } else {
35535                aStateFilterEditors["editors"]["editor-" + idEditor]["visibility"] = true;
35536            }
35537        }
35538    }
35539
35540    return aStateFilterEditors;
35541}
35542
35543function __ctlCalendarUpdateBodyWeek(oNodeCalendar, oData, oDayItems, iDays) {
35544
35545    var aFestivityDays = [];
35546    if (oNodeCalendar.attr("data-festivity") === "1") {
35547        aFestivityDays = ctlCalendarGetFestivityDays(oNodeCalendar);
35548    }
35549
35550    var aFestivityWeekDays = JSON.parse(Base64.decode(oNodeCalendar.attr("data-festivity-week-days")));
35551    var szToday = moment().format("YYYY-MM-DD");
35552
35553    oReturnedMomentDate = moment(oData.start, 'YYYY-MM-DD').locale(g_oCTLCalendarLocalizationFront["user_locale"]);
35554    var oNodeWeekDays = oNodeCalendar.find(".ctl-calendar-week-header h3");
35555
35556    oNodeCalendar.find(".ctl-calendar-hourly-activity").each(function () {
35557        var aClasses = jQuery(this).attr("class").split(" ");
35558        for (var i = 0; i < aClasses.length; i++) {
35559            if (aClasses[i].indexOf("ctl-calendar-date-") == 0) {
35560                aClasses.splice(i, 1);
35561                break;
35562            }
35563        }
35564        var szClasses = "";
35565        for (var i = 0; i < aClasses.length; i++) {
35566            szClasses += aClasses[i] + " ";
35567        }
35568
35569        jQuery(this).attr("class", szClasses);
35570        jQuery(this).html('');
35571    });
35572
35573    let iStartColIndex = 1;
35574
35575    for (var i = 0; i < 24; i++) {
35576        var oNodeRow = oNodeCalendar.find(".ctl-calendar-week-body > .row, .ctl-calendar-hours-container > .row").eq(i);
35577        var oDateCloned = oReturnedMomentDate.clone();
35578        let aNodesCols = oNodeRow.find(".col");
35579
35580        for (var k = iStartColIndex; k < aNodesCols.length; k++) {
35581            var oNodeCol = aNodesCols.eq(k);
35582
35583            oNodeCol.attr("data-mysql-date", oDateCloned.format("YYYY-MM-DD"));
35584            oNodeCol.addClass("ctl-calendar-date-" + oDateCloned.format("YYYY-MM-DD"));
35585
35586            if (iDays > 1) {
35587                oDateCloned.add(1, 'days');
35588            }
35589        }
35590    }
35591
35592    var oDateCloned = oReturnedMomentDate.clone();
35593
35594    let szDateLabel = oDateCloned.format("MMMM");
35595
35596    for (var i = 0;
35596 i < iDays; i++) {
35597
35598        var szCurDay = oDateCloned.format("YYYY-MM-DD");
35599        var szDateDay = oDateCloned.format("MM") + "-" +
35600            oDateCloned.format("DD");
35601
35602        if (aFestivityDays.indexOf(szDateDay) >= 0 ||
35603            aFestivityWeekDays.indexOf(oDateCloned.format("d")) >= 0) {
35604            oNodeWeekDays.eq(i).closest(".ctl-calendar-cell").addClass("ctl-calendar-day-festivity");
35605        } else {
35606            oNodeWeekDays.eq(i).closest(".ctl-calendar-cell").removeClass("ctl-calendar-day-festivity");
35607        }
35608
35609        if (szToday == szCurDay) {
35610            oNodeWeekDays.eq(i).closest(".ctl-calendar-cell").addClass("ctl-calendar-day-today");
35611        } else {
35612            oNodeWeekDays.eq(i).closest(".ctl-calendar-cell").removeClass("ctl-calendar-day-today");
35613        }
35614
35615        if (iDays > 1) {
35616            oNodeWeekDays.eq(i).closest(".ctl-calendar-date-header").addClass("ctl-calendar-date-header-" + szCurDay);
35617        }
35618
35619        oNodeWeekDays.eq(i).attr("data-day", szCurDay);
35620        if (iDays == 1) {
35621            oNodeWeekDays.eq(i).html('<span class="ctl-calendar-day-inline-date">' + oDateCloned.format("YYYY MMMM D (dddd)") + '</span>');
35622        } else {
35623            oNodeWeekDays.eq(i).html("<span>" + oDateCloned.format("ddd") + "<br>" + oDateCloned.format("D") + "</span>");
35624        }
35625
35626        oDateCloned.add(1, 'days');
35627    }
35628
35629    if (iDays > 1) {
35630        let szLastYear = oDateCloned.format("YYYY");
35631        let szLastMonth = oDateCloned.format("MMMM");
35632
35633        if (szLastYear != oReturnedMomentDate.format("YYYY")) {
35634            szDateLabel += ' ' + oReturnedMomentDate.format("YYYY");
35635        }
35636
35637        if (szLastMonth != szDateLabel) {
35638            szDateLabel += " - " + szLastMonth + ' ' + szLastYear;
35639        } else {
35640            szDateLabel += ' ' + oReturnedMomentDate.format("YYYY");
35641        }
35642    } else {
35643        szDateLabel += ' ' + oReturnedMomentDate.format("YYYY");
35644    }
35645
35646    oNodeCalendar.find(".ctl-calendar-current-date-label").html(szDateLabel);
35647
35648    let aFoundEditors = {};
35649
35650    let idMe = Number(jQuery("body").attr("data-user-id"));
35651    let bShowEditors = oNodeCalendar.attr("data-editor-filter-self") == "1" ? false : true;
35652    let aStateFilterEditors = { loaded: false, editors: {} };
35653
35654    if (oNodeCalendar.attr("data-state-filter-editors")) {
35655        let szStateFilterEditors = oNodeCalendar.attr("data-state-filter-editors");
35656        aStateFilterEditors = JSON.parse(szStateFilterEditors);
35657    }
35658
35659    for (var szDay in oDayItems) {
35660
35661        oDayItems[szDay].sort(function (a, b) {
35662            var dateA = new Date(a["start-local"]);
35663            var dateB = new Date(b["start-local"]);
35664            return dateA - dateB;
35665        });
35666
35667        for (var i = 0; i < oDayItems[szDay].length; i++) {
35668            var oDayItem = oDayItems[szDay][i];
35669
35670            var html = "";
35671            var szCalendarHour = moment(oDayItem["start-local"], "YYYY-MM-DD HH:mm:ss").format("HH");
35672            var szStartHour    = moment(oDayItem["start-local"], "YYYY-MM-DD HH:mm:ss").format("H");
35673            var szEndHour      = moment(oDayItem["end-local"], "YYYY-MM-DD HH:mm:ss").format("H");
35674            var szStartMinutes = moment(oDayItem["start-local"], "YYYY-MM-DD HH:mm:ss").format("m");
35675            var szEndMinutes   = moment(oDayItem["end-local"], "YYYY-MM-DD HH:mm:ss").format("m");
35676
35677            var szEditorClasses = "";
35678            let szItemClasses = "";
35679
35680            if (oDayItem["classes"]) {
35681                szItemClasses += " " + oDayItem["classes"];
35682            }
35683
35684            if (oDayItem["editors"]) {
35685                for (var k = 0; k < oDayItem["editors"].length; k++) {
35686                    szEditorClasses += " ctl-calendar-day-item-editor-" + oDayItem["editors"][k].id;
35687                }
35688            }
35689
35690            szEditorClasses = szEditorClasses.trim();
35691
35692            if (oDayItem["period"] == "interval") {
35693                switch (oDayItem["interval-section"]) {
35694                    case "start":
35695                    case "middle":
35696                    case "end": {
35697                        szItemClasses += " ctl-calendar-day-item-interval ctl-calendar-day-item-interval-" + oDayItem["interval-section"];
35698
35699                        if (szStartHour != "0" || szStartMinutes != "0" || szEndHour != "0" || szEndMinutes != "0") {
35700                            szItemClasses += " visible-item-label";
35701                        }
35702
35703                    } break;
35704                    case "middle-start": {
35705                        szItemClasses += " ctl-calendar-day-item-interval ctl-calendar-day-item-interval-middle visible-item-label";
35706                    } break;
35707                    case "end-single-item": {
35708                        szItemClasses += " ctl-calendar-day-item-interval ctl-calendar-day-item-interval-end visible-item-label";
35709                    } break;
35710                }
35711            } else if (oDayItem["period"] == "single") {
35712                szItemClasses += " ctl-calendar-day-item-single";
35713            }
35714
35715            html += '<div class="ctl-calendar-day-item chroma-apply-correction '
35716                + szEditorClasses + ' ' + szItemClasses + '" data-cpt="' + oDayItem["post-type"]
35717                + '" data-id="' + oDayItem["post-id"] + '"';
35718
35719            html += ' data-start-hour="' + szStartHour + '"';
35720            html += ' data-end-hour="' + szEndHour + '"';
35721
35722            html += ' data-start-minutes="' + szStartMinutes + '"';
35723            html += ' data-end-minutes="' + szEndMinutes + '"';
35724
35725            if (oDayItem["edit-modal-id"]) {
35726                html += ' data-edit-modal-id="' + oDayItem["edit-modal-id"] + '"';
35727
35728                if (oDayItem["edit-modal-referral"]) {
35729                    html += ' data-edit-modal-referral="' + oDayItem["edit-modal-referral"] + '"';
35730                } else {
35731                    html += ' data-edit-modal-referral="post-id"';
35732                }
35733            }
35734
35735            if (oDayItem["parent-id"]) {
35736                html += ' data-parent-id="' + oDayItem["parent-id"] + '"';
35737            }
35738
35739            html += ' style="background-color: ' + oDayItem["post-color"] + ';"';
35740
35741            html += '>';
35742
35743            html += '<div class="ctl-calendar-day-item-bg chroma-apply-correction" style="background-color: ' +
35744                oDayItem["post-color"] + ';"></div>';
35745
35746            if (oDayItem["link"]) {
35747                html += '<a class="text-reset ctl-calendar-day-item-link ctl-show-loading" href="' + oDayItem["link"] + '">';
35748            }
35749
35750            html += '<div class="ctl-calendar-day-item-label">';
35751
35752            if (oDayItem["editors"]) {
35753
35754                let szClassesEditorsStripe = "ctl-calendar-day-item-editor-stripe-container pt-2";
35755
35756                html += '<div class="' + szClassesEditorsStripe + '">';
35757
35758                for (var k = 0; k < oDayItem["editors"].length; k++) {
35759                    if (!aFoundEditors["editor-" + oDayItem["editors"][k].id]) {
35760                        aFoundEditors["editor-" + oDayItem["editors"][k].id] = oDayItem["editors"][k];
35761
35762                        aStateFilterEditors = __ctlCalendarUpdateEditorState(oNodeCalendar, aStateFilterEditors,
35763                            oDayItem["editors"][k].id, idMe, bShowEditors);
35764                    }
35765
35766                    html += '<div class="ctl-calendar-day-item-editor-stripe ctl-calendar-day-item-editor-stripe-' + oDayItem["editors"][k].id + '" style="background-color:' + oDayItem["editors"][k].color + ';"></div>';
35767                }
35768                html += '</div>';
35769
35770            }
35771            html += '<div class="ctl-calendar-day-item-label-content">';
35772            html += oDayItem["label"];
35773            html += '</div>';
35774            html += '</div>';
35775
35776            if (oDayItem["link"]) {
35777                html += '</a>';
35778            }
35779
35780            html += '</div>'
35781
35782            let oNodeBodyWeekColumn = jQuery(html);
35783
35784            if (szStartHour == "0" && szStartMinutes == "0" && szEndHour == "0" && szEndMinutes == "0") {
35785                jQuery(".ctl-calendar-date-" + szDay + ".ctl-calendar-hour-xx").append(oNodeBodyWeekColumn);
35786            } else {
35787
35788                if (iDays == 1 && oNodeCalendar.attr("data-group-data-by-parent") == "1" && oDayItem["parent-id"] &&
35789                    jQuery("body").hasClass("bp-up-to-sm") == false) {
35790                    jQuery(".ctl-calendar-date-" + szDay + ".ctl-calendar-hour-" + szCalendarHour + ".ctl-calendar-item-parent-id-" + oDayItem["parent-id"]).append(oNodeBodyWeekColumn);
35791                } else {
35792                    jQuery(".ctl-calendar-date-" + szDay + ".ctl-calendar-hour-" + szCalendarHour + "").append(oNodeBodyWeekColumn);
35793                }
35794            }
35795        }
35796    }
35797
35798    aStateFilterEditors.loaded = true;
35799    oNodeCalendar.attr("data-state-filter-editors", JSON.stringify(aStateFilterEditors));
35800    __ctlCalendarRefreshEditorsVisibility(oNodeCalendar);
35801
35802    __ctlCalendarNormalizeWeekIntervalItems(oNodeCalendar);
35803    __ctlCalendarRefreshEditorFilters(oNodeCalendar, aFoundEditors);
35804    __ctlCalendarAdaptDayItems(oNodeCalendar);
35805
35806    // se disabilitato  è 0 altrimenti è maggiore di 0 e mostrerà l'orario 
35807    let iShowStartHoursScroll = parseInt(oNodeCalendar.attr("data-start-hours-scroll"));
35808
35809    if (iShowStartHoursScroll > 0) {
35810        let iShowVisibileHoursScroll = parseInt(oNodeCalendar.attr("data-visible-hours-scroll"));
35811        __ctlCalendarVisibleHoursScrollLimitedView(oNodeCalendar, iShowStartHoursScroll, iShowVisibileHoursScroll);
35812    }
35813}
35814
35815function __ctlTableCalendarUpdateBodyMonth(oNodeTableCalendar, idResource, oDayItems) {
35816    var oNodeTR = oNodeTableCalendar.find("tr[data-resource-id='" + idResource + "']");
35817    var oNodeTableWrapper = oNodeTableCalendar.closest(".ctl-theme-table-main-wrapper");
35818    var iMinwidth = oNodeTableWrapper.attr("data-period-cell-min-width");
35819
35820    console.log(oDayItems);
35821
35822    for (var szFullDate in oDayItems) {
35823        var html = "";
35824        html += '<div class="ctl-table-calendar-day-content">';
35825
35826        html += '<ul class="ctl-table-calendar-day-item-list">';
35827
35828        for (var i = 0; i < oDayItems[szFullDate].length; i++) {
35829            var oDayItem = oDayItems[szFullDate][i];
35830
35831            var szEditorClasses = "";
35832            for (var z = 0; z < oDayItem["editors"].length; z++) {
35833                szEditorClasses += " ctl-calendar-day-item-editor-" + oDayItem["editors"][z].id;
35834            }
35835            szEditorClasses = szEditorClasses.trim();
35836
35837            let szItemClasses = "";
35838
35839            if (oDayItem["classes"]) {
35840                szItemClasses += " " + oDayItem["classes"];
35841            }
35842
35843            if (oDayItem["period"] == "interval") {
35844                switch (oDayItem["interval-section"]) {
35845                    case "start":
35846                    case "middle":
35847                    case "end": {
35848                        szItemClasses += " ctl-calendar-day-item-interval ctl-calendar-day-item-interval-" + oDayItem["interval-section"];
35849
35850                    } break;
35851                    case "middle-start": {
35852                        szItemClasses += " ctl-calendar-day-item-interval ctl-calendar-day-item-interval-middle visible-item-label";
35853                    } break;
35854                    case "end-single-item": {
35855                        szItemClasses += " ctl-calendar-day-item-interval ctl-calendar-day-item-interval-end visible-item-label";
35856                    } break;
35857                }
35858            } else if (oDayItem["period"] == "single") {
35859                szItemClasses += " ctl-calendar-day-item-single";
35860            }
35861// fixfix
35862            html += '<li class="ctl-calendar-day-item chroma-apply-correction ' +
35863                szEditorClasses + szItemClasses + '" data-cpt="' + oDayItem["post-type"]
35864                + '" data-id="' + oDayItem["post-id"] + '"';
35865
35866            if (oDayItem["edit-modal-id"]) {
35867                html += ' data-edit-modal-id="' + oDayItem["edit-modal-id"] + '"';
35868
35869                if (oDayItem["edit-modal-referral"]) {
35870                    html += ' data-edit-modal-referral="' + oDayItem["edit-modal-referral"] + '"';
35871                } else {
35872                    html += ' data-edit-modal-referral="post-id"';
35873                }
35874            }
35875
35876            if (oDayItem["post-color"]) {
35877                html += ' style="background-color: ' + oDayItem["post-color"] + ';"';
35878            }
35879
35880            html += '>';
35881
35882            if (oDayItem["link"]) {
35883                html += '<a class="text-reset ctl-calendar-day-item-link ctl-show-loading" href="' + oDayItem["link"] + '">';
35884            }
35885
35886            html += '<div class="ctl-calendar-day-item-label">';
35887            if (oDayItem["editors"]) {
35888                for (var z = 0; z < oDayItem["editors"].length; z++) {
35889                    if (!aFoundEditors["editor-" + oDayItem["editors"][z].id]) {
35890                        aFoundEditors["editor-" + oDayItem["editors"][z].id] =
35891                            oDayItem["editors"][z];
35892                    }
35893                    html += '<div class="ctl-calendar-day-item-editor-stripe ctl-calendar-day-item-editor-stripe-' + oDayItem["editors"][z].id + '" style="background-color:' + oDayItem["editors"][z].color + ';"></div>';
35894                }
35895            }
35896            html += '<div class="ctl-calendar-day-item-label-content">';
35897            html += oDayItem["label"];
35898            html += '</div>';
35899            html += '</div>';
35900
35901            if (oDayItem["link"]) {
35902                html += '</a>';
35903            }
35904
35905            html += '</li>'
35906        }
35907        html += '</ul>';
35908
35909        html += '</div>';
35910
35911        let oNodeDayContent = jQuery(html);
35912
35913        var oNodeTD = oNodeTR.find("td." + szFullDate + " .ctl-table-cell-data");
35914
35915        oNodeTD.append(oNodeDayContent);
35916
35917        if (iMinwidth) {
35918            oNodeTD.css("min-width", iMinwidth + "px");
35919        }
35920    }
35921
35922}
35923
35924function __ctlCalendarUpdateBodyMonth(oNodeCalendar, oMomentDate, oDayItems, bCompactItems, aCalendarItemsPostTypes) {
35925
35926    var aHideWeekDays = JSON.parse(Base64.decode(oNodeCalendar.attr("data-hide-week-days")));
35927
35928    var aFestivityDays = [];
35929
35930    if (oNodeCalendar.attr("data-festivity") === "1") {
35931        aFestivityDays = ctlCalendarGetFestivityDays(oNodeCalendar);
35932    }
35933
35934    var aFestivityWeekDays = JSON.parse(Base64.decode(oNodeCalendar.attr("data-festivity-week-days")));
35935    var szToday = moment().format("YYYY-MM-DD");
35936
35937    var aCalendarDays = [];
35938    var iWeekStart = parseInt(oNodeCalendar.attr("data-week-start"));
35939    var iCurrentMonth = oMomentDate.format("MM");
35940    var iCurrentYears = oMomentDate.format("YYYY");
35941    var oFirstDayOfMonth = moment(iCurrentYears + '-' + iCurrentMonth + '-01', 'YYYY-MM-DD');
35942    var iFirstWeekDay = parseInt(oFirstDayOfMonth.format("d"));
35943    var iDaysInMonth = oFirstDayOfMonth.daysInMonth();
35944    var szDaysInMonth = iDaysInMonth + "";
35945
35946    oFirstDayOfMonth.locale(g_oCTLCalendarLocalizationFront["user_locale"]);
35947
35948    var oStartingCalendarDay = oFirstDayOfMonth.clone();
35949
35950    var iOffsetDay = (iFirstWeekDay - 1);
35951
35952    if (iWeekStart === 1) {
35953        if (iFirstWeekDay === 0) {
35954            iOffsetDay = 6;
35955        }
35956    } else {
35957        iOffsetDay += 1;
35958    }
35959
35960    oStartingCalendarDay.subtract(iOffsetDay, 'days');
35961
35962    for (var j = 0; j < 42; j++) {
35963        var oDayData = {
35964            "day": oStartingCalendarDay.format("DD"),
35965            "view_day": oStartingCalendarDay.format("D"),
35966            "month": oStartingCalendarDay.format("MM"),
35967            "year": oStartingCalendarDay.format("YYYY"),
35968            "weekday": oStartingCalendarDay.day() + ""
35969        };
35970
35971        oDayData.date = oDayData.year + "-" + oDayData.month + "-" + oDayData.day;
35972
35973        var szDateDay = oStartingCalendarDay.format("MM") + "-" +
35974            oStartingCalendarDay.format("DD");
35975
35976        oDayData.current_month = (oStartingCalendarDay.format("MM") === iCurrentMonth);
35977        oDayData.festivity = aFestivityDays.includes(szDateDay);
35978        oDayData.today = szToday === oStartingCalendarDay.format("YYYY-MM-DD");
35979
35980        aCalendarDays.push(oDayData);
35981        oStartingCalendarDay.add(1, "days");
35982    }
35983
35984    var html = "";
35985    var k = 0;
35986    var bJumpLastRow = false;
35987    var aFoundEditors = {};
35988
35989    let idMe = jQuery("body").attr("data-user-id");
35990    let bShowEditors = oNodeCalendar.attr("data-editor-filter-self") == "1" ? false : true;
35991    let aStateFilterEditors = { loaded: false, editors: {} };
35992
35993    if (oNodeCalendar.attr("data-state-filter-editors")) {
35994        let szStateFilterEditors = oNodeCalendar.attr("data-state-filter-editors");
35995        aStateFilterEditors = JSON.parse(szStateFilterEditors);
35996    }
35997
35998    for (var r = 0; r < 6; r++) {
35999        if (bJumpLastRow) {
36000            break;
36001        }
36002
36003        html += '<div class="row ctl-calendar-row">';
36004
36005        for (var c = 0; c < 7; c++) {
36006            var szFullDate = aCalendarDays[k].year + '-' +
36007                aCalendarDays[k].month + '-' +
36008                aCalendarDays[k].day;
36009
36010            if (!aHideWeekDays.includes(moment(szFullDate, "YYYY-MM-DD").day())) {
36011                var szAttrs = '';
36012                szAttrs += ' data-day="' + aCalendarDays[k].day + '"';
36013                szAttrs += ' data-month="' + aCalendarDays[k].month + '"';
36014                szAttrs += ' data-year="' + aCalendarDays[k].year + '"';
36015                szAttrs += ' data-date="' + szFullDate + '"';
36016
36017                html += '<div' + szAttrs + ' class="col ctl-calendar-day">';
36018
36019                var szClasses = "ctl-calendar-cell";
36020                if (aCalendarDays[k].current_month) {
36021                    szClasses += ' ctl-calendar-day-current-month';
36022                }
36023                if (aCalendarDays[k].festivity ||
36024                    aFestivityWeekDays.includes(aCalendarDays[k].weekday)) {
36025                    szClasses += ' ctl-calendar-day-festivity';
36026                }
36027                if (aCalendarDays[k].today) {
36028                    szClasses += ' ctl-calendar-day-today';
36029                }
36030                szClasses = ' class="' + szClasses + '"';
36031
36032                html += '<div' + szClasses + '>';
36033                html += '<h4><span>' + aCalendarDays[k].view_day + '</span></h4>';
36034                html += '<div class="';
36035                html += 'ctl-calendar-day-content';
36036                html += bCompactItems == true ? ' ctl-calendar-day-content-compacted' : '';
36037                html += '">';
36038
36039                if (bCompactItems == true) {
36040                    var oResult = __ctlCalendarDrawMonthCompactedCalendarItem(oNodeCalendar, aCalendarItemsPostTypes, oDayItems, szFullDate,
36041                        aFoundEditors, aStateFilterEditors, idMe, bShowEditors);
36042                    html += oResult.html;
36043                }
36044
36045                var oResult = __ctlCalendarDrawMonthCalendarItem(oNodeCalendar, oDayItems, szFullDate,
36046                    aFoundEditors, aStateFilterEditors, idMe, bShowEditors, c);
36047                html += oResult.html;
36048                aFoundEditors = oResult.aFoundEditors;
36049                aStateFilterEditors = oResult.aStateFilterEditors;
36050
36051                html += '</div>';
36052                html += '</div>';
36053                html += '</div>';
36054            }
36055
36056            if (r > 0 && aCalendarDays[k].view_day === szDaysInMonth) {
36057                bJumpLastRow = true;
36058            }
36059
36060            k++;
36061        }
36062        html += '</div>';
36063    }
36064
36065    let oNodeCalendarMonthBody = jQuery(html);
36066
36067
36068    oNodeCalendar.find(".ctl-calendar-month-body").html(oNodeCalendarMonthBody);
36069    oNodeCalendar.find(".ctl-calendar-current-date-label").html(oMomentDate.format("MMMM YYYY"));
36070
36071    aStateFilterEditors.loaded = true;
36072    oNodeCalendar.attr("data-state-filter-editors", JSON.stringify(aStateFilterEditors));
36073    __ctlCalendarRefreshEditorsVisibility(oNodeCalendar);
36074
36075    if (!bCompactItems) {
36076        __ctlCalendarNormalizeIntervalMonthItems(oNodeCalendar);
36077    }
36078
36079    __ctlCalendarRefreshEditorFilters(oNodeCalendar, aFoundEditors);
36080
36081    jQuery(document).trigger("ctl-calendar-update-month",
36082        [oNodeCalendar, oMomentDate]);
36083}
36084
36085function __ctlCalendarDrawMonthCalendarItem(oNodeCalendar, oDayItems, szFullDate, aFoundEditors, aStateFilterEditors, idMe, bShowEditors, c) {
36086    var html = "";
36087    if (oDayItems[szFullDate] && oDayItems[szFullDate].length > 0) {
36088        html += '<ul class="ctl-calendar-day-item-list">';
36089        for (var i = 0; i < oDayItems[szFullDate].length; i++) {
36090            var oDayItem = oDayItems[szFullDate][i];
36091
36092            var szEditorClasses = "";
36093            for (var z = 0; z < oDayItem["editors"].length; z++) {
36094                szEditorClasses += " ctl-calendar-day-item-editor-" + oDayItem["editors"][z].id;
36095            }
36096            szEditorClasses = szEditorClasses.trim();
36097
36098            let szItemClasses = "";
36099
36100            if (oDayItem["classes"]) {
36101                szItemClasses += " " + oDayItem["classes"];
36102            }
36103
36104            if (oDayItem["period"] == "interval") {
36105                switch (oDayItem["interval-section"]) {
36106                    case "start":
36107                    case "middle":
36108                    case "end": {
36109                        szItemClasses += " ctl-calendar-day-item-interval ctl-calendar-day-item-interval-" + oDayItem["interval-section"];
36110
36111                        if (c == 0) {
36112                            szItemClasses += " visible-item-label";
36113                        }
36114
36115                    } break;
36116                    case "middle-start": {
36117                        szItemClasses += " ctl-calendar-day-item-interval ctl-calendar-day-item-interval-middle visible-item-label";
36118                    } break;
36119                    case "end-single-item": {
36120                        szItemClasses += " ctl-calendar-day-item-interval ctl-calendar-day-item-interval-end visible-item-label";
36121                    } break;
36122                }
36123            } else if (oDayItem["period"] == "single") {
36124                szItemClasses += " ctl-calendar-day-item-single";
36125            }
36126
36127            html += '<li class="ctl-calendar-day-item chroma-apply-correction ' +
36128                szEditorClasses + szItemClasses + '" data-cpt="' + oDayItem["post-type"]
36129                + '" data-id="' + oDayItem["post-id"] + '"';
36130
36131            if (oDayItem["edit-modal-id"]) {
36132                html += ' data-edit-modal-id="' + oDayItem["edit-modal-id"] + '"';
36133
36134                if (oDayItem["edit-modal-referral"]) {
36135                    html += ' data-edit-modal-referral="' + oDayItem["edit-modal-referral"] + '"';
36136                } else {
36137                    html += ' data-edit-modal-referral="post-id"';
36138                }
36139            }
36140
36141            html += ' style="background-color: ' + oDayItem["post-color"] + ';">';
36142
36143            html += '<div class="ctl-calendar-day-item-bg chroma-apply-correction" style="background-color: ' + oDayItem["post-color"] + ';"></div>';
36144
36145            if (oDayItem["link"]) {
36146                html += '<a class="text-reset ctl-calendar-day-item-link ctl-show-loading" href="' + oDayItem["link"] + '">';
36147            }
36148
36149            html += '<div class="ctl-calendar-day-item-label">';
36150            if (oDayItem["editors"]) {
36151                html += '<div class="ctl-calendar-day-item-editor-stripe-container pt-2">';
36152
36153                for (var z = 0; z < oDayItem["editors"].length; z++) {
36154                    if (!aFoundEditors["editor-" + oDayItem["editors"][z].id]) {
36155
36156                        aFoundEditors["editor-" + oDayItem["editors"][z].id] =
36157                            oDayItem["editors"][z];
36158
36159                        aStateFilterEditors = __ctlCalendarUpdateEditorState(oNodeCalendar, aStateFilterEditors,
36160                            oDayItem["editors"][z].id, idMe, bShowEditors);
36161
36162                    }
36163                    html += '<div class="ctl-calendar-day-item-editor-stripe ctl-calendar-day-item-editor-stripe-' + oDayItem["editors"][z].id + '" style="background-color:' + oDayItem["editors"][z].color + ';"></div>';
36164                }
36165
36166                html += '</div>';
36167            }
36168            html += '<div class="ctl-calendar-day-item-label-content">';
36169            html += oDayItem["label"];
36170            html += '</div>';
36171            html += '</div>';
36172
36173            if (oDayItem["link"]) {
36174                html += '</a>';
36175            }
36176
36177            html += '</li>'
36178        }
36179        html += '</ul>';
36180    }
36181
36182    return {
36183        html: html,
36184        aFoundEditors: aFoundEditors,
36185        aStateFilterEditors: aStateFilterEditors
36186    }
36187}
36188
36189function __ctlCalendarDrawMonthCompactedCalendarItem(oNodeCalendar, aCalendarItemsPostTypes, oDayItems, szFullDate,
36190    aFoundEditors, aStateFilterEditors, idMe, bShowEditors) {
36191
36192    var html = "";
36193
36194    if (oDayItems[szFullDate] && aCalendarItemsPostTypes.length > 0) {
36195
36196        html += '<ul class="ctl-calendar-day-item-list ctl-calendar-day-item-list-compacted">';
36197
36198        for (var t = 0; t < aCalendarItemsPostTypes.length; t++) {
36199            var oCalendarItemsPostType = aCalendarItemsPostTypes[t];
36200
36201            var iCntItemFound = 0;
36202            var aEditorsClasses = [];
36203            var aItemsClasses = [];
36204            var aItemEditors = [];
36205
36206            for (var i = 0; i < oDayItems[szFullDate].length; i++) {
36207
36208                var oDayItem = oDayItems[szFullDate][i];
36209
36210                if (oDayItem["post-type"] != oCalendarItemsPostType["slug"]) {
36211                    continue;
36212                }
36213
36214                iCntItemFound++;
36215
36216                for (var z = 0; z < oDayItem["editors"].length; z++) {
36217                    if (aEditorsClasses.indexOf("ctl-calendar-day-item-editor-" + oDayItem["editors"][z].id) === -1) {
36218                        aEditorsClasses.push("ctl-calendar-day-item-editor-" + oDayItem["editors"][z].id);
36219                    }
36220
36221                    if (!aFoundEditors["editor-" + oDayItem["editors"][z].id]) {
36222                        aFoundEditors["editor-" + oDayItem["editors"][z].id] = oDayItem["editors"][z];
36223                        aStateFilterEditors = __ctlCalendarUpdateEditorState(oNodeCalendar, aStateFilterEditors,
36224                            oDayItem["editors"][z].id, idMe, bShowEditors);
36225                    }
36226
36227                    let bAddEditor = true;
36228                    for (var k = 0; k < aItemEditors.length; k++) {
36229                        if (aItemEditors[k].id == oDayItem["editors"][z].id) {
36230                            bAddEditor = false;
36231                            break;
36232                        }
36233                    }
36234
36235                    if (bAddEditor) {
36236                        aItemEditors.push(oDayItem["editors"][z]);
36237                    }
36238                }
36239
36240                if (oDayItem["classes"]) {
36241                    aItemsClasses.push(oDayItem["classes"]);
36242                }
36243            }
36244
36245            if (iCntItemFound == 0) {
36246                continue;
36247            }
36248
36249            let szEditorClasses = aEditorsClasses.join(" ").trim();
36250            let szItemClasses = aItemsClasses.join(" ").trim();
36251
36252            szItemClasses += " ctl-calendar-day-item-single";
36253
36254            html += '<li class="ctl-calendar-day-item ctl-calendar-day-item-compacted chroma-apply-correction ' +
36255                szEditorClasses + ' ' + szItemClasses + '" data-cpt="' + oCalendarItemsPostType["slug"] + '"';
36256
36257            html += ' style="background-color: ' + oCalendarItemsPostType["color"] + ';">';
36258
36259            html += '<div class="ctl-calendar-day-item-bg chroma-apply-correction" style="background-color: ' + oCalendarItemsPostType["color"] + ';"></div>';
36260
36261            html += '<div class="ctl-calendar-day-item-label">';
36262            if (oDayItem["editors"]) {
36263                html += '<div class="ctl-calendar-day-item-editor-stripe-container pt-2">';
36264                for (var z = 0; z < aItemEditors.length; z++) {
36265                    html += '<div class="ctl-calendar-day-item-editor-stripe ctl-calendar-day-item-editor-stripe-' +
36266                        aItemEditors[z].id + '" style="background-color:' + aItemEditors[z].color + ';"></div>';
36267                }
36268                html += '</div>';
36269            }
36270            html += '<div class="ctl-calendar-day-item-label-content">';
36271            html += oCalendarItemsPostType["label-plural"] + ' (' + iCntItemFound + ')';
36272            html += '</div>';
36273            html += '</div>';
36274
36275            html += '</li>'
36276        }
36277
36278        html += '</ul>';
36279    }
36280
36281    return {
36282        html: html,
36283        aFoundEditors: aFoundEditors,
36284        aStateFilterEditors: aStateFilterEditors
36285    }
36286}
36287
36288function __ctlCalendarRefreshEditorsVisibility(oNodeCalendar, oNodeTarget = null) {
36289
36290    let aEditors = {};
36291
36292    if (oNodeCalendar.attr("data-state-filter-editors")) {
36293        let szStateFilterEditors = oNodeCalendar.attr("data-state-filter-editors");
36294        aStateFilterEditors = JSON.parse(szStateFilterEditors);
36295        aEditors = aStateFilterEditors["editors"];
36296    }
36297
36298    if (!oNodeTarget) {
36299        oNodeTarget = oNodeCalendar;
36300    }
36301
36302    for (let key in aEditors) {
36303        let idEditor = aEditors[key].id;
36304        let bShow = aEditors[key].visibility;
36305
36306        var oNodeStripes = oNodeTarget.find(".ctl-calendar-day-item-editor-stripe-" + idEditor);
36307
36308        oNodeStripes.each(function () {
36309            var oNodeTargetStripe = jQuery(this);
36310            if (bShow == false) {
36311                oNodeTargetStripe.addClass("d-none");
36312            } else {
36313                oNodeTargetStripe.removeClass("d-none");
36314            }
36315
36316            var oNodeDayItem = oNodeTargetStripe.closest(".ctl-calendar-day-item-editor-" + idEditor);
36317
36318            if (oNodeDayItem.find(".d-none.ctl-calendar-day-item-editor-stripe").length ==
36319                oNodeDayItem.find(".ctl-calendar-day-item-editor-stripe").length) {
36320                oNodeDayItem.addClass("d-none");
36321            } else {
36322                oNodeDayItem.removeClass("d-none");
36323            }
36324        });
36325    }
36326
36327    ctlVulcanoResizeLayout();
36328}
36329
36330function __ctlCalendarReorganizeMonthCalendarItems(aMaskPrevDay, oCurCol, iOffset = 0) {
36331
36332    // Logic to reorganize calendar items
36333    if (aMaskPrevDay[iOffset] != 0 && iOffset < aMaskPrevDay.length) {
36334        __ctlCalendarReorganizeMonthCalendarItems(aMaskPrevDay, oCurCol, ++iOffset);
36335        return;
36336    }
36337
36338    for (var i = 0; i < oCurCol.find(".ctl-calendar-day-item").length; i++) {
36339
36340        var oNodeDayItem = oCurCol.find(".ctl-calendar-day-item").eq(i);
36341
36342        if (oNodeDayItem.closest(".ctl-calendar-day-item-list-compacted").length > 0) {
36343            continue;
36344        }
36345
36346        if ((oNodeDayItem.hasClass("ctl-calendar-day-item-single") ||
36347            oNodeDayItem.hasClass("ctl-calendar-day-item-interval-start"))
36348        ) {
36349
36350            if (i == iOffset) {
36351                __ctlCalendarReorganizeMonthCalendarItems(aMaskPrevDay, oCurCol, ++iOffset);
36352                break;
36353            } else if (i > iOffset) {
36354                // move node in the position iOffset
36355                oNodeDayItem.detach().insertBefore(oCurCol.find(".ctl-calendar-day-item").eq(iOffset));
36356                __ctlCalendarReorganizeMonthCalendarItems(aMaskPrevDay, oCurCol, ++iOffset);
36357                break;
36358            }
36359        }
36360    }
36361}
36362
36363function __ctlCalendarReorganizeMonthCalendarDay(oCurCol) {
36364
36365    let aCurDayItemsMiddle = [];
36366
36367    oCurCol.find(".ctl-calendar-day-item-interval-middle").each(function () {
36368        aCurDayItemsMiddle.push(jQuery(this));
36369    });
36370    let aCurDayItemsStart = [];
36371
36372    oCurCol.find(".ctl-calendar-day-item-interval-start").each(function () {
36373        aCurDayItemsStart.push(jQuery(this));
36374    });
36375
36376    let aCurDayItemsEnd = [];
36377    oCurCol.find(".ctl-calendar-day-item-interval-end").each(function () {
36378        aCurDayItemsEnd.push(jQuery(this));
36379    });
36380
36381    let iOffsetItems = 0;
36382    for (var k = 0; k < aCurDayItemsMiddle.length; k++) {
36383        aCurDayItemsMiddle[k].insertBefore(oCurCol.find(".ctl-calendar-day-item").eq(iOffsetItems));
36384        iOffsetItems++;
36385    }
36386
36387    for (var k = 0; k < aCurDayItemsStart.length; k++) {
36388        oCurCol.find(".ctl-calendar-day-item").eq(iOffsetItems).before(aCurDayItemsStart[k]);
36389        iOffsetItems++;
36390    }
36391
36392    for (var k = 0; k < aCurDayItemsEnd.length; k++) {
36393        oCurCol.find(".ctl-calendar-day-item").eq(iOffsetItems).before(aCurDayItemsEnd[k]);
36394        iOffsetItems++;
36395    }
36396}
36397
36398function __ctlCalendarItemOptimizeHeightForMonth(oNodeRow) {
36399
36400    let aDayItemsForID = {};
36401    let aDayItemsForCPT = {};
36402
36403    for (let i = 0; i < oNodeRow.length; i++) {
36404        let oNodeCol = oNodeRow.eq(i);
36405
36406        oNodeCol.find(".ctl-calendar-day-item").each(function () {
36407
36408            if (jQuery(this).hasClass("ctl-calendar-day-item-compacted")) {
36409                let szCPT = jQuery(this).attr("data-cpt");
36410                if (!aDayItemsForCPT[szCPT]) {
36411                    aDayItemsForCPT[szCPT] = [];
36412                }
36413                aDayItemsForCPT[szCPT].push(jQuery(this));
36414            } else {
36415                let idPost = jQuery(this).attr("data-id");
36416                if (!aDayItemsForID[idPost]) {
36417                    aDayItemsForID[idPost] = [];
36418                }
36419                aDayItemsForID[idPost].push(jQuery(this));
36420            }
36421        });
36422
36423    }
36424
36425    for (let idPost in aDayItemsForID) {
36426        let aDayItems = aDayItemsForID[idPost];
36427        if (aDayItems.length > 1) {
36428            let iWidth = -20;
36429            let oNodeFirstDayItem = aDayItems[0].find(".ctl-calendar-day-item-optimized-height");
36430            if (oNodeFirstDayItem.length === 0) {
36431                let szHtml = '';
36432
36433                for (var i = 0; i < aDayItems.length; i++) {
36434                    if (!jQuery(aDayItems[i]).hasClass("ctl-calendar-day-item-hidden")) {
36435                        iWidth += jQuery(aDayItems[i]).find(".ctl-calendar-day-item-bg").outerWidth();
36436                    }
36437                }
36438
36439                szHtml += '<div style="width: ' + iWidth + 'px" class="ctl-calendar-day-item-optimized-height" data-id="' + idPost + '">';
36440                szHtml += '</div>';
36441                var oNodeOptimizedHeight = jQuery(szHtml);
36442
36443                if (aDayItems[0].find("a").length > 0) {
36444                    var oNodeToClone = aDayItems[0].find("a");
36445                    oNodeOptimizedHeight.append(oNodeToClone.clone());
36446                    oNodeToClone.css("visibility", "hidden");
36447                } else {
36448                    var oNodeToClone = aDayItems[0].find(".ctl-calendar-day-item-label");
36449                    oNodeOptimizedHeight.append(oNodeToClone.clone());
36450                    oNodeToClone.css("visibility", "hidden");
36451                }
36452
36453                aDayItems[0].append(oNodeOptimizedHeight);
36454
36455                let iOptimizedHeight = oNodeOptimizedHeight.outerHeight();
36456
36457                for (var i = 0; i < aDayItems.length; i++) {
36458                    aDayItems[i].css("height", iOptimizedHeight + "px");
36459                    aDayItems[i].find(".ctl-calendar-day-item-bg").css("height", "100%");
36460                }
36461            } else {
36462                for (var i = 0; i < aDayItems.length; i++) {
36463                    if (!jQuery(aDayItems[i]).hasClass("ctl-calendar-day-item-hidden")) {
36464                        iWidth += aDayItems[i].find(".ctl-calendar-day-item-bg").outerWidth();
36465                    }
36466                }
36467                oNodeFirstDayItem.css("width", iWidth + "px");
36468
36469                let iOptimizedHeight = oNodeFirstDayItem.outerHeight();
36470
36471                for (var i = 0; i < aDayItems.length; i++) {
36472                    aDayItems[i].css("height", iOptimizedHeight + "px");
36473                    aDayItems[i].find(".ctl-calendar-day-item-bg").css("height", "100%");
36474                }
36475            }
36476        }
36477    }
36478
36479}
36480
36481function __ctlCalendarReorganizeMonthColumnItems(oPrevCol, oCurCol) {
36482
36483    var aPrevDayItems = [];
36484    oPrevCol.find(".ctl-calendar-day-item").each(function () {
36485        aPrevDayItems.push(jQuery(this));
36486    });
36487
36488    //---------------------------------------------------------
36489    // reorganizzo i middle in alto, i singoli alla fine e gli start dopo i middle
36490    __ctlCalendarReorganizeMonthCalendarDay(oCurCol);
36491
36492    //---------------------------------------------------------
36493    // riposiziono gli elementi vicini di middle e start
36494    var aCurDayItems = [];
36495    oCurCol.find(".ctl-calendar-day-item").each(function () {
36496        aCurDayItems.push(jQuery(this));
36497    });
36498
36499    let iOffsetMaxMovedItems = 0;
36500    let aCurDayItemsLinked = [];
36501    let aCurDayItemsNotLinked = [];
36502
36503    for (var k = 0; k < aPrevDayItems.length; k++) {
36504        var idPost = aPrevDayItems[k].attr("data-id");
36505
36506        if (aPrevDayItems[k].hasClass("ctl-calendar-day-item-interval-middle") ||
36507            aPrevDayItems[k].hasClass("ctl-calendar-day-item-interval-start")) {
36508
36509            for (var j = 0; j < aCurDayItems.length; j++) {
36510                if (aCurDayItems[j].attr("data-id") == idPost) {
36511                    aCurDayItemsLinked.push(aCurDayItems[j]);
36512                    break;
36513                }
36514            }
36515        }
36516    }
36517
36518    for (var j = 0; j < aCurDayItems.length; j++) {
36519        let bFound = false;
36520        for (var k = 0; k < aCurDayItemsLinked.length; k++) {
36521            if (aCurDayItems[j].attr("data-id") == aCurDayItemsLinked[k].attr("data-id")) {
36522                bFound = true;
36523                break;
36524            }
36525        }
36526
36527        if (!bFound) {
36528            aCurDayItemsNotLinked.push(aCurDayItems[j]);
36529        }
36530    }
36531
36532    // add day items linked in oCurCol
36533    for (var k = 0; k < aCurDayItemsLinked.length; k++) {
36534        let iOffsetToAttach = iOffsetMaxMovedItems;
36535
36536        for (var m = iOffsetMaxMovedItems; m >= 0; m--) {
36537            let oCurDayItem = oCurCol.find(".ctl-calendar-day-item").eq(m);
36538
36539            if (!oCurDayItem.hasClass("ctl-calendar-day-item-single") && !oCurDayItem.hasClass("ctl-calendar-day-item-interval-start")) {
36540                break;
36541            } else {
36542                iOffsetToAttach = m;
36543            }
36544        }
36545
36546        if (iOffsetToAttach >= oCurCol.find(".ctl-calendar-day-item").length) {
36547            iOffsetToAttach = oCurCol.find(".ctl-calendar-day-item").length - 1;
36548        }
36549
36550        aCurDayItemsLinked[k].insertBefore(oCurCol.find(".ctl-calendar-day-item").eq(iOffsetToAttach));
36551        iOffsetMaxMovedItems++;
36552    }
36553    // add day items not linked in oCurCol
36554    for (var k = 0; k < aCurDayItemsNotLinked.length; k++) {
36555        oCurCol.find(".ctl-calendar-day-item").eq(oCurCol.find(".ctl-calendar-day-item").length - 1).after(aCurDayItemsNotLinked[k]);
36556    }
36557
36558
36559    //---------------------------------------------------------
36560    // creo i dummy invisibili per allineare gli elementi
36561    iCntTestedItems = 0;
36562    while (true) {
36563        let bContinue = false;
36564
36565        var aCurDayItems = [];
36566        oCurCol.find(".ctl-calendar-day-item").each(function () {
36567            aCurDayItems.push(jQuery(this));
36568        });
36569
36570        var aPrevDayItems = [];
36571        oPrevCol.find(".ctl-calendar-day-item").each(function () {
36572            aPrevDayItems.push(jQuery(this));
36573        });
36574
36575        for (var k = iCntTestedItems; k < aCurDayItems.length; k++) {
36576
36577            if ((aCurDayItems[k].hasClass("ctl-calendar-day-item-interval-middle") ||
36578                aCurDayItems[k].hasClass("ctl-calendar-day-item-interval-end")) &&
36579                k < aPrevDayItems.length) {
36580
36581                //console.log("<<<   check x buco " + aCurDayItems[k].attr("data-id") + " - " + oCurCol.attr("data-date")  );
36582                iCntTestedItems++;
36583                bContinue = true;
36584
36585                for (var j = 0; j < aPrevDayItems.length; j++) {
36586
36587                    if (aPrevDayItems[j].attr("data-id") == aCurDayItems[k].attr("data-id")) {
36588                        if (k < j) {
36589                            //console.log("TROVATOOOOOOO " +aCurDayItems[k].attr("data-id") + " - " + oCurCol.attr("data-date") + " diff " + (j-k) );
36590
36591                            for (var m = 0; m < (j - k); m++) {
36592                                //console.log("m: " + m);
36593                                var oNodeClone = aPrevDayItems[(j - (j - k)) + m].clone();
36594                                oNodeClone.addClass("ctl-calendar-day-item-hidden");
36595                                oNodeClone.insertBefore(aCurDayItems[k]);
36596                            }
36597                        }
36598                        break;
36599                    }
36600                }
36601                break
36602            }
36603
36604        }
36605
36606        if (!bContinue) {
36607            break;
36608        }
36609    }
36610
36611
36612}
36613
36614function __ctlCalendarNormalizeIntervalMonthItems(oNodeCalendar, oCurCol) {
36615    //riorganizzare il primo giorno del mese prima di procedere all'analisi prev cur col
36616
36617    for (var n = 0; n < oNodeCalendar.find(".ctl-calendar-row").length; n++) {
36618        var oNodeRow = oNodeCalendar.find(".ctl-calendar-row").eq(n);
36619
36620        var aCols = [];
36621
36622        oNodeRow.find(".ctl-calendar-day").each(function () {
36623            var oNodeCol = jQuery(this);
36624            aCols.push(oNodeCol);
36625        });
36626
36627
36628        __ctlCalendarReorganizeMonthCalendarDay(aCols[0]);
36629
36630        for (var i = 1; i < aCols.length; i++) {
36631
36632            var oPrevCol = aCols[i - 1];
36633            var oCurCol = aCols[i];
36634
36635            __ctlCalendarReorganizeMonthColumnItems(oPrevCol, oCurCol);
36636        }
36637    }
36638}
36639
36640function __ctlCalendarNormalizeWeekIntervalItems(oNodeCalendar) {
36641
36642    for (var n = 0; n < oNodeCalendar.find(".ctl-calendar-week-body .row").length; n++) {
36643        var oNodeRow = oNodeCalendar.find(".ctl-calendar-week-body .row").eq(n);
36644
36645        var aCols = [];
36646
36647        oNodeRow.find(".ctl-calendar-hourly-activity").each(function () {
36648            var oNodeCol = jQuery(this);
36649            aCols.push(oNodeCol);
36650        });
36651
36652        __ctlCalendarReorganizeMonthCalendarDay(aCols[0]);
36653
36654        for (var i = 1; i < aCols.length; i++) {
36655
36656            var oPrevCol = aCols[i - 1];
36657            var oCurCol = aCols[i];
36658
36659            __ctlCalendarReorganizeMonthColumnItems(oPrevCol, oCurCol);
36660        }
36661    }
36662}
36663
36664function ctlCalendarShowLoader(oNodeContainer) {
36665    var html = "";
36666    html += '<div class="ctl-calendar-loader d-flex align-items-center justify-content-center">';
36667    html += '<div class="spinner-border text-primary" role="status">';
36668    html += '<span class="sr-only">Loading...</span>';
36669    html += '</div>';
36670    html += '</div>';
36671    oNodeContainer.append(html);
36672}
36673
36674function ctlCalendarHideLoader(oNodeContainer) {
36675    var oNodeLoader = oNodeContainer.find(".ctl-calendar-loader");
36676
36677    if (oNodeLoader.length > 0) {
36678        oNodeLoader.remove();
36679    }
36680}
36681
36682function ctlTableCalendarInit(oNodeTableCalendar, szViewMode) {
36683
36684    if (szViewMode != "week" &&
36685        szViewMode != "month" &&
36686        szViewMode != "day"
36687    ) {
36688        return;
36689    }
36690
36691    var oNodeTableWrapper = oNodeTableCalendar.closest(".ctl-theme-table-main-wrapper");
36692    var oNodeForm = oNodeTableWrapper.find(".ctl-table-calendar-control
36692s").find("form");
36693    var oFormData = oNodeForm.serializeObject();
36694
36695    oFormData['action']  = 'ctl-wp-studio';
36696    oFormData['execute'] = 'ctl-calendar';
36697    oFormData['extension-action'] = 'table-get-' + szViewMode;
36698    oFormData['get-params']       = g_oCTLWPStudio.getUrlParams();
36699
36700    var aResourceIds = [];
36701
36702    oNodeTableCalendar.find("tbody tr").each(function () {
36703        if (!isNaN(Number(jQuery(this).attr("data-resource-id")))) {
36704            aResourceIds.push(jQuery(this).attr("data-resource-id"));
36705        }
36706    });
36707
36708    oFormData['resource-ids'] = aResourceIds;
36709
36710    var idLoading = g_oCTLWPStudio.showLoading("");
36711
36712    jQuery.ajax({
36713        url: g_oCTLWPStudio._oLangCommon["ajaxurl"],
36714        type: "POST",
36715        data: oFormData,
36716        cache: false,
36717        method: 'POST',
36718        success: function (response, textStatus, jqXHR) {
36719            var oResponse = jQuery.parseJSON(response);
36720
36721            if (oResponse.res === false) {
36722                g_oCTLWPStudio.closeDlg(idLoading);
36723                if (oResponse.alert) {
36724                    g_oCTLBootstrapModals.alert("", oResponse.alert);
36725                }
36726            } else {
36727                g_oCTLWPStudio.closeDlg(idLoading);
36728
36729                if (oResponse["resources"]) {
36730                    for (var idResource in oResponse.resources) {
36731                        if (oResponse.resources[idResource]["items"]) {
36732                            var oDayItems = {};
36733                            var aListItems = oResponse.resources[idResource]["items"];
36734                            for (var i = 0; i < aListItems.length; i++) {
36735                                if (!oDayItems[aListItems[i]["start"]]) {
36736                                    oDayItems[aListItems[i]["start"]] = [];
36737                                }
36738                                oDayItems[aListItems[i]["start"]].push(aListItems[i]);
36739                            }
36740
36741                            switch (szViewMode) {
36742                                case "month": {
36743                                    __ctlTableCalendarUpdateBodyMonth(oNodeTableCalendar,
36744                                        idResource, oDayItems);
36745                                } break;
36746                                case "week": {
36747                                    __ctlTableCalendarUpdateBodyMonth(oNodeTableCalendar,
36748                                        idResource, oDayItems);
36749                                } break;
36750                                case "day": {
36751                                    __ctlTableCalendarUpdateBodyMonth(oNodeTableCalendar,
36752                                        idResource, oDayItems);
36753                                } break;
36754                            }
36755                        }
36756                    }
36757                }
36758
36759                wpdk_do_action("ctl-vulcano-theme-resize-layout");
36760                g_oCTLWPStudio.applyChromaCorrection();
36761            }
36762        },
36763        error: function (jqXHR, textStatus, errorThrown) {
36764            g_oCTLWPStudio.closeDlg(idLoading);
36765            alert(g_oCTLWPStudio._oLangCommon["Ooops! Something Went Wrong!"]);
36766        }
36767    });
36768}
36769
36770function ctlCalendarsResize(bDelay, iTime) {
36771    if (bDelay) {
36772        setTimeout(function () {
36773            __ctlCalendarsResize();
36774        }, iTime ? iTime : 500);
36775    } else {
36776        __ctlCalendarsResize();
36777    }
36778}
36779
36780function __ctlCalendarsResize() {
36781    jQuery(".ctl-calendar-widget").each(function () {
36782        __ctlCalendarAdaptDayItems(jQuery(this));
36783    });
36784}
36785
36786function ctlCalendarInit(oNodeCalendar, oMoment, view, oDayItems) {
36787
36788    var oNodeContainer = oNodeCalendar.find(".ctl-calendar-container");
36789
36790    var szCurrentDay = oMoment.format("DD");
36791    var szCurrentMonth = oMoment.format("MM");
36792    var iCurrentYear = Number(oMoment.format("YYYY"));
36793
36794    var html = "";
36795
36796    var szControlsContainerClasses = "ctl-calendar-controls-container"
36797    if (oNodeCalendar.attr("data-controls") !== "1") {
36798        szControlsContainerClasses += ' d-none';
36799    }
36800
36801    html += '<div class="' + szControlsContainerClasses + '">';
36802
36803    html += '<div class="ctl-calendar-controls">';
36804
36805    html += '<div class="btn-group mb-2 w-100" role="group" aria-label="">';
36806    html += '<button type="button" class="btn btn-outline-primary btn-sm ctl-calendar-action-prev">';
36807    html += '<i class="ctl-wp-studio-icons-left-open-1"></i>';
36808    html += '</button>';
36809
36810    html += '<button type="button" class="btn btn-outline-primary ctl-calendar-action-today" title="' + g_oCTLCalendarLocalizationFront["today"] + '">';
36811    html += '<i class="fas fa-calendar-day"></i>';
36812    html += '<span class="btn-text ml-1">' + g_oCTLCalendarLocalizationFront["today"] + '</span>';
36813    html += '</button>';
36814
36815    var szReloadCloasses = "btn btn-outline-primary btn-sm ctl-calendar-action-reload";
36816    if (oNodeCalendar.attr("data-reload") !== "1") {
36817        szReloadCloasses += " d-none";
36818    }
36819
36820    html += '<button type="button" class="' + szReloadCloasses + '">';
36821    html += '<i class="ctl-wp-studio-icons-cw"></i>';
36822    html += '</button>';
36823
36824    if (oNodeCalendar.attr("data-multiple-selection") === "1") {
36825        html += '<button type="button" class="btn btn-outline-primary btn-sm ctl-calendar-action-open-multiple-selection" title="' + g_oCTLCalendarLocalizationFront["multiple selection"] + '">';
36826        html += '<i class="ctl-wp-studio-icons-th"></i>';
36827        html += '<span class="btn-text ml-1">' + g_oCTLCalendarLocalizationFront["multiple selection"] + '</span>';
36828        html += '</button>';
36829    }
36830
36831    html += '<button type="button" class="btn btn-outline-primary btn-sm ctl-calendar-action-next">';
36832    html += '<i class="ctl-wp-studio-icons-right-open-1"></i>';
36833    html += '</button>';
36834    html += '</div>';
36835
36836
36837    html += '<div class="row justify-content-between">';
36838
36839    html += '<div class="order-1 order-sm-1 col col-auto input-group w-auto mb-2 pr-0 pr-sm-3">';
36840    html += '<div class="input-group-prepend ctl-calendar-action-view-mode-prepend">';
36841    html += '<div class="input-group-text">';
36842    html += '<i class="fa-solid fa-binoculars"></i>';
36843    html += '</div>';
36844    html += '</div>';
36845
36846    html += '<select data-allow-clear="false" data-search-input="false" data-width="auto" class="ctl-select2 form-control custom-select custom-select-sm ctl-calendar-action-view-mode">';
36847
36848    var aViews = JSON.parse(Base64.decode(oNodeCalendar.attr("data-views")));
36849
36850    for (var i = 0; i < aViews.length; i++) {
36851        switch (aViews[i]) {
36852            case "month": {
36853                html += '<option value="month" ' + (view == "month" ? 'selected="selected"' : '') + '>' + g_oCTLCalendarLocalizationFront["month"]
36854                    + '</option>';
36855            } break;
36856            case "week": {
36857                html += '<option value="week" ' + (view == "week" ? 'selected="selected"' : '') + '>' + g_oCTLCalendarLocalizationFront["week"] + '</option>';
36858            } break;
36859            case "day": {
36860                html += '<option value="day" ' + (view == "day" ? 'selected="selected"' : '') + '>' + g_oCTLCalendarLocalizationFront["day"] + '</option>';
36861            } break;
36862        }
36863    }
36864    html += '</select>';
36865    html += '</div>';
36866
36867    html += '<div class="order-3 order-sm-2 col col-12 col-sm-auto d-flex align-items-center mb-2 justify-content-center">';
36868    html += '<span class="ctl-calendar-current-date-label"></span>';
36869    html += '</div>';
36870
36871    let iMaxYear;
36872    html += '<div class="order-2 order-sm-3 col col-auto pl-0 pl-sm-3">';
36873    html += '<div class="select-group mb-2' +
36874        (oNodeCalendar.attr("data-date-control") == "calendar" ? " d-none" : "") + '">';
36875    html += '<select data-allow-clear="false" data-search-input="false" data-width="auto" class="ctl-select2 form-control custom-select custom-select-sm ctl-calendar-action-year d-none">';
36876    var iLoopYears = iCurrentYear + 2;
36877    iMaxYear = iLoopYears;
36878    for (var i = 0; i < 10; i++) {
36879        html += '<option value="' + iLoopYears + '"' +
36880            (iLoopYears === iCurrentYear ? ' selected' : '') + '>' +
36881            iLoopYears + '</option>';
36882        iLoopYears--;
36883    }
36884    html += '</select>';
36885    html += '<select data-allow-clear="false" data-search-input="false" data-width="auto" class="ctl-select2 form-control custom-select custom-select-sm ctl-calendar-action-month d-none">';
36886    for (var i = 1; i < 13; i++) {
36887        var oMonth = moment(i, "M");
36888        html += '<option value="' +
36889            oMonth.format("MM") + '"' + (oMonth.format("MM") == szCurrentMonth ? ' selected' : '') + '>
36889' +
36890            oMonth.locale(g_oCTLCalendarLocalizationFront["user_locale"]).format("MMMM") + '</option>';
36891    }
36892    html += '</select>';
36893    html += '<select data-allow-clear="false" data-search-input="false" data-width="auto" class="ctl-select2 form-control custom-select custom-select-sm ctl-calendar-action-day d-block">';
36894    for (var i = 1; i < 32; i++) {
36895        var szDay = sprintf("%02d", i);
36896        html += '<option value="' + szDay +
36897            '"' + (szDay == szCurrentDay ? ' selected' : '') + '>' + szDay + '</option>';
36898    }
36899    html += '</select>';
36900    html += '</div>';
36901
36902
36903    if (oNodeCalendar.attr("data-date-control") == "calendar") {
36904        html += formFieldsBuildCalendarDateField({
36905            "class": "ctl-calendar-action-date-field",
36906            "field-name": "ctl-calendar-date",
36907            "form-group-classes": "mb-0 ctl-calendar-action-date-field-wrapper",
36908            "data-logic-attr": ' data-prev-date="' + oMoment.format("YYYY-MM-DD") + '"',
36909            "max-date": iMaxYear + '-12-31',
36910        }, oMoment.format("YYYY-MM-DD"));
36911    }
36912    html += '</div>';
36913
36914    html += '</div>';
36915
36916    html += '</div>';
36917
36918    if (oNodeCalendar.attr("data-multiple-selection") === "1") {
36919        html += '<div class="ctl-calendar-multiple-selection-controls d-flex">';
36920
36921        if (oNodeCalendar.attr("data-create-modal-id") || oNodeCalendar.attr("data-edit-modal-id")) {
36922            html += '<div class="btn-group" role="group" aria-label="">';
36923            if (oNodeCalendar.attr("data-create-modal-id")) {
36924                html += '<button type="button" class="btn mb-2 btn-outline-primary btn-sm ctl-calendar-action-multiple-new ctl-calendar-multiple-selection-btn d-none">';
36925                html += '<i class="ctl-wp-studio-icons-plus"></i>';
36926                html += '</button>';
36927            }
36928
36929            if (oNodeCalendar.attr("data-edit-modal-id")) {
36930                html += '<button type="button" class="btn mb-2 btn-outline-primary btn-sm ctl-calendar-action-multiple-edit ctl-calendar-multiple-selection-btn d-none">';
36931                html += '<i class="ctl-wp-studio-icons-pencil"></i>';
36932                html += '</button>';
36933            }
36934            html += '</div>';
36935        }
36936
36937        html += '<button type="button" class="btn btn-outline-primary btn-sm mb-2 ml-2 ctl-calendar-action-select-all ctl-calendar-multiple-selection-btn d-none">';
36938        html += '<span class="btn-text">' + g_oCTLCalendarLocalizationFront["select this month"] + '</span>';
36939        html += '</button>';
36940
36941        html += '<button type="button" class="btn btn-outline-primary btn-sm mb-2 ml-2 ctl-calendar-action-close-multiple-selection ctl-calendar-multiple-selection-btn d-none">';
36942        html += '<span class="btn-text">' + g_oCTLCalendarLocalizationFront["cancel selection"] + '</span>';
36943        html += '</button>';
36944        html += '</div>';
36945    }
36946
36947    html += '</div>';
36948
36949
36950    if (oNodeCalendar.attr("data-editor-filter") === "0") {
36951        html += '<div class="ctl-calendar-content"></div>';
36952    } else {
36953        html += '<div class="row">';
36954        html += '<div class="order-1 order-md-2 col col-12 col-md-3 col-lg-3 col-xl-2 pl-lg-0 pl-md-0 mb-3">';
36955        html += '<div class="ctl-calendar-filter-users container-fluid border p-2 h-100">';
36956        html += '<h3 class="mb-3">' + Base64.decode(oNodeCalendar.attr("data-label-filter-editors")) + '</h3>';
36957        html += '<div class="row"></div>';
36958        html += '</div>';
36959        html += '</div>';
36960
36961        html += '<div class="order-2 order-md-1 col col-12 col-md-9 col-lg-9 col-xl-10 mb-3">';
36962        html += '<div class="ctl-calendar-content"></div>';
36963        html += '</div>';
36964        html += '</div>';
36965    }
36966
36967    oNodeContainer.html(html);
36968
36969    ctlApplySelect2();
36970    ctlApplyDateTimePicker();
36971
36972    switch (view) {
36973        case "month": {
36974            ctlCalendarShowMonthDetail(oNodeCalendar, oMoment);
36975        } break;
36976        case "week": {
36977            ctlCalendarShowWeekDetail(oNodeCalendar, oMoment, 7, {});
36978        } break;
36979        case "day": {
36980            ctlCalendarShowWeekDetail(oNodeCalendar, oMoment, 1, oDayItems);
36981        } break;
36982    }
36983
36984}
36985
36986function ctlCalendarShowMonthDetail(oNodeCalendarWidget, oMoment) {
36987    var aHideWeekDays = JSON.parse(Base64.decode(oNodeCalendarWidget.attr("data-hide-week-days")));
36988    var oNodeCalendarContent = oNodeCalendarWidget.find(".ctl-calendar-content");
36989
36990    var iWeekStart = parseInt(oNodeCalendarWidget.attr("data-week-start"));
36991    var aWeekDays = [];
36992
36993    oNodeCalendarWidget[0]["offset-date"] = oMoment;
36994
36995    var iCurrentWeekDay = oMoment.format("d");
36996
36997    var k = 0;
36998    for (var i = iCurrentWeekDay; i > (-1 + iWeekStart); i--) {
36999        var oTmpMoment = oMoment.clone();
37000        aWeekDays.push(
37001            {
37002                "ddd": oTmpMoment.subtract(k, 'days').format("ddd"),
37003                "weekday": oTmpMoment.day()
37004            });
37005        k++;
37006    }
37007    aWeekDays.reverse();
37008
37009    var k = 0;
37010    for (var i = iCurrentWeekDay; i < (6 + iWeekStart); i++) {
37011        var oTmpMoment = oMoment.clone();
37012        k++;
37013        aWeekDays.push({
37014            "ddd": oTmpMoment.add(k, 'days').format("ddd"),
37015            "weekday": oTmpMoment.day()
37016        });
37017    }
37018
37019    let html = "";
37020    html += '<div class="ctl-calendar-month-header">';
37021    html += '<div class="row">';
37022    for (var i = 0; i < aWeekDays.length; i++) {
37023
37024        if (aHideWeekDays.includes(aWeekDays[i]["weekday"])) {
37025            continue;
37026        }
37027
37028        html += '<div class="col';
37029        html += '">';
37030        html += '<div class="ctl-calendar-cell">';
37031        html += '<h3>' + aWeekDays[i]["ddd"] + '</h3>';
37032        html += '</div>';
37033        html += '</div>';
37034    }
37035    html += '</div>';
37036    html += '</div>';
37037
37038
37039    html += '<div class="ctl-calendar-month-body">';
37040
37041    html += '</div>';
37042
37043    oNodeCalendarContent.html(html);
37044}
37045
37046function __ctlCalendarVisibleHoursScrollLimitedView(oNodeCalendarWidget, iHours, iVisibleHoursScroll) {
37047
37048    var oNodeCalendarContent = oNodeCalendarWidget.find(".ctl-calendar-content");
37049
37050    if (iHours > 0) {
37051        //var iVisibleHoursScroll = 10;
37052        if (iVisibleHoursScroll > 0) {
37053            var oHeader = oNodeCalendarContent.find(".ctl-calendar-week-header");
37054            var oBody = oNodeCalendarContent.find(".ctl-calendar-week-body");
37055
37056            var oBodyHours = oNodeCalendarContent.find(".ctl-calendar-hours-container")
37057            var iN = iVisibleHoursScroll;
37058            var iTotalHeight = 0;
37059
37060            oBodyHours.find(".ctl-calendar-row:not(.ctl-calendar-row-full-day)").slice(0, iN).each(function () {
37061                iTotalHeight += jQuery(this).outerHeight(true);
37062            });
37063            var iRowHeight = oBody.find(".ctl-calendar-row:not(.ctl-calendar-row-full-day)").first().outerHeight(true) || 40;
37064
37065            var iMaxHeight = iTotalHeight;//iRowHeight * iVisibleHoursScroll;
37066
37067            // avoid too much limit if few hours are visible.
37068            if ( iMaxHeight < 20*24){
37069                iMaxHeight = 20*24;     
37070            }
37071
37072            //css dinamico. 
37073            oBodyHours.css({
37074                "max-height": iMaxHeight + "px",
37075                "overflow-y": "auto" //
37076            });
37077
37078
37079            //after edit 
37080            var oBody = oNodeCalendarContent.find(".ctl-calendar-week-body");
37081
37082            var iScrollHour = iHours;
37083            var iRowIndex = 0;
37084            oBodyHours.find(".ctl-calendar-row:not(.ctl-calendar-row-full-day)").each(function () {
37085                if (jQuery(this).find(".ctl-calendar-day-item").length > 0) {
37086                    iScrollHour = iRowIndex > iHours ? iHours : iRowIndex;
37087                    return false; // stop al primo trovato
37088                }
37089                iRowIndex++;
37090            });
37091
37092            var iItemStart = iRowHeight * iScrollHour;
37093            oBodyHours.scrollTop(iItemStart);
37094            var iScrollbarWidth = oBodyHours[0].offsetWidth - oBodyHours[0].clientWidth;
37095            oHeader.css("padding-right", iScrollbarWidth + "px");
37096            oBody.find(".ctl-calendar-row-full-day").css("padding-right", iScrollbarWidth + "px");
37097        }
37098    }
37099
37100}
37101// file: /var/www/vhosts/codethislab.com/httpdocs/wp-content/plugins/ctl-wp-studio/classes/extensions/ctl-chart-js/php/../4.5.1/js/chart.min.js
vendor: 208,511 bytes, lines 37102-37115
37102/*!
37103 * Chart.js v4.5.1
37104 * https://www.chartjs.org
37105 * (c) 2025 Chart.js Contributors
37106 * Released under the MIT License
37107 */
37108!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).Chart=e()}(this,(function(){"use strict";var t=Object.freeze({__proto__:null,get Colors(){return Jo},get Decimation(){return ta},get Filler(){return ba},get Legend(){return Ma},get SubTitle(){return Pa},get Title(){return ka},get Tooltip(){return Na}});function e(){}const i=(()=>{let t=0;return()=>t++})();function s(t){return null==t}function n(t){if(Array.isArray&&Array.isArray(t))return!0;const e=Object.prototype.toString.call(t);return"[object"===e.slice(0,7)&&"Array]"===e.slice(-6)}function o(t){return null!==t&&"[object Object]"===Object.prototype.toString.call(t)}function a(t){return("number"==typeof t||t instanceof Number)&&isFinite(+t)}function r(t,e){return a(t)?t:e}function l(t,e){return void 0===t?e:t}const h=(t,e)=>"string"==typeof t&&t.endsWith("%")?parseFloat(t)/100:+t/e,c=(t,e)=>"string"==typeof t&&t.endsWith("%")?parseFloat(t)/100*e:+t;function d(t,e,i){if(t&&"function"==typeof t.call)return t.apply(i,e)}function u(t,e,i,s){let a,r,l;if(n(t))if(r=t.length,s)for(a=r-1;a>=0;a--)e.call(i,t[a],a);else for(a=0;a<r;a++)e.call(i,t[a],a);else if(o(t))for(l=Object.keys(t),r=l.length,a=0;a<r;a++)e.call(i,t[l[a]],l[a])}function f(t,e){let i,s,n,o;if(!t||!e||t.length!==e.length)return!1;for(i=0,s=t.length;i<s;++i)if(n=t[i],o=e[i],n.datasetIndex!==o.datasetIndex||n.index!==o.index)return!1;return!0}function g(t){if(n(t))return t.map(g);if(o(t)){const e=Object.create(null),i=Object.keys(t),s=i.length;let n=0;for(;n<s;++n)e[i[n]]=g(t[i[n]]);return e}return t}function p(t){return-1===["__proto__","prototype","constructor"].indexOf(t)}function m(t,e,i,s){if(!p(t))return;const n=e[t],a=i[t];o(n)&&o(a)?x(n,a,s):e[t]=g(a)}function x(t,e,i){const s=n(e)?e:[e],a=s.length;if(!o(t))return t;const r=(i=i||{}).merger||m;let l;for(let e=0;e<a;++e){if(l=s[e],!o(l))continue;const n=Object.keys(l);for(let e=0,s=n.length;e<s;++e)r(n[e],t,l,i)}return t}function b(t,e){return x(t,e,{merger:_})}function _(t,e,i){if(!p(t))return;const s=e[t],n=i[t];o(s)&&o(n)?b(s,n):Object.prototype.hasOwnProperty.call(e,t)||(e[t]=g(n))}const y={"":t=>t,x:t=>t.x,y:t=>t.y};function v(t){const e=t.split("."),i=[];let s="";for(const t of e)s+=t,s.endsWith("\\")?s=s.slice(0,-1)+".":(i.push(s),s="");return i}function M(t,e){const i=y[e]||(y[e]=function(t){const e=v(t);return t=>{for(const i of e){if(""===i)break;t=t&&t[i]}return t}}(e));return i(t)}function w(t){return t.charAt(0).toUpperCase()+t.slice(1)}const k=t=>void 0!==t,S=t=>"function"==typeof t,P=(t,e)=>{if(t.size!==e.size)return!1;for(const i of t)if(!e.has(i))return!1;return!0};function D(t){return"mouseup"===t.type||"click"===t.type||"contextmenu"===t.type}const C=Math.PI,O=2*C,A=O+C,T=Number.POSITIVE_INFINITY,L=C/180,E=C/2,R=C/4,I=2*C/3,z=Math.log10,F=Math.sign;function V(t,e,i){return Math.abs(t-e)<i}function B(t){const e=Math.round(t);t=V(t,e,t/1e3)?e:t;const i=Math.pow(10,Math.floor(z(t))),s=t/i;return(s<=1?1:s<=2?2:s<=5?5:10)*i}function W(t){const e=[],i=Math.sqrt(t);let s;for(s=1;s<i;s++)t%s==0&&(e.push(s),e.push(t/s));return i===(0|i)&&e.push(i),e.sort(((t,e)=>t-e)).pop(),e}function N(t){return!function(t){return"symbol"==typeof t||"object"==typeof t&&null!==t&&!(Symbol.toPrimitive in t||"toString"in t||"valueOf"in t)}(t)&&!isNaN(parseFloat(t))&&isFinite(t)}function H(t,e){const i=Math.round(t);return i-e<=t&&i+e>=t}function j(t,e,i){let s,n,o;for(s=0,n=t.length;s<n;s++)o=t[s][i],isNaN(o)||(e.min=Math.min(e.min,o),e.max=Math.max(e.max,o))}function $(t){return t*(C/180)}function Y(t){return t*(180/C)}function U(t){if(!a(t))return;let e=1,i=0;for(;Math.round(t*e)/e!==t;)e*=10,i++;return i}function X(t,e){const i=e.x-t.x,s=e.y-t.y,n=Math.sqrt(i*i+s*s);let o=Math.atan2(s,i);return o<-.5*C&&(o+=O),{angle:o,distance:n}}function q(t,e){return Math.sqrt(Math.pow(e.x-t.x,2)+Math.pow(e.y-t.y,2))}function K(t,e){return(t-e+A)%O-C}function G(t){return(t%O+O)%O}function J(t,e,i,s){const n=G(t),o=G(e),a=G(i),r=G(o-n),l=G(a-n),h=G(n-o),c=G(n-a);return n===o||n===a||s&&o===a||r>l&&h<c}function Z(t,e,i){return Math.max(e,Math.min(i,t))}function Q(t){return Z(t,-32768,32767)}function tt(t,e,i,s=1e-6){return t>=Math.min(e,i)-s&&t<=Math.max(e,i)+s}function et(t,e,i){i=i||(i=>t[i]<e);let s,n=t.length-1,o=0;for(;n-o>1;)s=o+n>>1,i(s)?o=s:n=s;return{lo:o,hi:n}}const it=(t,e,i,s)=>et(t,i,s?s=>{const n=t[s][e];return n<i||n===i&&t[s+1][e]===i}:s=>t[s][e]<i),st=(t,e,i)=>et(t,i,(s=>t[s][e]>=i));function nt(t,e,i){let s=0,n=t.length;for(;s<n&&t[s]<e;)s++;for(;n>s&&t[n-1]>i;)n--;return s>0||n<t.length?t.slice(s,n):t}const ot=["push","pop","shift","splice","unshift"];function at(t,e){t._chartjs?t._chartjs.listeners.push(e):(Object.defineProperty(t,"_chartjs",{configurable:!0,enumerable:!1,value:{listeners:[e]}}),ot.forEach((e=>{const i="_onData"+w(e),s=t[e];Object.defineProperty(t,e,{configurable:!0,enumerable:!1,value(...e){const n=s.apply(this,e);return t._chartjs.listeners.forEach((t=>{"function"==typeof t[i]&&t[i](...e)})),n}})})))}function rt(t,e){const i=t._chartjs;if(!i)return;const s=i.listeners,n=s.indexOf(e);-1!==n&&s.splice(n,1),s.length>0||(ot.forEach((e=>{delete t[e]})),delete t._chartjs)}function lt(t){const e=new Set(t);return e.size===t.length?t:Array.from(e)}const ht="undefined"==typeof window?function(t){return t()}:window.requestAnimationFrame;function ct(t,e){let i=[],s=!1;return function(...n){i=n,s||(s=!0,ht.call(window,(()=>{s=!1,t.apply(e,i)})))}}function dt(t,e){let i;return function(...s){return e?(clearTimeout(i),i=setTimeout(t,e,s)):t.apply(this,s),e}}const ut=t=>"start"===t?"left":"end"===t?"right":"center",ft=(t,e,i)=>"start"===t?e:"end"===t?i:(e+i)/2,gt=(t,e,i,s)=>t===(s?"left":"right")?i:"center"===t?(e+i)/2:e;function pt(t,e,i){const n=e.length;let o=0,a=n;if(t._sorted){const{iScale:r,vScale:l,_parsed:h}=t,c=t.dataset&&t.dataset.options?t.dataset.options.spanGaps:null,d=r.axis,{min:u,max:f,minDefined:g,maxDefined:p}=r.getUserBounds();if(g){if(o=Math.min(it(h,d,u).lo,i?n:it(e,d,r.getPixelForValue(u)).lo),c){const t=h.slice(0,o+1).reverse().findIndex((t=>!s(t[l.axis])));o-=Math.max(0,t)}o=Z(o,0,n-1)}if(p){let t=Math.max(it(h,r.axis,f,!0).hi+1,i?0:it(e,d,r.getPixelForValue(f),!0).hi+1);if(c){const e=h.slice(t-1).findIndex((t=>!s(t[l.axis])));t+=Math.max(0,e)}a=Z(t,o,n)-o}else a=n-o}return{start:o,count:a}}function mt(t){const{xScale:e,yScale:i,_scaleRanges:s}=t,n={xmin:e.min,xmax:e.max,ymin:i.min,ymax:i.max};if(!s)return t._scaleRanges=n,!0;const o=s.xmin!==e.min||s.xmax!==e.max||s.ymin!==i.min||s.ymax!==i.max;return Object.assign(s,n),o}class xt{constructor(){this._request=null,this._charts=new Map,this._running=!1,this._lastDate=void 0}_notify(t,e,i,s){const n=e.listeners[s],o=e.duration;n.forEach((s=>s({chart:t,initial:e.initial,numSteps:o,currentStep:Math.min(i-e.start,o)})))}_refresh(){this._request||(this._running=!0,this._request=ht.call(window,(()=>{this._update(),this._request=null,this._running&&this._refresh()})))}_update(t=Date.now()){let e=0;this._charts.forEach(((i,s)=>{if(!i.running||!i.items.length)return;const n=i.items;let o,a=n.length-1,r=!1;for(;a>=0;--a)o=n[a],o._active?(o._total>i.duration&&(i.duration=o._total),o.tick(t),r=!0):(n[a]=n[n.length-1],n.pop());r&&(s.draw(),this._notify(s,i,t,"progress")),n.length||(i.running=!1,this._notify(s,i,t,"complete"),i.initial=!1),e+=n.length})),this._lastDate=t,0===e&&(this._running=!1)}_getAnims(t){const e=this._charts;let i=e.get(t);return i||(i={running:!1,initial:!0,items:[],listeners:{complete:[],progress:[]}},e.set(t,i)),i}listen(t,e,i){this._getAnims(t).listeners[e].push(i)}add(t,e){e&&e.length&&this._getAnims(t).items.push(...e)}has(t){return this._getAnims(t).items.length>0}start(t){const e=this._charts.get(t);e&&(e.running=!0,e.start=Date.now(),e.duration=e.items.reduce(((t,e)=>Math.max(t,e._duration)),0),this._refresh())}running(t){if(!this._running)return!1;const e=this._charts.get(t);return!!(e&&e.running&&e.items.length)}stop(t){const e=this._charts.get(t);if(!e||!e.items.length)return;const i=e.items;let s=i.length-1;for(;s>=0;--s)i[s].cancel();e.items=[],this._notify(t,e,Date.now(),"complete")}remove(t){return this._charts.delete(t)}}var bt=new xt;
37109/*!
37110 * @kurkle/color v0.3.2
37111 * https://github.com/kurkle/color#readme
37112 * (c) 2023 Jukka Kurkela
37113 * Released under the MIT License
37114 */function _t(t){return t+.5|0}const yt=(t,e,i)=>Math.max(Math.min(t,i),e);function vt(t){return yt(_t(2.55*t),0,255)}function Mt(t){return yt(_t(255*t),0,255)}function wt(t){return yt(_t(t/2.55)/100,0,1)}function kt(t){return yt(_t(100*t),0,100)}const St={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,A:10,B:11,C:12,D:13,E:14,F:15,a:10,b:11,c:12,d:13,e:14,f:15},Pt=[..."0123456789ABCDEF"],Dt=t=>Pt[15&t],Ct=t=>Pt[(240&t)>>4]+Pt[15&t],Ot=t=>(240&t)>>4==(15&t);function At(t){var e=(t=>Ot(t.r)&&Ot(t.g)&&Ot(t.b)&&Ot(t.a))(t)?Dt:Ct;return t?"#"+e(t.r)+e(t.g)+e(t.b)+((t,e)=>t<255?e(t):"")(t.a,e):void 0}const Tt=/^(hsla?|hwb|hsv)\(\s*([-+.e\d]+)(?:deg)?[\s,]+([-+.e\d]+)%[\s,]+([-+.e\d]+)%(?:[\s,]+([-+.e\d]+)(%)?)?\s*\)$/;function Lt(t,e,i){const s=e*Math.min(i,1-i),n=(e,n=(e+t/30)%12)=>i-s*Math.max(Math.min(n-3,9-n,1),-1);return[n(0),n(8),n(4)]}function Et(t,e,i){const s=(s,n=(s+t/60)%6)=>i-i*e*Math.max(Math.min(n,4-n,1),0);return[s(5),s(3),s(1)]}function Rt(t,e,i){const s=Lt(t,1,.5);let n;for(e+i>1&&(n=1/(e+i),e*=n,i*=n),n=0;n<3;n++)s[n]*=1-e-i,s[n]+=e;return s}function It(t){const e=t.r/255,i=t.g/255,s=t.b/255,n=Math.max(e,i,s),o=Math.min(e,i,s),a=(n+o)/2;let r,l,h;return n!==o&&(h=n-o,l=a>.5?h/(2-n-o):h/(n+o),r=function(t,e,i,s,n){return t===n?(e-i)/s+(e<i?6:0):e===n?(i-t)/s+2:(t-e)/s+4}(e,i,s,h,n),r=60*r+.5),[0|r,l||0,a]}function zt(t,e,i,s){return(Array.isArray(e)?t(e[0],e[1],e[2]):t(e,i,s)).map(Mt)}function Ft(t,e,i){return zt(Lt,t,e,i)}function Vt(t){return(t%360+360)%360}function Bt(t){const e=Tt.exec(t);let i,s=255;if(!e)return;e[5]!==i&&(s=e[6]?vt(+e[5]):Mt(+e[5]));const n=Vt(+e[2]),o=+e[3]/100,a=+e[4]/100;return i="hwb"===e[1]?function(t,e,i){return zt(Rt,t,e,i)}(n,o,a):"hsv"===e[1]?function(t,e,i){return zt(Et,t,e,i)}(n,o,a):Ft(n,o,a),{r:i[0],g:i[1],b:i[2],a:s}}const Wt={x:"dark",Z:"light",Y:"re",X:"blu",W:"gr",V:"medium",U:"slate",A:"ee",T:"ol",S:"or",B:"ra",C:"lateg",D:"ights",R:"in",Q:"turquois",E:"hi",P:"ro",O:"al",N:"le",M:"de",L:"yello",F:"en",K:"ch",G:"arks",H:"ea",I:"ightg",J:"wh"},Nt={OiceXe:"f0f8ff",antiquewEte:"faebd7",aqua:"ffff",aquamarRe:"7fffd4",azuY:"f0ffff",beige:"f5f5dc",bisque:"ffe4c4",black:"0",blanKedOmond:"ffebcd",Xe:"ff",XeviTet:"8a2be2",bPwn:"a52a2a",burlywood:"deb887",caMtXe:"5f9ea0",KartYuse:"7fff00",KocTate:"d2691e",cSO:"ff7f50",cSnflowerXe:"6495ed",cSnsilk:"fff8dc",crimson:"dc143c",cyan:"ffff",xXe:"8b",xcyan:"8b8b",xgTMnPd:"b8860b",xWay:"a9a9a9",xgYF:"6400",xgYy:"a9a9a9",xkhaki:"bdb76b",xmagFta:"8b008b",xTivegYF:"556b2f",xSange:"ff8c00",xScEd:"9932cc",xYd:"8b0000",xsOmon:"e9967a",xsHgYF:"8fbc8f",xUXe:"483d8b",xUWay:"2f4f4f",xUgYy:"2f4f4f",xQe:"ced1",xviTet:"9400d3",dAppRk:"ff1493",dApskyXe:"bfff",dimWay:"696969",dimgYy:"696969",dodgerXe:"1e90ff",fiYbrick:"b22222",flSOwEte:"fffaf0",foYstWAn:"228b22",fuKsia:"ff00ff",gaRsbSo:"dcdcdc",ghostwEte:"f8f8ff",gTd:"ffd700",gTMnPd:"daa520",Way:"808080",gYF:"8000",gYFLw:"adff2f",gYy:"808080",honeyMw:"f0fff0",hotpRk:"ff69b4",RdianYd:"cd5c5c",Rdigo:"4b0082",ivSy:"fffff0",khaki:"f0e68c",lavFMr:"e6e6fa",lavFMrXsh:"fff0f5",lawngYF:"7cfc00",NmoncEffon:"fffacd",ZXe:"add8e6",ZcSO:"f08080",Zcyan:"e0ffff",ZgTMnPdLw:"fafad2",ZWay:"d3d3d3",ZgYF:"90ee90",ZgYy:"d3d3d3",ZpRk:"ffb6c1",ZsOmon:"ffa07a",ZsHgYF:"20b2aa",ZskyXe:"87cefa",ZUWay:"778899",ZUgYy:"778899",ZstAlXe:"b0c4de",ZLw:"ffffe0",lime:"ff00",limegYF:"32cd32",lRF:"faf0e6",magFta:"ff00ff",maPon:"800000",VaquamarRe:"66cdaa",VXe:"cd",VScEd:"ba55d3",VpurpN:"9370db",VsHgYF:"3cb371",VUXe:"7b68ee",VsprRggYF:"fa9a",VQe:"48d1cc",VviTetYd:"c71585",midnightXe:"191970",mRtcYam:"f5fffa",mistyPse:"ffe4e1",moccasR:"ffe4b5",navajowEte:"ffdead",navy:"80",Tdlace:"fdf5e6",Tive:"808000",TivedBb:"6b8e23",Sange:"ffa500",SangeYd:"ff4500",ScEd:"da70d6",pOegTMnPd:"eee8aa",pOegYF:"98fb98",pOeQe:"afeeee",pOeviTetYd:"db7093",papayawEp:"ffefd5",pHKpuff:"ffdab9",peru:"cd853f",pRk:"ffc0cb",plum:"dda0dd",powMrXe:"b0e0e6",purpN:"800080",YbeccapurpN:"663399",Yd:"ff0000",Psybrown:"bc8f8f",PyOXe:"4169e1",saddNbPwn:"8b4513",sOmon:"fa8072",sandybPwn:"f4a460",sHgYF:"2e8b57",sHshell:"fff5ee",siFna:"a0522d",silver:"c0c0c0",skyXe:"87ceeb",UXe:"6a5acd",UWay:"708090",UgYy:"708090",snow:"fffafa",sprRggYF:"ff7f",stAlXe:"4682b4",tan:"d2b48c",teO:"8080",tEstN:"d8bfd8",tomato:"ff6347",Qe:"40e0d0",viTet:"ee82ee",JHt:"f5deb3",wEte:"ffffff",wEtesmoke:"f5f5f5",Lw:"ffff00",LwgYF:"9acd32"};let Ht;function jt(t){Ht||(Ht=function(){const t={},e=Object.keys(Nt),i=Object.keys(Wt);let s,n,o,a,r;for(s=0;s<e.length;s++){for(a=r=e[s],n=0;n<i.length;n++)o=i[n],r=r.replace(o,Wt[o]);o=parseInt(Nt[a],16),t[r]=[o>>16&255,o>>8&255,255&o]}return t}(),Ht.transparent=[0,0,0,0]);const e=Ht[t.toLowerCase()];return e&&{r:e[0],g:e[1],b:e[2],a:4===e.length?e[3]:255}}const $t=/^rgba?\(\s*([-+.\d]+)(%)?[\s,]+([-+.e\d]+)(%)?[\s,]+([-+.e\d]+)(%)?(?:[\s,/]+([-+.e\d]+)(%)?)?\s*\)$/;const Yt=t=>t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055,Ut=t=>t<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4);function Xt(t,e,i){if(t){let s=It(t);s[e]=Math.max(0,Math.min(s[e]+s[e]*i,0===e?360:1)),s=Ft(s),t.r=s[0],t.g=s[1],t.b=s[2]}}function qt(t,e){return t?Object.assign(e||{},t):t}function Kt(t){var e={r:0,g:0,b:0,a:255};return Array.isArray(t)?t.length>=3&&(e={r:t[0],g:t[1],b:t[2],a:255},t.length>3&&(e.a=Mt(t[3]))):(e=qt(t,{r:0,g:0,b:0,a:1})).a=Mt(e.a),e}function Gt(t){return"r"===t.charAt(0)?function(t){const e=$t.exec(t);let i,s,n,o=255;if(e){if(e[7]!==i){const t=+e[7];o=e[8]?vt(t):yt(255*t,0,255)}return i=+e[1],s=+e[3],n=+e[5],i=255&(e[2]?vt(i):yt(i,0,255)),s=255&(e[4]?vt(s):yt(s,0,255)),n=255&(e[6]?vt(n):yt(n,0,255)),{r:i,g:s,b:n,a:o}}}(t):Bt(t)}class Jt{constructor(t){if(t instanceof Jt)return t;const e=typeof t;let i;var s,n,o;"object"===e?i=Kt(t):"string"===e&&(o=(s=t).length,"#"===s[0]&&(4===o||5===o?n={r:255&17*St[s[1]],g:255&17*St[s[2]],b:255&17*St[s[3]],a:5===o?17*St[s[4]]:255}:7!==o&&9!==o||(n={r:St[s[1]]<<4|St[s[2]],g:St[s[3]]<<4|St[s[4]],b:St[s[5]]<<4|St[s[6]],a:9===o?St[s[7]]<<4|St[s[8]]:255})),i=n||jt(t)||Gt(t)),this._rgb=i,this._valid=!!i}get valid(){return this._valid}get rgb(){var t=qt(this._rgb);return t&&(t.a=wt(t.a)),t}set rgb(t){this._rgb=Kt(t)}rgbString(){return this._valid?(t=this._rgb)&&(t.a<255?`rgba(${t.r}, ${t.g}, ${t.b}, ${wt(t.a)})`:`rgb(${t.r}, ${t.g}, ${t.b})`):void 0;var t}hexString(){return this._valid?At(this._rgb):void 0}hslString(){return this._valid?function(t){if(!t)return;const e=It(t),i=e[0],s=kt(e[1]),n=kt(e[2]);return t.a<255?`hsla(${i}, ${s}%, ${n}%, ${wt(t.a)})`:`hsl(${i}, ${s}%, ${n}%)`}(this._rgb):void 0}mix(t,e){if(t){const i=this.rgb,s=t.rgb;let n;const o=e===n?.5:e,a=2*o-1,r=i.a-s.a,l=((a*r==-1?a:(a+r)/(1+a*r))+1)/2;n=1-l,i.r=255&l*i.r+n*s.r+.5,i.g=255&l*i.g+n*s.g+.5,i.b=255&l*i.b+n*s.b+.5,i.a=o*i.a+(1-o)*s.a,this.rgb=i}return this}interpolate(t,e){return t&&(this._rgb=function(t,e,i){const s=Ut(wt(t.r)),n=Ut(wt(t.g)),o=Ut(wt(t.b));return{r:Mt(Yt(s+i*(Ut(wt(e.r))-s))),g:Mt(Yt(n+i*(Ut(wt(e.g))-n))),b:Mt(Yt(o+i*(Ut(wt(e.b))-o))),a:t.a+i*(e.a-t.a)}}(this._rgb,t._rgb,e)),this}clone(){return new Jt(this.rgb)}alpha(t){return this._rgb.a=Mt(t),this}clearer(t){return this._rgb.a*=1-t,this}greyscale(){const t=this._rgb,e=_t(.3*t.r+.59*t.g+.11*t.b);return t.r=t.g=t.b=e,this}opaquer(t){return this._rgb.a*=1+t,this}negate(){const t=this._rgb;return t.r=255-t.r,t.g=255-t.g,t.b=255-t.b,this}lighten(t){return Xt(this._rgb,2,t),this}darken(t){return Xt(this._rgb,2,-t),this}saturate(t){return Xt(this._rgb,1,t),this}desaturate(t){return Xt(this._rgb,1,-t),this}rotate(t){return function(t,e){var i=It(t);i[0]=Vt(i[0]+e),i=Ft(i),t.r=i[0],t.g=i[1],t.b=i[2]}(this._rgb,t),this}}function Zt(t){if(t&&"object"==typeof t){const e=t.toString();return"[object CanvasPattern]"===e||"[object CanvasGradient]"===e}return!1}function Qt(t){return Zt(t)?t:new Jt(t)}function te(t){return Zt(t)?t:new Jt(t).saturate(.5).darken(.1).hexString()}const ee=["x","y","borderWidth","radius","tension"],ie=["color","borderColor","backgroundColor"];const se=new Map;function ne(t,e,i){return function(t,e){e=e||{};const i=t+JSON.stringify(e);let s=se.get(i);return s||(s=new Intl.NumberFormat(t,e),se.set(i,s)),s}(e,i).format(t)}const oe={values:t=>n(t)?t:""+t,numeric(t,e,i){if(0===t)return"0";const s=this.chart.options.locale;let n,o=t;if(i.length>1){const e=Math.max(Math.abs(i[0].value),Math.abs(i[i.length-1].value));(e<1e-4||e>1e15)&&(n="scientific"),o=function(t,e){let i=e.length>3?e[2].value-e[1].value:e[1].value-e[0].value;Math.abs(i)>=1&&t!==Math.floor(t)&&(i=t-Math.floor(t));return i}(t,i)}const a=z(Math.abs(o)),r=isNaN(a)?1:Math.max(Math.min(-1*Math.floor(a),20),0),l={notation:n,minimumFractionDigits:r,maximumFractionDigits:r};return Object.assign(l,this.options.ticks.format),ne(t,s,l)},logarithmic(t,e,i){if(0===t)return"0";const s=i[e].significand||t/Math.pow(10,Math.floor(z(t)));return[1,2,3,5,10,15].includes(s)||e>.8*i.length?oe.numeric.call(this,t,e,i):""}};var ae={formatters:oe};const re=Object.create(null),le=Object.create(null);function he(t,e){if(!e)return t;const i=e.split(".");for(let e=0,s=i.length;e<s;++e){const s=i[e];t=t[s]||(t[s]=Object.create(null))}return t}function ce(t,e,i){return"string"==typeof e?x(he(t,e),i):x(he(t,""),e)}class de{constructor(t,e){this.animation=void 0,this.backgroundColor="rgba(0,0,0,0.1)",this.borderColor="rgba(0,0,0,0.1)",this.color="#666",this.datasets={},this.devicePixelRatio=t=>t.chart.platform.getDevicePixelRatio(),this.elements={},this.events=["mousemove","mouseout","click","touchstart","touchmove"],this.font={family:"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif",size:12,style:"normal",lineHeight:1.2,weight:null},this.hover={},this.hoverBackgroundColor=(t,e)=>te(e.backgroundColor),this.hoverBorderColor=(t,e)=>te(e.borderColor),this.hoverColor=(t,e)=>te(e.color),this.indexAxis="x",this.interaction={mode:"nearest",intersect:!0,includeInvisible:!1},this.maintainAspectRatio=!0,this.onHover=null,this.onClick=null,this.parsing=!0,this.plugins={},this.responsive=!0,this.scale=void 0,this.scales={},this.showLine=!0,this.drawActiveElementsOnTop=!0,this.describe(t),this.apply(e)}set(t,e){return ce(this,t,e)}get(t){return he(this,t)}describe(t,e){return ce(le,t,e)}override(t,e){return ce(re,t,e)}route(t,e,i,s){const n=he(this,t),a=he(this,i),r="_"+e;Object.defineProperties(n,{[r]:{value:n[e],writable:!0},[e]:{enumerable:!0,get(){const t=this[r],e=a[s];return o(t)?Object.assign({},e,t):l(t,e)},set(t){this[r]=t}}})}apply(t){t.forEach((t=>t(this)))}}var ue=new de({_scriptable:t=>!t.startsWith("on"),_indexable:t=>"events"!==t,hover:{_fallback:"interaction"},interaction:{_scriptable:!1,_indexable:!1}},[function(t){t.set("animation",{delay:void 0,duration:1e3,easing:"easeOutQuart",fn:void 0,from:void 0,loop:void 0,to:void 0,type:void 0}),t.describe("animation",{_fallback:!1,_indexable:!1,_scriptable:t=>"onProgress"!==t&&"onComplete"!==t&&"fn"!==t}),t.set("animations",{colors:{type:"color",properties:ie},numbers:{type:"number",properties:ee}}),t.describe("animations",{_fallback:"animation"}),t.set("transitions",{active:{animation:{duration:400}},resize:{animation:{duration:0}},show:{animations:{colors:{from:"transparent"},visible:{type:"boolean",duration:0}}},hide:{animations:{colors:{to:"transparent"},visible:{type:"boolean",easing:"linear",fn:t=>0|t}}}})},function(t){t.set("layout",{autoPadding:!0,padding:{top:0,right:0,bottom:0,left:0}})},function(t){t.set("scale",{display:!0,offset:!1,reverse:!1,beginAtZero:!1,bounds:"ticks",clip:!0,grace:0,grid:{display:!0,lineWidth:1,drawOnChartArea:!0,drawTicks:!0,tickLength:8,tickWidth:(t,e)=>e.lineWidth,tickColor:(t,e)=>e.color,offset:!1},border:{display:!0,dash:[],dashOffset:0,width:1},title:{display:!1,text:"",padding:{top:4,bottom:4}},ticks:{minRotation:0,maxRotation:50,mirror:!1,textStrokeWidth:0,textStrokeColor:"",padding:3,display:!0,autoSkip:!0,autoSkipPadding:3,labelOffset:0,callback:ae.formatters.values,minor:{},major:{},align:"center",crossAlign:"near",showLabelBackdrop:!1,backdropColor:"rgba(255, 255, 255, 0.75)",backdropPadding:2}}),t.route("scale.ticks","color","","color"),t.route("scale.grid","color","","borderColor"),t.route("scale.border","color","","borderColor"),t.route("scale.title","color","","color"),t.describe("scale",{_fallback:!1,_scriptable:t=>!t.startsWith("before")&&!t.startsWith("after")&&"callback"!==t&&"parser"!==t,_indexable:t=>"borderDash"!==t&&"tickBorderDash"!==t&&"dash"!==t}),t.describe("scales",{_fallback:"scale"}),t.describe("scale.ticks",{_scriptable:t=>"backdropPadding"!==t&&"callback"!==t,_indexable:t=>"backdropPadding"!==t})}]);function fe(){return"undefined"!=typeof window&&"undefined"!=typeof document}function ge(t){let e=t.parentNode;return e&&"[object ShadowRoot]"===e.toString()&&(e=e.host),e}function pe(t,e,i){let s;return"string"==typeof t?(s=parseInt(t,10),-1!==t.indexOf("%")&&(s=s/100*e.parentNode[i])):s=t,s}const me=t=>t.ownerDocument.defaultView.getComputedStyle(t,null);function xe(t,e){return me(t).getPropertyValue(e)}const be=["top","right","bottom","left"];function _e(t,e,i){const s={};i=i?"-"+i:"";for(let n=0;n<4;n++){const o=be[n];s[o]=parseFloat(t[e+"-"+o+i])||0}return s.width=s.left+s.right,s.height=s.top+s.bottom,s}const ye=(t,e,i)=>(t>0||e>0)&&(!i||!i.shadowRoot);function ve(t,e){if("native"in t)return t;const{canvas:i,currentDevicePixelRatio:s}=e,n=me(i),o="border-box"===n.boxSizing,a=_e(n,"padding"),r=_e(n,"border","width"),{x:l,y:h,box:c}=function(t,e){const i=t.touches,s=i&&i.length?i[0]:t,{offsetX:n,offsetY:o}=s;let a,r,l=!1;if(ye(n,o,t.target))a=n,r=o;else{const t=e.getBoundingClientRect();a=s.clientX-t.left,r=s.clientY-t.top,l=!0}return{x:a,y:r,box:l}}(t,i),d=a.left+(c&&r.left),u=a.top+(c&&r.top);let{width:f,height:g}=e;return o&&(f-=a.width+r.width,g-=a.height+r.height),{x:Math.round((l-d)/f*i.width/s),y:Math.round((h-u)/g*i.height/s)}}const Me=t=>Math.round(10*t)/10;function we(t,e,i,s){const n=me(t),o=_e(n,"margin"),a=pe(n.maxWidth,t,"clientWidth")||T,r=pe(n.maxHeight,t,"clientHeight")||T,l=function(t,e,i){let s,n;if(void 0===e||void 0===i){const o=t&&ge(t);if(o){const t=o.getBoundingClientRect(),a=me(o),r=_e(a,"border","width"),l=_e(a,"padding");e=t.width-l.width-r.width,i=t.height-l.height-r.height,s=pe(a.maxWidth,o,"clientWidth"),n=pe(a.maxHeight,o,"clientHeight")}else e=t.clientWidth,i=t.clientHeight}return{width:e,height:i,maxWidth:s||T,maxHeight:n||T}}(t,e,i);let{width:h,height:c}=l;if("content-box"===n.boxSizing){const t=_e(n,"border","width"),e=_e(n,"padding");h-=e.width+t.width,c-=e.height+t.height}h=Math.max(0,h-o.width),c=Math.max(0,s?h/s:c-o.height),h=Me(Math.min(h,a,l.maxWidth)),c=Me(Math.min(c,r,l.maxHeight)),h&&!c&&(c=Me(h/2));return(void 0!==e||void 0!==i)&&s&&l.height&&c>l.height&&(c=l.height,h=Me(Math.floor(c*s))),{width:h,height:c}}function ke(t,e,i){const s=e||1,n=Me(t.height*s),o=Me(t.width*s);t.height=Me(t.height),t.width=Me(t.width);const a=t.canvas;return a.style&&(i||!a.style.height&&!a.style.width)&&(a.style.height=`${t.height}px`,a.style.width=`${t.width}px`),(t.currentDevicePixelRatio!==s||a.height!==n||a.width!==o)&&(t.currentDevicePixelRatio=s,a.height=n,a.width=o,t.ctx.setTransform(s,0,0,s,0,0),!0)}const Se=function(){let t=!1;try{const e={get passive(){return t=!0,!1}};fe()&&(window.addEventListener("test",null,e),window.removeEventListener("test",null,e))}catch(t){}return t}();function Pe(t,e){const i=xe(t,e),s=i&&i.match(/^(\d+)(\.\d+)?px$/);return s?+s[1]:void 0}function De(t){return!t||s(t.size)||s(t.family)?null:(t.style?t.style+" ":"")+(t.weight?t.weight+" ":"")+t.size+"px "+t.family}function Ce(t,e,i,s,n){let o=e[n];return o||(o=e[n]=t.measureText(n).width,i.push(n)),o>s&&(s=o),s}function Oe(t,e,i,s){let o=(s=s||{}).data=s.data||{},a=s.garbageCollect=s.garbageCollect||[];s.font!==e&&(o=s.data={},a=s.garbageCollect=[],s.font=e),t.save(),t.font=e;let r=0;const l=i.length;let h,c,d,u,f;for(h=0;h<l;h++)if(u=i[h],null==u||n(u)){if(n(u))for(c=0,d=u.length;c<d;c++)f=u[c],null==f||n(f)||(r=Ce(t,o,a,r,f))}else r=Ce(t,o,a,r,u);t.restore();const g=a.length/2;if(g>i.length){for(h=0;h<g;h++)delete o[a[h]];a.splice(0,g)}return r}function Ae(t,e,i){const s=t.currentDevicePixelRatio,n=0!==i?Math.max(i/2,.5):0;return Math.round((e-n)*s)/s+n}function Te(t,e){(e||t)&&((e=e||t.getContext("2d")).save(),e.resetTransform(),e.clearRect(0,0,t.width,t.height),e.restore())}function Le(t,e,i,s){Ee(t,e,i,s,null)}function Ee(t,e,i,s,n){let o,a,r,l,h,c,d,u;const f=e.pointStyle,g=e.rotation,p=e.radius;let m=(g||0)*L;if(f&&"object"==typeof f&&(o=f.toString(),"[object HTMLImageElement]"===o||"[object HTMLCanvasElement]"===o))return t.save(),t.translate(i,s),t.rotate(m),t.drawImage(f,-f.width/2,-f.height/2,f.width,f.height),void t.restore();if(!(isNaN(p)||p<=0)){switch(t.beginPath(),f){default:n?t.ellipse(i,s,n/2,p,0,0,O):t.arc(i,s,p,0,O),t.closePath();break;case"triangle":c=n?n/2:p,t.moveTo(i+Math.sin(m)*c,s-Math.cos(m)*p),m+=I,t.lineTo(i+Math.sin(m)*c,s-Math.cos(m)*p),m+=I,t.lineTo(i+Math.sin(m)*c,s-Math.cos(m)*p),t.closePath();break;case"rectRounded":h=.516*p,l=p-h,a=Math.cos(m+R)*l,d=Math.cos(m+R)*(n?n/2-h:l),r=Math.sin(m+R)*l,u=Math.sin(m+R)*(n?n/2-h:l),t.arc(i-d,s-r,h,m-C,m-E),t.arc(i+u,s-a,h,m-E,m),t.arc(i+d,s+r,h,m,m+E),t.arc(i-u,s+a,h,m+E,m+C),t.closePath();break;case"rect":if(!g){l=Math.SQRT1_2*p,c=n?n/2:l,t.rect(i-c,s-l,2*c,2*l);break}m+=R;case"rectRot":d=Math.cos(m)*(n?n/2:p),a=Math.cos(m)*p,r=Math.sin(m)*p,u=Math.sin(m)*(n?n/2:p),t.moveTo(i-d,s-r),t.lineTo(i+u,s-a),t.lineTo(i+d,s+r),t.lineTo(i-u,s+a),t.closePath();break;case"crossRot":m+=R;case"cross":d=Math.cos(m)*(n?n/2:p),a=Math.cos(m)*p,r=Math.sin(m)*p,u=Math.sin(m)*(n?n/2:p),t.moveTo(i-d,s-r),t.lineTo(i+d,s+r),t.moveTo(i+u,s-a),t.lineTo(i-u,s+a);break;case"star":d=Math.cos(m)*(n?n/2:p),a=Math.cos(m)*p,r=Math.sin(m)*p,u=Math.sin(m)*(n?n/2:p),t.moveTo(i-d,s-r),t.lineTo(i+d,s+r),t.moveTo(i+u,s-a),t.lineTo(i-u,s+a),m+=R,d=Math.cos(m)*(n?n/2:p),a=Math.cos(m)*p,r=Math.sin(m)*p,u=Math.sin(m)*(n?n/2:p),t.moveTo(i-d,s-r),t.lineTo(i+d,s+r),t.moveTo(i+u,s-a),t.lineTo(i-u,s+a);break;case"line":a=n?n/2:Math.cos(m)*p,r=Math.sin(m)*p,t.moveTo(i-a,s-r),t.lineTo(i+a,s+r);break;case"dash":t.moveTo(i,s),t.lineTo(i+Math.cos(m)*(n?n/2:p),s+Math.sin(m)*p);break;case!1:t.closePath()}t.fill(),e.borderWidth>0&&t.stroke()}}function Re(t,e,i){return i=i||.5,!e||t&&t.x>e.left-i&&t.x<e.right+i&&t.y>e.top-i&&t.y<e.bottom+i}function Ie(t,e){t.save(),t.beginPath(),t.rect(e.left,e.top,e.right-e.left,e.bottom-e.top),t.clip()}function ze(t){t.restore()}function Fe(t,e,i,s,n){if(!e)return t.lineTo(i.x,i.y);if("middle"===n){const s=(e.x+i.x)/2;t.lineTo(s,e.y),t.lineTo(s,i.y)}else"after"===n!=!!s?t.lineTo(e.x,i.y):t.lineTo(i.x,e.y);t.lineTo(i.x,i.y)}function Ve(t,e,i,s){if(!e)return t.lineTo(i.x,i.y);t.bezierCurveTo(s?e.cp1x:e.cp2x,s?e.cp1y:e.cp2y,s?i.cp2x:i.cp1x,s?i.cp2y:i.cp1y,i.x,i.y)}function Be(t,e,i,s,n){if(n.strikethrough||n.underline){const o=t.measureText(s),a=e-o.actualBoundingBoxLeft,r=e+o.actualBoundingBoxRight,l=i-o.actualBoundingBoxAscent,h=i+o.actualBoundingBoxDescent,c=n.strikethrough?(l+h)/2:h;t.strokeStyle=t.fillStyle,t.beginPath(),t.lineWidth=n.decorationWidth||2,t.moveTo(a,c),t.lineTo(r,c),t.stroke()}}function We(t,e){const i=t.fillStyle;t.fillStyle=e.color,t.fillRect(e.left,e.top,e.width,e.height),t.fillStyle=i}function Ne(t,e,i,o,a,r={}){const l=n(e)?e:[e],h=r.strokeWidth>0&&""!==r.strokeColor;let c,d;for(t.save(),t.font=a.string,function(t,e){e.translation&&t.translate(e.translation[0],e.translation[1]),s(e.rotation)||t.rotate(e.rotation),e.color&&(t.fillStyle=e.color),e.textAlign&&(t.textAlign=e.textAlign),e.textBaseline&&(t.textBaseline=e.textBaseline)}(t,r),c=0;c<l.length;++c)d=l[c],r.backdrop&&We(t,r.backdrop),h&&(r.strokeColor&&(t.strokeStyle=r.strokeColor),s(r.strokeWidth)||(t.lineWidth=r.strokeWidth),t.strokeText(d,i,o,r.maxWidth)),t.fillText(d,i,o,r.maxWidth),Be(t,i,o,d,r),o+=Number(a.lineHeight);t.restore()}function He(t,e){const{x:i,y:s,w:n,h:o,radius:a}=e;t.arc(i+a.topLeft,s+a.topLeft,a.topLeft,1.5*C,C,!0),t.lineTo(i,s+o-a.bottomLeft),t.arc(i+a.bottomLeft,s+o-a.bottomLeft,a.bottomLeft,C,E,!0),t.lineTo(i+n-a.bottomRight,s+o),t.arc(i+n-a.bottomRight,s+o-a.bottomRight,a.bottomRight,E,0,!0),t.lineTo(i+n,s+a.topRight),t.arc(i+n-a.topRight,s+a.topRight,a.topRight,0,-E,!0),t.lineTo(i+a.topLeft,s)}function je(t,e=[""],i,s,n=(()=>t[0])){const o=i||t;void 0===s&&(s=ti("_fallback",t));const a={[Symbol.toStringTag]:"Object",_cacheable:!0,_scopes:t,_rootScopes:o,_fallback:s,_getTarget:n,override:i=>je([i,...t],e,o,s)};return new Proxy(a,{deleteProperty:(e,i)=>(delete e[i],delete e._keys,delete t[0][i],!0),get:(i,s)=>qe(i,s,(()=>function(t,e,i,s){let n;for(const o of e)if(n=ti(Ue(o,t),i),void 0!==n)return Xe(t,n)?Ze(i,s,t,n):n}(s,e,t,i))),getOwnPropertyDescriptor:(t,e)=>Reflect.getOwnPropertyDescriptor(t._scopes[0],e),getPrototypeOf:()=>Reflect.getPrototypeOf(t[0]),has:(t,e)=>ei(t).includes(e),ownKeys:t=>ei(t),set(t,e,i){const s=t._storage||(t._storage=n());return t[e]=s[e]=i,delete t._keys,!0}})}function $e(t,e,i,s){const a={_cacheable:!1,_proxy:t,_context:e,_subProxy:i,_stack:new Set,_descriptors:Ye(t,s),setContext:e=>$e(t,e,i,s),override:n=>$e(t.override(n),e,i,s)};return new Proxy(a,{deleteProperty:(e,i)=>(delete e[i],delete t[i],!0),get:(t,e,i)=>qe(t,e,(()=>function(t,e,i){const{_proxy:s,_context:a,_subProxy:r,_descriptors:l}=t;let h=s[e];S(h)&&l.isScriptable(e)&&(h=function(t,e,i,s){const{_proxy:n,_context:o,_subProxy:a,_stack:r}=i;if(r.has(t))throw new Error("Recursion detected: "+Array.from(r).join("->")+"->"+t);r.add(t);let l=e(o,a||s);r.delete(t),Xe(t,l)&&(l=Ze(n._scopes,n,t,l));return l}(e,h,t,i));n(h)&&h.length&&(h=function(t,e,i,s){const{_proxy:n,_context:a,_subProxy:r,_descriptors:l}=i;if(void 0!==a.index&&s(t))return e[a.index%e.length];if(o(e[0])){const i=e,s=n._scopes.filter((t=>t!==i));e=[];for(const o of i){const i=Ze(s,n,t,o);e.push($e(i,a,r&&r[t],l))}}return e}(e,h,t,l.isIndexable));Xe(e,h)&&(h=$e(h,a,r&&r[e],l));return h}(t,e,i))),getOwnPropertyDescriptor:(e,i)=>e._descriptors.allKeys?Reflect.has(t,i)?{enumerable:!0,configurable:!0}:void 0:Reflect.getOwnPropertyDescriptor(t,i),getPrototypeOf:()=>Reflect.getPrototypeOf(t),has:(e,i)=>Reflect.has(t,i),ownKeys:()=>Reflect.ownKeys(t),set:(e,i,s)=>(t[i]=s,delete e[i],!0)})}function Ye(t,e={scriptable:!0,indexable:!0}){const{_scriptable:i=e.scriptable,_indexable:s=e.indexable,_allKeys:n=e.allKeys}=t;return{allKeys:n,scriptable:i,indexable:s,isScriptable:S(i)?i:()=>i,isIndexable:S(s)?s:()=>s}}const Ue=(t,e)=>t?t+w(e):e,Xe=(t,e)=>o(e)&&"adapters"!==t&&(null===Object.getPrototypeOf(e)||e.constructor===Object);function qe(t,e,i){if(Object.prototype.hasOwnProperty.call(t,e)||"constructor"===e)return t[e];const s=i();return t[e]=s,s}function Ke(t,e,i){return S(t)?t(e,i):t}const Ge=(t,e)=>!0===t?e:"string"==typeof t?M(e,t):void 0;function Je(t,e,i,s,n){for(const o of e){const e=Ge(i,o);if(e){t.add(e);const o=Ke(e._fallback,i,n);if(void 0!==o&&o!==i&&o!==s)return o}else if(!1===e&&void 0!==s&&i!==s)return null}return!1}function Ze(t,e,i,s){const a=e._rootScopes,r=Ke(e._fallback,i,s),l=[...t,...a],h=new Set;h.add(s);let c=Qe(h,l,i,r||i,s);return null!==c&&((void 0===r||r===i||(c=Qe(h,l,r,c,s),null!==c))&&je(Array.from(h),[""],a,r,(()=>function(t,e,i){const s=t._getTarget();e in s||(s[e]={});const a=s[e];if(n(a)&&o(i))return i;return a||{}}(e,i,s))))}function Qe(t,e,i,s,n){for(;i;)i=Je(t,e,i,s,n);return i}function ti(t,e){for(const i of e){if(!i)continue;const e=i[t];if(void 0!==e)return e}}function ei(t){let e=t._keys;return e||(e=t._keys=function(t){const e=new Set;for(const i of t)for(const t of Object.keys(i).filter((t=>!t.startsWith("_"))))e.add(t);return Array.from(e)}(t._scopes)),e}function ii(t,e,i,s){const{iScale:n}=t,{key:o="r"}=this._parsing,a=new Array(s);let r,l,h,c;for(r=0,l=s;r<l;++r)h=r+i,c=e[h],a[r]={r:n.parse(M(c,o),h)};return a}const si=Number.EPSILON||1e-14,ni=(t,e)=>e<t.length&&!t[e].skip&&t[e],oi=t=>"x"===t?"y":"x";function ai(t,e,i,s){const n=t.skip?e:t,o=e,a=i.skip?e:i,r=q(o,n),l=q(a,o);let h=r/(r+l),c=l/(r+l);h=isNaN(h)?0:h,c=isNaN(c)?0:c;const d=s*h,u=s*c;return{previous:{x:o.x-d*(a.x-n.x),y:o.y-d*(a.y-n.y)},next:{x:o.x+u*(a.x-n.x),y:o.y+u*(a.y-n.y)}}}function ri(t,e="x"){const i=oi(e),s=t.length,n=Array(s).fill(0),o=Array(s);let a,r,l,h=ni(t,0);for(a=0;a<s;++a)if(r=l,l=h,h=ni(t,a+1),l){if(h){const t=h[e]-l[e];n[a]=0!==t?(h[i]-l[i])/t:0}o[a]=r?h?F(n[a-1])!==F(n[a])?0:(n[a-1]+n[a])/2:n[a-1]:n[a]}!function(t,e,i){const s=t.length;let n,o,a,r,l,h=ni(t,0);for(let c=0;c<s-1;++c)l=h,h=ni(t,c+1),l&&h&&(V(e[c],0,si)?i[c]=i[c+1]=0:(n=i[c]/e[c],o=i[c+1]/e[c],r=Math.pow(n,2)+Math.pow(o,2),r<=9||(a=3/Math.sqrt(r),i[c]=n*a*e[c],i[c+1]=o*a*e[c])))}(t,n,o),function(t,e,i="x"){const s=oi(i),n=t.length;let o,a,r,l=ni(t,0);for(let h=0;h<n;++h){if(a=r,r=l,l=ni(t,h+1),!r)continue;const n=r[i],c=r[s];a&&(o=(n-a[i])/3,r[`cp1${i}`]=n-o,r[`cp1${s}`]=c-o*e[h]),l&&(o=(l[i]-n)/3,r[`cp2${i}`]=n+o,r[`cp2${s}`]=c+o*e[h])}}(t,o,e)}function li(t,e,i){return Math.max(Math.min(t,i),e)}function hi(t,e,i,s,n){let o,a,r,l;if(e.spanGaps&&(t=t.filter((t=>!t.skip))),"monotone"===e.cubicInterpolationMode)ri(t,n);else{let i=s?t[t.length-1]:t[0];for(o=0,a=t.length;o<a;++o)r=t[o],l=ai(i,r,t[Math.min(o+1,a-(s?0:1))%a],e.tension),r.cp1x=l.previous.x,r.cp1y=l.previous.y,r.cp2x=l.next.x,r.cp2y=l.next.y,i=r}e.capBezierPoints&&function(t,e){let i,s,n,o,a,r=Re(t[0],e);for(i=0,s=t.length;i<s;++i)a=o,o=r,r=i<s-1&&Re(t[i+1],e),o&&(n=t[i],a&&(n.cp1x=li(n.cp1x,e.left,e.right),n.cp1y=li(n.cp1y,e.top,e.bottom)),r&&(n.cp2x=li(n.cp2x,e.left,e.right),n.cp2y=li(n.cp2y,e.top,e.bottom)))}(t,i)}const ci=t=>0===t||1===t,di=(t,e,i)=>-Math.pow(2,10*(t-=1))*Math.sin((t-e)*O/i),ui=(t,e,i)=>Math.pow(2,-10*t)*Math.sin((t-e)*O/i)+1,fi={linear:t=>t,easeInQuad:t=>t*t,easeOutQuad:t=>-t*(t-2),easeInOutQuad:t=>(t/=.5)<1?.5*t*t:-.5*(--t*(t-2)-1),easeInCubic:t=>t*t*t,easeOutCubic:t=>(t-=1)*t*t+1,easeInOutCubic:t=>(t/=.5)<1?.5*t*t*t:.5*((t-=2)*t*t+2),easeInQuart:t=>t*t*t*t,easeOutQuart:t=>-((t-=1)*t*t*t-1),easeInOutQuart:t=>(t/=.5)<1?.5*t*t*t*t:-.5*((t-=2)*t*t*t-2),easeInQuint:t=>t*t*t*t*t,easeOutQuint:t=>(t-=1)*t*t*t*t+1,easeInOutQuint:t=>(t/=.5)<1?.5*t*t*t*t*t:.5*((t-=2)*t*t*t*t+2),easeInSine:t=>1-Math.cos(t*E),easeOutSine:t=>Math.sin(t*E),easeInOutSine:t=>-.5*(Math.cos(C*t)-1),easeInExpo:t=>0===t?0:Math.pow(2,10*(t-1)),easeOutExpo:t=>1===t?1:1-Math.pow(2,-10*t),easeInOutExpo:t=>ci(t)?t:t<.5?.5*Math.pow(2,10*(2*t-1)):.5*(2-Math.pow(2,-10*(2*t-1))),easeInCirc:t=>t>=1?t:-(Math.sqrt(1-t*t)-1),easeOutCirc:t=>Math.sqrt(1-(t-=1)*t),easeInOutCirc:t=>(t/=.5)<1?-.5*(Math.sqrt(1-t*t)-1):.5*(Math.sqrt(1-(t-=2)*t)+1),easeInElastic:t=>ci(t)?t:di(t,.075,.3),easeOutElastic:t=>ci(t)?t:ui(t,.075,.3),easeInOutElastic(t){const e=.1125;return ci(t)?t:t<.5?.5*di(2*t,e,.45):.5+.5*ui(2*t-1,e,.45)},easeInBack(t){const e=1.70158;return t*t*((e+1)*t-e)},easeOutBack(t){const e=1.70158;return(t-=1)*t*((e+1)*t+e)+1},easeInOutBack(t){let e=1.70158;return(t/=.5)<1?t*t*((1+(e*=1.525))*t-e)*.5:.5*((t-=2)*t*((1+(e*=1.525))*t+e)+2)},easeInBounce:t=>1-fi.easeOutBounce(1-t),easeOutBounce(t){const e=7.5625,i=2.75;return t<1/i?e*t*t:t<2/i?e*(t-=1.5/i)*t+.75:t<2.5/i?e*(t-=2.25/i)*t+.9375:e*(t-=2.625/i)*t+.984375},easeInOutBounce:t=>t<.5?.5*fi.easeInBounce(2*t):.5*fi.easeOutBounce(2*t-1)+.5};function gi(t,e,i,s){return{x:t.x+i*(e.x-t.x),y:t.y+i*(e.y-t.y)}}function pi(t,e,i,s){return{x:t.x+i*(e.x-t.x),y:"middle"===s?i<.5?t.y:e.y:"after"===s?i<1?t.y:e.y:i>0?e.y:t.y}}function mi(t,e,i,s){const n={x:t.cp2x,y:t.cp2y},o={x:e.cp1x,y:e.cp1y},a=gi(t,n,i),r=gi(n,o,i),l=gi(o,e,i),h=gi(a,r,i),c=gi(r,l,i);return gi(h,c,i)}const xi=/^(normal|(\d+(?:\.\d+)?)(px|em|%)?)$/,bi=/^(normal|italic|initial|inherit|unset|(oblique( -?[0-9]?[0-9]deg)?))$/;function _i(t,e){const i=(""+t).match(xi);if(!i||"normal"===i[1])return 1.2*e;switch(t=+i[2],i[3]){case"px":return t;case"%":t/=100}return e*t}const yi=t=>+t||0;function vi(t,e){const i={},s=o(e),n=s?Object.keys(e):e,a=o(t)?s?i=>l(t[i],t[e[i]]):e=>t[e]:()=>t;for(const t of n)i[t]=yi(a(t));return i}function Mi(t){return vi(t,{top:"y",right:"x",bottom:"y",left:"x"})}function wi(t){return vi(t,["topLeft","topRight","bottomLeft","bottomRight"])}function ki(t){const e=Mi(t);return e.width=e.left+e.right,e.height=e.top+e.bottom,e}function Si(t,e){t=t||{},e=e||ue.font;let i=l(t.size,e.size);"string"==typeof i&&(i=parseInt(i,10));let s=l(t.style,e.style);s&&!(""+s).match(bi)&&(console.warn('Invalid font style specified: "'+s+'"'),s=void 0);const n={family:l(t.family,e.family),lineHeight:_i(l(t.lineHeight,e.lineHeight),i),size:i,style:s,weight:l(t.weight,e.weight),string:""};return n.string=De(n),n}function Pi(t,e,i,s){let o,a,r,l=!0;for(o=0,a=t.length;o<a;++o)if(r=t[o],void 0!==r&&(void 0!==e&&"function"==typeof r&&(r=r(e),l=!1),void 0!==i&&n(r)&&(r=r[i%r.length],l=!1),void 0!==r))return s&&!l&&(s.cacheable=!1),r}function Di(t,e,i){const{min:s,max:n}=t,o=c(e,(n-s)/2),a=(t,e)=>i&&0===t?0:t+e;return{min:a(s,-Math.abs(o)),max:a(n,o)}}function Ci(t,e){return Object.assign(Object.create(t),e)}function Oi(t,e,i){return t?function(t,e){return{x:i=>t+t+e-i,setWidth(t){e=t},textAlign:t=>"center"===t?t:"right"===t?"left":"right",xPlus:(t,e)=>t-e,leftForLtr:(t,e)=>t-e}}(e,i):{x:t=>t,setWidth(t){},textAlign:t=>t,xPlus:(t,e)=>t+e,leftForLtr:(t,e)=>t}}function Ai(t,e){let i,s;"ltr"!==e&&"rtl"!==e||(i=t.canvas.style,s=[i.getPropertyValue("direction"),i.getPropertyPriority("direction")],i.setProperty("direction",e,"important"),t.prevTextDirection=s)}function Ti(t,e){void 0!==e&&(delete t.prevTextDirection,t.canvas.style.setProperty("direction",e[0],e[1]))}function Li(t){return"angle"===t?{between:J,compare:K,normalize:G}:{between:tt,compare:(t,e)=>t-e,normalize:t=>t}}function Ei({start:t,end:e,count:i,loop:s,style:n}){return{start:t%i,end:e%i,loop:s&&(e-t+1)%i==0,style:n}}function Ri(t,e,i){if(!i)return[t];const{property:s,start:n,end:o}=i,a=e.length,{compare:r,between:l,normalize:h}=Li(s),{start:c,end:d,loop:u,style:f}=function(t,e,i){const{property:s,start:n,end:o}=i,{between:a,normalize:r}=Li(s),l=e.length;let h,c,{start:d,end:u,loop:f}=t;if(f){for(d+=l,u+=l,h=0,c=l;h<c&&a(r(e[d%l][s]),n,o);++h)d--,u--;d%=l,u%=l}return u<d&&(u+=l),{start:d,end:u,loop:f,style:t.style}}(t,e,i),g=[];let p,m,x,b=!1,_=null;const y=()=>b||l(n,x,p)&&0!==r(n,x),v=()=>!b||0===r(o,p)||l(o,x,p);for(let t=c,i=c;t<=d;++t)m=e[t%a],m.skip||(p=h(m[s]),p!==x&&(b=l(p,n,o),null===_&&y()&&(_=0===r(p,n)?t:i),null!==_&&v()&&(g.push(Ei({start:_,end:t,loop:u,count:a,style:f})),_=null),i=t,x=p));return null!==_&&g.push(Ei({start:_,end:d,loop:u,count:a,style:f})),g}function Ii(t,e){const i=[],s=t.segments;for(let n=0;n<s.length;n++){const o=Ri(s[n],t.points,e);o.length&&i.push(...o)}return i}function zi(t,e){const i=t.points,s=t.options.spanGaps,n=i.length;if(!n)return[];const o=!!t._loop,{start:a,end:r}=function(t,e,i,s){let n=0,o=e-1;if(i&&!s)for(;n<e&&!t[n].skip;)n++;for(;n<e&&t[n].skip;)n++;for(n%=e,i&&(o+=n);o>n&&t[o%e].skip;)o--;return o%=e,{start:n,end:o}}(i,n,o,s);if(!0===s)return Fi(t,[{start:a,end:r,loop:o}],i,e);return Fi(t,function(t,e,i,s){const n=t.length,o=[];let a,r=e,l=t[e];for(a=e+1;a<=i;++a){const i=t[a%n];i.skip||i.stop?l.skip||(s=!1,o.push({start:e%n,end:(a-1)%n,loop:s}),e=r=i.stop?a:null):(r=a,l.skip&&(e=a)),l=i}return null!==r&&o.push({start:e%n,end:r%n,loop:s}),o}(i,a,r<a?r+n:r,!!t._fullLoop&&0===a&&r===n-1),i,e)}function Fi(t,e,i,s){return s&&s.setContext&&i?function(t,e,i,s){const n=t._chart.getContext(),o=Vi(t.options),{_datasetIndex:a,options:{spanGaps:r}}=t,l=i.length,h=[];let c=o,d=e[0].start,u=d;function f(t,e,s,n){const o=r?-1:1;if(t!==e){for(t+=l;i[t%l].skip;)t-=o;for(;i[e%l].skip;)e+=o;t%l!=e%l&&(h.push({start:t%l,end:e%l,loop:s,style:n}),c=n,d=e%l)}}for(const t of e){d=r?d:t.start;let e,o=i[d%l];for(u=d+1;u<=t.end;u++){const r=i[u%l];e=Vi(s.setContext(Ci(n,{type:"segment",p0:o,p1:r,p0DataIndex:(u-1)%l,p1DataIndex:u%l,datasetIndex:a}))),Bi(e,c)&&f(d,u-1,t.loop,c),o=r,c=e}d<u-1&&f(d,u-1,t.loop,c)}return h}(t,e,i,s):e}function Vi(t){return{backgroundColor:t.backgroundColor,borderCapStyle:t.borderCapStyle,borderDash:t.borderDash,borderDashOffset:t.borderDashOffset,borderJoinStyle:t.borderJoinStyle,borderWidth:t.borderWidth,borderColor:t.borderColor}}function Bi(t,e){if(!e)return!1;const i=[],s=function(t,e){return Zt(e)?(i.includes(e)||i.push(e),i.indexOf(e)):e};return JSON.stringify(t,s)!==JSON.stringify(e,s)}function Wi(t,e,i){return t.options.clip?t[i]:e[i]}function Ni(t,e){const i=e._clip;if(i.disabled)return!1;const s=function(t,e){const{xScale:i,yScale:s}=t;return i&&s?{left:Wi(i,e,"left"),right:Wi(i,e,"right"),top:Wi(s,e,"top"),bottom:Wi(s,e,"bottom")}:e}(e,t.chartArea);return{left:!1===i.left?0:s.left-(!0===i.left?0:i.left),right:!1===i.right?t.width:s.right+(!0===i.right?0:i.right),top:!1===i.top?0:s.top-(!0===i.top?0:i.top),bottom:!1===i.bottom?t.height:s.bottom+(!0===i.bottom?0:i.bottom)}}var Hi=Object.freeze({__proto__:null,HALF_PI:E,INFINITY:T,PI:C,PITAU:A,QUARTER_PI:R,RAD_PER_DEG:L,TAU:O,TWO_THIRDS_PI:I,_addGrace:Di,_alignPixel:Ae,_alignStartEnd:ft,_angleBetween:J,_angleDiff:K,_arrayUnique:lt,_attachContext:$e,_bezierCurveTo:Ve,_bezierInterpolation:mi,_boundSegment:Ri,_boundSegments:Ii,_capitalize:w,_computeSegments:zi,_createResolver:je,_decimalPlaces:U,_deprecated:function(t,e,i,s){void 0!==e&&console.warn(t+': "'+i+'" is deprecated. Please use "'+s+'" instead')},_descriptors:Ye,_elementsEqual:f,_factorize:W,_filterBetween:nt,_getParentNode:ge,_getStartAndCountOfVisiblePoints:pt,_int16Range:Q,_isBetween:tt,_isClickEvent:D,_isDomSupported:fe,_isPointInArea:Re,_limitValue:Z,_longestText:Oe,_lookup:et,_lookupByKey:it,_measureText:Ce,_merger:m,_mergerIf:_,_normalizeAngle:G,_parseObjectDataRadialScale:ii,_pointInLine:gi,_readValueToProps:vi,_rlookupByKey:st,_scaleRangesChanged:mt,_setMinAndMaxByKey:j,_splitKey:v,_steppedInterpolation:pi,_steppedLineTo:Fe,_textX:gt,_toLeftRightCenter:ut,_updateBezierControlPoints:hi,addRoundedRectPath:He,almostEquals:V,almostWhole:H,callback:d,clearCanvas:Te,clipArea:Ie,clone:g,color:Qt,createContext:Ci,debounce:dt,defined:k,distanceBetweenPoints:q,drawPoint:Le,drawPointLegend:Ee,each:u,easingEffects:fi,finiteOrDefault:r,fontString:function(t,e,i){return e+" "+t+"px "+i},formatNumber:ne,getAngleFromPoint:X,getDatasetClipArea:Ni,getHoverColor:te,getMaximumSize:we,getRelativePosition:ve,getRtlAdapter:Oi,getStyle:xe,isArray:n,isFinite:a,isFunction:S,isNullOrUndef:s,isNumber:N,isObject:o,isPatternOrGradient:Zt,listenArrayEvents:at,log10:z,merge:x,mergeIf:b,niceNum:B,noop:e,overrideTextDirection:Ai,readUsedSize:Pe,renderText:Ne,requestAnimFrame:ht,resolve:Pi,resolveObjectKey:M,restoreTextDirection:Ti,retinaScale:ke,setsEqual:P,sign:F,splineCurve:ai,splineCurveMonotone:ri,supportsEventListenerOptions:Se,throttled:ct,toDegrees:Y,toDimension:c,toFont:Si,toFontString:De,toLineHeight:_i,toPadding:ki,toPercentage:h,toRadians:$,toTRBL:Mi,toTRBLCorners:wi,uid:i,unclipArea:ze,unlistenArrayEvents:rt,valueOrDefault:l});function ji(t,e,i,n){const{controller:o,data:a,_sorted:r}=t,l=o._cachedMeta.iScale,h=t.dataset&&t.dataset.options?t.dataset.options.spanGaps:null;if(l&&e===l.axis&&"r"!==e&&r&&a.length){const r=l._reversePixels?st:it;if(!n){const n=r(a,e,i);if(h){const{vScale:e}=o._cachedMeta,{_parsed:i}=t,a=i.slice(0,n.lo+1).reverse().findIndex((t=>!s(t[e.axis])));n.lo-=Math.max(0,a);const r=i.slice(n.hi).findIndex((t=>!s(t[e.axis])));n.hi+=Math.max(0,r)}return n}if(o._sharedOptions){const t=a[0],s="function"==typeof t.getRange&&t.getRange(e);if(s){const t=r(a,e,i-s),n=r(a,e,i+s);return{lo:t.lo,hi:n.hi}}}}return{lo:0,hi:a.length-1}}function $i(t,e,i,s,n){const o=t.getSortedVisibleDatasetMetas(),a=i[e];for(let t=0,i=o.length;t<i;++t){const{index:i,data:r}=o[t],{lo:l,hi:h}=ji(o[t],e,a,n);for(let t=l;t<=h;++t){const e=r[t];e.skip||s(e,i,t)}}}function Yi(t,e,i,s,n){const o=[];if(!n&&!t.isPointInArea(e))return o;return $i(t,i,e,(function(i,a,r){(n||Re(i,t.chartArea,0))&&i.inRange(e.x,e.y,s)&&o.push({element:i,datasetIndex:a,index:r})}),!0),o}function Ui(t,e,i,s,n,o){let a=[];const r=function(t){const e=-1!==t.indexOf("x"),i=-1!==t.indexOf("y");return function(t,s){const n=e?Math.abs(t.x-s.x):0,o=i?Math.abs(t.y-s.y):0;return Math.sqrt(Math.pow(n,2)+Math.pow(o,2))}}(i);let l=Number.POSITIVE_INFINITY;return $i(t,i,e,(function(i,h,c){const d=i.inRange(e.x,e.y,n);if(s&&!d)return;const u=i.getCenterPoint(n);if(!(!!o||t.isPointInArea(u))&&!d)return;const f=r(e,u);f<l?(a=[{element:i,datasetIndex:h,index:c}],l=f):f===l&&a.push({element:i,datasetIndex:h,index:c})})),a}function Xi(t,e,i,s,n,o){return o||t.isPointInArea(e)?"r"!==i||s?Ui(t,e,i,s,n,o):function(t,e,i,s){let n=[];return $i(t,i,e,(function(t,i,o){const{startAngle:a,endAngle:r}=t.getProps(["startAngle","endAngle"],s),{angle:l}=X(t,{x:e.x,y:e.y});J(l,a,r)&&n.push({element:t,datasetIndex:i,index:o})})),n}(t,e,i,n):[]}function qi(t,e,i,s,n){const o=[],a="x"===i?"inXRange":"inYRange";let r=!1;return $i(t,i,e,((t,s,l)=>{t[a]&&t[a](e[i],n)&&(o.push({element:t,datasetIndex:s,index:l}),r=r||t.inRange(e.x,e.y,n))})),s&&!r?[]:o}var Ki={evaluateInteractionItems:$i,modes:{index(t,e,i,s){const n=ve(e,t),o=i.axis||"x",a=i.includeInvisible||!1,r=i.intersect?Yi(t,n,o,s,a):Xi(t,n,o,!1,s,a),l=[];return r.length?(t.getSortedVisibleDatasetMetas().forEach((t=>{const e=r[0].index,i=t.data[e];i&&!i.skip&&l.push({element:i,datasetIndex:t.index,index:e})})),l):[]},dataset(t,e,i,s){const n=ve(e,t),o=i.axis||"xy",a=i.includeInvisible||!1;let r=i.intersect?Yi(t,n,o,s,a):Xi(t,n,o,!1,s,a);if(r.length>0){const e=r[0].datasetIndex,i=t.getDatasetMeta(e).data;r=[];for(let t=0;t<i.length;++t)r.push({element:i[t],datasetIndex:e,index:t})}return r},point:(t,e,i,s)=>Yi(t,ve(e,t),i.axis||"xy",s,i.includeInvisible||!1),nearest(t,e,i,s){const n=ve(e,t),o=i.axis||"xy",a=i.includeInvisible||!1;return Xi(t,n,o,i.intersect,s,a)},x:(t,e,i,s)=>qi(t,ve(e,t),"x",i.intersect,s),y:(t,e,i,s)=>qi(t,ve(e,t),"y",i.intersect,s)}};const Gi=["left","top","right","bottom"];function Ji(t,e){return t.filter((t=>t.pos===e))}function Zi(t,e){return t.filter((t=>-1===Gi.indexOf(t.pos)&&t.box.axis===e))}function Qi(t,e){return t.sort(((t,i)=>{const s=e?i:t,n=e?t:i;return s.weight===n.weight?s.index-n.index:s.weight-n.weight}))}function ts(t,e){const i=function(t){const e={};for(const i of t){const{stack:t,pos:s,stackWeight:n}=i;if(!t||!Gi.includes(s))continue;const o=e[t]||(e[t]={count:0,placed:0,weight:0,size:0});o.count++,o.weight+=n}return e}(t),{vBoxMaxWidth:s,hBoxMaxHeight:n}=e;let o,a,r;for(o=0,a=t.length;o<a;++o){r=t[o];const{fullSize:a}=r.box,l=i[r.stack],h=l&&r.stackWeight/l.weight;r.horizontal?(r.width=h?h*s:a&&e.availableWidth,r.height=n):(r.width=s,r.height=h?h*n:a&&e.availableHeight)}return i}function es(t,e,i,s){return Math.max(t[i],e[i])+Math.max(t[s],e[s])}function is(t,e){t.top=Math.max(t.top,e.top),t.left=Math.max(t.left,e.left),t.bottom=Math.max(t.bottom,e.bottom),t.right=Math.max(t.right,e.right)}function ss(t,e,i,s){const{pos:n,box:a}=i,r=t.maxPadding;if(!o(n)){i.size&&(t[n]-=i.size);const e=s[i.stack]||{size:0,count:1};e.size=Math.max(e.size,i.horizontal?a.height:a.width),i.size=e.size/e.count,t[n]+=i.size}a.getPadding&&is(r,a.getPadding());const l=Math.max(0,e.outerWidth-es(r,t,"left","right")),h=Math.max(0,e.outerHeight-es(r,t,"top","bottom")),c=l!==t.w,d=h!==t.h;return t.w=l,t.h=h,i.horizontal?{same:c,other:d}:{same:d,other:c}}function ns(t,e){const i=e.maxPadding;function s(t){const s={left:0,top:0,right:0,bottom:0};return t.forEach((t=>{s[t]=Math.max(e[t],i[t])})),s}return s(t?["left","right"]:["top","bottom"])}function os(t,e,i,s){const n=[];let o,a,r,l,h,c;for(o=0,a=t.length,h=0;o<a;++o){r=t[o],l=r.box,l.update(r.width||e.w,r.height||e.h,ns(r.horizontal,e));const{same:a,other:d}=ss(e,i,r,s);h|=a&&n.length,c=c||d,l.fullSize||n.push(r)}return h&&os(n,e,i,s)||c}function as(t,e,i,s,n){t.top=i,t.left=e,t.right=e+s,t.bottom=i+n,t.width=s,t.height=n}function rs(t,e,i,s){const n=i.padding;let{x:o,y:a}=e;for(const r of t){const t=r.box,l=s[r.stack]||{count:1,placed:0,weight:1},h=r.stackWeight/l.weight||1;if(r.horizontal){const s=e.w*h,o=l.size||t.height;k(l.start)&&(a=l.start),t.fullSize?as(t,n.left,a,i.outerWidth-n.right-n.left,o):as(t,e.left+l.placed,a,s,o),l.start=a,l.placed+=s,a=t.bottom}else{const s=e.h*h,a=l.size||t.width;k(l.start)&&(o=l.start),t.fullSize?as(t,o,n.top,a,i.outerHeight-n.bottom-n.top):as(t,o,e.top+l.placed,a,s),l.start=o,l.placed+=s,o=t.right}}e.x=o,e.y=a}var ls={addBox(t,e){t.boxes||(t.boxes=[]),e.fullSize=e.fullSize||!1,e.position=e.position||"top",e.weight=e.weight||0,e._layers=e._layers||function(){return[{z:0,draw(t){e.draw(t)}}]},t.boxes.push(e)},removeBox(t,e){const i=t.boxes?t.boxes.indexOf(e):-1;-1!==i&&t.boxes.splice(i,1)},configure(t,e,i){e.fullSize=i.fullSize,e.position=i.position,e.weight=i.weight},update(t,e,i,s){if(!t)return;const n=ki(t.options.layout.padding),o=Math.max(e-n.width,0),a=Math.max(i-n.height,0),r=function(t){const e=function(t){const e=[];let i,s,n,o,a,r;for(i=0,s=(t||[]).length;i<s;++i)n=t[i],({position:o,options:{stack:a,stackWeight:r=1}}=n),e.push({index:i,box:n,pos:o,horizontal:n.isHorizontal(),weight:n.weight,stack:a&&o+a,stackWeight:r});return e}(t),i=Qi(e.filter((t=>t.box.fullSize)),!0),s=Qi(Ji(e,"left"),!0),n=Qi(Ji(e,"right")),o=Qi(Ji(e,"top"),!0),a=Qi(Ji(e,"bottom")),r=Zi(e,"x"),l=Zi(e,"y");return{fullSize:i,leftAndTop:s.concat(o),rightAndBottom:n.concat(l).concat(a).concat(r),chartArea:Ji(e,"chartArea"),vertical:s.concat(n).concat(l),horizontal:o.concat(a).concat(r)}}(t.boxes),l=r.vertical,h=r.horizontal;u(t.boxes,(t=>{"function"==typeof t.beforeLayout&&t.beforeLayout()}));const c=l.reduce(((t,e)=>e.box.options&&!1===e.box.options.display?t:t+1),0)||1,d=Object.freeze({outerWidth:e,outerHeight:i,padding:n,availableWidth:o,availableHeight:a,vBoxMaxWidth:o/2/c,hBoxMaxHeight:a/2}),f=Object.assign({},n);is(f,ki(s));const g=Object.assign({maxPadding:f,w:o,h:a,x:n.left,y:n.top},n),p=ts(l.concat(h),d);os(r.fullSize,g,d,p),os(l,g,d,p),os(h,g,d,p)&&os(l,g,d,p),function(t){const e=t.maxPadding;function i(i){const s=Math.max(e[i]-t[i],0);return t[i]+=s,s}t.y+=i("top"),t.x+=i("left"),i("right"),i("bottom")}(g),rs(r.leftAndTop,g,d,p),g.x+=g.w,g.y+=g.h,rs(r.rightAndBottom,g,d,p),t.chartArea={left:g.left,top:g.top,right:g.left+g.w,bottom:g.top+g.h,height:g.h,width:g.w},u(r.chartArea,(e=>{const i=e.box;Object.assign(i,t.chartArea),i.update(g.w,g.h,{left:0,top:0,right:0,bottom:0})}))}};class hs{acquireContext(t,e){}releaseContext(t){return!1}addEventListener(t,e,i){}removeEventListener(t,e,i){}getDevicePixelRatio(){return 1}getMaximumSize(t,e,i,s){return e=Math.max(0,e||t.width),i=i||t.height,{width:e,height:Math.max(0,s?Math.floor(e/s):i)}}isAttached(t){return!0}updateConfig(t){}}class cs extends hs{acquireContext(t){return t&&t.getContext&&t.getContext("2d")||null}updateConfig(t){t.options.animation=!1}}const ds="$chartjs",us={touchstart:"mousedown",touchmove:"mousemove",touchend:"mouseup",pointerenter:"mouseenter",pointerdown:"mousedown",pointermove:"mousemove",pointerup:"mouseup",pointerleave:"mouseout",pointerout:"mouseout"},fs=t=>null===t||""===t;const gs=!!Se&&{passive:!0};function ps(t,e,i){t&&t.canvas&&t.canvas.removeEventListener(e,i,gs)}function ms(t,e){for(const i of t)if(i===e||i.contains(e))return!0}function xs(t,e,i){const s=t.canvas,n=new MutationObserver((t=>{let e=!1;for(const i of t)e=e||ms(i.addedNodes,s),e=e&&!ms(i.removedNodes,s);e&&i()}));return n.observe(document,{childList:!0,subtree:!0}),n}function bs(t,e,i){const s=t.canvas,n=new MutationObserver((t=>{let e=!1;for(const i of t)e=e||ms(i.removedNodes,s),e=e&&!ms(i.addedNodes,s);e&&i()}));return n.observe(document,{childList:!0,subtree:!0}),n}const _s=new Map;let ys=0;function vs(){const t=window.devicePixelRatio;t!==ys&&(ys=t,_s.forEach(((e,i)=>{i.currentDevicePixelRatio!==t&&e()})))}function Ms(t,e,i){const s=t.canvas,n=s&&ge(s);if(!n)return;const o=ct(((t,e)=>{const s=n.clientWidth;i(t,e),s<n.clientWidth&&i()}),window),a=new ResizeObserver((t=>{const e=t[0],i=e.contentRect.width,s=e.contentRect.height;0===i&&0===s||o(i,s)}));return a.observe(n),function(t,e){_s.size||window.addEventListener("resize",vs),_s.set(t,e)}(t,o),a}function ws(t,e,i){i&&i.disconnect(),"resize"===e&&function(t){_s.delete(t),_s.size||window.removeEventListener("resize",vs)}(t)}function ks(t,e,i){const s=t.canvas,n=ct((e=>{null!==t.ctx&&i(function(t,e){const i=us[t.type]||t.type,{x:s,y:n}=ve(t,e);return{type:i,chart:e,native:t,x:void 0!==s?s:null,y:void 0!==n?n:null}}(e,t))}),t);return function(t,e,i){t&&t.addEventListener(e,i,gs)}(s,e,n),n}class Ss extends hs{acquireContext(t,e){const i=t&&t.getContext&&t.getContext("2d");return i&&i.canvas===t?(function(t,e){const i=t.style,s=t.getAttribute("height"),n=t.getAttribute("width");if(t[ds]={initial:{height:s,width:n,style:{display:i.display,height:i.height,width:i.width}}},i.display=i.display||"block",i.boxSizing=i.boxSizing||"border-box",fs(n)){const e=Pe(t,"width");void 0!==e&&(t.width=e)}if(fs(s))if(""===t.style.height)t.height=t.width/(e||2);else{const e=Pe(t,"height");void 0!==e&&(t.height=e)}}(t,e),i):null}releaseContext(t){const e=t.canvas;if(!e[ds])return!1;const i=e[ds].initial;["height","width"].forEach((t=>{const n=i[t];s(n)?e.removeAttribute(t):e.setAttribute(t,n)}));const n=i.style||{};return Object.keys(n).forEach((t=>{e.style[t]=n[t]})),e.width=e.width,delete e[ds],!0}addEventListener(t,e,i){this.removeEventListener(t,e);const s=t.$proxies||(t.$proxies={}),n={attach:xs,detach:bs,resize:Ms}[e]||ks;s[e]=n(t,e,i)}removeEventListener(t,e){const i=t.$proxies||(t.$proxies={}),s=i[e];if(!s)return;({attach:ws,detach:ws,resize:ws}[e]||ps)(t,e,s),i[e]=void 0}getDevicePixelRatio(){return window.devicePixelRatio}getMaximumSize(t,e,i,s){return we(t,e,i,s)}isAttached(t){const e=t&&ge(t);return!(!e||!e.isConnected)}}function Ps(t){return!fe()||"undefined"!=typeof OffscreenCanvas&&t instanceof OffscreenCanvas?cs:Ss}var Ds=Object.freeze({__proto__:null,BasePlatform:hs,BasicPlatform:cs,DomPlatform:Ss,_detectPlatform:Ps});const Cs="transparent",Os={boolean:(t,e,i)=>i>.5?e:t,color(t,e,i){const s=Qt(t||Cs),n=s.valid&&Qt(e||Cs);return n&&n.valid?n.mix(s,i).hexString():e},number:(t,e,i)=>t+(e-t)*i};class As{constructor(t,e,i,s){const n=e[i];s=Pi([t.to,s,n,t.from]);const o=Pi([t.from,n,s]);this._active=!0,this._fn=t.fn||Os[t.type||typeof o],this._easing=fi[t.easing]||fi.linear,this._start=Math.floor(Date.now()+(t.delay||0)),this._duration=this._total=Math.floor(t.duration),this._loop=!!t.loop,this._target=e,this._prop=i,this._from=o,this._to=s,this._promises=void 0}active(){return this._active}update(t,e,i){if(this._active){this._notify(!1);const s=this._target[this._prop],n=i-this._start,o=this._duration-n;this._start=i,this._duration=Math.floor(Math.max(o,t.duration)),this._total+=n,this._loop=!!t.loop,this._to=Pi([t.to,e,s,t.from]),this._from=Pi([t.from,s,e])}}cancel(){this._active&&(this.tick(Date.now()),this._active=!1,this._notify(!1))}tick(t){const e=t-this._start,i=this._duration,s=this._prop,n=this._from,o=this._loop,a=this._to;let r;if(this._active=n!==a&&(o||e<i),!this._active)return this._target[s]=a,void this._notify(!0);e<0?this._target[s]=n:(r=e/i%2,r=o&&r>1?2-r:r,r=this._easing(Math.min(1,Math.max(0,r))),this._target[s]=this._fn(n,a,r))}wait(){const t=this._promises||(this._promises=[]);return new Promise(((e,i)=>{t.push({res:e,rej:i})}))}_notify(t){const e=t?"res":"rej",i=this._promises||[];for(let t=0;t<i.length;t++)i[t][e]()}}class Ts{constructor(t,e){this._chart=t,this._properties=new Map,this.configure(e)}configure(t){if(!o(t))return;const e=Object.keys(ue.animation),i=this._properties;Object.getOwnPropertyNames(t).forEach((s=>{const a=t[s];if(!o(a))return;const r={};for(const t of e)r[t]=a[t];(n(a.properties)&&a.properties||[s]).forEach((t=>{t!==s&&i.has(t)||i.set(t,r)}))}))}_animateOptions(t,e){const i=e.options,s=function(t,e){if(!e)return;let i=t.options;if(!i)return void(t.options=e);i.$shared&&(t.options=i=Object.assign({},i,{$shared:!1,$animations:{}}));return i}(t,i);if(!s)return[];const n=this._createAnimations(s,i);return i.$shared&&function(t,e){const i=[],s=Object.keys(e);for(let e=0;e<s.length;e++){const n=t[s[e]];n&&n.active()&&i.push(n.wait())}return Promise.all(i)}(t.options.$animations,i).then((()=>{t.options=i}),(()=>{})),n}_createAnimations(t,e){const i=this._properties,s=[],n=t.$animations||(t.$animations={}),o=Object.keys(e),a=Date.now();let r;for(r=o.length-1;r>=0;--r){const l=o[r];if("$"===l.charAt(0))continue;if("options"===l){s.push(...this._animateOptions(t,e));continue}const h=e[l];let c=n[l];const d=i.get(l);if(c){if(d&&c.active()){c.update(d,h,a);continue}c.cancel()}d&&d.duration?(n[l]=c=new As(d,t,l,h),s.push(c)):t[l]=h}return s}update(t,e){if(0===this._properties.size)return void Object.assign(t,e);const i=this._createAnimations(t,e);return i.length?(bt.add(this._chart,i),!0):void 0}}function Ls(t,e){const i=t&&t.options||{},s=i.reverse,n=void 0===i.min?e:0,o=void 0===i.max?e:0;return{start:s?o:n,end:s?n:o}}function Es(t,e){const i=[],s=t._getSortedDatasetMetas(e);let n,o;for(n=0,o=s.length;n<o;++n)i.push(s[n].index);return i}function Rs(t,e,i,s={}){const n=t.keys,o="single"===s.mode;let r,l,h,c;if(null===e)return;let d=!1;for(r=0,l=n.length;r<l;++r){if(h=+n[r],h===i){if(d=!0,s.all)continue;break}c=t.values[h],a(c)&&(o||0===e||F(e)===F(c))&&(e+=c)}return d||s.all?e:0}function Is(t,e){const i=t&&t.options.stacked;return i||void 0===i&&void 0!==e.stack}function zs(t,e,i){const s=t[e]||(t[e]={});return s[i]||(s[i]={})}function Fs(t,e,i,s){for(const n of e.getMatchingVisibleMetas(s).reverse()){const e=t[n.index];if(i&&e>0||!i&&e<0)return n.index}return null}function Vs(t,e){const{chart:i,_cachedMeta:s}=t,n=i._stacks||(i._stacks={}),{iScale:o,vScale:a,index:r}=s,l=o.axis,h=a.axis,c=function(t,e,i){return`${t.id}.${e.id}.${i.stack||i.type}`}(o,a,s),d=e.length;let u;for(let t=0;t<d;++t){const i=e[t],{[l]:o,[h]:d}=i;u=(i._stacks||(i._stacks={}))[h]=zs(n,c,o),u[r]=d,u._top=Fs(u,a,!0,s.type),u._bottom=Fs(u,a,!1,s.type);(u._visualValues||(u._visualValues={}))[r]=d}}function Bs(t,e){const i=t.scales;return Object.keys(i).filter((t=>i[t].axis===e)).shift()}function Ws(t,e){const i=t.controller.index,s=t.vScale&&t.vScale.axis;if(s){e=e||t._parsed;for(const t of e){const e=t._stacks;if(!e||void 0===e[s]||void 0===e[s][i])return;delete e[s][i],void 0!==e[s]._visualValues&&void 0!==e[s]._visualValues[i]&&delete e[s]._visualValues[i]}}}const Ns=t=>"reset"===t||"none"===t,Hs=(t,e)=>e?t:Object.assign({},t);class js{static defaults={};static datasetElementType=null;static dataElementType=null;constructor(t,e){this.chart=t,this._ctx=t.ctx,this.index=e,this._cachedDataOpts={},this._cachedMeta=this.getMeta(),this._type=this._cachedMeta.type,this.options=void 0,this._parsing=!1,this._data=void 0,this._objectData=void 0,this._sharedOptions=void 0,this._drawStart=void 0,this._drawCount=void 0,this.enableOptionSharing=!1,this.supportsDecimation=!1,this.$context=void 0,this._syncList=[],this.datasetElementType=new.target.datasetElementType,this.dataElementType=new.target.dataElementType,this.initialize()}initialize(){const t=this._cachedMeta;this.configure(),this.linkScales(),t._stacked=Is(t.vScale,t),this.addElements(),this.options.fill&&!this.chart.isPluginEnabled("filler")&&console.warn("Tried to use the 'fill' option without the 'Filler' plugin enabled. Please import and register the 'Filler' plugin and make sure it is not disabled in the options")}updateIndex(t){this.index!==t&&Ws(this._cachedMeta),this.index=t}linkScales(){const t=this.chart,e=this._cachedMeta,i=this.getDataset(),s=(t,e,i,s)=>"x"===t?e:"r"===t?s:i,n=e.xAxisID=l(i.xAxisID,Bs(t,"x")),o=e.yAxisID=l(i.yAxisID,Bs(t,"y")),a=e.rAxisID=l(i.rAxisID,Bs(t,"r")),r=e.indexAxis,h=e.iAxisID=s(r,n,o,a),c=e.vAxisID=s(r,o,n,a);e.xScale=this.getScaleForId(n),e.yScale=this.getScaleForId(o),e.rScale=this.getScaleForId(a),e.iScale=this.getScaleForId(h),e.vScale=this.getScaleForId(c)}getDataset(){return this.chart.data.datasets[this.index]}getMeta(){return this.chart.getDatasetMeta(this.index)}getScaleForId(t){return this.chart.scales[t]}_getOtherScale(t){const e=this._cachedMeta;return t===e.iScale?e.vScale:e.iScale}reset(){this._update("reset")}_destroy(){const t=this._cachedMeta;this._data&&rt(this._data,this),t._stacked&&Ws(t)}_dataCheck(){const t=this.getDataset(),e=t.data||(t.data=[]),i=this._data;if(o(e)){const t=this._cachedMeta;this._data=function(t,e){const{iScale:i,vScale:s}=e,n="x"===i.axis?"x":"y",o="x"===s.axis?"x":"y",a=Object.keys(t),r=new Array(a.length);let l,h,c;for(l=0,h=a.length;l<h;++l)c=a[l],r[l]={[n]:c,[o]:t[c]};return r}(e,t)}else if(i!==e){if(i){rt(i,this);const t=this._cachedMeta;Ws(t),t._parsed=[]}e&&Object.isExtensible(e)&&at(e,this),this._syncList=[],this._data=e}}addElements(){const t=this._cachedMeta;this._dataCheck(),this.datasetElementType&&(t.dataset=new this.datasetElementType)}buildOrUpdateElements(t){const e=this._cachedMeta,i=this.getDataset();let s=!1;this._dataCheck();const n=e._stacked;e._stacked=Is(e.vScale,e),e.stack!==i.stack&&(s=!0,Ws(e),e.stack=i.stack),this._resyncElements(t),(s||n!==e._stacked)&&(Vs(this,e._parsed),e._stacked=Is(e.vScale,e))}configure(){const t=this.chart.config,e=t.datasetScopeKeys(this._type),i=t.getOptionScopes(this.getDataset(),e,!0);this.options=t.createResolver(i,this.getContext()),this._parsing=this.options.parsing,this._cachedDataOpts={}}parse(t,e){const{_cachedMeta:i,_data:s}=this,{iScale:a,_stacked:r}=i,l=a.axis;let h,c,d,u=0===t&&e===s.length||i._sorted,f=t>0&&i._parsed[t-1];if(!1===this._parsing)i._parsed=s,i._sorted=!0,d=s;else{d=n(s[t])?this.parseArrayData(i,s,t,e):o(s[t])?this.parseObjectData(i,s,t,e):this.parsePrimitiveData(i,s,t,e);const a=()=>null===c[l]||f&&c[l]<f[l];for(h=0;h<e;++h)i._parsed[h+t]=c=d[h],u&&(a()&&(u=!1),f=c);i._sorted=u}r&&Vs(this,d)}parsePrimitiveData(t,e,i,s){const{iScale:n,vScale:o}=t,a=n.axis,r=o.axis,l=n.getLabels(),h=n===o,c=new Array(s);let d,u,f;for(d=0,u=s;d<u;++d)f=d+i,c[d]={[a]:h||n.parse(l[f],f),[r]:o.parse(e[f],f)};return c}parseArrayData(t,e,i,s){const{xScale:n,yScale:o}=t,a=new Array(s);let r,l,h,c;for(r=0,l=s;r<l;++r)h=r+i,c=e[h],a[r]={x:n.parse(c[0],h),y:o.parse(c[1],h)};return a}parseObjectData(t,e,i,s){const{xScale:n,yScale:o}=t,{xAxisKey:a="x",yAxisKey:r="y"}=this._parsing,l=new Array(s);let h,c,d,u;for(h=0,c=s;h<c;++h)d=h+i,u=e[d],l[h]={x:n.parse(M(u,a),d),y:o.parse(M(u,r),d)};return l}getParsed(t){return this._cachedMeta._parsed[t]}getDataElement(t){return this._cachedMeta.data[t]}applyStack(t,e,i){const s=this.chart,n=this._cachedMeta,o=e[t.axis];return Rs({keys:Es(s,!0),values:e._stacks[t.axis]._visualValues},o,n.index,{mode:i})}updateRangeFromParsed(t,e,i,s){const n=i[e.axis];let o=null===n?NaN:n;const a=s&&i._stacks[e.axis];s&&a&&(s.values=a,o=Rs(s,n,this._cachedMeta.index)),t.min=Math.min(t.min,o),t.max=Math.max(t.max,o)}getMinMax(t,e){const i=this._cachedMeta,s=i._parsed,n=i._sorted&&t===i.iScale,o=s.length,r=this._getOtherScale(t),l=((t,e,i)=>t&&!e.hidden&&e._stacked&&{keys:Es(i,!0),values:null})(e,i,this.chart),h={min:Number.POSITIVE_INFINITY,max:Number.NEGATIVE_INFINITY},{min:c,max:d}=function(t){const{min:e,max:i,minDefined:s,maxDefined:n}=t.getUserBounds();return{min:s?e:Number.NEGATIVE_INFINITY,max:n?i:Number.POSITIVE_INFINITY}}(r);let u,f;function g(){f=s[u];const e=f[r.axis];return!a(f[t.axis])||c>e||d<e}for(u=0;u<o&&(g()||(this.updateRangeFromParsed(h,t,f,l),!n));++u);if(n)for(u=o-1;u>=0;--u)if(!g()){this.updateRangeFromParsed(h,t,f,l);break}return h}getAllParsedValues(t){const e=this._cachedMeta._parsed,i=[];let s,n,o;for(s=0,n=e.length;s<n;++s)o=e[s][t.axis],a(o)&&i.push(o);return i}getMaxOverflow(){return!1}getLabelAndValue(t){const e=this._cachedMeta,i=e.iScale,s=e.vScale,n=this.getParsed(t);return{label:i?""+i.getLabelForValue(n[i.axis]):"",value:s?""+s.getLabelForValue(n[s.axis]):""}}_update(t){const e=this._cachedMeta;this.update(t||"default"),e._clip=function(t){let e,i,s,n;return o(t)?(e=t.top,i=t.right,s=t.bottom,n=t.left):e=i=s=n=t,{top:e,right:i,bottom:s,left:n,disabled:!1===t}}(l(this.options.clip,function(t,e,i){if(!1===i)return!1;const s=Ls(t,i),n=Ls(e,i);return{top:n.end,right:s.end,bottom:n.start,left:s.start}}(e.xScale,e.yScale,this.getMaxOverflow())))}update(t){}draw(){const t=this._ctx,e=this.chart,i=this._cachedMeta,s=i.data||[],n=e.chartArea,o=[],a=this._drawStart||0,r=this._drawCount||s.length-a,l=this.options.drawActiveElementsOnTop;let h;for(i.dataset&&i.dataset.draw(t,n,a,r),h=a;h<a+r;++h){const e=s[h];e.hidden||(e.active&&l?o.push(e):e.draw(t,n))}for(h=0;h<o.length;++h)o[h].draw(t,n)}getStyle(t,e){const i=e?"active":"default";return void 0===t&&this._cachedMeta.dataset?this.resolveDatasetElementOptions(i):this.resolveDataElementOptions(t||0,i)}getContext(t,e,i){const s=this.getDataset();let n;if(t>=0&&t<this._cachedMeta.data.length){const e=this._cachedMeta.data[t];n=e.$context||(e.$context=function(t,e,i){return Ci(t,{active:!1,dataIndex:e,parsed:void 0,raw:void 0,element:i,index:e,mode:"default",type:"data"})}(this.getContext(),t,e)),n.parsed=this.getParsed(t),n.raw=s.data[t],n.index=n.dataIndex=t}else n=this.$context||(this.$context=function(t,e){return Ci(t,{active:!1,dataset:void 0,datasetIndex:e,index:e,mode:"default",type:"dataset"})}(this.chart.getContext(),this.index)),n.dataset=s,n.index=n.datasetIndex=this.index;return n.active=!!e,n.mode=i,n}resolveDatasetElementOptions(t){return this._resolveElementOptions(this.datasetElementType.id,t)}resolveDataElementOptions(t,e){return this._resolveElementOptions(this.dataElementType.id,e,t)}_resolveElementOptions(t,e="default",i){const s="active"===e,n=this._cachedDataOpts,o=t+"-"+e,a=n[o],r=this.enableOptionSharing&&k(i);if(a)return Hs(a,r);const l=this.chart.config,h=l.datasetElementScopeKeys(this._type,t),c=s?[`${t}Hover`,"hover",t,""]:[t,""],d=l.getOptionScopes(this.getDataset(),h),u=Object.keys(ue.elements[t]),f=l.resolveNamedOptions(d,u,(()=>this.getContext(i,s,e)),c);return f.$shared&&(f.$shared=r,n[o]=Object.freeze(Hs(f,r))),f}_resolveAnimations(t,e,i){const s=this.chart,n=this._cachedDataOpts,o=`animation-${e}`,a=n[o];if(a)return a;let r;if(!1!==s.options.animation){const s=this.chart.config,n=s.datasetAnimationScopeKeys(this._type,e),o=s.getOptionScopes(this.getDataset(),n);r=s.createResolver(o,this.getContext(t,i,e))}const l=new Ts(s,r&&r.animations);return r&&r._cacheable&&(n[o]=Object.freeze(l)),l}getSharedOptions(t){if(t.$shared)return this._sharedOptions||(this._sharedOptions=Object.assign({},t))}includeOptions(t,e){return!e||Ns(t)||this.chart._animationsDisabled}_getSharedOptions(t,e){const i=this.resolveDataElementOptions(t,e),s=this._sharedOptions,n=this.getSharedOptions(i),o=this.includeOptions(e,n)||n!==s;return this.updateSharedOptions(n,e,i),{sharedOptions:n,includeOptions:o}}updateElement(t,e,i,s){Ns(s)?Object.assign(t,i):this._resolveAnimations(e,s).update(t,i)}updateSharedOptions(t,e,i){t&&!Ns(e)&&this._resolveAnimations(void 0,e).update(t,i)}_setStyle(t,e,i,s){t.active=s;const n=this.getStyle(e,s);this._resolveAnimations(e,i,s).update(t,{options:!s&&this.getSharedOptions(n)||n})}removeHoverStyle(t,e,i){this._setStyle(t,i,"active",!1)}setHoverStyle(t,e,i){this._setStyle(t,i,"active",!0)}_removeDatasetHoverStyle(){const t=this._cachedMeta.dataset;t&&this._setStyle(t,void 0,"active",!1)}_setDatasetHoverStyle(){const t=this._cachedMeta.dataset;t&&this._setStyle(t,void 0,"active",!0)}_resyncElements(t){const e=this._data,i=this._cachedMeta.data;for(const[t,e,i]of this._syncList)this[t](e,i);this._syncList=[];const s=i.length,n=e.length,o=Math.min(n,s);o&&this.parse(0,o),n>s?this._insertElements(s,n-s,t):n<s&&this._removeElements(n,s-n)}_insertElements(t,e,i=!0){const s=this._cachedMeta,n=s.data,o=t+e;let a;const r=t=>{for(t.length+=e,a=t.length-1;a>=o;a--)t[a]=t[a-e]};for(r(n),a=t;a<o;++a)n[a]=new this.dataElementType;this._parsing&&r(s._parsed),this.parse(t,e),i&&this.updateElements(n,t,e,"reset")}updateElements(t,e,i,s){}_removeElements(t,e){const i=this._cachedMeta;if(this._parsing){const s=i._parsed.splice(t,e);i._stacked&&Ws(i,s)}i.data.splice(t,e)}_sync(t){if(this._parsing)this._syncList.push(t);else{const[e,i,s]=t;this[e](i,s)}this.chart._dataChanges.push([this.index,...t])}_onDataPush(){const t=arguments.length;this._sync(["_insertElements",this.getDataset().data.length-t,t])}_onDataPop(){this._sync(["_removeElements",this._cachedMeta.data.length-1,1])}_onDataShift(){this._sync(["_removeElements",0,1])}_onDataSplice(t,e){e&&this._sync(["_removeElements",t,e]);const i=arguments.length-2;i&&this._sync(["_insertElements",t,i])}_onDataUnshift(){this._sync(["_insertElements",0,arguments.length])}}class $s{static defaults={};static defaultRoutes=void 0;x;y;active=!1;options;$animations;tooltipPosition(t){const{x:e,y:i}=this.getProps(["x","y"],t);return{x:e,y:i}}hasValue(){return N(this.x)&&N(this.y)}getProps(t,e){const i=this.$animations;if(!e||!i)return this;const s={};return t.forEach((t=>{s[t]=i[t]&&i[t].active()?i[t]._to:this[t]})),s}}function Ys(t,e){const i=t.options.ticks,n=function(t){const e=t.options.offset,i=t._tickSize(),s=t._length/i+(e?0:1),n=t._maxLength/i;return Math.floor(Math.min(s,n))}(t),o=Math.min(i.maxTicksLimit||n,n),a=i.major.enabled?function(t){const e=[];let i,s;for(i=0,s=t.length;i<s;i++)t[i].major&&e.push(i);return e}(e):[],r=a.length,l=a[0],h=a[r-1],c=[];if(r>o)return function(t,e,i,s){let n,o=0,a=i[0];for(s=Math.ceil(s),n=0;n<t.length;n++)n===a&&(e.push(t[n]),o++,a=i[o*s])}(e,c,a,r/o),c;const d=function(t,e,i){const s=function(t){const e=t.length;let i,s;if(e<2)return!1;for(s=t[0],i=1;i<e;++i)if(t[i]-t[i-1]!==s)return!1;return s}(t),n=e.length/i;if(!s)return Math.max(n,1);const o=W(s);for(let t=0,e=o.length-1;t<e;t++){const e=o[t];if(e>n)return e}return Math.max(n,1)}(a,e,o);if(r>0){let t,i;const n=r>1?Math.round((h-l)/(r-1)):null;for(Us(e,c,d,s(n)?0:l-n,l),t=0,i=r-1;t<i;t++)Us(e,c,d,a[t],a[t+1]);return Us(e,c,d,h,s(n)?e.length:h+n),c}return Us(e,c,d),c}function Us(t,e,i,s,n){const o=l(s,0),a=Math.min(l(n,t.length),t.length);let r,h,c,d=0;for(i=Math.ceil(i),n&&(r=n-s,i=r/Math.floor(r/i)),c=o;c<0;)d++,c=Math.round(o+d*i);for(h=Math.max(o,0);h<a;h++)h===c&&(e.push(t[h]),d++,c=Math.round(o+d*i))}const Xs=(t,e,i)=>"top"===e||"left"===e?t[e]+i:t[e]-i,qs=(t,e)=>Math.min(e||t,t);function Ks(t,e){const i=[],s=t.length/e,n=t.length;let o=0;for(;o<n;o+=s)i.push(t[Math.floor(o)]);return i}function Gs(t,e,i){const s=t.ticks.length,n=Math.min(e,s-1),o=t._startPixel,a=t._endPixel,r=1e-6;let l,h=t.getPixelForTick(n);if(!(i&&(l=1===s?Math.max(h-o,a-h):0===e?(t.getPixelForTick(1)-h)/2:(h-t.getPixelForTick(n-1))/2,h+=n<e?l:-l,h<o-r||h>a+r)))return h}function Js(t){return t.drawTicks?t.tickLength:0}function Zs(t,e){if(!t.display)return 0;const i=Si(t.font,e),s=ki(t.padding);return(n(t.text)?t.text.length:1)*i.lineHeight+s.height}function Qs(t,e,i){let s=ut(t);return(i&&"right"!==e||!i&&"right"===e)&&(s=(t=>"left"===t?"right":"right"===t?"left":t)(s)),s}class tn extends $s{constructor(t){super(),this.id=t.id,this.type=t.type,this.options=void 0,this.ctx=t.ctx,this.chart=t.chart,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.width=void 0,this.height=void 0,this._margins={left:0,right:0,top:0,bottom:0},this.maxWidth=void 0,this.maxHeight=void 0,this.paddingTop=void 0,this.paddingBottom=void 0,this.paddingLeft=void 0,this.paddingRight=void 0,this.axis=void 0,this.labelRotation=void 0,this.min=void 0,this.max=void 0,this._range=void 0,this.ticks=[],this._gridLineItems=null,this._labelItems=null,this._labelSizes=null,this._length=0,this._maxLength=0,this._longestTextCache={},this._startPixel=void 0,this._endPixel=void 0,this._reversePixels=!1,this._userMax=void 0,this._userMin=void 0,this._suggestedMax=void 0,this._suggestedMin=void 0,this._ticksLength=0,this._borderValue=0,this._cache={},this._dataLimitsCached=!1,this.$context=void 0}init(t){this.options=t.setContext(this.getContext()),this.axis=t.axis,this._userMin=this.parse(t.min),this._userMax=this.parse(t.max),this._suggestedMin=this.parse(t.suggestedMin),this._suggestedMax=this.parse(t.suggestedMax)}parse(t,e){return t}getUserBounds(){let{_userMin:t,_userMax:e,_suggestedMin:i,_suggestedMax:s}=this;return t=r(t,Number.POSITIVE_INFINITY),e=r(e,Number.NEGATIVE_INFINITY),i=r(i,Number.POSITIVE_INFINITY),s=r(s,Number.NEGATIVE_INFINITY),{min:r(t,i),max:r(e,s),minDefined:a(t),maxDefined:a(e)}}getMinMax(t){let e,{min:i,max:s,minDefined:n,maxDefined:o}=this.getUserBounds();if(n&&o)return{min:i,max:s};const a=this.getMatchingVisibleMetas();for(let r=0,l=a.length;r<l;++r)e=a[r].controller.getMinMax(this,t),n||(i=Math.min(i,e.min)),o||(s=Math.max(s,e.max));return i=o&&i>s?s:i,s=n&&i>s?i:s,{min:r(i,r(s,i)),max:r(s,r(i,s))}}getPadding(){return{left:this.paddingLeft||0,top:this.paddingTop||0,right:this.paddingRight||0,bottom:this.paddingBottom||0}}getTicks(){return this.ticks}getLabels(){const t=this.chart.data;return this.options.labels||(this.isHorizontal()?t.xLabels:t.yLabels)||t.labels||[]}getLabelItems(t=this.chart.chartArea){return this._labelItems||(this._labelItems=this._computeLabelItems(t))}beforeLayout(){this._cache={},this._dataLimitsCached=!1}beforeUpdate(){d(this.options.beforeUpdate,[this])}update(t,e,i){const{beginAtZero:s,grace:n,ticks:o}=this.options,a=o.sampleSize;this.beforeUpdate(),this.maxWidth=t,this.maxHeight=e,this._margins=i=Object.assign({left:0,right:0,top:0,bottom:0},i),this.ticks=null,this._labelSizes=null,this._gridLineItems=null,this._labelItems=null,this.beforeSetDimensions(),this.setDimensions(),this.afterSetDimensions(),this._maxLength=this.isHorizontal()?this.width+i.left+i.right:this.height+i.top+i.bottom,this._dataLimitsCached||(this.beforeDataLimits(),this.determineDataLimits(),this.afterDataLimits(),this._range=Di(this,n,s),this._dataLimitsCached=!0),this.beforeBuildTicks(),this.ticks=this.buildTicks()||[],this.afterBuildTicks();const r=a<this.ticks.length;this._convertTicksToLabels(r?Ks(this.ticks,a):this.ticks),this.configure(),this.beforeCalculateLabelRotation(),this.calculateLabelRotation(),this.afterCalculateLabelRotation(),o.display&&(o.autoSkip||"auto"===o.source)&&(this.ticks=Ys(this,this.ticks),this._labelSizes=null,this.afterAutoSkip()),r&&this._convertTicksToLabels(this.ticks),this.beforeFit(),this.fit(),this.afterFit(),this.afterUpdate()}configure(){let t,e,i=this.options.reverse;this.isHorizontal()?(t=this.left,e=this.right):(t=this.top,e=this.bottom,i=!i),this._startPixel=t,this._endPixel=e,this._reversePixels=i,this._length=e-t,this._alignToPixels=this.options.alignToPixels}afterUpdate(){d(this.options.afterUpdate,[this])}beforeSetDimensions(){d(this.options.beforeSetDimensions,[this])}setDimensions(){this.isHorizontal()?(this.width=this.maxWidth,this.left=0,this.right=this.width):(this.height=this.maxHeight,this.top=0,this.bottom=this.height),this.paddingLeft=0,this.paddingTop=0,this.paddingRight=0,this.paddingBottom=0}afterSetDimensions(){d(this.options.afterSetDimensions,[this])}_callHooks(t){this.chart.notifyPlugins(t,this.getContext()),d(this.options[t],[this])}beforeDataLimits(){this._callHooks("beforeDataLimits")}determineDataLimits(){}afterDataLimits(){this._callHooks("afterDataLimits")}beforeBuildTicks(){this._callHooks("beforeBuildTicks")}buildTicks(){return[]}afterBuildTicks(){this._callHooks("afterBuildTicks")}beforeTickToLabelConversion(){d(this.options.beforeTickToLabelConversion,[this])}generateTickLabels(t){const e=this.options.ticks;let i,s,n;for(i=0,s=t.length;i<s;i++)n=t[i],n.label=d(e.callback,[n.value,i,t],this)}afterTickToLabelConversion(){d(this.options.afterTickToLabelConversion,[this])}beforeCalculateLabelRotation(){d(this.options.beforeCalculateLabelRotation,[this])}calculateLabelRotation(){const t=this.options,e=t.ticks,i=qs(this.ticks.length,t.ticks.maxTicksLimit),s=e.minRotation||0,n=e.maxRotation;let o,a,r,l=s;if(!this._isVisible()||!e.display||s>=n||i<=1||!this.isHorizontal())return void(this.labelRotation=s);const h=this._getLabelSizes(),c=h.widest.width,d=h.highest.height,u=Z(this.chart.width-c,0,this.maxWidth);o=t.offset?this.maxWidth/i:u/(i-1),c+6>o&&(o=u/(i-(t.offset?.5:1)),a=this.maxHeight-Js(t.grid)-e.padding-Zs(t.title,this.chart.options.font),r=Math.sqrt(c*c+d*d),l=Y(Math.min(Math.asin(Z((h.highest.height+6)/o,-1,1)),Math.asin(Z(a/r,-1,1))-Math.asin(Z(d/r,-1,1)))),l=Math.max(s,Math.min(n,l))),this.labelRotation=l}afterCalculateLabelRotation(){d(this.options.afterCalculateLabelRotation,[this])}afterAutoSkip(){}beforeFit(){d(this.options.beforeFit,[this])}fit(){const t={width:0,height:0},{chart:e,options:{ticks:i,title:s,grid:n}}=this,o=this._isVisible(),a=this.isHorizontal();if(o){const o=Zs(s,e.options.font);if(a?(t.width=this.maxWidth,t.height=Js(n)+o):(t.height=this.maxHeight,t.width=Js(n)+o),i.display&&this.ticks.length){const{first:e,last:s,widest:n,highest:o}=this._getLabelSizes(),r=2*i.padding,l=$(this.labelRotation),h=Math.cos(l),c=Math.sin(l);if(a){const e=i.mirror?0:c*n.width+h*o.height;t.height=Math.min(this.maxHeight,t.height+e+r)}else{const e=i.mirror?0:h*n.width+c*o.height;t.width=Math.min(this.maxWidth,t.width+e+r)}this._calculatePadding(e,s,c,h)}}this._handleMargins(),a?(this.width=this._length=e.width-this._margins.left-this._margins.right,this.height=t.height):(this.width=t.width,this.height=this._length=e.height-this._margins.top-this._margins.bottom)}_calculatePadding(t,e,i,s){const{ticks:{align:n,padding:o},position:a}=this.options,r=0!==this.labelRotation,l="top"!==a&&"x"===this.axis;if(this.isHorizontal()){const a=this.getPixelForTick(0)-this.left,h=this.right-this.getPixelForTick(this.ticks.length-1);let c=0,d=0;r?l?(c=s*t.width,d=i*e.height):(c=i*t.height,d=s*e.width):"start"===n?d=e.width:"end"===n?c=t.width:"inner"!==n&&(c=t.width/2,d=e.width/2),this.paddingLeft=Math.max((c-a+o)*this.width/(this.width-a),0),this.paddingRight=Math.max((d-h+o)*this.width/(this.width-h),0)}else{let i=e.height/2,s=t.height/2;"start"===n?(i=0,s=t.height):"end"===n&&(i=e.height,s=0),this.paddingTop=i+o,this.paddingBottom=s+o}}_handleMargins(){this._margins&&(this._margins.left=Math.max(this.paddingLeft,this._margins.left),this._margins.top=Math.max(this.paddingTop,this._margins.top),this._margins.right=Math.max(this.paddingRight,this._margins.right),this._margins.bottom=Math.max(this.paddingBottom,this._margins.bottom))}afterFit(){d(this.options.afterFit,[this])}isHorizontal(){const{axis:t,position:e}=this.options;return"top"===e||"bottom"===e||"x"===t}isFullSize(){return this.options.fullSize}_convertTicksToLabels(t){let e,i;for(this.beforeTickToLabelConversion(),this.generateTickLabels(t),e=0,i=t.length;e<i;e++)s(t[e].label)&&(t.splice(e,1),i--,e--);this.afterTickToLabelConversion()}_getLabelSizes(){let t=this._labelSizes;if(!t){const e=this.options.ticks.sampleSize;let i=this.ticks;e<i.length&&(i=Ks(i,e)),this._labelSizes=t=this._computeLabelSizes(i,i.length,this.options.ticks.maxTicksLimit)}return t}_computeLabelSizes(t,e,i){const{ctx:o,_longestTextCache:a}=this,r=[],l=[],h=Math.floor(e/qs(e,i));let c,d,f,g,p,m,x,b,_,y,v,M=0,w=0;for(c=0;c<e;c+=h){if(g=t[c].label,p=this._resolveTickFontOptions(c),o.font=m=p.string,x=a[m]=a[m]||{data:{},gc:[]},b=p.lineHeight,_=y=0,s(g)||n(g)){if(n(g))for(d=0,f=g.length;d<f;++d)v=g[d],s(v)||n(v)||(_=Ce(o,x.data,x.gc,_,v),y+=b)}else _=Ce(o,x.data,x.gc,_,g),y=b;r.push(_),l.push(y),M=Math.max(_,M),w=Math.max(y,w)}!function(t,e){u(t,(t=>{const i=t.gc,s=i.length/2;let n;if(s>e){for(n=0;n<s;++n)delete t.data[i[n]];i.splice(0,s)}}))}(a,e);const k=r.indexOf(M),S=l.indexOf(w),P=t=>({width:r[t]||0,height:l[t]||0});return{first:P(0),last:P(e-1),widest:P(k),highest:P(S),widths:r,heights:l}}getLabelForValue(t){return t}getPixelForValue(t,e){return NaN}getValueForPixel(t){}getPixelForTick(t){const e=this.ticks;return t<0||t>e.length-1?null:this.getPixelForValue(e[t].value)}getPixelForDecimal(t){this._reversePixels&&(t=1-t);const e=this._startPixel+t*this._length;return Q(this._alignToPixels?Ae(this.chart,e,0):e)}getDecimalForPixel(t){const e=(t-this._startPixel)/this._length;return this._reversePixels?1-e:e}getBasePixel(){return this.getPixelForValue(this.getBaseValue())}getBaseValue(){const{min:t,max:e}=this;return t<0&&e<0?e:t>0&&e>0?t:0}getContext(t){const e=this.ticks||[];if(t>=0&&t<e.length){const i=e[t];return i.$context||(i.$context=function(t,e,i){return Ci(t,{tick:i,index:e,type:"tick"})}(this.getContext(),t,i))}return this.$context||(this.$context=Ci(this.chart.getContext(),{scale:this,type:"scale"}))}_tickSize(){const t=this.options.ticks,e=$(this.labelRotation),i=Math.abs(Math.cos(e)),s=Math.abs(Math.sin(e)),n=this._getLabelSizes(),o=t.autoSkipPadding||0,a=n?n.widest.width+o:0,r=n?n.highest.height+o:0;return this.isHorizontal()?r*i>a*s?a/i:r/s:r*s<a*i?r/i:a/s}_isVisible(){const t=this.options.display;return"auto"!==t?!!t:this.getMatchingVisibleMetas().length>0}_computeGridLineItems(t){const e=this.axis,i=this.chart,s=this.options,{grid:n,position:a,border:r}=s,h=n.offset,c=this.isHorizontal(),d=this.ticks.length+(h?1:0),u=Js(n),f=[],g=r.setContext(this.getContext()),p=g.display?g.width:0,m=p/2,x=function(t){return Ae(i,t,p)};let b,_,y,v,M,w,k,S,P,D,C,O;if("top"===a)b=x(this.bottom),w=this.bottom-u,S=b-m,D=x(t.top)+m,O=t.bottom;else if("bottom"===a)b=x(this.top),D=t.top,O=x(t.bottom)-m,w=b+m,S=this.top+u;else if("left"===a)b=x(this.right),M=this.right-u,k=b-m,P=x(t.left)+m,C=t.right;else if("right"===a)b=x(this.left),P=t.left,C=x(t.right)-m,M=b+m,k=this.left+u;else if("x"===e){if("center"===a)b=x((t.top+t.bottom)/2+.5);else if(o(a)){const t=Object.keys(a)[0],e=a[t];b=x(this.chart.scales[t].getPixelForValue(e))}D=t.top,O=t.bottom,w=b+m,S=w+u}else if("y"===e){if("center"===a)b=x((t.left+t.right)/2);else if(o(a)){const t=Object.keys(a)[0],e=a[t];b=x(this.chart.scales[t].getPixelForValue(e))}M=b-m,k=M-u,P=t.left,C=t.right}const A=l(s.ticks.maxTicksLimit,d),T=Math.max(1,Math.ceil(d/A));for(_=0;_<d;_+=T){const t=this.getContext(_),e=n.setContext(t),s=r.setContext(t),o=e.lineWidth,a=e.color,l=s.dash||[],d=s.dashOffset,u=e.tickWidth,g=e.tickColor,p=e.tickBorderDash||[],m=e.tickBorderDashOffset;y=Gs(this,_,h),void 0!==y&&(v=Ae(i,y,o),c?M=k=P=C=v:w=S=D=O=v,f.push({tx1:M,ty1:w,tx2:k,ty2:S,x1:P,y1:D,x2:C,y2:O,width:o,color:a,borderDash:l,borderDashOffset:d,tickWidth:u,tickColor:g,tickBorderDash:p,tickBorderDashOffset:m}))}return this._ticksLength=d,this._borderValue=b,f}_computeLabelItems(t){const e=this.axis,i=this.options,{position:s,ticks:a}=i,r=this.isHorizontal(),l=this.ticks,{align:h,crossAlign:c,padding:d,mirror:u}=a,f=Js(i.grid),g=f+d,p=u?-d:g,m=-$(this.labelRotation),x=[];let b,_,y,v,M,w,k,S,P,D,C,O,A="middle";if("top"===s)w=this.bottom-p,k=this._getXAxisLabelAlignment();else if("bottom"===s)w=this.top+p,k=this._getXAxisLabelAlignment();else if("left"===s){const t=this._getYAxisLabelAlignment(f);k=t.textAlign,M=t.x}else if("right"===s){const t=this._getYAxisLabelAlignment(f);k=t.textAlign,M=t.x}else if("x"===e){if("center"===s)w=(t.top+t.bottom)/2+g;else if(o(s)){const t=Object.keys(s)[0],e=s[t];w=this.chart.scales[t].getPixelForValue(e)+g}k=this._getXAxisLabelAlignment()}else if("y"===e){if("center"===s)M=(t.left+t.right)/2-g;else if(o(s)){const t=Object.keys(s)[0],e=s[t];M=this.chart.scales[t].getPixelForValue(e)}k=this._getYAxisLabelAlignment(f).textAlign}"y"===e&&("start"===h?A="top":"end"===h&&(A="bottom"));const T=this._getLabelSizes();for(b=0,_=l.length;b<_;++b){y=l[b],v=y.label;const t=a.setContext(this.getContext(b));S=this.getPixelForTick(b)+a.labelOffset,P=this._resolveTickFontOptions(b),D=P.lineHeight,C=n(v)?v.length:1;const e=C/2,i=t.color,o=t.textStrokeColor,h=t.textStrokeWidth;let d,f=k;if(r?(M=S,"inner"===k&&(f=b===_-1?this.options.reverse?"left":"right":0===b?this.options.reverse?"right":"left":"center"),O="top"===s?"near"===c||0!==m?-C*D+D/2:"center"===c?-T.highest.height/2-e*D+D:-T.highest.height+D/2:"near"===c||0!==m?D/2:"center"===c?T.highest.height/2-e*D:T.highest.height-C*D,u&&(O*=-1),0===m||t.showLabelBackdrop||(M+=D/2*Math.sin(m))):(w=S,O=(1-C)*D/2),t.showLabelBackdrop){const e=ki(t.backdropPadding),i=T.heights[b],s=T.widths[b];let n=O-e.top,o=0-e.left;switch(A){case"middle":n-=i/2;break;case"bottom":n-=i}switch(k){case"center":o-=s/2;break;case"right":o-=s;break;case"inner":b===_-1?o-=s:b>0&&(o-=s/2)}d={left:o,top:n,width:s+e.width,height:i+e.height,color:t.backdropColor}}x.push({label:v,font:P,textOffset:O,options:{rotation:m,color:i,strokeColor:o,strokeWidth:h,textAlign:f,textBaseline:A,translation:[M,w],backdrop:d}})}return x}_getXAxisLabelAlignment(){const{position:t,ticks:e}=this.options;if(-$(this.labelRotation))return"top"===t?"left":"right";let i="center";return"start"===e.align?i="left":"end"===e.align?i="right":"inner"===e.align&&(i="inner"),i}_getYAxisLabelAlignment(t){const{position:e,ticks:{crossAlign:i,mirror:s,padding:n}}=this.options,o=t+n,a=this._getLabelSizes().widest.width;let r,l;return"left"===e?s?(l=this.right+n,"near"===i?r="left":"center"===i?(r="center",l+=a/2):(r="right",l+=a)):(l=this.right-o,"near"===i?r="right":"center"===i?(r="center",l-=a/2):(r="left",l=this.left)):"right"===e?s?(l=this.left+n,"near"===i?r="right":"center"===i?(r="center",l-=a/2):(r="left",l-=a)):(l=this.left+o,"near"===i?r="left":"center"===i?(r="center",l+=a/2):(r="right",l=this.right)):r="right",{textAlign:r,x:l}}_computeLabelArea(){if(this.options.ticks.mirror)return;const t=this.chart,e=this.options.position;return"left"===e||"right"===e?{top:0,left:this.left,bottom:t.height,right:this.right}:"top"===e||"bottom"===e?{top:this.top,left:0,bottom:this.bottom,right:t.width}:void 0}drawBackground(){const{ctx:t,options:{backgroundColor:e},left:i,top:s,width:n,height:o}=this;e&&(t.save(),t.fillStyle=e,t.fillRect(i,s,n,o),t.restore())}getLineWidthForValue(t){const e=this.options.grid;if(!this._isVisible()||!e.display)return 0;const i=this.ticks.findIndex((e=>e.value===t));if(i>=0){return e.setContext(this.getContext(i)).lineWidth}return 0}drawGrid(t){const e=this.options.grid,i=this.ctx,s=this._gridLineItems||(this._gridLineItems=this._computeGridLineItems(t));let n,o;const a=(t,e,s)=>{s.width&&s.color&&(i.save(),i.lineWidth=s.width,i.strokeStyle=s.color,i.setLineDash(s.borderDash||[]),i.lineDashOffset=s.borderDashOffset,i.beginPath(),i.moveTo(t.x,t.y),i.lineTo(e.x,e.y),i.stroke(),i.restore())};if(e.display)for(n=0,o=s.length;n<o;++n){const t=s[n];e.drawOnChartArea&&a({x:t.x1,y:t.y1},{x:t.x2,y:t.y2},t),e.drawTicks&&a({x:t.tx1,y:t.ty1},{x:t.tx2,y:t.ty2},{color:t.tickColor,width:t.tickWidth,borderDash:t.tickBorderDash,borderDashOffset:t.tickBorderDashOffset})}}drawBorder(){const{chart:t,ctx:e,options:{border:i,grid:s}}=this,n=i.setContext(this.getContext()),o=i.display?n.width:0;if(!o)return;const a=s.setContext(this.getContext(0)).lineWidth,r=this._borderValue;let l,h,c,d;this.isHorizontal()?(l=Ae(t,this.left,o)-o/2,h=Ae(t,this.right,a)+a/2,c=d=r):(c=Ae(t,this.top,o)-o/2,d=Ae(t,this.bottom,a)+a/2,l=h=r),e.save(),e.lineWidth=n.width,e.strokeStyle=n.color,e.beginPath(),e.moveTo(l,c),e.lineTo(h,d),e.stroke(),e.restore()}drawLabels(t){if(!this.options.ticks.display)return;const e=this.ctx,i=this._computeLabelArea();i&&Ie(e,i);const s=this.getLabelItems(t);for(const t of s){const i=t.options,s=t.font;Ne(e,t.label,0,t.textOffset,s,i)}i&&ze(e)}drawTitle(){const{ctx:t,options:{position:e,title:i,reverse:s}}=this;if(!i.display)return;const a=Si(i.font),r=ki(i.padding),l=i.align;let h=a.lineHeight/2;"bottom"===e||"center"===e||o(e)?(h+=r.bottom,n(i.text)&&(h+=a.lineHeight*(i.text.length-1))):h+=r.top;const{titleX:c,titleY:d,maxWidth:u,rotation:f}=function(t,e,i,s){const{top:n,left:a,bottom:r,right:l,chart:h}=t,{chartArea:c,scales:d}=h;let u,f,g,p=0;const m=r-n,x=l-a;if(t.isHorizontal()){if(f=ft(s,a,l),o(i)){const t=Object.keys(i)[0],s=i[t];g=d[t].getPixelForValue(s)+m-e}else g="center"===i?(c.bottom+c.top)/2+m-e:Xs(t,i,e);u=l-a}else{if(o(i)){const t=Object.keys(i)[0],s=i[t];f=d[t].getPixelForValue(s)-x+e}else f="center"===i?(c.left+c.right)/2-x+e:Xs(t,i,e);g=ft(s,r,n),p="left"===i?-E:E}return{titleX:f,titleY:g,maxWidth:u,rotation:p}}(this,h,e,l);Ne(t,i.text,0,0,a,{color:i.color,maxWidth:u,rotation:f,textAlign:Qs(l,e,s),textBaseline:"middle",translation:[c,d]})}draw(t){this._isVisible()&&(this.drawBackground(),this.drawGrid(t),this.drawBorder(),this.drawTitle(),this.drawLabels(t))}_layers(){const t=this.options,e=t.ticks&&t.ticks.z||0,i=l(t.grid&&t.grid.z,-1),s=l(t.border&&t.border.z,0);return this._isVisible()&&this.draw===tn.prototype.draw?[{z:i,draw:t=>{this.drawBackground(),this.drawGrid(t),this.drawTitle()}},{z:s,draw:()=>{this.drawBorder()}},{z:e,draw:t=>{this.drawLabels(t)}}]:[{z:e,draw:t=>{this.draw(t)}}]}getMatchingVisibleMetas(t){const e=this.chart.getSortedVisibleDatasetMetas(),i=this.axis+"AxisID",s=[];let n,o;for(n=0,o=e.length;n<o;++n){const o=e[n];o[i]!==this.id||t&&o.type!==t||s.push(o)}return s}_resolveTickFontOptions(t){return Si(this.options.ticks.setContext(this.getContext(t)).font)}_maxDigits(){const t=this._resolveTickFontOptions(0).lineHeight;return(this.isHorizontal()?this.width:this.height)/t}}class en{constructor(t,e,i){this.type=t,this.scope=e,this.override=i,this.items=Object.create(null)}isForType(t){return Object.prototype.isPrototypeOf.call(this.type.prototype,t.prototype)}register(t){const e=Object.getPrototypeOf(t);let i;(function(t){return"id"in t&&"defaults"in t})(e)&&(i=this.register(e));const s=this.items,n=t.id,o=this.scope+"."+n;if(!n)throw new Error("class does not have id: "+t);return n in s||(s[n]=t,function(t,e,i){const s=x(Object.create(null),[i?ue.get(i):{},ue.get(e),t.defaults]);ue.set(e,s),t.defaultRoutes&&function(t,e){Object.keys(e).forEach((i=>{const s=i.split("."),n=s.pop(),o=[t].concat(s).join("."),a=e[i].split("."),r=a.pop(),l=a.join(".");ue.route(o,n,l,r)}))}(e,t.defaultRoutes);t.descriptors&&ue.describe(e,t.descriptors)}(t,o,i),this.override&&ue.override(t.id,t.overrides)),o}get(t){return this.items[t]}unregister(t){const e=this.items,i=t.id,s=this.scope;i in e&&delete e[i],s&&i in ue[s]&&(delete ue[s][i],this.override&&delete re[i])}}class sn{constructor(){this.controllers=new en(js,"datasets",!0),this.elements=new en($s,"elements"),this.plugins=new en(Object,"plugins"),this.scales=new en(tn,"scales"),this._typedRegistries=[this.controllers,this.scales,this.elements]}add(...t){this._each("register",t)}remove(...t){this._each("unregister",t)}addControllers(...t){this._each("register",t,this.controllers)}addElements(...t){this._each("register",t,this.elements)}addPlugins(...t){this._each("register",t,this.plugins)}addScales(...t){this._each("register",t,this.scales)}getController(t){return this._get(t,this.controllers,"controller")}getElement(t){return this._get(t,this.elements,"element")}getPlugin(t){return this._get(t,this.plugins,"plugin")}getScale(t){return this._get(t,this.scales,"scale")}removeControllers(...t){this._each("unregister",t,this.controllers)}removeElements(...t){this._each("unregister",t,this.elements)}removePlugins(...t){this._each("unregister",t,this.plugins)}removeScales(...t){this._each("unregister",t,this.scales)}_each(t,e,i){[...e].forEach((e=>{const s=i||this._getRegistryForType(e);i||s.isForType(e)||s===this.plugins&&e.id?this._exec(t,s,e):u(e,(e=>{const s=i||this._getRegistryForType(e);this._exec(t,s,e)}))}))}_exec(t,e,i){const s=w(t);d(i["before"+s],[],i),e[t](i),d(i["after"+s],[],i)}_getRegistryForType(t){for(let e=0;e<this._typedRegistries.length;e++){const i=this._typedRegistries[e];if(i.isForType(t))return i}return this.plugins}_get(t,e,i){const s=e.get(t);if(void 0===s)throw new Error('"'+t+'" is not a registered '+i+".");return s}}var nn=new sn;class on{constructor(){this._init=void 0}notify(t,e,i,s){if("beforeInit"===e&&(this._init=this._createDescriptors(t,!0),this._notify(this._init,t,"install")),void 0===this._init)return;const n=s?this._descriptors(t).filter(s):this._descriptors(t),o=this._notify(n,t,e,i);return"afterDestroy"===e&&(this._notify(n,t,"stop"),this._notify(this._init,t,"uninstall"),this._init=void 0),o}_notify(t,e,i,s){s=s||{};for(const n of t){const t=n.plugin;if(!1===d(t[i],[e,s,n.options],t)&&s.cancelable)return!1}return!0}invalidate(){s(this._cache)||(this._oldCache=this._cache,this._cache=void 0)}_descriptors(t){if(this._cache)return this._cache;const e=this._cache=this._createDescriptors(t);return this._notifyStateChanges(t),e}_createDescriptors(t,e){const i=t&&t.config,s=l(i.options&&i.options.plugins,{}),n=function(t){const e={},i=[],s=Object.keys(nn.plugins.items);for(let t=0;t<s.length;t++)i.push(nn.getPlugin(s[t]));const n=t.plugins||[];for(let t=0;t<n.length;t++){const s=n[t];-1===i.indexOf(s)&&(i.push(s),e[s.id]=!0)}return{plugins:i,localIds:e}}(i);return!1!==s||e?function(t,{plugins:e,localIds:i},s,n){const o=[],a=t.getContext();for(const r of e){const e=r.id,l=an(s[e],n);null!==l&&o.push({plugin:r,options:rn(t.config,{plugin:r,local:i[e]},l,a)})}return o}(t,n,s,e):[]}_notifyStateChanges(t){const e=this._oldCache||[],i=this._cache,s=(t,e)=>t.filter((t=>!e.some((e=>t.plugin.id===e.plugin.id))));this._notify(s(e,i),t,"stop"),this._notify(s(i,e),t,"start")}}function an(t,e){return e||!1!==t?!0===t?{}:t:null}function rn(t,{plugin:e,local:i},s,n){const o=t.pluginScopeKeys(e),a=t.getOptionScopes(s,o);return i&&e.defaults&&a.push(e.defaults),t.createResolver(a,n,[""],{scriptable:!1,indexable:!1,allKeys:!0})}function ln(t,e){const i=ue.datasets[t]||{};return((e.datasets||{})[t]||{}).indexAxis||e.indexAxis||i.indexAxis||"x"}function hn(t){if("x"===t||"y"===t||"r"===t)return t}function cn(t,...e){if(hn(t))return t;for(const s of e){const e=s.axis||("top"===(i=s.position)||"bottom"===i?"x":"left"===i||"right"===i?"y":void 0)||t.length>1&&hn(t[0].toLowerCase());if(e)return e}var i;throw new Error(`Cannot determine type of '${t}' axis. Please provide 'axis' or 'position' option.`)}function dn(t,e,i){if(i[e+"AxisID"]===t)return{axis:e}}function un(t,e){const i=re[t.type]||{scales:{}},s=e.scales||{},n=ln(t.type,e),a=Object.create(null);return Object.keys(s).forEach((e=>{const r=s[e];if(!o(r))return console.error(`Invalid scale configuration for scale: ${e}`);if(r._proxy)return console.warn(`Ignoring resolver passed as options for scale: ${e}`);const l=cn(e,r,function(t,e){if(e.data&&e.data.datasets){const i=e.data.datasets.filter((e=>e.xAxisID===t||e.yAxisID===t));if(i.length)return dn(t,"x",i[0])||dn(t,"y",i[0])}return{}}(e,t),ue.scales[r.type]),h=function(t,e){return t===e?"_index_":"_value_"}(l,n),c=i.scales||{};a[e]=b(Object.create(null),[{axis:l},r,c[l],c[h]])})),t.data.datasets.forEach((i=>{const n=i.type||t.type,o=i.indexAxis||ln(n,e),r=(re[n]||{}).scales||{};Object.keys(r).forEach((t=>{const e=function(t,e){let i=t;return"_index_"===t?i=e:"_value_"===t&&(i="x"===e?"y":"x"),i}(t,o),n=i[e+"AxisID"]||e;a[n]=a[n]||Object.create(null),b(a[n],[{axis:e},s[n],r[t]])}))})),Object.keys(a).forEach((t=>{const e=a[t];b(e,[ue.scales[e.type],ue.scale])})),a}function fn(t){const e=t.options||(t.options={});e.plugins=l(e.plugins,{}),e.scales=un(t,e)}function gn(t){return(t=t||{}).datasets=t.datasets||[],t.labels=t.labels||[],t}const pn=new Map,mn=new Set;function xn(t,e){let i=pn.get(t);return i||(i=e(),pn.set(t,i),mn.add(i)),i}const bn=(t,e,i)=>{const s=M(e,i);void 0!==s&&t.add(s)};class _n{constructor(t){this._config=function(t){return(t=t||{}).data=gn(t.data),fn(t),t}(t),this._scopeCache=new Map,this._resolverCache=new Map}get platform(){return this._config.platform}get type(){return this._config.type}set type(t){this._config.type=t}get data(){return this._config.data}set data(t){this._config.data=gn(t)}get options(){return this._config.options}set options(t){this._config.options=t}get plugins(){return this._config.plugins}update(){const t=this._config;this.clearCache(),fn(t)}clearCache(){this._scopeCache.clear(),this._resolverCache.clear()}datasetScopeKeys(t){return xn(t,(()=>[[`datasets.${t}`,""]]))}datasetAnimationScopeKeys(t,e){return xn(`${t}.transition.${e}`,(()=>[[`datasets.${t}.transitions.${e}`,`transitions.${e}`],[`datasets.${t}`,""]]))}datasetElementScopeKeys(t,e){return xn(`${t}-${e}`,(()=>[[`datasets.${t}.elements.${e}`,`datasets.${t}`,`elements.${e}`,""]]))}pluginScopeKeys(t){const e=t.id;return xn(`${this.type}-plugin-${e}`,(()=>[[`plugins.${e}`,...t.additionalOptionScopes||[]]]))}_cachedScopes(t,e){const i=this._scopeCache;let s=i.get(t);return s&&!e||(s=new Map,i.set(t,s)),s}getOptionScopes(t,e,i){const{options:s,type:n}=this,o=this._cachedScopes(t,i),a=o.get(e);if(a)return a;const r=new Set;e.forEach((e=>{t&&(r.add(t),e.forEach((e=>bn(r,t,e)))),e.forEach((t=>bn(r,s,t))),e.forEach((t=>bn(r,re[n]||{},t))),e.forEach((t=>bn(r,ue,t))),e.forEach((t=>bn(r,le,t)))}));const l=Array.from(r);return 0===l.length&&l.push(Object.create(null)),mn.has(e)&&o.set(e,l),l}chartOptionScopes(){const{options:t,type:e}=this;return[t,re[e]||{},ue.datasets[e]||{},{type:e},ue,le]}resolveNamedOptions(t,e,i,s=[""]){const o={$shared:!0},{resolver:a,subPrefixes:r}=yn(this._resolverCache,t,s);let l=a;if(function(t,e){const{isScriptable:i,isIndexable:s}=Ye(t);for(const o of e){const e=i(o),a=s(o),r=(a||e)&&t[o];if(e&&(S(r)||vn(r))||a&&n(r))return!0}return!1}(a,e)){o.$shared=!1;l=$e(a,i=S(i)?i():i,this.createResolver(t,i,r))}for(const t of e)o[t]=l[t];return o}createResolver(t,e,i=[""],s){const{resolver:n}=yn(this._resolverCache,t,i);return o(e)?$e(n,e,void 0,s):n}}function yn(t,e,i){let s=t.get(e);s||(s=new Map,t.set(e,s));const n=i.join();let o=s.get(n);if(!o){o={resolver:je(e,i),subPrefixes:i.filter((t=>!t.toLowerCase().includes("hover")))},s.set(n,o)}return o}const vn=t=>o(t)&&Object.getOwnPropertyNames(t).some((e=>S(t[e])));const Mn=["top","bottom","left","right","chartArea"];function wn(t,e){return"top"===t||"bottom"===t||-1===Mn.indexOf(t)&&"x"===e}function kn(t,e){return function(i,s){return i[t]===s[t]?i[e]-s[e]:i[t]-s[t]}}function Sn(t){const e=t.chart,i=e.options.animation;e.notifyPlugins("afterRender"),d(i&&i.onComplete,[t],e)}function Pn(t){const e=t.chart,i=e.options.animation;d(i&&i.onProgress,[t],e)}function Dn(t){return fe()&&"string"==typeof t?t=document.getElementById(t):t&&t.length&&(t=t[0]),t&&t.canvas&&(t=t.canvas),t}const Cn={},On=t=>{const e=Dn(t);return Object.values(Cn).filter((t=>t.canvas===e)).pop()};function An(t,e,i){const s=Object.keys(t);for(const n of s){const s=+n;if(s>=e){const o=t[n];delete t[n],(i>0||s>e)&&(t[s+i]=o)}}}class Tn{static defaults=ue;static instances=Cn;static overrides=re;static registry=nn;static version="4.5.1";static getChart=On;static register(...t){nn.add(...t),Ln()}static unregister(...t){nn.remove(...t),Ln()}constructor(t,e){const s=this.config=new _n(e),n=Dn(t),o=On(n);if(o)throw new Error("Canvas is already in use. Chart with ID '"+o.id+"' must be destroyed before the canvas with ID '"+o.canvas.id+"' can be reused.");const a=s.createResolver(s.chartOptionScopes(),this.getContext());this.platform=new(s.platform||Ps(n)),this.platform.updateConfig(s);const r=this.platform.acquireContext(n,a.aspectRatio),l=r&&r.canvas,h=l&&l.height,c=l&&l.width;this.id=i(),this.ctx=r,this.canvas=l,this.width=c,this.height=h,this._options=a,this._aspectRatio=this.aspectRatio,this._layers=[],this._metasets=[],this._stacks=void 0,this.boxes=[],this.currentDevicePixelRatio=void 0,this.chartArea=void 0,this._active=[],this._lastEvent=void 0,this._listeners={},this._responsiveListeners=void 0,this._sortedMetasets=[],this.scales={},this._plugins=new on,this.$proxies={},this._hiddenIndices={},this.attached=!1,this._animationsDisabled=void 0,this.$context=void 0,this._doResize=dt((t=>this.update(t)),a.resizeDelay||0),this._dataChanges=[],Cn[this.id]=this,r&&l?(bt.listen(this,"complete",Sn),bt.listen(this,"progress",Pn),this._initialize(),this.attached&&this.update()):console.error("Failed to create chart: can't acquire context from the given item")}get aspectRatio(){const{options:{aspectRatio:t,maintainAspectRatio:e},width:i,height:n,_aspectRatio:o}=this;return s(t)?e&&o?o:n?i/n:null:t}get data(){return this.config.data}set data(t){this.config.data=t}get options(){return this._options}set options(t){this.config.options=t}get registry(){return nn}_initialize(){return this.notifyPlugins("beforeInit"),this.options.responsive?this.resize():ke(this,this.options.devicePixelRatio),this.bindEvents(),this.notifyPlugins("afterInit"),this}clear(){return Te(this.canvas,this.ctx),this}stop(){return bt.stop(this),this}resize(t,e){bt.running(this)?this._resizeBeforeDraw={width:t,height:e}:this._resize(t,e)}_resize(t,e){const i=this.options,s=this.canvas,n=i.maintainAspectRatio&&this.aspectRatio,o=this.platform.getMaximumSize(s,t,e,n),a=i.devicePixelRatio||this.platform.getDevicePixelRatio(),r=this.width?"resize":"attach";this.width=o.width,this.height=o.height,this._aspectRatio=this.aspectRatio,ke(this,a,!0)&&(this.notifyPlugins("resize",{size:o}),d(i.onResize,[this,o],this),this.attached&&this._doResize(r)&&this.render())}ensureScalesHaveIDs(){u(this.options.scales||{},((t,e)=>{t.id=e}))}buildOrUpdateScales(){const t=this.options,e=t.scales,i=this.scales,s=Object.keys(i).reduce(((t,e)=>(t[e]=!1,t)),{});let n=[];e&&(n=n.concat(Object.keys(e).map((t=>{const i=e[t],s=cn(t,i),n="r"===s,o="x"===s;return{options:i,dposition:n?"chartArea":o?"bottom":"left",dtype:n?"radialLinear":o?"category":"linear"}})))),u(n,(e=>{const n=e.options,o=n.id,a=cn(o,n),r=l(n.type,e.dtype);void 0!==n.position&&wn(n.position,a)===wn(e.dposition)||(n.position=e.dposition),s[o]=!0;let h=null;if(o in i&&i[o].type===r)h=i[o];else{h=new(nn.getScale(r))({id:o,type:r,ctx:this.ctx,chart:this}),i[h.id]=h}h.init(n,t)})),u(s,((t,e)=>{t||delete i[e]})),u(i,(t=>{ls.configure(this,t,t.options),ls.addBox(this,t)}))}_updateMetasets(){const t=this._metasets,e=this.data.datasets.length,i=t.length;if(t.sort(((t,e)=>t.index-e.index)),i>e){for(let t=e;t<i;++t)this._destroyDatasetMeta(t);t.splice(e,i-e)}this._sortedMetasets=t.slice(0).sort(kn("order","index"))}_removeUnreferencedMetasets(){const{_metasets:t,data:{datasets:e}}=this;t.length>e.length&&delete this._stacks,t.forEach(((t,i)=>{0===e.filter((e=>e===t._dataset)).length&&this._destroyDatasetMeta(i)}))}buildOrUpdateControllers(){const t=[],e=this.data.datasets;let i,s;for(this._removeUnreferencedMetasets(),i=0,s=e.length;i<s;i++){const s=e[i];let n=this.getDatasetMeta(i);const o=s.type||this.config.type;if(n.type&&n.type!==o&&(this._destroyDatasetMeta(i),n=this.getDatasetMeta(i)),n.type=o,n.indexAxis=s.indexAxis||ln(o,this.options),n.order=s.order||0,n.index=i,n.label=""+s.label,n.visible=this.isDatasetVisible(i),n.controller)n.controller.updateIndex(i),n.controller.linkScales();else{const e=nn.getController(o),{datasetElementType:s,dataElementType:a}=ue.datasets[o];Object.assign(e,{dataElementType:nn.getElement(a),datasetElementType:s&&nn.getElement(s)}),n.controller=new e(this,i),t.push(n.controller)}}return this._updateMetasets(),t}_resetElements(){u(this.data.datasets,((t,e)=>{this.getDatasetMeta(e).controller.reset()}),this)}reset(){this._resetElements(),this.notifyPlugins("reset")}update(t){const e=this.config;e.update();const i=this._options=e.createResolver(e.chartOptionScopes(),this.getContext()),s=this._animationsDisabled=!i.animation;if(this._updateScales(),this._checkEventBindings(),this._updateHiddenIndices(),this._plugins.invalidate(),!1===this.notifyPlugins("beforeUpdate",{mode:t,cancelable:!0}))return;const n=this.buildOrUpdateControllers();this.notifyPlugins("beforeElementsUpdate");let o=0;for(let t=0,e=this.data.datasets.length;t<e;t++){const{controller:e}=this.getDatasetMeta(t),i=!s&&-1===n.indexOf(e);e.buildOrUpdateElements(i),o=Math.max(+e.getMaxOverflow(),o)}o=this._minPadding=i.layout.autoPadding?o:0,this._updateLayout(o),s||u(n,(t=>{t.reset()})),this._updateDatasets(t),this.notifyPlugins("afterUpdate",{mode:t}),this._layers.sort(kn("z","_idx"));const{_active:a,_lastEvent:r}=this;r?this._eventHandler(r,!0):a.length&&this._updateHoverStyles(a,a,!0),this.render()}_updateScales(){u(this.scales,(t=>{ls.removeBox(this,t)})),this.ensureScalesHaveIDs(),this.buildOrUpdateScales()}_checkEventBindings(){const t=this.options,e=new Set(Object.keys(this._listeners)),i=new Set(t.events);P(e,i)&&!!this._responsiveListeners===t.responsive||(this.unbindEvents(),this.bindEvents())}_updateHiddenIndices(){const{_hiddenIndices:t}=this,e=this._getUniformDataChanges()||[];for(const{method:i,start:s,count:n}of e){An(t,s,"_removeElements"===i?-n:n)}}_getUniformDataChanges(){const t=this._dataChanges;if(!t||!t.length)return;this._dataChanges=[];const e=this.data.datasets.length,i=e=>new Set(t.filter((t=>t[0]===e)).map(((t,e)=>e+","+t.splice(1).join(",")))),s=i(0);for(let t=1;t<e;t++)if(!P(s,i(t)))return;return Array.from(s).map((t=>t.split(","))).map((t=>({method:t[1],start:+t[2],count:+t[3]})))}_updateLayout(t){if(!1===this.notifyPlugins("beforeLayout",{cancelable:!0}))return;ls.update(this,this.width,this.height,t);const e=this.chartArea,i=e.width<=0||e.height<=0;this._layers=[],u(this.boxes,(t=>{i&&"chartArea"===t.position||(t.configure&&t.configure(),this._layers.push(...t._layers()))}),this),this._layers.forEach(((t,e)=>{t._idx=e})),this.notifyPlugins("afterLayout")}_updateDatasets(t){if(!1!==this.notifyPlugins("beforeDatasetsUpdate",{mode:t,cancelable:!0})){for(let t=0,e=this.data.datasets.length;t<e;++t)this.getDatasetMeta(t).controller.configure();for(let e=0,i=this.data.datasets.length;e<i;++e)this._updateDataset(e,S(t)?t({datasetIndex:e}):t);this.notifyPlugins("afterDatasetsUpdate",{mode:t})}}_updateDataset(t,e){const i=this.getDatasetMeta(t),s={meta:i,index:t,mode:e,cancelable:!0};!1!==this.notifyPlugins("beforeDatasetUpdate",s)&&(i.controller._update(e),s.cancelable=!1,this.notifyPlugins("afterDatasetUpdate",s))}render(){!1!==this.notifyPlugins("beforeRender",{cancelable:!0})&&(bt.has(this)?this.attached&&!bt.running(this)&&bt.start(this):(this.draw(),Sn({chart:this})))}draw(){let t;if(this._resizeBeforeDraw){const{width:t,height:e}=this._resizeBeforeDraw;this._resizeBeforeDraw=null,this._resize(t,e)}if(this.clear(),this.width<=0||this.height<=0)return;if(!1===this.notifyPlugins("beforeDraw",{cancelable:!0}))return;const e=this._layers;for(t=0;t<e.length&&e[t].z<=0;++t)e[t].draw(this.chartArea);for(this._drawDatasets();t<e.length;++t)e[t].draw(this.chartArea);this.notifyPlugins("afterDraw")}_getSortedDatasetMetas(t){const e=this._sortedMetasets,i=[];let s,n;for(s=0,n=e.length;s<n;++s){const n=e[s];t&&!n.visible||i.push(n)}return i}getSortedVisibleDatasetMetas(){return this._getSortedDatasetMetas(!0)}_drawDatasets(){if(!1===this.notifyPlugins("beforeDatasetsDraw",{cancelable:!0}))return;const t=this.getSortedVisibleDatasetMetas();for(let e=t.length-1;e>=0;--e)this._drawDataset(t[e]);this.notifyPlugins("afterDatasetsDraw")}_drawDataset(t){const e=this.ctx,i={meta:t,index:t.index,cancelable:!0},s=Ni(this,t);!1!==this.notifyPlugins("beforeDatasetDraw",i)&&(s&&Ie(e,s),t.controller.draw(),s&&ze(e),i.cancelable=!1,this.notifyPlugins("afterDatasetDraw",i))}isPointInArea(t){return Re(t,this.chartArea,this._minPadding)}getElementsAtEventForMode(t,e,i,s){const n=Ki.modes[e];return"function"==typeof n?n(this,t,i,s):[]}getDatasetMeta(t){const e=this.data.datasets[t],i=this._metasets;let s=i.filter((t=>t&&t._dataset===e)).pop();return s||(s={type:null,data:[],dataset:null,controller:null,hidden:null,xAxisID:null,yAxisID:null,order:e&&e.order||0,index:t,_dataset:e,_parsed:[],_sorted:!1},i.push(s)),s}getContext(){return this.$context||(this.$context=Ci(null,{chart:this,type:"chart"}))}getVisibleDatasetCount(){return this.getSortedVisibleDatasetMetas().length}isDatasetVisible(t){const e=this.data.datasets[t];if(!e)return!1;const i=this.getDatasetMeta(t);return"boolean"==typeof i.hidden?!i.hidden:!e.hidden}setDatasetVisibility(t,e){this.getDatasetMeta(t).hidden=!e}toggleDataVisibility(t){this._hiddenIndices[t]=!this._hiddenIndices[t]}getDataVisibility(t){return!this._hiddenIndices[t]}_updateVisibility(t,e,i){const s=i?"show":"hide",n=this.getDatasetMeta(t),o=n.controller._resolveAnimations(void 0,s);k(e)?(n.data[e].hidden=!i,this.update()):(this.setDatasetVisibility(t,i),o.update(n,{visible:i}),this.update((e=>e.datasetIndex===t?s:void 0)))}hide(t,e){this._updateVisibility(t,e,!1)}show(t,e){this._updateVisibility(t,e,!0)}_destroyDatasetMeta(t){const e=this._metasets[t];e&&e.controller&&e.controller._destroy(),delete this._metasets[t]}_stop(){let t,e;for(this.stop(),bt.remove(this),t=0,e=this.data.datasets.length;t<e;++t)this._destroyDatasetMeta(t)}destroy(){this.notifyPlugins("beforeDestroy");const{canvas:t,ctx:e}=this;this._stop(),this.config.clearCache(),t&&(this.unbindEvents(),Te(t,e),this.platform.releaseContext(e),this.canvas=null,this.ctx=null),delete Cn[this.id],this.notifyPlugins("afterDestroy")}toBase64Image(...t){return this.canvas.toDataURL(...t)}bindEvents(){this.bindUserEvents(),this.options.responsive?this.bindResponsiveEvents():this.attached=!0}bindUserEvents(){const t=this._listeners,e=this.platform,i=(i,s)=>{e.addEventListener(this,i,s),t[i]=s},s=(t,e,i)=>{t.offsetX=e,t.offsetY=i,this._eventHandler(t)};u(this.options.events,(t=>i(t,s)))}bindResponsiveEvents(){this._responsiveListeners||(this._responsiveListeners={});const t=this._responsiveListeners,e=this.platform,i=(i,s)=>{e.addEventListener(this,i,s),t[i]=s},s=(i,s)=>{t[i]&&(e.removeEventListener(this,i,s),delete t[i])},n=(t,e)=>{this.canvas&&this.resize(t,e)};let o;const a=()=>{s("attach",a),this.attached=!0,this.resize(),i("resize",n),i("detach",o)};o=()=>{this.attached=!1,s("resize",n),this._stop(),this._resize(0,0),i("attach",a)},e.isAttached(this.canvas)?a():o()}unbindEvents(){u(this._listeners,((t,e)=>{this.platform.removeEventListener(this,e,t)})),this._listeners={},u(this._responsiveListeners,((t,e)=>{this.platform.removeEventListener(this,e,t)})),this._responsiveListeners=void 0}updateHoverStyle(t,e,i){const s=i?"set":"remove";let n,o,a,r;for("dataset"===e&&(n=this.getDatasetMeta(t[0].datasetIndex),n.controller["_"+s+"DatasetHoverStyle"]()),a=0,r=t.length;a<r;++a){o=t[a];const e=o&&this.getDatasetMeta(o.datasetIndex).controller;e&&e[s+"HoverStyle"](o.element,o.datasetIndex,o.index)}}getActiveElements(){return this._active||[]}setActiveElements(t){const e=this._active||[],i=t.map((({datasetIndex:t,index:e})=>{const i=this.getDatasetMeta(t);if(!i)throw new Error("No dataset found at index "+t);return{datasetIndex:t,element:i.data[e],index:e}}));!f(i,e)&&(this._active=i,this._lastEvent=null,this._updateHoverStyles(i,e))}notifyPlugins(t,e,i){return this._plugins.notify(this,t,e,i)}isPluginEnabled(t){return 1===this._plugins._cache.filter((e=>e.plugin.id===t)).length}_updateHoverStyles(t,e,i){const s=this.options.hover,n=(t,e)=>t.filter((t=>!e.some((e=>t.datasetIndex===e.datasetIndex&&t.index===e.index)))),o=n(e,t),a=i?t:n(t,e);o.length&&this.updateHoverStyle(o,s.mode,!1),a.length&&s.mode&&this.updateHoverStyle(a,s.mode,!0)}_eventHandler(t,e){const i={event:t,replay:e,cancelable:!0,inChartArea:this.isPointInArea(t)},s=e=>(e.options.events||this.options.events).includes(t.native.type);if(!1===this.notifyPlugins("beforeEvent",i,s))return;const n=this._handleEvent(t,e,i.inChartArea);return i.cancelable=!1,this.notifyPlugins("afterEvent",i,s),(n||i.changed)&&this.render(),this}_handleEvent(t,e,i){const{_active:s=[],options:n}=this,o=e,a=this._getActiveElements(t,s,i,o),r=D(t),l=function(t,e,i,s){return i&&"mouseout"!==t.type?s?e:t:null}(t,this._lastEvent,i,r);i&&(this._lastEvent=null,d(n.onHover,[t,a,this],this),r&&d(n.onClick,[t,a,this],this));const h=!f(a,s);return(h||e)&&(this._active=a,this._updateHoverStyles(a,s,e)),this._lastEvent=l,h}_getActiveElements(t,e,i,s){if("mouseout"===t.type)return[];if(!i)return e;const n=this.options.hover;return this.getElementsAtEventForMode(t,n.mode,n,s)}}function Ln(){return u(Tn.instances,(t=>t._plugins.invalidate()))}function En(){throw new Error("This method is not implemented: Check that a complete date adapter is provided.")}class Rn{static override(t){Object.assign(Rn.prototype,t)}options;constructor(t){this.options=t||{}}init(){}formats(){return En()}parse(){return En()}format(){return En()}add(){return En()}diff(){return En()}startOf(){return En()}endOf(){return En()}}var In={_date:Rn};function zn(t){const e=t.iScale,i=function(t,e){if(!t._cache.$bar){const i=t.getMatchingVisibleMetas(e);let s=[];for(let e=0,n=i.length;e<n;e++)s=s.concat(i[e].controller.getAllParsedValues(t));t._cache.$bar=lt(s.sort(((t,e)=>t-e)))}return t._cache.$bar}(e,t.type);let s,n,o,a,r=e._length;const l=()=>{32767!==o&&-32768!==o&&(k(a)&&(r=Math.min(r,Math.abs(o-a)||r)),a=o)};for(s=0,n=i.length;s<n;++s)o=e.getPixelForValue(i[s]),l();for(a=void 0,s=0,n=e.ticks.length;s<n;++s)o=e.getPixelForTick(s),l();return r}function Fn(t,e,i,s){return n(t)?function(t,e,i,s){const n=i.parse(t[0],s),o=i.parse(t[1],s),a=Math.min(n,o),r=Math.max(n,o);let l=a,h=r;Math.abs(a)>Math.abs(r)&&(l=r,h=a),e[i.axis]=h,e._custom={barStart:l,barEnd:h,start:n,end:o,min:a,max:r}}(t,e,i,s):e[i.axis]=i.parse(t,s),e}function Vn(t,e,i,s){const n=t.iScale,o=t.vScale,a=n.getLabels(),r=n===o,l=[];let h,c,d,u;for(h=i,c=i+s;h<c;++h)u=e[h],d={},d[n.axis]=r||n.parse(a[h],h),l.push(Fn(u,d,o,h));return l}function Bn(t){return t&&void 0!==t.barStart&&void 0!==t.barEnd}function Wn(t,e,i,s){let n=e.borderSkipped;const o={};if(!n)return void(t.borderSkipped=o);if(!0===n)return void(t.borderSkipped={top:!0,right:!0,bottom:!0,left:!0});const{start:a,end:r,reverse:l,top:h,bottom:c}=function(t){let e,i,s,n,o;return t.horizontal?(e=t.base>t.x,i="left",s="right"):(e=t.base<t.y,i="bottom",s="top"),e?(n="end",o="start"):(n="start",o="end"),{start:i,end:s,reverse:e,top:n,bottom:o}}(t);"middle"===n&&i&&(t.enableBorderRadius=!0,(i._top||0)===s?n=h:(i._bottom||0)===s?n=c:(o[Nn(c,a,r,l)]=!0,n=h)),o[Nn(n,a,r,l)]=!0,t.borderSkipped=o}function Nn(t,e,i,s){var n,o,a;return s?(a=i,t=Hn(t=(n=t)===(o=e)?a:n===a?o:n,i,e)):t=Hn(t,e,i),t}function Hn(t,e,i){return"start"===t?e:"end"===t?i:t}function jn(t,{inflateAmount:e},i){t.inflateAmount="auto"===e?1===i?.33:0:e}class $n extends js{static id="doughnut";static defaults={datasetElementType:!1,dataElementType:"arc",animation:{animateRotate:!0,animateScale:!1},animations:{numbers:{type:"number",properties:["circumference","endAngle","innerRadius","outerRadius","startAngle","x","y","offset","borderWidth","spacing"]}},cutout:"50%",rotation:0,circumference:360,radius:"100%",spacing:0,indexAxis:"r"};static descriptors={_scriptable:t=>"spacing"!==t,_indexable:t=>"spacing"!==t&&!t.startsWith("borderDash")&&!t.startsWith("hoverBorderDash")};static overrides={aspectRatio:1,plugins:{legend:{labels:{generateLabels(t){const e=t.data,{labels:{pointStyle:i,textAlign:s,color:n,useBorderRadius:o,borderRadius:a}}=t.legend.options;return e.labels.length&&e.datasets.length?e.labels.map(((e,r)=>{const l=t.getDatasetMeta(0).controller.getStyle(r);return{text:e,fillStyle:l.backgroundColor,fontColor:n,hidden:!t.getDataVisibility(r),lineDash:l.borderDash,lineDashOffset:l.borderDashOffset,lineJoin:l.borderJoinStyle,lineWidth:l.borderWidth,strokeStyle:l.borderColor,textAlign:s,pointStyle:i,borderRadius:o&&(a||l.borderRadius),index:r}})):[]}},onClick(t,e,i){i.chart.toggleDataVisibility(e.index),i.chart.update()}}}};constructor(t,e){super(t,e),this.enableOptionSharing=!0,this.innerRadius=void 0,this.outerRadius=void 0,this.offsetX=void 0,this.offsetY=void 0}linkScales(){}parse(t,e){const i=this.getDataset().data,s=this._cachedMeta;if(!1===this._parsing)s._parsed=i;else{let n,a,r=t=>+i[t];if(o(i[t])){const{key:t="value"}=this._parsing;r=e=>+M(i[e],t)}for(n=t,a=t+e;n<a;++n)s._parsed[n]=r(n)}}_getRotation(){return $(this.options.rotation-90)}_getCircumference(){return $(this.options.circumference)}_getRotationExtents(){let t=O,e=-O;for(let i=0;i<this.chart.data.datasets.length;++i)if(this.chart.isDatasetVisible(i)&&this.chart.getDatasetMeta(i).type===this._type){const s=this.chart.getDatasetMeta(i).controller,n=s._getRotation(),o=s._getCircumference();t=Math.min(t,n),e=Math.max(e,n+o)}return{rotation:t,circumference:e-t}}update(t){const e=this.chart,{chartArea:i}=e,s=this._cachedMeta,n=s.data,o=this.getMaxBorderWidth()+this.getMaxOffset(n)+this.options.spacing,a=Math.max((Math.min(i.width,i.height)-o)/2,0),r=Math.min(h(this.options.cutout,a),1),l=this._getRingWeight(this.index),{circumference:d,rotation:u}=this._getRotationExtents(),{ratioX:f,ratioY:g,offsetX:p,offsetY:m}=function(t,e,i){let s=1,n=1,o=0,a=0;if(e<O){const r=t,l=r+e,h=Math.cos(r),c=Math.sin(r),d=Math.cos(l),u=Math.sin(l),f=(t,e,s)=>J(t,r,l,!0)?1:Math.max(e,e*i,s,s*i),g=(t,e,s)=>J(t,r,l,!0)?-1:Math.min(e,e*i,s,s*i),p=f(0,h,d),m=f(E,c,u),x=g(C,h,d),b=g(C+E,c,u);s=(p-x)/2,n=(m-b)/2,o=-(p+x)/2,a=-(m+b)/2}return{ratioX:s,ratioY:n,offsetX:o,offsetY:a}}(u,d,r),x=(i.width-o)/f,b=(i.height-o)/g,_=Math.max(Math.min(x,b)/2,0),y=c(this.options.radius,_),v=(y-Math.max(y*r,0))/this._getVisibleDatasetWeightTotal();this.offsetX=p*y,this.offsetY=m*y,s.total=this.calculateTotal(),this.outerRadius=y-v*this._getRingWeightOffset(this.index),this.innerRadius=Math.max(this.outerRadius-v*l,0),this.updateElements(n,0,n.length,t)}_circumference(t,e){const i=this.options,s=this._cachedMeta,n=this._getCircumference();return e&&i.animation.animateRotate||!this.chart.getDataVisibility(t)||null===s._parsed[t]||s.data[t].hidden?0:this.calculateCircumference(s._parsed[t]*n/O)}updateElements(t,e,i,s){const n="reset"===s,o=this.chart,a=o.chartArea,r=o.options.animation,l=(a.left+a.right)/2,h=(a.top+a.bottom)/2,c=n&&r.animateScale,d=c?0:this.innerRadius,u=c?0:this.outerRadius,{sharedOptions:f,includeOptions:g}=this._getSharedOptions(e,s);let p,m=this._getRotation();for(p=0;p<e;++p)m+=this._circumference(p,n);for(p=e;p<e+i;++p){const e=this._circumference(p,n),i=t[p],o={x:l+this.offsetX,y:h+this.offsetY,startAngle:m,endAngle:m+e,circumference:e,outerRadius:u,innerRadius:d};g&&(o.options=f||this.resolveDataElementOptions(p,i.active?"active":s)),m+=e,this.updateElement(i,p,o,s)}}calculateTotal(){const t=this._cachedMeta,e=t.data;let i,s=0;for(i=0;i<e.length;i++){const n=t._parsed[i];null===n||isNaN(n)||!this.chart.getDataVisibility(i)||e[i].hidden||(s+=Math.abs(n))}return s}calculateCircumference(t){const e=this._cachedMeta.total;return e>0&&!isNaN(t)?O*(Math.abs(t)/e):0}getLabelAndValue(t){const e=this._cachedMeta,i=this.chart,s=i.data.labels||[],n=ne(e._parsed[t],i.options.locale);return{label:s[t]||"",value:n}}getMaxBorderWidth(t){let e=0;const i=this.chart;let s,n,o,a,r;if(!t)for(s=0,n=i.data.datasets.length;s<n;++s)if(i.isDatasetVisible(s)){o=i.getDatasetMeta(s),t=o.data,a=o.controller;break}if(!t)return 0;for(s=0,n=t.length;s<n;++s)r=a.resolveDataElementOptions(s),"inner"!==r.borderAlign&&(e=Math.max(e,r.borderWidth||0,r.hoverBorderWidth||0));return e}getMaxOffset(t){let e=0;for(let i=0,s=t.length;i<s;++i){const t=this.resolveDataElementOptions(i);e=Math.max(e,t.offset||0,t.hoverOffset||0)}return e}_getRingWeightOffset(t){let e=0;for(let i=0;i<t;++i)this.chart.isDatasetVisible(i)&&(e+=this._getRingWeight(i));return e}_getRingWeight(t){return Math.max(l(this.chart.data.datasets[t].weight,1),0)}_getVisibleDatasetWeightTotal(){return this._getRingWeightOffset(this.chart.data.datasets.length)||1}}class Yn extends js{static id="polarArea";static defaults={dataElementType:"arc",animation:{animateRotate:!0,animateScale:!0},animations:{numbers:{type:"number",properties:["x","y","startAngle","endAngle","innerRadius","outerRadius"]}},indexAxis:"r",startAngle:0};static overrides={aspectRatio:1,plugins:{legend:{labels:{generateLabels(t){const e=t.data;if(e.labels.length&&e.datasets.length){const{labels:{pointStyle:i,color:s}}=t.legend.options;return e.labels.map(((e,n)=>{const o=t.getDatasetMeta(0).controller.getStyle(n);return{text:e,fillStyle:o.backgroundColor,strokeStyle:o.borderColor,fontColor:s,lineWidth:o.borderWidth,pointStyle:i,hidden:!t.getDataVisibility(n),index:n}}))}return[]}},onClick(t,e,i){i.chart.toggleDataVisibility(e.index),i.chart.update()}}},scales:{r:{type:"radialLinear",angleLines:{display:!1},beginAtZero:!0,grid:{circular:!0},pointLabels:{display:!1},startAngle:0}}};constructor(t,e){super(t,e),this.innerRadius=void 0,this.outerRadius=void 0}getLabelAndValue(t){const e=this._cachedMeta,i=this.chart,s=i.data.labels||[],n=ne(e._parsed[t].r,i.options.locale);return{label:s[t]||"",value:n}}parseObjectData(t,e,i,s){return ii.bind(this)(t,e,i,s)}update(t){const e=this._cachedMeta.data;this._updateRadius(),this.updateElements(e,0,e.length,t)}getMinMax(){const t=this._cachedMeta,e={min:Number.POSITIVE_INFINITY,max:Number.NEGATIVE_INFINITY};return t.data.forEach(((t,i)=>{const s=this.getParsed(i).r;!isNaN(s)&&this.chart.getDataVisibility(i)&&(s<e.min&&(e.min=s),s>e.max&&(e.max=s))})),e}_updateRadius(){const t=this.chart,e=t.chartArea,i=t.options,s=Math.min(e.right-e.left,e.bottom-e.top),n=Math.max(s/2,0),o=(n-Math.max(i.cutoutPercentage?n/100*i.cutoutPercentage:1,0))/t.getVisibleDatasetCount();this.outerRadius=n-o*this.index,this.innerRadius=this.outerRadius-o}updateElements(t,e,i,s){const n="reset"===s,o=this.chart,a=o.options.animation,r=this._cachedMeta.rScale,l=r.xCenter,h=r.yCenter,c=r.getIndexAngle(0)-.5*C;let d,u=c;const f=360/this.countVisibleElements();for(d=0;d<e;++d)u+=this._computeAngle(d,s,f);for(d=e;d<e+i;d++){const e=t[d];let i=u,g=u+this._computeAngle(d,s,f),p=o.getDataVisibility(d)?r.getDistanceFromCenterForValue(this.getParsed(d).r):0;u=g,n&&(a.animateScale&&(p=0),a.animateRotate&&(i=g=c));const m={x:l,y:h,innerRadius:0,outerRadius:p,startAngle:i,endAngle:g,options:this.resolveDataElementOptions(d,e.active?"active":s)};this.updateElement(e,d,m,s)}}countVisibleElements(){const t=this._cachedMeta;let e=0;return t.data.forEach(((t,i)=>{!isNaN(this.getParsed(i).r)&&this.chart.getDataVisibility(i)&&e++})),e}_computeAngle(t,e,i){return this.chart.getDataVisibility(t)?$(this.resolveDataElementOptions(t,e).angle||i):0}}var Un=Object.freeze({__proto__:null,BarController:class extends js{static id="bar";static defaults={datasetElementType:!1,dataElementType:"bar",categoryPercentage:.8,barPercentage:.9,grouped:!0,animations:{numbers:{type:"number",properties:["x","y","base","width","height"]}}};static overrides={scales:{_index_:{type:"category",offset:!0,grid:{offset:!0}},_value_:{type:"linear",beginAtZero:!0}}};parsePrimitiveData(t,e,i,s){return Vn(t,e,i,s)}parseArrayData(t,e,i,s){return Vn(t,e,i,s)}parseObjectData(t,e,i,s){const{iScale:n,vScale:o}=t,{xAxisKey:a="x",yAxisKey:r="y"}=this._parsing,l="x"===n.axis?a:r,h="x"===o.axis?a:r,c=[];let d,u,f,g;for(d=i,u=i+s;d<u;++d)g=e[d],f={},f[n.axis]=n.parse(M(g,l),d),c.push(Fn(M(g,h),f,o,d));return c}updateRangeFromParsed(t,e,i,s){super.updateRangeFromParsed(t,e,i,s);const n=i._custom;n&&e===this._cachedMeta.vScale&&(t.min=Math.min(t.min,n.min),t.max=Math.max(t.max,n.max))}getMaxOverflow(){return 0}getLabelAndValue(t){const e=this._cachedMeta,{iScale:i,vScale:s}=e,n=this.getParsed(t),o=n._custom,a=Bn(o)?"["+o.start+", "+o.end+"]":""+s.getLabelForValue(n[s.axis]);return{label:""+i.getLabelForValue(n[i.axis]),value:a}}initialize(){this.enableOptionSharing=!0,super.initialize();this._cachedMeta.stack=this.getDataset().stack}update(t){const e=this._cachedMeta;this.updateElements(e.data,0,e.data.length,t)}updateElements(t,e,i,n){const o="reset"===n,{index:a,_cachedMeta:{vScale:r}}=this,l=r.getBasePixel(),h=r.isHorizontal(),c=this._getRuler(),{sharedOptions:d,includeOptions:u}=this._getSharedOptions(e,n);for(let f=e;f<e+i;f++){const e=this.getParsed(f),i=o||s(e[r.axis])?{base:l,head:l}:this._calculateBarValuePixels(f),g=this._calculateBarIndexPixels(f,c),p=(e._stacks||{})[r.axis],m={horizontal:h,base:i.base,enableBorderRadius:!p||Bn(e._custom)||a===p._top||a===p._bottom,x:h?i.head:g.center,y:h?g.center:i.head,height:h?g.size:Math.abs(i.size),width:h?Math.abs(i.size):g.size};u&&(m.options=d||this.resolveDataElementOptions(f,t[f].active?"active":n));const x=m.options||t[f].options;Wn(m,x,p,a),jn(m,x,c.ratio),this.updateElement(t[f],f,m,n)}}_getStacks(t,e){const{iScale:i}=this._cachedMeta,n=i.getMatchingVisibleMetas(this._type).filter((t=>t.controller.options.grouped)),o=i.options.stacked,a=[],r=this._cachedMeta.controller.getParsed(e),l=r&&r[i.axis],h=t=>{const e=t._parsed.find((t=>t[i.axis]===l)),n=e&&e[t.vScale.axis];if(s(n)||isNaN(n))return!0};for(const i of n)if((void 0===e||!h(i))&&((!1===o||-1===a.indexOf(i.stack)||void 0===o&&void 0===i.stack)&&a.push(i.stack),i.index===t))break;return a.length||a.push(void 0),a}_getStackCount(t){return this._getStacks(void 0,t).length}_getAxisCount(){return this._getAxis().length}getFirstScaleIdForIndexAxis(){const t=this.chart.scales,e=this.chart.options.indexAxis;return Object.keys(t).filter((i=>t[i].axis===e)).shift()}_getAxis(){const t={},e=this.getFirstScaleIdForIndexAxis();for(const i of this.chart.data.datasets)t[l("x"===this.chart.options.indexAxis?i.xAxisID:i.yAxisID,e)]=!0;return Object.keys(t)}_getStackIndex(t,e,i){const s=this._getStacks(t,i),n=void 0!==e?s.indexOf(e):-1;return-1===n?s.length-1:n}_getRuler(){const t=this.options,e=this._cachedMeta,i=e.iScale,s=[];let n,o;for(n=0,o=e.data.length;n<o;++n)s.push(i.getPixelForValue(this.getParsed(n)[i.axis],n));const a=t.barThickness;return{min:a||zn(e),pixels:s,start:i._startPixel,end:i._endPixel,stackCount:this._getStackCount(),scale:i,grouped:t.grouped,ratio:a?1:t.categoryPercentage*t.barPercentage}}_calculateBarValuePixels(t){const{_cachedMeta:{vScale:e,_stacked:i,index:n},options:{base:o,minBarLength:a}}=this,r=o||0,l=this.getParsed(t),h=l._custom,c=Bn(h);let d,u,f=l[e.axis],g=0,p=i?this.applyStack(e,l,i):f;p!==f&&(g=p-f,p=f),c&&(f=h.barStart,p=h.barEnd-h.barStart,0!==f&&F(f)!==F(h.barEnd)&&(g=0),g+=f);const m=s(o)||c?g:o;let x=e.getPixelForValue(m);if(d=this.chart.getDataVisibility(t)?e.getPixelForValue(g+p):x,u=d-x,Math.abs(u)<a){u=function(t,e,i){return 0!==t?F(t):(e.isHorizontal()?1:-1)*(e.min>=i?1:-1)}(u,e,r)*a,f===r&&(x-=u/2);const t=e.getPixelForDecimal(0),s=e.getPixelForDecimal(1),o=Math.min(t,s),h=Math.max(t,s);x=Math.max(Math.min(x,h),o),d=x+u,i&&!c&&(l._stacks[e.axis]._visualValues[n]=e.getValueForPixel(d)-e.getValueForPixel(x))}if(x===e.getPixelForValue(r)){const t=F(u)*e.getLineWidthForValue(r)/2;x+=t,u-=t}return{size:u,base:x,head:d,center:d+u/2}}_calculateBarIndexPixels(t,e){const i=e.scale,n=this.options,o=n.skipNull,a=l(n.maxBarThickness,1/0);let r,h;const c=this._getAxisCount();if(e.grouped){const i=o?this._getStackCount(t):e.stackCount,d="flex"===n.barThickness?function(t,e,i,s){const n=e.pixels,o=n[t];let a=t>0?n[t-1]:null,r=t<n.length-1?n[t+1]:null;const l=i.categoryPercentage;null===a&&(a=o-(null===r?e.end-e.start:r-o)),null===r&&(r=o+o-a);const h=o-(o-Math.min(a,r))/2*l;return{chunk:Math.abs(r-a)/2*l/s,ratio:i.barPercentage,start:h}}(t,e,n,i*c):function(t,e,i,n){const o=i.barThickness;let a,r;return s(o)?(a=e.min*i.categoryPercentage,r=i.barPercentage):(a=o*n,r=1),{chunk:a/n,ratio:r,start:e.pixels[t]-a/2}}(t,e,n,i*c),u="x"===this.chart.options.indexAxis?this.getDataset().xAxisID:this.getDataset().yAxisID,f=this._getAxis().indexOf(l(u,this.getFirstScaleIdForIndexAxis())),g=this._getStackIndex(this.index,this._cachedMeta.stack,o?t:void 0)+f;r=d.start+d.chunk*g+d.chunk/2,h=Math.min(a,d.chunk*d.ratio)}else r=i.getPixelForValue(this.getParsed(t)[i.axis],t),h=Math.min(a,e.min*e.ratio);return{base:r-h/2,head:r+h/2,center:r,size:h}}draw(){const t=this._cachedMeta,e=t.vScale,i=t.data,s=i.length;let n=0;for(;n<s;++n)null===this.getParsed(n)[e.axis]||i[n].hidden||i[n].draw(this._ctx)}},BubbleController:class extends js{static id="bubble";static defaults={datasetElementType:!1,dataElementType:"point",animations:{numbers:{type:"number",properties:["x","y","borderWidth","radius"]}}};static overrides={scales:{x:{type:"linear"},y:{type:"linear"}}};initialize(){this.enableOptionSharing=!0,super.initialize()}parsePrimitiveData(t,e,i,s){const n=super.parsePrimitiveData(t,e,i,s);for(let t=0;t<n.length;t++)n[t]._custom=this.resolveDataElementOptions(t+i).radius;return n}parseArrayData(t,e,i,s){const n=super.parseArrayData(t,e,i,s);for(let t=0;t<n.length;t++){const s=e[i+t];n[t]._custom=l(s[2],this.resolveDataElementOptions(t+i).radius)}return n}parseObjectData(t,e,i,s){const n=super.parseObjectData(t,e,i,s);for(let t=0;t<n.length;t++){const s=e[i+t];n[t]._custom=l(s&&s.r&&+s.r,this.resolveDataElementOptions(t+i).radius)}return n}getMaxOverflow(){const t=this._cachedMeta.data;let e=0;for(let i=t.length-1;i>=0;--i)e=Math.max(e,t[i].size(this.resolveDataElementOptions(i))/2);return e>0&&e}getLabelAndValue(t){const e=this._cachedMeta,i=this.chart.data.labels||[],{xScale:s,yScale:n}=e,o=this.getParsed(t),a=s.getLabelForValue(o.x),r=n.getLabelForValue(o.y),l=o._custom;return{label:i[t]||"",value:"("+a+", "+r+(l?", "+l:"")+")"}}update(t){const e=this._cachedMeta.data;this.updateElements(e,0,e.length,t)}updateElements(t,e,i,s){const n="reset"===s,{iScale:o,vScale:a}=this._cachedMeta,{sharedOptions:r,includeOptions:l}=this._getSharedOptions(e,s),h=o.axis,c=a.axis;for(let d=e;d<e+i;d++){const e=t[d],i=!n&&this.getParsed(d),u={},f=u[h]=n?o.getPixelForDecimal(.5):o.getPixelForValue(i[h]),g=u[c]=n?a.getBasePixel():a.getPixelForValue(i[c]);u.skip=isNaN(f)||isNaN(g),l&&(u.options=r||this.resolveDataElementOptions(d,e.active?"active":s),n&&(u.options.radius=0)),this.updateElement(e,d,u,s)}}resolveDataElementOptions(t,e){const i=this.getParsed(t);let s=super.resolveDataElementOptions(t,e);s.$shared&&(s=Object.assign({},s,{$shared:!1}));const n=s.radius;return"active"!==e&&(s.radius=0),s.radius+=l(i&&i._custom,n),s}},DoughnutController:$n,LineController:class extends js{static id="line";static defaults={datasetElementType:"line",dataElementType:"point",showLine:!0,spanGaps:!1};static overrides={scales:{_index_:{type:"category"},_value_:{type:"linear"}}};initialize(){this.enableOptionSharing=!0,this.supportsDecimation=!0,super.initialize()}update(t){const e=this._cachedMeta,{dataset:i,data:s=[],_dataset:n}=e,o=this.chart._animationsDisabled;let{start:a,count:r}=pt(e,s,o);this._drawStart=a,this._drawCount=r,mt(e)&&(a=0,r=s.length),i._chart=this.chart,i._datasetIndex=this.index,i._decimated=!!n._decimated,i.points=s;const l=this.resolveDatasetElementOptions(t);this.options.showLine||(l.borderWidth=0),l.segment=this.options.segment,this.updateElement(i,void 0,{animated:!o,options:l},t),this.updateElements(s,a,r,t)}updateElements(t,e,i,n){const o="reset"===n,{iScale:a,vScale:r,_stacked:l,_dataset:h}=this._cachedMeta,{sharedOptions:c,includeOptions:d}=this._getSharedOptions(e,n),u=a.axis,f=r.axis,{spanGaps:g,segment:p}=this.options,m=N(g)?g:Number.POSITIVE_INFINITY,x=this.chart._animationsDisabled||o||"none"===n,b=e+i,_=t.length;let y=e>0&&this.getParsed(e-1);for(let i=0;i<_;++i){const g=t[i],_=x?g:{};if(i<e||i>=b){_.skip=!0;continue}const v=this.getParsed(i),M=s(v[f]),w=_[u]=a.getPixelForValue(v[u],i),k=_[f]=o||M?r.getBasePixel():r.getPixelForValue(l?this.applyStack(r,v,l):v[f],i);_.skip=isNaN(w)||isNaN(k)||M,_.stop=i>0&&Math.abs(v[u]-y[u])>m,p&&(_.parsed=v,_.raw=h.data[i]),d&&(_.options=c||this.resolveDataElementOptions(i,g.active?"active":n)),x||this.updateElement(g,i,_,n),y=v}}getMaxOverflow(){const t=this._cachedMeta,e=t.dataset,i=e.options&&e.options.borderWidth||0,s=t.data||[];if(!s.length)return i;const n=s[0].size(this.resolveDataElementOptions(0)),o=s[s.length-1].size(this.resolveDataElementOptions(s.length-1));return Math.max(i,n,o)/2}draw(){const t=this._cachedMeta;t.dataset.updateControlPoints(this.chart.chartArea,t.iScale.axis),super.draw()}},PieController:class extends $n{static id="pie";static defaults={cutout:0,rotation:0,circumference:360,radius:"100%"}},PolarAreaController:Yn,RadarController:class extends js{static id="radar";static defaults={datasetElementType:"line",dataElementType:"point",indexAxis:"r",showLine:!0,elements:{line:{fill:"start"}}};static overrides={aspectRatio:1,scales:{r:{type:"radialLinear"}}};getLabelAndValue(t){const e=this._cachedMeta.vScale,i=this.getParsed(t);return{label:e.getLabels()[t],value:""+e.getLabelForValue(i[e.axis])}}parseObjectData(t,e,i,s){return ii.bind(this)(t,e,i,s)}update(t){const e=this._cachedMeta,i=e.dataset,s=e.data||[],n=e.iScale.getLabels();if(i.points=s,"resize"!==t){const e=this.resolveDatasetElementOptions(t);this.options.showLine||(e.borderWidth=0);const o={_loop:!0,_fullLoop:n.length===s.length,options:e};this.updateElement(i,void 0,o,t)}this.updateElements(s,0,s.length,t)}updateElements(t,e,i,s){const n=this._cachedMeta.rScale,o="reset"===s;for(let a=e;a<e+i;a++){const e=t[a],i=this.resolveDataElementOptions(a,e.active?"active":s),r=n.getPointPositionForValue(a,this.getParsed(a).r),l=o?n.xCenter:r.x,h=o?n.yCenter:r.y,c={x:l,y:h,angle:r.angle,skip:isNaN(l)||isNaN(h),options:i};this.updateElement(e,a,c,s)}}},ScatterController:class extends js{static id="scatter";static defaults={datasetElementType:!1,dataElementType:"point",showLine:!1,fill:!1};static overrides={interaction:{mode:"point"},scales:{x:{type:"linear"},y:{type:"linear"}}};getLabelAndValue(t){const e=this._cachedMeta,i=this.chart.data.labels||[],{xScale:s,yScale:n}=e,o=this.getParsed(t),a=s.getLabelForValue(o.x),r=n.getLabelForValue(o.y);return{label:i[t]||"",value:"("+a+", "+r+")"}}update(t){const e=this._cachedMeta,{data:i=[]}=e,s=this.chart._animationsDisabled;let{start:n,count:o}=pt(e,i,s);if(this._drawStart=n,this._drawCount=o,mt(e)&&(n=0,o=i.length),this.options.showLine){this.datasetElementType||this.addElements();const{dataset:n,_dataset:o}=e;n._chart=this.chart,n._datasetIndex=this.index,n._decimated=!!o._decimated,n.points=i;const a=this.resolveDatasetElementOptions(t);a.segment=this.options.segment,this.updateElement(n,void 0,{animated:!s,options:a},t)}else this.datasetElementType&&(delete e.dataset,this.datasetElementType=!1);this.updateElements(i,n,o,t)}addElements(){const{showLine:t}=this.options;!this.datasetElementType&&t&&(this.datasetElementType=this.chart.registry.getElement("line")),super.addElements()}updateElements(t,e,i,n){const o="reset"===n,{iScale:a,vScale:r,_stacked:l,_dataset:h}=this._cachedMeta,c=this.resolveDataElementOptions(e,n),d=this.getSharedOptions(c),u=this.includeOptions(n,d),f=a.axis,g=r.axis,{spanGaps:p,segment:m}=this.options,x=N(p)?p:Number.POSITIVE_INFINITY,b=this.chart._animationsDisabled||o||"none"===n;let _=e>0&&this.getParsed(e-1);for(let c=e;c<e+i;++c){const e=t[c],i=this.getParsed(c),p=b?e:{},y=s(i[g]),v=p[f]=a.getPixelForValue(i[f],c),M=p[g]=o||y?r.getBasePixel():r.getPixelForValue(l?this.applyStack(r,i,l):i[g],c);p.skip=isNaN(v)||isNaN(M)||y,p.stop=c>0&&Math.abs(i[f]-_[f])>x,m&&(p.parsed=i,p.raw=h.data[c]),u&&(p.options=d||this.resolveDataElementOptions(c,e.active?"active":n)),b||this.updateElement(e,c,p,n),_=i}this.updateSharedOptions(d,n,c)}getMaxOverflow(){const t=this._cachedMeta,e=t.data||[];if(!this.options.showLine){let t=0;for(let i=e.length-1;i>=0;--i)t=Math.max(t,e[i].size(this.resolveDataElementOptions(i))/2);return t>0&&t}const i=t.dataset,s=i.options&&i.options.borderWidth||0;if(!e.length)return s;const n=e[0].size(this.resolveDataElementOptions(0)),o=e[e.length-1].size(this.resolveDataElementOptions(e.length-1));return Math.max(s,n,o)/2}}});function Xn(t,e,i,s){const n=vi(t.options.borderRadius,["outerStart","outerEnd","innerStart","innerEnd"]);const o=(i-e)/2,a=Math.min(o,s*e/2),r=t=>{const e=(i-Math.min(o,t))*s/2;return Z(t,0,Math.min(o,e))};return{outerStart:r(n.outerStart),outerEnd:r(n.outerEnd),innerStart:Z(n.innerStart,0,a),innerEnd:Z(n.innerEnd,0,a)}}function qn(t,e,i,s){return{x:i+t*Math.cos(e),y:s+t*Math.sin(e)}}function Kn(t,e,i,s,n,o){const{x:a,y:r,startAngle:l,pixelMargin:h,innerRadius:c}=e,d=Math.max(e.outerRadius+s+i-h,0),u=c>0?c+s+i+h:0;let f=0;const g=n-l;if(s){const t=((c>0?c-s:0)+(d>0?d-s:0))/2;f=(g-(0!==t?g*t/(t+s):g))/2}const p=(g-Math.max(.001,g*d-i/C)/d)/2,m=l+p+f,x=n-p-f,{outerStart:b,outerEnd:_,innerStart:y,innerEnd:v}=Xn(e,u,d,x-m),M=d-b,w=d-_,k=m+b/M,S=x-_/w,P=u+y,D=u+v,O=m+y/P,A=x-v/D;if(t.beginPath(),o){const e=(k+S)/2;if(t.arc(a,r,d,k,e),t.arc(a,r,d,e,S),_>0){const e=qn(w,S,a,r);t.arc(e.x,e.y,_,S,x+E)}const i=qn(D,x,a,r);if(t.lineTo(i.x,i.y),v>0){const e=qn(D,A,a,r);t.arc(e.x,e.y,v,x+E,A+Math.PI)}const s=(x-v/u+(m+y/u))/2;if(t.arc(a,r,u,x-v/u,s,!0),t.arc(a,r,u,s,m+y/u,!0),y>0){const e=qn(P,O,a,r);t.arc(e.x,e.y,y,O+Math.PI,m-E)}const n=qn(M,m,a,r);if(t.lineTo(n.x,n.y),b>0){const e=qn(M,k,a,r);t.arc(e.x,e.y,b,m-E,k)}}else{t.moveTo(a,r);const e=Math.cos(k)*d+a,i=Math.sin(k)*d+r;t.lineTo(e,i);const s=Math.cos(S)*d+a,n=Math.sin(S)*d+r;t.lineTo(s,n)}t.closePath()}function Gn(t,e,i,s,n){const{fullCircles:o,startAngle:a,circumference:r,options:l}=e,{borderWidth:h,borderJoinStyle:c,borderDash:d,borderDashOffset:u,borderRadius:f}=l,g="inner"===l.borderAlign;if(!h)return;t.setLineDash(d||[]),t.lineDashOffset=u,g?(t.lineWidth=2*h,t.lineJoin=c||"round"):(t.lineWidth=h,t.lineJoin=c||"bevel");let p=e.endAngle;if(o){Kn(t,e,i,s,p,n);for(let e=0;e<o;++e)t.stroke();isNaN(r)||(p=a+(r%O||O))}g&&function(t,e,i){const{startAngle:s,pixelMargin:n,x:o,y:a,outerRadius:r,innerRadius:l}=e;let h=n/r;t.beginPath(),t.arc(o,a,r,s-h,i+h),l>n?(h=n/l,t.arc(o,a,l,i+h,s-h,!0)):t.arc(o,a,n,i+E,s-E),t.closePath(),t.clip()}(t,e,p),l.selfJoin&&p-a>=C&&0===f&&"miter"!==c&&function(t,e,i){const{startAngle:s,x:n,y:o,outerRadius:a,innerRadius:r,options:l}=e,{borderWidth:h,borderJoinStyle:c}=l,d=Math.min(h/a,G(s-i));if(t.beginPath(),t.arc(n,o,a-h/2,s+d/2,i-d/2),r>0){const e=Math.min(h/r,G(s-i));t.arc(n,o,r+h/2,i-e/2,s+e/2,!0)}else{const e=Math.min(h/2,a*G(s-i));if("round"===c)t.arc(n,o,e,i-C/2,s+C/2,!0);else if("bevel"===c){const a=2*e*e,r=-a*Math.cos(i+C/2)+n,l=-a*Math.sin(i+C/2)+o,h=a*Math.cos(s+C/2)+n,c=a*Math.sin(s+C/2)+o;t.lineTo(r,l),t.lineTo(h,c)}}t.closePath(),t.moveTo(0,0),t.rect(0,0,t.canvas.width,t.canvas.height),t.clip("evenodd")}(t,e,p),o||(Kn(t,e,i,s,p,n),t.stroke())}function Jn(t,e,i=e){t.lineCap=l(i.borderCapStyle,e.borderCapStyle),t.setLineDash(l(i.borderDash,e.borderDash)),t.lineDashOffset=l(i.borderDashOffset,e.borderDashOffset),t.lineJoin=l(i.borderJoinStyle,e.borderJoinStyle),t.lineWidth=l(i.borderWidth,e.borderWidth),t.strokeStyle=l(i.borderColor,e.borderColor)}function Zn(t,e,i){t.lineTo(i.x,i.y)}function Qn(t,e,i={}){const s=t.length,{start:n=0,end:o=s-1}=i,{start:a,end:r}=e,l=Math.max(n,a),h=Math.min(o,r),c=n<a&&o<a||n>r&&o>r;return{count:s,start:l,loop:e.loop,ilen:h<l&&!c?s+h-l:h-l}}function to(t,e,i,s){const{points:n,options:o}=e,{count:a,start:r,loop:l,ilen:h}=Qn(n,i,s),c=function(t){return t.stepped?Fe:t.tension||"monotone"===t.cubicInterpolationMode?Ve:Zn}(o);let d,u,f,{move:g=!0,reverse:p}=s||{};for(d=0;d<=h;++d)u=n[(r+(p?h-d:d))%a],u.skip||(g?(t.moveTo(u.x,u.y),g=!1):c(t,f,u,p,o.stepped),f=u);return l&&(u=n[(r+(p?h:0))%a],c(t,f,u,p,o.stepped)),!!l}function eo(t,e,i,s){const n=e.points,{count:o,start:a,ilen:r}=Qn(n,i,s),{move:l=!0,reverse:h}=s||{};let c,d,u,f,g,p,m=0,x=0;const b=t=>(a+(h?r-t:t))%o,_=()=>{f!==g&&(t.lineTo(m,g),t.lineTo(m,f),t.lineTo(m,p))};for(l&&(d=n[b(0)],t.moveTo(d.x,d.y)),c=0;c<=r;++c){if(d=n[b(c)],d.skip)continue;const e=d.x,i=d.y,s=0|e;s===u?(i<f?f=i:i>g&&(g=i),m=(x*m+e)/++x):(_(),t.lineTo(e,i),u=s,x=0,f=g=i),p=i}_()}function io(t){const e=t.options,i=e.borderDash&&e.borderDash.length;return!(t._decimated||t._loop||e.tension||"monotone"===e.cubicInterpolationMode||e.stepped||i)?eo:to}const so="function"==typeof Path2D;function no(t,e,i,s){so&&!e.options.segment?function(t,e,i,s){let n=e._path;n||(n=e._path=new Path2D,e.path(n,i,s)&&n.closePath()),Jn(t,e.options),t.stroke(n)}(t,e,i,s):function(t,e,i,s){const{segments:n,options:o}=e,a=io(e);for(const r of n)Jn(t,o,r.style),t.beginPath(),a(t,e,r,{start:i,end:i+s-1})&&t.closePath(),t.stroke()}(t,e,i,s)}class oo extends $s{static id="line";static defaults={borderCapStyle:"butt",borderDash:[],borderDashOffset:0,borderJoinStyle:"miter",borderWidth:3,capBezierPoints:!0,cubicInterpolationMode:"default",fill:!1,spanGaps:!1,stepped:!1,tension:0};static defaultRoutes={backgroundColor:"backgroundColor",borderColor:"borderColor"};static descriptors={_scriptable:!0,_indexable:t=>"borderDash"!==t&&"fill"!==t};constructor(t){super(),this.animated=!0,this.options=void 0,this._chart=void 0,this._loop=void 0,this._fullLoop=void 0,this._path=void 0,this._points=void 0,this._segments=void 0,this._decimated=!1,this._pointsUpdated=!1,this._datasetIndex=void 0,t&&Object.assign(this,t)}updateControlPoints(t,e){const i=this.options;if((i.tension||"monotone"===i.cubicInterpolationMode)&&!i.stepped&&!this._pointsUpdated){const s=i.spanGaps?this._loop:this._fullLoop;hi(this._points,i,t,s,e),this._pointsUpdated=!0}}set points(t){this._points=t,delete this._segments,delete this._path,this._pointsUpdated=!1}get points(){return this._points}get segments(){return this._segments||(this._segments=zi(this,this.options.segment))}first(){const t=this.segments,e=this.points;return t.length&&e[t[0].start]}last(){const t=this.segments,e=this.points,i=t.length;return i&&e[t[i-1].end]}interpolate(t,e){const i=this.options,s=t[e],n=this.points,o=Ii(this,{property:e,start:s,end:s});if(!o.length)return;const a=[],r=function(t){return t.stepped?pi:t.tension||"monotone"===t.cubicInterpolationMode?mi:gi}(i);let l,h;for(l=0,h=o.length;l<h;++l){const{start:h,end:c}=o[l],d=n[h],u=n[c];if(d===u){a.push(d);continue}const f=r(d,u,Math.abs((s-d[e])/(u[e]-d[e])),i.stepped);f[e]=t[e],a.push(f)}return 1===a.length?a[0]:a}pathSegment(t,e,i){return io(this)(t,this,e,i)}path(t,e,i){const s=this.segments,n=io(this);let o=this._loop;e=e||0,i=i||this.points.length-e;for(const a of s)o&=n(t,this,a,{start:e,end:e+i-1});return!!o}draw(t,e,i,s){const n=this.options||{};(this.points||[]).length&&n.borderWidth&&(t.save(),no(t,this,i,s),t.restore()),this.animated&&(this._pointsUpdated=!1,this._path=void 0)}}function ao(t,e,i,s){const n=t.options,{[i]:o}=t.getProps([i],s);return Math.abs(e-o)<n.radius+n.hitRadius}function ro(t,e){const{x:i,y:s,base:n,width:o,height:a}=t.getProps(["x","y","base","width","height"],e);let r,l,h,c,d;return t.horizontal?(d=a/2,r=Math.min(i,n),l=Math.max(i,n),h=s-d,c=s+d):(d=o/2,r=i-d,l=i+d,h=Math.min(s,n),c=Math.max(s,n)),{left:r,top:h,right:l,bottom:c}}function lo(t,e,i,s){return t?0:Z(e,i,s)}function ho(t){const e=ro(t),i=e.right-e.left,s=e.bottom-e.top,n=function(t,e,i){const s=t.options.borderWidth,n=t.borderSkipped,o=Mi(s);return{t:lo(n.top,o.top,0,i),r:lo(n.right,o.right,0,e),b:lo(n.bottom,o.bottom,0,i),l:lo(n.left,o.left,0,e)}}(t,i/2,s/2),a=function(t,e,i){const{enableBorderRadius:s}=t.getProps(["enableBorderRadius"]),n=t.options.borderRadius,a=wi(n),r=Math.min(e,i),l=t.borderSkipped,h=s||o(n);return{topLeft:lo(!h||l.top||l.left,a.topLeft,0,r),topRight:lo(!h||l.top||l.right,a.topRight,0,r),bottomLeft:lo(!h||l.bottom||l.left,a.bottomLeft,0,r),bottomRight:lo(!h||l.bottom||l.right,a.bottomRight,0,r)}}(t,i/2,s/2);return{outer:{x:e.left,y:e.top,w:i,h:s,radius:a},inner:{x:e.left+n.l,y:e.top+n.t,w:i-n.l-n.r,h:s-n.t-n.b,radius:{topLeft:Math.max(0,a.topLeft-Math.max(n.t,n.l)),topRight:Math.max(0,a.topRight-Math.max(n.t,n.r)),bottomLeft:Math.max(0,a.bottomLeft-Math.max(n.b,n.l)),bottomRight:Math.max(0,a.bottomRight-Math.max(n.b,n.r))}}}}function co(t,e,i,s){const n=null===e,o=null===i,a=t&&!(n&&o)&&ro(t,s);return a&&(n||tt(e,a.left,a.right))&&(o||tt(i,a.top,a.bottom))}function uo(t,e){t.rect(e.x,e.y,e.w,e.h)}function fo(t,e,i={}){const s=t.x!==i.x?-e:0,n=t.y!==i.y?-e:0,o=(t.x+t.w!==i.x+i.w?e:0)-s,a=(t.y+t.h!==i.y+i.h?e:0)-n;return{x:t.x+s,y:t.y+n,w:t.w+o,h:t.h+a,radius:t.radius}}var go=Object.freeze({__proto__:null,ArcElement:class extends $s{static id="arc";static defaults={borderAlign:"center",borderColor:"#fff",borderDash:[],borderDashOffset:0,borderJoinStyle:void 0,borderRadius:0,borderWidth:2,offset:0,spacing:0,angle:void 0,circular:!0,selfJoin:!1};static defaultRoutes={backgroundColor:"backgroundColor"};static descriptors={_scriptable:!0,_indexable:t=>"borderDash"!==t};circumference;endAngle;fullCircles;innerRadius;outerRadius;pixelMargin;startAngle;constructor(t){super(),this.options=void 0,this.circumference=void 0,this.startAngle=void 0,this.endAngle=void 0,this.innerRadius=void 0,this.outerRadius=void 0,this.pixelMargin=0,this.fullCircles=0,t&&Object.assign(this,t)}inRange(t,e,i){const s=this.getProps(["x","y"],i),{angle:n,distance:o}=X(s,{x:t,y:e}),{startAngle:a,endAngle:r,innerRadius:h,outerRadius:c,circumference:d}=this.getProps(["startAngle","endAngle","innerRadius","outerRadius","circumference"],i),u=(this.options.spacing+this.options.borderWidth)/2,f=l(d,r-a),g=J(n,a,r)&&a!==r,p=f>=O||g,m=tt(o,h+u,c+u);return p&&m}getCenterPoint(t){const{x:e,y:i,startAngle:s,endAngle:n,innerRadius:o,outerRadius:a}=this.getProps(["x","y","startAngle","endAngle","innerRadius","outerRadius"],t),{offset:r,spacing:l}=this.options,h=(s+n)/2,c=(o+a+l+r)/2;return{x:e+Math.cos(h)*c,y:i+Math.sin(h)*c}}tooltipPosition(t){return this.getCenterPoint(t)}draw(t){const{options:e,circumference:i}=this,s=(e.offset||0)/4,n=(e.spacing||0)/2,o=e.circular;if(this.pixelMargin="inner"===e.borderAlign?.33:0,this.fullCircles=i>O?Math.floor(i/O):0,0===i||this.innerRadius<0||this.outerRadius<0)return;t.save();const a=(this.startAngle+this.endAngle)/2;t.translate(Math.cos(a)*s,Math.sin(a)*s);const r=s*(1-Math.sin(Math.min(C,i||0)));t.fillStyle=e.backgroundColor,t.strokeStyle=e.borderColor,function(t,e,i,s,n){const{fullCircles:o,startAngle:a,circumference:r}=e;let l=e.endAngle;if(o){Kn(t,e,i,s,l,n);for(let e=0;e<o;++e)t.fill();isNaN(r)||(l=a+(r%O||O))}Kn(t,e,i,s,l,n),t.fill()}(t,this,r,n,o),Gn(t,this,r,n,o),t.restore()}},BarElement:class extends $s{static id="bar";static defaults={borderSkipped:"start",borderWidth:0,borderRadius:0,inflateAmount:"auto",pointStyle:void 0};static defaultRoutes={backgroundColor:"backgroundColor",borderColor:"borderColor"};constructor(t){super(),this.options=void 0,this.horizontal=void 0,this.base=void 0,this.width=void 0,this.height=void 0,this.inflateAmount=void 0,t&&Object.assign(this,t)}draw(t){const{inflateAmount:e,options:{borderColor:i,backgroundColor:s}}=this,{inner:n,outer:o}=ho(this),a=(r=o.radius).topLeft||r.topRight||r.bottomLeft||r.bottomRight?He:uo;var r;t.save(),o.w===n.w&&o.h===n.h||(t.beginPath(),a(t,fo(o,e,n)),t.clip(),a(t,fo(n,-e,o)),t.fillStyle=i,t.fill("evenodd")),t.beginPath(),a(t,fo(n,e)),t.fillStyle=s,t.fill(),t.restore()}inRange(t,e,i){return co(this,t,e,i)}inXRange(t,e){return co(this,t,null,e)}inYRange(t,e){return co(this,null,t,e)}getCenterPoint(t){const{x:e,y:i,base:s,horizontal:n}=this.getProps(["x","y","base","horizontal"],t);return{x:n?(e+s)/2:e,y:n?i:(i+s)/2}}getRange(t){return"x"===t?this.width/2:this.height/2}},LineElement:oo,PointElement:class extends $s{static id="point";parsed;skip;stop;static defaults={borderWidth:1,hitRadius:1,hoverBorderWidth:1,hoverRadius:4,pointStyle:"circle",radius:3,rotation:0};static defaultRoutes={backgroundColor:"backgroundColor",borderColor:"borderColor"};constructor(t){super(),this.options=void 0,this.parsed=void 0,this.skip=void 0,this.stop=void 0,t&&Object.assign(this,t)}inRange(t,e,i){const s=this.options,{x:n,y:o}=this.getProps(["x","y"],i);return Math.pow(t-n,2)+Math.pow(e-o,2)<Math.pow(s.hitRadius+s.radius,2)}inXRange(t,e){return ao(this,t,"x",e)}inYRange(t,e){return ao(this,t,"y",e)}getCenterPoint(t){const{x:e,y:i}=this.getProps(["x","y"],t);return{x:e,y:i}}size(t){let e=(t=t||this.options||{}).radius||0;e=Math.max(e,e&&t.hoverRadius||0);return 2*(e+(e&&t.borderWidth||0))}draw(t,e){const i=this.options;this.skip||i.radius<.1||!Re(this,e,this.size(i)/2)||(t.strokeStyle=i.borderColor,t.lineWidth=i.borderWidth,t.fillStyle=i.backgroundColor,Le(t,i,this.x,this.y))}getRange(){const t=this.options||{};return t.radius+t.hitRadius}}});function po(t,e,i,s){const n=t.indexOf(e);if(-1===n)return((t,e,i,s)=>("string"==typeof e?(i=t.push(e)-1,s.unshift({index:i,label:e})):isNaN(e)&&(i=null),i))(t,e,i,s);return n!==t.lastIndexOf(e)?i:n}function mo(t){const e=this.getLabels();return t>=0&&t<e.length?e[t]:t}function xo(t,e,{horizontal:i,minRotation:s}){const n=$(s),o=(i?Math.sin(n):Math.cos(n))||.001,a=.75*e*(""+t).length;return Math.min(e/o,a)}class bo extends tn{constructor(t){super(t),this.start=void 0,this.end=void 0,this._startValue=void 0,this._endValue=void 0,this._valueRange=0}parse(t,e){return s(t)||("number"==typeof t||t instanceof Number)&&!isFinite(+t)?null:+t}handleTickRangeOptions(){const{beginAtZero:t}=this.options,{minDefined:e,maxDefined:i}=this.getUserBounds();let{min:s,max:n}=this;const o=t=>s=e?s:t,a=t=>n=i?n:t;if(t){const t=F(s),e=F(n);t<0&&e<0?a(0):t>0&&e>0&&o(0)}if(s===n){let e=0===n?1:Math.abs(.05*n);a(n+e),t||o(s-e)}this.min=s,this.max=n}getTickLimit(){const t=this.options.ticks;let e,{maxTicksLimit:i,stepSize:s}=t;return s?(e=Math.ceil(this.max/s)-Math.floor(this.min/s)+1,e>1e3&&(console.warn(`scales.${this.id}.ticks.stepSize: ${s} would result generating up to ${e} ticks. Limiting to 1000.`),e=1e3)):(e=this.computeTickLimit(),i=i||11),i&&(e=Math.min(i,e)),e}computeTickLimit(){return Number.POSITIVE_INFINITY}buildTicks(){const t=this.options,e=t.ticks;let i=this.getTickLimit();i=Math.max(2,i);const n=function(t,e){const i=[],{bounds:n,step:o,min:a,max:r,precision:l,count:h,maxTicks:c,maxDigits:d,includeBounds:u}=t,f=o||1,g=c-1,{min:p,max:m}=e,x=!s(a),b=!s(r),_=!s(h),y=(m-p)/(d+1);let v,M,w,k,S=B((m-p)/g/f)*f;if(S<1e-14&&!x&&!b)return[{value:p},{value:m}];k=Math.ceil(m/S)-Math.floor(p/S),k>g&&(S=B(k*S/g/f)*f),s(l)||(v=Math.pow(10,l),S=Math.ceil(S*v)/v),"ticks"===n?(M=Math.floor(p/S)*S,w=Math.ceil(m/S)*S):(M=p,w=m),x&&b&&o&&H((r-a)/o,S/1e3)?(k=Math.round(Math.min((r-a)/S,c)),S=(r-a)/k,M=a,w=r):_?(M=x?a:M,w=b?r:w,k=h-1,S=(w-M)/k):(k=(w-M)/S,k=V(k,Math.round(k),S/1e3)?Math.round(k):Math.ceil(k));const P=Math.max(U(S),U(M));v=Math.pow(10,s(l)?P:l),M=Math.round(M*v)/v,w=Math.round(w*v)/v;let D=0;for(x&&(u&&M!==a?(i.push({value:a}),M<a&&D++,V(Math.round((M+D*S)*v)/v,a,xo(a,y,t))&&D++):M<a&&D++);D<k;++D){const t=Math.round((M+D*S)*v)/v;if(b&&t>r)break;i.push({value:t})}return b&&u&&w!==r?i.length&&V(i[i.length-1].value,r,xo(r,y,t))?i[i.length-1].value=r:i.push({value:r}):b&&w!==r||i.push({value:w}),i}({maxTicks:i,bounds:t.bounds,min:t.min,max:t.max,precision:e.precision,step:e.stepSize,count:e.count,maxDigits:this._maxDigits(),horizontal:this.isHorizontal(),minRotation:e.minRotation||0,includeBounds:!1!==e.includeBounds},this._range||this);return"ticks"===t.bounds&&j(n,this,"value"),t.reverse?(n.reverse(),this.start=this.max,this.end=this.min):(this.start=this.min,this.end=this.max),n}configure(){const t=this.ticks;let e=this.min,i=this.max;if(super.configure(),this.options.offset&&t.length){const s=(i-e)/Math.max(t.length-1,1)/2;e-=s,i+=s}this._startValue=e,this._endValue=i,this._valueRange=i-e}getLabelForValue(t){return ne(t,this.chart.options.locale,this.options.ticks.format)}}class _o extends bo{static id="linear";static defaults={ticks:{callback:ae.formatters.numeric}};determineDataLimits(){const{min:t,max:e}=this.getMinMax(!0);this.min=a(t)?t:0,this.max=a(e)?e:1,this.handleTickRangeOptions()}computeTickLimit(){const t=this.isHorizontal(),e=t?this.width:this.height,i=$(this.options.ticks.minRotation),s=(t?Math.sin(i):Math.cos(i))||.001,n=this._resolveTickFontOptions(0);return Math.ceil(e/Math.min(40,n.lineHeight/s))}getPixelForValue(t){return null===t?NaN:this.getPixelForDecimal((t-this._startValue)/this._valueRange)}getValueForPixel(t){return this._startValue+this.getDecimalForPixel(t)*this._valueRange}}const yo=t=>Math.floor(z(t)),vo=(t,e)=>Math.pow(10,yo(t)+e);function Mo(t){return 1===t/Math.pow(10,yo(t))}function wo(t,e,i){const s=Math.pow(10,i),n=Math.floor(t/s);return Math.ceil(e/s)-n}function ko(t,{min:e,max:i}){e=r(t.min,e);const s=[],n=yo(e);let o=function(t,e){let i=yo(e-t);for(;wo(t,e,i)>10;)i++;for(;wo(t,e,i)<10;)i--;return Math.min(i,yo(t))}(e,i),a=o<0?Math.pow(10,Math.abs(o)):1;const l=Math.pow(10,o),h=n>o?Math.pow(10,n):0,c=Math.round((e-h)*a)/a,d=Math.floor((e-h)/l/10)*l*10;let u=Math.floor((c-d)/Math.pow(10,o)),f=r(t.min,Math.round((h+d+u*Math.pow(10,o))*a)/a);for(;f<i;)s.push({value:f,major:Mo(f),significand:u}),u>=10?u=u<15?15:20:u++,u>=20&&(o++,u=2,a=o>=0?1:a),f=Math.round((h+d+u*Math.pow(10,o))*a)/a;const g=r(t.max,f);return s.push({value:g,major:Mo(g),significand:u}),s}class So extends tn{static id="logarithmic";static defaults={ticks:{callback:ae.formatters.logarithmic,major:{enabled:!0}}};constructor(t){super(t),this.start=void 0,this.end=void 0,this._startValue=void 0,this._valueRange=0}parse(t,e){const i=bo.prototype.parse.apply(this,[t,e]);if(0!==i)return a(i)&&i>0?i:null;this._zero=!0}determineDataLimits(){const{min:t,max:e}=this.getMinMax(!0);this.min=a(t)?Math.max(0,t):null,this.max=a(e)?Math.max(0,e):null,this.options.beginAtZero&&(this._zero=!0),this._zero&&this.min!==this._suggestedMin&&!a(this._userMin)&&(this.min=t===vo(this.min,0)?vo(this.min,-1):vo(this.min,0)),this.handleTickRangeOptions()}handleTickRangeOptions(){const{minDefined:t,maxDefined:e}=this.getUserBounds();let i=this.min,s=this.max;const n=e=>i=t?i:e,o=t=>s=e?s:t;i===s&&(i<=0?(n(1),o(10)):(n(vo(i,-1)),o(vo(s,1)))),i<=0&&n(vo(s,-1)),s<=0&&o(vo(i,1)),this.min=i,this.max=s}buildTicks(){const t=this.options,e=ko({min:this._userMin,max:this._userMax},this);return"ticks"===t.bounds&&j(e,this,"value"),t.reverse?(e.reverse(),this.start=this.max,this.end=this.min):(this.start=this.min,this.end=this.max),e}getLabelForValue(t){return void 0===t?"0":ne(t,this.chart.options.locale,this.options.ticks.format)}configure(){const t=this.min;super.configure(),this._startValue=z(t),this._valueRange=z(this.max)-z(t)}getPixelForValue(t){return void 0!==t&&0!==t||(t=this.min),null===t||isNaN(t)?NaN:this.getPixelForDecimal(t===this.min?0:(z(t)-this._startValue)/this._valueRange)}getValueForPixel(t){const e=this.getDecimalForPixel(t);return Math.pow(10,this._startValue+e*this._valueRange)}}function Po(t){const e=t.ticks;if(e.display&&t.display){const t=ki(e.backdropPadding);return l(e.font&&e.font.size,ue.font.size)+t.height}return 0}function Do(t,e,i,s,n){return t===s||t===n?{start:e-i/2,end:e+i/2}:t<s||t>n?{start:e-i,end:e}:{start:e,end:e+i}}function Co(t){const e={l:t.left+t._padding.left,r:t.right-t._padding.right,t:t.top+t._padding.top,b:t.bottom-t._padding.bottom},i=Object.assign({},e),s=[],o=[],a=t._pointLabels.length,r=t.options.pointLabels,l=r.centerPointLabels?C/a:0;for(let u=0;u<a;u++){const a=r.setContext(t.getPointLabelContext(u));o[u]=a.padding;const f=t.getPointPosition(u,t.drawingArea+o[u],l),g=Si(a.font),p=(h=t.ctx,c=g,d=n(d=t._pointLabels[u])?d:[d],{w:Oe(h,c.string,d),h:d.length*c.lineHeight});s[u]=p;const m=G(t.getIndexAngle(u)+l),x=Math.round(Y(m));Oo(i,e,m,Do(x,f.x,p.w,0,180),Do(x,f.y,p.h,90,270))}var h,c,d;t.setCenterPoint(e.l-i.l,i.r-e.r,e.t-i.t,i.b-e.b),t._pointLabelItems=function(t,e,i){const s=[],n=t._pointLabels.length,o=t.options,{centerPointLabels:a,display:r}=o.pointLabels,l={extra:Po(o)/2,additionalAngle:a?C/n:0};let h;for(let o=0;o<n;o++){l.padding=i[o],l.size=e[o];const n=Ao(t,o,l);s.push(n),"auto"===r&&(n.visible=To(n,h),n.visible&&(h=n))}return s}(t,s,o)}function Oo(t,e,i,s,n){const o=Math.abs(Math.sin(i)),a=Math.abs(Math.cos(i));let r=0,l=0;s.start<e.l?(r=(e.l-s.start)/o,t.l=Math.min(t.l,e.l-r)):s.end>e.r&&(r=(s.end-e.r)/o,t.r=Math.max(t.r,e.r+r)),n.start<e.t?(l=(e.t-n.start)/a,t.t=Math.min(t.t,e.t-l)):n.end>e.b&&(l=(n.end-e.b)/a,t.b=Math.max(t.b,e.b+l))}function Ao(t,e,i){const s=t.drawingArea,{extra:n,additionalAngle:o,padding:a,size:r}=i,l=t.getPointPosition(e,s+n+a,o),h=Math.round(Y(G(l.angle+E))),c=function(t,e,i){90===i||270===i?t-=e/2:(i>270||i<90)&&(t-=e);return t}(l.y,r.h,h),d=function(t){if(0===t||180===t)return"center";if(t<180)return"left";return"right"}(h),u=function(t,e,i){"right"===i?t-=e:"center"===i&&(t-=e/2);return t}(l.x,r.w,d);return{visible:!0,x:l.x,y:c,textAlign:d,left:u,top:c,right:u+r.w,bottom:c+r.h}}function To(t,e){if(!e)return!0;const{left:i,top:s,right:n,bottom:o}=t;return!(Re({x:i,y:s},e)||Re({x:i,y:o},e)||Re({x:n,y:s},e)||Re({x:n,y:o},e))}function Lo(t,e,i){const{left:n,top:o,right:a,bottom:r}=i,{backdropColor:l}=e;if(!s(l)){const i=wi(e.borderRadius),s=ki(e.backdropPadding);t.fillStyle=l;const h=n-s.left,c=o-s.top,d=a-n+s.width,u=r-o+s.height;Object.values(i).some((t=>0!==t))?(t.beginPath(),He(t,{x:h,y:c,w:d,h:u,radius:i}),t.fill()):t.fillRect(h,c,d,u)}}function Eo(t,e,i,s){const{ctx:n}=t;if(i)n.arc(t.xCenter,t.yCenter,e,0,O);else{let i=t.getPointPosition(0,e);n.moveTo(i.x,i.y);for(let o=1;o<s;o++)i=t.getPointPosition(o,e),n.lineTo(i.x,i.y)}}class Ro extends bo{static id="radialLinear";static defaults={display:!0,animate:!0,position:"chartArea",angleLines:{display:!0,lineWidth:1,borderDash:[],borderDashOffset:0},grid:{circular:!1},startAngle:0,ticks:{showLabelBackdrop:!0,callback:ae.formatters.numeric},pointLabels:{backdropColor:void 0,backdropPadding:2,display:!0,font:{size:10},callback:t=>t,padding:5,centerPointLabels:!1}};static defaultRoutes={"angleLines.color":"borderColor","pointLabels.color":"color","ticks.color":"color"};static descriptors={angleLines:{_fallback:"grid"}};constructor(t){super(t),this.xCenter=void 0,this.yCenter=void 0,this.drawingArea=void 0,this._pointLabels=[],this._pointLabelItems=[]}setDimensions(){const t=this._padding=ki(Po(this.options)/2),e=this.width=this.maxWidth-t.width,i=this.height=this.maxHeight-t.height;this.xCenter=Math.floor(this.left+e/2+t.left),this.yCenter=Math.floor(this.top+i/2+t.top),this.drawingArea=Math.floor(Math.min(e,i)/2)}determineDataLimits(){const{min:t,max:e}=this.getMinMax(!1);this.min=a(t)&&!isNaN(t)?t:0,this.max=a(e)&&!isNaN(e)?e:0,this.handleTickRangeOptions()}computeTickLimit(){return Math.ceil(this.drawingArea/Po(this.options))}generateTickLabels(t){bo.prototype.generateTickLabels.call(this,t),this._pointLabels=this.getLabels().map(((t,e)=>{const i=d(this.options.pointLabels.callback,[t,e],this);return i||0===i?i:""})).filter(((t,e)=>this.chart.getDataVisibility(e)))}fit(){const t=this.options;t.display&&t.pointLabels.display?Co(this):this.setCenterPoint(0,0,0,0)}setCenterPoint(t,e,i,s){this.xCenter+=Math.floor((t-e)/2),this.yCenter+=Math.floor((i-s)/2),this.drawingArea-=Math.min(this.drawingArea/2,Math.max(t,e,i,s))}getIndexAngle(t){return G(t*(O/(this._pointLabels.length||1))+$(this.options.startAngle||0))}getDistanceFromCenterForValue(t){if(s(t))return NaN;const e=this.drawingArea/(this.max-this.min);return this.options.reverse?(this.max-t)*e:(t-this.min)*e}getValueForDistanceFromCenter(t){if(s(t))return NaN;const e=t/(this.drawingArea/(this.max-this.min));return this.options.reverse?this.max-e:this.min+e}getPointLabelContext(t){const e=this._pointLabels||[];if(t>=0&&t<e.length){const i=e[t];return function(t,e,i){return Ci(t,{label:i,index:e,type:"pointLabel"})}(this.getContext(),t,i)}}getPointPosition(t,e,i=0){const s=this.getIndexAngle(t)-E+i;return{x:Math.cos(s)*e+this.xCenter,y:Math.sin(s)*e+this.yCenter,angle:s}}getPointPositionForValue(t,e){return this.getPointPosition(t,this.getDistanceFromCenterForValue(e))}getBasePosition(t){return this.getPointPositionForValue(t||0,this.getBaseValue())}getPointLabelPosition(t){const{left:e,top:i,right:s,bottom:n}=this._pointLabelItems[t];return{left:e,top:i,right:s,bottom:n}}drawBackground(){const{backgroundColor:t,grid:{circular:e}}=this.options;if(t){const i=this.ctx;i.save(),i.beginPath(),Eo(this,this.getDistanceFromCenterForValue(this._endValue),e,this._pointLabels.length),i.closePath(),i.fillStyle=t,i.fill(),i.restore()}}drawGrid(){const t=this.ctx,e=this.options,{angleLines:i,grid:s,border:n}=e,o=this._pointLabels.length;let a,r,l;if(e.pointLabels.display&&function(t,e){const{ctx:i,options:{pointLabels:s}}=t;for(let n=e-1;n>=0;n--){const e=t._pointLabelItems[n];if(!e.visible)continue;const o=s.setContext(t.getPointLabelContext(n));Lo(i,o,e);const a=Si(o.font),{x:r,y:l,textAlign:h}=e;Ne(i,t._pointLabels[n],r,l+a.lineHeight/2,a,{color:o.color,textAlign:h,textBaseline:"middle"})}}(this,o),s.display&&this.ticks.forEach(((t,e)=>{if(0!==e||0===e&&this.min<0){r=this.getDistanceFromCenterForValue(t.value);const i=this.getContext(e),a=s.setContext(i),l=n.setContext(i);!function(t,e,i,s,n){const o=t.ctx,a=e.circular,{color:r,lineWidth:l}=e;!a&&!s||!r||!l||i<0||(o.save(),o.strokeStyle=r,o.lineWidth=l,o.setLineDash(n.dash||[]),o.lineDashOffset=n.dashOffset,o.beginPath(),Eo(t,i,a,s),o.closePath(),o.stroke(),o.restore())}(this,a,r,o,l)}})),i.display){for(t.save(),a=o-1;a>=0;a--){const s=i.setContext(this.getPointLabelContext(a)),{color:n,lineWidth:o}=s;o&&n&&(t.lineWidth=o,t.strokeStyle=n,t.setLineDash(s.borderDash),t.lineDashOffset=s.borderDashOffset,r=this.getDistanceFromCenterForValue(e.reverse?this.min:this.max),l=this.getPointPosition(a,r),t.beginPath(),t.moveTo(this.xCenter,this.yCenter),t.lineTo(l.x,l.y),t.stroke())}t.restore()}}drawBorder(){}drawLabels(){const t=this.ctx,e=this.options,i=e.ticks;if(!i.display)return;const s=this.getIndexAngle(0);let n,o;t.save(),t.translate(this.xCenter,this.yCenter),t.rotate(s),t.textAlign="center",t.textBaseline="middle",this.ticks.forEach(((s,a)=>{if(0===a&&this.min>=0&&!e.reverse)return;const r=i.setContext(this.getContext(a)),l=Si(r.font);if(n=this.getDistanceFromCenterForValue(this.ticks[a].value),r.showLabelBackdrop){t.font=l.string,o=t.measureText(s.label).width,t.fillStyle=r.backdropColor;const e=ki(r.backdropPadding);t.fillRect(-o/2-e.left,-n-l.size/2-e.top,o+e.width,l.size+e.height)}Ne(t,s.label,0,-n,l,{color:r.color,strokeColor:r.textStrokeColor,strokeWidth:r.textStrokeWidth})})),t.restore()}drawTitle(){}}const Io={millisecond:{common:!0,size:1,steps:1e3},second:{common:!0,size:1e3,steps:60},minute:{common:!0,size:6e4,steps:60},hour:{common:!0,size:36e5,steps:24},day:{common:!0,size:864e5,steps:30},week:{common:!1,size:6048e5,steps:4},month:{common:!0,size:2628e6,steps:12},quarter:{common:!1,size:7884e6,steps:4},year:{common:!0,size:3154e7}},zo=Object.keys(Io);function Fo(t,e){return t-e}function Vo(t,e){if(s(e))return null;const i=t._adapter,{parser:n,round:o,isoWeekday:r}=t._parseOpts;let l=e;return"function"==typeof n&&(l=n(l)),a(l)||(l="string"==typeof n?i.parse(l,n):i.parse(l)),null===l?null:(o&&(l="week"!==o||!N(r)&&!0!==r?i.startOf(l,o):i.startOf(l,"isoWeek",r)),+l)}function Bo(t,e,i,s){const n=zo.length;for(let o=zo.indexOf(t);o<n-1;++o){const t=Io[zo[o]],n=t.steps?t.steps:Number.MAX_SAFE_INTEGER;if(t.common&&Math.ceil((i-e)/(n*t.size))<=s)return zo[o]}return zo[n-1]}function Wo(t,e,i){if(i){if(i.length){const{lo:s,hi:n}=et(i,e);t[i[s]>=e?i[s]:i[n]]=!0}}else t[e]=!0}function No(t,e,i){const s=[],n={},o=e.length;let a,r;for(a=0;a<o;++a)r=e[a],n[r]=a,s.push({value:r,major:!1});return 0!==o&&i?function(t,e,i,s){const n=t._adapter,o=+n.startOf(e[0].value,s),a=e[e.length-1].value;let r,l;for(r=o;r<=a;r=+n.add(r,1,s))l=i[r],l>=0&&(e[l].major=!0);return e}(t,s,n,i):s}class Ho extends tn{static id="time";static defaults={bounds:"data",adapters:{},time:{parser:!1,unit:!1,round:!1,isoWeekday:!1,minUnit:"millisecond",displayFormats:{}},ticks:{source:"auto",callback:!1,major:{enabled:!1}}};constructor(t){super(t),this._cache={data:[],labels:[],all:[]},this._unit="day",this._majorUnit=void 0,this._offsets={},this._normalized=!1,this._parseOpts=void 0}init(t,e={}){const i=t.time||(t.time={}),s=this._adapter=new In._date(t.adapters.date);s.init(e),b(i.displayFormats,s.formats()),this._parseOpts={parser:i.parser,round:i.round,isoWeekday:i.isoWeekday},super.init(t),this._normalized=e.normalized}parse(t,e){return void 0===t?null:Vo(this,t)}beforeLayout(){super.beforeLayout(),this._cache={data:[],labels:[],all:[]}}determineDataLimits(){const t=this.options,e=this._adapter,i=t.time.unit||"day";let{min:s,max:n,minDefined:o,maxDefined:r}=this.getUserBounds();function l(t){o||isNaN(t.min)||(s=Math.min(s,t.min)),r||isNaN(t.max)||(n=Math.max(n,t.max))}o&&r||(l(this._getLabelBounds()),"ticks"===t.bounds&&"labels"===t.ticks.source||l(this.getMinMax(!1))),s=a(s)&&!isNaN(s)?s:+e.startOf(Date.now(),i),n=a(n)&&!isNaN(n)?n:+e.endOf(Date.now(),i)+1,this.min=Math.min(s,n-1),this.max=Math.max(s+1,n)}_getLabelBounds(){const t=this.getLabelTimestamps();let e=Number.POSITIVE_INFINITY,i=Number.NEGATIVE_INFINITY;return t.length&&(e=t[0],i=t[t.length-1]),{min:e,max:i}}buildTicks(){const t=this.options,e=t.time,i=t.ticks,s="labels"===i.source?this.getLabelTimestamps():this._generate();"ticks"===t.bounds&&s.length&&(this.min=this._userMin||s[0],this.max=this._userMax||s[s.length-1]);const n=this.min,o=nt(s,n,this.max);return this._unit=e.unit||(i.autoSkip?Bo(e.minUnit,this.min,this.max,this._getLabelCapacity(n)):function(t,e,i,s,n){for(let o=zo.length-1;o>=zo.indexOf(i);o--){const i=zo[o];if(Io[i].common&&t._adapter.diff(n,s,i)>=e-1)return i}return zo[i?zo.indexOf(i):0]}(this,o.length,e.minUnit,this.min,this.max)),this._majorUnit=i.major.enabled&&"year"!==this._unit?function(t){for(let e=zo.indexOf(t)+1,i=zo.length;e<i;++e)if(Io[zo[e]].common)return zo[e]}(this._unit):void 0,this.initOffsets(s),t.reverse&&o.reverse(),No(this,o,this._majorUnit)}afterAutoSkip(){this.options.offsetAfterAutoskip&&this.initOffsets(this.ticks.map((t=>+t.value)))}initOffsets(t=[]){let e,i,s=0,n=0;this.options.offset&&t.length&&(e=this.getDecimalForValue(t[0]),s=1===t.length?1-e:(this.getDecimalForValue(t[1])-e)/2,i=this.getDecimalForValue(t[t.length-1]),n=1===t.length?i:(i-this.getDecimalForValue(t[t.length-2]))/2);const o=t.length<3?.5:.25;s=Z(s,0,o),n=Z(n,0,o),this._offsets={start:s,end:n,factor:1/(s+1+n)}}_generate(){const t=this._adapter,e=this.min,i=this.max,s=this.options,n=s.time,o=n.unit||Bo(n.minUnit,e,i,this._getLabelCapacity(e)),a=l(s.ticks.stepSize,1),r="week"===o&&n.isoWeekday,h=N(r)||!0===r,c={};let d,u,f=e;if(h&&(f=+t.startOf(f,"isoWeek",r)),f=+t.startOf(f,h?"day":o),t.diff(i,e,o)>1e5*a)throw new Error(e+" and "+i+" are too far apart with stepSize of "+a+" "+o);const g="data"===s.ticks.source&&this.getDataTimestamps();for(d=f,u=0;d<i;d=+t.add(d,a,o),u++)Wo(c,d,g);return d!==i&&"ticks"!==s.bounds&&1!==u||Wo(c,d,g),Object.keys(c).sort(Fo).map((t=>+t))}getLabelForValue(t){const e=this._adapter,i=this.options.time;return i.tooltipFormat?e.format(t,i.tooltipFormat):e.format(t,i.displayFormats.datetime)}format(t,e){const i=this.options.time.displayFormats,s=this._unit,n=e||i[s];return this._adapter.format(t,n)}_tickFormatFunction(t,e,i,s){const n=this.options,o=n.ticks.callback;if(o)return d(o,[t,e,i],this);const a=n.time.displayFormats,r=this._unit,l=this._majorUnit,h=r&&a[r],c=l&&a[l],u=i[e],f=l&&c&&u&&u.major;return this._adapter.format(t,s||(f?c:h))}generateTickLabels(t){let e,i,s;for(e=0,i=t.length;e<i;++e)s=t[e],s.label=this._tickFormatFunction(s.value,e,t)}getDecimalForValue(t){return null===t?NaN:(t-this.min)/(this.max-this.min)}getPixelForValue(t){const e=this._offsets,i=this.getDecimalForValue(t);return this.getPixelForDecimal((e.start+i)*e.factor)}getValueForPixel(t){const e=this._offsets,i=this.getDecimalForPixel(t)/e.factor-e.end;return this.min+i*(this.max-this.min)}_getLabelSize(t){const e=this.options.ticks,i=this.ctx.measureText(t).width,s=$(this.isHorizontal()?e.maxRotation:e.minRotation),n=Math.cos(s),o=Math.sin(s),a=this._resolveTickFontOptions(0).size;return{w:i*n+a*o,h:i*o+a*n}}_getLabelCapacity(t){const e=this.options.time,i=e.displayFormats,s=i[e.unit]||i.millisecond,n=this._tickFormatFunction(t,0,No(this,[t],this._majorUnit),s),o=this._getLabelSize(n),a=Math.floor(this.isHorizontal()?this.width/o.w:this.height/o.h)-1;return a>0?a:1}getDataTimestamps(){let t,e,i=this._cache.data||[];if(i.length)return i;const s=this.getMatchingVisibleMetas();if(this._normalized&&s.length)return this._cache.data=s[0].controller.getAllParsedValues(this);for(t=0,e=s.length;t<e;++t)i=i.concat(s[t].controller.getAllParsedValues(this));return this._cache.data=this.normalize(i)}getLabelTimestamps(){const t=this._cache.labels||[];let e,i;if(t.length)return t;const s=this.getLabels();for(e=0,i=s.length;e<i;++e)t.push(Vo(this,s[e]));return this._cache.labels=this._normalized?t:this.normalize(t)}normalize(t){return lt(t.sort(Fo))}}function jo(t,e,i){let s,n,o,a,r=0,l=t.length-1;i?(e>=t[r].pos&&e<=t[l].pos&&({lo:r,hi:l}=it(t,"pos",e)),({pos:s,time:o}=t[r]),({pos:n,time:a}=t[l])):(e>=t[r].time&&e<=t[l].time&&({lo:r,hi:l}=it(t,"time",e)),({time:s,pos:o}=t[r]),({time:n,pos:a}=t[l]));const h=n-s;return h?o+(a-o)*(e-s)/h:o}var $o=Object.freeze({__proto__:null,CategoryScale:class extends tn{static id="category";static defaults={ticks:{callback:mo}};constructor(t){super(t),this._startValue=void 0,this._valueRange=0,this._addedLabels=[]}init(t){const e=this._addedLabels;if(e.length){const t=this.getLabels();for(const{index:i,label:s}of e)t[i]===s&&t.splice(i,1);this._addedLabels=[]}super.init(t)}parse(t,e){if(s(t))return null;const i=this.getLabels();return((t,e)=>null===t?null:Z(Math.round(t),0,e))(e=isFinite(e)&&i[e]===t?e:po(i,t,l(e,t),this._addedLabels),i.length-1)}determineDataLimits(){const{minDefined:t,maxDefined:e}=this.getUserBounds();let{min:i,max:s}=this.getMinMax(!0);"ticks"===this.options.bounds&&(t||(i=0),e||(s=this.getLabels().length-1)),this.min=i,this.max=s}buildTicks(){const t=this.min,e=this.max,i=this.options.offset,s=[];let n=this.getLabels();n=0===t&&e===n.length-1?n:n.slice(t,e+1),this._valueRange=Math.max(n.length-(i?0:1),1),this._startValue=this.min-(i?.5:0);for(let i=t;i<=e;i++)s.push({value:i});return s}getLabelForValue(t){return mo.call(this,t)}configure(){super.configure(),this.isHorizontal()||(this._reversePixels=!this._reversePixels)}getPixelForValue(t){return"number"!=typeof t&&(t=this.parse(t)),null===t?NaN:this.getPixelForDecimal((t-this._startValue)/this._valueRange)}getPixelForTick(t){const e=this.ticks;return t<0||t>e.length-1?null:this.getPixelForValue(e[t].value)}getValueForPixel(t){return Math.round(this._startValue+this.getDecimalForPixel(t)*this._valueRange)}getBasePixel(){return this.bottom}},LinearScale:_o,LogarithmicScale:So,RadialLinearScale:Ro,TimeScale:Ho,TimeSeriesScale:class extends Ho{static id="timeseries";static defaults=Ho.defaults;constructor(t){super(t),this._table=[],this._minPos=void 0,this._tableRange=void 0}initOffsets(){const t=this._getTimestampsForTable(),e=this._table=this.buildLookupTable(t);this._minPos=jo(e,this.min),this._tableRange=jo(e,this.max)-this._minPos,super.initOffsets(t)}buildLookupTable(t){const{min:e,max:i}=this,s=[],n=[];let o,a,r,l,h;for(o=0,a=t.length;o<a;++o)l=t[o],l>=e&&l<=i&&s.push(l);if(s.length<2)return[{time:e,pos:0},{time:i,pos:1}];for(o=0,a=s.length;o<a;++o)h=s[o+1],r=s[o-1],l=s[o],Math.round((h+r)/2)!==l&&n.push({time:l,pos:o/(a-1)});return n}_generate(){const t=this.min,e=this.max;let i=super.getDataTimestamps();return i.includes(t)&&i.length||i.splice(0,0,t),i.includes(e)&&1!==i.length||i.push(e),i.sort(((t,e)=>t-e))}_getTimestampsForTable(){let t=this._cache.all||[];if(t.length)return t;const e=this.getDataTimestamps(),i=this.getLabelTimestamps();return t=e.length&&i.length?this.normalize(e.concat(i)):e.length?e:i,t=this._cache.all=t,t}getDecimalForValue(t){return(jo(this._table,t)-this._minPos)/this._tableRange}getValueForPixel(t){const e=this._offsets,i=this.getDecimalForPixel(t)/e.factor-e.end;return jo(this._table,i*this._tableRange+this._minPos,!0)}}});const Yo=["rgb(54, 162, 235)","rgb(255, 99, 132)","rgb(255, 159, 64)","rgb(255, 205, 86)","rgb(75, 192, 192)","rgb(153, 102, 255)","rgb(201, 203, 207)"],Uo=Yo.map((t=>t.replace("rgb(","rgba(").replace(")",", 0.5)")));function Xo(t){return Yo[t%Yo.length]}function qo(t){return Uo[t%Uo.length]}function Ko(t){let e=0;return(i,s)=>{const n=t.getDatasetMeta(s).controller;n instanceof $n?e=function(t,e){return t.backgroundColor=t.data.map((()=>Xo(e++))),e}(i,e):n instanceof Yn?e=function(t,e){return t.backgroundColor=t.data.map((()=>qo(e++))),e}(i,e):n&&(e=function(t,e){return t.borderColor=Xo(e),t.backgroundColor=qo(e),++e}(i,e))}}function Go(t){let e;for(e in t)if(t[e].borderColor||t[e].backgroundColor)return!0;return!1}var Jo={id:"colors",defaults:{enabled:!0,forceOverride:!1},beforeLayout(t,e,i){if(!i.enabled)return;const{data:{datasets:s},options:n}=t.config,{elements:o}=n,a=Go(s)||(r=n)&&(r.borderColor||r.backgroundColor)||o&&Go(o)||"rgba(0,0,0,0.1)"!==ue.borderColor||"rgba(0,0,0,0.1)"!==ue.backgroundColor;var r;if(!i.forceOverride&&a)return;const l=Ko(t);s.forEach(l)}};function Zo(t){if(t._decimated){const e=t._data;delete t._decimated,delete t._data,Object.defineProperty(t,"data",{configurable:!0,enumerable:!0,writable:!0,value:e})}}function Qo(t){t.data.datasets.forEach((t=>{Zo(t)}))}var ta={id:"decimation",defaults:{algorithm:"min-max",enabled:!1},beforeElementsUpdate:(t,e,i)=>{if(!i.enabled)return void Qo(t);const n=t.width;t.data.datasets.forEach(((e,o)=>{const{_data:a,indexAxis:r}=e,l=t.getDatasetMeta(o),h=a||e.data;if("y"===Pi([r,t.options.indexAxis]))return;if(!l.controller.supportsDecimation)return;const c=t.scales[l.xAxisID];if("linear"!==c.type&&"time"!==c.type)return;if(t.options.parsing)return;let{start:d,count:u}=function(t,e){const i=e.length;let s,n=0;const{iScale:o}=t,{min:a,max:r,minDefined:l,maxDefined:h}=o.getUserBounds();return l&&(n=Z(it(e,o.axis,a).lo,0,i-1)),s=h?Z(it(e,o.axis,r).hi+1,n,i)-n:i-n,{start:n,count:s}}(l,h);if(u<=(i.threshold||4*n))return void Zo(e);let f;switch(s(a)&&(e._data=h,delete e.data,Object.defineProperty(e,"data",{configurable:!0,enumerable:!0,get:function(){return this._decimated},set:function(t){this._data=t}})),i.algorithm){case"lttb":f=function(t,e,i,s,n){const o=n.samples||s;if(o>=i)return t.slice(e,e+i);const a=[],r=(i-2)/(o-2);let l=0;const h=e+i-1;let c,d,u,f,g,p=e;for(a[l++]=t[p],c=0;c<o-2;c++){let s,n=0,o=0;const h=Math.floor((c+1)*r)+1+e,m=Math.min(Math.floor((c+2)*r)+1,i)+e,x=m-h;for(s=h;s<m;s++)n+=t[s].x,o+=t[s].y;n/=x,o/=x;const b=Math.floor(c*r)+1+e,_=Math.min(Math.floor((c+1)*r)+1,i)+e,{x:y,y:v}=t[p];for(u=f=-1,s=b;s<_;s++)f=.5*Math.abs((y-n)*(t[s].y-v)-(y-t[s].x)*(o-v)),f>u&&(u=f,d=t[s],g=s);a[l++]=d,p=g}return a[l++]=t[h],a}(h,d,u,n,i);break;case"min-max":f=function(t,e,i,n){let o,a,r,l,h,c,d,u,f,g,p=0,m=0;const x=[],b=e+i-1,_=t[e].x,y=t[b].x-_;for(o=e;o<e+i;++o){a=t[o],r=(a.x-_)/y*n,l=a.y;const e=0|r;if(e===h)l<f?(f=l,c=o):l>g&&(g=l,d=o),p=(m*p+a.x)/++m;else{const i=o-1;if(!s(c)&&!s(d)){const e=Math.min(c,d),s=Math.max(c,d);e!==u&&e!==i&&x.push({...t[e],x:p}),s!==u&&s!==i&&x.push({...t[s],x:p})}o>0&&i!==u&&x.push(t[i]),x.push(a),h=e,m=0,f=g=l,c=d=u=o}}return x}(h,d,u,n);break;default:throw new Error(`Unsupported decimation algorithm '${i.algorithm}'`)}e._decimated=f}))},destroy(t){Qo(t)}};function ea(t,e,i,s){if(s)return;let n=e[t],o=i[t];return"angle"===t&&(n=G(n),o=G(o)),{property:t,start:n,end:o}}function ia(t,e,i){for(;e>t;e--){const t=i[e];if(!isNaN(t.x)&&!isNaN(t.y))break}return e}function sa(t,e,i,s){return t&&e?s(t[i],e[i]):t?t[i]:e?e[i]:0}function na(t,e){let i=[],s=!1;return n(t)?(s=!0,i=t):i=function(t,e){const{x:i=null,y:s=null}=t||{},n=e.points,o=[];return e.segments.forEach((({start:t,end:e})=>{e=ia(t,e,n);const a=n[t],r=n[e];null!==s?(o.push({x:a.x,y:s}),o.push({x:r.x,y:s})):null!==i&&(o.push({x:i,y:a.y}),o.push({x:i,y:r.y}))})),o}(t,e),i.length?new oo({points:i,options:{tension:0},_loop:s,_fullLoop:s}):null}function oa(t){return t&&!1!==t.fill}function aa(t,e,i){let s=t[e].fill;const n=[e];let o;if(!i)return s;for(;!1!==s&&-1===n.indexOf(s);){if(!a(s))return s;if(o=t[s],!o)return!1;if(o.visible)return s;n.push(s),s=o.fill}return!1}function ra(t,e,i){const s=function(t){const e=t.options,i=e.fill;let s=l(i&&i.target,i);void 0===s&&(s=!!e.backgroundColor);if(!1===s||null===s)return!1;if(!0===s)return"origin";return s}(t);if(o(s))return!isNaN(s.value)&&s;let n=parseFloat(s);return a(n)&&Math.floor(n)===n?function(t,e,i,s){"-"!==t&&"+"!==t||(i=e+i);if(i===e||i<0||i>=s)return!1;return i}(s[0],e,n,i):["origin","start","end","stack","shape"].indexOf(s)>=0&&s}function la(t,e,i){const s=[];for(let n=0;n<i.length;n++){const o=i[n],{first:a,last:r,point:l}=ha(o,e,"x");if(!(!l||a&&r))if(a)s.unshift(l);else if(t.push(l),!r)break}t.push(...s)}function ha(t,e,i){const s=t.interpolate(e,i);if(!s)return{};const n=s[i],o=t.segments,a=t.points;let r=!1,l=!1;for(let t=0;t<o.length;t++){const e=o[t],s=a[e.start][i],h=a[e.end][i];if(tt(n,s,h)){r=n===s,l=n===h;break}}return{first:r,last:l,point:s}}class ca{constructor(t){this.x=t.x,this.y=t.y,this.radius=t.radius}pathSegment(t,e,i){const{x:s,y:n,radius:o}=this;return e=e||{start:0,end:O},t.arc(s,n,o,e.end,e.start,!0),!i.bounds}interpolate(t){const{x:e,y:i,radius:s}=this,n=t.angle;return{x:e+Math.cos(n)*s,y:i+Math.sin(n)*s,angle:n}}}function da(t){const{chart:e,fill:i,line:s}=t;if(a(i))return function(t,e){const i=t.getDatasetMeta(e),s=i&&t.isDatasetVisible(e);return s?i.dataset:null}(e,i);if("stack"===i)return function(t){const{scale:e,index:i,line:s}=t,n=[],o=s.segments,a=s.points,r=function(t,e){const i=[],s=t.getMatchingVisibleMetas("line");for(let t=0;t<s.length;t++){const n=s[t];if(n.index===e)break;n.hidden||i.unshift(n.dataset)}return i}(e,i);r.push(na({x:null,y:e.bottom},s));for(let t=0;t<o.length;t++){const e=o[t];for(let t=e.start;t<=e.end;t++)la(n,a[t],r)}return new oo({points:n,options:{}})}(t);if("shape"===i)return!0;const n=function(t){const e=t.scale||{};if(e.getPointPositionForValue)return function(t){const{scale:e,fill:i}=t,s=e.options,n=e.getLabels().length,a=s.reverse?e.max:e.min,r=function(t,e,i){let s;return s="start"===t?i:"end"===t?e.options.reverse?e.min:e.max:o(t)?t.value:e.getBaseValue(),s}(i,e,a),l=[];if(s.grid.circular){const t=e.getPointPositionForValue(0,a);return new ca({x:t.x,y:t.y,radius:e.getDistanceFromCenterForValue(r)})}for(let t=0;t<n;++t)l.push(e.getPointPositionForValue(t,r));return l}(t);return function(t){const{scale:e={},fill:i}=t,s=function(t,e){let i=null;return"start"===t?i=e.bottom:"end"===t?i=e.top:o(t)?i=e.getPixelForValue(t.value):e.getBasePixel&&(i=e.getBasePixel()),i}(i,e);if(a(s)){const t=e.isHorizontal();return{x:t?s:null,y:t?null:s}}return null}(t)}(t);return n instanceof ca?n:na(n,s)}function ua(t,e,i){const s=da(e),{chart:n,index:o,line:a,scale:r,axis:l}=e,h=a.options,c=h.fill,d=h.backgroundColor,{above:u=d,below:f=d}=c||{},g=n.getDatasetMeta(o),p=Ni(n,g);s&&a.points.length&&(Ie(t,i),function(t,e){const{line:i,target:s,above:n,below:o,area:a,scale:r,clip:l}=e,h=i._loop?"angle":e.axis;t.save();let c=o;o!==n&&("x"===h?(fa(t,s,a.top),pa(t,{line:i,target:s,color:n,scale:r,property:h,clip:l}),t.restore(),t.save(),fa(t,s,a.bottom)):"y"===h&&(ga(t,s,a.left),pa(t,{line:i,target:s,color:o,scale:r,property:h,clip:l}),t.restore(),t.save(),ga(t,s,a.right),c=n));pa(t,{line:i,target:s,color:c,scale:r,property:h,clip:l}),t.restore()}(t,{line:a,target:s,above:u,below:f,area:i,scale:r,axis:l,clip:p}),ze(t))}function fa(t,e,i){const{segments:s,points:n}=e;let o=!0,a=!1;t.beginPath();for(const r of s){const{start:s,end:l}=r,h=n[s],c=n[ia(s,l,n)];o?(t.moveTo(h.x,h.y),o=!1):(t.lineTo(h.x,i),t.lineTo(h.x,h.y)),a=!!e.pathSegment(t,r,{move:a}),a?t.closePath():t.lineTo(c.x,i)}t.lineTo(e.first().x,i),t.closePath(),t.clip()}function ga(t,e,i){const{segments:s,points:n}=e;let o=!0,a=!1;t.beginPath();for(const r of s){const{start:s,end:l}=r,h=n[s],c=n[ia(s,l,n)];o?(t.moveTo(h.x,h.y),o=!1):(t.lineTo(i,h.y),t.lineTo(h.x,h.y)),a=!!e.pathSegment(t,r,{move:a}),a?t.closePath():t.lineTo(i,c.y)}t.lineTo(i,e.first().y),t.closePath(),t.clip()}function pa(t,e){const{line:i,target:s,property:n,color:o,scale:a,clip:r}=e,l=function(t,e,i){const s=t.segments,n=t.points,o=e.points,a=[];for(const t of s){let{start:s,end:r}=t;r=ia(s,r,n);const l=ea(i,n[s],n[r],t.loop);if(!e.segments){a.push({source:t,target:l,start:n[s],end:n[r]});continue}const h=Ii(e,l);for(const e of h){const s=ea(i,o[e.start],o[e.end],e.loop),r=Ri(t,n,s);for(const t of r)a.push({source:t,target:e,start:{[i]:sa(l,s,"start",Math.max)},end:{[i]:sa(l,s,"end",Math.min)}})}}return a}(i,s,n);for(const{source:e,target:h,start:c,end:d}of l){const{style:{backgroundColor:l=o}={}}=e,u=!0!==s;t.save(),t.fillStyle=l,ma(t,a,r,u&&ea(n,c,d)),t.beginPath();const f=!!i.pathSegment(t,e);let g;if(u){f?t.closePath():xa(t,s,d,n);const e=!!s.pathSegment(t,h,{move:f,reverse:!0});g=f&&e,g||xa(t,s,c,n)}t.closePath(),t.fill(g?"evenodd":"nonzero"),t.restore()}}function ma(t,e,i,s){const n=e.chart.chartArea,{property:o,start:a,end:r}=s||{};if("x"===o||"y"===o){let e,s,l,h;"x"===o?(e=a,s=n.top,l=r,h=n.bottom):(e=n.left,s=a,l=n.right,h=r),t.beginPath(),i&&(e=Math.max(e,i.left),l=Math.min(l,i.right),s=Math.max(s,i.top),h=Math.min(h,i.bottom)),t.rect(e,s,l-e,h-s),t.clip()}}function xa(t,e,i,s){const n=e.interpolate(i,s);n&&t.lineTo(n.x,n.y)}var ba={id:"filler",afterDatasetsUpdate(t,e,i){const s=(t.data.datasets||[]).length,n=[];let o,a,r,l;for(a=0;a<s;++a)o=t.getDatasetMeta(a),r=o.dataset,l=null,r&&r.options&&r instanceof oo&&(l={visible:t.isDatasetVisible(a),index:a,fill:ra(r,a,s),chart:t,axis:o.controller.options.indexAxis,scale:o.vScale,line:r}),o.$filler=l,n.push(l);for(a=0;a<s;++a)l=n[a],l&&!1!==l.fill&&(l.fill=aa(n,a,i.propagate))},beforeDraw(t,e,i){const s="beforeDraw"===i.drawTime,n=t.getSortedVisibleDatasetMetas(),o=t.chartArea;for(let e=n.length-1;e>=0;--e){const i=n[e].$filler;i&&(i.line.updateControlPoints(o,i.axis),s&&i.fill&&ua(t.ctx,i,o))}},beforeDatasetsDraw(t,e,i){if("beforeDatasetsDraw"!==i.drawTime)return;const s=t.getSortedVisibleDatasetMetas();for(let e=s.length-1;e>=0;--e){const i=s[e].$filler;oa(i)&&ua(t.ctx,i,t.chartArea)}},beforeDatasetDraw(t,e,i){const s=e.meta.$filler;oa(s)&&"beforeDatasetDraw"===i.drawTime&&ua(t.ctx,s,t.chartArea)},defaults:{propagate:!0,drawTime:"beforeDatasetDraw"}};const _a=(t,e)=>{let{boxHeight:i=e,boxWidth:s=e}=t;return t.usePointStyle&&(i=Math.min(i,e),s=t.pointStyleWidth||Math.min(s,e)),{boxWidth:s,boxHeight:i,itemHeight:Math.max(e,i)}};class ya extends $s{constructor(t){super(),this._added=!1,this.legendHitBoxes=[],this._hoveredItem=null,this.doughnutMode=!1,this.chart=t.chart,this.options=t.options,this.ctx=t.ctx,this.legendItems=void 0,this.columnSizes=void 0,this.lineWidths=void 0,this.maxHeight=void 0,this.maxWidth=void 0,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.height=void 0,this.width=void 0,this._margins=void 0,this.position=void 0,this.weight=void 0,this.fullSize=void 0}update(t,e,i){this.maxWidth=t,this.maxHeight=e,this._margins=i,this.setDimensions(),this.buildLabels(),this.fit()}setDimensions(){this.isHorizontal()?(this.width=this.maxWidth,this.left=this._margins.left,this.right=this.width):(this.height=this.maxHeight,this.top=this._margins.top,this.bottom=this.height)}buildLabels(){const t=this.options.labels||{};let e=d(t.generateLabels,[this.chart],this)||[];t.filter&&(e=e.filter((e=>t.filter(e,this.chart.data)))),t.sort&&(e=e.sort(((e,i)=>t.sort(e,i,this.chart.data)))),this.options.reverse&&e.reverse(),this.legendItems=e}fit(){const{options:t,ctx:e}=this;if(!t.display)return void(this.width=this.height=0);const i=t.labels,s=Si(i.font),n=s.size,o=this._computeTitleHeight(),{boxWidth:a,itemHeight:r}=_a(i,n);let l,h;e.font=s.string,this.isHorizontal()?(l=this.maxWidth,h=this._fitRows(o,n,a,r)+10):(h=this.maxHeight,l=this._fitCols(o,s,a,r)+10),this.width=Math.min(l,t.maxWidth||this.maxWidth),this.height=Math.min(h,t.maxHeight||this.maxHeight)}_fitRows(t,e,i,s){const{ctx:n,maxWidth:o,options:{labels:{padding:a}}}=this,r=this.legendHitBoxes=[],l=this.lineWidths=[0],h=s+a;let c=t;n.textAlign="left",n.textBaseline="middle";let d=-1,u=-h;return this.legendItems.forEach(((t,f)=>{const g=i+e/2+n.measureText(t.text).width;(0===f||l[l.length-1]+g+2*a>o)&&(c+=h,l[l.length-(f>0?0:1)]=0,u+=h,d++),r[f]={left:0,top:u,row:d,width:g,height:s},l[l.length-1]+=g+a})),c}_fitCols(t,e,i,s){const{ctx:n,maxHeight:o,options:{labels:{padding:a}}}=this,r=this.legendHitBoxes=[],l=this.columnSizes=[],h=o-t;let c=a,d=0,u=0,f=0,g=0;return this.legendItems.forEach(((t,o)=>{const{itemWidth:p,itemHeight:m}=function(t,e,i,s,n){const o=function(t,e,i,s){let n=t.text;n&&"string"!=typeof n&&(n=n.reduce(((t,e)=>t.length>e.length?t:e)));return e+i.size/2+s.measureText(n).width}(s,t,e,i),a=function(t,e,i){let s=t;"string"!=typeof e.text&&(s=va(e,i));return s}(n,s,e.lineHeight);return{itemWidth:o,itemHeight:a}}(i,e,n,t,s);o>0&&u+m+2*a>h&&(c+=d+a,l.push({width:d,height:u}),f+=d+a,g++,d=u=0),r[o]={left:f,top:u,col:g,width:p,height:m},d=Math.max(d,p),u+=m+a})),c+=d,l.push({width:d,height:u}),c}adjustHitBoxes(){if(!this.options.display)return;const t=this._computeTitleHeight(),{legendHitBoxes:e,options:{align:i,labels:{padding:s},rtl:n}}=this,o=Oi(n,this.left,this.width);if(this.isHorizontal()){let n=0,a=ft(i,this.left+s,this.right-this.lineWidths[n]);for(const r of e)n!==r.row&&(n=r.row,a=ft(i,this.left+s,this.right-this.lineWidths[n])),r.top+=this.top+t+s,r.left=o.leftForLtr(o.x(a),r.width),a+=r.width+s}else{let n=0,a=ft(i,this.top+t+s,this.bottom-this.columnSizes[n].height);for(const r of e)r.col!==n&&(n=r.col,a=ft(i,this.top+t+s,this.bottom-this.columnSizes[n].height)),r.top=a,r.left+=this.left+s,r.left=o.leftForLtr(o.x(r.left),r.width),a+=r.height+s}}isHorizontal(){return"top"===this.options.position||"bottom"===this.options.position}draw(){if(this.options.display){const t=this.ctx;Ie(t,this),this._draw(),ze(t)}}_draw(){const{options:t,columnSizes:e,lineWidths:i,ctx:s}=this,{align:n,labels:o}=t,a=ue.color,r=Oi(t.rtl,this.left,this.width),h=Si(o.font),{padding:c}=o,d=h.size,u=d/2;let f;this.drawTitle(),s.textAlign=r.textAlign("left"),s.textBaseline="middle",s.lineWidth=.5,s.font=h.string;const{boxWidth:g,boxHeight:p,itemHeight:m}=_a(o,d),x=this.isHorizontal(),b=this._computeTitleHeight();f=x?{x:ft(n,this.left+c,this.right-i[0]),y:this.top+c+b,line:0}:{x:this.left+c,y:ft(n,this.top+b+c,this.bottom-e[0].height),line:0},Ai(this.ctx,t.textDirection);const _=m+c;this.legendItems.forEach(((y,v)=>{s.strokeStyle=y.fontColor,s.fillStyle=y.fontColor;const M=s.measureText(y.text).width,w=r.textAlign(y.textAlign||(y.textAlign=o.textAlign)),k=g+u+M;let S=f.x,P=f.y;r.setWidth(this.width),x?v>0&&S+k+c>this.right&&(P=f.y+=_,f.line++,S=f.x=ft(n,this.left+c,this.right-i[f.line])):v>0&&P+_>this.bottom&&(S=f.x=S+e[f.line].width+c,f.line++,P=f.y=ft(n,this.top+b+c,this.bottom-e[f.line].height));if(function(t,e,i){if(isNaN(g)||g<=0||isNaN(p)||p<0)return;s.save();const n=l(i.lineWidth,1);if(s.fillStyle=l(i.fillStyle,a),s.lineCap=l(i.lineCap,"butt"),s.lineDashOffset=l(i.lineDashOffset,0),s.lineJoin=l(i.lineJoin,"miter"),s.lineWidth=n,s.strokeStyle=l(i.strokeStyle,a),s.setLineDash(l(i.lineDash,[])),o.usePointStyle){const a={radius:p*Math.SQRT2/2,pointStyle:i.pointStyle,rotation:i.rotation,borderWidth:n},l=r.xPlus(t,g/2);Ee(s,a,l,e+u,o.pointStyleWidth&&g)}else{const o=e+Math.max((d-p)/2,0),a=r.leftForLtr(t,g),l=wi(i.borderRadius);s.beginPath(),Object.values(l).some((t=>0!==t))?He(s,{x:a,y:o,w:g,h:p,radius:l}):s.rect(a,o,g,p),s.fill(),0!==n&&s.stroke()}s.restore()}(r.x(S),P,y),S=gt(w,S+g+u,x?S+k:this.right,t.rtl),function(t,e,i){Ne(s,i.text,t,e+m/2,h,{strikethrough:i.hidden,textAlign:r.textAlign(i.textAlign)})}(r.x(S),P,y),x)f.x+=k+c;else if("string"!=typeof y.text){const t=h.lineHeight;f.y+=va(y,t)+c}else f.y+=_})),Ti(this.ctx,t.textDirection)}drawTitle(){const t=this.options,e=t.title,i=Si(e.font),s=ki(e.padding);if(!e.display)return;const n=Oi(t.rtl,this.left,this.width),o=this.ctx,a=e.position,r=i.size/2,l=s.top+r;let h,c=this.left,d=this.width;if(this.isHorizontal())d=Math.max(...this.lineWidths),h=this.top+l,c=ft(t.align,c,this.right-d);else{const e=this.columnSizes.reduce(((t,e)=>Math.max(t,e.height)),0);h=l+ft(t.align,this.top,this.bottom-e-t.labels.padding-this._computeTitleHeight())}const u=ft(a,c,c+d);o.textAlign=n.textAlign(ut(a)),o.textBaseline="middle",o.strokeStyle=e.color,o.fillStyle=e.color,o.font=i.string,Ne(o,e.text,u,h,i)}_computeTitleHeight(){const t=this.options.title,e=Si(t.font),i=ki(t.padding);return t.display?e.lineHeight+i.height:0}_getLegendItemAt(t,e){let i,s,n;if(tt(t,this.left,this.right)&&tt(e,this.top,this.bottom))for(n=this.legendHitBoxes,i=0;i<n.length;++i)if(s=n[i],tt(t,s.left,s.left+s.width)&&tt(e,s.top,s.top+s.height))return this.legendItems[i];return null}handleEvent(t){const e=this.options;if(!function(t,e){if(("mousemove"===t||"mouseout"===t)&&(e.onHover||e.onLeave))return!0;if(e.onClick&&("click"===t||"mouseup"===t))return!0;return!1}(t.type,e))return;const i=this._getLegendItemAt(t.x,t.y);if("mousemove"===t.type||"mouseout"===t.type){const o=this._hoveredItem,a=(n=i,null!==(s=o)&&null!==n&&s.datasetIndex===n.datasetIndex&&s.index===n.index);o&&!a&&d(e.onLeave,[t,o,this],this),this._hoveredItem=i,i&&!a&&d(e.onHover,[t,i,this],this)}else i&&d(e.onClick,[t,i,this],this);var s,n}}function va(t,e){return e*(t.text?t.text.length:0)}var Ma={id:"legend",_element:ya,start(t,e,i){const s=t.legend=new ya({ctx:t.ctx,options:i,chart:t});ls.configure(t,s,i),ls.addBox(t,s)},stop(t){ls.removeBox(t,t.legend),delete t.legend},beforeUpdate(t,e,i){const s=t.legend;ls.configure(t,s,i),s.options=i},afterUpdate(t){const e=t.legend;e.buildLabels(),e.adjustHitBoxes()},afterEvent(t,e){e.replay||t.legend.handleEvent(e.event)},defaults:{display:!0,position:"top",align:"center",fullSize:!0,reverse:!1,weight:1e3,onClick(t,e,i){const s=e.datasetIndex,n=i.chart;n.isDatasetVisible(s)?(n.hide(s),e.hidden=!0):(n.show(s),e.hidden=!1)},onHover:null,onLeave:null,labels:{color:t=>t.chart.options.color,boxWidth:40,padding:10,generateLabels(t){const e=t.data.datasets,{labels:{usePointStyle:i,pointStyle:s,textAlign:n,color:o,useBorderRadius:a,borderRadius:r}}=t.legend.options;return t._getSortedDatasetMetas().map((t=>{const l=t.controller.getStyle(i?0:void 0),h=ki(l.borderWidth);return{text:e[t.index].label,fillStyle:l.backgroundColor,fontColor:o,hidden:!t.visible,lineCap:l.borderCapStyle,lineDash:l.borderDash,lineDashOffset:l.borderDashOffset,lineJoin:l.borderJoinStyle,lineWidth:(h.width+h.height)/4,strokeStyle:l.borderColor,pointStyle:s||l.pointStyle,rotation:l.rotation,textAlign:n||l.textAlign,borderRadius:a&&(r||l.borderRadius),datasetIndex:t.index}}),this)}},title:{color:t=>t.chart.options.color,display:!1,position:"center",text:""}},descriptors:{_scriptable:t=>!t.startsWith("on"),labels:{_scriptable:t=>!["generateLabels","filter","sort"].includes(t)}}};class wa extends $s{constructor(t){super(),this.chart=t.chart,this.options=t.options,this.ctx=t.ctx,this._padding=void 0,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.width=void 0,this.height=void 0,this.position=void 0,this.weight=void 0,this.fullSize=void 0}update(t,e){const i=this.options;if(this.left=0,this.top=0,!i.display)return void(this.width=this.height=this.right=this.bottom=0);this.width=this.right=t,this.height=this.bottom=e;const s=n(i.text)?i.text.length:1;this._padding=ki(i.padding);const o=s*Si(i.font).lineHeight+this._padding.height;this.isHorizontal()?this.height=o:this.width=o}isHorizontal(){const t=this.options.position;return"top"===t||"bottom"===t}_drawArgs(t){const{top:e,left:i,bottom:s,right:n,options:o}=this,a=o.align;let r,l,h,c=0;return this.isHorizontal()?(l=ft(a,i,n),h=e+t,r=n-i):("left"===o.position?(l=i+t,h=ft(a,s,e),c=-.5*C):(l=n-t,h=ft(a,e,s),c=.5*C),r=s-e),{titleX:l,titleY:h,maxWidth:r,rotation:c}}draw(){const t=this.ctx,e=this.options;if(!e.display)return;const i=Si(e.font),s=i.lineHeight/2+this._padding.top,{titleX:n,titleY:o,maxWidth:a,rotation:r}=this._drawArgs(s);Ne(t,e.text,0,0,i,{color:e.color,maxWidth:a,rotation:r,textAlign:ut(e.align),textBaseline:"middle",translation:[n,o]})}}var ka={id:"title",_element:wa,start(t,e,i){!function(t,e){const i=new wa({ctx:t.ctx,options:e,chart:t});ls.configure(t,i,e),ls.addBox(t,i),t.titleBlock=i}(t,i)},stop(t){const e=t.titleBlock;ls.removeBox(t,e),delete t.titleBlock},beforeUpdate(t,e,i){const s=t.titleBlock;ls.configure(t,s,i),s.options=i},defaults:{align:"center",display:!1,font:{weight:"bold"},fullSize:!0,padding:10,position:"top",text:"",weight:2e3},defaultRoutes:{color:"color"},descriptors:{_scriptable:!0,_indexable:!1}};const Sa=new WeakMap;var Pa={id:"subtitle",start(t,e,i){const s=new wa({ctx:t.ctx,options:i,chart:t});ls.configure(t,s,i),ls.addBox(t,s),Sa.set(t,s)},stop(t){ls.removeBox(t,Sa.get(t)),Sa.delete(t)},beforeUpdate(t,e,i){const s=Sa.get(t);ls.configure(t,s,i),s.options=i},defaults:{align:"center",display:!1,font:{weight:"normal"},fullSize:!0,padding:0,position:"top",text:"",weight:1500},defaultRoutes:{color:"color"},descriptors:{_scriptable:!0,_indexable:!1}};const Da={average(t){if(!t.length)return!1;let e,i,s=new Set,n=0,o=0;for(e=0,i=t.length;e<i;++e){const i=t[e].element;if(i&&i.hasValue()){const t=i.tooltipPosition();s.add(t.x),n+=t.y,++o}}if(0===o||0===s.size)return!1;return{x:[...s].reduce(((t,e)=>t+e))/s.size,y:n/o}},nearest(t,e){if(!t.length)return!1;let i,s,n,o=e.x,a=e.y,r=Number.POSITIVE_INFINITY;for(i=0,s=t.length;i<s;++i){const s=t[i].element;if(s&&s.hasValue()){const t=q(e,s.getCenterPoint());t<r&&(r=t,n=s)}}if(n){const t=n.tooltipPosition();o=t.x,a=t.y}return{x:o,y:a}}};function Ca(t,e){return e&&(n(e)?Array.prototype.push.apply(t,e):t.push(e)),t}function Oa(t){return("string"==typeof t||t instanceof String)&&t.indexOf("\n")>-1?t.split("\n"):t}function Aa(t,e){const{element:i,datasetIndex:s,index:n}=e,o=t.getDatasetMeta(s).controller,{label:a,value:r}=o.getLabelAndValue(n);return{chart:t,label:a,parsed:o.getParsed(n),raw:t.data.datasets[s].data[n],formattedValue:r,dataset:o.getDataset(),dataIndex:n,datasetIndex:s,element:i}}function Ta(t,e){const i=t.chart.ctx,{body:s,footer:n,title:o}=t,{boxWidth:a,boxHeight:r}=e,l=Si(e.bodyFont),h=Si(e.titleFont),c=Si(e.footerFont),d=o.length,f=n.length,g=s.length,p=ki(e.padding);let m=p.height,x=0,b=s.reduce(((t,e)=>t+e.before.length+e.lines.length+e.after.length),0);if(b+=t.beforeBody.length+t.afterBody.length,d&&(m+=d*h.lineHeight+(d-1)*e.titleSpacing+e.titleMarginBottom),b){m+=g*(e.displayColors?Math.max(r,l.lineHeight):l.lineHeight)+(b-g)*l.lineHeight+(b-1)*e.bodySpacing}f&&(m+=e.footerMarginTop+f*c.lineHeight+(f-1)*e.footerSpacing);let _=0;const y=function(t){x=Math.max(x,i.measureText(t).width+_)};return i.save(),i.font=h.string,u(t.title,y),i.font=l.string,u(t.beforeBody.concat(t.afterBody),y),_=e.displayColors?a+2+e.boxPadding:0,u(s,(t=>{u(t.before,y),u(t.lines,y),u(t.after,y)})),_=0,i.font=c.string,u(t.footer,y),i.restore(),x+=p.width,{width:x,height:m}}function La(t,e,i,s){const{x:n,width:o}=i,{width:a,chartArea:{left:r,right:l}}=t;let h="center";return"center"===s?h=n<=(r+l)/2?"left":"right":n<=o/2?h="left":n>=a-o/2&&(h="right"),function(t,e,i,s){const{x:n,width:o}=s,a=i.caretSize+i.caretPadding;return"left"===t&&n+o+a>e.width||"right"===t&&n-o-a<0||void 0}(h,t,e,i)&&(h="center"),h}function Ea(t,e,i){const s=i.yAlign||e.yAlign||function(t,e){const{y:i,height:s}=e;return i<s/2?"top":i>t.height-s/2?"bottom":"center"}(t,i);return{xAlign:i.xAlign||e.xAlign||La(t,e,i,s),yAlign:s}}function Ra(t,e,i,s){const{caretSize:n,caretPadding:o,cornerRadius:a}=t,{xAlign:r,yAlign:l}=i,h=n+o,{topLeft:c,topRight:d,bottomLeft:u,bottomRight:f}=wi(a);let g=function(t,e){let{x:i,width:s}=t;return"right"===e?i-=s:"center"===e&&(i-=s/2),i}(e,r);const p=function(t,e,i){let{y:s,height:n}=t;return"top"===e?s+=i:s-="bottom"===e?n+i:n/2,s}(e,l,h);return"center"===l?"left"===r?g+=h:"right"===r&&(g-=h):"left"===r?g-=Math.max(c,u)+n:"right"===r&&(g+=Math.max(d,f)+n),{x:Z(g,0,s.width-e.width),y:Z(p,0,s.height-e.height)}}function Ia(t,e,i){const s=ki(i.padding);return"center"===e?t.x+t.width/2:"right"===e?t.x+t.width-s.right:t.x+s.left}function za(t){return Ca([],Oa(t))}function Fa(t,e){const i=e&&e.dataset&&e.dataset.tooltip&&e.dataset.tooltip.callbacks;return i?t.override(i):t}const Va={beforeTitle:e,title(t){if(t.length>0){const e=t[0],i=e.chart.data.labels,s=i?i.length:0;if(this&&this.options&&"dataset"===this.options.mode)return e.dataset.label||"";if(e.label)return e.label;if(s>0&&e.dataIndex<s)return i[e.dataIndex]}return""},afterTitle:e,beforeBody:e,beforeLabel:e,label(t){if(this&&this.options&&"dataset"===this.options.mode)return t.label+": "+t.formattedValue||t.formattedValue;let e=t.dataset.label||"";e&&(e+=": ");const i=t.formattedValue;return s(i)||(e+=i),e},labelColor(t){const e=t.chart.getDatasetMeta(t.datasetIndex).controller.getStyle(t.dataIndex);return{borderColor:e.borderColor,backgroundColor:e.backgroundColor,borderWidth:e.borderWidth,borderDash:e.borderDash,borderDashOffset:e.borderDashOffset,borderRadius:0}},labelTextColor(){return this.options.bodyColor},labelPointStyle(t){const e=t.chart.getDatasetMeta(t.datasetIndex).controller.getStyle(t.dataIndex);return{pointStyle:e.pointStyle,rotation:e.rotation}},afterLabel:e,afterBody:e,beforeFooter:e,footer:e,afterFooter:e};function Ba(t,e,i,s){const n=t[e].call(i,s);return void 0===n?Va[e].call(i,s):n}class Wa extends $s{static positioners=Da;constructor(t){super(),this.opacity=0,this._active=[],this._eventPosition=void 0,this._size=void 0,this._cachedAnimations=void 0,this._tooltipItems=[],this.$animations=void 0,this.$context=void 0,this.chart=t.chart,this.options=t.options,this.dataPoints=void 0,this.title=void 0,this.beforeBody=void 0,this.body=void 0,this.afterBody=void 0,this.footer=void 0,this.xAlign=void 0,this.yAlign=void 0,this.x=void 0,this.y=void 0,this.height=void 0,this.width=void 0,this.caretX=void 0,this.caretY=void 0,this.labelColors=void 0,this.labelPointStyles=void 0,this.labelTextColors=void 0}initialize(t){this.options=t,this._cachedAnimations=void 0,this.$context=void 0}_resolveAnimations(){const t=this._cachedAnimations;if(t)return t;const e=this.chart,i=this.options.setContext(this.getContext()),s=i.enabled&&e.options.animation&&i.animations,n=new Ts(this.chart,s);return s._cacheable&&(this._cachedAnimations=Object.freeze(n)),n}getContext(){return this.$context||(this.$context=(t=this.chart.getContext(),e=this,i=this._tooltipItems,Ci(t,{tooltip:e,tooltipItems:i,type:"tooltip"})));var t,e,i}getTitle(t,e){const{callbacks:i}=e,s=Ba(i,"beforeTitle",this,t),n=Ba(i,"title",this,t),o=Ba(i,"afterTitle",this,t);let a=[];return a=Ca(a,Oa(s)),a=Ca(a,Oa(n)),a=Ca(a,Oa(o)),a}getBeforeBody(t,e){return za(Ba(e.callbacks,"beforeBody",this,t))}getBody(t,e){const{callbacks:i}=e,s=[];return u(t,(t=>{const e={before:[],lines:[],after:[]},n=Fa(i,t);Ca(e.before,Oa(Ba(n,"beforeLabel",this,t))),Ca(e.lines,Ba(n,"label",this,t)),Ca(e.after,Oa(Ba(n,"afterLabel",this,t))),s.push(e)})),s}getAfterBody(t,e){return za(Ba(e.callbacks,"afterBody",this,t))}getFooter(t,e){const{callbacks:i}=e,s=Ba(i,"beforeFooter",this,t),n=Ba(i,"footer",this,t),o=Ba(i,"afterFooter",this,t);let a=[];return a=Ca(a,Oa(s)),a=Ca(a,Oa(n)),a=Ca(a,Oa(o)),a}_createItems(t){const e=this._active,i=this.chart.data,s=[],n=[],o=[];let a,r,l=[];for(a=0,r=e.length;a<r;++a)l.push(Aa(this.chart,e[a]));return t.filter&&(l=l.filter(((e,s,n)=>t.filter(e,s,n,i)))),t.itemSort&&(l=l.sort(((e,s)=>t.itemSort(e,s,i)))),u(l,(e=>{const i=Fa(t.callbacks,e);s.push(Ba(i,"labelColor",this,e)),n.push(Ba(i,"labelPointStyle",this,e)),o.push(Ba(i,"labelTextColor",this,e))})),this.labelColors=s,this.labelPointStyles=n,this.labelTextColors=o,this.dataPoints=l,l}update(t,e){const i=this.options.setContext(this.getContext()),s=this._active;let n,o=[];if(s.length){const t=Da[i.position].call(this,s,this._eventPosition);o=this._createItems(i),this.title=this.getTitle(o,i),this.beforeBody=this.getBeforeBody(o,i),this.body=this.getBody(o,i),this.afterBody=this.getAfterBody(o,i),this.footer=this.getFooter(o,i);const e=this._size=Ta(this,i),a=Object.assign({},t,e),r=Ea(this.chart,i,a),l=Ra(i,a,r,this.chart);this.xAlign=r.xAlign,this.yAlign=r.yAlign,n={opacity:1,x:l.x,y:l.y,width:e.width,height:e.height,caretX:t.x,caretY:t.y}}else 0!==this.opacity&&(n={opacity:0});this._tooltipItems=o,this.$context=void 0,n&&this._resolveAnimations().update(this,n),t&&i.external&&i.external.call(this,{chart:this.chart,tooltip:this,replay:e})}drawCaret(t,e,i,s){const n=this.getCaretPosition(t,i,s);e.lineTo(n.x1,n.y1),e.lineTo(n.x2,n.y2),e.lineTo(n.x3,n.y3)}getCaretPosition(t,e,i){const{xAlign:s,yAlign:n}=this,{caretSize:o,cornerRadius:a}=i,{topLeft:r,topRight:l,bottomLeft:h,bottomRight:c}=wi(a),{x:d,y:u}=t,{width:f,height:g}=e;let p,m,x,b,_,y;return"center"===n?(_=u+g/2,"left"===s?(p=d,m=p-o,b=_+o,y=_-o):(p=d+f,m=p+o,b=_-o,y=_+o),x=p):(m="left"===s?d+Math.max(r,h)+o:"right"===s?d+f-Math.max(l,c)-o:this.caretX,"top"===n?(b=u,_=b-o,p=m-o,x=m+o):(b=u+g,_=b+o,p=m+o,x=m-o),y=b),{x1:p,x2:m,x3:x,y1:b,y2:_,y3:y}}drawTitle(t,e,i){const s=this.title,n=s.length;let o,a,r;if(n){const l=Oi(i.rtl,this.x,this.width);for(t.x=Ia(this,i.titleAlign,i),e.textAlign=l.textAlign(i.titleAlign),e.textBaseline="middle",o=Si(i.titleFont),a=i.titleSpacing,e.fillStyle=i.titleColor,e.font=o.string,r=0;r<n;++r)e.fillText(s[r],l.x(t.x),t.y+o.lineHeight/2),t.y+=o.lineHeight+a,r+1===n&&(t.y+=i.titleMarginBottom-a)}}_drawColorBox(t,e,i,s,n){const a=this.labelColors[i],r=this.labelPointStyles[i],{boxHeight:l,boxWidth:h}=n,c=Si(n.bodyFont),d=Ia(this,"left",n),u=s.x(d),f=l<c.lineHeight?(c.lineHeight-l)/2:0,g=e.y+f;if(n.usePointStyle){const e={radius:Math.min(h,l)/2,pointStyle:r.pointStyle,rotation:r.rotation,borderWidth:1},i=s.leftForLtr(u,h)+h/2,o=g+l/2;t.strokeStyle=n.multiKeyBackground,t.fillStyle=n.multiKeyBackground,Le(t,e,i,o),t.strokeStyle=a.borderColor,t.fillStyle=a.backgroundColor,Le(t,e,i,o)}else{t.lineWidth=o(a.borderWidth)?Math.max(...Object.values(a.borderWidth)):a.borderWidth||1,t.strokeStyle=a.borderColor,t.setLineDash(a.borderDash||[]),t.lineDashOffset=a.borderDashOffset||0;const e=s.leftForLtr(u,h),i=s.leftForLtr(s.xPlus(u,1),h-2),r=wi(a.borderRadius);Object.values(r).some((t=>0!==t))?(t.beginPath(),t.fillStyle=n.multiKeyBackground,He(t,{x:e,y:g,w:h,h:l,radius:r}),t.fill(),t.stroke(),t.fillStyle=a.backgroundColor,t.beginPath(),He(t,{x:i,y:g+1,w:h-2,h:l-2,radius:r}),t.fill()):(t.fillStyle=n.multiKeyBackground,t.fillRect(e,g,h,l),t.strokeRect(e,g,h,l),t.fillStyle=a.backgroundColor,t.fillRect(i,g+1,h-2,l-2))}t.fillStyle=this.labelTextColors[i]}drawBody(t,e,i){const{body:s}=this,{bodySpacing:n,bodyAlign:o,displayColors:a,boxHeight:r,boxWidth:l,boxPadding:h}=i,c=Si(i.bodyFont);let d=c.lineHeight,f=0;const g=Oi(i.rtl,this.x,this.width),p=function(i){e.fillText(i,g.x(t.x+f),t.y+d/2),t.y+=d+n},m=g.textAlign(o);let x,b,_,y,v,M,w;for(e.textAlign=o,e.textBaseline="middle",e.font=c.string,t.x=Ia(this,m,i),e.fillStyle=i.bodyColor,u(this.beforeBody,p),f=a&&"right"!==m?"center"===o?l/2+h:l+2+h:0,y=0,M=s.length;y<M;++y){for(x=s[y],b=this.labelTextColors[y],e.fillStyle=b,u(x.before,p),_=x.lines,a&&_.length&&(this._drawColorBox(e,t,y,g,i),d=Math.max(c.lineHeight,r)),v=0,w=_.length;v<w;++v)p(_[v]),d=c.lineHeight;u(x.after,p)}f=0,d=c.lineHeight,u(this.afterBody,p),t.y-=n}drawFooter(t,e,i){const s=this.footer,n=s.length;let o,a;if(n){const r=Oi(i.rtl,this.x,this.width);for(t.x=Ia(this,i.footerAlign,i),t.y+=i.footerMarginTop,e.textAlign=r.textAlign(i.footerAlign),e.textBaseline="middle",o=Si(i.footerFont),e.fillStyle=i.footerColor,e.font=o.string,a=0;a<n;++a)e.fillText(s[a],r.x(t.x),t.y+o.lineHeight/2),t.y+=o.lineHeight+i.footerSpacing}}drawBackground(t,e,i,s){const{xAlign:n,yAlign:o}=this,{x:a,y:r}=t,{width:l,height:h}=i,{topLeft:c,topRight:d,bottomLeft:u,bottomRight:f}=wi(s.cornerRadius);e.fillStyle=s.backgroundColor,e.strokeStyle=s.borderColor,e.lineWidth=s.borderWidth,e.beginPath(),e.moveTo(a+c,r),"top"===o&&this.drawCaret(t,e,i,s),e.lineTo(a+l-d,r),e.quadraticCurveTo(a+l,r,a+l,r+d),"center"===o&&"right"===n&&this.drawCaret(t,e,i,s),e.lineTo(a+l,r+h-f),e.quadraticCurveTo(a+l,r+h,a+l-f,r+h),"bottom"===o&&this.drawCaret(t,e,i,s),e.lineTo(a+u,r+h),e.quadraticCurveTo(a,r+h,a,r+h-u),"center"===o&&"left"===n&&this.drawCaret(t,e,i,s),e.lineTo(a,r+c),e.quadraticCurveTo(a,r,a+c,r),e.closePath(),e.fill(),s.borderWidth>0&&e.stroke()}_updateAnimationTarget(t){const e=this.chart,i=this.$animations,s=i&&i.x,n=i&&i.y;if(s||n){const i=Da[t.position].call(this,this._active,this._eventPosition);if(!i)return;const o=this._size=Ta(this,t),a=Object.assign({},i,this._size),r=Ea(e,t,a),l=Ra(t,a,r,e);s._to===l.x&&n._to===l.y||(this.xAlign=r.xAlign,this.yAlign=r.yAlign,this.width=o.width,this.height=o.height,this.caretX=i.x,this.caretY=i.y,this._resolveAnimations().update(this,l))}}_willRender(){return!!this.opacity}draw(t){const e=this.options.setContext(this.getContext());let i=this.opacity;if(!i)return;this._updateAnimationTarget(e);const s={width:this.width,height:this.height},n={x:this.x,y:this.y};i=Math.abs(i)<.001?0:i;const o=ki(e.padding),a=this.title.length||this.beforeBody.length||this.body.length||this.afterBody.length||this.footer.length;e.enabled&&a&&(t.save(),t.globalAlpha=i,this.drawBackground(n,t,s,e),Ai(t,e.textDirection),n.y+=o.top,this.drawTitle(n,t,e),this.drawBody(n,t,e),this.drawFooter(n,t,e),Ti(t,e.textDirection),t.restore())}getActiveElements(){return this._active||[]}setActiveElements(t,e){const i=this._active,s=t.map((({datasetIndex:t,index:e})=>{const i=this.chart.getDatasetMeta(t);if(!i)throw new Error("Cannot find a dataset at index "+t);return{datasetIndex:t,element:i.data[e],index:e}})),n=!f(i,s),o=this._positionChanged(s,e);(n||o)&&(this._active=s,this._eventPosition=e,this._ignoreReplayEvents=!0,this.update(!0))}handleEvent(t,e,i=!0){if(e&&this._ignoreReplayEvents)return!1;this._ignoreReplayEvents=!1;const s=this.options,n=this._active||[],o=this._getActiveElements(t,n,e,i),a=this._positionChanged(o,t),r=e||!f(o,n)||a;return r&&(this._active=o,(s.enabled||s.external)&&(this._eventPosition={x:t.x,y:t.y},this.update(!0,e))),r}_getActiveElements(t,e,i,s){const n=this.options;if("mouseout"===t.type)return[];if(!s)return e.filter((t=>this.chart.data.datasets[t.datasetIndex]&&void 0!==this.chart.getDatasetMeta(t.datasetIndex).controller.getParsed(t.index)));const o=this.chart.getElementsAtEventForMode(t,n.mode,n,i);return n.reverse&&o.reverse(),o}_positionChanged(t,e){const{caretX:i,caretY:s,options:n}=this,o=Da[n.position].call(this,t,e);return!1!==o&&(i!==o.x||s!==o.y)}}var Na={id:"tooltip",_element:Wa,positioners:Da,afterInit(t,e,i){i&&(t.tooltip=new Wa({chart:t,options:i}))},beforeUpdate(t,e,i){t.tooltip&&t.tooltip.initialize(i)},reset(t,e,i){t.tooltip&&t.tooltip.initialize(i)},afterDraw(t){const e=t.tooltip;if(e&&e._willRender()){const i={tooltip:e};if(!1===t.notifyPlugins("beforeTooltipDraw",{...i,cancelable:!0}))return;e.draw(t.ctx),t.notifyPlugins("afterTooltipDraw",i)}},afterEvent(t,e){if(t.tooltip){const i=e.replay;t.tooltip.handleEvent(e.event,i,e.inChartArea)&&(e.changed=!0)}},defaults:{enabled:!0,external:null,position:"average",backgroundColor:"rgba(0,0,0,0.8)",titleColor:"#fff",titleFont:{weight:"bold"},titleSpacing:2,titleMarginBottom:6,titleAlign:"left",bodyColor:"#fff",bodySpacing:2,bodyFont:{},bodyAlign:"left",footerColor:"#fff",footerSpacing:2,footerMarginTop:6,footerFont:{weight:"bold"},footerAlign:"left",padding:6,caretPadding:2,caretSize:5,cornerRadius:6,boxHeight:(t,e)=>e.bodyFont.size,boxWidth:(t,e)=>e.bodyFont.size,multiKeyBackground:"#fff",displayColors:!0,boxPadding:0,borderColor:"rgba(0,0,0,0)",borderWidth:0,animation:{duration:400,easing:"easeOutQuart"},animations:{numbers:{type:"number",properties:["x","y","width","height","caretX","caretY"]},opacity:{easing:"linear",duration:200}},callbacks:Va},defaultRoutes:{bodyFont:"font",footerFont:"font",titleFont:"font"},descriptors:{_scriptable:t=>"filter"!==t&&"itemSort"!==t&&"external"!==t,_indexable:!1,callbacks:{_scriptable:!1,_indexable:!1},animation:{_fallback:!1},animations:{_fallback:"animation"}},additionalOptionScopes:["interaction"]};return Tn.register(Un,$o,go,t),Tn.helpers={...Hi},Tn._adapters=In,Tn.Animation=As,Tn.Animations=Ts,Tn.animator=bt,Tn.controllers=nn.controllers.items,Tn.DatasetController=js,Tn.Element=$s,Tn.elements=go,Tn.Interaction=Ki,Tn.layouts=ls,Tn.platforms=Ds,Tn.Scale=tn,Tn.Ticks=ae,Object.assign(Tn,Un,$o,go,t,Ds),Tn.Chart=Tn,"undefined"!=typeof window&&(window.Chart=Tn),Tn}));
37115//# sourceMappingURL=chart.umd.
37115min.js.map
37116// file: /var/www/vhosts/codethislab.com/httpdocs/wp-content/plugins/ctl-wp-studio/classes/extensions/ctl-chart-js/php/../js/front.js
37117var g_oCacheTrendCharts   = {};
37118var g_oContext2DTrendCharts = {};
37119
37120jQuery(document).ready(function(){ 
37121
37122
37123    jQuery(window).on('resize orientationchange', function() {
37124        jQuery.each(Chart.instances, function(index, chartInstance) {
37125            chartInstance.resize();
37126        });
37127
37128        setTimeout(function() {
37129            jQuery.each(Chart.instances, function(index, chartInstance) {
37130                chartInstance.resize();
37131            });
37132        }, 200);        
37133    });
37134
37135
37136    jQuery(document).on("click", ".ctl-chart-js-action-reload-graph", function(){
37137        var url = g_oCTLWPStudio.addParameterToUrl(window.location.href, "chart-no-cache", 1);
37138        g_oCTLWPStudio.showLoading(""); 
37139        window.location.href = url;
37140    });
37141
37142    jQuery(document).on("click", ".ctl-charts-action-reset-zoom",function(){
37143        var oNodeChartWrapper = jQuery(this).closest(".ctl-chart-container");
37144
37145        if ( oNodeChartWrapper.length == 0 ){
37146            oNodeChartWrapper = jQuery(this).closest(".ctl-trend-chart-wrapper");
37147        }
37148        
37149        if ( oNodeChartWrapper.length == 0 ){
37150            return;
37151        }
37152
37153        let oChart = Chart.getChart(oNodeChartWrapper.find("canvas")[0]);
37154
37155        if ( oChart ){
37156            oChart.resetZoom();
37157        }
37158    });
37159
37160    jQuery(document).on("click", ".ctl-chart-js-action-export-image", function(){
37161
37162        var oNodeChartWrapper = jQuery(this).closest(".ctl-chart-container");
37163
37164        if ( oNodeChartWrapper.length == 0 ){
37165            oNodeChartWrapper = jQuery(this).closest(".ctl-trend-chart-wrapper");
37166        }
37167
37168        if ( oNodeChartWrapper.length == 0 ){
37169            oNodeChartWrapper = jQuery(this).closest(".ctl-data-analysis-container");
37170        }        
37171        
37172        if ( oNodeChartWrapper.length == 0 ){
37173            return;
37174        }
37175
37176        var url_base64 = oNodeChartWrapper.find("canvas")[0].toDataURL('image/png');
37177        var dataImage = url_base64.split(",")[1];
37178
37179        var szFileName = prompt(g_oCTLThemeTablesLocalizationFront["Type a filename..."]);
37180
37181        if (!szFileName){
37182            return;
37183        }
37184
37185        g_oCTLWPStudio.base64toFile(dataImage, "image/png", "png", szFileName);
37186    });
37187
37188    jQuery(document).on("change",'input[name="chart-trends-period"]', function(){
37189        var oNodeInput = jQuery(this);
37190        ctlChartChangeTrendPeriod( jQuery("#ctl-trend-charts-"+
37191                        oNodeInput.closest(".custom-control").attr("data-id")+"-wrapper"), 
37192                        oNodeInput.closest(".ctl-chart-trends-period"));
37193    });
37194
37195    wpdk_add_action("ctl-theme-bootstrap-modals-show-modal", function( oNodeModal ){        
37196        ctlTrendChartInitTrendCharts();     
37197    });
37198
37199    ctlTrendChartInitTrendCharts();    
37200});
37201
37202function ctlTrendChartInitTrendCharts(){
37203    jQuery('input[name="chart-trends-period"]:checked').each(function(){
37204        var oNodeInput = jQuery(this);
37205        ctlChartChangeTrendPeriod(jQuery("#ctl-trend-charts-"+
37206                            oNodeInput.closest(".custom-control").attr("data-id")+"-wrapper"), 
37207                            oNodeInput.closest(".ctl-chart-trends-period"));
37208    });
37209}
37210
37211function ctlTrendChartInitCache(){
37212
37213    g_oCacheTrendCharts = JSON.parse(localStorage.getItem('cache_trend_charts'));
37214    iCacheTime = Number(localStorage.getItem('cache_trend_charts_time'));
37215
37216    if ( new Date().getTime() - iCacheTime > (1000 * 60) ){
37217        g_oCacheTrendCharts = {};
37218    }
37219
37220    if ( g_oCTLWPStudio.getUrlParam("chart-no-cache")){
37221        g_oCacheTrendCharts = {};
37222        var url = window.location.href;
37223        url = g_oCTLWPStudio.removeParameterFromUrl(url, "chart-no-cache");        
37224        window.history.pushState(document.title, "", url);
37225    }
37226
37227    if (!g_oCacheTrendCharts){
37228        g_oCacheTrendCharts = {};
37229    }   
37230
37231    jQuery(".ctl-trend-charts-wrapper").each(function(){
37232        idWidget = jQuery(this).attr("data-widget-id");
37233
37234        jQuery(this).find(".ctl-trend-chart-wrapper").each(function(){
37235            if (!g_oCacheTrendCharts["widget-"+idWidget+"-"+jQuery(this).attr("data-post-id")]){
37236                g_oCacheTrendCharts["widget-"+idWidget+"-"+jQuery(this).attr("data-post-id")] = {};
37237            }
37238        });
37239    });    
37240}
37241
37242function __ctlTrendsChartExtractPeriod(idWidget, idChart, idAncestor, szDateType, aDates, cb ){
37243
37244    var aDatesToRequest = [];
37245    for( var i = 0; i < aDates.length; i++ ){
37246        var szDate = aDates[i];
37247
37248        if ( isNaN(g_oCacheTrendCharts["widget-"+idWidget+"-"+idChart][szDate]) ){
37249            g_oCacheTrendCharts["widget-"+idWidget+"-"+idChart][szDate] = 0;            
37250            aDatesToRequest.push(szDate);
37251        }        
37252    }
37253
37254    if ( aDatesToRequest.length > 0 ){
37255        __ctlTrendChartsGetDateData(idWidget, idChart, idAncestor,szDateType, aDatesToRequest, cb);
37256    }else{
37257        cb();
37258    }    
37259}
37260
37261function ctlChartChangeTrendPeriod( oNodeChartTrends, oNodeRadioFields ){
37262
37263    ctlTrendChartInitCache();
37264
37265    var idWidget = oNodeChartTrends.attr("data-widget-id");
37266    var szPeriod = oNodeRadioFields.find('input[name="chart-trends-period"]:checked').val();
37267
37268    oNodeRadioFields.addClass("ctl-chart-trends-loading");
37269
37270    var url = window.location.href;
37271    url = g_oCTLWPStudio.addParameterToUrl(url, "trends-"+idWidget, szPeriod);
37272    window.history.pushState(document.title, "", url);
37273    
37274    var iCntCharts = 0;
37275
37276	switch(szPeriod){
37277		case "today":{
37278            var aCurrentPeriodDates = [ getCurrentDay() ];
37279            var aPreviousPeriodDates = [ getPreviousDay() ];
37280
37281            oNodeChartTrends.find(".ctl-trend-chart-wrapper").each(function(){
37282                var oNodeChartWrapper = jQuery(this);
37283                var idChart = oNodeChartWrapper.attr("data-post-id");
37284                var idAncestor = oNodeChartWrapper.attr("data-ancestor-id");
37285        
37286                var aDates;
37287                if (oNodeChartWrapper.attr("data-previous-period")) {
37288                    aDates = aPreviousPeriodDates.concat(aCurrentPeriodDates);
37289                }else{
37290                    aDates = aCurrentPeriodDates;
37291                }
37292
37293                iCntCharts++;                
37294                __ctlTrendsChartExtractPeriod(idWidget, idChart, idAncestor, "day", aDates, function(){
37295                    ctlChartRenderTodayChart(idWidget, idChart, aDates);
37296                    iCntCharts--;
37297                    if (iCntCharts == 0){
37298                        jQuery(".ctl-chart-trends-period-"+idWidget).removeClass("ctl-chart-trends-loading");
37299                    }                     
37300                });
37301            });             
37302		}break;
37303		case "hourly":{
37304			
37305		}break;		
37306		case "weekly":{
37307            var aCurrentPeriodDates = getCurrentWeekDays();
37308            var aPreviousPeriodDates = getPreviousWeekDays();
37309            
37310            oNodeChartTrends.find(".ctl-trend-chart-wrapper").each(function(){
37311                var oNodeChartWrapper = jQuery(this);
37312                var idChart = oNodeChartWrapper.attr("data-post-id");
37313                var idAncestor = oNodeChartWrapper.attr("data-ancestor-id");
37314        
37315                var aDates;
37316                if (!!oNodeChartWrapper.attr("data-previous-period")) {
37317                    aDates = aCurrentPeriodDates.concat(aPreviousPeriodDates);
37318                }else{
37319                    aDates = aCurrentPeriodDates;
37320                }
37321
37322                iCntCharts++;
37323                __ctlTrendsChartExtractPeriod(idWidget, idChart, idAncestor, "day", aDates, function(){
37324                    ctlChartRenderWeeklyChart(idWidget, idChart, aDates);
37325                    iCntCharts--;
37326                    if (iCntCharts == 0){
37327                        jQuery(".ctl-chart-trends-period-"+idWidget).removeClass("ctl-chart-trends-loading");
37328                    }                    
37329                });
37330            });             
37331		}break;		
37332		case "monthly":{
37333            var aCurrentPeriodDates = getCurrentMonthDays();
37334            var aPreviousPeriodDates = getPreviousMonthDays();
37335
37336            oNodeChartTrends.find(".ctl-trend-chart-wrapper").each(function(){
37337                var oNodeChartWrapper = jQuery(this);
37338                var idChart = oNodeChartWrapper.attr("data-post-id");
37339                var idAncestor = oNodeChartWrapper.attr("data-ancestor-id");
37340
37341                var aDates;
37342                if (!!oNodeChartWrapper.attr("data-previous-period")) {
37343                    aDates = aCurrentPeriodDates.concat(aPreviousPeriodDates);
37344                }else{
37345                    aDates = aCurrentPeriodDates;
37346                }
37347
37348                iCntCharts++;
37349                __ctlTrendsChartExtractPeriod(idWidget, idChart, idAncestor, "day", aDates, function(){
37350                    ctlChartRenderMonthlyChart(idWidget, idChart, aDates);
37351                    iCntCharts--;
37352                    if (iCntCharts == 0){
37353                        jQuery(".ctl-chart-trends-period-"+idWidget).removeClass("ctl-chart-trends-loading");
37354                    }
37355                });
37356            });   
37357		}break;
37358        case "yearly":{
37359            var aCurrentPeriodDates = getCurrentYearMonths();
37360            var aPreviousPeriodDates = getPreviousYearMonths();
37361
37362            oNodeChartTrends.find(".ctl-trend-chart-wrapper").each(function(){
37363                var oNodeChartWrapper = jQuery(this);
37364                var idChart = oNodeChartWrapper.attr("data-post-id");
37365                var idAncestor = oNodeChartWrapper.attr("data-ancestor-id");
37366                
37367                var aDates;
37368                if (!!oNodeChartWrapper.attr("data-previous-period")) {
37369                    aDates = aCurrentPeriodDates.concat(aPreviousPeriodDates);
37370                }else{
37371                    aDates = aCurrentPeriodDates;
37372                }
37373
37374                iCntCharts++;
37375                __ctlTrendsChartExtractPeriod(idWidget, idChart, idAncestor, "month", aDates, function(){
37376                    ctlChartRenderYearlyChart(idWidget, idChart, aDates);
37377                    iCntCharts--;
37378                    if (iCntCharts == 0){
37379                        jQuery(".ctl-chart-trends-period-"+idWidget).removeClass("ctl-chart-trends-loading");
37380                    }
37381                });
37382            });   
37383		}break;		
37384		case "period":{
37385			
37386		}break;			
37387	}    
37388}
37389
37390function getCurrentDay(){
37391    return moment().format("YYYY-MM-DD");
37392}
37393
37394function getPreviousDay(){
37395    return moment().add(-1, 'days').format("YYYY-MM-DD");
37396}
37397
37398function getCurrentWeekDays(){
37399    var currentDate = moment();
37400    var weekStart = currentDate.clone().startOf('isoWeek');
37401    var aDates = [ ];
37402
37403    for (i = 0; i <= 6; i++) {
37404        var szDay = moment(weekStart).add(i, 'days').format("YYYY-MM-DD");
37405        aDates.push(szDay);
37406    }
37407
37408    return aDates;
37409};
37410
37411function getPreviousWeekDays(){
37412    var weekStart = moment().startOf('isoWeek');
37413    var aDates = [ ];
37414
37415    for (i = 7; i > 0; i--) {
37416        szDay = moment(weekStart).add(-i, 'days').format("YYYY-MM-DD");
37417        aDates.push(szDay);
37418    }
37419
37420    return aDates;
37421};
37422
37423function getCurrentMonthDays(){
37424    var currentDate = moment();
37425    var monthStart   = currentDate.clone().startOf('month');
37426    var monthEnd     = currentDate.clone().endOf('month');
37427
37428    var aDates      = [ ];
37429
37430    var oCurrentDay = monthStart;
37431    
37432    while(true) {
37433        var szDay = oCurrentDay.format("YYYY-MM-DD");
37434        aDates.push(szDay);                   
37435        if ( oCurrentDay.format("YYYY-MM-DD") == monthEnd.format("YYYY-MM-DD")){
37436            break;
37437        }                       
37438        oCurrentDay  = moment(oCurrentDay).add(+1, 'days');
37439    }
37440
37441    return aDates;
37442}
37443
37444function getPreviousMonthDays(){
37445    var monthStart = moment().subtract(1, 'months').startOf('month');
37446    var monthEnd   = moment().subtract(1, 'months').endOf('month');
37447
37448    var aDates = [];
37449
37450    var oCurrentDay = monthStart;
37451    
37452    while(true) {
37453        var szDay = oCurrentDay.format("YYYY-MM-DD");
37454        
37455        aDates.push(szDay);   
37456        if ( oCurrentDay.format("YYYY-MM-DD") == monthEnd.format("YYYY-MM-DD")){
37457            break;
37458        }       
37459        
37460        oCurrentDay  = moment(oCurrentDay).add(+1, 'days');
37461    }
37462    
37463    return aDates;
37464}
37465
37466function getCurrentYearMonths(){
37467    var aDates = [ ];
37468    
37469    for (let i = 0; i < 12; i++) {
37470        aDates.push(moment().month(i).format("YYYY-MM"));
37471    }
37472
37473    return aDates;
37474}
37475
37476function getPreviousYearMonths(){
37477    var aDates = [ ];
37478    
37479    for (let i = 0; i < 12; i++) {
37480        aDates.push(moment().month(i).subtract(1,"years").format("YYYY-MM"));
37481    }
37482
37483    return aDates;
37484}
37485
37486function ctlChartTrendsApplyPercentageVariation(oNodeTrendChartsWrapper, oNodeChart, iLastCounter, iCurrentCounter){
37487    var iPercentage  = 0;
37488
37489    if ( iLastCounter == 0 ){
37490        iPercentage = 100;
37491    }else{
37492        iPercentage = ( iCurrentCounter<iLastCounter ? "-" + ((iLastCounter - iCurrentCounter) * 100) / iCurrentCounter : ((iCurrentCounter - iLastCounter) * 100) / iLastCounter );
37493    }
37494
37495    var szRedColor    = oNodeTrendChartsWrapper.attr("data-negative-color");
37496    var szGreenColor  = oNodeTrendChartsWrapper.attr("data-positive-color");
37497    var szNeutralColor = oNodeTrendChartsWrapper.attr("data-neutral-color");
37498
37499    iPercentage = Number(iPercentage);
37500
37501    if ( iPercentage == 0 ){
37502        oNodeChart.find("p").html('<div class="badge chroma-apply-correction">' + iPercentage.toFixed(2) + "%" + '</div>');
37503        oNodeChart.find("p .badge").css("background-color", szNeutralColor);        
37504    }else if ( iPercentage < 100 ){
37505        oNodeChart.find("p").html('<div class="badge chroma-apply-correction">' + '<i class="ctl-wp-studio-icons-down-bold mr-2"></i>' + iPercentage.toFixed(2) + "%" + '</div>');
37506        oNodeChart.find("p .badge").css("background-color", szRedColor);
37507    }else if ( iPercentage >= 100 ){
37508        oNodeChart.find("p").html('<div class="badge chroma-apply-correction">' + '<i class="ctl-wp-studio-icons-up-1 mr-2"></i>' + iPercentage.toFixed(2) + "%" + '</div>');
37509        oNodeChart.find("p .badge").css("background-color", szGreenColor);
37510    }
37511
37512    g_oCTLWPStudio.applyChromaCorrection();
37513}
37514
37515function __getChartGroupedDataFromDates(oCachedDates,aDates){
37516    var aResultDatas = new Array();
37517
37518    aDates.forEach(szDate => {
37519        if(Array.isArray(oCachedDates[szDate])){
37520            oCachedDates[szDate].forEach(element => {
37521                if (!aResultDatas.hasOwnProperty(element.group)) {
37522                    aResultDatas[element.group] = 0;
37523                }
37524
37525                aResultDatas[element.group] += Number(element.value); 
37526            });
37527        }
37528    });
37529
37530    return aResultDatas;
37531}
37532
37533function __getGroupValuePerDays(oCachedDates,aDates,szGroup){
37534    var aResultDatas = new Array();
37535
37536    var bGroupFound;
37537
37538    for (let i = 0; i < aDates.length; i++) {
37539        if(Array.isArray(oCachedDates[aDates[i]])){
37540            bGroupFound = false;
37541            for (let j = 0; j < oCachedDates[aDates[i]].length; j++) {
37542                if (oCachedDates[aDates[i]][j].group == szGroup) {
37543                    aResultDatas[i] = Number(oCachedDates[aDates[i]][j].value);
37544                    bGroupFound = true;
37545                    break;
37546                }
37547            }
37548
37549            if (!bGroupFound) {
37550                aResultDatas[i] = 0;
37551            }
37552        }else{
37553            aResultDatas[i] = 0
37554        }
37555    }
37556    
37557    return aResultDatas;
37558}
37559
37560function getChartSettings(idChartsWrapper, idChart){
37561    var oNodeTrendChartsWrapper = jQuery("#ctl-trend-charts-" + idChartsWrapper + "-wrapper");
37562    var oNodeChartWrapper       = jQuery('#ctl-trend-chart-' + idChart + '-wrapper');
37563
37564    return {
37565        chart_type: oNodeChartWrapper.attr("data-type"),
37566        fill_color: JSON.parse(oNodeChartWrapper.attr("data-fill-color")),
37567        border_color: oNodeChartWrapper.attr("data-border-color"),
37568        border_width: oNodeChartWrapper.attr("data-border-width"),
37569        previous_fill_color: JSON.parse(oNodeChartWrapper.attr("data-previous-fill-color")),
37570        previous_border_color: oNodeChartWrapper.attr("data-previous-border-color"),
37571        view_data_labels: oNodeChartWrapper.attr("data-view-labels"),
37572        view_crosshair: oNodeChartWrapper.attr("data-view-crosshair"),
37573        zoom: oNodeChartWrapper.attr("data-zoom"),
37574        grouped_values: !!oNodeChartWrapper.attr("data-grouped-values"),
37575        show_previous_period: !!oNodeChartWrapper.attr("data-previous-period"),
37576        aspect_ratio: oNodeTrendChartsWrapper.attr("data-aspect-ratio")
37577    }
37578}
37579
37580
37581function __buildDataSetsForEachGroup(oChartSettings,aDataCurrentPeriod,oCachedDates,aCurrentPeriodDates){
37582    var aDataSets = [];
37583
37584    var iCounterColor = 0;
37585    for (var szGroup in aDataCurrentPeriod){
37586        if (aDataCurrentPeriod.hasOwnProperty(szGroup)) {
37587            let oDataSet = {
37588                label: szGroup,
37589                data: __getGroupValuePerDays(oCachedDates,aCurrentPeriodDates,szGroup),
37590                backgroundColor: oChartSettings.fill_color[iCounterColor],
37591                borderColor: oChartSettings.border_color,
37592                borderWidth: oChartSettings.border_width
37593            };
37594
37595            aDataSets.push(oDataSet);
37596
37597            iCounterColor++;
37598            if (iCounterColor == oChartSettings.fill_color.length) {
37599                iCounterColor = 0;
37600            }
37601        }
37602    }
37603
37604    return aDataSets;
37605}
37606
37607function __setDataSetsColors(oChartSettings,aDataSets){
37608
37609    if (oChartSettings.show_previous_period) {
37610
37611        let iLastPeriodIndex = 1;
37612        let iCurPeriodIndex  = 0;
37613
37614        if (oChartSettings.previous_fill_color) {
37615            aDataSets[iLastPeriodIndex].backgroundColor = oChartSettings.previous_fill_color;
37616        }
37617        if (oChartSettings.fill_color) {
37618            aDataSets[iCurPeriodIndex].backgroundColor = oChartSettings.fill_color;
37619        }
37620        if (oChartSettings.previous_border_color) {
37621            aDataSets[iLastPeriodIndex].borderColor = oChartSettings.previous_border_color;
37622        }
37623        if (oChartSettings.border_color) {
37624            aDataSets[iCurPeriodIndex].borderColor = oChartSettings.border_color;
37625        }
37626        if (oChartSettings.border_width) {
37627            aDataSets[iLastPeriodIndex].borderWidth = oChartSettings.border_width;
37628            aDataSets[iCurPeriodIndex].borderWidth = oChartSettings.border_width;
37629        }
37630
37631    }else if((oChartSettings.chart_type == "line" || oChartSettings.chart_type == "bar") && oChartSettings.grouped_values) {
37632        var iCounterColor = 0;
37633        aDataSets.forEach(oDataSet => {
37634            oDataSet.backgroundColor = oChartSettings.fill_color[iCounterColor];
37635            oDataSet.borderColor = oDataSet.backgroundColor;
37636
37637            if (oChartSettings.border_width) {
37638                oDataSet.borderWidth = oChartSettings.border_width;
37639            }
37640
37641            iCounterColor++;
37642            if (iCounterColor == oChartSettings.fill_color.length) {
37643                iCounterColor = 0;
37644            }
37645        });
37646    }else if ( oChartSettings.chart_type == "pie" || oChartSettings.chart_type == "doughtnut" ){
37647        aDataSets.forEach(oDataSet => {
37648            oDataSet.backgroundColor = oChartSettings.fill_color;
37649        });
37650    }else{
37651        aDataSets.forEach(oDataSet => {
37652            if (oChartSettings.fill_color) {
37653                oDataSet.backgroundColor = oChartSettings.fill_color;
37654            }
37655            if (oChartSettings.border_color) {
37656                oDataSet.borderColor = oChartSettings.border_color;
37657            }
37658            if (oChartSettings.border_width) {
37659                oDataSet.borderWidth = oChartSettings.border_width;
37660            }
37661        });
37662    }
37663}
37664
37665function ctlChartRenderTodayChart( idWidget, idChart, aDates ){
37666
37667    aDates.sort();
37668
37669    var oNodeTrendChartsWrapper = jQuery("#ctl-trend-charts-" + idWidget + "-wrapper");
37670    var oNodeChartWrapper       = jQuery('#ctl-trend-chart-' + idChart + '-wrapper');
37671
37672    var oNodeLoader = oNodeChartWrapper.find(".ctl-trend-chart-loader");
37673    var oNodeChart  = oNodeChartWrapper.find(".ctl-trend-chart-container");
37674    var oNodeNoDataMsg = oNodeChartWrapper.find(".ctl-trend-chart-no-data-msg-container");
37675
37676    var ctx = oNodeChart.find("canvas")[0].getContext('2d');
37677
37678    var oChartSettings = getChartSettings(idWidget,idChart);
37679    var oCachedDays = g_oCacheTrendCharts["widget-"+idWidget+"-"+idChart];
37680
37681    var bEmpty = isChartEmpty(oCachedDays,aDates);
37682
37683    if (bEmpty) {
37684        oNodeLoader.addClass("d-none");
37685        oNodeChart.addClass("d-none");
37686        oNodeNoDataMsg.removeClass("d-none");
37687
37688        g_oCTLWPStudio.onResize();
37689        ctlVulcanoResizeLayout();
37690        return;
37691    }else{
37692        oNodeNoDataMsg.addClass("d-none");
37693    }
37694    
37695    var aDataCurrentPeriod = [];
37696    var aDataSets = null;
37697
37698    if ( oChartSettings.show_previous_period){
37699
37700        aDataSets = [
37701            {
37702                label: g_oCTLThemeChartsLocalizationFront["Today"] + " " + aDates[1],
37703                data: [ oCachedDays[aDates[1]] ]
37704            },
37705            {
37706                label: g_oCTLThemeChartsLocalizationFront["Yesterday"] + " " + aDates[0],
37707                data: [ oCachedDays[aDates[0]]]
37708            },            
37709        ];
37710
37711        ctlChartTrendsApplyPercentageVariation(oNodeTrendChartsWrapper, oNodeChart, 
37712                                            oCachedDays[aDates[0]], oCachedDays[aDates[1]]);
37713    }else{
37714        if (oChartSettings.grouped_values) {
37715            aDataCurrentPeriod = __getChartGroupedDataFromDates(oCachedDays,aDates);
37716        }else{
37717            for( var i = 0; i < aDates.length; i++ ){
37718                aDataCurrentPeriod.push(oCachedDays[aDates[i]]);
37719            }
37720        }
37721
37722        if ((oChartSettings.chart_type == "line" || oChartSettings.chart_type == "bar") && oChartSettings.grouped_values) {
37723            aDataSets = __buildDataSetsForEachGroup(oChartSettings,aDataCurrentPeriod,oCachedDays,aDates);
37724        }else{
37725            aDataSets = [{
37726                label: aDates[0],
37727                data: Object.values(aDataCurrentPeriod)
37728            }]
37729        }  
37730
37731        oNodeChart.find("p").html("");
37732    }
37733
37734    var aLabels = [];
37735    if (oChartSettings.chart_type == "line" || oChartSettings.chart_type == "bar") {
37736        aLabels = [ g_oCTLThemeChartsLocalizationFront["Today"] ]
37737    }else if(oChartSettings.grouped_values){
37738        aLabels = [...Object.keys(aDataCurrentPeriod)];
37739    }
37740
37741    __setDataSetsColors(oChartSettings,aDataSets);
37742
37743    oNodeLoader.addClass("d-none");
37744    oNodeChart.removeClass("d-none");
37745
37746    if (g_oContext2DTrendCharts["widget-"+idWidget+"-"+idChart] ){
37747        g_oContext2DTrendCharts["widget-"+idWidget+"-"+idChart].destroy();
37748    }
37749
37750    var oChartConfig = {
37751        type: (oChartSettings.chart_type == "line" ? "bar" : oChartSettings.chart_type),
37752        data: {
37753            labels: aLabels,
37754            datasets: aDataSets,
37755        },
37756        plugins : [],
37757        options: {
37758            plugins : {},
37759            responsive: true, 
37760            maintainAspectRatio : true,
37761            aspectRatio : oChartSettings.aspect_ratio,
37762        }
37763    };
37764
37765    if (oChartConfig.type == "line" || oChartConfig.type == "bar") {
37766        oChartConfig["options"]["scales"] = {
37767            y: {
37768                beginAtZero: true,
37769                ticks: {
37770                    callback: function(value, index, values) {
37771                        return __ctlChartFormatValue(oNodeChartWrapper, value);
37772                    }
37773                }
37774            }
37775        }
37776    }
37777
37778    if (oChartConfig.type == "pie" || oChartConfig.type == "doughtnut") {
37779        __showValuesInPieChartLegend(oChartConfig,oNodeChartWrapper);
37780    }
37781
37782    __ctlChartApplyTooltip(oChartConfig, oNodeChartWrapper);
37783
37784    if ( oChartSettings.view_data_labels == "true" ){
37785        __ctlChartApplyDataLabels(oChartConfig, oNodeChartWrapper);     
37786    }  
37787    if ( oChartSettings.view_crosshair == "true" ){
37788        __ctlChartApplyCrosshair(oChartConfig, oNodeChartWrapper);     
37789    }        
37790    if ( oChartSettings.zoom == "true" ){
37791        __ctlChartApplyZoom(oChartConfig, oNodeChartWrapper);     
37792    }      
37793
37794    __renderChart(idWidget, idChart, ctx, oChartConfig);
37795}
37796
37797function ctlChartRenderWeeklyChart( idWidget, idChart, aDates ){
37798
37799    aDates.sort();
37800
37801    var oNodeTrendChartsWrapper = jQuery("#ctl-trend-charts-" + idWidget + "-wrapper");
37802    var oNodeChartWrapper = jQuery('#ctl-trend-chart-' + idChart + '-wrapper');
37803	
37804    var oNodeLoader = oNodeChartWrapper.find(".ctl-trend-chart-loader");
37805    var oNodeChart  = oNodeChartWrapper.find(".ctl-trend-chart-container");
37806    var oNodeNoDataMsg = oNodeChartWrapper.find(".ctl-trend-chart-no-data-msg-container");
37807
37808    var ctx = oNodeChart.find("canvas")[0].getContext('2d');
37809
37810    var oChartSettings = getChartSettings(idWidget,idChart);
37811    
37812    var oCachedDays = g_oCacheTrendCharts["widget-"+idWidget+"-"+idChart];
37813
37814    var bEmpty = isChartEmpty(oCachedDays,aDates);
37815
37816    if (bEmpty) {
37817        oNodeLoader.addClass("d-none");
37818        oNodeChart.addClass("d-none");
37819        oNodeNoDataMsg.removeClass("d-none");
37820
37821        g_oCTLWPStudio.onResize();
37822        ctlVulcanoResizeLayout();
37823        return;
37824    }else{
37825        oNodeNoDataMsg.addClass("d-none");
37826    }
37827
37828    var aDataCurrentPeriod = [];
37829    var aDataPreviousPeriod = [];
37830
37831    var aDataSets = null;
37832
37833    if ( oChartSettings.show_previous_period){
37834        var iLastCounter = 0;
37835        var iCurrentCounter = 0;
37836
37837        for( var i = 0; i < 7; i++ ){
37838            iLastCounter += parseInt(oCachedDays[aDates[i]]);
37839            aDataPreviousPeriod.push(oCachedDays[aDates[i]]);
37840        }
37841        for( var i = 7; i < 14; i++ ){
37842            iCurrentCounter += parseInt(oCachedDays[aDates[i]]);
37843            aDataCurrentPeriod.push(oCachedDays[aDates[i]]);
37844        }  
37845        aDataSets = [
37846            {
37847                label: g_oCTLThemeChartsLocalizationFront["Current Week"],
37848                data: aDataCurrentPeriod
37849            },            
37850            {
37851                label: g_oCTLThemeChartsLocalizationFront["Last Week"],
37852                data: aDataPreviousPeriod
37853            }
37854        ];      
37855        
37856        ctlChartTrendsApplyPercentageVariation(oNodeTrendChartsWrapper, oNodeChart, iLastCounter, iCurrentCounter);
37857    }else{
37858        if (oChartSettings.grouped_values) {
37859            aDataCurrentPeriod = __getChartGroupedDataFromDates(oCachedDays,aDates);
37860        }else{
37861            for( var i = 0; i < aDates.length; i++ ){
37862                aDataCurrentPeriod.push(oCachedDays[aDates[i]]);
37863            }
37864        }
37865
37866        if ((oChartSettings.chart_type == "line" || oChartSettings.chart_type == "bar") && oChartSettings.grouped_values) {
37867            aDataSets = __buildDataSetsForEachGroup(oChartSettings,aDataCurrentPeriod,oCachedDays,aDates);
37868        }else{
37869            aDataSets = [{
37870                label: g_oCTLThemeChartsLocalizationFront["Current Week"],
37871                data: Object.values(aDataCurrentPeriod)
37872            }]
37873        }  
37874        
37875        oNodeChart.find("p").html("");
37876    }
37877
37878    var aLabels = [];
37879    if (oChartSettings.chart_type == "line" || oChartSettings.chart_type == "bar") {
37880        aLabels = [
37881            g_oCTLThemeChartsLocalizationFront["MON"],
37882            g_oCTLThemeChartsLocalizationFront["TUE"],
37883            g_oCTLThemeChartsLocalizationFront["WED"],
37884            g_oCTLThemeChartsLocalizationFront["THU"],
37885            g_oCTLThemeChartsLocalizationFront["FRI"],
37886            g_oCTLThemeChartsLocalizationFront["SAT"],
37887            g_oCTLThemeChartsLocalizationFront["SUN"],
37888        ]
37889    }else if(oChartSettings.grouped_values){
37890        aLabels = [...Object.keys(aDataCurrentPeriod)];
37891    }
37892
37893    __setDataSetsColors(oChartSettings,aDataSets);
37894
37895    oNodeLoader.addClass("d-none");
37896    oNodeChart.removeClass("d-none");
37897
37898    if (g_oContext2DTrendCharts["widget-"+idWidget+"-"+idChart] ){
37899        g_oContext2DTrendCharts["widget-"+idWidget+"-"+idChart].destroy();
37900    }
37901
37902    var oChartConfig = {
37903        type: oChartSettings.chart_type,
37904        data: {
37905            labels: aLabels,
37906            datasets: aDataSets
37907        },
37908        plugins : [],
37909        options: {
37910            plugins : { },
37911            responsive: true, 
37912            maintainAspectRatio : true,
37913            aspectRatio : oChartSettings.aspect_ratio,
37914        }
37915    };
37916
37917    if (oChartConfig.type == "line" || oChartConfig.type == "bar") {
37918        oChartConfig["options"]["scales"] = {
37919            y: {
37920                beginAtZero: true,
37921                ticks: {
37922                    callback: function(value, index, values) {
37923                        return __ctlChartFormatValue(oNodeChartWrapper, value);
37924                    }
37925                }
37926            }
37927        }
37928    }
37929
37930    if (oChartConfig.type == "pie" || oChartConfig.type == "doughtnut") {
37931        __showValuesInPieChartLegend(oChartConfig,oNodeChartWrapper);
37932    }
37933    
37934    __ctlChartApplyTooltip(oChartConfig, oNodeChartWrapper);  
37935
37936    if ( oChartSettings.view_data_labels == "true" ){
37937        __ctlChartApplyDataLabels(oChartConfig, oNodeChartWrapper);     
37938    }  
37939    if ( oChartSettings.view_crosshair == "true" ){
37940        __ctlChartApplyCrosshair(oChartConfig, oNodeChartWrapper);     
37941    }        
37942    if ( oChartSettings.zoom == "true" ){
37943        __ctlChartApplyZoom(oChartConfig, oNodeChartWrapper);     
37944    }        
37945    
37946    __renderChart(idWidget, idChart, ctx, oChartConfig);
37947}
37948
37949function ctlChartRenderMonthlyChart( idWidget, idChart, aDates ){
37950
37951    aDates.sort();
37952
37953    var oNodeTrendChartsWrapper = jQuery("#ctl-trend-charts-" + idWidget + "-wrapper");
37954    var oNodeChartWrapper       = jQuery('#ctl-trend-chart-' + idChart + '-wrapper');
37955
37956    var oNodeLoader = oNodeChartWrapper.find(".ctl-trend-chart-loader");
37957    var oNodeChart  = oNodeChartWrapper.find(".ctl-trend-chart-container");
37958    var oNodeNoDataMsg = oNodeChartWrapper.find(".ctl-trend-chart-no-data-msg-container");
37959
37960    var ctx = oNodeChart.find("canvas")[0].getContext('2d');
37961
37962    var oChartSettings = getChartSettings(idWidget,idChart);
37963    
37964    var oCachedDays = g_oCacheTrendCharts["widget-"+idWidget+"-"+idChart];
37965
37966    var bEmpty = isChartEmpty(oCachedDays,aDates);
37967
37968    if (bEmpty) {
37969        oNodeLoader.addClass("d-none");
37970        oNodeChart.addClass("d-none");
37971        oNodeNoDataMsg.removeClass("d-none");
37972
37973        g_oCTLWPStudio.onResize();
37974        ctlVulcanoResizeLayout();
37975        return;
37976    }else{
37977        oNodeNoDataMsg.addClass("d-none");
37978    }
37979
37980    var aDataCurrentPeriod = [];
37981    var aDataPreviousPeriod = [];
37982    var aDataSets = null;
37983
37984    if ( oChartSettings.show_previous_period){
37985        var szInitCurrentMonth = moment().startOf('month').format("YYYY-MM-DD");
37986        var i = 0;
37987        var iLastCounter    = 0;
37988        var iCurrentCounter = 0;
37989        while(true){
37990            if ( aDates[i] == szInitCurrentMonth){
37991                break;
37992            }
37993            iLastCounter += parseInt(oCachedDays[aDates[i]]);
37994            aDataPreviousPeriod.push(oCachedDays[aDates[i]]);
37995            i++;
37996        }
37997        while(true){
37998            if (!aDates[i]){
37999                break;
38000            }
38001            iCurrentCounter += parseInt(oCachedDays[aDates[i]]);
38002            aDataCurrentPeriod.push(oCachedDays[aDates[i]]);
38003            i++;
38004        }  
38005
38006        aDataSets = [
38007            {
38008                label: g_oCTLThemeChartsLocalizationFront["Current Month"],
38009                data: aDataCurrentPeriod
38010            },            
38011            {
38012                label: g_oCTLThemeChartsLocalizationFront["Last Month"],
38013                data: aDataPreviousPeriod
38014            }
38015        ]     
38016
38017        ctlChartTrendsApplyPercentageVariation(oNodeTrendChartsWrapper, oNodeChart, iLastCounter, iCurrentCounter);
38018    }else{
38019        if (oChartSettings.grouped_values) {
38020            aDataCurrentPeriod = __getChartGroupedDataFromDates(oCachedDays,aDates);
38021        }else{
38022            for( var i = 0; i < aDates.length; i++ ){
38023                aDataCurrentPeriod.push(oCachedDays[aDates[i]]);
38024            }
38025        }
38026
38027        if ((oChartSettings.chart_type == "line" || oChartSettings.chart_type == "bar") && oChartSettings.grouped_values) {
38028            aDataSets = __buildDataSetsForEachGroup(oChartSettings,aDataCurrentPeriod,oCachedDays,aDates);
38029        }else{
38030            aDataSets = [{
38031                label: g_oCTLThemeChartsLocalizationFront["Current Month"],
38032                data: Object.values(aDataCurrentPeriod)
38033            }]
38034        }
38035        
38036        oNodeChart.find("p").html("");
38037    }
38038
38039    var aLabels = [];
38040    if (oChartSettings.chart_type == "line" || oChartSettings.chart_type == "bar") {
38041        for(var i = 1; i < 32; i++ ){
38042            aLabels.push(i);
38043        }
38044    }else if(oChartSettings.grouped_values){
38045        aLabels = [...Object.keys(aDataCurrentPeriod)];
38046    }
38047
38048    __setDataSetsColors(oChartSettings,aDataSets);
38049
38050    oNodeLoader.addClass("d-none");
38051    oNodeChart.removeClass("d-none");
38052
38053    if (g_oContext2DTrendCharts["widget-"+idWidget+"-"+idChart] ){
38054        g_oContext2DTrendCharts["widget-"+idWidget+"-"+idChart].destroy();
38055    }
38056
38057    var oChartConfig = {
38058        type: oChartSettings.chart_type,
38059        data: {
38060            labels: aLabels,
38061            datasets: aDataSets
38062        },
38063        plugins : [],
38064        options: {
38065            plugins : {},
38066            responsive: true, 
38067            maintainAspectRatio : true,
38068            aspectRatio : oChartSettings.aspect_ratio,
38069        }
38070    };
38071
38072    if (oChartConfig.type == "line" || oChartConfig.type == "bar") {
38073        oChartConfig["options"]["scales"] = {
38074            y: {
38075                beginAtZero: true,
38076                ticks: {
38077                    callback: function(value, index, values) {
38078                        return __ctlChartFormatValue(oNodeChartWrapper, value);
38079                    }
38080                }
38081            }
38082        }
38083    }
38084
38085    if (oChartConfig.type == "pie" || oChartConfig.type == "doughtnut") {
38086        __showValuesInPieChartLegend(oChartConfig,oNodeChartWrapper);
38087    }
38088
38089    __ctlChartApplyTooltip(oChartConfig, oNodeChartWrapper);  
38090
38091    if ( oChartSettings.view_data_labels == "true" ){
38092        __ctlChartApplyDataLabels(oChartConfig, oNodeChartWrapper);     
38093    }   
38094    if ( oChartSettings.view_crosshair == "true" ){
38095        __ctlChartApplyCrosshair(oChartConfig, oNodeChartWrapper);     
38096    }     
38097    if ( oChartSettings.zoom == "true" ){
38098        __ctlChartApplyZoom(oChartConfig, oNodeChartWrapper);     
38099    }             
38100
38101    __renderChart(idWidget, idChart, ctx, oChartConfig);
38102}
38103
38104function ctlChartRenderYearlyChart( idWidget, idChart, aDates ){
38105
38106    aDates.sort();
38107
38108    var oNodeTrendChartsWrapper = jQuery("#ctl-trend-charts-" + idWidget + "-wrapper");
38109    var oNodeChartWrapper       = jQuery('#ctl-trend-chart-' + idChart + '-wrapper');
38110
38111    var oNodeLoader = oNodeChartWrapper.find(".ctl-trend-chart-loader");
38112    var oNodeChart  = oNodeChartWrapper.find(".ctl-trend-chart-container");
38113    var oNodeNoDataMsg = oNodeChartWrapper.find(".ctl-trend-chart-no-data-msg-container");
38114
38115    var ctx = oNodeChart.find("canvas")[0].getContext('2d');
38116
38117    var oChartSettings = getChartSettings(idWidget,idChart);
38118    
38119    var oCachedMonths = g_oCacheTrendCharts["widget-"+idWidget+"-"+idChart];
38120
38121    var bEmpty = isChartEmpty(oCachedMonths,aDates);
38122
38123    if (bEmpty) {
38124        oNodeLoader.addClass("d-none");
38125        oNodeChart.addClass("d-none");
38126        oNodeNoDataMsg.removeClass("d-none");
38127
38128        g_oCTLWPStudio.onResize();
38129        ctlVulcanoResizeLayout();
38130        return;
38131    }else{
38132        oNodeNoDataMsg.addClass("d-none");
38133    }
38134
38135    var aDataCurrentPeriod = [];
38136    var aDataPreviousPeriod = [];
38137    var aDataSets = null;
38138
38139    if ( oChartSettings.show_previous_period){
38140        var szInitCurrentYear = moment().startOf('year').format("YYYY-MM");
38141        var i = 0;
38142        var iLastCounter    = 0;
38143        var iCurrentCounter = 0;
38144        while(true){
38145            if ( aDates[i] == szInitCurrentYear){
38146                break;
38147            }
38148            iLastCounter += parseInt(oCachedMonths[aDates[i]]);
38149            aDataPreviousPeriod.push(oCachedMonths[aDates[i]]);
38150            i++;
38151        }
38152        while(true){
38153            if (!aDates[i]){
38154                break;
38155            }
38156            iCurrentCounter += parseInt(oCachedMonths[aDates[i]]);
38157            aDataCurrentPeriod.push(oCachedMonths[aDates[i]]);
38158            i++;
38159        }  
38160
38161        aDataSets = [
38162            {
38163                label: g_oCTLThemeChartsLocalizationFront["Current Year"],
38164                data: aDataCurrentPeriod
38165            },            
38166            {
38167                label: g_oCTLThemeChartsLocalizationFront["Last Year"],
38168                data: aDataPreviousPeriod
38169            },
38170        ]     
38171
38172        ctlChartTrendsApplyPercentageVariation(oNodeTrendChartsWrapper, oNodeChart, iLastCounter, iCurrentCounter);
38173    }else{
38174        if (oChartSettings.grouped_values) {
38175            aDataCurrentPeriod = __getChartGroupedDataFromDates(oCachedMonths,aDates);
38176        }else{
38177            for( var i = 0; i < aDates.length; i++ ){
38178                aDataCurrentPeriod.push(oCachedMonths[aDates[i]]);
38179            }
38180        }
38181
38182        if ((oChartSettings.chart_type == "line" || oChartSettings.chart_type == "bar") && oChartSettings.grouped_values) {
38183            aDataSets = __buildDataSetsForEachGroup(oChartSettings,aDataCurrentPeriod,oCachedMonths,aDates);
38184        }else{
38185            aDataSets = [{
38186                label: g_oCTLThemeChartsLocalizationFront["Current Year"],
38187                data: Object.values(aDataCurrentPeriod)
38188            }]
38189        }
38190        
38191        oNodeChart.find("p").html("");
38192    }
38193
38194    var aLabels = [];
38195    if (oChartSettings.chart_type == "line" || oChartSettings.chart_type == "bar") {
38196        aLabels = [
38197            g_oCTLThemeChartsLocalizationFront["JAN"],
38198            g_oCTLThemeChartsLocalizationFront["FEB"],
38199            g_oCTLThemeChartsLocalizationFront["MAR"],
38200            g_oCTLThemeChartsLocalizationFront["APR"],
38201            g_oCTLThemeChartsLocalizationFront["MAY"],
38202            g_oCTLThemeChartsLocalizationFront["JUN"],
38203            g_oCTLThemeChartsLocalizationFront["JUL"],
38204            g_oCTLThemeChartsLocalizationFront["AUG"],
38205            g_oCTLThemeChartsLocalizationFront["SEP"],
38206            g_oCTLThemeChartsLocalizationFront["OCT"],
38207            g_oCTLThemeChartsLocalizationFront["NOV"],
38208            g_oCTLThemeChartsLocalizationFront["DEC"]
38209        ]
38210    }else if(oChartSettings.grouped_values){
38211        aLabels = [...Object.keys(aDataCurrentPeriod)];
38212    }
38213
38214    __setDataSetsColors(oChartSettings,aDataSets);
38215
38216    oNodeLoader.addClass("d-none");
38217    oNodeChart.removeClass("d-none");
38218
38219    if (g_oContext2DTrendCharts["widget-"+idWidget+"-"+idChart] ){
38220        g_oContext2DTrendCharts["widget-"+idWidget+"-"+idChart].destroy();
38221    }
38222
38223    var oChartConfig = {
38224        type: oChartSettings.chart_type,
38225        data: {
38226            labels: aLabels,
38227            datasets: aDataSets
38228        },
38229        plugins : [],
38230        options: {
38231            plugins : {},
38232            responsive: true, 
38233            maintainAspectRatio : true,
38234            aspectRatio : oChartSettings.aspect_ratio,
38235        }
38236    };
38237
38238    if (oChartConfig.type == "line" || oChartConfig.type == "bar") {
38239        oChartConfig["options"]["scales"] = {
38240            y: {
38241                beginAtZero: true,
38242                ticks: {
38243                    callback: function(value, index, values) {
38244                        return __ctlChartFormatValue(oNodeChartWrapper, value);
38245                    }
38246                }
38247            }
38248        }
38249    }
38250
38251    if (oChartConfig.type == "pie" || oChartConfig.type == "doughtnut") {
38252        __showValuesInPieChartLegend(oChartConfig,oNodeChartWrapper);
38253    }
38254
38255    __ctlChartApplyTooltip(oChartConfig, oNodeChartWrapper);  
38256
38257    if ( oChartSettings.view_data_labels == "true" ){
38258        __ctlChartApplyDataLabels(oChartConfig, oNodeChartWrapper);     
38259    }   
38260    if ( oChartSettings.view_crosshair == "true" ){
38261        __ctlChartApplyCrosshair(oChartConfig, oNodeChartWrapper);     
38262    }     
38263    if ( oChartSettings.zoom == "true" ){
38264        __ctlChartApplyZoom(oChartConfig, oNodeChartWrapper);     
38265    }             
38266
38267    __renderChart(idWidget, idChart, ctx, oChartConfig);
38268}
38269
38270function isChartEmpty(oCachedDates, aDates){
38271    for (const szDate of aDates) {
38272        if(Array.isArray(oCachedDates[szDate])){
38273            for (const element of oCachedDates[szDate]) {
38274                if(element.value && element.value != 0){
38275                    return false;
38276                }
38277            }
38278        }else if(oCachedDates[szDate] && oCachedDates[szDate] != 0){
38279            return false;
38280        }
38281    }
38282
38283    return true;
38284}
38285
38286function __renderChart(idWidget, idChart, ctx, oChartConfig){
38287    g_oContext2DTrendCharts["widget-"+idWidget+"-"+idChart] = new Chart(ctx, oChartConfig);
38288    ctlVulcanoResizeLayout();
38289    g_oCTLWPStudio.applyChromaCorrection();
38290}
38291
38292
38293function __ctlChartApplyTooltip( oChartConfig, oNodeChartWrapper ){
38294    oChartConfig["options"]["plugins"]["tooltip"] = {
38295        enabled: true,
38296        callbacks: {
38297            label: function(context) {
38298                var szLabel;
38299                var szValue;
38300                switch(oChartConfig.type){
38301                    case "line":
38302                    case "bar":{
38303                        szLabel = context.dataset.label;
38304                        szValue = context.parsed.y;
38305                        break;
38306                    }
38307                    case "pie":
38308                    case "doughnut":{
38309                        szLabel = context.label;
38310                        szValue = context.parsed;
38311                    }
38312                }
38313                return szLabel + ": " + __ctlChartFormatValue(oNodeChartWrapper, szValue);
38314            }
38315        }
38316    };  
38317}
38318
38319function __ctlChartApplyZoom( oChartConfig, oNodeChartWrapper ){
38320
38321    oChartConfig["plugins"].push(ChartZoom);
38322
38323    oChartConfig["options"]["plugins"]["zoom"] = {
38324        limits: {
38325            x: {min: -200, max: 200, minRange: 50},
38326            y: {min: -200, max: 200, minRange: 50}
38327          },
38328        pan: {
38329            enabled: true,
38330            mode: 'xy',
38331            modifierKey: 'alt',
38332          },        
38333        zoom: {
38334          wheel: {
38335            enabled: true,
38336          },
38337          pinch: {
38338            enabled: true
38339          },
38340          mode: 'xy',
38341          onZoomComplete({chart}) {
38342            // This update is needed to display up to date zoom level in the title.
38343            // Without this, previous zoom level is displayed.
38344            // The reason is: title uses the same beforeUpdate hook, and is evaluated before zoom.
38345            chart.update('none');
38346          }          
38347        }
38348      };
38349}
38350
38351function __ctlChartApplyCrosshair( oChartConfig, oNodeChartWrapper ){
38352
38353    let crosshair;
38354    const hoverCrosshair = {
38355        id : 'hoverCrosshair',
38356        events : ['mousemove'], 
38357        afterDatasetsDraw : function(chart, args, plugins ) {
38358            if ( crosshair ){
38359                const { ctx } = chart;
38360                ctx.save();
38361
38362                crosshair.forEach((line, index)=> {
38363                    ctx.beginPath();
38364                    ctx.lineWidth = 2;
38365                    ctx.setStrokeStyle = 'rgba(102, 102, 102,1)';
38366                    ctx.moveTo(line.startX, line.startY);
38367                    ctx.lineTo(line.endX, line.endY);
38368                    ctx.stroke();
38369                });
38370
38371                ctx.restore();
38372            }
38373        },
38374
38375        afterEvent : function(ch
38375art, args) {
38376            const { ctx , chartArea: { left, right, top, bottom  }} = chart;
38377            const xCoor = args.event.x;
38378            const yCoor = args.event.y;
38379
38380            if (!args.inChartArea && crosshair){
38381                crosshair = undefined;
38382                args.changed = true;
38383            }else if (args.inChartArea){                
38384                crosshair = [
38385                    {
38386                        startX : xCoor,
38387                        startY : top,
38388                        endX : xCoor,
38389                        endY : bottom
38390                    },
38391                    {
38392                        startX : left,
38393                        startY : yCoor,
38394                        endX : right,
38395                        endY : yCoor
38396                    }
38397                ]
38398            }
38399        }
38400    }
38401
38402    oChartConfig["plugins"].push(hoverCrosshair);    
38403}
38404
38405function __showValuesInPieChartLegend(oChartConfig,oNodeChartWrapper){
38406    if ( !oChartConfig["options"]["plugins"] ){
38407        oChartConfig["options"]["plugins"] = {};
38408    }
38409
38410    if ( !oChartConfig["options"]["plugins"]["legend"] ){
38411        oChartConfig["options"]["plugins"]["legend"] = {};
38412    }
38413
38414    oChartConfig["options"]["plugins"]["legend"]["labels"] = {
38415        generateLabels: (chart) => {
38416            const data = chart.data;
38417            if (data.labels.length && data.datasets.length) {
38418                const {labels: {pointStyle, color}} = chart.legend.options;
38419
38420                return data.labels.map((label, i) => {
38421                    const meta = chart.getDatasetMeta(0);
38422                    const style = meta.controller.getStyle(i);
38423
38424                    
38425                    return {
38426                        text: label+":"+__ctlChartFormatValue(oNodeChartWrapper,data.datasets[0].data[i]),
38427                        fillStyle: style.backgroundColor,
38428                        strokeStyle: style.borderColor,
38429                        fontColor: color,
38430                        lineWidth: style.borderWidth,
38431                        pointStyle: pointStyle,
38432                        hidden: !chart.getDataVisibility(i),
38433
38434                        // Extra data used for toggling the correct item
38435                        index: i
38436                    };
38437                });
38438            }
38439            return [];
38440        }
38441    }
38442}
38443
38444function __ctlChartApplyDataLabels( oChartConfig, oNodeChartWrapper ){
38445
38446    // Verifichiamo se il plugin è definito prima di usarlo
38447    if (typeof ChartDataLabels !== 'undefined') {
38448        oChartConfig["plugins"].push(ChartDataLabels);
38449    } else {
38450        // Se non esiste, avvisiamo l'utente
38451        alert( g_oCTLThemeChartsLocalizationFront["Warning: The ChartDataLabels plugin did not load correctly. Some visual data may be missing. Please check in chart js extension settings."]);
38452        return;
38453    }
38454
38455    if ( !oChartConfig["options"]["plugins"] ){
38456        oChartConfig["options"]["plugins"] = {};
38457    }
38458
38459    oChartConfig["options"]["plugins"]["datalabels"] = {};
38460    oChartConfig["options"]["plugins"]["datalabels"]["formatter"] = function(value, context) {
38461        return __ctlChartFormatValue(oNodeChartWrapper, value);
38462    };
38463
38464    oChartConfig["options"]["plugins"]["datalabels"]["borderRadius"] = 4;
38465    oChartConfig["options"]["plugins"]["datalabels"]["color"] = 'white';
38466    oChartConfig["options"]["plugins"]["datalabels"]["padding"] = 6;
38467    oChartConfig["options"]["plugins"]["datalabels"]["backgroundColor"] = function(context) {
38468        return context.dataset.backgroundColor;
38469    };  
38470}
38471
38472function __ctlChartFormatValue(oNodeChartWrapper, value){
38473    switch(oNodeChartWrapper.attr("data-value-formatter")){
38474        case "euro":{
38475            value = '€ ' + numberFormat(Number(value), 2, ',', '.');
38476        }break;
38477        case "percentage":{
38478            value = value + '%';
38479        }break;
38480        case "kilogram":{
38481            value = value + 'kg';
38482        }break;
38483        case "kilometer":{
38484            value = value + 'km';
38485        }break;
38486        case "custom":{
38487            value = sprintf(oNodeChartWrapper.attr("data-custom-formatter"), value);
38488        }break;
38489    }
38490    return " " + value;
38491}
38492
38493function __ctlTrendChartsGetDateData(idWidget, idTrendChart, idAncestor, szDateType, aDatesToRequest, cb){
38494    var oFormData = {};
38495    oFormData['action']  ='ctl-wp-studio';
38496    oFormData['execute'] ='ctl-chart-js';
38497    oFormData['extension-action'] = "get-trends";
38498    oFormData['widget-id'] = idWidget;
38499    oFormData['post-id']   = idTrendChart;
38500    oFormData['ancestor-id'] = idAncestor;
38501    oFormData['date-type'] = szDateType;
38502    oFormData['dates']      = aDatesToRequest;
38503
38504    jQuery.ajax({
38505        url : g_oCTLWPStudio._oLangCommon["ajaxurl"],
38506        type: "POST",
38507        data : oFormData,
38508        cache: false,
38509        method: 'POST',
38510        success: function(response, textStatus, jqXHR){
38511            var oResponse = jQuery.parseJSON(response);
38512                if( oResponse.res === false ){
38513                    alert(g_oCTLWPStudio._oLangCommon["Ooops! Something Went Wrong!"]); 
38514                }else{
38515                    for( var i = 0; i < oResponse.dates.length; i++ ){
38516                        
38517                        g_oCacheTrendCharts["widget-"+idWidget+"-"+idTrendChart][oResponse.dates[i].date] = 
38518                                                            oResponse.dates[i].value;
38519
38520                        for( var k = 0; k < aDatesToRequest.length; k++ ){
38521                            if ( aDatesToRequest[k] == oResponse.dates[i].date ){
38522                                aDatesToRequest.splice(k,1);
38523                                break;
38524                            }
38525                        }
38526                    }
38527
38528                    localStorage.setItem('cache_trend_charts', JSON.stringify(g_oCacheTrendCharts));
38529                    localStorage.setItem('cache_trend_charts_time', new Date().getTime());
38530
38531                    if ( aDatesToRequest.length > 0 ){
38532                        __ctlTrendChartsGetDateData(idWidget, idTrendChart, idAncestor, szDateType, aDatesToRequest, cb)
38533                    }else{
38534                        cb();
38535                    }                    
38536                }
38537        },error: function(jqXHR, textStatus, errorThrown){
38538            alert(g_oCTLWPStudio._oLangCommon["Ooops! Something Went Wrong!"]);
38539        }
38540    });
38541}

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