403Webshell
Server IP : 146.59.209.152  /  Your IP : 216.73.216.46
Web Server : Apache
System : Linux webm005.cluster131.gra.hosting.ovh.net 5.15.167-ovh-vps-grsec-zfs-classid #1 SMP Tue Sep 17 08:14:20 UTC 2024 x86_64
User : infrafs ( 43850)
PHP Version : 8.2.29
Disable Function : _dyuweyrj4,_dyuweyrj4r,dl
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /home/infrafs/bike/wp-content/plugins/colibri-page-builder/assets/js/customizer/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /home/infrafs/bike/wp-content/plugins/colibri-page-builder/assets/js/customizer/customizer-base.js
// @formatter:off - Preferences > Editor > Code Style - enable formatter markers comments
!function(t){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{("undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this).pako=t()}}(function(){return function r(s,o,l){function h(e,t){if(!o[e]){if(!s[e]){var a="function"==typeof require&&require;if(!t&&a)return a(e,!0);if(d)return d(e,!0);var i=new Error("Cannot find module '"+e+"'");throw i.code="MODULE_NOT_FOUND",i}var n=o[e]={exports:{}};s[e][0].call(n.exports,function(t){return h(s[e][1][t]||t)},n,n.exports,r,s,o,l)}return o[e].exports}for(var d="function"==typeof require&&require,t=0;t<l.length;t++)h(l[t]);return h}({1:[function(t,e,a){"use strict";var s=t("./zlib/deflate"),o=t("./utils/common"),l=t("./utils/strings"),n=t("./zlib/messages"),r=t("./zlib/zstream"),h=Object.prototype.toString,d=0,f=-1,_=0,u=8;function c(t){if(!(this instanceof c))return new c(t);this.options=o.assign({level:f,method:u,chunkSize:16384,windowBits:15,memLevel:8,strategy:_,to:""},t||{});var e=this.options;e.raw&&0<e.windowBits?e.windowBits=-e.windowBits:e.gzip&&0<e.windowBits&&e.windowBits<16&&(e.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new r,this.strm.avail_out=0;var a=s.deflateInit2(this.strm,e.level,e.method,e.windowBits,e.memLevel,e.strategy);if(a!==d)throw new Error(n[a]);if(e.header&&s.deflateSetHeader(this.strm,e.header),e.dictionary){var i;if(i="string"==typeof e.dictionary?l.string2buf(e.dictionary):"[object ArrayBuffer]"===h.call(e.dictionary)?new Uint8Array(e.dictionary):e.dictionary,(a=s.deflateSetDictionary(this.strm,i))!==d)throw new Error(n[a]);this._dict_set=!0}}function i(t,e){var a=new c(e);if(a.push(t,!0),a.err)throw a.msg||n[a.err];return a.result}c.prototype.push=function(t,e){var a,i,n=this.strm,r=this.options.chunkSize;if(this.ended)return!1;i=e===~~e?e:!0===e?4:0,"string"==typeof t?n.input=l.string2buf(t):"[object ArrayBuffer]"===h.call(t)?n.input=new Uint8Array(t):n.input=t,n.next_in=0,n.avail_in=n.input.length;do{if(0===n.avail_out&&(n.output=new o.Buf8(r),n.next_out=0,n.avail_out=r),1!==(a=s.deflate(n,i))&&a!==d)return this.onEnd(a),!(this.ended=!0);0!==n.avail_out&&(0!==n.avail_in||4!==i&&2!==i)||("string"===this.options.to?this.onData(l.buf2binstring(o.shrinkBuf(n.output,n.next_out))):this.onData(o.shrinkBuf(n.output,n.next_out)))}while((0<n.avail_in||0===n.avail_out)&&1!==a);return 4===i?(a=s.deflateEnd(this.strm),this.onEnd(a),this.ended=!0,a===d):2!==i||(this.onEnd(d),!(n.avail_out=0))},c.prototype.onData=function(t){this.chunks.push(t)},c.prototype.onEnd=function(t){t===d&&("string"===this.options.to?this.result=this.chunks.join(""):this.result=o.flattenChunks(this.chunks)),this.chunks=[],this.err=t,this.msg=this.strm.msg},a.Deflate=c,a.deflate=i,a.deflateRaw=function(t,e){return(e=e||{}).raw=!0,i(t,e)},a.gzip=function(t,e){return(e=e||{}).gzip=!0,i(t,e)}},{"./utils/common":3,"./utils/strings":4,"./zlib/deflate":8,"./zlib/messages":13,"./zlib/zstream":15}],2:[function(t,e,a){"use strict";var f=t("./zlib/inflate"),_=t("./utils/common"),u=t("./utils/strings"),c=t("./zlib/constants"),i=t("./zlib/messages"),n=t("./zlib/zstream"),r=t("./zlib/gzheader"),b=Object.prototype.toString;function s(t){if(!(this instanceof s))return new s(t);this.options=_.assign({chunkSize:16384,windowBits:0,to:""},t||{});var e=this.options;e.raw&&0<=e.windowBits&&e.windowBits<16&&(e.windowBits=-e.windowBits,0===e.windowBits&&(e.windowBits=-15)),!(0<=e.windowBits&&e.windowBits<16)||t&&t.windowBits||(e.windowBits+=32),15<e.windowBits&&e.windowBits<48&&0==(15&e.windowBits)&&(e.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new n,this.strm.avail_out=0;var a=f.inflateInit2(this.strm,e.windowBits);if(a!==c.Z_OK)throw new Error(i[a]);if(this.header=new r,f.inflateGetHeader(this.strm,this.header),e.dictionary&&("string"==typeof e.dictionary?e.dictionary=u.string2buf(e.dictionary):"[object ArrayBuffer]"===b.call(e.dictionary)&&(e.dictionary=new Uint8Array(e.dictionary)),e.raw&&(a=f.inflateSetDictionary(this.strm,e.dictionary))!==c.Z_OK))throw new Error(i[a])}function o(t,e){var a=new s(e);if(a.push(t,!0),a.err)throw a.msg||i[a.err];return a.result}s.prototype.push=function(t,e){var a,i,n,r,s,o=this.strm,l=this.options.chunkSize,h=this.options.dictionary,d=!1;if(this.ended)return!1;i=e===~~e?e:!0===e?c.Z_FINISH:c.Z_NO_FLUSH,"string"==typeof t?o.input=u.binstring2buf(t):"[object ArrayBuffer]"===b.call(t)?o.input=new Uint8Array(t):o.input=t,o.next_in=0,o.avail_in=o.input.length;do{if(0===o.avail_out&&(o.output=new _.Buf8(l),o.next_out=0,o.avail_out=l),(a=f.inflate(o,c.Z_NO_FLUSH))===c.Z_NEED_DICT&&h&&(a=f.inflateSetDictionary(this.strm,h)),a===c.Z_BUF_ERROR&&!0===d&&(a=c.Z_OK,d=!1),a!==c.Z_STREAM_END&&a!==c.Z_OK)return this.onEnd(a),!(this.ended=!0);o.next_out&&(0!==o.avail_out&&a!==c.Z_STREAM_END&&(0!==o.avail_in||i!==c.Z_FINISH&&i!==c.Z_SYNC_FLUSH)||("string"===this.options.to?(n=u.utf8border(o.output,o.next_out),r=o.next_out-n,s=u.buf2string(o.output,n),o.next_out=r,o.avail_out=l-r,r&&_.arraySet(o.output,o.output,n,r,0),this.onData(s)):this.onData(_.shrinkBuf(o.output,o.next_out)))),0===o.avail_in&&0===o.avail_out&&(d=!0)}while((0<o.avail_in||0===o.avail_out)&&a!==c.Z_STREAM_END);return a===c.Z_STREAM_END&&(i=c.Z_FINISH),i===c.Z_FINISH?(a=f.inflateEnd(this.strm),this.onEnd(a),this.ended=!0,a===c.Z_OK):i!==c.Z_SYNC_FLUSH||(this.onEnd(c.Z_OK),!(o.avail_out=0))},s.prototype.onData=function(t){this.chunks.push(t)},s.prototype.onEnd=function(t){t===c.Z_OK&&("string"===this.options.to?this.result=this.chunks.join(""):this.result=_.flattenChunks(this.chunks)),this.chunks=[],this.err=t,this.msg=this.strm.msg},a.Inflate=s,a.inflate=o,a.inflateRaw=function(t,e){return(e=e||{}).raw=!0,o(t,e)},a.ungzip=o},{"./utils/common":3,"./utils/strings":4,"./zlib/constants":6,"./zlib/gzheader":9,"./zlib/inflate":11,"./zlib/messages":13,"./zlib/zstream":15}],3:[function(t,e,a){"use strict";var i="undefined"!=typeof Uint8Array&&"undefined"!=typeof Uint16Array&&"undefined"!=typeof Int32Array;a.assign=function(t){for(var e,a,i=Array.prototype.slice.call(arguments,1);i.length;){var n=i.shift();if(n){if("object"!=typeof n)throw new TypeError(n+"must be non-object");for(var r in n)e=n,a=r,Object.prototype.hasOwnProperty.call(e,a)&&(t[r]=n[r])}}return t},a.shrinkBuf=function(t,e){return t.length===e?t:t.subarray?t.subarray(0,e):(t.length=e,t)};var n={arraySet:function(t,e,a,i,n){if(e.subarray&&t.subarray)t.set(e.subarray(a,a+i),n);else for(var r=0;r<i;r++)t[n+r]=e[a+r]},flattenChunks:function(t){var e,a,i,n,r,s;for(e=i=0,a=t.length;e<a;e++)i+=t[e].length;for(s=new Uint8Array(i),e=n=0,a=t.length;e<a;e++)r=t[e],s.set(r,n),n+=r.length;return s}},r={arraySet:function(t,e,a,i,n){for(var r=0;r<i;r++)t[n+r]=e[a+r]},flattenChunks:function(t){return[].concat.apply([],t)}};a.setTyped=function(t){t?(a.Buf8=Uint8Array,a.Buf16=Uint16Array,a.Buf32=Int32Array,a.assign(a,n)):(a.Buf8=Array,a.Buf16=Array,a.Buf32=Array,a.assign(a,r))},a.setTyped(i)},{}],4:[function(t,e,a){"use strict";var l=t("./common"),n=!0,r=!0;try{String.fromCharCode.apply(null,[0])}catch(t){n=!1}try{String.fromCharCode.apply(null,new Uint8Array(1))}catch(t){r=!1}for(var h=new l.Buf8(256),i=0;i<256;i++)h[i]=252<=i?6:248<=i?5:240<=i?4:224<=i?3:192<=i?2:1;function d(t,e){if(e<65534&&(t.subarray&&r||!t.subarray&&n))return String.fromCharCode.apply(null,l.shrinkBuf(t,e));for(var a="",i=0;i<e;i++)a+=String.fromCharCode(t[i]);return a}h[254]=h[254]=1,a.string2buf=function(t){var e,a,i,n,r,s=t.length,o=0;for(n=0;n<s;n++)55296==(64512&(a=t.charCodeAt(n)))&&n+1<s&&56320==(64512&(i=t.charCodeAt(n+1)))&&(a=65536+(a-55296<<10)+(i-56320),n++),o+=a<128?1:a<2048?2:a<65536?3:4;for(e=new l.Buf8(o),n=r=0;r<o;n++)55296==(64512&(a=t.charCodeAt(n)))&&n+1<s&&56320==(64512&(i=t.charCodeAt(n+1)))&&(a=65536+(a-55296<<10)+(i-56320),n++),e[r++]=a<128?a:(e[r++]=a<2048?192|a>>>6:(e[r++]=a<65536?224|a>>>12:(e[r++]=240|a>>>18,128|a>>>12&63),128|a>>>6&63),128|63&a);return e},a.buf2binstring=function(t){return d(t,t.length)},a.binstring2buf=function(t){for(var e=new l.Buf8(t.length),a=0,i=e.length;a<i;a++)e[a]=t.charCodeAt(a);return e},a.buf2string=function(t,e){var a,i,n,r,s=e||t.length,o=new Array(2*s);for(a=i=0;a<s;)if((n=t[a++])<128)o[i++]=n;else if(4<(r=h[n]))o[i++]=65533,a+=r-1;else{for(n&=2===r?31:3===r?15:7;1<r&&a<s;)n=n<<6|63&t[a++],r--;o[i++]=1<r?65533:n<65536?n:(n-=65536,o[i++]=55296|n>>10&1023,56320|1023&n)}return d(o,i)},a.utf8border=function(t,e){var a;for((e=e||t.length)>t.length&&(e=t.length),a=e-1;0<=a&&128==(192&t[a]);)a--;return a<0?e:0===a?e:a+h[t[a]]>e?a:e}},{"./common":3}],5:[function(t,e,a){"use strict";e.exports=function(t,e,a,i){for(var n=65535&t|0,r=t>>>16&65535|0,s=0;0!==a;){for(a-=s=2e3<a?2e3:a;r=r+(n=n+e[i++]|0)|0,--s;);n%=65521,r%=65521}return n|r<<16|0}},{}],6:[function(t,e,a){"use strict";e.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}},{}],7:[function(t,e,a){"use strict";var o=function(){for(var t,e=[],a=0;a<256;a++){t=a;for(var i=0;i<8;i++)t=1&t?3988292384^t>>>1:t>>>1;e[a]=t}return e}();e.exports=function(t,e,a,i){var n=o,r=i+a;t^=-1;for(var s=i;s<r;s++)t=t>>>8^n[255&(t^e[s])];return-1^t}},{}],8:[function(t,e,a){"use strict";var l,_=t("../utils/common"),h=t("./trees"),u=t("./adler32"),c=t("./crc32"),i=t("./messages"),d=0,f=4,b=0,g=-2,m=-1,w=4,n=2,p=8,v=9,r=286,s=30,o=19,k=2*r+1,y=15,x=3,z=258,B=z+x+1,S=42,E=113,A=1,Z=2,R=3,C=4;function N(t,e){return t.msg=i[e],e}function O(t){return(t<<1)-(4<t?9:0)}function D(t){for(var e=t.length;0<=--e;)t[e]=0}function I(t){var e=t.state,a=e.pending;a>t.avail_out&&(a=t.avail_out),0!==a&&(_.arraySet(t.output,e.pending_buf,e.pending_out,a,t.next_out),t.next_out+=a,e.pending_out+=a,t.total_out+=a,t.avail_out-=a,e.pending-=a,0===e.pending&&(e.pending_out=0))}function U(t,e){h._tr_flush_block(t,0<=t.block_start?t.block_start:-1,t.strstart-t.block_start,e),t.block_start=t.strstart,I(t.strm)}function T(t,e){t.pending_buf[t.pending++]=e}function F(t,e){t.pending_buf[t.pending++]=e>>>8&255,t.pending_buf[t.pending++]=255&e}function L(t,e){var a,i,n=t.max_chain_length,r=t.strstart,s=t.prev_length,o=t.nice_match,l=t.strstart>t.w_size-B?t.strstart-(t.w_size-B):0,h=t.window,d=t.w_mask,f=t.prev,_=t.strstart+z,u=h[r+s-1],c=h[r+s];t.prev_length>=t.good_match&&(n>>=2),o>t.lookahead&&(o=t.lookahead);do{if(h[(a=e)+s]===c&&h[a+s-1]===u&&h[a]===h[r]&&h[++a]===h[r+1]){r+=2,a++;do{}while(h[++r]===h[++a]&&h[++r]===h[++a]&&h[++r]===h[++a]&&h[++r]===h[++a]&&h[++r]===h[++a]&&h[++r]===h[++a]&&h[++r]===h[++a]&&h[++r]===h[++a]&&r<_);if(i=z-(_-r),r=_-z,s<i){if(t.match_start=e,o<=(s=i))break;u=h[r+s-1],c=h[r+s]}}}while((e=f[e&d])>l&&0!=--n);return s<=t.lookahead?s:t.lookahead}function H(t){var e,a,i,n,r,s,o,l,h,d,f=t.w_size;do{if(n=t.window_size-t.lookahead-t.strstart,t.strstart>=f+(f-B)){for(_.arraySet(t.window,t.window,f,f,0),t.match_start-=f,t.strstart-=f,t.block_start-=f,e=a=t.hash_size;i=t.head[--e],t.head[e]=f<=i?i-f:0,--a;);for(e=a=f;i=t.prev[--e],t.prev[e]=f<=i?i-f:0,--a;);n+=f}if(0===t.strm.avail_in)break;if(s=t.strm,o=t.window,l=t.strstart+t.lookahead,h=n,d=void 0,d=s.avail_in,h<d&&(d=h),a=0===d?0:(s.avail_in-=d,_.arraySet(o,s.input,s.next_in,d,l),1===s.state.wrap?s.adler=u(s.adler,o,d,l):2===s.state.wrap&&(s.adler=c(s.adler,o,d,l)),s.next_in+=d,s.total_in+=d,d),t.lookahead+=a,t.lookahead+t.insert>=x)for(r=t.strstart-t.insert,t.ins_h=t.window[r],t.ins_h=(t.ins_h<<t.hash_shift^t.window[r+1])&t.hash_mask;t.insert&&(t.ins_h=(t.ins_h<<t.hash_shift^t.window[r+x-1])&t.hash_mask,t.prev[r&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=r,r++,t.insert--,!(t.lookahead+t.insert<x)););}while(t.lookahead<B&&0!==t.strm.avail_in)}function j(t,e){for(var a,i;;){if(t.lookahead<B){if(H(t),t.lookahead<B&&e===d)return A;if(0===t.lookahead)break}if(a=0,t.lookahead>=x&&(t.ins_h=(t.ins_h<<t.hash_shift^t.window[t.strstart+x-1])&t.hash_mask,a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart),0!==a&&t.strstart-a<=t.w_size-B&&(t.match_length=L(t,a)),t.match_length>=x)if(i=h._tr_tally(t,t.strstart-t.match_start,t.match_length-x),t.lookahead-=t.match_length,t.match_length<=t.max_lazy_match&&t.lookahead>=x){for(t.match_length--;t.strstart++,t.ins_h=(t.ins_h<<t.hash_shift^t.window[t.strstart+x-1])&t.hash_mask,a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart,0!=--t.match_length;);t.strstart++}else t.strstart+=t.match_length,t.match_length=0,t.ins_h=t.window[t.strstart],t.ins_h=(t.ins_h<<t.hash_shift^t.window[t.strstart+1])&t.hash_mask;else i=h._tr_tally(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++;if(i&&(U(t,!1),0===t.strm.avail_out))return A}return t.insert=t.strstart<x-1?t.strstart:x-1,e===f?(U(t,!0),0===t.strm.avail_out?R:C):t.last_lit&&(U(t,!1),0===t.strm.avail_out)?A:Z}function K(t,e){for(var a,i,n;;){if(t.lookahead<B){if(H(t),t.lookahead<B&&e===d)return A;if(0===t.lookahead)break}if(a=0,t.lookahead>=x&&(t.ins_h=(t.ins_h<<t.hash_shift^t.window[t.strstart+x-1])&t.hash_mask,a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart),t.prev_length=t.match_length,t.prev_match=t.match_start,t.match_length=x-1,0!==a&&t.prev_length<t.max_lazy_match&&t.strstart-a<=t.w_size-B&&(t.match_length=L(t,a),t.match_length<=5&&(1===t.strategy||t.match_length===x&&4096<t.strstart-t.match_start)&&(t.match_length=x-1)),t.prev_length>=x&&t.match_length<=t.prev_length){for(n=t.strstart+t.lookahead-x,i=h._tr_tally(t,t.strstart-1-t.prev_match,t.prev_length-x),t.lookahead-=t.prev_length-1,t.prev_length-=2;++t.strstart<=n&&(t.ins_h=(t.ins_h<<t.hash_shift^t.window[t.strstart+x-1])&t.hash_mask,a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart),0!=--t.prev_length;);if(t.match_available=0,t.match_length=x-1,t.strstart++,i&&(U(t,!1),0===t.strm.avail_out))return A}else if(t.match_available){if((i=h._tr_tally(t,0,t.window[t.strstart-1]))&&U(t,!1),t.strstart++,t.lookahead--,0===t.strm.avail_out)return A}else t.match_available=1,t.strstart++,t.lookahead--}return t.match_available&&(i=h._tr_tally(t,0,t.window[t.strstart-1]),t.match_available=0),t.insert=t.strstart<x-1?t.strstart:x-1,e===f?(U(t,!0),0===t.strm.avail_out?R:C):t.last_lit&&(U(t,!1),0===t.strm.avail_out)?A:Z}function M(t,e,a,i,n){this.good_length=t,this.max_lazy=e,this.nice_length=a,this.max_chain=i,this.func=n}function P(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=p,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new _.Buf16(2*k),this.dyn_dtree=new _.Buf16(2*(2*s+1)),this.bl_tree=new _.Buf16(2*(2*o+1)),D(this.dyn_ltree),D(this.dyn_dtree),D(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new _.Buf16(y+1),this.heap=new _.Buf16(2*r+1),D(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new _.Buf16(2*r+1),D(this.depth),this.l_buf=0,this.lit_bufsize=0,this.last_lit=0,this.d_buf=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}function Y(t){var e;return t&&t.state?(t.total_in=t.total_out=0,t.data_type=n,(e=t.state).pending=0,e.pending_out=0,e.wrap<0&&(e.wrap=-e.wrap),e.status=e.wrap?S:E,t.adler=2===e.wrap?0:1,e.last_flush=d,h._tr_init(e),b):N(t,g)}function q(t){var e,a=Y(t);return a===b&&((e=t.state).window_size=2*e.w_size,D(e.head),e.max_lazy_match=l[e.level].max_lazy,e.good_match=l[e.level].good_length,e.nice_match=l[e.level].nice_length,e.max_chain_length=l[e.level].max_chain,e.strstart=0,e.block_start=0,e.lookahead=0,e.insert=0,e.match_length=e.prev_length=x-1,e.match_available=0,e.ins_h=0),a}function G(t,e,a,i,n,r){if(!t)return g;var s=1;if(e===m&&(e=6),i<0?(s=0,i=-i):15<i&&(s=2,i-=16),n<1||v<n||a!==p||i<8||15<i||e<0||9<e||r<0||w<r)return N(t,g);8===i&&(i=9);var o=new P;return(t.state=o).strm=t,o.wrap=s,o.gzhead=null,o.w_bits=i,o.w_size=1<<o.w_bits,o.w_mask=o.w_size-1,o.hash_bits=n+7,o.hash_size=1<<o.hash_bits,o.hash_mask=o.hash_size-1,o.hash_shift=~~((o.hash_bits+x-1)/x),o.window=new _.Buf8(2*o.w_size),o.head=new _.Buf16(o.hash_size),o.prev=new _.Buf16(o.w_size),o.lit_bufsize=1<<n+6,o.pending_buf_size=4*o.lit_bufsize,o.pending_buf=new _.Buf8(o.pending_buf_size),o.d_buf=1*o.lit_bufsize,o.l_buf=3*o.lit_bufsize,o.level=e,o.strategy=r,o.method=a,q(t)}l=[new M(0,0,0,0,function(t,e){var a=65535;for(a>t.pending_buf_size-5&&(a=t.pending_buf_size-5);;){if(t.lookahead<=1){if(H(t),0===t.lookahead&&e===d)return A;if(0===t.lookahead)break}t.strstart+=t.lookahead,t.lookahead=0;var i=t.block_start+a;if((0===t.strstart||t.strstart>=i)&&(t.lookahead=t.strstart-i,t.strstart=i,U(t,!1),0===t.strm.avail_out))return A;if(t.strstart-t.block_start>=t.w_size-B&&(U(t,!1),0===t.strm.avail_out))return A}return t.insert=0,e===f?(U(t,!0),0===t.strm.avail_out?R:C):(t.strstart>t.block_start&&(U(t,!1),t.strm.avail_out),A)}),new M(4,4,8,4,j),new M(4,5,16,8,j),new M(4,6,32,32,j),new M(4,4,16,16,K),new M(8,16,32,32,K),new M(8,16,128,128,K),new M(8,32,128,256,K),new M(32,128,258,1024,K),new M(32,258,258,4096,K)],a.deflateInit=function(t,e){return G(t,e,p,15,8,0)},a.deflateInit2=G,a.deflateReset=q,a.deflateResetKeep=Y,a.deflateSetHeader=function(t,e){return t&&t.state?2!==t.state.wrap?g:(t.state.gzhead=e,b):g},a.deflate=function(t,e){var a,i,n,r;if(!t||!t.state||5<e||e<0)return t?N(t,g):g;if(i=t.state,!t.output||!t.input&&0!==t.avail_in||666===i.status&&e!==f)return N(t,0===t.avail_out?-5:g);if(i.strm=t,a=i.last_flush,i.last_flush=e,i.status===S)if(2===i.wrap)t.adler=0,T(i,31),T(i,139),T(i,8),i.gzhead?(T(i,(i.gzhead.text?1:0)+(i.gzhead.hcrc?2:0)+(i.gzhead.extra?4:0)+(i.gzhead.name?8:0)+(i.gzhead.comment?16:0)),T(i,255&i.gzhead.time),T(i,i.gzhead.time>>8&255),T(i,i.gzhead.time>>16&255),T(i,i.gzhead.time>>24&255),T(i,9===i.level?2:2<=i.strategy||i.level<2?4:0),T(i,255&i.gzhead.os),i.gzhead.extra&&i.gzhead.extra.length&&(T(i,255&i.gzhead.extra.length),T(i,i.gzhead.extra.length>>8&255)),i.gzhead.hcrc&&(t.adler=c(t.adler,i.pending_buf,i.pending,0)),i.gzindex=0,i.status=69):(T(i,0),T(i,0),T(i,0),T(i,0),T(i,0),T(i,9===i.level?2:2<=i.strategy||i.level<2?4:0),T(i,3),i.status=E);else{var s=p+(i.w_bits-8<<4)<<8;s|=(2<=i.strategy||i.level<2?0:i.level<6?1:6===i.level?2:3)<<6,0!==i.strstart&&(s|=32),s+=31-s%31,i.status=E,F(i,s),0!==i.strstart&&(F(i,t.adler>>>16),F(i,65535&t.adler)),t.adler=1}if(69===i.status)if(i.gzhead.extra){for(n=i.pending;i.gzindex<(65535&i.gzhead.extra.length)&&(i.pending!==i.pending_buf_size||(i.gzhead.hcrc&&i.pending>n&&(t.adler=c(t.adler,i.pending_buf,i.pending-n,n)),I(t),n=i.pending,i.pending!==i.pending_buf_size));)T(i,255&i.gzhead.extra[i.gzindex]),i.gzindex++;i.gzhead.hcrc&&i.pending>n&&(t.adler=c(t.adler,i.pending_buf,i.pending-n,n)),i.gzindex===i.gzhead.extra.length&&(i.gzindex=0,i.status=73)}else i.status=73;if(73===i.status)if(i.gzhead.name){n=i.pending;do{if(i.pending===i.pending_buf_size&&(i.gzhead.hcrc&&i.pending>n&&(t.adler=c(t.adler,i.pending_buf,i.pending-n,n)),I(t),n=i.pending,i.pending===i.pending_buf_size)){r=1;break}T(i,r=i.gzindex<i.gzhead.name.length?255&i.gzhead.name.charCodeAt(i.gzindex++):0)}while(0!==r);i.gzhead.hcrc&&i.pending>n&&(t.adler=c(t.adler,i.pending_buf,i.pending-n,n)),0===r&&(i.gzindex=0,i.status=91)}else i.status=91;if(91===i.status)if(i.gzhead.comment){n=i.pending;do{if(i.pending===i.pending_buf_size&&(i.gzhead.hcrc&&i.pending>n&&(t.adler=c(t.adler,i.pending_buf,i.pending-n,n)),I(t),n=i.pending,i.pending===i.pending_buf_size)){r=1;break}T(i,r=i.gzindex<i.gzhead.comment.length?255&i.gzhead.comment.charCodeAt(i.gzindex++):0)}while(0!==r);i.gzhead.hcrc&&i.pending>n&&(t.adler=c(t.adler,i.pending_buf,i.pending-n,n)),0===r&&(i.status=103)}else i.status=103;if(103===i.status&&(i.gzhead.hcrc?(i.pending+2>i.pending_buf_size&&I(t),i.pending+2<=i.pending_buf_size&&(T(i,255&t.adler),T(i,t.adler>>8&255),t.adler=0,i.status=E)):i.status=E),0!==i.pending){if(I(t),0===t.avail_out)return i.last_flush=-1,b}else if(0===t.avail_in&&O(e)<=O(a)&&e!==f)return N(t,-5);if(666===i.status&&0!==t.avail_in)return N(t,-5);if(0!==t.avail_in||0!==i.lookahead||e!==d&&666!==i.status){var o=2===i.strategy?function(t,e){for(var a;;){if(0===t.lookahead&&(H(t),0===t.lookahead)){if(e===d)return A;break}if(t.match_length=0,a=h._tr_tally(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++,a&&(U(t,!1),0===t.strm.avail_out))return A}return t.insert=0,e===f?(U(t,!0),0===t.strm.avail_out?R:C):t.last_lit&&(U(t,!1),0===t.strm.avail_out)?A:Z}(i,e):3===i.strategy?function(t,e){for(var a,i,n,r,s=t.window;;){if(t.lookahead<=z){if(H(t),t.lookahead<=z&&e===d)return A;if(0===t.lookahead)break}if(t.match_length=0,t.lookahead>=x&&0<t.strstart&&(i=s[n=t.strstart-1])===s[++n]&&i===s[++n]&&i===s[++n]){r=t.strstart+z;do{}while(i===s[++n]&&i===s[++n]&&i===s[++n]&&i===s[++n]&&i===s[++n]&&i===s[++n]&&i===s[++n]&&i===s[++n]&&n<r);t.match_length=z-(r-n),t.match_length>t.lookahead&&(t.match_length=t.lookahead)}if(t.match_length>=x?(a=h._tr_tally(t,1,t.match_length-x),t.lookahead-=t.match_length,t.strstart+=t.match_length,t.match_length=0):(a=h._tr_tally(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++),a&&(U(t,!1),0===t.strm.avail_out))return A}return t.insert=0,e===f?(U(t,!0),0===t.strm.avail_out?R:C):t.last_lit&&(U(t,!1),0===t.strm.avail_out)?A:Z}(i,e):l[i.level].func(i,e);if(o!==R&&o!==C||(i.status=666),o===A||o===R)return 0===t.avail_out&&(i.last_flush=-1),b;if(o===Z&&(1===e?h._tr_align(i):5!==e&&(h._tr_stored_block(i,0,0,!1),3===e&&(D(i.head),0===i.lookahead&&(i.strstart=0,i.block_start=0,i.insert=0))),I(t),0===t.avail_out))return i.last_flush=-1,b}return e!==f?b:i.wrap<=0?1:(2===i.wrap?(T(i,255&t.adler),T(i,t.adler>>8&255),T(i,t.adler>>16&255),T(i,t.adler>>24&255),T(i,255&t.total_in),T(i,t.total_in>>8&255),T(i,t.total_in>>16&255),T(i,t.total_in>>24&255)):(F(i,t.adler>>>16),F(i,65535&t.adler)),I(t),0<i.wrap&&(i.wrap=-i.wrap),0!==i.pending?b:1)},a.deflateEnd=function(t){var e;return t&&t.state?(e=t.state.status)!==S&&69!==e&&73!==e&&91!==e&&103!==e&&e!==E&&666!==e?N(t,g):(t.state=null,e===E?N(t,-3):b):g},a.deflateSetDictionary=function(t,e){var a,i,n,r,s,o,l,h,d=e.length;if(!t||!t.state)return g;if(2===(r=(a=t.state).wrap)||1===r&&a.status!==S||a.lookahead)return g;for(1===r&&(t.adler=u(t.adler,e,d,0)),a.wrap=0,d>=a.w_size&&(0===r&&(D(a.head),a.strstart=0,a.block_start=0,a.insert=0),h=new _.Buf8(a.w_size),_.arraySet(h,e,d-a.w_size,a.w_size,0),e=h,d=a.w_size),s=t.avail_in,o=t.next_in,l=t.input,t.avail_in=d,t.next_in=0,t.input=e,H(a);a.lookahead>=x;){for(i=a.strstart,n=a.lookahead-(x-1);a.ins_h=(a.ins_h<<a.hash_shift^a.window[i+x-1])&a.hash_mask,a.prev[i&a.w_mask]=a.head[a.ins_h],a.head[a.ins_h]=i,i++,--n;);a.strstart=i,a.lookahead=x-1,H(a)}return a.strstart+=a.lookahead,a.block_start=a.strstart,a.insert=a.lookahead,a.lookahead=0,a.match_length=a.prev_length=x-1,a.match_available=0,t.next_in=o,t.input=l,t.avail_in=s,a.wrap=r,b},a.deflateInfo="pako deflate (from Nodeca project)"},{"../utils/common":3,"./adler32":5,"./crc32":7,"./messages":13,"./trees":14}],9:[function(t,e,a){"use strict";e.exports=function(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1}},{}],10:[function(t,e,a){"use strict";e.exports=function(t,e){var a,i,n,r,s,o,l,h,d,f,_,u,c,b,g,m,w,p,v,k,y,x,z,B,S;a=t.state,i=t.next_in,B=t.input,n=i+(t.avail_in-5),r=t.next_out,S=t.output,s=r-(e-t.avail_out),o=r+(t.avail_out-257),l=a.dmax,h=a.wsize,d=a.whave,f=a.wnext,_=a.window,u=a.hold,c=a.bits,b=a.lencode,g=a.distcode,m=(1<<a.lenbits)-1,w=(1<<a.distbits)-1;t:do{c<15&&(u+=B[i++]<<c,c+=8,u+=B[i++]<<c,c+=8),p=b[u&m];e:for(;;){if(u>>>=v=p>>>24,c-=v,0===(v=p>>>16&255))S[r++]=65535&p;else{if(!(16&v)){if(0==(64&v)){p=b[(65535&p)+(u&(1<<v)-1)];continue e}if(32&v){a.mode=12;break t}t.msg="invalid literal/length code",a.mode=30;break t}k=65535&p,(v&=15)&&(c<v&&(u+=B[i++]<<c,c+=8),k+=u&(1<<v)-1,u>>>=v,c-=v),c<15&&(u+=B[i++]<<c,c+=8,u+=B[i++]<<c,c+=8),p=g[u&w];a:for(;;){if(u>>>=v=p>>>24,c-=v,!(16&(v=p>>>16&255))){if(0==(64&v)){p=g[(65535&p)+(u&(1<<v)-1)];continue a}t.msg="invalid distance code",a.mode=30;break t}if(y=65535&p,c<(v&=15)&&(u+=B[i++]<<c,(c+=8)<v&&(u+=B[i++]<<c,c+=8)),l<(y+=u&(1<<v)-1)){t.msg="invalid distance too far back",a.mode=30;break t}if(u>>>=v,c-=v,(v=r-s)<y){if(d<(v=y-v)&&a.sane){t.msg="invalid distance too far back",a.mode=30;break t}if(z=_,(x=0)===f){if(x+=h-v,v<k){for(k-=v;S[r++]=_[x++],--v;);x=r-y,z=S}}else if(f<v){if(x+=h+f-v,(v-=f)<k){for(k-=v;S[r++]=_[x++],--v;);if(x=0,f<k){for(k-=v=f;S[r++]=_[x++],--v;);x=r-y,z=S}}}else if(x+=f-v,v<k){for(k-=v;S[r++]=_[x++],--v;);x=r-y,z=S}for(;2<k;)S[r++]=z[x++],S[r++]=z[x++],S[r++]=z[x++],k-=3;k&&(S[r++]=z[x++],1<k&&(S[r++]=z[x++]))}else{for(x=r-y;S[r++]=S[x++],S[r++]=S[x++],S[r++]=S[x++],2<(k-=3););k&&(S[r++]=S[x++],1<k&&(S[r++]=S[x++]))}break}}break}}while(i<n&&r<o);i-=k=c>>3,u&=(1<<(c-=k<<3))-1,t.next_in=i,t.next_out=r,t.avail_in=i<n?n-i+5:5-(i-n),t.avail_out=r<o?o-r+257:257-(r-o),a.hold=u,a.bits=c}},{}],11:[function(t,e,a){"use strict";var Z=t("../utils/common"),R=t("./adler32"),C=t("./crc32"),N=t("./inffast"),O=t("./inftrees"),D=1,I=2,U=0,T=-2,F=1,i=852,n=592;function L(t){return(t>>>24&255)+(t>>>8&65280)+((65280&t)<<8)+((255&t)<<24)}function r(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new Z.Buf16(320),this.work=new Z.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function s(t){var e;return t&&t.state?(e=t.state,t.total_in=t.total_out=e.total=0,t.msg="",e.wrap&&(t.adler=1&e.wrap),e.mode=F,e.last=0,e.havedict=0,e.dmax=32768,e.head=null,e.hold=0,e.bits=0,e.lencode=e.lendyn=new Z.Buf32(i),e.distcode=e.distdyn=new Z.Buf32(n),e.sane=1,e.back=-1,U):T}function o(t){var e;return t&&t.state?((e=t.state).wsize=0,e.whave=0,e.wnext=0,s(t)):T}function l(t,e){var a,i;return t&&t.state?(i=t.state,e<0?(a=0,e=-e):(a=1+(e>>4),e<48&&(e&=15)),e&&(e<8||15<e)?T:(null!==i.window&&i.wbits!==e&&(i.window=null),i.wrap=a,i.wbits=e,o(t))):T}function h(t,e){var a,i;return t?(i=new r,(t.state=i).window=null,(a=l(t,e))!==U&&(t.state=null),a):T}var d,f,_=!0;function H(t){if(_){var e;for(d=new Z.Buf32(512),f=new Z.Buf32(32),e=0;e<144;)t.lens[e++]=8;for(;e<256;)t.lens[e++]=9;for(;e<280;)t.lens[e++]=7;for(;e<288;)t.lens[e++]=8;for(O(D,t.lens,0,288,d,0,t.work,{bits:9}),e=0;e<32;)t.lens[e++]=5;O(I,t.lens,0,32,f,0,t.work,{bits:5}),_=!1}t.lencode=d,t.lenbits=9,t.distcode=f,t.distbits=5}function j(t,e,a,i){var n,r=t.state;return null===r.window&&(r.wsize=1<<r.wbits,r.wnext=0,r.whave=0,r.window=new Z.Buf8(r.wsize)),i>=r.wsize?(Z.arraySet(r.window,e,a-r.wsize,r.wsize,0),r.wnext=0,r.whave=r.wsize):(i<(n=r.wsize-r.wnext)&&(n=i),Z.arraySet(r.window,e,a-i,n,r.wnext),(i-=n)?(Z.arraySet(r.window,e,a-i,i,0),r.wnext=i,r.whave=r.wsize):(r.wnext+=n,r.wnext===r.wsize&&(r.wnext=0),r.whave<r.wsize&&(r.whave+=n))),0}a.inflateReset=o,a.inflateReset2=l,a.inflateResetKeep=s,a.inflateInit=function(t){return h(t,15)},a.inflateInit2=h,a.inflate=function(t,e){var a,i,n,r,s,o,l,h,d,f,_,u,c,b,g,m,w,p,v,k,y,x,z,B,S=0,E=new Z.Buf8(4),A=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];if(!t||!t.state||!t.output||!t.input&&0!==t.avail_in)return T;12===(a=t.state).mode&&(a.mode=13),s=t.next_out,n=t.output,l=t.avail_out,r=t.next_in,i=t.input,o=t.avail_in,h=a.hold,d=a.bits,f=o,_=l,x=U;t:for(;;)switch(a.mode){case F:if(0===a.wrap){a.mode=13;break}for(;d<16;){if(0===o)break t;o--,h+=i[r++]<<d,d+=8}if(2&a.wrap&&35615===h){E[a.check=0]=255&h,E[1]=h>>>8&255,a.check=C(a.check,E,2,0),d=h=0,a.mode=2;break}if(a.flags=0,a.head&&(a.head.done=!1),!(1&a.wrap)||(((255&h)<<8)+(h>>8))%31){t.msg="incorrect header check",a.mode=30;break}if(8!=(15&h)){t.msg="unknown compression method",a.mode=30;break}if(d-=4,y=8+(15&(h>>>=4)),0===a.wbits)a.wbits=y;else if(y>a.wbits){t.msg="invalid window size",a.mode=30;break}a.dmax=1<<y,t.adler=a.check=1,a.mode=512&h?10:12,d=h=0;break;case 2:for(;d<16;){if(0===o)break t;o--,h+=i[r++]<<d,d+=8}if(a.flags=h,8!=(255&a.flags)){t.msg="unknown compression method",a.mode=30;break}if(57344&a.flags){t.msg="unknown header flags set",a.mode=30;break}a.head&&(a.head.text=h>>8&1),512&a.flags&&(E[0]=255&h,E[1]=h>>>8&255,a.check=C(a.check,E,2,0)),d=h=0,a.mode=3;case 3:for(;d<32;){if(0===o)break t;o--,h+=i[r++]<<d,d+=8}a.head&&(a.head.time=h),512&a.flags&&(E[0]=255&h,E[1]=h>>>8&255,E[2]=h>>>16&255,E[3]=h>>>24&255,a.check=C(a.check,E,4,0)),d=h=0,a.mode=4;case 4:for(;d<16;){if(0===o)break t;o--,h+=i[r++]<<d,d+=8}a.head&&(a.head.xflags=255&h,a.head.os=h>>8),512&a.flags&&(E[0]=255&h,E[1]=h>>>8&255,a.check=C(a.check,E,2,0)),d=h=0,a.mode=5;case 5:if(1024&a.flags){for(;d<16;){if(0===o)break t;o--,h+=i[r++]<<d,d+=8}a.length=h,a.head&&(a.head.extra_len=h),512&a.flags&&(E[0]=255&h,E[1]=h>>>8&255,a.check=C(a.check,E,2,0)),d=h=0}else a.head&&(a.head.extra=null);a.mode=6;case 6:if(1024&a.flags&&(o<(u=a.length)&&(u=o),u&&(a.head&&(y=a.head.extra_len-a.length,a.head.extra||(a.head.extra=new Array(a.head.extra_len)),Z.arraySet(a.head.extra,i,r,u,y)),512&a.flags&&(a.check=C(a.check,i,u,r)),o-=u,r+=u,a.length-=u),a.length))break t;a.length=0,a.mode=7;case 7:if(2048&a.flags){if(0===o)break t;for(u=0;y=i[r+u++],a.head&&y&&a.length<65536&&(a.head.name+=String.fromCharCode(y)),y&&u<o;);if(512&a.flags&&(a.check=C(a.check,i,u,r)),o-=u,r+=u,y)break t}else a.head&&(a.head.name=null);a.length=0,a.mode=8;case 8:if(4096&a.flags){if(0===o)break t;for(u=0;y=i[r+u++],a.head&&y&&a.length<65536&&(a.head.comment+=String.fromCharCode(y)),y&&u<o;);if(512&a.flags&&(a.check=C(a.check,i,u,r)),o-=u,r+=u,y)break t}else a.head&&(a.head.comment=null);a.mode=9;case 9:if(512&a.flags){for(;d<16;){if(0===o)break t;o--,h+=i[r++]<<d,d+=8}if(h!==(65535&a.check)){t.msg="header crc mismatch",a.mode=30;break}d=h=0}a.head&&(a.head.hcrc=a.flags>>9&1,a.head.done=!0),t.adler=a.check=0,a.mode=12;break;case 10:for(;d<32;){if(0===o)break t;o--,h+=i[r++]<<d,d+=8}t.adler=a.check=L(h),d=h=0,a.mode=11;case 11:if(0===a.havedict)return t.next_out=s,t.avail_out=l,t.next_in=r,t.avail_in=o,a.hold=h,a.bits=d,2;t.adler=a.check=1,a.mode=12;case 12:if(5===e||6===e)break t;case 13:if(a.last){h>>>=7&d,d-=7&d,a.mode=27;break}for(;d<3;){if(0===o)break t;o--,h+=i[r++]<<d,d+=8}switch(a.last=1&h,d-=1,3&(h>>>=1)){case 0:a.mode=14;break;case 1:if(H(a),a.mode=20,6!==e)break;h>>>=2,d-=2;break t;case 2:a.mode=17;break;case 3:t.msg="invalid block type",a.mode=30}h>>>=2,d-=2;break;case 14:for(h>>>=7&d,d-=7&d;d<32;){if(0===o)break t;o--,h+=i[r++]<<d,d+=8}if((65535&h)!=(h>>>16^65535)){t.msg="invalid stored block lengths",a.mode=30;break}if(a.length=65535&h,d=h=0,a.mode=15,6===e)break t;case 15:a.mode=16;case 16:if(u=a.length){if(o<u&&(u=o),l<u&&(u=l),0===u)break t;Z.arraySet(n,i,r,u,s),o-=u,r+=u,l-=u,s+=u,a.length-=u;break}a.mode=12;break;case 17:for(;d<14;){if(0===o)break t;o--,h+=i[r++]<<d,d+=8}if(a.nlen=257+(31&h),h>>>=5,d-=5,a.ndist=1+(31&h),h>>>=5,d-=5,a.ncode=4+(15&h),h>>>=4,d-=4,286<a.nlen||30<a.ndist){t.msg="too many length or distance symbols",a.mode=30;break}a.have=0,a.mode=18;case 18:for(;a.have<a.ncode;){for(;d<3;){if(0===o)break t;o--,h+=i[r++]<<d,d+=8}a.lens[A[a.have++]]=7&h,h>>>=3,d-=3}for(;a.have<19;)a.lens[A[a.have++]]=0;if(a.lencode=a.lendyn,a.lenbits=7,z={bits:a.lenbits},x=O(0,a.lens,0,19,a.lencode,0,a.work,z),a.lenbits=z.bits,x){t.msg="invalid code lengths set",a.mode=30;break}a.have=0,a.mode=19;case 19:for(;a.have<a.nlen+a.ndist;){for(;m=(S=a.lencode[h&(1<<a.lenbits)-1])>>>16&255,w=65535&S,!((g=S>>>24)<=d);){if(0===o)break t;o--,h+=i[r++]<<d,d+=8}if(w<16)h>>>=g,d-=g,a.lens[a.have++]=w;else{if(16===w){for(B=g+2;d<B;){if(0===o)break t;o--,h+=i[r++]<<d,d+=8}if(h>>>=g,d-=g,0===a.have){t.msg="invalid bit length repeat",a.mode=30;break}y=a.lens[a.have-1],u=3+(3&h),h>>>=2,d-=2}else if(17===w){for(B=g+3;d<B;){if(0===o)break t;o--,h+=i[r++]<<d,d+=8}d-=g,y=0,u=3+(7&(h>>>=g)),h>>>=3,d-=3}else{for(B=g+7;d<B;){if(0===o)break t;o--,h+=i[r++]<<d,d+=8}d-=g,y=0,u=11+(127&(h>>>=g)),h>>>=7,d-=7}if(a.have+u>a.nlen+a.ndist){t.msg="invalid bit length repeat",a.mode=30;break}for(;u--;)a.lens[a.have++]=y}}if(30===a.mode)break;if(0===a.lens[256]){t.msg="invalid code -- missing end-of-block",a.mode=30;break}if(a.lenbits=9,z={bits:a.lenbits},x=O(D,a.lens,0,a.nlen,a.lencode,0,a.work,z),a.lenbits=z.bits,x){t.msg="invalid literal/lengths set",a.mode=30;break}if(a.distbits=6,a.distcode=a.distdyn,z={bits:a.distbits},x=O(I,a.lens,a.nlen,a.ndist,a.distcode,0,a.work,z),a.distbits=z.bits,x){t.msg="invalid distances set",a.mode=30;break}if(a.mode=20,6===e)break t;case 20:a.mode=21;case 21:if(6<=o&&258<=l){t.next_out=s,t.avail_out=l,t.next_in=r,t.avail_in=o,a.hold=h,a.bits=d,N(t,_),s=t.next_out,n=t.output,l=t.avail_out,r=t.next_in,i=t.input,o=t.avail_in,h=a.hold,d=a.bits,12===a.mode&&(a.back=-1);break}for(a.back=0;m=(S=a.lencode[h&(1<<a.lenbits)-1])>>>16&255,w=65535&S,!((g=S>>>24)<=d);){if(0===o)break t;o--,h+=i[r++]<<d,d+=8}if(m&&0==(240&m)){for(p=g,v=m,k=w;m=(S=a.lencode[k+((h&(1<<p+v)-1)>>p)])>>>16&255,w=65535&S,!(p+(g=S>>>24)<=d);){if(0===o)break t;o--,h+=i[r++]<<d,d+=8}h>>>=p,d-=p,a.back+=p}if(h>>>=g,d-=g,a.back+=g,a.length=w,0===m){a.mode=26;break}if(32&m){a.back=-1,a.mode=12;break}if(64&m){t.msg="invalid literal/length code",a.mode=30;break}a.extra=15&m,a.mode=22;case 22:if(a.extra){for(B=a.extra;d<B;){if(0===o)break t;o--,h+=i[r++]<<d,d+=8}a.length+=h&(1<<a.extra)-1,h>>>=a.extra,d-=a.extra,a.back+=a.extra}a.was=a.length,a.mode=23;case 23:for(;m=(S=a.distcode[h&(1<<a.distbits)-1])>>>16&255,w=65535&S,!((g=S>>>24)<=d);){if(0===o)break t;o--,h+=i[r++]<<d,d+=8}if(0==(240&m)){for(p=g,v=m,k=w;m=(S=a.distcode[k+((h&(1<<p+v)-1)>>p)])>>>16&255,w=65535&S,!(p+(g=S>>>24)<=d);){if(0===o)break t;o--,h+=i[r++]<<d,d+=8}h>>>=p,d-=p,a.back+=p}if(h>>>=g,d-=g,a.back+=g,64&m){t.msg="invalid distance code",a.mode=30;break}a.offset=w,a.extra=15&m,a.mode=24;case 24:if(a.extra){for(B=a.extra;d<B;){if(0===o)break t;o--,h+=i[r++]<<d,d+=8}a.offset+=h&(1<<a.extra)-1,h>>>=a.extra,d-=a.extra,a.back+=a.extra}if(a.offset>a.dmax){t.msg="invalid distance too far back",a.mode=30;break}a.mode=25;case 25:if(0===l)break t;if(u=_-l,a.offset>u){if((u=a.offset-u)>a.whave&&a.sane){t.msg="invalid distance too far back",a.mode=30;break}c=u>a.wnext?(u-=a.wnext,a.wsize-u):a.wnext-u,u>a.length&&(u=a.length),b=a.window}else b=n,c=s-a.offset,u=a.length;for(l<u&&(u=l),l-=u,a.length-=u;n[s++]=b[c++],--u;);0===a.length&&(a.mode=21);break;case 26:if(0===l)break t;n[s++]=a.length,l--,a.mode=21;break;case 27:if(a.wrap){for(;d<32;){if(0===o)break t;o--,h|=i[r++]<<d,d+=8}if(_-=l,t.total_out+=_,a.total+=_,_&&(t.adler=a.check=a.flags?C(a.check,n,_,s-_):R(a.check,n,_,s-_)),_=l,(a.flags?h:L(h))!==a.check){t.msg="incorrect data check",a.mode=30;break}d=h=0}a.mode=28;case 28:if(a.wrap&&a.flags){for(;d<32;){if(0===o)break t;o--,h+=i[r++]<<d,d+=8}if(h!==(4294967295&a.total)){t.msg="incorrect length check",a.mode=30;break}d=h=0}a.mode=29;case 29:x=1;break t;case 30:x=-3;break t;case 31:return-4;case 32:default:return T}return t.next_out=s,t.avail_out=l,t.next_in=r,t.avail_in=o,a.hold=h,a.bits=d,(a.wsize||_!==t.avail_out&&a.mode<30&&(a.mode<27||4!==e))&&j(t,t.output,t.next_out,_-t.avail_out)?(a.mode=31,-4):(f-=t.avail_in,_-=t.avail_out,t.total_in+=f,t.total_out+=_,a.total+=_,a.wrap&&_&&(t.adler=a.check=a.flags?C(a.check,n,_,t.next_out-_):R(a.check,n,_,t.next_out-_)),t.data_type=a.bits+(a.last?64:0)+(12===a.mode?128:0)+(20===a.mode||15===a.mode?256:0),(0===f&&0===_||4===e)&&x===U&&(x=-5),x)},a.inflateEnd=function(t){if(!t||!t.state)return T;var e=t.state;return e.window&&(e.window=null),t.state=null,U},a.inflateGetHeader=function(t,e){var a;return t&&t.state?0==(2&(a=t.state).wrap)?T:((a.head=e).done=!1,U):T},a.inflateSetDictionary=function(t,e){var a,i=e.length;return t&&t.state?0!==(a=t.state).wrap&&11!==a.mode?T:11===a.mode&&R(1,e,i,0)!==a.check?-3:j(t,e,i,i)?(a.mode=31,-4):(a.havedict=1,U):T},a.inflateInfo="pako inflate (from Nodeca project)"},{"../utils/common":3,"./adler32":5,"./crc32":7,"./inffast":10,"./inftrees":12}],12:[function(t,e,a){"use strict";var D=t("../utils/common"),I=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],U=[16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78],T=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0],F=[16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64];e.exports=function(t,e,a,i,n,r,s,o){var l,h,d,f,_,u,c,b,g,m=o.bits,w=0,p=0,v=0,k=0,y=0,x=0,z=0,B=0,S=0,E=0,A=null,Z=0,R=new D.Buf16(16),C=new D.Buf16(16),N=null,O=0;for(w=0;w<=15;w++)R[w]=0;for(p=0;p<i;p++)R[e[a+p]]++;for(y=m,k=15;1<=k&&0===R[k];k--);if(k<y&&(y=k),0===k)return n[r++]=20971520,n[r++]=20971520,o.bits=1,0;for(v=1;v<k&&0===R[v];v++);for(y<v&&(y=v),w=B=1;w<=15;w++)if(B<<=1,(B-=R[w])<0)return-1;if(0<B&&(0===t||1!==k))return-1;for(C[1]=0,w=1;w<15;w++)C[w+1]=C[w]+R[w];for(p=0;p<i;p++)0!==e[a+p]&&(s[C[e[a+p]]++]=p);if(u=0===t?(A=N=s,19):1===t?(A=I,Z-=257,N=U,O-=257,256):(A=T,N=F,-1),w=v,_=r,z=p=E=0,d=-1,f=(S=1<<(x=y))-1,1===t&&852<S||2===t&&592<S)return 1;for(;;){for(c=w-z,g=s[p]<u?(b=0,s[p]):s[p]>u?(b=N[O+s[p]],A[Z+s[p]]):(b=96,0),l=1<<w-z,v=h=1<<x;n[_+(E>>z)+(h-=l)]=c<<24|b<<16|g|0,0!==h;);for(l=1<<w-1;E&l;)l>>=1;if(0!==l?(E&=l-1,E+=l):E=0,p++,0==--R[w]){if(w===k)break;w=e[a+s[p]]}if(y<w&&(E&f)!==d){for(0===z&&(z=y),_+=v,B=1<<(x=w-z);x+z<k&&!((B-=R[x+z])<=0);)x++,B<<=1;if(S+=1<<x,1===t&&852<S||2===t&&592<S)return 1;n[d=E&f]=y<<24|x<<16|_-r|0}}return 0!==E&&(n[_+E]=w-z<<24|64<<16|0),o.bits=y,0}},{"../utils/common":3}],13:[function(t,e,a){"use strict";e.exports={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"}},{}],14:[function(t,e,a){"use strict";var l=t("../utils/common"),o=0,h=1;function i(t){for(var e=t.length;0<=--e;)t[e]=0}var d=0,s=29,f=256,_=f+1+s,u=30,c=19,g=2*_+1,m=15,n=16,b=7,w=256,p=16,v=17,k=18,y=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],x=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],z=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],B=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],S=new Array(2*(_+2));i(S);var E=new Array(2*u);i(E);var A=new Array(512);i(A);var Z=new Array(256);i(Z);var R=new Array(s);i(R);var C,N,O,D=new Array(u);function I(t,e,a,i,n){this.static_tree=t,this.extra_bits=e,this.extra_base=a,this.elems=i,this.max_length=n,this.has_stree=t&&t.length}function r(t,e){this.dyn_tree=t,this.max_code=0,this.stat_desc=e}function U(t){return t<256?A[t]:A[256+(t>>>7)]}function T(t,e){t.pending_buf[t.pending++]=255&e,t.pending_buf[t.pending++]=e>>>8&255}function F(t,e,a){t.bi_valid>n-a?(t.bi_buf|=e<<t.bi_valid&65535,T(t,t.bi_buf),t.bi_buf=e>>n-t.bi_valid,t.bi_valid+=a-n):(t.bi_buf|=e<<t.bi_valid&65535,t.bi_valid+=a)}function L(t,e,a){F(t,a[2*e],a[2*e+1])}function H(t,e){for(var a=0;a|=1&t,t>>>=1,a<<=1,0<--e;);return a>>>1}function j(t,e,a){var i,n,r=new Array(m+1),s=0;for(i=1;i<=m;i++)r[i]=s=s+a[i-1]<<1;for(n=0;n<=e;n++){var o=t[2*n+1];0!==o&&(t[2*n]=H(r[o]++,o))}}function K(t){var e;for(e=0;e<_;e++)t.dyn_ltree[2*e]=0;for(e=0;e<u;e++)t.dyn_dtree[2*e]=0;for(e=0;e<c;e++)t.bl_tree[2*e]=0;t.dyn_ltree[2*w]=1,t.opt_len=t.static_len=0,t.last_lit=t.matches=0}function M(t){8<t.bi_valid?T(t,t.bi_buf):0<t.bi_valid&&(t.pending_buf[t.pending++]=t.bi_buf),t.bi_buf=0,t.bi_valid=0}function P(t,e,a,i){var n=2*e,r=2*a;return t[n]<t[r]||t[n]===t[r]&&i[e]<=i[a]}function Y(t,e,a){for(var i=t.heap[a],n=a<<1;n<=t.heap_len&&(n<t.heap_len&&P(e,t.heap[n+1],t.heap[n],t.depth)&&n++,!P(e,i,t.heap[n],t.depth));)t.heap[a]=t.heap[n],a=n,n<<=1;t.heap[a]=i}function q(t,e,a){var i,n,r,s,o=0;if(0!==t.last_lit)for(;i=t.pending_buf[t.d_buf+2*o]<<8|t.pending_buf[t.d_buf+2*o+1],n=t.pending_buf[t.l_buf+o],o++,0===i?L(t,n,e):(L(t,(r=Z[n])+f+1,e),0!==(s=y[r])&&F(t,n-=R[r],s),L(t,r=U(--i),a),0!==(s=x[r])&&F(t,i-=D[r],s)),o<t.last_lit;);L(t,w,e)}function G(t,e){var a,i,n,r=e.dyn_tree,s=e.stat_desc.static_tree,o=e.stat_desc.has_stree,l=e.stat_desc.elems,h=-1;for(t.heap_len=0,t.heap_max=g,a=0;a<l;a++)0!==r[2*a]?(t.heap[++t.heap_len]=h=a,t.depth[a]=0):r[2*a+1]=0;for(;t.heap_len<2;)r[2*(n=t.heap[++t.heap_len]=h<2?++h:0)]=1,t.depth[n]=0,t.opt_len--,o&&(t.static_len-=s[2*n+1]);for(e.max_code=h,a=t.heap_len>>1;1<=a;a--)Y(t,r,a);for(n=l;a=t.heap[1],t.heap[1]=t.heap[t.heap_len--],Y(t,r,1),i=t.heap[1],t.heap[--t.heap_max]=a,t.heap[--t.heap_max]=i,r[2*n]=r[2*a]+r[2*i],t.depth[n]=(t.depth[a]>=t.depth[i]?t.depth[a]:t.depth[i])+1,r[2*a+1]=r[2*i+1]=n,t.heap[1]=n++,Y(t,r,1),2<=t.heap_len;);t.heap[--t.heap_max]=t.heap[1],function(t,e){var a,i,n,r,s,o,l=e.dyn_tree,h=e.max_code,d=e.stat_desc.static_tree,f=e.stat_desc.has_stree,_=e.stat_desc.extra_bits,u=e.stat_desc.extra_base,c=e.stat_desc.max_length,b=0;for(r=0;r<=m;r++)t.bl_count[r]=0;for(l[2*t.heap[t.heap_max]+1]=0,a=t.heap_max+1;a<g;a++)c<(r=l[2*l[2*(i=t.heap[a])+1]+1]+1)&&(r=c,b++),l[2*i+1]=r,h<i||(t.bl_count[r]++,s=0,u<=i&&(s=_[i-u]),o=l[2*i],t.opt_len+=o*(r+s),f&&(t.static_len+=o*(d[2*i+1]+s)));if(0!==b){do{for(r=c-1;0===t.bl_count[r];)r--;t.bl_count[r]--,t.bl_count[r+1]+=2,t.bl_count[c]--,b-=2}while(0<b);for(r=c;0!==r;r--)for(i=t.bl_count[r];0!==i;)h<(n=t.heap[--a])||(l[2*n+1]!==r&&(t.opt_len+=(r-l[2*n+1])*l[2*n],l[2*n+1]=r),i--)}}(t,e),j(r,h,t.bl_count)}function X(t,e,a){var i,n,r=-1,s=e[1],o=0,l=7,h=4;for(0===s&&(l=138,h=3),e[2*(a+1)+1]=65535,i=0;i<=a;i++)n=s,s=e[2*(i+1)+1],++o<l&&n===s||(o<h?t.bl_tree[2*n]+=o:0!==n?(n!==r&&t.bl_tree[2*n]++,t.bl_tree[2*p]++):o<=10?t.bl_tree[2*v]++:t.bl_tree[2*k]++,r=n,h=(o=0)===s?(l=138,3):n===s?(l=6,3):(l=7,4))}function W(t,e,a){var i,n,r=-1,s=e[1],o=0,l=7,h=4;for(0===s&&(l=138,h=3),i=0;i<=a;i++)if(n=s,s=e[2*(i+1)+1],!(++o<l&&n===s)){if(o<h)for(;L(t,n,t.bl_tree),0!=--o;);else 0!==n?(n!==r&&(L(t,n,t.bl_tree),o--),L(t,p,t.bl_tree),F(t,o-3,2)):o<=10?(L(t,v,t.bl_tree),F(t,o-3,3)):(L(t,k,t.bl_tree),F(t,o-11,7));r=n,h=(o=0)===s?(l=138,3):n===s?(l=6,3):(l=7,4)}}i(D);var J=!1;function Q(t,e,a,i){var n,r,s,o;F(t,(d<<1)+(i?1:0),3),r=e,s=a,o=!0,M(n=t),o&&(T(n,s),T(n,~s)),l.arraySet(n.pending_buf,n.window,r,s,n.pending),n.pending+=s}a._tr_init=function(t){J||(function(){var t,e,a,i,n,r=new Array(m+1);for(i=a=0;i<s-1;i++)for(R[i]=a,t=0;t<1<<y[i];t++)Z[a++]=i;for(Z[a-1]=i,i=n=0;i<16;i++)for(D[i]=n,t=0;t<1<<x[i];t++)A[n++]=i;for(n>>=7;i<u;i++)for(D[i]=n<<7,t=0;t<1<<x[i]-7;t++)A[256+n++]=i;for(e=0;e<=m;e++)r[e]=0;for(t=0;t<=143;)S[2*t+1]=8,t++,r[8]++;for(;t<=255;)S[2*t+1]=9,t++,r[9]++;for(;t<=279;)S[2*t+1]=7,t++,r[7]++;for(;t<=287;)S[2*t+1]=8,t++,r[8]++;for(j(S,_+1,r),t=0;t<u;t++)E[2*t+1]=5,E[2*t]=H(t,5);C=new I(S,y,f+1,_,m),N=new I(E,x,0,u,m),O=new I(new Array(0),z,0,c,b)}(),J=!0),t.l_desc=new r(t.dyn_ltree,C),t.d_desc=new r(t.dyn_dtree,N),t.bl_desc=new r(t.bl_tree,O),t.bi_buf=0,t.bi_valid=0,K(t)},a._tr_stored_block=Q,a._tr_flush_block=function(t,e,a,i){var n,r,s=0;0<t.level?(2===t.strm.data_type&&(t.strm.data_type=function(t){var e,a=4093624447;for(e=0;e<=31;e++,a>>>=1)if(1&a&&0!==t.dyn_ltree[2*e])return o;if(0!==t.dyn_ltree[18]||0!==t.dyn_ltree[20]||0!==t.dyn_ltree[26])return h;for(e=32;e<f;e++)if(0!==t.dyn_ltree[2*e])return h;return o}(t)),G(t,t.l_desc),G(t,t.d_desc),s=function(t){var e;for(X(t,t.dyn_ltree,t.l_desc.max_code),X(t,t.dyn_dtree,t.d_desc.max_code),G(t,t.bl_desc),e=c-1;3<=e&&0===t.bl_tree[2*B[e]+1];e--);return t.opt_len+=3*(e+1)+5+5+4,e}(t),n=t.opt_len+3+7>>>3,(r=t.static_len+3+7>>>3)<=n&&(n=r)):n=r=a+5,a+4<=n&&-1!==e?Q(t,e,a,i):4===t.strategy||r===n?(F(t,2+(i?1:0),3),q(t,S,E)):(F(t,4+(i?1:0),3),function(t,e,a,i){var n;for(F(t,e-257,5),F(t,a-1,5),F(t,i-4,4),n=0;n<i;n++)F(t,t.bl_tree[2*B[n]+1],3);W(t,t.dyn_ltree,e-1),W(t,t.dyn_dtree,a-1)}(t,t.l_desc.max_code+1,t.d_desc.max_code+1,s+1),q(t,t.dyn_ltree,t.dyn_dtree)),K(t),i&&M(t)},a._tr_tally=function(t,e,a){return t.pending_buf[t.d_buf+2*t.last_lit]=e>>>8&255,t.pending_buf[t.d_buf+2*t.last_lit+1]=255&e,t.pending_buf[t.l_buf+t.last_lit]=255&a,t.last_lit++,0===e?t.dyn_ltree[2*a]++:(t.matches++,e--,t.dyn_ltree[2*(Z[a]+f+1)]++,t.dyn_dtree[2*U(e)]++),t.last_lit===t.lit_bufsize-1},a._tr_align=function(t){var e;F(t,2,3),L(t,w,S),16===(e=t).bi_valid?(T(e,e.bi_buf),e.bi_buf=0,e.bi_valid=0):8<=e.bi_valid&&(e.pending_buf[e.pending++]=255&e.bi_buf,e.bi_buf>>=8,e.bi_valid-=8)}},{"../utils/common":3}],15:[function(t,e,a){"use strict";e.exports=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}},{}],"/":[function(t,e,a){"use strict";var i={};(0,t("./lib/utils/common").assign)(i,t("./lib/deflate"),t("./lib/inflate"),t("./lib/zlib/constants")),e.exports=i},{"./lib/deflate":1,"./lib/inflate":2,"./lib/utils/common":3,"./lib/zlib/constants":6}]},{},[])("/")});
// @formatter:on

