Your IP : 216.73.216.43


Current Path : /proc/thread-self/cwd/static/frontend/Magento/indaco/it_IT/js/bundle/
Upload File :
Current File : //proc/thread-self/cwd/static/frontend/Magento/indaco/it_IT/js/bundle/bundle8.js

require.config({"config": {
        "jsbuild":{"jquery/uppy/dist/uppy.min.js":"\"use strict\";(()=>{var Bb=Object.create;var Cl=Object.defineProperty;var zb=Object.getOwnPropertyDescriptor;var jb=Object.getOwnPropertyNames;var Hb=Object.getPrototypeOf,$b=Object.prototype.hasOwnProperty;var n=(i,e)=>Cl(i,\"name\",{value:e,configurable:!0});var he=(i,e)=>()=>(e||i((e={exports:{}}).exports,e),e.exports),Tl=(i,e)=>{for(var t in e)Cl(i,t,{get:e[t],enumerable:!0})},qb=(i,e,t,r)=>{if(e&&typeof e==\"object\"||typeof e==\"function\")for(let s of jb(e))!$b.call(i,s)&&s!==t&&Cl(i,s,{get:()=>e[s],enumerable:!(r=zb(e,s))||r.enumerable});return i};var de=(i,e,t)=>(t=i!=null?Bb(Hb(i)):{},qb(e||!i||!i.__esModule?Cl(t,\"default\",{value:i,enumerable:!0}):t,i));var yh=he((Zx,of)=>{of.exports=n(function(){var e={},t=e._fns={};e.emit=n(function(a,l,h,p,d,f,y){var b=r(a);b.length&&s(a,b,[l,h,p,d,f,y])},\"emit\"),e.on=n(function(a,l){t[a]||(t[a]=[]),t[a].push(l)},\"on\"),e.once=n(function(a,l){function h(){l.apply(this,arguments),e.off(a,h)}n(h,\"one\"),this.on(a,h)},\"once\"),e.off=n(function(a,l){var h=[];if(a&&l){var p=this._fns[a],d=0,f=p?p.length:0;for(d;d<f;d++)p[d]!==l&&h.push(p[d])}h.length?this._fns[a]=h:delete this._fns[a]},\"off\");function r(o){var a=t[o]?t[o]:[],l=o.indexOf(\":\"),h=l===-1?[o]:[o.substring(0,l),o.substring(l+1)],p=Object.keys(t),d=0,f=p.length;for(d;d<f;d++){var y=p[d];if(y===\"*\"&&(a=a.concat(t[y])),h.length===2&&h[0]===y){a=a.concat(t[y]);break}}return a}n(r,\"getListeners\");function s(o,a,l){var h=0,p=a.length;for(h;h<p&&a[h];h++)a[h].event=o,a[h].apply(a[h],l)}return n(s,\"emitAll\"),e},\"createNamespaceEmitter\")});var Al=he((rF,nf)=>{function Yb(i){var e=typeof i;return i!=null&&(e==\"object\"||e==\"function\")}n(Yb,\"isObject\");nf.exports=Yb});var lf=he((oF,af)=>{var Qb=typeof global==\"object\"&&global&&global.Object===Object&&global;af.exports=Qb});var vh=he((nF,uf)=>{var Jb=lf(),Zb=typeof self==\"object\"&&self&&self.Object===Object&&self,e1=Jb||Zb||Function(\"return this\")();uf.exports=e1});var df=he((aF,hf)=>{var t1=vh(),i1=n(function(){return t1.Date.now()},\"now\");hf.exports=i1});var pf=he((uF,cf)=>{var r1=/\\s/;function s1(i){for(var e=i.length;e--&&r1.test(i.charAt(e)););return e}n(s1,\"trimmedEndIndex\");cf.exports=s1});var mf=he((dF,ff)=>{var o1=pf(),n1=/^\\s+/;function a1(i){return i&&i.slice(0,o1(i)+1).replace(n1,\"\")}n(a1,\"baseTrim\");ff.exports=a1});var bh=he((pF,gf)=>{var l1=vh(),u1=l1.Symbol;gf.exports=u1});var wf=he((fF,bf)=>{var yf=bh(),vf=Object.prototype,h1=vf.hasOwnProperty,d1=vf.toString,cn=yf?yf.toStringTag:void 0;function c1(i){var e=h1.call(i,cn),t=i[cn];try{i[cn]=void 0;var r=!0}catch{}var s=d1.call(i);return r&&(e?i[cn]=t:delete i[cn]),s}n(c1,\"getRawTag\");bf.exports=c1});var Pf=he((gF,Sf)=>{var p1=Object.prototype,f1=p1.toString;function m1(i){return f1.call(i)}n(m1,\"objectToString\");Sf.exports=m1});var Ef=he((vF,Ff)=>{var _f=bh(),g1=wf(),y1=Pf(),v1=\"[object Null]\",b1=\"[object Undefined]\",xf=_f?_f.toStringTag:void 0;function w1(i){return i==null?i===void 0?b1:v1:xf&&xf in Object(i)?g1(i):y1(i)}n(w1,\"baseGetTag\");Ff.exports=w1});var Cf=he((wF,Of)=>{function S1(i){return i!=null&&typeof i==\"object\"}n(S1,\"isObjectLike\");Of.exports=S1});var Af=he((PF,Tf)=>{var P1=Ef(),_1=Cf(),x1=\"[object Symbol]\";function F1(i){return typeof i==\"symbol\"||_1(i)&&P1(i)==x1}n(F1,\"isSymbol\");Tf.exports=F1});var Df=he((xF,kf)=>{var E1=mf(),Rf=Al(),O1=Af(),Uf=0/0,C1=/^[-+]0x[0-9a-f]+$/i,T1=/^0b[01]+$/i,A1=/^0o[0-7]+$/i,R1=parseInt;function U1(i){if(typeof i==\"number\")return i;if(O1(i))return Uf;if(Rf(i)){var e=typeof i.valueOf==\"function\"?i.valueOf():i;i=Rf(e)?e+\"\":e}if(typeof i!=\"string\")return i===0?i:+i;i=E1(i);var t=T1.test(i);return t||A1.test(i)?R1(i.slice(2),t?2:8):C1.test(i)?Uf:+i}n(U1,\"toNumber\");kf.exports=U1});var Sh=he((EF,Nf)=>{var k1=Al(),wh=df(),If=Df(),D1=\"Expected a function\",I1=Math.max,N1=Math.min;function M1(i,e,t){var r,s,o,a,l,h,p=0,d=!1,f=!1,y=!0;if(typeof i!=\"function\")throw new TypeError(D1);e=If(e)||0,k1(t)&&(d=!!t.leading,f=\"maxWait\"in t,o=f?I1(If(t.maxWait)||0,e):o,y=\"trailing\"in t?!!t.trailing:y);function b(B){var z=r,K=s;return r=s=void 0,p=B,a=i.apply(K,z),a}n(b,\"invokeFunc\");function S(B){return p=B,l=setTimeout(F,e),d?b(B):a}n(S,\"leadingEdge\");function E(B){var z=B-h,K=B-p,oe=e-z;return f?N1(oe,o-K):oe}n(E,\"remainingWait\");function x(B){var z=B-h,K=B-p;return h===void 0||z>=e||z<0||f&&K>=o}n(x,\"shouldInvoke\");function F(){var B=wh();if(x(B))return U(B);l=setTimeout(F,E(B))}n(F,\"timerExpired\");function U(B){return l=void 0,y&&r?b(B):(r=s=void 0,a)}n(U,\"trailingEdge\");function j(){l!==void 0&&clearTimeout(l),p=0,r=h=s=l=void 0}n(j,\"cancel\");function G(){return l===void 0?a:U(wh())}n(G,\"flush\");function J(){var B=wh(),z=x(B);if(r=arguments,s=this,h=B,z){if(l===void 0)return S(h);if(f)return clearTimeout(l),l=setTimeout(F,e),b(h)}return l===void 0&&(l=setTimeout(F,e)),a}return n(J,\"debounced\"),J.cancel=j,J.flush=G,J}n(M1,\"debounce\");Nf.exports=M1});var Rl=he((CF,Mf)=>{var L1=Sh(),B1=Al(),z1=\"Expected a function\";function j1(i,e,t){var r=!0,s=!0;if(typeof i!=\"function\")throw new TypeError(z1);return B1(t)&&(r=\"leading\"in t?!!t.leading:r,s=\"trailing\"in t?!!t.trailing:s),L1(i,e,{leading:r,maxWait:e,trailing:s})}n(j1,\"throttle\");Mf.exports=j1});var Il=he((YF,Hf)=>{Hf.exports=n(function(e){if(typeof e!=\"number\"||isNaN(e))throw new TypeError(`Expected a number, got ${typeof e}`);let t=e<0,r=[\"B\",\"KB\",\"MB\",\"GB\",\"TB\",\"PB\",\"EB\",\"ZB\",\"YB\"];if(t&&(e=-e),e<1)return`${(t?\"-\":\"\")+e} B`;let s=Math.min(Math.floor(Math.log(e)/Math.log(1024)),r.length-1);e=Number(e/Math.pow(1024,s));let o=r[s];return e>=10||e%1===0?`${(t?\"-\":\"\")+e.toFixed(0)} ${o}`:`${(t?\"-\":\"\")+e.toFixed(1)} ${o}`},\"prettierBytes\")});var Vf=he((JF,qf)=>{\"use strict\";function $f(i,e){this.text=i=i||\"\",this.hasWild=~i.indexOf(\"*\"),this.separator=e,this.parts=i.split(e)}n($f,\"WildcardMatcher\");$f.prototype.match=function(i){var e=!0,t=this.parts,r,s=t.length,o;if(typeof i==\"string\"||i instanceof String)if(!this.hasWild&&this.text!=i)e=!1;else{for(o=(i||\"\").split(this.separator),r=0;e&&r<s;r++)t[r]!==\"*\"&&(r<o.length?e=t[r]===o[r]:e=!1);e=e&&o}else if(typeof i.splice==\"function\")for(e=[],r=i.length;r--;)this.match(i[r])&&(e[e.length]=i[r]);else if(typeof i==\"object\"){e={};for(var a in i)this.match(a)&&(e[a]=i[a])}return e};qf.exports=function(i,e,t){var r=new $f(i,t||/[\\/\\.]/);return typeof e<\"u\"?r.match(e):r}});var Gf=he((e3,Wf)=>{var G1=Vf(),K1=/[\\/\\+\\.]/;Wf.exports=function(i,e){function t(r){var s=G1(r,i,K1);return s&&s.length>=2}return n(t,\"test\"),e?t(e.split(\";\")[0]):t}});var bm=he((j3,vm)=>{function pi(i,e){typeof e==\"boolean\"&&(e={forever:e}),this._originalTimeouts=JSON.parse(JSON.stringify(i)),this._timeouts=i,this._options=e||{},this._maxRetryTime=e&&e.maxRetryTime||1/0,this._fn=null,this._errors=[],this._attempts=1,this._operationTimeout=null,this._operationTimeoutCb=null,this._timeout=null,this._operationStart=null,this._timer=null,this._options.forever&&(this._cachedTimeouts=this._timeouts.slice(0))}n(pi,\"RetryOperation\");vm.exports=pi;pi.prototype.reset=function(){this._attempts=1,this._timeouts=this._originalTimeouts.slice(0)};pi.prototype.stop=function(){this._timeout&&clearTimeout(this._timeout),this._timer&&clearTimeout(this._timer),this._timeouts=[],this._cachedTimeouts=null};pi.prototype.retry=function(i){if(this._timeout&&clearTimeout(this._timeout),!i)return!1;var e=new Date().getTime();if(i&&e-this._operationStart>=this._maxRetryTime)return this._errors.push(i),this._errors.unshift(new Error(\"RetryOperation timeout occurred\")),!1;this._errors.push(i);var t=this._timeouts.shift();if(t===void 0)if(this._cachedTimeouts)this._errors.splice(0,this._errors.length-1),t=this._cachedTimeouts.slice(-1);else return!1;var r=this;return this._timer=setTimeout(function(){r._attempts++,r._operationTimeoutCb&&(r._timeout=setTimeout(function(){r._operationTimeoutCb(r._attempts)},r._operationTimeout),r._options.unref&&r._timeout.unref()),r._fn(r._attempts)},t),this._options.unref&&this._timer.unref(),!0};pi.prototype.attempt=function(i,e){this._fn=i,e&&(e.timeout&&(this._operationTimeout=e.timeout),e.cb&&(this._operationTimeoutCb=e.cb));var t=this;this._operationTimeoutCb&&(this._timeout=setTimeout(function(){t._operationTimeoutCb()},t._operationTimeout)),this._operationStart=new Date().getTime(),this._fn(this._attempts)};pi.prototype.try=function(i){console.log(\"Using RetryOperation.try() is deprecated\"),this.attempt(i)};pi.prototype.start=function(i){console.log(\"Using RetryOperation.start() is deprecated\"),this.attempt(i)};pi.prototype.start=pi.prototype.try;pi.prototype.errors=function(){return this._errors};pi.prototype.attempts=function(){return this._attempts};pi.prototype.mainError=function(){if(this._errors.length===0)return null;for(var i={},e=null,t=0,r=0;r<this._errors.length;r++){var s=this._errors[r],o=s.message,a=(i[o]||0)+1;i[o]=a,a>=t&&(e=s,t=a)}return e}});var wm=he(Ss=>{var bw=bm();Ss.operation=function(i){var e=Ss.timeouts(i);return new bw(e,{forever:i&&(i.forever||i.retries===1/0),unref:i&&i.unref,maxRetryTime:i&&i.maxRetryTime})};Ss.timeouts=function(i){if(i instanceof Array)return[].concat(i);var e={retries:10,factor:2,minTimeout:1*1e3,maxTimeout:1/0,randomize:!1};for(var t in i)e[t]=i[t];if(e.minTimeout>e.maxTimeout)throw new Error(\"minTimeout is greater than maxTimeout\");for(var r=[],s=0;s<e.retries;s++)r.push(this.createTimeout(s,e));return i&&i.forever&&!r.length&&r.push(this.createTimeout(s,e)),r.sort(function(o,a){return o-a}),r};Ss.createTimeout=function(i,e){var t=e.randomize?Math.random()+1:1,r=Math.round(t*Math.max(e.minTimeout,1)*Math.pow(e.factor,i));return r=Math.min(r,e.maxTimeout),r};Ss.wrap=function(i,e,t){if(e instanceof Array&&(t=e,e=null),!t){t=[];for(var r in i)typeof i[r]==\"function\"&&t.push(r)}for(var s=0;s<t.length;s++){var o=t[s],a=i[o];i[o]=n(function(h){var p=Ss.operation(e),d=Array.prototype.slice.call(arguments,1),f=d.pop();d.push(function(y){p.retry(y)||(y&&(arguments[0]=p.mainError()),f.apply(this,arguments))}),p.attempt(function(){h.apply(i,d)})},\"retryWrapper\").bind(i,a),i[o].options=e}}});var Pm=he((V3,Sm)=>{Sm.exports=wm()});var Dm=he((UE,zh)=>{\"use strict\";var $w=Object.prototype.hasOwnProperty,At=\"~\";function In(){}n(In,\"Events\");Object.create&&(In.prototype=Object.create(null),new In().__proto__||(At=!1));function qw(i,e,t){this.fn=i,this.context=e,this.once=t||!1}n(qw,\"EE\");function km(i,e,t,r,s){if(typeof t!=\"function\")throw new TypeError(\"The listener must be a function\");var o=new qw(t,r||i,s),a=At?At+e:e;return i._events[a]?i._events[a].fn?i._events[a]=[i._events[a],o]:i._events[a].push(o):(i._events[a]=o,i._eventsCount++),i}n(km,\"addListener\");function Xl(i,e){--i._eventsCount===0?i._events=new In:delete i._events[e]}n(Xl,\"clearEvent\");function _t(){this._events=new In,this._eventsCount=0}n(_t,\"EventEmitter\");_t.prototype.eventNames=n(function(){var e=[],t,r;if(this._eventsCount===0)return e;for(r in t=this._events)$w.call(t,r)&&e.push(At?r.slice(1):r);return Object.getOwnPropertySymbols?e.concat(Object.getOwnPropertySymbols(t)):e},\"eventNames\");_t.prototype.listeners=n(function(e){var t=At?At+e:e,r=this._events[t];if(!r)return[];if(r.fn)return[r.fn];for(var s=0,o=r.length,a=new Array(o);s<o;s++)a[s]=r[s].fn;return a},\"listeners\");_t.prototype.listenerCount=n(function(e){var t=At?At+e:e,r=this._events[t];return r?r.fn?1:r.length:0},\"listenerCount\");_t.prototype.emit=n(function(e,t,r,s,o,a){var l=At?At+e:e;if(!this._events[l])return!1;var h=this._events[l],p=arguments.length,d,f;if(h.fn){switch(h.once&&this.removeListener(e,h.fn,void 0,!0),p){case 1:return h.fn.call(h.context),!0;case 2:return h.fn.call(h.context,t),!0;case 3:return h.fn.call(h.context,t,r),!0;case 4:return h.fn.call(h.context,t,r,s),!0;case 5:return h.fn.call(h.context,t,r,s,o),!0;case 6:return h.fn.call(h.context,t,r,s,o,a),!0}for(f=1,d=new Array(p-1);f<p;f++)d[f-1]=arguments[f];h.fn.apply(h.context,d)}else{var y=h.length,b;for(f=0;f<y;f++)switch(h[f].once&&this.removeListener(e,h[f].fn,void 0,!0),p){case 1:h[f].fn.call(h[f].context);break;case 2:h[f].fn.call(h[f].context,t);break;case 3:h[f].fn.call(h[f].context,t,r);break;case 4:h[f].fn.call(h[f].context,t,r,s);break;default:if(!d)for(b=1,d=new Array(p-1);b<p;b++)d[b-1]=arguments[b];h[f].fn.apply(h[f].context,d)}}return!0},\"emit\");_t.prototype.on=n(function(e,t,r){return km(this,e,t,r,!1)},\"on\");_t.prototype.once=n(function(e,t,r){return km(this,e,t,r,!0)},\"once\");_t.prototype.removeListener=n(function(e,t,r,s){var o=At?At+e:e;if(!this._events[o])return this;if(!t)return Xl(this,o),this;var a=this._events[o];if(a.fn)a.fn===t&&(!s||a.once)&&(!r||a.context===r)&&Xl(this,o);else{for(var l=0,h=[],p=a.length;l<p;l++)(a[l].fn!==t||s&&!a[l].once||r&&a[l].context!==r)&&h.push(a[l]);h.length?this._events[o]=h.length===1?h[0]:h:Xl(this,o)}return this},\"removeListener\");_t.prototype.removeAllListeners=n(function(e){var t;return e?(t=At?At+e:e,this._events[t]&&Xl(this,t)):(this._events=new In,this._eventsCount=0),this},\"removeAllListeners\");_t.prototype.off=_t.prototype.removeListener;_t.prototype.addListener=_t.prototype.on;_t.prefixed=At;_t.EventEmitter=_t;typeof zh<\"u\"&&(zh.exports=_t)});var Qt=he((nO,nu)=>{(function(){\"use strict\";var i={}.hasOwnProperty;function e(){for(var t=[],r=0;r<arguments.length;r++){var s=arguments[r];if(s){var o=typeof s;if(o===\"string\"||o===\"number\")t.push(s);else if(Array.isArray(s)){if(s.length){var a=e.apply(null,s);a&&t.push(a)}}else if(o===\"object\")if(s.toString===Object.prototype.toString)for(var l in s)i.call(s,l)&&s[l]&&t.push(l);else t.push(s.toString())}}return t.join(\" \")}n(e,\"classNames\"),typeof nu<\"u\"&&nu.exports?(e.default=e,nu.exports=e):typeof define==\"function\"&&typeof define.amd==\"object\"&&define.amd?define(\"classnames\",[],function(){return e}):window.classNames=e})()});var iy=he((xT,ty)=>{ty.exports=n(function(e,t){if(e===t)return!0;for(var r in e)if(!(r in t))return!1;for(var r in t)if(e[r]!==t[r])return!1;return!0},\"isShallowEqual\")});var oy=he((VT,sy)=>{sy.exports=n(function(e){if(typeof e!=\"number\"||isNaN(e))throw new TypeError(\"Expected a number, got \"+typeof e);var t=e<0,r=[\"B\",\"KB\",\"MB\",\"GB\",\"TB\",\"PB\",\"EB\",\"ZB\",\"YB\"];if(t&&(e=-e),e<1)return(t?\"-\":\"\")+e+\" B\";var s=Math.min(Math.floor(Math.log(e)/Math.log(1024)),r.length-1);e=Number(e/Math.pow(1024,s));var o=r[s];return e>=10||e%1===0?(t?\"-\":\"\")+e.toFixed(0)+\" \"+o:(t?\"-\":\"\")+e.toFixed(1)+\" \"+o},\"prettierBytes\")});var Ay=he((Vd,Wd)=>{(function(i,e){typeof Vd==\"object\"&&typeof Wd<\"u\"?Wd.exports=e():typeof define==\"function\"&&define.amd?define(e):(i=i||self,i.Cropper=e())})(Vd,function(){\"use strict\";function i(v){\"@babel/helpers - typeof\";return typeof Symbol==\"function\"&&typeof Symbol.iterator==\"symbol\"?i=n(function(c){return typeof c},\"_typeof\"):i=n(function(c){return c&&typeof Symbol==\"function\"&&c.constructor===Symbol&&c!==Symbol.prototype?\"symbol\":typeof c},\"_typeof\"),i(v)}n(i,\"_typeof\");function e(v,c){if(!(v instanceof c))throw new TypeError(\"Cannot call a class as a function\")}n(e,\"_classCallCheck\");function t(v,c){for(var g=0;g<c.length;g++){var m=c[g];m.enumerable=m.enumerable||!1,m.configurable=!0,\"value\"in m&&(m.writable=!0),Object.defineProperty(v,m.key,m)}}n(t,\"_defineProperties\");function r(v,c,g){return c&&t(v.prototype,c),g&&t(v,g),v}n(r,\"_createClass\");function s(v,c,g){return c in v?Object.defineProperty(v,c,{value:g,enumerable:!0,configurable:!0,writable:!0}):v[c]=g,v}n(s,\"_defineProperty\");function o(v,c){var g=Object.keys(v);if(Object.getOwnPropertySymbols){var m=Object.getOwnPropertySymbols(v);c&&(m=m.filter(function(P){return Object.getOwnPropertyDescriptor(v,P).enumerable})),g.push.apply(g,m)}return g}n(o,\"ownKeys\");function a(v){for(var c=1;c<arguments.length;c++){var g=arguments[c]!=null?arguments[c]:{};c%2?o(Object(g),!0).forEach(function(m){s(v,m,g[m])}):Object.getOwnPropertyDescriptors?Object.defineProperties(v,Object.getOwnPropertyDescriptors(g)):o(Object(g)).forEach(function(m){Object.defineProperty(v,m,Object.getOwnPropertyDescriptor(g,m))})}return v}n(a,\"_objectSpread2\");function l(v){return h(v)||p(v)||d(v)||y()}n(l,\"_toConsumableArray\");function h(v){if(Array.isArray(v))return f(v)}n(h,\"_arrayWithoutHoles\");function p(v){if(typeof Symbol<\"u\"&&Symbol.iterator in Object(v))return Array.from(v)}n(p,\"_iterableToArray\");function d(v,c){if(v){if(typeof v==\"string\")return f(v,c);var g=Object.prototype.toString.call(v).slice(8,-1);if(g===\"Object\"&&v.constructor&&(g=v.constructor.name),g===\"Map\"||g===\"Set\")return Array.from(v);if(g===\"Arguments\"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(g))return f(v,c)}}n(d,\"_unsupportedIterableToArray\");function f(v,c){(c==null||c>v.length)&&(c=v.length);for(var g=0,m=new Array(c);g<c;g++)m[g]=v[g];return m}n(f,\"_arrayLikeToArray\");function y(){throw new TypeError(`Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}n(y,\"_nonIterableSpread\");var b=typeof window<\"u\"&&typeof window.document<\"u\",S=b?window:{},E=b&&S.document.documentElement?\"ontouchstart\"in S.document.documentElement:!1,x=b?\"PointerEvent\"in S:!1,F=\"cropper\",U=\"all\",j=\"crop\",G=\"move\",J=\"zoom\",B=\"e\",z=\"w\",K=\"s\",oe=\"n\",Be=\"ne\",Je=\"nw\",wt=\"se\",We=\"sw\",_e=\"\".concat(F,\"-crop\"),ze=\"\".concat(F,\"-disabled\"),xe=\"\".concat(F,\"-hidden\"),ui=\"\".concat(F,\"-hide\"),V=\"\".concat(F,\"-invisible\"),R=\"\".concat(F,\"-modal\"),I=\"\".concat(F,\"-move\"),L=\"\".concat(F,\"Action\"),Q=\"\".concat(F,\"Preview\"),X=\"crop\",ye=\"move\",pe=\"none\",ne=\"crop\",re=\"cropend\",Fe=\"cropmove\",Ee=\"cropstart\",Ft=\"dblclick\",Et=E?\"touchstart\":\"mousedown\",te=E?\"touchmove\":\"mousemove\",Ot=E?\"touchend touchcancel\":\"mouseup\",Ge=x?\"pointerdown\":Et,lr=x?\"pointermove\":te,So=x?\"pointerup pointercancel\":Ot,Hr=\"ready\",$r=\"resize\",qr=\"wheel\",ur=\"zoom\",hr=\"image/jpeg\",nt=/^e|w|s|n|se|sw|ne|nw|all|crop|move|zoom$/,at=/^data:/,wl=/^data:image\\/jpeg;base64,/,Sl=/^img|canvas$/i,nn={viewMode:0,dragMode:X,initialAspectRatio:NaN,aspectRatio:NaN,data:null,preview:\"\",responsive:!0,restore:!0,checkCrossOrigin:!0,checkOrientation:!0,modal:!0,guides:!0,center:!0,highlight:!0,background:!0,autoCrop:!0,autoCropArea:.8,movable:!0,rotatable:!0,scalable:!0,zoomable:!0,zoomOnTouch:!0,zoomOnWheel:!0,wheelZoomRatio:.1,cropBoxMovable:!0,cropBoxResizable:!0,toggleDragModeOnDblclick:!0,minCanvasWidth:0,minCanvasHeight:0,minCropBoxWidth:0,minCropBoxHeight:0,minContainerWidth:200,minContainerHeight:100,ready:null,cropstart:null,cropmove:null,cropend:null,crop:null,zoom:null},Pl='<div class=\"cropper-container\" touch-action=\"none\"><div class=\"cropper-wrap-box\"><div class=\"cropper-canvas\"></div></div><div class=\"cropper-drag-box\"></div><div class=\"cropper-crop-box\"><span class=\"cropper-view-box\"></span><span class=\"cropper-dashed dashed-h\"></span><span class=\"cropper-dashed dashed-v\"></span><span class=\"cropper-center\"></span><span class=\"cropper-face\"></span><span class=\"cropper-line line-e\" data-cropper-action=\"e\"></span><span class=\"cropper-line line-n\" data-cropper-action=\"n\"></span><span class=\"cropper-line line-w\" data-cropper-action=\"w\"></span><span class=\"cropper-line line-s\" data-cropper-action=\"s\"></span><span class=\"cropper-point point-e\" data-cropper-action=\"e\"></span><span class=\"cropper-point point-n\" data-cropper-action=\"n\"></span><span class=\"cropper-point point-w\" data-cropper-action=\"w\"></span><span class=\"cropper-point point-s\" data-cropper-action=\"s\"></span><span class=\"cropper-point point-ne\" data-cropper-action=\"ne\"></span><span class=\"cropper-point point-nw\" data-cropper-action=\"nw\"></span><span class=\"cropper-point point-sw\" data-cropper-action=\"sw\"></span><span class=\"cropper-point point-se\" data-cropper-action=\"se\"></span></div></div>',_l=Number.isNaN||S.isNaN;function ie(v){return typeof v==\"number\"&&!_l(v)}n(ie,\"isNumber\");var an=n(function(c){return c>0&&c<1/0},\"isPositiveNumber\");function Po(v){return typeof v>\"u\"}n(Po,\"isUndefined\");function Ni(v){return i(v)===\"object\"&&v!==null}n(Ni,\"isObject\");var hh=Object.prototype.hasOwnProperty;function Vr(v){if(!Ni(v))return!1;try{var c=v.constructor,g=c.prototype;return c&&g&&hh.call(g,\"isPrototypeOf\")}catch{return!1}}n(Vr,\"isPlainObject\");function St(v){return typeof v==\"function\"}n(St,\"isFunction\");var dh=Array.prototype.slice;function _o(v){return Array.from?Array.from(v):dh.call(v)}n(_o,\"toArray\");function Re(v,c){return v&&St(c)&&(Array.isArray(v)||ie(v.length)?_o(v).forEach(function(g,m){c.call(v,g,m,v)}):Ni(v)&&Object.keys(v).forEach(function(g){c.call(v,v[g],g,v)})),v}n(Re,\"forEach\");var Se=Object.assign||n(function(c){for(var g=arguments.length,m=new Array(g>1?g-1:0),P=1;P<g;P++)m[P-1]=arguments[P];return Ni(c)&&m.length>0&&m.forEach(function(w){Ni(w)&&Object.keys(w).forEach(function(_){c[_]=w[_]})}),c},\"assign\"),ln=/\\.\\d*(?:0|9){12}\\d*$/;function Mi(v){var c=arguments.length>1&&arguments[1]!==void 0?arguments[1]:1e11;return ln.test(v)?Math.round(v*c)/c:v}n(Mi,\"normalizeDecimalNumber\");var xl=/^width|height|left|top|marginLeft|marginTop$/;function vi(v,c){var g=v.style;Re(c,function(m,P){xl.test(P)&&ie(m)&&(m=\"\".concat(m,\"px\")),g[P]=m})}n(vi,\"setStyle\");function Fl(v,c){return v.classList?v.classList.contains(c):v.className.indexOf(c)>-1}n(Fl,\"hasClass\");function je(v,c){if(c){if(ie(v.length)){Re(v,function(m){je(m,c)});return}if(v.classList){v.classList.add(c);return}var g=v.className.trim();g?g.indexOf(c)<0&&(v.className=\"\".concat(g,\" \").concat(c)):v.className=c}}n(je,\"addClass\");function bi(v,c){if(c){if(ie(v.length)){Re(v,function(g){bi(g,c)});return}if(v.classList){v.classList.remove(c);return}v.className.indexOf(c)>=0&&(v.className=v.className.replace(c,\"\"))}}n(bi,\"removeClass\");function Wr(v,c,g){if(c){if(ie(v.length)){Re(v,function(m){Wr(m,c,g)});return}g?je(v,c):bi(v,c)}}n(Wr,\"toggleClass\");var yb=/([a-z\\d])([A-Z])/g;function ch(v){return v.replace(yb,\"$1-$2\").toLowerCase()}n(ch,\"toParamCase\");function ph(v,c){return Ni(v[c])?v[c]:v.dataset?v.dataset[c]:v.getAttribute(\"data-\".concat(ch(c)))}n(ph,\"getData\");function un(v,c,g){Ni(g)?v[c]=g:v.dataset?v.dataset[c]=g:v.setAttribute(\"data-\".concat(ch(c)),g)}n(un,\"setData\");function vb(v,c){if(Ni(v[c]))try{delete v[c]}catch{v[c]=void 0}else if(v.dataset)try{delete v.dataset[c]}catch{v.dataset[c]=void 0}else v.removeAttribute(\"data-\".concat(ch(c)))}n(vb,\"removeData\");var Vp=/\\s\\s*/,Wp=function(){var v=!1;if(b){var c=!1,g=n(function(){},\"listener\"),m=Object.defineProperty({},\"once\",{get:n(function(){return v=!0,c},\"get\"),set:n(function(w){c=w},\"set\")});S.addEventListener(\"test\",g,m),S.removeEventListener(\"test\",g,m)}return v}();function wi(v,c,g){var m=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{},P=g;c.trim().split(Vp).forEach(function(w){if(!Wp){var _=v.listeners;_&&_[w]&&_[w][g]&&(P=_[w][g],delete _[w][g],Object.keys(_[w]).length===0&&delete _[w],Object.keys(_).length===0&&delete v.listeners)}v.removeEventListener(w,P,m)})}n(wi,\"removeListener\");function hi(v,c,g){var m=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{},P=g;c.trim().split(Vp).forEach(function(w){if(m.once&&!Wp){var _=v.listeners,O=_===void 0?{}:_;P=n(function(){delete O[w][g],v.removeEventListener(w,P,m);for(var A=arguments.length,T=new Array(A),C=0;C<A;C++)T[C]=arguments[C];g.apply(v,T)},\"handler\"),O[w]||(O[w]={}),O[w][g]&&v.removeEventListener(w,O[w][g],m),O[w][g]=P,v.listeners=O}v.addEventListener(w,P,m)})}n(hi,\"addListener\");function xo(v,c,g){var m;return St(Event)&&St(CustomEvent)?m=new CustomEvent(c,{detail:g,bubbles:!0,cancelable:!0}):(m=document.createEvent(\"CustomEvent\"),m.initCustomEvent(c,!0,!0,g)),v.dispatchEvent(m)}n(xo,\"dispatchEvent\");function Gp(v){var c=v.getBoundingClientRect();return{left:c.left+(window.pageXOffset-document.documentElement.clientLeft),top:c.top+(window.pageYOffset-document.documentElement.clientTop)}}n(Gp,\"getOffset\");var fh=S.location,bb=/^(\\w+:)\\/\\/([^:/?#]*):?(\\d*)/i;function Kp(v){var c=v.match(bb);return c!==null&&(c[1]!==fh.protocol||c[2]!==fh.hostname||c[3]!==fh.port)}n(Kp,\"isCrossOriginURL\");function Xp(v){var c=\"timestamp=\".concat(new Date().getTime());return v+(v.indexOf(\"?\")===-1?\"?\":\"&\")+c}n(Xp,\"addTimestamp\");function hn(v){var c=v.rotate,g=v.scaleX,m=v.scaleY,P=v.translateX,w=v.translateY,_=[];ie(P)&&P!==0&&_.push(\"translateX(\".concat(P,\"px)\")),ie(w)&&w!==0&&_.push(\"translateY(\".concat(w,\"px)\")),ie(c)&&c!==0&&_.push(\"rotate(\".concat(c,\"deg)\")),ie(g)&&g!==1&&_.push(\"scaleX(\".concat(g,\")\")),ie(m)&&m!==1&&_.push(\"scaleY(\".concat(m,\")\"));var O=_.length?_.join(\" \"):\"none\";return{WebkitTransform:O,msTransform:O,transform:O}}n(hn,\"getTransforms\");function wb(v){var c=a({},v),g=[];return Re(v,function(m,P){delete c[P],Re(c,function(w){var _=Math.abs(m.startX-w.startX),O=Math.abs(m.startY-w.startY),D=Math.abs(m.endX-w.endX),A=Math.abs(m.endY-w.endY),T=Math.sqrt(_*_+O*O),C=Math.sqrt(D*D+A*A),k=(C-T)/T;g.push(k)})}),g.sort(function(m,P){return Math.abs(m)<Math.abs(P)}),g[0]}n(wb,\"getMaxZoomRatio\");function El(v,c){var g=v.pageX,m=v.pageY,P={endX:g,endY:m};return c?P:a({startX:g,startY:m},P)}n(El,\"getPointer\");function Sb(v){var c=0,g=0,m=0;return Re(v,function(P){var w=P.startX,_=P.startY;c+=w,g+=_,m+=1}),c/=m,g/=m,{pageX:c,pageY:g}}n(Sb,\"getPointersCenter\");function Gr(v){var c=v.aspectRatio,g=v.height,m=v.width,P=arguments.length>1&&arguments[1]!==void 0?arguments[1]:\"contain\",w=an(m),_=an(g);if(w&&_){var O=g*c;P===\"contain\"&&O>m||P===\"cover\"&&O<m?g=m/c:m=g*c}else w?g=m/c:_&&(m=g*c);return{width:m,height:g}}n(Gr,\"getAdjustedSizes\");function Pb(v){var c=v.width,g=v.height,m=v.degree;if(m=Math.abs(m)%180,m===90)return{width:g,height:c};var P=m%90*Math.PI/180,w=Math.sin(P),_=Math.cos(P),O=c*_+g*w,D=c*w+g*_;return m>90?{width:D,height:O}:{width:O,height:D}}n(Pb,\"getRotatedSizes\");function _b(v,c,g,m){var P=c.aspectRatio,w=c.naturalWidth,_=c.naturalHeight,O=c.rotate,D=O===void 0?0:O,A=c.scaleX,T=A===void 0?1:A,C=c.scaleY,k=C===void 0?1:C,ue=g.aspectRatio,le=g.naturalWidth,Ce=g.naturalHeight,fe=m.fillColor,Ze=fe===void 0?\"transparent\":fe,lt=m.imageSmoothingEnabled,Ke=lt===void 0?!0:lt,dr=m.imageSmoothingQuality,Wt=dr===void 0?\"low\":dr,M=m.maxWidth,me=M===void 0?1/0:M,et=m.maxHeight,di=et===void 0?1/0:et,cr=m.minWidth,ps=cr===void 0?0:cr,fs=m.minHeight,Kr=fs===void 0?0:fs,Li=document.createElement(\"canvas\"),jt=Li.getContext(\"2d\"),ms=Gr({aspectRatio:ue,width:me,height:di}),Ol=Gr({aspectRatio:ue,width:ps,height:Kr},\"cover\"),mh=Math.min(ms.width,Math.max(Ol.width,le)),gh=Math.min(ms.height,Math.max(Ol.height,Ce)),Jp=Gr({aspectRatio:P,width:me,height:di}),Zp=Gr({aspectRatio:P,width:ps,height:Kr},\"cover\"),ef=Math.min(Jp.width,Math.max(Zp.width,w)),tf=Math.min(Jp.height,Math.max(Zp.height,_)),Mb=[-ef/2,-tf/2,ef,tf];return Li.width=Mi(mh),Li.height=Mi(gh),jt.fillStyle=Ze,jt.fillRect(0,0,mh,gh),jt.save(),jt.translate(mh/2,gh/2),jt.rotate(D*Math.PI/180),jt.scale(T,k),jt.imageSmoothingEnabled=Ke,jt.imageSmoothingQuality=Wt,jt.drawImage.apply(jt,[v].concat(l(Mb.map(function(Lb){return Math.floor(Mi(Lb))})))),jt.restore(),Li}n(_b,\"getSourceCanvas\");var Yp=String.fromCharCode;function xb(v,c,g){var m=\"\";g+=c;for(var P=c;P<g;P+=1)m+=Yp(v.getUint8(P));return m}n(xb,\"getStringFromCharCode\");var Fb=/^data:.*,/;function Eb(v){var c=v.replace(Fb,\"\"),g=atob(c),m=new ArrayBuffer(g.length),P=new Uint8Array(m);return Re(P,function(w,_){P[_]=g.charCodeAt(_)}),m}n(Eb,\"dataURLToArrayBuffer\");function Ob(v,c){for(var g=[],m=8192,P=new Uint8Array(v);P.length>0;)g.push(Yp.apply(null,_o(P.subarray(0,m)))),P=P.subarray(m);return\"data:\".concat(c,\";base64,\").concat(btoa(g.join(\"\")))}n(Ob,\"arrayBufferToDataURL\");function Cb(v){var c=new DataView(v),g;try{var m,P,w;if(c.getUint8(0)===255&&c.getUint8(1)===216)for(var _=c.byteLength,O=2;O+1<_;){if(c.getUint8(O)===255&&c.getUint8(O+1)===225){P=O;break}O+=1}if(P){var D=P+4,A=P+10;if(xb(c,D,4)===\"Exif\"){var T=c.getUint16(A);if(m=T===18761,(m||T===19789)&&c.getUint16(A+2,m)===42){var C=c.getUint32(A+4,m);C>=8&&(w=A+C)}}}if(w){var k=c.getUint16(w,m),ue,le;for(le=0;le<k;le+=1)if(ue=w+le*12+2,c.getUint16(ue,m)===274){ue+=8,g=c.getUint16(ue,m),c.setUint16(ue,1,m);break}}}catch{g=1}return g}n(Cb,\"resetAndGetOrientation\");function Tb(v){var c=0,g=1,m=1;switch(v){case 2:g=-1;break;case 3:c=-180;break;case 4:m=-1;break;case 5:c=90,m=-1;break;case 6:c=90;break;case 7:c=90,g=-1;break;case 8:c=-90;break}return{rotate:c,scaleX:g,scaleY:m}}n(Tb,\"parseOrientation\");var Ab={render:n(function(){this.initContainer(),this.initCanvas(),this.initCropBox(),this.renderCanvas(),this.cropped&&this.renderCropBox()},\"render\"),initContainer:n(function(){var c=this.element,g=this.options,m=this.container,P=this.cropper;je(P,xe),bi(c,xe);var w={width:Math.max(m.offsetWidth,Number(g.minContainerWidth)||200),height:Math.max(m.offsetHeight,Number(g.minContainerHeight)||100)};this.containerData=w,vi(P,{width:w.width,height:w.height}),je(c,xe),bi(P,xe)},\"initContainer\"),initCanvas:n(function(){var c=this.containerData,g=this.imageData,m=this.options.viewMode,P=Math.abs(g.rotate)%180===90,w=P?g.naturalHeight:g.naturalWidth,_=P?g.naturalWidth:g.naturalHeight,O=w/_,D=c.width,A=c.height;c.height*O>c.width?m===3?D=c.height*O:A=c.width/O:m===3?A=c.width/O:D=c.height*O;var T={aspectRatio:O,naturalWidth:w,naturalHeight:_,width:D,height:A};T.left=(c.width-D)/2,T.top=(c.height-A)/2,T.oldLeft=T.left,T.oldTop=T.top,this.canvasData=T,this.limited=m===1||m===2,this.limitCanvas(!0,!0),this.initialImageData=Se({},g),this.initialCanvasData=Se({},T)},\"initCanvas\"),limitCanvas:n(function(c,g){var m=this.options,P=this.containerData,w=this.canvasData,_=this.cropBoxData,O=m.viewMode,D=w.aspectRatio,A=this.cropped&&_;if(c){var T=Number(m.minCanvasWidth)||0,C=Number(m.minCanvasHeight)||0;O>1?(T=Math.max(T,P.width),C=Math.max(C,P.height),O===3&&(C*D>T?T=C*D:C=T/D)):O>0&&(T?T=Math.max(T,A?_.width:0):C?C=Math.max(C,A?_.height:0):A&&(T=_.width,C=_.height,C*D>T?T=C*D:C=T/D));var k=Gr({aspectRatio:D,width:T,height:C});T=k.width,C=k.height,w.minWidth=T,w.minHeight=C,w.maxWidth=1/0,w.maxHeight=1/0}if(g)if(O>(A?0:1)){var ue=P.width-w.width,le=P.height-w.height;w.minLeft=Math.min(0,ue),w.minTop=Math.min(0,le),w.maxLeft=Math.max(0,ue),w.maxTop=Math.max(0,le),A&&this.limited&&(w.minLeft=Math.min(_.left,_.left+(_.width-w.width)),w.minTop=Math.min(_.top,_.top+(_.height-w.height)),w.maxLeft=_.left,w.maxTop=_.top,O===2&&(w.width>=P.width&&(w.minLeft=Math.min(0,ue),w.maxLeft=Math.max(0,ue)),w.height>=P.height&&(w.minTop=Math.min(0,le),w.maxTop=Math.max(0,le))))}else w.minLeft=-w.width,w.minTop=-w.height,w.maxLeft=P.width,w.maxTop=P.height},\"limitCanvas\"),renderCanvas:n(function(c,g){var m=this.canvasData,P=this.imageData;if(g){var w=Pb({width:P.naturalWidth*Math.abs(P.scaleX||1),height:P.naturalHeight*Math.abs(P.scaleY||1),degree:P.rotate||0}),_=w.width,O=w.height,D=m.width*(_/m.naturalWidth),A=m.height*(O/m.naturalHeight);m.left-=(D-m.width)/2,m.top-=(A-m.height)/2,m.width=D,m.height=A,m.aspectRatio=_/O,m.naturalWidth=_,m.naturalHeight=O,this.limitCanvas(!0,!1)}(m.width>m.maxWidth||m.width<m.minWidth)&&(m.left=m.oldLeft),(m.height>m.maxHeight||m.height<m.minHeight)&&(m.top=m.oldTop),m.width=Math.min(Math.max(m.width,m.minWidth),m.maxWidth),m.height=Math.min(Math.max(m.height,m.minHeight),m.maxHeight),this.limitCanvas(!1,!0),m.left=Math.min(Math.max(m.left,m.minLeft),m.maxLeft),m.top=Math.min(Math.max(m.top,m.minTop),m.maxTop),m.oldLeft=m.left,m.oldTop=m.top,vi(this.canvas,Se({width:m.width,height:m.height},hn({translateX:m.left,translateY:m.top}))),this.renderImage(c),this.cropped&&this.limited&&this.limitCropBox(!0,!0)},\"renderCanvas\"),renderImage:n(function(c){var g=this.canvasData,m=this.imageData,P=m.naturalWidth*(g.width/g.naturalWidth),w=m.naturalHeight*(g.height/g.naturalHeight);Se(m,{width:P,height:w,left:(g.width-P)/2,top:(g.height-w)/2}),vi(this.image,Se({width:m.width,height:m.height},hn(Se({translateX:m.left,translateY:m.top},m)))),c&&this.output()},\"renderImage\"),initCropBox:n(function(){var c=this.options,g=this.canvasData,m=c.aspectRatio||c.initialAspectRatio,P=Number(c.autoCropArea)||.8,w={width:g.width,height:g.height};m&&(g.height*m>g.width?w.height=w.width/m:w.width=w.height*m),this.cropBoxData=w,this.limitCropBox(!0,!0),w.width=Math.min(Math.max(w.width,w.minWidth),w.maxWidth),w.height=Math.min(Math.max(w.height,w.minHeight),w.maxHeight),w.width=Math.max(w.minWidth,w.width*P),w.height=Math.max(w.minHeight,w.height*P),w.left=g.left+(g.width-w.width)/2,w.top=g.top+(g.height-w.height)/2,w.oldLeft=w.left,w.oldTop=w.top,this.initialCropBoxData=Se({},w)},\"initCropBox\"),limitCropBox:n(function(c,g){var m=this.options,P=this.containerData,w=this.canvasData,_=this.cropBoxData,O=this.limited,D=m.aspectRatio;if(c){var A=Number(m.minCropBoxWidth)||0,T=Number(m.minCropBoxHeight)||0,C=O?Math.min(P.width,w.width,w.width+w.left,P.width-w.left):P.width,k=O?Math.min(P.height,w.height,w.height+w.top,P.height-w.top):P.height;A=Math.min(A,P.width),T=Math.min(T,P.height),D&&(A&&T?T*D>A?T=A/D:A=T*D:A?T=A/D:T&&(A=T*D),k*D>C?k=C/D:C=k*D),_.minWidth=Math.min(A,C),_.minHeight=Math.min(T,k),_.maxWidth=C,_.maxHeight=k}g&&(O?(_.minLeft=Math.max(0,w.left),_.minTop=Math.max(0,w.top),_.maxLeft=Math.min(P.width,w.left+w.width)-_.width,_.maxTop=Math.min(P.height,w.top+w.height)-_.height):(_.minLeft=0,_.minTop=0,_.maxLeft=P.width-_.width,_.maxTop=P.height-_.height))},\"limitCropBox\"),renderCropBox:n(function(){var c=this.options,g=this.containerData,m=this.cropBoxData;(m.width>m.maxWidth||m.width<m.minWidth)&&(m.left=m.oldLeft),(m.height>m.maxHeight||m.height<m.minHeight)&&(m.top=m.oldTop),m.width=Math.min(Math.max(m.width,m.minWidth),m.maxWidth),m.height=Math.min(Math.max(m.height,m.minHeight),m.maxHeight),this.limitCropBox(!1,!0),m.left=Math.min(Math.max(m.left,m.minLeft),m.maxLeft),m.top=Math.min(Math.max(m.top,m.minTop),m.maxTop),m.oldLeft=m.left,m.oldTop=m.top,c.movable&&c.cropBoxMovable&&un(this.face,L,m.width>=g.width&&m.height>=g.height?G:U),vi(this.cropBox,Se({width:m.width,height:m.height},hn({translateX:m.left,translateY:m.top}))),this.cropped&&this.limited&&this.limitCanvas(!0,!0),this.disabled||this.output()},\"renderCropBox\"),output:n(function(){this.preview(),xo(this.element,ne,this.getData())},\"output\")},Rb={initPreview:n(function(){var c=this.element,g=this.crossOrigin,m=this.options.preview,P=g?this.crossOriginUrl:this.url,w=c.alt||\"The image to preview\",_=document.createElement(\"img\");if(g&&(_.crossOrigin=g),_.src=P,_.alt=w,this.viewBox.appendChild(_),this.viewBoxImage=_,!!m){var O=m;typeof m==\"string\"?O=c.ownerDocument.querySelectorAll(m):m.querySelector&&(O=[m]),this.previews=O,Re(O,function(D){var A=document.createElement(\"img\");un(D,Q,{width:D.offsetWidth,height:D.offsetHeight,html:D.innerHTML}),g&&(A.crossOrigin=g),A.src=P,A.alt=w,A.style.cssText='display:block;width:100%;height:auto;min-width:0!important;min-height:0!important;max-width:none!important;max-height:none!important;image-orientation:0deg!important;\"',D.innerHTML=\"\",D.appendChild(A)})}},\"initPreview\"),resetPreview:n(function(){Re(this.previews,function(c){var g=ph(c,Q);vi(c,{width:g.width,height:g.height}),c.innerHTML=g.html,vb(c,Q)})},\"resetPreview\"),preview:n(function(){var c=this.imageData,g=this.canvasData,m=this.cropBoxData,P=m.width,w=m.height,_=c.width,O=c.height,D=m.left-g.left-c.left,A=m.top-g.top-c.top;!this.cropped||this.disabled||(vi(this.viewBoxImage,Se({width:_,height:O},hn(Se({translateX:-D,translateY:-A},c)))),Re(this.previews,function(T){var C=ph(T,Q),k=C.width,ue=C.height,le=k,Ce=ue,fe=1;P&&(fe=k/P,Ce=w*fe),w&&Ce>ue&&(fe=ue/w,le=P*fe,Ce=ue),vi(T,{width:le,height:Ce}),vi(T.getElementsByTagName(\"img\")[0],Se({width:_*fe,height:O*fe},hn(Se({translateX:-D*fe,translateY:-A*fe},c))))}))},\"preview\")},Ub={bind:n(function(){var c=this.element,g=this.options,m=this.cropper;St(g.cropstart)&&hi(c,Ee,g.cropstart),St(g.cropmove)&&hi(c,Fe,g.cropmove),St(g.cropend)&&hi(c,re,g.cropend),St(g.crop)&&hi(c,ne,g.crop),St(g.zoom)&&hi(c,ur,g.zoom),hi(m,Ge,this.onCropStart=this.cropStart.bind(this)),g.zoomable&&g.zoomOnWheel&&hi(m,qr,this.onWheel=this.wheel.bind(this),{passive:!1,capture:!0}),g.toggleDragModeOnDblclick&&hi(m,Ft,this.onDblclick=this.dblclick.bind(this)),hi(c.ownerDocument,lr,this.onCropMove=this.cropMove.bind(this)),hi(c.ownerDocument,So,this.onCropEnd=this.cropEnd.bind(this)),g.responsive&&hi(window,$r,this.onResize=this.resize.bind(this))},\"bind\"),unbind:n(function(){var c=this.element,g=this.options,m=this.cropper;St(g.cropstart)&&wi(c,Ee,g.cropstart),St(g.cropmove)&&wi(c,Fe,g.cropmove),St(g.cropend)&&wi(c,re,g.cropend),St(g.crop)&&wi(c,ne,g.crop),St(g.zoom)&&wi(c,ur,g.zoom),wi(m,Ge,this.onCropStart),g.zoomable&&g.zoomOnWheel&&wi(m,qr,this.onWheel,{passive:!1,capture:!0}),g.toggleDragModeOnDblclick&&wi(m,Ft,this.onDblclick),wi(c.ownerDocument,lr,this.onCropMove),wi(c.ownerDocument,So,this.onCropEnd),g.responsive&&wi(window,$r,this.onResize)},\"unbind\")},kb={resize:n(function(){if(!this.disabled){var c=this.options,g=this.container,m=this.containerData,P=g.offsetWidth/m.width;if(P!==1||g.offsetHeight!==m.height){var w,_;c.restore&&(w=this.getCanvasData(),_=this.getCropBoxData()),this.render(),c.restore&&(this.setCanvasData(Re(w,function(O,D){w[D]=O*P})),this.setCropBoxData(Re(_,function(O,D){_[D]=O*P})))}}},\"resize\"),dblclick:n(function(){this.disabled||this.options.dragMode===pe||this.setDragMode(Fl(this.dragBox,_e)?ye:X)},\"dblclick\"),wheel:n(function(c){var g=this,m=Number(this.options.wheelZoomRatio)||.1,P=1;this.disabled||(c.preventDefault(),!this.wheeling&&(this.wheeling=!0,setTimeout(function(){g.wheeling=!1},50),c.deltaY?P=c.deltaY>0?1:-1:c.wheelDelta?P=-c.wheelDelta/120:c.detail&&(P=c.detail>0?1:-1),this.zoom(-P*m,c)))},\"wheel\"),cropStart:n(function(c){var g=c.buttons,m=c.button;if(!(this.disabled||(c.type===\"mousedown\"||c.type===\"pointerdown\"&&c.pointerType===\"mouse\")&&(ie(g)&&g!==1||ie(m)&&m!==0||c.ctrlKey))){var P=this.options,w=this.pointers,_;c.changedTouches?Re(c.changedTouches,function(O){w[O.identifier]=El(O)}):w[c.pointerId||0]=El(c),Object.keys(w).length>1&&P.zoomable&&P.zoomOnTouch?_=J:_=ph(c.target,L),nt.test(_)&&xo(this.element,Ee,{originalEvent:c,action:_})!==!1&&(c.preventDefault(),this.action=_,this.cropping=!1,_===j&&(this.cropping=!0,je(this.dragBox,R)))}},\"cropStart\"),cropMove:n(function(c){var g=this.action;if(!(this.disabled||!g)){var m=this.pointers;c.preventDefault(),xo(this.element,Fe,{originalEvent:c,action:g})!==!1&&(c.changedTouches?Re(c.changedTouches,function(P){Se(m[P.identifier]||{},El(P,!0))}):Se(m[c.pointerId||0]||{},El(c,!0)),this.change(c))}},\"cropMove\"),cropEnd:n(function(c){if(!this.disabled){var g=this.action,m=this.pointers;c.changedTouches?Re(c.changedTouches,function(P){delete m[P.identifier]}):delete m[c.pointerId||0],g&&(c.preventDefault(),Object.keys(m).length||(this.action=\"\"),this.cropping&&(this.cropping=!1,Wr(this.dragBox,R,this.cropped&&this.options.modal)),xo(this.element,re,{originalEvent:c,action:g}))}},\"cropEnd\")},Db={change:n(function(c){var g=this.options,m=this.canvasData,P=this.containerData,w=this.cropBoxData,_=this.pointers,O=this.action,D=g.aspectRatio,A=w.left,T=w.top,C=w.width,k=w.height,ue=A+C,le=T+k,Ce=0,fe=0,Ze=P.width,lt=P.height,Ke=!0,dr;!D&&c.shiftKey&&(D=C&&k?C/k:1),this.limited&&(Ce=w.minLeft,fe=w.minTop,Ze=Ce+Math.min(P.width,m.width,m.left+m.width),lt=fe+Math.min(P.height,m.height,m.top+m.height));var Wt=_[Object.keys(_)[0]],M={x:Wt.endX-Wt.startX,y:Wt.endY-Wt.startY},me=n(function(di){switch(di){case B:ue+M.x>Ze&&(M.x=Ze-ue);break;case z:A+M.x<Ce&&(M.x=Ce-A);break;case oe:T+M.y<fe&&(M.y=fe-T);break;case K:le+M.y>lt&&(M.y=lt-le);break}},\"check\");switch(O){case U:A+=M.x,T+=M.y;break;case B:if(M.x>=0&&(ue>=Ze||D&&(T<=fe||le>=lt))){Ke=!1;break}me(B),C+=M.x,C<0&&(O=z,C=-C,A-=C),D&&(k=C/D,T+=(w.height-k)/2);break;case oe:if(M.y<=0&&(T<=fe||D&&(A<=Ce||ue>=Ze))){Ke=!1;break}me(oe),k-=M.y,T+=M.y,k<0&&(O=K,k=-k,T-=k),D&&(C=k*D,A+=(w.width-C)/2);break;case z:if(M.x<=0&&(A<=Ce||D&&(T<=fe||le>=lt))){Ke=!1;break}me(z),C-=M.x,A+=M.x,C<0&&(O=B,C=-C,A-=C),D&&(k=C/D,T+=(w.height-k)/2);break;case K:if(M.y>=0&&(le>=lt||D&&(A<=Ce||ue>=Ze))){Ke=!1;break}me(K),k+=M.y,k<0&&(O=oe,k=-k,T-=k),D&&(C=k*D,A+=(w.width-C)/2);break;case Be:if(D){if(M.y<=0&&(T<=fe||ue>=Ze)){Ke=!1;break}me(oe),k-=M.y,T+=M.y,C=k*D}else me(oe),me(B),M.x>=0?ue<Ze?C+=M.x:M.y<=0&&T<=fe&&(Ke=!1):C+=M.x,M.y<=0?T>fe&&(k-=M.y,T+=M.y):(k-=M.y,T+=M.y);C<0&&k<0?(O=We,k=-k,C=-C,T-=k,A-=C):C<0?(O=Je,C=-C,A-=C):k<0&&(O=wt,k=-k,T-=k);break;case Je:if(D){if(M.y<=0&&(T<=fe||A<=Ce)){Ke=!1;break}me(oe),k-=M.y,T+=M.y,C=k*D,A+=w.width-C}else me(oe),me(z),M.x<=0?A>Ce?(C-=M.x,A+=M.x):M.y<=0&&T<=fe&&(Ke=!1):(C-=M.x,A+=M.x),M.y<=0?T>fe&&(k-=M.y,T+=M.y):(k-=M.y,T+=M.y);C<0&&k<0?(O=wt,k=-k,C=-C,T-=k,A-=C):C<0?(O=Be,C=-C,A-=C):k<0&&(O=We,k=-k,T-=k);break;case We:if(D){if(M.x<=0&&(A<=Ce||le>=lt)){Ke=!1;break}me(z),C-=M.x,A+=M.x,k=C/D}else me(K),me(z),M.x<=0?A>Ce?(C-=M.x,A+=M.x):M.y>=0&&le>=lt&&(Ke=!1):(C-=M.x,A+=M.x),M.y>=0?le<lt&&(k+=M.y):k+=M.y;C<0&&k<0?(O=Be,k=-k,C=-C,T-=k,A-=C):C<0?(O=wt,C=-C,A-=C):k<0&&(O=Je,k=-k,T-=k);break;case wt:if(D){if(M.x>=0&&(ue>=Ze||le>=lt)){Ke=!1;break}me(B),C+=M.x,k=C/D}else me(K),me(B),M.x>=0?ue<Ze?C+=M.x:M.y>=0&&le>=lt&&(Ke=!1):C+=M.x,M.y>=0?le<lt&&(k+=M.y):k+=M.y;C<0&&k<0?(O=Je,k=-k,C=-C,T-=k,A-=C):C<0?(O=We,C=-C,A-=C):k<0&&(O=Be,k=-k,T-=k);break;case G:this.move(M.x,M.y),Ke=!1;break;case J:this.zoom(wb(_),c),Ke=!1;break;case j:if(!M.x||!M.y){Ke=!1;break}dr=Gp(this.cropper),A=Wt.startX-dr.left,T=Wt.startY-dr.top,C=w.minWidth,k=w.minHeight,M.x>0?O=M.y>0?wt:Be:M.x<0&&(A-=C,O=M.y>0?We:Je),M.y<0&&(T-=k),this.cropped||(bi(this.cropBox,xe),this.cropped=!0,this.limited&&this.limitCropBox(!0,!0));break}Ke&&(w.width=C,w.height=k,w.left=A,w.top=T,this.action=O,this.renderCropBox()),Re(_,function(et){et.startX=et.endX,et.startY=et.endY})},\"change\")},Ib={crop:n(function(){return this.ready&&!this.cropped&&!this.disabled&&(this.cropped=!0,this.limitCropBox(!0,!0),this.options.modal&&je(this.dragBox,R),bi(this.cropBox,xe),this.setCropBoxData(this.initialCropBoxData)),this},\"crop\"),reset:n(function(){return this.ready&&!this.disabled&&(this.imageData=Se({},this.initialImageData),this.canvasData=Se({},this.initialCanvasData),this.cropBoxData=Se({},this.initialCropBoxData),this.renderCanvas(),this.cropped&&this.renderCropBox()),this},\"reset\"),clear:n(function(){return this.cropped&&!this.disabled&&(Se(this.cropBoxData,{left:0,top:0,width:0,height:0}),this.cropped=!1,this.renderCropBox(),this.limitCanvas(!0,!0),this.renderCanvas(),bi(this.dragBox,R),je(this.cropBox,xe)),this},\"clear\"),replace:n(function(c){var g=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;return!this.disabled&&c&&(this.isImg&&(this.element.src=c),g?(this.url=c,this.image.src=c,this.ready&&(this.viewBoxImage.src=c,Re(this.previews,function(m){m.getElementsByTagName(\"img\")[0].src=c}))):(this.isImg&&(this.replaced=!0),this.options.data=null,this.uncreate(),this.load(c))),this},\"replace\"),enable:n(function(){return this.ready&&this.disabled&&(this.disabled=!1,bi(this.cropper,ze)),this},\"enable\"),disable:n(function(){return this.ready&&!this.disabled&&(this.disabled=!0,je(this.cropper,ze)),this},\"disable\"),destroy:n(function(){var c=this.element;return c[F]?(c[F]=void 0,this.isImg&&this.replaced&&(c.src=this.originalUrl),this.uncreate(),this):this},\"destroy\"),move:n(function(c){var g=arguments.length>1&&arguments[1]!==void 0?arguments[1]:c,m=this.canvasData,P=m.left,w=m.top;return this.moveTo(Po(c)?c:P+Number(c),Po(g)?g:w+Number(g))},\"move\"),moveTo:n(function(c){var g=arguments.length>1&&arguments[1]!==void 0?arguments[1]:c,m=this.canvasData,P=!1;return c=Number(c),g=Number(g),this.ready&&!this.disabled&&this.options.movable&&(ie(c)&&(m.left=c,P=!0),ie(g)&&(m.top=g,P=!0),P&&this.renderCanvas(!0)),this},\"moveTo\"),zoom:n(function(c,g){var m=this.canvasData;return c=Number(c),c<0?c=1/(1-c):c=1+c,this.zoomTo(m.width*c/m.naturalWidth,null,g)},\"zoom\"),zoomTo:n(function(c,g,m){var P=this.options,w=this.canvasData,_=w.width,O=w.height,D=w.naturalWidth,A=w.naturalHeight;if(c=Number(c),c>=0&&this.ready&&!this.disabled&&P.zoomable){var T=D*c,C=A*c;if(xo(this.element,ur,{ratio:c,oldRatio:_/D,originalEvent:m})===!1)return this;if(m){var k=this.pointers,ue=Gp(this.cropper),le=k&&Object.keys(k).length?Sb(k):{pageX:m.pageX,pageY:m.pageY};w.left-=(T-_)*((le.pageX-ue.left-w.left)/_),w.top-=(C-O)*((le.pageY-ue.top-w.top)/O)}else Vr(g)&&ie(g.x)&&ie(g.y)?(w.left-=(T-_)*((g.x-w.left)/_),w.top-=(C-O)*((g.y-w.top)/O)):(w.left-=(T-_)/2,w.top-=(C-O)/2);w.width=T,w.height=C,this.renderCanvas(!0)}return this},\"zoomTo\"),rotate:n(function(c){return this.rotateTo((this.imageData.rotate||0)+Number(c))},\"rotate\"),rotateTo:n(function(c){return c=Number(c),ie(c)&&this.ready&&!this.disabled&&this.options.rotatable&&(this.imageData.rotate=c%360,this.renderCanvas(!0,!0)),this},\"rotateTo\"),scaleX:n(function(c){var g=this.imageData.scaleY;return this.scale(c,ie(g)?g:1)},\"scaleX\"),scaleY:n(function(c){var g=this.imageData.scaleX;return this.scale(ie(g)?g:1,c)},\"scaleY\"),scale:n(function(c){var g=arguments.length>1&&arguments[1]!==void 0?arguments[1]:c,m=this.imageData,P=!1;return c=Number(c),g=Number(g),this.ready&&!this.disabled&&this.options.scalable&&(ie(c)&&(m.scaleX=c,P=!0),ie(g)&&(m.scaleY=g,P=!0),P&&this.renderCanvas(!0,!0)),this},\"scale\"),getData:n(function(){var c=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1,g=this.options,m=this.imageData,P=this.canvasData,w=this.cropBoxData,_;if(this.ready&&this.cropped){_={x:w.left-P.left,y:w.top-P.top,width:w.width,height:w.height};var O=m.width/m.naturalWidth;if(Re(_,function(T,C){_[C]=T/O}),c){var D=Math.round(_.y+_.height),A=Math.round(_.x+_.width);_.x=Math.round(_.x),_.y=Math.round(_.y),_.width=A-_.x,_.height=D-_.y}}else _={x:0,y:0,width:0,height:0};return g.rotatable&&(_.rotate=m.rotate||0),g.scalable&&(_.scaleX=m.scaleX||1,_.scaleY=m.scaleY||1),_},\"getData\"),setData:n(function(c){var g=this.options,m=this.imageData,P=this.canvasData,w={};if(this.ready&&!this.disabled&&Vr(c)){var _=!1;g.rotatable&&ie(c.rotate)&&c.rotate!==m.rotate&&(m.rotate=c.rotate,_=!0),g.scalable&&(ie(c.scaleX)&&c.scaleX!==m.scaleX&&(m.scaleX=c.scaleX,_=!0),ie(c.scaleY)&&c.scaleY!==m.scaleY&&(m.scaleY=c.scaleY,_=!0)),_&&this.renderCanvas(!0,!0);var O=m.width/m.naturalWidth;ie(c.x)&&(w.left=c.x*O+P.left),ie(c.y)&&(w.top=c.y*O+P.top),ie(c.width)&&(w.width=c.width*O),ie(c.height)&&(w.height=c.height*O),this.setCropBoxData(w)}return this},\"setData\"),getContainerData:n(function(){return this.ready?Se({},this.containerData):{}},\"getContainerData\"),getImageData:n(function(){return this.sized?Se({},this.imageData):{}},\"getImageData\"),getCanvasData:n(function(){var c=this.canvasData,g={};return this.ready&&Re([\"left\",\"top\",\"width\",\"height\",\"naturalWidth\",\"naturalHeight\"],function(m){g[m]=c[m]}),g},\"getCanvasData\"),setCanvasData:n(function(c){var g=this.canvasData,m=g.aspectRatio;return this.ready&&!this.disabled&&Vr(c)&&(ie(c.left)&&(g.left=c.left),ie(c.top)&&(g.top=c.top),ie(c.width)?(g.width=c.width,g.height=c.width/m):ie(c.height)&&(g.height=c.height,g.width=c.height*m),this.renderCanvas(!0)),this},\"setCanvasData\"),getCropBoxData:n(function(){var c=this.cropBoxData,g;return this.ready&&this.cropped&&(g={left:c.left,top:c.top,width:c.width,height:c.height}),g||{}},\"getCropBoxData\"),setCropBoxData:n(function(c){var g=this.cropBoxData,m=this.options.aspectRatio,P,w;return this.ready&&this.cropped&&!this.disabled&&Vr(c)&&(ie(c.left)&&(g.left=c.left),ie(c.top)&&(g.top=c.top),ie(c.width)&&c.width!==g.width&&(P=!0,g.width=c.width),ie(c.height)&&c.height!==g.height&&(w=!0,g.height=c.height),m&&(P?g.height=g.width/m:w&&(g.width=g.height*m)),this.renderCropBox()),this},\"setCropBoxData\"),getCroppedCanvas:n(function(){var c=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};if(!this.ready||!window.HTMLCanvasElement)return null;var g=this.canvasData,m=_b(this.image,this.imageData,g,c);if(!this.cropped)return m;var P=this.getData(),w=P.x,_=P.y,O=P.width,D=P.height,A=m.width/Math.floor(g.naturalWidth);A!==1&&(w*=A,_*=A,O*=A,D*=A);var T=O/D,C=Gr({aspectRatio:T,width:c.maxWidth||1/0,height:c.maxHeight||1/0}),k=Gr({aspectRatio:T,width:c.minWidth||0,height:c.minHeight||0},\"cover\"),ue=Gr({aspectRatio:T,width:c.width||(A!==1?m.width:O),height:c.height||(A!==1?m.height:D)}),le=ue.width,Ce=ue.height;le=Math.min(C.width,Math.max(k.width,le)),Ce=Math.min(C.height,Math.max(k.height,Ce));var fe=document.createElement(\"canvas\"),Ze=fe.getContext(\"2d\");fe.width=Mi(le),fe.height=Mi(Ce),Ze.fillStyle=c.fillColor||\"transparent\",Ze.fillRect(0,0,le,Ce);var lt=c.imageSmoothingEnabled,Ke=lt===void 0?!0:lt,dr=c.imageSmoothingQuality;Ze.imageSmoothingEnabled=Ke,dr&&(Ze.imageSmoothingQuality=dr);var Wt=m.width,M=m.height,me=w,et=_,di,cr,ps,fs,Kr,Li;me<=-O||me>Wt?(me=0,di=0,ps=0,Kr=0):me<=0?(ps=-me,me=0,di=Math.min(Wt,O+me),Kr=di):me<=Wt&&(ps=0,di=Math.min(O,Wt-me),Kr=di),di<=0||et<=-D||et>M?(et=0,cr=0,fs=0,Li=0):et<=0?(fs=-et,et=0,cr=Math.min(M,D+et),Li=cr):et<=M&&(fs=0,cr=Math.min(D,M-et),Li=cr);var jt=[me,et,di,cr];if(Kr>0&&Li>0){var ms=le/O;jt.push(ps*ms,fs*ms,Kr*ms,Li*ms)}return Ze.drawImage.apply(Ze,[m].concat(l(jt.map(function(Ol){return Math.floor(Mi(Ol))})))),fe},\"getCroppedCanvas\"),setAspectRatio:n(function(c){var g=this.options;return!this.disabled&&!Po(c)&&(g.aspectRatio=Math.max(0,c)||NaN,this.ready&&(this.initCropBox(),this.cropped&&this.renderCropBox())),this},\"setAspectRatio\"),setDragMode:n(function(c){var g=this.options,m=this.dragBox,P=this.face;if(this.ready&&!this.disabled){var w=c===X,_=g.movable&&c===ye;c=w||_?c:pe,g.dragMode=c,un(m,L,c),Wr(m,_e,w),Wr(m,I,_),g.cropBoxMovable||(un(P,L,c),Wr(P,_e,w),Wr(P,I,_))}return this},\"setDragMode\")},Nb=S.Cropper,Qp=function(){function v(c){var g=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if(e(this,v),!c||!Sl.test(c.tagName))throw new Error(\"The first argument is required and must be an <img> or <canvas> element.\");this.element=c,this.options=Se({},nn,Vr(g)&&g),this.cropped=!1,this.disabled=!1,this.pointers={},this.ready=!1,this.reloading=!1,this.replaced=!1,this.sized=!1,this.sizing=!1,this.init()}return n(v,\"Cropper\"),r(v,[{key:\"init\",value:n(function(){var g=this.element,m=g.tagName.toLowerCase(),P;if(!g[F]){if(g[F]=this,m===\"img\"){if(this.isImg=!0,P=g.getAttribute(\"src\")||\"\",this.originalUrl=P,!P)return;P=g.src}else m===\"canvas\"&&window.HTMLCanvasElement&&(P=g.toDataURL());this.load(P)}},\"init\")},{key:\"load\",value:n(function(g){var m=this;if(g){this.url=g,this.imageData={};var P=this.element,w=this.options;if(!w.rotatable&&!w.scalable&&(w.checkOrientation=!1),!w.checkOrientation||!window.ArrayBuffer){this.clone();return}if(at.test(g)){wl.test(g)?this.read(Eb(g)):this.clone();return}var _=new XMLHttpRequest,O=this.clone.bind(this);this.reloading=!0,this.xhr=_,_.onabort=O,_.onerror=O,_.ontimeout=O,_.onprogress=function(){_.getResponseHeader(\"content-type\")!==hr&&_.abort()},_.onload=function(){m.read(_.response)},_.onloadend=function(){m.reloading=!1,m.xhr=null},w.checkCrossOrigin&&Kp(g)&&P.crossOrigin&&(g=Xp(g)),_.open(\"GET\",g),_.responseType=\"arraybuffer\",_.withCredentials=P.crossOrigin===\"use-credentials\",_.send()}},\"load\")},{key:\"read\",value:n(function(g){var m=this.options,P=this.imageData,w=Cb(g),_=0,O=1,D=1;if(w>1){this.url=Ob(g,hr);var A=Tb(w);_=A.rotate,O=A.scaleX,D=A.scaleY}m.rotatable&&(P.rotate=_),m.scalable&&(P.scaleX=O,P.scaleY=D),this.clone()},\"read\")},{key:\"clone\",value:n(function(){var g=this.element,m=this.url,P=g.crossOrigin,w=m;this.options.checkCrossOrigin&&Kp(m)&&(P||(P=\"anonymous\"),w=Xp(m)),this.crossOrigin=P,this.crossOriginUrl=w;var _=document.createElement(\"img\");P&&(_.crossOrigin=P),_.src=w||m,_.alt=g.alt||\"The image to crop\",this.image=_,_.onload=this.start.bind(this),_.onerror=this.stop.bind(this),je(_,ui),g.parentNode.insertBefore(_,g.nextSibling)},\"clone\")},{key:\"start\",value:n(function(){var g=this,m=this.image;m.onload=null,m.onerror=null,this.sizing=!0;var P=S.navigator&&/(?:iPad|iPhone|iPod).*?AppleWebKit/i.test(S.navigator.userAgent),w=n(function(A,T){Se(g.imageData,{naturalWidth:A,naturalHeight:T,aspectRatio:A/T}),g.sizing=!1,g.sized=!0,g.build()},\"done\");if(m.naturalWidth&&!P){w(m.naturalWidth,m.naturalHeight);return}var _=document.createElement(\"img\"),O=document.body||document.documentElement;this.sizingImage=_,_.onload=function(){w(_.width,_.height),P||O.removeChild(_)},_.src=m.src,P||(_.style.cssText=\"left:0;max-height:none!important;max-width:none!important;min-height:0!important;min-width:0!important;opacity:0;position:absolute;top:0;z-index:-1;\",O.appendChild(_))},\"start\")},{key:\"stop\",value:n(function(){var g=this.image;g.onload=null,g.onerror=null,g.parentNode.removeChild(g),this.image=null},\"stop\")},{key:\"build\",value:n(function(){if(!(!this.sized||this.ready)){var g=this.element,m=this.options,P=this.image,w=g.parentNode,_=document.createElement(\"div\");_.innerHTML=Pl;var O=_.querySelector(\".\".concat(F,\"-container\")),D=O.querySelector(\".\".concat(F,\"-canvas\")),A=O.querySelector(\".\".concat(F,\"-drag-box\")),T=O.querySelector(\".\".concat(F,\"-crop-box\")),C=T.querySelector(\".\".concat(F,\"-face\"));this.container=w,this.cropper=O,this.canvas=D,this.dragBox=A,this.cropBox=T,this.viewBox=O.querySelector(\".\".concat(F,\"-view-box\")),this.face=C,D.appendChild(P),je(g,xe),w.insertBefore(O,g.nextSibling),this.isImg||bi(P,ui),this.initPreview(),this.bind(),m.initialAspectRatio=Math.max(0,m.initialAspectRatio)||NaN,m.aspectRatio=Math.max(0,m.aspectRatio)||NaN,m.viewMode=Math.max(0,Math.min(3,Math.round(m.viewMode)))||0,je(T,xe),m.guides||je(T.getElementsByClassName(\"\".concat(F,\"-dashed\")),xe),m.center||je(T.getElementsByClassName(\"\".concat(F,\"-center\")),xe),m.background&&je(O,\"\".concat(F,\"-bg\")),m.highlight||je(C,V),m.cropBoxMovable&&(je(C,I),un(C,L,U)),m.cropBoxResizable||(je(T.getElementsByClassName(\"\".concat(F,\"-line\")),xe),je(T.getElementsByClassName(\"\".concat(F,\"-point\")),xe)),this.render(),this.ready=!0,this.setDragMode(m.dragMode),m.autoCrop&&this.crop(),this.setData(m.data),St(m.ready)&&hi(g,Hr,m.ready,{once:!0}),xo(g,Hr)}},\"build\")},{key:\"unbuild\",value:n(function(){this.ready&&(this.ready=!1,this.unbind(),this.resetPreview(),this.cropper.parentNode.removeChild(this.cropper),bi(this.element,xe))},\"unbuild\")},{key:\"uncreate\",value:n(function(){this.ready?(this.unbuild(),this.ready=!1,this.cropped=!1):this.sizing?(this.sizingImage.onload=null,this.sizing=!1,this.sized=!1):this.reloading?(this.xhr.onabort=null,this.xhr.abort()):this.image&&this.stop()},\"uncreate\")}],[{key:\"noConflict\",value:n(function(){return window.Cropper=Nb,v},\"noConflict\")},{key:\"setDefaults\",value:n(function(g){Se(nn,Vr(g)&&g)},\"setDefaults\")}]),v}();return Se(Qp.prototype,Ab,Rb,Ub,kb,Db,Ib),Qp})});var sv=he((uD,Bu)=>{\"use strict\";Bu.exports=cc;Bu.exports.isMobile=cc;Bu.exports.default=cc;var wP=/(android|bb\\d+|meego).+mobile|armv7l|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series[46]0|samsungbrowser|symbian|treo|up\\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i,SP=/CrOS/,PP=/android|ipad|playbook|silk/i;function cc(i){i||(i={});let e=i.ua;if(!e&&typeof navigator<\"u\"&&(e=navigator.userAgent),e&&e.headers&&typeof e.headers[\"user-agent\"]==\"string\"&&(e=e.headers[\"user-agent\"]),typeof e!=\"string\")return!1;let t=wP.test(e)&&!SP.test(e)||!!i.tablet&&PP.test(e);return!t&&i.tablet&&i.featureDetect&&navigator&&navigator.maxTouchPoints>1&&e.indexOf(\"Macintosh\")!==-1&&e.indexOf(\"Safari\")!==-1&&(t=!0),t}n(cc,\"isMobile\")});var Kv=he((c9,Gv)=>{\"use strict\";Gv.exports=n(function(e,t){if(t=t.split(\":\")[0],e=+e,!e)return!1;switch(t){case\"http\":case\"ws\":return e!==80;case\"https\":case\"wss\":return e!==443;case\"ftp\":return e!==21;case\"gopher\":return e!==70;case\"file\":return!1}return e!==0},\"required\")});var Qv=he(Vc=>{\"use strict\";var U_=Object.prototype.hasOwnProperty,k_;function Xv(i){try{return decodeURIComponent(i.replace(/\\+/g,\" \"))}catch{return null}}n(Xv,\"decode\");function Yv(i){try{return encodeURIComponent(i)}catch{return null}}n(Yv,\"encode\");function D_(i){for(var e=/([^=?#&]+)=?([^&]*)/g,t={},r;r=e.exec(i);){var s=Xv(r[1]),o=Xv(r[2]);s===null||o===null||s in t||(t[s]=o)}return t}n(D_,\"querystring\");function I_(i,e){e=e||\"\";var t=[],r,s;typeof e!=\"string\"&&(e=\"?\");for(s in i)if(U_.call(i,s)){if(r=i[s],!r&&(r===null||r===k_||isNaN(r))&&(r=\"\"),s=Yv(s),r=Yv(r),s===null||r===null)continue;t.push(s+\"=\"+r)}return t.length?e+t.join(\"&\"):\"\"}n(I_,\"querystringify\");Vc.stringify=I_;Vc.parse=D_});var o0=he((g9,s0)=>{\"use strict\";var Zv=Kv(),Yu=Qv(),N_=/^[\\x00-\\x20\\u00a0\\u1680\\u2000-\\u200a\\u2028\\u2029\\u202f\\u205f\\u3000\\ufeff]+/,e0=/[\\n\\r\\t]/g,M_=/^[A-Za-z][A-Za-z0-9+-.]*:\\/\\//,t0=/:\\d+$/,L_=/^([a-z][a-z0-9.+-]*:)?(\\/\\/)?([\\\\/]+)?([\\S\\s]*)/i,B_=/^[a-zA-Z]:/;function Gc(i){return(i||\"\").toString().replace(N_,\"\")}n(Gc,\"trimLeft\");var Wc=[[\"#\",\"hash\"],[\"?\",\"query\"],n(function(e,t){return rr(t.protocol)?e.replace(/\\\\/g,\"/\"):e},\"sanitize\"),[\"/\",\"pathname\"],[\"@\",\"auth\",1],[NaN,\"host\",void 0,1,1],[/:(\\d*)$/,\"port\",void 0,1],[NaN,\"hostname\",void 0,1,1]],Jv={hash:1,query:1};function i0(i){var e;typeof window<\"u\"?e=window:typeof global<\"u\"?e=global:typeof self<\"u\"?e=self:e={};var t=e.location||{};i=i||t;var r={},s=typeof i,o;if(i.protocol===\"blob:\")r=new sr(unescape(i.pathname),{});else if(s===\"string\"){r=new sr(i,{});for(o in Jv)delete r[o]}else if(s===\"object\"){for(o in i)o in Jv||(r[o]=i[o]);r.slashes===void 0&&(r.slashes=M_.test(i.href))}return r}n(i0,\"lolcation\");function rr(i){return i===\"file:\"||i===\"ftp:\"||i===\"http:\"||i===\"https:\"||i===\"ws:\"||i===\"wss:\"}n(rr,\"isSpecial\");function r0(i,e){i=Gc(i),i=i.replace(e0,\"\"),e=e||{};var t=L_.exec(i),r=t[1]?t[1].toLowerCase():\"\",s=!!t[2],o=!!t[3],a=0,l;return s?o?(l=t[2]+t[3]+t[4],a=t[2].length+t[3].length):(l=t[2]+t[4],a=t[2].length):o?(l=t[3]+t[4],a=t[3].length):l=t[4],r===\"file:\"?a>=2&&(l=l.slice(2)):rr(r)?l=t[4]:r?s&&(l=l.slice(2)):a>=2&&rr(e.protocol)&&(l=t[4]),{protocol:r,slashes:s||rr(r),slashesCount:a,rest:l}}n(r0,\"extractProtocol\");function z_(i,e){if(i===\"\")return e;for(var t=(e||\"/\").split(\"/\").slice(0,-1).concat(i.split(\"/\")),r=t.length,s=t[r-1],o=!1,a=0;r--;)t[r]===\".\"?t.splice(r,1):t[r]===\"..\"?(t.splice(r,1),a++):a&&(r===0&&(o=!0),t.splice(r,1),a--);return o&&t.unshift(\"\"),(s===\".\"||s===\"..\")&&t.push(\"\"),t.join(\"/\")}n(z_,\"resolve\");function sr(i,e,t){if(i=Gc(i),i=i.replace(e0,\"\"),!(this instanceof sr))return new sr(i,e,t);var r,s,o,a,l,h,p=Wc.slice(),d=typeof e,f=this,y=0;for(d!==\"object\"&&d!==\"string\"&&(t=e,e=null),t&&typeof t!=\"function\"&&(t=Yu.parse),e=i0(e),s=r0(i||\"\",e),r=!s.protocol&&!s.slashes,f.slashes=s.slashes||r&&e.slashes,f.protocol=s.protocol||e.protocol||\"\",i=s.rest,(s.protocol===\"file:\"&&(s.slashesCount!==2||B_.test(i))||!s.slashes&&(s.protocol||s.slashesCount<2||!rr(f.protocol)))&&(p[3]=[/(.*)/,\"pathname\"]);y<p.length;y++){if(a=p[y],typeof a==\"function\"){i=a(i,f);continue}o=a[0],h=a[1],o!==o?f[h]=i:typeof o==\"string\"?(l=o===\"@\"?i.lastIndexOf(o):i.indexOf(o),~l&&(typeof a[2]==\"number\"?(f[h]=i.slice(0,l),i=i.slice(l+a[2])):(f[h]=i.slice(l),i=i.slice(0,l)))):(l=o.exec(i))&&(f[h]=l[1],i=i.slice(0,l.index)),f[h]=f[h]||r&&a[3]&&e[h]||\"\",a[4]&&(f[h]=f[h].toLowerCase())}t&&(f.query=t(f.query)),r&&e.slashes&&f.pathname.charAt(0)!==\"/\"&&(f.pathname!==\"\"||e.pathname!==\"\")&&(f.pathname=z_(f.pathname,e.pathname)),f.pathname.charAt(0)!==\"/\"&&rr(f.protocol)&&(f.pathname=\"/\"+f.pathname),Zv(f.port,f.protocol)||(f.host=f.hostname,f.port=\"\"),f.username=f.password=\"\",f.auth&&(l=f.auth.indexOf(\":\"),~l?(f.username=f.auth.slice(0,l),f.username=encodeURIComponent(decodeURIComponent(f.username)),f.password=f.auth.slice(l+1),f.password=encodeURIComponent(decodeURIComponent(f.password))):f.username=encodeURIComponent(decodeURIComponent(f.auth)),f.auth=f.password?f.username+\":\"+f.password:f.username),f.origin=f.protocol!==\"file:\"&&rr(f.protocol)&&f.host?f.protocol+\"//\"+f.host:\"null\",f.href=f.toString()}n(sr,\"Url\");function j_(i,e,t){var r=this;switch(i){case\"query\":typeof e==\"string\"&&e.length&&(e=(t||Yu.parse)(e)),r[i]=e;break;case\"port\":r[i]=e,Zv(e,r.protocol)?e&&(r.host=r.hostname+\":\"+e):(r.host=r.hostname,r[i]=\"\");break;case\"hostname\":r[i]=e,r.port&&(e+=\":\"+r.port),r.host=e;break;case\"host\":r[i]=e,t0.test(e)?(e=e.split(\":\"),r.port=e.pop(),r.hostname=e.join(\":\")):(r.hostname=e,r.port=\"\");break;case\"protocol\":r.protocol=e.toLowerCase(),r.slashes=!t;break;case\"pathname\":case\"hash\":if(e){var s=i===\"pathname\"?\"/\":\"#\";r[i]=e.charAt(0)!==s?s+e:e}else r[i]=e;break;case\"username\":case\"password\":r[i]=encodeURIComponent(e);break;case\"auth\":var o=e.indexOf(\":\");~o?(r.username=e.slice(0,o),r.username=encodeURIComponent(decodeURIComponent(r.username)),r.password=e.slice(o+1),r.password=encodeURIComponent(decodeURIComponent(r.password))):r.username=encodeURIComponent(decodeURIComponent(e))}for(var a=0;a<Wc.length;a++){var l=Wc[a];l[4]&&(r[l[1]]=r[l[1]].toLowerCase())}return r.auth=r.password?r.username+\":\"+r.password:r.username,r.origin=r.protocol!==\"file:\"&&rr(r.protocol)&&r.host?r.protocol+\"//\"+r.host:\"null\",r.href=r.toString(),r}n(j_,\"set\");function H_(i){(!i||typeof i!=\"function\")&&(i=Yu.stringify);var e,t=this,r=t.host,s=t.protocol;s&&s.charAt(s.length-1)!==\":\"&&(s+=\":\");var o=s+(t.protocol&&t.slashes||rr(t.protocol)?\"//\":\"\");return t.username?(o+=t.username,t.password&&(o+=\":\"+t.password),o+=\"@\"):t.password?(o+=\":\"+t.password,o+=\"@\"):t.protocol!==\"file:\"&&rr(t.protocol)&&!r&&t.pathname!==\"/\"&&(o+=\"@\"),(r[r.length-1]===\":\"||t0.test(t.hostname)&&!t.port)&&(r+=\":\"),o+=r+t.pathname,e=typeof t.query==\"object\"?i(t.query):t.query,e&&(o+=e.charAt(0)!==\"?\"?\"?\"+e:e),t.hash&&(o+=t.hash),o}n(H_,\"toString\");sr.prototype={set:j_,toString:H_};sr.extractProtocol=r0;sr.location=i0;sr.trimLeft=Gc;sr.qs=Yu;s0.exports=sr});var cp=he((CI,dp)=>{typeof dp<\"u\"&&(dp.exports=ni);function ni(i){if(i)return j5(i)}n(ni,\"Emitter\");function j5(i){for(var e in ni.prototype)i[e]=ni.prototype[e];return i}n(j5,\"mixin\");ni.prototype.on=ni.prototype.addEventListener=function(i,e){return this._callbacks=this._callbacks||{},(this._callbacks[\"$\"+i]=this._callbacks[\"$\"+i]||[]).push(e),this};ni.prototype.once=function(i,e){function t(){this.off(i,t),e.apply(this,arguments)}return n(t,\"on\"),t.fn=e,this.on(i,t),this};ni.prototype.off=ni.prototype.removeListener=ni.prototype.removeAllListeners=ni.prototype.removeEventListener=function(i,e){if(this._callbacks=this._callbacks||{},arguments.length==0)return this._callbacks={},this;var t=this._callbacks[\"$\"+i];if(!t)return this;if(arguments.length==1)return delete this._callbacks[\"$\"+i],this;for(var r,s=0;s<t.length;s++)if(r=t[s],r===e||r.fn===e){t.splice(s,1);break}return t.length===0&&delete this._callbacks[\"$\"+i],this};ni.prototype.emit=function(i){this._callbacks=this._callbacks||{};for(var e=new Array(arguments.length-1),t=this._callbacks[\"$\"+i],r=1;r<arguments.length;r++)e[r-1]=arguments[r];if(t){t=t.slice(0);for(var r=0,s=t.length;r<s;++r)t[r].apply(this,e)}return this};ni.prototype.listeners=function(i){return this._callbacks=this._callbacks||{},this._callbacks[\"$\"+i]||[]};ni.prototype.hasListeners=function(i){return!!this.listeners(i).length}});var J0=he((jp,Hp)=>{(function(i,e){typeof jp==\"object\"&&typeof Hp<\"u\"?Hp.exports=e():typeof define==\"function\"&&define.amd?define(e):(i=typeof globalThis<\"u\"?globalThis:i||self,i.Compressor=e())})(jp,function(){\"use strict\";function i(V,R){var I=Object.keys(V);if(Object.getOwnPropertySymbols){var L=Object.getOwnPropertySymbols(V);R&&(L=L.filter(function(Q){return Object.getOwnPropertyDescriptor(V,Q).enumerable})),I.push.apply(I,L)}return I}n(i,\"ownKeys\");function e(V){for(var R=1;R<arguments.length;R++){var I=arguments[R]!=null?arguments[R]:{};R%2?i(Object(I),!0).forEach(function(L){o(V,L,I[L])}):Object.getOwnPropertyDescriptors?Object.defineProperties(V,Object.getOwnPropertyDescriptors(I)):i(Object(I)).forEach(function(L){Object.defineProperty(V,L,Object.getOwnPropertyDescriptor(I,L))})}return V}n(e,\"_objectSpread2\");function t(V,R){if(!(V instanceof R))throw new TypeError(\"Cannot call a class as a function\")}n(t,\"_classCallCheck\");function r(V,R){for(var I=0;I<R.length;I++){var L=R[I];L.enumerable=L.enumerable||!1,L.configurable=!0,\"value\"in L&&(L.writable=!0),Object.defineProperty(V,L.key,L)}}n(r,\"_defineProperties\");function s(V,R,I){return R&&r(V.prototype,R),I&&r(V,I),V}n(s,\"_createClass\");function o(V,R,I){return R in V?Object.defineProperty(V,R,{value:I,enumerable:!0,configurable:!0,writable:!0}):V[R]=I,V}n(o,\"_defineProperty\");function a(){return a=Object.assign||function(V){for(var R=1;R<arguments.length;R++){var I=arguments[R];for(var L in I)Object.prototype.hasOwnProperty.call(I,L)&&(V[L]=I[L])}return V},a.apply(this,arguments)}n(a,\"_extends\");var l={exports:{}};(function(V){typeof window>\"u\"||function(R){var I=R.HTMLCanvasElement&&R.HTMLCanvasElement.prototype,L=R.Blob&&function(){try{return!!new Blob}catch{return!1}}(),Q=L&&R.Uint8Array&&function(){try{return new Blob([new Uint8Array(100)]).size===100}catch{return!1}}(),X=R.BlobBuilder||R.WebKitBlobBuilder||R.MozBlobBuilder||R.MSBlobBuilder,ye=/^data:((.*?)(;charset=.*?)?)(;base64)?,/,pe=(L||X)&&R.atob&&R.ArrayBuffer&&R.Uint8Array&&function(ne){var re,Fe,Ee,Ft,Et,te,Ot,Ge,lr;if(re=ne.match(ye),!re)throw new Error(\"invalid data URI\");for(Fe=re[2]?re[1]:\"text/plain\"+(re[3]||\";charset=US-ASCII\"),Ee=!!re[4],Ft=ne.slice(re[0].length),Ee?Et=atob(Ft):Et=decodeURIComponent(Ft),te=new ArrayBuffer(Et.length),Ot=new Uint8Array(te),Ge=0;Ge<Et.length;Ge+=1)Ot[Ge]=Et.charCodeAt(Ge);return L?new Blob([Q?Ot:te],{type:Fe}):(lr=new X,lr.append(te),lr.getBlob(Fe))};R.HTMLCanvasElement&&!I.toBlob&&(I.mozGetAsFile?I.toBlob=function(ne,re,Fe){var Ee=this;setTimeout(function(){Fe&&I.toDataURL&&pe?ne(pe(Ee.toDataURL(re,Fe))):ne(Ee.mozGetAsFile(\"blob\",re))})}:I.toDataURL&&pe&&(I.msToBlob?I.toBlob=function(ne,re,Fe){var Ee=this;setTimeout(function(){(re&&re!==\"image/png\"||Fe)&&I.toDataURL&&pe?ne(pe(Ee.toDataURL(re,Fe))):ne(Ee.msToBlob(re))})}:I.toBlob=function(ne,re,Fe){var Ee=this;setTimeout(function(){ne(pe(Ee.toDataURL(re,Fe)))})})),V.exports?V.exports=pe:R.dataURLtoBlob=pe}(window)})(l);var h=l.exports,p=n(function(R){return typeof Blob>\"u\"?!1:R instanceof Blob||Object.prototype.toString.call(R)===\"[object Blob]\"},\"isBlob\"),d={strict:!0,checkOrientation:!0,maxWidth:1/0,maxHeight:1/0,minWidth:0,minHeight:0,width:void 0,height:void 0,resize:\"none\",quality:.8,mimeType:\"auto\",convertTypes:[\"image/png\"],convertSize:5e6,beforeDraw:null,drew:null,success:null,error:null},f=typeof window<\"u\"&&typeof window.document<\"u\",y=f?window:{},b=n(function(R){return R>0&&R<1/0},\"isPositiveNumber\"),S=Array.prototype.slice;function E(V){return Array.from?Array.from(V):S.call(V)}n(E,\"toArray\");var x=/^image\\/.+$/;function F(V){return x.test(V)}n(F,\"isImageType\");function U(V){var R=F(V)?V.substr(6):\"\";return R===\"jpeg\"&&(R=\"jpg\"),\".\".concat(R)}n(U,\"imageTypeToExtension\");var j=String.fromCharCode;function G(V,R,I){var L=\"\",Q;for(I+=R,Q=R;Q<I;Q+=1)L+=j(V.getUint8(Q));return L}n(G,\"getStringFromCharCode\");var J=y.btoa;function B(V,R){for(var I=[],L=8192,Q=new Uint8Array(V);Q.length>0;)I.push(j.apply(null,E(Q.subarray(0,L)))),Q=Q.subarray(L);return\"data:\".concat(R,\";base64,\").concat(J(I.join(\"\")))}n(B,\"arrayBufferToDataURL\");function z(V){var R=new DataView(V),I;try{var L,Q,X;if(R.getUint8(0)===255&&R.getUint8(1)===216)for(var ye=R.byteLength,pe=2;pe+1<ye;){if(R.getUint8(pe)===255&&R.getUint8(pe+1)===225){Q=pe;break}pe+=1}if(Q){var ne=Q+4,re=Q+10;if(G(R,ne,4)===\"Exif\"){var Fe=R.getUint16(re);if(L=Fe===18761,(L||Fe===19789)&&R.getUint16(re+2,L)===42){var Ee=R.getUint32(re+4,L);Ee>=8&&(X=re+Ee)}}}if(X){var Ft=R.getUint16(X,L),Et,te;for(te=0;te<Ft;te+=1)if(Et=X+te*12+2,R.getUint16(Et,L)===274){Et+=8,I=R.getUint16(Et,L),R.setUint16(Et,1,L);break}}}catch{I=1}return I}n(z,\"resetAndGetOrientation\");function K(V){var R=0,I=1,L=1;switch(V){case 2:I=-1;break;case 3:R=-180;break;case 4:L=-1;break;case 5:R=90,L=-1;break;case 6:R=90;break;case 7:R=90,I=-1;break;case 8:R=-90;break}return{rotate:R,scaleX:I,scaleY:L}}n(K,\"parseOrientation\");var oe=/\\.\\d*(?:0|9){12}\\d*$/;function Be(V){var R=arguments.length>1&&arguments[1]!==void 0?arguments[1]:1e11;return oe.test(V)?Math.round(V*R)/R:V}n(Be,\"normalizeDecimalNumber\");function Je(V){var R=V.aspectRatio,I=V.height,L=V.width,Q=arguments.length>1&&arguments[1]!==void 0?arguments[1]:\"none\",X=b(L),ye=b(I);if(X&&ye){var pe=I*R;(Q===\"contain\"||Q===\"none\")&&pe>L||Q===\"cover\"&&pe<L?I=L/R:L=I*R}else X?I=L/R:ye&&(L=I*R);return{width:L,height:I}}n(Je,\"getAdjustedSizes\");var wt=y.ArrayBuffer,We=y.FileReader,_e=y.URL||y.webkitURL,ze=/\\.\\w+$/,xe=y.Compressor,ui=function(){function V(R,I){t(this,V),this.file=R,this.image=new Image,this.options=e(e({},d),I),this.aborted=!1,this.result=null,this.init()}return n(V,\"Compressor\"),s(V,[{key:\"init\",value:n(function(){var I=this,L=this.file,Q=this.options;if(!p(L)){this.fail(new Error(\"The first argument must be a File or Blob object.\"));return}var X=L.type;if(!F(X)){this.fail(new Error(\"The first argument must be an image File or Blob object.\"));return}if(!_e||!We){this.fail(new Error(\"The current browser does not support image compression.\"));return}if(wt||(Q.checkOrientation=!1),_e&&!Q.checkOrientation)this.load({url:_e.createObjectURL(L)});else{var ye=new We,pe=Q.checkOrientation&&X===\"image/jpeg\";this.reader=ye,ye.onload=function(ne){var re=ne.target,Fe=re.result,Ee={};if(pe){var Ft=z(Fe);Ft>1||!_e?(Ee.url=B(Fe,X),Ft>1&&a(Ee,K(Ft))):Ee.url=_e.createObjectURL(L)}else Ee.url=Fe;I.load(Ee)},ye.onabort=function(){I.fail(new Error(\"Aborted to read the image with FileReader.\"))},ye.onerror=function(){I.fail(new Error(\"Failed to read the image with FileReader.\"))},ye.onloadend=function(){I.reader=null},pe?ye.readAsArrayBuffer(L):ye.readAsDataURL(L)}},\"init\")},{key:\"load\",value:n(function(I){var L=this,Q=this.file,X=this.image;X.onload=function(){L.draw(e(e({},I),{},{naturalWidth:X.naturalWidth,naturalHeight:X.naturalHeight}))},X.onabort=function(){L.fail(new Error(\"Aborted to load the image.\"))},X.onerror=function(){L.fail(new Error(\"Failed to load the image.\"))},y.navigator&&/(?:iPad|iPhone|iPod).*?AppleWebKit/i.test(y.navigator.userAgent)&&(X.crossOrigin=\"anonymous\"),X.alt=Q.name,X.src=I.url},\"load\")},{key:\"draw\",value:n(function(I){var L=this,Q=I.naturalWidth,X=I.naturalHeight,ye=I.rotate,pe=ye===void 0?0:ye,ne=I.scaleX,re=ne===void 0?1:ne,Fe=I.scaleY,Ee=Fe===void 0?1:Fe,Ft=this.file,Et=this.image,te=this.options,Ot=document.createElement(\"canvas\"),Ge=Ot.getContext(\"2d\"),lr=Math.abs(pe)%180===90,So=(te.resize===\"contain\"||te.resize===\"cover\")&&b(te.width)&&b(te.height),Hr=Math.max(te.maxWidth,0)||1/0,$r=Math.max(te.maxHeight,0)||1/0,qr=Math.max(te.minWidth,0)||0,ur=Math.max(te.minHeight,0)||0,hr=Q/X,nt=te.width,at=te.height;if(lr){var wl=[$r,Hr];Hr=wl[0],$r=wl[1];var Sl=[ur,qr];qr=Sl[0],ur=Sl[1];var nn=[at,nt];nt=nn[0],at=nn[1]}So&&(hr=nt/at);var Pl=Je({aspectRatio:hr,width:Hr,height:$r},\"contain\");Hr=Pl.width,$r=Pl.height;var _l=Je({aspectRatio:hr,width:qr,height:ur},\"cover\");if(qr=_l.width,ur=_l.height,So){var ie=Je({aspectRatio:hr,width:nt,height:at},te.resize);nt=ie.width,at=ie.height}else{var an=Je({aspectRatio:hr,width:nt,height:at}),Po=an.width;nt=Po===void 0?Q:Po;var Ni=an.height;at=Ni===void 0?X:Ni}nt=Math.floor(Be(Math.min(Math.max(nt,qr),Hr))),at=Math.floor(Be(Math.min(Math.max(at,ur),$r)));var hh=-nt/2,Vr=-at/2,St=nt,dh=at,_o=[];if(So){var Re=0,Se=0,ln=Q,Mi=X,xl=Je({aspectRatio:hr,width:Q,height:X},{contain:\"cover\",cover:\"contain\"}[te.resize]);ln=xl.width,Mi=xl.height,Re=(Q-ln)/2,Se=(X-Mi)/2,_o.push(Re,Se,ln,Mi)}if(_o.push(hh,Vr,St,dh),lr){var vi=[at,nt];nt=vi[0],at=vi[1]}Ot.width=nt,Ot.height=at,F(te.mimeType)||(te.mimeType=Ft.type);var Fl=\"transparent\";if(Ft.size>te.convertSize&&te.convertTypes.indexOf(te.mimeType)>=0&&(te.mimeType=\"image/jpeg\"),te.mimeType===\"image/jpeg\"&&(Fl=\"#fff\"),Ge.fillStyle=Fl,Ge.fillRect(0,0,nt,at),te.beforeDraw&&te.beforeDraw.call(this,Ge,Ot),!this.aborted&&(Ge.save(),Ge.translate(nt/2,at/2),Ge.rotate(pe*Math.PI/180),Ge.scale(re,Ee),Ge.drawImage.apply(Ge,[Et].concat(_o)),Ge.restore(),te.drew&&te.drew.call(this,Ge,Ot),!this.aborted)){var je=n(function(Wr){L.aborted||L.done({naturalWidth:Q,naturalHeight:X,result:Wr})},\"done\");Ot.toBlob?Ot.toBlob(je,te.mimeType,te.quality):je(h(Ot.toDataURL(te.mimeType,te.quality)))}},\"draw\")},{key:\"done\",value:n(function(I){var L=I.naturalWidth,Q=I.naturalHeight,X=I.result,ye=this.file,pe=this.image,ne=this.options;if(_e&&!ne.checkOrientation&&_e.revokeObjectURL(pe.src),X)if(ne.strict&&X.size>ye.size&&ne.mimeType===ye.type&&!(ne.width>L||ne.height>Q||ne.minWidth>L||ne.minHeight>Q||ne.maxWidth<L||ne.maxHeight<Q))X=ye;else{var re=new Date;X.lastModified=re.getTime(),X.lastModifiedDate=re,X.name=ye.name,X.name&&X.type!==ye.type&&(X.name=X.name.replace(ze,U(X.type)))}else X=ye;this.result=X,ne.success&&ne.success.call(this,X)},\"done\")},{key:\"fail\",value:n(function(I){var L=this.options;if(L.error)L.error.call(this,I);else throw I},\"fail\")},{key:\"abort\",value:n(function(){this.aborted||(this.aborted=!0,this.reader?this.reader.abort():this.image.complete?this.fail(new Error(\"The compression process has been aborted.\")):(this.image.onload=null,this.image.onabort()))},\"abort\")}],[{key:\"noConflict\",value:n(function(){return window.Compressor=xe,V},\"noConflict\")},{key:\"setDefaults\",value:n(function(I){a(d,I)},\"setDefaults\")}]),V}();return ui})});var qp={};Tl(qp,{Audio:()=>ns,AwsS3:()=>no,AwsS3Multipart:()=>Ri,BasePlugin:()=>ve,Box:()=>Xi,Compressor:()=>on,Core:()=>qx,Dashboard:()=>is,DefaultStore:()=>kl,DragDrop:()=>Gi,DropTarget:()=>Ns,Dropbox:()=>Yi,Facebook:()=>Qi,FileInput:()=>rs,Form:()=>go,GoldenRetriever:()=>bo,GoogleDrive:()=>Ji,ImageEditor:()=>ss,Informer:()=>qi,Instagram:()=>Zi,OneDrive:()=>er,ProgressBar:()=>os,ReduxDevTools:()=>wo,ReduxStore:()=>fg,RemoteSources:()=>zs,ScreenCapture:()=>as,StatusBar:()=>$i,ThumbnailGenerator:()=>Cr,Transloadit:()=>yi,Tus:()=>or,UIPlugin:()=>Z,Unsplash:()=>tr,Uppy:()=>Ah,Url:()=>Ti,Webcam:()=>ls,XHRUpload:()=>mo,Zoom:()=>ir,debugLogger:()=>mn,locales:()=>Wx,server:()=>Bh,views:()=>Vx});function Ct(i,e){return Object.prototype.hasOwnProperty.call(i,e)}n(Ct,\"has\");function rf(i,e){if(!Object.prototype.hasOwnProperty.call(i,e))throw new TypeError(\"attempted to use private field on non-instance\");return i}n(rf,\"_classPrivateFieldLooseBase\");var Vb=0;function Wb(i){return\"__private_\"+Vb+++\"_\"+i}n(Wb,\"_classPrivateFieldLooseKey\");function Gb(i,e,t){let r=[];return i.forEach(s=>typeof s!=\"string\"?r.push(s):e[Symbol.split](s).forEach((o,a,l)=>{o!==\"\"&&r.push(o),a<l.length-1&&r.push(t)})),r}n(Gb,\"insertReplacement\");function sf(i,e){let t=/\\$/g,r=\"$$$$\",s=[i];if(e==null)return s;for(let o of Object.keys(e))if(o!==\"_\"){let a=e[o];typeof a==\"string\"&&(a=t[Symbol.replace](a,r)),s=Gb(s,new RegExp(`%\\\\{${o}\\\\}`,\"g\"),a)}return s}n(sf,\"interpolate\");var dn=Wb(\"apply\"),Xr=class{constructor(e){Object.defineProperty(this,dn,{value:Kb}),this.locale={strings:{},pluralize(t){return t===1?0:1}},Array.isArray(e)?e.forEach(rf(this,dn)[dn],this):rf(this,dn)[dn](e)}translate(e,t){return this.translateArray(e,t).join(\"\")}translateArray(e,t){if(!Ct(this.locale.strings,e))throw new Error(`missing string: ${e}`);let r=this.locale.strings[e];if(typeof r==\"object\"){if(t&&typeof t.smart_count<\"u\"){let o=this.locale.pluralize(t.smart_count);return sf(r[o],t)}throw new Error(\"Attempted to use a string with plural forms, but no value was given for %{smart_count}\")}return sf(r,t)}};n(Xr,\"Translator\");function Kb(i){if(!(i!=null&&i.strings))return;let e=this.locale;this.locale={...e,strings:{...e.strings,...i.strings}},this.locale.pluralize=i.pluralize||e.pluralize}n(Kb,\"_apply2\");var Zf=de(yh(),1);var Xb=\"useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict\";var Pt=n((i=21)=>{let e=\"\",t=i;for(;t--;)e+=Xb[Math.random()*64|0];return e},\"nanoid\");var em=de(Rl(),1);function Ul(i,e){if(!Object.prototype.hasOwnProperty.call(i,e))throw new TypeError(\"attempted to use private field on non-instance\");return i}n(Ul,\"_classPrivateFieldLooseBase\");var H1=0;function Lf(i){return\"__private_\"+H1+++\"_\"+i}n(Lf,\"_classPrivateFieldLooseKey\");var $1={version:\"3.1.0\"},gs=Lf(\"callbacks\"),Ph=Lf(\"publish\"),pn=class{constructor(){Object.defineProperty(this,Ph,{value:q1}),this.state={},Object.defineProperty(this,gs,{writable:!0,value:new Set})}getState(){return this.state}setState(e){let t={...this.state},r={...this.state,...e};this.state=r,Ul(this,Ph)[Ph](t,r,e)}subscribe(e){return Ul(this,gs)[gs].add(e),()=>{Ul(this,gs)[gs].delete(e)}}};n(pn,\"DefaultStore\");function q1(){for(var i=arguments.length,e=new Array(i),t=0;t<i;t++)e[t]=arguments[t];Ul(this,gs)[gs].forEach(r=>{r(...e)})}n(q1,\"_publish2\");pn.VERSION=$1.version;var kl=pn;function Bi(i){let e=i.lastIndexOf(\".\");return e===-1||e===i.length-1?{name:i,extension:void 0}:{name:i.slice(0,e),extension:i.slice(e+1)}}n(Bi,\"getFileNameAndExtension\");var fn={__proto__:null,md:\"text/markdown\",markdown:\"text/markdown\",mp4:\"video/mp4\",mp3:\"audio/mp3\",svg:\"image/svg+xml\",jpg:\"image/jpeg\",png:\"image/png\",webp:\"image/webp\",gif:\"image/gif\",heic:\"image/heic\",heif:\"image/heif\",yaml:\"text/yaml\",yml:\"text/yaml\",csv:\"text/csv\",tsv:\"text/tab-separated-values\",tab:\"text/tab-separated-values\",avi:\"video/x-msvideo\",mks:\"video/x-matroska\",mkv:\"video/x-matroska\",mov:\"video/quicktime\",dicom:\"application/dicom\",doc:\"application/msword\",docm:\"application/vnd.ms-word.document.macroenabled.12\",docx:\"application/vnd.openxmlformats-officedocument.wordprocessingml.document\",dot:\"application/msword\",dotm:\"application/vnd.ms-word.template.macroenabled.12\",dotx:\"application/vnd.openxmlformats-officedocument.wordprocessingml.template\",xla:\"application/vnd.ms-excel\",xlam:\"application/vnd.ms-excel.addin.macroenabled.12\",xlc:\"application/vnd.ms-excel\",xlf:\"application/x-xliff+xml\",xlm:\"application/vnd.ms-excel\",xls:\"application/vnd.ms-excel\",xlsb:\"application/vnd.ms-excel.sheet.binary.macroenabled.12\",xlsm:\"application/vnd.ms-excel.sheet.macroenabled.12\",xlsx:\"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\",xlt:\"application/vnd.ms-excel\",xltm:\"application/vnd.ms-excel.template.macroenabled.12\",xltx:\"application/vnd.openxmlformats-officedocument.spreadsheetml.template\",xlw:\"application/vnd.ms-excel\",txt:\"text/plain\",text:\"text/plain\",conf:\"text/plain\",log:\"text/plain\",pdf:\"application/pdf\",zip:\"application/zip\",\"7z\":\"application/x-7z-compressed\",rar:\"application/x-rar-compressed\",tar:\"application/x-tar\",gz:\"application/gzip\",dmg:\"application/x-apple-diskimage\"};function ys(i){var e;if(i.type)return i.type;let t=i.name?(e=Bi(i.name).extension)==null?void 0:e.toLowerCase():null;return t&&t in fn?fn[t]:\"application/octet-stream\"}n(ys,\"getFileType\");function V1(i){return i.charCodeAt(0).toString(32)}n(V1,\"encodeCharacter\");function Bf(i){let e=\"\";return i.replace(/[^A-Z0-9]/gi,t=>(e+=`-${V1(t)}`,\"/\"))+e}n(Bf,\"encodeFilename\");function zf(i){let e=\"uppy\";return typeof i.name==\"string\"&&(e+=`-${Bf(i.name.toLowerCase())}`),i.type!==void 0&&(e+=`-${i.type}`),i.meta&&typeof i.meta.relativePath==\"string\"&&(e+=`-${Bf(i.meta.relativePath.toLowerCase())}`),i.data.size!==void 0&&(e+=`-${i.data.size}`),i.data.lastModified!==void 0&&(e+=`-${i.data.lastModified}`),e}n(zf,\"generateFileID\");function W1(i){return!i.isRemote||!i.remote?!1:new Set([\"box\",\"dropbox\",\"drive\",\"facebook\",\"unsplash\"]).has(i.remote.provider)}n(W1,\"hasFileStableId\");function Dl(i){if(W1(i))return i.id;let e=ys(i);return zf({...i,type:e})}n(Dl,\"getSafeFileId\");function _h(i){if(i==null&&typeof navigator<\"u\"&&(i=navigator.userAgent),!i)return!0;let e=/Edge\\/(\\d+\\.\\d+)/.exec(i);if(!e)return!0;let t=e[1],[r,s]=t.split(\".\");return r=parseInt(r,10),s=parseInt(s,10),r<15||r===15&&s<15063||r>18||r===18&&s>=18218}n(_h,\"supportsUploadProgress\");function xh(i,e){return e.name?e.name:i.split(\"/\")[0]===\"image\"?`${i.split(\"/\")[0]}.${i.split(\"/\")[1]}`:\"noname\"}n(xh,\"getFileName\");function Fh(i){return i<10?`0${i}`:i.toString()}n(Fh,\"pad\");function Fo(){let i=new Date,e=Fh(i.getHours()),t=Fh(i.getMinutes()),r=Fh(i.getSeconds());return`${e}:${t}:${r}`}n(Fo,\"getTimeStamp\");var jf={debug:()=>{},warn:()=>{},error:function(){for(var i=arguments.length,e=new Array(i),t=0;t<i;t++)e[t]=arguments[t];return console.error(`[Uppy] [${Fo()}]`,...e)}},mn={debug:function(){for(var i=arguments.length,e=new Array(i),t=0;t<i;t++)e[t]=arguments[t];return console.debug(`[Uppy] [${Fo()}]`,...e)},warn:function(){for(var i=arguments.length,e=new Array(i),t=0;t<i;t++)e[t]=arguments[t];return console.warn(`[Uppy] [${Fo()}]`,...e)},error:function(){for(var i=arguments.length,e=new Array(i),t=0;t<i;t++)e[t]=arguments[t];return console.error(`[Uppy] [${Fo()}]`,...e)}};var Nl=de(Il(),1),Kf=de(Gf(),1);var Xf={maxFileSize:null,minFileSize:null,maxTotalFileSize:null,maxNumberOfFiles:null,minNumberOfFiles:null,allowedFileTypes:null,requiredMetaFields:[]},Tt=class extends Error{constructor(e,t){let{isUserFacing:r=!0,file:s}=t===void 0?{}:t;super(e),this.isRestriction=!0,this.isUserFacing=r,s!=null&&(this.file=s)}};n(Tt,\"RestrictionError\");var gn=class{constructor(e,t){this.i18n=t,this.getOpts=()=>{let r=e();if(r.restrictions.allowedFileTypes!=null&&!Array.isArray(r.restrictions.allowedFileTypes))throw new TypeError(\"`restrictions.allowedFileTypes` must be an array\");return r}}validateAggregateRestrictions(e,t){let{maxTotalFileSize:r,maxNumberOfFiles:s}=this.getOpts().restrictions;if(s&&e.filter(a=>!a.isGhost).length+t.length>s)throw new Tt(`${this.i18n(\"youCanOnlyUploadX\",{smart_count:s})}`);if(r){let o=e.reduce((a,l)=>a+l.size,0);for(let a of t)if(a.size!=null&&(o+=a.size,o>r))throw new Tt(this.i18n(\"exceedsSize\",{size:(0,Nl.default)(r),file:a.name}))}}validateSingleFile(e){let{maxFileSize:t,minFileSize:r,allowedFileTypes:s}=this.getOpts().restrictions;if(s&&!s.some(a=>a.includes(\"/\")?e.type?(0,Kf.default)(e.type.replace(/;.*?$/,\"\"),a):!1:a[0]===\".\"&&e.extension?e.extension.toLowerCase()===a.slice(1).toLowerCase():!1)){let a=s.join(\", \");throw new Tt(this.i18n(\"youCanOnlyUploadFileTypes\",{types:a}),{file:e})}if(t&&e.size!=null&&e.size>t)throw new Tt(this.i18n(\"exceedsSize\",{size:(0,Nl.default)(t),file:e.name}),{file:e});if(r&&e.size!=null&&e.size<r)throw new Tt(this.i18n(\"inferiorSize\",{size:(0,Nl.default)(r)}),{file:e})}validate(e,t){t.forEach(r=>{this.validateSingleFile(r)}),this.validateAggregateRestrictions(e,t)}validateMinNumberOfFiles(e){let{minNumberOfFiles:t}=this.getOpts().restrictions;if(Object.keys(e).length<t)throw new Tt(this.i18n(\"youHaveToAtLeastSelectX\",{smart_count:t}))}getMissingRequiredMetaFields(e){let t=new Tt(this.i18n(\"missingRequiredMetaFieldOnFile\",{fileName:e.name})),{requiredMetaFields:r}=this.getOpts().restrictions,s=[];for(let o of r)(!Object.hasOwn(e.meta,o)||e.meta[o]===\"\")&&s.push(o);return{missingFields:s,error:t}}};n(gn,\"Restricter\");var Yf={strings:{addBulkFilesFailed:{0:\"Failed to add %{smart_count} file due to an internal error\",1:\"Failed to add %{smart_count} files due to internal errors\"},youCanOnlyUploadX:{0:\"You can only upload %{smart_count} file\",1:\"You can only upload %{smart_count} files\"},youHaveToAtLeastSelectX:{0:\"You have to select at least %{smart_count} file\",1:\"You have to select at least %{smart_count} files\"},exceedsSize:\"%{file} exceeds maximum allowed size of %{size}\",missingRequiredMetaField:\"Missing required meta fields\",missingRequiredMetaFieldOnFile:\"Missing required meta fields in %{fileName}\",inferiorSize:\"This file is smaller than the allowed size of %{size}\",youCanOnlyUploadFileTypes:\"You can only upload: %{types}\",noMoreFilesAllowed:\"Cannot add more files\",noDuplicates:\"Cannot add the duplicate file '%{fileName}', it already exists\",companionError:\"Connection with Companion failed\",authAborted:\"Authentication aborted\",companionUnauthorizeHint:\"To unauthorize to your %{provider} account, please go to %{url}\",failedToUpload:\"Failed to upload %{file}\",noInternetConnection:\"No Internet connection\",connectedToInternet:\"Connected to the Internet\",noFilesFound:\"You have no files or folders here\",noSearchResults:\"Unfortunately, there are no results for this search\",selectX:{0:\"Select %{smart_count}\",1:\"Select %{smart_count}\"},allFilesFromFolderNamed:\"All files from folder %{name}\",openFolderNamed:\"Open folder %{name}\",cancel:\"Cancel\",logOut:\"Log out\",filter:\"Filter\",resetFilter:\"Reset filter\",loading:\"Loading...\",loadedXFiles:\"Loaded %{numFiles} files\",authenticateWithTitle:\"Please authenticate with %{pluginName} to select files\",authenticateWith:\"Connect to %{pluginName}\",signInWithGoogle:\"Sign in with Google\",searchImages:\"Search for images\",enterTextToSearch:\"Enter text to search for images\",search:\"Search\",resetSearch:\"Reset search\",emptyFolderAdded:\"No files were added from empty folder\",addedNumFiles:\"Added %{numFiles} file(s)\",folderAlreadyAdded:'The folder \"%{folder}\" was already added',folderAdded:{0:\"Added %{smart_count} file from %{folder}\",1:\"Added %{smart_count} files from %{folder}\"},additionalRestrictionsFailed:\"%{count} additional restrictions were not fulfilled\"}};var Qf,Jf;function q(i,e){if(!Object.prototype.hasOwnProperty.call(i,e))throw new TypeError(\"attempted to use private field on non-instance\");return i}n(q,\"_classPrivateFieldLooseBase\");var X1=0;function Xe(i){return\"__private_\"+X1+++\"_\"+i}n(Xe,\"_classPrivateFieldLooseKey\");var Y1={version:\"3.7.1\"},Ml=n(()=>({totalProgress:0,allowNewUpload:!0,error:null,recoveredState:null}),\"getDefaultUploadState\"),ht=Xe(\"plugins\"),Gt=Xe(\"restricter\"),yn=Xe(\"storeUnsubscribe\"),pr=Xe(\"emitter\"),vs=Xe(\"preProcessors\"),bs=Xe(\"uploaders\"),gr=Xe(\"postProcessors\"),Kt=Xe(\"informAndEmit\"),Pn=Xe(\"checkRequiredMetaFieldsOnFile\"),Eh=Xe(\"checkRequiredMetaFields\"),vn=Xe(\"assertNewUploadAllowed\"),Th=Xe(\"transformFile\"),bn=Xe(\"startIfAutoProceed\"),wn=Xe(\"checkAndUpdateFileState\"),Oh=Xe(\"addListeners\"),Si=Xe(\"updateOnlineStatus\"),fr=Xe(\"createUpload\"),Ch=Xe(\"getUpload\"),ws=Xe(\"removeUpload\"),mr=Xe(\"runUpload\");Qf=Symbol.for(\"uppy test: getPlugins\");Jf=Symbol.for(\"uppy test: createUpload\");var Sn=class{constructor(e){Object.defineProperty(this,mr,{value:lw}),Object.defineProperty(this,ws,{value:aw}),Object.defineProperty(this,Ch,{value:nw}),Object.defineProperty(this,fr,{value:ow}),Object.defineProperty(this,Oh,{value:sw}),Object.defineProperty(this,wn,{value:rw}),Object.defineProperty(this,bn,{value:iw}),Object.defineProperty(this,Th,{value:tw}),Object.defineProperty(this,vn,{value:ew}),Object.defineProperty(this,Eh,{value:Z1}),Object.defineProperty(this,Pn,{value:J1}),Object.defineProperty(this,Kt,{value:Q1}),Object.defineProperty(this,ht,{writable:!0,value:Object.create(null)}),Object.defineProperty(this,Gt,{writable:!0,value:void 0}),Object.defineProperty(this,yn,{writable:!0,value:void 0}),Object.defineProperty(this,pr,{writable:!0,value:(0,Zf.default)()}),Object.defineProperty(this,vs,{writable:!0,value:new Set}),Object.defineProperty(this,bs,{writable:!0,value:new Set}),Object.defineProperty(this,gr,{writable:!0,value:new Set}),this.calculateProgress=(0,em.default)((r,s)=>{let o=this.getFile(r?.id);if(r==null||!o){this.log(`Not setting progress for a file that has been removed: ${r?.id}`);return}if(o.progress.percentage===100){this.log(`Not setting progress for a file that has been already uploaded: ${r.id}`);return}let a=Number.isFinite(s.bytesTotal)&&s.bytesTotal>0;this.setFileState(r.id,{progress:{...o.progress,bytesUploaded:s.bytesUploaded,bytesTotal:s.bytesTotal,percentage:a?Math.round(s.bytesUploaded/s.bytesTotal*100):0}}),this.calculateTotalProgress()},500,{leading:!0,trailing:!0}),Object.defineProperty(this,Si,{writable:!0,value:this.updateOnlineStatus.bind(this)}),this.defaultLocale=Yf;let t={id:\"uppy\",autoProceed:!1,allowMultipleUploadBatches:!0,debug:!1,restrictions:Xf,meta:{},onBeforeFileAdded:(r,s)=>!Object.hasOwn(s,r.id),onBeforeUpload:r=>r,store:new kl,logger:jf,infoTimeout:5e3};this.opts={...t,...e,restrictions:{...t.restrictions,...e&&e.restrictions}},e&&e.logger&&e.debug?this.log(\"You are using a custom `logger`, but also set `debug: true`, which uses built-in logger to output logs to console. Ignoring `debug: true` and using your custom `logger`.\",\"warning\"):e&&e.debug&&(this.opts.logger=mn),this.log(`Using Core v${this.constructor.VERSION}`),this.i18nInit(),this.store=this.opts.store,this.setState({...Ml(),plugins:{},files:{},currentUploads:{},capabilities:{uploadProgress:_h(),individualCancellation:!0,resumableUploads:!1},meta:{...this.opts.meta},info:[]}),q(this,Gt)[Gt]=new gn(()=>this.opts,this.i18n),q(this,yn)[yn]=this.store.subscribe((r,s,o)=>{this.emit(\"state-update\",r,s,o),this.updateAll(s)}),this.opts.debug&&typeof window<\"u\"&&(window[this.opts.id]=this),q(this,Oh)[Oh]()}emit(e){for(var t=arguments.length,r=new Array(t>1?t-1:0),s=1;s<t;s++)r[s-1]=arguments[s];q(this,pr)[pr].emit(e,...r)}on(e,t){return q(this,pr)[pr].on(e,t),this}once(e,t){return q(this,pr)[pr].once(e,t),this}off(e,t){return q(this,pr)[pr].off(e,t),this}updateAll(e){this.iteratePlugins(t=>{t.update(e)})}setState(e){this.store.setState(e)}getState(){return this.store.getState()}patchFilesState(e){let t=this.getState().files;this.setState({files:{...t,...Object.fromEntries(Object.entries(e).map(r=>{let[s,o]=r;return[s,{...t[s],...o}]}))}})}setFileState(e,t){if(!this.getState().files[e])throw new Error(`Can\\u2019t set state for ${e} (the file could have been removed)`);this.patchFilesState({[e]:t})}i18nInit(){let e=new Xr([this.defaultLocale,this.opts.locale]);this.i18n=e.translate.bind(e),this.i18nArray=e.translateArray.bind(e),this.locale=e.locale}setOptions(e){this.opts={...this.opts,...e,restrictions:{...this.opts.restrictions,...e&&e.restrictions}},e.meta&&this.setMeta(e.meta),this.i18nInit(),e.locale&&this.iteratePlugins(t=>{t.setOptions(e)}),this.setState()}resetProgress(){let e={percentage:0,bytesUploaded:0,uploadComplete:!1,uploadStarted:null},t={...this.getState().files},r={};Object.keys(t).forEach(s=>{r[s]={...t[s],progress:{...t[s].progress,...e}}}),this.setState({files:r,...Ml()}),this.emit(\"reset-progress\")}clearUploadedFiles(){this.setState({...Ml(),files:{}})}addPreProcessor(e){q(this,vs)[vs].add(e)}removePreProcessor(e){return q(this,vs)[vs].delete(e)}addPostProcessor(e){q(this,gr)[gr].add(e)}removePostProcessor(e){return q(this,gr)[gr].delete(e)}addUploader(e){q(this,bs)[bs].add(e)}removeUploader(e){return q(this,bs)[bs].delete(e)}setMeta(e){let t={...this.getState().meta,...e},r={...this.getState().files};Object.keys(r).forEach(s=>{r[s]={...r[s],meta:{...r[s].meta,...e}}}),this.log(\"Adding metadata:\"),this.log(e),this.setState({meta:t,files:r})}setFileMeta(e,t){let r={...this.getState().files};if(!r[e]){this.log(\"Was trying to set metadata for a file that has been removed: \",e);return}let s={...r[e].meta,...t};r[e]={...r[e],meta:s},this.setState({files:r})}getFile(e){return this.getState().files[e]}getFiles(){let{files:e}=this.getState();return Object.values(e)}getFilesByIds(e){return e.map(t=>this.getFile(t))}getObjectOfFilesPerState(){let{files:e,totalProgress:t,error:r}=this.getState(),s=Object.values(e),o=s.filter(S=>{let{progress:E}=S;return!E.uploadComplete&&E.uploadStarted}),a=s.filter(S=>!S.progress.uploadStarted),l=s.filter(S=>S.progress.uploadStarted||S.progress.preprocess||S.progress.postprocess),h=s.filter(S=>S.progress.uploadStarted),p=s.filter(S=>S.isPaused),d=s.filter(S=>S.progress.uploadComplete),f=s.filter(S=>S.error),y=o.filter(S=>!S.isPaused),b=s.filter(S=>S.progress.preprocess||S.progress.postprocess);return{newFiles:a,startedFiles:l,uploadStartedFiles:h,pausedFiles:p,completeFiles:d,erroredFiles:f,inProgressFiles:o,inProgressNotPausedFiles:y,processingFiles:b,isUploadStarted:h.length>0,isAllComplete:t===100&&d.length===s.length&&b.length===0,isAllErrored:!!r&&f.length===s.length,isAllPaused:o.length!==0&&p.length===o.length,isUploadInProgress:o.length>0,isSomeGhost:s.some(S=>S.isGhost)}}validateRestrictions(e,t){t===void 0&&(t=this.getFiles());try{q(this,Gt)[Gt].validate(t,[e])}catch(r){return r}return null}checkIfFileAlreadyExists(e){let{files:t}=this.getState();return!!(t[e]&&!t[e].isGhost)}addFile(e){q(this,vn)[vn](e);let{nextFilesState:t,validFilesToAdd:r,errors:s}=q(this,wn)[wn]([e]),o=s.filter(l=>l.isRestriction);if(q(this,Kt)[Kt](o),s.length>0)throw s[0];this.setState({files:t});let[a]=r;return this.emit(\"file-added\",a),this.emit(\"files-added\",r),this.log(`Added file: ${a.name}, ${a.id}, mime type: ${a.type}`),q(this,bn)[bn](),a.id}addFiles(e){q(this,vn)[vn]();let{nextFilesState:t,validFilesToAdd:r,errors:s}=q(this,wn)[wn](e),o=s.filter(l=>l.isRestriction);q(this,Kt)[Kt](o);let a=s.filter(l=>!l.isRestriction);if(a.length>0){let l=`Multiple errors occurred while adding files:\n`;if(a.forEach(h=>{l+=`\n * ${h.message}`}),this.info({message:this.i18n(\"addBulkFilesFailed\",{smart_count:a.length}),details:l},\"error\",this.opts.infoTimeout),typeof AggregateError==\"function\")throw new AggregateError(a,l);{let h=new Error(l);throw h.errors=a,h}}this.setState({files:t}),r.forEach(l=>{this.emit(\"file-added\",l)}),this.emit(\"files-added\",r),r.length>5?this.log(`Added batch of ${r.length} files`):Object.values(r).forEach(l=>{this.log(`Added file: ${l.name}\n id: ${l.id}\n type: ${l.type}`)}),r.length>0&&q(this,bn)[bn]()}removeFiles(e,t){let{files:r,currentUploads:s}=this.getState(),o={...r},a={...s},l=Object.create(null);e.forEach(f=>{r[f]&&(l[f]=r[f],delete o[f])});function h(f){return l[f]===void 0}n(h,\"fileIsNotRemoved\"),Object.keys(a).forEach(f=>{let y=s[f].fileIDs.filter(h);if(y.length===0){delete a[f];return}let{capabilities:b}=this.getState();if(y.length!==s[f].fileIDs.length&&!b.individualCancellation)throw new Error(\"individualCancellation is disabled\");a[f]={...s[f],fileIDs:y}});let p={currentUploads:a,files:o};Object.keys(o).length===0&&(p.allowNewUpload=!0,p.error=null,p.recoveredState=null),this.setState(p),this.calculateTotalProgress();let d=Object.keys(l);d.forEach(f=>{this.emit(\"file-removed\",l[f],t)}),d.length>5?this.log(`Removed ${d.length} files`):this.log(`Removed files: ${d.join(\", \")}`)}removeFile(e,t){t===void 0&&(t=null),this.removeFiles([e],t)}pauseResume(e){if(!this.getState().capabilities.resumableUploads||this.getFile(e).uploadComplete)return;let r=!(this.getFile(e).isPaused||!1);return this.setFileState(e,{isPaused:r}),this.emit(\"upload-pause\",e,r),r}pauseAll(){let e={...this.getState().files};Object.keys(e).filter(r=>!e[r].progress.uploadComplete&&e[r].progress.uploadStarted).forEach(r=>{let s={...e[r],isPaused:!0};e[r]=s}),this.setState({files:e}),this.emit(\"pause-all\")}resumeAll(){let e={...this.getState().files};Object.keys(e).filter(r=>!e[r].progress.uploadComplete&&e[r].progress.uploadStarted).forEach(r=>{let s={...e[r],isPaused:!1,error:null};e[r]=s}),this.setState({files:e}),this.emit(\"resume-all\")}retryAll(){let e={...this.getState().files},t=Object.keys(e).filter(s=>e[s].error);if(t.forEach(s=>{let o={...e[s],isPaused:!1,error:null};e[s]=o}),this.setState({files:e,error:null}),this.emit(\"retry-all\",t),t.length===0)return Promise.resolve({successful:[],failed:[]});let r=q(this,fr)[fr](t,{forceAllowNewUpload:!0});return q(this,mr)[mr](r)}cancelAll(e){let{reason:t=\"user\"}=e===void 0?{}:e;if(this.emit(\"cancel-all\",{reason:t}),t===\"user\"){let{files:r}=this.getState(),s=Object.keys(r);s.length&&this.removeFiles(s,\"cancel-all\"),this.setState(Ml())}}retryUpload(e){this.setFileState(e,{error:null,isPaused:!1}),this.emit(\"upload-retry\",e);let t=q(this,fr)[fr]([e],{forceAllowNewUpload:!0});return q(this,mr)[mr](t)}logout(){this.iteratePlugins(e=>{e.provider&&e.provider.logout&&e.provider.logout()})}calculateTotalProgress(){let t=this.getFiles().filter(p=>p.progress.uploadStarted||p.progress.preprocess||p.progress.postprocess);if(t.length===0){this.emit(\"progress\",0),this.setState({totalProgress:0});return}let r=t.filter(p=>p.progress.bytesTotal!=null),s=t.filter(p=>p.progress.bytesTotal==null);if(r.length===0){let p=t.length*100,d=s.reduce((y,b)=>y+b.progress.percentage,0),f=Math.round(d/p*100);this.setState({totalProgress:f});return}let o=r.reduce((p,d)=>p+d.progress.bytesTotal,0),a=o/r.length;o+=a*s.length;let l=0;r.forEach(p=>{l+=p.progress.bytesUploaded}),s.forEach(p=>{l+=a*(p.progress.percentage||0)/100});let h=o===0?0:Math.round(l/o*100);h>100&&(h=100),this.setState({totalProgress:h}),this.emit(\"progress\",h)}updateOnlineStatus(){(typeof window.navigator.onLine<\"u\"?window.navigator.onLine:!0)?(this.emit(\"is-online\"),this.wasOffline&&(this.emit(\"back-online\"),this.info(this.i18n(\"connectedToInternet\"),\"success\",3e3),this.wasOffline=!1)):(this.emit(\"is-offline\"),this.info(this.i18n(\"noInternetConnection\"),\"error\",0),this.wasOffline=!0)}getID(){return this.opts.id}use(e,t){if(typeof e!=\"function\"){let a=`Expected a plugin class, but got ${e===null?\"null\":typeof e}. Please verify that the plugin was imported and spelled correctly.`;throw new TypeError(a)}let r=new e(this,t),s=r.id;if(!s)throw new Error(\"Your plugin must have an id\");if(!r.type)throw new Error(\"Your plugin must have a type\");let o=this.getPlugin(s);if(o){let a=`Already found a plugin named '${o.id}'. Tried to use: '${s}'.\nUppy plugins must have unique \\`id\\` options. See https://uppy.io/docs/plugins/#id.`;throw new Error(a)}return e.VERSION&&this.log(`Using ${s} v${e.VERSION}`),r.type in q(this,ht)[ht]?q(this,ht)[ht][r.type].push(r):q(this,ht)[ht][r.type]=[r],r.install(),this.emit(\"plugin-added\",r),this}getPlugin(e){for(let t of Object.values(q(this,ht)[ht])){let r=t.find(s=>s.id===e);if(r!=null)return r}}[Qf](e){return q(this,ht)[ht][e]}iteratePlugins(e){Object.values(q(this,ht)[ht]).flat(1).forEach(e)}removePlugin(e){this.log(`Removing plugin ${e.id}`),this.emit(\"plugin-remove\",e),e.uninstall&&e.uninstall();let t=q(this,ht)[ht][e.type],r=t.findIndex(a=>a.id===e.id);r!==-1&&t.splice(r,1);let o={plugins:{...this.getState().plugins,[e.id]:void 0}};this.setState(o)}close(e){let{reason:t}=e===void 0?{}:e;this.log(`Closing Uppy instance ${this.opts.id}: removing all files and uninstalling plugins`),this.cancelAll({reason:t}),q(this,yn)[yn](),this.iteratePlugins(r=>{this.removePlugin(r)}),typeof window<\"u\"&&window.removeEventListener&&(window.removeEventListener(\"online\",q(this,Si)[Si]),window.removeEventListener(\"offline\",q(this,Si)[Si]))}hideInfo(){let{info:e}=this.getState();this.setState({info:e.slice(1)}),this.emit(\"info-hidden\")}info(e,t,r){t===void 0&&(t=\"info\"),r===void 0&&(r=3e3);let s=typeof e==\"object\";this.setState({info:[...this.getState().info,{type:t,message:s?e.message:e,details:s?e.details:null}]}),setTimeout(()=>this.hideInfo(),r),this.emit(\"info-visible\")}log(e,t){let{logger:r}=this.opts;switch(t){case\"error\":r.error(e);break;case\"warning\":r.warn(e);break;default:r.debug(e);break}}restore(e){return this.log(`Core: attempting to restore upload \"${e}\"`),this.getState().currentUploads[e]?q(this,mr)[mr](e):(q(this,ws)[ws](e),Promise.reject(new Error(\"Nonexistent upload\")))}[Jf](){return q(this,fr)[fr](...arguments)}addResultData(e,t){if(!q(this,Ch)[Ch](e)){this.log(`Not setting result for an upload that has been removed: ${e}`);return}let{currentUploads:r}=this.getState(),s={...r[e],result:{...r[e].result,...t}};this.setState({currentUploads:{...r,[e]:s}})}upload(){var e;(e=q(this,ht)[ht].uploader)!=null&&e.length||this.log(\"No uploader type plugins are used\",\"warning\");let{files:t}=this.getState(),r=this.opts.onBeforeUpload(t);return r===!1?Promise.reject(new Error(\"Not starting the upload because onBeforeUpload returned false\")):(r&&typeof r==\"object\"&&(t=r,this.setState({files:t})),Promise.resolve().then(()=>q(this,Gt)[Gt].validateMinNumberOfFiles(t)).catch(s=>{throw q(this,Kt)[Kt]([s]),s}).then(()=>{if(!q(this,Eh)[Eh](t))throw new Tt(this.i18n(\"missingRequiredMetaField\"))}).catch(s=>{throw s}).then(()=>{let{currentUploads:s}=this.getState(),o=Object.values(s).flatMap(h=>h.fileIDs),a=[];Object.keys(t).forEach(h=>{let p=this.getFile(h);!p.progress.uploadStarted&&o.indexOf(h)===-1&&a.push(p.id)});let l=q(this,fr)[fr](a);return q(this,mr)[mr](l)}).catch(s=>{throw this.emit(\"error\",s),this.log(s,\"error\"),s}))}};n(Sn,\"Uppy\");function Q1(i){for(let o of i){let{file:a,isRestriction:l}=o;l?this.emit(\"restriction-failed\",a,o):this.emit(\"error\",o),this.log(o,\"warning\")}let e=i.filter(o=>o.isUserFacing),t=4,r=e.slice(0,t),s=e.slice(t);r.forEach(o=>{let{message:a,details:l=\"\"}=o;this.info({message:a,details:l},\"error\",this.opts.infoTimeout)}),s.length>0&&this.info({message:this.i18n(\"additionalRestrictionsFailed\",{count:s.length})})}n(Q1,\"_informAndEmit2\");function J1(i){let{missingFields:e,error:t}=q(this,Gt)[Gt].getMissingRequiredMetaFields(i);return e.length>0?(this.setFileState(i.id,{missingRequiredMetaFields:e}),this.log(t.message),this.emit(\"restriction-failed\",i,t),!1):!0}n(J1,\"_checkRequiredMetaFieldsOnFile2\");function Z1(i){let e=!0;for(let t of Object.values(i))q(this,Pn)[Pn](t)||(e=!1);return e}n(Z1,\"_checkRequiredMetaFields2\");function ew(i){let{allowNewUpload:e}=this.getState();if(e===!1){let t=new Tt(this.i18n(\"noMoreFilesAllowed\"),{file:i});throw q(this,Kt)[Kt]([t]),t}}n(ew,\"_assertNewUploadAllowed2\");function tw(i){let e=i instanceof File?{name:i.name,type:i.type,size:i.size,data:i}:i,t=ys(e),r=xh(t,e),s=Bi(r).extension,o=!!e.isRemote,a=Dl(e),l=e.meta||{};l.name=r,l.type=t;let h=Number.isFinite(e.data.size)?e.data.size:null;return{source:e.source||\"\",id:a,name:r,extension:s||\"\",meta:{...this.getState().meta,...l},type:t,data:e.data,progress:{percentage:0,bytesUploaded:0,bytesTotal:h,uploadComplete:!1,uploadStarted:null},size:h,isRemote:o,remote:e.remote||\"\",preview:e.preview}}n(tw,\"_transformFile2\");function iw(){this.opts.autoProceed&&!this.scheduledAutoProceed&&(this.scheduledAutoProceed=setTimeout(()=>{this.scheduledAutoProceed=null,this.upload().catch(i=>{i.isRestriction||this.log(i.stack||i.message||i)})},4))}n(iw,\"_startIfAutoProceed2\");function rw(i){let{files:e}=this.getState(),t={...e},r=[],s=[];for(let a of i)try{var o;let l=q(this,Th)[Th](a);if((o=e[l.id])!=null&&o.isGhost){let{isGhost:p,...d}=e[l.id];l={...d,data:a.data},this.log(`Replaced the blob in the restored ghost file: ${l.name}, ${l.id}`)}let h=this.opts.onBeforeFileAdded(l,t);if(!h&&this.checkIfFileAlreadyExists(l.id))throw new Tt(this.i18n(\"noDuplicates\",{fileName:l.name}),{file:a});if(h===!1)throw new Tt(\"Cannot add the file because onBeforeFileAdded returned false.\",{isUserFacing:!1,file:a});typeof h==\"object\"&&h!==null&&(l=h),q(this,Gt)[Gt].validateSingleFile(l),t[l.id]=l,r.push(l)}catch(l){s.push(l)}try{q(this,Gt)[Gt].validateAggregateRestrictions(Object.values(e),r)}catch(a){return s.push(a),{nextFilesState:e,validFilesToAdd:[],errors:s}}return{nextFilesState:t,validFilesToAdd:r,errors:s}}n(rw,\"_checkAndUpdateFileState2\");function sw(){let i=n((r,s,o)=>{let a=r.message||\"Unknown error\";r.details&&(a+=` ${r.details}`),this.setState({error:a}),s!=null&&s.id in this.getState().files&&this.setFileState(s.id,{error:a,response:o})},\"errorHandler\");this.on(\"error\",i),this.on(\"upload-error\",(r,s,o)=>{if(i(s,r,o),typeof s==\"object\"&&s.message){this.log(s.message,\"error\");let a=new Error(this.i18n(\"failedToUpload\",{file:r?.name}));a.isUserFacing=!0,a.details=s.message,s.details&&(a.details+=` ${s.details}`),q(this,Kt)[Kt]([a])}else q(this,Kt)[Kt]([s])});let e;this.on(\"upload-stalled\",(r,s)=>{let{message:o}=r,a=s.map(l=>l.meta.name).join(\", \");e||(this.info({message:o,details:a},\"warning\",this.opts.infoTimeout),e=setTimeout(()=>{e=null},this.opts.infoTimeout)),this.log(`${o} ${a}`.trim(),\"warning\")}),this.on(\"upload\",()=>{this.setState({error:null})});let t=n(r=>{let s=r.filter(a=>{let l=a!=null&&this.getFile(a.id);return l||this.log(`Not setting progress for a file that has been removed: ${a?.id}`),l}),o=Object.fromEntries(s.map(a=>[a.id,{progress:{uploadStarted:Date.now(),uploadComplete:!1,percentage:0,bytesUploaded:0,bytesTotal:a.size}}]));this.patchFilesState(o)},\"onUploadStarted\");this.on(\"upload-start\",r=>{r.forEach(s=>{this.emit(\"upload-started\",s)}),t(r)}),this.on(\"upload-progress\",this.calculateProgress),this.on(\"upload-success\",(r,s)=>{if(r==null||!this.getFile(r.id)){this.log(`Not setting progress for a file that has been removed: ${r?.id}`);return}let o=this.getFile(r.id).progress;this.setFileState(r.id,{progress:{...o,postprocess:q(this,gr)[gr].size>0?{mode:\"indeterminate\"}:null,uploadComplete:!0,percentage:100,bytesUploaded:o.bytesTotal},response:s,uploadURL:s.uploadURL,isPaused:!1}),r.size==null&&this.setFileState(r.id,{size:s.bytesUploaded||o.bytesTotal}),this.calculateTotalProgress()}),this.on(\"preprocess-progress\",(r,s)=>{if(r==null||!this.getFile(r.id)){this.log(`Not setting progress for a file that has been removed: ${r?.id}`);return}this.setFileState(r.id,{progress:{...this.getFile(r.id).progress,preprocess:s}})}),this.on(\"preprocess-complete\",r=>{if(r==null||!this.getFile(r.id)){this.log(`Not setting progress for a file that has been removed: ${r?.id}`);return}let s={...this.getState().files};s[r.id]={...s[r.id],progress:{...s[r.id].progress}},delete s[r.id].progress.preprocess,this.setState({files:s})}),this.on(\"postprocess-progress\",(r,s)=>{if(r==null||!this.getFile(r.id)){this.log(`Not setting progress for a file that has been removed: ${r?.id}`);return}this.setFileState(r.id,{progress:{...this.getState().files[r.id].progress,postprocess:s}})}),this.on(\"postprocess-complete\",r=>{if(r==null||!this.getFile(r.id)){this.log(`Not setting progress for a file that has been removed: ${r?.id}`);return}let s={...this.getState().files};s[r.id]={...s[r.id],progress:{...s[r.id].progress}},delete s[r.id].progress.postprocess,this.setState({files:s})}),this.on(\"restored\",()=>{this.calculateTotalProgress()}),this.on(\"dashboard:file-edit-complete\",r=>{r&&q(this,Pn)[Pn](r)}),typeof window<\"u\"&&window.addEventListener&&(window.addEventListener(\"online\",q(this,Si)[Si]),window.addEventListener(\"offline\",q(this,Si)[Si]),setTimeout(q(this,Si)[Si],3e3))}n(sw,\"_addListeners2\");function ow(i,e){e===void 0&&(e={});let{forceAllowNewUpload:t=!1}=e,{allowNewUpload:r,currentUploads:s}=this.getState();if(!r&&!t)throw new Error(\"Cannot create a new upload: already uploading.\");let o=Pt();return this.emit(\"upload\",{id:o,fileIDs:i}),this.setState({allowNewUpload:this.opts.allowMultipleUploadBatches!==!1&&this.opts.allowMultipleUploads!==!1,currentUploads:{...s,[o]:{fileIDs:i,step:0,result:{}}}}),o}n(ow,\"_createUpload2\");function nw(i){let{currentUploads:e}=this.getState();return e[i]}n(nw,\"_getUpload2\");function aw(i){let e={...this.getState().currentUploads};delete e[i],this.setState({currentUploads:e})}n(aw,\"_removeUpload2\");async function lw(i){let e=n(()=>{let{currentUploads:o}=this.getState();return o[i]},\"getCurrentUpload\"),t=e(),r=[...q(this,vs)[vs],...q(this,bs)[bs],...q(this,gr)[gr]];try{for(let o=t.step||0;o<r.length&&t;o++){let a=r[o];this.setState({currentUploads:{...this.getState().currentUploads,[i]:{...t,step:o}}});let{fileIDs:l}=t;await a(l,i),t=e()}}catch(o){throw q(this,ws)[ws](i),o}if(t){t.fileIDs.forEach(h=>{let p=this.getFile(h);p&&p.progress.postprocess&&this.emit(\"postprocess-complete\",p)});let o=t.fileIDs.map(h=>this.getFile(h)),a=o.filter(h=>!h.error),l=o.filter(h=>h.error);await this.addResultData(i,{successful:a,failed:l,uploadID:i}),t=e()}let s;return t&&(s=t.result,this.emit(\"complete\",s),q(this,ws)[ws](i)),s==null&&this.log(`Not setting result for an upload that has been removed: ${i}`),s}n(lw,\"_runUpload2\");Sn.VERSION=Y1.version;var Ah=Sn;var Fn,ee,nm,uw,_n,tm,hw,Ll={},am=[],dw=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i;function yr(i,e){for(var t in e)i[t]=e[t];return i}n(yr,\"s\");function lm(i){var e=i.parentNode;e&&e.removeChild(i)}n(lm,\"a\");function u(i,e,t){var r,s,o,a={};for(o in e)o==\"key\"?r=e[o]:o==\"ref\"?s=e[o]:a[o]=e[o];if(arguments.length>2&&(a.children=arguments.length>3?Fn.call(arguments,2):t),typeof i==\"function\"&&i.defaultProps!=null)for(o in i.defaultProps)a[o]===void 0&&(a[o]=i.defaultProps[o]);return xn(i,a,r,s,null)}n(u,\"h\");function xn(i,e,t,r,s){var o={type:i,props:e,key:t,ref:r,__k:null,__:null,__b:0,__e:null,__d:void 0,__c:null,__h:null,constructor:void 0,__v:s??++nm};return s==null&&ee.vnode!=null&&ee.vnode(o),o}n(xn,\"v\");function um(){return{current:null}}n(um,\"y\");function Ht(i){return i.children}n(Ht,\"p\");function we(i,e){this.props=i,this.context=e}n(we,\"d\");function Eo(i,e){if(e==null)return i.__?Eo(i.__,i.__.__k.indexOf(i)+1):null;for(var t;e<i.__k.length;e++)if((t=i.__k[e])!=null&&t.__e!=null)return t.__e;return typeof i.type==\"function\"?Eo(i):null}n(Eo,\"_\");function hm(i){var e,t;if((i=i.__)!=null&&i.__c!=null){for(i.__e=i.__c.base=null,e=0;e<i.__k.length;e++)if((t=i.__k[e])!=null&&t.__e!=null){i.__e=i.__c.base=t.__e;break}return hm(i)}}n(hm,\"k\");function im(i){(!i.__d&&(i.__d=!0)&&_n.push(i)&&!Bl.__r++||tm!==ee.debounceRendering)&&((tm=ee.debounceRendering)||setTimeout)(Bl)}n(im,\"b\");function Bl(){for(var i;Bl.__r=_n.length;)i=_n.sort(function(e,t){return e.__v.__b-t.__v.__b}),_n=[],i.some(function(e){var t,r,s,o,a,l;e.__d&&(a=(o=(t=e).__v).__e,(l=t.__P)&&(r=[],(s=yr({},o)).__v=o.__v+1,Rh(l,o,s,t.__n,l.ownerSVGElement!==void 0,o.__h!=null?[a]:null,r,a??Eo(o),o.__h),fm(r,o),o.__e!=a&&hm(o)))})}n(Bl,\"g\");function dm(i,e,t,r,s,o,a,l,h,p){var d,f,y,b,S,E,x,F=r&&r.__k||am,U=F.length;for(t.__k=[],d=0;d<e.length;d++)if((b=t.__k[d]=(b=e[d])==null||typeof b==\"boolean\"?null:typeof b==\"string\"||typeof b==\"number\"||typeof b==\"bigint\"?xn(null,b,null,null,b):Array.isArray(b)?xn(Ht,{children:b},null,null,null):b.__b>0?xn(b.type,b.props,b.key,null,b.__v):b)!=null){if(b.__=t,b.__b=t.__b+1,(y=F[d])===null||y&&b.key==y.key&&b.type===y.type)F[d]=void 0;else for(f=0;f<U;f++){if((y=F[f])&&b.key==y.key&&b.type===y.type){F[f]=void 0;break}y=null}Rh(i,b,y=y||Ll,s,o,a,l,h,p),S=b.__e,(f=b.ref)&&y.ref!=f&&(x||(x=[]),y.ref&&x.push(y.ref,null,b),x.push(f,b.__c||S,b)),S!=null?(E==null&&(E=S),typeof b.type==\"function\"&&b.__k===y.__k?b.__d=h=cm(b,h,i):h=pm(i,b,y,F,S,h),typeof t.type==\"function\"&&(t.__d=h)):h&&y.__e==h&&h.parentNode!=i&&(h=Eo(y))}for(t.__e=E,d=U;d--;)F[d]!=null&&(typeof t.type==\"function\"&&F[d].__e!=null&&F[d].__e==t.__d&&(t.__d=Eo(r,d+1)),gm(F[d],F[d]));if(x)for(d=0;d<x.length;d++)mm(x[d],x[++d],x[++d])}n(dm,\"w\");function cm(i,e,t){for(var r,s=i.__k,o=0;s&&o<s.length;o++)(r=s[o])&&(r.__=i,e=typeof r.type==\"function\"?cm(r,e,t):pm(t,r,r,s,r.__e,e));return e}n(cm,\"m\");function ci(i,e){return e=e||[],i==null||typeof i==\"boolean\"||(Array.isArray(i)?i.some(function(t){ci(t,e)}):e.push(i)),e}n(ci,\"x\");function pm(i,e,t,r,s,o){var a,l,h;if(e.__d!==void 0)a=e.__d,e.__d=void 0;else if(t==null||s!=o||s.parentNode==null)e:if(o==null||o.parentNode!==i)i.appendChild(s),a=null;else{for(l=o,h=0;(l=l.nextSibling)&&h<r.length;h+=2)if(l==s)break e;i.insertBefore(s,o),a=o}return a!==void 0?a:s.nextSibling}n(pm,\"A\");function cw(i,e,t,r,s){var o;for(o in t)o===\"children\"||o===\"key\"||o in e||zl(i,o,null,t[o],r);for(o in e)s&&typeof e[o]!=\"function\"||o===\"children\"||o===\"key\"||o===\"value\"||o===\"checked\"||t[o]===e[o]||zl(i,o,e[o],t[o],r)}n(cw,\"C\");function rm(i,e,t){e[0]===\"-\"?i.setProperty(e,t):i[e]=t==null?\"\":typeof t!=\"number\"||dw.test(e)?t:t+\"px\"}n(rm,\"$\");function zl(i,e,t,r,s){var o;e:if(e===\"style\")if(typeof t==\"string\")i.style.cssText=t;else{if(typeof r==\"string\"&&(i.style.cssText=r=\"\"),r)for(e in r)t&&e in t||rm(i.style,e,\"\");if(t)for(e in t)r&&t[e]===r[e]||rm(i.style,e,t[e])}else if(e[0]===\"o\"&&e[1]===\"n\")o=e!==(e=e.replace(/Capture$/,\"\")),e=e.toLowerCase()in i?e.toLowerCase().slice(2):e.slice(2),i.l||(i.l={}),i.l[e+o]=t,t?r||i.addEventListener(e,o?om:sm,o):i.removeEventListener(e,o?om:sm,o);else if(e!==\"dangerouslySetInnerHTML\"){if(s)e=e.replace(/xlink(H|:h)/,\"h\").replace(/sName$/,\"s\");else if(e!==\"href\"&&e!==\"list\"&&e!==\"form\"&&e!==\"tabIndex\"&&e!==\"download\"&&e in i)try{i[e]=t??\"\";break e}catch{}typeof t==\"function\"||(t!=null&&(t!==!1||e[0]===\"a\"&&e[1]===\"r\")?i.setAttribute(e,t):i.removeAttribute(e))}}n(zl,\"H\");function sm(i){this.l[i.type+!1](ee.event?ee.event(i):i)}n(sm,\"I\");function om(i){this.l[i.type+!0](ee.event?ee.event(i):i)}n(om,\"T\");function Rh(i,e,t,r,s,o,a,l,h){var p,d,f,y,b,S,E,x,F,U,j,G,J,B=e.type;if(e.constructor!==void 0)return null;t.__h!=null&&(h=t.__h,l=e.__e=t.__e,e.__h=null,o=[l]),(p=ee.__b)&&p(e);try{e:if(typeof B==\"function\"){if(x=e.props,F=(p=B.contextType)&&r[p.__c],U=p?F?F.props.value:p.__:r,t.__c?E=(d=e.__c=t.__c).__=d.__E:(\"prototype\"in B&&B.prototype.render?e.__c=d=new B(x,U):(e.__c=d=new we(x,U),d.constructor=B,d.render=fw),F&&F.sub(d),d.props=x,d.state||(d.state={}),d.context=U,d.__n=r,f=d.__d=!0,d.__h=[]),d.__s==null&&(d.__s=d.state),B.getDerivedStateFromProps!=null&&(d.__s==d.state&&(d.__s=yr({},d.__s)),yr(d.__s,B.getDerivedStateFromProps(x,d.__s))),y=d.props,b=d.state,f)B.getDerivedStateFromProps==null&&d.componentWillMount!=null&&d.componentWillMount(),d.componentDidMount!=null&&d.__h.push(d.componentDidMount);else{if(B.getDerivedStateFromProps==null&&x!==y&&d.componentWillReceiveProps!=null&&d.componentWillReceiveProps(x,U),!d.__e&&d.shouldComponentUpdate!=null&&d.shouldComponentUpdate(x,d.__s,U)===!1||e.__v===t.__v){d.props=x,d.state=d.__s,e.__v!==t.__v&&(d.__d=!1),d.__v=e,e.__e=t.__e,e.__k=t.__k,e.__k.forEach(function(z){z&&(z.__=e)}),d.__h.length&&a.push(d);break e}d.componentWillUpdate!=null&&d.componentWillUpdate(x,d.__s,U),d.componentDidUpdate!=null&&d.__h.push(function(){d.componentDidUpdate(y,b,S)})}if(d.context=U,d.props=x,d.__v=e,d.__P=i,j=ee.__r,G=0,\"prototype\"in B&&B.prototype.render)d.state=d.__s,d.__d=!1,j&&j(e),p=d.render(d.props,d.state,d.context);else do d.__d=!1,j&&j(e),p=d.render(d.props,d.state,d.context),d.state=d.__s;while(d.__d&&++G<25);d.state=d.__s,d.getChildContext!=null&&(r=yr(yr({},r),d.getChildContext())),f||d.getSnapshotBeforeUpdate==null||(S=d.getSnapshotBeforeUpdate(y,b)),J=p!=null&&p.type===Ht&&p.key==null?p.props.children:p,dm(i,Array.isArray(J)?J:[J],e,t,r,s,o,a,l,h),d.base=e.__e,e.__h=null,d.__h.length&&a.push(d),E&&(d.__E=d.__=null),d.__e=!1}else o==null&&e.__v===t.__v?(e.__k=t.__k,e.__e=t.__e):e.__e=pw(t.__e,e,t,r,s,o,a,h);(p=ee.diffed)&&p(e)}catch(z){e.__v=null,(h||o!=null)&&(e.__e=l,e.__h=!!h,o[o.indexOf(l)]=null),ee.__e(z,e,t)}}n(Rh,\"j\");function fm(i,e){ee.__c&&ee.__c(e,i),i.some(function(t){try{i=t.__h,t.__h=[],i.some(function(r){r.call(t)})}catch(r){ee.__e(r,t.__v)}})}n(fm,\"z\");function pw(i,e,t,r,s,o,a,l){var h,p,d,f=t.props,y=e.props,b=e.type,S=0;if(b===\"svg\"&&(s=!0),o!=null){for(;S<o.length;S++)if((h=o[S])&&\"setAttribute\"in h==!!b&&(b?h.localName===b:h.nodeType===3)){i=h,o[S]=null;break}}if(i==null){if(b===null)return document.createTextNode(y);i=s?document.createElementNS(\"http://www.w3.org/2000/svg\",b):document.createElement(b,y.is&&y),o=null,l=!1}if(b===null)f===y||l&&i.data===y||(i.data=y);else{if(o=o&&Fn.call(i.childNodes),p=(f=t.props||Ll).dangerouslySetInnerHTML,d=y.dangerouslySetInnerHTML,!l){if(o!=null)for(f={},S=0;S<i.attributes.length;S++)f[i.attributes[S].name]=i.attributes[S].value;(d||p)&&(d&&(p&&d.__html==p.__html||d.__html===i.innerHTML)||(i.innerHTML=d&&d.__html||\"\"))}if(cw(i,y,f,s,l),d)e.__k=[];else if(S=e.props.children,dm(i,Array.isArray(S)?S:[S],e,t,r,s&&b!==\"foreignObject\",o,a,o?o[0]:t.__k&&Eo(t,0),l),o!=null)for(S=o.length;S--;)o[S]!=null&&lm(o[S]);l||(\"value\"in y&&(S=y.value)!==void 0&&(S!==i.value||b===\"progress\"&&!S||b===\"option\"&&S!==f.value)&&zl(i,\"value\",S,f.value,!1),\"checked\"in y&&(S=y.checked)!==void 0&&S!==i.checked&&zl(i,\"checked\",S,f.checked,!1))}return i}n(pw,\"L\");function mm(i,e,t){try{typeof i==\"function\"?i(e):i.current=e}catch(r){ee.__e(r,t)}}n(mm,\"M\");function gm(i,e,t){var r,s;if(ee.unmount&&ee.unmount(i),(r=i.ref)&&(r.current&&r.current!==i.__e||mm(r,null,e)),(r=i.__c)!=null){if(r.componentWillUnmount)try{r.componentWillUnmount()}catch(o){ee.__e(o,e)}r.base=r.__P=null}if(r=i.__k)for(s=0;s<r.length;s++)r[s]&&gm(r[s],e,typeof i.type!=\"function\");t||i.__e==null||lm(i.__e),i.__e=i.__d=void 0}n(gm,\"N\");function fw(i,e,t){return this.constructor(i,t)}n(fw,\"O\");function Uh(i,e,t){var r,s,o;ee.__&&ee.__(i,e),s=(r=typeof t==\"function\")?null:t&&t.__k||e.__k,o=[],Rh(e,i=(!r&&t||e).__k=u(Ht,null,[i]),s||Ll,Ll,e.ownerSVGElement!==void 0,!r&&t?[t]:s?null:e.firstChild?Fn.call(e.childNodes):null,o,!r&&t?t:s?s.__e:e.firstChild,r),fm(o,i)}n(Uh,\"P\");function jl(i,e,t){var r,s,o,a=yr({},i.props);for(o in e)o==\"key\"?r=e[o]:o==\"ref\"?s=e[o]:a[o]=e[o];return arguments.length>2&&(a.children=arguments.length>3?Fn.call(arguments,2):t),xn(i.type,a,r||i.key,s||i.ref,null)}n(jl,\"q\");Fn=am.slice,ee={__e:function(i,e,t,r){for(var s,o,a;e=e.__;)if((s=e.__c)&&!s.__)try{if((o=s.constructor)&&o.getDerivedStateFromError!=null&&(s.setState(o.getDerivedStateFromError(i)),a=s.__d),s.componentDidCatch!=null&&(s.componentDidCatch(i,r||{}),a=s.__d),a)return s.__E=s}catch(l){i=l}throw i}},nm=0,uw=n(function(i){return i!=null&&i.constructor===void 0},\"i\"),we.prototype.setState=function(i,e){var t;t=this.__s!=null&&this.__s!==this.state?this.__s:this.__s=yr({},this.state),typeof i==\"function\"&&(i=i(yr({},t),this.props)),i&&yr(t,i),i!=null&&this.__v&&(e&&this.__h.push(e),im(this))},we.prototype.forceUpdate=function(i){this.__v&&(this.__e=!0,i&&this.__h.push(i),im(this))},we.prototype.render=Ht,_n=[],Bl.__r=0,hw=0;function En(i){return typeof i!=\"object\"||i===null||!(\"nodeType\"in i)?!1:i.nodeType===Node.ELEMENT_NODE}n(En,\"isDOMElement\");function On(i,e){return e===void 0&&(e=document),typeof i==\"string\"?e.querySelector(i):En(i)?i:null}n(On,\"findDOMElement\");function mw(i){for(var e;i&&!i.dir;)i=i.parentNode;return(e=i)==null?void 0:e.dir}n(mw,\"getTextDirection\");var Hl=mw;var ve=class{constructor(e,t){t===void 0&&(t={}),this.uppy=e,this.opts=t}getPluginState(){let{plugins:e}=this.uppy.getState();return e[this.id]||{}}setPluginState(e){let{plugins:t}=this.uppy.getState();this.uppy.setState({plugins:{...t,[this.id]:{...t[this.id],...e}}})}setOptions(e){this.opts={...this.opts,...e},this.setPluginState(),this.i18nInit()}i18nInit(){let e=new Xr([this.defaultLocale,this.uppy.locale,this.opts.locale]);this.i18n=e.translate.bind(e),this.i18nArray=e.translateArray.bind(e),this.setPluginState()}addTarget(){throw new Error(\"Extend the addTarget method to add your plugin to another plugin's target\")}install(){}uninstall(){}render(){throw new Error(\"Extend the render method to add your plugin to a DOM element\")}update(){}afterUpdate(){}};n(ve,\"BasePlugin\");function ym(i,e){if(!Object.prototype.hasOwnProperty.call(i,e))throw new TypeError(\"attempted to use private field on non-instance\");return i}n(ym,\"_classPrivateFieldLooseBase\");var gw=0;function yw(i){return\"__private_\"+gw+++\"_\"+i}n(yw,\"_classPrivateFieldLooseKey\");function vw(i){let e=null,t=null;return function(){for(var r=arguments.length,s=new Array(r),o=0;o<r;o++)s[o]=arguments[o];return t=s,e||(e=Promise.resolve().then(()=>(e=null,i(...t)))),e}}n(vw,\"debounce\");var Cn=yw(\"updateUI\"),Oo=class extends ve{constructor(){super(...arguments),Object.defineProperty(this,Cn,{writable:!0,value:void 0})}getTargetPlugin(e){let t;if(typeof e==\"object\"&&e instanceof Oo)t=e;else if(typeof e==\"function\"){let r=e;this.uppy.iteratePlugins(s=>{s instanceof r&&(t=s)})}return t}mount(e,t){let r=t.id,s=On(e);if(s){this.isTargetDOMEl=!0;let l=document.createElement(\"div\");return l.classList.add(\"uppy-Root\"),ym(this,Cn)[Cn]=vw(h=>{this.uppy.getPlugin(this.id)&&(Uh(this.render(h),l),this.afterUpdate())}),this.uppy.log(`Installing ${r} to a DOM element '${e}'`),this.opts.replaceTargetContent&&(s.innerHTML=\"\"),Uh(this.render(this.uppy.getState()),l),this.el=l,s.appendChild(l),l.dir=this.opts.direction||Hl(l)||\"ltr\",this.onMount(),this.el}let o=this.getTargetPlugin(e);if(o)return this.uppy.log(`Installing ${r} to ${o.id}`),this.parent=o,this.el=o.addTarget(t),this.onMount(),this.el;this.uppy.log(`Not installing ${r}`);let a=`Invalid target option given to ${r}.`;throw typeof e==\"function\"?a+=\" The given target is not a Plugin class. Please check that you're not specifying a React Component instead of a plugin. If you are using @uppy/* packages directly, make sure you have only 1 version of @uppy/core installed: run `npm ls @uppy/core` on the command line and verify that all the versions match and are deduped correctly.\":a+=\"If you meant to target an HTML element, please make sure that the element exists. Check that the <script> tag initializing Uppy is right before the closing </body> tag at the end of the page. (see https://github.com/transloadit/uppy/issues/1042)\\n\\nIf you meant to target a plugin, please confirm that your `import` statements or `require` calls are correct.\",new Error(a)}update(e){if(this.el!=null){var t,r;(t=(r=ym(this,Cn))[Cn])==null||t.call(r,e)}}unmount(){if(this.isTargetDOMEl){var e;(e=this.el)==null||e.remove()}this.onUnmount()}onMount(){}onUnmount(){}};n(Oo,\"UIPlugin\");var Z=Oo;var Bh={};Tl(Bh,{Provider:()=>be,RequestClient:()=>tt,SearchProvider:()=>Yr,Socket:()=>Co});var xm=de(Pm(),1);var ww=Object.prototype.toString,Sw=n(i=>ww.call(i)===\"[object Error]\",\"isError\"),Pw=new Set([\"Failed to fetch\",\"NetworkError when attempting to fetch resource.\",\"The Internet connection appears to be offline.\",\"Load failed\",\"Network request failed\",\"fetch failed\"]);function kh(i){return i&&Sw(i)&&i.name===\"TypeError\"&&typeof i.message==\"string\"?i.message===\"Load failed\"?i.stack===void 0:Pw.has(i.message):!1}n(kh,\"isNetworkError\");var Ps=class extends Error{constructor(e){super(),e instanceof Error?(this.originalError=e,{message:e}=e):(this.originalError=new Error(e),this.originalError.stack=this.stack),this.name=\"AbortError\",this.message=e}};n(Ps,\"AbortError\");var _m=n((i,e,t)=>{let r=t.retries-(e-1);return i.attemptNumber=e,i.retriesLeft=r,i},\"decorateErrorWithCounts\");async function $l(i,e){return new Promise((t,r)=>{e={onFailedAttempt(){},retries:10,...e};let s=xm.default.operation(e),o=n(()=>{s.stop(),r(e.signal?.reason)},\"abortHandler\");e.signal&&!e.signal.aborted&&e.signal.addEventListener(\"abort\",o,{once:!0});let a=n(()=>{e.signal?.removeEventListener(\"abort\",o),s.stop()},\"cleanUp\");s.attempt(async l=>{try{let h=await i(l);a(),t(h)}catch(h){try{if(!(h instanceof Error))throw new TypeError(`Non-error was thrown: \"${h}\". You should only throw errors.`);if(h instanceof Ps)throw h.originalError;if(h instanceof TypeError&&!kh(h))throw h;if(await e.onFailedAttempt(_m(h,l,e)),!s.retry(h))throw s.mainError()}catch(p){_m(p,l,e),a(),r(p)}}})})}n($l,\"pRetry\");var ql=class extends Error{constructor(e,t){t===void 0&&(t=null),super(\"This looks like a network error, the endpoint might be blocked by an internet provider or a firewall.\"),this.cause=e,this.isNetworkError=!0,this.request=t}};n(ql,\"NetworkError\");var Pi=ql;function _s(){return fetch(...arguments).catch(i=>{throw i.name===\"AbortError\"?i:new Pi(i)})}n(_s,\"fetchWithNetworkError\");var Vl=class extends Error{constructor(e,t){super(e),this.cause=t?.cause,this.cause&&Ct(this.cause,\"isNetworkError\")?this.isNetworkError=this.cause.isNetworkError:this.isNetworkError=!1}};n(Vl,\"ErrorWithCause\");var vr=Vl;var Fm=de(Rl(),1);function _w(i,e,t){let{progress:r,bytesUploaded:s,bytesTotal:o}=e;r&&(i.uppy.log(`Upload progress: ${r}`),i.uppy.emit(\"upload-progress\",t,{uploader:i,bytesUploaded:s,bytesTotal:o}))}n(_w,\"emitSocketProgress\");var Em=(0,Fm.default)(_w,300,{leading:!0,trailing:!0});function Dh(i){var e;let r=(e=/^(?:https?:\\/\\/|\\/\\/)?(?:[^@\\n]+@)?(?:www\\.)?([^\\n]+)/i.exec(i))==null?void 0:e[1];return`${/^http:\\/\\//i.test(i)?\"ws\":\"wss\"}://${r}`}n(Dh,\"getSocketHost\");var Wl=class extends Error{constructor(){super(\"Authorization required\"),this.name=\"AuthError\",this.isAuthError=!0}};n(Wl,\"AuthError\");var Gl=Wl;var Om;function zi(i,e){if(!Object.prototype.hasOwnProperty.call(i,e))throw new TypeError(\"attempted to use private field on non-instance\");return i}n(zi,\"_classPrivateFieldLooseBase\");var xw=0;function Kl(i){return\"__private_\"+xw+++\"_\"+i}n(Kl,\"_classPrivateFieldLooseKey\");var Fw={version:\"3.6.1\"};function Ew(i){return i.replace(/\\/$/,\"\")}n(Ew,\"stripSlash\");var Cm=10,Ow=5*60*1e3,Cw=401,Rn=class extends Error{constructor(e){let{statusCode:t,message:r}=e;super(r),this.statusCode=void 0,this.statusCode=t}};n(Rn,\"HttpError\");async function Tw(i){if(i.status===Cw)throw new Gl;if(i.ok)return i.json();let e=`Failed request with status: ${i.status}. ${i.statusText}`;try{let t=await i.json();e=t.message?`${e} message: ${t.message}`:e,e=t.requestId?`${e} request-Id: ${t.requestId}`:e}catch{}throw new Rn({statusCode:i.status,message:e})}n(Tw,\"handleJSONResponse\");var Tn=new Map,br=Kl(\"companionHeaders\"),xs=Kl(\"getUrl\"),Ih=Kl(\"requestSocketToken\"),An=Kl(\"awaitRemoteFileUpload\");Om=Symbol.for(\"uppy test: getCompanionHeaders\");var tt=class{constructor(e,t){Object.defineProperty(this,An,{value:Rw}),Object.defineProperty(this,xs,{value:Aw}),Object.defineProperty(this,br,{writable:!0,value:void 0}),Object.defineProperty(this,Ih,{writable:!0,value:async r=>{let{file:s,postBody:o,signal:a}=r;if(s.remote.url==null)throw new Error(\"Cannot connect to an undefined URL\");return(await this.post(s.remote.url,{...s.remote.body,...o},a)).token}}),this.uppy=e,this.opts=t,this.onReceiveResponse=this.onReceiveResponse.bind(this),zi(this,br)[br]=t?.companionHeaders}setCompanionHeaders(e){zi(this,br)[br]=e}[Om](){return zi(this,br)[br]}get hostname(){let{companion:e}=this.uppy.getState(),t=this.opts.companionUrl;return Ew(e&&e[t]?e[t]:t)}async headers(){return{...{Accept:\"application/json\",\"Content-Type\":\"application/json\",\"Uppy-Versions\":`@uppy/companion-client=${tt.VERSION}`},...zi(this,br)[br]}}onReceiveResponse(e){let{headers:t}=e,s=this.uppy.getState().companion||{},o=this.opts.companionUrl;t.has(\"i-am\")&&t.get(\"i-am\")!==s[o]&&this.uppy.setState({companion:{...s,[o]:t.get(\"i-am\")}})}async preflight(e){let t=Tn.get(this.hostname);if(t!=null)return t;let r=[\"accept\",\"content-type\",\"uppy-auth-token\"],s=(async()=>{try{let a=(await fetch(zi(this,xs)[xs](e),{method:\"OPTIONS\"})).headers.get(\"access-control-allow-headers\");if(a==null||a===\"*\")return Tn.set(this.hostname,r),r;this.uppy.log(`[CompanionClient] adding allowed preflight headers to companion cache: ${this.hostname} ${a}`);let l=a.split(\",\").map(h=>h.trim().toLowerCase());return Tn.set(this.hostname,l),l}catch(o){return this.uppy.log(`[CompanionClient] unable to make preflight request ${o}`,\"warning\"),Tn.delete(this.hostname),r}})();return Tn.set(this.hostname,s),s}async preflightAndHeaders(e){let[t,r]=await Promise.all([this.preflight(e),this.headers()]);return Object.fromEntries(Object.entries(r).filter(s=>{let[o]=s;return t.includes(o.toLowerCase())?!0:(this.uppy.log(`[CompanionClient] excluding disallowed header ${o}`),!1)}))}async request(e){let{path:t,method:r=\"GET\",data:s,skipPostResponse:o,signal:a}=e;try{let l=await this.preflightAndHeaders(t),h=await _s(zi(this,xs)[xs](t),{method:r,signal:a,headers:l,credentials:this.opts.companionCookiesRule||\"same-origin\",body:s?JSON.stringify(s):null});return o||this.onReceiveResponse(h),await Tw(h)}catch(l){throw l instanceof Gl||l.name===\"AbortError\"?l:new vr(`Could not ${r} ${zi(this,xs)[xs](t)}`,{cause:l})}}async get(e,t){return t===void 0&&(t=void 0),typeof t==\"boolean\"&&(t={skipPostResponse:t}),this.request({...t,path:e})}async post(e,t,r){return r===void 0&&(r=void 0),typeof r==\"boolean\"&&(r={skipPostResponse:r}),this.request({...r,path:e,method:\"POST\",data:t})}async delete(e,t,r){return t===void 0&&(t=void 0),typeof r==\"boolean\"&&(r={skipPostResponse:r}),this.request({...r,path:e,method:\"DELETE\",data:t})}async uploadRemoteFile(e,t,r){var s=this;r===void 0&&(r={});try{let{signal:o,getQueue:a}=r;return await $l(async()=>{var l;let h=(l=this.uppy.getFile(e.id))==null?void 0:l.serverToken;if(h!=null)return this.uppy.log(`Connecting to exiting websocket ${h}`),zi(this,An)[An]({file:e,queue:a(),signal:o});let d=await a().wrapPromiseFunction(async function(){try{return await zi(s,Ih)[Ih](...arguments)}catch(f){if(f instanceof Gl)throw new Ps(f);if(f.cause==null)throw f;let y=f.cause,b=n(()=>[408,409,429,418,423].includes(y.statusCode)||y.statusCode>=500&&y.statusCode<=599&&![501,505].includes(y.statusCode),\"isRetryableHttpError\");throw y instanceof Rn&&!b()?new Ps(y):y}},{priority:-1})({file:e,postBody:t,signal:o}).abortOn(o);if(this.uppy.getFile(e.id))return this.uppy.setFileState(e.id,{serverToken:d}),zi(this,An)[An]({file:this.uppy.getFile(e.id),queue:a(),signal:o})},{retries:Cm,signal:o,onFailedAttempt:l=>this.uppy.log(`Retrying upload due to: ${l.message}`,\"warning\")})}catch(o){if(o.name===\"AbortError\")return;throw this.uppy.emit(\"upload-error\",e,o),o}}};n(tt,\"RequestClient\");function Aw(i){return/^(https?:|)\\/\\//.test(i)?i:`${this.hostname}/${i}`}n(Aw,\"_getUrl2\");async function Rw(i){let{file:e,queue:t,signal:r}=i,s,{capabilities:o}=this.uppy.getState();try{return await new Promise((a,l)=>{let h=e.serverToken,p=Dh(e.remote.companionUrl),d,f,y,{isPaused:b}=e,S=n((z,K)=>{if(d==null||d.readyState!==d.OPEN){var oe;this.uppy.log(`Cannot send \"${z}\" to socket ${e.id} because the socket state was ${String((oe=d)==null?void 0:oe.readyState)}`,\"warning\");return}d.send(JSON.stringify({action:z,payload:K??{}}))},\"socketSend\");function E(){o.resumableUploads&&S(b?\"pause\":\"resume\")}n(E,\"sendState\");let x=n(async()=>{f&&f.abort(),f=new AbortController;let z=n(oe=>{var Be;this.uppy.setFileState(e.id,{serverToken:null}),(Be=f)==null||Be.abort==null||Be.abort(),l(oe)},\"onFatalError\");function K(){clearTimeout(y),!b&&(y=setTimeout(()=>z(new Error(\"Timeout waiting for message from Companion socket\")),Ow))}n(K,\"resetActivityTimeout\");try{await t.wrapPromiseFunction(async()=>{await $l(n(async()=>new Promise((Be,Je)=>{d=new WebSocket(`${p}/api/${h}`),K(),d.addEventListener(\"close\",()=>{d=void 0,Je(new Error(\"Socket closed unexpectedly\"))}),d.addEventListener(\"error\",We=>{this.uppy.log(`Companion socket error ${JSON.stringify(We)}, closing socket`,\"warning\"),d.close()}),d.addEventListener(\"open\",()=>{E()}),d.addEventListener(\"message\",We=>{K();try{let{action:ze,payload:xe}=JSON.parse(We.data);switch(ze){case\"progress\":{Em(this,xe,e);break}case\"success\":{var _e;this.uppy.emit(\"upload-success\",e,{uploadURL:xe.url}),(_e=f)==null||_e.abort==null||_e.abort(),a();break}case\"error\":{let{message:ui}=xe.error;throw Object.assign(new Error(ui),{cause:xe.error})}default:this.uppy.log(`Companion socket unknown action ${ze}`,\"warning\")}}catch(ze){z(ze)}});let wt=n(()=>{this.uppy.log(`Closing socket ${e.id}`,\"info\"),clearTimeout(y),d&&d.close(),d=void 0},\"closeSocket\");f.signal.addEventListener(\"abort\",()=>{wt()})}),\"reconnectWebsocket\"),{retries:Cm,signal:f.signal,onFailedAttempt:()=>{f.signal.aborted||this.uppy.log(`Retrying websocket ${e.id}`,\"info\")}})})().abortOn(f.signal)}catch(oe){if(f.signal.aborted)return;z(oe)}},\"createWebsocket\"),F=n(z=>{if(o.resumableUploads)if(b=z,d&&E(),z){var K;(K=f)==null||K.abort==null||K.abort()}else x()},\"pause\"),U=n(z=>{var K;o.individualCancellation&&z.id===e.id&&(S(\"cancel\"),(K=f)==null||K.abort==null||K.abort(),this.uppy.log(`upload ${e.id} was removed`,\"info\"),a())},\"onFileRemove\"),j=n(z=>{var K;let{reason:oe}=z;oe===\"user\"&&S(\"cancel\"),(K=f)==null||K.abort==null||K.abort(),this.uppy.log(`upload ${e.id} was canceled`,\"info\"),a()},\"onCancelAll\"),G=n((z,K)=>{z===e.id&&F(K)},\"onFilePausedChange\"),J=n(()=>F(!0),\"onPauseAll\"),B=n(()=>F(!1),\"onResumeAll\");this.uppy.on(\"file-removed\",U),this.uppy.on(\"cancel-all\",j),this.uppy.on(\"upload-pause\",G),this.uppy.on(\"pause-all\",J),this.uppy.on(\"resume-all\",B),s=n(()=>{this.uppy.off(\"file-removed\",U),this.uppy.off(\"cancel-all\",j),this.uppy.off(\"upload-pause\",G),this.uppy.off(\"pause-all\",J),this.uppy.off(\"resume-all\",B)},\"removeEventHandlers\"),r.addEventListener(\"abort\",()=>{var z;(z=f)==null||z.abort()}),x()})}finally{s?.()}}n(Rw,\"_awaitRemoteFileUpload2\");tt.VERSION=Fw.version;var Nh={};Tl(Nh,{getItem:()=>kw,removeItem:()=>Dw,setItem:()=>Uw});function Uw(i,e){return new Promise(t=>{localStorage.setItem(i,e),t()})}n(Uw,\"setItem\");function kw(i){return Promise.resolve(localStorage.getItem(i))}n(kw,\"getItem\");function Dw(i){return new Promise(e=>{localStorage.removeItem(i),e()})}n(Dw,\"removeItem\");function wr(i,e){if(!Object.prototype.hasOwnProperty.call(i,e))throw new TypeError(\"attempted to use private field on non-instance\");return i}n(wr,\"_classPrivateFieldLooseBase\");var Iw=0;function Mh(i){return\"__private_\"+Iw+++\"_\"+i}n(Mh,\"_classPrivateFieldLooseKey\");var Nw=n(i=>i.split(\"-\").map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(\" \"),\"getName\");function Mw(){return location.origin}n(Mw,\"getOrigin\");function Tm(i){if(typeof i==\"string\")return new RegExp(`^${i}$`);if(i instanceof RegExp)return i}n(Tm,\"getRegex\");function Lw(i,e){return(Array.isArray(e)?e.map(Tm):[Tm(e)]).some(r=>r?.test(i)||r?.test(`${i}/`))}n(Lw,\"isOriginAllowed\");var _i=Mh(\"refreshingTokenPromise\"),Un=Mh(\"getAuthToken\"),kn=Mh(\"removeAuthToken\"),be=class extends tt{constructor(e,t){super(e,t),Object.defineProperty(this,kn,{value:zw}),Object.defineProperty(this,Un,{value:Bw}),Object.defineProperty(this,_i,{writable:!0,value:void 0}),this.provider=t.provider,this.id=this.provider,this.name=this.opts.name||Nw(this.id),this.pluginId=this.opts.pluginId,this.tokenKey=`companion-${this.pluginId}-auth-token`,this.companionKeysParams=this.opts.companionKeysParams,this.preAuthToken=null}async headers(){let[e,t]=await Promise.all([super.headers(),wr(this,Un)[Un]()]),r={};return t&&(r[\"uppy-auth-token\"]=t),this.companionKeysParams&&(r[\"uppy-credentials-params\"]=btoa(JSON.stringify({params:this.companionKeysParams}))),{...e,...r}}onReceiveResponse(e){super.onReceiveResponse(e);let t=this.uppy.getPlugin(this.pluginId),s=t.getPluginState().authenticated?e.status!==401:e.status<400;return t.setPluginState({authenticated:s}),e}async setAuthToken(e){return this.uppy.getPlugin(this.pluginId).storage.setItem(this.tokenKey,e)}async ensurePreAuth(){if(this.companionKeysParams&&!this.preAuthToken&&(await this.fetchPreAuthToken(),!this.preAuthToken))throw new Error(\"Could not load authentication data required for third-party login. Please try again later.\")}authUrl(e){e===void 0&&(e={});let t=new URLSearchParams({state:btoa(JSON.stringify({origin:Mw()})),...e});return this.preAuthToken&&t.set(\"uppyPreAuthToken\",this.preAuthToken),`${this.hostname}/${this.id}/connect?${t}`}async login(e){return await this.ensurePreAuth(),new Promise((t,r)=>{let s=this.authUrl(e),o=window.open(s,\"_blank\"),a=n(l=>{if(l.source!==o){let d=\"\";try{d=JSON.stringify(l.data)}catch{}this.uppy.log(`ignoring event from unknown source ${d}`,\"warning\");return}let{companionAllowedHosts:h}=this.uppy.getPlugin(this.pluginId).opts;if(!Lw(l.origin,h)){r(new Error(`rejecting event from ${l.origin} vs allowed pattern ${h}`));return}let p=typeof l.data==\"string\"?JSON.parse(l.data):l.data;if(p.error){let{uppy:d}=this,f=d.i18n(\"authAborted\");d.info({message:f},\"warning\",5e3),r(new Error(\"auth aborted\"));return}if(!p.token){r(new Error(\"did not receive token from auth window\"));return}o.close(),window.removeEventListener(\"message\",a),this.setAuthToken(p.token).then(()=>t()).catch(r)},\"handleToken\");window.addEventListener(\"message\",a)})}refreshTokenUrl(){return`${this.hostname}/${this.id}/refresh-token`}fileUrl(e){return`${this.hostname}/${this.id}/get/${e}`}async request(){await wr(this,_i)[_i];try{return await super.request(...arguments)}catch(e){let t=await wr(this,Un)[Un]();if(!e.isAuthError||!t)throw e;return wr(this,_i)[_i]==null&&(wr(this,_i)[_i]=(async()=>{try{this.uppy.log(\"[CompanionClient] Refreshing expired auth token\",\"info\");let r=await super.request({path:this.refreshTokenUrl(),method:\"POST\"});await this.setAuthToken(r.uppyAuthToken)}catch(r){throw r.isAuthError&&await wr(this,kn)[kn](),e}finally{wr(this,_i)[_i]=void 0}})()),await wr(this,_i)[_i],super.request(...arguments)}}async fetchPreAuthToken(){if(this.companionKeysParams)try{let e=await this.post(`${this.id}/preauth/`,{params:this.companionKeysParams});this.preAuthToken=e.token}catch(e){this.uppy.log(`[CompanionClient] unable to fetch preAuthToken ${e}`,\"warning\")}}list(e,t){return this.get(`${this.id}/list/${e||\"\"}`,t)}async logout(e){let t=await this.get(`${this.id}/logout`,e);return await wr(this,kn)[kn](),t}static initPlugin(e,t,r){if(e.type=\"acquirer\",e.files=[],r&&(e.opts={...r,...t}),t.serverUrl||t.serverPattern)throw new Error(\"`serverUrl` and `serverPattern` have been renamed to `companionUrl` and `companionAllowedHosts` respectively in the 0.30.5 release. Please consult the docs (for example, https://uppy.io/docs/instagram/ for the Instagram plugin) and use the updated options.`\");if(t.companionAllowedHosts){let s=t.companionAllowedHosts;if(typeof s!=\"string\"&&!Array.isArray(s)&&!(s instanceof RegExp))throw new TypeError(`${e.id}: the option \"companionAllowedHosts\" must be one of string, Array, RegExp`);e.opts.companionAllowedHosts=s}else/^(?!https?:\\/\\/).*$/i.test(t.companionUrl)?e.opts.companionAllowedHosts=`https://${t.companionUrl.replace(/^\\/\\//,\"\")}`:e.opts.companionAllowedHosts=new URL(t.companionUrl).origin;e.storage=e.opts.storage||Nh}};n(be,\"Provider\");async function Bw(){return this.uppy.getPlugin(this.pluginId).storage.getItem(this.tokenKey)}n(Bw,\"_getAuthToken2\");async function zw(){return this.uppy.getPlugin(this.pluginId).storage.removeItem(this.tokenKey)}n(zw,\"_removeAuthToken2\");var jw=n(i=>i.split(\"-\").map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(\" \"),\"getName\"),Yr=class extends tt{constructor(e,t){super(e,t),this.provider=t.provider,this.id=this.provider,this.name=this.opts.name||jw(this.id),this.pluginId=this.opts.pluginId}fileUrl(e){return`${this.hostname}/search/${this.id}/get/${e}`}search(e,t){return this.get(`search/${this.id}/list?q=${encodeURIComponent(e)}${t?`&${t}`:\"\"}`)}};n(Yr,\"SearchProvider\");var Um=de(yh(),1);var Am,Rm;function Me(i,e){if(!Object.prototype.hasOwnProperty.call(i,e))throw new TypeError(\"attempted to use private field on non-instance\");return i}n(Me,\"_classPrivateFieldLooseBase\");var Hw=0;function Dn(i){return\"__private_\"+Hw+++\"_\"+i}n(Dn,\"_classPrivateFieldLooseKey\");var Sr=Dn(\"queued\"),Fs=Dn(\"emitter\"),xi=Dn(\"isOpen\"),it=Dn(\"socket\"),Lh=Dn(\"handleMessage\");Am=Symbol.for(\"uppy test: getSocket\");Rm=Symbol.for(\"uppy test: getQueued\");var Co=class{constructor(e){Object.defineProperty(this,Sr,{writable:!0,value:[]}),Object.defineProperty(this,Fs,{writable:!0,value:(0,Um.default)()}),Object.defineProperty(this,xi,{writable:!0,value:!1}),Object.defineProperty(this,it,{writable:!0,value:void 0}),Object.defineProperty(this,Lh,{writable:!0,value:t=>{try{let r=JSON.parse(t.data);this.emit(r.action,r.payload)}catch(r){console.log(r)}}}),this.opts=e,(!e||e.autoOpen!==!1)&&this.open()}get isOpen(){return Me(this,xi)[xi]}[Am](){return Me(this,it)[it]}[Rm](){return Me(this,Sr)[Sr]}open(){Me(this,it)[it]==null&&(Me(this,it)[it]=new WebSocket(this.opts.target),Me(this,it)[it].onopen=()=>{for(Me(this,xi)[xi]=!0;Me(this,Sr)[Sr].length>0&&Me(this,xi)[xi];){let e=Me(this,Sr)[Sr].shift();this.send(e.action,e.payload)}},Me(this,it)[it].onclose=()=>{Me(this,xi)[xi]=!1,Me(this,it)[it]=null},Me(this,it)[it].onmessage=Me(this,Lh)[Lh])}close(){var e;(e=Me(this,it)[it])==null||e.close()}send(e,t){if(!Me(this,xi)[xi]){Me(this,Sr)[Sr].push({action:e,payload:t});return}Me(this,it)[it].send(JSON.stringify({action:e,payload:t}))}on(e,t){Me(this,Fs)[Fs].on(e,t)}emit(e,t){Me(this,Fs)[Fs].emit(e,t)}once(e,t){Me(this,Fs)[Fs].once(e,t)}};n(Co,\"UppySocket\");var td={};Tl(td,{ProviderViews:()=>Te,SearchProviderViews:()=>ji,defaultPickerIcon:()=>ko});var jh=de(Dm(),1);var To=class extends Error{constructor(e){super(e),this.name=\"TimeoutError\"}};n(To,\"TimeoutError\");var Yl=class extends Error{constructor(e){super(),this.name=\"AbortError\",this.message=e}};n(Yl,\"AbortError\");var Im=n(i=>globalThis.DOMException===void 0?new Yl(i):new DOMException(i),\"getDOMException\"),Nm=n(i=>{let e=i.reason===void 0?Im(\"This operation was aborted.\"):i.reason;return e instanceof Error?e:Im(e)},\"getAbortedReason\");function Hh(i,e,t,r){let s,o=new Promise((a,l)=>{if(typeof e!=\"number\"||Math.sign(e)!==1)throw new TypeError(`Expected \\`milliseconds\\` to be a positive number, got \\`${e}\\``);if(e===Number.POSITIVE_INFINITY){a(i);return}if(r={customTimers:{setTimeout,clearTimeout},...r},r.signal){let{signal:h}=r;h.aborted&&l(Nm(h)),h.addEventListener(\"abort\",()=>{l(Nm(h))})}s=r.customTimers.setTimeout.call(void 0,()=>{if(typeof t==\"function\"){try{a(t())}catch(d){l(d)}return}let h=typeof t==\"string\"?t:`Promise timed out after ${e} milliseconds`,p=t instanceof Error?t:new To(h);typeof i.cancel==\"function\"&&i.cancel(),l(p)},e),(async()=>{try{a(await i)}catch(h){l(h)}finally{r.customTimers.clearTimeout.call(void 0,s)}})()});return o.clear=()=>{clearTimeout(s),s=void 0},o}n(Hh,\"pTimeout\");function $h(i,e,t){let r=0,s=i.length;for(;s>0;){let o=Math.trunc(s/2),a=r+o;t(i[a],e)<=0?(r=++a,s-=o+1):s=o}return r}n($h,\"lowerBound\");var Es=function(i,e,t,r){if(t===\"a\"&&!r)throw new TypeError(\"Private accessor was defined without a getter\");if(typeof e==\"function\"?i!==e||!r:!e.has(i))throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");return t===\"m\"?r:t===\"a\"?r.call(i):r?r.value:e.get(i)},Pr,Ql=class{constructor(){Pr.set(this,[])}enqueue(e,t){t={priority:0,...t};let r={priority:t.priority,run:e};if(this.size&&Es(this,Pr,\"f\")[this.size-1].priority>=t.priority){Es(this,Pr,\"f\").push(r);return}let s=$h(Es(this,Pr,\"f\"),r,(o,a)=>a.priority-o.priority);Es(this,Pr,\"f\").splice(s,0,r)}dequeue(){let e=Es(this,Pr,\"f\").shift();return e?.run}filter(e){return Es(this,Pr,\"f\").filter(t=>t.priority===e.priority).map(t=>t.run)}get size(){return Es(this,Pr,\"f\").length}};n(Ql,\"PriorityQueue\");Pr=new WeakMap;var Mm=Ql;var Ue=function(i,e,t,r,s){if(r===\"m\")throw new TypeError(\"Private method is not writable\");if(r===\"a\"&&!s)throw new TypeError(\"Private accessor was defined without a setter\");if(typeof e==\"function\"?i!==e||!s:!e.has(i))throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");return r===\"a\"?s.call(i,t):s?s.value=t:e.set(i,t),t},W=function(i,e,t,r){if(t===\"a\"&&!r)throw new TypeError(\"Private accessor was defined without a getter\");if(typeof e==\"function\"?i!==e||!r:!e.has(i))throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");return t===\"m\"?r:t===\"a\"?r.call(i):r?r.value:e.get(i)},He,Mn,Ln,Jr,su,Bn,Jl,Fi,Nn,Xt,Zl,Yt,zn,Qr,eu,Lm,Bm,Hm,zm,jm,tu,qh,Vh,ou,$m,iu,jn=class extends Error{};n(jn,\"AbortError\");var ru=class extends jh.default{constructor(e){var t,r,s,o;if(super(),He.add(this),Mn.set(this,void 0),Ln.set(this,void 0),Jr.set(this,0),su.set(this,void 0),Bn.set(this,void 0),Jl.set(this,0),Fi.set(this,void 0),Nn.set(this,void 0),Xt.set(this,void 0),Zl.set(this,void 0),Yt.set(this,0),zn.set(this,void 0),Qr.set(this,void 0),eu.set(this,void 0),Object.defineProperty(this,\"timeout\",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),e={carryoverConcurrencyCount:!1,intervalCap:Number.POSITIVE_INFINITY,interval:0,concurrency:Number.POSITIVE_INFINITY,autoStart:!0,queueClass:Mm,...e},!(typeof e.intervalCap==\"number\"&&e.intervalCap>=1))throw new TypeError(`Expected \\`intervalCap\\` to be a number from 1 and up, got \\`${(r=(t=e.intervalCap)===null||t===void 0?void 0:t.toString())!==null&&r!==void 0?r:\"\"}\\` (${typeof e.intervalCap})`);if(e.interval===void 0||!(Number.isFinite(e.interval)&&e.interval>=0))throw new TypeError(`Expected \\`interval\\` to be a finite number >= 0, got \\`${(o=(s=e.interval)===null||s===void 0?void 0:s.toString())!==null&&o!==void 0?o:\"\"}\\` (${typeof e.interval})`);Ue(this,Mn,e.carryoverConcurrencyCount,\"f\"),Ue(this,Ln,e.intervalCap===Number.POSITIVE_INFINITY||e.interval===0,\"f\"),Ue(this,su,e.intervalCap,\"f\"),Ue(this,Bn,e.interval,\"f\"),Ue(this,Xt,new e.queueClass,\"f\"),Ue(this,Zl,e.queueClass,\"f\"),this.concurrency=e.concurrency,this.timeout=e.timeout,Ue(this,eu,e.throwOnTimeout===!0,\"f\"),Ue(this,Qr,e.autoStart===!1,\"f\")}get concurrency(){return W(this,zn,\"f\")}set concurrency(e){if(!(typeof e==\"number\"&&e>=1))throw new TypeError(`Expected \\`concurrency\\` to be a number from 1 and up, got \\`${e}\\` (${typeof e})`);Ue(this,zn,e,\"f\"),W(this,He,\"m\",ou).call(this)}async add(e,t={}){return t={timeout:this.timeout,throwOnTimeout:W(this,eu,\"f\"),...t},new Promise((r,s)=>{W(this,Xt,\"f\").enqueue(async()=>{var o,a,l;Ue(this,Yt,(a=W(this,Yt,\"f\"),a++,a),\"f\"),Ue(this,Jr,(l=W(this,Jr,\"f\"),l++,l),\"f\");try{if(!((o=t.signal)===null||o===void 0)&&o.aborted)throw new jn(\"The task was aborted.\");let h=e({signal:t.signal});t.timeout&&(h=Hh(Promise.resolve(h),t.timeout)),t.signal&&(h=Promise.race([h,W(this,He,\"m\",$m).call(this,t.signal)]));let p=await h;r(p),this.emit(\"completed\",p)}catch(h){if(h instanceof To&&!t.throwOnTimeout){r();return}s(h),this.emit(\"error\",h)}finally{W(this,He,\"m\",Hm).call(this)}},t),this.emit(\"add\"),W(this,He,\"m\",tu).call(this)})}async addAll(e,t){return Promise.all(e.map(async r=>this.add(r,t)))}start(){return W(this,Qr,\"f\")?(Ue(this,Qr,!1,\"f\"),W(this,He,\"m\",ou).call(this),this):this}pause(){Ue(this,Qr,!0,\"f\")}clear(){Ue(this,Xt,new(W(this,Zl,\"f\")),\"f\")}async onEmpty(){W(this,Xt,\"f\").size!==0&&await W(this,He,\"m\",iu).call(this,\"empty\")}async onSizeLessThan(e){W(this,Xt,\"f\").size<e||await W(this,He,\"m\",iu).call(this,\"next\",()=>W(this,Xt,\"f\").size<e)}async onIdle(){W(this,Yt,\"f\")===0&&W(this,Xt,\"f\").size===0||await W(this,He,\"m\",iu).call(this,\"idle\")}get size(){return W(this,Xt,\"f\").size}sizeBy(e){return W(this,Xt,\"f\").filter(e).length}get pending(){return W(this,Yt,\"f\")}get isPaused(){return W(this,Qr,\"f\")}};n(ru,\"PQueue\");Mn=new WeakMap,Ln=new WeakMap,Jr=new WeakMap,su=new WeakMap,Bn=new WeakMap,Jl=new WeakMap,Fi=new WeakMap,Nn=new WeakMap,Xt=new WeakMap,Zl=new WeakMap,Yt=new WeakMap,zn=new WeakMap,Qr=new WeakMap,eu=new WeakMap,He=new WeakSet,Lm=n(function(){return W(this,Ln,\"f\")||W(this,Jr,\"f\")<W(this,su,\"f\")},\"_PQueue_doesIntervalAllowAnother_get\"),Bm=n(function(){return W(this,Yt,\"f\")<W(this,zn,\"f\")},\"_PQueue_doesConcurrentAllowAnother_get\"),Hm=n(function(){var e;Ue(this,Yt,(e=W(this,Yt,\"f\"),e--,e),\"f\"),W(this,He,\"m\",tu).call(this),this.emit(\"next\")},\"_PQueue_next\"),zm=n(function(){W(this,He,\"m\",Vh).call(this),W(this,He,\"m\",qh).call(this),Ue(this,Nn,void 0,\"f\")},\"_PQueue_onResumeInterval\"),jm=n(function(){let e=Date.now();if(W(this,Fi,\"f\")===void 0){let t=W(this,Jl,\"f\")-e;if(t<0)Ue(this,Jr,W(this,Mn,\"f\")?W(this,Yt,\"f\"):0,\"f\");else return W(this,Nn,\"f\")===void 0&&Ue(this,Nn,setTimeout(()=>{W(this,He,\"m\",zm).call(this)},t),\"f\"),!0}return!1},\"_PQueue_isIntervalPaused_get\"),tu=n(function(){if(W(this,Xt,\"f\").size===0)return W(this,Fi,\"f\")&&clearInterval(W(this,Fi,\"f\")),Ue(this,Fi,void 0,\"f\"),this.emit(\"empty\"),W(this,Yt,\"f\")===0&&this.emit(\"idle\"),!1;if(!W(this,Qr,\"f\")){let e=!W(this,He,\"a\",jm);if(W(this,He,\"a\",Lm)&&W(this,He,\"a\",Bm)){let t=W(this,Xt,\"f\").dequeue();return t?(this.emit(\"active\"),t(),e&&W(this,He,\"m\",qh).call(this),!0):!1}}return!1},\"_PQueue_tryToStartAnother\"),qh=n(function(){W(this,Ln,\"f\")||W(this,Fi,\"f\")!==void 0||(Ue(this,Fi,setInterval(()=>{W(this,He,\"m\",Vh).call(this)},W(this,Bn,\"f\")),\"f\"),Ue(this,Jl,Date.now()+W(this,Bn,\"f\"),\"f\"))},\"_PQueue_initializeIntervalIfNeeded\"),Vh=n(function(){W(this,Jr,\"f\")===0&&W(this,Yt,\"f\")===0&&W(this,Fi,\"f\")&&(clearInterval(W(this,Fi,\"f\")),Ue(this,Fi,void 0,\"f\")),Ue(this,Jr,W(this,Mn,\"f\")?W(this,Yt,\"f\"):0,\"f\"),W(this,He,\"m\",ou).call(this)},\"_PQueue_onInterval\"),ou=n(function(){for(;W(this,He,\"m\",tu).call(this););},\"_PQueue_processQueue\"),$m=n(async function(e){return new Promise((t,r)=>{e.addEventListener(\"abort\",()=>{r(new jn(\"The task was aborted.\"))},{once:!0})})},\"_PQueue_throwOnAbort\"),iu=n(async function(e,t){return new Promise(r=>{let s=n(()=>{t&&!t()||(this.off(e,s),r())},\"listener\");this.on(e,s)})},\"_PQueue_onEvent\");var qm=ru;function Vw(){return u(\"svg\",{width:\"26\",height:\"26\",viewBox:\"0 0 26 26\",xmlns:\"http://www.w3.org/2000/svg\"},u(\"g\",{fill:\"none\",\"fill-rule\":\"evenodd\"},u(\"circle\",{fill:\"#FFF\",cx:\"13\",cy:\"13\",r:\"13\"}),u(\"path\",{d:\"M21.64 13.205c0-.639-.057-1.252-.164-1.841H13v3.481h4.844a4.14 4.14 0 01-1.796 2.716v2.259h2.908c1.702-1.567 2.684-3.875 2.684-6.615z\",fill:\"#4285F4\",\"fill-rule\":\"nonzero\"}),u(\"path\",{d:\"M13 22c2.43 0 4.467-.806 5.956-2.18l-2.908-2.259c-.806.54-1.837.86-3.048.86-2.344 0-4.328-1.584-5.036-3.711H4.957v2.332A8.997 8.997 0 0013 22z\",fill:\"#34A853\",\"fill-rule\":\"nonzero\"}),u(\"path\",{d:\"M7.964 14.71A5.41 5.41 0 017.682 13c0-.593.102-1.17.282-1.71V8.958H4.957A8.996 8.996 0 004 13c0 1.452.348 2.827.957 4.042l3.007-2.332z\",fill:\"#FBBC05\",\"fill-rule\":\"nonzero\"}),u(\"path\",{d:\"M13 7.58c1.321 0 2.508.454 3.44 1.345l2.582-2.58C17.463 4.891 15.426 4 13 4a8.997 8.997 0 00-8.043 4.958l3.007 2.332C8.672 9.163 10.656 7.58 13 7.58z\",fill:\"#EA4335\",\"fill-rule\":\"nonzero\"}),u(\"path\",{d:\"M4 4h18v18H4z\"})))}n(Vw,\"GoogleIcon\");function Ww(i){let{pluginName:e,pluginIcon:t,i18nArray:r,handleAuth:s}=i,o=e===\"Google Drive\",a=u(\"span\",{className:\"uppy-Provider-authTitleName\"},e,u(\"br\",null));return u(\"div\",{className:\"uppy-Provider-auth\"},u(\"div\",{className:\"uppy-Provider-authIcon\"},t()),u(\"div\",{className:\"uppy-Provider-authTitle\"},r(\"authenticateWithTitle\",{pluginName:a})),o?u(\"button\",{type:\"button\",className:\"uppy-u-reset uppy-c-btn uppy-c-btn-primary uppy-Provider-authBtn uppy-Provider-btn-google\",onClick:s,\"data-uppy-super-focusable\":!0},u(Vw,null),r(\"signInWithGoogle\")):u(\"button\",{type:\"button\",className:\"uppy-u-reset uppy-c-btn uppy-c-btn-primary uppy-Provider-authBtn\",onClick:s,\"data-uppy-super-focusable\":!0},r(\"authenticateWith\",{pluginName:e})))}n(Ww,\"AuthView\");var Vm=Ww;var Wm=n(i=>{let{i18n:e,logout:t,username:r}=i;return[u(\"span\",{className:\"uppy-ProviderBrowser-user\",key:\"username\"},r),u(\"button\",{type:\"button\",onClick:t,className:\"uppy-u-reset uppy-c-btn uppy-ProviderBrowser-userLogout\",key:\"logout\"},e(\"logOut\"))]},\"default\");var Gw=n(i=>{let{getFolder:e,title:t,isLast:r}=i;return u(Ht,null,u(\"button\",{type:\"button\",className:\"uppy-u-reset uppy-c-btn\",onClick:e},t),r?\"\":\" / \")},\"Breadcrumb\"),Gm=n(i=>{let{getFolder:e,title:t,breadcrumbsIcon:r,breadcrumbs:s}=i;return u(\"div\",{className:\"uppy-Provider-breadcrumbs\"},u(\"div\",{className:\"uppy-Provider-breadcrumbsIcon\"},r),s.map((o,a)=>u(Gw,{key:o.id,getFolder:()=>e(o.requestPath),title:a===0?t:o.name,isLast:a+1===s.length})))},\"default\");var Km=n(i=>{let e=[];return i.showBreadcrumbs&&e.push(Gm({getFolder:i.getFolder,breadcrumbs:i.breadcrumbs,breadcrumbsIcon:i.pluginIcon&&i.pluginIcon(),title:i.title})),e.push(Wm({logout:i.logout,username:i.username,i18n:i.i18n})),e},\"default\");var Zh=de(Qt(),1);function Hn(i){return{...i,type:i.mimeType,extension:i.name?Bi(i.name).extension:null}}n(Hn,\"remoteFileObjToLocal\");var uu,Rt,Wh,Xm,$n=0,ig=[],au=[],Ym=ee.__b,Qm=ee.__r,Jm=ee.diffed,Zm=ee.__c,eg=ee.unmount;function Kh(i,e){ee.__h&&ee.__h(Rt,i,$n||e),$n=0;var t=Rt.__H||(Rt.__H={__:[],__h:[]});return i>=t.__.length&&t.__.push({__V:au}),t.__[i]}n(Kh,\"p\");function Ao(i){return $n=1,Kw(sg,i)}n(Ao,\"y\");function Kw(i,e,t){var r=Kh(uu++,2);return r.t=i,r.__c||(r.__=[t?t(e):sg(void 0,e),function(s){var o=r.t(r.__[0],s);r.__[0]!==o&&(r.__=[o,r.__[1]],r.__c.setState({}))}],r.__c=Rt),r.__}n(Kw,\"d\");function Os(i,e){var t=Kh(uu++,3);!ee.__s&&rg(t.__H,e)&&(t.__=i,t.u=e,Rt.__H.__h.push(t))}n(Os,\"_\");function Xh(i){return $n=5,Ro(function(){return{current:i}},[])}n(Xh,\"s\");function Ro(i,e){var t=Kh(uu++,7);return rg(t.__H,e)?(t.__V=i(),t.u=e,t.__h=i,t.__V):t.__}n(Ro,\"F\");function qn(i,e){return $n=8,Ro(function(){return i},e)}n(qn,\"T\");function Xw(){for(var i;i=ig.shift();)if(i.__P)try{i.__H.__h.forEach(lu),i.__H.__h.forEach(Gh),i.__H.__h=[]}catch(e){i.__H.__h=[],ee.__e(e,i.__v)}}n(Xw,\"b\");ee.__b=function(i){Rt=null,Ym&&Ym(i)},ee.__r=function(i){Qm&&Qm(i),uu=0;var e=(Rt=i.__c).__H;e&&(Wh===Rt?(e.__h=[],Rt.__h=[],e.__.forEach(function(t){t.__V=au,t.u=void 0})):(e.__h.forEach(lu),e.__h.forEach(Gh),e.__h=[])),Wh=Rt},ee.diffed=function(i){Jm&&Jm(i);var e=i.__c;e&&e.__H&&(e.__H.__h.length&&(ig.push(e)!==1&&Xm===ee.requestAnimationFrame||((Xm=ee.requestAnimationFrame)||function(t){var r,s=n(function(){clearTimeout(o),tg&&cancelAnimationFrame(r),setTimeout(t)},\"u\"),o=setTimeout(s,100);tg&&(r=requestAnimationFrame(s))})(Xw)),e.__H.__.forEach(function(t){t.u&&(t.__H=t.u),t.__V!==au&&(t.__=t.__V),t.u=void 0,t.__V=au})),Wh=Rt=null},ee.__c=function(i,e){e.some(function(t){try{t.__h.forEach(lu),t.__h=t.__h.filter(function(r){return!r.__||Gh(r)})}catch(r){e.some(function(s){s.__h&&(s.__h=[])}),e=[],ee.__e(r,t.__v)}}),Zm&&Zm(i,e)},ee.unmount=function(i){eg&&eg(i);var e,t=i.__c;t&&t.__H&&(t.__H.__.forEach(function(r){try{lu(r)}catch(s){e=s}}),e&&ee.__e(e,t.__v))};var tg=typeof requestAnimationFrame==\"function\";function lu(i){var e=Rt,t=i.__c;typeof t==\"function\"&&(i.__c=void 0,t()),Rt=e}n(lu,\"j\");function Gh(i){var e=Rt;i.__c=i.__(),Rt=e}n(Gh,\"k\");function rg(i,e){return!i||i.length!==e.length||e.some(function(t,r){return t!==i[r]})}n(rg,\"w\");function sg(i,e){return typeof e==\"function\"?e(i):e}n(sg,\"z\");function Yh(){return Yh=Object.assign?Object.assign.bind():function(i){for(var e=1;e<arguments.length;e++){var t=arguments[e];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(i[r]=t[r])}return i},Yh.apply(this,arguments)}n(Yh,\"_extends\");var Yw={position:\"relative\",width:\"100%\",minHeight:\"100%\"},Qw={position:\"absolute\",top:0,left:0,width:\"100%\",overflow:\"visible\"},hu=class extends we{constructor(e){super(e),this.handleScroll=()=>{this.setState({offset:this.base.scrollTop})},this.handleResize=()=>{this.resize()},this.focusElement=null,this.state={offset:0,height:0}}componentDidMount(){this.resize(),window.addEventListener(\"resize\",this.handleResize)}componentWillUpdate(){this.base.contains(document.activeElement)&&(this.focusElement=document.activeElement)}componentDidUpdate(){this.focusElement&&this.focusElement.parentNode&&document.activeElement!==this.focusElement&&this.focusElement.focus(),this.focusElement=null,this.resize()}componentWillUnmount(){window.removeEventListener(\"resize\",this.handleResize)}resize(){let{height:e}=this.state;e!==this.base.offsetHeight&&this.setState({height:this.base.offsetHeight})}render(e){let{data:t,rowHeight:r,renderRow:s,overscanCount:o=10,...a}=e,{offset:l,height:h}=this.state,p=Math.floor(l/r),d=Math.floor(h/r);o&&(p=Math.max(0,p-p%o),d+=o);let f=p+d+4,y=t.slice(p,f),b={...Yw,height:t.length*r},S={...Qw,top:p*r};return u(\"div\",Yh({onScroll:this.handleScroll},a),u(\"div\",{role:\"presentation\",style:b},u(\"div\",{role:\"presentation\",style:S},y.map(s))))}};n(hu,\"VirtualList\");var du=hu;function Vn(i){let{search:e,searchOnInput:t,searchTerm:r,showButton:s,inputLabel:o,clearSearchLabel:a,buttonLabel:l,clearSearch:h,inputClassName:p,buttonCSSClassName:d}=i,[f,y]=Ao(r??\"\"),b=qn(F=>{F.preventDefault(),e(f)},[e,f]),S=qn(F=>{let U=F.target.value;y(U),t&&e(U)},[y,t,e]),E=n(()=>{y(\"\"),h&&h()},\"handleReset\"),[x]=Ao(()=>{let F=document.createElement(\"form\");return F.setAttribute(\"tabindex\",\"-1\"),F.id=Pt(),F});return Os(()=>(document.body.appendChild(x),x.addEventListener(\"submit\",b),()=>{x.removeEventListener(\"submit\",b),document.body.removeChild(x)}),[x,b]),u(Ht,null,u(\"input\",{className:`uppy-u-reset ${p}`,type:\"search\",\"aria-label\":o,placeholder:o,value:f,onInput:S,form:x.id,\"data-uppy-super-focusable\":!0}),!s&&u(\"svg\",{\"aria-hidden\":\"true\",focusable:\"false\",class:\"uppy-c-icon uppy-ProviderBrowser-searchFilterIcon\",width:\"12\",height:\"12\",viewBox:\"0 0 12 12\"},u(\"path\",{d:\"M8.638 7.99l3.172 3.172a.492.492 0 1 1-.697.697L7.91 8.656a4.977 4.977 0 0 1-2.983.983C2.206 9.639 0 7.481 0 4.819 0 2.158 2.206 0 4.927 0c2.721 0 4.927 2.158 4.927 4.82a4.74 4.74 0 0 1-1.216 3.17zm-3.71.685c2.176 0 3.94-1.726 3.94-3.856 0-2.129-1.764-3.855-3.94-3.855C2.75.964.984 2.69.984 4.819c0 2.13 1.765 3.856 3.942 3.856z\"})),!s&&f&&u(\"button\",{className:\"uppy-u-reset uppy-ProviderBrowser-searchFilterReset\",type:\"button\",\"aria-label\":a,title:a,onClick:E},u(\"svg\",{\"aria-hidden\":\"true\",focusable:\"false\",className:\"uppy-c-icon\",viewBox:\"0 0 19 19\"},u(\"path\",{d:\"M17.318 17.232L9.94 9.854 9.586 9.5l-.354.354-7.378 7.378h.707l-.62-.62v.706L9.318 9.94l.354-.354-.354-.354L1.94 1.854v.707l.62-.62h-.706l7.378 7.378.354.354.354-.354 7.378-7.378h-.707l.622.62v-.706L9.854 9.232l-.354.354.354.354 7.378 7.378.708-.707-7.38-7.378v.708l7.38-7.38.353-.353-.353-.353-.622-.622-.353-.353-.354.352-7.378 7.38h.708L2.56 1.23 2.208.88l-.353.353-.622.62-.353.355.352.353 7.38 7.38v-.708l-7.38 7.38-.353.353.352.353.622.622.353.353.354-.353 7.38-7.38h-.708l7.38 7.38z\"}))),s&&u(\"button\",{className:`uppy-u-reset uppy-c-btn uppy-c-btn-primary ${d}`,type:\"submit\",form:x.id},l))}n(Vn,\"SearchFilterInput\");var og=n(i=>{let{cancel:e,done:t,i18n:r,selected:s}=i;return u(\"div\",{className:\"uppy-ProviderBrowser-footer\"},u(\"button\",{className:\"uppy-u-reset uppy-c-btn uppy-c-btn-primary\",onClick:t,type:\"button\"},r(\"selectX\",{smart_count:s})),u(\"button\",{className:\"uppy-u-reset uppy-c-btn uppy-c-btn-link\",onClick:e,type:\"button\"},r(\"cancel\")))},\"default\");var ug=de(Qt(),1);function Jw(){return u(\"svg\",{\"aria-hidden\":\"true\",focusable:\"false\",className:\"uppy-c-icon\",width:11,height:14.5,viewBox:\"0 0 44 58\"},u(\"path\",{d:\"M27.437.517a1 1 0 0 0-.094.03H4.25C2.037.548.217 2.368.217 4.58v48.405c0 2.212 1.82 4.03 4.03 4.03H39.03c2.21 0 4.03-1.818 4.03-4.03V15.61a1 1 0 0 0-.03-.28 1 1 0 0 0 0-.093 1 1 0 0 0-.03-.032 1 1 0 0 0 0-.03 1 1 0 0 0-.032-.063 1 1 0 0 0-.03-.063 1 1 0 0 0-.032 0 1 1 0 0 0-.03-.063 1 1 0 0 0-.032-.03 1 1 0 0 0-.03-.063 1 1 0 0 0-.063-.062l-14.593-14a1 1 0 0 0-.062-.062A1 1 0 0 0 28 .708a1 1 0 0 0-.374-.157 1 1 0 0 0-.156 0 1 1 0 0 0-.03-.03l-.003-.003zM4.25 2.547h22.218v9.97c0 2.21 1.82 4.03 4.03 4.03h10.564v36.438a2.02 2.02 0 0 1-2.032 2.032H4.25c-1.13 0-2.032-.9-2.032-2.032V4.58c0-1.13.902-2.032 2.03-2.032zm24.218 1.345l10.375 9.937.75.718H30.5c-1.13 0-2.032-.9-2.032-2.03V3.89z\"}))}n(Jw,\"FileIcon\");function Zw(){return u(\"svg\",{\"aria-hidden\":\"true\",focusable:\"false\",className:\"uppy-c-icon\",style:{minWidth:16,marginRight:3},viewBox:\"0 0 276.157 276.157\"},u(\"path\",{d:\"M273.08 101.378c-3.3-4.65-8.86-7.32-15.254-7.32h-24.34V67.59c0-10.2-8.3-18.5-18.5-18.5h-85.322c-3.63 0-9.295-2.875-11.436-5.805l-6.386-8.735c-4.982-6.814-15.104-11.954-23.546-11.954H58.73c-9.292 0-18.638 6.608-21.737 15.372l-2.033 5.752c-.958 2.71-4.72 5.37-7.596 5.37H18.5C8.3 49.09 0 57.39 0 67.59v167.07c0 .886.16 1.73.443 2.52.152 3.306 1.18 6.424 3.053 9.064 3.3 4.652 8.86 7.32 15.255 7.32h188.487c11.395 0 23.27-8.425 27.035-19.18l40.677-116.188c2.11-6.035 1.43-12.164-1.87-16.816zM18.5 64.088h8.864c9.295 0 18.64-6.607 21.738-15.37l2.032-5.75c.96-2.712 4.722-5.373 7.597-5.373h29.565c3.63 0 9.295 2.876 11.437 5.806l6.386 8.735c4.982 6.815 15.104 11.954 23.546 11.954h85.322c1.898 0 3.5 1.602 3.5 3.5v26.47H69.34c-11.395 0-23.27 8.423-27.035 19.178L15 191.23V67.59c0-1.898 1.603-3.5 3.5-3.5zm242.29 49.15l-40.676 116.188c-1.674 4.78-7.812 9.135-12.877 9.135H18.75c-1.447 0-2.576-.372-3.02-.997-.442-.625-.422-1.814.057-3.18l40.677-116.19c1.674-4.78 7.812-9.134 12.877-9.134h188.487c1.448 0 2.577.372 3.02.997.443.625.423 1.814-.056 3.18z\"}))}n(Zw,\"FolderIcon\");function e2(){return u(\"svg\",{\"aria-hidden\":\"true\",focusable:\"false\",style:{width:16,marginRight:4},viewBox:\"0 0 58 58\"},u(\"path\",{d:\"M36.537 28.156l-11-7a1.005 1.005 0 0 0-1.02-.033C24.2 21.3 24 21.635 24 22v14a1 1 0 0 0 1.537.844l11-7a1.002 1.002 0 0 0 0-1.688zM26 34.18V23.82L34.137 29 26 34.18z\"}),u(\"path\",{d:\"M57 6H1a1 1 0 0 0-1 1v44a1 1 0 0 0 1 1h56a1 1 0 0 0 1-1V7a1 1 0 0 0-1-1zM10 28H2v-9h8v9zm-8 2h8v9H2v-9zm10 10V8h34v42H12V40zm44-12h-8v-9h8v9zm-8 2h8v9h-8v-9zm8-22v9h-8V8h8zM2 8h8v9H2V8zm0 42v-9h8v9H2zm54 0h-8v-9h8v9z\"}))}n(e2,\"VideoIcon\");var ng=n(i=>{let{itemIconString:e}=i;if(e!==null)switch(e){case\"file\":return u(Jw,null);case\"folder\":return u(Zw,null);case\"video\":return u(e2,null);default:{let{alt:t}=i;return u(\"img\",{src:e,alt:t,loading:\"lazy\",width:16,height:16})}}},\"default\");var ag=de(Qt(),1);function t2(i){let{className:e,isDisabled:t,restrictionError:r,isChecked:s,title:o,itemIconEl:a,showTitles:l,toggleCheckbox:h,recordShiftKeyPress:p,id:d,children:f}=i,y=(0,ag.default)(\"uppy-u-reset\",\"uppy-ProviderBrowserItem-checkbox\",\"uppy-ProviderBrowserItem-checkbox--grid\",{\"uppy-ProviderBrowserItem-checkbox--is-checked\":s});return u(\"li\",{className:e,title:t?r?.message:null},u(\"input\",{type:\"checkbox\",className:y,onChange:h,onKeyDown:p,onMouseDown:p,name:\"listitem\",id:d,checked:s,disabled:t,\"data-uppy-super-focusable\":!0}),u(\"label\",{htmlFor:d,\"aria-label\":o,className:\"uppy-u-reset uppy-ProviderBrowserItem-inner\"},a,l&&o,f))}n(t2,\"GridListItem\");var Qh=t2;function i2(i){let{className:e,isDisabled:t,restrictionError:r,isCheckboxDisabled:s,isChecked:o,toggleCheckbox:a,recordShiftKeyPress:l,type:h,id:p,itemIconEl:d,title:f,handleFolderClick:y,showTitles:b,i18n:S}=i;return u(\"li\",{className:e,title:t?r?.message:null},s?null:u(\"input\",{type:\"checkbox\",className:`uppy-u-reset uppy-ProviderBrowserItem-checkbox ${o?\"uppy-ProviderBrowserItem-checkbox--is-checked\":\"\"}`,onChange:a,onKeyDown:l,onMouseDown:l,name:\"listitem\",id:p,checked:o,\"aria-label\":h===\"file\"?null:S(\"allFilesFromFolderNamed\",{name:f}),disabled:t,\"data-uppy-super-focusable\":!0}),h===\"file\"?u(\"label\",{htmlFor:p,className:\"uppy-u-reset uppy-ProviderBrowserItem-inner\"},u(\"div\",{className:\"uppy-ProviderBrowserItem-iconWrap\"},d),b&&f):u(\"button\",{type:\"button\",className:\"uppy-u-reset uppy-c-btn uppy-ProviderBrowserItem-inner\",onClick:y,\"aria-label\":S(\"openFolderNamed\",{name:f})},u(\"div\",{className:\"uppy-ProviderBrowserItem-iconWrap\"},d),b&&u(\"span\",null,f)))}n(i2,\"ListItem\");var lg=i2;function Wn(){return Wn=Object.assign?Object.assign.bind():function(i){for(var e=1;e<arguments.length;e++){var t=arguments[e];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(i[r]=t[r])}return i},Wn.apply(this,arguments)}n(Wn,\"_extends\");var Jh=n(i=>{let{author:e,getItemIcon:t,isChecked:r,isDisabled:s,viewType:o}=i,a=t(),l=(0,ug.default)(\"uppy-ProviderBrowserItem\",{\"uppy-ProviderBrowserItem--selected\":r},{\"uppy-ProviderBrowserItem--disabled\":s},{\"uppy-ProviderBrowserItem--noPreview\":a===\"video\"}),h=u(ng,{itemIconString:a});switch(o){case\"grid\":return u(Qh,Wn({},i,{className:l,itemIconEl:h}));case\"list\":return u(lg,Wn({},i,{className:l,itemIconEl:h}));case\"unsplash\":return u(Qh,Wn({},i,{className:l,itemIconEl:h}),u(\"a\",{href:`${e.url}?utm_source=Companion&utm_medium=referral`,target:\"_blank\",rel:\"noopener noreferrer\",className:\"uppy-ProviderBrowserItem-author\",tabIndex:\"-1\"},e.name));default:throw new Error(`There is no such type ${o}`)}},\"default\");var r2=\"shared-with-me\";function hg(i){let{currentSelection:e,uppyFiles:t,viewType:r,isChecked:s,toggleCheckbox:o,recordShiftKeyPress:a,showTitles:l,i18n:h,validateRestrictions:p,getNextFolder:d,columns:f,f:y}=i;if(y.isFolder){var b;return Jh({columns:f,showTitles:l,viewType:r,i18n:h,id:y.id,title:y.name,getItemIcon:()=>y.icon,isChecked:s(y),toggleCheckbox:E=>o(E,y),recordShiftKeyPress:a,type:\"folder\",isDisabled:(b=s(y))==null?void 0:b.loading,isCheckboxDisabled:y.id===r2,handleFolderClick:()=>d(y)})}let S=p(Hn(y),[...t,...e]);return Jh({id:y.id,title:y.name,author:y.author,getItemIcon:()=>y.icon,isChecked:s(y),toggleCheckbox:E=>o(E,y),recordShiftKeyPress:a,columns:f,showTitles:l,viewType:r,i18n:h,type:\"file\",isDisabled:S&&!s(y),restrictionError:S})}n(hg,\"ListItem\");function s2(i){let{currentSelection:e,folders:t,files:r,uppyFiles:s,viewType:o,headerComponent:a,showBreadcrumbs:l,isChecked:h,toggleCheckbox:p,recordShiftKeyPress:d,handleScroll:f,showTitles:y,i18n:b,validateRestrictions:S,isLoading:E,showSearchFilter:x,search:F,searchTerm:U,clearSearch:j,searchOnInput:G,searchInputLabel:J,clearSearchLabel:B,getNextFolder:z,cancel:K,done:oe,columns:Be,noResultsLabel:Je,loadAllFiles:wt}=i,We=e.length,_e=Ro(()=>[...t,...r],[t,r]);return u(\"div\",{className:(0,Zh.default)(\"uppy-ProviderBrowser\",`uppy-ProviderBrowser-viewType--${o}`)},a&&u(\"div\",{className:\"uppy-ProviderBrowser-header\"},u(\"div\",{className:(0,Zh.default)(\"uppy-ProviderBrowser-headerBar\",!l&&\"uppy-ProviderBrowser-headerBar--simple\")},a)),x&&u(\"div\",{class:\"uppy-ProviderBrowser-searchFilter\"},u(Vn,{search:F,searchTerm:U,clearSearch:j,inputLabel:J,clearSearchLabel:B,inputClassName:\"uppy-ProviderBrowser-searchFilterInput\",searchOnInput:G})),(()=>E?u(\"div\",{className:\"uppy-Provider-loading\"},u(\"span\",null,b(\"loading\"))):!t.length&&!r.length?u(\"div\",{className:\"uppy-Provider-empty\"},Je):wt?u(\"div\",{className:\"uppy-ProviderBrowser-body\"},u(\"ul\",{className:\"uppy-ProviderBrowser-list\"},u(du,{data:_e,renderRow:ze=>u(hg,{currentSelection:e,uppyFiles:s,viewType:o,isChecked:h,toggleCheckbox:p,recordShiftKeyPress:d,showTitles:y,i18n:b,validateRestrictions:S,getNextFolder:z,columns:Be,f:ze}),rowHeight:31}))):u(\"div\",{className:\"uppy-ProviderBrowser-body\"},u(\"ul\",{className:\"uppy-ProviderBrowser-list\",onScroll:f,role:\"listbox\",tabIndex:\"-1\"},_e.map(ze=>u(hg,{currentSelection:e,uppyFiles:s,viewType:o,isChecked:h,toggleCheckbox:p,recordShiftKeyPress:d,showTitles:y,i18n:b,validateRestrictions:S,getNextFolder:z,columns:Be,f:ze})))))(),We>0&&u(og,{selected:We,done:oe,cancel:K,i18n:b}))}n(s2,\"Browser\");var cu=s2;var dg=n(i=>{let{i18n:e,loading:t}=i;return u(\"div\",{className:\"uppy-Provider-loading\"},u(\"span\",null,e(\"loading\")),typeof t==\"string\"&&u(\"span\",{style:{marginTop:\".7em\"}},t))},\"default\");var Ei=class extends we{componentWillUnmount(){let{onUnmount:e}=this.props;e()}render(){let{children:e}=this.props;return ci(e)[0]}};n(Ei,\"CloseWrapper\");function Uo(i){return i?/^[^/]+\\/(jpe?g|gif|png|svg|svg\\+xml|bmp|webp|avif)$/.test(i):!1}n(Uo,\"isPreviewSupported\");var Zr=class{constructor(e,t){this.filterItems=r=>{let s=this.plugin.getPluginState();return!s.filterInput||s.filterInput===\"\"?r:r.filter(o=>o.name.toLowerCase().indexOf(s.filterInput.toLowerCase())!==-1)},this.recordShiftKeyPress=r=>{this.isShiftKeyPressed=r.shiftKey},this.toggleCheckbox=(r,s)=>{r.stopPropagation(),r.preventDefault(),r.currentTarget.focus();let{folders:o,files:a}=this.plugin.getPluginState(),l=this.filterItems(o.concat(a));if(this.lastCheckbox&&this.isShiftKeyPressed){let{currentSelection:p}=this.plugin.getPluginState(),d=l.indexOf(this.lastCheckbox),f=l.indexOf(s),y=d<f?l.slice(d,f+1):l.slice(f,d+1),b=[];for(let S of y){let{uppy:E}=this.plugin,x=E.validateRestrictions(Hn(S),[...E.getFiles(),...b]);x?E.info({message:x.message},\"error\",E.opts.infoTimeout):b.push(S)}this.plugin.setPluginState({currentSelection:[...new Set([...p,...b])]});return}this.lastCheckbox=s;let{currentSelection:h}=this.plugin.getPluginState();this.isChecked(s)?this.plugin.setPluginState({currentSelection:h.filter(p=>p.id!==s.id)}):this.plugin.setPluginState({currentSelection:h.concat([s])})},this.isChecked=r=>{let{currentSelection:s}=this.plugin.getPluginState();return s.some(o=>o.id===r.id)},this.plugin=e,this.provider=t.provider,this.isHandlingScroll=!1,this.preFirstRender=this.preFirstRender.bind(this),this.handleError=this.handleError.bind(this),this.clearSelection=this.clearSelection.bind(this),this.cancelPicking=this.cancelPicking.bind(this)}preFirstRender(){this.plugin.setPluginState({didFirstRender:!0}),this.plugin.onFirstRender()}shouldHandleScroll(e){let{scrollHeight:t,scrollTop:r,offsetHeight:s}=e.target;return t-(r+s)<50&&!this.isHandlingScroll}clearSelection(){this.plugin.setPluginState({currentSelection:[],filterInput:\"\"})}cancelPicking(){this.clearSelection();let e=this.plugin.uppy.getPlugin(\"Dashboard\");e&&e.hideAllPanels()}handleError(e){var t;let{uppy:r}=this.plugin,s=r.i18n(\"companionError\");r.log(e.toString()),!(e.isAuthError||((t=e.cause)==null?void 0:t.name)===\"AbortError\")&&r.info({message:s,details:e.toString()},\"error\",5e3)}getTagFile(e){let t={id:e.id,source:this.plugin.id,data:e,name:e.name||e.id,type:e.mimeType,isRemote:!0,meta:{},body:{fileId:e.id},remote:{companionUrl:this.plugin.opts.companionUrl,url:`${this.provider.fileUrl(e.requestPath)}`,body:{fileId:e.id},providerName:this.provider.name,provider:this.provider.provider}};Object.defineProperty(t.remote,\"requestClient\",{value:this.provider,enumerable:!1});let r=ys(t);return r&&Uo(r)&&(t.preview=e.thumbnail),e.author&&(e.author.name!=null&&(t.meta.authorName=String(e.author.name)),e.author.url&&(t.meta.authorUrl=e.author.url)),e.relDirPath!=null&&(t.meta.relativePath=e.relDirPath?`${e.relDirPath}/${t.name}`:null),e.absDirPath!=null&&(t.meta.absolutePath=e.absDirPath?`/${e.absDirPath}/${t.name}`:`/${t.name}`),t}setLoading(e){this.plugin.setPluginState({loading:e})}};n(Zr,\"View\");function Jt(i,e){if(!Object.prototype.hasOwnProperty.call(i,e))throw new TypeError(\"attempted to use private field on non-instance\");return i}n(Jt,\"_classPrivateFieldLooseBase\");var o2=0;function Yn(i){return\"__private_\"+o2+++\"_\"+i}n(Yn,\"_classPrivateFieldLooseKey\");var n2={version:\"3.7.0\"};function a2(i){return i.slice(1).map(e=>e.name).join(\"/\")}n(a2,\"formatBreadcrumbs\");function ed(i,e){return i?`${i}/${e}`:e}n(ed,\"prependPath\");function ko(){return u(\"svg\",{\"aria-hidden\":\"true\",focusable:\"false\",width:\"30\",height:\"30\",viewBox:\"0 0 30 30\"},u(\"path\",{d:\"M15 30c8.284 0 15-6.716 15-15 0-8.284-6.716-15-15-15C6.716 0 0 6.716 0 15c0 8.284 6.716 15 15 15zm4.258-12.676v6.846h-8.426v-6.846H5.204l9.82-12.364 9.82 12.364H19.26z\"}))}n(ko,\"defaultPickerIcon\");var Cs=Yn(\"abortController\"),_r=Yn(\"withAbort\"),Xn=Yn(\"list\"),Gn=Yn(\"listFilesAndFolders\"),Kn=Yn(\"recursivelyListAllFiles\"),Te=class extends Zr{constructor(e,t){super(e,t),Object.defineProperty(this,Kn,{value:d2}),Object.defineProperty(this,Gn,{value:h2}),Object.defineProperty(this,Xn,{value:u2}),Object.defineProperty(this,_r,{value:l2}),Object.defineProperty(this,Cs,{writable:!0,value:void 0});let r={viewType:\"list\",showTitles:!0,showFilter:!0,showBreadcrumbs:!0,loadAllFiles:!1};this.opts={...r,...t},this.filterQuery=this.filterQuery.bind(this),this.clearFilter=this.clearFilter.bind(this),this.getFolder=this.getFolder.bind(this),this.getNextFolder=this.getNextFolder.bind(this),this.logout=this.logout.bind(this),this.handleAuth=this.handleAuth.bind(this),this.handleScroll=this.handleScroll.bind(this),this.donePicking=this.donePicking.bind(this),this.render=this.render.bind(this),this.plugin.setPluginState({authenticated:!1,files:[],folders:[],breadcrumbs:[],filterInput:\"\",isSearchVisible:!1,currentSelection:[]})}tearDown(){}async getFolder(e,t){this.setLoading(!0);try{await Jt(this,_r)[_r](async r=>{this.lastCheckbox=void 0;let{breadcrumbs:s}=this.plugin.getPluginState(),o=s.findIndex(h=>e===h.requestPath);o!==-1?s=s.slice(0,o+1):s=[...s,{requestPath:e,name:t}],this.nextPagePath=e;let a=[],l=[];do{let{files:h,folders:p}=await Jt(this,Gn)[Gn]({breadcrumbs:s,signal:r});a=a.concat(h),l=l.concat(p),this.setLoading(this.plugin.uppy.i18n(\"loadedXFiles\",{numFiles:a.length+l.length}))}while(this.opts.loadAllFiles&&this.nextPagePath);this.plugin.setPluginState({folders:l,files:a,breadcrumbs:s,filterInput:\"\"})})}catch(r){this.handleError(r)}finally{this.setLoading(!1)}}getNextFolder(e){this.getFolder(e.requestPath,e.name),this.lastCheckbox=void 0}async logout(){try{await Jt(this,_r)[_r](async e=>{let t=await this.provider.logout({signal:e});if(t.ok){if(!t.revoked){let s=this.plugin.uppy.i18n(\"companionUnauthorizeHint\",{provider:this.plugin.title,url:t.manual_revoke_url});this.plugin.uppy.info(s,\"info\",7e3)}let r={authenticated:!1,files:[],folders:[],breadcrumbs:[],filterInput:\"\"};this.plugin.setPluginState(r)}})}catch(e){this.handleError(e)}}filterQuery(e){this.plugin.setPluginState({filterInput:e})}clearFilter(){this.plugin.setPluginState({filterInput:\"\"})}async handleAuth(){let e=`@uppy/provider-views=${Te.VERSION}`;try{await this.provider.login({uppyVersions:e}),this.plugin.setPluginState({authenticated:!0}),this.preFirstRender()}catch(t){this.plugin.uppy.log(`login failed: ${t.message}`)}}async handleScroll(e){if(this.shouldHandleScroll(e)&&this.nextPagePath){this.isHandlingScroll=!0;try{await Jt(this,_r)[_r](async t=>{let{files:r,folders:s,breadcrumbs:o}=this.plugin.getPluginState(),{files:a,folders:l}=await Jt(this,Gn)[Gn]({breadcrumbs:o,signal:t}),h=r.concat(a),p=s.concat(l);this.plugin.setPluginState({folders:p,files:h})})}catch(t){this.handleError(t)}finally{this.isHandlingScroll=!1}}}async donePicking(){this.setLoading(!0);try{await Jt(this,_r)[_r](async e=>{let{currentSelection:t}=this.plugin.getPluginState(),r=[],s=[];for(let o of t){let{requestPath:a}=o,l=n(h=>({...h,relDirPath:h.absDirPath.replace(o.absDirPath,\"\").replace(/^\\//,\"\")}),\"withRelDirPath\");if(o.isFolder){let h=!0,p=0,d=new qm({concurrency:6}),f=n(b=>{for(let S of b){let E=this.getTagFile(S),x=Dl(E);this.plugin.uppy.checkIfFileAlreadyExists(x)||(s.push(l(S)),p++,this.setLoading(this.plugin.uppy.i18n(\"addedNumFiles\",{numFiles:p}))),h=!1}},\"onFiles\");await Jt(this,Kn)[Kn]({requestPath:a,absDirPath:ed(o.absDirPath,o.name),relDirPath:o.name,queue:d,onFiles:f,signal:e}),await d.onIdle();let y;h?y=this.plugin.uppy.i18n(\"emptyFolderAdded\"):p===0?y=this.plugin.uppy.i18n(\"folderAlreadyAdded\",{folder:o.name}):y=this.plugin.uppy.i18n(\"folderAdded\",{smart_count:p,folder:o.name}),r.push(y)}else s.push(l(o))}this.plugin.uppy.log(\"Adding files from a remote provider\"),this.plugin.uppy.addFiles(s.map(o=>this.getTagFile(o))),this.plugin.setPluginState({filterInput:\"\"}),r.forEach(o=>this.plugin.uppy.info(o)),this.clearSelection()})}catch(e){this.handleError(e)}finally{this.setLoading(!1)}}render(e,t){var r=this;t===void 0&&(t={});let{authenticated:s,didFirstRender:o}=this.plugin.getPluginState(),{i18n:a}=this.plugin.uppy;o||this.preFirstRender();let l={...this.opts,...t},{files:h,folders:p,filterInput:d,loading:f,currentSelection:y}=this.plugin.getPluginState(),{isChecked:b,toggleCheckbox:S,recordShiftKeyPress:E,filterItems:x}=this,F=d!==\"\",U=this.plugin.icon||ko,j={showBreadcrumbs:l.showBreadcrumbs,getFolder:this.getFolder,breadcrumbs:this.plugin.getPluginState().breadcrumbs,pluginIcon:U,title:this.plugin.title,logout:this.logout,username:this.username,i18n:a},G={isChecked:b,toggleCheckbox:S,recordShiftKeyPress:E,currentSelection:y,files:F?x(h):h,folders:F?x(p):p,username:this.username,getNextFolder:this.getNextFolder,getFolder:this.getFolder,loadAllFiles:this.opts.loadAllFiles,showSearchFilter:l.showFilter,search:this.filterQuery,clearSearch:this.clearFilter,searchTerm:d,searchOnInput:!0,searchInputLabel:a(\"filter\"),clearSearchLabel:a(\"resetFilter\"),noResultsLabel:a(\"noFilesFound\"),logout:this.logout,handleScroll:this.handleScroll,done:this.donePicking,cancel:this.cancelPicking,headerComponent:Km(j),title:this.plugin.title,viewType:l.viewType,showTitles:l.showTitles,showBreadcrumbs:l.showBreadcrumbs,pluginIcon:U,i18n:this.plugin.uppy.i18n,uppyFiles:this.plugin.uppy.getFiles(),validateRestrictions:function(){return r.plugin.uppy.validateRestrictions(...arguments)}};return f?u(Ei,{onUnmount:this.clearSelection},u(dg,{i18n:this.plugin.uppy.i18n,loading:f})):s?u(Ei,{onUnmount:this.clearSelection},u(cu,G)):u(Ei,{onUnmount:this.clearSelection},u(Vm,{pluginName:this.plugin.title,pluginIcon:U,handleAuth:this.handleAuth,i18n:this.plugin.uppy.i18n,i18nArray:this.plugin.uppy.i18nArray}))}};n(Te,\"ProviderView\");async function l2(i){var e;(e=Jt(this,Cs)[Cs])==null||e.abort();let t=new AbortController;Jt(this,Cs)[Cs]=t;let r=n(()=>{t.abort(),this.clearSelection()},\"cancelRequest\");try{this.plugin.uppy.on(\"dashboard:close-panel\",r),this.plugin.uppy.on(\"cancel-all\",r),await i(t.signal)}finally{this.plugin.uppy.off(\"dashboard:close-panel\",r),this.plugin.uppy.off(\"cancel-all\",r),Jt(this,Cs)[Cs]=void 0}}n(l2,\"_withAbort2\");async function u2(i){let{requestPath:e,absDirPath:t,signal:r}=i,{username:s,nextPagePath:o,items:a}=await this.provider.list(e,{signal:r});return this.username=s||this.username,{items:a.map(l=>({...l,absDirPath:t})),nextPagePath:o}}n(u2,\"_list2\");async function h2(i){let{breadcrumbs:e,signal:t}=i,r=a2(e),{items:s,nextPagePath:o}=await Jt(this,Xn)[Xn]({requestPath:this.nextPagePath,absDirPath:r,signal:t});this.nextPagePath=o;let a=[],l=[];return s.forEach(h=>{h.isFolder?l.push(h):a.push(h)}),{files:a,folders:l}}n(h2,\"_listFilesAndFolders2\");async function d2(i){let{requestPath:e,absDirPath:t,relDirPath:r,queue:s,onFiles:o,signal:a}=i,l=e;for(;l;){let h=await Jt(this,Xn)[Xn]({requestPath:l,absDirPath:t,signal:a});l=h.nextPagePath;let p=h.items.filter(y=>!y.isFolder),d=h.items.filter(y=>y.isFolder);o(p);let f=d.map(async y=>s.add(async()=>Jt(this,Kn)[Kn]({requestPath:y.requestPath,absDirPath:ed(t,y.name),relDirPath:ed(r,y.name),queue:s,onFiles:o,signal:a})));await Promise.all(f)}}n(d2,\"_recursivelyListAllFiles2\");Te.VERSION=n2.version;function cg(i,e){if(!Object.prototype.hasOwnProperty.call(i,e))throw new TypeError(\"attempted to use private field on non-instance\");return i}n(cg,\"_classPrivateFieldLooseBase\");var c2=0;function p2(i){return\"__private_\"+c2+++\"_\"+i}n(p2,\"_classPrivateFieldLooseKey\");var f2={version:\"3.7.0\"},Qn=p2(\"updateFilesAndInputMode\"),ji=class extends Zr{constructor(e,t){super(e,t),Object.defineProperty(this,Qn,{value:m2});let r={viewType:\"grid\",showTitles:!1,showFilter:!1,showBreadcrumbs:!1};this.opts={...r,...t},this.search=this.search.bind(this),this.clearSearch=this.clearSearch.bind(this),this.resetPluginState=this.resetPluginState.bind(this),this.handleScroll=this.handleScroll.bind(this),this.donePicking=this.donePicking.bind(this),this.render=this.render.bind(this),this.defaultState={isInputMode:!0,files:[],folders:[],breadcrumbs:[],filterInput:\"\",currentSelection:[],searchTerm:null},this.plugin.setPluginState(this.defaultState)}tearDown(){}resetPluginState(){this.plugin.setPluginState(this.defaultState)}async search(e){let{searchTerm:t}=this.plugin.getPluginState();if(!(e&&e===t)){this.setLoading(!0);try{let r=await this.provider.search(e);cg(this,Qn)[Qn](r,[])}catch(r){this.handleError(r)}finally{this.setLoading(!1)}}}clearSearch(){this.plugin.setPluginState({currentSelection:[],files:[],searchTerm:null})}async handleScroll(e){let t=this.nextPageQuery||null;if(this.shouldHandleScroll(e)&&t){this.isHandlingScroll=!0;try{let{files:r,searchTerm:s}=this.plugin.getPluginState(),o=await this.provider.search(s,t);cg(this,Qn)[Qn](o,r)}catch(r){this.handleError(r)}finally{this.isHandlingScroll=!1}}}donePicking(){let{currentSelection:e}=this.plugin.getPluginState();this.plugin.uppy.log(\"Adding remote search provider files\"),this.plugin.uppy.addFiles(e.map(t=>this.getTagFile(t))),this.resetPluginState()}render(e,t){var r=this;t===void 0&&(t={});let{didFirstRender:s,isInputMode:o,searchTerm:a}=this.plugin.getPluginState(),{i18n:l}=this.plugin.uppy;s||this.preFirstRender();let h={...this.opts,...t},{files:p,folders:d,filterInput:f,loading:y,currentSelection:b}=this.plugin.getPluginState(),{isChecked:S,toggleCheckbox:E,filterItems:x,recordShiftKeyPress:F}=this,U=f!==\"\",j={isChecked:S,toggleCheckbox:E,recordShiftKeyPress:F,currentSelection:b,files:U?x(p):p,folders:U?x(d):d,handleScroll:this.handleScroll,done:this.donePicking,cancel:this.cancelPicking,showSearchFilter:h.showFilter,search:this.search,clearSearch:this.clearSearch,searchTerm:a,searchOnInput:!1,searchInputLabel:l(\"search\"),clearSearchLabel:l(\"resetSearch\"),noResultsLabel:l(\"noSearchResults\"),title:this.plugin.title,viewType:h.viewType,showTitles:h.showTitles,showFilter:h.showFilter,isLoading:y,showBreadcrumbs:h.showBreadcrumbs,pluginIcon:this.plugin.icon,i18n:l,uppyFiles:this.plugin.uppy.getFiles(),validateRestrictions:function(){return r.plugin.uppy.validateRestrictions(...arguments)}};return o?u(Ei,{onUnmount:this.resetPluginState},u(\"div\",{className:\"uppy-SearchProvider\"},u(Vn,{search:this.search,clearSelection:this.clearSelection,inputLabel:l(\"enterTextToSearch\"),buttonLabel:l(\"searchImages\"),inputClassName:\"uppy-c-textInput uppy-SearchProvider-input\",buttonCSSClassName:\"uppy-SearchProvider-searchButton\",showButton:!0}))):u(Ei,{onUnmount:this.resetPluginState},u(cu,j))}};n(ji,\"SearchProviderView\");function m2(i,e){this.nextPageQuery=i.nextPageQuery,i.items.forEach(t=>{e.push(t)}),this.plugin.setPluginState({currentSelection:[],isInputMode:!1,files:e,searchTerm:i.searchedFor})}n(m2,\"_updateFilesAndInputMode2\");ji.VERSION=f2.version;var pg;function Hi(i,e){if(!Object.prototype.hasOwnProperty.call(i,e))throw new TypeError(\"attempted to use private field on non-instance\");return i}n(Hi,\"_classPrivateFieldLooseBase\");var g2=0;function id(i){return\"__private_\"+g2+++\"_\"+i}n(id,\"_classPrivateFieldLooseKey\");var y2={version:\"3.0.5\"},v2=\"uppy/STATE_UPDATE\",b2=n(i=>e=>e.uppy[i],\"defaultSelector\");function w2(i,e){let t=Object.keys(e),r={};return t.forEach(s=>{i[s]!==e[s]&&(r[s]=e[s])}),r}n(w2,\"getPatch\");var xr=id(\"id\"),Jn=id(\"selector\"),Fr=id(\"store\");pg=Symbol.for(\"uppy test: get id\");var Zn=class{constructor(e){Object.defineProperty(this,xr,{writable:!0,value:void 0}),Object.defineProperty(this,Jn,{writable:!0,value:void 0}),Object.defineProperty(this,Fr,{writable:!0,value:void 0}),Hi(this,Fr)[Fr]=e.store,Hi(this,xr)[xr]=e.id||Pt(),Hi(this,Jn)[Jn]=e.selector||b2(Hi(this,xr)[xr]),this.setState({})}setState(e){Hi(this,Fr)[Fr].dispatch({type:v2,id:Hi(this,xr)[xr],payload:e})}getState(){return Hi(this,Jn)[Jn](Hi(this,Fr)[Fr].getState())}subscribe(e){let t=this.getState();return Hi(this,Fr)[Fr].subscribe(()=>{let r=this.getState();if(t!==r){let s=w2(t,r);e(t,r,s),t=r}})}[pg](){return Hi(this,xr)[xr]}};n(Zn,\"ReduxStore\");Zn.VERSION=y2.version;var fg=Zn;function pu(i,e,t,r){return t===0||i===e?i:r===0?e:i+(e-i)*2**(-r/t)}n(pu,\"emaFilter\");var Ut={STATE_ERROR:\"error\",STATE_WAITING:\"waiting\",STATE_PREPROCESSING:\"preprocessing\",STATE_UPLOADING:\"uploading\",STATE_POSTPROCESSING:\"postprocessing\",STATE_COMPLETE:\"complete\"};var ud=de(Qt(),1);function ea(i){let e=[],t,r;for(let{progress:o}of Object.values(i)){let{preprocess:a,postprocess:l}=o;r==null&&(a||l)&&({mode:t,message:r}=a||l),a?.mode===\"determinate\"&&e.push(a.value),l?.mode===\"determinate\"&&e.push(l.value)}let s=e.reduce((o,a)=>o+a/e.length,0);return{mode:t,message:r,value:s}}n(ea,\"calculateProcessingProgress\");var nd=de(Qt(),1),od=de(Il(),1);function rd(i){let e=Math.floor(i/3600)%24,t=Math.floor(i/60)%60,r=Math.floor(i%60);return{hours:e,minutes:t,seconds:r}}n(rd,\"secondsToTime\");function sd(i){let e=rd(i),t=e.hours===0?\"\":`${e.hours}h`,r=e.minutes===0?\"\":`${e.hours===0?e.minutes:` ${e.minutes.toString(10).padStart(2,\"0\")}`}m`,s=e.hours!==0?\"\":`${e.minutes===0?e.seconds:` ${e.seconds.toString(10).padStart(2,\"0\")}`}s`;return`${t}${r}${s}`}n(sd,\"prettyETA\");var S2=\"\\xB7\",mg=n(()=>` ${S2} `,\"renderDot\");function gg(i){let{newFiles:e,isUploadStarted:t,recoveredState:r,i18n:s,uploadState:o,isSomeGhost:a,startUpload:l}=i,h=(0,nd.default)(\"uppy-u-reset\",\"uppy-c-btn\",\"uppy-StatusBar-actionBtn\",\"uppy-StatusBar-actionBtn--upload\",{\"uppy-c-btn-primary\":o===Ut.STATE_WAITING},{\"uppy-StatusBar-actionBtn--disabled\":a}),p=e&&t&&!r?s(\"uploadXNewFiles\",{smart_count:e}):s(\"uploadXFiles\",{smart_count:e});return u(\"button\",{type:\"button\",className:h,\"aria-label\":s(\"uploadXFiles\",{smart_count:e}),onClick:l,disabled:a,\"data-uppy-super-focusable\":!0},p)}n(gg,\"UploadBtn\");function yg(i){let{i18n:e,uppy:t}=i;return u(\"button\",{type:\"button\",className:\"uppy-u-reset uppy-c-btn uppy-StatusBar-actionBtn uppy-StatusBar-actionBtn--retry\",\"aria-label\":e(\"retryUpload\"),onClick:()=>t.retryAll().catch(()=>{}),\"data-uppy-super-focusable\":!0,\"data-cy\":\"retry\"},u(\"svg\",{\"aria-hidden\":\"true\",focusable:\"false\",className:\"uppy-c-icon\",width:\"8\",height:\"10\",viewBox:\"0 0 8 10\"},u(\"path\",{d:\"M4 2.408a2.75 2.75 0 1 0 2.75 2.75.626.626 0 0 1 1.25.018v.023a4 4 0 1 1-4-4.041V.25a.25.25 0 0 1 .389-.208l2.299 1.533a.25.25 0 0 1 0 .416l-2.3 1.533A.25.25 0 0 1 4 3.316v-.908z\"})),e(\"retry\"))}n(yg,\"RetryBtn\");function vg(i){let{i18n:e,uppy:t}=i;return u(\"button\",{type:\"button\",className:\"uppy-u-reset uppy-StatusBar-actionCircleBtn\",title:e(\"cancel\"),\"aria-label\":e(\"cancel\"),onClick:()=>t.cancelAll(),\"data-cy\":\"cancel\",\"data-uppy-super-focusable\":!0},u(\"svg\",{\"aria-hidden\":\"true\",focusable:\"false\",className:\"uppy-c-icon\",width:\"16\",height:\"16\",viewBox:\"0 0 16 16\"},u(\"g\",{fill:\"none\",fillRule:\"evenodd\"},u(\"circle\",{fill:\"#888\",cx:\"8\",cy:\"8\",r:\"8\"}),u(\"path\",{fill:\"#FFF\",d:\"M9.283 8l2.567 2.567-1.283 1.283L8 9.283 5.433 11.85 4.15 10.567 6.717 8 4.15 5.433 5.433 4.15 8 6.717l2.567-2.567 1.283 1.283z\"}))))}n(vg,\"CancelBtn\");function bg(i){let{isAllPaused:e,i18n:t,isAllComplete:r,resumableUploads:s,uppy:o}=i,a=t(e?\"resume\":\"pause\");function l(){return r?null:s?e?o.resumeAll():o.pauseAll():o.cancelAll()}return n(l,\"togglePauseResume\"),u(\"button\",{title:a,\"aria-label\":a,className:\"uppy-u-reset uppy-StatusBar-actionCircleBtn\",type:\"button\",onClick:l,\"data-cy\":\"togglePauseResume\",\"data-uppy-super-focusable\":!0},u(\"svg\",{\"aria-hidden\":\"true\",focusable:\"false\",className:\"uppy-c-icon\",width:\"16\",height:\"16\",viewBox:\"0 0 16 16\"},u(\"g\",{fill:\"none\",fillRule:\"evenodd\"},u(\"circle\",{fill:\"#888\",cx:\"8\",cy:\"8\",r:\"8\"}),u(\"path\",{fill:\"#FFF\",d:e?\"M6 4.25L11.5 8 6 11.75z\":\"M5 4.5h2v7H5v-7zm4 0h2v7H9v-7z\"}))))}n(bg,\"PauseResumeButton\");function wg(i){let{i18n:e,doneButtonHandler:t}=i;return u(\"button\",{type:\"button\",className:\"uppy-u-reset uppy-c-btn uppy-StatusBar-actionBtn uppy-StatusBar-actionBtn--done\",onClick:t,\"data-uppy-super-focusable\":!0},e(\"done\"))}n(wg,\"DoneBtn\");function Sg(){return u(\"svg\",{className:\"uppy-StatusBar-spinner\",\"aria-hidden\":\"true\",focusable:\"false\",width:\"14\",height:\"14\"},u(\"path\",{d:\"M13.983 6.547c-.12-2.509-1.64-4.893-3.939-5.936-2.48-1.127-5.488-.656-7.556 1.094C.524 3.367-.398 6.048.162 8.562c.556 2.495 2.46 4.52 4.94 5.183 2.932.784 5.61-.602 7.256-3.015-1.493 1.993-3.745 3.309-6.298 2.868-2.514-.434-4.578-2.349-5.153-4.84a6.226 6.226 0 0 1 2.98-6.778C6.34.586 9.74 1.1 11.373 3.493c.407.596.693 1.282.842 1.988.127.598.073 1.197.161 1.794.078.525.543 1.257 1.15.864.525-.341.49-1.05.456-1.592-.007-.15.02.3 0 0\",fillRule:\"evenodd\"}))}n(Sg,\"LoadingSpinner\");function Pg(i){let{progress:e}=i,{value:t,mode:r,message:s}=e,o=Math.round(t*100),a=\"\\xB7\";return u(\"div\",{className:\"uppy-StatusBar-content\"},u(Sg,null),r===\"determinate\"?`${o}% ${a} `:\"\",s)}n(Pg,\"ProgressBarProcessing\");function P2(i){let{numUploads:e,complete:t,totalUploadedSize:r,totalSize:s,totalETA:o,i18n:a}=i,l=e>1;return u(\"div\",{className:\"uppy-StatusBar-statusSecondary\"},l&&a(\"filesUploadedOfTotal\",{complete:t,smart_count:e}),u(\"span\",{className:\"uppy-StatusBar-additionalInfo\"},l&&mg(),a(\"dataUploadedOfTotal\",{complete:(0,od.default)(r),total:(0,od.default)(s)}),mg(),a(\"xTimeLeft\",{time:sd(o)})))}n(P2,\"ProgressDetails\");function _g(i){let{i18n:e,complete:t,numUploads:r}=i;return u(\"div\",{className:\"uppy-StatusBar-statusSecondary\"},e(\"filesUploadedOfTotal\",{complete:t,smart_count:r}))}n(_g,\"FileUploadCount\");function _2(i){let{i18n:e,newFiles:t,startUpload:r}=i,s=(0,nd.default)(\"uppy-u-reset\",\"uppy-c-btn\",\"uppy-StatusBar-actionBtn\",\"uppy-StatusBar-actionBtn--uploadNewlyAdded\");return u(\"div\",{className:\"uppy-StatusBar-statusSecondary\"},u(\"div\",{className:\"uppy-StatusBar-statusSecondaryHint\"},e(\"xMoreFilesAdded\",{smart_count:t})),u(\"button\",{type:\"button\",className:s,\"aria-label\":e(\"uploadXFiles\",{smart_count:t}),onClick:r},e(\"upload\")))}n(_2,\"UploadNewlyAddedFiles\");function xg(i){let{i18n:e,supportsUploadProgress:t,totalProgress:r,showProgressDetails:s,isUploadStarted:o,isAllComplete:a,isAllPaused:l,newFiles:h,numUploads:p,complete:d,totalUploadedSize:f,totalSize:y,totalETA:b,startUpload:S}=i,E=h&&o;if(!o||a)return null;let x=e(l?\"paused\":\"uploading\");function F(){return!l&&!E&&s?t?u(P2,{numUploads:p,complete:d,totalUploadedSize:f,totalSize:y,totalETA:b,i18n:e}):u(_g,{i18n:e,complete:d,numUploads:p}):null}return n(F,\"renderProgressDetails\"),u(\"div\",{className:\"uppy-StatusBar-content\",\"aria-label\":x,title:x},l?null:u(Sg,null),u(\"div\",{className:\"uppy-StatusBar-status\"},u(\"div\",{className:\"uppy-StatusBar-statusPrimary\"},t?`${x}: ${r}%`:x),F(),E?u(_2,{i18n:e,newFiles:h,startUpload:S}):null))}n(xg,\"ProgressBarUploading\");function Fg(i){let{i18n:e}=i;return u(\"div\",{className:\"uppy-StatusBar-content\",role:\"status\",title:e(\"complete\")},u(\"div\",{className:\"uppy-StatusBar-status\"},u(\"div\",{className:\"uppy-StatusBar-statusPrimary\"},u(\"svg\",{\"aria-hidden\":\"true\",focusable:\"false\",className:\"uppy-StatusBar-statusIndicator uppy-c-icon\",width:\"15\",height:\"11\",viewBox:\"0 0 15 11\"},u(\"path\",{d:\"M.414 5.843L1.627 4.63l3.472 3.472L13.202 0l1.212 1.213L5.1 10.528z\"})),e(\"complete\"))))}n(Fg,\"ProgressBarComplete\");function Eg(i){let{error:e,i18n:t,complete:r,numUploads:s}=i;function o(){let a=`${t(\"uploadFailed\")} \n\n ${e}`;alert(a)}return n(o,\"displayErrorAlert\"),u(\"div\",{className:\"uppy-StatusBar-content\",title:t(\"uploadFailed\")},u(\"svg\",{\"aria-hidden\":\"true\",focusable:\"false\",className:\"uppy-StatusBar-statusIndicator uppy-c-icon\",width:\"11\",height:\"11\",viewBox:\"0 0 11 11\"},u(\"path\",{d:\"M4.278 5.5L0 1.222 1.222 0 5.5 4.278 9.778 0 11 1.222 6.722 5.5 11 9.778 9.778 11 5.5 6.722 1.222 11 0 9.778z\"})),u(\"div\",{className:\"uppy-StatusBar-status\"},u(\"div\",{className:\"uppy-StatusBar-statusPrimary\"},t(\"uploadFailed\"),u(\"button\",{className:\"uppy-u-reset uppy-StatusBar-details\",\"aria-label\":t(\"showErrorDetails\"),\"data-microtip-position\":\"top-right\",\"data-microtip-size\":\"medium\",onClick:o,type:\"button\"},\"?\")),u(_g,{i18n:t,complete:r,numUploads:s})))}n(Eg,\"ProgressBarError\");var{STATE_ERROR:Og,STATE_WAITING:Cg,STATE_PREPROCESSING:ad,STATE_UPLOADING:fu,STATE_POSTPROCESSING:ld,STATE_COMPLETE:mu}=Ut;function hd(i){let{newFiles:e,allowNewUpload:t,isUploadInProgress:r,isAllPaused:s,resumableUploads:o,error:a,hideUploadButton:l,hidePauseResumeButton:h,hideCancelButton:p,hideRetryButton:d,recoveredState:f,uploadState:y,totalProgress:b,files:S,supportsUploadProgress:E,hideAfterFinish:x,isSomeGhost:F,doneButtonHandler:U,isUploadStarted:j,i18n:G,startUpload:J,uppy:B,isAllComplete:z,showProgressDetails:K,numUploads:oe,complete:Be,totalSize:Je,totalETA:wt,totalUploadedSize:We}=i;function _e(){switch(y){case ld:case ad:{let re=ea(S);return re.mode===\"determinate\"?re.value*100:b}case Og:return null;case fu:return E?b:null;default:return b}}n(_e,\"getProgressValue\");function ze(){switch(y){case ld:case ad:{let{mode:re}=ea(S);return re===\"indeterminate\"}case fu:return!E;default:return!1}}n(ze,\"getIsIndeterminate\");function xe(){if(f)return!1;switch(y){case Cg:return l||e===0;case mu:return x;default:return!1}}n(xe,\"getIsHidden\");let ui=_e(),V=xe(),R=ui??100,I=!a&&e&&!r&&!s&&t&&!l,L=!p&&y!==Cg&&y!==mu,Q=o&&!h&&y===fu,X=a&&!z&&!d,ye=U&&y===mu,pe=(0,ud.default)(\"uppy-StatusBar-progress\",{\"is-indeterminate\":ze()}),ne=(0,ud.default)(\"uppy-StatusBar\",`is-${y}`,{\"has-ghosts\":F});return u(\"div\",{className:ne,\"aria-hidden\":V},u(\"div\",{className:pe,style:{width:`${R}%`},role:\"progressbar\",\"aria-label\":`${R}%`,\"aria-valuetext\":`${R}%`,\"aria-valuemin\":\"0\",\"aria-valuemax\":\"100\",\"aria-valuenow\":ui}),(()=>{switch(y){case ad:case ld:return u(Pg,{progress:ea(S)});case mu:return u(Fg,{i18n:G});case Og:return u(Eg,{error:a,i18n:G,numUploads:oe,complete:Be});case fu:return u(xg,{i18n:G,supportsUploadProgress:E,totalProgress:b,showProgressDetails:K,isUploadStarted:j,isAllComplete:z,isAllPaused:s,newFiles:e,numUploads:oe,complete:Be,totalUploadedSize:We,totalSize:Je,totalETA:wt,startUpload:J});default:return null}})(),u(\"div\",{className:\"uppy-StatusBar-actions\"},f||I?u(gg,{newFiles:e,isUploadStarted:j,recoveredState:f,i18n:G,isSomeGhost:F,startUpload:J,uploadState:y}):null,X?u(yg,{i18n:G,uppy:B}):null,Q?u(bg,{isAllPaused:s,i18n:G,isAllComplete:z,resumableUploads:o,uppy:B}):null,L?u(vg,{i18n:G,uppy:B}):null,ye?u(wg,{i18n:G,doneButtonHandler:U}):null))}n(hd,\"StatusBar\");var Tg={strings:{uploading:\"Uploading\",complete:\"Complete\",uploadFailed:\"Upload failed\",paused:\"Paused\",retry:\"Retry\",cancel:\"Cancel\",pause:\"Pause\",resume:\"Resume\",done:\"Done\",filesUploadedOfTotal:{0:\"%{complete} of %{smart_count} file uploaded\",1:\"%{complete} of %{smart_count} files uploaded\"},dataUploadedOfTotal:\"%{complete} of %{total}\",xTimeLeft:\"%{time} left\",uploadXFiles:{0:\"Upload %{smart_count} file\",1:\"Upload %{smart_count} files\"},uploadXNewFiles:{0:\"Upload +%{smart_count} file\",1:\"Upload +%{smart_count} files\"},upload:\"Upload\",retryUpload:\"Retry upload\",xMoreFilesAdded:{0:\"%{smart_count} more file added\",1:\"%{smart_count} more files added\"},showErrorDetails:\"Show error details\"}};function ke(i,e){if(!Object.prototype.hasOwnProperty.call(i,e))throw new TypeError(\"attempted to use private field on non-instance\");return i}n(ke,\"_classPrivateFieldLooseBase\");var x2=0;function Do(i){return\"__private_\"+x2+++\"_\"+i}n(Do,\"_classPrivateFieldLooseKey\");var F2={version:\"3.2.5\"},E2=2e3,O2=2e3;function C2(i,e,t,r){if(i)return Ut.STATE_ERROR;if(e)return Ut.STATE_COMPLETE;if(t)return Ut.STATE_WAITING;let s=Ut.STATE_WAITING,o=Object.keys(r);for(let a=0;a<o.length;a++){let{progress:l}=r[o[a]];if(l.uploadStarted&&!l.uploadComplete)return Ut.STATE_UPLOADING;l.preprocess&&s!==Ut.STATE_UPLOADING&&(s=Ut.STATE_PREPROCESSING),l.postprocess&&s!==Ut.STATE_UPLOADING&&s!==Ut.STATE_PREPROCESSING&&(s=Ut.STATE_POSTPROCESSING)}return s}n(C2,\"getUploadingState\");var fi=Do(\"lastUpdateTime\"),Oi=Do(\"previousUploadedBytes\"),Er=Do(\"previousSpeed\"),Zt=Do(\"previousETA\"),dd=Do(\"computeSmoothETA\"),ta=Do(\"onUploadStart\"),$i=class extends Z{constructor(e,t){super(e,t),Object.defineProperty(this,dd,{value:T2}),Object.defineProperty(this,fi,{writable:!0,value:void 0}),Object.defineProperty(this,Oi,{writable:!0,value:void 0}),Object.defineProperty(this,Er,{writable:!0,value:void 0}),Object.defineProperty(this,Zt,{writable:!0,value:void 0}),this.startUpload=()=>this.uppy.upload().catch(()=>{}),Object.defineProperty(this,ta,{writable:!0,value:()=>{let{recoveredState:s}=this.uppy.getState();if(ke(this,Er)[Er]=null,ke(this,Zt)[Zt]=null,s){ke(this,Oi)[Oi]=Object.values(s.files).reduce((o,a)=>{let{progress:l}=a;return o+l.bytesUploaded},0),this.uppy.emit(\"restore-confirmed\");return}ke(this,fi)[fi]=performance.now(),ke(this,Oi)[Oi]=0}}),this.id=this.opts.id||\"StatusBar\",this.title=\"StatusBar\",this.type=\"progressindicator\",this.defaultLocale=Tg;let r={target:\"body\",hideUploadButton:!1,hideRetryButton:!1,hidePauseResumeButton:!1,hideCancelButton:!1,showProgressDetails:!1,hideAfterFinish:!0,doneButtonHandler:null};this.opts={...r,...t},this.i18nInit(),this.render=this.render.bind(this),this.install=this.install.bind(this)}render(e){let{capabilities:t,files:r,allowNewUpload:s,totalProgress:o,error:a,recoveredState:l}=e,{newFiles:h,startedFiles:p,completeFiles:d,isUploadStarted:f,isAllComplete:y,isAllErrored:b,isAllPaused:S,isUploadInProgress:E,isSomeGhost:x}=this.uppy.getObjectOfFilesPerState(),F=l?Object.values(r):h,U=!!t.resumableUploads,j=t.uploadProgress!==!1,G=0,J=0;p.forEach(z=>{G+=z.progress.bytesTotal||0,J+=z.progress.bytesUploaded||0});let B=ke(this,dd)[dd]({uploaded:J,total:G,remaining:G-J});return hd({error:a,uploadState:C2(a,y,l,e.files||{}),allowNewUpload:s,totalProgress:o,totalSize:G,totalUploadedSize:J,isAllComplete:!1,isAllPaused:S,isAllErrored:b,isUploadStarted:f,isUploadInProgress:E,isSomeGhost:x,recoveredState:l,complete:d.length,newFiles:F.length,numUploads:p.length,totalETA:B,files:r,i18n:this.i18n,uppy:this.uppy,startUpload:this.startUpload,doneButtonHandler:this.opts.doneButtonHandler,resumableUploads:U,supportsUploadProgress:j,showProgressDetails:this.opts.showProgressDetails,hideUploadButton:this.opts.hideUploadButton,hideRetryButton:this.opts.hideRetryButton,hidePauseResumeButton:this.opts.hidePauseResumeButton,hideCancelButton:this.opts.hideCancelButton,hideAfterFinish:this.opts.hideAfterFinish,isTargetDOMEl:this.isTargetDOMEl})}onMount(){let e=this.el;Hl(e)||(e.dir=\"ltr\")}install(){let{target:e}=this.opts;e&&this.mount(e,this),this.uppy.on(\"upload\",ke(this,ta)[ta]),ke(this,fi)[fi]=performance.now(),ke(this,Oi)[Oi]=this.uppy.getFiles().reduce((t,r)=>t+r.progress.bytesUploaded,0)}uninstall(){this.unmount(),this.uppy.off(\"upload\",ke(this,ta)[ta])}};n($i,\"StatusBar\");function T2(i){var e,t;if(i.total===0||i.remaining===0)return 0;(t=(e=ke(this,fi))[fi])!=null||(e[fi]=performance.now());let r=performance.now()-ke(this,fi)[fi];if(r===0){var s;return Math.round(((s=ke(this,Zt)[Zt])!=null?s:0)/100)/10}let o=i.uploaded-ke(this,Oi)[Oi];if(ke(this,Oi)[Oi]=i.uploaded,o<=0){var a;return Math.round(((a=ke(this,Zt)[Zt])!=null?a:0)/100)/10}let l=o/r,h=ke(this,Er)[Er]==null?l:pu(l,ke(this,Er)[Er],E2,r);ke(this,Er)[Er]=h;let p=i.remaining/h,d=Math.max(ke(this,Zt)[Zt]-r,0),f=ke(this,Zt)[Zt]==null?p:pu(p,d,O2,r);return ke(this,Zt)[Zt]=f,ke(this,fi)[fi]=performance.now(),Math.round(f/100)/10}n(T2,\"_computeSmoothETA2\");$i.VERSION=F2.version;var Ag=300,Io=class extends we{constructor(){super(...arguments),this.ref=um()}componentWillEnter(e){this.ref.current.style.opacity=\"1\",this.ref.current.style.transform=\"none\",setTimeout(e,Ag)}componentWillLeave(e){this.ref.current.style.opacity=\"0\",this.ref.current.style.transform=\"translateY(350%)\",setTimeout(e,Ag)}render(){let{children:e}=this.props;return u(\"div\",{className:\"uppy-Informer-animated\",ref:this.ref},e)}};n(Io,\"FadeIn\");function A2(i,e){return Object.assign(i,e)}n(A2,\"assign\");function R2(i,e){var t;return(t=i?.key)!=null?t:e}n(R2,\"getKey\");function U2(i,e){let t=i._ptgLinkedRefs||(i._ptgLinkedRefs={});return t[e]||(t[e]=r=>{i.refs[e]=r})}n(U2,\"linkRef\");function ia(i){let e={};for(let t=0;t<i.length;t++)if(i[t]!=null){let r=R2(i[t],t.toString(36));e[r]=i[t]}return e}n(ia,\"getChildMapping\");function k2(i,e){i=i||{},e=e||{};let t=n(a=>e.hasOwnProperty(a)?e[a]:i[a],\"getValueForKey\"),r={},s=[];for(let a in i)e.hasOwnProperty(a)?s.length&&(r[a]=s,s=[]):s.push(a);let o={};for(let a in e){if(r.hasOwnProperty(a))for(let l=0;l<r[a].length;l++){let h=r[a][l];o[r[a][l]]=t(h)}o[a]=t(a)}for(let a=0;a<s.length;a++)o[s[a]]=t(s[a]);return o}n(k2,\"mergeChildMappings\");var D2=n(i=>i,\"identity\"),ra=class extends we{constructor(e,t){super(e,t),this.refs={},this.state={children:ia(ci(ci(this.props.children))||[])},this.performAppear=this.performAppear.bind(this),this.performEnter=this.performEnter.bind(this),this.performLeave=this.performLeave.bind(this)}componentWillMount(){this.currentlyTransitioningKeys={},this.keysToAbortLeave=[],this.keysToEnter=[],this.keysToLeave=[]}componentDidMount(){let e=this.state.children;for(let t in e)e[t]&&this.performAppear(t)}componentWillReceiveProps(e){let t=ia(ci(e.children)||[]),r=this.state.children;this.setState(o=>({children:k2(o.children,t)}));let s;for(s in t)if(t.hasOwnProperty(s)){let o=r&&r.hasOwnProperty(s);t[s]&&o&&this.currentlyTransitioningKeys[s]?(this.keysToEnter.push(s),this.keysToAbortLeave.push(s)):t[s]&&!o&&!this.currentlyTransitioningKeys[s]&&this.keysToEnter.push(s)}for(s in r)if(r.hasOwnProperty(s)){let o=t&&t.hasOwnProperty(s);r[s]&&!o&&!this.currentlyTransitioningKeys[s]&&this.keysToLeave.push(s)}}componentDidUpdate(){let{keysToEnter:e}=this;this.keysToEnter=[],e.forEach(this.performEnter);let{keysToLeave:t}=this;this.keysToLeave=[],t.forEach(this.performLeave)}_finishAbort(e){let t=this.keysToAbortLeave.indexOf(e);t!==-1&&this.keysToAbortLeave.splice(t,1)}performAppear(e){this.currentlyTransitioningKeys[e]=!0;let t=this.refs[e];t!=null&&t.componentWillAppear?t.componentWillAppear(this._handleDoneAppearing.bind(this,e)):this._handleDoneAppearing(e)}_handleDoneAppearing(e){let t=this.refs[e];t!=null&&t.componentDidAppear&&t.componentDidAppear(),delete this.currentlyTransitioningKeys[e],this._finishAbort(e);let r=ia(ci(this.props.children)||[]);(!r||!r.hasOwnProperty(e))&&this.performLeave(e)}performEnter(e){this.currentlyTransitioningKeys[e]=!0;let t=this.refs[e];t!=null&&t.componentWillEnter?t.componentWillEnter(this._handleDoneEntering.bind(this,e)):this._handleDoneEntering(e)}_handleDoneEntering(e){let t=this.refs[e];t!=null&&t.componentDidEnter&&t.componentDidEnter(),delete this.currentlyTransitioningKeys[e],this._finishAbort(e);let r=ia(ci(this.props.children)||[]);(!r||!r.hasOwnProperty(e))&&this.performLeave(e)}performLeave(e){if(this.keysToAbortLeave.indexOf(e)!==-1)return;this.currentlyTransitioningKeys[e]=!0;let r=this.refs[e];r!=null&&r.componentWillLeave?r.componentWillLeave(this._handleDoneLeaving.bind(this,e)):this._handleDoneLeaving(e)}_handleDoneLeaving(e){if(this.keysToAbortLeave.indexOf(e)!==-1)return;let r=this.refs[e];r!=null&&r.componentDidLeave&&r.componentDidLeave(),delete this.currentlyTransitioningKeys[e];let s=ia(ci(this.props.children)||[]);if(s&&s.hasOwnProperty(e))this.performEnter(e);else{let o=A2({},this.state.children);delete o[e],this.setState({children:o})}}render(e,t){let{childFactory:r,transitionLeave:s,transitionName:o,transitionAppear:a,transitionEnter:l,transitionLeaveTimeout:h,transitionEnterTimeout:p,transitionAppearTimeout:d,component:f,...y}=e,{children:b}=t,S=Object.entries(b).map(E=>{let[x,F]=E;if(!F)return;let U=U2(this,x);return jl(r(F),{ref:U,key:x})}).filter(Boolean);return u(f,y,S)}};n(ra,\"TransitionGroup\");ra.defaultProps={component:\"span\",childFactory:D2};var Rg=ra;var I2={version:\"3.0.4\"},qi=class extends Z{constructor(e,t){super(e,t),this.render=s=>u(\"div\",{className:\"uppy uppy-Informer\"},u(Rg,null,s.info.map(o=>u(Io,{key:o.message},u(\"p\",{role:\"alert\"},o.message,\" \",o.details&&u(\"span\",{\"aria-label\":o.details,\"data-microtip-position\":\"top-left\",\"data-microtip-size\":\"medium\",role:\"tooltip\",onClick:()=>alert(`${o.message} \n\n ${o.details}`)},\"?\")))))),this.type=\"progressindicator\",this.id=this.opts.id||\"Informer\",this.title=\"Informer\";let r={};this.opts={...r,...t}}install(){let{target:e}=this.opts;e&&this.mount(e,this)}};n(qi,\"Informer\");qi.VERSION=I2.version;var N2=/^data:([^/]+\\/[^,;]+(?:[^,]*?))(;base64)?,([\\s\\S]*)$/;function cd(i,e,t){var r,s;let o=N2.exec(i),a=(r=(s=e.mimeType)!=null?s:o?.[1])!=null?r:\"plain/text\",l;if(o?.[2]!=null){let h=atob(decodeURIComponent(o[3])),p=new Uint8Array(h.length);for(let d=0;d<h.length;d++)p[d]=h.charCodeAt(d);l=[p]}else o?.[3]!=null&&(l=[decodeURIComponent(o[3])]);return t?new File(l,e.name||\"\",{type:a}):new Blob(l,{type:a})}n(cd,\"dataURItoBlob\");function gu(i){return i.startsWith(\"blob:\")}n(gu,\"isObjectURL\");function ge(i,e,t){return e in i?Object.defineProperty(i,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):i[e]=t,i}n(ge,\"e\");var zg=typeof self<\"u\"?self:global,la=typeof navigator<\"u\",M2=la&&typeof HTMLImageElement>\"u\",Ug=!(typeof global>\"u\"||typeof process>\"u\"||!process.versions||!process.versions.node),jg=zg.Buffer,Hg=!!jg,L2=n(i=>i!==void 0,\"h\");function $g(i){return i===void 0||(i instanceof Map?i.size===0:Object.values(i).filter(L2).length===0)}n($g,\"f\");function ut(i){let e=new Error(i);throw delete e.stack,e}n(ut,\"l\");function kg(i){let e=function(t){let r=0;return t.ifd0.enabled&&(r+=1024),t.exif.enabled&&(r+=2048),t.makerNote&&(r+=2048),t.userComment&&(r+=1024),t.gps.enabled&&(r+=512),t.interop.enabled&&(r+=100),t.ifd1.enabled&&(r+=1024),r+2048}(i);return i.jfif.enabled&&(e+=50),i.xmp.enabled&&(e+=2e4),i.iptc.enabled&&(e+=14e3),i.icc.enabled&&(e+=6e3),e}n(kg,\"o\");var pd=n(i=>String.fromCharCode.apply(null,i),\"u\"),Dg=typeof TextDecoder<\"u\"?new TextDecoder(\"utf-8\"):void 0,$t=class{static from(e,t){return e instanceof this&&e.le===t?e:new $t(e,void 0,void 0,t)}constructor(e,t=0,r,s){if(typeof s==\"boolean\"&&(this.le=s),Array.isArray(e)&&(e=new Uint8Array(e)),e===0)this.byteOffset=0,this.byteLength=0;else if(e instanceof ArrayBuffer){r===void 0&&(r=e.byteLength-t);let o=new DataView(e,t,r);this._swapDataView(o)}else if(e instanceof Uint8Array||e instanceof DataView||e instanceof $t){r===void 0&&(r=e.byteLength-t),(t+=e.byteOffset)+r>e.byteOffset+e.byteLength&&ut(\"Creating view outside of available memory in ArrayBuffer\");let o=new DataView(e.buffer,t,r);this._swapDataView(o)}else if(typeof e==\"number\"){let o=new DataView(new ArrayBuffer(e));this._swapDataView(o)}else ut(\"Invalid input argument for BufferView: \"+e)}_swapArrayBuffer(e){this._swapDataView(new DataView(e))}_swapBuffer(e){this._swapDataView(new DataView(e.buffer,e.byteOffset,e.byteLength))}_swapDataView(e){this.dataView=e,this.buffer=e.buffer,this.byteOffset=e.byteOffset,this.byteLength=e.byteLength}_lengthToEnd(e){return this.byteLength-e}set(e,t,r=$t){return e instanceof DataView||e instanceof $t?e=new Uint8Array(e.buffer,e.byteOffset,e.byteLength):e instanceof ArrayBuffer&&(e=new Uint8Array(e)),e instanceof Uint8Array||ut(\"BufferView.set(): Invalid data argument.\"),this.toUint8().set(e,t),new r(this,t,e.byteLength)}subarray(e,t){return t=t||this._lengthToEnd(e),new $t(this,e,t)}toUint8(){return new Uint8Array(this.buffer,this.byteOffset,this.byteLength)}getUint8Array(e,t){return new Uint8Array(this.buffer,this.byteOffset+e,t)}getString(e=0,t=this.byteLength){return s=this.getUint8Array(e,t),Dg?Dg.decode(s):Hg?Buffer.from(s).toString(\"utf8\"):decodeURIComponent(escape(pd(s)));var s}getLatin1String(e=0,t=this.byteLength){let r=this.getUint8Array(e,t);return pd(r)}getUnicodeString(e=0,t=this.byteLength){let r=[];for(let s=0;s<t&&e+s<this.byteLength;s+=2)r.push(this.getUint16(e+s));return pd(r)}getInt8(e){return this.dataView.getInt8(e)}getUint8(e){return this.dataView.getUint8(e)}getInt16(e,t=this.le){return this.dataView.getInt16(e,t)}getInt32(e,t=this.le){return this.dataView.getInt32(e,t)}getUint16(e,t=this.le){return this.dataView.getUint16(e,t)}getUint32(e,t=this.le){return this.dataView.getUint32(e,t)}getFloat32(e,t=this.le){return this.dataView.getFloat32(e,t)}getFloat64(e,t=this.le){return this.dataView.getFloat64(e,t)}getFloat(e,t=this.le){return this.dataView.getFloat32(e,t)}getDouble(e,t=this.le){return this.dataView.getFloat64(e,t)}getUintBytes(e,t,r){switch(t){case 1:return this.getUint8(e,r);case 2:return this.getUint16(e,r);case 4:return this.getUint32(e,r);case 8:return this.getUint64&&this.getUint64(e,r)}}getUint(e,t,r){switch(t){case 8:return this.getUint8(e,r);case 16:return this.getUint16(e,r);case 32:return this.getUint32(e,r);case 64:return this.getUint64&&this.getUint64(e,r)}}toString(e){return this.dataView.toString(e,this.constructor.name)}ensureChunk(){}};n($t,\"c\");function md(i,e){ut(`${i} '${e}' was not loaded, try using full build of exifr.`)}n(md,\"p\");var zo=class extends Map{constructor(e){super(),this.kind=e}get(e,t){return this.has(e)||md(this.kind,e),t&&(e in t||function(r,s){ut(`Unknown ${r} '${s}'.`)}(this.kind,e),t[e].enabled||md(this.kind,e)),super.get(e)}keyList(){return Array.from(this.keys())}};n(zo,\"g\");var xu=new zo(\"file parser\"),ei=new zo(\"segment parser\"),da=new zo(\"file reader\"),B2=zg.fetch;function Ig(i,e){return(t=i).startsWith(\"data:\")||t.length>1e4?yd(i,e,\"base64\"):Ug&&i.includes(\"://\")?gd(i,e,\"url\",Pu):Ug?yd(i,e,\"fs\"):la?gd(i,e,\"url\",Pu):void ut(\"Invalid input argument\");var t}n(Ig,\"k\");async function gd(i,e,t,r){return da.has(t)?yd(i,e,t):r?async function(s,o){let a=await o(s);return new $t(a)}(i,r):void ut(`Parser ${t} is not loaded`)}n(gd,\"O\");async function yd(i,e,t){let r=new(da.get(t))(i,e);return await r.read(),r}n(yd,\"v\");var Pu=n(i=>B2(i).then(e=>e.arrayBuffer()),\"S\"),ua=n(i=>new Promise((e,t)=>{let r=new FileReader;r.onloadend=()=>e(r.result||new ArrayBuffer),r.onerror=t,r.readAsArrayBuffer(i)}),\"A\"),yu=class extends Map{get tagKeys(){return this.allKeys||(this.allKeys=Array.from(this.keys())),this.allKeys}get tagValues(){return this.allValues||(this.allValues=Array.from(this.values())),this.allValues}};n(yu,\"U\");function qg(i,e,t){let r=new yu;for(let[s,o]of t)r.set(s,o);if(Array.isArray(e))for(let s of e)i.set(s,r);else i.set(e,r);return r}n(qg,\"x\");function Vg(i,e,t){let r,s=i.get(e);for(r of t)s.set(r[0],r[1])}n(Vg,\"C\");var ca=new Map,vd=new Map,bd=new Map,No=[\"chunked\",\"firstChunkSize\",\"firstChunkSizeNode\",\"firstChunkSizeBrowser\",\"chunkSize\",\"chunkLimit\"],Fu=[\"jfif\",\"xmp\",\"icc\",\"iptc\",\"ihdr\"],ha=[\"tiff\",...Fu],Ye=[\"ifd0\",\"ifd1\",\"exif\",\"gps\",\"interop\"],Mo=[...ha,...Ye],Lo=[\"makerNote\",\"userComment\"],Eu=[\"translateKeys\",\"translateValues\",\"reviveValues\",\"multiSegment\"],Bo=[...Eu,\"sanitize\",\"mergeOutput\",\"silentErrors\"],na=class{get translate(){return this.translateKeys||this.translateValues||this.reviveValues}};n(na,\"_\");var es=class extends na{get needed(){return this.enabled||this.deps.size>0}constructor(e,t,r,s){if(super(),ge(this,\"enabled\",!1),ge(this,\"skip\",new Set),ge(this,\"pick\",new Set),ge(this,\"deps\",new Set),ge(this,\"translateKeys\",!1),ge(this,\"translateValues\",!1),ge(this,\"reviveValues\",!1),this.key=e,this.enabled=t,this.parse=this.enabled,this.applyInheritables(s),this.canBeFiltered=Ye.includes(e),this.canBeFiltered&&(this.dict=ca.get(e)),r!==void 0)if(Array.isArray(r))this.parse=this.enabled=!0,this.canBeFiltered&&r.length>0&&this.translateTagSet(r,this.pick);else if(typeof r==\"object\"){if(this.enabled=!0,this.parse=r.parse!==!1,this.canBeFiltered){let{pick:o,skip:a}=r;o&&o.length>0&&this.translateTagSet(o,this.pick),a&&a.length>0&&this.translateTagSet(a,this.skip)}this.applyInheritables(r)}else r===!0||r===!1?this.parse=this.enabled=r:ut(`Invalid options argument: ${r}`)}applyInheritables(e){let t,r;for(t of Eu)r=e[t],r!==void 0&&(this[t]=r)}translateTagSet(e,t){if(this.dict){let r,s,{tagKeys:o,tagValues:a}=this.dict;for(r of e)typeof r==\"string\"?(s=a.indexOf(r),s===-1&&(s=o.indexOf(Number(r))),s!==-1&&t.add(Number(o[s]))):t.add(r)}else for(let r of e)t.add(r)}finalizeFilters(){!this.enabled&&this.deps.size>0?(this.enabled=!0,_u(this.pick,this.deps)):this.enabled&&this.pick.size>0&&_u(this.pick,this.deps)}};n(es,\"D\");var kt={jfif:!1,tiff:!0,xmp:!1,icc:!1,iptc:!1,ifd0:!0,ifd1:!1,exif:!0,gps:!0,interop:!1,ihdr:void 0,makerNote:!1,userComment:!1,multiSegment:!1,skip:[],pick:[],translateKeys:!0,translateValues:!0,reviveValues:!0,sanitize:!0,mergeOutput:!0,silentErrors:!0,chunked:!0,firstChunkSize:void 0,firstChunkSizeNode:512,firstChunkSizeBrowser:65536,chunkSize:65536,chunkLimit:5},Ng=new Map,ts=class extends na{static useCached(e){let t=Ng.get(e);return t!==void 0||(t=new this(e),Ng.set(e,t)),t}constructor(e){super(),e===!0?this.setupFromTrue():e===void 0?this.setupFromUndefined():Array.isArray(e)?this.setupFromArray(e):typeof e==\"object\"?this.setupFromObject(e):ut(`Invalid options argument ${e}`),this.firstChunkSize===void 0&&(this.firstChunkSize=la?this.firstChunkSizeBrowser:this.firstChunkSizeNode),this.mergeOutput&&(this.ifd1.enabled=!1),this.filterNestedSegmentTags(),this.traverseTiffDependencyTree(),this.checkLoadedPlugins()}setupFromUndefined(){let e;for(e of No)this[e]=kt[e];for(e of Bo)this[e]=kt[e];for(e of Lo)this[e]=kt[e];for(e of Mo)this[e]=new es(e,kt[e],void 0,this)}setupFromTrue(){let e;for(e of No)this[e]=kt[e];for(e of Bo)this[e]=kt[e];for(e of Lo)this[e]=!0;for(e of Mo)this[e]=new es(e,!0,void 0,this)}setupFromArray(e){let t;for(t of No)this[t]=kt[t];for(t of Bo)this[t]=kt[t];for(t of Lo)this[t]=kt[t];for(t of Mo)this[t]=new es(t,!1,void 0,this);this.setupGlobalFilters(e,void 0,Ye)}setupFromObject(e){let t;for(t of(Ye.ifd0=Ye.ifd0||Ye.image,Ye.ifd1=Ye.ifd1||Ye.thumbnail,Object.assign(this,e),No))this[t]=fd(e[t],kt[t]);for(t of Bo)this[t]=fd(e[t],kt[t]);for(t of Lo)this[t]=fd(e[t],kt[t]);for(t of ha)this[t]=new es(t,kt[t],e[t],this);for(t of Ye)this[t]=new es(t,kt[t],e[t],this.tiff);this.setupGlobalFilters(e.pick,e.skip,Ye,Mo),e.tiff===!0?this.batchEnableWithBool(Ye,!0):e.tiff===!1?this.batchEnableWithUserValue(Ye,e):Array.isArray(e.tiff)?this.setupGlobalFilters(e.tiff,void 0,Ye):typeof e.tiff==\"object\"&&this.setupGlobalFilters(e.tiff.pick,e.tiff.skip,Ye)}batchEnableWithBool(e,t){for(let r of e)this[r].enabled=t}batchEnableWithUserValue(e,t){for(let r of e){let s=t[r];this[r].enabled=s!==!1&&s!==void 0}}setupGlobalFilters(e,t,r,s=r){if(e&&e.length){for(let a of s)this[a].enabled=!1;let o=Mg(e,r);for(let[a,l]of o)_u(this[a].pick,l),this[a].enabled=!0}else if(t&&t.length){let o=Mg(t,r);for(let[a,l]of o)_u(this[a].skip,l)}}filterNestedSegmentTags(){let{ifd0:e,exif:t,xmp:r,iptc:s,icc:o}=this;this.makerNote?t.deps.add(37500):t.skip.add(37500),this.userComment?t.deps.add(37510):t.skip.add(37510),r.enabled||e.skip.add(700),s.enabled||e.skip.add(33723),o.enabled||e.skip.add(34675)}traverseTiffDependencyTree(){let{ifd0:e,exif:t,gps:r,interop:s}=this;s.needed&&(t.deps.add(40965),e.deps.add(40965)),t.needed&&e.deps.add(34665),r.needed&&e.deps.add(34853),this.tiff.enabled=Ye.some(o=>this[o].enabled===!0)||this.makerNote||this.userComment;for(let o of Ye)this[o].finalizeFilters()}get onlyTiff(){return!Fu.map(e=>this[e].enabled).some(e=>e===!0)&&this.tiff.enabled}checkLoadedPlugins(){for(let e of ha)this[e].enabled&&!ei.has(e)&&md(\"segment parser\",e)}};n(ts,\"R\");function Mg(i,e){let t,r,s,o,a=[];for(s of e){for(o of(t=ca.get(s),r=[],t))(i.includes(o[0])||i.includes(o[1]))&&r.push(o[0]);r.length&&a.push([s,r])}return a}n(Mg,\"K\");function fd(i,e){return i!==void 0?i:e!==void 0?e:void 0}n(fd,\"W\");function _u(i,e){for(let t of e)i.add(t)}n(_u,\"X\");ge(ts,\"default\",kt);var Ts=class{constructor(e){ge(this,\"parsers\",{}),ge(this,\"output\",{}),ge(this,\"errors\",[]),ge(this,\"pushToErrors\",t=>this.errors.push(t)),this.options=ts.useCached(e)}async read(e){this.file=await function(t,r){return typeof t==\"string\"?Ig(t,r):la&&!M2&&t instanceof HTMLImageElement?Ig(t.src,r):t instanceof Uint8Array||t instanceof ArrayBuffer||t instanceof DataView?new $t(t):la&&t instanceof Blob?gd(t,r,\"blob\",ua):void ut(\"Invalid input argument\")}(e,this.options)}setup(){if(this.fileParser)return;let{file:e}=this,t=e.getUint16(0);for(let[r,s]of xu)if(s.canHandle(e,t))return this.fileParser=new s(this.options,this.file,this.parsers),e[r]=!0;this.file.close&&this.file.close(),ut(\"Unknown file format\")}async parse(){let{output:e,errors:t}=this;return this.setup(),this.options.silentErrors?(await this.executeParsers().catch(this.pushToErrors),t.push(...this.fileParser.errors)):await this.executeParsers(),this.file.close&&this.file.close(),this.options.silentErrors&&t.length>0&&(e.errors=t),$g(r=e)?void 0:r;var r}async executeParsers(){let{output:e}=this;await this.fileParser.parse();let t=Object.values(this.parsers).map(async r=>{let s=await r.parse();r.assignToOutput(e,s)});this.options.silentErrors&&(t=t.map(r=>r.catch(this.pushToErrors))),await Promise.all(t)}async extractThumbnail(){this.setup();let{options:e,file:t}=this,r=ei.get(\"tiff\",e);var s;if(t.tiff?s={start:0,type:\"tiff\"}:t.jpeg&&(s=await this.fileParser.getOrFindSegment(\"tiff\")),s===void 0)return;let o=await this.fileParser.ensureSegmentChunk(s),a=this.parsers.tiff=new r(o,e,t),l=await a.extractThumbnail();return t.close&&t.close(),l}};n(Ts,\"H\");async function Wg(i,e){let t=new Ts(e);return await t.read(i),t.parse()}n(Wg,\"Y\");var z2=Object.freeze({__proto__:null,parse:Wg,Exifr:Ts,fileParsers:xu,segmentParsers:ei,fileReaders:da,tagKeys:ca,tagValues:vd,tagRevivers:bd,createDictionary:qg,extendDictionary:Vg,fetchUrlAsArrayBuffer:Pu,readBlobAsArrayBuffer:ua,chunkedProps:No,otherSegments:Fu,segments:ha,tiffBlocks:Ye,segmentsAndBlocks:Mo,tiffExtractables:Lo,inheritables:Eu,allFormatters:Bo,Options:ts}),Or=class{static findPosition(e,t){let r=e.getUint16(t+2)+2,s=typeof this.headerLength==\"function\"?this.headerLength(e,t,r):this.headerLength,o=t+s,a=r-s;return{offset:t,length:r,headerLength:s,start:o,size:a,end:o+a}}static parse(e,t={}){return new this(e,new ts({[this.type]:t}),e).parse()}normalizeInput(e){return e instanceof $t?e:new $t(e)}constructor(e,t={},r){ge(this,\"errors\",[]),ge(this,\"raw\",new Map),ge(this,\"handleError\",s=>{if(!this.options.silentErrors)throw s;this.errors.push(s.message)}),this.chunk=this.normalizeInput(e),this.file=r,this.type=this.constructor.type,this.globalOptions=this.options=t,this.localOptions=t[this.type],this.canTranslate=this.localOptions&&this.localOptions.translate}translate(){this.canTranslate&&(this.translated=this.translateBlock(this.raw,this.type))}get output(){return this.translated?this.translated:this.raw?Object.fromEntries(this.raw):void 0}translateBlock(e,t){let r=bd.get(t),s=vd.get(t),o=ca.get(t),a=this.options[t],l=a.reviveValues&&!!r,h=a.translateValues&&!!s,p=a.translateKeys&&!!o,d={};for(let[f,y]of e)l&&r.has(f)?y=r.get(f)(y):h&&s.has(f)&&(y=this.translateValue(y,s.get(f))),p&&o.has(f)&&(f=o.get(f)||f),d[f]=y;return d}translateValue(e,t){return t[e]||t.DEFAULT||e}assignToOutput(e,t){this.assignObjectToOutput(e,this.constructor.type,t)}assignObjectToOutput(e,t,r){if(this.globalOptions.mergeOutput)return Object.assign(e,r);e[t]?Object.assign(e[t],r):e[t]=r}};n(Or,\"J\");ge(Or,\"headerLength\",4),ge(Or,\"type\",void 0),ge(Or,\"multiSegment\",!1),ge(Or,\"canHandle\",()=>!1);function j2(i){return i===192||i===194||i===196||i===219||i===221||i===218||i===254}n(j2,\"q\");function H2(i){return i>=224&&i<=239}n(H2,\"Q\");function $2(i,e,t){for(let[r,s]of ei)if(s.canHandle(i,e,t))return r}n($2,\"Z\");var aa=class extends class{constructor(e,t,r){ge(this,\"errors\",[]),ge(this,\"ensureSegmentChunk\",async s=>{let o=s.start,a=s.size||65536;if(this.file.chunked)if(this.file.available(o,a))s.chunk=this.file.subarray(o,a);else try{s.chunk=await this.file.readChunk(o,a)}catch(l){ut(`Couldn't read segment: ${JSON.stringify(s)}. ${l.message}`)}else this.file.byteLength>o+a?s.chunk=this.file.subarray(o,a):s.size===void 0?s.chunk=this.file.subarray(o):ut(\"Segment unreachable: \"+JSON.stringify(s));return s.chunk}),this.extendOptions&&this.extendOptions(e),this.options=e,this.file=t,this.parsers=r}injectSegment(e,t){this.options[e].enabled&&this.createParser(e,t)}createParser(e,t){let r=new(ei.get(e))(t,this.options,this.file);return this.parsers[e]=r}createParsers(e){for(let t of e){let{type:r,chunk:s}=t,o=this.options[r];if(o&&o.enabled){let a=this.parsers[r];a&&a.append||a||this.createParser(r,s)}}}async readSegments(e){let t=e.map(this.ensureSegmentChunk);await Promise.all(t)}}{constructor(...e){super(...e),ge(this,\"appSegments\",[]),ge(this,\"jpegSegments\",[]),ge(this,\"unknownSegments\",[])}static canHandle(e,t){return t===65496}async parse(){await this.findAppSegments(),await this.readSegments(this.appSegments),this.mergeMultiSegments(),this.createParsers(this.mergedAppSegments||this.appSegments)}setupSegmentFinderArgs(e){e===!0?(this.findAll=!0,this.wanted=new Set(ei.keyList())):(e=e===void 0?ei.keyList().filter(t=>this.options[t].enabled):e.filter(t=>this.options[t].enabled&&ei.has(t)),this.findAll=!1,this.remaining=new Set(e),this.wanted=new Set(e)),this.unfinishedMultiSegment=!1}async findAppSegments(e=0,t){this.setupSegmentFinderArgs(t);let{file:r,findAll:s,wanted:o,remaining:a}=this;if(!s&&this.file.chunked&&(s=Array.from(o).some(l=>{let h=ei.get(l),p=this.options[l];return h.multiSegment&&p.multiSegment}),s&&await this.file.readWhole()),e=this.findAppSegmentsInRange(e,r.byteLength),!this.options.onlyTiff&&r.chunked){let l=!1;for(;a.size>0&&!l&&(r.canReadNextChunk||this.unfinishedMultiSegment);){let{nextChunkOffset:h}=r,p=this.appSegments.some(d=>!this.file.available(d.offset||d.start,d.length||d.size));if(l=e>h&&!p?!await r.readNextChunk(e):!await r.readNextChunk(h),(e=this.findAppSegmentsInRange(e,r.byteLength))===void 0)return}}}findAppSegmentsInRange(e,t){t-=2;let r,s,o,a,l,h,{file:p,findAll:d,wanted:f,remaining:y,options:b}=this;for(;e<t;e++)if(p.getUint8(e)===255){if(r=p.getUint8(e+1),H2(r)){if(s=p.getUint16(e+2),o=$2(p,e,s),o&&f.has(o)&&(a=ei.get(o),l=a.findPosition(p,e),h=b[o],l.type=o,this.appSegments.push(l),!d&&(a.multiSegment&&h.multiSegment?(this.unfinishedMultiSegment=l.chunkNumber<l.chunkCount,this.unfinishedMultiSegment||y.delete(o)):y.delete(o),y.size===0)))break;b.recordUnknownSegments&&(l=Or.findPosition(p,e),l.marker=r,this.unknownSegments.push(l)),e+=s+1}else if(j2(r)){if(s=p.getUint16(e+2),r===218&&b.stopAfterSos!==!1)return;b.recordJpegSegments&&this.jpegSegments.push({offset:e,length:s,marker:r}),e+=s+1}}return e}mergeMultiSegments(){if(!this.appSegments.some(t=>t.multiSegment))return;let e=function(t,r){let s,o,a,l=new Map;for(let h=0;h<t.length;h++)s=t[h],o=s[r],l.has(o)?a=l.get(o):l.set(o,a=[]),a.push(s);return Array.from(l)}(this.appSegments,\"type\");this.mergedAppSegments=e.map(([t,r])=>{let s=ei.get(t,this.options);return s.handleMultiSegments?{type:t,chunk:s.handleMultiSegments(r)}:r[0]})}getSegment(e){return this.appSegments.find(t=>t.type===e)}async getOrFindSegment(e){let t=this.getSegment(e);return t===void 0&&(await this.findAppSegments(0,[e]),t=this.getSegment(e)),t}};n(aa,\"ee\");ge(aa,\"type\",\"jpeg\"),xu.set(\"jpeg\",aa);var q2=[void 0,1,1,2,4,8,1,1,2,4,8,4,8,4],vu=class extends Or{parseHeader(){var e=this.chunk.getUint16();e===18761?this.le=!0:e===19789&&(this.le=!1),this.chunk.le=this.le,this.headerParsed=!0}parseTags(e,t,r=new Map){let{pick:s,skip:o}=this.options[t];s=new Set(s);let a=s.size>0,l=o.size===0,h=this.chunk.getUint16(e);e+=2;for(let p=0;p<h;p++){let d=this.chunk.getUint16(e);if(a){if(s.has(d)&&(r.set(d,this.parseTag(e,d,t)),s.delete(d),s.size===0))break}else!l&&o.has(d)||r.set(d,this.parseTag(e,d,t));e+=12}return r}parseTag(e,t,r){let{chunk:s}=this,o=s.getUint16(e+2),a=s.getUint32(e+4),l=q2[o];if(l*a<=4?e+=8:e=s.getUint32(e+8),(o<1||o>13)&&ut(`Invalid TIFF value type. block: ${r.toUpperCase()}, tag: ${t.toString(16)}, type: ${o}, offset ${e}`),e>s.byteLength&&ut(`Invalid TIFF value offset. block: ${r.toUpperCase()}, tag: ${t.toString(16)}, type: ${o}, offset ${e} is outside of chunk size ${s.byteLength}`),o===1)return s.getUint8Array(e,a);if(o===2)return(h=function(p){for(;p.endsWith(\"\\0\");)p=p.slice(0,-1);return p}(h=s.getString(e,a)).trim())===\"\"?void 0:h;var h;if(o===7)return s.getUint8Array(e,a);if(a===1)return this.parseTagValue(o,e);{let p=new(function(f){switch(f){case 1:return Uint8Array;case 3:return Uint16Array;case 4:return Uint32Array;case 5:return Array;case 6:return Int8Array;case 8:return Int16Array;case 9:return Int32Array;case 10:return Array;case 11:return Float32Array;case 12:return Float64Array;default:return Array}}(o))(a),d=l;for(let f=0;f<a;f++)p[f]=this.parseTagValue(o,e),e+=d;return p}}parseTagValue(e,t){let{chunk:r}=this;switch(e){case 1:return r.getUint8(t);case 3:return r.getUint16(t);case 4:return r.getUint32(t);case 5:return r.getUint32(t)/r.getUint32(t+4);case 6:return r.getInt8(t);case 8:return r.getInt16(t);case 9:return r.getInt32(t);case 10:return r.getInt32(t)/r.getInt32(t+4);case 11:return r.getFloat(t);case 12:return r.getDouble(t);case 13:return r.getUint32(t);default:ut(`Invalid tiff type ${e}`)}}};n(vu,\"se\");var jo=class extends vu{static canHandle(e,t){return e.getUint8(t+1)===225&&e.getUint32(t+4)===1165519206&&e.getUint16(t+8)===0}async parse(){this.parseHeader();let{options:e}=this;return e.ifd0.enabled&&await this.parseIfd0Block(),e.exif.enabled&&await this.safeParse(\"parseExifBlock\"),e.gps.enabled&&await this.safeParse(\"parseGpsBlock\"),e.interop.enabled&&await this.safeParse(\"parseInteropBlock\"),e.ifd1.enabled&&await this.safeParse(\"parseThumbnailBlock\"),this.createOutput()}safeParse(e){let t=this[e]();return t.catch!==void 0&&(t=t.catch(this.handleError)),t}findIfd0Offset(){this.ifd0Offset===void 0&&(this.ifd0Offset=this.chunk.getUint32(4))}findIfd1Offset(){if(this.ifd1Offset===void 0){this.findIfd0Offset();let e=this.chunk.getUint16(this.ifd0Offset),t=this.ifd0Offset+2+12*e;this.ifd1Offset=this.chunk.getUint32(t)}}parseBlock(e,t){let r=new Map;return this[t]=r,this.parseTags(e,t,r),r}async parseIfd0Block(){if(this.ifd0)return;let{file:e}=this;this.findIfd0Offset(),this.ifd0Offset<8&&ut(\"Malformed EXIF data\"),!e.chunked&&this.ifd0Offset>e.byteLength&&ut(`IFD0 offset points to outside of file.\nthis.ifd0Offset: ${this.ifd0Offset}, file.byteLength: ${e.byteLength}`),e.tiff&&await e.ensureChunk(this.ifd0Offset,kg(this.options));let t=this.parseBlock(this.ifd0Offset,\"ifd0\");return t.size!==0?(this.exifOffset=t.get(34665),this.interopOffset=t.get(40965),this.gpsOffset=t.get(34853),this.xmp=t.get(700),this.iptc=t.get(33723),this.icc=t.get(34675),this.options.sanitize&&(t.delete(34665),t.delete(40965),t.delete(34853),t.delete(700),t.delete(33723),t.delete(34675)),t):void 0}async parseExifBlock(){if(this.exif||(this.ifd0||await this.parseIfd0Block(),this.exifOffset===void 0))return;this.file.tiff&&await this.file.ensureChunk(this.exifOffset,kg(this.options));let e=this.parseBlock(this.exifOffset,\"exif\");return this.interopOffset||(this.interopOffset=e.get(40965)),this.makerNote=e.get(37500),this.userComment=e.get(37510),this.options.sanitize&&(e.delete(40965),e.delete(37500),e.delete(37510)),this.unpack(e,41728),this.unpack(e,41729),e}unpack(e,t){let r=e.get(t);r&&r.length===1&&e.set(t,r[0])}async parseGpsBlock(){if(this.gps||(this.ifd0||await this.parseIfd0Block(),this.gpsOffset===void 0))return;let e=this.parseBlock(this.gpsOffset,\"gps\");return e&&e.has(2)&&e.has(4)&&(e.set(\"latitude\",Lg(...e.get(2),e.get(1))),e.set(\"longitude\",Lg(...e.get(4),e.get(3)))),e}async parseInteropBlock(){if(!this.interop&&(this.ifd0||await this.parseIfd0Block(),this.interopOffset!==void 0||this.exif||await this.parseExifBlock(),this.interopOffset!==void 0))return this.parseBlock(this.interopOffset,\"interop\")}async parseThumbnailBlock(e=!1){if(!this.ifd1&&!this.ifd1Parsed&&(!this.options.mergeOutput||e))return this.findIfd1Offset(),this.ifd1Offset>0&&(this.parseBlock(this.ifd1Offset,\"ifd1\"),this.ifd1Parsed=!0),this.ifd1}async extractThumbnail(){if(this.headerParsed||this.parseHeader(),this.ifd1Parsed||await this.parseThumbnailBlock(!0),this.ifd1===void 0)return;let e=this.ifd1.get(513),t=this.ifd1.get(514);return this.chunk.getUint8Array(e,t)}get image(){return this.ifd0}get thumbnail(){return this.ifd1}createOutput(){let e,t,r,s={};for(t of Ye)if(e=this[t],!$g(e))if(r=this.canTranslate?this.translateBlock(e,t):Object.fromEntries(e),this.options.mergeOutput){if(t===\"ifd1\")continue;Object.assign(s,r)}else s[t]=r;return this.makerNote&&(s.makerNote=this.makerNote),this.userComment&&(s.userComment=this.userComment),s}assignToOutput(e,t){if(this.globalOptions.mergeOutput)Object.assign(e,t);else for(let[r,s]of Object.entries(t))this.assignObjectToOutput(e,r,s)}};n(jo,\"ie\");function Lg(i,e,t,r){var s=i+e/60+t/3600;return r!==\"S\"&&r!==\"W\"||(s*=-1),s}n(Lg,\"ne\");ge(jo,\"type\",\"tiff\"),ge(jo,\"headerLength\",10),ei.set(\"tiff\",jo);var R4=Object.freeze({__proto__:null,default:z2,Exifr:Ts,fileParsers:xu,segmentParsers:ei,fileReaders:da,tagKeys:ca,tagValues:vd,tagRevivers:bd,createDictionary:qg,extendDictionary:Vg,fetchUrlAsArrayBuffer:Pu,readBlobAsArrayBuffer:ua,chunkedProps:No,otherSegments:Fu,segments:ha,tiffBlocks:Ye,segmentsAndBlocks:Mo,tiffExtractables:Lo,inheritables:Eu,allFormatters:Bo,Options:ts,parse:Wg}),wd={ifd0:!1,ifd1:!1,exif:!1,gps:!1,interop:!1,sanitize:!1,reviveValues:!0,translateKeys:!1,translateValues:!1,mergeOutput:!1},U4=Object.assign({},wd,{firstChunkSize:4e4,gps:[1,2,3,4]});var k4=Object.assign({},wd,{tiff:!1,ifd1:!0,mergeOutput:!1});var V2=Object.assign({},wd,{firstChunkSize:4e4,ifd0:[274]});async function W2(i){let e=new Ts(V2);await e.read(i);let t=await e.parse();if(t&&t.ifd0)return t.ifd0[274]}n(W2,\"ce\");var G2=Object.freeze({1:{dimensionSwapped:!1,scaleX:1,scaleY:1,deg:0,rad:0},2:{dimensionSwapped:!1,scaleX:-1,scaleY:1,deg:0,rad:0},3:{dimensionSwapped:!1,scaleX:1,scaleY:1,deg:180,rad:180*Math.PI/180},4:{dimensionSwapped:!1,scaleX:-1,scaleY:1,deg:180,rad:180*Math.PI/180},5:{dimensionSwapped:!0,scaleX:1,scaleY:-1,deg:90,rad:90*Math.PI/180},6:{dimensionSwapped:!0,scaleX:1,scaleY:1,deg:90,rad:90*Math.PI/180},7:{dimensionSwapped:!0,scaleX:1,scaleY:-1,deg:270,rad:270*Math.PI/180},8:{dimensionSwapped:!0,scaleX:1,scaleY:1,deg:270,rad:270*Math.PI/180}}),sa=!0,oa=!0;if(typeof navigator==\"object\"){let i=navigator.userAgent;if(i.includes(\"iPad\")||i.includes(\"iPhone\")){let e=i.match(/OS (\\d+)_(\\d+)/);if(e){let[,t,r]=e;sa=Number(t)+.1*Number(r)<13.4,oa=!1}}else if(i.includes(\"OS X 10\")){let[,e]=i.match(/OS X 10[_.](\\d+)/);sa=oa=Number(e)<15}if(i.includes(\"Chrome/\")){let[,e]=i.match(/Chrome\\/(\\d+)/);sa=oa=Number(e)<81}else if(i.includes(\"Firefox/\")){let[,e]=i.match(/Firefox\\/(\\d+)/);sa=oa=Number(e)<77}}async function Gg(i){let e=await W2(i);return Object.assign({canvas:sa,css:oa},G2[e])}n(Gg,\"ye\");var bu=class extends $t{constructor(...e){super(...e),ge(this,\"ranges\",new wu),this.byteLength!==0&&this.ranges.add(0,this.byteLength)}_tryExtend(e,t,r){if(e===0&&this.byteLength===0&&r){let s=new DataView(r.buffer||r,r.byteOffset,r.byteLength);this._swapDataView(s)}else{let s=e+t;if(s>this.byteLength){let{dataView:o}=this._extend(s);this._swapDataView(o)}}}_extend(e){let t;t=Hg?jg.allocUnsafe(e):new Uint8Array(e);let r=new DataView(t.buffer,t.byteOffset,t.byteLength);return t.set(new Uint8Array(this.buffer,this.byteOffset,this.byteLength),0),{uintView:t,dataView:r}}subarray(e,t,r=!1){return t=t||this._lengthToEnd(e),r&&this._tryExtend(e,t),this.ranges.add(e,t),super.subarray(e,t)}set(e,t,r=!1){r&&this._tryExtend(t,e.byteLength,e);let s=super.set(e,t);return this.ranges.add(t,s.byteLength),s}async ensureChunk(e,t){this.chunked&&(this.ranges.available(e,t)||await this.readChunk(e,t))}available(e,t){return this.ranges.available(e,t)}};n(bu,\"be\");var wu=class{constructor(){ge(this,\"list\",[])}get length(){return this.list.length}add(e,t,r=0){let s=e+t,o=this.list.filter(a=>Bg(e,a.offset,s)||Bg(e,a.end,s));if(o.length>0){e=Math.min(e,...o.map(l=>l.offset)),s=Math.max(s,...o.map(l=>l.end)),t=s-e;let a=o.shift();a.offset=e,a.length=t,a.end=s,this.list=this.list.filter(l=>!o.includes(l))}else this.list.push({offset:e,length:t,end:s})}available(e,t){let r=e+t;return this.list.some(s=>s.offset<=e&&r<=s.end)}};n(wu,\"we\");function Bg(i,e,t){return i<=e&&e<=t}n(Bg,\"ke\");var Su=class extends bu{constructor(e,t){super(0),ge(this,\"chunksRead\",0),this.input=e,this.options=t}async readWhole(){this.chunked=!1,await this.readChunk(this.nextChunkOffset)}async readChunked(){this.chunked=!0,await this.readChunk(0,this.options.firstChunkSize)}async readNextChunk(e=this.nextChunkOffset){if(this.fullyRead)return this.chunksRead++,!1;let t=this.options.chunkSize,r=await this.readChunk(e,t);return!!r&&r.byteLength===t}async readChunk(e,t){if(this.chunksRead++,(t=this.safeWrapAddress(e,t))!==0)return this._readChunk(e,t)}safeWrapAddress(e,t){return this.size!==void 0&&e+t>this.size?Math.max(0,this.size-e):t}get nextChunkOffset(){if(this.ranges.list.length!==0)return this.ranges.list[0].length}get canReadNextChunk(){return this.chunksRead<this.options.chunkLimit}get fullyRead(){return this.size!==void 0&&this.nextChunkOffset===this.size}read(){return this.options.chunked?this.readChunked():this.readWhole()}close(){}};n(Su,\"Oe\");da.set(\"blob\",class extends Su{async readWhole(){this.chunked=!1;let i=await ua(this.input);this._swapArrayBuffer(i)}readChunked(){return this.chunked=!0,this.size=this.input.size,super.readChunked()}async _readChunk(i,e){let t=e?i+e:void 0,r=this.input.slice(i,t),s=await ua(r);return this.set(s,i,!0)}});var Kg={strings:{generatingThumbnails:\"Generating thumbnails...\"}};var K2={version:\"3.0.6\"};function X2(i,e,t){try{i.getContext(\"2d\").getImageData(0,0,1,1)}catch(r){if(r.code===18)return Promise.reject(new Error(\"cannot read image, probably an svg with external resources\"))}return i.toBlob?new Promise(r=>{i.toBlob(r,e,t)}).then(r=>{if(r===null)throw new Error(\"cannot read image, probably an svg with external resources\");return r}):Promise.resolve().then(()=>cd(i.toDataURL(e,t),{})).then(r=>{if(r===null)throw new Error(\"could not extract blob, probably an old browser\");return r})}n(X2,\"canvasToBlob\");function Y2(i,e){let t=i.width,r=i.height;(e.deg===90||e.deg===270)&&(t=i.height,r=i.width);let s=document.createElement(\"canvas\");s.width=t,s.height=r;let o=s.getContext(\"2d\");return o.translate(t/2,r/2),e.canvas&&(o.rotate(e.rad),o.scale(e.scaleX,e.scaleY)),o.drawImage(i,-i.width/2,-i.height/2,i.width,i.height),s}n(Y2,\"rotateImage\");function Q2(i){let e=i.width/i.height,t=5e6,r=4096,s=Math.floor(Math.sqrt(t*e)),o=Math.floor(t/Math.sqrt(t*e));if(s>r&&(s=r,o=Math.round(s/e)),o>r&&(o=r,s=Math.round(e*o)),i.width>s){let a=document.createElement(\"canvas\");return a.width=s,a.height=o,a.getContext(\"2d\").drawImage(i,0,0,s,o),a}return i}n(Q2,\"protect\");var Cr=class extends Z{constructor(e,t){super(e,t),this.onFileAdded=s=>{!s.preview&&s.data&&Uo(s.type)&&!s.isRemote&&this.addToQueue(s.id)},this.onCancelRequest=s=>{let o=this.queue.indexOf(s.id);o!==-1&&this.queue.splice(o,1)},this.onFileRemoved=s=>{let o=this.queue.indexOf(s.id);o!==-1&&this.queue.splice(o,1),s.preview&&gu(s.preview)&&URL.revokeObjectURL(s.preview)},this.onRestored=()=>{this.uppy.getFiles().filter(o=>o.isRestored).forEach(o=>{(!o.preview||gu(o.preview))&&this.addToQueue(o.id)})},this.onAllFilesRemoved=()=>{this.queue=[]},this.waitUntilAllProcessed=s=>{s.forEach(a=>{let l=this.uppy.getFile(a);this.uppy.emit(\"preprocess-progress\",l,{mode:\"indeterminate\",message:this.i18n(\"generatingThumbnails\")})});let o=n(()=>{s.forEach(a=>{let l=this.uppy.getFile(a);this.uppy.emit(\"preprocess-complete\",l)})},\"emitPreprocessCompleteForAll\");return new Promise(a=>{this.queueProcessing?this.uppy.once(\"thumbnail:all-generated\",()=>{o(),a()}):(o(),a())})},this.type=\"modifier\",this.id=this.opts.id||\"ThumbnailGenerator\",this.title=\"Thumbnail Generator\",this.queue=[],this.queueProcessing=!1,this.defaultThumbnailDimension=200,this.thumbnailType=this.opts.thumbnailType||\"image/jpeg\",this.defaultLocale=Kg;let r={thumbnailWidth:null,thumbnailHeight:null,waitForThumbnailsBeforeUpload:!1,lazy:!1};if(this.opts={...r,...t},this.i18nInit(),this.opts.lazy&&this.opts.waitForThumbnailsBeforeUpload)throw new Error(\"ThumbnailGenerator: The `lazy` and `waitForThumbnailsBeforeUpload` options are mutually exclusive. Please ensure at most one of them is set to `true`.\")}createThumbnail(e,t,r){let s=URL.createObjectURL(e.data),o=new Promise((l,h)=>{let p=new Image;p.src=s,p.addEventListener(\"load\",()=>{URL.revokeObjectURL(s),l(p)}),p.addEventListener(\"error\",d=>{URL.revokeObjectURL(s),h(d.error||new Error(\"Could not create thumbnail\"))})}),a=Gg(e.data).catch(()=>1);return Promise.all([o,a]).then(l=>{let[h,p]=l,d=this.getProportionalDimensions(h,t,r,p.deg),f=Y2(h,p),y=this.resizeImage(f,d.width,d.height);return X2(y,this.thumbnailType,80)}).then(l=>URL.createObjectURL(l))}getProportionalDimensions(e,t,r,s){let o=e.width/e.height;return(s===90||s===270)&&(o=e.height/e.width),t!=null?{width:t,height:Math.round(t/o)}:r!=null?{width:Math.round(r*o),height:r}:{width:this.defaultThumbnailDimension,height:Math.round(this.defaultThumbnailDimension/o)}}resizeImage(e,t,r){let s=Q2(e),o=Math.ceil(Math.log2(s.width/t));o<1&&(o=1);let a=t*2**(o-1),l=r*2**(o-1),h=2;for(;o--;){let p=document.createElement(\"canvas\");p.width=a,p.height=l,p.getContext(\"2d\").drawImage(s,0,0,a,l),s=p,a=Math.round(a/h),l=Math.round(l/h)}return s}setPreviewURL(e,t){this.uppy.setFileState(e,{preview:t})}addToQueue(e){this.queue.push(e),this.queueProcessing===!1&&this.processQueue()}processQueue(){if(this.queueProcessing=!0,this.queue.length>0){let e=this.uppy.getFile(this.queue.shift());return e?this.requestThumbnail(e).catch(()=>{}).then(()=>this.processQueue()):(this.uppy.log(\"[ThumbnailGenerator] file was removed before a thumbnail could be generated, but not removed from the queue. This is probably a bug\",\"error\"),Promise.resolve())}return this.queueProcessing=!1,this.uppy.log(\"[ThumbnailGenerator] Emptied thumbnail queue\"),this.uppy.emit(\"thumbnail:all-generated\"),Promise.resolve()}requestThumbnail(e){return Uo(e.type)&&!e.isRemote?this.createThumbnail(e,this.opts.thumbnailWidth,this.opts.thumbnailHeight).then(t=>{this.setPreviewURL(e.id,t),this.uppy.log(`[ThumbnailGenerator] Generated thumbnail for ${e.id}`),this.uppy.emit(\"thumbnail:generated\",this.uppy.getFile(e.id),t)}).catch(t=>{this.uppy.log(`[ThumbnailGenerator] Failed thumbnail for ${e.id}:`,\"warning\"),this.uppy.log(t,\"warning\"),this.uppy.emit(\"thumbnail:error\",this.uppy.getFile(e.id),t)}):Promise.resolve()}install(){this.uppy.on(\"file-removed\",this.onFileRemoved),this.uppy.on(\"cancel-all\",this.onAllFilesRemoved),this.opts.lazy?(this.uppy.on(\"thumbnail:request\",this.onFileAdded),this.uppy.on(\"thumbnail:cancel\",this.onCancelRequest)):(this.uppy.on(\"file-added\",this.onFileAdded),this.uppy.on(\"restored\",this.onRestored)),this.opts.waitForThumbnailsBeforeUpload&&this.uppy.addPreProcessor(this.waitUntilAllProcessed)}uninstall(){this.uppy.off(\"file-removed\",this.onFileRemoved),this.uppy.off(\"cancel-all\",this.onAllFilesRemoved),this.opts.lazy?(this.uppy.off(\"thumbnail:request\",this.onFileAdded),this.uppy.off(\"thumbnail:cancel\",this.onCancelRequest)):(this.uppy.off(\"file-added\",this.onFileAdded),this.uppy.off(\"restored\",this.onRestored)),this.opts.waitForThumbnailsBeforeUpload&&this.uppy.removePreProcessor(this.waitUntilAllProcessed)}};n(Cr,\"ThumbnailGenerator\");Cr.VERSION=K2.version;function Ou(i){if(typeof i==\"string\"){let e=document.querySelectorAll(i);return e.length===0?null:Array.from(e)}return typeof i==\"object\"&&En(i)?[i]:null}n(Ou,\"findAllDOMElements\");var Qe=Array.from;function Cu(i,e,t,r){let{onSuccess:s}=r;i.readEntries(o=>{let a=[...e,...o];o.length?queueMicrotask(()=>{Cu(i,a,t,{onSuccess:s})}):s(a)},o=>{t(o),s(e)})}n(Cu,\"getFilesAndDirectoriesFromDirectory\");function Xg(i,e){return i==null?i:{kind:i.isFile?\"file\":i.isDirectory?\"directory\":void 0,name:i.name,getFile(){return new Promise((t,r)=>i.file(t,r))},async*values(){let t=i.createReader();yield*await new Promise(s=>{Cu(t,[],e,{onSuccess:o=>s(o.map(a=>Xg(a,e)))})})},isSameEntry:void 0}}n(Xg,\"getAsFileSystemHandleFromEntry\");function Yg(i,e,t){try{return t===void 0&&(t=void 0),async function*(){let r=n(()=>`${e}/${i.name}`,\"getNextRelativePath\");if(i.kind===\"file\"){let s=await i.getFile();s!=null?(s.relativePath=e?r():null,yield s):t!=null&&(yield t)}else if(i.kind===\"directory\")for await(let s of i.values())yield*Yg(s,e?r():i.name);else t!=null&&(yield t)}()}catch(r){return Promise.reject(r)}}n(Yg,\"createPromiseToAddFileOrParseDirectory\");async function*Sd(i,e){let t=await Promise.all(Array.from(i.items,async r=>{var s;let o,a=n(()=>typeof r.getAsEntry==\"function\"?r.getAsEntry():r.webkitGetAsEntry(),\"getAsEntry\");return(s=o)!=null||(o=Xg(a(),e)),{fileSystemHandle:o,lastResortFile:r.getAsFile()}}));for(let{lastResortFile:r,fileSystemHandle:s}of t)if(s!=null)try{yield*Yg(s,\"\",r)}catch(o){r!=null?yield r:e(o)}else r!=null&&(yield r)}n(Sd,\"getFilesFromDataTransfer\");function Pd(i){let e=Qe(i.files);return Promise.resolve(e)}n(Pd,\"fallbackApi\");async function As(i,e){var t;let r=(t=e?.logDropError)!=null?t:Function.prototype;try{let s=[];for await(let o of Sd(i,r))s.push(o);return s}catch{return Pd(i)}}n(As,\"getDroppedFiles\");var Qg=Number.isNaN||n(function(e){return typeof e==\"number\"&&e!==e},\"ponyfill\");function J2(i,e){return!!(i===e||Qg(i)&&Qg(e))}n(J2,\"isEqual\");function Z2(i,e){if(i.length!==e.length)return!1;for(var t=0;t<i.length;t++)if(!J2(i[t],e[t]))return!1;return!0}n(Z2,\"areInputsEqual\");function _d(i,e){e===void 0&&(e=Z2);var t=null;function r(){for(var s=[],o=0;o<arguments.length;o++)s[o]=arguments[o];if(t&&t.lastThis===this&&e(s,t.lastArgs))return t.lastResult;var a=i.apply(this,s);return t={lastResult:a,lastArgs:s,lastThis:this},a}return n(r,\"memoized\"),r.clear=n(function(){t=null},\"clear\"),r}n(_d,\"memoizeOne\");var Tu=['a[href]:not([tabindex^=\"-\"]):not([inert]):not([aria-hidden])','area[href]:not([tabindex^=\"-\"]):not([inert]):not([aria-hidden])',\"input:not([disabled]):not([inert]):not([aria-hidden])\",\"select:not([disabled]):not([inert]):not([aria-hidden])\",\"textarea:not([disabled]):not([inert]):not([aria-hidden])\",\"button:not([disabled]):not([inert]):not([aria-hidden])\",'iframe:not([tabindex^=\"-\"]):not([inert]):not([aria-hidden])','object:not([tabindex^=\"-\"]):not([inert]):not([aria-hidden])','embed:not([tabindex^=\"-\"]):not([inert]):not([aria-hidden])','[contenteditable]:not([tabindex^=\"-\"]):not([inert]):not([aria-hidden])','[tabindex]:not([tabindex^=\"-\"]):not([inert]):not([aria-hidden])'];function pa(i,e){if(e){let t=i.querySelector(`[data-uppy-paneltype=\"${e}\"]`);if(t)return t}return i}n(pa,\"getActiveOverlayEl\");function Jg(i,e){let t=e[0];t&&(t.focus(),i.preventDefault())}n(Jg,\"focusOnFirstNode\");function eS(i,e){let t=e[e.length-1];t&&(t.focus(),i.preventDefault())}n(eS,\"focusOnLastNode\");function tS(i){return i.contains(document.activeElement)}n(tS,\"isFocusInOverlay\");function xd(i,e,t){let r=pa(t,e),s=Qe(r.querySelectorAll(Tu)),o=s.indexOf(document.activeElement);tS(r)?i.shiftKey&&o===0?eS(i,s):!i.shiftKey&&o===s.length-1&&Jg(i,s):Jg(i,s)}n(xd,\"trapFocus\");function Zg(i,e,t){e===null||xd(i,e,t)}n(Zg,\"forInline\");var ey=de(Sh(),1);function Fd(){let i=!1;return(0,ey.default)(n((t,r)=>{let s=pa(t,r),o=s.contains(document.activeElement);if(o&&i)return;let a=s.querySelector(\"[data-uppy-super-focusable]\");if(!(o&&!a))if(a)a.focus({preventScroll:!0}),i=!0;else{let l=s.querySelector(Tu);l?.focus({preventScroll:!0}),i=!1}},\"superFocus\"),260)}n(Fd,\"createSuperFocus\");var xy=de(Qt(),1);function fa(){let i=document.body;return!(!(\"draggable\"in i)||!(\"ondragstart\"in i&&\"ondrop\"in i)||!(\"FormData\"in window)||!(\"FileReader\"in window))}n(fa,\"isDragDropSupported\");var ay=de(Qt(),1),ly=de(iy(),1);function rS(){return u(\"svg\",{\"aria-hidden\":\"true\",focusable:\"false\",width:\"25\",height:\"25\",viewBox:\"0 0 25 25\"},u(\"g\",{fill:\"#686DE0\",fillRule:\"evenodd\"},u(\"path\",{d:\"M5 7v10h15V7H5zm0-1h15a1 1 0 0 1 1 1v10a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1V7a1 1 0 0 1 1-1z\",fillRule:\"nonzero\"}),u(\"path\",{d:\"M6.35 17.172l4.994-5.026a.5.5 0 0 1 .707 0l2.16 2.16 3.505-3.505a.5.5 0 0 1 .707 0l2.336 2.31-.707.72-1.983-1.97-3.505 3.505a.5.5 0 0 1-.707 0l-2.16-2.159-3.938 3.939-1.409.026z\",fillRule:\"nonzero\"}),u(\"circle\",{cx:\"7.5\",cy:\"9.5\",r:\"1.5\"})))}n(rS,\"iconImage\");function sS(){return u(\"svg\",{\"aria-hidden\":\"true\",focusable:\"false\",className:\"uppy-c-icon\",width:\"25\",height:\"25\",viewBox:\"0 0 25 25\"},u(\"path\",{d:\"M9.5 18.64c0 1.14-1.145 2-2.5 2s-2.5-.86-2.5-2c0-1.14 1.145-2 2.5-2 .557 0 1.079.145 1.5.396V7.25a.5.5 0 0 1 .379-.485l9-2.25A.5.5 0 0 1 18.5 5v11.64c0 1.14-1.145 2-2.5 2s-2.5-.86-2.5-2c0-1.14 1.145-2 2.5-2 .557 0 1.079.145 1.5.396V8.67l-8 2v7.97zm8-11v-2l-8 2v2l8-2zM7 19.64c.855 0 1.5-.484 1.5-1s-.645-1-1.5-1-1.5.484-1.5 1 .645 1 1.5 1zm9-2c.855 0 1.5-.484 1.5-1s-.645-1-1.5-1-1.5.484-1.5 1 .645 1 1.5 1z\",fill:\"#049BCF\",fillRule:\"nonzero\"}))}n(sS,\"iconAudio\");function oS(){return u(\"svg\",{\"aria-hidden\":\"true\",focusable:\"false\",className:\"uppy-c-icon\",width:\"25\",height:\"25\",viewBox:\"0 0 25 25\"},u(\"path\",{d:\"M16 11.834l4.486-2.691A1 1 0 0 1 22 10v6a1 1 0 0 1-1.514.857L16 14.167V17a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1V9a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v2.834zM15 9H5v8h10V9zm1 4l5 3v-6l-5 3z\",fill:\"#19AF67\",fillRule:\"nonzero\"}))}n(oS,\"iconVideo\");function nS(){return u(\"svg\",{\"aria-hidden\":\"true\",focusable:\"false\",className:\"uppy-c-icon\",width:\"25\",height:\"25\",viewBox:\"0 0 25 25\"},u(\"path\",{d:\"M9.766 8.295c-.691-1.843-.539-3.401.747-3.726 1.643-.414 2.505.938 2.39 3.299-.039.79-.194 1.662-.537 3.148.324.49.66.967 1.055 1.51.17.231.382.488.629.757 1.866-.128 3.653.114 4.918.655 1.487.635 2.192 1.685 1.614 2.84-.566 1.133-1.839 1.084-3.416.249-1.141-.604-2.457-1.634-3.51-2.707a13.467 13.467 0 0 0-2.238.426c-1.392 4.051-4.534 6.453-5.707 4.572-.986-1.58 1.38-4.206 4.914-5.375.097-.322.185-.656.264-1.001.08-.353.306-1.31.407-1.737-.678-1.059-1.2-2.031-1.53-2.91zm2.098 4.87c-.033.144-.068.287-.104.427l.033-.01-.012.038a14.065 14.065 0 0 1 1.02-.197l-.032-.033.052-.004a7.902 7.902 0 0 1-.208-.271c-.197-.27-.38-.526-.555-.775l-.006.028-.002-.003c-.076.323-.148.632-.186.8zm5.77 2.978c1.143.605 1.832.632 2.054.187.26-.519-.087-1.034-1.113-1.473-.911-.39-2.175-.608-3.55-.608.845.766 1.787 1.459 2.609 1.894zM6.559 18.789c.14.223.693.16 1.425-.413.827-.648 1.61-1.747 2.208-3.206-2.563 1.064-4.102 2.867-3.633 3.62zm5.345-10.97c.088-1.793-.351-2.48-1.146-2.28-.473.119-.564 1.05-.056 2.405.213.566.52 1.188.908 1.859.18-.858.268-1.453.294-1.984z\",fill:\"#E2514A\",fillRule:\"nonzero\"}))}n(nS,\"iconPDF\");function aS(){return u(\"svg\",{\"aria-hidden\":\"true\",focusable:\"false\",width:\"25\",height:\"25\",viewBox:\"0 0 25 25\"},u(\"path\",{d:\"M10.45 2.05h1.05a.5.5 0 0 1 .5.5v.024a.5.5 0 0 1-.5.5h-1.05a.5.5 0 0 1-.5-.5V2.55a.5.5 0 0 1 .5-.5zm2.05 1.024h1.05a.5.5 0 0 1 .5.5V3.6a.5.5 0 0 1-.5.5H12.5a.5.5 0 0 1-.5-.5v-.025a.5.5 0 0 1 .5-.5v-.001zM10.45 0h1.05a.5.5 0 0 1 .5.5v.025a.5.5 0 0 1-.5.5h-1.05a.5.5 0 0 1-.5-.5V.5a.5.5 0 0 1 .5-.5zm2.05 1.025h1.05a.5.5 0 0 1 .5.5v.024a.5.5 0 0 1-.5.5H12.5a.5.5 0 0 1-.5-.5v-.024a.5.5 0 0 1 .5-.5zm-2.05 3.074h1.05a.5.5 0 0 1 .5.5v.025a.5.5 0 0 1-.5.5h-1.05a.5.5 0 0 1-.5-.5v-.025a.5.5 0 0 1 .5-.5zm2.05 1.025h1.05a.5.5 0 0 1 .5.5v.024a.5.5 0 0 1-.5.5H12.5a.5.5 0 0 1-.5-.5v-.024a.5.5 0 0 1 .5-.5zm-2.05 1.024h1.05a.5.5 0 0 1 .5.5v.025a.5.5 0 0 1-.5.5h-1.05a.5.5 0 0 1-.5-.5v-.025a.5.5 0 0 1 .5-.5zm2.05 1.025h1.05a.5.5 0 0 1 .5.5v.025a.5.5 0 0 1-.5.5H12.5a.5.5 0 0 1-.5-.5v-.025a.5.5 0 0 1 .5-.5zm-2.05 1.025h1.05a.5.5 0 0 1 .5.5v.025a.5.5 0 0 1-.5.5h-1.05a.5.5 0 0 1-.5-.5v-.025a.5.5 0 0 1 .5-.5zm2.05 1.025h1.05a.5.5 0 0 1 .5.5v.024a.5.5 0 0 1-.5.5H12.5a.5.5 0 0 1-.5-.5v-.024a.5.5 0 0 1 .5-.5zm-1.656 3.074l-.82 5.946c.52.302 1.174.458 1.976.458.803 0 1.455-.156 1.975-.458l-.82-5.946h-2.311zm0-1.025h2.312c.512 0 .946.378 1.015.885l.82 5.946c.056.412-.142.817-.501 1.026-.686.398-1.515.597-2.49.597-.974 0-1.804-.199-2.49-.597a1.025 1.025 0 0 1-.5-1.026l.819-5.946c.07-.507.503-.885 1.015-.885zm.545 6.6a.5.5 0 0 1-.397-.561l.143-.999a.5.5 0 0 1 .495-.429h.74a.5.5 0 0 1 .495.43l.143.998a.5.5 0 0 1-.397.561c-.404.08-.819.08-1.222 0z\",fill:\"#00C469\",fillRule:\"nonzero\"}))}n(aS,\"iconArchive\");function lS(){return u(\"svg\",{\"aria-hidden\":\"true\",focusable:\"false\",className:\"uppy-c-icon\",width:\"25\",height:\"25\",viewBox:\"0 0 25 25\"},u(\"g\",{fill:\"#A7AFB7\",fillRule:\"nonzero\"},u(\"path\",{d:\"M5.5 22a.5.5 0 0 1-.5-.5v-18a.5.5 0 0 1 .5-.5h10.719a.5.5 0 0 1 .367.16l3.281 3.556a.5.5 0 0 1 .133.339V21.5a.5.5 0 0 1-.5.5h-14zm.5-1h13V7.25L16 4H6v17z\"}),u(\"path\",{d:\"M15 4v3a1 1 0 0 0 1 1h3V7h-3V4h-1z\"})))}n(lS,\"iconFile\");function uS(){return u(\"svg\",{\"aria-hidden\":\"true\",focusable:\"false\",className:\"uppy-c-icon\",width:\"25\",height:\"25\",viewBox:\"0 0 25 25\"},u(\"path\",{d:\"M4.5 7h13a.5.5 0 1 1 0 1h-13a.5.5 0 0 1 0-1zm0 3h15a.5.5 0 1 1 0 1h-15a.5.5 0 1 1 0-1zm0 3h15a.5.5 0 1 1 0 1h-15a.5.5 0 1 1 0-1zm0 3h10a.5.5 0 1 1 0 1h-10a.5.5 0 1 1 0-1z\",fill:\"#5A5E69\",fillRule:\"nonzero\"}))}n(uS,\"iconText\");function Rs(i){let e={color:\"#838999\",icon:lS()};if(!i)return e;let t=i.split(\"/\")[0],r=i.split(\"/\")[1];return t===\"text\"?{color:\"#5a5e69\",icon:uS()}:t===\"image\"?{color:\"#686de0\",icon:rS()}:t===\"audio\"?{color:\"#068dbb\",icon:sS()}:t===\"video\"?{color:\"#19af67\",icon:oS()}:t===\"application\"&&r===\"pdf\"?{color:\"#e25149\",icon:nS()}:t===\"application\"&&[\"zip\",\"x-7z-compressed\",\"x-rar-compressed\",\"x-tar\",\"x-gzip\",\"x-apple-diskimage\"].indexOf(r)!==-1?{color:\"#00C469\",icon:aS()}:e}n(Rs,\"getIconByMime\");function ma(i){let{file:e}=i;if(e.preview)return u(\"img\",{className:\"uppy-Dashboard-Item-previewImg\",alt:e.name,src:e.preview});let{color:t,icon:r}=Rs(e.type);return u(\"div\",{className:\"uppy-Dashboard-Item-previewIconWrap\"},u(\"span\",{className:\"uppy-Dashboard-Item-previewIcon\",style:{color:t}},r),u(\"svg\",{\"aria-hidden\":\"true\",focusable:\"false\",className:\"uppy-Dashboard-Item-previewIconBg\",width:\"58\",height:\"76\",viewBox:\"0 0 58 76\"},u(\"rect\",{fill:\"#FFF\",width:\"58\",height:\"76\",rx:\"3\",fillRule:\"evenodd\"})))}n(ma,\"FilePreview\");var hS=n((i,e)=>(typeof e==\"function\"?e():e).filter(s=>s.id===i)[0].name,\"metaFieldIdToName\");function ga(i){let{file:e,toggleFileCard:t,i18n:r,metaFields:s}=i,{missingRequiredMetaFields:o}=e;if(!(o!=null&&o.length))return null;let a=o.map(l=>hS(l,s)).join(\", \");return u(\"div\",{className:\"uppy-Dashboard-Item-errorMessage\"},r(\"missingRequiredMetaFields\",{smart_count:o.length,fields:a}),\" \",u(\"button\",{type:\"button\",class:\"uppy-u-reset uppy-Dashboard-Item-errorMessageBtn\",onClick:()=>t(!0,e.id)},r(\"editFile\")))}n(ga,\"renderMissingMetaFieldsError\");function Ed(i){let{file:e,i18n:t,toggleFileCard:r,metaFields:s,showLinkToFileUploadResult:o}=i,a=\"rgba(255, 255, 255, 0.5)\",l=e.preview?a:Rs(i.file.type).color;return u(\"div\",{className:\"uppy-Dashboard-Item-previewInnerWrap\",style:{backgroundColor:l}},o&&e.uploadURL&&u(\"a\",{className:\"uppy-Dashboard-Item-previewLink\",href:e.uploadURL,rel:\"noreferrer noopener\",target:\"_blank\",\"aria-label\":e.meta.name},u(\"span\",{hidden:!0},e.meta.name)),u(ma,{file:e}),u(ga,{file:e,i18n:t,toggleFileCard:r,metaFields:s}))}n(Ed,\"FilePreviewAndLink\");function dS(i){if(!i.isUploaded){if(i.error&&!i.hideRetryButton){i.uppy.retryUpload(i.file.id);return}i.resumableUploads&&!i.hidePauseResumeButton?i.uppy.pauseResume(i.file.id):i.individualCancellation&&!i.hideCancelButton&&i.uppy.removeFile(i.file.id)}}n(dS,\"onPauseResumeCancelRetry\");function ry(i){return i.isUploaded?i.i18n(\"uploadComplete\"):i.error?i.i18n(\"retryUpload\"):i.resumableUploads?i.file.isPaused?i.i18n(\"resumeUpload\"):i.i18n(\"pauseUpload\"):i.individualCancellation?i.i18n(\"cancelUpload\"):\"\"}n(ry,\"progressIndicatorTitle\");function Od(i){return u(\"div\",{className:\"uppy-Dashboard-Item-progress\"},u(\"button\",{className:\"uppy-u-reset uppy-c-btn uppy-Dashboard-Item-progressIndicator\",type:\"button\",\"aria-label\":ry(i),title:ry(i),onClick:()=>dS(i)},i.children))}n(Od,\"ProgressIndicatorButton\");function Au(i){let{children:e}=i;return u(\"svg\",{\"aria-hidden\":\"true\",focusable:\"false\",width:\"70\",height:\"70\",viewBox:\"0 0 36 36\",className:\"uppy-c-icon uppy-Dashboard-Item-progressIcon--circle\"},e)}n(Au,\"ProgressCircleContainer\");function Cd(i){let{progress:e}=i,t=2*Math.PI*15;return u(\"g\",null,u(\"circle\",{className:\"uppy-Dashboard-Item-progressIcon--bg\",r:\"15\",cx:\"18\",cy:\"18\",\"stroke-width\":\"2\",fill:\"none\"}),u(\"circle\",{className:\"uppy-Dashboard-Item-progressIcon--progress\",r:\"15\",cx:\"18\",cy:\"18\",transform:\"rotate(-90, 18, 18)\",fill:\"none\",\"stroke-width\":\"2\",\"stroke-dasharray\":t,\"stroke-dashoffset\":t-t/100*e}))}n(Cd,\"ProgressCircle\");function Td(i){if(!i.file.progress.uploadStarted)return null;if(i.isUploaded)return u(\"div\",{className:\"uppy-Dashboard-Item-progress\"},u(\"div\",{className:\"uppy-Dashboard-Item-progressIndicator\"},u(Au,null,u(\"circle\",{r:\"15\",cx:\"18\",cy:\"18\",fill:\"#1bb240\"}),u(\"polygon\",{className:\"uppy-Dashboard-Item-progressIcon--check\",transform:\"translate(2, 3)\",points:\"14 22.5 7 15.2457065 8.99985857 13.1732815 14 18.3547104 22.9729883 9 25 11.1005634\"}))));if(!i.recoveredState)return i.error&&!i.hideRetryButton?u(Od,i,u(\"svg\",{\"aria-hidden\":\"true\",focusable:\"false\",className:\"uppy-c-icon uppy-Dashboard-Item-progressIcon--retry\",width:\"28\",height:\"31\",viewBox:\"0 0 16 19\"},u(\"path\",{d:\"M16 11a8 8 0 1 1-8-8v2a6 6 0 1 0 6 6h2z\"}),u(\"path\",{d:\"M7.9 3H10v2H7.9z\"}),u(\"path\",{d:\"M8.536.5l3.535 3.536-1.414 1.414L7.12 1.914z\"}),u(\"path\",{d:\"M10.657 2.621l1.414 1.415L8.536 7.57 7.12 6.157z\"}))):i.resumableUploads&&!i.hidePauseResumeButton?u(Od,i,u(Au,null,u(Cd,{progress:i.file.progress.percentage}),i.file.isPaused?u(\"polygon\",{className:\"uppy-Dashboard-Item-progressIcon--play\",transform:\"translate(3, 3)\",points:\"12 20 12 10 20 15\"}):u(\"g\",{className:\"uppy-Dashboard-Item-progressIcon--pause\",transform:\"translate(14.5, 13)\"},u(\"rect\",{x:\"0\",y:\"0\",width:\"2\",height:\"10\",rx:\"0\"}),u(\"rect\",{x:\"5\",y:\"0\",width:\"2\",height:\"10\",rx:\"0\"})))):!i.resumableUploads&&i.individualCancellation&&!i.hideCancelButton?u(Od,i,u(Au,null,u(Cd,{progress:i.file.progress.percentage}),u(\"polygon\",{className:\"cancel\",transform:\"translate(2, 2)\",points:\"19.8856516 11.0625 16 14.9481516 12.1019737 11.0625 11.0625 12.1143484 14.9481516 16 11.0625 19.8980263 12.1019737 20.9375 16 17.0518484 19.8856516 20.9375 20.9375 19.8980263 17.0518484 16 20.9375 12\"}))):u(\"div\",{className:\"uppy-Dashboard-Item-progress\"},u(\"div\",{className:\"uppy-Dashboard-Item-progressIndicator\"},u(Au,null,u(Cd,{progress:i.file.progress.percentage}))))}n(Td,\"FileProgress\");var ny=de(oy(),1);var Ad=\"...\";function Ru(i,e){if(e===0)return\"\";if(i.length<=e)return i;if(e<=Ad.length+1)return`${i.slice(0,e-1)}\\u2026`;let t=e-Ad.length,r=Math.ceil(t/2),s=Math.floor(t/2);return i.slice(0,r)+Ad+i.slice(-s)}n(Ru,\"truncateString\");var cS=n(i=>{let{author:e,name:t}=i.file.meta;function r(){return i.isSingleFile&&i.containerHeight>=350?90:i.containerWidth<=352?35:i.containerWidth<=576?60:e?20:30}return n(r,\"getMaxNameLength\"),u(\"div\",{className:\"uppy-Dashboard-Item-name\",title:t},Ru(t,r()))},\"renderFileName\"),pS=n(i=>{let{author:e}=i.file.meta,{providerName:t}=i.file.remote,r=\"\\xB7\";return e?u(\"div\",{className:\"uppy-Dashboard-Item-author\"},u(\"a\",{href:`${e.url}?utm_source=Companion&utm_medium=referral`,target:\"_blank\",rel:\"noopener noreferrer\"},Ru(e.name,13)),t?u(Ht,null,` ${r} `,t,` ${r} `):null):null},\"renderAuthor\"),fS=n(i=>i.file.size&&u(\"div\",{className:\"uppy-Dashboard-Item-statusSize\"},(0,ny.default)(i.file.size)),\"renderFileSize\"),mS=n(i=>i.file.isGhost&&u(\"span\",null,\" \\u2022 \",u(\"button\",{className:\"uppy-u-reset uppy-c-btn uppy-Dashboard-Item-reSelect\",type:\"button\",onClick:i.toggleAddFilesPanel},i.i18n(\"reSelect\"))),\"ReSelectButton\"),gS=n(i=>{let{file:e,onClick:t}=i;return e.error?u(\"button\",{className:\"uppy-u-reset uppy-c-btn uppy-Dashboard-Item-errorDetails\",\"aria-label\":e.error,\"data-microtip-position\":\"bottom\",\"data-microtip-size\":\"medium\",onClick:t,type:\"button\"},\"?\"):null},\"ErrorButton\");function Rd(i){let{file:e}=i;return u(\"div\",{className:\"uppy-Dashboard-Item-fileInfo\",\"data-uppy-file-source\":e.source},u(\"div\",{className:\"uppy-Dashboard-Item-fileName\"},cS(i),u(gS,{file:i.file,onClick:()=>alert(i.file.error)})),u(\"div\",{className:\"uppy-Dashboard-Item-status\"},pS(i),fS(i),mS(i)),u(ga,{file:i.file,i18n:i.i18n,toggleFileCard:i.toggleFileCard,metaFields:i.metaFields}))}n(Rd,\"FileInfo\");function Ud(i,e){return e===void 0&&(e=\"Copy the URL below\"),new Promise(t=>{let r=document.createElement(\"textarea\");r.setAttribute(\"style\",{position:\"fixed\",top:0,left:0,width:\"2em\",height:\"2em\",padding:0,border:\"none\",outline:\"none\",boxShadow:\"none\",background:\"transparent\"}),r.value=i,document.body.appendChild(r),r.select();let s=n(()=>{document.body.removeChild(r),window.prompt(e,i),t()},\"magicCopyFailed\");try{return document.execCommand(\"copy\")?(document.body.removeChild(r),t()):s(\"copy command unavailable\")}catch(o){return document.body.removeChild(r),s(o)}})}n(Ud,\"copyToClipboard\");function yS(i){let{file:e,uploadInProgressOrComplete:t,metaFields:r,canEditFile:s,i18n:o,onClick:a}=i;return!t&&r&&r.length>0||!t&&s(e)?u(\"button\",{className:\"uppy-u-reset uppy-c-btn uppy-Dashboard-Item-action uppy-Dashboard-Item-action--edit\",type:\"button\",\"aria-label\":o(\"editFileWithFilename\",{file:e.meta.name}),title:o(\"editFileWithFilename\",{file:e.meta.name}),onClick:()=>a()},u(\"svg\",{\"aria-hidden\":\"true\",focusable:\"false\",className:\"uppy-c-icon\",width:\"14\",height:\"14\",viewBox:\"0 0 14 14\"},u(\"g\",{fillRule:\"evenodd\"},u(\"path\",{d:\"M1.5 10.793h2.793A1 1 0 0 0 5 10.5L11.5 4a1 1 0 0 0 0-1.414L9.707.793a1 1 0 0 0-1.414 0l-6.5 6.5A1 1 0 0 0 1.5 8v2.793zm1-1V8L9 1.5l1.793 1.793-6.5 6.5H2.5z\",fillRule:\"nonzero\"}),u(\"rect\",{x:\"1\",y:\"12.293\",width:\"11\",height:\"1\",rx:\".5\"}),u(\"path\",{fillRule:\"nonzero\",d:\"M6.793 2.5L9.5 5.207l.707-.707L7.5 1.793z\"})))):null}n(yS,\"EditButton\");function vS(i){let{i18n:e,onClick:t,file:r}=i;return u(\"button\",{className:\"uppy-u-reset uppy-Dashboard-Item-action uppy-Dashboard-Item-action--remove\",type:\"button\",\"aria-label\":e(\"removeFile\",{file:r.meta.name}),title:e(\"removeFile\",{file:r.meta.name}),onClick:()=>t()},u(\"svg\",{\"aria-hidden\":\"true\",focusable:\"false\",className:\"uppy-c-icon\",width:\"18\",height:\"18\",viewBox:\"0 0 18 18\"},u(\"path\",{d:\"M9 0C4.034 0 0 4.034 0 9s4.034 9 9 9 9-4.034 9-9-4.034-9-9-9z\"}),u(\"path\",{fill:\"#FFF\",d:\"M13 12.222l-.778.778L9 9.778 5.778 13 5 12.222 8.222 9 5 5.778 5.778 5 9 8.222 12.222 5l.778.778L9.778 9z\"})))}n(vS,\"RemoveButton\");var bS=n((i,e)=>{Ud(e.file.uploadURL,e.i18n(\"copyLinkToClipboardFallback\")).then(()=>{e.uppy.log(\"Link copied to clipboard.\"),e.uppy.info(e.i18n(\"copyLinkToClipboardSuccess\"),\"info\",3e3)}).catch(e.uppy.log).then(()=>i.target.focus({preventScroll:!0}))},\"copyLinkToClipboard\");function wS(i){let{i18n:e}=i;return u(\"button\",{className:\"uppy-u-reset uppy-Dashboard-Item-action uppy-Dashboard-Item-action--copyLink\",type:\"button\",\"aria-label\":e(\"copyLink\"),title:e(\"copyLink\"),onClick:t=>bS(t,i)},u(\"svg\",{\"aria-hidden\":\"true\",focusable:\"false\",className:\"uppy-c-icon\",width:\"14\",height:\"14\",viewBox:\"0 0 14 12\"},u(\"path\",{d:\"M7.94 7.703a2.613 2.613 0 0 1-.626 2.681l-.852.851a2.597 2.597 0 0 1-1.849.766A2.616 2.616 0 0 1 2.764 7.54l.852-.852a2.596 2.596 0 0 1 2.69-.625L5.267 7.099a1.44 1.44 0 0 0-.833.407l-.852.851a1.458 1.458 0 0 0 1.03 2.486c.39 0 .755-.152 1.03-.426l.852-.852c.231-.231.363-.522.406-.824l1.04-1.038zm4.295-5.937A2.596 2.596 0 0 0 10.387 1c-.698 0-1.355.272-1.849.766l-.852.851a2.614 2.614 0 0 0-.624 2.688l1.036-1.036c.041-.304.173-.6.407-.833l.852-.852c.275-.275.64-.426 1.03-.426a1.458 1.458 0 0 1 1.03 2.486l-.852.851a1.442 1.442 0 0 1-.824.406l-1.04 1.04a2.596 2.596 0 0 0 2.683-.628l.851-.85a2.616 2.616 0 0 0 0-3.697zm-6.88 6.883a.577.577 0 0 0 .82 0l3.474-3.474a.579.579 0 1 0-.819-.82L5.355 7.83a.579.579 0 0 0 0 .819z\"})))}n(wS,\"CopyLinkButton\");function kd(i){let{uppy:e,file:t,uploadInProgressOrComplete:r,canEditFile:s,metaFields:o,showLinkToFileUploadResult:a,showRemoveButton:l,i18n:h,toggleFileCard:p,openFileEditor:d}=i;return u(\"div\",{className:\"uppy-Dashboard-Item-actionWrapper\"},u(yS,{i18n:h,file:t,uploadInProgressOrComplete:r,canEditFile:s,metaFields:o,onClick:n(()=>{o&&o.length>0?p(!0,t.id):d(t)},\"editAction\")}),a&&t.uploadURL?u(wS,{file:t,uppy:e,i18n:h}):null,l?u(vS,{i18n:h,file:t,uppy:e,onClick:()=>i.uppy.removeFile(t.id,\"removed-by-user\")}):null)}n(kd,\"Buttons\");var Ho=class extends we{componentDidMount(){let{file:e}=this.props;e.preview||this.props.handleRequestThumbnail(e)}shouldComponentUpdate(e){return!(0,ly.default)(this.props,e)}componentDidUpdate(){let{file:e}=this.props;e.preview||this.props.handleRequestThumbnail(e)}componentWillUnmount(){let{file:e}=this.props;e.preview||this.props.handleCancelThumbnail(e)}render(){let{file:e}=this.props,t=e.progress.preprocess||e.progress.postprocess,r=e.progress.uploadComplete&&!t&&!e.error,s=e.progress.uploadStarted||t,o=e.progress.uploadStarted&&!e.progress.uploadComplete||t,a=e.error||!1,{isGhost:l}=e,h=(this.props.individualCancellation||!o)&&!r;r&&this.props.showRemoveButtonAfterComplete&&(h=!0);let p=(0,ay.default)({\"uppy-Dashboard-Item\":!0,\"is-inprogress\":o&&!this.props.recoveredState,\"is-processing\":t,\"is-complete\":r,\"is-error\":!!a,\"is-resumable\":this.props.resumableUploads,\"is-noIndividualCancellation\":!this.props.individualCancellation,\"is-ghost\":l});return u(\"div\",{className:p,id:`uppy_${e.id}`,role:this.props.role},u(\"div\",{className:\"uppy-Dashboard-Item-preview\"},u(Ed,{file:e,showLinkToFileUploadResult:this.props.showLinkToFileUploadResult,i18n:this.props.i18n,toggleFileCard:this.props.toggleFileCard,metaFields:this.props.metaFields}),u(Td,{uppy:this.props.uppy,file:e,error:a,isUploaded:r,hideRetryButton:this.props.hideRetryButton,hideCancelButton:this.props.hideCancelButton,hidePauseResumeButton:this.props.hidePauseResumeButton,recoveredState:this.props.recoveredState,showRemoveButtonAfterComplete:this.props.showRemoveButtonAfterComplete,resumableUploads:this.props.resumableUploads,individualCancellation:this.props.individualCancellation,i18n:this.props.i18n})),u(\"div\",{className:\"uppy-Dashboard-Item-fileInfoAndButtons\"},u(Rd,{file:e,id:this.props.id,acquirers:this.props.acquirers,containerWidth:this.props.containerWidth,containerHeight:this.props.containerHeight,i18n:this.props.i18n,toggleAddFilesPanel:this.props.toggleAddFilesPanel,toggleFileCard:this.props.toggleFileCard,metaFields:this.props.metaFields,isSingleFile:this.props.isSingleFile}),u(kd,{file:e,metaFields:this.props.metaFields,showLinkToFileUploadResult:this.props.showLinkToFileUploadResult,showRemoveButton:h,canEditFile:this.props.canEditFile,uploadInProgressOrComplete:s,toggleFileCard:this.props.toggleFileCard,openFileEditor:this.props.openFileEditor,uppy:this.props.uppy,i18n:this.props.i18n})))}};n(Ho,\"FileItem\");function SS(i,e){let t=[],r=[];return i.forEach(s=>{r.length<e?r.push(s):(t.push(r),r=[s])}),r.length&&t.push(r),t}n(SS,\"chunks\");var uy=n(i=>{let{id:e,error:t,i18n:r,uppy:s,files:o,acquirers:a,resumableUploads:l,hideRetryButton:h,hidePauseResumeButton:p,hideCancelButton:d,showLinkToFileUploadResult:f,showRemoveButtonAfterComplete:y,isWide:b,metaFields:S,isSingleFile:E,toggleFileCard:x,handleRequestThumbnail:F,handleCancelThumbnail:U,recoveredState:j,individualCancellation:G,itemsPerRow:J,openFileEditor:B,canEditFile:z,toggleAddFilesPanel:K,containerWidth:oe,containerHeight:Be}=i,Je=J===1?71:200,wt=Ro(()=>{let _e=n((xe,ui)=>o[ui].isGhost-o[xe].isGhost,\"sortByGhostComesFirst\"),ze=Object.keys(o);return j&&ze.sort(_e),SS(ze,J)},[o,J,j]),We=n(_e=>u(\"div\",{class:\"uppy-Dashboard-filesInner\",role:\"presentation\",key:_e[0]},_e.map(ze=>u(Ho,{key:ze,uppy:s,id:e,error:t,i18n:r,acquirers:a,resumableUploads:l,individualCancellation:G,hideRetryButton:h,hidePauseResumeButton:p,hideCancelButton:d,showLinkToFileUploadResult:f,showRemoveButtonAfterComplete:y,isWide:b,metaFields:S,recoveredState:j,isSingleFile:E,containerWidth:oe,containerHeight:Be,toggleFileCard:x,handleRequestThumbnail:F,handleCancelThumbnail:U,role:\"listitem\",openFileEditor:B,canEditFile:z,toggleAddFilesPanel:K,file:o[ze]}))),\"renderRow\");return E?u(\"div\",{class:\"uppy-Dashboard-files\"},We(wt[0])):u(du,{class:\"uppy-Dashboard-files\",role:\"list\",data:wt,renderRow:We,rowHeight:Je})},\"default\");var hy;hy=Symbol.for(\"uppy test: disable unused locale key warning\");var Uu=class extends we{constructor(){super(...arguments),this.triggerFileInputClick=()=>{this.fileInput.click()},this.triggerFolderInputClick=()=>{this.folderInput.click()},this.triggerVideoCameraInputClick=()=>{this.mobileVideoFileInput.click()},this.triggerPhotoCameraInputClick=()=>{this.mobilePhotoFileInput.click()},this.onFileInputChange=e=>{this.props.handleInputChange(e),e.target.value=null},this.renderHiddenInput=(e,t)=>u(\"input\",{className:\"uppy-Dashboard-input\",hidden:!0,\"aria-hidden\":\"true\",tabIndex:-1,webkitdirectory:e,type:\"file\",name:\"files[]\",multiple:this.props.maxNumberOfFiles!==1,onChange:this.onFileInputChange,accept:this.props.allowedFileTypes,ref:t}),this.renderHiddenCameraInput=(e,t,r)=>{let o={photo:\"image/*\",video:\"video/*\"}[e];return u(\"input\",{className:\"uppy-Dashboard-input\",hidden:!0,\"aria-hidden\":\"true\",tabIndex:-1,type:\"file\",name:`camera-${e}`,onChange:this.onFileInputChange,capture:t,accept:o,ref:r})},this.renderMyDeviceAcquirer=()=>u(\"div\",{className:\"uppy-DashboardTab\",role:\"presentation\",\"data-uppy-acquirer-id\":\"MyDevice\"},u(\"button\",{type:\"button\",className:\"uppy-u-reset uppy-c-btn uppy-DashboardTab-btn\",role:\"tab\",tabIndex:0,\"data-uppy-super-focusable\":!0,onClick:this.triggerFileInputClick},u(\"div\",{className:\"uppy-DashboardTab-inner\"},u(\"svg\",{className:\"uppy-DashboardTab-iconMyDevice\",\"aria-hidden\":\"true\",focusable:\"false\",width:\"32\",height:\"32\",viewBox:\"0 0 32 32\"},u(\"path\",{d:\"M8.45 22.087l-1.305-6.674h17.678l-1.572 6.674H8.45zm4.975-12.412l1.083 1.765a.823.823 0 00.715.386h7.951V13.5H8.587V9.675h4.838zM26.043 13.5h-1.195v-2.598c0-.463-.336-.75-.798-.75h-8.356l-1.082-1.766A.823.823 0 0013.897 8H7.728c-.462 0-.815.256-.815.718V13.5h-.956a.97.97 0 00-.746.37.972.972 0 00-.19.81l1.724 8.565c.095.44.484.755.933.755H24c.44 0 .824-.3.929-.727l2.043-8.568a.972.972 0 00-.176-.825.967.967 0 00-.753-.38z\",fill:\"currentcolor\",\"fill-rule\":\"evenodd\"}))),u(\"div\",{className:\"uppy-DashboardTab-name\"},this.props.i18n(\"myDevice\")))),this.renderPhotoCamera=()=>u(\"div\",{className:\"uppy-DashboardTab\",role:\"presentation\",\"data-uppy-acquirer-id\":\"MobilePhotoCamera\"},u(\"button\",{type:\"button\",className:\"uppy-u-reset uppy-c-btn uppy-DashboardTab-btn\",role:\"tab\",tabIndex:0,\"data-uppy-super-focusable\":!0,onClick:this.triggerPhotoCameraInputClick},u(\"div\",{className:\"uppy-DashboardTab-inner\"},u(\"svg\",{\"aria-hidden\":\"true\",focusable:\"false\",width:\"32\",height:\"32\",viewBox:\"0 0 32 32\"},u(\"path\",{d:\"M23.5 9.5c1.417 0 2.5 1.083 2.5 2.5v9.167c0 1.416-1.083 2.5-2.5 2.5h-15c-1.417 0-2.5-1.084-2.5-2.5V12c0-1.417 1.083-2.5 2.5-2.5h2.917l1.416-2.167C13 7.167 13.25 7 13.5 7h5c.25 0 .5.167.667.333L20.583 9.5H23.5zM16 11.417a4.706 4.706 0 00-4.75 4.75 4.704 4.704 0 004.75 4.75 4.703 4.703 0 004.75-4.75c0-2.663-2.09-4.75-4.75-4.75zm0 7.825c-1.744 0-3.076-1.332-3.076-3.074 0-1.745 1.333-3.077 3.076-3.077 1.744 0 3.074 1.333 3.074 3.076s-1.33 3.075-3.074 3.075z\",fill:\"#02B383\",\"fill-rule\":\"nonzero\"}))),u(\"div\",{className:\"uppy-DashboardTab-name\"},this.props.i18n(\"takePictureBtn\")))),this.renderVideoCamera=()=>u(\"div\",{className:\"uppy-DashboardTab\",role:\"presentation\",\"data-uppy-acquirer-id\":\"MobileVideoCamera\"},u(\"button\",{type:\"button\",className:\"uppy-u-reset uppy-c-btn uppy-DashboardTab-btn\",role:\"tab\",tabIndex:0,\"data-uppy-super-focusable\":!0,onClick:this.triggerVideoCameraInputClick},u(\"div\",{className:\"uppy-DashboardTab-inner\"},u(\"svg\",{\"aria-hidden\":\"true\",width:\"32\",height:\"32\",viewBox:\"0 0 32 32\"},u(\"path\",{fill:\"#FF675E\",fillRule:\"nonzero\",d:\"m21.254 14.277 2.941-2.588c.797-.313 1.243.818 1.09 1.554-.01 2.094.02 4.189-.017 6.282-.126.915-1.145 1.08-1.58.34l-2.434-2.142c-.192.287-.504 1.305-.738.468-.104-1.293-.028-2.596-.05-3.894.047-.312.381.823.426 1.069.063-.384.206-.744.362-1.09zm-12.939-3.73c3.858.013 7.717-.025 11.574.02.912.129 1.492 1.237 1.351 2.217-.019 2.412.04 4.83-.03 7.239-.17 1.025-1.166 1.59-2.029 1.429-3.705-.012-7.41.025-11.114-.019-.913-.129-1.492-1.237-1.352-2.217.018-2.404-.036-4.813.029-7.214.136-.82.83-1.473 1.571-1.454z \"}))),u(\"div\",{className:\"uppy-DashboardTab-name\"},this.props.i18n(\"recordVideoBtn\")))),this.renderBrowseButton=(e,t)=>{let r=this.props.acquirers.length;return u(\"button\",{type:\"button\",className:\"uppy-u-reset uppy-c-btn uppy-Dashboard-browse\",onClick:t,\"data-uppy-super-focusable\":r===0},e)},this.renderDropPasteBrowseTagline=e=>{let t=this.renderBrowseButton(this.props.i18n(\"browseFiles\"),this.triggerFileInputClick),r=this.renderBrowseButton(this.props.i18n(\"browseFolders\"),this.triggerFolderInputClick),s=this.props.fileManagerSelectionType,o=s.charAt(0).toUpperCase()+s.slice(1);return u(\"div\",{class:\"uppy-Dashboard-AddFiles-title\"},this.props.disableLocalFiles?this.props.i18n(\"importFiles\"):e>0?this.props.i18nArray(`dropPasteImport${o}`,{browseFiles:t,browseFolders:r,browse:t}):this.props.i18nArray(`dropPaste${o}`,{browseFiles:t,browseFolders:r,browse:t}))},this.renderAcquirer=e=>u(\"div\",{className:\"uppy-DashboardTab\",role:\"presentation\",\"data-uppy-acquirer-id\":e.id},u(\"button\",{type:\"button\",className:\"uppy-u-reset uppy-c-btn uppy-DashboardTab-btn\",role:\"tab\",tabIndex:0,\"data-cy\":e.id,\"aria-controls\":`uppy-DashboardContent-panel--${e.id}`,\"aria-selected\":this.props.activePickerPanel.id===e.id,\"data-uppy-super-focusable\":!0,onClick:()=>this.props.showPanel(e.id)},u(\"div\",{className:\"uppy-DashboardTab-inner\"},e.icon()),u(\"div\",{className:\"uppy-DashboardTab-name\"},e.name))),this.renderAcquirers=e=>{let t=[...e],r=t.splice(e.length-2,e.length);return u(Ht,null,t.map(s=>this.renderAcquirer(s)),u(\"span\",{role:\"presentation\",style:{\"white-space\":\"nowrap\"}},r.map(s=>this.renderAcquirer(s))))},this.renderSourcesList=(e,t)=>{let{showNativePhotoCameraButton:r,showNativeVideoCameraButton:s}=this.props,o=[],a=\"myDevice\";t||(o.push({key:a,elements:this.renderMyDeviceAcquirer()}),r&&o.push({key:\"nativePhotoCameraButton\",elements:this.renderPhotoCamera()}),s&&o.push({key:\"nativePhotoCameraButton\",elements:this.renderVideoCamera()})),o.push(...e.map(f=>({key:f.id,elements:this.renderAcquirer(f)}))),o.length===1&&o[0].key===a&&(o=[]);let h=[...o],p=h.splice(o.length-2,o.length),d=n(f=>f.map(y=>{let{key:b,elements:S}=y;return u(Ht,{key:b},S)}),\"renderList\");return u(Ht,null,this.renderDropPasteBrowseTagline(o.length),u(\"div\",{className:\"uppy-Dashboard-AddFiles-list\",role:\"tablist\"},d(h),u(\"span\",{role:\"presentation\",style:{\"white-space\":\"nowrap\"}},d(p))))}}[hy](){this.props.i18nArray(\"dropPasteBoth\"),this.props.i18nArray(\"dropPasteFiles\"),this.props.i18nArray(\"dropPasteFolders\"),this.props.i18nArray(\"dropPasteImportBoth\"),this.props.i18nArray(\"dropPasteImportFiles\"),this.props.i18nArray(\"dropPasteImportFolders\")}renderPoweredByUppy(){let{i18nArray:e}=this.props,t=u(\"span\",null,u(\"svg\",{\"aria-hidden\":\"true\",focusable:\"false\",className:\"uppy-c-icon uppy-Dashboard-poweredByIcon\",width:\"11\",height:\"11\",viewBox:\"0 0 11 11\"},u(\"path\",{d:\"M7.365 10.5l-.01-4.045h2.612L5.5.806l-4.467 5.65h2.604l.01 4.044h3.718z\",fillRule:\"evenodd\"})),u(\"span\",{className:\"uppy-Dashboard-poweredByUppy\"},\"Uppy\")),r=e(\"poweredBy\",{uppy:t});return u(\"a\",{tabIndex:\"-1\",href:\"https://uppy.io\",rel:\"noreferrer noopener\",target:\"_blank\",className:\"uppy-Dashboard-poweredBy\"},r)}render(){let{showNativePhotoCameraButton:e,showNativeVideoCameraButton:t,nativeCameraFacingMode:r}=this.props;return u(\"div\",{className:\"uppy-Dashboard-AddFiles\"},this.renderHiddenInput(!1,s=>{this.fileInput=s}),this.renderHiddenInput(!0,s=>{this.folderInput=s}),e&&this.renderHiddenCameraInput(\"photo\",r,s=>{this.mobilePhotoFileInput=s}),t&&this.renderHiddenCameraInput(\"video\",r,s=>{this.mobileVideoFileInput=s}),this.renderSourcesList(this.props.acquirers,this.props.disableLocalFiles),u(\"div\",{className:\"uppy-Dashboard-AddFiles-info\"},this.props.note&&u(\"div\",{className:\"uppy-Dashboard-note\"},this.props.note),this.props.proudlyDisplayPoweredByUppy&&this.renderPoweredByUppy(this.props)))}};n(Uu,\"AddFiles\");var ku=Uu;var dy=de(Qt(),1);var PS=n(i=>u(\"div\",{className:(0,dy.default)(\"uppy-Dashboard-AddFilesPanel\",i.className),\"data-uppy-panelType\":\"AddFiles\",\"aria-hidden\":!i.showAddFilesPanel},u(\"div\",{className:\"uppy-DashboardContent-bar\"},u(\"div\",{className:\"uppy-DashboardContent-title\",role:\"heading\",\"aria-level\":\"1\"},i.i18n(\"addingMoreFiles\")),u(\"button\",{className:\"uppy-DashboardContent-back\",type:\"button\",onClick:()=>i.toggleAddFilesPanel(!1)},i.i18n(\"back\"))),u(ku,i)),\"AddFilesPanel\"),cy=PS;var py=de(Qt(),1);function _S(i){let{tagName:e}=i.target;if(e===\"INPUT\"||e===\"TEXTAREA\"){i.stopPropagation();return}i.preventDefault(),i.stopPropagation()}n(_S,\"ignoreEvent\");var Vi=_S;function xS(i){let{activePickerPanel:e,className:t,hideAllPanels:r,i18n:s,state:o,uppy:a}=i;return u(\"div\",{className:(0,py.default)(\"uppy-DashboardContent-panel\",t),role:\"tabpanel\",\"data-uppy-panelType\":\"PickerPanel\",id:`uppy-DashboardContent-panel--${e.id}`,onDragOver:Vi,onDragLeave:Vi,onDrop:Vi,onPaste:Vi},u(\"div\",{className:\"uppy-DashboardContent-bar\"},u(\"div\",{className:\"uppy-DashboardContent-title\",role:\"heading\",\"aria-level\":\"1\"},s(\"importFrom\",{name:e.name})),u(\"button\",{className:\"uppy-DashboardContent-back\",type:\"button\",onClick:r},s(\"cancel\"))),u(\"div\",{className:\"uppy-DashboardContent-panelBody\"},a.getPlugin(e.id).render(o)))}n(xS,\"PickerPanelContent\");var fy=xS;var my=de(Qt(),1);function FS(i){let e=i.files[i.fileCardFor],t=n(()=>{i.uppy.emit(\"file-editor:cancel\",e),i.hideAllPanels()},\"handleCancel\");return u(\"div\",{className:(0,my.default)(\"uppy-DashboardContent-panel\",i.className),role:\"tabpanel\",\"data-uppy-panelType\":\"FileEditor\",id:\"uppy-DashboardContent-panel--editor\"},u(\"div\",{className:\"uppy-DashboardContent-bar\"},u(\"div\",{className:\"uppy-DashboardContent-title\",role:\"heading\",\"aria-level\":\"1\"},i.i18nArray(\"editing\",{file:u(\"span\",{className:\"uppy-DashboardContent-titleFile\"},e.meta?e.meta.name:e.name)})),u(\"button\",{className:\"uppy-DashboardContent-back\",type:\"button\",onClick:t},i.i18n(\"cancel\")),u(\"button\",{className:\"uppy-DashboardContent-save\",type:\"button\",onClick:i.saveFileEditor},i.i18n(\"save\"))),u(\"div\",{className:\"uppy-DashboardContent-panelBody\"},i.editors.map(r=>i.uppy.getPlugin(r.id).render(i.state))))}n(FS,\"EditorPanel\");var gy=FS;var Wi={STATE_ERROR:\"error\",STATE_WAITING:\"waiting\",STATE_PREPROCESSING:\"preprocessing\",STATE_UPLOADING:\"uploading\",STATE_POSTPROCESSING:\"postprocessing\",STATE_COMPLETE:\"complete\",STATE_PAUSED:\"paused\"};function ES(i,e,t,r){if(r===void 0&&(r={}),i)return Wi.STATE_ERROR;if(e)return Wi.STATE_COMPLETE;if(t)return Wi.STATE_PAUSED;let s=Wi.STATE_WAITING,o=Object.keys(r);for(let a=0;a<o.length;a++){let{progress:l}=r[o[a]];if(l.uploadStarted&&!l.uploadComplete)return Wi.STATE_UPLOADING;l.preprocess&&s!==Wi.STATE_UPLOADING&&(s=Wi.STATE_PREPROCESSING),l.postprocess&&s!==Wi.STATE_UPLOADING&&s!==Wi.STATE_PREPROCESSING&&(s=Wi.STATE_POSTPROCESSING)}return s}n(ES,\"getUploadingState\");function OS(i){let{files:e,i18n:t,isAllComplete:r,isAllErrored:s,isAllPaused:o,inProgressNotPausedFiles:a,newFiles:l,processingFiles:h}=i;switch(ES(s,r,o,e)){case\"uploading\":return t(\"uploadingXFiles\",{smart_count:a.length});case\"preprocessing\":case\"postprocessing\":return t(\"processingXFiles\",{smart_count:h.length});case\"paused\":return t(\"uploadPaused\");case\"waiting\":return t(\"xFilesSelected\",{smart_count:l.length});case\"complete\":return t(\"uploadComplete\");case\"error\":return t(\"error\");default:}}n(OS,\"UploadStatus\");function CS(i){let{i18n:e,isAllComplete:t,hideCancelButton:r,maxNumberOfFiles:s,toggleAddFilesPanel:o,uppy:a}=i,{allowNewUpload:l}=i;return l&&s&&(l=i.totalFileCount<i.maxNumberOfFiles),u(\"div\",{className:\"uppy-DashboardContent-bar\"},!t&&!r?u(\"button\",{className:\"uppy-DashboardContent-back\",type:\"button\",onClick:()=>a.cancelAll()},e(\"cancel\")):u(\"div\",null),u(\"div\",{className:\"uppy-DashboardContent-title\",role:\"heading\",\"aria-level\":\"1\"},u(OS,i)),l?u(\"button\",{className:\"uppy-DashboardContent-addMore\",type:\"button\",\"aria-label\":e(\"addMoreFiles\"),title:e(\"addMoreFiles\"),onClick:()=>o(!0)},u(\"svg\",{\"aria-hidden\":\"true\",focusable:\"false\",className:\"uppy-c-icon\",width:\"15\",height:\"15\",viewBox:\"0 0 15 15\"},u(\"path\",{d:\"M8 6.5h6a.5.5 0 0 1 .5.5v.5a.5.5 0 0 1-.5.5H8v6a.5.5 0 0 1-.5.5H7a.5.5 0 0 1-.5-.5V8h-6a.5.5 0 0 1-.5-.5V7a.5.5 0 0 1 .5-.5h6v-6A.5.5 0 0 1 7 0h.5a.5.5 0 0 1 .5.5v6z\"})),u(\"span\",{className:\"uppy-DashboardContent-addMoreCaption\"},e(\"addMore\"))):u(\"div\",null))}n(CS,\"PanelTopBar\");var yy=CS;var vy=de(Qt(),1);function Dd(i){let{computedMetaFields:e,requiredMetaFields:t,updateMeta:r,form:s,formState:o}=i,a={text:\"uppy-u-reset uppy-c-textInput uppy-Dashboard-FileCard-input\"};return e.map(l=>{let h=`uppy-Dashboard-FileCard-input-${l.id}`,p=t.includes(l.id);return u(\"fieldset\",{key:l.id,className:\"uppy-Dashboard-FileCard-fieldset\"},u(\"label\",{className:\"uppy-Dashboard-FileCard-label\",htmlFor:h},l.name),l.render!==void 0?l.render({value:o[l.id],onChange:d=>r(d,l.id),fieldCSSClasses:a,required:p,form:s.id},u):u(\"input\",{className:a.text,id:h,form:s.id,type:l.type||\"text\",required:p,value:o[l.id],placeholder:l.placeholder,onInput:d=>r(d.target.value,l.id),\"data-uppy-super-focusable\":!0}))})}n(Dd,\"RenderMetaFields\");function Id(i){var e;let{files:t,fileCardFor:r,toggleFileCard:s,saveFileCard:o,metaFields:a,requiredMetaFields:l,openFileEditor:h,i18n:p,i18nArray:d,className:f,canEditFile:y}=i,b=n(()=>typeof a==\"function\"?a(t[r]):a,\"getMetaFields\"),S=t[r],E=(e=b())!=null?e:[],x=y(S),F={};E.forEach(K=>{var oe;F[K.id]=(oe=S.meta[K.id])!=null?oe:\"\"});let[U,j]=Ao(F),G=qn(K=>{K.preventDefault(),o(U,r)},[o,U,r]),J=n((K,oe)=>{j({...U,[oe]:K})},\"updateMeta\"),B=n(()=>{s(!1)},\"handleCancel\"),[z]=Ao(()=>{let K=document.createElement(\"form\");return K.setAttribute(\"tabindex\",\"-1\"),K.id=Pt(),K});return Os(()=>(document.body.appendChild(z),z.addEventListener(\"submit\",G),()=>{z.removeEventListener(\"submit\",G),document.body.removeChild(z)}),[z,G]),u(\"div\",{className:(0,vy.default)(\"uppy-Dashboard-FileCard\",f),\"data-uppy-panelType\":\"FileCard\",onDragOver:Vi,onDragLeave:Vi,onDrop:Vi,onPaste:Vi},u(\"div\",{className:\"uppy-DashboardContent-bar\"},u(\"div\",{className:\"uppy-DashboardContent-title\",role:\"heading\",\"aria-level\":\"1\"},d(\"editing\",{file:u(\"span\",{className:\"uppy-DashboardContent-titleFile\"},S.meta?S.meta.name:S.name)})),u(\"button\",{className:\"uppy-DashboardContent-back\",type:\"button\",form:z.id,title:p(\"finishEditingFile\"),onClick:B},p(\"cancel\"))),u(\"div\",{className:\"uppy-Dashboard-FileCard-inner\"},u(\"div\",{className:\"uppy-Dashboard-FileCard-preview\",style:{backgroundColor:Rs(S.type).color}},u(ma,{file:S}),x&&u(\"button\",{type:\"button\",className:\"uppy-u-reset uppy-c-btn uppy-Dashboard-FileCard-edit\",onClick:K=>{G(K),h(S)}},p(\"editFile\"))),u(\"div\",{className:\"uppy-Dashboard-FileCard-info\"},u(Dd,{computedMetaFields:E,requiredMetaFields:l,updateMeta:J,form:z,formState:U})),u(\"div\",{className:\"uppy-Dashboard-FileCard-actions\"},u(\"button\",{className:\"uppy-u-reset uppy-c-btn uppy-c-btn-primary uppy-Dashboard-FileCard-actionsBtn\",type:\"submit\",form:z.id},p(\"saveChanges\")),u(\"button\",{className:\"uppy-u-reset uppy-c-btn uppy-c-btn-link uppy-Dashboard-FileCard-actionsBtn\",type:\"button\",onClick:B,form:z.id},p(\"cancel\")))))}n(Id,\"FileCard\");var wy=de(Qt(),1);var $o=\"uppy-transition-slideDownUp\",by=250,Du=class extends we{constructor(e){super(e),this.state={cachedChildren:null,className:\"\"}}componentWillUpdate(e){let{cachedChildren:t}=this.state,r=ci(e.children)[0];if(t===r)return null;let s={cachedChildren:r};r&&!t&&(s.className=`${$o}-enter`,cancelAnimationFrame(this.animationFrame),clearTimeout(this.leaveTimeout),this.leaveTimeout=void 0,this.animationFrame=requestAnimationFrame(()=>{this.setState({className:`${$o}-enter ${$o}-enter-active`}),this.enterTimeout=setTimeout(()=>{this.setState({className:\"\"})},by)})),t&&!r&&this.leaveTimeout===void 0&&(s.cachedChildren=t,s.className=`${$o}-leave`,cancelAnimationFrame(this.animationFrame),clearTimeout(this.enterTimeout),this.enterTimeout=void 0,this.animationFrame=requestAnimationFrame(()=>{this.setState({className:`${$o}-leave ${$o}-leave-active`}),this.leaveTimeout=setTimeout(()=>{this.setState({cachedChildren:null,className:\"\"})},by)})),this.setState(s)}render(){let{cachedChildren:e,className:t}=this.state;return e?jl(e,{className:(0,wy.default)(t,e.props.className)}):null}};n(Du,\"Slide\");var ya=Du;function Us(){return Us=Object.assign?Object.assign.bind():function(i){for(var e=1;e<arguments.length;e++){var t=arguments[e];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(i[r]=t[r])}return i},Us.apply(this,arguments)}n(Us,\"_extends\");var Sy=900,Py=700,Nd=576,_y=330;function Md(i){let e=i.totalFileCount===0,t=i.totalFileCount===1,r=i.containerWidth>Nd,s=i.containerHeight>_y,o=(0,xy.default)({\"uppy-Dashboard\":!0,\"uppy-Dashboard--isDisabled\":i.disabled,\"uppy-Dashboard--animateOpenClose\":i.animateOpenClose,\"uppy-Dashboard--isClosing\":i.isClosing,\"uppy-Dashboard--isDraggingOver\":i.isDraggingOver,\"uppy-Dashboard--modal\":!i.inline,\"uppy-size--md\":i.containerWidth>Nd,\"uppy-size--lg\":i.containerWidth>Py,\"uppy-size--xl\":i.containerWidth>Sy,\"uppy-size--height-md\":i.containerHeight>_y,\"uppy-Dashboard--isAddFilesPanelVisible\":i.showAddFilesPanel,\"uppy-Dashboard--isInnerWrapVisible\":i.areInsidesReadyToBeVisible,\"uppy-Dashboard--singleFile\":i.singleFileFullScreen&&t&&s}),a=1;i.containerWidth>Sy?a=5:i.containerWidth>Py?a=4:i.containerWidth>Nd&&(a=3);let l=i.showSelectedFiles&&!e,h=i.recoveredState?Object.keys(i.recoveredState.files).length:null,p=i.files?Object.keys(i.files).filter(y=>i.files[y].isGhost).length:null,d=n(()=>p>0?i.i18n(\"recoveredXFiles\",{smart_count:p}):i.i18n(\"recoveredAllFiles\"),\"renderRestoredText\");return u(\"div\",{className:o,\"data-uppy-theme\":i.theme,\"data-uppy-num-acquirers\":i.acquirers.length,\"data-uppy-drag-drop-supported\":!i.disableLocalFiles&&fa(),\"aria-hidden\":i.inline?\"false\":i.isHidden,\"aria-disabled\":i.disabled,\"aria-label\":i.inline?i.i18n(\"dashboardTitle\"):i.i18n(\"dashboardWindowTitle\"),onPaste:i.handlePaste,onDragOver:i.handleDragOver,onDragLeave:i.handleDragLeave,onDrop:i.handleDrop},u(\"div\",{\"aria-hidden\":\"true\",className:\"uppy-Dashboard-overlay\",tabIndex:-1,onClick:i.handleClickOutside}),u(\"div\",{className:\"uppy-Dashboard-inner\",\"aria-modal\":!i.inline&&\"true\",role:!i.inline&&\"dialog\",style:{width:i.inline&&i.width?i.width:\"\",height:i.inline&&i.height?i.height:\"\"}},i.inline?null:u(\"button\",{className:\"uppy-u-reset uppy-Dashboard-close\",type:\"button\",\"aria-label\":i.i18n(\"closeModal\"),title:i.i18n(\"closeModal\"),onClick:i.closeModal},u(\"span\",{\"aria-hidden\":\"true\"},\"\\xD7\")),u(\"div\",{className:\"uppy-Dashboard-innerWrap\"},u(\"div\",{className:\"uppy-Dashboard-dropFilesHereHint\"},i.i18n(\"dropHint\")),l&&u(yy,i),h&&u(\"div\",{className:\"uppy-Dashboard-serviceMsg\"},u(\"svg\",{className:\"uppy-Dashboard-serviceMsg-icon\",\"aria-hidden\":\"true\",focusable:\"false\",width:\"21\",height:\"16\",viewBox:\"0 0 24 19\"},u(\"g\",{transform:\"translate(0 -1)\",fill:\"none\",fillRule:\"evenodd\"},u(\"path\",{d:\"M12.857 1.43l10.234 17.056A1 1 0 0122.234 20H1.766a1 1 0 01-.857-1.514L11.143 1.429a1 1 0 011.714 0z\",fill:\"#FFD300\"}),u(\"path\",{fill:\"#000\",d:\"M11 6h2l-.3 8h-1.4z\"}),u(\"circle\",{fill:\"#000\",cx:\"12\",cy:\"17\",r:\"1\"}))),u(\"strong\",{className:\"uppy-Dashboard-serviceMsg-title\"},i.i18n(\"sessionRestored\")),u(\"div\",{className:\"uppy-Dashboard-serviceMsg-text\"},d())),l?u(uy,{id:i.id,error:i.error,i18n:i.i18n,uppy:i.uppy,files:i.files,acquirers:i.acquirers,resumableUploads:i.resumableUploads,hideRetryButton:i.hideRetryButton,hidePauseResumeButton:i.hidePauseResumeButton,hideCancelButton:i.hideCancelButton,showLinkToFileUploadResult:i.showLinkToFileUploadResult,showRemoveButtonAfterComplete:i.showRemoveButtonAfterComplete,isWide:i.isWide,metaFields:i.metaFields,toggleFileCard:i.toggleFileCard,handleRequestThumbnail:i.handleRequestThumbnail,handleCancelThumbnail:i.handleCancelThumbnail,recoveredState:i.recoveredState,individualCancellation:i.individualCancellation,openFileEditor:i.openFileEditor,canEditFile:i.canEditFile,toggleAddFilesPanel:i.toggleAddFilesPanel,isSingleFile:t,itemsPerRow:a}):u(ku,Us({},i,{isSizeMD:r})),u(ya,null,i.showAddFilesPanel?u(cy,Us({key:\"AddFiles\"},i,{isSizeMD:r})):null),u(ya,null,i.fileCardFor?u(Id,Us({key:\"FileCard\"},i)):null),u(ya,null,i.activePickerPanel?u(fy,Us({key:\"Picker\"},i)):null),u(ya,null,i.showFileEditor?u(gy,Us({key:\"Editor\"},i)):null),u(\"div\",{className:\"uppy-Dashboard-progressindicators\"},i.progressindicators.map(y=>i.uppy.getPlugin(y.id).render(i.state))))))}n(Md,\"Dashboard\");var Fy={strings:{closeModal:\"Close Modal\",addMoreFiles:\"Add more files\",addingMoreFiles:\"Adding more files\",importFrom:\"Import from %{name}\",dashboardWindowTitle:\"Uppy Dashboard Window (Press escape to close)\",dashboardTitle:\"Uppy Dashboard\",copyLinkToClipboardSuccess:\"Link copied to clipboard.\",copyLinkToClipboardFallback:\"Copy the URL below\",copyLink:\"Copy link\",back:\"Back\",removeFile:\"Remove file\",editFile:\"Edit file\",editing:\"Editing %{file}\",error:\"Error\",finishEditingFile:\"Finish editing file\",saveChanges:\"Save changes\",myDevice:\"My Device\",dropHint:\"Drop your files here\",uploadComplete:\"Upload complete\",uploadPaused:\"Upload paused\",resumeUpload:\"Resume upload\",pauseUpload:\"Pause upload\",retryUpload:\"Retry upload\",cancelUpload:\"Cancel upload\",xFilesSelected:{0:\"%{smart_count} file selected\",1:\"%{smart_count} files selected\"},uploadingXFiles:{0:\"Uploading %{smart_count} file\",1:\"Uploading %{smart_count} files\"},processingXFiles:{0:\"Processing %{smart_count} file\",1:\"Processing %{smart_count} files\"},poweredBy:\"Powered by %{uppy}\",addMore:\"Add more\",editFileWithFilename:\"Edit file %{file}\",save:\"Save\",cancel:\"Cancel\",dropPasteFiles:\"Drop files here or %{browseFiles}\",dropPasteFolders:\"Drop files here or %{browseFolders}\",dropPasteBoth:\"Drop files here, %{browseFiles} or %{browseFolders}\",dropPasteImportFiles:\"Drop files here, %{browseFiles} or import from:\",dropPasteImportFolders:\"Drop files here, %{browseFolders} or import from:\",dropPasteImportBoth:\"Drop files here, %{browseFiles}, %{browseFolders} or import from:\",importFiles:\"Import files from:\",browseFiles:\"browse files\",browseFolders:\"browse folders\",recoveredXFiles:{0:\"We could not fully recover 1 file. Please re-select it and resume the upload.\",1:\"We could not fully recover %{smart_count} files. Please re-select them and resume the upload.\"},recoveredAllFiles:\"We restored all files. You can now resume the upload.\",sessionRestored:\"Session restored\",reSelect:\"Re-select\",missingRequiredMetaFields:{0:\"Missing required meta field: %{fields}.\",1:\"Missing required meta fields: %{fields}.\"},takePictureBtn:\"Take Picture\",recordVideoBtn:\"Record Video\"}};function Ae(i,e){if(!Object.prototype.hasOwnProperty.call(i,e))throw new TypeError(\"attempted to use private field on non-instance\");return i}n(Ae,\"_classPrivateFieldLooseBase\");var TS=0;function Ci(i){return\"__private_\"+TS+++\"_\"+i}n(Ci,\"_classPrivateFieldLooseKey\");var AS={version:\"3.7.1\"},Ld=_d.default||_d,Ey=9,RS=27;function Oy(){let i={};return i.promise=new Promise((e,t)=>{i.resolve=e,i.reject=t}),i}n(Oy,\"createPromise\");var ks=Ci(\"disabledNodes\"),Tr=Ci(\"generateLargeThumbnailIfSingleFile\"),va=Ci(\"openFileEditorWhenFilesAdded\"),Ds=Ci(\"attachRenderFunctionToTarget\"),Bd=Ci(\"isTargetSupported\"),zd=Ci(\"getAcquirers\"),jd=Ci(\"getProgressIndicators\"),Ar=Ci(\"getEditors\"),Hd=Ci(\"addSpecifiedPluginsFromOptions\"),$d=Ci(\"autoDiscoverPlugins\"),Is=Ci(\"addSupportedPluginIfNoTarget\"),is=class extends Z{constructor(e,t){var r;super(e,t),r=this,Object.defineProperty(this,ks,{writable:!0,value:null}),this.removeTarget=o=>{let l=this.getPluginState().targets.filter(h=>h.id!==o.id);this.setPluginState({targets:l})},this.addTarget=o=>{let a=o.id||o.constructor.name,l=o.title||a,h=o.type;if(h!==\"acquirer\"&&h!==\"progressindicator\"&&h!==\"editor\"){let y=\"Dashboard: can only be targeted by plugins of types: acquirer, progressindicator, editor\";this.uppy.log(y,\"error\");return}let p={id:a,name:l,type:h},f=this.getPluginState().targets.slice();return f.push(p),this.setPluginState({targets:f}),this.el},this.hideAllPanels=()=>{let o=this.getPluginState(),a={activePickerPanel:!1,showAddFilesPanel:!1,activeOverlayType:null,fileCardFor:null,showFileEditor:!1};o.activePickerPanel===a.activePickerPanel&&o.showAddFilesPanel===a.showAddFilesPanel&&o.showFileEditor===a.showFileEditor&&o.activeOverlayType===a.activeOverlayType||(this.setPluginState(a),this.uppy.emit(\"dashboard:close-panel\",o.activePickerPanel.id))},this.showPanel=o=>{let{targets:a}=this.getPluginState(),l=a.filter(h=>h.type===\"acquirer\"&&h.id===o)[0];this.setPluginState({activePickerPanel:l,activeOverlayType:\"PickerPanel\"}),this.uppy.emit(\"dashboard:show-panel\",o)},this.canEditFile=o=>{let{targets:a}=this.getPluginState();return Ae(this,Ar)[Ar](a).some(h=>this.uppy.getPlugin(h.id).canEditFile(o))},this.openFileEditor=o=>{let{targets:a}=this.getPluginState(),l=Ae(this,Ar)[Ar](a);this.setPluginState({showFileEditor:!0,fileCardFor:o.id||null,activeOverlayType:\"FileEditor\"}),l.forEach(h=>{this.uppy.getPlugin(h.id).selectFile(o)})},this.saveFileEditor=()=>{let{targets:o}=this.getPluginState();Ae(this,Ar)[Ar](o).forEach(l=>{this.uppy.getPlugin(l.id).save()}),this.hideAllPanels()},this.openModal=()=>{let{promise:o,resolve:a}=Oy();if(this.savedScrollPosition=window.pageYOffset,this.savedActiveElement=document.activeElement,this.opts.disablePageScrollWhenModalOpen&&document.body.classList.add(\"uppy-Dashboard-isFixed\"),this.opts.animateOpenClose&&this.getPluginState().isClosing){let l=n(()=>{this.setPluginState({isHidden:!1}),this.el.removeEventListener(\"animationend\",l,!1),a()},\"handler\");this.el.addEventListener(\"animationend\",l,!1)}else this.setPluginState({isHidden:!1}),a();return this.opts.browserBackButtonClose&&this.updateBrowserHistory(),document.addEventListener(\"keydown\",this.handleKeyDownInModal),this.uppy.emit(\"dashboard:modal-open\"),o},this.closeModal=function(o){o===void 0&&(o={});let{manualClose:a=!0}=o,{isHidden:l,isClosing:h}=r.getPluginState();if(l||h)return;let{promise:p,resolve:d}=Oy();if(r.opts.disablePageScrollWhenModalOpen&&document.body.classList.remove(\"uppy-Dashboard-isFixed\"),r.opts.animateOpenClose){r.setPluginState({isClosing:!0});let y=n(()=>{r.setPluginState({isHidden:!0,isClosing:!1}),r.superFocus.cancel(),r.savedActiveElement.focus(),r.el.removeEventListener(\"animationend\",y,!1),d()},\"handler\");r.el.addEventListener(\"animationend\",y,!1)}else r.setPluginState({isHidden:!0}),r.superFocus.cancel(),r.savedActiveElement.focus(),d();if(document.removeEventListener(\"keydown\",r.handleKeyDownInModal),a&&r.opts.browserBackButtonClose){var f;(f=history.state)!=null&&f[r.modalName]&&history.back()}return r.uppy.emit(\"dashboard:modal-closed\"),p},this.isModalOpen=()=>!this.getPluginState().isHidden||!1,this.requestCloseModal=()=>this.opts.onRequestCloseModal?this.opts.onRequestCloseModal():this.closeModal(),this.setDarkModeCapability=o=>{let{capabilities:a}=this.uppy.getState();this.uppy.setState({capabilities:{...a,darkMode:o}})},this.handleSystemDarkModeChange=o=>{let a=o.matches;this.uppy.log(`[Dashboard] Dark mode is ${a?\"on\":\"off\"}`),this.setDarkModeCapability(a)},this.toggleFileCard=(o,a)=>{let l=this.uppy.getFile(a);o?this.uppy.emit(\"dashboard:file-edit-start\",l):this.uppy.emit(\"dashboard:file-edit-complete\",l),this.setPluginState({fileCardFor:o?a:null,activeOverlayType:o?\"FileCard\":null})},this.toggleAddFilesPanel=o=>{this.setPluginState({showAddFilesPanel:o,activeOverlayType:o?\"AddFiles\":null})},this.addFiles=o=>{let a=o.map(l=>({source:this.id,name:l.name,type:l.type,data:l,meta:{relativePath:l.relativePath||l.webkitRelativePath||null}}));try{this.uppy.addFiles(a)}catch(l){this.uppy.log(l)}},this.startListeningToResize=()=>{this.resizeObserver=new ResizeObserver(o=>{let a=o[0],{width:l,height:h}=a.contentRect;this.setPluginState({containerWidth:l,containerHeight:h,areInsidesReadyToBeVisible:!0})}),this.resizeObserver.observe(this.el.querySelector(\".uppy-Dashboard-inner\")),this.makeDashboardInsidesVisibleAnywayTimeout=setTimeout(()=>{let o=this.getPluginState(),a=!this.opts.inline&&o.isHidden;!o.areInsidesReadyToBeVisible&&!a&&(this.uppy.log(\"[Dashboard] resize event didn\\u2019t fire on time: defaulted to mobile layout\",\"warning\"),this.setPluginState({areInsidesReadyToBeVisible:!0}))},1e3)},this.stopListeningToResize=()=>{this.resizeObserver.disconnect(),clearTimeout(this.makeDashboardInsidesVisibleAnywayTimeout)},this.recordIfFocusedOnUppyRecently=o=>{this.el.contains(o.target)?this.ifFocusedOnUppyRecently=!0:(this.ifFocusedOnUppyRecently=!1,this.superFocus.cancel())},this.disableInteractiveElements=o=>{var a;let l=[\"a[href]\",\"input:not([disabled])\",\"select:not([disabled])\",\"textarea:not([disabled])\",\"button:not([disabled])\",'[role=\"button\"]:not([disabled])'],h=(a=Ae(this,ks)[ks])!=null?a:Qe(this.el.querySelectorAll(l)).filter(p=>!p.classList.contains(\"uppy-Dashboard-close\"));for(let p of h)p.tagName===\"A\"?p.setAttribute(\"aria-disabled\",o):p.disabled=o;o?Ae(this,ks)[ks]=h:Ae(this,ks)[ks]=null,this.dashboardIsDisabled=o},this.updateBrowserHistory=()=>{var o;(o=history.state)!=null&&o[this.modalName]||history.pushState({...history.state,[this.modalName]:!0},\"\"),window.addEventListener(\"popstate\",this.handlePopState,!1)},this.handlePopState=o=>{var a;this.isModalOpen()&&(!o.state||!o.state[this.modalName])&&this.closeModal({manualClose:!1}),!this.isModalOpen()&&(a=o.state)!=null&&a[this.modalName]&&history.back()},this.handleKeyDownInModal=o=>{o.keyCode===RS&&this.requestCloseModal(o),o.keyCode===Ey&&xd(o,this.getPluginState().activeOverlayType,this.el)},this.handleClickOutside=()=>{this.opts.closeModalOnClickOutside&&this.requestCloseModal()},this.handlePaste=o=>{this.uppy.iteratePlugins(l=>{l.type===\"acquirer\"&&(l.handleRootPaste==null||l.handleRootPaste(o))});let a=Qe(o.clipboardData.files);a.length>0&&(this.uppy.log(\"[Dashboard] Files pasted\"),this.addFiles(a))},this.handleInputChange=o=>{o.preventDefault();let a=Qe(o.target.files);a.length>0&&(this.uppy.log(\"[Dashboard] Files selected through input\"),this.addFiles(a))},this.handleDragOver=o=>{var a,l;o.preventDefault(),o.stopPropagation();let h=n(()=>{let y=!0;return this.uppy.iteratePlugins(b=>{b.canHandleRootDrop!=null&&b.canHandleRootDrop(o)&&(y=!0)}),y},\"canSomePluginHandleRootDrop\"),p=n(()=>{let{types:y}=o.dataTransfer;return y.some(b=>b===\"Files\")},\"doesEventHaveFiles\"),d=h(o),f=p(o);if(!d&&!f||this.opts.disabled||this.opts.disableLocalFiles&&(f||!d)||!this.uppy.getState().allowNewUpload){o.dataTransfer.dropEffect=\"none\",clearTimeout(this.removeDragOverClassTimeout);return}o.dataTransfer.dropEffect=\"copy\",clearTimeout(this.removeDragOverClassTimeout),this.setPluginState({isDraggingOver:!0}),(a=(l=this.opts).onDragOver)==null||a.call(l,o)},this.handleDragLeave=o=>{var a,l;o.preventDefault(),o.stopPropagation(),clearTimeout(this.removeDragOverClassTimeout),this.removeDragOverClassTimeout=setTimeout(()=>{this.setPluginState({isDraggingOver:!1})},50),(a=(l=this.opts).onDragLeave)==null||a.call(l,o)},this.handleDrop=async o=>{var a,l;o.preventDefault(),o.stopPropagation(),clearTimeout(this.removeDragOverClassTimeout),this.setPluginState({isDraggingOver:!1}),this.uppy.iteratePlugins(f=>{f.type===\"acquirer\"&&(f.handleRootDrop==null||f.handleRootDrop(o))});let h=!1,p=n(f=>{this.uppy.log(f,\"error\"),h||(this.uppy.info(f.message,\"error\"),h=!0)},\"logDropError\");this.uppy.log(\"[Dashboard] Processing dropped files\");let d=await As(o.dataTransfer,{logDropError:p});d.length>0&&(this.uppy.log(\"[Dashboard] Files dropped\"),this.addFiles(d)),(a=(l=this.opts).onDrop)==null||a.call(l,o)},this.handleRequestThumbnail=o=>{this.opts.waitForThumbnailsBeforeUpload||this.uppy.emit(\"thumbnail:request\",o)},this.handleCancelThumbnail=o=>{this.opts.waitForThumbnailsBeforeUpload||this.uppy.emit(\"thumbnail:cancel\",o)},this.handleKeyDownInInline=o=>{o.keyCode===Ey&&Zg(o,this.getPluginState().activeOverlayType,this.el)},this.handlePasteOnBody=o=>{this.el.contains(document.activeElement)&&this.handlePaste(o)},this.handleComplete=o=>{let{failed:a}=o;this.opts.closeAfterFinish&&a.length===0&&this.requestCloseModal()},this.handleCancelRestore=()=>{this.uppy.emit(\"restore-canceled\")},Object.defineProperty(this,Tr,{writable:!0,value:()=>{if(this.opts.disableThumbnailGenerator)return;let o=600,a=this.uppy.getFiles();if(a.length===1){let l=this.uppy.getPlugin(`${this.id}:ThumbnailGenerator`);l?.setOptions({thumbnailWidth:o});let h={...a[0],preview:void 0};l.requestThumbnail(h).then(()=>{l?.setOptions({thumbnailWidth:this.opts.thumbnailWidth})})}}}),Object.defineProperty(this,va,{writable:!0,value:o=>{let a=o[0];this.canEditFile(a)&&this.openFileEditor(a)}}),this.initEvents=()=>{if(this.opts.trigger&&!this.opts.inline){let o=Ou(this.opts.trigger);o?o.forEach(a=>a.addEventListener(\"click\",this.openModal)):this.uppy.log(\"Dashboard modal trigger not found. Make sure `trigger` is set in Dashboard options, unless you are planning to call `dashboard.openModal()` method yourself\",\"warning\")}this.startListeningToResize(),document.addEventListener(\"paste\",this.handlePasteOnBody),this.uppy.on(\"plugin-added\",Ae(this,Is)[Is]),this.uppy.on(\"plugin-remove\",this.removeTarget),this.uppy.on(\"file-added\",this.hideAllPanels),this.uppy.on(\"dashboard:modal-closed\",this.hideAllPanels),this.uppy.on(\"file-editor:complete\",this.hideAllPanels),this.uppy.on(\"complete\",this.handleComplete),this.uppy.on(\"files-added\",Ae(this,Tr)[Tr]),this.uppy.on(\"file-removed\",Ae(this,Tr)[Tr]),document.addEventListener(\"focus\",this.recordIfFocusedOnUppyRecently,!0),document.addEventListener(\"click\",this.recordIfFocusedOnUppyRecently,!0),this.opts.inline&&this.el.addEventListener(\"keydown\",this.handleKeyDownInInline),this.opts.autoOpenFileEditor&&this.uppy.on(\"files-added\",Ae(this,va)[va])},this.removeEvents=()=>{let o=Ou(this.opts.trigger);!this.opts.inline&&o&&o.forEach(a=>a.removeEventListener(\"click\",this.openModal)),this.stopListeningToResize(),document.removeEventListener(\"paste\",this.handlePasteOnBody),window.removeEventListener(\"popstate\",this.handlePopState,!1),this.uppy.off(\"plugin-added\",Ae(this,Is)[Is]),this.uppy.off(\"plugin-remove\",this.removeTarget),this.uppy.off(\"file-added\",this.hideAllPanels),this.uppy.off(\"dashboard:modal-closed\",this.hideAllPanels),this.uppy.off(\"file-editor:complete\",this.hideAllPanels),this.uppy.off(\"complete\",this.handleComplete),this.uppy.off(\"files-added\",Ae(this,Tr)[Tr]),this.uppy.off(\"file-removed\",Ae(this,Tr)[Tr]),document.removeEventListener(\"focus\",this.recordIfFocusedOnUppyRecently),document.removeEventListener(\"click\",this.recordIfFocusedOnUppyRecently),this.opts.inline&&this.el.removeEventListener(\"keydown\",this.handleKeyDownInInline),this.opts.autoOpenFileEditor&&this.uppy.off(\"files-added\",Ae(this,va)[va])},this.superFocusOnEachUpdate=()=>{let o=this.el.contains(document.activeElement),a=document.activeElement===document.body||document.activeElement===null,l=this.uppy.getState().info.length===0,h=!this.opts.inline;l&&(h||o||a&&this.ifFocusedOnUppyRecently)?this.superFocus(this.el,this.getPluginState().activeOverlayType):this.superFocus.cancel()},this.afterUpdate=()=>{if(this.opts.disabled&&!this.dashboardIsDisabled){this.disableInteractiveElements(!0);return}!this.opts.disabled&&this.dashboardIsDisabled&&this.disableInteractiveElements(!1),this.superFocusOnEachUpdate()},this.saveFileCard=(o,a)=>{this.uppy.setFileMeta(a,o),this.toggleFileCard(!1,a)},Object.defineProperty(this,Ds,{writable:!0,value:o=>{let a=this.uppy.getPlugin(o.id);return{...o,icon:a.icon||this.opts.defaultPickerIcon,render:a.render}}}),Object.defineProperty(this,Bd,{writable:!0,value:o=>{let a=this.uppy.getPlugin(o.id);return typeof a.isSupported!=\"function\"?!0:a.isSupported()}}),Object.defineProperty(this,zd,{writable:!0,value:Ld(o=>o.filter(a=>a.type===\"acquirer\"&&Ae(this,Bd)[Bd](a)).map(Ae(this,Ds)[Ds]))}),Object.defineProperty(this,jd,{writable:!0,value:Ld(o=>o.filter(a=>a.type===\"progressindicator\").map(Ae(this,Ds)[Ds]))}),Object.defineProperty(this,Ar,{writable:!0,value:Ld(o=>o.filter(a=>a.type===\"editor\").map(Ae(this,Ds)[Ds]))}),this.render=o=>{let a=this.getPluginState(),{files:l,capabilities:h,allowNewUpload:p}=o,{newFiles:d,uploadStartedFiles:f,completeFiles:y,erroredFiles:b,inProgressFiles:S,inProgressNotPausedFiles:E,processingFiles:x,isUploadStarted:F,isAllComplete:U,isAllErrored:j,isAllPaused:G}=this.uppy.getObjectOfFilesPerState(),J=Ae(this,zd)[zd](a.targets),B=Ae(this,jd)[jd](a.targets),z=Ae(this,Ar)[Ar](a.targets),K;return this.opts.theme===\"auto\"?K=h.darkMode?\"dark\":\"light\":K=this.opts.theme,[\"files\",\"folders\",\"both\"].indexOf(this.opts.fileManagerSelectionType)<0&&(this.opts.fileManagerSelectionType=\"files\",console.warn(`Unsupported option for \"fileManagerSelectionType\". Using default of \"${this.opts.fileManagerSelectionType}\".`)),Md({state:o,isHidden:a.isHidden,files:l,newFiles:d,uploadStartedFiles:f,completeFiles:y,erroredFiles:b,inProgressFiles:S,inProgressNotPausedFiles:E,processingFiles:x,isUploadStarted:F,isAllComplete:U,isAllErrored:j,isAllPaused:G,totalFileCount:Object.keys(l).length,totalProgress:o.totalProgress,allowNewUpload:p,acquirers:J,theme:K,disabled:this.opts.disabled,disableLocalFiles:this.opts.disableLocalFiles,direction:this.opts.direction,activePickerPanel:a.activePickerPanel,showFileEditor:a.showFileEditor,saveFileEditor:this.saveFileEditor,disableInteractiveElements:this.disableInteractiveElements,animateOpenClose:this.opts.animateOpenClose,isClosing:a.isClosing,progressindicators:B,editors:z,autoProceed:this.uppy.opts.autoProceed,id:this.id,closeModal:this.requestCloseModal,handleClickOutside:this.handleClickOutside,handleInputChange:this.handleInputChange,handlePaste:this.handlePaste,inline:this.opts.inline,showPanel:this.showPanel,hideAllPanels:this.hideAllPanels,i18n:this.i18n,i18nArray:this.i18nArray,uppy:this.uppy,note:this.opts.note,recoveredState:o.recoveredState,metaFields:a.metaFields,resumableUploads:h.resumableUploads||!1,individualCancellation:h.individualCancellation,isMobileDevice:h.isMobileDevice,fileCardFor:a.fileCardFor,toggleFileCard:this.toggleFileCard,toggleAddFilesPanel:this.toggleAddFilesPanel,showAddFilesPanel:a.showAddFilesPanel,saveFileCard:this.saveFileCard,openFileEditor:this.openFileEditor,canEditFile:this.canEditFile,width:this.opts.width,height:this.opts.height,showLinkToFileUploadResult:this.opts.showLinkToFileUploadResult,fileManagerSelectionType:this.opts.fileManagerSelectionType,proudlyDisplayPoweredByUppy:this.opts.proudlyDisplayPoweredByUppy,hideCancelButton:this.opts.hideCancelButton,hideRetryButton:this.opts.hideRetryButton,hidePauseResumeButton:this.opts.hidePauseResumeButton,showRemoveButtonAfterComplete:this.opts.showRemoveButtonAfterComplete,containerWidth:a.containerWidth,containerHeight:a.containerHeight,areInsidesReadyToBeVisible:a.areInsidesReadyToBeVisible,isTargetDOMEl:this.isTargetDOMEl,parentElement:this.el,allowedFileTypes:this.uppy.opts.restrictions.allowedFileTypes,maxNumberOfFiles:this.uppy.opts.restrictions.maxNumberOfFiles,requiredMetaFields:this.uppy.opts.restrictions.requiredMetaFields,showSelectedFiles:this.opts.showSelectedFiles,showNativePhotoCameraButton:this.opts.showNativePhotoCameraButton,showNativeVideoCameraButton:this.opts.showNativeVideoCameraButton,nativeCameraFacingMode:this.opts.nativeCameraFacingMode,singleFileFullScreen:this.opts.singleFileFullScreen,handleCancelRestore:this.handleCancelRestore,handleRequestThumbnail:this.handleRequestThumbnail,handleCancelThumbnail:this.handleCancelThumbnail,isDraggingOver:a.isDraggingOver,handleDragOver:this.handleDragOver,handleDragLeave:this.handleDragLeave,handleDrop:this.handleDrop})},Object.defineProperty(this,Hd,{writable:!0,value:()=>{(this.opts.plugins||[]).forEach(a=>{let l=this.uppy.getPlugin(a);l?l.mount(this,l):this.uppy.log(`[Uppy] Dashboard could not find plugin '${a}', make sure to uppy.use() the plugins you are specifying`,\"warning\")})}}),Object.defineProperty(this,$d,{writable:!0,value:()=>{this.uppy.iteratePlugins(Ae(this,Is)[Is])}}),Object.defineProperty(this,Is,{writable:!0,value:o=>{var a;let l=[\"acquirer\",\"editor\"];o&&!((a=o.opts)!=null&&a.target)&&l.includes(o.type)&&(this.getPluginState().targets.some(p=>o.id===p.id)||o.mount(this,o))}}),this.install=()=>{this.setPluginState({isHidden:!0,fileCardFor:null,activeOverlayType:null,showAddFilesPanel:!1,activePickerPanel:!1,showFileEditor:!1,metaFields:this.opts.metaFields,targets:[],areInsidesReadyToBeVisible:!1,isDraggingOver:!1});let{inline:o,closeAfterFinish:a}=this.opts;if(o&&a)throw new Error(\"[Dashboard] `closeAfterFinish: true` cannot be used on an inline Dashboard, because an inline Dashboard cannot be closed at all. Either set `inline: false`, or disable the `closeAfterFinish` option.\");let{allowMultipleUploads:l,allowMultipleUploadBatches:h}=this.uppy.opts;(l||h)&&a&&this.uppy.log(\"[Dashboard] When using `closeAfterFinish`, we recommended setting the `allowMultipleUploadBatches` option to `false` in the Uppy constructor. See https://uppy.io/docs/uppy/#allowMultipleUploads-true\",\"warning\");let{target:p}=this.opts;p&&this.mount(p,this),this.opts.disableStatusBar||this.uppy.use($i,{id:`${this.id}:StatusBar`,target:this,hideUploadButton:this.opts.hideUploadButton,hideRetryButton:this.opts.hideRetryButton,hidePauseResumeButton:this.opts.hidePauseResumeButton,hideCancelButton:this.opts.hideCancelButton,showProgressDetails:this.opts.showProgressDetails,hideAfterFinish:this.opts.hideProgressAfterFinish,locale:this.opts.locale,doneButtonHandler:this.opts.doneButtonHandler}),this.opts.disableInformer||this.uppy.use(qi,{id:`${this.id}:Informer`,target:this}),this.opts.disableThumbnailGenerator||this.uppy.use(Cr,{id:`${this.id}:ThumbnailGenerator`,thumbnailWidth:this.opts.thumbnailWidth,thumbnailHeight:this.opts.thumbnailHeight,thumbnailType:this.opts.thumbnailType,waitForThumbnailsBeforeUpload:this.opts.waitForThumbnailsBeforeUpload,lazy:!this.opts.waitForThumbnailsBeforeUpload}),this.darkModeMediaQuery=typeof window<\"u\"&&window.matchMedia?window.matchMedia(\"(prefers-color-scheme: dark)\"):null;let d=this.darkModeMediaQuery?this.darkModeMediaQuery.matches:!1;this.uppy.log(`[Dashboard] Dark mode is ${d?\"on\":\"off\"}`),this.setDarkModeCapability(d),this.opts.theme===\"auto\"&&this.darkModeMediaQuery.addListener(this.handleSystemDarkModeChange),Ae(this,Hd)[Hd](),Ae(this,$d)[$d](),this.initEvents()},this.uninstall=()=>{if(!this.opts.disableInformer){let a=this.uppy.getPlugin(`${this.id}:Informer`);a&&this.uppy.removePlugin(a)}if(!this.opts.disableStatusBar){let a=this.uppy.getPlugin(`${this.id}:StatusBar`);a&&this.uppy.removePlugin(a)}if(!this.opts.disableThumbnailGenerator){let a=this.uppy.getPlugin(`${this.id}:ThumbnailGenerator`);a&&this.uppy.removePlugin(a)}(this.opts.plugins||[]).forEach(a=>{let l=this.uppy.getPlugin(a);l&&l.unmount()}),this.opts.theme===\"auto\"&&this.darkModeMediaQuery.removeListener(this.handleSystemDarkModeChange),this.opts.disablePageScrollWhenModalOpen&&document.body.classList.remove(\"uppy-Dashboard-isFixed\"),this.unmount(),this.removeEvents()},this.id=this.opts.id||\"Dashboard\",this.title=\"Dashboard\",this.type=\"orchestrator\",this.modalName=`uppy-Dashboard-${Pt()}`,this.defaultLocale=Fy;let s={target:\"body\",metaFields:[],trigger:null,inline:!1,width:750,height:550,thumbnailWidth:280,thumbnailType:\"image/jpeg\",waitForThumbnailsBeforeUpload:!1,defaultPickerIcon:ko,showLinkToFileUploadResult:!1,showProgressDetails:!1,hideUploadButton:!1,hideCancelButton:!1,hideRetryButton:!1,hidePauseResumeButton:!1,hideProgressAfterFinish:!1,doneButtonHandler:()=>{this.uppy.clearUploadedFiles(),this.requestCloseModal()},note:null,closeModalOnClickOutside:!1,closeAfterFinish:!1,singleFileFullScreen:!0,disableStatusBar:!1,disableInformer:!1,disableThumbnailGenerator:!1,disablePageScrollWhenModalOpen:!0,animateOpenClose:!0,fileManagerSelectionType:\"files\",proudlyDisplayPoweredByUppy:!0,onRequestCloseModal:()=>this.closeModal(),showSelectedFiles:!0,showRemoveButtonAfterComplete:!1,browserBackButtonClose:!1,showNativePhotoCameraButton:!1,showNativeVideoCameraButton:!1,theme:\"light\",autoOpenFileEditor:!1,disabled:!1,disableLocalFiles:!1};this.opts={...s,...t},this.i18nInit(),this.superFocus=Fd(),this.ifFocusedOnUppyRecently=!1,this.makeDashboardInsidesVisibleAnywayTimeout=null,this.removeDragOverClassTimeout=null}};n(is,\"Dashboard\");is.VERSION=AS.version;var Cy={strings:{dropHereOr:\"Drop here or %{browse}\",browse:\"browse\"}};var US={version:\"3.0.3\"},Gi=class extends Z{constructor(e,t){super(e,t),this.handleDrop=async s=>{var o,a;s.preventDefault(),s.stopPropagation(),clearTimeout(this.removeDragOverClassTimeout),this.setPluginState({isDraggingOver:!1});let l=n(p=>{this.uppy.log(p,\"error\")},\"logDropError\"),h=await As(s.dataTransfer,{logDropError:l});h.length>0&&(this.uppy.log(\"[DragDrop] Files dropped\"),this.addFiles(h)),(o=(a=this.opts).onDrop)==null||o.call(a,s)},this.type=\"acquirer\",this.id=this.opts.id||\"DragDrop\",this.title=\"Drag & Drop\",this.defaultLocale=Cy;let r={target:null,inputName:\"files[]\",width:\"100%\",height:\"100%\",note:null};this.opts={...r,...t},this.i18nInit(),this.isDragDropSupported=fa(),this.removeDragOverClassTimeout=null,this.onInputChange=this.onInputChange.bind(this),this.handleDragOver=this.handleDragOver.bind(this),this.handleDragLeave=this.handleDragLeave.bind(this),this.handleDrop=this.handleDrop.bind(this),this.addFiles=this.addFiles.bind(this),this.render=this.render.bind(this)}addFiles(e){let t=e.map(r=>({source:this.id,name:r.name,type:r.type,data:r,meta:{relativePath:r.relativePath||null}}));try{this.uppy.addFiles(t)}catch(r){this.uppy.log(r)}}onInputChange(e){let t=Qe(e.target.files);t.length>0&&(this.uppy.log(\"[DragDrop] Files selected through input\"),this.addFiles(t)),e.target.value=null}handleDragOver(e){var t,r;e.preventDefault(),e.stopPropagation();let{types:s}=e.dataTransfer,o=s.some(l=>l===\"Files\"),{allowNewUpload:a}=this.uppy.getState();if(!o||!a){e.dataTransfer.dropEffect=\"none\",clearTimeout(this.removeDragOverClassTimeout);return}e.dataTransfer.dropEffect=\"copy\",clearTimeout(this.removeDragOverClassTimeout),this.setPluginState({isDraggingOver:!0}),(t=(r=this.opts).onDragOver)==null||t.call(r,e)}handleDragLeave(e){var t,r;e.preventDefault(),e.stopPropagation(),clearTimeout(this.removeDragOverClassTimeout),this.removeDragOverClassTimeout=setTimeout(()=>{this.setPluginState({isDraggingOver:!1})},50),(t=(r=this.opts).onDragLeave)==null||t.call(r,e)}renderHiddenFileInput(){let{restrictions:e}=this.uppy.opts;return u(\"input\",{className:\"uppy-DragDrop-input\",type:\"file\",hidden:!0,ref:t=>{this.fileInputRef=t},name:this.opts.inputName,multiple:e.maxNumberOfFiles!==1,accept:e.allowedFileTypes,onChange:this.onInputChange})}static renderArrowSvg(){return u(\"svg\",{\"aria-hidden\":\"true\",focusable:\"false\",className:\"uppy-c-icon uppy-DragDrop-arrow\",width:\"16\",height:\"16\",viewBox:\"0 0 16 16\"},u(\"path\",{d:\"M11 10V0H5v10H2l6 6 6-6h-3zm0 0\",fillRule:\"evenodd\"}))}renderLabel(){return u(\"div\",{className:\"uppy-DragDrop-label\"},this.i18nArray(\"dropHereOr\",{browse:u(\"span\",{className:\"uppy-DragDrop-browse\"},this.i18n(\"browse\"))}))}renderNote(){return u(\"span\",{className:\"uppy-DragDrop-note\"},this.opts.note)}render(){let e=`uppy-u-reset\n      uppy-DragDrop-container\n      ${this.isDragDropSupported?\"uppy-DragDrop--isDragDropSupported\":\"\"}\n      ${this.getPluginState().isDraggingOver?\"uppy-DragDrop--isDraggingOver\":\"\"}\n    `,t={width:this.opts.width,height:this.opts.height};return u(\"button\",{type:\"button\",className:e,style:t,onClick:()=>this.fileInputRef.click(),onDragOver:this.handleDragOver,onDragLeave:this.handleDragLeave,onDrop:this.handleDrop},this.renderHiddenFileInput(),u(\"div\",{className:\"uppy-DragDrop-inner\"},Gi.renderArrowSvg(),this.renderLabel(),this.renderNote()))}install(){let{target:e}=this.opts;this.setPluginState({isDraggingOver:!1}),e&&this.mount(e,this)}uninstall(){this.unmount()}};n(Gi,\"DragDrop\");Gi.VERSION=US.version;var kS={version:\"2.0.2\"};function qd(i){var e,t;return(e=(t=i.dataTransfer.types)==null?void 0:t.some(r=>r===\"Files\"))!=null?e:!1}n(qd,\"isFileTransfer\");var Ns=class extends ve{constructor(e,t){super(e,t),this.addFiles=s=>{let o=s.map(a=>({source:this.id,name:a.name,type:a.type,data:a,meta:{relativePath:a.relativePath||null}}));try{this.uppy.addFiles(o)}catch(a){this.uppy.log(a)}},this.handleDrop=async s=>{var o,a;if(!qd(s))return;s.preventDefault(),s.stopPropagation(),clearTimeout(this.removeDragOverClassTimeout),s.currentTarget.classList.remove(\"uppy-is-drag-over\"),this.setPluginState({isDraggingOver:!1}),this.uppy.iteratePlugins(d=>{d.type===\"acquirer\"&&(d.handleRootDrop==null||d.handleRootDrop(s))});let l=!1,h=n(d=>{this.uppy.log(d,\"error\"),l||(this.uppy.info(d.message,\"error\"),l=!0)},\"logDropError\"),p=await As(s.dataTransfer,{logDropError:h});p.length>0&&(this.uppy.log(\"[DropTarget] Files were dropped\"),this.addFiles(p)),(o=(a=this.opts).onDrop)==null||o.call(a,s)},this.handleDragOver=s=>{var o,a;qd(s)&&(s.preventDefault(),s.stopPropagation(),s.dataTransfer.dropEffect=\"copy\",clearTimeout(this.removeDragOverClassTimeout),s.currentTarget.classList.add(\"uppy-is-drag-over\"),this.setPluginState({isDraggingOver:!0}),(o=(a=this.opts).onDragOver)==null||o.call(a,s))},this.handleDragLeave=s=>{var o,a;if(!qd(s))return;s.preventDefault(),s.stopPropagation();let{currentTarget:l}=s;clearTimeout(this.removeDragOverClassTimeout),this.removeDragOverClassTimeout=setTimeout(()=>{l.classList.remove(\"uppy-is-drag-over\"),this.setPluginState({isDraggingOver:!1})},50),(o=(a=this.opts).onDragLeave)==null||o.call(a,s)},this.addListeners=()=>{let{target:s}=this.opts;if(s instanceof Element?this.nodes=[s]:typeof s==\"string\"&&(this.nodes=Qe(document.querySelectorAll(s))),!this.nodes&&!this.nodes.length>0)throw new Error(`\"${s}\" does not match any HTML elements`);this.nodes.forEach(o=>{o.addEventListener(\"dragover\",this.handleDragOver,!1),o.addEventListener(\"dragleave\",this.handleDragLeave,!1),o.addEventListener(\"drop\",this.handleDrop,!1)})},this.removeListeners=()=>{this.nodes&&this.nodes.forEach(s=>{s.removeEventListener(\"dragover\",this.handleDragOver,!1),s.removeEventListener(\"dragleave\",this.handleDragLeave,!1),s.removeEventListener(\"drop\",this.handleDrop,!1)})},this.type=\"acquirer\",this.id=this.opts.id||\"DropTarget\",this.title=\"Drop Target\";let r={target:null};this.opts={...r,...t},this.removeDragOverClassTimeout=null}install(){this.setPluginState({isDraggingOver:!1}),this.addListeners()}uninstall(){this.removeListeners()}};n(Ns,\"DropTarget\");Ns.VERSION=kS.version;var Ty={strings:{chooseFiles:\"Choose files\"}};var DS={version:\"3.0.4\"},rs=class extends Z{constructor(e,t){super(e,t),this.id=this.opts.id||\"FileInput\",this.title=\"File Input\",this.type=\"acquirer\",this.defaultLocale=Ty;let r={target:null,pretty:!0,inputName:\"files[]\"};this.opts={...r,...t},this.i18nInit(),this.render=this.render.bind(this),this.handleInputChange=this.handleInputChange.bind(this),this.handleClick=this.handleClick.bind(this)}addFiles(e){let t=e.map(r=>({source:this.id,name:r.name,type:r.type,data:r}));try{this.uppy.addFiles(t)}catch(r){this.uppy.log(r)}}handleInputChange(e){this.uppy.log(\"[FileInput] Something selected through input...\");let t=Qe(e.target.files);this.addFiles(t),e.target.value=null}handleClick(){this.input.click()}render(){let e={width:\"0.1px\",height:\"0.1px\",opacity:0,overflow:\"hidden\",position:\"absolute\",zIndex:-1},{restrictions:t}=this.uppy.opts,r=t.allowedFileTypes?t.allowedFileTypes.join(\",\"):null;return u(\"div\",{className:\"uppy-FileInput-container\"},u(\"input\",{className:\"uppy-FileInput-input\",style:this.opts.pretty&&e,type:\"file\",name:this.opts.inputName,onChange:this.handleInputChange,multiple:t.maxNumberOfFiles!==1,accept:r,ref:s=>{this.input=s}}),this.opts.pretty&&u(\"button\",{className:\"uppy-FileInput-btn\",type:\"button\",onClick:this.handleClick},this.i18n(\"chooseFiles\")))}install(){let{target:e}=this.opts;e&&this.mount(e,this)}uninstall(){this.unmount()}};n(rs,\"FileInput\");rs.VERSION=DS.version;var Iy=de(Ay(),1);function IS(i,e){let t=i.width/e.width,r=i.height/e.height,s=Math.min(t,r),o=e.width*s,a=e.height*s,l=(i.width-o)/2,h=(i.height-a)/2;return{width:o,height:a,left:l,top:h}}n(IS,\"getCanvasDataThatFitsPerfectlyIntoContainer\");var Ry=IS;function NS(i){return i*(Math.PI/180)}n(NS,\"toRadians\");function MS(i,e,t){let r=Math.abs(NS(t));return Math.max((Math.sin(r)*i+Math.cos(r)*e)/e,(Math.sin(r)*e+Math.cos(r)*i)/i)}n(MS,\"getScaleFactorThatRemovesDarkCorners\");var Uy=MS;function LS(i,e,t){return e.left<i.left?{left:i.left,width:t.width}:e.top<i.top?{top:i.top,height:t.height}:e.left+e.width>i.left+i.width?{left:i.left+i.width-t.width,width:t.width}:e.top+e.height>i.top+i.height?{top:i.top+i.height-t.height,height:t.height}:null}n(LS,\"limitCropboxMovementOnMove\");var ky=LS;function BS(i,e,t){return e.left<i.left?{left:i.left,width:t.left+t.width-i.left}:e.top<i.top?{top:i.top,height:t.top+t.height-i.top}:e.left+e.width>i.left+i.width?{left:t.left,width:i.left+i.width-t.left}:e.top+e.height>i.top+i.height?{top:t.top,height:i.top+i.height-t.top}:null}n(BS,\"limitCropboxMovementOnResize\");var Dy=BS;var qo=class extends we{constructor(e){super(e),this.onRotate90Deg=()=>{let{angle90Deg:t}=this.state,r=t-90;this.setState({angle90Deg:r,angleGranular:0}),this.cropper.scale(1),this.cropper.rotateTo(r);let s=this.cropper.getCanvasData(),o=this.cropper.getContainerData(),a=Ry(o,s);this.cropper.setCanvasData(a),this.cropper.setCropBoxData(a)},this.onRotateGranular=t=>{let r=Number(t.target.value);this.setState({angleGranular:r});let{angle90Deg:s}=this.state,o=s+r;this.cropper.rotateTo(o);let a=this.cropper.getImageData(),l=Uy(a.naturalWidth,a.naturalHeight,r),h=this.cropper.getImageData().scaleX<0?-l:l;this.cropper.scale(h,l)},this.state={angle90Deg:0,angleGranular:0,prevCropboxData:null},this.storePrevCropboxData=this.storePrevCropboxData.bind(this),this.limitCropboxMovement=this.limitCropboxMovement.bind(this)}componentDidMount(){let{opts:e,storeCropperInstance:t}=this.props;this.cropper=new Iy.default(this.imgElement,e.cropperOptions),this.imgElement.addEventListener(\"cropstart\",this.storePrevCropboxData),this.imgElement.addEventListener(\"cropend\",this.limitCropboxMovement),t(this.cropper)}componentWillUnmount(){this.cropper.destroy(),this.imgElement.removeEventListener(\"cropstart\",this.storePrevCropboxData),this.imgElement.removeEventListener(\"cropend\",this.limitCropboxMovement)}storePrevCropboxData(){this.setState({prevCropboxData:this.cropper.getCropBoxData()})}limitCropboxMovement(e){let t=this.cropper.getCanvasData(),r=this.cropper.getCropBoxData(),{prevCropboxData:s}=this.state;if(e.detail.action===\"all\"){let o=ky(t,r,s);o&&this.cropper.setCropBoxData(o)}else{let o=Dy(t,r,s);o&&this.cropper.setCropBoxData(o)}}renderGranularRotate(){let{i18n:e}=this.props,{angleGranular:t}=this.state;return u(\"label\",{role:\"tooltip\",\"aria-label\":`${t}\\xBA`,\"data-microtip-position\":\"top\",className:\"uppy-ImageCropper-rangeWrapper\"},u(\"input\",{className:\"uppy-ImageCropper-range uppy-u-reset\",type:\"range\",onInput:this.onRotateGranular,onChange:this.onRotateGranular,value:t,min:\"-45\",max:\"45\",\"aria-label\":e(\"rotate\")}))}renderRevert(){let{i18n:e}=this.props;return u(\"label\",{role:\"tooltip\",\"aria-label\":e(\"revert\"),\"data-microtip-position\":\"top\"},u(\"button\",{type:\"button\",className:\"uppy-u-reset uppy-c-btn\",onClick:()=>{this.cropper.reset(),this.cropper.setAspectRatio(0),this.setState({angle90Deg:0,angleGranular:0})}},u(\"svg\",{\"aria-hidden\":\"true\",className:\"uppy-c-icon\",width:\"24\",height:\"24\",viewBox:\"0 0 24 24\"},u(\"path\",{d:\"M0 0h24v24H0z\",fill:\"none\"}),u(\"path\",{d:\"M13 3c-4.97 0-9 4.03-9 9H1l3.89 3.89.07.14L9 12H6c0-3.87 3.13-7 7-7s7 3.13 7 7-3.13 7-7 7c-1.93 0-3.68-.79-4.94-2.06l-1.42 1.42C8.27 19.99 10.51 21 13 21c4.97 0 9-4.03 9-9s-4.03-9-9-9zm-1 5v5l4.28 2.54.72-1.21-3.5-2.08V8H12z\"}))))}renderRotate(){let{i18n:e}=this.props;return u(\"label\",{role:\"tooltip\",\"aria-label\":e(\"rotate\"),\"data-microtip-position\":\"top\"},u(\"button\",{type:\"button\",className:\"uppy-u-reset uppy-c-btn\",onClick:this.onRotate90Deg},u(\"svg\",{\"aria-hidden\":\"true\",className:\"uppy-c-icon\",width:\"24\",height:\"24\",viewBox:\"0 0 24 24\"},u(\"path\",{d:\"M0 0h24v24H0V0zm0 0h24v24H0V0z\",fill:\"none\"}),u(\"path\",{d:\"M14 10a2 2 0 012 2v7a2 2 0 01-2 2H6a2 2 0 01-2-2v-7a2 2 0 012-2h8zm0 1.75H6a.25.25 0 00-.243.193L5.75 12v7a.25.25 0 00.193.243L6 19.25h8a.25.25 0 00.243-.193L14.25 19v-7a.25.25 0 00-.193-.243L14 11.75zM12 .76V4c2.3 0 4.61.88 6.36 2.64a8.95 8.95 0 012.634 6.025L21 13a1 1 0 01-1.993.117L19 13h-.003a6.979 6.979 0 00-2.047-4.95 6.97 6.97 0 00-4.652-2.044L12 6v3.24L7.76 5 12 .76z\"}))))}renderFlip(){let{i18n:e}=this.props;return u(\"label\",{role:\"tooltip\",\"aria-label\":e(\"flipHorizontal\"),\"data-microtip-position\":\"top\"},u(\"button\",{type:\"button\",className:\"uppy-u-reset uppy-c-btn\",onClick:()=>this.cropper.scaleX(-this.cropper.getData().scaleX||-1)},u(\"svg\",{\"aria-hidden\":\"true\",className:\"uppy-c-icon\",width:\"24\",height:\"24\",viewBox:\"0 0 24 24\"},u(\"path\",{d:\"M0 0h24v24H0z\",fill:\"none\"}),u(\"path\",{d:\"M15 21h2v-2h-2v2zm4-12h2V7h-2v2zM3 5v14c0 1.1.9 2 2 2h4v-2H5V5h4V3H5c-1.1 0-2 .9-2 2zm16-2v2h2c0-1.1-.9-2-2-2zm-8 20h2V1h-2v22zm8-6h2v-2h-2v2zM15 5h2V3h-2v2zm4 8h2v-2h-2v2zm0 8c1.1 0 2-.9 2-2h-2v2z\"}))))}renderZoomIn(){let{i18n:e}=this.props;return u(\"label\",{role:\"tooltip\",\"aria-label\":e(\"zoomIn\"),\"data-microtip-position\":\"top\"},u(\"button\",{type:\"button\",className:\"uppy-u-reset uppy-c-btn\",onClick:()=>this.cropper.zoom(.1)},u(\"svg\",{\"aria-hidden\":\"true\",className:\"uppy-c-icon\",height:\"24\",viewBox:\"0 0 24 24\",width:\"24\"},u(\"path\",{d:\"M0 0h24v24H0V0z\",fill:\"none\"}),u(\"path\",{d:\"M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z\"}),u(\"path\",{d:\"M12 10h-2v2H9v-2H7V9h2V7h1v2h2v1z\"}))))}renderZoomOut(){let{i18n:e}=this.props;return u(\"label\",{role:\"tooltip\",\"aria-label\":e(\"zoomOut\"),\"data-microtip-position\":\"top\"},u(\"button\",{type:\"button\",className:\"uppy-u-reset uppy-c-btn\",onClick:()=>this.cropper.zoom(-.1)},u(\"svg\",{\"aria-hidden\":\"true\",className:\"uppy-c-icon\",width:\"24\",height:\"24\",viewBox:\"0 0 24 24\"},u(\"path\",{d:\"M0 0h24v24H0V0z\",fill:\"none\"}),u(\"path\",{d:\"M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14zM7 9h5v1H7z\"}))))}renderCropSquare(){let{i18n:e}=this.props;return u(\"label\",{role:\"tooltip\",\"aria-label\":e(\"aspectRatioSquare\"),\"data-microtip-position\":\"top\"},u(\"button\",{type:\"button\",className:\"uppy-u-reset uppy-c-btn\",onClick:()=>this.cropper.setAspectRatio(1)},u(\"svg\",{\"aria-hidden\":\"true\",className:\"uppy-c-icon\",width:\"24\",height:\"24\",viewBox:\"0 0 24 24\"},u(\"path\",{d:\"M0 0h24v24H0z\",fill:\"none\"}),u(\"path\",{d:\"M19 5v14H5V5h14m0-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2z\"}))))}renderCropWidescreen(){let{i18n:e}=this.props;return u(\"label\",{role:\"tooltip\",\"aria-label\":e(\"aspectRatioLandscape\"),\"data-microtip-position\":\"top\"},u(\"button\",{type:\"button\",className:\"uppy-u-reset uppy-c-btn\",onClick:()=>this.cropper.setAspectRatio(16/9)},u(\"svg\",{\"aria-hidden\":\"true\",className:\"uppy-c-icon\",width:\"24\",height:\"24\",viewBox:\"0 0 24 24\"},u(\"path\",{d:\"M 19,4.9999992 V 17.000001 H 4.9999998 V 6.9999992 H 19 m 0,-2 H 4.9999998 c -1.0999999,0 -1.9999999,0.9000001 -1.9999999,2 V 17.000001 c 0,1.1 0.9,2 1.9999999,2 H 19 c 1.1,0 2,-0.9 2,-2 V 6.9999992 c 0,-1.0999999 -0.9,-2 -2,-2 z\"}),u(\"path\",{fill:\"none\",d:\"M0 0h24v24H0z\"}))))}renderCropWidescreenVertical(){let{i18n:e}=this.props;return u(\"label\",{role:\"tooltip\",\"aria-label\":e(\"aspectRatioPortrait\"),\"data-microtip-position\":\"top\"},u(\"button\",{type:\"button\",className:\"uppy-u-reset uppy-c-btn\",onClick:()=>this.cropper.setAspectRatio(9/16)},u(\"svg\",{\"aria-hidden\":\"true\",className:\"uppy-c-icon\",width:\"24\",height:\"24\",viewBox:\"0 0 24 24\"},u(\"path\",{d:\"M 19.000001,19 H 6.999999 V 5 h 10.000002 v 14 m 2,0 V 5 c 0,-1.0999999 -0.9,-1.9999999 -2,-1.9999999 H 6.999999 c -1.1,0 -2,0.9 -2,1.9999999 v 14 c 0,1.1 0.9,2 2,2 h 10.000002 c 1.1,0 2,-0.9 2,-2 z\"}),u(\"path\",{d:\"M0 0h24v24H0z\",fill:\"none\"}))))}render(){let{currentImage:e,opts:t}=this.props,{actions:r}=t,s=URL.createObjectURL(e.data);return u(\"div\",{className:\"uppy-ImageCropper\"},u(\"div\",{className:\"uppy-ImageCropper-container\"},u(\"img\",{className:\"uppy-ImageCropper-image\",alt:e.name,src:s,ref:o=>{this.imgElement=o}})),u(\"div\",{className:\"uppy-ImageCropper-controls\"},r.revert&&this.renderRevert(),r.rotate&&this.renderRotate(),r.granularRotate&&this.renderGranularRotate(),r.flip&&this.renderFlip(),r.zoomIn&&this.renderZoomIn(),r.zoomOut&&this.renderZoomOut(),r.cropSquare&&this.renderCropSquare(),r.cropWidescreen&&this.renderCropWidescreen(),r.cropWidescreenVertical&&this.renderCropWidescreenVertical()))}};n(qo,\"Editor\");var Ny={strings:{revert:\"Reset\",rotate:\"Rotate 90\\xB0\",zoomIn:\"Zoom in\",zoomOut:\"Zoom out\",flipHorizontal:\"Flip horizontally\",aspectRatioSquare:\"Crop square\",aspectRatioLandscape:\"Crop landscape (16:9)\",aspectRatioPortrait:\"Crop portrait (9:16)\"}};var zS={version:\"2.3.0\"},ss=class extends Z{constructor(e,t){super(e,t),this.save=()=>{let a=n(p=>{let{currentImage:d}=this.getPluginState();this.uppy.setFileState(d.id,{data:p,size:p.size,preview:null});let f=this.uppy.getFile(d.id);this.uppy.emit(\"thumbnail:request\",f),this.setPluginState({currentImage:f}),this.uppy.emit(\"file-editor:complete\",f)},\"saveBlobCallback\"),{currentImage:l}=this.getPluginState(),h=this.cropper.getCroppedCanvas({});h.width%2!==0&&this.cropper.setData({width:h.width-1}),h.height%2!==0&&this.cropper.setData({height:h.height-1}),this.cropper.getCroppedCanvas(this.opts.cropperOptions.croppedCanvasOptions).toBlob(a,l.type,this.opts.quality)},this.storeCropperInstance=a=>{this.cropper=a},this.selectFile=a=>{this.uppy.emit(\"file-editor:start\",a),this.setPluginState({currentImage:a})},this.id=this.opts.id||\"ImageEditor\",this.title=\"Image Editor\",this.type=\"editor\",this.defaultLocale=Ny;let r={viewMode:0,background:!1,autoCropArea:1,responsive:!0,minCropBoxWidth:70,minCropBoxHeight:70,croppedCanvasOptions:{}},s={revert:!0,rotate:!0,granularRotate:!0,flip:!0,zoomIn:!0,zoomOut:!0,cropSquare:!0,cropWidescreen:!0,cropWidescreenVertical:!0},o={quality:.8};this.opts={...o,...t,actions:{...s,...t?.actions},cropperOptions:{...r,...t?.cropperOptions}},this.i18nInit()}canEditFile(e){if(!e.type||e.isRemote)return!1;let t=e.type.split(\"/\")[1];return!!/^(jpe?g|gif|png|bmp|webp)$/.test(t)}install(){this.setPluginState({currentImage:null});let{target:e}=this.opts;e&&this.mount(e,this)}uninstall(){let{currentImage:e}=this.getPluginState();if(e){let t=this.uppy.getFile(e.id);this.uppy.emit(\"file-editor:cancel\",t)}this.unmount()}render(){let{currentImage:e}=this.getPluginState();return e===null||e.isRemote?null:u(qo,{currentImage:e,storeCropperInstance:this.storeCropperInstance,save:this.save,opts:this.opts,i18n:this.i18n})}};n(ss,\"ImageEditor\");ss.VERSION=zS.version;var jS={version:\"3.0.4\"},os=class extends Z{constructor(e,t){super(e,t),this.id=this.opts.id||\"ProgressBar\",this.title=\"Progress Bar\",this.type=\"progressindicator\";let r={target:\"body\",fixed:!1,hideAfterFinish:!0};this.opts={...r,...t},this.render=this.render.bind(this)}render(e){let t=e.totalProgress||0,r=(t===0||t===100)&&this.opts.hideAfterFinish;return u(\"div\",{className:\"uppy uppy-ProgressBar\",style:{position:this.opts.fixed?\"fixed\":\"initial\"},\"aria-hidden\":r},u(\"div\",{className:\"uppy-ProgressBar-inner\",style:{width:`${t}%`}}),u(\"div\",{className:\"uppy-ProgressBar-percentage\"},t))}install(){let{target:e}=this.opts;e&&this.mount(e,this)}uninstall(){this.unmount()}};n(os,\"ProgressBar\");os.VERSION=jS.version;var HS={__proto__:null,\"audio/mp3\":\"mp3\",\"audio/mp4\":\"mp4\",\"audio/ogg\":\"ogg\",\"audio/webm\":\"webm\",\"image/gif\":\"gif\",\"image/heic\":\"heic\",\"image/heif\":\"heif\",\"image/jpeg\":\"jpg\",\"image/png\":\"png\",\"image/svg+xml\":\"svg\",\"video/mp4\":\"mp4\",\"video/ogg\":\"ogv\",\"video/quicktime\":\"mov\",\"video/webm\":\"webm\",\"video/x-matroska\":\"mkv\",\"video/x-msvideo\":\"avi\"};function Ki(i){return[i]=i.split(\";\",1),HS[i]||null}n(Ki,\"getFileTypeExtension\");function Gd(){var i;return typeof MediaRecorder==\"function\"&&typeof((i=MediaRecorder.prototype)==null?void 0:i.start)==\"function\"}n(Gd,\"supportsMediaRecorder\");function Kd(i){let{recording:e,onStartRecording:t,onStopRecording:r,i18n:s}=i;return e?u(\"button\",{className:\"uppy-u-reset uppy-c-btn uppy-Audio-button\",type:\"button\",title:s(\"stopAudioRecording\"),\"aria-label\":s(\"stopAudioRecording\"),onClick:r,\"data-uppy-super-focusable\":!0},u(\"svg\",{\"aria-hidden\":\"true\",focusable:\"false\",className:\"uppy-c-icon\",width:\"100\",height:\"100\",viewBox:\"0 0 100 100\"},u(\"rect\",{x:\"15\",y:\"15\",width:\"70\",height:\"70\"}))):u(\"button\",{className:\"uppy-u-reset uppy-c-btn uppy-Audio-button\",type:\"button\",title:s(\"startAudioRecording\"),\"aria-label\":s(\"startAudioRecording\"),onClick:t,\"data-uppy-super-focusable\":!0},u(\"svg\",{\"aria-hidden\":\"true\",focusable:\"false\",className:\"uppy-c-icon\",width:\"14px\",height:\"20px\",viewBox:\"0 0 14 20\"},u(\"path\",{d:\"M7 14c2.21 0 4-1.71 4-3.818V3.818C11 1.71 9.21 0 7 0S3 1.71 3 3.818v6.364C3 12.29 4.79 14 7 14zm6.364-7h-.637a.643.643 0 0 0-.636.65V9.6c0 3.039-2.565 5.477-5.6 5.175-2.645-.264-4.582-2.692-4.582-5.407V7.65c0-.36-.285-.65-.636-.65H.636A.643.643 0 0 0 0 7.65v1.631c0 3.642 2.544 6.888 6.045 7.382v1.387H3.818a.643.643 0 0 0-.636.65v.65c0 .36.285.65.636.65h6.364c.351 0 .636-.29.636-.65v-.65c0-.36-.285-.65-.636-.65H7.955v-1.372C11.363 16.2 14 13.212 14 9.6V7.65c0-.36-.285-.65-.636-.65z\",fill:\"#FFF\",\"fill-rule\":\"nonzero\"})))}n(Kd,\"RecordButton\");function Xd(i){return`${Math.floor(i/60)}:${String(i%60).padStart(2,0)}`}n(Xd,\"formatSeconds\");function Yd(i){let{recordingLengthSeconds:e,i18n:t}=i,r=Xd(e);return u(\"span\",{\"aria-label\":t(\"recordingLength\",{recording_length:r})},r)}n(Yd,\"RecordingLength\");var My=n(i=>{let{currentDeviceId:e,audioSources:t,onChangeSource:r}=i;return u(\"div\",{className:\"uppy-Audio-videoSource\"},u(\"select\",{className:\"uppy-u-reset uppy-Audio-audioSource-select\",onChange:s=>{r(s.target.value)}},t.map(s=>u(\"option\",{key:s.deviceId,value:s.deviceId,selected:s.deviceId===e},s.label))))},\"default\");function $S(i,e){if(!Object.prototype.hasOwnProperty.call(i,e))throw new TypeError(\"attempted to use private field on non-instance\");return i}n($S,\"_classPrivateFieldLooseBase\");var qS=0;function VS(i){return\"__private_\"+qS+++\"_\"+i}n(VS,\"_classPrivateFieldLooseKey\");function Ly(i){return typeof i==\"function\"}n(Ly,\"isFunction\");function ba(i){return Ly(i)?i():i}n(ba,\"result\");var Qd=VS(\"draw\"),Vo=class{constructor(e,t){t===void 0&&(t={}),Object.defineProperty(this,Qd,{writable:!0,value:()=>this.draw()});let r=t.canvas||{},s=t.canvasContext||{};this.analyser=null,this.bufferLength=0,this.dataArray=[],this.canvas=e,this.width=ba(r.width)||this.canvas.width,this.height=ba(r.height)||this.canvas.height,this.canvas.width=this.width,this.canvas.height=this.height,this.canvasContext=this.canvas.getContext(\"2d\"),this.canvasContext.fillStyle=ba(s.fillStyle)||\"rgb(255, 255, 255)\",this.canvasContext.strokeStyle=ba(s.strokeStyle)||\"rgb(0, 0, 0)\",this.canvasContext.lineWidth=ba(s.lineWidth)||1,this.onDrawFrame=Ly(t.onDrawFrame)?t.onDrawFrame:()=>{}}addSource(e){this.streamSource=e,this.audioContext=this.streamSource.context,this.analyser=this.audioContext.createAnalyser(),this.analyser.fftSize=2048,this.bufferLength=this.analyser.frequencyBinCount,this.source=this.audioContext.createBufferSource(),this.dataArray=new Uint8Array(this.bufferLength),this.analyser.getByteTimeDomainData(this.dataArray),this.streamSource.connect(this.analyser)}draw(){let{analyser:e,dataArray:t,bufferLength:r}=this,s=this.canvasContext,o=this.width,a=this.height;e&&e.getByteTimeDomainData(t),s.fillRect(0,0,o,a),s.beginPath();let l=o*1/r,h=0;r||s.moveTo(0,this.height/2);for(let p=0;p<r;p++){let f=t[p]/128*(a/2);p===0?s.moveTo(h,f):s.lineTo(h,f),h+=l}s.lineTo(o,a/2),s.stroke(),this.onDrawFrame(this),requestAnimationFrame($S(this,Qd)[Qd])}};n(Vo,\"AudioOscilloscope\");function WS(i){let{onSubmit:e,i18n:t}=i;return u(\"button\",{className:\"uppy-u-reset uppy-c-btn uppy-Audio-button uppy-Audio-button--submit\",type:\"button\",title:t(\"submitRecordedFile\"),\"aria-label\":t(\"submitRecordedFile\"),onClick:e,\"data-uppy-super-focusable\":!0},u(\"svg\",{width:\"12\",height:\"9\",viewBox:\"0 0 12 9\",xmlns:\"http://www.w3.org/2000/svg\",\"aria-hidden\":\"true\",focusable:\"false\",className:\"uppy-c-icon\"},u(\"path\",{fill:\"#fff\",fillRule:\"nonzero\",d:\"M10.66 0L12 1.31 4.136 9 0 4.956l1.34-1.31L4.136 6.38z\"})))}n(WS,\"SubmitButton\");var By=WS;function GS(i){let{onDiscard:e,i18n:t}=i;return u(\"button\",{className:\"uppy-u-reset uppy-c-btn uppy-Audio-button\",type:\"button\",title:t(\"discardRecordedFile\"),\"aria-label\":t(\"discardRecordedFile\"),onClick:e,\"data-uppy-super-focusable\":!0},u(\"svg\",{width:\"13\",height:\"13\",viewBox:\"0 0 13 13\",xmlns:\"http://www.w3.org/2000/svg\",\"aria-hidden\":\"true\",className:\"uppy-c-icon\"},u(\"g\",{fill:\"#FFF\",fillRule:\"evenodd\"},u(\"path\",{d:\"M.496 11.367L11.103.76l1.414 1.414L1.911 12.781z\"}),u(\"path\",{d:\"M11.104 12.782L.497 2.175 1.911.76l10.607 10.606z\"}))))}n(GS,\"DiscardButton\");var zy=GS;function Jd(i){let{stream:e,recordedAudio:t,onStop:r,recording:s,supportsRecording:o,audioSources:a,showAudioSourceDropdown:l,onSubmit:h,i18n:p,onStartRecording:d,onStopRecording:f,onDiscardRecordedAudio:y,recordingLengthSeconds:b}=i,S=Xh(null),E=Xh(null);Os(()=>()=>{E.current=null,r()},[r]),Os(()=>{if(!t&&(E.current=new Vo(S.current,{canvas:{width:600,height:600},canvasContext:{lineWidth:2,fillStyle:\"rgb(0,0,0)\",strokeStyle:\"green\"}}),E.current.draw(),e)){let G=new AudioContext().createMediaStreamSource(e);E.current.addSource(G)}},[t,e]);let x=t!=null,F=!x&&o,U=l&&!x&&a&&a.length>1;return u(\"div\",{className:\"uppy-Audio-container\"},u(\"div\",{className:\"uppy-Audio-audioContainer\"},x?u(\"audio\",{className:\"uppy-Audio-player\",controls:!0,src:t}):u(\"canvas\",{ref:S,className:\"uppy-Audio-canvas\"})),u(\"div\",{className:\"uppy-Audio-footer\"},u(\"div\",{className:\"uppy-Audio-audioSourceContainer\"},U?My(i):null),u(\"div\",{className:\"uppy-Audio-buttonContainer\"},F&&u(Kd,{recording:s,onStartRecording:d,onStopRecording:f,i18n:p}),x&&u(By,{onSubmit:h,i18n:p}),x&&u(zy,{onDiscard:y,i18n:p})),u(\"div\",{className:\"uppy-Audio-recordingLength\"},!x&&u(Yd,{recordingLengthSeconds:b,i18n:p}))))}n(Jd,\"RecordingScreen\");var jy=n(i=>{let{icon:e,hasAudio:t,i18n:r}=i;return u(\"div\",{className:\"uppy-Audio-permissons\"},u(\"div\",{className:\"uppy-Audio-permissonsIcon\"},e()),u(\"h1\",{className:\"uppy-Audio-title\"},r(t?\"allowAudioAccessTitle\":\"noAudioTitle\")),u(\"p\",null,r(t?\"allowAudioAccessDescription\":\"noAudioDescription\")))},\"default\");var Hy={strings:{pluginNameAudio:\"Audio\",startAudioRecording:\"Begin audio recording\",stopAudioRecording:\"Stop audio recording\",allowAudioAccessTitle:\"Please allow access to your microphone\",allowAudioAccessDescription:\"In order to record audio, please allow microphone access for this site.\",noAudioTitle:\"Microphone Not Available\",noAudioDescription:\"In order to record audio, please connect a microphone or another audio input device\",recordingStoppedMaxSize:\"Recording stopped because the file size is about to exceed the limit\",recordingLength:\"Recording length %{recording_length}\",submitRecordedFile:\"Submit recorded file\",discardRecordedFile:\"Discard recorded file\"}};function oc(){return oc=Object.assign?Object.assign.bind():function(i){for(var e=1;e<arguments.length;e++){var t=arguments[e];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(i[r]=t[r])}return i},oc.apply(this,arguments)}n(oc,\"_extends\");function H(i,e){if(!Object.prototype.hasOwnProperty.call(i,e))throw new TypeError(\"attempted to use private field on non-instance\");return i}n(H,\"_classPrivateFieldLooseBase\");var KS=0;function pt(i){return\"__private_\"+KS+++\"_\"+i}n(pt,\"_classPrivateFieldLooseKey\");var XS={version:\"1.1.4\"},dt=pt(\"stream\"),Rr=pt(\"audioActive\"),Ie=pt(\"recordingChunks\"),De=pt(\"recorder\"),Ur=pt(\"capturedMediaFile\"),ct=pt(\"mediaDevices\"),wa=pt(\"supportsUserMedia\"),Zd=pt(\"hasAudioCheck\"),Ms=pt(\"start\"),ec=pt(\"startRecording\"),Sa=pt(\"stopRecording\"),tc=pt(\"discardRecordedAudio\"),ic=pt(\"submit\"),kr=pt(\"stop\"),rc=pt(\"getAudio\"),sc=pt(\"changeSource\"),Ls=pt(\"updateSources\"),ns=class extends Z{constructor(e,t){var r;super(e,t),r=this,Object.defineProperty(this,rc,{value:QS}),Object.defineProperty(this,Zd,{value:YS}),Object.defineProperty(this,dt,{writable:!0,value:null}),Object.defineProperty(this,Rr,{writable:!0,value:!1}),Object.defineProperty(this,Ie,{writable:!0,value:null}),Object.defineProperty(this,De,{writable:!0,value:null}),Object.defineProperty(this,Ur,{writable:!0,value:null}),Object.defineProperty(this,ct,{writable:!0,value:null}),Object.defineProperty(this,wa,{writable:!0,value:null}),Object.defineProperty(this,Ms,{writable:!0,value:function(s){if(s===void 0&&(s=null),!H(r,wa)[wa])return Promise.reject(new Error(\"Microphone access not supported\"));H(r,Rr)[Rr]=!0,H(r,Zd)[Zd]().then(o=>(r.setPluginState({hasAudio:o}),H(r,ct)[ct].getUserMedia({audio:!0}).then(a=>{H(r,dt)[dt]=a;let l=null,h=a.getAudioTracks();!s||!s.deviceId?l=h[0].getSettings().deviceId:h.forEach(p=>{p.getSettings().deviceId===s.deviceId&&(l=p.getSettings().deviceId)}),H(r,Ls)[Ls](),r.setPluginState({currentDeviceId:l,audioReady:!0})}).catch(a=>{r.setPluginState({audioReady:!1,cameraError:a}),r.uppy.info(a.message,\"error\")})))}}),Object.defineProperty(this,ec,{writable:!0,value:()=>{H(this,De)[De]=new MediaRecorder(H(this,dt)[dt]),H(this,Ie)[Ie]=[];let s=!1;H(this,De)[De].addEventListener(\"dataavailable\",o=>{H(this,Ie)[Ie].push(o.data);let{restrictions:a}=this.uppy.opts;if(H(this,Ie)[Ie].length>1&&a.maxFileSize!=null&&!s){let l=H(this,Ie)[Ie].reduce((f,y)=>f+y.size,0),p=(l-H(this,Ie)[Ie][0].size)/(H(this,Ie)[Ie].length-1)*3,d=Math.max(0,a.maxFileSize-p);l>d&&(s=!0,this.uppy.info(this.i18n(\"recordingStoppedMaxSize\"),\"warning\",4e3),H(this,Sa)[Sa]())}}),H(this,De)[De].start(500),this.recordingLengthTimer=setInterval(()=>{let o=this.getPluginState().recordingLengthSeconds;this.setPluginState({recordingLengthSeconds:o+1})},1e3),this.setPluginState({isRecording:!0})}}),Object.defineProperty(this,Sa,{writable:!0,value:()=>new Promise(o=>{H(this,De)[De].addEventListener(\"stop\",()=>{o()}),H(this,De)[De].stop(),clearInterval(this.recordingLengthTimer),this.setPluginState({recordingLengthSeconds:0})}).then(()=>(this.setPluginState({isRecording:!1}),H(this,rc)[rc]())).then(o=>{try{H(this,Ur)[Ur]=o,this.setPluginState({recordedAudio:URL.createObjectURL(o.data)})}catch(a){a.isRestriction||this.uppy.log(a)}}).then(()=>{H(this,Ie)[Ie]=null,H(this,De)[De]=null},o=>{throw H(this,Ie)[Ie]=null,H(this,De)[De]=null,o})}),Object.defineProperty(this,tc,{writable:!0,value:()=>{this.setPluginState({recordedAudio:null}),H(this,Ur)[Ur]=null}}),Object.defineProperty(this,ic,{writable:!0,value:()=>{try{H(this,Ur)[Ur]&&this.uppy.addFile(H(this,Ur)[Ur])}catch(s){s.isRestriction||this.uppy.log(s,\"warning\")}}}),Object.defineProperty(this,kr,{writable:!0,value:async()=>{H(this,dt)[dt]&&H(this,dt)[dt].getAudioTracks().forEach(o=>o.stop()),H(this,De)[De]&&await new Promise(s=>{H(this,De)[De].addEventListener(\"stop\",s,{once:!0}),H(this,De)[De].stop(),clearInterval(this.recordingLengthTimer)}),H(this,Ie)[Ie]=null,H(this,De)[De]=null,H(this,Rr)[Rr]=!1,H(this,dt)[dt]=null,this.setPluginState({recordedAudio:null,isRecording:!1,recordingLengthSeconds:0})}}),Object.defineProperty(this,sc,{writable:!0,value:s=>{H(this,kr)[kr](),H(this,Ms)[Ms]({deviceId:s})}}),Object.defineProperty(this,Ls,{writable:!0,value:()=>{H(this,ct)[ct].enumerateDevices().then(s=>{this.setPluginState({audioSources:s.filter(o=>o.kind===\"audioinput\")})})}}),H(this,ct)[ct]=navigator.mediaDevices,H(this,wa)[wa]=H(this,ct)[ct]!=null,this.id=this.opts.id||\"Audio\",this.type=\"acquirer\",this.icon=()=>u(\"svg\",{className:\"uppy-DashboardTab-iconAudio\",\"aria-hidden\":\"true\",focusable:\"false\",width:\"32px\",height:\"32px\",viewBox:\"0 0 32 32\"},u(\"path\",{d:\"M21.143 12.297c.473 0 .857.383.857.857v2.572c0 3.016-2.24 5.513-5.143 5.931v2.64h2.572a.857.857 0 110 1.714H12.57a.857.857 0 110-1.714h2.572v-2.64C12.24 21.24 10 18.742 10 15.726v-2.572a.857.857 0 111.714 0v2.572A4.29 4.29 0 0016 20.01a4.29 4.29 0 004.286-4.285v-2.572c0-.474.384-.857.857-.857zM16 6.5a3 3 0 013 3v6a3 3 0 01-6 0v-6a3 3 0 013-3z\",fill:\"currentcolor\",\"fill-rule\":\"nonzero\"})),this.defaultLocale=Hy,this.opts={...t},this.i18nInit(),this.title=this.i18n(\"pluginNameAudio\"),this.setPluginState({hasAudio:!1,audioReady:!1,cameraError:null,recordingLengthSeconds:0,audioSources:[],currentDeviceId:null})}render(){H(this,Rr)[Rr]||H(this,Ms)[Ms]();let e=this.getPluginState();return!e.audioReady||!e.hasAudio?u(jy,{icon:this.icon,i18n:this.i18n,hasAudio:e.hasAudio}):u(Jd,oc({},e,{audioActive:H(this,Rr)[Rr],onChangeSource:H(this,sc)[sc],onStartRecording:H(this,ec)[ec],onStopRecording:H(this,Sa)[Sa],onDiscardRecordedAudio:H(this,tc)[tc],onSubmit:H(this,ic)[ic],onStop:H(this,kr)[kr],i18n:this.i18n,showAudioSourceDropdown:this.opts.showAudioSourceDropdown,supportsRecording:Gd(),recording:e.isRecording,stream:H(this,dt)[dt]}))}install(){this.setPluginState({audioReady:!1,recordingLengthSeconds:0});let{target:e}=this.opts;e&&this.mount(e,this),H(this,ct)[ct]&&(H(this,Ls)[Ls](),H(this,ct)[ct].ondevicechange=()=>{if(H(this,Ls)[Ls](),H(this,dt)[dt]){let t=!0,{audioSources:r,currentDeviceId:s}=this.getPluginState();r.forEach(o=>{s===o.deviceId&&(t=!1)}),t&&(H(this,kr)[kr](),H(this,Ms)[Ms]())}})}uninstall(){H(this,dt)[dt]&&H(this,kr)[kr](),this.unmount()}};n(ns,\"Audio\");function YS(){return H(this,ct)[ct]?H(this,ct)[ct].enumerateDevices().then(i=>i.some(e=>e.kind===\"audioinput\")):Promise.resolve(!1)}n(YS,\"_hasAudioCheck2\");function QS(){let i=H(this,Ie)[Ie].find(o=>{var a;return((a=o.type)==null?void 0:a.length)>0}).type,e=Ki(i);if(!e)return Promise.reject(new Error(`Could not retrieve recording: Unsupported media type \"${i}\"`));let t=`audio-${Date.now()}.${e}`,r=new Blob(H(this,Ie)[Ie],{type:i}),s={source:this.id,name:t,data:new Blob([r],{type:i}),type:i};return Promise.resolve(s)}n(QS,\"_getAudio2\");ns.VERSION=XS.version;var $y={strings:{pluginNameBox:\"Box\"}};var JS={version:\"2.1.4\"},Xi=class extends Z{constructor(e,t){super(e,t),this.id=this.opts.id||\"Box\",be.initPlugin(this,t),this.title=this.opts.title||\"Box\",this.icon=()=>u(\"svg\",{className:\"uppy-DashboardTab-iconBox\",\"aria-hidden\":\"true\",focusable:\"false\",width:\"32\",height:\"32\",viewBox:\"0 0 32 32\"},u(\"g\",{fill:\"currentcolor\",fillRule:\"nonzero\"},u(\"path\",{d:\"m16.4 13.5c-1.6 0-3 0.9-3.7 2.2-0.7-1.3-2.1-2.2-3.7-2.2-1 0-1.8 0.3-2.5 0.8v-3.6c-0.1-0.3-0.5-0.7-1-0.7s-0.8 0.4-0.8 0.8v7c0 2.3 1.9 4.2 4.2 4.2 1.6 0 3-0.9 3.7-2.2 0.7 1.3 2.1 2.2 3.7 2.2 2.3 0 4.2-1.9 4.2-4.2 0.1-2.4-1.8-4.3-4.1-4.3m-7.5 6.8c-1.4 0-2.5-1.1-2.5-2.5s1.1-2.5 2.5-2.5 2.5 1.1 2.5 2.5-1.1 2.5-2.5 2.5m7.5 0c-1.4 0-2.5-1.1-2.5-2.5s1.1-2.5 2.5-2.5 2.5 1.1 2.5 2.5-1.1 2.5-2.5 2.5\"}),u(\"path\",{d:\"m27.2 20.6l-2.3-2.8 2.3-2.8c0.3-0.4 0.2-0.9-0.2-1.2s-1-0.2-1.3 0.2l-2 2.4-2-2.4c-0.3-0.4-0.9-0.4-1.3-0.2-0.4 0.3-0.5 0.8-0.2 1.2l2.3 2.8-2.3 2.8c-0.3 0.4-0.2 0.9 0.2 1.2s1 0.2 1.3-0.2l2-2.4 2 2.4c0.3 0.4 0.9 0.4 1.3 0.2 0.4-0.3 0.4-0.8 0.2-1.2\"}))),this.provider=new be(e,{companionUrl:this.opts.companionUrl,companionHeaders:this.opts.companionHeaders,companionKeysParams:this.opts.companionKeysParams,companionCookiesRule:this.opts.companionCookiesRule,provider:\"box\",pluginId:this.id}),this.defaultLocale=$y,this.i18nInit(),this.title=this.i18n(\"pluginNameBox\"),this.onFirstRender=this.onFirstRender.bind(this),this.render=this.render.bind(this)}install(){this.view=new Te(this,{provider:this.provider,loadAllFiles:!0});let{target:e}=this.opts;e&&this.mount(e,this)}uninstall(){this.view.tearDown(),this.unmount()}onFirstRender(){return this.view.getFolder()}render(e){return this.view.render(e)}};n(Xi,\"Box\");Xi.VERSION=JS.version;var qy={strings:{pluginNameDropbox:\"Dropbox\"}};var ZS={version:\"3.1.4\"},Yi=class extends Z{constructor(e,t){super(e,t),this.id=this.opts.id||\"Dropbox\",be.initPlugin(this,t),this.title=this.opts.title||\"Dropbox\",this.icon=()=>u(\"svg\",{className:\"uppy-DashboardTab-iconDropbox\",\"aria-hidden\":\"true\",focusable:\"false\",width:\"32\",height:\"32\",viewBox:\"0 0 32 32\"},u(\"path\",{d:\"M10.5 7.5L5 10.955l5.5 3.454 5.5-3.454 5.5 3.454 5.5-3.454L21.5 7.5 16 10.955zM10.5 21.319L5 17.864l5.5-3.455 5.5 3.455zM16 17.864l5.5-3.455 5.5 3.455-5.5 3.455zM16 25.925l-5.5-3.455 5.5-3.454 5.5 3.454z\",fill:\"currentcolor\",fillRule:\"nonzero\"})),this.provider=new be(e,{companionUrl:this.opts.companionUrl,companionHeaders:this.opts.companionHeaders,companionKeysParams:this.opts.companionKeysParams,companionCookiesRule:this.opts.companionCookiesRule,provider:\"dropbox\",pluginId:this.id}),this.defaultLocale=qy,this.i18nInit(),this.title=this.i18n(\"pluginNameDropbox\"),this.onFirstRender=this.onFirstRender.bind(this),this.render=this.render.bind(this)}install(){this.view=new Te(this,{provider:this.provider,loadAllFiles:!0});let{target:e}=this.opts;e&&this.mount(e,this)}uninstall(){this.view.tearDown(),this.unmount()}onFirstRender(){return Promise.all([this.provider.fetchPreAuthToken(),this.view.getFolder()])}render(e){return this.view.render(e)}};n(Yi,\"Dropbox\");Yi.VERSION=ZS.version;var Vy={strings:{pluginNameFacebook:\"Facebook\"}};var eP={version:\"3.1.3\"},Qi=class extends Z{constructor(e,t){super(e,t),this.id=this.opts.id||\"Facebook\",be.initPlugin(this,t),this.title=this.opts.title||\"Facebook\",this.icon=()=>u(\"svg\",{\"aria-hidden\":\"true\",focusable:\"false\",width:\"32\",height:\"32\",viewBox:\"0 0 32 32\"},u(\"g\",{fill:\"none\",fillRule:\"evenodd\"},u(\"path\",{d:\"M27 16c0-6.075-4.925-11-11-11S5 9.925 5 16c0 5.49 4.023 10.041 9.281 10.866V19.18h-2.793V16h2.793v-2.423c0-2.757 1.642-4.28 4.155-4.28 1.204 0 2.462.215 2.462.215v2.707h-1.387c-1.366 0-1.792.848-1.792 1.718V16h3.05l-.487 3.18h-2.563v7.686C22.977 26.041 27 21.49 27 16\",fill:\"#1777F2\"}),u(\"path\",{d:\"M20.282 19.18L20.77 16h-3.051v-2.063c0-.87.426-1.718 1.792-1.718h1.387V9.512s-1.258-.215-2.462-.215c-2.513 0-4.155 1.523-4.155 4.28V16h-2.793v3.18h2.793v7.686a11.082 11.082 0 003.438 0V19.18h2.563\",fill:\"#FFFFFE\"}))),this.provider=new be(e,{companionUrl:this.opts.companionUrl,companionHeaders:this.opts.companionHeaders,companionKeysParams:this.opts.companionKeysParams,companionCookiesRule:this.opts.companionCookiesRule,provider:\"facebook\",pluginId:this.id}),this.defaultLocale=Vy,this.i18nInit(),this.title=this.i18n(\"pluginNameFacebook\"),this.onFirstRender=this.onFirstRender.bind(this),this.render=this.render.bind(this)}install(){this.view=new Te(this,{provider:this.provider});let{target:e}=this.opts;e&&this.mount(e,this)}uninstall(){this.view.tearDown(),this.unmount()}onFirstRender(){return Promise.all([this.provider.fetchPreAuthToken(),this.view.getFolder()])}render(e){let t={};return this.getPluginState().files.length&&!this.getPluginState().folders.length&&(t.viewType=\"grid\",t.showFilter=!1,t.showTitles=!1),this.view.render(e,t)}};n(Qi,\"Facebook\");Qi.VERSION=eP.version;var Wo=class extends Te{toggleCheckbox(e,t){e.stopPropagation(),e.preventDefault(),t.custom.isSharedDrive||super.toggleCheckbox(e,t)}};n(Wo,\"DriveProviderViews\");var Wy={strings:{pluginNameGoogleDrive:\"Google Drive\"}};var tP={version:\"3.3.0\"},Ji=class extends Z{constructor(e,t){super(e,t),this.id=this.opts.id||\"GoogleDrive\",this.title=this.opts.title||\"Google Drive\",be.initPlugin(this,t),this.title=this.opts.title||\"Google Drive\",this.icon=()=>u(\"svg\",{\"aria-hidden\":\"true\",focusable:\"false\",width:\"32\",height:\"32\",viewBox:\"0 0 32 32\"},u(\"g\",{fillRule:\"nonzero\",fill:\"none\"},u(\"path\",{d:\"M6.663 22.284l.97 1.62c.202.34.492.609.832.804l3.465-5.798H5c0 .378.1.755.302 1.096l1.361 2.278z\",fill:\"#0066DA\"}),u(\"path\",{d:\"M16 12.09l-3.465-5.798c-.34.195-.63.463-.832.804l-6.4 10.718A2.15 2.15 0 005 18.91h6.93L16 12.09z\",fill:\"#00AC47\"}),u(\"path\",{d:\"M23.535 24.708c.34-.195.63-.463.832-.804l.403-.67 1.928-3.228c.201-.34.302-.718.302-1.096h-6.93l1.474 2.802 1.991 2.996z\",fill:\"#EA4335\"}),u(\"path\",{d:\"M16 12.09l3.465-5.798A2.274 2.274 0 0018.331 6h-4.662c-.403 0-.794.11-1.134.292L16 12.09z\",fill:\"#00832D\"}),u(\"path\",{d:\"M20.07 18.91h-8.14l-3.465 5.798c.34.195.73.292 1.134.292h12.802c.403 0 .794-.11 1.134-.292L20.07 18.91z\",fill:\"#2684FC\"}),u(\"path\",{d:\"M23.497 12.455l-3.2-5.359a2.252 2.252 0 00-.832-.804L16 12.09l4.07 6.82h6.917c0-.377-.1-.755-.302-1.096l-3.188-5.359z\",fill:\"#FFBA00\"}))),this.provider=new be(e,{companionUrl:this.opts.companionUrl,companionHeaders:this.opts.companionHeaders,companionKeysParams:this.opts.companionKeysParams,companionCookiesRule:this.opts.companionCookiesRule,provider:\"drive\",pluginId:this.id}),this.defaultLocale=Wy,this.i18nInit(),this.title=this.i18n(\"pluginNameGoogleDrive\"),this.onFirstRender=this.onFirstRender.bind(this),this.render=this.render.bind(this)}install(){this.view=new Wo(this,{provider:this.provider,loadAllFiles:!0});let{target:e}=this.opts;e&&this.mount(e,this)}uninstall(){this.view.tearDown(),this.unmount()}onFirstRender(){return Promise.all([this.provider.fetchPreAuthToken(),this.view.getFolder(\"root\")])}render(e){return this.view.render(e)}};n(Ji,\"GoogleDrive\");Ji.VERSION=tP.version;var Gy={strings:{pluginNameInstagram:\"Instagram\"}};var iP={version:\"3.1.3\"},Zi=class extends Z{constructor(e,t){super(e,t),this.id=this.opts.id||\"Instagram\",be.initPlugin(this,t),this.icon=()=>u(\"svg\",{\"aria-hidden\":\"true\",focusable:\"false\",width:\"32\",height:\"32\",viewBox:\"0 0 32 32\"},u(\"defs\",null,u(\"path\",{d:\"M16.825 5l.483-.001.799.002c1.168.005 1.598.021 2.407.057 1.17.05 1.97.235 2.67.506.725.28 1.34.655 1.951 1.265.613.61.99 1.223 1.273 1.946.273.7.46 1.498.516 2.67l.025.552.008.205c.029.748.037 1.51.042 3.777l.001.846v.703l-.001.398a50.82 50.82 0 01-.058 2.588c-.05 1.17-.235 1.97-.506 2.67a5.394 5.394 0 01-1.265 1.951c-.61.613-1.222.99-1.946 1.273-.699.273-1.498.46-2.668.516-.243.012-.451.022-.656.03l-.204.007c-.719.026-1.512.034-3.676.038l-.847.001h-1.1a50.279 50.279 0 01-2.587-.059c-1.171-.05-1.971-.235-2.671-.506a5.394 5.394 0 01-1.951-1.265 5.385 5.385 0 01-1.272-1.946c-.274-.699-.46-1.498-.517-2.668a88.15 88.15 0 01-.03-.656l-.007-.205c-.026-.718-.034-1.512-.038-3.674v-2.129c.006-1.168.022-1.597.058-2.406.051-1.171.235-1.971.506-2.672a5.39 5.39 0 011.265-1.95 5.381 5.381 0 011.946-1.272c.699-.274 1.498-.462 2.669-.517l.656-.03.204-.007c.718-.026 1.511-.034 3.674-.038zm.678 1.981h-1.226l-.295.001c-2.307.005-3.016.013-3.777.043l-.21.009-.457.02c-1.072.052-1.654.232-2.042.383-.513.2-.879.44-1.263.825a3.413 3.413 0 00-.82 1.267c-.15.388-.33.97-.375 2.043a48.89 48.89 0 00-.056 2.482v.398 1.565c.006 2.937.018 3.285.073 4.444.05 1.073.231 1.654.382 2.043.2.512.44.878.825 1.263.386.383.753.621 1.267.82.388.15.97.328 2.043.374.207.01.388.017.563.024l.208.007a63.28 63.28 0 002.109.026h1.564c2.938-.006 3.286-.019 4.446-.073 1.071-.051 1.654-.232 2.04-.383.514-.2.88-.44 1.264-.825.384-.386.622-.753.82-1.266.15-.389.328-.971.375-2.044.039-.88.054-1.292.057-2.723v-1.15-.572c-.006-2.936-.019-3.284-.074-4.445-.05-1.071-.23-1.654-.382-2.04-.2-.515-.44-.88-.825-1.264a3.405 3.405 0 00-1.267-.82c-.388-.15-.97-.328-2.042-.375a48.987 48.987 0 00-2.535-.056zm-1.515 3.37a5.65 5.65 0 11.021 11.299 5.65 5.65 0 01-.02-11.3zm.004 1.982a3.667 3.667 0 10.015 7.334 3.667 3.667 0 00-.015-7.334zm5.865-3.536a1.32 1.32 0 11.005 2.64 1.32 1.32 0 01-.005-2.64z\",id:\"a\"})),u(\"g\",{fill:\"none\",\"fill-rule\":\"evenodd\"},u(\"mask\",{id:\"b\",fill:\"#fff\"},u(\"use\",{xlinkHref:\"#a\"})),u(\"image\",{mask:\"url(#b)\",x:\"4\",y:\"4\",width:\"24\",height:\"24\",xlinkHref:\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsCAYAAAAehFoBAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAALKADAAQAAAABAAAALAAAAAD8buejAAALZklEQVRYCVWZC2LbNhAFCRKykvP0bD1506SxRKIzbwHJoU3jv5h9WICU3P7+6zlG2zZvr8s/rW1tN7U0rMll8aDYufdzbLfc1JHmpv3jpPy8tsO+3O2s/O6YMSjTl/qdCds4mIIG60m8vdq2Z+phm2V4vAb9+o7BbZeuoM0NyYazvTvbvlN1MGjHUAesZ/IWWOsCeF0BOwAK4ITR0WYd/QKHEPv2DEymmorZtiubjOHEMYEzXmC9GMxu+95Kz+kuwxjDBKb8iUoCAdqZoAeyALreW6ZNx9Y4Jz8cLwjTZOEoR+HU05k2RzgP2iafGgfZiEdZbEr94zpX/xkPtDtGAxF+LRcgTsp9CAZg0rnEnXmPqFshY5vLnVWxLXO/bah2sZQgBZppGSe8NbjNPN5kc/WbIYEn8U+jXCOezT4zfgS1eoVEhceVeK74Fe4N6CoYEoLWykzHsd+GMAUqdTTVvvqT1uWqB3lVCLb12/ORAe8/5Zu9mp7lqoEFUCAFDIxqz7i1bq2AY1U9jqq2QK/7DYl+1AeZlAFcEc+U/jkRUqsvCHQ/nyGvjrOl6EuZWRWVGCKUMCkntQ5o+u2AZ3OxakbTcoBZnY0xhgGCUM4Kp1xtBTnBnXM5ASRms/Fs7d9OpX8bXN45pibQY/ML1MmA5G9CINBuCpdftexr6i2c5qd9J441LNJm3zk1GVusJ7v6mPJ7HPxJR0Li/vg9O1XHTEgvsQoSgExU0NnlLF0paK+6d06aOMKE2nCKV0ofNw4WsWmLsWrv6lPLnhGpr9E137QkHOMB/jh/T8MOqOadXarR44zPBW5NvDccnBxVmdK81+7RQ5p6qnQoRDZPh9+xWj0N2XpqxX1HzMty9UlFnKya/h3gulziAsyxwkSmpTIPB8vagKLyktRdDuBEHNGZMm4oCFWgjq31WPHpaC93gGNqpOpP4Ez4spa+nMNvhTWcuPKAJ79fqIxVoUvdjEG9qSy2WhpQlz61yG/gnKEA25IrIOYK6DIsQs2EE9LR/sTKq38Nd1y/X//FXG0QDHkEqSz3EYVV2dhb00rgLPSDcqmrScs55NNOD2zVqKmYnYTFnkACp520dkW5vBxK99BVzr792/iZ+VVo92UkKU2oG5WFTb6mNiA1H2C8KC0E44qaQleR3EQvQNwLrECOVAiSwM5gpF7nvDND0lZvYuQ9JbZfqdTrqCgwMcVrRS0z9QkLu9NWmkgEHb8p2zDRylj9VWA3lXD2vObEdWpT3w5MiFqQ1W/lteG4eipastxv2w+TeTBP0ypK84HiOW9fUzLcjRDwCW2b2VxmnGSKTX6uRSwMnC9YX4l05Mh2uwI+QVWdWUOSTWd5Xjjf7/tPYk2stSh053XTGN5RJMCMSajMcS8Trn3j/E1ajthlxCkmJXVi47PSUsyyq+jyexsayQNuv5GVYJaszprNsQD3RkgYiy49kFl2JlJJxlf8Uu/lpkq7+aWqzEzjr5cTVpFaJvSVr8AKRtiTlVPFk5t1nO30W+o6jrbAk76kxFa/tX+dom4C1wDPk03gqCw8HTBSxx4FHxIA+mh2pM3rKu5SNqBAuOSZnHzsB9JwW7DV/ge8dlVsOh375PvH8YO8EALU1HuecIC6qQgXifNuSx9XAoLaoGIYDjkWFrawX1U1XrknuMFw7QBSPtg79XovmBvwqnDICrhClEO6wgKFj9vPqJWlthUvdgH1DOA8+wFMexzQc5BUS1d1IsdBSjEv4Fe1LgBO1CpFPTpV1JuPSFNt4y/trzbtaUfwBWwM3/6JsrL6MSQYwLKXAm9YJBxsM8992MblZ63Gami0+rnwOMyPykVpQsyl9eYNOfVC6kRBkwaop//LgcAKWivkHF791g0JK5kMmCgKPas2QRkUFQsuTvm6R1946Wg95k764ZRLW59yO5UVGsawwELupCfAbdCuAwvcz5Xk18rIVEdgSRBRgO77R206QdXHuA2goaGiCQ0GmUfN1JlmFayjv0IcKGkfYt4HAj0yuQBRGDjzuS/rTmAf29Gov1S+FF7QBayNcpoBOEsMt3vFcIUC7VxOnE+pxmkgqEzduzwsPykrjBszCusgdarsRIAL6CM/KqsqcAf1vj8P1TXFyN6e5G8ao48fjKfDQJYizIdIfb+Xwp6Z2fE2C7mUfUEzMKqSBp4VUV1A49Sz1M2LzVzahEfyHUAcQNltR0nADYkBvHXDZQo8H9dQvHF7qhjPtSolBJ0A/vaLwdRz5YFFGoWBy8E/4aKcjqimaUBXXnjBpzOZnMlIVXsTVEBBUa+dD0BR0xVopgAD70psY0KjMHpmHB2kApea9o23NS83mpsref5OZet4U/0CMhSEDpwnxB9lVKSfk5djllXRFPizQmKcqMpnyZ3ycPntf96Ym9ChzU8vCQnhgWZ2UuySArw+cVBG4gqNCS6YoSEEziRWVStKUpe4FfCd91V0XA/qgOJuF7FpGjjyQgsFoNDtibp8cm+cyXxbB6zh4pMUO4H06yzsv4E/A6rg/uRJRnMRmrhMDIhyOjABX9CMDFhBFxx19KujjqWeim5PwVFU6IBiewfyk7IPETcg52kjXN7nsbaoEykKf/cjUgVxpTZZVtnqFMgv4FHa8oSOisawinMLHfUBzJcK1j8BeqquedKDtgcgnA4bym4P6gBWYVM3W/pn41ku5L4RElFWtlk5SXHEThhOWDiIyVROlQNM+wyHimlgATI/PPIm4BB8qfqwHnhgL89gzs+Ww1xQb4821SZ/4IwOJiRqH/X9u7Hj08JLSZfawOQcpRzwgk1oBNzzcgLn1FBNHspMENik9OG4awIDaUjw9rKNT1KXPl9neua6sSbkgqfs/CNfBdNfDDhQuL4AKXEXeOgZID91eOiRUnEFOIA5rnTkBU0/IT05gByoq5KBJF4Hym4Pxh3UcxZ7HjdhEhKWURbhavNR9rjLBwk3ryDcrGzfvk9I69b1yhMGWQ4bqMwv/RMSplQkjjVKXzZX8wESVcuB7QG0YUCMjk/aOmWgc/vC4oMCVYfghIGP6MT1zpeUhM1rQzOnGxmFKwTCir1Xaj5vN7T7nDZvnbDGHbCKnwji2zofNsOvbold3zlUtKGosBun3PbJSrrReHEaCQVCIDEMaCCBs+P+AbybkbIhmbNecGwF+E5/L2ECuPKCWsUESQkKnyyJ93TGACk7OrAY9P8XG//fGCoM7DAEUGnj5Mw7aQfelySWOm9iPuFyvrL8rKQR6mM6qdCUDQsfNPVu4yv/HaPOT1e/yDaviMKmTkg/I/F7MUG9OlrmDrBLRVd3c8KBJlPEKoVRcIJuhoQAmZDUkPC00W5OI1dOpQ1F61kFNqr9SmFcaHdBheOaDHF6QZMOP6QyiZ804oj98wLiAMIgcWw4UDYkDAWfR+4d5s0zP2GgUZX04i+NeSgYGokvbDhIZYUWHgd9K8zZzir264NxZUFbsfM1jdqpV2naA48tx6hsvBSabE4IMtlcOGgq8PqCjoly2rw2soqy4RJWQtPZl6PUCU14ZUWENuZV2Honn3f+k6R6wrkqgTStyQ0bFY+XAaafMRFgUlVeXxXFUcpLEYfZz3FrVUzZrOOJK+4B/wnIZ8TGRvb9OB8EUM0w8uNYj/oa9iK9AMoy6gA72o02srMxpAPUD+EDnVEF7P5xw896VyAbFk8MgnpVpR3gfLnt/wECq3rYFvYLcKCpqvcI+/hVl8AumXDeApklDRRKJSS+KOaq1Rgg4igOYtiQK1hJy46TBtDjznDp3iqJff5j0/LfSZbYVdauqXccJ9W+czupp0sU9gMlqkQ52lU1E6tUwoDUukAD6YRpAwqDrAErzA8QCRvXm98KEep0xIdY1CN1ye27IP0IHvvYIW18qGz8S7VWUZuMkUOb3P8DHTl67ur/i1UAAAAASUVORK5CYII=\"}))),this.defaultLocale=Gy,this.i18nInit(),this.title=this.i18n(\"pluginNameInstagram\"),this.provider=new be(e,{companionUrl:this.opts.companionUrl,companionHeaders:this.opts.companionHeaders,companionKeysParams:this.opts.companionKeysParams,companionCookiesRule:this.opts.companionCookiesRule,provider:\"instagram\",pluginId:this.id}),this.onFirstRender=this.onFirstRender.bind(this),this.render=this.render.bind(this)}install(){this.view=new Te(this,{provider:this.provider,viewType:\"grid\",showTitles:!1,showFilter:!1,showBreadcrumbs:!1});let{target:e}=this.opts;e&&this.mount(e,this)}uninstall(){this.view.tearDown(),this.unmount()}onFirstRender(){return Promise.all([this.provider.fetchPreAuthToken(),this.view.getFolder(\"recent\")])}render(e){return this.view.render(e)}};n(Zi,\"Instagram\");Zi.VERSION=iP.version;var Ky={strings:{pluginNameOneDrive:\"OneDrive\"}};var rP={version:\"3.1.4\"},er=class extends Z{constructor(e,t){super(e,t),this.id=this.opts.id||\"OneDrive\",be.initPlugin(this,t),this.title=this.opts.title||\"OneDrive\",this.icon=()=>u(\"svg\",{\"aria-hidden\":\"true\",focusable:\"false\",width:\"32\",height:\"32\",viewBox:\"0 0 32 32\"},u(\"g\",{fill:\"none\",fillRule:\"nonzero\"},u(\"path\",{d:\"M13.39 12.888l4.618 2.747 2.752-1.15a4.478 4.478 0 012.073-.352 6.858 6.858 0 00-5.527-5.04 6.895 6.895 0 00-6.876 2.982l.07-.002a5.5 5.5 0 012.89.815z\",fill:\"#0364B8\"}),u(\"path\",{d:\"M13.39 12.887v.001a5.5 5.5 0 00-2.89-.815l-.07.002a5.502 5.502 0 00-4.822 2.964 5.43 5.43 0 00.38 5.62l4.073-1.702 1.81-.757 4.032-1.685 2.105-.88-4.619-2.748z\",fill:\"#0078D4\"}),u(\"path\",{d:\"M22.833 14.133a4.479 4.479 0 00-2.073.352l-2.752 1.15.798.475 2.616 1.556 1.141.68 3.902 2.321a4.413 4.413 0 00-.022-4.25 4.471 4.471 0 00-3.61-2.284z\",fill:\"#1490DF\"}),u(\"path\",{d:\"M22.563 18.346l-1.141-.68-2.616-1.556-.798-.475-2.105.88L11.87 18.2l-1.81.757-4.073 1.702A5.503 5.503 0 0010.5 23h12.031a4.472 4.472 0 003.934-2.333l-3.902-2.321z\",fill:\"#28A8EA\"}))),this.provider=new be(e,{companionUrl:this.opts.companionUrl,companionHeaders:this.opts.companionHeaders,companionCookiesRule:this.opts.companionCookiesRule,provider:\"onedrive\",pluginId:this.id}),this.defaultLocale=Ky,this.i18nInit(),this.title=this.i18n(\"pluginNameOneDrive\"),this.onFirstRender=this.onFirstRender.bind(this),this.render=this.render.bind(this)}install(){this.view=new Te(this,{provider:this.provider,loadAllFiles:!0});let{target:e}=this.opts;e&&this.mount(e,this)}uninstall(){this.view.tearDown(),this.unmount()}onFirstRender(){return Promise.all([this.provider.fetchPreAuthToken(),this.view.getFolder()])}render(e){return this.view.render(e)}};n(er,\"OneDrive\");er.VERSION=rP.version;var sP={version:\"3.2.3\"},tr=class extends Z{constructor(e,t){if(super(e,t),this.id=this.opts.id||\"Unsplash\",this.title=this.opts.title||\"Unsplash\",be.initPlugin(this,t,{}),this.icon=()=>u(\"svg\",{className:\"uppy-DashboardTab-iconUnsplash\",viewBox:\"0 0 32 32\",height:\"32\",width:\"32\",\"aria-hidden\":\"true\"},u(\"g\",{fill:\"currentcolor\"},u(\"path\",{d:\"M46.575 10.883v-9h12v9zm12 5h10v18h-32v-18h10v9h12z\"}),u(\"path\",{d:\"M13 12.5V8h6v4.5zm6 2.5h5v9H8v-9h5v4.5h6z\"}))),!this.opts.companionUrl)throw new Error(\"Companion hostname is required, please consult https://uppy.io/docs/companion\");this.hostname=this.opts.companionUrl,this.provider=new Yr(e,{companionUrl:this.opts.companionUrl,companionHeaders:this.opts.companionHeaders,companionCookiesRule:this.opts.companionCookiesRule,provider:\"unsplash\",pluginId:this.id})}install(){this.view=new ji(this,{provider:this.provider,viewType:\"unsplash\",showFilter:!0});let{target:e}=this.opts;e&&this.mount(e,this)}onFirstRender(){}render(e){return this.view.render(e)}uninstall(){this.unmount()}};n(tr,\"Unsplash\");tr.VERSION=sP.version;function Xy(i,e){if(!Object.prototype.hasOwnProperty.call(i,e))throw new TypeError(\"attempted to use private field on non-instance\");return i}n(Xy,\"_classPrivateFieldLooseBase\");var oP=0;function nP(i){return\"__private_\"+oP+++\"_\"+i}n(nP,\"_classPrivateFieldLooseKey\");var Pa=nP(\"handleSubmit\"),Iu=class extends we{constructor(e){super(e),this.form=document.createElement(\"form\"),Object.defineProperty(this,Pa,{writable:!0,value:t=>{t.preventDefault();let{addFile:r}=this.props,s=this.input.value.trim();r(s)}}),this.form.id=Pt()}componentDidMount(){this.input.value=\"\",this.form.addEventListener(\"submit\",Xy(this,Pa)[Pa]),document.body.appendChild(this.form)}componentWillUnmount(){this.form.removeEventListener(\"submit\",Xy(this,Pa)[Pa]),document.body.removeChild(this.form)}render(){let{i18n:e}=this.props;return u(\"div\",{className:\"uppy-Url\"},u(\"input\",{className:\"uppy-u-reset uppy-c-textInput uppy-Url-input\",type:\"text\",\"aria-label\":e(\"enterUrlToImport\"),placeholder:e(\"enterUrlToImport\"),ref:t=>{this.input=t},\"data-uppy-super-focusable\":!0,form:this.form.id}),u(\"button\",{className:\"uppy-u-reset uppy-c-btn uppy-c-btn-primary uppy-Url-importButton\",type:\"submit\",form:this.form.id},e(\"import\")))}};n(Iu,\"UrlUI\");var Yy=Iu;function Nu(i,e,t){let r=Qe(i.items),s;switch(e){case\"paste\":{if(r.some(a=>a.kind===\"file\"))return;s=r.filter(a=>a.kind===\"string\"&&a.type===\"text/plain\");break}case\"drop\":{s=r.filter(o=>o.kind===\"string\"&&o.type===\"text/uri-list\");break}default:throw new Error(`isDropOrPaste must be either 'drop' or 'paste', but it's ${e}`)}s.forEach(o=>{o.getAsString(a=>t(a))})}n(Nu,\"forEachDroppedOrPastedUrl\");var Qy={strings:{import:\"Import\",enterUrlToImport:\"Enter URL to import a file\",failedToFetch:\"Companion failed to fetch this URL, please make sure it\\u2019s correct\",enterCorrectUrl:\"Incorrect URL: Please make sure you are entering a direct link to a file\"}};var aP={version:\"3.4.0\"};function lP(){return u(\"svg\",{\"aria-hidden\":\"true\",focusable:\"false\",width:\"32\",height:\"32\",viewBox:\"0 0 32 32\"},u(\"path\",{d:\"M23.637 15.312l-2.474 2.464a3.582 3.582 0 01-.577.491c-.907.657-1.897.986-2.968.986a4.925 4.925 0 01-3.959-1.971c-.248-.329-.164-.902.165-1.149.33-.247.907-.164 1.155.164 1.072 1.478 3.133 1.724 4.618.656a.642.642 0 00.33-.328l2.473-2.463c1.238-1.313 1.238-3.366-.082-4.597a3.348 3.348 0 00-4.618 0l-1.402 1.395a.799.799 0 01-1.154 0 .79.79 0 010-1.15l1.402-1.394a4.843 4.843 0 016.843 0c2.062 1.805 2.144 5.007.248 6.896zm-8.081 5.664l-1.402 1.395a3.348 3.348 0 01-4.618 0c-1.319-1.23-1.319-3.365-.082-4.596l2.475-2.464.328-.328c.743-.492 1.567-.739 2.475-.657.906.165 1.648.574 2.143 1.314.248.329.825.411 1.155.165.33-.248.412-.822.165-1.15-.825-1.068-1.98-1.724-3.216-1.888-1.238-.247-2.556.082-3.628.902l-.495.493-2.474 2.464c-1.897 1.969-1.814 5.09.083 6.977.99.904 2.226 1.396 3.463 1.396s2.473-.492 3.463-1.395l1.402-1.396a.79.79 0 000-1.15c-.33-.328-.908-.41-1.237-.082z\",fill:\"#FF753E\",\"fill-rule\":\"nonzero\"}))}n(lP,\"UrlIcon\");function uP(i){let e=/^[a-z0-9]+:\\/\\//,t=\"http://\";return e.test(i)?i:t+i}n(uP,\"addProtocolToURL\");function hP(i){return Qe(i.dataTransfer.items).filter(r=>r.kind===\"string\"&&r.type===\"text/uri-list\").length>0}n(hP,\"canHandleRootDrop\");function dP(i){if(!i)return!1;let e=i.match(/^([a-z0-9]+):\\/\\//)[1];return!(e!==\"http\"&&e!==\"https\")}n(dP,\"checkIfCorrectURL\");function cP(i){let{pathname:e}=new URL(i);return e.substring(e.lastIndexOf(\"/\")+1)}n(cP,\"getFileNameFromUrl\");var Ti=class extends Z{constructor(e,t){super(e,t),this.id=this.opts.id||\"Url\",this.title=this.opts.title||\"Link\",this.type=\"acquirer\",this.icon=()=>u(lP,null),this.defaultLocale=Qy;let r={};if(this.opts={...r,...t},this.i18nInit(),this.hostname=this.opts.companionUrl,!this.hostname)throw new Error(\"Companion hostname is required, please consult https://uppy.io/docs/companion\");this.getMeta=this.getMeta.bind(this),this.addFile=this.addFile.bind(this),this.handleRootDrop=this.handleRootDrop.bind(this),this.handleRootPaste=this.handleRootPaste.bind(this),this.client=new tt(e,{companionUrl:this.opts.companionUrl,companionHeaders:this.opts.companionHeaders,companionCookiesRule:this.opts.companionCookiesRule})}getMeta(e){return this.client.post(\"url/meta\",{url:e}).then(t=>{if(t.error)throw this.uppy.log(\"[URL] Error:\"),this.uppy.log(t.error),new Error(\"Failed to fetch the file\");return t})}async addFile(e,t){t===void 0&&(t=void 0);let r=uP(e);if(!dP(r)){this.uppy.log(`[URL] Incorrect URL entered: ${r}`),this.uppy.info(this.i18n(\"enterCorrectUrl\"),\"error\",4e3);return}try{let s=await this.getMeta(r),o={meta:t,source:this.id,name:s.name||cP(r),type:s.type,data:{size:s.size},isRemote:!0,body:{url:r},remote:{companionUrl:this.opts.companionUrl,url:`${this.hostname}/url/get`,body:{fileId:r,url:r}}};Object.defineProperty(o.remote,\"requestClient\",{value:this.client,enumerable:!1}),this.uppy.log(\"[Url] Adding remote file\");try{return this.uppy.addFile(o)}catch(a){return a.isRestriction||this.uppy.log(a),a}}catch(s){return this.uppy.log(s),this.uppy.info({message:this.i18n(\"failedToFetch\"),details:s},\"error\",4e3),s}}handleRootDrop(e){Nu(e.dataTransfer,\"drop\",t=>{this.uppy.log(`[URL] Adding file from dropped url: ${t}`),this.addFile(t)})}handleRootPaste(e){Nu(e.clipboardData,\"paste\",t=>{this.uppy.log(`[URL] Adding file from pasted url: ${t}`),this.addFile(t)})}render(){return u(Yy,{i18n:this.i18n,addFile:this.addFile})}install(){let{target:e}=this.opts;e&&this.mount(e,this)}uninstall(){this.unmount()}};n(Ti,\"Url\");Ti.VERSION=aP.version;Ti.prototype.canHandleRootDrop=hP;var Jy={strings:{pluginNameZoom:\"Zoom\"}};var pP={version:\"2.1.3\"},ir=class extends Z{constructor(e,t){super(e,t),this.id=this.opts.id||\"Zoom\",be.initPlugin(this,t),this.title=this.opts.title||\"Zoom\",this.icon=()=>u(\"svg\",{\"aria-hidden\":\"true\",focusable:\"false\",width:\"32\",height:\"32\",viewBox:\"0 0 32 32\"},u(\"path\",{d:\"M24.5 11.125l-2.75 2.063c-.473.353-.75.91-.75 1.5v3.124c0 .59.277 1.147.75 1.5l2.75 2.063a.938.938 0 001.5-.75v-8.75a.938.938 0 00-1.5-.75zm-4.75 9.5c0 1.035-.84 1.875-1.875 1.875H9.75A3.75 3.75 0 016 18.75v-6.875C6 10.84 6.84 10 7.875 10H16a3.75 3.75 0 013.75 3.75v6.875z\",fill:\"#2E8CFF\",\"fill-rule\":\"evenodd\"})),this.provider=new be(e,{companionUrl:this.opts.companionUrl,companionHeaders:this.opts.companionHeaders,companionKeysParams:this.opts.companionKeysParams,companionCookiesRule:this.opts.companionCookiesRule,provider:\"zoom\",pluginId:this.id}),this.defaultLocale=Jy,this.i18nInit(),this.title=this.i18n(\"pluginNameZoom\"),this.onFirstRender=this.onFirstRender.bind(this),this.render=this.render.bind(this)}install(){this.view=new Te(this,{provider:this.provider});let{target:e}=this.opts;e&&this.mount(e,this)}uninstall(){this.view.tearDown(),this.unmount()}onFirstRender(){return Promise.all([this.provider.fetchPreAuthToken(),this.view.getFolder()])}render(e){return this.view.render(e)}};n(ir,\"Zoom\");ir.VERSION=pP.version;function nc(i,e){if(!Object.prototype.hasOwnProperty.call(i,e))throw new TypeError(\"attempted to use private field on non-instance\");return i}n(nc,\"_classPrivateFieldLooseBase\");var fP=0;function mP(i){return\"__private_\"+fP+++\"_\"+i}n(mP,\"_classPrivateFieldLooseKey\");var gP={version:\"1.1.0\"},ac={__proto__:null,Box:Xi,Dropbox:Yi,Facebook:Qi,GoogleDrive:Ji,Instagram:Zi,OneDrive:er,Unsplash:tr,Url:Ti,Zoom:ir},Bs=mP(\"installedPlugins\"),zs=class extends ve{constructor(e,t){super(e,t),Object.defineProperty(this,Bs,{writable:!0,value:new Set}),this.id=this.opts.id||\"RemoteSources\",this.type=\"preset\";let r={sources:Object.keys(ac)};if(this.opts={...r,...t},this.opts.companionUrl==null)throw new Error(\"Please specify companionUrl for RemoteSources to work, see https://uppy.io/docs/remote-sources#companionUrl\")}setOptions(e){this.uninstall(),super.setOptions(e),this.install()}install(){this.opts.sources.forEach(e=>{let t={...this.opts,sources:void 0},r=ac[e];if(r==null){let s=Object.keys(ac),o=new Intl.ListFormat(\"en\",{style:\"long\",type:\"disjunction\"});throw new Error(`Invalid plugin: \"${e}\" is not one of: ${o.format(s)}.`)}this.uppy.use(r,t),nc(this,Bs)[Bs].add(this.uppy.getPlugin(e))})}uninstall(){for(let e of nc(this,Bs)[Bs])this.uppy.removePlugin(e);nc(this,Bs)[Bs].clear()}};n(zs,\"RemoteSources\");zs.VERSION=gP.version;var Zy=n(()=>u(\"svg\",{className:\"uppy-DashboardTab-iconScreenRec\",\"aria-hidden\":\"true\",focusable:\"false\",width:\"32\",height:\"32\",viewBox:\"0 0 32 32\"},u(\"g\",{fill:\"currentcolor\",fillRule:\"evenodd\"},u(\"path\",{d:\"M24.182 9H7.818C6.81 9 6 9.742 6 10.667v10c0 .916.81 1.666 1.818 1.666h4.546V24h7.272v-1.667h4.546c1 0 1.809-.75 1.809-1.666l.009-10C26 9.742 25.182 9 24.182 9zM24 21H8V11h16v10z\"}),u(\"circle\",{cx:\"16\",cy:\"16\",r:\"2\"}))),\"default\");function lc(i){let{recording:e,onStartRecording:t,onStopRecording:r,i18n:s}=i;return e?u(\"button\",{className:\"uppy-u-reset uppy-c-btn uppy-ScreenCapture-button uppy-ScreenCapture-button--video uppy-ScreenCapture-button--stop-rec\",type:\"button\",title:s(\"stopCapturing\"),\"aria-label\":s(\"stopCapturing\"),onClick:r,\"data-uppy-super-focusable\":!0},u(\"svg\",{\"aria-hidden\":\"true\",focusable:\"false\",className:\"uppy-c-icon\",width:\"100\",height:\"100\",viewBox:\"0 0 100 100\"},u(\"rect\",{x:\"15\",y:\"15\",width:\"70\",height:\"70\"}))):u(\"button\",{className:\"uppy-u-reset uppy-c-btn uppy-ScreenCapture-button uppy-ScreenCapture-button--video\",type:\"button\",title:s(\"startCapturing\"),\"aria-label\":s(\"startCapturing\"),onClick:t,\"data-uppy-super-focusable\":!0},u(\"svg\",{\"aria-hidden\":\"true\",focusable:\"false\",className:\"uppy-c-icon\",width:\"100\",height:\"100\",viewBox:\"0 0 100 100\"},u(\"circle\",{cx:\"50\",cy:\"50\",r:\"40\"})))}n(lc,\"RecordButton\");function uc(i){let{recording:e,recordedVideo:t,onSubmit:r,i18n:s}=i;return t&&!e?u(\"button\",{className:\"uppy-u-reset uppy-c-btn uppy-ScreenCapture-button uppy-ScreenCapture-button--submit\",type:\"button\",title:s(\"submitRecordedFile\"),\"aria-label\":s(\"submitRecordedFile\"),onClick:r,\"data-uppy-super-focusable\":!0},u(\"svg\",{width:\"12\",height:\"9\",viewBox:\"0 0 12 9\",xmlns:\"http://www.w3.org/2000/svg\",\"aria-hidden\":\"true\",focusable:\"false\",className:\"uppy-c-icon\"},u(\"path\",{fill:\"#fff\",fillRule:\"nonzero\",d:\"M10.66 0L12 1.31 4.136 9 0 4.956l1.34-1.31L4.136 6.38z\"}))):null}n(uc,\"SubmitButton\");var Mu=class extends we{constructor(e){super(e),this.state={elapsedTime:0},this.wrapperStyle={width:\"100%\",height:\"100%\",display:\"flex\"},this.overlayStyle={position:\"absolute\",width:\"100%\",height:\"100%\",background:\"black\",opacity:.7},this.infoContainerStyle={marginLeft:\"auto\",marginRight:\"auto\",marginTop:\"auto\",marginBottom:\"auto\",zIndex:1,color:\"white\"},this.infotextStyle={marginLeft:\"auto\",marginRight:\"auto\",marginBottom:\"1rem\",fontSize:\"1.5rem\"},this.timeStyle={display:\"block\",fontWeight:\"bold\",marginLeft:\"auto\",marginRight:\"auto\",fontSize:\"3rem\",fontFamily:\"Courier New\"}}startTimer(){this.timerTick(),this.timerRunning=!0}resetTimer(){clearTimeout(this.timer),this.setState({elapsedTime:0}),this.timerRunning=!1}timerTick(){this.timer=setTimeout(()=>{this.setState(e=>({elapsedTime:e.elapsedTime+1})),this.timerTick()},1e3)}fmtMSS(e){return(e-(e%=60))/60+(e>9?\":\":\":0\")+e}render(){let{recording:e,i18n:t}={...this.props},{elapsedTime:r}=this.state,s=this.fmtMSS(r);return e&&!this.timerRunning&&this.startTimer(),!e&&this.timerRunning&&this.resetTimer(),e?u(\"div\",{style:this.wrapperStyle},u(\"div\",{style:this.overlayStyle}),u(\"div\",{style:this.infoContainerStyle},u(\"div\",{style:this.infotextStyle},t(\"recording\")),u(\"div\",{style:this.timeStyle},s))):null}};n(Mu,\"StopWatch\");var ev=Mu;var tv=n(i=>{let{streamActive:e,i18n:t}=i;return e?u(\"div\",{title:t(\"streamActive\"),\"aria-label\":t(\"streamActive\"),className:\"uppy-ScreenCapture-icon--stream uppy-ScreenCapture-icon--streamActive\"},u(\"svg\",{\"aria-hidden\":\"true\",focusable:\"false\",width:\"24\",height:\"24\",viewBox:\"0 0 24 24\"},u(\"path\",{d:\"M0 0h24v24H0z\",opacity:\".1\",fill:\"none\"}),u(\"path\",{d:\"M0 0h24v24H0z\",fill:\"none\"}),u(\"path\",{d:\"M1 18v3h3c0-1.66-1.34-3-3-3zm0-4v2c2.76 0 5 2.24 5 5h2c0-3.87-3.13-7-7-7zm18-7H5v1.63c3.96 1.28 7.09 4.41 8.37 8.37H19V7zM1 10v2c4.97 0 9 4.03 9 9h2c0-6.08-4.93-11-11-11zm20-7H3c-1.1 0-2 .9-2 2v3h2V5h18v14h-7v2h7c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2z\"}))):u(\"div\",{title:t(\"streamPassive\"),\"aria-label\":t(\"streamPassive\"),className:\"uppy-ScreenCapture-icon--stream\"},u(\"svg\",{\"aria-hidden\":\"true\",focusable:\"false\",width:\"24\",height:\"24\",viewBox:\"0 0 24 24\"},u(\"path\",{d:\"M0 0h24v24H0z\",opacity:\".1\",fill:\"none\"}),u(\"path\",{d:\"M0 0h24v24H0z\",fill:\"none\"}),u(\"path\",{d:\"M21 3H3c-1.1 0-2 .9-2 2v3h2V5h18v14h-7v2h7c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM1 18v3h3c0-1.66-1.34-3-3-3zm0-4v2c2.76 0 5 2.24 5 5h2c0-3.87-3.13-7-7-7zm0-4v2c4.97 0 9 4.03 9 9h2c0-6.08-4.93-11-11-11z\"})))},\"default\");function hc(){return hc=Object.assign?Object.assign.bind():function(i){for(var e=1;e<arguments.length;e++){var t=arguments[e];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(i[r]=t[r])}return i},hc.apply(this,arguments)}n(hc,\"_extends\");var Lu=class extends we{componentWillUnmount(){let{onStop:e}=this.props;e()}render(){let{recording:e,stream:t,recordedVideo:r}=this.props,s={playsinline:!0};return(e||!r&&!e)&&(s.muted=!0,s.autoplay=!0,s.srcObject=t),r&&!e&&(s.muted=!1,s.controls=!0,s.src=r,this.videoElement&&(this.videoElement.srcObject=void 0)),u(\"div\",{className:\"uppy uppy-ScreenCapture-container\"},u(\"div\",{className:\"uppy-ScreenCapture-videoContainer\"},u(tv,this.props),u(\"video\",hc({ref:o=>{this.videoElement=o},className:\"uppy-ScreenCapture-video\"},s)),u(ev,this.props)),u(\"div\",{className:\"uppy-ScreenCapture-buttonContainer\"},u(lc,this.props),u(uc,this.props)))}};n(Lu,\"RecorderScreen\");var iv=Lu;var rv={strings:{startCapturing:\"Begin screen capturing\",stopCapturing:\"Stop screen capturing\",submitRecordedFile:\"Submit recorded file\",streamActive:\"Stream active\",streamPassive:\"Stream passive\",micDisabled:\"Microphone access denied by user\",recording:\"Recording\"}};function dc(){return dc=Object.assign?Object.assign.bind():function(i){for(var e=1;e<arguments.length;e++){var t=arguments[e];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(i[r]=t[r])}return i},dc.apply(this,arguments)}n(dc,\"_extends\");var yP={version:\"3.1.3\"};function vP(){var i;return window.MediaRecorder&&((i=navigator.mediaDevices)==null?void 0:i.getDisplayMedia)}n(vP,\"isScreenRecordingSupported\");function bP(){return window.MediaRecorder&&navigator.mediaDevices}n(bP,\"getMediaDevices\");var as=class extends Z{constructor(e,t){super(e,t),this.mediaDevices=bP(),this.protocol=location.protocol===\"https:\"?\"https\":\"http\",this.id=this.opts.id||\"ScreenCapture\",this.title=this.opts.title||\"Screencast\",this.type=\"acquirer\",this.icon=Zy,this.defaultLocale=rv;let r={displayMediaConstraints:{video:{width:1280,height:720,frameRate:{ideal:3,max:5},cursor:\"motion\",displaySurface:\"monitor\"}},userMediaConstraints:{audio:!0},preferredVideoMimeType:\"video/webm\"};this.opts={...r,...t},this.i18nInit(),this.install=this.install.bind(this),this.setPluginState=this.setPluginState.bind(this),this.render=this.render.bind(this),this.start=this.start.bind(this),this.stop=this.stop.bind(this),this.startRecording=this.startRecording.bind(this),this.stopRecording=this.stopRecording.bind(this),this.submit=this.submit.bind(this),this.streamInterrupted=this.streamInactivated.bind(this),this.captureActive=!1,this.capturedMediaFile=null}install(){if(!vP())return this.uppy.log(\"Screen recorder access is not supported\",\"warning\"),null;this.setPluginState({streamActive:!1,audioStreamActive:!1});let{target:e}=this.opts;e&&this.mount(e,this)}uninstall(){this.videoStream&&this.stop(),this.unmount()}start(){return this.mediaDevices?(this.captureActive=!0,this.selectAudioStreamSource(),this.selectVideoStreamSource().then(e=>{e===!1&&this.parent&&this.parent.hideAllPanels&&(this.parent.hideAllPanels(),this.captureActive=!1)})):Promise.reject(new Error(\"Screen recorder access not supported\"))}selectVideoStreamSource(){return this.videoStream?new Promise(e=>e(this.videoStream)):this.mediaDevices.getDisplayMedia(this.opts.displayMediaConstraints).then(e=>(this.videoStream=e,this.videoStream.addEventListener(\"inactive\",()=>{this.streamInactivated()}),this.setPluginState({streamActive:!0}),e)).catch(e=>(this.setPluginState({screenRecError:e}),this.userDenied=!0,setTimeout(()=>{this.userDenied=!1},1e3),!1))}selectAudioStreamSource(){return this.audioStream?new Promise(e=>e(this.audioStream)):this.mediaDevices.getUserMedia(this.opts.userMediaConstraints).then(e=>(this.audioStream=e,this.setPluginState({audioStreamActive:!0}),e)).catch(e=>(e.name===\"NotAllowedError\"&&(this.uppy.info(this.i18n(\"micDisabled\"),\"error\",5e3),this.uppy.log(this.i18n(\"micDisabled\"),\"warning\")),!1))}startRecording(){let e={};this.capturedMediaFile=null,this.recordingChunks=[];let{preferredVideoMimeType:t}=this.opts;this.selectVideoStreamSource().then(r=>{t&&MediaRecorder.isTypeSupported(t)&&Ki(t)&&(e.mimeType=t);let s=[r.getVideoTracks()[0]];this.audioStream&&s.push(this.audioStream.getAudioTracks()[0]),this.outputStream=new MediaStream(s),this.recorder=new MediaRecorder(this.outputStream,e),this.recorder.addEventListener(\"dataavailable\",o=>{this.recordingChunks.push(o.data)}),this.recorder.start(),this.setPluginState({recording:!0})}).catch(r=>{this.uppy.log(r,\"error\")})}streamInactivated(){let{recordedVideo:e,recording:t}={...this.getPluginState()};!e&&!t?this.parent&&this.parent.hideAllPanels&&this.parent.hideAllPanels():t&&(this.uppy.log(\"Capture stream inactive \\u2014 stop recording\"),this.stopRecording()),this.videoStream=null,this.audioStream=null,this.setPluginState({streamActive:!1,audioStreamActive:!1})}stopRecording(){return new Promise(t=>{this.recorder.addEventListener(\"stop\",()=>{t()}),this.recorder.stop()}).then(()=>(this.setPluginState({recording:!1}),this.getVideo())).then(t=>{this.capturedMediaFile=t,this.setPluginState({recordedVideo:URL.createObjectURL(t.data)})}).then(()=>{this.recordingChunks=null,this.recorder=null},t=>{throw this.recordingChunks=null,this.recorder=null,t})}submit(){try{this.capturedMediaFile&&this.uppy.addFile(this.capturedMediaFile)}catch(e){e.isRestriction||this.uppy.log(e,\"warning\")}}stop(){this.videoStream&&(this.videoStream.getVideoTracks().forEach(e=>{e.stop()}),this.videoStream.getAudioTracks().forEach(e=>{e.stop()}),this.videoStream=null),this.audioStream&&(this.audioStream.getAudioTracks().forEach(e=>{e.stop()}),this.audioStream.getVideoTracks().forEach(e=>{e.stop()}),this.audioStream=null),this.outputStream&&(this.outputStream.getAudioTracks().forEach(e=>{e.stop()}),this.outputStream.getVideoTracks().forEach(e=>{e.stop()}),this.outputStream=null),this.setPluginState({recordedVideo:null}),this.captureActive=!1}getVideo(){let e=this.recordingChunks[0].type,t=Ki(e);if(!t)return Promise.reject(new Error(`Could not retrieve recording: Unsupported media type \"${e}\"`));let r=`screencap-${Date.now()}.${t}`,s=new Blob(this.recordingChunks,{type:e}),o={source:this.id,name:r,data:new Blob([s],{type:e}),type:e};return Promise.resolve(o)}render(){let e=this.getPluginState();return!e.streamActive&&!this.captureActive&&!this.userDenied&&this.start(),u(iv,dc({},e,{onStartRecording:this.startRecording,onStopRecording:this.stopRecording,onStop:this.stop,onSubmit:this.submit,i18n:this.i18n,stream:this.videoStream}))}};n(as,\"ScreenCapture\");as.VERSION=yP.version;var pv=de(sv(),1);function pc(i,e,t){return new Promise(r=>{i.toBlob(r,e,t)})}n(pc,\"canvasToBlob\");function fc(){return typeof MediaRecorder==\"function\"&&!!MediaRecorder.prototype&&typeof MediaRecorder.prototype.start==\"function\"}n(fc,\"supportsMediaRecorder\");var zu=n(()=>u(\"svg\",{\"aria-hidden\":\"true\",focusable:\"false\",fill:\"#0097DC\",width:\"66\",height:\"55\",viewBox:\"0 0 66 55\"},u(\"path\",{d:\"M57.3 8.433c4.59 0 8.1 3.51 8.1 8.1v29.7c0 4.59-3.51 8.1-8.1 8.1H8.7c-4.59 0-8.1-3.51-8.1-8.1v-29.7c0-4.59 3.51-8.1 8.1-8.1h9.45l4.59-7.02c.54-.54 1.35-1.08 2.16-1.08h16.2c.81 0 1.62.54 2.16 1.08l4.59 7.02h9.45zM33 14.64c-8.62 0-15.393 6.773-15.393 15.393 0 8.62 6.773 15.393 15.393 15.393 8.62 0 15.393-6.773 15.393-15.393 0-8.62-6.773-15.393-15.393-15.393zM33 40c-5.648 0-9.966-4.319-9.966-9.967 0-5.647 4.318-9.966 9.966-9.966s9.966 4.319 9.966 9.966C42.966 35.681 38.648 40 33 40z\",fillRule:\"evenodd\"})),\"default\");var ov=n(i=>{let{onSnapshot:e,i18n:t}=i;return u(\"button\",{className:\"uppy-u-reset uppy-c-btn uppy-Webcam-button uppy-Webcam-button--picture\",type:\"button\",title:t(\"takePicture\"),\"aria-label\":t(\"takePicture\"),onClick:e,\"data-uppy-super-focusable\":!0},zu())},\"default\");function mc(i){let{recording:e,onStartRecording:t,onStopRecording:r,i18n:s}=i;return e?u(\"button\",{className:\"uppy-u-reset uppy-c-btn uppy-Webcam-button\",type:\"button\",title:s(\"stopRecording\"),\"aria-label\":s(\"stopRecording\"),onClick:r,\"data-uppy-super-focusable\":!0},u(\"svg\",{\"aria-hidden\":\"true\",focusable:\"false\",className:\"uppy-c-icon\",width:\"100\",height:\"100\",viewBox:\"0 0 100 100\"},u(\"rect\",{x:\"15\",y:\"15\",width:\"70\",height:\"70\"}))):u(\"button\",{className:\"uppy-u-reset uppy-c-btn uppy-Webcam-button\",type:\"button\",title:s(\"startRecording\"),\"aria-label\":s(\"startRecording\"),onClick:t,\"data-uppy-super-focusable\":!0},u(\"svg\",{\"aria-hidden\":\"true\",focusable:\"false\",className:\"uppy-c-icon\",width:\"100\",height:\"100\",viewBox:\"0 0 100 100\"},u(\"circle\",{cx:\"50\",cy:\"50\",r:\"40\"})))}n(mc,\"RecordButton\");function gc(i){return`${Math.floor(i/60)}:${String(i%60).padStart(2,0)}`}n(gc,\"formatSeconds\");function yc(i){let{recordingLengthSeconds:e,i18n:t}=i,r=gc(e);return u(\"span\",{\"aria-label\":t(\"recordingLength\",{recording_length:r})},r)}n(yc,\"RecordingLength\");var nv=n(i=>{let{currentDeviceId:e,videoSources:t,onChangeVideoSource:r}=i;return u(\"div\",{className:\"uppy-Webcam-videoSource\"},u(\"select\",{className:\"uppy-u-reset uppy-Webcam-videoSource-select\",onChange:s=>{r(s.target.value)}},t.map(s=>u(\"option\",{key:s.deviceId,value:s.deviceId,selected:s.deviceId===e},s.label))))},\"default\");function _P(i){let{onSubmit:e,i18n:t}=i;return u(\"button\",{className:\"uppy-u-reset uppy-c-btn uppy-Webcam-button uppy-Webcam-button--submit\",type:\"button\",title:t(\"submitRecordedFile\"),\"aria-label\":t(\"submitRecordedFile\"),onClick:e,\"data-uppy-super-focusable\":!0},u(\"svg\",{width:\"12\",height:\"9\",viewBox:\"0 0 12 9\",xmlns:\"http://www.w3.org/2000/svg\",\"aria-hidden\":\"true\",focusable:\"false\",className:\"uppy-c-icon\"},u(\"path\",{fill:\"#fff\",fillRule:\"nonzero\",d:\"M10.66 0L12 1.31 4.136 9 0 4.956l1.34-1.31L4.136 6.38z\"})))}n(_P,\"SubmitButton\");var av=_P;function xP(i){let{onDiscard:e,i18n:t}=i;return u(\"button\",{className:\"uppy-u-reset uppy-c-btn uppy-Webcam-button uppy-Webcam-button--discard\",type:\"button\",title:t(\"discardRecordedFile\"),\"aria-label\":t(\"discardRecordedFile\"),onClick:e,\"data-uppy-super-focusable\":!0},u(\"svg\",{width:\"13\",height:\"13\",viewBox:\"0 0 13 13\",xmlns:\"http://www.w3.org/2000/svg\",\"aria-hidden\":\"true\",focusable:\"false\",className:\"uppy-c-icon\"},u(\"g\",{fill:\"#FFF\",fillRule:\"evenodd\"},u(\"path\",{d:\"M.496 11.367L11.103.76l1.414 1.414L1.911 12.781z\"}),u(\"path\",{d:\"M11.104 12.782L.497 2.175 1.911.76l10.607 10.606z\"}))))}n(xP,\"DiscardButton\");var lv=xP;function vc(){return vc=Object.assign?Object.assign.bind():function(i){for(var e=1;e<arguments.length;e++){var t=arguments[e];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(i[r]=t[r])}return i},vc.apply(this,arguments)}n(vc,\"_extends\");function ju(i,e){return i.includes(e)}n(ju,\"isModeAvailable\");var Hu=class extends we{componentDidMount(){let{onFocus:e}=this.props;e()}componentWillUnmount(){let{onStop:e}=this.props;e()}render(){let{src:e,recordedVideo:t,recording:r,modes:s,supportsRecording:o,videoSources:a,showVideoSourceDropdown:l,showRecordingLength:h,onSubmit:p,i18n:d,mirror:f,onSnapshot:y,onStartRecording:b,onStopRecording:S,onDiscardRecordedVideo:E,recordingLengthSeconds:x}=this.props,F=!!t,U=!F&&o&&(ju(s,\"video-only\")||ju(s,\"audio-only\")||ju(s,\"video-audio\")),j=!F&&ju(s,\"picture\"),G=o&&h&&!F,J=l&&a&&a.length>1,B={playsinline:!0};return t?(B.muted=!1,B.controls=!0,B.src=t,this.videoElement&&(this.videoElement.srcObject=void 0)):(B.muted=!0,B.autoplay=!0,B.srcObject=e),u(\"div\",{className:\"uppy uppy-Webcam-container\"},u(\"div\",{className:\"uppy-Webcam-videoContainer\"},u(\"video\",vc({ref:z=>this.videoElement=z,className:`uppy-Webcam-video  ${f?\"uppy-Webcam-video--mirrored\":\"\"}`},B))),u(\"div\",{className:\"uppy-Webcam-footer\"},u(\"div\",{className:\"uppy-Webcam-videoSourceContainer\"},J?nv(this.props):null),u(\"div\",{className:\"uppy-Webcam-buttonContainer\"},j&&u(ov,{onSnapshot:y,i18n:d}),U&&u(mc,{recording:r,onStartRecording:b,onStopRecording:S,i18n:d}),F&&u(av,{onSubmit:p,i18n:d}),F&&u(lv,{onDiscard:E,i18n:d})),u(\"div\",{className:\"uppy-Webcam-recordingLength\"},G&&u(yc,{recordingLengthSeconds:x,i18n:d}))))}};n(Hu,\"CameraScreen\");var uv=Hu;var hv=n(i=>{let{icon:e,i18n:t,hasCamera:r}=i;return u(\"div\",{className:\"uppy-Webcam-permissons\"},u(\"div\",{className:\"uppy-Webcam-permissonsIcon\"},e()),u(\"h1\",{className:\"uppy-Webcam-title\"},t(r?\"allowAccessTitle\":\"noCameraTitle\")),u(\"p\",null,t(r?\"allowAccessDescription\":\"noCameraDescription\")))},\"default\");var dv={strings:{pluginNameCamera:\"Camera\",noCameraTitle:\"Camera Not Available\",noCameraDescription:\"In order to take pictures or record video, please connect a camera device\",recordingStoppedMaxSize:\"Recording stopped because the file size is about to exceed the limit\",submitRecordedFile:\"Submit recorded file\",discardRecordedFile:\"Discard recorded file\",smile:\"Smile!\",takePicture:\"Take a picture\",startRecording:\"Begin video recording\",stopRecording:\"Stop video recording\",recordingLength:\"Recording length %{recording_length}\",allowAccessTitle:\"Please allow access to your camera\",allowAccessDescription:\"In order to take pictures or record video with your camera, please allow camera access for this site.\"}};function wc(){return wc=Object.assign?Object.assign.bind():function(i){for(var e=1;e<arguments.length;e++){var t=arguments[e];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(i[r]=t[r])}return i},wc.apply(this,arguments)}n(wc,\"_extends\");function _a(i,e){if(!Object.prototype.hasOwnProperty.call(i,e))throw new TypeError(\"attempted to use private field on non-instance\");return i}n(_a,\"_classPrivateFieldLooseBase\");var FP=0;function EP(i){return\"__private_\"+FP+++\"_\"+i}n(EP,\"_classPrivateFieldLooseKey\");var OP={version:\"3.3.4\"};function cv(i){return i[0]===\".\"?fn[i.slice(1)]:i}n(cv,\"toMimeType\");function CP(i){return/^video\\/[^*]+$/.test(i)}n(CP,\"isVideoMimeType\");function TP(i){return/^image\\/[^*]+$/.test(i)}n(TP,\"isImageMimeType\");function AP(){return navigator.mediaDevices}n(AP,\"getMediaDevices\");function bc(i,e){return i.includes(e)}n(bc,\"isModeAvailable\");var Ai=EP(\"enableMirror\"),ls=class extends Z{constructor(e,t){super(e,t),Object.defineProperty(this,Ai,{writable:!0,value:void 0}),this.mediaDevices=AP(),this.supportsUserMedia=!!this.mediaDevices,this.protocol=location.protocol.match(/https/i)?\"https\":\"http\",this.id=this.opts.id||\"Webcam\",this.type=\"acquirer\",this.capturedMediaFile=null,this.icon=()=>u(\"svg\",{\"aria-hidden\":\"true\",focusable:\"false\",width:\"32\",height:\"32\",viewBox:\"0 0 32 32\"},u(\"path\",{d:\"M23.5 9.5c1.417 0 2.5 1.083 2.5 2.5v9.167c0 1.416-1.083 2.5-2.5 2.5h-15c-1.417 0-2.5-1.084-2.5-2.5V12c0-1.417 1.083-2.5 2.5-2.5h2.917l1.416-2.167C13 7.167 13.25 7 13.5 7h5c.25 0 .5.167.667.333L20.583 9.5H23.5zM16 11.417a4.706 4.706 0 00-4.75 4.75 4.704 4.704 0 004.75 4.75 4.703 4.703 0 004.75-4.75c0-2.663-2.09-4.75-4.75-4.75zm0 7.825c-1.744 0-3.076-1.332-3.076-3.074 0-1.745 1.333-3.077 3.076-3.077 1.744 0 3.074 1.333 3.074 3.076s-1.33 3.075-3.074 3.075z\",fill:\"#02B383\",fillRule:\"nonzero\"})),this.defaultLocale=dv;let r={onBeforeSnapshot:()=>Promise.resolve(),countdown:!1,modes:[\"video-audio\",\"video-only\",\"audio-only\",\"picture\"],mirror:!0,showVideoSourceDropdown:!1,facingMode:\"user\",videoConstraints:void 0,preferredImageMimeType:null,preferredVideoMimeType:null,showRecordingLength:!1,mobileNativeCamera:(0,pv.default)({tablet:!0})};this.opts={...r,...t},this.i18nInit(),this.title=this.i18n(\"pluginNameCamera\"),_a(this,Ai)[Ai]=this.opts.mirror,this.install=this.install.bind(this),this.setPluginState=this.setPluginState.bind(this),this.render=this.render.bind(this),this.start=this.start.bind(this),this.stop=this.stop.bind(this),this.takeSnapshot=this.takeSnapshot.bind(this),this.startRecording=this.startRecording.bind(this),this.stopRecording=this.stopRecording.bind(this),this.discardRecordedVideo=this.discardRecordedVideo.bind(this),this.submit=this.submit.bind(this),this.oneTwoThreeSmile=this.oneTwoThreeSmile.bind(this),this.focus=this.focus.bind(this),this.changeVideoSource=this.changeVideoSource.bind(this),this.webcamActive=!1,this.opts.countdown&&(this.opts.onBeforeSnapshot=this.oneTwoThreeSmile),this.setPluginState({hasCamera:!1,cameraReady:!1,cameraError:null,recordingLengthSeconds:0,videoSources:[],currentDeviceId:null})}setOptions(e){super.setOptions({...e,videoConstraints:{...this.opts.videoConstraints,...e?.videoConstraints}})}hasCameraCheck(){return this.mediaDevices?this.mediaDevices.enumerateDevices().then(e=>e.some(t=>t.kind===\"videoinput\")):Promise.resolve(!1)}isAudioOnly(){return this.opts.modes.length===1&&this.opts.modes[0]===\"audio-only\"}getConstraints(e){e===void 0&&(e=null);let t=this.opts.modes.indexOf(\"video-audio\")!==-1||this.opts.modes.indexOf(\"audio-only\")!==-1,r=!this.isAudioOnly()&&(this.opts.modes.indexOf(\"video-audio\")!==-1||this.opts.modes.indexOf(\"video-only\")!==-1||this.opts.modes.indexOf(\"picture\")!==-1),s={...this.opts.videoConstraints||{facingMode:this.opts.facingMode},...e?{deviceId:e,facingMode:null}:{}};return{audio:t,video:r?s:!1}}start(e){if(e===void 0&&(e=null),!this.supportsUserMedia)return Promise.reject(new Error(\"Webcam access not supported\"));this.webcamActive=!0,this.opts.mirror&&(_a(this,Ai)[Ai]=!0);let t=this.getConstraints(e&&e.deviceId?e.deviceId:null);this.hasCameraCheck().then(r=>(this.setPluginState({hasCamera:r}),this.mediaDevices.getUserMedia(t).then(s=>{this.stream=s;let o=null,a=this.isAudioOnly()?s.getAudioTracks():s.getVideoTracks();!e||!e.deviceId?o=a[0].getSettings().deviceId:a.forEach(l=>{l.getSettings().deviceId===e.deviceId&&(o=l.getSettings().deviceId)}),this.updateVideoSources(),this.setPluginState({currentDeviceId:o,cameraReady:!0})}).catch(s=>{this.setPluginState({cameraReady:!1,cameraError:s}),this.uppy.info(s.message,\"error\")})))}getMediaRecorderOptions(){let e={};if(MediaRecorder.isTypeSupported){let{restrictions:t}=this.uppy.opts,r=[];this.opts.preferredVideoMimeType?r=[this.opts.preferredVideoMimeType]:t.allowedFileTypes&&(r=t.allowedFileTypes.map(cv).filter(CP));let s=n(a=>MediaRecorder.isTypeSupported(a)&&Ki(a),\"filterSupportedTypes\"),o=r.filter(s);o.length>0&&(e.mimeType=o[0])}return e}startRecording(){this.recorder=new MediaRecorder(this.stream,this.getMediaRecorderOptions()),this.recordingChunks=[];let e=!1;this.recorder.addEventListener(\"dataavailable\",t=>{this.recordingChunks.push(t.data);let{restrictions:r}=this.uppy.opts;if(this.recordingChunks.length>1&&r.maxFileSize!=null&&!e){let s=this.recordingChunks.reduce((h,p)=>h+p.size,0),a=(s-this.recordingChunks[0].size)/(this.recordingChunks.length-1)*3,l=Math.max(0,r.maxFileSize-a);s>l&&(e=!0,this.uppy.info(this.i18n(\"recordingStoppedMaxSize\"),\"warning\",4e3),this.stopRecording())}}),this.recorder.start(500),this.opts.showRecordingLength&&(this.recordingLengthTimer=setInterval(()=>{let t=this.getPluginState().recordingLengthSeconds;this.setPluginState({recordingLengthSeconds:t+1})},1e3)),this.setPluginState({isRecording:!0})}stopRecording(){return new Promise(t=>{this.recorder.addEventListener(\"stop\",()=>{t()}),this.recorder.stop(),this.opts.showRecordingLength&&(clearInterval(this.recordingLengthTimer),this.setPluginState({recordingLengthSeconds:0}))}).then(()=>(this.setPluginState({isRecording:!1}),this.getVideo())).then(t=>{try{this.capturedMediaFile=t,this.setPluginState({recordedVideo:URL.createObjectURL(t.data)}),_a(this,Ai)[Ai]=!1}catch(r){r.isRestriction||this.uppy.log(r)}}).then(()=>{this.recordingChunks=null,this.recorder=null},t=>{throw this.recordingChunks=null,this.recorder=null,t})}discardRecordedVideo(){this.setPluginState({recordedVideo:null}),this.opts.mirror&&(_a(this,Ai)[Ai]=!0),this.capturedMediaFile=null}submit(){try{this.capturedMediaFile&&this.uppy.addFile(this.capturedMediaFile)}catch(e){e.isRestriction||this.uppy.log(e,\"error\")}}async stop(){if(this.stream){let e=this.stream.getAudioTracks(),t=this.stream.getVideoTracks();e.concat(t).forEach(r=>r.stop())}this.recorder&&await new Promise(e=>{this.recorder.addEventListener(\"stop\",e,{once:!0}),this.recorder.stop(),this.opts.showRecordingLength&&clearInterval(this.recordingLengthTimer)}),this.recordingChunks=null,this.recorder=null,this.webcamActive=!1,this.stream=null,this.setPluginState({recordedVideo:null,isRecording:!1,recordingLengthSeconds:0})}getVideoElement(){return this.el.querySelector(\".uppy-Webcam-video\")}oneTwoThreeSmile(){return new Promise((e,t)=>{let r=this.opts.countdown,s=setInterval(()=>{if(!this.webcamActive)return clearInterval(s),this.captureInProgress=!1,t(new Error(\"Webcam is not active\"));r>0?(this.uppy.info(`${r}...`,\"warning\",800),r--):(clearInterval(s),this.uppy.info(this.i18n(\"smile\"),\"success\",1500),setTimeout(()=>e(),1500))},1e3)})}takeSnapshot(){this.captureInProgress||(this.captureInProgress=!0,this.opts.onBeforeSnapshot().catch(e=>{let t=typeof e==\"object\"?e.message:e;return this.uppy.info(t,\"error\",5e3),Promise.reject(new Error(`onBeforeSnapshot: ${t}`))}).then(()=>this.getImage()).then(e=>{this.captureInProgress=!1;try{this.uppy.addFile(e)}catch(t){t.isRestriction||this.uppy.log(t)}},e=>{throw this.captureInProgress=!1,e}))}getImage(){let e=this.getVideoElement();if(!e)return Promise.reject(new Error(\"No video element found, likely due to the Webcam tab being closed.\"));let t=e.videoWidth,r=e.videoHeight,s=document.createElement(\"canvas\");s.width=t,s.height=r,s.getContext(\"2d\").drawImage(e,0,0);let{restrictions:a}=this.uppy.opts,l=[];this.opts.preferredImageMimeType?l=[this.opts.preferredImageMimeType]:a.allowedFileTypes&&(l=a.allowedFileTypes.map(cv).filter(TP));let h=l[0]||\"image/jpeg\",p=Ki(h)||\"jpg\",d=`cam-${Date.now()}.${p}`;return pc(s,h).then(f=>({source:this.id,name:d,data:new Blob([f],{type:h}),type:h}))}getVideo(){let e=this.recordingChunks.find(a=>{var l;return((l=a.type)==null?void 0:l.length)>0}).type,t=Ki(e);if(!t)return Promise.reject(new Error(`Could not retrieve recording: Unsupported media type \"${e}\"`));let r=`webcam-${Date.now()}.${t}`,s=new Blob(this.recordingChunks,{type:e}),o={source:this.id,name:r,data:new Blob([s],{type:e}),type:e};return Promise.resolve(o)}focus(){this.opts.countdown&&setTimeout(()=>{this.uppy.info(this.i18n(\"smile\"),\"success\",1500)},1e3)}changeVideoSource(e){this.stop(),this.start({deviceId:e})}updateVideoSources(){this.mediaDevices.enumerateDevices().then(e=>{this.setPluginState({videoSources:e.filter(t=>t.kind===\"videoinput\")})})}render(){this.webcamActive||this.start();let e=this.getPluginState();return!e.cameraReady||!e.hasCamera?u(hv,{icon:zu,i18n:this.i18n,hasCamera:e.hasCamera}):u(uv,wc({},e,{onChangeVideoSource:this.changeVideoSource,onSnapshot:this.takeSnapshot,onStartRecording:this.startRecording,onStopRecording:this.stopRecording,onDiscardRecordedVideo:this.discardRecordedVideo,onSubmit:this.submit,onFocus:this.focus,onStop:this.stop,i18n:this.i18n,modes:this.opts.modes,showRecordingLength:this.opts.showRecordingLength,showVideoSourceDropdown:this.opts.showVideoSourceDropdown,supportsRecording:fc(),recording:e.isRecording,mirror:_a(this,Ai)[Ai],src:this.stream}))}install(){let{mobileNativeCamera:e,modes:t,facingMode:r,videoConstraints:s}=this.opts,{target:o}=this.opts;if(e&&o){var a;(a=this.getTargetPlugin(o))==null||a.setOptions({showNativeVideoCameraButton:bc(t,\"video-only\")||bc(t,\"video-audio\"),showNativePhotoCameraButton:bc(t,\"picture\"),nativeCameraFacingMode:s?.facingMode||r});return}this.setPluginState({cameraReady:!1,recordingLengthSeconds:0}),o&&this.mount(o,this),this.mediaDevices&&(this.updateVideoSources(),this.mediaDevices.ondevicechange=()=>{if(this.updateVideoSources(),this.stream){let l=!0,{videoSources:h,currentDeviceId:p}=this.getPluginState();h.forEach(d=>{p===d.deviceId&&(l=!1)}),l&&(this.stop(),this.start())}})}uninstall(){this.stop(),this.unmount()}onUnmount(){this.stop()}};n(ls,\"Webcam\");ls.VERSION=OP.version;function Dr(i,e){if(!Object.prototype.hasOwnProperty.call(i,e))throw new TypeError(\"attempted to use private field on non-instance\");return i}n(Dr,\"_classPrivateFieldLooseBase\");var RP=0;function fv(i){return\"__private_\"+RP+++\"_\"+i}n(fv,\"_classPrivateFieldLooseKey\");var Dt=fv(\"uppy\"),xa=fv(\"events\"),mi=class{constructor(e){Object.defineProperty(this,Dt,{writable:!0,value:void 0}),Object.defineProperty(this,xa,{writable:!0,value:[]}),Dr(this,Dt)[Dt]=e}on(e,t){return Dr(this,xa)[xa].push([e,t]),Dr(this,Dt)[Dt].on(e,t)}remove(){for(let[e,t]of Dr(this,xa)[xa].splice(0))Dr(this,Dt)[Dt].off(e,t)}onFilePause(e,t){this.on(\"upload-pause\",(r,s)=>{e===r&&t(s)})}onFileRemove(e,t){this.on(\"file-removed\",r=>{e===r.id&&t(r.id)})}onPause(e,t){this.on(\"upload-pause\",(r,s)=>{e===r&&t(s)})}onRetry(e,t){this.on(\"upload-retry\",r=>{e===r&&t()})}onRetryAll(e,t){this.on(\"retry-all\",()=>{Dr(this,Dt)[Dt].getFile(e)&&t()})}onPauseAll(e,t){this.on(\"pause-all\",()=>{Dr(this,Dt)[Dt].getFile(e)&&t()})}onCancelAll(e,t){var r=this;this.on(\"cancel-all\",function(){Dr(r,Dt)[Dt].getFile(e)&&t(...arguments)})}onResumeAll(e,t){this.on(\"resume-all\",()=>{Dr(this,Dt)[Dt].getFile(e)&&t()})}};n(mi,\"EventManager\");function Y(i,e){if(!Object.prototype.hasOwnProperty.call(i,e))throw new TypeError(\"attempted to use private field on non-instance\");return i}n(Y,\"_classPrivateFieldLooseBase\");var UP=0;function qt(i){return\"__private_\"+UP+++\"_\"+i}n(qt,\"_classPrivateFieldLooseKey\");function kP(i){return new Error(\"Cancelled\",{cause:i})}n(kP,\"createCancelError\");function mv(i){if(i!=null){var e;let t=n(()=>this.abort(i.reason),\"abortPromise\");i.addEventListener(\"abort\",t,{once:!0});let r=n(()=>{i.removeEventListener(\"abort\",t)},\"removeAbortListener\");(e=this.then)==null||e.call(this,r,r)}return this}n(mv,\"abortOn\");var ii=qt(\"activeRequests\"),Nt=qt(\"queuedHandlers\"),ti=qt(\"paused\"),js=qt(\"pauseTimer\"),It=qt(\"downLimit\"),Hs=qt(\"upperLimit\"),Ir=qt(\"rateLimitingTimer\"),Fa=qt(\"call\"),Nr=qt(\"queueNext\"),_c=qt(\"next\"),Sc=qt(\"queue\"),xc=qt(\"dequeue\"),Pc=qt(\"resume\"),$s=qt(\"increaseLimit\"),Mt=class{constructor(e){Object.defineProperty(this,xc,{value:LP}),Object.defineProperty(this,Sc,{value:MP}),Object.defineProperty(this,_c,{value:NP}),Object.defineProperty(this,Nr,{value:IP}),Object.defineProperty(this,Fa,{value:DP}),Object.defineProperty(this,ii,{writable:!0,value:0}),Object.defineProperty(this,Nt,{writable:!0,value:[]}),Object.defineProperty(this,ti,{writable:!0,value:!1}),Object.defineProperty(this,js,{writable:!0,value:void 0}),Object.defineProperty(this,It,{writable:!0,value:1}),Object.defineProperty(this,Hs,{writable:!0,value:void 0}),Object.defineProperty(this,Ir,{writable:!0,value:void 0}),Object.defineProperty(this,Pc,{writable:!0,value:()=>this.resume()}),Object.defineProperty(this,$s,{writable:!0,value:()=>{if(Y(this,ti)[ti]){Y(this,Ir)[Ir]=setTimeout(Y(this,$s)[$s],0);return}Y(this,It)[It]=this.limit,this.limit=Math.ceil((Y(this,Hs)[Hs]+Y(this,It)[It])/2);for(let t=Y(this,It)[It];t<=this.limit;t++)Y(this,Nr)[Nr]();Y(this,Hs)[Hs]-Y(this,It)[It]>3?Y(this,Ir)[Ir]=setTimeout(Y(this,$s)[$s],2e3):Y(this,It)[It]=Math.floor(Y(this,It)[It]/2)}}),typeof e!=\"number\"||e===0?this.limit=1/0:this.limit=e}run(e,t){return!Y(this,ti)[ti]&&Y(this,ii)[ii]<this.limit?Y(this,Fa)[Fa](e):Y(this,Sc)[Sc](e,t)}wrapSyncFunction(e,t){var r=this;return function(){for(var s=arguments.length,o=new Array(s),a=0;a<s;a++)o[a]=arguments[a];let l=r.run(()=>(e(...o),queueMicrotask(()=>l.done()),()=>{}),t);return{abortOn:mv,abort(){l.abort()}}}}wrapPromiseFunction(e,t){var r=this;return function(){for(var s=arguments.length,o=new Array(s),a=0;a<s;a++)o[a]=arguments[a];let l,h=new Promise((p,d)=>{l=r.run(()=>{let f,y;try{y=Promise.resolve(e(...o))}catch(b){y=Promise.reject(b)}return y.then(b=>{f?d(f):(l.done(),p(b))},b=>{f?d(f):(l.done(),d(b))}),b=>{f=kP(b)}},t)});return h.abort=p=>{l.abort(p)},h.abortOn=mv,h}}resume(){Y(this,ti)[ti]=!1,clearTimeout(Y(this,js)[js]);for(let e=0;e<this.limit;e++)Y(this,Nr)[Nr]()}pause(e){e===void 0&&(e=null),Y(this,ti)[ti]=!0,clearTimeout(Y(this,js)[js]),e!=null&&(Y(this,js)[js]=setTimeout(Y(this,Pc)[Pc],e))}rateLimit(e){clearTimeout(Y(this,Ir)[Ir]),this.pause(e),this.limit>1&&Number.isFinite(this.limit)&&(Y(this,Hs)[Hs]=this.limit-1,this.limit=Y(this,It)[It],Y(this,Ir)[Ir]=setTimeout(Y(this,$s)[$s],e))}get isPaused(){return Y(this,ti)[ti]}};n(Mt,\"RateLimitedQueue\");function DP(i){Y(this,ii)[ii]+=1;let e=!1,t;try{t=i()}catch(r){throw Y(this,ii)[ii]-=1,r}return{abort:r=>{e||(e=!0,Y(this,ii)[ii]-=1,t?.(r),Y(this,Nr)[Nr]())},done:()=>{e||(e=!0,Y(this,ii)[ii]-=1,Y(this,Nr)[Nr]())}}}n(DP,\"_call2\");function IP(){queueMicrotask(()=>Y(this,_c)[_c]())}n(IP,\"_queueNext2\");function NP(){if(Y(this,ti)[ti]||Y(this,ii)[ii]>=this.limit||Y(this,Nt)[Nt].length===0)return;let i=Y(this,Nt)[Nt].shift(),e=Y(this,Fa)[Fa](i.fn);i.abort=e.abort,i.done=e.done}n(NP,\"_next2\");function MP(i,e){e===void 0&&(e={});let t={fn:i,priority:e.priority||0,abort:()=>{Y(this,xc)[xc](t)},done:()=>{throw new Error(\"Cannot mark a queued request as done: this indicates a bug\")}},r=Y(this,Nt)[Nt].findIndex(s=>t.priority>s.priority);return r===-1?Y(this,Nt)[Nt].push(t):Y(this,Nt)[Nt].splice(r,0,t),t}n(MP,\"_queue2\");function LP(i){let e=Y(this,Nt)[Nt].indexOf(i);e!==-1&&Y(this,Nt)[Nt].splice(e,1)}n(LP,\"_dequeue2\");var us=Symbol(\"__queue\");function hs(i){let e=n(t=>\"error\"in t&&!!t.error,\"hasError\");return i.filter(t=>!e(t))}n(hs,\"filterNonFailedFiles\");function ds(i){return i.filter(e=>{var t;return!((t=e.progress)!=null&&t.uploadStarted)||!e.isRestored})}n(ds,\"filterFilesToEmitUploadStarted\");var{AbortController:$u}=globalThis,{AbortSignal:w7}=globalThis,Fc=n(function(i,e){i===void 0&&(i=\"Aborted\");let t=new DOMException(i,\"AbortError\");return e!=null&&Ct(e,\"cause\")&&Object.defineProperty(t,\"cause\",{__proto__:null,configurable:!0,writable:!0,value:e.cause}),t},\"createAbortError\");function $(i,e){if(!Object.prototype.hasOwnProperty.call(i,e))throw new TypeError(\"attempted to use private field on non-instance\");return i}n($,\"_classPrivateFieldLooseBase\");var BP=0;function st(i){return\"__private_\"+BP+++\"_\"+i}n(st,\"_classPrivateFieldLooseKey\");var zP=1024*1024,gv={getChunkSize(i){return Math.ceil(i.size/1e4)},onProgress(){},onPartComplete(){},onSuccess(){},onError(i){throw i}};function jP(i){if(typeof i==\"string\")return parseInt(i,10);if(typeof i==\"number\")return i;throw new TypeError(\"Expected a number\")}n(jP,\"ensureInt\");var Ra=Symbol(\"pausing upload, not an actual error\"),ft=st(\"abortController\"),rt=st(\"chunks\"),Lt=st(\"chunkState\"),ri=st(\"data\"),si=st(\"file\"),Ua=st(\"uploadHasStarted\"),Ea=st(\"onError\"),Ws=st(\"onSuccess\"),Mr=st(\"shouldUseMultipart\"),Vs=st(\"isRestoring\"),ka=st(\"onReject\"),qs=st(\"maxMultipartParts\"),Ca=st(\"minPartSize\"),Ec=st(\"initChunks\"),Oc=st(\"createUpload\"),Oa=st(\"resumeUpload\"),Ta=st(\"onPartProgress\"),Aa=st(\"onPartComplete\"),Cc=st(\"abortUpload\"),qu=class{constructor(e,t){var r,s;Object.defineProperty(this,Cc,{value:VP}),Object.defineProperty(this,Oa,{value:qP}),Object.defineProperty(this,Oc,{value:$P}),Object.defineProperty(this,Ec,{value:HP}),Object.defineProperty(this,ft,{writable:!0,value:new $u}),Object.defineProperty(this,rt,{writable:!0,value:void 0}),Object.defineProperty(this,Lt,{writable:!0,value:void 0}),Object.defineProperty(this,ri,{writable:!0,value:void 0}),Object.defineProperty(this,si,{writable:!0,value:void 0}),Object.defineProperty(this,Ua,{writable:!0,value:!1}),Object.defineProperty(this,Ea,{writable:!0,value:void 0}),Object.defineProperty(this,Ws,{writable:!0,value:void 0}),Object.defineProperty(this,Mr,{writable:!0,value:void 0}),Object.defineProperty(this,Vs,{writable:!0,value:void 0}),Object.defineProperty(this,ka,{writable:!0,value:o=>o?.cause===Ra?null:$(this,Ea)[Ea](o)}),Object.defineProperty(this,qs,{writable:!0,value:1e4}),Object.defineProperty(this,Ca,{writable:!0,value:5*zP}),Object.defineProperty(this,Ta,{writable:!0,value:o=>a=>{if(!a.lengthComputable)return;$(this,Lt)[Lt][o].uploaded=jP(a.loaded);let l=$(this,Lt)[Lt].reduce((h,p)=>h+p.uploaded,0);this.options.onProgress(l,$(this,ri)[ri].size)}}),Object.defineProperty(this,Aa,{writable:!0,value:o=>a=>{$(this,rt)[rt][o]=null,$(this,Lt)[Lt][o].etag=a,$(this,Lt)[Lt][o].done=!0;let l={PartNumber:o+1,ETag:a};this.options.onPartComplete(l)}}),this.options={...gv,...t},(s=(r=this.options).getChunkSize)!=null||(r.getChunkSize=gv.getChunkSize),$(this,ri)[ri]=e,$(this,si)[si]=t.file,$(this,Ws)[Ws]=this.options.onSuccess,$(this,Ea)[Ea]=this.options.onError,$(this,Mr)[Mr]=this.options.shouldUseMultipart,$(this,Vs)[Vs]=t.uploadId&&t.key,$(this,Ec)[Ec]()}start(){$(this,Ua)[Ua]?($(this,ft)[ft].signal.aborted||$(this,ft)[ft].abort(Ra),$(this,ft)[ft]=new $u,$(this,Oa)[Oa]()):$(this,Vs)[Vs]?(this.options.companionComm.restoreUploadFile($(this,si)[si],{uploadId:this.options.uploadId,key:this.options.key}),$(this,Oa)[Oa]()):$(this,Oc)[Oc]()}pause(){$(this,ft)[ft].abort(Ra),$(this,ft)[ft]=new $u}abort(e){var t;e===void 0&&(e=void 0),(t=e)!=null&&t.really?$(this,Cc)[Cc]():this.pause()}get chunkState(){return $(this,Lt)[Lt]}};n(qu,\"MultipartUploader\");function HP(){let i=$(this,ri)[ri].size,e=typeof $(this,Mr)[Mr]==\"function\"?$(this,Mr)[Mr]($(this,si)[si]):!!$(this,Mr)[Mr];if(e&&i>$(this,Ca)[Ca]){let t=Math.max(this.options.getChunkSize($(this,ri)[ri]),$(this,Ca)[Ca]),r=Math.floor(i/t);r>$(this,qs)[qs]&&(r=$(this,qs)[qs],t=i/$(this,qs)[qs]),$(this,rt)[rt]=Array(r);for(let s=0,o=0;s<i;s+=t,o++){let a=Math.min(i,s+t),l=n(()=>{let h=s;return $(this,ri)[ri].slice(h,a)},\"getData\");if($(this,rt)[rt][o]={getData:l,onProgress:$(this,Ta)[Ta](o),onComplete:$(this,Aa)[Aa](o),shouldUseMultipart:e},$(this,Vs)[Vs]){let h=s+t>i?i-s:t;$(this,rt)[rt][o].setAsUploaded=()=>{$(this,rt)[rt][o]=null,$(this,Lt)[Lt][o].uploaded=h}}}}else $(this,rt)[rt]=[{getData:()=>$(this,ri)[ri],onProgress:$(this,Ta)[Ta](0),onComplete:$(this,Aa)[Aa](0),shouldUseMultipart:e}];$(this,Lt)[Lt]=$(this,rt)[rt].map(()=>({uploaded:0}))}n(HP,\"_initChunks2\");function $P(){this.options.companionComm.uploadFile($(this,si)[si],$(this,rt)[rt],$(this,ft)[ft].signal).then($(this,Ws)[Ws],$(this,ka)[ka]),$(this,Ua)[Ua]=!0}n($P,\"_createUpload2\");function qP(){this.options.companionComm.resumeUploadFile($(this,si)[si],$(this,rt)[rt],$(this,ft)[ft].signal).then($(this,Ws)[Ws],$(this,ka)[ka])}n(qP,\"_resumeUpload2\");function VP(){$(this,ft)[ft].abort(),this.options.companionComm.abortFileUpload($(this,si)[si]).catch(i=>this.options.log(i))}n(VP,\"_abortUpload2\");var yv=qu;function WP(i){let{method:e=\"PUT\",CanonicalUri:t=\"/\",CanonicalQueryString:r=\"\",SignedHeaders:s,HashedPayload:o}=i,a=Object.keys(s).map(l=>l.toLowerCase()).sort();return[e,t,r,...a.map(l=>`${l}:${s[l]}`),\"\",a.join(\";\"),o].join(`\n`)}n(WP,\"createCanonicalRequest\");var Tc=new TextEncoder,Ac={name:\"HMAC\",hash:\"SHA-256\"};async function GP(i){let{subtle:e}=globalThis.crypto;return e.digest(Ac.hash,Tc.encode(i))}n(GP,\"digest\");async function KP(i){let{subtle:e}=globalThis.crypto;return e.importKey(\"raw\",typeof i==\"string\"?Tc.encode(i):i,Ac,!1,[\"sign\"])}n(KP,\"generateHmacKey\");function vv(i){let e=new Uint8Array(i),t=\"\";for(let r=0;r<e.length;r++)t+=e[r].toString(16).padStart(2,\"0\");return t}n(vv,\"arrayBufferToHexString\");async function Da(i,e){let{subtle:t}=globalThis.crypto;return t.sign(Ac,await KP(i),Tc.encode(e))}n(Da,\"hash\");async function Rc(i){let{accountKey:e,accountSecret:t,sessionToken:r,bucketName:s,Key:o,Region:a,expires:l,uploadId:h,partNumber:p}=i,d=\"s3\",f=`${s}.${d}.${a}.amazonaws.com`,y=`/${encodeURI(o)}`,b=\"UNSIGNED-PAYLOAD\",S=new Date().toISOString().replace(/[-:]|\\.\\d+/g,\"\"),E=S.slice(0,8),x=`${E}/${a}/${d}/aws4_request`,F=new URL(`https://${f}${y}`);F.searchParams.set(\"X-Amz-Algorithm\",\"AWS4-HMAC-SHA256\"),F.searchParams.set(\"X-Amz-Content-Sha256\",b),F.searchParams.set(\"X-Amz-Credential\",`${e}/${x}`),F.searchParams.set(\"X-Amz-Date\",S),F.searchParams.set(\"X-Amz-Expires\",l),F.searchParams.set(\"X-Amz-Security-Token\",r),F.searchParams.set(\"X-Amz-SignedHeaders\",\"host\"),p&&F.searchParams.set(\"partNumber\",p),h&&F.searchParams.set(\"uploadId\",h),F.searchParams.set(\"x-id\",p&&h?\"UploadPart\":\"PutObject\");let U=WP({CanonicalUri:y,CanonicalQueryString:F.search.slice(1),SignedHeaders:{host:f},HashedPayload:b}),j=vv(await GP(U)),G=[\"AWS4-HMAC-SHA256\",S,x,j].join(`\n`),J=await Da(`AWS4${t}`,E),B=await Da(J,a),z=await Da(B,d),K=await Da(z,\"aws4_request\"),oe=vv(await Da(K,G));return F.searchParams.set(\"X-Amz-Signature\",oe),F}n(Rc,\"createSignedURL\");var wv;function N(i,e){if(!Object.prototype.hasOwnProperty.call(i,e))throw new TypeError(\"attempted to use private field on non-instance\");return i}n(N,\"_classPrivateFieldLooseBase\");var XP=0;function Pe(i){return\"__private_\"+XP+++\"_\"+i}n(Pe,\"_classPrivateFieldLooseKey\");var YP={version:\"3.9.0\"};function Go(i){if(i&&i.error){let e=new Error(i.message);throw Object.assign(e,i.error),e}return i}n(Go,\"assertServerError\");function QP(i){let e=new URL(i);return e.search=\"\",e.hash=\"\",e.href}n(QP,\"removeMetadataFromURL\");function Sv(i){let e=i.Expiration;if(e){let t=Math.floor((new Date(e)-Date.now())/1e3);if(t>9)return t}}n(Sv,\"getExpiry\");function bv(i){let{meta:e,allowedMetaFields:t,querify:r=!1}=i,s=t??Object.keys(e);return e?Object.fromEntries(s.filter(o=>e[o]!=null).map(o=>{let a=r?`metadata[${o}]`:o,l=String(e[o]);return[a,l]})):{}}n(bv,\"getAllowedMetadata\");function xt(i){if(i!=null&&i.aborted)throw Fc(\"The operation was aborted\",{cause:i.reason})}n(xt,\"throwIfAborted\");var Ia=Pe(\"abortMultipartUpload\"),mt=Pe(\"cache\"),Na=Pe(\"createMultipartUpload\"),Ma=Pe(\"fetchSignature\"),Ha=Pe(\"getUploadParameters\"),La=Pe(\"listParts\"),Qs=Pe(\"previousRetryDelay\"),Js=Pe(\"requests\"),Gs=Pe(\"retryDelays\"),Ks=Pe(\"sendCompletionRequest\"),Xs=Pe(\"setS3MultipartState\"),Zs=Pe(\"uploadPartBytes\"),yt=Pe(\"getFile\"),Uc=Pe(\"shouldRetry\"),Ba=Pe(\"nonMultipartUpload\"),Vu=class{constructor(e,t,r,s){Object.defineProperty(this,Ba,{value:ZP}),Object.defineProperty(this,Uc,{value:JP}),Object.defineProperty(this,Ia,{writable:!0,value:void 0}),Object.defineProperty(this,mt,{writable:!0,value:new WeakMap}),Object.defineProperty(this,Na,{writable:!0,value:void 0}),Object.defineProperty(this,Ma,{writable:!0,value:void 0}),Object.defineProperty(this,Ha,{writable:!0,value:void 0}),Object.defineProperty(this,La,{writable:!0,value:void 0}),Object.defineProperty(this,Qs,{writable:!0,value:void 0}),Object.defineProperty(this,Js,{writable:!0,value:void 0}),Object.defineProperty(this,Gs,{writable:!0,value:void 0}),Object.defineProperty(this,Ks,{writable:!0,value:void 0}),Object.defineProperty(this,Xs,{writable:!0,value:void 0}),Object.defineProperty(this,Zs,{writable:!0,value:void 0}),Object.defineProperty(this,yt,{writable:!0,value:void 0}),N(this,Js)[Js]=e,N(this,Xs)[Xs]=r,N(this,yt)[yt]=s,this.setOptions(t)}setOptions(e){let t=N(this,Js)[Js];if(\"abortMultipartUpload\"in e&&(N(this,Ia)[Ia]=t.wrapPromiseFunction(e.abortMultipartUpload,{priority:1})),\"createMultipartUpload\"in e&&(N(this,Na)[Na]=t.wrapPromiseFunction(e.createMultipartUpload,{priority:-1})),\"signPart\"in e&&(N(this,Ma)[Ma]=t.wrapPromiseFunction(e.signPart)),\"listParts\"in e&&(N(this,La)[La]=t.wrapPromiseFunction(e.listParts)),\"completeMultipartUpload\"in e&&(N(this,Ks)[Ks]=t.wrapPromiseFunction(e.completeMultipartUpload,{priority:1})),\"retryDelays\"in e){var r;N(this,Gs)[Gs]=(r=e.retryDelays)!=null?r:[]}\"uploadPartBytes\"in e&&(N(this,Zs)[Zs]=t.wrapPromiseFunction(e.uploadPartBytes,{priority:1/0})),\"getUploadParameters\"in e&&(N(this,Ha)[Ha]=t.wrapPromiseFunction(e.getUploadParameters))}async getUploadId(e,t){let r;for(;(r=N(this,mt)[mt].get(e.data))!=null;)try{return await r}catch{}let s=N(this,Na)[Na](N(this,yt)[yt](e),t),o=n(()=>{s.abort(t.reason),N(this,mt)[mt].delete(e.data)},\"abortPromise\");return t.addEventListener(\"abort\",o,{once:!0}),N(this,mt)[mt].set(e.data,s),s.then(async a=>{t.removeEventListener(\"abort\",o),N(this,Xs)[Xs](e,a),N(this,mt)[mt].set(e.data,a)},()=>{t.removeEventListener(\"abort\",o),N(this,mt)[mt].delete(e.data)}),s}async abortFileUpload(e){let t=N(this,mt)[mt].get(e.data);if(t==null)return;N(this,mt)[mt].delete(e.data),N(this,Xs)[Xs](e,Object.create(null));let r;try{r=await t}catch{return}await N(this,Ia)[Ia](N(this,yt)[yt](e),r)}async uploadFile(e,t,r){if(xt(r),t.length===1&&!t[0].shouldUseMultipart)return N(this,Ba)[Ba](e,t[0],r);let{uploadId:s,key:o}=await this.getUploadId(e,r);xt(r);try{let a=await Promise.all(t.map((l,h)=>this.uploadChunk(e,h+1,l,r)));return xt(r),await N(this,Ks)[Ks](N(this,yt)[yt](e),{key:o,uploadId:s,parts:a,signal:r},r).abortOn(r)}catch(a){throw a?.cause!==Ra&&a?.name!==\"AbortError\"&&this.abortFileUpload(e),a}}restoreUploadFile(e,t){N(this,mt)[mt].set(e.data,t)}async resumeUploadFile(e,t,r){if(xt(r),t.length===1&&t[0]!=null&&!t[0].shouldUseMultipart)return N(this,Ba)[Ba](e,t[0],r);let{uploadId:s,key:o}=await this.getUploadId(e,r);xt(r);let a=await N(this,La)[La](N(this,yt)[yt](e),{uploadId:s,key:o,signal:r},r).abortOn(r);xt(r);let l=await Promise.all(t.map((h,p)=>{let d=p+1,f=a.find(y=>{let{PartNumber:b}=y;return b===d});return f==null?this.uploadChunk(e,d,h,r):(h==null||h.setAsUploaded==null||h.setAsUploaded(),{PartNumber:d,ETag:f.ETag})}));return xt(r),N(this,Ks)[Ks](N(this,yt)[yt](e),{key:o,uploadId:s,parts:l,signal:r},r).abortOn(r)}async uploadChunk(e,t,r,s){xt(s);let{uploadId:o,key:a}=await this.getUploadId(e,s),l=N(this,Gs)[Gs].values(),h=N(this,Gs)[Gs].values(),p=n(()=>{let d=l.next();return d==null||d.done?null:d.value},\"shouldRetrySignature\");for(;;){xt(s);let d=r.getData(),{onProgress:f,onComplete:y}=r,b;try{b=await N(this,Ma)[Ma](N(this,yt)[yt](e),{uploadId:o,key:a,partNumber:t,body:d,signal:s}).abortOn(s)}catch(S){let E=p();if(E==null||s.aborted)throw S;await new Promise(x=>setTimeout(x,E));continue}xt(s);try{return{PartNumber:t,...await N(this,Zs)[Zs]({signature:b,body:d,size:d.size,onProgress:f,onComplete:y,signal:s}).abortOn(s)}}catch(S){if(!await N(this,Uc)[Uc](S,h))throw S}}}};n(Vu,\"HTTPCommunicationQueue\");async function JP(i,e){var t;let r=N(this,Js)[Js],s=i==null||(t=i.source)==null?void 0:t.status;if(s==null)return!1;if(s===403&&i.message===\"Request has expired\"){if(!r.isPaused){if(r.limit===1||N(this,Qs)[Qs]==null){let o=e.next();if(o==null||o.done)return!1;N(this,Qs)[Qs]=o.value}r.rateLimit(0),await new Promise(o=>setTimeout(o,N(this,Qs)[Qs]))}}else if(s===429){if(!r.isPaused){let o=e.next();if(o==null||o.done)return!1;r.rateLimit(o.value)}}else{if(s>400&&s<500&&s!==409)return!1;if(typeof navigator<\"u\"&&navigator.onLine===!1)r.isPaused||(r.pause(),window.addEventListener(\"online\",()=>{r.resume()},{once:!0}));else{let o=e.next();if(o==null||o.done)return!1;await new Promise(a=>setTimeout(a,o.value))}}return!0}n(JP,\"_shouldRetry2\");async function ZP(i,e,t){let{method:r=\"POST\",url:s,fields:o,headers:a}=await N(this,Ha)[Ha](N(this,yt)[yt](i),{signal:t}).abortOn(t),l,h=e.getData();if(r.toUpperCase()===\"POST\"){let y=new FormData;Object.entries(o).forEach(b=>{let[S,E]=b;return y.set(S,E)}),y.set(\"file\",h),l=y}else l=h;let{onProgress:p,onComplete:d}=e,f=await N(this,Zs)[Zs]({signature:{url:s,headers:a,method:r},body:l,size:h.size,onProgress:p,onComplete:d,signal:t}).abortOn(t);return\"location\"in f?f:{location:QP(s),...f}}n(ZP,\"_nonMultipartUpload2\");var eo=Pe(\"companionCommunicationQueue\"),$e=Pe(\"client\"),gt=Pe(\"cachedTemporaryCredentials\"),kc=Pe(\"getTemporarySecurityCredentials\"),Dc=Pe(\"setS3MultipartState\"),to=Pe(\"getFile\"),Ic=Pe(\"uploadLocalFile\"),Nc=Pe(\"getCompanionClientArgs\"),za=Pe(\"upload\"),Ys=Pe(\"setCompanionHeaders\"),Lr=Pe(\"setResumableUploadsCapability\"),ja=Pe(\"resetResumableCapability\");wv=Symbol.for(\"uppy test: getClient\");var Ri=class extends ve{constructor(e,t){var r;super(e,t),Object.defineProperty(this,Nc,{value:i_}),Object.defineProperty(this,Ic,{value:t_}),Object.defineProperty(this,kc,{value:e_}),Object.defineProperty(this,eo,{writable:!0,value:void 0}),Object.defineProperty(this,$e,{writable:!0,value:void 0}),Object.defineProperty(this,gt,{writable:!0,value:void 0}),Object.defineProperty(this,Dc,{writable:!0,value:(o,a)=>{let{key:l,uploadId:h}=a,p=this.uppy.getFile(o.id);p!=null&&this.uppy.setFileState(o.id,{s3Multipart:{...p.s3Multipart,key:l,uploadId:h}})}}),Object.defineProperty(this,to,{writable:!0,value:o=>this.uppy.getFile(o.id)||o}),Object.defineProperty(this,za,{writable:!0,value:async o=>{if(o.length===0)return;let a=this.uppy.getFilesByIds(o),l=hs(a),h=ds(l);this.uppy.emit(\"upload-start\",h);let p=l.map(f=>{if(f.isRemote){let y=n(()=>this.requests,\"getQueue\");N(this,Lr)[Lr](!1);let b=new AbortController,S=n(x=>{x.id===f.id&&b.abort()},\"removedHandler\");this.uppy.on(\"file-removed\",S);let E=f.remote.requestClient.uploadRemoteFile(f,N(this,Nc)[Nc](f),{signal:b.signal,getQueue:y});return this.requests.wrapSyncFunction(()=>{this.uppy.off(\"file-removed\",S)},{priority:-1})(),E}return N(this,Ic)[Ic](f)}),d=await Promise.all(p);return N(this,Lr)[Lr](!0),d}}),Object.defineProperty(this,Ys,{writable:!0,value:()=>{N(this,$e)[$e].setCompanionHeaders(this.opts.companionHeaders)}}),Object.defineProperty(this,Lr,{writable:!0,value:o=>{let{capabilities:a}=this.uppy.getState();this.uppy.setState({capabilities:{...a,resumableUploads:o}})}}),Object.defineProperty(this,ja,{writable:!0,value:()=>{N(this,Lr)[Lr](!0)}}),this.type=\"uploader\",this.id=this.opts.id||\"AwsS3Multipart\",this.title=\"AWS S3 Multipart\",N(this,$e)[$e]=new tt(e,t);let s={allowedMetaFields:null,limit:6,shouldUseMultipart:o=>o.size!==0,retryDelays:[0,1e3,3e3,5e3],createMultipartUpload:this.createMultipartUpload.bind(this),listParts:this.listParts.bind(this),abortMultipartUpload:this.abortMultipartUpload.bind(this),completeMultipartUpload:this.completeMultipartUpload.bind(this),getTemporarySecurityCredentials:!1,signPart:t!=null&&t.getTemporarySecurityCredentials?this.createSignedURL.bind(this):this.signPart.bind(this),uploadPartBytes:Ri.uploadPartBytes,getUploadParameters:t!=null&&t.getTemporarySecurityCredentials?this.createSignedURL.bind(this):this.getUploadParameters.bind(this),companionHeaders:{}};this.opts={...s,...t},t?.prepareUploadParts!=null&&t.signPart==null&&(this.opts.signPart=async(o,a)=>{let{uploadId:l,key:h,partNumber:p,body:d,signal:f}=a,{presignedUrls:y,headers:b}=await t.prepareUploadParts(o,{uploadId:l,key:h,parts:[{number:p,chunk:d}],signal:f});return{url:y?.[p],headers:b?.[p]}}),this.requests=(r=this.opts.rateLimitedQueue)!=null?r:new Mt(this.opts.limit),N(this,eo)[eo]=new Vu(this.requests,this.opts,N(this,Dc)[Dc],N(this,to)[to]),this.uploaders=Object.create(null),this.uploaderEvents=Object.create(null),this.uploaderSockets=Object.create(null)}[wv](){return N(this,$e)[$e]}setOptions(e){N(this,eo)[eo].setOptions(e),super.setOptions(e),N(this,Ys)[Ys]()}resetUploaderReferences(e,t){t===void 0&&(t={}),this.uploaders[e]&&(this.uploaders[e].abort({really:t.abort||!1}),this.uploaders[e]=null),this.uploaderEvents[e]&&(this.uploaderEvents[e].remove(),this.uploaderEvents[e]=null),this.uploaderSockets[e]&&(this.uploaderSockets[e].close(),this.uploaderSockets[e]=null)}assertHost(e){if(!this.opts.companionUrl)throw new Error(`Expected a \\`companionUrl\\` option containing a Companion address, or if you are not using Companion, a custom \\`${e}\\` implementation.`)}createMultipartUpload(e,t){this.assertHost(\"createMultipartUpload\"),xt(t);let r=bv({meta:e.meta,allowedMetaFields:this.opts.allowedMetaFields});return N(this,$e)[$e].post(\"s3/multipart\",{filename:e.name,type:e.type,metadata:r},{signal:t}).then(Go)}listParts(e,t,r){let{key:s,uploadId:o}=t;this.assertHost(\"listParts\"),xt(r);let a=encodeURIComponent(s);return N(this,$e)[$e].get(`s3/multipart/${o}?key=${a}`,{signal:r}).then(Go)}completeMultipartUpload(e,t,r){let{key:s,uploadId:o,parts:a}=t;this.assertHost(\"completeMultipartUpload\"),xt(r);let l=encodeURIComponent(s),h=encodeURIComponent(o);return N(this,$e)[$e].post(`s3/multipart/${h}/complete?key=${l}`,{parts:a},{signal:r}).then(Go)}async createSignedURL(e,t){let r=await N(this,kc)[kc](t),s=Sv(r.credentials)||604800,{uploadId:o,key:a,partNumber:l,signal:h}=t;return{method:\"PUT\",expires:s,fields:{},url:`${await Rc({accountKey:r.credentials.AccessKeyId,accountSecret:r.credentials.SecretAccessKey,sessionToken:r.credentials.SessionToken,expires:s,bucketName:r.bucket,Region:r.region,Key:a??`${crypto.randomUUID()}-${e.name}`,uploadId:o,partNumber:l,signal:h})}`,headers:{\"Content-Type\":e.type}}}signPart(e,t){let{uploadId:r,key:s,partNumber:o,signal:a}=t;if(this.assertHost(\"signPart\"),xt(a),r==null||s==null||o==null)throw new Error(\"Cannot sign without a key, an uploadId, and a partNumber\");let l=encodeURIComponent(s);return N(this,$e)[$e].get(`s3/multipart/${r}/${o}?key=${l}`,{signal:a}).then(Go)}abortMultipartUpload(e,t,r){let{key:s,uploadId:o}=t;this.assertHost(\"abortMultipartUpload\");let a=encodeURIComponent(s),l=encodeURIComponent(o);return N(this,$e)[$e].delete(`s3/multipart/${l}?key=${a}`,void 0,{signal:r}).then(Go)}getUploadParameters(e,t){let{meta:r}=e,{type:s,name:o}=r,a=bv({meta:r,allowedMetaFields:this.opts.allowedMetaFields,querify:!0}),l=new URLSearchParams({filename:o,type:s,...a});return N(this,$e)[$e].get(`s3/params?${l}`,t)}static async uploadPartBytes(e){let{signature:{url:t,expires:r,headers:s,method:o=\"PUT\"},body:a,size:l=a.size,onProgress:h,onComplete:p,signal:d}=e;if(xt(d),t==null)throw new Error(\"Cannot upload to an undefined URL\");return new Promise((f,y)=>{let b=new XMLHttpRequest;b.open(o,t,!0),s&&Object.keys(s).forEach(x=>{b.setRequestHeader(x,s[x])}),b.responseType=\"text\",typeof r==\"number\"&&(b.timeout=r*1e3);function S(){b.abort()}n(S,\"onabort\");function E(){d.removeEventListener(\"abort\",S)}n(E,\"cleanup\"),d.addEventListener(\"abort\",S),b.upload.addEventListener(\"progress\",x=>{h(x)}),b.addEventListener(\"abort\",()=>{E(),y(Fc())}),b.addEventListener(\"timeout\",()=>{E();let x=new Error(\"Request has expired\");x.source={status:403},y(x)}),b.addEventListener(\"load\",x=>{if(E(),x.target.status===403&&x.target.responseText.includes(\"<Message>Request has expired</Message>\")){let j=new Error(\"Request has expired\");j.source=x.target,y(j);return}if(x.target.status<200||x.target.status>=300){let j=new Error(\"Non 2xx\");j.source=x.target,y(j);return}h?.({loaded:l,lengthComputable:!0});let F=x.target.getResponseHeader(\"ETag\"),U=x.target.getResponseHeader(\"Location\");if(o.toUpperCase()===\"POST\"&&U===null&&console.warn(\"AwsS3/Multipart: Could not read the Location header. This likely means CORS is not configured correctly on the S3 Bucket. See https://uppy.io/docs/aws-s3-multipart#S3-Bucket-Configuration for instructions.\"),F===null){y(new Error(\"AwsS3/Multipart: Could not read the ETag header. This likely means CORS is not configured correctly on the S3 Bucket. See https://uppy.io/docs/aws-s3-multipart#S3-Bucket-Configuration for instructions.\"));return}p?.(F),f({ETag:F,...U?{location:U}:void 0})}),b.addEventListener(\"error\",x=>{E();let F=new Error(\"Unknown error\");F.source=x.target,y(F)}),b.send(a)})}install(){N(this,Lr)[Lr](!0),this.uppy.addPreProcessor(N(this,Ys)[Ys]),this.uppy.addUploader(N(this,za)[za]),this.uppy.on(\"cancel-all\",N(this,ja)[ja])}uninstall(){this.uppy.removePreProcessor(N(this,Ys)[Ys]),this.uppy.removeUploader(N(this,za)[za]),this.uppy.off(\"cancel-all\",N(this,ja)[ja])}};n(Ri,\"AwsS3Multipart\");async function e_(i){return xt(i?.signal),N(this,gt)[gt]==null&&(this.opts.getTemporarySecurityCredentials===!0?(this.assertHost(\"getTemporarySecurityCredentials\"),N(this,gt)[gt]=N(this,$e)[$e].get(\"s3/sts\",null,i).then(Go)):N(this,gt)[gt]=this.opts.getTemporarySecurityCredentials(i),N(this,gt)[gt]=await N(this,gt)[gt],setTimeout(()=>{N(this,gt)[gt]=null},(Sv(N(this,gt)[gt].credentials)||0)*500)),N(this,gt)[gt]}n(e_,\"_getTemporarySecurityCredentials2\");function t_(i){var e=this;return new Promise((t,r)=>{let s=n((d,f)=>{this.uppy.emit(\"upload-progress\",i,{uploader:this,bytesUploaded:d,bytesTotal:f})},\"onProgress\"),o=n(d=>{this.uppy.log(d),this.uppy.emit(\"upload-error\",i,d),this.resetUploaderReferences(i.id),r(d)},\"onError\"),a=n(d=>{let f={body:{...d},uploadURL:d.location};this.resetUploaderReferences(i.id),this.uppy.emit(\"upload-success\",N(this,to)[to](i),f),d.location&&this.uppy.log(`Download ${i.name} from ${d.location}`),t()},\"onSuccess\"),l=n(d=>{this.uppy.emit(\"s3-multipart:part-uploaded\",N(this,to)[to](i),d)},\"onPartComplete\"),h=new yv(i.data,{companionComm:N(this,eo)[eo],log:function(){return e.uppy.log(...arguments)},getChunkSize:this.opts.getChunkSize?this.opts.getChunkSize.bind(this):null,onProgress:s,onError:o,onSuccess:a,onPartComplete:l,file:i,shouldUseMultipart:this.opts.shouldUseMultipart,...i.s3Multipart});this.uploaders[i.id]=h;let p=new mi(this.uppy);this.uploaderEvents[i.id]=p,p.onFileRemove(i.id,d=>{h.abort(),this.resetUploaderReferences(i.id,{abort:!0}),t(`upload ${d.id} was removed`)}),p.onCancelAll(i.id,function(d){let{reason:f}=d===void 0?{}:d;f===\"user\"&&(h.abort(),e.resetUploaderReferences(i.id,{abort:!0})),t(`upload ${i.id} was canceled`)}),p.onFilePause(i.id,d=>{d?h.pause():h.start()}),p.onPauseAll(i.id,()=>{h.pause()}),p.onResumeAll(i.id,()=>{h.start()}),h.start()})}n(t_,\"_uploadLocalFile2\");function i_(i){return{...i.remote.body,protocol:\"s3-multipart\",size:i.data.size,metadata:i.meta}}n(i_,\"_getCompanionClientArgs2\");Ri.VERSION=YP.version;function gi(i,e){if(!Object.prototype.hasOwnProperty.call(i,e))throw new TypeError(\"attempted to use private field on non-instance\");return i}n(gi,\"_classPrivateFieldLooseBase\");var r_=0;function Gu(i){return\"__private_\"+r_+++\"_\"+i}n(Gu,\"_classPrivateFieldLooseKey\");var Br=Gu(\"aliveTimer\"),io=Gu(\"isDone\"),$a=Gu(\"onTimedOut\"),ro=Gu(\"timeout\"),Wu=class{constructor(e,t){Object.defineProperty(this,Br,{writable:!0,value:void 0}),Object.defineProperty(this,io,{writable:!0,value:!1}),Object.defineProperty(this,$a,{writable:!0,value:void 0}),Object.defineProperty(this,ro,{writable:!0,value:void 0}),gi(this,ro)[ro]=e,gi(this,$a)[$a]=t}progress(){gi(this,io)[io]||gi(this,ro)[ro]>0&&(clearTimeout(gi(this,Br)[Br]),gi(this,Br)[Br]=setTimeout(gi(this,$a)[$a],gi(this,ro)[ro]))}done(){gi(this,io)[io]||(clearTimeout(gi(this,Br)[Br]),gi(this,Br)[Br]=void 0,gi(this,io)[io]=!0)}};n(Wu,\"ProgressTimeout\");var qa=Wu;function s_(i){return i?i.readyState!==0&&i.readyState!==4||i.status===0:!1}n(s_,\"isNetworkError\");var so=s_;function Pv(i,e){if(!Object.prototype.hasOwnProperty.call(i,e))throw new TypeError(\"attempted to use private field on non-instance\");return i}n(Pv,\"_classPrivateFieldLooseBase\");var o_=0;function xv(i){return\"__private_\"+o_+++\"_\"+i}n(xv,\"_classPrivateFieldLooseKey\");function _v(i,e){if(so(i))return new Pi(e,i);let t=new vr(\"Upload error\",{cause:e});return t.request=i,t}n(_v,\"buildResponseError\");function n_(i){return i.data.slice(0,i.data.size,i.meta.type)}n(n_,\"setTypeInBlob\");function a_(i,e,t){(Array.isArray(t.allowedMetaFields)?t.allowedMetaFields:Object.keys(e)).forEach(s=>{i.append(s,e[s])})}n(a_,\"addMetadata\");function l_(i,e){let t=new FormData;a_(t,i.meta,e);let r=n_(i);return i.name?t.append(e.fieldName,r,i.meta.name):t.append(e.fieldName,r),t}n(l_,\"createFormDataUpload\");var u_=n(i=>i.data,\"createBareUpload\"),Mc=xv(\"addEventHandlerForFile\"),Lc=xv(\"addEventHandlerIfFileStillExists\"),Ko=class{constructor(e,t){Object.defineProperty(this,Lc,{value:d_}),Object.defineProperty(this,Mc,{value:h_}),this.uppy=e,this.opts={validateStatus(r){return r>=200&&r<300},...t},this.requests=t[us],this.uploaderEvents=Object.create(null),this.i18n=t.i18n}getOptions(e){var t;let{uppy:r}=this,s=r.getState().xhrUpload;return{...this.opts,...s||{},...e.xhrUpload||{},headers:{...this.opts.headers,...s?.headers,...(t=e.xhrUpload)==null?void 0:t.headers}}}uploadLocalFile(e){let t=this.getOptions(e);return new Promise((r,s)=>{let o=t.formData?l_(e,t):u_(e,t),a=new XMLHttpRequest;this.uploaderEvents[e.id]=new mi(this.uppy);let l=new qa(t.timeout,()=>{a.abort(),p.done();let d=new Error(this.i18n(\"timedOut\",{seconds:Math.ceil(t.timeout/1e3)}));this.uppy.emit(\"upload-error\",e,d),s(d)}),h=Pt();a.upload.addEventListener(\"loadstart\",()=>{this.uppy.log(`[AwsS3/XHRUpload] ${h} started`)}),a.upload.addEventListener(\"progress\",d=>{this.uppy.log(`[AwsS3/XHRUpload] ${h} progress: ${d.loaded} / ${d.total}`),l.progress(),d.lengthComputable&&this.uppy.emit(\"upload-progress\",e,{uploader:this,bytesUploaded:d.loaded,bytesTotal:d.total})}),a.addEventListener(\"load\",d=>{if(this.uppy.log(`[AwsS3/XHRUpload] ${h} finished`),l.done(),p.done(),this.uploaderEvents[e.id]&&(this.uploaderEvents[e.id].remove(),this.uploaderEvents[e.id]=null),t.validateStatus(d.target.status,a.responseText,a)){let S=t.getResponseData(a.responseText,a),E=S[t.responseUrlFieldName],x={status:d.target.status,body:S,uploadURL:E};return this.uppy.emit(\"upload-success\",e,x),E&&this.uppy.log(`Download ${e.name} from ${E}`),r(e)}let f=t.getResponseData(a.responseText,a),y=_v(a,t.getResponseError(a.responseText,a)),b={status:d.target.status,body:f};return this.uppy.emit(\"upload-error\",e,y,b),s(y)}),a.addEventListener(\"error\",()=>{this.uppy.log(`[AwsS3/XHRUpload] ${h} errored`),l.done(),p.done(),this.uploaderEvents[e.id]&&(this.uploaderEvents[e.id].remove(),this.uploaderEvents[e.id]=null);let d=_v(a,t.getResponseError(a.responseText,a));return this.uppy.emit(\"upload-error\",e,d),s(d)}),a.open(t.method.toUpperCase(),t.endpoint,!0),a.withCredentials=!!t.withCredentials,t.responseType!==\"\"&&(a.responseType=t.responseType),Object.keys(t.headers).forEach(d=>{a.setRequestHeader(d,t.headers[d])});let p=this.requests.run(()=>(a.send(o),()=>{l.done(),a.abort()}),{priority:1});Pv(this,Mc)[Mc](\"file-removed\",e.id,()=>{p.abort(),s(new Error(\"File removed\"))}),Pv(this,Lc)[Lc](\"cancel-all\",e.id,function(d){let{reason:f}=d===void 0?{}:d;f===\"user\"&&p.abort(),s(new Error(\"Upload cancelled\"))})})}};n(Ko,\"MiniXHRUpload\");function h_(i,e,t){this.uploaderEvents[e].on(i,r=>{var s;let o=(s=r?.id)!=null?s:r;e===o&&t()})}n(h_,\"_addEventHandlerForFile2\");function d_(i,e,t){var r=this;this.uploaderEvents[e].on(i,function(){r.uppy.getFile(e)&&t(...arguments)})}n(d_,\"_addEventHandlerIfFileStillExists2\");function c_(i){return i.replace(/;.*$/,\"\")}n(c_,\"removeMimeParameters\");function p_(i,e){let t=e.headers?e.headers[\"content-type\"]:e.getResponseHeader(\"Content-Type\");if(typeof t==\"string\"){let r=c_(t).toLowerCase();if(r===\"application/xml\"||r===\"text/xml\"||r===\"text/html\"&&/^<\\?xml /.test(i))return!0}return!1}n(p_,\"isXml\");var Bc=p_;var Fv={strings:{timedOut:\"Upload stalled for %{seconds} seconds, aborting.\"}};var Ov;function ot(i,e){if(!Object.prototype.hasOwnProperty.call(i,e))throw new TypeError(\"attempted to use private field on non-instance\");return i}n(ot,\"_classPrivateFieldLooseBase\");var f_=0;function Xo(i){return\"__private_\"+f_+++\"_\"+i}n(Xo,\"_classPrivateFieldLooseKey\");var m_={version:\"3.5.0\"};function g_(i,e){return!i&&!e.startsWith(\"https://\")&&!e.startsWith(\"http://\")&&(e=`https://${e}`),new URL(e,i||void 0).toString()}n(g_,\"resolveUrl\");function Ga(i,e){let t=i.indexOf(`<${e}>`),r=i.indexOf(`</${e}>`,t);return t!==-1&&r!==-1?i.slice(t+e.length+2,r):\"\"}n(Ga,\"getXmlValue\");function y_(i){if(i&&i.error){let e=new Error(i.message);throw Object.assign(e,i.error),e}return i}n(y_,\"assertServerError\");function v_(i,e){if(!(e!=null&&typeof e.url==\"string\"&&(typeof e.fields==\"object\"||e.fields==null)))throw new TypeError(`AwsS3: got incorrect result from 'getUploadParameters()' for file '${i.name}', expected an object '{ url, method, fields, headers }' but got '${JSON.stringify(e)}' instead.\nSee https://uppy.io/docs/aws-s3/#getUploadParameters-file for more on the expected format.`);if(!(e.method==null||/^p(u|os)t$/i.test(e.method)))throw new TypeError(`AwsS3: got incorrect method from 'getUploadParameters()' for file '${i.name}', expected  'PUT' or 'POST' but got '${e.method}' instead.\nSee https://uppy.io/docs/aws-s3/#getUploadParameters-file for more on the expected format.`)}n(v_,\"validateParameters\");function b_(i,e){if(!Bc(i,e))return;let t=Ga(i,\"Message\");return new Error(t)}n(b_,\"defaultGetResponseError\");var Ev=!1,oi=Xo(\"client\"),Ui=Xo(\"requests\"),oo=Xo(\"uploader\"),Va=Xo(\"handleUpload\"),Wa=Xo(\"setCompanionHeaders\"),zc=Xo(\"getCompanionClientArgs\");Ov=Symbol.for(\"uppy test: getClient\");var no=class extends ve{constructor(e,t){if(t?.shouldUseMultipart!=null)return new Ri(e,t);super(e,t),Object.defineProperty(this,oi,{writable:!0,value:void 0}),Object.defineProperty(this,Ui,{writable:!0,value:void 0}),Object.defineProperty(this,oo,{writable:!0,value:void 0}),Object.defineProperty(this,Va,{writable:!0,value:async s=>{let o=Object.create(null);function a(y){var b;let{id:S}=y;(b=o[S])==null||b.abort()}n(a,\"onremove\"),this.uppy.on(\"file-removed\",a);let l=this.uppy.getFilesByIds(s),h=hs(l),p=ds(h);this.uppy.emit(\"upload-start\",p);let d=ot(this,Ui)[Ui].wrapPromiseFunction(y=>this.opts.getUploadParameters(y)),f=s.length;return Promise.allSettled(s.map((y,b)=>(o[y]=d(this.uppy.getFile(y)),o[y].then(S=>{delete o[y];let E=this.uppy.getFile(y);v_(E,S);let{method:x=\"POST\",url:F,fields:U,headers:j}=S,G={method:x,formData:x.toUpperCase()===\"POST\",endpoint:F,allowedMetaFields:U?Object.keys(U):[]};return j&&(G.headers=j),this.uppy.setFileState(E.id,{meta:{...E.meta,...U},xhrUpload:G}),this.uploadFile(E.id,b,f)}).catch(S=>{delete o[y];let E=this.uppy.getFile(y);return this.uppy.emit(\"upload-error\",E,S),Promise.reject(S)})))).finally(()=>{this.uppy.off(\"file-removed\",a)})}}),Object.defineProperty(this,Wa,{writable:!0,value:()=>(ot(this,oi)[oi].setCompanionHeaders(this.opts.companionHeaders),Promise.resolve())}),Object.defineProperty(this,zc,{writable:!0,value:s=>{let o=ot(this,oo)[oo].getOptions(s),a=Array.isArray(o.allowedMetaFields)?o.allowedMetaFields:Object.keys(s.meta);return{...s.remote.body,protocol:\"multipart\",endpoint:o.endpoint,size:s.data.size,fieldname:o.fieldName,metadata:Object.fromEntries(a.map(l=>[l,s.meta[l]])),httpMethod:o.method,useFormData:o.formData,headers:typeof o.headers==\"function\"?o.headers(s):o.headers}}}),this.type=\"uploader\",this.id=this.opts.id||\"AwsS3\",this.title=\"AWS S3\",this.defaultLocale=Fv;let r={timeout:30*1e3,limit:0,allowedMetaFields:[],getUploadParameters:this.getUploadParameters.bind(this),shouldUseMultipart:!1,companionHeaders:{}};if(this.opts={...r,...t},t?.allowedMetaFields===void 0&&\"metaFields\"in this.opts)throw new Error(\"The `metaFields` option has been renamed to `allowedMetaFields`.\");this.i18nInit(),ot(this,oi)[oi]=new tt(e,t),ot(this,Ui)[Ui]=new Mt(this.opts.limit)}[Ov](){return ot(this,oi)[oi]}get client(){return ot(this,oi)[oi]}set client(e){ot(this,oi)[oi]=e}getUploadParameters(e){if(!this.opts.companionUrl)throw new Error(\"Expected a `companionUrl` option containing a Companion address.\");let t=e.meta.name,{type:r}=e.meta,s=Object.fromEntries(this.opts.allowedMetaFields.filter(a=>e.meta[a]!=null).map(a=>[`metadata[${a}]`,e.meta[a].toString()])),o=new URLSearchParams({filename:t,type:r,...s});return ot(this,oi)[oi].get(`s3/params?${o}`).then(y_)}uploadFile(e,t,r){let s=this.uppy.getFile(e);if(this.uppy.log(`uploading ${t} of ${r}`),s.error)throw new Error(s.error);if(s.isRemote){let o=n(()=>ot(this,Ui)[Ui],\"getQueue\"),a=new AbortController,l=n(p=>{p.id===s.id&&a.abort()},\"removedHandler\");this.uppy.on(\"file-removed\",l);let h=s.remote.requestClient.uploadRemoteFile(s,ot(this,zc)[zc](s),{signal:a.signal,getQueue:o});return ot(this,Ui)[Ui].wrapSyncFunction(()=>{this.uppy.off(\"file-removed\",l)},{priority:-1})(),h}return ot(this,oo)[oo].uploadLocalFile(s,t,r)}install(){let{uppy:e}=this;e.addPreProcessor(ot(this,Wa)[Wa]),e.addUploader(ot(this,Va)[Va]);function t(s,o){let a=this;return Bc(s,o)?{location:g_(o.responseURL,Ga(s,\"Location\")),bucket:Ga(s,\"Bucket\"),key:Ga(s,\"Key\"),etag:Ga(s,\"ETag\")}:a.method.toUpperCase()===\"POST\"?(Ev||(e.log(\"[AwsS3] No response data found, make sure to set the success_action_status AWS SDK option to 201. See https://uppy.io/docs/aws-s3/#POST-Uploads\",\"warning\"),Ev=!0),{location:null}):o.responseURL?{location:o.responseURL.replace(/\\?.*$/,\"\")}:{location:null}}n(t,\"defaultGetResponseData\");let r={fieldName:\"file\",responseUrlFieldName:\"location\",timeout:this.opts.timeout,[us]:ot(this,Ui)[Ui],responseType:\"text\",getResponseData:this.opts.getResponseData||t,getResponseError:b_};r.i18n=this.i18n,ot(this,oo)[oo]=new Ko(e,r)}uninstall(){this.uppy.removePreProcessor(ot(this,Wa)[Wa]),this.uppy.removeUploader(ot(this,Va)[Va])}};n(no,\"AwsS3\");no.VERSION=m_.version;var kv=\"3.7.2\",w_=kv,S_=typeof atob==\"function\",P_=typeof btoa==\"function\",Qo=typeof Buffer==\"function\",Cv=typeof TextDecoder==\"function\"?new TextDecoder:void 0,Tv=typeof TextEncoder==\"function\"?new TextEncoder:void 0,__=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\",Ka=Array.prototype.slice.call(__),Ku=(i=>{let e={};return i.forEach((t,r)=>e[t]=r),e})(Ka),x_=/^(?:[A-Za-z\\d+\\/]{4})*?(?:[A-Za-z\\d+\\/]{2}(?:==)?|[A-Za-z\\d+\\/]{3}=?)?$/,vt=String.fromCharCode.bind(String),Av=typeof Uint8Array.from==\"function\"?Uint8Array.from.bind(Uint8Array):(i,e=t=>t)=>new Uint8Array(Array.prototype.slice.call(i,0).map(e)),Dv=n(i=>i.replace(/=/g,\"\").replace(/[+\\/]/g,e=>e==\"+\"?\"-\":\"_\"),\"_mkUriSafe\"),Iv=n(i=>i.replace(/[^A-Za-z0-9\\+\\/]/g,\"\"),\"_tidyB64\"),Nv=n(i=>{let e,t,r,s,o=\"\",a=i.length%3;for(let l=0;l<i.length;){if((t=i.charCodeAt(l++))>255||(r=i.charCodeAt(l++))>255||(s=i.charCodeAt(l++))>255)throw new TypeError(\"invalid character found\");e=t<<16|r<<8|s,o+=Ka[e>>18&63]+Ka[e>>12&63]+Ka[e>>6&63]+Ka[e&63]}return a?o.slice(0,a-3)+\"===\".substring(a):o},\"btoaPolyfill\"),$c=P_?i=>btoa(i):Qo?i=>Buffer.from(i,\"binary\").toString(\"base64\"):Nv,jc=Qo?i=>Buffer.from(i).toString(\"base64\"):i=>{let t=[];for(let r=0,s=i.length;r<s;r+=4096)t.push(vt.apply(null,i.subarray(r,r+4096)));return $c(t.join(\"\"))},Xu=n((i,e=!1)=>e?Dv(jc(i)):jc(i),\"fromUint8Array\"),F_=n(i=>{if(i.length<2){var e=i.charCodeAt(0);return e<128?i:e<2048?vt(192|e>>>6)+vt(128|e&63):vt(224|e>>>12&15)+vt(128|e>>>6&63)+vt(128|e&63)}else{var e=65536+(i.charCodeAt(0)-55296)*1024+(i.charCodeAt(1)-56320);return vt(240|e>>>18&7)+vt(128|e>>>12&63)+vt(128|e>>>6&63)+vt(128|e&63)}},\"cb_utob\"),E_=/[\\uD800-\\uDBFF][\\uDC00-\\uDFFFF]|[^\\x00-\\x7F]/g,Mv=n(i=>i.replace(E_,F_),\"utob\"),Rv=Qo?i=>Buffer.from(i,\"utf8\").toString(\"base64\"):Tv?i=>jc(Tv.encode(i)):i=>$c(Mv(i)),Yo=n((i,e=!1)=>e?Dv(Rv(i)):Rv(i),\"encode\"),Uv=n(i=>Yo(i,!0),\"encodeURI\"),O_=/[\\xC0-\\xDF][\\x80-\\xBF]|[\\xE0-\\xEF][\\x80-\\xBF]{2}|[\\xF0-\\xF7][\\x80-\\xBF]{3}/g,C_=n(i=>{switch(i.length){case 4:var e=(7&i.charCodeAt(0))<<18|(63&i.charCodeAt(1))<<12|(63&i.charCodeAt(2))<<6|63&i.charCodeAt(3),t=e-65536;return vt((t>>>10)+55296)+vt((t&1023)+56320);case 3:return vt((15&i.charCodeAt(0))<<12|(63&i.charCodeAt(1))<<6|63&i.charCodeAt(2));default:return vt((31&i.charCodeAt(0))<<6|63&i.charCodeAt(1))}},\"cb_btou\"),Lv=n(i=>i.replace(O_,C_),\"btou\"),Bv=n(i=>{if(i=i.replace(/\\s+/g,\"\"),!x_.test(i))throw new TypeError(\"malformed base64.\");i+=\"==\".slice(2-(i.length&3));let e,t=\"\",r,s;for(let o=0;o<i.length;)e=Ku[i.charAt(o++)]<<18|Ku[i.charAt(o++)]<<12|(r=Ku[i.charAt(o++)])<<6|(s=Ku[i.charAt(o++)]),t+=r===64?vt(e>>16&255):s===64?vt(e>>16&255,e>>8&255):vt(e>>16&255,e>>8&255,e&255);return t},\"atobPolyfill\"),qc=S_?i=>atob(Iv(i)):Qo?i=>Buffer.from(i,\"base64\").toString(\"binary\"):Bv,zv=Qo?i=>Av(Buffer.from(i,\"base64\")):i=>Av(qc(i),e=>e.charCodeAt(0)),jv=n(i=>zv(Hv(i)),\"toUint8Array\"),T_=Qo?i=>Buffer.from(i,\"base64\").toString(\"utf8\"):Cv?i=>Cv.decode(zv(i)):i=>Lv(qc(i)),Hv=n(i=>Iv(i.replace(/[-_]/g,e=>e==\"-\"?\"+\":\"/\")),\"_unURI\"),Hc=n(i=>T_(Hv(i)),\"decode\"),A_=n(i=>{if(typeof i!=\"string\")return!1;let e=i.replace(/\\s+/g,\"\").replace(/={0,2}$/,\"\");return!/[^\\s0-9a-zA-Z\\+/]/.test(e)||!/[^\\s0-9a-zA-Z\\-_]/.test(e)},\"isValid\"),$v=n(i=>({value:i,enumerable:!1,writable:!0,configurable:!0}),\"_noEnum\"),qv=n(function(){let i=n((e,t)=>Object.defineProperty(String.prototype,e,$v(t)),\"_add\");i(\"fromBase64\",function(){return Hc(this)}),i(\"toBase64\",function(e){return Yo(this,e)}),i(\"toBase64URI\",function(){return Yo(this,!0)}),i(\"toBase64URL\",function(){return Yo(this,!0)}),i(\"toUint8Array\",function(){return jv(this)})},\"extendString\"),Vv=n(function(){let i=n((e,t)=>Object.defineProperty(Uint8Array.prototype,e,$v(t)),\"_add\");i(\"toBase64\",function(e){return Xu(this,e)}),i(\"toBase64URI\",function(){return Xu(this,!0)}),i(\"toBase64URL\",function(){return Xu(this,!0)})},\"extendUint8Array\"),R_=n(()=>{qv(),Vv()},\"extendBuiltins\"),Wv={version:kv,VERSION:w_,atob:qc,atobPolyfill:Bv,btoa:$c,btoaPolyfill:Nv,fromBase64:Hc,toBase64:Yo,encode:Yo,encodeURI:Uv,encodeURL:Uv,utob:Mv,btou:Lv,decode:Hc,isValid:A_,fromUint8Array:Xu,toUint8Array:jv,extendString:qv,extendUint8Array:Vv,extendBuiltins:R_};var y0=de(o0());function Kc(i){\"@babel/helpers - typeof\";return Kc=typeof Symbol==\"function\"&&typeof Symbol.iterator==\"symbol\"?function(e){return typeof e}:function(e){return e&&typeof Symbol==\"function\"&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e},Kc(i)}n(Kc,\"_typeof\");function n0(i,e){for(var t=0;t<e.length;t++){var r=e[t];r.enumerable=r.enumerable||!1,r.configurable=!0,\"value\"in r&&(r.writable=!0),Object.defineProperty(i,r.key,r)}}n(n0,\"_defineProperties\");function $_(i,e,t){return e&&n0(i.prototype,e),t&&n0(i,t),Object.defineProperty(i,\"prototype\",{writable:!1}),i}n($_,\"_createClass\");function q_(i,e){if(!(i instanceof e))throw new TypeError(\"Cannot call a class as a function\")}n(q_,\"_classCallCheck\");function V_(i,e){if(typeof e!=\"function\"&&e!==null)throw new TypeError(\"Super expression must either be null or a function\");i.prototype=Object.create(e&&e.prototype,{constructor:{value:i,writable:!0,configurable:!0}}),Object.defineProperty(i,\"prototype\",{writable:!1}),e&&Xa(i,e)}n(V_,\"_inherits\");function W_(i){var e=a0();return n(function(){var r=Ya(i),s;if(e){var o=Ya(this).constructor;s=Reflect.construct(r,arguments,o)}else s=r.apply(this,arguments);return G_(this,s)},\"_createSuperInternal\")}n(W_,\"_createSuper\");function G_(i,e){if(e&&(Kc(e)===\"object\"||typeof e==\"function\"))return e;if(e!==void 0)throw new TypeError(\"Derived constructors may only return object or undefined\");return K_(i)}n(G_,\"_possibleConstructorReturn\");function K_(i){if(i===void 0)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return i}n(K_,\"_assertThisInitialized\");function Xc(i){var e=typeof Map==\"function\"?new Map:void 0;return Xc=n(function(r){if(r===null||!X_(r))return r;if(typeof r!=\"function\")throw new TypeError(\"Super expression must either be null or a function\");if(typeof e<\"u\"){if(e.has(r))return e.get(r);e.set(r,s)}function s(){return Qu(r,arguments,Ya(this).constructor)}return n(s,\"Wrapper\"),s.prototype=Object.create(r.prototype,{constructor:{value:s,enumerable:!1,writable:!0,configurable:!0}}),Xa(s,r)},\"_wrapNativeSuper\"),Xc(i)}n(Xc,\"_wrapNativeSuper\");function Qu(i,e,t){return a0()?Qu=Reflect.construct.bind():Qu=n(function(s,o,a){var l=[null];l.push.apply(l,o);var h=Function.bind.apply(s,l),p=new h;return a&&Xa(p,a.prototype),p},\"_construct\"),Qu.apply(null,arguments)}n(Qu,\"_construct\");function a0(){if(typeof Reflect>\"u\"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy==\"function\")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}n(a0,\"_isNativeReflectConstruct\");function X_(i){return Function.toString.call(i).indexOf(\"[native code]\")!==-1}n(X_,\"_isNativeFunction\");function Xa(i,e){return Xa=Object.setPrototypeOf?Object.setPrototypeOf.bind():n(function(r,s){return r.__proto__=s,r},\"_setPrototypeOf\"),Xa(i,e)}n(Xa,\"_setPrototypeOf\");function Ya(i){return Ya=Object.setPrototypeOf?Object.getPrototypeOf.bind():n(function(t){return t.__proto__||Object.getPrototypeOf(t)},\"_getPrototypeOf\"),Ya(i)}n(Ya,\"_getPrototypeOf\");var Y_=function(i){V_(t,i);var e=W_(t);function t(r){var s,o=arguments.length>1&&arguments[1]!==void 0?arguments[1]:null,a=arguments.length>2&&arguments[2]!==void 0?arguments[2]:null,l=arguments.length>3&&arguments[3]!==void 0?arguments[3]:null;if(q_(this,t),s=e.call(this,r),s.originalRequest=a,s.originalResponse=l,s.causingError=o,o!=null&&(r+=\", caused by \".concat(o.toString())),a!=null){var h=a.getHeader(\"X-Request-ID\")||\"n/a\",p=a.getMethod(),d=a.getURL(),f=l?l.getStatus():\"n/a\",y=l?l.getBody()||\"\":\"n/a\";r+=\", originated from request (method: \".concat(p,\", url: \").concat(d,\", response code: \").concat(f,\", response text: \").concat(y,\", request id: \").concat(h,\")\")}return s.message=r,s}return n(t,\"DetailedError\"),$_(t)}(Xc(Error)),Jo=Y_;var Q_=!1;function cs(i){Q_&&console.log(i)}n(cs,\"log\");function Yc(){return\"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\".replace(/[xy]/g,function(i){var e=Math.random()*16|0,t=i===\"x\"?e:e&3|8;return t.toString(16)})}n(Yc,\"uuid\");function g0(i,e){return t5(i)||e5(i,e)||Z_(i,e)||J_()}n(g0,\"_slicedToArray\");function J_(){throw new TypeError(`Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}n(J_,\"_nonIterableRest\");function Z_(i,e){if(i){if(typeof i==\"string\")return l0(i,e);var t=Object.prototype.toString.call(i).slice(8,-1);if(t===\"Object\"&&i.constructor&&(t=i.constructor.name),t===\"Map\"||t===\"Set\")return Array.from(i);if(t===\"Arguments\"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t))return l0(i,e)}}n(Z_,\"_unsupportedIterableToArray\");function l0(i,e){(e==null||e>i.length)&&(e=i.length);for(var t=0,r=new Array(e);t<e;t++)r[t]=i[t];return r}n(l0,\"_arrayLikeToArray\");function e5(i,e){var t=i==null?null:typeof Symbol<\"u\"&&i[Symbol.iterator]||i[\"@@iterator\"];if(t!=null){var r=[],s=!0,o=!1,a,l;try{for(t=t.call(i);!(s=(a=t.next()).done)&&(r.push(a.value),!(e&&r.length===e));s=!0);}catch(h){o=!0,l=h}finally{try{!s&&t.return!=null&&t.return()}finally{if(o)throw l}}return r}}n(e5,\"_iterableToArrayLimit\");function t5(i){if(Array.isArray(i))return i}n(t5,\"_arrayWithHoles\");function u0(i,e){var t=Object.keys(i);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(i);e&&(r=r.filter(function(s){return Object.getOwnPropertyDescriptor(i,s).enumerable})),t.push.apply(t,r)}return t}n(u0,\"ownKeys\");function Zo(i){for(var e=1;e<arguments.length;e++){var t=arguments[e]!=null?arguments[e]:{};e%2?u0(Object(t),!0).forEach(function(r){i5(i,r,t[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(i,Object.getOwnPropertyDescriptors(t)):u0(Object(t)).forEach(function(r){Object.defineProperty(i,r,Object.getOwnPropertyDescriptor(t,r))})}return i}n(Zo,\"_objectSpread\");function i5(i,e,t){return e in i?Object.defineProperty(i,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):i[e]=t,i}n(i5,\"_defineProperty\");function r5(i,e){if(!(i instanceof e))throw new TypeError(\"Cannot call a class as a function\")}n(r5,\"_classCallCheck\");function h0(i,e){for(var t=0;t<e.length;t++){var r=e[t];r.enumerable=r.enumerable||!1,r.configurable=!0,\"value\"in r&&(r.writable=!0),Object.defineProperty(i,r.key,r)}}n(h0,\"_defineProperties\");function s5(i,e,t){return e&&h0(i.prototype,e),t&&h0(i,t),Object.defineProperty(i,\"prototype\",{writable:!1}),i}n(s5,\"_createClass\");var o5={endpoint:null,uploadUrl:null,metadata:{},fingerprint:null,uploadSize:null,onProgress:null,onChunkComplete:null,onSuccess:null,onError:null,_onUploadUrlAvailable:null,overridePatchMethod:!1,headers:{},addRequestId:!1,onBeforeRequest:null,onAfterResponse:null,onShouldRetry:null,chunkSize:1/0,retryDelays:[0,1e3,3e3,5e3],parallelUploads:1,parallelUploadBoundaries:null,storeFingerprintForResuming:!0,removeFingerprintOnSuccess:!1,uploadLengthDeferred:!1,uploadDataDuringCreation:!1,urlStorage:null,fileReader:null,httpStack:null},v0=function(){function i(e,t){r5(this,i),\"resume\"in t&&console.log(\"tus: The `resume` option has been removed in tus-js-client v2. Please use the URL storage API instead.\"),this.options=t,this.options.chunkSize=Number(this.options.chunkSize),this._urlStorage=this.options.urlStorage,this.file=e,this.url=null,this._req=null,this._fingerprint=null,this._urlStorageKey=null,this._offset=null,this._aborted=!1,this._size=null,this._source=null,this._retryAttempt=0,this._retryTimeout=null,this._offsetBeforeRetry=0,this._parallelUploads=null,this._parallelUploadUrls=null}return n(i,\"BaseUpload\"),s5(i,[{key:\"findPreviousUploads\",value:n(function(){var t=this;return this.options.fingerprint(this.file,this.options).then(function(r){return t._urlStorage.findUploadsByFingerprint(r)})},\"findPreviousUploads\")},{key:\"resumeFromPreviousUpload\",value:n(function(t){this.url=t.uploadUrl||null,this._parallelUploadUrls=t.parallelUploadUrls||null,this._urlStorageKey=t.urlStorageKey},\"resumeFromPreviousUpload\")},{key:\"start\",value:n(function(){var t=this,r=this.file;if(!r){this._emitError(new Error(\"tus: no file or stream to upload provided\"));return}if(!this.options.endpoint&&!this.options.uploadUrl&&!this.url){this._emitError(new Error(\"tus: neither an endpoint or an upload URL is provided\"));return}var s=this.options.retryDelays;if(s!=null&&Object.prototype.toString.call(s)!==\"[object Array]\"){this._emitError(new Error(\"tus: the `retryDelays` option must either be an array or null\"));return}if(this.options.parallelUploads>1)for(var o=0,a=[\"uploadUrl\",\"uploadSize\",\"uploadLengthDeferred\"];o<a.length;o++){var l=a[o];if(this.options[l]){this._emitError(new Error(\"tus: cannot use the \".concat(l,\" option when parallelUploads is enabled\")));return}}if(this.options.parallelUploadBoundaries){if(this.options.parallelUploads<=1){this._emitError(new Error(\"tus: cannot use the `parallelUploadBoundaries` option when `parallelUploads` is disabled\"));return}if(this.options.parallelUploads!==this.options.parallelUploadBoundaries.length){this._emitError(new Error(\"tus: the `parallelUploadBoundaries` must have the same length as the value of `parallelUploads`\"));return}}this.options.fingerprint(r,this.options).then(function(h){return h==null?cs(\"No fingerprint was calculated meaning that the upload cannot be stored in the URL storage.\"):cs(\"Calculated fingerprint: \".concat(h)),t._fingerprint=h,t._source?t._source:t.options.fileReader.openFile(r,t.options.chunkSize)}).then(function(h){if(t._source=h,t.options.uploadLengthDeferred)t._size=null;else if(t.options.uploadSize!=null){if(t._size=Number(t.options.uploadSize),Number.isNaN(t._size)){t._emitError(new Error(\"tus: cannot convert `uploadSize` option into a number\"));return}}else if(t._size=t._source.size,t._size==null){t._emitError(new Error(\"tus: cannot automatically derive upload's size from input. Specify it manually using the `uploadSize` option or use the `uploadLengthDeferred` option\"));return}t.options.parallelUploads>1||t._parallelUploadUrls!=null?t._startParallelUpload():t._startSingleUpload()}).catch(function(h){t._emitError(h)})},\"start\")},{key:\"_startParallelUpload\",value:n(function(){var t,r=this,s=this._size,o=0;this._parallelUploads=[];var a=this._parallelUploadUrls!=null?this._parallelUploadUrls.length:this.options.parallelUploads,l=(t=this.options.parallelUploadBoundaries)!==null&&t!==void 0?t:a5(this._source.size,a);this._parallelUploadUrls&&l.forEach(function(d,f){d.uploadUrl=r._parallelUploadUrls[f]||null}),this._parallelUploadUrls=new Array(l.length);var h=l.map(function(d,f){var y=0;return r._source.slice(d.start,d.end).then(function(b){var S=b.value;return new Promise(function(E,x){var F=Zo(Zo({},r.options),{},{uploadUrl:d.uploadUrl||null,storeFingerprintForResuming:!1,removeFingerprintOnSuccess:!1,parallelUploads:1,parallelUploadBoundaries:null,metadata:{},headers:Zo(Zo({},r.options.headers),{},{\"Upload-Concat\":\"partial\"}),onSuccess:E,onError:x,onProgress:n(function(G){o=o-y+G,y=G,r._emitProgress(o,s)},\"onProgress\"),_onUploadUrlAvailable:n(function(){r._parallelUploadUrls[f]=U.url,r._parallelUploadUrls.filter(function(G){return!!G}).length===l.length&&r._saveUploadInUrlStorage()},\"_onUploadUrlAvailable\")}),U=new i(S,F);U.start(),r._parallelUploads.push(U)})})}),p;Promise.all(h).then(function(){p=r._openRequest(\"POST\",r.options.endpoint),p.setHeader(\"Upload-Concat\",\"final;\".concat(r._parallelUploadUrls.join(\" \")));var d=d0(r.options.metadata);return d!==\"\"&&p.setHeader(\"Upload-Metadata\",d),r._sendRequest(p,null)}).then(function(d){if(!en(d.getStatus(),200)){r._emitHttpError(p,d,\"tus: unexpected response while creating upload\");return}var f=d.getHeader(\"Location\");if(f==null){r._emitHttpError(p,d,\"tus: invalid or missing Location header\");return}r.url=m0(r.options.endpoint,f),cs(\"Created upload at \".concat(r.url)),r._emitSuccess()}).catch(function(d){r._emitError(d)})},\"_startParallelUpload\")},{key:\"_startSingleUpload\",value:n(function(){if(this._aborted=!1,this.url!=null){cs(\"Resuming upload from previous URL: \".concat(this.url)),this._resumeUpload();return}if(this.options.uploadUrl!=null){cs(\"Resuming upload from provided URL: \".concat(this.options.uploadUrl)),this.url=this.options.uploadUrl,this._resumeUpload();return}cs(\"Creating a new upload\"),this._createUpload()},\"_startSingleUpload\")},{key:\"abort\",value:n(function(t){var r=this;return this._parallelUploads!=null&&this._parallelUploads.forEach(function(s){s.abort(t)}),this._req!==null&&this._req.abort(),this._aborted=!0,this._retryTimeout!=null&&(clearTimeout(this._retryTimeout),this._retryTimeout=null),!t||this.url==null?Promise.resolve():i.terminate(this.url,this.options).then(function(){return r._removeFromUrlStorage()})},\"abort\")},{key:\"_emitHttpError\",value:n(function(t,r,s,o){this._emitError(new Jo(s,o,t,r))},\"_emitHttpError\")},{key:\"_emitError\",value:n(function(t){var r=this;if(!this._aborted){if(this.options.retryDelays!=null){var s=this._offset!=null&&this._offset>this._offsetBeforeRetry;if(s&&(this._retryAttempt=0),f0(t,this._retryAttempt,this.options)){var o=this.options.retryDelays[this._retryAttempt++];this._offsetBeforeRetry=this._offset,this._retryTimeout=setTimeout(function(){r.start()},o);return}}if(typeof this.options.onError==\"function\")this.options.onError(t);else throw t}},\"_emitError\")},{key:\"_emitSuccess\",value:n(function(){this.options.removeFingerprintOnSuccess&&this._removeFromUrlStorage(),typeof this.options.onSuccess==\"function\"&&this.options.onSuccess()},\"_emitSuccess\")},{key:\"_emitProgress\",value:n(function(t,r){typeof this.options.onProgress==\"function\"&&this.options.onProgress(t,r)},\"_emitProgress\")},{key:\"_emitChunkComplete\",value:n(function(t,r,s){typeof this.options.onChunkComplete==\"function\"&&this.options.onChunkComplete(t,r,s)},\"_emitChunkComplete\")},{key:\"_createUpload\",value:n(function(){var t=this;if(!this.options.endpoint){this._emitError(new Error(\"tus: unable to create upload because no endpoint is provided\"));return}var r=this._openRequest(\"POST\",this.options.endpoint);this.options.uploadLengthDeferred?r.setHeader(\"Upload-Defer-Length\",1):r.setHeader(\"Upload-Length\",this._size);var s=d0(this.options.metadata);s!==\"\"&&r.setHeader(\"Upload-Metadata\",s);var o;this.options.uploadDataDuringCreation&&!this.options.uploadLengthDeferred?(this._offset=0,o=this._addChunkToRequest(r)):o=this._sendRequest(r,null),o.then(function(a){if(!en(a.getStatus(),200)){t._emitHttpError(r,a,\"tus: unexpected response while creating upload\");return}var l=a.getHeader(\"Location\");if(l==null){t._emitHttpError(r,a,\"tus: invalid or missing Location header\");return}if(t.url=m0(t.options.endpoint,l),cs(\"Created upload at \".concat(t.url)),typeof t.options._onUploadUrlAvailable==\"function\"&&t.options._onUploadUrlAvailable(),t._size===0){t._emitSuccess(),t._source.close();return}t._saveUploadInUrlStorage().then(function(){t.options.uploadDataDuringCreation?t._handleUploadResponse(r,a):(t._offset=0,t._performUpload())})}).catch(function(a){t._emitHttpError(r,null,\"tus: failed to create upload\",a)})},\"_createUpload\")},{key:\"_resumeUpload\",value:n(function(){var t=this,r=this._openRequest(\"HEAD\",this.url),s=this._sendRequest(r,null);s.then(function(o){var a=o.getStatus();if(!en(a,200)){if(a===423){t._emitHttpError(r,o,\"tus: upload is currently locked; retry later\");return}if(en(a,400)&&t._removeFromUrlStorage(),!t.options.endpoint){t._emitHttpError(r,o,\"tus: unable to resume upload (new upload cannot be created without an endpoint)\");return}t.url=null,t._createUpload();return}var l=parseInt(o.getHeader(\"Upload-Offset\"),10);if(Number.isNaN(l)){t._emitHttpError(r,o,\"tus: invalid or missing offset value\");return}var h=parseInt(o.getHeader(\"Upload-Length\"),10);if(Number.isNaN(h)&&!t.options.uploadLengthDeferred){t._emitHttpError(r,o,\"tus: invalid or missing length value\");return}typeof t.options._onUploadUrlAvailable==\"function\"&&t.options._onUploadUrlAvailable(),t._saveUploadInUrlStorage().then(function(){if(l===h){t._emitProgress(h,h),t._emitSuccess();return}t._offset=l,t._performUpload()})}).catch(function(o){t._emitHttpError(r,null,\"tus: failed to resume upload\",o)})},\"_resumeUpload\")},{key:\"_performUpload\",value:n(function(){var t=this;if(!this._aborted){var r;this.options.overridePatchMethod?(r=this._openRequest(\"POST\",this.url),r.setHeader(\"X-HTTP-Method-Override\",\"PATCH\")):r=this._openRequest(\"PATCH\",this.url),r.setHeader(\"Upload-Offset\",this._offset);var s=this._addChunkToRequest(r);s.then(function(o){if(!en(o.getStatus(),200)){t._emitHttpError(r,o,\"tus: unexpected response while uploading chunk\");return}t._handleUploadResponse(r,o)}).catch(function(o){t._aborted||t._emitHttpError(r,null,\"tus: failed to upload chunk at offset \".concat(t._offset),o)})}},\"_performUpload\")},{key:\"_addChunkToRequest\",value:n(function(t){var r=this,s=this._offset,o=this._offset+this.options.chunkSize;return t.setProgressHandler(function(a){r._emitProgress(s+a,r._size)}),t.setHeader(\"Content-Type\",\"application/offset+octet-stream\"),(o===1/0||o>this._size)&&!this.options.uploadLengthDeferred&&(o=this._size),this._source.slice(s,o).then(function(a){var l=a.value,h=a.done;return r.options.uploadLengthDeferred&&h&&(r._size=r._offset+(l&&l.size?l.size:0),t.setHeader(\"Upload-Length\",r._size)),l===null?r._sendRequest(t):(r._emitProgress(r._offset,r._size),r._sendRequest(t,l))})},\"_addChunkToRequest\")},{key:\"_handleUploadResponse\",value:n(function(t,r){var s=parseInt(r.getHeader(\"Upload-Offset\"),10);if(Number.isNaN(s)){this._emitHttpError(t,r,\"tus: invalid or missing offset value\");return}if(this._emitProgress(s,this._size),this._emitChunkComplete(s-this._offset,s,this._size),this._offset=s,s===this._size){this._emitSuccess(),this._source.close();return}this._performUpload()},\"_handleUploadResponse\")},{key:\"_openRequest\",value:n(function(t,r){var s=c0(t,r,this.options);return this._req=s,s},\"_openRequest\")},{key:\"_removeFromUrlStorage\",value:n(function(){var t=this;this._urlStorageKey&&(this._urlStorage.removeUpload(this._urlStorageKey).catch(function(r){t._emitError(r)}),this._urlStorageKey=null)},\"_removeFromUrlStorage\")},{key:\"_saveUploadInUrlStorage\",value:n(function(){var t=this;if(!this.options.storeFingerprintForResuming||!this._fingerprint||this._urlStorageKey!==null)return Promise.resolve();var r={size:this._size,metadata:this.options.metadata,creationTime:new Date().toString()};return this._parallelUploads?r.parallelUploadUrls=this._parallelUploadUrls:r.uploadUrl=this.url,this._urlStorage.addUpload(this._fingerprint,r).then(function(s){t._urlStorageKey=s})},\"_saveUploadInUrlStorage\")},{key:\"_sendRequest\",value:n(function(t){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:null;return p0(t,r,this.options)},\"_sendRequest\")}],[{key:\"terminate\",value:n(function(t){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},s=c0(\"DELETE\",t,r);return p0(s,null,r).then(function(o){if(o.getStatus()!==204)throw new Jo(\"tus: unexpected response while terminating upload\",null,s,o)}).catch(function(o){if(o instanceof Jo||(o=new Jo(\"tus: failed to terminate upload\",o,s,null)),!f0(o,0,r))throw o;var a=r.retryDelays[0],l=r.retryDelays.slice(1),h=Zo(Zo({},r),{},{retryDelays:l});return new Promise(function(p){return setTimeout(p,a)}).then(function(){return i.terminate(t,h)})})},\"terminate\")}]),i}();function d0(i){return Object.entries(i).map(function(e){var t=g0(e,2),r=t[0],s=t[1];return\"\".concat(r,\" \").concat(Wv.encode(String(s)))}).join(\",\")}n(d0,\"encodeMetadata\");function en(i,e){return i>=e&&i<e+100}n(en,\"inStatusCategory\");function c0(i,e,t){var r=t.httpStack.createRequest(i,e);r.setHeader(\"Tus-Resumable\",\"1.0.0\");var s=t.headers||{};if(Object.entries(s).forEach(function(a){var l=g0(a,2),h=l[0],p=l[1];r.setHeader(h,p)}),t.addRequestId){var o=Yc();r.setHeader(\"X-Request-ID\",o)}return r}n(c0,\"openRequest\");function p0(i,e,t){var r=typeof t.onBeforeRequest==\"function\"?Promise.resolve(t.onBeforeRequest(i)):Promise.resolve();return r.then(function(){return i.send(e).then(function(s){var o=typeof t.onAfterResponse==\"function\"?Promise.resolve(t.onAfterResponse(i,s)):Promise.resolve();return o.then(function(){return s})})})}n(p0,\"sendRequest\");function n5(){var i=!0;return typeof window<\"u\"&&\"navigator\"in window&&window.navigator.onLine===!1&&(i=!1),i}n(n5,\"isOnline\");function f0(i,e,t){if(t.retryDelays==null||e>=t.retryDelays.length||i.originalRequest==null)return!1;if(t&&typeof t.onShouldRetry==\"function\")return t.onShouldRetry(i,e,t);var r=i.originalResponse?i.originalResponse.getStatus():0;return(!en(r,400)||r===409||r===423)&&n5()}n(f0,\"shouldRetry\");function m0(i,e){return new y0.default(e,i).toString()}n(m0,\"resolveUrl\");function a5(i,e){for(var t=Math.floor(i/e),r=[],s=0;s<e;s++)r.push({start:t*s,end:t*(s+1)});return r[e-1].end=i,r}n(a5,\"splitSizeIntoParts\");v0.defaultOptions=o5;var Ju=v0;function l5(i,e){if(!(i instanceof e))throw new TypeError(\"Cannot call a class as a function\")}n(l5,\"_classCallCheck\");function b0(i,e){for(var t=0;t<e.length;t++){var r=e[t];r.enumerable=r.enumerable||!1,r.configurable=!0,\"value\"in r&&(r.writable=!0),Object.defineProperty(i,r.key,r)}}n(b0,\"_defineProperties\");function u5(i,e,t){return e&&b0(i.prototype,e),t&&b0(i,t),Object.defineProperty(i,\"prototype\",{writable:!1}),i}n(u5,\"_createClass\");var w0=function(){function i(){l5(this,i)}return n(i,\"NoopUrlStorage\"),u5(i,[{key:\"listAllUploads\",value:n(function(){return Promise.resolve([])},\"listAllUploads\")},{key:\"findUploadsByFingerprint\",value:n(function(t){return Promise.resolve([])},\"findUploadsByFingerprint\")},{key:\"removeUpload\",value:n(function(t){return Promise.resolve()},\"removeUpload\")},{key:\"addUpload\",value:n(function(t,r){return Promise.resolve(null)},\"addUpload\")}]),i}();function h5(i,e){if(!(i instanceof e))throw new TypeError(\"Cannot call a class as a function\")}n(h5,\"_classCallCheck\");function S0(i,e){for(var t=0;t<e.length;t++){var r=e[t];r.enumerable=r.enumerable||!1,r.configurable=!0,\"value\"in r&&(r.writable=!0),Object.defineProperty(i,r.key,r)}}n(S0,\"_defineProperties\");function d5(i,e,t){return e&&S0(i.prototype,e),t&&S0(i,t),Object.defineProperty(i,\"prototype\",{writable:!1}),i}n(d5,\"_createClass\");var Jc=!1;try{Jc=\"localStorage\"in window,Qc=\"tusSupport\",localStorage.setItem(Qc,localStorage.getItem(Qc))}catch(i){if(i.code===i.SECURITY_ERR||i.code===i.QUOTA_EXCEEDED_ERR)Jc=!1;else throw i}var Qc,P0=Jc,_0=function(){function i(){h5(this,i)}return n(i,\"WebStorageUrlStorage\"),d5(i,[{key:\"findAllUploads\",value:n(function(){var t=this._findEntries(\"tus::\");return Promise.resolve(t)},\"findAllUploads\")},{key:\"findUploadsByFingerprint\",value:n(function(t){var r=this._findEntries(\"tus::\".concat(t,\"::\"));return Promise.resolve(r)},\"findUploadsByFingerprint\")},{key:\"removeUpload\",value:n(function(t){return localStorage.removeItem(t),Promise.resolve()},\"removeUpload\")},{key:\"addUpload\",value:n(function(t,r){var s=Math.round(Math.random()*1e12),o=\"tus::\".concat(t,\"::\").concat(s);return localStorage.setItem(o,JSON.stringify(r)),Promise.resolve(o)},\"addUpload\")},{key:\"_findEntries\",value:n(function(t){for(var r=[],s=0;s<localStorage.length;s++){var o=localStorage.key(s);if(o.indexOf(t)===0)try{var a=JSON.parse(localStorage.getItem(o));a.urlStorageKey=o,r.push(a)}catch{}}return r},\"_findEntries\")}]),i}();function Zc(i,e){if(!(i instanceof e))throw new TypeError(\"Cannot call a class as a function\")}n(Zc,\"_classCallCheck\");function x0(i,e){for(var t=0;t<e.length;t++){var r=e[t];r.enumerable=r.enumerable||!1,r.configurable=!0,\"value\"in r&&(r.writable=!0),Object.defineProperty(i,r.key,r)}}n(x0,\"_defineProperties\");function ep(i,e,t){return e&&x0(i.prototype,e),t&&x0(i,t),Object.defineProperty(i,\"prototype\",{writable:!1}),i}n(ep,\"_createClass\");var F0=function(){function i(){Zc(this,i)}return n(i,\"XHRHttpStack\"),ep(i,[{key:\"createRequest\",value:n(function(t,r){return new c5(t,r)},\"createRequest\")},{key:\"getName\",value:n(function(){return\"XHRHttpStack\"},\"getName\")}]),i}();var c5=function(){function i(e,t){Zc(this,i),this._xhr=new XMLHttpRequest,this._xhr.open(e,t,!0),this._method=e,this._url=t,this._headers={}}return n(i,\"Request\"),ep(i,[{key:\"getMethod\",value:n(function(){return this._method},\"getMethod\")},{key:\"getURL\",value:n(function(){return this._url},\"getURL\")},{key:\"setHeader\",value:n(function(t,r){this._xhr.setRequestHeader(t,r),this._headers[t]=r},\"setHeader\")},{key:\"getHeader\",value:n(function(t){return this._headers[t]},\"getHeader\")},{key:\"setProgressHandler\",value:n(function(t){\"upload\"in this._xhr&&(this._xhr.upload.onprogress=function(r){r.lengthComputable&&t(r.loaded)})},\"setProgressHandler\")},{key:\"send\",value:n(function(){var t=this,r=arguments.length>0&&arguments[0]!==void 0?arguments[0]:null;return new Promise(function(s,o){t._xhr.onload=function(){s(new p5(t._xhr))},t._xhr.onerror=function(a){o(a)},t._xhr.send(r)})},\"send\")},{key:\"abort\",value:n(function(){return this._xhr.abort(),Promise.resolve()},\"abort\")},{key:\"getUnderlyingObject\",value:n(function(){return this._xhr},\"getUnderlyingObject\")}]),i}(),p5=function(){function i(e){Zc(this,i),this._xhr=e}return n(i,\"Response\"),ep(i,[{key:\"getStatus\",value:n(function(){return this._xhr.status},\"getStatus\")},{key:\"getHeader\",value:n(function(t){return this._xhr.getResponseHeader(t)},\"getHeader\")},{key:\"getBody\",value:n(function(){return this._xhr.responseText},\"getBody\")},{key:\"getUnderlyingObject\",value:n(function(){return this._xhr},\"getUnderlyingObject\")}]),i}();var f5=n(function(){return typeof navigator<\"u\"&&typeof navigator.product==\"string\"&&navigator.product.toLowerCase()===\"reactnative\"},\"isReactNative\"),Zu=f5;function tp(i){return new Promise(function(e,t){var r=new XMLHttpRequest;r.responseType=\"blob\",r.onload=function(){var s=r.response;e(s)},r.onerror=function(s){t(s)},r.open(\"GET\",i),r.send()})}n(tp,\"uriToBlob\");var m5=n(function(){return typeof window<\"u\"&&(typeof window.PhoneGap<\"u\"||typeof window.Cordova<\"u\"||typeof window.cordova<\"u\")},\"isCordova\"),E0=m5;function ip(i){return new Promise(function(e,t){var r=new FileReader;r.onload=function(){var s=new Uint8Array(r.result);e({value:s})},r.onerror=function(s){t(s)},r.readAsArrayBuffer(i)})}n(ip,\"readAsByteArray\");function g5(i,e){if(!(i instanceof e))throw new TypeError(\"Cannot call a class as a function\")}n(g5,\"_classCallCheck\");function O0(i,e){for(var t=0;t<e.length;t++){var r=e[t];r.enumerable=r.enumerable||!1,r.configurable=!0,\"value\"in r&&(r.writable=!0),Object.defineProperty(i,r.key,r)}}n(O0,\"_defineProperties\");function y5(i,e,t){return e&&O0(i.prototype,e),t&&O0(i,t),Object.defineProperty(i,\"prototype\",{writable:!1}),i}n(y5,\"_createClass\");var rp=function(){function i(e){g5(this,i),this._file=e,this.size=e.size}return n(i,\"FileSource\"),y5(i,[{key:\"slice\",value:n(function(t,r){if(E0())return ip(this._file.slice(t,r));var s=this._file.slice(t,r);return Promise.resolve({value:s})},\"slice\")},{key:\"close\",value:n(function(){},\"close\")}]),i}();function v5(i,e){if(!(i instanceof e))throw new TypeError(\"Cannot call a class as a function\")}n(v5,\"_classCallCheck\");function C0(i,e){for(var t=0;t<e.length;t++){var r=e[t];r.enumerable=r.enumerable||!1,r.configurable=!0,\"value\"in r&&(r.writable=!0),Object.defineProperty(i,r.key,r)}}n(C0,\"_defineProperties\");function b5(i,e,t){return e&&C0(i.prototype,e),t&&C0(i,t),Object.defineProperty(i,\"prototype\",{writable:!1}),i}n(b5,\"_createClass\");function T0(i){return i===void 0?0:i.size!==void 0?i.size:i.length}n(T0,\"len\");function w5(i,e){if(i.concat)return i.concat(e);if(i instanceof Blob)return new Blob([i,e],{type:i.type});if(i.set){var t=new i.constructor(i.length+e.length);return t.set(i),t.set(e,i.length),t}throw new Error(\"Unknown data type\")}n(w5,\"concat\");var A0=function(){function i(e){v5(this,i),this._buffer=void 0,this._bufferOffset=0,this._reader=e,this._done=!1}return n(i,\"StreamSource\"),b5(i,[{key:\"slice\",value:n(function(t,r){return t<this._bufferOffset?Promise.reject(new Error(\"Requested data is before the reader's current offset\")):this._readUntilEnoughDataOrDone(t,r)},\"slice\")},{key:\"_readUntilEnoughDataOrDone\",value:n(function(t,r){var s=this,o=r<=this._bufferOffset+T0(this._buffer);if(this._done||o){var a=this._getDataFromBuffer(t,r),l=a==null?this._done:!1;return Promise.resolve({value:a,done:l})}return this._reader.read().then(function(h){var p=h.value,d=h.done;return d?s._done=!0:s._buffer===void 0?s._buffer=p:s._buffer=w5(s._buffer,p),s._readUntilEnoughDataOrDone(t,r)})},\"_readUntilEnoughDataOrDone\")},{key:\"_getDataFromBuffer\",value:n(function(t,r){t>this._bufferOffset&&(this._buffer=this._buffer.slice(t-this._bufferOffset),this._bufferOffset=t);var s=T0(this._buffer)===0;return this._done&&s?null:this._buffer.slice(0,r-t)},\"_getDataFromBuffer\")},{key:\"close\",value:n(function(){this._reader.cancel&&this._reader.cancel()},\"close\")}]),i}();function S5(i,e){if(!(i instanceof e))throw new TypeError(\"Cannot call a class as a function\")}n(S5,\"_classCallCheck\");function R0(i,e){for(var t=0;t<e.length;t++){var r=e[t];r.enumerable=r.enumerable||!1,r.configurable=!0,\"value\"in r&&(r.writable=!0),Object.defineProperty(i,r.key,r)}}n(R0,\"_defineProperties\");function P5(i,e,t){return e&&R0(i.prototype,e),t&&R0(i,t),Object.defineProperty(i,\"prototype\",{writable:!1}),i}n(P5,\"_createClass\");var U0=function(){function i(){S5(this,i)}return n(i,\"FileReader\"),P5(i,[{key:\"openFile\",value:n(function(t,r){return Zu()&&t&&typeof t.uri<\"u\"?tp(t.uri).then(function(s){return new rp(s)}).catch(function(s){throw new Error(\"tus: cannot fetch `file.uri` as Blob, make sure the uri is correct and accessible. \".concat(s))}):typeof t.slice==\"function\"&&typeof t.size<\"u\"?Promise.resolve(new rp(t)):typeof t.read==\"function\"?(r=Number(r),Number.isFinite(r)?Promise.resolve(new A0(t,r)):Promise.reject(new Error(\"cannot create source for stream without a finite value for the `chunkSize` option\"))):Promise.reject(new Error(\"source object may only be an instance of File, Blob, or Reader in this environment\"))},\"openFile\")}]),i}();function sp(i,e){return Zu()?Promise.resolve(_5(i,e)):Promise.resolve([\"tus-br\",i.name,i.type,i.size,i.lastModified,e.endpoint].join(\"-\"))}n(sp,\"fingerprint\");function _5(i,e){var t=i.exif?x5(JSON.stringify(i.exif)):\"noexif\";return[\"tus-rn\",i.name||\"noname\",i.size||\"nosize\",t,e.endpoint].join(\"/\")}n(_5,\"reactNativeFingerprint\");function x5(i){var e=0;if(i.length===0)return e;for(var t=0;t<i.length;t++){var r=i.charCodeAt(t);e=(e<<5)-e+r,e&=e}return e}n(x5,\"hashCode\");function op(i){\"@babel/helpers - typeof\";return op=typeof Symbol==\"function\"&&typeof Symbol.iterator==\"symbol\"?function(e){return typeof e}:function(e){return e&&typeof Symbol==\"function\"&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e},op(i)}n(op,\"_typeof\");function F5(i,e){if(!(i instanceof e))throw new TypeError(\"Cannot call a class as a function\")}n(F5,\"_classCallCheck\");function k0(i,e){for(var t=0;t<e.length;t++){var r=e[t];r.enumerable=r.enumerable||!1,r.configurable=!0,\"value\"in r&&(r.writable=!0),Object.defineProperty(i,r.key,r)}}n(k0,\"_defineProperties\");function E5(i,e,t){return e&&k0(i.prototype,e),t&&k0(i,t),Object.defineProperty(i,\"prototype\",{writable:!1}),i}n(E5,\"_createClass\");function O5(i,e){if(typeof e!=\"function\"&&e!==null)throw new TypeError(\"Super expression must either be null or a function\");i.prototype=Object.create(e&&e.prototype,{constructor:{value:i,writable:!0,configurable:!0}}),Object.defineProperty(i,\"prototype\",{writable:!1}),e&&np(i,e)}n(O5,\"_inherits\");function np(i,e){return np=Object.setPrototypeOf?Object.setPrototypeOf.bind():n(function(r,s){return r.__proto__=s,r},\"_setPrototypeOf\"),np(i,e)}n(np,\"_setPrototypeOf\");function C5(i){var e=R5();return n(function(){var r=eh(i),s;if(e){var o=eh(this).constructor;s=Reflect.construct(r,arguments,o)}else s=r.apply(this,arguments);return T5(this,s)},\"_createSuperInternal\")}n(C5,\"_createSuper\");function T5(i,e){if(e&&(op(e)===\"object\"||typeof e==\"function\"))return e;if(e!==void 0)throw new TypeError(\"Derived constructors may only return object or undefined\");return A5(i)}n(T5,\"_possibleConstructorReturn\");function A5(i){if(i===void 0)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return i}n(A5,\"_assertThisInitialized\");function R5(){if(typeof Reflect>\"u\"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy==\"function\")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}n(R5,\"_isNativeReflectConstruct\");function eh(i){return eh=Object.setPrototypeOf?Object.getPrototypeOf.bind():n(function(t){return t.__proto__||Object.getPrototypeOf(t)},\"_getPrototypeOf\"),eh(i)}n(eh,\"_getPrototypeOf\");function D0(i,e){var t=Object.keys(i);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(i);e&&(r=r.filter(function(s){return Object.getOwnPropertyDescriptor(i,s).enumerable})),t.push.apply(t,r)}return t}n(D0,\"ownKeys\");function tn(i){for(var e=1;e<arguments.length;e++){var t=arguments[e]!=null?arguments[e]:{};e%2?D0(Object(t),!0).forEach(function(r){U5(i,r,t[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(i,Object.getOwnPropertyDescriptors(t)):D0(Object(t)).forEach(function(r){Object.defineProperty(i,r,Object.getOwnPropertyDescriptor(t,r))})}return i}n(tn,\"_objectSpread\");function U5(i,e,t){return e in i?Object.defineProperty(i,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):i[e]=t,i}n(U5,\"_defineProperty\");var th=tn(tn({},Ju.defaultOptions),{},{httpStack:new F0,fileReader:new U0,urlStorage:P0?new _0:new w0,fingerprint:sp}),N0=function(i){O5(t,i);var e=C5(t);function t(){var r=arguments.length>0&&arguments[0]!==void 0?arguments[0]:null,s=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};return F5(this,t),s=tn(tn({},th),s),e.call(this,r,s)}return n(t,\"Upload\"),E5(t,null,[{key:\"terminate\",value:n(function(s,o,a){return o=tn(tn({},th),o),Ju.terminate(s,o,a)},\"terminate\")}]),t}(Ju),M0=window,k5=M0.XMLHttpRequest,I0=M0.Blob,fI=k5&&I0&&typeof I0.prototype.slice==\"function\";function D5(){return typeof window<\"u\"&&(typeof window.PhoneGap<\"u\"||typeof window.Cordova<\"u\"||typeof window.cordova<\"u\")}n(D5,\"isCordova\");function I5(){return typeof navigator<\"u\"&&typeof navigator.product==\"string\"&&navigator.product.toLowerCase()===\"reactnative\"}n(I5,\"isReactNative\");function ap(i){return(e,t)=>{if(D5()||I5())return th.fingerprint(e,t);let r=[\"tus\",i.id,t.endpoint].join(\"-\");return Promise.resolve(r)}}n(ap,\"getFingerprint\");function ao(i,e){if(!Object.prototype.hasOwnProperty.call(i,e))throw new TypeError(\"attempted to use private field on non-instance\");return i}n(ao,\"_classPrivateFieldLooseBase\");var N5=0;function Za(i){return\"__private_\"+N5+++\"_\"+i}n(Za,\"_classPrivateFieldLooseKey\");var M5={version:\"3.4.0\"},B0={endpoint:\"\",uploadUrl:null,metadata:{},uploadSize:null,onProgress:null,onChunkComplete:null,onSuccess:null,onError:null,overridePatchMethod:!1,headers:{},addRequestId:!1,chunkSize:1/0,retryDelays:[100,1e3,3e3,5e3],parallelUploads:1,removeFingerprintOnSuccess:!1,uploadLengthDeferred:!1,uploadDataDuringCreation:!1},Ja=Za(\"retryDelayIterator\"),up=Za(\"uploadLocalFile\"),hp=Za(\"getCompanionClientArgs\"),lp=Za(\"uploadFiles\"),Qa=Za(\"handleUpload\"),or=class extends ve{constructor(e,t){var r,s;super(e,t),Object.defineProperty(this,lp,{value:z5}),Object.defineProperty(this,hp,{value:B5}),Object.defineProperty(this,up,{value:L5}),Object.defineProperty(this,Ja,{writable:!0,value:void 0}),Object.defineProperty(this,Qa,{writable:!0,value:async a=>{if(a.length===0){this.uppy.log(\"[Tus] No files to upload\");return}this.opts.limit===0&&this.uppy.log(\"[Tus] When uploading multiple files at once, consider setting the `limit` option (to `10` for example), to limit the number of concurrent uploads, which helps prevent memory and network issues: https://uppy.io/docs/tus/#limit-0\",\"warning\"),this.uppy.log(\"[Tus] Uploading...\");let l=this.uppy.getFilesByIds(a);await ao(this,lp)[lp](l)}}),this.type=\"uploader\",this.id=this.opts.id||\"Tus\",this.title=\"Tus\";let o={limit:20,retryDelays:B0.retryDelays,withCredentials:!1};if(this.opts={...o,...t},t?.allowedMetaFields===void 0&&\"metaFields\"in this.opts)throw new Error(\"The `metaFields` option has been renamed to `allowedMetaFields`.\");if(\"autoRetry\"in t)throw new Error(\"The `autoRetry` option was deprecated and has been removed.\");this.requests=(r=this.opts.rateLimitedQueue)!=null?r:new Mt(this.opts.limit),ao(this,Ja)[Ja]=(s=this.opts.retryDelays)==null?void 0:s.values(),this.uploaders=Object.create(null),this.uploaderEvents=Object.create(null),this.handleResetProgress=this.handleResetProgress.bind(this)}handleResetProgress(){let e={...this.uppy.getState().files};Object.keys(e).forEach(t=>{if(e[t].tus&&e[t].tus.uploadUrl){let r={...e[t].tus};delete r.uploadUrl,e[t]={...e[t],tus:r}}}),this.uppy.setState({files:e})}resetUploaderReferences(e,t){if(t===void 0&&(t={}),this.uploaders[e]){let r=this.uploaders[e];r.abort(),t.abort&&r.abort(!0),this.uploaders[e]=null}this.uploaderEvents[e]&&(this.uploaderEvents[e].remove(),this.uploaderEvents[e]=null)}onReceiveUploadUrl(e,t){let r=this.uppy.getFile(e.id);r&&(!r.tus||r.tus.uploadUrl!==t)&&(this.uppy.log(\"[Tus] Storing upload url\"),this.uppy.setFileState(r.id,{tus:{...r.tus,uploadUrl:t}}))}install(){this.uppy.setState({capabilities:{...this.uppy.getState().capabilities,resumableUploads:!0}}),this.uppy.addUploader(ao(this,Qa)[Qa]),this.uppy.on(\"reset-progress\",this.handleResetProgress)}uninstall(){this.uppy.setState({capabilities:{...this.uppy.getState().capabilities,resumableUploads:!1}}),this.uppy.removeUploader(ao(this,Qa)[Qa])}};n(or,\"Tus\");function L5(i){var e=this;return this.resetUploaderReferences(i.id),new Promise((t,r)=>{let s,o,a,l={...this.opts,...i.tus||{}};typeof l.headers==\"function\"&&(l.headers=l.headers(i));let h={...B0,...l};h.fingerprint=ap(i),h.onBeforeRequest=S=>{let E=S.getUnderlyingObject();E.withCredentials=!!l.withCredentials;let x;if(typeof l.onBeforeRequest==\"function\"&&(x=l.onBeforeRequest(S,i)),Ct(s,\"shouldBeRequeued\")){if(!s.shouldBeRequeued)return Promise.reject();let F,U=new Promise(j=>{F=j});return s=this.requests.run(()=>(i.isPaused&&s.abort(),F(),()=>{})),Promise.all([U,x])}return x},h.onError=S=>{var E;this.uppy.log(S);let x=S.originalRequest?S.originalRequest.getUnderlyingObject():null;so(x)&&(S=new Pi(S,x)),this.resetUploaderReferences(i.id),(E=s)==null||E.abort(),this.uppy.emit(\"upload-error\",i,S),typeof l.onError==\"function\"&&l.onError(S),r(S)},h.onProgress=(S,E)=>{this.onReceiveUploadUrl(i,a.url),typeof l.onProgress==\"function\"&&l.onProgress(S,E),this.uppy.emit(\"upload-progress\",i,{uploader:this,bytesUploaded:S,bytesTotal:E})},h.onSuccess=()=>{let S={uploadURL:a.url};this.resetUploaderReferences(i.id),s.done(),this.uppy.emit(\"upload-success\",i,S),a.url&&this.uppy.log(`Download ${a.file.name} from ${a.url}`),typeof l.onSuccess==\"function\"&&l.onSuccess(),t(a)};let p=n(S=>{var E;let x=S==null||(E=S.originalResponse)==null?void 0:E.getStatus();if(x===429){if(!this.requests.isPaused){var F;let U=(F=ao(this,Ja)[Ja])==null?void 0:F.next();if(U==null||U.done)return!1;this.requests.rateLimit(U.value)}}else{if(x>400&&x<500&&x!==409&&x!==423)return!1;typeof navigator<\"u\"&&navigator.onLine===!1&&(this.requests.isPaused||(this.requests.pause(),window.addEventListener(\"online\",()=>{this.requests.resume()},{once:!0})))}return s.abort(),s={shouldBeRequeued:!0,abort(){this.shouldBeRequeued=!1},done(){throw new Error(\"Cannot mark a queued request as done: this indicates a bug\")},fn(){throw new Error(\"Cannot run a queued request: this indicates a bug\")}},!0},\"defaultOnShouldRetry\");l.onShouldRetry!=null?h.onShouldRetry=function(){for(var S=arguments.length,E=new Array(S),x=0;x<S;x++)E[x]=arguments[x];return l.onShouldRetry(...E,p)}:h.onShouldRetry=p;let d=n((S,E,x)=>{Ct(S,E)&&!Ct(S,x)&&(S[x]=S[E])},\"copyProp\"),f={};(Array.isArray(l.allowedMetaFields)?l.allowedMetaFields:Object.keys(i.meta)).forEach(S=>{f[S]=i.meta[S]}),d(f,\"type\",\"filetype\"),d(f,\"name\",\"filename\"),h.metadata=f,a=new N0(i.data,h),this.uploaders[i.id]=a;let b=new mi(this.uppy);this.uploaderEvents[i.id]=b,o=n(()=>(i.isPaused||a.start(),()=>{}),\"qRequest\"),a.findPreviousUploads().then(S=>{let E=S[0];E&&(this.uppy.log(`[Tus] Resuming upload of ${i.id} started at ${E.creationTime}`),a.resumeFromPreviousUpload(E))}),s=this.requests.run(o),b.onFileRemove(i.id,S=>{s.abort(),this.resetUploaderReferences(i.id,{abort:!!a.url}),t(`upload ${S} was removed`)}),b.onPause(i.id,S=>{s.abort(),S?a.abort():s=this.requests.run(o)}),b.onPauseAll(i.id,()=>{s.abort(),a.abort()}),b.onCancelAll(i.id,function(S){let{reason:E}=S===void 0?{}:S;E===\"user\"&&(s.abort(),e.resetUploaderReferences(i.id,{abort:!!a.url})),t(`upload ${i.id} was canceled`)}),b.onResumeAll(i.id,()=>{s.abort(),i.error&&a.abort(),s=this.requests.run(o)})}).catch(t=>{throw this.uppy.emit(\"upload-error\",i,t),t})}n(L5,\"_uploadLocalFile2\");function B5(i){let e={...this.opts};return i.tus&&Object.assign(e,i.tus),{...i.remote.body,endpoint:e.endpoint,uploadUrl:e.uploadUrl,protocol:\"tus\",size:i.data.size,headers:e.headers,metadata:i.meta}}n(B5,\"_getCompanionClientArgs2\");async function z5(i){let e=hs(i),t=ds(e);this.uppy.emit(\"upload-start\",t),await Promise.allSettled(e.map((r,s)=>{let o=s+1,a=i.length;if(r.isRemote){let l=n(()=>this.requests,\"getQueue\"),h=new AbortController,p=n(f=>{f.id===r.id&&h.abort()},\"removedHandler\");this.uppy.on(\"file-removed\",p);let d=r.remote.requestClient.uploadRemoteFile(r,ao(this,hp)[hp](r),{signal:h.signal,getQueue:l});return this.requests.wrapSyncFunction(()=>{this.uppy.off(\"file-removed\",p)},{priority:-1})(),d}return ao(this,up)[up](r,o,a)}))}n(z5,\"_uploadFiles2\");or.VERSION=M5.version;var j0=de(cp(),1);function ce(i,e){if(!Object.prototype.hasOwnProperty.call(i,e))throw new TypeError(\"attempted to use private field on non-instance\");return i}n(ce,\"_classPrivateFieldLooseBase\");var H5=0;function nr(i){return\"__private_\"+H5+++\"_\"+i}n(nr,\"_classPrivateFieldLooseKey\");var $5=\"ASSEMBLY_UPLOADING\",gp=\"ASSEMBLY_EXECUTING\",yp=\"ASSEMBLY_COMPLETED\",z0=[$5,gp,yp];function ih(i,e){return z0.indexOf(i)>=z0.indexOf(e)}n(ih,\"isStatus\");var uo=nr(\"rateLimitedQueue\"),el=nr(\"fetchWithNetworkError\"),lo=nr(\"previousFetchStatusStillPending\"),qe=nr(\"sse\"),vp=nr(\"onFinished\"),pp=nr(\"connectServerSentEvents\"),ki=nr(\"onError\"),fp=nr(\"beginPolling\"),zr=nr(\"fetchStatus\"),mp=nr(\"diffStatus\"),rh=class extends j0.default{constructor(e,t){super(),Object.defineProperty(this,mp,{value:X5}),Object.defineProperty(this,zr,{value:K5}),Object.defineProperty(this,fp,{value:G5}),Object.defineProperty(this,ki,{value:W5}),Object.defineProperty(this,pp,{value:V5}),Object.defineProperty(this,vp,{value:q5}),Object.defineProperty(this,uo,{writable:!0,value:void 0}),Object.defineProperty(this,el,{writable:!0,value:void 0}),Object.defineProperty(this,lo,{writable:!0,value:!1}),Object.defineProperty(this,qe,{writable:!0,value:void 0}),this.status=e,this.pollInterval=null,this.closed=!1,ce(this,uo)[uo]=t,ce(this,el)[el]=t.wrapPromiseFunction(_s)}connect(){ce(this,pp)[pp](),ce(this,fp)[fp]()}update(){return ce(this,zr)[zr]({diff:!0})}updateStatus(e){ce(this,mp)[mp](this.status,e),this.status=e}close(){this.closed=!0,ce(this,qe)[qe]&&(ce(this,qe)[qe].close(),ce(this,qe)[qe]=null),clearInterval(this.pollInterval),this.pollInterval=null}};n(rh,\"TransloaditAssembly\");function q5(){this.emit(\"finished\"),this.close()}n(q5,\"_onFinished2\");function V5(){ce(this,qe)[qe]=new EventSource(`${this.status.websocket_url}?assembly=${this.status.assembly_id}`),ce(this,qe)[qe].addEventListener(\"open\",()=>{this.socket&&(this.socket.disconnect(),this.socket=null),clearInterval(this.pollInterval),this.pollInterval=null}),ce(this,qe)[qe].addEventListener(\"message\",i=>{i.data===\"assembly_finished\"&&ce(this,vp)[vp](),i.data===\"assembly_uploading_finished\"&&this.emit(\"executing\"),i.data===\"assembly_upload_meta_data_extracted\"&&(this.emit(\"metadata\"),ce(this,zr)[zr]({diff:!1}))}),ce(this,qe)[qe].addEventListener(\"assembly_upload_finished\",i=>{let e=JSON.parse(i.data);this.emit(\"upload\",e),this.status.uploads.push(e)}),ce(this,qe)[qe].addEventListener(\"assembly_result_finished\",i=>{var e,t;let[r,s]=JSON.parse(i.data);this.emit(\"result\",r,s),((t=(e=this.status.results)[r])!=null?t:e[r]=[]).push(s)}),ce(this,qe)[qe].addEventListener(\"assembly_execution_progress\",i=>{let e=JSON.parse(i.data);this.emit(\"execution-progress\",e)}),ce(this,qe)[qe].addEventListener(\"assembly_error\",i=>{try{ce(this,ki)[ki](JSON.parse(i.data))}catch{ce(this,ki)[ki]({msg:i.data})}ce(this,zr)[zr]({diff:!1})})}n(V5,\"_connectServerSentEvents2\");function W5(i){this.emit(\"error\",Object.assign(new Error(i.msg),i)),this.close()}n(W5,\"_onError2\");function G5(){this.pollInterval=setInterval(()=>{ce(this,zr)[zr]()},2e3)}n(G5,\"_beginPolling2\");async function K5(i){let{diff:e=!0}=i===void 0?{}:i;if(!(this.closed||ce(this,uo)[uo].isPaused||ce(this,lo)[lo]))try{ce(this,lo)[lo]=!0;let t=await ce(this,el)[el](this.status.assembly_ssl_url);if(ce(this,lo)[lo]=!1,this.closed)return;if(t.status===429){ce(this,uo)[uo].rateLimit(2e3);return}if(!t.ok){ce(this,ki)[ki](new Pi(t.statusText));return}let r=await t.json();if(this.closed)return;this.emit(\"status\",r),e?this.updateStatus(r):this.status=r}catch(t){ce(this,ki)[ki](t)}}n(K5,\"_fetchStatus2\");function X5(i,e){let t=i.ok,r=e.ok;if(e.error&&!i.error)return ce(this,ki)[ki](e);let s=ih(r,gp)&&!ih(t,gp);s&&this.emit(\"executing\"),Object.keys(e.uploads).filter(o=>!Ct(i.uploads,o)).forEach(o=>{this.emit(\"upload\",e.uploads[o])}),s&&this.emit(\"metadata\"),Object.keys(e.results).forEach(o=>{let a=e.results[o],l=i.results[o];a.filter(h=>!l||!l.some(p=>p.id===h.id)).forEach(h=>{this.emit(\"result\",o,h)})}),ih(r,yp)&&!ih(t,yp)&&this.emit(\"finished\")}n(X5,\"_diffStatus2\");var bp=rh;function Ne(i,e){if(!Object.prototype.hasOwnProperty.call(i,e))throw new TypeError(\"attempted to use private field on non-instance\");return i}n(Ne,\"_classPrivateFieldLooseBase\");var Y5=0;function sh(i){return\"__private_\"+Y5+++\"_\"+i}n(sh,\"_classPrivateFieldLooseKey\");var H0=\"/assemblies\",Bt=sh(\"headers\"),tl=sh(\"fetchWithNetworkError\"),bt=sh(\"fetchJSON\"),ai=sh(\"reportError\"),rn=class{constructor(e){e===void 0&&(e={}),Object.defineProperty(this,bt,{value:Q5}),Object.defineProperty(this,Bt,{writable:!0,value:{}}),Object.defineProperty(this,tl,{writable:!0,value:void 0}),Object.defineProperty(this,ai,{writable:!0,value:(t,r)=>{if(this.opts.errorReporting===!1)throw t;let s={type:r.type};throw r.assembly&&(s.assembly=r.assembly.assembly_id,s.instance=r.assembly.instance),r.url&&(s.endpoint=r.url),this.submitError(t,s).catch(()=>{}),t}}),this.opts=e,this.opts.client!=null&&(Ne(this,Bt)[Bt][\"Transloadit-Client\"]=this.opts.client),Ne(this,tl)[tl]=this.opts.rateLimitedQueue.wrapPromiseFunction(_s)}createAssembly(e){let{params:t,fields:r,signature:s,expectedFiles:o}=e,a=new FormData;a.append(\"params\",typeof t==\"string\"?t:JSON.stringify(t)),s&&a.append(\"signature\",s),Object.keys(r).forEach(h=>{a.append(h,r[h])}),a.append(\"num_expected_upload_files\",o);let l=new URL(H0,`${this.opts.service}`).href;return Ne(this,bt)[bt](l,{method:\"POST\",headers:Ne(this,Bt)[Bt],body:a}).catch(h=>Ne(this,ai)[ai](h,{url:l,type:\"API_ERROR\"}))}reserveFile(e,t){let r=encodeURIComponent(t.size),s=`${e.assembly_ssl_url}/reserve_file?size=${r}`;return Ne(this,bt)[bt](s,{method:\"POST\",headers:Ne(this,Bt)[Bt]}).catch(o=>Ne(this,ai)[ai](o,{assembly:e,file:t,url:s,type:\"API_ERROR\"}))}addFile(e,t){if(!t.uploadURL)return Promise.reject(new Error(\"File does not have an `uploadURL`.\"));let r=encodeURIComponent(t.size),s=encodeURIComponent(t.uploadURL),o=encodeURIComponent(t.name),l=`size=${r}&filename=${o}&fieldname=file&s3Url=${s}`,h=`${e.assembly_ssl_url}/add_file?${l}`;return Ne(this,bt)[bt](h,{method:\"POST\",headers:Ne(this,Bt)[Bt]}).catch(p=>Ne(this,ai)[ai](p,{assembly:e,file:t,url:h,type:\"API_ERROR\"}))}updateNumberOfFilesInAssembly(e,t){let r=new URL(e.assembly_ssl_url);r.pathname=\"/update_assemblies\";let s=JSON.stringify({assembly_updates:[{assembly_id:e.assembly_id,num_expected_upload_files:t}]});return Ne(this,bt)[bt](r,{method:\"POST\",headers:Ne(this,Bt)[Bt],body:s}).catch(o=>Ne(this,ai)[ai](o,{url:r,type:\"API_ERROR\"}))}cancelAssembly(e){let t=e.assembly_ssl_url;return Ne(this,bt)[bt](t,{method:\"DELETE\",headers:Ne(this,Bt)[Bt]}).catch(r=>Ne(this,ai)[ai](r,{url:t,type:\"API_ERROR\"}))}getAssemblyStatus(e){return Ne(this,bt)[bt](e,{headers:Ne(this,Bt)[Bt]}).catch(t=>Ne(this,ai)[ai](t,{url:e,type:\"STATUS_ERROR\"}))}submitError(e,t){let{endpoint:r,instance:s,assembly:o}=t===void 0?{}:t,a=e.details?`${e.message} (${e.details})`:e.message;return Ne(this,bt)[bt](\"https://transloaditstatus.com/client_error\",{method:\"POST\",body:JSON.stringify({endpoint:r,instance:s,assembly_id:o,agent:typeof navigator<\"u\"?navigator.userAgent:\"\",client:this.opts.client,error:a})})}};n(rn,\"Client\");function Q5(){for(var i=arguments.length,e=new Array(i),t=0;t<i;t++)e[t]=arguments[t];return Ne(this,tl)[tl](...e).then(r=>{if(r.status===429)return this.opts.rateLimitedQueue.rateLimit(2e3),Ne(this,bt)[bt](...e);if(!r.ok){let s=new Error(r.statusText);return s.statusCode=r.status,`${e[0]}`.endsWith(H0)?r.json().then(o=>{if(!o.error)throw s;let a=new Error(o.error);throw a.details=o.message,a.assembly=o,o.assembly_id&&(a.details+=` Assembly ID: ${o.assembly_id}`),a},o=>{throw o.cause=s,o}):Promise.reject(s)}return r.json()})}n(Q5,\"_fetchJSON2\");function wp(i){if(i==null)throw new Error(\"Transloadit: The `params` option is required.\");if(typeof i==\"string\")try{i=JSON.parse(i)}catch(e){throw new vr(\"Transloadit: The `params` option is a malformed JSON string.\",{cause:e})}if(!i.auth||!i.auth.key)throw new Error(\"Transloadit: The `params.auth.key` option is required. You can find your Transloadit API key at https://transloadit.com/c/template-credentials\")}n(wp,\"validateParams\");function J5(i){let e=Object.create(null);for(let{fileIDs:t,options:r}of i.filter(Boolean)){let s=JSON.stringify(r);s in e?e[s].fileIDArrays.push(t):e[s]={options:r,fileIDArrays:[t]}}return Object.values(e).map(t=>{let{options:r,fileIDArrays:s}=t;return{options:r,fileIDs:s.flat(1)}})}n(J5,\"dedupe\");async function $0(i,e){let t=typeof e.assemblyOptions==\"function\"?await e.assemblyOptions(i,e):e.assemblyOptions;wp(t.params);let{fields:r}=t;return Array.isArray(r)?t.fields=i==null?{}:Object.fromEntries(r.map(s=>[s,i.meta[s]])):r==null&&(t.fields={}),t}n($0,\"getAssemblyOptions\");var oh=class{constructor(e,t){this.files=e,this.opts=t}async build(){let e=this.opts;if(this.files.length>0)return Promise.all(this.files.map(async t=>{if(t==null)return;let r=await $0(t,e);if(t!=null)return{fileIDs:[t.id],options:r}})).then(J5);if(e.alwaysRunAssembly){let t=await $0(null,e);return[{fileIDs:[],options:t}]}return[]}};n(oh,\"AssemblyOptions\");var q0=oh;var V0=de(cp(),1);function se(i,e){if(!Object.prototype.hasOwnProperty.call(i,e))throw new TypeError(\"attempted to use private field on non-instance\");return i}n(se,\"_classPrivateFieldLooseBase\");var Z5=0;function li(i){return\"__private_\"+Z5+++\"_\"+i}n(li,\"_classPrivateFieldLooseKey\");var il=li(\"assemblyIDs\"),Sp=li(\"reject\"),co=li(\"remaining\"),rl=li(\"resolve\"),Oe=li(\"uppy\"),jr=li(\"watching\"),sl=li(\"onAssemblyComplete\"),ol=li(\"onAssemblyCancel\"),po=li(\"onAssemblyError\"),nl=li(\"onImportError\"),ho=li(\"checkAllComplete\"),_p=li(\"removeListeners\"),Pp=li(\"addListeners\"),nh=class extends V0.default{constructor(e,t){super(),Object.defineProperty(this,Pp,{value:rx}),Object.defineProperty(this,_p,{value:ix}),Object.defineProperty(this,ho,{value:tx}),Object.defineProperty(this,jr,{value:ex}),Object.defineProperty(this,il,{writable:!0,value:void 0}),Object.defineProperty(this,Sp,{writable:!0,value:void 0}),Object.defineProperty(this,co,{writable:!0,value:void 0}),Object.defineProperty(this,rl,{writable:!0,value:void 0}),Object.defineProperty(this,Oe,{writable:!0,value:void 0}),Object.defineProperty(this,sl,{writable:!0,value:r=>{se(this,jr)[jr](r.assembly_id)&&(se(this,Oe)[Oe].log(`[Transloadit] AssemblyWatcher: Got Assembly finish ${r.assembly_id}`),this.emit(\"assembly-complete\",r.assembly_id),se(this,ho)[ho]())}}),Object.defineProperty(this,ol,{writable:!0,value:r=>{se(this,jr)[jr](r.assembly_id)&&se(this,ho)[ho]()}}),Object.defineProperty(this,po,{writable:!0,value:(r,s)=>{se(this,jr)[jr](r.assembly_id)&&(se(this,Oe)[Oe].log(`[Transloadit] AssemblyWatcher: Got Assembly error ${r.assembly_id}`),se(this,Oe)[Oe].log(s),this.emit(\"assembly-error\",r.assembly_id,s),se(this,ho)[ho]())}}),Object.defineProperty(this,nl,{writable:!0,value:(r,s,o)=>{se(this,jr)[jr](r.assembly_id)&&se(this,po)[po](r,o)}}),se(this,Oe)[Oe]=e,se(this,il)[il]=t,se(this,co)[co]=t.length,this.promise=new Promise((r,s)=>{se(this,rl)[rl]=r,se(this,Sp)[Sp]=s}),se(this,Pp)[Pp]()}};n(nh,\"TransloaditAssemblyWatcher\");function ex(i){return se(this,il)[il].indexOf(i)!==-1}n(ex,\"_watching2\");function tx(){se(this,co)[co]-=1,se(this,co)[co]===0&&(se(this,_p)[_p](),se(this,rl)[rl]())}n(tx,\"_checkAllComplete2\");function ix(){se(this,Oe)[Oe].off(\"transloadit:complete\",se(this,sl)[sl]),se(this,Oe)[Oe].off(\"transloadit:assembly-cancel\",se(this,ol)[ol]),se(this,Oe)[Oe].off(\"transloadit:assembly-error\",se(this,po)[po]),se(this,Oe)[Oe].off(\"transloadit:import-error\",se(this,nl)[nl])}n(ix,\"_removeListeners2\");function rx(){se(this,Oe)[Oe].on(\"transloadit:complete\",se(this,sl)[sl]),se(this,Oe)[Oe].on(\"transloadit:assembly-cancel\",se(this,ol)[ol]),se(this,Oe)[Oe].on(\"transloadit:assembly-error\",se(this,po)[po]),se(this,Oe)[Oe].on(\"transloadit:import-error\",se(this,nl)[nl])}n(rx,\"_addListeners2\");var W0=nh;var G0={strings:{creatingAssembly:\"Preparing upload...\",creatingAssemblyFailed:\"Transloadit: Could not create Assembly\",encoding:\"Encoding...\"}};function ae(i,e){if(!Object.prototype.hasOwnProperty.call(i,e))throw new TypeError(\"attempted to use private field on non-instance\");return i}n(ae,\"_classPrivateFieldLooseBase\");var sx=0;function Le(i){return\"__private_\"+sx+++\"_\"+i}n(Le,\"_classPrivateFieldLooseKey\");var ox={version:\"3.4.0\"},K0=n(i=>e=>{let t=new vr(\"Failed to send error to the client\",{cause:e});console.error(t,i)},\"sendErrorToConsole\"),Ip=\"https://api2.transloadit.com/companion\",Np=/\\.transloadit\\.com$/,nx=/https?:\\/\\/api2(?:-\\w+)?\\.transloadit\\.com\\/companion/,Di=Le(\"rateLimitedQueue\"),xp=Le(\"getClientVersion\"),Up=Le(\"attachAssemblyMetadata\"),Fp=Le(\"createAssembly\"),al=Le(\"createAssemblyWatcher\"),Ep=Le(\"shouldWaitAfterUpload\"),Op=Le(\"reserveFiles\"),ll=Le(\"onFileUploadURLAvailable\"),fl=Le(\"findFile\"),kp=Le(\"onFileUploadComplete\"),Dp=Le(\"onResult\"),pl=Le(\"onAssemblyFinished\"),ml=Le(\"cancelAssembly\"),Cp=Le(\"onCancelAll\"),Tp=Le(\"getPersistentData\"),Ap=Le(\"onRestored\"),ul=Le(\"connectAssembly\"),hl=Le(\"prepareUpload\"),fo=Le(\"afterUpload\"),dl=Le(\"closeAssemblyIfExists\"),cl=Le(\"onError\"),Rp=Le(\"onTusError\"),yi=class extends ve{constructor(e,t){var r,s,o,a;super(e,t),r=this,Object.defineProperty(this,ul,{value:vx}),Object.defineProperty(this,ml,{value:yx}),Object.defineProperty(this,pl,{value:gx}),Object.defineProperty(this,Dp,{value:mx}),Object.defineProperty(this,kp,{value:fx}),Object.defineProperty(this,fl,{value:px}),Object.defineProperty(this,Op,{value:cx}),Object.defineProperty(this,Ep,{value:dx}),Object.defineProperty(this,al,{value:hx}),Object.defineProperty(this,Fp,{value:ux}),Object.defineProperty(this,Up,{value:lx}),Object.defineProperty(this,xp,{value:ax}),Object.defineProperty(this,Di,{writable:!0,value:void 0}),Object.defineProperty(this,ll,{writable:!0,value:h=>{var p;let d=this.uppy.getFile(h.id);if(!(d!=null&&(p=d.transloadit)!=null&&p.assembly))return;let{assemblies:f}=this.getPluginState(),y=f[d.transloadit.assembly];this.client.addFile(y,d).catch(b=>{this.uppy.log(b),this.uppy.emit(\"transloadit:import-error\",y,d.id,b)})}}),Object.defineProperty(this,Cp,{writable:!0,value:async function(h){let{reason:p}=h===void 0?{}:h;try{if(p!==\"user\")return;let{uploadsAssemblies:d}=r.getPluginState(),y=Object.values(d).flat(1).map(b=>r.getAssembly(b));await Promise.all(y.map(b=>ae(r,ml)[ml](b)))}catch(d){r.uppy.log(d)}}}),Object.defineProperty(this,Tp,{writable:!0,value:h=>{let{assemblies:p,uploadsAssemblies:d}=this.getPluginState();h({[this.id]:{assemblies:p,uploadsAssemblies:d}})}}),Object.defineProperty(this,Ap,{writable:!0,value:h=>{let p=h&&h[this.id]?h[this.id]:{},d=p.assemblies||{},f=p.uploadsAssemblies||{};if(Object.keys(f).length===0)return;let y=n(E=>{let x={},F=[];for(let[U,j]of Object.entries(E)){j.uploads.forEach(J=>{let B=ae(this,fl)[fl](J);x[J.id]={id:B.id,assembly:U,uploadedFile:J}});let G=this.getPluginState();Object.keys(j.results).forEach(J=>{for(let B of j.results[J]){let z=G.files[B.original_id];B.localId=z?z.id:null,F.push({id:B.id,result:B,stepName:J,assembly:U})}})}this.setPluginState({assemblies:E,files:x,results:F,uploadsAssemblies:f})},\"restoreState\"),b=n(()=>{let{assemblies:E,uploadsAssemblies:x}=this.getPluginState();Object.keys(x).forEach(U=>{let j=x[U];ae(this,al)[al](j,U)}),Object.keys(E).forEach(U=>{let j=new bp(E[U],ae(this,Di)[Di]);ae(this,ul)[ul](j)})},\"restoreAssemblies\"),S=n(()=>{let{assemblies:E}=this.getPluginState();return Promise.all(Object.keys(E).map(x=>this.activeAssemblies[x].update()))},\"updateAssemblies\");this.restored=Promise.resolve().then(()=>(y(d),b(),S())),this.restored.then(()=>{this.restored=null})}}),Object.defineProperty(this,hl,{writable:!0,value:(h,p)=>{let f=h.map(E=>this.uppy.getFile(E)).filter(E=>E.error?!1:(this.uppy.emit(\"preprocess-progress\",E,{mode:\"indeterminate\",message:this.i18n(\"creatingAssembly\")}),!0)),y=n(async E=>{let{fileIDs:x,options:F}=E;try{let U=await ae(this,Fp)[Fp](x,p,F);return this.opts.importFromUploadURLs&&await ae(this,Op)[Op](U,x),x.forEach(j=>{let G=this.uppy.getFile(j);this.uppy.emit(\"preprocess-complete\",G)}),U}catch(U){throw x.forEach(j=>{let G=this.uppy.getFile(j);this.uppy.emit(\"preprocess-complete\",G),this.uppy.emit(\"upload-error\",G,U)}),U}},\"createAssembly\"),{uploadsAssemblies:b}=this.getPluginState();return this.setPluginState({uploadsAssemblies:{...b,[p]:[]}}),new q0(f,this.opts).build().then(E=>Promise.all(E.map(y))).then(E=>{let x=E.filter(Boolean),F=x.map(U=>U.status.assembly_id);return ae(this,al)[al](F,p),Promise.all(x.map(U=>ae(this,ul)[ul](U)))}).catch(E=>{throw f.forEach(x=>{this.uppy.emit(\"preprocess-complete\",x),this.uppy.emit(\"upload-error\",x,E)}),E})}}),Object.defineProperty(this,fo,{writable:!0,value:(h,p)=>{let d=h.map(F=>this.uppy.getFile(F)),f=d.filter(F=>!F.error).map(F=>F.id),y=this.getPluginState();if(this.restored)return this.restored.then(()=>ae(this,fo)[fo](f,p));let b=y.uploadsAssemblies[p],S=n(()=>{b.forEach(F=>{this.activeAssemblies[F].close(),delete this.activeAssemblies[F]})},\"closeSocketConnections\");if(!ae(this,Ep)[Ep]()){S();let F=b.map(U=>this.getAssembly(U));return this.uppy.addResultData(p,{transloadit:F}),Promise.resolve()}return b.length===0?(this.uppy.addResultData(p,{transloadit:[]}),Promise.resolve()):(d.filter(F=>!Ct(this.completedFiles,F.id)).forEach(F=>{this.uppy.emit(\"postprocess-progress\",F,{mode:\"indeterminate\",message:this.i18n(\"encoding\")})}),this.assemblyWatchers[p].promise.then(()=>{S();let F=b.map(j=>this.getAssembly(j)),U={...this.getPluginState().uploadsAssemblies};delete U[p],this.setPluginState({uploadsAssemblies:U}),this.uppy.addResultData(p,{transloadit:F})}))}}),Object.defineProperty(this,dl,{writable:!0,value:h=>{var p;(p=this.activeAssemblies[h])==null||p.close()}}),Object.defineProperty(this,cl,{writable:!0,value:function(h,p){h===void 0&&(h=null);let f=r.getPluginState().uploadsAssemblies[p];f?.forEach(ae(r,dl)[dl]),r.client.submitError(h).catch(K0(h))}}),Object.defineProperty(this,Rp,{writable:!0,value:(h,p)=>{var d,f;if(ae(this,dl)[dl](h==null||(d=h.transloadit)==null?void 0:d.assembly),p!=null&&(f=p.message)!=null&&f.startsWith(\"tus: \")){var y;let b=(y=p.originalRequest)==null||(y=y.getUnderlyingObject())==null?void 0:y.responseURL;this.client.submitError(p,{endpoint:b,type:\"TUS_ERROR\"}).catch(K0(p))}}}),this.type=\"uploader\",this.id=this.opts.id||\"Transloadit\",this.title=\"Transloadit\",this.defaultLocale=G0;let l={service:\"https://api2.transloadit.com\",errorReporting:!0,waitForEncoding:!1,waitForMetadata:!1,alwaysRunAssembly:!1,importFromUploadURLs:!1,signature:null,params:null,fields:null,getAssemblyOptions:null,limit:20,retryDelays:[7e3,1e4,15e3,2e4]};this.opts={...l,...t},(o=(s=this.opts).assemblyOptions)!=null||(s.assemblyOptions=(a=this.opts.getAssemblyOptions)!=null?a:{params:this.opts.params,signature:this.opts.signature,fields:this.opts.fields}),t?.params!=null&&t.getAssemblyOptions==null&&t.assemblyOptions==null&&wp(this.opts.assemblyOptions.params),ae(this,Di)[Di]=new Mt(this.opts.limit),this.i18nInit(),this.client=new rn({service:this.opts.service,client:ae(this,xp)[xp](),errorReporting:this.opts.errorReporting,rateLimitedQueue:ae(this,Di)[Di]}),this.activeAssemblies={},this.assemblyWatchers={},this.completedFiles=Object.create(null)}install(){this.uppy.addPreProcessor(ae(this,hl)[hl]),this.uppy.addPostProcessor(ae(this,fo)[fo]),this.uppy.on(\"error\",ae(this,cl)[cl]),this.uppy.on(\"cancel-all\",ae(this,Cp)[Cp]),this.uppy.on(\"upload-error\",ae(this,Rp)[Rp]),this.opts.importFromUploadURLs?this.uppy.on(\"upload-success\",ae(this,ll)[ll]):this.uppy.use(or,{storeFingerprintForResuming:!1,allowedMetaFields:[\"assembly_url\",\"filename\",\"fieldname\"],limit:this.opts.limit,rateLimitedQueue:ae(this,Di)[Di],retryDelays:this.opts.retryDelays}),this.uppy.on(\"restore:get-data\",ae(this,Tp)[Tp]),this.uppy.on(\"restored\",ae(this,Ap)[Ap]),this.setPluginState({assemblies:{},uploadsAssemblies:{},files:{},results:[]});let{capabilities:e}=this.uppy.getState();this.uppy.setState({capabilities:{...e,individualCancellation:!1}})}uninstall(){this.uppy.removePreProcessor(ae(this,hl)[hl]),this.uppy.removePostProcessor(ae(this,fo)[fo]),this.uppy.off(\"error\",ae(this,cl)[cl]),this.opts.importFromUploadURLs&&this.uppy.off(\"upload-success\",ae(this,ll)[ll]);let{capabilities:e}=this.uppy.getState();this.uppy.setState({capabilities:{...e,individualCancellation:!0}})}getAssembly(e){let{assemblies:t}=this.getPluginState();return t[e]}getAssemblyFiles(e){return this.uppy.getFiles().filter(t=>{var r;return(t==null||(r=t.transloadit)==null?void 0:r.assembly)===e})}};n(yi,\"Transloadit\");function ax(){let i=[`uppy-core:${this.uppy.constructor.VERSION}`,`uppy-transloadit:${this.constructor.VERSION}`,`uppy-tus:${or.VERSION}`],e=n((t,r)=>{let s=this.uppy.getPlugin(t);s&&i.push(`${r}:${s.constructor.VERSION}`)},\"addPluginVersion\");return this.opts.importFromUploadURLs&&(e(\"XHRUpload\",\"uppy-xhr-upload\"),e(\"AwsS3\",\"uppy-aws-s3\"),e(\"AwsS3Multipart\",\"uppy-aws-s3-multipart\")),e(\"Dropbox\",\"uppy-dropbox\"),e(\"Box\",\"uppy-box\"),e(\"Facebook\",\"uppy-facebook\"),e(\"GoogleDrive\",\"uppy-google-drive\"),e(\"Instagram\",\"uppy-instagram\"),e(\"OneDrive\",\"uppy-onedrive\"),e(\"Zoom\",\"uppy-zoom\"),e(\"Url\",\"uppy-url\"),i.join(\",\")}n(ax,\"_getClientVersion2\");function lx(i,e){let t={...i.meta,assembly_url:e.assembly_url,filename:i.name,fieldname:\"file\"},r={...i.tus,endpoint:e.tus_url,addRequestId:!0},{remote:s}=i;if(i.remote&&nx.test(i.remote.companionUrl)){let a=e.companion_url.replace(/\\/$/,\"\"),l=i.remote.url.replace(i.remote.companionUrl,\"\").replace(/^\\//,\"\");s={...i.remote,companionUrl:a,url:`${a}/${l}`}}let o={...i,transloadit:{assembly:e.assembly_id}};return this.opts.importFromUploadURLs||Object.assign(o,{meta:t,tus:r,remote:s}),o}n(lx,\"_attachAssemblyMetadata2\");function ux(i,e,t){return this.uppy.log(\"[Transloadit] Create Assembly\"),this.client.createAssembly({...t,expectedFiles:i.length}).then(async r=>{let s=this.uppy.getFiles().filter(y=>{let{id:b}=y;return i.includes(b)});if(s.length!==i.length){if(s.length===0)return await this.client.cancelAssembly(r),null;await this.client.updateNumberOfFilesInAssembly(r,s.length)}let o=new bp(r,ae(this,Di)[Di]),{status:a}=o,l=a.assembly_id,{assemblies:h,uploadsAssemblies:p}=this.getPluginState();this.setPluginState({assemblies:{...h,[l]:a},uploadsAssemblies:{...p,[e]:[...p[e],l]}});let d={};s.forEach(y=>{d[y.id]=ae(this,Up)[Up](y,a)}),this.uppy.setState({files:{...this.uppy.getState().files,...d}});let f=n((y,b)=>{var S;if(((S=o.status)==null?void 0:S.ok)===\"ASSEMBLY_COMPLETED\"){this.uppy.off(\"file-removed\",f);return}if(b===\"cancel-all\")o.close(),this.uppy.off(\"file-removed\",f);else if(y.id in d){delete d[y.id];let E=Object.keys(d).length;E===0?(o.close(),ae(this,ml)[ml](r).catch(()=>{}),this.uppy.off(\"file-removed\",f)):this.client.updateNumberOfFilesInAssembly(r,E).catch(()=>{})}},\"fileRemovedHandler\");return this.uppy.on(\"file-removed\",f),this.uppy.emit(\"transloadit:assembly-created\",a,i),this.uppy.log(`[Transloadit] Created Assembly ${l}`),o}).catch(r=>{let s=new vr(`${this.i18n(\"creatingAssemblyFailed\")}: ${r.message}`,{cause:r});throw\"details\"in r&&(s.details=r.details),\"assembly\"in r&&(s.assembly=r.assembly),s})}n(ux,\"_createAssembly2\");function hx(i,e){let t=new W0(this.uppy,i);t.on(\"assembly-complete\",r=>{this.getAssemblyFiles(r).forEach(o=>{this.completedFiles[o.id]=!0,this.uppy.emit(\"postprocess-complete\",o)})}),t.on(\"assembly-error\",(r,s)=>{let o=this.getAssemblyFiles(r);o.forEach(l=>{this.uppy.emit(\"upload-error\",l,s),this.uppy.emit(\"postprocess-complete\",l)});let a={...this.uppy.getState().files};o.forEach(l=>delete a[l.id].tus),this.uppy.setState({files:a}),this.uppy.emit(\"error\",s)}),this.assemblyWatchers[e]=t}n(hx,\"_createAssemblyWatcher2\");function dx(){return this.opts.waitForEncoding||this.opts.waitForMetadata}n(dx,\"_shouldWaitAfterUpload2\");function cx(i,e){return Promise.all(e.map(t=>{let r=this.uppy.getFile(t);return this.client.reserveFile(i.status,r)}))}n(cx,\"_reserveFiles2\");function px(i){let e=this.uppy.getFiles();for(let t=0;t<e.length;t++){let r=e[t];if(r.uploadURL===i.tus_upload_url||r.tus&&r.tus.uploadUrl===i.tus_upload_url||!i.is_tus_file&&r.name===i.name&&r.size===i.size)return r}}n(px,\"_findFile2\");function fx(i,e){let t=this.getPluginState(),r=ae(this,fl)[fl](e);if(!r){this.uppy.log(\"[Transloadit] Couldn\\u2019t find the file, it was likely removed in the process\");return}this.setPluginState({files:{...t.files,[e.id]:{assembly:i,id:r.id,uploadedFile:e}}}),this.uppy.emit(\"transloadit:upload\",e,this.getAssembly(i))}n(fx,\"_onFileUploadComplete2\");function mx(i,e,t){let r=this.getPluginState(),s=r.files[t.original_id];t.localId=s?s.id:null;let o={result:t,stepName:e,id:t.id,assembly:i};this.setPluginState({results:[...r.results,o]}),this.uppy.emit(\"transloadit:result\",e,t,this.getAssembly(i))}n(mx,\"_onResult2\");function gx(i){let e=i.assembly_ssl_url;this.client.getAssemblyStatus(e).then(t=>{let r=t.assembly_id,s=this.getPluginState();this.setPluginState({assemblies:{...s.assemblies,[r]:t}}),this.uppy.emit(\"transloadit:complete\",t)})}n(gx,\"_onAssemblyFinished2\");async function yx(i){await this.client.cancelAssembly(i),this.uppy.emit(\"transloadit:assembly-cancelled\",i)}n(yx,\"_cancelAssembly2\");function vx(i){let{status:e}=i,t=e.assembly_id;return this.activeAssemblies[t]=i,i.on(\"status\",r=>{let{assemblies:s}=this.getPluginState();this.setPluginState({assemblies:{...s,[t]:r}})}),i.on(\"upload\",r=>{ae(this,kp)[kp](t,r)}),i.on(\"error\",r=>{r.assembly=i.status,this.uppy.emit(\"transloadit:assembly-error\",i.status,r)}),i.on(\"executing\",()=>{this.uppy.emit(\"transloadit:assembly-executing\",i.status)}),i.on(\"execution-progress\",r=>{if(this.uppy.emit(\"transloadit:execution-progress\",r),r.progress_combined!=null)for(let s of this.uppy.getFiles())this.uppy.emit(\"postprocess-progress\",s,{mode:\"determinate\",value:r.progress_combined/100,message:this.i18n(\"encoding\")})}),this.opts.waitForEncoding&&i.on(\"result\",(r,s)=>{ae(this,Dp)[Dp](t,r,s)}),this.opts.waitForEncoding?i.on(\"finished\",()=>{ae(this,pl)[pl](i.status)}):this.opts.waitForMetadata&&i.on(\"metadata\",()=>{ae(this,pl)[pl](i.status)}),i.ok===\"ASSEMBLY_COMPLETE\"||i.connect(),i}n(vx,\"_connectAssembly2\");yi.VERSION=ox.version;yi.COMPANION=Ip;yi.COMPANION_PATTERN=Np;var X0={strings:{uploadStalled:\"Upload has not made any progress for %{seconds} seconds. You may want to retry it.\"}};function sn(i,e){if(!Object.prototype.hasOwnProperty.call(i,e))throw new TypeError(\"attempted to use private field on non-instance\");return i}n(sn,\"_classPrivateFieldLooseBase\");var bx=0;function yl(i){return\"__private_\"+bx+++\"_\"+i}n(yl,\"_classPrivateFieldLooseKey\");var wx={version:\"3.5.0\"};function Y0(i,e){let t=e;return t||(t=new Error(\"Upload error\")),typeof t==\"string\"&&(t=new Error(t)),t instanceof Error||(t=Object.assign(new Error(\"Upload error\"),{data:t})),so(i)?(t=new Pi(t,i),t):(t.request=i,t)}n(Y0,\"buildResponseError\");function Q0(i){return i.data.slice(0,i.data.size,i.meta.type)}n(Q0,\"setTypeInBlob\");var Bp=yl(\"uploadLocalFile\"),Mp=yl(\"uploadBundle\"),zp=yl(\"getCompanionClientArgs\"),Lp=yl(\"uploadFiles\"),gl=yl(\"handleUpload\"),mo=class extends ve{constructor(e,t){super(e,t),Object.defineProperty(this,Lp,{value:xx}),Object.defineProperty(this,zp,{value:_x}),Object.defineProperty(this,Mp,{value:Px}),Object.defineProperty(this,Bp,{value:Sx}),Object.defineProperty(this,gl,{writable:!0,value:async s=>{if(s.length===0){this.uppy.log(\"[XHRUpload] No files to upload!\");return}this.opts.limit===0&&!this.opts[us]&&this.uppy.log(\"[XHRUpload] When uploading multiple files at once, consider setting the `limit` option (to `10` for example), to limit the number of concurrent uploads, which helps prevent memory and network issues: https://uppy.io/docs/xhr-upload/#limit-0\",\"warning\"),this.uppy.log(\"[XHRUpload] Uploading...\");let o=this.uppy.getFilesByIds(s),a=hs(o),l=ds(a);if(this.uppy.emit(\"upload-start\",l),this.opts.bundle){if(a.some(p=>p.isRemote))throw new Error(\"Can\\u2019t upload remote files when the `bundle: true` option is set\");if(typeof this.opts.headers==\"function\")throw new TypeError(\"`headers` may not be a function when the `bundle: true` option is set\");await sn(this,Mp)[Mp](a)}else await sn(this,Lp)[Lp](a)}}),this.type=\"uploader\",this.id=this.opts.id||\"XHRUpload\",this.title=\"XHRUpload\",this.defaultLocale=X0;let r={formData:!0,fieldName:t.bundle?\"files[]\":\"file\",method:\"post\",allowedMetaFields:null,responseUrlFieldName:\"url\",bundle:!1,headers:{},timeout:30*1e3,limit:5,withCredentials:!1,responseType:\"\",getResponseData(s){let o={};try{o=JSON.parse(s)}catch(a){e.log(a)}return o},getResponseError(s,o){let a=new Error(\"Upload error\");return so(o)&&(a=new Pi(a,o)),a},validateStatus(s){return s>=200&&s<300}};if(this.opts={...r,...t},this.i18nInit(),us in this.opts?this.requests=this.opts[us]:this.requests=new Mt(this.opts.limit),this.opts.bundle&&!this.opts.formData)throw new Error(\"`opts.formData` must be true when `opts.bundle` is enabled.\");if(t?.allowedMetaFields===void 0&&\"metaFields\"in this.opts)throw new Error(\"The `metaFields` option has been renamed to `allowedMetaFields`.\");this.uploaderEvents=Object.create(null)}getOptions(e){let t=this.uppy.getState().xhrUpload,{headers:r}=this.opts,s={...this.opts,...t||{},...e.xhrUpload||{},headers:{}};return typeof r==\"function\"?s.headers=r(e):Object.assign(s.headers,this.opts.headers),t&&Object.assign(s.headers,t.headers),e.xhrUpload&&Object.assign(s.headers,e.xhrUpload.headers),s}addMetadata(e,t,r){(Array.isArray(r.allowedMetaFields)?r.allowedMetaFields:Object.keys(t)).forEach(o=>{Array.isArray(t[o])?t[o].forEach(a=>e.append(o,a)):e.append(o,t[o])})}createFormDataUpload(e,t){let r=new FormData;this.addMetadata(r,e.meta,t);let s=Q0(e);return e.name?r.append(t.fieldName,s,e.meta.name):r.append(t.fieldName,s),r}createBundledUpload(e,t){let r=new FormData,{meta:s}=this.uppy.getState();return this.addMetadata(r,s,t),e.forEach(o=>{let a=this.getOptions(o),l=Q0(o);o.name?r.append(a.fieldName,l,o.name):r.append(a.fieldName,l)}),r}install(){if(this.opts.bundle){let{capabilities:e}=this.uppy.getState();this.uppy.setState({capabilities:{...e,individualCancellation:!1}})}this.uppy.addUploader(sn(this,gl)[gl])}uninstall(){if(this.opts.bundle){let{capabilities:e}=this.uppy.getState();this.uppy.setState({capabilities:{...e,individualCancellation:!0}})}this.uppy.removeUploader(sn(this,gl)[gl])}};n(mo,\"XHRUpload\");async function Sx(i,e,t){let r=this.getOptions(i);return this.uppy.log(`uploading ${e} of ${t}`),new Promise((s,o)=>{let a=r.formData?this.createFormDataUpload(i,r):i.data,l=new XMLHttpRequest,h=new mi(this.uppy);this.uploaderEvents[i.id]=h;let p,d=new qa(r.timeout,()=>{let y=new Error(this.i18n(\"uploadStalled\",{seconds:Math.ceil(r.timeout/1e3)}));this.uppy.emit(\"upload-stalled\",y,[i])}),f=Pt();l.upload.addEventListener(\"loadstart\",()=>{this.uppy.log(`[XHRUpload] ${f} started`)}),l.upload.addEventListener(\"progress\",y=>{this.uppy.log(`[XHRUpload] ${f} progress: ${y.loaded} / ${y.total}`),d.progress(),y.lengthComputable&&this.uppy.emit(\"upload-progress\",i,{uploader:this,bytesUploaded:y.loaded,bytesTotal:y.total})}),l.addEventListener(\"load\",()=>{if(this.uppy.log(`[XHRUpload] ${f} finished`),d.done(),p.done(),this.uploaderEvents[i.id]&&(this.uploaderEvents[i.id].remove(),this.uploaderEvents[i.id]=null),r.validateStatus(l.status,l.responseText,l)){let E=r.getResponseData(l.responseText,l),x=E[r.responseUrlFieldName],F={status:l.status,body:E,uploadURL:x};return this.uppy.emit(\"upload-success\",i,F),x&&this.uppy.log(`Download ${i.name} from ${x}`),s(i)}let y=r.getResponseData(l.responseText,l),b=Y0(l,r.getResponseError(l.responseText,l)),S={status:l.status,body:y};return this.uppy.emit(\"upload-error\",i,b,S),o(b)}),l.addEventListener(\"error\",()=>{this.uppy.log(`[XHRUpload] ${f} errored`),d.done(),p.done(),this.uploaderEvents[i.id]&&(this.uploaderEvents[i.id].remove(),this.uploaderEvents[i.id]=null);let y=Y0(l,r.getResponseError(l.responseText,l));return this.uppy.emit(\"upload-error\",i,y),o(y)}),l.open(r.method.toUpperCase(),r.endpoint,!0),l.withCredentials=r.withCredentials,r.responseType!==\"\"&&(l.responseType=r.responseType),p=this.requests.run(()=>{let y=this.getOptions(i);return Object.keys(y.headers).forEach(b=>{l.setRequestHeader(b,y.headers[b])}),l.send(a),()=>{d.done(),l.abort()}}),h.onFileRemove(i.id,()=>{p.abort(),o(new Error(\"File removed\"))}),h.onCancelAll(i.id,y=>{let{reason:b}=y;b===\"user\"&&p.abort(),o(new Error(\"Upload cancelled\"))})})}n(Sx,\"_uploadLocalFile2\");function Px(i){return new Promise((e,t)=>{let{endpoint:r}=this.opts,{method:s}=this.opts,o=this.uppy.getState().xhrUpload,a=this.createBundledUpload(i,{...this.opts,...o||{}}),l=new XMLHttpRequest,h=n(d=>{i.forEach(f=>{this.uppy.emit(\"upload-error\",f,d)})},\"emitError\"),p=new qa(this.opts.timeout,()=>{let d=new Error(this.i18n(\"uploadStalled\",{seconds:Math.ceil(this.opts.timeout/1e3)}));this.uppy.emit(\"upload-stalled\",d,i)});l.upload.addEventListener(\"loadstart\",()=>{this.uppy.log(\"[XHRUpload] started uploading bundle\"),p.progress()}),l.upload.addEventListener(\"progress\",d=>{p.progress(),d.lengthComputable&&i.forEach(f=>{this.uppy.emit(\"upload-progress\",f,{uploader:this,bytesUploaded:d.loaded/d.total*f.size,bytesTotal:f.size})})}),l.addEventListener(\"load\",d=>{if(p.done(),this.opts.validateStatus(d.target.status,l.responseText,l)){let y=this.opts.getResponseData(l.responseText,l),b={status:d.target.status,body:y};return i.forEach(S=>{this.uppy.emit(\"upload-success\",S,b)}),e()}let f=this.opts.getResponseError(l.responseText,l)||new Error(\"Upload error\");return f.request=l,h(f),t(f)}),l.addEventListener(\"error\",()=>{p.done();let d=this.opts.getResponseError(l.responseText,l)||new Error(\"Upload error\");return h(d),t(d)}),this.uppy.on(\"cancel-all\",function(d){let{reason:f}=d===void 0?{}:d;f===\"user\"&&(p.done(),l.abort())}),l.open(s.toUpperCase(),r,!0),l.withCredentials=this.opts.withCredentials,this.opts.responseType!==\"\"&&(l.responseType=this.opts.responseType),Object.keys(this.opts.headers).forEach(d=>{l.setRequestHeader(d,this.opts.headers[d])}),l.send(a)})}n(Px,\"_uploadBundle2\");function _x(i){let e=this.getOptions(i),t=Array.isArray(e.allowedMetaFields)?e.allowedMetaFields:Object.keys(i.meta);return{...i.remote.body,protocol:\"multipart\",endpoint:e.endpoint,size:i.data.size,fieldname:e.fieldName,metadata:Object.fromEntries(t.map(r=>[r,i.meta[r]])),httpMethod:e.method,useFormData:e.formData,headers:e.headers}}n(_x,\"_getCompanionClientArgs2\");async function xx(i){await Promise.allSettled(i.map((e,t)=>{let r=parseInt(t,10)+1,s=i.length;if(e.isRemote){let o=n(()=>this.requests,\"getQueue\"),a=new AbortController,l=n(p=>{p.id===e.id&&a.abort()},\"removedHandler\");this.uppy.on(\"file-removed\",l);let h=e.remote.requestClient.uploadRemoteFile(e,sn(this,zp)[zp](e),{signal:a.signal,getQueue:o});return this.requests.wrapSyncFunction(()=>{this.uppy.off(\"file-removed\",l)},{priority:-1})(),h}return sn(this,Bp)[Bp](e,r,s)}))}n(xx,\"_uploadFiles2\");mo.VERSION=wx.version;var $p=de(Il(),1),tb=de(J0(),1);var Z0={strings:{compressingImages:\"Compressing images...\",compressedX:\"Saved %{size} by compressing images\"}};function eb(i,e){if(!Object.prototype.hasOwnProperty.call(i,e))throw new TypeError(\"attempted to use private field on non-instance\");return i}n(eb,\"_classPrivateFieldLooseBase\");var Fx=0;function Ex(i){return\"__private_\"+Fx+++\"_\"+i}n(Ex,\"_classPrivateFieldLooseKey\");var vl=Ex(\"RateLimitedQueue\"),on=class extends ve{constructor(e,t){super(e,t),Object.defineProperty(this,vl,{writable:!0,value:void 0}),this.id=this.opts.id||\"Compressor\",this.type=\"modifier\",this.defaultLocale=Z0;let r={quality:.6,limit:10};this.opts={...r,...t},eb(this,vl)[vl]=new Mt(this.opts.limit),this.i18nInit(),this.prepareUpload=this.prepareUpload.bind(this),this.compress=this.compress.bind(this)}compress(e){return new Promise((t,r)=>{new tb.default(e,{...this.opts,success:t,error:r})})}async prepareUpload(e){let t=0,r=[],s=eb(this,vl)[vl].wrapPromiseFunction(async a=>{try{let l=await this.compress(a.data),h=a.data.size-l.size;this.uppy.log(`[Image Compressor] Image ${a.id} compressed by ${(0,$p.default)(h)}`),t+=h;let{name:p,type:d,size:f}=l,y=Bi(p),S=`${Bi(a.meta.name).name}.${y.extension}`;this.uppy.setFileState(a.id,{...p&&{name:p},...y.extension&&{extension:y.extension},...d&&{type:d},...f&&{size:f},data:l,meta:{...a.meta,type:d,name:S}}),r.push(a)}catch(l){this.uppy.log(`[Image Compressor] Failed to compress ${a.id}:`,\"warning\"),this.uppy.log(l,\"warning\")}}),o=e.map(a=>{let l=this.uppy.getFile(a);return this.uppy.emit(\"preprocess-progress\",l,{mode:\"indeterminate\",message:this.i18n(\"compressingImages\")}),l.isRemote||(l.data.type||(l.data=l.data.slice(0,l.data.size,l.type)),!l.type.startsWith(\"image/\"))?Promise.resolve():s(l)});await Promise.all(o),this.uppy.emit(\"compressor:complete\",r),t>1024&&this.uppy.info(this.i18n(\"compressedX\",{size:(0,$p.default)(t)}),\"info\");for(let a of e){let l=this.uppy.getFile(a);this.uppy.emit(\"preprocess-complete\",l)}}install(){this.uppy.addPreProcessor(this.prepareUpload)}uninstall(){this.uppy.removePreProcessor(this.prepareUpload)}};n(on,\"Compressor\");function ah(){return ah=Object.assign||function(i){for(var e=1;e<arguments.length;e++){var t=arguments[e];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(i[r]=t[r])}return i},ah.apply(this,arguments)}n(ah,\"_extends\");var Ox={\"[object HTMLCollection]\":!0,\"[object NodeList]\":!0,\"[object RadioNodeList]\":!0},Cx={button:!0,fieldset:!0,reset:!0,submit:!0},Tx={checkbox:!0,radio:!0},Ax=/^\\s+|\\s+$/g,Rx=Array.prototype.slice,ib=Object.prototype.toString;function lh(i,e){if(!i)throw new Error(\"A form is required by getFormData, was given form=\"+i);e=ah({includeDisabled:!1,trim:!1},e);for(var t={},r,s=[],o={},a=0,l=i.elements.length;a<l;a++){var h=i.elements[a];Cx[h.type]||h.disabled&&!e.includeDisabled||(r=h.name||h.id,r&&!o[r]&&(s.push(r),o[r]=!0))}for(var p=0,d=s.length;p<d;p++){r=s[p];var f=sb(i,r,e);f!=null&&(t[r]=f)}return t}n(lh,\"getFormData\");function sb(i,e,t){if(!i)throw new Error(\"A form is required by getFieldData, was given form=\"+i);if(!e&&ib.call(e)!==\"[object String]\")throw new Error(\"A field name is required by getFieldData, was given fieldName=\"+e);t=ah({includeDisabled:!1,trim:!1},t);var r=i.elements[e];if(!r||r.disabled&&!t.includeDisabled)return null;if(!Ox[ib.call(r)])return rb(r,t.trim);for(var s=[],o=!0,a=0,l=r.length;a<l;a++)if(!(r[a].disabled&&!t.includeDisabled)){o&&r[a].type!==\"radio\"&&(o=!1);var h=rb(r[a],t.trim);h!=null&&(s=s.concat(h))}return o&&s.length===1?s[0]:s.length>0?s:null}n(sb,\"getFieldData\");function rb(i,e){var t=null,r=i.type;if(r===\"select-one\")return i.options.length&&(t=i.options[i.selectedIndex].value),t;if(r===\"select-multiple\"){t=[];for(var s=0,o=i.options.length;s<o;s++)i.options[s].selected&&t.push(i.options[s].value);return t.length===0&&(t=null),t}return r===\"file\"&&\"files\"in i?(i.multiple?(t=Rx.call(i.files),t.length===0&&(t=null)):t=i.files[0],t):(Tx[r]?i.checked&&(r===\"checkbox\"&&!i.hasAttribute(\"value\")?t=!0:t=i.value):t=e?i.value.replace(Ax,\"\"):i.value,t)}n(rb,\"getFormElementValue\");lh.getFieldData=sb;var Ux={version:\"3.0.3\"},go=class extends ve{constructor(e,t){super(e,t),this.type=\"acquirer\",this.id=this.opts.id||\"Form\",this.title=\"Form\";let r={target:null,resultName:\"uppyResult\",getMetaFromForm:!0,addResultToForm:!0,submitOnSuccess:!1,triggerUploadOnSubmit:!1};this.opts={...r,...t},this.handleFormSubmit=this.handleFormSubmit.bind(this),this.handleUploadStart=this.handleUploadStart.bind(this),this.handleSuccess=this.handleSuccess.bind(this),this.addResultToForm=this.addResultToForm.bind(this),this.getMetaFromForm=this.getMetaFromForm.bind(this)}handleUploadStart(){this.opts.getMetaFromForm&&this.getMetaFromForm()}handleSuccess(e){this.opts.addResultToForm&&this.addResultToForm(e),this.opts.submitOnSuccess&&this.form.submit()}handleFormSubmit(e){if(this.opts.triggerUploadOnSubmit){e.preventDefault();let t=Qe(e.target.elements),r=[];t.forEach(s=>{(s.tagName===\"BUTTON\"||s.tagName===\"INPUT\"&&s.type===\"submit\")&&!s.disabled&&(s.disabled=!0,r.push(s))}),this.uppy.upload().then(()=>{r.forEach(s=>{s.disabled=!1})},s=>(r.forEach(o=>{o.disabled=!1}),Promise.reject(s))).catch(s=>{this.uppy.log(s.stack||s.message||s)})}}addResultToForm(e){this.uppy.log(\"[Form] Adding result to the original form:\"),this.uppy.log(e);let t=this.form.querySelector(`[name=\"${this.opts.resultName}\"]`);if(t){let r;try{r=JSON.parse(t.value)}catch{}Array.isArray(r)||(r=[]),r.push(e),t.value=JSON.stringify(r);return}t=document.createElement(\"input\"),t.name=this.opts.resultName,t.type=\"hidden\",t.value=JSON.stringify([e]),this.form.appendChild(t)}getMetaFromForm(){let e=lh(this.form);delete e[this.opts.resultName],this.uppy.setMeta(e)}install(){if(this.form=On(this.opts.target),!this.form||this.form.nodeName!==\"FORM\"){this.uppy.log(\"Form plugin requires a <form> target element passed in options to operate, none was found\",\"error\");return}this.form.addEventListener(\"submit\",this.handleFormSubmit),this.uppy.on(\"upload\",this.handleUploadStart),this.uppy.on(\"complete\",this.handleSuccess)}uninstall(){this.form.removeEventListener(\"submit\",this.handleFormSubmit),this.uppy.off(\"upload\",this.handleUploadStart),this.uppy.off(\"complete\",this.handleSuccess)}};n(go,\"Form\");go.VERSION=Ux.version;var gb=de(Rl(),1);function yo(i,e){if(!Object.prototype.hasOwnProperty.call(i,e))throw new TypeError(\"attempted to use private field on non-instance\");return i}n(yo,\"_classPrivateFieldLooseBase\");var kx=0;function Dx(i){return\"__private_\"+kx+++\"_\"+i}n(Dx,\"_classPrivateFieldLooseKey\");var ob=typeof navigator<\"u\"&&\"serviceWorker\"in navigator;function Ix(){return new Promise((i,e)=>{ob?navigator.serviceWorker.controller?i():navigator.serviceWorker.addEventListener(\"controllerchange\",()=>{i()}):e(new Error(\"Unsupported\"))})}n(Ix,\"waitForServiceWorker\");var zt=Dx(\"ready\"),bl=class{constructor(e){Object.defineProperty(this,zt,{writable:!0,value:void 0}),yo(this,zt)[zt]=Ix().then(t=>{yo(this,zt)[zt]=t}),this.name=e.storeName}get ready(){return Promise.resolve(yo(this,zt)[zt])}set ready(e){yo(this,zt)[zt]=e}async list(){return await yo(this,zt)[zt],new Promise((e,t)=>{let r=n(s=>{if(s.data.store===this.name)switch(s.data.type){case\"uppy/ALL_FILES\":e(s.data.files),navigator.serviceWorker.removeEventListener(\"message\",r);break;default:t()}},\"onMessage\");navigator.serviceWorker.addEventListener(\"message\",r),navigator.serviceWorker.controller.postMessage({type:\"uppy/GET_FILES\",store:this.name})})}async put(e){await yo(this,zt)[zt],navigator.serviceWorker.controller.postMessage({type:\"uppy/ADD_FILE\",store:this.name,file:e})}async delete(e){await yo(this,zt)[zt],navigator.serviceWorker.controller.postMessage({type:\"uppy/REMOVE_FILE\",store:this.name,fileID:e})}};n(bl,\"ServiceWorkerStore\");bl.isSupported=ob;var nb=bl;function ar(i,e){if(!Object.prototype.hasOwnProperty.call(i,e))throw new TypeError(\"attempted to use private field on non-instance\");return i}n(ar,\"_classPrivateFieldLooseBase\");var Nx=0;function Mx(i){return\"__private_\"+Nx+++\"_\"+i}n(Mx,\"_classPrivateFieldLooseKey\");var db=typeof window<\"u\"&&(window.indexedDB||window.webkitIndexedDB||window.mozIndexedDB||window.OIndexedDB||window.msIndexedDB),Lx=!!db,ab=\"uppy-blobs\",Vt=\"files\",cb=24*60*60*1e3,Bx=3,lb=1048576;function zx(i){let e=i.openCursor();e.onsuccess=t=>{let r=t.target.result;if(!r)return;let s=r.value;s.expires=Date.now()+cb,r.update(s)}}n(zx,\"migrateExpiration\");function ub(i){let e=db.open(i,Bx);return new Promise((t,r)=>{e.onupgradeneeded=s=>{let o=s.target.result,{transaction:a}=s.currentTarget;if(s.oldVersion<2&&o.createObjectStore(Vt,{keyPath:\"id\"}).createIndex(\"store\",\"store\",{unique:!1}),s.oldVersion<3){let l=a.objectStore(Vt);l.createIndex(\"expires\",\"expires\",{unique:!1}),zx(l)}a.oncomplete=()=>{t(o)}},e.onsuccess=s=>{t(s.target.result)},e.onerror=r})}n(ub,\"connect\");function uh(i){return new Promise((e,t)=>{i.onsuccess=r=>{e(r.target.result)},i.onerror=t})}n(uh,\"waitForRequest\");var hb=!1,Ve=Mx(\"ready\"),vo=class{constructor(e){Object.defineProperty(this,Ve,{writable:!0,value:void 0}),this.opts={dbName:ab,storeName:\"default\",expires:cb,maxFileSize:10*lb,maxTotalSize:300*lb,...e},this.name=this.opts.storeName;let t=n(async()=>{let r=await ub(this.opts.dbName);return ar(this,Ve)[Ve]=r,r},\"createConnection\");hb?ar(this,Ve)[Ve]=t():(hb=!0,ar(this,Ve)[Ve]=vo.cleanup().then(t,t))}get ready(){return Promise.resolve(ar(this,Ve)[Ve])}set ready(e){ar(this,Ve)[Ve]=e}key(e){return`${this.name}!${e}`}async list(){let s=(await ar(this,Ve)[Ve]).transaction([Vt],\"readonly\").objectStore(Vt).index(\"store\").getAll(IDBKeyRange.only(this.name)),o=await uh(s);return Object.fromEntries(o.map(a=>[a.fileID,a.data]))}async get(e){let s=(await ar(this,Ve)[Ve]).transaction([Vt],\"readonly\").objectStore(Vt).get(this.key(e)),{data:o}=await uh(s);return{id:o.fileID,data:o.data}}async getSize(){let s=(await ar(this,Ve)[Ve]).transaction([Vt],\"readonly\").objectStore(Vt).index(\"store\").openCursor(IDBKeyRange.only(this.name));return new Promise((o,a)=>{let l=0;s.onsuccess=h=>{let p=h.target.result;p?(l+=p.value.data.size,p.continue()):o(l)},s.onerror=()=>{a(new Error(\"Could not retrieve stored blobs size\"))}})}async put(e){if(e.data.size>this.opts.maxFileSize)throw new Error(\"File is too big to store.\");if(await this.getSize()>this.opts.maxTotalSize)throw new Error(\"No space left\");let o=ar(this,Ve)[Ve].transaction([Vt],\"readwrite\").objectStore(Vt).add({id:this.key(e.id),fileID:e.id,store:this.name,expires:Date.now()+this.opts.expires,data:e.data});return uh(o)}async delete(e){let s=(await ar(this,Ve)[Ve]).transaction([Vt],\"readwrite\").objectStore(Vt).delete(this.key(e));return uh(s)}static async cleanup(){let e=await ub(ab),s=e.transaction([Vt],\"readwrite\").objectStore(Vt).index(\"expires\").openCursor(IDBKeyRange.upperBound(Date.now()));await new Promise((o,a)=>{s.onsuccess=l=>{let h=l.target.result;h?(h.delete(),h.continue()):o()},s.onerror=a}),e.close()}};n(vo,\"IndexedDBStore\");vo.isSupported=Lx;var pb=vo;function jx(){let i=[];for(let e=0;e<localStorage.length;e++){let t=localStorage.key(e);t.startsWith(\"uppyState:\")&&i.push(t.slice(10))}return i}n(jx,\"findUppyInstances\");function fb(i){try{return JSON.parse(i)}catch{return null}}n(fb,\"maybeParse\");var mb=!1,Ii=class{constructor(e){this.opts={expires:24*60*60*1e3,...e},this.name=`uppyState:${e.storeName}`,mb||(mb=!0,Ii.cleanup())}load(){let e=localStorage.getItem(this.name);if(!e)return null;let t=fb(e);return t?t.metadata?t.metadata:(this.save(t),t):null}save(e){let t=Date.now()+this.opts.expires,r=JSON.stringify({metadata:e,expires:t});localStorage.setItem(this.name,r)}static cleanup(e){if(e){localStorage.removeItem(`uppyState:${e}`);return}let t=jx(),r=Date.now();t.forEach(s=>{let o=localStorage.getItem(`uppyState:${s}`);if(!o)return;let a=fb(o);a&&a.expires&&a.expires<r&&localStorage.removeItem(`uppyState:${s}`)})}};n(Ii,\"MetaDataStore\");var Hx={version:\"3.1.1\"},bo=class extends ve{constructor(e,t){super(e,t),this.addBlobToStores=s=>{s.isRemote||(this.ServiceWorkerStore&&this.ServiceWorkerStore.put(s).catch(o=>{this.uppy.log(\"[GoldenRetriever] Could not store file\",\"warning\"),this.uppy.log(o)}),this.IndexedDBStore.put(s).catch(o=>{this.uppy.log(\"[GoldenRetriever] Could not store file\",\"warning\"),this.uppy.log(o)}))},this.removeBlobFromStores=s=>{this.ServiceWorkerStore&&this.ServiceWorkerStore.delete(s.id).catch(o=>{this.uppy.log(\"[GoldenRetriever] Failed to remove file\",\"warning\"),this.uppy.log(o)}),this.IndexedDBStore.delete(s.id).catch(o=>{this.uppy.log(\"[GoldenRetriever] Failed to remove file\",\"warning\"),this.uppy.log(o)})},this.replaceBlobInStores=s=>{this.removeBlobFromStores(s),this.addBlobToStores(s)},this.handleRestoreConfirmed=()=>{this.uppy.log(\"[GoldenRetriever] Restore confirmed, proceeding...\");let{currentUploads:s}=this.uppy.getState();s&&(this.uppy.resumeAll(),Object.keys(s).forEach(o=>{this.uppy.restore(o,s[o])})),this.uppy.setState({recoveredState:null})},this.abortRestore=()=>{this.uppy.log(\"[GoldenRetriever] Aborting restore...\");let s=Object.keys(this.uppy.getState().files);this.deleteBlobs(s).then(()=>{this.uppy.log(`[GoldenRetriever] Removed ${s.length} files`)}).catch(o=>{this.uppy.log(`[GoldenRetriever] Could not remove ${s.length} files`,\"warning\"),this.uppy.log(o)}),this.uppy.cancelAll(),this.uppy.setState({recoveredState:null}),Ii.cleanup(this.uppy.opts.id)},this.handleComplete=s=>{let{successful:o}=s,a=o.map(l=>l.id);this.deleteBlobs(a).then(()=>{this.uppy.log(`[GoldenRetriever] Removed ${o.length} files that finished uploading`)}).catch(l=>{this.uppy.log(`[GoldenRetriever] Could not remove ${o.length} files that finished uploading`,\"warning\"),this.uppy.log(l)}),this.uppy.setState({recoveredState:null}),Ii.cleanup(this.uppy.opts.id)},this.restoreBlobs=()=>{this.uppy.getFiles().length>0?Promise.all([this.loadFileBlobsFromServiceWorker(),this.loadFileBlobsFromIndexedDB()]).then(s=>{let o={...s[0],...s[1]};this.onBlobsLoaded(o)}):this.uppy.log(\"[GoldenRetriever] No files need to be loaded, only restoring processing state...\")},this.type=\"debugger\",this.id=this.opts.id||\"GoldenRetriever\",this.title=\"Golden Retriever\";let r={expires:24*60*60*1e3,serviceWorker:!1};this.opts={...r,...t},this.MetaDataStore=new Ii({expires:this.opts.expires,storeName:e.getID()}),this.ServiceWorkerStore=null,this.opts.serviceWorker&&(this.ServiceWorkerStore=new nb({storeName:e.getID()})),this.IndexedDBStore=new pb({expires:this.opts.expires,...this.opts.indexedDB||{},storeName:e.getID()}),this.saveFilesStateToLocalStorage=(0,gb.default)(this.saveFilesStateToLocalStorage.bind(this),500,{leading:!0,trailing:!0}),this.restoreState=this.restoreState.bind(this),this.loadFileBlobsFromServiceWorker=this.loadFileBlobsFromServiceWorker.bind(this),this.loadFileBlobsFromIndexedDB=this.loadFileBlobsFromIndexedDB.bind(this),this.onBlobsLoaded=this.onBlobsLoaded.bind(this)}restoreState(){let e=this.MetaDataStore.load();e&&(this.uppy.log(\"[GoldenRetriever] Recovered some state from Local Storage\"),this.uppy.setState({currentUploads:e.currentUploads||{},files:e.files||{},recoveredState:e}),this.savedPluginData=e.pluginData)}getWaitingFiles(){let e={};return this.uppy.getFiles().forEach(t=>{(!t.progress||!t.progress.uploadStarted)&&(e[t.id]=t)}),e}getUploadingFiles(){let e={},{currentUploads:t}=this.uppy.getState();return t&&Object.keys(t).forEach(s=>{t[s].fileIDs.forEach(a=>{e[a]=this.uppy.getFile(a)})}),e}saveFilesStateToLocalStorage(){let e={...this.getWaitingFiles(),...this.getUploadingFiles()},t=Object.entries(e);if(t.length===0){this.uppy.getState().recoveredState!==null&&this.uppy.setState({recoveredState:null}),Ii.cleanup(this.uppy.opts.id);return}let r=Object.fromEntries(t.map(a=>{let[l,h]=a;return[l,h.isRemote?{...h,isRestored:!0}:{...h,isRestored:!0,data:null,preview:null}]})),s={};this.uppy.emit(\"restore:get-data\",a=>{Object.assign(s,a)});let{currentUploads:o}=this.uppy.getState();this.MetaDataStore.save({currentUploads:o,files:r,pluginData:s})}loadFileBlobsFromServiceWorker(){return this.ServiceWorkerStore?this.ServiceWorkerStore.list().then(e=>{let t=Object.keys(e).length;return t>0?(this.uppy.log(`[GoldenRetriever] Successfully recovered ${t} blobs from Service Worker!`),e):(this.uppy.log(\"[GoldenRetriever] No blobs found in Service Worker, trying IndexedDB now...\"),{})}).catch(e=>(this.uppy.log(\"[GoldenRetriever] Failed to recover blobs from Service Worker\",\"warning\"),this.uppy.log(e),{})):Promise.resolve({})}loadFileBlobsFromIndexedDB(){return this.IndexedDBStore.list().then(e=>{let t=Object.keys(e).length;return t>0?(this.uppy.log(`[GoldenRetriever] Successfully recovered ${t} blobs from IndexedDB!`),e):(this.uppy.log(\"[GoldenRetriever] No blobs found in IndexedDB\"),{})}).catch(e=>(this.uppy.log(\"[GoldenRetriever] Failed to recover blobs from IndexedDB\",\"warning\"),this.uppy.log(e),{}))}onBlobsLoaded(e){let t=[],r={...this.uppy.getState().files};Object.keys(e).forEach(s=>{let o=this.uppy.getFile(s);if(!o){t.push(s);return}let l={data:e[s],isRestored:!0,isGhost:!1};r[s]={...o,...l}}),Object.keys(r).forEach(s=>{r[s].data===null&&(r[s]={...r[s],isGhost:!0})}),this.uppy.setState({files:r}),this.uppy.emit(\"restored\",this.savedPluginData),t.length&&this.deleteBlobs(t).then(()=>{this.uppy.log(`[GoldenRetriever] Cleaned up ${t.length} old files`)}).catch(s=>{this.uppy.log(`[GoldenRetriever] Could not clean up ${t.length} old files`,\"warning\"),this.uppy.log(s)})}deleteBlobs(e){return Promise.all(e.map(t=>{var r,s,o;return(r=(s=this.ServiceWorkerStore)==null?void 0:s.delete(t))!=null?r:(o=this.IndexedDBStore)==null?void 0:o.delete(t)}))}install(){this.restoreState(),this.restoreBlobs(),this.uppy.on(\"file-added\",this.addBlobToStores),this.uppy.on(\"file-editor:complete\",this.replaceBlobInStores),this.uppy.on(\"file-removed\",this.removeBlobFromStores),this.uppy.on(\"state-update\",this.saveFilesStateToLocalStorage),this.uppy.on(\"restore-confirmed\",this.handleRestoreConfirmed),this.uppy.on(\"restore-canceled\",this.abortRestore),this.uppy.on(\"complete\",this.handleComplete)}uninstall(){this.uppy.off(\"file-added\",this.addBlobToStores),this.uppy.off(\"file-editor:complete\",this.replaceBlobInStores),this.uppy.off(\"file-removed\",this.removeBlobFromStores),this.uppy.off(\"state-update\",this.saveFilesStateToLocalStorage),this.uppy.off(\"restore-confirmed\",this.handleRestoreConfirmed),this.uppy.off(\"restore-canceled\",this.abortRestore),this.uppy.off(\"complete\",this.handleComplete)}};n(bo,\"GoldenRetriever\");bo.VERSION=Hx.version;var $x={version:\"3.0.3\"},wo=class extends Z{constructor(e,t){super(e,t),this.type=\"debugger\",this.id=this.opts.id||\"ReduxDevTools\",this.title=\"Redux DevTools\";let r={};this.opts={...r,...t},this.handleStateChange=this.handleStateChange.bind(this),this.initDevTools=this.initDevTools.bind(this)}handleStateChange(e,t){this.devTools.send(\"UPPY_STATE_UPDATE\",t)}initDevTools(){this.devTools=window.devToolsExtension.connect(),this.devToolsUnsubscribe=this.devTools.subscribe(e=>{if(e.type===\"DISPATCH\")switch(e.payload.type){case\"RESET\":this.uppy.cancelAll();return;case\"IMPORT_STATE\":{let{computedStates:t}=e.payload.nextLiftedState;this.uppy.store.state={...this.uppy.getState(),...t[t.length-1].state},this.uppy.updateAll(this.uppy.getState());return}case\"JUMP_TO_STATE\":case\"JUMP_TO_ACTION\":this.uppy.store.state={...this.uppy.getState(),...JSON.parse(e.state)},this.uppy.updateAll(this.uppy.getState());break;default:}})}install(){this.withDevTools=typeof window<\"u\"&&window.__REDUX_DEVTOOLS_EXTENSION__,this.withDevTools&&(this.initDevTools(),this.uppy.on(\"state-update\",this.handleStateChange))}uninstall(){this.withDevTools&&(this.devToolsUnsubscribe(),this.uppy.off(\"state-update\",this.handleStateUpdate))}};n(wo,\"ReduxDevTools\");wo.VERSION=$x.version;function qx(){throw new Error(\"Core has been renamed to Uppy\")}n(qx,\"Core\");var Vx={ProviderView:td};yi.COMPANION_URL=Ip;yi.COMPANION_ALLOWED_HOSTS=Np;var Wx={};globalThis.Uppy=qp;})();\n/**\n * Takes a string with placeholder variables like `%{smart_count} file selected`\n * and replaces it with values from options `{smart_count: 5}`\n *\n * @license https://github.com/airbnb/polyglot.js/blob/master/LICENSE\n * taken from https://github.com/airbnb/polyglot.js/blob/master/lib/polyglot.js#L299\n *\n * @param phrase that needs interpolation, with placeholders\n * @param options with values that will be used to replace placeholders\n */\n/*! Bundled license information:\n\nclassnames/index.js:\n  (*!\n    Copyright (c) 2018 Jed Watson.\n    Licensed under the MIT License (MIT), see\n    http://jedwatson.github.io/classnames\n  *)\n\ncropperjs/dist/cropper.js:\n  (*!\n   * Cropper.js v1.5.7\n   * https://fengyuanchen.github.io/cropperjs\n   *\n   * Copyright 2015-present Chen Fengyuan\n   * Released under the MIT license\n   *\n   * Date: 2020-05-23T05:23:00.081Z\n   *)\n\ncompressorjs/dist/compressor.js:\n  (*!\n   * Compressor.js v1.1.1\n   * https://fengyuanchen.github.io/compressorjs\n   *\n   * Copyright 2018-present Chen Fengyuan\n   * Released under the MIT license\n   *\n   * Date: 2021-10-05T02:32:40.212Z\n   *)\n*/\n//# sourceMappingURL=uppy.min.js.map\n","jquery/bootstrap/tab.js":"/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.3): tab.js and base-component.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\ndefine([\n    \"./util/index\",\n    \"./dom/event-handler\",\n    \"./dom/selector-engine\"\n], function(Util, EventHandler, SelectorEngine) {\n    'use strict';\n\n    const defineJQueryPlugin = Util.defineJQueryPlugin;\n    const executeAfterTransition = Util.executeAfterTransition;\n    const getElement = Util.getElement;\n    const getElementFromSelector = Util.getElementFromSelector;\n    const isDisabled = Util.isDisabled;\n    const reflow = Util.reflow;\n\n    /**\n     * ------------------------------------------------------------------------\n     * Constants\n     * ------------------------------------------------------------------------\n     */\n\n    const VERSION = '5.1.3';\n    const NAME = 'tab';\n    const DATA_KEY = 'bs.tab';\n    const EVENT_KEY = `.${DATA_KEY}`;\n    const DATA_API_KEY = '.data-api';\n\n    const EVENT_HIDE = `hide${EVENT_KEY}`;\n    const EVENT_HIDDEN = `hidden${EVENT_KEY}`;\n    const EVENT_SHOW = `show${EVENT_KEY}`;\n    const EVENT_SHOWN = `shown${EVENT_KEY}`;\n    const EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`;\n\n    const CLASS_NAME_DROPDOWN_MENU = 'dropdown-menu';\n    const CLASS_NAME_ACTIVE = 'active';\n    const CLASS_NAME_FADE = 'fade';\n    const CLASS_NAME_SHOW = 'show';\n\n    const SELECTOR_DROPDOWN = '.dropdown';\n    const SELECTOR_NAV_LIST_GROUP = '.nav, .list-group';\n    const SELECTOR_ACTIVE = '.active';\n    const SELECTOR_ACTIVE_UL = ':scope > li > .active';\n    const SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"tab\"], [data-bs-toggle=\"pill\"], [data-bs-toggle=\"list\"]';\n    const SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle';\n    const SELECTOR_DROPDOWN_ACTIVE_CHILD = ':scope > .dropdown-menu .active';\n\n    /**\n     * ------------------------------------------------------------------------\n     * Class Definition\n     * ------------------------------------------------------------------------\n     */\n\n    function Tab(element) {\n        element = getElement(element);\n\n        if (!element) {\n            return;\n        }\n\n        this._element = element;\n        Data.set(this._element, DATA_KEY, this);\n    }\n\n    // Getters\n\n    Tab.VERSION = VERSION;\n\n    Tab.NAME = NAME;\n\n    Tab.DATA_KEY = 'bs.' + Tab.NAME;\n\n    Tab.EVENT_KEY = '.' + Tab.DATA_KEY;\n\n    // Public\n\n    Tab.prototype.dispose = function() {\n        Data.remove(this._element, this.constructor.DATA_KEY);\n        EventHandler.off(this._element, this.constructor.EVENT_KEY);\n\n        Object.getOwnPropertyNames(this).forEach(propertyName => {\n            this[propertyName] = null;\n        })\n    }\n\n    Tab.prototype._queueCallback = function(callback, element, isAnimated = true) {\n        executeAfterTransition(callback, element, isAnimated);\n    }\n\n    Tab.prototype.show = function() {\n        if ((this._element.parentNode &&\n            this._element.parentNode.nodeType === Node.ELEMENT_NODE &&\n            this._element.classList.contains(CLASS_NAME_ACTIVE))) {\n            return;\n        }\n\n        let previous;\n        const target = getElementFromSelector(this._element);\n        const listElement = this._element.closest(SELECTOR_NAV_LIST_GROUP);\n\n        if (listElement) {\n            const itemSelector = listElement.nodeName === 'UL' || listElement.nodeName === 'OL' ? SELECTOR_ACTIVE_UL : SELECTOR_ACTIVE;\n            previous = SelectorEngine.find(itemSelector, listElement);\n            previous = previous[previous.length - 1];\n        }\n\n        const hideEvent = previous ?\n            EventHandler.trigger(previous, EVENT_HIDE, {\n                relatedTarget: this._element\n            }) :\n            null;\n\n        const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, {\n            relatedTarget: previous\n        });\n\n        if (showEvent.defaultPrevented || (hideEvent !== null && hideEvent.defaultPrevented)) {\n            return;\n        }\n\n        this._activate(this._element, listElement);\n\n        const complete = () => {\n            EventHandler.trigger(previous, EVENT_HIDDEN, {\n                relatedTarget: this._element\n            });\n            EventHandler.trigger(this._element, EVENT_SHOWN, {\n                relatedTarget: previous\n            });\n        };\n\n        if (target) {\n            this._activate(target, target.parentNode, complete);\n        } else {\n            complete();\n        }\n    }\n\n    // Private\n\n    Tab.prototype._activate = function(element, container, callback) {\n        const activeElements = container && (container.nodeName === 'UL' || container.nodeName === 'OL') ?\n            SelectorEngine.find(SELECTOR_ACTIVE_UL, container) :\n            SelectorEngine.children(container, SELECTOR_ACTIVE);\n\n        const active = activeElements[0];\n        const isTransitioning = callback && (active && active.classList.contains(CLASS_NAME_FADE));\n\n        const complete = () => this._transitionComplete(element, active, callback);\n\n        if (active && isTransitioning) {\n            active.classList.remove(CLASS_NAME_SHOW);\n            this._queueCallback(complete, element, true);\n        } else {\n            complete();\n        }\n    }\n\n    Tab.prototype._transitionComplete = function(element, active, callback) {\n        if (active) {\n            active.classList.remove(CLASS_NAME_ACTIVE);\n\n            const dropdownChild = SelectorEngine.findOne(SELECTOR_DROPDOWN_ACTIVE_CHILD, active.parentNode);\n\n            if (dropdownChild) {\n                dropdownChild.classList.remove(CLASS_NAME_ACTIVE);\n            }\n\n            if (active.getAttribute('role') === 'tab') {\n                active.setAttribute('aria-selected', false);\n            }\n        }\n\n        element.classList.add(CLASS_NAME_ACTIVE);\n        if (element.getAttribute('role') === 'tab') {\n            element.setAttribute('aria-selected', true);\n        }\n\n        reflow(element);\n\n        if (element.classList.contains(CLASS_NAME_FADE)) {\n            element.classList.add(CLASS_NAME_SHOW);\n        }\n\n        let parent = element.parentNode;\n        if (parent && parent.nodeName === 'LI') {\n            parent = parent.parentNode;\n        }\n\n        if (parent && parent.classList.contains(CLASS_NAME_DROPDOWN_MENU)) {\n            const dropdownElement = element.closest(SELECTOR_DROPDOWN);\n\n            if (dropdownElement) {\n                SelectorEngine.find(SELECTOR_DROPDOWN_TOGGLE, dropdownElement)\n                    .forEach(dropdown => dropdown.classList.add(CLASS_NAME_ACTIVE));\n            }\n\n            element.setAttribute('aria-expanded', true);\n        }\n\n        if (callback) {\n            callback();\n        }\n    }\n\n    // Static\n\n    Tab.getInstance = function(element) {\n        return Data.get(getElement(element), this.DATA_KEY);\n    }\n\n    Tab.getOrCreateInstance = function(element, config = {}) {\n        return this.getInstance(element) || new this(element, typeof config === 'object' ? config : null);\n    }\n\n    Tab.jQueryInterface = function(config) {\n        return this.each(function () {\n            const data = Tab.getOrCreateInstance(this);\n\n            if (typeof config === 'string') {\n                if (typeof data[config] === 'undefined') {\n                    throw new TypeError(`No method named \"${config}\"`);\n                }\n\n                data[config]();\n            }\n        })\n    }\n\n    /**\n     * ------------------------------------------------------------------------\n     * Data Api implementation\n     * ------------------------------------------------------------------------\n     */\n\n    EventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n        if (['A', 'AREA'].includes(this.tagName)) {\n            event.preventDefault();\n        }\n\n        if (isDisabled(this)) {\n            return;\n        }\n\n        const data = Tab.getOrCreateInstance(this);\n        data.show();\n    })\n\n    /**\n     * ------------------------------------------------------------------------\n     * jQuery\n     * ------------------------------------------------------------------------\n     * add .Tab to jQuery only if jQuery is present\n     */\n\n    defineJQueryPlugin(Tab);\n\n    return Tab;\n});\n","jquery/bootstrap/collapse.js":"/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.3): collapse.js and base-component.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\ndefine([\n    \"jquery\",\n    \"./util/index\",\n    \"./dom/data\",\n    \"./dom/event-handler\",\n    \"./dom/manipulator\",\n    \"./dom/selector-engine\"\n], function($, Util, Data, EventHandler, Manipulator, SelectorEngine) {\n    'use strict';\n\n    const defineJQueryPlugin = Util.defineJQueryPlugin;\n    const executeAfterTransition = Util.executeAfterTransition;\n    const getElement = Util.getElement;\n    const getSelectorFromElement = Util.getSelectorFromElement;\n    const getElementFromSelector = Util.getElementFromSelector;\n    const reflow = Util.reflow;\n    const typeCheckConfig = Util.typeCheckConfig;\n\n    /**\n     * ------------------------------------------------------------------------\n     * Constants\n     * ------------------------------------------------------------------------\n     */\n\n    const VERSION = '5.1.3';\n    const NAME = 'collapse';\n    const DATA_KEY = 'bs.collapse';\n    const EVENT_KEY = `.${DATA_KEY}`;\n    const DATA_API_KEY = '.data-api';\n\n    const Default = {\n        toggle: true,\n        parent: null\n    };\n\n    const DefaultType = {\n        toggle: 'boolean',\n        parent: '(null|element)'\n    };\n\n    const EVENT_SHOW = `show${EVENT_KEY}`;\n    const EVENT_SHOWN = `shown${EVENT_KEY}`;\n    const EVENT_HIDE = `hide${EVENT_KEY}`;\n    const EVENT_HIDDEN = `hidden${EVENT_KEY}`;\n    const EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`;\n\n    const CLASS_NAME_SHOW = 'show';\n    const CLASS_NAME_COLLAPSE = 'collapse';\n    const CLASS_NAME_COLLAPSING = 'collapsing';\n    const CLASS_NAME_COLLAPSED = 'collapsed';\n    const CLASS_NAME_DEEPER_CHILDREN = `:scope .${CLASS_NAME_COLLAPSE} .${CLASS_NAME_COLLAPSE}`;\n    const CLASS_NAME_HORIZONTAL = 'collapse-horizontal';\n\n    const WIDTH = 'width';\n    const HEIGHT = 'height';\n\n    const SELECTOR_ACTIVES = '.collapse.show, .collapse.collapsing';\n    const SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"collapse\"]';\n\n    /**\n     * ------------------------------------------------------------------------\n     * Class Definition\n     * ------------------------------------------------------------------------\n     */\n\n    var Collapse = function(element, config) {\n        element = getElement(element);\n\n        if (!element) {\n            return;\n        }\n\n        this._element = element;\n        Data.set(this._element, DATA_KEY, this);\n\n        this._isTransitioning = false;\n        this._config = this._getConfig(config);\n        this._triggerArray = [];\n\n        const toggleList = SelectorEngine.find(SELECTOR_DATA_TOGGLE);\n\n        for (let i = 0, len = toggleList.length; i < len; i++) {\n            const elem = toggleList[i];\n            const selector = getSelectorFromElement(elem);\n            const filterElement = SelectorEngine.find(selector)\n                .filter(foundElem => foundElem === this._element);\n\n            if (selector !== null && filterElement.length) {\n                this._selector = selector;\n                this._triggerArray.push(elem);\n            }\n        }\n\n        this._initializeChildren();\n\n        if (!this._config.parent) {\n            this._addAriaAndCollapsedClass(this._triggerArray, this._isShown());\n        }\n\n        if (this._config.toggle) {\n            this.toggle();\n        }\n    }\n\n    // Getters\n\n    Collapse.VERSION = VERSION;\n\n    Collapse.Default = Default;\n\n    Collapse.NAME = NAME;\n\n    Collapse.DATA_KEY = 'bs.' + Collapse.NAME;\n\n    Collapse.EVENT_KEY = '.' + Collapse.DATA_KEY;\n\n    // Public\n\n    Collapse.prototype.dispose = function() {\n        Data.remove(this._element, this.constructor.DATA_KEY);\n        EventHandler.off(this._element, this.constructor.EVENT_KEY);\n\n        Object.getOwnPropertyNames(this).forEach(propertyName => {\n            this[propertyName] = null;\n        })\n    }\n\n    Collapse.prototype._queueCallback = function(callback, element, isAnimated = true) {\n        executeAfterTransition(callback, element, isAnimated);\n    }\n\n    Collapse.prototype.toggle = function() {\n        if (this._isShown()) {\n            this.hide();\n        } else {\n            this.show();\n        }\n    }\n\n    Collapse.prototype.show = function() {\n        if (this._isTransitioning || this._isShown()) {\n            return;\n        }\n\n        let actives = [];\n        let activesData;\n\n        if (this._config.parent) {\n            const children = SelectorEngine.find(CLASS_NAME_DEEPER_CHILDREN, this._config.parent);\n            actives = SelectorEngine.find(SELECTOR_ACTIVES, this._config.parent).filter(elem => !children.includes(elem)); // remove children if greater depth\n        }\n\n        const container = SelectorEngine.findOne(this._selector);\n        if (actives.length) {\n            const tempActiveData = actives.find(elem => container !== elem);\n            activesData = tempActiveData ? Collapse.getInstance(tempActiveData) : null;\n\n            if (activesData && activesData._isTransitioning) {\n                return;\n            }\n        }\n\n        const startEvent = EventHandler.trigger(this._element, EVENT_SHOW);\n        if (startEvent.defaultPrevented) {\n            return;\n        }\n\n        actives.forEach(elemActive => {\n            if (container !== elemActive) {\n                Collapse.getOrCreateInstance(elemActive, {toggle: false}).hide();\n            }\n\n            if (!activesData) {\n                Data.set(elemActive, DATA_KEY, null);\n            }\n        })\n\n        const dimension = this._getDimension();\n\n        this._element.classList.remove(CLASS_NAME_COLLAPSE);\n        this._element.classList.add(CLASS_NAME_COLLAPSING);\n\n        this._element.style[dimension] = 0;\n\n        this._addAriaAndCollapsedClass(this._triggerArray, true);\n        this._isTransitioning = true;\n\n        const complete = () => {\n            this._isTransitioning = false;\n\n            this._element.classList.remove(CLASS_NAME_COLLAPSING);\n            this._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW);\n\n            this._element.style[dimension] = '';\n\n            EventHandler.trigger(this._element, EVENT_SHOWN);\n        };\n\n        const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1);\n        const scrollSize = `scroll${capitalizedDimension}`;\n\n        this._queueCallback(complete, this._element, true);\n        this._element.style[dimension] = `${this._element[scrollSize]}px`;\n    }\n\n    Collapse.prototype.hide = function() {\n        if (this._isTransitioning || !this._isShown()) {\n            return;\n        }\n\n        const startEvent = EventHandler.trigger(this._element, EVENT_HIDE);\n        if (startEvent.defaultPrevented) {\n            return;\n        }\n\n        const dimension = this._getDimension();\n\n        this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`;\n\n        reflow(this._element);\n\n        this._element.classList.add(CLASS_NAME_COLLAPSING);\n        this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW);\n\n        const triggerArrayLength = this._triggerArray.length;\n        for (let i = 0; i < triggerArrayLength; i++) {\n            const trigger = this._triggerArray[i];\n            const elem = getElementFromSelector(trigger);\n\n            if (elem && !this._isShown(elem)) {\n                this._addAriaAndCollapsedClass([trigger], false);\n            }\n        }\n\n        this._isTransitioning = true;\n\n        const complete = () => {\n            this._isTransitioning = false;\n            this._element.classList.remove(CLASS_NAME_COLLAPSING);\n            this._element.classList.add(CLASS_NAME_COLLAPSE);\n            EventHandler.trigger(this._element, EVENT_HIDDEN);\n        };\n\n        this._element.style[dimension] = '';\n\n        this._queueCallback(complete, this._element, true);\n    }\n\n    Collapse.prototype._isShown = function(element = this._element) {\n        return element.classList.contains(CLASS_NAME_SHOW);\n    }\n\n    // Private\n\n    Collapse.prototype._getConfig = function(config) {\n        config = {\n            ...Default,\n            ...Manipulator.getDataAttributes(this._element),\n            ...config\n        };\n        config.toggle = Boolean(config.toggle); // Coerce string values\n        config.parent = getElement(config.parent);\n        typeCheckConfig(NAME, config, DefaultType);\n        return config;\n    }\n\n    Collapse.prototype._getDimension = function() {\n        return this._element.classList.contains(CLASS_NAME_HORIZONTAL) ? WIDTH : HEIGHT;\n    }\n\n    Collapse.prototype._initializeChildren = function() {\n        if (!this._config.parent) {\n            return;\n        }\n\n        const children = SelectorEngine.find(CLASS_NAME_DEEPER_CHILDREN, this._config.parent);\n        SelectorEngine.find(SELECTOR_DATA_TOGGLE, this._config.parent).filter(elem => !children.includes(elem))\n            .forEach(element => {\n                const selected = getElementFromSelector(element);\n\n                if (selected) {\n                    this._addAriaAndCollapsedClass([element], this._isShown(selected));\n                }\n            })\n    }\n\n    Collapse.prototype._addAriaAndCollapsedClass = function(triggerArray, isOpen) {\n        if (!triggerArray.length) {\n            return;\n        }\n\n        triggerArray.forEach(elem => {\n            if (isOpen) {\n                elem.classList.remove(CLASS_NAME_COLLAPSED);\n            } else {\n                elem.classList.add(CLASS_NAME_COLLAPSED);\n            }\n\n            elem.setAttribute('aria-expanded', isOpen);\n        })\n    }\n\n    // Static\n\n    Collapse.getInstance = function(element) {\n        return Data.get(getElement(element), this.DATA_KEY);\n    }\n\n    Collapse.getOrCreateInstance = function(element, config = {}) {\n        return this.getInstance(element) || new this(element, typeof config === 'object' ? config : null);\n    }\n\n    Collapse.jQueryInterface = function(config) {\n        return this.each(function () {\n            const _config = {};\n            if (typeof config === 'string' && /show|hide/.test(config)) {\n                _config.toggle = false;\n            }\n\n            const data = Collapse.getOrCreateInstance(this, _config);\n\n            if (typeof config === 'string') {\n                if (typeof data[config] === 'undefined') {\n                    throw new TypeError(`No method named \"${config}\"`);\n                }\n\n                data[config]();\n            }\n        })\n    }\n\n    /**\n     * ------------------------------------------------------------------------\n     * Data Api implementation\n     * ------------------------------------------------------------------------\n     */\n\n    EventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n        // preventDefault only for <a> elements (which change the URL) not inside the collapsible element\n        if (event.target.tagName === 'A' || (event.delegateTarget && event.delegateTarget.tagName === 'A')) {\n            event.preventDefault();\n        }\n\n        const selector = getSelectorFromElement(this);\n        const selectorElements = SelectorEngine.find(selector);\n\n        selectorElements.forEach(element => {\n            Collapse.getOrCreateInstance(element, {toggle: false}).toggle();\n        })\n    })\n\n    /**\n     * ------------------------------------------------------------------------\n     * jQuery\n     * ------------------------------------------------------------------------\n     * add .Collapse to jQuery only if jQuery is present\n     */\n\n    defineJQueryPlugin(Collapse);\n\n    return Collapse;\n});\n","jquery/bootstrap/util/index.js":"/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.3): util/index.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\ndefine([\n    \"jquery\",\n    'domReady!'\n], function() {\n    'use strict';\n\n    const MAX_UID = 1000000;\n    const MILLISECONDS_MULTIPLIER = 1000;\n    const TRANSITION_END = 'transitionend';\n\n    // Shoutout AngusCroll (https://goo.gl/pxwQGp)\n    const toType = obj => {\n        if (obj === null || obj === undefined) {\n            return `${obj}`\n        }\n\n        return {}.toString.call(obj).match(/\\s([a-z]+)/i)[1].toLowerCase()\n    };\n\n    /**\n     * --------------------------------------------------------------------------\n     * Public Util Api\n     * --------------------------------------------------------------------------\n     */\n\n    const getUID = prefix => {\n        do {\n            prefix += Math.floor(Math.random() * MAX_UID)\n        } while (document.getElementById(prefix))\n\n        return prefix\n    };\n\n    const getSelector = element => {\n        let selector = element.getAttribute('data-bs-target');\n\n        if (!selector || selector === '#') {\n            let hrefAttr = element.getAttribute('href');\n\n            // The only valid content that could double as a selector are IDs or classes,\n            // so everything starting with `#` or `.`. If a \"real\" URL is used as the selector,\n            // `document.querySelector` will rightfully complain it is invalid.\n            // See https://github.com/twbs/bootstrap/issues/32273\n            if (!hrefAttr || (!hrefAttr.includes('#') && !hrefAttr.startsWith('.'))) {\n                return null\n            }\n\n            // Just in case some CMS puts out a full URL with the anchor appended\n            if (hrefAttr.includes('#') && !hrefAttr.startsWith('#')) {\n                hrefAttr = `#${hrefAttr.split('#')[1]}`\n            }\n\n            selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : null\n        }\n\n        return selector\n    };\n\n    const getSelectorFromElement = element => {\n        const selector = getSelector(element);\n\n        if (selector) {\n            return document.querySelector(selector) ? selector : null\n        }\n\n        return null\n    };\n\n    const getElementFromSelector = element => {\n        const selector = getSelector(element);\n\n        return selector ? document.querySelector(selector) : null\n    };\n\n    const getTransitionDurationFromElement = element => {\n        if (!element) {\n            return 0\n        }\n\n        // Get transition-duration of the element\n        let {transitionDuration, transitionDelay} = window.getComputedStyle(element);\n\n        const floatTransitionDuration = Number.parseFloat(transitionDuration);\n        const floatTransitionDelay = Number.parseFloat(transitionDelay);\n\n        // Return 0 if element or transition duration is not found\n        if (!floatTransitionDuration && !floatTransitionDelay) {\n            return 0\n        }\n\n        // If multiple durations are defined, take the first\n        transitionDuration = transitionDuration.split(',')[0]\n        transitionDelay = transitionDelay.split(',')[0]\n\n        return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER\n    };\n\n    const triggerTransitionEnd = element => {\n        element.dispatchEvent(new Event(TRANSITION_END))\n    };\n\n    const isElement = obj => {\n        if (!obj || typeof obj !== 'object') {\n            return false\n        }\n\n        if (typeof obj.jquery !== 'undefined') {\n            obj = obj[0]\n        }\n\n        return typeof obj.nodeType !== 'undefined'\n    };\n\n    const getElement = obj => {\n        if (isElement(obj)) { // it's a jQuery object or a node element\n            return obj.jquery ? obj[0] : obj\n        }\n\n        if (typeof obj === 'string' && obj.length > 0) {\n            return document.querySelector(obj)\n        }\n\n        return null\n    };\n\n    const typeCheckConfig = (componentName, config, configTypes) => {\n        Object.keys(configTypes).forEach(property => {\n            const expectedTypes = configTypes[property];\n            const value = config[property];\n            const valueType = value && isElement(value) ? 'element' : toType(value);\n\n            if (!new RegExp(expectedTypes).test(valueType)) {\n                throw new TypeError(\n                    `${componentName.toUpperCase()}: Option \"${property}\" provided type \"${valueType}\" but expected type \"${expectedTypes}\".`\n                )\n            }\n        })\n    };\n\n    const isVisible = element => {\n        if (!isElement(element) || element.getClientRects().length === 0) {\n            return false\n        }\n\n        return getComputedStyle(element).getPropertyValue('visibility') === 'visible'\n    };\n\n    const isDisabled = element => {\n        if (!element || element.nodeType !== Node.ELEMENT_NODE) {\n            return true\n        }\n\n        if (element.classList.contains('disabled')) {\n            return true\n        }\n\n        if (typeof element.disabled !== 'undefined') {\n            return element.disabled\n        }\n\n        return element.hasAttribute('disabled') && element.getAttribute('disabled') !== 'false'\n    };\n\n    const findShadowRoot = element => {\n        if (!document.documentElement.attachShadow) {\n            return null\n        }\n\n        // Can find the shadow root otherwise it'll return the document\n        if (typeof element.getRootNode === 'function') {\n            const root = element.getRootNode();\n            return root instanceof ShadowRoot ? root : null\n        }\n\n        if (element instanceof ShadowRoot) {\n            return element\n        }\n\n        // when we don't find a shadow root\n        if (!element.parentNode) {\n            return null\n        }\n\n        return findShadowRoot(element.parentNode)\n    };\n\n    const noop = () => {};\n\n    /**\n     * Trick to restart an element's animation\n     *\n     * @param {HTMLElement} element\n     * @return void\n     *\n     * @see https://www.charistheo.io/blog/2021/02/restart-a-css-animation-with-javascript/#restarting-a-css-animation\n     */\n    const reflow = element => {\n        // eslint-disable-next-line no-unused-expressions\n        element.offsetHeight\n    };\n\n    const getjQuery = () => {\n        const {jQuery} = window;\n\n        if (jQuery && !document.body.hasAttribute('data-bs-no-jquery')) {\n            return jQuery\n        }\n\n        return null\n    };\n\n    const DOMContentLoadedCallbacks = [];\n\n    const onDOMContentLoaded = callback => {\n        if (document.readyState === 'loading') {\n            // add listener on the first call when the document is in loading state\n            if (!DOMContentLoadedCallbacks.length) {\n                document.addEventListener('DOMContentLoaded', () => {\n                    DOMContentLoadedCallbacks.forEach(callback => callback())\n                })\n            }\n\n            DOMContentLoadedCallbacks.push(callback)\n        } else {\n            callback()\n        }\n    };\n\n    const isRTL = () => document.documentElement.dir === 'rtl';\n\n    const defineJQueryPlugin = plugin => {\n        onDOMContentLoaded(() => {\n            const $ = getjQuery();\n            /* istanbul ignore if */\n            if ($) {\n                const name = plugin.NAME;\n                const JQUERY_NO_CONFLICT = $.fn[name];\n                $.fn[name] = plugin.jQueryInterface\n                $.fn[name].Constructor = plugin\n                $.fn[name].noConflict = () => {\n                    $.fn[name] = JQUERY_NO_CONFLICT\n                    return plugin.jQueryInterface\n                }\n            }\n        })\n    };\n\n    const execute = callback => {\n        if (typeof callback === 'function') {\n            callback()\n        }\n    };\n\n    const executeAfterTransition = (callback, transitionElement, waitForTransition = true) => {\n        if (!waitForTransition) {\n            execute(callback)\n            return\n        }\n\n        const durationPadding = 5;\n        const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding;\n\n        let called = false;\n\n        const handler = ({ target }) => {\n            if (target !== transitionElement) {\n                return\n            }\n\n            called = true\n            transitionElement.removeEventListener(TRANSITION_END, handler)\n            execute(callback)\n        };\n\n        transitionElement.addEventListener(TRANSITION_END, handler)\n        setTimeout(() => {\n            if (!called) {\n                triggerTransitionEnd(transitionElement)\n            }\n        }, emulatedDuration)\n    };\n\n    /**\n     * Return the previous/next element of a list.\n     *\n     * @param {array} list    The list of elements\n     * @param activeElement   The active element\n     * @param shouldGetNext   Choose to get next or previous element\n     * @param isCycleAllowed\n     * @return {Element|elem} The proper element\n     */\n    const getNextActiveElement = (list, activeElement, shouldGetNext, isCycleAllowed) => {\n        let index = list.indexOf(activeElement);\n\n        // if the element does not exist in the list return an element depending on the direction and if cycle is allowed\n        if (index === -1) {\n            return list[!shouldGetNext && isCycleAllowed ? list.length - 1 : 0]\n        }\n\n        const listLength = list.length;\n\n        index += shouldGetNext ? 1 : -1\n\n        if (isCycleAllowed) {\n            index = (index + listLength) % listLength\n        }\n\n        return list[Math.max(0, Math.min(index, listLength - 1))]\n    };\n\n    return {\n        getElement,\n        getUID,\n        getSelectorFromElement,\n        getElementFromSelector,\n        getTransitionDurationFromElement,\n        triggerTransitionEnd,\n        isElement,\n        typeCheckConfig,\n        isVisible,\n        isDisabled,\n        findShadowRoot,\n        noop,\n        getNextActiveElement,\n        reflow,\n        getjQuery,\n        onDOMContentLoaded,\n        isRTL,\n        defineJQueryPlugin,\n        execute,\n        executeAfterTransition\n    };\n});\n","jquery/bootstrap/dom/data.js":"/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.3): dom/data.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\ndefine([], function() {\n    'use strict';\n\n    /**\n     * ------------------------------------------------------------------------\n     * Constants\n     * ------------------------------------------------------------------------\n     */\n\n    const elementMap = new Map();\n\n    return {\n        set: function (element, key, instance) {\n            if (!elementMap.has(element)) {\n                elementMap.set(element, new Map())\n            }\n\n            const instanceMap = elementMap.get(element);\n\n            // make it clear we only want one instance per element\n            // can be removed later when multiple key/instances are fine to be used\n            if (!instanceMap.has(key) && instanceMap.size !== 0) {\n                // eslint-disable-next-line no-console\n                console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(instanceMap.keys())[0]}.`)\n                return\n            }\n\n            instanceMap.set(key, instance)\n        },\n\n        get: function (element, key) {\n            if (elementMap.has(element)) {\n                return elementMap.get(element).get(key) || null\n            }\n\n            return null\n        },\n\n        remove: function (element, key) {\n            if (!elementMap.has(element)) {\n                return\n            }\n\n            const instanceMap = elementMap.get(element);\n\n            instanceMap.delete(key)\n\n            // free up element references if there are no instances left for an element\n            if (instanceMap.size === 0) {\n                elementMap.delete(element)\n            }\n        }\n    }\n});\n","jquery/bootstrap/dom/event-handler.js":"/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.3): dom/event-handler.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\ndefine([\n    \"../util/index\"\n], function(Util) {\n    'use strict';\n\n    const getjQuery = Util.getjQuery;\n\n    /**\n     * ------------------------------------------------------------------------\n     * Constants\n     * ------------------------------------------------------------------------\n     */\n\n    const namespaceRegex = /[^.]*(?=\\..*)\\.|.*/;\n    const stripNameRegex = /\\..*/;\n    const stripUidRegex = /::\\d+$/;\n    const eventRegistry = {}; // Events storage\n    let uidEvent = 1;\n    const customEvents = {\n        mouseenter: 'mouseover',\n        mouseleave: 'mouseout'\n    };\n    const customEventsRegex = /^(mouseenter|mouseleave)/i;\n    const nativeEvents = new Set([\n        'click',\n        'dblclick',\n        'mouseup',\n        'mousedown',\n        'contextmenu',\n        'mousewheel',\n        'DOMMouseScroll',\n        'mouseover',\n        'mouseout',\n        'mousemove',\n        'selectstart',\n        'selectend',\n        'keydown',\n        'keypress',\n        'keyup',\n        'orientationchange',\n        'touchstart',\n        'touchmove',\n        'touchend',\n        'touchcancel',\n        'pointerdown',\n        'pointermove',\n        'pointerup',\n        'pointerleave',\n        'pointercancel',\n        'gesturestart',\n        'gesturechange',\n        'gestureend',\n        'focus',\n        'blur',\n        'change',\n        'reset',\n        'select',\n        'submit',\n        'focusin',\n        'focusout',\n        'load',\n        'unload',\n        'beforeunload',\n        'resize',\n        'move',\n        'DOMContentLoaded',\n        'readystatechange',\n        'error',\n        'abort',\n        'scroll'\n    ]);\n\n    /**\n     * ------------------------------------------------------------------------\n     * Private methods\n     * ------------------------------------------------------------------------\n     */\n\n    function getUidEvent(element, uid) {\n        return (uid && `${uid}::${uidEvent++}`) || element.uidEvent || uidEvent++\n    }\n\n    function getEvent(element) {\n        const uid = getUidEvent(element);\n\n        element.uidEvent = uid\n        eventRegistry[uid] = eventRegistry[uid] || {}\n\n        return eventRegistry[uid]\n    }\n\n    function bootstrapHandler(element, fn) {\n        return function handler(event) {\n            event.delegateTarget = element\n\n            if (handler.oneOff) {\n                EventHandler.off(element, event.type, fn)\n            }\n\n            return fn.apply(element, [event])\n        }\n    }\n\n    function bootstrapDelegationHandler(element, selector, fn) {\n        return function handler(event) {\n            const domElements = element.querySelectorAll(selector);\n\n            for (let {target} = event; target && target !== this; target = target.parentNode) {\n                for (let i = domElements.length; i--;) {\n                    if (domElements[i] === target) {\n                        event.delegateTarget = target\n\n                        if (handler.oneOff) {\n                            EventHandler.off(element, event.type, selector, fn)\n                        }\n\n                        return fn.apply(target, [event])\n                    }\n                }\n            }\n\n            // To please ESLint\n            return null\n        }\n    }\n\n    function findHandler(events, handler, delegationSelector = null) {\n        const uidEventList = Object.keys(events);\n\n        for (let i = 0, len = uidEventList.length; i < len; i++) {\n            const event = events[uidEventList[i]];\n\n            if (event.originalHandler === handler && event.delegationSelector === delegationSelector) {\n                return event\n            }\n        }\n\n        return null\n    }\n\n    function normalizeParams(originalTypeEvent, handler, delegationFn) {\n        const delegation = typeof handler === 'string';\n        const originalHandler = delegation ? delegationFn : handler;\n\n        let typeEvent = getTypeEvent(originalTypeEvent);\n        const isNative = nativeEvents.has(typeEvent);\n\n        if (!isNative) {\n            typeEvent = originalTypeEvent\n        }\n\n        return [delegation, originalHandler, typeEvent]\n    }\n\n    function addHandler(element, originalTypeEvent, handler, delegationFn, oneOff) {\n        if (typeof originalTypeEvent !== 'string' || !element) {\n            return\n        }\n\n        if (!handler) {\n            handler = delegationFn\n            delegationFn = null\n        }\n\n        // in case of mouseenter or mouseleave wrap the handler within a function that checks for its DOM position\n        // this prevents the handler from being dispatched the same way as mouseover or mouseout does\n        if (customEventsRegex.test(originalTypeEvent)) {\n            const wrapFn = fn => {\n                return function (event) {\n                    if (!event.relatedTarget || (event.relatedTarget !== event.delegateTarget && !event.delegateTarget.contains(event.relatedTarget))) {\n                        return fn.call(this, event)\n                    }\n                }\n            };\n\n            if (delegationFn) {\n                delegationFn = wrapFn(delegationFn)\n            } else {\n                handler = wrapFn(handler)\n            }\n        }\n\n        const [delegation, originalHandler, typeEvent] = normalizeParams(originalTypeEvent, handler, delegationFn);\n        const events = getEvent(element);\n        const handlers = events[typeEvent] || (events[typeEvent] = {});\n        const previousFn = findHandler(handlers, originalHandler, delegation ? handler : null);\n\n        if (previousFn) {\n            previousFn.oneOff = previousFn.oneOff && oneOff\n\n            return\n        }\n\n        const uid = getUidEvent(originalHandler, originalTypeEvent.replace(namespaceRegex, ''));\n        const fn = delegation ?\n            bootstrapDelegationHandler(element, handler, delegationFn) :\n            bootstrapHandler(element, handler);\n\n        fn.delegationSelector = delegation ? handler : null\n        fn.originalHandler = originalHandler\n        fn.oneOff = oneOff\n        fn.uidEvent = uid\n        handlers[uid] = fn\n\n        element.addEventListener(typeEvent, fn, delegation)\n    }\n\n    function removeHandler(element, events, typeEvent, handler, delegationSelector) {\n        const fn = findHandler(events[typeEvent], handler, delegationSelector);\n\n        if (!fn) {\n            return\n        }\n\n        element.removeEventListener(typeEvent, fn, Boolean(delegationSelector))\n        delete events[typeEvent][fn.uidEvent]\n    }\n\n    function removeNamespacedHandlers(element, events, typeEvent, namespace) {\n        const storeElementEvent = events[typeEvent] || {};\n\n        Object.keys(storeElementEvent).forEach(handlerKey => {\n            if (handlerKey.includes(namespace)) {\n                const event = storeElementEvent[handlerKey];\n\n                removeHandler(element, events, typeEvent, event.originalHandler, event.delegationSelector)\n            }\n        })\n    }\n\n    function getTypeEvent(event) {\n        // allow to get the native events from namespaced events ('click.bs.button' --> 'click')\n        event = event.replace(stripNameRegex, '')\n        return customEvents[event] || event\n    }\n\n    return {\n        on: function(element, event, handler, delegationFn) {\n            addHandler(element, event, handler, delegationFn, false)\n        },\n\n        one: function(element, event, handler, delegationFn) {\n            addHandler(element, event, handler, delegationFn, true)\n        },\n\n        off: function(element, originalTypeEvent, handler, delegationFn) {\n            if (typeof originalTypeEvent !== 'string' || !element) {\n                return\n            }\n\n            const [delegation, originalHandler, typeEvent] = normalizeParams(originalTypeEvent, handler, delegationFn);\n            const inNamespace = typeEvent !== originalTypeEvent;\n            const events = getEvent(element);\n            const isNamespace = originalTypeEvent.startsWith('.');\n\n            if (typeof originalHandler !== 'undefined') {\n                // Simplest case: handler is passed, remove that listener ONLY.\n                if (!events || !events[typeEvent]) {\n                    return\n                }\n\n                removeHandler(element, events, typeEvent, originalHandler, delegation ? handler : null)\n                return\n            }\n\n            if (isNamespace) {\n                Object.keys(events).forEach(elementEvent => {\n                    removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1))\n                })\n            }\n\n            const storeElementEvent = events[typeEvent] || {};\n            Object.keys(storeElementEvent).forEach(keyHandlers => {\n                const handlerKey = keyHandlers.replace(stripUidRegex, '');\n\n                if (!inNamespace || originalTypeEvent.includes(handlerKey)) {\n                    const event = storeElementEvent[keyHandlers];\n\n                    removeHandler(element, events, typeEvent, event.originalHandler, event.delegationSelector)\n                }\n            })\n        },\n\n        trigger: function(element, event, args) {\n            if (typeof event !== 'string' || !element) {\n                return null\n            }\n\n            const $ = getjQuery();\n            const typeEvent = getTypeEvent(event);\n            const inNamespace = event !== typeEvent;\n            const isNative = nativeEvents.has(typeEvent);\n\n            let jQueryEvent;\n            let bubbles = true;\n            let nativeDispatch = true;\n            let defaultPrevented = false;\n            let evt = null;\n\n            if (inNamespace && $) {\n                jQueryEvent = $.Event(event, args)\n\n                $(element).trigger(jQueryEvent)\n                bubbles = !jQueryEvent.isPropagationStopped()\n                nativeDispatch = !jQueryEvent.isImmediatePropagationStopped()\n                defaultPrevented = jQueryEvent.isDefaultPrevented()\n            }\n\n            if (isNative) {\n                evt = document.createEvent('HTMLEvents')\n                evt.initEvent(typeEvent, bubbles, true)\n            } else {\n                evt = new CustomEvent(event, {\n                    bubbles,\n                    cancelable: true\n                })\n            }\n\n            // merge custom information in our event\n            if (typeof args !== 'undefined') {\n                Object.keys(args).forEach(key => {\n                    Object.defineProperty(evt, key, {\n                        get() {\n                            return args[key]\n                        }\n                    })\n                })\n            }\n\n            if (defaultPrevented) {\n                evt.preventDefault()\n            }\n\n            if (nativeDispatch) {\n                element.dispatchEvent(evt)\n            }\n\n            if (evt.defaultPrevented && typeof jQueryEvent !== 'undefined') {\n                jQueryEvent.preventDefault()\n            }\n\n            return evt\n        }\n    }\n});\n","jquery/bootstrap/dom/selector-engine.js":"/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.3): dom/selector-engine.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\ndefine([\n    \"../util/index\"\n], function(Util) {\n    'use strict';\n\n    const isDisabled = Util.isDisabled;\n    const isVisible = Util.isVisible;\n\n    /**\n     * ------------------------------------------------------------------------\n     * Constants\n     * ------------------------------------------------------------------------\n     */\n\n    const NODE_TEXT = 3;\n\n    return {\n        find: function(selector, element = document.documentElement) {\n            return [].concat(...Element.prototype.querySelectorAll.call(element, selector))\n        },\n\n        findOne: function(selector, element = document.documentElement) {\n            return Element.prototype.querySelector.call(element, selector)\n        },\n\n        children: function(element, selector) {\n            return [].concat(...element.children)\n                .filter(child => child.matches(selector))\n        },\n\n        parents: function(element, selector) {\n            const parents = [];\n\n            let ancestor = element.parentNode;\n\n            while (ancestor && ancestor.nodeType === Node.ELEMENT_NODE && ancestor.nodeType !== NODE_TEXT) {\n                if (ancestor.matches(selector)) {\n                    parents.push(ancestor)\n                }\n\n                ancestor = ancestor.parentNode\n            }\n\n            return parents\n        },\n\n        prev: function(element, selector) {\n            let previous = element.previousElementSibling;\n\n            while (previous) {\n                if (previous.matches(selector)) {\n                    return [previous]\n                }\n\n                previous = previous.previousElementSibling\n            }\n\n            return []\n        },\n\n        next: function(element, selector) {\n            let next = element.nextElementSibling;\n\n            while (next) {\n                if (next.matches(selector)) {\n                    return [next]\n                }\n\n                next = next.nextElementSibling\n            }\n\n            return []\n        },\n\n        focusableChildren: function(element) {\n            const focusables = [\n                'a',\n                'button',\n                'input',\n                'textarea',\n                'select',\n                'details',\n                '[tabindex]',\n                '[contenteditable=\"true\"]'\n            ].map(selector => `${selector}:not([tabindex^=\"-\"])`).join(', ');\n\n            return this.find(focusables, element).filter(el => !isDisabled(el) && isVisible(el))\n        }\n    }\n});\n","jquery/bootstrap/dom/manipulator.js":"/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.3): dom/manipulator.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\ndefine([], function() {\n    'use strict';\n\n    function normalizeData(val) {\n        if (val === 'true') {\n            return true\n        }\n\n        if (val === 'false') {\n            return false\n        }\n\n        if (val === Number(val).toString()) {\n            return Number(val)\n        }\n\n        if (val === '' || val === 'null') {\n            return null\n        }\n\n        return val\n    }\n\n    function normalizeDataKey(key) {\n        return key.replace(/[A-Z]/g, chr => `-${chr.toLowerCase()}`)\n    }\n\n    return {\n        setDataAttribute: function(element, key, value) {\n            element.setAttribute(`data-bs-${normalizeDataKey(key)}`, value)\n        },\n\n        removeDataAttribute: function(element, key) {\n            element.removeAttribute(`data-bs-${normalizeDataKey(key)}`)\n        },\n\n        getDataAttributes: function(element) {\n            if (!element) {\n                return {}\n            }\n\n            const attributes = {};\n\n            Object.keys(element.dataset)\n                .filter(key => key.startsWith('bs'))\n                .forEach(key => {\n                    let pureKey = key.replace(/^bs/, '');\n                    pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1, pureKey.length)\n                    attributes[pureKey] = normalizeData(element.dataset[key])\n                })\n\n            return attributes\n        },\n\n        getDataAttribute: function(element, key) {\n            return normalizeData(element.getAttribute(`data-bs-${normalizeDataKey(key)}`))\n        },\n\n        offset: function(element) {\n            const rect = element.getBoundingClientRect();\n\n            return {\n                top: rect.top + window.pageYOffset,\n                left: rect.left + window.pageXOffset\n            }\n        },\n\n        position: function(element) {\n            return {\n                top: element.offsetTop,\n                left: element.offsetLeft\n            }\n        }\n    }\n});\n","Magento_GroupedProduct/js/product-ids-resolver.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\ndefine([\n    'jquery',\n    'Magento_Catalog/js/product/view/product-ids',\n    'Magento_Catalog/js/product/view/product-info'\n], function ($, productIds, productInfo) {\n    'use strict';\n\n    /**\n     * Returns id's of products in form.\n     *\n     * @param {Object} config\n     * @param {HTMLElement} element\n     * @return {Array}\n     */\n    return function (config, element) {\n        $(element).find('div[data-product-id]').each(function () {\n            productIds.push($(this).data('productId').toString());\n            productInfo.push(\n                {\n                    'id': $(this).data('productId').toString()\n                }\n            );\n        });\n\n        return productIds();\n    };\n});\n","Magento_GroupedProduct/js/grouped-product.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\ndefine([\n    'jquery',\n    'underscore',\n    'jquery-ui-modules/widget',\n    'jquery/jquery.parsequery'\n], function ($) {\n    'use strict';\n\n    $.widget('mage.groupedProduct', {\n        options: {\n            qtySelector: 'input.qty',\n            qtyNameSelector: 'super_group'\n        },\n\n        /**\n         * Creates widget\n         * @private\n         */\n        _create: function () {\n            // Override defaults with URL query parameters and/or inputs values\n            this._overrideDefaults();\n        },\n\n        /**\n         * Override default options values settings with either URL query parameters or\n         * initialized inputs values.\n         * @private\n         */\n        _overrideDefaults: function () {\n            var hashIndex = window.location.href.indexOf('#');\n\n            if (hashIndex !== -1) {\n                this._parseQueryParams(window.location.href.substr(hashIndex + 1));\n            }\n        },\n\n        /**\n         * Parse query parameters from a query string and set options values based on the\n         * key value pairs of the parameters.\n         * @param {*} queryString - URL query string containing query parameters.\n         * @private\n         */\n        _parseQueryParams: function (queryString) {\n            var queryParams = $.parseQuery({\n                    query: queryString\n                }),\n                form = this.element,\n                qtyNameSelector = this.options.qtyNameSelector,\n                qtys = $(this.options.qtySelector, form);\n\n            $.each(queryParams, $.proxy(function (key, value) {\n                qtys.each(function (index, qty) {\n                    var nameSelector = qtyNameSelector.concat('[', key, ']');\n\n                    if (qty.name === nameSelector) {\n                        $(qty).val(value);\n                    }\n                });\n            }, this));\n        }\n    });\n\n    return $.mage.groupedProduct;\n});\n","Magento_GoogleAnalytics/js/google-analytics.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n/* jscs:disable */\n/* eslint-disable */\ndefine([\n    'jquery',\n    'mage/cookies'\n], function ($) {\n    'use strict';\n\n    /**\n     * @param {Object} config\n     */\n    return function (config) {\n        var allowServices = false,\n            allowedCookies,\n            allowedWebsites;\n\n        if (config.isCookieRestrictionModeEnabled) {\n            allowedCookies = $.mage.cookies.get(config.cookieName);\n\n            if (allowedCookies !== null) {\n                allowedWebsites = JSON.parse(allowedCookies);\n\n                if (allowedWebsites[config.currentWebsite] === 1) {\n                    allowServices = true;\n                }\n            }\n        } else {\n            allowServices = true;\n        }\n\n        if (allowServices) {\n            (function (i, s, o, g, r, a, m) {\n                i.GoogleAnalyticsObject = r;\n                i[r] = i[r] || function () {\n                        (i[r].q = i[r].q || []).push(arguments)\n                    }, i[r].l = 1 * new Date();\n                a = s.createElement(o),\n                    m = s.getElementsByTagName(o)[0];\n                a.async = 1;\n                a.src = g;\n                m.parentNode.insertBefore(a, m)\n            })(window, document, 'script', '//www.google-analytics.com/analytics.js', 'ga');\n\n            // Process page info\n            ga('create', config.pageTrackingData.accountId, 'auto');\n\n            if (config.pageTrackingData.isAnonymizedIpActive) {\n                ga('set', 'anonymizeIp', true);\n            }\n\n            // Process orders data\n            if (config.ordersTrackingData.hasOwnProperty('currency')) {\n                ga('require', 'ec', 'ec.js');\n\n                ga('set', 'currencyCode', config.ordersTrackingData.currency);\n\n                // Collect product data for GA\n                if (config.ordersTrackingData.products) {\n                    $.each(config.ordersTrackingData.products, function (index, value) {\n                        ga('ec:addProduct', value);\n                    });\n                }\n\n                // Collect orders data for GA\n                if (config.ordersTrackingData.orders) {\n                    $.each(config.ordersTrackingData.orders, function (index, value) {\n                        ga('ec:setAction', 'purchase', value);\n                    });\n                }\n\n                ga('send', 'pageview');\n            } else {\n                // Process Data if not orders\n                ga('send', 'pageview' + config.pageTrackingData.optPageUrl);\n            }\n        }\n    }\n});\n","Magento_PaypalCaptcha/js/view/payment/list-mixin.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\ndefine([\n    'jquery',\n    'Magento_Captcha/js/model/captchaList'\n], function ($, captchaList) {\n    'use strict';\n\n    var mixin = {\n\n        formId: 'co-payment-form',\n\n        /**\n         * Sets custom template for Payflow Pro\n         *\n         * @param {Object} payment\n         * @returns {Object}\n         */\n        createComponent: function (payment) {\n\n            var component = this._super(payment);\n\n            if (component.component === 'Magento_Paypal/js/view/payment/method-renderer/payflowpro-method') {\n                component.template = 'Magento_PaypalCaptcha/payment/payflowpro-form';\n                $(window).off('clearTimeout')\n                    .on('clearTimeout', this.clearTimeout.bind(this));\n            }\n\n            return component;\n        },\n\n        /**\n         * Overrides default window.clearTimeout() to catch errors from iframe and reload Captcha.\n         *\n         * @param {Number} timeoutID\n         */\n        clearTimeout: function (timeoutID) {\n            var captcha = captchaList.getCaptchaByFormId(this.formId);\n\n            if (captcha !== null) {\n                captcha.refresh();\n            }\n            clearTimeout(timeoutID);\n        }\n    };\n\n    /**\n     * Overrides `Magento_Checkout/js/view/payment/list::createComponent`\n     */\n    return function (target) {\n        return target.extend(mixin);\n    };\n});\n","Magento_PaypalCaptcha/js/view/payment/method-renderer/payflowpro-method-mixin.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\ndefine([\n    'Magento_PaypalCaptcha/js/model/skipRefreshCaptcha'\n], function (skipRefreshCaptcha) {\n    'use strict';\n\n    var payflowProMethodMixin = {\n        /**\n         * @override\n         */\n        placeOrder: function () {\n            skipRefreshCaptcha.skip(true);\n            this._super();\n        }\n    };\n\n    return function (payflowProMethod) {\n        return payflowProMethod.extend(payflowProMethodMixin);\n    };\n});\n","Magento_PaypalCaptcha/js/view/checkout/paymentCaptcha.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\ndefine([\n    'jquery',\n    'Magento_Captcha/js/view/checkout/defaultCaptcha',\n    'Magento_Captcha/js/model/captchaList',\n    'Magento_Captcha/js/model/captcha'\n],\nfunction ($, defaultCaptcha, captchaList, Captcha) {\n    'use strict';\n\n    return defaultCaptcha.extend({\n\n        /** @inheritdoc */\n        initialize: function () {\n            var captchaConfigPayment,\n                currentCaptcha;\n\n            this._super();\n\n            if (window[this.configSource] && window[this.configSource].captchaPayments) {\n                captchaConfigPayment = window[this.configSource].captchaPayments;\n\n                $.each(captchaConfigPayment, function (formId, captchaData) {\n                    var captcha;\n\n                    captchaData.formId = formId;\n                    captcha = Captcha(captchaData);\n                    captchaList.add(captcha);\n                });\n            }\n\n            currentCaptcha = captchaList.getCaptchaByFormId(this.formId);\n\n            if (currentCaptcha != null) {\n                currentCaptcha.setIsVisible(true);\n                this.setCurrentCaptcha(currentCaptcha);\n            }\n        }\n    });\n});\n","Magento_PaypalCaptcha/js/view/checkout/defaultCaptcha-mixin.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\ndefine([\n    'Magento_PaypalCaptcha/js/model/skipRefreshCaptcha'\n], function (skipRefreshCaptcha) {\n    'use strict';\n\n    var defaultCaptchaMixin = {\n        /**\n         * @override\n         */\n        refresh: function () {\n            if (!skipRefreshCaptcha.skip()) {\n                this._super();\n            } else {\n                skipRefreshCaptcha.skip(false);\n            }\n        }\n    };\n\n    return function (defaultCaptcha) {\n        return defaultCaptcha.extend(defaultCaptchaMixin);\n    };\n});\n","Magento_PaypalCaptcha/js/model/skipRefreshCaptcha.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\ndefine(['ko'], function (ko) {\n    'use strict';\n\n    return {\n        skip: ko.observable(false)\n    };\n});\n","js/theme.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\ndefine([\n    'jquery',\n    'mage/smart-keyboard-handler',\n    'mage/mage',\n    'domReady!'\n], function ($, keyboardHandler) {\n    'use strict';\n\n    $('.cart-summary').mage('sticky', {\n        container: '#maincontent'\n    });\n\n    $('.header-wrapper-right > .header.links').clone().appendTo('#store\\\\.links');\n\n    $('#store\\\\.links li a').each(function () {\n        var id = $(this).attr('id');\n\n        if (id !== undefined) {\n            $(this).attr('id', id + '_mobile');\n        }\n    });\n\n    keyboardHandler.apply();\n\n    $('#contact-form').submit(function(){\n        if($(this).valid() )\n            _iub.cons.sendData()\n    })\n    $('#form-validate').submit(function(){\n        if($(this).valid() )\n            _iub.cons.sendData()\n    })\n    $('#co-payment-form').submit(function(){\n        if($(this).valid() )\n            _iub.cons.sendData()\n    })\n    $('#privacy-form').submit(function(){\n        _iub.cons.sendData()\n    })\n\n\n\n//    $(document).on(\"click\",\"button[data-role=opc-continue]\", function() {\n    $(document).on(\"click\",\".payment-group button.checkout\", function() {\n        _iub.cons_instructions.push([\"submit\",\n            {\n                form: {\n                    selector: document.getElementById(\"checkoutSteps\"),\n                    map: {\n                        subject: {\n                            first_name: \"firstname\",\n                            last_name: \"lastname\",\n                            email: \"username\"\n                        },\n                        exclude: ['password', 'password_confirmation'],\n                        preferences: {\n                            policy: \"privacy\",\n                            terms: \"terms\",\n                            adult: \"adult\",\n                            consent1: \"consent1\",\n                            consent2: \"consent2\",\n                            consent3: \"consent3\"\n                        }\n                    }\n                },\n                consent: {\n                    legal_notices: [{\n                        identifier: \"term\",\n                        version: \"1\"\n                    }]\n                }\n            },\n            {\n                success: function(response) {\n                  //  console.log(response);\n                },\n                error: function(response) {\n                   // console.log(response);\n                }\n            }\n        ])\n        /*\n        _iub.cons_instructions.push([\"load\", {\n            form: {\n                selector: document.getElementById(\"checkoutSteps\"),\n                map: {\n                    subject: {\n                        first_name: \"firstname\",\n                        last_name: \"lastname\",\n                        email: \"username\"\n                    },\n                    exclude: ['password', 'password_confirmation'],\n                    preferences: {\n                        policy: \"privacy\",\n                        terms: \"terms\",\n                        adult: \"adult\",\n                        consent1: \"consent1\",\n                        consent2: \"consent2\",\n                        consent3: \"consent3\"\n                    }\n                }\n            },\n            consent: {\n                legal_notices: [{\n                    identifier: \"privacy_policy\",\n                },\n                    {\n                        identifier: 'cookie_policy',\n                    },\n                    {\n                        identifier: \"terms\",\n                    }\n                ],\n            }\n        }]);\n        _iub.cons.sendData()\n\n         */\n    });\n});\n","js/qty.js":"define(['jquery'], function ($) {\n\n    $('.increaseQty, .decreaseQty').on(\"click\", function () {\n\n        let inputElem = $(this).parents('.qty-container').find('input').first();\n\n        let currentQty = inputElem.val() || 0;\n\n        if ($(this).hasClass('increaseQty')) {\n            inputElem.val(parseInt(currentQty) + 1);\n        } else {\n            inputElem.val(\n                parseInt(currentQty) - 1 > 0\n                    ? parseInt(currentQty) - 1\n                    : 0\n            );\n        }\n    });\n\n    $(document).ready(function() {\n        if (typeof sku !== 'undefined' && typeof encryptedValue !== 'undefined' && sku && encryptedValue) {\n            $.ajax({\n                url: `/recommendations/api/selectRecommendations?sku=${sku}&encryptedvalue=${encryptedValue}`,\n                type: 'GET',\n                dataType: 'json',\n                success: function(data) {\n                    data.title !== '' && $('#block-related-heading').html(data.title);\n\n                    const recommendations = data.recommendations;\n                    const $productItems = $('.products-related .product-items');\n\n                    const itemsArray = data.recommendations;\n\n                    itemsArray.sort((a, b) => a.position - b.position);\n\n                    itemsArray.forEach(function(item) {\n                        const dataValue = item.related;\n                        const $elementToMove = $(`[data-item=\"${dataValue}\"]`, $productItems);\n                        $productItems.prepend($elementToMove);\n                    });\n                    $productItems.children().slice(4).hide();\n                },\n\n                error: function() {\n                    console.error('Errore durante la richiesta AJAX');\n                }\n            });\n        }\n    });\n});\n","js/catalog-add-to-cart.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\ndefine([\n    'jquery',\n    'mage/translate',\n    'underscore',\n    'Magento_Catalog/js/product/view/product-ids-resolver',\n    'Magento_Catalog/js/product/view/product-info-resolver',\n    'jquery-ui-modules/widget'\n], function ($, $t, _, idsResolver, productInfoResolver) {\n    'use strict';\n\n    $.widget('mage.catalogAddToCart', {\n        options: {\n            processStart: null,\n            processStop: null,\n            bindSubmit: true,\n            minicartSelector: '[data-block=\"minicart\"]',\n            messagesSelector: '[data-placeholder=\"messages\"]',\n            productStatusSelector: '.stock.available',\n            addToCartButtonSelector: '.action.tocart',\n            addToCartButtonDisabledClass: 'disabled',\n            addToCartButtonTextWhileAdding: '',\n            addToCartButtonTextAdded: '',\n            addToCartButtonTextDefault: '',\n            productInfoResolver: productInfoResolver\n        },\n\n        /** @inheritdoc */\n        _create: function () {\n            if (this.options.bindSubmit) {\n                this._bindSubmit();\n            }\n            $(this.options.addToCartButtonSelector).prop('disabled', false);\n        },\n\n        /**\n         * @private\n         */\n        _bindSubmit: function () {\n            var self = this;\n\n            if (this.element.data('catalog-addtocart-initialized')) {\n                return;\n            }\n\n            this.element.data('catalog-addtocart-initialized', 1);\n            this.element.on('submit', function (e) {\n                e.preventDefault();\n                self.submitForm($(this));\n            });\n        },\n\n        /**\n         * @private\n         */\n        _redirect: function (url) {\n            var urlParts, locationParts, forceReload;\n\n            urlParts = url.split('#');\n            locationParts = window.location.href.split('#');\n            forceReload = urlParts[0] === locationParts[0];\n\n            window.location.assign(url);\n\n            if (forceReload) {\n                window.location.reload();\n            }\n        },\n\n        /**\n         * @return {Boolean}\n         */\n        isLoaderEnabled: function () {\n            return this.options.processStart && this.options.processStop;\n        },\n\n        /**\n         * Handler for the form 'submit' event\n         *\n         * @param {jQuery} form\n         */\n        submitForm: function (form) {\n            this.ajaxSubmit(form);\n        },\n\n        /**\n         * @param {jQuery} form\n         */\n        ajaxSubmit: function (form) {\n            var self = this,\n                productIds = idsResolver(form),\n                productInfo = self.options.productInfoResolver(form),\n                formData;\n\n            $(self.options.minicartSelector).trigger('contentLoading');\n            self.disableAddToCartButton(form);\n            formData = new FormData(form[0]);\n\n            $.ajax({\n                url: form.prop('action'),\n                data: formData,\n                type: 'post',\n                dataType: 'json',\n                cache: false,\n                contentType: false,\n                processData: false,\n\n                /** @inheritdoc */\n                beforeSend: function () {\n                    if (self.isLoaderEnabled()) {\n                        $('body').trigger(self.options.processStart);\n                    }\n                },\n\n                /** @inheritdoc */\n                success: function (res) {\n\n                    var eventData, parameters;\n\n                    $(document).trigger('ajax:addToCart', {\n                        'sku': form.data().productSku,\n                        'productIds': productIds,\n                        'productInfo': productInfo,\n                        'form': form,\n                        'response': res\n                    });\n\n                    if (self.isLoaderEnabled()) {\n                        $('body').trigger(self.options.processStop);\n                    }\n\n                    if (res.backUrl) {\n                        eventData = {\n                            'form': form,\n                            'redirectParameters': []\n                        };\n                        // trigger global event, so other modules will be able add parameters to redirect url\n                        $('body').trigger('catalogCategoryAddToCartRedirect', eventData);\n\n                        if (eventData.redirectParameters.length > 0 &&\n                            window.location.href.split(/[?#]/)[0] === res.backUrl\n                        ) {\n                            parameters = res.backUrl.split('#');\n                            parameters.push(eventData.redirectParameters.join('&'));\n                            res.backUrl = parameters.join('#');\n                        }\n\n                        self._redirect(res.backUrl);\n\n                        return;\n                    }\n\n                    if (res.messages) {\n                        $(self.options.messagesSelector).html(res.messages);\n                    }\n\n                    if (res.minicart) {\n                        $(self.options.minicartSelector).replaceWith(res.minicart);\n                        $(self.options.minicartSelector).trigger('contentUpdated');\n                    }\n\n                    if (res.product && res.product.statusText) {\n                        $(self.options.productStatusSelector)\n                            .removeClass('available')\n                            .addClass('unavailable')\n                            .find('span')\n                            .html(res.product.statusText);\n                    }\n                    self.enableAddToCartButton(form);\n                },\n\n                /** @inheritdoc */\n                error: function (res) {\n                    $(document).trigger('ajax:addToCart:error', {\n                        'sku': form.data().productSku,\n                        'productIds': productIds,\n                        'productInfo': productInfo,\n                        'form': form,\n                        'response': res\n                    });\n                },\n\n                /** @inheritdoc */\n                complete: function (res) {\n                    if (res.state() === 'rejected') {\n                        location.reload();\n                    }\n                }\n            });\n        },\n\n        /**\n         * @param {String} form\n         */\n        disableAddToCartButton: function (form) {\n            var addToCartButtonTextWhileAdding = this.options.addToCartButtonTextWhileAdding || $t('Adding...'),\n                addToCartButton = $(form).find(this.options.addToCartButtonSelector);\n\n            addToCartButton.addClass(this.options.addToCartButtonDisabledClass);\n            addToCartButton.find('span').text(addToCartButtonTextWhileAdding);\n            addToCartButton.prop('title', addToCartButtonTextWhileAdding);\n        },\n\n        /**\n         * @param {String} form\n         */\n        enableAddToCartButton: function (form) {\n            var addToCartButtonTextAdded = this.options.addToCartButtonTextAdded || $t('Added'),\n                self = this,\n                addToCartButton = $(form).find(this.options.addToCartButtonSelector);\n\n            addToCartButton.find('span').text(addToCartButtonTextAdded);\n            addToCartButton.prop('title', addToCartButtonTextAdded);\n\n            setTimeout(function () {\n                var addToCartButtonTextDefault = self.options.addToCartButtonTextDefault || $t('Buy');\n\n                addToCartButton.removeClass(self.options.addToCartButtonDisabledClass);\n                addToCartButton.find('span').text(addToCartButtonTextDefault);\n                addToCartButton.prop('title', addToCartButtonTextDefault);\n            }, 1000);\n        }\n    });\n\n    return $.mage.catalogAddToCart;\n});\n","js/menu.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\ndefine([\n    'jquery',\n    'matchMedia',\n    'jquery-ui-modules/menu',\n    'mage/translate'\n], function ($, mediaCheck) {\n    'use strict';\n    /**\n     * Menu Widget - this widget is a wrapper for the jQuery UI Menu\n     */\n    $.widget('mage.menu', $.ui.menu, {\n        options: {\n            responsive: false,\n            expanded: false,\n            showDelay: 42,\n            hideDelay: 300,\n            delay: 0,\n            mediaBreakpoint: '(max-width: 768px)'\n        },\n\n        /**\n         * @private\n         */\n        _create: function () {\n            var self = this;\n\n            this.delay = this.options.delay;\n\n            this._super();\n            $(window).on('resize', function () {\n                self.element.find('.submenu-reverse').removeClass('submenu-reverse');\n            });\n        },\n\n        /**\n         * @private\n         */\n        _init: function () {\n            this._super();\n\n            if (this.options.expanded === true) {\n                this.isExpanded();\n            }\n\n            if (this.options.responsive === true) {\n                this._toggleDesktopMode();\n                mediaCheck({\n                    media: this.options.mediaBreakpoint,\n                    entry: $.proxy(function () {\n                        this._toggleMobileMode();\n                    }, this),\n                    exit: $.proxy(function () {\n                        this._toggleDesktopMode();\n                    }, this)\n                });\n            }\n\n            this._assignControls()._listen();\n            this._setActiveMenu();\n        },\n\n        /**\n         * @return {Object}\n         * @private\n         */\n        _assignControls: function () {\n            this.controls = {\n                toggleBtn: $('[data-action=\"toggle-nav\"]')\n            };\n\n            return this;\n        },\n\n        /**\n         * @private\n         */\n        _listen: function () {\n            var controls = this.controls,\n                toggle = this.toggle;\n\n            controls.toggleBtn.off('click');\n            controls.toggleBtn.on('click', toggle.bind(this));\n        },\n\n        /**\n         * Toggle.\n         */\n        toggle: function () {\n            var html = $('html');\n\n            if (html.hasClass('nav-open')) {\n                html.removeClass('nav-open');\n                setTimeout(function () {\n                    html.removeClass('nav-before-open');\n                }, this.options.hideDelay);\n            } else {\n                html.addClass('nav-before-open');\n                setTimeout(function () {\n                    html.addClass('nav-open');\n                }, this.options.showDelay);\n            }\n        },\n\n        /**\n         * Tries to figure out the active category for current page and add appropriate classes:\n         *  - 'active' class for active category\n         *  - 'has-active' class for all parents of active category\n         *\n         *  First, checks whether current URL is URL of category page,\n         *  otherwise tries to retrieve category URL in case of current URL is product view page URL\n         *  which has category tree path in it.\n         *\n         * @return void\n         * @private\n         */\n        _setActiveMenu: function () {\n            var currentUrl = window.location.href.split('?')[0];\n\n            if (!this._setActiveMenuForCategory(currentUrl)) {\n                this._setActiveMenuForProduct(currentUrl);\n            }\n        },\n\n        /**\n         * Looks for category with provided URL and adds 'active' CSS class to it if it was not set before.\n         * If menu item has parent categories, sets 'has-active' class to all af them.\n         *\n         * @param {String} url - possible category URL\n         * @returns {Boolean} - true if active category was founded by provided URL, otherwise return false\n         * @private\n         */\n        _setActiveMenuForCategory: function (url) {\n            var activeCategoryLink = this.element.find('a[href=\"' + url + '\"]'),\n                classes,\n                classNav;\n\n            if (!activeCategoryLink || !activeCategoryLink.hasClass('ui-menu-item-wrapper')) {\n\n                //category was not found by provided URL\n                return false;\n            } else if (!activeCategoryLink.parent().hasClass('active')) {\n                activeCategoryLink.parent().addClass('active');\n                classes = activeCategoryLink.parent().attr('class');\n                classNav = classes.match(/(nav\\-)[0-9]+(\\-[0-9]+)+/gi);\n\n                if (classNav) {\n                    this._setActiveParent(classNav[0]);\n                }\n            }\n\n            return true;\n        },\n\n        /**\n         * Sets 'has-active' CSS class to all parent categories which have part of provided class in childClassName\n         *\n         * @example\n         *  childClassName - 'nav-1-2-3'\n         *  CSS class 'has-active' will be added to categories have 'nav-1-2' and 'nav-1' classes\n         *\n         * @param {String} childClassName - Class name of active category <li> element\n         * @return void\n         * @private\n         */\n        _setActiveParent: function (childClassName) {\n            var parentElement,\n                parentClass = childClassName.substr(0, childClassName.lastIndexOf('-'));\n\n            if (parentClass.lastIndexOf('-') !== -1) {\n                parentElement = this.element.find('.' + parentClass);\n\n                if (parentElement) {\n                    parentElement.addClass('has-active');\n                }\n                this._setActiveParent(parentClass);\n            }\n        },\n\n        /**\n         * Tries to retrieve category URL from current URL and mark this category as active\n         * @see _setActiveMenuForCategory(url)\n         *\n         * @example\n         *  currentUrl - http://magento.com/category1/category12/product.html,\n         *  category URLs has extensions .phtml - http://magento.com/category1.phtml\n         *  method sets active category which has URL http://magento.com/category1/category12.phtml\n         *\n         * @param {String} currentUrl - current page URL without parameters\n         * @return void\n         * @private\n         */\n        _setActiveMenuForProduct: function (currentUrl) {\n            var categoryUrlExtension,\n                lastUrlSection,\n                possibleCategoryUrl,\n                //retrieve first category URL to know what extension is used for category URLs\n                firstCategoryUrl = this.element.find('> li a').attr('href');\n\n            if (firstCategoryUrl) {\n                lastUrlSection = firstCategoryUrl.substr(firstCategoryUrl.lastIndexOf('/'));\n                categoryUrlExtension = lastUrlSection.lastIndexOf('.') !== -1 ?\n                    lastUrlSection.substr(lastUrlSection.lastIndexOf('.')) : '';\n\n                possibleCategoryUrl = currentUrl.substr(0, currentUrl.lastIndexOf('/')) + categoryUrlExtension;\n                this._setActiveMenuForCategory(possibleCategoryUrl);\n            }\n        },\n\n        /**\n         * Add class for expanded option.\n         */\n        isExpanded: function () {\n            var subMenus = this.element.find(this.options.menus),\n                expandedMenus = subMenus.find(this.options.menus);\n\n            expandedMenus.addClass('expanded');\n        },\n\n        /**\n         * @param {jQuery.Event} event\n         * @private\n         */\n        _activate: function (event) {\n            window.location.href = this.active.find('> a').attr('href');\n            this.collapseAll(event);\n        },\n\n        /**\n         * @param {jQuery.Event} event\n         * @private\n         */\n        _keydown: function (event) {\n            var match, prev, character, skip, regex,\n                preventDefault = true;\n\n            /* eslint-disable max-depth */\n            /**\n             * @param {String} value\n             */\n            function escape(value) {\n                return value.replace(/[\\-\\[\\]{}()*+?.,\\\\\\^$|#\\s]/g, '\\\\$&');\n            }\n\n            if (this.active.closest(this.options.menus).attr('aria-expanded') != 'true') { //eslint-disable-line eqeqeq\n\n                switch (event.keyCode) {\n                    case $.ui.keyCode.PAGE_UP:\n                        this.previousPage(event);\n                        break;\n\n                    case $.ui.keyCode.PAGE_DOWN:\n                        this.nextPage(event);\n                        break;\n\n                    case $.ui.keyCode.HOME:\n                        this._move('first', 'first', event);\n                        break;\n\n                    case $.ui.keyCode.END:\n                        this._move('last', 'last', event);\n                        break;\n\n                    case $.ui.keyCode.UP:\n                        this.previous(event);\n                        break;\n\n                    case $.ui.keyCode.DOWN:\n                        if (this.active && !this.active.is('.ui-state-disabled')) {\n                            this.expand(event);\n                        }\n                        break;\n\n                    case $.ui.keyCode.LEFT:\n                        this.previous(event);\n                        break;\n\n                    case $.ui.keyCode.RIGHT:\n                        this.next(event);\n                        break;\n\n                    case $.ui.keyCode.ENTER:\n                    case $.ui.keyCode.SPACE:\n                        this._activate(event);\n                        break;\n\n                    case $.ui.keyCode.ESCAPE:\n                        this.collapse(event);\n                        break;\n                    default:\n                        preventDefault = false;\n                        prev = this.previousFilter || '';\n                        character = String.fromCharCode(event.keyCode);\n                        skip = false;\n\n                        clearTimeout(this.filterTimer);\n\n                        if (character === prev) {\n                            skip = true;\n                        } else {\n                            character = prev + character;\n                        }\n\n                        regex = new RegExp('^' + escape(character), 'i');\n                        match = this.activeMenu.children('.ui-menu-item').filter(function () {\n                            return regex.test($(this).children('a').text());\n                        });\n                        match = skip && match.index(this.active.next()) !== -1 ?\n                            this.active.nextAll('.ui-menu-item') :\n                            match;\n\n                        // If no matches on the current filter, reset to the last character pressed\n                        // to move down the menu to the first item that starts with that character\n                        if (!match.length) {\n                            character = String.fromCharCode(event.keyCode);\n                            regex = new RegExp('^' + escape(character), 'i');\n                            match = this.activeMenu.children('.ui-menu-item').filter(function () {\n                                return regex.test($(this).children('a').text());\n                            });\n                        }\n\n                        if (match.length) {\n                            this.focus(event, match);\n\n                            if (match.length > 1) {\n                                this.previousFilter = character;\n                                this.filterTimer = this._delay(function () {\n                                    delete this.previousFilter;\n                                }, 1000);\n                            } else {\n                                delete this.previousFilter;\n                            }\n                        } else {\n                            delete this.previousFilter;\n                        }\n                }\n            } else {\n                switch (event.keyCode) {\n                    case $.ui.keyCode.DOWN:\n                        this.next(event);\n                        break;\n\n                    case $.ui.keyCode.UP:\n                        this.previous(event);\n                        break;\n\n                    case $.ui.keyCode.RIGHT:\n                        if (this.active && !this.active.is('.ui-state-disabled')) {\n                            this.expand(event);\n                        }\n                        break;\n\n                    case $.ui.keyCode.ENTER:\n                    case $.ui.keyCode.SPACE:\n                        this._activate(event);\n                        break;\n\n                    case $.ui.keyCode.LEFT:\n                    case $.ui.keyCode.ESCAPE:\n                        this.collapse(event);\n                        break;\n                    default:\n                        preventDefault = false;\n                        prev = this.previousFilter || '';\n                        character = String.fromCharCode(event.keyCode);\n                        skip = false;\n\n                        clearTimeout(this.filterTimer);\n\n                        if (character === prev) {\n                            skip = true;\n                        } else {\n                            character = prev + character;\n                        }\n\n                        regex = new RegExp('^' + escape(character), 'i');\n                        match = this.activeMenu.children('.ui-menu-item').filter(function () {\n                            return regex.test($(this).children('a').text());\n                        });\n                        match = skip && match.index(this.active.next()) !== -1 ?\n                            this.active.nextAll('.ui-menu-item') :\n                            match;\n\n                        // If no matches on the current filter, reset to the last character pressed\n                        // to move down the menu to the first item that starts with that character\n                        if (!match.length) {\n                            character = String.fromCharCode(event.keyCode);\n                            regex = new RegExp('^' + escape(character), 'i');\n                            match = this.activeMenu.children('.ui-menu-item').filter(function () {\n                                return regex.test($(this).children('a').text());\n                            });\n                        }\n\n                        if (match.length) {\n                            this.focus(event, match);\n\n                            if (match.length > 1) {\n                                this.previousFilter = character;\n                                this.filterTimer = this._delay(function () {\n                                    delete this.previousFilter;\n                                }, 1000);\n                            } else {\n                                delete this.previousFilter;\n                            }\n                        } else {\n                            delete this.previousFilter;\n                        }\n                }\n            }\n\n            /* eslint-enable max-depth */\n            if (preventDefault) {\n                event.preventDefault();\n            }\n        },\n\n        /**\n         * @private\n         */\n        _toggleMobileMode: function () {\n            var subMenus;\n\n            $(this.element).off('mouseenter mouseleave');\n            this._on({\n\n                /**\n                 * @param {jQuery.Event} event\n                 */\n                'click .ui-menu-item:has(a)': function (event) {\n                    var target;\n\n                    event.preventDefault();\n                    target = $(event.target).closest('.ui-menu-item');\n                    target.get(0).scrollIntoView();\n\n                    if (!target.hasClass('level-top') || !target.has('.ui-menu').length) {\n                        window.location.href = target.find('> a').attr('href');\n                    }\n                },\n\n                /**\n                 * @param {jQuery.Event} event\n                 */\n                'click .ui-menu-item:has(.ui-state-active)': function (event) {\n                    this.collapseAll(event, true);\n                }\n            });\n\n            subMenus = this.element.find('.level-top');\n            $.each(subMenus, $.proxy(function (index, item) {\n                var category = $(item).find('> a span').not('.ui-menu-icon').text(),\n                    categoryUrl = $(item).find('> a').attr('href'),\n                    menu = $(item).find('> .ui-menu');\n\n                this.categoryLink = $('<a>')\n                    .attr('href', categoryUrl)\n                    .text($.mage.__('All %1').replace('%1', category));\n\n                this.categoryParent = $('<li>')\n                    .addClass('ui-menu-item all-category')\n                    .html(this.categoryLink);\n\n                if (menu.find('.all-category').length === 0) {\n                    menu.prepend(this.categoryParent);\n                }\n\n            }, this));\n        },\n\n        /**\n         * @private\n         */\n        _toggleDesktopMode: function () {\n            var categoryParent, html;\n\n            $(this.element).off('click mousedown mouseenter mouseleave');\n            this._on({\n\n                /**\n                 * Prevent focus from sticking to links inside menu after clicking\n                 * them (focus should always stay on UL during navigation).\n                 */\n                'mousedown .ui-menu-item > a': function (event) {\n                    event.preventDefault();\n                },\n\n                /**\n                 * Prevent focus from sticking to links inside menu after clicking\n                 * them (focus should always stay on UL during navigation).\n                 */\n                'click .ui-state-disabled > a': function (event) {\n                    event.preventDefault();\n                },\n\n                /**\n                 * @param {jQuer.Event} event\n                 */\n                'click .ui-menu-item:has(a)': function (event) {\n                    var target = $(event.target).closest('.ui-menu-item');\n\n                    if (!this.mouseHandled && target.not('.ui-state-disabled').length) {\n                        this.select(event);\n\n                        // Only set the mouseHandled flag if the event will bubble, see #9469.\n                        if (!event.isPropagationStopped()) {\n                            this.mouseHandled = true;\n                        }\n\n                        // Open submenu on click\n                        if (target.has('.ui-menu').length) {\n                            this.expand(event);\n                        } else if (!this.element.is(':focus') &&\n                            $(this.document[0].activeElement).closest('.ui-menu').length\n                        ) {\n                            // Redirect focus to the menu\n                            this.element.trigger('focus', [true]);\n\n                            // If the active item is on the top level, let it stay active.\n                            // Otherwise, blur the active item since it is no longer visible.\n                            if (this.active && this.active.parents('.ui-menu').length === 1) { //eslint-disable-line\n                                clearTimeout(this.timer);\n                            }\n                        }\n                    }\n                },\n\n                /**\n                 * @param {jQuery.Event} event\n                 */\n                'mouseenter .ui-menu-item': function (event) {\n                    var target = $(event.currentTarget),\n                        submenu = this.options.menus,\n                        ulElement,\n                        ulElementWidth,\n                        width,\n                        targetPageX,\n                        rightBound;\n\n                    if (target.has(submenu)) {\n                        ulElement = target.find(submenu);\n                        ulElementWidth = ulElement.outerWidth(true);\n                        width = target.outerWidth() * 2;\n                        targetPageX = target.offset().left;\n                        rightBound = $(window).width();\n\n                        if (ulElementWidth + width + targetPageX > rightBound) {\n                            ulElement.addClass('submenu-reverse');\n                        }\n\n                        if (targetPageX - ulElementWidth < 0) {\n                            ulElement.removeClass('submenu-reverse');\n                        }\n                    }\n\n                    // Remove ui-state-active class from siblings of the newly focused menu item\n                    // to avoid a jump caused by adjacent elements both having a class with a border\n                    target.siblings().children('.ui-state-active').removeClass('ui-state-active');\n                    this.focus(event, target);\n                },\n\n                /**\n                 * @param {jQuery.Event} event\n                 */\n                'mouseleave': function (event) {\n                    this.collapseAll(event, true);\n                },\n\n                /**\n                 * Mouse leave.\n                 */\n                'mouseleave .ui-menu': 'collapseAll'\n            });\n\n            categoryParent = this.element.find('.all-category');\n            html = $('html');\n\n            categoryParent.remove();\n\n            if (html.hasClass('nav-open')) {\n                html.removeClass('nav-open');\n                setTimeout(function () {\n                    html.removeClass('nav-before-open');\n                }, this.options.hideDelay);\n            }\n        },\n\n        /**\n         * @param {*} handler\n         * @param {Number} delay\n         * @return {Number}\n         * @private\n         */\n        _delay: function (handler, delay) {\n            var instance = this,\n\n                /**\n                 * @return {*}\n                 */\n                handlerProxy = function () {\n                    return (typeof handler === 'string' ? instance[handler] : handler).apply(instance, arguments);\n                };\n\n            return setTimeout(handlerProxy, delay || 0);\n        },\n\n        /**\n         * @param {jQuery.Event} event\n         */\n        expand: function (event) {\n            var newItem = this.active &&\n                this.active\n                    .children('.ui-menu')\n                    .children('.ui-menu-item')\n                    .first();\n\n            if (newItem && newItem.length) {\n                if (newItem.closest('.ui-menu').is(':visible') &&\n                    newItem.closest('.ui-menu').has('.all-categories')\n                ) {\n                    return;\n                }\n\n                // remove the active state class from the siblings\n                this.active.siblings().children('.ui-state-active').removeClass('ui-state-active');\n\n                this._open(newItem.parent());\n\n                // Delay so Firefox will not hide activedescendant change in expanding submenu from AT\n                this._delay(function () {\n                    this.focus(event, newItem);\n                });\n            }\n        },\n\n        /**\n         * @param {jQuery.Event} event\n         */\n        select: function (event) {\n            var ui;\n\n            this.active = this.active || $(event.target).closest('.ui-menu-item');\n\n            if (this.active.is('.all-category')) {\n                this.active = $(event.target).closest('.ui-menu-item');\n            }\n            ui = {\n                item: this.active\n            };\n\n            if (!this.active.has('.ui-menu').length) {\n                this.collapseAll(event, true);\n            }\n            this._trigger('select', event, ui);\n        }\n    });\n\n    $.widget('mage.navigation', $.mage.menu, {\n        options: {\n            responsiveAction: 'wrap', //option for responsive handling\n            maxItems: null, //option to set max number of menu items\n            container: '#menu', //container to check against navigation length\n            moreText: $.mage.__('more'),\n            breakpoint: 768\n        },\n\n        /**\n         * @private\n         */\n        _init: function () {\n            var that, responsive;\n\n            this._super();\n\n            that = this;\n            responsive = this.options.responsiveAction;\n\n            this.element\n                .addClass('ui-menu-responsive')\n                .attr('responsive', 'main');\n\n            this.setupMoreMenu();\n            this.setMaxItems();\n\n            //check responsive option\n            if (responsive == 'onResize') { //eslint-disable-line eqeqeq\n                $(window).on('resize', function () {\n                    if ($(window).width() > that.options.breakpoint) {\n                        that._responsive();\n                        $('[responsive=more]').show();\n                    } else {\n                        that.element.children().show();\n                        $('[responsive=more]').hide();\n                    }\n                });\n            } else if (responsive == 'onReload') { //eslint-disable-line eqeqeq\n                this._responsive();\n            }\n        },\n\n        /**\n         * Setup more menu.\n         */\n        setupMoreMenu: function () {\n            var moreListItems = this.element.children().clone(),\n                moreLink = $('<a>' + this.options.moreText + '</a>');\n\n            moreListItems.hide();\n\n            moreLink.attr('href', '#');\n\n            this.moreItemsList = $('<ul>')\n                .append(moreListItems);\n\n            this.moreListContainer = $('<li>')\n                .append(moreLink)\n                .append(this.moreItemsList);\n\n            this.responsiveMenu = $('<ul>')\n                .addClass('ui-menu-more')\n                .attr('responsive', 'more')\n                .append(this.moreListContainer)\n                .menu({\n                    position: {\n                        my: 'right top',\n                        at: 'right bottom'\n                    }\n                })\n                .insertAfter(this.element);\n        },\n\n        /**\n         * @private\n         */\n        _responsive: function () {\n            var container = $(this.options.container),\n                containerSize = container.width(),\n                width = 0,\n                items = this.element.children('li'),\n                more = $('.ui-menu-more > li > ul > li a');\n\n            items = items.map(function () {\n                var item = {};\n\n                item.item = $(this);\n                item.itemSize = $(this).outerWidth();\n\n                return item;\n            });\n\n            $.each(items, function (index) {\n                var itemText = items[index].item\n                    .find('a:first')\n                    .text();\n\n                width += parseInt(items[index].itemSize, null); //eslint-disable-line radix\n\n                if (width < containerSize) {\n                    items[index].item.show();\n\n                    more.each(function () {\n                        var text = $(this).text();\n\n                        if (text === itemText) {\n                            $(this).parent().hide();\n                        }\n                    });\n                } else if (width > containerSize) {\n                    items[index].item.hide();\n\n                    more.each(function () {\n                        var text = $(this).text();\n\n                        if (text === itemText) {\n                            $(this).parent().show();\n                        }\n                    });\n                }\n            });\n        },\n\n        /**\n         * Set max items.\n         */\n        setMaxItems: function () {\n            var items = this.element.children('li'),\n                itemsCount = items.length,\n                maxItems = this.options.maxItems,\n                overflow = itemsCount - maxItems,\n                overflowItems = items.slice(overflow);\n\n            overflowItems.hide();\n\n            overflowItems.each(function () {\n                var itemText = $(this).find('a:first').text();\n\n                $(this).hide();\n\n                $('.ui-menu-more > li > ul > li a').each(function () {\n                    var text = $(this).text();\n\n                    if (text === itemText) {\n                        $(this).parent().show();\n                    }\n                });\n            });\n        }\n    });\n\n    return {\n        menu: $.mage.menu,\n        navigation: $.mage.navigation\n    };\n});\n","js/navigation-menu.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n/**\n * @deprecated\n * @see lib/web/mage/menu.js\n */\ndefine([\n    'jquery',\n    'matchMedia',\n    'mage/template',\n    'mage/dropdowns',\n    'mage/terms'\n], function ($, mediaCheck, mageTemplate) {\n    'use strict';\n\n    $.widget('mage.navigationMenu', {\n        options: {\n            itemsContainer: '> ul',\n            topLevel: 'li.level0',\n            topLevelSubmenu: '> .submenu',\n            topLevelHoverClass: 'hover',\n            expandedTopLevel: '.more',\n            hoverInTimeout: 300,\n            hoverOutTimeout: 500,\n            submenuAnimationSpeed: 200,\n            collapsable: true,\n            collapsableDropdownTemplate:\n                '<script type=\"text/x-magento-template\">' +\n                    '<li class=\"level0 level-top more parent\">' +\n                        '<div class=\"submenu\">' +\n                            '<ul><%= elems %></ul>' +\n                        '</div>' +\n                    '</li>' +\n                '</script>'\n        },\n\n        /** @inheritdoc */\n        _create: function () {\n            this.itemsContainer = $(this.options.itemsContainer, this.element);\n            this.topLevel = $(this.options.topLevel, this.element);\n            this.topLevelSubmenu = $(this.options.topLevelSubmenu, this.topLevel);\n\n            this._bind();\n        },\n\n        /**\n         * @private\n         */\n        _init: function () {\n            if (this.options.collapsable) {\n                setTimeout($.proxy(function () {\n                    this._checkToCollapseOrExpand();\n                }, this), 100);\n            }\n        },\n\n        /**\n         * @private\n         */\n        _bind: function () {\n            this._on({\n                /**\n                 * @param {jQuery.Event} e\n                 */\n                'mouseenter > ul > li.level0': function (e) {\n                    if (!this.entered) { // fix IE bug with 'mouseenter' event\n                        this.timeoutId && clearTimeout(this.timeoutId);\n                        this.timeoutId = setTimeout($.proxy(function () {\n                            this._openSubmenu(e);\n                        }, this), this.options.hoverInTimeout);\n                        this.entered = true;\n                    }\n                },\n\n                /**\n                 * @param {jQuery.Event} e\n                 */\n                'mouseleave > ul > li.level0': function (e) {\n                    this.entered = null;\n\n                    this.timeoutId && clearTimeout(this.timeoutId);\n                    this.timeoutId = setTimeout($.proxy(function () {\n                        this._closeSubmenu(e.currentTarget);\n                    }, this), this.options.hoverOutTimeout);\n                },\n\n                /**\n                 * @param {jQuert.Event} e\n                 */\n                'click': function (e) {\n                    e.stopPropagation();\n                }\n            });\n\n            $(document)\n                .on('click.hideMenu', $.proxy(function () {\n                    var isOpened = this.topLevel.filter(function () {\n                        return $(this).data('opened');\n                    });\n\n                    if (isOpened) {\n                        this._closeSubmenu(null, false);\n                    }\n                }, this));\n\n            $(window)\n                .on('resize', $.proxy(function () {\n                    this.timeoutOnResize && clearTimeout(this.timeoutOnResize);\n                    this.timeoutOnResize = setTimeout($.proxy(function () {\n                        if (this.options.collapsable) {\n                            if ($(this.options.expandedTopLevel, this.element).length) {\n                                this._expandMenu();\n                            }\n                            this._checkToCollapseOrExpand();\n                        }\n                    }, this), 300);\n                }, this));\n        },\n\n        /**\n         * @param {jQuery.Event} e\n         * @private\n         */\n        _openSubmenu: function (e) {\n            var menuItem = e.currentTarget;\n\n            if (!$(menuItem).data('opened')) {\n                this._closeSubmenu(menuItem, true, true);\n\n                $(this.options.topLevelSubmenu, menuItem)\n                    .slideDown(this.options.submenuAnimationSpeed, $.proxy(function () {\n                        $(menuItem).addClass(this.options.topLevelHoverClass);\n                        $(menuItem).data('opened', true);\n                    }, this));\n            } else if ($(e.target).closest(this.options.topLevel)) {\n                $(e.target)\n                    .addClass(this.options.topLevelHoverClass)\n                    .siblings(this.options.topLevel)\n                        .removeClass(this.options.topLevelHoverClass);\n            }\n        },\n\n        /**\n         * @param {*} menuItem\n         * @param {*} excludeCurrent\n         * @param {*} fast\n         * @private\n         */\n        _closeSubmenu: function (menuItem, excludeCurrent, fast) {\n            var topLevel = $(this.options.topLevel, this.element),\n                activeSubmenu = $(this.options.topLevelSubmenu, menuItem || null);\n\n            $(this.options.topLevelSubmenu, topLevel)\n                .filter(function () {\n                    return excludeCurrent ? $(this).not(activeSubmenu) : true;\n                })\n                .slideUp(fast ? 0 : this.options.submenuAnimationSpeed);\n\n            topLevel\n                .removeClass(this.options.topLevelHoverClass)\n                .data('opened', false);\n        },\n\n        /**\n         * @private\n         */\n        _checkToCollapseOrExpand: function () {\n            var navWidth, totalWidth, startCollapseIndex;\n\n            if ($('html').hasClass('lt-640') || $('html').hasClass('w-640')) {\n                return;\n            }\n\n            navWidth = this.itemsContainer.width();\n            totalWidth = 0;\n            startCollapseIndex = 0;\n\n            $.each($(this.options.topLevel, this.element), function (index, item) {\n                totalWidth += $(item).outerWidth(true);\n\n                if (totalWidth > navWidth && !startCollapseIndex) {\n                    startCollapseIndex = index - 2;\n                }\n            });\n\n            this[startCollapseIndex ? '_collapseMenu' : '_expandMenu'](startCollapseIndex);\n        },\n\n        /**\n         * @param {*} startCollapseIndex\n         * @private\n         */\n        _collapseMenu: function (startCollapseIndex) {\n            this.elemsToCollapse = this.topLevel.filter(function (index) {\n                return index > startCollapseIndex;\n            });\n            this.elemsToCollapseClone = $('<div></div>').append(this.elemsToCollapse.clone()).html();\n\n            this.collapsableDropdown = $(\n                mageTemplate(\n                    this.options.collapsableDropdownTemplate,\n                    {\n                        elems: this.elemsToCollapseClone\n                    }\n                )\n            );\n\n            this.itemsContainer.append(this.collapsableDropdown);\n            this.elemsToCollapse.detach();\n        },\n\n        /**\n         * @private\n         */\n        _expandMenu: function () {\n            this.elemsToCollapse && this.elemsToCollapse.appendTo(this.itemsContainer);\n            this.collapsableDropdown && this.collapsableDropdown.remove();\n        },\n\n        /**\n         * @private\n         */\n        _destroy: function () {\n            this._expandMenu();\n        }\n    });\n\n    /*\n     * Provides \"Continium\" effect for submenu\n     * */\n    $.widget('mage.navigationMenu', $.mage.navigationMenu, {\n        options: {\n            parentLevel: '> ul > li.level0',\n            submenuAnimationSpeed: 150,\n            submenuContiniumEffect: false\n        },\n\n        /**\n         * @private\n         */\n        _init: function () {\n            this._super();\n            this._applySubmenuStyles();\n        },\n\n        /**\n         * @private\n         */\n        _applySubmenuStyles: function () {\n            $(this.options.topLevelSubmenu, $(this.options.topLevel, this.element))\n                .removeAttr('style');\n\n            $(this.options.topLevelSubmenu, $(this.options.parentLevel, this.element))\n                .css({\n                    display: 'block',\n                    height: 0,\n                    overflow: 'hidden'\n                });\n        },\n\n        /**\n         * @param {jQuery.Event} e\n         * @private\n         */\n        _openSubmenu: function (e) {\n            var menuItem = e.currentTarget,\n                submenu = $(this.options.topLevelSubmenu, menuItem),\n                openedItems = $(this.options.topLevel, this.element).filter(function () {\n                    return $(this).data('opened');\n                });\n\n            if (submenu.length) {\n                this.heightToAnimate = $(this.options.itemsContainer, submenu).outerHeight(true);\n\n                if (openedItems.length) {\n                    this._closeSubmenu(menuItem, true, this.heightToAnimate, $.proxy(function () {\n                        submenu.css({\n                            height: 'auto'\n                        });\n                        $(menuItem)\n                            .addClass(this.options.topLevelHoverClass);\n                    }, this), e);\n                } else {\n                    submenu.animate({\n                        height: this.heightToAnimate\n                    }, this.options.submenuAnimationSpeed, $.proxy(function () {\n                        $(menuItem)\n                            .addClass(this.options.topLevelHoverClass);\n                    }, this));\n                }\n\n                $(menuItem)\n                    .data('opened', true);\n            } else {\n                this._closeSubmenu(menuItem);\n            }\n        },\n\n        /**\n         * @param {*} menuItem\n         * @param {*} excludeCurrent\n         * @param {*} heightToAnimate\n         * @param {Function} callback\n         * @private\n         */\n        _closeSubmenu: function (menuItem, excludeCurrent, heightToAnimate, callback) {\n            var topLevel = $(this.options.topLevel, this.itemsContainer),\n                prevOpenedItem, prevOpenedSubmenu;\n\n            if (!excludeCurrent) {\n                $(this.options.topLevelSubmenu, $(this.options.parentLevel, this.element))\n                    .animate({\n                        height: 0\n                    });\n\n                topLevel\n                    .data('opened', false)\n                    .removeClass(this.options.topLevelHoverClass);\n            } else {\n                prevOpenedItem = topLevel.filter(function () {\n                    return $(this).data('opened');\n                });\n                prevOpenedSubmenu = $(this.options.topLevelSubmenu, prevOpenedItem);\n\n                prevOpenedSubmenu.animate({\n                    height: heightToAnimate\n                }, this.options.submenuAnimationSpeed, 'linear', function () {\n                    $(this).css({\n                        height: 0\n                    });\n                    callback && callback();\n                });\n\n                prevOpenedItem\n                    .data('opened', false)\n                    .removeClass(this.options.topLevelHoverClass);\n            }\n        },\n\n        /**\n         * @private\n         */\n        _collapseMenu: function () {\n            this._superApply(arguments);\n            this._applySubmenuStyles();\n        }\n    });\n\n    //  Responsive menu\n    $.widget('mage.navigationMenu', $.mage.navigationMenu, {\n        options: {\n            responsive: false,\n            origNavPlaceholder: '.page-header',\n            mainContainer: 'body',\n            pageWrapper: '.page-wrapper',\n            openedMenuClass: 'opened',\n            toggleActionPlaceholder: '.block-search',\n            itemWithSubmenu: 'li.parent',\n            titleWithSubmenu: 'li.parent > a',\n            submenu: 'li.parent > .submenu',\n            toggleActionTemplate:\n                '<script type=\"text/x-magento-template\">' +\n                    '<span data-action=\"toggle-nav\" class=\"action toggle nav\">Toggle Nav</span>' +\n                '</script>',\n            submenuActionsTemplate:\n                '<script type=\"text/x-magento-template\">' +\n                    '<li class=\"action all\">' +\n                        '<a href=\"<%= categoryURL %>\"><span>All <%= category %></span></a>' +\n                    '</li>' +\n                '</script>',\n            navigationSectionsWrapperTemplate:\n                '<script type=\"text/x-magento-template\">' +\n                    '<dl class=\"navigation-tabs\" data-sections=\"tabs\">' +\n                    '</dl>' +\n                '</script>',\n            navigationItemWrapperTemplate:\n                '<script type=\"text/x-magento-template\">' +\n                    '<dt class=\"item title <% if (active) { %>active<% } %>\" data-section=\"title\">' +\n                        '<a class=\"switch\" data-toggle=\"switch\" href=\"#TODO\"><%= title %></a>' +\n                    '</dt>' +\n                    '<dd class=\"item content <% if (active) { %>active<%}%>\" data-section=\"content\">' +\n                    '</dd>' +\n                '</script>'\n        },\n\n        /**\n         * @private\n         */\n        _init: function () {\n            this._super();\n\n            this.mainContainer = $(this.options.mainContainer);\n            this.pageWrapper = $(this.options.pageWrapper);\n            this.toggleAction = $(mageTemplate(this.options.toggleActionTemplate, {}));\n\n            if (this.options.responsive) {\n                mediaCheck({\n                    media: '(min-width: 768px)',\n                    entry: $.proxy(function () {\n                        this._toggleDesktopMode();\n                    }, this),\n                    exit: $.proxy(function () {\n                        this._toggleMobileMode();\n                    }, this)\n                });\n            }\n        },\n\n        /**\n         * @private\n         */\n        _bind: function () {\n            this._super();\n            this._bindDocumentEvents();\n        },\n\n        /**\n         * @private\n         */\n        _bindDocumentEvents: function () {\n            if (!this.eventsBound) {\n                $(document)\n                    .on('click.toggleMenu', '.action.toggle.nav', $.proxy(function (e) {\n                        if ($(this.element).data('opened')) {\n                            this._hideMenu();\n                        } else {\n                            this._showMenu();\n                        }\n                        e.stopPropagation();\n                        this.mobileNav.scrollTop(0);\n                        this._fixedBackLink();\n                    }, this))\n                    .on('click.hideMenu', this.options.pageWrapper, $.proxy(function () {\n                        if ($(this.element).data('opened')) {\n                            this._hideMenu();\n                            this.mobileNav.scrollTop(0);\n                            this._fixedBackLink();\n                        }\n                    }, this))\n                    .on('click.showSubmenu', this.options.titleWithSubmenu, $.proxy(function (e) {\n                        this._showSubmenu(e);\n\n                        e.preventDefault();\n                        this.mobileNav.scrollTop(0);\n                        this._fixedBackLink();\n                    }, this))\n                    .on('click.hideSubmenu', '.action.back', $.proxy(function (e) {\n                        this._hideSubmenu(e);\n                        this.mobileNav.scrollTop(0);\n                        this._fixedBackLink();\n                    }, this));\n\n                this.eventsBound = true;\n            }\n        },\n\n        /**\n         * @private\n         */\n        _showMenu: function () {\n            $(this.element).data('opened', true);\n            this.mainContainer.add('html').addClass(this.options.openedMenuClass);\n        },\n\n        /**\n         * @private\n         */\n        _hideMenu: function () {\n            $(this.element).data('opened', false);\n            this.mainContainer.add('html').removeClass(this.options.openedMenuClass);\n        },\n\n        /**\n         * @param {jQuery.Event} e\n         * @private\n         */\n        _showSubmenu: function (e) {\n            var submenu;\n\n            $(e.currentTarget).addClass('action back');\n            submenu = $(e.currentTarget).siblings('.submenu');\n\n            submenu.addClass('opened');\n        },\n\n        /**\n         * @param {jQuery.Event} e\n         * @private\n         */\n        _hideSubmenu: function (e) {\n            var submenuSelector = '.submenu',\n                submenu = $(e.currentTarget).next(submenuSelector);\n\n            $(e.currentTarget).removeClass('action back');\n            submenu.removeClass('opened');\n        },\n\n        /**\n         * @private\n         */\n        _renderSubmenuActions: function () {\n            $.each(\n                $(this.options.itemWithSubmenu),\n                $.proxy(function (index, item) {\n                    var actions = $(mageTemplate(\n                            this.options.submenuActionsTemplate,\n                            {\n                                category: $('> a > span', item).text(),\n                                categoryURL: $('> a', item).attr('href')\n                            }\n                        )),\n                        submenu = $('> .submenu', item),\n                        items = $('> ul', submenu);\n\n                    items.prepend(actions);\n                }, this)\n            );\n        },\n\n        /**\n         * @private\n         */\n        _toggleMobileMode: function () {\n            this._expandMenu();\n\n            $(this.options.topLevelSubmenu, $(this.options.topLevel, this.element))\n                .removeAttr('style');\n\n            this.toggleAction.insertBefore(this.options.toggleActionPlaceholder);\n            this.mobileNav = $(this.element).detach().clone();\n            this.mainContainer.prepend(this.mobileNav);\n            this.mobileNav.find('> ul').addClass('nav');\n            this._insertExtraItems();\n            this._wrapItemsInSections();\n            this.mobileNav.scroll($.proxy(function () {\n                this._fixedBackLink();\n            }, this));\n\n            this._renderSubmenuActions();\n            this._bindDocumentEvents();\n        },\n\n        /**\n         * @private\n         */\n        _toggleDesktopMode: function () {\n            this.mobileNav && this.mobileNav.remove();\n            this.toggleAction.detach();\n            $(this.element).insertAfter(this.options.origNavPlaceholder);\n\n            $(document)\n                .off('click.toggleMenu', '.action.toggle.nav')\n                .off('click.hideMenu', this.options.pageWrapper)\n                .off('click.showSubmenu', this.options.titleWithSubmenu)\n                .off('click.hideSubmenu', '.action.back');\n\n            this.eventsBound = false;\n\n            this._applySubmenuStyles();\n        },\n\n        /**\n         * @private\n         */\n        _insertExtraItems: function () {\n            var settings, footerSettings, account;\n\n            if ($('.header.panel .switcher').length) {\n                settings = $('.header.panel .switcher')\n                    .clone()\n                    .addClass('settings');\n\n                this.mobileNav.prepend(settings);\n            }\n\n            if ($('.footer .switcher').length) {\n                footerSettings = $('.footer .switcher')\n                    .clone()\n                    .addClass('settings');\n\n                this.mobileNav.prepend(footerSettings);\n            }\n\n            if ($('.header.panel .header.links li').length) {\n                account = $('.header.panel > .header.links')\n                    .clone()\n                    .addClass('account');\n\n                this.mobileNav.prepend(account);\n            }\n        },\n\n        /**\n         * @private\n         */\n        _wrapItemsInSections: function () {\n            var account = $('> .account', this.mobileNav),\n                settings = $('> .settings', this.mobileNav),\n                nav = $('> .nav', this.mobileNav),\n                navigationSectionsWrapper = $(mageTemplate(this.options.navigationSectionsWrapperTemplate, {})),\n                navigationItemWrapper;\n\n            this.mobileNav.append(navigationSectionsWrapper);\n\n            if (nav.length) {\n                navigationItemWrapper = $(mageTemplate(this.options.navigationItemWrapperTemplate, {\n                    title: 'Menu'\n                }));\n                navigationSectionsWrapper.append(navigationItemWrapper);\n                navigationItemWrapper.eq(1).append(nav);\n            }\n\n            if (account.length) {\n                navigationItemWrapper = $(mageTemplate(this.options.navigationItemWrapperTemplate, {\n                    title: 'Account'\n                }));\n                navigationSectionsWrapper.append(navigationItemWrapper);\n                navigationItemWrapper.eq(1).append(account);\n            }\n\n            if (settings.length) {\n                navigationItemWrapper = $(\n                    mageTemplate(this.options.navigationItemWrapperTemplate, {\n                        title: 'Settings'\n                    })\n                );\n                navigationSectionsWrapper.append(navigationItemWrapper);\n                navigationItemWrapper.eq(1).append(settings);\n            }\n\n            navigationSectionsWrapper.addClass(\n                'navigation-tabs-' + navigationSectionsWrapper.find('[data-section=\"title\"]').length\n            );\n            navigationSectionsWrapper.terms();\n        },\n\n        /**\n         * @private\n         */\n        _fixedBackLink: function () {\n            var linksBack = this.mobileNav.find('.submenu .action.back'),\n                linkBack = this.mobileNav.find('.submenu.opened > ul > .action.back').last(),\n                subMenu, navOffset, linkBackHeight;\n\n            linksBack.removeClass('fixed');\n\n            if (linkBack.length) {\n                subMenu = linkBack.parent();\n                navOffset = this.mobileNav.find('.nav').position().top;\n                linkBackHeight = linkBack.height();\n\n                if (navOffset <= 0) {\n                    linkBack.addClass('fixed');\n                    subMenu.css({\n                        paddingTop: linkBackHeight\n                    });\n                } else {\n                    linkBack.removeClass('fixed');\n                    subMenu.css({\n                        paddingTop: 0\n                    });\n                }\n            }\n        }\n    });\n\n    return $.mage.navigationMenu;\n});\n","magnifier/magnifier.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\n(function ($) {\n    $.fn.magnify = function (options) {\n        'use strict';\n\n        var magnify = new Magnify($(this), options);\n\n        /* events must be tracked here */\n\n        /**\n         * Return that from _init function\n         *\n         */\n        return magnify;\n    };\n\n    function Magnify(element, options) {\n        var customUserOptions = options || {},\n            $box = $(element),\n            $thumb,\n            that = this,\n            largeWrapper = options.largeWrapper || '.magnifier-preview',\n            $magnifierPreview = $(largeWrapper);\n\n        curThumb = null,\n        magnifierOptions = {\n            x: 0,\n            y: 0,\n            w: 0,\n            h: 0,\n            lensW: 0,\n            lensH: 0,\n            lensBgX: 0,\n            lensBgY: 0,\n            largeW: 0,\n            largeH: 0,\n            largeL: 0,\n            largeT: 0,\n            zoom: 2,\n            zoomMin: 1.1,\n            zoomMax: 5,\n            mode: 'outside',\n            eventType: 'click',\n            status: 0,\n            zoomAttached: false,\n            zoomable: customUserOptions.zoomable !== undefined ?\n                customUserOptions.zoomable\n                : false,\n            onthumbenter: customUserOptions.onthumbenter !== undefined ?\n                customUserOptions.onthumbenter\n                : null,\n            onthumbmove: customUserOptions.onthumbmove !== undefined ?\n                customUserOptions.onthumbmove\n                : null,\n            onthumbleave: customUserOptions.onthumbleave !== undefined ?\n                customUserOptions.onthumbleave\n                : null,\n            onzoom: customUserOptions.onzoom !== undefined ?\n                customUserOptions.onzoom\n                : null\n        },\n        pos = {\n            t: 0,\n            l: 0,\n            x: 0,\n            y: 0\n        },\n        gId = 0,\n        status = 0,\n        curIdx = '',\n        curLens = null,\n        curLarge = null,\n        lensbg = customUserOptions.bg !== undefined ?\n            customUserOptions.lensbg\n            : true,\n        gZoom = customUserOptions.zoom !== undefined ?\n            customUserOptions.zoom\n            : magnifierOptions.zoom,\n        gZoomMin = customUserOptions.zoomMin !== undefined ?\n            customUserOptions.zoomMin\n            : magnifierOptions.zoomMin,\n        gZoomMax = customUserOptions.zoomMax !== undefined ?\n            customUserOptions.zoomMax\n            : magnifierOptions.zoomMax,\n        gMode = customUserOptions.mode || magnifierOptions.mode,\n        gEventType = customUserOptions.eventType || magnifierOptions.eventType,\n        data = {},\n        inBounds = false,\n        isOverThumb = false,\n        rate = 1,\n        paddingX = 0,\n        paddingY = 0,\n        enabled = true,\n        showWrapper = true;\n\n        var MagnifyCls = {\n            magnifyHidden: 'magnify-hidden',\n            magnifyOpaque: 'magnify-opaque',\n            magnifyFull: 'magnify-fullimage'\n        };\n\n        /**\n         * Update Lens positon on.\n         *\n         */\n        that.update = function () {\n            updateLensOnLoad();\n        };\n\n        /**\n         * Init new Magnifier\n         *\n         */\n        that.init = function () {\n            _init($box, options);\n        };\n\n        function _toBoolean(str) {\n            if (typeof str === 'string') {\n                if (str === 'true') {\n                    return true;\n                } else if (str === 'false' || '') {\n                    return false;\n                }\n                console.warn('Wrong type: can\\'t be transformed to Boolean');\n\n            } else if (typeof str === 'boolean') {\n                return str;\n            }\n        }\n\n        function createLens(thumb) {\n            if ($(thumb).siblings('.magnify-lens').length) {\n                return false;\n            }\n            var lens = $('<div class=\"magnify-lens magnify-hidden\" data-gallery-role=\"magnifier-zoom\"></div>');\n\n            $(thumb).parent().append(lens);\n        }\n\n        function updateLensOnLoad(idSelectorMainImg, thumb, largeImgInMagnifyLens, largeWrapper) {\n            var magnifyLensElement= $box.find('.magnify-lens'),\n                textWrapper;\n\n            if (data[idSelectorMainImg].status === 1) {\n                textWrapper = $('<div class=\"magnifier-loader-text\"></div>');\n                magnifyLensElement.className = 'magnifier-loader magnify-hidden';\n                textWrapper.html('Loading...');\n                magnifyLensElement.html('').append(textWrapper);\n            } else if (data[idSelectorMainImg].status === 2) {\n                magnifyLensElement.addClass(MagnifyCls.magnifyHidden);\n                magnifyLensElement.html('');\n\n                largeImgInMagnifyLens.id = idSelectorMainImg + '-large';\n                largeImgInMagnifyLens.style.width = data[idSelectorMainImg].largeImgInMagnifyLensWidth + 'px';\n                largeImgInMagnifyLens.style.height = data[idSelectorMainImg].largeImgInMagnifyLensHeight + 'px';\n                largeImgInMagnifyLens.className = 'magnifier-large magnify-hidden';\n\n                if (data[idSelectorMainImg].mode === 'inside') {\n                    magnifyLensElement.append(largeImgInMagnifyLens);\n                } else {\n                    largeWrapper.html('').append(largeImgInMagnifyLens);\n                }\n            }\n\n            data[idSelectorMainImg].lensH = data[idSelectorMainImg].lensH > $thumb.height() ? $thumb.height() : data[idSelectorMainImg].lensH;\n\n            if (Math.round(data[idSelectorMainImg].lensW) === 0) {\n                magnifyLensElement.css('display', 'none');\n            } else {\n                magnifyLensElement.css({\n                    width: Math.round(data[idSelectorMainImg].lensW) + 'px',\n                    height: Math.round(data[idSelectorMainImg].lensH) + 'px',\n                    display: ''\n                });\n            }\n        }\n\n        function getMousePos() {\n            var xPos = pos.x - magnifierOptions.x,\n                yPos = pos.y - magnifierOptions.y,\n                t,\n                l;\n\n            inBounds =  xPos < 0 || yPos < 0 || xPos > magnifierOptions.w || yPos > magnifierOptions.h  ? false : true;\n\n            l = xPos - magnifierOptions.lensW / 2;\n            t = yPos - magnifierOptions.lensH / 2;\n\n            if (xPos < magnifierOptions.lensW / 2) {\n                l = 0;\n            }\n\n            if (yPos < magnifierOptions.lensH / 2) {\n                t = 0;\n            }\n\n            if (xPos - magnifierOptions.w + Math.ceil(magnifierOptions.lensW / 2) > 0) {\n                l = magnifierOptions.w - Math.ceil(magnifierOptions.lensW + 2);\n            }\n\n            if (yPos - magnifierOptions.h + Math.ceil(magnifierOptions.lensH / 2) > 0) {\n                t = magnifierOptions.h - Math.ceil(magnifierOptions.lensH);\n            }\n\n            pos.l = l;\n            pos.t = t;\n\n            magnifierOptions.lensBgX = pos.l;\n            magnifierOptions.lensBgY = pos.t;\n\n            if (magnifierOptions.mode === 'inside') {\n                magnifierOptions.largeL = Math.round(xPos * (magnifierOptions.zoom - magnifierOptions.lensW / magnifierOptions.w));\n                magnifierOptions.largeT = Math.round(yPos * (magnifierOptions.zoom - magnifierOptions.lensH / magnifierOptions.h));\n            } else {\n                magnifierOptions.largeL = Math.round(magnifierOptions.lensBgX * magnifierOptions.zoom * (magnifierOptions.largeWrapperW / magnifierOptions.w));\n                magnifierOptions.largeT = Math.round(magnifierOptions.lensBgY * magnifierOptions.zoom * (magnifierOptions.largeWrapperH / magnifierOptions.h));\n            }\n        }\n\n        function onThumbEnter() {\n            if (_toBoolean(enabled)) {\n                magnifierOptions = data[curIdx];\n                curLens = $box.find('.magnify-lens');\n\n                if (magnifierOptions.status === 2) {\n                    curLens.removeClass(MagnifyCls.magnifyOpaque);\n                    curLarge = $('#' + curIdx + '-large');\n                    curLarge.removeClass(MagnifyCls.magnifyHidden);\n                } else if (magnifierOptions.status === 1) {\n                    curLens.className = 'magnifier-loader';\n                }\n            }\n        }\n\n        function onThumbLeave() {\n            if (magnifierOptions.status > 0) {\n                var handler = magnifierOptions.onthumbleave;\n\n                if (handler !== null) {\n                    handler({\n                        thumb: curThumb,\n                        lens: curLens,\n                        large: curLarge,\n                        x: pos.x,\n                        y: pos.y\n                    });\n                }\n\n                if (!curLens.hasClass(MagnifyCls.magnifyHidden)) {\n                    curLens.addClass(MagnifyCls.magnifyHidden);\n\n                    //$curThumb.removeClass(MagnifyCls.magnifyOpaque);\n                    if (curLarge !== null) {\n                        curLarge.addClass(MagnifyCls.magnifyHidden);\n                    }\n                }\n            }\n        }\n\n        function move() {\n            if (_toBoolean(enabled)) {\n                if (status !== magnifierOptions.status) {\n                    onThumbEnter();\n                }\n\n                if (magnifierOptions.status > 0) {\n                    curThumb.className = magnifierOptions.thumbCssClass + ' magnify-opaque';\n\n                    if (magnifierOptions.status === 1) {\n                        curLens.className = 'magnifier-loader';\n                    } else if (magnifierOptions.status === 2) {\n                        curLens.removeClass(MagnifyCls.magnifyHidden);\n                        curLarge.removeClass(MagnifyCls.magnifyHidden);\n                        curLarge.css({\n                            left: '-' + magnifierOptions.largeL + 'px',\n                            top: '-' + magnifierOptions.largeT + 'px'\n                        });\n                    }\n\n                    var borderOffset = 2; // Offset for magnify-lens border\n                    pos.t = pos.t <= 0 ? 0 : pos.t - borderOffset;\n\n                    curLens.css({\n                        left: pos.l + paddingX + 'px',\n                        top: pos.t + paddingY + 'px'\n                    });\n\n                    if (lensbg) {\n                        curLens.css({\n                            'background-color': 'rgba(f,f,f,.5)'\n                        });\n                    } else {\n                        curLens.get(0).style.backgroundPosition = '-' +\n                        magnifierOptions.lensBgX + 'px -' +\n                        magnifierOptions.lensBgY + 'px';\n                    }\n                    var handler = magnifierOptions.onthumbmove;\n\n                    if (handler !== null) {\n                        handler({\n                            thumb: curThumb,\n                            lens: curLens,\n                            large: curLarge,\n                            x: pos.x,\n                            y: pos.y\n                        });\n                    }\n                }\n\n                status = magnifierOptions.status;\n            }\n        }\n\n        function setThumbData(mainImage, mainImageData) {\n            var thumbBounds = mainImage.getBoundingClientRect(),\n                w = 0,\n                h = 0;\n\n            mainImageData.x = Math.round(thumbBounds.left);\n            mainImageData.y = Math.round(thumbBounds.top);\n            mainImageData.w = Math.round(thumbBounds.right - mainImageData.x);\n            mainImageData.h = Math.round(thumbBounds.bottom - mainImageData.y);\n\n            if (mainImageData.mode === 'inside') {\n                w = mainImageData.w;\n                h = mainImageData.h;\n            } else {\n                w = mainImageData.largeWrapperW;\n                h = mainImageData.largeWrapperH;\n            }\n\n            mainImageData.largeImgInMagnifyLensWidth = Math.round(mainImageData.zoom * w);\n            mainImageData.largeImgInMagnifyLensHeight = Math.round(mainImageData.zoom * h);\n\n            mainImageData.lensW = Math.round(mainImageData.w / mainImageData.zoom);\n            mainImageData.lensH = Math.round(mainImageData.h / mainImageData.zoom);\n        }\n\n        function _init($box, options) {\n            var opts = {};\n\n            if (options.thumb === undefined) {\n                return false;\n            }\n\n            $thumb = $box.find(options.thumb);\n\n            if ($thumb.length) {\n                for (var key in options) {\n                    opts[key] = options[key];\n                }\n\n                opts.thumb = $thumb;\n                enabled = opts.enabled;\n\n                if (_toBoolean(enabled)) {\n\n                    $magnifierPreview.show().css('display', '');\n                    $magnifierPreview.addClass(MagnifyCls.magnifyHidden);\n                    set(opts);\n                } else {\n                    $magnifierPreview.empty().hide();\n                }\n            }\n\n            return that;\n        }\n\n        function hoverEvents(thumb) {\n            $(thumb).on('mouseover', function (e) {\n\n                if (showWrapper) {\n\n                    if (magnifierOptions.status !== 0) {\n                        onThumbLeave();\n                    }\n                    handleEvents(e);\n                    isOverThumb = inBounds;\n                }\n            }).trigger('mouseover');\n        }\n\n        function clickEvents(thumb) {\n            $(thumb).on('click', function (e) {\n\n                if (showWrapper) {\n                    if (!isOverThumb) {\n                        if (magnifierOptions.status !== 0) {\n                            onThumbLeave();\n                        }\n                        handleEvents(e);\n                        isOverThumb = true;\n                    }\n                }\n            });\n        }\n\n        function bindEvents(eType, thumb) {\n            var eventFlag = 'hasBoundEvent_' + eType;\n            if (thumb[eventFlag]) {\n                // Events are already bound, no need to bind in duplicate\n                return;\n            }\n            thumb[eventFlag] = true;\n\n            switch (eType) {\n                case 'hover':\n                    hoverEvents(thumb);\n                    break;\n\n                case 'click':\n                    clickEvents(thumb);\n                    break;\n            }\n        }\n\n        function handleEvents(e) {\n            var src = e.target;\n\n            curIdx = src.id;\n            curThumb = src;\n\n            onThumbEnter(src);\n\n            setThumbData(curThumb, magnifierOptions);\n\n            pos.x = e.clientX;\n            pos.y = e.clientY;\n\n            getMousePos();\n            move();\n\n            var handler = magnifierOptions.onthumbenter;\n\n            if (handler !== null) {\n                handler({\n                    thumb: curThumb,\n                    lens: curLens,\n                    large: curLarge,\n                    x: pos.x,\n                    y: pos.y\n                });\n            }\n        }\n\n        function set(options) {\n            if (data[options.thumb.id] !== undefined) {\n                curThumb = options.thumb;\n\n                return false;\n            }\n\n            var thumbObj = new Image(),\n                largeObj = new Image(),\n                $thumb = options.thumb,\n                thumb = $thumb.get(0),\n                idx = thumb.id,\n                largeUrl,\n                largeWrapper = $(options.largeWrapper),\n                zoom = options.zoom || thumb.getAttribute('data-zoom') || gZoom,\n                zoomMin = options.zoomMin || gZoomMin,\n                zoomMax = options.zoomMax || gZoomMax,\n                mode = options.mode || thumb.getAttribute('data-mode') || gMode,\n                eventType = options.eventType || thumb.getAttribute('data-eventType') || gEventType,\n                onthumbenter = options.onthumbenter !== undefined ?\n                    options.onthumbenter\n                    : magnifierOptions.onthumbenter,\n                onthumbleave = options.onthumbleave !== undefined ?\n                    options.onthumbleave\n                    : magnifierOptions.onthumbleave,\n                onthumbmove = options.onthumbmove !== undefined ?\n                    options.onthumbmove\n                    : magnifierOptions.onthumbmove;\n\n            largeUrl = $thumb.data('original') || customUserOptions.full || $thumb.attr('src');\n\n            if (thumb.id === '') {\n                idx = thumb.id = 'magnifier-item-' + gId;\n                gId += 1;\n            }\n\n            createLens(thumb, idx);\n\n            if (options.width) {\n                largeWrapper.width(options.width);\n            }\n\n            if (options.height) {\n                largeWrapper.height(options.height);\n            }\n\n            if (options.top) {\n                if (typeof options.top == 'function') {\n                    var top = options.top() + 'px';\n                } else {\n                    var top = options.top + 'px';\n                }\n\n                if (largeWrapper.length) {\n                    largeWrapper[0].style.top = top.replace('%px', '%');\n                }\n            }\n\n            if (options.left) {\n                if (typeof options.left == 'function') {\n                    var left = options.left() + 'px';\n                } else {\n                    var left = options.left + 'px';\n                }\n\n                if (largeWrapper.length) {\n                    largeWrapper[0].style.left = left.replace('%px', '%');\n                }\n            }\n\n            data[idx] = {\n                zoom: zoom,\n                zoomMin: zoomMin,\n                zoomMax: zoomMax,\n                mode: mode,\n                eventType: eventType,\n                thumbCssClass: thumb.className,\n                zoomAttached: false,\n                status: 0,\n                largeUrl: largeUrl,\n                largeWrapperId: mode === 'outside' ? largeWrapper.attr('id') : null,\n                largeWrapperW: mode === 'outside' ? largeWrapper.width() : null,\n                largeWrapperH: mode === 'outside' ? largeWrapper.height() : null,\n                onthumbenter: onthumbenter,\n                onthumbleave: onthumbleave,\n                onthumbmove: onthumbmove\n            };\n\n            paddingX = ($thumb.parent().width() - $thumb.width()) / 2;\n            paddingY = ($thumb.parent().height() - $thumb.height()) / 2;\n\n            showWrapper = false;\n            $(thumbObj).on('load', function () {\n                if (data.hasOwnProperty(idx)) {\n                    data[idx].status = 1;\n                    $(largeObj).on('load', function () {\n                        if (largeObj.width > largeWrapper.width() || largeObj.height > largeWrapper.height()) {\n                            showWrapper = true;\n                            bindEvents(eventType, thumb);\n                            data[idx].status = 2;\n                            if (largeObj.width > largeObj.height) {\n                                data[idx].zoom = largeObj.width / largeWrapper.width();\n                            } else {\n                                data[idx].zoom = largeObj.height / largeWrapper.height();\n                            }\n                            setThumbData(thumb, data[idx]);\n                            updateLensOnLoad(idx, thumb, largeObj, largeWrapper);\n                        }\n                    });\n                    largeObj.src = data[idx].largeUrl;\n                }\n            });\n\n            thumbObj.src = thumb.src;\n        }\n\n        /**\n         * Hide magnifier when mouse exceeds image bounds.\n         */\n        function onMouseLeave() {\n            onThumbLeave();\n            isOverThumb = false;\n            $magnifierPreview.addClass(MagnifyCls.magnifyHidden);\n        }\n\n        function onMousemove(e) {\n            pos.x = e.clientX;\n            pos.y = e.clientY;\n\n            getMousePos();\n\n            if (gEventType === 'hover') {\n                isOverThumb = inBounds;\n            }\n\n            if (inBounds && isOverThumb) {\n                if (gMode === 'outside') {\n                    $magnifierPreview.removeClass(MagnifyCls.magnifyHidden);\n                }\n                move();\n            }\n        }\n\n        function onScroll() {\n            if (curThumb !== null) {\n                setThumbData(curThumb, magnifierOptions);\n            }\n        }\n\n        $(window).on('scroll', onScroll);\n        $(window).on('resize', function () {\n            _init($box, customUserOptions);\n        });\n\n        $box.on('mousemove', onMousemove);\n        $box.on('mouseleave', onMouseLeave);\n\n        _init($box, customUserOptions);\n    }\n}(jQuery));\n","magnifier/magnify.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\ndefine([\n    'jquery',\n    'underscore',\n    'magnifier/magnifier'\n], function ($, _) {\n    'use strict';\n\n    return function (config, element) {\n\n        var isTouchEnabled = 'ontouchstart' in document.documentElement,\n            gallerySelector = '[data-gallery-role=\"gallery\"]',\n            magnifierSelector = '[data-gallery-role=\"magnifier\"]',\n            magnifierZoomSelector = '[data-gallery-role=\"magnifier-zoom\"]',\n            zoomInButtonSelector = '[data-gallery-role=\"fotorama__zoom-in\"]',\n            zoomOutButtonSelector = '[data-gallery-role=\"fotorama__zoom-out\"]',\n            fullscreenImageSelector = '[data-gallery-role=\"stage-shaft\"] [data-active=\"true\"] .fotorama__img--full',\n            imageDraggableClass = 'fotorama__img--draggable',\n            imageZoommable = 'fotorama__img--zoommable',\n            zoomInLoaded = 'zoom-in-loaded',\n            zoomOutLoaded = 'zoom-out-loaded',\n            zoomInDisabled = 'fotorama__zoom-in--disabled',\n            zoomOutDisabled = 'fotorama__zoom-out--disabled',\n            keyboardNavigation,\n            videoContainerClass = 'fotorama-video-container',\n            hideMagnifier,\n            dragFlag,\n            endX,\n            transitionEnabled,\n            transitionActive = false,\n            tapFlag = 0,\n            allowZoomOut = false,\n            allowZoomIn = true;\n\n        transitionEnabled = document.documentElement.style.transition !== undefined ||\n            document.documentElement.style.WebkitTransition !== undefined ||\n            document.documentElement.style.MozTransition !== undefined ||\n            document.documentElement.style.MsTransition !== undefined ||\n            document.documentElement.style.OTransition !== undefined;\n\n        /**\n         * Return width and height of original image\n         * @param img original image node\n         * @returns {{rw: number, rh: number}}\n         */\n        function getImageSize(img) {\n            return {\n                rw: img.naturalWidth,\n                rh: img.naturalHeight\n            };\n        }\n\n        /**\n         * Sets min-height and min-width for image to avoid transition bug\n         * @param $image - fullscreen image\n         */\n        function calculateMinSize($image) {\n\n            var minHeight,\n                minWidth,\n                height = $image.height(),\n                width = $image.width(),\n                parentHeight = $image.parent().height(),\n                parentWidth = $image.parent().width();\n\n            if (width > parentWidth || height > parentHeight) {\n\n                if (width / height < parentWidth / parentHeight) {\n                    minHeight = parentHeight;\n                    minWidth = width * (parentHeight / height);\n                } else {\n                    minWidth = parentWidth;\n                    minHeight = height * parentWidth / width;\n                }\n                $image.css({\n                    'min-width': minWidth,\n                    'min-height': minHeight\n                });\n            }\n        }\n\n        function toggleZoomable($image, flag) {\n            if (flag) {\n                $image.css({\n                    'min-width': $image.width(),\n                    'min-height': $image.height(),\n                    'width': $image.width(),\n                    'height': $image.height()\n                }).addClass(imageZoommable);\n            } else {\n                $image.css({\n                    width: '',\n                    height: '',\n                    top: '',\n                    left: '',\n                    right: '',\n                    bottom: ''\n                }).removeClass(imageZoommable);\n                calculateMinSize($image);\n            }\n        }\n\n        function resetVars($image) {\n            allowZoomIn = true;\n            allowZoomOut = dragFlag = transitionActive = false;\n            $image.hasClass(imageDraggableClass) && $image.removeClass(imageDraggableClass);\n            toggleZoomable($image, false);\n        }\n\n        /**\n         * Set state for zoom controls.\n         * If state is true, zoom controls will be visible.\n         * IF state is false, zoom controls will be hidden.\n         * @param isHide\n         */\n        function hideZoomControls(isHide) {\n            if (isHide) {\n                $(zoomInButtonSelector).addClass(zoomInDisabled);\n                $(zoomOutButtonSelector).addClass(zoomOutDisabled);\n            } else {\n                $(zoomInButtonSelector).removeClass(zoomInDisabled);\n                $(zoomOutButtonSelector).removeClass(zoomOutDisabled);\n            }\n        }\n\n        /**\n         * Asynchronus control visibility of zoom buttons.\n         * If image bigger than her wrapper. Zoom controls must visible.\n         * @param path - image source path\n         * @param $image\n         */\n        function asyncToggleZoomButtons(path, $image) {\n            var img = new Image();\n\n            img.onload = function () {\n                this.height > $image.parent().height() || this.width > $image.parent().width() ?\n                    hideZoomControls(false) : hideZoomControls(true);\n            };\n            img.src = path;\n        }\n\n        /**\n         * Control visibility of zoom buttons.\n         * Zoom controls must be invisible for video content and touch devices.\n         * On touch devices active pinchIn/pinchOut.\n         * @param $image\n         * @param isTouchScreen - true for touch devices\n         * @param isVideoActiveFrame - true for active video frame\n         */\n        function toggleZoomButtons($image, isTouchScreen, isVideoActiveFrame) {\n            var path = $image.attr('src');\n\n            if (path && !isTouchScreen && !isVideoActiveFrame) {\n                asyncToggleZoomButtons(path, $image);\n            } else {\n                hideZoomControls(true);\n            }\n        }\n\n        /**\n         * Handle resize event in fullscreen.\n         * @param $image - Fullscreen image.\n         * @param e - Event.\n         */\n        function resizeHandler(e, $image) {\n            var imageSize,\n                parentWidth,\n                parentHeight,\n                isImageSmall,\n                isImageFit;\n\n            if (!e.data.$image || !e.data.$image.length)\n                return;\n\n            imageSize = getImageSize($(fullscreenImageSelector)[0]);\n            parentWidth = e.data.$image.parent().width();\n            parentHeight = e.data.$image.parent().height();\n            isImageSmall = parentWidth >= imageSize.rw && parentHeight >= imageSize.rh;\n            isImageFit = parentWidth > e.data.$image.width() && parentHeight > e.data.$image.height();\n\n            toggleZoomButtons(e.data.$image, isTouchEnabled, checkForVideo(e.data.fotorama.activeFrame.$stageFrame));\n            calculateMinSize(e.data.$image);\n\n            if (e.data.$image.hasClass(imageZoommable) && !allowZoomOut || isImageSmall || isImageFit) {\n                resetVars(e.data.$image);\n            }\n\n            if (!isImageSmall) {\n                toggleStandartNavigation();\n            }\n        }\n\n        function getTopValue($image, topProp, step, height, containerHeight) {\n            var top;\n\n            if (parseInt($image.css('marginTop')) || parseInt($image.css('marginLeft'))) {\n                top = dragFlag ? topProp - step / 4 : 0;\n                top = top < containerHeight - height ? containerHeight - height : top;\n                top = top > height - containerHeight ? height - containerHeight : top;\n            } else {\n                top = topProp + step / 2;\n                top = top < containerHeight - height ? containerHeight - height : top;\n                top = top > 0 ? 0 : top;\n\n                if (!dragFlag && step < 0) {\n                    top = top < (containerHeight - height) / 2 ? (containerHeight - height) / 2 : top;\n                }\n            }\n\n            return top;\n        }\n\n        function getLeftValue(leftProp, step, width, containerWidth) {\n            var left;\n\n            left = leftProp + step / 2;\n            left = left < containerWidth - width ? containerWidth - width : left;\n            left = left > 0 ? 0 : left;\n\n            if (!dragFlag && step < 0) {\n                left = left < (containerWidth - width) / 2 ? (containerWidth - width) / 2 : left;\n            }\n\n            return left;\n        }\n\n        function checkFullscreenImagePosition($image, dimentions, widthStep, heightStep) {\n            var $imageContainer,\n                containerWidth,\n                containerHeight,\n                settings,\n                top,\n                left,\n                right,\n                bottom,\n                ratio;\n\n            if ($(gallerySelector).data('fotorama').fullScreen) {\n                transitionActive = true;\n                $imageContainer = $image.parent();\n                containerWidth = $imageContainer.width();\n                containerHeight = $imageContainer.height();\n                top = $image.position().top;\n                left = $image.position().left;\n                ratio = $image.width() / $image.height();\n                dimentions.height = isNaN(dimentions.height) ? dimentions.width / ratio : dimentions.height;\n                dimentions.width = isNaN(dimentions.width) ? dimentions.height * ratio : dimentions.width;\n\n                top = dimentions.height >= containerHeight ?\n                    getTopValue($image, top, heightStep, dimentions.height, containerHeight) : 0;\n\n                left = dimentions.width >= containerWidth ?\n                    getLeftValue(left, widthStep, dimentions.width, containerWidth) : 0;\n\n                right = dragFlag && left < (containerWidth - dimentions.width) / 2 ? 0 : left;\n                bottom = dragFlag ? 0 : top;\n\n                settings = $.extend(dimentions, {\n                    top: top,\n                    left: left,\n                    right: right\n                });\n\n                $image.css(settings);\n            }\n        }\n\n        /**\n         * Toggles fotorama's keyboard and mouse/touch navigation.\n         */\n        function toggleStandartNavigation() {\n            var $selectable =\n                    $('a[href], area[href], input, select, textarea, button, iframe, object, embed, *[tabindex], *[contenteditable]')\n                    .not('[tabindex=-1], [disabled], :hidden'),\n                fotorama = $(gallerySelector).data('fotorama'),\n                $focus = $(':focus'),\n                index;\n\n            if (fotorama.fullScreen) {\n\n                $selectable.each(function (number) {\n\n                    if ($(this).is($focus)) {\n                        index = number;\n                    }\n                });\n\n                fotorama.setOptions({\n                    swipe: !allowZoomOut,\n                    keyboard: !allowZoomOut\n                });\n\n                if (_.isNumber(index)) {\n                    $selectable.eq(index).trigger('focus');\n                }\n            }\n        }\n\n        function zoomIn(e, xStep, yStep) {\n            var $image,\n                imgOriginalSize,\n                imageWidth,\n                imageHeight,\n                zoomWidthStep,\n                zoomHeightStep,\n                widthResult,\n                heightResult,\n                ratio,\n                dimentions = {};\n\n            if (allowZoomIn && (!transitionEnabled || !transitionActive) && (isTouchEnabled ||\n                !$(zoomInButtonSelector).hasClass(zoomInDisabled))) {\n                $image = $(fullscreenImageSelector);\n                imgOriginalSize = getImageSize($image[0]);\n                imageWidth = $image.width();\n                imageHeight = $image.height();\n                ratio = imageWidth / imageHeight;\n                allowZoomOut = true;\n                toggleStandartNavigation();\n\n                if (!$image.hasClass(imageZoommable)) {\n                    toggleZoomable($image, true);\n                }\n\n                e.preventDefault();\n\n                if (imageWidth >= imageHeight) {\n                    zoomWidthStep = xStep || Math.ceil(imageWidth * parseFloat(config.magnifierOpts.fullscreenzoom) / 100);\n                    widthResult = imageWidth + zoomWidthStep;\n\n                    if (widthResult >= imgOriginalSize.rw) {\n                        widthResult = imgOriginalSize.rw;\n                        zoomWidthStep = xStep || widthResult - imageWidth;\n                        allowZoomIn = false;\n                    }\n                    heightResult = widthResult / ratio;\n                    zoomHeightStep = yStep || heightResult - imageHeight;\n                } else {\n                    zoomHeightStep = yStep || Math.ceil(imageHeight * parseFloat(config.magnifierOpts.fullscreenzoom) / 100);\n                    heightResult = imageHeight + zoomHeightStep;\n\n                    if (heightResult >= imgOriginalSize.rh) {\n                        heightResult = imgOriginalSize.rh;\n                        zoomHeightStep = yStep || heightResult - imageHeight;\n                        allowZoomIn = false;\n                    }\n                    widthResult = heightResult * ratio;\n                    zoomWidthStep = xStep || widthResult - imageWidth;\n                }\n\n                if (imageWidth >= imageHeight && imageWidth !== imgOriginalSize.rw) {\n                    dimentions = $.extend(dimentions, {\n                        width: widthResult,\n                        height: 'auto'\n                    });\n                    checkFullscreenImagePosition($image, dimentions, -zoomWidthStep, -zoomHeightStep);\n\n                } else if (imageWidth < imageHeight && imageHeight !== imgOriginalSize.rh) {\n                    dimentions = $.extend(dimentions, {\n                        width: 'auto',\n                        height: heightResult\n                    });\n                    checkFullscreenImagePosition($image, dimentions, -zoomWidthStep, -zoomHeightStep);\n                }\n            }\n\n            return false;\n        }\n\n        function zoomOut(e, xStep, yStep) {\n            var $image,\n                widthResult,\n                heightResult,\n                dimentions,\n                parentWidth,\n                parentHeight,\n                imageWidth,\n                imageHeight,\n                zoomWidthStep,\n                zoomHeightStep,\n                ratio,\n                fitIntoParent;\n\n            if (allowZoomOut && (!transitionEnabled || !transitionActive) && (isTouchEnabled ||\n                !$(zoomOutButtonSelector).hasClass(zoomOutDisabled))) {\n                allowZoomIn = true;\n                $image = $(fullscreenImageSelector);\n                parentWidth = $image.parent().width();\n                parentHeight = $image.parent().height();\n                imageWidth = $image.width();\n                imageHeight = $image.height();\n                ratio = imageWidth / imageHeight;\n\n                e.preventDefault();\n\n                if (imageWidth >= imageHeight) {\n                    zoomWidthStep = xStep || Math.ceil(imageWidth * parseFloat(config.magnifierOpts.fullscreenzoom) / 100);\n                    widthResult = imageWidth - zoomWidthStep;\n                    heightResult = widthResult / ratio;\n                    zoomHeightStep = yStep || imageHeight - heightResult;\n                } else {\n                    zoomHeightStep = yStep || Math.ceil(imageHeight * parseFloat(config.magnifierOpts.fullscreenzoom) / 100);\n                    heightResult = imageHeight - zoomHeightStep;\n                    widthResult = heightResult * ratio;\n                    zoomWidthStep = xStep || imageWidth - widthResult;\n                }\n\n                fitIntoParent = function () {\n                    if (ratio > parentWidth / parentHeight) {\n                        widthResult = parentWidth;\n                        zoomWidthStep = imageWidth - widthResult;\n                        heightResult = widthResult / ratio;\n                        zoomHeightStep = imageHeight - heightResult;\n                        dimentions = {\n                            width: widthResult,\n                            height: 'auto'\n                        };\n                    } else {\n                        heightResult = parentHeight;\n                        zoomHeightStep = imageHeight - heightResult;\n                        widthResult = heightResult * ratio;\n                        zoomWidthStep = imageWidth - widthResult;\n                        dimentions = {\n                            width: 'auto',\n                            height: heightResult\n                        };\n                    }\n                    checkFullscreenImagePosition($image, dimentions, zoomWidthStep, zoomHeightStep);\n                };\n\n                if (imageWidth >= imageHeight) {\n                    if (widthResult > parentWidth) {\n                        dimentions = {\n                            width: widthResult,\n                            height: 'auto'\n                        };\n                        checkFullscreenImagePosition($image, dimentions, zoomWidthStep, zoomHeightStep);\n                    } else if (heightResult > parentHeight) {\n                        dimentions = {\n                            width: widthResult,\n                            height: 'auto'\n                        };\n                        checkFullscreenImagePosition($image, dimentions, zoomWidthStep, zoomHeightStep);\n                    } else {\n                        allowZoomOut = dragFlag = false;\n                        toggleStandartNavigation();\n                        fitIntoParent();\n                    }\n                } else if (heightResult > parentHeight) {\n                    dimentions = {\n                        width: 'auto',\n                        height: heightResult\n                    };\n                    checkFullscreenImagePosition($image, dimentions, zoomWidthStep, zoomHeightStep);\n                } else if (widthResult > parentWidth) {\n                    dimentions = {\n                        width: 'auto',\n                        height: heightResult\n                    };\n                    checkFullscreenImagePosition($image, dimentions, zoomWidthStep, zoomHeightStep);\n                } else {\n                    allowZoomOut = dragFlag = false;\n                    toggleStandartNavigation();\n                    fitIntoParent();\n                }\n            }\n\n            return false;\n        }\n\n        /**\n         * Bind event on scroll on active item in fotorama\n         * @param e\n         * @param fotorama - object of fotorama\n         */\n        function mousewheel(e, fotorama, element) {\n            var $fotoramaStage = fotorama.activeFrame.$stageFrame,\n                fotoramaStage = $fotoramaStage.get(0);\n\n            function onWheel(e) {\n                var delta = e.deltaY || e.wheelDelta,\n                    ev = e || window.event;\n\n                if ($(gallerySelector).data('fotorama').fullScreen) {\n\n                    if (e.deltaY) {\n                        if (delta > 0) {\n                            zoomOut(ev);\n                        } else {\n                            zoomIn(ev);\n                        }\n                    } else if (delta > 0) {\n                        zoomIn(ev);\n                    } else {\n                        zoomOut(ev);\n                    }\n\n                    e.preventDefault ? e.preventDefault() : e.returnValue = false;\n                }\n            }\n\n            if (!$fotoramaStage.hasClass('magnify-wheel-loaded')) {\n                if (fotoramaStage && fotoramaStage.addEventListener) {\n                    if ('onwheel' in document) {\n                        fotoramaStage.addEventListener('wheel', onWheel, { passive: false });\n                    } else if ('onmousewheel' in document) {\n                        fotoramaStage.addEventListener('mousewheel', onWheel);\n                    } else {\n                        fotoramaStage.addEventListener('MozMousePixelScroll', onWheel);\n                    }\n                    $fotoramaStage.addClass('magnify-wheel-loaded');\n                }\n            }\n        }\n\n        /**\n         * Method which makes draggable picture. Also work on touch devices.\n         */\n        function magnifierFullscreen(fotorama) {\n            var isDragActive = false,\n                startX,\n                startY,\n                imagePosX,\n                imagePosY,\n                touch,\n                swipeSlide,\n                $gallery = $(gallerySelector),\n                $image = $(fullscreenImageSelector, $gallery),\n                $imageContainer = $('[data-gallery-role=\"stage-shaft\"] [data-active=\"true\"]'),\n                gallery = $gallery.data('fotorama'),\n                pinchDimention;\n\n            swipeSlide = _.throttle(function (direction) {\n                $(gallerySelector).data('fotorama').show(direction);\n            }, 500, {\n                trailing: false\n            });\n\n            /**\n             * Returns top position value for passed jQuery object.\n             *\n             * @param $el\n             * @return {number}\n             */\n            function getTop($el) {\n                return parseInt($el.get(0).style.top);\n            }\n\n            function shiftImage(dx, dy, e) {\n                var top = +imagePosY + dy,\n                    left = +imagePosX + dx,\n                    swipeCondition = $image.width() / 10 + 20;\n\n                dragFlag = true;\n\n                if ($image.offset().left === $imageContainer.offset().left + $imageContainer.width() - $image.width() && e.keyCode === 39 ||\n                    endX - 1 < $imageContainer.offset().left + $imageContainer.width() - $image.width() && dx < 0 &&\n                    _.isNumber(endX) &&\n                    (e.type === 'mousemove' || e.type === 'touchmove' || e.type === 'pointermove' || e.type === 'MSPointerMove')) {\n                    endX = null;\n                    swipeSlide('>');\n\n                    return;\n                }\n\n                if ($image.offset().left === $imageContainer.offset().left && dx !== 0 && e.keyCode === 37 ||\n                    endX === $imageContainer.offset().left && dx > 0 &&\n                    (e.type === 'mousemove' || e.type === 'touchmove' || e.type === 'pointermove' || e.type === 'MSPointerMove')) {\n                    endX = null;\n                    swipeSlide('<');\n\n                    return;\n                }\n\n                if ($image.height() > $imageContainer.height()) {\n                    if ($imageContainer.height() > $image.height() + top) {\n                        $image.css('top', $imageContainer.height() - $image.height());\n                    } else {\n                        top = $image.height() - getTop($image) - $imageContainer.height();\n                        dy = dy < top ? dy : top;\n                        $image.css('top', getTop($image) + dy);\n                    }\n                }\n\n                if ($image.width() > $imageContainer.width()) {\n\n                    if ($imageContainer.offset().left + $imageContainer.width() > left + $image.width()) {\n                        left = $imageContainer.offset().left + $imageContainer.width() - $image.width();\n                    } else {\n                        left = $imageContainer.offset().left < left ? $imageContainer.offset().left : left;\n                    }\n                    $image.offset({\n                        'left': left\n                    });\n                    $image.css('right', '');\n                } else if (Math.abs(dy) < 1 && allowZoomOut &&\n                    !(e.type === 'mousemove' || e.type === 'touchmove' || e.type === 'pointermove' || e.type === 'MSPointerMove')) {\n                    dx < 0 ? $(gallerySelector).data('fotorama').show('>') : $(gallerySelector).data('fotorama').show('<');\n                }\n\n                if ($image.width() <= $imageContainer.width() && allowZoomOut &&\n                    (e.type === 'mousemove' || e.type === 'touchmove' || e.type === 'pointermove' || e.type === 'MSPointerMove') &&\n                    Math.abs(dx) > Math.abs(dy) && Math.abs(dx) > swipeCondition) {\n                    dx < 0 ? swipeSlide('>') : swipeSlide('<');\n                }\n            }\n\n            /**\n             * Sets image size to original or fit in parent block\n             * @param e - event object\n             */\n            function dblClickHandler(e) {\n                var imgOriginalSize = getImageSize($image[0]),\n                    proportions;\n\n                if (imgOriginalSize.rh < $image.parent().height() && imgOriginalSize.rw < $image.parent().width()) {\n                    return;\n                }\n\n                proportions = imgOriginalSize.rw / imgOriginalSize.rh;\n\n                if (allowZoomIn) {\n                    zoomIn(e, imgOriginalSize.rw - $image.width(), imgOriginalSize.rh - $image.height());\n                } else if (proportions > $imageContainer.width() / $imageContainer.height()) {\n                    zoomOut(e, imgOriginalSize.rw - $imageContainer.width(), imgOriginalSize.rw / proportions);\n                } else {\n                    zoomOut(e, imgOriginalSize.rw * proportions, imgOriginalSize.rh - $imageContainer.height());\n                }\n            }\n\n            function detectDoubleTap(e) {\n                var now = new Date().getTime(),\n                    timesince = now - tapFlag;\n\n                if (timesince < 400 && timesince > 0) {\n                    transitionActive = false;\n                    tapFlag = 0;\n                    dblClickHandler(e);\n                } else {\n                    tapFlag = new Date().getTime();\n                }\n            }\n\n            if (isTouchEnabled) {\n                $image.off('tap');\n                $image.on('tap', function (e) {\n                    if (e.originalEvent.originalEvent.touches.length === 0) {\n                        detectDoubleTap(e);\n                    }\n                });\n            } else {\n                $image.off('dblclick');\n                $image.on('dblclick', dblClickHandler);\n            }\n\n            if (gallery.fullScreen) {\n                toggleZoomButtons($image, isTouchEnabled, checkForVideo(fotorama.activeFrame.$stageFrame));\n            }\n\n            function getDimention(event) {\n                return Math.sqrt(\n                    (event.touches[0].clientX - event.touches[1].clientX) * (event.touches[0].clientX - event.touches[1].clientX) +\n                    (event.touches[0].clientY - event.touches[1].clientY) * (event.touches[0].clientY - event.touches[1].clientY));\n            }\n\n            $image.off(isTouchEnabled ? 'touchstart' : 'pointerdown mousedown MSPointerDown');\n            $image.on(isTouchEnabled ? 'touchstart' : 'pointerdown mousedown MSPointerDown', function (e) {\n                if (e && e.originalEvent.touches && e.originalEvent.touches.length >= 2) {\n                    e.preventDefault();\n                    pinchDimention = getDimention(e.originalEvent);\n                    isDragActive = false;\n\n                    if ($image.hasClass(imageDraggableClass)) {\n                        $image.removeClass(imageDraggableClass);\n                    }\n                } else if (gallery.fullScreen && (!transitionEnabled || !transitionActive)) {\n                    imagePosY = getTop($image);\n                    imagePosX = $image.offset().left;\n\n                    if (isTouchEnabled) {\n                        touch = e.originalEvent.touches[0] || e.originalEvent.changedTouches[0];\n                        e.clientX = touch.pageX;\n                        e.clientY = touch.pageY;\n                    }\n                    startX = e.clientX || e.originalEvent.clientX;\n                    startY = e.clientY || e.originalEvent.clientY;\n                    isDragActive = true;\n                }\n\n                if ($image.offset() && $image.width() > $imageContainer.width()) {\n                    endX = $image.offset().left;\n                }\n            });\n\n            $image.off(isTouchEnabled ? 'touchmove' : 'mousemove pointermove MSPointerMove');\n            $image.on(isTouchEnabled ? 'touchmove' : 'mousemove pointermove MSPointerMove', function (e) {\n                if (e && e.originalEvent.touches && e.originalEvent.touches.length >= 2) {\n                    e.preventDefault();\n                    var currentDimention = getDimention(e.originalEvent);\n\n                    if ($image.hasClass(imageDraggableClass)) {\n                        $image.removeClass(imageDraggableClass);\n                    }\n\n                    if (currentDimention < pinchDimention) {\n                        zoomOut(e);\n                        pinchDimention = currentDimention;\n                    } else if (currentDimention > pinchDimention) {\n                        zoomIn(e);\n                        pinchDimention = currentDimention;\n                    }\n                } else {\n                    var clientX,\n                        clientY;\n\n                    if (gallery.fullScreen && isDragActive && (!transitionEnabled || !transitionActive)) {\n\n                        if (allowZoomOut && !$image.hasClass(imageDraggableClass)) {\n                            $image.addClass(imageDraggableClass);\n                        }\n                        clientX = e.clientX || e.originalEvent.clientX;\n                        clientY = e.clientY || e.originalEvent.clientY;\n\n                        e.preventDefault();\n\n                        if (isTouchEnabled) {\n                            touch = e.originalEvent.touches[0] || e.originalEvent.changedTouches[0];\n                            clientX = touch.pageX;\n                            clientY = touch.pageY;\n                        }\n\n                        if (allowZoomOut) {\n                            imagePosY = getTop($(fullscreenImageSelector, $gallery));\n                            shiftImage(clientX - startX, clientY - startY, e);\n                        }\n                    }\n                }\n            });\n\n            $image.off('transitionend webkitTransitionEnd mozTransitionEnd msTransitionEnd ');\n            $image.on('transitionend webkitTransitionEnd mozTransitionEnd msTransitionEnd', function () {\n                transitionActive = false;\n            });\n\n            if (keyboardNavigation) {\n                $(document).off('keydown', keyboardNavigation);\n            }\n\n            /**\n             * Replaces original navigations with better one\n             * @param e - event object\n             */\n            keyboardNavigation = function (e) {\n                var step = 40,\n                    $focus = $(':focus'),\n                    isFullScreen = $(gallerySelector).data('fotorama').fullScreen,\n                    initVars = function () {\n                        imagePosX = $(fullscreenImageSelector, $gallery).offset().left;\n                        imagePosY = getTop($(fullscreenImageSelector, $gallery));\n                    };\n\n                if (($focus.attr('data-gallery-role') || !$focus.length) && allowZoomOut) {\n                    if (isFullScreen) {\n                        imagePosX = $(fullscreenImageSelector, $(gallerySelector)).offset().left;\n                        imagePosY = getTop($(fullscreenImageSelector, $(gallerySelector)));\n                    }\n\n                    if (e.keyCode === 39) {\n\n                        if (isFullScreen) {\n                            initVars();\n                            shiftImage(-step, 0, e);\n                        }\n                    }\n\n                    if (e.keyCode === 38) {\n\n                        if (isFullScreen) {\n                            initVars();\n                            shiftImage(0, step, e);\n                        }\n                    }\n\n                    if (e.keyCode === 37) {\n\n                        if (isFullScreen) {\n                            initVars();\n                            shiftImage(step, 0, e);\n                        }\n                    }\n\n                    if (e.keyCode === 40) {\n\n                        if (isFullScreen) {\n                            e.preventDefault();\n                            initVars();\n                            shiftImage(0, -step, e);\n                        }\n                    }\n                }\n\n                if (e.keyCode === 27 && isFullScreen && allowZoomOut) {\n                    $(gallerySelector).data('fotorama').cancelFullScreen();\n                }\n            };\n\n            /**\n             * @todo keyboard navigation through Fotorama Api.\n             */\n            $(document).on('keydown', keyboardNavigation);\n\n            $(document).on(isTouchEnabled ? 'touchend' : 'mouseup pointerup MSPointerUp', function (e) {\n                if (gallery.fullScreen) {\n\n                    if ($image.offset() && $image.width() > $imageContainer.width()) {\n                        endX = $image.offset().left;\n                    }\n\n                    isDragActive = false;\n                    $image.removeClass(imageDraggableClass);\n                }\n            });\n\n            $(window).off('resize', resizeHandler);\n            $(window).on('resize', {\n                $image: $image,\n                fotorama: fotorama\n            }, resizeHandler);\n        }\n\n        /**\n         * Hides magnifier preview and zoom blocks.\n         */\n        hideMagnifier = function () {\n            $(magnifierSelector).empty().hide();\n            $(magnifierZoomSelector).remove();\n        };\n\n        /**\n         * Check is active frame in gallery include video content.\n         * If true activeFrame contain video.\n         * @param $stageFrame - active frame in gallery\n         * @returns {*|Boolean}\n         */\n        function checkForVideo($stageFrame) {\n            return $stageFrame.hasClass(videoContainerClass);\n        }\n\n        /**\n         * Hides magnifier on drag and while arrow click.\n         */\n        function behaveOnDrag(e, initPos) {\n            var pos = [e.pageX, e.pageY],\n                isArrow = $(e.target).data('gallery-role') === 'arrow',\n                isClick = initPos[0] === pos[0] && initPos[1] === pos[1],\n                isImg = $(e.target).parent().data('active');\n\n            if (isArrow || isImg && !isClick) {\n                hideMagnifier();\n            }\n        }\n\n        if (config.magnifierOpts.enabled) {\n            $(element).on('pointerdown mousedown MSPointerDown', function (e) {\n                var pos = [e.pageX, e.pageY];\n\n                $(element).on('mousemove pointermove MSPointerMove', function (ev) {\n                    navigator.msPointerEnabled ? hideMagnifier() : behaveOnDrag(ev, pos);\n                });\n                $(document).on('mouseup pointerup MSPointerUp', function () {\n                    $(element).off('mousemove pointermove MSPointerMove');\n                });\n            });\n        }\n\n        $.extend(config.magnifierOpts, {\n            zoomable: false,\n            thumb: '.fotorama__img',\n            largeWrapper: '[data-gallery-role=\"magnifier\"]',\n            height: config.magnifierOpts.height || function () {\n                return $('[data-active=\"true\"]').height();\n            },\n            width: config.magnifierOpts.width || function () {\n                var productMedia = $(gallerySelector).parent().parent();\n\n                return productMedia.parent().width() - productMedia.width() - 20;\n            },\n            left: config.magnifierOpts.left || function () {\n                return $(gallerySelector).offset().left + $(gallerySelector).width() + 20;\n            },\n            top: config.magnifierOpts.top || function () {\n                return $(gallerySelector).offset().top;\n            }\n        });\n\n        $(element).on('fotorama:load fotorama:showend fotorama:fullscreenexit fotorama:ready', function (e, fotorama) {\n            var $activeStageFrame = $(gallerySelector).data('fotorama').activeFrame.$stageFrame;\n\n            if (!$activeStageFrame.find(magnifierZoomSelector).length) {\n                hideMagnifier();\n\n                if (config.magnifierOpts) {\n                    config.magnifierOpts.large = $(gallerySelector).data('fotorama').activeFrame.img;\n                    config.magnifierOpts.full = fotorama.data[fotorama.activeIndex].original;\n                    !checkForVideo($activeStageFrame) && $($activeStageFrame).magnify(config.magnifierOpts);\n                }\n            }\n        });\n\n        $(element).on('gallery:loaded', function (e) {\n            var $prevImage;\n\n            $(element).find(gallerySelector)\n                .on('fotorama:ready', function (e, fotorama) {\n                    var $zoomIn = $(zoomInButtonSelector),\n                        $zoomOut = $(zoomOutButtonSelector);\n\n                    if (!$zoomIn.hasClass(zoomInLoaded)) {\n                        $zoomIn.on('click touchstart', zoomIn);\n                        $zoomIn.on('mousedown', function (e) {\n                            e.stopPropagation();\n                        });\n\n                        $zoomIn.on('keyup', function (e) {\n\n                            if (e.keyCode === 13) {\n                                zoomIn(e);\n                            }\n                        });\n\n                        $(window).on('keyup', function (e) {\n\n                            if (e.keyCode === 107 || fotorama.fullscreen) {\n                                zoomIn(e);\n                            }\n                        });\n\n                        $zoomIn.addClass(zoomInLoaded);\n                    }\n\n                    if (!$zoomOut.hasClass(zoomOutLoaded)) {\n                        $zoomOut.on('click touchstart', zoomOut);\n                        $zoomOut.on('mousedown', function (e) {\n                            e.stopPropagation();\n                        });\n\n                        $zoomOut.on('keyup', function (e) {\n\n                            if (e.keyCode === 13) {\n                                zoomOut(e);\n                            }\n                        });\n\n                        $(window).on('keyup', function (e) {\n\n                            if (e.keyCode === 109 || fotorama.fullscreen) {\n                                zoomOut(e);\n                            }\n                        });\n\n                        $zoomOut.addClass(zoomOutLoaded);\n                    }\n                })\n                .on('fotorama:fullscreenenter fotorama:showend', function (e, fotorama) {\n                    hideMagnifier();\n\n                    if (!$(fullscreenImageSelector).is($prevImage)) {\n                        resetVars($(fullscreenImageSelector));\n                    }\n                    magnifierFullscreen(fotorama);\n                    mousewheel(e, fotorama, element);\n\n                    if ($prevImage) {\n                        calculateMinSize($prevImage);\n\n                        if (!$(fullscreenImageSelector).is($prevImage)) {\n                            resetVars($prevImage);\n                        }\n                    }\n\n                    toggleStandartNavigation();\n                })\n                .on('fotorama:load', function (e, fotorama) {\n                    if ($(gallerySelector).data('fotorama').fullScreen) {\n                        toggleZoomButtons($(fullscreenImageSelector), isTouchEnabled,\n                            checkForVideo(fotorama.activeFrame.$stageFrame));\n                    }\n                    magnifierFullscreen(fotorama);\n                })\n                .on('fotorama:show', function (e, fotorama) {\n                    $prevImage = _.clone($(fullscreenImageSelector));\n                    hideMagnifier();\n                })\n                .on('fotorama:fullscreenexit', function (e, fotorama) {\n                    resetVars($(fullscreenImageSelector));\n                    hideMagnifier();\n                    hideZoomControls(true);\n                });\n        });\n\n        return config;\n    };\n});\n","Magento_ProductAlert/js/form-submitter.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\ndefine([\n    'jquery'\n], function ($) {\n    'use strict';\n\n    return function (data, element) {\n\n        $(element).trigger('submit');\n    };\n});\n","Magento_GiftMessage/js/gift-options.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\ndefine([\n    'jquery',\n    'jquery-ui-modules/widget'\n], function ($) {\n    'use strict';\n\n    $.widget('mage.giftOptions', {\n        options: {\n            mageError: 'mage-error',\n            noDisplay: 'no-display',\n            requiredEntry: 'required-entry'\n        },\n\n        /**\n         * Initial toggle of the various gift options after widget instantiation.\n         * @private\n         */\n        _init: function () {\n            this._toggleVisibility();\n        },\n\n        /**\n         * Bind a click handler to the widget's context element.\n         * @private\n         */\n        _create: function () {\n            this.element.on('click', $.proxy(this._toggleVisibility, this));\n            $(this.element.data('selector').id).find('.giftmessage-area')\n                .on('change', $.proxy(this._toggleRequired, this));\n        },\n\n        /**\n         * Toggle the visibility of the widget's context element's selector(s).\n         * @private\n         * @param {jQuery.Event} event - Click event. Target is a checkbox.\n         */\n        _toggleVisibility: function (event) {\n            var checkbox = event ? $(event.target) : this.element,\n                container = $(checkbox.data('selector').id),\n                _this;\n\n            if (checkbox.is(':checked')) {\n                container.show()\n                    .find('.giftmessage-area:not(:visible)').each(function (x, element) {\n                        if ($(element).val().length > 0) {\n                            $(element).trigger('change');\n                            container.find('a').trigger('click');\n                        }\n                    });\n            } else {\n                _this = this;\n                container.hide()\n                    .find('.input-text:not(.giftmessage-area)').each(function (x, element) {\n                        $(element).val(element.defaultValue).removeClass(_this.options.mageError)\n                            .next('div.' + _this.options.mageError).remove();\n                    }).end()\n                    .find('.giftmessage-area').val('').change().end()\n                    .find('.select').val('').change().end()\n                    .find('.checkbox:checked').prop('checked', false).trigger('click').prop('checked', false).end()\n                    .find('.price-box').addClass(this.options.noDisplay).end();\n            }\n        },\n\n        /**\n         * Make the From and To input fields required if a gift message has been written.\n         * @private\n         * @param {jQuery.Event} event - Change event. Target is a textarea.\n         */\n        _toggleRequired: function (event) {\n            var textArea = $(event.target),\n                length = textArea.val().length;\n\n            textArea.closest('li').prev('.fields')\n                .find('.input-text').toggleClass(this.options.requiredEntry, length > 0);\n        }\n    });\n\n    return $.mage.giftOptions;\n});\n","Magento_GiftMessage/js/action/gift-options.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\n/**\n * @api\n */\ndefine([\n    'Magento_GiftMessage/js/model/url-builder',\n    'mage/storage',\n    'Magento_Ui/js/model/messageList',\n    'Magento_Checkout/js/model/error-processor',\n    'mage/url',\n    'Magento_Checkout/js/model/quote',\n    'underscore'\n], function (urlBuilder, storage, messageList, errorProcessor, url, quote, _) {\n    'use strict';\n\n    return function (giftMessage, remove) {\n        var serviceUrl;\n\n        url.setBaseUrl(giftMessage.getConfigValue('baseUrl'));\n\n        if (giftMessage.getConfigValue('isCustomerLoggedIn')) {\n            serviceUrl = urlBuilder.createUrl('/carts/mine/gift-message', {});\n\n            if (giftMessage.itemId != 'orderLevel') { //eslint-disable-line eqeqeq\n                serviceUrl = urlBuilder.createUrl('/carts/mine/gift-message/:itemId', {\n                    itemId: giftMessage.itemId\n                });\n            }\n        } else {\n            serviceUrl = urlBuilder.createUrl('/guest-carts/:cartId/gift-message', {\n                cartId: quote.getQuoteId()\n            });\n\n            if (giftMessage.itemId != 'orderLevel') { //eslint-disable-line eqeqeq\n                serviceUrl = urlBuilder.createUrl(\n                    '/guest-carts/:cartId/gift-message/:itemId',\n                    {\n                        cartId: quote.getQuoteId(), itemId: giftMessage.itemId\n                    }\n                );\n            }\n        }\n        messageList.clear();\n\n        storage.post(\n            serviceUrl,\n            JSON.stringify({\n                'gift_message': giftMessage.getSubmitParams(remove)\n            })\n        ).done(function () {\n            giftMessage.reset();\n            _.each(giftMessage.getAfterSubmitCallbacks(), function (callback) {\n                if (_.isFunction(callback)) {\n                    callback();\n                }\n            });\n        }).fail(function (response) {\n            errorProcessor.process(response);\n        });\n    };\n});\n","Magento_GiftMessage/js/view/gift-message.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\ndefine([\n    'uiComponent',\n    'Magento_GiftMessage/js/model/gift-message',\n    'Magento_GiftMessage/js/model/gift-options',\n    'Magento_GiftMessage/js/action/gift-options'\n], function (Component, GiftMessage, giftOptions, giftOptionsService) {\n    'use strict';\n\n    return Component.extend({\n        formBlockVisibility: null,\n        resultBlockVisibility: null,\n        model: {},\n\n        /**\n         * Component init\n         */\n        initialize: function () {\n            var self = this,\n                model;\n\n            this._super()\n                .observe('formBlockVisibility')\n                .observe({\n                    'resultBlockVisibility': false\n                });\n\n            this.itemId = this.itemId || 'orderLevel';\n            model = new GiftMessage(this.itemId);\n            this.model = model;\n            this.isResultBlockVisible();\n            giftOptions.addOption(model);\n\n            this.model.getObservable('isClear').subscribe(function (value) {\n                if (value == true) { //eslint-disable-line eqeqeq\n                    self.formBlockVisibility(false);\n                    self.model.getObservable('alreadyAdded')(true);\n                }\n            });\n        },\n\n        /**\n         * Is reslt block visible\n         */\n        isResultBlockVisible: function () {\n            var self = this;\n\n            if (this.model.getObservable('alreadyAdded')()) {\n                this.resultBlockVisibility(true);\n            }\n            this.model.getObservable('additionalOptionsApplied').subscribe(function (value) {\n                if (value == true) { //eslint-disable-line eqeqeq\n                    self.resultBlockVisibility(true);\n                }\n            });\n        },\n\n        /**\n         * @param {String} key\n         * @return {*}\n         */\n        getObservable: function (key) {\n            return this.model.getObservable(key);\n        },\n\n        /**\n         * Hide\\Show form block\n         */\n        toggleFormBlockVisibility: function () {\n            if (!this.model.getObservable('alreadyAdded')()) {\n                this.formBlockVisibility(!this.formBlockVisibility());\n            } else {\n                this.resultBlockVisibility(!this.resultBlockVisibility());\n            }\n        },\n\n        /**\n         * Edit options\n         */\n        editOptions: function () {\n            this.resultBlockVisibility(false);\n            this.formBlockVisibility(true);\n        },\n\n        /**\n         * Delete options\n         */\n        deleteOptions: function () {\n            giftOptionsService(this.model, true);\n        },\n\n        /**\n         * Hide form block\n         */\n        hideFormBlock: function () {\n            this.formBlockVisibility(false);\n\n            if (this.model.getObservable('alreadyAdded')()) {\n                this.resultBlockVisibility(true);\n            }\n        },\n\n        /**\n         * @return {Boolean}\n         */\n        hasActiveOptions: function () {\n            var regionData = this.getRegion('additionalOptions'),\n                options = regionData(),\n                i;\n\n            for (i = 0; i < options.length; i++) {\n                if (options[i].isActive()) {\n                    return true;\n                }\n            }\n\n            return false;\n        },\n\n        /**\n         * @return {Boolean}\n         */\n        isActive: function () {\n            return this.model.isGiftMessageAvailable();\n        },\n\n        /**\n         * Submit options\n         */\n        submitOptions: function () {\n            giftOptionsService(this.model);\n        }\n    });\n});\n","Magento_GiftMessage/js/model/gift-options.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\n/**\n * @api\n */\ndefine([\n    'underscore',\n    'ko'\n], function (_, ko) {\n    'use strict';\n\n    return {\n        options: ko.observableArray([]),\n\n        /**\n         * @param {Object} option\n         */\n        addOption: function (option) {\n            if (!this.options().hasOwnProperty(option.itemId)) {\n                this.options.push({\n                        id: option.itemId, value: option\n                    }\n                );\n            }\n        },\n\n        /**\n         * @param {*} itemId\n         * @return {*}\n         */\n        getOptionByItemId: function (itemId) {\n            var option = null;\n\n            _.each(this.options(), function (data) {\n                if (data.id === itemId) {\n                    option = data.value;\n\n                    return false;\n                }\n            });\n\n            return option;\n        }\n    };\n});\n","Magento_GiftMessage/js/model/gift-message.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\n/**\n * @api\n */\ndefine([\n    'uiElement',\n    'underscore',\n    'mage/url'\n], function (uiElement, _, url) {\n    'use strict';\n\n    var provider = uiElement();\n\n    return function (itemId) {\n        var model = {\n            id: 'message-' + itemId,\n            itemId: itemId,\n            observables: {},\n            additionalOptions: [],\n            submitParams: [\n                'recipient',\n                'sender',\n                'message'\n            ],\n\n            /**\n             * Initialize.\n             */\n            initialize: function () {\n                var message = false;\n\n                this.getObservable('alreadyAdded')(false);\n\n                if (this.itemId == 'orderLevel') { //eslint-disable-line eqeqeq\n                    message = window.giftOptionsConfig.giftMessage.hasOwnProperty(this.itemId) ?\n                        window.giftOptionsConfig.giftMessage[this.itemId] :\n                        null;\n                } else {\n                    message =\n                        window.giftOptionsConfig.giftMessage.hasOwnProperty('itemLevel') &&\n                        window.giftOptionsConfig.giftMessage.itemLevel.hasOwnProperty(this.itemId) ?\n                            window.giftOptionsConfig.giftMessage.itemLevel[this.itemId].message :\n                            null;\n                }\n\n                if (_.isObject(message)) {\n                    this.getObservable('recipient')(message.recipient);\n                    this.getObservable('sender')(message.sender);\n                    this.getObservable('message')(message.message);\n                    this.getObservable('alreadyAdded')(true);\n                }\n            },\n\n            /**\n             * @param {String} key\n             * @return {*}\n             */\n            getObservable: function (key) {\n                this.initObservable(this.id, key);\n\n                return provider[this.getUniqueKey(this.id, key)];\n            },\n\n            /**\n             * @param {String} node\n             * @param {String} key\n             */\n            initObservable: function (node, key) {\n                if (node && !this.observables.hasOwnProperty(node)) {\n                    this.observables[node] = [];\n                }\n\n                if (key && this.observables[node].indexOf(key) === -1) {\n                    this.observables[node].push(key);\n                    provider.observe(this.getUniqueKey(node, key));\n                }\n            },\n\n            /**\n             * @param {String} node\n             * @param {String} key\n             * @return {String}\n             */\n            getUniqueKey: function (node, key) {\n                return node + '-' + key;\n            },\n\n            /**\n             * @param {String} key\n             * @return {null}\n             */\n            getConfigValue: function (key) {\n                return window.giftOptionsConfig.hasOwnProperty(key) ?\n                    window.giftOptionsConfig[key]\n                    : null;\n            },\n\n            /**\n             * Reset.\n             */\n            reset: function () {\n                this.getObservable('isClear')(true);\n            },\n\n            /**\n             * @return {Array}\n             */\n            getAfterSubmitCallbacks: function () {\n                var callbacks = [];\n\n                callbacks.push(this.afterSubmit);\n                _.each(this.additionalOptions, function (option) {\n                    if (_.isFunction(option.afterSubmit)) {\n                        callbacks.push(option.afterSubmit);\n                    }\n                });\n\n                return callbacks;\n            },\n\n            /**\n             * After submit.\n             */\n            afterSubmit: function () {\n                window.location.href = url.build('checkout/cart/updatePost') +\n                    '?form_key=' + window.checkoutConfig.formKey +\n                    '&cart[]';\n            },\n\n            /**\n             * @param {Boolean} remove\n             * @return {Object}\n             */\n            getSubmitParams: function (remove) {\n                var params = {},\n                    self = this;\n\n                _.each(this.submitParams, function (key) {\n                    var observable = provider[self.getUniqueKey(self.id, key)];\n\n                    if (_.isFunction(observable)) {\n                        params[key] = remove ? null : observable();\n                    }\n                });\n\n                if (this.additionalOptions.length) {\n                    params['extension_attributes'] = {};\n                }\n                _.each(this.additionalOptions, function (option) {\n                    if (_.isFunction(option.getSubmitParams)) {\n                        params['extension_attributes'] = _.extend(\n                            params['extension_attributes'],\n                            option.getSubmitParams(remove)\n                        );\n                    }\n                });\n\n                return params;\n            },\n\n            /**\n             * Check if gift message can be displayed\n             *\n             * @returns {Boolean}\n             */\n            isGiftMessageAvailable: function () {\n                var isGloballyAvailable,\n                    giftMessageConfig,\n                    itemConfig;\n\n                // itemId represent gift message level: 'orderLevel' constant or cart item ID\n                if (this.itemId === 'orderLevel') {\n                    return this.getConfigValue('isOrderLevelGiftOptionsEnabled');\n                }\n\n                // gift message product configuration must override system configuration\n                isGloballyAvailable = this.getConfigValue('isItemLevelGiftOptionsEnabled');\n                giftMessageConfig = window.giftOptionsConfig.giftMessage;\n                itemConfig = giftMessageConfig.hasOwnProperty('itemLevel') &&\n                    giftMessageConfig.itemLevel.hasOwnProperty(this.itemId) ?\n                    giftMessageConfig.itemLevel[this.itemId] :\n                    {};\n\n                return itemConfig.hasOwnProperty('is_available') ? itemConfig['is_available'] : isGloballyAvailable;\n            }\n        };\n\n        model.initialize();\n\n        return model;\n    };\n});\n","Magento_GiftMessage/js/model/url-builder.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\ndefine([\n    'jquery',\n    'Magento_Checkout/js/model/url-builder'\n], function ($, urlBuilder) {\n    'use strict';\n\n    return $.extend(urlBuilder, {\n        storeCode: window.giftOptionsConfig.storeCode\n    });\n});\n","Magento_Persistent/js/view/customer-data-mixin.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\ndefine([\n    'jquery',\n    'mage/utils/wrapper'\n], function ($, wrapper) {\n    'use strict';\n\n    var mixin = {\n\n        /**\n         * Check if persistent section is expired due to lifetime.\n         *\n         * @param {Function} originFn - Original method.\n         * @return {Array}\n         */\n        getExpiredSectionNames: function (originFn) {\n            var expiredSections = originFn(),\n                storage = $.initNamespaceStorage('mage-cache-storage').localStorage,\n                currentTimestamp = Math.floor(Date.now() / 1000),\n                persistentIndex = expiredSections.indexOf('persistent'),\n                persistentLifeTime = 0,\n                sectionData;\n\n            if (window.persistent !== undefined && window.persistent.expirationLifetime !== undefined) {\n                persistentLifeTime = window.persistent.expirationLifetime;\n            }\n\n            if (persistentIndex !== -1) {\n                sectionData = storage.get('persistent');\n\n                if (typeof sectionData === 'object' &&\n                    sectionData['data_id'] + persistentLifeTime >= currentTimestamp\n                ) {\n                    expiredSections.splice(persistentIndex, 1);\n                }\n            }\n\n            return expiredSections;\n        },\n\n        /**\n         * @param {Object} settings\n         * @constructor\n         */\n        'Magento_Customer/js/customer-data': function (originFn) {\n            let mageCacheTimeout = new Date($.localStorage.get('mage-cache-timeout')),\n                mageCacheSessId = $.cookieStorage.isSet('mage-cache-sessid');\n\n            originFn();\n            if (window.persistent !== undefined && (mageCacheTimeout < new Date() || !mageCacheSessId)) {\n                this.reload(['persistent','cart'],true);\n            }\n        }\n    };\n\n    /**\n     * Override default customer-data.getExpiredSectionNames().\n     */\n    return function (target) {\n        return wrapper.extend(target, mixin);\n    };\n});\n","Magento_Persistent/js/view/additional-welcome.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\ndefine([\n    'jquery',\n    'mage/translate',\n    'Magento_Customer/js/customer-data'\n], function ($, $t, customerData) {\n    'use strict';\n\n    return {\n        /**\n         * Init.\n         */\n        init: function () {\n            var persistent = customerData.get('persistent');\n\n            if (persistent().fullname === undefined) {\n                customerData.get('persistent').subscribe(this.replacePersistentWelcome);\n            } else {\n                this.replacePersistentWelcome();\n            }\n        },\n\n        /**\n         * Replace welcome message for customer with persistent cookie.\n         */\n        replacePersistentWelcome: function () {\n            var persistent = customerData.get('persistent'),\n                welcomeElems;\n\n            if (persistent().fullname !== undefined) {\n                welcomeElems = $('li.greet.welcome > span.not-logged-in');\n\n                if (welcomeElems.length) {\n                    $(welcomeElems).each(function () {\n                        var html = $t('Welcome, %1!').replace('%1', persistent().fullname);\n\n                        $(this).attr('data-bind', html);\n                        $(this).html(html);\n                    });\n                    $(welcomeElems).append(' <span><a ' + window.notYouLink + '>' + $t('Not you?') + '</a>');\n                }\n            }\n        },\n\n        /**\n         * @constructor\n         */\n        'Magento_Persistent/js/view/additional-welcome': function () {\n            this.init();\n        }\n    };\n});\n","Magento_Sales/js/orders-returns.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\ndefine([\n    'jquery',\n    'jquery-ui-modules/widget'\n], function ($) {\n    'use strict';\n\n    $.widget('mage.ordersReturns', {\n        options: {\n            zipCode: '#oar-zip', // Search by zip code.\n            emailAddress: '#oar-email', // Search by email address.\n            searchType: '#quick-search-type-id' // Search element used for choosing between the two.\n        },\n\n        /** @inheritdoc */\n        _create: function () {\n            $(this.options.searchType).on('change', $.proxy(this._showIdentifyBlock, this)).trigger('change');\n        },\n\n        /**\n         * Show either the search by zip code option or the search by email address option.\n         * @private\n         * @param {jQuery.Event} e - Change event. Event target value is either 'zip' or 'email'.\n         */\n        _showIdentifyBlock: function (e) {\n            var value = $(e.target).val();\n\n            $(this.options.zipCode).toggle(value === 'zip');\n            $(this.options.emailAddress).toggle(value === 'email');\n        }\n    });\n\n    return $.mage.ordersReturns;\n});\n","Magento_Sales/js/gift-message.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\ndefine([\n    'jquery',\n    'jquery-ui-modules/widget'\n], function ($) {\n    'use strict';\n\n    $.widget('mage.giftMessage', {\n        options: {\n            rowPrefix: '#order-item-row-', // Selector prefix for item's row in the table.\n            linkPrefix: '#order-item-gift-message-link-', // Selector prefix for the 'Gift Message' link.\n            duration: 100, // Toggle duration.\n            expandedClass: 'expanded', // Class added/removed to/from the 'Gift Message' link.\n            expandedContentClass: 'expanded-content', // Class added/removed to/from the 'Gift Message' content.\n            lastClass: 'last' // Class added/removed to/from the last item's row in the products table.\n        },\n\n        /**\n         * Bind a click handler on the widget's element to toggle the gift message.\n         * @private\n         */\n        _create: function () {\n            this.element.on('click', $.proxy(this._toggleGiftMessage, this));\n        },\n\n        /**\n         * Toggle the display of the item's corresponding gift message.\n         * @private\n         * @param {jQuery.Event} event - Click event.\n         */\n        _toggleGiftMessage: function (event) {\n            var element = $(event.target), // Click target. The 'Gift Message' link or 'Close' button.\n                options = this.options, // Cached widget options.\n                itemId = element.data('item-id'), // The individual item's numeric id.\n                link = $(options.linkPrefix + itemId), // The 'Gift Message' expandable link.\n                row = $(options.rowPrefix + itemId), // The item's row in the products table.\n                region = $('#' + element.attr('aria-controls')); // The gift message container region.\n\n            region.toggleClass(options.expandedContentClass, options.duration, function () {\n                if (region.attr('aria-expanded') === 'true') {\n                    region.attr('aria-expanded', 'false');\n\n                    if (region.hasClass(options.lastClass)) {\n                        row.addClass(options.lastClass);\n                    }\n                } else {\n                    region.attr('aria-expanded', 'true');\n\n                    if (region.hasClass(options.lastClass)) {\n                        row.removeClass(options.lastClass);\n                    }\n                }\n                link.toggleClass(options.expandedClass);\n            });\n            event.preventDefault(); // Prevent event propagation and avoid going to the link's href.\n        }\n    });\n\n    return $.mage.giftMessage;\n});\n","Magento_Sales/js/view/last-ordered-items.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\ndefine([\n    'uiComponent',\n    'Magento_Customer/js/customer-data',\n    'underscore'\n], function (Component, customerData, _) {\n    'use strict';\n\n    return Component.extend({\n        defaults: {\n            isShowAddToCart: false\n        },\n\n        /** @inheritdoc */\n        initialize: function () {\n            this._super();\n            this.lastOrderedItems = customerData.get('last-ordered-items');\n            this.lastOrderedItems.subscribe(this.checkSalableItems.bind(this));\n            this.checkSalableItems();\n\n            return this;\n        },\n\n        /** @inheritdoc */\n        initObservable: function () {\n            this._super()\n                .observe('isShowAddToCart');\n\n            return this;\n        },\n\n        /**\n         * Check if items is_saleable and change add to cart button visibility.\n         */\n        checkSalableItems: function () {\n            var isShowAddToCart = _.some(this.lastOrderedItems().items, {\n                'is_saleable': true\n            });\n\n            this.isShowAddToCart(isShowAddToCart);\n        }\n    });\n});\n","Magento_Fedex/js/view/shipping-rates-validation.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\ndefine([\n    'uiComponent',\n    'Magento_Checkout/js/model/shipping-rates-validator',\n    'Magento_Checkout/js/model/shipping-rates-validation-rules',\n    'Magento_Fedex/js/model/shipping-rates-validator',\n    'Magento_Fedex/js/model/shipping-rates-validation-rules'\n], function (\n    Component,\n    defaultShippingRatesValidator,\n    defaultShippingRatesValidationRules,\n    fedexShippingRatesValidator,\n    fedexShippingRatesValidationRules\n) {\n    'use strict';\n\n    defaultShippingRatesValidator.registerValidator('fedex', fedexShippingRatesValidator);\n    defaultShippingRatesValidationRules.registerRules('fedex', fedexShippingRatesValidationRules);\n\n    return Component;\n});\n","Magento_Fedex/js/model/shipping-rates-validator.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\ndefine([\n    'jquery',\n    'mageUtils',\n    'Magento_Fedex/js/model/shipping-rates-validation-rules',\n    'mage/translate'\n], function ($, utils, validationRules, $t) {\n    'use strict';\n\n    return {\n        validationErrors: [],\n\n        /**\n         * @param {Object} address\n         * @return {Boolean}\n         */\n        validate: function (address) {\n            var self = this;\n\n            this.validationErrors = [];\n            $.each(validationRules.getRules(), function (field, rule) {\n                var message;\n\n                if (rule.required && utils.isEmpty(address[field])) {\n                    message = $t('Field ') + field + $t(' is required.');\n\n                    self.validationErrors.push(message);\n                }\n            });\n\n            return !this.validationErrors.length;\n        }\n    };\n});\n","Magento_Fedex/js/model/shipping-rates-validation-rules.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\ndefine([], function () {\n    'use strict';\n\n    return {\n        /**\n         * @return {Object}\n         */\n        getRules: function () {\n            return {\n                'postcode': {\n                    'required': true\n                },\n                'country_id': {\n                    'required': true\n                },\n                'city': {\n                    'required': true\n                }\n            };\n        }\n    };\n});\n","Torresani_SiWeGO/js/view/shipping-rates-validation.js":"/**\n * Copyright \u00a9 2015 Magento. All rights reserved.\n * See COPYING.txt for license details.\n */\n/*browser:true*/\n/*global define*/\ndefine(\n    [\n        'uiComponent',\n        'Magento_Checkout/js/model/shipping-rates-validator',\n        'Magento_Checkout/js/model/shipping-rates-validation-rules',\n        '../model/shipping-rates-validator',\n        '../model/shipping-rates-validation-rules'\n    ],\n    function (\n        Component,\n        defaultShippingRatesValidator,\n        defaultShippingRatesValidationRules,\n        siwegoShippingRatesValidator,\n        siwegoShippingRatesValidationRules\n    ) {\n        \"use strict\";\n        defaultShippingRatesValidator.registerValidator('siwego', siwegoShippingRatesValidator);\n        defaultShippingRatesValidationRules.registerRules('siwego', siwegoShippingRatesValidationRules);\n        return Component;\n    }\n);\n","Torresani_SiWeGO/js/model/shipping-rates-validator.js":"define(\n    [\n        'jquery',\n        'mageUtils',\n        './shipping-rates-validation-rules',\n        'mage/translate'\n    ],\n    function ($, utils, validationRules, $t) {\n        \"use strict\";\n        return {\n            validationErrors: [],\n            validate: function (address) {\n                var self = this;\n                this.validationErrors = [];\n                $.each(validationRules.getRules(), function (field, rule) {\n                    if (rule.required && utils.isEmpty(address[field])) {\n                        var message = $t('Field ') + field + $t(' is required.');\n                        self.validationErrors.push(message);\n                    }\n                });\n                return !Boolean(this.validationErrors.length);\n            }\n        };\n    }\n);","Torresani_SiWeGO/js/model/shipping-rates-validation-rules.js":"/**\n * Copyright \u00a9 2015 Magento. All rights reserved.\n * See COPYING.txt for license details.\n */\n/*global define*/\ndefine(\n    [],\n    function () {\n        \"use strict\";\n        return {\n            getRules: function () {\n                return {\n                    'postcode': {\n                        'required': true\n                    },\n                    'country_id': {\n                        'required': true\n                    },\n                    'region_id' : {\n                        'required': false\n                    },\n                    'city' : {\n                        'required': false\n                    }\n                };\n            }\n        };\n    }\n);\n","Magento_LoginAsCustomerFrontendUi/js/login.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\ndefine([\n    'jquery',\n    'Magento_Customer/js/customer-data',\n    'Magento_Customer/js/section-config'\n], function ($, customerData, sectionConfig) {\n\n    'use strict';\n\n    return function (config) {\n        customerData.reload(sectionConfig.getSectionNames()).done(function () {\n            window.location.href = config.redirectUrl;\n        });\n    };\n});\n","Magento_LoginAsCustomerFrontendUi/js/view/loginAsCustomer.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\ndefine([\n    'jquery',\n    'underscore',\n    'uiComponent',\n    'Magento_Customer/js/customer-data',\n    'mage/translate'\n], function ($, _, Component, customer) {\n    'use strict';\n\n    return Component.extend({\n\n        defaults: {\n            isVisible: false\n        },\n\n        /** @inheritdoc */\n        initialize: function () {\n            var customerData, loggedAsCustomerData;\n\n            this._super();\n\n            customerData = customer.get('customer');\n            loggedAsCustomerData = customer.get('loggedAsCustomer');\n\n            customerData.subscribe(function (data) {\n                this.fullname = data.fullname;\n                this.updateBanner();\n            }.bind(this));\n            loggedAsCustomerData.subscribe(function (data) {\n                this.adminUserId = data.adminUserId;\n                this.websiteName = data.websiteName;\n                this.updateBanner();\n            }.bind(this));\n\n            this.fullname = customerData().fullname;\n            this.adminUserId = loggedAsCustomerData().adminUserId;\n            this.websiteName = loggedAsCustomerData().websiteName;\n\n            this.updateBanner();\n        },\n\n        /** @inheritdoc */\n        initObservable: function () {\n            this._super()\n                .observe(['isVisible', 'notificationText']);\n\n            return this;\n        },\n\n        /**\n         * Update banner area\n         *\n         * @returns void\n         */\n        updateBanner: function () {\n            if (this.adminUserId !== undefined) {\n                this.isVisible(this.adminUserId);\n            }\n\n            if (this.fullname !== undefined && this.websiteName !== undefined) {\n                this.notificationText($.mage.__('You are connected as <strong>%1</strong> on %2')\n                    .replace('%1', _.escape(this.fullname))\n                    .replace('%2', _.escape(this.websiteName)));\n            }\n        }\n    });\n});\n","Magento_PageBuilder/js/events.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\ndefine(['uiEvents'], function (uiEvents) {\n    'use strict';\n\n    return {\n\n        /**\n         * Calls callback when name event is triggered\n         *\n         * @param {String} events\n         * @param {Function} callback\n         * @param {Function} ns\n         * @return {Object}\n         */\n        on: function (events, callback, ns) {\n            uiEvents.on('pagebuilder:' + events, callback, 'pagebuilder:' + ns);\n\n            return this;\n        },\n\n        /**\n         * Removed callback from listening to target event\n         *\n         * @param {String} ns\n         * @return {Object}\n         */\n        off: function (ns) {\n            uiEvents.off('pagebuilder:' + ns);\n\n            return this;\n        },\n\n        /**\n         * Triggers event and executes all attached callbacks\n         *\n         * @param {String} name\n         * @param {any} args\n         * @returns {Boolean}\n         */\n        trigger: function (name, args) {\n            return uiEvents.trigger('pagebuilder:' + name, args);\n        }\n    };\n});\n","Magento_PageBuilder/js/widget-initializer.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\n/**\n * @api\n */\ndefine([\n    'underscore',\n    'jquery',\n    'mage/apply/main',\n    'Magento_Ui/js/lib/view/utils/dom-observer'\n], function (_, $, mage, domObserver) {\n    'use strict';\n\n    /**\n     * Initializes components assigned to HTML elements.\n     *\n     *\n     * @param {HTMLElement} el\n     * @param {Array} data\n     * @param {Object} breakpoints\n     * @param {Object} currentViewport\n     */\n    function initializeWidget(el, data, breakpoints, currentViewport) {\n        _.each(data, function (config, component) {\n            config = config || {};\n            config.breakpoints = breakpoints;\n            config.currentViewport = currentViewport;\n            mage.applyFor(el, config, component);\n        });\n    }\n\n    return function (data, contextElement) {\n        _.each(data.config, function (componentConfiguration, elementPath) {\n            domObserver.get(\n                elementPath,\n                function (element) {\n                    var $element = $(element);\n\n                    if (contextElement) {\n                        $element = $(contextElement).find(element);\n                    }\n\n                    if ($element.length) {\n                        initializeWidget($element, componentConfiguration, data.breakpoints, data.currentViewport);\n                    }\n                }\n            );\n        });\n    };\n});\n","Magento_PageBuilder/js/resource/slick/slick.min.js":"/*\n     _ _      _       _\n ___| (_) ___| | __  (_)___\n/ __| | |/ __| |/ /  | / __|\n\\__ \\ | | (__|   < _ | \\__ \\\n|___/_|_|\\___|_|\\_(_)/ |___/\n                   |__/\n\n Version: 1.9.0\n  Author: Ken Wheeler\n Website: http://kenwheeler.github.io\n    Docs: http://kenwheeler.github.io/slick\n    Repo: http://github.com/kenwheeler/slick\n  Issues: http://github.com/kenwheeler/slick/issues\n\n */\n(function(i){\"use strict\";\"function\"==typeof define&&define.amd?define([\"jquery\"],i):\"undefined\"!=typeof exports?module.exports=i(require(\"jquery\")):i(jQuery)})(function(i){\"use strict\";var e=window.Slick||{};e=function(){function e(e,o){var s,n=this;n.defaults={accessibility:!0,adaptiveHeight:!1,appendArrows:i(e),appendDots:i(e),arrows:!0,asNavFor:null,prevArrow:'<button class=\"slick-prev\" aria-label=\"Previous\" type=\"button\">Previous</button>',nextArrow:'<button class=\"slick-next\" aria-label=\"Next\" type=\"button\">Next</button>',autoplay:!1,autoplaySpeed:3e3,centerMode:!1,centerPadding:\"50px\",cssEase:\"ease\",customPaging:function(e,t){return i('<button type=\"button\" />').text(t+1)},dots:!1,dotsClass:\"slick-dots\",draggable:!0,easing:\"linear\",edgeFriction:.35,fade:!1,focusOnSelect:!1,focusOnChange:!1,infinite:!0,initialSlide:0,lazyLoad:\"ondemand\",mobileFirst:!1,pauseOnHover:!0,pauseOnFocus:!0,pauseOnDotsHover:!1,respondTo:\"window\",responsive:null,rows:1,rtl:!1,slide:\"\",slidesPerRow:1,slidesToShow:1,slidesToScroll:1,speed:500,swipe:!0,swipeToSlide:!1,touchMove:!0,touchThreshold:5,useCSS:!0,useTransform:!0,variableWidth:!1,vertical:!1,verticalSwiping:!1,waitForAnimate:!0,zIndex:1e3},n.initials={animating:!1,dragging:!1,autoPlayTimer:null,currentDirection:0,currentLeft:null,currentSlide:0,direction:1,$dots:null,listWidth:null,listHeight:null,loadIndex:0,$nextArrow:null,$prevArrow:null,scrolling:!1,slideCount:null,slideWidth:null,$slideTrack:null,$slides:null,sliding:!1,slideOffset:0,swipeLeft:null,swiping:!1,$list:null,touchObject:{},transformsEnabled:!1,unslicked:!1},i.extend(n,n.initials),n.activeBreakpoint=null,n.animType=null,n.animProp=null,n.breakpoints=[],n.breakpointSettings=[],n.cssTransitions=!1,n.focussed=!1,n.interrupted=!1,n.hidden=\"hidden\",n.paused=!0,n.positionProp=null,n.respondTo=null,n.rowCount=1,n.shouldClick=!0,n.$slider=i(e),n.$slidesCache=null,n.transformType=null,n.transitionType=null,n.visibilityChange=\"visibilitychange\",n.windowWidth=0,n.windowTimer=null,s=i(e).data(\"slick\")||{},n.options=i.extend({},n.defaults,o,s),n.currentSlide=n.options.initialSlide,n.originalSettings=n.options,\"undefined\"!=typeof document.mozHidden?(n.hidden=\"mozHidden\",n.visibilityChange=\"mozvisibilitychange\"):\"undefined\"!=typeof document.webkitHidden&&(n.hidden=\"webkitHidden\",n.visibilityChange=\"webkitvisibilitychange\"),n.autoPlay=i.proxy(n.autoPlay,n),n.autoPlayClear=i.proxy(n.autoPlayClear,n),n.autoPlayIterator=i.proxy(n.autoPlayIterator,n),n.changeSlide=i.proxy(n.changeSlide,n),n.clickHandler=i.proxy(n.clickHandler,n),n.selectHandler=i.proxy(n.selectHandler,n),n.setPosition=i.proxy(n.setPosition,n),n.swipeHandler=i.proxy(n.swipeHandler,n),n.dragHandler=i.proxy(n.dragHandler,n),n.keyHandler=i.proxy(n.keyHandler,n),n.instanceUid=t++,n.htmlExpr=/^(?:\\s*(<[\\w\\W]+>)[^>]*)$/,n.registerBreakpoints(),n.init(!0)}var t=0;return e}(),e.prototype.activateADA=function(){var i=this;i.$slideTrack.find(\".slick-active\").attr({\"aria-hidden\":\"false\"}).find(\"a, input, button, select\").attr({tabindex:\"0\"})},e.prototype.addSlide=e.prototype.slickAdd=function(e,t,o){var s=this;if(\"boolean\"==typeof t)o=t,t=null;else if(t<0||t>=s.slideCount)return!1;s.unload(),\"number\"==typeof t?0===t&&0===s.$slides.length?i(e).appendTo(s.$slideTrack):o?i(e).insertBefore(s.$slides.eq(t)):i(e).insertAfter(s.$slides.eq(t)):o===!0?i(e).prependTo(s.$slideTrack):i(e).appendTo(s.$slideTrack),s.$slides=s.$slideTrack.children(this.options.slide),s.$slideTrack.children(this.options.slide).detach(),s.$slideTrack.append(s.$slides),s.$slides.each(function(e,t){i(t).attr(\"data-slick-index\",e)}),s.$slidesCache=s.$slides,s.reinit()},e.prototype.animateHeight=function(){var i=this;if(1===i.options.slidesToShow&&i.options.adaptiveHeight===!0&&i.options.vertical===!1){var e=i.$slides.eq(i.currentSlide).outerHeight(!0);i.$list.animate({height:e},i.options.speed)}},e.prototype.animateSlide=function(e,t){var o={},s=this;s.animateHeight(),s.options.rtl===!0&&s.options.vertical===!1&&(e=-e),s.transformsEnabled===!1?s.options.vertical===!1?s.$slideTrack.animate({left:e},s.options.speed,s.options.easing,t):s.$slideTrack.animate({top:e},s.options.speed,s.options.easing,t):s.cssTransitions===!1?(s.options.rtl===!0&&(s.currentLeft=-s.currentLeft),i({animStart:s.currentLeft}).animate({animStart:e},{duration:s.options.speed,easing:s.options.easing,step:function(i){i=Math.ceil(i),s.options.vertical===!1?(o[s.animType]=\"translate(\"+i+\"px, 0px)\",s.$slideTrack.css(o)):(o[s.animType]=\"translate(0px,\"+i+\"px)\",s.$slideTrack.css(o))},complete:function(){t&&t.call()}})):(s.applyTransition(),e=Math.ceil(e),s.options.vertical===!1?o[s.animType]=\"translate3d(\"+e+\"px, 0px, 0px)\":o[s.animType]=\"translate3d(0px,\"+e+\"px, 0px)\",s.$slideTrack.css(o),t&&setTimeout(function(){s.disableTransition(),t.call()},s.options.speed))},e.prototype.getNavTarget=function(){var e=this,t=e.options.asNavFor;return t&&null!==t&&(t=i(t).not(e.$slider)),t},e.prototype.asNavFor=function(e){var t=this,o=t.getNavTarget();null!==o&&\"object\"==typeof o&&o.each(function(){var t=i(this).slick(\"getSlick\");t.unslicked||t.slideHandler(e,!0)})},e.prototype.applyTransition=function(i){var e=this,t={};e.options.fade===!1?t[e.transitionType]=e.transformType+\" \"+e.options.speed+\"ms \"+e.options.cssEase:t[e.transitionType]=\"opacity \"+e.options.speed+\"ms \"+e.options.cssEase,e.options.fade===!1?e.$slideTrack.css(t):e.$slides.eq(i).css(t)},e.prototype.autoPlay=function(){var i=this;i.autoPlayClear(),i.slideCount>i.options.slidesToShow&&(i.autoPlayTimer=setInterval(i.autoPlayIterator,i.options.autoplaySpeed))},e.prototype.autoPlayClear=function(){var i=this;i.autoPlayTimer&&clearInterval(i.autoPlayTimer)},e.prototype.autoPlayIterator=function(){var i=this,e=i.currentSlide+i.options.slidesToScroll;i.paused||i.interrupted||i.focussed||(i.options.infinite===!1&&(1===i.direction&&i.currentSlide+1===i.slideCount-1?i.direction=0:0===i.direction&&(e=i.currentSlide-i.options.slidesToScroll,i.currentSlide-1===0&&(i.direction=1))),i.slideHandler(e))},e.prototype.buildArrows=function(){var e=this;e.options.arrows===!0&&(e.$prevArrow=i(e.options.prevArrow).addClass(\"slick-arrow\"),e.$nextArrow=i(e.options.nextArrow).addClass(\"slick-arrow\"),e.slideCount>e.options.slidesToShow?(e.$prevArrow.removeClass(\"slick-hidden\").removeAttr(\"aria-hidden tabindex\"),e.$nextArrow.removeClass(\"slick-hidden\").removeAttr(\"aria-hidden tabindex\"),e.htmlExpr.test(e.options.prevArrow)&&e.$prevArrow.prependTo(e.options.appendArrows),e.htmlExpr.test(e.options.nextArrow)&&e.$nextArrow.appendTo(e.options.appendArrows),e.options.infinite!==!0&&e.$prevArrow.addClass(\"slick-disabled\").attr(\"aria-disabled\",\"true\")):e.$prevArrow.add(e.$nextArrow).addClass(\"slick-hidden\").attr({\"aria-disabled\":\"true\",tabindex:\"-1\"}))},e.prototype.buildDots=function(){var e,t,o=this;if(o.options.dots===!0&&o.slideCount>o.options.slidesToShow){for(o.$slider.addClass(\"slick-dotted\"),t=i(\"<ul />\").addClass(o.options.dotsClass),e=0;e<=o.getDotCount();e+=1)t.append(i(\"<li />\").append(o.options.customPaging.call(this,o,e)));o.$dots=t.appendTo(o.options.appendDots),o.$dots.find(\"li\").first().addClass(\"slick-active\")}},e.prototype.buildOut=function(){var e=this;e.$slides=e.$slider.children(e.options.slide+\":not(.slick-cloned)\").addClass(\"slick-slide\"),e.slideCount=e.$slides.length,e.$slides.each(function(e,t){i(t).attr(\"data-slick-index\",e).data(\"originalStyling\",i(t).attr(\"style\")||\"\")}),e.$slider.addClass(\"slick-slider\"),e.$slideTrack=0===e.slideCount?i('<div class=\"slick-track\"/>').appendTo(e.$slider):e.$slides.wrapAll('<div class=\"slick-track\"/>').parent(),e.$list=e.$slideTrack.wrap('<div class=\"slick-list\"/>').parent(),e.$slideTrack.css(\"opacity\",0),e.options.centerMode!==!0&&e.options.swipeToSlide!==!0||(e.options.slidesToScroll=1),i(\"img[data-lazy]\",e.$slider).not(\"[src]\").addClass(\"slick-loading\"),e.setupInfinite(),e.buildArrows(),e.buildDots(),e.updateDots(),e.setSlideClasses(\"number\"==typeof e.currentSlide?e.currentSlide:0),e.options.draggable===!0&&e.$list.addClass(\"draggable\")},e.prototype.buildRows=function(){var i,e,t,o,s,n,r,l=this;if(o=document.createDocumentFragment(),n=l.$slider.children(),l.options.rows>0){for(r=l.options.slidesPerRow*l.options.rows,s=Math.ceil(n.length/r),i=0;i<s;i++){var d=document.createElement(\"div\");for(e=0;e<l.options.rows;e++){var a=document.createElement(\"div\");for(t=0;t<l.options.slidesPerRow;t++){var c=i*r+(e*l.options.slidesPerRow+t);n.get(c)&&a.appendChild(n.get(c))}d.appendChild(a)}o.appendChild(d)}l.$slider.empty().append(o),l.$slider.children().children().children().css({width:100/l.options.slidesPerRow+\"%\",display:\"inline-block\"})}},e.prototype.checkResponsive=function(e,t){var o,s,n,r=this,l=!1,d=r.$slider.width(),a=window.innerWidth||i(window).width();if(\"window\"===r.respondTo?n=a:\"slider\"===r.respondTo?n=d:\"min\"===r.respondTo&&(n=Math.min(a,d)),r.options.responsive&&r.options.responsive.length&&null!==r.options.responsive){s=null;for(o in r.breakpoints)r.breakpoints.hasOwnProperty(o)&&(r.originalSettings.mobileFirst===!1?n<r.breakpoints[o]&&(s=r.breakpoints[o]):n>r.breakpoints[o]&&(s=r.breakpoints[o]));null!==s?null!==r.activeBreakpoint?(s!==r.activeBreakpoint||t)&&(r.activeBreakpoint=s,\"unslick\"===r.breakpointSettings[s]?r.unslick(s):(r.options=i.extend({},r.originalSettings,r.breakpointSettings[s]),e===!0&&(r.currentSlide=r.options.initialSlide),r.refresh(e)),l=s):(r.activeBreakpoint=s,\"unslick\"===r.breakpointSettings[s]?r.unslick(s):(r.options=i.extend({},r.originalSettings,r.breakpointSettings[s]),e===!0&&(r.currentSlide=r.options.initialSlide),r.refresh(e)),l=s):null!==r.activeBreakpoint&&(r.activeBreakpoint=null,r.options=r.originalSettings,e===!0&&(r.currentSlide=r.options.initialSlide),r.refresh(e),l=s),e||l===!1||r.$slider.trigger(\"breakpoint\",[r,l])}},e.prototype.changeSlide=function(e,t){var o,s,n,r=this,l=i(e.currentTarget);switch(l.is(\"a\")&&e.preventDefault(),l.is(\"li\")||(l=l.closest(\"li\")),n=r.slideCount%r.options.slidesToScroll!==0,o=n?0:(r.slideCount-r.currentSlide)%r.options.slidesToScroll,e.data.message){case\"previous\":s=0===o?r.options.slidesToScroll:r.options.slidesToShow-o,r.slideCount>r.options.slidesToShow&&r.slideHandler(r.currentSlide-s,!1,t);break;case\"next\":s=0===o?r.options.slidesToScroll:o,r.slideCount>r.options.slidesToShow&&r.slideHandler(r.currentSlide+s,!1,t);break;case\"index\":var d=0===e.data.index?0:e.data.index||l.index()*r.options.slidesToScroll;r.slideHandler(r.checkNavigable(d),!1,t),l.children().trigger(\"focus\");break;default:return}},e.prototype.checkNavigable=function(i){var e,t,o=this;if(e=o.getNavigableIndexes(),t=0,i>e[e.length-1])i=e[e.length-1];else for(var s in e){if(i<e[s]){i=t;break}t=e[s]}return i},e.prototype.cleanUpEvents=function(){var e=this;e.options.dots&&null!==e.$dots&&(i(\"li\",e.$dots).off(\"click.slick\",e.changeSlide).off(\"mouseenter.slick\",i.proxy(e.interrupt,e,!0)).off(\"mouseleave.slick\",i.proxy(e.interrupt,e,!1)),e.options.accessibility===!0&&e.$dots.off(\"keydown.slick\",e.keyHandler)),e.$slider.off(\"focus.slick blur.slick\"),e.options.arrows===!0&&e.slideCount>e.options.slidesToShow&&(e.$prevArrow&&e.$prevArrow.off(\"click.slick\",e.changeSlide),e.$nextArrow&&e.$nextArrow.off(\"click.slick\",e.changeSlide),e.options.accessibility===!0&&(e.$prevArrow&&e.$prevArrow.off(\"keydown.slick\",e.keyHandler),e.$nextArrow&&e.$nextArrow.off(\"keydown.slick\",e.keyHandler))),e.$list.off(\"touchstart.slick mousedown.slick\",e.swipeHandler),e.$list.off(\"touchmove.slick mousemove.slick\",e.swipeHandler),e.$list.off(\"touchend.slick mouseup.slick\",e.swipeHandler),e.$list.off(\"touchcancel.slick mouseleave.slick\",e.swipeHandler),e.$list.off(\"click.slick\",e.clickHandler),i(document).off(e.visibilityChange,e.visibility),e.cleanUpSlideEvents(),e.options.accessibility===!0&&e.$list.off(\"keydown.slick\",e.keyHandler),e.options.focusOnSelect===!0&&i(e.$slideTrack).children().off(\"click.slick\",e.selectHandler),i(window).off(\"orientationchange.slick.slick-\"+e.instanceUid,e.orientationChange),i(window).off(\"resize.slick.slick-\"+e.instanceUid,e.resize),i(\"[draggable!=true]\",e.$slideTrack).off(\"dragstart\",e.preventDefault),i(window).off(\"load.slick.slick-\"+e.instanceUid,e.setPosition)},e.prototype.cleanUpSlideEvents=function(){var e=this;e.$list.off(\"mouseenter.slick\",i.proxy(e.interrupt,e,!0)),e.$list.off(\"mouseleave.slick\",i.proxy(e.interrupt,e,!1))},e.prototype.cleanUpRows=function(){var i,e=this;e.options.rows>0&&(i=e.$slides.children().children(),i.removeAttr(\"style\"),e.$slider.empty().append(i))},e.prototype.clickHandler=function(i){var e=this;e.shouldClick===!1&&(i.stopImmediatePropagation(),i.stopPropagation(),i.preventDefault())},e.prototype.destroy=function(e){var t=this;t.autoPlayClear(),t.touchObject={},t.cleanUpEvents(),i(\".slick-cloned\",t.$slider).detach(),t.$dots&&t.$dots.remove(),t.$prevArrow&&t.$prevArrow.length&&(t.$prevArrow.removeClass(\"slick-disabled slick-arrow slick-hidden\").removeAttr(\"aria-hidden aria-disabled tabindex\").css(\"display\",\"\"),t.htmlExpr.test(t.options.prevArrow)&&t.$prevArrow.remove()),t.$nextArrow&&t.$nextArrow.length&&(t.$nextArrow.removeClass(\"slick-disabled slick-arrow slick-hidden\").removeAttr(\"aria-hidden aria-disabled tabindex\").css(\"display\",\"\"),t.htmlExpr.test(t.options.nextArrow)&&t.$nextArrow.remove()),t.$slides&&(t.$slides.removeClass(\"slick-slide slick-active slick-center slick-visible slick-current\").removeAttr(\"aria-hidden\").removeAttr(\"data-slick-index\").each(function(){i(this).attr(\"style\",i(this).data(\"originalStyling\"))}),t.$slideTrack.children(this.options.slide).detach(),t.$slideTrack.detach(),t.$list.detach(),t.$slider.append(t.$slides)),t.cleanUpRows(),t.$slider.removeClass(\"slick-slider\"),t.$slider.removeClass(\"slick-initialized\"),t.$slider.removeClass(\"slick-dotted\"),t.unslicked=!0,e||t.$slider.trigger(\"destroy\",[t])},e.prototype.disableTransition=function(i){var e=this,t={};t[e.transitionType]=\"\",e.options.fade===!1?e.$slideTrack.css(t):e.$slides.eq(i).css(t)},e.prototype.fadeSlide=function(i,e){var t=this;t.cssTransitions===!1?(t.$slides.eq(i).css({zIndex:t.options.zIndex}),t.$slides.eq(i).animate({opacity:1},t.options.speed,t.options.easing,e)):(t.applyTransition(i),t.$slides.eq(i).css({opacity:1,zIndex:t.options.zIndex}),e&&setTimeout(function(){t.disableTransition(i),e.call()},t.options.speed))},e.prototype.fadeSlideOut=function(i){var e=this;e.cssTransitions===!1?e.$slides.eq(i).animate({opacity:0,zIndex:e.options.zIndex-2},e.options.speed,e.options.easing):(e.applyTransition(i),e.$slides.eq(i).css({opacity:0,zIndex:e.options.zIndex-2}))},e.prototype.filterSlides=e.prototype.slickFilter=function(i){var e=this;null!==i&&(e.$slidesCache=e.$slides,e.unload(),e.$slideTrack.children(this.options.slide).detach(),e.$slidesCache.filter(i).appendTo(e.$slideTrack),e.reinit())},e.prototype.focusHandler=function(){var e=this;e.$slider.off(\"focus.slick blur.slick\").on(\"focus.slick\",\"*\",function(t){var o=i(this);setTimeout(function(){e.options.pauseOnFocus&&o.is(\":focus\")&&(e.focussed=!0,e.autoPlay())},0)}).on(\"blur.slick\",\"*\",function(t){i(this);e.options.pauseOnFocus&&(e.focussed=!1,e.autoPlay())})},e.prototype.getCurrent=e.prototype.slickCurrentSlide=function(){var i=this;return i.currentSlide},e.prototype.getDotCount=function(){var i=this,e=0,t=0,o=0;if(i.options.infinite===!0)if(i.slideCount<=i.options.slidesToShow)++o;else for(;e<i.slideCount;)++o,e=t+i.options.slidesToScroll,t+=i.options.slidesToScroll<=i.options.slidesToShow?i.options.slidesToScroll:i.options.slidesToShow;else if(i.options.centerMode===!0)o=i.slideCount;else if(i.options.asNavFor)for(;e<i.slideCount;)++o,e=t+i.options.slidesToScroll,t+=i.options.slidesToScroll<=i.options.slidesToShow?i.options.slidesToScroll:i.options.slidesToShow;else o=1+Math.ceil((i.slideCount-i.options.slidesToShow)/i.options.slidesToScroll);return o-1},e.prototype.getLeft=function(i){var e,t,o,s,n=this,r=0;return n.slideOffset=0,t=n.$slides.first().outerHeight(!0),n.options.infinite===!0?(n.slideCount>n.options.slidesToShow&&(n.slideOffset=n.slideWidth*n.options.slidesToShow*-1,s=-1,n.options.vertical===!0&&n.options.centerMode===!0&&(2===n.options.slidesToShow?s=-1.5:1===n.options.slidesToShow&&(s=-2)),r=t*n.options.slidesToShow*s),n.slideCount%n.options.slidesToScroll!==0&&i+n.options.slidesToScroll>n.slideCount&&n.slideCount>n.options.slidesToShow&&(i>n.slideCount?(n.slideOffset=(n.options.slidesToShow-(i-n.slideCount))*n.slideWidth*-1,r=(n.options.slidesToShow-(i-n.slideCount))*t*-1):(n.slideOffset=n.slideCount%n.options.slidesToScroll*n.slideWidth*-1,r=n.slideCount%n.options.slidesToScroll*t*-1))):i+n.options.slidesToShow>n.slideCount&&(n.slideOffset=(i+n.options.slidesToShow-n.slideCount)*n.slideWidth,r=(i+n.options.slidesToShow-n.slideCount)*t),n.slideCount<=n.options.slidesToShow&&(n.slideOffset=0,r=0),n.options.centerMode===!0&&n.slideCount<=n.options.slidesToShow?n.slideOffset=n.slideWidth*Math.floor(n.options.slidesToShow)/2-n.slideWidth*n.slideCount/2:n.options.centerMode===!0&&n.options.infinite===!0?n.slideOffset+=n.slideWidth*Math.floor(n.options.slidesToShow/2)-n.slideWidth:n.options.centerMode===!0&&(n.slideOffset=0,n.slideOffset+=n.slideWidth*Math.floor(n.options.slidesToShow/2)),e=n.options.vertical===!1?i*n.slideWidth*-1+n.slideOffset:i*t*-1+r,n.options.variableWidth===!0&&(o=n.slideCount<=n.options.slidesToShow||n.options.infinite===!1?n.$slideTrack.children(\".slick-slide\").eq(i):n.$slideTrack.children(\".slick-slide\").eq(i+n.options.slidesToShow),e=n.options.rtl===!0?o[0]?(n.$slideTrack.width()-o[0].offsetLeft-o.width())*-1:0:o[0]?o[0].offsetLeft*-1:0,n.options.centerMode===!0&&(o=n.slideCount<=n.options.slidesToShow||n.options.infinite===!1?n.$slideTrack.children(\".slick-slide\").eq(i):n.$slideTrack.children(\".slick-slide\").eq(i+n.options.slidesToShow+1),e=n.options.rtl===!0?o[0]?(n.$slideTrack.width()-o[0].offsetLeft-o.width())*-1:0:o[0]?o[0].offsetLeft*-1:0,e+=(n.$list.width()-o.outerWidth())/2)),e},e.prototype.getOption=e.prototype.slickGetOption=function(i){var e=this;return e.options[i]},e.prototype.getNavigableIndexes=function(){var i,e=this,t=0,o=0,s=[];for(e.options.infinite===!1?i=e.slideCount:(t=e.options.slidesToScroll*-1,o=e.options.slidesToScroll*-1,i=2*e.slideCount);t<i;)s.push(t),t=o+e.options.slidesToScroll,o+=e.options.slidesToScroll<=e.options.slidesToShow?e.options.slidesToScroll:e.options.slidesToShow;return s},e.prototype.getSlick=function(){return this},e.prototype.getSlideCount=function(){var e,t,o,s,n=this;return s=n.options.centerMode===!0?Math.floor(n.$list.width()/2):0,o=n.swipeLeft*-1+s,n.options.swipeToSlide===!0?(n.$slideTrack.find(\".slick-slide\").each(function(e,s){var r,l,d;if(r=i(s).outerWidth(),l=s.offsetLeft,n.options.centerMode!==!0&&(l+=r/2),d=l+r,o<d)return t=s,!1}),e=Math.abs(i(t).attr(\"data-slick-index\")-n.currentSlide)||1):n.options.slidesToScroll},e.prototype.goTo=e.prototype.slickGoTo=function(i,e){var t=this;t.changeSlide({data:{message:\"index\",index:parseInt(i)}},e)},e.prototype.init=function(e){var t=this;i(t.$slider).hasClass(\"slick-initialized\")||(i(t.$slider).addClass(\"slick-initialized\"),t.buildRows(),t.buildOut(),t.setProps(),t.startLoad(),t.loadSlider(),t.initializeEvents(),t.updateArrows(),t.updateDots(),t.checkResponsive(!0),t.focusHandler()),e&&t.$slider.trigger(\"init\",[t]),t.options.accessibility===!0&&t.initADA(),t.options.autoplay&&(t.paused=!1,t.autoPlay())},e.prototype.initADA=function(){var e=this,t=Math.ceil(e.slideCount/e.options.slidesToShow),o=e.getNavigableIndexes().filter(function(i){return i>=0&&i<e.slideCount});e.$slides.add(e.$slideTrack.find(\".slick-cloned\")).attr({\"aria-hidden\":\"true\",tabindex:\"-1\"}).find(\"a, input, button, select\").attr({tabindex:\"-1\"}),null!==e.$dots&&(e.$slides.not(e.$slideTrack.find(\".slick-cloned\")).each(function(t){var s=o.indexOf(t);if(i(this).attr({role:\"tabpanel\",id:\"slick-slide\"+e.instanceUid+t,tabindex:-1}),s!==-1){var n=\"slick-slide-control\"+e.instanceUid+s;i(\"#\"+n).length&&i(this).attr({\"aria-describedby\":n})}}),e.$dots.attr(\"role\",\"tablist\").find(\"li\").each(function(s){var n=o[s];i(this).attr({role:\"presentation\"}),i(this).find(\"button\").first().attr({role:\"tab\",id:\"slick-slide-control\"+e.instanceUid+s,\"aria-controls\":\"slick-slide\"+e.instanceUid+n,\"aria-label\":s+1+\" of \"+t,\"aria-selected\":null,tabindex:\"-1\"})}).eq(e.currentSlide).find(\"button\").attr({\"aria-selected\":\"true\",tabindex:\"0\"}).end());for(var s=e.currentSlide,n=s+e.options.slidesToShow;s<n;s++)e.options.focusOnChange?e.$slides.eq(s).attr({tabindex:\"0\"}):e.$slides.eq(s).removeAttr(\"tabindex\");e.activateADA()},e.prototype.initArrowEvents=function(){var i=this;i.options.arrows===!0&&i.slideCount>i.options.slidesToShow&&(i.$prevArrow.off(\"click.slick\").on(\"click.slick\",{message:\"previous\"},i.changeSlide),i.$nextArrow.off(\"click.slick\").on(\"click.slick\",{message:\"next\"},i.changeSlide),i.options.accessibility===!0&&(i.$prevArrow.on(\"keydown.slick\",i.keyHandler),i.$nextArrow.on(\"keydown.slick\",i.keyHandler)))},e.prototype.initDotEvents=function(){var e=this;e.options.dots===!0&&e.slideCount>e.options.slidesToShow&&(i(\"li\",e.$dots).on(\"click.slick\",{message:\"index\"},e.changeSlide),e.options.accessibility===!0&&e.$dots.on(\"keydown.slick\",e.keyHandler)),e.options.dots===!0&&e.options.pauseOnDotsHover===!0&&e.slideCount>e.options.slidesToShow&&i(\"li\",e.$dots).on(\"mouseenter.slick\",i.proxy(e.interrupt,e,!0)).on(\"mouseleave.slick\",i.proxy(e.interrupt,e,!1))},e.prototype.initSlideEvents=function(){var e=this;e.options.pauseOnHover&&(e.$list.on(\"mouseenter.slick\",i.proxy(e.interrupt,e,!0)),e.$list.on(\"mouseleave.slick\",i.proxy(e.interrupt,e,!1)))},e.prototype.initializeEvents=function(){var e=this;e.initArrowEvents(),e.initDotEvents(),e.initSlideEvents(),e.$list.on(\"touchstart.slick mousedown.slick\",{action:\"start\"},e.swipeHandler),e.$list.on(\"touchmove.slick mousemove.slick\",{action:\"move\"},e.swipeHandler),e.$list.on(\"touchend.slick mouseup.slick\",{action:\"end\"},e.swipeHandler),e.$list.on(\"touchcancel.slick mouseleave.slick\",{action:\"end\"},e.swipeHandler),e.$list.on(\"click.slick\",e.clickHandler),i(document).on(e.visibilityChange,i.proxy(e.visibility,e)),e.options.accessibility===!0&&e.$list.on(\"keydown.slick\",e.keyHandler),e.options.focusOnSelect===!0&&i(e.$slideTrack).children().on(\"click.slick\",e.selectHandler),i(window).on(\"orientationchange.slick.slick-\"+e.instanceUid,i.proxy(e.orientationChange,e)),i(window).on(\"resize.slick.slick-\"+e.instanceUid,i.proxy(e.resize,e)),i(\"[draggable!=true]\",e.$slideTrack).on(\"dragstart\",e.preventDefault),i(window).on(\"load.slick.slick-\"+e.instanceUid,e.setPosition),i(e.setPosition)},e.prototype.initUI=function(){var i=this;i.options.arrows===!0&&i.slideCount>i.options.slidesToShow&&(i.$prevArrow.show(),i.$nextArrow.show()),i.options.dots===!0&&i.slideCount>i.options.slidesToShow&&i.$dots.show()},e.prototype.keyHandler=function(i){var e=this;i.target.tagName.match(\"TEXTAREA|INPUT|SELECT\")||(37===i.keyCode&&e.options.accessibility===!0?e.changeSlide({data:{message:e.options.rtl===!0?\"next\":\"previous\"}}):39===i.keyCode&&e.options.accessibility===!0&&e.changeSlide({data:{message:e.options.rtl===!0?\"previous\":\"next\"}}))},e.prototype.lazyLoad=function(){function e(e){i(\"img[data-lazy]\",e).each(function(){var e=i(this),t=i(this).attr(\"data-lazy\"),o=i(this).attr(\"data-srcset\"),s=i(this).attr(\"data-sizes\")||r.$slider.attr(\"data-sizes\"),n=document.createElement(\"img\");n.onload=function(){e.animate({opacity:0},100,function(){o&&(e.attr(\"srcset\",o),s&&e.attr(\"sizes\",s)),e.attr(\"src\",t).animate({opacity:1},200,function(){e.removeAttr(\"data-lazy data-srcset data-sizes\").removeClass(\"slick-loading\")}),r.$slider.trigger(\"lazyLoaded\",[r,e,t])})},n.onerror=function(){e.removeAttr(\"data-lazy\").removeClass(\"slick-loading\").addClass(\"slick-lazyload-error\"),r.$slider.trigger(\"lazyLoadError\",[r,e,t])},n.src=t})}var t,o,s,n,r=this;if(r.options.centerMode===!0?r.options.infinite===!0?(s=r.currentSlide+(r.options.slidesToShow/2+1),n=s+r.options.slidesToShow+2):(s=Math.max(0,r.currentSlide-(r.options.slidesToShow/2+1)),n=2+(r.options.slidesToShow/2+1)+r.currentSlide):(s=r.options.infinite?r.options.slidesToShow+r.currentSlide:r.currentSlide,n=Math.ceil(s+r.options.slidesToShow),r.options.fade===!0&&(s>0&&s--,n<=r.slideCount&&n++)),t=r.$slider.find(\".slick-slide\").slice(s,n),\"anticipated\"===r.options.lazyLoad)for(var l=s-1,d=n,a=r.$slider.find(\".slick-slide\"),c=0;c<r.options.slidesToScroll;c++)l<0&&(l=r.slideCount-1),t=t.add(a.eq(l)),t=t.add(a.eq(d)),l--,d++;e(t),r.slideCount<=r.options.slidesToShow?(o=r.$slider.find(\".slick-slide\"),e(o)):r.currentSlide>=r.slideCount-r.options.slidesToShow?(o=r.$slider.find(\".slick-cloned\").slice(0,r.options.slidesToShow),e(o)):0===r.currentSlide&&(o=r.$slider.find(\".slick-cloned\").slice(r.options.slidesToShow*-1),e(o))},e.prototype.loadSlider=function(){var i=this;i.setPosition(),i.$slideTrack.css({opacity:1}),i.$slider.removeClass(\"slick-loading\"),i.initUI(),\"progressive\"===i.options.lazyLoad&&i.progressiveLazyLoad()},e.prototype.next=e.prototype.slickNext=function(){var i=this;i.changeSlide({data:{message:\"next\"}})},e.prototype.orientationChange=function(){var i=this;i.checkResponsive(),i.setPosition()},e.prototype.pause=e.prototype.slickPause=function(){var i=this;i.autoPlayClear(),i.paused=!0},e.prototype.play=e.prototype.slickPlay=function(){var i=this;i.autoPlay(),i.options.autoplay=!0,i.paused=!1,i.focussed=!1,i.interrupted=!1},e.prototype.postSlide=function(e){var t=this;if(!t.unslicked&&(t.$slider.trigger(\"afterChange\",[t,e]),t.animating=!1,t.slideCount>t.options.slidesToShow&&t.setPosition(),t.swipeLeft=null,t.options.autoplay&&t.autoPlay(),t.options.accessibility===!0&&(t.initADA(),t.options.focusOnChange))){var o=i(t.$slides.get(t.currentSlide));o.attr(\"tabindex\",0).focus()}},e.prototype.prev=e.prototype.slickPrev=function(){var i=this;i.changeSlide({data:{message:\"previous\"}})},e.prototype.preventDefault=function(i){i.preventDefault()},e.prototype.progressiveLazyLoad=function(e){e=e||1;var t,o,s,n,r,l=this,d=i(\"img[data-lazy]\",l.$slider);d.length?(t=d.first(),o=t.attr(\"data-lazy\"),s=t.attr(\"data-srcset\"),n=t.attr(\"data-sizes\")||l.$slider.attr(\"data-sizes\"),r=document.createElement(\"img\"),r.onload=function(){s&&(t.attr(\"srcset\",s),n&&t.attr(\"sizes\",n)),t.attr(\"src\",o).removeAttr(\"data-lazy data-srcset data-sizes\").removeClass(\"slick-loading\"),l.options.adaptiveHeight===!0&&l.setPosition(),l.$slider.trigger(\"lazyLoaded\",[l,t,o]),l.progressiveLazyLoad()},r.onerror=function(){e<3?setTimeout(function(){l.progressiveLazyLoad(e+1)},500):(t.removeAttr(\"data-lazy\").removeClass(\"slick-loading\").addClass(\"slick-lazyload-error\"),l.$slider.trigger(\"lazyLoadError\",[l,t,o]),l.progressiveLazyLoad())},r.src=o):l.$slider.trigger(\"allImagesLoaded\",[l])},e.prototype.refresh=function(e){var t,o,s=this;o=s.slideCount-s.options.slidesToShow,!s.options.infinite&&s.currentSlide>o&&(s.currentSlide=o),s.slideCount<=s.options.slidesToShow&&(s.currentSlide=0),t=s.currentSlide,s.destroy(!0),i.extend(s,s.initials,{currentSlide:t}),s.init(),e||s.changeSlide({data:{message:\"index\",index:t}},!1)},e.prototype.registerBreakpoints=function(){var e,t,o,s=this,n=s.options.responsive||null;if(\"array\"===i.type(n)&&n.length){s.respondTo=s.options.respondTo||\"window\";for(e in n)if(o=s.breakpoints.length-1,n.hasOwnProperty(e)){for(t=n[e].breakpoint;o>=0;)s.breakpoints[o]&&s.breakpoints[o]===t&&s.breakpoints.splice(o,1),o--;s.breakpoints.push(t),s.breakpointSettings[t]=n[e].settings}s.breakpoints.sort(function(i,e){return s.options.mobileFirst?i-e:e-i})}},e.prototype.reinit=function(){var e=this;e.$slides=e.$slideTrack.children(e.options.slide).addClass(\"slick-slide\"),e.slideCount=e.$slides.length,e.currentSlide>=e.slideCount&&0!==e.currentSlide&&(e.currentSlide=e.currentSlide-e.options.slidesToScroll),e.slideCount<=e.options.slidesToShow&&(e.currentSlide=0),e.registerBreakpoints(),e.setProps(),e.setupInfinite(),e.buildArrows(),e.updateArrows(),e.initArrowEvents(),e.buildDots(),e.updateDots(),e.initDotEvents(),e.cleanUpSlideEvents(),e.initSlideEvents(),e.checkResponsive(!1,!0),e.options.focusOnSelect===!0&&i(e.$slideTrack).children().on(\"click.slick\",e.selectHandler),e.setSlideClasses(\"number\"==typeof e.currentSlide?e.currentSlide:0),e.setPosition(),e.focusHandler(),e.paused=!e.options.autoplay,e.autoPlay(),e.$slider.trigger(\"reInit\",[e])},e.prototype.resize=function(){var e=this;i(window).width()!==e.windowWidth&&(clearTimeout(e.windowDelay),e.windowDelay=window.setTimeout(function(){e.windowWidth=i(window).width(),e.checkResponsive(),e.unslicked||e.setPosition()},50))},e.prototype.removeSlide=e.prototype.slickRemove=function(i,e,t){var o=this;return\"boolean\"==typeof i?(e=i,i=e===!0?0:o.slideCount-1):i=e===!0?--i:i,!(o.slideCount<1||i<0||i>o.slideCount-1)&&(o.unload(),t===!0?o.$slideTrack.children().remove():o.$slideTrack.children(this.options.slide).eq(i).remove(),o.$slides=o.$slideTrack.children(this.options.slide),o.$slideTrack.children(this.options.slide).detach(),o.$slideTrack.append(o.$slides),o.$slidesCache=o.$slides,void o.reinit())},e.prototype.setCSS=function(i){var e,t,o=this,s={};o.options.rtl===!0&&(i=-i),e=\"left\"==o.positionProp?Math.ceil(i)+\"px\":\"0px\",t=\"top\"==o.positionProp?Math.ceil(i)+\"px\":\"0px\",s[o.positionProp]=i,o.transformsEnabled===!1?o.$slideTrack.css(s):(s={},o.cssTransitions===!1?(s[o.animType]=\"translate(\"+e+\", \"+t+\")\",o.$slideTrack.css(s)):(s[o.animType]=\"translate3d(\"+e+\", \"+t+\", 0px)\",o.$slideTrack.css(s)))},e.prototype.setDimensions=function(){var i=this;i.options.vertical===!1?i.options.centerMode===!0&&i.$list.css({padding:\"0px \"+i.options.centerPadding}):(i.$list.height(i.$slides.first().outerHeight(!0)*i.options.slidesToShow),i.options.centerMode===!0&&i.$list.css({padding:i.options.centerPadding+\" 0px\"})),i.listWidth=i.$list.width(),i.listHeight=i.$list.height(),i.options.vertical===!1&&i.options.variableWidth===!1?(i.slideWidth=Math.ceil(i.listWidth/i.options.slidesToShow),i.$slideTrack.width(Math.ceil(i.slideWidth*i.$slideTrack.children(\".slick-slide\").length))):i.options.variableWidth===!0?i.$slideTrack.width(5e3*i.slideCount):(i.slideWidth=Math.ceil(i.listWidth),i.$slideTrack.height(Math.ceil(i.$slides.first().outerHeight(!0)*i.$slideTrack.children(\".slick-slide\").length)));var e=i.$slides.first().outerWidth(!0)-i.$slides.first().width();i.options.variableWidth===!1&&i.$slideTrack.children(\".slick-slide\").width(i.slideWidth-e)},e.prototype.setFade=function(){var e,t=this;t.$slides.each(function(o,s){e=t.slideWidth*o*-1,t.options.rtl===!0?i(s).css({position:\"relative\",right:e,top:0,zIndex:t.options.zIndex-2,opacity:0}):i(s).css({position:\"relative\",left:e,top:0,zIndex:t.options.zIndex-2,opacity:0})}),t.$slides.eq(t.currentSlide).css({zIndex:t.options.zIndex-1,opacity:1})},e.prototype.setHeight=function(){var i=this;if(1===i.options.slidesToShow&&i.options.adaptiveHeight===!0&&i.options.vertical===!1){var e=i.$slides.eq(i.currentSlide).outerHeight(!0);i.$list.css(\"height\",e)}},e.prototype.setOption=e.prototype.slickSetOption=function(){var e,t,o,s,n,r=this,l=!1;if(\"object\"===i.type(arguments[0])?(o=arguments[0],l=arguments[1],n=\"multiple\"):\"string\"===i.type(arguments[0])&&(o=arguments[0],s=arguments[1],l=arguments[2],\"responsive\"===arguments[0]&&\"array\"===i.type(arguments[1])?n=\"responsive\":\"undefined\"!=typeof arguments[1]&&(n=\"single\")),\"single\"===n)r.options[o]=s;else if(\"multiple\"===n)i.each(o,function(i,e){r.options[i]=e});else if(\"responsive\"===n)for(t in s)if(\"array\"!==i.type(r.options.responsive))r.options.responsive=[s[t]];else{for(e=r.options.responsive.length-1;e>=0;)r.options.responsive[e].breakpoint===s[t].breakpoint&&r.options.responsive.splice(e,1),e--;r.options.responsive.push(s[t])}l&&(r.unload(),r.reinit())},e.prototype.setPosition=function(){var i=this;i.setDimensions(),i.setHeight(),i.options.fade===!1?i.setCSS(i.getLeft(i.currentSlide)):i.setFade(),i.$slider.trigger(\"setPosition\",[i])},e.prototype.setProps=function(){var i=this,e=document.body.style;i.positionProp=i.options.vertical===!0?\"top\":\"left\",\n\"top\"===i.positionProp?i.$slider.addClass(\"slick-vertical\"):i.$slider.removeClass(\"slick-vertical\"),void 0===e.WebkitTransition&&void 0===e.MozTransition&&void 0===e.msTransition||i.options.useCSS===!0&&(i.cssTransitions=!0),i.options.fade&&(\"number\"==typeof i.options.zIndex?i.options.zIndex<3&&(i.options.zIndex=3):i.options.zIndex=i.defaults.zIndex),void 0!==e.OTransform&&(i.animType=\"OTransform\",i.transformType=\"-o-transform\",i.transitionType=\"OTransition\",void 0===e.perspectiveProperty&&void 0===e.webkitPerspective&&(i.animType=!1)),void 0!==e.MozTransform&&(i.animType=\"MozTransform\",i.transformType=\"-moz-transform\",i.transitionType=\"MozTransition\",void 0===e.perspectiveProperty&&void 0===e.MozPerspective&&(i.animType=!1)),void 0!==e.webkitTransform&&(i.animType=\"webkitTransform\",i.transformType=\"-webkit-transform\",i.transitionType=\"webkitTransition\",void 0===e.perspectiveProperty&&void 0===e.webkitPerspective&&(i.animType=!1)),void 0!==e.msTransform&&(i.animType=\"msTransform\",i.transformType=\"-ms-transform\",i.transitionType=\"msTransition\",void 0===e.msTransform&&(i.animType=!1)),void 0!==e.transform&&i.animType!==!1&&(i.animType=\"transform\",i.transformType=\"transform\",i.transitionType=\"transition\"),i.transformsEnabled=i.options.useTransform&&null!==i.animType&&i.animType!==!1},e.prototype.setSlideClasses=function(i){var e,t,o,s,n=this;if(t=n.$slider.find(\".slick-slide\").removeClass(\"slick-active slick-center slick-current\").attr(\"aria-hidden\",\"true\"),n.$slides.eq(i).addClass(\"slick-current\"),n.options.centerMode===!0){var r=n.options.slidesToShow%2===0?1:0;e=Math.floor(n.options.slidesToShow/2),n.options.infinite===!0&&(i>=e&&i<=n.slideCount-1-e?n.$slides.slice(i-e+r,i+e+1).addClass(\"slick-active\").attr(\"aria-hidden\",\"false\"):(o=n.options.slidesToShow+i,t.slice(o-e+1+r,o+e+2).addClass(\"slick-active\").attr(\"aria-hidden\",\"false\")),0===i?t.eq(t.length-1-n.options.slidesToShow).addClass(\"slick-center\"):i===n.slideCount-1&&t.eq(n.options.slidesToShow).addClass(\"slick-center\")),n.$slides.eq(i).addClass(\"slick-center\")}else i>=0&&i<=n.slideCount-n.options.slidesToShow?n.$slides.slice(i,i+n.options.slidesToShow).addClass(\"slick-active\").attr(\"aria-hidden\",\"false\"):t.length<=n.options.slidesToShow?t.addClass(\"slick-active\").attr(\"aria-hidden\",\"false\"):(s=n.slideCount%n.options.slidesToShow,o=n.options.infinite===!0?n.options.slidesToShow+i:i,n.options.slidesToShow==n.options.slidesToScroll&&n.slideCount-i<n.options.slidesToShow?t.slice(o-(n.options.slidesToShow-s),o+s).addClass(\"slick-active\").attr(\"aria-hidden\",\"false\"):t.slice(o,o+n.options.slidesToShow).addClass(\"slick-active\").attr(\"aria-hidden\",\"false\"));\"ondemand\"!==n.options.lazyLoad&&\"anticipated\"!==n.options.lazyLoad||n.lazyLoad()},e.prototype.setupInfinite=function(){var e,t,o,s=this;if(s.options.fade===!0&&(s.options.centerMode=!1),s.options.infinite===!0&&s.options.fade===!1&&(t=null,s.slideCount>s.options.slidesToShow)){for(o=s.options.centerMode===!0?s.options.slidesToShow+1:s.options.slidesToShow,e=s.slideCount;e>s.slideCount-o;e-=1)t=e-1,i(s.$slides[t]).clone(!0).attr(\"id\",\"\").attr(\"data-slick-index\",t-s.slideCount).prependTo(s.$slideTrack).addClass(\"slick-cloned\");for(e=0;e<o+s.slideCount;e+=1)t=e,i(s.$slides[t]).clone(!0).attr(\"id\",\"\").attr(\"data-slick-index\",t+s.slideCount).appendTo(s.$slideTrack).addClass(\"slick-cloned\");s.$slideTrack.find(\".slick-cloned\").find(\"[id]\").each(function(){i(this).attr(\"id\",\"\")})}},e.prototype.interrupt=function(i){var e=this;i||e.autoPlay(),e.interrupted=i},e.prototype.selectHandler=function(e){var t=this,o=i(e.target).is(\".slick-slide\")?i(e.target):i(e.target).parents(\".slick-slide\"),s=parseInt(o.attr(\"data-slick-index\"));return s||(s=0),t.slideCount<=t.options.slidesToShow?void t.slideHandler(s,!1,!0):void t.slideHandler(s)},e.prototype.slideHandler=function(i,e,t){var o,s,n,r,l,d=null,a=this;if(e=e||!1,!(a.animating===!0&&a.options.waitForAnimate===!0||a.options.fade===!0&&a.currentSlide===i))return e===!1&&a.asNavFor(i),o=i,d=a.getLeft(o),r=a.getLeft(a.currentSlide),a.currentLeft=null===a.swipeLeft?r:a.swipeLeft,a.options.infinite===!1&&a.options.centerMode===!1&&(i<0||i>a.getDotCount()*a.options.slidesToScroll)?void(a.options.fade===!1&&(o=a.currentSlide,t!==!0&&a.slideCount>a.options.slidesToShow?a.animateSlide(r,function(){a.postSlide(o)}):a.postSlide(o))):a.options.infinite===!1&&a.options.centerMode===!0&&(i<0||i>a.slideCount-a.options.slidesToScroll)?void(a.options.fade===!1&&(o=a.currentSlide,t!==!0&&a.slideCount>a.options.slidesToShow?a.animateSlide(r,function(){a.postSlide(o)}):a.postSlide(o))):(a.options.autoplay&&clearInterval(a.autoPlayTimer),s=o<0?a.slideCount%a.options.slidesToScroll!==0?a.slideCount-a.slideCount%a.options.slidesToScroll:a.slideCount+o:o>=a.slideCount?a.slideCount%a.options.slidesToScroll!==0?0:o-a.slideCount:o,a.animating=!0,a.$slider.trigger(\"beforeChange\",[a,a.currentSlide,s]),n=a.currentSlide,a.currentSlide=s,a.setSlideClasses(a.currentSlide),a.options.asNavFor&&(l=a.getNavTarget(),l=l.slick(\"getSlick\"),l.slideCount<=l.options.slidesToShow&&l.setSlideClasses(a.currentSlide)),a.updateDots(),a.updateArrows(),a.options.fade===!0?(t!==!0?(a.fadeSlideOut(n),a.fadeSlide(s,function(){a.postSlide(s)})):a.postSlide(s),void a.animateHeight()):void(t!==!0&&a.slideCount>a.options.slidesToShow?a.animateSlide(d,function(){a.postSlide(s)}):a.postSlide(s)))},e.prototype.startLoad=function(){var i=this;i.options.arrows===!0&&i.slideCount>i.options.slidesToShow&&(i.$prevArrow.hide(),i.$nextArrow.hide()),i.options.dots===!0&&i.slideCount>i.options.slidesToShow&&i.$dots.hide(),i.$slider.addClass(\"slick-loading\")},e.prototype.swipeDirection=function(){var i,e,t,o,s=this;return i=s.touchObject.startX-s.touchObject.curX,e=s.touchObject.startY-s.touchObject.curY,t=Math.atan2(e,i),o=Math.round(180*t/Math.PI),o<0&&(o=360-Math.abs(o)),o<=45&&o>=0?s.options.rtl===!1?\"left\":\"right\":o<=360&&o>=315?s.options.rtl===!1?\"left\":\"right\":o>=135&&o<=225?s.options.rtl===!1?\"right\":\"left\":s.options.verticalSwiping===!0?o>=35&&o<=135?\"down\":\"up\":\"vertical\"},e.prototype.swipeEnd=function(i){var e,t,o=this;if(o.dragging=!1,o.swiping=!1,o.scrolling)return o.scrolling=!1,!1;if(o.interrupted=!1,o.shouldClick=!(o.touchObject.swipeLength>10),void 0===o.touchObject.curX)return!1;if(o.touchObject.edgeHit===!0&&o.$slider.trigger(\"edge\",[o,o.swipeDirection()]),o.touchObject.swipeLength>=o.touchObject.minSwipe){switch(t=o.swipeDirection()){case\"left\":case\"down\":e=o.options.swipeToSlide?o.checkNavigable(o.currentSlide+o.getSlideCount()):o.currentSlide+o.getSlideCount(),o.currentDirection=0;break;case\"right\":case\"up\":e=o.options.swipeToSlide?o.checkNavigable(o.currentSlide-o.getSlideCount()):o.currentSlide-o.getSlideCount(),o.currentDirection=1}\"vertical\"!=t&&(o.slideHandler(e),o.touchObject={},o.$slider.trigger(\"swipe\",[o,t]))}else o.touchObject.startX!==o.touchObject.curX&&(o.slideHandler(o.currentSlide),o.touchObject={})},e.prototype.swipeHandler=function(i){var e=this;if(!(e.options.swipe===!1||\"ontouchend\"in document&&e.options.swipe===!1||e.options.draggable===!1&&i.type.indexOf(\"mouse\")!==-1))switch(e.touchObject.fingerCount=i.originalEvent&&void 0!==i.originalEvent.touches?i.originalEvent.touches.length:1,e.touchObject.minSwipe=e.listWidth/e.options.touchThreshold,e.options.verticalSwiping===!0&&(e.touchObject.minSwipe=e.listHeight/e.options.touchThreshold),i.data.action){case\"start\":e.swipeStart(i);break;case\"move\":e.swipeMove(i);break;case\"end\":e.swipeEnd(i)}},e.prototype.swipeMove=function(i){var e,t,o,s,n,r,l=this;return n=void 0!==i.originalEvent?i.originalEvent.touches:null,!(!l.dragging||l.scrolling||n&&1!==n.length)&&(e=l.getLeft(l.currentSlide),l.touchObject.curX=void 0!==n?n[0].pageX:i.clientX,l.touchObject.curY=void 0!==n?n[0].pageY:i.clientY,l.touchObject.swipeLength=Math.round(Math.sqrt(Math.pow(l.touchObject.curX-l.touchObject.startX,2))),r=Math.round(Math.sqrt(Math.pow(l.touchObject.curY-l.touchObject.startY,2))),!l.options.verticalSwiping&&!l.swiping&&r>4?(l.scrolling=!0,!1):(l.options.verticalSwiping===!0&&(l.touchObject.swipeLength=r),t=l.swipeDirection(),void 0!==i.originalEvent&&l.touchObject.swipeLength>4&&(l.swiping=!0,i.preventDefault()),s=(l.options.rtl===!1?1:-1)*(l.touchObject.curX>l.touchObject.startX?1:-1),l.options.verticalSwiping===!0&&(s=l.touchObject.curY>l.touchObject.startY?1:-1),o=l.touchObject.swipeLength,l.touchObject.edgeHit=!1,l.options.infinite===!1&&(0===l.currentSlide&&\"right\"===t||l.currentSlide>=l.getDotCount()&&\"left\"===t)&&(o=l.touchObject.swipeLength*l.options.edgeFriction,l.touchObject.edgeHit=!0),l.options.vertical===!1?l.swipeLeft=e+o*s:l.swipeLeft=e+o*(l.$list.height()/l.listWidth)*s,l.options.verticalSwiping===!0&&(l.swipeLeft=e+o*s),l.options.fade!==!0&&l.options.touchMove!==!1&&(l.animating===!0?(l.swipeLeft=null,!1):void l.setCSS(l.swipeLeft))))},e.prototype.swipeStart=function(i){var e,t=this;return t.interrupted=!0,1!==t.touchObject.fingerCount||t.slideCount<=t.options.slidesToShow?(t.touchObject={},!1):(void 0!==i.originalEvent&&void 0!==i.originalEvent.touches&&(e=i.originalEvent.touches[0]),t.touchObject.startX=t.touchObject.curX=void 0!==e?e.pageX:i.clientX,t.touchObject.startY=t.touchObject.curY=void 0!==e?e.pageY:i.clientY,void(t.dragging=!0))},e.prototype.unfilterSlides=e.prototype.slickUnfilter=function(){var i=this;null!==i.$slidesCache&&(i.unload(),i.$slideTrack.children(this.options.slide).detach(),i.$slidesCache.appendTo(i.$slideTrack),i.reinit())},e.prototype.unload=function(){var e=this;i(\".slick-cloned\",e.$slider).remove(),e.$dots&&e.$dots.remove(),e.$prevArrow&&e.htmlExpr.test(e.options.prevArrow)&&e.$prevArrow.remove(),e.$nextArrow&&e.htmlExpr.test(e.options.nextArrow)&&e.$nextArrow.remove(),e.$slides.removeClass(\"slick-slide slick-active slick-visible slick-current\").attr(\"aria-hidden\",\"true\").css(\"width\",\"\")},e.prototype.unslick=function(i){var e=this;e.$slider.trigger(\"unslick\",[e,i]),e.destroy()},e.prototype.updateArrows=function(){var i,e=this;i=Math.floor(e.options.slidesToShow/2),e.options.arrows===!0&&e.slideCount>e.options.slidesToShow&&!e.options.infinite&&(e.$prevArrow.removeClass(\"slick-disabled\").attr(\"aria-disabled\",\"false\"),e.$nextArrow.removeClass(\"slick-disabled\").attr(\"aria-disabled\",\"false\"),0===e.currentSlide?(e.$prevArrow.addClass(\"slick-disabled\").attr(\"aria-disabled\",\"true\"),e.$nextArrow.removeClass(\"slick-disabled\").attr(\"aria-disabled\",\"false\")):e.currentSlide>=e.slideCount-e.options.slidesToShow&&e.options.centerMode===!1?(e.$nextArrow.addClass(\"slick-disabled\").attr(\"aria-disabled\",\"true\"),e.$prevArrow.removeClass(\"slick-disabled\").attr(\"aria-disabled\",\"false\")):e.currentSlide>=e.slideCount-1&&e.options.centerMode===!0&&(e.$nextArrow.addClass(\"slick-disabled\").attr(\"aria-disabled\",\"true\"),e.$prevArrow.removeClass(\"slick-disabled\").attr(\"aria-disabled\",\"false\")))},e.prototype.updateDots=function(){var i=this;null!==i.$dots&&(i.$dots.find(\"li\").removeClass(\"slick-active\").end(),i.$dots.find(\"li\").eq(Math.floor(i.currentSlide/i.options.slidesToScroll)).addClass(\"slick-active\"))},e.prototype.visibility=function(){var i=this;i.options.autoplay&&(document[i.hidden]?i.interrupted=!0:i.interrupted=!1)},i.fn.slick=function(){var i,t,o=this,s=arguments[0],n=Array.prototype.slice.call(arguments,1),r=o.length;for(i=0;i<r;i++)if(\"object\"==typeof s||\"undefined\"==typeof s?o[i].slick=new e(o[i],s):t=o[i].slick[s].apply(o[i].slick,n),\"undefined\"!=typeof t)return t;return o}});\n","Magento_PageBuilder/js/resource/jarallax/jarallax-video.js":"/*!\n * Video Extension for Jarallax v2.0.3 (https://github.com/nk-o/jarallax)\n * Copyright 2022 nK <https://nkdev.info>\n * Licensed under MIT (https://github.com/nk-o/jarallax/blob/master/LICENSE)\n */\n\n(function (global, factory) {\n  typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n      typeof define === 'function' && define.amd ? define(factory) :\n          (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.jarallaxVideo = factory());\n})(this, (function () { 'use strict';\n\n  /*!\n   * Name    : Video Worker\n   * Version : 2.0.0\n   * Author  : nK <https://nkdev.info>\n   * GitHub  : https://github.com/nk-o/video-worker\n   */\n\n  /* eslint-disable import/no-mutable-exports */\n\n  /* eslint-disable no-restricted-globals */\n  let win$1;\n\n  if (typeof window !== 'undefined') {\n    win$1 = window;\n  } else if (typeof global !== 'undefined') {\n    win$1 = global;\n  } else if (typeof self !== 'undefined') {\n    win$1 = self;\n  } else {\n    win$1 = {};\n  }\n\n  var global$1$1 = win$1; // Deferred\n  // thanks http://stackoverflow.com/questions/18096715/implement-deferred-object-without-using-jquery\n\n  function Deferred() {\n    this.doneCallbacks = [];\n    this.failCallbacks = [];\n  }\n\n  Deferred.prototype = {\n    execute(list, args) {\n      let i = list.length; // eslint-disable-next-line no-param-reassign\n\n      args = Array.prototype.slice.call(args);\n\n      while (i) {\n        i -= 1;\n        list[i].apply(null, args);\n      }\n    },\n\n    resolve(...args) {\n      this.execute(this.doneCallbacks, args);\n    },\n\n    reject(...args) {\n      this.execute(this.failCallbacks, args);\n    },\n\n    done(callback) {\n      this.doneCallbacks.push(callback);\n    },\n\n    fail(callback) {\n      this.failCallbacks.push(callback);\n    }\n\n  };\n  let ID = 0;\n  let YoutubeAPIadded = 0;\n  let VimeoAPIadded = 0;\n  let loadingYoutubePlayer = 0;\n  let loadingVimeoPlayer = 0;\n  const loadingYoutubeDefer = /*#__PURE__*/new Deferred();\n  const loadingVimeoDefer = /*#__PURE__*/new Deferred();\n\n  class VideoWorker {\n    constructor(url, options) {\n      const self = this;\n      self.url = url;\n      self.options_default = {\n        autoplay: false,\n        loop: false,\n        mute: false,\n        volume: 100,\n        showControls: true,\n        accessibilityHidden: false,\n        // start / end video time in seconds\n        startTime: 0,\n        endTime: 0\n      };\n      self.options = self.extend({}, self.options_default, options); // Fix wrong option name.\n      // Thanks to https://github.com/nk-o/video-worker/issues/13.\n\n      if (typeof self.options.showContols !== 'undefined') {\n        self.options.showControls = self.options.showContols;\n        delete self.options.showContols;\n      } // check URL\n\n\n      self.videoID = self.parseURL(url); // init\n\n      if (self.videoID) {\n        self.ID = ID;\n        ID += 1;\n        self.loadAPI();\n        self.init();\n      }\n    } // Extend like jQuery.extend\n    // eslint-disable-next-line class-methods-use-this\n\n\n    extend(...args) {\n      const out = args[0] || {};\n      Object.keys(args).forEach(i => {\n        if (!args[i]) {\n          return;\n        }\n\n        Object.keys(args[i]).forEach(key => {\n          out[key] = args[i][key];\n        });\n      });\n      return out;\n    }\n\n    parseURL(url) {\n      // parse youtube ID\n      function getYoutubeID(ytUrl) {\n        // eslint-disable-next-line no-useless-escape\n        const regExp = /.*(?:youtu.be\\/|v\\/|u\\/\\w\\/|embed\\/|watch\\?v=)([^#\\&\\?]*).*/;\n        const match = ytUrl.match(regExp);\n        return match && match[1].length === 11 ? match[1] : false;\n      } // parse vimeo ID\n\n\n      function getVimeoID(vmUrl) {\n        // eslint-disable-next-line no-useless-escape\n        const regExp = /https?:\\/\\/(?:www\\.|player\\.)?vimeo.com\\/(?:channels\\/(?:\\w+\\/)?|groups\\/([^/]*)\\/videos\\/|album\\/(\\d+)\\/video\\/|video\\/|)(\\d+)(?:$|\\/|\\?)/;\n        const match = vmUrl.match(regExp);\n        return match && match[3] ? match[3] : false;\n      } // parse local string\n\n\n      function getLocalVideos(locUrl) {\n        // eslint-disable-next-line no-useless-escape\n        const videoFormats = locUrl.split(/,(?=mp4\\:|webm\\:|ogv\\:|ogg\\:)/);\n        const result = {};\n        let ready = 0;\n        videoFormats.forEach(val => {\n          // eslint-disable-next-line no-useless-escape\n          const match = val.match(/^(mp4|webm|ogv|ogg)\\:(.*)/);\n\n          if (match && match[1] && match[2]) {\n            // eslint-disable-next-line prefer-destructuring\n            result[match[1] === 'ogv' ? 'ogg' : match[1]] = match[2];\n            ready = 1;\n          }\n        });\n        return ready ? result : false;\n      }\n\n      const Youtube = getYoutubeID(url);\n      const Vimeo = getVimeoID(url);\n      const Local = getLocalVideos(url);\n\n      if (Youtube) {\n        this.type = 'youtube';\n        return Youtube;\n      }\n\n      if (Vimeo) {\n        this.type = 'vimeo';\n        return Vimeo;\n      }\n\n      if (Local) {\n        this.type = 'local';\n        return Local;\n      }\n\n      return false;\n    }\n\n    isValid() {\n      return !!this.videoID;\n    } // events\n\n\n    on(name, callback) {\n      this.userEventsList = this.userEventsList || []; // add new callback in events list\n\n      (this.userEventsList[name] || (this.userEventsList[name] = [])).push(callback);\n    }\n\n    off(name, callback) {\n      if (!this.userEventsList || !this.userEventsList[name]) {\n        return;\n      }\n\n      if (!callback) {\n        delete this.userEventsList[name];\n      } else {\n        this.userEventsList[name].forEach((val, key) => {\n          if (val === callback) {\n            this.userEventsList[name][key] = false;\n          }\n        });\n      }\n    }\n\n    fire(name, ...args) {\n      if (this.userEventsList && typeof this.userEventsList[name] !== 'undefined') {\n        this.userEventsList[name].forEach(val => {\n          // call with all arguments\n          if (val) {\n            val.apply(this, args);\n          }\n        });\n      }\n    }\n\n    play(start) {\n      const self = this;\n\n      if (!self.player) {\n        return;\n      }\n\n      if (self.type === 'youtube' && self.player.playVideo) {\n        if (typeof start !== 'undefined') {\n          self.player.seekTo(start || 0);\n        }\n\n        if (global$1$1.YT.PlayerState.PLAYING !== self.player.getPlayerState()) {\n          self.player.playVideo();\n        }\n      }\n\n      if (self.type === 'vimeo') {\n        if (typeof start !== 'undefined') {\n          self.player.setCurrentTime(start);\n        }\n\n        self.player.getPaused().then(paused => {\n          if (paused) {\n            self.player.play();\n          }\n        });\n      }\n\n      if (self.type === 'local') {\n        if (typeof start !== 'undefined') {\n          self.player.currentTime = start;\n        }\n\n        if (self.player.paused) {\n          self.player.play();\n        }\n      }\n    }\n\n    pause() {\n      const self = this;\n\n      if (!self.player) {\n        return;\n      }\n\n      if (self.type === 'youtube' && self.player.pauseVideo) {\n        if (global$1$1.YT.PlayerState.PLAYING === self.player.getPlayerState()) {\n          self.player.pauseVideo();\n        }\n      }\n\n      if (self.type === 'vimeo') {\n        self.player.getPaused().then(paused => {\n          if (!paused) {\n            self.player.pause();\n          }\n        });\n      }\n\n      if (self.type === 'local') {\n        if (!self.player.paused) {\n          self.player.pause();\n        }\n      }\n    }\n\n    mute() {\n      const self = this;\n\n      if (!self.player) {\n        return;\n      }\n\n      if (self.type === 'youtube' && self.player.mute) {\n        self.player.mute();\n      }\n\n      if (self.type === 'vimeo' && self.player.setVolume) {\n        self.player.setVolume(0);\n      }\n\n      if (self.type === 'local') {\n        self.$video.muted = true;\n      }\n    }\n\n    unmute() {\n      const self = this;\n\n      if (!self.player) {\n        return;\n      }\n\n      if (self.type === 'youtube' && self.player.mute) {\n        self.player.unMute();\n      }\n\n      if (self.type === 'vimeo' && self.player.setVolume) {\n        self.player.setVolume(self.options.volume);\n      }\n\n      if (self.type === 'local') {\n        self.$video.muted = false;\n      }\n    }\n\n    setVolume(volume = false) {\n      const self = this;\n\n      if (!self.player || !volume) {\n        return;\n      }\n\n      if (self.type === 'youtube' && self.player.setVolume) {\n        self.player.setVolume(volume);\n      }\n\n      if (self.type === 'vimeo' && self.player.setVolume) {\n        self.player.setVolume(volume);\n      }\n\n      if (self.type === 'local') {\n        self.$video.volume = volume / 100;\n      }\n    }\n\n    getVolume(callback) {\n      const self = this;\n\n      if (!self.player) {\n        callback(false);\n        return;\n      }\n\n      if (self.type === 'youtube' && self.player.getVolume) {\n        callback(self.player.getVolume());\n      }\n\n      if (self.type === 'vimeo' && self.player.getVolume) {\n        self.player.getVolume().then(volume => {\n          callback(volume);\n        });\n      }\n\n      if (self.type === 'local') {\n        callback(self.$video.volume * 100);\n      }\n    }\n\n    getMuted(callback) {\n      const self = this;\n\n      if (!self.player) {\n        callback(null);\n        return;\n      }\n\n      if (self.type === 'youtube' && self.player.isMuted) {\n        callback(self.player.isMuted());\n      }\n\n      if (self.type === 'vimeo' && self.player.getVolume) {\n        self.player.getVolume().then(volume => {\n          callback(!!volume);\n        });\n      }\n\n      if (self.type === 'local') {\n        callback(self.$video.muted);\n      }\n    }\n\n    getImageURL(callback) {\n      const self = this;\n\n      if (self.videoImage) {\n        callback(self.videoImage);\n        return;\n      }\n\n      if (self.type === 'youtube') {\n        const availableSizes = ['maxresdefault', 'sddefault', 'hqdefault', '0'];\n        let step = 0;\n        const tempImg = new Image();\n\n        tempImg.onload = function () {\n          // if no thumbnail, youtube add their own image with width = 120px\n          if ((this.naturalWidth || this.width) !== 120 || step === availableSizes.length - 1) {\n            // ok\n            self.videoImage = `https://img.youtube.com/vi/${self.videoID}/${availableSizes[step]}.jpg`;\n            callback(self.videoImage);\n          } else {\n            // try another size\n            step += 1;\n            this.src = `https://img.youtube.com/vi/${self.videoID}/${availableSizes[step]}.jpg`;\n          }\n        };\n\n        tempImg.src = `https://img.youtube.com/vi/${self.videoID}/${availableSizes[step]}.jpg`;\n      }\n\n      if (self.type === 'vimeo') {\n        let request = new XMLHttpRequest(); // https://vimeo.com/api/oembed.json?url=https://vimeo.com/235212527\n\n        request.open('GET', `https://vimeo.com/api/oembed.json?url=${self.url}`, true);\n\n        request.onreadystatechange = function () {\n          if (this.readyState === 4) {\n            if (this.status >= 200 && this.status < 400) {\n              // Success!\n              const response = JSON.parse(this.responseText);\n\n              if (response.thumbnail_url) {\n                self.videoImage = response.thumbnail_url;\n                callback(self.videoImage);\n              }\n            }\n          }\n        };\n\n        request.send();\n        request = null;\n      }\n    } // fallback to the old version.\n\n\n    getIframe(callback) {\n      this.getVideo(callback);\n    }\n\n    getVideo(callback) {\n      const self = this; // return generated video block\n\n      if (self.$video) {\n        callback(self.$video);\n        return;\n      } // generate new video block\n\n\n      self.onAPIready(() => {\n        let hiddenDiv;\n\n        if (!self.$video) {\n          hiddenDiv = document.createElement('div');\n          hiddenDiv.style.display = 'none';\n        } // Youtube\n\n\n        if (self.type === 'youtube') {\n          self.playerOptions = {\n            // GDPR Compliance.\n            host: 'https://www.youtube-nocookie.com',\n            videoId: self.videoID,\n            playerVars: {\n              autohide: 1,\n              rel: 0,\n              autoplay: 0,\n              // autoplay enable on mobile devices\n              playsinline: 1\n            }\n          }; // hide controls\n\n          if (!self.options.showControls) {\n            self.playerOptions.playerVars.iv_load_policy = 3;\n            self.playerOptions.playerVars.modestbranding = 1;\n            self.playerOptions.playerVars.controls = 0;\n            self.playerOptions.playerVars.showinfo = 0;\n            self.playerOptions.playerVars.disablekb = 1;\n          } // events\n\n\n          let ytStarted;\n          let ytProgressInterval;\n          self.playerOptions.events = {\n            onReady(e) {\n              // mute\n              if (self.options.mute) {\n                e.target.mute();\n              } else if (self.options.volume) {\n                e.target.setVolume(self.options.volume);\n              } // autoplay\n\n\n              if (self.options.autoplay) {\n                self.play(self.options.startTime);\n              }\n\n              self.fire('ready', e); // For seamless loops, set the endTime to 0.1 seconds less than the video's duration\n              // https://github.com/nk-o/video-worker/issues/2\n\n              if (self.options.loop && !self.options.endTime) {\n                const secondsOffset = 0.1;\n                self.options.endTime = self.player.getDuration() - secondsOffset;\n              } // volumechange\n\n\n              setInterval(() => {\n                self.getVolume(volume => {\n                  if (self.options.volume !== volume) {\n                    self.options.volume = volume;\n                    self.fire('volumechange', e);\n                  }\n                });\n              }, 150);\n            },\n\n            onStateChange(e) {\n              // loop\n              if (self.options.loop && e.data === global$1$1.YT.PlayerState.ENDED) {\n                self.play(self.options.startTime);\n              }\n\n              if (!ytStarted && e.data === global$1$1.YT.PlayerState.PLAYING) {\n                ytStarted = 1;\n                self.fire('started', e);\n              }\n\n              if (e.data === global$1$1.YT.PlayerState.PLAYING) {\n                self.fire('play', e);\n              }\n\n              if (e.data === global$1$1.YT.PlayerState.PAUSED) {\n                self.fire('pause', e);\n              }\n\n              if (e.data === global$1$1.YT.PlayerState.ENDED) {\n                self.fire('ended', e);\n              } // progress check\n\n\n              if (e.data === global$1$1.YT.PlayerState.PLAYING) {\n                ytProgressInterval = setInterval(() => {\n                  self.fire('timeupdate', e); // check for end of video and play again or stop\n\n                  if (self.options.endTime && self.player.getCurrentTime() >= self.options.endTime) {\n                    if (self.options.loop) {\n                      self.play(self.options.startTime);\n                    } else {\n                      self.pause();\n                    }\n                  }\n                }, 150);\n              } else {\n                clearInterval(ytProgressInterval);\n              }\n            },\n\n            onError(e) {\n              self.fire('error', e);\n            }\n\n          };\n          const firstInit = !self.$video;\n\n          if (firstInit) {\n            const div = document.createElement('div');\n            div.setAttribute('id', self.playerID);\n            hiddenDiv.appendChild(div);\n            document.body.appendChild(hiddenDiv);\n          }\n\n          self.player = self.player || new global$1$1.YT.Player(self.playerID, self.playerOptions);\n\n          if (firstInit) {\n            self.$video = document.getElementById(self.playerID); // add accessibility attributes\n\n            if (self.options.accessibilityHidden) {\n              self.$video.setAttribute('tabindex', '-1');\n              self.$video.setAttribute('aria-hidden', 'true');\n            } // get video width and height\n\n\n            self.videoWidth = parseInt(self.$video.getAttribute('width'), 10) || 1280;\n            self.videoHeight = parseInt(self.$video.getAttribute('height'), 10) || 720;\n          }\n        } // Vimeo\n\n\n        if (self.type === 'vimeo') {\n          self.playerOptions = {\n            // GDPR Compliance.\n            dnt: 1,\n            id: self.videoID,\n            autopause: 0,\n            transparent: 0,\n            autoplay: self.options.autoplay ? 1 : 0,\n            loop: self.options.loop ? 1 : 0,\n            muted: self.options.mute ? 1 : 0\n          };\n\n          if (self.options.volume) {\n            self.playerOptions.volume = self.options.volume;\n          } // hide controls\n\n\n          if (!self.options.showControls) {\n            self.playerOptions.badge = 0;\n            self.playerOptions.byline = 0;\n            self.playerOptions.portrait = 0;\n            self.playerOptions.title = 0;\n            self.playerOptions.background = 1;\n          }\n\n          if (!self.$video) {\n            let playerOptionsString = '';\n            Object.keys(self.playerOptions).forEach(key => {\n              if (playerOptionsString !== '') {\n                playerOptionsString += '&';\n              }\n\n              playerOptionsString += `${key}=${encodeURIComponent(self.playerOptions[key])}`;\n            }); // we need to create iframe manually because when we create it using API\n            // js events won't triggers after iframe moved to another place\n\n            self.$video = document.createElement('iframe');\n            self.$video.setAttribute('id', self.playerID);\n            self.$video.setAttribute('src', `https://player.vimeo.com/video/${self.videoID}?${playerOptionsString}`);\n            self.$video.setAttribute('frameborder', '0');\n            self.$video.setAttribute('mozallowfullscreen', '');\n            self.$video.setAttribute('allowfullscreen', '');\n            self.$video.setAttribute('title', 'Vimeo video player'); // add accessibility attributes\n\n            if (self.options.accessibilityHidden) {\n              self.$video.setAttribute('tabindex', '-1');\n              self.$video.setAttribute('aria-hidden', 'true');\n            }\n\n            hiddenDiv.appendChild(self.$video);\n            document.body.appendChild(hiddenDiv);\n          }\n\n          self.player = self.player || new global$1$1.Vimeo.Player(self.$video, self.playerOptions); // set current time for autoplay\n\n          if (self.options.startTime && self.options.autoplay) {\n            self.player.setCurrentTime(self.options.startTime);\n          } // get video width and height\n\n\n          self.player.getVideoWidth().then(width => {\n            self.videoWidth = width || 1280;\n          });\n          self.player.getVideoHeight().then(height => {\n            self.videoHeight = height || 720;\n          }); // events\n\n          let vmStarted;\n          self.player.on('timeupdate', e => {\n            if (!vmStarted) {\n              self.fire('started', e);\n              vmStarted = 1;\n            }\n\n            self.fire('timeupdate', e); // check for end of video and play again or stop\n\n            if (self.options.endTime) {\n              if (self.options.endTime && e.seconds >= self.options.endTime) {\n                if (self.options.loop) {\n                  self.play(self.options.startTime);\n                } else {\n                  self.pause();\n                }\n              }\n            }\n          });\n          self.player.on('play', e => {\n            self.fire('play', e); // check for the start time and start with it\n\n            if (self.options.startTime && e.seconds === 0) {\n              self.play(self.options.startTime);\n            }\n          });\n          self.player.on('pause', e => {\n            self.fire('pause', e);\n          });\n          self.player.on('ended', e => {\n            self.fire('ended', e);\n          });\n          self.player.on('loaded', e => {\n            self.fire('ready', e);\n          });\n          self.player.on('volumechange', e => {\n            self.fire('volumechange', e);\n          });\n          self.player.on('error', e => {\n            self.fire('error', e);\n          });\n        } // Local\n\n\n        function addSourceToLocal(element, src, type) {\n          const source = document.createElement('source');\n          source.src = src;\n          source.type = type;\n          element.appendChild(source);\n        }\n\n        if (self.type === 'local') {\n          if (!self.$video) {\n            self.$video = document.createElement('video'); // show controls\n\n            if (self.options.showControls) {\n              self.$video.controls = true;\n            } // mute\n\n\n            if (self.options.mute) {\n              self.$video.muted = true;\n            } else if (self.$video.volume) {\n              self.$video.volume = self.options.volume / 100;\n            } // loop\n\n\n            if (self.options.loop) {\n              self.$video.loop = true;\n            } // autoplay enable on mobile devices\n\n\n            self.$video.setAttribute('playsinline', '');\n            self.$video.setAttribute('webkit-playsinline', ''); // add accessibility attributes\n\n            if (self.options.accessibilityHidden) {\n              self.$video.setAttribute('tabindex', '-1');\n              self.$video.setAttribute('aria-hidden', 'true');\n            }\n\n            self.$video.setAttribute('id', self.playerID);\n            hiddenDiv.appendChild(self.$video);\n            document.body.appendChild(hiddenDiv);\n            Object.keys(self.videoID).forEach(key => {\n              addSourceToLocal(self.$video, self.videoID[key], `video/${key}`);\n            });\n          }\n\n          self.player = self.player || self.$video;\n          let locStarted;\n          self.player.addEventListener('playing', e => {\n            if (!locStarted) {\n              self.fire('started', e);\n            }\n\n            locStarted = 1;\n          });\n          self.player.addEventListener('timeupdate', function (e) {\n            self.fire('timeupdate', e); // check for end of video and play again or stop\n\n            if (self.options.endTime) {\n              if (self.options.endTime && this.currentTime >= self.options.endTime) {\n                if (self.options.loop) {\n                  self.play(self.options.startTime);\n                } else {\n                  self.pause();\n                }\n              }\n            }\n          });\n          self.player.addEventListener('play', e => {\n            self.fire('play', e);\n          });\n          self.player.addEventListener('pause', e => {\n            self.fire('pause', e);\n          });\n          self.player.addEventListener('ended', e => {\n            self.fire('ended', e);\n          });\n          self.player.addEventListener('loadedmetadata', function () {\n            // get video width and height\n            self.videoWidth = this.videoWidth || 1280;\n            self.videoHeight = this.videoHeight || 720;\n            self.fire('ready'); // autoplay\n\n            if (self.options.autoplay) {\n              self.play(self.options.startTime);\n            }\n          });\n          self.player.addEventListener('volumechange', e => {\n            self.getVolume(volume => {\n              self.options.volume = volume;\n            });\n            self.fire('volumechange', e);\n          });\n          self.player.addEventListener('error', e => {\n            self.fire('error', e);\n          });\n        }\n\n        callback(self.$video);\n      });\n    }\n\n    init() {\n      const self = this;\n      self.playerID = `VideoWorker-${self.ID}`;\n    }\n\n    loadAPI() {\n      const self = this;\n\n      if (YoutubeAPIadded && VimeoAPIadded) {\n        return;\n      }\n\n      let src = ''; // load Youtube API\n\n      if (self.type === 'youtube' && !YoutubeAPIadded) {\n        YoutubeAPIadded = 1;\n        src = 'https://www.youtube.com/iframe_api';\n      } // load Vimeo API\n\n\n      if (self.type === 'vimeo' && !VimeoAPIadded) {\n        VimeoAPIadded = 1; // Useful when Vimeo API added using RequireJS https://github.com/nk-o/video-worker/pull/7\n\n        if (typeof global$1$1.Vimeo !== 'undefined') {\n          return;\n        }\n\n        src = 'https://player.vimeo.com/api/player.js';\n      }\n\n      if (!src) {\n        return;\n      } // add script in head section\n\n\n      let tag = document.createElement('script');\n      let head = document.getElementsByTagName('head')[0];\n      tag.src = src;\n      head.appendChild(tag);\n      head = null;\n      tag = null;\n    }\n\n    onAPIready(callback) {\n      const self = this; // Youtube\n\n      if (self.type === 'youtube') {\n        // Listen for global YT player callback\n        if ((typeof global$1$1.YT === 'undefined' || global$1$1.YT.loaded === 0) && !loadingYoutubePlayer) {\n          // Prevents Ready event from being called twice\n          loadingYoutubePlayer = 1; // Creates deferred so, other players know when to wait.\n\n          global$1$1.onYouTubeIframeAPIReady = function () {\n            global$1$1.onYouTubeIframeAPIReady = null;\n            loadingYoutubeDefer.resolve('done');\n            callback();\n          };\n        } else if (typeof global$1$1.YT === 'object' && global$1$1.YT.loaded === 1) {\n          callback();\n        } else {\n          loadingYoutubeDefer.done(() => {\n            callback();\n          });\n        }\n      } // Vimeo\n\n\n      if (self.type === 'vimeo') {\n        if (typeof global$1$1.Vimeo === 'undefined' && !loadingVimeoPlayer) {\n          loadingVimeoPlayer = 1;\n          const vimeoInterval = setInterval(() => {\n            if (typeof global$1$1.Vimeo !== 'undefined') {\n              clearInterval(vimeoInterval);\n              loadingVimeoDefer.resolve('done');\n              callback();\n            }\n          }, 20);\n        } else if (typeof global$1$1.Vimeo !== 'undefined') {\n          callback();\n        } else {\n          loadingVimeoDefer.done(() => {\n            callback();\n          });\n        }\n      } // Local\n\n\n      if (self.type === 'local') {\n        callback();\n      }\n    }\n\n  }\n\n  function ready(callback) {\n    if ('complete' === document.readyState || 'interactive' === document.readyState) {\n      // Already ready or interactive, execute callback\n      callback();\n    } else {\n      document.addEventListener('DOMContentLoaded', callback, {\n        capture: true,\n        once: true,\n        passive: true\n      });\n    }\n  }\n\n  /* eslint-disable import/no-mutable-exports */\n\n  /* eslint-disable no-restricted-globals */\n  let win;\n\n  if ('undefined' !== typeof window) {\n    win = window;\n  } else if ('undefined' !== typeof global) {\n    win = global;\n  } else if ('undefined' !== typeof self) {\n    win = self;\n  } else {\n    win = {};\n  }\n\n  var global$1 = win;\n\n  function jarallaxVideo(jarallax = global$1.jarallax) {\n    if ('undefined' === typeof jarallax) {\n      return;\n    }\n\n    const Jarallax = jarallax.constructor; // append video after when block will be visible.\n\n    const defOnScroll = Jarallax.prototype.onScroll;\n\n    Jarallax.prototype.onScroll = function () {\n      const self = this;\n      defOnScroll.apply(self);\n      const isReady = !self.isVideoInserted && self.video && (!self.options.videoLazyLoading || self.isElementInViewport) && !self.options.disableVideo();\n\n      if (isReady) {\n        self.isVideoInserted = true;\n        self.video.getVideo(video => {\n          const $parent = video.parentNode;\n          self.css(video, {\n            position: self.image.position,\n            top: '0px',\n            left: '0px',\n            right: '0px',\n            bottom: '0px',\n            width: '100%',\n            height: '100%',\n            maxWidth: 'none',\n            maxHeight: 'none',\n            pointerEvents: 'none',\n            transformStyle: 'preserve-3d',\n            backfaceVisibility: 'hidden',\n            willChange: 'transform,opacity',\n            margin: 0,\n            zIndex: -1\n          });\n          self.$video = video; // add Poster attribute to self-hosted video\n\n          if ('local' === self.video.type) {\n            if (self.image.src) {\n              self.$video.setAttribute('poster', self.image.src);\n            } else if (self.image.$item && 'IMG' === self.image.$item.tagName && self.image.$item.src) {\n              self.$video.setAttribute('poster', self.image.$item.src);\n            }\n          } // insert video tag\n\n\n          self.image.$container.appendChild(video); // remove parent video element (created by VideoWorker)\n\n          $parent.parentNode.removeChild($parent); // call onVideoInsert event\n\n          if (self.options.onVideoInsert) {\n            self.options.onVideoInsert.call(self);\n          }\n        });\n      }\n    }; // cover video\n\n\n    const defCoverImage = Jarallax.prototype.coverImage;\n\n    Jarallax.prototype.coverImage = function () {\n      const self = this;\n      const imageData = defCoverImage.apply(self);\n      const node = self.image.$item ? self.image.$item.nodeName : false;\n\n      if (imageData && self.video && node && ('IFRAME' === node || 'VIDEO' === node)) {\n        let h = imageData.image.height;\n        let w = h * self.image.width / self.image.height;\n        let ml = (imageData.container.width - w) / 2;\n        let mt = imageData.image.marginTop;\n\n        if (imageData.container.width > w) {\n          w = imageData.container.width;\n          h = w * self.image.height / self.image.width;\n          ml = 0;\n          mt += (imageData.image.height - h) / 2;\n        } // add video height over than need to hide controls\n\n\n        if ('IFRAME' === node) {\n          h += 400;\n          mt -= 200;\n        }\n\n        self.css(self.$video, {\n          width: `${w}px`,\n          marginLeft: `${ml}px`,\n          height: `${h}px`,\n          marginTop: `${mt}px`\n        });\n      }\n\n      return imageData;\n    }; // init video\n\n\n    const defInitImg = Jarallax.prototype.initImg;\n\n    Jarallax.prototype.initImg = function () {\n      const self = this;\n      const defaultResult = defInitImg.apply(self);\n\n      if (!self.options.videoSrc) {\n        self.options.videoSrc = self.$item.getAttribute('data-jarallax-video') || null;\n      }\n\n      if (self.options.videoSrc) {\n        self.defaultInitImgResult = defaultResult;\n        return true;\n      }\n\n      return defaultResult;\n    };\n\n    const defCanInitParallax = Jarallax.prototype.canInitParallax;\n\n    Jarallax.prototype.canInitParallax = function () {\n      const self = this;\n      let defaultResult = defCanInitParallax.apply(self);\n\n      if (!self.options.videoSrc) {\n        return defaultResult;\n      } // Init video api\n\n\n      const video = new VideoWorker(self.options.videoSrc, {\n        autoplay: true,\n        loop: self.options.videoLoop,\n        showControls: false,\n        accessibilityHidden: true,\n        startTime: self.options.videoStartTime || 0,\n        endTime: self.options.videoEndTime || 0,\n        mute: self.options.videoVolume ? 0 : 1,\n        volume: self.options.videoVolume || 0\n      }); // call onVideoWorkerInit event\n\n      if (self.options.onVideoWorkerInit) {\n        self.options.onVideoWorkerInit.call(self, video);\n      }\n\n      function resetDefaultImage() {\n        if (self.image.$default_item) {\n          self.image.$item = self.image.$default_item;\n          self.image.$item.style.display = 'block'; // set image width and height\n\n          self.coverImage();\n          self.onScroll();\n        }\n      }\n\n      if (video.isValid()) {\n        // Force enable parallax.\n        // When the parallax disabled on mobile devices, we still need to display videos.\n        // https://github.com/nk-o/jarallax/issues/159\n        if (this.options.disableParallax()) {\n          defaultResult = true;\n          self.image.position = 'absolute';\n          self.options.type = 'scroll';\n          self.options.speed = 1;\n        } // if parallax will not be inited, we can add thumbnail on background.\n\n\n        if (!defaultResult) {\n          if (!self.defaultInitImgResult) {\n            video.getImageURL(url => {\n              // save default user styles\n              const curStyle = self.$item.getAttribute('style');\n\n              if (curStyle) {\n                self.$item.setAttribute('data-jarallax-original-styles', curStyle);\n              } // set new background\n\n\n              self.css(self.$item, {\n                'background-image': `url(\"${url}\")`,\n                'background-position': 'center',\n                'background-size': 'cover'\n              });\n            });\n          } // init video\n\n        } else {\n          video.on('ready', () => {\n            if (self.options.videoPlayOnlyVisible) {\n              const oldOnScroll = self.onScroll;\n\n              self.onScroll = function () {\n                oldOnScroll.apply(self);\n\n                if (!self.videoError && (self.options.videoLoop || !self.options.videoLoop && !self.videoEnded)) {\n                  if (self.isVisible()) {\n                    video.play();\n                  } else {\n                    video.pause();\n                  }\n                }\n              };\n            } else {\n              video.play();\n            }\n          });\n          video.on('started', () => {\n            self.image.$default_item = self.image.$item;\n            self.image.$item = self.$video; // set video width and height\n\n            self.image.width = self.video.videoWidth || 1280;\n            self.image.height = self.video.videoHeight || 720;\n            self.coverImage();\n            self.onScroll(); // hide image\n\n            if (self.image.$default_item) {\n              self.image.$default_item.style.display = 'none';\n            }\n          });\n          video.on('ended', () => {\n            self.videoEnded = true;\n\n            if (!self.options.videoLoop) {\n              // show default image if Loop disabled.\n              resetDefaultImage();\n            }\n          });\n          video.on('error', () => {\n            self.videoError = true; // show default image if video loading error.\n\n            resetDefaultImage();\n          });\n          self.video = video; // set image if not exists\n\n          if (!self.defaultInitImgResult) {\n            // set empty image on self-hosted video if not defined\n            self.image.src = 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7';\n\n            if ('local' !== video.type) {\n              video.getImageURL(url => {\n                self.image.bgImage = `url(\"${url}\")`;\n                self.init();\n              });\n              return false;\n            }\n          }\n        }\n      }\n\n      return defaultResult;\n    }; // Destroy video parallax\n\n\n    const defDestroy = Jarallax.prototype.destroy;\n\n    Jarallax.prototype.destroy = function () {\n      const self = this;\n\n      if (self.image.$default_item) {\n        self.image.$item = self.image.$default_item;\n        delete self.image.$default_item;\n      }\n\n      defDestroy.apply(self);\n    };\n  }\n\n  jarallaxVideo(); // data-jarallax-video initialization\n\n  ready(() => {\n    if ('undefined' !== typeof global$1.jarallax) {\n      global$1.jarallax(document.querySelectorAll('[data-jarallax-video]'));\n    }\n  }); // We should add VideoWorker globally, since some project uses it.\n\n  if (!global$1.VideoWorker) {\n    global$1.VideoWorker = VideoWorker;\n  }\n\n  return jarallaxVideo;\n\n}));\n//# sourceMappingURL=jarallax-video.js.map\n","Magento_PageBuilder/js/resource/jarallax/jarallax-wrapper.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\ndefine([\n    'Magento_PageBuilder/js/resource/jarallax/jarallax'\n], function(jarallax){\n    'use strict';\n\n    window.jarallax = window.jarallax || jarallax;\n});\n","Magento_PageBuilder/js/resource/jarallax/jarallax.js":"/*!\n * Jarallax v2.0.3 (https://github.com/nk-o/jarallax)\n * Copyright 2022 nK <https://nkdev.info>\n * Licensed under MIT (https://github.com/nk-o/jarallax/blob/master/LICENSE)\n */\n(function (global, factory) {\n  typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n      typeof define === 'function' && define.amd ? define(factory) :\n          (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.jarallax = factory());\n})(this, (function () { 'use strict';\n\n  function ready(callback) {\n    if ('complete' === document.readyState || 'interactive' === document.readyState) {\n      // Already ready or interactive, execute callback\n      callback();\n    } else {\n      document.addEventListener('DOMContentLoaded', callback, {\n        capture: true,\n        once: true,\n        passive: true\n      });\n    }\n  }\n\n  /* eslint-disable import/no-mutable-exports */\n\n  /* eslint-disable no-restricted-globals */\n  let win;\n\n  if ('undefined' !== typeof window) {\n    win = window;\n  } else if ('undefined' !== typeof global) {\n    win = global;\n  } else if ('undefined' !== typeof self) {\n    win = self;\n  } else {\n    win = {};\n  }\n\n  var global$1 = win;\n\n  const {\n    navigator\n  } = global$1;\n  const isMobile = /*#__PURE__*/ /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);\n  let $deviceHelper;\n  /**\n   * The most popular mobile browsers changes height after page scroll and this generates image jumping.\n   * We can fix it using this workaround with vh units.\n   */\n\n  function getDeviceHeight() {\n    if (!$deviceHelper && document.body) {\n      $deviceHelper = document.createElement('div');\n      $deviceHelper.style.cssText = 'position: fixed; top: -9999px; left: 0; height: 100vh; width: 0;';\n      document.body.appendChild($deviceHelper);\n    }\n\n    return ($deviceHelper ? $deviceHelper.clientHeight : 0) || global$1.innerHeight || document.documentElement.clientHeight;\n  } // Window height data\n\n\n  let wndH;\n\n  function updateWndVars() {\n    if (isMobile) {\n      wndH = getDeviceHeight();\n    } else {\n      wndH = global$1.innerHeight || document.documentElement.clientHeight;\n    }\n  }\n\n  updateWndVars();\n  global$1.addEventListener('resize', updateWndVars);\n  global$1.addEventListener('orientationchange', updateWndVars);\n  global$1.addEventListener('load', updateWndVars);\n  ready(() => {\n    updateWndVars();\n  }); // list with all jarallax instances\n  // need to render all in one scroll/resize event\n\n  const jarallaxList = []; // get all parents of the element.\n\n  function getParents(elem) {\n    const parents = [];\n\n    while (null !== elem.parentElement) {\n      elem = elem.parentElement;\n\n      if (1 === elem.nodeType) {\n        parents.push(elem);\n      }\n    }\n\n    return parents;\n  }\n\n  function updateParallax() {\n    if (!jarallaxList.length) {\n      return;\n    }\n\n    jarallaxList.forEach((data, k) => {\n      const {\n        instance,\n        oldData\n      } = data;\n      const clientRect = instance.$item.getBoundingClientRect();\n      const newData = {\n        width: clientRect.width,\n        height: clientRect.height,\n        top: clientRect.top,\n        bottom: clientRect.bottom,\n        wndW: global$1.innerWidth,\n        wndH\n      };\n      const isResized = !oldData || oldData.wndW !== newData.wndW || oldData.wndH !== newData.wndH || oldData.width !== newData.width || oldData.height !== newData.height;\n      const isScrolled = isResized || !oldData || oldData.top !== newData.top || oldData.bottom !== newData.bottom;\n      jarallaxList[k].oldData = newData;\n\n      if (isResized) {\n        instance.onResize();\n      }\n\n      if (isScrolled) {\n        instance.onScroll();\n      }\n    });\n    global$1.requestAnimationFrame(updateParallax);\n  }\n\n  let instanceID = 0; // Jarallax class\n\n  class Jarallax {\n    constructor(item, userOptions) {\n      const self = this;\n      self.instanceID = instanceID;\n      instanceID += 1;\n      self.$item = item;\n      self.defaults = {\n        type: 'scroll',\n        // type of parallax: scroll, scale, opacity, scale-opacity, scroll-opacity\n        speed: 0.5,\n        // supported value from -1 to 2\n        imgSrc: null,\n        imgElement: '.jarallax-img',\n        imgSize: 'cover',\n        imgPosition: '50% 50%',\n        imgRepeat: 'no-repeat',\n        // supported only for background, not for <img> tag\n        keepImg: false,\n        // keep <img> tag in it's default place\n        elementInViewport: null,\n        zIndex: -100,\n        disableParallax: false,\n        disableVideo: false,\n        // video\n        videoSrc: null,\n        videoStartTime: 0,\n        videoEndTime: 0,\n        videoVolume: 0,\n        videoLoop: true,\n        videoPlayOnlyVisible: true,\n        videoLazyLoading: true,\n        // events\n        onScroll: null,\n        // function(calculations) {}\n        onInit: null,\n        // function() {}\n        onDestroy: null,\n        // function() {}\n        onCoverImage: null // function() {}\n\n      }; // prepare data-options\n\n      const dataOptions = self.$item.dataset || {};\n      const pureDataOptions = {};\n      Object.keys(dataOptions).forEach(key => {\n        const loweCaseOption = key.substr(0, 1).toLowerCase() + key.substr(1);\n\n        if (loweCaseOption && 'undefined' !== typeof self.defaults[loweCaseOption]) {\n          pureDataOptions[loweCaseOption] = dataOptions[key];\n        }\n      });\n      self.options = self.extend({}, self.defaults, pureDataOptions, userOptions);\n      self.pureOptions = self.extend({}, self.options); // prepare 'true' and 'false' strings to boolean\n\n      Object.keys(self.options).forEach(key => {\n        if ('true' === self.options[key]) {\n          self.options[key] = true;\n        } else if ('false' === self.options[key]) {\n          self.options[key] = false;\n        }\n      }); // fix speed option [-1.0, 2.0]\n\n      self.options.speed = Math.min(2, Math.max(-1, parseFloat(self.options.speed))); // prepare disableParallax callback\n\n      if ('string' === typeof self.options.disableParallax) {\n        self.options.disableParallax = new RegExp(self.options.disableParallax);\n      }\n\n      if (self.options.disableParallax instanceof RegExp) {\n        const disableParallaxRegexp = self.options.disableParallax;\n\n        self.options.disableParallax = () => disableParallaxRegexp.test(navigator.userAgent);\n      }\n\n      if ('function' !== typeof self.options.disableParallax) {\n        self.options.disableParallax = () => false;\n      } // prepare disableVideo callback\n\n\n      if ('string' === typeof self.options.disableVideo) {\n        self.options.disableVideo = new RegExp(self.options.disableVideo);\n      }\n\n      if (self.options.disableVideo instanceof RegExp) {\n        const disableVideoRegexp = self.options.disableVideo;\n\n        self.options.disableVideo = () => disableVideoRegexp.test(navigator.userAgent);\n      }\n\n      if ('function' !== typeof self.options.disableVideo) {\n        self.options.disableVideo = () => false;\n      } // custom element to check if parallax in viewport\n\n\n      let elementInVP = self.options.elementInViewport; // get first item from array\n\n      if (elementInVP && 'object' === typeof elementInVP && 'undefined' !== typeof elementInVP.length) {\n        [elementInVP] = elementInVP;\n      } // check if dom element\n\n\n      if (!(elementInVP instanceof Element)) {\n        elementInVP = null;\n      }\n\n      self.options.elementInViewport = elementInVP;\n      self.image = {\n        src: self.options.imgSrc || null,\n        $container: null,\n        useImgTag: false,\n        // 1. Position fixed is needed for the most of browsers because absolute position have glitches\n        // 2. On MacOS with smooth scroll there is a huge lags with absolute position - https://github.com/nk-o/jarallax/issues/75\n        // 3. Previously used 'absolute' for mobile devices. But we re-tested on iPhone 12 and 'fixed' position is working better, then 'absolute', so for now position is always 'fixed'\n        position: 'fixed'\n      };\n\n      if (self.initImg() && self.canInitParallax()) {\n        self.init();\n      }\n    } // add styles to element\n    // eslint-disable-next-line class-methods-use-this\n\n\n    css(el, styles) {\n      if ('string' === typeof styles) {\n        return global$1.getComputedStyle(el).getPropertyValue(styles);\n      }\n\n      Object.keys(styles).forEach(key => {\n        el.style[key] = styles[key];\n      });\n      return el;\n    } // Extend like jQuery.extend\n    // eslint-disable-next-line class-methods-use-this\n\n\n    extend(out, ...args) {\n      out = out || {};\n      Object.keys(args).forEach(i => {\n        if (!args[i]) {\n          return;\n        }\n\n        Object.keys(args[i]).forEach(key => {\n          out[key] = args[i][key];\n        });\n      });\n      return out;\n    } // get window size and scroll position. Useful for extensions\n    // eslint-disable-next-line class-methods-use-this\n\n\n    getWindowData() {\n      return {\n        width: global$1.innerWidth || document.documentElement.clientWidth,\n        height: wndH,\n        y: document.documentElement.scrollTop\n      };\n    } // Jarallax functions\n\n\n    initImg() {\n      const self = this; // find image element\n\n      let $imgElement = self.options.imgElement;\n\n      if ($imgElement && 'string' === typeof $imgElement) {\n        $imgElement = self.$item.querySelector($imgElement);\n      } // check if dom element\n\n\n      if (!($imgElement instanceof Element)) {\n        if (self.options.imgSrc) {\n          $imgElement = new Image();\n          $imgElement.src = self.options.imgSrc;\n        } else {\n          $imgElement = null;\n        }\n      }\n\n      if ($imgElement) {\n        if (self.options.keepImg) {\n          self.image.$item = $imgElement.cloneNode(true);\n        } else {\n          self.image.$item = $imgElement;\n          self.image.$itemParent = $imgElement.parentNode;\n        }\n\n        self.image.useImgTag = true;\n      } // true if there is img tag\n\n\n      if (self.image.$item) {\n        return true;\n      } // get image src\n\n\n      if (null === self.image.src) {\n        self.image.src = 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7';\n        self.image.bgImage = self.css(self.$item, 'background-image');\n      }\n\n      return !(!self.image.bgImage || 'none' === self.image.bgImage);\n    }\n\n    canInitParallax() {\n      return !this.options.disableParallax();\n    }\n\n    init() {\n      const self = this;\n      const containerStyles = {\n        position: 'absolute',\n        top: 0,\n        left: 0,\n        width: '100%',\n        height: '100%',\n        overflow: 'hidden'\n      };\n      let imageStyles = {\n        pointerEvents: 'none',\n        transformStyle: 'preserve-3d',\n        backfaceVisibility: 'hidden',\n        willChange: 'transform,opacity'\n      };\n\n      if (!self.options.keepImg) {\n        // save default user styles\n        const curStyle = self.$item.getAttribute('style');\n\n        if (curStyle) {\n          self.$item.setAttribute('data-jarallax-original-styles', curStyle);\n        }\n\n        if (self.image.useImgTag) {\n          const curImgStyle = self.image.$item.getAttribute('style');\n\n          if (curImgStyle) {\n            self.image.$item.setAttribute('data-jarallax-original-styles', curImgStyle);\n          }\n        }\n      } // set relative position and z-index to the parent\n\n\n      if ('static' === self.css(self.$item, 'position')) {\n        self.css(self.$item, {\n          position: 'relative'\n        });\n      }\n\n      if ('auto' === self.css(self.$item, 'z-index')) {\n        self.css(self.$item, {\n          zIndex: 0\n        });\n      } // container for parallax image\n\n\n      self.image.$container = document.createElement('div');\n      self.css(self.image.$container, containerStyles);\n      self.css(self.image.$container, {\n        'z-index': self.options.zIndex\n      }); // it will remove some image overlapping\n      // overlapping occur due to an image position fixed inside absolute position element\n      // needed only when background in fixed position\n\n      if ('fixed' === this.image.position) {\n        self.css(self.image.$container, {\n          '-webkit-clip-path': 'polygon(0 0, 100% 0, 100% 100%, 0 100%)',\n          'clip-path': 'polygon(0 0, 100% 0, 100% 100%, 0 100%)'\n        });\n      }\n\n      self.image.$container.setAttribute('id', `jarallax-container-${self.instanceID}`);\n      self.$item.appendChild(self.image.$container); // use img tag\n\n      if (self.image.useImgTag) {\n        imageStyles = self.extend({\n          'object-fit': self.options.imgSize,\n          'object-position': self.options.imgPosition,\n          'max-width': 'none'\n        }, containerStyles, imageStyles); // use div with background image\n      } else {\n        self.image.$item = document.createElement('div');\n\n        if (self.image.src) {\n          imageStyles = self.extend({\n            'background-position': self.options.imgPosition,\n            'background-size': self.options.imgSize,\n            'background-repeat': self.options.imgRepeat,\n            'background-image': self.image.bgImage || `url(\"${self.image.src}\")`\n          }, containerStyles, imageStyles);\n        }\n      }\n\n      if ('opacity' === self.options.type || 'scale' === self.options.type || 'scale-opacity' === self.options.type || 1 === self.options.speed) {\n        self.image.position = 'absolute';\n      } // 1. Check if one of parents have transform style (without this check, scroll transform will be inverted if used parallax with position fixed)\n      //    discussion - https://github.com/nk-o/jarallax/issues/9\n      // 2. Check if parents have overflow scroll\n\n\n      if ('fixed' === self.image.position) {\n        const $parents = getParents(self.$item).filter(el => {\n          const styles = global$1.getComputedStyle(el);\n          const parentTransform = styles['-webkit-transform'] || styles['-moz-transform'] || styles.transform;\n          const overflowRegex = /(auto|scroll)/;\n          return parentTransform && 'none' !== parentTransform || overflowRegex.test(styles.overflow + styles['overflow-y'] + styles['overflow-x']);\n        });\n        self.image.position = $parents.length ? 'absolute' : 'fixed';\n      } // add position to parallax block\n\n\n      imageStyles.position = self.image.position; // insert parallax image\n\n      self.css(self.image.$item, imageStyles);\n      self.image.$container.appendChild(self.image.$item); // set initial position and size\n\n      self.onResize();\n      self.onScroll(true); // call onInit event\n\n      if (self.options.onInit) {\n        self.options.onInit.call(self);\n      } // remove default user background\n\n\n      if ('none' !== self.css(self.$item, 'background-image')) {\n        self.css(self.$item, {\n          'background-image': 'none'\n        });\n      }\n\n      self.addToParallaxList();\n    } // add to parallax instances list\n\n\n    addToParallaxList() {\n      jarallaxList.push({\n        instance: this\n      });\n\n      if (1 === jarallaxList.length) {\n        global$1.requestAnimationFrame(updateParallax);\n      }\n    } // remove from parallax instances list\n\n\n    removeFromParallaxList() {\n      const self = this;\n      jarallaxList.forEach((data, key) => {\n        if (data.instance.instanceID === self.instanceID) {\n          jarallaxList.splice(key, 1);\n        }\n      });\n    }\n\n    destroy() {\n      const self = this;\n      self.removeFromParallaxList(); // return styles on container as before jarallax init\n\n      const originalStylesTag = self.$item.getAttribute('data-jarallax-original-styles');\n      self.$item.removeAttribute('data-jarallax-original-styles'); // null occurs if there is no style tag before jarallax init\n\n      if (!originalStylesTag) {\n        self.$item.removeAttribute('style');\n      } else {\n        self.$item.setAttribute('style', originalStylesTag);\n      }\n\n      if (self.image.useImgTag) {\n        // return styles on img tag as before jarallax init\n        const originalStylesImgTag = self.image.$item.getAttribute('data-jarallax-original-styles');\n        self.image.$item.removeAttribute('data-jarallax-original-styles'); // null occurs if there is no style tag before jarallax init\n\n        if (!originalStylesImgTag) {\n          self.image.$item.removeAttribute('style');\n        } else {\n          self.image.$item.setAttribute('style', originalStylesTag);\n        } // move img tag to its default position\n\n\n        if (self.image.$itemParent) {\n          self.image.$itemParent.appendChild(self.image.$item);\n        }\n      } // remove additional dom elements\n\n\n      if (self.image.$container) {\n        self.image.$container.parentNode.removeChild(self.image.$container);\n      } // call onDestroy event\n\n\n      if (self.options.onDestroy) {\n        self.options.onDestroy.call(self);\n      } // delete jarallax from item\n\n\n      delete self.$item.jarallax;\n    } // Fallback for removed function.\n    // Does nothing now.\n    // eslint-disable-next-line class-methods-use-this\n\n\n    clipContainer() {}\n\n    coverImage() {\n      const self = this;\n      const rect = self.image.$container.getBoundingClientRect();\n      const contH = rect.height;\n      const {\n        speed\n      } = self.options;\n      const isScroll = 'scroll' === self.options.type || 'scroll-opacity' === self.options.type;\n      let scrollDist = 0;\n      let resultH = contH;\n      let resultMT = 0; // scroll parallax\n\n      if (isScroll) {\n        // scroll distance and height for image\n        if (0 > speed) {\n          scrollDist = speed * Math.max(contH, wndH);\n\n          if (wndH < contH) {\n            scrollDist -= speed * (contH - wndH);\n          }\n        } else {\n          scrollDist = speed * (contH + wndH);\n        } // size for scroll parallax\n\n\n        if (1 < speed) {\n          resultH = Math.abs(scrollDist - wndH);\n        } else if (0 > speed) {\n          resultH = scrollDist / speed + Math.abs(scrollDist);\n        } else {\n          resultH += (wndH - contH) * (1 - speed);\n        }\n\n        scrollDist /= 2;\n      } // store scroll distance\n\n\n      self.parallaxScrollDistance = scrollDist; // vertical center\n\n      if (isScroll) {\n        resultMT = (wndH - resultH) / 2;\n      } else {\n        resultMT = (contH - resultH) / 2;\n      } // apply result to item\n\n\n      self.css(self.image.$item, {\n        height: `${resultH}px`,\n        marginTop: `${resultMT}px`,\n        left: 'fixed' === self.image.position ? `${rect.left}px` : '0',\n        width: `${rect.width}px`\n      }); // call onCoverImage event\n\n      if (self.options.onCoverImage) {\n        self.options.onCoverImage.call(self);\n      } // return some useful data. Used in the video cover function\n\n\n      return {\n        image: {\n          height: resultH,\n          marginTop: resultMT\n        },\n        container: rect\n      };\n    }\n\n    isVisible() {\n      return this.isElementInViewport || false;\n    }\n\n    onScroll(force) {\n      const self = this;\n      const rect = self.$item.getBoundingClientRect();\n      const contT = rect.top;\n      const contH = rect.height;\n      const styles = {}; // check if in viewport\n\n      let viewportRect = rect;\n\n      if (self.options.elementInViewport) {\n        viewportRect = self.options.elementInViewport.getBoundingClientRect();\n      }\n\n      self.isElementInViewport = 0 <= viewportRect.bottom && 0 <= viewportRect.right && viewportRect.top <= wndH && viewportRect.left <= global$1.innerWidth; // stop calculations if item is not in viewport\n\n      if (force ? false : !self.isElementInViewport) {\n        return;\n      } // calculate parallax helping variables\n\n\n      const beforeTop = Math.max(0, contT);\n      const beforeTopEnd = Math.max(0, contH + contT);\n      const afterTop = Math.max(0, -contT);\n      const beforeBottom = Math.max(0, contT + contH - wndH);\n      const beforeBottomEnd = Math.max(0, contH - (contT + contH - wndH));\n      const afterBottom = Math.max(0, -contT + wndH - contH);\n      const fromViewportCenter = 1 - 2 * ((wndH - contT) / (wndH + contH)); // calculate on how percent of section is visible\n\n      let visiblePercent = 1;\n\n      if (contH < wndH) {\n        visiblePercent = 1 - (afterTop || beforeBottom) / contH;\n      } else if (beforeTopEnd <= wndH) {\n        visiblePercent = beforeTopEnd / wndH;\n      } else if (beforeBottomEnd <= wndH) {\n        visiblePercent = beforeBottomEnd / wndH;\n      } // opacity\n\n\n      if ('opacity' === self.options.type || 'scale-opacity' === self.options.type || 'scroll-opacity' === self.options.type) {\n        styles.transform = 'translate3d(0,0,0)';\n        styles.opacity = visiblePercent;\n      } // scale\n\n\n      if ('scale' === self.options.type || 'scale-opacity' === self.options.type) {\n        let scale = 1;\n\n        if (0 > self.options.speed) {\n          scale -= self.options.speed * visiblePercent;\n        } else {\n          scale += self.options.speed * (1 - visiblePercent);\n        }\n\n        styles.transform = `scale(${scale}) translate3d(0,0,0)`;\n      } // scroll\n\n\n      if ('scroll' === self.options.type || 'scroll-opacity' === self.options.type) {\n        let positionY = self.parallaxScrollDistance * fromViewportCenter; // fix if parallax block in absolute position\n\n        if ('absolute' === self.image.position) {\n          positionY -= contT;\n        }\n\n        styles.transform = `translate3d(0,${positionY}px,0)`;\n      }\n\n      self.css(self.image.$item, styles); // call onScroll event\n\n      if (self.options.onScroll) {\n        self.options.onScroll.call(self, {\n          section: rect,\n          beforeTop,\n          beforeTopEnd,\n          afterTop,\n          beforeBottom,\n          beforeBottomEnd,\n          afterBottom,\n          visiblePercent,\n          fromViewportCenter\n        });\n      }\n    }\n\n    onResize() {\n      this.coverImage();\n    }\n\n  } // global definition\n\n\n  const jarallax = function (items, options, ...args) {\n    // check for dom element\n    // thanks: http://stackoverflow.com/questions/384286/javascript-isdom-how-do-you-check-if-a-javascript-object-is-a-dom-object\n    if ('object' === typeof HTMLElement ? items instanceof HTMLElement : items && 'object' === typeof items && null !== items && 1 === items.nodeType && 'string' === typeof items.nodeName) {\n      items = [items];\n    }\n\n    const len = items.length;\n    let k = 0;\n    let ret;\n\n    for (k; k < len; k += 1) {\n      if ('object' === typeof options || 'undefined' === typeof options) {\n        if (!items[k].jarallax) {\n          items[k].jarallax = new Jarallax(items[k], options);\n        }\n      } else if (items[k].jarallax) {\n        // eslint-disable-next-line prefer-spread\n        ret = items[k].jarallax[options].apply(items[k].jarallax, args);\n      }\n\n      if ('undefined' !== typeof ret) {\n        return ret;\n      }\n    }\n\n    return items;\n  };\n\n  jarallax.constructor = Jarallax;\n\n  const $ = global$1.jQuery; // jQuery support\n\n  if ('undefined' !== typeof $) {\n    const $Plugin = function (...args) {\n      Array.prototype.unshift.call(args, this);\n      const res = jarallax.apply(global$1, args);\n      return 'object' !== typeof res ? res : this;\n    };\n\n    $Plugin.constructor = jarallax.constructor; // no conflict\n\n    const old$Plugin = $.fn.jarallax;\n    $.fn.jarallax = $Plugin;\n\n    $.fn.jarallax.noConflict = function () {\n      $.fn.jarallax = old$Plugin;\n      return this;\n    };\n  } // data-jarallax initialization\n\n\n  ready(() => {\n    jarallax(document.querySelectorAll('[data-jarallax]'));\n  });\n\n  return jarallax;\n\n}));\n//# sourceMappingURL=jarallax.js.map\n","Magento_PageBuilder/js/widget/show-on-hover.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\ndefine(['jquery'], function ($) {\n    'use strict';\n\n    /**\n     * Show the overlay on hover of specific elements\n     *\n     * @param {JQuery<Element>[]} $elements\n     */\n    function showOverlayOnHover($elements) {\n        $elements.each(function (index, element) {\n            var overlayEl = $(element).find('.pagebuilder-overlay'),\n                overlayColor = overlayEl.attr('data-overlay-color');\n\n            $(element).on('mouseenter', function () {\n                overlayEl.css('background-color', overlayColor);\n            });\n\n            $(element).on('mouseleave', function () {\n                overlayEl.css('background-color', 'transparent');\n            });\n        });\n    }\n\n    /**\n     * Show button on hover of specific elements\n     *\n     * @param {JQuery<Element>[]} $elements\n     * @param {String} buttonClass\n     */\n    function showButtonOnHover($elements, buttonClass) {\n        $elements.each(function (index, element) {\n            var buttonEl = $(element).find(buttonClass);\n\n            $(element).on('mouseenter', function () {\n                buttonEl.css({\n                    'opacity': '1',\n                    'visibility': 'visible'\n                });\n            });\n\n            $(element).on('mouseleave', function () {\n                buttonEl.css({\n                    'opacity': '0',\n                    'visibility': 'hidden'\n                });\n            });\n        });\n    }\n\n    return function (config) {\n\n        var buttonSelector = config.buttonSelector,\n            overlayHoverSelector = 'div[data-content-type=\"%s\"][data-show-overlay=\"%s\"]'\n                .replace('%s', config.dataRole)\n                .replace('%s', config.showOverlay),\n            overlayButtonSelector = 'div[data-content-type=\"%s\"][data-show-button=\"%s\"]'\n                .replace('%s', config.dataRole)\n                .replace('%s', config.showOverlay);\n\n        showOverlayOnHover($(overlayHoverSelector));\n        showButtonOnHover($(overlayButtonSelector), buttonSelector);\n    };\n});\n","Magento_PageBuilder/js/widget/video-background.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\ndefine([\n    'jquery',\n    'jarallax',\n    'jarallaxVideo',\n    'vimeoWrapper'\n], function ($) {\n    'use strict';\n\n    return function (config, element) {\n        var $element = $(element),\n            parallaxSpeed = $element.data('enableParallax') !== 1 ? 1 : parseFloat($element.data('parallaxSpeed'));\n\n        if ($element.data('background-type') !== 'video') {\n            return;\n        }\n\n        $element.addClass('jarallax');\n        $element.attr('data-jarallax', '');\n\n        window.jarallax($element[0], {\n            imgSrc: $element.data('videoFallbackSrc'),\n            speed: !isNaN(parallaxSpeed) ? parallaxSpeed : 0.5,\n            videoLoop: $element.data('videoLoop'),\n            videoPlayOnlyVisible: $element.data('videoPlayOnlyVisible'),\n            videoLazyLoading: $element.data('videoLazyLoad'),\n            disableVideo: false,\n            elementInViewport: $element.data('elementInViewport') &&\n                $element[0].querySelector($element.data('elementInViewport'))\n        });\n        $element[0].jarallax.video && $element[0].jarallax.video.on('started', function () {\n            if ($element[0].jarallax.$video) {\n                $element[0].jarallax.$video.style.visibility = 'visible';\n            }\n        });\n    };\n});\n","Magento_PageBuilder/js/content-type/map/appearance/default/widget.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\ndefine([\n    'jquery',\n    'Magento_PageBuilder/js/utils/map'\n], function ($, GoogleMap) {\n    'use strict';\n\n    return function (config, element) {\n        var locations,\n            controls,\n            mapOptions = {};\n\n        element = element[0];\n\n        if (element !== undefined && element.hasAttribute('data-locations')) {\n\n            /**\n             * Set map display to none if no locations\n             */\n            if (element.getAttribute('data-locations') === '[]') {\n                $(element).hide();\n\n                return;\n            }\n            locations = JSON.parse(element.getAttribute('data-locations'));\n            locations.forEach(function (location) {\n                location.position.latitude = parseFloat(location.position.latitude);\n                location.position.longitude = parseFloat(location.position.longitude);\n            });\n            controls = element.getAttribute('data-show-controls');\n            mapOptions.disableDefaultUI = controls !== 'true';\n            mapOptions.mapTypeControl = controls === 'true';\n            new GoogleMap(element, locations, mapOptions);\n        }\n    };\n});\n","Magento_PageBuilder/js/content-type/slide/appearance/default/widget.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\ndefine([\n    'jquery',\n    'underscore',\n    'Magento_PageBuilder/js/widget/show-on-hover',\n    'Magento_PageBuilder/js/widget/video-background'\n], function ($, _, showOnHover, videoBackground) {\n    'use strict';\n\n    return function (config, element) {\n        var videoElement = element[0].querySelector('[data-background-type=video]'),\n            viewportElement = document.createElement('div'),\n            $slider = null;\n\n        showOnHover(config);\n\n        if (videoElement) {\n            $slider = $(element).closest('[data-content-type=slider]');\n            viewportElement.classList.add('jarallax-viewport-element');\n            videoElement.setAttribute('data-element-in-viewport', '.jarallax-viewport-element');\n            videoElement.appendChild(viewportElement);\n            videoBackground(config, videoElement);\n\n            if ($slider.data('afterChangeIsSet')) {\n                return;\n            }\n\n            $slider.on('afterChange init', function () {\n                var videoSlides = $slider[0].querySelectorAll('.jarallax');\n\n                _.each(videoSlides, function (videoSlide) {\n                    videoSlide.jarallax && videoSlide.jarallax.onScroll();\n                });\n            });\n            $slider.data('afterChangeIsSet', true);\n        }\n    };\n});\n","Magento_PageBuilder/js/content-type/row/appearance/default/widget.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\ndefine([\n    'jquery',\n    'Magento_PageBuilder/js/widget/video-background',\n    'jarallax'\n], function ($, videoBackground) {\n    'use strict';\n\n    return function (config, element) {\n        var $element = $(element),\n            parallaxSpeed = null,\n            elementStyle = null;\n\n        if ($element.data('appearance') === 'contained') {\n            $element = $(element).find('[data-element=\"inner\"]');\n        }\n\n        if ($element.data('background-type') === 'video') {\n            videoBackground(config, $element[0]);\n\n            return;\n        }\n\n        if ($element.data('enableParallax') !== 1) {\n            return;\n        }\n\n        $element.addClass('jarallax');\n        $element.attr('data-jarallax', '');\n\n        parallaxSpeed = parseFloat($element.data('parallaxSpeed'));\n        elementStyle = window.getComputedStyle($element[0]);\n\n        window.jarallax($element[0], {\n            imgPosition: elementStyle.backgroundPosition || '50% 50%',\n            imgRepeat: elementStyle.backgroundRepeat || 'no-repeat',\n            imgSize: elementStyle.backgroundSize || 'cover',\n            speed: !isNaN(parallaxSpeed) ? parallaxSpeed : 0.5\n        });\n    };\n});\n","Magento_PageBuilder/js/content-type/banner/appearance/default/widget.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\ndefine([\n    'Magento_PageBuilder/js/widget/show-on-hover',\n    'Magento_PageBuilder/js/widget/video-background'\n], function (showOnHover, videoBackground) {\n    'use strict';\n\n    return function (config, element) {\n        var videoElement = element[0].querySelector('[data-background-type=video]');\n\n        showOnHover(config);\n\n        if (videoElement) {\n            videoBackground(config, videoElement);\n        }\n    };\n});\n","Magento_PageBuilder/js/content-type/products/appearance/carousel/widget.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\ndefine([\n    'jquery',\n    'underscore',\n    'matchMedia',\n    'Magento_PageBuilder/js/utils/breakpoints',\n    'Magento_PageBuilder/js/events',\n    'slick'\n], function ($, _, mediaCheck, breakpointsUtils, events) {\n    'use strict';\n\n    /**\n     * Build slick\n     *\n     * @param {jQuery} $carouselElement\n     * @param {Object} config\n     */\n    function buildSlick($carouselElement, config) {\n        /**\n         * Prevent each slick slider from being initialized more than once which could throw an error.\n         */\n        if ($carouselElement.hasClass('slick-initialized')) {\n            $carouselElement.slick('unslick');\n        }\n\n        config.slidesToScroll = config.slidesToShow;\n        $carouselElement.slick(config);\n    }\n\n    /**\n     * Initialize slider.\n     *\n     * @param {jQuery} $element\n     * @param {Object} slickConfig\n     * @param {Object} breakpoint\n     */\n    function initSlider($element, slickConfig, breakpoint) {\n        var productCount = $element.find('.product-item').length,\n            $carouselElement = $($element.children()),\n            centerModeClass = 'center-mode',\n            carouselMode = $element.data('carousel-mode'),\n            slidesToShow = breakpoint.options.products[carouselMode] ?\n                breakpoint.options.products[carouselMode].slidesToShow :\n                breakpoint.options.products.default.slidesToShow;\n\n        slickConfig.slidesToShow = parseFloat(slidesToShow);\n\n        if (carouselMode === 'continuous' && productCount > slickConfig.slidesToShow) {\n            $element.addClass(centerModeClass);\n            slickConfig.centerPadding = $element.data('center-padding');\n            slickConfig.centerMode = true;\n        } else {\n            $element.removeClass(centerModeClass);\n            slickConfig.infinite = $element.data('infinite-loop');\n        }\n\n        buildSlick($carouselElement, slickConfig);\n    }\n\n    return function (config, element) {\n        var $element = $(element),\n            $carouselElement = $($element.children()),\n            currentViewport = config.currentViewport,\n            currentBreakpoint = config.breakpoints[currentViewport],\n            slickConfig = {\n                autoplay: $element.data('autoplay'),\n                autoplaySpeed: $element.data('autoplay-speed') || 0,\n                arrows: $element.data('show-arrows'),\n                dots: $element.data('show-dots')\n            };\n\n        _.each(config.breakpoints, function (breakpoint) {\n            mediaCheck({\n                media: breakpointsUtils.buildMedia(breakpoint.conditions),\n\n                /** @inheritdoc */\n                entry: function () {\n                    initSlider($element, slickConfig, breakpoint);\n                }\n            });\n        });\n\n        //initialize slider when content type is added in mobile viewport\n        if (currentViewport === 'mobile') {\n            initSlider($element, slickConfig, currentBreakpoint);\n        }\n\n        // Redraw slide after content type gets redrawn\n        events.on('contentType:redrawAfter', function (args) {\n            if ($carouselElement.closest(args.element).length) {\n                $carouselElement.slick('setPosition');\n            }\n        });\n\n        events.on('stage:viewportChangeAfter', function (args) {\n            var breakpoint = config.breakpoints[args.viewport];\n\n            initSlider($element, slickConfig, breakpoint);\n        });\n    };\n});\n","Magento_PageBuilder/js/content-type/tabs/appearance/default/widget.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\ndefine([\n    'jquery',\n    'Magento_PageBuilder/js/events',\n    'jquery-ui-modules/tabs'\n], function ($, events) {\n    'use strict';\n\n    return function (config, element) {\n        var $element = $(element);\n\n        // Ignore stage builder preview tabs\n        if ($element.is('.pagebuilder-tabs')) {\n            return;\n        }\n\n        // Disambiguate between the mage/tabs component which is loaded randomly depending on requirejs order.\n        $.ui.tabs({\n            active: $element.data('activeTab') || 0,\n            create:\n\n                /**\n                 * Adjust the margin bottom of the navigation to correctly display the active tab\n                 */\n                function () {\n                    var borderWidth = parseInt($element.find('.tabs-content').css('borderWidth').toString(), 10);\n\n                    $element.find('.tabs-navigation').css('marginBottom', -borderWidth);\n                    $element.find('.tabs-navigation li:not(:first-child)').css('marginLeft', -borderWidth);\n                },\n            activate:\n\n                /**\n                 * Trigger redraw event since new content is being displayed\n                 */\n                function () {\n                    events.trigger('contentType:redrawAfter', {\n                        element: element\n                    });\n                }\n        }, element);\n    };\n});\n","Magento_PageBuilder/js/content-type/buttons/appearance/inline/widget.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\ndefine([\n    'jquery',\n    'Magento_PageBuilder/js/events'\n], function ($, events) {\n    'use strict';\n\n    /**\n     * Equalize the width of a list of button-item components\n     *\n     * @param {JQuery} buttonList\n     */\n    var equalizeButtonWidth = function (buttonList) {\n        var buttonMinWidth = 0;\n\n        buttonList.css('min-width', buttonMinWidth);\n        buttonList.each(function () {\n            var buttonWidth = this.offsetWidth;\n\n            if (buttonWidth > buttonMinWidth) {\n                buttonMinWidth = buttonWidth;\n            }\n        });\n        buttonList.css('min-width', buttonMinWidth);\n    };\n\n    return function (config, element) {\n        var $element = $(element),\n            buttonSelector = '[data-element=\"link\"], [data-element=\"empty_link\"]';\n\n        if ($element.data('sameWidth')) {\n            equalizeButtonWidth($element.find(buttonSelector));\n            $(window).on('resize', function () {\n                equalizeButtonWidth($element.find(buttonSelector));\n            });\n            events.on('contentType:redrawAfter', function (eventData) {\n                if ($element.closest(eventData.element).length > 0) {\n                    equalizeButtonWidth($element.find(buttonSelector));\n                }\n            });\n        }\n    };\n});\n","Magento_PageBuilder/js/content-type/slider/appearance/default/widget.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\ndefine([\n    'jquery',\n    'Magento_PageBuilder/js/events',\n    'slick'\n], function ($, events) {\n    'use strict';\n\n    return function (config, sliderElement) {\n        var $element = $(sliderElement);\n\n        /**\n         * Prevent each slick slider from being initialized more than once which could throw an error.\n         */\n        if ($element.hasClass('slick-initialized')) {\n            $element.slick('unslick');\n        }\n\n        $element.slick({\n            autoplay: $element.data('autoplay'),\n            autoplaySpeed: $element.data('autoplay-speed') || 0,\n            fade: $element.data('fade'),\n            infinite: $element.data('infinite-loop'),\n            arrows: $element.data('show-arrows'),\n            dots: $element.data('show-dots')\n        });\n\n        // Redraw slide after content type gets redrawn\n        events.on('contentType:redrawAfter', function (args) {\n            if ($element.closest(args.element).length) {\n                $element.slick('setPosition');\n            }\n        });\n        // eslint-disable-next-line jquery-no-bind-unbind\n        events.on('stage:viewportChangeAfter', $element.slick.bind($element, 'setPosition'));\n    };\n});\n","Magento_PageBuilder/js/utils/map.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\n/**\n * googleMaps dependency is added within googlemaps.phtml through shim based on API key being set\n *\n * @api\n */\ndefine([\n    'underscore',\n    'module',\n    'Magento_PageBuilder/js/events'\n], function (_, module, events) {\n    'use strict';\n\n    var google = window.google || {},\n\n        /**\n         * Generates a google map usable latitude and longitude object\n         *\n         * @param {Object} position\n         * @return {google.maps.LatLng}\n         */\n        getGoogleLatitudeLongitude = function (position) {\n            return new google.maps.LatLng(position.latitude, position.longitude);\n        },\n        gmAuthFailure = false;\n\n    // jscs:disable requireCamelCaseOrUpperCaseIdentifiers\n    /**\n     * Google's error listener for map loader failures\n     */\n    window.gm_authFailure = function () {\n        events.trigger('googleMaps:authFailure');\n        gmAuthFailure = true;\n    };\n    // jscs:enable requireCamelCaseOrUpperCaseIdentifiers\n\n    return function (element, markers, additionalOptions) {\n        var options,\n            style;\n\n        // If we've previously had an API key error, throw the error even again\n        if (gmAuthFailure) {\n            events.trigger('googleMaps:authFailure');\n\n            return;\n        }\n\n        // If Google Maps isn't loaded don't try init the map, it won't work\n        if (typeof google.maps === 'undefined') {\n            return;\n        }\n\n        /**\n         * Just in case of a bad JSON that bypassed validation\n         */\n        try {\n            style = module.config().style ? JSON.parse(module.config().style) : [];\n        }\n        catch (error) {\n            style = [];\n        }\n        options = _.extend({\n            zoom: 8,\n            center: getGoogleLatitudeLongitude({\n                latitude: 30.2672,\n                longitude: -97.7431\n            }),\n            scrollwheel: false,\n            disableDoubleClickZoom: false,\n            disableDefaultUI: false,\n            mapTypeControl: true,\n            mapTypeControlOptions: {\n                style: google.maps.MapTypeControlStyle.DEFAULT\n            },\n            styles: style\n        }, additionalOptions);\n\n        /* Create the map */\n        this.map = new google.maps.Map(element, options);\n        this.markers = [];\n\n        /**\n         * Callback function on map config update\n         * @param {Array} newMarkers\n         * @param {Object} updateOptions\n         */\n        this.onUpdate = function (newMarkers, updateOptions) {\n            this.map.setOptions(updateOptions);\n            this.setMarkers(newMarkers);\n        };\n\n        /**\n         * Sets the markers to selected map\n         * @param {Object} newMarkers\n         */\n        this.setMarkers = function (newMarkers) {\n            var activeInfoWindow,\n                latitudeLongitudeBounds = new google.maps.LatLngBounds();\n\n            this.markers.forEach(function (marker) {\n                marker.setMap(null);\n            }, this);\n\n            this.markers = [];\n            this.bounds = [];\n\n            /**\n             * Creates and set listener for markers\n             */\n            if (newMarkers && newMarkers.length) {\n                newMarkers.forEach(function (newMarker) {\n                    var location = _.escape(newMarker['location_name']) || '',\n                    comment = newMarker.comment ?\n                        '<p>' + _.escape(newMarker.comment).replace(/(?:\\r\\n|\\r|\\n)/g, '<br/>') + '</p>'\n                        : '',\n                    phone = newMarker.phone ? '<p>Phone: ' + _.escape(newMarker.phone) + '</p>' : '',\n                    address = newMarker.address ? _.escape(newMarker.address) + '<br/>' : '',\n                    city = _.escape(newMarker.city) || '',\n                    country = newMarker.country ? _.escape(newMarker.country) : '',\n                    state = newMarker.state ? _.escape(newMarker.state) + ' ' : '',\n                    zipCode = newMarker.zipcode ? _.escape(newMarker.zipcode) : '',\n                    cityComma = city !== '' && (zipCode !== '' || state !== '') ? ', ' : '',\n                    lineBreak = city !== '' || zipCode !== '' ? '<br/>' : '',\n                    contentString =\n                        '<div>' +\n                        '<h3><b>' + location + '</b></h3>' +\n                        comment +\n                        phone +\n                        '<p><span>' + address +\n                        city + cityComma + state + zipCode + lineBreak +\n                        country + '</span></p>' +\n                        '</div>',\n                    infowindow = new google.maps.InfoWindow({\n                        content: contentString,\n                        maxWidth: 350\n                    }),\n                    newCreatedMarker = new google.maps.Marker({\n                        map: this.map,\n                        position: getGoogleLatitudeLongitude(newMarker.position),\n                        title: location\n                    });\n\n                    if (location) {\n                        newCreatedMarker.addListener('click', function () {\n                            if (activeInfoWindow) {\n                                activeInfoWindow.close();\n                            }\n\n                            infowindow.open(this.map, newCreatedMarker);\n                            activeInfoWindow = infowindow;\n                        }, this);\n                    }\n\n                    this.markers.push(newCreatedMarker);\n                    this.bounds.push(getGoogleLatitudeLongitude(newMarker.position));\n                }, this);\n            }\n\n            /**\n             * This sets the bounds of the map for multiple locations\n             */\n            if (this.bounds.length > 1) {\n                this.bounds.forEach(function (bound) {\n                    latitudeLongitudeBounds.extend(bound);\n                });\n                this.map.fitBounds(latitudeLongitudeBounds);\n            }\n\n            /**\n             * Zoom to 8 if there is only a single location\n             */\n            if (this.bounds.length === 1) {\n                this.map.setCenter(this.bounds[0]);\n                this.map.setZoom(8);\n            }\n        };\n\n        this.setMarkers(markers);\n    };\n});\n","Magento_PageBuilder/js/utils/breakpoints.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\ndefine([\n    'underscore'\n], function (_) {\n    'use strict';\n\n    return {\n        /**\n         * Build media query.\n         *\n         * @param {Object} conditions\n         * @returns {String}\n         */\n        buildMedia: function (conditions) {\n            var result = _.map(_.pairs(conditions), function (condition) {\n                return '(' + condition.join(': ') + ')';\n            });\n\n            return result.join(' and ');\n        }\n    };\n});\n","Magento_Downloadable/js/downloadable.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n/**\n * @api\n */\ndefine([\n    'jquery',\n    'jquery-ui-modules/widget',\n    'Magento_Catalog/js/price-box'\n], function ($) {\n    'use strict';\n\n    /**\n     * Downloadable widget\n     */\n    $.widget('mage.downloadable', {\n        options: {\n            priceHolderSelector: '.price-box',\n            linkElement: '',\n            allElements: ''\n        },\n\n        /**\n         * @inheritdoc\n         */\n        _init: function initLinks() {\n            var element = this.element,\n                options = $(this.options.linkElement, element);\n\n            options.trigger('change');\n        },\n\n        /**\n         *  @inheritdoc\n         */\n        _create: function () {\n            var self = this;\n\n            this.element.find(this.options.linkElement).on('change', $.proxy(function () {\n                this._reloadPrice();\n            }, this));\n\n            this.element.find(this.options.allElements).on('change', function () {\n                if (this.checked) {\n                    $('label[for=\"' + this.id + '\"] > span').text($(this).attr('data-checked'));\n                    self.element.find(self.options.linkElement + ':not(:checked)').each(function () {\n                        $(this).trigger('click');\n                    });\n                } else {\n                    $('[for=\"' + this.id + '\"] > span').text($(this).attr('data-notchecked'));\n                    self.element.find(self.options.linkElement + ':checked').each(function () {\n                        $(this).trigger('click');\n                    });\n                }\n            });\n\n            this._reloadPrice();\n        },\n\n        /**\n         * Reload product price with selected link price included\n         * @private\n         */\n        _reloadPrice: function () {\n            var finalPrice = 0,\n                basePrice = 0;\n\n            this.element.find(this.options.linkElement + ':checked').each($.proxy(function (index, element) {\n                finalPrice += this.options.config.links[$(element).val()].finalPrice;\n                basePrice += this.options.config.links[$(element).val()].basePrice;\n            }, this));\n\n            $(this.options.priceHolderSelector).trigger('updatePrice', {\n                'prices': {\n                    'finalPrice': {\n                        'amount': finalPrice\n                    },\n                    'basePrice': {\n                        'amount': basePrice\n                    }\n                }\n            });\n\n            this.reloadAllCheckText();\n        },\n\n        /**\n         * Reload all-elements-checkbox's label\n         * @private\n         */\n        reloadAllCheckText: function () {\n            var allChecked = true,\n                allElementsCheck = $(this.options.allElements),\n                allElementsLabel = $('label[for=\"' + allElementsCheck.attr('id') + '\"] > span');\n\n            $(this.options.linkElement).each(function () {\n                if (!this.checked) {\n                    allChecked = false;\n                }\n            });\n\n            if (allChecked) {\n                allElementsLabel.text(allElementsCheck.attr('data-checked'));\n                allElementsCheck.prop('checked', true);\n            } else {\n                allElementsLabel.text(allElementsCheck.attr('data-notchecked'));\n                allElementsCheck.prop('checked', false);\n            }\n        }\n    });\n\n    return $.mage.downloadable;\n});\n","Magento_ReCaptchaCheckout/js/reCaptchaCheckout.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\ndefine(\n    [\n        'Magento_ReCaptchaWebapiUi/js/webapiReCaptcha',\n        'jquery'\n    ],\n    function (Component, $) {\n        'use strict';\n\n        var reCaptchaIds = new WeakMap(),\n            uuid = 0;\n\n        return Component.extend({\n            defaults: {\n                template: 'Magento_ReCaptchaCheckout/reCaptcha',\n                skipPayments: [] // List of payment methods that do not require this reCaptcha\n            },\n\n            /**\n             * Render reCAPTCHA for payment method\n             *\n             * @param {Object} method\n             */\n            renderReCaptchaFor: function (method) {\n                var reCaptcha;\n\n                if (this.isCheckoutReCaptchaRequiredFor(method)) {\n                    reCaptcha = $.extend(true, {}, this, {reCaptchaId: this.getReCaptchaIdFor(method)});\n                    reCaptcha.renderReCaptcha();\n                }\n            },\n\n            /**\n             * Get reCAPTCHA ID for payment method\n             *\n             * @param {Object} method\n             * @returns {String}\n             */\n            getReCaptchaIdFor: function (method) {\n                if (!reCaptchaIds.has(method)) {\n                    reCaptchaIds.set(method, this.getReCaptchaId() + '-' + uuid++);\n                }\n                return reCaptchaIds.get(method);\n            },\n\n            /**\n             * Check whether checkout reCAPTCHA is required for payment method\n             *\n             * @param {Object} method\n             * @returns {Boolean}\n             */\n            isCheckoutReCaptchaRequiredFor: function (method) {\n                return !this.skipPayments || !this.skipPayments.hasOwnProperty(method.getCode());\n            },\n\n            /**\n             * @inheritdoc\n             */\n            initCaptcha: function () {\n                var $wrapper,\n                    $recaptchaResponseInput;\n\n                this._super();\n                // Since there will be multiple reCaptcha in the payment form,\n                // they may override each other if the form data is serialized and submitted.\n                // Instead, the reCaptcha response will be collected in the callback: reCaptchaCallback()\n                // and sent in the request header X-ReCaptcha\n                $wrapper = $('#' + this.getReCaptchaId() + '-wrapper');\n                $recaptchaResponseInput = $wrapper.find('[name=g-recaptcha-response]');\n                if ($recaptchaResponseInput.length) {\n                    $recaptchaResponseInput.prop('disabled', true);\n                }\n            }\n        });\n    }\n);\n","Magento_ReCaptchaCheckout/js/webapiReCaptchaRegistry-mixin.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\ndefine([], function () {\n    'use strict';\n\n    return function (originalFunction) {\n        /**\n         * {@inheritDoc}\n         */\n       originalFunction.addListener = function (id , func) {\n            this._listeners[id] = func;\n       };\n\n        return originalFunction;\n    };\n\n});\n","Magento_ReCaptchaCheckout/js/model/place-order-mixin.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\n/* eslint-disable max-nested-callbacks */\n\ndefine([\n    'jquery',\n    'mage/utils/wrapper',\n    'Magento_ReCaptchaWebapiUi/js/webapiReCaptchaRegistry'\n], function ($, wrapper, recaptchaRegistry) {\n    'use strict';\n\n    return function (placeOrder) {\n        return wrapper.wrap(placeOrder, function (originalAction, serviceUrl, payload, messageContainer) {\n            var recaptchaDeferred,\n                reCaptchaId,\n                $activeReCaptcha;\n\n            $activeReCaptcha = $('.recaptcha-checkout-place-order:visible .g-recaptcha');\n\n            if ($activeReCaptcha.length > 0) {\n                reCaptchaId = $activeReCaptcha.last().attr('id');\n            }\n\n            if (reCaptchaId !== undefined && recaptchaRegistry.triggers.hasOwnProperty(reCaptchaId)) {\n                //ReCaptcha is present for checkout\n                recaptchaDeferred = $.Deferred();\n                recaptchaRegistry.addListener(reCaptchaId, function (token) {\n                    //Add reCaptcha value to place-order request and resolve deferred with the API call results\n                    payload.xReCaptchaValue = token;\n                    originalAction(serviceUrl, payload, messageContainer).done(function () {\n                        recaptchaDeferred.resolve.apply(recaptchaDeferred, arguments);\n                    }).fail(function () {\n                        recaptchaDeferred.reject.apply(recaptchaDeferred, arguments);\n                    });\n                });\n                //Trigger ReCaptcha validation\n                recaptchaRegistry.triggers[reCaptchaId]();\n\n                if (\n                    !recaptchaRegistry._isInvisibleType.hasOwnProperty(reCaptchaId) ||\n                    recaptchaRegistry._isInvisibleType[reCaptchaId] === false\n                ) {\n                    //remove listener so that place order action is only triggered by the 'Place Order' button\n                    recaptchaRegistry.removeListener(reCaptchaId);\n                }\n\n                return recaptchaDeferred;\n            }\n\n            //No ReCaptcha, just sending the request\n            return originalAction(serviceUrl, payload, messageContainer);\n        });\n    };\n});\n","Magento_OfflineShipping/js/view/shipping-rates-validation/flatrate.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\ndefine([\n    'uiComponent',\n    'Magento_Checkout/js/model/shipping-rates-validator',\n    'Magento_Checkout/js/model/shipping-rates-validation-rules',\n    '../../model/shipping-rates-validator/flatrate',\n    '../../model/shipping-rates-validation-rules/flatrate'\n], function (\n    Component,\n    defaultShippingRatesValidator,\n    defaultShippingRatesValidationRules,\n    flatrateShippingRatesValidator,\n    flatrateShippingRatesValidationRules\n) {\n    'use strict';\n\n    defaultShippingRatesValidator.registerValidator('flatrate', flatrateShippingRatesValidator);\n    defaultShippingRatesValidationRules.registerRules('flatrate', flatrateShippingRatesValidationRules);\n\n    return Component;\n});\n","Magento_OfflineShipping/js/view/shipping-rates-validation/freeshipping.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\ndefine([\n    'uiComponent',\n    'Magento_Checkout/js/model/shipping-rates-validator',\n    'Magento_Checkout/js/model/shipping-rates-validation-rules',\n    '../../model/shipping-rates-validator/freeshipping',\n    '../../model/shipping-rates-validation-rules/freeshipping'\n], function (\n    Component,\n    defaultShippingRatesValidator,\n    defaultShippingRatesValidationRules,\n    freeshippingShippingRatesValidator,\n    freeshippingShippingRatesValidationRules\n) {\n    'use strict';\n\n    defaultShippingRatesValidator.registerValidator('freeshipping', freeshippingShippingRatesValidator);\n    defaultShippingRatesValidationRules.registerRules('freeshipping', freeshippingShippingRatesValidationRules);\n\n    return Component;\n});\n","Magento_OfflineShipping/js/view/shipping-rates-validation/tablerate.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\ndefine([\n    'uiComponent',\n    'Magento_Checkout/js/model/shipping-rates-validator',\n    'Magento_Checkout/js/model/shipping-rates-validation-rules',\n    '../../model/shipping-rates-validator/tablerate',\n    '../../model/shipping-rates-validation-rules/tablerate'\n], function (\n    Component,\n    defaultShippingRatesValidator,\n    defaultShippingRatesValidationRules,\n    tablerateShippingRatesValidator,\n    tablerateShippingRatesValidationRules\n) {\n    'use strict';\n\n    defaultShippingRatesValidator.registerValidator('tablerate', tablerateShippingRatesValidator);\n    defaultShippingRatesValidationRules.registerRules('tablerate', tablerateShippingRatesValidationRules);\n\n    return Component;\n});\n","Magento_OfflineShipping/js/model/shipping-rates-validation-rules/flatrate.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\ndefine([], function () {\n    'use strict';\n\n    return {\n        /**\n         * @return {Object}\n         */\n        getRules: function () {\n            return {\n                'country_id': {\n                    'required': true\n                }\n            };\n        }\n    };\n});\n","Magento_OfflineShipping/js/model/shipping-rates-validation-rules/freeshipping.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\ndefine([], function () {\n    'use strict';\n\n    return {\n        /**\n         * @return {Object}\n         */\n        getRules: function () {\n            return {\n                'country_id': {\n                    'required': true\n                }\n            };\n        }\n    };\n});\n","Magento_OfflineShipping/js/model/shipping-rates-validation-rules/tablerate.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\ndefine([], function () {\n    'use strict';\n\n    return {\n        /**\n         * @return {Object}\n         */\n        getRules: function () {\n            return {\n                'postcode': {\n                    'required': true\n                },\n                'country_id': {\n                    'required': true\n                },\n                'region_id': {\n                    'required': true\n                },\n                'region_id_input': {\n                    'required': true\n                }\n            };\n        }\n    };\n});\n","Magento_OfflineShipping/js/model/shipping-rates-validator/flatrate.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\ndefine([\n    'jquery',\n    'mageUtils',\n    '../shipping-rates-validation-rules/flatrate',\n    'mage/translate'\n], function ($, utils, validationRules, $t) {\n    'use strict';\n\n    return {\n        validationErrors: [],\n\n        /**\n         * @param {Object} address\n         * @return {Boolean}\n         */\n        validate: function (address) {\n            var self = this;\n\n            this.validationErrors = [];\n            $.each(validationRules.getRules(), function (field, rule) {\n                var message;\n\n                if (rule.required && utils.isEmpty(address[field])) {\n                    message = $t('Field ') + field + $t(' is required.');\n                    self.validationErrors.push(message);\n                }\n            });\n\n            return !this.validationErrors.length;\n        }\n    };\n});\n","Magento_OfflineShipping/js/model/shipping-rates-validator/freeshipping.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\ndefine([\n    'jquery',\n    'mageUtils',\n    '../shipping-rates-validation-rules/freeshipping',\n    'mage/translate'\n], function ($, utils, validationRules, $t) {\n    'use strict';\n\n    return {\n        validationErrors: [],\n\n        /**\n         * @param {Object} address\n         * @return {Boolean}\n         */\n        validate: function (address) {\n            var self = this;\n\n            this.validationErrors = [];\n            $.each(validationRules.getRules(), function (field, rule) {\n                var message;\n\n                if (rule.required && utils.isEmpty(address[field])) {\n                    message = $t('Field ') + field + $t(' is required.');\n                    self.validationErrors.push(message);\n                }\n            });\n\n            return !this.validationErrors.length;\n        }\n    };\n});\n","Magento_OfflineShipping/js/model/shipping-rates-validator/tablerate.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\ndefine([\n    'jquery',\n    'mageUtils',\n    '../shipping-rates-validation-rules/tablerate',\n    'mage/translate'\n], function ($, utils, validationRules, $t) {\n    'use strict';\n\n    return {\n        validationErrors: [],\n\n        /**\n         * @param {Object} address\n         * @return {Boolean}\n         */\n        validate: function (address) {\n            var self = this;\n\n            this.validationErrors = [];\n            $.each(validationRules.getRules(), function (field, rule) {\n                var message, regionFields;\n\n                if (rule.required && utils.isEmpty(address[field])) {\n                    message = $t('Field ') + field + $t(' is required.');\n                    regionFields = ['region', 'region_id', 'region_id_input'];\n\n                    if (\n                        $.inArray(field, regionFields) === -1 ||\n                        utils.isEmpty(address.region) && utils.isEmpty(address['region_id'])\n                    ) {\n                        self.validationErrors.push(message);\n                    }\n                }\n            });\n\n            return !this.validationErrors.length;\n        }\n    };\n});\n","Magento_Dhl/js/view/shipping-rates-validation.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\ndefine([\n    'uiComponent',\n    'Magento_Checkout/js/model/shipping-rates-validator',\n    'Magento_Checkout/js/model/shipping-rates-validation-rules',\n    'Magento_Dhl/js/model/shipping-rates-validator',\n    'Magento_Dhl/js/model/shipping-rates-validation-rules'\n], function (\n    Component,\n    defaultShippingRatesValidator,\n    defaultShippingRatesValidationRules,\n    dhlShippingRatesValidator,\n    dhlShippingRatesValidationRules\n) {\n    'use strict';\n\n    defaultShippingRatesValidator.registerValidator('dhl', dhlShippingRatesValidator);\n    defaultShippingRatesValidationRules.registerRules('dhl', dhlShippingRatesValidationRules);\n\n    return Component;\n});\n","Magento_Dhl/js/model/shipping-rates-validator.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\ndefine([\n    'jquery',\n    'mageUtils',\n    'Magento_Dhl/js/model/shipping-rates-validation-rules',\n    'mage/translate'\n], function ($, utils, validationRules, $t) {\n    'use strict';\n\n    return {\n        validationErrors: [],\n\n        /**\n         * @param {Object} address\n         * @return {Boolean}\n         */\n        validate: function (address) {\n            var self = this;\n\n            this.validationErrors = [];\n            $.each(validationRules.getRules(), function (field, rule) {\n                var message;\n\n                if (rule.required && utils.isEmpty(address[field])) {\n                    message = $t('Field ') + field + $t(' is required.');\n\n                    self.validationErrors.push(message);\n                }\n            });\n\n            return !this.validationErrors.length;\n        }\n    };\n});\n","Magento_Dhl/js/model/shipping-rates-validation-rules.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\ndefine([], function () {\n    'use strict';\n\n    return {\n        /**\n         * @return {Object}\n         */\n        getRules: function () {\n            return {\n                'postcode': {\n                    'required': true\n                },\n                'country_id': {\n                    'required': true\n                },\n                'city': {\n                    'required': true\n                }\n            };\n        }\n    };\n});\n","Magento_Review/js/error-placement.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\ndefine([\n    'jquery',\n    'mage/mage'\n], function ($) {\n    'use strict';\n\n    return function (config, element) {\n        $(element).mage('validation', {\n            /** @inheritdoc */\n            errorPlacement: function (error, el) {\n\n                if (el.parents('#product-review-table').length) {\n                    $('#product-review-table').siblings(this.errorElement + '.' + this.errorClass).remove();\n                    $('#product-review-table').after(error);\n                } else {\n                    el.after(error);\n                }\n            }\n        });\n    };\n});\n","Magento_Review/js/validate-review.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\ndefine([\n    'jquery',\n    'jquery/validate',\n    'mage/translate'\n], function ($) {\n    'use strict';\n\n    $.validator.addMethod(\n        'rating-required', function (value) {\n            return value !== undefined;\n        }, $.mage.__('Please select one of each of the ratings above.'));\n});\n","Magento_Review/js/submit-review.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\ndefine([\n    'jquery'\n], function ($) {\n    'use strict';\n\n    return function (config, element) {\n        $(element).on('submit', function () {\n            if ($(this).valid()) {\n                $(this).find('.submit').attr('disabled', true);\n            }\n        });\n    };\n});\n","Magento_Review/js/process-reviews.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\ndefine([\n    'jquery',\n    'tabs',\n    'collapsible'\n], function ($) {\n    'use strict';\n\n    /**\n     * @param {String} url\n     * @param {*} fromPages\n     */\n    function processReviews(url, fromPages) {\n        $.ajax({\n            url: url,\n            cache: true,\n            dataType: 'html',\n            showLoader: false,\n            loaderContext: $('.product.data.items')\n        }).done(function (data) {\n            $('#product-review-container').html(data).trigger('contentUpdated');\n            $('[data-role=\"product-review\"] .pages a').each(function (index, element) {\n                $(element).on('click', function (event) { //eslint-disable-line max-nested-callbacks\n                    processReviews($(element).attr('href'), true);\n                    event.preventDefault();\n                });\n            });\n        }).always(function () {\n            if (fromPages == true) { //eslint-disable-line eqeqeq\n                $('html, body').animate({\n                    scrollTop: $('#reviews').offset().top - 50\n                }, 300);\n            }\n        });\n    }\n\n    return function (config) {\n        var reviewTab = $(config.reviewsTabSelector),\n            requiredReviewTabRole = 'tab';\n\n        if (reviewTab.attr('role') === requiredReviewTabRole && reviewTab.hasClass('active')) {\n            processReviews(config.productReviewUrl, location.hash === '#reviews');\n        } else {\n            reviewTab.one('beforeOpen', function () {\n                processReviews(config.productReviewUrl);\n            });\n        }\n\n        $(function () {\n            $('.product-info-main .reviews-actions a').on('click', function (event) {\n                var anchor, addReviewBlock;\n\n                event.preventDefault();\n                anchor = $(this).attr('href').replace(/^.*?(#|$)/, '');\n                addReviewBlock = $('#' + anchor);\n\n                if (addReviewBlock.length) {\n                    $('.product.data.items [data-role=\"content\"]').each(function (index) { //eslint-disable-line\n                        if (this.id == 'reviews') { //eslint-disable-line eqeqeq\n                            $('.product.data.items').tabs('activate', index);\n                        }\n                    });\n                    $('html, body').animate({\n                        scrollTop: addReviewBlock.offset().top - 50\n                    }, 300);\n                }\n\n            });\n        });\n    };\n});\n","Magento_Review/js/view/review.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\ndefine([\n    'uiComponent',\n    'Magento_Customer/js/customer-data',\n    'Magento_Customer/js/view/customer'\n], function (Component, customerData) {\n    'use strict';\n\n    return Component.extend({\n        /** @inheritdoc */\n        initialize: function () {\n            this._super();\n\n            this.review = customerData.get('review').extend({\n                disposableCustomerData: 'review'\n            });\n        },\n\n        /**\n         * @return {*}\n         */\n        nickname: function () {\n            return this.review().nickname || customerData.get('customer')().firstname;\n        }\n    });\n});\n","Magento_Captcha/js/captcha.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\ndefine([\n    'jquery',\n    'jquery-ui-modules/widget'\n], function ($) {\n    'use strict';\n\n    /**\n     * @api\n     */\n    $.widget('mage.captcha', {\n        options: {\n            refreshClass: 'refreshing',\n            reloadSelector: '.captcha-reload',\n            imageSelector: '.captcha-img',\n            imageLoader: ''\n        },\n\n        /**\n         * Method binds click event to reload image\n         * @private\n         */\n        _create: function () {\n            this.element.on('click', this.options.reloadSelector, $.proxy(this.refresh, this));\n        },\n\n        /**\n         * Method triggers an AJAX request to refresh the CAPTCHA image\n         */\n        refresh: function () {\n            var imageLoader = this.options.imageLoader;\n\n            if (imageLoader) {\n                this.element.find(this.options.imageSelector).attr('src', imageLoader);\n            }\n            this.element.addClass(this.options.refreshClass);\n\n            $.ajax({\n                url: this.options.url,\n                type: 'post',\n                dataType: 'json',\n                context: this,\n                data: {\n                    'formId': this.options.type\n                },\n\n                /**\n                 * @param {Object} response\n                 */\n                success: function (response) {\n                    if (response.imgSrc) {\n                        this.element.find(this.options.imageSelector).attr('src', response.imgSrc);\n                    }\n                },\n\n                /** Complete callback. */\n                complete: function () {\n                    this.element.removeClass(this.options.refreshClass);\n                }\n            });\n        }\n    });\n\n    return $.mage.captcha;\n});\n","Magento_Captcha/js/action/refresh.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\ndefine([\n    'jquery', 'mage/url'\n], function ($, urlBuilder) {\n    'use strict';\n\n    return function (refreshUrl, formId, imageSource) {\n        return $.ajax({\n            url: urlBuilder.build(refreshUrl),\n            type: 'POST',\n            data: JSON.stringify({\n                'formId': formId\n            }),\n            global: false,\n            contentType: 'application/json'\n        }).done(\n            function (response) {\n                if (response.imgSrc) {\n                    imageSource(response.imgSrc);\n                }\n            }\n        );\n    };\n});\n","Magento_Captcha/js/view/checkout/loginCaptcha.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\ndefine([\n    'Magento_Captcha/js/view/checkout/defaultCaptcha',\n    'Magento_Captcha/js/model/captchaList',\n    'Magento_Customer/js/action/login',\n    'underscore'\n],\nfunction (defaultCaptcha, captchaList, loginAction, _) {\n    'use strict';\n\n    return defaultCaptcha.extend({\n        /** @inheritdoc */\n        initialize: function () {\n            var self = this,\n                currentCaptcha;\n\n            this._super();\n            currentCaptcha = captchaList.getCaptchaByFormId(this.formId);\n\n            if (currentCaptcha != null) {\n                currentCaptcha.setIsVisible(true);\n                this.setCurrentCaptcha(currentCaptcha);\n\n                loginAction.registerLoginCallback(function (loginData) {\n                    if (loginData['captcha_form_id'] &&\n                        loginData['captcha_form_id'] === self.formId &&\n                        self.isRequired()\n                    ) {\n                        _.defer(self.refresh.bind(self));\n                    }\n                });\n            }\n        }\n    });\n});\n","Magento_Captcha/js/view/checkout/defaultCaptcha.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\ndefine([\n    'jquery',\n    'uiComponent',\n    'Magento_Captcha/js/model/captcha',\n    'Magento_Captcha/js/model/captchaList',\n    'Magento_Customer/js/customer-data',\n    'underscore'\n], function ($, Component, Captcha, captchaList, customerData, _) {\n    'use strict';\n\n    var captchaConfig;\n\n    return Component.extend({\n        defaults: {\n            template: 'Magento_Captcha/checkout/captcha'\n        },\n        dataScope: 'global',\n        currentCaptcha: null,\n        subscribedFormIds: [],\n\n        /**\n         * @return {*}\n         */\n        captchaValue: function () {\n            return this.currentCaptcha.getCaptchaValue();\n        },\n\n        /** @inheritdoc */\n        initialize: function () {\n            this._super();\n\n            if (window[this.configSource] && window[this.configSource].captcha) {\n                captchaConfig = window[this.configSource].captcha;\n                $.each(captchaConfig, function (formId, captchaData) {\n                    var captcha;\n\n                    captchaData.formId = formId;\n                    captcha = Captcha(captchaData);\n                    this.checkCustomerData(formId, customerData.get('captcha')(), captcha);\n                    this.subscribeCustomerData(formId, captcha);\n                    captchaList.add(captcha);\n                }.bind(this));\n            }\n        },\n\n        /**\n         * Check customer data for captcha configuration.\n         *\n         * @param {String} formId\n         * @param {Object} captchaData\n         * @param {Object} captcha\n         */\n        checkCustomerData: function (formId, captchaData, captcha) {\n            if (!_.isEmpty(captchaData) &&\n                !_.isEmpty(captchaData[formId]) &&\n                captchaData[formId].timestamp > captcha.timestamp\n            ) {\n                if (!captcha.isRequired() && captchaData[formId].isRequired) {\n                    captcha.refresh();\n                }\n                captcha.isRequired(captchaData[formId].isRequired);\n                captcha.timestamp = captchaData[formId].timestamp;\n            }\n        },\n\n        /**\n         * Subscribe for customer data updates.\n         *\n         * @param {String} formId\n         * @param {Object} captcha\n         */\n        subscribeCustomerData: function (formId, captcha) {\n            if (this.subscribedFormIds.includes(formId) === false) {\n                this.subscribedFormIds.push(formId);\n                customerData.get('captcha').subscribe(function (captchaData) {\n                    this.checkCustomerData(formId, captchaData, captcha);\n                }.bind(this));\n            }\n        },\n\n        /**\n         * @return {Boolean}\n         */\n        getIsLoading: function () {\n            return this.currentCaptcha !== null ? this.currentCaptcha.isLoading : false;\n        },\n\n        /**\n         * @return {null|Object}\n         */\n        getCurrentCaptcha: function () {\n            return this.currentCaptcha;\n        },\n\n        /**\n         * @param {Object} captcha\n         */\n        setCurrentCaptcha: function (captcha) {\n            this.currentCaptcha = captcha;\n        },\n\n        /**\n         * @return {String|null}\n         */\n        getFormId: function () {\n            return this.currentCaptcha !== null ? this.currentCaptcha.getFormId() : null;\n        },\n\n        /**\n         * @return {Boolean}\n         */\n        getIsVisible: function () {\n            return this.currentCaptcha !== null ? this.currentCaptcha.getIsVisible() : false;\n        },\n\n        /**\n         * @param {Boolean} flag\n         */\n        setIsVisible: function (flag) {\n            this.currentCaptcha.setIsVisible(flag);\n        },\n\n        /**\n         * @return {Boolean}\n         */\n        isRequired: function () {\n            return this.currentCaptcha !== null ? this.currentCaptcha.getIsRequired() : false;\n        },\n\n        /**\n         * Set isRequired on current captcha model.\n         *\n         * @param {Boolean} flag\n         */\n        setIsRequired: function (flag) {\n            this.currentCaptcha.setIsRequired(flag);\n        },\n\n        /**\n         * @return {Boolean}\n         */\n        isCaseSensitive: function () {\n            return this.currentCaptcha !== null ? this.currentCaptcha.getIsCaseSensitive() : false;\n        },\n\n        /**\n         * @return {String|Number|null}\n         */\n        imageHeight: function () {\n            return this.currentCaptcha !== null ? this.currentCaptcha.getImageHeight() : null;\n        },\n\n        /**\n         * @return {String|null}\n         */\n        getImageSource: function () {\n            return this.currentCaptcha !== null ? this.currentCaptcha.getImageSource() : null;\n        },\n\n        /**\n         * Refresh captcha.\n         */\n        refresh: function () {\n            this.currentCaptcha.refresh();\n        }\n    });\n});\n","Magento_Captcha/js/model/captcha.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\ndefine([\n    'jquery',\n    'ko',\n    'Magento_Captcha/js/action/refresh'\n], function ($, ko, refreshAction) {\n    'use strict';\n\n    return function (captchaData) {\n        return {\n            formId: captchaData.formId,\n            imageSource: ko.observable(captchaData.imageSrc),\n            visibility: ko.observable(false),\n            captchaValue: ko.observable(null),\n            isRequired: ko.observable(captchaData.isRequired),\n            isCaseSensitive: captchaData.isCaseSensitive,\n            imageHeight: captchaData.imageHeight,\n            refreshUrl: captchaData.refreshUrl,\n            isLoading: ko.observable(false),\n            timestamp: null,\n\n            /**\n             * @return {String}\n             */\n            getFormId: function () {\n                return this.formId;\n            },\n\n            /**\n             * @param {String} formId\n             */\n            setFormId: function (formId) {\n                this.formId = formId;\n            },\n\n            /**\n             * @return {Boolean}\n             */\n            getIsVisible: function () {\n                return this.visibility();\n            },\n\n            /**\n             * @param {Boolean} flag\n             */\n            setIsVisible: function (flag) {\n                this.visibility(flag);\n            },\n\n            /**\n             * @return {Boolean}\n             */\n            getIsRequired: function () {\n                return this.isRequired();\n            },\n\n            /**\n             * @param {Boolean} flag\n             */\n            setIsRequired: function (flag) {\n                this.isRequired(flag);\n            },\n\n            /**\n             * @return {Boolean}\n             */\n            getIsCaseSensitive: function () {\n                return this.isCaseSensitive;\n            },\n\n            /**\n             * @param {Boolean} flag\n             */\n            setIsCaseSensitive: function (flag) {\n                this.isCaseSensitive = flag;\n            },\n\n            /**\n             * @return {String|Number}\n             */\n            getImageHeight: function () {\n                return this.imageHeight;\n            },\n\n            /**\n             * @param {String|Number}height\n             */\n            setImageHeight: function (height) {\n                this.imageHeight = height;\n            },\n\n            /**\n             * @return {String}\n             */\n            getImageSource: function () {\n                return this.imageSource;\n            },\n\n            /**\n             * @param {String} imageSource\n             */\n            setImageSource: function (imageSource) {\n                this.imageSource(imageSource);\n            },\n\n            /**\n             * @return {String}\n             */\n            getRefreshUrl: function () {\n                return this.refreshUrl;\n            },\n\n            /**\n             * @param {String} url\n             */\n            setRefreshUrl: function (url) {\n                this.refreshUrl = url;\n            },\n\n            /**\n             * @return {*}\n             */\n            getCaptchaValue: function () {\n                return this.captchaValue;\n            },\n\n            /**\n             * @param {*} value\n             */\n            setCaptchaValue: function (value) {\n                this.captchaValue(value);\n            },\n\n            /**\n             * Refresh captcha.\n             */\n            refresh: function () {\n                var refresh,\n                    self = this;\n\n                this.isLoading(true);\n\n                refresh = refreshAction(this.getRefreshUrl(), this.getFormId(), this.getImageSource());\n                $.when(refresh).done(function () {\n                    self.isLoading(false);\n                });\n            }\n        };\n    };\n});\n","Magento_Captcha/js/model/captchaList.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\ndefine(['jquery'], function ($) {\n    'use strict';\n\n    var captchaList = [];\n\n    return {\n        /**\n         * @param {Object} captcha\n         */\n        add: function (captcha) {\n            captchaList.push(captcha);\n        },\n\n        /**\n         * @param {String} formId\n         * @return {Object}\n         */\n        getCaptchaByFormId: function (formId) {\n            var captcha = null;\n\n            $.each(captchaList, function (key, item) {\n                if (formId === item.formId) {\n                    captcha = item;\n\n                    return false;\n                }\n            });\n\n            return captcha;\n        },\n\n        /**\n         * @return {Array}\n         */\n        getCaptchaList: function () {\n            return captchaList;\n        }\n    };\n});\n","Magento_Usps/js/view/shipping-rates-validation.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\ndefine([\n    'uiComponent',\n    'Magento_Checkout/js/model/shipping-rates-validator',\n    'Magento_Checkout/js/model/shipping-rates-validation-rules',\n    '../model/shipping-rates-validator',\n    '../model/shipping-rates-validation-rules'\n], function (\n    Component,\n    defaultShippingRatesValidator,\n    defaultShippingRatesValidationRules,\n    uspsShippingRatesValidator,\n    uspsShippingRatesValidationRules\n) {\n    'use strict';\n\n    defaultShippingRatesValidator.registerValidator('usps', uspsShippingRatesValidator);\n    defaultShippingRatesValidationRules.registerRules('usps', uspsShippingRatesValidationRules);\n\n    return Component;\n});\n","Magento_Usps/js/model/shipping-rates-validator.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\ndefine([\n    'jquery',\n    'mageUtils',\n    './shipping-rates-validation-rules',\n    'mage/translate'\n], function ($, utils, validationRules, $t) {\n    'use strict';\n\n    var checkoutConfig = window.checkoutConfig;\n\n    return {\n        validationErrors: [],\n\n        /**\n         * @param {Object} address\n         * @return {Boolean}\n         */\n        validate: function (address) {\n            var rules = validationRules.getRules(),\n                self = this;\n\n            $.each(rules, function (field, rule) {\n                var message;\n\n                if (rule.required && utils.isEmpty(address[field])) {\n                    message = $t('Field ') + field + $t(' is required.');\n                    self.validationErrors.push(message);\n                }\n            });\n\n            if (!this.validationErrors.length) {\n                if (address['country_id'] == checkoutConfig.originCountryCode) { //eslint-disable-line eqeqeq\n                    return !utils.isEmpty(address.postcode);\n                }\n\n                return true;\n            }\n\n            return false;\n        }\n    };\n});\n","Magento_Usps/js/model/shipping-rates-validation-rules.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\ndefine([], function () {\n    'use strict';\n\n    return {\n        /**\n         * @return {Object}\n         */\n        getRules: function () {\n            return {\n                'country_id': {\n                    'required': true\n                },\n                'postcode': {\n                    'required': false\n                }\n            };\n        }\n    };\n});\n","Magento_PageCache/js/form-key-provider.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\ndefine(function () {\n    'use strict';\n\n    return function (settings) {\n        var formKey,\n            inputElements,\n            inputSelector = 'input[name=\"form_key\"]';\n\n        /**\n         * Set form_key cookie\n         * @private\n         */\n        function setFormKeyCookie(value) {\n            var expires,\n                secure,\n                date = new Date(),\n                cookiesConfig = window.cookiesConfig || {},\n                isSecure = !!cookiesConfig.secure,\n                samesite = cookiesConfig.samesite || 'lax';\n\n            date.setTime(date.getTime() + 86400000);\n            expires = '; expires=' + date.toUTCString();\n            secure = isSecure ? '; secure' : '';\n            samesite = '; samesite=' + samesite;\n\n            document.cookie = 'form_key=' + (value || '') + expires + secure + '; path=/' + samesite;\n        }\n\n        /**\n         * Retrieves form key from cookie\n         * @private\n         */\n        function getFormKeyCookie() {\n            var cookie,\n                i,\n                nameEQ = 'form_key=',\n                cookieArr = document.cookie.split(';');\n\n            for (i = 0; i < cookieArr.length; i++) {\n                cookie = cookieArr[i];\n\n                while (cookie.charAt(0) === ' ') {\n                    cookie = cookie.substring(1, cookie.length);\n                }\n\n                if (cookie.indexOf(nameEQ) === 0) {\n                    return cookie.substring(nameEQ.length, cookie.length);\n                }\n            }\n\n            return null;\n        }\n\n        /**\n         * Get form key from UI input hidden\n         * @private\n         */\n        function getFormKeyFromUI() {\n            return document.querySelector(inputSelector).value;\n        }\n\n        /**\n         * Generate form key string\n         * @private\n         */\n        function generateFormKeyString() {\n            var result = '',\n                length = 16,\n                chars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';\n\n            while (length--) {\n                result += chars[Math.round(Math.random() * (chars.length - 1))];\n            }\n\n            return result;\n        }\n\n        /**\n         * Init form_key inputs with value\n         * @private\n         */\n        function initFormKey() {\n            formKey = getFormKeyCookie();\n\n            if (settings && settings.isPaginationCacheEnabled && !formKey) {\n                formKey = getFormKeyFromUI();\n                setFormKeyCookie(formKey);\n            }\n\n            if (!formKey) {\n                formKey = generateFormKeyString();\n                setFormKeyCookie(formKey);\n            }\n            inputElements = document.querySelectorAll(inputSelector);\n\n            if (inputElements.length) {\n                Array.prototype.forEach.call(inputElements, function (element) {\n                    element.setAttribute('value', formKey);\n                });\n            }\n        }\n\n        initFormKey();\n    };\n});\n","Magento_PageCache/js/page-cache.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\ndefine([\n    'jquery',\n    'domReady',\n    'consoleLogger',\n    'Magento_PageCache/js/form-key-provider',\n    'jquery-ui-modules/widget',\n    'mage/cookies'\n], function ($, domReady, consoleLogger, formKeyInit) {\n    'use strict';\n\n    /**\n     * Helper. Generate random string\n     * TODO: Merge with mage/utils\n     * @param {String} chars - list of symbols\n     * @param {Number} length - length for need string\n     * @returns {String}\n     */\n    function generateRandomString(chars, length) {\n        var result = '';\n\n        length = length > 0 ? length : 1;\n\n        while (length--) {\n            result += chars[Math.round(Math.random() * (chars.length - 1))];\n        }\n\n        return result;\n    }\n\n    /**\n     * Nodes tree to flat list converter\n     * @returns {Array}\n     */\n    $.fn.comments = function () {\n        var elements = [],\n            contents,\n            elementContents;\n\n        /**\n         * @param {jQuery} element - Comment holder\n         */\n        (function lookup(element) {\n            var iframeHostName;\n\n            // prevent cross origin iframe content reading\n            if ($(element).prop('tagName') === 'IFRAME') {\n                iframeHostName = $('<a>').prop('href', $(element).prop('src'))\n                    .prop('hostname');\n\n                if (window.location.hostname !== iframeHostName) {\n                    return [];\n                }\n            }\n\n            /**\n             * Rewrite jQuery contents().\n             *\n             * @param {jQuery} elem\n             */\n            contents = function (elem) {\n                return $.map(elem, function (el) {\n                    try {\n                        return el.nodeName.toLowerCase() === 'iframe' ?\n                            el.contentDocument || (el.contentWindow ? el.contentWindow.document : []) :\n                            $.merge([], el.childNodes);\n                    } catch (e) {\n                        consoleLogger.error(e);\n\n                        return [];\n                    }\n                });\n            };\n\n            elementContents = contents($(element));\n\n            $.each(elementContents, function (index, el) {\n                switch (el.nodeType) {\n                    case 1: // ELEMENT_NODE\n                        lookup(el);\n                        break;\n\n                    case 8: // COMMENT_NODE\n                        elements.push(el);\n                        break;\n\n                    case 9: // DOCUMENT_NODE\n                        lookup($(el).find('body'));\n                        break;\n                }\n            });\n        })(this);\n\n        return elements;\n    };\n\n    /**\n     * FormKey Widget - this widget is generating from key, saves it to cookie and\n     * @deprecated see Magento/PageCache/view/frontend/web/js/form-key-provider.js\n     */\n    $.widget('mage.formKey', {\n        options: {\n            inputSelector: 'input[name=\"form_key\"]',\n            allowedCharacters: '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ',\n            length: 16\n        },\n\n        /**\n         * Creates widget 'mage.formKey'\n         * @private\n         */\n        _create: function () {\n            var formKey = $.mage.cookies.get('form_key'),\n                options = {\n                    secure: window.cookiesConfig ? window.cookiesConfig.secure : false\n                };\n\n            if (!formKey) {\n                formKey = generateRandomString(this.options.allowedCharacters, this.options.length);\n                $.mage.cookies.set('form_key', formKey, options);\n            }\n            $(this.options.inputSelector).val(formKey);\n        }\n    });\n\n    /**\n     * PageCache Widget\n     * Handles additional ajax request for rendering user private content.\n     */\n    $.widget('mage.pageCache', {\n        options: {\n            url: '/',\n            patternPlaceholderOpen: /^ BLOCK (.+) $/,\n            patternPlaceholderClose: /^ \\/BLOCK (.+) $/,\n            versionCookieName: 'private_content_version',\n            handles: []\n        },\n\n        /**\n         * Creates widget 'mage.pageCache'\n         * @private\n         */\n        _create: function () {\n            var placeholders,\n                version = $.mage.cookies.get(this.options.versionCookieName);\n\n            if (!version) {\n                return;\n            }\n            placeholders = this._searchPlaceholders(this.element.comments());\n\n            if (placeholders && placeholders.length) {\n                this._ajax(placeholders, version);\n            }\n        },\n\n        /**\n         * Parse page for placeholders.\n         * @param {Array} elements\n         * @returns {Array}\n         * @private\n         */\n        _searchPlaceholders: function (elements) {\n            var placeholders = [],\n                tmp = {},\n                ii,\n                len,\n                el, matches, name;\n\n            if (!(elements && elements.length)) {\n                return placeholders;\n            }\n\n            for (ii = 0, len = elements.length; ii < len; ii++) {\n                el = elements[ii];\n                matches = this.options.patternPlaceholderOpen.exec(el.nodeValue);\n                name = null;\n\n                if (matches) {\n                    name = matches[1];\n                    tmp[name] = {\n                        name: name,\n                        openElement: el\n                    };\n                } else {\n                    matches = this.options.patternPlaceholderClose.exec(el.nodeValue);\n\n                    if (matches) { //eslint-disable-line max-depth\n                        name = matches[1];\n\n                        if (tmp[name]) { //eslint-disable-line max-depth\n                            tmp[name].closeElement = el;\n                            placeholders.push(tmp[name]);\n                            delete tmp[name];\n                        }\n                    }\n                }\n            }\n\n            return placeholders;\n        },\n\n        /**\n         * Parse for page and replace placeholders\n         * @param {Object} placeholder\n         * @param {Object} html\n         * @protected\n         */\n        _replacePlaceholder: function (placeholder, html) {\n            var startReplacing = false,\n                prevSibling = null,\n                parent, contents, yy, len, element;\n\n            if (!placeholder || !html) {\n                return;\n            }\n\n            parent = $(placeholder.openElement).parent();\n            contents = parent.contents();\n\n            for (yy = 0, len = contents.length; yy < len; yy++) {\n                element = contents[yy];\n\n                if (element == placeholder.openElement) { //eslint-disable-line eqeqeq\n                    startReplacing = true;\n                }\n\n                if (startReplacing) {\n                    $(element).remove();\n                } else if (element.nodeType != 8) { //eslint-disable-line eqeqeq\n                    //due to comment tag doesn't have siblings we try to find it manually\n                    prevSibling = element;\n                }\n\n                if (element == placeholder.closeElement) { //eslint-disable-line eqeqeq\n                    break;\n                }\n            }\n\n            if (prevSibling) {\n                $(prevSibling).after(html);\n            } else {\n                $(parent).prepend(html);\n            }\n\n            // trigger event to use mage-data-init attribute\n            $(parent).trigger('contentUpdated');\n        },\n\n        /**\n         * AJAX helper\n         * @param {Object} placeholders\n         * @param {String} version\n         * @private\n         */\n        _ajax: function (placeholders, version) {\n            var ii,\n                data = {\n                    blocks: [],\n                    handles: this.options.handles,\n                    originalRequest: this.options.originalRequest,\n                    version: version\n                };\n\n            for (ii = 0; ii < placeholders.length; ii++) {\n                data.blocks.push(placeholders[ii].name);\n            }\n            data.blocks = JSON.stringify(data.blocks.sort());\n            data.handles = JSON.stringify(data.handles);\n            data.originalRequest = JSON.stringify(data.originalRequest);\n            $.ajax({\n                url: this.options.url,\n                data: data,\n                type: 'GET',\n                cache: true,\n                dataType: 'json',\n                context: this,\n\n                /**\n                 * Response handler\n                 * @param {Object} response\n                 */\n                success: function (response) {\n                    var placeholder, i;\n\n                    for (i = 0; i < placeholders.length; i++) {\n                        placeholder = placeholders[i];\n\n                        if (response.hasOwnProperty(placeholder.name)) {\n                            this._replacePlaceholder(placeholder, response[placeholder.name]);\n                        }\n                    }\n                }\n            });\n        }\n    });\n\n    domReady(function () {\n        formKeyInit();\n    });\n\n    return {\n        'pageCache': $.mage.pageCache,\n        'formKey': $.mage.formKey\n    };\n});\n","mage/multiselect.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\ndefine([\n    'underscore',\n    'jquery',\n    'text!mage/multiselect.html',\n    'Magento_Ui/js/modal/alert',\n    'jquery-ui-modules/widget',\n    'jquery/editableMultiselect/js/jquery.multiselect'\n], function (_, $, searchTemplate, alert) {\n    'use strict';\n\n    $.widget('mage.multiselect2', {\n        options: {\n            mselectContainer: 'section.mselect-list',\n            mselectItemsWrapperClass: 'mselect-items-wrapper',\n            mselectCheckedClass: 'mselect-checked',\n            containerClass: 'paginated',\n            searchInputClass: 'admin__action-multiselect-search',\n            selectedItemsCountClass: 'admin__action-multiselect-items-selected',\n            currentPage: 1,\n            lastAppendValue: 0,\n            updateDelay: 1000,\n            optionsLoaded: false\n        },\n\n        /** @inheritdoc */\n        _create: function () {\n            $.fn.multiselect.call(this.element, this.options);\n        },\n\n        /** @inheritdoc */\n        _init: function () {\n            this.domElement = this.element.get(0);\n\n            this.$container = $(this.options.mselectContainer);\n            this.$wrapper = this.$container.find('.' + this.options.mselectItemsWrapperClass);\n            this.$item = this.$wrapper.find('div').first();\n            this.selectedValues = [];\n            this.values = {};\n\n            this.$container.addClass(this.options.containerClass).prepend(searchTemplate);\n            this.$input = this.$container.find('.' + this.options.searchInputClass);\n            this.$selectedCounter = this.$container.find('.' + this.options.selectedItemsCountClass);\n            this.filter = '';\n\n            if (this.domElement.options.length) {\n                this._setLastAppendOption(this.domElement.options[this.domElement.options.length - 1].value);\n            }\n\n            this._initElement();\n            this._events();\n        },\n\n        /**\n         * Leave only saved/selected options in select element.\n         *\n         * @private\n         */\n        _initElement: function () {\n            this.element.empty();\n            _.each(this.options.selectedValues, function (value) {\n                this._createSelectedOption({\n                    value: value,\n                    label: value\n                });\n            }, this);\n        },\n\n        /**\n         * Attach required events.\n         *\n         * @private\n         */\n        _events: function () {\n            var onKeyUp = _.debounce(this.onKeyUp, this.options.updateDelay);\n\n            _.bindAll(this, 'onScroll', 'onCheck', 'onOptionsChange');\n\n            this.$wrapper.on('scroll', this.onScroll);\n            this.$wrapper.on('change.mselectCheck', '[type=checkbox]', this.onCheck);\n            this.$input.on('keyup', _.bind(onKeyUp, this));\n            this.element.on('change.hiddenSelect', this.onOptionsChange);\n        },\n\n        /**\n         * Behaves multiselect scroll.\n         */\n        onScroll: function () {\n            var height = this.$wrapper.height(),\n                scrollHeight = this.$wrapper.prop('scrollHeight'),\n                scrollTop = Math.ceil(this.$wrapper.prop('scrollTop'));\n\n            if (!this.options.optionsLoaded && scrollHeight - height <= scrollTop) {\n                this.loadOptions();\n            }\n        },\n\n        /**\n         * Behaves keyup event on input search\n         */\n        onKeyUp: function () {\n            if (this.getSearchCriteria() === this.filter) {\n                return false;\n            }\n\n            this.setFilter();\n            this.clearMultiselectOptions();\n            this.setCurrentPage(0);\n            this.loadOptions();\n        },\n\n        /**\n         * Callback for select change event\n         */\n        onOptionsChange: function () {\n            this.selectedValues = _.map(this.domElement.options, function (option) {\n                this.values[option.value] = true;\n\n                return option.value;\n            }, this);\n\n            this._updateSelectedCounter();\n        },\n\n        /**\n         * Overrides native check behaviour.\n         *\n         * @param {Event} event\n         */\n        onCheck: function (event) {\n            var checkbox = event.target,\n                option = {\n                    value: checkbox.value,\n                    label: $(checkbox).parent('label').text()\n                };\n\n            checkbox.checked ? this._createSelectedOption(option) : this._removeSelectedOption(option);\n            event.stopPropagation();\n        },\n\n        /**\n         * Show error message.\n         *\n         * @param {String} message\n         */\n        onError: function (message) {\n            alert({\n                content: message\n            });\n        },\n\n        /**\n         * Updates current filter state.\n         */\n        setFilter: function () {\n            this.filter = this.getSearchCriteria() || '';\n        },\n\n        /**\n         * Reads search input value.\n         *\n         * @return {String}\n         */\n        getSearchCriteria: function () {\n            return this.$input.val().trim();\n        },\n\n        /**\n         * Load options data.\n         */\n        loadOptions: function () {\n            var nextPage = this.getCurrentPage() + 1;\n\n            this.$wrapper.trigger('processStart');\n            this.$input.prop('disabled', true);\n\n            $.get(this.options.nextPageUrl, {\n                p: nextPage,\n                s: this.filter\n            })\n            .done(function (response) {\n                if (response.success) {\n                    this.appendOptions(response.result);\n                    this.setCurrentPage(nextPage);\n                } else {\n                    this.onError(response.errorMessage);\n                }\n            }.bind(this))\n            .always(function () {\n                this.$wrapper.trigger('processStop');\n                this.$input.prop('disabled', false);\n\n                if (this.filter) {\n                    this.$input.focus();\n                }\n            }.bind(this));\n        },\n\n        /**\n         * Append loaded options\n         *\n         * @param {Array} options\n         */\n        appendOptions: function (options) {\n            var divOptions = [];\n\n            if (!options.length) {\n                return false;\n            }\n\n            if (this.isOptionsLoaded(options)) {\n                return;\n            }\n\n            options.forEach(function (option) {\n                if (!this.values[option.value]) {\n                    this.values[option.value] = true;\n                    option.selected = this._isOptionSelected(option);\n                    divOptions.push(this._createMultiSelectOption(option));\n                    this._setLastAppendOption(option.value);\n                }\n            }, this);\n\n            this.$wrapper.append(divOptions);\n        },\n\n        /**\n         * Clear multiselect options\n         */\n        clearMultiselectOptions: function () {\n            this._setLastAppendOption(0);\n            this.values = {};\n            this.$wrapper.empty();\n        },\n\n        /**\n         * Checks if all options are already loaded\n         *\n         * @return {Boolean}\n         */\n        isOptionsLoaded: function (options) {\n            this.options.optionsLoaded = this.options.lastAppendValue === options[options.length - 1].value;\n\n            return this.options.optionsLoaded;\n        },\n\n        /**\n         * Setter for current page.\n         *\n         * @param {Number} page\n         */\n        setCurrentPage: function (page) {\n            this.options.currentPage = page;\n        },\n\n        /**\n         * Getter for current page.\n         *\n         * @return {Number}\n         */\n        getCurrentPage: function () {\n            return this.options.currentPage;\n        },\n\n        /**\n         * Creates new selected option for select element\n         *\n         * @param {Object} option - option object\n         * @param {String} option.value - option value\n         * @param {String} option.label - option label\n         * @private\n         */\n        _createSelectedOption: function (option) {\n            var selectOption = new Option(option.label, option.value, false, true);\n\n            this.element.append(selectOption);\n            this.selectedValues.push(option.value);\n            this._updateSelectedCounter();\n\n            return selectOption;\n        },\n\n        /**\n         * Remove passed option from select element\n         *\n         * @param {Object} option - option object\n         * @param {String} option.value - option value\n         * @param {String} option.label - option label\n         * @return {Object} option\n         * @private\n         */\n        _removeSelectedOption: function (option) {\n            var unselectedOption = _.findWhere(this.domElement.options, {\n                value: option.value\n            });\n\n            if (!_.isUndefined(unselectedOption)) {\n                this.domElement.remove(unselectedOption.index);\n                this.selectedValues.splice(_.indexOf(this.selectedValues, option.value), 1);\n                this._updateSelectedCounter();\n            }\n\n            return unselectedOption;\n        },\n\n        /**\n         * Creates new DIV option for multiselect widget\n         *\n         * @param {Object} option - option object\n         * @param {String} option.value - option value\n         * @param {String} option.label - option label\n         * @param {Boolean} option.selected - is option selected\n         * @private\n         */\n        _createMultiSelectOption: function (option) {\n            var item = this.$item.clone(),\n                checkbox = item.find('input'),\n                isSelected = !!option.selected;\n\n            checkbox.val(option.value)\n                .prop('checked', isSelected)\n                .toggleClass(this.options.mselectCheckedClass, isSelected);\n\n            item.find('label > span').text(option.label);\n\n            return item;\n        },\n\n        /**\n         * Checks if passed option should be selected\n         *\n         * @param {Object} option - option object\n         * @param {String} option.value - option value\n         * @param {String} option.label - option label\n         * @param {Boolean} option.selected - is option selected\n         * @return {Boolean}\n         * @private\n         */\n        _isOptionSelected: function (option) {\n            return !!~this.selectedValues.indexOf(option.value);\n        },\n\n        /**\n         * Saves last added option value.\n         *\n         * @param {Number} value\n         * @private\n         */\n        _setLastAppendOption: function (value) {\n            this.options.lastAppendValue = value;\n        },\n\n        /**\n         * Updates counter of selected items.\n         *\n         * @private\n         */\n        _updateSelectedCounter: function () {\n            this.$selectedCounter.text(this.selectedValues.length);\n        }\n    });\n\n    return $.mage.multiselect2;\n});\n","mage/tabs.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\ndefine([\n    'jquery',\n    'jquery-ui-modules/widget',\n    'jquery/ui-modules/widgets/tabs',\n    'mage/mage',\n    'mage/collapsible'\n], function ($) {\n    'use strict';\n\n    $.widget('mage.tabs', {\n        options: {\n            active: 0,\n            disabled: [],\n            openOnFocus: true,\n            collapsible: false,\n            collapsibleElement: '[data-role=collapsible]',\n            header: '[data-role=title]',\n            content: '[data-role=content]',\n            trigger: '[data-role=trigger]',\n            closedState: null,\n            openedState: null,\n            disabledState: null,\n            ajaxUrlElement: '[data-ajax=true]',\n            ajaxContent: false,\n            loadingClass: null,\n            saveState: false,\n            animate: false,\n            icons: {\n                activeHeader: null,\n                header: null\n            }\n        },\n\n        /**\n         * @private\n         */\n        _create: function () {\n            if (typeof this.options.disabled === 'string') {\n                this.options.disabled = this.options.disabled.split(' ').map(function (item) {\n                    return parseInt(item, 10);\n                });\n            }\n            this._processPanels();\n            this._handleDeepLinking();\n            this._processTabIndex();\n            this._closeOthers();\n            this._bind();\n        },\n\n        /**\n         * @private\n         */\n        _destroy: function () {\n            $.each(this.collapsibles, function () {\n                $(this).collapsible('destroy');\n            });\n        },\n\n        /**\n         * If deep linking is used, all sections must be closed but the one that contains the anchor.\n         * @private\n         */\n        _handleDeepLinking: function () {\n            var self = this,\n                anchor = window.location.hash,\n                isValid = $.mage.isValidSelector(anchor),\n                anchorId = anchor.replace('#', '');\n\n            if (anchor && isValid) {\n                $.each(self.contents, function (i) {\n                    if ($(this).attr('id') === anchorId || $(this).find('#' + anchorId).length) {\n                        self.collapsibles.not(self.collapsibles.eq(i)).collapsible('forceDeactivate');\n\n                        return false;\n                    }\n                });\n            }\n        },\n\n        /**\n         * When the widget gets instantiated, the first tab that is not disabled receive focusable property\n         * All tabs receive tabIndex 0\n         * @private\n         */\n        _processTabIndex: function () {\n            var self = this;\n\n            self.triggers.attr('tabIndex', 0);\n            $.each(this.collapsibles, function (i) {\n                self.triggers.attr('tabIndex', 0);\n                self.triggers.eq(i).attr('tabIndex', 0);\n            });\n        },\n\n        /**\n         * Prepare the elements for instantiating the collapsible widget\n         * @private\n         */\n        _processPanels: function () {\n            var isNotNested = this._isNotNested.bind(this);\n\n            this.contents = this.element\n                .find(this.options.content)\n                .filter(isNotNested);\n\n            this.collapsibles =  this.element\n                .find(this.options.collapsibleElement)\n                .filter(isNotNested);\n\n            this.collapsibles\n                .attr('role', 'presentation')\n                .parent()\n                .attr('role', 'tablist');\n\n            this.headers = this.element\n                .find(this.options.header)\n                .filter(isNotNested);\n\n            if (this.headers.length === 0) {\n                this.headers = this.collapsibles;\n            }\n            this.triggers = this.element\n                .find(this.options.trigger)\n                .filter(isNotNested);\n\n            if (this.triggers.length === 0) {\n                this.triggers = this.headers;\n            }\n            this._callCollapsible();\n        },\n\n        /**\n         * Checks if element is not in nested container to keep the correct scope of collapsible\n         * @param {Number} index\n         * @param {HTMLElement} element\n         * @private\n         * @return {Boolean}\n         */\n        _isNotNested: function (index, element) {\n            var parentContent = $(element).parents(this.options.content);\n\n            return !parentContent.length || !this.element.find(parentContent).length;\n        },\n\n        /**\n         * Setting the disabled and active tabs and calling instantiation of collapsible\n         * @private\n         */\n        _callCollapsible: function () {\n            var self = this,\n                disabled = false,\n                active = false;\n\n            $.each(this.collapsibles, function (i) {\n                disabled = active = false;\n\n                if ($.inArray(i, self.options.disabled) !== -1) {\n                    disabled = true;\n                }\n\n                if (i === self.options.active) {\n                    active = true;\n                }\n                self._instantiateCollapsible(this, i, active, disabled);\n            });\n        },\n\n        /**\n         * Instantiate collapsible.\n         *\n         * @param {HTMLElement} element\n         * @param {Number} index\n         * @param {*} active\n         * @param {*} disabled\n         * @private\n         */\n        _instantiateCollapsible: function (element, index, active, disabled) {\n            $(element).collapsible(\n                $.extend({}, this.options, {\n                    active: active,\n                    disabled: disabled,\n                    header: this.headers.eq(index),\n                    content: this.contents.eq(index),\n                    trigger: this.triggers.eq(index)\n                })\n            );\n        },\n\n        /**\n         * Adding callback to close others tabs when one gets opened\n         * @private\n         */\n        _closeOthers: function () {\n            var self = this;\n\n            $.each(this.collapsibles, function () {\n                $(this).on('beforeOpen', function () {\n                    self.collapsibles.not(this).collapsible('forceDeactivate');\n                });\n            });\n        },\n\n        /**\n         * @param {*} index\n         */\n        activate: function (index) {\n            this._toggleActivate('activate', index);\n        },\n\n        /**\n         * @param {*} index\n         */\n        deactivate: function (index) {\n            this._toggleActivate('deactivate', index);\n        },\n\n        /**\n         * @param {*} action\n         * @param {*} index\n         * @private\n         */\n        _toggleActivate: function (action, index) {\n            this.collapsibles.eq(index).collapsible(action);\n        },\n\n        /**\n         * @param {*} index\n         */\n        disable: function (index) {\n            this._toggleEnable('disable', index);\n        },\n\n        /**\n         * @param {*} index\n         */\n        enable: function (index) {\n            this._toggleEnable('enable', index);\n        },\n\n        /**\n         * @param {*} action\n         * @param {*} index\n         * @private\n         */\n        _toggleEnable: function (action, index) {\n            var self = this;\n\n            if (Array.isArray(index)) {\n                $.each(index, function () {\n                    self.collapsibles.eq(this).collapsible(action);\n                });\n            } else if (index === undefined) {\n                this.collapsibles.collapsible(action);\n            } else {\n                this.collapsibles.eq(index).collapsible(action);\n            }\n        },\n\n        /**\n         * @param {jQuery.Event} event\n         * @private\n         */\n        _keydown: function (event) {\n            var self = this,\n                keyCode, toFocus, toFocusIndex, enabledTriggers, length, currentIndex, nextToFocus;\n\n            if (event.altKey || event.ctrlKey) {\n                return;\n            }\n            keyCode = $.ui.keyCode;\n            toFocus = false;\n            enabledTriggers = [];\n\n            $.each(this.triggers, function () {\n                if (!self.collapsibles.eq(self.triggers.index($(this))).collapsible('option', 'disabled')) {\n                    enabledTriggers.push(this);\n                }\n            });\n            length = $(enabledTriggers).length;\n            currentIndex = $(enabledTriggers).index(event.target);\n\n            /**\n             * @param {String} direction\n             * @return {*}\n             */\n            nextToFocus = function (direction) {\n                if (length > 0) {\n                    if (direction === 'right') {\n                        toFocusIndex = (currentIndex + 1) % length;\n                    } else {\n                        toFocusIndex = (currentIndex + length - 1) % length;\n                    }\n\n                    return enabledTriggers[toFocusIndex];\n                }\n\n                return event.target;\n            };\n\n            switch (event.keyCode) {\n                case keyCode.RIGHT:\n                case keyCode.DOWN:\n                    toFocus = nextToFocus('right');\n                    break;\n\n                case keyCode.LEFT:\n                case keyCode.UP:\n                    toFocus = nextToFocus('left');\n                    break;\n\n                case keyCode.HOME:\n                    toFocus = enabledTriggers[0];\n                    break;\n\n                case keyCode.END:\n                    toFocus = enabledTriggers[length - 1];\n                    break;\n            }\n\n            if (toFocus) {\n                toFocusIndex = this.triggers.index(toFocus);\n                $(event.target).attr('tabIndex', -1);\n                $(toFocus).attr('tabIndex', 0);\n                toFocus.focus();\n\n                if (this.options.openOnFocus) {\n                    this.activate(toFocusIndex);\n                }\n                event.preventDefault();\n            }\n        },\n\n        /**\n         * @private\n         */\n        _bind: function () {\n            var events = {\n                keydown: '_keydown'\n            };\n\n            this._off(this.triggers);\n            this._on(this.triggers, events);\n        }\n    });\n\n    return $.mage.tabs;\n});\n","mage/dropdown.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\ndefine([\n    'jquery',\n    'jquery-ui-modules/dialog',\n    'mage/translate'\n], function ($) {\n    'use strict';\n\n    var timer = null;\n\n    /**\n     * Dropdown Widget - this widget is a wrapper for the jQuery UI Dialog\n     */\n    $.widget('mage.dropdownDialog', $.ui.dialog, {\n        options: {\n            triggerEvent: 'click',\n            triggerClass: null,\n            parentClass: null,\n            triggerTarget: null,\n            defaultDialogClass: 'mage-dropdown-dialog',\n            dialogContentClass: null,\n            shadowHinter: null,\n            closeOnMouseLeave: true,\n            closeOnClickOutside: true,\n            minHeight: null,\n            minWidth: null,\n            width: null,\n            modal: false,\n            timeout: null,\n            autoOpen: false,\n            createTitleBar: false,\n            autoPosition: false,\n            autoSize: false,\n            draggable: false,\n            resizable: false,\n            bodyClass: '',\n            buttons: [\n                {\n                    'class': 'action close',\n                    'text': $.mage.__('Close'),\n\n                    /**\n                     * Click action.\n                     */\n                    'click': function () {\n                        $(this).dropdownDialog('close');\n                    }\n                }\n            ]\n        },\n\n        /**\n         * extend default functionality to bind the opener for dropdown\n         * @private\n         */\n        _create: function () {\n            var _self = this;\n\n            this._super();\n            this.uiDialog.addClass(this.options.defaultDialogClass);\n\n            if (_self.options.triggerTarget) {\n                $(_self.options.triggerTarget).on(_self.options.triggerEvent, function (event) {\n                    event.preventDefault();\n                    event.stopPropagation();\n\n                    if (!_self._isOpen) {\n                        $('.' + _self.options.defaultDialogClass + ' > .ui-dialog-content').dropdownDialog('close');\n                        _self.open();\n                    } else {\n                        _self.close(event);\n                    }\n                });\n            }\n\n            if (_self.options.shadowHinter) {\n                _self.hinter = $('<div class=\"' + _self.options.shadowHinter + '\"></div>');\n                _self.element.append(_self.hinter);\n            }\n        },\n\n        /**\n         * Extend default functionality to close the dropdown\n         * with custom delay on mouse out and also to close when clicking outside\n         */\n        open: function () {\n            var _self = this;\n\n            this._super();\n\n            if (_self.options.dialogContentClass) {\n                _self.element.addClass(_self.options.dialogContentClass);\n            }\n\n            if (_self.options.closeOnMouseLeave) {\n\n                this._mouseEnter(_self.uiDialog);\n                this._mouseLeave(_self.uiDialog);\n\n                if (_self.options.triggerTarget) {\n                    this._mouseLeave($(_self.options.triggerTarget));\n                }\n            }\n\n            if (_self.options.closeOnClickOutside) {\n                $('body').on('click.outsideDropdown', function (event) {\n                    if (_self._isOpen && !$(event.target).closest('.ui-dialog').length) {\n                        if (timer) {\n                            clearTimeout(timer);\n                        }\n                        _self.close(event);\n                    }\n                });\n            }\n            // adding the class on the opener and parent element for dropdown\n            if (_self.options.triggerClass) {\n                $(_self.options.triggerTarget).addClass(_self.options.triggerClass);\n            }\n\n            if (_self.options.parentClass) {\n                $(_self.options.appendTo).addClass(_self.options.parentClass);\n            }\n\n            if (_self.options.bodyClass) {\n                $('body').addClass(_self.options.bodyClass);\n            }\n\n            if (_self.options.shadowHinter) {\n                _self._setShadowHinterPosition();\n            }\n        },\n\n        /**\n         * extend default functionality to reset the timer and remove the active class for opener\n         */\n        close: function () {\n            this._super();\n\n            if (this.options.dialogContentClass) {\n                this.element.removeClass(this.options.dialogContentClass);\n            }\n\n            if (this.options.triggerClass) {\n                $(this.options.triggerTarget).removeClass(this.options.triggerClass);\n            }\n\n            if (this.options.parentClass) {\n                $(this.options.appendTo).removeClass(this.options.parentClass);\n            }\n\n            if (this.options.bodyClass) {\n                $('body').removeClass(this.options.bodyClass);\n            }\n\n            if (timer) {\n                clearTimeout(timer);\n            }\n\n            if (this.options.triggerTarget) {\n                $(this.options.triggerTarget).off('mouseleave');\n            }\n            this.uiDialog.off('mouseenter');\n            this.uiDialog.off('mouseleave');\n            $('body').off('click.outsideDropdown');\n        },\n\n        /**\n         * _setShadowHinterPosition\n         * @private\n         */\n        _setShadowHinterPosition: function () {\n            var _self = this,\n                offset;\n\n            offset = _self.options.position.of.offset().left -\n                _self.element.offset().left +\n                _self.options.position.of.outerWidth() / 2;\n            offset = isNaN(offset) ? 0 : Math.floor(offset);\n            _self.hinter.css('left', offset);\n        },\n\n        /**\n         * @private\n         */\n        _position: function () {\n            if (this.options.autoPosition) {\n                this._super();\n            }\n        },\n\n        /**\n         * @private\n         */\n        _createTitlebar: function () {\n            if (this.options.createTitleBar) {\n                this._super();\n            } else {\n                // the title bar close button is referenced\n                // in _focusTabbable function, so to prevent errors it must be declared\n                this.uiDialogTitlebarClose = $('<div></div>');\n            }\n        },\n\n        /**\n         * @private\n         */\n        _size: function () {\n            if (this.options.autoSize) {\n                this._super();\n            }\n        },\n\n        /**\n         * @param {Object} handler\n         * @private\n         */\n        _mouseLeave: function (handler) {\n            var _self = this;\n\n            handler.on('mouseleave', function (event) {\n                event.stopPropagation();\n\n                if (_self._isOpen) {\n                    if (timer) {\n                        clearTimeout(timer);\n                    }\n                    timer = setTimeout(function (e) {\n                        _self.close(e);\n                    }, _self.options.timeout);\n                }\n            });\n        },\n\n        /**\n         * @param {Object} handler\n         * @private\n         */\n        _mouseEnter: function (handler) {\n            handler.on('mouseenter', function (event) {\n                event.stopPropagation();\n\n                if (timer) {\n                    clearTimeout(timer);\n                }\n            });\n        },\n\n        /**\n         * @param {String} key\n         * @param {*} value\n         * @private\n         */\n        _setOption: function (key, value) {\n            this._super(key, value);\n\n            if (key === 'triggerTarget') {\n                this.options.triggerTarget = value;\n            }\n        }\n    });\n\n    return $.mage.dropdownDialog;\n});\n","mage/tooltip.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\n/**\n * @deprecated since version 2.2.0\n */\ndefine([\n    'jquery',\n    'jquery-ui-modules/tooltip'\n], function ($) {\n    'use strict';\n\n    //Widget Wrapper\n    $.widget('mage.tooltip', $.ui.tooltip, {});\n\n    return $.mage.tooltip;\n});\n","mage/toggle.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\ndefine([\n    'jquery',\n    'jquery-ui-modules/widget'\n], function ($) {\n    'use strict';\n\n    $.widget('mage.toggleAdvanced', {\n        options: {\n            baseToggleClass: 'active' // Class used to be toggled on clicked element\n        },\n\n        /**\n         * Toggle creation\n         * @private\n         */\n        _create: function () {\n            this.beforeCreate();\n            this._bindCore();\n            this.afterCreate();\n        },\n\n        /**\n         *  Core bound events & setup\n         * @protected\n         */\n        _bindCore: function () {\n            var widget = this;\n\n            this.element.on('click', $.proxy(function (e) {\n                widget._onClick();\n                e.preventDefault();\n            }, this));\n        },\n\n        /**\n         * Binding Click event\n         *\n         * @protected\n         */\n        _onClick: function () {\n            this._prepareOptions();\n            this._toggleSelectors();\n        },\n\n        /**\n         * Method used to look for data attributes to override default options\n         *\n         * @protected\n         */\n        _prepareOptions: function () {\n            this.options.baseToggleClass = this.element.data('base-toggle-class') ?\n                this.element.data('base-toggle-class') : this.options.baseToggleClass;\n        },\n\n        /**\n         * Method responsible for hiding and revealing specified DOM elements\n         * Toggle the class on clicked element\n         *\n         * @protected\n         */\n        _toggleSelectors: function () {\n            this.element.toggleClass(this.options.baseToggleClass);\n        },\n\n        /**\n         * Method used to inject 3rd party functionality before create\n         * @public\n         */\n        beforeCreate: function () {},\n\n        /**\n         * Method used to inject 3rd party functionality after create\n         * @public\n         */\n        afterCreate: function () {}\n    });\n\n    // Extension for mage.toggle - Adding selectors support for other DOM elements we wish to toggle\n    $.widget('mage.toggleAdvanced', $.mage.toggleAdvanced, {\n\n        options: {\n            selectorsToggleClass: 'hidden',    // Class used to be toggled on selectors DOM elements\n            toggleContainers: null\n        },\n\n        /**\n         * Method responsible for hiding and revealing specified DOM elements\n         * If data-toggle-selectors attribute is present - toggle will be done on these selectors\n         * Otherwise we toggle the class on clicked element\n         *\n         * @protected\n         * @override\n         */\n        _toggleSelectors: function () {\n            this._super();\n\n            if (this.options.toggleContainers) {\n                $(this.options.toggleContainers).toggleClass(this.options.selectorsToggleClass);\n            } else {\n                this.element.toggleClass(this.options.baseToggleClass);\n            }\n        },\n\n        /**\n         * Method used to look for data attributes to override default options\n         *\n         * @protected\n         * @override\n         */\n        _prepareOptions: function () {\n            this.options.selectorsToggleClass = this.element.data('selectors-toggle-class') ?\n                this.element.data('selectors-toggle-class') : this.options.selectorsToggleClass;\n            this.options.toggleContainers = this.element.data('toggle-selectors') ?\n                this.element.data('toggle-selectors') : this.options.toggleContainers;\n            this._super();\n        }\n    });\n\n    // Extension for mage.toggle - Adding label toggle\n    $.widget('mage.toggleAdvanced', $.mage.toggleAdvanced, {\n\n        options: {\n            newLabel: null,             // Text of the new label to be used on toggle\n            curLabel: null,             // Text of the old label to be used on toggle\n            currentLabelElement: null   // Current label container\n        },\n\n        /**\n         * Binding Click event\n         *\n         * @protected\n         * @override\n         */\n        _onClick: function () {\n            this._super();\n            this._toggleLabel();\n        },\n\n        /**\n         * Method responsible for replacing clicked element labels\n         * @protected\n         */\n        _toggleLabel: function () {\n            var cachedLabel, currentLabelSelector;\n\n            if (this.options.newLabel) {\n                cachedLabel = this.options.newLabel;\n                currentLabelSelector = this.options.currentLabelElement ?\n                        $(this.options.currentLabelElement) : this.element;\n\n                this.element.data('toggle-label', this.options.curLabel);\n                currentLabelSelector.html(this.options.newLabel);\n\n                this.options.curLabel = this.options.newLabel;\n                this.options.newLabel = cachedLabel;\n            }\n        },\n\n        /**\n         * Method used to look for data attributes to override default options\n         *\n         * @protected\n         * @override\n         */\n        _prepareOptions: function () {\n            this.options.newLabel = this.element.data('toggle-label') ?\n                this.element.data('toggle-label') : this.options.newLabel;\n\n            this.options.currentLabelElement = this.element.data('current-label-el') ?\n                this.element.data('current-label-el') : this.options.currentLabelElement;\n\n            if (!this.options.currentLabelElement) {\n                this.options.currentLabelElement = this.element;\n            }\n\n            this.options.curLabel = $(this.options.currentLabelElement).html();\n\n            this._super();\n        }\n    });\n\n    return $.mage.toggleAdvanced;\n});\n","mage/fieldset-controls.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\n/**\n * @deprecated since version 2.2.0\n */\ndefine([\n    'jquery',\n    'jquery-ui-modules/widget'\n], function ($) {\n    'use strict';\n\n    /**\n     * This widget will allow a control with the fieldsetResetControl widget attached to reset a set of input fields.\n     * The input fields to reset are defined by the inputSelector selector. The widget will store a clone of the fields\n     * on create, and on trigger of fieldsetReset event it resets the defined fields. The event is triggered by the\n     * reset control widget.\n     *\n     * For inputs of type file, the whole dom element is replaced as changing the value is a security violation\n     * For inputs of type checkbox or radio, the checked attribute is added or removed as appropriate\n     * For all others the jquery .val method is used to update to value to the original.\n     */\n    $.widget('mage.fieldsetControls', {\n        original: undefined,\n        options: {\n            inputSelector: '[data-reset=\"true\"]'\n        },\n\n        /**\n         * @private\n         */\n        _create: function () {\n            this.original = this.element.find(this.options.inputSelector).clone(true);\n            this._bind();\n        },\n\n        /**\n         * @private\n         */\n        _bind: function () {\n            this._on({\n                'fieldsetReset': '_onReset'\n            });\n        },\n\n        /**\n         * @param {jQuery.Event} e\n         * @private\n         */\n        _onReset: function (e) {\n            var items;\n\n            e.stopPropagation();\n            // find all the ones we have to remove\n            items = this.element.find(this.options.inputSelector);\n            // loop over replacing each one.\n            items.each($.proxy(function (index, item) {\n                if ($(item).attr('type') == 'file') { //eslint-disable-line eqeqeq\n                    // Replace the current one we found with a clone of the original saved earlier\n                    $(item).replaceWith($(this.original[index]).clone(true));\n                } else if ($(item).attr('type') == 'checkbox' || $(item).attr('type') == 'radio') { //eslint-disable-line\n                    // Return to original state.\n                    if ($(this.original[index]).attr('checked') === undefined) {\n                        $(item).removeAttr('checked');\n                    } else {\n                        $(item).attr('checked', $(this.original[index]).attr('checked'));\n                    }\n                } else {\n                    // Replace the value with the original\n                    $(item).val($(this.original[index]).val());\n                }\n            }, this));\n        }\n    });\n\n    $.widget('mage.fieldsetResetControl', {\n        /**\n         * @private\n         */\n        _create: function () {\n            this._bind();\n        },\n\n        /**\n         * @private\n         */\n        _bind: function () {\n            this._on({\n                click: '_onClick'\n            });\n        },\n\n        /**\n         * @param {jQuery.Event} e\n         * @private\n         */\n        _onClick: function (e) {\n            e.stopPropagation();\n            $(this.element).trigger('fieldsetReset');\n        }\n    });\n\n    return {\n        fieldsetControls: $.mage.fieldsetControls,\n        fieldsetResetControl: $.mage.fieldsetResetControl\n    };\n});\n","mage/validation.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\ndefine([\n    'jquery',\n    'moment',\n    'mageUtils',\n    'jquery-ui-modules/widget',\n    'jquery/validate',\n    'mage/translate'\n], function ($, moment, utils) {\n    'use strict';\n\n    var creditCartTypes, rules, showLabel, originValidateDelegate;\n\n    $.extend(true, $, {\n        // @TODO: Move methods 'isEmpty', 'isEmptyNoTrim', 'parseNumber', 'stripHtml' in file with utility functions\n        mage: {\n            /**\n             * Check if string is empty with trim\n             * @param {String} value\n             */\n            isEmpty: function (value) {\n                return value === '' || value === undefined ||\n                    value == null || value.length === 0 || /^\\s+$/.test(value);\n            },\n\n            /**\n             * Check if string is empty no trim\n             * @param {String} value\n             */\n            isEmptyNoTrim: function (value) {\n                return value === '' || value == null || value.length === 0;\n            },\n\n            /**\n             * Checks if {value} is between numbers {from} and {to}\n             * @param {String} value\n             * @param {String} from\n             * @param {String} to\n             * @returns {Boolean}\n             */\n            isBetween: function (value, from, to) {\n                return ($.mage.isEmpty(from) || value >= $.mage.parseNumber(from)) &&\n                    ($.mage.isEmpty(to) || value <= $.mage.parseNumber(to));\n            },\n\n            /**\n             * Parse price string\n             * @param {String} value\n             */\n            parseNumber: function (value) {\n                var isDot, isComa;\n\n                if (typeof value !== 'string') {\n                    return parseFloat(value);\n                }\n                isDot = value.indexOf('.');\n                isComa = value.indexOf(',');\n\n                if (isDot !== -1 && isComa !== -1) {\n                    if (isComa > isDot) {\n                        value = value.replace('.', '').replace(',', '.');\n                    } else {\n                        value = value.replace(',', '');\n                    }\n                } else if (isComa !== -1) {\n                    value = value.replace(',', '.');\n                }\n\n                return parseFloat(value);\n            },\n\n            /**\n             * Removes HTML tags and space characters, numbers and punctuation.\n             *\n             * @param {String} value - Value being stripped.\n             * @return {String}\n             */\n            stripHtml: function (value) {\n                return value.replace(/<.[^<>]*?>/g, ' ').replace(/&nbsp;|&#160;/gi, ' ')\n                    .replace(/[0-9.(),;:!?%#$'\"_+=\\/-]*/g, '');\n            }\n        }\n    });\n\n    /**\n     * @param {String} name\n     * @param {*} method\n     * @param {*} message\n     * @param {*} dontSkip\n     */\n    $.validator.addMethod = function (name, method, message, dontSkip) {\n        $.validator.methods[name] = method;\n        $.validator.messages[name] = message !== undefined ? message : $.validator.messages[name];\n\n        if (method.length < 3 || dontSkip) {\n            $.validator.addClassRules(name, $.validator.normalizeRule(name));\n        }\n    };\n\n    /**\n     * Javascript object with credit card types\n     * 0 - regexp for card number\n     * 1 - regexp for cvn\n     * 2 - check or not credit card number trough Luhn algorithm by\n     */\n    creditCartTypes = {\n        'SO': [\n            new RegExp('^(6334[5-9]([0-9]{11}|[0-9]{13,14}))|(6767([0-9]{12}|[0-9]{14,15}))$'),\n            new RegExp('^([0-9]{3}|[0-9]{4})?$'),\n            true\n        ],\n        'SM': [\n            new RegExp('(^(5[0678])[0-9]{11,18}$)|(^(6[^05])[0-9]{11,18}$)|' +\n                '(^(601)[^1][0-9]{9,16}$)|(^(6011)[0-9]{9,11}$)|(^(6011)[0-9]{13,16}$)|' +\n                '(^(65)[0-9]{11,13}$)|(^(65)[0-9]{15,18}$)|(^(49030)[2-9]([0-9]{10}$|[0-9]{12,13}$))|' +\n                '(^(49033)[5-9]([0-9]{10}$|[0-9]{12,13}$))|(^(49110)[1-2]([0-9]{10}$|[0-9]{12,13}$))|' +\n                '(^(49117)[4-9]([0-9]{10}$|[0-9]{12,13}$))|(^(49118)[0-2]([0-9]{10}$|[0-9]{12,13}$))|' +\n                '(^(4936)([0-9]{12}$|[0-9]{14,15}$))'), new RegExp('^([0-9]{3}|[0-9]{4})?$'),\n            true\n        ],\n        'VI': [new RegExp('^4[0-9]{12}([0-9]{3})?$'), new RegExp('^[0-9]{3}$'), true],\n        'MC': [\n            new RegExp('^(?:5[1-5][0-9]{2}|222[1-9]|22[3-9][0-9]|2[3-6][0-9]{2}|27[01][0-9]|2720)[0-9]{12}$'),\n            new RegExp('^[0-9]{3}$'),\n            true\n        ],\n        'AE': [new RegExp('^3[47][0-9]{13}$'), new RegExp('^[0-9]{4}$'), true],\n        'DI': [new RegExp('^(6011(0|[2-4]|74|7[7-9]|8[6-9]|9)|6(4[4-9]|5))\\\\d*$'), new RegExp('^[0-9]{3}$'), true],\n        'JCB': [new RegExp('^35(2[8-9]|[3-8])\\\\d*$'), new RegExp('^[0-9]{3}$'), true],\n        'DN': [new RegExp('^(3(0[0-5]|095|6|[8-9]))\\\\d*$'), new RegExp('^[0-9]{3}$'), true],\n        'UN': [\n            new RegExp('^(622(1(2[6-9]|[3-9])|[3-8]|9([[0-1]|2[0-5]))|62[4-6]|628([2-8]))\\\\d*?$'),\n            new RegExp('^[0-9]{3}$'),\n            true\n        ],\n        'MI': [new RegExp('^(5(0|[6-9])|63|67(?!59|6770|6774))\\\\d*$'), new RegExp('^[0-9]{3}$'), true],\n        'MD': [new RegExp('^6759(?!24|38|40|6[3-9]|70|76)|676770|676774\\\\d*$'), new RegExp('^[0-9]{3}$'), true]\n    };\n\n    /**\n     * validate credit card number using mod10\n     * @param {String} s\n     * @return {Boolean}\n     */\n    function validateCreditCard(s) {\n        // remove non-numerics\n        var v = '0123456789',\n            w = '',\n            i, j, k, m, c, a, x;\n\n        for (i = 0; i < s.length; i++) {\n            x = s.charAt(i);\n\n            if (v.indexOf(x, 0) !== -1) {\n                w += x;\n            }\n        }\n        // validate number\n        j = w.length / 2;\n        k = Math.floor(j);\n        m = Math.ceil(j) - k;\n        c = 0;\n\n        for (i = 0; i < k; i++) {\n            a = w.charAt(i * 2 + m) * 2;\n            c += a > 9 ? Math.floor(a / 10 + a % 10) : a;\n        }\n\n        for (i = 0; i < k + m; i++) {\n            c += w.charAt(i * 2 + 1 - m) * 1;\n        }\n\n        return c % 10 === 0;\n    }\n\n    /**\n     * validate all table required inputs at once, using single hidden input\n     * @param {String} value\n     * @param {HTMLElement} element\n     *\n     * @return {Boolean}\n     */\n    function tableSingleValidation(value, element) {\n        var empty = $(element).closest('table')\n            .find('input.required-option:visible')\n            .filter(function (i, el) {\n                if ($(el).is('disabled')) {\n                    return $.mage.isEmpty(el.value);\n                }\n            })\n            .length;\n\n        return empty === 0;\n    }\n\n    /**\n     *\n     * @param {float} qty\n     * @param {float} qtyIncrements\n     * @returns {float}\n     */\n    function resolveModulo(qty, qtyIncrements) {\n        var divideEpsilon = 10000,\n            epsilon,\n            remainder;\n\n        while (qtyIncrements < 1) {\n            qty *= 10;\n            qtyIncrements *= 10;\n        }\n\n        epsilon = qtyIncrements / divideEpsilon;\n        remainder = qty % qtyIncrements;\n\n        if (Math.abs(remainder - qtyIncrements) < epsilon ||\n            Math.abs(remainder) < epsilon) {\n            remainder = 0;\n        }\n\n        return remainder;\n    }\n\n    /**\n     * Collection of validation rules including rules from additional-methods.js\n     * @type {Object}\n     */\n    rules = {\n        'max-words': [\n            function (value, element, params) {\n                return this.optional(element) || $.mage.stripHtml(value).match(/\\b\\w+\\b/g).length <= params;\n            },\n            $.mage.__('Please enter {0} words or less.')\n        ],\n        'min-words': [\n            function (value, element, params) {\n                return this.optional(element) || $.mage.stripHtml(value).match(/\\b\\w+\\b/g).length >= params;\n            },\n            $.mage.__('Please enter at least {0} words.')\n        ],\n        'range-words': [\n            function (value, element, params) {\n                return this.optional(element) ||\n                    $.mage.stripHtml(value).match(/\\b\\w+\\b/g).length >= params[0] &&\n                    value.match(/bw+b/g).length < params[1];\n            },\n            $.mage.__('Please enter between {0} and {1} words.')\n        ],\n        'letters-with-basic-punc': [\n            function (value, element) {\n                return this.optional(element) || /^[a-z\\-.,()'\\\"\\s]+$/i.test(value);\n            },\n            $.mage.__('Letters or punctuation only please')\n        ],\n        'alphanumeric': [\n            function (value, element) {\n                return this.optional(element) || /^\\w+$/i.test(value);\n            },\n            $.mage.__('Letters, numbers, spaces or underscores only please')\n        ],\n        'letters-only': [\n            function (value, element) {\n                return this.optional(element) || /^[a-z]+$/i.test(value);\n            },\n            $.mage.__('Letters only please')\n        ],\n        'no-whitespace': [\n            function (value, element) {\n                return this.optional(element) || /^\\S+$/i.test(value);\n            },\n            $.mage.__('No white space please')\n        ],\n        'no-marginal-whitespace': [\n            function (value, element) {\n                return this.optional(element) || !/^\\s+|\\s+$/i.test(value);\n            },\n            $.mage.__('No marginal white space please')\n        ],\n        'zip-range': [\n            function (value, element) {\n                return this.optional(element) || /^90[2-5]-\\d{2}-\\d{4}$/.test(value);\n            },\n            $.mage.__('Your ZIP-code must be in the range 902xx-xxxx to 905-xx-xxxx')\n        ],\n        'integer': [\n            function (value, element) {\n                return this.optional(element) || /^-?\\d+$/.test(value);\n            },\n            $.mage.__('A positive or negative non-decimal number please')\n        ],\n        'vinUS': [\n            function (v) {\n                var i, n, d, f, cd, cdv, LL, VL, FL, rs;\n\n                /* eslint-disable max-depth */\n                if (v.length !== 17) {\n                    return false;\n                }\n\n                LL = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'J', 'K', 'L',\n                    'M', 'N', 'P', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'];\n                VL = [1, 2, 3, 4, 5, 6, 7, 8, 1, 2, 3, 4, 5, 7, 9, 2, 3, 4, 5, 6, 7, 8, 9];\n                FL = [8, 7, 6, 5, 4, 3, 2, 10, 0, 9, 8, 7, 6, 5, 4, 3, 2];\n                rs = 0;\n\n                for (i = 0; i < 17; i++) {\n                    f = FL[i];\n                    d = v.slice(i, i + 1);\n\n                    if (i === 8) {\n                        cdv = d;\n                    }\n\n                    if (!isNaN(d)) {\n                        d *= f;\n                    } else {\n                        for (n = 0; n < LL.length; n++) {\n                            if (d.toUpperCase() === LL[n]) {\n                                d = VL[n];\n                                d *= f;\n\n                                if (isNaN(cdv) && n === 8) {\n                                    cdv = LL[n];\n                                }\n                                break;\n                            }\n                        }\n                    }\n                    rs += d;\n                }\n\n                /* eslint-enable max-depth */\n                cd = rs % 11;\n\n                if (cd === 10) {\n                    cd = 'X';\n                }\n\n                if (cd === cdv) {\n                    return true;\n                }\n\n                return false;\n            },\n            $.mage.__('The specified vehicle identification number (VIN) is invalid.')\n        ],\n        'dateITA': [\n            function (value, element) {\n                var check = false,\n                    re = /^\\d{1,2}\\/\\d{1,2}\\/\\d{4}$/,\n                    adata, gg, mm, aaaa, xdata;\n\n                if (re.test(value)) {\n                    adata = value.split('/');\n                    gg = parseInt(adata[0], 10);\n                    mm = parseInt(adata[1], 10);\n                    aaaa = parseInt(adata[2], 10);\n                    xdata = new Date(aaaa, mm - 1, gg);\n\n                    if (xdata.getFullYear() === aaaa &&\n                        xdata.getMonth() === mm - 1 &&\n                        xdata.getDate() === gg\n                    ) {\n                        check = true;\n                    } else {\n                        check = false;\n                    }\n                } else {\n                    check = false;\n                }\n\n                return this.optional(element) || check;\n            },\n            $.mage.__('Please enter a correct date')\n        ],\n        'dateNL': [\n            function (value, element) {\n                return this.optional(element) || /^\\d\\d?[\\.\\/-]\\d\\d?[\\.\\/-]\\d\\d\\d?\\d?$/.test(value);\n            },\n            'Vul hier een geldige datum in.'\n        ],\n        'time': [\n            function (value, element) {\n                return this.optional(element) || /^([01]\\d|2[0-3])(:[0-5]\\d){0,2}$/.test(value);\n            },\n            $.mage.__('Please enter a valid time, between 00:00 and 23:59')\n        ],\n        'time12h': [\n            function (value, element) {\n                return this.optional(element) || /^((0?[1-9]|1[012])(:[0-5]\\d){0,2}(\\s[AP]M))$/i.test(value);\n            },\n            $.mage.__('Please enter a valid time, between 00:00 am and 12:00 pm')\n        ],\n        'phoneUS': [\n            function (phoneNumber, element) {\n                phoneNumber = phoneNumber.replace(/\\s+/g, '');\n\n                return this.optional(element) || phoneNumber.length > 9 &&\n                    phoneNumber.match(/^(1-?)?(\\([2-9]\\d{2}\\)|[2-9]\\d{2})-?[2-9]\\d{2}-?\\d{4}$/);\n            },\n            $.mage.__('Please specify a valid phone number')\n        ],\n        'phoneUK': [\n            function (phoneNumber, element) {\n                return this.optional(element) || phoneNumber.length > 9 &&\n                    phoneNumber.match(/^(\\(?(0|\\+44)[1-9]{1}\\d{1,4}?\\)?\\s?\\d{3,4}\\s?\\d{3,4})$/);\n            },\n            $.mage.__('Please specify a valid phone number')\n        ],\n        'mobileUK': [\n            function (phoneNumber, element) {\n                return this.optional(element) || phoneNumber.length > 9 &&\n                    phoneNumber.match(/^((0|\\+44)7\\d{3}\\s?\\d{6})$/);\n            },\n            $.mage.__('Please specify a valid mobile number')\n        ],\n        'stripped-min-length': [\n            function (value, element, param) {\n                return value.length >= param;\n            },\n            $.mage.__('Please enter at least {0} characters')\n        ],\n\n        /* detect chars that would require more than 3 bytes */\n        'validate-no-utf8mb4-characters': [\n            function (value) {\n                var validator = this,\n                    message = $.mage.__('Please remove invalid characters: {0}.'),\n                    matches = value.match(/(?:[\\uD800-\\uDBFF][\\uDC00-\\uDFFF])/g),\n                    result = matches === null;\n\n                if (!result) {\n                    validator.charErrorMessage = message.replace('{0}', matches.join());\n                }\n\n                return result;\n            }, function () {\n                return this.charErrorMessage;\n            }\n        ],\n\n        /* eslint-disable max-len */\n        'email2': [\n            function (value, element) {\n                return this.optional(element) ||\n                    /^((([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+(\\.([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+)*)|((\\x22)((((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(([\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f]|\\x21|[\\x23-\\x5b]|[\\x5d-\\x7e]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(\\\\([\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]))))*(((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(\\x22)))@((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)*(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.?$/i.test(value);\n            },\n            $.validator.messages.email\n        ],\n        'url2': [\n            function (value, element) {\n                return this.optional(element) || /^(https?|ftp):\\/\\/(((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:)*@)?(((\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5]))|((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)*(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.?)(:\\d*)?)(\\/((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)+(\\/(([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)*)*)?)?(\\?((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)|[\\uE000-\\uF8FF]|\\/|\\?)*)?(\\#((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)|\\/|\\?)*)?$/i.test(value);\n            },\n            $.validator.messages.url\n        ],\n\n        /* eslint-enable max-len */\n        'credit-card-types': [\n            function (value, element, param) {\n                var validTypes;\n\n                if (/[^0-9-]+/.test(value)) {\n                    return false;\n                }\n                value = value.replace(/\\D/g, '');\n\n                validTypes = 0x0000;\n\n                if (param.mastercard) {\n                    validTypes |= 0x0001;\n                }\n\n                if (param.visa) {\n                    validTypes |= 0x0002;\n                }\n\n                if (param.amex) {\n                    validTypes |= 0x0004;\n                }\n\n                if (param.dinersclub) {\n                    validTypes |= 0x0008;\n                }\n\n                if (param.enroute) {\n                    validTypes |= 0x0010;\n                }\n\n                if (param.discover) {\n                    validTypes |= 0x0020;\n                }\n\n                if (param.jcb) {\n                    validTypes |= 0x0040;\n                }\n\n                if (param.unknown) {\n                    validTypes |= 0x0080;\n                }\n\n                if (param.all) {\n                    validTypes = 0x0001 | 0x0002 | 0x0004 | 0x0008 | 0x0010 | 0x0020 | 0x0040 | 0x0080;\n                }\n\n                if (validTypes & 0x0001 && /^(51|52|53|54|55)/.test(value)) { //mastercard\n                    return value.length === 16;\n                }\n\n                if (validTypes & 0x0002 && /^(4)/.test(value)) { //visa\n                    return value.length === 16;\n                }\n\n                if (validTypes & 0x0004 && /^(34|37)/.test(value)) { //amex\n                    return value.length === 15;\n                }\n\n                if (validTypes & 0x0008 && /^(300|301|302|303|304|305|36|38)/.test(value)) { //dinersclub\n                    return value.length === 14;\n                }\n\n                if (validTypes & 0x0010 && /^(2014|2149)/.test(value)) { //enroute\n                    return value.length === 15;\n                }\n\n                if (validTypes & 0x0020 && /^(6011)/.test(value)) { //discover\n                    return value.length === 16;\n                }\n\n                if (validTypes & 0x0040 && /^(3)/.test(value)) { //jcb\n                    return value.length === 16;\n                }\n\n                if (validTypes & 0x0040 && /^(2131|1800)/.test(value)) { //jcb\n                    return value.length === 15;\n                }\n\n                if (validTypes & 0x0080) { //unknown\n                    return true;\n                }\n\n                return false;\n            },\n            $.mage.__('Please enter a valid credit card number.')\n        ],\n\n        /* eslint-disable max-len */\n        'ipv4': [\n            function (value, element) {\n                return this.optional(element) ||\n                    /^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/i.test(value);\n            },\n            $.mage.__('Please enter a valid IP v4 address.')\n        ],\n        'ipv6': [\n            function (value, element) {\n                return this.optional(element) || /^((([0-9A-Fa-f]{1,4}:){7}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}:[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){5}:([0-9A-Fa-f]{1,4}:)?[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){4}:([0-9A-Fa-f]{1,4}:){0,2}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){3}:([0-9A-Fa-f]{1,4}:){0,3}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){2}:([0-9A-Fa-f]{1,4}:){0,4}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}((\\b((25[0-5])|(1\\d{2})|(2[0-4]\\d)|(\\d{1,2}))\\b)\\.){3}(\\b((25[0-5])|(1\\d{2})|(2[0-4]\\d)|(\\d{1,2}))\\b))|(([0-9A-Fa-f]{1,4}:){0,5}:((\\b((25[0-5])|(1\\d{2})|(2[0-4]\\d)|(\\d{1,2}))\\b)\\.){3}(\\b((25[0-5])|(1\\d{2})|(2[0-4]\\d)|(\\d{1,2}))\\b))|(::([0-9A-Fa-f]{1,4}:){0,5}((\\b((25[0-5])|(1\\d{2})|(2[0-4]\\d)|(\\d{1,2}))\\b)\\.){3}(\\b((25[0-5])|(1\\d{2})|(2[0-4]\\d)|(\\d{1,2}))\\b))|([0-9A-Fa-f]{1,4}::([0-9A-Fa-f]{1,4}:){0,5}[0-9A-Fa-f]{1,4})|(::([0-9A-Fa-f]{1,4}:){0,6}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){1,7}:))$/i.test(value);\n            },\n            $.mage.__('Please enter a valid IP v6 address.')\n        ],\n\n        /* eslint-enable max-len */\n        'pattern': [\n            function (value, element, param) {\n                return this.optional(element) || new RegExp(param).test(value);\n            },\n            $.mage.__('Invalid format.')\n        ],\n        'allow-container-className': [\n            function (element) {\n                if (element.type === 'radio' || element.type === 'checkbox') {\n                    return $(element).hasClass('change-container-classname');\n                }\n            },\n            ''\n        ],\n        'validate-no-html-tags': [\n            function (value) {\n                return !/<(\\/)?\\w+/.test(value);\n            },\n            $.mage.__('HTML tags are not allowed.')\n        ],\n        'validate-select': [\n            function (value) {\n                return value !== 'none' && value != null && value.length !== 0;\n            },\n            $.mage.__('Please select an option.')\n        ],\n        'validate-no-empty': [\n            function (value) {\n                return !$.mage.isEmpty(value);\n            },\n            $.mage.__('Empty Value.')\n        ],\n        'validate-alphanum-with-spaces': [\n            function (v) {\n                return $.mage.isEmptyNoTrim(v) || /^[a-zA-Z0-9 ]+$/.test(v);\n            },\n            $.mage.__('Please use only letters (a-z or A-Z), numbers (0-9) or spaces only in this field.')\n        ],\n        'validate-data': [\n            function (v) {\n                return $.mage.isEmptyNoTrim(v) || /^[A-Za-z]+[A-Za-z0-9_]+$/.test(v);\n            },\n            $.mage.__('Please use only letters (a-z or A-Z), numbers (0-9) or underscore (_) in this field, and the first character should be a letter.') //eslint-disable-line max-len\n        ],\n        'validate-street': [\n            function (v) {\n                return $.mage.isEmptyNoTrim(v) || /^[ \\w]{3,}([A-Za-z]\\.)?([ \\w]*\\#\\d+)?(\\r\\n| )[ \\w]{3,}/.test(v);\n            },\n            $.mage.__('Please use only letters (a-z or A-Z), numbers (0-9), spaces and \"#\" in this field.')\n        ],\n        'validate-phoneStrict': [\n            function (v) {\n                return $.mage.isEmptyNoTrim(v) || /^(\\()?\\d{3}(\\))?(-|\\s)?\\d{3}(-|\\s)\\d{4}$/.test(v);\n            },\n            $.mage.__('Please enter a valid phone number. For example (123) 456-7890 or 123-456-7890.')\n        ],\n        'validate-phoneLax': [\n            function (v) {\n                return $.mage.isEmptyNoTrim(v) ||\n                    /^((\\d[\\-. ]?)?((\\(\\d{3}\\))|\\d{3}))?[\\-. ]?\\d{3}[\\-. ]?\\d{4}$/.test(v);\n            },\n            $.mage.__('Please enter a valid phone number. For example (123) 456-7890 or 123-456-7890.')\n        ],\n        'validate-fax': [\n            function (v) {\n                return $.mage.isEmptyNoTrim(v) || /^(\\()?\\d{3}(\\))?(-|\\s)?\\d{3}(-|\\s)\\d{4}$/.test(v);\n            },\n            $.mage.__('Please enter a valid fax number (Ex: 123-456-7890).')\n        ],\n        'validate-email': [\n            function (v) {\n                return $.mage.isEmptyNoTrim(v) || /^([a-z0-9,!\\#\\$%&'\\*\\+\\/=\\?\\^_`\\{\\|\\}~-]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+(\\.([a-z0-9,!\\#\\$%&'\\*\\+\\/=\\?\\^_`\\{\\|\\}~-]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+)*@([a-z0-9-]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+(\\.([a-z0-9-]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+)*\\.(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]){2,})$/i.test(v); //eslint-disable-line max-len\n            },\n            $.mage.__('Please enter a valid email address (Ex: johndoe@domain.com).')\n        ],\n        //replace jquery.validation.js email validation rule\n        'email' : [\n            function (v) {\n                return $.mage.isEmptyNoTrim(v) || /^([a-z0-9,!\\#\\$%&'\\*\\+\\/=\\?\\^_`\\{\\|\\}~-]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+(\\.([a-z0-9,!\\#\\$%&'\\*\\+\\/=\\?\\^_`\\{\\|\\}~-]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+)*@([a-z0-9-]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+(\\.([a-z0-9-]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+)*\\.(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]){2,})$/i.test(v); //eslint-disable-line max-len\n            },\n            $.mage.__('Please enter a valid email address.')\n        ],\n        'validate-emailSender': [\n            function (v) {\n                return $.mage.isEmptyNoTrim(v) || /^(?!.*:)[\\S ]+$/.test(v);\n            },\n            $.mage.__('Please use only visible characters and spaces. The colon character is not allowed.')\n        ],\n        'validate-password': [\n            function (v) {\n                var pass;\n\n                if (v == null) {\n                    return false;\n                }\n                //strip leading and trailing spaces\n                pass = v.trim();\n\n                if (!pass.length) {\n                    return true;\n                }\n\n                return !(pass.length > 0 && pass.length < 6);\n            },\n            $.mage.__('Please enter 6 or more characters. Leading and trailing spaces will be ignored.')\n        ],\n        'validate-admin-password': [\n            function (v) {\n                var pass;\n\n                if (v == null) {\n                    return false;\n                }\n                pass = v.trim();\n                // strip leading and trailing spaces\n                if (pass.length === 0) {\n                    return true;\n                }\n\n                if (!/[a-z]/i.test(v) || !/[0-9]/.test(v)) {\n                    return false;\n                }\n\n                if (pass.length < 7) {\n                    return false;\n                }\n\n                return true;\n            },\n            $.mage.__('Please enter 7 or more characters, using both numeric and alphabetic.')\n        ],\n        'validate-customer-password': [\n            function (v, elm) {\n                var validator = this,\n                    counter = 0,\n                    passwordMinLength = $(elm).data('password-min-length'),\n                    passwordMinCharacterSets = $(elm).data('password-min-character-sets'),\n                    pass = v.trim(),\n                    result = pass.length >= passwordMinLength;\n\n                if (result === false) {\n                    validator.passwordErrorMessage = $.mage.__('Minimum length of this field must be equal or greater than %1 symbols. Leading and trailing spaces will be ignored.').replace('%1', passwordMinLength); //eslint-disable-line max-len\n\n                    return result;\n                }\n\n                if (pass.match(/\\d+/)) {\n                    counter++;\n                }\n\n                if (pass.match(/[a-z]+/)) {\n                    counter++;\n                }\n\n                if (pass.match(/[A-Z]+/)) {\n                    counter++;\n                }\n\n                if (pass.match(/[^a-zA-Z0-9]+/)) {\n                    counter++;\n                }\n\n                if (counter < passwordMinCharacterSets) {\n                    result = false;\n                    validator.passwordErrorMessage = $.mage.__('Minimum of different classes of characters in password is %1. Classes of characters: Lower Case, Upper Case, Digits, Special Characters.').replace('%1', passwordMinCharacterSets); //eslint-disable-line max-len\n                }\n\n                return result;\n            }, function () {\n                return this.passwordErrorMessage;\n            }\n        ],\n        'validate-url': [\n            function (v) {\n                if ($.mage.isEmptyNoTrim(v)) {\n                    return true;\n                }\n                v = (v || '').replace(/^\\s+/, '').replace(/\\s+$/, '');\n\n                return (/^(http|https|ftp):\\/\\/(([A-Z0-9]([A-Z0-9_-]*[A-Z0-9]|))(\\.[A-Z0-9]([A-Z0-9_-]*[A-Z0-9]|))*)(:(\\d+))?(\\/[A-Z0-9~](([A-Z0-9_~-]|\\.)*[A-Z0-9~]|))*\\/?(.*)?$/i).test(v); //eslint-disable-line max-len\n\n            },\n            $.mage.__('Please enter a valid URL. Protocol is required (http://, https:// or ftp://).')\n        ],\n        'validate-clean-url': [\n            function (v) {\n                return $.mage.isEmptyNoTrim(v) || /^(http|https|ftp):\\/\\/(([A-Z0-9][A-Z0-9_-]*)(\\.[A-Z0-9][A-Z0-9_-]*)+.(com|org|net|dk|at|us|tv|info|uk|co.uk|biz|se)$)(:(\\d+))?\\/?/i.test(v) || /^(www)((\\.[A-Z0-9][A-Z0-9_-]*)+.(com|org|net|dk|at|us|tv|info|uk|co.uk|biz|se)$)(:(\\d+))?\\/?/i.test(v); //eslint-disable-line max-len\n\n            },\n            $.mage.__('Please enter a valid URL. For example http://www.example.com or www.example.com.')\n        ],\n        'validate-xml-identifier': [\n            function (v) {\n                return $.mage.isEmptyNoTrim(v) || /^[A-Z][A-Z0-9_\\/-]*$/i.test(v);\n\n            },\n            $.mage.__('Please enter a valid XML-identifier (Ex: something_1, block5, id-4).')\n        ],\n        'validate-ssn': [\n            function (v) {\n                return $.mage.isEmptyNoTrim(v) || /^\\d{3}-?\\d{2}-?\\d{4}$/.test(v);\n\n            },\n            $.mage.__('Please enter a valid social security number (Ex: 123-45-6789).')\n        ],\n        'validate-zip-us': [\n            function (v) {\n                return $.mage.isEmptyNoTrim(v) || /(^\\d{5}$)|(^\\d{5}-\\d{4}$)/.test(v);\n\n            },\n            $.mage.__('Please enter a valid zip code (Ex: 90602 or 90602-1234).')\n        ],\n        'validate-date-au': [\n            function (v) {\n                var regex, d;\n\n                if ($.mage.isEmptyNoTrim(v)) {\n                    return true;\n                }\n                regex = /^(\\d{2})\\/(\\d{2})\\/(\\d{4})$/;\n\n                if ($.mage.isEmpty(v) || !regex.test(v)) {\n                    return false;\n                }\n                d = new Date(v.replace(regex, '$2/$1/$3'));\n\n                return parseInt(RegExp.$2, 10) === 1 + d.getMonth() &&\n                    parseInt(RegExp.$1, 10) === d.getDate() &&\n                    parseInt(RegExp.$3, 10) === d.getFullYear();\n\n            },\n            $.mage.__('Please use this date format: dd/mm/yyyy. For example 17/03/2006 for the 17th of March, 2006.')\n        ],\n        'validate-currency-dollar': [\n            function (v) {\n                return $.mage.isEmptyNoTrim(v) || /^\\$?\\-?([1-9]{1}[0-9]{0,2}(\\,[0-9]{3})*(\\.[0-9]{0,2})?|[1-9]{1}\\d*(\\.[0-9]{0,2})?|0(\\.[0-9]{0,2})?|(\\.[0-9]{1,2})?)$/.test(v); //eslint-disable-line max-len\n\n            },\n            $.mage.__('Please enter a valid $ amount. For example $100.00.')\n        ],\n        'validate-not-negative-number': [\n            function (v) {\n                if ($.mage.isEmptyNoTrim(v)) {\n                    return true;\n                }\n                v = $.mage.parseNumber(v);\n\n                return !isNaN(v) && v >= 0;\n\n            },\n            $.mage.__('Please enter a number 0 or greater in this field.')\n        ],\n        // validate-not-negative-number should be replaced in all places with this one and then removed\n        'validate-zero-or-greater': [\n            function (v) {\n                if ($.mage.isEmptyNoTrim(v)) {\n                    return true;\n                }\n                v = $.mage.parseNumber(v);\n\n                return !isNaN(v) && v >= 0;\n\n            },\n            $.mage.__('Please enter a number 0 or greater in this field.')\n        ],\n        'validate-greater-than-zero': [\n            function (v) {\n                if ($.mage.isEmptyNoTrim(v)) {\n                    return true;\n                }\n                v = $.mage.parseNumber(v);\n\n                return !isNaN(v) && v > 0;\n            },\n            $.mage.__('Please enter a number greater than 0 in this field.')\n        ],\n        'validate-css-length': [\n            function (v) {\n                if (v !== '') {\n                    return (/^[0-9]*\\.*[0-9]+(px|pc|pt|ex|em|mm|cm|in|%)?$/).test(v);\n                }\n\n                return true;\n            },\n            $.mage.__('Please input a valid CSS-length (Ex: 100px, 77pt, 20em, .5ex or 50%).')\n        ],\n        // Additional methods\n        'validate-number': [\n            function (v) {\n                return $.mage.isEmptyNoTrim(v) || !isNaN($.mage.parseNumber(v)) && /^\\s*-?\\d*(\\.\\d*)?\\s*$/.test(v);\n            },\n            $.mage.__('Please enter a valid number in this field.')\n        ],\n        'required-number': [\n            function (v) {\n                return !!v.length;\n            },\n            $.mage.__('Please enter a valid number in this field.')\n        ],\n        'validate-number-range': [\n            function (v, elm, param) {\n                var numValue, dataAttrRange, classNameRange, result, range, m, classes, ii;\n\n                if ($.mage.isEmptyNoTrim(v)) {\n                    return true;\n                }\n\n                numValue = $.mage.parseNumber(v);\n\n                if (isNaN(numValue)) {\n                    return false;\n                }\n\n                dataAttrRange = /^(-?[\\d.,]+)?-(-?[\\d.,]+)?$/;\n                classNameRange = /^number-range-(-?[\\d.,]+)?-(-?[\\d.,]+)?$/;\n                result = true;\n                range = param;\n\n                if (typeof range === 'string') {\n                    m = dataAttrRange.exec(range);\n\n                    if (m) {\n                        result = result && $.mage.isBetween(numValue, m[1], m[2]);\n                    } else {\n                        result = false;\n                    }\n                } else if (elm && elm.className) {\n                    classes = elm.className.split(' ');\n                    ii = classes.length;\n\n                    while (ii--) {\n                        range = classes[ii];\n                        m = classNameRange.exec(range);\n\n                        if (m) { //eslint-disable-line max-depth\n                            result = result && $.mage.isBetween(numValue, m[1], m[2]);\n                            break;\n                        }\n                    }\n                }\n\n                return result;\n            },\n            $.mage.__('The value is not within the specified range.'),\n            true\n        ],\n        'validate-digits': [\n            function (v) {\n                return $.mage.isEmptyNoTrim(v) || !/[^\\d]/.test(v);\n            },\n            $.mage.__('Please enter a valid number in this field.')\n        ],\n        'validate-forbidden-extensions': [\n            function (v, elem) {\n                var forbiddenExtensions = $(elem).attr('data-validation-params'),\n                    forbiddenExtensionsArray = forbiddenExtensions.split(','),\n                    extensionsArray = v.split(','),\n                    result = true;\n\n                this.validateExtensionsMessage = $.mage.__('Forbidden extensions has been used. Avoid usage of ') +\n                    forbiddenExtensions;\n\n                $.each(extensionsArray, function (key, extension) {\n                    if (forbiddenExtensionsArray.indexOf(extension) !== -1) {\n                        result = false;\n                    }\n                });\n\n                return result;\n            }, function () {\n                return this.validateExtensionsMessage;\n            }\n        ],\n        'validate-digits-range': [\n            function (v, elm, param) {\n                var numValue, dataAttrRange, classNameRange, result, range, m, classes, ii;\n\n                if ($.mage.isEmptyNoTrim(v)) {\n                    return true;\n                }\n\n                numValue = $.mage.parseNumber(v);\n\n                if (isNaN(numValue)) {\n                    return false;\n                }\n\n                dataAttrRange = /^(-?\\d+)?-(-?\\d+)?$/;\n                classNameRange = /^digits-range-(-?\\d+)?-(-?\\d+)?$/;\n                result = true;\n                range = param;\n\n                if (typeof range === 'string') {\n                    m = dataAttrRange.exec(range);\n\n                    if (m) {\n                        result = result && $.mage.isBetween(numValue, m[1], m[2]);\n                    } else {\n                        result = false;\n                    }\n                } else if (elm && elm.className) {\n                    classes = elm.className.split(' ');\n                    ii = classes.length;\n\n                    while (ii--) {\n                        range = classes[ii];\n                        m = classNameRange.exec(range);\n\n                        if (m) { //eslint-disable-line max-depth\n                            result = result && $.mage.isBetween(numValue, m[1], m[2]);\n                            break;\n                        }\n                    }\n                }\n\n                return result;\n            },\n            $.mage.__('The value is not within the specified range.'),\n            true\n        ],\n        'validate-range': [\n            function (v, elm) {\n                var minValue, maxValue, ranges, reRange, result, values,\n                    i, name, validRange, minValidRange, maxValidRange;\n\n                if ($.mage.isEmptyNoTrim(v)) {\n                    return true;\n                } else if ($.validator.methods['validate-digits'] && $.validator.methods['validate-digits'](v)) {\n                    minValue = maxValue = $.mage.parseNumber(v);\n                } else {\n                    ranges = /^(-?\\d+)?-(-?\\d+)?$/.exec(v);\n\n                    if (ranges) {\n                        minValue = $.mage.parseNumber(ranges[1]);\n                        maxValue = $.mage.parseNumber(ranges[2]);\n\n                        if (minValue > maxValue) { //eslint-disable-line max-depth\n                            return false;\n                        }\n                    } else {\n                        return false;\n                    }\n                }\n                reRange = /^range-(-?\\d+)?-(-?\\d+)?$/;\n                result = true;\n                values = $(elm).prop('class').split(' ');\n\n                for (i = values.length - 1; i >= 0; i--) {\n                    name = values[i];\n                    validRange = reRange.exec(name);\n\n                    if (validRange) {\n                        minValidRange = $.mage.parseNumber(validRange[1]);\n                        maxValidRange = $.mage.parseNumber(validRange[2]);\n                        result = result &&\n                            (isNaN(minValidRange) || minValue >= minValidRange) &&\n                            (isNaN(maxValidRange) || maxValue <= maxValidRange);\n                    }\n                }\n\n                return result;\n            },\n            $.mage.__('The value is not within the specified range.')\n        ],\n        'validate-alpha': [\n            function (v) {\n                return $.mage.isEmptyNoTrim(v) || /^[a-zA-Z]+$/.test(v);\n            },\n            $.mage.__('Please use letters only (a-z or A-Z) in this field.')\n        ],\n        'validate-code': [\n            function (v) {\n                return $.mage.isEmptyNoTrim(v) || /^[a-zA-Z]+[a-zA-Z0-9_]+$/.test(v);\n            },\n            $.mage.__('Please use only letters (a-z or A-Z), numbers (0-9) or underscore (_) in this field, and the first character should be a letter.') //eslint-disable-line max-len\n        ],\n        'validate-alphanum': [\n            function (v) {\n                return $.mage.isEmptyNoTrim(v) || /^[a-zA-Z0-9]+$/.test(v);\n            },\n            $.mage.__('Please use only letters (a-z or A-Z) or numbers (0-9) in this field. No spaces or other characters are allowed.') //eslint-disable-line max-len\n        ],\n        'validate-not-number-first': [\n            function (value) {\n                return $.mage.isEmptyNoTrim(value) || /^[^0-9-\\.].*$/.test(value.trim());\n            },\n            $.mage.__('First character must be letter.')\n        ],\n        'validate-date': [\n            function (value, params, additionalParams) {\n                var test = moment(value, utils.convertToMomentFormat(additionalParams.dateFormat));\n\n                return $.mage.isEmptyNoTrim(value) || test.isValid();\n            },\n            $.mage.__('Please enter a valid date.')\n\n        ],\n        'validate-date-range': [\n            function (v, elm) {\n                var m = /\\bdate-range-(\\w+)-(\\w+)\\b/.exec(elm.className),\n                    currentYear, normalizedTime, dependentElements;\n\n                if (!m || m[2] === 'to' || $.mage.isEmptyNoTrim(v)) {\n                    return true;\n                }\n\n                currentYear = new Date().getFullYear() + '';\n\n                /**\n                 * @param {String} vd\n                 * @return {Number}\n                 */\n                normalizedTime = function (vd) {\n                    vd = vd.split(/[.\\/]/);\n\n                    if (vd[2] && vd[2].length < 4) {\n                        vd[2] = currentYear.substr(0, vd[2].length) + vd[2];\n                    }\n\n                    return new Date(vd.join('/')).getTime();\n                };\n\n                dependentElements = $(elm.form).find('.validate-date-range.date-range-' + m[1] + '-to');\n\n                return !dependentElements.length || $.mage.isEmptyNoTrim(dependentElements[0].value) ||\n                    normalizedTime(v) <= normalizedTime(dependentElements[0].value);\n            },\n            $.mage.__('Make sure the To Date is later than or the same as the From Date.')\n        ],\n        'validate-cpassword': [\n            function () {\n                var conf = $('#confirmation').length > 0 ? $('#confirmation') : $($('.validate-cpassword')[0]),\n                    pass = false,\n                    passwordElements, i, passwordElement;\n\n                if ($('#password')) {\n                    pass = $('#password');\n                }\n                passwordElements = $('.validate-password');\n\n                for (i = 0; i < passwordElements.length; i++) {\n                    passwordElement = $(passwordElements[i]);\n\n                    if (passwordElement.closest('form').attr('id') === conf.closest('form').attr('id')) {\n                        pass = passwordElement;\n                    }\n                }\n\n                if ($('.validate-admin-password').length) {\n                    pass = $($('.validate-admin-password')[0]);\n                }\n\n                return pass.val() === conf.val();\n            },\n            $.mage.__('Please make sure your passwords match.')\n        ],\n        'validate-identifier': [\n            function (v) {\n                return $.mage.isEmptyNoTrim(v) || /^[a-z0-9][a-z0-9_\\/-]+(\\.[a-z0-9_-]+)?$/.test(v);\n            },\n            $.mage.__('Please enter a valid URL Key (Ex: \"example-page\", \"example-page.html\" or \"anotherlevel/example-page\").') //eslint-disable-line max-len\n        ],\n        'validate-zip-international': [\n\n            /*function(v) {\n             // @TODO: Cleanup\n             return Validation.get('IsEmpty').test(v) ||\n             /(^[A-z0-9]{2,10}([\\s]{0,1}|[\\-]{0,1})[A-z0-9]{2,10}$)/.test(v);\n             }*/\n            function () {\n                return true;\n            },\n            $.mage.__('Please enter a valid zip code.')\n        ],\n        'validate-one-required': [\n            function (v, elm) {\n                var p = $(elm).parent(),\n                    options = p.find('input');\n\n                return options.map(function (el) {\n                    return $(el).val();\n                }).length > 0;\n            },\n            $.mage.__('Please select one of the options above.')\n        ],\n        'validate-state': [\n            function (v) {\n                return v !== 0;\n            },\n            $.mage.__('Please select State/Province.')\n        ],\n        'required-file': [\n            function (v, elm) {\n                var result = !$.mage.isEmptyNoTrim(v),\n                    ovId;\n\n                if (!result) {\n                    ovId = $('#' + $(elm).attr('id') + '_value');\n\n                    if (ovId.length > 0) {\n                        result = !$.mage.isEmptyNoTrim(ovId.val());\n                    }\n                }\n\n                return result;\n            },\n            $.mage.__('Please select a file.')\n        ],\n        'validate-ajax-error': [\n            function (v, element) {\n                element = $(element);\n                element.on('change.ajaxError', function () {\n                    element.removeClass('validate-ajax-error');\n                    element.off('change.ajaxError');\n                });\n\n                return !element.hasClass('validate-ajax-error');\n            },\n            ''\n        ],\n        'validate-optional-datetime': [\n            function (v, elm, param) {\n                var dateTimeParts = $('.datetime-picker[id^=\"options_' + param + '\"]'),\n                    hasWithValue = false,\n                    hasWithNoValue = false,\n                    pattern = /day_part$/i,\n                    i;\n\n                for (i = 0; i < dateTimeParts.length; i++) {\n                    if (!pattern.test($(dateTimeParts[i]).attr('id'))) {\n                        if ($(dateTimeParts[i]).val() === 's') { //eslint-disable-line max-depth\n                            hasWithValue = true;\n                        } else {\n                            hasWithNoValue = true;\n                        }\n                    }\n                }\n\n                return hasWithValue ^ hasWithNoValue;\n            },\n            $.mage.__('The field isn\\'t complete.')\n        ],\n        'validate-required-datetime': [\n            function (v, elm, param) {\n                var dateTimeParts = $('.datetime-picker[id^=\"options_' + param + '\"]'),\n                    i;\n\n                for (i = 0; i < dateTimeParts.length; i++) {\n                    if (dateTimeParts[i].value === '') {\n                        return false;\n                    }\n                }\n\n                return true;\n            },\n            $.mage.__('This is a required field.')\n        ],\n        'validate-one-required-by-name': [\n            function (v, elm, selector) {\n                var name = elm.name.replace(/([\\\\\"])/g, '\\\\$1'),\n                    container = this.currentForm;\n\n                selector = selector === true ? 'input[name=\"' + name + '\"]:checked' : selector;\n\n                return !!container.querySelectorAll(selector).length;\n            },\n            $.mage.__('Please select one of the options.')\n        ],\n        'less-than-equals-to': [\n            function (value, element, params) {\n                if ($.isNumeric($(params).val()) && $.isNumeric(value)) {\n                    this.lteToVal = $(params).val();\n\n                    return parseFloat(value) <= parseFloat($(params).val());\n                }\n\n                return true;\n            },\n            function () {\n                var message = $.mage.__('Please enter a value less than or equal to %s.');\n\n                return message.replace('%s', this.lteToVal);\n            }\n        ],\n        'greater-than-equals-to': [\n            function (value, element, params) {\n                if ($.isNumeric($(params).val()) && $.isNumeric(value)) {\n                    this.gteToVal = $(params).val();\n\n                    return parseFloat(value) >= parseFloat($(params).val());\n                }\n\n                return true;\n            },\n            function () {\n                var message = $.mage.__('Please enter a value greater than or equal to %s.');\n\n                return message.replace('%s', this.gteToVal);\n            }\n        ],\n        'validate-emails': [\n            function (value) {\n                var validRegexp, emails, i;\n\n                if ($.mage.isEmpty(value)) {\n                    return true;\n                }\n                validRegexp = /^([a-z0-9,!\\#\\$%&'\\*\\+\\/=\\?\\^_`\\{\\|\\}~-]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+(\\.([a-z0-9,!\\#\\$%&'\\*\\+\\/=\\?\\^_`\\{\\|\\}~-]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+)*@([a-z0-9-]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+(\\.([a-z0-9-]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+)*\\.(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]){2,})$/i; //eslint-disable-line max-len\n                emails = value.split(/[\\s\\n\\,]+/g);\n\n                for (i = 0; i < emails.length; i++) {\n                    if (!validRegexp.test(emails[i].trim())) {\n                        return false;\n                    }\n                }\n\n                return true;\n            },\n            $.mage.__('Please enter valid email addresses, separated by commas. For example, johndoe@domain.com, johnsmith@domain.com.') //eslint-disable-line max-len\n        ],\n\n        'validate-cc-type-select': [\n\n            /**\n             * Validate credit card type matches credit card number\n             * @param {*} value - select credit card type\n             * @param {*} element - element contains the select box for credit card types\n             * @param {*} params - selector for credit card number\n             * @return {Boolean}\n             */\n            function (value, element, params) {\n                if (value && params && creditCartTypes[value]) {\n                    return creditCartTypes[value][0].test($(params).val().replace(/\\s+/g, ''));\n                }\n\n                return false;\n            },\n            $.mage.__('Card type does not match credit card number.')\n        ],\n        'validate-cc-number': [\n\n            /**\n             * Validate credit card number based on mod 10.\n             *\n             * @param {*} value - credit card number\n             * @return {Boolean}\n             */\n            function (value) {\n                if (value) {\n                    return validateCreditCard(value);\n                }\n\n                return false;\n            },\n            $.mage.__('Please enter a valid credit card number.')\n        ],\n        'validate-cc-type': [\n\n            /**\n             * Validate credit card number is for the correct credit card type.\n             *\n             * @param {String} value - credit card number\n             * @param {*} element - element contains credit card number\n             * @param {*} params - selector for credit card type\n             * @return {Boolean}\n             */\n            function (value, element, params) {\n                var ccType;\n\n                if (value && params) {\n                    ccType = $(params).val();\n                    value = value.replace(/\\s/g, '').replace(/\\-/g, '');\n\n                    if (creditCartTypes[ccType] && creditCartTypes[ccType][0]) {\n                        return creditCartTypes[ccType][0].test(value);\n                    } else if (creditCartTypes[ccType] && !creditCartTypes[ccType][0]) {\n                        return true;\n                    }\n                }\n\n                return false;\n            },\n            $.mage.__('Credit card number does not match credit card type.')\n        ],\n        'validate-cc-exp': [\n\n            /**\n             * Validate credit card expiration date, make sure it's within the year and not before current month.\n             *\n             * @param {*} value - month\n             * @param {*} element - element contains month\n             * @param {*} params - year selector\n             * @return {Boolean}\n             */\n            function (value, element, params) {\n                var isValid = false,\n                    month, year, currentTime, currentMonth, currentYear;\n\n                if (value && params) {\n                    month = value;\n                    year = $(params).val();\n                    currentTime = new Date();\n                    currentMonth = currentTime.getMonth() + 1;\n                    currentYear = currentTime.getFullYear();\n\n                    isValid = !year || year > currentYear || year == currentYear && month >= currentMonth; //eslint-disable-line\n                }\n\n                return isValid;\n            },\n            $.mage.__('Incorrect credit card expiration date.')\n        ],\n        'validate-cc-cvn': [\n\n            /**\n             * Validate credit card cvn based on credit card type.\n             *\n             * @param {*} value - credit card cvn\n             * @param {*} element - element contains credit card cvn\n             * @param {*} params - credit card type selector\n             * @return {*}\n             */\n            function (value, element, params) {\n                var ccType;\n\n                if (value && params) {\n                    ccType = $(params).val();\n\n                    if (creditCartTypes[ccType] && creditCartTypes[ccType][0]) {\n                        return creditCartTypes[ccType][1].test(value);\n                    }\n                }\n\n                return false;\n            },\n            $.mage.__('Please enter a valid credit card verification number.')\n        ],\n        'validate-cc-ukss': [\n\n            /**\n             * Validate Switch/Solo/Maestro issue number and start date is filled.\n             *\n             * @param {*} value - input field value\n             * @return {*}\n             */\n            function (value) {\n                return value;\n            },\n            $.mage.__('Please enter issue number or start date for switch/solo card type.')\n        ],\n        'validate-length': [\n            function (v, elm) {\n                var reMax = new RegExp(/^maximum-length-[0-9]+$/),\n                    reMin = new RegExp(/^minimum-length-[0-9]+$/),\n                    validator = this,\n                    result = true,\n                    length = 0;\n\n                $.each(elm.className.split(' '), function (index, name) {\n                    if (name.match(reMax) && result) {\n                        length = name.split('-')[2];\n                        result = v.length <= length;\n                        validator.validateMessage =\n                            $.mage.__('Please enter less or equal than %1 symbols.').replace('%1', length);\n                    }\n\n                    if (name.match(reMin) && result && !$.mage.isEmpty(v)) {\n                        length = name.split('-')[2];\n                        result = v.length >= length;\n                        validator.validateMessage =\n                            $.mage.__('Please enter more or equal than %1 symbols.').replace('%1', length);\n                    }\n                });\n\n                return result;\n            }, function () {\n                return this.validateMessage;\n            }\n        ],\n        'required-entry': [\n            function (value) {\n                return !$.mage.isEmpty(value);\n            }, $.mage.__('This is a required field.')\n        ],\n        'not-negative-amount': [\n            function (v) {\n                if (v.length) {\n                    return (/^\\s*\\d+([,.]\\d+)*\\s*%?\\s*$/).test(v);\n                }\n\n                return true;\n            },\n            $.mage.__('Please enter positive number in this field.')\n        ],\n        'validate-per-page-value-list': [\n            function (v) {\n                var isValid = true,\n                    values = v.split(','),\n                    i;\n\n                if ($.mage.isEmpty(v)) {\n                    return isValid;\n                }\n\n                for (i = 0; i < values.length; i++) {\n                    if (!/^[0-9]+$/.test(values[i])) {\n                        isValid = false;\n                    }\n                }\n\n                return isValid;\n            },\n            $.mage.__('Please enter a valid value, ex: 10,20,30')\n        ],\n        'validate-per-page-value': [\n            function (v, elm) {\n                var values;\n\n                if ($.mage.isEmpty(v)) {\n                    return false;\n                }\n                values = $('#' + elm.id + '_values').val().split(',');\n\n                return values.indexOf(v) !== -1;\n            },\n            $.mage.__('Please enter a valid value from list')\n        ],\n        'validate-new-password': [\n            function (v) {\n                if ($.validator.methods['validate-password'] && !$.validator.methods['validate-password'](v)) {\n                    return false;\n                }\n\n                if ($.mage.isEmpty(v) && v !== '') {\n                    return false;\n                }\n\n                return true;\n            },\n            $.mage.__('Please enter 6 or more characters. Leading and trailing spaces will be ignored.')\n        ],\n        'required-if-not-specified': [\n            function (value, element, params) {\n                var valid = false,\n                    alternate = $(params),\n                    alternateValue;\n\n                if (alternate.length > 0) {\n                    valid = this.check(alternate);\n                    // if valid, it may be blank, so check for that\n                    if (valid) {\n                        alternateValue = alternate.val();\n\n                        if (typeof alternateValue == 'undefined' || alternateValue.length === 0) { //eslint-disable-line\n                            valid = false;\n                        }\n                    }\n                }\n\n                if (!valid) {\n                    valid = !this.optional(element);\n                }\n\n                return valid;\n            },\n            $.mage.__('This is a required field.')\n        ],\n        'required-if-all-sku-empty-and-file-not-loaded': [\n            function (value, element, params) {\n                var valid = false,\n                    alternate = $(params.specifiedId),\n                    alternateValue;\n\n                if (alternate.length > 0) {\n                    valid = this.check(alternate);\n                    // if valid, it may be blank, so check for that\n                    if (valid) {\n                        alternateValue = alternate.val();\n\n                        if (typeof alternateValue == 'undefined' || alternateValue.length === 0) { //eslint-disable-line\n                            valid = false;\n                        }\n                    }\n                }\n\n                if (!valid) {\n                    valid = !this.optional(element);\n                }\n\n                $('input[' + params.dataSku + '=true]').each(function () {\n                    if ($(this).val() !== '') {\n                        valid = true;\n                    }\n                });\n\n                return valid;\n            },\n            $.mage.__('Please enter valid SKU key.')\n        ],\n        'required-if-specified': [\n            function (value, element, params) {\n                var valid = true,\n                    dependent = $(params),\n                    dependentValue;\n\n                if (dependent.length > 0) {\n                    valid = this.check(dependent);\n                    // if valid, it may be blank, so check for that\n                    if (valid) {\n                        dependentValue = dependent.val();\n                        valid = typeof dependentValue != 'undefined' && dependentValue.length > 0;\n                    }\n                }\n\n                if (valid) {\n                    valid = !this.optional(element);\n                } else {\n                    valid = true; // dependent was not valid, so don't even check\n                }\n\n                return valid;\n            },\n            $.mage.__('This is a required field.')\n        ],\n        'required-number-if-specified': [\n            function (value, element, params) {\n                var valid = true,\n                    dependent = $(params),\n                    depeValue;\n\n                if (dependent.length) {\n                    valid = this.check(dependent);\n\n                    if (valid) {\n                        depeValue = dependent[0].value;\n                        valid = !!(depeValue && depeValue.length);\n                    }\n                }\n\n                return valid ? !!value.length : true;\n            },\n            $.mage.__('Please enter a valid number.')\n        ],\n        'datetime-validation': [\n            function (value, element) {\n                var isValid = true;\n\n                if ($(element).val().length === 0) {\n                    isValid = false;\n                    $(element).addClass('mage-error');\n                }\n\n                return isValid;\n            },\n            $.mage.__('This is required field')\n        ],\n        'required-text-swatch-entry': [\n            tableSingleValidation,\n            $.mage.__('Admin is a required field in each row.')\n        ],\n        'required-visual-swatch-entry': [\n            tableSingleValidation,\n            $.mage.__('Admin is a required field in each row.')\n        ],\n        'required-dropdown-attribute-entry': [\n            tableSingleValidation,\n            $.mage.__('Admin is a required field in each row.')\n        ],\n        'validate-item-quantity': [\n            function (value, element, params) {\n                var validator = this,\n                    result = false,\n                    // obtain values for validation\n                    qty = $.mage.parseNumber(value),\n                    isMinAllowedValid = typeof params.minAllowed === 'undefined' ||\n                        qty >= $.mage.parseNumber(params.minAllowed),\n                    isMaxAllowedValid = typeof params.maxAllowed === 'undefined' ||\n                        qty <= $.mage.parseNumber(params.maxAllowed),\n                    isQtyIncrementsValid = typeof params.qtyIncrements === 'undefined' ||\n                        resolveModulo(qty, $.mage.parseNumber(params.qtyIncrements)) === 0.0;\n\n                result = qty > 0;\n\n                if (result === false) {\n                    validator.itemQtyErrorMessage = $.mage.__('Please enter a quantity greater than 0.');//eslint-disable-line max-len\n\n                    return result;\n                }\n\n                result = isMinAllowedValid;\n\n                if (result === false) {\n                    validator.itemQtyErrorMessage = $.mage.__('The fewest you may purchase is %1.').replace('%1', params.minAllowed);//eslint-disable-line max-len\n\n                    return result;\n                }\n\n                result = isMaxAllowedValid;\n\n                if (result === false) {\n                    validator.itemQtyErrorMessage = $.mage.__('The maximum you may purchase is %1.').replace('%1', params.maxAllowed);//eslint-disable-line max-len\n\n                    return result;\n                }\n\n                result = isQtyIncrementsValid;\n\n                if (result === false) {\n                    validator.itemQtyErrorMessage = $.mage.__('You can buy this product only in quantities of %1 at a time.').replace('%1', params.qtyIncrements);//eslint-disable-line max-len\n\n                    return result;\n                }\n\n                return result;\n            }, function () {\n                return this.itemQtyErrorMessage;\n            }\n        ],\n        'password-not-equal-to-user-name': [\n            function (value, element, params) {\n                if (typeof params === 'string') {\n                    return value.toLowerCase() !== params.toLowerCase();\n                }\n\n                return true;\n            },\n            $.mage.__('The password can\\'t be the same as the email address. Create a new password and try again.')\n        ]\n    };\n\n    $.each(rules, function (i, rule) {\n        rule.unshift(i);\n        $.validator.addMethod.apply($.validator, rule);\n    });\n    $.validator.addClassRules({\n        'required-option': {\n            required: true\n        },\n        'required-options-count': {\n            required: true\n        },\n        'validate-both-passwords': {\n            'validate-cpassword': true\n        }\n    });\n    $.validator.messages = $.extend($.validator.messages, {\n        required: $.mage.__('This is a required field.'),\n        remote: $.mage.__('Please fix this field.'),\n        email: $.mage.__('Please enter a valid email address.'),\n        url: $.mage.__('Please enter a valid URL.'),\n        date: $.mage.__('Please enter a valid date.'),\n        dateISO: $.mage.__('Please enter a valid date (ISO).'),\n        number: $.mage.__('Please enter a valid number.'),\n        digits: $.mage.__('Please enter only digits.'),\n        creditcard: $.mage.__('Please enter a valid credit card number.'),\n        equalTo: $.mage.__('Please enter the same value again.'),\n        maxlength: $.validator.format($.mage.__('Please enter no more than {0} characters.')),\n        minlength: $.validator.format($.mage.__('Please enter at least {0} characters.')),\n        rangelength: $.validator.format($.mage.__('Please enter a value between {0} and {1} characters long.')),\n        range: $.validator.format($.mage.__('Please enter a value between {0} and {1}.')),\n        max: $.validator.format($.mage.__('Please enter a value less than or equal to {0}.')),\n        min: $.validator.format($.mage.__('Please enter a value greater than or equal to {0}.'))\n    });\n\n    if ($.metadata) {\n        // Setting the type as html5 to enable data-validate attribute\n        $.metadata.setType('html5');\n    }\n\n    showLabel = $.validator.prototype.showLabel;\n    $.extend(true, $.validator.prototype, {\n        /**\n         * @param {*} element\n         * @param {*} message\n         */\n        showLabel: function (element, message) {\n            var label, elem;\n\n            showLabel.call(this, element, message);\n\n            // ARIA (adding aria-invalid & aria-describedby)\n            label = this.errorsFor(element);\n            elem = $(element);\n\n            if (!label.attr('id')) {\n                label.attr('id', this.idOrName(element) + '-error');\n            }\n            elem.attr('aria-invalid', 'true')\n                .attr('aria-describedby', label.attr('id'));\n        }\n    });\n\n    /**\n     * Validate form field without instantiating validate plug-in.\n     *\n     * @param {Element|String} element - DOM element or selector\n     * @return {Boolean} validation result\n     */\n    $.validator.validateElement = function (element) {\n        var form, validator, valid, classes;\n\n        element = $(element);\n        form = element.get(0).form;\n        validator = form ? $(form).data('validator') : null;\n\n        if (validator) {\n            return validator.element(element.get(0));\n        }\n        valid = true;\n        classes = element.prop('class').split(' ');\n        $.each(classes, $.proxy(function (i, className) {\n            if (this.methods[className] && !this.methods[className](element.val(), element.get(0))) {\n                valid = false;\n\n                return valid;\n            }\n        }, this));\n\n        return valid;\n    };\n\n    originValidateDelegate = $.fn.validateDelegate;\n\n    /**\n     * @return {*}\n     */\n    $.fn.validateDelegate = function () {\n        if (!this[0].form) {\n            return this;\n        }\n\n        return originValidateDelegate.apply(this, arguments);\n    };\n\n    /**\n     * Validate single element.\n     *\n     * @param {Element} element\n     * @param {Object} config\n     * @returns {*}\n     */\n    $.validator.validateSingleElement = function (element, config) {\n        var errors = {},\n            valid = true,\n            validateConfig = {\n                errorElement: 'label',\n                ignore: '.ignore-validate',\n                hideError: false\n            },\n            form, validator, classes, elementValue;\n\n        $.extend(validateConfig, config);\n        element = $(element).not(validateConfig.ignore);\n\n        if (!element.length) {\n            return true;\n        }\n\n        form = element.get(0).form;\n        validator = form ? $(form).data('validator') : null;\n\n        if (validator) {\n            return validator.element(element.get(0));\n        }\n\n        classes = element.prop('class').split(' ');\n        validator = element.parent().data('validator') ||\n            $.mage.validation(validateConfig, element.parent()).validate;\n\n        element.removeClass(validator.settings.errorClass);\n        validator.toHide = validator.toShow;\n        validator.hideErrors();\n        validator.toShow = validator.toHide = $([]);\n\n        $.each(classes, $.proxy(function (i, className) {\n            elementValue = element.val();\n\n            if (element.is(':checkbox') || element.is(':radio')) {\n                elementValue = element.is(':checked') || null;\n            }\n\n            if (this.methods[className] && !this.methods[className](elementValue, element.get(0))) {\n                valid = false;\n                errors[element.get(0).name] = this.messages[className];\n                validator.invalid[element.get(0).name] = true;\n\n                if (!validateConfig.hideError) {\n                    validator.showErrors(errors);\n                }\n\n                return valid;\n            }\n        }, this));\n\n        return valid;\n    };\n\n    $.widget('mage.validation', {\n        options: {\n            meta: 'validate',\n            onfocusout: false,\n            onkeyup: false,\n            onclick: false,\n            ignoreTitle: true,\n            errorClass: 'mage-error',\n            errorElement: 'div',\n\n            /**\n             * @param {*} error\n             * @param {*} element\n             */\n            errorPlacement: function (error, element) {\n                var errorPlacement = element,\n                    fieldWrapper;\n\n                // logic for date-picker error placement\n                if (element.hasClass('_has-datepicker')) {\n                    errorPlacement = element.siblings('button');\n                }\n                // logic for field wrapper\n                fieldWrapper = element.closest('.addon');\n\n                if (fieldWrapper.length) {\n                    errorPlacement = fieldWrapper.after(error);\n                }\n                //logic for checkboxes/radio\n                if (element.is(':checkbox') || element.is(':radio')) {\n                    errorPlacement = element.parents('.control').children().last();\n\n                    //fallback if group does not have .control parent\n                    if (!errorPlacement.length) {\n                        errorPlacement = element.siblings('label').last();\n                    }\n                }\n                //logic for control with tooltip\n                if (element.siblings('.tooltip').length) {\n                    errorPlacement = element.siblings('.tooltip');\n                }\n                //logic for select with tooltip in after element\n                if (element.next().find('.tooltip').length) {\n                    errorPlacement = element.next();\n                }\n                errorPlacement.after(error);\n            }\n        },\n\n        /**\n         * Check if form pass validation rules without submit.\n         *\n         * @return boolean\n         */\n        isValid: function () {\n            return this.element.valid();\n        },\n\n        /**\n         * Remove validation error messages\n         */\n        clearError: function () {\n            if (arguments.length) {\n                $.each(arguments, $.proxy(function (index, item) {\n                    this.validate.prepareElement(item);\n                    this.validate.hideErrors();\n                }, this));\n            } else {\n                this.validate.resetForm();\n            }\n        },\n\n        /**\n         * Validation creation.\n         *\n         * @protected\n         */\n        _create: function () {\n            this.validate = this.element.validate(this.options);\n\n            // ARIA (adding aria-required attribute)\n            this.element\n                .find('.field.required')\n                .find('.control')\n                .find('input, select, textarea')\n                .attr('aria-required', 'true');\n            this.element\n                .find('.field.additional')\n                .find('.control')\n                .find('input, select, textarea')\n                .removeAttr('aria-required');\n            this._listenFormValidate();\n        },\n\n        /**\n         * Validation listening.\n         *\n         * @protected\n         */\n        _listenFormValidate: function () {\n            $('form').on('invalid-form.validate', this.listenFormValidateHandler);\n        },\n\n        /**\n         * Handle form validation. Focus on first invalid form field.\n         *\n         * @param {jQuery.Event} event\n         * @param {Object} validation\n         */\n        listenFormValidateHandler: function (event, validation) {\n            var firstActive = $(validation.errorList[0].element || []),\n                lastActive = $(validation.findLastActive() ||\n                    validation.errorList.length && validation.errorList[0].element || []),\n                windowHeight = $(window).height(),\n                parent, successList;\n\n            if (lastActive.is(':hidden')) {\n                parent = lastActive.parent();\n                $('html, body').animate({\n                    scrollTop: parent.offset().top - windowHeight / 2\n                });\n            }\n\n            // ARIA (removing aria attributes if success)\n            successList = validation.successList;\n\n            if (successList.length) {\n                $.each(successList, function () {\n                    $(this)\n                        .removeAttr('aria-describedby')\n                        .removeAttr('aria-invalid');\n                });\n            }\n\n            if (firstActive.length) {\n                $('html, body').stop().animate({\n                    scrollTop: firstActive.parent().offset().top - windowHeight / 2\n                });\n                firstActive.trigger('focus');\n            }\n        }\n    });\n\n    return $.mage.validation;\n});\n"}
}});