(function (window, undefined) {
    'use strict';


    /**
     * Handles managing all events for whatever you plug it into. Priorities for hooks are based on lowest to highest in
     * that, lowest priority hooks are fired first.
     */
    var EventManager = function () {
        var slice = Array.prototype.slice;

        /**
         * Maintain a reference to the object scope so our public methods never get confusing.
         */
        var MethodsAvailable = {
            removeFilter: removeFilter,
            applyFilters: applyFilters,
            addFilter: addFilter,
            removeAction: removeAction,
            doAction: doAction,
            addAction: addAction
        };

        /**
         * Contains the hooks that get registered with this EventManager. The array for storage utilizes a "flat"
         * object literal such that looking up the hook utilizes the native object literal hash.
         */
        var STORAGE = {
            actions: {},
            filters: {}
        };

        /**
         * Adds an action to the event manager.
         *
         * @param action Must contain namespace.identifier
         * @param callback Must be a valid callback function before this action is added
         * @param [priority=10] Used to control when the function is executed in relation to other callbacks bound to the same hook
         * @param [context] Supply a value to be used for this
         */
        function addAction(action, callback, priority, context) {
            if (typeof action === 'string' && typeof callback === 'function') {
                priority = parseInt((priority || 10), 10);
                _addHook('actions', action, callback, priority, context);
            }

            return MethodsAvailable;
        }

        /**
         * Performs an action if it exists. You can pass as many arguments as you want to this function; the only rule is
         * that the first argument must always be the action.
         */
        function doAction( /* action, arg1, arg2, ... */) {
            var args = slice.call(arguments);
            var action = args.shift();

            if (typeof action === 'string') {
                _runHook('actions', action, args);
            }

            return MethodsAvailable;
        }

        /**
         * Removes the specified action if it contains a namespace.identifier & exists.
         *
         * @param action The action to remove
         * @param [callback] Callback function to remove
         */
        function removeAction(action, callback) {
            if (typeof action === 'string') {
                _removeHook('actions', action, callback);
            }

            return MethodsAvailable;
        }

        /**
         * Adds a filter to the event manager.
         *
         * @param filter Must contain namespace.identifier
         * @param callback Must be a valid callback function before this action is added
         * @param [priority=10] Used to control when the function is executed in relation to other callbacks bound to the same hook
         * @param [context] Supply a value to be used for this
         */
        function addFilter(filter, callback, priority, context) {
            if (typeof filter === 'string' && typeof callback === 'function') {
                priority = parseInt((priority || 10), 10);
                _addHook('filters', filter, callback, priority, context);
            }

            return MethodsAvailable;
        }

        /**
         * Performs a filter if it exists. You should only ever pass 1 argument to be filtered. The only rule is that
         * the first argument must always be the filter.
         */
        function applyFilters( /* filter, filtered arg, arg2, ... */) {
            var args = slice.call(arguments);
            var filter = args.shift();

            if (typeof filter === 'string') {
                return _runHook('filters', filter, args);
            }

            return MethodsAvailable;
        }

        /**
         * Removes the specified filter if it contains a namespace.identifier & exists.
         *
         * @param filter The action to remove
         * @param [callback] Callback function to remove
         */
        function removeFilter(filter, callback) {
            if (typeof filter === 'string') {
                _removeHook('filters', filter, callback);
            }

            return MethodsAvailable;
        }

        /**
         * Removes the specified hook by resetting the value of it.
         *
         * @param type Type of hook, either 'actions' or 'filters'
         * @param hook The hook (namespace.identifier) to remove
         * @private
         */
        function _removeHook(type, hook, callback, context) {
            var handlers, handler, i;

            if (!STORAGE[type][hook]) {
                return;
            }
            if (!callback) {
                STORAGE[type][hook] = [];
            } else {
                handlers = STORAGE[type][hook];
                if (!context) {
                    for (i = handlers.length; i--;) {
                        if (handlers[i].callback === callback) {
                            handlers.splice(i, 1);
                        }
                    }
                } else {
                    for (i = handlers.length; i--;) {
                        handler = handlers[i];
                        if (handler.callback === callback && handler.context === context) {
                            handlers.splice(i, 1);
                        }
                    }
                }
            }
        }

        /**
         * Adds the hook to the appropriate storage container
         *
         * @param type 'actions' or 'filters'
         * @param hook The hook (namespace.identifier) to add to our event manager
         * @param callback The function that will be called when the hook is executed.
         * @param priority The priority of this hook. Must be an integer.
         * @param [context] A value to be used for this
         * @private
         */
        function _addHook(type, hook, callback, priority, context) {
            var hookObject = {
                callback: callback,
                priority: priority,
                context: context
            };

            // Utilize 'prop itself' : http://jsperf.com/hasownproperty-vs-in-vs-undefined/19
            var hooks = STORAGE[type][hook];
            if (hooks) {
                hooks.push(hookObject);
                hooks = _hookInsertSort(hooks);
            } else {
                hooks = [hookObject];
            }

            STORAGE[type][hook] = hooks;
        }

        /**
         * Use an insert sort for keeping our hooks organized based on priority. This function is ridiculously faster
         * than bubble sort, etc: http://jsperf.com/javascript-sort
         *
         * @param hooks The custom array containing all of the appropriate hooks to perform an insert sort on.
         * @private
         */
        function _hookInsertSort(hooks) {
            var tmpHook, j, prevHook;
            for (var i = 1, len = hooks.length; i < len; i++) {
                tmpHook = hooks[i];
                j = i;
                while ((prevHook = hooks[j - 1]) && prevHook.priority > tmpHook.priority) {
                    hooks[j] = hooks[j - 1];
                    --j;
                }
                hooks[j] = tmpHook;
            }

            return hooks;
        }

        /**
         * Runs the specified hook. If it is an action, the value is not modified but if it is a filter, it is.
         *
         * @param type 'actions' or 'filters'
         * @param hook The hook ( namespace.identifier ) to be ran.
         * @param args Arguments to pass to the action/filter. If it's a filter, args is actually a single parameter.
         * @private
         */
        function _runHook(type, hook, args) {
            var handlers = STORAGE[type][hook], i, len;

            if (!handlers) {
                return (type === 'filters') ? args[0] : false;
            }

            len = handlers.length;
            if (type === 'filters') {
                for (i = 0; i < len; i++) {
                    args[0] = handlers[i].callback.apply(handlers[i].context, args);
                }
            } else {
                for (i = 0; i < len; i++) {
                    handlers[i].callback.apply(handlers[i].context, args);
                }
            }

            return (type === 'filters') ? args[0] : true;
        }

        // return all of the publicly available methods
        return MethodsAvailable;

    };


    window.hooksManager = window.hooksManager || new EventManager();

})(window);


(function ($) {
    if (!Element.prototype.scrollIntoViewIfNeeded) {
        Element.prototype.scrollIntoViewIfNeeded = function (centerIfNeeded) {
            centerIfNeeded = arguments.length === 0 ? true : !!centerIfNeeded;
            var parent = this.parentNode,
                parentComputedStyle = window.getComputedStyle(parent, null),
                parentBorderTopWidth = parseInt(parentComputedStyle.getPropertyValue('border-top-width')),
                parentBorderLeftWidth = parseInt(parentComputedStyle.getPropertyValue('border-left-width')),
                overTop = this.offsetTop - parent.offsetTop < parent.scrollTop,
                overBottom = (this.offsetTop - parent.offsetTop + this.clientHeight - parentBorderTopWidth) > (parent.scrollTop + parent.clientHeight),
                overLeft = this.offsetLeft - parent.offsetLeft < parent.scrollLeft,
                overRight = (this.offsetLeft - parent.offsetLeft + this.clientWidth - parentBorderLeftWidth) > (parent.scrollLeft + parent.clientWidth),
                alignWithTop = overTop && !overBottom;
            if ((overTop || overBottom) && centerIfNeeded) {
                parent.scrollTop = this.offsetTop - parent.offsetTop - parent.clientHeight / 2 - parentBorderTopWidth + this.clientHeight / 2;
            }
            if ((overLeft || overRight) && centerIfNeeded) {
                parent.scrollLeft = this.offsetLeft - parent.offsetLeft - parent.clientWidth / 2 - parentBorderLeftWidth + this.clientWidth / 2;
            }
            if ((overTop || overBottom || overLeft || overRight) && !centerIfNeeded) {
                this.scrollIntoView(alignWithTop);
            }
        };
    }
    $.fn.tagName = function () {
        if (!this[0]) {
            return null;
        }
        if (this[0] && this[0].nodeName) {
            return this[0].nodeName.toLowerCase();
        }
        return null;
    };
    $.fn.insertAt = function (index, $parent) {
        return this.each(function () {
            if ($(this).parent().is($parent)) {
                var siblings = $(this).siblings();
                if (index < siblings.length) {
                    siblings.eq(index).before(this);
                } else {
                    siblings.last().after(this);
                }
            } else {
                if (index === 0 || !$parent.children().length) {
                    $parent.prepend(this);
                } else {
                    if (index >= $parent.children().length) {
                        $parent.append(this);
                    } else {
                        $parent.children().eq(index - 1).after(this);
                    }
                }
            }
        });
    };
    if (!NodeList.prototype.forEach) {
        NodeList.prototype.forEach = Array.prototype.forEach;
        HTMLCollection.prototype.forEach = Array.prototype.forEach; // Because of https://bugzilla.mozilla.org/show_bug.cgi?id=14869
    }
    if (!Array.from) {
        Array.from = function (object) {
            return [].slice.call(object);
        };
    }
})(jQuery);

(function ($, root) {
    wp.customize.bind("save-request-params", function (query) {
        query.customize_post_id = CP_Customizer.preview.data().pageID;
        if (CP_Customizer && CP_Customizer.hooks) {
            query = CP_Customizer.hooks.applyFilters('save-request-params', query);
        }
        return query;
    });

    function translateCompanionString(text) {
        if (root.__colibriBuilderCustomizerStrings[text] !== undefined) {
            return root.__colibriBuilderCustomizerStrings[text];
        } else {
            if (CP_Customizer.options('SCRIPT_DEBUG')) {
                console.warn("[Not translated] " + text);
            }
            return text;
        }
    }


    var CP_Customizer = {
        events: {
            "PREVIEW_LOADED": "PREVIEW_LOADED",
            "ADD_FIXED_OVERLAYS": "ADD_FIXED_OVERLAYS",
            "RIGHT_SECTION_CLOSED": "RIGHT_SECTION_CLOSED",
            "ELEMENT_DECORATED": "ELEMENT_DECORATED",
            "CONTENT_ROW_REMOVED": "CONTENT_ROW_REMOVED",
            "DOCUMENT_READY": "DOCUMENT_READY",
            "STATE_UPDATED": "STATE_UPDATED",
        },
        getSlug: window.getSlug,
        wpApi: wp.customize,
        MAX_SAFE_INTEGER: Number.MAX_SAFE_INTEGER ? Number.MAX_SAFE_INTEGER : 9007199254740991,
        hooks: window.hooksManager,
        CONTENT_ELEMENTS: 'p,h1,h2,h3,h4,h5,h6,a,span,i,hr,img,ul,div.spacer',
        TEXT_ELEMENTS: "p,h1,h2,h3,h4,h5,h6,span",
        THEME_MOD_NODES: '[data-theme],[data-theme-src],[data-theme-fa]',
        translateCompanionString: translateCompanionString,
        data: function () {
            return root.cpCustomizerGlobal.pluginOptions.data;
        },
        addContentElementsSelectors: function (selectors) {
        },
        IO: {
            get: function (action, data) {
                return this.send({
                    data: _.isObject(action) ? action : _.extend(data || {}, {
                        action: action
                    }),
                    type: 'GET'
                });
            },
            post: function (action, data) {
                return this.send({
                    data: _.isObject(action) ? action : _.extend(data || {}, {
                        action: action
                    })
                });
            },
            customGet: function (url, data) {
                data = _.isObject(data) ? data : {};
                var options = {
                    type: "GET",
                    data: data
                };
                return CP_Customizer.IO.customSend(url, options);
            },
            customPost: function (url, data) {
                data = _.isObject(data) ? data : {};
                var options = {
                    type: "POST",
                    data: data
                };
                return CP_Customizer.IO.customSend(url, options);
            },
            customSend: function (url, options) {
                options = _.defaults(options || {}, {
                    type: 'POST',
                    url: url
                });
                return CP_Customizer.IO.send(options);
            },
            rest: {
                get: function (route, data) {
                    data = _.isObject(data) ? data : {};
                    var options = {
                        type: "GET",
                        data: data
                    };
                    return CP_Customizer.IO.rest.send(route, options);
                },
                post: function (route, data) {
                    data = _.isObject(data) ? data : {};
                    var options = {
                        type: "POST",
                        data: data
                    };
                    return CP_Customizer.IO.rest.send(route, options);
                },
                send: function (route, options) {
                    var url = wpApiSettings.root;
                    options = _.defaults(options || {}, {
                        type: 'POST',
                        url: CP_Customizer.utils.phpTrim(url, '/') + "/" + CP_Customizer.utils.phpTrim(route, '/'),
                        beforeSend: function (xhr) {
                            xhr.setRequestHeader('X-WP-Nonce', wpApiSettings.nonce);
                        },
                    });
                    return CP_Customizer.IO.send(options);
                }
            },
            send: function (action, options) {
                var promise, deferred;
                if (_.isObject(action)) {
                    options = action;
                } else {
                    options = options || {};
                    options.data = _.extend(options.data || {}, {
                        action: action
                    });
                }
                options = _.defaults(options || {}, {
                    type: 'POST',
                    url: wp.ajax.settings.url,
                    context: this,
                    _: Date.now(),
                    xhrFields: {
                        withCredentials: true
                    }
                });
                deferred = $.Deferred(function (deferred) {
                    // Transfer success/error callbacks.
                    if (options.success) {
                        deferred.done(options.success);
                    }
                    if (options.error) {
                        deferred.fail(options.error);
                    }
                    delete options.success;
                    delete options.error;
                    deferred.jqXHR = $.ajax(options).done(function (response) {
                        deferred.resolveWith(this, [response, deferred.jqXHR]);
                    }).fail(function () {
                        deferred.rejectWith(this, arguments);
                    });
                });
                promise = deferred.promise();
                promise.abort = function () {
                    deferred.jqXHR.abort();
                    return this;
                };
                return promise;
            }
        },
        options: function (key, defaultValue) {
            var result = root.cpCustomizerGlobal.pluginOptions;
            if (key) {
                var keyParts = key.split(':');
                for (var i = 0; i < keyParts.length; i++) {
                    var part = keyParts[i];
                    if (!_.isUndefined(result[part])) {
                        result = result[part];
                    } else {
                        result = defaultValue;
                        break;
                    }
                }
            }
            return result;
        },
        __exportsCache: {},
        getSectionExports: function (sectionId) {
            return {};
        },
        slugPrefix: function () {
            return root.cpCustomizerGlobal.pluginOptions.slugPrefix;
        },
        log: function (name, data, type) {
            if (!CP_Customizer.options('SCRIPT_DEBUG', false) && !top.SCRIPT_DEBUG) {
                return;
            }
            type = type || 'log';
            var colors = {
                'log': 'background-color:#03a9f4; color:#ffffff',
                'error': 'background-color:#ff0000; color:#ffffff'
            };
            if (!data) {
                data = 'NO DATA';
            }
            console.groupCollapsed('%c  ' + name + '  ', colors[type]);
            console[type](data);
            console.groupEnd();
        },
        logError: function (name, data) {
            this.log(name, data, 'error');
        },
        bind: function (event, callback) {
            this.on(event, callback, false);
        },
        unbind: function (event, callback) {
            this.off(event, callback);
        },
        on: function (event, callback, async) {
            event = event.split(' ').map(function (ev) {
                return 'cp_customizer.' + ev;
            }).join(' ');
            if (async) {
                var originalCallback = callback;
                callback = function () {
                    var args = Array.from(arguments);
                    var cb = this.callback;
                    setTimeout(function () {
                        cb.apply(this, args);
                    }, 0);
                }.bind({
                    callback: originalCallback
                });
            }
            $(window).bind(event, callback);
        },
        off: function (event, callback) {
            event = event.split(' ').map(function (ev) {
                return 'cp_customizer.' + ev;
            }).join(' ');
            $(window).unbind(event, callback);
        },
        one: function (event, callback) {
            event = event.split(' ').map(function (ev) {
                return 'cp_customizer.' + ev;
            }).join(' ');
            $(window).one(event, callback);
        },
        trigger: function (event, data) {
            $(window).trigger('cp_customizer.' + event, data);
        },
        showLoader: function () {
            $('div#cp-full-screen-loader').addClass('active');
            jQuery('select').each(function () {
                var $select = $(this);
                if ($select.data() && $select.data().selectize) {
                    $select.data().selectize.blur();
                }
            });
        },
        hideLoader: function () {
            $('div#cp-full-screen-loader').removeClass('active');
        },
        jsTPL: {},
        __containerDataHandlers: {},
        addContainerDataHandler: function (selector, getter, setter) {
            this.__containerDataHandlers[selector] = {
                getter: getter,
                setter: setter
            };
        },
        __containerDataFilters: [],
        addContainerDataFilter: function (callback) {
            this.__containerDataFilters.push(callback);
        },
        __modules: [],
        __modulesLoaded: false,
        addModule: function (callback) {
            var self = this;
            if (this.__modulesLoaded) {
                callback(this);
            } else {
                this.__modules.push(callback);
            }
        },

        popUpInfo: function (title, content, data) {
            var id = _.uniqueId('temp-popup-text');

            var tempContainer = $('<div id="' + id + '" />').hide();
            tempContainer.appendTo($('body'));
            tempContainer.append('<div>' + content + '</div>');

            return this.popUp(title, id, data);
        },
        popupPrompt: function (title, text, value, callback, extraHTML) {

        },
        popupSelectPrompt: function (title, text, value, options, callback, emptySelection, extraHTML) {

        },
        closePopUps: function () {
            root.tb_remove();
            root.jQuery('#TB_overlay').css({
                'z-index': '-1'
            });
        },

        popUp: function (title, elementID, data) {
            var selector = "#TB_inline?inlineId=" + elementID;
            var query = [];


            $.each(data || {}, function (key, value) {
                query.push(key + "=" + value);
            });

            selector = query.length ? selector + "&" : selector + "";
            selector += query.join("&");

            root.tb_show(title, selector);

            root.jQuery('#TB_window').css({
                'z-index': '5000001',
                'transform': 'opacity .4s',
                'opacity': 0
            });

            root.jQuery('#TB_overlay').css({
                'z-index': '5000000'
            });


            setTimeout(function () {
                root.jQuery('#TB_window').css({
                    'margin-top': -1 * ((root.jQuery('#TB_window').outerHeight() + 50) / 2),
                    'opacity': 1
                });
                root.jQuery('#TB_window').find('#cp-item-ok').focus();
            }, 0);

            if (data && data.class) {
                root.jQuery('#TB_window').addClass(data.class);
            }

            return root.jQuery('#TB_window');
        },
        openMultiImageManager: function (title, callback, single) {
            var node = false;
            var interestWindow = root;
            custom_uploader = interestWindow.wp.media.frames.file_frame = interestWindow.wp.media({
                title: title,
                button: {
                    text: root.CP_Customizer.translateCompanionString('Choose Images')
                },
                multiple: !single
            });
            //When a file is selected, grab the URL and set it as the text field's value
            custom_uploader.on('select', function () {
                var attachment = custom_uploader.state().get('selection').toJSON();
                callback(attachment);
            });
            custom_uploader.off('close.cp').on('close.cp', function () {
                callback(false);
            });
            //Open the uploader dialog
            custom_uploader.open();
            custom_uploader.content.mode('browse');
            // Show Dialog over layouts frame
            interestWindow.jQuery(interestWindow.wp.media.frame.views.selector).parent().css({
                'z-index': '16000000'
            });
        },
        openImageManager: function (callback, multi) {
            this.openMultiImageManager('Image Manager', function (obj) {
                if ($('iframe').length) {
                    $('iframe').get(0).focus();
                }
                if (!obj) {
                    return;
                }
                for (var i = 0; i < obj.length; i++) {
                    var link = obj[i].url;
                    callback(link);
                }
            }, !multi);
        },
        openMediaCustomFrame: function (extender, mode, title, single, callback) {
            var interestWindow = root;
            var frame = extender(interestWindow.wp.media.view.MediaFrame.Select);
            var custom_uploader = new frame({
                title: title,
                button: {
                    text: title
                },
                multiple: !single
            });
            //When a file is selected, grab the URL and set it as the text field's value
            custom_uploader.on('select', function () {
                attachment = custom_uploader.state().get('selection').toJSON();
                custom_uploader.content.mode('browse');
                callback(attachment);
            });
            custom_uploader.on('close', function () {
                custom_uploader.content.mode('browse');
                callback(false);
            });
            //Open the uploader dialog
            custom_uploader.open();
            custom_uploader.content.mode(mode);
            // Show Dialog over layouts frame
            interestWindow.jQuery(custom_uploader.views.selector).parent().css({
                'z-index': '16000000'
            });
        },

        openVideoPicker: function (callback) {
            var frame = new root.wp.media({
                button: {
                    text: root.CP_Customizer.translateCompanionString("Select Video")
                },
                states: [new root.wp.media.controller.Library({
                    title: root.CP_Customizer.translateCompanionString("Select Video"),
                    library: root.wp.media.query({
                        type: "video"
                    }),
                    multiple: !1,
                    date: !1
                })]
            });

            frame.on("select", function () {
                var selection = frame.state().get("selection").first().toJSON(), c = window._wpmejsSettings || {};
                callback(selection);
                frame.destroy();
            })

            frame.open();
        },

        openCropableImageManager: function (width, height, flexible, callback) {
            var control = new root.wp.customize.CroppedImageControl('custom_image_cropper[' + Date.now() + ']', {
                params: {}
            });
            control.params = {
                button_labels: {
                    frame_title: root.CP_Customizer.translateCompanionString("Select Image")
                },
                height: height,
                width: width
            };
            flexible = _.isUndefined(flexible) ? true : flexible;
            if (flexible) {
                control.params = _.extend(control.params, {
                    flex_width: width,
                    flex_height: height
                });
            }
            control.initFrame();
            control.frame.setState('library').open();
            control.frame.content.mode('browse');

            function fixCropKeyPressBug() {
                setTimeout(function () {
                    root.jQuery(top.document).unbind(root.jQuery.imgAreaSelect.keyPress);
                }, 100);
            }

            control.setImageFromAttachment = function (attachment) {
                callback([attachment]);
                fixCropKeyPressBug();
            };
            control.frame.on('close', function () {
                fixCropKeyPressBug();
            });
            root.jQuery(control.frame.views.selector).parent().css({
                'z-index': '16000000'
            });
            root.jQuery(control.frame.views.selector).find('.instructions').remove();
            control.frame.on('content:create:crop', function () {
                var c = control;
                var state = c.frame.state();
                var __createCropToolbar = state.createCropToolbar;
                state.createCropToolbar = function () {
                    state.set('canSkipCrop', true);
                    __createCropToolbar.apply(state, arguments);
                };
            });
        },

        openPlaylistManager: function (options, callback) {
            var interestWindow = root;

            options = _.extend({
                "shortcode": false,
                "ids": []
            }, options);

            if (_.isArray(options.ids)) {
                options.ids = options.ids.join(",");
            }

            if (_.isEmpty(options.ids.trim())) {
                options.ids = 'fake-' + Date.now();
            }

            var shortcode = "[playlist";

            $.each(options, function (index, val) {
                shortcode += " " + index + '="' + val + '"';
            });
            shortcode += "]";

            var gallery = interestWindow.wp.media.gallery;
            var frame = gallery.edit(shortcode);
            frame.state(options.state).on('update', function (selection) {
                var ids = selection.map(function (model) {
                    return model.id
                });
                callback(selection, ids);
            });

            interestWindow.jQuery(frame.views.selector).parent().css({
                'z-index': '16000000'
            });

            if (options.ids.match(/fake-\d+/)) {
                frame.setState('gallery-library')
            }
        },

        openGalleryImageManager: function (options, callback) {
            var interestWindow = root;

            options = _.extend({
                "shortcode": false,
                "ids": [],
                "columns": "5",
                "state": 'gallery-edit',
                "size": "medium",
                "link": "file"
            }, options);

            if (_.isArray(options.ids)) {
                options.ids = options.ids.join(",");
            }

            if (_.isEmpty(options.ids.trim())) {
                options.ids = 'fake-' + Date.now();
            }

            var shortcode = "[gallery";

            $.each(options, function (index, val) {
                shortcode += " " + index + '="' + val + '"';
            });
            shortcode += "]";

            var gallery = interestWindow.wp.media.gallery;
            var frame = gallery.edit(shortcode);
            frame.state(options.state).on('update', function (selection) {
                var ids = selection.map(function (model) {
                    return model.id
                });
                callback(selection, ids);
            });

            interestWindow.jQuery(frame.views.selector).parent().css({
                'z-index': '16000000'
            });

            if (options.ids.match(/fake-\d+/)) {
                frame.setState('gallery-library')
            }
        },

        openMediaBrowser: function (type, callback, data) {
            var cb;
            if (callback instanceof jQuery) {
                cb = function (response) {
                    if (!response) {
                        return;
                    }
                    var value = response[0].url;
                    if (data !== "multiple") {
                        if (type == "icon") {
                            value = response[0].fa;
                        }
                        callback.val(value).trigger('change');
                    }
                };
            } else {
                cb = function () {
                    callback.apply(this, arguments);
                    //CP_Customizer.preview.blur();
                }
            }
            switch (type) {
                case "image":
                    // this.openMultiImageManager('Change image', cb, data);
                    this.openCropableImageManager(data.width || this.MAX_SAFE_INTEGER, data.height || this.MAX_SAFE_INTEGER, true, cb);
                    break;
                case "cropable":
                    this.openCropableImageManager(data.width, data.height, data.flexible, cb);
                    break;
                case "icon":
                    this.openFAManager(root.CP_Customizer.translateCompanionString('Change Font Awesome Icon'), cb);
                    break;
                case "gallery":
                    this.openGalleryImageManager(data, cb);
                    break;
                case "playlist":
                    this.openPlayListManager(data, cb);
                    break;
                case "video":
                    this.openVideoPicker(cb);
                    break;
            }
        },
        getCustomizerRootEl: function () {
            return root.jQuery(root.document.body).find('form#customize-controls');
        },
        isRightSidebarVisible: function (sectionID) {
        },
        updateState: function () {
            function callback() {
                CP_Customizer.trigger('STATE_UPDATED');
            }
            this._setContent(callback);
        },
        __changesetUpdate: _.debounce(function (callback) {
            var changeSet = root.CP_Customizer.wpApi.requestChangesetUpdate.apply(root.CP_Customizer.wpApi);//, [{}, {force:true}]);
            if (_.isFunction(callback)) {
                changeSet.then(callback);
                changeSet.fail(callback);
            }
        }, 500),
        __requestCachedCbs: [],
        requestChangesetUpdate: function (cb) {
            if (_.isFunction(cb)) {
                this.__requestCachedCbs.push(cb);
            }
            var self = this;
            this.__changesetUpdate(function (data) {
                while (self.__requestCachedCbs.length) {
                    var cb = self.__requestCachedCbs.shift();
                    cb.call(self, data);
                }
            });
        },

        compressSetting: function (data) {
            var _data = JSON.stringify(data);
            var compressed = window.pako.gzip(encodeURIComponent(_data), {to: 'string'});
            return btoa(compressed);
        },

        decompressSetting: function (data) {
            var _data = atob(data);
            var decompressed = window.pako.ungzip(_data, {to: 'string'});

            return JSON.parse(decodeURIComponent(decompressed));
        },

        _setContent: function (callback, save) {
            if (root.CP_Customizer.preview.data().maintainable) {
                var setting = root.wp.customize('page_content');
                if (!setting) {
                    return;
                }

                // console.error('should skip autosave', save, this.__saving);
                // skip auto save while in another save
                if (!save && this.__saving) {
                    // console.error('skip autosave', this.__saving);
                    return;
                }


                // console.warn('_setContent save ? ', save);

                var focusedElement = top.CP_Customizer.preview.frame().document.activeElement;
                var value = setting.get();

                var pageID = root.CP_Customizer.preview.data().pageID;
                var promise = CP_Customizer.hooks.applyFilters('set_content_value_promise', save, {value : value, pageID : pageID});
                var self = this;

                function handleRequestChangesetUpdate(cbk, optionValue) {
                	//optionValue = optionValue.replace(/\//g, '-');

                	  try {
                        // force update
                        root.CP_Customizer.wpApi._latestSettingRevisions[setting.id]++;
                    } catch (e) {
                    }
                    setting.set(optionValue);


                    var promise = root.CP_Customizer.wpApi.requestChangesetUpdate.apply(root.CP_Customizer.wpApi);
                    promise.then(
                      function update(data) {
                          if (focusedElement) {
                              focusedElement.focus();
                          }
                          //console.error('requestChangesetUpdate then', data, save);
                          cbk(data);
                      }
                    );
                    promise.fail(
                      function update(data) {
                          console.error('requestChangesetUpdate failed', data);
                          cbk(data);
                      }
                    );
                    return promise;
                }

                promise.then(function (newValue) {

                    function refreshOnceProcessingComplete(value) {
                        // console.error('refreshOnceProcessingComplete value', value);
                        if (value === 0) {
                            root.CP_Customizer.wpApi.state('processing').unbind(refreshOnceProcessingComplete);
                            handleRequestChangesetUpdate(callback, newValue);
                        }
                    }

                    // console.warn('save promise setting.set save?', save);
                    if (0 !== root.CP_Customizer.wpApi.state('processing').get()) {
                        // console.warn('busy processing, defer');
                        root.CP_Customizer.wpApi.state('processing').bind(refreshOnceProcessingComplete)
                    } else {
                        // console.warn('not busy processing, request changeset');
                        handleRequestChangesetUpdate(callback, newValue);
                    }
                })
            }
        },

        setContent: _.debounce(function (callback) {
            this._setContent(callback);
        }, 200),

        save: function () {
            $(root.document).find('body').addClass('saving');
            $(root.document).find('input#save').prop('disabled', true);
            var self = this;
            console.warn('save');
            this.__saving = true;
            var callback = function () {
                //console.warn('save finished 1');
                wp.customize.previewer.save().always(function() {
                    //console.warn('save finished 2');
                    self.__saving = false;
                });
            };
            self._setContent(callback, true);
        },

        cleanClose: function () {
        },
        __saving:false,
        __saveTimeout: false,
        markSave: function () {},
        parseShortcode: function (shortcode) {
        },
        isShortcodeContent: function ($node) {
        },
        isShortcodeEditable: function ($node) {
        },
        isOnCanvasMod: function (node) {
        },
        nodeWrapsShortcode: function ($node, tag) {
        },
        getNodeShortcode: function ($node) {
        },
        nodeContainsShortcode: function ($node, tag) {
        },
        renderNodeShortcodes: function ($node) {
        },
        updateNodeShortcode: function ($node, shortcode, noRerender, context) {
        },
        updateNodeFromShortcodeObject: function ($node, shortcodeObj, noRerender, context) {
        },
        preview: {
            frame: function () {
                var frame = wp.customize.previewer.targetWindow.get();
                if (!frame) {
                    frame = wp.customize.previewer.container.find('iframe')[0];
                    if (frame) {
                        frame = frame.contentWindow;
                    } else {
                        frame = null;
                    }
                }
                return frame;
            },
            currentDevice: function () {
                return jQuery('.active[data-device]').data('device');
            },
            __observerFunctionsToPause: ["prepareFormPreview", "prepareLinkPreview"],
            __observerOriginalFunctions: {},
            pauseObserver: function () {
                var previewApi = CP_Customizer.preview.frame().wp.customize;
                this.__observerOriginalFunctions = {};
                var self = CP_Customizer.preview;
                _.each(self.__observerFunctionsToPause, function (fn) {
                    if (_.isFunction(previewApi[fn])) {
                        self.__observerOriginalFunctions[fn] = previewApi[fn];
                        previewApi[fn] = function () {
                        };
                    }
                });
            },
            restartObserver: _.debounce(function () {
                var previewApi = CP_Customizer.preview.frame().wp.customize;
                var self = CP_Customizer.preview;
                _.each(self.__observerFunctionsToPause, function (fn) {
                    if (_.isFunction(previewApi[fn]) && _.isFunction(self.__observerOriginalFunctions[fn])) {
                        previewApi[fn] = self.__observerOriginalFunctions[fn];
                    }
                });
            }, 100),
            addSilentExecution: function (callback) {
                return _.compose(this.pauseObserver, callback, this.restartObserver);
            },
            silentCall: function (callback) {
                var args = arguments.length > 1 ? arguments[1] : undefined;
                var context = arguments.length > 2 ? arguments[2] : this;
                callback = this.addSilentExecution(callback);
                return callback.apply(context, arguments);
            },

            refresh: _.throttle(function () {
                CP_Customizer.wpApi.previewer.refresh();
            }, 100),

            data: function (key, defaultValue) {
                if (!this.frame()) {
                    return {};
                }
                var result = this.frame().cpCustomizerPreview || {};
                if (key) {
                    var keyParts = key.split(':');
                    for (var i = 0; i < keyParts.length; i++) {
                        var part = keyParts[i];
                        if (!_.isUndefined(result[part])) {
                            result = result[part];
                        } else {
                            result = defaultValue;
                            break;
                        }
                    }
                }
                return result;
            },
            getChangesetURL: function () {
                var changeset = wp.customize.settings.changeset.uuid ? "?changeset_uuid=" + wp.customize.settings.changeset.uuid : "";
                if (changeset) {
                    changeset += "&cp__changeset__preview=" + Date.now();
                }
                return window.location.origin + window.location.pathname + changeset;
            },
            isPageMaintainable: function () {
                return this.data.maintainable;
            },
            // http://stackoverflow.com/questions/7451468/contenteditable-div-how-can-i-determine-if-the-cursor-is-at-the-start-or-end-o/7478420#7478420
            getSelectionTextInfo: function (el) {
            },
            isCustomFrontPage: function () {
                return this.data.isFrontPage;
            },
            jQuery: function (data) {
                if (data) {
                    return this.frame().jQuery(data);
                }
                return this.frame().jQuery;
            },
            getPageContainerSelector: function () {
            },
            getRootNode: function () {
            },
            find: function (query) {
                var $ = this.jQuery();
                return $(query);
            },
            getSectionByDataId: function (id) {
            },
            getNodeSection: function (node) {
            },
            getNodeSectionId: function (node) {
            },
            getThemeMods: function ($container) {
            },
            getContentNodes: function (filter) {
            },
            getContent: function ($node) {
            },
            __cleanNode: function (el) {
            },
            getNodeClasses: function (node) {
                var $clone = $(node).clone();
                this.__cleanNode($clone[0]);
                return Array.from($clone[0].classList);
            },
            cleanNode: function ($node) {
                $node[0].querySelectorAll('[data-content-editable], [data-content-code-editable], [data-container-editable]').forEach(function (el) {
                    root.CP_Customizer.preview.__cleanNode(el);
                });
                $node[0].querySelectorAll('.ui-sortable,.ui-sortable-disabled,.ui-sortable-handle').forEach(function (el) {
                    root.CP_Customizer.preview.__cleanNode(el);
                });
                root.CP_Customizer.preview.__cleanNode($node[0]);
                return $node;
            },
            cleanURL: function (url) {
                var startsWithDoubleSlash = (url.indexOf('//') === 0);
                var startsWithSlash = (url.indexOf('/') === 0);
                var queryKeys = Object.getOwnPropertyNames(CP_Customizer.wpApi.previewer.query());
                queryKeys = _.unique(queryKeys.concat(['customize_theme', 'customize_changeset_uuid', 'customize_messenger_channel', 'customize_autosaved']));
                url = CP_Customizer.utils.removeUrlQueryStrings(url, queryKeys);
                // clean url
                url = CP_Customizer.utils.phpTrim(url, '/').trim() || "#";
                // add // or / depending on how url received
                if (startsWithDoubleSlash) {
                    url = '//' + url;
                } else {
                    if (startsWithSlash) {
                        url = '/' + url;
                    }
                }
                return url;
            }
        }
    };
    top.CP_Customizer = root.CP_Customizer = CP_Customizer;


    var previewLoadedMessageCallback = function (event) {

        if (event.data === 'colibri_page_builder_update_customizer') {

            setTimeout(function () {
                CP_Customizer.hideLoader();
                CP_Customizer.preview.frame().wp.customize.preview.bind('loading-initiated', function () {
                    CP_Customizer.showLoader();
                    CP_Customizer.trigger('PREVIEW_LOADING_START');
                });
            }, 300);


            _(CP_Customizer).extend(window.cpCustomizerGlobal);

            //CP_Customizer.preview.addContentBinds();

            CP_Customizer.preview.jQuery('a').on('click', function (event) {
                event.preventDefault();
                event.stopPropagation();
            });

            // make the save button use CP_Customizer save wrapper
            $(root.document).find('input#save').unbind('click').bind('click', function (event) {

                event.preventDefault();
                event.stopPropagation();
                root.CP_Customizer.save();
            });


            CP_Customizer.trigger('PREVIEW_LOADED');

        }
    };

    root.addEventListener('message', previewLoadedMessageCallback);

    $(root).bind('keydown', function (event) {
        if (event.ctrlKey || event.metaKey) {
            var key = String.fromCharCode(event.which).toLowerCase();
            if (key === "s") {
                event.preventDefault();
                event.stopPropagation();
                root.CP_Customizer.save();
            }
        }
    });

    $(root.document).find('input#save').unbind('click').bind('click', function (event) {
        event.preventDefault();
        event.stopPropagation();
        root.CP_Customizer.save();
    });

    root.document.addEventListener("DOMContentLoaded", function () {
        for (var i = 0; i < CP_Customizer.__modules.length; i++) {
            var callback = CP_Customizer.__modules[i];
            callback(CP_Customizer);
        }
        CP_Customizer.__modulesLoaded = true;
        CP_Customizer.trigger('DOCUMENT_READY');
    });

})(jQuery, window);

(function ($) {
    CP_Customizer.addModule(function (CP_Customizer) {
        CP_Customizer.utils = CP_Customizer.utils || {};
        CP_Customizer.utils.phpTrim = function (str, charlist) {

            var whitespace = [
                ' ',
                '\n',
                '\r',
                '\t',
                '\f',
                '\x0b',
                '\xa0',
                '\u2000',
                '\u2001',
                '\u2002',
                '\u2003',
                '\u2004',
                '\u2005',
                '\u2006',
                '\u2007',
                '\u2008',
                '\u2009',
                '\u200a',
                '\u200b',
                '\u2028',
                '\u2029',
                '\u3000'
            ].join('');

            var l = 0;
            var i = 0;
            str += '';

            if (charlist) {
                whitespace = (charlist + '').replace(/([[\]().?/*{}+$^:])/g, '$1')
            }
            l = str.length
            for (i = 0; i < l; i++) {
                if (whitespace.indexOf(str.charAt(i)) === -1) {
                    str = str.substring(i)
                    break
                }
            }
            l = str.length
            for (i = l - 1; i >= 0; i--) {
                if (whitespace.indexOf(str.charAt(i)) === -1) {
                    str = str.substring(0, i + 1)
                    break
                }
            }
            return whitespace.indexOf(str.charAt(0)) === -1 ? str : ''
        };

        CP_Customizer.utils.normalizeBackgroundImageValue = function (value) {
            value = value.replace(/url\((.*)\)/, "$1");
            return CP_Customizer.utils.phpTrim(value, "\"'");
        };


        CP_Customizer.utils.htmlDecode = function (value) {
            var result = $('<div/>').html(value).text();
            return result;
        };

        CP_Customizer.utils.htmlEscape = function (str) {
            return str
                .replace(/&/g, '&amp;')
                .replace(/"/g, '&quot;')
                .replace(/'/g, '&#39;')
                .replace(/</g, '&lt;')
                .replace(/>/g, '&gt;');
        };


        var htmlEntityMap = {
            '&': '&amp;',
            '<': '&lt;',
            '>': '&gt;',
            '"': '&quot;',
            "'": '&#39;',
            '/': '&#x2F;',
            '`': '&#x60;',
            '=': '&#x3D;'
        };

        CP_Customizer.utils.htmlUnescape = function (str) {

            for (var item in htmlEntityMap) {
                var regExp = new RegExp(htmlEntityMap[item], 'g');
                str = str.replace(regExp, item);
            }

            return str;
        };


        CP_Customizer.utils.setToPath = function (schema, path, value) {

            if (!schema) {
                return schema;
            }

            var pList = path.split('.');
            var len = pList.length;

            if (len > 1) {
                var first = pList.shift();
                var remainingPath = pList.join('.');
                schema[first] = CP_Customizer.utils.setToPath(schema[first], remainingPath, value);
            } else {
                schema[path] = value;
            }

            return schema;
        };

        CP_Customizer.utils.normalizeShortcodeString = function (shortcode) {
            shortcode = CP_Customizer.utils.htmlDecode(shortcode);

            return '[' + CP_Customizer.utils.phpTrim(shortcode) + ']';
        };

        CP_Customizer.utils.getSpectrumColorFormated = function ($spectrumElement) {
            var value = $spectrumElement.spectrum('get');


            if (!value) {
                return value;
            }

            if (value.getAlpha() < 1) {
                return "rgba(" + value._r + "," + value._g + "," + value._b + "," + value._a + ")";
            } else {
                return value.toHexString();
            }
        };

        CP_Customizer.utils.getValue = function (component) {
            var value = undefined;

            if (component instanceof CP_Customizer.wpApi.Control) {
                value = component.setting.get();
            }

            if (component instanceof CP_Customizer.wpApi.Setting) {
                value = component.get();
            }

            if (_.isString(component)) {
                value = CP_Customizer.wpApi(component).get();
            }

            if (_.isString(value)) {

                try {
                    value = decodeURI(value);

                } catch (e) {

                }

                try {
                    value = JSON.parse(value);
                } catch (e) {

                }

            }

            return value;
        };

        CP_Customizer.utils.deepClone = function (toClone) {
            return jQuery.extend(true, {}, toClone);
        };

        CP_Customizer.utils.cssValueNumber = function (value) {
            var matches = value.match(/\d+(.\d+)?/);

            if (!matches || !_.isArray(matches)) {
                return null;
            }

            return matches.shift();
        };

        CP_Customizer.utils.arrayChunk = function (bigArray, perGroup) {
            perGroup = perGroup || 5;
            var result = _.groupBy(bigArray, function (element, index) {
                return Math.floor(index / perGroup);
            });

            return _.toArray(result);
        };

        CP_Customizer.utils.normalizeClassAttr = function (classes, asSelector) {
            classes = classes.split(' ').filter(function (item) {
                return (item.trim().length > 0);
            });

            if (asSelector) {
                return (classes.length ? '.' + classes.join('.') : '');
            } else {
                return classes.join(' ');
            }
        };

        CP_Customizer.utils.getFileInfo = function (url) {
            var filename = url.substring(url.lastIndexOf("/") + 1, url.lastIndexOf("."));
            var parts = url.split("/" + filename)[0];
            var path = parts[0];
            var extension = parts.length > 1 ? parts[1].split('/')[0] : '';

            return {
                path: path,
                file: filename + (extension ? '.' + extension : extension),
                filename: filename,
                extension: extension
            }
        };

        var imageExtensions = ["tif", "tiff", "gif", "jpeg", "jpg", "jif", "jfif", "jp2", "jpx", "j2k", "j2c", "fpx", "pcd", "png", "pdf", "bmp", "ico"];
        CP_Customizer.utils.isImageFile = function (url) {
            var fileInfo = CP_Customizer.utils.getFileInfo(url);

            return (imageExtensions.indexOf(fileInfo.extension) !== -1);

        };

        // https://stackoverflow.com/a/13896633
        // TODO: make work with ?x[a]=2&x[b]=3
        CP_Customizer.utils.parseUrlQuery = function (str) {
            if (typeof str !== "string" || str.length === 0) {
                return {};
            }
            var s = str.split("&");
            var s_length = s.length;
            var bit, query = {}, first, second;
            for (var i = 0; i < s_length; i++) {
                bit = s[i].split("=");
                first = decodeURIComponent(bit[0]);
                if (first.length === 0) {
                    continue;
                }
                second = decodeURIComponent(bit[1]);
                if (typeof query[first] === "undefined") {
                    query[first] = second;
                } else if (query[first] instanceof Array) {
                    query[first].push(second);
                } else {
                    query[first] = [query[first], second];
                }
            }
            return query;
        };


        CP_Customizer.utils.stringifyUrlQuery = function (query) {
            var queryString = "";
            for (var key in query) {

                if (!query.hasOwnProperty(key)) {
                    continue;
                }

                var data = query[key];

                if (!_.isUndefined(data)) {
                    if (_.isString(data)) {
                        queryString += '&' + encodeURIComponent(key) + '=' + encodeURIComponent(data);
                    }

                    if (_.isArray(data)) {
                        for (var i = 0; i < data.length; i++) {
                            queryString += '&' + encodeURIComponent(key) + '[' + i + ']=' + encodeURIComponent(data[i]);
                        }
                    }

                } else {
                    queryString += '&' + encodeURIComponent(key);
                }
            }

            if (queryString.length) {
                queryString = '?' + CP_Customizer.utils.phpTrim(queryString, '&');
            }

            return queryString;
        };

        CP_Customizer.utils.parseURL = function (url) {
            var location = ((url.split('?')[0] || '').split('#')[0] || ''),
                queryString = (url.indexOf('?') !== -1) ? url.split('?').pop().split('#')[0] : '',
                query = CP_Customizer.utils.parseUrlQuery(queryString),
                hash = (url.indexOf('#') !== -1) ? url.replace(/(.*)#/, '').trim() : '';

            return {
                location: location.replace(/\/$/, ''),
                query: query,
                hash: hash.length ? '#' + hash : ''
            }

        };

        CP_Customizer.utils.removeUrlQueryStrings = function (url, strings) {
            var parsedUrl = CP_Customizer.utils.parseURL(url),
                hash = parsedUrl.hash,
                queryKeys = Object.getOwnPropertyNames(parsedUrl.query),
                query = {};

            for (var i = 0; i < queryKeys.length; i++) {
                var key = queryKeys[i];
                if (strings.indexOf(key) === -1) {
                    query[key] = parsedUrl.query[key];
                }
            }

            var queryString = CP_Customizer.utils.stringifyUrlQuery(query);

            if (!queryString.length) {
                queryString = "/";
            }

            return parsedUrl.location + queryString + hash;
        };

        CP_Customizer.utils.nodeMatchingClasses = function (node, classList, firstMatchOnly) {

            if (!$(node).length) {
                if (firstMatchOnly) {
                    return undefined;
                }
                return [];
            }

            result = Array.from($(node)[0].classList).filter(function (_class) {
                return (classList.indexOf(_class) !== -1);
            });

            if (firstMatchOnly) {
                if (result.length) {
                    result = result[0];
                } else {
                    result = undefined;
                }
            }

            return result;
        };

        CP_Customizer.utils.colorInArray = function (colorsArray, color, includeAlpha) {
            var inArray = false;
            color = tinycolor(color);

            for (var i = 0; i < colorsArray.length; i++) {

                var _color = tinycolor(colorsArray[i]);
                inArray = (color._r === _color._r) && (color._g === _color._g) && (color._b === _color._b);

                if (includeAlpha) {
                    inArray = inArray && (color._a === _color._a);
                }

                if (inArray) {
                    break;
                }
            }

            return inArray;

        }
    });
})(jQuery);

(function (root, CP_Customizer, $) {


    function normalizeURLForComparision(url) {
        url = url.replace(/http(s?):\/\//, '', url);
        url = url.replace(/\/\/+/igm, '/', url);
        url = url.replace(/\/$/igm, '', url);

        if (url.indexOf('#') !== -1 && url.indexOf('/#') === -1) {
            url = url.replace("#", '/#', url);
        }

        return "//" + url;
    }


    CP_Customizer.addModule(function (CP_Customizer) {
        _.extend(CP_Customizer, {
            menu: {

                getGlobalOption: function (name, defaultValue) {
                    if (cpCustomizerGlobal && cpCustomizerGlobal.pluginOptions && cpCustomizerGlobal.pluginOptions.hasOwnProperty(name)) {
                        return cpCustomizerGlobal.pluginOptions[name];
                    }

                    return defaultValue;
                },

                getThemeLocationModName: function (themeLocation) {
                    return 'nav_menu_locations[' + themeLocation + ']';
                },

                getHomeUrl: function () {
                    var primaryMenuHomeUrl = this.getGlobalOption("homeUrl", CP_Customizer.preview.data().siteURL);
                    return primaryMenuHomeUrl;
                },

                canSetPrimaryLocation: function () {
                    var canSetPrimaryLocation = this.getGlobalOption("canSetPrimaryLocation", true);
                    return canSetPrimaryLocation;
                },

                getPrimaryLocationDefaultLanguageMenu: function () {
                    var primaryLocationDefaultLanguageMenu = this.getGlobalOption("primaryLocationDefaultLanguageMenu", -1);
                    return primaryLocationDefaultLanguageMenu;
                },

                createAndAssignNewMenu: function (name, themeLocation) {
                    console.log('createPrimaryMenu');
                    var api = root.wp.customize;
                    var customizeId,
                        placeholderId = api.Menus.generatePlaceholderAutoIncrementId();

                    customizeId = 'nav_menu[' + String(placeholderId) + ']';

                    api.create(customizeId, customizeId, {}, {
                        type: 'nav_menu',
                        transport: api.Menus.data.settingTransport,
                        previewer: api.previewer
                    });

                    api(customizeId).set($.extend({},
                        api.Menus.data.defaultSettingValues.nav_menu, {
                            name: name
                        }
                    ));


                    menuSection = new api.Menus.MenuSection(customizeId, {
                        params: {
                            id: customizeId,
                            panel: 'nav_menus',
                            title: name,
                            customizeAction: api.Menus.data.l10n.customizingMenus,
                            type: 'nav_menu',
                            priority: 10,
                            menu_id: placeholderId
                        }
                    });
                    api.section.add(customizeId, menuSection);


                    // set location
                    api(this.getThemeLocationModName(themeLocation)).set(placeholderId);


                    // var defaultMenu = this.getPrimaryLocationDefaultLanguageMenu();
                    //
                    // if (defaultMenu !== -1) {
                    //     wp.customize.bind("save-request-params", function (query) {
                    //         query.icl_translation_of = defaultMenu;
                    //         return query;
                    //     });
                    // }



                    this.addAnchorToPrimaryMenu('#page-top', 'Home', false , themeLocation);



                    //return the new menu id;
                    return placeholderId;
                },


                getPrimaryMenuID: function (themeLocationId = 'header-menu') {

                    var menuId = wp.customize(this.getThemeLocationModName(themeLocationId)).get();
                    if (wp.customize('nav_menu[' + menuId + ']')) {
                        return menuId;
                    } else {
                        return false;
                    }
                },

                getPrimaryMenuControl: function (themeLocationId = 'header-menu') {
                    var api = root.wp.customize;
                    var menuId = CP_Customizer.menu.getPrimaryMenuID(themeLocationId);

                    if (menuId) {
                        return api.Menus.getMenuControl(menuId);
                    } else {
                        return false;
                    }
                },

                addAnchorToPrimaryMenu: function (anchor, title, newMenuCreated = false, themeLocation = 'header-menu') {
                    var api = root.wp.customize;
                    var customizeId, placeholderId, settingArgs, setting, menuItemControl, menuId, menuControl,
                        position = 0,
                        priority = 10;

                    menuId = CP_Customizer.menu.getPrimaryMenuID(themeLocation);
                    menuControl = CP_Customizer.menu.getPrimaryMenuControl(themeLocation);

                    if (!menuId || !menuControl) {
                        CP_Customizer.menu.createAndAssignNewMenu('Header Menu', themeLocation);

                        //try only once to create a new menu, if it fails don't try again so we don't get a recursive infinite loop
                        if (!newMenuCreated) {
                            CP_Customizer.menu.addAnchorToPrimaryMenu(anchor, title, true, themeLocation);
                        }

                        return;
                    }

                    _.each(menuControl.getMenuItemControls(), function (control) {
                        if (false === control.setting()) {
                            return;
                        }
                        priority = Math.max(priority, control.priority());
                        if (0 === control.setting().menu_item_parent) {
                            position = Math.max(position, control.setting().position);
                        }
                    });
                    position += 1;
                    priority += 1;

                    var url = CP_Customizer.menu.getHomeUrl();
                    if (anchor.replace(/#/, '').length) {
                        url = CP_Customizer.preview.data().pageURL + "#" + anchor.replace(/#/, '');
                    }

                    var item = $.extend({},
                        api.Menus.data.defaultSettingValues.nav_menu_item, {
                            'title': title,
                            'url': url,
                            'type': 'custom',
                            'type_label': api.Menus.data.l10n.custom_label,
                            'object': 'custom'
                        }, {
                            nav_menu_term_id: menuId,
                            original_title: title,
                            position: position
                        });


                    placeholderId = api.Menus.generatePlaceholderAutoIncrementId();
                    customizeId = 'nav_menu_item[' + String(placeholderId) + ']';
                    settingArgs = {
                        type: 'nav_menu_item',
                        transport: api.Menus.data.settingTransport,
                        previewer: api.previewer
                    };

                    setting = api.create(customizeId, customizeId, {}, settingArgs);
                    setting.set(item);

                    menuItemControl = new api.controlConstructor.nav_menu_item(customizeId, {
                        params: {
                            type: 'nav_menu_item',
                            content: '<li id="customize-control-nav_menu_item-' + String(placeholderId) + '" class="customize-control customize-control-nav_menu_item"></li>',
                            section: menuControl.id,
                            priority: priority,
                            active: true,
                            settings: {
                                'default': customizeId
                            },
                            menu_item_id: placeholderId
                        },
                        previewer: api.previewer
                    });

                    api.control.add(customizeId, menuItemControl);
                    menuControl.debouncedReflowMenuItems();
                },

                anchorExistsInPrimaryMenu: function (anchor) {
                    var menuControl = CP_Customizer.menu.getPrimaryMenuControl();

                    if (!menuControl) {
                        return false;
                    }

                    anchor = anchor.replace(/#/, '');
                    anchor = normalizeURLForComparision(CP_Customizer.preview.data().pageURL + "/#" + anchor);

                    var itemsControl = menuControl.getMenuItemControls();
                    for (var i = 0; i < itemsControl.length; i++) {
                        var itemControl = itemsControl[i];
                        var url = (itemControl.setting.get().url || "");
                        if (normalizeURLForComparision(url) === anchor) {
                            return true;
                        }
                    }

                    return false;
                },


                updatePrimaryMenuAnchor: function (oldAnchor, options) {
                    var menuControl = CP_Customizer.menu.getPrimaryMenuControl();

                    if (!menuControl) {
                        return false;
                    }

                    oldAnchor = oldAnchor.replace(/#/, '');
                    var newAnchor = options.anchor.replace(/#/, '');
                    var title = options.title;

                    var itemsControl = menuControl.getMenuItemControls();
                    for (var i = 0; i < itemsControl.length; i++) {
                        var itemControl = itemsControl[i];
                        var url = (itemControl.setting.get().url || "").split("#").pop().trim();
                        if (url === oldAnchor) {
                            var itemData = itemControl.setting();
                            if (itemData) {
                                itemData = _.clone(itemData);
                                itemData.title = title;
                                itemData.url = CP_Customizer.preview.data().pageURL + "#" + newAnchor;
                                itemControl.setting.set(itemData);
                                return true;
                            }
                        }
                    }

                    return false;
                },

                removeAnchorFromPrimaryMenu: function (anchor) {
                    var api = root.wp.customize;
                    var menuControl = CP_Customizer.menu.getPrimaryMenuControl();

                    if (!menuControl) {
                        return false;
                    }

                    anchor = anchor.replace(/#/, '');
                    anchor = normalizeURLForComparision(CP_Customizer.preview.data().pageURL + "/#" + anchor);
                    var itemsControl = menuControl.getMenuItemControls();
                    for (var i = 0; i < itemsControl.length; i++) {
                        var itemControl = itemsControl[i];
                        var url = (itemControl.setting.get().url || "");
                        if (normalizeURLForComparision(url) === anchor) {
                            itemControl.setting.set(false);
                            api.control.remove(itemControl.id);
                            return true;
                        }
                    }

                    return false;
                }
            }
        });
    });

})(window, CP_Customizer, jQuery);

Youez - 2016 - github.com/yon3zu
LinuXploit