From 993c70dbd9aea4ff9cc04d51840193d8f7820b0f Mon Sep 17 00:00:00 2001 From: Jarred Sumner Date: Mon, 15 Feb 2021 22:24:45 -0800 Subject: [PATCH] Can't gurantee current dir is writable --- bin/git-peek | 2 +- bin/git-peek.map | 2 +- bin/registerProtocol.js | 36 ++++++++++++++++++------------------ bin/registerProtocol.js.map | 6 +++--- src/registerProtocol.mac.ts | 9 ++++++--- 5 files changed, 29 insertions(+), 26 deletions(-) diff --git a/bin/git-peek b/bin/git-peek index 2555778..00e775b 100755 --- a/bin/git-peek +++ b/bin/git-peek @@ -31,7 +31,7 @@ See: https://github.com/isaacs/node-glob/issues/167`);if(!(this instanceof be))r `).join(` `+s),t.push(n+"m+"+ge.humanize(this.diff)+"")}else t[0]=kP()+e+" "+t[0]}function kP(){return ge.inspectOpts.hideDate?"":new Date().toISOString()+" "}function IP(){return process.stderr.write(Oa.format.apply(Oa,arguments)+` `)}function DP(t){t==null?delete process.env.DEBUG:process.env.DEBUG=t}function pS(){return process.env.DEBUG}function NP(t){t.inspectOpts={};for(var e=Object.keys(ge.inspectOpts),r=0;r{typeof process=="undefined"||process.type==="renderer"?Df.exports=oS():Df.exports=dS()});var gS=d((l6,mS)=>{function St(t,e){typeof e=="boolean"&&(e={forever:e}),this._originalTimeouts=JSON.parse(JSON.stringify(t)),this._timeouts=t,this._options=e||{},this._maxRetryTime=e&&e.maxRetryTime||Infinity,this._fn=null,this._errors=[],this._attempts=1,this._operationTimeout=null,this._operationTimeoutCb=null,this._timeout=null,this._operationStart=null,this._options.forever&&(this._cachedTimeouts=this._timeouts.slice(0))}mS.exports=St;St.prototype.reset=function(){this._attempts=1,this._timeouts=this._originalTimeouts};St.prototype.stop=function(){this._timeout&&clearTimeout(this._timeout),this._timeouts=[],this._cachedTimeouts=null};St.prototype.retry=function(t){if(this._timeout&&clearTimeout(this._timeout),!t)return!1;var e=new Date().getTime();if(t&&e-this._operationStart>=this._maxRetryTime)return this._errors.unshift(new Error("RetryOperation timeout occurred")),!1;this._errors.push(t);var r=this._timeouts.shift();if(r===void 0)if(this._cachedTimeouts)this._errors.splice(this._errors.length-1,this._errors.length),this._timeouts=this._cachedTimeouts.slice(0),r=this._timeouts.shift();else return!1;var i=this,n=setTimeout(function(){i._attempts++,i._operationTimeoutCb&&(i._timeout=setTimeout(function(){i._operationTimeoutCb(i._attempts)},i._operationTimeout),i._options.unref&&i._timeout.unref()),i._fn(i._attempts)},r);return this._options.unref&&n.unref(),!0};St.prototype.attempt=function(t,e){this._fn=t,e&&(e.timeout&&(this._operationTimeout=e.timeout),e.cb&&(this._operationTimeoutCb=e.cb));var r=this;this._operationTimeoutCb&&(this._timeout=setTimeout(function(){r._operationTimeoutCb()},r._operationTimeout)),this._operationStart=new Date().getTime(),this._fn(this._attempts)};St.prototype.try=function(t){console.log("Using RetryOperation.try() is deprecated"),this.attempt(t)};St.prototype.start=function(t){console.log("Using RetryOperation.start() is deprecated"),this.attempt(t)};St.prototype.start=St.prototype.try;St.prototype.errors=function(){return this._errors};St.prototype.attempts=function(){return this._attempts};St.prototype.mainError=function(){if(this._errors.length===0)return null;for(var t={},e=null,r=0,i=0;i=r&&(e=n,r=o)}return e}});var yS=d(fi=>{var qP=gS();fi.operation=function(t){var e=fi.timeouts(t);return new qP(e,{forever:t&&t.forever,unref:t&&t.unref,maxRetryTime:t&&t.maxRetryTime})};fi.timeouts=function(t){if(t instanceof Array)return[].concat(t);var e={retries:10,factor:2,minTimeout:1*1e3,maxTimeout:Infinity,randomize:!1};for(var r in t)e[r]=t[r];if(e.minTimeout>e.maxTimeout)throw new Error("minTimeout is greater than maxTimeout");for(var i=[],n=0;n{vS.exports=yS()});var ES=d((p6,bS)=>{var jP=kf();function $P(t,e){function r(i,n){var s=e||{};"randomize"in s||(s.randomize=!0);var o=jP.operation(s);function a(l){n(l||new Error("Aborted"))}function u(l,f){if(l.bail){a(l);return}o.retry(l)?s.onRetry&&s.onRetry(l,f):n(o.mainError())}function c(l){var f;try{f=t(a,l)}catch(h){u(h,l);return}Promise.resolve(f).then(i).catch(function(y){u(y,l)})}o.attempt(c)}return new Promise(r)}bS.exports=$P});var OS=d((qf,wS)=>{var MP=ES(),SS=Ff()("fetch-retry"),BP=10,UP=5,GP=20,zP=6;wS.exports=qf=HP;function WP(t){return t?t.code==="ERR_UNESCAPED_CHARACTERS"||t.message==="Request path contains unescaped characters":!1}function HP(t){t||(t=ys());async function e(r,i={}){let n=Object.assign({minTimeout:BP,retries:UP,factor:zP,maxRetryAfter:GP},i.retry);i.onRetry&&(n.onRetry=s=>{i.onRetry(s,i),i.retry&&i.retry.onRetry&&i.retry.onRetry(s)});try{return await MP(async(s,o)=>{let{method:a="GET"}=i;try{let u=await t(r,i);if(SS("status %d",u.status),u.status>=500&&u.status<600||u.status===429){let c=parseInt(u.headers.get("retry-after"),10);if(c){if(c>n.maxRetryAfter)return u;await new Promise(l=>setTimeout(l,c*1e3))}throw new hn(u)}else return u}catch(u){let c=WP(u),l=!c&&o<=n.retries;if(SS(`${a} ${r} error (status = ${u.status}). ${l?"retrying":""}`,u),c)return s(u);throw u}},n)}catch(s){if(s instanceof hn)return s.res;throw s}}for(let r of Object.keys(t))e[r]=t[r];return e.default=e,e}var hn=class extends Error{constructor(e){super(e.statusText);Error.captureStackTrace&&Error.captureStackTrace(this,hn),this.name=this.constructor.name,this.res=e,this.code=this.status=this.statusCode=e.status,this.url=e.url}};qf.ResponseError=hn});var _S=d((d6,RS)=>{"use strict";RS.exports=function(t){t.prototype[Symbol.iterator]=function*(){for(let e=this.head;e;e=e.next)yield e.value}}});var AS=d((m6,CS)=>{"use strict";CS.exports=K;K.Node=hi;K.create=K;function K(t){var e=this;if(e instanceof K||(e=new K),e.tail=null,e.head=null,e.length=0,t&&typeof t.forEach=="function")t.forEach(function(n){e.push(n)});else if(arguments.length>0)for(var r=0,i=arguments.length;r1)r=e;else if(this.head)i=this.head.next,r=this.head.value;else throw new TypeError("Reduce of empty list with no initial value");for(var n=0;i!==null;n++)r=t(r,i.value,n),i=i.next;return r};K.prototype.reduceReverse=function(t,e){var r,i=this.tail;if(arguments.length>1)r=e;else if(this.tail)i=this.tail.prev,r=this.tail.value;else throw new TypeError("Reduce of empty list with no initial value");for(var n=this.length-1;i!==null;n--)r=t(r,i.value,n),i=i.prev;return r};K.prototype.toArray=function(){for(var t=new Array(this.length),e=0,r=this.head;r!==null;e++)t[e]=r.value,r=r.next;return t};K.prototype.toArrayReverse=function(){for(var t=new Array(this.length),e=0,r=this.tail;r!==null;e++)t[e]=r.value,r=r.prev;return t};K.prototype.slice=function(t,e){e=e||this.length,e<0&&(e+=this.length),t=t||0,t<0&&(t+=this.length);var r=new K;if(ethis.length&&(e=this.length);for(var i=0,n=this.head;n!==null&&ithis.length&&(e=this.length);for(var i=this.length,n=this.tail;n!==null&&i>e;i--)n=n.prev;for(;n!==null&&i>t;i--,n=n.prev)r.push(n.value);return r};K.prototype.splice=function(t,e){t>this.length&&(t=this.length-1),t<0&&(t=this.length+t);for(var r=0,i=this.head;i!==null&&r{"use strict";var KP=AS(),pi=Symbol("max"),or=Symbol("length"),pn=Symbol("lengthCalculator"),Ss=Symbol("allowStale"),di=Symbol("maxAge"),ar=Symbol("dispose"),LS=Symbol("noDisposeOnSet"),Ae=Symbol("lruList"),At=Symbol("cache"),xS=Symbol("updateAgeOnGet"),jf=()=>1,NS=class{constructor(e){if(typeof e=="number"&&(e={max:e}),e||(e={}),e.max&&(typeof e.max!="number"||e.max<0))throw new TypeError("max must be a non-negative number");let r=this[pi]=e.max||Infinity,i=e.length||jf;if(this[pn]=typeof i!="function"?jf:i,this[Ss]=e.stale||!1,e.maxAge&&typeof e.maxAge!="number")throw new TypeError("maxAge must be a number");this[di]=e.maxAge||0,this[ar]=e.dispose,this[LS]=e.noDisposeOnSet||!1,this[xS]=e.updateAgeOnGet||!1,this.reset()}set max(e){if(typeof e!="number"||e<0)throw new TypeError("max must be a non-negative number");this[pi]=e||Infinity,Os(this)}get max(){return this[pi]}set allowStale(e){this[Ss]=!!e}get allowStale(){return this[Ss]}set maxAge(e){if(typeof e!="number")throw new TypeError("maxAge must be a non-negative number");this[di]=e,Os(this)}get maxAge(){return this[di]}set lengthCalculator(e){typeof e!="function"&&(e=jf),e!==this[pn]&&(this[pn]=e,this[or]=0,this[Ae].forEach(r=>{r.length=this[pn](r.value,r.key),this[or]+=r.length})),Os(this)}get lengthCalculator(){return this[pn]}get length(){return this[or]}get itemCount(){return this[Ae].length}rforEach(e,r){r=r||this;for(let i=this[Ae].tail;i!==null;){let n=i.prev;PS(this,e,i,r),i=n}}forEach(e,r){r=r||this;for(let i=this[Ae].head;i!==null;){let n=i.next;PS(this,e,i,r),i=n}}keys(){return this[Ae].toArray().map(e=>e.key)}values(){return this[Ae].toArray().map(e=>e.value)}reset(){this[ar]&&this[Ae]&&this[Ae].length&&this[Ae].forEach(e=>this[ar](e.key,e.value)),this[At]=new Map,this[Ae]=new KP,this[or]=0}dump(){return this[Ae].map(e=>Ra(this,e)?!1:{k:e.key,v:e.value,e:e.now+(e.maxAge||0)}).toArray().filter(e=>e)}dumpLru(){return this[Ae]}set(e,r,i){if(i=i||this[di],i&&typeof i!="number")throw new TypeError("maxAge must be a number");let n=i?Date.now():0,s=this[pn](r,e);if(this[At].has(e)){if(s>this[pi])return dn(this,this[At].get(e)),!1;let u=this[At].get(e).value;return this[ar]&&(this[LS]||this[ar](e,u.value)),u.now=n,u.maxAge=i,u.value=r,this[or]+=s-u.length,u.length=s,this.get(e),Os(this),!0}let o=new IS(e,r,s,n,i);return o.length>this[pi]?(this[ar]&&this[ar](e,r),!1):(this[or]+=o.length,this[Ae].unshift(o),this[At].set(e,this[Ae].head),Os(this),!0)}has(e){if(!this[At].has(e))return!1;let r=this[At].get(e).value;return!Ra(this,r)}get(e){return $f(this,e,!0)}peek(e){return $f(this,e,!1)}pop(){let e=this[Ae].tail;return e?(dn(this,e),e.value):null}del(e){dn(this,this[At].get(e))}load(e){this.reset();let r=Date.now();for(let i=e.length-1;i>=0;i--){let n=e[i],s=n.e||0;if(s===0)this.set(n.k,n.v);else{let o=s-r;o>0&&this.set(n.k,n.v,o)}}}prune(){this[At].forEach((e,r)=>$f(this,r,!1))}},$f=(t,e,r)=>{let i=t[At].get(e);if(i){let n=i.value;if(Ra(t,n)){if(dn(t,i),!t[Ss])return}else r&&(t[xS]&&(i.value.now=Date.now()),t[Ae].unshiftNode(i));return n.value}},Ra=(t,e)=>{if(!e||!e.maxAge&&!t[di])return!1;let r=Date.now()-e.now;return e.maxAge?r>e.maxAge:t[di]&&r>t[di]},Os=t=>{if(t[or]>t[pi])for(let e=t[Ae].tail;t[or]>t[pi]&&e!==null;){let r=e.prev;dn(t,e),e=r}},dn=(t,e)=>{if(e){let r=e.value;t[ar]&&t[ar](r.key,r.value),t[or]-=r.length,t[At].delete(r.key),t[Ae].removeNode(e)}},IS=class{constructor(e,r,i,n,s){this.key=e,this.value=r,this.length=i,this.now=n,this.maxAge=s||0}},PS=(t,e,r,i)=>{let n=r.value;Ra(t,n)&&(dn(t,r),t[Ss]||(n=void 0)),n&&e.call(i,n.value,n.key,t)};TS.exports=NS});var kS=d((y6,FS)=>{var ZP=kf();function JP(t,e){function r(i,n){var s=e||{},o=ZP.operation(s);function a(l){n(l||new Error("Aborted"))}function u(l,f){if(l.bail){a(l);return}o.retry(l)?s.onRetry&&s.onRetry(l,f):n(o.mainError())}function c(l){var f;try{f=t(a,l)}catch(h){u(h,l);return}Promise.resolve(f).then(i).catch(function(y){u(y,l)})}o.attempt(c)}return new Promise(r)}FS.exports=JP});var qS=d(Mf=>{"use strict";Object.defineProperty(Mf,"__esModule",{value:!0});function QP(t,e){return new Promise((r,i)=>{e.resolve4(t,{ttl:!0},(n,s)=>{if(n)return i(n);r(s)})})}Mf.default=QP});var jS=d(Bf=>{"use strict";Object.defineProperty(Bf,"__esModule",{value:!0});function eD(t,e){return new Promise((r,i)=>{e.resolve6(t,{ttl:!0},(n,s)=>{if(n)return i(n);r(s)})})}Bf.default=eD});var zS=d(mn=>{"use strict";var Rs=mn&&mn.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(mn,"__esModule",{value:!0});var tD=Rs(require("dns")),$S=Rs(DS()),rD=Rs(kS()),iD=Rs(qS()),nD=Rs(jS()),MS={max:500},BS,US;GS();async function sD(t,e={}){let{ipv6:r=!1,minimumCacheTime:i=300,refreshCache:n=!1,retryOpts:s={minTimeout:10,retries:3,factor:5},resolver:o=tD.default}=e,{cache:a,resolve:u}=r?{cache:US,resolve:nD.default}:{cache:BS,resolve:iD.default};if(n)a.del(t);else{let l=a.get(t);if(l)return await l}let c=(async()=>{let l=await rD.default(()=>u(t,o),s),f=l[Math.floor(Math.random()*l.length)],h=Math.max(f.ttl,i);return a.set(t,f.address,h*1e3),f.address})();return a.set(t,c,5e3),c}mn.default=sD;function GS(){BS=new $S.default(MS),US=new $S.default(MS)}mn.setupCache=GS});var HS=d(Uf=>{"use strict";Object.defineProperty(Uf,"__esModule",{value:!0});var oD=zS();Uf.default=oD.default});var VS=d(WS=>{WS.dnsCachedUrl=Symbol("dnsCachedUrl")});var ZS=d((O6,YS)=>{var{isIP:aD}=require("net"),{format:XS,parse:KS}=require("url"),uD=HS().default,{dnsCachedUrl:cD}=VS();YS.exports=lD;var fD=t=>(t/100|0)==3;function lD(t){t||(t=ys());let{Headers:e}=t;async function r(i,n){let s=KS(i),o=s.host;aD(s.hostname)===0&&(n||(n={}),n.headers=new e(n.headers),n.headers.has("Host")||n.headers.set("Host",s.host),n.redirect="manual",s.host=await uD(s.hostname),s.port&&(s.host+=`:${s.port}`),i=XS(s));let u=await t(i,n);if(u[cD]=i,Object.defineProperty(u,"url",{get(){return s.href}}),fD(u.status)){let c=Object.assign({},n);c.headers=new e(n.headers),(u.status===303||(u.status===301||u.status===302)&&n.method==="POST")&&(c.method="GET",c.body=null,c.headers.delete("content-length"));let l=u.headers.get("Location"),f=KS(l);return f.host===s.host&&(f.host=o),c.headers.set("Host",f.host),n.onRedirect&&n.onRedirect(u,c),r(XS(f),c)}return u}for(let i of Object.keys(t))r[i]=t[i];return r.default=r,r}});var i2=d((R6,JS)=>{var{parse:hD}=require("url"),QS=eS(),Gf=Ff()("@vercel/fetch"),pD=OS(),dD=ZS(),mD=require("url"),{HttpsAgent:gD}=QS,{URLSearchParams:yD}=mD,vD={maxSockets:200,maxFreeSockets:20,timeout:6e4,freeSocketTimeout:3e4,freeSocketKeepAliveTimeout:3e4},e2,t2;function bD(t){return e2=e2||(Gf("init http agent"),new QS(t))}function ED(t){return t2=t2||(Gf("init https agent"),new gD(t))}function r2(t,e){return/^https/.test(t)?ED(e):bD(e)}function wD(t,e={}){return async function(i,n={}){n.agent||(n.agent=r2(i,{AGENT_OPTIONS:vD,...e})),n.redirect="manual",n.headers=new t.Headers(n.headers),n.headers.set("host",n.headers.get("host")||hD(i).host),n.body&&!(n.body instanceof yD)&&typeof n.body=="object"&&!Buffer.isBuffer(n.body)&&(n.body=JSON.stringify(n.body),n.headers.set("Content-Type","application/json"),n.headers.set("Content-Length",Buffer.byteLength(n.body))),n.onRedirect=(s,o)=>{o.agent=r2(s.headers.get("Location"))};try{return Gf("%s %s",n.method||"GET",i),await t(i,n)}catch(s){throw s.url=i,s.opts=n,s}}}function SD(t,e){t||(t=ys());let r=t.default;if(r&&(t=Object.assign((...i)=>r(...i),r,t)),typeof t!="function")throw new Error("fetch() argument isn't a function; did you forget to initialize your `@vercel/fetch` import?");return t=dD(t),t=pD(t),t=wD(t,e),t}JS.exports=SD});var c2=d((C6,s2)=>{s2.exports=o2;o2.sync=RD;var a2=require("fs");function _D(t,e){var r=e.pathExt!==void 0?e.pathExt:process.env.PATHEXT;if(!r||(r=r.split(";"),r.indexOf("")!==-1))return!0;for(var i=0;i{l2.exports=f2;f2.sync=CD;var h2=require("fs");function f2(t,e,r){h2.stat(t,function(i,n){r(i,i?!1:p2(n,e))})}function CD(t,e){return p2(h2.statSync(t),e)}function p2(t,e){return t.isFile()&&AD(t,e)}function AD(t,e){var r=t.mode,i=t.uid,n=t.gid,s=e.uid!==void 0?e.uid:process.getuid&&process.getuid(),o=e.gid!==void 0?e.gid:process.getgid&&process.getgid(),a=parseInt("100",8),u=parseInt("010",8),c=parseInt("001",8),l=a|u,f=r&c||r&u&&n===o||r&a&&i===s||r&l&&s===0;return f}});var g2=d((L6,m2)=>{var T6=require("fs"),_a;process.platform==="win32"||global.TESTING_WINDOWS?_a=c2():_a=d2();m2.exports=Hf;Hf.sync=TD;function Hf(t,e,r){if(typeof e=="function"&&(r=e,e={}),!r){if(typeof Promise!="function")throw new TypeError("callback not provided");return new Promise(function(i,n){Hf(t,e||{},function(s,o){s?n(s):i(o)})})}_a(t,e||{},function(i,n){i&&(i.code==="EACCES"||e&&e.ignoreErrors)&&(i=null,n=!1),r(i,n)})}function TD(t,e){try{return _a.sync(t,e||{})}catch(r){if(e&&e.ignoreErrors||r.code==="EACCES")return!1;throw r}}});var O2=d((x6,y2)=>{var gn=process.platform==="win32"||process.env.OSTYPE==="cygwin"||process.env.OSTYPE==="msys",v2=require("path"),LD=gn?";":":",b2=g2(),E2=t=>Object.assign(new Error(`not found: ${t}`),{code:"ENOENT"}),w2=(t,e)=>{let r=e.colon||LD,i=t.match(/\//)||gn&&t.match(/\\/)?[""]:[...gn?[process.cwd()]:[],...(e.path||process.env.PATH||"").split(r)],n=gn?e.pathExt||process.env.PATHEXT||".EXE;.CMD;.BAT;.COM":"",s=gn?n.split(r):[""];return gn&&t.indexOf(".")!==-1&&s[0]!==""&&s.unshift(""),{pathEnv:i,pathExt:s,pathExtExe:n}},S2=(t,e,r)=>{typeof e=="function"&&(r=e,e={}),e||(e={});let{pathEnv:i,pathExt:n,pathExtExe:s}=w2(t,e),o=[],a=c=>new Promise((l,f)=>{if(c===i.length)return e.all&&o.length?l(o):f(E2(t));let h=i[c],y=/^".*"$/.test(h)?h.slice(1,-1):h,m=v2.join(y,t),p=!y&&/^\.[\\\/]/.test(t)?t.slice(0,2)+m:m;l(u(p,c,0))}),u=(c,l,f)=>new Promise((h,y)=>{if(f===n.length)return h(a(l+1));let m=n[f];b2(c+m,{pathExt:s},(p,E)=>{if(!p&&E)if(e.all)o.push(c+m);else return h(c+m);return h(u(c,l,f+1))})});return r?a(0).then(c=>r(null,c),r):a(0)},xD=(t,e)=>{e=e||{};let{pathEnv:r,pathExt:i,pathExtExe:n}=w2(t,e),s=[];for(let o=0;o{var ND=require("fs"),ID=require("path");function R2(t){console.log(`[dotenv][DEBUG] ${t}`)}var PD=` -`,DD=/^\s*([\w.-]+)\s*=\s*(.*)?\s*$/,FD=/\\n/g,kD=/\n|\r|\r\n/;function _2(t,e){let r=Boolean(e&&e.debug),i={};return t.toString().split(kD).forEach(function(n,s){let o=n.match(DD);if(o!=null){let a=o[1],u=o[2]||"",c=u.length-1,l=u[0]==='"'&&u[c]==='"';u[0]==="'"&&u[c]==="'"||l?(u=u.substring(1,c),l&&(u=u.replace(FD,PD))):u=u.trim(),i[a]=u}else r&&R2(`did not match key and value when parsing line ${s+1}: ${n}`)}),i}function qD(t){let e=ID.resolve(process.cwd(),".env"),r="utf8",i=!1;t&&(t.path!=null&&(e=t.path),t.encoding!=null&&(r=t.encoding),t.debug!=null&&(i=!0));try{let n=_2(ND.readFileSync(e,{encoding:r}),{debug:i});return Object.keys(n).forEach(function(s){Object.prototype.hasOwnProperty.call(process.env,s)?i&&R2(`"${s}" is already defined in \`process.env\` and will not be overwritten`):process.env[s]=n[s]}),{parsed:n}}catch(n){return{error:n}}}Wf.exports.config=qD;Wf.exports.parse=_2});var A2=d(Ca=>{"use strict";var jD=Ca&&Ca.__awaiter||function(t,e,r,i){return new(r||(r=Promise))(function(n,s){function o(c){try{u(i.next(c))}catch(l){s(l)}}function a(c){try{u(i.throw(c))}catch(l){s(l)}}function u(c){var l;c.done?n(c.value):(l=c.value,l instanceof r?l:new r(function(f){f(l)})).then(o,a)}u((i=i.apply(t,e||[])).next())})};Object.defineProperty(Ca,"__esModule",{value:!0}),Promise.any=t=>jD(void 0,void 0,void 0,function*(){return new Promise((e,r)=>{let i=!1,n=0,s=[],o=u=>{i||(i=!0,e(u))},a=u=>{s.push(u),s.length>=n&&r(s)};for(let u of t)if(n++,u.then!==void 0){let c=u;c.then(l=>o(l)),u.catch!==void 0&&c.catch(l=>a(l))}})})});var L2=d((P6,T2)=>{T2.exports={name:"@jarred/git-peek",version:"1.3.9",author:"Jarred Sumner @Jarred-Sumner",description:"Quickly preview remote Git repositories in your local editor",bin:{"git-peek":"bin/git-peek"},bugs:"https://github.com/Jarred-Sumner/git-peek/issues",devDependencies:{"@types/js-yaml":"^4.0.0","@types/lodash":"^4.14.168","@types/lodash-es":"^4.17.4","@types/node":"latest","@types/rimraf":"^3.0.0","@types/tar":"^4.0.4","@types/tmp":"^0.2.0","@vercel/fetch":"^6.1.0",chalk:"^4.1.0",dotenv:"^8.2.0","dotenv-cli":"^4.0.0",esbuild:"^0.8.43","git-url-parse":"^11.4.4",ink:"^3.0.8","ink-select-input":"^4.2.0","ink-text-input":"^4.0.1",keypress:"^0.2.1","lodash-es":"^4.17.20",meow:"^9.0.0","node-fetch":"^2.6.1","normalize-git-url":"^3.0.2","open-editor":"^3.0.0",pkg:"^4.4.9",pnpm:"^5.17.2","promise-any-polyfill":"^0.1.2",qs:"^6.9.6",react:"^17.0.1","register-url-windows":"1.0.24","release-it":"*",rimraf:"^3.0.2","simple-plist":"^1.1.1",swr:"^0.4.2",tar:"^6.1.0",tmp:"^0.2.1",typescript:"beta",which:"^2.0.2"},engines:{node:">=10.0.0"},files:["bin/git-peek","bin/git-peek-win32.exe","bin/confirmPrompt.js","bin/Search.js","bin/registerProtocol.js"],homepage:"https://github.com/Jarred-Sumner/git-peek",keywords:["git-peek","git","github","preview git","editor","peek","clone","fetch","github-api","github-client","pull","git-pull","git pull","open-editor","open-in","open-in-editor","open"],license:"MIT",main:"lib/index.js",repository:"Jarred-Sumner/git-peek",scripts:{build:"node build.js",test:"echo NO TESTS",reinstall:"npm uninstall -g @jarred/git-peek; npm install -g jarred-git-peek-1.3.5.tgz",release:"dotenv release-it",bt:"pnpm build && git-peek Jarred-Sumner/git-peek","copy-win32":"cp win32/git-peek-windows-launcher/git-peek-windows-launcher/git-peek-windows-launcher/bin/net5.0/win-x64/publish/git-peek-win32.exe bin/git-peek-win32.exe","pkg-mac":"pkg --public --options='no-warnings' -t 'node14-macos-x64' ./pkgbin/git-peek -o ./brew/git-peek-macOS","pkg-windows":"pkg --public --options='no-warnings' -t 'node14-windows-x64' ./pkgbin/git-peek -o ./brew/git-peek.exe","pkg-all":"pnpm pkg-mac; pnpm pkg-windows",prerelease:"pnpm pkg-all","build-cs":"dotnet publish -c Release --self-contained false"},"release-it":{git:{requireCleanWorkingDir:!1},github:{release:!0,assets:["./brew/git-peek-macOS","./brew/git-peek.exe"]}}}});var mi=Te(require("child_process")),Ir=Te(require("fs")),x2=Te(Nh()),N2=Te(vv()),ut=Te(require("path"));function mx(){var t,e,r;return((r=(e=(t=process.env.GITHUB_TOKEN)==null?void 0:t.trim())==null?void 0:e.length)!=null?r:0)?process.env.GITHUB_TOKEN.trim():null}var vc;function bv(){return typeof vc=="undefined"&&(vc=mx()),vc}var I2=Te(lE()),P2=Te(Lw());var OD=Te(ys()),n2=Te(i2()),zf=n2.default(OD);var D2=Te(O2()),F2=Te(C2()),Aa=Te(ya()),$D=ut.default.join(__dirname,"Search"),MD=ut.default.join(__dirname,"registerProtocol"),BD=ut.default.join(__dirname,"confirmPrompt");function UD(t){return new Promise((e,r)=>setTimeout(e,t))}var ur=!1,GD=process.platform==="win32"?ut.default.join(process.env.HOMEDRIVE,process.env.HOMEPATH):process.env.HOME,Vf=ut.default.join(GD,".git-peek"),k2=["code","subl","code-insiders","vim","vi"],cr=!1,k6=console.log,q2=(...t)=>{ur||console.error(...t)};if(!Ir.default.rmSync){let t=ya();Ir.default.rmSync=(e,r)=>{if(e!=="/"&&e!=="/Applications")return t.sync(e)}}async function j2(t,e){var i;let r=!t||t==="auto"?process.env.EDITOR:t;if(!(r==null?void 0:r.trim().length))for(let n of k2)try{r=await D2.default(n),(r.includes("code")||r.includes("subl"))&&(r='"'+r+'"');break}catch(s){}return(!r||!((i=r==null?void 0:r.trim())==null?void 0:i.length))&&(e||console.warn("No editor detected, defaulting to Visual Studio Code. Set an editor with the -e flag"),r="code"),r}var $2=Ir.default.existsSync(Vf);typeof Promise.any!="function"&&A2();var Ve;(function(t){t[t.childProcessExit=0]="childProcessExit",t[t.downloadComplete=1]="downloadComplete",t[t.confirm=2]="confirm"})(Ve||(Ve={}));var $e={confirm:!1,waitFor:1};function zD(t){return!(!t.includes(_s)||!t.includes("/pull/"))}async function HD(t){let e=t.replace(`https://${_s}`,""),[r,i,n,s,o]=e.split("/"),a=`https://${Cs}/repos/${i}/${n}/pulls/${o}`,u=await Yf(a);u.ok||(console.error("Failed to load pull request url: HTTP ",u.status,` +`,DD=/^\s*([\w.-]+)\s*=\s*(.*)?\s*$/,FD=/\\n/g,kD=/\n|\r|\r\n/;function _2(t,e){let r=Boolean(e&&e.debug),i={};return t.toString().split(kD).forEach(function(n,s){let o=n.match(DD);if(o!=null){let a=o[1],u=o[2]||"",c=u.length-1,l=u[0]==='"'&&u[c]==='"';u[0]==="'"&&u[c]==="'"||l?(u=u.substring(1,c),l&&(u=u.replace(FD,PD))):u=u.trim(),i[a]=u}else r&&R2(`did not match key and value when parsing line ${s+1}: ${n}`)}),i}function qD(t){let e=ID.resolve(process.cwd(),".env"),r="utf8",i=!1;t&&(t.path!=null&&(e=t.path),t.encoding!=null&&(r=t.encoding),t.debug!=null&&(i=!0));try{let n=_2(ND.readFileSync(e,{encoding:r}),{debug:i});return Object.keys(n).forEach(function(s){Object.prototype.hasOwnProperty.call(process.env,s)?i&&R2(`"${s}" is already defined in \`process.env\` and will not be overwritten`):process.env[s]=n[s]}),{parsed:n}}catch(n){return{error:n}}}Wf.exports.config=qD;Wf.exports.parse=_2});var A2=d(Ca=>{"use strict";var jD=Ca&&Ca.__awaiter||function(t,e,r,i){return new(r||(r=Promise))(function(n,s){function o(c){try{u(i.next(c))}catch(l){s(l)}}function a(c){try{u(i.throw(c))}catch(l){s(l)}}function u(c){var l;c.done?n(c.value):(l=c.value,l instanceof r?l:new r(function(f){f(l)})).then(o,a)}u((i=i.apply(t,e||[])).next())})};Object.defineProperty(Ca,"__esModule",{value:!0}),Promise.any=t=>jD(void 0,void 0,void 0,function*(){return new Promise((e,r)=>{let i=!1,n=0,s=[],o=u=>{i||(i=!0,e(u))},a=u=>{s.push(u),s.length>=n&&r(s)};for(let u of t)if(n++,u.then!==void 0){let c=u;c.then(l=>o(l)),u.catch!==void 0&&c.catch(l=>a(l))}})})});var L2=d((P6,T2)=>{T2.exports={name:"@jarred/git-peek",version:"1.3.10",author:"Jarred Sumner @Jarred-Sumner",description:"Quickly preview remote Git repositories in your local editor",bin:{"git-peek":"bin/git-peek"},bugs:"https://github.com/Jarred-Sumner/git-peek/issues",devDependencies:{"@types/js-yaml":"^4.0.0","@types/lodash":"^4.14.168","@types/lodash-es":"^4.17.4","@types/node":"latest","@types/rimraf":"^3.0.0","@types/tar":"^4.0.4","@types/tmp":"^0.2.0","@vercel/fetch":"^6.1.0",chalk:"^4.1.0",dotenv:"^8.2.0","dotenv-cli":"^4.0.0",esbuild:"^0.8.43","git-url-parse":"^11.4.4",ink:"^3.0.8","ink-select-input":"^4.2.0","ink-text-input":"^4.0.1",keypress:"^0.2.1","lodash-es":"^4.17.20",meow:"^9.0.0","node-fetch":"^2.6.1","normalize-git-url":"^3.0.2","open-editor":"^3.0.0",pkg:"^4.4.9",pnpm:"^5.17.2","promise-any-polyfill":"^0.1.2",qs:"^6.9.6",react:"^17.0.1","register-url-windows":"1.0.24","release-it":"*",rimraf:"^3.0.2","simple-plist":"^1.1.1",swr:"^0.4.2",tar:"^6.1.0",tmp:"^0.2.1",typescript:"beta",which:"^2.0.2"},engines:{node:">=10.0.0"},files:["bin/git-peek","bin/git-peek-win32.exe","bin/confirmPrompt.js","bin/Search.js","bin/registerProtocol.js"],homepage:"https://github.com/Jarred-Sumner/git-peek",keywords:["git-peek","git","github","preview git","editor","peek","clone","fetch","github-api","github-client","pull","git-pull","git pull","open-editor","open-in","open-in-editor","open"],license:"MIT",main:"lib/index.js",repository:"Jarred-Sumner/git-peek",scripts:{build:"node build.js",test:"echo NO TESTS",reinstall:"npm uninstall -g @jarred/git-peek; npm install -g jarred-git-peek-1.3.5.tgz",release:"dotenv release-it",bt:"pnpm build && git-peek Jarred-Sumner/git-peek","copy-win32":"cp win32/git-peek-windows-launcher/git-peek-windows-launcher/git-peek-windows-launcher/bin/net5.0/win-x64/publish/git-peek-win32.exe bin/git-peek-win32.exe","pkg-mac":"pkg --public --options='no-warnings' -t 'node14-macos-x64' ./pkgbin/git-peek -o ./brew/git-peek-macOS","pkg-windows":"pkg --public --options='no-warnings' -t 'node14-windows-x64' ./pkgbin/git-peek -o ./brew/git-peek.exe","pkg-all":"pnpm pkg-mac; pnpm pkg-windows",prerelease:"pnpm pkg-all","build-cs":"dotnet publish -c Release --self-contained false"},"release-it":{git:{requireCleanWorkingDir:!1},github:{release:!0,assets:["./brew/git-peek-macOS","./brew/git-peek.exe"]}}}});var mi=Te(require("child_process")),Ir=Te(require("fs")),x2=Te(Nh()),N2=Te(vv()),ut=Te(require("path"));function mx(){var t,e,r;return((r=(e=(t=process.env.GITHUB_TOKEN)==null?void 0:t.trim())==null?void 0:e.length)!=null?r:0)?process.env.GITHUB_TOKEN.trim():null}var vc;function bv(){return typeof vc=="undefined"&&(vc=mx()),vc}var I2=Te(lE()),P2=Te(Lw());var OD=Te(ys()),n2=Te(i2()),zf=n2.default(OD);var D2=Te(O2()),F2=Te(C2()),Aa=Te(ya()),$D=ut.default.join(__dirname,"Search"),MD=ut.default.join(__dirname,"registerProtocol"),BD=ut.default.join(__dirname,"confirmPrompt");function UD(t){return new Promise((e,r)=>setTimeout(e,t))}var ur=!1,GD=process.platform==="win32"?ut.default.join(process.env.HOMEDRIVE,process.env.HOMEPATH):process.env.HOME,Vf=ut.default.join(GD,".git-peek"),k2=["code","subl","code-insiders","vim","vi"],cr=!1,k6=console.log,q2=(...t)=>{ur||console.error(...t)};if(!Ir.default.rmSync){let t=ya();Ir.default.rmSync=(e,r)=>{if(e!=="/"&&e!=="/Applications")return t.sync(e)}}async function j2(t,e){var i;let r=!t||t==="auto"?process.env.EDITOR:t;if(!(r==null?void 0:r.trim().length))for(let n of k2)try{r=await D2.default(n),(r.includes("code")||r.includes("subl"))&&(r='"'+r+'"');break}catch(s){}return(!r||!((i=r==null?void 0:r.trim())==null?void 0:i.length))&&(e||console.warn("No editor detected, defaulting to Visual Studio Code. Set an editor with the -e flag"),r="code"),r}var $2=Ir.default.existsSync(Vf);typeof Promise.any!="function"&&A2();var Ve;(function(t){t[t.childProcessExit=0]="childProcessExit",t[t.downloadComplete=1]="downloadComplete",t[t.confirm=2]="confirm"})(Ve||(Ve={}));var $e={confirm:!1,waitFor:1};function zD(t){return!(!t.includes(_s)||!t.includes("/pull/"))}async function HD(t){let e=t.replace(`https://${_s}`,""),[r,i,n,s,o]=e.split("/"),a=`https://${Cs}/repos/${i}/${n}/pulls/${o}`,u=await Yf(a);u.ok||(console.error("Failed to load pull request url: HTTP ",u.status,` `,await u.text()),process.exit());let c=await u.json(),{label:l,sha:f}=c.head;return[l.split(":")[0],n,f]}async function WD(t,e){var s;let r=`https://${Cs}/repos/${t}/${e}`;process.env.VERBOSE&&console.log("Couldn't auto-detect ref, asking github what the ref is");let i=await Yf(r);return i.ok||(console.error("Failed to load github url: HTTP ",i.status,` `,await i.text()),process.exit()),(s=(await i.json()).default_branch)!=null?s:"main"}var yn=!1,Ye;var ae,Xf={redirect:"follow"},kt;(function(t){t[t.unknown=0]="unknown",t[t.vscode=1]="vscode",t[t.sublime=2]="sublime",t[t.vim=3]="vim"})(kt||(kt={}));function Yf(t){let e=bv();return e&&!Xf.headers&&(Xf.headers={authorization:`Bearer ${e}`}),zf(t,Xf)}function M2(){}var Kf=0,B2=!1;function gi(){var e,r;let t=ur;if(ur=!0,!yn&&!cr&&Ye)try{Ye==null||Ye.removeCallback(),Ye=null,yn=!1}catch(i){}if((ae==null?void 0:ae._tar)&&!ae._tar.writableEnded)try{ae._tar.warn=M2,ae._tar.abort()}catch(i){}if((ae==null?void 0:ae.slowTask)&&$e.waitFor!==1&&ae.slowTask.connected)try{ae.slowTask.kill(),ae.slowTask.disconnect()}catch(i){}if(!cr&&((e=ae==null?void 0:ae.destination)==null?void 0:e.length)&&Kf<10){if(process.platform==="win32")try{Aa.default.sync(ae.destination+"/*/**"),Aa.default.sync(ae.destination)}catch(i){process.env.VERBOSE&&console.error(i)}else try{Aa.default.sync(ae.destination)}catch(i){process.env.VERBOSE&&console.error(i)}if(Ir.default.existsSync(ae.destination)){setTimeout(gi,32),process.env.VERBOSE&&console.log(`Failed to delete, retry attempt #${Kf}/10`),Kf++;return}}!cr&&((r=ae==null?void 0:ae.destination)==null?void 0:r.length)&&!Ir.default.existsSync(ae.destination)&&!B2&&(ae.slowTask=null,ae.log("\u{1F5D1} Deleted repository"),B2=!0),process.emitWarning=M2,process.exit()}process.once("SIGINT",gi);var As=class{constructor(){this.editorMode=0;this.didFinish=!1;this.slowTask=null;this.didUseFallback=!1}log(e){this.editorMode===3&&this.slowTask||console.log(e)}async _prefetchGithub(e,r,i,n,s){let o=`https://cdn.jsdelivr.net/gh/${r}/${e}@${n}/${i||"README.md"}`,a=await zf(o,{redirect:"follow"});if(!a.ok||a.status===404)return!1;if(ur)return;let u=await a.text();if(u.trim().length)return ur||(await Ir.default.promises.mkdir(ut.default.dirname(s),{recursive:!0}),ur)?void 0:(await Ir.default.promises.writeFile(s,u,"utf8"),!0);throw"nope"}prefetchGithub(e,r,i,n,s,o){return Promise.any([this._prefetchGithub(e,r,i,n,o),this._prefetchGithub(e,r,i,s,o)])}search(e){let r=process.emitWarning;process.emitWarning=()=>{};let{renderInk:i}=require($D);return process.emitWarning=r,i(e)}async _unzip(e){let r=await Yf(e);if(r.ok)return r.body;if(r.status===403||r.status===401){let i=`Failed to load git repo: HTTP ${r.status} ${await r.text()} diff --git a/bin/git-peek.map b/bin/git-peek.map index 1d90e59..df06a2b 100644 --- a/bin/git-peek.map +++ b/bin/git-peek.map @@ -2,6 +2,6 @@ "version": 3, "sources": ["../node_modules/.pnpm/protocols@1.4.8/node_modules/protocols/lib/index.js", "../node_modules/.pnpm/is-ssh@1.3.2/node_modules/is-ssh/lib/index.js", "../node_modules/.pnpm/strict-uri-encode@2.0.0/node_modules/strict-uri-encode/index.js", "../node_modules/.pnpm/decode-uri-component@0.2.0/node_modules/decode-uri-component/index.js", "../node_modules/.pnpm/split-on-first@1.1.0/node_modules/split-on-first/index.js", "../node_modules/.pnpm/filter-obj@1.1.0/node_modules/filter-obj/index.js", "../node_modules/.pnpm/query-string@6.14.0/node_modules/query-string/index.js", "../node_modules/.pnpm/parse-path@4.0.3/node_modules/parse-path/lib/index.js", "../node_modules/.pnpm/normalize-url@3.3.0/node_modules/normalize-url/index.js", "../node_modules/.pnpm/parse-url@5.0.2/node_modules/parse-url/lib/index.js", "../node_modules/.pnpm/git-up@4.0.2/node_modules/git-up/lib/index.js", "../node_modules/.pnpm/git-url-parse@11.4.4/node_modules/git-url-parse/lib/index.js", "../node_modules/.pnpm/is-plain-obj@1.1.0/node_modules/is-plain-obj/index.js", "../node_modules/.pnpm/arrify@1.0.1/node_modules/arrify/index.js", "../node_modules/.pnpm/kind-of@6.0.3/node_modules/kind-of/index.js", "../node_modules/.pnpm/minimist-options@4.1.0/node_modules/minimist-options/index.js", "../node_modules/.pnpm/yargs-parser@20.2.4/node_modules/yargs-parser/build/index.cjs", "../node_modules/.pnpm/map-obj@4.1.0/node_modules/map-obj/index.js", "../node_modules/.pnpm/camelcase@5.3.1/node_modules/camelcase/index.js", "../node_modules/.pnpm/quick-lru@4.0.1/node_modules/quick-lru/index.js", "../node_modules/.pnpm/camelcase-keys@6.2.2/node_modules/camelcase-keys/index.js", "../node_modules/.pnpm/decamelize@1.2.0/node_modules/decamelize/index.js", "../node_modules/.pnpm/map-obj@1.0.1/node_modules/map-obj/index.js", "../node_modules/.pnpm/decamelize-keys@1.1.0/node_modules/decamelize-keys/index.js", "../node_modules/.pnpm/trim-newlines@3.0.0/node_modules/trim-newlines/index.js", "../node_modules/.pnpm/min-indent@1.0.1/node_modules/min-indent/index.js", "../node_modules/.pnpm/strip-indent@3.0.0/node_modules/strip-indent/index.js", "../node_modules/.pnpm/indent-string@4.0.0/node_modules/indent-string/index.js", "../node_modules/.pnpm/redent@3.0.0/node_modules/redent/index.js", "../node_modules/.pnpm/p-try@2.2.0/node_modules/p-try/index.js", "../node_modules/.pnpm/p-limit@2.3.0/node_modules/p-limit/index.js", "../node_modules/.pnpm/p-locate@4.1.0/node_modules/p-locate/index.js", "../node_modules/.pnpm/locate-path@5.0.0/node_modules/locate-path/index.js", "../node_modules/.pnpm/path-exists@4.0.0/node_modules/path-exists/index.js", "../node_modules/.pnpm/find-up@4.1.0/node_modules/find-up/index.js", "../node_modules/.pnpm/is-arrayish@0.2.1/node_modules/is-arrayish/index.js", "../node_modules/.pnpm/error-ex@1.3.2/node_modules/error-ex/index.js", "../node_modules/.pnpm/json-parse-even-better-errors@2.3.1/node_modules/json-parse-even-better-errors/index.js", "../node_modules/.pnpm/lines-and-columns@1.1.6/node_modules/lines-and-columns/dist/index.js", "../node_modules/.pnpm/js-tokens@4.0.0/node_modules/js-tokens/index.js", "../node_modules/.pnpm/@babel/helper-validator-identifier@7.12.11/node_modules/@babel/helper-validator-identifier/lib/identifier.js", "../node_modules/.pnpm/@babel/helper-validator-identifier@7.12.11/node_modules/@babel/helper-validator-identifier/lib/keyword.js", "../node_modules/.pnpm/@babel/helper-validator-identifier@7.12.11/node_modules/@babel/helper-validator-identifier/lib/index.js", "../node_modules/.pnpm/escape-string-regexp@1.0.5/node_modules/escape-string-regexp/index.js", "../node_modules/.pnpm/color-name@1.1.3/node_modules/color-name/index.js", "../node_modules/.pnpm/color-convert@1.9.3/node_modules/color-convert/conversions.js", "../node_modules/.pnpm/color-convert@1.9.3/node_modules/color-convert/route.js", "../node_modules/.pnpm/color-convert@1.9.3/node_modules/color-convert/index.js", "../node_modules/.pnpm/ansi-styles@3.2.1/node_modules/ansi-styles/index.js", "../node_modules/.pnpm/has-flag@3.0.0/node_modules/has-flag/index.js", "../node_modules/.pnpm/supports-color@5.5.0/node_modules/supports-color/index.js", "../node_modules/.pnpm/chalk@2.4.2/node_modules/chalk/templates.js", "../node_modules/.pnpm/chalk@2.4.2/node_modules/chalk/index.js", "../node_modules/.pnpm/@babel/highlight@7.12.13/node_modules/@babel/highlight/lib/index.js", "../node_modules/.pnpm/@babel/code-frame@7.12.13/node_modules/@babel/code-frame/lib/index.js", "../node_modules/.pnpm/parse-json@5.2.0/node_modules/parse-json/index.js", "../node_modules/.pnpm/semver@5.7.1/node_modules/semver/semver.js", "../node_modules/.pnpm/spdx-expression-parse@3.0.1/node_modules/spdx-expression-parse/scan.js", "../node_modules/.pnpm/spdx-expression-parse@3.0.1/node_modules/spdx-expression-parse/parse.js", "../node_modules/.pnpm/spdx-expression-parse@3.0.1/node_modules/spdx-expression-parse/index.js", "../node_modules/.pnpm/spdx-correct@3.1.1/node_modules/spdx-correct/index.js", "../node_modules/.pnpm/validate-npm-package-license@3.0.4/node_modules/validate-npm-package-license/index.js", "../node_modules/.pnpm/hosted-git-info@2.8.8/node_modules/hosted-git-info/git-host-info.js", "../node_modules/.pnpm/hosted-git-info@2.8.8/node_modules/hosted-git-info/git-host.js", "../node_modules/.pnpm/hosted-git-info@2.8.8/node_modules/hosted-git-info/index.js", "../node_modules/.pnpm/resolve@1.19.0/node_modules/resolve/lib/caller.js", "../node_modules/.pnpm/path-parse@1.0.6/node_modules/path-parse/index.js", "../node_modules/.pnpm/resolve@1.19.0/node_modules/resolve/lib/node-modules-paths.js", "../node_modules/.pnpm/resolve@1.19.0/node_modules/resolve/lib/normalize-options.js", "../node_modules/.pnpm/function-bind@1.1.1/node_modules/function-bind/implementation.js", "../node_modules/.pnpm/function-bind@1.1.1/node_modules/function-bind/index.js", "../node_modules/.pnpm/has@1.0.3/node_modules/has/src/index.js", "../node_modules/.pnpm/is-core-module@2.2.0/node_modules/is-core-module/index.js", "../node_modules/.pnpm/resolve@1.19.0/node_modules/resolve/lib/async.js", "../node_modules/.pnpm/resolve@1.19.0/node_modules/resolve/lib/core.js", "../node_modules/.pnpm/resolve@1.19.0/node_modules/resolve/lib/is-core.js", "../node_modules/.pnpm/resolve@1.19.0/node_modules/resolve/lib/sync.js", "../node_modules/.pnpm/resolve@1.19.0/node_modules/resolve/index.js", "../node_modules/.pnpm/normalize-package-data@2.5.0/node_modules/normalize-package-data/lib/extract_description.js", "../node_modules/.pnpm/normalize-package-data@2.5.0/node_modules/normalize-package-data/lib/fixer.js", "../node_modules/.pnpm/normalize-package-data@2.5.0/node_modules/normalize-package-data/lib/make_warning.js", "../node_modules/.pnpm/normalize-package-data@2.5.0/node_modules/normalize-package-data/lib/normalize.js", "../node_modules/.pnpm/read-pkg@5.2.0/node_modules/read-pkg/index.js", "../node_modules/.pnpm/read-pkg-up@7.0.1/node_modules/read-pkg-up/index.js", "../node_modules/.pnpm/hard-rejection@2.1.0/node_modules/hard-rejection/index.js", "../node_modules/.pnpm/semver@7.3.4/node_modules/semver/internal/constants.js", "../node_modules/.pnpm/semver@7.3.4/node_modules/semver/internal/debug.js", "../node_modules/.pnpm/semver@7.3.4/node_modules/semver/internal/re.js", "../node_modules/.pnpm/semver@7.3.4/node_modules/semver/internal/parse-options.js", "../node_modules/.pnpm/semver@7.3.4/node_modules/semver/internal/identifiers.js", "../node_modules/.pnpm/semver@7.3.4/node_modules/semver/classes/semver.js", "../node_modules/.pnpm/semver@7.3.4/node_modules/semver/functions/parse.js", "../node_modules/.pnpm/semver@7.3.4/node_modules/semver/functions/valid.js", "../node_modules/.pnpm/semver@7.3.4/node_modules/semver/functions/clean.js", "../node_modules/.pnpm/semver@7.3.4/node_modules/semver/functions/inc.js", "../node_modules/.pnpm/semver@7.3.4/node_modules/semver/functions/compare.js", "../node_modules/.pnpm/semver@7.3.4/node_modules/semver/functions/eq.js", "../node_modules/.pnpm/semver@7.3.4/node_modules/semver/functions/diff.js", "../node_modules/.pnpm/semver@7.3.4/node_modules/semver/functions/major.js", "../node_modules/.pnpm/semver@7.3.4/node_modules/semver/functions/minor.js", "../node_modules/.pnpm/semver@7.3.4/node_modules/semver/functions/patch.js", "../node_modules/.pnpm/semver@7.3.4/node_modules/semver/functions/prerelease.js", "../node_modules/.pnpm/semver@7.3.4/node_modules/semver/functions/rcompare.js", "../node_modules/.pnpm/semver@7.3.4/node_modules/semver/functions/compare-loose.js", "../node_modules/.pnpm/semver@7.3.4/node_modules/semver/functions/compare-build.js", "../node_modules/.pnpm/semver@7.3.4/node_modules/semver/functions/sort.js", "../node_modules/.pnpm/semver@7.3.4/node_modules/semver/functions/rsort.js", "../node_modules/.pnpm/semver@7.3.4/node_modules/semver/functions/gt.js", "../node_modules/.pnpm/semver@7.3.4/node_modules/semver/functions/lt.js", "../node_modules/.pnpm/semver@7.3.4/node_modules/semver/functions/neq.js", "../node_modules/.pnpm/semver@7.3.4/node_modules/semver/functions/gte.js", "../node_modules/.pnpm/semver@7.3.4/node_modules/semver/functions/lte.js", "../node_modules/.pnpm/semver@7.3.4/node_modules/semver/functions/cmp.js", "../node_modules/.pnpm/semver@7.3.4/node_modules/semver/functions/coerce.js", "../node_modules/.pnpm/yallist@4.0.0/node_modules/yallist/iterator.js", "../node_modules/.pnpm/yallist@4.0.0/node_modules/yallist/yallist.js", "../node_modules/.pnpm/lru-cache@6.0.0/node_modules/lru-cache/index.js", "../node_modules/.pnpm/semver@7.3.4/node_modules/semver/classes/range.js", "../node_modules/.pnpm/semver@7.3.4/node_modules/semver/classes/comparator.js", "../node_modules/.pnpm/semver@7.3.4/node_modules/semver/functions/satisfies.js", "../node_modules/.pnpm/semver@7.3.4/node_modules/semver/ranges/to-comparators.js", "../node_modules/.pnpm/semver@7.3.4/node_modules/semver/ranges/max-satisfying.js", "../node_modules/.pnpm/semver@7.3.4/node_modules/semver/ranges/min-satisfying.js", "../node_modules/.pnpm/semver@7.3.4/node_modules/semver/ranges/min-version.js", "../node_modules/.pnpm/semver@7.3.4/node_modules/semver/ranges/valid.js", "../node_modules/.pnpm/semver@7.3.4/node_modules/semver/ranges/outside.js", "../node_modules/.pnpm/semver@7.3.4/node_modules/semver/ranges/gtr.js", "../node_modules/.pnpm/semver@7.3.4/node_modules/semver/ranges/ltr.js", "../node_modules/.pnpm/semver@7.3.4/node_modules/semver/ranges/intersects.js", "../node_modules/.pnpm/semver@7.3.4/node_modules/semver/ranges/simplify.js", "../node_modules/.pnpm/semver@7.3.4/node_modules/semver/ranges/subset.js", "../node_modules/.pnpm/semver@7.3.4/node_modules/semver/index.js", "../node_modules/.pnpm/hosted-git-info@3.0.8/node_modules/hosted-git-info/git-host-info.js", "../node_modules/.pnpm/hosted-git-info@3.0.8/node_modules/hosted-git-info/git-host.js", "../node_modules/.pnpm/hosted-git-info@3.0.8/node_modules/hosted-git-info/index.js", "../node_modules/.pnpm/normalize-package-data@3.0.0/node_modules/normalize-package-data/lib/extract_description.js", "../node_modules/.pnpm/normalize-package-data@3.0.0/node_modules/normalize-package-data/lib/fixer.js", "../node_modules/.pnpm/normalize-package-data@3.0.0/node_modules/normalize-package-data/lib/make_warning.js", "../node_modules/.pnpm/normalize-package-data@3.0.0/node_modules/normalize-package-data/lib/normalize.js", "../node_modules/.pnpm/meow@9.0.0/node_modules/meow/index.js", "../node_modules/.pnpm/tar@6.1.0/node_modules/tar/lib/high-level-opt.js", "../node_modules/.pnpm/minipass@3.1.3/node_modules/minipass/index.js", "../node_modules/.pnpm/minizlib@2.1.2/node_modules/minizlib/constants.js", "../node_modules/.pnpm/minizlib@2.1.2/node_modules/minizlib/index.js", "../node_modules/.pnpm/tar@6.1.0/node_modules/tar/lib/read-entry.js", "../node_modules/.pnpm/tar@6.1.0/node_modules/tar/lib/types.js", "../node_modules/.pnpm/tar@6.1.0/node_modules/tar/lib/large-numbers.js", "../node_modules/.pnpm/tar@6.1.0/node_modules/tar/lib/header.js", "../node_modules/.pnpm/tar@6.1.0/node_modules/tar/lib/pax.js", "../node_modules/.pnpm/tar@6.1.0/node_modules/tar/lib/warn-mixin.js", "../node_modules/.pnpm/tar@6.1.0/node_modules/tar/lib/winchars.js", "../node_modules/.pnpm/tar@6.1.0/node_modules/tar/lib/mode-fix.js", "../node_modules/.pnpm/tar@6.1.0/node_modules/tar/lib/write-entry.js", "../node_modules/.pnpm/tar@6.1.0/node_modules/tar/node_modules/yallist/iterator.js", "../node_modules/.pnpm/tar@6.1.0/node_modules/tar/node_modules/yallist/yallist.js", "../node_modules/.pnpm/tar@6.1.0/node_modules/tar/lib/pack.js", "../node_modules/.pnpm/fs-minipass@2.1.0/node_modules/fs-minipass/index.js", "../node_modules/.pnpm/tar@6.1.0/node_modules/tar/lib/parse.js", "../node_modules/.pnpm/tar@6.1.0/node_modules/tar/lib/list.js", "../node_modules/.pnpm/tar@6.1.0/node_modules/tar/lib/create.js", "../node_modules/.pnpm/tar@6.1.0/node_modules/tar/lib/replace.js", "../node_modules/.pnpm/tar@6.1.0/node_modules/tar/lib/update.js", "../node_modules/.pnpm/tar@6.1.0/node_modules/tar/node_modules/mkdirp/lib/opts-arg.js", "../node_modules/.pnpm/tar@6.1.0/node_modules/tar/node_modules/mkdirp/lib/path-arg.js", "../node_modules/.pnpm/tar@6.1.0/node_modules/tar/node_modules/mkdirp/lib/find-made.js", "../node_modules/.pnpm/tar@6.1.0/node_modules/tar/node_modules/mkdirp/lib/mkdirp-manual.js", "../node_modules/.pnpm/tar@6.1.0/node_modules/tar/node_modules/mkdirp/lib/mkdirp-native.js", "../node_modules/.pnpm/tar@6.1.0/node_modules/tar/node_modules/mkdirp/lib/use-native.js", "../node_modules/.pnpm/tar@6.1.0/node_modules/tar/node_modules/mkdirp/index.js", "../node_modules/.pnpm/chownr@2.0.0/node_modules/chownr/chownr.js", "../node_modules/.pnpm/tar@6.1.0/node_modules/tar/lib/mkdir.js", "../node_modules/.pnpm/tar@6.1.0/node_modules/tar/lib/path-reservations.js", "../node_modules/.pnpm/tar@6.1.0/node_modules/tar/lib/get-write-flag.js", "../node_modules/.pnpm/tar@6.1.0/node_modules/tar/lib/unpack.js", "../node_modules/.pnpm/tar@6.1.0/node_modules/tar/lib/extract.js", "../node_modules/.pnpm/tar@6.1.0/node_modules/tar/index.js", "../node_modules/.pnpm/fs.realpath@1.0.0/node_modules/fs.realpath/old.js", "../node_modules/.pnpm/fs.realpath@1.0.0/node_modules/fs.realpath/index.js", "../node_modules/.pnpm/concat-map@0.0.1/node_modules/concat-map/index.js", "../node_modules/.pnpm/balanced-match@1.0.0/node_modules/balanced-match/index.js", "../node_modules/.pnpm/brace-expansion@1.1.11/node_modules/brace-expansion/index.js", "../node_modules/.pnpm/minimatch@3.0.4/node_modules/minimatch/minimatch.js", "../node_modules/.pnpm/inherits@2.0.4/node_modules/inherits/inherits_browser.js", "../node_modules/.pnpm/inherits@2.0.4/node_modules/inherits/inherits.js", "../node_modules/.pnpm/path-is-absolute@1.0.1/node_modules/path-is-absolute/index.js", "../node_modules/.pnpm/glob@7.1.6/node_modules/glob/common.js", "../node_modules/.pnpm/glob@7.1.6/node_modules/glob/sync.js", "../node_modules/.pnpm/wrappy@1.0.2/node_modules/wrappy/wrappy.js", "../node_modules/.pnpm/once@1.4.0/node_modules/once/once.js", "../node_modules/.pnpm/inflight@1.0.6/node_modules/inflight/inflight.js", "../node_modules/.pnpm/glob@7.1.6/node_modules/glob/glob.js", "../node_modules/.pnpm/rimraf@3.0.2/node_modules/rimraf/rimraf.js", "../node_modules/.pnpm/tmp@0.2.1/node_modules/tmp/lib/tmp.js", "../node_modules/.pnpm/node-fetch@2.6.1/node_modules/node-fetch/lib/index.mjs", "../node_modules/.pnpm/agentkeepalive@3.4.1/node_modules/agentkeepalive/lib/_http_agent.js", "../node_modules/.pnpm/ms@2.1.3/node_modules/ms/index.js", "../node_modules/.pnpm/humanize-ms@1.2.1/node_modules/humanize-ms/index.js", "../node_modules/.pnpm/agentkeepalive@3.4.1/node_modules/agentkeepalive/lib/agent.js", "../node_modules/.pnpm/agentkeepalive@3.4.1/node_modules/agentkeepalive/lib/https_agent.js", "../node_modules/.pnpm/agentkeepalive@3.4.1/node_modules/agentkeepalive/index.js", "../node_modules/.pnpm/ms@2.0.0/node_modules/ms/index.js", "../node_modules/.pnpm/debug@3.1.0/node_modules/debug/src/debug.js", "../node_modules/.pnpm/debug@3.1.0/node_modules/debug/src/browser.js", "../node_modules/.pnpm/has-flag@4.0.0/node_modules/has-flag/index.js", "../node_modules/.pnpm/supports-color@7.2.0/node_modules/supports-color/index.js", "../node_modules/.pnpm/debug@3.1.0/node_modules/debug/src/node.js", "../node_modules/.pnpm/debug@3.1.0/node_modules/debug/src/index.js", "../node_modules/.pnpm/retry@0.12.0/node_modules/retry/lib/retry_operation.js", "../node_modules/.pnpm/retry@0.12.0/node_modules/retry/lib/retry.js", "../node_modules/.pnpm/retry@0.12.0/node_modules/retry/index.js", "../node_modules/.pnpm/async-retry@1.3.1/node_modules/async-retry/lib/index.js", "../node_modules/.pnpm/@vercel/fetch-retry@5.0.3_node-fetch@2.6.1/node_modules/@vercel/fetch-retry/index.js", "../node_modules/.pnpm/yallist@3.1.1/node_modules/yallist/iterator.js", "../node_modules/.pnpm/yallist@3.1.1/node_modules/yallist/yallist.js", "../node_modules/.pnpm/lru-cache@5.1.1/node_modules/lru-cache/index.js", "../node_modules/.pnpm/async-retry@1.2.3/node_modules/async-retry/lib/index.js", "../node_modules/.pnpm/@zeit/dns-cached-resolve@2.1.0/node_modules/@zeit/dns-cached-resolve/lib/resolve4.js", "../node_modules/.pnpm/@zeit/dns-cached-resolve@2.1.0/node_modules/@zeit/dns-cached-resolve/lib/resolve6.js", "../node_modules/.pnpm/@zeit/dns-cached-resolve@2.1.0/node_modules/@zeit/dns-cached-resolve/lib/dns-resolve.js", "../node_modules/.pnpm/@zeit/dns-cached-resolve@2.1.0/node_modules/@zeit/dns-cached-resolve/lib/index.js", "../node_modules/.pnpm/@vercel/fetch-cached-dns@2.0.1_node-fetch@2.6.1/node_modules/@vercel/fetch-cached-dns/util.js", "../node_modules/.pnpm/@vercel/fetch-cached-dns@2.0.1_node-fetch@2.6.1/node_modules/@vercel/fetch-cached-dns/index.js", "../node_modules/.pnpm/@vercel/fetch@6.1.0_node-fetch@2.6.1/node_modules/@vercel/fetch/index.js", "../node_modules/.pnpm/isexe@2.0.0/node_modules/isexe/windows.js", "../node_modules/.pnpm/isexe@2.0.0/node_modules/isexe/mode.js", "../node_modules/.pnpm/isexe@2.0.0/node_modules/isexe/index.js", "../node_modules/.pnpm/which@2.0.2/node_modules/which/which.js", "../node_modules/.pnpm/dotenv@8.2.0/node_modules/dotenv/lib/main.js", "../node_modules/.pnpm/promise-any-polyfill@0.1.2/node_modules/promise-any-polyfill/ts/implementation.ts", "../src/index.ts", "../src/findGitHubToken.tsx", "../src/fetch.ts"], "sourcesContent": ["\"use strict\";\n\n/**\n * protocols\n * Returns the protocols of an input url.\n *\n * @name protocols\n * @function\n * @param {String} input The input url.\n * @param {Boolean|Number} first If `true`, the first protocol will be returned. If number, it will represent the zero-based index of the protocols array.\n * @return {Array|String} The array of protocols or the specified protocol.\n */\nmodule.exports = function protocols(input, first) {\n\n if (first === true) {\n first = 0;\n }\n\n var index = input.indexOf(\"://\"),\n splits = input.substring(0, index).split(\"+\").filter(Boolean);\n\n if (typeof first === \"number\") {\n return splits[first];\n }\n\n return splits;\n};", "\"use strict\";\n\n// Dependencies\nvar protocols = require(\"protocols\");\n\n/**\n * isSsh\n * Checks if an input value is a ssh url or not.\n *\n * @name isSsh\n * @function\n * @param {String|Array} input The input url or an array of protocols.\n * @return {Boolean} `true` if the input is a ssh url, `false` otherwise.\n */\nfunction isSsh(input) {\n\n if (Array.isArray(input)) {\n return input.indexOf(\"ssh\") !== -1 || input.indexOf(\"rsync\") !== -1;\n }\n\n if (typeof input !== \"string\") {\n return false;\n }\n\n var prots = protocols(input);\n input = input.substring(input.indexOf(\"://\") + 3);\n if (isSsh(prots)) {\n return true;\n }\n\n // TODO This probably could be improved :)\n return input.indexOf(\"@\") < input.indexOf(\":\");\n}\n\nmodule.exports = isSsh;", "'use strict';\nmodule.exports = str => encodeURIComponent(str).replace(/[!'()*]/g, x => `%${x.charCodeAt(0).toString(16).toUpperCase()}`);\n", "'use strict';\nvar token = '%[a-f0-9]{2}';\nvar singleMatcher = new RegExp(token, 'gi');\nvar multiMatcher = new RegExp('(' + token + ')+', 'gi');\n\nfunction decodeComponents(components, split) {\n\ttry {\n\t\t// Try to decode the entire string first\n\t\treturn decodeURIComponent(components.join(''));\n\t} catch (err) {\n\t\t// Do nothing\n\t}\n\n\tif (components.length === 1) {\n\t\treturn components;\n\t}\n\n\tsplit = split || 1;\n\n\t// Split the array in 2 parts\n\tvar left = components.slice(0, split);\n\tvar right = components.slice(split);\n\n\treturn Array.prototype.concat.call([], decodeComponents(left), decodeComponents(right));\n}\n\nfunction decode(input) {\n\ttry {\n\t\treturn decodeURIComponent(input);\n\t} catch (err) {\n\t\tvar tokens = input.match(singleMatcher);\n\n\t\tfor (var i = 1; i < tokens.length; i++) {\n\t\t\tinput = decodeComponents(tokens, i).join('');\n\n\t\t\ttokens = input.match(singleMatcher);\n\t\t}\n\n\t\treturn input;\n\t}\n}\n\nfunction customDecodeURIComponent(input) {\n\t// Keep track of all the replacements and prefill the map with the `BOM`\n\tvar replaceMap = {\n\t\t'%FE%FF': '\\uFFFD\\uFFFD',\n\t\t'%FF%FE': '\\uFFFD\\uFFFD'\n\t};\n\n\tvar match = multiMatcher.exec(input);\n\twhile (match) {\n\t\ttry {\n\t\t\t// Decode as big chunks as possible\n\t\t\treplaceMap[match[0]] = decodeURIComponent(match[0]);\n\t\t} catch (err) {\n\t\t\tvar result = decode(match[0]);\n\n\t\t\tif (result !== match[0]) {\n\t\t\t\treplaceMap[match[0]] = result;\n\t\t\t}\n\t\t}\n\n\t\tmatch = multiMatcher.exec(input);\n\t}\n\n\t// Add `%C2` at the end of the map to make sure it does not replace the combinator before everything else\n\treplaceMap['%C2'] = '\\uFFFD';\n\n\tvar entries = Object.keys(replaceMap);\n\n\tfor (var i = 0; i < entries.length; i++) {\n\t\t// Replace all decoded components\n\t\tvar key = entries[i];\n\t\tinput = input.replace(new RegExp(key, 'g'), replaceMap[key]);\n\t}\n\n\treturn input;\n}\n\nmodule.exports = function (encodedURI) {\n\tif (typeof encodedURI !== 'string') {\n\t\tthrow new TypeError('Expected `encodedURI` to be of type `string`, got `' + typeof encodedURI + '`');\n\t}\n\n\ttry {\n\t\tencodedURI = encodedURI.replace(/\\+/g, ' ');\n\n\t\t// Try the built in decoder first\n\t\treturn decodeURIComponent(encodedURI);\n\t} catch (err) {\n\t\t// Fallback to a more advanced decoder\n\t\treturn customDecodeURIComponent(encodedURI);\n\t}\n};\n", "'use strict';\n\nmodule.exports = (string, separator) => {\n\tif (!(typeof string === 'string' && typeof separator === 'string')) {\n\t\tthrow new TypeError('Expected the arguments to be of type `string`');\n\t}\n\n\tif (separator === '') {\n\t\treturn [string];\n\t}\n\n\tconst separatorIndex = string.indexOf(separator);\n\n\tif (separatorIndex === -1) {\n\t\treturn [string];\n\t}\n\n\treturn [\n\t\tstring.slice(0, separatorIndex),\n\t\tstring.slice(separatorIndex + separator.length)\n\t];\n};\n", "'use strict';\nmodule.exports = function (obj, predicate) {\n\tvar ret = {};\n\tvar keys = Object.keys(obj);\n\tvar isArr = Array.isArray(predicate);\n\n\tfor (var i = 0; i < keys.length; i++) {\n\t\tvar key = keys[i];\n\t\tvar val = obj[key];\n\n\t\tif (isArr ? predicate.indexOf(key) !== -1 : predicate(key, val, obj)) {\n\t\t\tret[key] = val;\n\t\t}\n\t}\n\n\treturn ret;\n};\n", "'use strict';\nconst strictUriEncode = require('strict-uri-encode');\nconst decodeComponent = require('decode-uri-component');\nconst splitOnFirst = require('split-on-first');\nconst filterObject = require('filter-obj');\n\nconst isNullOrUndefined = value => value === null || value === undefined;\n\nfunction encoderForArrayFormat(options) {\n\tswitch (options.arrayFormat) {\n\t\tcase 'index':\n\t\t\treturn key => (result, value) => {\n\t\t\t\tconst index = result.length;\n\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, [encode(key, options), '[', index, ']'].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [\n\t\t\t\t\t...result,\n\t\t\t\t\t[encode(key, options), '[', encode(index, options), ']=', encode(value, options)].join('')\n\t\t\t\t];\n\t\t\t};\n\n\t\tcase 'bracket':\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, [encode(key, options), '[]'].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [...result, [encode(key, options), '[]=', encode(value, options)].join('')];\n\t\t\t};\n\n\t\tcase 'comma':\n\t\tcase 'separator':\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (value === null || value === undefined || value.length === 0) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (result.length === 0) {\n\t\t\t\t\treturn [[encode(key, options), '=', encode(value, options)].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [[result, encode(value, options)].join(options.arrayFormatSeparator)];\n\t\t\t};\n\n\t\tdefault:\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, encode(key, options)];\n\t\t\t\t}\n\n\t\t\t\treturn [...result, [encode(key, options), '=', encode(value, options)].join('')];\n\t\t\t};\n\t}\n}\n\nfunction parserForArrayFormat(options) {\n\tlet result;\n\n\tswitch (options.arrayFormat) {\n\t\tcase 'index':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /\\[(\\d*)\\]$/.exec(key);\n\n\t\t\t\tkey = key.replace(/\\[\\d*\\]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = {};\n\t\t\t\t}\n\n\t\t\t\taccumulator[key][result[1]] = value;\n\t\t\t};\n\n\t\tcase 'bracket':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /(\\[\\])$/.exec(key);\n\t\t\t\tkey = key.replace(/\\[\\]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = [value];\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\n\t\tcase 'comma':\n\t\tcase 'separator':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tconst isArray = typeof value === 'string' && value.includes(options.arrayFormatSeparator);\n\t\t\t\tconst isEncodedArray = (typeof value === 'string' && !isArray && decode(value, options).includes(options.arrayFormatSeparator));\n\t\t\t\tvalue = isEncodedArray ? decode(value, options) : value;\n\t\t\t\tconst newValue = isArray || isEncodedArray ? value.split(options.arrayFormatSeparator).map(item => decode(item, options)) : value === null ? value : decode(value, options);\n\t\t\t\taccumulator[key] = newValue;\n\t\t\t};\n\n\t\tdefault:\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\t}\n}\n\nfunction validateArrayFormatSeparator(value) {\n\tif (typeof value !== 'string' || value.length !== 1) {\n\t\tthrow new TypeError('arrayFormatSeparator must be single character string');\n\t}\n}\n\nfunction encode(value, options) {\n\tif (options.encode) {\n\t\treturn options.strict ? strictUriEncode(value) : encodeURIComponent(value);\n\t}\n\n\treturn value;\n}\n\nfunction decode(value, options) {\n\tif (options.decode) {\n\t\treturn decodeComponent(value);\n\t}\n\n\treturn value;\n}\n\nfunction keysSorter(input) {\n\tif (Array.isArray(input)) {\n\t\treturn input.sort();\n\t}\n\n\tif (typeof input === 'object') {\n\t\treturn keysSorter(Object.keys(input))\n\t\t\t.sort((a, b) => Number(a) - Number(b))\n\t\t\t.map(key => input[key]);\n\t}\n\n\treturn input;\n}\n\nfunction removeHash(input) {\n\tconst hashStart = input.indexOf('#');\n\tif (hashStart !== -1) {\n\t\tinput = input.slice(0, hashStart);\n\t}\n\n\treturn input;\n}\n\nfunction getHash(url) {\n\tlet hash = '';\n\tconst hashStart = url.indexOf('#');\n\tif (hashStart !== -1) {\n\t\thash = url.slice(hashStart);\n\t}\n\n\treturn hash;\n}\n\nfunction extract(input) {\n\tinput = removeHash(input);\n\tconst queryStart = input.indexOf('?');\n\tif (queryStart === -1) {\n\t\treturn '';\n\t}\n\n\treturn input.slice(queryStart + 1);\n}\n\nfunction parseValue(value, options) {\n\tif (options.parseNumbers && !Number.isNaN(Number(value)) && (typeof value === 'string' && value.trim() !== '')) {\n\t\tvalue = Number(value);\n\t} else if (options.parseBooleans && value !== null && (value.toLowerCase() === 'true' || value.toLowerCase() === 'false')) {\n\t\tvalue = value.toLowerCase() === 'true';\n\t}\n\n\treturn value;\n}\n\nfunction parse(query, options) {\n\toptions = Object.assign({\n\t\tdecode: true,\n\t\tsort: true,\n\t\tarrayFormat: 'none',\n\t\tarrayFormatSeparator: ',',\n\t\tparseNumbers: false,\n\t\tparseBooleans: false\n\t}, options);\n\n\tvalidateArrayFormatSeparator(options.arrayFormatSeparator);\n\n\tconst formatter = parserForArrayFormat(options);\n\n\t// Create an object with no prototype\n\tconst ret = Object.create(null);\n\n\tif (typeof query !== 'string') {\n\t\treturn ret;\n\t}\n\n\tquery = query.trim().replace(/^[?#&]/, '');\n\n\tif (!query) {\n\t\treturn ret;\n\t}\n\n\tfor (const param of query.split('&')) {\n\t\tif (param === '') {\n\t\t\tcontinue;\n\t\t}\n\n\t\tlet [key, value] = splitOnFirst(options.decode ? param.replace(/\\+/g, ' ') : param, '=');\n\n\t\t// Missing `=` should be `null`:\n\t\t// http://w3.org/TR/2012/WD-url-20120524/#collect-url-parameters\n\t\tvalue = value === undefined ? null : ['comma', 'separator'].includes(options.arrayFormat) ? value : decode(value, options);\n\t\tformatter(decode(key, options), value, ret);\n\t}\n\n\tfor (const key of Object.keys(ret)) {\n\t\tconst value = ret[key];\n\t\tif (typeof value === 'object' && value !== null) {\n\t\t\tfor (const k of Object.keys(value)) {\n\t\t\t\tvalue[k] = parseValue(value[k], options);\n\t\t\t}\n\t\t} else {\n\t\t\tret[key] = parseValue(value, options);\n\t\t}\n\t}\n\n\tif (options.sort === false) {\n\t\treturn ret;\n\t}\n\n\treturn (options.sort === true ? Object.keys(ret).sort() : Object.keys(ret).sort(options.sort)).reduce((result, key) => {\n\t\tconst value = ret[key];\n\t\tif (Boolean(value) && typeof value === 'object' && !Array.isArray(value)) {\n\t\t\t// Sort object keys, not values\n\t\t\tresult[key] = keysSorter(value);\n\t\t} else {\n\t\t\tresult[key] = value;\n\t\t}\n\n\t\treturn result;\n\t}, Object.create(null));\n}\n\nexports.extract = extract;\nexports.parse = parse;\n\nexports.stringify = (object, options) => {\n\tif (!object) {\n\t\treturn '';\n\t}\n\n\toptions = Object.assign({\n\t\tencode: true,\n\t\tstrict: true,\n\t\tarrayFormat: 'none',\n\t\tarrayFormatSeparator: ','\n\t}, options);\n\n\tvalidateArrayFormatSeparator(options.arrayFormatSeparator);\n\n\tconst shouldFilter = key => (\n\t\t(options.skipNull && isNullOrUndefined(object[key])) ||\n\t\t(options.skipEmptyString && object[key] === '')\n\t);\n\n\tconst formatter = encoderForArrayFormat(options);\n\n\tconst objectCopy = {};\n\n\tfor (const key of Object.keys(object)) {\n\t\tif (!shouldFilter(key)) {\n\t\t\tobjectCopy[key] = object[key];\n\t\t}\n\t}\n\n\tconst keys = Object.keys(objectCopy);\n\n\tif (options.sort !== false) {\n\t\tkeys.sort(options.sort);\n\t}\n\n\treturn keys.map(key => {\n\t\tconst value = object[key];\n\n\t\tif (value === undefined) {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (value === null) {\n\t\t\treturn encode(key, options);\n\t\t}\n\n\t\tif (Array.isArray(value)) {\n\t\t\treturn value\n\t\t\t\t.reduce(formatter(key), [])\n\t\t\t\t.join('&');\n\t\t}\n\n\t\treturn encode(key, options) + '=' + encode(value, options);\n\t}).filter(x => x.length > 0).join('&');\n};\n\nexports.parseUrl = (url, options) => {\n\toptions = Object.assign({\n\t\tdecode: true\n\t}, options);\n\n\tconst [url_, hash] = splitOnFirst(url, '#');\n\n\treturn Object.assign(\n\t\t{\n\t\t\turl: url_.split('?')[0] || '',\n\t\t\tquery: parse(extract(url), options)\n\t\t},\n\t\toptions && options.parseFragmentIdentifier && hash ? {fragmentIdentifier: decode(hash, options)} : {}\n\t);\n};\n\nexports.stringifyUrl = (object, options) => {\n\toptions = Object.assign({\n\t\tencode: true,\n\t\tstrict: true\n\t}, options);\n\n\tconst url = removeHash(object.url).split('?')[0] || '';\n\tconst queryFromUrl = exports.extract(object.url);\n\tconst parsedQueryFromUrl = exports.parse(queryFromUrl, {sort: false});\n\n\tconst query = Object.assign(parsedQueryFromUrl, object.query);\n\tlet queryString = exports.stringify(query, options);\n\tif (queryString) {\n\t\tqueryString = `?${queryString}`;\n\t}\n\n\tlet hash = getHash(object.url);\n\tif (object.fragmentIdentifier) {\n\t\thash = `#${encode(object.fragmentIdentifier, options)}`;\n\t}\n\n\treturn `${url}${queryString}${hash}`;\n};\n\nexports.pick = (input, filter, options) => {\n\toptions = Object.assign({\n\t\tparseFragmentIdentifier: true\n\t}, options);\n\n\tconst {url, query, fragmentIdentifier} = exports.parseUrl(input, options);\n\treturn exports.stringifyUrl({\n\t\turl,\n\t\tquery: filterObject(query, filter),\n\t\tfragmentIdentifier\n\t}, options);\n};\n\nexports.exclude = (input, filter, options) => {\n\tconst exclusionFilter = Array.isArray(filter) ? key => !filter.includes(key) : (key, value) => !filter(key, value);\n\n\treturn exports.pick(input, exclusionFilter, options);\n};\n", "\"use strict\";\n\n// Dependencies\nvar protocols = require(\"protocols\"),\n isSsh = require(\"is-ssh\"),\n qs = require(\"query-string\");\n\n/**\n * parsePath\n * Parses the input url.\n *\n * @name parsePath\n * @function\n * @param {String} url The input url.\n * @return {Object} An object containing the following fields:\n *\n * - `protocols` (Array): An array with the url protocols (usually it has one element).\n * - `protocol` (String): The first protocol, `\"ssh\"` (if the url is a ssh url) or `\"file\"`.\n * - `port` (null|Number): The domain port.\n * - `resource` (String): The url domain (including subdomains).\n * - `user` (String): The authentication user (usually for ssh urls).\n * - `pathname` (String): The url pathname.\n * - `hash` (String): The url hash.\n * - `search` (String): The url querystring value.\n * - `href` (String): The input url.\n * - `query` (Object): The url querystring, parsed as object.\n */\nfunction parsePath(url) {\n url = (url || \"\").trim();\n var output = {\n protocols: protocols(url),\n protocol: null,\n port: null,\n resource: \"\",\n user: \"\",\n pathname: \"\",\n hash: \"\",\n search: \"\",\n href: url,\n query: Object.create(null)\n },\n protocolIndex = url.indexOf(\"://\"),\n resourceIndex = -1,\n splits = null,\n parts = null;\n\n if (url.startsWith(\".\")) {\n if (url.startsWith(\"./\")) {\n url = url.substring(2);\n }\n output.pathname = url;\n output.protocol = \"file\";\n }\n\n var firstChar = url.charAt(1);\n if (!output.protocol) {\n output.protocol = output.protocols[0];\n if (!output.protocol) {\n if (isSsh(url)) {\n output.protocol = \"ssh\";\n } else if (firstChar === \"/\" || firstChar === \"~\") {\n url = url.substring(2);\n output.protocol = \"file\";\n } else {\n output.protocol = \"file\";\n }\n }\n }\n\n if (protocolIndex !== -1) {\n url = url.substring(protocolIndex + 3);\n }\n\n parts = url.split(/\\/|\\\\/);\n if (output.protocol !== \"file\") {\n output.resource = parts.shift();\n } else {\n output.resource = \"\";\n }\n\n // user@domain\n splits = output.resource.split(\"@\");\n if (splits.length === 2) {\n output.user = splits[0];\n output.resource = splits[1];\n }\n\n // domain.com:port\n splits = output.resource.split(\":\");\n if (splits.length === 2) {\n output.resource = splits[0];\n if (splits[1]) {\n output.port = Number(splits[1]);\n if (isNaN(output.port)) {\n output.port = null;\n parts.unshift(splits[1]);\n }\n } else {\n output.port = null;\n }\n }\n\n // Remove empty elements\n parts = parts.filter(Boolean);\n\n // Stringify the pathname\n if (output.protocol === \"file\") {\n output.pathname = output.href;\n } else {\n output.pathname = output.pathname || (output.protocol !== \"file\" || output.href[0] === \"/\" ? \"/\" : \"\") + parts.join(\"/\");\n }\n\n // #some-hash\n splits = output.pathname.split(\"#\");\n if (splits.length === 2) {\n output.pathname = splits[0];\n output.hash = splits[1];\n }\n\n // ?foo=bar\n splits = output.pathname.split(\"?\");\n if (splits.length === 2) {\n output.pathname = splits[0];\n output.search = splits[1];\n }\n\n output.query = qs.parse(output.search);\n output.href = output.href.replace(/\\/$/, \"\");\n output.pathname = output.pathname.replace(/\\/$/, \"\");\n return output;\n}\n\nmodule.exports = parsePath;", "'use strict';\n// TODO: Use the `URL` global when targeting Node.js 10\nconst URLParser = typeof URL === 'undefined' ? require('url').URL : URL;\n\nconst testParameter = (name, filters) => {\n\treturn filters.some(filter => filter instanceof RegExp ? filter.test(name) : filter === name);\n};\n\nmodule.exports = (urlString, opts) => {\n\topts = Object.assign({\n\t\tdefaultProtocol: 'http:',\n\t\tnormalizeProtocol: true,\n\t\tforceHttp: false,\n\t\tforceHttps: false,\n\t\tstripHash: true,\n\t\tstripWWW: true,\n\t\tremoveQueryParameters: [/^utm_\\w+/i],\n\t\tremoveTrailingSlash: true,\n\t\tremoveDirectoryIndex: false,\n\t\tsortQueryParameters: true\n\t}, opts);\n\n\t// Backwards compatibility\n\tif (Reflect.has(opts, 'normalizeHttps')) {\n\t\topts.forceHttp = opts.normalizeHttps;\n\t}\n\n\tif (Reflect.has(opts, 'normalizeHttp')) {\n\t\topts.forceHttps = opts.normalizeHttp;\n\t}\n\n\tif (Reflect.has(opts, 'stripFragment')) {\n\t\topts.stripHash = opts.stripFragment;\n\t}\n\n\turlString = urlString.trim();\n\n\tconst hasRelativeProtocol = urlString.startsWith('//');\n\tconst isRelativeUrl = !hasRelativeProtocol && /^\\.*\\//.test(urlString);\n\n\t// Prepend protocol\n\tif (!isRelativeUrl) {\n\t\turlString = urlString.replace(/^(?!(?:\\w+:)?\\/\\/)|^\\/\\//, opts.defaultProtocol);\n\t}\n\n\tconst urlObj = new URLParser(urlString);\n\n\tif (opts.forceHttp && opts.forceHttps) {\n\t\tthrow new Error('The `forceHttp` and `forceHttps` options cannot be used together');\n\t}\n\n\tif (opts.forceHttp && urlObj.protocol === 'https:') {\n\t\turlObj.protocol = 'http:';\n\t}\n\n\tif (opts.forceHttps && urlObj.protocol === 'http:') {\n\t\turlObj.protocol = 'https:';\n\t}\n\n\t// Remove hash\n\tif (opts.stripHash) {\n\t\turlObj.hash = '';\n\t}\n\n\t// Remove duplicate slashes if not preceded by a protocol\n\tif (urlObj.pathname) {\n\t\t// TODO: Use the following instead when targeting Node.js 10\n\t\t// `urlObj.pathname = urlObj.pathname.replace(/(? {\n\t\t\tif (/^(?!\\/)/g.test(p1)) {\n\t\t\t\treturn `${p1}/`;\n\t\t\t}\n\t\t\treturn '/';\n\t\t});\n\t}\n\n\t// Decode URI octets\n\tif (urlObj.pathname) {\n\t\turlObj.pathname = decodeURI(urlObj.pathname);\n\t}\n\n\t// Remove directory index\n\tif (opts.removeDirectoryIndex === true) {\n\t\topts.removeDirectoryIndex = [/^index\\.[a-z]+$/];\n\t}\n\n\tif (Array.isArray(opts.removeDirectoryIndex) && opts.removeDirectoryIndex.length > 0) {\n\t\tlet pathComponents = urlObj.pathname.split('/');\n\t\tconst lastComponent = pathComponents[pathComponents.length - 1];\n\n\t\tif (testParameter(lastComponent, opts.removeDirectoryIndex)) {\n\t\t\tpathComponents = pathComponents.slice(0, pathComponents.length - 1);\n\t\t\turlObj.pathname = pathComponents.slice(1).join('/') + '/';\n\t\t}\n\t}\n\n\tif (urlObj.hostname) {\n\t\t// Remove trailing dot\n\t\turlObj.hostname = urlObj.hostname.replace(/\\.$/, '');\n\n\t\t// Remove `www.`\n\t\t// eslint-disable-next-line no-useless-escape\n\t\tif (opts.stripWWW && /^www\\.([a-z\\-\\d]{2,63})\\.([a-z\\.]{2,5})$/.test(urlObj.hostname)) {\n\t\t\t// Each label should be max 63 at length (min: 2).\n\t\t\t// The extension should be max 5 at length (min: 2).\n\t\t\t// Source: https://en.wikipedia.org/wiki/Hostname#Restrictions_on_valid_host_names\n\t\t\turlObj.hostname = urlObj.hostname.replace(/^www\\./, '');\n\t\t}\n\t}\n\n\t// Remove query unwanted parameters\n\tif (Array.isArray(opts.removeQueryParameters)) {\n\t\tfor (const key of [...urlObj.searchParams.keys()]) {\n\t\t\tif (testParameter(key, opts.removeQueryParameters)) {\n\t\t\t\turlObj.searchParams.delete(key);\n\t\t\t}\n\t\t}\n\t}\n\n\t// Sort query parameters\n\tif (opts.sortQueryParameters) {\n\t\turlObj.searchParams.sort();\n\t}\n\n\t// Take advantage of many of the Node `url` normalizations\n\turlString = urlObj.toString();\n\n\t// Remove ending `/`\n\tif (opts.removeTrailingSlash || urlObj.pathname === '/') {\n\t\turlString = urlString.replace(/\\/$/, '');\n\t}\n\n\t// Restore relative protocol, if applicable\n\tif (hasRelativeProtocol && !opts.normalizeProtocol) {\n\t\turlString = urlString.replace(/^http:\\/\\//, '//');\n\t}\n\n\treturn urlString;\n};\n", "\"use strict\";\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar parsePath = require(\"parse-path\"),\n normalizeUrl = require(\"normalize-url\");\n\n/**\n * parseUrl\n * Parses the input url.\n *\n * **Note**: This *throws* if invalid urls are provided.\n *\n * @name parseUrl\n * @function\n * @param {String} url The input url.\n * @param {Boolean|Object} normalize Wheter to normalize the url or not.\n * Default is `false`. If `true`, the url will\n * be normalized. If an object, it will be the\n * options object sent to [`normalize-url`](https://github.com/sindresorhus/normalize-url).\n *\n * For SSH urls, normalize won't work.\n *\n * @return {Object} An object containing the following fields:\n *\n * - `protocols` (Array): An array with the url protocols (usually it has one element).\n * - `protocol` (String): The first protocol, `\"ssh\"` (if the url is a ssh url) or `\"file\"`.\n * - `port` (null|Number): The domain port.\n * - `resource` (String): The url domain (including subdomains).\n * - `user` (String): The authentication user (usually for ssh urls).\n * - `pathname` (String): The url pathname.\n * - `hash` (String): The url hash.\n * - `search` (String): The url querystring value.\n * - `href` (String): The input url.\n * - `query` (Object): The url querystring, parsed as object.\n */\nfunction parseUrl(url) {\n var normalize = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n if (typeof url !== \"string\" || !url.trim()) {\n throw new Error(\"Invalid url.\");\n }\n if (normalize) {\n if ((typeof normalize === \"undefined\" ? \"undefined\" : _typeof(normalize)) !== \"object\") {\n normalize = {\n stripFragment: false\n };\n }\n url = normalizeUrl(url, normalize);\n }\n var parsed = parsePath(url);\n return parsed;\n}\n\nmodule.exports = parseUrl;", "\"use strict\";\n\n// Dependencies\n\nvar parseUrl = require(\"parse-url\"),\n isSsh = require(\"is-ssh\");\n\n/**\n * gitUp\n * Parses the input url.\n *\n * @name gitUp\n * @function\n * @param {String} input The input url.\n * @return {Object} An object containing the following fields:\n *\n * - `protocols` (Array): An array with the url protocols (usually it has one element).\n * - `port` (null|Number): The domain port.\n * - `resource` (String): The url domain (including subdomains).\n * - `user` (String): The authentication user (usually for ssh urls).\n * - `pathname` (String): The url pathname.\n * - `hash` (String): The url hash.\n * - `search` (String): The url querystring value.\n * - `href` (String): The input url.\n * - `protocol` (String): The git url protocol.\n * - `token` (String): The oauth token (could appear in the https urls).\n */\nfunction gitUp(input) {\n var output = parseUrl(input);\n output.token = \"\";\n\n var splits = output.user.split(\":\");\n if (splits.length === 2) {\n if (splits[1] === \"x-oauth-basic\") {\n output.token = splits[0];\n } else if (splits[0] === \"x-token-auth\") {\n output.token = splits[1];\n }\n }\n\n if (isSsh(output.protocols) || isSsh(input)) {\n output.protocol = \"ssh\";\n } else if (output.protocols.length) {\n output.protocol = output.protocols[0];\n } else {\n output.protocol = \"file\";\n }\n\n output.href = output.href.replace(/\\/$/, \"\");\n return output;\n}\n\nmodule.exports = gitUp;", "\"use strict\";\n\nvar gitUp = require(\"git-up\");\n\n/**\n * gitUrlParse\n * Parses a Git url.\n *\n * @name gitUrlParse\n * @function\n * @param {String} url The Git url to parse.\n * @return {GitUrl} The `GitUrl` object containing:\n *\n * - `protocols` (Array): An array with the url protocols (usually it has one element).\n * - `port` (null|Number): The domain port.\n * - `resource` (String): The url domain (including subdomains).\n * - `user` (String): The authentication user (usually for ssh urls).\n * - `pathname` (String): The url pathname.\n * - `hash` (String): The url hash.\n * - `search` (String): The url querystring value.\n * - `href` (String): The input url.\n * - `protocol` (String): The git url protocol.\n * - `token` (String): The oauth token (could appear in the https urls).\n * - `source` (String): The Git provider (e.g. `\"github.com\"`).\n * - `owner` (String): The repository owner.\n * - `name` (String): The repository name.\n * - `ref` (String): The repository ref (e.g., \"master\" or \"dev\").\n * - `filepath` (String): A filepath relative to the repository root.\n * - `filepathtype` (String): The type of filepath in the url (\"blob\" or \"tree\").\n * - `full_name` (String): The owner and name values in the `owner/name` format.\n * - `toString` (Function): A function to stringify the parsed url into another url type.\n * - `organization` (String): The organization the owner belongs to. This is CloudForge specific.\n * - `git_suffix` (Boolean): Whether to add the `.git` suffix or not.\n *\n */\nfunction gitUrlParse(url) {\n\n if (typeof url !== \"string\") {\n throw new Error(\"The url must be a string.\");\n }\n\n var urlInfo = gitUp(url),\n sourceParts = urlInfo.resource.split(\".\"),\n splits = null;\n\n urlInfo.toString = function (type) {\n return gitUrlParse.stringify(this, type);\n };\n\n urlInfo.source = sourceParts.length > 2 ? sourceParts.slice(1 - sourceParts.length).join(\".\") : urlInfo.source = urlInfo.resource;\n\n // Note: Some hosting services (e.g. Visual Studio Team Services) allow whitespace characters\n // in the repository and owner names so we decode the URL pieces to get the correct result\n urlInfo.git_suffix = /\\.git$/.test(urlInfo.pathname);\n urlInfo.name = decodeURIComponent(urlInfo.pathname.replace(/^\\//, '').replace(/\\.git$/, \"\"));\n urlInfo.owner = decodeURIComponent(urlInfo.user);\n\n switch (urlInfo.source) {\n case \"git.cloudforge.com\":\n urlInfo.owner = urlInfo.user;\n urlInfo.organization = sourceParts[0];\n urlInfo.source = \"cloudforge.com\";\n break;\n case \"visualstudio.com\":\n // Handle VSTS SSH URLs\n if (urlInfo.resource === 'vs-ssh.visualstudio.com') {\n splits = urlInfo.name.split(\"/\");\n if (splits.length === 4) {\n urlInfo.organization = splits[1];\n urlInfo.owner = splits[2];\n urlInfo.name = splits[3];\n urlInfo.full_name = splits[2] + '/' + splits[3];\n }\n break;\n } else {\n splits = urlInfo.name.split(\"/\");\n if (splits.length === 2) {\n urlInfo.owner = splits[1];\n urlInfo.name = splits[1];\n urlInfo.full_name = '_git/' + urlInfo.name;\n } else if (splits.length === 3) {\n urlInfo.name = splits[2];\n if (splits[0] === 'DefaultCollection') {\n urlInfo.owner = splits[2];\n urlInfo.organization = splits[0];\n urlInfo.full_name = urlInfo.organization + '/_git/' + urlInfo.name;\n } else {\n urlInfo.owner = splits[0];\n urlInfo.full_name = urlInfo.owner + '/_git/' + urlInfo.name;\n }\n } else if (splits.length === 4) {\n urlInfo.organization = splits[0];\n urlInfo.owner = splits[1];\n urlInfo.name = splits[3];\n urlInfo.full_name = urlInfo.organization + '/' + urlInfo.owner + '/_git/' + urlInfo.name;\n }\n break;\n }\n\n // Azure DevOps (formerly Visual Studio Team Services)\n case \"dev.azure.com\":\n case \"azure.com\":\n if (urlInfo.resource === 'ssh.dev.azure.com') {\n splits = urlInfo.name.split(\"/\");\n if (splits.length === 4) {\n urlInfo.organization = splits[1];\n urlInfo.owner = splits[2];\n urlInfo.name = splits[3];\n }\n break;\n } else {\n splits = urlInfo.name.split(\"/\");\n if (splits.length === 5) {\n urlInfo.organization = splits[0];\n urlInfo.owner = splits[1];\n urlInfo.name = splits[4];\n urlInfo.full_name = '_git/' + urlInfo.name;\n } else if (splits.length === 3) {\n urlInfo.name = splits[2];\n if (splits[0] === 'DefaultCollection') {\n urlInfo.owner = splits[2];\n urlInfo.organization = splits[0];\n urlInfo.full_name = urlInfo.organization + '/_git/' + urlInfo.name;\n } else {\n urlInfo.owner = splits[0];\n urlInfo.full_name = urlInfo.owner + '/_git/' + urlInfo.name;\n }\n } else if (splits.length === 4) {\n urlInfo.organization = splits[0];\n urlInfo.owner = splits[1];\n urlInfo.name = splits[3];\n urlInfo.full_name = urlInfo.organization + '/' + urlInfo.owner + '/_git/' + urlInfo.name;\n }\n if (urlInfo.query && urlInfo.query['path']) {\n urlInfo.filepath = urlInfo.query['path'].replace(/^\\/+/g, ''); // Strip leading slash (/)\n }\n if (urlInfo.query && urlInfo.query['version']) {\n // version=GB\n urlInfo.ref = urlInfo.query['version'].replace(/^GB/, ''); // remove GB\n }\n break;\n }\n default:\n splits = urlInfo.name.split(\"/\");\n var nameIndex = splits.length - 1;\n if (splits.length >= 2) {\n var dashIndex = splits.indexOf(\"-\", 2);\n var blobIndex = splits.indexOf(\"blob\", 2);\n var treeIndex = splits.indexOf(\"tree\", 2);\n var commitIndex = splits.indexOf(\"commit\", 2);\n var srcIndex = splits.indexOf(\"src\", 2);\n var rawIndex = splits.indexOf(\"raw\", 2);\n nameIndex = dashIndex > 0 ? dashIndex - 1 : blobIndex > 0 ? blobIndex - 1 : treeIndex > 0 ? treeIndex - 1 : commitIndex > 0 ? commitIndex - 1 : srcIndex > 0 ? srcIndex - 1 : rawIndex > 0 ? rawIndex - 1 : nameIndex;\n\n urlInfo.owner = splits.slice(0, nameIndex).join('/');\n urlInfo.name = splits[nameIndex];\n if (commitIndex) {\n urlInfo.commit = splits[nameIndex + 2];\n }\n }\n\n urlInfo.ref = \"\";\n urlInfo.filepathtype = \"\";\n urlInfo.filepath = \"\";\n var offsetNameIndex = splits.length > nameIndex && splits[nameIndex + 1] === \"-\" ? nameIndex + 1 : nameIndex;\n if (splits.length > offsetNameIndex + 2 && [\"raw\", \"src\", \"blob\", \"tree\"].indexOf(splits[offsetNameIndex + 1]) >= 0) {\n urlInfo.filepathtype = splits[offsetNameIndex + 1];\n urlInfo.ref = splits[offsetNameIndex + 2];\n if (splits.length > offsetNameIndex + 3) {\n urlInfo.filepath = splits.slice(offsetNameIndex + 3).join('/');\n }\n }\n urlInfo.organization = urlInfo.owner;\n break;\n }\n\n if (!urlInfo.full_name) {\n urlInfo.full_name = urlInfo.owner;\n if (urlInfo.name) {\n urlInfo.full_name && (urlInfo.full_name += \"/\");\n urlInfo.full_name += urlInfo.name;\n }\n }\n // Bitbucket Server\n if (urlInfo.owner.startsWith(\"scm/\")) {\n urlInfo.source = \"bitbucket-server\";\n urlInfo.owner = urlInfo.owner.replace(\"scm/\", \"\");\n urlInfo.organization = urlInfo.owner;\n urlInfo.full_name = urlInfo.owner + \"/\" + urlInfo.name;\n }\n\n var bitbucket = /(projects|users)\\/(.*?)\\/repos\\/(.*?)\\/(raw|browse)(?:\\/(?:$|(.+?)))?$/;\n var matches = bitbucket.exec(urlInfo.pathname);\n if (matches != null) {\n urlInfo.source = \"bitbucket-server\";\n if (matches[1] === \"users\") {\n urlInfo.owner = \"~\" + matches[2];\n } else {\n urlInfo.owner = matches[2];\n }\n\n urlInfo.organization = urlInfo.owner;\n urlInfo.name = matches[3];\n urlInfo.filepathtype = matches[4];\n urlInfo.filepath = matches[5];\n urlInfo.full_name = urlInfo.owner + \"/\" + urlInfo.name;\n\n if (urlInfo.query.at) {\n urlInfo.ref = urlInfo.query.at;\n } else {\n urlInfo.ref = \"\";\n }\n }\n return urlInfo;\n}\n\n/**\n * stringify\n * Stringifies a `GitUrl` object.\n *\n * @name stringify\n * @function\n * @param {GitUrl} obj The parsed Git url object.\n * @param {String} type The type of the stringified url (default `obj.protocol`).\n * @return {String} The stringified url.\n */\ngitUrlParse.stringify = function (obj, type) {\n type = type || (obj.protocols && obj.protocols.length ? obj.protocols.join('+') : obj.protocol);\n var port = obj.port ? \":\" + obj.port : '';\n var user = obj.user || 'git';\n var maybeGitSuffix = obj.git_suffix ? \".git\" : \"\";\n switch (type) {\n case \"ssh\":\n if (port) return \"ssh://\" + user + \"@\" + obj.resource + port + \"/\" + obj.full_name + maybeGitSuffix;else return user + \"@\" + obj.resource + \":\" + obj.full_name + maybeGitSuffix;\n case \"git+ssh\":\n case \"ssh+git\":\n case \"ftp\":\n case \"ftps\":\n return type + \"://\" + user + \"@\" + obj.resource + port + \"/\" + obj.full_name + maybeGitSuffix;\n case \"http\":\n case \"https\":\n var auth = obj.token ? buildToken(obj) : obj.user && (obj.protocols.includes('http') || obj.protocols.includes('https')) ? obj.user + \"@\" : \"\";\n return type + \"://\" + auth + obj.resource + port + \"/\" + buildPath(obj) + maybeGitSuffix;\n default:\n return obj.href;\n }\n};\n\n/*!\n * buildToken\n * Builds OAuth token prefix (helper function)\n *\n * @name buildToken\n * @function\n * @param {GitUrl} obj The parsed Git url object.\n * @return {String} token prefix\n */\nfunction buildToken(obj) {\n switch (obj.source) {\n case \"bitbucket.org\":\n return \"x-token-auth:\" + obj.token + \"@\";\n default:\n return obj.token + \"@\";\n }\n}\n\nfunction buildPath(obj) {\n switch (obj.source) {\n case \"bitbucket-server\":\n return \"scm/\" + obj.full_name;\n default:\n return \"\" + obj.full_name;\n\n }\n}\n\nmodule.exports = gitUrlParse;", "'use strict';\nvar toString = Object.prototype.toString;\n\nmodule.exports = function (x) {\n\tvar prototype;\n\treturn toString.call(x) === '[object Object]' && (prototype = Object.getPrototypeOf(x), prototype === null || prototype === Object.getPrototypeOf({}));\n};\n", "'use strict';\nmodule.exports = function (val) {\n\tif (val === null || val === undefined) {\n\t\treturn [];\n\t}\n\n\treturn Array.isArray(val) ? val : [val];\n};\n", "var toString = Object.prototype.toString;\n\nmodule.exports = function kindOf(val) {\n if (val === void 0) return 'undefined';\n if (val === null) return 'null';\n\n var type = typeof val;\n if (type === 'boolean') return 'boolean';\n if (type === 'string') return 'string';\n if (type === 'number') return 'number';\n if (type === 'symbol') return 'symbol';\n if (type === 'function') {\n return isGeneratorFn(val) ? 'generatorfunction' : 'function';\n }\n\n if (isArray(val)) return 'array';\n if (isBuffer(val)) return 'buffer';\n if (isArguments(val)) return 'arguments';\n if (isDate(val)) return 'date';\n if (isError(val)) return 'error';\n if (isRegexp(val)) return 'regexp';\n\n switch (ctorName(val)) {\n case 'Symbol': return 'symbol';\n case 'Promise': return 'promise';\n\n // Set, Map, WeakSet, WeakMap\n case 'WeakMap': return 'weakmap';\n case 'WeakSet': return 'weakset';\n case 'Map': return 'map';\n case 'Set': return 'set';\n\n // 8-bit typed arrays\n case 'Int8Array': return 'int8array';\n case 'Uint8Array': return 'uint8array';\n case 'Uint8ClampedArray': return 'uint8clampedarray';\n\n // 16-bit typed arrays\n case 'Int16Array': return 'int16array';\n case 'Uint16Array': return 'uint16array';\n\n // 32-bit typed arrays\n case 'Int32Array': return 'int32array';\n case 'Uint32Array': return 'uint32array';\n case 'Float32Array': return 'float32array';\n case 'Float64Array': return 'float64array';\n }\n\n if (isGeneratorObj(val)) {\n return 'generator';\n }\n\n // Non-plain objects\n type = toString.call(val);\n switch (type) {\n case '[object Object]': return 'object';\n // iterators\n case '[object Map Iterator]': return 'mapiterator';\n case '[object Set Iterator]': return 'setiterator';\n case '[object String Iterator]': return 'stringiterator';\n case '[object Array Iterator]': return 'arrayiterator';\n }\n\n // other\n return type.slice(8, -1).toLowerCase().replace(/\\s/g, '');\n};\n\nfunction ctorName(val) {\n return typeof val.constructor === 'function' ? val.constructor.name : null;\n}\n\nfunction isArray(val) {\n if (Array.isArray) return Array.isArray(val);\n return val instanceof Array;\n}\n\nfunction isError(val) {\n return val instanceof Error || (typeof val.message === 'string' && val.constructor && typeof val.constructor.stackTraceLimit === 'number');\n}\n\nfunction isDate(val) {\n if (val instanceof Date) return true;\n return typeof val.toDateString === 'function'\n && typeof val.getDate === 'function'\n && typeof val.setDate === 'function';\n}\n\nfunction isRegexp(val) {\n if (val instanceof RegExp) return true;\n return typeof val.flags === 'string'\n && typeof val.ignoreCase === 'boolean'\n && typeof val.multiline === 'boolean'\n && typeof val.global === 'boolean';\n}\n\nfunction isGeneratorFn(name, val) {\n return ctorName(name) === 'GeneratorFunction';\n}\n\nfunction isGeneratorObj(val) {\n return typeof val.throw === 'function'\n && typeof val.return === 'function'\n && typeof val.next === 'function';\n}\n\nfunction isArguments(val) {\n try {\n if (typeof val.length === 'number' && typeof val.callee === 'function') {\n return true;\n }\n } catch (err) {\n if (err.message.indexOf('callee') !== -1) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * If you need to support Safari 5-7 (8-10 yr-old browser),\n * take a look at https://github.com/feross/is-buffer\n */\n\nfunction isBuffer(val) {\n if (val.constructor && typeof val.constructor.isBuffer === 'function') {\n return val.constructor.isBuffer(val);\n }\n return false;\n}\n", "'use strict';\n\nconst isPlainObject = require('is-plain-obj');\nconst arrify = require('arrify');\nconst kindOf = require('kind-of');\n\nconst push = (obj, prop, value) => {\n\tif (!obj[prop]) {\n\t\tobj[prop] = [];\n\t}\n\n\tobj[prop].push(value);\n};\n\nconst insert = (obj, prop, key, value) => {\n\tif (!obj[prop]) {\n\t\tobj[prop] = {};\n\t}\n\n\tobj[prop][key] = value;\n};\n\nconst prettyPrint = output => {\n\treturn Array.isArray(output) ?\n\t\t`[${output.map(prettyPrint).join(', ')}]` :\n\t\tkindOf(output) === 'string' ? JSON.stringify(output) : output;\n};\n\nconst resolveType = value => {\n\tif (Array.isArray(value) && value.length > 0) {\n\t\tconst [element] = value;\n\t\treturn `${kindOf(element)}-array`;\n\t}\n\n\treturn kindOf(value);\n};\n\nconst normalizeExpectedType = (type, defaultValue) => {\n\tconst inferredType = type === 'array' ? 'string-array' : type;\n\n\tif (arrayTypes.includes(inferredType) && Array.isArray(defaultValue) && defaultValue.length === 0) {\n\t\treturn 'array';\n\t}\n\n\treturn inferredType;\n};\n\nconst passthroughOptions = ['stopEarly', 'unknown', '--'];\nconst primitiveTypes = ['string', 'boolean', 'number'];\nconst arrayTypes = primitiveTypes.map(t => `${t}-array`);\nconst availableTypes = [...primitiveTypes, 'array', ...arrayTypes];\n\nconst buildOptions = options => {\n\toptions = options || {};\n\n\tconst result = {};\n\n\tpassthroughOptions.forEach(key => {\n\t\tif (options[key]) {\n\t\t\tresult[key] = options[key];\n\t\t}\n\t});\n\n\tObject.keys(options).forEach(key => {\n\t\tlet value = options[key];\n\n\t\tif (key === 'arguments') {\n\t\t\tkey = '_';\n\t\t}\n\n\t\t// If short form is used\n\t\t// convert it to long form\n\t\t// e.g. { 'name': 'string' }\n\t\tif (typeof value === 'string') {\n\t\t\tvalue = {type: value};\n\t\t}\n\n\t\tif (isPlainObject(value)) {\n\t\t\tconst props = value;\n\t\t\tconst {type} = props;\n\n\t\t\tif (type) {\n\t\t\t\tif (!availableTypes.includes(type)) {\n\t\t\t\t\tthrow new TypeError(`Expected type of \"${key}\" to be one of ${prettyPrint(availableTypes)}, got ${prettyPrint(type)}`);\n\t\t\t\t}\n\n\t\t\t\tif (arrayTypes.includes(type)) {\n\t\t\t\t\tconst [elementType] = type.split('-');\n\t\t\t\t\tpush(result, 'array', {key, [elementType]: true});\n\t\t\t\t} else {\n\t\t\t\t\tpush(result, type, key);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ({}.hasOwnProperty.call(props, 'default')) {\n\t\t\t\tconst {default: defaultValue} = props;\n\t\t\t\tconst defaultType = resolveType(defaultValue);\n\t\t\t\tconst expectedType = normalizeExpectedType(type, defaultValue);\n\n\t\t\t\tif (expectedType && expectedType !== defaultType) {\n\t\t\t\t\tthrow new TypeError(`Expected \"${key}\" default value to be of type \"${expectedType}\", got ${prettyPrint(defaultType)}`);\n\t\t\t\t}\n\n\t\t\t\tinsert(result, 'default', key, defaultValue);\n\t\t\t}\n\n\t\t\tarrify(props.alias).forEach(alias => {\n\t\t\t\tinsert(result, 'alias', alias, key);\n\t\t\t});\n\t\t}\n\t});\n\n\treturn result;\n};\n\nmodule.exports = buildOptions;\nmodule.exports.default = buildOptions;\n", "'use strict';\n\nvar util = require('util');\nvar fs = require('fs');\nvar path = require('path');\n\nfunction camelCase(str) {\n str = str.toLocaleLowerCase();\n if (str.indexOf('-') === -1 && str.indexOf('_') === -1) {\n return str;\n }\n else {\n let camelcase = '';\n let nextChrUpper = false;\n const leadingHyphens = str.match(/^-+/);\n for (let i = leadingHyphens ? leadingHyphens[0].length : 0; i < str.length; i++) {\n let chr = str.charAt(i);\n if (nextChrUpper) {\n nextChrUpper = false;\n chr = chr.toLocaleUpperCase();\n }\n if (i !== 0 && (chr === '-' || chr === '_')) {\n nextChrUpper = true;\n continue;\n }\n else if (chr !== '-' && chr !== '_') {\n camelcase += chr;\n }\n }\n return camelcase;\n }\n}\nfunction decamelize(str, joinString) {\n const lowercase = str.toLocaleLowerCase();\n joinString = joinString || '-';\n let notCamelcase = '';\n for (let i = 0; i < str.length; i++) {\n const chrLower = lowercase.charAt(i);\n const chrString = str.charAt(i);\n if (chrLower !== chrString && i > 0) {\n notCamelcase += `${joinString}${lowercase.charAt(i)}`;\n }\n else {\n notCamelcase += chrString;\n }\n }\n return notCamelcase;\n}\nfunction looksLikeNumber(x) {\n if (x === null || x === undefined)\n return false;\n if (typeof x === 'number')\n return true;\n if (/^0x[0-9a-f]+$/i.test(x))\n return true;\n if (x.length > 1 && x[0] === '0')\n return false;\n return /^[-]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(e[-+]?\\d+)?$/.test(x);\n}\n\nfunction tokenizeArgString(argString) {\n if (Array.isArray(argString)) {\n return argString.map(e => typeof e !== 'string' ? e + '' : e);\n }\n argString = argString.trim();\n let i = 0;\n let prevC = null;\n let c = null;\n let opening = null;\n const args = [];\n for (let ii = 0; ii < argString.length; ii++) {\n prevC = c;\n c = argString.charAt(ii);\n if (c === ' ' && !opening) {\n if (!(prevC === ' ')) {\n i++;\n }\n continue;\n }\n if (c === opening) {\n opening = null;\n }\n else if ((c === \"'\" || c === '\"') && !opening) {\n opening = c;\n }\n if (!args[i])\n args[i] = '';\n args[i] += c;\n }\n return args;\n}\n\nlet mixin;\nclass YargsParser {\n constructor(_mixin) {\n mixin = _mixin;\n }\n parse(argsInput, options) {\n const opts = Object.assign({\n alias: undefined,\n array: undefined,\n boolean: undefined,\n config: undefined,\n configObjects: undefined,\n configuration: undefined,\n coerce: undefined,\n count: undefined,\n default: undefined,\n envPrefix: undefined,\n narg: undefined,\n normalize: undefined,\n string: undefined,\n number: undefined,\n __: undefined,\n key: undefined\n }, options);\n const args = tokenizeArgString(argsInput);\n const aliases = combineAliases(Object.assign(Object.create(null), opts.alias));\n const configuration = Object.assign({\n 'boolean-negation': true,\n 'camel-case-expansion': true,\n 'combine-arrays': false,\n 'dot-notation': true,\n 'duplicate-arguments-array': true,\n 'flatten-duplicate-arrays': true,\n 'greedy-arrays': true,\n 'halt-at-non-option': false,\n 'nargs-eats-options': false,\n 'negation-prefix': 'no-',\n 'parse-numbers': true,\n 'parse-positional-numbers': true,\n 'populate--': false,\n 'set-placeholder-key': false,\n 'short-option-groups': true,\n 'strip-aliased': false,\n 'strip-dashed': false,\n 'unknown-options-as-args': false\n }, opts.configuration);\n const defaults = Object.assign(Object.create(null), opts.default);\n const configObjects = opts.configObjects || [];\n const envPrefix = opts.envPrefix;\n const notFlagsOption = configuration['populate--'];\n const notFlagsArgv = notFlagsOption ? '--' : '_';\n const newAliases = Object.create(null);\n const defaulted = Object.create(null);\n const __ = opts.__ || mixin.format;\n const flags = {\n aliases: Object.create(null),\n arrays: Object.create(null),\n bools: Object.create(null),\n strings: Object.create(null),\n numbers: Object.create(null),\n counts: Object.create(null),\n normalize: Object.create(null),\n configs: Object.create(null),\n nargs: Object.create(null),\n coercions: Object.create(null),\n keys: []\n };\n const negative = /^-([0-9]+(\\.[0-9]+)?|\\.[0-9]+)$/;\n const negatedBoolean = new RegExp('^--' + configuration['negation-prefix'] + '(.+)');\n [].concat(opts.array || []).filter(Boolean).forEach(function (opt) {\n const key = typeof opt === 'object' ? opt.key : opt;\n const assignment = Object.keys(opt).map(function (key) {\n const arrayFlagKeys = {\n boolean: 'bools',\n string: 'strings',\n number: 'numbers'\n };\n return arrayFlagKeys[key];\n }).filter(Boolean).pop();\n if (assignment) {\n flags[assignment][key] = true;\n }\n flags.arrays[key] = true;\n flags.keys.push(key);\n });\n [].concat(opts.boolean || []).filter(Boolean).forEach(function (key) {\n flags.bools[key] = true;\n flags.keys.push(key);\n });\n [].concat(opts.string || []).filter(Boolean).forEach(function (key) {\n flags.strings[key] = true;\n flags.keys.push(key);\n });\n [].concat(opts.number || []).filter(Boolean).forEach(function (key) {\n flags.numbers[key] = true;\n flags.keys.push(key);\n });\n [].concat(opts.count || []).filter(Boolean).forEach(function (key) {\n flags.counts[key] = true;\n flags.keys.push(key);\n });\n [].concat(opts.normalize || []).filter(Boolean).forEach(function (key) {\n flags.normalize[key] = true;\n flags.keys.push(key);\n });\n if (typeof opts.narg === 'object') {\n Object.entries(opts.narg).forEach(([key, value]) => {\n if (typeof value === 'number') {\n flags.nargs[key] = value;\n flags.keys.push(key);\n }\n });\n }\n if (typeof opts.coerce === 'object') {\n Object.entries(opts.coerce).forEach(([key, value]) => {\n if (typeof value === 'function') {\n flags.coercions[key] = value;\n flags.keys.push(key);\n }\n });\n }\n if (typeof opts.config !== 'undefined') {\n if (Array.isArray(opts.config) || typeof opts.config === 'string') {\n [].concat(opts.config).filter(Boolean).forEach(function (key) {\n flags.configs[key] = true;\n });\n }\n else if (typeof opts.config === 'object') {\n Object.entries(opts.config).forEach(([key, value]) => {\n if (typeof value === 'boolean' || typeof value === 'function') {\n flags.configs[key] = value;\n }\n });\n }\n }\n extendAliases(opts.key, aliases, opts.default, flags.arrays);\n Object.keys(defaults).forEach(function (key) {\n (flags.aliases[key] || []).forEach(function (alias) {\n defaults[alias] = defaults[key];\n });\n });\n let error = null;\n checkConfiguration();\n let notFlags = [];\n const argv = Object.assign(Object.create(null), { _: [] });\n const argvReturn = {};\n for (let i = 0; i < args.length; i++) {\n const arg = args[i];\n let broken;\n let key;\n let letters;\n let m;\n let next;\n let value;\n if (arg !== '--' && isUnknownOptionAsArg(arg)) {\n pushPositional(arg);\n }\n else if (arg.match(/^--.+=/) || (!configuration['short-option-groups'] && arg.match(/^-.+=/))) {\n m = arg.match(/^--?([^=]+)=([\\s\\S]*)$/);\n if (m !== null && Array.isArray(m) && m.length >= 3) {\n if (checkAllAliases(m[1], flags.arrays)) {\n i = eatArray(i, m[1], args, m[2]);\n }\n else if (checkAllAliases(m[1], flags.nargs) !== false) {\n i = eatNargs(i, m[1], args, m[2]);\n }\n else {\n setArg(m[1], m[2]);\n }\n }\n }\n else if (arg.match(negatedBoolean) && configuration['boolean-negation']) {\n m = arg.match(negatedBoolean);\n if (m !== null && Array.isArray(m) && m.length >= 2) {\n key = m[1];\n setArg(key, checkAllAliases(key, flags.arrays) ? [false] : false);\n }\n }\n else if (arg.match(/^--.+/) || (!configuration['short-option-groups'] && arg.match(/^-[^-]+/))) {\n m = arg.match(/^--?(.+)/);\n if (m !== null && Array.isArray(m) && m.length >= 2) {\n key = m[1];\n if (checkAllAliases(key, flags.arrays)) {\n i = eatArray(i, key, args);\n }\n else if (checkAllAliases(key, flags.nargs) !== false) {\n i = eatNargs(i, key, args);\n }\n else {\n next = args[i + 1];\n if (next !== undefined && (!next.match(/^-/) ||\n next.match(negative)) &&\n !checkAllAliases(key, flags.bools) &&\n !checkAllAliases(key, flags.counts)) {\n setArg(key, next);\n i++;\n }\n else if (/^(true|false)$/.test(next)) {\n setArg(key, next);\n i++;\n }\n else {\n setArg(key, defaultValue(key));\n }\n }\n }\n }\n else if (arg.match(/^-.\\..+=/)) {\n m = arg.match(/^-([^=]+)=([\\s\\S]*)$/);\n if (m !== null && Array.isArray(m) && m.length >= 3) {\n setArg(m[1], m[2]);\n }\n }\n else if (arg.match(/^-.\\..+/) && !arg.match(negative)) {\n next = args[i + 1];\n m = arg.match(/^-(.\\..+)/);\n if (m !== null && Array.isArray(m) && m.length >= 2) {\n key = m[1];\n if (next !== undefined && !next.match(/^-/) &&\n !checkAllAliases(key, flags.bools) &&\n !checkAllAliases(key, flags.counts)) {\n setArg(key, next);\n i++;\n }\n else {\n setArg(key, defaultValue(key));\n }\n }\n }\n else if (arg.match(/^-[^-]+/) && !arg.match(negative)) {\n letters = arg.slice(1, -1).split('');\n broken = false;\n for (let j = 0; j < letters.length; j++) {\n next = arg.slice(j + 2);\n if (letters[j + 1] && letters[j + 1] === '=') {\n value = arg.slice(j + 3);\n key = letters[j];\n if (checkAllAliases(key, flags.arrays)) {\n i = eatArray(i, key, args, value);\n }\n else if (checkAllAliases(key, flags.nargs) !== false) {\n i = eatNargs(i, key, args, value);\n }\n else {\n setArg(key, value);\n }\n broken = true;\n break;\n }\n if (next === '-') {\n setArg(letters[j], next);\n continue;\n }\n if (/[A-Za-z]/.test(letters[j]) &&\n /^-?\\d+(\\.\\d*)?(e-?\\d+)?$/.test(next) &&\n checkAllAliases(next, flags.bools) === false) {\n setArg(letters[j], next);\n broken = true;\n break;\n }\n if (letters[j + 1] && letters[j + 1].match(/\\W/)) {\n setArg(letters[j], next);\n broken = true;\n break;\n }\n else {\n setArg(letters[j], defaultValue(letters[j]));\n }\n }\n key = arg.slice(-1)[0];\n if (!broken && key !== '-') {\n if (checkAllAliases(key, flags.arrays)) {\n i = eatArray(i, key, args);\n }\n else if (checkAllAliases(key, flags.nargs) !== false) {\n i = eatNargs(i, key, args);\n }\n else {\n next = args[i + 1];\n if (next !== undefined && (!/^(-|--)[^-]/.test(next) ||\n next.match(negative)) &&\n !checkAllAliases(key, flags.bools) &&\n !checkAllAliases(key, flags.counts)) {\n setArg(key, next);\n i++;\n }\n else if (/^(true|false)$/.test(next)) {\n setArg(key, next);\n i++;\n }\n else {\n setArg(key, defaultValue(key));\n }\n }\n }\n }\n else if (arg.match(/^-[0-9]$/) &&\n arg.match(negative) &&\n checkAllAliases(arg.slice(1), flags.bools)) {\n key = arg.slice(1);\n setArg(key, defaultValue(key));\n }\n else if (arg === '--') {\n notFlags = args.slice(i + 1);\n break;\n }\n else if (configuration['halt-at-non-option']) {\n notFlags = args.slice(i);\n break;\n }\n else {\n pushPositional(arg);\n }\n }\n applyEnvVars(argv, true);\n applyEnvVars(argv, false);\n setConfig(argv);\n setConfigObjects();\n applyDefaultsAndAliases(argv, flags.aliases, defaults, true);\n applyCoercions(argv);\n if (configuration['set-placeholder-key'])\n setPlaceholderKeys(argv);\n Object.keys(flags.counts).forEach(function (key) {\n if (!hasKey(argv, key.split('.')))\n setArg(key, 0);\n });\n if (notFlagsOption && notFlags.length)\n argv[notFlagsArgv] = [];\n notFlags.forEach(function (key) {\n argv[notFlagsArgv].push(key);\n });\n if (configuration['camel-case-expansion'] && configuration['strip-dashed']) {\n Object.keys(argv).filter(key => key !== '--' && key.includes('-')).forEach(key => {\n delete argv[key];\n });\n }\n if (configuration['strip-aliased']) {\n [].concat(...Object.keys(aliases).map(k => aliases[k])).forEach(alias => {\n if (configuration['camel-case-expansion'] && alias.includes('-')) {\n delete argv[alias.split('.').map(prop => camelCase(prop)).join('.')];\n }\n delete argv[alias];\n });\n }\n function pushPositional(arg) {\n const maybeCoercedNumber = maybeCoerceNumber('_', arg);\n if (typeof maybeCoercedNumber === 'string' || typeof maybeCoercedNumber === 'number') {\n argv._.push(maybeCoercedNumber);\n }\n }\n function eatNargs(i, key, args, argAfterEqualSign) {\n let ii;\n let toEat = checkAllAliases(key, flags.nargs);\n toEat = typeof toEat !== 'number' || isNaN(toEat) ? 1 : toEat;\n if (toEat === 0) {\n if (!isUndefined(argAfterEqualSign)) {\n error = Error(__('Argument unexpected for: %s', key));\n }\n setArg(key, defaultValue(key));\n return i;\n }\n let available = isUndefined(argAfterEqualSign) ? 0 : 1;\n if (configuration['nargs-eats-options']) {\n if (args.length - (i + 1) + available < toEat) {\n error = Error(__('Not enough arguments following: %s', key));\n }\n available = toEat;\n }\n else {\n for (ii = i + 1; ii < args.length; ii++) {\n if (!args[ii].match(/^-[^0-9]/) || args[ii].match(negative) || isUnknownOptionAsArg(args[ii]))\n available++;\n else\n break;\n }\n if (available < toEat)\n error = Error(__('Not enough arguments following: %s', key));\n }\n let consumed = Math.min(available, toEat);\n if (!isUndefined(argAfterEqualSign) && consumed > 0) {\n setArg(key, argAfterEqualSign);\n consumed--;\n }\n for (ii = i + 1; ii < (consumed + i + 1); ii++) {\n setArg(key, args[ii]);\n }\n return (i + consumed);\n }\n function eatArray(i, key, args, argAfterEqualSign) {\n let argsToSet = [];\n let next = argAfterEqualSign || args[i + 1];\n const nargsCount = checkAllAliases(key, flags.nargs);\n if (checkAllAliases(key, flags.bools) && !(/^(true|false)$/.test(next))) {\n argsToSet.push(true);\n }\n else if (isUndefined(next) ||\n (isUndefined(argAfterEqualSign) && /^-/.test(next) && !negative.test(next) && !isUnknownOptionAsArg(next))) {\n if (defaults[key] !== undefined) {\n const defVal = defaults[key];\n argsToSet = Array.isArray(defVal) ? defVal : [defVal];\n }\n }\n else {\n if (!isUndefined(argAfterEqualSign)) {\n argsToSet.push(processValue(key, argAfterEqualSign));\n }\n for (let ii = i + 1; ii < args.length; ii++) {\n if ((!configuration['greedy-arrays'] && argsToSet.length > 0) ||\n (nargsCount && typeof nargsCount === 'number' && argsToSet.length >= nargsCount))\n break;\n next = args[ii];\n if (/^-/.test(next) && !negative.test(next) && !isUnknownOptionAsArg(next))\n break;\n i = ii;\n argsToSet.push(processValue(key, next));\n }\n }\n if (typeof nargsCount === 'number' && ((nargsCount && argsToSet.length < nargsCount) ||\n (isNaN(nargsCount) && argsToSet.length === 0))) {\n error = Error(__('Not enough arguments following: %s', key));\n }\n setArg(key, argsToSet);\n return i;\n }\n function setArg(key, val) {\n if (/-/.test(key) && configuration['camel-case-expansion']) {\n const alias = key.split('.').map(function (prop) {\n return camelCase(prop);\n }).join('.');\n addNewAlias(key, alias);\n }\n const value = processValue(key, val);\n const splitKey = key.split('.');\n setKey(argv, splitKey, value);\n if (flags.aliases[key]) {\n flags.aliases[key].forEach(function (x) {\n const keyProperties = x.split('.');\n setKey(argv, keyProperties, value);\n });\n }\n if (splitKey.length > 1 && configuration['dot-notation']) {\n (flags.aliases[splitKey[0]] || []).forEach(function (x) {\n let keyProperties = x.split('.');\n const a = [].concat(splitKey);\n a.shift();\n keyProperties = keyProperties.concat(a);\n if (!(flags.aliases[key] || []).includes(keyProperties.join('.'))) {\n setKey(argv, keyProperties, value);\n }\n });\n }\n if (checkAllAliases(key, flags.normalize) && !checkAllAliases(key, flags.arrays)) {\n const keys = [key].concat(flags.aliases[key] || []);\n keys.forEach(function (key) {\n Object.defineProperty(argvReturn, key, {\n enumerable: true,\n get() {\n return val;\n },\n set(value) {\n val = typeof value === 'string' ? mixin.normalize(value) : value;\n }\n });\n });\n }\n }\n function addNewAlias(key, alias) {\n if (!(flags.aliases[key] && flags.aliases[key].length)) {\n flags.aliases[key] = [alias];\n newAliases[alias] = true;\n }\n if (!(flags.aliases[alias] && flags.aliases[alias].length)) {\n addNewAlias(alias, key);\n }\n }\n function processValue(key, val) {\n if (typeof val === 'string' &&\n (val[0] === \"'\" || val[0] === '\"') &&\n val[val.length - 1] === val[0]) {\n val = val.substring(1, val.length - 1);\n }\n if (checkAllAliases(key, flags.bools) || checkAllAliases(key, flags.counts)) {\n if (typeof val === 'string')\n val = val === 'true';\n }\n let value = Array.isArray(val)\n ? val.map(function (v) { return maybeCoerceNumber(key, v); })\n : maybeCoerceNumber(key, val);\n if (checkAllAliases(key, flags.counts) && (isUndefined(value) || typeof value === 'boolean')) {\n value = increment();\n }\n if (checkAllAliases(key, flags.normalize) && checkAllAliases(key, flags.arrays)) {\n if (Array.isArray(val))\n value = val.map((val) => { return mixin.normalize(val); });\n else\n value = mixin.normalize(val);\n }\n return value;\n }\n function maybeCoerceNumber(key, value) {\n if (!configuration['parse-positional-numbers'] && key === '_')\n return value;\n if (!checkAllAliases(key, flags.strings) && !checkAllAliases(key, flags.bools) && !Array.isArray(value)) {\n const shouldCoerceNumber = looksLikeNumber(value) && configuration['parse-numbers'] && (Number.isSafeInteger(Math.floor(parseFloat(`${value}`))));\n if (shouldCoerceNumber || (!isUndefined(value) && checkAllAliases(key, flags.numbers))) {\n value = Number(value);\n }\n }\n return value;\n }\n function setConfig(argv) {\n const configLookup = Object.create(null);\n applyDefaultsAndAliases(configLookup, flags.aliases, defaults);\n Object.keys(flags.configs).forEach(function (configKey) {\n const configPath = argv[configKey] || configLookup[configKey];\n if (configPath) {\n try {\n let config = null;\n const resolvedConfigPath = mixin.resolve(mixin.cwd(), configPath);\n const resolveConfig = flags.configs[configKey];\n if (typeof resolveConfig === 'function') {\n try {\n config = resolveConfig(resolvedConfigPath);\n }\n catch (e) {\n config = e;\n }\n if (config instanceof Error) {\n error = config;\n return;\n }\n }\n else {\n config = mixin.require(resolvedConfigPath);\n }\n setConfigObject(config);\n }\n catch (ex) {\n if (ex.name === 'PermissionDenied')\n error = ex;\n else if (argv[configKey])\n error = Error(__('Invalid JSON config file: %s', configPath));\n }\n }\n });\n }\n function setConfigObject(config, prev) {\n Object.keys(config).forEach(function (key) {\n const value = config[key];\n const fullKey = prev ? prev + '.' + key : key;\n if (typeof value === 'object' && value !== null && !Array.isArray(value) && configuration['dot-notation']) {\n setConfigObject(value, fullKey);\n }\n else {\n if (!hasKey(argv, fullKey.split('.')) || (checkAllAliases(fullKey, flags.arrays) && configuration['combine-arrays'])) {\n setArg(fullKey, value);\n }\n }\n });\n }\n function setConfigObjects() {\n if (typeof configObjects !== 'undefined') {\n configObjects.forEach(function (configObject) {\n setConfigObject(configObject);\n });\n }\n }\n function applyEnvVars(argv, configOnly) {\n if (typeof envPrefix === 'undefined')\n return;\n const prefix = typeof envPrefix === 'string' ? envPrefix : '';\n const env = mixin.env();\n Object.keys(env).forEach(function (envVar) {\n if (prefix === '' || envVar.lastIndexOf(prefix, 0) === 0) {\n const keys = envVar.split('__').map(function (key, i) {\n if (i === 0) {\n key = key.substring(prefix.length);\n }\n return camelCase(key);\n });\n if (((configOnly && flags.configs[keys.join('.')]) || !configOnly) && !hasKey(argv, keys)) {\n setArg(keys.join('.'), env[envVar]);\n }\n }\n });\n }\n function applyCoercions(argv) {\n let coerce;\n const applied = new Set();\n Object.keys(argv).forEach(function (key) {\n if (!applied.has(key)) {\n coerce = checkAllAliases(key, flags.coercions);\n if (typeof coerce === 'function') {\n try {\n const value = maybeCoerceNumber(key, coerce(argv[key]));\n ([].concat(flags.aliases[key] || [], key)).forEach(ali => {\n applied.add(ali);\n argv[ali] = value;\n });\n }\n catch (err) {\n error = err;\n }\n }\n }\n });\n }\n function setPlaceholderKeys(argv) {\n flags.keys.forEach((key) => {\n if (~key.indexOf('.'))\n return;\n if (typeof argv[key] === 'undefined')\n argv[key] = undefined;\n });\n return argv;\n }\n function applyDefaultsAndAliases(obj, aliases, defaults, canLog = false) {\n Object.keys(defaults).forEach(function (key) {\n if (!hasKey(obj, key.split('.'))) {\n setKey(obj, key.split('.'), defaults[key]);\n if (canLog)\n defaulted[key] = true;\n (aliases[key] || []).forEach(function (x) {\n if (hasKey(obj, x.split('.')))\n return;\n setKey(obj, x.split('.'), defaults[key]);\n });\n }\n });\n }\n function hasKey(obj, keys) {\n let o = obj;\n if (!configuration['dot-notation'])\n keys = [keys.join('.')];\n keys.slice(0, -1).forEach(function (key) {\n o = (o[key] || {});\n });\n const key = keys[keys.length - 1];\n if (typeof o !== 'object')\n return false;\n else\n return key in o;\n }\n function setKey(obj, keys, value) {\n let o = obj;\n if (!configuration['dot-notation'])\n keys = [keys.join('.')];\n keys.slice(0, -1).forEach(function (key) {\n key = sanitizeKey(key);\n if (typeof o === 'object' && o[key] === undefined) {\n o[key] = {};\n }\n if (typeof o[key] !== 'object' || Array.isArray(o[key])) {\n if (Array.isArray(o[key])) {\n o[key].push({});\n }\n else {\n o[key] = [o[key], {}];\n }\n o = o[key][o[key].length - 1];\n }\n else {\n o = o[key];\n }\n });\n const key = sanitizeKey(keys[keys.length - 1]);\n const isTypeArray = checkAllAliases(keys.join('.'), flags.arrays);\n const isValueArray = Array.isArray(value);\n let duplicate = configuration['duplicate-arguments-array'];\n if (!duplicate && checkAllAliases(key, flags.nargs)) {\n duplicate = true;\n if ((!isUndefined(o[key]) && flags.nargs[key] === 1) || (Array.isArray(o[key]) && o[key].length === flags.nargs[key])) {\n o[key] = undefined;\n }\n }\n if (value === increment()) {\n o[key] = increment(o[key]);\n }\n else if (Array.isArray(o[key])) {\n if (duplicate && isTypeArray && isValueArray) {\n o[key] = configuration['flatten-duplicate-arrays'] ? o[key].concat(value) : (Array.isArray(o[key][0]) ? o[key] : [o[key]]).concat([value]);\n }\n else if (!duplicate && Boolean(isTypeArray) === Boolean(isValueArray)) {\n o[key] = value;\n }\n else {\n o[key] = o[key].concat([value]);\n }\n }\n else if (o[key] === undefined && isTypeArray) {\n o[key] = isValueArray ? value : [value];\n }\n else if (duplicate && !(o[key] === undefined ||\n checkAllAliases(key, flags.counts) ||\n checkAllAliases(key, flags.bools))) {\n o[key] = [o[key], value];\n }\n else {\n o[key] = value;\n }\n }\n function extendAliases(...args) {\n args.forEach(function (obj) {\n Object.keys(obj || {}).forEach(function (key) {\n if (flags.aliases[key])\n return;\n flags.aliases[key] = [].concat(aliases[key] || []);\n flags.aliases[key].concat(key).forEach(function (x) {\n if (/-/.test(x) && configuration['camel-case-expansion']) {\n const c = camelCase(x);\n if (c !== key && flags.aliases[key].indexOf(c) === -1) {\n flags.aliases[key].push(c);\n newAliases[c] = true;\n }\n }\n });\n flags.aliases[key].concat(key).forEach(function (x) {\n if (x.length > 1 && /[A-Z]/.test(x) && configuration['camel-case-expansion']) {\n const c = decamelize(x, '-');\n if (c !== key && flags.aliases[key].indexOf(c) === -1) {\n flags.aliases[key].push(c);\n newAliases[c] = true;\n }\n }\n });\n flags.aliases[key].forEach(function (x) {\n flags.aliases[x] = [key].concat(flags.aliases[key].filter(function (y) {\n return x !== y;\n }));\n });\n });\n });\n }\n function checkAllAliases(key, flag) {\n const toCheck = [].concat(flags.aliases[key] || [], key);\n const keys = Object.keys(flag);\n const setAlias = toCheck.find(key => keys.includes(key));\n return setAlias ? flag[setAlias] : false;\n }\n function hasAnyFlag(key) {\n const flagsKeys = Object.keys(flags);\n const toCheck = [].concat(flagsKeys.map(k => flags[k]));\n return toCheck.some(function (flag) {\n return Array.isArray(flag) ? flag.includes(key) : flag[key];\n });\n }\n function hasFlagsMatching(arg, ...patterns) {\n const toCheck = [].concat(...patterns);\n return toCheck.some(function (pattern) {\n const match = arg.match(pattern);\n return match && hasAnyFlag(match[1]);\n });\n }\n function hasAllShortFlags(arg) {\n if (arg.match(negative) || !arg.match(/^-[^-]+/)) {\n return false;\n }\n let hasAllFlags = true;\n let next;\n const letters = arg.slice(1).split('');\n for (let j = 0; j < letters.length; j++) {\n next = arg.slice(j + 2);\n if (!hasAnyFlag(letters[j])) {\n hasAllFlags = false;\n break;\n }\n if ((letters[j + 1] && letters[j + 1] === '=') ||\n next === '-' ||\n (/[A-Za-z]/.test(letters[j]) && /^-?\\d+(\\.\\d*)?(e-?\\d+)?$/.test(next)) ||\n (letters[j + 1] && letters[j + 1].match(/\\W/))) {\n break;\n }\n }\n return hasAllFlags;\n }\n function isUnknownOptionAsArg(arg) {\n return configuration['unknown-options-as-args'] && isUnknownOption(arg);\n }\n function isUnknownOption(arg) {\n if (arg.match(negative)) {\n return false;\n }\n if (hasAllShortFlags(arg)) {\n return false;\n }\n const flagWithEquals = /^-+([^=]+?)=[\\s\\S]*$/;\n const normalFlag = /^-+([^=]+?)$/;\n const flagEndingInHyphen = /^-+([^=]+?)-$/;\n const flagEndingInDigits = /^-+([^=]+?\\d+)$/;\n const flagEndingInNonWordCharacters = /^-+([^=]+?)\\W+.*$/;\n return !hasFlagsMatching(arg, flagWithEquals, negatedBoolean, normalFlag, flagEndingInHyphen, flagEndingInDigits, flagEndingInNonWordCharacters);\n }\n function defaultValue(key) {\n if (!checkAllAliases(key, flags.bools) &&\n !checkAllAliases(key, flags.counts) &&\n `${key}` in defaults) {\n return defaults[key];\n }\n else {\n return defaultForType(guessType(key));\n }\n }\n function defaultForType(type) {\n const def = {\n boolean: true,\n string: '',\n number: undefined,\n array: []\n };\n return def[type];\n }\n function guessType(key) {\n let type = 'boolean';\n if (checkAllAliases(key, flags.strings))\n type = 'string';\n else if (checkAllAliases(key, flags.numbers))\n type = 'number';\n else if (checkAllAliases(key, flags.bools))\n type = 'boolean';\n else if (checkAllAliases(key, flags.arrays))\n type = 'array';\n return type;\n }\n function isUndefined(num) {\n return num === undefined;\n }\n function checkConfiguration() {\n Object.keys(flags.counts).find(key => {\n if (checkAllAliases(key, flags.arrays)) {\n error = Error(__('Invalid configuration: %s, opts.count excludes opts.array.', key));\n return true;\n }\n else if (checkAllAliases(key, flags.nargs)) {\n error = Error(__('Invalid configuration: %s, opts.count excludes opts.narg.', key));\n return true;\n }\n return false;\n });\n }\n return {\n aliases: Object.assign({}, flags.aliases),\n argv: Object.assign(argvReturn, argv),\n configuration: configuration,\n defaulted: Object.assign({}, defaulted),\n error: error,\n newAliases: Object.assign({}, newAliases)\n };\n }\n}\nfunction combineAliases(aliases) {\n const aliasArrays = [];\n const combined = Object.create(null);\n let change = true;\n Object.keys(aliases).forEach(function (key) {\n aliasArrays.push([].concat(aliases[key], key));\n });\n while (change) {\n change = false;\n for (let i = 0; i < aliasArrays.length; i++) {\n for (let ii = i + 1; ii < aliasArrays.length; ii++) {\n const intersect = aliasArrays[i].filter(function (v) {\n return aliasArrays[ii].indexOf(v) !== -1;\n });\n if (intersect.length) {\n aliasArrays[i] = aliasArrays[i].concat(aliasArrays[ii]);\n aliasArrays.splice(ii, 1);\n change = true;\n break;\n }\n }\n }\n }\n aliasArrays.forEach(function (aliasArray) {\n aliasArray = aliasArray.filter(function (v, i, self) {\n return self.indexOf(v) === i;\n });\n const lastAlias = aliasArray.pop();\n if (lastAlias !== undefined && typeof lastAlias === 'string') {\n combined[lastAlias] = aliasArray;\n }\n });\n return combined;\n}\nfunction increment(orig) {\n return orig !== undefined ? orig + 1 : 1;\n}\nfunction sanitizeKey(key) {\n if (key === '__proto__')\n return '___proto___';\n return key;\n}\n\nconst minNodeVersion = (process && process.env && process.env.YARGS_MIN_NODE_VERSION)\n ? Number(process.env.YARGS_MIN_NODE_VERSION)\n : 10;\nif (process && process.version) {\n const major = Number(process.version.match(/v([^.]+)/)[1]);\n if (major < minNodeVersion) {\n throw Error(`yargs parser supports a minimum Node.js version of ${minNodeVersion}. Read our version support policy: https://github.com/yargs/yargs-parser#supported-nodejs-versions`);\n }\n}\nconst env = process ? process.env : {};\nconst parser = new YargsParser({\n cwd: process.cwd,\n env: () => {\n return env;\n },\n format: util.format,\n normalize: path.normalize,\n resolve: path.resolve,\n require: (path) => {\n if (typeof require !== 'undefined') {\n return require(path);\n }\n else if (path.match(/\\.json$/)) {\n return fs.readFileSync(path, 'utf8');\n }\n else {\n throw Error('only .json config files are supported in ESM');\n }\n }\n});\nconst yargsParser = function Parser(args, opts) {\n const result = parser.parse(args.slice(), opts);\n return result.argv;\n};\nyargsParser.detailed = function (args, opts) {\n return parser.parse(args.slice(), opts);\n};\nyargsParser.camelCase = camelCase;\nyargsParser.decamelize = decamelize;\nyargsParser.looksLikeNumber = looksLikeNumber;\n\nmodule.exports = yargsParser;\n", "'use strict';\n\nconst isObject = value => typeof value === 'object' && value !== null;\n\n// Customized for this use-case\nconst isObjectCustom = value =>\n\tisObject(value) &&\n\t!(value instanceof RegExp) &&\n\t!(value instanceof Error) &&\n\t!(value instanceof Date);\n\nconst mapObject = (object, mapper, options, isSeen = new WeakMap()) => {\n\toptions = {\n\t\tdeep: false,\n\t\ttarget: {},\n\t\t...options\n\t};\n\n\tif (isSeen.has(object)) {\n\t\treturn isSeen.get(object);\n\t}\n\n\tisSeen.set(object, options.target);\n\n\tconst {target} = options;\n\tdelete options.target;\n\n\tconst mapArray = array => array.map(element => isObjectCustom(element) ? mapObject(element, mapper, options, isSeen) : element);\n\tif (Array.isArray(object)) {\n\t\treturn mapArray(object);\n\t}\n\n\tfor (const [key, value] of Object.entries(object)) {\n\t\tlet [newKey, newValue] = mapper(key, value, object);\n\n\t\tif (options.deep && isObjectCustom(newValue)) {\n\t\t\tnewValue = Array.isArray(newValue) ?\n\t\t\t\tmapArray(newValue) :\n\t\t\t\tmapObject(newValue, mapper, options, isSeen);\n\t\t}\n\n\t\ttarget[newKey] = newValue;\n\t}\n\n\treturn target;\n};\n\nmodule.exports = (object, mapper, options) => {\n\tif (!isObject(object)) {\n\t\tthrow new TypeError(`Expected an object, got \\`${object}\\` (${typeof object})`);\n\t}\n\n\treturn mapObject(object, mapper, options);\n};\n", "'use strict';\n\nconst preserveCamelCase = string => {\n\tlet isLastCharLower = false;\n\tlet isLastCharUpper = false;\n\tlet isLastLastCharUpper = false;\n\n\tfor (let i = 0; i < string.length; i++) {\n\t\tconst character = string[i];\n\n\t\tif (isLastCharLower && /[a-zA-Z]/.test(character) && character.toUpperCase() === character) {\n\t\t\tstring = string.slice(0, i) + '-' + string.slice(i);\n\t\t\tisLastCharLower = false;\n\t\t\tisLastLastCharUpper = isLastCharUpper;\n\t\t\tisLastCharUpper = true;\n\t\t\ti++;\n\t\t} else if (isLastCharUpper && isLastLastCharUpper && /[a-zA-Z]/.test(character) && character.toLowerCase() === character) {\n\t\t\tstring = string.slice(0, i - 1) + '-' + string.slice(i - 1);\n\t\t\tisLastLastCharUpper = isLastCharUpper;\n\t\t\tisLastCharUpper = false;\n\t\t\tisLastCharLower = true;\n\t\t} else {\n\t\t\tisLastCharLower = character.toLowerCase() === character && character.toUpperCase() !== character;\n\t\t\tisLastLastCharUpper = isLastCharUpper;\n\t\t\tisLastCharUpper = character.toUpperCase() === character && character.toLowerCase() !== character;\n\t\t}\n\t}\n\n\treturn string;\n};\n\nconst camelCase = (input, options) => {\n\tif (!(typeof input === 'string' || Array.isArray(input))) {\n\t\tthrow new TypeError('Expected the input to be `string | string[]`');\n\t}\n\n\toptions = Object.assign({\n\t\tpascalCase: false\n\t}, options);\n\n\tconst postProcess = x => options.pascalCase ? x.charAt(0).toUpperCase() + x.slice(1) : x;\n\n\tif (Array.isArray(input)) {\n\t\tinput = input.map(x => x.trim())\n\t\t\t.filter(x => x.length)\n\t\t\t.join('-');\n\t} else {\n\t\tinput = input.trim();\n\t}\n\n\tif (input.length === 0) {\n\t\treturn '';\n\t}\n\n\tif (input.length === 1) {\n\t\treturn options.pascalCase ? input.toUpperCase() : input.toLowerCase();\n\t}\n\n\tconst hasUpperCase = input !== input.toLowerCase();\n\n\tif (hasUpperCase) {\n\t\tinput = preserveCamelCase(input);\n\t}\n\n\tinput = input\n\t\t.replace(/^[_.\\- ]+/, '')\n\t\t.toLowerCase()\n\t\t.replace(/[_.\\- ]+(\\w|$)/g, (_, p1) => p1.toUpperCase())\n\t\t.replace(/\\d+(\\w|$)/g, m => m.toUpperCase());\n\n\treturn postProcess(input);\n};\n\nmodule.exports = camelCase;\n// TODO: Remove this for the next major release\nmodule.exports.default = camelCase;\n", "'use strict';\n\nclass QuickLRU {\n\tconstructor(options = {}) {\n\t\tif (!(options.maxSize && options.maxSize > 0)) {\n\t\t\tthrow new TypeError('`maxSize` must be a number greater than 0');\n\t\t}\n\n\t\tthis.maxSize = options.maxSize;\n\t\tthis.cache = new Map();\n\t\tthis.oldCache = new Map();\n\t\tthis._size = 0;\n\t}\n\n\t_set(key, value) {\n\t\tthis.cache.set(key, value);\n\t\tthis._size++;\n\n\t\tif (this._size >= this.maxSize) {\n\t\t\tthis._size = 0;\n\t\t\tthis.oldCache = this.cache;\n\t\t\tthis.cache = new Map();\n\t\t}\n\t}\n\n\tget(key) {\n\t\tif (this.cache.has(key)) {\n\t\t\treturn this.cache.get(key);\n\t\t}\n\n\t\tif (this.oldCache.has(key)) {\n\t\t\tconst value = this.oldCache.get(key);\n\t\t\tthis.oldCache.delete(key);\n\t\t\tthis._set(key, value);\n\t\t\treturn value;\n\t\t}\n\t}\n\n\tset(key, value) {\n\t\tif (this.cache.has(key)) {\n\t\t\tthis.cache.set(key, value);\n\t\t} else {\n\t\t\tthis._set(key, value);\n\t\t}\n\n\t\treturn this;\n\t}\n\n\thas(key) {\n\t\treturn this.cache.has(key) || this.oldCache.has(key);\n\t}\n\n\tpeek(key) {\n\t\tif (this.cache.has(key)) {\n\t\t\treturn this.cache.get(key);\n\t\t}\n\n\t\tif (this.oldCache.has(key)) {\n\t\t\treturn this.oldCache.get(key);\n\t\t}\n\t}\n\n\tdelete(key) {\n\t\tconst deleted = this.cache.delete(key);\n\t\tif (deleted) {\n\t\t\tthis._size--;\n\t\t}\n\n\t\treturn this.oldCache.delete(key) || deleted;\n\t}\n\n\tclear() {\n\t\tthis.cache.clear();\n\t\tthis.oldCache.clear();\n\t\tthis._size = 0;\n\t}\n\n\t* keys() {\n\t\tfor (const [key] of this) {\n\t\t\tyield key;\n\t\t}\n\t}\n\n\t* values() {\n\t\tfor (const [, value] of this) {\n\t\t\tyield value;\n\t\t}\n\t}\n\n\t* [Symbol.iterator]() {\n\t\tfor (const item of this.cache) {\n\t\t\tyield item;\n\t\t}\n\n\t\tfor (const item of this.oldCache) {\n\t\t\tconst [key] = item;\n\t\t\tif (!this.cache.has(key)) {\n\t\t\t\tyield item;\n\t\t\t}\n\t\t}\n\t}\n\n\tget size() {\n\t\tlet oldCacheSize = 0;\n\t\tfor (const key of this.oldCache.keys()) {\n\t\t\tif (!this.cache.has(key)) {\n\t\t\t\toldCacheSize++;\n\t\t\t}\n\t\t}\n\n\t\treturn this._size + oldCacheSize;\n\t}\n}\n\nmodule.exports = QuickLRU;\n", "'use strict';\nconst mapObj = require('map-obj');\nconst camelCase = require('camelcase');\nconst QuickLru = require('quick-lru');\n\nconst has = (array, key) => array.some(x => {\n\tif (typeof x === 'string') {\n\t\treturn x === key;\n\t}\n\n\tx.lastIndex = 0;\n\treturn x.test(key);\n});\n\nconst cache = new QuickLru({maxSize: 100000});\n\n// Reproduces behavior from `map-obj`\nconst isObject = value =>\n\ttypeof value === 'object' &&\n\tvalue !== null &&\n\t!(value instanceof RegExp) &&\n\t!(value instanceof Error) &&\n\t!(value instanceof Date);\n\nconst camelCaseConvert = (input, options) => {\n\tif (!isObject(input)) {\n\t\treturn input;\n\t}\n\n\toptions = {\n\t\tdeep: false,\n\t\tpascalCase: false,\n\t\t...options\n\t};\n\n\tconst {exclude, pascalCase, stopPaths, deep} = options;\n\n\tconst stopPathsSet = new Set(stopPaths);\n\n\tconst makeMapper = parentPath => (key, value) => {\n\t\tif (deep && isObject(value)) {\n\t\t\tconst path = parentPath === undefined ? key : `${parentPath}.${key}`;\n\n\t\t\tif (!stopPathsSet.has(path)) {\n\t\t\t\tvalue = mapObj(value, makeMapper(path));\n\t\t\t}\n\t\t}\n\n\t\tif (!(exclude && has(exclude, key))) {\n\t\t\tconst cacheKey = pascalCase ? `${key}_` : key;\n\n\t\t\tif (cache.has(cacheKey)) {\n\t\t\t\tkey = cache.get(cacheKey);\n\t\t\t} else {\n\t\t\t\tconst ret = camelCase(key, {pascalCase});\n\n\t\t\t\tif (key.length < 100) { // Prevent abuse\n\t\t\t\t\tcache.set(cacheKey, ret);\n\t\t\t\t}\n\n\t\t\t\tkey = ret;\n\t\t\t}\n\t\t}\n\n\t\treturn [key, value];\n\t};\n\n\treturn mapObj(input, makeMapper(undefined));\n};\n\nmodule.exports = (input, options) => {\n\tif (Array.isArray(input)) {\n\t\treturn Object.keys(input).map(key => camelCaseConvert(input[key], options));\n\t}\n\n\treturn camelCaseConvert(input, options);\n};\n", "'use strict';\nmodule.exports = function (str, sep) {\n\tif (typeof str !== 'string') {\n\t\tthrow new TypeError('Expected a string');\n\t}\n\n\tsep = typeof sep === 'undefined' ? '_' : sep;\n\n\treturn str\n\t\t.replace(/([a-z\\d])([A-Z])/g, '$1' + sep + '$2')\n\t\t.replace(/([A-Z]+)([A-Z][a-z\\d]+)/g, '$1' + sep + '$2')\n\t\t.toLowerCase();\n};\n", "'use strict';\nmodule.exports = function (obj, cb) {\n\tvar ret = {};\n\tvar keys = Object.keys(obj);\n\n\tfor (var i = 0; i < keys.length; i++) {\n\t\tvar key = keys[i];\n\t\tvar res = cb(key, obj[key], obj);\n\t\tret[res[0]] = res[1];\n\t}\n\n\treturn ret;\n};\n", "'use strict';\nvar mapObj = require('map-obj');\nvar decamelize = require('decamelize');\n\nmodule.exports = function (input, separator, options) {\n\tif (typeof separator !== 'string') {\n\t\toptions = separator;\n\t\tseparator = null;\n\t}\n\n\toptions = options || {};\n\tseparator = separator || options.separator;\n\tvar exclude = options.exclude || [];\n\n\treturn mapObj(input, function (key, val) {\n\t\tkey = exclude.indexOf(key) === -1 ? decamelize(key, separator) : key;\n\t\treturn [key, val];\n\t});\n};\n", "'use strict';\nmodule.exports = string => string.replace(/^[\\r\\n]+/, '').replace(/[\\r\\n]+$/, '');\nmodule.exports.start = string => string.replace(/^[\\r\\n]+/, '');\nmodule.exports.end = string => string.replace(/[\\r\\n]+$/, '');\n", "'use strict';\nmodule.exports = string => {\n\tconst match = string.match(/^[ \\t]*(?=\\S)/gm);\n\n\tif (!match) {\n\t\treturn 0;\n\t}\n\n\treturn match.reduce((r, a) => Math.min(r, a.length), Infinity);\n};\n", "'use strict';\nconst minIndent = require('min-indent');\n\nmodule.exports = string => {\n\tconst indent = minIndent(string);\n\n\tif (indent === 0) {\n\t\treturn string;\n\t}\n\n\tconst regex = new RegExp(`^[ \\\\t]{${indent}}`, 'gm');\n\n\treturn string.replace(regex, '');\n};\n", "'use strict';\n\nmodule.exports = (string, count = 1, options) => {\n\toptions = {\n\t\tindent: ' ',\n\t\tincludeEmptyLines: false,\n\t\t...options\n\t};\n\n\tif (typeof string !== 'string') {\n\t\tthrow new TypeError(\n\t\t\t`Expected \\`input\\` to be a \\`string\\`, got \\`${typeof string}\\``\n\t\t);\n\t}\n\n\tif (typeof count !== 'number') {\n\t\tthrow new TypeError(\n\t\t\t`Expected \\`count\\` to be a \\`number\\`, got \\`${typeof count}\\``\n\t\t);\n\t}\n\n\tif (typeof options.indent !== 'string') {\n\t\tthrow new TypeError(\n\t\t\t`Expected \\`options.indent\\` to be a \\`string\\`, got \\`${typeof options.indent}\\``\n\t\t);\n\t}\n\n\tif (count === 0) {\n\t\treturn string;\n\t}\n\n\tconst regex = options.includeEmptyLines ? /^/gm : /^(?!\\s*$)/gm;\n\n\treturn string.replace(regex, options.indent.repeat(count));\n};\n", "'use strict';\nconst stripIndent = require('strip-indent');\nconst indentString = require('indent-string');\n\nmodule.exports = (string, count = 0, options) => indentString(stripIndent(string), count, options);\n", "'use strict';\n\nconst pTry = (fn, ...arguments_) => new Promise(resolve => {\n\tresolve(fn(...arguments_));\n});\n\nmodule.exports = pTry;\n// TODO: remove this in the next major version\nmodule.exports.default = pTry;\n", "'use strict';\nconst pTry = require('p-try');\n\nconst pLimit = concurrency => {\n\tif (!((Number.isInteger(concurrency) || concurrency === Infinity) && concurrency > 0)) {\n\t\treturn Promise.reject(new TypeError('Expected `concurrency` to be a number from 1 and up'));\n\t}\n\n\tconst queue = [];\n\tlet activeCount = 0;\n\n\tconst next = () => {\n\t\tactiveCount--;\n\n\t\tif (queue.length > 0) {\n\t\t\tqueue.shift()();\n\t\t}\n\t};\n\n\tconst run = (fn, resolve, ...args) => {\n\t\tactiveCount++;\n\n\t\tconst result = pTry(fn, ...args);\n\n\t\tresolve(result);\n\n\t\tresult.then(next, next);\n\t};\n\n\tconst enqueue = (fn, resolve, ...args) => {\n\t\tif (activeCount < concurrency) {\n\t\t\trun(fn, resolve, ...args);\n\t\t} else {\n\t\t\tqueue.push(run.bind(null, fn, resolve, ...args));\n\t\t}\n\t};\n\n\tconst generator = (fn, ...args) => new Promise(resolve => enqueue(fn, resolve, ...args));\n\tObject.defineProperties(generator, {\n\t\tactiveCount: {\n\t\t\tget: () => activeCount\n\t\t},\n\t\tpendingCount: {\n\t\t\tget: () => queue.length\n\t\t},\n\t\tclearQueue: {\n\t\t\tvalue: () => {\n\t\t\t\tqueue.length = 0;\n\t\t\t}\n\t\t}\n\t});\n\n\treturn generator;\n};\n\nmodule.exports = pLimit;\nmodule.exports.default = pLimit;\n", "'use strict';\nconst pLimit = require('p-limit');\n\nclass EndError extends Error {\n\tconstructor(value) {\n\t\tsuper();\n\t\tthis.value = value;\n\t}\n}\n\n// The input can also be a promise, so we await it\nconst testElement = async (element, tester) => tester(await element);\n\n// The input can also be a promise, so we `Promise.all()` them both\nconst finder = async element => {\n\tconst values = await Promise.all(element);\n\tif (values[1] === true) {\n\t\tthrow new EndError(values[0]);\n\t}\n\n\treturn false;\n};\n\nconst pLocate = async (iterable, tester, options) => {\n\toptions = {\n\t\tconcurrency: Infinity,\n\t\tpreserveOrder: true,\n\t\t...options\n\t};\n\n\tconst limit = pLimit(options.concurrency);\n\n\t// Start all the promises concurrently with optional limit\n\tconst items = [...iterable].map(element => [element, limit(testElement, element, tester)]);\n\n\t// Check the promises either serially or concurrently\n\tconst checkLimit = pLimit(options.preserveOrder ? 1 : Infinity);\n\n\ttry {\n\t\tawait Promise.all(items.map(element => checkLimit(finder, element)));\n\t} catch (error) {\n\t\tif (error instanceof EndError) {\n\t\t\treturn error.value;\n\t\t}\n\n\t\tthrow error;\n\t}\n};\n\nmodule.exports = pLocate;\n// TODO: Remove this for the next major release\nmodule.exports.default = pLocate;\n", "'use strict';\nconst path = require('path');\nconst fs = require('fs');\nconst {promisify} = require('util');\nconst pLocate = require('p-locate');\n\nconst fsStat = promisify(fs.stat);\nconst fsLStat = promisify(fs.lstat);\n\nconst typeMappings = {\n\tdirectory: 'isDirectory',\n\tfile: 'isFile'\n};\n\nfunction checkType({type}) {\n\tif (type in typeMappings) {\n\t\treturn;\n\t}\n\n\tthrow new Error(`Invalid type specified: ${type}`);\n}\n\nconst matchType = (type, stat) => type === undefined || stat[typeMappings[type]]();\n\nmodule.exports = async (paths, options) => {\n\toptions = {\n\t\tcwd: process.cwd(),\n\t\ttype: 'file',\n\t\tallowSymlinks: true,\n\t\t...options\n\t};\n\tcheckType(options);\n\tconst statFn = options.allowSymlinks ? fsStat : fsLStat;\n\n\treturn pLocate(paths, async path_ => {\n\t\ttry {\n\t\t\tconst stat = await statFn(path.resolve(options.cwd, path_));\n\t\t\treturn matchType(options.type, stat);\n\t\t} catch (_) {\n\t\t\treturn false;\n\t\t}\n\t}, options);\n};\n\nmodule.exports.sync = (paths, options) => {\n\toptions = {\n\t\tcwd: process.cwd(),\n\t\tallowSymlinks: true,\n\t\ttype: 'file',\n\t\t...options\n\t};\n\tcheckType(options);\n\tconst statFn = options.allowSymlinks ? fs.statSync : fs.lstatSync;\n\n\tfor (const path_ of paths) {\n\t\ttry {\n\t\t\tconst stat = statFn(path.resolve(options.cwd, path_));\n\n\t\t\tif (matchType(options.type, stat)) {\n\t\t\t\treturn path_;\n\t\t\t}\n\t\t} catch (_) {\n\t\t}\n\t}\n};\n", "'use strict';\nconst fs = require('fs');\nconst {promisify} = require('util');\n\nconst pAccess = promisify(fs.access);\n\nmodule.exports = async path => {\n\ttry {\n\t\tawait pAccess(path);\n\t\treturn true;\n\t} catch (_) {\n\t\treturn false;\n\t}\n};\n\nmodule.exports.sync = path => {\n\ttry {\n\t\tfs.accessSync(path);\n\t\treturn true;\n\t} catch (_) {\n\t\treturn false;\n\t}\n};\n", "'use strict';\nconst path = require('path');\nconst locatePath = require('locate-path');\nconst pathExists = require('path-exists');\n\nconst stop = Symbol('findUp.stop');\n\nmodule.exports = async (name, options = {}) => {\n\tlet directory = path.resolve(options.cwd || '');\n\tconst {root} = path.parse(directory);\n\tconst paths = [].concat(name);\n\n\tconst runMatcher = async locateOptions => {\n\t\tif (typeof name !== 'function') {\n\t\t\treturn locatePath(paths, locateOptions);\n\t\t}\n\n\t\tconst foundPath = await name(locateOptions.cwd);\n\t\tif (typeof foundPath === 'string') {\n\t\t\treturn locatePath([foundPath], locateOptions);\n\t\t}\n\n\t\treturn foundPath;\n\t};\n\n\t// eslint-disable-next-line no-constant-condition\n\twhile (true) {\n\t\t// eslint-disable-next-line no-await-in-loop\n\t\tconst foundPath = await runMatcher({...options, cwd: directory});\n\n\t\tif (foundPath === stop) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (foundPath) {\n\t\t\treturn path.resolve(directory, foundPath);\n\t\t}\n\n\t\tif (directory === root) {\n\t\t\treturn;\n\t\t}\n\n\t\tdirectory = path.dirname(directory);\n\t}\n};\n\nmodule.exports.sync = (name, options = {}) => {\n\tlet directory = path.resolve(options.cwd || '');\n\tconst {root} = path.parse(directory);\n\tconst paths = [].concat(name);\n\n\tconst runMatcher = locateOptions => {\n\t\tif (typeof name !== 'function') {\n\t\t\treturn locatePath.sync(paths, locateOptions);\n\t\t}\n\n\t\tconst foundPath = name(locateOptions.cwd);\n\t\tif (typeof foundPath === 'string') {\n\t\t\treturn locatePath.sync([foundPath], locateOptions);\n\t\t}\n\n\t\treturn foundPath;\n\t};\n\n\t// eslint-disable-next-line no-constant-condition\n\twhile (true) {\n\t\tconst foundPath = runMatcher({...options, cwd: directory});\n\n\t\tif (foundPath === stop) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (foundPath) {\n\t\t\treturn path.resolve(directory, foundPath);\n\t\t}\n\n\t\tif (directory === root) {\n\t\t\treturn;\n\t\t}\n\n\t\tdirectory = path.dirname(directory);\n\t}\n};\n\nmodule.exports.exists = pathExists;\n\nmodule.exports.sync.exists = pathExists.sync;\n\nmodule.exports.stop = stop;\n", "'use strict';\n\nmodule.exports = function isArrayish(obj) {\n\tif (!obj) {\n\t\treturn false;\n\t}\n\n\treturn obj instanceof Array || Array.isArray(obj) ||\n\t\t(obj.length >= 0 && obj.splice instanceof Function);\n};\n", "'use strict';\n\nvar util = require('util');\nvar isArrayish = require('is-arrayish');\n\nvar errorEx = function errorEx(name, properties) {\n\tif (!name || name.constructor !== String) {\n\t\tproperties = name || {};\n\t\tname = Error.name;\n\t}\n\n\tvar errorExError = function ErrorEXError(message) {\n\t\tif (!this) {\n\t\t\treturn new ErrorEXError(message);\n\t\t}\n\n\t\tmessage = message instanceof Error\n\t\t\t? message.message\n\t\t\t: (message || this.message);\n\n\t\tError.call(this, message);\n\t\tError.captureStackTrace(this, errorExError);\n\n\t\tthis.name = name;\n\n\t\tObject.defineProperty(this, 'message', {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: false,\n\t\t\tget: function () {\n\t\t\t\tvar newMessage = message.split(/\\r?\\n/g);\n\n\t\t\t\tfor (var key in properties) {\n\t\t\t\t\tif (!properties.hasOwnProperty(key)) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar modifier = properties[key];\n\n\t\t\t\t\tif ('message' in modifier) {\n\t\t\t\t\t\tnewMessage = modifier.message(this[key], newMessage) || newMessage;\n\t\t\t\t\t\tif (!isArrayish(newMessage)) {\n\t\t\t\t\t\t\tnewMessage = [newMessage];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn newMessage.join('\\n');\n\t\t\t},\n\t\t\tset: function (v) {\n\t\t\t\tmessage = v;\n\t\t\t}\n\t\t});\n\n\t\tvar overwrittenStack = null;\n\n\t\tvar stackDescriptor = Object.getOwnPropertyDescriptor(this, 'stack');\n\t\tvar stackGetter = stackDescriptor.get;\n\t\tvar stackValue = stackDescriptor.value;\n\t\tdelete stackDescriptor.value;\n\t\tdelete stackDescriptor.writable;\n\n\t\tstackDescriptor.set = function (newstack) {\n\t\t\toverwrittenStack = newstack;\n\t\t};\n\n\t\tstackDescriptor.get = function () {\n\t\t\tvar stack = (overwrittenStack || ((stackGetter)\n\t\t\t\t? stackGetter.call(this)\n\t\t\t\t: stackValue)).split(/\\r?\\n+/g);\n\n\t\t\t// starting in Node 7, the stack builder caches the message.\n\t\t\t// just replace it.\n\t\t\tif (!overwrittenStack) {\n\t\t\t\tstack[0] = this.name + ': ' + this.message;\n\t\t\t}\n\n\t\t\tvar lineCount = 1;\n\t\t\tfor (var key in properties) {\n\t\t\t\tif (!properties.hasOwnProperty(key)) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tvar modifier = properties[key];\n\n\t\t\t\tif ('line' in modifier) {\n\t\t\t\t\tvar line = modifier.line(this[key]);\n\t\t\t\t\tif (line) {\n\t\t\t\t\t\tstack.splice(lineCount++, 0, ' ' + line);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ('stack' in modifier) {\n\t\t\t\t\tmodifier.stack(this[key], stack);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn stack.join('\\n');\n\t\t};\n\n\t\tObject.defineProperty(this, 'stack', stackDescriptor);\n\t};\n\n\tif (Object.setPrototypeOf) {\n\t\tObject.setPrototypeOf(errorExError.prototype, Error.prototype);\n\t\tObject.setPrototypeOf(errorExError, Error);\n\t} else {\n\t\tutil.inherits(errorExError, Error);\n\t}\n\n\treturn errorExError;\n};\n\nerrorEx.append = function (str, def) {\n\treturn {\n\t\tmessage: function (v, message) {\n\t\t\tv = v || def;\n\n\t\t\tif (v) {\n\t\t\t\tmessage[0] += ' ' + str.replace('%s', v.toString());\n\t\t\t}\n\n\t\t\treturn message;\n\t\t}\n\t};\n};\n\nerrorEx.line = function (str, def) {\n\treturn {\n\t\tline: function (v) {\n\t\t\tv = v || def;\n\n\t\t\tif (v) {\n\t\t\t\treturn str.replace('%s', v.toString());\n\t\t\t}\n\n\t\t\treturn null;\n\t\t}\n\t};\n};\n\nmodule.exports = errorEx;\n", "'use strict'\n\nconst hexify = char => {\n const h = char.charCodeAt(0).toString(16).toUpperCase()\n return '0x' + (h.length % 2 ? '0' : '') + h\n}\n\nconst parseError = (e, txt, context) => {\n if (!txt) {\n return {\n message: e.message + ' while parsing empty string',\n position: 0,\n }\n }\n const badToken = e.message.match(/^Unexpected token (.) .*position\\s+(\\d+)/i)\n const errIdx = badToken ? +badToken[2]\n : e.message.match(/^Unexpected end of JSON.*/i) ? txt.length - 1\n : null\n\n const msg = badToken ? e.message.replace(/^Unexpected token ./, `Unexpected token ${\n JSON.stringify(badToken[1])\n } (${hexify(badToken[1])})`)\n : e.message\n\n if (errIdx !== null && errIdx !== undefined) {\n const start = errIdx <= context ? 0\n : errIdx - context\n\n const end = errIdx + context >= txt.length ? txt.length\n : errIdx + context\n\n const slice = (start === 0 ? '' : '...') +\n txt.slice(start, end) +\n (end === txt.length ? '' : '...')\n\n const near = txt === slice ? '' : 'near '\n\n return {\n message: msg + ` while parsing ${near}${JSON.stringify(slice)}`,\n position: errIdx,\n }\n } else {\n return {\n message: msg + ` while parsing '${txt.slice(0, context * 2)}'`,\n position: 0,\n }\n }\n}\n\nclass JSONParseError extends SyntaxError {\n constructor (er, txt, context, caller) {\n context = context || 20\n const metadata = parseError(er, txt, context)\n super(metadata.message)\n Object.assign(this, metadata)\n this.code = 'EJSONPARSE'\n this.systemError = er\n Error.captureStackTrace(this, caller || this.constructor)\n }\n get name () { return this.constructor.name }\n set name (n) {}\n get [Symbol.toStringTag] () { return this.constructor.name }\n}\n\nconst kIndent = Symbol.for('indent')\nconst kNewline = Symbol.for('newline')\n// only respect indentation if we got a line break, otherwise squash it\n// things other than objects and arrays aren't indented, so ignore those\n// Important: in both of these regexps, the $1 capture group is the newline\n// or undefined, and the $2 capture group is the indent, or undefined.\nconst formatRE = /^\\s*[{\\[]((?:\\r?\\n)+)([\\s\\t]*)/\nconst emptyRE = /^(?:\\{\\}|\\[\\])((?:\\r?\\n)+)?$/\n\nconst parseJson = (txt, reviver, context) => {\n const parseText = stripBOM(txt)\n context = context || 20\n try {\n // get the indentation so that we can save it back nicely\n // if the file starts with {\" then we have an indent of '', ie, none\n // otherwise, pick the indentation of the next line after the first \\n\n // If the pattern doesn't match, then it means no indentation.\n // JSON.stringify ignores symbols, so this is reasonably safe.\n // if the string is '{}' or '[]', then use the default 2-space indent.\n const [, newline = '\\n', indent = ' '] = parseText.match(emptyRE) ||\n parseText.match(formatRE) ||\n [, '', '']\n\n const result = JSON.parse(parseText, reviver)\n if (result && typeof result === 'object') {\n result[kNewline] = newline\n result[kIndent] = indent\n }\n return result\n } catch (e) {\n if (typeof txt !== 'string' && !Buffer.isBuffer(txt)) {\n const isEmptyArray = Array.isArray(txt) && txt.length === 0\n throw Object.assign(new TypeError(\n `Cannot parse ${isEmptyArray ? 'an empty array' : String(txt)}`\n ), {\n code: 'EJSONPARSE',\n systemError: e,\n })\n }\n\n throw new JSONParseError(e, parseText, context, parseJson)\n }\n}\n\n// Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n// because the buffer-to-string conversion in `fs.readFileSync()`\n// translates it to FEFF, the UTF-16 BOM.\nconst stripBOM = txt => String(txt).replace(/^\\uFEFF/, '')\n\nmodule.exports = parseJson\nparseJson.JSONParseError = JSONParseError\n\nparseJson.noExceptions = (txt, reviver) => {\n try {\n return JSON.parse(stripBOM(txt), reviver)\n } catch (e) {}\n}\n", "\"use strict\";\nvar LF = '\\n';\nvar CR = '\\r';\nvar LinesAndColumns = (function () {\n function LinesAndColumns(string) {\n this.string = string;\n var offsets = [0];\n for (var offset = 0; offset < string.length;) {\n switch (string[offset]) {\n case LF:\n offset += LF.length;\n offsets.push(offset);\n break;\n case CR:\n offset += CR.length;\n if (string[offset] === LF) {\n offset += LF.length;\n }\n offsets.push(offset);\n break;\n default:\n offset++;\n break;\n }\n }\n this.offsets = offsets;\n }\n LinesAndColumns.prototype.locationForIndex = function (index) {\n if (index < 0 || index > this.string.length) {\n return null;\n }\n var line = 0;\n var offsets = this.offsets;\n while (offsets[line + 1] <= index) {\n line++;\n }\n var column = index - offsets[line];\n return { line: line, column: column };\n };\n LinesAndColumns.prototype.indexForLocation = function (location) {\n var line = location.line, column = location.column;\n if (line < 0 || line >= this.offsets.length) {\n return null;\n }\n if (column < 0 || column > this.lengthOfLine(line)) {\n return null;\n }\n return this.offsets[line] + column;\n };\n LinesAndColumns.prototype.lengthOfLine = function (line) {\n var offset = this.offsets[line];\n var nextOffset = line === this.offsets.length - 1 ? this.string.length : this.offsets[line + 1];\n return nextOffset - offset;\n };\n return LinesAndColumns;\n}());\nexports.__esModule = true;\nexports[\"default\"] = LinesAndColumns;\n", "// Copyright 2014, 2015, 2016, 2017, 2018 Simon Lydell\n// License: MIT. (See LICENSE.)\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n})\n\n// This regex comes from regex.coffee, and is inserted here by generate-index.js\n// (run `npm run build`).\nexports.default = /((['\"])(?:(?!\\2|\\\\).|\\\\(?:\\r\\n|[\\s\\S]))*(\\2)?|`(?:[^`\\\\$]|\\\\[\\s\\S]|\\$(?!\\{)|\\$\\{(?:[^{}]|\\{[^}]*\\}?)*\\}?)*(`)?)|(\\/\\/.*)|(\\/\\*(?:[^*]|\\*(?!\\/))*(\\*\\/)?)|(\\/(?!\\*)(?:\\[(?:(?![\\]\\\\]).|\\\\.)*\\]|(?![\\/\\]\\\\]).|\\\\.)+\\/(?:(?!\\s*(?:\\b|[\\u0080-\\uFFFF$\\\\'\"~({]|[+\\-!](?!=)|\\.?\\d))|[gmiyus]{1,6}\\b(?![\\u0080-\\uFFFF$\\\\]|\\s*(?:[+\\-*%&|^<>!=?({]|\\/(?![\\/*])))))|(0[xX][\\da-fA-F]+|0[oO][0-7]+|0[bB][01]+|(?:\\d*\\.\\d+|\\d+\\.?)(?:[eE][+-]?\\d+)?)|((?!\\d)(?:(?!\\s)[$\\w\\u0080-\\uFFFF]|\\\\u[\\da-fA-F]{4}|\\\\u\\{[\\da-fA-F]+\\})+)|(--|\\+\\+|&&|\\|\\||=>|\\.{3}|(?:[+\\-\\/%&|^]|\\*{1,2}|<{1,2}|>{1,3}|!=?|={1,2})=?|[?~.,:;[\\](){}])|(\\s+)|(^$|[\\s\\S])/g\n\nexports.matchToToken = function(match) {\n var token = {type: \"invalid\", value: match[0], closed: undefined}\n if (match[ 1]) token.type = \"string\" , token.closed = !!(match[3] || match[4])\n else if (match[ 5]) token.type = \"comment\"\n else if (match[ 6]) token.type = \"comment\", token.closed = !!match[7]\n else if (match[ 8]) token.type = \"regex\"\n else if (match[ 9]) token.type = \"number\"\n else if (match[10]) token.type = \"name\"\n else if (match[11]) token.type = \"punctuator\"\n else if (match[12]) token.type = \"whitespace\"\n return token\n}\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.isIdentifierStart = isIdentifierStart;\nexports.isIdentifierChar = isIdentifierChar;\nexports.isIdentifierName = isIdentifierName;\nlet nonASCIIidentifierStartChars = \"\\xaa\\xb5\\xba\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\u02c1\\u02c6-\\u02d1\\u02e0-\\u02e4\\u02ec\\u02ee\\u0370-\\u0374\\u0376\\u0377\\u037a-\\u037d\\u037f\\u0386\\u0388-\\u038a\\u038c\\u038e-\\u03a1\\u03a3-\\u03f5\\u03f7-\\u0481\\u048a-\\u052f\\u0531-\\u0556\\u0559\\u0560-\\u0588\\u05d0-\\u05ea\\u05ef-\\u05f2\\u0620-\\u064a\\u066e\\u066f\\u0671-\\u06d3\\u06d5\\u06e5\\u06e6\\u06ee\\u06ef\\u06fa-\\u06fc\\u06ff\\u0710\\u0712-\\u072f\\u074d-\\u07a5\\u07b1\\u07ca-\\u07ea\\u07f4\\u07f5\\u07fa\\u0800-\\u0815\\u081a\\u0824\\u0828\\u0840-\\u0858\\u0860-\\u086a\\u08a0-\\u08b4\\u08b6-\\u08c7\\u0904-\\u0939\\u093d\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098c\\u098f\\u0990\\u0993-\\u09a8\\u09aa-\\u09b0\\u09b2\\u09b6-\\u09b9\\u09bd\\u09ce\\u09dc\\u09dd\\u09df-\\u09e1\\u09f0\\u09f1\\u09fc\\u0a05-\\u0a0a\\u0a0f\\u0a10\\u0a13-\\u0a28\\u0a2a-\\u0a30\\u0a32\\u0a33\\u0a35\\u0a36\\u0a38\\u0a39\\u0a59-\\u0a5c\\u0a5e\\u0a72-\\u0a74\\u0a85-\\u0a8d\\u0a8f-\\u0a91\\u0a93-\\u0aa8\\u0aaa-\\u0ab0\\u0ab2\\u0ab3\\u0ab5-\\u0ab9\\u0abd\\u0ad0\\u0ae0\\u0ae1\\u0af9\\u0b05-\\u0b0c\\u0b0f\\u0b10\\u0b13-\\u0b28\\u0b2a-\\u0b30\\u0b32\\u0b33\\u0b35-\\u0b39\\u0b3d\\u0b5c\\u0b5d\\u0b5f-\\u0b61\\u0b71\\u0b83\\u0b85-\\u0b8a\\u0b8e-\\u0b90\\u0b92-\\u0b95\\u0b99\\u0b9a\\u0b9c\\u0b9e\\u0b9f\\u0ba3\\u0ba4\\u0ba8-\\u0baa\\u0bae-\\u0bb9\\u0bd0\\u0c05-\\u0c0c\\u0c0e-\\u0c10\\u0c12-\\u0c28\\u0c2a-\\u0c39\\u0c3d\\u0c58-\\u0c5a\\u0c60\\u0c61\\u0c80\\u0c85-\\u0c8c\\u0c8e-\\u0c90\\u0c92-\\u0ca8\\u0caa-\\u0cb3\\u0cb5-\\u0cb9\\u0cbd\\u0cde\\u0ce0\\u0ce1\\u0cf1\\u0cf2\\u0d04-\\u0d0c\\u0d0e-\\u0d10\\u0d12-\\u0d3a\\u0d3d\\u0d4e\\u0d54-\\u0d56\\u0d5f-\\u0d61\\u0d7a-\\u0d7f\\u0d85-\\u0d96\\u0d9a-\\u0db1\\u0db3-\\u0dbb\\u0dbd\\u0dc0-\\u0dc6\\u0e01-\\u0e30\\u0e32\\u0e33\\u0e40-\\u0e46\\u0e81\\u0e82\\u0e84\\u0e86-\\u0e8a\\u0e8c-\\u0ea3\\u0ea5\\u0ea7-\\u0eb0\\u0eb2\\u0eb3\\u0ebd\\u0ec0-\\u0ec4\\u0ec6\\u0edc-\\u0edf\\u0f00\\u0f40-\\u0f47\\u0f49-\\u0f6c\\u0f88-\\u0f8c\\u1000-\\u102a\\u103f\\u1050-\\u1055\\u105a-\\u105d\\u1061\\u1065\\u1066\\u106e-\\u1070\\u1075-\\u1081\\u108e\\u10a0-\\u10c5\\u10c7\\u10cd\\u10d0-\\u10fa\\u10fc-\\u1248\\u124a-\\u124d\\u1250-\\u1256\\u1258\\u125a-\\u125d\\u1260-\\u1288\\u128a-\\u128d\\u1290-\\u12b0\\u12b2-\\u12b5\\u12b8-\\u12be\\u12c0\\u12c2-\\u12c5\\u12c8-\\u12d6\\u12d8-\\u1310\\u1312-\\u1315\\u1318-\\u135a\\u1380-\\u138f\\u13a0-\\u13f5\\u13f8-\\u13fd\\u1401-\\u166c\\u166f-\\u167f\\u1681-\\u169a\\u16a0-\\u16ea\\u16ee-\\u16f8\\u1700-\\u170c\\u170e-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176c\\u176e-\\u1770\\u1780-\\u17b3\\u17d7\\u17dc\\u1820-\\u1878\\u1880-\\u18a8\\u18aa\\u18b0-\\u18f5\\u1900-\\u191e\\u1950-\\u196d\\u1970-\\u1974\\u1980-\\u19ab\\u19b0-\\u19c9\\u1a00-\\u1a16\\u1a20-\\u1a54\\u1aa7\\u1b05-\\u1b33\\u1b45-\\u1b4b\\u1b83-\\u1ba0\\u1bae\\u1baf\\u1bba-\\u1be5\\u1c00-\\u1c23\\u1c4d-\\u1c4f\\u1c5a-\\u1c7d\\u1c80-\\u1c88\\u1c90-\\u1cba\\u1cbd-\\u1cbf\\u1ce9-\\u1cec\\u1cee-\\u1cf3\\u1cf5\\u1cf6\\u1cfa\\u1d00-\\u1dbf\\u1e00-\\u1f15\\u1f18-\\u1f1d\\u1f20-\\u1f45\\u1f48-\\u1f4d\\u1f50-\\u1f57\\u1f59\\u1f5b\\u1f5d\\u1f5f-\\u1f7d\\u1f80-\\u1fb4\\u1fb6-\\u1fbc\\u1fbe\\u1fc2-\\u1fc4\\u1fc6-\\u1fcc\\u1fd0-\\u1fd3\\u1fd6-\\u1fdb\\u1fe0-\\u1fec\\u1ff2-\\u1ff4\\u1ff6-\\u1ffc\\u2071\\u207f\\u2090-\\u209c\\u2102\\u2107\\u210a-\\u2113\\u2115\\u2118-\\u211d\\u2124\\u2126\\u2128\\u212a-\\u2139\\u213c-\\u213f\\u2145-\\u2149\\u214e\\u2160-\\u2188\\u2c00-\\u2c2e\\u2c30-\\u2c5e\\u2c60-\\u2ce4\\u2ceb-\\u2cee\\u2cf2\\u2cf3\\u2d00-\\u2d25\\u2d27\\u2d2d\\u2d30-\\u2d67\\u2d6f\\u2d80-\\u2d96\\u2da0-\\u2da6\\u2da8-\\u2dae\\u2db0-\\u2db6\\u2db8-\\u2dbe\\u2dc0-\\u2dc6\\u2dc8-\\u2dce\\u2dd0-\\u2dd6\\u2dd8-\\u2dde\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303c\\u3041-\\u3096\\u309b-\\u309f\\u30a1-\\u30fa\\u30fc-\\u30ff\\u3105-\\u312f\\u3131-\\u318e\\u31a0-\\u31bf\\u31f0-\\u31ff\\u3400-\\u4dbf\\u4e00-\\u9ffc\\ua000-\\ua48c\\ua4d0-\\ua4fd\\ua500-\\ua60c\\ua610-\\ua61f\\ua62a\\ua62b\\ua640-\\ua66e\\ua67f-\\ua69d\\ua6a0-\\ua6ef\\ua717-\\ua71f\\ua722-\\ua788\\ua78b-\\ua7bf\\ua7c2-\\ua7ca\\ua7f5-\\ua801\\ua803-\\ua805\\ua807-\\ua80a\\ua80c-\\ua822\\ua840-\\ua873\\ua882-\\ua8b3\\ua8f2-\\ua8f7\\ua8fb\\ua8fd\\ua8fe\\ua90a-\\ua925\\ua930-\\ua946\\ua960-\\ua97c\\ua984-\\ua9b2\\ua9cf\\ua9e0-\\ua9e4\\ua9e6-\\ua9ef\\ua9fa-\\ua9fe\\uaa00-\\uaa28\\uaa40-\\uaa42\\uaa44-\\uaa4b\\uaa60-\\uaa76\\uaa7a\\uaa7e-\\uaaaf\\uaab1\\uaab5\\uaab6\\uaab9-\\uaabd\\uaac0\\uaac2\\uaadb-\\uaadd\\uaae0-\\uaaea\\uaaf2-\\uaaf4\\uab01-\\uab06\\uab09-\\uab0e\\uab11-\\uab16\\uab20-\\uab26\\uab28-\\uab2e\\uab30-\\uab5a\\uab5c-\\uab69\\uab70-\\uabe2\\uac00-\\ud7a3\\ud7b0-\\ud7c6\\ud7cb-\\ud7fb\\uf900-\\ufa6d\\ufa70-\\ufad9\\ufb00-\\ufb06\\ufb13-\\ufb17\\ufb1d\\ufb1f-\\ufb28\\ufb2a-\\ufb36\\ufb38-\\ufb3c\\ufb3e\\ufb40\\ufb41\\ufb43\\ufb44\\ufb46-\\ufbb1\\ufbd3-\\ufd3d\\ufd50-\\ufd8f\\ufd92-\\ufdc7\\ufdf0-\\ufdfb\\ufe70-\\ufe74\\ufe76-\\ufefc\\uff21-\\uff3a\\uff41-\\uff5a\\uff66-\\uffbe\\uffc2-\\uffc7\\uffca-\\uffcf\\uffd2-\\uffd7\\uffda-\\uffdc\";\nlet nonASCIIidentifierChars = \"\\u200c\\u200d\\xb7\\u0300-\\u036f\\u0387\\u0483-\\u0487\\u0591-\\u05bd\\u05bf\\u05c1\\u05c2\\u05c4\\u05c5\\u05c7\\u0610-\\u061a\\u064b-\\u0669\\u0670\\u06d6-\\u06dc\\u06df-\\u06e4\\u06e7\\u06e8\\u06ea-\\u06ed\\u06f0-\\u06f9\\u0711\\u0730-\\u074a\\u07a6-\\u07b0\\u07c0-\\u07c9\\u07eb-\\u07f3\\u07fd\\u0816-\\u0819\\u081b-\\u0823\\u0825-\\u0827\\u0829-\\u082d\\u0859-\\u085b\\u08d3-\\u08e1\\u08e3-\\u0903\\u093a-\\u093c\\u093e-\\u094f\\u0951-\\u0957\\u0962\\u0963\\u0966-\\u096f\\u0981-\\u0983\\u09bc\\u09be-\\u09c4\\u09c7\\u09c8\\u09cb-\\u09cd\\u09d7\\u09e2\\u09e3\\u09e6-\\u09ef\\u09fe\\u0a01-\\u0a03\\u0a3c\\u0a3e-\\u0a42\\u0a47\\u0a48\\u0a4b-\\u0a4d\\u0a51\\u0a66-\\u0a71\\u0a75\\u0a81-\\u0a83\\u0abc\\u0abe-\\u0ac5\\u0ac7-\\u0ac9\\u0acb-\\u0acd\\u0ae2\\u0ae3\\u0ae6-\\u0aef\\u0afa-\\u0aff\\u0b01-\\u0b03\\u0b3c\\u0b3e-\\u0b44\\u0b47\\u0b48\\u0b4b-\\u0b4d\\u0b55-\\u0b57\\u0b62\\u0b63\\u0b66-\\u0b6f\\u0b82\\u0bbe-\\u0bc2\\u0bc6-\\u0bc8\\u0bca-\\u0bcd\\u0bd7\\u0be6-\\u0bef\\u0c00-\\u0c04\\u0c3e-\\u0c44\\u0c46-\\u0c48\\u0c4a-\\u0c4d\\u0c55\\u0c56\\u0c62\\u0c63\\u0c66-\\u0c6f\\u0c81-\\u0c83\\u0cbc\\u0cbe-\\u0cc4\\u0cc6-\\u0cc8\\u0cca-\\u0ccd\\u0cd5\\u0cd6\\u0ce2\\u0ce3\\u0ce6-\\u0cef\\u0d00-\\u0d03\\u0d3b\\u0d3c\\u0d3e-\\u0d44\\u0d46-\\u0d48\\u0d4a-\\u0d4d\\u0d57\\u0d62\\u0d63\\u0d66-\\u0d6f\\u0d81-\\u0d83\\u0dca\\u0dcf-\\u0dd4\\u0dd6\\u0dd8-\\u0ddf\\u0de6-\\u0def\\u0df2\\u0df3\\u0e31\\u0e34-\\u0e3a\\u0e47-\\u0e4e\\u0e50-\\u0e59\\u0eb1\\u0eb4-\\u0ebc\\u0ec8-\\u0ecd\\u0ed0-\\u0ed9\\u0f18\\u0f19\\u0f20-\\u0f29\\u0f35\\u0f37\\u0f39\\u0f3e\\u0f3f\\u0f71-\\u0f84\\u0f86\\u0f87\\u0f8d-\\u0f97\\u0f99-\\u0fbc\\u0fc6\\u102b-\\u103e\\u1040-\\u1049\\u1056-\\u1059\\u105e-\\u1060\\u1062-\\u1064\\u1067-\\u106d\\u1071-\\u1074\\u1082-\\u108d\\u108f-\\u109d\\u135d-\\u135f\\u1369-\\u1371\\u1712-\\u1714\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17b4-\\u17d3\\u17dd\\u17e0-\\u17e9\\u180b-\\u180d\\u1810-\\u1819\\u18a9\\u1920-\\u192b\\u1930-\\u193b\\u1946-\\u194f\\u19d0-\\u19da\\u1a17-\\u1a1b\\u1a55-\\u1a5e\\u1a60-\\u1a7c\\u1a7f-\\u1a89\\u1a90-\\u1a99\\u1ab0-\\u1abd\\u1abf\\u1ac0\\u1b00-\\u1b04\\u1b34-\\u1b44\\u1b50-\\u1b59\\u1b6b-\\u1b73\\u1b80-\\u1b82\\u1ba1-\\u1bad\\u1bb0-\\u1bb9\\u1be6-\\u1bf3\\u1c24-\\u1c37\\u1c40-\\u1c49\\u1c50-\\u1c59\\u1cd0-\\u1cd2\\u1cd4-\\u1ce8\\u1ced\\u1cf4\\u1cf7-\\u1cf9\\u1dc0-\\u1df9\\u1dfb-\\u1dff\\u203f\\u2040\\u2054\\u20d0-\\u20dc\\u20e1\\u20e5-\\u20f0\\u2cef-\\u2cf1\\u2d7f\\u2de0-\\u2dff\\u302a-\\u302f\\u3099\\u309a\\ua620-\\ua629\\ua66f\\ua674-\\ua67d\\ua69e\\ua69f\\ua6f0\\ua6f1\\ua802\\ua806\\ua80b\\ua823-\\ua827\\ua82c\\ua880\\ua881\\ua8b4-\\ua8c5\\ua8d0-\\ua8d9\\ua8e0-\\ua8f1\\ua8ff-\\ua909\\ua926-\\ua92d\\ua947-\\ua953\\ua980-\\ua983\\ua9b3-\\ua9c0\\ua9d0-\\ua9d9\\ua9e5\\ua9f0-\\ua9f9\\uaa29-\\uaa36\\uaa43\\uaa4c\\uaa4d\\uaa50-\\uaa59\\uaa7b-\\uaa7d\\uaab0\\uaab2-\\uaab4\\uaab7\\uaab8\\uaabe\\uaabf\\uaac1\\uaaeb-\\uaaef\\uaaf5\\uaaf6\\uabe3-\\uabea\\uabec\\uabed\\uabf0-\\uabf9\\ufb1e\\ufe00-\\ufe0f\\ufe20-\\ufe2f\\ufe33\\ufe34\\ufe4d-\\ufe4f\\uff10-\\uff19\\uff3f\";\nconst nonASCIIidentifierStart = new RegExp(\"[\" + nonASCIIidentifierStartChars + \"]\");\nconst nonASCIIidentifier = new RegExp(\"[\" + nonASCIIidentifierStartChars + nonASCIIidentifierChars + \"]\");\nnonASCIIidentifierStartChars = nonASCIIidentifierChars = null;\nconst astralIdentifierStartCodes = [0, 11, 2, 25, 2, 18, 2, 1, 2, 14, 3, 13, 35, 122, 70, 52, 268, 28, 4, 48, 48, 31, 14, 29, 6, 37, 11, 29, 3, 35, 5, 7, 2, 4, 43, 157, 19, 35, 5, 35, 5, 39, 9, 51, 157, 310, 10, 21, 11, 7, 153, 5, 3, 0, 2, 43, 2, 1, 4, 0, 3, 22, 11, 22, 10, 30, 66, 18, 2, 1, 11, 21, 11, 25, 71, 55, 7, 1, 65, 0, 16, 3, 2, 2, 2, 28, 43, 28, 4, 28, 36, 7, 2, 27, 28, 53, 11, 21, 11, 18, 14, 17, 111, 72, 56, 50, 14, 50, 14, 35, 349, 41, 7, 1, 79, 28, 11, 0, 9, 21, 107, 20, 28, 22, 13, 52, 76, 44, 33, 24, 27, 35, 30, 0, 3, 0, 9, 34, 4, 0, 13, 47, 15, 3, 22, 0, 2, 0, 36, 17, 2, 24, 85, 6, 2, 0, 2, 3, 2, 14, 2, 9, 8, 46, 39, 7, 3, 1, 3, 21, 2, 6, 2, 1, 2, 4, 4, 0, 19, 0, 13, 4, 159, 52, 19, 3, 21, 2, 31, 47, 21, 1, 2, 0, 185, 46, 42, 3, 37, 47, 21, 0, 60, 42, 14, 0, 72, 26, 230, 43, 117, 63, 32, 7, 3, 0, 3, 7, 2, 1, 2, 23, 16, 0, 2, 0, 95, 7, 3, 38, 17, 0, 2, 0, 29, 0, 11, 39, 8, 0, 22, 0, 12, 45, 20, 0, 35, 56, 264, 8, 2, 36, 18, 0, 50, 29, 113, 6, 2, 1, 2, 37, 22, 0, 26, 5, 2, 1, 2, 31, 15, 0, 328, 18, 190, 0, 80, 921, 103, 110, 18, 195, 2749, 1070, 4050, 582, 8634, 568, 8, 30, 114, 29, 19, 47, 17, 3, 32, 20, 6, 18, 689, 63, 129, 74, 6, 0, 67, 12, 65, 1, 2, 0, 29, 6135, 9, 1237, 43, 8, 8952, 286, 50, 2, 18, 3, 9, 395, 2309, 106, 6, 12, 4, 8, 8, 9, 5991, 84, 2, 70, 2, 1, 3, 0, 3, 1, 3, 3, 2, 11, 2, 0, 2, 6, 2, 64, 2, 3, 3, 7, 2, 6, 2, 27, 2, 3, 2, 4, 2, 0, 4, 6, 2, 339, 3, 24, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 7, 2357, 44, 11, 6, 17, 0, 370, 43, 1301, 196, 60, 67, 8, 0, 1205, 3, 2, 26, 2, 1, 2, 0, 3, 0, 2, 9, 2, 3, 2, 0, 2, 0, 7, 0, 5, 0, 2, 0, 2, 0, 2, 2, 2, 1, 2, 0, 3, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 1, 2, 0, 3, 3, 2, 6, 2, 3, 2, 3, 2, 0, 2, 9, 2, 16, 6, 2, 2, 4, 2, 16, 4421, 42717, 35, 4148, 12, 221, 3, 5761, 15, 7472, 3104, 541, 1507, 4938];\nconst astralIdentifierCodes = [509, 0, 227, 0, 150, 4, 294, 9, 1368, 2, 2, 1, 6, 3, 41, 2, 5, 0, 166, 1, 574, 3, 9, 9, 370, 1, 154, 10, 176, 2, 54, 14, 32, 9, 16, 3, 46, 10, 54, 9, 7, 2, 37, 13, 2, 9, 6, 1, 45, 0, 13, 2, 49, 13, 9, 3, 2, 11, 83, 11, 7, 0, 161, 11, 6, 9, 7, 3, 56, 1, 2, 6, 3, 1, 3, 2, 10, 0, 11, 1, 3, 6, 4, 4, 193, 17, 10, 9, 5, 0, 82, 19, 13, 9, 214, 6, 3, 8, 28, 1, 83, 16, 16, 9, 82, 12, 9, 9, 84, 14, 5, 9, 243, 14, 166, 9, 71, 5, 2, 1, 3, 3, 2, 0, 2, 1, 13, 9, 120, 6, 3, 6, 4, 0, 29, 9, 41, 6, 2, 3, 9, 0, 10, 10, 47, 15, 406, 7, 2, 7, 17, 9, 57, 21, 2, 13, 123, 5, 4, 0, 2, 1, 2, 6, 2, 0, 9, 9, 49, 4, 2, 1, 2, 4, 9, 9, 330, 3, 19306, 9, 135, 4, 60, 6, 26, 9, 1014, 0, 2, 54, 8, 3, 82, 0, 12, 1, 19628, 1, 5319, 4, 4, 5, 9, 7, 3, 6, 31, 3, 149, 2, 1418, 49, 513, 54, 5, 49, 9, 0, 15, 0, 23, 4, 2, 14, 1361, 6, 2, 16, 3, 6, 2, 1, 2, 4, 262, 6, 10, 9, 419, 13, 1495, 6, 110, 6, 6, 9, 4759, 9, 787719, 239];\n\nfunction isInAstralSet(code, set) {\n let pos = 0x10000;\n\n for (let i = 0, length = set.length; i < length; i += 2) {\n pos += set[i];\n if (pos > code) return false;\n pos += set[i + 1];\n if (pos >= code) return true;\n }\n\n return false;\n}\n\nfunction isIdentifierStart(code) {\n if (code < 65) return code === 36;\n if (code <= 90) return true;\n if (code < 97) return code === 95;\n if (code <= 122) return true;\n\n if (code <= 0xffff) {\n return code >= 0xaa && nonASCIIidentifierStart.test(String.fromCharCode(code));\n }\n\n return isInAstralSet(code, astralIdentifierStartCodes);\n}\n\nfunction isIdentifierChar(code) {\n if (code < 48) return code === 36;\n if (code < 58) return true;\n if (code < 65) return false;\n if (code <= 90) return true;\n if (code < 97) return code === 95;\n if (code <= 122) return true;\n\n if (code <= 0xffff) {\n return code >= 0xaa && nonASCIIidentifier.test(String.fromCharCode(code));\n }\n\n return isInAstralSet(code, astralIdentifierStartCodes) || isInAstralSet(code, astralIdentifierCodes);\n}\n\nfunction isIdentifierName(name) {\n let isFirst = true;\n\n for (let _i = 0, _Array$from = Array.from(name); _i < _Array$from.length; _i++) {\n const char = _Array$from[_i];\n const cp = char.codePointAt(0);\n\n if (isFirst) {\n if (!isIdentifierStart(cp)) {\n return false;\n }\n\n isFirst = false;\n } else if (!isIdentifierChar(cp)) {\n return false;\n }\n }\n\n return !isFirst;\n}", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.isReservedWord = isReservedWord;\nexports.isStrictReservedWord = isStrictReservedWord;\nexports.isStrictBindOnlyReservedWord = isStrictBindOnlyReservedWord;\nexports.isStrictBindReservedWord = isStrictBindReservedWord;\nexports.isKeyword = isKeyword;\nconst reservedWords = {\n keyword: [\"break\", \"case\", \"catch\", \"continue\", \"debugger\", \"default\", \"do\", \"else\", \"finally\", \"for\", \"function\", \"if\", \"return\", \"switch\", \"throw\", \"try\", \"var\", \"const\", \"while\", \"with\", \"new\", \"this\", \"super\", \"class\", \"extends\", \"export\", \"import\", \"null\", \"true\", \"false\", \"in\", \"instanceof\", \"typeof\", \"void\", \"delete\"],\n strict: [\"implements\", \"interface\", \"let\", \"package\", \"private\", \"protected\", \"public\", \"static\", \"yield\"],\n strictBind: [\"eval\", \"arguments\"]\n};\nconst keywords = new Set(reservedWords.keyword);\nconst reservedWordsStrictSet = new Set(reservedWords.strict);\nconst reservedWordsStrictBindSet = new Set(reservedWords.strictBind);\n\nfunction isReservedWord(word, inModule) {\n return inModule && word === \"await\" || word === \"enum\";\n}\n\nfunction isStrictReservedWord(word, inModule) {\n return isReservedWord(word, inModule) || reservedWordsStrictSet.has(word);\n}\n\nfunction isStrictBindOnlyReservedWord(word) {\n return reservedWordsStrictBindSet.has(word);\n}\n\nfunction isStrictBindReservedWord(word, inModule) {\n return isStrictReservedWord(word, inModule) || isStrictBindOnlyReservedWord(word);\n}\n\nfunction isKeyword(word) {\n return keywords.has(word);\n}", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"isIdentifierName\", {\n enumerable: true,\n get: function () {\n return _identifier.isIdentifierName;\n }\n});\nObject.defineProperty(exports, \"isIdentifierChar\", {\n enumerable: true,\n get: function () {\n return _identifier.isIdentifierChar;\n }\n});\nObject.defineProperty(exports, \"isIdentifierStart\", {\n enumerable: true,\n get: function () {\n return _identifier.isIdentifierStart;\n }\n});\nObject.defineProperty(exports, \"isReservedWord\", {\n enumerable: true,\n get: function () {\n return _keyword.isReservedWord;\n }\n});\nObject.defineProperty(exports, \"isStrictBindOnlyReservedWord\", {\n enumerable: true,\n get: function () {\n return _keyword.isStrictBindOnlyReservedWord;\n }\n});\nObject.defineProperty(exports, \"isStrictBindReservedWord\", {\n enumerable: true,\n get: function () {\n return _keyword.isStrictBindReservedWord;\n }\n});\nObject.defineProperty(exports, \"isStrictReservedWord\", {\n enumerable: true,\n get: function () {\n return _keyword.isStrictReservedWord;\n }\n});\nObject.defineProperty(exports, \"isKeyword\", {\n enumerable: true,\n get: function () {\n return _keyword.isKeyword;\n }\n});\n\nvar _identifier = require(\"./identifier\");\n\nvar _keyword = require(\"./keyword\");", "'use strict';\n\nvar matchOperatorsRe = /[|\\\\{}()[\\]^$+*?.]/g;\n\nmodule.exports = function (str) {\n\tif (typeof str !== 'string') {\n\t\tthrow new TypeError('Expected a string');\n\t}\n\n\treturn str.replace(matchOperatorsRe, '\\\\$&');\n};\n", "'use strict'\r\n\r\nmodule.exports = {\r\n\t\"aliceblue\": [240, 248, 255],\r\n\t\"antiquewhite\": [250, 235, 215],\r\n\t\"aqua\": [0, 255, 255],\r\n\t\"aquamarine\": [127, 255, 212],\r\n\t\"azure\": [240, 255, 255],\r\n\t\"beige\": [245, 245, 220],\r\n\t\"bisque\": [255, 228, 196],\r\n\t\"black\": [0, 0, 0],\r\n\t\"blanchedalmond\": [255, 235, 205],\r\n\t\"blue\": [0, 0, 255],\r\n\t\"blueviolet\": [138, 43, 226],\r\n\t\"brown\": [165, 42, 42],\r\n\t\"burlywood\": [222, 184, 135],\r\n\t\"cadetblue\": [95, 158, 160],\r\n\t\"chartreuse\": [127, 255, 0],\r\n\t\"chocolate\": [210, 105, 30],\r\n\t\"coral\": [255, 127, 80],\r\n\t\"cornflowerblue\": [100, 149, 237],\r\n\t\"cornsilk\": [255, 248, 220],\r\n\t\"crimson\": [220, 20, 60],\r\n\t\"cyan\": [0, 255, 255],\r\n\t\"darkblue\": [0, 0, 139],\r\n\t\"darkcyan\": [0, 139, 139],\r\n\t\"darkgoldenrod\": [184, 134, 11],\r\n\t\"darkgray\": [169, 169, 169],\r\n\t\"darkgreen\": [0, 100, 0],\r\n\t\"darkgrey\": [169, 169, 169],\r\n\t\"darkkhaki\": [189, 183, 107],\r\n\t\"darkmagenta\": [139, 0, 139],\r\n\t\"darkolivegreen\": [85, 107, 47],\r\n\t\"darkorange\": [255, 140, 0],\r\n\t\"darkorchid\": [153, 50, 204],\r\n\t\"darkred\": [139, 0, 0],\r\n\t\"darksalmon\": [233, 150, 122],\r\n\t\"darkseagreen\": [143, 188, 143],\r\n\t\"darkslateblue\": [72, 61, 139],\r\n\t\"darkslategray\": [47, 79, 79],\r\n\t\"darkslategrey\": [47, 79, 79],\r\n\t\"darkturquoise\": [0, 206, 209],\r\n\t\"darkviolet\": [148, 0, 211],\r\n\t\"deeppink\": [255, 20, 147],\r\n\t\"deepskyblue\": [0, 191, 255],\r\n\t\"dimgray\": [105, 105, 105],\r\n\t\"dimgrey\": [105, 105, 105],\r\n\t\"dodgerblue\": [30, 144, 255],\r\n\t\"firebrick\": [178, 34, 34],\r\n\t\"floralwhite\": [255, 250, 240],\r\n\t\"forestgreen\": [34, 139, 34],\r\n\t\"fuchsia\": [255, 0, 255],\r\n\t\"gainsboro\": [220, 220, 220],\r\n\t\"ghostwhite\": [248, 248, 255],\r\n\t\"gold\": [255, 215, 0],\r\n\t\"goldenrod\": [218, 165, 32],\r\n\t\"gray\": [128, 128, 128],\r\n\t\"green\": [0, 128, 0],\r\n\t\"greenyellow\": [173, 255, 47],\r\n\t\"grey\": [128, 128, 128],\r\n\t\"honeydew\": [240, 255, 240],\r\n\t\"hotpink\": [255, 105, 180],\r\n\t\"indianred\": [205, 92, 92],\r\n\t\"indigo\": [75, 0, 130],\r\n\t\"ivory\": [255, 255, 240],\r\n\t\"khaki\": [240, 230, 140],\r\n\t\"lavender\": [230, 230, 250],\r\n\t\"lavenderblush\": [255, 240, 245],\r\n\t\"lawngreen\": [124, 252, 0],\r\n\t\"lemonchiffon\": [255, 250, 205],\r\n\t\"lightblue\": [173, 216, 230],\r\n\t\"lightcoral\": [240, 128, 128],\r\n\t\"lightcyan\": [224, 255, 255],\r\n\t\"lightgoldenrodyellow\": [250, 250, 210],\r\n\t\"lightgray\": [211, 211, 211],\r\n\t\"lightgreen\": [144, 238, 144],\r\n\t\"lightgrey\": [211, 211, 211],\r\n\t\"lightpink\": [255, 182, 193],\r\n\t\"lightsalmon\": [255, 160, 122],\r\n\t\"lightseagreen\": [32, 178, 170],\r\n\t\"lightskyblue\": [135, 206, 250],\r\n\t\"lightslategray\": [119, 136, 153],\r\n\t\"lightslategrey\": [119, 136, 153],\r\n\t\"lightsteelblue\": [176, 196, 222],\r\n\t\"lightyellow\": [255, 255, 224],\r\n\t\"lime\": [0, 255, 0],\r\n\t\"limegreen\": [50, 205, 50],\r\n\t\"linen\": [250, 240, 230],\r\n\t\"magenta\": [255, 0, 255],\r\n\t\"maroon\": [128, 0, 0],\r\n\t\"mediumaquamarine\": [102, 205, 170],\r\n\t\"mediumblue\": [0, 0, 205],\r\n\t\"mediumorchid\": [186, 85, 211],\r\n\t\"mediumpurple\": [147, 112, 219],\r\n\t\"mediumseagreen\": [60, 179, 113],\r\n\t\"mediumslateblue\": [123, 104, 238],\r\n\t\"mediumspringgreen\": [0, 250, 154],\r\n\t\"mediumturquoise\": [72, 209, 204],\r\n\t\"mediumvioletred\": [199, 21, 133],\r\n\t\"midnightblue\": [25, 25, 112],\r\n\t\"mintcream\": [245, 255, 250],\r\n\t\"mistyrose\": [255, 228, 225],\r\n\t\"moccasin\": [255, 228, 181],\r\n\t\"navajowhite\": [255, 222, 173],\r\n\t\"navy\": [0, 0, 128],\r\n\t\"oldlace\": [253, 245, 230],\r\n\t\"olive\": [128, 128, 0],\r\n\t\"olivedrab\": [107, 142, 35],\r\n\t\"orange\": [255, 165, 0],\r\n\t\"orangered\": [255, 69, 0],\r\n\t\"orchid\": [218, 112, 214],\r\n\t\"palegoldenrod\": [238, 232, 170],\r\n\t\"palegreen\": [152, 251, 152],\r\n\t\"paleturquoise\": [175, 238, 238],\r\n\t\"palevioletred\": [219, 112, 147],\r\n\t\"papayawhip\": [255, 239, 213],\r\n\t\"peachpuff\": [255, 218, 185],\r\n\t\"peru\": [205, 133, 63],\r\n\t\"pink\": [255, 192, 203],\r\n\t\"plum\": [221, 160, 221],\r\n\t\"powderblue\": [176, 224, 230],\r\n\t\"purple\": [128, 0, 128],\r\n\t\"rebeccapurple\": [102, 51, 153],\r\n\t\"red\": [255, 0, 0],\r\n\t\"rosybrown\": [188, 143, 143],\r\n\t\"royalblue\": [65, 105, 225],\r\n\t\"saddlebrown\": [139, 69, 19],\r\n\t\"salmon\": [250, 128, 114],\r\n\t\"sandybrown\": [244, 164, 96],\r\n\t\"seagreen\": [46, 139, 87],\r\n\t\"seashell\": [255, 245, 238],\r\n\t\"sienna\": [160, 82, 45],\r\n\t\"silver\": [192, 192, 192],\r\n\t\"skyblue\": [135, 206, 235],\r\n\t\"slateblue\": [106, 90, 205],\r\n\t\"slategray\": [112, 128, 144],\r\n\t\"slategrey\": [112, 128, 144],\r\n\t\"snow\": [255, 250, 250],\r\n\t\"springgreen\": [0, 255, 127],\r\n\t\"steelblue\": [70, 130, 180],\r\n\t\"tan\": [210, 180, 140],\r\n\t\"teal\": [0, 128, 128],\r\n\t\"thistle\": [216, 191, 216],\r\n\t\"tomato\": [255, 99, 71],\r\n\t\"turquoise\": [64, 224, 208],\r\n\t\"violet\": [238, 130, 238],\r\n\t\"wheat\": [245, 222, 179],\r\n\t\"white\": [255, 255, 255],\r\n\t\"whitesmoke\": [245, 245, 245],\r\n\t\"yellow\": [255, 255, 0],\r\n\t\"yellowgreen\": [154, 205, 50]\r\n};\r\n", "/* MIT license */\nvar cssKeywords = require('color-name');\n\n// NOTE: conversions should only return primitive values (i.e. arrays, or\n// values that give correct `typeof` results).\n// do not use box values types (i.e. Number(), String(), etc.)\n\nvar reverseKeywords = {};\nfor (var key in cssKeywords) {\n\tif (cssKeywords.hasOwnProperty(key)) {\n\t\treverseKeywords[cssKeywords[key]] = key;\n\t}\n}\n\nvar convert = module.exports = {\n\trgb: {channels: 3, labels: 'rgb'},\n\thsl: {channels: 3, labels: 'hsl'},\n\thsv: {channels: 3, labels: 'hsv'},\n\thwb: {channels: 3, labels: 'hwb'},\n\tcmyk: {channels: 4, labels: 'cmyk'},\n\txyz: {channels: 3, labels: 'xyz'},\n\tlab: {channels: 3, labels: 'lab'},\n\tlch: {channels: 3, labels: 'lch'},\n\thex: {channels: 1, labels: ['hex']},\n\tkeyword: {channels: 1, labels: ['keyword']},\n\tansi16: {channels: 1, labels: ['ansi16']},\n\tansi256: {channels: 1, labels: ['ansi256']},\n\thcg: {channels: 3, labels: ['h', 'c', 'g']},\n\tapple: {channels: 3, labels: ['r16', 'g16', 'b16']},\n\tgray: {channels: 1, labels: ['gray']}\n};\n\n// hide .channels and .labels properties\nfor (var model in convert) {\n\tif (convert.hasOwnProperty(model)) {\n\t\tif (!('channels' in convert[model])) {\n\t\t\tthrow new Error('missing channels property: ' + model);\n\t\t}\n\n\t\tif (!('labels' in convert[model])) {\n\t\t\tthrow new Error('missing channel labels property: ' + model);\n\t\t}\n\n\t\tif (convert[model].labels.length !== convert[model].channels) {\n\t\t\tthrow new Error('channel and label counts mismatch: ' + model);\n\t\t}\n\n\t\tvar channels = convert[model].channels;\n\t\tvar labels = convert[model].labels;\n\t\tdelete convert[model].channels;\n\t\tdelete convert[model].labels;\n\t\tObject.defineProperty(convert[model], 'channels', {value: channels});\n\t\tObject.defineProperty(convert[model], 'labels', {value: labels});\n\t}\n}\n\nconvert.rgb.hsl = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar min = Math.min(r, g, b);\n\tvar max = Math.max(r, g, b);\n\tvar delta = max - min;\n\tvar h;\n\tvar s;\n\tvar l;\n\n\tif (max === min) {\n\t\th = 0;\n\t} else if (r === max) {\n\t\th = (g - b) / delta;\n\t} else if (g === max) {\n\t\th = 2 + (b - r) / delta;\n\t} else if (b === max) {\n\t\th = 4 + (r - g) / delta;\n\t}\n\n\th = Math.min(h * 60, 360);\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tl = (min + max) / 2;\n\n\tif (max === min) {\n\t\ts = 0;\n\t} else if (l <= 0.5) {\n\t\ts = delta / (max + min);\n\t} else {\n\t\ts = delta / (2 - max - min);\n\t}\n\n\treturn [h, s * 100, l * 100];\n};\n\nconvert.rgb.hsv = function (rgb) {\n\tvar rdif;\n\tvar gdif;\n\tvar bdif;\n\tvar h;\n\tvar s;\n\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar v = Math.max(r, g, b);\n\tvar diff = v - Math.min(r, g, b);\n\tvar diffc = function (c) {\n\t\treturn (v - c) / 6 / diff + 1 / 2;\n\t};\n\n\tif (diff === 0) {\n\t\th = s = 0;\n\t} else {\n\t\ts = diff / v;\n\t\trdif = diffc(r);\n\t\tgdif = diffc(g);\n\t\tbdif = diffc(b);\n\n\t\tif (r === v) {\n\t\t\th = bdif - gdif;\n\t\t} else if (g === v) {\n\t\t\th = (1 / 3) + rdif - bdif;\n\t\t} else if (b === v) {\n\t\t\th = (2 / 3) + gdif - rdif;\n\t\t}\n\t\tif (h < 0) {\n\t\t\th += 1;\n\t\t} else if (h > 1) {\n\t\t\th -= 1;\n\t\t}\n\t}\n\n\treturn [\n\t\th * 360,\n\t\ts * 100,\n\t\tv * 100\n\t];\n};\n\nconvert.rgb.hwb = function (rgb) {\n\tvar r = rgb[0];\n\tvar g = rgb[1];\n\tvar b = rgb[2];\n\tvar h = convert.rgb.hsl(rgb)[0];\n\tvar w = 1 / 255 * Math.min(r, Math.min(g, b));\n\n\tb = 1 - 1 / 255 * Math.max(r, Math.max(g, b));\n\n\treturn [h, w * 100, b * 100];\n};\n\nconvert.rgb.cmyk = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar c;\n\tvar m;\n\tvar y;\n\tvar k;\n\n\tk = Math.min(1 - r, 1 - g, 1 - b);\n\tc = (1 - r - k) / (1 - k) || 0;\n\tm = (1 - g - k) / (1 - k) || 0;\n\ty = (1 - b - k) / (1 - k) || 0;\n\n\treturn [c * 100, m * 100, y * 100, k * 100];\n};\n\n/**\n * See https://en.m.wikipedia.org/wiki/Euclidean_distance#Squared_Euclidean_distance\n * */\nfunction comparativeDistance(x, y) {\n\treturn (\n\t\tMath.pow(x[0] - y[0], 2) +\n\t\tMath.pow(x[1] - y[1], 2) +\n\t\tMath.pow(x[2] - y[2], 2)\n\t);\n}\n\nconvert.rgb.keyword = function (rgb) {\n\tvar reversed = reverseKeywords[rgb];\n\tif (reversed) {\n\t\treturn reversed;\n\t}\n\n\tvar currentClosestDistance = Infinity;\n\tvar currentClosestKeyword;\n\n\tfor (var keyword in cssKeywords) {\n\t\tif (cssKeywords.hasOwnProperty(keyword)) {\n\t\t\tvar value = cssKeywords[keyword];\n\n\t\t\t// Compute comparative distance\n\t\t\tvar distance = comparativeDistance(rgb, value);\n\n\t\t\t// Check if its less, if so set as closest\n\t\t\tif (distance < currentClosestDistance) {\n\t\t\t\tcurrentClosestDistance = distance;\n\t\t\t\tcurrentClosestKeyword = keyword;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn currentClosestKeyword;\n};\n\nconvert.keyword.rgb = function (keyword) {\n\treturn cssKeywords[keyword];\n};\n\nconvert.rgb.xyz = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\n\t// assume sRGB\n\tr = r > 0.04045 ? Math.pow(((r + 0.055) / 1.055), 2.4) : (r / 12.92);\n\tg = g > 0.04045 ? Math.pow(((g + 0.055) / 1.055), 2.4) : (g / 12.92);\n\tb = b > 0.04045 ? Math.pow(((b + 0.055) / 1.055), 2.4) : (b / 12.92);\n\n\tvar x = (r * 0.4124) + (g * 0.3576) + (b * 0.1805);\n\tvar y = (r * 0.2126) + (g * 0.7152) + (b * 0.0722);\n\tvar z = (r * 0.0193) + (g * 0.1192) + (b * 0.9505);\n\n\treturn [x * 100, y * 100, z * 100];\n};\n\nconvert.rgb.lab = function (rgb) {\n\tvar xyz = convert.rgb.xyz(rgb);\n\tvar x = xyz[0];\n\tvar y = xyz[1];\n\tvar z = xyz[2];\n\tvar l;\n\tvar a;\n\tvar b;\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? Math.pow(x, 1 / 3) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? Math.pow(y, 1 / 3) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? Math.pow(z, 1 / 3) : (7.787 * z) + (16 / 116);\n\n\tl = (116 * y) - 16;\n\ta = 500 * (x - y);\n\tb = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.hsl.rgb = function (hsl) {\n\tvar h = hsl[0] / 360;\n\tvar s = hsl[1] / 100;\n\tvar l = hsl[2] / 100;\n\tvar t1;\n\tvar t2;\n\tvar t3;\n\tvar rgb;\n\tvar val;\n\n\tif (s === 0) {\n\t\tval = l * 255;\n\t\treturn [val, val, val];\n\t}\n\n\tif (l < 0.5) {\n\t\tt2 = l * (1 + s);\n\t} else {\n\t\tt2 = l + s - l * s;\n\t}\n\n\tt1 = 2 * l - t2;\n\n\trgb = [0, 0, 0];\n\tfor (var i = 0; i < 3; i++) {\n\t\tt3 = h + 1 / 3 * -(i - 1);\n\t\tif (t3 < 0) {\n\t\t\tt3++;\n\t\t}\n\t\tif (t3 > 1) {\n\t\t\tt3--;\n\t\t}\n\n\t\tif (6 * t3 < 1) {\n\t\t\tval = t1 + (t2 - t1) * 6 * t3;\n\t\t} else if (2 * t3 < 1) {\n\t\t\tval = t2;\n\t\t} else if (3 * t3 < 2) {\n\t\t\tval = t1 + (t2 - t1) * (2 / 3 - t3) * 6;\n\t\t} else {\n\t\t\tval = t1;\n\t\t}\n\n\t\trgb[i] = val * 255;\n\t}\n\n\treturn rgb;\n};\n\nconvert.hsl.hsv = function (hsl) {\n\tvar h = hsl[0];\n\tvar s = hsl[1] / 100;\n\tvar l = hsl[2] / 100;\n\tvar smin = s;\n\tvar lmin = Math.max(l, 0.01);\n\tvar sv;\n\tvar v;\n\n\tl *= 2;\n\ts *= (l <= 1) ? l : 2 - l;\n\tsmin *= lmin <= 1 ? lmin : 2 - lmin;\n\tv = (l + s) / 2;\n\tsv = l === 0 ? (2 * smin) / (lmin + smin) : (2 * s) / (l + s);\n\n\treturn [h, sv * 100, v * 100];\n};\n\nconvert.hsv.rgb = function (hsv) {\n\tvar h = hsv[0] / 60;\n\tvar s = hsv[1] / 100;\n\tvar v = hsv[2] / 100;\n\tvar hi = Math.floor(h) % 6;\n\n\tvar f = h - Math.floor(h);\n\tvar p = 255 * v * (1 - s);\n\tvar q = 255 * v * (1 - (s * f));\n\tvar t = 255 * v * (1 - (s * (1 - f)));\n\tv *= 255;\n\n\tswitch (hi) {\n\t\tcase 0:\n\t\t\treturn [v, t, p];\n\t\tcase 1:\n\t\t\treturn [q, v, p];\n\t\tcase 2:\n\t\t\treturn [p, v, t];\n\t\tcase 3:\n\t\t\treturn [p, q, v];\n\t\tcase 4:\n\t\t\treturn [t, p, v];\n\t\tcase 5:\n\t\t\treturn [v, p, q];\n\t}\n};\n\nconvert.hsv.hsl = function (hsv) {\n\tvar h = hsv[0];\n\tvar s = hsv[1] / 100;\n\tvar v = hsv[2] / 100;\n\tvar vmin = Math.max(v, 0.01);\n\tvar lmin;\n\tvar sl;\n\tvar l;\n\n\tl = (2 - s) * v;\n\tlmin = (2 - s) * vmin;\n\tsl = s * vmin;\n\tsl /= (lmin <= 1) ? lmin : 2 - lmin;\n\tsl = sl || 0;\n\tl /= 2;\n\n\treturn [h, sl * 100, l * 100];\n};\n\n// http://dev.w3.org/csswg/css-color/#hwb-to-rgb\nconvert.hwb.rgb = function (hwb) {\n\tvar h = hwb[0] / 360;\n\tvar wh = hwb[1] / 100;\n\tvar bl = hwb[2] / 100;\n\tvar ratio = wh + bl;\n\tvar i;\n\tvar v;\n\tvar f;\n\tvar n;\n\n\t// wh + bl cant be > 1\n\tif (ratio > 1) {\n\t\twh /= ratio;\n\t\tbl /= ratio;\n\t}\n\n\ti = Math.floor(6 * h);\n\tv = 1 - bl;\n\tf = 6 * h - i;\n\n\tif ((i & 0x01) !== 0) {\n\t\tf = 1 - f;\n\t}\n\n\tn = wh + f * (v - wh); // linear interpolation\n\n\tvar r;\n\tvar g;\n\tvar b;\n\tswitch (i) {\n\t\tdefault:\n\t\tcase 6:\n\t\tcase 0: r = v; g = n; b = wh; break;\n\t\tcase 1: r = n; g = v; b = wh; break;\n\t\tcase 2: r = wh; g = v; b = n; break;\n\t\tcase 3: r = wh; g = n; b = v; break;\n\t\tcase 4: r = n; g = wh; b = v; break;\n\t\tcase 5: r = v; g = wh; b = n; break;\n\t}\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.cmyk.rgb = function (cmyk) {\n\tvar c = cmyk[0] / 100;\n\tvar m = cmyk[1] / 100;\n\tvar y = cmyk[2] / 100;\n\tvar k = cmyk[3] / 100;\n\tvar r;\n\tvar g;\n\tvar b;\n\n\tr = 1 - Math.min(1, c * (1 - k) + k);\n\tg = 1 - Math.min(1, m * (1 - k) + k);\n\tb = 1 - Math.min(1, y * (1 - k) + k);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.rgb = function (xyz) {\n\tvar x = xyz[0] / 100;\n\tvar y = xyz[1] / 100;\n\tvar z = xyz[2] / 100;\n\tvar r;\n\tvar g;\n\tvar b;\n\n\tr = (x * 3.2406) + (y * -1.5372) + (z * -0.4986);\n\tg = (x * -0.9689) + (y * 1.8758) + (z * 0.0415);\n\tb = (x * 0.0557) + (y * -0.2040) + (z * 1.0570);\n\n\t// assume sRGB\n\tr = r > 0.0031308\n\t\t? ((1.055 * Math.pow(r, 1.0 / 2.4)) - 0.055)\n\t\t: r * 12.92;\n\n\tg = g > 0.0031308\n\t\t? ((1.055 * Math.pow(g, 1.0 / 2.4)) - 0.055)\n\t\t: g * 12.92;\n\n\tb = b > 0.0031308\n\t\t? ((1.055 * Math.pow(b, 1.0 / 2.4)) - 0.055)\n\t\t: b * 12.92;\n\n\tr = Math.min(Math.max(0, r), 1);\n\tg = Math.min(Math.max(0, g), 1);\n\tb = Math.min(Math.max(0, b), 1);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.lab = function (xyz) {\n\tvar x = xyz[0];\n\tvar y = xyz[1];\n\tvar z = xyz[2];\n\tvar l;\n\tvar a;\n\tvar b;\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? Math.pow(x, 1 / 3) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? Math.pow(y, 1 / 3) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? Math.pow(z, 1 / 3) : (7.787 * z) + (16 / 116);\n\n\tl = (116 * y) - 16;\n\ta = 500 * (x - y);\n\tb = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.lab.xyz = function (lab) {\n\tvar l = lab[0];\n\tvar a = lab[1];\n\tvar b = lab[2];\n\tvar x;\n\tvar y;\n\tvar z;\n\n\ty = (l + 16) / 116;\n\tx = a / 500 + y;\n\tz = y - b / 200;\n\n\tvar y2 = Math.pow(y, 3);\n\tvar x2 = Math.pow(x, 3);\n\tvar z2 = Math.pow(z, 3);\n\ty = y2 > 0.008856 ? y2 : (y - 16 / 116) / 7.787;\n\tx = x2 > 0.008856 ? x2 : (x - 16 / 116) / 7.787;\n\tz = z2 > 0.008856 ? z2 : (z - 16 / 116) / 7.787;\n\n\tx *= 95.047;\n\ty *= 100;\n\tz *= 108.883;\n\n\treturn [x, y, z];\n};\n\nconvert.lab.lch = function (lab) {\n\tvar l = lab[0];\n\tvar a = lab[1];\n\tvar b = lab[2];\n\tvar hr;\n\tvar h;\n\tvar c;\n\n\thr = Math.atan2(b, a);\n\th = hr * 360 / 2 / Math.PI;\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tc = Math.sqrt(a * a + b * b);\n\n\treturn [l, c, h];\n};\n\nconvert.lch.lab = function (lch) {\n\tvar l = lch[0];\n\tvar c = lch[1];\n\tvar h = lch[2];\n\tvar a;\n\tvar b;\n\tvar hr;\n\n\thr = h / 360 * 2 * Math.PI;\n\ta = c * Math.cos(hr);\n\tb = c * Math.sin(hr);\n\n\treturn [l, a, b];\n};\n\nconvert.rgb.ansi16 = function (args) {\n\tvar r = args[0];\n\tvar g = args[1];\n\tvar b = args[2];\n\tvar value = 1 in arguments ? arguments[1] : convert.rgb.hsv(args)[2]; // hsv -> ansi16 optimization\n\n\tvalue = Math.round(value / 50);\n\n\tif (value === 0) {\n\t\treturn 30;\n\t}\n\n\tvar ansi = 30\n\t\t+ ((Math.round(b / 255) << 2)\n\t\t| (Math.round(g / 255) << 1)\n\t\t| Math.round(r / 255));\n\n\tif (value === 2) {\n\t\tansi += 60;\n\t}\n\n\treturn ansi;\n};\n\nconvert.hsv.ansi16 = function (args) {\n\t// optimization here; we already know the value and don't need to get\n\t// it converted for us.\n\treturn convert.rgb.ansi16(convert.hsv.rgb(args), args[2]);\n};\n\nconvert.rgb.ansi256 = function (args) {\n\tvar r = args[0];\n\tvar g = args[1];\n\tvar b = args[2];\n\n\t// we use the extended greyscale palette here, with the exception of\n\t// black and white. normal palette only has 4 greyscale shades.\n\tif (r === g && g === b) {\n\t\tif (r < 8) {\n\t\t\treturn 16;\n\t\t}\n\n\t\tif (r > 248) {\n\t\t\treturn 231;\n\t\t}\n\n\t\treturn Math.round(((r - 8) / 247) * 24) + 232;\n\t}\n\n\tvar ansi = 16\n\t\t+ (36 * Math.round(r / 255 * 5))\n\t\t+ (6 * Math.round(g / 255 * 5))\n\t\t+ Math.round(b / 255 * 5);\n\n\treturn ansi;\n};\n\nconvert.ansi16.rgb = function (args) {\n\tvar color = args % 10;\n\n\t// handle greyscale\n\tif (color === 0 || color === 7) {\n\t\tif (args > 50) {\n\t\t\tcolor += 3.5;\n\t\t}\n\n\t\tcolor = color / 10.5 * 255;\n\n\t\treturn [color, color, color];\n\t}\n\n\tvar mult = (~~(args > 50) + 1) * 0.5;\n\tvar r = ((color & 1) * mult) * 255;\n\tvar g = (((color >> 1) & 1) * mult) * 255;\n\tvar b = (((color >> 2) & 1) * mult) * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.ansi256.rgb = function (args) {\n\t// handle greyscale\n\tif (args >= 232) {\n\t\tvar c = (args - 232) * 10 + 8;\n\t\treturn [c, c, c];\n\t}\n\n\targs -= 16;\n\n\tvar rem;\n\tvar r = Math.floor(args / 36) / 5 * 255;\n\tvar g = Math.floor((rem = args % 36) / 6) / 5 * 255;\n\tvar b = (rem % 6) / 5 * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hex = function (args) {\n\tvar integer = ((Math.round(args[0]) & 0xFF) << 16)\n\t\t+ ((Math.round(args[1]) & 0xFF) << 8)\n\t\t+ (Math.round(args[2]) & 0xFF);\n\n\tvar string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.hex.rgb = function (args) {\n\tvar match = args.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);\n\tif (!match) {\n\t\treturn [0, 0, 0];\n\t}\n\n\tvar colorString = match[0];\n\n\tif (match[0].length === 3) {\n\t\tcolorString = colorString.split('').map(function (char) {\n\t\t\treturn char + char;\n\t\t}).join('');\n\t}\n\n\tvar integer = parseInt(colorString, 16);\n\tvar r = (integer >> 16) & 0xFF;\n\tvar g = (integer >> 8) & 0xFF;\n\tvar b = integer & 0xFF;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hcg = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar max = Math.max(Math.max(r, g), b);\n\tvar min = Math.min(Math.min(r, g), b);\n\tvar chroma = (max - min);\n\tvar grayscale;\n\tvar hue;\n\n\tif (chroma < 1) {\n\t\tgrayscale = min / (1 - chroma);\n\t} else {\n\t\tgrayscale = 0;\n\t}\n\n\tif (chroma <= 0) {\n\t\thue = 0;\n\t} else\n\tif (max === r) {\n\t\thue = ((g - b) / chroma) % 6;\n\t} else\n\tif (max === g) {\n\t\thue = 2 + (b - r) / chroma;\n\t} else {\n\t\thue = 4 + (r - g) / chroma + 4;\n\t}\n\n\thue /= 6;\n\thue %= 1;\n\n\treturn [hue * 360, chroma * 100, grayscale * 100];\n};\n\nconvert.hsl.hcg = function (hsl) {\n\tvar s = hsl[1] / 100;\n\tvar l = hsl[2] / 100;\n\tvar c = 1;\n\tvar f = 0;\n\n\tif (l < 0.5) {\n\t\tc = 2.0 * s * l;\n\t} else {\n\t\tc = 2.0 * s * (1.0 - l);\n\t}\n\n\tif (c < 1.0) {\n\t\tf = (l - 0.5 * c) / (1.0 - c);\n\t}\n\n\treturn [hsl[0], c * 100, f * 100];\n};\n\nconvert.hsv.hcg = function (hsv) {\n\tvar s = hsv[1] / 100;\n\tvar v = hsv[2] / 100;\n\n\tvar c = s * v;\n\tvar f = 0;\n\n\tif (c < 1.0) {\n\t\tf = (v - c) / (1 - c);\n\t}\n\n\treturn [hsv[0], c * 100, f * 100];\n};\n\nconvert.hcg.rgb = function (hcg) {\n\tvar h = hcg[0] / 360;\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\n\tif (c === 0.0) {\n\t\treturn [g * 255, g * 255, g * 255];\n\t}\n\n\tvar pure = [0, 0, 0];\n\tvar hi = (h % 1) * 6;\n\tvar v = hi % 1;\n\tvar w = 1 - v;\n\tvar mg = 0;\n\n\tswitch (Math.floor(hi)) {\n\t\tcase 0:\n\t\t\tpure[0] = 1; pure[1] = v; pure[2] = 0; break;\n\t\tcase 1:\n\t\t\tpure[0] = w; pure[1] = 1; pure[2] = 0; break;\n\t\tcase 2:\n\t\t\tpure[0] = 0; pure[1] = 1; pure[2] = v; break;\n\t\tcase 3:\n\t\t\tpure[0] = 0; pure[1] = w; pure[2] = 1; break;\n\t\tcase 4:\n\t\t\tpure[0] = v; pure[1] = 0; pure[2] = 1; break;\n\t\tdefault:\n\t\t\tpure[0] = 1; pure[1] = 0; pure[2] = w;\n\t}\n\n\tmg = (1.0 - c) * g;\n\n\treturn [\n\t\t(c * pure[0] + mg) * 255,\n\t\t(c * pure[1] + mg) * 255,\n\t\t(c * pure[2] + mg) * 255\n\t];\n};\n\nconvert.hcg.hsv = function (hcg) {\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\n\tvar v = c + g * (1.0 - c);\n\tvar f = 0;\n\n\tif (v > 0.0) {\n\t\tf = c / v;\n\t}\n\n\treturn [hcg[0], f * 100, v * 100];\n};\n\nconvert.hcg.hsl = function (hcg) {\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\n\tvar l = g * (1.0 - c) + 0.5 * c;\n\tvar s = 0;\n\n\tif (l > 0.0 && l < 0.5) {\n\t\ts = c / (2 * l);\n\t} else\n\tif (l >= 0.5 && l < 1.0) {\n\t\ts = c / (2 * (1 - l));\n\t}\n\n\treturn [hcg[0], s * 100, l * 100];\n};\n\nconvert.hcg.hwb = function (hcg) {\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\tvar v = c + g * (1.0 - c);\n\treturn [hcg[0], (v - c) * 100, (1 - v) * 100];\n};\n\nconvert.hwb.hcg = function (hwb) {\n\tvar w = hwb[1] / 100;\n\tvar b = hwb[2] / 100;\n\tvar v = 1 - b;\n\tvar c = v - w;\n\tvar g = 0;\n\n\tif (c < 1) {\n\t\tg = (v - c) / (1 - c);\n\t}\n\n\treturn [hwb[0], c * 100, g * 100];\n};\n\nconvert.apple.rgb = function (apple) {\n\treturn [(apple[0] / 65535) * 255, (apple[1] / 65535) * 255, (apple[2] / 65535) * 255];\n};\n\nconvert.rgb.apple = function (rgb) {\n\treturn [(rgb[0] / 255) * 65535, (rgb[1] / 255) * 65535, (rgb[2] / 255) * 65535];\n};\n\nconvert.gray.rgb = function (args) {\n\treturn [args[0] / 100 * 255, args[0] / 100 * 255, args[0] / 100 * 255];\n};\n\nconvert.gray.hsl = convert.gray.hsv = function (args) {\n\treturn [0, 0, args[0]];\n};\n\nconvert.gray.hwb = function (gray) {\n\treturn [0, 100, gray[0]];\n};\n\nconvert.gray.cmyk = function (gray) {\n\treturn [0, 0, 0, gray[0]];\n};\n\nconvert.gray.lab = function (gray) {\n\treturn [gray[0], 0, 0];\n};\n\nconvert.gray.hex = function (gray) {\n\tvar val = Math.round(gray[0] / 100 * 255) & 0xFF;\n\tvar integer = (val << 16) + (val << 8) + val;\n\n\tvar string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.rgb.gray = function (rgb) {\n\tvar val = (rgb[0] + rgb[1] + rgb[2]) / 3;\n\treturn [val / 255 * 100];\n};\n", "var conversions = require('./conversions');\n\n/*\n\tthis function routes a model to all other models.\n\n\tall functions that are routed have a property `.conversion` attached\n\tto the returned synthetic function. This property is an array\n\tof strings, each with the steps in between the 'from' and 'to'\n\tcolor models (inclusive).\n\n\tconversions that are not possible simply are not included.\n*/\n\nfunction buildGraph() {\n\tvar graph = {};\n\t// https://jsperf.com/object-keys-vs-for-in-with-closure/3\n\tvar models = Object.keys(conversions);\n\n\tfor (var len = models.length, i = 0; i < len; i++) {\n\t\tgraph[models[i]] = {\n\t\t\t// http://jsperf.com/1-vs-infinity\n\t\t\t// micro-opt, but this is simple.\n\t\t\tdistance: -1,\n\t\t\tparent: null\n\t\t};\n\t}\n\n\treturn graph;\n}\n\n// https://en.wikipedia.org/wiki/Breadth-first_search\nfunction deriveBFS(fromModel) {\n\tvar graph = buildGraph();\n\tvar queue = [fromModel]; // unshift -> queue -> pop\n\n\tgraph[fromModel].distance = 0;\n\n\twhile (queue.length) {\n\t\tvar current = queue.pop();\n\t\tvar adjacents = Object.keys(conversions[current]);\n\n\t\tfor (var len = adjacents.length, i = 0; i < len; i++) {\n\t\t\tvar adjacent = adjacents[i];\n\t\t\tvar node = graph[adjacent];\n\n\t\t\tif (node.distance === -1) {\n\t\t\t\tnode.distance = graph[current].distance + 1;\n\t\t\t\tnode.parent = current;\n\t\t\t\tqueue.unshift(adjacent);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn graph;\n}\n\nfunction link(from, to) {\n\treturn function (args) {\n\t\treturn to(from(args));\n\t};\n}\n\nfunction wrapConversion(toModel, graph) {\n\tvar path = [graph[toModel].parent, toModel];\n\tvar fn = conversions[graph[toModel].parent][toModel];\n\n\tvar cur = graph[toModel].parent;\n\twhile (graph[cur].parent) {\n\t\tpath.unshift(graph[cur].parent);\n\t\tfn = link(conversions[graph[cur].parent][cur], fn);\n\t\tcur = graph[cur].parent;\n\t}\n\n\tfn.conversion = path;\n\treturn fn;\n}\n\nmodule.exports = function (fromModel) {\n\tvar graph = deriveBFS(fromModel);\n\tvar conversion = {};\n\n\tvar models = Object.keys(graph);\n\tfor (var len = models.length, i = 0; i < len; i++) {\n\t\tvar toModel = models[i];\n\t\tvar node = graph[toModel];\n\n\t\tif (node.parent === null) {\n\t\t\t// no possible conversion, or this node is the source model.\n\t\t\tcontinue;\n\t\t}\n\n\t\tconversion[toModel] = wrapConversion(toModel, graph);\n\t}\n\n\treturn conversion;\n};\n\n", "var conversions = require('./conversions');\nvar route = require('./route');\n\nvar convert = {};\n\nvar models = Object.keys(conversions);\n\nfunction wrapRaw(fn) {\n\tvar wrappedFn = function (args) {\n\t\tif (args === undefined || args === null) {\n\t\t\treturn args;\n\t\t}\n\n\t\tif (arguments.length > 1) {\n\t\t\targs = Array.prototype.slice.call(arguments);\n\t\t}\n\n\t\treturn fn(args);\n\t};\n\n\t// preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nfunction wrapRounded(fn) {\n\tvar wrappedFn = function (args) {\n\t\tif (args === undefined || args === null) {\n\t\t\treturn args;\n\t\t}\n\n\t\tif (arguments.length > 1) {\n\t\t\targs = Array.prototype.slice.call(arguments);\n\t\t}\n\n\t\tvar result = fn(args);\n\n\t\t// we're assuming the result is an array here.\n\t\t// see notice in conversions.js; don't use box types\n\t\t// in conversion functions.\n\t\tif (typeof result === 'object') {\n\t\t\tfor (var len = result.length, i = 0; i < len; i++) {\n\t\t\t\tresult[i] = Math.round(result[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t};\n\n\t// preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nmodels.forEach(function (fromModel) {\n\tconvert[fromModel] = {};\n\n\tObject.defineProperty(convert[fromModel], 'channels', {value: conversions[fromModel].channels});\n\tObject.defineProperty(convert[fromModel], 'labels', {value: conversions[fromModel].labels});\n\n\tvar routes = route(fromModel);\n\tvar routeModels = Object.keys(routes);\n\n\trouteModels.forEach(function (toModel) {\n\t\tvar fn = routes[toModel];\n\n\t\tconvert[fromModel][toModel] = wrapRounded(fn);\n\t\tconvert[fromModel][toModel].raw = wrapRaw(fn);\n\t});\n});\n\nmodule.exports = convert;\n", "'use strict';\nconst colorConvert = require('color-convert');\n\nconst wrapAnsi16 = (fn, offset) => function () {\n\tconst code = fn.apply(colorConvert, arguments);\n\treturn `\\u001B[${code + offset}m`;\n};\n\nconst wrapAnsi256 = (fn, offset) => function () {\n\tconst code = fn.apply(colorConvert, arguments);\n\treturn `\\u001B[${38 + offset};5;${code}m`;\n};\n\nconst wrapAnsi16m = (fn, offset) => function () {\n\tconst rgb = fn.apply(colorConvert, arguments);\n\treturn `\\u001B[${38 + offset};2;${rgb[0]};${rgb[1]};${rgb[2]}m`;\n};\n\nfunction assembleStyles() {\n\tconst codes = new Map();\n\tconst styles = {\n\t\tmodifier: {\n\t\t\treset: [0, 0],\n\t\t\t// 21 isn't widely supported and 22 does the same thing\n\t\t\tbold: [1, 22],\n\t\t\tdim: [2, 22],\n\t\t\titalic: [3, 23],\n\t\t\tunderline: [4, 24],\n\t\t\tinverse: [7, 27],\n\t\t\thidden: [8, 28],\n\t\t\tstrikethrough: [9, 29]\n\t\t},\n\t\tcolor: {\n\t\t\tblack: [30, 39],\n\t\t\tred: [31, 39],\n\t\t\tgreen: [32, 39],\n\t\t\tyellow: [33, 39],\n\t\t\tblue: [34, 39],\n\t\t\tmagenta: [35, 39],\n\t\t\tcyan: [36, 39],\n\t\t\twhite: [37, 39],\n\t\t\tgray: [90, 39],\n\n\t\t\t// Bright color\n\t\t\tredBright: [91, 39],\n\t\t\tgreenBright: [92, 39],\n\t\t\tyellowBright: [93, 39],\n\t\t\tblueBright: [94, 39],\n\t\t\tmagentaBright: [95, 39],\n\t\t\tcyanBright: [96, 39],\n\t\t\twhiteBright: [97, 39]\n\t\t},\n\t\tbgColor: {\n\t\t\tbgBlack: [40, 49],\n\t\t\tbgRed: [41, 49],\n\t\t\tbgGreen: [42, 49],\n\t\t\tbgYellow: [43, 49],\n\t\t\tbgBlue: [44, 49],\n\t\t\tbgMagenta: [45, 49],\n\t\t\tbgCyan: [46, 49],\n\t\t\tbgWhite: [47, 49],\n\n\t\t\t// Bright color\n\t\t\tbgBlackBright: [100, 49],\n\t\t\tbgRedBright: [101, 49],\n\t\t\tbgGreenBright: [102, 49],\n\t\t\tbgYellowBright: [103, 49],\n\t\t\tbgBlueBright: [104, 49],\n\t\t\tbgMagentaBright: [105, 49],\n\t\t\tbgCyanBright: [106, 49],\n\t\t\tbgWhiteBright: [107, 49]\n\t\t}\n\t};\n\n\t// Fix humans\n\tstyles.color.grey = styles.color.gray;\n\n\tfor (const groupName of Object.keys(styles)) {\n\t\tconst group = styles[groupName];\n\n\t\tfor (const styleName of Object.keys(group)) {\n\t\t\tconst style = group[styleName];\n\n\t\t\tstyles[styleName] = {\n\t\t\t\topen: `\\u001B[${style[0]}m`,\n\t\t\t\tclose: `\\u001B[${style[1]}m`\n\t\t\t};\n\n\t\t\tgroup[styleName] = styles[styleName];\n\n\t\t\tcodes.set(style[0], style[1]);\n\t\t}\n\n\t\tObject.defineProperty(styles, groupName, {\n\t\t\tvalue: group,\n\t\t\tenumerable: false\n\t\t});\n\n\t\tObject.defineProperty(styles, 'codes', {\n\t\t\tvalue: codes,\n\t\t\tenumerable: false\n\t\t});\n\t}\n\n\tconst ansi2ansi = n => n;\n\tconst rgb2rgb = (r, g, b) => [r, g, b];\n\n\tstyles.color.close = '\\u001B[39m';\n\tstyles.bgColor.close = '\\u001B[49m';\n\n\tstyles.color.ansi = {\n\t\tansi: wrapAnsi16(ansi2ansi, 0)\n\t};\n\tstyles.color.ansi256 = {\n\t\tansi256: wrapAnsi256(ansi2ansi, 0)\n\t};\n\tstyles.color.ansi16m = {\n\t\trgb: wrapAnsi16m(rgb2rgb, 0)\n\t};\n\n\tstyles.bgColor.ansi = {\n\t\tansi: wrapAnsi16(ansi2ansi, 10)\n\t};\n\tstyles.bgColor.ansi256 = {\n\t\tansi256: wrapAnsi256(ansi2ansi, 10)\n\t};\n\tstyles.bgColor.ansi16m = {\n\t\trgb: wrapAnsi16m(rgb2rgb, 10)\n\t};\n\n\tfor (let key of Object.keys(colorConvert)) {\n\t\tif (typeof colorConvert[key] !== 'object') {\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst suite = colorConvert[key];\n\n\t\tif (key === 'ansi16') {\n\t\t\tkey = 'ansi';\n\t\t}\n\n\t\tif ('ansi16' in suite) {\n\t\t\tstyles.color.ansi[key] = wrapAnsi16(suite.ansi16, 0);\n\t\t\tstyles.bgColor.ansi[key] = wrapAnsi16(suite.ansi16, 10);\n\t\t}\n\n\t\tif ('ansi256' in suite) {\n\t\t\tstyles.color.ansi256[key] = wrapAnsi256(suite.ansi256, 0);\n\t\t\tstyles.bgColor.ansi256[key] = wrapAnsi256(suite.ansi256, 10);\n\t\t}\n\n\t\tif ('rgb' in suite) {\n\t\t\tstyles.color.ansi16m[key] = wrapAnsi16m(suite.rgb, 0);\n\t\t\tstyles.bgColor.ansi16m[key] = wrapAnsi16m(suite.rgb, 10);\n\t\t}\n\t}\n\n\treturn styles;\n}\n\n// Make the export immutable\nObject.defineProperty(module, 'exports', {\n\tenumerable: true,\n\tget: assembleStyles\n});\n", "'use strict';\nmodule.exports = (flag, argv) => {\n\targv = argv || process.argv;\n\tconst prefix = flag.startsWith('-') ? '' : (flag.length === 1 ? '-' : '--');\n\tconst pos = argv.indexOf(prefix + flag);\n\tconst terminatorPos = argv.indexOf('--');\n\treturn pos !== -1 && (terminatorPos === -1 ? true : pos < terminatorPos);\n};\n", "'use strict';\nconst os = require('os');\nconst hasFlag = require('has-flag');\n\nconst env = process.env;\n\nlet forceColor;\nif (hasFlag('no-color') ||\n\thasFlag('no-colors') ||\n\thasFlag('color=false')) {\n\tforceColor = false;\n} else if (hasFlag('color') ||\n\thasFlag('colors') ||\n\thasFlag('color=true') ||\n\thasFlag('color=always')) {\n\tforceColor = true;\n}\nif ('FORCE_COLOR' in env) {\n\tforceColor = env.FORCE_COLOR.length === 0 || parseInt(env.FORCE_COLOR, 10) !== 0;\n}\n\nfunction translateLevel(level) {\n\tif (level === 0) {\n\t\treturn false;\n\t}\n\n\treturn {\n\t\tlevel,\n\t\thasBasic: true,\n\t\thas256: level >= 2,\n\t\thas16m: level >= 3\n\t};\n}\n\nfunction supportsColor(stream) {\n\tif (forceColor === false) {\n\t\treturn 0;\n\t}\n\n\tif (hasFlag('color=16m') ||\n\t\thasFlag('color=full') ||\n\t\thasFlag('color=truecolor')) {\n\t\treturn 3;\n\t}\n\n\tif (hasFlag('color=256')) {\n\t\treturn 2;\n\t}\n\n\tif (stream && !stream.isTTY && forceColor !== true) {\n\t\treturn 0;\n\t}\n\n\tconst min = forceColor ? 1 : 0;\n\n\tif (process.platform === 'win32') {\n\t\t// Node.js 7.5.0 is the first version of Node.js to include a patch to\n\t\t// libuv that enables 256 color output on Windows. Anything earlier and it\n\t\t// won't work. However, here we target Node.js 8 at minimum as it is an LTS\n\t\t// release, and Node.js 7 is not. Windows 10 build 10586 is the first Windows\n\t\t// release that supports 256 colors. Windows 10 build 14931 is the first release\n\t\t// that supports 16m/TrueColor.\n\t\tconst osRelease = os.release().split('.');\n\t\tif (\n\t\t\tNumber(process.versions.node.split('.')[0]) >= 8 &&\n\t\t\tNumber(osRelease[0]) >= 10 &&\n\t\t\tNumber(osRelease[2]) >= 10586\n\t\t) {\n\t\t\treturn Number(osRelease[2]) >= 14931 ? 3 : 2;\n\t\t}\n\n\t\treturn 1;\n\t}\n\n\tif ('CI' in env) {\n\t\tif (['TRAVIS', 'CIRCLECI', 'APPVEYOR', 'GITLAB_CI'].some(sign => sign in env) || env.CI_NAME === 'codeship') {\n\t\t\treturn 1;\n\t\t}\n\n\t\treturn min;\n\t}\n\n\tif ('TEAMCITY_VERSION' in env) {\n\t\treturn /^(9\\.(0*[1-9]\\d*)\\.|\\d{2,}\\.)/.test(env.TEAMCITY_VERSION) ? 1 : 0;\n\t}\n\n\tif (env.COLORTERM === 'truecolor') {\n\t\treturn 3;\n\t}\n\n\tif ('TERM_PROGRAM' in env) {\n\t\tconst version = parseInt((env.TERM_PROGRAM_VERSION || '').split('.')[0], 10);\n\n\t\tswitch (env.TERM_PROGRAM) {\n\t\t\tcase 'iTerm.app':\n\t\t\t\treturn version >= 3 ? 3 : 2;\n\t\t\tcase 'Apple_Terminal':\n\t\t\t\treturn 2;\n\t\t\t// No default\n\t\t}\n\t}\n\n\tif (/-256(color)?$/i.test(env.TERM)) {\n\t\treturn 2;\n\t}\n\n\tif (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)) {\n\t\treturn 1;\n\t}\n\n\tif ('COLORTERM' in env) {\n\t\treturn 1;\n\t}\n\n\tif (env.TERM === 'dumb') {\n\t\treturn min;\n\t}\n\n\treturn min;\n}\n\nfunction getSupportLevel(stream) {\n\tconst level = supportsColor(stream);\n\treturn translateLevel(level);\n}\n\nmodule.exports = {\n\tsupportsColor: getSupportLevel,\n\tstdout: getSupportLevel(process.stdout),\n\tstderr: getSupportLevel(process.stderr)\n};\n", "'use strict';\nconst TEMPLATE_REGEX = /(?:\\\\(u[a-f\\d]{4}|x[a-f\\d]{2}|.))|(?:\\{(~)?(\\w+(?:\\([^)]*\\))?(?:\\.\\w+(?:\\([^)]*\\))?)*)(?:[ \\t]|(?=\\r?\\n)))|(\\})|((?:.|[\\r\\n\\f])+?)/gi;\nconst STYLE_REGEX = /(?:^|\\.)(\\w+)(?:\\(([^)]*)\\))?/g;\nconst STRING_REGEX = /^(['\"])((?:\\\\.|(?!\\1)[^\\\\])*)\\1$/;\nconst ESCAPE_REGEX = /\\\\(u[a-f\\d]{4}|x[a-f\\d]{2}|.)|([^\\\\])/gi;\n\nconst ESCAPES = new Map([\n\t['n', '\\n'],\n\t['r', '\\r'],\n\t['t', '\\t'],\n\t['b', '\\b'],\n\t['f', '\\f'],\n\t['v', '\\v'],\n\t['0', '\\0'],\n\t['\\\\', '\\\\'],\n\t['e', '\\u001B'],\n\t['a', '\\u0007']\n]);\n\nfunction unescape(c) {\n\tif ((c[0] === 'u' && c.length === 5) || (c[0] === 'x' && c.length === 3)) {\n\t\treturn String.fromCharCode(parseInt(c.slice(1), 16));\n\t}\n\n\treturn ESCAPES.get(c) || c;\n}\n\nfunction parseArguments(name, args) {\n\tconst results = [];\n\tconst chunks = args.trim().split(/\\s*,\\s*/g);\n\tlet matches;\n\n\tfor (const chunk of chunks) {\n\t\tif (!isNaN(chunk)) {\n\t\t\tresults.push(Number(chunk));\n\t\t} else if ((matches = chunk.match(STRING_REGEX))) {\n\t\t\tresults.push(matches[2].replace(ESCAPE_REGEX, (m, escape, chr) => escape ? unescape(escape) : chr));\n\t\t} else {\n\t\t\tthrow new Error(`Invalid Chalk template style argument: ${chunk} (in style '${name}')`);\n\t\t}\n\t}\n\n\treturn results;\n}\n\nfunction parseStyle(style) {\n\tSTYLE_REGEX.lastIndex = 0;\n\n\tconst results = [];\n\tlet matches;\n\n\twhile ((matches = STYLE_REGEX.exec(style)) !== null) {\n\t\tconst name = matches[1];\n\n\t\tif (matches[2]) {\n\t\t\tconst args = parseArguments(name, matches[2]);\n\t\t\tresults.push([name].concat(args));\n\t\t} else {\n\t\t\tresults.push([name]);\n\t\t}\n\t}\n\n\treturn results;\n}\n\nfunction buildStyle(chalk, styles) {\n\tconst enabled = {};\n\n\tfor (const layer of styles) {\n\t\tfor (const style of layer.styles) {\n\t\t\tenabled[style[0]] = layer.inverse ? null : style.slice(1);\n\t\t}\n\t}\n\n\tlet current = chalk;\n\tfor (const styleName of Object.keys(enabled)) {\n\t\tif (Array.isArray(enabled[styleName])) {\n\t\t\tif (!(styleName in current)) {\n\t\t\t\tthrow new Error(`Unknown Chalk style: ${styleName}`);\n\t\t\t}\n\n\t\t\tif (enabled[styleName].length > 0) {\n\t\t\t\tcurrent = current[styleName].apply(current, enabled[styleName]);\n\t\t\t} else {\n\t\t\t\tcurrent = current[styleName];\n\t\t\t}\n\t\t}\n\t}\n\n\treturn current;\n}\n\nmodule.exports = (chalk, tmp) => {\n\tconst styles = [];\n\tconst chunks = [];\n\tlet chunk = [];\n\n\t// eslint-disable-next-line max-params\n\ttmp.replace(TEMPLATE_REGEX, (m, escapeChar, inverse, style, close, chr) => {\n\t\tif (escapeChar) {\n\t\t\tchunk.push(unescape(escapeChar));\n\t\t} else if (style) {\n\t\t\tconst str = chunk.join('');\n\t\t\tchunk = [];\n\t\t\tchunks.push(styles.length === 0 ? str : buildStyle(chalk, styles)(str));\n\t\t\tstyles.push({inverse, styles: parseStyle(style)});\n\t\t} else if (close) {\n\t\t\tif (styles.length === 0) {\n\t\t\t\tthrow new Error('Found extraneous } in Chalk template literal');\n\t\t\t}\n\n\t\t\tchunks.push(buildStyle(chalk, styles)(chunk.join('')));\n\t\t\tchunk = [];\n\t\t\tstyles.pop();\n\t\t} else {\n\t\t\tchunk.push(chr);\n\t\t}\n\t});\n\n\tchunks.push(chunk.join(''));\n\n\tif (styles.length > 0) {\n\t\tconst errMsg = `Chalk template literal is missing ${styles.length} closing bracket${styles.length === 1 ? '' : 's'} (\\`}\\`)`;\n\t\tthrow new Error(errMsg);\n\t}\n\n\treturn chunks.join('');\n};\n", "'use strict';\nconst escapeStringRegexp = require('escape-string-regexp');\nconst ansiStyles = require('ansi-styles');\nconst stdoutColor = require('supports-color').stdout;\n\nconst template = require('./templates.js');\n\nconst isSimpleWindowsTerm = process.platform === 'win32' && !(process.env.TERM || '').toLowerCase().startsWith('xterm');\n\n// `supportsColor.level` \u2192 `ansiStyles.color[name]` mapping\nconst levelMapping = ['ansi', 'ansi', 'ansi256', 'ansi16m'];\n\n// `color-convert` models to exclude from the Chalk API due to conflicts and such\nconst skipModels = new Set(['gray']);\n\nconst styles = Object.create(null);\n\nfunction applyOptions(obj, options) {\n\toptions = options || {};\n\n\t// Detect level if not set manually\n\tconst scLevel = stdoutColor ? stdoutColor.level : 0;\n\tobj.level = options.level === undefined ? scLevel : options.level;\n\tobj.enabled = 'enabled' in options ? options.enabled : obj.level > 0;\n}\n\nfunction Chalk(options) {\n\t// We check for this.template here since calling `chalk.constructor()`\n\t// by itself will have a `this` of a previously constructed chalk object\n\tif (!this || !(this instanceof Chalk) || this.template) {\n\t\tconst chalk = {};\n\t\tapplyOptions(chalk, options);\n\n\t\tchalk.template = function () {\n\t\t\tconst args = [].slice.call(arguments);\n\t\t\treturn chalkTag.apply(null, [chalk.template].concat(args));\n\t\t};\n\n\t\tObject.setPrototypeOf(chalk, Chalk.prototype);\n\t\tObject.setPrototypeOf(chalk.template, chalk);\n\n\t\tchalk.template.constructor = Chalk;\n\n\t\treturn chalk.template;\n\t}\n\n\tapplyOptions(this, options);\n}\n\n// Use bright blue on Windows as the normal blue color is illegible\nif (isSimpleWindowsTerm) {\n\tansiStyles.blue.open = '\\u001B[94m';\n}\n\nfor (const key of Object.keys(ansiStyles)) {\n\tansiStyles[key].closeRe = new RegExp(escapeStringRegexp(ansiStyles[key].close), 'g');\n\n\tstyles[key] = {\n\t\tget() {\n\t\t\tconst codes = ansiStyles[key];\n\t\t\treturn build.call(this, this._styles ? this._styles.concat(codes) : [codes], this._empty, key);\n\t\t}\n\t};\n}\n\nstyles.visible = {\n\tget() {\n\t\treturn build.call(this, this._styles || [], true, 'visible');\n\t}\n};\n\nansiStyles.color.closeRe = new RegExp(escapeStringRegexp(ansiStyles.color.close), 'g');\nfor (const model of Object.keys(ansiStyles.color.ansi)) {\n\tif (skipModels.has(model)) {\n\t\tcontinue;\n\t}\n\n\tstyles[model] = {\n\t\tget() {\n\t\t\tconst level = this.level;\n\t\t\treturn function () {\n\t\t\t\tconst open = ansiStyles.color[levelMapping[level]][model].apply(null, arguments);\n\t\t\t\tconst codes = {\n\t\t\t\t\topen,\n\t\t\t\t\tclose: ansiStyles.color.close,\n\t\t\t\t\tcloseRe: ansiStyles.color.closeRe\n\t\t\t\t};\n\t\t\t\treturn build.call(this, this._styles ? this._styles.concat(codes) : [codes], this._empty, model);\n\t\t\t};\n\t\t}\n\t};\n}\n\nansiStyles.bgColor.closeRe = new RegExp(escapeStringRegexp(ansiStyles.bgColor.close), 'g');\nfor (const model of Object.keys(ansiStyles.bgColor.ansi)) {\n\tif (skipModels.has(model)) {\n\t\tcontinue;\n\t}\n\n\tconst bgModel = 'bg' + model[0].toUpperCase() + model.slice(1);\n\tstyles[bgModel] = {\n\t\tget() {\n\t\t\tconst level = this.level;\n\t\t\treturn function () {\n\t\t\t\tconst open = ansiStyles.bgColor[levelMapping[level]][model].apply(null, arguments);\n\t\t\t\tconst codes = {\n\t\t\t\t\topen,\n\t\t\t\t\tclose: ansiStyles.bgColor.close,\n\t\t\t\t\tcloseRe: ansiStyles.bgColor.closeRe\n\t\t\t\t};\n\t\t\t\treturn build.call(this, this._styles ? this._styles.concat(codes) : [codes], this._empty, model);\n\t\t\t};\n\t\t}\n\t};\n}\n\nconst proto = Object.defineProperties(() => {}, styles);\n\nfunction build(_styles, _empty, key) {\n\tconst builder = function () {\n\t\treturn applyStyle.apply(builder, arguments);\n\t};\n\n\tbuilder._styles = _styles;\n\tbuilder._empty = _empty;\n\n\tconst self = this;\n\n\tObject.defineProperty(builder, 'level', {\n\t\tenumerable: true,\n\t\tget() {\n\t\t\treturn self.level;\n\t\t},\n\t\tset(level) {\n\t\t\tself.level = level;\n\t\t}\n\t});\n\n\tObject.defineProperty(builder, 'enabled', {\n\t\tenumerable: true,\n\t\tget() {\n\t\t\treturn self.enabled;\n\t\t},\n\t\tset(enabled) {\n\t\t\tself.enabled = enabled;\n\t\t}\n\t});\n\n\t// See below for fix regarding invisible grey/dim combination on Windows\n\tbuilder.hasGrey = this.hasGrey || key === 'gray' || key === 'grey';\n\n\t// `__proto__` is used because we must return a function, but there is\n\t// no way to create a function with a different prototype\n\tbuilder.__proto__ = proto; // eslint-disable-line no-proto\n\n\treturn builder;\n}\n\nfunction applyStyle() {\n\t// Support varags, but simply cast to string in case there's only one arg\n\tconst args = arguments;\n\tconst argsLen = args.length;\n\tlet str = String(arguments[0]);\n\n\tif (argsLen === 0) {\n\t\treturn '';\n\t}\n\n\tif (argsLen > 1) {\n\t\t// Don't slice `arguments`, it prevents V8 optimizations\n\t\tfor (let a = 1; a < argsLen; a++) {\n\t\t\tstr += ' ' + args[a];\n\t\t}\n\t}\n\n\tif (!this.enabled || this.level <= 0 || !str) {\n\t\treturn this._empty ? '' : str;\n\t}\n\n\t// Turns out that on Windows dimmed gray text becomes invisible in cmd.exe,\n\t// see https://github.com/chalk/chalk/issues/58\n\t// If we're on Windows and we're dealing with a gray color, temporarily make 'dim' a noop.\n\tconst originalDim = ansiStyles.dim.open;\n\tif (isSimpleWindowsTerm && this.hasGrey) {\n\t\tansiStyles.dim.open = '';\n\t}\n\n\tfor (const code of this._styles.slice().reverse()) {\n\t\t// Replace any instances already present with a re-opening code\n\t\t// otherwise only the part of the string until said closing code\n\t\t// will be colored, and the rest will simply be 'plain'.\n\t\tstr = code.open + str.replace(code.closeRe, code.open) + code.close;\n\n\t\t// Close the styling before a linebreak and reopen\n\t\t// after next line to fix a bleed issue on macOS\n\t\t// https://github.com/chalk/chalk/pull/92\n\t\tstr = str.replace(/\\r?\\n/g, `${code.close}$&${code.open}`);\n\t}\n\n\t// Reset the original `dim` if we changed it to work around the Windows dimmed gray issue\n\tansiStyles.dim.open = originalDim;\n\n\treturn str;\n}\n\nfunction chalkTag(chalk, strings) {\n\tif (!Array.isArray(strings)) {\n\t\t// If chalk() was called by itself or with a string,\n\t\t// return the string itself as a string.\n\t\treturn [].slice.call(arguments, 1).join(' ');\n\t}\n\n\tconst args = [].slice.call(arguments, 2);\n\tconst parts = [strings.raw[0]];\n\n\tfor (let i = 1; i < strings.length; i++) {\n\t\tparts.push(String(args[i - 1]).replace(/[{}\\\\]/g, '\\\\$&'));\n\t\tparts.push(String(strings.raw[i]));\n\t}\n\n\treturn template(chalk, parts.join(''));\n}\n\nObject.defineProperties(Chalk.prototype, styles);\n\nmodule.exports = Chalk(); // eslint-disable-line new-cap\nmodule.exports.supportsColor = stdoutColor;\nmodule.exports.default = module.exports; // For TypeScript\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.shouldHighlight = shouldHighlight;\nexports.getChalk = getChalk;\nexports.default = highlight;\n\nvar jsTokensNs = _interopRequireWildcard(require(\"js-tokens\"));\n\nvar _helperValidatorIdentifier = require(\"@babel/helper-validator-identifier\");\n\nvar _chalk = _interopRequireDefault(require(\"chalk\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _getRequireWildcardCache() { if (typeof WeakMap !== \"function\") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nconst sometimesKeywords = new Set([\"as\", \"async\", \"from\", \"get\", \"of\", \"set\"]);\n\nfunction getDefs(chalk) {\n return {\n keyword: chalk.cyan,\n capitalized: chalk.yellow,\n jsxIdentifier: chalk.yellow,\n punctuator: chalk.yellow,\n number: chalk.magenta,\n string: chalk.green,\n regex: chalk.magenta,\n comment: chalk.grey,\n invalid: chalk.white.bgRed.bold\n };\n}\n\nconst NEWLINE = /\\r\\n|[\\n\\r\\u2028\\u2029]/;\nconst BRACKET = /^[()[\\]{}]$/;\nlet tokenize;\n{\n const {\n matchToToken\n } = jsTokensNs;\n const JSX_TAG = /^[a-z][\\w-]*$/i;\n\n const getTokenType = function (token, offset, text) {\n if (token.type === \"name\") {\n if ((0, _helperValidatorIdentifier.isKeyword)(token.value) || (0, _helperValidatorIdentifier.isStrictReservedWord)(token.value, true) || sometimesKeywords.has(token.value)) {\n return \"keyword\";\n }\n\n if (JSX_TAG.test(token.value) && (text[offset - 1] === \"<\" || text.substr(offset - 2, 2) == \" colorize(str)).join(\"\\n\");\n } else {\n highlighted += value;\n }\n }\n\n return highlighted;\n}\n\nfunction shouldHighlight(options) {\n return _chalk.default.supportsColor || options.forceColor;\n}\n\nfunction getChalk(options) {\n let chalk = _chalk.default;\n\n if (options.forceColor) {\n chalk = new _chalk.default.constructor({\n enabled: true,\n level: 1\n });\n }\n\n return chalk;\n}\n\nfunction highlight(code, options = {}) {\n if (shouldHighlight(options)) {\n const chalk = getChalk(options);\n const defs = getDefs(chalk);\n return highlightTokens(defs, code);\n } else {\n return code;\n }\n}", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.codeFrameColumns = codeFrameColumns;\nexports.default = _default;\n\nvar _highlight = _interopRequireWildcard(require(\"@babel/highlight\"));\n\nfunction _getRequireWildcardCache() { if (typeof WeakMap !== \"function\") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nlet deprecationWarningShown = false;\n\nfunction getDefs(chalk) {\n return {\n gutter: chalk.grey,\n marker: chalk.red.bold,\n message: chalk.red.bold\n };\n}\n\nconst NEWLINE = /\\r\\n|[\\n\\r\\u2028\\u2029]/;\n\nfunction getMarkerLines(loc, source, opts) {\n const startLoc = Object.assign({\n column: 0,\n line: -1\n }, loc.start);\n const endLoc = Object.assign({}, startLoc, loc.end);\n const {\n linesAbove = 2,\n linesBelow = 3\n } = opts || {};\n const startLine = startLoc.line;\n const startColumn = startLoc.column;\n const endLine = endLoc.line;\n const endColumn = endLoc.column;\n let start = Math.max(startLine - (linesAbove + 1), 0);\n let end = Math.min(source.length, endLine + linesBelow);\n\n if (startLine === -1) {\n start = 0;\n }\n\n if (endLine === -1) {\n end = source.length;\n }\n\n const lineDiff = endLine - startLine;\n const markerLines = {};\n\n if (lineDiff) {\n for (let i = 0; i <= lineDiff; i++) {\n const lineNumber = i + startLine;\n\n if (!startColumn) {\n markerLines[lineNumber] = true;\n } else if (i === 0) {\n const sourceLength = source[lineNumber - 1].length;\n markerLines[lineNumber] = [startColumn, sourceLength - startColumn + 1];\n } else if (i === lineDiff) {\n markerLines[lineNumber] = [0, endColumn];\n } else {\n const sourceLength = source[lineNumber - i].length;\n markerLines[lineNumber] = [0, sourceLength];\n }\n }\n } else {\n if (startColumn === endColumn) {\n if (startColumn) {\n markerLines[startLine] = [startColumn, 0];\n } else {\n markerLines[startLine] = true;\n }\n } else {\n markerLines[startLine] = [startColumn, endColumn - startColumn];\n }\n }\n\n return {\n start,\n end,\n markerLines\n };\n}\n\nfunction codeFrameColumns(rawLines, loc, opts = {}) {\n const highlighted = (opts.highlightCode || opts.forceColor) && (0, _highlight.shouldHighlight)(opts);\n const chalk = (0, _highlight.getChalk)(opts);\n const defs = getDefs(chalk);\n\n const maybeHighlight = (chalkFn, string) => {\n return highlighted ? chalkFn(string) : string;\n };\n\n const lines = rawLines.split(NEWLINE);\n const {\n start,\n end,\n markerLines\n } = getMarkerLines(loc, lines, opts);\n const hasColumns = loc.start && typeof loc.start.column === \"number\";\n const numberMaxWidth = String(end).length;\n const highlightedLines = highlighted ? (0, _highlight.default)(rawLines, opts) : rawLines;\n let frame = highlightedLines.split(NEWLINE).slice(start, end).map((line, index) => {\n const number = start + 1 + index;\n const paddedNumber = ` ${number}`.slice(-numberMaxWidth);\n const gutter = ` ${paddedNumber} |`;\n const hasMarker = markerLines[number];\n const lastMarkerLine = !markerLines[number + 1];\n\n if (hasMarker) {\n let markerLine = \"\";\n\n if (Array.isArray(hasMarker)) {\n const markerSpacing = line.slice(0, Math.max(hasMarker[0] - 1, 0)).replace(/[^\\t]/g, \" \");\n const numberOfMarkers = hasMarker[1] || 1;\n markerLine = [\"\\n \", maybeHighlight(defs.gutter, gutter.replace(/\\d/g, \" \")), \" \", markerSpacing, maybeHighlight(defs.marker, \"^\").repeat(numberOfMarkers)].join(\"\");\n\n if (lastMarkerLine && opts.message) {\n markerLine += \" \" + maybeHighlight(defs.message, opts.message);\n }\n }\n\n return [maybeHighlight(defs.marker, \">\"), maybeHighlight(defs.gutter, gutter), line.length > 0 ? ` ${line}` : \"\", markerLine].join(\"\");\n } else {\n return ` ${maybeHighlight(defs.gutter, gutter)}${line.length > 0 ? ` ${line}` : \"\"}`;\n }\n }).join(\"\\n\");\n\n if (opts.message && !hasColumns) {\n frame = `${\" \".repeat(numberMaxWidth + 1)}${opts.message}\\n${frame}`;\n }\n\n if (highlighted) {\n return chalk.reset(frame);\n } else {\n return frame;\n }\n}\n\nfunction _default(rawLines, lineNumber, colNumber, opts = {}) {\n if (!deprecationWarningShown) {\n deprecationWarningShown = true;\n const message = \"Passing lineNumber and colNumber is deprecated to @babel/code-frame. Please use `codeFrameColumns`.\";\n\n if (process.emitWarning) {\n process.emitWarning(message, \"DeprecationWarning\");\n } else {\n const deprecationError = new Error(message);\n deprecationError.name = \"DeprecationWarning\";\n console.warn(new Error(message));\n }\n }\n\n colNumber = Math.max(colNumber, 0);\n const location = {\n start: {\n column: colNumber,\n line: lineNumber\n }\n };\n return codeFrameColumns(rawLines, location, opts);\n}", "'use strict';\nconst errorEx = require('error-ex');\nconst fallback = require('json-parse-even-better-errors');\nconst {default: LinesAndColumns} = require('lines-and-columns');\nconst {codeFrameColumns} = require('@babel/code-frame');\n\nconst JSONError = errorEx('JSONError', {\n\tfileName: errorEx.append('in %s'),\n\tcodeFrame: errorEx.append('\\n\\n%s\\n')\n});\n\nconst parseJson = (string, reviver, filename) => {\n\tif (typeof reviver === 'string') {\n\t\tfilename = reviver;\n\t\treviver = null;\n\t}\n\n\ttry {\n\t\ttry {\n\t\t\treturn JSON.parse(string, reviver);\n\t\t} catch (error) {\n\t\t\tfallback(string, reviver);\n\t\t\tthrow error;\n\t\t}\n\t} catch (error) {\n\t\terror.message = error.message.replace(/\\n/g, '');\n\t\tconst indexMatch = error.message.match(/in JSON at position (\\d+) while parsing/);\n\n\t\tconst jsonError = new JSONError(error);\n\t\tif (filename) {\n\t\t\tjsonError.fileName = filename;\n\t\t}\n\n\t\tif (indexMatch && indexMatch.length > 0) {\n\t\t\tconst lines = new LinesAndColumns(string);\n\t\t\tconst index = Number(indexMatch[1]);\n\t\t\tconst location = lines.locationForIndex(index);\n\n\t\t\tconst codeFrame = codeFrameColumns(\n\t\t\t\tstring,\n\t\t\t\t{start: {line: location.line + 1, column: location.column + 1}},\n\t\t\t\t{highlightCode: true}\n\t\t\t);\n\n\t\t\tjsonError.codeFrame = codeFrame;\n\t\t}\n\n\t\tthrow jsonError;\n\t}\n};\n\nparseJson.JSONError = JSONError;\n\nmodule.exports = parseJson;\n", "exports = module.exports = SemVer\n\nvar debug\n/* istanbul ignore next */\nif (typeof process === 'object' &&\n process.env &&\n process.env.NODE_DEBUG &&\n /\\bsemver\\b/i.test(process.env.NODE_DEBUG)) {\n debug = function () {\n var args = Array.prototype.slice.call(arguments, 0)\n args.unshift('SEMVER')\n console.log.apply(console, args)\n }\n} else {\n debug = function () {}\n}\n\n// Note: this is the semver.org version of the spec that it implements\n// Not necessarily the package version of this code.\nexports.SEMVER_SPEC_VERSION = '2.0.0'\n\nvar MAX_LENGTH = 256\nvar MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER ||\n /* istanbul ignore next */ 9007199254740991\n\n// Max safe segment length for coercion.\nvar MAX_SAFE_COMPONENT_LENGTH = 16\n\n// The actual regexps go on exports.re\nvar re = exports.re = []\nvar src = exports.src = []\nvar R = 0\n\n// The following Regular Expressions can be used for tokenizing,\n// validating, and parsing SemVer version strings.\n\n// ## Numeric Identifier\n// A single `0`, or a non-zero digit followed by zero or more digits.\n\nvar NUMERICIDENTIFIER = R++\nsrc[NUMERICIDENTIFIER] = '0|[1-9]\\\\d*'\nvar NUMERICIDENTIFIERLOOSE = R++\nsrc[NUMERICIDENTIFIERLOOSE] = '[0-9]+'\n\n// ## Non-numeric Identifier\n// Zero or more digits, followed by a letter or hyphen, and then zero or\n// more letters, digits, or hyphens.\n\nvar NONNUMERICIDENTIFIER = R++\nsrc[NONNUMERICIDENTIFIER] = '\\\\d*[a-zA-Z-][a-zA-Z0-9-]*'\n\n// ## Main Version\n// Three dot-separated numeric identifiers.\n\nvar MAINVERSION = R++\nsrc[MAINVERSION] = '(' + src[NUMERICIDENTIFIER] + ')\\\\.' +\n '(' + src[NUMERICIDENTIFIER] + ')\\\\.' +\n '(' + src[NUMERICIDENTIFIER] + ')'\n\nvar MAINVERSIONLOOSE = R++\nsrc[MAINVERSIONLOOSE] = '(' + src[NUMERICIDENTIFIERLOOSE] + ')\\\\.' +\n '(' + src[NUMERICIDENTIFIERLOOSE] + ')\\\\.' +\n '(' + src[NUMERICIDENTIFIERLOOSE] + ')'\n\n// ## Pre-release Version Identifier\n// A numeric identifier, or a non-numeric identifier.\n\nvar PRERELEASEIDENTIFIER = R++\nsrc[PRERELEASEIDENTIFIER] = '(?:' + src[NUMERICIDENTIFIER] +\n '|' + src[NONNUMERICIDENTIFIER] + ')'\n\nvar PRERELEASEIDENTIFIERLOOSE = R++\nsrc[PRERELEASEIDENTIFIERLOOSE] = '(?:' + src[NUMERICIDENTIFIERLOOSE] +\n '|' + src[NONNUMERICIDENTIFIER] + ')'\n\n// ## Pre-release Version\n// Hyphen, followed by one or more dot-separated pre-release version\n// identifiers.\n\nvar PRERELEASE = R++\nsrc[PRERELEASE] = '(?:-(' + src[PRERELEASEIDENTIFIER] +\n '(?:\\\\.' + src[PRERELEASEIDENTIFIER] + ')*))'\n\nvar PRERELEASELOOSE = R++\nsrc[PRERELEASELOOSE] = '(?:-?(' + src[PRERELEASEIDENTIFIERLOOSE] +\n '(?:\\\\.' + src[PRERELEASEIDENTIFIERLOOSE] + ')*))'\n\n// ## Build Metadata Identifier\n// Any combination of digits, letters, or hyphens.\n\nvar BUILDIDENTIFIER = R++\nsrc[BUILDIDENTIFIER] = '[0-9A-Za-z-]+'\n\n// ## Build Metadata\n// Plus sign, followed by one or more period-separated build metadata\n// identifiers.\n\nvar BUILD = R++\nsrc[BUILD] = '(?:\\\\+(' + src[BUILDIDENTIFIER] +\n '(?:\\\\.' + src[BUILDIDENTIFIER] + ')*))'\n\n// ## Full Version String\n// A main version, followed optionally by a pre-release version and\n// build metadata.\n\n// Note that the only major, minor, patch, and pre-release sections of\n// the version string are capturing groups. The build metadata is not a\n// capturing group, because it should not ever be used in version\n// comparison.\n\nvar FULL = R++\nvar FULLPLAIN = 'v?' + src[MAINVERSION] +\n src[PRERELEASE] + '?' +\n src[BUILD] + '?'\n\nsrc[FULL] = '^' + FULLPLAIN + '$'\n\n// like full, but allows v1.2.3 and =1.2.3, which people do sometimes.\n// also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty\n// common in the npm registry.\nvar LOOSEPLAIN = '[v=\\\\s]*' + src[MAINVERSIONLOOSE] +\n src[PRERELEASELOOSE] + '?' +\n src[BUILD] + '?'\n\nvar LOOSE = R++\nsrc[LOOSE] = '^' + LOOSEPLAIN + '$'\n\nvar GTLT = R++\nsrc[GTLT] = '((?:<|>)?=?)'\n\n// Something like \"2.*\" or \"1.2.x\".\n// Note that \"x.x\" is a valid xRange identifer, meaning \"any version\"\n// Only the first item is strictly required.\nvar XRANGEIDENTIFIERLOOSE = R++\nsrc[XRANGEIDENTIFIERLOOSE] = src[NUMERICIDENTIFIERLOOSE] + '|x|X|\\\\*'\nvar XRANGEIDENTIFIER = R++\nsrc[XRANGEIDENTIFIER] = src[NUMERICIDENTIFIER] + '|x|X|\\\\*'\n\nvar XRANGEPLAIN = R++\nsrc[XRANGEPLAIN] = '[v=\\\\s]*(' + src[XRANGEIDENTIFIER] + ')' +\n '(?:\\\\.(' + src[XRANGEIDENTIFIER] + ')' +\n '(?:\\\\.(' + src[XRANGEIDENTIFIER] + ')' +\n '(?:' + src[PRERELEASE] + ')?' +\n src[BUILD] + '?' +\n ')?)?'\n\nvar XRANGEPLAINLOOSE = R++\nsrc[XRANGEPLAINLOOSE] = '[v=\\\\s]*(' + src[XRANGEIDENTIFIERLOOSE] + ')' +\n '(?:\\\\.(' + src[XRANGEIDENTIFIERLOOSE] + ')' +\n '(?:\\\\.(' + src[XRANGEIDENTIFIERLOOSE] + ')' +\n '(?:' + src[PRERELEASELOOSE] + ')?' +\n src[BUILD] + '?' +\n ')?)?'\n\nvar XRANGE = R++\nsrc[XRANGE] = '^' + src[GTLT] + '\\\\s*' + src[XRANGEPLAIN] + '$'\nvar XRANGELOOSE = R++\nsrc[XRANGELOOSE] = '^' + src[GTLT] + '\\\\s*' + src[XRANGEPLAINLOOSE] + '$'\n\n// Coercion.\n// Extract anything that could conceivably be a part of a valid semver\nvar COERCE = R++\nsrc[COERCE] = '(?:^|[^\\\\d])' +\n '(\\\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '})' +\n '(?:\\\\.(\\\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '}))?' +\n '(?:\\\\.(\\\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '}))?' +\n '(?:$|[^\\\\d])'\n\n// Tilde ranges.\n// Meaning is \"reasonably at or greater than\"\nvar LONETILDE = R++\nsrc[LONETILDE] = '(?:~>?)'\n\nvar TILDETRIM = R++\nsrc[TILDETRIM] = '(\\\\s*)' + src[LONETILDE] + '\\\\s+'\nre[TILDETRIM] = new RegExp(src[TILDETRIM], 'g')\nvar tildeTrimReplace = '$1~'\n\nvar TILDE = R++\nsrc[TILDE] = '^' + src[LONETILDE] + src[XRANGEPLAIN] + '$'\nvar TILDELOOSE = R++\nsrc[TILDELOOSE] = '^' + src[LONETILDE] + src[XRANGEPLAINLOOSE] + '$'\n\n// Caret ranges.\n// Meaning is \"at least and backwards compatible with\"\nvar LONECARET = R++\nsrc[LONECARET] = '(?:\\\\^)'\n\nvar CARETTRIM = R++\nsrc[CARETTRIM] = '(\\\\s*)' + src[LONECARET] + '\\\\s+'\nre[CARETTRIM] = new RegExp(src[CARETTRIM], 'g')\nvar caretTrimReplace = '$1^'\n\nvar CARET = R++\nsrc[CARET] = '^' + src[LONECARET] + src[XRANGEPLAIN] + '$'\nvar CARETLOOSE = R++\nsrc[CARETLOOSE] = '^' + src[LONECARET] + src[XRANGEPLAINLOOSE] + '$'\n\n// A simple gt/lt/eq thing, or just \"\" to indicate \"any version\"\nvar COMPARATORLOOSE = R++\nsrc[COMPARATORLOOSE] = '^' + src[GTLT] + '\\\\s*(' + LOOSEPLAIN + ')$|^$'\nvar COMPARATOR = R++\nsrc[COMPARATOR] = '^' + src[GTLT] + '\\\\s*(' + FULLPLAIN + ')$|^$'\n\n// An expression to strip any whitespace between the gtlt and the thing\n// it modifies, so that `> 1.2.3` ==> `>1.2.3`\nvar COMPARATORTRIM = R++\nsrc[COMPARATORTRIM] = '(\\\\s*)' + src[GTLT] +\n '\\\\s*(' + LOOSEPLAIN + '|' + src[XRANGEPLAIN] + ')'\n\n// this one has to use the /g flag\nre[COMPARATORTRIM] = new RegExp(src[COMPARATORTRIM], 'g')\nvar comparatorTrimReplace = '$1$2$3'\n\n// Something like `1.2.3 - 1.2.4`\n// Note that these all use the loose form, because they'll be\n// checked against either the strict or loose comparator form\n// later.\nvar HYPHENRANGE = R++\nsrc[HYPHENRANGE] = '^\\\\s*(' + src[XRANGEPLAIN] + ')' +\n '\\\\s+-\\\\s+' +\n '(' + src[XRANGEPLAIN] + ')' +\n '\\\\s*$'\n\nvar HYPHENRANGELOOSE = R++\nsrc[HYPHENRANGELOOSE] = '^\\\\s*(' + src[XRANGEPLAINLOOSE] + ')' +\n '\\\\s+-\\\\s+' +\n '(' + src[XRANGEPLAINLOOSE] + ')' +\n '\\\\s*$'\n\n// Star ranges basically just allow anything at all.\nvar STAR = R++\nsrc[STAR] = '(<|>)?=?\\\\s*\\\\*'\n\n// Compile to actual regexp objects.\n// All are flag-free, unless they were created above with a flag.\nfor (var i = 0; i < R; i++) {\n debug(i, src[i])\n if (!re[i]) {\n re[i] = new RegExp(src[i])\n }\n}\n\nexports.parse = parse\nfunction parse (version, options) {\n if (!options || typeof options !== 'object') {\n options = {\n loose: !!options,\n includePrerelease: false\n }\n }\n\n if (version instanceof SemVer) {\n return version\n }\n\n if (typeof version !== 'string') {\n return null\n }\n\n if (version.length > MAX_LENGTH) {\n return null\n }\n\n var r = options.loose ? re[LOOSE] : re[FULL]\n if (!r.test(version)) {\n return null\n }\n\n try {\n return new SemVer(version, options)\n } catch (er) {\n return null\n }\n}\n\nexports.valid = valid\nfunction valid (version, options) {\n var v = parse(version, options)\n return v ? v.version : null\n}\n\nexports.clean = clean\nfunction clean (version, options) {\n var s = parse(version.trim().replace(/^[=v]+/, ''), options)\n return s ? s.version : null\n}\n\nexports.SemVer = SemVer\n\nfunction SemVer (version, options) {\n if (!options || typeof options !== 'object') {\n options = {\n loose: !!options,\n includePrerelease: false\n }\n }\n if (version instanceof SemVer) {\n if (version.loose === options.loose) {\n return version\n } else {\n version = version.version\n }\n } else if (typeof version !== 'string') {\n throw new TypeError('Invalid Version: ' + version)\n }\n\n if (version.length > MAX_LENGTH) {\n throw new TypeError('version is longer than ' + MAX_LENGTH + ' characters')\n }\n\n if (!(this instanceof SemVer)) {\n return new SemVer(version, options)\n }\n\n debug('SemVer', version, options)\n this.options = options\n this.loose = !!options.loose\n\n var m = version.trim().match(options.loose ? re[LOOSE] : re[FULL])\n\n if (!m) {\n throw new TypeError('Invalid Version: ' + version)\n }\n\n this.raw = version\n\n // these are actually numbers\n this.major = +m[1]\n this.minor = +m[2]\n this.patch = +m[3]\n\n if (this.major > MAX_SAFE_INTEGER || this.major < 0) {\n throw new TypeError('Invalid major version')\n }\n\n if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {\n throw new TypeError('Invalid minor version')\n }\n\n if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {\n throw new TypeError('Invalid patch version')\n }\n\n // numberify any prerelease numeric ids\n if (!m[4]) {\n this.prerelease = []\n } else {\n this.prerelease = m[4].split('.').map(function (id) {\n if (/^[0-9]+$/.test(id)) {\n var num = +id\n if (num >= 0 && num < MAX_SAFE_INTEGER) {\n return num\n }\n }\n return id\n })\n }\n\n this.build = m[5] ? m[5].split('.') : []\n this.format()\n}\n\nSemVer.prototype.format = function () {\n this.version = this.major + '.' + this.minor + '.' + this.patch\n if (this.prerelease.length) {\n this.version += '-' + this.prerelease.join('.')\n }\n return this.version\n}\n\nSemVer.prototype.toString = function () {\n return this.version\n}\n\nSemVer.prototype.compare = function (other) {\n debug('SemVer.compare', this.version, this.options, other)\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n return this.compareMain(other) || this.comparePre(other)\n}\n\nSemVer.prototype.compareMain = function (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n return compareIdentifiers(this.major, other.major) ||\n compareIdentifiers(this.minor, other.minor) ||\n compareIdentifiers(this.patch, other.patch)\n}\n\nSemVer.prototype.comparePre = function (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n // NOT having a prerelease is > having one\n if (this.prerelease.length && !other.prerelease.length) {\n return -1\n } else if (!this.prerelease.length && other.prerelease.length) {\n return 1\n } else if (!this.prerelease.length && !other.prerelease.length) {\n return 0\n }\n\n var i = 0\n do {\n var a = this.prerelease[i]\n var b = other.prerelease[i]\n debug('prerelease compare', i, a, b)\n if (a === undefined && b === undefined) {\n return 0\n } else if (b === undefined) {\n return 1\n } else if (a === undefined) {\n return -1\n } else if (a === b) {\n continue\n } else {\n return compareIdentifiers(a, b)\n }\n } while (++i)\n}\n\n// preminor will bump the version up to the next minor release, and immediately\n// down to pre-release. premajor and prepatch work the same way.\nSemVer.prototype.inc = function (release, identifier) {\n switch (release) {\n case 'premajor':\n this.prerelease.length = 0\n this.patch = 0\n this.minor = 0\n this.major++\n this.inc('pre', identifier)\n break\n case 'preminor':\n this.prerelease.length = 0\n this.patch = 0\n this.minor++\n this.inc('pre', identifier)\n break\n case 'prepatch':\n // If this is already a prerelease, it will bump to the next version\n // drop any prereleases that might already exist, since they are not\n // relevant at this point.\n this.prerelease.length = 0\n this.inc('patch', identifier)\n this.inc('pre', identifier)\n break\n // If the input is a non-prerelease version, this acts the same as\n // prepatch.\n case 'prerelease':\n if (this.prerelease.length === 0) {\n this.inc('patch', identifier)\n }\n this.inc('pre', identifier)\n break\n\n case 'major':\n // If this is a pre-major version, bump up to the same major version.\n // Otherwise increment major.\n // 1.0.0-5 bumps to 1.0.0\n // 1.1.0 bumps to 2.0.0\n if (this.minor !== 0 ||\n this.patch !== 0 ||\n this.prerelease.length === 0) {\n this.major++\n }\n this.minor = 0\n this.patch = 0\n this.prerelease = []\n break\n case 'minor':\n // If this is a pre-minor version, bump up to the same minor version.\n // Otherwise increment minor.\n // 1.2.0-5 bumps to 1.2.0\n // 1.2.1 bumps to 1.3.0\n if (this.patch !== 0 || this.prerelease.length === 0) {\n this.minor++\n }\n this.patch = 0\n this.prerelease = []\n break\n case 'patch':\n // If this is not a pre-release version, it will increment the patch.\n // If it is a pre-release it will bump up to the same patch version.\n // 1.2.0-5 patches to 1.2.0\n // 1.2.0 patches to 1.2.1\n if (this.prerelease.length === 0) {\n this.patch++\n }\n this.prerelease = []\n break\n // This probably shouldn't be used publicly.\n // 1.0.0 \"pre\" would become 1.0.0-0 which is the wrong direction.\n case 'pre':\n if (this.prerelease.length === 0) {\n this.prerelease = [0]\n } else {\n var i = this.prerelease.length\n while (--i >= 0) {\n if (typeof this.prerelease[i] === 'number') {\n this.prerelease[i]++\n i = -2\n }\n }\n if (i === -1) {\n // didn't increment anything\n this.prerelease.push(0)\n }\n }\n if (identifier) {\n // 1.2.0-beta.1 bumps to 1.2.0-beta.2,\n // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0\n if (this.prerelease[0] === identifier) {\n if (isNaN(this.prerelease[1])) {\n this.prerelease = [identifier, 0]\n }\n } else {\n this.prerelease = [identifier, 0]\n }\n }\n break\n\n default:\n throw new Error('invalid increment argument: ' + release)\n }\n this.format()\n this.raw = this.version\n return this\n}\n\nexports.inc = inc\nfunction inc (version, release, loose, identifier) {\n if (typeof (loose) === 'string') {\n identifier = loose\n loose = undefined\n }\n\n try {\n return new SemVer(version, loose).inc(release, identifier).version\n } catch (er) {\n return null\n }\n}\n\nexports.diff = diff\nfunction diff (version1, version2) {\n if (eq(version1, version2)) {\n return null\n } else {\n var v1 = parse(version1)\n var v2 = parse(version2)\n var prefix = ''\n if (v1.prerelease.length || v2.prerelease.length) {\n prefix = 'pre'\n var defaultResult = 'prerelease'\n }\n for (var key in v1) {\n if (key === 'major' || key === 'minor' || key === 'patch') {\n if (v1[key] !== v2[key]) {\n return prefix + key\n }\n }\n }\n return defaultResult // may be undefined\n }\n}\n\nexports.compareIdentifiers = compareIdentifiers\n\nvar numeric = /^[0-9]+$/\nfunction compareIdentifiers (a, b) {\n var anum = numeric.test(a)\n var bnum = numeric.test(b)\n\n if (anum && bnum) {\n a = +a\n b = +b\n }\n\n return a === b ? 0\n : (anum && !bnum) ? -1\n : (bnum && !anum) ? 1\n : a < b ? -1\n : 1\n}\n\nexports.rcompareIdentifiers = rcompareIdentifiers\nfunction rcompareIdentifiers (a, b) {\n return compareIdentifiers(b, a)\n}\n\nexports.major = major\nfunction major (a, loose) {\n return new SemVer(a, loose).major\n}\n\nexports.minor = minor\nfunction minor (a, loose) {\n return new SemVer(a, loose).minor\n}\n\nexports.patch = patch\nfunction patch (a, loose) {\n return new SemVer(a, loose).patch\n}\n\nexports.compare = compare\nfunction compare (a, b, loose) {\n return new SemVer(a, loose).compare(new SemVer(b, loose))\n}\n\nexports.compareLoose = compareLoose\nfunction compareLoose (a, b) {\n return compare(a, b, true)\n}\n\nexports.rcompare = rcompare\nfunction rcompare (a, b, loose) {\n return compare(b, a, loose)\n}\n\nexports.sort = sort\nfunction sort (list, loose) {\n return list.sort(function (a, b) {\n return exports.compare(a, b, loose)\n })\n}\n\nexports.rsort = rsort\nfunction rsort (list, loose) {\n return list.sort(function (a, b) {\n return exports.rcompare(a, b, loose)\n })\n}\n\nexports.gt = gt\nfunction gt (a, b, loose) {\n return compare(a, b, loose) > 0\n}\n\nexports.lt = lt\nfunction lt (a, b, loose) {\n return compare(a, b, loose) < 0\n}\n\nexports.eq = eq\nfunction eq (a, b, loose) {\n return compare(a, b, loose) === 0\n}\n\nexports.neq = neq\nfunction neq (a, b, loose) {\n return compare(a, b, loose) !== 0\n}\n\nexports.gte = gte\nfunction gte (a, b, loose) {\n return compare(a, b, loose) >= 0\n}\n\nexports.lte = lte\nfunction lte (a, b, loose) {\n return compare(a, b, loose) <= 0\n}\n\nexports.cmp = cmp\nfunction cmp (a, op, b, loose) {\n switch (op) {\n case '===':\n if (typeof a === 'object')\n a = a.version\n if (typeof b === 'object')\n b = b.version\n return a === b\n\n case '!==':\n if (typeof a === 'object')\n a = a.version\n if (typeof b === 'object')\n b = b.version\n return a !== b\n\n case '':\n case '=':\n case '==':\n return eq(a, b, loose)\n\n case '!=':\n return neq(a, b, loose)\n\n case '>':\n return gt(a, b, loose)\n\n case '>=':\n return gte(a, b, loose)\n\n case '<':\n return lt(a, b, loose)\n\n case '<=':\n return lte(a, b, loose)\n\n default:\n throw new TypeError('Invalid operator: ' + op)\n }\n}\n\nexports.Comparator = Comparator\nfunction Comparator (comp, options) {\n if (!options || typeof options !== 'object') {\n options = {\n loose: !!options,\n includePrerelease: false\n }\n }\n\n if (comp instanceof Comparator) {\n if (comp.loose === !!options.loose) {\n return comp\n } else {\n comp = comp.value\n }\n }\n\n if (!(this instanceof Comparator)) {\n return new Comparator(comp, options)\n }\n\n debug('comparator', comp, options)\n this.options = options\n this.loose = !!options.loose\n this.parse(comp)\n\n if (this.semver === ANY) {\n this.value = ''\n } else {\n this.value = this.operator + this.semver.version\n }\n\n debug('comp', this)\n}\n\nvar ANY = {}\nComparator.prototype.parse = function (comp) {\n var r = this.options.loose ? re[COMPARATORLOOSE] : re[COMPARATOR]\n var m = comp.match(r)\n\n if (!m) {\n throw new TypeError('Invalid comparator: ' + comp)\n }\n\n this.operator = m[1]\n if (this.operator === '=') {\n this.operator = ''\n }\n\n // if it literally is just '>' or '' then allow anything.\n if (!m[2]) {\n this.semver = ANY\n } else {\n this.semver = new SemVer(m[2], this.options.loose)\n }\n}\n\nComparator.prototype.toString = function () {\n return this.value\n}\n\nComparator.prototype.test = function (version) {\n debug('Comparator.test', version, this.options.loose)\n\n if (this.semver === ANY) {\n return true\n }\n\n if (typeof version === 'string') {\n version = new SemVer(version, this.options)\n }\n\n return cmp(version, this.operator, this.semver, this.options)\n}\n\nComparator.prototype.intersects = function (comp, options) {\n if (!(comp instanceof Comparator)) {\n throw new TypeError('a Comparator is required')\n }\n\n if (!options || typeof options !== 'object') {\n options = {\n loose: !!options,\n includePrerelease: false\n }\n }\n\n var rangeTmp\n\n if (this.operator === '') {\n rangeTmp = new Range(comp.value, options)\n return satisfies(this.value, rangeTmp, options)\n } else if (comp.operator === '') {\n rangeTmp = new Range(this.value, options)\n return satisfies(comp.semver, rangeTmp, options)\n }\n\n var sameDirectionIncreasing =\n (this.operator === '>=' || this.operator === '>') &&\n (comp.operator === '>=' || comp.operator === '>')\n var sameDirectionDecreasing =\n (this.operator === '<=' || this.operator === '<') &&\n (comp.operator === '<=' || comp.operator === '<')\n var sameSemVer = this.semver.version === comp.semver.version\n var differentDirectionsInclusive =\n (this.operator === '>=' || this.operator === '<=') &&\n (comp.operator === '>=' || comp.operator === '<=')\n var oppositeDirectionsLessThan =\n cmp(this.semver, '<', comp.semver, options) &&\n ((this.operator === '>=' || this.operator === '>') &&\n (comp.operator === '<=' || comp.operator === '<'))\n var oppositeDirectionsGreaterThan =\n cmp(this.semver, '>', comp.semver, options) &&\n ((this.operator === '<=' || this.operator === '<') &&\n (comp.operator === '>=' || comp.operator === '>'))\n\n return sameDirectionIncreasing || sameDirectionDecreasing ||\n (sameSemVer && differentDirectionsInclusive) ||\n oppositeDirectionsLessThan || oppositeDirectionsGreaterThan\n}\n\nexports.Range = Range\nfunction Range (range, options) {\n if (!options || typeof options !== 'object') {\n options = {\n loose: !!options,\n includePrerelease: false\n }\n }\n\n if (range instanceof Range) {\n if (range.loose === !!options.loose &&\n range.includePrerelease === !!options.includePrerelease) {\n return range\n } else {\n return new Range(range.raw, options)\n }\n }\n\n if (range instanceof Comparator) {\n return new Range(range.value, options)\n }\n\n if (!(this instanceof Range)) {\n return new Range(range, options)\n }\n\n this.options = options\n this.loose = !!options.loose\n this.includePrerelease = !!options.includePrerelease\n\n // First, split based on boolean or ||\n this.raw = range\n this.set = range.split(/\\s*\\|\\|\\s*/).map(function (range) {\n return this.parseRange(range.trim())\n }, this).filter(function (c) {\n // throw out any that are not relevant for whatever reason\n return c.length\n })\n\n if (!this.set.length) {\n throw new TypeError('Invalid SemVer Range: ' + range)\n }\n\n this.format()\n}\n\nRange.prototype.format = function () {\n this.range = this.set.map(function (comps) {\n return comps.join(' ').trim()\n }).join('||').trim()\n return this.range\n}\n\nRange.prototype.toString = function () {\n return this.range\n}\n\nRange.prototype.parseRange = function (range) {\n var loose = this.options.loose\n range = range.trim()\n // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4`\n var hr = loose ? re[HYPHENRANGELOOSE] : re[HYPHENRANGE]\n range = range.replace(hr, hyphenReplace)\n debug('hyphen replace', range)\n // `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5`\n range = range.replace(re[COMPARATORTRIM], comparatorTrimReplace)\n debug('comparator trim', range, re[COMPARATORTRIM])\n\n // `~ 1.2.3` => `~1.2.3`\n range = range.replace(re[TILDETRIM], tildeTrimReplace)\n\n // `^ 1.2.3` => `^1.2.3`\n range = range.replace(re[CARETTRIM], caretTrimReplace)\n\n // normalize spaces\n range = range.split(/\\s+/).join(' ')\n\n // At this point, the range is completely trimmed and\n // ready to be split into comparators.\n\n var compRe = loose ? re[COMPARATORLOOSE] : re[COMPARATOR]\n var set = range.split(' ').map(function (comp) {\n return parseComparator(comp, this.options)\n }, this).join(' ').split(/\\s+/)\n if (this.options.loose) {\n // in loose mode, throw out any that are not valid comparators\n set = set.filter(function (comp) {\n return !!comp.match(compRe)\n })\n }\n set = set.map(function (comp) {\n return new Comparator(comp, this.options)\n }, this)\n\n return set\n}\n\nRange.prototype.intersects = function (range, options) {\n if (!(range instanceof Range)) {\n throw new TypeError('a Range is required')\n }\n\n return this.set.some(function (thisComparators) {\n return thisComparators.every(function (thisComparator) {\n return range.set.some(function (rangeComparators) {\n return rangeComparators.every(function (rangeComparator) {\n return thisComparator.intersects(rangeComparator, options)\n })\n })\n })\n })\n}\n\n// Mostly just for testing and legacy API reasons\nexports.toComparators = toComparators\nfunction toComparators (range, options) {\n return new Range(range, options).set.map(function (comp) {\n return comp.map(function (c) {\n return c.value\n }).join(' ').trim().split(' ')\n })\n}\n\n// comprised of xranges, tildes, stars, and gtlt's at this point.\n// already replaced the hyphen ranges\n// turn into a set of JUST comparators.\nfunction parseComparator (comp, options) {\n debug('comp', comp, options)\n comp = replaceCarets(comp, options)\n debug('caret', comp)\n comp = replaceTildes(comp, options)\n debug('tildes', comp)\n comp = replaceXRanges(comp, options)\n debug('xrange', comp)\n comp = replaceStars(comp, options)\n debug('stars', comp)\n return comp\n}\n\nfunction isX (id) {\n return !id || id.toLowerCase() === 'x' || id === '*'\n}\n\n// ~, ~> --> * (any, kinda silly)\n// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0\n// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0\n// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0\n// ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0\n// ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0\nfunction replaceTildes (comp, options) {\n return comp.trim().split(/\\s+/).map(function (comp) {\n return replaceTilde(comp, options)\n }).join(' ')\n}\n\nfunction replaceTilde (comp, options) {\n var r = options.loose ? re[TILDELOOSE] : re[TILDE]\n return comp.replace(r, function (_, M, m, p, pr) {\n debug('tilde', comp, _, M, m, p, pr)\n var ret\n\n if (isX(M)) {\n ret = ''\n } else if (isX(m)) {\n ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0'\n } else if (isX(p)) {\n // ~1.2 == >=1.2.0 <1.3.0\n ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0'\n } else if (pr) {\n debug('replaceTilde pr', pr)\n ret = '>=' + M + '.' + m + '.' + p + '-' + pr +\n ' <' + M + '.' + (+m + 1) + '.0'\n } else {\n // ~1.2.3 == >=1.2.3 <1.3.0\n ret = '>=' + M + '.' + m + '.' + p +\n ' <' + M + '.' + (+m + 1) + '.0'\n }\n\n debug('tilde return', ret)\n return ret\n })\n}\n\n// ^ --> * (any, kinda silly)\n// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0\n// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0\n// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0\n// ^1.2.3 --> >=1.2.3 <2.0.0\n// ^1.2.0 --> >=1.2.0 <2.0.0\nfunction replaceCarets (comp, options) {\n return comp.trim().split(/\\s+/).map(function (comp) {\n return replaceCaret(comp, options)\n }).join(' ')\n}\n\nfunction replaceCaret (comp, options) {\n debug('caret', comp, options)\n var r = options.loose ? re[CARETLOOSE] : re[CARET]\n return comp.replace(r, function (_, M, m, p, pr) {\n debug('caret', comp, _, M, m, p, pr)\n var ret\n\n if (isX(M)) {\n ret = ''\n } else if (isX(m)) {\n ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0'\n } else if (isX(p)) {\n if (M === '0') {\n ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0'\n } else {\n ret = '>=' + M + '.' + m + '.0 <' + (+M + 1) + '.0.0'\n }\n } else if (pr) {\n debug('replaceCaret pr', pr)\n if (M === '0') {\n if (m === '0') {\n ret = '>=' + M + '.' + m + '.' + p + '-' + pr +\n ' <' + M + '.' + m + '.' + (+p + 1)\n } else {\n ret = '>=' + M + '.' + m + '.' + p + '-' + pr +\n ' <' + M + '.' + (+m + 1) + '.0'\n }\n } else {\n ret = '>=' + M + '.' + m + '.' + p + '-' + pr +\n ' <' + (+M + 1) + '.0.0'\n }\n } else {\n debug('no pr')\n if (M === '0') {\n if (m === '0') {\n ret = '>=' + M + '.' + m + '.' + p +\n ' <' + M + '.' + m + '.' + (+p + 1)\n } else {\n ret = '>=' + M + '.' + m + '.' + p +\n ' <' + M + '.' + (+m + 1) + '.0'\n }\n } else {\n ret = '>=' + M + '.' + m + '.' + p +\n ' <' + (+M + 1) + '.0.0'\n }\n }\n\n debug('caret return', ret)\n return ret\n })\n}\n\nfunction replaceXRanges (comp, options) {\n debug('replaceXRanges', comp, options)\n return comp.split(/\\s+/).map(function (comp) {\n return replaceXRange(comp, options)\n }).join(' ')\n}\n\nfunction replaceXRange (comp, options) {\n comp = comp.trim()\n var r = options.loose ? re[XRANGELOOSE] : re[XRANGE]\n return comp.replace(r, function (ret, gtlt, M, m, p, pr) {\n debug('xRange', comp, ret, gtlt, M, m, p, pr)\n var xM = isX(M)\n var xm = xM || isX(m)\n var xp = xm || isX(p)\n var anyX = xp\n\n if (gtlt === '=' && anyX) {\n gtlt = ''\n }\n\n if (xM) {\n if (gtlt === '>' || gtlt === '<') {\n // nothing is allowed\n ret = '<0.0.0'\n } else {\n // nothing is forbidden\n ret = '*'\n }\n } else if (gtlt && anyX) {\n // we know patch is an x, because we have any x at all.\n // replace X with 0\n if (xm) {\n m = 0\n }\n p = 0\n\n if (gtlt === '>') {\n // >1 => >=2.0.0\n // >1.2 => >=1.3.0\n // >1.2.3 => >= 1.2.4\n gtlt = '>='\n if (xm) {\n M = +M + 1\n m = 0\n p = 0\n } else {\n m = +m + 1\n p = 0\n }\n } else if (gtlt === '<=') {\n // <=0.7.x is actually <0.8.0, since any 0.7.x should\n // pass. Similarly, <=7.x is actually <8.0.0, etc.\n gtlt = '<'\n if (xm) {\n M = +M + 1\n } else {\n m = +m + 1\n }\n }\n\n ret = gtlt + M + '.' + m + '.' + p\n } else if (xm) {\n ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0'\n } else if (xp) {\n ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0'\n }\n\n debug('xRange return', ret)\n\n return ret\n })\n}\n\n// Because * is AND-ed with everything else in the comparator,\n// and '' means \"any version\", just remove the *s entirely.\nfunction replaceStars (comp, options) {\n debug('replaceStars', comp, options)\n // Looseness is ignored here. star is always as loose as it gets!\n return comp.trim().replace(re[STAR], '')\n}\n\n// This function is passed to string.replace(re[HYPHENRANGE])\n// M, m, patch, prerelease, build\n// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5\n// 1.2.3 - 3.4 => >=1.2.0 <3.5.0 Any 3.4.x will do\n// 1.2 - 3.4 => >=1.2.0 <3.5.0\nfunction hyphenReplace ($0,\n from, fM, fm, fp, fpr, fb,\n to, tM, tm, tp, tpr, tb) {\n if (isX(fM)) {\n from = ''\n } else if (isX(fm)) {\n from = '>=' + fM + '.0.0'\n } else if (isX(fp)) {\n from = '>=' + fM + '.' + fm + '.0'\n } else {\n from = '>=' + from\n }\n\n if (isX(tM)) {\n to = ''\n } else if (isX(tm)) {\n to = '<' + (+tM + 1) + '.0.0'\n } else if (isX(tp)) {\n to = '<' + tM + '.' + (+tm + 1) + '.0'\n } else if (tpr) {\n to = '<=' + tM + '.' + tm + '.' + tp + '-' + tpr\n } else {\n to = '<=' + to\n }\n\n return (from + ' ' + to).trim()\n}\n\n// if ANY of the sets match ALL of its comparators, then pass\nRange.prototype.test = function (version) {\n if (!version) {\n return false\n }\n\n if (typeof version === 'string') {\n version = new SemVer(version, this.options)\n }\n\n for (var i = 0; i < this.set.length; i++) {\n if (testSet(this.set[i], version, this.options)) {\n return true\n }\n }\n return false\n}\n\nfunction testSet (set, version, options) {\n for (var i = 0; i < set.length; i++) {\n if (!set[i].test(version)) {\n return false\n }\n }\n\n if (version.prerelease.length && !options.includePrerelease) {\n // Find the set of versions that are allowed to have prereleases\n // For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0\n // That should allow `1.2.3-pr.2` to pass.\n // However, `1.2.4-alpha.notready` should NOT be allowed,\n // even though it's within the range set by the comparators.\n for (i = 0; i < set.length; i++) {\n debug(set[i].semver)\n if (set[i].semver === ANY) {\n continue\n }\n\n if (set[i].semver.prerelease.length > 0) {\n var allowed = set[i].semver\n if (allowed.major === version.major &&\n allowed.minor === version.minor &&\n allowed.patch === version.patch) {\n return true\n }\n }\n }\n\n // Version has a -pre, but it's not one of the ones we like.\n return false\n }\n\n return true\n}\n\nexports.satisfies = satisfies\nfunction satisfies (version, range, options) {\n try {\n range = new Range(range, options)\n } catch (er) {\n return false\n }\n return range.test(version)\n}\n\nexports.maxSatisfying = maxSatisfying\nfunction maxSatisfying (versions, range, options) {\n var max = null\n var maxSV = null\n try {\n var rangeObj = new Range(range, options)\n } catch (er) {\n return null\n }\n versions.forEach(function (v) {\n if (rangeObj.test(v)) {\n // satisfies(v, range, options)\n if (!max || maxSV.compare(v) === -1) {\n // compare(max, v, true)\n max = v\n maxSV = new SemVer(max, options)\n }\n }\n })\n return max\n}\n\nexports.minSatisfying = minSatisfying\nfunction minSatisfying (versions, range, options) {\n var min = null\n var minSV = null\n try {\n var rangeObj = new Range(range, options)\n } catch (er) {\n return null\n }\n versions.forEach(function (v) {\n if (rangeObj.test(v)) {\n // satisfies(v, range, options)\n if (!min || minSV.compare(v) === 1) {\n // compare(min, v, true)\n min = v\n minSV = new SemVer(min, options)\n }\n }\n })\n return min\n}\n\nexports.minVersion = minVersion\nfunction minVersion (range, loose) {\n range = new Range(range, loose)\n\n var minver = new SemVer('0.0.0')\n if (range.test(minver)) {\n return minver\n }\n\n minver = new SemVer('0.0.0-0')\n if (range.test(minver)) {\n return minver\n }\n\n minver = null\n for (var i = 0; i < range.set.length; ++i) {\n var comparators = range.set[i]\n\n comparators.forEach(function (comparator) {\n // Clone to avoid manipulating the comparator's semver object.\n var compver = new SemVer(comparator.semver.version)\n switch (comparator.operator) {\n case '>':\n if (compver.prerelease.length === 0) {\n compver.patch++\n } else {\n compver.prerelease.push(0)\n }\n compver.raw = compver.format()\n /* fallthrough */\n case '':\n case '>=':\n if (!minver || gt(minver, compver)) {\n minver = compver\n }\n break\n case '<':\n case '<=':\n /* Ignore maximum versions */\n break\n /* istanbul ignore next */\n default:\n throw new Error('Unexpected operation: ' + comparator.operator)\n }\n })\n }\n\n if (minver && range.test(minver)) {\n return minver\n }\n\n return null\n}\n\nexports.validRange = validRange\nfunction validRange (range, options) {\n try {\n // Return '*' instead of '' so that truthiness works.\n // This will throw if it's invalid anyway\n return new Range(range, options).range || '*'\n } catch (er) {\n return null\n }\n}\n\n// Determine if version is less than all the versions possible in the range\nexports.ltr = ltr\nfunction ltr (version, range, options) {\n return outside(version, range, '<', options)\n}\n\n// Determine if version is greater than all the versions possible in the range.\nexports.gtr = gtr\nfunction gtr (version, range, options) {\n return outside(version, range, '>', options)\n}\n\nexports.outside = outside\nfunction outside (version, range, hilo, options) {\n version = new SemVer(version, options)\n range = new Range(range, options)\n\n var gtfn, ltefn, ltfn, comp, ecomp\n switch (hilo) {\n case '>':\n gtfn = gt\n ltefn = lte\n ltfn = lt\n comp = '>'\n ecomp = '>='\n break\n case '<':\n gtfn = lt\n ltefn = gte\n ltfn = gt\n comp = '<'\n ecomp = '<='\n break\n default:\n throw new TypeError('Must provide a hilo val of \"<\" or \">\"')\n }\n\n // If it satisifes the range it is not outside\n if (satisfies(version, range, options)) {\n return false\n }\n\n // From now on, variable terms are as if we're in \"gtr\" mode.\n // but note that everything is flipped for the \"ltr\" function.\n\n for (var i = 0; i < range.set.length; ++i) {\n var comparators = range.set[i]\n\n var high = null\n var low = null\n\n comparators.forEach(function (comparator) {\n if (comparator.semver === ANY) {\n comparator = new Comparator('>=0.0.0')\n }\n high = high || comparator\n low = low || comparator\n if (gtfn(comparator.semver, high.semver, options)) {\n high = comparator\n } else if (ltfn(comparator.semver, low.semver, options)) {\n low = comparator\n }\n })\n\n // If the edge version comparator has a operator then our version\n // isn't outside it\n if (high.operator === comp || high.operator === ecomp) {\n return false\n }\n\n // If the lowest version comparator has an operator and our version\n // is less than it then it isn't higher than the range\n if ((!low.operator || low.operator === comp) &&\n ltefn(version, low.semver)) {\n return false\n } else if (low.operator === ecomp && ltfn(version, low.semver)) {\n return false\n }\n }\n return true\n}\n\nexports.prerelease = prerelease\nfunction prerelease (version, options) {\n var parsed = parse(version, options)\n return (parsed && parsed.prerelease.length) ? parsed.prerelease : null\n}\n\nexports.intersects = intersects\nfunction intersects (r1, r2, options) {\n r1 = new Range(r1, options)\n r2 = new Range(r2, options)\n return r1.intersects(r2)\n}\n\nexports.coerce = coerce\nfunction coerce (version) {\n if (version instanceof SemVer) {\n return version\n }\n\n if (typeof version !== 'string') {\n return null\n }\n\n var match = version.match(re[COERCE])\n\n if (match == null) {\n return null\n }\n\n return parse(match[1] +\n '.' + (match[2] || '0') +\n '.' + (match[3] || '0'))\n}\n", "'use strict'\n\nvar licenses = []\n .concat(require('spdx-license-ids'))\n .concat(require('spdx-license-ids/deprecated'))\nvar exceptions = require('spdx-exceptions')\n\nmodule.exports = function (source) {\n var index = 0\n\n function hasMore () {\n return index < source.length\n }\n\n // `value` can be a regexp or a string.\n // If it is recognized, the matching source string is returned and\n // the index is incremented. Otherwise `undefined` is returned.\n function read (value) {\n if (value instanceof RegExp) {\n var chars = source.slice(index)\n var match = chars.match(value)\n if (match) {\n index += match[0].length\n return match[0]\n }\n } else {\n if (source.indexOf(value, index) === index) {\n index += value.length\n return value\n }\n }\n }\n\n function skipWhitespace () {\n read(/[ ]*/)\n }\n\n function operator () {\n var string\n var possibilities = ['WITH', 'AND', 'OR', '(', ')', ':', '+']\n for (var i = 0; i < possibilities.length; i++) {\n string = read(possibilities[i])\n if (string) {\n break\n }\n }\n\n if (string === '+' && index > 1 && source[index - 2] === ' ') {\n throw new Error('Space before `+`')\n }\n\n return string && {\n type: 'OPERATOR',\n string: string\n }\n }\n\n function idstring () {\n return read(/[A-Za-z0-9-.]+/)\n }\n\n function expectIdstring () {\n var string = idstring()\n if (!string) {\n throw new Error('Expected idstring at offset ' + index)\n }\n return string\n }\n\n function documentRef () {\n if (read('DocumentRef-')) {\n var string = expectIdstring()\n return { type: 'DOCUMENTREF', string: string }\n }\n }\n\n function licenseRef () {\n if (read('LicenseRef-')) {\n var string = expectIdstring()\n return { type: 'LICENSEREF', string: string }\n }\n }\n\n function identifier () {\n var begin = index\n var string = idstring()\n\n if (licenses.indexOf(string) !== -1) {\n return {\n type: 'LICENSE',\n string: string\n }\n } else if (exceptions.indexOf(string) !== -1) {\n return {\n type: 'EXCEPTION',\n string: string\n }\n }\n\n index = begin\n }\n\n // Tries to read the next token. Returns `undefined` if no token is\n // recognized.\n function parseToken () {\n // Ordering matters\n return (\n operator() ||\n documentRef() ||\n licenseRef() ||\n identifier()\n )\n }\n\n var tokens = []\n while (hasMore()) {\n skipWhitespace()\n if (!hasMore()) {\n break\n }\n\n var token = parseToken()\n if (!token) {\n throw new Error('Unexpected `' + source[index] +\n '` at offset ' + index)\n }\n\n tokens.push(token)\n }\n return tokens\n}\n", "'use strict'\n\n// The ABNF grammar in the spec is totally ambiguous.\n//\n// This parser follows the operator precedence defined in the\n// `Order of Precedence and Parentheses` section.\n\nmodule.exports = function (tokens) {\n var index = 0\n\n function hasMore () {\n return index < tokens.length\n }\n\n function token () {\n return hasMore() ? tokens[index] : null\n }\n\n function next () {\n if (!hasMore()) {\n throw new Error()\n }\n index++\n }\n\n function parseOperator (operator) {\n var t = token()\n if (t && t.type === 'OPERATOR' && operator === t.string) {\n next()\n return t.string\n }\n }\n\n function parseWith () {\n if (parseOperator('WITH')) {\n var t = token()\n if (t && t.type === 'EXCEPTION') {\n next()\n return t.string\n }\n throw new Error('Expected exception after `WITH`')\n }\n }\n\n function parseLicenseRef () {\n // TODO: Actually, everything is concatenated into one string\n // for backward-compatibility but it could be better to return\n // a nice structure.\n var begin = index\n var string = ''\n var t = token()\n if (t.type === 'DOCUMENTREF') {\n next()\n string += 'DocumentRef-' + t.string + ':'\n if (!parseOperator(':')) {\n throw new Error('Expected `:` after `DocumentRef-...`')\n }\n }\n t = token()\n if (t.type === 'LICENSEREF') {\n next()\n string += 'LicenseRef-' + t.string\n return { license: string }\n }\n index = begin\n }\n\n function parseLicense () {\n var t = token()\n if (t && t.type === 'LICENSE') {\n next()\n var node = { license: t.string }\n if (parseOperator('+')) {\n node.plus = true\n }\n var exception = parseWith()\n if (exception) {\n node.exception = exception\n }\n return node\n }\n }\n\n function parseParenthesizedExpression () {\n var left = parseOperator('(')\n if (!left) {\n return\n }\n\n var expr = parseExpression()\n\n if (!parseOperator(')')) {\n throw new Error('Expected `)`')\n }\n\n return expr\n }\n\n function parseAtom () {\n return (\n parseParenthesizedExpression() ||\n parseLicenseRef() ||\n parseLicense()\n )\n }\n\n function makeBinaryOpParser (operator, nextParser) {\n return function parseBinaryOp () {\n var left = nextParser()\n if (!left) {\n return\n }\n\n if (!parseOperator(operator)) {\n return left\n }\n\n var right = parseBinaryOp()\n if (!right) {\n throw new Error('Expected expression')\n }\n return {\n left: left,\n conjunction: operator.toLowerCase(),\n right: right\n }\n }\n }\n\n var parseAnd = makeBinaryOpParser('AND', parseAtom)\n var parseExpression = makeBinaryOpParser('OR', parseAnd)\n\n var node = parseExpression()\n if (!node || hasMore()) {\n throw new Error('Syntax error')\n }\n return node\n}\n", "'use strict'\n\nvar scan = require('./scan')\nvar parse = require('./parse')\n\nmodule.exports = function (source) {\n return parse(scan(source))\n}\n", "/*\nCopyright spdx-correct.js contributors\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\nvar parse = require('spdx-expression-parse')\nvar spdxLicenseIds = require('spdx-license-ids')\n\nfunction valid (string) {\n try {\n parse(string)\n return true\n } catch (error) {\n return false\n }\n}\n\n// Common transpositions of license identifier acronyms\nvar transpositions = [\n ['APGL', 'AGPL'],\n ['Gpl', 'GPL'],\n ['GLP', 'GPL'],\n ['APL', 'Apache'],\n ['ISD', 'ISC'],\n ['GLP', 'GPL'],\n ['IST', 'ISC'],\n ['Claude', 'Clause'],\n [' or later', '+'],\n [' International', ''],\n ['GNU', 'GPL'],\n ['GUN', 'GPL'],\n ['+', ''],\n ['GNU GPL', 'GPL'],\n ['GNU/GPL', 'GPL'],\n ['GNU GLP', 'GPL'],\n ['GNU General Public License', 'GPL'],\n ['Gnu public license', 'GPL'],\n ['GNU Public License', 'GPL'],\n ['GNU GENERAL PUBLIC LICENSE', 'GPL'],\n ['MTI', 'MIT'],\n ['Mozilla Public License', 'MPL'],\n ['Universal Permissive License', 'UPL'],\n ['WTH', 'WTF'],\n ['-License', '']\n]\n\nvar TRANSPOSED = 0\nvar CORRECT = 1\n\n// Simple corrections to nearly valid identifiers.\nvar transforms = [\n // e.g. 'mit'\n function (argument) {\n return argument.toUpperCase()\n },\n // e.g. 'MIT '\n function (argument) {\n return argument.trim()\n },\n // e.g. 'M.I.T.'\n function (argument) {\n return argument.replace(/\\./g, '')\n },\n // e.g. 'Apache- 2.0'\n function (argument) {\n return argument.replace(/\\s+/g, '')\n },\n // e.g. 'CC BY 4.0''\n function (argument) {\n return argument.replace(/\\s+/g, '-')\n },\n // e.g. 'LGPLv2.1'\n function (argument) {\n return argument.replace('v', '-')\n },\n // e.g. 'Apache 2.0'\n function (argument) {\n return argument.replace(/,?\\s*(\\d)/, '-$1')\n },\n // e.g. 'GPL 2'\n function (argument) {\n return argument.replace(/,?\\s*(\\d)/, '-$1.0')\n },\n // e.g. 'Apache Version 2.0'\n function (argument) {\n return argument\n .replace(/,?\\s*(V\\.|v\\.|V|v|Version|version)\\s*(\\d)/, '-$2')\n },\n // e.g. 'Apache Version 2'\n function (argument) {\n return argument\n .replace(/,?\\s*(V\\.|v\\.|V|v|Version|version)\\s*(\\d)/, '-$2.0')\n },\n // e.g. 'ZLIB'\n function (argument) {\n return argument[0].toUpperCase() + argument.slice(1)\n },\n // e.g. 'MPL/2.0'\n function (argument) {\n return argument.replace('/', '-')\n },\n // e.g. 'Apache 2'\n function (argument) {\n return argument\n .replace(/\\s*V\\s*(\\d)/, '-$1')\n .replace(/(\\d)$/, '$1.0')\n },\n // e.g. 'GPL-2.0', 'GPL-3.0'\n function (argument) {\n if (argument.indexOf('3.0') !== -1) {\n return argument + '-or-later'\n } else {\n return argument + '-only'\n }\n },\n // e.g. 'GPL-2.0-'\n function (argument) {\n return argument + 'only'\n },\n // e.g. 'GPL2'\n function (argument) {\n return argument.replace(/(\\d)$/, '-$1.0')\n },\n // e.g. 'BSD 3'\n function (argument) {\n return argument.replace(/(-| )?(\\d)$/, '-$2-Clause')\n },\n // e.g. 'BSD clause 3'\n function (argument) {\n return argument.replace(/(-| )clause(-| )(\\d)/, '-$3-Clause')\n },\n // e.g. 'New BSD license'\n function (argument) {\n return argument.replace(/\\b(Modified|New|Revised)(-| )?BSD((-| )License)?/i, 'BSD-3-Clause')\n },\n // e.g. 'Simplified BSD license'\n function (argument) {\n return argument.replace(/\\bSimplified(-| )?BSD((-| )License)?/i, 'BSD-2-Clause')\n },\n // e.g. 'Free BSD license'\n function (argument) {\n return argument.replace(/\\b(Free|Net)(-| )?BSD((-| )License)?/i, 'BSD-2-Clause-$1BSD')\n },\n // e.g. 'Clear BSD license'\n function (argument) {\n return argument.replace(/\\bClear(-| )?BSD((-| )License)?/i, 'BSD-3-Clause-Clear')\n },\n // e.g. 'Old BSD License'\n function (argument) {\n return argument.replace(/\\b(Old|Original)(-| )?BSD((-| )License)?/i, 'BSD-4-Clause')\n },\n // e.g. 'BY-NC-4.0'\n function (argument) {\n return 'CC-' + argument\n },\n // e.g. 'BY-NC'\n function (argument) {\n return 'CC-' + argument + '-4.0'\n },\n // e.g. 'Attribution-NonCommercial'\n function (argument) {\n return argument\n .replace('Attribution', 'BY')\n .replace('NonCommercial', 'NC')\n .replace('NoDerivatives', 'ND')\n .replace(/ (\\d)/, '-$1')\n .replace(/ ?International/, '')\n },\n // e.g. 'Attribution-NonCommercial'\n function (argument) {\n return 'CC-' +\n argument\n .replace('Attribution', 'BY')\n .replace('NonCommercial', 'NC')\n .replace('NoDerivatives', 'ND')\n .replace(/ (\\d)/, '-$1')\n .replace(/ ?International/, '') +\n '-4.0'\n }\n]\n\nvar licensesWithVersions = spdxLicenseIds\n .map(function (id) {\n var match = /^(.*)-\\d+\\.\\d+$/.exec(id)\n return match\n ? [match[0], match[1]]\n : [id, null]\n })\n .reduce(function (objectMap, item) {\n var key = item[1]\n objectMap[key] = objectMap[key] || []\n objectMap[key].push(item[0])\n return objectMap\n }, {})\n\nvar licensesWithOneVersion = Object.keys(licensesWithVersions)\n .map(function makeEntries (key) {\n return [key, licensesWithVersions[key]]\n })\n .filter(function identifySoleVersions (item) {\n return (\n // Licenses has just one valid version suffix.\n item[1].length === 1 &&\n item[0] !== null &&\n // APL will be considered Apache, rather than APL-1.0\n item[0] !== 'APL'\n )\n })\n .map(function createLastResorts (item) {\n return [item[0], item[1][0]]\n })\n\nlicensesWithVersions = undefined\n\n// If all else fails, guess that strings containing certain substrings\n// meant to identify certain licenses.\nvar lastResorts = [\n ['UNLI', 'Unlicense'],\n ['WTF', 'WTFPL'],\n ['2 CLAUSE', 'BSD-2-Clause'],\n ['2-CLAUSE', 'BSD-2-Clause'],\n ['3 CLAUSE', 'BSD-3-Clause'],\n ['3-CLAUSE', 'BSD-3-Clause'],\n ['AFFERO', 'AGPL-3.0-or-later'],\n ['AGPL', 'AGPL-3.0-or-later'],\n ['APACHE', 'Apache-2.0'],\n ['ARTISTIC', 'Artistic-2.0'],\n ['Affero', 'AGPL-3.0-or-later'],\n ['BEER', 'Beerware'],\n ['BOOST', 'BSL-1.0'],\n ['BSD', 'BSD-2-Clause'],\n ['CDDL', 'CDDL-1.1'],\n ['ECLIPSE', 'EPL-1.0'],\n ['FUCK', 'WTFPL'],\n ['GNU', 'GPL-3.0-or-later'],\n ['LGPL', 'LGPL-3.0-or-later'],\n ['GPLV1', 'GPL-1.0-only'],\n ['GPL-1', 'GPL-1.0-only'],\n ['GPLV2', 'GPL-2.0-only'],\n ['GPL-2', 'GPL-2.0-only'],\n ['GPL', 'GPL-3.0-or-later'],\n ['MIT +NO-FALSE-ATTRIBS', 'MITNFA'],\n ['MIT', 'MIT'],\n ['MPL', 'MPL-2.0'],\n ['X11', 'X11'],\n ['ZLIB', 'Zlib']\n].concat(licensesWithOneVersion)\n\nvar SUBSTRING = 0\nvar IDENTIFIER = 1\n\nvar validTransformation = function (identifier) {\n for (var i = 0; i < transforms.length; i++) {\n var transformed = transforms[i](identifier).trim()\n if (transformed !== identifier && valid(transformed)) {\n return transformed\n }\n }\n return null\n}\n\nvar validLastResort = function (identifier) {\n var upperCased = identifier.toUpperCase()\n for (var i = 0; i < lastResorts.length; i++) {\n var lastResort = lastResorts[i]\n if (upperCased.indexOf(lastResort[SUBSTRING]) > -1) {\n return lastResort[IDENTIFIER]\n }\n }\n return null\n}\n\nvar anyCorrection = function (identifier, check) {\n for (var i = 0; i < transpositions.length; i++) {\n var transposition = transpositions[i]\n var transposed = transposition[TRANSPOSED]\n if (identifier.indexOf(transposed) > -1) {\n var corrected = identifier.replace(\n transposed,\n transposition[CORRECT]\n )\n var checked = check(corrected)\n if (checked !== null) {\n return checked\n }\n }\n }\n return null\n}\n\nmodule.exports = function (identifier, options) {\n options = options || {}\n var upgrade = options.upgrade === undefined ? true : !!options.upgrade\n function postprocess (value) {\n return upgrade ? upgradeGPLs(value) : value\n }\n var validArugment = (\n typeof identifier === 'string' &&\n identifier.trim().length !== 0\n )\n if (!validArugment) {\n throw Error('Invalid argument. Expected non-empty string.')\n }\n identifier = identifier.trim()\n if (valid(identifier)) {\n return postprocess(identifier)\n }\n var noPlus = identifier.replace(/\\+$/, '').trim()\n if (valid(noPlus)) {\n return postprocess(noPlus)\n }\n var transformed = validTransformation(identifier)\n if (transformed !== null) {\n return postprocess(transformed)\n }\n transformed = anyCorrection(identifier, function (argument) {\n if (valid(argument)) {\n return argument\n }\n return validTransformation(argument)\n })\n if (transformed !== null) {\n return postprocess(transformed)\n }\n transformed = validLastResort(identifier)\n if (transformed !== null) {\n return postprocess(transformed)\n }\n transformed = anyCorrection(identifier, validLastResort)\n if (transformed !== null) {\n return postprocess(transformed)\n }\n return null\n}\n\nfunction upgradeGPLs (value) {\n if ([\n 'GPL-1.0', 'LGPL-1.0', 'AGPL-1.0',\n 'GPL-2.0', 'LGPL-2.0', 'AGPL-2.0',\n 'LGPL-2.1'\n ].indexOf(value) !== -1) {\n return value + '-only'\n } else if ([\n 'GPL-1.0+', 'GPL-2.0+', 'GPL-3.0+',\n 'LGPL-2.0+', 'LGPL-2.1+', 'LGPL-3.0+',\n 'AGPL-1.0+', 'AGPL-3.0+'\n ].indexOf(value) !== -1) {\n return value.replace(/\\+$/, '-or-later')\n } else if (['GPL-3.0', 'LGPL-3.0', 'AGPL-3.0'].indexOf(value) !== -1) {\n return value + '-or-later'\n } else {\n return value\n }\n}\n", "var parse = require('spdx-expression-parse');\nvar correct = require('spdx-correct');\n\nvar genericWarning = (\n 'license should be ' +\n 'a valid SPDX license expression (without \"LicenseRef\"), ' +\n '\"UNLICENSED\", or ' +\n '\"SEE LICENSE IN \"'\n);\n\nvar fileReferenceRE = /^SEE LICEN[CS]E IN (.+)$/;\n\nfunction startsWith(prefix, string) {\n return string.slice(0, prefix.length) === prefix;\n}\n\nfunction usesLicenseRef(ast) {\n if (ast.hasOwnProperty('license')) {\n var license = ast.license;\n return (\n startsWith('LicenseRef', license) ||\n startsWith('DocumentRef', license)\n );\n } else {\n return (\n usesLicenseRef(ast.left) ||\n usesLicenseRef(ast.right)\n );\n }\n}\n\nmodule.exports = function(argument) {\n var ast;\n\n try {\n ast = parse(argument);\n } catch (e) {\n var match\n if (\n argument === 'UNLICENSED' ||\n argument === 'UNLICENCED'\n ) {\n return {\n validForOldPackages: true,\n validForNewPackages: true,\n unlicensed: true\n };\n } else if (match = fileReferenceRE.exec(argument)) {\n return {\n validForOldPackages: true,\n validForNewPackages: true,\n inFile: match[1]\n };\n } else {\n var result = {\n validForOldPackages: false,\n validForNewPackages: false,\n warnings: [genericWarning]\n };\n if (argument.trim().length !== 0) {\n var corrected = correct(argument);\n if (corrected) {\n result.warnings.push(\n 'license is similar to the valid expression \"' + corrected + '\"'\n );\n }\n }\n return result;\n }\n }\n\n if (usesLicenseRef(ast)) {\n return {\n validForNewPackages: false,\n validForOldPackages: false,\n spdx: true,\n warnings: [genericWarning]\n };\n } else {\n return {\n validForNewPackages: true,\n validForOldPackages: true,\n spdx: true\n };\n }\n};\n", "'use strict'\n\nvar gitHosts = module.exports = {\n github: {\n // First two are insecure and generally shouldn't be used any more, but\n // they are still supported.\n 'protocols': [ 'git', 'http', 'git+ssh', 'git+https', 'ssh', 'https' ],\n 'domain': 'github.com',\n 'treepath': 'tree',\n 'filetemplate': 'https://{auth@}raw.githubusercontent.com/{user}/{project}/{committish}/{path}',\n 'bugstemplate': 'https://{domain}/{user}/{project}/issues',\n 'gittemplate': 'git://{auth@}{domain}/{user}/{project}.git{#committish}',\n 'tarballtemplate': 'https://codeload.{domain}/{user}/{project}/tar.gz/{committish}'\n },\n bitbucket: {\n 'protocols': [ 'git+ssh', 'git+https', 'ssh', 'https' ],\n 'domain': 'bitbucket.org',\n 'treepath': 'src',\n 'tarballtemplate': 'https://{domain}/{user}/{project}/get/{committish}.tar.gz'\n },\n gitlab: {\n 'protocols': [ 'git+ssh', 'git+https', 'ssh', 'https' ],\n 'domain': 'gitlab.com',\n 'treepath': 'tree',\n 'bugstemplate': 'https://{domain}/{user}/{project}/issues',\n 'httpstemplate': 'git+https://{auth@}{domain}/{user}/{projectPath}.git{#committish}',\n 'tarballtemplate': 'https://{domain}/{user}/{project}/repository/archive.tar.gz?ref={committish}',\n 'pathmatch': /^[/]([^/]+)[/]((?!.*(\\/-\\/|\\/repository\\/archive\\.tar\\.gz\\?=.*|\\/repository\\/[^/]+\\/archive.tar.gz$)).*?)(?:[.]git|[/])?$/\n },\n gist: {\n 'protocols': [ 'git', 'git+ssh', 'git+https', 'ssh', 'https' ],\n 'domain': 'gist.github.com',\n 'pathmatch': /^[/](?:([^/]+)[/])?([a-z0-9]{32,})(?:[.]git)?$/,\n 'filetemplate': 'https://gist.githubusercontent.com/{user}/{project}/raw{/committish}/{path}',\n 'bugstemplate': 'https://{domain}/{project}',\n 'gittemplate': 'git://{domain}/{project}.git{#committish}',\n 'sshtemplate': 'git@{domain}:/{project}.git{#committish}',\n 'sshurltemplate': 'git+ssh://git@{domain}/{project}.git{#committish}',\n 'browsetemplate': 'https://{domain}/{project}{/committish}',\n 'browsefiletemplate': 'https://{domain}/{project}{/committish}{#path}',\n 'docstemplate': 'https://{domain}/{project}{/committish}',\n 'httpstemplate': 'git+https://{domain}/{project}.git{#committish}',\n 'shortcuttemplate': '{type}:{project}{#committish}',\n 'pathtemplate': '{project}{#committish}',\n 'tarballtemplate': 'https://codeload.github.com/gist/{project}/tar.gz/{committish}',\n 'hashformat': function (fragment) {\n return 'file-' + formatHashFragment(fragment)\n }\n }\n}\n\nvar gitHostDefaults = {\n 'sshtemplate': 'git@{domain}:{user}/{project}.git{#committish}',\n 'sshurltemplate': 'git+ssh://git@{domain}/{user}/{project}.git{#committish}',\n 'browsetemplate': 'https://{domain}/{user}/{project}{/tree/committish}',\n 'browsefiletemplate': 'https://{domain}/{user}/{project}/{treepath}/{committish}/{path}{#fragment}',\n 'docstemplate': 'https://{domain}/{user}/{project}{/tree/committish}#readme',\n 'httpstemplate': 'git+https://{auth@}{domain}/{user}/{project}.git{#committish}',\n 'filetemplate': 'https://{domain}/{user}/{project}/raw/{committish}/{path}',\n 'shortcuttemplate': '{type}:{user}/{project}{#committish}',\n 'pathtemplate': '{user}/{project}{#committish}',\n 'pathmatch': /^[/]([^/]+)[/]([^/]+?)(?:[.]git|[/])?$/,\n 'hashformat': formatHashFragment\n}\n\nObject.keys(gitHosts).forEach(function (name) {\n Object.keys(gitHostDefaults).forEach(function (key) {\n if (gitHosts[name][key]) return\n gitHosts[name][key] = gitHostDefaults[key]\n })\n gitHosts[name].protocols_re = RegExp('^(' +\n gitHosts[name].protocols.map(function (protocol) {\n return protocol.replace(/([\\\\+*{}()[\\]$^|])/g, '\\\\$1')\n }).join('|') + '):$')\n})\n\nfunction formatHashFragment (fragment) {\n return fragment.toLowerCase().replace(/^\\W+|\\/|\\W+$/g, '').replace(/\\W+/g, '-')\n}\n", "'use strict'\nvar gitHosts = require('./git-host-info.js')\n/* eslint-disable node/no-deprecated-api */\n\n// copy-pasta util._extend from node's source, to avoid pulling\n// the whole util module into peoples' webpack bundles.\n/* istanbul ignore next */\nvar extend = Object.assign || function _extend (target, source) {\n // Don't do anything if source isn't an object\n if (source === null || typeof source !== 'object') return target\n\n var keys = Object.keys(source)\n var i = keys.length\n while (i--) {\n target[keys[i]] = source[keys[i]]\n }\n return target\n}\n\nmodule.exports = GitHost\nfunction GitHost (type, user, auth, project, committish, defaultRepresentation, opts) {\n var gitHostInfo = this\n gitHostInfo.type = type\n Object.keys(gitHosts[type]).forEach(function (key) {\n gitHostInfo[key] = gitHosts[type][key]\n })\n gitHostInfo.user = user\n gitHostInfo.auth = auth\n gitHostInfo.project = project\n gitHostInfo.committish = committish\n gitHostInfo.default = defaultRepresentation\n gitHostInfo.opts = opts || {}\n}\n\nGitHost.prototype.hash = function () {\n return this.committish ? '#' + this.committish : ''\n}\n\nGitHost.prototype._fill = function (template, opts) {\n if (!template) return\n var vars = extend({}, opts)\n vars.path = vars.path ? vars.path.replace(/^[/]+/g, '') : ''\n opts = extend(extend({}, this.opts), opts)\n var self = this\n Object.keys(this).forEach(function (key) {\n if (self[key] != null && vars[key] == null) vars[key] = self[key]\n })\n var rawAuth = vars.auth\n var rawcommittish = vars.committish\n var rawFragment = vars.fragment\n var rawPath = vars.path\n var rawProject = vars.project\n Object.keys(vars).forEach(function (key) {\n var value = vars[key]\n if ((key === 'path' || key === 'project') && typeof value === 'string') {\n vars[key] = value.split('/').map(function (pathComponent) {\n return encodeURIComponent(pathComponent)\n }).join('/')\n } else {\n vars[key] = encodeURIComponent(value)\n }\n })\n vars['auth@'] = rawAuth ? rawAuth + '@' : ''\n vars['#fragment'] = rawFragment ? '#' + this.hashformat(rawFragment) : ''\n vars.fragment = vars.fragment ? vars.fragment : ''\n vars['#path'] = rawPath ? '#' + this.hashformat(rawPath) : ''\n vars['/path'] = vars.path ? '/' + vars.path : ''\n vars.projectPath = rawProject.split('/').map(encodeURIComponent).join('/')\n if (opts.noCommittish) {\n vars['#committish'] = ''\n vars['/tree/committish'] = ''\n vars['/committish'] = ''\n vars.committish = ''\n } else {\n vars['#committish'] = rawcommittish ? '#' + rawcommittish : ''\n vars['/tree/committish'] = vars.committish\n ? '/' + vars.treepath + '/' + vars.committish\n : ''\n vars['/committish'] = vars.committish ? '/' + vars.committish : ''\n vars.committish = vars.committish || 'master'\n }\n var res = template\n Object.keys(vars).forEach(function (key) {\n res = res.replace(new RegExp('[{]' + key + '[}]', 'g'), vars[key])\n })\n if (opts.noGitPlus) {\n return res.replace(/^git[+]/, '')\n } else {\n return res\n }\n}\n\nGitHost.prototype.ssh = function (opts) {\n return this._fill(this.sshtemplate, opts)\n}\n\nGitHost.prototype.sshurl = function (opts) {\n return this._fill(this.sshurltemplate, opts)\n}\n\nGitHost.prototype.browse = function (P, F, opts) {\n if (typeof P === 'string') {\n if (typeof F !== 'string') {\n opts = F\n F = null\n }\n return this._fill(this.browsefiletemplate, extend({\n fragment: F,\n path: P\n }, opts))\n } else {\n return this._fill(this.browsetemplate, P)\n }\n}\n\nGitHost.prototype.docs = function (opts) {\n return this._fill(this.docstemplate, opts)\n}\n\nGitHost.prototype.bugs = function (opts) {\n return this._fill(this.bugstemplate, opts)\n}\n\nGitHost.prototype.https = function (opts) {\n return this._fill(this.httpstemplate, opts)\n}\n\nGitHost.prototype.git = function (opts) {\n return this._fill(this.gittemplate, opts)\n}\n\nGitHost.prototype.shortcut = function (opts) {\n return this._fill(this.shortcuttemplate, opts)\n}\n\nGitHost.prototype.path = function (opts) {\n return this._fill(this.pathtemplate, opts)\n}\n\nGitHost.prototype.tarball = function (opts_) {\n var opts = extend({}, opts_, { noCommittish: false })\n return this._fill(this.tarballtemplate, opts)\n}\n\nGitHost.prototype.file = function (P, opts) {\n return this._fill(this.filetemplate, extend({ path: P }, opts))\n}\n\nGitHost.prototype.getDefaultRepresentation = function () {\n return this.default\n}\n\nGitHost.prototype.toString = function (opts) {\n if (this.default && typeof this[this.default] === 'function') return this[this.default](opts)\n return this.sshurl(opts)\n}\n", "'use strict'\nvar url = require('url')\nvar gitHosts = require('./git-host-info.js')\nvar GitHost = module.exports = require('./git-host.js')\n\nvar protocolToRepresentationMap = {\n 'git+ssh:': 'sshurl',\n 'git+https:': 'https',\n 'ssh:': 'sshurl',\n 'git:': 'git'\n}\n\nfunction protocolToRepresentation (protocol) {\n return protocolToRepresentationMap[protocol] || protocol.slice(0, -1)\n}\n\nvar authProtocols = {\n 'git:': true,\n 'https:': true,\n 'git+https:': true,\n 'http:': true,\n 'git+http:': true\n}\n\nvar cache = {}\n\nmodule.exports.fromUrl = function (giturl, opts) {\n if (typeof giturl !== 'string') return\n var key = giturl + JSON.stringify(opts || {})\n\n if (!(key in cache)) {\n cache[key] = fromUrl(giturl, opts)\n }\n\n return cache[key]\n}\n\nfunction fromUrl (giturl, opts) {\n if (giturl == null || giturl === '') return\n var url = fixupUnqualifiedGist(\n isGitHubShorthand(giturl) ? 'github:' + giturl : giturl\n )\n var parsed = parseGitUrl(url)\n var shortcutMatch = url.match(new RegExp('^([^:]+):(?:(?:[^@:]+(?:[^@]+)?@)?([^/]*))[/](.+?)(?:[.]git)?($|#)'))\n var matches = Object.keys(gitHosts).map(function (gitHostName) {\n try {\n var gitHostInfo = gitHosts[gitHostName]\n var auth = null\n if (parsed.auth && authProtocols[parsed.protocol]) {\n auth = parsed.auth\n }\n var committish = parsed.hash ? decodeURIComponent(parsed.hash.substr(1)) : null\n var user = null\n var project = null\n var defaultRepresentation = null\n if (shortcutMatch && shortcutMatch[1] === gitHostName) {\n user = shortcutMatch[2] && decodeURIComponent(shortcutMatch[2])\n project = decodeURIComponent(shortcutMatch[3])\n defaultRepresentation = 'shortcut'\n } else {\n if (parsed.host && parsed.host !== gitHostInfo.domain && parsed.host.replace(/^www[.]/, '') !== gitHostInfo.domain) return\n if (!gitHostInfo.protocols_re.test(parsed.protocol)) return\n if (!parsed.path) return\n var pathmatch = gitHostInfo.pathmatch\n var matched = parsed.path.match(pathmatch)\n if (!matched) return\n /* istanbul ignore else */\n if (matched[1] !== null && matched[1] !== undefined) {\n user = decodeURIComponent(matched[1].replace(/^:/, ''))\n }\n project = decodeURIComponent(matched[2])\n defaultRepresentation = protocolToRepresentation(parsed.protocol)\n }\n return new GitHost(gitHostName, user, auth, project, committish, defaultRepresentation, opts)\n } catch (ex) {\n /* istanbul ignore else */\n if (ex instanceof URIError) {\n } else throw ex\n }\n }).filter(function (gitHostInfo) { return gitHostInfo })\n if (matches.length !== 1) return\n return matches[0]\n}\n\nfunction isGitHubShorthand (arg) {\n // Note: This does not fully test the git ref format.\n // See https://www.kernel.org/pub/software/scm/git/docs/git-check-ref-format.html\n //\n // The only way to do this properly would be to shell out to\n // git-check-ref-format, and as this is a fast sync function,\n // we don't want to do that. Just let git fail if it turns\n // out that the commit-ish is invalid.\n // GH usernames cannot start with . or -\n return /^[^:@%/\\s.-][^:@%/\\s]*[/][^:@\\s/%]+(?:#.*)?$/.test(arg)\n}\n\nfunction fixupUnqualifiedGist (giturl) {\n // necessary for round-tripping gists\n var parsed = url.parse(giturl)\n if (parsed.protocol === 'gist:' && parsed.host && !parsed.path) {\n return parsed.protocol + '/' + parsed.host\n } else {\n return giturl\n }\n}\n\nfunction parseGitUrl (giturl) {\n var matched = giturl.match(/^([^@]+)@([^:/]+):[/]?((?:[^/]+[/])?[^/]+?)(?:[.]git)?(#.*)?$/)\n if (!matched) {\n var legacy = url.parse(giturl)\n // If we don't have url.URL, then sorry, this is just not fixable.\n // This affects Node <= 6.12.\n if (legacy.auth && typeof url.URL === 'function') {\n // git urls can be in the form of scp-style/ssh-connect strings, like\n // git+ssh://user@host.com:some/path, which the legacy url parser\n // supports, but WhatWG url.URL class does not. However, the legacy\n // parser de-urlencodes the username and password, so something like\n // https://user%3An%40me:p%40ss%3Aword@x.com/ becomes\n // https://user:n@me:p@ss:word@x.com/ which is all kinds of wrong.\n // Pull off just the auth and host, so we dont' get the confusing\n // scp-style URL, then pass that to the WhatWG parser to get the\n // auth properly escaped.\n var authmatch = giturl.match(/[^@]+@[^:/]+/)\n /* istanbul ignore else - this should be impossible */\n if (authmatch) {\n var whatwg = new url.URL(authmatch[0])\n legacy.auth = whatwg.username || ''\n if (whatwg.password) legacy.auth += ':' + whatwg.password\n }\n }\n return legacy\n }\n return {\n protocol: 'git+ssh:',\n slashes: true,\n auth: matched[1],\n host: matched[2],\n port: null,\n hostname: matched[2],\n hash: matched[4],\n search: null,\n query: null,\n pathname: '/' + matched[3],\n path: '/' + matched[3],\n href: 'git+ssh://' + matched[1] + '@' + matched[2] +\n '/' + matched[3] + (matched[4] || '')\n }\n}\n", "module.exports = function () {\n // see https://code.google.com/p/v8/wiki/JavaScriptStackTraceApi\n var origPrepareStackTrace = Error.prepareStackTrace;\n Error.prepareStackTrace = function (_, stack) { return stack; };\n var stack = (new Error()).stack;\n Error.prepareStackTrace = origPrepareStackTrace;\n return stack[2].getFileName();\n};\n", "'use strict';\n\nvar isWindows = process.platform === 'win32';\n\n// Regex to split a windows path into three parts: [*, device, slash,\n// tail] windows-only\nvar splitDeviceRe =\n /^([a-zA-Z]:|[\\\\\\/]{2}[^\\\\\\/]+[\\\\\\/]+[^\\\\\\/]+)?([\\\\\\/])?([\\s\\S]*?)$/;\n\n// Regex to split the tail part of the above into [*, dir, basename, ext]\nvar splitTailRe =\n /^([\\s\\S]*?)((?:\\.{1,2}|[^\\\\\\/]+?|)(\\.[^.\\/\\\\]*|))(?:[\\\\\\/]*)$/;\n\nvar win32 = {};\n\n// Function to split a filename into [root, dir, basename, ext]\nfunction win32SplitPath(filename) {\n // Separate device+slash from tail\n var result = splitDeviceRe.exec(filename),\n device = (result[1] || '') + (result[2] || ''),\n tail = result[3] || '';\n // Split the tail into dir, basename and extension\n var result2 = splitTailRe.exec(tail),\n dir = result2[1],\n basename = result2[2],\n ext = result2[3];\n return [device, dir, basename, ext];\n}\n\nwin32.parse = function(pathString) {\n if (typeof pathString !== 'string') {\n throw new TypeError(\n \"Parameter 'pathString' must be a string, not \" + typeof pathString\n );\n }\n var allParts = win32SplitPath(pathString);\n if (!allParts || allParts.length !== 4) {\n throw new TypeError(\"Invalid path '\" + pathString + \"'\");\n }\n return {\n root: allParts[0],\n dir: allParts[0] + allParts[1].slice(0, -1),\n base: allParts[2],\n ext: allParts[3],\n name: allParts[2].slice(0, allParts[2].length - allParts[3].length)\n };\n};\n\n\n\n// Split a filename into [root, dir, basename, ext], unix version\n// 'root' is just a slash, or nothing.\nvar splitPathRe =\n /^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;\nvar posix = {};\n\n\nfunction posixSplitPath(filename) {\n return splitPathRe.exec(filename).slice(1);\n}\n\n\nposix.parse = function(pathString) {\n if (typeof pathString !== 'string') {\n throw new TypeError(\n \"Parameter 'pathString' must be a string, not \" + typeof pathString\n );\n }\n var allParts = posixSplitPath(pathString);\n if (!allParts || allParts.length !== 4) {\n throw new TypeError(\"Invalid path '\" + pathString + \"'\");\n }\n allParts[1] = allParts[1] || '';\n allParts[2] = allParts[2] || '';\n allParts[3] = allParts[3] || '';\n\n return {\n root: allParts[0],\n dir: allParts[0] + allParts[1].slice(0, -1),\n base: allParts[2],\n ext: allParts[3],\n name: allParts[2].slice(0, allParts[2].length - allParts[3].length)\n };\n};\n\n\nif (isWindows)\n module.exports = win32.parse;\nelse /* posix */\n module.exports = posix.parse;\n\nmodule.exports.posix = posix.parse;\nmodule.exports.win32 = win32.parse;\n", "var path = require('path');\nvar parse = path.parse || require('path-parse');\n\nvar getNodeModulesDirs = function getNodeModulesDirs(absoluteStart, modules) {\n var prefix = '/';\n if ((/^([A-Za-z]:)/).test(absoluteStart)) {\n prefix = '';\n } else if ((/^\\\\\\\\/).test(absoluteStart)) {\n prefix = '\\\\\\\\';\n }\n\n var paths = [absoluteStart];\n var parsed = parse(absoluteStart);\n while (parsed.dir !== paths[paths.length - 1]) {\n paths.push(parsed.dir);\n parsed = parse(parsed.dir);\n }\n\n return paths.reduce(function (dirs, aPath) {\n return dirs.concat(modules.map(function (moduleDir) {\n return path.resolve(prefix, aPath, moduleDir);\n }));\n }, []);\n};\n\nmodule.exports = function nodeModulesPaths(start, opts, request) {\n var modules = opts && opts.moduleDirectory\n ? [].concat(opts.moduleDirectory)\n : ['node_modules'];\n\n if (opts && typeof opts.paths === 'function') {\n return opts.paths(\n request,\n start,\n function () { return getNodeModulesDirs(start, modules); },\n opts\n );\n }\n\n var dirs = getNodeModulesDirs(start, modules);\n return opts && opts.paths ? dirs.concat(opts.paths) : dirs;\n};\n", "module.exports = function (x, opts) {\n /**\n * This file is purposefully a passthrough. It's expected that third-party\n * environments will override it at runtime in order to inject special logic\n * into `resolve` (by manipulating the options). One such example is the PnP\n * code path in Yarn.\n */\n\n return opts || {};\n};\n", "'use strict';\n\n/* eslint no-invalid-this: 1 */\n\nvar ERROR_MESSAGE = 'Function.prototype.bind called on incompatible ';\nvar slice = Array.prototype.slice;\nvar toStr = Object.prototype.toString;\nvar funcType = '[object Function]';\n\nmodule.exports = function bind(that) {\n var target = this;\n if (typeof target !== 'function' || toStr.call(target) !== funcType) {\n throw new TypeError(ERROR_MESSAGE + target);\n }\n var args = slice.call(arguments, 1);\n\n var bound;\n var binder = function () {\n if (this instanceof bound) {\n var result = target.apply(\n this,\n args.concat(slice.call(arguments))\n );\n if (Object(result) === result) {\n return result;\n }\n return this;\n } else {\n return target.apply(\n that,\n args.concat(slice.call(arguments))\n );\n }\n };\n\n var boundLength = Math.max(0, target.length - args.length);\n var boundArgs = [];\n for (var i = 0; i < boundLength; i++) {\n boundArgs.push('$' + i);\n }\n\n bound = Function('binder', 'return function (' + boundArgs.join(',') + '){ return binder.apply(this,arguments); }')(binder);\n\n if (target.prototype) {\n var Empty = function Empty() {};\n Empty.prototype = target.prototype;\n bound.prototype = new Empty();\n Empty.prototype = null;\n }\n\n return bound;\n};\n", "'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = Function.prototype.bind || implementation;\n", "'use strict';\n\nvar bind = require('function-bind');\n\nmodule.exports = bind.call(Function.call, Object.prototype.hasOwnProperty);\n", "'use strict';\n\nvar has = require('has');\n\nfunction specifierIncluded(current, specifier) {\n\tvar nodeParts = current.split('.');\n\tvar parts = specifier.split(' ');\n\tvar op = parts.length > 1 ? parts[0] : '=';\n\tvar versionParts = (parts.length > 1 ? parts[1] : parts[0]).split('.');\n\n\tfor (var i = 0; i < 3; ++i) {\n\t\tvar cur = parseInt(nodeParts[i] || 0, 10);\n\t\tvar ver = parseInt(versionParts[i] || 0, 10);\n\t\tif (cur === ver) {\n\t\t\tcontinue; // eslint-disable-line no-restricted-syntax, no-continue\n\t\t}\n\t\tif (op === '<') {\n\t\t\treturn cur < ver;\n\t\t}\n\t\tif (op === '>=') {\n\t\t\treturn cur >= ver;\n\t\t}\n\t\treturn false;\n\t}\n\treturn op === '>=';\n}\n\nfunction matchesRange(current, range) {\n\tvar specifiers = range.split(/ ?&& ?/);\n\tif (specifiers.length === 0) {\n\t\treturn false;\n\t}\n\tfor (var i = 0; i < specifiers.length; ++i) {\n\t\tif (!specifierIncluded(current, specifiers[i])) {\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n}\n\nfunction versionIncluded(nodeVersion, specifierValue) {\n\tif (typeof specifierValue === 'boolean') {\n\t\treturn specifierValue;\n\t}\n\n\tvar current = typeof nodeVersion === 'undefined'\n\t\t? process.versions && process.versions.node && process.versions.node\n\t\t: nodeVersion;\n\n\tif (typeof current !== 'string') {\n\t\tthrow new TypeError(typeof nodeVersion === 'undefined' ? 'Unable to determine current node version' : 'If provided, a valid node version is required');\n\t}\n\n\tif (specifierValue && typeof specifierValue === 'object') {\n\t\tfor (var i = 0; i < specifierValue.length; ++i) {\n\t\t\tif (matchesRange(current, specifierValue[i])) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n\treturn matchesRange(current, specifierValue);\n}\n\nvar data = require('./core.json');\n\nmodule.exports = function isCore(x, nodeVersion) {\n\treturn has(data, x) && versionIncluded(nodeVersion, data[x]);\n};\n", "var fs = require('fs');\nvar path = require('path');\nvar caller = require('./caller');\nvar nodeModulesPaths = require('./node-modules-paths');\nvar normalizeOptions = require('./normalize-options');\nvar isCore = require('is-core-module');\n\nvar realpathFS = fs.realpath && typeof fs.realpath.native === 'function' ? fs.realpath.native : fs.realpath;\n\nvar defaultIsFile = function isFile(file, cb) {\n fs.stat(file, function (err, stat) {\n if (!err) {\n return cb(null, stat.isFile() || stat.isFIFO());\n }\n if (err.code === 'ENOENT' || err.code === 'ENOTDIR') return cb(null, false);\n return cb(err);\n });\n};\n\nvar defaultIsDir = function isDirectory(dir, cb) {\n fs.stat(dir, function (err, stat) {\n if (!err) {\n return cb(null, stat.isDirectory());\n }\n if (err.code === 'ENOENT' || err.code === 'ENOTDIR') return cb(null, false);\n return cb(err);\n });\n};\n\nvar defaultRealpath = function realpath(x, cb) {\n realpathFS(x, function (realpathErr, realPath) {\n if (realpathErr && realpathErr.code !== 'ENOENT') cb(realpathErr);\n else cb(null, realpathErr ? x : realPath);\n });\n};\n\nvar maybeRealpath = function maybeRealpath(realpath, x, opts, cb) {\n if (opts && opts.preserveSymlinks === false) {\n realpath(x, cb);\n } else {\n cb(null, x);\n }\n};\n\nvar getPackageCandidates = function getPackageCandidates(x, start, opts) {\n var dirs = nodeModulesPaths(start, opts, x);\n for (var i = 0; i < dirs.length; i++) {\n dirs[i] = path.join(dirs[i], x);\n }\n return dirs;\n};\n\nmodule.exports = function resolve(x, options, callback) {\n var cb = callback;\n var opts = options;\n if (typeof options === 'function') {\n cb = opts;\n opts = {};\n }\n if (typeof x !== 'string') {\n var err = new TypeError('Path must be a string.');\n return process.nextTick(function () {\n cb(err);\n });\n }\n\n opts = normalizeOptions(x, opts);\n\n var isFile = opts.isFile || defaultIsFile;\n var isDirectory = opts.isDirectory || defaultIsDir;\n var readFile = opts.readFile || fs.readFile;\n var realpath = opts.realpath || defaultRealpath;\n var packageIterator = opts.packageIterator;\n\n var extensions = opts.extensions || ['.js'];\n var includeCoreModules = opts.includeCoreModules !== false;\n var basedir = opts.basedir || path.dirname(caller());\n var parent = opts.filename || basedir;\n\n opts.paths = opts.paths || [];\n\n // ensure that `basedir` is an absolute path at this point, resolving against the process' current working directory\n var absoluteStart = path.resolve(basedir);\n\n maybeRealpath(\n realpath,\n absoluteStart,\n opts,\n function (err, realStart) {\n if (err) cb(err);\n else init(realStart);\n }\n );\n\n var res;\n function init(basedir) {\n if ((/^(?:\\.\\.?(?:\\/|$)|\\/|([A-Za-z]:)?[/\\\\])/).test(x)) {\n res = path.resolve(basedir, x);\n if (x === '.' || x === '..' || x.slice(-1) === '/') res += '/';\n if ((/\\/$/).test(x) && res === basedir) {\n loadAsDirectory(res, opts.package, onfile);\n } else loadAsFile(res, opts.package, onfile);\n } else if (includeCoreModules && isCore(x)) {\n return cb(null, x);\n } else loadNodeModules(x, basedir, function (err, n, pkg) {\n if (err) cb(err);\n else if (n) {\n return maybeRealpath(realpath, n, opts, function (err, realN) {\n if (err) {\n cb(err);\n } else {\n cb(null, realN, pkg);\n }\n });\n } else {\n var moduleError = new Error(\"Cannot find module '\" + x + \"' from '\" + parent + \"'\");\n moduleError.code = 'MODULE_NOT_FOUND';\n cb(moduleError);\n }\n });\n }\n\n function onfile(err, m, pkg) {\n if (err) cb(err);\n else if (m) cb(null, m, pkg);\n else loadAsDirectory(res, function (err, d, pkg) {\n if (err) cb(err);\n else if (d) {\n maybeRealpath(realpath, d, opts, function (err, realD) {\n if (err) {\n cb(err);\n } else {\n cb(null, realD, pkg);\n }\n });\n } else {\n var moduleError = new Error(\"Cannot find module '\" + x + \"' from '\" + parent + \"'\");\n moduleError.code = 'MODULE_NOT_FOUND';\n cb(moduleError);\n }\n });\n }\n\n function loadAsFile(x, thePackage, callback) {\n var loadAsFilePackage = thePackage;\n var cb = callback;\n if (typeof loadAsFilePackage === 'function') {\n cb = loadAsFilePackage;\n loadAsFilePackage = undefined;\n }\n\n var exts = [''].concat(extensions);\n load(exts, x, loadAsFilePackage);\n\n function load(exts, x, loadPackage) {\n if (exts.length === 0) return cb(null, undefined, loadPackage);\n var file = x + exts[0];\n\n var pkg = loadPackage;\n if (pkg) onpkg(null, pkg);\n else loadpkg(path.dirname(file), onpkg);\n\n function onpkg(err, pkg_, dir) {\n pkg = pkg_;\n if (err) return cb(err);\n if (dir && pkg && opts.pathFilter) {\n var rfile = path.relative(dir, file);\n var rel = rfile.slice(0, rfile.length - exts[0].length);\n var r = opts.pathFilter(pkg, x, rel);\n if (r) return load(\n [''].concat(extensions.slice()),\n path.resolve(dir, r),\n pkg\n );\n }\n isFile(file, onex);\n }\n function onex(err, ex) {\n if (err) return cb(err);\n if (ex) return cb(null, file, pkg);\n load(exts.slice(1), x, pkg);\n }\n }\n }\n\n function loadpkg(dir, cb) {\n if (dir === '' || dir === '/') return cb(null);\n if (process.platform === 'win32' && (/^\\w:[/\\\\]*$/).test(dir)) {\n return cb(null);\n }\n if ((/[/\\\\]node_modules[/\\\\]*$/).test(dir)) return cb(null);\n\n maybeRealpath(realpath, dir, opts, function (unwrapErr, pkgdir) {\n if (unwrapErr) return loadpkg(path.dirname(dir), cb);\n var pkgfile = path.join(pkgdir, 'package.json');\n isFile(pkgfile, function (err, ex) {\n // on err, ex is false\n if (!ex) return loadpkg(path.dirname(dir), cb);\n\n readFile(pkgfile, function (err, body) {\n if (err) cb(err);\n try { var pkg = JSON.parse(body); } catch (jsonErr) {}\n\n if (pkg && opts.packageFilter) {\n pkg = opts.packageFilter(pkg, pkgfile);\n }\n cb(null, pkg, dir);\n });\n });\n });\n }\n\n function loadAsDirectory(x, loadAsDirectoryPackage, callback) {\n var cb = callback;\n var fpkg = loadAsDirectoryPackage;\n if (typeof fpkg === 'function') {\n cb = fpkg;\n fpkg = opts.package;\n }\n\n maybeRealpath(realpath, x, opts, function (unwrapErr, pkgdir) {\n if (unwrapErr) return cb(unwrapErr);\n var pkgfile = path.join(pkgdir, 'package.json');\n isFile(pkgfile, function (err, ex) {\n if (err) return cb(err);\n if (!ex) return loadAsFile(path.join(x, 'index'), fpkg, cb);\n\n readFile(pkgfile, function (err, body) {\n if (err) return cb(err);\n try {\n var pkg = JSON.parse(body);\n } catch (jsonErr) {}\n\n if (pkg && opts.packageFilter) {\n pkg = opts.packageFilter(pkg, pkgfile);\n }\n\n if (pkg && pkg.main) {\n if (typeof pkg.main !== 'string') {\n var mainError = new TypeError('package \u201C' + pkg.name + '\u201D `main` must be a string');\n mainError.code = 'INVALID_PACKAGE_MAIN';\n return cb(mainError);\n }\n if (pkg.main === '.' || pkg.main === './') {\n pkg.main = 'index';\n }\n loadAsFile(path.resolve(x, pkg.main), pkg, function (err, m, pkg) {\n if (err) return cb(err);\n if (m) return cb(null, m, pkg);\n if (!pkg) return loadAsFile(path.join(x, 'index'), pkg, cb);\n\n var dir = path.resolve(x, pkg.main);\n loadAsDirectory(dir, pkg, function (err, n, pkg) {\n if (err) return cb(err);\n if (n) return cb(null, n, pkg);\n loadAsFile(path.join(x, 'index'), pkg, cb);\n });\n });\n return;\n }\n\n loadAsFile(path.join(x, '/index'), pkg, cb);\n });\n });\n });\n }\n\n function processDirs(cb, dirs) {\n if (dirs.length === 0) return cb(null, undefined);\n var dir = dirs[0];\n\n isDirectory(path.dirname(dir), isdir);\n\n function isdir(err, isdir) {\n if (err) return cb(err);\n if (!isdir) return processDirs(cb, dirs.slice(1));\n loadAsFile(dir, opts.package, onfile);\n }\n\n function onfile(err, m, pkg) {\n if (err) return cb(err);\n if (m) return cb(null, m, pkg);\n loadAsDirectory(dir, opts.package, ondir);\n }\n\n function ondir(err, n, pkg) {\n if (err) return cb(err);\n if (n) return cb(null, n, pkg);\n processDirs(cb, dirs.slice(1));\n }\n }\n function loadNodeModules(x, start, cb) {\n var thunk = function () { return getPackageCandidates(x, start, opts); };\n processDirs(\n cb,\n packageIterator ? packageIterator(x, start, thunk, opts) : thunk()\n );\n }\n};\n", "var current = (process.versions && process.versions.node && process.versions.node.split('.')) || [];\n\nfunction specifierIncluded(specifier) {\n var parts = specifier.split(' ');\n var op = parts.length > 1 ? parts[0] : '=';\n var versionParts = (parts.length > 1 ? parts[1] : parts[0]).split('.');\n\n for (var i = 0; i < 3; ++i) {\n var cur = parseInt(current[i] || 0, 10);\n var ver = parseInt(versionParts[i] || 0, 10);\n if (cur === ver) {\n continue; // eslint-disable-line no-restricted-syntax, no-continue\n }\n if (op === '<') {\n return cur < ver;\n } else if (op === '>=') {\n return cur >= ver;\n } else {\n return false;\n }\n }\n return op === '>=';\n}\n\nfunction matchesRange(range) {\n var specifiers = range.split(/ ?&& ?/);\n if (specifiers.length === 0) { return false; }\n for (var i = 0; i < specifiers.length; ++i) {\n if (!specifierIncluded(specifiers[i])) { return false; }\n }\n return true;\n}\n\nfunction versionIncluded(specifierValue) {\n if (typeof specifierValue === 'boolean') { return specifierValue; }\n if (specifierValue && typeof specifierValue === 'object') {\n for (var i = 0; i < specifierValue.length; ++i) {\n if (matchesRange(specifierValue[i])) { return true; }\n }\n return false;\n }\n return matchesRange(specifierValue);\n}\n\nvar data = require('./core.json');\n\nvar core = {};\nfor (var mod in data) { // eslint-disable-line no-restricted-syntax\n if (Object.prototype.hasOwnProperty.call(data, mod)) {\n core[mod] = versionIncluded(data[mod]);\n }\n}\nmodule.exports = core;\n", "var isCoreModule = require('is-core-module');\n\nmodule.exports = function isCore(x) {\n return isCoreModule(x);\n};\n", "var isCore = require('is-core-module');\nvar fs = require('fs');\nvar path = require('path');\nvar caller = require('./caller');\nvar nodeModulesPaths = require('./node-modules-paths');\nvar normalizeOptions = require('./normalize-options');\n\nvar realpathFS = fs.realpathSync && typeof fs.realpathSync.native === 'function' ? fs.realpathSync.native : fs.realpathSync;\n\nvar defaultIsFile = function isFile(file) {\n try {\n var stat = fs.statSync(file);\n } catch (e) {\n if (e && (e.code === 'ENOENT' || e.code === 'ENOTDIR')) return false;\n throw e;\n }\n return stat.isFile() || stat.isFIFO();\n};\n\nvar defaultIsDir = function isDirectory(dir) {\n try {\n var stat = fs.statSync(dir);\n } catch (e) {\n if (e && (e.code === 'ENOENT' || e.code === 'ENOTDIR')) return false;\n throw e;\n }\n return stat.isDirectory();\n};\n\nvar defaultRealpathSync = function realpathSync(x) {\n try {\n return realpathFS(x);\n } catch (realpathErr) {\n if (realpathErr.code !== 'ENOENT') {\n throw realpathErr;\n }\n }\n return x;\n};\n\nvar maybeRealpathSync = function maybeRealpathSync(realpathSync, x, opts) {\n if (opts && opts.preserveSymlinks === false) {\n return realpathSync(x);\n }\n return x;\n};\n\nvar getPackageCandidates = function getPackageCandidates(x, start, opts) {\n var dirs = nodeModulesPaths(start, opts, x);\n for (var i = 0; i < dirs.length; i++) {\n dirs[i] = path.join(dirs[i], x);\n }\n return dirs;\n};\n\nmodule.exports = function resolveSync(x, options) {\n if (typeof x !== 'string') {\n throw new TypeError('Path must be a string.');\n }\n var opts = normalizeOptions(x, options);\n\n var isFile = opts.isFile || defaultIsFile;\n var readFileSync = opts.readFileSync || fs.readFileSync;\n var isDirectory = opts.isDirectory || defaultIsDir;\n var realpathSync = opts.realpathSync || defaultRealpathSync;\n var packageIterator = opts.packageIterator;\n\n var extensions = opts.extensions || ['.js'];\n var includeCoreModules = opts.includeCoreModules !== false;\n var basedir = opts.basedir || path.dirname(caller());\n var parent = opts.filename || basedir;\n\n opts.paths = opts.paths || [];\n\n // ensure that `basedir` is an absolute path at this point, resolving against the process' current working directory\n var absoluteStart = maybeRealpathSync(realpathSync, path.resolve(basedir), opts);\n\n if ((/^(?:\\.\\.?(?:\\/|$)|\\/|([A-Za-z]:)?[/\\\\])/).test(x)) {\n var res = path.resolve(absoluteStart, x);\n if (x === '.' || x === '..' || x.slice(-1) === '/') res += '/';\n var m = loadAsFileSync(res) || loadAsDirectorySync(res);\n if (m) return maybeRealpathSync(realpathSync, m, opts);\n } else if (includeCoreModules && isCore(x)) {\n return x;\n } else {\n var n = loadNodeModulesSync(x, absoluteStart);\n if (n) return maybeRealpathSync(realpathSync, n, opts);\n }\n\n var err = new Error(\"Cannot find module '\" + x + \"' from '\" + parent + \"'\");\n err.code = 'MODULE_NOT_FOUND';\n throw err;\n\n function loadAsFileSync(x) {\n var pkg = loadpkg(path.dirname(x));\n\n if (pkg && pkg.dir && pkg.pkg && opts.pathFilter) {\n var rfile = path.relative(pkg.dir, x);\n var r = opts.pathFilter(pkg.pkg, x, rfile);\n if (r) {\n x = path.resolve(pkg.dir, r); // eslint-disable-line no-param-reassign\n }\n }\n\n if (isFile(x)) {\n return x;\n }\n\n for (var i = 0; i < extensions.length; i++) {\n var file = x + extensions[i];\n if (isFile(file)) {\n return file;\n }\n }\n }\n\n function loadpkg(dir) {\n if (dir === '' || dir === '/') return;\n if (process.platform === 'win32' && (/^\\w:[/\\\\]*$/).test(dir)) {\n return;\n }\n if ((/[/\\\\]node_modules[/\\\\]*$/).test(dir)) return;\n\n var pkgfile = path.join(maybeRealpathSync(realpathSync, dir, opts), 'package.json');\n\n if (!isFile(pkgfile)) {\n return loadpkg(path.dirname(dir));\n }\n\n var body = readFileSync(pkgfile);\n\n try {\n var pkg = JSON.parse(body);\n } catch (jsonErr) {}\n\n if (pkg && opts.packageFilter) {\n // v2 will pass pkgfile\n pkg = opts.packageFilter(pkg, /*pkgfile,*/ dir); // eslint-disable-line spaced-comment\n }\n\n return { pkg: pkg, dir: dir };\n }\n\n function loadAsDirectorySync(x) {\n var pkgfile = path.join(maybeRealpathSync(realpathSync, x, opts), '/package.json');\n if (isFile(pkgfile)) {\n try {\n var body = readFileSync(pkgfile, 'UTF8');\n var pkg = JSON.parse(body);\n } catch (e) {}\n\n if (pkg && opts.packageFilter) {\n // v2 will pass pkgfile\n pkg = opts.packageFilter(pkg, /*pkgfile,*/ x); // eslint-disable-line spaced-comment\n }\n\n if (pkg && pkg.main) {\n if (typeof pkg.main !== 'string') {\n var mainError = new TypeError('package \u201C' + pkg.name + '\u201D `main` must be a string');\n mainError.code = 'INVALID_PACKAGE_MAIN';\n throw mainError;\n }\n if (pkg.main === '.' || pkg.main === './') {\n pkg.main = 'index';\n }\n try {\n var m = loadAsFileSync(path.resolve(x, pkg.main));\n if (m) return m;\n var n = loadAsDirectorySync(path.resolve(x, pkg.main));\n if (n) return n;\n } catch (e) {}\n }\n }\n\n return loadAsFileSync(path.join(x, '/index'));\n }\n\n function loadNodeModulesSync(x, start) {\n var thunk = function () { return getPackageCandidates(x, start, opts); };\n var dirs = packageIterator ? packageIterator(x, start, thunk, opts) : thunk();\n\n for (var i = 0; i < dirs.length; i++) {\n var dir = dirs[i];\n if (isDirectory(path.dirname(dir))) {\n var m = loadAsFileSync(dir);\n if (m) return m;\n var n = loadAsDirectorySync(dir);\n if (n) return n;\n }\n }\n }\n};\n", "var async = require('./lib/async');\nasync.core = require('./lib/core');\nasync.isCore = require('./lib/is-core');\nasync.sync = require('./lib/sync');\n\nmodule.exports = async;\n", "module.exports = extractDescription\n\n// Extracts description from contents of a readme file in markdown format\nfunction extractDescription (d) {\n if (!d) return;\n if (d === \"ERROR: No README data found!\") return;\n // the first block of text before the first heading\n // that isn't the first line heading\n d = d.trim().split('\\n')\n for (var s = 0; d[s] && d[s].trim().match(/^(#|$)/); s ++);\n var l = d.length\n for (var e = s + 1; e < l && d[e].trim(); e ++);\n return d.slice(s, e).join(' ').trim()\n}\n", "var semver = require(\"semver\")\nvar validateLicense = require('validate-npm-package-license');\nvar hostedGitInfo = require(\"hosted-git-info\")\nvar isBuiltinModule = require(\"resolve\").isCore\nvar depTypes = [\"dependencies\",\"devDependencies\",\"optionalDependencies\"]\nvar extractDescription = require(\"./extract_description\")\nvar url = require(\"url\")\nvar typos = require(\"./typos.json\")\n\nvar fixer = module.exports = {\n // default warning function\n warn: function() {},\n\n fixRepositoryField: function(data) {\n if (data.repositories) {\n this.warn(\"repositories\");\n data.repository = data.repositories[0]\n }\n if (!data.repository) return this.warn(\"missingRepository\")\n if (typeof data.repository === \"string\") {\n data.repository = {\n type: \"git\",\n url: data.repository\n }\n }\n var r = data.repository.url || \"\"\n if (r) {\n var hosted = hostedGitInfo.fromUrl(r)\n if (hosted) {\n r = data.repository.url\n = hosted.getDefaultRepresentation() == \"shortcut\" ? hosted.https() : hosted.toString()\n }\n }\n\n if (r.match(/github.com\\/[^\\/]+\\/[^\\/]+\\.git\\.git$/)) {\n this.warn(\"brokenGitUrl\", r)\n }\n }\n\n, fixTypos: function(data) {\n Object.keys(typos.topLevel).forEach(function (d) {\n if (data.hasOwnProperty(d)) {\n this.warn(\"typo\", d, typos.topLevel[d])\n }\n }, this)\n }\n\n, fixScriptsField: function(data) {\n if (!data.scripts) return\n if (typeof data.scripts !== \"object\") {\n this.warn(\"nonObjectScripts\")\n delete data.scripts\n return\n }\n Object.keys(data.scripts).forEach(function (k) {\n if (typeof data.scripts[k] !== \"string\") {\n this.warn(\"nonStringScript\")\n delete data.scripts[k]\n } else if (typos.script[k] && !data.scripts[typos.script[k]]) {\n this.warn(\"typo\", k, typos.script[k], \"scripts\")\n }\n }, this)\n }\n\n, fixFilesField: function(data) {\n var files = data.files\n if (files && !Array.isArray(files)) {\n this.warn(\"nonArrayFiles\")\n delete data.files\n } else if (data.files) {\n data.files = data.files.filter(function(file) {\n if (!file || typeof file !== \"string\") {\n this.warn(\"invalidFilename\", file)\n return false\n } else {\n return true\n }\n }, this)\n }\n }\n\n, fixBinField: function(data) {\n if (!data.bin) return;\n if (typeof data.bin === \"string\") {\n var b = {}\n var match\n if (match = data.name.match(/^@[^/]+[/](.*)$/)) {\n b[match[1]] = data.bin\n } else {\n b[data.name] = data.bin\n }\n data.bin = b\n }\n }\n\n, fixManField: function(data) {\n if (!data.man) return;\n if (typeof data.man === \"string\") {\n data.man = [ data.man ]\n }\n }\n, fixBundleDependenciesField: function(data) {\n var bdd = \"bundledDependencies\"\n var bd = \"bundleDependencies\"\n if (data[bdd] && !data[bd]) {\n data[bd] = data[bdd]\n delete data[bdd]\n }\n if (data[bd] && !Array.isArray(data[bd])) {\n this.warn(\"nonArrayBundleDependencies\")\n delete data[bd]\n } else if (data[bd]) {\n data[bd] = data[bd].filter(function(bd) {\n if (!bd || typeof bd !== 'string') {\n this.warn(\"nonStringBundleDependency\", bd)\n return false\n } else {\n if (!data.dependencies) {\n data.dependencies = {}\n }\n if (!data.dependencies.hasOwnProperty(bd)) {\n this.warn(\"nonDependencyBundleDependency\", bd)\n data.dependencies[bd] = \"*\"\n }\n return true\n }\n }, this)\n }\n }\n\n, fixDependencies: function(data, strict) {\n var loose = !strict\n objectifyDeps(data, this.warn)\n addOptionalDepsToDeps(data, this.warn)\n this.fixBundleDependenciesField(data)\n\n ;['dependencies','devDependencies'].forEach(function(deps) {\n if (!(deps in data)) return\n if (!data[deps] || typeof data[deps] !== \"object\") {\n this.warn(\"nonObjectDependencies\", deps)\n delete data[deps]\n return\n }\n Object.keys(data[deps]).forEach(function (d) {\n var r = data[deps][d]\n if (typeof r !== 'string') {\n this.warn(\"nonStringDependency\", d, JSON.stringify(r))\n delete data[deps][d]\n }\n var hosted = hostedGitInfo.fromUrl(data[deps][d])\n if (hosted) data[deps][d] = hosted.toString()\n }, this)\n }, this)\n }\n\n, fixModulesField: function (data) {\n if (data.modules) {\n this.warn(\"deprecatedModules\")\n delete data.modules\n }\n }\n\n, fixKeywordsField: function (data) {\n if (typeof data.keywords === \"string\") {\n data.keywords = data.keywords.split(/,\\s+/)\n }\n if (data.keywords && !Array.isArray(data.keywords)) {\n delete data.keywords\n this.warn(\"nonArrayKeywords\")\n } else if (data.keywords) {\n data.keywords = data.keywords.filter(function(kw) {\n if (typeof kw !== \"string\" || !kw) {\n this.warn(\"nonStringKeyword\");\n return false\n } else {\n return true\n }\n }, this)\n }\n }\n\n, fixVersionField: function(data, strict) {\n // allow \"loose\" semver 1.0 versions in non-strict mode\n // enforce strict semver 2.0 compliance in strict mode\n var loose = !strict\n if (!data.version) {\n data.version = \"\"\n return true\n }\n if (!semver.valid(data.version, loose)) {\n throw new Error('Invalid version: \"'+ data.version + '\"')\n }\n data.version = semver.clean(data.version, loose)\n return true\n }\n\n, fixPeople: function(data) {\n modifyPeople(data, unParsePerson)\n modifyPeople(data, parsePerson)\n }\n\n, fixNameField: function(data, options) {\n if (typeof options === \"boolean\") options = {strict: options}\n else if (typeof options === \"undefined\") options = {}\n var strict = options.strict\n if (!data.name && !strict) {\n data.name = \"\"\n return\n }\n if (typeof data.name !== \"string\") {\n throw new Error(\"name field must be a string.\")\n }\n if (!strict)\n data.name = data.name.trim()\n ensureValidName(data.name, strict, options.allowLegacyCase)\n if (isBuiltinModule(data.name))\n this.warn(\"conflictingName\", data.name)\n }\n\n\n, fixDescriptionField: function (data) {\n if (data.description && typeof data.description !== 'string') {\n this.warn(\"nonStringDescription\")\n delete data.description\n }\n if (data.readme && !data.description)\n data.description = extractDescription(data.readme)\n if(data.description === undefined) delete data.description;\n if (!data.description) this.warn(\"missingDescription\")\n }\n\n, fixReadmeField: function (data) {\n if (!data.readme) {\n this.warn(\"missingReadme\")\n data.readme = \"ERROR: No README data found!\"\n }\n }\n\n, fixBugsField: function(data) {\n if (!data.bugs && data.repository && data.repository.url) {\n var hosted = hostedGitInfo.fromUrl(data.repository.url)\n if(hosted && hosted.bugs()) {\n data.bugs = {url: hosted.bugs()}\n }\n }\n else if(data.bugs) {\n var emailRe = /^.+@.*\\..+$/\n if(typeof data.bugs == \"string\") {\n if(emailRe.test(data.bugs))\n data.bugs = {email:data.bugs}\n else if(url.parse(data.bugs).protocol)\n data.bugs = {url: data.bugs}\n else\n this.warn(\"nonEmailUrlBugsString\")\n }\n else {\n bugsTypos(data.bugs, this.warn)\n var oldBugs = data.bugs\n data.bugs = {}\n if(oldBugs.url) {\n if(typeof(oldBugs.url) == \"string\" && url.parse(oldBugs.url).protocol)\n data.bugs.url = oldBugs.url\n else\n this.warn(\"nonUrlBugsUrlField\")\n }\n if(oldBugs.email) {\n if(typeof(oldBugs.email) == \"string\" && emailRe.test(oldBugs.email))\n data.bugs.email = oldBugs.email\n else\n this.warn(\"nonEmailBugsEmailField\")\n }\n }\n if(!data.bugs.email && !data.bugs.url) {\n delete data.bugs\n this.warn(\"emptyNormalizedBugs\")\n }\n }\n }\n\n, fixHomepageField: function(data) {\n if (!data.homepage && data.repository && data.repository.url) {\n var hosted = hostedGitInfo.fromUrl(data.repository.url)\n if (hosted && hosted.docs()) data.homepage = hosted.docs()\n }\n if (!data.homepage) return\n\n if(typeof data.homepage !== \"string\") {\n this.warn(\"nonUrlHomepage\")\n return delete data.homepage\n }\n if(!url.parse(data.homepage).protocol) {\n data.homepage = \"http://\" + data.homepage\n }\n }\n\n, fixLicenseField: function(data) {\n if (!data.license) {\n return this.warn(\"missingLicense\")\n } else{\n if (\n typeof(data.license) !== 'string' ||\n data.license.length < 1 ||\n data.license.trim() === ''\n ) {\n this.warn(\"invalidLicense\")\n } else {\n if (!validateLicense(data.license).validForNewPackages)\n this.warn(\"invalidLicense\")\n }\n }\n }\n}\n\nfunction isValidScopedPackageName(spec) {\n if (spec.charAt(0) !== '@') return false\n\n var rest = spec.slice(1).split('/')\n if (rest.length !== 2) return false\n\n return rest[0] && rest[1] &&\n rest[0] === encodeURIComponent(rest[0]) &&\n rest[1] === encodeURIComponent(rest[1])\n}\n\nfunction isCorrectlyEncodedName(spec) {\n return !spec.match(/[\\/@\\s\\+%:]/) &&\n spec === encodeURIComponent(spec)\n}\n\nfunction ensureValidName (name, strict, allowLegacyCase) {\n if (name.charAt(0) === \".\" ||\n !(isValidScopedPackageName(name) || isCorrectlyEncodedName(name)) ||\n (strict && (!allowLegacyCase) && name !== name.toLowerCase()) ||\n name.toLowerCase() === \"node_modules\" ||\n name.toLowerCase() === \"favicon.ico\") {\n throw new Error(\"Invalid name: \" + JSON.stringify(name))\n }\n}\n\nfunction modifyPeople (data, fn) {\n if (data.author) data.author = fn(data.author)\n ;[\"maintainers\", \"contributors\"].forEach(function (set) {\n if (!Array.isArray(data[set])) return;\n data[set] = data[set].map(fn)\n })\n return data\n}\n\nfunction unParsePerson (person) {\n if (typeof person === \"string\") return person\n var name = person.name || \"\"\n var u = person.url || person.web\n var url = u ? (\" (\"+u+\")\") : \"\"\n var e = person.email || person.mail\n var email = e ? (\" <\"+e+\">\") : \"\"\n return name+email+url\n}\n\nfunction parsePerson (person) {\n if (typeof person !== \"string\") return person\n var name = person.match(/^([^\\(<]+)/)\n var url = person.match(/\\(([^\\)]+)\\)/)\n var email = person.match(/<([^>]+)>/)\n var obj = {}\n if (name && name[0].trim()) obj.name = name[0].trim()\n if (email) obj.email = email[1];\n if (url) obj.url = url[1];\n return obj\n}\n\nfunction addOptionalDepsToDeps (data, warn) {\n var o = data.optionalDependencies\n if (!o) return;\n var d = data.dependencies || {}\n Object.keys(o).forEach(function (k) {\n d[k] = o[k]\n })\n data.dependencies = d\n}\n\nfunction depObjectify (deps, type, warn) {\n if (!deps) return {}\n if (typeof deps === \"string\") {\n deps = deps.trim().split(/[\\n\\r\\s\\t ,]+/)\n }\n if (!Array.isArray(deps)) return deps\n warn(\"deprecatedArrayDependencies\", type)\n var o = {}\n deps.filter(function (d) {\n return typeof d === \"string\"\n }).forEach(function(d) {\n d = d.trim().split(/(:?[@\\s><=])/)\n var dn = d.shift()\n var dv = d.join(\"\")\n dv = dv.trim()\n dv = dv.replace(/^@/, \"\")\n o[dn] = dv\n })\n return o\n}\n\nfunction objectifyDeps (data, warn) {\n depTypes.forEach(function (type) {\n if (!data[type]) return;\n data[type] = depObjectify(data[type], type, warn)\n })\n}\n\nfunction bugsTypos(bugs, warn) {\n if (!bugs) return\n Object.keys(bugs).forEach(function (k) {\n if (typos.bugs[k]) {\n warn(\"typo\", k, typos.bugs[k], \"bugs\")\n bugs[typos.bugs[k]] = bugs[k]\n delete bugs[k]\n }\n })\n}\n", "var util = require(\"util\")\nvar messages = require(\"./warning_messages.json\")\n\nmodule.exports = function() {\n var args = Array.prototype.slice.call(arguments, 0)\n var warningName = args.shift()\n if (warningName == \"typo\") {\n return makeTypoWarning.apply(null,args)\n }\n else {\n var msgTemplate = messages[warningName] ? messages[warningName] : warningName + \": '%s'\"\n args.unshift(msgTemplate)\n return util.format.apply(null, args)\n }\n}\n\nfunction makeTypoWarning (providedName, probableName, field) {\n if (field) {\n providedName = field + \"['\" + providedName + \"']\"\n probableName = field + \"['\" + probableName + \"']\"\n }\n return util.format(messages.typo, providedName, probableName)\n}\n", "module.exports = normalize\n\nvar fixer = require(\"./fixer\")\nnormalize.fixer = fixer\n\nvar makeWarning = require(\"./make_warning\")\n\nvar fieldsToFix = ['name','version','description','repository','modules','scripts'\n ,'files','bin','man','bugs','keywords','readme','homepage','license']\nvar otherThingsToFix = ['dependencies','people', 'typos']\n\nvar thingsToFix = fieldsToFix.map(function(fieldName) {\n return ucFirst(fieldName) + \"Field\"\n})\n// two ways to do this in CoffeeScript on only one line, sub-70 chars:\n// thingsToFix = fieldsToFix.map (name) -> ucFirst(name) + \"Field\"\n// thingsToFix = (ucFirst(name) + \"Field\" for name in fieldsToFix)\nthingsToFix = thingsToFix.concat(otherThingsToFix)\n\nfunction normalize (data, warn, strict) {\n if(warn === true) warn = null, strict = true\n if(!strict) strict = false\n if(!warn || data.private) warn = function(msg) { /* noop */ }\n\n if (data.scripts &&\n data.scripts.install === \"node-gyp rebuild\" &&\n !data.scripts.preinstall) {\n data.gypfile = true\n }\n fixer.warn = function() { warn(makeWarning.apply(null, arguments)) }\n thingsToFix.forEach(function(thingName) {\n fixer[\"fix\" + ucFirst(thingName)](data, strict)\n })\n data._id = data.name + \"@\" + data.version\n}\n\nfunction ucFirst (string) {\n return string.charAt(0).toUpperCase() + string.slice(1);\n}\n", "'use strict';\nconst {promisify} = require('util');\nconst fs = require('fs');\nconst path = require('path');\nconst parseJson = require('parse-json');\n\nconst readFileAsync = promisify(fs.readFile);\n\nmodule.exports = async options => {\n\toptions = {\n\t\tcwd: process.cwd(),\n\t\tnormalize: true,\n\t\t...options\n\t};\n\n\tconst filePath = path.resolve(options.cwd, 'package.json');\n\tconst json = parseJson(await readFileAsync(filePath, 'utf8'));\n\n\tif (options.normalize) {\n\t\trequire('normalize-package-data')(json);\n\t}\n\n\treturn json;\n};\n\nmodule.exports.sync = options => {\n\toptions = {\n\t\tcwd: process.cwd(),\n\t\tnormalize: true,\n\t\t...options\n\t};\n\n\tconst filePath = path.resolve(options.cwd, 'package.json');\n\tconst json = parseJson(fs.readFileSync(filePath, 'utf8'));\n\n\tif (options.normalize) {\n\t\trequire('normalize-package-data')(json);\n\t}\n\n\treturn json;\n};\n", "'use strict';\nconst path = require('path');\nconst findUp = require('find-up');\nconst readPkg = require('read-pkg');\n\nmodule.exports = async options => {\n\tconst filePath = await findUp('package.json', options);\n\n\tif (!filePath) {\n\t\treturn;\n\t}\n\n\treturn {\n\t\tpackageJson: await readPkg({...options, cwd: path.dirname(filePath)}),\n\t\tpath: filePath\n\t};\n};\n\nmodule.exports.sync = options => {\n\tconst filePath = findUp.sync('package.json', options);\n\n\tif (!filePath) {\n\t\treturn;\n\t}\n\n\treturn {\n\t\tpackageJson: readPkg.sync({...options, cwd: path.dirname(filePath)}),\n\t\tpath: filePath\n\t};\n};\n", "'use strict';\nconst util = require('util');\n\nlet installed = false;\n\nconst hardRejection = (log = console.error) => {\n\tif (installed) {\n\t\treturn;\n\t}\n\n\tinstalled = true;\n\n\tprocess.on('unhandledRejection', error => {\n\t\tif (!(error instanceof Error)) {\n\t\t\terror = new Error(`Promise rejected with value: ${util.inspect(error)}`);\n\t\t}\n\n\t\tlog(error.stack);\n\t\tprocess.exit(1);\n\t});\n};\n\nmodule.exports = hardRejection;\n// TODO: Remove this for the next major release\nmodule.exports.default = hardRejection;\n", "// Note: this is the semver.org version of the spec that it implements\n// Not necessarily the package version of this code.\nconst SEMVER_SPEC_VERSION = '2.0.0'\n\nconst MAX_LENGTH = 256\nconst MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER ||\n /* istanbul ignore next */ 9007199254740991\n\n// Max safe segment length for coercion.\nconst MAX_SAFE_COMPONENT_LENGTH = 16\n\nmodule.exports = {\n SEMVER_SPEC_VERSION,\n MAX_LENGTH,\n MAX_SAFE_INTEGER,\n MAX_SAFE_COMPONENT_LENGTH\n}\n", "const debug = (\n typeof process === 'object' &&\n process.env &&\n process.env.NODE_DEBUG &&\n /\\bsemver\\b/i.test(process.env.NODE_DEBUG)\n) ? (...args) => console.error('SEMVER', ...args)\n : () => {}\n\nmodule.exports = debug\n", "const { MAX_SAFE_COMPONENT_LENGTH } = require('./constants')\nconst debug = require('./debug')\nexports = module.exports = {}\n\n// The actual regexps go on exports.re\nconst re = exports.re = []\nconst src = exports.src = []\nconst t = exports.t = {}\nlet R = 0\n\nconst createToken = (name, value, isGlobal) => {\n const index = R++\n debug(index, value)\n t[name] = index\n src[index] = value\n re[index] = new RegExp(value, isGlobal ? 'g' : undefined)\n}\n\n// The following Regular Expressions can be used for tokenizing,\n// validating, and parsing SemVer version strings.\n\n// ## Numeric Identifier\n// A single `0`, or a non-zero digit followed by zero or more digits.\n\ncreateToken('NUMERICIDENTIFIER', '0|[1-9]\\\\d*')\ncreateToken('NUMERICIDENTIFIERLOOSE', '[0-9]+')\n\n// ## Non-numeric Identifier\n// Zero or more digits, followed by a letter or hyphen, and then zero or\n// more letters, digits, or hyphens.\n\ncreateToken('NONNUMERICIDENTIFIER', '\\\\d*[a-zA-Z-][a-zA-Z0-9-]*')\n\n// ## Main Version\n// Three dot-separated numeric identifiers.\n\ncreateToken('MAINVERSION', `(${src[t.NUMERICIDENTIFIER]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIER]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIER]})`)\n\ncreateToken('MAINVERSIONLOOSE', `(${src[t.NUMERICIDENTIFIERLOOSE]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIERLOOSE]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIERLOOSE]})`)\n\n// ## Pre-release Version Identifier\n// A numeric identifier, or a non-numeric identifier.\n\ncreateToken('PRERELEASEIDENTIFIER', `(?:${src[t.NUMERICIDENTIFIER]\n}|${src[t.NONNUMERICIDENTIFIER]})`)\n\ncreateToken('PRERELEASEIDENTIFIERLOOSE', `(?:${src[t.NUMERICIDENTIFIERLOOSE]\n}|${src[t.NONNUMERICIDENTIFIER]})`)\n\n// ## Pre-release Version\n// Hyphen, followed by one or more dot-separated pre-release version\n// identifiers.\n\ncreateToken('PRERELEASE', `(?:-(${src[t.PRERELEASEIDENTIFIER]\n}(?:\\\\.${src[t.PRERELEASEIDENTIFIER]})*))`)\n\ncreateToken('PRERELEASELOOSE', `(?:-?(${src[t.PRERELEASEIDENTIFIERLOOSE]\n}(?:\\\\.${src[t.PRERELEASEIDENTIFIERLOOSE]})*))`)\n\n// ## Build Metadata Identifier\n// Any combination of digits, letters, or hyphens.\n\ncreateToken('BUILDIDENTIFIER', '[0-9A-Za-z-]+')\n\n// ## Build Metadata\n// Plus sign, followed by one or more period-separated build metadata\n// identifiers.\n\ncreateToken('BUILD', `(?:\\\\+(${src[t.BUILDIDENTIFIER]\n}(?:\\\\.${src[t.BUILDIDENTIFIER]})*))`)\n\n// ## Full Version String\n// A main version, followed optionally by a pre-release version and\n// build metadata.\n\n// Note that the only major, minor, patch, and pre-release sections of\n// the version string are capturing groups. The build metadata is not a\n// capturing group, because it should not ever be used in version\n// comparison.\n\ncreateToken('FULLPLAIN', `v?${src[t.MAINVERSION]\n}${src[t.PRERELEASE]}?${\n src[t.BUILD]}?`)\n\ncreateToken('FULL', `^${src[t.FULLPLAIN]}$`)\n\n// like full, but allows v1.2.3 and =1.2.3, which people do sometimes.\n// also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty\n// common in the npm registry.\ncreateToken('LOOSEPLAIN', `[v=\\\\s]*${src[t.MAINVERSIONLOOSE]\n}${src[t.PRERELEASELOOSE]}?${\n src[t.BUILD]}?`)\n\ncreateToken('LOOSE', `^${src[t.LOOSEPLAIN]}$`)\n\ncreateToken('GTLT', '((?:<|>)?=?)')\n\n// Something like \"2.*\" or \"1.2.x\".\n// Note that \"x.x\" is a valid xRange identifer, meaning \"any version\"\n// Only the first item is strictly required.\ncreateToken('XRANGEIDENTIFIERLOOSE', `${src[t.NUMERICIDENTIFIERLOOSE]}|x|X|\\\\*`)\ncreateToken('XRANGEIDENTIFIER', `${src[t.NUMERICIDENTIFIER]}|x|X|\\\\*`)\n\ncreateToken('XRANGEPLAIN', `[v=\\\\s]*(${src[t.XRANGEIDENTIFIER]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIER]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIER]})` +\n `(?:${src[t.PRERELEASE]})?${\n src[t.BUILD]}?` +\n `)?)?`)\n\ncreateToken('XRANGEPLAINLOOSE', `[v=\\\\s]*(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n `(?:${src[t.PRERELEASELOOSE]})?${\n src[t.BUILD]}?` +\n `)?)?`)\n\ncreateToken('XRANGE', `^${src[t.GTLT]}\\\\s*${src[t.XRANGEPLAIN]}$`)\ncreateToken('XRANGELOOSE', `^${src[t.GTLT]}\\\\s*${src[t.XRANGEPLAINLOOSE]}$`)\n\n// Coercion.\n// Extract anything that could conceivably be a part of a valid semver\ncreateToken('COERCE', `${'(^|[^\\\\d])' +\n '(\\\\d{1,'}${MAX_SAFE_COMPONENT_LENGTH}})` +\n `(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?` +\n `(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?` +\n `(?:$|[^\\\\d])`)\ncreateToken('COERCERTL', src[t.COERCE], true)\n\n// Tilde ranges.\n// Meaning is \"reasonably at or greater than\"\ncreateToken('LONETILDE', '(?:~>?)')\n\ncreateToken('TILDETRIM', `(\\\\s*)${src[t.LONETILDE]}\\\\s+`, true)\nexports.tildeTrimReplace = '$1~'\n\ncreateToken('TILDE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAIN]}$`)\ncreateToken('TILDELOOSE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAINLOOSE]}$`)\n\n// Caret ranges.\n// Meaning is \"at least and backwards compatible with\"\ncreateToken('LONECARET', '(?:\\\\^)')\n\ncreateToken('CARETTRIM', `(\\\\s*)${src[t.LONECARET]}\\\\s+`, true)\nexports.caretTrimReplace = '$1^'\n\ncreateToken('CARET', `^${src[t.LONECARET]}${src[t.XRANGEPLAIN]}$`)\ncreateToken('CARETLOOSE', `^${src[t.LONECARET]}${src[t.XRANGEPLAINLOOSE]}$`)\n\n// A simple gt/lt/eq thing, or just \"\" to indicate \"any version\"\ncreateToken('COMPARATORLOOSE', `^${src[t.GTLT]}\\\\s*(${src[t.LOOSEPLAIN]})$|^$`)\ncreateToken('COMPARATOR', `^${src[t.GTLT]}\\\\s*(${src[t.FULLPLAIN]})$|^$`)\n\n// An expression to strip any whitespace between the gtlt and the thing\n// it modifies, so that `> 1.2.3` ==> `>1.2.3`\ncreateToken('COMPARATORTRIM', `(\\\\s*)${src[t.GTLT]\n}\\\\s*(${src[t.LOOSEPLAIN]}|${src[t.XRANGEPLAIN]})`, true)\nexports.comparatorTrimReplace = '$1$2$3'\n\n// Something like `1.2.3 - 1.2.4`\n// Note that these all use the loose form, because they'll be\n// checked against either the strict or loose comparator form\n// later.\ncreateToken('HYPHENRANGE', `^\\\\s*(${src[t.XRANGEPLAIN]})` +\n `\\\\s+-\\\\s+` +\n `(${src[t.XRANGEPLAIN]})` +\n `\\\\s*$`)\n\ncreateToken('HYPHENRANGELOOSE', `^\\\\s*(${src[t.XRANGEPLAINLOOSE]})` +\n `\\\\s+-\\\\s+` +\n `(${src[t.XRANGEPLAINLOOSE]})` +\n `\\\\s*$`)\n\n// Star ranges basically just allow anything at all.\ncreateToken('STAR', '(<|>)?=?\\\\s*\\\\*')\n// >=0.0.0 is like a star\ncreateToken('GTE0', '^\\\\s*>=\\\\s*0\\.0\\.0\\\\s*$')\ncreateToken('GTE0PRE', '^\\\\s*>=\\\\s*0\\.0\\.0-0\\\\s*$')\n", "// parse out just the options we care about so we always get a consistent\n// obj with keys in a consistent order.\nconst opts = ['includePrerelease', 'loose', 'rtl']\nconst parseOptions = options =>\n !options ? {}\n : typeof options !== 'object' ? { loose: true }\n : opts.filter(k => options[k]).reduce((options, k) => {\n options[k] = true\n return options\n }, {})\nmodule.exports = parseOptions\n", "const numeric = /^[0-9]+$/\nconst compareIdentifiers = (a, b) => {\n const anum = numeric.test(a)\n const bnum = numeric.test(b)\n\n if (anum && bnum) {\n a = +a\n b = +b\n }\n\n return a === b ? 0\n : (anum && !bnum) ? -1\n : (bnum && !anum) ? 1\n : a < b ? -1\n : 1\n}\n\nconst rcompareIdentifiers = (a, b) => compareIdentifiers(b, a)\n\nmodule.exports = {\n compareIdentifiers,\n rcompareIdentifiers\n}\n", "const debug = require('../internal/debug')\nconst { MAX_LENGTH, MAX_SAFE_INTEGER } = require('../internal/constants')\nconst { re, t } = require('../internal/re')\n\nconst parseOptions = require('../internal/parse-options')\nconst { compareIdentifiers } = require('../internal/identifiers')\nclass SemVer {\n constructor (version, options) {\n options = parseOptions(options)\n\n if (version instanceof SemVer) {\n if (version.loose === !!options.loose &&\n version.includePrerelease === !!options.includePrerelease) {\n return version\n } else {\n version = version.version\n }\n } else if (typeof version !== 'string') {\n throw new TypeError(`Invalid Version: ${version}`)\n }\n\n if (version.length > MAX_LENGTH) {\n throw new TypeError(\n `version is longer than ${MAX_LENGTH} characters`\n )\n }\n\n debug('SemVer', version, options)\n this.options = options\n this.loose = !!options.loose\n // this isn't actually relevant for versions, but keep it so that we\n // don't run into trouble passing this.options around.\n this.includePrerelease = !!options.includePrerelease\n\n const m = version.trim().match(options.loose ? re[t.LOOSE] : re[t.FULL])\n\n if (!m) {\n throw new TypeError(`Invalid Version: ${version}`)\n }\n\n this.raw = version\n\n // these are actually numbers\n this.major = +m[1]\n this.minor = +m[2]\n this.patch = +m[3]\n\n if (this.major > MAX_SAFE_INTEGER || this.major < 0) {\n throw new TypeError('Invalid major version')\n }\n\n if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {\n throw new TypeError('Invalid minor version')\n }\n\n if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {\n throw new TypeError('Invalid patch version')\n }\n\n // numberify any prerelease numeric ids\n if (!m[4]) {\n this.prerelease = []\n } else {\n this.prerelease = m[4].split('.').map((id) => {\n if (/^[0-9]+$/.test(id)) {\n const num = +id\n if (num >= 0 && num < MAX_SAFE_INTEGER) {\n return num\n }\n }\n return id\n })\n }\n\n this.build = m[5] ? m[5].split('.') : []\n this.format()\n }\n\n format () {\n this.version = `${this.major}.${this.minor}.${this.patch}`\n if (this.prerelease.length) {\n this.version += `-${this.prerelease.join('.')}`\n }\n return this.version\n }\n\n toString () {\n return this.version\n }\n\n compare (other) {\n debug('SemVer.compare', this.version, this.options, other)\n if (!(other instanceof SemVer)) {\n if (typeof other === 'string' && other === this.version) {\n return 0\n }\n other = new SemVer(other, this.options)\n }\n\n if (other.version === this.version) {\n return 0\n }\n\n return this.compareMain(other) || this.comparePre(other)\n }\n\n compareMain (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n return (\n compareIdentifiers(this.major, other.major) ||\n compareIdentifiers(this.minor, other.minor) ||\n compareIdentifiers(this.patch, other.patch)\n )\n }\n\n comparePre (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n // NOT having a prerelease is > having one\n if (this.prerelease.length && !other.prerelease.length) {\n return -1\n } else if (!this.prerelease.length && other.prerelease.length) {\n return 1\n } else if (!this.prerelease.length && !other.prerelease.length) {\n return 0\n }\n\n let i = 0\n do {\n const a = this.prerelease[i]\n const b = other.prerelease[i]\n debug('prerelease compare', i, a, b)\n if (a === undefined && b === undefined) {\n return 0\n } else if (b === undefined) {\n return 1\n } else if (a === undefined) {\n return -1\n } else if (a === b) {\n continue\n } else {\n return compareIdentifiers(a, b)\n }\n } while (++i)\n }\n\n compareBuild (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n let i = 0\n do {\n const a = this.build[i]\n const b = other.build[i]\n debug('prerelease compare', i, a, b)\n if (a === undefined && b === undefined) {\n return 0\n } else if (b === undefined) {\n return 1\n } else if (a === undefined) {\n return -1\n } else if (a === b) {\n continue\n } else {\n return compareIdentifiers(a, b)\n }\n } while (++i)\n }\n\n // preminor will bump the version up to the next minor release, and immediately\n // down to pre-release. premajor and prepatch work the same way.\n inc (release, identifier) {\n switch (release) {\n case 'premajor':\n this.prerelease.length = 0\n this.patch = 0\n this.minor = 0\n this.major++\n this.inc('pre', identifier)\n break\n case 'preminor':\n this.prerelease.length = 0\n this.patch = 0\n this.minor++\n this.inc('pre', identifier)\n break\n case 'prepatch':\n // If this is already a prerelease, it will bump to the next version\n // drop any prereleases that might already exist, since they are not\n // relevant at this point.\n this.prerelease.length = 0\n this.inc('patch', identifier)\n this.inc('pre', identifier)\n break\n // If the input is a non-prerelease version, this acts the same as\n // prepatch.\n case 'prerelease':\n if (this.prerelease.length === 0) {\n this.inc('patch', identifier)\n }\n this.inc('pre', identifier)\n break\n\n case 'major':\n // If this is a pre-major version, bump up to the same major version.\n // Otherwise increment major.\n // 1.0.0-5 bumps to 1.0.0\n // 1.1.0 bumps to 2.0.0\n if (\n this.minor !== 0 ||\n this.patch !== 0 ||\n this.prerelease.length === 0\n ) {\n this.major++\n }\n this.minor = 0\n this.patch = 0\n this.prerelease = []\n break\n case 'minor':\n // If this is a pre-minor version, bump up to the same minor version.\n // Otherwise increment minor.\n // 1.2.0-5 bumps to 1.2.0\n // 1.2.1 bumps to 1.3.0\n if (this.patch !== 0 || this.prerelease.length === 0) {\n this.minor++\n }\n this.patch = 0\n this.prerelease = []\n break\n case 'patch':\n // If this is not a pre-release version, it will increment the patch.\n // If it is a pre-release it will bump up to the same patch version.\n // 1.2.0-5 patches to 1.2.0\n // 1.2.0 patches to 1.2.1\n if (this.prerelease.length === 0) {\n this.patch++\n }\n this.prerelease = []\n break\n // This probably shouldn't be used publicly.\n // 1.0.0 'pre' would become 1.0.0-0 which is the wrong direction.\n case 'pre':\n if (this.prerelease.length === 0) {\n this.prerelease = [0]\n } else {\n let i = this.prerelease.length\n while (--i >= 0) {\n if (typeof this.prerelease[i] === 'number') {\n this.prerelease[i]++\n i = -2\n }\n }\n if (i === -1) {\n // didn't increment anything\n this.prerelease.push(0)\n }\n }\n if (identifier) {\n // 1.2.0-beta.1 bumps to 1.2.0-beta.2,\n // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0\n if (this.prerelease[0] === identifier) {\n if (isNaN(this.prerelease[1])) {\n this.prerelease = [identifier, 0]\n }\n } else {\n this.prerelease = [identifier, 0]\n }\n }\n break\n\n default:\n throw new Error(`invalid increment argument: ${release}`)\n }\n this.format()\n this.raw = this.version\n return this\n }\n}\n\nmodule.exports = SemVer\n", "const {MAX_LENGTH} = require('../internal/constants')\nconst { re, t } = require('../internal/re')\nconst SemVer = require('../classes/semver')\n\nconst parseOptions = require('../internal/parse-options')\nconst parse = (version, options) => {\n options = parseOptions(options)\n\n if (version instanceof SemVer) {\n return version\n }\n\n if (typeof version !== 'string') {\n return null\n }\n\n if (version.length > MAX_LENGTH) {\n return null\n }\n\n const r = options.loose ? re[t.LOOSE] : re[t.FULL]\n if (!r.test(version)) {\n return null\n }\n\n try {\n return new SemVer(version, options)\n } catch (er) {\n return null\n }\n}\n\nmodule.exports = parse\n", "const parse = require('./parse')\nconst valid = (version, options) => {\n const v = parse(version, options)\n return v ? v.version : null\n}\nmodule.exports = valid\n", "const parse = require('./parse')\nconst clean = (version, options) => {\n const s = parse(version.trim().replace(/^[=v]+/, ''), options)\n return s ? s.version : null\n}\nmodule.exports = clean\n", "const SemVer = require('../classes/semver')\n\nconst inc = (version, release, options, identifier) => {\n if (typeof (options) === 'string') {\n identifier = options\n options = undefined\n }\n\n try {\n return new SemVer(version, options).inc(release, identifier).version\n } catch (er) {\n return null\n }\n}\nmodule.exports = inc\n", "const SemVer = require('../classes/semver')\nconst compare = (a, b, loose) =>\n new SemVer(a, loose).compare(new SemVer(b, loose))\n\nmodule.exports = compare\n", "const compare = require('./compare')\nconst eq = (a, b, loose) => compare(a, b, loose) === 0\nmodule.exports = eq\n", "const parse = require('./parse')\nconst eq = require('./eq')\n\nconst diff = (version1, version2) => {\n if (eq(version1, version2)) {\n return null\n } else {\n const v1 = parse(version1)\n const v2 = parse(version2)\n const hasPre = v1.prerelease.length || v2.prerelease.length\n const prefix = hasPre ? 'pre' : ''\n const defaultResult = hasPre ? 'prerelease' : ''\n for (const key in v1) {\n if (key === 'major' || key === 'minor' || key === 'patch') {\n if (v1[key] !== v2[key]) {\n return prefix + key\n }\n }\n }\n return defaultResult // may be undefined\n }\n}\nmodule.exports = diff\n", "const SemVer = require('../classes/semver')\nconst major = (a, loose) => new SemVer(a, loose).major\nmodule.exports = major\n", "const SemVer = require('../classes/semver')\nconst minor = (a, loose) => new SemVer(a, loose).minor\nmodule.exports = minor\n", "const SemVer = require('../classes/semver')\nconst patch = (a, loose) => new SemVer(a, loose).patch\nmodule.exports = patch\n", "const parse = require('./parse')\nconst prerelease = (version, options) => {\n const parsed = parse(version, options)\n return (parsed && parsed.prerelease.length) ? parsed.prerelease : null\n}\nmodule.exports = prerelease\n", "const compare = require('./compare')\nconst rcompare = (a, b, loose) => compare(b, a, loose)\nmodule.exports = rcompare\n", "const compare = require('./compare')\nconst compareLoose = (a, b) => compare(a, b, true)\nmodule.exports = compareLoose\n", "const SemVer = require('../classes/semver')\nconst compareBuild = (a, b, loose) => {\n const versionA = new SemVer(a, loose)\n const versionB = new SemVer(b, loose)\n return versionA.compare(versionB) || versionA.compareBuild(versionB)\n}\nmodule.exports = compareBuild\n", "const compareBuild = require('./compare-build')\nconst sort = (list, loose) => list.sort((a, b) => compareBuild(a, b, loose))\nmodule.exports = sort\n", "const compareBuild = require('./compare-build')\nconst rsort = (list, loose) => list.sort((a, b) => compareBuild(b, a, loose))\nmodule.exports = rsort\n", "const compare = require('./compare')\nconst gt = (a, b, loose) => compare(a, b, loose) > 0\nmodule.exports = gt\n", "const compare = require('./compare')\nconst lt = (a, b, loose) => compare(a, b, loose) < 0\nmodule.exports = lt\n", "const compare = require('./compare')\nconst neq = (a, b, loose) => compare(a, b, loose) !== 0\nmodule.exports = neq\n", "const compare = require('./compare')\nconst gte = (a, b, loose) => compare(a, b, loose) >= 0\nmodule.exports = gte\n", "const compare = require('./compare')\nconst lte = (a, b, loose) => compare(a, b, loose) <= 0\nmodule.exports = lte\n", "const eq = require('./eq')\nconst neq = require('./neq')\nconst gt = require('./gt')\nconst gte = require('./gte')\nconst lt = require('./lt')\nconst lte = require('./lte')\n\nconst cmp = (a, op, b, loose) => {\n switch (op) {\n case '===':\n if (typeof a === 'object')\n a = a.version\n if (typeof b === 'object')\n b = b.version\n return a === b\n\n case '!==':\n if (typeof a === 'object')\n a = a.version\n if (typeof b === 'object')\n b = b.version\n return a !== b\n\n case '':\n case '=':\n case '==':\n return eq(a, b, loose)\n\n case '!=':\n return neq(a, b, loose)\n\n case '>':\n return gt(a, b, loose)\n\n case '>=':\n return gte(a, b, loose)\n\n case '<':\n return lt(a, b, loose)\n\n case '<=':\n return lte(a, b, loose)\n\n default:\n throw new TypeError(`Invalid operator: ${op}`)\n }\n}\nmodule.exports = cmp\n", "const SemVer = require('../classes/semver')\nconst parse = require('./parse')\nconst {re, t} = require('../internal/re')\n\nconst coerce = (version, options) => {\n if (version instanceof SemVer) {\n return version\n }\n\n if (typeof version === 'number') {\n version = String(version)\n }\n\n if (typeof version !== 'string') {\n return null\n }\n\n options = options || {}\n\n let match = null\n if (!options.rtl) {\n match = version.match(re[t.COERCE])\n } else {\n // Find the right-most coercible string that does not share\n // a terminus with a more left-ward coercible string.\n // Eg, '1.2.3.4' wants to coerce '2.3.4', not '3.4' or '4'\n //\n // Walk through the string checking with a /g regexp\n // Manually set the index so as to pick up overlapping matches.\n // Stop when we get a match that ends at the string end, since no\n // coercible string can be more right-ward without the same terminus.\n let next\n while ((next = re[t.COERCERTL].exec(version)) &&\n (!match || match.index + match[0].length !== version.length)\n ) {\n if (!match ||\n next.index + next[0].length !== match.index + match[0].length) {\n match = next\n }\n re[t.COERCERTL].lastIndex = next.index + next[1].length + next[2].length\n }\n // leave it in a clean state\n re[t.COERCERTL].lastIndex = -1\n }\n\n if (match === null)\n return null\n\n return parse(`${match[2]}.${match[3] || '0'}.${match[4] || '0'}`, options)\n}\nmodule.exports = coerce\n", "'use strict'\nmodule.exports = function (Yallist) {\n Yallist.prototype[Symbol.iterator] = function* () {\n for (let walker = this.head; walker; walker = walker.next) {\n yield walker.value\n }\n }\n}\n", "'use strict'\nmodule.exports = Yallist\n\nYallist.Node = Node\nYallist.create = Yallist\n\nfunction Yallist (list) {\n var self = this\n if (!(self instanceof Yallist)) {\n self = new Yallist()\n }\n\n self.tail = null\n self.head = null\n self.length = 0\n\n if (list && typeof list.forEach === 'function') {\n list.forEach(function (item) {\n self.push(item)\n })\n } else if (arguments.length > 0) {\n for (var i = 0, l = arguments.length; i < l; i++) {\n self.push(arguments[i])\n }\n }\n\n return self\n}\n\nYallist.prototype.removeNode = function (node) {\n if (node.list !== this) {\n throw new Error('removing node which does not belong to this list')\n }\n\n var next = node.next\n var prev = node.prev\n\n if (next) {\n next.prev = prev\n }\n\n if (prev) {\n prev.next = next\n }\n\n if (node === this.head) {\n this.head = next\n }\n if (node === this.tail) {\n this.tail = prev\n }\n\n node.list.length--\n node.next = null\n node.prev = null\n node.list = null\n\n return next\n}\n\nYallist.prototype.unshiftNode = function (node) {\n if (node === this.head) {\n return\n }\n\n if (node.list) {\n node.list.removeNode(node)\n }\n\n var head = this.head\n node.list = this\n node.next = head\n if (head) {\n head.prev = node\n }\n\n this.head = node\n if (!this.tail) {\n this.tail = node\n }\n this.length++\n}\n\nYallist.prototype.pushNode = function (node) {\n if (node === this.tail) {\n return\n }\n\n if (node.list) {\n node.list.removeNode(node)\n }\n\n var tail = this.tail\n node.list = this\n node.prev = tail\n if (tail) {\n tail.next = node\n }\n\n this.tail = node\n if (!this.head) {\n this.head = node\n }\n this.length++\n}\n\nYallist.prototype.push = function () {\n for (var i = 0, l = arguments.length; i < l; i++) {\n push(this, arguments[i])\n }\n return this.length\n}\n\nYallist.prototype.unshift = function () {\n for (var i = 0, l = arguments.length; i < l; i++) {\n unshift(this, arguments[i])\n }\n return this.length\n}\n\nYallist.prototype.pop = function () {\n if (!this.tail) {\n return undefined\n }\n\n var res = this.tail.value\n this.tail = this.tail.prev\n if (this.tail) {\n this.tail.next = null\n } else {\n this.head = null\n }\n this.length--\n return res\n}\n\nYallist.prototype.shift = function () {\n if (!this.head) {\n return undefined\n }\n\n var res = this.head.value\n this.head = this.head.next\n if (this.head) {\n this.head.prev = null\n } else {\n this.tail = null\n }\n this.length--\n return res\n}\n\nYallist.prototype.forEach = function (fn, thisp) {\n thisp = thisp || this\n for (var walker = this.head, i = 0; walker !== null; i++) {\n fn.call(thisp, walker.value, i, this)\n walker = walker.next\n }\n}\n\nYallist.prototype.forEachReverse = function (fn, thisp) {\n thisp = thisp || this\n for (var walker = this.tail, i = this.length - 1; walker !== null; i--) {\n fn.call(thisp, walker.value, i, this)\n walker = walker.prev\n }\n}\n\nYallist.prototype.get = function (n) {\n for (var i = 0, walker = this.head; walker !== null && i < n; i++) {\n // abort out of the list early if we hit a cycle\n walker = walker.next\n }\n if (i === n && walker !== null) {\n return walker.value\n }\n}\n\nYallist.prototype.getReverse = function (n) {\n for (var i = 0, walker = this.tail; walker !== null && i < n; i++) {\n // abort out of the list early if we hit a cycle\n walker = walker.prev\n }\n if (i === n && walker !== null) {\n return walker.value\n }\n}\n\nYallist.prototype.map = function (fn, thisp) {\n thisp = thisp || this\n var res = new Yallist()\n for (var walker = this.head; walker !== null;) {\n res.push(fn.call(thisp, walker.value, this))\n walker = walker.next\n }\n return res\n}\n\nYallist.prototype.mapReverse = function (fn, thisp) {\n thisp = thisp || this\n var res = new Yallist()\n for (var walker = this.tail; walker !== null;) {\n res.push(fn.call(thisp, walker.value, this))\n walker = walker.prev\n }\n return res\n}\n\nYallist.prototype.reduce = function (fn, initial) {\n var acc\n var walker = this.head\n if (arguments.length > 1) {\n acc = initial\n } else if (this.head) {\n walker = this.head.next\n acc = this.head.value\n } else {\n throw new TypeError('Reduce of empty list with no initial value')\n }\n\n for (var i = 0; walker !== null; i++) {\n acc = fn(acc, walker.value, i)\n walker = walker.next\n }\n\n return acc\n}\n\nYallist.prototype.reduceReverse = function (fn, initial) {\n var acc\n var walker = this.tail\n if (arguments.length > 1) {\n acc = initial\n } else if (this.tail) {\n walker = this.tail.prev\n acc = this.tail.value\n } else {\n throw new TypeError('Reduce of empty list with no initial value')\n }\n\n for (var i = this.length - 1; walker !== null; i--) {\n acc = fn(acc, walker.value, i)\n walker = walker.prev\n }\n\n return acc\n}\n\nYallist.prototype.toArray = function () {\n var arr = new Array(this.length)\n for (var i = 0, walker = this.head; walker !== null; i++) {\n arr[i] = walker.value\n walker = walker.next\n }\n return arr\n}\n\nYallist.prototype.toArrayReverse = function () {\n var arr = new Array(this.length)\n for (var i = 0, walker = this.tail; walker !== null; i++) {\n arr[i] = walker.value\n walker = walker.prev\n }\n return arr\n}\n\nYallist.prototype.slice = function (from, to) {\n to = to || this.length\n if (to < 0) {\n to += this.length\n }\n from = from || 0\n if (from < 0) {\n from += this.length\n }\n var ret = new Yallist()\n if (to < from || to < 0) {\n return ret\n }\n if (from < 0) {\n from = 0\n }\n if (to > this.length) {\n to = this.length\n }\n for (var i = 0, walker = this.head; walker !== null && i < from; i++) {\n walker = walker.next\n }\n for (; walker !== null && i < to; i++, walker = walker.next) {\n ret.push(walker.value)\n }\n return ret\n}\n\nYallist.prototype.sliceReverse = function (from, to) {\n to = to || this.length\n if (to < 0) {\n to += this.length\n }\n from = from || 0\n if (from < 0) {\n from += this.length\n }\n var ret = new Yallist()\n if (to < from || to < 0) {\n return ret\n }\n if (from < 0) {\n from = 0\n }\n if (to > this.length) {\n to = this.length\n }\n for (var i = this.length, walker = this.tail; walker !== null && i > to; i--) {\n walker = walker.prev\n }\n for (; walker !== null && i > from; i--, walker = walker.prev) {\n ret.push(walker.value)\n }\n return ret\n}\n\nYallist.prototype.splice = function (start, deleteCount, ...nodes) {\n if (start > this.length) {\n start = this.length - 1\n }\n if (start < 0) {\n start = this.length + start;\n }\n\n for (var i = 0, walker = this.head; walker !== null && i < start; i++) {\n walker = walker.next\n }\n\n var ret = []\n for (var i = 0; walker && i < deleteCount; i++) {\n ret.push(walker.value)\n walker = this.removeNode(walker)\n }\n if (walker === null) {\n walker = this.tail\n }\n\n if (walker !== this.head && walker !== this.tail) {\n walker = walker.prev\n }\n\n for (var i = 0; i < nodes.length; i++) {\n walker = insert(this, walker, nodes[i])\n }\n return ret;\n}\n\nYallist.prototype.reverse = function () {\n var head = this.head\n var tail = this.tail\n for (var walker = head; walker !== null; walker = walker.prev) {\n var p = walker.prev\n walker.prev = walker.next\n walker.next = p\n }\n this.head = tail\n this.tail = head\n return this\n}\n\nfunction insert (self, node, value) {\n var inserted = node === self.head ?\n new Node(value, null, node, self) :\n new Node(value, node, node.next, self)\n\n if (inserted.next === null) {\n self.tail = inserted\n }\n if (inserted.prev === null) {\n self.head = inserted\n }\n\n self.length++\n\n return inserted\n}\n\nfunction push (self, item) {\n self.tail = new Node(item, self.tail, null, self)\n if (!self.head) {\n self.head = self.tail\n }\n self.length++\n}\n\nfunction unshift (self, item) {\n self.head = new Node(item, null, self.head, self)\n if (!self.tail) {\n self.tail = self.head\n }\n self.length++\n}\n\nfunction Node (value, prev, next, list) {\n if (!(this instanceof Node)) {\n return new Node(value, prev, next, list)\n }\n\n this.list = list\n this.value = value\n\n if (prev) {\n prev.next = this\n this.prev = prev\n } else {\n this.prev = null\n }\n\n if (next) {\n next.prev = this\n this.next = next\n } else {\n this.next = null\n }\n}\n\ntry {\n // add if support for Symbol.iterator is present\n require('./iterator.js')(Yallist)\n} catch (er) {}\n", "'use strict'\n\n// A linked list to keep track of recently-used-ness\nconst Yallist = require('yallist')\n\nconst MAX = Symbol('max')\nconst LENGTH = Symbol('length')\nconst LENGTH_CALCULATOR = Symbol('lengthCalculator')\nconst ALLOW_STALE = Symbol('allowStale')\nconst MAX_AGE = Symbol('maxAge')\nconst DISPOSE = Symbol('dispose')\nconst NO_DISPOSE_ON_SET = Symbol('noDisposeOnSet')\nconst LRU_LIST = Symbol('lruList')\nconst CACHE = Symbol('cache')\nconst UPDATE_AGE_ON_GET = Symbol('updateAgeOnGet')\n\nconst naiveLength = () => 1\n\n// lruList is a yallist where the head is the youngest\n// item, and the tail is the oldest. the list contains the Hit\n// objects as the entries.\n// Each Hit object has a reference to its Yallist.Node. This\n// never changes.\n//\n// cache is a Map (or PseudoMap) that matches the keys to\n// the Yallist.Node object.\nclass LRUCache {\n constructor (options) {\n if (typeof options === 'number')\n options = { max: options }\n\n if (!options)\n options = {}\n\n if (options.max && (typeof options.max !== 'number' || options.max < 0))\n throw new TypeError('max must be a non-negative number')\n // Kind of weird to have a default max of Infinity, but oh well.\n const max = this[MAX] = options.max || Infinity\n\n const lc = options.length || naiveLength\n this[LENGTH_CALCULATOR] = (typeof lc !== 'function') ? naiveLength : lc\n this[ALLOW_STALE] = options.stale || false\n if (options.maxAge && typeof options.maxAge !== 'number')\n throw new TypeError('maxAge must be a number')\n this[MAX_AGE] = options.maxAge || 0\n this[DISPOSE] = options.dispose\n this[NO_DISPOSE_ON_SET] = options.noDisposeOnSet || false\n this[UPDATE_AGE_ON_GET] = options.updateAgeOnGet || false\n this.reset()\n }\n\n // resize the cache when the max changes.\n set max (mL) {\n if (typeof mL !== 'number' || mL < 0)\n throw new TypeError('max must be a non-negative number')\n\n this[MAX] = mL || Infinity\n trim(this)\n }\n get max () {\n return this[MAX]\n }\n\n set allowStale (allowStale) {\n this[ALLOW_STALE] = !!allowStale\n }\n get allowStale () {\n return this[ALLOW_STALE]\n }\n\n set maxAge (mA) {\n if (typeof mA !== 'number')\n throw new TypeError('maxAge must be a non-negative number')\n\n this[MAX_AGE] = mA\n trim(this)\n }\n get maxAge () {\n return this[MAX_AGE]\n }\n\n // resize the cache when the lengthCalculator changes.\n set lengthCalculator (lC) {\n if (typeof lC !== 'function')\n lC = naiveLength\n\n if (lC !== this[LENGTH_CALCULATOR]) {\n this[LENGTH_CALCULATOR] = lC\n this[LENGTH] = 0\n this[LRU_LIST].forEach(hit => {\n hit.length = this[LENGTH_CALCULATOR](hit.value, hit.key)\n this[LENGTH] += hit.length\n })\n }\n trim(this)\n }\n get lengthCalculator () { return this[LENGTH_CALCULATOR] }\n\n get length () { return this[LENGTH] }\n get itemCount () { return this[LRU_LIST].length }\n\n rforEach (fn, thisp) {\n thisp = thisp || this\n for (let walker = this[LRU_LIST].tail; walker !== null;) {\n const prev = walker.prev\n forEachStep(this, fn, walker, thisp)\n walker = prev\n }\n }\n\n forEach (fn, thisp) {\n thisp = thisp || this\n for (let walker = this[LRU_LIST].head; walker !== null;) {\n const next = walker.next\n forEachStep(this, fn, walker, thisp)\n walker = next\n }\n }\n\n keys () {\n return this[LRU_LIST].toArray().map(k => k.key)\n }\n\n values () {\n return this[LRU_LIST].toArray().map(k => k.value)\n }\n\n reset () {\n if (this[DISPOSE] &&\n this[LRU_LIST] &&\n this[LRU_LIST].length) {\n this[LRU_LIST].forEach(hit => this[DISPOSE](hit.key, hit.value))\n }\n\n this[CACHE] = new Map() // hash of items by key\n this[LRU_LIST] = new Yallist() // list of items in order of use recency\n this[LENGTH] = 0 // length of items in the list\n }\n\n dump () {\n return this[LRU_LIST].map(hit =>\n isStale(this, hit) ? false : {\n k: hit.key,\n v: hit.value,\n e: hit.now + (hit.maxAge || 0)\n }).toArray().filter(h => h)\n }\n\n dumpLru () {\n return this[LRU_LIST]\n }\n\n set (key, value, maxAge) {\n maxAge = maxAge || this[MAX_AGE]\n\n if (maxAge && typeof maxAge !== 'number')\n throw new TypeError('maxAge must be a number')\n\n const now = maxAge ? Date.now() : 0\n const len = this[LENGTH_CALCULATOR](value, key)\n\n if (this[CACHE].has(key)) {\n if (len > this[MAX]) {\n del(this, this[CACHE].get(key))\n return false\n }\n\n const node = this[CACHE].get(key)\n const item = node.value\n\n // dispose of the old one before overwriting\n // split out into 2 ifs for better coverage tracking\n if (this[DISPOSE]) {\n if (!this[NO_DISPOSE_ON_SET])\n this[DISPOSE](key, item.value)\n }\n\n item.now = now\n item.maxAge = maxAge\n item.value = value\n this[LENGTH] += len - item.length\n item.length = len\n this.get(key)\n trim(this)\n return true\n }\n\n const hit = new Entry(key, value, len, now, maxAge)\n\n // oversized objects fall out of cache automatically.\n if (hit.length > this[MAX]) {\n if (this[DISPOSE])\n this[DISPOSE](key, value)\n\n return false\n }\n\n this[LENGTH] += hit.length\n this[LRU_LIST].unshift(hit)\n this[CACHE].set(key, this[LRU_LIST].head)\n trim(this)\n return true\n }\n\n has (key) {\n if (!this[CACHE].has(key)) return false\n const hit = this[CACHE].get(key).value\n return !isStale(this, hit)\n }\n\n get (key) {\n return get(this, key, true)\n }\n\n peek (key) {\n return get(this, key, false)\n }\n\n pop () {\n const node = this[LRU_LIST].tail\n if (!node)\n return null\n\n del(this, node)\n return node.value\n }\n\n del (key) {\n del(this, this[CACHE].get(key))\n }\n\n load (arr) {\n // reset the cache\n this.reset()\n\n const now = Date.now()\n // A previous serialized cache has the most recent items first\n for (let l = arr.length - 1; l >= 0; l--) {\n const hit = arr[l]\n const expiresAt = hit.e || 0\n if (expiresAt === 0)\n // the item was created without expiration in a non aged cache\n this.set(hit.k, hit.v)\n else {\n const maxAge = expiresAt - now\n // dont add already expired items\n if (maxAge > 0) {\n this.set(hit.k, hit.v, maxAge)\n }\n }\n }\n }\n\n prune () {\n this[CACHE].forEach((value, key) => get(this, key, false))\n }\n}\n\nconst get = (self, key, doUse) => {\n const node = self[CACHE].get(key)\n if (node) {\n const hit = node.value\n if (isStale(self, hit)) {\n del(self, node)\n if (!self[ALLOW_STALE])\n return undefined\n } else {\n if (doUse) {\n if (self[UPDATE_AGE_ON_GET])\n node.value.now = Date.now()\n self[LRU_LIST].unshiftNode(node)\n }\n }\n return hit.value\n }\n}\n\nconst isStale = (self, hit) => {\n if (!hit || (!hit.maxAge && !self[MAX_AGE]))\n return false\n\n const diff = Date.now() - hit.now\n return hit.maxAge ? diff > hit.maxAge\n : self[MAX_AGE] && (diff > self[MAX_AGE])\n}\n\nconst trim = self => {\n if (self[LENGTH] > self[MAX]) {\n for (let walker = self[LRU_LIST].tail;\n self[LENGTH] > self[MAX] && walker !== null;) {\n // We know that we're about to delete this one, and also\n // what the next least recently used key will be, so just\n // go ahead and set it now.\n const prev = walker.prev\n del(self, walker)\n walker = prev\n }\n }\n}\n\nconst del = (self, node) => {\n if (node) {\n const hit = node.value\n if (self[DISPOSE])\n self[DISPOSE](hit.key, hit.value)\n\n self[LENGTH] -= hit.length\n self[CACHE].delete(hit.key)\n self[LRU_LIST].removeNode(node)\n }\n}\n\nclass Entry {\n constructor (key, value, length, now, maxAge) {\n this.key = key\n this.value = value\n this.length = length\n this.now = now\n this.maxAge = maxAge || 0\n }\n}\n\nconst forEachStep = (self, fn, node, thisp) => {\n let hit = node.value\n if (isStale(self, hit)) {\n del(self, node)\n if (!self[ALLOW_STALE])\n hit = undefined\n }\n if (hit)\n fn.call(thisp, hit.value, hit.key, self)\n}\n\nmodule.exports = LRUCache\n", "// hoisted class for cyclic dependency\nclass Range {\n constructor (range, options) {\n options = parseOptions(options)\n\n if (range instanceof Range) {\n if (\n range.loose === !!options.loose &&\n range.includePrerelease === !!options.includePrerelease\n ) {\n return range\n } else {\n return new Range(range.raw, options)\n }\n }\n\n if (range instanceof Comparator) {\n // just put it in the set and return\n this.raw = range.value\n this.set = [[range]]\n this.format()\n return this\n }\n\n this.options = options\n this.loose = !!options.loose\n this.includePrerelease = !!options.includePrerelease\n\n // First, split based on boolean or ||\n this.raw = range\n this.set = range\n .split(/\\s*\\|\\|\\s*/)\n // map the range to a 2d array of comparators\n .map(range => this.parseRange(range.trim()))\n // throw out any comparator lists that are empty\n // this generally means that it was not a valid range, which is allowed\n // in loose mode, but will still throw if the WHOLE range is invalid.\n .filter(c => c.length)\n\n if (!this.set.length) {\n throw new TypeError(`Invalid SemVer Range: ${range}`)\n }\n\n // if we have any that are not the null set, throw out null sets.\n if (this.set.length > 1) {\n // keep the first one, in case they're all null sets\n const first = this.set[0]\n this.set = this.set.filter(c => !isNullSet(c[0]))\n if (this.set.length === 0)\n this.set = [first]\n else if (this.set.length > 1) {\n // if we have any that are *, then the range is just *\n for (const c of this.set) {\n if (c.length === 1 && isAny(c[0])) {\n this.set = [c]\n break\n }\n }\n }\n }\n\n this.format()\n }\n\n format () {\n this.range = this.set\n .map((comps) => {\n return comps.join(' ').trim()\n })\n .join('||')\n .trim()\n return this.range\n }\n\n toString () {\n return this.range\n }\n\n parseRange (range) {\n range = range.trim()\n\n // memoize range parsing for performance.\n // this is a very hot path, and fully deterministic.\n const memoOpts = Object.keys(this.options).join(',')\n const memoKey = `parseRange:${memoOpts}:${range}`\n const cached = cache.get(memoKey)\n if (cached)\n return cached\n\n const loose = this.options.loose\n // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4`\n const hr = loose ? re[t.HYPHENRANGELOOSE] : re[t.HYPHENRANGE]\n range = range.replace(hr, hyphenReplace(this.options.includePrerelease))\n debug('hyphen replace', range)\n // `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5`\n range = range.replace(re[t.COMPARATORTRIM], comparatorTrimReplace)\n debug('comparator trim', range, re[t.COMPARATORTRIM])\n\n // `~ 1.2.3` => `~1.2.3`\n range = range.replace(re[t.TILDETRIM], tildeTrimReplace)\n\n // `^ 1.2.3` => `^1.2.3`\n range = range.replace(re[t.CARETTRIM], caretTrimReplace)\n\n // normalize spaces\n range = range.split(/\\s+/).join(' ')\n\n // At this point, the range is completely trimmed and\n // ready to be split into comparators.\n\n const compRe = loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR]\n const rangeList = range\n .split(' ')\n .map(comp => parseComparator(comp, this.options))\n .join(' ')\n .split(/\\s+/)\n // >=0.0.0 is equivalent to *\n .map(comp => replaceGTE0(comp, this.options))\n // in loose mode, throw out any that are not valid comparators\n .filter(this.options.loose ? comp => !!comp.match(compRe) : () => true)\n .map(comp => new Comparator(comp, this.options))\n\n // if any comparators are the null set, then replace with JUST null set\n // if more than one comparator, remove any * comparators\n // also, don't include the same comparator more than once\n const l = rangeList.length\n const rangeMap = new Map()\n for (const comp of rangeList) {\n if (isNullSet(comp))\n return [comp]\n rangeMap.set(comp.value, comp)\n }\n if (rangeMap.size > 1 && rangeMap.has(''))\n rangeMap.delete('')\n\n const result = [...rangeMap.values()]\n cache.set(memoKey, result)\n return result\n }\n\n intersects (range, options) {\n if (!(range instanceof Range)) {\n throw new TypeError('a Range is required')\n }\n\n return this.set.some((thisComparators) => {\n return (\n isSatisfiable(thisComparators, options) &&\n range.set.some((rangeComparators) => {\n return (\n isSatisfiable(rangeComparators, options) &&\n thisComparators.every((thisComparator) => {\n return rangeComparators.every((rangeComparator) => {\n return thisComparator.intersects(rangeComparator, options)\n })\n })\n )\n })\n )\n })\n }\n\n // if ANY of the sets match ALL of its comparators, then pass\n test (version) {\n if (!version) {\n return false\n }\n\n if (typeof version === 'string') {\n try {\n version = new SemVer(version, this.options)\n } catch (er) {\n return false\n }\n }\n\n for (let i = 0; i < this.set.length; i++) {\n if (testSet(this.set[i], version, this.options)) {\n return true\n }\n }\n return false\n }\n}\nmodule.exports = Range\n\nconst LRU = require('lru-cache')\nconst cache = new LRU({ max: 1000 })\n\nconst parseOptions = require('../internal/parse-options')\nconst Comparator = require('./comparator')\nconst debug = require('../internal/debug')\nconst SemVer = require('./semver')\nconst {\n re,\n t,\n comparatorTrimReplace,\n tildeTrimReplace,\n caretTrimReplace\n} = require('../internal/re')\n\nconst isNullSet = c => c.value === '<0.0.0-0'\nconst isAny = c => c.value === ''\n\n// take a set of comparators and determine whether there\n// exists a version which can satisfy it\nconst isSatisfiable = (comparators, options) => {\n let result = true\n const remainingComparators = comparators.slice()\n let testComparator = remainingComparators.pop()\n\n while (result && remainingComparators.length) {\n result = remainingComparators.every((otherComparator) => {\n return testComparator.intersects(otherComparator, options)\n })\n\n testComparator = remainingComparators.pop()\n }\n\n return result\n}\n\n// comprised of xranges, tildes, stars, and gtlt's at this point.\n// already replaced the hyphen ranges\n// turn into a set of JUST comparators.\nconst parseComparator = (comp, options) => {\n debug('comp', comp, options)\n comp = replaceCarets(comp, options)\n debug('caret', comp)\n comp = replaceTildes(comp, options)\n debug('tildes', comp)\n comp = replaceXRanges(comp, options)\n debug('xrange', comp)\n comp = replaceStars(comp, options)\n debug('stars', comp)\n return comp\n}\n\nconst isX = id => !id || id.toLowerCase() === 'x' || id === '*'\n\n// ~, ~> --> * (any, kinda silly)\n// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0-0\n// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0-0\n// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0-0\n// ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0-0\n// ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0-0\nconst replaceTildes = (comp, options) =>\n comp.trim().split(/\\s+/).map((comp) => {\n return replaceTilde(comp, options)\n }).join(' ')\n\nconst replaceTilde = (comp, options) => {\n const r = options.loose ? re[t.TILDELOOSE] : re[t.TILDE]\n return comp.replace(r, (_, M, m, p, pr) => {\n debug('tilde', comp, _, M, m, p, pr)\n let ret\n\n if (isX(M)) {\n ret = ''\n } else if (isX(m)) {\n ret = `>=${M}.0.0 <${+M + 1}.0.0-0`\n } else if (isX(p)) {\n // ~1.2 == >=1.2.0 <1.3.0-0\n ret = `>=${M}.${m}.0 <${M}.${+m + 1}.0-0`\n } else if (pr) {\n debug('replaceTilde pr', pr)\n ret = `>=${M}.${m}.${p}-${pr\n } <${M}.${+m + 1}.0-0`\n } else {\n // ~1.2.3 == >=1.2.3 <1.3.0-0\n ret = `>=${M}.${m}.${p\n } <${M}.${+m + 1}.0-0`\n }\n\n debug('tilde return', ret)\n return ret\n })\n}\n\n// ^ --> * (any, kinda silly)\n// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0-0\n// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0-0\n// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0-0\n// ^1.2.3 --> >=1.2.3 <2.0.0-0\n// ^1.2.0 --> >=1.2.0 <2.0.0-0\nconst replaceCarets = (comp, options) =>\n comp.trim().split(/\\s+/).map((comp) => {\n return replaceCaret(comp, options)\n }).join(' ')\n\nconst replaceCaret = (comp, options) => {\n debug('caret', comp, options)\n const r = options.loose ? re[t.CARETLOOSE] : re[t.CARET]\n const z = options.includePrerelease ? '-0' : ''\n return comp.replace(r, (_, M, m, p, pr) => {\n debug('caret', comp, _, M, m, p, pr)\n let ret\n\n if (isX(M)) {\n ret = ''\n } else if (isX(m)) {\n ret = `>=${M}.0.0${z} <${+M + 1}.0.0-0`\n } else if (isX(p)) {\n if (M === '0') {\n ret = `>=${M}.${m}.0${z} <${M}.${+m + 1}.0-0`\n } else {\n ret = `>=${M}.${m}.0${z} <${+M + 1}.0.0-0`\n }\n } else if (pr) {\n debug('replaceCaret pr', pr)\n if (M === '0') {\n if (m === '0') {\n ret = `>=${M}.${m}.${p}-${pr\n } <${M}.${m}.${+p + 1}-0`\n } else {\n ret = `>=${M}.${m}.${p}-${pr\n } <${M}.${+m + 1}.0-0`\n }\n } else {\n ret = `>=${M}.${m}.${p}-${pr\n } <${+M + 1}.0.0-0`\n }\n } else {\n debug('no pr')\n if (M === '0') {\n if (m === '0') {\n ret = `>=${M}.${m}.${p\n }${z} <${M}.${m}.${+p + 1}-0`\n } else {\n ret = `>=${M}.${m}.${p\n }${z} <${M}.${+m + 1}.0-0`\n }\n } else {\n ret = `>=${M}.${m}.${p\n } <${+M + 1}.0.0-0`\n }\n }\n\n debug('caret return', ret)\n return ret\n })\n}\n\nconst replaceXRanges = (comp, options) => {\n debug('replaceXRanges', comp, options)\n return comp.split(/\\s+/).map((comp) => {\n return replaceXRange(comp, options)\n }).join(' ')\n}\n\nconst replaceXRange = (comp, options) => {\n comp = comp.trim()\n const r = options.loose ? re[t.XRANGELOOSE] : re[t.XRANGE]\n return comp.replace(r, (ret, gtlt, M, m, p, pr) => {\n debug('xRange', comp, ret, gtlt, M, m, p, pr)\n const xM = isX(M)\n const xm = xM || isX(m)\n const xp = xm || isX(p)\n const anyX = xp\n\n if (gtlt === '=' && anyX) {\n gtlt = ''\n }\n\n // if we're including prereleases in the match, then we need\n // to fix this to -0, the lowest possible prerelease value\n pr = options.includePrerelease ? '-0' : ''\n\n if (xM) {\n if (gtlt === '>' || gtlt === '<') {\n // nothing is allowed\n ret = '<0.0.0-0'\n } else {\n // nothing is forbidden\n ret = '*'\n }\n } else if (gtlt && anyX) {\n // we know patch is an x, because we have any x at all.\n // replace X with 0\n if (xm) {\n m = 0\n }\n p = 0\n\n if (gtlt === '>') {\n // >1 => >=2.0.0\n // >1.2 => >=1.3.0\n gtlt = '>='\n if (xm) {\n M = +M + 1\n m = 0\n p = 0\n } else {\n m = +m + 1\n p = 0\n }\n } else if (gtlt === '<=') {\n // <=0.7.x is actually <0.8.0, since any 0.7.x should\n // pass. Similarly, <=7.x is actually <8.0.0, etc.\n gtlt = '<'\n if (xm) {\n M = +M + 1\n } else {\n m = +m + 1\n }\n }\n\n if (gtlt === '<')\n pr = '-0'\n\n ret = `${gtlt + M}.${m}.${p}${pr}`\n } else if (xm) {\n ret = `>=${M}.0.0${pr} <${+M + 1}.0.0-0`\n } else if (xp) {\n ret = `>=${M}.${m}.0${pr\n } <${M}.${+m + 1}.0-0`\n }\n\n debug('xRange return', ret)\n\n return ret\n })\n}\n\n// Because * is AND-ed with everything else in the comparator,\n// and '' means \"any version\", just remove the *s entirely.\nconst replaceStars = (comp, options) => {\n debug('replaceStars', comp, options)\n // Looseness is ignored here. star is always as loose as it gets!\n return comp.trim().replace(re[t.STAR], '')\n}\n\nconst replaceGTE0 = (comp, options) => {\n debug('replaceGTE0', comp, options)\n return comp.trim()\n .replace(re[options.includePrerelease ? t.GTE0PRE : t.GTE0], '')\n}\n\n// This function is passed to string.replace(re[t.HYPHENRANGE])\n// M, m, patch, prerelease, build\n// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5\n// 1.2.3 - 3.4 => >=1.2.0 <3.5.0-0 Any 3.4.x will do\n// 1.2 - 3.4 => >=1.2.0 <3.5.0-0\nconst hyphenReplace = incPr => ($0,\n from, fM, fm, fp, fpr, fb,\n to, tM, tm, tp, tpr, tb) => {\n if (isX(fM)) {\n from = ''\n } else if (isX(fm)) {\n from = `>=${fM}.0.0${incPr ? '-0' : ''}`\n } else if (isX(fp)) {\n from = `>=${fM}.${fm}.0${incPr ? '-0' : ''}`\n } else if (fpr) {\n from = `>=${from}`\n } else {\n from = `>=${from}${incPr ? '-0' : ''}`\n }\n\n if (isX(tM)) {\n to = ''\n } else if (isX(tm)) {\n to = `<${+tM + 1}.0.0-0`\n } else if (isX(tp)) {\n to = `<${tM}.${+tm + 1}.0-0`\n } else if (tpr) {\n to = `<=${tM}.${tm}.${tp}-${tpr}`\n } else if (incPr) {\n to = `<${tM}.${tm}.${+tp + 1}-0`\n } else {\n to = `<=${to}`\n }\n\n return (`${from} ${to}`).trim()\n}\n\nconst testSet = (set, version, options) => {\n for (let i = 0; i < set.length; i++) {\n if (!set[i].test(version)) {\n return false\n }\n }\n\n if (version.prerelease.length && !options.includePrerelease) {\n // Find the set of versions that are allowed to have prereleases\n // For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0\n // That should allow `1.2.3-pr.2` to pass.\n // However, `1.2.4-alpha.notready` should NOT be allowed,\n // even though it's within the range set by the comparators.\n for (let i = 0; i < set.length; i++) {\n debug(set[i].semver)\n if (set[i].semver === Comparator.ANY) {\n continue\n }\n\n if (set[i].semver.prerelease.length > 0) {\n const allowed = set[i].semver\n if (allowed.major === version.major &&\n allowed.minor === version.minor &&\n allowed.patch === version.patch) {\n return true\n }\n }\n }\n\n // Version has a -pre, but it's not one of the ones we like.\n return false\n }\n\n return true\n}\n", "const ANY = Symbol('SemVer ANY')\n// hoisted class for cyclic dependency\nclass Comparator {\n static get ANY () {\n return ANY\n }\n constructor (comp, options) {\n options = parseOptions(options)\n\n if (comp instanceof Comparator) {\n if (comp.loose === !!options.loose) {\n return comp\n } else {\n comp = comp.value\n }\n }\n\n debug('comparator', comp, options)\n this.options = options\n this.loose = !!options.loose\n this.parse(comp)\n\n if (this.semver === ANY) {\n this.value = ''\n } else {\n this.value = this.operator + this.semver.version\n }\n\n debug('comp', this)\n }\n\n parse (comp) {\n const r = this.options.loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR]\n const m = comp.match(r)\n\n if (!m) {\n throw new TypeError(`Invalid comparator: ${comp}`)\n }\n\n this.operator = m[1] !== undefined ? m[1] : ''\n if (this.operator === '=') {\n this.operator = ''\n }\n\n // if it literally is just '>' or '' then allow anything.\n if (!m[2]) {\n this.semver = ANY\n } else {\n this.semver = new SemVer(m[2], this.options.loose)\n }\n }\n\n toString () {\n return this.value\n }\n\n test (version) {\n debug('Comparator.test', version, this.options.loose)\n\n if (this.semver === ANY || version === ANY) {\n return true\n }\n\n if (typeof version === 'string') {\n try {\n version = new SemVer(version, this.options)\n } catch (er) {\n return false\n }\n }\n\n return cmp(version, this.operator, this.semver, this.options)\n }\n\n intersects (comp, options) {\n if (!(comp instanceof Comparator)) {\n throw new TypeError('a Comparator is required')\n }\n\n if (!options || typeof options !== 'object') {\n options = {\n loose: !!options,\n includePrerelease: false\n }\n }\n\n if (this.operator === '') {\n if (this.value === '') {\n return true\n }\n return new Range(comp.value, options).test(this.value)\n } else if (comp.operator === '') {\n if (comp.value === '') {\n return true\n }\n return new Range(this.value, options).test(comp.semver)\n }\n\n const sameDirectionIncreasing =\n (this.operator === '>=' || this.operator === '>') &&\n (comp.operator === '>=' || comp.operator === '>')\n const sameDirectionDecreasing =\n (this.operator === '<=' || this.operator === '<') &&\n (comp.operator === '<=' || comp.operator === '<')\n const sameSemVer = this.semver.version === comp.semver.version\n const differentDirectionsInclusive =\n (this.operator === '>=' || this.operator === '<=') &&\n (comp.operator === '>=' || comp.operator === '<=')\n const oppositeDirectionsLessThan =\n cmp(this.semver, '<', comp.semver, options) &&\n (this.operator === '>=' || this.operator === '>') &&\n (comp.operator === '<=' || comp.operator === '<')\n const oppositeDirectionsGreaterThan =\n cmp(this.semver, '>', comp.semver, options) &&\n (this.operator === '<=' || this.operator === '<') &&\n (comp.operator === '>=' || comp.operator === '>')\n\n return (\n sameDirectionIncreasing ||\n sameDirectionDecreasing ||\n (sameSemVer && differentDirectionsInclusive) ||\n oppositeDirectionsLessThan ||\n oppositeDirectionsGreaterThan\n )\n }\n}\n\nmodule.exports = Comparator\n\nconst parseOptions = require('../internal/parse-options')\nconst {re, t} = require('../internal/re')\nconst cmp = require('../functions/cmp')\nconst debug = require('../internal/debug')\nconst SemVer = require('./semver')\nconst Range = require('./range')\n", "const Range = require('../classes/range')\nconst satisfies = (version, range, options) => {\n try {\n range = new Range(range, options)\n } catch (er) {\n return false\n }\n return range.test(version)\n}\nmodule.exports = satisfies\n", "const Range = require('../classes/range')\n\n// Mostly just for testing and legacy API reasons\nconst toComparators = (range, options) =>\n new Range(range, options).set\n .map(comp => comp.map(c => c.value).join(' ').trim().split(' '))\n\nmodule.exports = toComparators\n", "const SemVer = require('../classes/semver')\nconst Range = require('../classes/range')\n\nconst maxSatisfying = (versions, range, options) => {\n let max = null\n let maxSV = null\n let rangeObj = null\n try {\n rangeObj = new Range(range, options)\n } catch (er) {\n return null\n }\n versions.forEach((v) => {\n if (rangeObj.test(v)) {\n // satisfies(v, range, options)\n if (!max || maxSV.compare(v) === -1) {\n // compare(max, v, true)\n max = v\n maxSV = new SemVer(max, options)\n }\n }\n })\n return max\n}\nmodule.exports = maxSatisfying\n", "const SemVer = require('../classes/semver')\nconst Range = require('../classes/range')\nconst minSatisfying = (versions, range, options) => {\n let min = null\n let minSV = null\n let rangeObj = null\n try {\n rangeObj = new Range(range, options)\n } catch (er) {\n return null\n }\n versions.forEach((v) => {\n if (rangeObj.test(v)) {\n // satisfies(v, range, options)\n if (!min || minSV.compare(v) === 1) {\n // compare(min, v, true)\n min = v\n minSV = new SemVer(min, options)\n }\n }\n })\n return min\n}\nmodule.exports = minSatisfying\n", "const SemVer = require('../classes/semver')\nconst Range = require('../classes/range')\nconst gt = require('../functions/gt')\n\nconst minVersion = (range, loose) => {\n range = new Range(range, loose)\n\n let minver = new SemVer('0.0.0')\n if (range.test(minver)) {\n return minver\n }\n\n minver = new SemVer('0.0.0-0')\n if (range.test(minver)) {\n return minver\n }\n\n minver = null\n for (let i = 0; i < range.set.length; ++i) {\n const comparators = range.set[i]\n\n let setMin = null\n comparators.forEach((comparator) => {\n // Clone to avoid manipulating the comparator's semver object.\n const compver = new SemVer(comparator.semver.version)\n switch (comparator.operator) {\n case '>':\n if (compver.prerelease.length === 0) {\n compver.patch++\n } else {\n compver.prerelease.push(0)\n }\n compver.raw = compver.format()\n /* fallthrough */\n case '':\n case '>=':\n if (!setMin || gt(compver, setMin)) {\n setMin = compver\n }\n break\n case '<':\n case '<=':\n /* Ignore maximum versions */\n break\n /* istanbul ignore next */\n default:\n throw new Error(`Unexpected operation: ${comparator.operator}`)\n }\n })\n if (setMin && (!minver || gt(minver, setMin)))\n minver = setMin\n }\n\n if (minver && range.test(minver)) {\n return minver\n }\n\n return null\n}\nmodule.exports = minVersion\n", "const Range = require('../classes/range')\nconst validRange = (range, options) => {\n try {\n // Return '*' instead of '' so that truthiness works.\n // This will throw if it's invalid anyway\n return new Range(range, options).range || '*'\n } catch (er) {\n return null\n }\n}\nmodule.exports = validRange\n", "const SemVer = require('../classes/semver')\nconst Comparator = require('../classes/comparator')\nconst {ANY} = Comparator\nconst Range = require('../classes/range')\nconst satisfies = require('../functions/satisfies')\nconst gt = require('../functions/gt')\nconst lt = require('../functions/lt')\nconst lte = require('../functions/lte')\nconst gte = require('../functions/gte')\n\nconst outside = (version, range, hilo, options) => {\n version = new SemVer(version, options)\n range = new Range(range, options)\n\n let gtfn, ltefn, ltfn, comp, ecomp\n switch (hilo) {\n case '>':\n gtfn = gt\n ltefn = lte\n ltfn = lt\n comp = '>'\n ecomp = '>='\n break\n case '<':\n gtfn = lt\n ltefn = gte\n ltfn = gt\n comp = '<'\n ecomp = '<='\n break\n default:\n throw new TypeError('Must provide a hilo val of \"<\" or \">\"')\n }\n\n // If it satisfies the range it is not outside\n if (satisfies(version, range, options)) {\n return false\n }\n\n // From now on, variable terms are as if we're in \"gtr\" mode.\n // but note that everything is flipped for the \"ltr\" function.\n\n for (let i = 0; i < range.set.length; ++i) {\n const comparators = range.set[i]\n\n let high = null\n let low = null\n\n comparators.forEach((comparator) => {\n if (comparator.semver === ANY) {\n comparator = new Comparator('>=0.0.0')\n }\n high = high || comparator\n low = low || comparator\n if (gtfn(comparator.semver, high.semver, options)) {\n high = comparator\n } else if (ltfn(comparator.semver, low.semver, options)) {\n low = comparator\n }\n })\n\n // If the edge version comparator has a operator then our version\n // isn't outside it\n if (high.operator === comp || high.operator === ecomp) {\n return false\n }\n\n // If the lowest version comparator has an operator and our version\n // is less than it then it isn't higher than the range\n if ((!low.operator || low.operator === comp) &&\n ltefn(version, low.semver)) {\n return false\n } else if (low.operator === ecomp && ltfn(version, low.semver)) {\n return false\n }\n }\n return true\n}\n\nmodule.exports = outside\n", "// Determine if version is greater than all the versions possible in the range.\nconst outside = require('./outside')\nconst gtr = (version, range, options) => outside(version, range, '>', options)\nmodule.exports = gtr\n", "const outside = require('./outside')\n// Determine if version is less than all the versions possible in the range\nconst ltr = (version, range, options) => outside(version, range, '<', options)\nmodule.exports = ltr\n", "const Range = require('../classes/range')\nconst intersects = (r1, r2, options) => {\n r1 = new Range(r1, options)\n r2 = new Range(r2, options)\n return r1.intersects(r2)\n}\nmodule.exports = intersects\n", "// given a set of versions and a range, create a \"simplified\" range\n// that includes the same versions that the original range does\n// If the original range is shorter than the simplified one, return that.\nconst satisfies = require('../functions/satisfies.js')\nconst compare = require('../functions/compare.js')\nmodule.exports = (versions, range, options) => {\n const set = []\n let min = null\n let prev = null\n const v = versions.sort((a, b) => compare(a, b, options))\n for (const version of v) {\n const included = satisfies(version, range, options)\n if (included) {\n prev = version\n if (!min)\n min = version\n } else {\n if (prev) {\n set.push([min, prev])\n }\n prev = null\n min = null\n }\n }\n if (min)\n set.push([min, null])\n\n const ranges = []\n for (const [min, max] of set) {\n if (min === max)\n ranges.push(min)\n else if (!max && min === v[0])\n ranges.push('*')\n else if (!max)\n ranges.push(`>=${min}`)\n else if (min === v[0])\n ranges.push(`<=${max}`)\n else\n ranges.push(`${min} - ${max}`)\n }\n const simplified = ranges.join(' || ')\n const original = typeof range.raw === 'string' ? range.raw : String(range)\n return simplified.length < original.length ? simplified : range\n}\n", "const Range = require('../classes/range.js')\nconst { ANY } = require('../classes/comparator.js')\nconst satisfies = require('../functions/satisfies.js')\nconst compare = require('../functions/compare.js')\n\n// Complex range `r1 || r2 || ...` is a subset of `R1 || R2 || ...` iff:\n// - Every simple range `r1, r2, ...` is a subset of some `R1, R2, ...`\n//\n// Simple range `c1 c2 ...` is a subset of simple range `C1 C2 ...` iff:\n// - If c is only the ANY comparator\n// - If C is only the ANY comparator, return true\n// - Else return false\n// - Let EQ be the set of = comparators in c\n// - If EQ is more than one, return true (null set)\n// - Let GT be the highest > or >= comparator in c\n// - Let LT be the lowest < or <= comparator in c\n// - If GT and LT, and GT.semver > LT.semver, return true (null set)\n// - If EQ\n// - If GT, and EQ does not satisfy GT, return true (null set)\n// - If LT, and EQ does not satisfy LT, return true (null set)\n// - If EQ satisfies every C, return true\n// - Else return false\n// - If GT\n// - If GT.semver is lower than any > or >= comp in C, return false\n// - If GT is >=, and GT.semver does not satisfy every C, return false\n// - If LT\n// - If LT.semver is greater than any < or <= comp in C, return false\n// - If LT is <=, and LT.semver does not satisfy every C, return false\n// - If any C is a = range, and GT or LT are set, return false\n// - Else return true\n\nconst subset = (sub, dom, options) => {\n if (sub === dom)\n return true\n\n sub = new Range(sub, options)\n dom = new Range(dom, options)\n let sawNonNull = false\n\n OUTER: for (const simpleSub of sub.set) {\n for (const simpleDom of dom.set) {\n const isSub = simpleSubset(simpleSub, simpleDom, options)\n sawNonNull = sawNonNull || isSub !== null\n if (isSub)\n continue OUTER\n }\n // the null set is a subset of everything, but null simple ranges in\n // a complex range should be ignored. so if we saw a non-null range,\n // then we know this isn't a subset, but if EVERY simple range was null,\n // then it is a subset.\n if (sawNonNull)\n return false\n }\n return true\n}\n\nconst simpleSubset = (sub, dom, options) => {\n if (sub === dom)\n return true\n\n if (sub.length === 1 && sub[0].semver === ANY)\n return dom.length === 1 && dom[0].semver === ANY\n\n const eqSet = new Set()\n let gt, lt\n for (const c of sub) {\n if (c.operator === '>' || c.operator === '>=')\n gt = higherGT(gt, c, options)\n else if (c.operator === '<' || c.operator === '<=')\n lt = lowerLT(lt, c, options)\n else\n eqSet.add(c.semver)\n }\n\n if (eqSet.size > 1)\n return null\n\n let gtltComp\n if (gt && lt) {\n gtltComp = compare(gt.semver, lt.semver, options)\n if (gtltComp > 0)\n return null\n else if (gtltComp === 0 && (gt.operator !== '>=' || lt.operator !== '<='))\n return null\n }\n\n // will iterate one or zero times\n for (const eq of eqSet) {\n if (gt && !satisfies(eq, String(gt), options))\n return null\n\n if (lt && !satisfies(eq, String(lt), options))\n return null\n\n for (const c of dom) {\n if (!satisfies(eq, String(c), options))\n return false\n }\n\n return true\n }\n\n let higher, lower\n let hasDomLT, hasDomGT\n for (const c of dom) {\n hasDomGT = hasDomGT || c.operator === '>' || c.operator === '>='\n hasDomLT = hasDomLT || c.operator === '<' || c.operator === '<='\n if (gt) {\n if (c.operator === '>' || c.operator === '>=') {\n higher = higherGT(gt, c, options)\n if (higher === c && higher !== gt)\n return false\n } else if (gt.operator === '>=' && !satisfies(gt.semver, String(c), options))\n return false\n }\n if (lt) {\n if (c.operator === '<' || c.operator === '<=') {\n lower = lowerLT(lt, c, options)\n if (lower === c && lower !== lt)\n return false\n } else if (lt.operator === '<=' && !satisfies(lt.semver, String(c), options))\n return false\n }\n if (!c.operator && (lt || gt) && gtltComp !== 0)\n return false\n }\n\n // if there was a < or >, and nothing in the dom, then must be false\n // UNLESS it was limited by another range in the other direction.\n // Eg, >1.0.0 <1.0.1 is still a subset of <2.0.0\n if (gt && hasDomLT && !lt && gtltComp !== 0)\n return false\n\n if (lt && hasDomGT && !gt && gtltComp !== 0)\n return false\n\n return true\n}\n\n// >=1.2.3 is lower than >1.2.3\nconst higherGT = (a, b, options) => {\n if (!a)\n return b\n const comp = compare(a.semver, b.semver, options)\n return comp > 0 ? a\n : comp < 0 ? b\n : b.operator === '>' && a.operator === '>=' ? b\n : a\n}\n\n// <=1.2.3 is higher than <1.2.3\nconst lowerLT = (a, b, options) => {\n if (!a)\n return b\n const comp = compare(a.semver, b.semver, options)\n return comp < 0 ? a\n : comp > 0 ? b\n : b.operator === '<' && a.operator === '<=' ? b\n : a\n}\n\nmodule.exports = subset\n", "// just pre-load all the stuff that index.js lazily exports\nconst internalRe = require('./internal/re')\nmodule.exports = {\n re: internalRe.re,\n src: internalRe.src,\n tokens: internalRe.t,\n SEMVER_SPEC_VERSION: require('./internal/constants').SEMVER_SPEC_VERSION,\n SemVer: require('./classes/semver'),\n compareIdentifiers: require('./internal/identifiers').compareIdentifiers,\n rcompareIdentifiers: require('./internal/identifiers').rcompareIdentifiers,\n parse: require('./functions/parse'),\n valid: require('./functions/valid'),\n clean: require('./functions/clean'),\n inc: require('./functions/inc'),\n diff: require('./functions/diff'),\n major: require('./functions/major'),\n minor: require('./functions/minor'),\n patch: require('./functions/patch'),\n prerelease: require('./functions/prerelease'),\n compare: require('./functions/compare'),\n rcompare: require('./functions/rcompare'),\n compareLoose: require('./functions/compare-loose'),\n compareBuild: require('./functions/compare-build'),\n sort: require('./functions/sort'),\n rsort: require('./functions/rsort'),\n gt: require('./functions/gt'),\n lt: require('./functions/lt'),\n eq: require('./functions/eq'),\n neq: require('./functions/neq'),\n gte: require('./functions/gte'),\n lte: require('./functions/lte'),\n cmp: require('./functions/cmp'),\n coerce: require('./functions/coerce'),\n Comparator: require('./classes/comparator'),\n Range: require('./classes/range'),\n satisfies: require('./functions/satisfies'),\n toComparators: require('./ranges/to-comparators'),\n maxSatisfying: require('./ranges/max-satisfying'),\n minSatisfying: require('./ranges/min-satisfying'),\n minVersion: require('./ranges/min-version'),\n validRange: require('./ranges/valid'),\n outside: require('./ranges/outside'),\n gtr: require('./ranges/gtr'),\n ltr: require('./ranges/ltr'),\n intersects: require('./ranges/intersects'),\n simplifyRange: require('./ranges/simplify'),\n subset: require('./ranges/subset'),\n}\n", "'use strict'\n\nvar gitHosts = module.exports = {\n github: {\n // First two are insecure and generally shouldn't be used any more, but\n // they are still supported.\n 'protocols': [ 'git', 'http', 'git+ssh', 'git+https', 'ssh', 'https' ],\n 'domain': 'github.com',\n 'treepath': 'tree',\n 'filetemplate': 'https://{auth@}raw.githubusercontent.com/{user}/{project}/{committish}/{path}',\n 'bugstemplate': 'https://{domain}/{user}/{project}/issues',\n 'gittemplate': 'git://{auth@}{domain}/{user}/{project}.git{#committish}',\n 'tarballtemplate': 'https://codeload.{domain}/{user}/{project}/tar.gz/{committish}'\n },\n bitbucket: {\n 'protocols': [ 'git+ssh', 'git+https', 'ssh', 'https' ],\n 'domain': 'bitbucket.org',\n 'treepath': 'src',\n 'tarballtemplate': 'https://{domain}/{user}/{project}/get/{committish}.tar.gz'\n },\n gitlab: {\n 'protocols': [ 'git+ssh', 'git+https', 'ssh', 'https' ],\n 'domain': 'gitlab.com',\n 'treepath': 'tree',\n 'bugstemplate': 'https://{domain}/{user}/{project}/issues',\n 'httpstemplate': 'git+https://{auth@}{domain}/{user}/{projectPath}.git{#committish}',\n 'tarballtemplate': 'https://{domain}/{user}/{project}/repository/archive.tar.gz?ref={committish}',\n 'pathmatch': /^\\/([^/]+)\\/((?!.*(\\/-\\/|\\/repository(\\/[^/]+)?\\/archive\\.tar\\.gz)).*?)(?:\\.git|\\/)?$/\n },\n gist: {\n 'protocols': [ 'git', 'git+ssh', 'git+https', 'ssh', 'https' ],\n 'domain': 'gist.github.com',\n 'pathmatch': /^[/](?:([^/]+)[/])?([a-z0-9]{7,})(?:[.]git)?$/,\n 'filetemplate': 'https://gist.githubusercontent.com/{user}/{project}/raw{/committish}/{path}',\n 'bugstemplate': 'https://{domain}/{project}',\n 'gittemplate': 'git://{domain}/{project}.git{#committish}',\n 'sshtemplate': 'git@{domain}:/{project}.git{#committish}',\n 'sshurltemplate': 'git+ssh://git@{domain}/{project}.git{#committish}',\n 'browsetemplate': 'https://{domain}/{project}{/committish}',\n 'browsefiletemplate': 'https://{domain}/{project}{/committish}{#path}',\n 'docstemplate': 'https://{domain}/{project}{/committish}',\n 'httpstemplate': 'git+https://{domain}/{project}.git{#committish}',\n 'shortcuttemplate': '{type}:{project}{#committish}',\n 'pathtemplate': '{project}{#committish}',\n 'tarballtemplate': 'https://codeload.github.com/gist/{project}/tar.gz/{committish}',\n 'hashformat': function (fragment) {\n return 'file-' + formatHashFragment(fragment)\n }\n }\n}\n\nvar gitHostDefaults = {\n 'sshtemplate': 'git@{domain}:{user}/{project}.git{#committish}',\n 'sshurltemplate': 'git+ssh://git@{domain}/{user}/{project}.git{#committish}',\n 'browsetemplate': 'https://{domain}/{user}/{project}{/tree/committish}',\n 'browsefiletemplate': 'https://{domain}/{user}/{project}/{treepath}/{committish}/{path}{#fragment}',\n 'docstemplate': 'https://{domain}/{user}/{project}{/tree/committish}#readme',\n 'httpstemplate': 'git+https://{auth@}{domain}/{user}/{project}.git{#committish}',\n 'filetemplate': 'https://{domain}/{user}/{project}/raw/{committish}/{path}',\n 'shortcuttemplate': '{type}:{user}/{project}{#committish}',\n 'pathtemplate': '{user}/{project}{#committish}',\n 'pathmatch': /^[/]([^/]+)[/]([^/]+?)(?:[.]git|[/])?$/,\n 'hashformat': formatHashFragment\n}\n\nObject.keys(gitHosts).forEach(function (name) {\n Object.keys(gitHostDefaults).forEach(function (key) {\n if (gitHosts[name][key]) return\n gitHosts[name][key] = gitHostDefaults[key]\n })\n gitHosts[name].protocols_re = RegExp('^(' +\n gitHosts[name].protocols.map(function (protocol) {\n return protocol.replace(/([\\\\+*{}()[\\]$^|])/g, '\\\\$1')\n }).join('|') + '):$')\n})\n\nfunction formatHashFragment (fragment) {\n return fragment.toLowerCase().replace(/^\\W+|\\/|\\W+$/g, '').replace(/\\W+/g, '-')\n}\n", "'use strict'\nvar gitHosts = require('./git-host-info.js')\n/* eslint-disable node/no-deprecated-api */\n\n// copy-pasta util._extend from node's source, to avoid pulling\n// the whole util module into peoples' webpack bundles.\n/* istanbul ignore next */\nvar extend = Object.assign || function _extend (target, source) {\n // Don't do anything if source isn't an object\n if (source === null || typeof source !== 'object') return target\n\n const keys = Object.keys(source)\n let i = keys.length\n while (i--) {\n target[keys[i]] = source[keys[i]]\n }\n return target\n}\n\nmodule.exports = GitHost\nfunction GitHost (type, user, auth, project, committish, defaultRepresentation, opts) {\n var gitHostInfo = this\n gitHostInfo.type = type\n Object.keys(gitHosts[type]).forEach(function (key) {\n gitHostInfo[key] = gitHosts[type][key]\n })\n gitHostInfo.user = user\n gitHostInfo.auth = auth\n gitHostInfo.project = project\n gitHostInfo.committish = committish\n gitHostInfo.default = defaultRepresentation\n gitHostInfo.opts = opts || {}\n}\n\nGitHost.prototype.hash = function () {\n return this.committish ? '#' + this.committish : ''\n}\n\nGitHost.prototype._fill = function (template, opts) {\n if (!template) return\n var vars = extend({}, opts)\n vars.path = vars.path ? vars.path.replace(/^[/]+/g, '') : ''\n opts = extend(extend({}, this.opts), opts)\n var self = this\n Object.keys(this).forEach(function (key) {\n if (self[key] != null && vars[key] == null) vars[key] = self[key]\n })\n var rawAuth = vars.auth\n var rawcommittish = vars.committish\n var rawFragment = vars.fragment\n var rawPath = vars.path\n var rawProject = vars.project\n Object.keys(vars).forEach(function (key) {\n var value = vars[key]\n if ((key === 'path' || key === 'project') && typeof value === 'string') {\n vars[key] = value.split('/').map(function (pathComponent) {\n return encodeURIComponent(pathComponent)\n }).join('/')\n } else if (key !== 'domain') {\n vars[key] = encodeURIComponent(value)\n }\n })\n vars['auth@'] = rawAuth ? rawAuth + '@' : ''\n vars['#fragment'] = rawFragment ? '#' + this.hashformat(rawFragment) : ''\n vars.fragment = vars.fragment ? vars.fragment : ''\n vars['#path'] = rawPath ? '#' + this.hashformat(rawPath) : ''\n vars['/path'] = vars.path ? '/' + vars.path : ''\n vars.projectPath = rawProject.split('/').map(encodeURIComponent).join('/')\n if (opts.noCommittish) {\n vars['#committish'] = ''\n vars['/tree/committish'] = ''\n vars['/committish'] = ''\n vars.committish = ''\n } else {\n vars['#committish'] = rawcommittish ? '#' + rawcommittish : ''\n vars['/tree/committish'] = vars.committish\n ? '/' + vars.treepath + '/' + vars.committish\n : ''\n vars['/committish'] = vars.committish ? '/' + vars.committish : ''\n vars.committish = vars.committish || 'master'\n }\n var res = template\n Object.keys(vars).forEach(function (key) {\n res = res.replace(new RegExp('[{]' + key + '[}]', 'g'), vars[key])\n })\n if (opts.noGitPlus) {\n return res.replace(/^git[+]/, '')\n } else {\n return res\n }\n}\n\nGitHost.prototype.ssh = function (opts) {\n return this._fill(this.sshtemplate, opts)\n}\n\nGitHost.prototype.sshurl = function (opts) {\n return this._fill(this.sshurltemplate, opts)\n}\n\nGitHost.prototype.browse = function (P, F, opts) {\n if (typeof P === 'string') {\n if (typeof F !== 'string') {\n opts = F\n F = null\n }\n return this._fill(this.browsefiletemplate, extend({\n fragment: F,\n path: P\n }, opts))\n } else {\n return this._fill(this.browsetemplate, P)\n }\n}\n\nGitHost.prototype.docs = function (opts) {\n return this._fill(this.docstemplate, opts)\n}\n\nGitHost.prototype.bugs = function (opts) {\n return this._fill(this.bugstemplate, opts)\n}\n\nGitHost.prototype.https = function (opts) {\n return this._fill(this.httpstemplate, opts)\n}\n\nGitHost.prototype.git = function (opts) {\n return this._fill(this.gittemplate, opts)\n}\n\nGitHost.prototype.shortcut = function (opts) {\n return this._fill(this.shortcuttemplate, opts)\n}\n\nGitHost.prototype.path = function (opts) {\n return this._fill(this.pathtemplate, opts)\n}\n\nGitHost.prototype.tarball = function (opts_) {\n var opts = extend({}, opts_, { noCommittish: false })\n return this._fill(this.tarballtemplate, opts)\n}\n\nGitHost.prototype.file = function (P, opts) {\n return this._fill(this.filetemplate, extend({ path: P }, opts))\n}\n\nGitHost.prototype.getDefaultRepresentation = function () {\n return this.default\n}\n\nGitHost.prototype.toString = function (opts) {\n if (this.default && typeof this[this.default] === 'function') return this[this.default](opts)\n return this.sshurl(opts)\n}\n", "'use strict'\nvar url = require('url')\nvar gitHosts = require('./git-host-info.js')\nvar GitHost = module.exports = require('./git-host.js')\nvar LRU = require('lru-cache')\nvar cache = new LRU({max: 1000})\n\nvar protocolToRepresentationMap = {\n 'git+ssh:': 'sshurl',\n 'git+https:': 'https',\n 'ssh:': 'sshurl',\n 'git:': 'git'\n}\n\nfunction protocolToRepresentation (protocol) {\n return protocolToRepresentationMap[protocol] || protocol.slice(0, -1)\n}\n\nvar authProtocols = {\n 'git:': true,\n 'https:': true,\n 'git+https:': true,\n 'http:': true,\n 'git+http:': true\n}\n\nmodule.exports.fromUrl = function (giturl, opts) {\n if (typeof giturl !== 'string') return\n var key = giturl + JSON.stringify(opts || {})\n\n if (!cache.has(key)) {\n cache.set(key, fromUrl(giturl, opts))\n }\n\n return cache.get(key)\n}\n\nfunction fromUrl (giturl, opts) {\n if (giturl == null || giturl === '') return\n var url = fixupUnqualifiedGist(\n isGitHubShorthand(giturl) ? 'github:' + giturl : giturl\n )\n var parsed = parseGitUrl(url)\n var shortcutMatch = url.match(/^([^:]+):(?:[^@]+@)?(?:([^/]*)\\/)?([^#]+)/)\n var matches = Object.keys(gitHosts).map(function (gitHostName) {\n try {\n var gitHostInfo = gitHosts[gitHostName]\n var auth = null\n if (parsed.auth && authProtocols[parsed.protocol]) {\n auth = parsed.auth\n }\n var committish = parsed.hash ? decodeURIComponent(parsed.hash.substr(1)) : null\n var user = null\n var project = null\n var defaultRepresentation = null\n if (shortcutMatch && shortcutMatch[1] === gitHostName) {\n user = shortcutMatch[2] && decodeURIComponent(shortcutMatch[2])\n project = decodeURIComponent(shortcutMatch[3].replace(/\\.git$/, ''))\n defaultRepresentation = 'shortcut'\n } else {\n if (parsed.host && parsed.host !== gitHostInfo.domain && parsed.host.replace(/^www[.]/, '') !== gitHostInfo.domain) return\n if (!gitHostInfo.protocols_re.test(parsed.protocol)) return\n if (!parsed.path) return\n var pathmatch = gitHostInfo.pathmatch\n var matched = parsed.path.match(pathmatch)\n if (!matched) return\n /* istanbul ignore else */\n if (matched[1] !== null && matched[1] !== undefined) {\n user = decodeURIComponent(matched[1].replace(/^:/, ''))\n }\n project = decodeURIComponent(matched[2])\n defaultRepresentation = protocolToRepresentation(parsed.protocol)\n }\n return new GitHost(gitHostName, user, auth, project, committish, defaultRepresentation, opts)\n } catch (ex) {\n /* istanbul ignore else */\n if (ex instanceof URIError) {\n } else throw ex\n }\n }).filter(function (gitHostInfo) { return gitHostInfo })\n if (matches.length !== 1) return\n return matches[0]\n}\n\nfunction isGitHubShorthand (arg) {\n // Note: This does not fully test the git ref format.\n // See https://www.kernel.org/pub/software/scm/git/docs/git-check-ref-format.html\n //\n // The only way to do this properly would be to shell out to\n // git-check-ref-format, and as this is a fast sync function,\n // we don't want to do that. Just let git fail if it turns\n // out that the commit-ish is invalid.\n // GH usernames cannot start with . or -\n return /^[^:@%/\\s.-][^:@%/\\s]*[/][^:@\\s/%]+(?:#.*)?$/.test(arg)\n}\n\nfunction fixupUnqualifiedGist (giturl) {\n // necessary for round-tripping gists\n var parsed = url.parse(giturl)\n if (parsed.protocol === 'gist:' && parsed.host && !parsed.path) {\n return parsed.protocol + '/' + parsed.host\n } else {\n return giturl\n }\n}\n\nfunction parseGitUrl (giturl) {\n var matched = giturl.match(/^([^@]+)@([^:/]+):[/]?((?:[^/]+[/])?[^/]+?)(?:[.]git)?(#.*)?$/)\n if (!matched) {\n var legacy = url.parse(giturl)\n if (legacy.auth) {\n // git urls can be in the form of scp-style/ssh-connect strings, like\n // git+ssh://user@host.com:some/path, which the legacy url parser\n // supports, but WhatWG url.URL class does not. However, the legacy\n // parser de-urlencodes the username and password, so something like\n // https://user%3An%40me:p%40ss%3Aword@x.com/ becomes\n // https://user:n@me:p@ss:word@x.com/ which is all kinds of wrong.\n // Pull off just the auth and host, so we dont' get the confusing\n // scp-style URL, then pass that to the WhatWG parser to get the\n // auth properly escaped.\n const authmatch = giturl.match(/[^@]+@[^:/]+/)\n /* istanbul ignore else - this should be impossible */\n if (authmatch) {\n var whatwg = new url.URL(authmatch[0])\n legacy.auth = whatwg.username || ''\n if (whatwg.password) legacy.auth += ':' + whatwg.password\n }\n }\n return legacy\n }\n return {\n protocol: 'git+ssh:',\n slashes: true,\n auth: matched[1],\n host: matched[2],\n port: null,\n hostname: matched[2],\n hash: matched[4],\n search: null,\n query: null,\n pathname: '/' + matched[3],\n path: '/' + matched[3],\n href: 'git+ssh://' + matched[1] + '@' + matched[2] +\n '/' + matched[3] + (matched[4] || '')\n }\n}\n", "module.exports = extractDescription\n\n// Extracts description from contents of a readme file in markdown format\nfunction extractDescription (d) {\n if (!d) return;\n if (d === \"ERROR: No README data found!\") return;\n // the first block of text before the first heading\n // that isn't the first line heading\n d = d.trim().split('\\n')\n for (var s = 0; d[s] && d[s].trim().match(/^(#|$)/); s ++);\n var l = d.length\n for (var e = s + 1; e < l && d[e].trim(); e ++);\n return d.slice(s, e).join(' ').trim()\n}\n", "var semver = require(\"semver\")\nvar validateLicense = require('validate-npm-package-license');\nvar hostedGitInfo = require(\"hosted-git-info\")\nvar isBuiltinModule = require(\"resolve\").isCore\nvar depTypes = [\"dependencies\",\"devDependencies\",\"optionalDependencies\"]\nvar extractDescription = require(\"./extract_description\")\nvar url = require(\"url\")\nvar typos = require(\"./typos.json\")\n\nvar fixer = module.exports = {\n // default warning function\n warn: function() {},\n\n fixRepositoryField: function(data) {\n if (data.repositories) {\n this.warn(\"repositories\");\n data.repository = data.repositories[0]\n }\n if (!data.repository) return this.warn(\"missingRepository\")\n if (typeof data.repository === \"string\") {\n data.repository = {\n type: \"git\",\n url: data.repository\n }\n }\n var r = data.repository.url || \"\"\n if (r) {\n var hosted = hostedGitInfo.fromUrl(r)\n if (hosted) {\n r = data.repository.url\n = hosted.getDefaultRepresentation() == \"shortcut\" ? hosted.https() : hosted.toString()\n }\n }\n\n if (r.match(/github.com\\/[^\\/]+\\/[^\\/]+\\.git\\.git$/)) {\n this.warn(\"brokenGitUrl\", r)\n }\n }\n\n, fixTypos: function(data) {\n Object.keys(typos.topLevel).forEach(function (d) {\n if (data.hasOwnProperty(d)) {\n this.warn(\"typo\", d, typos.topLevel[d])\n }\n }, this)\n }\n\n, fixScriptsField: function(data) {\n if (!data.scripts) return\n if (typeof data.scripts !== \"object\") {\n this.warn(\"nonObjectScripts\")\n delete data.scripts\n return\n }\n Object.keys(data.scripts).forEach(function (k) {\n if (typeof data.scripts[k] !== \"string\") {\n this.warn(\"nonStringScript\")\n delete data.scripts[k]\n } else if (typos.script[k] && !data.scripts[typos.script[k]]) {\n this.warn(\"typo\", k, typos.script[k], \"scripts\")\n }\n }, this)\n }\n\n, fixFilesField: function(data) {\n var files = data.files\n if (files && !Array.isArray(files)) {\n this.warn(\"nonArrayFiles\")\n delete data.files\n } else if (data.files) {\n data.files = data.files.filter(function(file) {\n if (!file || typeof file !== \"string\") {\n this.warn(\"invalidFilename\", file)\n return false\n } else {\n return true\n }\n }, this)\n }\n }\n\n, fixBinField: function(data) {\n if (!data.bin) return;\n if (typeof data.bin === \"string\") {\n var b = {}\n var match\n if (match = data.name.match(/^@[^/]+[/](.*)$/)) {\n b[match[1]] = data.bin\n } else {\n b[data.name] = data.bin\n }\n data.bin = b\n }\n }\n\n, fixManField: function(data) {\n if (!data.man) return;\n if (typeof data.man === \"string\") {\n data.man = [ data.man ]\n }\n }\n, fixBundleDependenciesField: function(data) {\n var bdd = \"bundledDependencies\"\n var bd = \"bundleDependencies\"\n if (data[bdd] && !data[bd]) {\n data[bd] = data[bdd]\n delete data[bdd]\n }\n if (data[bd] && !Array.isArray(data[bd])) {\n this.warn(\"nonArrayBundleDependencies\")\n delete data[bd]\n } else if (data[bd]) {\n data[bd] = data[bd].filter(function(bd) {\n if (!bd || typeof bd !== 'string') {\n this.warn(\"nonStringBundleDependency\", bd)\n return false\n } else {\n if (!data.dependencies) {\n data.dependencies = {}\n }\n if (!data.dependencies.hasOwnProperty(bd)) {\n this.warn(\"nonDependencyBundleDependency\", bd)\n data.dependencies[bd] = \"*\"\n }\n return true\n }\n }, this)\n }\n }\n\n, fixDependencies: function(data, strict) {\n var loose = !strict\n objectifyDeps(data, this.warn)\n addOptionalDepsToDeps(data, this.warn)\n this.fixBundleDependenciesField(data)\n\n ;['dependencies','devDependencies'].forEach(function(deps) {\n if (!(deps in data)) return\n if (!data[deps] || typeof data[deps] !== \"object\") {\n this.warn(\"nonObjectDependencies\", deps)\n delete data[deps]\n return\n }\n Object.keys(data[deps]).forEach(function (d) {\n var r = data[deps][d]\n if (typeof r !== 'string') {\n this.warn(\"nonStringDependency\", d, JSON.stringify(r))\n delete data[deps][d]\n }\n var hosted = hostedGitInfo.fromUrl(data[deps][d])\n if (hosted) data[deps][d] = hosted.toString()\n }, this)\n }, this)\n }\n\n, fixModulesField: function (data) {\n if (data.modules) {\n this.warn(\"deprecatedModules\")\n delete data.modules\n }\n }\n\n, fixKeywordsField: function (data) {\n if (typeof data.keywords === \"string\") {\n data.keywords = data.keywords.split(/,\\s+/)\n }\n if (data.keywords && !Array.isArray(data.keywords)) {\n delete data.keywords\n this.warn(\"nonArrayKeywords\")\n } else if (data.keywords) {\n data.keywords = data.keywords.filter(function(kw) {\n if (typeof kw !== \"string\" || !kw) {\n this.warn(\"nonStringKeyword\");\n return false\n } else {\n return true\n }\n }, this)\n }\n }\n\n, fixVersionField: function(data, strict) {\n // allow \"loose\" semver 1.0 versions in non-strict mode\n // enforce strict semver 2.0 compliance in strict mode\n var loose = !strict\n if (!data.version) {\n data.version = \"\"\n return true\n }\n if (!semver.valid(data.version, loose)) {\n throw new Error('Invalid version: \"'+ data.version + '\"')\n }\n data.version = semver.clean(data.version, loose)\n return true\n }\n\n, fixPeople: function(data) {\n modifyPeople(data, unParsePerson)\n modifyPeople(data, parsePerson)\n }\n\n, fixNameField: function(data, options) {\n if (typeof options === \"boolean\") options = {strict: options}\n else if (typeof options === \"undefined\") options = {}\n var strict = options.strict\n if (!data.name && !strict) {\n data.name = \"\"\n return\n }\n if (typeof data.name !== \"string\") {\n throw new Error(\"name field must be a string.\")\n }\n if (!strict)\n data.name = data.name.trim()\n ensureValidName(data.name, strict, options.allowLegacyCase)\n if (isBuiltinModule(data.name))\n this.warn(\"conflictingName\", data.name)\n }\n\n\n, fixDescriptionField: function (data) {\n if (data.description && typeof data.description !== 'string') {\n this.warn(\"nonStringDescription\")\n delete data.description\n }\n if (data.readme && !data.description)\n data.description = extractDescription(data.readme)\n if(data.description === undefined) delete data.description;\n if (!data.description) this.warn(\"missingDescription\")\n }\n\n, fixReadmeField: function (data) {\n if (!data.readme) {\n this.warn(\"missingReadme\")\n data.readme = \"ERROR: No README data found!\"\n }\n }\n\n, fixBugsField: function(data) {\n if (!data.bugs && data.repository && data.repository.url) {\n var hosted = hostedGitInfo.fromUrl(data.repository.url)\n if(hosted && hosted.bugs()) {\n data.bugs = {url: hosted.bugs()}\n }\n }\n else if(data.bugs) {\n var emailRe = /^.+@.*\\..+$/\n if(typeof data.bugs == \"string\") {\n if(emailRe.test(data.bugs))\n data.bugs = {email:data.bugs}\n else if(url.parse(data.bugs).protocol)\n data.bugs = {url: data.bugs}\n else\n this.warn(\"nonEmailUrlBugsString\")\n }\n else {\n bugsTypos(data.bugs, this.warn)\n var oldBugs = data.bugs\n data.bugs = {}\n if(oldBugs.url) {\n if(typeof(oldBugs.url) == \"string\" && url.parse(oldBugs.url).protocol)\n data.bugs.url = oldBugs.url\n else\n this.warn(\"nonUrlBugsUrlField\")\n }\n if(oldBugs.email) {\n if(typeof(oldBugs.email) == \"string\" && emailRe.test(oldBugs.email))\n data.bugs.email = oldBugs.email\n else\n this.warn(\"nonEmailBugsEmailField\")\n }\n }\n if(!data.bugs.email && !data.bugs.url) {\n delete data.bugs\n this.warn(\"emptyNormalizedBugs\")\n }\n }\n }\n\n, fixHomepageField: function(data) {\n if (!data.homepage && data.repository && data.repository.url) {\n var hosted = hostedGitInfo.fromUrl(data.repository.url)\n if (hosted && hosted.docs()) data.homepage = hosted.docs()\n }\n if (!data.homepage) return\n\n if(typeof data.homepage !== \"string\") {\n this.warn(\"nonUrlHomepage\")\n return delete data.homepage\n }\n if(!url.parse(data.homepage).protocol) {\n data.homepage = \"http://\" + data.homepage\n }\n }\n\n, fixLicenseField: function(data) {\n if (!data.license) {\n return this.warn(\"missingLicense\")\n } else{\n if (\n typeof(data.license) !== 'string' ||\n data.license.length < 1 ||\n data.license.trim() === ''\n ) {\n this.warn(\"invalidLicense\")\n } else {\n if (!validateLicense(data.license).validForNewPackages)\n this.warn(\"invalidLicense\")\n }\n }\n }\n}\n\nfunction isValidScopedPackageName(spec) {\n if (spec.charAt(0) !== '@') return false\n\n var rest = spec.slice(1).split('/')\n if (rest.length !== 2) return false\n\n return rest[0] && rest[1] &&\n rest[0] === encodeURIComponent(rest[0]) &&\n rest[1] === encodeURIComponent(rest[1])\n}\n\nfunction isCorrectlyEncodedName(spec) {\n return !spec.match(/[\\/@\\s\\+%:]/) &&\n spec === encodeURIComponent(spec)\n}\n\nfunction ensureValidName (name, strict, allowLegacyCase) {\n if (name.charAt(0) === \".\" ||\n !(isValidScopedPackageName(name) || isCorrectlyEncodedName(name)) ||\n (strict && (!allowLegacyCase) && name !== name.toLowerCase()) ||\n name.toLowerCase() === \"node_modules\" ||\n name.toLowerCase() === \"favicon.ico\") {\n throw new Error(\"Invalid name: \" + JSON.stringify(name))\n }\n}\n\nfunction modifyPeople (data, fn) {\n if (data.author) data.author = fn(data.author)\n ;[\"maintainers\", \"contributors\"].forEach(function (set) {\n if (!Array.isArray(data[set])) return;\n data[set] = data[set].map(fn)\n })\n return data\n}\n\nfunction unParsePerson (person) {\n if (typeof person === \"string\") return person\n var name = person.name || \"\"\n var u = person.url || person.web\n var url = u ? (\" (\"+u+\")\") : \"\"\n var e = person.email || person.mail\n var email = e ? (\" <\"+e+\">\") : \"\"\n return name+email+url\n}\n\nfunction parsePerson (person) {\n if (typeof person !== \"string\") return person\n var name = person.match(/^([^\\(<]+)/)\n var url = person.match(/\\(([^\\)]+)\\)/)\n var email = person.match(/<([^>]+)>/)\n var obj = {}\n if (name && name[0].trim()) obj.name = name[0].trim()\n if (email) obj.email = email[1];\n if (url) obj.url = url[1];\n return obj\n}\n\nfunction addOptionalDepsToDeps (data, warn) {\n var o = data.optionalDependencies\n if (!o) return;\n var d = data.dependencies || {}\n Object.keys(o).forEach(function (k) {\n d[k] = o[k]\n })\n data.dependencies = d\n}\n\nfunction depObjectify (deps, type, warn) {\n if (!deps) return {}\n if (typeof deps === \"string\") {\n deps = deps.trim().split(/[\\n\\r\\s\\t ,]+/)\n }\n if (!Array.isArray(deps)) return deps\n warn(\"deprecatedArrayDependencies\", type)\n var o = {}\n deps.filter(function (d) {\n return typeof d === \"string\"\n }).forEach(function(d) {\n d = d.trim().split(/(:?[@\\s><=])/)\n var dn = d.shift()\n var dv = d.join(\"\")\n dv = dv.trim()\n dv = dv.replace(/^@/, \"\")\n o[dn] = dv\n })\n return o\n}\n\nfunction objectifyDeps (data, warn) {\n depTypes.forEach(function (type) {\n if (!data[type]) return;\n data[type] = depObjectify(data[type], type, warn)\n })\n}\n\nfunction bugsTypos(bugs, warn) {\n if (!bugs) return\n Object.keys(bugs).forEach(function (k) {\n if (typos.bugs[k]) {\n warn(\"typo\", k, typos.bugs[k], \"bugs\")\n bugs[typos.bugs[k]] = bugs[k]\n delete bugs[k]\n }\n })\n}\n", "var util = require(\"util\")\nvar messages = require(\"./warning_messages.json\")\n\nmodule.exports = function() {\n var args = Array.prototype.slice.call(arguments, 0)\n var warningName = args.shift()\n if (warningName == \"typo\") {\n return makeTypoWarning.apply(null,args)\n }\n else {\n var msgTemplate = messages[warningName] ? messages[warningName] : warningName + \": '%s'\"\n args.unshift(msgTemplate)\n return util.format.apply(null, args)\n }\n}\n\nfunction makeTypoWarning (providedName, probableName, field) {\n if (field) {\n providedName = field + \"['\" + providedName + \"']\"\n probableName = field + \"['\" + probableName + \"']\"\n }\n return util.format(messages.typo, providedName, probableName)\n}\n", "module.exports = normalize\n\nvar fixer = require(\"./fixer\")\nnormalize.fixer = fixer\n\nvar makeWarning = require(\"./make_warning\")\n\nvar fieldsToFix = ['name','version','description','repository','modules','scripts'\n ,'files','bin','man','bugs','keywords','readme','homepage','license']\nvar otherThingsToFix = ['dependencies','people', 'typos']\n\nvar thingsToFix = fieldsToFix.map(function(fieldName) {\n return ucFirst(fieldName) + \"Field\"\n})\n// two ways to do this in CoffeeScript on only one line, sub-70 chars:\n// thingsToFix = fieldsToFix.map (name) -> ucFirst(name) + \"Field\"\n// thingsToFix = (ucFirst(name) + \"Field\" for name in fieldsToFix)\nthingsToFix = thingsToFix.concat(otherThingsToFix)\n\nfunction normalize (data, warn, strict) {\n if(warn === true) warn = null, strict = true\n if(!strict) strict = false\n if(!warn || data.private) warn = function(msg) { /* noop */ }\n\n if (data.scripts &&\n data.scripts.install === \"node-gyp rebuild\" &&\n !data.scripts.preinstall) {\n data.gypfile = true\n }\n fixer.warn = function() { warn(makeWarning.apply(null, arguments)) }\n thingsToFix.forEach(function(thingName) {\n fixer[\"fix\" + ucFirst(thingName)](data, strict)\n })\n data._id = data.name + \"@\" + data.version\n}\n\nfunction ucFirst (string) {\n return string.charAt(0).toUpperCase() + string.slice(1);\n}\n", "'use strict';\nconst path = require('path');\nconst buildParserOptions = require('minimist-options');\nconst parseArguments = require('yargs-parser');\nconst camelCaseKeys = require('camelcase-keys');\nconst decamelize = require('decamelize');\nconst decamelizeKeys = require('decamelize-keys');\nconst trimNewlines = require('trim-newlines');\nconst redent = require('redent');\nconst readPkgUp = require('read-pkg-up');\nconst hardRejection = require('hard-rejection');\nconst normalizePackageData = require('normalize-package-data');\n\n// Prevent caching of this module so module.parent is always accurate\ndelete require.cache[__filename];\nconst parentDir = path.dirname(module.parent && module.parent.filename ? module.parent.filename : '.');\n\nconst isFlagMissing = (flagName, definedFlags, receivedFlags, input) => {\n\tconst flag = definedFlags[flagName];\n\tlet isFlagRequired = true;\n\n\tif (typeof flag.isRequired === 'function') {\n\t\tisFlagRequired = flag.isRequired(receivedFlags, input);\n\t\tif (typeof isFlagRequired !== 'boolean') {\n\t\t\tthrow new TypeError(`Return value for isRequired callback should be of type boolean, but ${typeof isFlagRequired} was returned.`);\n\t\t}\n\t}\n\n\tif (typeof receivedFlags[flagName] === 'undefined') {\n\t\treturn isFlagRequired;\n\t}\n\n\treturn flag.isMultiple && receivedFlags[flagName].length === 0;\n};\n\nconst getMissingRequiredFlags = (flags, receivedFlags, input) => {\n\tconst missingRequiredFlags = [];\n\tif (typeof flags === 'undefined') {\n\t\treturn [];\n\t}\n\n\tfor (const flagName of Object.keys(flags)) {\n\t\tif (flags[flagName].isRequired && isFlagMissing(flagName, flags, receivedFlags, input)) {\n\t\t\tmissingRequiredFlags.push({key: flagName, ...flags[flagName]});\n\t\t}\n\t}\n\n\treturn missingRequiredFlags;\n};\n\nconst reportMissingRequiredFlags = missingRequiredFlags => {\n\tconsole.error(`Missing required flag${missingRequiredFlags.length > 1 ? 's' : ''}`);\n\tfor (const flag of missingRequiredFlags) {\n\t\tconsole.error(`\\t--${decamelize(flag.key, '-')}${flag.alias ? `, -${flag.alias}` : ''}`);\n\t}\n};\n\nconst validateOptions = ({flags}) => {\n\tconst invalidFlags = Object.keys(flags).filter(flagKey => flagKey.includes('-') && flagKey !== '--');\n\tif (invalidFlags.length > 0) {\n\t\tthrow new Error(`Flag keys may not contain '-': ${invalidFlags.join(', ')}`);\n\t}\n};\n\nconst reportUnknownFlags = unknownFlags => {\n\tconsole.error([\n\t\t`Unknown flag${unknownFlags.length > 1 ? 's' : ''}`,\n\t\t...unknownFlags\n\t].join('\\n'));\n};\n\nconst buildParserFlags = ({flags, booleanDefault}) => {\n\tconst parserFlags = {};\n\n\tfor (const [flagKey, flagValue] of Object.entries(flags)) {\n\t\tconst flag = {...flagValue};\n\n\t\tif (\n\t\t\ttypeof booleanDefault !== 'undefined' &&\n\t\t\tflag.type === 'boolean' &&\n\t\t\t!Object.prototype.hasOwnProperty.call(flag, 'default')\n\t\t) {\n\t\t\tflag.default = flag.isMultiple ? [booleanDefault] : booleanDefault;\n\t\t}\n\n\t\tif (flag.isMultiple) {\n\t\t\tflag.type = flag.type ? `${flag.type}-array` : 'array';\n\t\t\tflag.default = flag.default || [];\n\t\t\tdelete flag.isMultiple;\n\t\t}\n\n\t\tparserFlags[flagKey] = flag;\n\t}\n\n\treturn parserFlags;\n};\n\nconst validateFlags = (flags, options) => {\n\tfor (const [flagKey, flagValue] of Object.entries(options.flags)) {\n\t\tif (flagKey !== '--' && !flagValue.isMultiple && Array.isArray(flags[flagKey])) {\n\t\t\tthrow new Error(`The flag --${flagKey} can only be set once.`);\n\t\t}\n\t}\n};\n\nconst meow = (helpText, options) => {\n\tif (typeof helpText !== 'string') {\n\t\toptions = helpText;\n\t\thelpText = '';\n\t}\n\n\tconst foundPkg = readPkgUp.sync({\n\t\tcwd: parentDir,\n\t\tnormalize: false\n\t});\n\n\toptions = {\n\t\tpkg: foundPkg ? foundPkg.packageJson : {},\n\t\targv: process.argv.slice(2),\n\t\tflags: {},\n\t\tinferType: false,\n\t\tinput: 'string',\n\t\thelp: helpText,\n\t\tautoHelp: true,\n\t\tautoVersion: true,\n\t\tbooleanDefault: false,\n\t\thardRejection: true,\n\t\tallowUnknownFlags: true,\n\t\t...options\n\t};\n\n\tif (options.hardRejection) {\n\t\thardRejection();\n\t}\n\n\tvalidateOptions(options);\n\tlet parserOptions = {\n\t\targuments: options.input,\n\t\t...buildParserFlags(options)\n\t};\n\n\tparserOptions = decamelizeKeys(parserOptions, '-', {exclude: ['stopEarly', '--']});\n\n\tif (options.inferType) {\n\t\tdelete parserOptions.arguments;\n\t}\n\n\tparserOptions = buildParserOptions(parserOptions);\n\n\tparserOptions.configuration = {\n\t\t...parserOptions.configuration,\n\t\t'greedy-arrays': false\n\t};\n\n\tif (parserOptions['--']) {\n\t\tparserOptions.configuration['populate--'] = true;\n\t}\n\n\tif (!options.allowUnknownFlags) {\n\t\t// Collect unknown options in `argv._` to be checked later.\n\t\tparserOptions.configuration['unknown-options-as-args'] = true;\n\t}\n\n\tconst {pkg} = options;\n\tconst argv = parseArguments(options.argv, parserOptions);\n\tlet help = redent(trimNewlines((options.help || '').replace(/\\t+\\n*$/, '')), 2);\n\n\tnormalizePackageData(pkg);\n\n\tprocess.title = pkg.bin ? Object.keys(pkg.bin)[0] : pkg.name;\n\n\tlet {description} = options;\n\tif (!description && description !== false) {\n\t\t({description} = pkg);\n\t}\n\n\thelp = (description ? `\\n ${description}\\n` : '') + (help ? `\\n${help}\\n` : '\\n');\n\n\tconst showHelp = code => {\n\t\tconsole.log(help);\n\t\tprocess.exit(typeof code === 'number' ? code : 2);\n\t};\n\n\tconst showVersion = () => {\n\t\tconsole.log(typeof options.version === 'string' ? options.version : pkg.version);\n\t\tprocess.exit(0);\n\t};\n\n\tif (argv._.length === 0 && options.argv.length === 1) {\n\t\tif (argv.version === true && options.autoVersion) {\n\t\t\tshowVersion();\n\t\t}\n\n\t\tif (argv.help === true && options.autoHelp) {\n\t\t\tshowHelp(0);\n\t\t}\n\t}\n\n\tconst input = argv._;\n\tdelete argv._;\n\n\tif (!options.allowUnknownFlags) {\n\t\tconst unknownFlags = input.filter(item => typeof item === 'string' && item.startsWith('-'));\n\t\tif (unknownFlags.length > 0) {\n\t\t\treportUnknownFlags(unknownFlags);\n\t\t\tprocess.exit(2);\n\t\t}\n\t}\n\n\tconst flags = camelCaseKeys(argv, {exclude: ['--', /^\\w$/]});\n\tconst unnormalizedFlags = {...flags};\n\n\tvalidateFlags(flags, options);\n\n\tfor (const flagValue of Object.values(options.flags)) {\n\t\tdelete flags[flagValue.alias];\n\t}\n\n\tconst missingRequiredFlags = getMissingRequiredFlags(options.flags, flags, input);\n\tif (missingRequiredFlags.length > 0) {\n\t\treportMissingRequiredFlags(missingRequiredFlags);\n\t\tprocess.exit(2);\n\t}\n\n\treturn {\n\t\tinput,\n\t\tflags,\n\t\tunnormalizedFlags,\n\t\tpkg,\n\t\thelp,\n\t\tshowHelp,\n\t\tshowVersion\n\t};\n};\n\nmodule.exports = meow;\n", "'use strict'\n\n// turn tar(1) style args like `C` into the more verbose things like `cwd`\n\nconst argmap = new Map([\n ['C', 'cwd'],\n ['f', 'file'],\n ['z', 'gzip'],\n ['P', 'preservePaths'],\n ['U', 'unlink'],\n ['strip-components', 'strip'],\n ['stripComponents', 'strip'],\n ['keep-newer', 'newer'],\n ['keepNewer', 'newer'],\n ['keep-newer-files', 'newer'],\n ['keepNewerFiles', 'newer'],\n ['k', 'keep'],\n ['keep-existing', 'keep'],\n ['keepExisting', 'keep'],\n ['m', 'noMtime'],\n ['no-mtime', 'noMtime'],\n ['p', 'preserveOwner'],\n ['L', 'follow'],\n ['h', 'follow'],\n])\n\nmodule.exports = opt => opt ? Object.keys(opt).map(k => [\n argmap.has(k) ? argmap.get(k) : k, opt[k],\n]).reduce((set, kv) => (set[kv[0]] = kv[1], set), Object.create(null)) : {}\n", "'use strict'\nconst EE = require('events')\nconst Stream = require('stream')\nconst Yallist = require('yallist')\nconst SD = require('string_decoder').StringDecoder\n\nconst EOF = Symbol('EOF')\nconst MAYBE_EMIT_END = Symbol('maybeEmitEnd')\nconst EMITTED_END = Symbol('emittedEnd')\nconst EMITTING_END = Symbol('emittingEnd')\nconst CLOSED = Symbol('closed')\nconst READ = Symbol('read')\nconst FLUSH = Symbol('flush')\nconst FLUSHCHUNK = Symbol('flushChunk')\nconst ENCODING = Symbol('encoding')\nconst DECODER = Symbol('decoder')\nconst FLOWING = Symbol('flowing')\nconst PAUSED = Symbol('paused')\nconst RESUME = Symbol('resume')\nconst BUFFERLENGTH = Symbol('bufferLength')\nconst BUFFERPUSH = Symbol('bufferPush')\nconst BUFFERSHIFT = Symbol('bufferShift')\nconst OBJECTMODE = Symbol('objectMode')\nconst DESTROYED = Symbol('destroyed')\n\n// TODO remove when Node v8 support drops\nconst doIter = global._MP_NO_ITERATOR_SYMBOLS_ !== '1'\nconst ASYNCITERATOR = doIter && Symbol.asyncIterator\n || Symbol('asyncIterator not implemented')\nconst ITERATOR = doIter && Symbol.iterator\n || Symbol('iterator not implemented')\n\n// events that mean 'the stream is over'\n// these are treated specially, and re-emitted\n// if they are listened for after emitting.\nconst isEndish = ev =>\n ev === 'end' ||\n ev === 'finish' ||\n ev === 'prefinish'\n\nconst isArrayBuffer = b => b instanceof ArrayBuffer ||\n typeof b === 'object' &&\n b.constructor &&\n b.constructor.name === 'ArrayBuffer' &&\n b.byteLength >= 0\n\nconst isArrayBufferView = b => !Buffer.isBuffer(b) && ArrayBuffer.isView(b)\n\nmodule.exports = class Minipass extends Stream {\n constructor (options) {\n super()\n this[FLOWING] = false\n // whether we're explicitly paused\n this[PAUSED] = false\n this.pipes = new Yallist()\n this.buffer = new Yallist()\n this[OBJECTMODE] = options && options.objectMode || false\n if (this[OBJECTMODE])\n this[ENCODING] = null\n else\n this[ENCODING] = options && options.encoding || null\n if (this[ENCODING] === 'buffer')\n this[ENCODING] = null\n this[DECODER] = this[ENCODING] ? new SD(this[ENCODING]) : null\n this[EOF] = false\n this[EMITTED_END] = false\n this[EMITTING_END] = false\n this[CLOSED] = false\n this.writable = true\n this.readable = true\n this[BUFFERLENGTH] = 0\n this[DESTROYED] = false\n }\n\n get bufferLength () { return this[BUFFERLENGTH] }\n\n get encoding () { return this[ENCODING] }\n set encoding (enc) {\n if (this[OBJECTMODE])\n throw new Error('cannot set encoding in objectMode')\n\n if (this[ENCODING] && enc !== this[ENCODING] &&\n (this[DECODER] && this[DECODER].lastNeed || this[BUFFERLENGTH]))\n throw new Error('cannot change encoding')\n\n if (this[ENCODING] !== enc) {\n this[DECODER] = enc ? new SD(enc) : null\n if (this.buffer.length)\n this.buffer = this.buffer.map(chunk => this[DECODER].write(chunk))\n }\n\n this[ENCODING] = enc\n }\n\n setEncoding (enc) {\n this.encoding = enc\n }\n\n get objectMode () { return this[OBJECTMODE] }\n set objectMode (om) { this[OBJECTMODE] = this[OBJECTMODE] || !!om }\n\n write (chunk, encoding, cb) {\n if (this[EOF])\n throw new Error('write after end')\n\n if (this[DESTROYED]) {\n this.emit('error', Object.assign(\n new Error('Cannot call write after a stream was destroyed'),\n { code: 'ERR_STREAM_DESTROYED' }\n ))\n return true\n }\n\n if (typeof encoding === 'function')\n cb = encoding, encoding = 'utf8'\n\n if (!encoding)\n encoding = 'utf8'\n\n // convert array buffers and typed array views into buffers\n // at some point in the future, we may want to do the opposite!\n // leave strings and buffers as-is\n // anything else switches us into object mode\n if (!this[OBJECTMODE] && !Buffer.isBuffer(chunk)) {\n if (isArrayBufferView(chunk))\n chunk = Buffer.from(chunk.buffer, chunk.byteOffset, chunk.byteLength)\n else if (isArrayBuffer(chunk))\n chunk = Buffer.from(chunk)\n else if (typeof chunk !== 'string')\n // use the setter so we throw if we have encoding set\n this.objectMode = true\n }\n\n // this ensures at this point that the chunk is a buffer or string\n // don't buffer it up or send it to the decoder\n if (!this.objectMode && !chunk.length) {\n if (this[BUFFERLENGTH] !== 0)\n this.emit('readable')\n if (cb)\n cb()\n return this.flowing\n }\n\n // fast-path writing strings of same encoding to a stream with\n // an empty buffer, skipping the buffer/decoder dance\n if (typeof chunk === 'string' && !this[OBJECTMODE] &&\n // unless it is a string already ready for us to use\n !(encoding === this[ENCODING] && !this[DECODER].lastNeed)) {\n chunk = Buffer.from(chunk, encoding)\n }\n\n if (Buffer.isBuffer(chunk) && this[ENCODING])\n chunk = this[DECODER].write(chunk)\n\n if (this.flowing) {\n // if we somehow have something in the buffer, but we think we're\n // flowing, then we need to flush all that out first, or we get\n // chunks coming in out of order. Can't emit 'drain' here though,\n // because we're mid-write, so that'd be bad.\n if (this[BUFFERLENGTH] !== 0)\n this[FLUSH](true)\n this.emit('data', chunk)\n } else\n this[BUFFERPUSH](chunk)\n\n if (this[BUFFERLENGTH] !== 0)\n this.emit('readable')\n\n if (cb)\n cb()\n\n return this.flowing\n }\n\n read (n) {\n if (this[DESTROYED])\n return null\n\n try {\n if (this[BUFFERLENGTH] === 0 || n === 0 || n > this[BUFFERLENGTH])\n return null\n\n if (this[OBJECTMODE])\n n = null\n\n if (this.buffer.length > 1 && !this[OBJECTMODE]) {\n if (this.encoding)\n this.buffer = new Yallist([\n Array.from(this.buffer).join('')\n ])\n else\n this.buffer = new Yallist([\n Buffer.concat(Array.from(this.buffer), this[BUFFERLENGTH])\n ])\n }\n\n return this[READ](n || null, this.buffer.head.value)\n } finally {\n this[MAYBE_EMIT_END]()\n }\n }\n\n [READ] (n, chunk) {\n if (n === chunk.length || n === null)\n this[BUFFERSHIFT]()\n else {\n this.buffer.head.value = chunk.slice(n)\n chunk = chunk.slice(0, n)\n this[BUFFERLENGTH] -= n\n }\n\n this.emit('data', chunk)\n\n if (!this.buffer.length && !this[EOF])\n this.emit('drain')\n\n return chunk\n }\n\n end (chunk, encoding, cb) {\n if (typeof chunk === 'function')\n cb = chunk, chunk = null\n if (typeof encoding === 'function')\n cb = encoding, encoding = 'utf8'\n if (chunk)\n this.write(chunk, encoding)\n if (cb)\n this.once('end', cb)\n this[EOF] = true\n this.writable = false\n\n // if we haven't written anything, then go ahead and emit,\n // even if we're not reading.\n // we'll re-emit if a new 'end' listener is added anyway.\n // This makes MP more suitable to write-only use cases.\n if (this.flowing || !this[PAUSED])\n this[MAYBE_EMIT_END]()\n return this\n }\n\n // don't let the internal resume be overwritten\n [RESUME] () {\n if (this[DESTROYED])\n return\n\n this[PAUSED] = false\n this[FLOWING] = true\n this.emit('resume')\n if (this.buffer.length)\n this[FLUSH]()\n else if (this[EOF])\n this[MAYBE_EMIT_END]()\n else\n this.emit('drain')\n }\n\n resume () {\n return this[RESUME]()\n }\n\n pause () {\n this[FLOWING] = false\n this[PAUSED] = true\n }\n\n get destroyed () {\n return this[DESTROYED]\n }\n\n get flowing () {\n return this[FLOWING]\n }\n\n get paused () {\n return this[PAUSED]\n }\n\n [BUFFERPUSH] (chunk) {\n if (this[OBJECTMODE])\n this[BUFFERLENGTH] += 1\n else\n this[BUFFERLENGTH] += chunk.length\n return this.buffer.push(chunk)\n }\n\n [BUFFERSHIFT] () {\n if (this.buffer.length) {\n if (this[OBJECTMODE])\n this[BUFFERLENGTH] -= 1\n else\n this[BUFFERLENGTH] -= this.buffer.head.value.length\n }\n return this.buffer.shift()\n }\n\n [FLUSH] (noDrain) {\n do {} while (this[FLUSHCHUNK](this[BUFFERSHIFT]()))\n\n if (!noDrain && !this.buffer.length && !this[EOF])\n this.emit('drain')\n }\n\n [FLUSHCHUNK] (chunk) {\n return chunk ? (this.emit('data', chunk), this.flowing) : false\n }\n\n pipe (dest, opts) {\n if (this[DESTROYED])\n return\n\n const ended = this[EMITTED_END]\n opts = opts || {}\n if (dest === process.stdout || dest === process.stderr)\n opts.end = false\n else\n opts.end = opts.end !== false\n\n const p = { dest: dest, opts: opts, ondrain: _ => this[RESUME]() }\n this.pipes.push(p)\n\n dest.on('drain', p.ondrain)\n this[RESUME]()\n // piping an ended stream ends immediately\n if (ended && p.opts.end)\n p.dest.end()\n return dest\n }\n\n addListener (ev, fn) {\n return this.on(ev, fn)\n }\n\n on (ev, fn) {\n try {\n return super.on(ev, fn)\n } finally {\n if (ev === 'data' && !this.pipes.length && !this.flowing)\n this[RESUME]()\n else if (isEndish(ev) && this[EMITTED_END]) {\n super.emit(ev)\n this.removeAllListeners(ev)\n }\n }\n }\n\n get emittedEnd () {\n return this[EMITTED_END]\n }\n\n [MAYBE_EMIT_END] () {\n if (!this[EMITTING_END] &&\n !this[EMITTED_END] &&\n !this[DESTROYED] &&\n this.buffer.length === 0 &&\n this[EOF]) {\n this[EMITTING_END] = true\n this.emit('end')\n this.emit('prefinish')\n this.emit('finish')\n if (this[CLOSED])\n this.emit('close')\n this[EMITTING_END] = false\n }\n }\n\n emit (ev, data) {\n // error and close are only events allowed after calling destroy()\n if (ev !== 'error' && ev !== 'close' && ev !== DESTROYED && this[DESTROYED])\n return\n else if (ev === 'data') {\n if (!data)\n return\n\n if (this.pipes.length)\n this.pipes.forEach(p =>\n p.dest.write(data) === false && this.pause())\n } else if (ev === 'end') {\n // only actual end gets this treatment\n if (this[EMITTED_END] === true)\n return\n\n this[EMITTED_END] = true\n this.readable = false\n\n if (this[DECODER]) {\n data = this[DECODER].end()\n if (data) {\n this.pipes.forEach(p => p.dest.write(data))\n super.emit('data', data)\n }\n }\n\n this.pipes.forEach(p => {\n p.dest.removeListener('drain', p.ondrain)\n if (p.opts.end)\n p.dest.end()\n })\n } else if (ev === 'close') {\n this[CLOSED] = true\n // don't emit close before 'end' and 'finish'\n if (!this[EMITTED_END] && !this[DESTROYED])\n return\n }\n\n // TODO: replace with a spread operator when Node v4 support drops\n const args = new Array(arguments.length)\n args[0] = ev\n args[1] = data\n if (arguments.length > 2) {\n for (let i = 2; i < arguments.length; i++) {\n args[i] = arguments[i]\n }\n }\n\n try {\n return super.emit.apply(this, args)\n } finally {\n if (!isEndish(ev))\n this[MAYBE_EMIT_END]()\n else\n this.removeAllListeners(ev)\n }\n }\n\n // const all = await stream.collect()\n collect () {\n const buf = []\n if (!this[OBJECTMODE])\n buf.dataLength = 0\n // set the promise first, in case an error is raised\n // by triggering the flow here.\n const p = this.promise()\n this.on('data', c => {\n buf.push(c)\n if (!this[OBJECTMODE])\n buf.dataLength += c.length\n })\n return p.then(() => buf)\n }\n\n // const data = await stream.concat()\n concat () {\n return this[OBJECTMODE]\n ? Promise.reject(new Error('cannot concat in objectMode'))\n : this.collect().then(buf =>\n this[OBJECTMODE]\n ? Promise.reject(new Error('cannot concat in objectMode'))\n : this[ENCODING] ? buf.join('') : Buffer.concat(buf, buf.dataLength))\n }\n\n // stream.promise().then(() => done, er => emitted error)\n promise () {\n return new Promise((resolve, reject) => {\n this.on(DESTROYED, () => reject(new Error('stream destroyed')))\n this.on('end', () => resolve())\n this.on('error', er => reject(er))\n })\n }\n\n // for await (let chunk of stream)\n [ASYNCITERATOR] () {\n const next = () => {\n const res = this.read()\n if (res !== null)\n return Promise.resolve({ done: false, value: res })\n\n if (this[EOF])\n return Promise.resolve({ done: true })\n\n let resolve = null\n let reject = null\n const onerr = er => {\n this.removeListener('data', ondata)\n this.removeListener('end', onend)\n reject(er)\n }\n const ondata = value => {\n this.removeListener('error', onerr)\n this.removeListener('end', onend)\n this.pause()\n resolve({ value: value, done: !!this[EOF] })\n }\n const onend = () => {\n this.removeListener('error', onerr)\n this.removeListener('data', ondata)\n resolve({ done: true })\n }\n const ondestroy = () => onerr(new Error('stream destroyed'))\n return new Promise((res, rej) => {\n reject = rej\n resolve = res\n this.once(DESTROYED, ondestroy)\n this.once('error', onerr)\n this.once('end', onend)\n this.once('data', ondata)\n })\n }\n\n return { next }\n }\n\n // for (let chunk of stream)\n [ITERATOR] () {\n const next = () => {\n const value = this.read()\n const done = value === null\n return { value, done }\n }\n return { next }\n }\n\n destroy (er) {\n if (this[DESTROYED]) {\n if (er)\n this.emit('error', er)\n else\n this.emit(DESTROYED)\n return this\n }\n\n this[DESTROYED] = true\n\n // throw away all buffered data, it's never coming out\n this.buffer = new Yallist()\n this[BUFFERLENGTH] = 0\n\n if (typeof this.close === 'function' && !this[CLOSED])\n this.close()\n\n if (er)\n this.emit('error', er)\n else // if no error to emit, still reject pending promises\n this.emit(DESTROYED)\n\n return this\n }\n\n static isStream (s) {\n return !!s && (s instanceof Minipass || s instanceof Stream ||\n s instanceof EE && (\n typeof s.pipe === 'function' || // readable\n (typeof s.write === 'function' && typeof s.end === 'function') // writable\n ))\n }\n}\n", "// Update with any zlib constants that are added or changed in the future.\n// Node v6 didn't export this, so we just hard code the version and rely\n// on all the other hard-coded values from zlib v4736. When node v6\n// support drops, we can just export the realZlibConstants object.\nconst realZlibConstants = require('zlib').constants ||\n /* istanbul ignore next */ { ZLIB_VERNUM: 4736 }\n\nmodule.exports = Object.freeze(Object.assign(Object.create(null), {\n Z_NO_FLUSH: 0,\n Z_PARTIAL_FLUSH: 1,\n Z_SYNC_FLUSH: 2,\n Z_FULL_FLUSH: 3,\n Z_FINISH: 4,\n Z_BLOCK: 5,\n Z_OK: 0,\n Z_STREAM_END: 1,\n Z_NEED_DICT: 2,\n Z_ERRNO: -1,\n Z_STREAM_ERROR: -2,\n Z_DATA_ERROR: -3,\n Z_MEM_ERROR: -4,\n Z_BUF_ERROR: -5,\n Z_VERSION_ERROR: -6,\n Z_NO_COMPRESSION: 0,\n Z_BEST_SPEED: 1,\n Z_BEST_COMPRESSION: 9,\n Z_DEFAULT_COMPRESSION: -1,\n Z_FILTERED: 1,\n Z_HUFFMAN_ONLY: 2,\n Z_RLE: 3,\n Z_FIXED: 4,\n Z_DEFAULT_STRATEGY: 0,\n DEFLATE: 1,\n INFLATE: 2,\n GZIP: 3,\n GUNZIP: 4,\n DEFLATERAW: 5,\n INFLATERAW: 6,\n UNZIP: 7,\n BROTLI_DECODE: 8,\n BROTLI_ENCODE: 9,\n Z_MIN_WINDOWBITS: 8,\n Z_MAX_WINDOWBITS: 15,\n Z_DEFAULT_WINDOWBITS: 15,\n Z_MIN_CHUNK: 64,\n Z_MAX_CHUNK: Infinity,\n Z_DEFAULT_CHUNK: 16384,\n Z_MIN_MEMLEVEL: 1,\n Z_MAX_MEMLEVEL: 9,\n Z_DEFAULT_MEMLEVEL: 8,\n Z_MIN_LEVEL: -1,\n Z_MAX_LEVEL: 9,\n Z_DEFAULT_LEVEL: -1,\n BROTLI_OPERATION_PROCESS: 0,\n BROTLI_OPERATION_FLUSH: 1,\n BROTLI_OPERATION_FINISH: 2,\n BROTLI_OPERATION_EMIT_METADATA: 3,\n BROTLI_MODE_GENERIC: 0,\n BROTLI_MODE_TEXT: 1,\n BROTLI_MODE_FONT: 2,\n BROTLI_DEFAULT_MODE: 0,\n BROTLI_MIN_QUALITY: 0,\n BROTLI_MAX_QUALITY: 11,\n BROTLI_DEFAULT_QUALITY: 11,\n BROTLI_MIN_WINDOW_BITS: 10,\n BROTLI_MAX_WINDOW_BITS: 24,\n BROTLI_LARGE_MAX_WINDOW_BITS: 30,\n BROTLI_DEFAULT_WINDOW: 22,\n BROTLI_MIN_INPUT_BLOCK_BITS: 16,\n BROTLI_MAX_INPUT_BLOCK_BITS: 24,\n BROTLI_PARAM_MODE: 0,\n BROTLI_PARAM_QUALITY: 1,\n BROTLI_PARAM_LGWIN: 2,\n BROTLI_PARAM_LGBLOCK: 3,\n BROTLI_PARAM_DISABLE_LITERAL_CONTEXT_MODELING: 4,\n BROTLI_PARAM_SIZE_HINT: 5,\n BROTLI_PARAM_LARGE_WINDOW: 6,\n BROTLI_PARAM_NPOSTFIX: 7,\n BROTLI_PARAM_NDIRECT: 8,\n BROTLI_DECODER_RESULT_ERROR: 0,\n BROTLI_DECODER_RESULT_SUCCESS: 1,\n BROTLI_DECODER_RESULT_NEEDS_MORE_INPUT: 2,\n BROTLI_DECODER_RESULT_NEEDS_MORE_OUTPUT: 3,\n BROTLI_DECODER_PARAM_DISABLE_RING_BUFFER_REALLOCATION: 0,\n BROTLI_DECODER_PARAM_LARGE_WINDOW: 1,\n BROTLI_DECODER_NO_ERROR: 0,\n BROTLI_DECODER_SUCCESS: 1,\n BROTLI_DECODER_NEEDS_MORE_INPUT: 2,\n BROTLI_DECODER_NEEDS_MORE_OUTPUT: 3,\n BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_NIBBLE: -1,\n BROTLI_DECODER_ERROR_FORMAT_RESERVED: -2,\n BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_META_NIBBLE: -3,\n BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_ALPHABET: -4,\n BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_SAME: -5,\n BROTLI_DECODER_ERROR_FORMAT_CL_SPACE: -6,\n BROTLI_DECODER_ERROR_FORMAT_HUFFMAN_SPACE: -7,\n BROTLI_DECODER_ERROR_FORMAT_CONTEXT_MAP_REPEAT: -8,\n BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_1: -9,\n BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_2: -10,\n BROTLI_DECODER_ERROR_FORMAT_TRANSFORM: -11,\n BROTLI_DECODER_ERROR_FORMAT_DICTIONARY: -12,\n BROTLI_DECODER_ERROR_FORMAT_WINDOW_BITS: -13,\n BROTLI_DECODER_ERROR_FORMAT_PADDING_1: -14,\n BROTLI_DECODER_ERROR_FORMAT_PADDING_2: -15,\n BROTLI_DECODER_ERROR_FORMAT_DISTANCE: -16,\n BROTLI_DECODER_ERROR_DICTIONARY_NOT_SET: -19,\n BROTLI_DECODER_ERROR_INVALID_ARGUMENTS: -20,\n BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MODES: -21,\n BROTLI_DECODER_ERROR_ALLOC_TREE_GROUPS: -22,\n BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MAP: -25,\n BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_1: -26,\n BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_2: -27,\n BROTLI_DECODER_ERROR_ALLOC_BLOCK_TYPE_TREES: -30,\n BROTLI_DECODER_ERROR_UNREACHABLE: -31,\n}, realZlibConstants))\n", "'use strict'\n\nconst assert = require('assert')\nconst Buffer = require('buffer').Buffer\nconst realZlib = require('zlib')\n\nconst constants = exports.constants = require('./constants.js')\nconst Minipass = require('minipass')\n\nconst OriginalBufferConcat = Buffer.concat\n\nconst _superWrite = Symbol('_superWrite')\nclass ZlibError extends Error {\n constructor (err) {\n super('zlib: ' + err.message)\n this.code = err.code\n this.errno = err.errno\n /* istanbul ignore if */\n if (!this.code)\n this.code = 'ZLIB_ERROR'\n\n this.message = 'zlib: ' + err.message\n Error.captureStackTrace(this, this.constructor)\n }\n\n get name () {\n return 'ZlibError'\n }\n}\n\n// the Zlib class they all inherit from\n// This thing manages the queue of requests, and returns\n// true or false if there is anything in the queue when\n// you call the .write() method.\nconst _opts = Symbol('opts')\nconst _flushFlag = Symbol('flushFlag')\nconst _finishFlushFlag = Symbol('finishFlushFlag')\nconst _fullFlushFlag = Symbol('fullFlushFlag')\nconst _handle = Symbol('handle')\nconst _onError = Symbol('onError')\nconst _sawError = Symbol('sawError')\nconst _level = Symbol('level')\nconst _strategy = Symbol('strategy')\nconst _ended = Symbol('ended')\nconst _defaultFullFlush = Symbol('_defaultFullFlush')\n\nclass ZlibBase extends Minipass {\n constructor (opts, mode) {\n if (!opts || typeof opts !== 'object')\n throw new TypeError('invalid options for ZlibBase constructor')\n\n super(opts)\n this[_sawError] = false\n this[_ended] = false\n this[_opts] = opts\n\n this[_flushFlag] = opts.flush\n this[_finishFlushFlag] = opts.finishFlush\n // this will throw if any options are invalid for the class selected\n try {\n this[_handle] = new realZlib[mode](opts)\n } catch (er) {\n // make sure that all errors get decorated properly\n throw new ZlibError(er)\n }\n\n this[_onError] = (err) => {\n // no sense raising multiple errors, since we abort on the first one.\n if (this[_sawError])\n return\n\n this[_sawError] = true\n\n // there is no way to cleanly recover.\n // continuing only obscures problems.\n this.close()\n this.emit('error', err)\n }\n\n this[_handle].on('error', er => this[_onError](new ZlibError(er)))\n this.once('end', () => this.close)\n }\n\n close () {\n if (this[_handle]) {\n this[_handle].close()\n this[_handle] = null\n this.emit('close')\n }\n }\n\n reset () {\n if (!this[_sawError]) {\n assert(this[_handle], 'zlib binding closed')\n return this[_handle].reset()\n }\n }\n\n flush (flushFlag) {\n if (this.ended)\n return\n\n if (typeof flushFlag !== 'number')\n flushFlag = this[_fullFlushFlag]\n this.write(Object.assign(Buffer.alloc(0), { [_flushFlag]: flushFlag }))\n }\n\n end (chunk, encoding, cb) {\n if (chunk)\n this.write(chunk, encoding)\n this.flush(this[_finishFlushFlag])\n this[_ended] = true\n return super.end(null, null, cb)\n }\n\n get ended () {\n return this[_ended]\n }\n\n write (chunk, encoding, cb) {\n // process the chunk using the sync process\n // then super.write() all the outputted chunks\n if (typeof encoding === 'function')\n cb = encoding, encoding = 'utf8'\n\n if (typeof chunk === 'string')\n chunk = Buffer.from(chunk, encoding)\n\n if (this[_sawError])\n return\n assert(this[_handle], 'zlib binding closed')\n\n // _processChunk tries to .close() the native handle after it's done, so we\n // intercept that by temporarily making it a no-op.\n const nativeHandle = this[_handle]._handle\n const originalNativeClose = nativeHandle.close\n nativeHandle.close = () => {}\n const originalClose = this[_handle].close\n this[_handle].close = () => {}\n // It also calls `Buffer.concat()` at the end, which may be convenient\n // for some, but which we are not interested in as it slows us down.\n Buffer.concat = (args) => args\n let result\n try {\n const flushFlag = typeof chunk[_flushFlag] === 'number'\n ? chunk[_flushFlag] : this[_flushFlag]\n result = this[_handle]._processChunk(chunk, flushFlag)\n // if we don't throw, reset it back how it was\n Buffer.concat = OriginalBufferConcat\n } catch (err) {\n // or if we do, put Buffer.concat() back before we emit error\n // Error events call into user code, which may call Buffer.concat()\n Buffer.concat = OriginalBufferConcat\n this[_onError](new ZlibError(err))\n } finally {\n if (this[_handle]) {\n // Core zlib resets `_handle` to null after attempting to close the\n // native handle. Our no-op handler prevented actual closure, but we\n // need to restore the `._handle` property.\n this[_handle]._handle = nativeHandle\n nativeHandle.close = originalNativeClose\n this[_handle].close = originalClose\n // `_processChunk()` adds an 'error' listener. If we don't remove it\n // after each call, these handlers start piling up.\n this[_handle].removeAllListeners('error')\n // make sure OUR error listener is still attached tho\n }\n }\n\n if (this[_handle])\n this[_handle].on('error', er => this[_onError](new ZlibError(er)))\n\n let writeReturn\n if (result) {\n if (Array.isArray(result) && result.length > 0) {\n // The first buffer is always `handle._outBuffer`, which would be\n // re-used for later invocations; so, we always have to copy that one.\n writeReturn = this[_superWrite](Buffer.from(result[0]))\n for (let i = 1; i < result.length; i++) {\n writeReturn = this[_superWrite](result[i])\n }\n } else {\n writeReturn = this[_superWrite](Buffer.from(result))\n }\n }\n\n if (cb)\n cb()\n return writeReturn\n }\n\n [_superWrite] (data) {\n return super.write(data)\n }\n}\n\nclass Zlib extends ZlibBase {\n constructor (opts, mode) {\n opts = opts || {}\n\n opts.flush = opts.flush || constants.Z_NO_FLUSH\n opts.finishFlush = opts.finishFlush || constants.Z_FINISH\n super(opts, mode)\n\n this[_fullFlushFlag] = constants.Z_FULL_FLUSH\n this[_level] = opts.level\n this[_strategy] = opts.strategy\n }\n\n params (level, strategy) {\n if (this[_sawError])\n return\n\n if (!this[_handle])\n throw new Error('cannot switch params when binding is closed')\n\n // no way to test this without also not supporting params at all\n /* istanbul ignore if */\n if (!this[_handle].params)\n throw new Error('not supported in this implementation')\n\n if (this[_level] !== level || this[_strategy] !== strategy) {\n this.flush(constants.Z_SYNC_FLUSH)\n assert(this[_handle], 'zlib binding closed')\n // .params() calls .flush(), but the latter is always async in the\n // core zlib. We override .flush() temporarily to intercept that and\n // flush synchronously.\n const origFlush = this[_handle].flush\n this[_handle].flush = (flushFlag, cb) => {\n this.flush(flushFlag)\n cb()\n }\n try {\n this[_handle].params(level, strategy)\n } finally {\n this[_handle].flush = origFlush\n }\n /* istanbul ignore else */\n if (this[_handle]) {\n this[_level] = level\n this[_strategy] = strategy\n }\n }\n }\n}\n\n// minimal 2-byte header\nclass Deflate extends Zlib {\n constructor (opts) {\n super(opts, 'Deflate')\n }\n}\n\nclass Inflate extends Zlib {\n constructor (opts) {\n super(opts, 'Inflate')\n }\n}\n\n// gzip - bigger header, same deflate compression\nconst _portable = Symbol('_portable')\nclass Gzip extends Zlib {\n constructor (opts) {\n super(opts, 'Gzip')\n this[_portable] = opts && !!opts.portable\n }\n\n [_superWrite] (data) {\n if (!this[_portable])\n return super[_superWrite](data)\n\n // we'll always get the header emitted in one first chunk\n // overwrite the OS indicator byte with 0xFF\n this[_portable] = false\n data[9] = 255\n return super[_superWrite](data)\n }\n}\n\nclass Gunzip extends Zlib {\n constructor (opts) {\n super(opts, 'Gunzip')\n }\n}\n\n// raw - no header\nclass DeflateRaw extends Zlib {\n constructor (opts) {\n super(opts, 'DeflateRaw')\n }\n}\n\nclass InflateRaw extends Zlib {\n constructor (opts) {\n super(opts, 'InflateRaw')\n }\n}\n\n// auto-detect header.\nclass Unzip extends Zlib {\n constructor (opts) {\n super(opts, 'Unzip')\n }\n}\n\nclass Brotli extends ZlibBase {\n constructor (opts, mode) {\n opts = opts || {}\n\n opts.flush = opts.flush || constants.BROTLI_OPERATION_PROCESS\n opts.finishFlush = opts.finishFlush || constants.BROTLI_OPERATION_FINISH\n\n super(opts, mode)\n\n this[_fullFlushFlag] = constants.BROTLI_OPERATION_FLUSH\n }\n}\n\nclass BrotliCompress extends Brotli {\n constructor (opts) {\n super(opts, 'BrotliCompress')\n }\n}\n\nclass BrotliDecompress extends Brotli {\n constructor (opts) {\n super(opts, 'BrotliDecompress')\n }\n}\n\nexports.Deflate = Deflate\nexports.Inflate = Inflate\nexports.Gzip = Gzip\nexports.Gunzip = Gunzip\nexports.DeflateRaw = DeflateRaw\nexports.InflateRaw = InflateRaw\nexports.Unzip = Unzip\n/* istanbul ignore else */\nif (typeof realZlib.BrotliCompress === 'function') {\n exports.BrotliCompress = BrotliCompress\n exports.BrotliDecompress = BrotliDecompress\n} else {\n exports.BrotliCompress = exports.BrotliDecompress = class {\n constructor () {\n throw new Error('Brotli is not supported in this version of Node.js')\n }\n }\n}\n", "'use strict'\nconst MiniPass = require('minipass')\n\nconst SLURP = Symbol('slurp')\nmodule.exports = class ReadEntry extends MiniPass {\n constructor (header, ex, gex) {\n super()\n // read entries always start life paused. this is to avoid the\n // situation where Minipass's auto-ending empty streams results\n // in an entry ending before we're ready for it.\n this.pause()\n this.extended = ex\n this.globalExtended = gex\n this.header = header\n this.startBlockSize = 512 * Math.ceil(header.size / 512)\n this.blockRemain = this.startBlockSize\n this.remain = header.size\n this.type = header.type\n this.meta = false\n this.ignore = false\n switch (this.type) {\n case 'File':\n case 'OldFile':\n case 'Link':\n case 'SymbolicLink':\n case 'CharacterDevice':\n case 'BlockDevice':\n case 'Directory':\n case 'FIFO':\n case 'ContiguousFile':\n case 'GNUDumpDir':\n break\n\n case 'NextFileHasLongLinkpath':\n case 'NextFileHasLongPath':\n case 'OldGnuLongPath':\n case 'GlobalExtendedHeader':\n case 'ExtendedHeader':\n case 'OldExtendedHeader':\n this.meta = true\n break\n\n // NOTE: gnutar and bsdtar treat unrecognized types as 'File'\n // it may be worth doing the same, but with a warning.\n default:\n this.ignore = true\n }\n\n this.path = header.path\n this.mode = header.mode\n if (this.mode)\n this.mode = this.mode & 0o7777\n this.uid = header.uid\n this.gid = header.gid\n this.uname = header.uname\n this.gname = header.gname\n this.size = header.size\n this.mtime = header.mtime\n this.atime = header.atime\n this.ctime = header.ctime\n this.linkpath = header.linkpath\n this.uname = header.uname\n this.gname = header.gname\n\n if (ex)\n this[SLURP](ex)\n if (gex)\n this[SLURP](gex, true)\n }\n\n write (data) {\n const writeLen = data.length\n if (writeLen > this.blockRemain)\n throw new Error('writing more to entry than is appropriate')\n\n const r = this.remain\n const br = this.blockRemain\n this.remain = Math.max(0, r - writeLen)\n this.blockRemain = Math.max(0, br - writeLen)\n if (this.ignore)\n return true\n\n if (r >= writeLen)\n return super.write(data)\n\n // r < writeLen\n return super.write(data.slice(0, r))\n }\n\n [SLURP] (ex, global) {\n for (const k in ex) {\n // we slurp in everything except for the path attribute in\n // a global extended header, because that's weird.\n if (ex[k] !== null && ex[k] !== undefined &&\n !(global && k === 'path'))\n this[k] = ex[k]\n }\n }\n}\n", "'use strict'\n// map types from key to human-friendly name\nexports.name = new Map([\n ['0', 'File'],\n // same as File\n ['', 'OldFile'],\n ['1', 'Link'],\n ['2', 'SymbolicLink'],\n // Devices and FIFOs aren't fully supported\n // they are parsed, but skipped when unpacking\n ['3', 'CharacterDevice'],\n ['4', 'BlockDevice'],\n ['5', 'Directory'],\n ['6', 'FIFO'],\n // same as File\n ['7', 'ContiguousFile'],\n // pax headers\n ['g', 'GlobalExtendedHeader'],\n ['x', 'ExtendedHeader'],\n // vendor-specific stuff\n // skip\n ['A', 'SolarisACL'],\n // like 5, but with data, which should be skipped\n ['D', 'GNUDumpDir'],\n // metadata only, skip\n ['I', 'Inode'],\n // data = link path of next file\n ['K', 'NextFileHasLongLinkpath'],\n // data = path of next file\n ['L', 'NextFileHasLongPath'],\n // skip\n ['M', 'ContinuationFile'],\n // like L\n ['N', 'OldGnuLongPath'],\n // skip\n ['S', 'SparseFile'],\n // skip\n ['V', 'TapeVolumeHeader'],\n // like x\n ['X', 'OldExtendedHeader'],\n])\n\n// map the other direction\nexports.code = new Map(Array.from(exports.name).map(kv => [kv[1], kv[0]]))\n", "'use strict'\n// Tar can encode large and negative numbers using a leading byte of\n// 0xff for negative, and 0x80 for positive.\n\nconst encode = (num, buf) => {\n if (!Number.isSafeInteger(num))\n // The number is so large that javascript cannot represent it with integer\n // precision.\n throw Error('cannot encode number outside of javascript safe integer range')\n else if (num < 0)\n encodeNegative(num, buf)\n else\n encodePositive(num, buf)\n return buf\n}\n\nconst encodePositive = (num, buf) => {\n buf[0] = 0x80\n\n for (var i = buf.length; i > 1; i--) {\n buf[i - 1] = num & 0xff\n num = Math.floor(num / 0x100)\n }\n}\n\nconst encodeNegative = (num, buf) => {\n buf[0] = 0xff\n var flipped = false\n num = num * -1\n for (var i = buf.length; i > 1; i--) {\n var byte = num & 0xff\n num = Math.floor(num / 0x100)\n if (flipped)\n buf[i - 1] = onesComp(byte)\n else if (byte === 0)\n buf[i - 1] = 0\n else {\n flipped = true\n buf[i - 1] = twosComp(byte)\n }\n }\n}\n\nconst parse = (buf) => {\n const pre = buf[0]\n const value = pre === 0x80 ? pos(buf.slice(1, buf.length))\n : pre === 0xff ? twos(buf)\n : null\n if (value === null)\n throw Error('invalid base256 encoding')\n\n if (!Number.isSafeInteger(value))\n // The number is so large that javascript cannot represent it with integer\n // precision.\n throw Error('parsed number outside of javascript safe integer range')\n\n return value\n}\n\nconst twos = (buf) => {\n var len = buf.length\n var sum = 0\n var flipped = false\n for (var i = len - 1; i > -1; i--) {\n var byte = buf[i]\n var f\n if (flipped)\n f = onesComp(byte)\n else if (byte === 0)\n f = byte\n else {\n flipped = true\n f = twosComp(byte)\n }\n if (f !== 0)\n sum -= f * Math.pow(256, len - i - 1)\n }\n return sum\n}\n\nconst pos = (buf) => {\n var len = buf.length\n var sum = 0\n for (var i = len - 1; i > -1; i--) {\n var byte = buf[i]\n if (byte !== 0)\n sum += byte * Math.pow(256, len - i - 1)\n }\n return sum\n}\n\nconst onesComp = byte => (0xff ^ byte) & 0xff\n\nconst twosComp = byte => ((0xff ^ byte) + 1) & 0xff\n\nmodule.exports = {\n encode,\n parse,\n}\n", "'use strict'\n// parse a 512-byte header block to a data object, or vice-versa\n// encode returns `true` if a pax extended header is needed, because\n// the data could not be faithfully encoded in a simple header.\n// (Also, check header.needPax to see if it needs a pax header.)\n\nconst types = require('./types.js')\nconst pathModule = require('path').posix\nconst large = require('./large-numbers.js')\n\nconst SLURP = Symbol('slurp')\nconst TYPE = Symbol('type')\n\nclass Header {\n constructor (data, off, ex, gex) {\n this.cksumValid = false\n this.needPax = false\n this.nullBlock = false\n\n this.block = null\n this.path = null\n this.mode = null\n this.uid = null\n this.gid = null\n this.size = null\n this.mtime = null\n this.cksum = null\n this[TYPE] = '0'\n this.linkpath = null\n this.uname = null\n this.gname = null\n this.devmaj = 0\n this.devmin = 0\n this.atime = null\n this.ctime = null\n\n if (Buffer.isBuffer(data))\n this.decode(data, off || 0, ex, gex)\n else if (data)\n this.set(data)\n }\n\n decode (buf, off, ex, gex) {\n if (!off)\n off = 0\n\n if (!buf || !(buf.length >= off + 512))\n throw new Error('need 512 bytes for header')\n\n this.path = decString(buf, off, 100)\n this.mode = decNumber(buf, off + 100, 8)\n this.uid = decNumber(buf, off + 108, 8)\n this.gid = decNumber(buf, off + 116, 8)\n this.size = decNumber(buf, off + 124, 12)\n this.mtime = decDate(buf, off + 136, 12)\n this.cksum = decNumber(buf, off + 148, 12)\n\n // if we have extended or global extended headers, apply them now\n // See https://github.com/npm/node-tar/pull/187\n this[SLURP](ex)\n this[SLURP](gex, true)\n\n // old tar versions marked dirs as a file with a trailing /\n this[TYPE] = decString(buf, off + 156, 1)\n if (this[TYPE] === '')\n this[TYPE] = '0'\n if (this[TYPE] === '0' && this.path.substr(-1) === '/')\n this[TYPE] = '5'\n\n // tar implementations sometimes incorrectly put the stat(dir).size\n // as the size in the tarball, even though Directory entries are\n // not able to have any body at all. In the very rare chance that\n // it actually DOES have a body, we weren't going to do anything with\n // it anyway, and it'll just be a warning about an invalid header.\n if (this[TYPE] === '5')\n this.size = 0\n\n this.linkpath = decString(buf, off + 157, 100)\n if (buf.slice(off + 257, off + 265).toString() === 'ustar\\u000000') {\n this.uname = decString(buf, off + 265, 32)\n this.gname = decString(buf, off + 297, 32)\n this.devmaj = decNumber(buf, off + 329, 8)\n this.devmin = decNumber(buf, off + 337, 8)\n if (buf[off + 475] !== 0) {\n // definitely a prefix, definitely >130 chars.\n const prefix = decString(buf, off + 345, 155)\n this.path = prefix + '/' + this.path\n } else {\n const prefix = decString(buf, off + 345, 130)\n if (prefix)\n this.path = prefix + '/' + this.path\n this.atime = decDate(buf, off + 476, 12)\n this.ctime = decDate(buf, off + 488, 12)\n }\n }\n\n let sum = 8 * 0x20\n for (let i = off; i < off + 148; i++)\n sum += buf[i]\n\n for (let i = off + 156; i < off + 512; i++)\n sum += buf[i]\n\n this.cksumValid = sum === this.cksum\n if (this.cksum === null && sum === 8 * 0x20)\n this.nullBlock = true\n }\n\n [SLURP] (ex, global) {\n for (const k in ex) {\n // we slurp in everything except for the path attribute in\n // a global extended header, because that's weird.\n if (ex[k] !== null && ex[k] !== undefined &&\n !(global && k === 'path'))\n this[k] = ex[k]\n }\n }\n\n encode (buf, off) {\n if (!buf) {\n buf = this.block = Buffer.alloc(512)\n off = 0\n }\n\n if (!off)\n off = 0\n\n if (!(buf.length >= off + 512))\n throw new Error('need 512 bytes for header')\n\n const prefixSize = this.ctime || this.atime ? 130 : 155\n const split = splitPrefix(this.path || '', prefixSize)\n const path = split[0]\n const prefix = split[1]\n this.needPax = split[2]\n\n this.needPax = encString(buf, off, 100, path) || this.needPax\n this.needPax = encNumber(buf, off + 100, 8, this.mode) || this.needPax\n this.needPax = encNumber(buf, off + 108, 8, this.uid) || this.needPax\n this.needPax = encNumber(buf, off + 116, 8, this.gid) || this.needPax\n this.needPax = encNumber(buf, off + 124, 12, this.size) || this.needPax\n this.needPax = encDate(buf, off + 136, 12, this.mtime) || this.needPax\n buf[off + 156] = this[TYPE].charCodeAt(0)\n this.needPax = encString(buf, off + 157, 100, this.linkpath) || this.needPax\n buf.write('ustar\\u000000', off + 257, 8)\n this.needPax = encString(buf, off + 265, 32, this.uname) || this.needPax\n this.needPax = encString(buf, off + 297, 32, this.gname) || this.needPax\n this.needPax = encNumber(buf, off + 329, 8, this.devmaj) || this.needPax\n this.needPax = encNumber(buf, off + 337, 8, this.devmin) || this.needPax\n this.needPax = encString(buf, off + 345, prefixSize, prefix) || this.needPax\n if (buf[off + 475] !== 0)\n this.needPax = encString(buf, off + 345, 155, prefix) || this.needPax\n else {\n this.needPax = encString(buf, off + 345, 130, prefix) || this.needPax\n this.needPax = encDate(buf, off + 476, 12, this.atime) || this.needPax\n this.needPax = encDate(buf, off + 488, 12, this.ctime) || this.needPax\n }\n\n let sum = 8 * 0x20\n for (let i = off; i < off + 148; i++)\n sum += buf[i]\n\n for (let i = off + 156; i < off + 512; i++)\n sum += buf[i]\n\n this.cksum = sum\n encNumber(buf, off + 148, 8, this.cksum)\n this.cksumValid = true\n\n return this.needPax\n }\n\n set (data) {\n for (const i in data) {\n if (data[i] !== null && data[i] !== undefined)\n this[i] = data[i]\n }\n }\n\n get type () {\n return types.name.get(this[TYPE]) || this[TYPE]\n }\n\n get typeKey () {\n return this[TYPE]\n }\n\n set type (type) {\n if (types.code.has(type))\n this[TYPE] = types.code.get(type)\n else\n this[TYPE] = type\n }\n}\n\nconst splitPrefix = (p, prefixSize) => {\n const pathSize = 100\n let pp = p\n let prefix = ''\n let ret\n const root = pathModule.parse(p).root || '.'\n\n if (Buffer.byteLength(pp) < pathSize)\n ret = [pp, prefix, false]\n else {\n // first set prefix to the dir, and path to the base\n prefix = pathModule.dirname(pp)\n pp = pathModule.basename(pp)\n\n do {\n // both fit!\n if (Buffer.byteLength(pp) <= pathSize &&\n Buffer.byteLength(prefix) <= prefixSize)\n ret = [pp, prefix, false]\n\n // prefix fits in prefix, but path doesn't fit in path\n else if (Buffer.byteLength(pp) > pathSize &&\n Buffer.byteLength(prefix) <= prefixSize)\n ret = [pp.substr(0, pathSize - 1), prefix, true]\n\n else {\n // make path take a bit from prefix\n pp = pathModule.join(pathModule.basename(prefix), pp)\n prefix = pathModule.dirname(prefix)\n }\n } while (prefix !== root && !ret)\n\n // at this point, found no resolution, just truncate\n if (!ret)\n ret = [p.substr(0, pathSize - 1), '', true]\n }\n return ret\n}\n\nconst decString = (buf, off, size) =>\n buf.slice(off, off + size).toString('utf8').replace(/\\0.*/, '')\n\nconst decDate = (buf, off, size) =>\n numToDate(decNumber(buf, off, size))\n\nconst numToDate = num => num === null ? null : new Date(num * 1000)\n\nconst decNumber = (buf, off, size) =>\n buf[off] & 0x80 ? large.parse(buf.slice(off, off + size))\n : decSmallNumber(buf, off, size)\n\nconst nanNull = value => isNaN(value) ? null : value\n\nconst decSmallNumber = (buf, off, size) =>\n nanNull(parseInt(\n buf.slice(off, off + size)\n .toString('utf8').replace(/\\0.*$/, '').trim(), 8))\n\n// the maximum encodable as a null-terminated octal, by field size\nconst MAXNUM = {\n 12: 0o77777777777,\n 8: 0o7777777,\n}\n\nconst encNumber = (buf, off, size, number) =>\n number === null ? false :\n number > MAXNUM[size] || number < 0\n ? (large.encode(number, buf.slice(off, off + size)), true)\n : (encSmallNumber(buf, off, size, number), false)\n\nconst encSmallNumber = (buf, off, size, number) =>\n buf.write(octalString(number, size), off, size, 'ascii')\n\nconst octalString = (number, size) =>\n padOctal(Math.floor(number).toString(8), size)\n\nconst padOctal = (string, size) =>\n (string.length === size - 1 ? string\n : new Array(size - string.length - 1).join('0') + string + ' ') + '\\0'\n\nconst encDate = (buf, off, size, date) =>\n date === null ? false :\n encNumber(buf, off, size, date.getTime() / 1000)\n\n// enough to fill the longest string we've got\nconst NULLS = new Array(156).join('\\0')\n// pad with nulls, return true if it's longer or non-ascii\nconst encString = (buf, off, size, string) =>\n string === null ? false :\n (buf.write(string + NULLS, off, size, 'utf8'),\n string.length !== Buffer.byteLength(string) || string.length > size)\n\nmodule.exports = Header\n", "'use strict'\nconst Header = require('./header.js')\nconst path = require('path')\n\nclass Pax {\n constructor (obj, global) {\n this.atime = obj.atime || null\n this.charset = obj.charset || null\n this.comment = obj.comment || null\n this.ctime = obj.ctime || null\n this.gid = obj.gid || null\n this.gname = obj.gname || null\n this.linkpath = obj.linkpath || null\n this.mtime = obj.mtime || null\n this.path = obj.path || null\n this.size = obj.size || null\n this.uid = obj.uid || null\n this.uname = obj.uname || null\n this.dev = obj.dev || null\n this.ino = obj.ino || null\n this.nlink = obj.nlink || null\n this.global = global || false\n }\n\n encode () {\n const body = this.encodeBody()\n if (body === '')\n return null\n\n const bodyLen = Buffer.byteLength(body)\n // round up to 512 bytes\n // add 512 for header\n const bufLen = 512 * Math.ceil(1 + bodyLen / 512)\n const buf = Buffer.allocUnsafe(bufLen)\n\n // 0-fill the header section, it might not hit every field\n for (let i = 0; i < 512; i++)\n buf[i] = 0\n\n new Header({\n // XXX split the path\n // then the path should be PaxHeader + basename, but less than 99,\n // prepend with the dirname\n path: ('PaxHeader/' + path.basename(this.path)).slice(0, 99),\n mode: this.mode || 0o644,\n uid: this.uid || null,\n gid: this.gid || null,\n size: bodyLen,\n mtime: this.mtime || null,\n type: this.global ? 'GlobalExtendedHeader' : 'ExtendedHeader',\n linkpath: '',\n uname: this.uname || '',\n gname: this.gname || '',\n devmaj: 0,\n devmin: 0,\n atime: this.atime || null,\n ctime: this.ctime || null,\n }).encode(buf)\n\n buf.write(body, 512, bodyLen, 'utf8')\n\n // null pad after the body\n for (let i = bodyLen + 512; i < buf.length; i++)\n buf[i] = 0\n\n return buf\n }\n\n encodeBody () {\n return (\n this.encodeField('path') +\n this.encodeField('ctime') +\n this.encodeField('atime') +\n this.encodeField('dev') +\n this.encodeField('ino') +\n this.encodeField('nlink') +\n this.encodeField('charset') +\n this.encodeField('comment') +\n this.encodeField('gid') +\n this.encodeField('gname') +\n this.encodeField('linkpath') +\n this.encodeField('mtime') +\n this.encodeField('size') +\n this.encodeField('uid') +\n this.encodeField('uname')\n )\n }\n\n encodeField (field) {\n if (this[field] === null || this[field] === undefined)\n return ''\n const v = this[field] instanceof Date ? this[field].getTime() / 1000\n : this[field]\n const s = ' ' +\n (field === 'dev' || field === 'ino' || field === 'nlink'\n ? 'SCHILY.' : '') +\n field + '=' + v + '\\n'\n const byteLen = Buffer.byteLength(s)\n // the digits includes the length of the digits in ascii base-10\n // so if it's 9 characters, then adding 1 for the 9 makes it 10\n // which makes it 11 chars.\n let digits = Math.floor(Math.log(byteLen) / Math.log(10)) + 1\n if (byteLen + digits >= Math.pow(10, digits))\n digits += 1\n const len = digits + byteLen\n return len + s\n }\n}\n\nPax.parse = (string, ex, g) => new Pax(merge(parseKV(string), ex), g)\n\nconst merge = (a, b) =>\n b ? Object.keys(a).reduce((s, k) => (s[k] = a[k], s), b) : a\n\nconst parseKV = string =>\n string\n .replace(/\\n$/, '')\n .split('\\n')\n .reduce(parseKVLine, Object.create(null))\n\nconst parseKVLine = (set, line) => {\n const n = parseInt(line, 10)\n\n // XXX Values with \\n in them will fail this.\n // Refactor to not be a naive line-by-line parse.\n if (n !== Buffer.byteLength(line) + 1)\n return set\n\n line = line.substr((n + ' ').length)\n const kv = line.split('=')\n const k = kv.shift().replace(/^SCHILY\\.(dev|ino|nlink)/, '$1')\n if (!k)\n return set\n\n const v = kv.join('=')\n set[k] = /^([A-Z]+\\.)?([mac]|birth|creation)time$/.test(k)\n ? new Date(v * 1000)\n : /^[0-9]+$/.test(v) ? +v\n : v\n return set\n}\n\nmodule.exports = Pax\n", "'use strict'\nmodule.exports = Base => class extends Base {\n warn (code, message, data = {}) {\n if (this.file)\n data.file = this.file\n if (this.cwd)\n data.cwd = this.cwd\n data.code = message instanceof Error && message.code || code\n data.tarCode = code\n if (!this.strict && data.recoverable !== false) {\n if (message instanceof Error) {\n data = Object.assign(message, data)\n message = message.message\n }\n this.emit('warn', data.tarCode, message, data)\n } else if (message instanceof Error)\n this.emit('error', Object.assign(message, data))\n else\n this.emit('error', Object.assign(new Error(`${code}: ${message}`), data))\n }\n}\n", "'use strict'\n\n// When writing files on Windows, translate the characters to their\n// 0xf000 higher-encoded versions.\n\nconst raw = [\n '|',\n '<',\n '>',\n '?',\n ':',\n]\n\nconst win = raw.map(char =>\n String.fromCharCode(0xf000 + char.charCodeAt(0)))\n\nconst toWin = new Map(raw.map((char, i) => [char, win[i]]))\nconst toRaw = new Map(win.map((char, i) => [char, raw[i]]))\n\nmodule.exports = {\n encode: s => raw.reduce((s, c) => s.split(c).join(toWin.get(c)), s),\n decode: s => win.reduce((s, c) => s.split(c).join(toRaw.get(c)), s),\n}\n", "'use strict'\nmodule.exports = (mode, isDir, portable) => {\n mode &= 0o7777\n\n // in portable mode, use the minimum reasonable umask\n // if this system creates files with 0o664 by default\n // (as some linux distros do), then we'll write the\n // archive with 0o644 instead. Also, don't ever create\n // a file that is not readable/writable by the owner.\n if (portable)\n mode = (mode | 0o600) & ~0o22\n\n // if dirs are readable, then they should be listable\n if (isDir) {\n if (mode & 0o400)\n mode |= 0o100\n if (mode & 0o40)\n mode |= 0o10\n if (mode & 0o4)\n mode |= 0o1\n }\n return mode\n}\n", "'use strict'\nconst MiniPass = require('minipass')\nconst Pax = require('./pax.js')\nconst Header = require('./header.js')\nconst fs = require('fs')\nconst path = require('path')\n\nconst maxReadSize = 16 * 1024 * 1024\nconst PROCESS = Symbol('process')\nconst FILE = Symbol('file')\nconst DIRECTORY = Symbol('directory')\nconst SYMLINK = Symbol('symlink')\nconst HARDLINK = Symbol('hardlink')\nconst HEADER = Symbol('header')\nconst READ = Symbol('read')\nconst LSTAT = Symbol('lstat')\nconst ONLSTAT = Symbol('onlstat')\nconst ONREAD = Symbol('onread')\nconst ONREADLINK = Symbol('onreadlink')\nconst OPENFILE = Symbol('openfile')\nconst ONOPENFILE = Symbol('onopenfile')\nconst CLOSE = Symbol('close')\nconst MODE = Symbol('mode')\nconst warner = require('./warn-mixin.js')\nconst winchars = require('./winchars.js')\n\nconst modeFix = require('./mode-fix.js')\n\nconst WriteEntry = warner(class WriteEntry extends MiniPass {\n constructor (p, opt) {\n opt = opt || {}\n super(opt)\n if (typeof p !== 'string')\n throw new TypeError('path is required')\n this.path = p\n // suppress atime, ctime, uid, gid, uname, gname\n this.portable = !!opt.portable\n // until node has builtin pwnam functions, this'll have to do\n this.myuid = process.getuid && process.getuid()\n this.myuser = process.env.USER || ''\n this.maxReadSize = opt.maxReadSize || maxReadSize\n this.linkCache = opt.linkCache || new Map()\n this.statCache = opt.statCache || new Map()\n this.preservePaths = !!opt.preservePaths\n this.cwd = opt.cwd || process.cwd()\n this.strict = !!opt.strict\n this.noPax = !!opt.noPax\n this.noMtime = !!opt.noMtime\n this.mtime = opt.mtime || null\n\n if (typeof opt.onwarn === 'function')\n this.on('warn', opt.onwarn)\n\n let pathWarn = false\n if (!this.preservePaths && path.win32.isAbsolute(p)) {\n // absolutes on posix are also absolutes on win32\n // so we only need to test this one to get both\n const parsed = path.win32.parse(p)\n this.path = p.substr(parsed.root.length)\n pathWarn = parsed.root\n }\n\n this.win32 = !!opt.win32 || process.platform === 'win32'\n if (this.win32) {\n this.path = winchars.decode(this.path.replace(/\\\\/g, '/'))\n p = p.replace(/\\\\/g, '/')\n }\n\n this.absolute = opt.absolute || path.resolve(this.cwd, p)\n\n if (this.path === '')\n this.path = './'\n\n if (pathWarn) {\n this.warn('TAR_ENTRY_INFO', `stripping ${pathWarn} from absolute path`, {\n entry: this,\n path: pathWarn + this.path,\n })\n }\n\n if (this.statCache.has(this.absolute))\n this[ONLSTAT](this.statCache.get(this.absolute))\n else\n this[LSTAT]()\n }\n\n [LSTAT] () {\n fs.lstat(this.absolute, (er, stat) => {\n if (er)\n return this.emit('error', er)\n this[ONLSTAT](stat)\n })\n }\n\n [ONLSTAT] (stat) {\n this.statCache.set(this.absolute, stat)\n this.stat = stat\n if (!stat.isFile())\n stat.size = 0\n this.type = getType(stat)\n this.emit('stat', stat)\n this[PROCESS]()\n }\n\n [PROCESS] () {\n switch (this.type) {\n case 'File': return this[FILE]()\n case 'Directory': return this[DIRECTORY]()\n case 'SymbolicLink': return this[SYMLINK]()\n // unsupported types are ignored.\n default: return this.end()\n }\n }\n\n [MODE] (mode) {\n return modeFix(mode, this.type === 'Directory', this.portable)\n }\n\n [HEADER] () {\n if (this.type === 'Directory' && this.portable)\n this.noMtime = true\n\n this.header = new Header({\n path: this.path,\n linkpath: this.linkpath,\n // only the permissions and setuid/setgid/sticky bitflags\n // not the higher-order bits that specify file type\n mode: this[MODE](this.stat.mode),\n uid: this.portable ? null : this.stat.uid,\n gid: this.portable ? null : this.stat.gid,\n size: this.stat.size,\n mtime: this.noMtime ? null : this.mtime || this.stat.mtime,\n type: this.type,\n uname: this.portable ? null :\n this.stat.uid === this.myuid ? this.myuser : '',\n atime: this.portable ? null : this.stat.atime,\n ctime: this.portable ? null : this.stat.ctime,\n })\n\n if (this.header.encode() && !this.noPax) {\n this.write(new Pax({\n atime: this.portable ? null : this.header.atime,\n ctime: this.portable ? null : this.header.ctime,\n gid: this.portable ? null : this.header.gid,\n mtime: this.noMtime ? null : this.mtime || this.header.mtime,\n path: this.path,\n linkpath: this.linkpath,\n size: this.header.size,\n uid: this.portable ? null : this.header.uid,\n uname: this.portable ? null : this.header.uname,\n dev: this.portable ? null : this.stat.dev,\n ino: this.portable ? null : this.stat.ino,\n nlink: this.portable ? null : this.stat.nlink,\n }).encode())\n }\n this.write(this.header.block)\n }\n\n [DIRECTORY] () {\n if (this.path.substr(-1) !== '/')\n this.path += '/'\n this.stat.size = 0\n this[HEADER]()\n this.end()\n }\n\n [SYMLINK] () {\n fs.readlink(this.absolute, (er, linkpath) => {\n if (er)\n return this.emit('error', er)\n this[ONREADLINK](linkpath)\n })\n }\n\n [ONREADLINK] (linkpath) {\n this.linkpath = linkpath.replace(/\\\\/g, '/')\n this[HEADER]()\n this.end()\n }\n\n [HARDLINK] (linkpath) {\n this.type = 'Link'\n this.linkpath = path.relative(this.cwd, linkpath).replace(/\\\\/g, '/')\n this.stat.size = 0\n this[HEADER]()\n this.end()\n }\n\n [FILE] () {\n if (this.stat.nlink > 1) {\n const linkKey = this.stat.dev + ':' + this.stat.ino\n if (this.linkCache.has(linkKey)) {\n const linkpath = this.linkCache.get(linkKey)\n if (linkpath.indexOf(this.cwd) === 0)\n return this[HARDLINK](linkpath)\n }\n this.linkCache.set(linkKey, this.absolute)\n }\n\n this[HEADER]()\n if (this.stat.size === 0)\n return this.end()\n\n this[OPENFILE]()\n }\n\n [OPENFILE] () {\n fs.open(this.absolute, 'r', (er, fd) => {\n if (er)\n return this.emit('error', er)\n this[ONOPENFILE](fd)\n })\n }\n\n [ONOPENFILE] (fd) {\n const blockLen = 512 * Math.ceil(this.stat.size / 512)\n const bufLen = Math.min(blockLen, this.maxReadSize)\n const buf = Buffer.allocUnsafe(bufLen)\n this[READ](fd, buf, 0, buf.length, 0, this.stat.size, blockLen)\n }\n\n [READ] (fd, buf, offset, length, pos, remain, blockRemain) {\n fs.read(fd, buf, offset, length, pos, (er, bytesRead) => {\n if (er) {\n // ignoring the error from close(2) is a bad practice, but at\n // this point we already have an error, don't need another one\n return this[CLOSE](fd, () => this.emit('error', er))\n }\n this[ONREAD](fd, buf, offset, length, pos, remain, blockRemain, bytesRead)\n })\n }\n\n [CLOSE] (fd, cb) {\n fs.close(fd, cb)\n }\n\n [ONREAD] (fd, buf, offset, length, pos, remain, blockRemain, bytesRead) {\n if (bytesRead <= 0 && remain > 0) {\n const er = new Error('encountered unexpected EOF')\n er.path = this.absolute\n er.syscall = 'read'\n er.code = 'EOF'\n return this[CLOSE](fd, () => this.emit('error', er))\n }\n\n if (bytesRead > remain) {\n const er = new Error('did not encounter expected EOF')\n er.path = this.absolute\n er.syscall = 'read'\n er.code = 'EOF'\n return this[CLOSE](fd, () => this.emit('error', er))\n }\n\n // null out the rest of the buffer, if we could fit the block padding\n if (bytesRead === remain) {\n for (let i = bytesRead; i < length && bytesRead < blockRemain; i++) {\n buf[i + offset] = 0\n bytesRead++\n remain++\n }\n }\n\n const writeBuf = offset === 0 && bytesRead === buf.length ?\n buf : buf.slice(offset, offset + bytesRead)\n remain -= bytesRead\n blockRemain -= bytesRead\n pos += bytesRead\n offset += bytesRead\n\n this.write(writeBuf)\n\n if (!remain) {\n if (blockRemain)\n this.write(Buffer.alloc(blockRemain))\n return this[CLOSE](fd, er => er ? this.emit('error', er) : this.end())\n }\n\n if (offset >= length) {\n buf = Buffer.allocUnsafe(length)\n offset = 0\n }\n length = buf.length - offset\n this[READ](fd, buf, offset, length, pos, remain, blockRemain)\n }\n})\n\nclass WriteEntrySync extends WriteEntry {\n [LSTAT] () {\n this[ONLSTAT](fs.lstatSync(this.absolute))\n }\n\n [SYMLINK] () {\n this[ONREADLINK](fs.readlinkSync(this.absolute))\n }\n\n [OPENFILE] () {\n this[ONOPENFILE](fs.openSync(this.absolute, 'r'))\n }\n\n [READ] (fd, buf, offset, length, pos, remain, blockRemain) {\n let threw = true\n try {\n const bytesRead = fs.readSync(fd, buf, offset, length, pos)\n this[ONREAD](fd, buf, offset, length, pos, remain, blockRemain, bytesRead)\n threw = false\n } finally {\n // ignoring the error from close(2) is a bad practice, but at\n // this point we already have an error, don't need another one\n if (threw) {\n try {\n this[CLOSE](fd, () => {})\n } catch (er) {}\n }\n }\n }\n\n [CLOSE] (fd, cb) {\n fs.closeSync(fd)\n cb()\n }\n}\n\nconst WriteEntryTar = warner(class WriteEntryTar extends MiniPass {\n constructor (readEntry, opt) {\n opt = opt || {}\n super(opt)\n this.preservePaths = !!opt.preservePaths\n this.portable = !!opt.portable\n this.strict = !!opt.strict\n this.noPax = !!opt.noPax\n this.noMtime = !!opt.noMtime\n\n this.readEntry = readEntry\n this.type = readEntry.type\n if (this.type === 'Directory' && this.portable)\n this.noMtime = true\n\n this.path = readEntry.path\n this.mode = this[MODE](readEntry.mode)\n this.uid = this.portable ? null : readEntry.uid\n this.gid = this.portable ? null : readEntry.gid\n this.uname = this.portable ? null : readEntry.uname\n this.gname = this.portable ? null : readEntry.gname\n this.size = readEntry.size\n this.mtime = this.noMtime ? null : opt.mtime || readEntry.mtime\n this.atime = this.portable ? null : readEntry.atime\n this.ctime = this.portable ? null : readEntry.ctime\n this.linkpath = readEntry.linkpath\n\n if (typeof opt.onwarn === 'function')\n this.on('warn', opt.onwarn)\n\n let pathWarn = false\n if (path.isAbsolute(this.path) && !this.preservePaths) {\n const parsed = path.parse(this.path)\n pathWarn = parsed.root\n this.path = this.path.substr(parsed.root.length)\n }\n\n this.remain = readEntry.size\n this.blockRemain = readEntry.startBlockSize\n\n this.header = new Header({\n path: this.path,\n linkpath: this.linkpath,\n // only the permissions and setuid/setgid/sticky bitflags\n // not the higher-order bits that specify file type\n mode: this.mode,\n uid: this.portable ? null : this.uid,\n gid: this.portable ? null : this.gid,\n size: this.size,\n mtime: this.noMtime ? null : this.mtime,\n type: this.type,\n uname: this.portable ? null : this.uname,\n atime: this.portable ? null : this.atime,\n ctime: this.portable ? null : this.ctime,\n })\n\n if (pathWarn) {\n this.warn('TAR_ENTRY_INFO', `stripping ${pathWarn} from absolute path`, {\n entry: this,\n path: pathWarn + this.path,\n })\n }\n\n if (this.header.encode() && !this.noPax) {\n super.write(new Pax({\n atime: this.portable ? null : this.atime,\n ctime: this.portable ? null : this.ctime,\n gid: this.portable ? null : this.gid,\n mtime: this.noMtime ? null : this.mtime,\n path: this.path,\n linkpath: this.linkpath,\n size: this.size,\n uid: this.portable ? null : this.uid,\n uname: this.portable ? null : this.uname,\n dev: this.portable ? null : this.readEntry.dev,\n ino: this.portable ? null : this.readEntry.ino,\n nlink: this.portable ? null : this.readEntry.nlink,\n }).encode())\n }\n\n super.write(this.header.block)\n readEntry.pipe(this)\n }\n\n [MODE] (mode) {\n return modeFix(mode, this.type === 'Directory', this.portable)\n }\n\n write (data) {\n const writeLen = data.length\n if (writeLen > this.blockRemain)\n throw new Error('writing more to entry than is appropriate')\n this.blockRemain -= writeLen\n return super.write(data)\n }\n\n end () {\n if (this.blockRemain)\n this.write(Buffer.alloc(this.blockRemain))\n return super.end()\n }\n})\n\nWriteEntry.Sync = WriteEntrySync\nWriteEntry.Tar = WriteEntryTar\n\nconst getType = stat =>\n stat.isFile() ? 'File'\n : stat.isDirectory() ? 'Directory'\n : stat.isSymbolicLink() ? 'SymbolicLink'\n : 'Unsupported'\n\nmodule.exports = WriteEntry\n", "'use strict'\nmodule.exports = function (Yallist) {\n Yallist.prototype[Symbol.iterator] = function* () {\n for (let walker = this.head; walker; walker = walker.next) {\n yield walker.value\n }\n }\n}\n", "'use strict'\nmodule.exports = Yallist\n\nYallist.Node = Node\nYallist.create = Yallist\n\nfunction Yallist (list) {\n var self = this\n if (!(self instanceof Yallist)) {\n self = new Yallist()\n }\n\n self.tail = null\n self.head = null\n self.length = 0\n\n if (list && typeof list.forEach === 'function') {\n list.forEach(function (item) {\n self.push(item)\n })\n } else if (arguments.length > 0) {\n for (var i = 0, l = arguments.length; i < l; i++) {\n self.push(arguments[i])\n }\n }\n\n return self\n}\n\nYallist.prototype.removeNode = function (node) {\n if (node.list !== this) {\n throw new Error('removing node which does not belong to this list')\n }\n\n var next = node.next\n var prev = node.prev\n\n if (next) {\n next.prev = prev\n }\n\n if (prev) {\n prev.next = next\n }\n\n if (node === this.head) {\n this.head = next\n }\n if (node === this.tail) {\n this.tail = prev\n }\n\n node.list.length--\n node.next = null\n node.prev = null\n node.list = null\n\n return next\n}\n\nYallist.prototype.unshiftNode = function (node) {\n if (node === this.head) {\n return\n }\n\n if (node.list) {\n node.list.removeNode(node)\n }\n\n var head = this.head\n node.list = this\n node.next = head\n if (head) {\n head.prev = node\n }\n\n this.head = node\n if (!this.tail) {\n this.tail = node\n }\n this.length++\n}\n\nYallist.prototype.pushNode = function (node) {\n if (node === this.tail) {\n return\n }\n\n if (node.list) {\n node.list.removeNode(node)\n }\n\n var tail = this.tail\n node.list = this\n node.prev = tail\n if (tail) {\n tail.next = node\n }\n\n this.tail = node\n if (!this.head) {\n this.head = node\n }\n this.length++\n}\n\nYallist.prototype.push = function () {\n for (var i = 0, l = arguments.length; i < l; i++) {\n push(this, arguments[i])\n }\n return this.length\n}\n\nYallist.prototype.unshift = function () {\n for (var i = 0, l = arguments.length; i < l; i++) {\n unshift(this, arguments[i])\n }\n return this.length\n}\n\nYallist.prototype.pop = function () {\n if (!this.tail) {\n return undefined\n }\n\n var res = this.tail.value\n this.tail = this.tail.prev\n if (this.tail) {\n this.tail.next = null\n } else {\n this.head = null\n }\n this.length--\n return res\n}\n\nYallist.prototype.shift = function () {\n if (!this.head) {\n return undefined\n }\n\n var res = this.head.value\n this.head = this.head.next\n if (this.head) {\n this.head.prev = null\n } else {\n this.tail = null\n }\n this.length--\n return res\n}\n\nYallist.prototype.forEach = function (fn, thisp) {\n thisp = thisp || this\n for (var walker = this.head, i = 0; walker !== null; i++) {\n fn.call(thisp, walker.value, i, this)\n walker = walker.next\n }\n}\n\nYallist.prototype.forEachReverse = function (fn, thisp) {\n thisp = thisp || this\n for (var walker = this.tail, i = this.length - 1; walker !== null; i--) {\n fn.call(thisp, walker.value, i, this)\n walker = walker.prev\n }\n}\n\nYallist.prototype.get = function (n) {\n for (var i = 0, walker = this.head; walker !== null && i < n; i++) {\n // abort out of the list early if we hit a cycle\n walker = walker.next\n }\n if (i === n && walker !== null) {\n return walker.value\n }\n}\n\nYallist.prototype.getReverse = function (n) {\n for (var i = 0, walker = this.tail; walker !== null && i < n; i++) {\n // abort out of the list early if we hit a cycle\n walker = walker.prev\n }\n if (i === n && walker !== null) {\n return walker.value\n }\n}\n\nYallist.prototype.map = function (fn, thisp) {\n thisp = thisp || this\n var res = new Yallist()\n for (var walker = this.head; walker !== null;) {\n res.push(fn.call(thisp, walker.value, this))\n walker = walker.next\n }\n return res\n}\n\nYallist.prototype.mapReverse = function (fn, thisp) {\n thisp = thisp || this\n var res = new Yallist()\n for (var walker = this.tail; walker !== null;) {\n res.push(fn.call(thisp, walker.value, this))\n walker = walker.prev\n }\n return res\n}\n\nYallist.prototype.reduce = function (fn, initial) {\n var acc\n var walker = this.head\n if (arguments.length > 1) {\n acc = initial\n } else if (this.head) {\n walker = this.head.next\n acc = this.head.value\n } else {\n throw new TypeError('Reduce of empty list with no initial value')\n }\n\n for (var i = 0; walker !== null; i++) {\n acc = fn(acc, walker.value, i)\n walker = walker.next\n }\n\n return acc\n}\n\nYallist.prototype.reduceReverse = function (fn, initial) {\n var acc\n var walker = this.tail\n if (arguments.length > 1) {\n acc = initial\n } else if (this.tail) {\n walker = this.tail.prev\n acc = this.tail.value\n } else {\n throw new TypeError('Reduce of empty list with no initial value')\n }\n\n for (var i = this.length - 1; walker !== null; i--) {\n acc = fn(acc, walker.value, i)\n walker = walker.prev\n }\n\n return acc\n}\n\nYallist.prototype.toArray = function () {\n var arr = new Array(this.length)\n for (var i = 0, walker = this.head; walker !== null; i++) {\n arr[i] = walker.value\n walker = walker.next\n }\n return arr\n}\n\nYallist.prototype.toArrayReverse = function () {\n var arr = new Array(this.length)\n for (var i = 0, walker = this.tail; walker !== null; i++) {\n arr[i] = walker.value\n walker = walker.prev\n }\n return arr\n}\n\nYallist.prototype.slice = function (from, to) {\n to = to || this.length\n if (to < 0) {\n to += this.length\n }\n from = from || 0\n if (from < 0) {\n from += this.length\n }\n var ret = new Yallist()\n if (to < from || to < 0) {\n return ret\n }\n if (from < 0) {\n from = 0\n }\n if (to > this.length) {\n to = this.length\n }\n for (var i = 0, walker = this.head; walker !== null && i < from; i++) {\n walker = walker.next\n }\n for (; walker !== null && i < to; i++, walker = walker.next) {\n ret.push(walker.value)\n }\n return ret\n}\n\nYallist.prototype.sliceReverse = function (from, to) {\n to = to || this.length\n if (to < 0) {\n to += this.length\n }\n from = from || 0\n if (from < 0) {\n from += this.length\n }\n var ret = new Yallist()\n if (to < from || to < 0) {\n return ret\n }\n if (from < 0) {\n from = 0\n }\n if (to > this.length) {\n to = this.length\n }\n for (var i = this.length, walker = this.tail; walker !== null && i > to; i--) {\n walker = walker.prev\n }\n for (; walker !== null && i > from; i--, walker = walker.prev) {\n ret.push(walker.value)\n }\n return ret\n}\n\nYallist.prototype.splice = function (start, deleteCount, ...nodes) {\n if (start > this.length) {\n start = this.length - 1\n }\n if (start < 0) {\n start = this.length + start;\n }\n\n for (var i = 0, walker = this.head; walker !== null && i < start; i++) {\n walker = walker.next\n }\n\n var ret = []\n for (var i = 0; walker && i < deleteCount; i++) {\n ret.push(walker.value)\n walker = this.removeNode(walker)\n }\n if (walker === null) {\n walker = this.tail\n }\n\n if (walker !== this.head && walker !== this.tail) {\n walker = walker.prev\n }\n\n for (var i = 0; i < nodes.length; i++) {\n walker = insert(this, walker, nodes[i])\n }\n return ret;\n}\n\nYallist.prototype.reverse = function () {\n var head = this.head\n var tail = this.tail\n for (var walker = head; walker !== null; walker = walker.prev) {\n var p = walker.prev\n walker.prev = walker.next\n walker.next = p\n }\n this.head = tail\n this.tail = head\n return this\n}\n\nfunction insert (self, node, value) {\n var inserted = node === self.head ?\n new Node(value, null, node, self) :\n new Node(value, node, node.next, self)\n\n if (inserted.next === null) {\n self.tail = inserted\n }\n if (inserted.prev === null) {\n self.head = inserted\n }\n\n self.length++\n\n return inserted\n}\n\nfunction push (self, item) {\n self.tail = new Node(item, self.tail, null, self)\n if (!self.head) {\n self.head = self.tail\n }\n self.length++\n}\n\nfunction unshift (self, item) {\n self.head = new Node(item, null, self.head, self)\n if (!self.tail) {\n self.tail = self.head\n }\n self.length++\n}\n\nfunction Node (value, prev, next, list) {\n if (!(this instanceof Node)) {\n return new Node(value, prev, next, list)\n }\n\n this.list = list\n this.value = value\n\n if (prev) {\n prev.next = this\n this.prev = prev\n } else {\n this.prev = null\n }\n\n if (next) {\n next.prev = this\n this.next = next\n } else {\n this.next = null\n }\n}\n\ntry {\n // add if support for Symbol.iterator is present\n require('./iterator.js')(Yallist)\n} catch (er) {}\n", "'use strict'\n\n// A readable tar stream creator\n// Technically, this is a transform stream that you write paths into,\n// and tar format comes out of.\n// The `add()` method is like `write()` but returns this,\n// and end() return `this` as well, so you can\n// do `new Pack(opt).add('files').add('dir').end().pipe(output)\n// You could also do something like:\n// streamOfPaths().pipe(new Pack()).pipe(new fs.WriteStream('out.tar'))\n\nclass PackJob {\n constructor (path, absolute) {\n this.path = path || './'\n this.absolute = absolute\n this.entry = null\n this.stat = null\n this.readdir = null\n this.pending = false\n this.ignore = false\n this.piped = false\n }\n}\n\nconst MiniPass = require('minipass')\nconst zlib = require('minizlib')\nconst ReadEntry = require('./read-entry.js')\nconst WriteEntry = require('./write-entry.js')\nconst WriteEntrySync = WriteEntry.Sync\nconst WriteEntryTar = WriteEntry.Tar\nconst Yallist = require('yallist')\nconst EOF = Buffer.alloc(1024)\nconst ONSTAT = Symbol('onStat')\nconst ENDED = Symbol('ended')\nconst QUEUE = Symbol('queue')\nconst CURRENT = Symbol('current')\nconst PROCESS = Symbol('process')\nconst PROCESSING = Symbol('processing')\nconst PROCESSJOB = Symbol('processJob')\nconst JOBS = Symbol('jobs')\nconst JOBDONE = Symbol('jobDone')\nconst ADDFSENTRY = Symbol('addFSEntry')\nconst ADDTARENTRY = Symbol('addTarEntry')\nconst STAT = Symbol('stat')\nconst READDIR = Symbol('readdir')\nconst ONREADDIR = Symbol('onreaddir')\nconst PIPE = Symbol('pipe')\nconst ENTRY = Symbol('entry')\nconst ENTRYOPT = Symbol('entryOpt')\nconst WRITEENTRYCLASS = Symbol('writeEntryClass')\nconst WRITE = Symbol('write')\nconst ONDRAIN = Symbol('ondrain')\n\nconst fs = require('fs')\nconst path = require('path')\nconst warner = require('./warn-mixin.js')\n\nconst Pack = warner(class Pack extends MiniPass {\n constructor (opt) {\n super(opt)\n opt = opt || Object.create(null)\n this.opt = opt\n this.file = opt.file || ''\n this.cwd = opt.cwd || process.cwd()\n this.maxReadSize = opt.maxReadSize\n this.preservePaths = !!opt.preservePaths\n this.strict = !!opt.strict\n this.noPax = !!opt.noPax\n this.prefix = (opt.prefix || '').replace(/(\\\\|\\/)+$/, '')\n this.linkCache = opt.linkCache || new Map()\n this.statCache = opt.statCache || new Map()\n this.readdirCache = opt.readdirCache || new Map()\n\n this[WRITEENTRYCLASS] = WriteEntry\n if (typeof opt.onwarn === 'function')\n this.on('warn', opt.onwarn)\n\n this.portable = !!opt.portable\n this.zip = null\n if (opt.gzip) {\n if (typeof opt.gzip !== 'object')\n opt.gzip = {}\n if (this.portable)\n opt.gzip.portable = true\n this.zip = new zlib.Gzip(opt.gzip)\n this.zip.on('data', chunk => super.write(chunk))\n this.zip.on('end', _ => super.end())\n this.zip.on('drain', _ => this[ONDRAIN]())\n this.on('resume', _ => this.zip.resume())\n } else\n this.on('drain', this[ONDRAIN])\n\n this.noDirRecurse = !!opt.noDirRecurse\n this.follow = !!opt.follow\n this.noMtime = !!opt.noMtime\n this.mtime = opt.mtime || null\n\n this.filter = typeof opt.filter === 'function' ? opt.filter : _ => true\n\n this[QUEUE] = new Yallist()\n this[JOBS] = 0\n this.jobs = +opt.jobs || 4\n this[PROCESSING] = false\n this[ENDED] = false\n }\n\n [WRITE] (chunk) {\n return super.write(chunk)\n }\n\n add (path) {\n this.write(path)\n return this\n }\n\n end (path) {\n if (path)\n this.write(path)\n this[ENDED] = true\n this[PROCESS]()\n return this\n }\n\n write (path) {\n if (this[ENDED])\n throw new Error('write after end')\n\n if (path instanceof ReadEntry)\n this[ADDTARENTRY](path)\n else\n this[ADDFSENTRY](path)\n return this.flowing\n }\n\n [ADDTARENTRY] (p) {\n const absolute = path.resolve(this.cwd, p.path)\n if (this.prefix)\n p.path = this.prefix + '/' + p.path.replace(/^\\.(\\/+|$)/, '')\n\n // in this case, we don't have to wait for the stat\n if (!this.filter(p.path, p))\n p.resume()\n else {\n const job = new PackJob(p.path, absolute, false)\n job.entry = new WriteEntryTar(p, this[ENTRYOPT](job))\n job.entry.on('end', _ => this[JOBDONE](job))\n this[JOBS] += 1\n this[QUEUE].push(job)\n }\n\n this[PROCESS]()\n }\n\n [ADDFSENTRY] (p) {\n const absolute = path.resolve(this.cwd, p)\n if (this.prefix)\n p = this.prefix + '/' + p.replace(/^\\.(\\/+|$)/, '')\n\n this[QUEUE].push(new PackJob(p, absolute))\n this[PROCESS]()\n }\n\n [STAT] (job) {\n job.pending = true\n this[JOBS] += 1\n const stat = this.follow ? 'stat' : 'lstat'\n fs[stat](job.absolute, (er, stat) => {\n job.pending = false\n this[JOBS] -= 1\n if (er)\n this.emit('error', er)\n else\n this[ONSTAT](job, stat)\n })\n }\n\n [ONSTAT] (job, stat) {\n this.statCache.set(job.absolute, stat)\n job.stat = stat\n\n // now we have the stat, we can filter it.\n if (!this.filter(job.path, stat))\n job.ignore = true\n\n this[PROCESS]()\n }\n\n [READDIR] (job) {\n job.pending = true\n this[JOBS] += 1\n fs.readdir(job.absolute, (er, entries) => {\n job.pending = false\n this[JOBS] -= 1\n if (er)\n return this.emit('error', er)\n this[ONREADDIR](job, entries)\n })\n }\n\n [ONREADDIR] (job, entries) {\n this.readdirCache.set(job.absolute, entries)\n job.readdir = entries\n this[PROCESS]()\n }\n\n [PROCESS] () {\n if (this[PROCESSING])\n return\n\n this[PROCESSING] = true\n for (let w = this[QUEUE].head;\n w !== null && this[JOBS] < this.jobs;\n w = w.next) {\n this[PROCESSJOB](w.value)\n if (w.value.ignore) {\n const p = w.next\n this[QUEUE].removeNode(w)\n w.next = p\n }\n }\n\n this[PROCESSING] = false\n\n if (this[ENDED] && !this[QUEUE].length && this[JOBS] === 0) {\n if (this.zip)\n this.zip.end(EOF)\n else {\n super.write(EOF)\n super.end()\n }\n }\n }\n\n get [CURRENT] () {\n return this[QUEUE] && this[QUEUE].head && this[QUEUE].head.value\n }\n\n [JOBDONE] (job) {\n this[QUEUE].shift()\n this[JOBS] -= 1\n this[PROCESS]()\n }\n\n [PROCESSJOB] (job) {\n if (job.pending)\n return\n\n if (job.entry) {\n if (job === this[CURRENT] && !job.piped)\n this[PIPE](job)\n return\n }\n\n if (!job.stat) {\n if (this.statCache.has(job.absolute))\n this[ONSTAT](job, this.statCache.get(job.absolute))\n else\n this[STAT](job)\n }\n if (!job.stat)\n return\n\n // filtered out!\n if (job.ignore)\n return\n\n if (!this.noDirRecurse && job.stat.isDirectory() && !job.readdir) {\n if (this.readdirCache.has(job.absolute))\n this[ONREADDIR](job, this.readdirCache.get(job.absolute))\n else\n this[READDIR](job)\n if (!job.readdir)\n return\n }\n\n // we know it doesn't have an entry, because that got checked above\n job.entry = this[ENTRY](job)\n if (!job.entry) {\n job.ignore = true\n return\n }\n\n if (job === this[CURRENT] && !job.piped)\n this[PIPE](job)\n }\n\n [ENTRYOPT] (job) {\n return {\n onwarn: (code, msg, data) => this.warn(code, msg, data),\n noPax: this.noPax,\n cwd: this.cwd,\n absolute: job.absolute,\n preservePaths: this.preservePaths,\n maxReadSize: this.maxReadSize,\n strict: this.strict,\n portable: this.portable,\n linkCache: this.linkCache,\n statCache: this.statCache,\n noMtime: this.noMtime,\n mtime: this.mtime,\n }\n }\n\n [ENTRY] (job) {\n this[JOBS] += 1\n try {\n return new this[WRITEENTRYCLASS](job.path, this[ENTRYOPT](job))\n .on('end', () => this[JOBDONE](job))\n .on('error', er => this.emit('error', er))\n } catch (er) {\n this.emit('error', er)\n }\n }\n\n [ONDRAIN] () {\n if (this[CURRENT] && this[CURRENT].entry)\n this[CURRENT].entry.resume()\n }\n\n // like .pipe() but using super, because our write() is special\n [PIPE] (job) {\n job.piped = true\n\n if (job.readdir) {\n job.readdir.forEach(entry => {\n const p = this.prefix ?\n job.path.slice(this.prefix.length + 1) || './'\n : job.path\n\n const base = p === './' ? '' : p.replace(/\\/*$/, '/')\n this[ADDFSENTRY](base + entry)\n })\n }\n\n const source = job.entry\n const zip = this.zip\n\n if (zip) {\n source.on('data', chunk => {\n if (!zip.write(chunk))\n source.pause()\n })\n } else {\n source.on('data', chunk => {\n if (!super.write(chunk))\n source.pause()\n })\n }\n }\n\n pause () {\n if (this.zip)\n this.zip.pause()\n return super.pause()\n }\n})\n\nclass PackSync extends Pack {\n constructor (opt) {\n super(opt)\n this[WRITEENTRYCLASS] = WriteEntrySync\n }\n\n // pause/resume are no-ops in sync streams.\n pause () {}\n resume () {}\n\n [STAT] (job) {\n const stat = this.follow ? 'statSync' : 'lstatSync'\n this[ONSTAT](job, fs[stat](job.absolute))\n }\n\n [READDIR] (job, stat) {\n this[ONREADDIR](job, fs.readdirSync(job.absolute))\n }\n\n // gotta get it all in this tick\n [PIPE] (job) {\n const source = job.entry\n const zip = this.zip\n\n if (job.readdir) {\n job.readdir.forEach(entry => {\n const p = this.prefix ?\n job.path.slice(this.prefix.length + 1) || './'\n : job.path\n\n const base = p === './' ? '' : p.replace(/\\/*$/, '/')\n this[ADDFSENTRY](base + entry)\n })\n }\n\n if (zip) {\n source.on('data', chunk => {\n zip.write(chunk)\n })\n } else {\n source.on('data', chunk => {\n super[WRITE](chunk)\n })\n }\n }\n}\n\nPack.Sync = PackSync\n\nmodule.exports = Pack\n", "'use strict'\nconst MiniPass = require('minipass')\nconst EE = require('events').EventEmitter\nconst fs = require('fs')\n\nlet writev = fs.writev\n/* istanbul ignore next */\nif (!writev) {\n // This entire block can be removed if support for earlier than Node.js\n // 12.9.0 is not needed.\n const binding = process.binding('fs')\n const FSReqWrap = binding.FSReqWrap || binding.FSReqCallback\n\n writev = (fd, iovec, pos, cb) => {\n const done = (er, bw) => cb(er, bw, iovec)\n const req = new FSReqWrap()\n req.oncomplete = done\n binding.writeBuffers(fd, iovec, pos, req)\n }\n}\n\nconst _autoClose = Symbol('_autoClose')\nconst _close = Symbol('_close')\nconst _ended = Symbol('_ended')\nconst _fd = Symbol('_fd')\nconst _finished = Symbol('_finished')\nconst _flags = Symbol('_flags')\nconst _flush = Symbol('_flush')\nconst _handleChunk = Symbol('_handleChunk')\nconst _makeBuf = Symbol('_makeBuf')\nconst _mode = Symbol('_mode')\nconst _needDrain = Symbol('_needDrain')\nconst _onerror = Symbol('_onerror')\nconst _onopen = Symbol('_onopen')\nconst _onread = Symbol('_onread')\nconst _onwrite = Symbol('_onwrite')\nconst _open = Symbol('_open')\nconst _path = Symbol('_path')\nconst _pos = Symbol('_pos')\nconst _queue = Symbol('_queue')\nconst _read = Symbol('_read')\nconst _readSize = Symbol('_readSize')\nconst _reading = Symbol('_reading')\nconst _remain = Symbol('_remain')\nconst _size = Symbol('_size')\nconst _write = Symbol('_write')\nconst _writing = Symbol('_writing')\nconst _defaultFlag = Symbol('_defaultFlag')\nconst _errored = Symbol('_errored')\n\nclass ReadStream extends MiniPass {\n constructor (path, opt) {\n opt = opt || {}\n super(opt)\n\n this.readable = true\n this.writable = false\n\n if (typeof path !== 'string')\n throw new TypeError('path must be a string')\n\n this[_errored] = false\n this[_fd] = typeof opt.fd === 'number' ? opt.fd : null\n this[_path] = path\n this[_readSize] = opt.readSize || 16*1024*1024\n this[_reading] = false\n this[_size] = typeof opt.size === 'number' ? opt.size : Infinity\n this[_remain] = this[_size]\n this[_autoClose] = typeof opt.autoClose === 'boolean' ?\n opt.autoClose : true\n\n if (typeof this[_fd] === 'number')\n this[_read]()\n else\n this[_open]()\n }\n\n get fd () { return this[_fd] }\n get path () { return this[_path] }\n\n write () {\n throw new TypeError('this is a readable stream')\n }\n\n end () {\n throw new TypeError('this is a readable stream')\n }\n\n [_open] () {\n fs.open(this[_path], 'r', (er, fd) => this[_onopen](er, fd))\n }\n\n [_onopen] (er, fd) {\n if (er)\n this[_onerror](er)\n else {\n this[_fd] = fd\n this.emit('open', fd)\n this[_read]()\n }\n }\n\n [_makeBuf] () {\n return Buffer.allocUnsafe(Math.min(this[_readSize], this[_remain]))\n }\n\n [_read] () {\n if (!this[_reading]) {\n this[_reading] = true\n const buf = this[_makeBuf]()\n /* istanbul ignore if */\n if (buf.length === 0)\n return process.nextTick(() => this[_onread](null, 0, buf))\n fs.read(this[_fd], buf, 0, buf.length, null, (er, br, buf) =>\n this[_onread](er, br, buf))\n }\n }\n\n [_onread] (er, br, buf) {\n this[_reading] = false\n if (er)\n this[_onerror](er)\n else if (this[_handleChunk](br, buf))\n this[_read]()\n }\n\n [_close] () {\n if (this[_autoClose] && typeof this[_fd] === 'number') {\n const fd = this[_fd]\n this[_fd] = null\n fs.close(fd, er => er ? this.emit('error', er) : this.emit('close'))\n }\n }\n\n [_onerror] (er) {\n this[_reading] = true\n this[_close]()\n this.emit('error', er)\n }\n\n [_handleChunk] (br, buf) {\n let ret = false\n // no effect if infinite\n this[_remain] -= br\n if (br > 0)\n ret = super.write(br < buf.length ? buf.slice(0, br) : buf)\n\n if (br === 0 || this[_remain] <= 0) {\n ret = false\n this[_close]()\n super.end()\n }\n\n return ret\n }\n\n emit (ev, data) {\n switch (ev) {\n case 'prefinish':\n case 'finish':\n break\n\n case 'drain':\n if (typeof this[_fd] === 'number')\n this[_read]()\n break\n\n case 'error':\n if (this[_errored])\n return\n this[_errored] = true\n return super.emit(ev, data)\n\n default:\n return super.emit(ev, data)\n }\n }\n}\n\nclass ReadStreamSync extends ReadStream {\n [_open] () {\n let threw = true\n try {\n this[_onopen](null, fs.openSync(this[_path], 'r'))\n threw = false\n } finally {\n if (threw)\n this[_close]()\n }\n }\n\n [_read] () {\n let threw = true\n try {\n if (!this[_reading]) {\n this[_reading] = true\n do {\n const buf = this[_makeBuf]()\n /* istanbul ignore next */\n const br = buf.length === 0 ? 0\n : fs.readSync(this[_fd], buf, 0, buf.length, null)\n if (!this[_handleChunk](br, buf))\n break\n } while (true)\n this[_reading] = false\n }\n threw = false\n } finally {\n if (threw)\n this[_close]()\n }\n }\n\n [_close] () {\n if (this[_autoClose] && typeof this[_fd] === 'number') {\n const fd = this[_fd]\n this[_fd] = null\n fs.closeSync(fd)\n this.emit('close')\n }\n }\n}\n\nclass WriteStream extends EE {\n constructor (path, opt) {\n opt = opt || {}\n super(opt)\n this.readable = false\n this.writable = true\n this[_errored] = false\n this[_writing] = false\n this[_ended] = false\n this[_needDrain] = false\n this[_queue] = []\n this[_path] = path\n this[_fd] = typeof opt.fd === 'number' ? opt.fd : null\n this[_mode] = opt.mode === undefined ? 0o666 : opt.mode\n this[_pos] = typeof opt.start === 'number' ? opt.start : null\n this[_autoClose] = typeof opt.autoClose === 'boolean' ?\n opt.autoClose : true\n\n // truncating makes no sense when writing into the middle\n const defaultFlag = this[_pos] !== null ? 'r+' : 'w'\n this[_defaultFlag] = opt.flags === undefined\n this[_flags] = this[_defaultFlag] ? defaultFlag : opt.flags\n\n if (this[_fd] === null)\n this[_open]()\n }\n\n emit (ev, data) {\n if (ev === 'error') {\n if (this[_errored])\n return\n this[_errored] = true\n }\n return super.emit(ev, data)\n }\n\n\n get fd () { return this[_fd] }\n get path () { return this[_path] }\n\n [_onerror] (er) {\n this[_close]()\n this[_writing] = true\n this.emit('error', er)\n }\n\n [_open] () {\n fs.open(this[_path], this[_flags], this[_mode],\n (er, fd) => this[_onopen](er, fd))\n }\n\n [_onopen] (er, fd) {\n if (this[_defaultFlag] &&\n this[_flags] === 'r+' &&\n er && er.code === 'ENOENT') {\n this[_flags] = 'w'\n this[_open]()\n } else if (er)\n this[_onerror](er)\n else {\n this[_fd] = fd\n this.emit('open', fd)\n this[_flush]()\n }\n }\n\n end (buf, enc) {\n if (buf)\n this.write(buf, enc)\n\n this[_ended] = true\n\n // synthetic after-write logic, where drain/finish live\n if (!this[_writing] && !this[_queue].length &&\n typeof this[_fd] === 'number')\n this[_onwrite](null, 0)\n return this\n }\n\n write (buf, enc) {\n if (typeof buf === 'string')\n buf = Buffer.from(buf, enc)\n\n if (this[_ended]) {\n this.emit('error', new Error('write() after end()'))\n return false\n }\n\n if (this[_fd] === null || this[_writing] || this[_queue].length) {\n this[_queue].push(buf)\n this[_needDrain] = true\n return false\n }\n\n this[_writing] = true\n this[_write](buf)\n return true\n }\n\n [_write] (buf) {\n fs.write(this[_fd], buf, 0, buf.length, this[_pos], (er, bw) =>\n this[_onwrite](er, bw))\n }\n\n [_onwrite] (er, bw) {\n if (er)\n this[_onerror](er)\n else {\n if (this[_pos] !== null)\n this[_pos] += bw\n if (this[_queue].length)\n this[_flush]()\n else {\n this[_writing] = false\n\n if (this[_ended] && !this[_finished]) {\n this[_finished] = true\n this[_close]()\n this.emit('finish')\n } else if (this[_needDrain]) {\n this[_needDrain] = false\n this.emit('drain')\n }\n }\n }\n }\n\n [_flush] () {\n if (this[_queue].length === 0) {\n if (this[_ended])\n this[_onwrite](null, 0)\n } else if (this[_queue].length === 1)\n this[_write](this[_queue].pop())\n else {\n const iovec = this[_queue]\n this[_queue] = []\n writev(this[_fd], iovec, this[_pos],\n (er, bw) => this[_onwrite](er, bw))\n }\n }\n\n [_close] () {\n if (this[_autoClose] && typeof this[_fd] === 'number') {\n const fd = this[_fd]\n this[_fd] = null\n fs.close(fd, er => er ? this.emit('error', er) : this.emit('close'))\n }\n }\n}\n\nclass WriteStreamSync extends WriteStream {\n [_open] () {\n let fd\n // only wrap in a try{} block if we know we'll retry, to avoid\n // the rethrow obscuring the error's source frame in most cases.\n if (this[_defaultFlag] && this[_flags] === 'r+') {\n try {\n fd = fs.openSync(this[_path], this[_flags], this[_mode])\n } catch (er) {\n if (er.code === 'ENOENT') {\n this[_flags] = 'w'\n return this[_open]()\n } else\n throw er\n }\n } else\n fd = fs.openSync(this[_path], this[_flags], this[_mode])\n\n this[_onopen](null, fd)\n }\n\n [_close] () {\n if (this[_autoClose] && typeof this[_fd] === 'number') {\n const fd = this[_fd]\n this[_fd] = null\n fs.closeSync(fd)\n this.emit('close')\n }\n }\n\n [_write] (buf) {\n // throw the original, but try to close if it fails\n let threw = true\n try {\n this[_onwrite](null,\n fs.writeSync(this[_fd], buf, 0, buf.length, this[_pos]))\n threw = false\n } finally {\n if (threw)\n try { this[_close]() } catch (_) {}\n }\n }\n}\n\nexports.ReadStream = ReadStream\nexports.ReadStreamSync = ReadStreamSync\n\nexports.WriteStream = WriteStream\nexports.WriteStreamSync = WriteStreamSync\n", "'use strict'\n\n// this[BUFFER] is the remainder of a chunk if we're waiting for\n// the full 512 bytes of a header to come in. We will Buffer.concat()\n// it to the next write(), which is a mem copy, but a small one.\n//\n// this[QUEUE] is a Yallist of entries that haven't been emitted\n// yet this can only get filled up if the user keeps write()ing after\n// a write() returns false, or does a write() with more than one entry\n//\n// We don't buffer chunks, we always parse them and either create an\n// entry, or push it into the active entry. The ReadEntry class knows\n// to throw data away if .ignore=true\n//\n// Shift entry off the buffer when it emits 'end', and emit 'entry' for\n// the next one in the list.\n//\n// At any time, we're pushing body chunks into the entry at WRITEENTRY,\n// and waiting for 'end' on the entry at READENTRY\n//\n// ignored entries get .resume() called on them straight away\n\nconst warner = require('./warn-mixin.js')\nconst Header = require('./header.js')\nconst EE = require('events')\nconst Yallist = require('yallist')\nconst maxMetaEntrySize = 1024 * 1024\nconst Entry = require('./read-entry.js')\nconst Pax = require('./pax.js')\nconst zlib = require('minizlib')\n\nconst gzipHeader = Buffer.from([0x1f, 0x8b])\nconst STATE = Symbol('state')\nconst WRITEENTRY = Symbol('writeEntry')\nconst READENTRY = Symbol('readEntry')\nconst NEXTENTRY = Symbol('nextEntry')\nconst PROCESSENTRY = Symbol('processEntry')\nconst EX = Symbol('extendedHeader')\nconst GEX = Symbol('globalExtendedHeader')\nconst META = Symbol('meta')\nconst EMITMETA = Symbol('emitMeta')\nconst BUFFER = Symbol('buffer')\nconst QUEUE = Symbol('queue')\nconst ENDED = Symbol('ended')\nconst EMITTEDEND = Symbol('emittedEnd')\nconst EMIT = Symbol('emit')\nconst UNZIP = Symbol('unzip')\nconst CONSUMECHUNK = Symbol('consumeChunk')\nconst CONSUMECHUNKSUB = Symbol('consumeChunkSub')\nconst CONSUMEBODY = Symbol('consumeBody')\nconst CONSUMEMETA = Symbol('consumeMeta')\nconst CONSUMEHEADER = Symbol('consumeHeader')\nconst CONSUMING = Symbol('consuming')\nconst BUFFERCONCAT = Symbol('bufferConcat')\nconst MAYBEEND = Symbol('maybeEnd')\nconst WRITING = Symbol('writing')\nconst ABORTED = Symbol('aborted')\nconst DONE = Symbol('onDone')\nconst SAW_VALID_ENTRY = Symbol('sawValidEntry')\nconst SAW_NULL_BLOCK = Symbol('sawNullBlock')\nconst SAW_EOF = Symbol('sawEOF')\n\nconst noop = _ => true\n\nmodule.exports = warner(class Parser extends EE {\n constructor (opt) {\n opt = opt || {}\n super(opt)\n\n this.file = opt.file || ''\n\n // set to boolean false when an entry starts. 1024 bytes of \\0\n // is technically a valid tarball, albeit a boring one.\n this[SAW_VALID_ENTRY] = null\n\n // these BADARCHIVE errors can't be detected early. listen on DONE.\n this.on(DONE, _ => {\n if (this[STATE] === 'begin' || this[SAW_VALID_ENTRY] === false) {\n // either less than 1 block of data, or all entries were invalid.\n // Either way, probably not even a tarball.\n this.warn('TAR_BAD_ARCHIVE', 'Unrecognized archive format')\n }\n })\n\n if (opt.ondone)\n this.on(DONE, opt.ondone)\n else {\n this.on(DONE, _ => {\n this.emit('prefinish')\n this.emit('finish')\n this.emit('end')\n this.emit('close')\n })\n }\n\n this.strict = !!opt.strict\n this.maxMetaEntrySize = opt.maxMetaEntrySize || maxMetaEntrySize\n this.filter = typeof opt.filter === 'function' ? opt.filter : noop\n\n // have to set this so that streams are ok piping into it\n this.writable = true\n this.readable = false\n\n this[QUEUE] = new Yallist()\n this[BUFFER] = null\n this[READENTRY] = null\n this[WRITEENTRY] = null\n this[STATE] = 'begin'\n this[META] = ''\n this[EX] = null\n this[GEX] = null\n this[ENDED] = false\n this[UNZIP] = null\n this[ABORTED] = false\n this[SAW_NULL_BLOCK] = false\n this[SAW_EOF] = false\n if (typeof opt.onwarn === 'function')\n this.on('warn', opt.onwarn)\n if (typeof opt.onentry === 'function')\n this.on('entry', opt.onentry)\n }\n\n [CONSUMEHEADER] (chunk, position) {\n if (this[SAW_VALID_ENTRY] === null)\n this[SAW_VALID_ENTRY] = false\n let header\n try {\n header = new Header(chunk, position, this[EX], this[GEX])\n } catch (er) {\n return this.warn('TAR_ENTRY_INVALID', er)\n }\n\n if (header.nullBlock) {\n if (this[SAW_NULL_BLOCK]) {\n this[SAW_EOF] = true\n // ending an archive with no entries. pointless, but legal.\n if (this[STATE] === 'begin')\n this[STATE] = 'header'\n this[EMIT]('eof')\n } else {\n this[SAW_NULL_BLOCK] = true\n this[EMIT]('nullBlock')\n }\n } else {\n this[SAW_NULL_BLOCK] = false\n if (!header.cksumValid)\n this.warn('TAR_ENTRY_INVALID', 'checksum failure', {header})\n else if (!header.path)\n this.warn('TAR_ENTRY_INVALID', 'path is required', {header})\n else {\n const type = header.type\n if (/^(Symbolic)?Link$/.test(type) && !header.linkpath)\n this.warn('TAR_ENTRY_INVALID', 'linkpath required', {header})\n else if (!/^(Symbolic)?Link$/.test(type) && header.linkpath)\n this.warn('TAR_ENTRY_INVALID', 'linkpath forbidden', {header})\n else {\n const entry = this[WRITEENTRY] = new Entry(header, this[EX], this[GEX])\n\n // we do this for meta & ignored entries as well, because they\n // are still valid tar, or else we wouldn't know to ignore them\n if (!this[SAW_VALID_ENTRY]) {\n if (entry.remain) {\n // this might be the one!\n const onend = () => {\n if (!entry.invalid)\n this[SAW_VALID_ENTRY] = true\n }\n entry.on('end', onend)\n } else\n this[SAW_VALID_ENTRY] = true\n }\n\n if (entry.meta) {\n if (entry.size > this.maxMetaEntrySize) {\n entry.ignore = true\n this[EMIT]('ignoredEntry', entry)\n this[STATE] = 'ignore'\n entry.resume()\n } else if (entry.size > 0) {\n this[META] = ''\n entry.on('data', c => this[META] += c)\n this[STATE] = 'meta'\n }\n } else {\n this[EX] = null\n entry.ignore = entry.ignore || !this.filter(entry.path, entry)\n\n if (entry.ignore) {\n // probably valid, just not something we care about\n this[EMIT]('ignoredEntry', entry)\n this[STATE] = entry.remain ? 'ignore' : 'header'\n entry.resume()\n } else {\n if (entry.remain)\n this[STATE] = 'body'\n else {\n this[STATE] = 'header'\n entry.end()\n }\n\n if (!this[READENTRY]) {\n this[QUEUE].push(entry)\n this[NEXTENTRY]()\n } else\n this[QUEUE].push(entry)\n }\n }\n }\n }\n }\n }\n\n [PROCESSENTRY] (entry) {\n let go = true\n\n if (!entry) {\n this[READENTRY] = null\n go = false\n } else if (Array.isArray(entry))\n this.emit.apply(this, entry)\n else {\n this[READENTRY] = entry\n this.emit('entry', entry)\n if (!entry.emittedEnd) {\n entry.on('end', _ => this[NEXTENTRY]())\n go = false\n }\n }\n\n return go\n }\n\n [NEXTENTRY] () {\n do {} while (this[PROCESSENTRY](this[QUEUE].shift()))\n\n if (!this[QUEUE].length) {\n // At this point, there's nothing in the queue, but we may have an\n // entry which is being consumed (readEntry).\n // If we don't, then we definitely can handle more data.\n // If we do, and either it's flowing, or it has never had any data\n // written to it, then it needs more.\n // The only other possibility is that it has returned false from a\n // write() call, so we wait for the next drain to continue.\n const re = this[READENTRY]\n const drainNow = !re || re.flowing || re.size === re.remain\n if (drainNow) {\n if (!this[WRITING])\n this.emit('drain')\n } else\n re.once('drain', _ => this.emit('drain'))\n }\n }\n\n [CONSUMEBODY] (chunk, position) {\n // write up to but no more than writeEntry.blockRemain\n const entry = this[WRITEENTRY]\n const br = entry.blockRemain\n const c = (br >= chunk.length && position === 0) ? chunk\n : chunk.slice(position, position + br)\n\n entry.write(c)\n\n if (!entry.blockRemain) {\n this[STATE] = 'header'\n this[WRITEENTRY] = null\n entry.end()\n }\n\n return c.length\n }\n\n [CONSUMEMETA] (chunk, position) {\n const entry = this[WRITEENTRY]\n const ret = this[CONSUMEBODY](chunk, position)\n\n // if we finished, then the entry is reset\n if (!this[WRITEENTRY])\n this[EMITMETA](entry)\n\n return ret\n }\n\n [EMIT] (ev, data, extra) {\n if (!this[QUEUE].length && !this[READENTRY])\n this.emit(ev, data, extra)\n else\n this[QUEUE].push([ev, data, extra])\n }\n\n [EMITMETA] (entry) {\n this[EMIT]('meta', this[META])\n switch (entry.type) {\n case 'ExtendedHeader':\n case 'OldExtendedHeader':\n this[EX] = Pax.parse(this[META], this[EX], false)\n break\n\n case 'GlobalExtendedHeader':\n this[GEX] = Pax.parse(this[META], this[GEX], true)\n break\n\n case 'NextFileHasLongPath':\n case 'OldGnuLongPath':\n this[EX] = this[EX] || Object.create(null)\n this[EX].path = this[META].replace(/\\0.*/, '')\n break\n\n case 'NextFileHasLongLinkpath':\n this[EX] = this[EX] || Object.create(null)\n this[EX].linkpath = this[META].replace(/\\0.*/, '')\n break\n\n /* istanbul ignore next */\n default: throw new Error('unknown meta: ' + entry.type)\n }\n }\n\n abort (error) {\n this[ABORTED] = true\n this.emit('abort', error)\n // always throws, even in non-strict mode\n this.warn('TAR_ABORT', error, { recoverable: false })\n }\n\n write (chunk) {\n if (this[ABORTED])\n return\n\n // first write, might be gzipped\n if (this[UNZIP] === null && chunk) {\n if (this[BUFFER]) {\n chunk = Buffer.concat([this[BUFFER], chunk])\n this[BUFFER] = null\n }\n if (chunk.length < gzipHeader.length) {\n this[BUFFER] = chunk\n return true\n }\n for (let i = 0; this[UNZIP] === null && i < gzipHeader.length; i++) {\n if (chunk[i] !== gzipHeader[i])\n this[UNZIP] = false\n }\n if (this[UNZIP] === null) {\n const ended = this[ENDED]\n this[ENDED] = false\n this[UNZIP] = new zlib.Unzip()\n this[UNZIP].on('data', chunk => this[CONSUMECHUNK](chunk))\n this[UNZIP].on('error', er => this.abort(er))\n this[UNZIP].on('end', _ => {\n this[ENDED] = true\n this[CONSUMECHUNK]()\n })\n this[WRITING] = true\n const ret = this[UNZIP][ended ? 'end' : 'write'](chunk)\n this[WRITING] = false\n return ret\n }\n }\n\n this[WRITING] = true\n if (this[UNZIP])\n this[UNZIP].write(chunk)\n else\n this[CONSUMECHUNK](chunk)\n this[WRITING] = false\n\n // return false if there's a queue, or if the current entry isn't flowing\n const ret =\n this[QUEUE].length ? false :\n this[READENTRY] ? this[READENTRY].flowing :\n true\n\n // if we have no queue, then that means a clogged READENTRY\n if (!ret && !this[QUEUE].length)\n this[READENTRY].once('drain', _ => this.emit('drain'))\n\n return ret\n }\n\n [BUFFERCONCAT] (c) {\n if (c && !this[ABORTED])\n this[BUFFER] = this[BUFFER] ? Buffer.concat([this[BUFFER], c]) : c\n }\n\n [MAYBEEND] () {\n if (this[ENDED] &&\n !this[EMITTEDEND] &&\n !this[ABORTED] &&\n !this[CONSUMING]) {\n this[EMITTEDEND] = true\n const entry = this[WRITEENTRY]\n if (entry && entry.blockRemain) {\n // truncated, likely a damaged file\n const have = this[BUFFER] ? this[BUFFER].length : 0\n this.warn('TAR_BAD_ARCHIVE', `Truncated input (needed ${\n entry.blockRemain} more bytes, only ${have} available)`, {entry})\n if (this[BUFFER])\n entry.write(this[BUFFER])\n entry.end()\n }\n this[EMIT](DONE)\n }\n }\n\n [CONSUMECHUNK] (chunk) {\n if (this[CONSUMING])\n this[BUFFERCONCAT](chunk)\n else if (!chunk && !this[BUFFER])\n this[MAYBEEND]()\n else {\n this[CONSUMING] = true\n if (this[BUFFER]) {\n this[BUFFERCONCAT](chunk)\n const c = this[BUFFER]\n this[BUFFER] = null\n this[CONSUMECHUNKSUB](c)\n } else\n this[CONSUMECHUNKSUB](chunk)\n\n while (this[BUFFER] &&\n this[BUFFER].length >= 512 &&\n !this[ABORTED] &&\n !this[SAW_EOF]) {\n const c = this[BUFFER]\n this[BUFFER] = null\n this[CONSUMECHUNKSUB](c)\n }\n this[CONSUMING] = false\n }\n\n if (!this[BUFFER] || this[ENDED])\n this[MAYBEEND]()\n }\n\n [CONSUMECHUNKSUB] (chunk) {\n // we know that we are in CONSUMING mode, so anything written goes into\n // the buffer. Advance the position and put any remainder in the buffer.\n let position = 0\n const length = chunk.length\n while (position + 512 <= length && !this[ABORTED] && !this[SAW_EOF]) {\n switch (this[STATE]) {\n case 'begin':\n case 'header':\n this[CONSUMEHEADER](chunk, position)\n position += 512\n break\n\n case 'ignore':\n case 'body':\n position += this[CONSUMEBODY](chunk, position)\n break\n\n case 'meta':\n position += this[CONSUMEMETA](chunk, position)\n break\n\n /* istanbul ignore next */\n default:\n throw new Error('invalid state: ' + this[STATE])\n }\n }\n\n if (position < length) {\n if (this[BUFFER])\n this[BUFFER] = Buffer.concat([chunk.slice(position), this[BUFFER]])\n else\n this[BUFFER] = chunk.slice(position)\n }\n }\n\n end (chunk) {\n if (!this[ABORTED]) {\n if (this[UNZIP])\n this[UNZIP].end(chunk)\n else {\n this[ENDED] = true\n this.write(chunk)\n }\n }\n }\n})\n", "'use strict'\n\n// XXX: This shares a lot in common with extract.js\n// maybe some DRY opportunity here?\n\n// tar -t\nconst hlo = require('./high-level-opt.js')\nconst Parser = require('./parse.js')\nconst fs = require('fs')\nconst fsm = require('fs-minipass')\nconst path = require('path')\n\nmodule.exports = (opt_, files, cb) => {\n if (typeof opt_ === 'function')\n cb = opt_, files = null, opt_ = {}\n else if (Array.isArray(opt_))\n files = opt_, opt_ = {}\n\n if (typeof files === 'function')\n cb = files, files = null\n\n if (!files)\n files = []\n else\n files = Array.from(files)\n\n const opt = hlo(opt_)\n\n if (opt.sync && typeof cb === 'function')\n throw new TypeError('callback not supported for sync tar functions')\n\n if (!opt.file && typeof cb === 'function')\n throw new TypeError('callback only supported with file option')\n\n if (files.length)\n filesFilter(opt, files)\n\n if (!opt.noResume)\n onentryFunction(opt)\n\n return opt.file && opt.sync ? listFileSync(opt)\n : opt.file ? listFile(opt, cb)\n : list(opt)\n}\n\nconst onentryFunction = opt => {\n const onentry = opt.onentry\n opt.onentry = onentry ? e => {\n onentry(e)\n e.resume()\n } : e => e.resume()\n}\n\n// construct a filter that limits the file entries listed\n// include child entries if a dir is included\nconst filesFilter = (opt, files) => {\n const map = new Map(files.map(f => [f.replace(/\\/+$/, ''), true]))\n const filter = opt.filter\n\n const mapHas = (file, r) => {\n const root = r || path.parse(file).root || '.'\n const ret = file === root ? false\n : map.has(file) ? map.get(file)\n : mapHas(path.dirname(file), root)\n\n map.set(file, ret)\n return ret\n }\n\n opt.filter = filter\n ? (file, entry) => filter(file, entry) && mapHas(file.replace(/\\/+$/, ''))\n : file => mapHas(file.replace(/\\/+$/, ''))\n}\n\nconst listFileSync = opt => {\n const p = list(opt)\n const file = opt.file\n let threw = true\n let fd\n try {\n const stat = fs.statSync(file)\n const readSize = opt.maxReadSize || 16 * 1024 * 1024\n if (stat.size < readSize)\n p.end(fs.readFileSync(file))\n else {\n let pos = 0\n const buf = Buffer.allocUnsafe(readSize)\n fd = fs.openSync(file, 'r')\n while (pos < stat.size) {\n const bytesRead = fs.readSync(fd, buf, 0, readSize, pos)\n pos += bytesRead\n p.write(buf.slice(0, bytesRead))\n }\n p.end()\n }\n threw = false\n } finally {\n if (threw && fd) {\n try {\n fs.closeSync(fd)\n } catch (er) {}\n }\n }\n}\n\nconst listFile = (opt, cb) => {\n const parse = new Parser(opt)\n const readSize = opt.maxReadSize || 16 * 1024 * 1024\n\n const file = opt.file\n const p = new Promise((resolve, reject) => {\n parse.on('error', reject)\n parse.on('end', resolve)\n\n fs.stat(file, (er, stat) => {\n if (er)\n reject(er)\n else {\n const stream = new fsm.ReadStream(file, {\n readSize: readSize,\n size: stat.size,\n })\n stream.on('error', reject)\n stream.pipe(parse)\n }\n })\n })\n return cb ? p.then(cb, cb) : p\n}\n\nconst list = opt => new Parser(opt)\n", "'use strict'\n\n// tar -c\nconst hlo = require('./high-level-opt.js')\n\nconst Pack = require('./pack.js')\nconst fsm = require('fs-minipass')\nconst t = require('./list.js')\nconst path = require('path')\n\nmodule.exports = (opt_, files, cb) => {\n if (typeof files === 'function')\n cb = files\n\n if (Array.isArray(opt_))\n files = opt_, opt_ = {}\n\n if (!files || !Array.isArray(files) || !files.length)\n throw new TypeError('no files or directories specified')\n\n files = Array.from(files)\n\n const opt = hlo(opt_)\n\n if (opt.sync && typeof cb === 'function')\n throw new TypeError('callback not supported for sync tar functions')\n\n if (!opt.file && typeof cb === 'function')\n throw new TypeError('callback only supported with file option')\n\n return opt.file && opt.sync ? createFileSync(opt, files)\n : opt.file ? createFile(opt, files, cb)\n : opt.sync ? createSync(opt, files)\n : create(opt, files)\n}\n\nconst createFileSync = (opt, files) => {\n const p = new Pack.Sync(opt)\n const stream = new fsm.WriteStreamSync(opt.file, {\n mode: opt.mode || 0o666,\n })\n p.pipe(stream)\n addFilesSync(p, files)\n}\n\nconst createFile = (opt, files, cb) => {\n const p = new Pack(opt)\n const stream = new fsm.WriteStream(opt.file, {\n mode: opt.mode || 0o666,\n })\n p.pipe(stream)\n\n const promise = new Promise((res, rej) => {\n stream.on('error', rej)\n stream.on('close', res)\n p.on('error', rej)\n })\n\n addFilesAsync(p, files)\n\n return cb ? promise.then(cb, cb) : promise\n}\n\nconst addFilesSync = (p, files) => {\n files.forEach(file => {\n if (file.charAt(0) === '@') {\n t({\n file: path.resolve(p.cwd, file.substr(1)),\n sync: true,\n noResume: true,\n onentry: entry => p.add(entry),\n })\n } else\n p.add(file)\n })\n p.end()\n}\n\nconst addFilesAsync = (p, files) => {\n while (files.length) {\n const file = files.shift()\n if (file.charAt(0) === '@') {\n return t({\n file: path.resolve(p.cwd, file.substr(1)),\n noResume: true,\n onentry: entry => p.add(entry),\n }).then(_ => addFilesAsync(p, files))\n } else\n p.add(file)\n }\n p.end()\n}\n\nconst createSync = (opt, files) => {\n const p = new Pack.Sync(opt)\n addFilesSync(p, files)\n return p\n}\n\nconst create = (opt, files) => {\n const p = new Pack(opt)\n addFilesAsync(p, files)\n return p\n}\n", "'use strict'\n\n// tar -r\nconst hlo = require('./high-level-opt.js')\nconst Pack = require('./pack.js')\nconst fs = require('fs')\nconst fsm = require('fs-minipass')\nconst t = require('./list.js')\nconst path = require('path')\n\n// starting at the head of the file, read a Header\n// If the checksum is invalid, that's our position to start writing\n// If it is, jump forward by the specified size (round up to 512)\n// and try again.\n// Write the new Pack stream starting there.\n\nconst Header = require('./header.js')\n\nmodule.exports = (opt_, files, cb) => {\n const opt = hlo(opt_)\n\n if (!opt.file)\n throw new TypeError('file is required')\n\n if (opt.gzip)\n throw new TypeError('cannot append to compressed archives')\n\n if (!files || !Array.isArray(files) || !files.length)\n throw new TypeError('no files or directories specified')\n\n files = Array.from(files)\n\n return opt.sync ? replaceSync(opt, files)\n : replace(opt, files, cb)\n}\n\nconst replaceSync = (opt, files) => {\n const p = new Pack.Sync(opt)\n\n let threw = true\n let fd\n let position\n\n try {\n try {\n fd = fs.openSync(opt.file, 'r+')\n } catch (er) {\n if (er.code === 'ENOENT')\n fd = fs.openSync(opt.file, 'w+')\n else\n throw er\n }\n\n const st = fs.fstatSync(fd)\n const headBuf = Buffer.alloc(512)\n\n POSITION: for (position = 0; position < st.size; position += 512) {\n for (let bufPos = 0, bytes = 0; bufPos < 512; bufPos += bytes) {\n bytes = fs.readSync(\n fd, headBuf, bufPos, headBuf.length - bufPos, position + bufPos\n )\n\n if (position === 0 && headBuf[0] === 0x1f && headBuf[1] === 0x8b)\n throw new Error('cannot append to compressed archives')\n\n if (!bytes)\n break POSITION\n }\n\n const h = new Header(headBuf)\n if (!h.cksumValid)\n break\n const entryBlockSize = 512 * Math.ceil(h.size / 512)\n if (position + entryBlockSize + 512 > st.size)\n break\n // the 512 for the header we just parsed will be added as well\n // also jump ahead all the blocks for the body\n position += entryBlockSize\n if (opt.mtimeCache)\n opt.mtimeCache.set(h.path, h.mtime)\n }\n threw = false\n\n streamSync(opt, p, position, fd, files)\n } finally {\n if (threw) {\n try {\n fs.closeSync(fd)\n } catch (er) {}\n }\n }\n}\n\nconst streamSync = (opt, p, position, fd, files) => {\n const stream = new fsm.WriteStreamSync(opt.file, {\n fd: fd,\n start: position,\n })\n p.pipe(stream)\n addFilesSync(p, files)\n}\n\nconst replace = (opt, files, cb) => {\n files = Array.from(files)\n const p = new Pack(opt)\n\n const getPos = (fd, size, cb_) => {\n const cb = (er, pos) => {\n if (er)\n fs.close(fd, _ => cb_(er))\n else\n cb_(null, pos)\n }\n\n let position = 0\n if (size === 0)\n return cb(null, 0)\n\n let bufPos = 0\n const headBuf = Buffer.alloc(512)\n const onread = (er, bytes) => {\n if (er)\n return cb(er)\n bufPos += bytes\n if (bufPos < 512 && bytes) {\n return fs.read(\n fd, headBuf, bufPos, headBuf.length - bufPos,\n position + bufPos, onread\n )\n }\n\n if (position === 0 && headBuf[0] === 0x1f && headBuf[1] === 0x8b)\n return cb(new Error('cannot append to compressed archives'))\n\n // truncated header\n if (bufPos < 512)\n return cb(null, position)\n\n const h = new Header(headBuf)\n if (!h.cksumValid)\n return cb(null, position)\n\n const entryBlockSize = 512 * Math.ceil(h.size / 512)\n if (position + entryBlockSize + 512 > size)\n return cb(null, position)\n\n position += entryBlockSize + 512\n if (position >= size)\n return cb(null, position)\n\n if (opt.mtimeCache)\n opt.mtimeCache.set(h.path, h.mtime)\n bufPos = 0\n fs.read(fd, headBuf, 0, 512, position, onread)\n }\n fs.read(fd, headBuf, 0, 512, position, onread)\n }\n\n const promise = new Promise((resolve, reject) => {\n p.on('error', reject)\n let flag = 'r+'\n const onopen = (er, fd) => {\n if (er && er.code === 'ENOENT' && flag === 'r+') {\n flag = 'w+'\n return fs.open(opt.file, flag, onopen)\n }\n\n if (er)\n return reject(er)\n\n fs.fstat(fd, (er, st) => {\n if (er)\n return reject(er)\n getPos(fd, st.size, (er, position) => {\n if (er)\n return reject(er)\n const stream = new fsm.WriteStream(opt.file, {\n fd: fd,\n start: position,\n })\n p.pipe(stream)\n stream.on('error', reject)\n stream.on('close', resolve)\n addFilesAsync(p, files)\n })\n })\n }\n fs.open(opt.file, flag, onopen)\n })\n\n return cb ? promise.then(cb, cb) : promise\n}\n\nconst addFilesSync = (p, files) => {\n files.forEach(file => {\n if (file.charAt(0) === '@') {\n t({\n file: path.resolve(p.cwd, file.substr(1)),\n sync: true,\n noResume: true,\n onentry: entry => p.add(entry),\n })\n } else\n p.add(file)\n })\n p.end()\n}\n\nconst addFilesAsync = (p, files) => {\n while (files.length) {\n const file = files.shift()\n if (file.charAt(0) === '@') {\n return t({\n file: path.resolve(p.cwd, file.substr(1)),\n noResume: true,\n onentry: entry => p.add(entry),\n }).then(_ => addFilesAsync(p, files))\n } else\n p.add(file)\n }\n p.end()\n}\n", "'use strict'\n\n// tar -u\n\nconst hlo = require('./high-level-opt.js')\nconst r = require('./replace.js')\n// just call tar.r with the filter and mtimeCache\n\nmodule.exports = (opt_, files, cb) => {\n const opt = hlo(opt_)\n\n if (!opt.file)\n throw new TypeError('file is required')\n\n if (opt.gzip)\n throw new TypeError('cannot append to compressed archives')\n\n if (!files || !Array.isArray(files) || !files.length)\n throw new TypeError('no files or directories specified')\n\n files = Array.from(files)\n\n mtimeFilter(opt)\n return r(opt, files, cb)\n}\n\nconst mtimeFilter = opt => {\n const filter = opt.filter\n\n if (!opt.mtimeCache)\n opt.mtimeCache = new Map()\n\n opt.filter = filter ? (path, stat) =>\n filter(path, stat) && !(opt.mtimeCache.get(path) > stat.mtime)\n : (path, stat) => !(opt.mtimeCache.get(path) > stat.mtime)\n}\n", "const { promisify } = require('util')\nconst fs = require('fs')\nconst optsArg = opts => {\n if (!opts)\n opts = { mode: 0o777, fs }\n else if (typeof opts === 'object')\n opts = { mode: 0o777, fs, ...opts }\n else if (typeof opts === 'number')\n opts = { mode: opts, fs }\n else if (typeof opts === 'string')\n opts = { mode: parseInt(opts, 8), fs }\n else\n throw new TypeError('invalid options argument')\n\n opts.mkdir = opts.mkdir || opts.fs.mkdir || fs.mkdir\n opts.mkdirAsync = promisify(opts.mkdir)\n opts.stat = opts.stat || opts.fs.stat || fs.stat\n opts.statAsync = promisify(opts.stat)\n opts.statSync = opts.statSync || opts.fs.statSync || fs.statSync\n opts.mkdirSync = opts.mkdirSync || opts.fs.mkdirSync || fs.mkdirSync\n return opts\n}\nmodule.exports = optsArg\n", "const platform = process.env.__TESTING_MKDIRP_PLATFORM__ || process.platform\nconst { resolve, parse } = require('path')\nconst pathArg = path => {\n if (/\\0/.test(path)) {\n // simulate same failure that node raises\n throw Object.assign(\n new TypeError('path must be a string without null bytes'),\n {\n path,\n code: 'ERR_INVALID_ARG_VALUE',\n }\n )\n }\n\n path = resolve(path)\n if (platform === 'win32') {\n const badWinChars = /[*|\"<>?:]/\n const {root} = parse(path)\n if (badWinChars.test(path.substr(root.length))) {\n throw Object.assign(new Error('Illegal characters in path.'), {\n path,\n code: 'EINVAL',\n })\n }\n }\n\n return path\n}\nmodule.exports = pathArg\n", "const {dirname} = require('path')\n\nconst findMade = (opts, parent, path = undefined) => {\n // we never want the 'made' return value to be a root directory\n if (path === parent)\n return Promise.resolve()\n\n return opts.statAsync(parent).then(\n st => st.isDirectory() ? path : undefined, // will fail later\n er => er.code === 'ENOENT'\n ? findMade(opts, dirname(parent), parent)\n : undefined\n )\n}\n\nconst findMadeSync = (opts, parent, path = undefined) => {\n if (path === parent)\n return undefined\n\n try {\n return opts.statSync(parent).isDirectory() ? path : undefined\n } catch (er) {\n return er.code === 'ENOENT'\n ? findMadeSync(opts, dirname(parent), parent)\n : undefined\n }\n}\n\nmodule.exports = {findMade, findMadeSync}\n", "const {dirname} = require('path')\n\nconst mkdirpManual = (path, opts, made) => {\n opts.recursive = false\n const parent = dirname(path)\n if (parent === path) {\n return opts.mkdirAsync(path, opts).catch(er => {\n // swallowed by recursive implementation on posix systems\n // any other error is a failure\n if (er.code !== 'EISDIR')\n throw er\n })\n }\n\n return opts.mkdirAsync(path, opts).then(() => made || path, er => {\n if (er.code === 'ENOENT')\n return mkdirpManual(parent, opts)\n .then(made => mkdirpManual(path, opts, made))\n if (er.code !== 'EEXIST' && er.code !== 'EROFS')\n throw er\n return opts.statAsync(path).then(st => {\n if (st.isDirectory())\n return made\n else\n throw er\n }, () => { throw er })\n })\n}\n\nconst mkdirpManualSync = (path, opts, made) => {\n const parent = dirname(path)\n opts.recursive = false\n\n if (parent === path) {\n try {\n return opts.mkdirSync(path, opts)\n } catch (er) {\n // swallowed by recursive implementation on posix systems\n // any other error is a failure\n if (er.code !== 'EISDIR')\n throw er\n else\n return\n }\n }\n\n try {\n opts.mkdirSync(path, opts)\n return made || path\n } catch (er) {\n if (er.code === 'ENOENT')\n return mkdirpManualSync(path, opts, mkdirpManualSync(parent, opts, made))\n if (er.code !== 'EEXIST' && er.code !== 'EROFS')\n throw er\n try {\n if (!opts.statSync(path).isDirectory())\n throw er\n } catch (_) {\n throw er\n }\n }\n}\n\nmodule.exports = {mkdirpManual, mkdirpManualSync}\n", "const {dirname} = require('path')\nconst {findMade, findMadeSync} = require('./find-made.js')\nconst {mkdirpManual, mkdirpManualSync} = require('./mkdirp-manual.js')\n\nconst mkdirpNative = (path, opts) => {\n opts.recursive = true\n const parent = dirname(path)\n if (parent === path)\n return opts.mkdirAsync(path, opts)\n\n return findMade(opts, path).then(made =>\n opts.mkdirAsync(path, opts).then(() => made)\n .catch(er => {\n if (er.code === 'ENOENT')\n return mkdirpManual(path, opts)\n else\n throw er\n }))\n}\n\nconst mkdirpNativeSync = (path, opts) => {\n opts.recursive = true\n const parent = dirname(path)\n if (parent === path)\n return opts.mkdirSync(path, opts)\n\n const made = findMadeSync(opts, path)\n try {\n opts.mkdirSync(path, opts)\n return made\n } catch (er) {\n if (er.code === 'ENOENT')\n return mkdirpManualSync(path, opts)\n else\n throw er\n }\n}\n\nmodule.exports = {mkdirpNative, mkdirpNativeSync}\n", "const fs = require('fs')\n\nconst version = process.env.__TESTING_MKDIRP_NODE_VERSION__ || process.version\nconst versArr = version.replace(/^v/, '').split('.')\nconst hasNative = +versArr[0] > 10 || +versArr[0] === 10 && +versArr[1] >= 12\n\nconst useNative = !hasNative ? () => false : opts => opts.mkdir === fs.mkdir\nconst useNativeSync = !hasNative ? () => false : opts => opts.mkdirSync === fs.mkdirSync\n\nmodule.exports = {useNative, useNativeSync}\n", "const optsArg = require('./lib/opts-arg.js')\nconst pathArg = require('./lib/path-arg.js')\n\nconst {mkdirpNative, mkdirpNativeSync} = require('./lib/mkdirp-native.js')\nconst {mkdirpManual, mkdirpManualSync} = require('./lib/mkdirp-manual.js')\nconst {useNative, useNativeSync} = require('./lib/use-native.js')\n\n\nconst mkdirp = (path, opts) => {\n path = pathArg(path)\n opts = optsArg(opts)\n return useNative(opts)\n ? mkdirpNative(path, opts)\n : mkdirpManual(path, opts)\n}\n\nconst mkdirpSync = (path, opts) => {\n path = pathArg(path)\n opts = optsArg(opts)\n return useNativeSync(opts)\n ? mkdirpNativeSync(path, opts)\n : mkdirpManualSync(path, opts)\n}\n\nmkdirp.sync = mkdirpSync\nmkdirp.native = (path, opts) => mkdirpNative(pathArg(path), optsArg(opts))\nmkdirp.manual = (path, opts) => mkdirpManual(pathArg(path), optsArg(opts))\nmkdirp.nativeSync = (path, opts) => mkdirpNativeSync(pathArg(path), optsArg(opts))\nmkdirp.manualSync = (path, opts) => mkdirpManualSync(pathArg(path), optsArg(opts))\n\nmodule.exports = mkdirp\n", "'use strict'\nconst fs = require('fs')\nconst path = require('path')\n\n/* istanbul ignore next */\nconst LCHOWN = fs.lchown ? 'lchown' : 'chown'\n/* istanbul ignore next */\nconst LCHOWNSYNC = fs.lchownSync ? 'lchownSync' : 'chownSync'\n\n/* istanbul ignore next */\nconst needEISDIRHandled = fs.lchown &&\n !process.version.match(/v1[1-9]+\\./) &&\n !process.version.match(/v10\\.[6-9]/)\n\nconst lchownSync = (path, uid, gid) => {\n try {\n return fs[LCHOWNSYNC](path, uid, gid)\n } catch (er) {\n if (er.code !== 'ENOENT')\n throw er\n }\n}\n\n/* istanbul ignore next */\nconst chownSync = (path, uid, gid) => {\n try {\n return fs.chownSync(path, uid, gid)\n } catch (er) {\n if (er.code !== 'ENOENT')\n throw er\n }\n}\n\n/* istanbul ignore next */\nconst handleEISDIR =\n needEISDIRHandled ? (path, uid, gid, cb) => er => {\n // Node prior to v10 had a very questionable implementation of\n // fs.lchown, which would always try to call fs.open on a directory\n // Fall back to fs.chown in those cases.\n if (!er || er.code !== 'EISDIR')\n cb(er)\n else\n fs.chown(path, uid, gid, cb)\n }\n : (_, __, ___, cb) => cb\n\n/* istanbul ignore next */\nconst handleEISDirSync =\n needEISDIRHandled ? (path, uid, gid) => {\n try {\n return lchownSync(path, uid, gid)\n } catch (er) {\n if (er.code !== 'EISDIR')\n throw er\n chownSync(path, uid, gid)\n }\n }\n : (path, uid, gid) => lchownSync(path, uid, gid)\n\n// fs.readdir could only accept an options object as of node v6\nconst nodeVersion = process.version\nlet readdir = (path, options, cb) => fs.readdir(path, options, cb)\nlet readdirSync = (path, options) => fs.readdirSync(path, options)\n/* istanbul ignore next */\nif (/^v4\\./.test(nodeVersion))\n readdir = (path, options, cb) => fs.readdir(path, cb)\n\nconst chown = (cpath, uid, gid, cb) => {\n fs[LCHOWN](cpath, uid, gid, handleEISDIR(cpath, uid, gid, er => {\n // Skip ENOENT error\n cb(er && er.code !== 'ENOENT' ? er : null)\n }))\n}\n\nconst chownrKid = (p, child, uid, gid, cb) => {\n if (typeof child === 'string')\n return fs.lstat(path.resolve(p, child), (er, stats) => {\n // Skip ENOENT error\n if (er)\n return cb(er.code !== 'ENOENT' ? er : null)\n stats.name = child\n chownrKid(p, stats, uid, gid, cb)\n })\n\n if (child.isDirectory()) {\n chownr(path.resolve(p, child.name), uid, gid, er => {\n if (er)\n return cb(er)\n const cpath = path.resolve(p, child.name)\n chown(cpath, uid, gid, cb)\n })\n } else {\n const cpath = path.resolve(p, child.name)\n chown(cpath, uid, gid, cb)\n }\n}\n\n\nconst chownr = (p, uid, gid, cb) => {\n readdir(p, { withFileTypes: true }, (er, children) => {\n // any error other than ENOTDIR or ENOTSUP means it's not readable,\n // or doesn't exist. give up.\n if (er) {\n if (er.code === 'ENOENT')\n return cb()\n else if (er.code !== 'ENOTDIR' && er.code !== 'ENOTSUP')\n return cb(er)\n }\n if (er || !children.length)\n return chown(p, uid, gid, cb)\n\n let len = children.length\n let errState = null\n const then = er => {\n if (errState)\n return\n if (er)\n return cb(errState = er)\n if (-- len === 0)\n return chown(p, uid, gid, cb)\n }\n\n children.forEach(child => chownrKid(p, child, uid, gid, then))\n })\n}\n\nconst chownrKidSync = (p, child, uid, gid) => {\n if (typeof child === 'string') {\n try {\n const stats = fs.lstatSync(path.resolve(p, child))\n stats.name = child\n child = stats\n } catch (er) {\n if (er.code === 'ENOENT')\n return\n else\n throw er\n }\n }\n\n if (child.isDirectory())\n chownrSync(path.resolve(p, child.name), uid, gid)\n\n handleEISDirSync(path.resolve(p, child.name), uid, gid)\n}\n\nconst chownrSync = (p, uid, gid) => {\n let children\n try {\n children = readdirSync(p, { withFileTypes: true })\n } catch (er) {\n if (er.code === 'ENOENT')\n return\n else if (er.code === 'ENOTDIR' || er.code === 'ENOTSUP')\n return handleEISDirSync(p, uid, gid)\n else\n throw er\n }\n\n if (children && children.length)\n children.forEach(child => chownrKidSync(p, child, uid, gid))\n\n return handleEISDirSync(p, uid, gid)\n}\n\nmodule.exports = chownr\nchownr.sync = chownrSync\n", "'use strict'\n// wrapper around mkdirp for tar's needs.\n\n// TODO: This should probably be a class, not functionally\n// passing around state in a gazillion args.\n\nconst mkdirp = require('mkdirp')\nconst fs = require('fs')\nconst path = require('path')\nconst chownr = require('chownr')\n\nclass SymlinkError extends Error {\n constructor (symlink, path) {\n super('Cannot extract through symbolic link')\n this.path = path\n this.symlink = symlink\n }\n\n get name () {\n return 'SylinkError'\n }\n}\n\nclass CwdError extends Error {\n constructor (path, code) {\n super(code + ': Cannot cd into \\'' + path + '\\'')\n this.path = path\n this.code = code\n }\n\n get name () {\n return 'CwdError'\n }\n}\n\nmodule.exports = (dir, opt, cb) => {\n // if there's any overlap between mask and mode,\n // then we'll need an explicit chmod\n const umask = opt.umask\n const mode = opt.mode | 0o0700\n const needChmod = (mode & umask) !== 0\n\n const uid = opt.uid\n const gid = opt.gid\n const doChown = typeof uid === 'number' &&\n typeof gid === 'number' &&\n (uid !== opt.processUid || gid !== opt.processGid)\n\n const preserve = opt.preserve\n const unlink = opt.unlink\n const cache = opt.cache\n const cwd = opt.cwd\n\n const done = (er, created) => {\n if (er)\n cb(er)\n else {\n cache.set(dir, true)\n if (created && doChown)\n chownr(created, uid, gid, er => done(er))\n else if (needChmod)\n fs.chmod(dir, mode, cb)\n else\n cb()\n }\n }\n\n if (cache && cache.get(dir) === true)\n return done()\n\n if (dir === cwd) {\n return fs.stat(dir, (er, st) => {\n if (er || !st.isDirectory())\n er = new CwdError(dir, er && er.code || 'ENOTDIR')\n done(er)\n })\n }\n\n if (preserve)\n return mkdirp(dir, {mode}).then(made => done(null, made), done)\n\n const sub = path.relative(cwd, dir)\n const parts = sub.split(/\\/|\\\\/)\n mkdir_(cwd, parts, mode, cache, unlink, cwd, null, done)\n}\n\nconst mkdir_ = (base, parts, mode, cache, unlink, cwd, created, cb) => {\n if (!parts.length)\n return cb(null, created)\n const p = parts.shift()\n const part = base + '/' + p\n if (cache.get(part))\n return mkdir_(part, parts, mode, cache, unlink, cwd, created, cb)\n fs.mkdir(part, mode, onmkdir(part, parts, mode, cache, unlink, cwd, created, cb))\n}\n\nconst onmkdir = (part, parts, mode, cache, unlink, cwd, created, cb) => er => {\n if (er) {\n if (er.path && path.dirname(er.path) === cwd &&\n (er.code === 'ENOTDIR' || er.code === 'ENOENT'))\n return cb(new CwdError(cwd, er.code))\n\n fs.lstat(part, (statEr, st) => {\n if (statEr)\n cb(statEr)\n else if (st.isDirectory())\n mkdir_(part, parts, mode, cache, unlink, cwd, created, cb)\n else if (unlink) {\n fs.unlink(part, er => {\n if (er)\n return cb(er)\n fs.mkdir(part, mode, onmkdir(part, parts, mode, cache, unlink, cwd, created, cb))\n })\n } else if (st.isSymbolicLink())\n return cb(new SymlinkError(part, part + '/' + parts.join('/')))\n else\n cb(er)\n })\n } else {\n created = created || part\n mkdir_(part, parts, mode, cache, unlink, cwd, created, cb)\n }\n}\n\nmodule.exports.sync = (dir, opt) => {\n // if there's any overlap between mask and mode,\n // then we'll need an explicit chmod\n const umask = opt.umask\n const mode = opt.mode | 0o0700\n const needChmod = (mode & umask) !== 0\n\n const uid = opt.uid\n const gid = opt.gid\n const doChown = typeof uid === 'number' &&\n typeof gid === 'number' &&\n (uid !== opt.processUid || gid !== opt.processGid)\n\n const preserve = opt.preserve\n const unlink = opt.unlink\n const cache = opt.cache\n const cwd = opt.cwd\n\n const done = (created) => {\n cache.set(dir, true)\n if (created && doChown)\n chownr.sync(created, uid, gid)\n if (needChmod)\n fs.chmodSync(dir, mode)\n }\n\n if (cache && cache.get(dir) === true)\n return done()\n\n if (dir === cwd) {\n let ok = false\n let code = 'ENOTDIR'\n try {\n ok = fs.statSync(dir).isDirectory()\n } catch (er) {\n code = er.code\n } finally {\n if (!ok)\n throw new CwdError(dir, code)\n }\n done()\n return\n }\n\n if (preserve)\n return done(mkdirp.sync(dir, mode))\n\n const sub = path.relative(cwd, dir)\n const parts = sub.split(/\\/|\\\\/)\n let created = null\n for (let p = parts.shift(), part = cwd;\n p && (part += '/' + p);\n p = parts.shift()) {\n if (cache.get(part))\n continue\n\n try {\n fs.mkdirSync(part, mode)\n created = created || part\n cache.set(part, true)\n } catch (er) {\n if (er.path && path.dirname(er.path) === cwd &&\n (er.code === 'ENOTDIR' || er.code === 'ENOENT'))\n return new CwdError(cwd, er.code)\n\n const st = fs.lstatSync(part)\n if (st.isDirectory()) {\n cache.set(part, true)\n continue\n } else if (unlink) {\n fs.unlinkSync(part)\n fs.mkdirSync(part, mode)\n created = created || part\n cache.set(part, true)\n continue\n } else if (st.isSymbolicLink())\n return new SymlinkError(part, part + '/' + parts.join('/'))\n }\n }\n\n return done(created)\n}\n", "// A path exclusive reservation system\n// reserve([list, of, paths], fn)\n// When the fn is first in line for all its paths, it\n// is called with a cb that clears the reservation.\n//\n// Used by async unpack to avoid clobbering paths in use,\n// while still allowing maximal safe parallelization.\n\nconst assert = require('assert')\n\nmodule.exports = () => {\n // path => [function or Set]\n // A Set object means a directory reservation\n // A fn is a direct reservation on that path\n const queues = new Map()\n\n // fn => {paths:[path,...], dirs:[path, ...]}\n const reservations = new Map()\n\n // return a set of parent dirs for a given path\n const { join } = require('path')\n const getDirs = path =>\n join(path).split(/[\\\\/]/).slice(0, -1).reduce((set, path) =>\n set.length ? set.concat(join(set[set.length - 1], path)) : [path], [])\n\n // functions currently running\n const running = new Set()\n\n // return the queues for each path the function cares about\n // fn => {paths, dirs}\n const getQueues = fn => {\n const res = reservations.get(fn)\n /* istanbul ignore if - unpossible */\n if (!res)\n throw new Error('function does not have any path reservations')\n return {\n paths: res.paths.map(path => queues.get(path)),\n dirs: [...res.dirs].map(path => queues.get(path)),\n }\n }\n\n // check if fn is first in line for all its paths, and is\n // included in the first set for all its dir queues\n const check = fn => {\n const {paths, dirs} = getQueues(fn)\n return paths.every(q => q[0] === fn) &&\n dirs.every(q => q[0] instanceof Set && q[0].has(fn))\n }\n\n // run the function if it's first in line and not already running\n const run = fn => {\n if (running.has(fn) || !check(fn))\n return false\n running.add(fn)\n fn(() => clear(fn))\n return true\n }\n\n const clear = fn => {\n if (!running.has(fn))\n return false\n\n const { paths, dirs } = reservations.get(fn)\n const next = new Set()\n\n paths.forEach(path => {\n const q = queues.get(path)\n assert.equal(q[0], fn)\n if (q.length === 1)\n queues.delete(path)\n else {\n q.shift()\n if (typeof q[0] === 'function')\n next.add(q[0])\n else\n q[0].forEach(fn => next.add(fn))\n }\n })\n\n dirs.forEach(dir => {\n const q = queues.get(dir)\n assert(q[0] instanceof Set)\n if (q[0].size === 1 && q.length === 1)\n queues.delete(dir)\n else if (q[0].size === 1) {\n q.shift()\n\n // must be a function or else the Set would've been reused\n next.add(q[0])\n } else\n q[0].delete(fn)\n })\n running.delete(fn)\n\n next.forEach(fn => run(fn))\n return true\n }\n\n const reserve = (paths, fn) => {\n const dirs = new Set(\n paths.map(path => getDirs(path)).reduce((a, b) => a.concat(b))\n )\n reservations.set(fn, {dirs, paths})\n paths.forEach(path => {\n const q = queues.get(path)\n if (!q)\n queues.set(path, [fn])\n else\n q.push(fn)\n })\n dirs.forEach(dir => {\n const q = queues.get(dir)\n if (!q)\n queues.set(dir, [new Set([fn])])\n else if (q[q.length - 1] instanceof Set)\n q[q.length - 1].add(fn)\n else\n q.push(new Set([fn]))\n })\n\n return run(fn)\n }\n\n return { check, reserve }\n}\n", "// Get the appropriate flag to use for creating files\n// We use fmap on Windows platforms for files less than\n// 512kb. This is a fairly low limit, but avoids making\n// things slower in some cases. Since most of what this\n// library is used for is extracting tarballs of many\n// relatively small files in npm packages and the like,\n// it can be a big boost on Windows platforms.\n// Only supported in Node v12.9.0 and above.\nconst platform = process.env.__FAKE_PLATFORM__ || process.platform\nconst isWindows = platform === 'win32'\nconst fs = global.__FAKE_TESTING_FS__ || require('fs')\n\n/* istanbul ignore next */\nconst { O_CREAT, O_TRUNC, O_WRONLY, UV_FS_O_FILEMAP = 0 } = fs.constants\n\nconst fMapEnabled = isWindows && !!UV_FS_O_FILEMAP\nconst fMapLimit = 512 * 1024\nconst fMapFlag = UV_FS_O_FILEMAP | O_TRUNC | O_CREAT | O_WRONLY\nmodule.exports = !fMapEnabled ? () => 'w'\n : size => size < fMapLimit ? fMapFlag : 'w'\n", "'use strict'\n\n// the PEND/UNPEND stuff tracks whether we're ready to emit end/close yet.\n// but the path reservations are required to avoid race conditions where\n// parallelized unpack ops may mess with one another, due to dependencies\n// (like a Link depending on its target) or destructive operations (like\n// clobbering an fs object to create one of a different type.)\n\nconst assert = require('assert')\nconst Parser = require('./parse.js')\nconst fs = require('fs')\nconst fsm = require('fs-minipass')\nconst path = require('path')\nconst mkdir = require('./mkdir.js')\nconst wc = require('./winchars.js')\nconst pathReservations = require('./path-reservations.js')\n\nconst ONENTRY = Symbol('onEntry')\nconst CHECKFS = Symbol('checkFs')\nconst CHECKFS2 = Symbol('checkFs2')\nconst ISREUSABLE = Symbol('isReusable')\nconst MAKEFS = Symbol('makeFs')\nconst FILE = Symbol('file')\nconst DIRECTORY = Symbol('directory')\nconst LINK = Symbol('link')\nconst SYMLINK = Symbol('symlink')\nconst HARDLINK = Symbol('hardlink')\nconst UNSUPPORTED = Symbol('unsupported')\nconst CHECKPATH = Symbol('checkPath')\nconst MKDIR = Symbol('mkdir')\nconst ONERROR = Symbol('onError')\nconst PENDING = Symbol('pending')\nconst PEND = Symbol('pend')\nconst UNPEND = Symbol('unpend')\nconst ENDED = Symbol('ended')\nconst MAYBECLOSE = Symbol('maybeClose')\nconst SKIP = Symbol('skip')\nconst DOCHOWN = Symbol('doChown')\nconst UID = Symbol('uid')\nconst GID = Symbol('gid')\nconst crypto = require('crypto')\nconst getFlag = require('./get-write-flag.js')\n\n/* istanbul ignore next */\nconst neverCalled = () => {\n throw new Error('sync function called cb somehow?!?')\n}\n\n// Unlinks on Windows are not atomic.\n//\n// This means that if you have a file entry, followed by another\n// file entry with an identical name, and you cannot re-use the file\n// (because it's a hardlink, or because unlink:true is set, or it's\n// Windows, which does not have useful nlink values), then the unlink\n// will be committed to the disk AFTER the new file has been written\n// over the old one, deleting the new file.\n//\n// To work around this, on Windows systems, we rename the file and then\n// delete the renamed file. It's a sloppy kludge, but frankly, I do not\n// know of a better way to do this, given windows' non-atomic unlink\n// semantics.\n//\n// See: https://github.com/npm/node-tar/issues/183\n/* istanbul ignore next */\nconst unlinkFile = (path, cb) => {\n if (process.platform !== 'win32')\n return fs.unlink(path, cb)\n\n const name = path + '.DELETE.' + crypto.randomBytes(16).toString('hex')\n fs.rename(path, name, er => {\n if (er)\n return cb(er)\n fs.unlink(name, cb)\n })\n}\n\n/* istanbul ignore next */\nconst unlinkFileSync = path => {\n if (process.platform !== 'win32')\n return fs.unlinkSync(path)\n\n const name = path + '.DELETE.' + crypto.randomBytes(16).toString('hex')\n fs.renameSync(path, name)\n fs.unlinkSync(name)\n}\n\n// this.gid, entry.gid, this.processUid\nconst uint32 = (a, b, c) =>\n a === a >>> 0 ? a\n : b === b >>> 0 ? b\n : c\n\nclass Unpack extends Parser {\n constructor (opt) {\n if (!opt)\n opt = {}\n\n opt.ondone = _ => {\n this[ENDED] = true\n this[MAYBECLOSE]()\n }\n\n super(opt)\n\n this.reservations = pathReservations()\n\n this.transform = typeof opt.transform === 'function' ? opt.transform : null\n\n this.writable = true\n this.readable = false\n\n this[PENDING] = 0\n this[ENDED] = false\n\n this.dirCache = opt.dirCache || new Map()\n\n if (typeof opt.uid === 'number' || typeof opt.gid === 'number') {\n // need both or neither\n if (typeof opt.uid !== 'number' || typeof opt.gid !== 'number')\n throw new TypeError('cannot set owner without number uid and gid')\n if (opt.preserveOwner) {\n throw new TypeError(\n 'cannot preserve owner in archive and also set owner explicitly')\n }\n this.uid = opt.uid\n this.gid = opt.gid\n this.setOwner = true\n } else {\n this.uid = null\n this.gid = null\n this.setOwner = false\n }\n\n // default true for root\n if (opt.preserveOwner === undefined && typeof opt.uid !== 'number')\n this.preserveOwner = process.getuid && process.getuid() === 0\n else\n this.preserveOwner = !!opt.preserveOwner\n\n this.processUid = (this.preserveOwner || this.setOwner) && process.getuid ?\n process.getuid() : null\n this.processGid = (this.preserveOwner || this.setOwner) && process.getgid ?\n process.getgid() : null\n\n // mostly just for testing, but useful in some cases.\n // Forcibly trigger a chown on every entry, no matter what\n this.forceChown = opt.forceChown === true\n\n // turn > this[ONENTRY](entry))\n }\n\n // a bad or damaged archive is a warning for Parser, but an error\n // when extracting. Mark those errors as unrecoverable, because\n // the Unpack contract cannot be met.\n warn (code, msg, data = {}) {\n if (code === 'TAR_BAD_ARCHIVE' || code === 'TAR_ABORT')\n data.recoverable = false\n return super.warn(code, msg, data)\n }\n\n [MAYBECLOSE] () {\n if (this[ENDED] && this[PENDING] === 0) {\n this.emit('prefinish')\n this.emit('finish')\n this.emit('end')\n this.emit('close')\n }\n }\n\n [CHECKPATH] (entry) {\n if (this.strip) {\n const parts = entry.path.split(/\\/|\\\\/)\n if (parts.length < this.strip)\n return false\n entry.path = parts.slice(this.strip).join('/')\n\n if (entry.type === 'Link') {\n const linkparts = entry.linkpath.split(/\\/|\\\\/)\n if (linkparts.length >= this.strip)\n entry.linkpath = linkparts.slice(this.strip).join('/')\n }\n }\n\n if (!this.preservePaths) {\n const p = entry.path\n if (p.match(/(^|\\/|\\\\)\\.\\.(\\\\|\\/|$)/)) {\n this.warn('TAR_ENTRY_ERROR', `path contains '..'`, {\n entry,\n path: p,\n })\n return false\n }\n\n // absolutes on posix are also absolutes on win32\n // so we only need to test this one to get both\n if (path.win32.isAbsolute(p)) {\n const parsed = path.win32.parse(p)\n entry.path = p.substr(parsed.root.length)\n const r = parsed.root\n this.warn('TAR_ENTRY_INFO', `stripping ${r} from absolute path`, {\n entry,\n path: p,\n })\n }\n }\n\n // only encode : chars that aren't drive letter indicators\n if (this.win32) {\n const parsed = path.win32.parse(entry.path)\n entry.path = parsed.root === '' ? wc.encode(entry.path)\n : parsed.root + wc.encode(entry.path.substr(parsed.root.length))\n }\n\n if (path.isAbsolute(entry.path))\n entry.absolute = entry.path\n else\n entry.absolute = path.resolve(this.cwd, entry.path)\n\n return true\n }\n\n [ONENTRY] (entry) {\n if (!this[CHECKPATH](entry))\n return entry.resume()\n\n assert.equal(typeof entry.absolute, 'string')\n\n switch (entry.type) {\n case 'Directory':\n case 'GNUDumpDir':\n if (entry.mode)\n entry.mode = entry.mode | 0o700\n\n case 'File':\n case 'OldFile':\n case 'ContiguousFile':\n case 'Link':\n case 'SymbolicLink':\n return this[CHECKFS](entry)\n\n case 'CharacterDevice':\n case 'BlockDevice':\n case 'FIFO':\n default:\n return this[UNSUPPORTED](entry)\n }\n }\n\n [ONERROR] (er, entry) {\n // Cwd has to exist, or else nothing works. That's serious.\n // Other errors are warnings, which raise the error in strict\n // mode, but otherwise continue on.\n if (er.name === 'CwdError')\n this.emit('error', er)\n else {\n this.warn('TAR_ENTRY_ERROR', er, {entry})\n this[UNPEND]()\n entry.resume()\n }\n }\n\n [MKDIR] (dir, mode, cb) {\n mkdir(dir, {\n uid: this.uid,\n gid: this.gid,\n processUid: this.processUid,\n processGid: this.processGid,\n umask: this.processUmask,\n preserve: this.preservePaths,\n unlink: this.unlink,\n cache: this.dirCache,\n cwd: this.cwd,\n mode: mode,\n noChmod: this.noChmod,\n }, cb)\n }\n\n [DOCHOWN] (entry) {\n // in preserve owner mode, chown if the entry doesn't match process\n // in set owner mode, chown if setting doesn't match process\n return this.forceChown ||\n this.preserveOwner &&\n (typeof entry.uid === 'number' && entry.uid !== this.processUid ||\n typeof entry.gid === 'number' && entry.gid !== this.processGid)\n ||\n (typeof this.uid === 'number' && this.uid !== this.processUid ||\n typeof this.gid === 'number' && this.gid !== this.processGid)\n }\n\n [UID] (entry) {\n return uint32(this.uid, entry.uid, this.processUid)\n }\n\n [GID] (entry) {\n return uint32(this.gid, entry.gid, this.processGid)\n }\n\n [FILE] (entry, fullyDone) {\n const mode = entry.mode & 0o7777 || this.fmode\n const stream = new fsm.WriteStream(entry.absolute, {\n flags: getFlag(entry.size),\n mode: mode,\n autoClose: false,\n })\n stream.on('error', er => this[ONERROR](er, entry))\n\n let actions = 1\n const done = er => {\n if (er)\n return this[ONERROR](er, entry)\n\n if (--actions === 0) {\n fs.close(stream.fd, er => {\n fullyDone()\n er ? this[ONERROR](er, entry) : this[UNPEND]()\n })\n }\n }\n\n stream.on('finish', _ => {\n // if futimes fails, try utimes\n // if utimes fails, fail with the original error\n // same for fchown/chown\n const abs = entry.absolute\n const fd = stream.fd\n\n if (entry.mtime && !this.noMtime) {\n actions++\n const atime = entry.atime || new Date()\n const mtime = entry.mtime\n fs.futimes(fd, atime, mtime, er =>\n er ? fs.utimes(abs, atime, mtime, er2 => done(er2 && er))\n : done())\n }\n\n if (this[DOCHOWN](entry)) {\n actions++\n const uid = this[UID](entry)\n const gid = this[GID](entry)\n fs.fchown(fd, uid, gid, er =>\n er ? fs.chown(abs, uid, gid, er2 => done(er2 && er))\n : done())\n }\n\n done()\n })\n\n const tx = this.transform ? this.transform(entry) || entry : entry\n if (tx !== entry) {\n tx.on('error', er => this[ONERROR](er, entry))\n entry.pipe(tx)\n }\n tx.pipe(stream)\n }\n\n [DIRECTORY] (entry, fullyDone) {\n const mode = entry.mode & 0o7777 || this.dmode\n this[MKDIR](entry.absolute, mode, er => {\n if (er) {\n fullyDone()\n return this[ONERROR](er, entry)\n }\n\n let actions = 1\n const done = _ => {\n if (--actions === 0) {\n fullyDone()\n this[UNPEND]()\n entry.resume()\n }\n }\n\n if (entry.mtime && !this.noMtime) {\n actions++\n fs.utimes(entry.absolute, entry.atime || new Date(), entry.mtime, done)\n }\n\n if (this[DOCHOWN](entry)) {\n actions++\n fs.chown(entry.absolute, this[UID](entry), this[GID](entry), done)\n }\n\n done()\n })\n }\n\n [UNSUPPORTED] (entry) {\n entry.unsupported = true\n this.warn('TAR_ENTRY_UNSUPPORTED',\n `unsupported entry type: ${entry.type}`, {entry})\n entry.resume()\n }\n\n [SYMLINK] (entry, done) {\n this[LINK](entry, entry.linkpath, 'symlink', done)\n }\n\n [HARDLINK] (entry, done) {\n this[LINK](entry, path.resolve(this.cwd, entry.linkpath), 'link', done)\n }\n\n [PEND] () {\n this[PENDING]++\n }\n\n [UNPEND] () {\n this[PENDING]--\n this[MAYBECLOSE]()\n }\n\n [SKIP] (entry) {\n this[UNPEND]()\n entry.resume()\n }\n\n // Check if we can reuse an existing filesystem entry safely and\n // overwrite it, rather than unlinking and recreating\n // Windows doesn't report a useful nlink, so we just never reuse entries\n [ISREUSABLE] (entry, st) {\n return entry.type === 'File' &&\n !this.unlink &&\n st.isFile() &&\n st.nlink <= 1 &&\n process.platform !== 'win32'\n }\n\n // check if a thing is there, and if so, try to clobber it\n [CHECKFS] (entry) {\n this[PEND]()\n const paths = [entry.path]\n if (entry.linkpath)\n paths.push(entry.linkpath)\n this.reservations.reserve(paths, done => this[CHECKFS2](entry, done))\n }\n\n [CHECKFS2] (entry, done) {\n this[MKDIR](path.dirname(entry.absolute), this.dmode, er => {\n if (er) {\n done()\n return this[ONERROR](er, entry)\n }\n fs.lstat(entry.absolute, (er, st) => {\n if (st && (this.keep || this.newer && st.mtime > entry.mtime)) {\n this[SKIP](entry)\n done()\n } else if (er || this[ISREUSABLE](entry, st))\n this[MAKEFS](null, entry, done)\n\n else if (st.isDirectory()) {\n if (entry.type === 'Directory') {\n if (!this.noChmod && (!entry.mode || (st.mode & 0o7777) === entry.mode))\n this[MAKEFS](null, entry, done)\n else {\n fs.chmod(entry.absolute, entry.mode,\n er => this[MAKEFS](er, entry, done))\n }\n } else\n fs.rmdir(entry.absolute, er => this[MAKEFS](er, entry, done))\n } else\n unlinkFile(entry.absolute, er => this[MAKEFS](er, entry, done))\n })\n })\n }\n\n [MAKEFS] (er, entry, done) {\n if (er)\n return this[ONERROR](er, entry)\n\n switch (entry.type) {\n case 'File':\n case 'OldFile':\n case 'ContiguousFile':\n return this[FILE](entry, done)\n\n case 'Link':\n return this[HARDLINK](entry, done)\n\n case 'SymbolicLink':\n return this[SYMLINK](entry, done)\n\n case 'Directory':\n case 'GNUDumpDir':\n return this[DIRECTORY](entry, done)\n }\n }\n\n [LINK] (entry, linkpath, link, done) {\n // XXX: get the type ('file' or 'dir') for windows\n fs[link](linkpath, entry.absolute, er => {\n if (er)\n return this[ONERROR](er, entry)\n done()\n this[UNPEND]()\n entry.resume()\n })\n }\n}\n\nclass UnpackSync extends Unpack {\n [CHECKFS] (entry) {\n const er = this[MKDIR](path.dirname(entry.absolute), this.dmode, neverCalled)\n if (er)\n return this[ONERROR](er, entry)\n try {\n const st = fs.lstatSync(entry.absolute)\n if (this.keep || this.newer && st.mtime > entry.mtime)\n return this[SKIP](entry)\n else if (this[ISREUSABLE](entry, st))\n return this[MAKEFS](null, entry, neverCalled)\n else {\n try {\n if (st.isDirectory()) {\n if (entry.type === 'Directory') {\n if (!this.noChmod && entry.mode && (st.mode & 0o7777) !== entry.mode)\n fs.chmodSync(entry.absolute, entry.mode)\n } else\n fs.rmdirSync(entry.absolute)\n } else\n unlinkFileSync(entry.absolute)\n return this[MAKEFS](null, entry, neverCalled)\n } catch (er) {\n return this[ONERROR](er, entry)\n }\n }\n } catch (er) {\n return this[MAKEFS](null, entry, neverCalled)\n }\n }\n\n [FILE] (entry, _) {\n const mode = entry.mode & 0o7777 || this.fmode\n\n const oner = er => {\n let closeError\n try {\n fs.closeSync(fd)\n } catch (e) {\n closeError = e\n }\n if (er || closeError)\n this[ONERROR](er || closeError, entry)\n }\n\n let fd\n try {\n fd = fs.openSync(entry.absolute, getFlag(entry.size), mode)\n } catch (er) {\n return oner(er)\n }\n const tx = this.transform ? this.transform(entry) || entry : entry\n if (tx !== entry) {\n tx.on('error', er => this[ONERROR](er, entry))\n entry.pipe(tx)\n }\n\n tx.on('data', chunk => {\n try {\n fs.writeSync(fd, chunk, 0, chunk.length)\n } catch (er) {\n oner(er)\n }\n })\n\n tx.on('end', _ => {\n let er = null\n // try both, falling futimes back to utimes\n // if either fails, handle the first error\n if (entry.mtime && !this.noMtime) {\n const atime = entry.atime || new Date()\n const mtime = entry.mtime\n try {\n fs.futimesSync(fd, atime, mtime)\n } catch (futimeser) {\n try {\n fs.utimesSync(entry.absolute, atime, mtime)\n } catch (utimeser) {\n er = futimeser\n }\n }\n }\n\n if (this[DOCHOWN](entry)) {\n const uid = this[UID](entry)\n const gid = this[GID](entry)\n\n try {\n fs.fchownSync(fd, uid, gid)\n } catch (fchowner) {\n try {\n fs.chownSync(entry.absolute, uid, gid)\n } catch (chowner) {\n er = er || fchowner\n }\n }\n }\n\n oner(er)\n })\n }\n\n [DIRECTORY] (entry, _) {\n const mode = entry.mode & 0o7777 || this.dmode\n const er = this[MKDIR](entry.absolute, mode)\n if (er)\n return this[ONERROR](er, entry)\n if (entry.mtime && !this.noMtime) {\n try {\n fs.utimesSync(entry.absolute, entry.atime || new Date(), entry.mtime)\n } catch (er) {}\n }\n if (this[DOCHOWN](entry)) {\n try {\n fs.chownSync(entry.absolute, this[UID](entry), this[GID](entry))\n } catch (er) {}\n }\n entry.resume()\n }\n\n [MKDIR] (dir, mode) {\n try {\n return mkdir.sync(dir, {\n uid: this.uid,\n gid: this.gid,\n processUid: this.processUid,\n processGid: this.processGid,\n umask: this.processUmask,\n preserve: this.preservePaths,\n unlink: this.unlink,\n cache: this.dirCache,\n cwd: this.cwd,\n mode: mode,\n })\n } catch (er) {\n return er\n }\n }\n\n [LINK] (entry, linkpath, link, _) {\n try {\n fs[link + 'Sync'](linkpath, entry.absolute)\n entry.resume()\n } catch (er) {\n return this[ONERROR](er, entry)\n }\n }\n}\n\nUnpack.Sync = UnpackSync\nmodule.exports = Unpack\n", "'use strict'\n\n// tar -x\nconst hlo = require('./high-level-opt.js')\nconst Unpack = require('./unpack.js')\nconst fs = require('fs')\nconst fsm = require('fs-minipass')\nconst path = require('path')\n\nmodule.exports = (opt_, files, cb) => {\n if (typeof opt_ === 'function')\n cb = opt_, files = null, opt_ = {}\n else if (Array.isArray(opt_))\n files = opt_, opt_ = {}\n\n if (typeof files === 'function')\n cb = files, files = null\n\n if (!files)\n files = []\n else\n files = Array.from(files)\n\n const opt = hlo(opt_)\n\n if (opt.sync && typeof cb === 'function')\n throw new TypeError('callback not supported for sync tar functions')\n\n if (!opt.file && typeof cb === 'function')\n throw new TypeError('callback only supported with file option')\n\n if (files.length)\n filesFilter(opt, files)\n\n return opt.file && opt.sync ? extractFileSync(opt)\n : opt.file ? extractFile(opt, cb)\n : opt.sync ? extractSync(opt)\n : extract(opt)\n}\n\n// construct a filter that limits the file entries listed\n// include child entries if a dir is included\nconst filesFilter = (opt, files) => {\n const map = new Map(files.map(f => [f.replace(/\\/+$/, ''), true]))\n const filter = opt.filter\n\n const mapHas = (file, r) => {\n const root = r || path.parse(file).root || '.'\n const ret = file === root ? false\n : map.has(file) ? map.get(file)\n : mapHas(path.dirname(file), root)\n\n map.set(file, ret)\n return ret\n }\n\n opt.filter = filter\n ? (file, entry) => filter(file, entry) && mapHas(file.replace(/\\/+$/, ''))\n : file => mapHas(file.replace(/\\/+$/, ''))\n}\n\nconst extractFileSync = opt => {\n const u = new Unpack.Sync(opt)\n\n const file = opt.file\n const stat = fs.statSync(file)\n // This trades a zero-byte read() syscall for a stat\n // However, it will usually result in less memory allocation\n const readSize = opt.maxReadSize || 16 * 1024 * 1024\n const stream = new fsm.ReadStreamSync(file, {\n readSize: readSize,\n size: stat.size,\n })\n stream.pipe(u)\n}\n\nconst extractFile = (opt, cb) => {\n const u = new Unpack(opt)\n const readSize = opt.maxReadSize || 16 * 1024 * 1024\n\n const file = opt.file\n const p = new Promise((resolve, reject) => {\n u.on('error', reject)\n u.on('close', resolve)\n\n // This trades a zero-byte read() syscall for a stat\n // However, it will usually result in less memory allocation\n fs.stat(file, (er, stat) => {\n if (er)\n reject(er)\n else {\n const stream = new fsm.ReadStream(file, {\n readSize: readSize,\n size: stat.size,\n })\n stream.on('error', reject)\n stream.pipe(u)\n }\n })\n })\n return cb ? p.then(cb, cb) : p\n}\n\nconst extractSync = opt => new Unpack.Sync(opt)\n\nconst extract = opt => new Unpack(opt)\n", "'use strict'\n\n// high-level commands\nexports.c = exports.create = require('./lib/create.js')\nexports.r = exports.replace = require('./lib/replace.js')\nexports.t = exports.list = require('./lib/list.js')\nexports.u = exports.update = require('./lib/update.js')\nexports.x = exports.extract = require('./lib/extract.js')\n\n// classes\nexports.Pack = require('./lib/pack.js')\nexports.Unpack = require('./lib/unpack.js')\nexports.Parse = require('./lib/parse.js')\nexports.ReadEntry = require('./lib/read-entry.js')\nexports.WriteEntry = require('./lib/write-entry.js')\nexports.Header = require('./lib/header.js')\nexports.Pax = require('./lib/pax.js')\nexports.types = require('./lib/types.js')\n", "// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar pathModule = require('path');\nvar isWindows = process.platform === 'win32';\nvar fs = require('fs');\n\n// JavaScript implementation of realpath, ported from node pre-v6\n\nvar DEBUG = process.env.NODE_DEBUG && /fs/.test(process.env.NODE_DEBUG);\n\nfunction rethrow() {\n // Only enable in debug mode. A backtrace uses ~1000 bytes of heap space and\n // is fairly slow to generate.\n var callback;\n if (DEBUG) {\n var backtrace = new Error;\n callback = debugCallback;\n } else\n callback = missingCallback;\n\n return callback;\n\n function debugCallback(err) {\n if (err) {\n backtrace.message = err.message;\n err = backtrace;\n missingCallback(err);\n }\n }\n\n function missingCallback(err) {\n if (err) {\n if (process.throwDeprecation)\n throw err; // Forgot a callback but don't know where? Use NODE_DEBUG=fs\n else if (!process.noDeprecation) {\n var msg = 'fs: missing callback ' + (err.stack || err.message);\n if (process.traceDeprecation)\n console.trace(msg);\n else\n console.error(msg);\n }\n }\n }\n}\n\nfunction maybeCallback(cb) {\n return typeof cb === 'function' ? cb : rethrow();\n}\n\nvar normalize = pathModule.normalize;\n\n// Regexp that finds the next partion of a (partial) path\n// result is [base_with_slash, base], e.g. ['somedir/', 'somedir']\nif (isWindows) {\n var nextPartRe = /(.*?)(?:[\\/\\\\]+|$)/g;\n} else {\n var nextPartRe = /(.*?)(?:[\\/]+|$)/g;\n}\n\n// Regex to find the device root, including trailing slash. E.g. 'c:\\\\'.\nif (isWindows) {\n var splitRootRe = /^(?:[a-zA-Z]:|[\\\\\\/]{2}[^\\\\\\/]+[\\\\\\/][^\\\\\\/]+)?[\\\\\\/]*/;\n} else {\n var splitRootRe = /^[\\/]*/;\n}\n\nexports.realpathSync = function realpathSync(p, cache) {\n // make p is absolute\n p = pathModule.resolve(p);\n\n if (cache && Object.prototype.hasOwnProperty.call(cache, p)) {\n return cache[p];\n }\n\n var original = p,\n seenLinks = {},\n knownHard = {};\n\n // current character position in p\n var pos;\n // the partial path so far, including a trailing slash if any\n var current;\n // the partial path without a trailing slash (except when pointing at a root)\n var base;\n // the partial path scanned in the previous round, with slash\n var previous;\n\n start();\n\n function start() {\n // Skip over roots\n var m = splitRootRe.exec(p);\n pos = m[0].length;\n current = m[0];\n base = m[0];\n previous = '';\n\n // On windows, check that the root exists. On unix there is no need.\n if (isWindows && !knownHard[base]) {\n fs.lstatSync(base);\n knownHard[base] = true;\n }\n }\n\n // walk down the path, swapping out linked pathparts for their real\n // values\n // NB: p.length changes.\n while (pos < p.length) {\n // find the next part\n nextPartRe.lastIndex = pos;\n var result = nextPartRe.exec(p);\n previous = current;\n current += result[0];\n base = previous + result[1];\n pos = nextPartRe.lastIndex;\n\n // continue if not a symlink\n if (knownHard[base] || (cache && cache[base] === base)) {\n continue;\n }\n\n var resolvedLink;\n if (cache && Object.prototype.hasOwnProperty.call(cache, base)) {\n // some known symbolic link. no need to stat again.\n resolvedLink = cache[base];\n } else {\n var stat = fs.lstatSync(base);\n if (!stat.isSymbolicLink()) {\n knownHard[base] = true;\n if (cache) cache[base] = base;\n continue;\n }\n\n // read the link if it wasn't read before\n // dev/ino always return 0 on windows, so skip the check.\n var linkTarget = null;\n if (!isWindows) {\n var id = stat.dev.toString(32) + ':' + stat.ino.toString(32);\n if (seenLinks.hasOwnProperty(id)) {\n linkTarget = seenLinks[id];\n }\n }\n if (linkTarget === null) {\n fs.statSync(base);\n linkTarget = fs.readlinkSync(base);\n }\n resolvedLink = pathModule.resolve(previous, linkTarget);\n // track this, if given a cache.\n if (cache) cache[base] = resolvedLink;\n if (!isWindows) seenLinks[id] = linkTarget;\n }\n\n // resolve the link, then start over\n p = pathModule.resolve(resolvedLink, p.slice(pos));\n start();\n }\n\n if (cache) cache[original] = p;\n\n return p;\n};\n\n\nexports.realpath = function realpath(p, cache, cb) {\n if (typeof cb !== 'function') {\n cb = maybeCallback(cache);\n cache = null;\n }\n\n // make p is absolute\n p = pathModule.resolve(p);\n\n if (cache && Object.prototype.hasOwnProperty.call(cache, p)) {\n return process.nextTick(cb.bind(null, null, cache[p]));\n }\n\n var original = p,\n seenLinks = {},\n knownHard = {};\n\n // current character position in p\n var pos;\n // the partial path so far, including a trailing slash if any\n var current;\n // the partial path without a trailing slash (except when pointing at a root)\n var base;\n // the partial path scanned in the previous round, with slash\n var previous;\n\n start();\n\n function start() {\n // Skip over roots\n var m = splitRootRe.exec(p);\n pos = m[0].length;\n current = m[0];\n base = m[0];\n previous = '';\n\n // On windows, check that the root exists. On unix there is no need.\n if (isWindows && !knownHard[base]) {\n fs.lstat(base, function(err) {\n if (err) return cb(err);\n knownHard[base] = true;\n LOOP();\n });\n } else {\n process.nextTick(LOOP);\n }\n }\n\n // walk down the path, swapping out linked pathparts for their real\n // values\n function LOOP() {\n // stop if scanned past end of path\n if (pos >= p.length) {\n if (cache) cache[original] = p;\n return cb(null, p);\n }\n\n // find the next part\n nextPartRe.lastIndex = pos;\n var result = nextPartRe.exec(p);\n previous = current;\n current += result[0];\n base = previous + result[1];\n pos = nextPartRe.lastIndex;\n\n // continue if not a symlink\n if (knownHard[base] || (cache && cache[base] === base)) {\n return process.nextTick(LOOP);\n }\n\n if (cache && Object.prototype.hasOwnProperty.call(cache, base)) {\n // known symbolic link. no need to stat again.\n return gotResolvedLink(cache[base]);\n }\n\n return fs.lstat(base, gotStat);\n }\n\n function gotStat(err, stat) {\n if (err) return cb(err);\n\n // if not a symlink, skip to the next path part\n if (!stat.isSymbolicLink()) {\n knownHard[base] = true;\n if (cache) cache[base] = base;\n return process.nextTick(LOOP);\n }\n\n // stat & read the link if not read before\n // call gotTarget as soon as the link target is known\n // dev/ino always return 0 on windows, so skip the check.\n if (!isWindows) {\n var id = stat.dev.toString(32) + ':' + stat.ino.toString(32);\n if (seenLinks.hasOwnProperty(id)) {\n return gotTarget(null, seenLinks[id], base);\n }\n }\n fs.stat(base, function(err) {\n if (err) return cb(err);\n\n fs.readlink(base, function(err, target) {\n if (!isWindows) seenLinks[id] = target;\n gotTarget(err, target);\n });\n });\n }\n\n function gotTarget(err, target, base) {\n if (err) return cb(err);\n\n var resolvedLink = pathModule.resolve(previous, target);\n if (cache) cache[base] = resolvedLink;\n gotResolvedLink(resolvedLink);\n }\n\n function gotResolvedLink(resolvedLink) {\n // resolve the link, then start over\n p = pathModule.resolve(resolvedLink, p.slice(pos));\n start();\n }\n};\n", "module.exports = realpath\nrealpath.realpath = realpath\nrealpath.sync = realpathSync\nrealpath.realpathSync = realpathSync\nrealpath.monkeypatch = monkeypatch\nrealpath.unmonkeypatch = unmonkeypatch\n\nvar fs = require('fs')\nvar origRealpath = fs.realpath\nvar origRealpathSync = fs.realpathSync\n\nvar version = process.version\nvar ok = /^v[0-5]\\./.test(version)\nvar old = require('./old.js')\n\nfunction newError (er) {\n return er && er.syscall === 'realpath' && (\n er.code === 'ELOOP' ||\n er.code === 'ENOMEM' ||\n er.code === 'ENAMETOOLONG'\n )\n}\n\nfunction realpath (p, cache, cb) {\n if (ok) {\n return origRealpath(p, cache, cb)\n }\n\n if (typeof cache === 'function') {\n cb = cache\n cache = null\n }\n origRealpath(p, cache, function (er, result) {\n if (newError(er)) {\n old.realpath(p, cache, cb)\n } else {\n cb(er, result)\n }\n })\n}\n\nfunction realpathSync (p, cache) {\n if (ok) {\n return origRealpathSync(p, cache)\n }\n\n try {\n return origRealpathSync(p, cache)\n } catch (er) {\n if (newError(er)) {\n return old.realpathSync(p, cache)\n } else {\n throw er\n }\n }\n}\n\nfunction monkeypatch () {\n fs.realpath = realpath\n fs.realpathSync = realpathSync\n}\n\nfunction unmonkeypatch () {\n fs.realpath = origRealpath\n fs.realpathSync = origRealpathSync\n}\n", "module.exports = function (xs, fn) {\n var res = [];\n for (var i = 0; i < xs.length; i++) {\n var x = fn(xs[i], i);\n if (isArray(x)) res.push.apply(res, x);\n else res.push(x);\n }\n return res;\n};\n\nvar isArray = Array.isArray || function (xs) {\n return Object.prototype.toString.call(xs) === '[object Array]';\n};\n", "'use strict';\nmodule.exports = balanced;\nfunction balanced(a, b, str) {\n if (a instanceof RegExp) a = maybeMatch(a, str);\n if (b instanceof RegExp) b = maybeMatch(b, str);\n\n var r = range(a, b, str);\n\n return r && {\n start: r[0],\n end: r[1],\n pre: str.slice(0, r[0]),\n body: str.slice(r[0] + a.length, r[1]),\n post: str.slice(r[1] + b.length)\n };\n}\n\nfunction maybeMatch(reg, str) {\n var m = str.match(reg);\n return m ? m[0] : null;\n}\n\nbalanced.range = range;\nfunction range(a, b, str) {\n var begs, beg, left, right, result;\n var ai = str.indexOf(a);\n var bi = str.indexOf(b, ai + 1);\n var i = ai;\n\n if (ai >= 0 && bi > 0) {\n begs = [];\n left = str.length;\n\n while (i >= 0 && !result) {\n if (i == ai) {\n begs.push(i);\n ai = str.indexOf(a, i + 1);\n } else if (begs.length == 1) {\n result = [ begs.pop(), bi ];\n } else {\n beg = begs.pop();\n if (beg < left) {\n left = beg;\n right = bi;\n }\n\n bi = str.indexOf(b, i + 1);\n }\n\n i = ai < bi && ai >= 0 ? ai : bi;\n }\n\n if (begs.length) {\n result = [ left, right ];\n }\n }\n\n return result;\n}\n", "var concatMap = require('concat-map');\nvar balanced = require('balanced-match');\n\nmodule.exports = expandTop;\n\nvar escSlash = '\\0SLASH'+Math.random()+'\\0';\nvar escOpen = '\\0OPEN'+Math.random()+'\\0';\nvar escClose = '\\0CLOSE'+Math.random()+'\\0';\nvar escComma = '\\0COMMA'+Math.random()+'\\0';\nvar escPeriod = '\\0PERIOD'+Math.random()+'\\0';\n\nfunction numeric(str) {\n return parseInt(str, 10) == str\n ? parseInt(str, 10)\n : str.charCodeAt(0);\n}\n\nfunction escapeBraces(str) {\n return str.split('\\\\\\\\').join(escSlash)\n .split('\\\\{').join(escOpen)\n .split('\\\\}').join(escClose)\n .split('\\\\,').join(escComma)\n .split('\\\\.').join(escPeriod);\n}\n\nfunction unescapeBraces(str) {\n return str.split(escSlash).join('\\\\')\n .split(escOpen).join('{')\n .split(escClose).join('}')\n .split(escComma).join(',')\n .split(escPeriod).join('.');\n}\n\n\n// Basically just str.split(\",\"), but handling cases\n// where we have nested braced sections, which should be\n// treated as individual members, like {a,{b,c},d}\nfunction parseCommaParts(str) {\n if (!str)\n return [''];\n\n var parts = [];\n var m = balanced('{', '}', str);\n\n if (!m)\n return str.split(',');\n\n var pre = m.pre;\n var body = m.body;\n var post = m.post;\n var p = pre.split(',');\n\n p[p.length-1] += '{' + body + '}';\n var postParts = parseCommaParts(post);\n if (post.length) {\n p[p.length-1] += postParts.shift();\n p.push.apply(p, postParts);\n }\n\n parts.push.apply(parts, p);\n\n return parts;\n}\n\nfunction expandTop(str) {\n if (!str)\n return [];\n\n // I don't know why Bash 4.3 does this, but it does.\n // Anything starting with {} will have the first two bytes preserved\n // but *only* at the top level, so {},a}b will not expand to anything,\n // but a{},b}c will be expanded to [a}c,abc].\n // One could argue that this is a bug in Bash, but since the goal of\n // this module is to match Bash's rules, we escape a leading {}\n if (str.substr(0, 2) === '{}') {\n str = '\\\\{\\\\}' + str.substr(2);\n }\n\n return expand(escapeBraces(str), true).map(unescapeBraces);\n}\n\nfunction identity(e) {\n return e;\n}\n\nfunction embrace(str) {\n return '{' + str + '}';\n}\nfunction isPadded(el) {\n return /^-?0\\d/.test(el);\n}\n\nfunction lte(i, y) {\n return i <= y;\n}\nfunction gte(i, y) {\n return i >= y;\n}\n\nfunction expand(str, isTop) {\n var expansions = [];\n\n var m = balanced('{', '}', str);\n if (!m || /\\$$/.test(m.pre)) return [str];\n\n var isNumericSequence = /^-?\\d+\\.\\.-?\\d+(?:\\.\\.-?\\d+)?$/.test(m.body);\n var isAlphaSequence = /^[a-zA-Z]\\.\\.[a-zA-Z](?:\\.\\.-?\\d+)?$/.test(m.body);\n var isSequence = isNumericSequence || isAlphaSequence;\n var isOptions = m.body.indexOf(',') >= 0;\n if (!isSequence && !isOptions) {\n // {a},b}\n if (m.post.match(/,.*\\}/)) {\n str = m.pre + '{' + m.body + escClose + m.post;\n return expand(str);\n }\n return [str];\n }\n\n var n;\n if (isSequence) {\n n = m.body.split(/\\.\\./);\n } else {\n n = parseCommaParts(m.body);\n if (n.length === 1) {\n // x{{a,b}}y ==> x{a}y x{b}y\n n = expand(n[0], false).map(embrace);\n if (n.length === 1) {\n var post = m.post.length\n ? expand(m.post, false)\n : [''];\n return post.map(function(p) {\n return m.pre + n[0] + p;\n });\n }\n }\n }\n\n // at this point, n is the parts, and we know it's not a comma set\n // with a single entry.\n\n // no need to expand pre, since it is guaranteed to be free of brace-sets\n var pre = m.pre;\n var post = m.post.length\n ? expand(m.post, false)\n : [''];\n\n var N;\n\n if (isSequence) {\n var x = numeric(n[0]);\n var y = numeric(n[1]);\n var width = Math.max(n[0].length, n[1].length)\n var incr = n.length == 3\n ? Math.abs(numeric(n[2]))\n : 1;\n var test = lte;\n var reverse = y < x;\n if (reverse) {\n incr *= -1;\n test = gte;\n }\n var pad = n.some(isPadded);\n\n N = [];\n\n for (var i = x; test(i, y); i += incr) {\n var c;\n if (isAlphaSequence) {\n c = String.fromCharCode(i);\n if (c === '\\\\')\n c = '';\n } else {\n c = String(i);\n if (pad) {\n var need = width - c.length;\n if (need > 0) {\n var z = new Array(need + 1).join('0');\n if (i < 0)\n c = '-' + z + c.slice(1);\n else\n c = z + c;\n }\n }\n }\n N.push(c);\n }\n } else {\n N = concatMap(n, function(el) { return expand(el, false) });\n }\n\n for (var j = 0; j < N.length; j++) {\n for (var k = 0; k < post.length; k++) {\n var expansion = pre + N[j] + post[k];\n if (!isTop || isSequence || expansion)\n expansions.push(expansion);\n }\n }\n\n return expansions;\n}\n\n", "module.exports = minimatch\nminimatch.Minimatch = Minimatch\n\nvar path = { sep: '/' }\ntry {\n path = require('path')\n} catch (er) {}\n\nvar GLOBSTAR = minimatch.GLOBSTAR = Minimatch.GLOBSTAR = {}\nvar expand = require('brace-expansion')\n\nvar plTypes = {\n '!': { open: '(?:(?!(?:', close: '))[^/]*?)'},\n '?': { open: '(?:', close: ')?' },\n '+': { open: '(?:', close: ')+' },\n '*': { open: '(?:', close: ')*' },\n '@': { open: '(?:', close: ')' }\n}\n\n// any single thing other than /\n// don't need to escape / when using new RegExp()\nvar qmark = '[^/]'\n\n// * => any number of characters\nvar star = qmark + '*?'\n\n// ** when dots are allowed. Anything goes, except .. and .\n// not (^ or / followed by one or two dots followed by $ or /),\n// followed by anything, any number of times.\nvar twoStarDot = '(?:(?!(?:\\\\\\/|^)(?:\\\\.{1,2})($|\\\\\\/)).)*?'\n\n// not a ^ or / followed by a dot,\n// followed by anything, any number of times.\nvar twoStarNoDot = '(?:(?!(?:\\\\\\/|^)\\\\.).)*?'\n\n// characters that need to be escaped in RegExp.\nvar reSpecials = charSet('().*{}+?[]^$\\\\!')\n\n// \"abc\" -> { a:true, b:true, c:true }\nfunction charSet (s) {\n return s.split('').reduce(function (set, c) {\n set[c] = true\n return set\n }, {})\n}\n\n// normalizes slashes.\nvar slashSplit = /\\/+/\n\nminimatch.filter = filter\nfunction filter (pattern, options) {\n options = options || {}\n return function (p, i, list) {\n return minimatch(p, pattern, options)\n }\n}\n\nfunction ext (a, b) {\n a = a || {}\n b = b || {}\n var t = {}\n Object.keys(b).forEach(function (k) {\n t[k] = b[k]\n })\n Object.keys(a).forEach(function (k) {\n t[k] = a[k]\n })\n return t\n}\n\nminimatch.defaults = function (def) {\n if (!def || !Object.keys(def).length) return minimatch\n\n var orig = minimatch\n\n var m = function minimatch (p, pattern, options) {\n return orig.minimatch(p, pattern, ext(def, options))\n }\n\n m.Minimatch = function Minimatch (pattern, options) {\n return new orig.Minimatch(pattern, ext(def, options))\n }\n\n return m\n}\n\nMinimatch.defaults = function (def) {\n if (!def || !Object.keys(def).length) return Minimatch\n return minimatch.defaults(def).Minimatch\n}\n\nfunction minimatch (p, pattern, options) {\n if (typeof pattern !== 'string') {\n throw new TypeError('glob pattern string required')\n }\n\n if (!options) options = {}\n\n // shortcut: comments match nothing.\n if (!options.nocomment && pattern.charAt(0) === '#') {\n return false\n }\n\n // \"\" only matches \"\"\n if (pattern.trim() === '') return p === ''\n\n return new Minimatch(pattern, options).match(p)\n}\n\nfunction Minimatch (pattern, options) {\n if (!(this instanceof Minimatch)) {\n return new Minimatch(pattern, options)\n }\n\n if (typeof pattern !== 'string') {\n throw new TypeError('glob pattern string required')\n }\n\n if (!options) options = {}\n pattern = pattern.trim()\n\n // windows support: need to use /, not \\\n if (path.sep !== '/') {\n pattern = pattern.split(path.sep).join('/')\n }\n\n this.options = options\n this.set = []\n this.pattern = pattern\n this.regexp = null\n this.negate = false\n this.comment = false\n this.empty = false\n\n // make the set of regexps etc.\n this.make()\n}\n\nMinimatch.prototype.debug = function () {}\n\nMinimatch.prototype.make = make\nfunction make () {\n // don't do it more than once.\n if (this._made) return\n\n var pattern = this.pattern\n var options = this.options\n\n // empty patterns and comments match nothing.\n if (!options.nocomment && pattern.charAt(0) === '#') {\n this.comment = true\n return\n }\n if (!pattern) {\n this.empty = true\n return\n }\n\n // step 1: figure out negation, etc.\n this.parseNegate()\n\n // step 2: expand braces\n var set = this.globSet = this.braceExpand()\n\n if (options.debug) this.debug = console.error\n\n this.debug(this.pattern, set)\n\n // step 3: now we have a set, so turn each one into a series of path-portion\n // matching patterns.\n // These will be regexps, except in the case of \"**\", which is\n // set to the GLOBSTAR object for globstar behavior,\n // and will not contain any / characters\n set = this.globParts = set.map(function (s) {\n return s.split(slashSplit)\n })\n\n this.debug(this.pattern, set)\n\n // glob --> regexps\n set = set.map(function (s, si, set) {\n return s.map(this.parse, this)\n }, this)\n\n this.debug(this.pattern, set)\n\n // filter out everything that didn't compile properly.\n set = set.filter(function (s) {\n return s.indexOf(false) === -1\n })\n\n this.debug(this.pattern, set)\n\n this.set = set\n}\n\nMinimatch.prototype.parseNegate = parseNegate\nfunction parseNegate () {\n var pattern = this.pattern\n var negate = false\n var options = this.options\n var negateOffset = 0\n\n if (options.nonegate) return\n\n for (var i = 0, l = pattern.length\n ; i < l && pattern.charAt(i) === '!'\n ; i++) {\n negate = !negate\n negateOffset++\n }\n\n if (negateOffset) this.pattern = pattern.substr(negateOffset)\n this.negate = negate\n}\n\n// Brace expansion:\n// a{b,c}d -> abd acd\n// a{b,}c -> abc ac\n// a{0..3}d -> a0d a1d a2d a3d\n// a{b,c{d,e}f}g -> abg acdfg acefg\n// a{b,c}d{e,f}g -> abdeg acdeg abdeg abdfg\n//\n// Invalid sets are not expanded.\n// a{2..}b -> a{2..}b\n// a{b}c -> a{b}c\nminimatch.braceExpand = function (pattern, options) {\n return braceExpand(pattern, options)\n}\n\nMinimatch.prototype.braceExpand = braceExpand\n\nfunction braceExpand (pattern, options) {\n if (!options) {\n if (this instanceof Minimatch) {\n options = this.options\n } else {\n options = {}\n }\n }\n\n pattern = typeof pattern === 'undefined'\n ? this.pattern : pattern\n\n if (typeof pattern === 'undefined') {\n throw new TypeError('undefined pattern')\n }\n\n if (options.nobrace ||\n !pattern.match(/\\{.*\\}/)) {\n // shortcut. no need to expand.\n return [pattern]\n }\n\n return expand(pattern)\n}\n\n// parse a component of the expanded set.\n// At this point, no pattern may contain \"/\" in it\n// so we're going to return a 2d array, where each entry is the full\n// pattern, split on '/', and then turned into a regular expression.\n// A regexp is made at the end which joins each array with an\n// escaped /, and another full one which joins each regexp with |.\n//\n// Following the lead of Bash 4.1, note that \"**\" only has special meaning\n// when it is the *only* thing in a path portion. Otherwise, any series\n// of * is equivalent to a single *. Globstar behavior is enabled by\n// default, and can be disabled by setting options.noglobstar.\nMinimatch.prototype.parse = parse\nvar SUBPARSE = {}\nfunction parse (pattern, isSub) {\n if (pattern.length > 1024 * 64) {\n throw new TypeError('pattern is too long')\n }\n\n var options = this.options\n\n // shortcuts\n if (!options.noglobstar && pattern === '**') return GLOBSTAR\n if (pattern === '') return ''\n\n var re = ''\n var hasMagic = !!options.nocase\n var escaping = false\n // ? => one single character\n var patternListStack = []\n var negativeLists = []\n var stateChar\n var inClass = false\n var reClassStart = -1\n var classStart = -1\n // . and .. never match anything that doesn't start with .,\n // even when options.dot is set.\n var patternStart = pattern.charAt(0) === '.' ? '' // anything\n // not (start or / followed by . or .. followed by / or end)\n : options.dot ? '(?!(?:^|\\\\\\/)\\\\.{1,2}(?:$|\\\\\\/))'\n : '(?!\\\\.)'\n var self = this\n\n function clearStateChar () {\n if (stateChar) {\n // we had some state-tracking character\n // that wasn't consumed by this pass.\n switch (stateChar) {\n case '*':\n re += star\n hasMagic = true\n break\n case '?':\n re += qmark\n hasMagic = true\n break\n default:\n re += '\\\\' + stateChar\n break\n }\n self.debug('clearStateChar %j %j', stateChar, re)\n stateChar = false\n }\n }\n\n for (var i = 0, len = pattern.length, c\n ; (i < len) && (c = pattern.charAt(i))\n ; i++) {\n this.debug('%s\\t%s %s %j', pattern, i, re, c)\n\n // skip over any that are escaped.\n if (escaping && reSpecials[c]) {\n re += '\\\\' + c\n escaping = false\n continue\n }\n\n switch (c) {\n case '/':\n // completely not allowed, even escaped.\n // Should already be path-split by now.\n return false\n\n case '\\\\':\n clearStateChar()\n escaping = true\n continue\n\n // the various stateChar values\n // for the \"extglob\" stuff.\n case '?':\n case '*':\n case '+':\n case '@':\n case '!':\n this.debug('%s\\t%s %s %j <-- stateChar', pattern, i, re, c)\n\n // all of those are literals inside a class, except that\n // the glob [!a] means [^a] in regexp\n if (inClass) {\n this.debug(' in class')\n if (c === '!' && i === classStart + 1) c = '^'\n re += c\n continue\n }\n\n // if we already have a stateChar, then it means\n // that there was something like ** or +? in there.\n // Handle the stateChar, then proceed with this one.\n self.debug('call clearStateChar %j', stateChar)\n clearStateChar()\n stateChar = c\n // if extglob is disabled, then +(asdf|foo) isn't a thing.\n // just clear the statechar *now*, rather than even diving into\n // the patternList stuff.\n if (options.noext) clearStateChar()\n continue\n\n case '(':\n if (inClass) {\n re += '('\n continue\n }\n\n if (!stateChar) {\n re += '\\\\('\n continue\n }\n\n patternListStack.push({\n type: stateChar,\n start: i - 1,\n reStart: re.length,\n open: plTypes[stateChar].open,\n close: plTypes[stateChar].close\n })\n // negation is (?:(?!js)[^/]*)\n re += stateChar === '!' ? '(?:(?!(?:' : '(?:'\n this.debug('plType %j %j', stateChar, re)\n stateChar = false\n continue\n\n case ')':\n if (inClass || !patternListStack.length) {\n re += '\\\\)'\n continue\n }\n\n clearStateChar()\n hasMagic = true\n var pl = patternListStack.pop()\n // negation is (?:(?!js)[^/]*)\n // The others are (?:)\n re += pl.close\n if (pl.type === '!') {\n negativeLists.push(pl)\n }\n pl.reEnd = re.length\n continue\n\n case '|':\n if (inClass || !patternListStack.length || escaping) {\n re += '\\\\|'\n escaping = false\n continue\n }\n\n clearStateChar()\n re += '|'\n continue\n\n // these are mostly the same in regexp and glob\n case '[':\n // swallow any state-tracking char before the [\n clearStateChar()\n\n if (inClass) {\n re += '\\\\' + c\n continue\n }\n\n inClass = true\n classStart = i\n reClassStart = re.length\n re += c\n continue\n\n case ']':\n // a right bracket shall lose its special\n // meaning and represent itself in\n // a bracket expression if it occurs\n // first in the list. -- POSIX.2 2.8.3.2\n if (i === classStart + 1 || !inClass) {\n re += '\\\\' + c\n escaping = false\n continue\n }\n\n // handle the case where we left a class open.\n // \"[z-a]\" is valid, equivalent to \"\\[z-a\\]\"\n if (inClass) {\n // split where the last [ was, make sure we don't have\n // an invalid re. if so, re-walk the contents of the\n // would-be class to re-translate any characters that\n // were passed through as-is\n // TODO: It would probably be faster to determine this\n // without a try/catch and a new RegExp, but it's tricky\n // to do safely. For now, this is safe and works.\n var cs = pattern.substring(classStart + 1, i)\n try {\n RegExp('[' + cs + ']')\n } catch (er) {\n // not a valid class!\n var sp = this.parse(cs, SUBPARSE)\n re = re.substr(0, reClassStart) + '\\\\[' + sp[0] + '\\\\]'\n hasMagic = hasMagic || sp[1]\n inClass = false\n continue\n }\n }\n\n // finish up the class.\n hasMagic = true\n inClass = false\n re += c\n continue\n\n default:\n // swallow any state char that wasn't consumed\n clearStateChar()\n\n if (escaping) {\n // no need\n escaping = false\n } else if (reSpecials[c]\n && !(c === '^' && inClass)) {\n re += '\\\\'\n }\n\n re += c\n\n } // switch\n } // for\n\n // handle the case where we left a class open.\n // \"[abc\" is valid, equivalent to \"\\[abc\"\n if (inClass) {\n // split where the last [ was, and escape it\n // this is a huge pita. We now have to re-walk\n // the contents of the would-be class to re-translate\n // any characters that were passed through as-is\n cs = pattern.substr(classStart + 1)\n sp = this.parse(cs, SUBPARSE)\n re = re.substr(0, reClassStart) + '\\\\[' + sp[0]\n hasMagic = hasMagic || sp[1]\n }\n\n // handle the case where we had a +( thing at the *end*\n // of the pattern.\n // each pattern list stack adds 3 chars, and we need to go through\n // and escape any | chars that were passed through as-is for the regexp.\n // Go through and escape them, taking care not to double-escape any\n // | chars that were already escaped.\n for (pl = patternListStack.pop(); pl; pl = patternListStack.pop()) {\n var tail = re.slice(pl.reStart + pl.open.length)\n this.debug('setting tail', re, pl)\n // maybe some even number of \\, then maybe 1 \\, followed by a |\n tail = tail.replace(/((?:\\\\{2}){0,64})(\\\\?)\\|/g, function (_, $1, $2) {\n if (!$2) {\n // the | isn't already escaped, so escape it.\n $2 = '\\\\'\n }\n\n // need to escape all those slashes *again*, without escaping the\n // one that we need for escaping the | character. As it works out,\n // escaping an even number of slashes can be done by simply repeating\n // it exactly after itself. That's why this trick works.\n //\n // I am sorry that you have to see this.\n return $1 + $1 + $2 + '|'\n })\n\n this.debug('tail=%j\\n %s', tail, tail, pl, re)\n var t = pl.type === '*' ? star\n : pl.type === '?' ? qmark\n : '\\\\' + pl.type\n\n hasMagic = true\n re = re.slice(0, pl.reStart) + t + '\\\\(' + tail\n }\n\n // handle trailing things that only matter at the very end.\n clearStateChar()\n if (escaping) {\n // trailing \\\\\n re += '\\\\\\\\'\n }\n\n // only need to apply the nodot start if the re starts with\n // something that could conceivably capture a dot\n var addPatternStart = false\n switch (re.charAt(0)) {\n case '.':\n case '[':\n case '(': addPatternStart = true\n }\n\n // Hack to work around lack of negative lookbehind in JS\n // A pattern like: *.!(x).!(y|z) needs to ensure that a name\n // like 'a.xyz.yz' doesn't match. So, the first negative\n // lookahead, has to look ALL the way ahead, to the end of\n // the pattern.\n for (var n = negativeLists.length - 1; n > -1; n--) {\n var nl = negativeLists[n]\n\n var nlBefore = re.slice(0, nl.reStart)\n var nlFirst = re.slice(nl.reStart, nl.reEnd - 8)\n var nlLast = re.slice(nl.reEnd - 8, nl.reEnd)\n var nlAfter = re.slice(nl.reEnd)\n\n nlLast += nlAfter\n\n // Handle nested stuff like *(*.js|!(*.json)), where open parens\n // mean that we should *not* include the ) in the bit that is considered\n // \"after\" the negated section.\n var openParensBefore = nlBefore.split('(').length - 1\n var cleanAfter = nlAfter\n for (i = 0; i < openParensBefore; i++) {\n cleanAfter = cleanAfter.replace(/\\)[+*?]?/, '')\n }\n nlAfter = cleanAfter\n\n var dollar = ''\n if (nlAfter === '' && isSub !== SUBPARSE) {\n dollar = '$'\n }\n var newRe = nlBefore + nlFirst + nlAfter + dollar + nlLast\n re = newRe\n }\n\n // if the re is not \"\" at this point, then we need to make sure\n // it doesn't match against an empty path part.\n // Otherwise a/* will match a/, which it should not.\n if (re !== '' && hasMagic) {\n re = '(?=.)' + re\n }\n\n if (addPatternStart) {\n re = patternStart + re\n }\n\n // parsing just a piece of a larger pattern.\n if (isSub === SUBPARSE) {\n return [re, hasMagic]\n }\n\n // skip the regexp for non-magical patterns\n // unescape anything in it, though, so that it'll be\n // an exact match against a file etc.\n if (!hasMagic) {\n return globUnescape(pattern)\n }\n\n var flags = options.nocase ? 'i' : ''\n try {\n var regExp = new RegExp('^' + re + '$', flags)\n } catch (er) {\n // If it was an invalid regular expression, then it can't match\n // anything. This trick looks for a character after the end of\n // the string, which is of course impossible, except in multi-line\n // mode, but it's not a /m regex.\n return new RegExp('$.')\n }\n\n regExp._glob = pattern\n regExp._src = re\n\n return regExp\n}\n\nminimatch.makeRe = function (pattern, options) {\n return new Minimatch(pattern, options || {}).makeRe()\n}\n\nMinimatch.prototype.makeRe = makeRe\nfunction makeRe () {\n if (this.regexp || this.regexp === false) return this.regexp\n\n // at this point, this.set is a 2d array of partial\n // pattern strings, or \"**\".\n //\n // It's better to use .match(). This function shouldn't\n // be used, really, but it's pretty convenient sometimes,\n // when you just want to work with a regex.\n var set = this.set\n\n if (!set.length) {\n this.regexp = false\n return this.regexp\n }\n var options = this.options\n\n var twoStar = options.noglobstar ? star\n : options.dot ? twoStarDot\n : twoStarNoDot\n var flags = options.nocase ? 'i' : ''\n\n var re = set.map(function (pattern) {\n return pattern.map(function (p) {\n return (p === GLOBSTAR) ? twoStar\n : (typeof p === 'string') ? regExpEscape(p)\n : p._src\n }).join('\\\\\\/')\n }).join('|')\n\n // must match entire pattern\n // ending in a * or ** will make it less strict.\n re = '^(?:' + re + ')$'\n\n // can match anything, as long as it's not this.\n if (this.negate) re = '^(?!' + re + ').*$'\n\n try {\n this.regexp = new RegExp(re, flags)\n } catch (ex) {\n this.regexp = false\n }\n return this.regexp\n}\n\nminimatch.match = function (list, pattern, options) {\n options = options || {}\n var mm = new Minimatch(pattern, options)\n list = list.filter(function (f) {\n return mm.match(f)\n })\n if (mm.options.nonull && !list.length) {\n list.push(pattern)\n }\n return list\n}\n\nMinimatch.prototype.match = match\nfunction match (f, partial) {\n this.debug('match', f, this.pattern)\n // short-circuit in the case of busted things.\n // comments, etc.\n if (this.comment) return false\n if (this.empty) return f === ''\n\n if (f === '/' && partial) return true\n\n var options = this.options\n\n // windows: need to use /, not \\\n if (path.sep !== '/') {\n f = f.split(path.sep).join('/')\n }\n\n // treat the test path as a set of pathparts.\n f = f.split(slashSplit)\n this.debug(this.pattern, 'split', f)\n\n // just ONE of the pattern sets in this.set needs to match\n // in order for it to be valid. If negating, then just one\n // match means that we have failed.\n // Either way, return on the first hit.\n\n var set = this.set\n this.debug(this.pattern, 'set', set)\n\n // Find the basename of the path by looking for the last non-empty segment\n var filename\n var i\n for (i = f.length - 1; i >= 0; i--) {\n filename = f[i]\n if (filename) break\n }\n\n for (i = 0; i < set.length; i++) {\n var pattern = set[i]\n var file = f\n if (options.matchBase && pattern.length === 1) {\n file = [filename]\n }\n var hit = this.matchOne(file, pattern, partial)\n if (hit) {\n if (options.flipNegate) return true\n return !this.negate\n }\n }\n\n // didn't get any hits. this is success if it's a negative\n // pattern, failure otherwise.\n if (options.flipNegate) return false\n return this.negate\n}\n\n// set partial to true to test if, for example,\n// \"/a/b\" matches the start of \"/*/b/*/d\"\n// Partial means, if you run out of file before you run\n// out of pattern, then that's fine, as long as all\n// the parts match.\nMinimatch.prototype.matchOne = function (file, pattern, partial) {\n var options = this.options\n\n this.debug('matchOne',\n { 'this': this, file: file, pattern: pattern })\n\n this.debug('matchOne', file.length, pattern.length)\n\n for (var fi = 0,\n pi = 0,\n fl = file.length,\n pl = pattern.length\n ; (fi < fl) && (pi < pl)\n ; fi++, pi++) {\n this.debug('matchOne loop')\n var p = pattern[pi]\n var f = file[fi]\n\n this.debug(pattern, p, f)\n\n // should be impossible.\n // some invalid regexp stuff in the set.\n if (p === false) return false\n\n if (p === GLOBSTAR) {\n this.debug('GLOBSTAR', [pattern, p, f])\n\n // \"**\"\n // a/**/b/**/c would match the following:\n // a/b/x/y/z/c\n // a/x/y/z/b/c\n // a/b/x/b/x/c\n // a/b/c\n // To do this, take the rest of the pattern after\n // the **, and see if it would match the file remainder.\n // If so, return success.\n // If not, the ** \"swallows\" a segment, and try again.\n // This is recursively awful.\n //\n // a/**/b/**/c matching a/b/x/y/z/c\n // - a matches a\n // - doublestar\n // - matchOne(b/x/y/z/c, b/**/c)\n // - b matches b\n // - doublestar\n // - matchOne(x/y/z/c, c) -> no\n // - matchOne(y/z/c, c) -> no\n // - matchOne(z/c, c) -> no\n // - matchOne(c, c) yes, hit\n var fr = fi\n var pr = pi + 1\n if (pr === pl) {\n this.debug('** at the end')\n // a ** at the end will just swallow the rest.\n // We have found a match.\n // however, it will not swallow /.x, unless\n // options.dot is set.\n // . and .. are *never* matched by **, for explosively\n // exponential reasons.\n for (; fi < fl; fi++) {\n if (file[fi] === '.' || file[fi] === '..' ||\n (!options.dot && file[fi].charAt(0) === '.')) return false\n }\n return true\n }\n\n // ok, let's see if we can swallow whatever we can.\n while (fr < fl) {\n var swallowee = file[fr]\n\n this.debug('\\nglobstar while', file, fr, pattern, pr, swallowee)\n\n // XXX remove this slice. Just pass the start index.\n if (this.matchOne(file.slice(fr), pattern.slice(pr), partial)) {\n this.debug('globstar found match!', fr, fl, swallowee)\n // found a match.\n return true\n } else {\n // can't swallow \".\" or \"..\" ever.\n // can only swallow \".foo\" when explicitly asked.\n if (swallowee === '.' || swallowee === '..' ||\n (!options.dot && swallowee.charAt(0) === '.')) {\n this.debug('dot detected!', file, fr, pattern, pr)\n break\n }\n\n // ** swallows a segment, and continue.\n this.debug('globstar swallow a segment, and continue')\n fr++\n }\n }\n\n // no match was found.\n // However, in partial mode, we can't say this is necessarily over.\n // If there's more *pattern* left, then\n if (partial) {\n // ran out of file\n this.debug('\\n>>> no match, partial?', file, fr, pattern, pr)\n if (fr === fl) return true\n }\n return false\n }\n\n // something other than **\n // non-magic patterns just have to match exactly\n // patterns with magic have been turned into regexps.\n var hit\n if (typeof p === 'string') {\n if (options.nocase) {\n hit = f.toLowerCase() === p.toLowerCase()\n } else {\n hit = f === p\n }\n this.debug('string match', p, f, hit)\n } else {\n hit = f.match(p)\n this.debug('pattern match', p, f, hit)\n }\n\n if (!hit) return false\n }\n\n // Note: ending in / means that we'll get a final \"\"\n // at the end of the pattern. This can only match a\n // corresponding \"\" at the end of the file.\n // If the file ends in /, then it can only match a\n // a pattern that ends in /, unless the pattern just\n // doesn't have any more for it. But, a/b/ should *not*\n // match \"a/b/*\", even though \"\" matches against the\n // [^/]*? pattern, except in partial mode, where it might\n // simply not be reached yet.\n // However, a/b/ should still satisfy a/*\n\n // now either we fell off the end of the pattern, or we're done.\n if (fi === fl && pi === pl) {\n // ran out of pattern and filename at the same time.\n // an exact hit!\n return true\n } else if (fi === fl) {\n // ran out of file, but still had pattern left.\n // this is ok if we're doing the match as part of\n // a glob fs traversal.\n return partial\n } else if (pi === pl) {\n // ran out of pattern, still have file left.\n // this is only acceptable if we're on the very last\n // empty segment of a file with a trailing slash.\n // a/* should match a/b/\n var emptyFileEnd = (fi === fl - 1) && (file[fi] === '')\n return emptyFileEnd\n }\n\n // should be unreachable.\n throw new Error('wtf?')\n}\n\n// replace stuff like \\* with *\nfunction globUnescape (s) {\n return s.replace(/\\\\(.)/g, '$1')\n}\n\nfunction regExpEscape (s) {\n return s.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&')\n}\n", "if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n", "try {\n var util = require('util');\n /* istanbul ignore next */\n if (typeof util.inherits !== 'function') throw '';\n module.exports = util.inherits;\n} catch (e) {\n /* istanbul ignore next */\n module.exports = require('./inherits_browser.js');\n}\n", "'use strict';\n\nfunction posix(path) {\n\treturn path.charAt(0) === '/';\n}\n\nfunction win32(path) {\n\t// https://github.com/nodejs/node/blob/b3fcc245fb25539909ef1d5eaa01dbf92e168633/lib/path.js#L56\n\tvar splitDeviceRe = /^([a-zA-Z]:|[\\\\\\/]{2}[^\\\\\\/]+[\\\\\\/]+[^\\\\\\/]+)?([\\\\\\/])?([\\s\\S]*?)$/;\n\tvar result = splitDeviceRe.exec(path);\n\tvar device = result[1] || '';\n\tvar isUnc = Boolean(device && device.charAt(1) !== ':');\n\n\t// UNC paths are always absolute\n\treturn Boolean(result[2] || isUnc);\n}\n\nmodule.exports = process.platform === 'win32' ? win32 : posix;\nmodule.exports.posix = posix;\nmodule.exports.win32 = win32;\n", "exports.alphasort = alphasort\nexports.alphasorti = alphasorti\nexports.setopts = setopts\nexports.ownProp = ownProp\nexports.makeAbs = makeAbs\nexports.finish = finish\nexports.mark = mark\nexports.isIgnored = isIgnored\nexports.childrenIgnored = childrenIgnored\n\nfunction ownProp (obj, field) {\n return Object.prototype.hasOwnProperty.call(obj, field)\n}\n\nvar path = require(\"path\")\nvar minimatch = require(\"minimatch\")\nvar isAbsolute = require(\"path-is-absolute\")\nvar Minimatch = minimatch.Minimatch\n\nfunction alphasorti (a, b) {\n return a.toLowerCase().localeCompare(b.toLowerCase())\n}\n\nfunction alphasort (a, b) {\n return a.localeCompare(b)\n}\n\nfunction setupIgnores (self, options) {\n self.ignore = options.ignore || []\n\n if (!Array.isArray(self.ignore))\n self.ignore = [self.ignore]\n\n if (self.ignore.length) {\n self.ignore = self.ignore.map(ignoreMap)\n }\n}\n\n// ignore patterns are always in dot:true mode.\nfunction ignoreMap (pattern) {\n var gmatcher = null\n if (pattern.slice(-3) === '/**') {\n var gpattern = pattern.replace(/(\\/\\*\\*)+$/, '')\n gmatcher = new Minimatch(gpattern, { dot: true })\n }\n\n return {\n matcher: new Minimatch(pattern, { dot: true }),\n gmatcher: gmatcher\n }\n}\n\nfunction setopts (self, pattern, options) {\n if (!options)\n options = {}\n\n // base-matching: just use globstar for that.\n if (options.matchBase && -1 === pattern.indexOf(\"/\")) {\n if (options.noglobstar) {\n throw new Error(\"base matching requires globstar\")\n }\n pattern = \"**/\" + pattern\n }\n\n self.silent = !!options.silent\n self.pattern = pattern\n self.strict = options.strict !== false\n self.realpath = !!options.realpath\n self.realpathCache = options.realpathCache || Object.create(null)\n self.follow = !!options.follow\n self.dot = !!options.dot\n self.mark = !!options.mark\n self.nodir = !!options.nodir\n if (self.nodir)\n self.mark = true\n self.sync = !!options.sync\n self.nounique = !!options.nounique\n self.nonull = !!options.nonull\n self.nosort = !!options.nosort\n self.nocase = !!options.nocase\n self.stat = !!options.stat\n self.noprocess = !!options.noprocess\n self.absolute = !!options.absolute\n\n self.maxLength = options.maxLength || Infinity\n self.cache = options.cache || Object.create(null)\n self.statCache = options.statCache || Object.create(null)\n self.symlinks = options.symlinks || Object.create(null)\n\n setupIgnores(self, options)\n\n self.changedCwd = false\n var cwd = process.cwd()\n if (!ownProp(options, \"cwd\"))\n self.cwd = cwd\n else {\n self.cwd = path.resolve(options.cwd)\n self.changedCwd = self.cwd !== cwd\n }\n\n self.root = options.root || path.resolve(self.cwd, \"/\")\n self.root = path.resolve(self.root)\n if (process.platform === \"win32\")\n self.root = self.root.replace(/\\\\/g, \"/\")\n\n // TODO: is an absolute `cwd` supposed to be resolved against `root`?\n // e.g. { cwd: '/test', root: __dirname } === path.join(__dirname, '/test')\n self.cwdAbs = isAbsolute(self.cwd) ? self.cwd : makeAbs(self, self.cwd)\n if (process.platform === \"win32\")\n self.cwdAbs = self.cwdAbs.replace(/\\\\/g, \"/\")\n self.nomount = !!options.nomount\n\n // disable comments and negation in Minimatch.\n // Note that they are not supported in Glob itself anyway.\n options.nonegate = true\n options.nocomment = true\n\n self.minimatch = new Minimatch(pattern, options)\n self.options = self.minimatch.options\n}\n\nfunction finish (self) {\n var nou = self.nounique\n var all = nou ? [] : Object.create(null)\n\n for (var i = 0, l = self.matches.length; i < l; i ++) {\n var matches = self.matches[i]\n if (!matches || Object.keys(matches).length === 0) {\n if (self.nonull) {\n // do like the shell, and spit out the literal glob\n var literal = self.minimatch.globSet[i]\n if (nou)\n all.push(literal)\n else\n all[literal] = true\n }\n } else {\n // had matches\n var m = Object.keys(matches)\n if (nou)\n all.push.apply(all, m)\n else\n m.forEach(function (m) {\n all[m] = true\n })\n }\n }\n\n if (!nou)\n all = Object.keys(all)\n\n if (!self.nosort)\n all = all.sort(self.nocase ? alphasorti : alphasort)\n\n // at *some* point we statted all of these\n if (self.mark) {\n for (var i = 0; i < all.length; i++) {\n all[i] = self._mark(all[i])\n }\n if (self.nodir) {\n all = all.filter(function (e) {\n var notDir = !(/\\/$/.test(e))\n var c = self.cache[e] || self.cache[makeAbs(self, e)]\n if (notDir && c)\n notDir = c !== 'DIR' && !Array.isArray(c)\n return notDir\n })\n }\n }\n\n if (self.ignore.length)\n all = all.filter(function(m) {\n return !isIgnored(self, m)\n })\n\n self.found = all\n}\n\nfunction mark (self, p) {\n var abs = makeAbs(self, p)\n var c = self.cache[abs]\n var m = p\n if (c) {\n var isDir = c === 'DIR' || Array.isArray(c)\n var slash = p.slice(-1) === '/'\n\n if (isDir && !slash)\n m += '/'\n else if (!isDir && slash)\n m = m.slice(0, -1)\n\n if (m !== p) {\n var mabs = makeAbs(self, m)\n self.statCache[mabs] = self.statCache[abs]\n self.cache[mabs] = self.cache[abs]\n }\n }\n\n return m\n}\n\n// lotta situps...\nfunction makeAbs (self, f) {\n var abs = f\n if (f.charAt(0) === '/') {\n abs = path.join(self.root, f)\n } else if (isAbsolute(f) || f === '') {\n abs = f\n } else if (self.changedCwd) {\n abs = path.resolve(self.cwd, f)\n } else {\n abs = path.resolve(f)\n }\n\n if (process.platform === 'win32')\n abs = abs.replace(/\\\\/g, '/')\n\n return abs\n}\n\n\n// Return true, if pattern ends with globstar '**', for the accompanying parent directory.\n// Ex:- If node_modules/** is the pattern, add 'node_modules' to ignore list along with it's contents\nfunction isIgnored (self, path) {\n if (!self.ignore.length)\n return false\n\n return self.ignore.some(function(item) {\n return item.matcher.match(path) || !!(item.gmatcher && item.gmatcher.match(path))\n })\n}\n\nfunction childrenIgnored (self, path) {\n if (!self.ignore.length)\n return false\n\n return self.ignore.some(function(item) {\n return !!(item.gmatcher && item.gmatcher.match(path))\n })\n}\n", "module.exports = globSync\nglobSync.GlobSync = GlobSync\n\nvar fs = require('fs')\nvar rp = require('fs.realpath')\nvar minimatch = require('minimatch')\nvar Minimatch = minimatch.Minimatch\nvar Glob = require('./glob.js').Glob\nvar util = require('util')\nvar path = require('path')\nvar assert = require('assert')\nvar isAbsolute = require('path-is-absolute')\nvar common = require('./common.js')\nvar alphasort = common.alphasort\nvar alphasorti = common.alphasorti\nvar setopts = common.setopts\nvar ownProp = common.ownProp\nvar childrenIgnored = common.childrenIgnored\nvar isIgnored = common.isIgnored\n\nfunction globSync (pattern, options) {\n if (typeof options === 'function' || arguments.length === 3)\n throw new TypeError('callback provided to sync glob\\n'+\n 'See: https://github.com/isaacs/node-glob/issues/167')\n\n return new GlobSync(pattern, options).found\n}\n\nfunction GlobSync (pattern, options) {\n if (!pattern)\n throw new Error('must provide pattern')\n\n if (typeof options === 'function' || arguments.length === 3)\n throw new TypeError('callback provided to sync glob\\n'+\n 'See: https://github.com/isaacs/node-glob/issues/167')\n\n if (!(this instanceof GlobSync))\n return new GlobSync(pattern, options)\n\n setopts(this, pattern, options)\n\n if (this.noprocess)\n return this\n\n var n = this.minimatch.set.length\n this.matches = new Array(n)\n for (var i = 0; i < n; i ++) {\n this._process(this.minimatch.set[i], i, false)\n }\n this._finish()\n}\n\nGlobSync.prototype._finish = function () {\n assert(this instanceof GlobSync)\n if (this.realpath) {\n var self = this\n this.matches.forEach(function (matchset, index) {\n var set = self.matches[index] = Object.create(null)\n for (var p in matchset) {\n try {\n p = self._makeAbs(p)\n var real = rp.realpathSync(p, self.realpathCache)\n set[real] = true\n } catch (er) {\n if (er.syscall === 'stat')\n set[self._makeAbs(p)] = true\n else\n throw er\n }\n }\n })\n }\n common.finish(this)\n}\n\n\nGlobSync.prototype._process = function (pattern, index, inGlobStar) {\n assert(this instanceof GlobSync)\n\n // Get the first [n] parts of pattern that are all strings.\n var n = 0\n while (typeof pattern[n] === 'string') {\n n ++\n }\n // now n is the index of the first one that is *not* a string.\n\n // See if there's anything else\n var prefix\n switch (n) {\n // if not, then this is rather simple\n case pattern.length:\n this._processSimple(pattern.join('/'), index)\n return\n\n case 0:\n // pattern *starts* with some non-trivial item.\n // going to readdir(cwd), but not include the prefix in matches.\n prefix = null\n break\n\n default:\n // pattern has some string bits in the front.\n // whatever it starts with, whether that's 'absolute' like /foo/bar,\n // or 'relative' like '../baz'\n prefix = pattern.slice(0, n).join('/')\n break\n }\n\n var remain = pattern.slice(n)\n\n // get the list of entries.\n var read\n if (prefix === null)\n read = '.'\n else if (isAbsolute(prefix) || isAbsolute(pattern.join('/'))) {\n if (!prefix || !isAbsolute(prefix))\n prefix = '/' + prefix\n read = prefix\n } else\n read = prefix\n\n var abs = this._makeAbs(read)\n\n //if ignored, skip processing\n if (childrenIgnored(this, read))\n return\n\n var isGlobStar = remain[0] === minimatch.GLOBSTAR\n if (isGlobStar)\n this._processGlobStar(prefix, read, abs, remain, index, inGlobStar)\n else\n this._processReaddir(prefix, read, abs, remain, index, inGlobStar)\n}\n\n\nGlobSync.prototype._processReaddir = function (prefix, read, abs, remain, index, inGlobStar) {\n var entries = this._readdir(abs, inGlobStar)\n\n // if the abs isn't a dir, then nothing can match!\n if (!entries)\n return\n\n // It will only match dot entries if it starts with a dot, or if\n // dot is set. Stuff like @(.foo|.bar) isn't allowed.\n var pn = remain[0]\n var negate = !!this.minimatch.negate\n var rawGlob = pn._glob\n var dotOk = this.dot || rawGlob.charAt(0) === '.'\n\n var matchedEntries = []\n for (var i = 0; i < entries.length; i++) {\n var e = entries[i]\n if (e.charAt(0) !== '.' || dotOk) {\n var m\n if (negate && !prefix) {\n m = !e.match(pn)\n } else {\n m = e.match(pn)\n }\n if (m)\n matchedEntries.push(e)\n }\n }\n\n var len = matchedEntries.length\n // If there are no matched entries, then nothing matches.\n if (len === 0)\n return\n\n // if this is the last remaining pattern bit, then no need for\n // an additional stat *unless* the user has specified mark or\n // stat explicitly. We know they exist, since readdir returned\n // them.\n\n if (remain.length === 1 && !this.mark && !this.stat) {\n if (!this.matches[index])\n this.matches[index] = Object.create(null)\n\n for (var i = 0; i < len; i ++) {\n var e = matchedEntries[i]\n if (prefix) {\n if (prefix.slice(-1) !== '/')\n e = prefix + '/' + e\n else\n e = prefix + e\n }\n\n if (e.charAt(0) === '/' && !this.nomount) {\n e = path.join(this.root, e)\n }\n this._emitMatch(index, e)\n }\n // This was the last one, and no stats were needed\n return\n }\n\n // now test all matched entries as stand-ins for that part\n // of the pattern.\n remain.shift()\n for (var i = 0; i < len; i ++) {\n var e = matchedEntries[i]\n var newPattern\n if (prefix)\n newPattern = [prefix, e]\n else\n newPattern = [e]\n this._process(newPattern.concat(remain), index, inGlobStar)\n }\n}\n\n\nGlobSync.prototype._emitMatch = function (index, e) {\n if (isIgnored(this, e))\n return\n\n var abs = this._makeAbs(e)\n\n if (this.mark)\n e = this._mark(e)\n\n if (this.absolute) {\n e = abs\n }\n\n if (this.matches[index][e])\n return\n\n if (this.nodir) {\n var c = this.cache[abs]\n if (c === 'DIR' || Array.isArray(c))\n return\n }\n\n this.matches[index][e] = true\n\n if (this.stat)\n this._stat(e)\n}\n\n\nGlobSync.prototype._readdirInGlobStar = function (abs) {\n // follow all symlinked directories forever\n // just proceed as if this is a non-globstar situation\n if (this.follow)\n return this._readdir(abs, false)\n\n var entries\n var lstat\n var stat\n try {\n lstat = fs.lstatSync(abs)\n } catch (er) {\n if (er.code === 'ENOENT') {\n // lstat failed, doesn't exist\n return null\n }\n }\n\n var isSym = lstat && lstat.isSymbolicLink()\n this.symlinks[abs] = isSym\n\n // If it's not a symlink or a dir, then it's definitely a regular file.\n // don't bother doing a readdir in that case.\n if (!isSym && lstat && !lstat.isDirectory())\n this.cache[abs] = 'FILE'\n else\n entries = this._readdir(abs, false)\n\n return entries\n}\n\nGlobSync.prototype._readdir = function (abs, inGlobStar) {\n var entries\n\n if (inGlobStar && !ownProp(this.symlinks, abs))\n return this._readdirInGlobStar(abs)\n\n if (ownProp(this.cache, abs)) {\n var c = this.cache[abs]\n if (!c || c === 'FILE')\n return null\n\n if (Array.isArray(c))\n return c\n }\n\n try {\n return this._readdirEntries(abs, fs.readdirSync(abs))\n } catch (er) {\n this._readdirError(abs, er)\n return null\n }\n}\n\nGlobSync.prototype._readdirEntries = function (abs, entries) {\n // if we haven't asked to stat everything, then just\n // assume that everything in there exists, so we can avoid\n // having to stat it a second time.\n if (!this.mark && !this.stat) {\n for (var i = 0; i < entries.length; i ++) {\n var e = entries[i]\n if (abs === '/')\n e = abs + e\n else\n e = abs + '/' + e\n this.cache[e] = true\n }\n }\n\n this.cache[abs] = entries\n\n // mark and cache dir-ness\n return entries\n}\n\nGlobSync.prototype._readdirError = function (f, er) {\n // handle errors, and cache the information\n switch (er.code) {\n case 'ENOTSUP': // https://github.com/isaacs/node-glob/issues/205\n case 'ENOTDIR': // totally normal. means it *does* exist.\n var abs = this._makeAbs(f)\n this.cache[abs] = 'FILE'\n if (abs === this.cwdAbs) {\n var error = new Error(er.code + ' invalid cwd ' + this.cwd)\n error.path = this.cwd\n error.code = er.code\n throw error\n }\n break\n\n case 'ENOENT': // not terribly unusual\n case 'ELOOP':\n case 'ENAMETOOLONG':\n case 'UNKNOWN':\n this.cache[this._makeAbs(f)] = false\n break\n\n default: // some unusual error. Treat as failure.\n this.cache[this._makeAbs(f)] = false\n if (this.strict)\n throw er\n if (!this.silent)\n console.error('glob error', er)\n break\n }\n}\n\nGlobSync.prototype._processGlobStar = function (prefix, read, abs, remain, index, inGlobStar) {\n\n var entries = this._readdir(abs, inGlobStar)\n\n // no entries means not a dir, so it can never have matches\n // foo.txt/** doesn't match foo.txt\n if (!entries)\n return\n\n // test without the globstar, and with every child both below\n // and replacing the globstar.\n var remainWithoutGlobStar = remain.slice(1)\n var gspref = prefix ? [ prefix ] : []\n var noGlobStar = gspref.concat(remainWithoutGlobStar)\n\n // the noGlobStar pattern exits the inGlobStar state\n this._process(noGlobStar, index, false)\n\n var len = entries.length\n var isSym = this.symlinks[abs]\n\n // If it's a symlink, and we're in a globstar, then stop\n if (isSym && inGlobStar)\n return\n\n for (var i = 0; i < len; i++) {\n var e = entries[i]\n if (e.charAt(0) === '.' && !this.dot)\n continue\n\n // these two cases enter the inGlobStar state\n var instead = gspref.concat(entries[i], remainWithoutGlobStar)\n this._process(instead, index, true)\n\n var below = gspref.concat(entries[i], remain)\n this._process(below, index, true)\n }\n}\n\nGlobSync.prototype._processSimple = function (prefix, index) {\n // XXX review this. Shouldn't it be doing the mounting etc\n // before doing stat? kinda weird?\n var exists = this._stat(prefix)\n\n if (!this.matches[index])\n this.matches[index] = Object.create(null)\n\n // If it doesn't exist, then just mark the lack of results\n if (!exists)\n return\n\n if (prefix && isAbsolute(prefix) && !this.nomount) {\n var trail = /[\\/\\\\]$/.test(prefix)\n if (prefix.charAt(0) === '/') {\n prefix = path.join(this.root, prefix)\n } else {\n prefix = path.resolve(this.root, prefix)\n if (trail)\n prefix += '/'\n }\n }\n\n if (process.platform === 'win32')\n prefix = prefix.replace(/\\\\/g, '/')\n\n // Mark this as a match\n this._emitMatch(index, prefix)\n}\n\n// Returns either 'DIR', 'FILE', or false\nGlobSync.prototype._stat = function (f) {\n var abs = this._makeAbs(f)\n var needDir = f.slice(-1) === '/'\n\n if (f.length > this.maxLength)\n return false\n\n if (!this.stat && ownProp(this.cache, abs)) {\n var c = this.cache[abs]\n\n if (Array.isArray(c))\n c = 'DIR'\n\n // It exists, but maybe not how we need it\n if (!needDir || c === 'DIR')\n return c\n\n if (needDir && c === 'FILE')\n return false\n\n // otherwise we have to stat, because maybe c=true\n // if we know it exists, but not what it is.\n }\n\n var exists\n var stat = this.statCache[abs]\n if (!stat) {\n var lstat\n try {\n lstat = fs.lstatSync(abs)\n } catch (er) {\n if (er && (er.code === 'ENOENT' || er.code === 'ENOTDIR')) {\n this.statCache[abs] = false\n return false\n }\n }\n\n if (lstat && lstat.isSymbolicLink()) {\n try {\n stat = fs.statSync(abs)\n } catch (er) {\n stat = lstat\n }\n } else {\n stat = lstat\n }\n }\n\n this.statCache[abs] = stat\n\n var c = true\n if (stat)\n c = stat.isDirectory() ? 'DIR' : 'FILE'\n\n this.cache[abs] = this.cache[abs] || c\n\n if (needDir && c === 'FILE')\n return false\n\n return c\n}\n\nGlobSync.prototype._mark = function (p) {\n return common.mark(this, p)\n}\n\nGlobSync.prototype._makeAbs = function (f) {\n return common.makeAbs(this, f)\n}\n", "// Returns a wrapper function that returns a wrapped callback\n// The wrapper function should do some stuff, and return a\n// presumably different callback function.\n// This makes sure that own properties are retained, so that\n// decorations and such are not lost along the way.\nmodule.exports = wrappy\nfunction wrappy (fn, cb) {\n if (fn && cb) return wrappy(fn)(cb)\n\n if (typeof fn !== 'function')\n throw new TypeError('need wrapper function')\n\n Object.keys(fn).forEach(function (k) {\n wrapper[k] = fn[k]\n })\n\n return wrapper\n\n function wrapper() {\n var args = new Array(arguments.length)\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i]\n }\n var ret = fn.apply(this, args)\n var cb = args[args.length-1]\n if (typeof ret === 'function' && ret !== cb) {\n Object.keys(cb).forEach(function (k) {\n ret[k] = cb[k]\n })\n }\n return ret\n }\n}\n", "var wrappy = require('wrappy')\nmodule.exports = wrappy(once)\nmodule.exports.strict = wrappy(onceStrict)\n\nonce.proto = once(function () {\n Object.defineProperty(Function.prototype, 'once', {\n value: function () {\n return once(this)\n },\n configurable: true\n })\n\n Object.defineProperty(Function.prototype, 'onceStrict', {\n value: function () {\n return onceStrict(this)\n },\n configurable: true\n })\n})\n\nfunction once (fn) {\n var f = function () {\n if (f.called) return f.value\n f.called = true\n return f.value = fn.apply(this, arguments)\n }\n f.called = false\n return f\n}\n\nfunction onceStrict (fn) {\n var f = function () {\n if (f.called)\n throw new Error(f.onceError)\n f.called = true\n return f.value = fn.apply(this, arguments)\n }\n var name = fn.name || 'Function wrapped with `once`'\n f.onceError = name + \" shouldn't be called more than once\"\n f.called = false\n return f\n}\n", "var wrappy = require('wrappy')\nvar reqs = Object.create(null)\nvar once = require('once')\n\nmodule.exports = wrappy(inflight)\n\nfunction inflight (key, cb) {\n if (reqs[key]) {\n reqs[key].push(cb)\n return null\n } else {\n reqs[key] = [cb]\n return makeres(key)\n }\n}\n\nfunction makeres (key) {\n return once(function RES () {\n var cbs = reqs[key]\n var len = cbs.length\n var args = slice(arguments)\n\n // XXX It's somewhat ambiguous whether a new callback added in this\n // pass should be queued for later execution if something in the\n // list of callbacks throws, or if it should just be discarded.\n // However, it's such an edge case that it hardly matters, and either\n // choice is likely as surprising as the other.\n // As it happens, we do go ahead and schedule it for later execution.\n try {\n for (var i = 0; i < len; i++) {\n cbs[i].apply(null, args)\n }\n } finally {\n if (cbs.length > len) {\n // added more in the interim.\n // de-zalgo, just in case, but don't call again.\n cbs.splice(0, len)\n process.nextTick(function () {\n RES.apply(null, args)\n })\n } else {\n delete reqs[key]\n }\n }\n })\n}\n\nfunction slice (args) {\n var length = args.length\n var array = []\n\n for (var i = 0; i < length; i++) array[i] = args[i]\n return array\n}\n", "// Approach:\n//\n// 1. Get the minimatch set\n// 2. For each pattern in the set, PROCESS(pattern, false)\n// 3. Store matches per-set, then uniq them\n//\n// PROCESS(pattern, inGlobStar)\n// Get the first [n] items from pattern that are all strings\n// Join these together. This is PREFIX.\n// If there is no more remaining, then stat(PREFIX) and\n// add to matches if it succeeds. END.\n//\n// If inGlobStar and PREFIX is symlink and points to dir\n// set ENTRIES = []\n// else readdir(PREFIX) as ENTRIES\n// If fail, END\n//\n// with ENTRIES\n// If pattern[n] is GLOBSTAR\n// // handle the case where the globstar match is empty\n// // by pruning it out, and testing the resulting pattern\n// PROCESS(pattern[0..n] + pattern[n+1 .. $], false)\n// // handle other cases.\n// for ENTRY in ENTRIES (not dotfiles)\n// // attach globstar + tail onto the entry\n// // Mark that this entry is a globstar match\n// PROCESS(pattern[0..n] + ENTRY + pattern[n .. $], true)\n//\n// else // not globstar\n// for ENTRY in ENTRIES (not dotfiles, unless pattern[n] is dot)\n// Test ENTRY against pattern[n]\n// If fails, continue\n// If passes, PROCESS(pattern[0..n] + item + pattern[n+1 .. $])\n//\n// Caveat:\n// Cache all stats and readdirs results to minimize syscall. Since all\n// we ever care about is existence and directory-ness, we can just keep\n// `true` for files, and [children,...] for directories, or `false` for\n// things that don't exist.\n\nmodule.exports = glob\n\nvar fs = require('fs')\nvar rp = require('fs.realpath')\nvar minimatch = require('minimatch')\nvar Minimatch = minimatch.Minimatch\nvar inherits = require('inherits')\nvar EE = require('events').EventEmitter\nvar path = require('path')\nvar assert = require('assert')\nvar isAbsolute = require('path-is-absolute')\nvar globSync = require('./sync.js')\nvar common = require('./common.js')\nvar alphasort = common.alphasort\nvar alphasorti = common.alphasorti\nvar setopts = common.setopts\nvar ownProp = common.ownProp\nvar inflight = require('inflight')\nvar util = require('util')\nvar childrenIgnored = common.childrenIgnored\nvar isIgnored = common.isIgnored\n\nvar once = require('once')\n\nfunction glob (pattern, options, cb) {\n if (typeof options === 'function') cb = options, options = {}\n if (!options) options = {}\n\n if (options.sync) {\n if (cb)\n throw new TypeError('callback provided to sync glob')\n return globSync(pattern, options)\n }\n\n return new Glob(pattern, options, cb)\n}\n\nglob.sync = globSync\nvar GlobSync = glob.GlobSync = globSync.GlobSync\n\n// old api surface\nglob.glob = glob\n\nfunction extend (origin, add) {\n if (add === null || typeof add !== 'object') {\n return origin\n }\n\n var keys = Object.keys(add)\n var i = keys.length\n while (i--) {\n origin[keys[i]] = add[keys[i]]\n }\n return origin\n}\n\nglob.hasMagic = function (pattern, options_) {\n var options = extend({}, options_)\n options.noprocess = true\n\n var g = new Glob(pattern, options)\n var set = g.minimatch.set\n\n if (!pattern)\n return false\n\n if (set.length > 1)\n return true\n\n for (var j = 0; j < set[0].length; j++) {\n if (typeof set[0][j] !== 'string')\n return true\n }\n\n return false\n}\n\nglob.Glob = Glob\ninherits(Glob, EE)\nfunction Glob (pattern, options, cb) {\n if (typeof options === 'function') {\n cb = options\n options = null\n }\n\n if (options && options.sync) {\n if (cb)\n throw new TypeError('callback provided to sync glob')\n return new GlobSync(pattern, options)\n }\n\n if (!(this instanceof Glob))\n return new Glob(pattern, options, cb)\n\n setopts(this, pattern, options)\n this._didRealPath = false\n\n // process each pattern in the minimatch set\n var n = this.minimatch.set.length\n\n // The matches are stored as {: true,...} so that\n // duplicates are automagically pruned.\n // Later, we do an Object.keys() on these.\n // Keep them as a list so we can fill in when nonull is set.\n this.matches = new Array(n)\n\n if (typeof cb === 'function') {\n cb = once(cb)\n this.on('error', cb)\n this.on('end', function (matches) {\n cb(null, matches)\n })\n }\n\n var self = this\n this._processing = 0\n\n this._emitQueue = []\n this._processQueue = []\n this.paused = false\n\n if (this.noprocess)\n return this\n\n if (n === 0)\n return done()\n\n var sync = true\n for (var i = 0; i < n; i ++) {\n this._process(this.minimatch.set[i], i, false, done)\n }\n sync = false\n\n function done () {\n --self._processing\n if (self._processing <= 0) {\n if (sync) {\n process.nextTick(function () {\n self._finish()\n })\n } else {\n self._finish()\n }\n }\n }\n}\n\nGlob.prototype._finish = function () {\n assert(this instanceof Glob)\n if (this.aborted)\n return\n\n if (this.realpath && !this._didRealpath)\n return this._realpath()\n\n common.finish(this)\n this.emit('end', this.found)\n}\n\nGlob.prototype._realpath = function () {\n if (this._didRealpath)\n return\n\n this._didRealpath = true\n\n var n = this.matches.length\n if (n === 0)\n return this._finish()\n\n var self = this\n for (var i = 0; i < this.matches.length; i++)\n this._realpathSet(i, next)\n\n function next () {\n if (--n === 0)\n self._finish()\n }\n}\n\nGlob.prototype._realpathSet = function (index, cb) {\n var matchset = this.matches[index]\n if (!matchset)\n return cb()\n\n var found = Object.keys(matchset)\n var self = this\n var n = found.length\n\n if (n === 0)\n return cb()\n\n var set = this.matches[index] = Object.create(null)\n found.forEach(function (p, i) {\n // If there's a problem with the stat, then it means that\n // one or more of the links in the realpath couldn't be\n // resolved. just return the abs value in that case.\n p = self._makeAbs(p)\n rp.realpath(p, self.realpathCache, function (er, real) {\n if (!er)\n set[real] = true\n else if (er.syscall === 'stat')\n set[p] = true\n else\n self.emit('error', er) // srsly wtf right here\n\n if (--n === 0) {\n self.matches[index] = set\n cb()\n }\n })\n })\n}\n\nGlob.prototype._mark = function (p) {\n return common.mark(this, p)\n}\n\nGlob.prototype._makeAbs = function (f) {\n return common.makeAbs(this, f)\n}\n\nGlob.prototype.abort = function () {\n this.aborted = true\n this.emit('abort')\n}\n\nGlob.prototype.pause = function () {\n if (!this.paused) {\n this.paused = true\n this.emit('pause')\n }\n}\n\nGlob.prototype.resume = function () {\n if (this.paused) {\n this.emit('resume')\n this.paused = false\n if (this._emitQueue.length) {\n var eq = this._emitQueue.slice(0)\n this._emitQueue.length = 0\n for (var i = 0; i < eq.length; i ++) {\n var e = eq[i]\n this._emitMatch(e[0], e[1])\n }\n }\n if (this._processQueue.length) {\n var pq = this._processQueue.slice(0)\n this._processQueue.length = 0\n for (var i = 0; i < pq.length; i ++) {\n var p = pq[i]\n this._processing--\n this._process(p[0], p[1], p[2], p[3])\n }\n }\n }\n}\n\nGlob.prototype._process = function (pattern, index, inGlobStar, cb) {\n assert(this instanceof Glob)\n assert(typeof cb === 'function')\n\n if (this.aborted)\n return\n\n this._processing++\n if (this.paused) {\n this._processQueue.push([pattern, index, inGlobStar, cb])\n return\n }\n\n //console.error('PROCESS %d', this._processing, pattern)\n\n // Get the first [n] parts of pattern that are all strings.\n var n = 0\n while (typeof pattern[n] === 'string') {\n n ++\n }\n // now n is the index of the first one that is *not* a string.\n\n // see if there's anything else\n var prefix\n switch (n) {\n // if not, then this is rather simple\n case pattern.length:\n this._processSimple(pattern.join('/'), index, cb)\n return\n\n case 0:\n // pattern *starts* with some non-trivial item.\n // going to readdir(cwd), but not include the prefix in matches.\n prefix = null\n break\n\n default:\n // pattern has some string bits in the front.\n // whatever it starts with, whether that's 'absolute' like /foo/bar,\n // or 'relative' like '../baz'\n prefix = pattern.slice(0, n).join('/')\n break\n }\n\n var remain = pattern.slice(n)\n\n // get the list of entries.\n var read\n if (prefix === null)\n read = '.'\n else if (isAbsolute(prefix) || isAbsolute(pattern.join('/'))) {\n if (!prefix || !isAbsolute(prefix))\n prefix = '/' + prefix\n read = prefix\n } else\n read = prefix\n\n var abs = this._makeAbs(read)\n\n //if ignored, skip _processing\n if (childrenIgnored(this, read))\n return cb()\n\n var isGlobStar = remain[0] === minimatch.GLOBSTAR\n if (isGlobStar)\n this._processGlobStar(prefix, read, abs, remain, index, inGlobStar, cb)\n else\n this._processReaddir(prefix, read, abs, remain, index, inGlobStar, cb)\n}\n\nGlob.prototype._processReaddir = function (prefix, read, abs, remain, index, inGlobStar, cb) {\n var self = this\n this._readdir(abs, inGlobStar, function (er, entries) {\n return self._processReaddir2(prefix, read, abs, remain, index, inGlobStar, entries, cb)\n })\n}\n\nGlob.prototype._processReaddir2 = function (prefix, read, abs, remain, index, inGlobStar, entries, cb) {\n\n // if the abs isn't a dir, then nothing can match!\n if (!entries)\n return cb()\n\n // It will only match dot entries if it starts with a dot, or if\n // dot is set. Stuff like @(.foo|.bar) isn't allowed.\n var pn = remain[0]\n var negate = !!this.minimatch.negate\n var rawGlob = pn._glob\n var dotOk = this.dot || rawGlob.charAt(0) === '.'\n\n var matchedEntries = []\n for (var i = 0; i < entries.length; i++) {\n var e = entries[i]\n if (e.charAt(0) !== '.' || dotOk) {\n var m\n if (negate && !prefix) {\n m = !e.match(pn)\n } else {\n m = e.match(pn)\n }\n if (m)\n matchedEntries.push(e)\n }\n }\n\n //console.error('prd2', prefix, entries, remain[0]._glob, matchedEntries)\n\n var len = matchedEntries.length\n // If there are no matched entries, then nothing matches.\n if (len === 0)\n return cb()\n\n // if this is the last remaining pattern bit, then no need for\n // an additional stat *unless* the user has specified mark or\n // stat explicitly. We know they exist, since readdir returned\n // them.\n\n if (remain.length === 1 && !this.mark && !this.stat) {\n if (!this.matches[index])\n this.matches[index] = Object.create(null)\n\n for (var i = 0; i < len; i ++) {\n var e = matchedEntries[i]\n if (prefix) {\n if (prefix !== '/')\n e = prefix + '/' + e\n else\n e = prefix + e\n }\n\n if (e.charAt(0) === '/' && !this.nomount) {\n e = path.join(this.root, e)\n }\n this._emitMatch(index, e)\n }\n // This was the last one, and no stats were needed\n return cb()\n }\n\n // now test all matched entries as stand-ins for that part\n // of the pattern.\n remain.shift()\n for (var i = 0; i < len; i ++) {\n var e = matchedEntries[i]\n var newPattern\n if (prefix) {\n if (prefix !== '/')\n e = prefix + '/' + e\n else\n e = prefix + e\n }\n this._process([e].concat(remain), index, inGlobStar, cb)\n }\n cb()\n}\n\nGlob.prototype._emitMatch = function (index, e) {\n if (this.aborted)\n return\n\n if (isIgnored(this, e))\n return\n\n if (this.paused) {\n this._emitQueue.push([index, e])\n return\n }\n\n var abs = isAbsolute(e) ? e : this._makeAbs(e)\n\n if (this.mark)\n e = this._mark(e)\n\n if (this.absolute)\n e = abs\n\n if (this.matches[index][e])\n return\n\n if (this.nodir) {\n var c = this.cache[abs]\n if (c === 'DIR' || Array.isArray(c))\n return\n }\n\n this.matches[index][e] = true\n\n var st = this.statCache[abs]\n if (st)\n this.emit('stat', e, st)\n\n this.emit('match', e)\n}\n\nGlob.prototype._readdirInGlobStar = function (abs, cb) {\n if (this.aborted)\n return\n\n // follow all symlinked directories forever\n // just proceed as if this is a non-globstar situation\n if (this.follow)\n return this._readdir(abs, false, cb)\n\n var lstatkey = 'lstat\\0' + abs\n var self = this\n var lstatcb = inflight(lstatkey, lstatcb_)\n\n if (lstatcb)\n fs.lstat(abs, lstatcb)\n\n function lstatcb_ (er, lstat) {\n if (er && er.code === 'ENOENT')\n return cb()\n\n var isSym = lstat && lstat.isSymbolicLink()\n self.symlinks[abs] = isSym\n\n // If it's not a symlink or a dir, then it's definitely a regular file.\n // don't bother doing a readdir in that case.\n if (!isSym && lstat && !lstat.isDirectory()) {\n self.cache[abs] = 'FILE'\n cb()\n } else\n self._readdir(abs, false, cb)\n }\n}\n\nGlob.prototype._readdir = function (abs, inGlobStar, cb) {\n if (this.aborted)\n return\n\n cb = inflight('readdir\\0'+abs+'\\0'+inGlobStar, cb)\n if (!cb)\n return\n\n //console.error('RD %j %j', +inGlobStar, abs)\n if (inGlobStar && !ownProp(this.symlinks, abs))\n return this._readdirInGlobStar(abs, cb)\n\n if (ownProp(this.cache, abs)) {\n var c = this.cache[abs]\n if (!c || c === 'FILE')\n return cb()\n\n if (Array.isArray(c))\n return cb(null, c)\n }\n\n var self = this\n fs.readdir(abs, readdirCb(this, abs, cb))\n}\n\nfunction readdirCb (self, abs, cb) {\n return function (er, entries) {\n if (er)\n self._readdirError(abs, er, cb)\n else\n self._readdirEntries(abs, entries, cb)\n }\n}\n\nGlob.prototype._readdirEntries = function (abs, entries, cb) {\n if (this.aborted)\n return\n\n // if we haven't asked to stat everything, then just\n // assume that everything in there exists, so we can avoid\n // having to stat it a second time.\n if (!this.mark && !this.stat) {\n for (var i = 0; i < entries.length; i ++) {\n var e = entries[i]\n if (abs === '/')\n e = abs + e\n else\n e = abs + '/' + e\n this.cache[e] = true\n }\n }\n\n this.cache[abs] = entries\n return cb(null, entries)\n}\n\nGlob.prototype._readdirError = function (f, er, cb) {\n if (this.aborted)\n return\n\n // handle errors, and cache the information\n switch (er.code) {\n case 'ENOTSUP': // https://github.com/isaacs/node-glob/issues/205\n case 'ENOTDIR': // totally normal. means it *does* exist.\n var abs = this._makeAbs(f)\n this.cache[abs] = 'FILE'\n if (abs === this.cwdAbs) {\n var error = new Error(er.code + ' invalid cwd ' + this.cwd)\n error.path = this.cwd\n error.code = er.code\n this.emit('error', error)\n this.abort()\n }\n break\n\n case 'ENOENT': // not terribly unusual\n case 'ELOOP':\n case 'ENAMETOOLONG':\n case 'UNKNOWN':\n this.cache[this._makeAbs(f)] = false\n break\n\n default: // some unusual error. Treat as failure.\n this.cache[this._makeAbs(f)] = false\n if (this.strict) {\n this.emit('error', er)\n // If the error is handled, then we abort\n // if not, we threw out of here\n this.abort()\n }\n if (!this.silent)\n console.error('glob error', er)\n break\n }\n\n return cb()\n}\n\nGlob.prototype._processGlobStar = function (prefix, read, abs, remain, index, inGlobStar, cb) {\n var self = this\n this._readdir(abs, inGlobStar, function (er, entries) {\n self._processGlobStar2(prefix, read, abs, remain, index, inGlobStar, entries, cb)\n })\n}\n\n\nGlob.prototype._processGlobStar2 = function (prefix, read, abs, remain, index, inGlobStar, entries, cb) {\n //console.error('pgs2', prefix, remain[0], entries)\n\n // no entries means not a dir, so it can never have matches\n // foo.txt/** doesn't match foo.txt\n if (!entries)\n return cb()\n\n // test without the globstar, and with every child both below\n // and replacing the globstar.\n var remainWithoutGlobStar = remain.slice(1)\n var gspref = prefix ? [ prefix ] : []\n var noGlobStar = gspref.concat(remainWithoutGlobStar)\n\n // the noGlobStar pattern exits the inGlobStar state\n this._process(noGlobStar, index, false, cb)\n\n var isSym = this.symlinks[abs]\n var len = entries.length\n\n // If it's a symlink, and we're in a globstar, then stop\n if (isSym && inGlobStar)\n return cb()\n\n for (var i = 0; i < len; i++) {\n var e = entries[i]\n if (e.charAt(0) === '.' && !this.dot)\n continue\n\n // these two cases enter the inGlobStar state\n var instead = gspref.concat(entries[i], remainWithoutGlobStar)\n this._process(instead, index, true, cb)\n\n var below = gspref.concat(entries[i], remain)\n this._process(below, index, true, cb)\n }\n\n cb()\n}\n\nGlob.prototype._processSimple = function (prefix, index, cb) {\n // XXX review this. Shouldn't it be doing the mounting etc\n // before doing stat? kinda weird?\n var self = this\n this._stat(prefix, function (er, exists) {\n self._processSimple2(prefix, index, er, exists, cb)\n })\n}\nGlob.prototype._processSimple2 = function (prefix, index, er, exists, cb) {\n\n //console.error('ps2', prefix, exists)\n\n if (!this.matches[index])\n this.matches[index] = Object.create(null)\n\n // If it doesn't exist, then just mark the lack of results\n if (!exists)\n return cb()\n\n if (prefix && isAbsolute(prefix) && !this.nomount) {\n var trail = /[\\/\\\\]$/.test(prefix)\n if (prefix.charAt(0) === '/') {\n prefix = path.join(this.root, prefix)\n } else {\n prefix = path.resolve(this.root, prefix)\n if (trail)\n prefix += '/'\n }\n }\n\n if (process.platform === 'win32')\n prefix = prefix.replace(/\\\\/g, '/')\n\n // Mark this as a match\n this._emitMatch(index, prefix)\n cb()\n}\n\n// Returns either 'DIR', 'FILE', or false\nGlob.prototype._stat = function (f, cb) {\n var abs = this._makeAbs(f)\n var needDir = f.slice(-1) === '/'\n\n if (f.length > this.maxLength)\n return cb()\n\n if (!this.stat && ownProp(this.cache, abs)) {\n var c = this.cache[abs]\n\n if (Array.isArray(c))\n c = 'DIR'\n\n // It exists, but maybe not how we need it\n if (!needDir || c === 'DIR')\n return cb(null, c)\n\n if (needDir && c === 'FILE')\n return cb()\n\n // otherwise we have to stat, because maybe c=true\n // if we know it exists, but not what it is.\n }\n\n var exists\n var stat = this.statCache[abs]\n if (stat !== undefined) {\n if (stat === false)\n return cb(null, stat)\n else {\n var type = stat.isDirectory() ? 'DIR' : 'FILE'\n if (needDir && type === 'FILE')\n return cb()\n else\n return cb(null, type, stat)\n }\n }\n\n var self = this\n var statcb = inflight('stat\\0' + abs, lstatcb_)\n if (statcb)\n fs.lstat(abs, statcb)\n\n function lstatcb_ (er, lstat) {\n if (lstat && lstat.isSymbolicLink()) {\n // If it's a symlink, then treat it as the target, unless\n // the target does not exist, then treat it as a file.\n return fs.stat(abs, function (er, stat) {\n if (er)\n self._stat2(f, abs, null, lstat, cb)\n else\n self._stat2(f, abs, er, stat, cb)\n })\n } else {\n self._stat2(f, abs, er, lstat, cb)\n }\n }\n}\n\nGlob.prototype._stat2 = function (f, abs, er, stat, cb) {\n if (er && (er.code === 'ENOENT' || er.code === 'ENOTDIR')) {\n this.statCache[abs] = false\n return cb()\n }\n\n var needDir = f.slice(-1) === '/'\n this.statCache[abs] = stat\n\n if (abs.slice(-1) === '/' && stat && !stat.isDirectory())\n return cb(null, false, stat)\n\n var c = true\n if (stat)\n c = stat.isDirectory() ? 'DIR' : 'FILE'\n this.cache[abs] = this.cache[abs] || c\n\n if (needDir && c === 'FILE')\n return cb()\n\n return cb(null, c, stat)\n}\n", "const assert = require(\"assert\")\nconst path = require(\"path\")\nconst fs = require(\"fs\")\nlet glob = undefined\ntry {\n glob = require(\"glob\")\n} catch (_err) {\n // treat glob as optional.\n}\n\nconst defaultGlobOpts = {\n nosort: true,\n silent: true\n}\n\n// for EMFILE handling\nlet timeout = 0\n\nconst isWindows = (process.platform === \"win32\")\n\nconst defaults = options => {\n const methods = [\n 'unlink',\n 'chmod',\n 'stat',\n 'lstat',\n 'rmdir',\n 'readdir'\n ]\n methods.forEach(m => {\n options[m] = options[m] || fs[m]\n m = m + 'Sync'\n options[m] = options[m] || fs[m]\n })\n\n options.maxBusyTries = options.maxBusyTries || 3\n options.emfileWait = options.emfileWait || 1000\n if (options.glob === false) {\n options.disableGlob = true\n }\n if (options.disableGlob !== true && glob === undefined) {\n throw Error('glob dependency not found, set `options.disableGlob = true` if intentional')\n }\n options.disableGlob = options.disableGlob || false\n options.glob = options.glob || defaultGlobOpts\n}\n\nconst rimraf = (p, options, cb) => {\n if (typeof options === 'function') {\n cb = options\n options = {}\n }\n\n assert(p, 'rimraf: missing path')\n assert.equal(typeof p, 'string', 'rimraf: path should be a string')\n assert.equal(typeof cb, 'function', 'rimraf: callback function required')\n assert(options, 'rimraf: invalid options argument provided')\n assert.equal(typeof options, 'object', 'rimraf: options should be object')\n\n defaults(options)\n\n let busyTries = 0\n let errState = null\n let n = 0\n\n const next = (er) => {\n errState = errState || er\n if (--n === 0)\n cb(errState)\n }\n\n const afterGlob = (er, results) => {\n if (er)\n return cb(er)\n\n n = results.length\n if (n === 0)\n return cb()\n\n results.forEach(p => {\n const CB = (er) => {\n if (er) {\n if ((er.code === \"EBUSY\" || er.code === \"ENOTEMPTY\" || er.code === \"EPERM\") &&\n busyTries < options.maxBusyTries) {\n busyTries ++\n // try again, with the same exact callback as this one.\n return setTimeout(() => rimraf_(p, options, CB), busyTries * 100)\n }\n\n // this one won't happen if graceful-fs is used.\n if (er.code === \"EMFILE\" && timeout < options.emfileWait) {\n return setTimeout(() => rimraf_(p, options, CB), timeout ++)\n }\n\n // already gone\n if (er.code === \"ENOENT\") er = null\n }\n\n timeout = 0\n next(er)\n }\n rimraf_(p, options, CB)\n })\n }\n\n if (options.disableGlob || !glob.hasMagic(p))\n return afterGlob(null, [p])\n\n options.lstat(p, (er, stat) => {\n if (!er)\n return afterGlob(null, [p])\n\n glob(p, options.glob, afterGlob)\n })\n\n}\n\n// Two possible strategies.\n// 1. Assume it's a file. unlink it, then do the dir stuff on EPERM or EISDIR\n// 2. Assume it's a directory. readdir, then do the file stuff on ENOTDIR\n//\n// Both result in an extra syscall when you guess wrong. However, there\n// are likely far more normal files in the world than directories. This\n// is based on the assumption that a the average number of files per\n// directory is >= 1.\n//\n// If anyone ever complains about this, then I guess the strategy could\n// be made configurable somehow. But until then, YAGNI.\nconst rimraf_ = (p, options, cb) => {\n assert(p)\n assert(options)\n assert(typeof cb === 'function')\n\n // sunos lets the root user unlink directories, which is... weird.\n // so we have to lstat here and make sure it's not a dir.\n options.lstat(p, (er, st) => {\n if (er && er.code === \"ENOENT\")\n return cb(null)\n\n // Windows can EPERM on stat. Life is suffering.\n if (er && er.code === \"EPERM\" && isWindows)\n fixWinEPERM(p, options, er, cb)\n\n if (st && st.isDirectory())\n return rmdir(p, options, er, cb)\n\n options.unlink(p, er => {\n if (er) {\n if (er.code === \"ENOENT\")\n return cb(null)\n if (er.code === \"EPERM\")\n return (isWindows)\n ? fixWinEPERM(p, options, er, cb)\n : rmdir(p, options, er, cb)\n if (er.code === \"EISDIR\")\n return rmdir(p, options, er, cb)\n }\n return cb(er)\n })\n })\n}\n\nconst fixWinEPERM = (p, options, er, cb) => {\n assert(p)\n assert(options)\n assert(typeof cb === 'function')\n\n options.chmod(p, 0o666, er2 => {\n if (er2)\n cb(er2.code === \"ENOENT\" ? null : er)\n else\n options.stat(p, (er3, stats) => {\n if (er3)\n cb(er3.code === \"ENOENT\" ? null : er)\n else if (stats.isDirectory())\n rmdir(p, options, er, cb)\n else\n options.unlink(p, cb)\n })\n })\n}\n\nconst fixWinEPERMSync = (p, options, er) => {\n assert(p)\n assert(options)\n\n try {\n options.chmodSync(p, 0o666)\n } catch (er2) {\n if (er2.code === \"ENOENT\")\n return\n else\n throw er\n }\n\n let stats\n try {\n stats = options.statSync(p)\n } catch (er3) {\n if (er3.code === \"ENOENT\")\n return\n else\n throw er\n }\n\n if (stats.isDirectory())\n rmdirSync(p, options, er)\n else\n options.unlinkSync(p)\n}\n\nconst rmdir = (p, options, originalEr, cb) => {\n assert(p)\n assert(options)\n assert(typeof cb === 'function')\n\n // try to rmdir first, and only readdir on ENOTEMPTY or EEXIST (SunOS)\n // if we guessed wrong, and it's not a directory, then\n // raise the original error.\n options.rmdir(p, er => {\n if (er && (er.code === \"ENOTEMPTY\" || er.code === \"EEXIST\" || er.code === \"EPERM\"))\n rmkids(p, options, cb)\n else if (er && er.code === \"ENOTDIR\")\n cb(originalEr)\n else\n cb(er)\n })\n}\n\nconst rmkids = (p, options, cb) => {\n assert(p)\n assert(options)\n assert(typeof cb === 'function')\n\n options.readdir(p, (er, files) => {\n if (er)\n return cb(er)\n let n = files.length\n if (n === 0)\n return options.rmdir(p, cb)\n let errState\n files.forEach(f => {\n rimraf(path.join(p, f), options, er => {\n if (errState)\n return\n if (er)\n return cb(errState = er)\n if (--n === 0)\n options.rmdir(p, cb)\n })\n })\n })\n}\n\n// this looks simpler, and is strictly *faster*, but will\n// tie up the JavaScript thread and fail on excessively\n// deep directory trees.\nconst rimrafSync = (p, options) => {\n options = options || {}\n defaults(options)\n\n assert(p, 'rimraf: missing path')\n assert.equal(typeof p, 'string', 'rimraf: path should be a string')\n assert(options, 'rimraf: missing options')\n assert.equal(typeof options, 'object', 'rimraf: options should be object')\n\n let results\n\n if (options.disableGlob || !glob.hasMagic(p)) {\n results = [p]\n } else {\n try {\n options.lstatSync(p)\n results = [p]\n } catch (er) {\n results = glob.sync(p, options.glob)\n }\n }\n\n if (!results.length)\n return\n\n for (let i = 0; i < results.length; i++) {\n const p = results[i]\n\n let st\n try {\n st = options.lstatSync(p)\n } catch (er) {\n if (er.code === \"ENOENT\")\n return\n\n // Windows can EPERM on stat. Life is suffering.\n if (er.code === \"EPERM\" && isWindows)\n fixWinEPERMSync(p, options, er)\n }\n\n try {\n // sunos lets the root user unlink directories, which is... weird.\n if (st && st.isDirectory())\n rmdirSync(p, options, null)\n else\n options.unlinkSync(p)\n } catch (er) {\n if (er.code === \"ENOENT\")\n return\n if (er.code === \"EPERM\")\n return isWindows ? fixWinEPERMSync(p, options, er) : rmdirSync(p, options, er)\n if (er.code !== \"EISDIR\")\n throw er\n\n rmdirSync(p, options, er)\n }\n }\n}\n\nconst rmdirSync = (p, options, originalEr) => {\n assert(p)\n assert(options)\n\n try {\n options.rmdirSync(p)\n } catch (er) {\n if (er.code === \"ENOENT\")\n return\n if (er.code === \"ENOTDIR\")\n throw originalEr\n if (er.code === \"ENOTEMPTY\" || er.code === \"EEXIST\" || er.code === \"EPERM\")\n rmkidsSync(p, options)\n }\n}\n\nconst rmkidsSync = (p, options) => {\n assert(p)\n assert(options)\n options.readdirSync(p).forEach(f => rimrafSync(path.join(p, f), options))\n\n // We only end up here once we got ENOTEMPTY at least once, and\n // at this point, we are guaranteed to have removed all the kids.\n // So, we know that it won't be ENOENT or ENOTDIR or anything else.\n // try really hard to delete stuff on windows, because it has a\n // PROFOUNDLY annoying habit of not closing handles promptly when\n // files are deleted, resulting in spurious ENOTEMPTY errors.\n const retries = isWindows ? 100 : 1\n let i = 0\n do {\n let threw = true\n try {\n const ret = options.rmdirSync(p, options)\n threw = false\n return ret\n } finally {\n if (++i < retries && threw)\n continue\n }\n } while (true)\n}\n\nmodule.exports = rimraf\nrimraf.sync = rimrafSync\n", "/*!\n * Tmp\n *\n * Copyright (c) 2011-2017 KARASZI Istvan \n *\n * MIT Licensed\n */\n\n/*\n * Module dependencies.\n */\nconst fs = require('fs');\nconst os = require('os');\nconst path = require('path');\nconst crypto = require('crypto');\nconst _c = { fs: fs.constants, os: os.constants };\nconst rimraf = require('rimraf');\n\n/*\n * The working inner variables.\n */\nconst\n // the random characters to choose from\n RANDOM_CHARS = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz',\n\n TEMPLATE_PATTERN = /XXXXXX/,\n\n DEFAULT_TRIES = 3,\n\n CREATE_FLAGS = (_c.O_CREAT || _c.fs.O_CREAT) | (_c.O_EXCL || _c.fs.O_EXCL) | (_c.O_RDWR || _c.fs.O_RDWR),\n\n // constants are off on the windows platform and will not match the actual errno codes\n IS_WIN32 = os.platform() === 'win32',\n EBADF = _c.EBADF || _c.os.errno.EBADF,\n ENOENT = _c.ENOENT || _c.os.errno.ENOENT,\n\n DIR_MODE = 0o700 /* 448 */,\n FILE_MODE = 0o600 /* 384 */,\n\n EXIT = 'exit',\n\n // this will hold the objects need to be removed on exit\n _removeObjects = [],\n\n // API change in fs.rmdirSync leads to error when passing in a second parameter, e.g. the callback\n FN_RMDIR_SYNC = fs.rmdirSync.bind(fs),\n FN_RIMRAF_SYNC = rimraf.sync;\n\nlet\n _gracefulCleanup = false;\n\n/**\n * Gets a temporary file name.\n *\n * @param {(Options|tmpNameCallback)} options options or callback\n * @param {?tmpNameCallback} callback the callback function\n */\nfunction tmpName(options, callback) {\n const\n args = _parseArguments(options, callback),\n opts = args[0],\n cb = args[1];\n\n try {\n _assertAndSanitizeOptions(opts);\n } catch (err) {\n return cb(err);\n }\n\n let tries = opts.tries;\n (function _getUniqueName() {\n try {\n const name = _generateTmpName(opts);\n\n // check whether the path exists then retry if needed\n fs.stat(name, function (err) {\n /* istanbul ignore else */\n if (!err) {\n /* istanbul ignore else */\n if (tries-- > 0) return _getUniqueName();\n\n return cb(new Error('Could not get a unique tmp filename, max tries reached ' + name));\n }\n\n cb(null, name);\n });\n } catch (err) {\n cb(err);\n }\n }());\n}\n\n/**\n * Synchronous version of tmpName.\n *\n * @param {Object} options\n * @returns {string} the generated random name\n * @throws {Error} if the options are invalid or could not generate a filename\n */\nfunction tmpNameSync(options) {\n const\n args = _parseArguments(options),\n opts = args[0];\n\n _assertAndSanitizeOptions(opts);\n\n let tries = opts.tries;\n do {\n const name = _generateTmpName(opts);\n try {\n fs.statSync(name);\n } catch (e) {\n return name;\n }\n } while (tries-- > 0);\n\n throw new Error('Could not get a unique tmp filename, max tries reached');\n}\n\n/**\n * Creates and opens a temporary file.\n *\n * @param {(Options|null|undefined|fileCallback)} options the config options or the callback function or null or undefined\n * @param {?fileCallback} callback\n */\nfunction file(options, callback) {\n const\n args = _parseArguments(options, callback),\n opts = args[0],\n cb = args[1];\n\n // gets a temporary filename\n tmpName(opts, function _tmpNameCreated(err, name) {\n /* istanbul ignore else */\n if (err) return cb(err);\n\n // create and open the file\n fs.open(name, CREATE_FLAGS, opts.mode || FILE_MODE, function _fileCreated(err, fd) {\n /* istanbu ignore else */\n if (err) return cb(err);\n\n if (opts.discardDescriptor) {\n return fs.close(fd, function _discardCallback(possibleErr) {\n // the chance of getting an error on close here is rather low and might occur in the most edgiest cases only\n return cb(possibleErr, name, undefined, _prepareTmpFileRemoveCallback(name, -1, opts, false));\n });\n } else {\n // detachDescriptor passes the descriptor whereas discardDescriptor closes it, either way, we no longer care\n // about the descriptor\n const discardOrDetachDescriptor = opts.discardDescriptor || opts.detachDescriptor;\n cb(null, name, fd, _prepareTmpFileRemoveCallback(name, discardOrDetachDescriptor ? -1 : fd, opts, false));\n }\n });\n });\n}\n\n/**\n * Synchronous version of file.\n *\n * @param {Options} options\n * @returns {FileSyncObject} object consists of name, fd and removeCallback\n * @throws {Error} if cannot create a file\n */\nfunction fileSync(options) {\n const\n args = _parseArguments(options),\n opts = args[0];\n\n const discardOrDetachDescriptor = opts.discardDescriptor || opts.detachDescriptor;\n const name = tmpNameSync(opts);\n var fd = fs.openSync(name, CREATE_FLAGS, opts.mode || FILE_MODE);\n /* istanbul ignore else */\n if (opts.discardDescriptor) {\n fs.closeSync(fd);\n fd = undefined;\n }\n\n return {\n name: name,\n fd: fd,\n removeCallback: _prepareTmpFileRemoveCallback(name, discardOrDetachDescriptor ? -1 : fd, opts, true)\n };\n}\n\n/**\n * Creates a temporary directory.\n *\n * @param {(Options|dirCallback)} options the options or the callback function\n * @param {?dirCallback} callback\n */\nfunction dir(options, callback) {\n const\n args = _parseArguments(options, callback),\n opts = args[0],\n cb = args[1];\n\n // gets a temporary filename\n tmpName(opts, function _tmpNameCreated(err, name) {\n /* istanbul ignore else */\n if (err) return cb(err);\n\n // create the directory\n fs.mkdir(name, opts.mode || DIR_MODE, function _dirCreated(err) {\n /* istanbul ignore else */\n if (err) return cb(err);\n\n cb(null, name, _prepareTmpDirRemoveCallback(name, opts, false));\n });\n });\n}\n\n/**\n * Synchronous version of dir.\n *\n * @param {Options} options\n * @returns {DirSyncObject} object consists of name and removeCallback\n * @throws {Error} if it cannot create a directory\n */\nfunction dirSync(options) {\n const\n args = _parseArguments(options),\n opts = args[0];\n\n const name = tmpNameSync(opts);\n fs.mkdirSync(name, opts.mode || DIR_MODE);\n\n return {\n name: name,\n removeCallback: _prepareTmpDirRemoveCallback(name, opts, true)\n };\n}\n\n/**\n * Removes files asynchronously.\n *\n * @param {Object} fdPath\n * @param {Function} next\n * @private\n */\nfunction _removeFileAsync(fdPath, next) {\n const _handler = function (err) {\n if (err && !_isENOENT(err)) {\n // reraise any unanticipated error\n return next(err);\n }\n next();\n };\n\n if (0 <= fdPath[0])\n fs.close(fdPath[0], function () {\n fs.unlink(fdPath[1], _handler);\n });\n else fs.unlink(fdPath[1], _handler);\n}\n\n/**\n * Removes files synchronously.\n *\n * @param {Object} fdPath\n * @private\n */\nfunction _removeFileSync(fdPath) {\n let rethrownException = null;\n try {\n if (0 <= fdPath[0]) fs.closeSync(fdPath[0]);\n } catch (e) {\n // reraise any unanticipated error\n if (!_isEBADF(e) && !_isENOENT(e)) throw e;\n } finally {\n try {\n fs.unlinkSync(fdPath[1]);\n }\n catch (e) {\n // reraise any unanticipated error\n if (!_isENOENT(e)) rethrownException = e;\n }\n }\n if (rethrownException !== null) {\n throw rethrownException;\n }\n}\n\n/**\n * Prepares the callback for removal of the temporary file.\n *\n * Returns either a sync callback or a async callback depending on whether\n * fileSync or file was called, which is expressed by the sync parameter.\n *\n * @param {string} name the path of the file\n * @param {number} fd file descriptor\n * @param {Object} opts\n * @param {boolean} sync\n * @returns {fileCallback | fileCallbackSync}\n * @private\n */\nfunction _prepareTmpFileRemoveCallback(name, fd, opts, sync) {\n const removeCallbackSync = _prepareRemoveCallback(_removeFileSync, [fd, name], sync);\n const removeCallback = _prepareRemoveCallback(_removeFileAsync, [fd, name], sync, removeCallbackSync);\n\n if (!opts.keep) _removeObjects.unshift(removeCallbackSync);\n\n return sync ? removeCallbackSync : removeCallback;\n}\n\n/**\n * Prepares the callback for removal of the temporary directory.\n *\n * Returns either a sync callback or a async callback depending on whether\n * tmpFileSync or tmpFile was called, which is expressed by the sync parameter.\n *\n * @param {string} name\n * @param {Object} opts\n * @param {boolean} sync\n * @returns {Function} the callback\n * @private\n */\nfunction _prepareTmpDirRemoveCallback(name, opts, sync) {\n const removeFunction = opts.unsafeCleanup ? rimraf : fs.rmdir.bind(fs);\n const removeFunctionSync = opts.unsafeCleanup ? FN_RIMRAF_SYNC : FN_RMDIR_SYNC;\n const removeCallbackSync = _prepareRemoveCallback(removeFunctionSync, name, sync);\n const removeCallback = _prepareRemoveCallback(removeFunction, name, sync, removeCallbackSync);\n if (!opts.keep) _removeObjects.unshift(removeCallbackSync);\n\n return sync ? removeCallbackSync : removeCallback;\n}\n\n/**\n * Creates a guarded function wrapping the removeFunction call.\n *\n * The cleanup callback is save to be called multiple times.\n * Subsequent invocations will be ignored.\n *\n * @param {Function} removeFunction\n * @param {string} fileOrDirName\n * @param {boolean} sync\n * @param {cleanupCallbackSync?} cleanupCallbackSync\n * @returns {cleanupCallback | cleanupCallbackSync}\n * @private\n */\nfunction _prepareRemoveCallback(removeFunction, fileOrDirName, sync, cleanupCallbackSync) {\n let called = false;\n\n // if sync is true, the next parameter will be ignored\n return function _cleanupCallback(next) {\n\n /* istanbul ignore else */\n if (!called) {\n // remove cleanupCallback from cache\n const toRemove = cleanupCallbackSync || _cleanupCallback;\n const index = _removeObjects.indexOf(toRemove);\n /* istanbul ignore else */\n if (index >= 0) _removeObjects.splice(index, 1);\n\n called = true;\n if (sync || removeFunction === FN_RMDIR_SYNC || removeFunction === FN_RIMRAF_SYNC) {\n return removeFunction(fileOrDirName);\n } else {\n return removeFunction(fileOrDirName, next || function() {});\n }\n }\n };\n}\n\n/**\n * The garbage collector.\n *\n * @private\n */\nfunction _garbageCollector() {\n /* istanbul ignore else */\n if (!_gracefulCleanup) return;\n\n // the function being called removes itself from _removeObjects,\n // loop until _removeObjects is empty\n while (_removeObjects.length) {\n try {\n _removeObjects[0]();\n } catch (e) {\n // already removed?\n }\n }\n}\n\n/**\n * Random name generator based on crypto.\n * Adapted from http://blog.tompawlak.org/how-to-generate-random-values-nodejs-javascript\n *\n * @param {number} howMany\n * @returns {string} the generated random name\n * @private\n */\nfunction _randomChars(howMany) {\n let\n value = [],\n rnd = null;\n\n // make sure that we do not fail because we ran out of entropy\n try {\n rnd = crypto.randomBytes(howMany);\n } catch (e) {\n rnd = crypto.pseudoRandomBytes(howMany);\n }\n\n for (var i = 0; i < howMany; i++) {\n value.push(RANDOM_CHARS[rnd[i] % RANDOM_CHARS.length]);\n }\n\n return value.join('');\n}\n\n/**\n * Helper which determines whether a string s is blank, that is undefined, or empty or null.\n *\n * @private\n * @param {string} s\n * @returns {Boolean} true whether the string s is blank, false otherwise\n */\nfunction _isBlank(s) {\n return s === null || _isUndefined(s) || !s.trim();\n}\n\n/**\n * Checks whether the `obj` parameter is defined or not.\n *\n * @param {Object} obj\n * @returns {boolean} true if the object is undefined\n * @private\n */\nfunction _isUndefined(obj) {\n return typeof obj === 'undefined';\n}\n\n/**\n * Parses the function arguments.\n *\n * This function helps to have optional arguments.\n *\n * @param {(Options|null|undefined|Function)} options\n * @param {?Function} callback\n * @returns {Array} parsed arguments\n * @private\n */\nfunction _parseArguments(options, callback) {\n /* istanbul ignore else */\n if (typeof options === 'function') {\n return [{}, options];\n }\n\n /* istanbul ignore else */\n if (_isUndefined(options)) {\n return [{}, callback];\n }\n\n // copy options so we do not leak the changes we make internally\n const actualOptions = {};\n for (const key of Object.getOwnPropertyNames(options)) {\n actualOptions[key] = options[key];\n }\n\n return [actualOptions, callback];\n}\n\n/**\n * Generates a new temporary name.\n *\n * @param {Object} opts\n * @returns {string} the new random name according to opts\n * @private\n */\nfunction _generateTmpName(opts) {\n\n const tmpDir = opts.tmpdir;\n\n /* istanbul ignore else */\n if (!_isUndefined(opts.name))\n return path.join(tmpDir, opts.dir, opts.name);\n\n /* istanbul ignore else */\n if (!_isUndefined(opts.template))\n return path.join(tmpDir, opts.dir, opts.template).replace(TEMPLATE_PATTERN, _randomChars(6));\n\n // prefix and postfix\n const name = [\n opts.prefix ? opts.prefix : 'tmp',\n '-',\n process.pid,\n '-',\n _randomChars(12),\n opts.postfix ? '-' + opts.postfix : ''\n ].join('');\n\n return path.join(tmpDir, opts.dir, name);\n}\n\n/**\n * Asserts whether the specified options are valid, also sanitizes options and provides sane defaults for missing\n * options.\n *\n * @param {Options} options\n * @private\n */\nfunction _assertAndSanitizeOptions(options) {\n\n options.tmpdir = _getTmpDir(options);\n\n const tmpDir = options.tmpdir;\n\n /* istanbul ignore else */\n if (!_isUndefined(options.name))\n _assertIsRelative(options.name, 'name', tmpDir);\n /* istanbul ignore else */\n if (!_isUndefined(options.dir))\n _assertIsRelative(options.dir, 'dir', tmpDir);\n /* istanbul ignore else */\n if (!_isUndefined(options.template)) {\n _assertIsRelative(options.template, 'template', tmpDir);\n if (!options.template.match(TEMPLATE_PATTERN))\n throw new Error(`Invalid template, found \"${options.template}\".`);\n }\n /* istanbul ignore else */\n if (!_isUndefined(options.tries) && isNaN(options.tries) || options.tries < 0)\n throw new Error(`Invalid tries, found \"${options.tries}\".`);\n\n // if a name was specified we will try once\n options.tries = _isUndefined(options.name) ? options.tries || DEFAULT_TRIES : 1;\n options.keep = !!options.keep;\n options.detachDescriptor = !!options.detachDescriptor;\n options.discardDescriptor = !!options.discardDescriptor;\n options.unsafeCleanup = !!options.unsafeCleanup;\n\n // sanitize dir, also keep (multiple) blanks if the user, purportedly sane, requests us to\n options.dir = _isUndefined(options.dir) ? '' : path.relative(tmpDir, _resolvePath(options.dir, tmpDir));\n options.template = _isUndefined(options.template) ? undefined : path.relative(tmpDir, _resolvePath(options.template, tmpDir));\n // sanitize further if template is relative to options.dir\n options.template = _isBlank(options.template) ? undefined : path.relative(options.dir, options.template);\n\n // for completeness' sake only, also keep (multiple) blanks if the user, purportedly sane, requests us to\n options.name = _isUndefined(options.name) ? undefined : _sanitizeName(options.name);\n options.prefix = _isUndefined(options.prefix) ? '' : options.prefix;\n options.postfix = _isUndefined(options.postfix) ? '' : options.postfix;\n}\n\n/**\n * Resolve the specified path name in respect to tmpDir.\n *\n * The specified name might include relative path components, e.g. ../\n * so we need to resolve in order to be sure that is is located inside tmpDir\n *\n * @param name\n * @param tmpDir\n * @returns {string}\n * @private\n */\nfunction _resolvePath(name, tmpDir) {\n const sanitizedName = _sanitizeName(name);\n if (sanitizedName.startsWith(tmpDir)) {\n return path.resolve(sanitizedName);\n } else {\n return path.resolve(path.join(tmpDir, sanitizedName));\n }\n}\n\n/**\n * Sanitize the specified path name by removing all quote characters.\n *\n * @param name\n * @returns {string}\n * @private\n */\nfunction _sanitizeName(name) {\n if (_isBlank(name)) {\n return name;\n }\n return name.replace(/[\"']/g, '');\n}\n\n/**\n * Asserts whether specified name is relative to the specified tmpDir.\n *\n * @param {string} name\n * @param {string} option\n * @param {string} tmpDir\n * @throws {Error}\n * @private\n */\nfunction _assertIsRelative(name, option, tmpDir) {\n if (option === 'name') {\n // assert that name is not absolute and does not contain a path\n if (path.isAbsolute(name))\n throw new Error(`${option} option must not contain an absolute path, found \"${name}\".`);\n // must not fail on valid . or .. or similar such constructs\n let basename = path.basename(name);\n if (basename === '..' || basename === '.' || basename !== name)\n throw new Error(`${option} option must not contain a path, found \"${name}\".`);\n }\n else { // if (option === 'dir' || option === 'template') {\n // assert that dir or template are relative to tmpDir\n if (path.isAbsolute(name) && !name.startsWith(tmpDir)) {\n throw new Error(`${option} option must be relative to \"${tmpDir}\", found \"${name}\".`);\n }\n let resolvedPath = _resolvePath(name, tmpDir);\n if (!resolvedPath.startsWith(tmpDir))\n throw new Error(`${option} option must be relative to \"${tmpDir}\", found \"${resolvedPath}\".`);\n }\n}\n\n/**\n * Helper for testing against EBADF to compensate changes made to Node 7.x under Windows.\n *\n * @private\n */\nfunction _isEBADF(error) {\n return _isExpectedError(error, -EBADF, 'EBADF');\n}\n\n/**\n * Helper for testing against ENOENT to compensate changes made to Node 7.x under Windows.\n *\n * @private\n */\nfunction _isENOENT(error) {\n return _isExpectedError(error, -ENOENT, 'ENOENT');\n}\n\n/**\n * Helper to determine whether the expected error code matches the actual code and errno,\n * which will differ between the supported node versions.\n *\n * - Node >= 7.0:\n * error.code {string}\n * error.errno {number} any numerical value will be negated\n *\n * CAVEAT\n *\n * On windows, the errno for EBADF is -4083 but os.constants.errno.EBADF is different and we must assume that ENOENT\n * is no different here.\n *\n * @param {SystemError} error\n * @param {number} errno\n * @param {string} code\n * @private\n */\nfunction _isExpectedError(error, errno, code) {\n return IS_WIN32 ? error.code === code : error.code === code && error.errno === errno;\n}\n\n/**\n * Sets the graceful cleanup.\n *\n * If graceful cleanup is set, tmp will remove all controlled temporary objects on process exit, otherwise the\n * temporary objects will remain in place, waiting to be cleaned up on system restart or otherwise scheduled temporary\n * object removals.\n */\nfunction setGracefulCleanup() {\n _gracefulCleanup = true;\n}\n\n/**\n * Returns the currently configured tmp dir from os.tmpdir().\n *\n * @private\n * @param {?Options} options\n * @returns {string} the currently configured tmp dir\n */\nfunction _getTmpDir(options) {\n return path.resolve(_sanitizeName(options && options.tmpdir || os.tmpdir()));\n}\n\n// Install process exit listener\nprocess.addListener(EXIT, _garbageCollector);\n\n/**\n * Configuration options.\n *\n * @typedef {Object} Options\n * @property {?boolean} keep the temporary object (file or dir) will not be garbage collected\n * @property {?number} tries the number of tries before give up the name generation\n * @property (?int) mode the access mode, defaults are 0o700 for directories and 0o600 for files\n * @property {?string} template the \"mkstemp\" like filename template\n * @property {?string} name fixed name relative to tmpdir or the specified dir option\n * @property {?string} dir tmp directory relative to the root tmp directory in use\n * @property {?string} prefix prefix for the generated name\n * @property {?string} postfix postfix for the generated name\n * @property {?string} tmpdir the root tmp directory which overrides the os tmpdir\n * @property {?boolean} unsafeCleanup recursively removes the created temporary directory, even when it's not empty\n * @property {?boolean} detachDescriptor detaches the file descriptor, caller is responsible for closing the file, tmp will no longer try closing the file during garbage collection\n * @property {?boolean} discardDescriptor discards the file descriptor (closes file, fd is -1), tmp will no longer try closing the file during garbage collection\n */\n\n/**\n * @typedef {Object} FileSyncObject\n * @property {string} name the name of the file\n * @property {string} fd the file descriptor or -1 if the fd has been discarded\n * @property {fileCallback} removeCallback the callback function to remove the file\n */\n\n/**\n * @typedef {Object} DirSyncObject\n * @property {string} name the name of the directory\n * @property {fileCallback} removeCallback the callback function to remove the directory\n */\n\n/**\n * @callback tmpNameCallback\n * @param {?Error} err the error object if anything goes wrong\n * @param {string} name the temporary file name\n */\n\n/**\n * @callback fileCallback\n * @param {?Error} err the error object if anything goes wrong\n * @param {string} name the temporary file name\n * @param {number} fd the file descriptor or -1 if the fd had been discarded\n * @param {cleanupCallback} fn the cleanup callback function\n */\n\n/**\n * @callback fileCallbackSync\n * @param {?Error} err the error object if anything goes wrong\n * @param {string} name the temporary file name\n * @param {number} fd the file descriptor or -1 if the fd had been discarded\n * @param {cleanupCallbackSync} fn the cleanup callback function\n */\n\n/**\n * @callback dirCallback\n * @param {?Error} err the error object if anything goes wrong\n * @param {string} name the temporary file name\n * @param {cleanupCallback} fn the cleanup callback function\n */\n\n/**\n * @callback dirCallbackSync\n * @param {?Error} err the error object if anything goes wrong\n * @param {string} name the temporary file name\n * @param {cleanupCallbackSync} fn the cleanup callback function\n */\n\n/**\n * Removes the temporary created file or directory.\n *\n * @callback cleanupCallback\n * @param {simpleCallback} [next] function to call whenever the tmp object needs to be removed\n */\n\n/**\n * Removes the temporary created file or directory.\n *\n * @callback cleanupCallbackSync\n */\n\n/**\n * Callback function for function composition.\n * @see {@link https://github.com/raszi/node-tmp/issues/57|raszi/node-tmp#57}\n *\n * @callback simpleCallback\n */\n\n// exporting all the needed methods\n\n// evaluate _getTmpDir() lazily, mainly for simplifying testing but it also will\n// allow users to reconfigure the temporary directory\nObject.defineProperty(module.exports, 'tmpdir', {\n enumerable: true,\n configurable: false,\n get: function () {\n return _getTmpDir();\n }\n});\n\nmodule.exports.dir = dir;\nmodule.exports.dirSync = dirSync;\n\nmodule.exports.file = file;\nmodule.exports.fileSync = fileSync;\n\nmodule.exports.tmpName = tmpName;\nmodule.exports.tmpNameSync = tmpNameSync;\n\nmodule.exports.setGracefulCleanup = setGracefulCleanup;\n", "import Stream from 'stream';\nimport http from 'http';\nimport Url from 'url';\nimport https from 'https';\nimport zlib from 'zlib';\n\n// Based on https://github.com/tmpvar/jsdom/blob/aa85b2abf07766ff7bf5c1f6daafb3726f2f2db5/lib/jsdom/living/blob.js\n\n// fix for \"Readable\" isn't a named export issue\nconst Readable = Stream.Readable;\n\nconst BUFFER = Symbol('buffer');\nconst TYPE = Symbol('type');\n\nclass Blob {\n\tconstructor() {\n\t\tthis[TYPE] = '';\n\n\t\tconst blobParts = arguments[0];\n\t\tconst options = arguments[1];\n\n\t\tconst buffers = [];\n\t\tlet size = 0;\n\n\t\tif (blobParts) {\n\t\t\tconst a = blobParts;\n\t\t\tconst length = Number(a.length);\n\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\tconst element = a[i];\n\t\t\t\tlet buffer;\n\t\t\t\tif (element instanceof Buffer) {\n\t\t\t\t\tbuffer = element;\n\t\t\t\t} else if (ArrayBuffer.isView(element)) {\n\t\t\t\t\tbuffer = Buffer.from(element.buffer, element.byteOffset, element.byteLength);\n\t\t\t\t} else if (element instanceof ArrayBuffer) {\n\t\t\t\t\tbuffer = Buffer.from(element);\n\t\t\t\t} else if (element instanceof Blob) {\n\t\t\t\t\tbuffer = element[BUFFER];\n\t\t\t\t} else {\n\t\t\t\t\tbuffer = Buffer.from(typeof element === 'string' ? element : String(element));\n\t\t\t\t}\n\t\t\t\tsize += buffer.length;\n\t\t\t\tbuffers.push(buffer);\n\t\t\t}\n\t\t}\n\n\t\tthis[BUFFER] = Buffer.concat(buffers);\n\n\t\tlet type = options && options.type !== undefined && String(options.type).toLowerCase();\n\t\tif (type && !/[^\\u0020-\\u007E]/.test(type)) {\n\t\t\tthis[TYPE] = type;\n\t\t}\n\t}\n\tget size() {\n\t\treturn this[BUFFER].length;\n\t}\n\tget type() {\n\t\treturn this[TYPE];\n\t}\n\ttext() {\n\t\treturn Promise.resolve(this[BUFFER].toString());\n\t}\n\tarrayBuffer() {\n\t\tconst buf = this[BUFFER];\n\t\tconst ab = buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength);\n\t\treturn Promise.resolve(ab);\n\t}\n\tstream() {\n\t\tconst readable = new Readable();\n\t\treadable._read = function () {};\n\t\treadable.push(this[BUFFER]);\n\t\treadable.push(null);\n\t\treturn readable;\n\t}\n\ttoString() {\n\t\treturn '[object Blob]';\n\t}\n\tslice() {\n\t\tconst size = this.size;\n\n\t\tconst start = arguments[0];\n\t\tconst end = arguments[1];\n\t\tlet relativeStart, relativeEnd;\n\t\tif (start === undefined) {\n\t\t\trelativeStart = 0;\n\t\t} else if (start < 0) {\n\t\t\trelativeStart = Math.max(size + start, 0);\n\t\t} else {\n\t\t\trelativeStart = Math.min(start, size);\n\t\t}\n\t\tif (end === undefined) {\n\t\t\trelativeEnd = size;\n\t\t} else if (end < 0) {\n\t\t\trelativeEnd = Math.max(size + end, 0);\n\t\t} else {\n\t\t\trelativeEnd = Math.min(end, size);\n\t\t}\n\t\tconst span = Math.max(relativeEnd - relativeStart, 0);\n\n\t\tconst buffer = this[BUFFER];\n\t\tconst slicedBuffer = buffer.slice(relativeStart, relativeStart + span);\n\t\tconst blob = new Blob([], { type: arguments[2] });\n\t\tblob[BUFFER] = slicedBuffer;\n\t\treturn blob;\n\t}\n}\n\nObject.defineProperties(Blob.prototype, {\n\tsize: { enumerable: true },\n\ttype: { enumerable: true },\n\tslice: { enumerable: true }\n});\n\nObject.defineProperty(Blob.prototype, Symbol.toStringTag, {\n\tvalue: 'Blob',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\n/**\n * fetch-error.js\n *\n * FetchError interface for operational errors\n */\n\n/**\n * Create FetchError instance\n *\n * @param String message Error message for human\n * @param String type Error type for machine\n * @param String systemError For Node.js system error\n * @return FetchError\n */\nfunction FetchError(message, type, systemError) {\n Error.call(this, message);\n\n this.message = message;\n this.type = type;\n\n // when err.type is `system`, err.code contains system error code\n if (systemError) {\n this.code = this.errno = systemError.code;\n }\n\n // hide custom error implementation details from end-users\n Error.captureStackTrace(this, this.constructor);\n}\n\nFetchError.prototype = Object.create(Error.prototype);\nFetchError.prototype.constructor = FetchError;\nFetchError.prototype.name = 'FetchError';\n\nlet convert;\ntry {\n\tconvert = require('encoding').convert;\n} catch (e) {}\n\nconst INTERNALS = Symbol('Body internals');\n\n// fix an issue where \"PassThrough\" isn't a named export for node <10\nconst PassThrough = Stream.PassThrough;\n\n/**\n * Body mixin\n *\n * Ref: https://fetch.spec.whatwg.org/#body\n *\n * @param Stream body Readable stream\n * @param Object opts Response options\n * @return Void\n */\nfunction Body(body) {\n\tvar _this = this;\n\n\tvar _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n\t _ref$size = _ref.size;\n\n\tlet size = _ref$size === undefined ? 0 : _ref$size;\n\tvar _ref$timeout = _ref.timeout;\n\tlet timeout = _ref$timeout === undefined ? 0 : _ref$timeout;\n\n\tif (body == null) {\n\t\t// body is undefined or null\n\t\tbody = null;\n\t} else if (isURLSearchParams(body)) {\n\t\t// body is a URLSearchParams\n\t\tbody = Buffer.from(body.toString());\n\t} else if (isBlob(body)) ; else if (Buffer.isBuffer(body)) ; else if (Object.prototype.toString.call(body) === '[object ArrayBuffer]') {\n\t\t// body is ArrayBuffer\n\t\tbody = Buffer.from(body);\n\t} else if (ArrayBuffer.isView(body)) {\n\t\t// body is ArrayBufferView\n\t\tbody = Buffer.from(body.buffer, body.byteOffset, body.byteLength);\n\t} else if (body instanceof Stream) ; else {\n\t\t// none of the above\n\t\t// coerce to string then buffer\n\t\tbody = Buffer.from(String(body));\n\t}\n\tthis[INTERNALS] = {\n\t\tbody,\n\t\tdisturbed: false,\n\t\terror: null\n\t};\n\tthis.size = size;\n\tthis.timeout = timeout;\n\n\tif (body instanceof Stream) {\n\t\tbody.on('error', function (err) {\n\t\t\tconst error = err.name === 'AbortError' ? err : new FetchError(`Invalid response body while trying to fetch ${_this.url}: ${err.message}`, 'system', err);\n\t\t\t_this[INTERNALS].error = error;\n\t\t});\n\t}\n}\n\nBody.prototype = {\n\tget body() {\n\t\treturn this[INTERNALS].body;\n\t},\n\n\tget bodyUsed() {\n\t\treturn this[INTERNALS].disturbed;\n\t},\n\n\t/**\n * Decode response as ArrayBuffer\n *\n * @return Promise\n */\n\tarrayBuffer() {\n\t\treturn consumeBody.call(this).then(function (buf) {\n\t\t\treturn buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength);\n\t\t});\n\t},\n\n\t/**\n * Return raw response as Blob\n *\n * @return Promise\n */\n\tblob() {\n\t\tlet ct = this.headers && this.headers.get('content-type') || '';\n\t\treturn consumeBody.call(this).then(function (buf) {\n\t\t\treturn Object.assign(\n\t\t\t// Prevent copying\n\t\t\tnew Blob([], {\n\t\t\t\ttype: ct.toLowerCase()\n\t\t\t}), {\n\t\t\t\t[BUFFER]: buf\n\t\t\t});\n\t\t});\n\t},\n\n\t/**\n * Decode response as json\n *\n * @return Promise\n */\n\tjson() {\n\t\tvar _this2 = this;\n\n\t\treturn consumeBody.call(this).then(function (buffer) {\n\t\t\ttry {\n\t\t\t\treturn JSON.parse(buffer.toString());\n\t\t\t} catch (err) {\n\t\t\t\treturn Body.Promise.reject(new FetchError(`invalid json response body at ${_this2.url} reason: ${err.message}`, 'invalid-json'));\n\t\t\t}\n\t\t});\n\t},\n\n\t/**\n * Decode response as text\n *\n * @return Promise\n */\n\ttext() {\n\t\treturn consumeBody.call(this).then(function (buffer) {\n\t\t\treturn buffer.toString();\n\t\t});\n\t},\n\n\t/**\n * Decode response as buffer (non-spec api)\n *\n * @return Promise\n */\n\tbuffer() {\n\t\treturn consumeBody.call(this);\n\t},\n\n\t/**\n * Decode response as text, while automatically detecting the encoding and\n * trying to decode to UTF-8 (non-spec api)\n *\n * @return Promise\n */\n\ttextConverted() {\n\t\tvar _this3 = this;\n\n\t\treturn consumeBody.call(this).then(function (buffer) {\n\t\t\treturn convertBody(buffer, _this3.headers);\n\t\t});\n\t}\n};\n\n// In browsers, all properties are enumerable.\nObject.defineProperties(Body.prototype, {\n\tbody: { enumerable: true },\n\tbodyUsed: { enumerable: true },\n\tarrayBuffer: { enumerable: true },\n\tblob: { enumerable: true },\n\tjson: { enumerable: true },\n\ttext: { enumerable: true }\n});\n\nBody.mixIn = function (proto) {\n\tfor (const name of Object.getOwnPropertyNames(Body.prototype)) {\n\t\t// istanbul ignore else: future proof\n\t\tif (!(name in proto)) {\n\t\t\tconst desc = Object.getOwnPropertyDescriptor(Body.prototype, name);\n\t\t\tObject.defineProperty(proto, name, desc);\n\t\t}\n\t}\n};\n\n/**\n * Consume and convert an entire Body to a Buffer.\n *\n * Ref: https://fetch.spec.whatwg.org/#concept-body-consume-body\n *\n * @return Promise\n */\nfunction consumeBody() {\n\tvar _this4 = this;\n\n\tif (this[INTERNALS].disturbed) {\n\t\treturn Body.Promise.reject(new TypeError(`body used already for: ${this.url}`));\n\t}\n\n\tthis[INTERNALS].disturbed = true;\n\n\tif (this[INTERNALS].error) {\n\t\treturn Body.Promise.reject(this[INTERNALS].error);\n\t}\n\n\tlet body = this.body;\n\n\t// body is null\n\tif (body === null) {\n\t\treturn Body.Promise.resolve(Buffer.alloc(0));\n\t}\n\n\t// body is blob\n\tif (isBlob(body)) {\n\t\tbody = body.stream();\n\t}\n\n\t// body is buffer\n\tif (Buffer.isBuffer(body)) {\n\t\treturn Body.Promise.resolve(body);\n\t}\n\n\t// istanbul ignore if: should never happen\n\tif (!(body instanceof Stream)) {\n\t\treturn Body.Promise.resolve(Buffer.alloc(0));\n\t}\n\n\t// body is stream\n\t// get ready to actually consume the body\n\tlet accum = [];\n\tlet accumBytes = 0;\n\tlet abort = false;\n\n\treturn new Body.Promise(function (resolve, reject) {\n\t\tlet resTimeout;\n\n\t\t// allow timeout on slow response body\n\t\tif (_this4.timeout) {\n\t\t\tresTimeout = setTimeout(function () {\n\t\t\t\tabort = true;\n\t\t\t\treject(new FetchError(`Response timeout while trying to fetch ${_this4.url} (over ${_this4.timeout}ms)`, 'body-timeout'));\n\t\t\t}, _this4.timeout);\n\t\t}\n\n\t\t// handle stream errors\n\t\tbody.on('error', function (err) {\n\t\t\tif (err.name === 'AbortError') {\n\t\t\t\t// if the request was aborted, reject with this Error\n\t\t\t\tabort = true;\n\t\t\t\treject(err);\n\t\t\t} else {\n\t\t\t\t// other errors, such as incorrect content-encoding\n\t\t\t\treject(new FetchError(`Invalid response body while trying to fetch ${_this4.url}: ${err.message}`, 'system', err));\n\t\t\t}\n\t\t});\n\n\t\tbody.on('data', function (chunk) {\n\t\t\tif (abort || chunk === null) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (_this4.size && accumBytes + chunk.length > _this4.size) {\n\t\t\t\tabort = true;\n\t\t\t\treject(new FetchError(`content size at ${_this4.url} over limit: ${_this4.size}`, 'max-size'));\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\taccumBytes += chunk.length;\n\t\t\taccum.push(chunk);\n\t\t});\n\n\t\tbody.on('end', function () {\n\t\t\tif (abort) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tclearTimeout(resTimeout);\n\n\t\t\ttry {\n\t\t\t\tresolve(Buffer.concat(accum, accumBytes));\n\t\t\t} catch (err) {\n\t\t\t\t// handle streams that have accumulated too much data (issue #414)\n\t\t\t\treject(new FetchError(`Could not create Buffer from response body for ${_this4.url}: ${err.message}`, 'system', err));\n\t\t\t}\n\t\t});\n\t});\n}\n\n/**\n * Detect buffer encoding and convert to target encoding\n * ref: http://www.w3.org/TR/2011/WD-html5-20110113/parsing.html#determining-the-character-encoding\n *\n * @param Buffer buffer Incoming buffer\n * @param String encoding Target encoding\n * @return String\n */\nfunction convertBody(buffer, headers) {\n\tif (typeof convert !== 'function') {\n\t\tthrow new Error('The package `encoding` must be installed to use the textConverted() function');\n\t}\n\n\tconst ct = headers.get('content-type');\n\tlet charset = 'utf-8';\n\tlet res, str;\n\n\t// header\n\tif (ct) {\n\t\tres = /charset=([^;]*)/i.exec(ct);\n\t}\n\n\t// no charset in content type, peek at response body for at most 1024 bytes\n\tstr = buffer.slice(0, 1024).toString();\n\n\t// html5\n\tif (!res && str) {\n\t\tres = / 0 && arguments[0] !== undefined ? arguments[0] : undefined;\n\n\t\tthis[MAP] = Object.create(null);\n\n\t\tif (init instanceof Headers) {\n\t\t\tconst rawHeaders = init.raw();\n\t\t\tconst headerNames = Object.keys(rawHeaders);\n\n\t\t\tfor (const headerName of headerNames) {\n\t\t\t\tfor (const value of rawHeaders[headerName]) {\n\t\t\t\t\tthis.append(headerName, value);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\t// We don't worry about converting prop to ByteString here as append()\n\t\t// will handle it.\n\t\tif (init == null) ; else if (typeof init === 'object') {\n\t\t\tconst method = init[Symbol.iterator];\n\t\t\tif (method != null) {\n\t\t\t\tif (typeof method !== 'function') {\n\t\t\t\t\tthrow new TypeError('Header pairs must be iterable');\n\t\t\t\t}\n\n\t\t\t\t// sequence>\n\t\t\t\t// Note: per spec we have to first exhaust the lists then process them\n\t\t\t\tconst pairs = [];\n\t\t\t\tfor (const pair of init) {\n\t\t\t\t\tif (typeof pair !== 'object' || typeof pair[Symbol.iterator] !== 'function') {\n\t\t\t\t\t\tthrow new TypeError('Each header pair must be iterable');\n\t\t\t\t\t}\n\t\t\t\t\tpairs.push(Array.from(pair));\n\t\t\t\t}\n\n\t\t\t\tfor (const pair of pairs) {\n\t\t\t\t\tif (pair.length !== 2) {\n\t\t\t\t\t\tthrow new TypeError('Each header pair must be a name/value tuple');\n\t\t\t\t\t}\n\t\t\t\t\tthis.append(pair[0], pair[1]);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// record\n\t\t\t\tfor (const key of Object.keys(init)) {\n\t\t\t\t\tconst value = init[key];\n\t\t\t\t\tthis.append(key, value);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tthrow new TypeError('Provided initializer must be an object');\n\t\t}\n\t}\n\n\t/**\n * Return combined header value given name\n *\n * @param String name Header name\n * @return Mixed\n */\n\tget(name) {\n\t\tname = `${name}`;\n\t\tvalidateName(name);\n\t\tconst key = find(this[MAP], name);\n\t\tif (key === undefined) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn this[MAP][key].join(', ');\n\t}\n\n\t/**\n * Iterate over all headers\n *\n * @param Function callback Executed for each item with parameters (value, name, thisArg)\n * @param Boolean thisArg `this` context for callback function\n * @return Void\n */\n\tforEach(callback) {\n\t\tlet thisArg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined;\n\n\t\tlet pairs = getHeaders(this);\n\t\tlet i = 0;\n\t\twhile (i < pairs.length) {\n\t\t\tvar _pairs$i = pairs[i];\n\t\t\tconst name = _pairs$i[0],\n\t\t\t value = _pairs$i[1];\n\n\t\t\tcallback.call(thisArg, value, name, this);\n\t\t\tpairs = getHeaders(this);\n\t\t\ti++;\n\t\t}\n\t}\n\n\t/**\n * Overwrite header values given name\n *\n * @param String name Header name\n * @param String value Header value\n * @return Void\n */\n\tset(name, value) {\n\t\tname = `${name}`;\n\t\tvalue = `${value}`;\n\t\tvalidateName(name);\n\t\tvalidateValue(value);\n\t\tconst key = find(this[MAP], name);\n\t\tthis[MAP][key !== undefined ? key : name] = [value];\n\t}\n\n\t/**\n * Append a value onto existing header\n *\n * @param String name Header name\n * @param String value Header value\n * @return Void\n */\n\tappend(name, value) {\n\t\tname = `${name}`;\n\t\tvalue = `${value}`;\n\t\tvalidateName(name);\n\t\tvalidateValue(value);\n\t\tconst key = find(this[MAP], name);\n\t\tif (key !== undefined) {\n\t\t\tthis[MAP][key].push(value);\n\t\t} else {\n\t\t\tthis[MAP][name] = [value];\n\t\t}\n\t}\n\n\t/**\n * Check for header name existence\n *\n * @param String name Header name\n * @return Boolean\n */\n\thas(name) {\n\t\tname = `${name}`;\n\t\tvalidateName(name);\n\t\treturn find(this[MAP], name) !== undefined;\n\t}\n\n\t/**\n * Delete all header values given name\n *\n * @param String name Header name\n * @return Void\n */\n\tdelete(name) {\n\t\tname = `${name}`;\n\t\tvalidateName(name);\n\t\tconst key = find(this[MAP], name);\n\t\tif (key !== undefined) {\n\t\t\tdelete this[MAP][key];\n\t\t}\n\t}\n\n\t/**\n * Return raw headers (non-spec api)\n *\n * @return Object\n */\n\traw() {\n\t\treturn this[MAP];\n\t}\n\n\t/**\n * Get an iterator on keys.\n *\n * @return Iterator\n */\n\tkeys() {\n\t\treturn createHeadersIterator(this, 'key');\n\t}\n\n\t/**\n * Get an iterator on values.\n *\n * @return Iterator\n */\n\tvalues() {\n\t\treturn createHeadersIterator(this, 'value');\n\t}\n\n\t/**\n * Get an iterator on entries.\n *\n * This is the default iterator of the Headers object.\n *\n * @return Iterator\n */\n\t[Symbol.iterator]() {\n\t\treturn createHeadersIterator(this, 'key+value');\n\t}\n}\nHeaders.prototype.entries = Headers.prototype[Symbol.iterator];\n\nObject.defineProperty(Headers.prototype, Symbol.toStringTag, {\n\tvalue: 'Headers',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\nObject.defineProperties(Headers.prototype, {\n\tget: { enumerable: true },\n\tforEach: { enumerable: true },\n\tset: { enumerable: true },\n\tappend: { enumerable: true },\n\thas: { enumerable: true },\n\tdelete: { enumerable: true },\n\tkeys: { enumerable: true },\n\tvalues: { enumerable: true },\n\tentries: { enumerable: true }\n});\n\nfunction getHeaders(headers) {\n\tlet kind = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'key+value';\n\n\tconst keys = Object.keys(headers[MAP]).sort();\n\treturn keys.map(kind === 'key' ? function (k) {\n\t\treturn k.toLowerCase();\n\t} : kind === 'value' ? function (k) {\n\t\treturn headers[MAP][k].join(', ');\n\t} : function (k) {\n\t\treturn [k.toLowerCase(), headers[MAP][k].join(', ')];\n\t});\n}\n\nconst INTERNAL = Symbol('internal');\n\nfunction createHeadersIterator(target, kind) {\n\tconst iterator = Object.create(HeadersIteratorPrototype);\n\titerator[INTERNAL] = {\n\t\ttarget,\n\t\tkind,\n\t\tindex: 0\n\t};\n\treturn iterator;\n}\n\nconst HeadersIteratorPrototype = Object.setPrototypeOf({\n\tnext() {\n\t\t// istanbul ignore if\n\t\tif (!this || Object.getPrototypeOf(this) !== HeadersIteratorPrototype) {\n\t\t\tthrow new TypeError('Value of `this` is not a HeadersIterator');\n\t\t}\n\n\t\tvar _INTERNAL = this[INTERNAL];\n\t\tconst target = _INTERNAL.target,\n\t\t kind = _INTERNAL.kind,\n\t\t index = _INTERNAL.index;\n\n\t\tconst values = getHeaders(target, kind);\n\t\tconst len = values.length;\n\t\tif (index >= len) {\n\t\t\treturn {\n\t\t\t\tvalue: undefined,\n\t\t\t\tdone: true\n\t\t\t};\n\t\t}\n\n\t\tthis[INTERNAL].index = index + 1;\n\n\t\treturn {\n\t\t\tvalue: values[index],\n\t\t\tdone: false\n\t\t};\n\t}\n}, Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]())));\n\nObject.defineProperty(HeadersIteratorPrototype, Symbol.toStringTag, {\n\tvalue: 'HeadersIterator',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\n/**\n * Export the Headers object in a form that Node.js can consume.\n *\n * @param Headers headers\n * @return Object\n */\nfunction exportNodeCompatibleHeaders(headers) {\n\tconst obj = Object.assign({ __proto__: null }, headers[MAP]);\n\n\t// http.request() only supports string as Host header. This hack makes\n\t// specifying custom Host header possible.\n\tconst hostHeaderKey = find(headers[MAP], 'Host');\n\tif (hostHeaderKey !== undefined) {\n\t\tobj[hostHeaderKey] = obj[hostHeaderKey][0];\n\t}\n\n\treturn obj;\n}\n\n/**\n * Create a Headers object from an object of headers, ignoring those that do\n * not conform to HTTP grammar productions.\n *\n * @param Object obj Object of headers\n * @return Headers\n */\nfunction createHeadersLenient(obj) {\n\tconst headers = new Headers();\n\tfor (const name of Object.keys(obj)) {\n\t\tif (invalidTokenRegex.test(name)) {\n\t\t\tcontinue;\n\t\t}\n\t\tif (Array.isArray(obj[name])) {\n\t\t\tfor (const val of obj[name]) {\n\t\t\t\tif (invalidHeaderCharRegex.test(val)) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tif (headers[MAP][name] === undefined) {\n\t\t\t\t\theaders[MAP][name] = [val];\n\t\t\t\t} else {\n\t\t\t\t\theaders[MAP][name].push(val);\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (!invalidHeaderCharRegex.test(obj[name])) {\n\t\t\theaders[MAP][name] = [obj[name]];\n\t\t}\n\t}\n\treturn headers;\n}\n\nconst INTERNALS$1 = Symbol('Response internals');\n\n// fix an issue where \"STATUS_CODES\" aren't a named export for node <10\nconst STATUS_CODES = http.STATUS_CODES;\n\n/**\n * Response class\n *\n * @param Stream body Readable stream\n * @param Object opts Response options\n * @return Void\n */\nclass Response {\n\tconstructor() {\n\t\tlet body = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n\t\tlet opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n\t\tBody.call(this, body, opts);\n\n\t\tconst status = opts.status || 200;\n\t\tconst headers = new Headers(opts.headers);\n\n\t\tif (body != null && !headers.has('Content-Type')) {\n\t\t\tconst contentType = extractContentType(body);\n\t\t\tif (contentType) {\n\t\t\t\theaders.append('Content-Type', contentType);\n\t\t\t}\n\t\t}\n\n\t\tthis[INTERNALS$1] = {\n\t\t\turl: opts.url,\n\t\t\tstatus,\n\t\t\tstatusText: opts.statusText || STATUS_CODES[status],\n\t\t\theaders,\n\t\t\tcounter: opts.counter\n\t\t};\n\t}\n\n\tget url() {\n\t\treturn this[INTERNALS$1].url || '';\n\t}\n\n\tget status() {\n\t\treturn this[INTERNALS$1].status;\n\t}\n\n\t/**\n * Convenience property representing if the request ended normally\n */\n\tget ok() {\n\t\treturn this[INTERNALS$1].status >= 200 && this[INTERNALS$1].status < 300;\n\t}\n\n\tget redirected() {\n\t\treturn this[INTERNALS$1].counter > 0;\n\t}\n\n\tget statusText() {\n\t\treturn this[INTERNALS$1].statusText;\n\t}\n\n\tget headers() {\n\t\treturn this[INTERNALS$1].headers;\n\t}\n\n\t/**\n * Clone this response\n *\n * @return Response\n */\n\tclone() {\n\t\treturn new Response(clone(this), {\n\t\t\turl: this.url,\n\t\t\tstatus: this.status,\n\t\t\tstatusText: this.statusText,\n\t\t\theaders: this.headers,\n\t\t\tok: this.ok,\n\t\t\tredirected: this.redirected\n\t\t});\n\t}\n}\n\nBody.mixIn(Response.prototype);\n\nObject.defineProperties(Response.prototype, {\n\turl: { enumerable: true },\n\tstatus: { enumerable: true },\n\tok: { enumerable: true },\n\tredirected: { enumerable: true },\n\tstatusText: { enumerable: true },\n\theaders: { enumerable: true },\n\tclone: { enumerable: true }\n});\n\nObject.defineProperty(Response.prototype, Symbol.toStringTag, {\n\tvalue: 'Response',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\nconst INTERNALS$2 = Symbol('Request internals');\n\n// fix an issue where \"format\", \"parse\" aren't a named export for node <10\nconst parse_url = Url.parse;\nconst format_url = Url.format;\n\nconst streamDestructionSupported = 'destroy' in Stream.Readable.prototype;\n\n/**\n * Check if a value is an instance of Request.\n *\n * @param Mixed input\n * @return Boolean\n */\nfunction isRequest(input) {\n\treturn typeof input === 'object' && typeof input[INTERNALS$2] === 'object';\n}\n\nfunction isAbortSignal(signal) {\n\tconst proto = signal && typeof signal === 'object' && Object.getPrototypeOf(signal);\n\treturn !!(proto && proto.constructor.name === 'AbortSignal');\n}\n\n/**\n * Request class\n *\n * @param Mixed input Url or Request instance\n * @param Object init Custom options\n * @return Void\n */\nclass Request {\n\tconstructor(input) {\n\t\tlet init = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n\t\tlet parsedURL;\n\n\t\t// normalize input\n\t\tif (!isRequest(input)) {\n\t\t\tif (input && input.href) {\n\t\t\t\t// in order to support Node.js' Url objects; though WHATWG's URL objects\n\t\t\t\t// will fall into this branch also (since their `toString()` will return\n\t\t\t\t// `href` property anyway)\n\t\t\t\tparsedURL = parse_url(input.href);\n\t\t\t} else {\n\t\t\t\t// coerce input to a string before attempting to parse\n\t\t\t\tparsedURL = parse_url(`${input}`);\n\t\t\t}\n\t\t\tinput = {};\n\t\t} else {\n\t\t\tparsedURL = parse_url(input.url);\n\t\t}\n\n\t\tlet method = init.method || input.method || 'GET';\n\t\tmethod = method.toUpperCase();\n\n\t\tif ((init.body != null || isRequest(input) && input.body !== null) && (method === 'GET' || method === 'HEAD')) {\n\t\t\tthrow new TypeError('Request with GET/HEAD method cannot have body');\n\t\t}\n\n\t\tlet inputBody = init.body != null ? init.body : isRequest(input) && input.body !== null ? clone(input) : null;\n\n\t\tBody.call(this, inputBody, {\n\t\t\ttimeout: init.timeout || input.timeout || 0,\n\t\t\tsize: init.size || input.size || 0\n\t\t});\n\n\t\tconst headers = new Headers(init.headers || input.headers || {});\n\n\t\tif (inputBody != null && !headers.has('Content-Type')) {\n\t\t\tconst contentType = extractContentType(inputBody);\n\t\t\tif (contentType) {\n\t\t\t\theaders.append('Content-Type', contentType);\n\t\t\t}\n\t\t}\n\n\t\tlet signal = isRequest(input) ? input.signal : null;\n\t\tif ('signal' in init) signal = init.signal;\n\n\t\tif (signal != null && !isAbortSignal(signal)) {\n\t\t\tthrow new TypeError('Expected signal to be an instanceof AbortSignal');\n\t\t}\n\n\t\tthis[INTERNALS$2] = {\n\t\t\tmethod,\n\t\t\tredirect: init.redirect || input.redirect || 'follow',\n\t\t\theaders,\n\t\t\tparsedURL,\n\t\t\tsignal\n\t\t};\n\n\t\t// node-fetch-only options\n\t\tthis.follow = init.follow !== undefined ? init.follow : input.follow !== undefined ? input.follow : 20;\n\t\tthis.compress = init.compress !== undefined ? init.compress : input.compress !== undefined ? input.compress : true;\n\t\tthis.counter = init.counter || input.counter || 0;\n\t\tthis.agent = init.agent || input.agent;\n\t}\n\n\tget method() {\n\t\treturn this[INTERNALS$2].method;\n\t}\n\n\tget url() {\n\t\treturn format_url(this[INTERNALS$2].parsedURL);\n\t}\n\n\tget headers() {\n\t\treturn this[INTERNALS$2].headers;\n\t}\n\n\tget redirect() {\n\t\treturn this[INTERNALS$2].redirect;\n\t}\n\n\tget signal() {\n\t\treturn this[INTERNALS$2].signal;\n\t}\n\n\t/**\n * Clone this request\n *\n * @return Request\n */\n\tclone() {\n\t\treturn new Request(this);\n\t}\n}\n\nBody.mixIn(Request.prototype);\n\nObject.defineProperty(Request.prototype, Symbol.toStringTag, {\n\tvalue: 'Request',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\nObject.defineProperties(Request.prototype, {\n\tmethod: { enumerable: true },\n\turl: { enumerable: true },\n\theaders: { enumerable: true },\n\tredirect: { enumerable: true },\n\tclone: { enumerable: true },\n\tsignal: { enumerable: true }\n});\n\n/**\n * Convert a Request to Node.js http request options.\n *\n * @param Request A Request instance\n * @return Object The options object to be passed to http.request\n */\nfunction getNodeRequestOptions(request) {\n\tconst parsedURL = request[INTERNALS$2].parsedURL;\n\tconst headers = new Headers(request[INTERNALS$2].headers);\n\n\t// fetch step 1.3\n\tif (!headers.has('Accept')) {\n\t\theaders.set('Accept', '*/*');\n\t}\n\n\t// Basic fetch\n\tif (!parsedURL.protocol || !parsedURL.hostname) {\n\t\tthrow new TypeError('Only absolute URLs are supported');\n\t}\n\n\tif (!/^https?:$/.test(parsedURL.protocol)) {\n\t\tthrow new TypeError('Only HTTP(S) protocols are supported');\n\t}\n\n\tif (request.signal && request.body instanceof Stream.Readable && !streamDestructionSupported) {\n\t\tthrow new Error('Cancellation of streamed requests with AbortSignal is not supported in node < 8');\n\t}\n\n\t// HTTP-network-or-cache fetch steps 2.4-2.7\n\tlet contentLengthValue = null;\n\tif (request.body == null && /^(POST|PUT)$/i.test(request.method)) {\n\t\tcontentLengthValue = '0';\n\t}\n\tif (request.body != null) {\n\t\tconst totalBytes = getTotalBytes(request);\n\t\tif (typeof totalBytes === 'number') {\n\t\t\tcontentLengthValue = String(totalBytes);\n\t\t}\n\t}\n\tif (contentLengthValue) {\n\t\theaders.set('Content-Length', contentLengthValue);\n\t}\n\n\t// HTTP-network-or-cache fetch step 2.11\n\tif (!headers.has('User-Agent')) {\n\t\theaders.set('User-Agent', 'node-fetch/1.0 (+https://github.com/bitinn/node-fetch)');\n\t}\n\n\t// HTTP-network-or-cache fetch step 2.15\n\tif (request.compress && !headers.has('Accept-Encoding')) {\n\t\theaders.set('Accept-Encoding', 'gzip,deflate');\n\t}\n\n\tlet agent = request.agent;\n\tif (typeof agent === 'function') {\n\t\tagent = agent(parsedURL);\n\t}\n\n\tif (!headers.has('Connection') && !agent) {\n\t\theaders.set('Connection', 'close');\n\t}\n\n\t// HTTP-network fetch step 4.2\n\t// chunked encoding is handled by Node.js\n\n\treturn Object.assign({}, parsedURL, {\n\t\tmethod: request.method,\n\t\theaders: exportNodeCompatibleHeaders(headers),\n\t\tagent\n\t});\n}\n\n/**\n * abort-error.js\n *\n * AbortError interface for cancelled requests\n */\n\n/**\n * Create AbortError instance\n *\n * @param String message Error message for human\n * @return AbortError\n */\nfunction AbortError(message) {\n Error.call(this, message);\n\n this.type = 'aborted';\n this.message = message;\n\n // hide custom error implementation details from end-users\n Error.captureStackTrace(this, this.constructor);\n}\n\nAbortError.prototype = Object.create(Error.prototype);\nAbortError.prototype.constructor = AbortError;\nAbortError.prototype.name = 'AbortError';\n\n// fix an issue where \"PassThrough\", \"resolve\" aren't a named export for node <10\nconst PassThrough$1 = Stream.PassThrough;\nconst resolve_url = Url.resolve;\n\n/**\n * Fetch function\n *\n * @param Mixed url Absolute url or Request instance\n * @param Object opts Fetch options\n * @return Promise\n */\nfunction fetch(url, opts) {\n\n\t// allow custom promise\n\tif (!fetch.Promise) {\n\t\tthrow new Error('native promise missing, set fetch.Promise to your favorite alternative');\n\t}\n\n\tBody.Promise = fetch.Promise;\n\n\t// wrap http.request into fetch\n\treturn new fetch.Promise(function (resolve, reject) {\n\t\t// build request object\n\t\tconst request = new Request(url, opts);\n\t\tconst options = getNodeRequestOptions(request);\n\n\t\tconst send = (options.protocol === 'https:' ? https : http).request;\n\t\tconst signal = request.signal;\n\n\t\tlet response = null;\n\n\t\tconst abort = function abort() {\n\t\t\tlet error = new AbortError('The user aborted a request.');\n\t\t\treject(error);\n\t\t\tif (request.body && request.body instanceof Stream.Readable) {\n\t\t\t\trequest.body.destroy(error);\n\t\t\t}\n\t\t\tif (!response || !response.body) return;\n\t\t\tresponse.body.emit('error', error);\n\t\t};\n\n\t\tif (signal && signal.aborted) {\n\t\t\tabort();\n\t\t\treturn;\n\t\t}\n\n\t\tconst abortAndFinalize = function abortAndFinalize() {\n\t\t\tabort();\n\t\t\tfinalize();\n\t\t};\n\n\t\t// send request\n\t\tconst req = send(options);\n\t\tlet reqTimeout;\n\n\t\tif (signal) {\n\t\t\tsignal.addEventListener('abort', abortAndFinalize);\n\t\t}\n\n\t\tfunction finalize() {\n\t\t\treq.abort();\n\t\t\tif (signal) signal.removeEventListener('abort', abortAndFinalize);\n\t\t\tclearTimeout(reqTimeout);\n\t\t}\n\n\t\tif (request.timeout) {\n\t\t\treq.once('socket', function (socket) {\n\t\t\t\treqTimeout = setTimeout(function () {\n\t\t\t\t\treject(new FetchError(`network timeout at: ${request.url}`, 'request-timeout'));\n\t\t\t\t\tfinalize();\n\t\t\t\t}, request.timeout);\n\t\t\t});\n\t\t}\n\n\t\treq.on('error', function (err) {\n\t\t\treject(new FetchError(`request to ${request.url} failed, reason: ${err.message}`, 'system', err));\n\t\t\tfinalize();\n\t\t});\n\n\t\treq.on('response', function (res) {\n\t\t\tclearTimeout(reqTimeout);\n\n\t\t\tconst headers = createHeadersLenient(res.headers);\n\n\t\t\t// HTTP fetch step 5\n\t\t\tif (fetch.isRedirect(res.statusCode)) {\n\t\t\t\t// HTTP fetch step 5.2\n\t\t\t\tconst location = headers.get('Location');\n\n\t\t\t\t// HTTP fetch step 5.3\n\t\t\t\tconst locationURL = location === null ? null : resolve_url(request.url, location);\n\n\t\t\t\t// HTTP fetch step 5.5\n\t\t\t\tswitch (request.redirect) {\n\t\t\t\t\tcase 'error':\n\t\t\t\t\t\treject(new FetchError(`uri requested responds with a redirect, redirect mode is set to error: ${request.url}`, 'no-redirect'));\n\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\treturn;\n\t\t\t\t\tcase 'manual':\n\t\t\t\t\t\t// node-fetch-specific step: make manual redirect a bit easier to use by setting the Location header value to the resolved URL.\n\t\t\t\t\t\tif (locationURL !== null) {\n\t\t\t\t\t\t\t// handle corrupted header\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\theaders.set('Location', locationURL);\n\t\t\t\t\t\t\t} catch (err) {\n\t\t\t\t\t\t\t\t// istanbul ignore next: nodejs server prevent invalid response headers, we can't test this through normal request\n\t\t\t\t\t\t\t\treject(err);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'follow':\n\t\t\t\t\t\t// HTTP-redirect fetch step 2\n\t\t\t\t\t\tif (locationURL === null) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 5\n\t\t\t\t\t\tif (request.counter >= request.follow) {\n\t\t\t\t\t\t\treject(new FetchError(`maximum redirect reached at: ${request.url}`, 'max-redirect'));\n\t\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 6 (counter increment)\n\t\t\t\t\t\t// Create a new Request object.\n\t\t\t\t\t\tconst requestOpts = {\n\t\t\t\t\t\t\theaders: new Headers(request.headers),\n\t\t\t\t\t\t\tfollow: request.follow,\n\t\t\t\t\t\t\tcounter: request.counter + 1,\n\t\t\t\t\t\t\tagent: request.agent,\n\t\t\t\t\t\t\tcompress: request.compress,\n\t\t\t\t\t\t\tmethod: request.method,\n\t\t\t\t\t\t\tbody: request.body,\n\t\t\t\t\t\t\tsignal: request.signal,\n\t\t\t\t\t\t\ttimeout: request.timeout,\n\t\t\t\t\t\t\tsize: request.size\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 9\n\t\t\t\t\t\tif (res.statusCode !== 303 && request.body && getTotalBytes(request) === null) {\n\t\t\t\t\t\t\treject(new FetchError('Cannot follow redirect with body being a readable stream', 'unsupported-redirect'));\n\t\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 11\n\t\t\t\t\t\tif (res.statusCode === 303 || (res.statusCode === 301 || res.statusCode === 302) && request.method === 'POST') {\n\t\t\t\t\t\t\trequestOpts.method = 'GET';\n\t\t\t\t\t\t\trequestOpts.body = undefined;\n\t\t\t\t\t\t\trequestOpts.headers.delete('content-length');\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 15\n\t\t\t\t\t\tresolve(fetch(new Request(locationURL, requestOpts)));\n\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// prepare response\n\t\t\tres.once('end', function () {\n\t\t\t\tif (signal) signal.removeEventListener('abort', abortAndFinalize);\n\t\t\t});\n\t\t\tlet body = res.pipe(new PassThrough$1());\n\n\t\t\tconst response_options = {\n\t\t\t\turl: request.url,\n\t\t\t\tstatus: res.statusCode,\n\t\t\t\tstatusText: res.statusMessage,\n\t\t\t\theaders: headers,\n\t\t\t\tsize: request.size,\n\t\t\t\ttimeout: request.timeout,\n\t\t\t\tcounter: request.counter\n\t\t\t};\n\n\t\t\t// HTTP-network fetch step 12.1.1.3\n\t\t\tconst codings = headers.get('Content-Encoding');\n\n\t\t\t// HTTP-network fetch step 12.1.1.4: handle content codings\n\n\t\t\t// in following scenarios we ignore compression support\n\t\t\t// 1. compression support is disabled\n\t\t\t// 2. HEAD request\n\t\t\t// 3. no Content-Encoding header\n\t\t\t// 4. no content response (204)\n\t\t\t// 5. content not modified response (304)\n\t\t\tif (!request.compress || request.method === 'HEAD' || codings === null || res.statusCode === 204 || res.statusCode === 304) {\n\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\tresolve(response);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// For Node v6+\n\t\t\t// Be less strict when decoding compressed responses, since sometimes\n\t\t\t// servers send slightly invalid responses that are still accepted\n\t\t\t// by common browsers.\n\t\t\t// Always using Z_SYNC_FLUSH is what cURL does.\n\t\t\tconst zlibOptions = {\n\t\t\t\tflush: zlib.Z_SYNC_FLUSH,\n\t\t\t\tfinishFlush: zlib.Z_SYNC_FLUSH\n\t\t\t};\n\n\t\t\t// for gzip\n\t\t\tif (codings == 'gzip' || codings == 'x-gzip') {\n\t\t\t\tbody = body.pipe(zlib.createGunzip(zlibOptions));\n\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\tresolve(response);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// for deflate\n\t\t\tif (codings == 'deflate' || codings == 'x-deflate') {\n\t\t\t\t// handle the infamous raw deflate response from old servers\n\t\t\t\t// a hack for old IIS and Apache servers\n\t\t\t\tconst raw = res.pipe(new PassThrough$1());\n\t\t\t\traw.once('data', function (chunk) {\n\t\t\t\t\t// see http://stackoverflow.com/questions/37519828\n\t\t\t\t\tif ((chunk[0] & 0x0F) === 0x08) {\n\t\t\t\t\t\tbody = body.pipe(zlib.createInflate());\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbody = body.pipe(zlib.createInflateRaw());\n\t\t\t\t\t}\n\t\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\t\tresolve(response);\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// for br\n\t\t\tif (codings == 'br' && typeof zlib.createBrotliDecompress === 'function') {\n\t\t\t\tbody = body.pipe(zlib.createBrotliDecompress());\n\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\tresolve(response);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// otherwise, use response as-is\n\t\t\tresponse = new Response(body, response_options);\n\t\t\tresolve(response);\n\t\t});\n\n\t\twriteToStream(req, request);\n\t});\n}\n/**\n * Redirect code matching\n *\n * @param Number code Status code\n * @return Boolean\n */\nfetch.isRedirect = function (code) {\n\treturn code === 301 || code === 302 || code === 303 || code === 307 || code === 308;\n};\n\n// expose Promise\nfetch.Promise = global.Promise;\n\nexport default fetch;\nexport { Headers, Request, Response, FetchError };\n", "// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// patch from https://github.com/nodejs/node/blob/v7.2.1/lib/_http_agent.js\n\n'use strict';\n\nconst net = require('net');\nconst util = require('util');\nconst EventEmitter = require('events');\nconst debug = util.debuglog('http');\n\n// New Agent code.\n\n// The largest departure from the previous implementation is that\n// an Agent instance holds connections for a variable number of host:ports.\n// Surprisingly, this is still API compatible as far as third parties are\n// concerned. The only code that really notices the difference is the\n// request object.\n\n// Another departure is that all code related to HTTP parsing is in\n// ClientRequest.onSocket(). The Agent is now *strictly*\n// concerned with managing a connection pool.\n\nfunction Agent(options) {\n if (!(this instanceof Agent))\n return new Agent(options);\n\n EventEmitter.call(this);\n\n var self = this;\n\n self.defaultPort = 80;\n self.protocol = 'http:';\n\n self.options = util._extend({}, options);\n\n // don't confuse net and make it think that we're connecting to a pipe\n self.options.path = null;\n self.requests = {};\n self.sockets = {};\n self.freeSockets = {};\n self.keepAliveMsecs = self.options.keepAliveMsecs || 1000;\n self.keepAlive = self.options.keepAlive || false;\n self.maxSockets = self.options.maxSockets || Agent.defaultMaxSockets;\n self.maxFreeSockets = self.options.maxFreeSockets || 256;\n\n // [patch start]\n // free keep-alive socket timeout. By default free socket do not have a timeout.\n self.freeSocketKeepAliveTimeout = self.options.freeSocketKeepAliveTimeout || 0;\n // working socket timeout. By default working socket do not have a timeout.\n self.timeout = self.options.timeout || 0;\n // the socket active time to live, even if it's in use\n this.socketActiveTTL = this.options.socketActiveTTL || null;\n // [patch end]\n\n self.on('free', function(socket, options) {\n var name = self.getName(options);\n debug('agent.on(free)', name);\n\n if (socket.writable &&\n self.requests[name] && self.requests[name].length) {\n // [patch start]\n debug('continue handle next request');\n // [patch end]\n self.requests[name].shift().onSocket(socket);\n if (self.requests[name].length === 0) {\n // don't leak\n delete self.requests[name];\n }\n } else {\n // If there are no pending requests, then put it in\n // the freeSockets pool, but only if we're allowed to do so.\n var req = socket._httpMessage;\n if (req &&\n req.shouldKeepAlive &&\n socket.writable &&\n self.keepAlive) {\n var freeSockets = self.freeSockets[name];\n var freeLen = freeSockets ? freeSockets.length : 0;\n var count = freeLen;\n if (self.sockets[name])\n count += self.sockets[name].length;\n\n if (count > self.maxSockets || freeLen >= self.maxFreeSockets) {\n socket.destroy();\n } else {\n freeSockets = freeSockets || [];\n self.freeSockets[name] = freeSockets;\n socket.setKeepAlive(true, self.keepAliveMsecs);\n socket.unref();\n socket._httpMessage = null;\n self.removeSocket(socket, options);\n freeSockets.push(socket);\n\n // [patch start]\n // Add a default error handler to avoid Unhandled 'error' event throw on idle socket\n // https://github.com/node-modules/agentkeepalive/issues/25\n // https://github.com/nodejs/node/pull/4482 (fixed in >= 4.4.0 and >= 5.4.0)\n if (socket.listeners('error').length === 0) {\n socket.once('error', freeSocketErrorListener);\n }\n // set free keepalive timer\n // try to use socket custom freeSocketKeepAliveTimeout first\n const freeSocketKeepAliveTimeout = socket.freeSocketKeepAliveTimeout || self.freeSocketKeepAliveTimeout;\n socket.setTimeout(freeSocketKeepAliveTimeout);\n debug(`push to free socket queue and wait for ${freeSocketKeepAliveTimeout}ms`);\n // [patch end]\n }\n } else {\n socket.destroy();\n }\n }\n });\n}\n\nutil.inherits(Agent, EventEmitter);\nexports.Agent = Agent;\n\n// [patch start]\nfunction freeSocketErrorListener(err) {\n var socket = this;\n debug('SOCKET ERROR on FREE socket:', err.message, err.stack);\n socket.destroy();\n socket.emit('agentRemove');\n}\n// [patch end]\n\nAgent.defaultMaxSockets = Infinity;\n\nAgent.prototype.createConnection = net.createConnection;\n\n// Get the key for a given set of request options\nAgent.prototype.getName = function getName(options) {\n var name = options.host || 'localhost';\n\n name += ':';\n if (options.port)\n name += options.port;\n\n name += ':';\n if (options.localAddress)\n name += options.localAddress;\n\n // Pacify parallel/test-http-agent-getname by only appending\n // the ':' when options.family is set.\n if (options.family === 4 || options.family === 6)\n name += ':' + options.family;\n\n return name;\n};\n\n// [patch start]\nfunction handleSocketCreation(req) {\n return function(err, newSocket) {\n if (err) {\n process.nextTick(function() {\n req.emit('error', err);\n });\n return;\n }\n req.onSocket(newSocket);\n }\n}\n// [patch end]\n\nAgent.prototype.addRequest = function addRequest(req, options, port/*legacy*/,\n localAddress/*legacy*/) {\n // Legacy API: addRequest(req, host, port, localAddress)\n if (typeof options === 'string') {\n options = {\n host: options,\n port,\n localAddress\n };\n }\n\n options = util._extend({}, options);\n options = util._extend(options, this.options);\n\n if (!options.servername)\n options.servername = calculateServerName(options, req);\n\n var name = this.getName(options);\n if (!this.sockets[name]) {\n this.sockets[name] = [];\n }\n\n var freeLen = this.freeSockets[name] ? this.freeSockets[name].length : 0;\n var sockLen = freeLen + this.sockets[name].length;\n\n if (freeLen) {\n // we have a free socket, so use that.\n var socket = this.freeSockets[name].shift();\n debug('have free socket');\n\n // [patch start]\n // remove free socket error event handler\n socket.removeListener('error', freeSocketErrorListener);\n // restart the default timer\n socket.setTimeout(this.timeout);\n\n if (this.socketActiveTTL && Date.now() - socket.createdTime > this.socketActiveTTL) {\n debug(`socket ${socket.createdTime} expired`);\n socket.destroy();\n return this.createSocket(req, options, handleSocketCreation(req));\n }\n // [patch end]\n\n // don't leak\n if (!this.freeSockets[name].length)\n delete this.freeSockets[name];\n\n socket.ref();\n req.onSocket(socket);\n this.sockets[name].push(socket);\n } else if (sockLen < this.maxSockets) {\n debug('call onSocket', sockLen, freeLen);\n // If we are under maxSockets create a new one.\n // [patch start]\n this.createSocket(req, options, handleSocketCreation(req));\n // [patch end]\n } else {\n debug('wait for socket');\n // We are over limit so we'll add it to the queue.\n if (!this.requests[name]) {\n this.requests[name] = [];\n }\n this.requests[name].push(req);\n }\n};\n\nAgent.prototype.createSocket = function createSocket(req, options, cb) {\n var self = this;\n options = util._extend({}, options);\n options = util._extend(options, self.options);\n\n if (!options.servername)\n options.servername = calculateServerName(options, req);\n\n var name = self.getName(options);\n options._agentKey = name;\n\n debug('createConnection', name, options);\n options.encoding = null;\n var called = false;\n const newSocket = self.createConnection(options, oncreate);\n // [patch start]\n if (newSocket) {\n oncreate(null, Object.assign(newSocket, { createdTime: Date.now() }));\n }\n // [patch end]\n function oncreate(err, s) {\n if (called)\n return;\n called = true;\n if (err)\n return cb(err);\n if (!self.sockets[name]) {\n self.sockets[name] = [];\n }\n self.sockets[name].push(s);\n debug('sockets', name, self.sockets[name].length);\n\n function onFree() {\n self.emit('free', s, options);\n }\n s.on('free', onFree);\n\n function onClose(err) {\n debug('CLIENT socket onClose');\n // This is the only place where sockets get removed from the Agent.\n // If you want to remove a socket from the pool, just close it.\n // All socket errors end in a close event anyway.\n self.removeSocket(s, options);\n\n // [patch start]\n self.emit('close');\n // [patch end]\n }\n s.on('close', onClose);\n\n // [patch start]\n // start socket timeout handler\n function onTimeout() {\n debug('CLIENT socket onTimeout');\n s.destroy();\n // Remove it from freeSockets immediately to prevent new requests from being sent through this socket.\n self.removeSocket(s, options);\n self.emit('timeout');\n }\n s.on('timeout', onTimeout);\n // set the default timer\n s.setTimeout(self.timeout);\n // [patch end]\n\n function onRemove() {\n // We need this function for cases like HTTP 'upgrade'\n // (defined by WebSockets) where we need to remove a socket from the\n // pool because it'll be locked up indefinitely\n debug('CLIENT socket onRemove');\n self.removeSocket(s, options);\n s.removeListener('close', onClose);\n s.removeListener('free', onFree);\n s.removeListener('agentRemove', onRemove);\n\n // [patch start]\n // remove socket timeout handler\n s.setTimeout(0, onTimeout);\n // [patch end]\n }\n s.on('agentRemove', onRemove);\n cb(null, s);\n }\n};\n\nfunction calculateServerName(options, req) {\n let servername = options.host;\n const hostHeader = req.getHeader('host');\n if (hostHeader) {\n // abc => abc\n // abc:123 => abc\n // [::1] => ::1\n // [::1]:123 => ::1\n if (hostHeader.startsWith('[')) {\n const index = hostHeader.indexOf(']');\n if (index === -1) {\n // Leading '[', but no ']'. Need to do something...\n servername = hostHeader;\n } else {\n servername = hostHeader.substr(1, index - 1);\n }\n } else {\n servername = hostHeader.split(':', 1)[0];\n }\n }\n return servername;\n}\n\nAgent.prototype.removeSocket = function removeSocket(s, options) {\n var name = this.getName(options);\n debug('removeSocket', name, 'writable:', s.writable);\n var sets = [this.sockets];\n\n // If the socket was destroyed, remove it from the free buffers too.\n if (!s.writable)\n sets.push(this.freeSockets);\n\n for (var sk = 0; sk < sets.length; sk++) {\n var sockets = sets[sk];\n\n if (sockets[name]) {\n var index = sockets[name].indexOf(s);\n if (index !== -1) {\n sockets[name].splice(index, 1);\n // Don't leak\n if (sockets[name].length === 0)\n delete sockets[name];\n }\n }\n }\n\n // [patch start]\n var freeLen = this.freeSockets[name] ? this.freeSockets[name].length : 0;\n var sockLen = freeLen + this.sockets[name] ? this.sockets[name].length : 0;\n // [patch end]\n\n if (this.requests[name] && this.requests[name].length && sockLen < this.maxSockets) {\n debug('removeSocket, have a request, make a socket');\n var req = this.requests[name][0];\n // If we have pending requests and a socket gets closed make a new one\n this.createSocket(req, options, function(err, newSocket) {\n if (err) {\n process.nextTick(function() {\n req.emit('error', err);\n });\n return;\n }\n newSocket.emit('free');\n });\n }\n};\n\nAgent.prototype.destroy = function destroy() {\n var sets = [this.freeSockets, this.sockets];\n for (var s = 0; s < sets.length; s++) {\n var set = sets[s];\n var keys = Object.keys(set);\n for (var v = 0; v < keys.length; v++) {\n var setName = set[keys[v]];\n for (var n = 0; n < setName.length; n++) {\n setName[n].destroy();\n }\n }\n }\n};\n\nexports.globalAgent = new Agent();\n", "/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar w = d * 7;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n * - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function (val, options) {\n options = options || {};\n var type = typeof val;\n if (type === 'string' && val.length > 0) {\n return parse(val);\n } else if (type === 'number' && isFinite(val)) {\n return options.long ? fmtLong(val) : fmtShort(val);\n }\n throw new Error(\n 'val is not a non-empty string or a valid number. val=' +\n JSON.stringify(val)\n );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n str = String(str);\n if (str.length > 100) {\n return;\n }\n var match = /^(-?(?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(\n str\n );\n if (!match) {\n return;\n }\n var n = parseFloat(match[1]);\n var type = (match[2] || 'ms').toLowerCase();\n switch (type) {\n case 'years':\n case 'year':\n case 'yrs':\n case 'yr':\n case 'y':\n return n * y;\n case 'weeks':\n case 'week':\n case 'w':\n return n * w;\n case 'days':\n case 'day':\n case 'd':\n return n * d;\n case 'hours':\n case 'hour':\n case 'hrs':\n case 'hr':\n case 'h':\n return n * h;\n case 'minutes':\n case 'minute':\n case 'mins':\n case 'min':\n case 'm':\n return n * m;\n case 'seconds':\n case 'second':\n case 'secs':\n case 'sec':\n case 's':\n return n * s;\n case 'milliseconds':\n case 'millisecond':\n case 'msecs':\n case 'msec':\n case 'ms':\n return n;\n default:\n return undefined;\n }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return Math.round(ms / d) + 'd';\n }\n if (msAbs >= h) {\n return Math.round(ms / h) + 'h';\n }\n if (msAbs >= m) {\n return Math.round(ms / m) + 'm';\n }\n if (msAbs >= s) {\n return Math.round(ms / s) + 's';\n }\n return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return plural(ms, msAbs, d, 'day');\n }\n if (msAbs >= h) {\n return plural(ms, msAbs, h, 'hour');\n }\n if (msAbs >= m) {\n return plural(ms, msAbs, m, 'minute');\n }\n if (msAbs >= s) {\n return plural(ms, msAbs, s, 'second');\n }\n return ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, msAbs, n, name) {\n var isPlural = msAbs >= n * 1.5;\n return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : '');\n}\n", "/*!\n * humanize-ms - index.js\n * Copyright(c) 2014 dead_horse \n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module dependencies.\n */\n\nvar util = require('util');\nvar ms = require('ms');\n\nmodule.exports = function (t) {\n if (typeof t === 'number') return t;\n var r = ms(t);\n if (r === undefined) {\n var err = new Error(util.format('humanize-ms(%j) result undefined', t));\n console.warn(err.stack);\n }\n return r;\n};\n", "/**\n * refer:\n * * @atimb \"Real keep-alive HTTP agent\": https://gist.github.com/2963672\n * * https://github.com/joyent/node/blob/master/lib/http.js\n * * https://github.com/joyent/node/blob/master/lib/https.js\n * * https://github.com/joyent/node/blob/master/lib/_http_agent.js\n */\n\n'use strict';\n\nconst OriginalAgent = require('./_http_agent').Agent;\nconst ms = require('humanize-ms');\n\nclass Agent extends OriginalAgent {\n constructor(options) {\n options = options || {};\n options.keepAlive = options.keepAlive !== false;\n // default is keep-alive and 15s free socket timeout\n if (options.freeSocketKeepAliveTimeout === undefined) {\n options.freeSocketKeepAliveTimeout = 15000;\n }\n // Legacy API: keepAliveTimeout should be rename to `freeSocketKeepAliveTimeout`\n if (options.keepAliveTimeout) {\n options.freeSocketKeepAliveTimeout = options.keepAliveTimeout;\n }\n options.freeSocketKeepAliveTimeout = ms(options.freeSocketKeepAliveTimeout);\n\n // Sets the socket to timeout after timeout milliseconds of inactivity on the socket.\n // By default is double free socket keepalive timeout.\n if (options.timeout === undefined) {\n options.timeout = options.freeSocketKeepAliveTimeout * 2;\n // make sure socket default inactivity timeout >= 30s\n if (options.timeout < 30000) {\n options.timeout = 30000;\n }\n }\n options.timeout = ms(options.timeout);\n\n super(options);\n\n this.createSocketCount = 0;\n this.createSocketCountLastCheck = 0;\n\n this.createSocketErrorCount = 0;\n this.createSocketErrorCountLastCheck = 0;\n\n this.closeSocketCount = 0;\n this.closeSocketCountLastCheck = 0;\n\n // socket error event count\n this.errorSocketCount = 0;\n this.errorSocketCountLastCheck = 0;\n\n this.requestCount = 0;\n this.requestCountLastCheck = 0;\n\n this.timeoutSocketCount = 0;\n this.timeoutSocketCountLastCheck = 0;\n\n this.on('free', s => {\n this.requestCount++;\n // last enter free queue timestamp\n s.lastFreeTime = Date.now();\n });\n this.on('timeout', () => {\n this.timeoutSocketCount++;\n });\n this.on('close', () => {\n this.closeSocketCount++;\n });\n this.on('error', () => {\n this.errorSocketCount++;\n });\n }\n\n createSocket(req, options, cb) {\n super.createSocket(req, options, (err, socket) => {\n if (err) {\n this.createSocketErrorCount++;\n return cb(err);\n }\n if (this.keepAlive) {\n // Disable Nagle's algorithm: http://blog.caustik.com/2012/04/08/scaling-node-js-to-100k-concurrent-connections/\n // https://fengmk2.com/benchmark/nagle-algorithm-delayed-ack-mock.html\n socket.setNoDelay(true);\n }\n this.createSocketCount++;\n cb(null, socket);\n });\n }\n\n get statusChanged() {\n const changed = this.createSocketCount !== this.createSocketCountLastCheck ||\n this.createSocketErrorCount !== this.createSocketErrorCountLastCheck ||\n this.closeSocketCount !== this.closeSocketCountLastCheck ||\n this.errorSocketCount !== this.errorSocketCountLastCheck ||\n this.timeoutSocketCount !== this.timeoutSocketCountLastCheck ||\n this.requestCount !== this.requestCountLastCheck;\n if (changed) {\n this.createSocketCountLastCheck = this.createSocketCount;\n this.createSocketErrorCountLastCheck = this.createSocketErrorCount;\n this.closeSocketCountLastCheck = this.closeSocketCount;\n this.errorSocketCountLastCheck = this.errorSocketCount;\n this.timeoutSocketCountLastCheck = this.timeoutSocketCount;\n this.requestCountLastCheck = this.requestCount;\n }\n return changed;\n }\n\n getCurrentStatus() {\n return {\n createSocketCount: this.createSocketCount,\n createSocketErrorCount: this.createSocketErrorCount,\n closeSocketCount: this.closeSocketCount,\n errorSocketCount: this.errorSocketCount,\n timeoutSocketCount: this.timeoutSocketCount,\n requestCount: this.requestCount,\n freeSockets: inspect(this.freeSockets),\n sockets: inspect(this.sockets),\n requests: inspect(this.requests),\n };\n }\n}\n\nmodule.exports = Agent;\n\nfunction inspect(obj) {\n const res = {};\n for (const key in obj) {\n res[key] = obj[key].length;\n }\n return res;\n}\n", "/**\n * Https Agent base on custom http agent\n */\n\n'use strict';\n\nconst https = require('https');\nconst HttpAgent = require('./agent');\nconst OriginalHttpsAgent = https.Agent;\n\nclass HttpsAgent extends HttpAgent {\n constructor(options) {\n super(options);\n\n this.defaultPort = 443;\n this.protocol = 'https:';\n this.maxCachedSessions = this.options.maxCachedSessions;\n if (this.maxCachedSessions === undefined) {\n this.maxCachedSessions = 100;\n }\n\n this._sessionCache = {\n map: {},\n list: [],\n };\n }\n}\n\n[\n 'createConnection',\n 'getName',\n '_getSession',\n '_cacheSession',\n // https://github.com/nodejs/node/pull/4982\n '_evictSession',\n].forEach(function(method) {\n if (typeof OriginalHttpsAgent.prototype[method] === 'function') {\n HttpsAgent.prototype[method] = OriginalHttpsAgent.prototype[method];\n }\n});\n\nmodule.exports = HttpsAgent;\n", "'use strict';\n\nmodule.exports = require('./lib/agent');\nmodule.exports.HttpsAgent = require('./lib/https_agent');\n", "/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n * - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function(val, options) {\n options = options || {};\n var type = typeof val;\n if (type === 'string' && val.length > 0) {\n return parse(val);\n } else if (type === 'number' && isNaN(val) === false) {\n return options.long ? fmtLong(val) : fmtShort(val);\n }\n throw new Error(\n 'val is not a non-empty string or a valid number. val=' +\n JSON.stringify(val)\n );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n str = String(str);\n if (str.length > 100) {\n return;\n }\n var match = /^((?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(\n str\n );\n if (!match) {\n return;\n }\n var n = parseFloat(match[1]);\n var type = (match[2] || 'ms').toLowerCase();\n switch (type) {\n case 'years':\n case 'year':\n case 'yrs':\n case 'yr':\n case 'y':\n return n * y;\n case 'days':\n case 'day':\n case 'd':\n return n * d;\n case 'hours':\n case 'hour':\n case 'hrs':\n case 'hr':\n case 'h':\n return n * h;\n case 'minutes':\n case 'minute':\n case 'mins':\n case 'min':\n case 'm':\n return n * m;\n case 'seconds':\n case 'second':\n case 'secs':\n case 'sec':\n case 's':\n return n * s;\n case 'milliseconds':\n case 'millisecond':\n case 'msecs':\n case 'msec':\n case 'ms':\n return n;\n default:\n return undefined;\n }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n if (ms >= d) {\n return Math.round(ms / d) + 'd';\n }\n if (ms >= h) {\n return Math.round(ms / h) + 'h';\n }\n if (ms >= m) {\n return Math.round(ms / m) + 'm';\n }\n if (ms >= s) {\n return Math.round(ms / s) + 's';\n }\n return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n return plural(ms, d, 'day') ||\n plural(ms, h, 'hour') ||\n plural(ms, m, 'minute') ||\n plural(ms, s, 'second') ||\n ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, n, name) {\n if (ms < n) {\n return;\n }\n if (ms < n * 1.5) {\n return Math.floor(ms / n) + ' ' + name;\n }\n return Math.ceil(ms / n) + ' ' + name + 's';\n}\n", "\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n *\n * Expose `debug()` as the module.\n */\n\nexports = module.exports = createDebug.debug = createDebug['default'] = createDebug;\nexports.coerce = coerce;\nexports.disable = disable;\nexports.enable = enable;\nexports.enabled = enabled;\nexports.humanize = require('ms');\n\n/**\n * Active `debug` instances.\n */\nexports.instances = [];\n\n/**\n * The currently active debug mode names, and names to skip.\n */\n\nexports.names = [];\nexports.skips = [];\n\n/**\n * Map of special \"%n\" handling functions, for the debug \"format\" argument.\n *\n * Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n */\n\nexports.formatters = {};\n\n/**\n * Select a color.\n * @param {String} namespace\n * @return {Number}\n * @api private\n */\n\nfunction selectColor(namespace) {\n var hash = 0, i;\n\n for (i in namespace) {\n hash = ((hash << 5) - hash) + namespace.charCodeAt(i);\n hash |= 0; // Convert to 32bit integer\n }\n\n return exports.colors[Math.abs(hash) % exports.colors.length];\n}\n\n/**\n * Create a debugger with the given `namespace`.\n *\n * @param {String} namespace\n * @return {Function}\n * @api public\n */\n\nfunction createDebug(namespace) {\n\n var prevTime;\n\n function debug() {\n // disabled?\n if (!debug.enabled) return;\n\n var self = debug;\n\n // set `diff` timestamp\n var curr = +new Date();\n var ms = curr - (prevTime || curr);\n self.diff = ms;\n self.prev = prevTime;\n self.curr = curr;\n prevTime = curr;\n\n // turn the `arguments` into a proper Array\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n\n args[0] = exports.coerce(args[0]);\n\n if ('string' !== typeof args[0]) {\n // anything else let's inspect with %O\n args.unshift('%O');\n }\n\n // apply any `formatters` transformations\n var index = 0;\n args[0] = args[0].replace(/%([a-zA-Z%])/g, function(match, format) {\n // if we encounter an escaped % then don't increase the array index\n if (match === '%%') return match;\n index++;\n var formatter = exports.formatters[format];\n if ('function' === typeof formatter) {\n var val = args[index];\n match = formatter.call(self, val);\n\n // now we need to remove `args[index]` since it's inlined in the `format`\n args.splice(index, 1);\n index--;\n }\n return match;\n });\n\n // apply env-specific formatting (colors, etc.)\n exports.formatArgs.call(self, args);\n\n var logFn = debug.log || exports.log || console.log.bind(console);\n logFn.apply(self, args);\n }\n\n debug.namespace = namespace;\n debug.enabled = exports.enabled(namespace);\n debug.useColors = exports.useColors();\n debug.color = selectColor(namespace);\n debug.destroy = destroy;\n\n // env-specific initialization logic for debug instances\n if ('function' === typeof exports.init) {\n exports.init(debug);\n }\n\n exports.instances.push(debug);\n\n return debug;\n}\n\nfunction destroy () {\n var index = exports.instances.indexOf(this);\n if (index !== -1) {\n exports.instances.splice(index, 1);\n return true;\n } else {\n return false;\n }\n}\n\n/**\n * Enables a debug mode by namespaces. This can include modes\n * separated by a colon and wildcards.\n *\n * @param {String} namespaces\n * @api public\n */\n\nfunction enable(namespaces) {\n exports.save(namespaces);\n\n exports.names = [];\n exports.skips = [];\n\n var i;\n var split = (typeof namespaces === 'string' ? namespaces : '').split(/[\\s,]+/);\n var len = split.length;\n\n for (i = 0; i < len; i++) {\n if (!split[i]) continue; // ignore empty strings\n namespaces = split[i].replace(/\\*/g, '.*?');\n if (namespaces[0] === '-') {\n exports.skips.push(new RegExp('^' + namespaces.substr(1) + '$'));\n } else {\n exports.names.push(new RegExp('^' + namespaces + '$'));\n }\n }\n\n for (i = 0; i < exports.instances.length; i++) {\n var instance = exports.instances[i];\n instance.enabled = exports.enabled(instance.namespace);\n }\n}\n\n/**\n * Disable debug output.\n *\n * @api public\n */\n\nfunction disable() {\n exports.enable('');\n}\n\n/**\n * Returns true if the given mode name is enabled, false otherwise.\n *\n * @param {String} name\n * @return {Boolean}\n * @api public\n */\n\nfunction enabled(name) {\n if (name[name.length - 1] === '*') {\n return true;\n }\n var i, len;\n for (i = 0, len = exports.skips.length; i < len; i++) {\n if (exports.skips[i].test(name)) {\n return false;\n }\n }\n for (i = 0, len = exports.names.length; i < len; i++) {\n if (exports.names[i].test(name)) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * Coerce `val`.\n *\n * @param {Mixed} val\n * @return {Mixed}\n * @api private\n */\n\nfunction coerce(val) {\n if (val instanceof Error) return val.stack || val.message;\n return val;\n}\n", "/**\n * This is the web browser implementation of `debug()`.\n *\n * Expose `debug()` as the module.\n */\n\nexports = module.exports = require('./debug');\nexports.log = log;\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = 'undefined' != typeof chrome\n && 'undefined' != typeof chrome.storage\n ? chrome.storage.local\n : localstorage();\n\n/**\n * Colors.\n */\n\nexports.colors = [\n '#0000CC', '#0000FF', '#0033CC', '#0033FF', '#0066CC', '#0066FF', '#0099CC',\n '#0099FF', '#00CC00', '#00CC33', '#00CC66', '#00CC99', '#00CCCC', '#00CCFF',\n '#3300CC', '#3300FF', '#3333CC', '#3333FF', '#3366CC', '#3366FF', '#3399CC',\n '#3399FF', '#33CC00', '#33CC33', '#33CC66', '#33CC99', '#33CCCC', '#33CCFF',\n '#6600CC', '#6600FF', '#6633CC', '#6633FF', '#66CC00', '#66CC33', '#9900CC',\n '#9900FF', '#9933CC', '#9933FF', '#99CC00', '#99CC33', '#CC0000', '#CC0033',\n '#CC0066', '#CC0099', '#CC00CC', '#CC00FF', '#CC3300', '#CC3333', '#CC3366',\n '#CC3399', '#CC33CC', '#CC33FF', '#CC6600', '#CC6633', '#CC9900', '#CC9933',\n '#CCCC00', '#CCCC33', '#FF0000', '#FF0033', '#FF0066', '#FF0099', '#FF00CC',\n '#FF00FF', '#FF3300', '#FF3333', '#FF3366', '#FF3399', '#FF33CC', '#FF33FF',\n '#FF6600', '#FF6633', '#FF9900', '#FF9933', '#FFCC00', '#FFCC33'\n];\n\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n\nfunction useColors() {\n // NB: In an Electron preload script, document will be defined but not fully\n // initialized. Since we know we're in Chrome, we'll just detect this case\n // explicitly\n if (typeof window !== 'undefined' && window.process && window.process.type === 'renderer') {\n return true;\n }\n\n // Internet Explorer and Edge do not support colors.\n if (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)) {\n return false;\n }\n\n // is webkit? http://stackoverflow.com/a/16459606/376773\n // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n return (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||\n // is firebug? http://stackoverflow.com/a/398120/376773\n (typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||\n // is firefox >= v31?\n // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/) && parseInt(RegExp.$1, 10) >= 31) ||\n // double check webkit in userAgent just in case we are in a worker\n (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/));\n}\n\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nexports.formatters.j = function(v) {\n try {\n return JSON.stringify(v);\n } catch (err) {\n return '[UnexpectedJSONParseError]: ' + err.message;\n }\n};\n\n\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n var useColors = this.useColors;\n\n args[0] = (useColors ? '%c' : '')\n + this.namespace\n + (useColors ? ' %c' : ' ')\n + args[0]\n + (useColors ? '%c ' : ' ')\n + '+' + exports.humanize(this.diff);\n\n if (!useColors) return;\n\n var c = 'color: ' + this.color;\n args.splice(1, 0, c, 'color: inherit')\n\n // the final \"%c\" is somewhat tricky, because there could be other\n // arguments passed either before or after the %c, so we need to\n // figure out the correct index to insert the CSS into\n var index = 0;\n var lastC = 0;\n args[0].replace(/%[a-zA-Z%]/g, function(match) {\n if ('%%' === match) return;\n index++;\n if ('%c' === match) {\n // we only are interested in the *last* %c\n // (the user may have provided their own)\n lastC = index;\n }\n });\n\n args.splice(lastC, 0, c);\n}\n\n/**\n * Invokes `console.log()` when available.\n * No-op when `console.log` is not a \"function\".\n *\n * @api public\n */\n\nfunction log() {\n // this hackery is required for IE8/9, where\n // the `console.log` function doesn't have 'apply'\n return 'object' === typeof console\n && console.log\n && Function.prototype.apply.call(console.log, console, arguments);\n}\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\n\nfunction save(namespaces) {\n try {\n if (null == namespaces) {\n exports.storage.removeItem('debug');\n } else {\n exports.storage.debug = namespaces;\n }\n } catch(e) {}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\n\nfunction load() {\n var r;\n try {\n r = exports.storage.debug;\n } catch(e) {}\n\n // If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n if (!r && typeof process !== 'undefined' && 'env' in process) {\n r = process.env.DEBUG;\n }\n\n return r;\n}\n\n/**\n * Enable namespaces listed in `localStorage.debug` initially.\n */\n\nexports.enable(load());\n\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\nfunction localstorage() {\n try {\n return window.localStorage;\n } catch (e) {}\n}\n", "'use strict';\n\nmodule.exports = (flag, argv = process.argv) => {\n\tconst prefix = flag.startsWith('-') ? '' : (flag.length === 1 ? '-' : '--');\n\tconst position = argv.indexOf(prefix + flag);\n\tconst terminatorPosition = argv.indexOf('--');\n\treturn position !== -1 && (terminatorPosition === -1 || position < terminatorPosition);\n};\n", "'use strict';\nconst os = require('os');\nconst tty = require('tty');\nconst hasFlag = require('has-flag');\n\nconst {env} = process;\n\nlet forceColor;\nif (hasFlag('no-color') ||\n\thasFlag('no-colors') ||\n\thasFlag('color=false') ||\n\thasFlag('color=never')) {\n\tforceColor = 0;\n} else if (hasFlag('color') ||\n\thasFlag('colors') ||\n\thasFlag('color=true') ||\n\thasFlag('color=always')) {\n\tforceColor = 1;\n}\n\nif ('FORCE_COLOR' in env) {\n\tif (env.FORCE_COLOR === 'true') {\n\t\tforceColor = 1;\n\t} else if (env.FORCE_COLOR === 'false') {\n\t\tforceColor = 0;\n\t} else {\n\t\tforceColor = env.FORCE_COLOR.length === 0 ? 1 : Math.min(parseInt(env.FORCE_COLOR, 10), 3);\n\t}\n}\n\nfunction translateLevel(level) {\n\tif (level === 0) {\n\t\treturn false;\n\t}\n\n\treturn {\n\t\tlevel,\n\t\thasBasic: true,\n\t\thas256: level >= 2,\n\t\thas16m: level >= 3\n\t};\n}\n\nfunction supportsColor(haveStream, streamIsTTY) {\n\tif (forceColor === 0) {\n\t\treturn 0;\n\t}\n\n\tif (hasFlag('color=16m') ||\n\t\thasFlag('color=full') ||\n\t\thasFlag('color=truecolor')) {\n\t\treturn 3;\n\t}\n\n\tif (hasFlag('color=256')) {\n\t\treturn 2;\n\t}\n\n\tif (haveStream && !streamIsTTY && forceColor === undefined) {\n\t\treturn 0;\n\t}\n\n\tconst min = forceColor || 0;\n\n\tif (env.TERM === 'dumb') {\n\t\treturn min;\n\t}\n\n\tif (process.platform === 'win32') {\n\t\t// Windows 10 build 10586 is the first Windows release that supports 256 colors.\n\t\t// Windows 10 build 14931 is the first release that supports 16m/TrueColor.\n\t\tconst osRelease = os.release().split('.');\n\t\tif (\n\t\t\tNumber(osRelease[0]) >= 10 &&\n\t\t\tNumber(osRelease[2]) >= 10586\n\t\t) {\n\t\t\treturn Number(osRelease[2]) >= 14931 ? 3 : 2;\n\t\t}\n\n\t\treturn 1;\n\t}\n\n\tif ('CI' in env) {\n\t\tif (['TRAVIS', 'CIRCLECI', 'APPVEYOR', 'GITLAB_CI', 'GITHUB_ACTIONS', 'BUILDKITE'].some(sign => sign in env) || env.CI_NAME === 'codeship') {\n\t\t\treturn 1;\n\t\t}\n\n\t\treturn min;\n\t}\n\n\tif ('TEAMCITY_VERSION' in env) {\n\t\treturn /^(9\\.(0*[1-9]\\d*)\\.|\\d{2,}\\.)/.test(env.TEAMCITY_VERSION) ? 1 : 0;\n\t}\n\n\tif (env.COLORTERM === 'truecolor') {\n\t\treturn 3;\n\t}\n\n\tif ('TERM_PROGRAM' in env) {\n\t\tconst version = parseInt((env.TERM_PROGRAM_VERSION || '').split('.')[0], 10);\n\n\t\tswitch (env.TERM_PROGRAM) {\n\t\t\tcase 'iTerm.app':\n\t\t\t\treturn version >= 3 ? 3 : 2;\n\t\t\tcase 'Apple_Terminal':\n\t\t\t\treturn 2;\n\t\t\t// No default\n\t\t}\n\t}\n\n\tif (/-256(color)?$/i.test(env.TERM)) {\n\t\treturn 2;\n\t}\n\n\tif (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)) {\n\t\treturn 1;\n\t}\n\n\tif ('COLORTERM' in env) {\n\t\treturn 1;\n\t}\n\n\treturn min;\n}\n\nfunction getSupportLevel(stream) {\n\tconst level = supportsColor(stream, stream && stream.isTTY);\n\treturn translateLevel(level);\n}\n\nmodule.exports = {\n\tsupportsColor: getSupportLevel,\n\tstdout: translateLevel(supportsColor(true, tty.isatty(1))),\n\tstderr: translateLevel(supportsColor(true, tty.isatty(2)))\n};\n", "/**\n * Module dependencies.\n */\n\nvar tty = require('tty');\nvar util = require('util');\n\n/**\n * This is the Node.js implementation of `debug()`.\n *\n * Expose `debug()` as the module.\n */\n\nexports = module.exports = require('./debug');\nexports.init = init;\nexports.log = log;\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\n\n/**\n * Colors.\n */\n\nexports.colors = [ 6, 2, 3, 4, 5, 1 ];\n\ntry {\n var supportsColor = require('supports-color');\n if (supportsColor && supportsColor.level >= 2) {\n exports.colors = [\n 20, 21, 26, 27, 32, 33, 38, 39, 40, 41, 42, 43, 44, 45, 56, 57, 62, 63, 68,\n 69, 74, 75, 76, 77, 78, 79, 80, 81, 92, 93, 98, 99, 112, 113, 128, 129, 134,\n 135, 148, 149, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171,\n 172, 173, 178, 179, 184, 185, 196, 197, 198, 199, 200, 201, 202, 203, 204,\n 205, 206, 207, 208, 209, 214, 215, 220, 221\n ];\n }\n} catch (err) {\n // swallow - we only care if `supports-color` is available; it doesn't have to be.\n}\n\n/**\n * Build up the default `inspectOpts` object from the environment variables.\n *\n * $ DEBUG_COLORS=no DEBUG_DEPTH=10 DEBUG_SHOW_HIDDEN=enabled node script.js\n */\n\nexports.inspectOpts = Object.keys(process.env).filter(function (key) {\n return /^debug_/i.test(key);\n}).reduce(function (obj, key) {\n // camel-case\n var prop = key\n .substring(6)\n .toLowerCase()\n .replace(/_([a-z])/g, function (_, k) { return k.toUpperCase() });\n\n // coerce string value into JS value\n var val = process.env[key];\n if (/^(yes|on|true|enabled)$/i.test(val)) val = true;\n else if (/^(no|off|false|disabled)$/i.test(val)) val = false;\n else if (val === 'null') val = null;\n else val = Number(val);\n\n obj[prop] = val;\n return obj;\n}, {});\n\n/**\n * Is stdout a TTY? Colored output is enabled when `true`.\n */\n\nfunction useColors() {\n return 'colors' in exports.inspectOpts\n ? Boolean(exports.inspectOpts.colors)\n : tty.isatty(process.stderr.fd);\n}\n\n/**\n * Map %o to `util.inspect()`, all on a single line.\n */\n\nexports.formatters.o = function(v) {\n this.inspectOpts.colors = this.useColors;\n return util.inspect(v, this.inspectOpts)\n .split('\\n').map(function(str) {\n return str.trim()\n }).join(' ');\n};\n\n/**\n * Map %o to `util.inspect()`, allowing multiple lines if needed.\n */\n\nexports.formatters.O = function(v) {\n this.inspectOpts.colors = this.useColors;\n return util.inspect(v, this.inspectOpts);\n};\n\n/**\n * Adds ANSI color escape codes if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n var name = this.namespace;\n var useColors = this.useColors;\n\n if (useColors) {\n var c = this.color;\n var colorCode = '\\u001b[3' + (c < 8 ? c : '8;5;' + c);\n var prefix = ' ' + colorCode + ';1m' + name + ' ' + '\\u001b[0m';\n\n args[0] = prefix + args[0].split('\\n').join('\\n' + prefix);\n args.push(colorCode + 'm+' + exports.humanize(this.diff) + '\\u001b[0m');\n } else {\n args[0] = getDate() + name + ' ' + args[0];\n }\n}\n\nfunction getDate() {\n if (exports.inspectOpts.hideDate) {\n return '';\n } else {\n return new Date().toISOString() + ' ';\n }\n}\n\n/**\n * Invokes `util.format()` with the specified arguments and writes to stderr.\n */\n\nfunction log() {\n return process.stderr.write(util.format.apply(util, arguments) + '\\n');\n}\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\n\nfunction save(namespaces) {\n if (null == namespaces) {\n // If you set a process.env field to null or undefined, it gets cast to the\n // string 'null' or 'undefined'. Just delete instead.\n delete process.env.DEBUG;\n } else {\n process.env.DEBUG = namespaces;\n }\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\n\nfunction load() {\n return process.env.DEBUG;\n}\n\n/**\n * Init logic for `debug` instances.\n *\n * Create a new `inspectOpts` object in case `useColors` is set\n * differently for a particular `debug` instance.\n */\n\nfunction init (debug) {\n debug.inspectOpts = {};\n\n var keys = Object.keys(exports.inspectOpts);\n for (var i = 0; i < keys.length; i++) {\n debug.inspectOpts[keys[i]] = exports.inspectOpts[keys[i]];\n }\n}\n\n/**\n * Enable namespaces listed in `process.env.DEBUG` initially.\n */\n\nexports.enable(load());\n", "/**\n * Detect Electron renderer process, which is node, but we should\n * treat as a browser.\n */\n\nif (typeof process === 'undefined' || process.type === 'renderer') {\n module.exports = require('./browser.js');\n} else {\n module.exports = require('./node.js');\n}\n", "function RetryOperation(timeouts, options) {\n // Compatibility for the old (timeouts, retryForever) signature\n if (typeof options === 'boolean') {\n options = { forever: options };\n }\n\n this._originalTimeouts = JSON.parse(JSON.stringify(timeouts));\n this._timeouts = timeouts;\n this._options = options || {};\n this._maxRetryTime = options && options.maxRetryTime || Infinity;\n this._fn = null;\n this._errors = [];\n this._attempts = 1;\n this._operationTimeout = null;\n this._operationTimeoutCb = null;\n this._timeout = null;\n this._operationStart = null;\n\n if (this._options.forever) {\n this._cachedTimeouts = this._timeouts.slice(0);\n }\n}\nmodule.exports = RetryOperation;\n\nRetryOperation.prototype.reset = function() {\n this._attempts = 1;\n this._timeouts = this._originalTimeouts;\n}\n\nRetryOperation.prototype.stop = function() {\n if (this._timeout) {\n clearTimeout(this._timeout);\n }\n\n this._timeouts = [];\n this._cachedTimeouts = null;\n};\n\nRetryOperation.prototype.retry = function(err) {\n if (this._timeout) {\n clearTimeout(this._timeout);\n }\n\n if (!err) {\n return false;\n }\n var currentTime = new Date().getTime();\n if (err && currentTime - this._operationStart >= this._maxRetryTime) {\n this._errors.unshift(new Error('RetryOperation timeout occurred'));\n return false;\n }\n\n this._errors.push(err);\n\n var timeout = this._timeouts.shift();\n if (timeout === undefined) {\n if (this._cachedTimeouts) {\n // retry forever, only keep last error\n this._errors.splice(this._errors.length - 1, this._errors.length);\n this._timeouts = this._cachedTimeouts.slice(0);\n timeout = this._timeouts.shift();\n } else {\n return false;\n }\n }\n\n var self = this;\n var timer = setTimeout(function() {\n self._attempts++;\n\n if (self._operationTimeoutCb) {\n self._timeout = setTimeout(function() {\n self._operationTimeoutCb(self._attempts);\n }, self._operationTimeout);\n\n if (self._options.unref) {\n self._timeout.unref();\n }\n }\n\n self._fn(self._attempts);\n }, timeout);\n\n if (this._options.unref) {\n timer.unref();\n }\n\n return true;\n};\n\nRetryOperation.prototype.attempt = function(fn, timeoutOps) {\n this._fn = fn;\n\n if (timeoutOps) {\n if (timeoutOps.timeout) {\n this._operationTimeout = timeoutOps.timeout;\n }\n if (timeoutOps.cb) {\n this._operationTimeoutCb = timeoutOps.cb;\n }\n }\n\n var self = this;\n if (this._operationTimeoutCb) {\n this._timeout = setTimeout(function() {\n self._operationTimeoutCb();\n }, self._operationTimeout);\n }\n\n this._operationStart = new Date().getTime();\n\n this._fn(this._attempts);\n};\n\nRetryOperation.prototype.try = function(fn) {\n console.log('Using RetryOperation.try() is deprecated');\n this.attempt(fn);\n};\n\nRetryOperation.prototype.start = function(fn) {\n console.log('Using RetryOperation.start() is deprecated');\n this.attempt(fn);\n};\n\nRetryOperation.prototype.start = RetryOperation.prototype.try;\n\nRetryOperation.prototype.errors = function() {\n return this._errors;\n};\n\nRetryOperation.prototype.attempts = function() {\n return this._attempts;\n};\n\nRetryOperation.prototype.mainError = function() {\n if (this._errors.length === 0) {\n return null;\n }\n\n var counts = {};\n var mainError = null;\n var mainErrorCount = 0;\n\n for (var i = 0; i < this._errors.length; i++) {\n var error = this._errors[i];\n var message = error.message;\n var count = (counts[message] || 0) + 1;\n\n counts[message] = count;\n\n if (count >= mainErrorCount) {\n mainError = error;\n mainErrorCount = count;\n }\n }\n\n return mainError;\n};\n", "var RetryOperation = require('./retry_operation');\n\nexports.operation = function(options) {\n var timeouts = exports.timeouts(options);\n return new RetryOperation(timeouts, {\n forever: options && options.forever,\n unref: options && options.unref,\n maxRetryTime: options && options.maxRetryTime\n });\n};\n\nexports.timeouts = function(options) {\n if (options instanceof Array) {\n return [].concat(options);\n }\n\n var opts = {\n retries: 10,\n factor: 2,\n minTimeout: 1 * 1000,\n maxTimeout: Infinity,\n randomize: false\n };\n for (var key in options) {\n opts[key] = options[key];\n }\n\n if (opts.minTimeout > opts.maxTimeout) {\n throw new Error('minTimeout is greater than maxTimeout');\n }\n\n var timeouts = [];\n for (var i = 0; i < opts.retries; i++) {\n timeouts.push(this.createTimeout(i, opts));\n }\n\n if (options && options.forever && !timeouts.length) {\n timeouts.push(this.createTimeout(i, opts));\n }\n\n // sort the array numerically ascending\n timeouts.sort(function(a,b) {\n return a - b;\n });\n\n return timeouts;\n};\n\nexports.createTimeout = function(attempt, opts) {\n var random = (opts.randomize)\n ? (Math.random() + 1)\n : 1;\n\n var timeout = Math.round(random * opts.minTimeout * Math.pow(opts.factor, attempt));\n timeout = Math.min(timeout, opts.maxTimeout);\n\n return timeout;\n};\n\nexports.wrap = function(obj, options, methods) {\n if (options instanceof Array) {\n methods = options;\n options = null;\n }\n\n if (!methods) {\n methods = [];\n for (var key in obj) {\n if (typeof obj[key] === 'function') {\n methods.push(key);\n }\n }\n }\n\n for (var i = 0; i < methods.length; i++) {\n var method = methods[i];\n var original = obj[method];\n\n obj[method] = function retryWrapper(original) {\n var op = exports.operation(options);\n var args = Array.prototype.slice.call(arguments, 1);\n var callback = args.pop();\n\n args.push(function(err) {\n if (op.retry(err)) {\n return;\n }\n if (err) {\n arguments[0] = op.mainError();\n }\n callback.apply(this, arguments);\n });\n\n op.attempt(function() {\n original.apply(obj, args);\n });\n }.bind(obj, original);\n obj[method].options = options;\n }\n};\n", "module.exports = require('./lib/retry');", "// Packages\nvar retrier = require('retry');\n\nfunction retry(fn, opts) {\n function run(resolve, reject) {\n var options = opts || {};\n\n // Default `randomize` to true\n if (!('randomize' in options)) {\n options.randomize = true;\n }\n\n var op = retrier.operation(options);\n\n // We allow the user to abort retrying\n // this makes sense in the cases where\n // knowledge is obtained that retrying\n // would be futile (e.g.: auth errors)\n\n function bail(err) {\n reject(err || new Error('Aborted'));\n }\n\n function onError(err, num) {\n if (err.bail) {\n bail(err);\n return;\n }\n\n if (!op.retry(err)) {\n reject(op.mainError());\n } else if (options.onRetry) {\n options.onRetry(err, num);\n }\n }\n\n function runAttempt(num) {\n var val;\n\n try {\n val = fn(bail, num);\n } catch (err) {\n onError(err, num);\n return;\n }\n\n Promise.resolve(val)\n .then(resolve)\n .catch(function catchIt(err) {\n onError(err, num);\n });\n }\n\n op.attempt(runAttempt);\n }\n\n return new Promise(run);\n}\n\nmodule.exports = retry;\n", "const retry = require('async-retry');\nconst debug = require('debug')('fetch-retry');\n\n// retry settings\nconst MIN_TIMEOUT = 10;\nconst MAX_RETRIES = 5;\nconst MAX_RETRY_AFTER = 20;\nconst FACTOR = 6;\n\nmodule.exports = exports = setup;\n\nfunction isClientError(err) {\n if (!err) return false;\n return (\n err.code === 'ERR_UNESCAPED_CHARACTERS' ||\n err.message === 'Request path contains unescaped characters'\n );\n}\n\nfunction setup(fetch) {\n if (!fetch) {\n fetch = require('node-fetch');\n }\n\n async function fetchRetry(url, opts = {}) {\n const retryOpts = Object.assign(\n {\n // timeouts will be [10, 60, 360, 2160, 12960]\n // (before randomization is added)\n minTimeout: MIN_TIMEOUT,\n retries: MAX_RETRIES,\n factor: FACTOR,\n maxRetryAfter: MAX_RETRY_AFTER,\n },\n opts.retry\n );\n\n if (opts.onRetry) {\n retryOpts.onRetry = (error) => {\n opts.onRetry(error, opts);\n if (opts.retry && opts.retry.onRetry) {\n opts.retry.onRetry(error);\n }\n };\n }\n\n try {\n return await retry(async (bail, attempt) => {\n const { method = 'GET' } = opts;\n try {\n // this will be retried\n const res = await fetch(url, opts);\n debug('status %d', res.status);\n if ((res.status >= 500 && res.status < 600) || res.status === 429) {\n // NOTE: doesn't support http-date format\n const retryAfter = parseInt(res.headers.get('retry-after'), 10);\n if (retryAfter) {\n if (retryAfter > retryOpts.maxRetryAfter) {\n return res;\n } else {\n await new Promise((r) => setTimeout(r, retryAfter * 1e3));\n }\n }\n throw new ResponseError(res);\n } else {\n return res;\n }\n } catch (err) {\n const clientError = isClientError(err);\n const isRetry = !clientError && attempt <= retryOpts.retries;\n debug(\n `${method} ${url} error (status = ${err.status}). ${\n isRetry ? 'retrying' : ''\n }`,\n err\n );\n if (clientError) {\n return bail(err);\n }\n throw err;\n }\n }, retryOpts);\n } catch (err) {\n if (err instanceof ResponseError) {\n return err.res;\n }\n throw err;\n }\n }\n\n for (const key of Object.keys(fetch)) {\n fetchRetry[key] = fetch[key];\n }\n fetchRetry.default = fetchRetry;\n\n return fetchRetry;\n}\n\nclass ResponseError extends Error {\n constructor(res) {\n super(res.statusText);\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, ResponseError);\n }\n\n this.name = this.constructor.name;\n this.res = res;\n\n // backward compat\n this.code = this.status = this.statusCode = res.status;\n this.url = res.url;\n }\n}\n\nexports.ResponseError = ResponseError;\n", "'use strict'\nmodule.exports = function (Yallist) {\n Yallist.prototype[Symbol.iterator] = function* () {\n for (let walker = this.head; walker; walker = walker.next) {\n yield walker.value\n }\n }\n}\n", "'use strict'\nmodule.exports = Yallist\n\nYallist.Node = Node\nYallist.create = Yallist\n\nfunction Yallist (list) {\n var self = this\n if (!(self instanceof Yallist)) {\n self = new Yallist()\n }\n\n self.tail = null\n self.head = null\n self.length = 0\n\n if (list && typeof list.forEach === 'function') {\n list.forEach(function (item) {\n self.push(item)\n })\n } else if (arguments.length > 0) {\n for (var i = 0, l = arguments.length; i < l; i++) {\n self.push(arguments[i])\n }\n }\n\n return self\n}\n\nYallist.prototype.removeNode = function (node) {\n if (node.list !== this) {\n throw new Error('removing node which does not belong to this list')\n }\n\n var next = node.next\n var prev = node.prev\n\n if (next) {\n next.prev = prev\n }\n\n if (prev) {\n prev.next = next\n }\n\n if (node === this.head) {\n this.head = next\n }\n if (node === this.tail) {\n this.tail = prev\n }\n\n node.list.length--\n node.next = null\n node.prev = null\n node.list = null\n\n return next\n}\n\nYallist.prototype.unshiftNode = function (node) {\n if (node === this.head) {\n return\n }\n\n if (node.list) {\n node.list.removeNode(node)\n }\n\n var head = this.head\n node.list = this\n node.next = head\n if (head) {\n head.prev = node\n }\n\n this.head = node\n if (!this.tail) {\n this.tail = node\n }\n this.length++\n}\n\nYallist.prototype.pushNode = function (node) {\n if (node === this.tail) {\n return\n }\n\n if (node.list) {\n node.list.removeNode(node)\n }\n\n var tail = this.tail\n node.list = this\n node.prev = tail\n if (tail) {\n tail.next = node\n }\n\n this.tail = node\n if (!this.head) {\n this.head = node\n }\n this.length++\n}\n\nYallist.prototype.push = function () {\n for (var i = 0, l = arguments.length; i < l; i++) {\n push(this, arguments[i])\n }\n return this.length\n}\n\nYallist.prototype.unshift = function () {\n for (var i = 0, l = arguments.length; i < l; i++) {\n unshift(this, arguments[i])\n }\n return this.length\n}\n\nYallist.prototype.pop = function () {\n if (!this.tail) {\n return undefined\n }\n\n var res = this.tail.value\n this.tail = this.tail.prev\n if (this.tail) {\n this.tail.next = null\n } else {\n this.head = null\n }\n this.length--\n return res\n}\n\nYallist.prototype.shift = function () {\n if (!this.head) {\n return undefined\n }\n\n var res = this.head.value\n this.head = this.head.next\n if (this.head) {\n this.head.prev = null\n } else {\n this.tail = null\n }\n this.length--\n return res\n}\n\nYallist.prototype.forEach = function (fn, thisp) {\n thisp = thisp || this\n for (var walker = this.head, i = 0; walker !== null; i++) {\n fn.call(thisp, walker.value, i, this)\n walker = walker.next\n }\n}\n\nYallist.prototype.forEachReverse = function (fn, thisp) {\n thisp = thisp || this\n for (var walker = this.tail, i = this.length - 1; walker !== null; i--) {\n fn.call(thisp, walker.value, i, this)\n walker = walker.prev\n }\n}\n\nYallist.prototype.get = function (n) {\n for (var i = 0, walker = this.head; walker !== null && i < n; i++) {\n // abort out of the list early if we hit a cycle\n walker = walker.next\n }\n if (i === n && walker !== null) {\n return walker.value\n }\n}\n\nYallist.prototype.getReverse = function (n) {\n for (var i = 0, walker = this.tail; walker !== null && i < n; i++) {\n // abort out of the list early if we hit a cycle\n walker = walker.prev\n }\n if (i === n && walker !== null) {\n return walker.value\n }\n}\n\nYallist.prototype.map = function (fn, thisp) {\n thisp = thisp || this\n var res = new Yallist()\n for (var walker = this.head; walker !== null;) {\n res.push(fn.call(thisp, walker.value, this))\n walker = walker.next\n }\n return res\n}\n\nYallist.prototype.mapReverse = function (fn, thisp) {\n thisp = thisp || this\n var res = new Yallist()\n for (var walker = this.tail; walker !== null;) {\n res.push(fn.call(thisp, walker.value, this))\n walker = walker.prev\n }\n return res\n}\n\nYallist.prototype.reduce = function (fn, initial) {\n var acc\n var walker = this.head\n if (arguments.length > 1) {\n acc = initial\n } else if (this.head) {\n walker = this.head.next\n acc = this.head.value\n } else {\n throw new TypeError('Reduce of empty list with no initial value')\n }\n\n for (var i = 0; walker !== null; i++) {\n acc = fn(acc, walker.value, i)\n walker = walker.next\n }\n\n return acc\n}\n\nYallist.prototype.reduceReverse = function (fn, initial) {\n var acc\n var walker = this.tail\n if (arguments.length > 1) {\n acc = initial\n } else if (this.tail) {\n walker = this.tail.prev\n acc = this.tail.value\n } else {\n throw new TypeError('Reduce of empty list with no initial value')\n }\n\n for (var i = this.length - 1; walker !== null; i--) {\n acc = fn(acc, walker.value, i)\n walker = walker.prev\n }\n\n return acc\n}\n\nYallist.prototype.toArray = function () {\n var arr = new Array(this.length)\n for (var i = 0, walker = this.head; walker !== null; i++) {\n arr[i] = walker.value\n walker = walker.next\n }\n return arr\n}\n\nYallist.prototype.toArrayReverse = function () {\n var arr = new Array(this.length)\n for (var i = 0, walker = this.tail; walker !== null; i++) {\n arr[i] = walker.value\n walker = walker.prev\n }\n return arr\n}\n\nYallist.prototype.slice = function (from, to) {\n to = to || this.length\n if (to < 0) {\n to += this.length\n }\n from = from || 0\n if (from < 0) {\n from += this.length\n }\n var ret = new Yallist()\n if (to < from || to < 0) {\n return ret\n }\n if (from < 0) {\n from = 0\n }\n if (to > this.length) {\n to = this.length\n }\n for (var i = 0, walker = this.head; walker !== null && i < from; i++) {\n walker = walker.next\n }\n for (; walker !== null && i < to; i++, walker = walker.next) {\n ret.push(walker.value)\n }\n return ret\n}\n\nYallist.prototype.sliceReverse = function (from, to) {\n to = to || this.length\n if (to < 0) {\n to += this.length\n }\n from = from || 0\n if (from < 0) {\n from += this.length\n }\n var ret = new Yallist()\n if (to < from || to < 0) {\n return ret\n }\n if (from < 0) {\n from = 0\n }\n if (to > this.length) {\n to = this.length\n }\n for (var i = this.length, walker = this.tail; walker !== null && i > to; i--) {\n walker = walker.prev\n }\n for (; walker !== null && i > from; i--, walker = walker.prev) {\n ret.push(walker.value)\n }\n return ret\n}\n\nYallist.prototype.splice = function (start, deleteCount /*, ...nodes */) {\n if (start > this.length) {\n start = this.length - 1\n }\n if (start < 0) {\n start = this.length + start;\n }\n\n for (var i = 0, walker = this.head; walker !== null && i < start; i++) {\n walker = walker.next\n }\n\n var ret = []\n for (var i = 0; walker && i < deleteCount; i++) {\n ret.push(walker.value)\n walker = this.removeNode(walker)\n }\n if (walker === null) {\n walker = this.tail\n }\n\n if (walker !== this.head && walker !== this.tail) {\n walker = walker.prev\n }\n\n for (var i = 2; i < arguments.length; i++) {\n walker = insert(this, walker, arguments[i])\n }\n return ret;\n}\n\nYallist.prototype.reverse = function () {\n var head = this.head\n var tail = this.tail\n for (var walker = head; walker !== null; walker = walker.prev) {\n var p = walker.prev\n walker.prev = walker.next\n walker.next = p\n }\n this.head = tail\n this.tail = head\n return this\n}\n\nfunction insert (self, node, value) {\n var inserted = node === self.head ?\n new Node(value, null, node, self) :\n new Node(value, node, node.next, self)\n\n if (inserted.next === null) {\n self.tail = inserted\n }\n if (inserted.prev === null) {\n self.head = inserted\n }\n\n self.length++\n\n return inserted\n}\n\nfunction push (self, item) {\n self.tail = new Node(item, self.tail, null, self)\n if (!self.head) {\n self.head = self.tail\n }\n self.length++\n}\n\nfunction unshift (self, item) {\n self.head = new Node(item, null, self.head, self)\n if (!self.tail) {\n self.tail = self.head\n }\n self.length++\n}\n\nfunction Node (value, prev, next, list) {\n if (!(this instanceof Node)) {\n return new Node(value, prev, next, list)\n }\n\n this.list = list\n this.value = value\n\n if (prev) {\n prev.next = this\n this.prev = prev\n } else {\n this.prev = null\n }\n\n if (next) {\n next.prev = this\n this.next = next\n } else {\n this.next = null\n }\n}\n\ntry {\n // add if support for Symbol.iterator is present\n require('./iterator.js')(Yallist)\n} catch (er) {}\n", "'use strict'\n\n// A linked list to keep track of recently-used-ness\nconst Yallist = require('yallist')\n\nconst MAX = Symbol('max')\nconst LENGTH = Symbol('length')\nconst LENGTH_CALCULATOR = Symbol('lengthCalculator')\nconst ALLOW_STALE = Symbol('allowStale')\nconst MAX_AGE = Symbol('maxAge')\nconst DISPOSE = Symbol('dispose')\nconst NO_DISPOSE_ON_SET = Symbol('noDisposeOnSet')\nconst LRU_LIST = Symbol('lruList')\nconst CACHE = Symbol('cache')\nconst UPDATE_AGE_ON_GET = Symbol('updateAgeOnGet')\n\nconst naiveLength = () => 1\n\n// lruList is a yallist where the head is the youngest\n// item, and the tail is the oldest. the list contains the Hit\n// objects as the entries.\n// Each Hit object has a reference to its Yallist.Node. This\n// never changes.\n//\n// cache is a Map (or PseudoMap) that matches the keys to\n// the Yallist.Node object.\nclass LRUCache {\n constructor (options) {\n if (typeof options === 'number')\n options = { max: options }\n\n if (!options)\n options = {}\n\n if (options.max && (typeof options.max !== 'number' || options.max < 0))\n throw new TypeError('max must be a non-negative number')\n // Kind of weird to have a default max of Infinity, but oh well.\n const max = this[MAX] = options.max || Infinity\n\n const lc = options.length || naiveLength\n this[LENGTH_CALCULATOR] = (typeof lc !== 'function') ? naiveLength : lc\n this[ALLOW_STALE] = options.stale || false\n if (options.maxAge && typeof options.maxAge !== 'number')\n throw new TypeError('maxAge must be a number')\n this[MAX_AGE] = options.maxAge || 0\n this[DISPOSE] = options.dispose\n this[NO_DISPOSE_ON_SET] = options.noDisposeOnSet || false\n this[UPDATE_AGE_ON_GET] = options.updateAgeOnGet || false\n this.reset()\n }\n\n // resize the cache when the max changes.\n set max (mL) {\n if (typeof mL !== 'number' || mL < 0)\n throw new TypeError('max must be a non-negative number')\n\n this[MAX] = mL || Infinity\n trim(this)\n }\n get max () {\n return this[MAX]\n }\n\n set allowStale (allowStale) {\n this[ALLOW_STALE] = !!allowStale\n }\n get allowStale () {\n return this[ALLOW_STALE]\n }\n\n set maxAge (mA) {\n if (typeof mA !== 'number')\n throw new TypeError('maxAge must be a non-negative number')\n\n this[MAX_AGE] = mA\n trim(this)\n }\n get maxAge () {\n return this[MAX_AGE]\n }\n\n // resize the cache when the lengthCalculator changes.\n set lengthCalculator (lC) {\n if (typeof lC !== 'function')\n lC = naiveLength\n\n if (lC !== this[LENGTH_CALCULATOR]) {\n this[LENGTH_CALCULATOR] = lC\n this[LENGTH] = 0\n this[LRU_LIST].forEach(hit => {\n hit.length = this[LENGTH_CALCULATOR](hit.value, hit.key)\n this[LENGTH] += hit.length\n })\n }\n trim(this)\n }\n get lengthCalculator () { return this[LENGTH_CALCULATOR] }\n\n get length () { return this[LENGTH] }\n get itemCount () { return this[LRU_LIST].length }\n\n rforEach (fn, thisp) {\n thisp = thisp || this\n for (let walker = this[LRU_LIST].tail; walker !== null;) {\n const prev = walker.prev\n forEachStep(this, fn, walker, thisp)\n walker = prev\n }\n }\n\n forEach (fn, thisp) {\n thisp = thisp || this\n for (let walker = this[LRU_LIST].head; walker !== null;) {\n const next = walker.next\n forEachStep(this, fn, walker, thisp)\n walker = next\n }\n }\n\n keys () {\n return this[LRU_LIST].toArray().map(k => k.key)\n }\n\n values () {\n return this[LRU_LIST].toArray().map(k => k.value)\n }\n\n reset () {\n if (this[DISPOSE] &&\n this[LRU_LIST] &&\n this[LRU_LIST].length) {\n this[LRU_LIST].forEach(hit => this[DISPOSE](hit.key, hit.value))\n }\n\n this[CACHE] = new Map() // hash of items by key\n this[LRU_LIST] = new Yallist() // list of items in order of use recency\n this[LENGTH] = 0 // length of items in the list\n }\n\n dump () {\n return this[LRU_LIST].map(hit =>\n isStale(this, hit) ? false : {\n k: hit.key,\n v: hit.value,\n e: hit.now + (hit.maxAge || 0)\n }).toArray().filter(h => h)\n }\n\n dumpLru () {\n return this[LRU_LIST]\n }\n\n set (key, value, maxAge) {\n maxAge = maxAge || this[MAX_AGE]\n\n if (maxAge && typeof maxAge !== 'number')\n throw new TypeError('maxAge must be a number')\n\n const now = maxAge ? Date.now() : 0\n const len = this[LENGTH_CALCULATOR](value, key)\n\n if (this[CACHE].has(key)) {\n if (len > this[MAX]) {\n del(this, this[CACHE].get(key))\n return false\n }\n\n const node = this[CACHE].get(key)\n const item = node.value\n\n // dispose of the old one before overwriting\n // split out into 2 ifs for better coverage tracking\n if (this[DISPOSE]) {\n if (!this[NO_DISPOSE_ON_SET])\n this[DISPOSE](key, item.value)\n }\n\n item.now = now\n item.maxAge = maxAge\n item.value = value\n this[LENGTH] += len - item.length\n item.length = len\n this.get(key)\n trim(this)\n return true\n }\n\n const hit = new Entry(key, value, len, now, maxAge)\n\n // oversized objects fall out of cache automatically.\n if (hit.length > this[MAX]) {\n if (this[DISPOSE])\n this[DISPOSE](key, value)\n\n return false\n }\n\n this[LENGTH] += hit.length\n this[LRU_LIST].unshift(hit)\n this[CACHE].set(key, this[LRU_LIST].head)\n trim(this)\n return true\n }\n\n has (key) {\n if (!this[CACHE].has(key)) return false\n const hit = this[CACHE].get(key).value\n return !isStale(this, hit)\n }\n\n get (key) {\n return get(this, key, true)\n }\n\n peek (key) {\n return get(this, key, false)\n }\n\n pop () {\n const node = this[LRU_LIST].tail\n if (!node)\n return null\n\n del(this, node)\n return node.value\n }\n\n del (key) {\n del(this, this[CACHE].get(key))\n }\n\n load (arr) {\n // reset the cache\n this.reset()\n\n const now = Date.now()\n // A previous serialized cache has the most recent items first\n for (let l = arr.length - 1; l >= 0; l--) {\n const hit = arr[l]\n const expiresAt = hit.e || 0\n if (expiresAt === 0)\n // the item was created without expiration in a non aged cache\n this.set(hit.k, hit.v)\n else {\n const maxAge = expiresAt - now\n // dont add already expired items\n if (maxAge > 0) {\n this.set(hit.k, hit.v, maxAge)\n }\n }\n }\n }\n\n prune () {\n this[CACHE].forEach((value, key) => get(this, key, false))\n }\n}\n\nconst get = (self, key, doUse) => {\n const node = self[CACHE].get(key)\n if (node) {\n const hit = node.value\n if (isStale(self, hit)) {\n del(self, node)\n if (!self[ALLOW_STALE])\n return undefined\n } else {\n if (doUse) {\n if (self[UPDATE_AGE_ON_GET])\n node.value.now = Date.now()\n self[LRU_LIST].unshiftNode(node)\n }\n }\n return hit.value\n }\n}\n\nconst isStale = (self, hit) => {\n if (!hit || (!hit.maxAge && !self[MAX_AGE]))\n return false\n\n const diff = Date.now() - hit.now\n return hit.maxAge ? diff > hit.maxAge\n : self[MAX_AGE] && (diff > self[MAX_AGE])\n}\n\nconst trim = self => {\n if (self[LENGTH] > self[MAX]) {\n for (let walker = self[LRU_LIST].tail;\n self[LENGTH] > self[MAX] && walker !== null;) {\n // We know that we're about to delete this one, and also\n // what the next least recently used key will be, so just\n // go ahead and set it now.\n const prev = walker.prev\n del(self, walker)\n walker = prev\n }\n }\n}\n\nconst del = (self, node) => {\n if (node) {\n const hit = node.value\n if (self[DISPOSE])\n self[DISPOSE](hit.key, hit.value)\n\n self[LENGTH] -= hit.length\n self[CACHE].delete(hit.key)\n self[LRU_LIST].removeNode(node)\n }\n}\n\nclass Entry {\n constructor (key, value, length, now, maxAge) {\n this.key = key\n this.value = value\n this.length = length\n this.now = now\n this.maxAge = maxAge || 0\n }\n}\n\nconst forEachStep = (self, fn, node, thisp) => {\n let hit = node.value\n if (isStale(self, hit)) {\n del(self, node)\n if (!self[ALLOW_STALE])\n hit = undefined\n }\n if (hit)\n fn.call(thisp, hit.value, hit.key, self)\n}\n\nmodule.exports = LRUCache\n", "// Packages\nvar retrier = require('retry');\n\nfunction retry(fn, opts) {\n function run(resolve, reject) {\n var options = opts || {};\n var op = retrier.operation(options);\n\n // We allow the user to abort retrying\n // this makes sense in the cases where\n // knowledge is obtained that retrying\n // would be futile (e.g.: auth errors)\n\n function bail(err) {\n reject(err || new Error('Aborted'));\n }\n\n function onError(err, num) {\n if (err.bail) {\n bail(err);\n return;\n }\n\n if (!op.retry(err)) {\n reject(op.mainError());\n } else if (options.onRetry) {\n options.onRetry(err, num);\n }\n }\n\n function runAttempt(num) {\n var val;\n\n try {\n val = fn(bail, num);\n } catch (err) {\n onError(err, num);\n return;\n }\n\n Promise.resolve(val)\n .then(resolve)\n .catch(function catchIt(err) {\n onError(err, num);\n });\n }\n\n op.attempt(runAttempt);\n }\n\n return new Promise(run);\n}\n\nmodule.exports = retry;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction resolve4(host, resolver) {\n return new Promise((resolve, reject) => {\n resolver.resolve4(host, { ttl: true }, (err, res) => {\n if (err)\n return reject(err);\n resolve(res);\n });\n });\n}\nexports.default = resolve4;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction resolve6(host, resolver) {\n return new Promise((resolve, reject) => {\n resolver.resolve6(host, { ttl: true }, (err, res) => {\n if (err)\n return reject(err);\n resolve(res);\n });\n });\n}\nexports.default = resolve6;\n", "\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst dns_1 = __importDefault(require(\"dns\"));\nconst lru_cache_1 = __importDefault(require(\"lru-cache\"));\nconst async_retry_1 = __importDefault(require(\"async-retry\"));\nconst resolve4_1 = __importDefault(require(\"./resolve4\"));\nconst resolve6_1 = __importDefault(require(\"./resolve6\"));\nconst lruOptions = { max: 500 };\nlet cache4;\nlet cache6;\nsetupCache();\nasync function dnsResolve(host, options = {}) {\n const { ipv6 = false, minimumCacheTime = 300, refreshCache = false, retryOpts = { minTimeout: 10, retries: 3, factor: 5 }, resolver = dns_1.default } = options;\n const { cache, resolve } = ipv6\n ? { cache: cache6, resolve: resolve6_1.default }\n : { cache: cache4, resolve: resolve4_1.default };\n if (refreshCache) {\n cache.del(host);\n }\n else {\n const ip = cache.get(host);\n if (ip)\n return await ip;\n }\n const p = (async () => {\n const res = await async_retry_1.default(() => resolve(host, resolver), retryOpts);\n const rec = res[Math.floor(Math.random() * res.length)];\n const ttl = Math.max(rec.ttl, minimumCacheTime);\n cache.set(host, rec.address, ttl * 1000);\n return rec.address;\n })();\n cache.set(host, p, 5000);\n return p;\n}\nexports.default = dnsResolve;\nfunction setupCache() {\n cache4 = new lru_cache_1.default(lruOptions);\n cache6 = new lru_cache_1.default(lruOptions);\n}\nexports.setupCache = setupCache;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar dns_resolve_1 = require(\"./dns-resolve\");\nexports.default = dns_resolve_1.default;\n", "// Used for testing\nexports.dnsCachedUrl = Symbol('dnsCachedUrl')\n", "const { isIP } = require('net')\nconst { format, parse } = require('url')\nconst resolve = require('@zeit/dns-cached-resolve').default\nconst { dnsCachedUrl } = require('./util')\n\nmodule.exports = setup\n\nconst isRedirect = v => ((v / 100) | 0) === 3\n\nfunction setup(fetch) {\n if (!fetch) {\n fetch = require('node-fetch')\n }\n const { Headers } = fetch\n\n async function fetchCachedDns(url, opts) {\n const parsed = parse(url)\n const originalHost = parsed.host\n const ip = isIP(parsed.hostname)\n if (ip === 0) {\n if (!opts) opts = {}\n opts.headers = new Headers(opts.headers)\n if (!opts.headers.has('Host')) {\n opts.headers.set('Host', parsed.host)\n }\n opts.redirect = 'manual'\n parsed.host = await resolve(parsed.hostname)\n if (parsed.port) {\n parsed.host += `:${parsed.port}`\n }\n url = format(parsed)\n }\n const res = await fetch(url, opts)\n\n // Update `res.url` to contain the original hostname instead of the IP address\n res[dnsCachedUrl] = url\n Object.defineProperty(res, 'url', {\n get() {\n return parsed.href\n }\n })\n\n if (isRedirect(res.status)) {\n const redirectOpts = Object.assign({}, opts)\n redirectOpts.headers = new Headers(opts.headers)\n\n // Per fetch spec, for POST request with 301/302 response, or any\n // request with 303 response, use GET when following redirect\n if (\n res.status === 303 ||\n ((res.status === 301 || res.status === 302) && opts.method === 'POST')\n ) {\n redirectOpts.method = 'GET'\n redirectOpts.body = null\n redirectOpts.headers.delete('content-length')\n }\n\n // Set the proper `Host` request header, considering that node-fetch will\n // absolutize a relative redirect URL, so the IP address needs to be\n // replaced with the original hostname as well.\n const location = res.headers.get('Location')\n const parsedLocation = parse(location)\n if (parsedLocation.host === parsed.host) {\n parsedLocation.host = originalHost\n }\n redirectOpts.headers.set('Host', parsedLocation.host)\n\n if (opts.onRedirect) {\n opts.onRedirect(res, redirectOpts)\n }\n\n return fetchCachedDns(format(parsedLocation), redirectOpts)\n }\n return res\n }\n\n for (const key of Object.keys(fetch)) {\n fetchCachedDns[key] = fetch[key]\n }\n\n fetchCachedDns.default = fetchCachedDns\n\n return fetchCachedDns\n}\n", "const {parse: parseUrl} = require('url');\nconst HttpAgent = require('agentkeepalive');\nconst debug = require('debug')('@vercel/fetch');\nconst setupFetchRetry = require('@vercel/fetch-retry');\nconst setupFetchCachedDns = require('@vercel/fetch-cached-dns');\nconst urlModule = require('url');\n\nconst {HttpsAgent} = HttpAgent;\nconst {URLSearchParams} = urlModule;\n\nconst AGENT_OPTIONS = {\n\tmaxSockets: 200,\n\tmaxFreeSockets: 20,\n\ttimeout: 60000,\n\tfreeSocketTimeout: 30000,\n\tfreeSocketKeepAliveTimeout: 30000 // free socket keepalive for 30 seconds\n};\n\nlet defaultHttpGlobalAgent;\nlet defaultHttpsGlobalAgent;\n\nfunction getDefaultHttpGlobalAgent(agentOpts) {\n\treturn (defaultHttpGlobalAgent =\n\t\tdefaultHttpGlobalAgent ||\n\t\t(debug('init http agent'), new HttpAgent(agentOpts)));\n}\n\nfunction getDefaultHttpsGlobalAgent(agentOpts) {\n\treturn (defaultHttpsGlobalAgent =\n\t\tdefaultHttpsGlobalAgent ||\n\t\t(debug('init https agent'), new HttpsAgent(agentOpts)));\n}\n\nfunction getAgent(url, agentOpts) {\n\treturn /^https/.test(url)\n\t\t? getDefaultHttpsGlobalAgent(agentOpts)\n\t\t: getDefaultHttpGlobalAgent(agentOpts);\n}\n\nfunction setupVercelFetch(fetch, agentOpts = {}) {\n\treturn async function vercelFetch(url, opts = {}) {\n\t\tif (!opts.agent) {\n\t\t\t// Add default `agent` if none was provided\n\t\t\topts.agent = getAgent(url, {AGENT_OPTIONS, ...agentOpts});\n\t\t}\n\n\t\topts.redirect = 'manual';\n\t\topts.headers = new fetch.Headers(opts.headers);\n\t\t// Workaround for node-fetch + agentkeepalive bug/issue\n\t\topts.headers.set(\n\t\t\t'host',\n\t\t\topts.headers.get('host') || parseUrl(url).host\n\t\t);\n\n\t\t// Convert Object bodies to JSON if they are JS objects\n\t\tif (\n\t\t\topts.body &&\n\t\t\t!(opts.body instanceof URLSearchParams) &&\n\t\t\ttypeof opts.body === 'object' &&\n\t\t\t!Buffer.isBuffer(opts.body)\n\t\t) {\n\t\t\topts.body = JSON.stringify(opts.body);\n\t\t\topts.headers.set('Content-Type', 'application/json');\n\t\t\topts.headers.set('Content-Length', Buffer.byteLength(opts.body));\n\t\t}\n\n\t\t// Check the agent on redirections\n\t\topts.onRedirect = (res, redirectOpts) => {\n\t\t\tredirectOpts.agent = getAgent(res.headers.get('Location'));\n\t\t};\n\n\t\ttry {\n\t\t\tdebug('%s %s', opts.method || 'GET', url);\n\t\t\treturn await fetch(url, opts);\n\t\t} catch (err) {\n\t\t\terr.url = url;\n\t\t\terr.opts = opts;\n\t\t\tthrow err;\n\t\t}\n\t};\n}\n\nfunction setup(fetch, options) {\n\tif (!fetch) {\n\t\tfetch = require('node-fetch');\n\t}\n\n\tconst fd = fetch.default;\n\tif (fd) {\n\t\t// combines \"fetch.Headers\" with \"fetch.default\" function.\n\t\t// workaround for \"fetch.Headers is not a constructor\"\n\t\tfetch = Object.assign((...args) => fd(...args), fd, fetch);\n\t}\n\n\tif (typeof fetch !== 'function') {\n\t\tthrow new Error(\n\t\t\t\"fetch() argument isn't a function; did you forget to initialize your `@vercel/fetch` import?\"\n\t\t);\n\t}\n\n\tfetch = setupFetchCachedDns(fetch);\n\tfetch = setupFetchRetry(fetch);\n\tfetch = setupVercelFetch(fetch, options);\n\treturn fetch;\n}\n\nmodule.exports = setup;\n", "module.exports = isexe\nisexe.sync = sync\n\nvar fs = require('fs')\n\nfunction checkPathExt (path, options) {\n var pathext = options.pathExt !== undefined ?\n options.pathExt : process.env.PATHEXT\n\n if (!pathext) {\n return true\n }\n\n pathext = pathext.split(';')\n if (pathext.indexOf('') !== -1) {\n return true\n }\n for (var i = 0; i < pathext.length; i++) {\n var p = pathext[i].toLowerCase()\n if (p && path.substr(-p.length).toLowerCase() === p) {\n return true\n }\n }\n return false\n}\n\nfunction checkStat (stat, path, options) {\n if (!stat.isSymbolicLink() && !stat.isFile()) {\n return false\n }\n return checkPathExt(path, options)\n}\n\nfunction isexe (path, options, cb) {\n fs.stat(path, function (er, stat) {\n cb(er, er ? false : checkStat(stat, path, options))\n })\n}\n\nfunction sync (path, options) {\n return checkStat(fs.statSync(path), path, options)\n}\n", "module.exports = isexe\nisexe.sync = sync\n\nvar fs = require('fs')\n\nfunction isexe (path, options, cb) {\n fs.stat(path, function (er, stat) {\n cb(er, er ? false : checkStat(stat, options))\n })\n}\n\nfunction sync (path, options) {\n return checkStat(fs.statSync(path), options)\n}\n\nfunction checkStat (stat, options) {\n return stat.isFile() && checkMode(stat, options)\n}\n\nfunction checkMode (stat, options) {\n var mod = stat.mode\n var uid = stat.uid\n var gid = stat.gid\n\n var myUid = options.uid !== undefined ?\n options.uid : process.getuid && process.getuid()\n var myGid = options.gid !== undefined ?\n options.gid : process.getgid && process.getgid()\n\n var u = parseInt('100', 8)\n var g = parseInt('010', 8)\n var o = parseInt('001', 8)\n var ug = u | g\n\n var ret = (mod & o) ||\n (mod & g) && gid === myGid ||\n (mod & u) && uid === myUid ||\n (mod & ug) && myUid === 0\n\n return ret\n}\n", "var fs = require('fs')\nvar core\nif (process.platform === 'win32' || global.TESTING_WINDOWS) {\n core = require('./windows.js')\n} else {\n core = require('./mode.js')\n}\n\nmodule.exports = isexe\nisexe.sync = sync\n\nfunction isexe (path, options, cb) {\n if (typeof options === 'function') {\n cb = options\n options = {}\n }\n\n if (!cb) {\n if (typeof Promise !== 'function') {\n throw new TypeError('callback not provided')\n }\n\n return new Promise(function (resolve, reject) {\n isexe(path, options || {}, function (er, is) {\n if (er) {\n reject(er)\n } else {\n resolve(is)\n }\n })\n })\n }\n\n core(path, options || {}, function (er, is) {\n // ignore EACCES because that just means we aren't allowed to run it\n if (er) {\n if (er.code === 'EACCES' || options && options.ignoreErrors) {\n er = null\n is = false\n }\n }\n cb(er, is)\n })\n}\n\nfunction sync (path, options) {\n // my kingdom for a filtered catch\n try {\n return core.sync(path, options || {})\n } catch (er) {\n if (options && options.ignoreErrors || er.code === 'EACCES') {\n return false\n } else {\n throw er\n }\n }\n}\n", "const isWindows = process.platform === 'win32' ||\n process.env.OSTYPE === 'cygwin' ||\n process.env.OSTYPE === 'msys'\n\nconst path = require('path')\nconst COLON = isWindows ? ';' : ':'\nconst isexe = require('isexe')\n\nconst getNotFoundError = (cmd) =>\n Object.assign(new Error(`not found: ${cmd}`), { code: 'ENOENT' })\n\nconst getPathInfo = (cmd, opt) => {\n const colon = opt.colon || COLON\n\n // If it has a slash, then we don't bother searching the pathenv.\n // just check the file itself, and that's it.\n const pathEnv = cmd.match(/\\//) || isWindows && cmd.match(/\\\\/) ? ['']\n : (\n [\n // windows always checks the cwd first\n ...(isWindows ? [process.cwd()] : []),\n ...(opt.path || process.env.PATH ||\n /* istanbul ignore next: very unusual */ '').split(colon),\n ]\n )\n const pathExtExe = isWindows\n ? opt.pathExt || process.env.PATHEXT || '.EXE;.CMD;.BAT;.COM'\n : ''\n const pathExt = isWindows ? pathExtExe.split(colon) : ['']\n\n if (isWindows) {\n if (cmd.indexOf('.') !== -1 && pathExt[0] !== '')\n pathExt.unshift('')\n }\n\n return {\n pathEnv,\n pathExt,\n pathExtExe,\n }\n}\n\nconst which = (cmd, opt, cb) => {\n if (typeof opt === 'function') {\n cb = opt\n opt = {}\n }\n if (!opt)\n opt = {}\n\n const { pathEnv, pathExt, pathExtExe } = getPathInfo(cmd, opt)\n const found = []\n\n const step = i => new Promise((resolve, reject) => {\n if (i === pathEnv.length)\n return opt.all && found.length ? resolve(found)\n : reject(getNotFoundError(cmd))\n\n const ppRaw = pathEnv[i]\n const pathPart = /^\".*\"$/.test(ppRaw) ? ppRaw.slice(1, -1) : ppRaw\n\n const pCmd = path.join(pathPart, cmd)\n const p = !pathPart && /^\\.[\\\\\\/]/.test(cmd) ? cmd.slice(0, 2) + pCmd\n : pCmd\n\n resolve(subStep(p, i, 0))\n })\n\n const subStep = (p, i, ii) => new Promise((resolve, reject) => {\n if (ii === pathExt.length)\n return resolve(step(i + 1))\n const ext = pathExt[ii]\n isexe(p + ext, { pathExt: pathExtExe }, (er, is) => {\n if (!er && is) {\n if (opt.all)\n found.push(p + ext)\n else\n return resolve(p + ext)\n }\n return resolve(subStep(p, i, ii + 1))\n })\n })\n\n return cb ? step(0).then(res => cb(null, res), cb) : step(0)\n}\n\nconst whichSync = (cmd, opt) => {\n opt = opt || {}\n\n const { pathEnv, pathExt, pathExtExe } = getPathInfo(cmd, opt)\n const found = []\n\n for (let i = 0; i < pathEnv.length; i ++) {\n const ppRaw = pathEnv[i]\n const pathPart = /^\".*\"$/.test(ppRaw) ? ppRaw.slice(1, -1) : ppRaw\n\n const pCmd = path.join(pathPart, cmd)\n const p = !pathPart && /^\\.[\\\\\\/]/.test(cmd) ? cmd.slice(0, 2) + pCmd\n : pCmd\n\n for (let j = 0; j < pathExt.length; j ++) {\n const cur = p + pathExt[j]\n try {\n const is = isexe.sync(cur, { pathExt: pathExtExe })\n if (is) {\n if (opt.all)\n found.push(cur)\n else\n return cur\n }\n } catch (ex) {}\n }\n }\n\n if (opt.all && found.length)\n return found\n\n if (opt.nothrow)\n return null\n\n throw getNotFoundError(cmd)\n}\n\nmodule.exports = which\nwhich.sync = whichSync\n", "/* @flow */\n/*::\n\ntype DotenvParseOptions = {\n debug?: boolean\n}\n\n// keys and values from src\ntype DotenvParseOutput = { [string]: string }\n\ntype DotenvConfigOptions = {\n path?: string, // path to .env file\n encoding?: string, // encoding of .env file\n debug?: string // turn on logging for debugging purposes\n}\n\ntype DotenvConfigOutput = {\n parsed?: DotenvParseOutput,\n error?: Error\n}\n\n*/\n\nconst fs = require('fs')\nconst path = require('path')\n\nfunction log (message /*: string */) {\n console.log(`[dotenv][DEBUG] ${message}`)\n}\n\nconst NEWLINE = '\\n'\nconst RE_INI_KEY_VAL = /^\\s*([\\w.-]+)\\s*=\\s*(.*)?\\s*$/\nconst RE_NEWLINES = /\\\\n/g\nconst NEWLINES_MATCH = /\\n|\\r|\\r\\n/\n\n// Parses src into an Object\nfunction parse (src /*: string | Buffer */, options /*: ?DotenvParseOptions */) /*: DotenvParseOutput */ {\n const debug = Boolean(options && options.debug)\n const obj = {}\n\n // convert Buffers before splitting into lines and processing\n src.toString().split(NEWLINES_MATCH).forEach(function (line, idx) {\n // matching \"KEY' and 'VAL' in 'KEY=VAL'\n const keyValueArr = line.match(RE_INI_KEY_VAL)\n // matched?\n if (keyValueArr != null) {\n const key = keyValueArr[1]\n // default undefined or missing values to empty string\n let val = (keyValueArr[2] || '')\n const end = val.length - 1\n const isDoubleQuoted = val[0] === '\"' && val[end] === '\"'\n const isSingleQuoted = val[0] === \"'\" && val[end] === \"'\"\n\n // if single or double quoted, remove quotes\n if (isSingleQuoted || isDoubleQuoted) {\n val = val.substring(1, end)\n\n // if double quoted, expand newlines\n if (isDoubleQuoted) {\n val = val.replace(RE_NEWLINES, NEWLINE)\n }\n } else {\n // remove surrounding whitespace\n val = val.trim()\n }\n\n obj[key] = val\n } else if (debug) {\n log(`did not match key and value when parsing line ${idx + 1}: ${line}`)\n }\n })\n\n return obj\n}\n\n// Populates process.env from .env file\nfunction config (options /*: ?DotenvConfigOptions */) /*: DotenvConfigOutput */ {\n let dotenvPath = path.resolve(process.cwd(), '.env')\n let encoding /*: string */ = 'utf8'\n let debug = false\n\n if (options) {\n if (options.path != null) {\n dotenvPath = options.path\n }\n if (options.encoding != null) {\n encoding = options.encoding\n }\n if (options.debug != null) {\n debug = true\n }\n }\n\n try {\n // specifying an encoding returns a string instead of a buffer\n const parsed = parse(fs.readFileSync(dotenvPath, { encoding }), { debug })\n\n Object.keys(parsed).forEach(function (key) {\n if (!Object.prototype.hasOwnProperty.call(process.env, key)) {\n process.env[key] = parsed[key]\n } else if (debug) {\n log(`\"${key}\" is already defined in \\`process.env\\` and will not be overwritten`)\n }\n })\n\n return { parsed }\n } catch (e) {\n return { error: e }\n }\n}\n\nmodule.exports.config = config\nmodule.exports.parse = parse\n", "/*\n *\tCreated by Trevor Sears .\n *\t10:53 PM -- June 11th, 2019.\n *\tProject: promise-any-polyfill\n */\n\nimport { ReturnResultOrPromiseLike, TypeOrPromiseLike } from \"./declaration\";\n\n/**\n * An implementation of the upcoming `Promise.any` functionality.\n *\n * @author Trevor Sears \n * @version v0.1.0\n * @since v0.1.0\n */\nPromise.any = async <\n\tT = any,\n\tR extends ReturnResultOrPromiseLike = ReturnResultOrPromiseLike>(values: Iterable>):\n\tPromise => {\n\t\n\treturn new Promise((resolve: (value?: (TypeOrPromiseLike)) => void, reject: (reason?: any) => void): void => {\n\t\t\n\t\tlet hasResolved: boolean = false;\n\t\tlet iterableCount: number = 0;\n\t\tlet rejectionReasons: any[] = [];\n\t\t\n\t\tconst resolveOnce: (value?: (TypeOrPromiseLike)) => void = (value?: (TypeOrPromiseLike)): void => {\n\t\t\t\n\t\t\tif (!hasResolved) {\n\t\t\t\t\n\t\t\t\thasResolved = true;\n\t\t\t\tresolve(value);\n\t\t\t\t\n\t\t\t}\n\t\t\t\n\t\t};\n\t\t\n\t\tconst rejectionCheck: (reason: any) => void = (reason: any): void => {\n\t\t\t\n\t\t\trejectionReasons.push(reason);\n\t\t\t\n\t\t\tif (rejectionReasons.length >= iterableCount) reject(rejectionReasons);\n\t\t\t\n\t\t};\n\t\t\n\t\tfor (let value of values) {\n\t\t\t\n\t\t\titerableCount++;\n\t\t\t\n\t\t\tif ((value as any).then !== undefined) {\n\t\t\t\t\n\t\t\t\tlet promiseLikeValue: PromiseLike> =\n\t\t\t\t\tvalue as unknown as PromiseLike>;\n\t\t\t\t\n\t\t\t\tpromiseLikeValue.then((result: TypeOrPromiseLike): void => resolveOnce(result));\n\t\t\t\t\n\t\t\t\tif ((value as any).catch !== undefined) {\n\t\t\t\t\t\n\t\t\t\t\tlet promiseValue: Promise> = promiseLikeValue as Promise>;\n\t\t\t\t\t\n\t\t\t\t\tpromiseValue.catch((reason: any): void => rejectionCheck(reason));\n\t\t\t\t\t\n\t\t\t\t}\n\t\t\t\t\n\t\t\t}\n\t\t\t\n\t\t}\n\t\t\n\t});\n\t\n};", "#!/usr/bin/env node\n\nimport childProcess from \"child_process\";\nimport fs from \"fs\";\nimport parse from \"git-url-parse\";\nimport meow from \"meow\";\nimport path from \"path\";\nimport { findGitHubToken } from \"src/findGitHubToken\";\nimport tar from \"tar\";\nimport tmp from \"tmp\";\nimport { fetch } from \"./fetch\";\nimport which from \"which\";\nimport dotenv from \"dotenv\";\nimport type { Writable } from \"stream\";\nimport zlib from \"zlib\";\nimport rimraf from \"rimraf\";\n\nconst _SEARCH_PATH = path.join(__dirname, \"Search\");\nconst _REGISTER_PROTOCOL_PATH = path.join(__dirname, \"registerProtocol\");\nconst _CONFIRM_PROMPT_PATH = path.join(__dirname, \"confirmPrompt\");\n\nfunction resolveAfterDelay(delay) {\n return new Promise((resolve, reject) => setTimeout(resolve, delay));\n}\n// global.fetch = require(\"node-fetch\");\n\n// if (typeof global.AbortController === \"undefined\") {\n// require(\"abortcontroller-polyfill/dist/polyfill-patch-fetch\");\n// }\n\n// This is to trick esbuild into code splitting these files\n\n// const AbortController = global.AbortController;\n\nlet exiting = false;\n\nconst HOME =\n process.platform === \"win32\"\n ? path.join(process.env.HOMEDRIVE, process.env.HOMEPATH)\n : process.env.HOME;\n\nconst GIT_PEEK_ENV_PATH = path.join(HOME, \".git-peek\");\n\nlet editorsToTry = [\"code\", \"subl\", \"code-insiders\", \"vim\", \"vi\"];\n\nlet shouldKeep = false;\n\nlet logFunction = console.log;\nlet exceptionLogger = (...err) => {\n if (exiting) return;\n console.error(...err);\n};\n\n// fs.rmSync was added in Node v14.14\n// See docs: https://nodejs.org/api/fs.html#fs_fs_rmsync_path_options\nif (!fs.rmSync) {\n const rimraf = require(\"rimraf\");\n fs.rmSync = (path: string, options: fs.RmOptions) => {\n // Just in-case!\n if (path === \"/\") return;\n if (path === \"/Applications\") return;\n return rimraf.sync(path);\n };\n}\n\nasync function fetchEditor(_editor, silent) {\n let chosenEditor =\n !_editor || _editor === \"auto\" ? process.env.EDITOR : _editor;\n\n if (!chosenEditor?.trim().length) {\n for (let editor of editorsToTry) {\n try {\n chosenEditor = await which(editor);\n if (chosenEditor.includes(\"code\") || chosenEditor.includes(\"subl\")) {\n chosenEditor = `\"` + chosenEditor + `\"`;\n }\n break;\n } catch (exception) {}\n }\n }\n\n if (!chosenEditor || !chosenEditor?.trim()?.length) {\n if (!silent)\n console.warn(\n \"No editor detected, defaulting to Visual Studio Code. Set an editor with the -e flag\"\n );\n chosenEditor = \"code\";\n }\n\n return chosenEditor;\n}\n\nconst DOTENV_EXISTS = fs.existsSync(GIT_PEEK_ENV_PATH);\n\nif (typeof Promise.any !== \"function\") {\n require(\"promise-any-polyfill\");\n}\n\nenum WaitFor {\n childProcessExit,\n downloadComplete,\n confirm,\n}\n\nconst exitBehavior = {\n confirm: false,\n waitFor: WaitFor.downloadComplete,\n};\n\n// This will break if the github repo is called pull or if the organization is called pull\nfunction isPullRequest(url: string) {\n if (!url.includes(GITHUB_BASE_DOMAIN) || !url.includes(\"/pull/\")) {\n return false;\n }\n\n return true;\n}\n\nasync function resolveRefFromPullRequest(url: string) {\n let _url = url.replace(`https://${GITHUB_BASE_DOMAIN}`, \"\");\n const [__, owner, repo, _, pullRequestID] = _url.split(\"/\");\n\n const apiURL = `https://${GITHUB_API_DOMAIN}/repos/${owner}/${repo}/pulls/${pullRequestID}`;\n\n const result = await githubFetch(apiURL);\n if (!result.ok) {\n console.error(\n \"Failed to load pull request url: HTTP \",\n result.status,\n \"\\n\",\n await result.text()\n );\n process.exit();\n }\n\n const json = await result.json();\n\n const { label, sha } = json.head;\n return [label.split(\":\")[0], repo, sha];\n}\n\nasync function resolveRefFromURL(owner: string, repo: string) {\n const apiURL = `https://${GITHUB_API_DOMAIN}/repos/${owner}/${repo}`;\n if (process.env.VERBOSE)\n console.log(\"Couldn't auto-detect ref, asking github what the ref is\");\n\n const result = await githubFetch(apiURL);\n if (!result.ok) {\n console.error(\n \"Failed to load github url: HTTP \",\n result.status,\n \"\\n\",\n await result.text()\n );\n process.exit();\n }\n\n const json = await result.json();\n\n return json.default_branch ?? \"main\";\n}\n\nlet didRemove = false;\n\nlet tmpobj;\nlet slowTask;\n\nlet instance: Command;\n\nconst followRedirect = {\n redirect: \"follow\",\n};\nenum EditorMode {\n unknown = 0,\n vscode = 1,\n sublime = 2,\n vim = 3,\n}\n\nfunction githubFetch(url) {\n const token = findGitHubToken();\n if (token && !followRedirect.headers) {\n followRedirect.headers = { authorization: `Bearer ${token}` };\n }\n return fetch(url, followRedirect);\n}\n\nfunction noop() {}\nlet retryCount = 0;\nlet didPrintDeleted = false;\nfunction doExit() {\n let wasExiting = exiting;\n exiting = true;\n\n if (!didRemove && !shouldKeep && tmpobj) {\n try {\n tmpobj?.removeCallback();\n tmpobj = null;\n didRemove = false;\n } catch (exception) {}\n }\n\n if (instance?._tar) {\n if (!instance._tar.writableEnded) {\n try {\n instance._tar.warn = noop;\n instance._tar.abort();\n } catch (exception) {}\n }\n }\n\n if (instance?.slowTask && exitBehavior.waitFor !== WaitFor.downloadComplete) {\n if (instance.slowTask.connected) {\n try {\n instance.slowTask.kill();\n instance.slowTask.disconnect();\n } catch (exception) {}\n }\n }\n\n if (!shouldKeep && instance?.destination?.length && retryCount < 10) {\n // Error: ENOTEMPTY: directory not empty, rmdir\n if (process.platform === \"win32\") {\n try {\n rimraf.sync(instance.destination + \"/*/**\");\n rimraf.sync(instance.destination);\n } catch (exception) {\n if (process.env.VERBOSE) console.error(exception);\n }\n } else {\n try {\n rimraf.sync(instance.destination);\n } catch (exception) {\n if (process.env.VERBOSE) console.error(exception);\n }\n }\n\n if (fs.existsSync(instance.destination)) {\n setTimeout(doExit, 32);\n if (process.env.VERBOSE)\n console.log(`Failed to delete, retry attempt #${retryCount}/10`);\n\n retryCount++;\n return;\n }\n }\n\n if (\n !shouldKeep &&\n instance?.destination?.length &&\n !fs.existsSync(instance.destination) &&\n !didPrintDeleted\n ) {\n instance.slowTask = null;\n instance.log(\"\uD83D\uDDD1 Deleted repository\");\n didPrintDeleted = true;\n }\n\n process.emitWarning = noop;\n process.exit();\n}\n\nprocess.once(\"SIGINT\", doExit);\n\nclass Command {\n log(text) {\n if (this.editorMode === EditorMode.vim && this.slowTask) return;\n console.log(text);\n }\n\n editorMode: EditorMode = EditorMode.unknown;\n destination: string;\n static description =\n \"Quickly open a remote Git repository with your local text editor into a temporary folder.\";\n static usage = \"[git link or github link]\";\n\n static args = [{ name: \"url\" }];\n\n didFinish = false;\n async _prefetchGithub(\n repo: string,\n owner: string,\n filepath: string,\n ref: string,\n destination: string\n ) {\n const url = `https://cdn.jsdelivr.net/gh/${owner}/${repo}@${ref}/${\n filepath || \"README.md\"\n }`;\n\n const resp = await fetch(url, {\n redirect: \"follow\",\n // signal: aborter.signal,\n });\n\n if (!resp.ok || resp.status === 404) {\n return false;\n }\n\n if (exiting) return;\n\n const text = await resp.text();\n\n if (text.trim().length) {\n if (exiting) return;\n await fs.promises.mkdir(path.dirname(destination), { recursive: true });\n if (exiting) return;\n await fs.promises.writeFile(destination, text, \"utf8\");\n return true;\n }\n\n throw \"nope\";\n }\n prefetchGithub(\n repo: string,\n owner: string,\n filepath: string,\n ref: string,\n fallback: string,\n destination: string\n ) {\n return Promise.any([\n this._prefetchGithub(repo, owner, filepath, ref, destination),\n this._prefetchGithub(repo, owner, filepath, fallback, destination),\n ]);\n }\n\n slowTask: childProcess.ChildProcess = null;\n\n search(input: string) {\n // TODO: remove this when https://github.com/vadimdemedes/ink/issues/415 is resolved.\n const _disableWarning = process.emitWarning;\n process.emitWarning = () => {};\n const { renderInk } = require(SEARCH_PATH);\n process.emitWarning = _disableWarning;\n\n return renderInk(input);\n }\n\n async _unzip(source: string) {\n const response = await githubFetch(source);\n if (response.ok) {\n return response.body;\n } else if (response.status === 403 || response.status === 401) {\n const error = `Failed to load git repo: HTTP ${response.status}\n${await response.text()}\n-\nIf this is a private repo, consider setting $GITHUB_TOKEN. To save $GITHUB_TOKEN, store it in $HOME/.git-peek (a .env file)`;\n console.error(error);\n throw error;\n } else {\n throw await response.text();\n }\n }\n didUseFallback = false;\n _tar: Writable;\n unzipPromise: Promise;\n archiveStartPromise: Promise;\n unzip(owner, name, ref, fallback, to: string) {\n return new Promise((resolve2, reject2) => {\n this.archiveStartPromise = new Promise((resolve3, reject3) => {\n this.unzipPromise = new Promise(async (resolve, reject) => {\n const archive = await this.getArchive(\n `https://${GITHUB_API_DOMAIN}/repos/${owner}/${name}/tarball/${ref}`,\n `https://${GITHUB_API_DOMAIN}/repos/${owner}/${name}/tarball/${fallback}`\n );\n resolve3();\n\n this.log(\"\u23F3 Extracting repository to temp folder...\");\n archive.pipe(\n (this._tar = tar.x({\n cwd: to,\n strip: 1,\n \"keep-newer-files\": true,\n noMtime: true,\n // onentry(entry) {},\n // onwarn(message, data) {},\n }))\n );\n\n archive.on(\"end\", () => {\n if (exiting) return;\n this.log(\"\uD83D\uDCBF Finished downloading repository!\");\n resolve();\n resolve2();\n });\n archive.on(\"error\", (error) => {\n if (didRemove || exiting) return;\n\n this.log(\"\uD83D\uDCBF Failed to download repository!\");\n reject(error);\n reject2(error);\n });\n });\n });\n });\n }\n\n clone(source: string, to: string) {\n const git = `git clone --filter=tree:0 --single-branch --depth=1 ${source} ${to}`;\n this.log(`Cloning ${source} to temp folder...`);\n return new Promise((resolve, reject) => {\n const child = childProcess.exec(git, {});\n child.stderr.pipe(process.stderr);\n child.once(\"close\", () => {\n resolve();\n });\n\n child.once(\"exit\", () => {\n resolve();\n });\n\n child.once(\"error\", (err) => {\n reject(err);\n });\n });\n }\n\n parse() {\n const cli = meow(\n `\nUSAGE\n $ git-peek [git link or github link or search query or repository file path]\n\nEXAMPLES\n git peek https://github.com/evanw/esbuild/blob/master/lib/common.ts\n git peek https://github.com/ylukem/pin-go\n git peek https://github.com/jarred-sumner/atbuild\n git peek hanford/trends\n git peek react\n git peek https://github.com/jarred-sumner/fastbench.dev/tree/main/\n\nOPTIONS\n -e, --editor=editor [default: ${\n process.env.EDITOR?.length ? process.env.EDITOR : \"auto\"\n }] editor to open with, possible values:\n auto, ${editorsToTry.join(\", \")}.\n By default, it will search $EDITOR. If not found, it\n will try code, then subl, then vim.\n\n -d [default: false] Ask the GitHub API\n for the default_branch to clone.\n\n -r, --register [default: false] Register the git-peek:// url protocol\n This allows the \"Open\" buttons to work on\n github.com once you've installed the extension. Only\n supported on macOS (Windows coming soon).\n\n -w, --wait [default: false] wait to open the editor until the\n repository finishes downloading. always on for vi.\n\n -no-keep [default: false] skip deleting repository on exit.\n\n -b, --branch [default: \"master\"] select a branch/ref to use.\n if the repository doesn't use master/main,\n you'll want to set this manually. but it will\n try to infer from the input by default.\n\n -o, --out= [default: system temp directory] output directory to\n store repository files in. If you're cloning a large\n repo and your tempdir is an in-memory storage (/tmp),\n maybe change this.\n\n -h, --help show CLI help\n\nENVIRONMENT VARIABLES:\n $EDITOR: ${process.env.EDITOR?.length ? process.env.EDITOR : \"not set\"}\n $GITHUB_TOKEN: ${\n process.env.GITHUB_TOKEN?.length\n ? new Array(process.env.GITHUB_TOKEN.length).fill(\"*\").join(\"\")\n : \"not set\"\n }\n $GITHUB_BASE_DOMAIN: ${\n process.env.GITHUB_BASE_DOMAIN?.length\n ? process.env.GITHUB_BASE_DOMAIN\n : \"not set\"\n }\n $GITHUB_API_DOMAIN: ${\n process.env.GITHUB_API_DOMAIN?.length\n ? process.env.GITHUB_API_DOMAIN\n : \"not set\"\n }\n .env: ${DOTENV_EXISTS ? \"\u2705\" : \"\u274C\"} ${GIT_PEEK_ENV_PATH}\n\nFor use with private GitHub repositories, set $GITHUB_TOKEN to a personal\naccess token. To persist it, store it in your shell or the .env shown above.\n\nFor use with GitHub Enterprise, set $GITHUB_BASE_DOMAIN and $GITHUB_API_DOMAIN\nto the appropriate URLs.\n`.trim(),\n {\n flags: {\n fromscript: {\n type: \"boolean\",\n default: false,\n },\n register: {\n type: \"boolean\",\n default: false,\n alias: \"r\",\n description: \"Register protocol handler\",\n },\n confirm: {\n type: \"boolean\",\n default: false,\n alias: \"c\",\n description: \"Confirm before deleting\",\n },\n out: {\n type: \"string\",\n default: \"\",\n alias: \"o\",\n description:\n \"Parent directory to store the repository in. Defaults to system temp folder.\",\n },\n branch: {\n type: \"string\",\n default: \"\",\n alias: \"b\",\n description: \"branch/ref to use when fetching\",\n },\n defaultBranch: {\n type: \"boolean\",\n default: false,\n alias: \"d\",\n description: \"Check default branch\",\n },\n keep: {\n type: \"boolean\",\n default: false,\n alias: \"k\",\n description: \"Don't delete the repository on exit.\",\n },\n wait: {\n type: \"boolean\",\n default: false,\n alias: \"w\",\n description:\n \"Wait for the repository to completely download before opening. Defaults to false, unless its vim. Then its always true.\",\n },\n help: {\n type: \"boolean\",\n default: false,\n alias: \"h\",\n isRequired: false,\n },\n version: {\n type: \"boolean\",\n default: false,\n alias: \"v\",\n isRequired: false,\n },\n editor: {\n type: \"string\",\n isMultiple: false,\n isRequired: false,\n default: \"auto\",\n alias: \"e\",\n description: `editor to open with, possible values: auto, code, vim, subl. By default, it will search $EDITOR. If not found, it will try code, then subl, then vim.`,\n },\n },\n }\n );\n\n return cli;\n }\n archive: NodeJS.ReadableStream;\n async getArchive(source: string, fallbackSource: string) {\n let archive: NodeJS.ReadableStream;\n try {\n archive = await this._unzip(source);\n } catch (exception) {\n try {\n this.didUseFallback = true;\n archive = await this._unzip(fallbackSource);\n } catch (exception) {\n if (exiting) return;\n console.error(\n `Invalid repository link. Tried:\\n- ${source}\\n- ${fallbackSource}`\n );\n doExit();\n process.exit();\n }\n }\n\n this.archive = archive;\n return archive;\n }\n\n async run() {\n const cli = this.parse();\n const {\n help,\n version,\n out: tempBaseDir,\n branch,\n defaultBranch,\n register,\n } = cli.flags;\n\n shouldKeep = cli.flags.keep;\n\n if (\n cli.flags.fromscript &&\n process.env.SAY_DEBUG?.length &&\n process.platform === \"darwin\"\n ) {\n console.log = (...args) =>\n childProcess.exec(`say -v \"Samantha\" \"${args.join(\" \")}\"`);\n }\n if (help) {\n cli.showHelp(0);\n process.exit(0);\n }\n\n if (version) {\n console.log(require(\"package.json\").version);\n process.exit(0);\n }\n\n const {\n flags: { editor: _editor = \"auto\" },\n } = cli;\n\n if (register) {\n await require(REGISTER_PROTOCOL_PATH).register(\n await fetchEditor(_editor, false)\n );\n return;\n }\n\n let url = cli.input[0]?.trim() ?? \"\";\n\n if (url.includes(\"git-peek://\")) {\n url = url.replace(\"git-peek://\", \"\").trim();\n }\n\n // url = url.replace(\"/blob/\", \"/tree/\");\n\n let link;\n\n let isMalformed = false;\n if (!url.includes(\"://\") && url.split(\"/\").length === 2) {\n const [owner, repo] = url.split(\"/\");\n\n if (repo.trim().length) {\n url = `https://${GITHUB_BASE_DOMAIN}/${owner}/${repo}`;\n } else {\n isMalformed = true;\n }\n }\n\n if (!isMalformed) {\n isMalformed = !url || !url.includes(\"/\") || url.includes(\" \");\n }\n\n while (!link) {\n if (isMalformed) {\n url = await this.search(url);\n isMalformed = !url || !url.includes(\"/\") || url.includes(\" \");\n }\n\n try {\n link = parse(url);\n } catch (exception) {\n try {\n url = await this.search(url);\n isMalformed = !url || !url.includes(\"/\") || url.includes(\" \");\n } catch (exception) {\n this.log(exception);\n }\n }\n }\n\n let ref = link.ref;\n\n if (\n link.resource === GITHUB_BASE_DOMAIN &&\n (branch === \"default\" ||\n defaultBranch ||\n (link.ref === \"\" && cli.flags.fromscript))\n ) {\n ref = await resolveRefFromURL(link.owner, link.name);\n } else if (branch !== \"\") {\n ref = branch;\n } else if (!ref) {\n ref = \"master\";\n }\n\n if (url && url.length && isPullRequest(url)) {\n if (process.env.VERBOSE) this.log(\"Resolving ref from pull request...\");\n const [newOwner, newName, newRef] = await resolveRefFromPullRequest(url);\n link.name = newName;\n link.owner = newOwner;\n ref = newRef;\n }\n\n if (process.env.VERBOSE)\n this.log(`Fetching ${link.owner}/${link.name}#${ref}...`);\n\n const start = new Date().getTime();\n\n let prefix = link.name + \"@\" + ref;\n\n tmpobj = tmp.dirSync(\n tempBaseDir?.length\n ? {\n unsafeCleanup: true,\n keep: shouldKeep,\n prefix,\n postfix: !cli.flags.keep ? \"-peekautodelete\" : \"\",\n tmpdir: path.resolve(process.cwd(), tempBaseDir),\n }\n : {\n unsafeCleanup: true,\n keep: shouldKeep,\n prefix: prefix,\n postfix: !cli.flags.keep ? \"-peekautodelete\" : \"\",\n }\n );\n this.destination = tmpobj.name;\n let chosenEditorPromise = fetchEditor(_editor, false);\n\n didRemove = false;\n process.once(\"beforeExit\", doExit);\n process.once(\"SIGABRT\", doExit);\n process.once(\"SIGQUIT\", doExit);\n\n let specificFile = link.filepath;\n let usingDefaultFile = !specificFile;\n\n if (usingDefaultFile) {\n specificFile = \"README.md\";\n }\n\n let openPath = path.join(tmpobj.name, specificFile);\n\n // From a simple benchmark, unzip is 2x faster than git clone.\n if (link.resource === GITHUB_BASE_DOMAIN) {\n let fallback = ref === \"main\" ? \"master\" : \"main\";\n\n let prefetchPromise;\n if (ALLOW_JSDELIVR) {\n prefetchPromise = this.prefetchGithub(\n link.name,\n link.owner,\n specificFile,\n ref,\n fallback,\n openPath\n );\n }\n let unzipPromise = this.unzip(\n link.owner,\n link.name,\n ref,\n fallback,\n tmpobj.name\n );\n let archiveStartPromise = this.archiveStartPromise.then(() =>\n resolveAfterDelay(100)\n );\n\n if (prefetchPromise) {\n await Promise.any([prefetchPromise, unzipPromise, archiveStartPromise]);\n } else {\n await Promise.any([unzipPromise, archiveStartPromise]);\n }\n } else {\n await this.clone(link.href, tmpobj.name);\n }\n\n let editorSpecificCommands = [];\n\n // console.log(path.join(tmpobj.name, specificFile));\n\n this.editorMode = EditorMode.unknown;\n let chosenEditor = await chosenEditorPromise;\n\n // VSCode is the happy case.\n // When passed a folder, \"--wait\" correctly waits until the Window is closed.\n // This is NOT the case in Sublime Text.\n if (chosenEditor.includes(\"code\")) {\n exitBehavior.confirm = cli.flags.confirm;\n exitBehavior.waitFor = WaitFor.childProcessExit;\n chosenEditor = chosenEditor.replace(\"--wait\", \"\", \"-w\", \"\").trim();\n\n this.editorMode = EditorMode.vscode;\n editorSpecificCommands.push(\"-w\", \"-n\");\n\n if (specificFile) {\n editorSpecificCommands.push(`-g \"${path.resolve(openPath)}\":0:0`);\n }\n\n // So we cannot support auto-deleting on progrma exit immediately with Sublime Text.\n // Because \"--wait\" only applies to files. So you'd be looking at a file. You close it.\n // And bam! All the files are gone.\n // We don't want that. That's bad UX. So we don't do \"--wait\" for Sublime Text.\n } else if (chosenEditor.includes(\"subl\")) {\n if (cli.flags.fromscript) {\n exitBehavior.waitFor = WaitFor.downloadComplete;\n } else {\n exitBehavior.waitFor = WaitFor.confirm;\n }\n\n shouldKeep = true;\n this.editorMode = EditorMode.sublime;\n chosenEditor = chosenEditor.replace(\"--wait\", \"\", \"-w\", \"\").trim();\n editorSpecificCommands.push(\"-n\");\n\n if (specificFile) {\n editorSpecificCommands.push(`\"${path.resolve(openPath)}\":0:0`);\n }\n // TODO: handle go to specific line for vim.\n } else if (chosenEditor.includes(\"vi\")) {\n this.editorMode = EditorMode.vim;\n exitBehavior.confirm = cli.flags.confirm;\n exitBehavior.waitFor = WaitFor.childProcessExit;\n // Opening a shell is a little weird when its from the extension\n // So instead, we just wait for it to download, and\n // rely on tmp dir deleting to reoslve it\n } else if (cli.flags.fromscript) {\n exitBehavior.waitFor = WaitFor.downloadComplete;\n exitBehavior.confirm = cli.flags.confirm;\n } else {\n exitBehavior.waitFor = WaitFor.confirm;\n exitBehavior.confirm = cli.flags.confirm;\n }\n\n if (\n ((this.editorMode === EditorMode.vim && usingDefaultFile) ||\n cli.flags.wait) &&\n this.unzipPromise\n ) {\n await this.unzipPromise;\n this.unzipPromise = Promise.resolve(true);\n }\n\n await new Promise((resolve, reject) => {\n if (this.editorMode === EditorMode.vim) {\n process.stdin.setRawMode(true);\n process.stdin.pause();\n\n this.slowTask = childProcess.spawn(\n chosenEditor,\n [\n usingDefaultFile ? tmpobj.name : specificFile,\n ...editorSpecificCommands,\n ],\n {\n env: process.env,\n stdio: \"inherit\",\n detached: false,\n cwd: tmpobj.name,\n }\n );\n let didResolve = false;\n function resolver() {\n if (!didResolve) {\n if (process?.stdin?.setRawMode) process.stdin.setRawMode(false);\n if (process?.stdin?.resume) process.stdin.resume();\n\n resolve();\n didResolve = true;\n }\n }\n\n this.slowTask.once(\"close\", resolver);\n this.slowTask.once(\"exit\", resolver);\n this.slowTask.once(\"error\", resolver);\n } else {\n this.log(\n `\uD83D\uDCBB Launched editor in ${(\n (new Date().getTime() - start) /\n 1000\n ).toFixed(2)}s`\n );\n\n const cmd = `${chosenEditor} \"${path.join(\n tmpobj.name\n )}\" ${editorSpecificCommands.join(\" \")}`.trim();\n\n let didResolve = false;\n\n const cwd =\n process.platform === \"win32\"\n ? path.join(tmpobj.name, \"../\")\n : tmpobj.anme;\n if (cli.flags.fromscript && process.platform === \"win32\") {\n this.slowTask = childProcess.spawn(cmd, {\n env: process.env,\n shell: true,\n windowsHide: true,\n stdio: \"ignore\",\n // This line is important! If detached is true, nothing ever happens.\n detached: false,\n // Windows will refuse to delete if there is an active process in the folder\n cwd,\n });\n } else if (cli.flags.fromscript && process.platform === \"darwin\") {\n this.slowTask = childProcess.spawn(cmd, {\n env: process.env,\n shell: true,\n windowsHide: true,\n stdio: \"pipe\",\n // This line is important! If detached is true, nothing ever happens.\n detached: true,\n cwd,\n });\n } else {\n this.slowTask = childProcess.spawn(cmd, {\n env: process.env,\n shell: true,\n windowsHide: true,\n stdio:\n exitBehavior.waitFor !== WaitFor.childProcessExit\n ? \"ignore\"\n : \"inherit\",\n detached: exitBehavior.waitFor === WaitFor.childProcessExit,\n cwd,\n });\n }\n\n if (exitBehavior.waitFor === WaitFor.downloadComplete) {\n if (cli.flags.fromscript && process.platform === \"win32\") {\n this.slowTask.unref();\n this.slowTask = null;\n\n this.unzipPromise.then(\n () => resolve(),\n () => resolve()\n );\n } else {\n this.unzipPromise.then(\n () => resolve(),\n () => resolve()\n );\n }\n // This is mostly just VSCode right now.\n } else {\n function resolver() {\n if (!didResolve) {\n if (process?.stdin?.setRawMode) process.stdin.setRawMode(false);\n if (process?.stdin?.resume) process.stdin.resume();\n\n resolve();\n }\n }\n\n this.slowTask.once(\"exit\", resolver);\n this.slowTask.once(\"error\", reject);\n this.slowTask.once(\"close\", resolver);\n this.slowTask.once(\"disconnect\", resolver);\n }\n }\n });\n\n if (shouldKeep || exitBehavior.waitFor === WaitFor.downloadComplete) {\n didRemove = true;\n }\n\n if (!cli.flags.keep && exitBehavior.waitFor === WaitFor.confirm) {\n // TODO: remove this when https://github.com/vadimdemedes/ink/issues/415 is resolved.\n const _disableWarning = process.emitWarning;\n process.emitWarning = () => {};\n const { renderConfirm } = require(CONFIRM_PROMPT_PATH);\n process.emitWarning = _disableWarning;\n const shouldRemove = await renderConfirm();\n shouldKeep = didRemove = !shouldRemove;\n }\n\n doExit();\n\n // setTimeout(() => {\n // doExit();\n // process.emitWarning = () => {};\n // process.nextTick(() => process.kill(process.pid, \"SIGTERM\"));\n // }, 10000);\n }\n}\n\nprocess.on(\"unhandledRejection\", exceptionLogger);\nprocess.on(\"unhandledException\", exceptionLogger);\n\nif (DOTENV_EXISTS) {\n dotenv.config({ path: GIT_PEEK_ENV_PATH });\n}\n\nconst GITHUB_BASE_DOMAIN = process.env.GITHUB_BASE_DOMAIN || \"github.com\";\nconst GITHUB_API_DOMAIN = process.env.GITHUB_API_DOMAIN || \"api.github.com\";\nconst ALLOW_JSDELIVR = GITHUB_API_DOMAIN === \"api.github.com\";\ninstance = new Command();\ninstance.run();\n", "function _findGitHubToken() {\n if (process.env.GITHUB_TOKEN?.trim()?.length ?? 0) {\n return process.env.GITHUB_TOKEN.trim();\n // } else if (fs.existsSync(hubPath)) {\n // const hub = yaml.load(fs.readFileSync(hubPath, \"utf8\"));\n // if (typeof hub !== \"object\") return null;\n // const githubKey = Object.keys(hub).find((k) =>\n // k.toLowerCase().includes(\"github.com\")\n // );\n // if (githubKey) {\n // const tokenholder = hub[githubKey].find((k) => k?.oauth_token);\n // if (tokenholder) {\n // return tokenholder?.oauth_token;\n // }\n // }\n // return null;\n } else {\n return null;\n }\n}\nlet _githubToken;\nexport function findGitHubToken() {\n if (typeof _githubToken === \"undefined\") {\n _githubToken = _findGitHubToken();\n }\n\n return _githubToken;\n}\n", "import * as _fetch from \"node-fetch\";\nimport createFetcher from \"@vercel/fetch\";\n\nexport const fetch = createFetcher(_fetch);\nexport default fetch;\n"], - "mappings": "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,IAAK,IAAK,GAAI,GAAI,GAAI,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,GAAI,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,GAAI,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,IAAK,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,IAAK,GAAI,IAAK,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,IAAK,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,GAAI,IAAK,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,IAAK,GAAI,IAAK,EAAG,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,KAAM,KAAM,KAAM,IAAK,KAAM,IAAK,EAAG,GAAI,IAAK,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,IAAK,GAAI,IAAK,GAAI,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,KAAM,EAAG,KAAM,GAAI,EAAG,KAAM,IAAK,GAAI,EAAG,GAAI,EAAG,EAAG,IAAK,KAAM,IAAK,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,KAAM,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,KAAM,GAAI,GAAI,EAAG,GAAI,EAAG,IAAK,GAAI,KAAM,IAAK,GAAI,GAAI,EAAG,EAAG,KAAM,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,KAAM,MAAO,GAAI,KAAM,GAAI,IAAK,EAAG,KAAM,GAAI,KAAM,KAAM,IAAK,KAAM,MAC3wD,GAAwB,CAAC,IAAK,EAAG,IAAK,EAAG,IAAK,EAAG,IAAK,EAAG,KAAM,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,EAAG,IAAK,GAAI,IAAK,EAAG,GAAI,GAAI,GAAI,E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", + "mappings": "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,IAAK,IAAK,GAAI,GAAI,GAAI,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,GAAI,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,GAAI,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,IAAK,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,IAAK,GAAI,IAAK,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,IAAK,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,GAAI,IAAK,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,IAAK,GAAI,IAAK,EAAG,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,KAAM,KAAM,KAAM,IAAK,KAAM,IAAK,EAAG,GAAI,IAAK,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,IAAK,GAAI,IAAK,GAAI,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,KAAM,EAAG,KAAM,GAAI,EAAG,KAAM,IAAK,GAAI,EAAG,GAAI,EAAG,EAAG,IAAK,KAAM,IAAK,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,KAAM,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,KAAM,GAAI,GAAI,EAAG,GAAI,EAAG,IAAK,GAAI,KAAM,IAAK,GAAI,GAAI,EAAG,EAAG,KAAM,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,KAAM,MAAO,GAAI,KAAM,GAAI,IAAK,EAAG,KAAM,GAAI,KAAM,KAAM,IAAK,KAAM,MAC3wD,GAAwB,CAAC,IAAK,EAAG,IAAK,EAAG,IAAK,EAAG,IAAK,EAAG,KAAM,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,EAAG,IAAK,GAAI,IAAK,EAAG,GAAI,GAAI,GAAI,E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", "names": [] } diff --git a/bin/registerProtocol.js b/bin/registerProtocol.js index 7e8fff6..07c4c0e 100644 --- a/bin/registerProtocol.js +++ b/bin/registerProtocol.js @@ -1,12 +1,17 @@ -var Oy=Object.create,Vi=Object.defineProperty,Ny=Object.getPrototypeOf,Dy=Object.prototype.hasOwnProperty,Ty=Object.getOwnPropertyNames,Ry=Object.getOwnPropertyDescriptor;var Yi=e=>Vi(e,"__esModule",{value:!0});var x=(e,t)=>()=>(t||(t={exports:{}},e(t.exports,t)),t.exports),Ps=(e,t)=>{for(var r in t)Vi(e,r,{get:t[r],enumerable:!0})},Ay=(e,t,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of Ty(t))!Dy.call(e,i)&&i!=="default"&&Vi(e,i,{get:()=>t[i],enumerable:!(r=Ry(t,i))||r.enumerable});return e},At=e=>e&&e.__esModule?e:Ay(Yi(Vi(e!=null?Oy(Ny(e)):{},"default",{value:e,enumerable:!0})),e);var Ml=x((y1,Al)=>{Al.exports=Il;Il.sync=Iy;var xl=require("fs");function xy(e,t){var r=t.pathExt!==void 0?t.pathExt:process.env.PATHEXT;if(!r||(r=r.split(";"),r.indexOf("")!==-1))return!0;for(var i=0;i{Cl.exports=Pl;Pl.sync=Ly;var kl=require("fs");function Pl(e,t,r){kl.stat(e,function(i,n){r(i,i?!1:Bl(n,t))})}function Ly(e,t){return Bl(kl.statSync(e),t)}function Bl(e,t){return e.isFile()&&My(e,t)}function My(e,t){var r=e.mode,i=e.uid,n=e.gid,s=t.uid!==void 0?t.uid:process.getuid&&process.getuid(),o=t.gid!==void 0?t.gid:process.getgid&&process.getgid(),l=parseInt("100",8),a=parseInt("010",8),c=parseInt("001",8),u=l|a,f=r&c||r&a&&n===o||r&l&&i===s||r&u&&s===0;return f}});var Ul=x((w1,ql)=>{var v1=require("fs"),Zi;process.platform==="win32"||global.TESTING_WINDOWS?Zi=Ml():Zi=Fl();ql.exports=ks;ks.sync=Cy;function ks(e,t,r){if(typeof t=="function"&&(r=t,t={}),!r){if(typeof Promise!="function")throw new TypeError("callback not provided");return new Promise(function(i,n){ks(e,t||{},function(s,o){s?n(s):i(o)})})}Zi(e,t||{},function(i,n){i&&(i.code==="EACCES"||t&&t.ignoreErrors)&&(i=null,n=!1),r(i,n)})}function Cy(e,t){try{return Zi.sync(e,t||{})}catch(r){if(t&&t.ignoreErrors||r.code==="EACCES")return!1;throw r}}});var Bs=x((E1,jl)=>{var ar=process.platform==="win32"||process.env.OSTYPE==="cygwin"||process.env.OSTYPE==="msys",Xl=require("path"),Py=ar?";":":",zl=Ul(),Gl=e=>Object.assign(new Error(`not found: ${e}`),{code:"ENOENT"}),$l=(e,t)=>{let r=t.colon||Py,i=e.match(/\//)||ar&&e.match(/\\/)?[""]:[...ar?[process.cwd()]:[],...(t.path||process.env.PATH||"").split(r)],n=ar?t.pathExt||process.env.PATHEXT||".EXE;.CMD;.BAT;.COM":"",s=ar?n.split(r):[""];return ar&&e.indexOf(".")!==-1&&s[0]!==""&&s.unshift(""),{pathEnv:i,pathExt:s,pathExtExe:n}},Wl=(e,t,r)=>{typeof t=="function"&&(r=t,t={}),t||(t={});let{pathEnv:i,pathExt:n,pathExtExe:s}=$l(e,t),o=[],l=c=>new Promise((u,f)=>{if(c===i.length)return t.all&&o.length?u(o):f(Gl(e));let y=i[c],b=/^".*"$/.test(y)?y.slice(1,-1):y,E=Xl.join(b,e),m=!b&&/^\.[\\\/]/.test(e)?e.slice(0,2)+E:E;u(a(m,c,0))}),a=(c,u,f)=>new Promise((y,b)=>{if(f===n.length)return y(l(u+1));let E=n[f];zl(c+E,{pathExt:s},(m,w)=>{if(!m&&w)if(t.all)o.push(c+E);else return y(c+E);return y(a(c,u,f+1))})});return r?l(0).then(c=>r(null,c),r):l(0)},ky=(e,t)=>{t=t||{};let{pathEnv:r,pathExt:i,pathExtExe:n}=$l(e,t),s=[];for(let o=0;o{var nt=function(e){"use strict";var t=1e7,r=7,i=9007199254740992,n=y(i),s="0123456789abcdefghijklmnopqrstuvwxyz",o=typeof BigInt=="function";function l(h,p,v,S){return typeof h=="undefined"?l[0]:typeof p!="undefined"?+p==10&&!v?j(h):by(h,p,v,S):j(h)}function a(h,p){this.value=h,this.sign=p,this.isSmall=!1}a.prototype=Object.create(l.prototype);function c(h){this.value=h,this.sign=h<0,this.isSmall=!0}c.prototype=Object.create(l.prototype);function u(h){this.value=h}u.prototype=Object.create(l.prototype);function f(h){return-i0?Math.floor(h):Math.ceil(h)}function O(h,p){var v=h.length,S=p.length,I=new Array(v),T=0,M=t,C,k;for(k=0;k=M?1:0,I[k]=C-T*M;for(;k0&&I.push(T),I}function d(h,p){return h.length>=p.length?O(h,p):O(p,h)}function g(h,p){var v=h.length,S=new Array(v),I=t,T,M;for(M=0;M0;)S[M++]=p%I,p=Math.floor(p/I);return S}a.prototype.add=function(h){var p=j(h);if(this.sign!==p.sign)return this.subtract(p.negate());var v=this.value,S=p.value;return p.isSmall?new a(g(v,Math.abs(S)),this.sign):new a(d(v,S),this.sign)},a.prototype.plus=a.prototype.add,c.prototype.add=function(h){var p=j(h),v=this.value;if(v<0!==p.sign)return this.subtract(p.negate());var S=p.value;if(p.isSmall){if(f(v+S))return new c(v+S);S=y(Math.abs(S))}return new a(g(S,Math.abs(v)),v<0)},c.prototype.plus=c.prototype.add,u.prototype.add=function(h){return new u(this.value+j(h).value)},u.prototype.plus=u.prototype.add;function N(h,p){var v=h.length,S=p.length,I=new Array(v),T=0,M=t,C,k;for(C=0;C=0?S=N(h,p):(S=N(p,h),v=!v),S=b(S),typeof S=="number"?(v&&(S=-S),new c(S)):new a(S,v)}function _(h,p,v){var S=h.length,I=new Array(S),T=-p,M=t,C,k;for(C=0;C=0)},c.prototype.minus=c.prototype.subtract,u.prototype.subtract=function(h){return new u(this.value-j(h).value)},u.prototype.minus=u.prototype.subtract,a.prototype.negate=function(){return new a(this.value,!this.sign)},c.prototype.negate=function(){var h=this.sign,p=new c(-this.value);return p.sign=!h,p},u.prototype.negate=function(){return new u(-this.value)},a.prototype.abs=function(){return new a(this.value,!1)},c.prototype.abs=function(){return new c(Math.abs(this.value))},u.prototype.abs=function(){return new u(this.value>=0?this.value:-this.value)};function R(h,p){var v=h.length,S=p.length,I=v+S,T=m(I),M=t,C,k,X,W,z;for(X=0;X0;)S[C++]=T%I,T=Math.floor(T/I);return S}function P(h,p){for(var v=[];p-- >0;)v.push(0);return v.concat(h)}function D(h,p){var v=Math.max(h.length,p.length);if(v<=30)return R(h,p);v=Math.ceil(v/2);var S=h.slice(v),I=h.slice(0,v),T=p.slice(v),M=p.slice(0,v),C=D(I,M),k=D(S,T),X=D(d(I,S),d(M,T)),W=d(d(C,P(N(N(X,C),k),v)),P(k,2*v));return E(W),W}function L(h,p){return-.012*h-.012*p+15e-6*h*p>0}a.prototype.multiply=function(h){var p=j(h),v=this.value,S=p.value,I=this.sign!==p.sign,T;if(p.isSmall){if(S===0)return l[0];if(S===1)return this;if(S===-1)return this.negate();if(T=Math.abs(S),T=0;z--){for(W=I-1,k[z+S]!==M&&(W=Math.floor((k[z+S]*I+k[z+S-1])/M)),Z=0,Rt=0,Ms=X.length,wt=0;wtS&&(X=(X+1)*M),C=Math.ceil(X/W);do{if(z=B(p,C),zt(z,T)<=0)break;C--}while(C);I.push(C),T=N(T,z)}return I.reverse(),[b(I),b(T)]}function G(h,p){var v=h.length,S=m(v),I=t,T,M,C,k;for(C=0,T=v-1;T>=0;--T)k=C*I+h[T],M=w(k/p),C=k-M*p,S[T]=M|0;return[S,C|0]}function it(h,p){var v,S=j(p);if(o)return[new u(h.value/S.value),new u(h.value%S.value)];var I=h.value,T=S.value,M;if(T===0)throw new Error("Cannot divide by zero");if(h.isSmall)return S.isSmall?[new c(w(I/T)),new c(I%T)]:[l[0],h];if(S.isSmall){if(T===1)return[h,l[0]];if(T==-1)return[h.negate(),l[0]];var C=Math.abs(T);if(Cp.length?1:-1;for(var v=h.length-1;v>=0;v--)if(h[v]!==p[v])return h[v]>p[v]?1:-1;return 0}a.prototype.compareAbs=function(h){var p=j(h),v=this.value,S=p.value;return p.isSmall?1:zt(v,S)},c.prototype.compareAbs=function(h){var p=j(h),v=Math.abs(this.value),S=p.value;return p.isSmall?(S=Math.abs(S),v===S?0:v>S?1:-1):-1},u.prototype.compareAbs=function(h){var p=this.value,v=j(h).value;return p=p>=0?p:-p,v=v>=0?v:-v,p===v?0:p>v?1:-1},a.prototype.compare=function(h){if(h===Infinity)return-1;if(h===-Infinity)return 1;var p=j(h),v=this.value,S=p.value;return this.sign!==p.sign?p.sign?1:-1:p.isSmall?this.sign?-1:1:zt(v,S)*(this.sign?-1:1)},a.prototype.compareTo=a.prototype.compare,c.prototype.compare=function(h){if(h===Infinity)return-1;if(h===-Infinity)return 1;var p=j(h),v=this.value,S=p.value;return p.isSmall?v==S?0:v>S?1:-1:v<0!==p.sign?v<0?-1:1:v<0?1:-1},c.prototype.compareTo=c.prototype.compare,u.prototype.compare=function(h){if(h===Infinity)return-1;if(h===-Infinity)return 1;var p=this.value,v=j(h).value;return p===v?0:p>v?1:-1},u.prototype.compareTo=u.prototype.compare,a.prototype.equals=function(h){return this.compare(h)===0},u.prototype.eq=u.prototype.equals=c.prototype.eq=c.prototype.equals=a.prototype.eq=a.prototype.equals,a.prototype.notEquals=function(h){return this.compare(h)!==0},u.prototype.neq=u.prototype.notEquals=c.prototype.neq=c.prototype.notEquals=a.prototype.neq=a.prototype.notEquals,a.prototype.greater=function(h){return this.compare(h)>0},u.prototype.gt=u.prototype.greater=c.prototype.gt=c.prototype.greater=a.prototype.gt=a.prototype.greater,a.prototype.lesser=function(h){return this.compare(h)<0},u.prototype.lt=u.prototype.lesser=c.prototype.lt=c.prototype.lesser=a.prototype.lt=a.prototype.lesser,a.prototype.greaterOrEquals=function(h){return this.compare(h)>=0},u.prototype.geq=u.prototype.greaterOrEquals=c.prototype.geq=c.prototype.greaterOrEquals=a.prototype.geq=a.prototype.greaterOrEquals,a.prototype.lesserOrEquals=function(h){return this.compare(h)<=0},u.prototype.leq=u.prototype.lesserOrEquals=c.prototype.leq=c.prototype.lesserOrEquals=a.prototype.leq=a.prototype.lesserOrEquals,a.prototype.isEven=function(){return(this.value[0]&1)==0},c.prototype.isEven=function(){return(this.value&1)==0},u.prototype.isEven=function(){return(this.value&BigInt(1))===BigInt(0)},a.prototype.isOdd=function(){return(this.value[0]&1)==1},c.prototype.isOdd=function(){return(this.value&1)==1},u.prototype.isOdd=function(){return(this.value&BigInt(1))===BigInt(1)},a.prototype.isPositive=function(){return!this.sign},c.prototype.isPositive=function(){return this.value>0},u.prototype.isPositive=c.prototype.isPositive,a.prototype.isNegative=function(){return this.sign},c.prototype.isNegative=function(){return this.value<0},u.prototype.isNegative=c.prototype.isNegative,a.prototype.isUnit=function(){return!1},c.prototype.isUnit=function(){return Math.abs(this.value)===1},u.prototype.isUnit=function(){return this.abs().value===BigInt(1)},a.prototype.isZero=function(){return!1},c.prototype.isZero=function(){return this.value===0},u.prototype.isZero=function(){return this.value===BigInt(0)},a.prototype.isDivisibleBy=function(h){var p=j(h);return p.isZero()?!1:p.isUnit()?!0:p.compareAbs(2)===0?this.isEven():this.mod(p).isZero()},u.prototype.isDivisibleBy=c.prototype.isDivisibleBy=a.prototype.isDivisibleBy;function sr(h){var p=h.abs();if(p.isUnit())return!1;if(p.equals(2)||p.equals(3)||p.equals(5))return!0;if(p.isEven()||p.isDivisibleBy(3)||p.isDivisibleBy(5))return!1;if(p.lesser(49))return!0}function or(h,p){for(var v=h.prev(),S=v,I=0,T,M,C,k;S.isEven();)S=S.divide(2),I++;t:for(C=0;C-i?new c(h-1):new a(n,!0)},u.prototype.prev=function(){return new u(this.value-BigInt(1))};for(var Ct=[1];2*Ct[Ct.length-1]<=t;)Ct.push(2*Ct[Ct.length-1]);var te=Ct.length,Be=Ct[te-1];function _l(h){return Math.abs(h)<=t}a.prototype.shiftLeft=function(h){var p=j(h).toJSNumber();if(!_l(p))throw new Error(String(p)+" is too large for shifting.");if(p<0)return this.shiftRight(-p);var v=this;if(v.isZero())return v;for(;p>=te;)v=v.multiply(Be),p-=te-1;return v.multiply(Ct[p])},u.prototype.shiftLeft=c.prototype.shiftLeft=a.prototype.shiftLeft,a.prototype.shiftRight=function(h){var p,v=j(h).toJSNumber();if(!_l(v))throw new Error(String(v)+" is too large for shifting.");if(v<0)return this.shiftLeft(-v);for(var S=this;v>=te;){if(S.isZero()||S.isNegative()&&S.isUnit())return S;p=it(S,Be),S=p[1].isNegative()?p[0].prev():p[0],v-=te-1}return p=it(S,Ct[v]),p[1].isNegative()?p[0].prev():p[0]},u.prototype.shiftRight=c.prototype.shiftRight=a.prototype.shiftRight;function Is(h,p,v){p=j(p);for(var S=h.isNegative(),I=p.isNegative(),T=S?h.not():h,M=I?p.not():p,C=0,k=0,X=null,W=null,z=[];!T.isZero()||!M.isZero();)X=it(T,Be),C=X[1].toJSNumber(),S&&(C=Be-1-C),W=it(M,Be),k=W[1].toJSNumber(),I&&(k=Be-1-k),T=X[0],M=W[0],z.push(v(C,k));for(var Z=v(S?1:0,I?1:0)!==0?nt(-1):nt(0),Rt=z.length-1;Rt>=0;Rt-=1)Z=Z.multiply(Be).add(nt(z[Rt]));return Z}a.prototype.not=function(){return this.negate().prev()},u.prototype.not=c.prototype.not=a.prototype.not,a.prototype.and=function(h){return Is(this,h,function(p,v){return p&v})},u.prototype.and=c.prototype.and=a.prototype.and,a.prototype.or=function(h){return Is(this,h,function(p,v){return p|v})},u.prototype.or=c.prototype.or=a.prototype.or,a.prototype.xor=function(h){return Is(this,h,function(p,v){return p^v})},u.prototype.xor=c.prototype.xor=a.prototype.xor;var xs=1<<30,vy=(t&-t)*(t&-t)|xs;function Hi(h){var p=h.value,v=typeof p=="number"?p|xs:typeof p=="bigint"?p|BigInt(xs):p[0]+p[1]*t|vy;return v&-v}function Sl(h,p){if(p.compareTo(h)<=0){var v=Sl(h,p.square(p)),S=v.p,I=v.e,T=S.multiply(p);return T.compareTo(h)<=0?{p:T,e:I*2+1}:{p:S,e:I*2}}return{p:nt(1),e:0}}a.prototype.bitLength=function(){var h=this;return h.compareTo(nt(0))<0&&(h=h.negate().subtract(nt(1))),h.compareTo(nt(0))===0?nt(0):nt(Sl(h,nt(2)).e).add(nt(1))},u.prototype.bitLength=c.prototype.bitLength=a.prototype.bitLength;function Ol(h,p){return h=j(h),p=j(p),h.greater(p)?h:p}function Ls(h,p){return h=j(h),p=j(p),h.lesser(p)?h:p}function Nl(h,p){if(h=j(h).abs(),p=j(p).abs(),h.equals(p))return h;if(h.isZero())return p;if(p.isZero())return h;for(var v=l[1],S,I;h.isEven()&&p.isEven();)S=Ls(Hi(h),Hi(p)),h=h.divide(S),p=p.divide(S),v=v.multiply(S);for(;h.isEven();)h=h.divide(Hi(h));do{for(;p.isEven();)p=p.divide(Hi(p));h.greater(p)&&(I=p,p=h,h=I),p=p.subtract(h)}while(!p.isZero());return v.isUnit()?h:h.multiply(v)}function wy(h,p){return h=j(h).abs(),p=j(p).abs(),h.divide(Nl(h,p)).multiply(p)}function Ey(h,p,v){h=j(h),p=j(p);var S=v||Math.random,I=Ls(h,p),T=Ol(h,p),M=T.subtract(I).add(1);if(M.isSmall)return I.add(Math.floor(S()*M));for(var C=Qr(M,t).value,k=[],X=!0,W=0;W=M){if(k==="1"&&M===1)continue;throw new Error(k+" is not a valid digit in base "+p+".")}}p=j(p);var X=[],W=h[0]==="-";for(T=W?1:0;T"&&T=0;T--)S=S.add(h[T].times(I)),I=I.times(p);return v?S.negate():S}function _y(h,p){return p=p||s,h"}function Qr(h,p){if(p=nt(p),p.isZero()){if(h.isZero())return{value:[0],isNegative:!1};throw new Error("Cannot convert nonzero numbers to base 0.")}if(p.equals(-1)){if(h.isZero())return{value:[0],isNegative:!1};if(h.isNegative())return{value:[].concat.apply([],Array.apply(null,Array(-h.toJSNumber())).map(Array.prototype.valueOf,[1,0])),isNegative:!1};var v=Array.apply(null,Array(h.toJSNumber()-1)).map(Array.prototype.valueOf,[0,1]);return v.unshift([1]),{value:[].concat.apply([],v),isNegative:!1}}var S=!1;if(h.isNegative()&&p.isPositive()&&(S=!0,h=h.abs()),p.isUnit())return h.isZero()?{value:[0],isNegative:!1}:{value:Array.apply(null,Array(h.toJSNumber())).map(Number.prototype.valueOf,1),isNegative:S};for(var I=[],T=h,M;T.isNegative()||T.compareAbs(p)>=0;){M=T.divmod(p),T=M.quotient;var C=M.remainder;C.isNegative()&&(C=p.minus(C).abs(),T=T.next()),I.push(C.toJSNumber())}return I.push(T.toJSNumber()),{value:I.reverse(),isNegative:S}}function Tl(h,p,v){var S=Qr(h,p);return(S.isNegative?"-":"")+S.value.map(function(I){return _y(I,v)}).join("")}a.prototype.toArray=function(h){return Qr(this,h)},c.prototype.toArray=function(h){return Qr(this,h)},u.prototype.toArray=function(h){return Qr(this,h)},a.prototype.toString=function(h,p){if(h===e&&(h=10),h!==10)return Tl(this,h,p);for(var v=this.value,S=v.length,I=String(v[--S]),T="0000000",M;--S>=0;)M=String(v[S]),I+=T.slice(M.length)+M;var C=this.sign?"-":"";return C+I},c.prototype.toString=function(h,p){return h===e&&(h=10),h!=10?Tl(this,h,p):String(this.value)},u.prototype.toString=c.prototype.toString,u.prototype.toJSON=a.prototype.toJSON=c.prototype.toJSON=function(){return this.toString()},a.prototype.valueOf=function(){return parseInt(this.toString(),10)},a.prototype.toJSNumber=a.prototype.valueOf,c.prototype.valueOf=function(){return this.value},c.prototype.toJSNumber=c.prototype.valueOf,u.prototype.valueOf=u.prototype.toJSNumber=function(){return parseInt(this.toString(),10)};function Rl(h){if(f(+h)){var p=+h;if(p===w(p))return o?new u(BigInt(p)):new c(p);throw new Error("Invalid integer: "+h)}var v=h[0]==="-";v&&(h=h.slice(1));var S=h.split(/e/i);if(S.length>2)throw new Error("Invalid integer: "+S.join("e"));if(S.length===2){var I=S[1];if(I[0]==="+"&&(I=I.slice(1)),I=+I,I!==w(I)||!f(I))throw new Error("Invalid integer: "+I+" is not a valid exponent.");var T=S[0],M=T.indexOf(".");if(M>=0&&(I-=T.length-M-1,T=T.slice(0,M)+T.slice(M+1)),I<0)throw new Error("Cannot include negative exponent part for integers");T+=new Array(I+1).join("0"),h=T}var C=/^([0-9][0-9]*)$/.test(h);if(!C)throw new Error("Invalid integer: "+h);if(o)return new u(BigInt(v?"-"+h:h));for(var k=[],X=h.length,W=r,z=X-W;X>0;)k.push(+h.slice(z,X)),z-=W,z<0&&(z=0),X-=W;return E(k),new a(k,v)}function Sy(h){if(o)return new u(BigInt(h));if(f(h)){if(h!==w(h))throw new Error(h+" is not an integer.");return new c(h)}return Rl(h.toString())}function j(h){return typeof h=="number"?Sy(h):typeof h=="string"?Rl(h):typeof h=="bigint"?new u(h):h}for(var Fe=0;Fe<1e3;Fe++)l[Fe]=j(Fe),Fe>0&&(l[-Fe]=j(-Fe));return l.one=l[1],l.zero=l[0],l.minusOne=l[-1],l.max=Ol,l.min=Ls,l.gcd=Nl,l.lcm=wy,l.isInstance=function(h){return h instanceof a||h instanceof c||h instanceof u},l.randBetween=Ey,l.fromArray=function(h,p,v){return Dl(h.map(j),j(p||10),v)},l}();typeof Ki!="undefined"&&Ki.hasOwnProperty("exports")&&(Ki.exports=nt);typeof define=="function"&&define.amd&&define(function(){return nt})});var Vl=x(st=>{"use strict";var By=require("fs"),Fy=Hl(),me=!1;st.maxObjectSize=100*1e3*1e3;st.maxObjectCount=32768;var qy=9783072e5,Uy=st.UID=function(e){this.UID=e},_1=st.parseFile=function(e,t){return new Promise(function(r,i){function n(s){let o=null,l;try{l=jy(s),r(l)}catch(a){o=a,i(o)}finally{t&&t(o,l)}}if(Buffer.isBuffer(e))return n(e);By.readFile(e,function(s,o){if(s)return i(s),t(s);n(o)})})},jy=st.parseBuffer=function(e){if(e.slice(0,"bplist".length).toString("utf8")!=="bplist")throw new Error("Invalid binary plist. Expected 'bplist' at offset 0.");let r=e.slice(e.length-32,e.length),i=r.readUInt8(6);me&&console.log("offsetSize: "+i);let n=r.readUInt8(7);me&&console.log("objectRefSize: "+n);let s=Fs(r,8);me&&console.log("numObjects: "+s);let o=Fs(r,16);me&&console.log("topObject: "+o);let l=Fs(r,24);if(me&&console.log("offsetTableOffset: "+l),s>st.maxObjectCount)throw new Error("maxObjectCount exceeded");let a=[];for(let u=0;u>4,E=y&15;switch(b){case 0:return m();case 1:return O();case 8:return d();case 2:return g();case 3:return N();case 4:return A();case 5:return _();case 6:return _(!0);case 10:return R();case 13:return B();default:throw new Error("Unhandled type 0x"+b.toString(16))}function m(){switch(E){case 0:return null;case 8:return!1;case 9:return!0;case 15:return null;default:throw new Error("Unhandled simple type 0x"+b.toString(16))}}function w(P){let D="",L;for(L=0;Lst.maxObjectSize)throw new Error("To little heap space available!");let L=[];for(let F=0;Fst.maxObjectSize)throw new Error("To little heap space available!");me&&console.log("Parsing dictionary #"+u);let L={};for(let F=0;F{Yl.exports={DEFAULT_INITIAL_SIZE:8*1024,DEFAULT_INCREMENT_AMOUNT:8*1024,DEFAULT_FREQUENCY:1,DEFAULT_CHUNK_SIZE:1024}});var Jl=x((N1,Zl)=>{var Kl=require("stream"),Qi=Ji(),zy=require("util"),Gy=Zl.exports=function(e){var t=this;Kl.Stream.call(this),e=e||{};var r=e.hasOwnProperty("frequency")?e.frequency:Qi.DEFAULT_FREQUENCY,i=e.chunkSize||Qi.DEFAULT_CHUNK_SIZE,n=e.initialSize||Qi.DEFAULT_INITIAL_SIZE,s=e.incrementAmount||Qi.DEFAULT_INCREMENT_AMOUNT,o=0,l=new Buffer(n),a=null;this.readable=!0,this.writable=!1;var c=function(){var f=Math.min(i,o);if(f>0){var y=null;a?y=l.toString(a,0,f):(y=new Buffer(f),l.copy(y,0,0,f)),t.emit("data",y),f0&&this.emit("readable"),!this.isPaused&&!r)for(;o>0;)c()}},this.pause=function(){this.isPaused=!0,c&&c.interval&&(clearInterval(c.interval),delete c.interval)},this.resume=function(){this.isPaused=!1,c&&!c.interval&&r>0&&(c.interval=setInterval(c,r))},this.destroy=function(){t.emit("end"),c.interval&&clearInterval(c.interval),c=null,t.readable=!1,t.emit("close")},this.destroySoon=function(){t.readable=!1,c.interval||(t.emit("end"),t.emit("close"))},this.setEncoding=function(f){a=f},this.resume()};zy.inherits(Gy,Kl.Stream)});var rc=x((D1,Ql)=>{var $y=require("util"),tc=require("stream"),ec=Ji(),Wy=Ql.exports=function(e){var t=this;tc.Stream.call(this),e=e||{};var r=e.initialSize||ec.DEFAULT_INITIAL_SIZE,i=e.incrementAmount||ec.DEFAULT_INCREMENT_AMOUNT,n=new Buffer(r),s=0;this.writable=!0,this.readable=!1,this.size=function(){return s},this.maxSize=function(){return n.length},this.getContents=function(l){if(!s)return!1;var a=new Buffer(Math.min(l||s,s));return n.copy(a,0,0,a.length),a.length{tn.exports=Ji();tn.exports.ReadableStreamBuffer=Jl();tn.exports.WritableStreamBuffer=rc()});var sc=x((R1,qs)=>{"use strict";var Hy=ic(),lt=!1;function nc(e){this.value=e}qs.exports=function(e){var t=new Hy.WritableStreamBuffer;t.write(new Buffer("bplist00")),lt&&console.log("create",require("util").inspect(e,!1,10)),e instanceof Array&&e.length===1&&(e=e[0]);var r=en(e);lt&&console.log("entries",r);var i=Yy(r.length),n=[],s,o;return l(),r.forEach(function(D,L){n[L]=t.size(),D?u(D):t.write(0)}),c(),a(),t.getContents();function l(){var D={},L=0;r.forEach(function(F){F.id||(F.type==="string"?!F.bplistOverride&&D.hasOwnProperty(F.value)?(F.type="stringref",F.id=D[F.value]):D[F.value]=F.id=L++:F.id=L++)}),r=r.filter(function(F){return F.type!=="stringref"})}function a(){lt&&console.log("0x"+t.size().toString(16),"writeTrailer"),t.write(new Buffer([0,0,0,0,0,0])),lt&&console.log("0x"+t.size().toString(16),"writeTrailer(offsetSizeInBytes):",s),N(s),lt&&console.log("0x"+t.size().toString(16),"writeTrailer(offsetSizeInBytes):",i),N(i),lt&&console.log("0x"+t.size().toString(16),"writeTrailer(number of objects):",r.length),g(r.length),lt&&console.log("0x"+t.size().toString(16),"writeTrailer(top object)"),g(0),lt&&console.log("0x"+t.size().toString(16),"writeTrailer(offset table offset):",o),g(o)}function c(){lt&&console.log("0x"+t.size().toString(16),"writeOffsetTable"),o=t.size(),s=Vy(o),n.forEach(function(D){B(D,s)})}function u(D){switch(D.type){case"dict":y(D);break;case"number":case"double":b(D);break;case"UID":E(D);break;case"array":m(D);break;case"boolean":w(D);break;case"string":case"string-utf16":O(D);break;case"date":f(D);break;case"data":d(D);break;default:throw new Error("unhandled entry type: "+D.type)}}function f(D){N(51);var L=Date.parse(D.value)/1e3-978307200;A(L)}function y(D){if(lt){var L=D.entryKeys.map(function(U){return U.id}),F=D.entryValues.map(function(U){return U.id});console.log("0x"+t.size().toString(16),"writeDict","(id: "+D.id+")","(keys: "+L+")","(values: "+F+")")}_(13,D.entryKeys.length),D.entryKeys.forEach(function(U){R(U.id)}),D.entryValues.forEach(function(U){R(U.id)})}function b(D){lt&&console.log("0x"+t.size().toString(16),"writeNumber",D.value," (type: "+D.type+")","(id: "+D.id+")"),D.type!=="double"&&parseFloat(D.value.toFixed())==D.value?D.value<0?(N(19),B(D.value,8,!0)):D.value<=255?(N(16),B(D.value,1)):D.value<=65535?(N(17),B(D.value,2)):D.value<=4294967295?(N(18),B(D.value,4)):(N(20),B(D.value,8)):(N(35),A(D.value))}function E(D){lt&&console.log("0x"+t.size().toString(16),"writeUID",D.value," (type: "+D.type+")","(id: "+D.id+")"),_(8,0),R(D.value)}function m(D){lt&&console.log("0x"+t.size().toString(16),"writeArray (length: "+D.entries.length+")","(id: "+D.id+")"),_(10,D.entries.length),D.entries.forEach(function(L){R(L.id)})}function w(D){lt&&console.log("0x"+t.size().toString(16),"writeBoolean",D.value,"(id: "+D.id+")"),N(D.value?9:8)}function O(D){if(lt&&console.log("0x"+t.size().toString(16),"writeString",D.value,"(id: "+D.id+")"),D.type==="string-utf16"||P(D.value)){var L=new Buffer(D.value,"ucs2");_(6,L.length/2);for(var F=0;F4;)U[Y++]=0,L--;for(var $=L-1;$>=0;$--)U[Y++]=D>>8*$;t.write(U)}function P(D){return Buffer.byteLength(D,"utf8")!=D.length}};function en(e){if(e.bplistOverride)return[e];if(e instanceof Array)return Zy(e);if(e instanceof Buffer)return[{type:"data",value:e}];if(e instanceof nc)return[{type:"double",value:e.value}];if(typeof e=="object")return e instanceof Date?[{type:"date",value:e}]:Object.keys(e).length==1&&typeof e.UID=="number"?[{type:"UID",value:e.UID}]:Ky(e);if(typeof e=="string")return[{type:"string",value:e}];if(typeof e=="number")return[{type:"number",value:e}];if(typeof e=="boolean")return[{type:"boolean",value:e}];if(typeof e=="bigint")return[{type:"number",value:Number(BigInt.asIntN(32,e))}];throw new Error("unhandled entry: "+e)}function Zy(e){lt&&console.log("toEntriesArray");var t=[{type:"array",entries:[]}];return e.forEach(function(r){var i=en(r);t[0].entries.push(i[0]),t=t.concat(i)}),t}function Ky(e){lt&&console.log("toEntriesObject");var t=[{type:"dict",entryKeys:[],entryValues:[]}];return Object.keys(e).forEach(function(r){var i=en(r);t[0].entryKeys.push(i[0]),t=t.concat(i[0])}),Object.keys(e).forEach(function(r){var i=en(e[r]);t[0].entryValues.push(i[0]),t=t.concat(i)}),t}function Vy(e){return e<256?1:e<65536?2:e<4294967296?4:8}function Yy(e){return e<256?1:e<65536?2:4}qs.exports.Real=nc});var dc=x(oc=>{var Us=/[A-Z_a-z\xC0-\xD6\xD8-\xF6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]/,ac=new RegExp("[\\-\\.0-9"+Us.source.slice(1,-1)+"\\u00B7\\u0300-\\u036F\\u203F-\\u2040]"),lc=new RegExp("^"+Us.source+ac.source+"*(?::"+Us.source+ac.source+"*)?$"),ti=0,ye=1,lr=2,ei=3,cr=4,ur=5,ri=6,rn=7;function cc(){}cc.prototype={parse:function(e,t,r){var i=this.domBuilder;i.startDocument(),uc(t,t={}),Jy(e,t,r,i,this.errorHandler),i.endDocument()}};function Jy(e,t,r,i,n){function s(G){if(G>65535){G-=65536;var it=55296+(G>>10),zt=56320+(G&1023);return String.fromCharCode(it,zt)}else return String.fromCharCode(G)}function o(G){var it=G.slice(1,-1);return it in r?r[it]:it.charAt(0)==="#"?s(parseInt(it.substr(1).replace("x","0x"))):(n.error("entity not found:"+G),G)}function l(G){if(G>m){var it=e.substring(m,G).replace(/&#?\w+;/g,o);y&&a(m),i.characters(it,0,G-m),m=G}}function a(G,it){for(;G>=u&&(it=f.exec(e));)c=it.index,u=c+it[0].length,y.lineNumber++;y.columnNumber=G-c+1}for(var c=0,u=0,f=/.*(?:\r\n?|\n)|.*$/g,y=i.locator,b=[{currentNSMap:t}],E={},m=0;;){try{var w=e.indexOf("<",m);if(w<0){if(!e.substr(m).match(/^\s*$/)){var O=i.doc,d=O.createTextNode(e.substr(m));O.appendChild(d),i.currentElement=d}return}switch(w>m&&l(w),e.charAt(w+1)){case"/":var g=e.indexOf(">",w+3),N=e.substring(w+2,g),A=b.pop();g<0?(N=e.substring(w+2).replace(/[\s<].*/,""),n.error("end tag name: "+N+" is not complete:"+A.tagName),g=w+1+N.length):N.match(/\sm?m=g:l(Math.max(w,m)+1)}}function hc(e,t){return t.lineNumber=e.lineNumber,t.columnNumber=e.columnNumber,t}function Qy(e,t,r,i,n,s){for(var o,l,a=++t,c=ti;;){var u=e.charAt(a);switch(u){case"=":if(c===ye)o=e.slice(t,a),c=ei;else if(c===lr)c=ei;else throw new Error("attribute equal must after attrName");break;case"'":case'"':if(c===ei||c===ye)if(c===ye&&(s.warning('attribute value must after "="'),o=e.slice(t,a)),t=a+1,a=e.indexOf(u,t),a>0)l=e.slice(t,a).replace(/&#?\w+;/g,n),r.add(o,l,t-1),c=ur;else throw new Error("attribute value no end '"+u+"' match");else if(c==cr)l=e.slice(t,a).replace(/&#?\w+;/g,n),r.add(o,l,t),s.warning('attribute "'+o+'" missed start quot('+u+")!!"),t=a+1,c=ur;else throw new Error('attribute value must after "="');break;case"/":switch(c){case ti:r.setTagName(e.slice(t,a));case ur:case ri:case rn:c=rn,r.closed=!0;case cr:case ye:case lr:break;default:throw new Error("attribute invalid close char('/')")}break;case"":return s.error("unexpected end of input"),c==ti&&r.setTagName(e.slice(t,a)),a;case">":switch(c){case ti:r.setTagName(e.slice(t,a));case ur:case ri:case rn:break;case cr:case ye:l=e.slice(t,a),l.slice(-1)==="/"&&(r.closed=!0,l=l.slice(0,-1));case lr:c===lr&&(l=o),c==cr?(s.warning('attribute "'+l+'" missed quot(")!!'),r.add(o,l.replace(/&#?\w+;/g,n),t)):((i[""]!=="http://www.w3.org/1999/xhtml"||!l.match(/^(?:disabled|checked|selected)$/i))&&s.warning('attribute "'+l+'" missed value!! "'+l+'" instead!!'),r.add(l,l,t));break;case ei:throw new Error("attribute value missed!!")}return a;case"\x80":u=" ";default:if(u<=" ")switch(c){case ti:r.setTagName(e.slice(t,a)),c=ri;break;case ye:o=e.slice(t,a),c=lr;break;case cr:var l=e.slice(t,a).replace(/&#?\w+;/g,n);s.warning('attribute "'+l+'" missed quot(")!!'),r.add(o,l,t);case ur:c=ri;break}else switch(c){case lr:var f=r.tagName;(i[""]!=="http://www.w3.org/1999/xhtml"||!o.match(/^(?:disabled|checked|selected)$/i))&&s.warning('attribute "'+o+'" missed value!! "'+o+'" instead2!!'),r.add(o,o,t),t=a,c=ye;break;case ur:s.warning('attribute space is required"'+o+'"!!');case ri:c=ye,t=a;break;case ei:c=cr,t=a;break;case rn:throw new Error("elements closed character '/' and '>' must be connected to")}}a++}}function fc(e,t,r){for(var i=e.tagName,n=null,s=e.length;s--;){var o=e[s],l=o.qName,a=o.value,y=l.indexOf(":");if(y>0)var c=o.prefix=l.slice(0,y),u=l.slice(y+1),f=c==="xmlns"&&u;else u=l,c=null,f=l==="xmlns"&&"";o.localName=u,f!==!1&&(n==null&&(n={},uc(r,r={})),r[f]=n[f]=a,o.uri="http://www.w3.org/2000/xmlns/",t.startPrefixMapping(f,a))}for(var s=e.length;s--;){o=e[s];var c=o.prefix;c&&(c==="xml"&&(o.uri="http://www.w3.org/XML/1998/namespace"),c!=="xmlns"&&(o.uri=r[c||""]))}var y=i.indexOf(":");y>0?(c=e.prefix=i.slice(0,y),u=e.localName=i.slice(y+1)):(c=null,u=e.localName=i);var b=e.uri=r[c||""];if(t.startElement(b,u,i,e),e.closed){if(t.endElement(b,u,i),n)for(c in n)t.endPrefixMapping(c)}else return e.currentNSMap=r,e.localNSMap=n,!0}function tg(e,t,r,i,n){if(/^(?:script|textarea)$/i.test(r)){var s=e.indexOf("",t),o=e.substring(t+1,s);if(/[&<]/.test(o))return/^script$/i.test(r)?(n.characters(o,0,o.length),s):(o=o.replace(/&#?\w+;/g,i),n.characters(o,0,o.length),s)}return t+1}function eg(e,t,r,i){var n=i[r];return n==null&&(n=e.lastIndexOf(""),n",t+4);return s>t?(r.comment(e,t+4,s-t-4),s+3):(i.error("Unclosed comment"),-1)}else return-1;default:if(e.substr(t+3,6)=="CDATA["){var s=e.indexOf("]]>",t+9);return r.startCDATA(),r.characters(e,t+9,s-t-9),r.endCDATA(),s+3}var o=ng(e,t),l=o.length;if(l>1&&/!doctype/i.test(o[0][0])){var a=o[1][0],c=l>3&&/^public$/i.test(o[2][0])&&o[3][0],u=l>4&&o[4][0],f=o[l-1];return r.startDTD(a,c&&c.replace(/^(['"])(.*?)\1$/,"$2"),u&&u.replace(/^(['"])(.*?)\1$/,"$2")),r.endDTD(),f.index+f[0].length}}return-1}function ig(e,t,r){var i=e.indexOf("?>",t);if(i){var n=e.substring(t,i).match(/^<\?(\S*)\s*([\s\S]*?)\s*$/);if(n){var s=n[0].length;return r.processingInstruction(n[1],n[2]),i+2}else return-1}return-1}function pc(e){}pc.prototype={setTagName:function(e){if(!lc.test(e))throw new Error("invalid tagName:"+e);this.tagName=e},add:function(e,t,r){if(!lc.test(e))throw new Error("invalid attribute:"+e);this[this.length++]={qName:e,value:t,offset:r}},length:0,getLocalName:function(e){return this[e].localName},getLocator:function(e){return this[e].locator},getQName:function(e){return this[e].qName},getURI:function(e){return this[e].uri},getValue:function(e){return this[e].value}};function nn(e,t){return e.__proto__=t,e}nn({},nn.prototype)instanceof nn||(nn=function(e,t){function r(){}r.prototype=t,r=new r;for(t in e)r[t]=e[t];return r});function ng(e,t){var r,i=[],n=/'[^']+'|"[^"]+"|[^\s<>\/=]+=?|(\/?\s*>|<)/g;for(n.lastIndex=t,n.exec(e);r=n.exec(e);)if(i.push(r),r[1])return i}oc.XMLReader=cc});var Ks=x(js=>{function ii(e,t){for(var r in e)t[r]=e[r]}function bt(e,t){var r=e.prototype;if(Object.create){var i=Object.create(t.prototype);r.__proto__=i}if(!(r instanceof t)){let s=function(){};var n=s;s.prototype=t.prototype,s=new s,ii(r,s),e.prototype=r=s}r.constructor!=e&&(typeof e!="function"&&console.error("unknow Class:"+e),r.constructor=e)}var sg="http://www.w3.org/1999/xhtml",_t={},Wt=_t.ELEMENT_NODE=1,hr=_t.ATTRIBUTE_NODE=2,sn=_t.TEXT_NODE=3,mc=_t.CDATA_SECTION_NODE=4,yc=_t.ENTITY_REFERENCE_NODE=5,og=_t.ENTITY_NODE=6,gc=_t.PROCESSING_INSTRUCTION_NODE=7,vc=_t.COMMENT_NODE=8,wc=_t.DOCUMENT_NODE=9,Ec=_t.DOCUMENT_TYPE_NODE=10,ee=_t.DOCUMENT_FRAGMENT_NODE=11,ag=_t.NOTATION_NODE=12,pt={},ct={},I1=pt.INDEX_SIZE_ERR=(ct[1]="Index size error",1),x1=pt.DOMSTRING_SIZE_ERR=(ct[2]="DOMString size error",2),lg=pt.HIERARCHY_REQUEST_ERR=(ct[3]="Hierarchy request error",3),L1=pt.WRONG_DOCUMENT_ERR=(ct[4]="Wrong document",4),M1=pt.INVALID_CHARACTER_ERR=(ct[5]="Invalid character",5),C1=pt.NO_DATA_ALLOWED_ERR=(ct[6]="No data allowed",6),P1=pt.NO_MODIFICATION_ALLOWED_ERR=(ct[7]="No modification allowed",7),cg=pt.NOT_FOUND_ERR=(ct[8]="Not found",8),k1=pt.NOT_SUPPORTED_ERR=(ct[9]="Not supported",9),bc=pt.INUSE_ATTRIBUTE_ERR=(ct[10]="Attribute in use",10),B1=pt.INVALID_STATE_ERR=(ct[11]="Invalid state",11),F1=pt.SYNTAX_ERR=(ct[12]="Syntax error",12),q1=pt.INVALID_MODIFICATION_ERR=(ct[13]="Invalid modification",13),U1=pt.NAMESPACE_ERR=(ct[14]="Invalid namespace",14),j1=pt.INVALID_ACCESS_ERR=(ct[15]="Invalid access",15);function fr(e,t){if(t instanceof Error)var r=t;else r=this,Error.call(this,ct[e]),this.message=ct[e],Error.captureStackTrace&&Error.captureStackTrace(this,fr);return r.code=e,t&&(this.message=this.message+": "+t),r}fr.prototype=Error.prototype;ii(pt,fr);function ge(){}ge.prototype={length:0,item:function(e){return this[e]||null},toString:function(e,t){for(var r=[],i=0;i=0){for(var n=t.length-1;i0},lookupPrefix:function(e){for(var t=this;t;){var r=t._nsMap;if(r){for(var i in r)if(r[i]==e)return i}t=t.nodeType==hr?t.ownerDocument:t.parentNode}return null},lookupNamespaceURI:function(e){for(var t=this;t;){var r=t._nsMap;if(r&&e in r)return r[e];t=t.nodeType==hr?t.ownerDocument:t.parentNode}return null},isDefaultNamespace:function(e){var t=this.lookupPrefix(e);return t==null}};function Ic(e){return e=="<"&&"<"||e==">"&&">"||e=="&"&&"&"||e=='"'&&"""||"&#"+e.charCodeAt()+";"}ii(_t,yt);ii(_t,yt.prototype);function an(e,t){if(t(e))return!0;if(e=e.firstChild)do if(an(e,t))return!0;while(e=e.nextSibling)}function si(){}function ug(e,t,r){e&&e._inc++;var i=r.namespaceURI;i=="http://www.w3.org/2000/xmlns/"&&(t._nsMap[r.prefix?r.localName:""]=r.value)}function Oc(e,t,r,i){e&&e._inc++;var n=r.namespaceURI;n=="http://www.w3.org/2000/xmlns/"&&delete t._nsMap[r.prefix?r.localName:""]}function $s(e,t,r){if(e&&e._inc){e._inc++;var i=t.childNodes;if(r)i[i.length++]=r;else{for(var n=t.firstChild,s=0;n;)i[s++]=n,n=n.nextSibling;i.length=s}}}function Rc(e,t){var r=t.previousSibling,i=t.nextSibling;return r?r.nextSibling=i:e.firstChild=i,i?i.previousSibling=r:e.lastChild=r,$s(e.ownerDocument,e),t}function Ac(e,t,r){var i=t.parentNode;if(i&&i.removeChild(t),t.nodeType===ee){var n=t.firstChild;if(n==null)return t;var s=t.lastChild}else n=s=t;var o=r?r.previousSibling:e.lastChild;n.previousSibling=o,s.nextSibling=r,o?o.nextSibling=n:e.firstChild=n,r==null?e.lastChild=s:r.previousSibling=s;do n.parentNode=e;while(n!==s&&(n=n.nextSibling));return $s(e.ownerDocument||e,e),t.nodeType==ee&&(t.firstChild=t.lastChild=null),t}function hg(e,t){var r=t.parentNode;if(r){var i=e.lastChild;r.removeChild(t);var i=e.lastChild}var i=e.lastChild;return t.parentNode=e,t.previousSibling=i,t.nextSibling=null,i?i.nextSibling=t:e.firstChild=t,e.lastChild=t,$s(e.ownerDocument,e,t),t}si.prototype={nodeName:"#document",nodeType:wc,doctype:null,documentElement:null,_inc:1,insertBefore:function(e,t){if(e.nodeType==ee){for(var r=e.firstChild;r;){var i=r.nextSibling;this.insertBefore(r,t),r=i}return e}return this.documentElement==null&&e.nodeType==Wt&&(this.documentElement=e),Ac(this,e,t),e.ownerDocument=this,e},removeChild:function(e){return this.documentElement==e&&(this.documentElement=null),Rc(this,e)},importNode:function(e,t){return xc(this,e,t)},getElementById:function(e){var t=null;return an(this.documentElement,function(r){if(r.nodeType==Wt&&r.getAttribute("id")==e)return t=r,!0}),t},createElement:function(e){var t=new dr;t.ownerDocument=this,t.nodeName=e,t.tagName=e,t.childNodes=new ge;var r=t.attributes=new on;return r._ownerElement=t,t},createDocumentFragment:function(){var e=new cn;return e.ownerDocument=this,e.childNodes=new ge,e},createTextNode:function(e){var t=new Ws;return t.ownerDocument=this,t.appendData(e),t},createComment:function(e){var t=new Hs;return t.ownerDocument=this,t.appendData(e),t},createCDATASection:function(e){var t=new Vs;return t.ownerDocument=this,t.appendData(e),t},createProcessingInstruction:function(e,t){var r=new Zs;return r.ownerDocument=this,r.tagName=r.target=e,r.nodeValue=r.data=t,r},createAttribute:function(e){var t=new ln;return t.ownerDocument=this,t.name=e,t.nodeName=e,t.localName=e,t.specified=!0,t},createEntityReference:function(e){var t=new Ys;return t.ownerDocument=this,t.nodeName=e,t},createElementNS:function(e,t){var r=new dr,i=t.split(":"),n=r.attributes=new on;return r.childNodes=new ge,r.ownerDocument=this,r.nodeName=t,r.tagName=t,r.namespaceURI=e,i.length==2?(r.prefix=i[0],r.localName=i[1]):r.localName=t,n._ownerElement=r,r},createAttributeNS:function(e,t){var r=new ln,i=t.split(":");return r.ownerDocument=this,r.nodeName=t,r.name=t,r.namespaceURI=e,r.specified=!0,i.length==2?(r.prefix=i[0],r.localName=i[1]):r.localName=t,r}};bt(si,yt);function dr(){this._nsMap={}}dr.prototype={nodeType:Wt,hasAttribute:function(e){return this.getAttributeNode(e)!=null},getAttribute:function(e){var t=this.getAttributeNode(e);return t&&t.value||""},getAttributeNode:function(e){return this.attributes.getNamedItem(e)},setAttribute:function(e,t){var r=this.ownerDocument.createAttribute(e);r.value=r.nodeValue=""+t,this.setAttributeNode(r)},removeAttribute:function(e){var t=this.getAttributeNode(e);t&&this.removeAttributeNode(t)},appendChild:function(e){return e.nodeType===ee?this.insertBefore(e,null):hg(this,e)},setAttributeNode:function(e){return this.attributes.setNamedItem(e)},setAttributeNodeNS:function(e){return this.attributes.setNamedItemNS(e)},removeAttributeNode:function(e){return this.attributes.removeNamedItem(e.nodeName)},removeAttributeNS:function(e,t){var r=this.getAttributeNodeNS(e,t);r&&this.removeAttributeNode(r)},hasAttributeNS:function(e,t){return this.getAttributeNodeNS(e,t)!=null},getAttributeNS:function(e,t){var r=this.getAttributeNodeNS(e,t);return r&&r.value||""},setAttributeNS:function(e,t,r){var i=this.ownerDocument.createAttributeNS(e,t);i.value=i.nodeValue=""+r,this.setAttributeNode(i)},getAttributeNodeNS:function(e,t){return this.attributes.getNamedItemNS(e,t)},getElementsByTagName:function(e){return new ni(this,function(t){var r=[];return an(t,function(i){i!==t&&i.nodeType==Wt&&(e==="*"||i.tagName==e)&&r.push(i)}),r})},getElementsByTagNameNS:function(e,t){return new ni(this,function(r){var i=[];return an(r,function(n){n!==r&&n.nodeType===Wt&&(e==="*"||n.namespaceURI===e)&&(t==="*"||n.localName==t)&&i.push(n)}),i})}};si.prototype.getElementsByTagName=dr.prototype.getElementsByTagName;si.prototype.getElementsByTagNameNS=dr.prototype.getElementsByTagNameNS;bt(dr,yt);function ln(){}ln.prototype.nodeType=hr;bt(ln,yt);function oi(){}oi.prototype={data:"",substringData:function(e,t){return this.data.substring(e,e+t)},appendData:function(e){e=this.data+e,this.nodeValue=this.data=e,this.length=e.length},insertData:function(e,t){this.replaceData(e,0,t)},appendChild:function(e){throw new Error(ct[lg])},deleteData:function(e,t){this.replaceData(e,t,"")},replaceData:function(e,t,r){var i=this.data.substring(0,e),n=this.data.substring(e+t);r=i+r+n,this.nodeValue=this.data=r,this.length=r.length}};bt(oi,yt);function Ws(){}Ws.prototype={nodeName:"#text",nodeType:sn,splitText:function(e){var t=this.data,r=t.substring(e);t=t.substring(0,e),this.data=this.nodeValue=t,this.length=t.length;var i=this.ownerDocument.createTextNode(r);return this.parentNode&&this.parentNode.insertBefore(i,this.nextSibling),i}};bt(Ws,oi);function Hs(){}Hs.prototype={nodeName:"#comment",nodeType:vc};bt(Hs,oi);function Vs(){}Vs.prototype={nodeName:"#cdata-section",nodeType:mc};bt(Vs,oi);function zs(){}zs.prototype.nodeType=Ec;bt(zs,yt);function Lc(){}Lc.prototype.nodeType=ag;bt(Lc,yt);function Mc(){}Mc.prototype.nodeType=og;bt(Mc,yt);function Ys(){}Ys.prototype.nodeType=yc;bt(Ys,yt);function cn(){}cn.prototype.nodeName="#document-fragment";cn.prototype.nodeType=ee;bt(cn,yt);function Zs(){}Zs.prototype.nodeType=gc;bt(Zs,yt);function Cc(){}Cc.prototype.serializeToString=function(e,t,r){return Pc.call(e,t,r)};yt.prototype.toString=Pc;function Pc(e,t){var r=[],i=this.nodeType==9?this.documentElement:this,n=i.prefix,s=i.namespaceURI;if(s&&n==null){var n=i.lookupPrefix(s);if(n==null)var o=[{namespace:s,prefix:null}]}return pr(this,r,e,t,o),r.join("")}function kc(e,t,r){var i=e.prefix||"",n=e.namespaceURI;if(!i&&!n||i==="xml"&&n==="http://www.w3.org/XML/1998/namespace"||n=="http://www.w3.org/2000/xmlns/")return!1;for(var s=r.length;s--;){var o=r[s];if(o.prefix==i)return o.namespace!=n}return!0}function pr(e,t,r,i,n){if(i)if(e=i(e),e){if(typeof e=="string"){t.push(e);return}}else return;switch(e.nodeType){case Wt:n||(n=[]);var s=n.length,o=e.attributes,l=o.length,a=e.firstChild,c=e.tagName;r=sg===e.namespaceURI||r,t.push("<",c);for(var u=0;u"),r&&/^script$/i.test(c))for(;a;)a.data?t.push(a.data):pr(a,t,r,i,n),a=a.nextSibling;else for(;a;)pr(a,t,r,i,n),a=a.nextSibling;t.push("")}else t.push("/>");return;case wc:case ee:for(var a=e.firstChild;a;)pr(a,t,r,i,n),a=a.nextSibling;return;case hr:return t.push(" ",e.name,'="',e.value.replace(/[<&"]/g,Ic),'"');case sn:return t.push(e.data.replace(/[<&]/g,Ic));case mc:return t.push("");case vc:return t.push("");case Ec:var m=e.publicId,w=e.systemId;if(t.push("');else if(w&&w!=".")t.push(' SYSTEM "',w,'">');else{var O=e.internalSubset;O&&t.push(" [",O,"]"),t.push(">")}return;case gc:return t.push("");case yc:return t.push("&",e.nodeName,";");default:t.push("??",e.nodeName)}}function xc(e,t,r){var i;switch(t.nodeType){case Wt:i=t.cloneNode(!1),i.ownerDocument=e;case ee:break;case hr:r=!0;break}if(i||(i=t.cloneNode(!1)),i.ownerDocument=e,i.parentNode=null,r)for(var n=t.firstChild;n;)i.appendChild(xc(e,n,r)),n=n.nextSibling;return i}function Gs(e,t,r){var i=new t.constructor;for(var n in t){var s=t[n];typeof s!="object"&&s!=i[n]&&(i[n]=s)}switch(t.childNodes&&(i.childNodes=new ge),i.ownerDocument=e,i.nodeType){case Wt:var o=t.attributes,l=i.attributes=new on,a=o.length;l._ownerElement=i;for(var c=0;c{function Bc(e){this.options=e||{locator:{}}}Bc.prototype.parseFromString=function(e,t){var r=this.options,i=new pg,n=r.domBuilder||new hn,s=r.errorHandler,o=r.locator,l=r.xmlns||{},a={lt:"<",gt:">",amp:"&",quot:'"',apos:"'"};return o&&n.setDocumentLocator(o),i.errorHandler=fg(s,n,o),i.domBuilder=r.domBuilder||n,/\/x?html?$/.test(t)&&(a.nbsp="\xA0",a.copy="\xA9",l[""]="http://www.w3.org/1999/xhtml"),l.xml=l.xml||"http://www.w3.org/XML/1998/namespace",e?i.parse(e,l,a):i.errorHandler.error("invalid doc source"),n.doc};function fg(e,t,r){if(!e){if(t instanceof hn)return t;e=t}var i={},n=e instanceof Function;r=r||{};function s(o){var l=e[o];!l&&n&&(l=e.length==2?function(a){e(o,a)}:e),i[o]=l&&function(a){l("[xmldom "+o+"] "+a+fn(r))}||function(){}}return s("warning"),s("error"),s("fatalError"),i}function hn(){this.cdata=!1}function mr(e,t){t.lineNumber=e.lineNumber,t.columnNumber=e.columnNumber}hn.prototype={startDocument:function(){this.doc=new dg().createDocument(null,null,null),this.locator&&(this.doc.documentURI=this.locator.systemId)},startElement:function(e,t,r,i){var n=this.doc,s=n.createElementNS(e,r||t),o=i.length;pn(this,s),this.currentElement=s,this.locator&&mr(this.locator,s);for(var l=0;l=t+r||t?new java.lang.String(e,t,r)+"":e}"endDTD,startEntity,endEntity,attributeDecl,elementDecl,externalEntityDecl,internalEntityDecl,resolveEntity,getExternalSubset,notationDecl,unparsedEntityDecl".replace(/\w+/g,function(e){hn.prototype[e]=function(){return null}});function pn(e,t){e.currentElement?e.currentElement.appendChild(t):e.doc.appendChild(t)}var pg=dc().XMLReader,dg=un.DOMImplementation=Ks().DOMImplementation;un.XMLSerializer=Ks().XMLSerializer;un.DOMParser=Bc});var Xc=x(Uc=>{var mg=qc().DOMParser;Uc.parse=yg;var dn=3,jc=4,gg=8;function Js(e){return e.nodeType===dn||e.nodeType===gg||e.nodeType===jc}function re(e){return!e.childNodes||e.childNodes.length===0}function yr(e,t){if(!e)throw new Error(t)}function yg(e){var t=new mg().parseFromString(e);yr(t.documentElement.nodeName==="plist","malformed document. First element should be ");var r=gr(t.documentElement);return r.length==1&&(r=r[0]),r}function gr(e){var t,r,i,n,s,o,l,a;if(!e)return null;if(e.nodeName==="plist"){if(s=[],re(e))return s;for(t=0;t."),i=gr(e.childNodes[t])):(yr(e.childNodes[t].nodeName!=="key",'Unexpected key "'+gr(e.childNodes[t])+'" while parsing .'),r[i]=gr(e.childNodes[t])),l+=1);if(l%2==1)throw new Error('Missing value for "'+i+'" while parsing ');return r}else if(e.nodeName==="array"){if(s=[],re(e))return s;for(t=0;t{"use strict";mn.byteLength=vg;mn.toByteArray=wg;mn.fromByteArray=Eg;var Ht=[],Pt=[],bg=typeof Uint8Array!="undefined"?Uint8Array:Array,Qs="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";for(var vr=0,_g=Qs.length;vr<_g;++vr)Ht[vr]=Qs[vr],Pt[Qs.charCodeAt(vr)]=vr;Pt["-".charCodeAt(0)]=62;Pt["_".charCodeAt(0)]=63;function zc(e){var t=e.length;if(t%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var r=e.indexOf("=");r===-1&&(r=t);var i=r===t?0:4-r%4;return[r,i]}function vg(e){var t=zc(e),r=t[0],i=t[1];return(r+i)*3/4-i}function Sg(e,t,r){return(t+r)*3/4-r}function wg(e){var t,r=zc(e),i=r[0],n=r[1],s=new bg(Sg(e,i,n)),o=0,l=n>0?i-4:i,a;for(a=0;a>16&255,s[o++]=t>>8&255,s[o++]=t&255;return n===2&&(t=Pt[e.charCodeAt(a)]<<2|Pt[e.charCodeAt(a+1)]>>4,s[o++]=t&255),n===1&&(t=Pt[e.charCodeAt(a)]<<10|Pt[e.charCodeAt(a+1)]<<4|Pt[e.charCodeAt(a+2)]>>2,s[o++]=t>>8&255,s[o++]=t&255),s}function Og(e){return Ht[e>>18&63]+Ht[e>>12&63]+Ht[e>>6&63]+Ht[e&63]}function Ng(e,t,r){for(var i,n=[],s=t;sl?l:o+s));return i===1?(t=e[r-1],n.push(Ht[t>>2]+Ht[t<<4&63]+"==")):i===2&&(t=(e[r-2]<<8)+e[r-1],n.push(Ht[t>>10]+Ht[t>>4&63]+Ht[t<<2&63]+"=")),n.join("")}});var ie=x(($c,qe)=>{(function(){var e,t,r,i,n,s,o=[].slice,l={}.hasOwnProperty;e=function(){var a,c,u,f,y,b;if(b=arguments[0],y=2<=arguments.length?o.call(arguments,1):[],i(Object.assign))Object.assign.apply(null,arguments);else for(a=0,u=y.length;a{(function(){var e;Hc.exports=e=function(){function t(r,i,n){if(this.options=r.options,this.stringify=r.stringify,i==null)throw new Error("Missing attribute name of element "+r.name);if(n==null)throw new Error("Missing attribute value for attribute "+i+" of element "+r.name);this.name=this.stringify.attName(i),this.value=this.stringify.attValue(n)}return t.prototype.clone=function(){return Object.create(this)},t.prototype.toString=function(r){return this.options.writer.set(r).attribute(this)},t}()}).call(Wc)});var ai=x((Vc,Yc)=>{(function(){var e,t,r,i,n,s,o=function(a,c){for(var u in c)l.call(c,u)&&(a[u]=c[u]);function f(){this.constructor=a}return f.prototype=c.prototype,a.prototype=new f,a.__super__=c.prototype,a},l={}.hasOwnProperty;s=ie(),n=s.isObject,i=s.isFunction,r=St(),e=to(),Yc.exports=t=function(a){o(c,a);function c(u,f,y){if(c.__super__.constructor.call(this,u),f==null)throw new Error("Missing element name");this.name=this.stringify.eleName(f),this.attributes={},y!=null&&this.attribute(y),u.isDocument&&(this.isRoot=!0,this.documentObject=u,u.rootObject=this)}return c.prototype.clone=function(){var u,f,y,b;y=Object.create(this),y.isRoot&&(y.documentObject=null),y.attributes={},b=this.attributes;for(f in b)!l.call(b,f)||(u=b[f],y.attributes[f]=u.clone());return y.children=[],this.children.forEach(function(E){var m;return m=E.clone(),m.parent=y,y.children.push(m)}),y},c.prototype.attribute=function(u,f){var y,b;if(u!=null&&(u=u.valueOf()),n(u))for(y in u)!l.call(u,y)||(b=u[y],this.attribute(y,b));else i(f)&&(f=f.apply()),(!this.options.skipNullAttributes||f!=null)&&(this.attributes[u]=new e(this,u,f));return this},c.prototype.removeAttribute=function(u){var f,y,b;if(u==null)throw new Error("Missing attribute name");if(u=u.valueOf(),Array.isArray(u))for(y=0,b=u.length;y{(function(){var e,t,r=function(n,s){for(var o in s)i.call(s,o)&&(n[o]=s[o]);function l(){this.constructor=n}return l.prototype=s.prototype,n.prototype=new l,n.__super__=s.prototype,n},i={}.hasOwnProperty;t=St(),Kc.exports=e=function(n){r(s,n);function s(o,l){if(s.__super__.constructor.call(this,o),l==null)throw new Error("Missing CDATA text");this.text=this.stringify.cdata(l)}return s.prototype.clone=function(){return Object.create(this)},s.prototype.toString=function(o){return this.options.writer.set(o).cdata(this)},s}(t)}).call(Zc)});var ci=x((Jc,Qc)=>{(function(){var e,t,r=function(n,s){for(var o in s)i.call(s,o)&&(n[o]=s[o]);function l(){this.constructor=n}return l.prototype=s.prototype,n.prototype=new l,n.__super__=s.prototype,n},i={}.hasOwnProperty;t=St(),Qc.exports=e=function(n){r(s,n);function s(o,l){if(s.__super__.constructor.call(this,o),l==null)throw new Error("Missing comment text");this.text=this.stringify.comment(l)}return s.prototype.clone=function(){return Object.create(this)},s.prototype.toString=function(o){return this.options.writer.set(o).comment(this)},s}(t)}).call(Jc)});var ui=x((tu,eu)=>{(function(){var e,t,r,i=function(s,o){for(var l in o)n.call(o,l)&&(s[l]=o[l]);function a(){this.constructor=s}return a.prototype=o.prototype,s.prototype=new a,s.__super__=o.prototype,s},n={}.hasOwnProperty;r=ie().isObject,t=St(),eu.exports=e=function(s){i(o,s);function o(l,a,c,u){var f;o.__super__.constructor.call(this,l),r(a)&&(f=a,a=f.version,c=f.encoding,u=f.standalone),a||(a="1.0"),this.version=this.stringify.xmlVersion(a),c!=null&&(this.encoding=this.stringify.xmlEncoding(c)),u!=null&&(this.standalone=this.stringify.xmlStandalone(u))}return o.prototype.toString=function(l){return this.options.writer.set(l).declaration(this)},o}(t)}).call(tu)});var hi=x((ru,iu)=>{(function(){var e,t,r=function(n,s){for(var o in s)i.call(s,o)&&(n[o]=s[o]);function l(){this.constructor=n}return l.prototype=s.prototype,n.prototype=new l,n.__super__=s.prototype,n},i={}.hasOwnProperty;t=St(),iu.exports=e=function(n){r(s,n);function s(o,l,a,c,u,f){if(s.__super__.constructor.call(this,o),l==null)throw new Error("Missing DTD element name");if(a==null)throw new Error("Missing DTD attribute name");if(!c)throw new Error("Missing DTD attribute type");if(!u)throw new Error("Missing DTD attribute default");if(u.indexOf("#")!==0&&(u="#"+u),!u.match(/^(#REQUIRED|#IMPLIED|#FIXED|#DEFAULT)$/))throw new Error("Invalid default value type; expected: #REQUIRED, #IMPLIED, #FIXED or #DEFAULT");if(f&&!u.match(/^(#FIXED|#DEFAULT)$/))throw new Error("Default value only applies to #FIXED or #DEFAULT");this.elementName=this.stringify.eleName(l),this.attributeName=this.stringify.attName(a),this.attributeType=this.stringify.dtdAttType(c),this.defaultValue=this.stringify.dtdAttDefault(f),this.defaultValueType=u}return s.prototype.toString=function(o){return this.options.writer.set(o).dtdAttList(this)},s}(t)}).call(ru)});var fi=x((nu,su)=>{(function(){var e,t,r,i=function(s,o){for(var l in o)n.call(o,l)&&(s[l]=o[l]);function a(){this.constructor=s}return a.prototype=o.prototype,s.prototype=new a,s.__super__=o.prototype,s},n={}.hasOwnProperty;r=ie().isObject,t=St(),su.exports=e=function(s){i(o,s);function o(l,a,c,u){if(o.__super__.constructor.call(this,l),c==null)throw new Error("Missing entity name");if(u==null)throw new Error("Missing entity value");if(this.pe=!!a,this.name=this.stringify.eleName(c),!r(u))this.value=this.stringify.dtdEntityValue(u);else{if(!u.pubID&&!u.sysID)throw new Error("Public and/or system identifiers are required for an external entity");if(u.pubID&&!u.sysID)throw new Error("System identifier is required for a public external entity");if(u.pubID!=null&&(this.pubID=this.stringify.dtdPubID(u.pubID)),u.sysID!=null&&(this.sysID=this.stringify.dtdSysID(u.sysID)),u.nData!=null&&(this.nData=this.stringify.dtdNData(u.nData)),this.pe&&this.nData)throw new Error("Notation declaration is not allowed in a parameter entity")}}return o.prototype.toString=function(l){return this.options.writer.set(l).dtdEntity(this)},o}(t)}).call(nu)});var pi=x((ou,au)=>{(function(){var e,t,r=function(n,s){for(var o in s)i.call(s,o)&&(n[o]=s[o]);function l(){this.constructor=n}return l.prototype=s.prototype,n.prototype=new l,n.__super__=s.prototype,n},i={}.hasOwnProperty;t=St(),au.exports=e=function(n){r(s,n);function s(o,l,a){if(s.__super__.constructor.call(this,o),l==null)throw new Error("Missing DTD element name");a||(a="(#PCDATA)"),Array.isArray(a)&&(a="("+a.join(",")+")"),this.name=this.stringify.eleName(l),this.value=this.stringify.dtdElementValue(a)}return s.prototype.toString=function(o){return this.options.writer.set(o).dtdElement(this)},s}(t)}).call(ou)});var di=x((lu,cu)=>{(function(){var e,t,r=function(n,s){for(var o in s)i.call(s,o)&&(n[o]=s[o]);function l(){this.constructor=n}return l.prototype=s.prototype,n.prototype=new l,n.__super__=s.prototype,n},i={}.hasOwnProperty;t=St(),cu.exports=e=function(n){r(s,n);function s(o,l,a){if(s.__super__.constructor.call(this,o),l==null)throw new Error("Missing notation name");if(!a.pubID&&!a.sysID)throw new Error("Public or system identifiers are required for an external entity");this.name=this.stringify.eleName(l),a.pubID!=null&&(this.pubID=this.stringify.dtdPubID(a.pubID)),a.sysID!=null&&(this.sysID=this.stringify.dtdSysID(a.sysID))}return s.prototype.toString=function(o){return this.options.writer.set(o).dtdNotation(this)},s}(t)}).call(lu)});var mi=x((uu,hu)=>{(function(){var e,t,r,i,n,s,o,l=function(c,u){for(var f in u)a.call(u,f)&&(c[f]=u[f]);function y(){this.constructor=c}return y.prototype=u.prototype,c.prototype=new y,c.__super__=u.prototype,c},a={}.hasOwnProperty;o=ie().isObject,s=St(),e=hi(),r=fi(),t=pi(),i=di(),hu.exports=n=function(c){l(u,c);function u(f,y,b){var E,m;u.__super__.constructor.call(this,f),this.documentObject=f,o(y)&&(E=y,y=E.pubID,b=E.sysID),b==null&&(m=[y,b],b=m[0],y=m[1]),y!=null&&(this.pubID=this.stringify.dtdPubID(y)),b!=null&&(this.sysID=this.stringify.dtdSysID(b))}return u.prototype.element=function(f,y){var b;return b=new t(this,f,y),this.children.push(b),this},u.prototype.attList=function(f,y,b,E,m){var w;return w=new e(this,f,y,b,E,m),this.children.push(w),this},u.prototype.entity=function(f,y){var b;return b=new r(this,!1,f,y),this.children.push(b),this},u.prototype.pEntity=function(f,y){var b;return b=new r(this,!0,f,y),this.children.push(b),this},u.prototype.notation=function(f,y){var b;return b=new i(this,f,y),this.children.push(b),this},u.prototype.toString=function(f){return this.options.writer.set(f).docType(this)},u.prototype.ele=function(f,y){return this.element(f,y)},u.prototype.att=function(f,y,b,E,m){return this.attList(f,y,b,E,m)},u.prototype.ent=function(f,y){return this.entity(f,y)},u.prototype.pent=function(f,y){return this.pEntity(f,y)},u.prototype.not=function(f,y){return this.notation(f,y)},u.prototype.up=function(){return this.root()||this.documentObject},u}(s)}).call(uu)});var yi=x((fu,pu)=>{(function(){var e,t,r=function(n,s){for(var o in s)i.call(s,o)&&(n[o]=s[o]);function l(){this.constructor=n}return l.prototype=s.prototype,n.prototype=new l,n.__super__=s.prototype,n},i={}.hasOwnProperty;e=St(),pu.exports=t=function(n){r(s,n);function s(o,l){if(s.__super__.constructor.call(this,o),l==null)throw new Error("Missing raw text");this.value=this.stringify.raw(l)}return s.prototype.clone=function(){return Object.create(this)},s.prototype.toString=function(o){return this.options.writer.set(o).raw(this)},s}(e)}).call(fu)});var gi=x((du,mu)=>{(function(){var e,t,r=function(n,s){for(var o in s)i.call(s,o)&&(n[o]=s[o]);function l(){this.constructor=n}return l.prototype=s.prototype,n.prototype=new l,n.__super__=s.prototype,n},i={}.hasOwnProperty;e=St(),mu.exports=t=function(n){r(s,n);function s(o,l){if(s.__super__.constructor.call(this,o),l==null)throw new Error("Missing element text");this.value=this.stringify.eleText(l)}return s.prototype.clone=function(){return Object.create(this)},s.prototype.toString=function(o){return this.options.writer.set(o).text(this)},s}(e)}).call(du)});var vi=x((yu,gu)=>{(function(){var e,t,r=function(n,s){for(var o in s)i.call(s,o)&&(n[o]=s[o]);function l(){this.constructor=n}return l.prototype=s.prototype,n.prototype=new l,n.__super__=s.prototype,n},i={}.hasOwnProperty;e=St(),gu.exports=t=function(n){r(s,n);function s(o,l,a){if(s.__super__.constructor.call(this,o),l==null)throw new Error("Missing instruction target");this.target=this.stringify.insTarget(l),a&&(this.value=this.stringify.insValue(a))}return s.prototype.clone=function(){return Object.create(this)},s.prototype.toString=function(o){return this.options.writer.set(o).processingInstruction(this)},s}(e)}).call(yu)});var St=x((vu,wu)=>{(function(){var e,t,r,i,n,s,o,l,a,c,u,f,y,b={}.hasOwnProperty;y=ie(),f=y.isObject,u=y.isFunction,c=y.isEmpty,n=null,e=null,t=null,r=null,i=null,l=null,a=null,o=null,wu.exports=s=function(){function E(m){this.parent=m,this.parent&&(this.options=this.parent.options,this.stringify=this.parent.stringify),this.children=[],n||(n=ai(),e=li(),t=ci(),r=ui(),i=mi(),l=yi(),a=gi(),o=vi())}return E.prototype.element=function(m,w,O){var d,g,N,A,_,R,B,P,D,L;if(R=null,w==null&&(w={}),w=w.valueOf(),f(w)||(D=[w,O],O=D[0],w=D[1]),m!=null&&(m=m.valueOf()),Array.isArray(m))for(N=0,B=m.length;N{(function(){var e,t=function(i,n){return function(){return i.apply(n,arguments)}},r={}.hasOwnProperty;bu.exports=e=function(){function i(n){this.assertLegalChar=t(this.assertLegalChar,this);var s,o,l;n||(n={}),this.noDoubleEncoding=n.noDoubleEncoding,o=n.stringify||{};for(s in o)!r.call(o,s)||(l=o[s],this[s]=l)}return i.prototype.eleName=function(n){return n=""+n||"",this.assertLegalChar(n)},i.prototype.eleText=function(n){return n=""+n||"",this.assertLegalChar(this.elEscape(n))},i.prototype.cdata=function(n){return n=""+n||"",n=n.replace("]]>","]]]]>"),this.assertLegalChar(n)},i.prototype.comment=function(n){if(n=""+n||"",n.match(/--/))throw new Error("Comment text cannot contain double-hypen: "+n);return this.assertLegalChar(n)},i.prototype.raw=function(n){return""+n||""},i.prototype.attName=function(n){return n=""+n||""},i.prototype.attValue=function(n){return n=""+n||"",this.attEscape(n)},i.prototype.insTarget=function(n){return""+n||""},i.prototype.insValue=function(n){if(n=""+n||"",n.match(/\?>/))throw new Error("Invalid processing instruction value: "+n);return n},i.prototype.xmlVersion=function(n){if(n=""+n||"",!n.match(/1\.[0-9]+/))throw new Error("Invalid version number: "+n);return n},i.prototype.xmlEncoding=function(n){if(n=""+n||"",!n.match(/^[A-Za-z](?:[A-Za-z0-9._-])*$/))throw new Error("Invalid encoding: "+n);return n},i.prototype.xmlStandalone=function(n){return n?"yes":"no"},i.prototype.dtdPubID=function(n){return""+n||""},i.prototype.dtdSysID=function(n){return""+n||""},i.prototype.dtdElementValue=function(n){return""+n||""},i.prototype.dtdAttType=function(n){return""+n||""},i.prototype.dtdAttDefault=function(n){return n!=null?""+n||"":n},i.prototype.dtdEntityValue=function(n){return""+n||""},i.prototype.dtdNData=function(n){return""+n||""},i.prototype.convertAttKey="@",i.prototype.convertPIKey="?",i.prototype.convertTextKey="#text",i.prototype.convertCDataKey="#cdata",i.prototype.convertCommentKey="#comment",i.prototype.convertRawKey="#raw",i.prototype.assertLegalChar=function(n){var s;if(s=n.match(/[\0\uFFFE\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/),s)throw new Error("Invalid character in string: "+n+" at index "+s.index);return n},i.prototype.elEscape=function(n){var s;return s=this.noDoubleEncoding?/(?!&\S+;)&/g:/&/g,n.replace(s,"&").replace(//g,">").replace(/\r/g," ")},i.prototype.attEscape=function(n){var s;return s=this.noDoubleEncoding?/(?!&\S+;)&/g:/&/g,n.replace(s,"&").replace(/{(function(){var e,t={}.hasOwnProperty;Su.exports=e=function(){function r(i){var n,s,o,l,a,c,u,f,y;i||(i={}),this.pretty=i.pretty||!1,this.allowEmpty=(s=i.allowEmpty)!=null?s:!1,this.pretty?(this.indent=(o=i.indent)!=null?o:" ",this.newline=(l=i.newline)!=null?l:` +var Ny=Object.create,Vi=Object.defineProperty,Dy=Object.getPrototypeOf,Ty=Object.prototype.hasOwnProperty,Ry=Object.getOwnPropertyNames,Ay=Object.getOwnPropertyDescriptor;var Yi=e=>Vi(e,"__esModule",{value:!0});var x=(e,t)=>()=>(t||(t={exports:{}},e(t.exports,t)),t.exports),ks=(e,t)=>{for(var r in t)Vi(e,r,{get:t[r],enumerable:!0})},Iy=(e,t,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of Ry(t))!Ty.call(e,i)&&i!=="default"&&Vi(e,i,{get:()=>t[i],enumerable:!(r=Ay(t,i))||r.enumerable});return e},Et=e=>e&&e.__esModule?e:Iy(Yi(Vi(e!=null?Ny(Dy(e)):{},"default",{value:e,enumerable:!0})),e);var Ml=x((g1,Al)=>{Al.exports=Il;Il.sync=xy;var xl=require("fs");function Ly(e,t){var r=t.pathExt!==void 0?t.pathExt:process.env.PATHEXT;if(!r||(r=r.split(";"),r.indexOf("")!==-1))return!0;for(var i=0;i{Cl.exports=Pl;Pl.sync=My;var kl=require("fs");function Pl(e,t,r){kl.stat(e,function(i,n){r(i,i?!1:Bl(n,t))})}function My(e,t){return Bl(kl.statSync(e),t)}function Bl(e,t){return e.isFile()&&Cy(e,t)}function Cy(e,t){var r=e.mode,i=e.uid,n=e.gid,s=t.uid!==void 0?t.uid:process.getuid&&process.getuid(),o=t.gid!==void 0?t.gid:process.getgid&&process.getgid(),l=parseInt("100",8),a=parseInt("010",8),c=parseInt("001",8),u=l|a,f=r&c||r&a&&n===o||r&l&&i===s||r&u&&s===0;return f}});var Ul=x((E1,ql)=>{var w1=require("fs"),Zi;process.platform==="win32"||global.TESTING_WINDOWS?Zi=Ml():Zi=Fl();ql.exports=Bs;Bs.sync=Py;function Bs(e,t,r){if(typeof t=="function"&&(r=t,t={}),!r){if(typeof Promise!="function")throw new TypeError("callback not provided");return new Promise(function(i,n){Bs(e,t||{},function(s,o){s?n(s):i(o)})})}Zi(e,t||{},function(i,n){i&&(i.code==="EACCES"||t&&t.ignoreErrors)&&(i=null,n=!1),r(i,n)})}function Py(e,t){try{return Zi.sync(e,t||{})}catch(r){if(t&&t.ignoreErrors||r.code==="EACCES")return!1;throw r}}});var Fs=x((b1,jl)=>{var ar=process.platform==="win32"||process.env.OSTYPE==="cygwin"||process.env.OSTYPE==="msys",Xl=require("path"),ky=ar?";":":",zl=Ul(),Gl=e=>Object.assign(new Error(`not found: ${e}`),{code:"ENOENT"}),$l=(e,t)=>{let r=t.colon||ky,i=e.match(/\//)||ar&&e.match(/\\/)?[""]:[...ar?[process.cwd()]:[],...(t.path||process.env.PATH||"").split(r)],n=ar?t.pathExt||process.env.PATHEXT||".EXE;.CMD;.BAT;.COM":"",s=ar?n.split(r):[""];return ar&&e.indexOf(".")!==-1&&s[0]!==""&&s.unshift(""),{pathEnv:i,pathExt:s,pathExtExe:n}},Wl=(e,t,r)=>{typeof t=="function"&&(r=t,t={}),t||(t={});let{pathEnv:i,pathExt:n,pathExtExe:s}=$l(e,t),o=[],l=c=>new Promise((u,f)=>{if(c===i.length)return t.all&&o.length?u(o):f(Gl(e));let y=i[c],b=/^".*"$/.test(y)?y.slice(1,-1):y,E=Xl.join(b,e),m=!b&&/^\.[\\\/]/.test(e)?e.slice(0,2)+E:E;u(a(m,c,0))}),a=(c,u,f)=>new Promise((y,b)=>{if(f===n.length)return y(l(u+1));let E=n[f];zl(c+E,{pathExt:s},(m,w)=>{if(!m&&w)if(t.all)o.push(c+E);else return y(c+E);return y(a(c,u,f+1))})});return r?l(0).then(c=>r(null,c),r):l(0)},By=(e,t)=>{t=t||{};let{pathEnv:r,pathExt:i,pathExtExe:n}=$l(e,t),s=[];for(let o=0;o{var nt=function(e){"use strict";var t=1e7,r=7,i=9007199254740992,n=y(i),s="0123456789abcdefghijklmnopqrstuvwxyz",o=typeof BigInt=="function";function l(h,p,v,S){return typeof h=="undefined"?l[0]:typeof p!="undefined"?+p==10&&!v?j(h):_y(h,p,v,S):j(h)}function a(h,p){this.value=h,this.sign=p,this.isSmall=!1}a.prototype=Object.create(l.prototype);function c(h){this.value=h,this.sign=h<0,this.isSmall=!0}c.prototype=Object.create(l.prototype);function u(h){this.value=h}u.prototype=Object.create(l.prototype);function f(h){return-i0?Math.floor(h):Math.ceil(h)}function O(h,p){var v=h.length,S=p.length,I=new Array(v),T=0,M=t,C,k;for(k=0;k=M?1:0,I[k]=C-T*M;for(;k0&&I.push(T),I}function d(h,p){return h.length>=p.length?O(h,p):O(p,h)}function g(h,p){var v=h.length,S=new Array(v),I=t,T,M;for(M=0;M0;)S[M++]=p%I,p=Math.floor(p/I);return S}a.prototype.add=function(h){var p=j(h);if(this.sign!==p.sign)return this.subtract(p.negate());var v=this.value,S=p.value;return p.isSmall?new a(g(v,Math.abs(S)),this.sign):new a(d(v,S),this.sign)},a.prototype.plus=a.prototype.add,c.prototype.add=function(h){var p=j(h),v=this.value;if(v<0!==p.sign)return this.subtract(p.negate());var S=p.value;if(p.isSmall){if(f(v+S))return new c(v+S);S=y(Math.abs(S))}return new a(g(S,Math.abs(v)),v<0)},c.prototype.plus=c.prototype.add,u.prototype.add=function(h){return new u(this.value+j(h).value)},u.prototype.plus=u.prototype.add;function N(h,p){var v=h.length,S=p.length,I=new Array(v),T=0,M=t,C,k;for(C=0;C=0?S=N(h,p):(S=N(p,h),v=!v),S=b(S),typeof S=="number"?(v&&(S=-S),new c(S)):new a(S,v)}function _(h,p,v){var S=h.length,I=new Array(S),T=-p,M=t,C,k;for(C=0;C=0)},c.prototype.minus=c.prototype.subtract,u.prototype.subtract=function(h){return new u(this.value-j(h).value)},u.prototype.minus=u.prototype.subtract,a.prototype.negate=function(){return new a(this.value,!this.sign)},c.prototype.negate=function(){var h=this.sign,p=new c(-this.value);return p.sign=!h,p},u.prototype.negate=function(){return new u(-this.value)},a.prototype.abs=function(){return new a(this.value,!1)},c.prototype.abs=function(){return new c(Math.abs(this.value))},u.prototype.abs=function(){return new u(this.value>=0?this.value:-this.value)};function R(h,p){var v=h.length,S=p.length,I=v+S,T=m(I),M=t,C,k,X,W,z;for(X=0;X0;)S[C++]=T%I,T=Math.floor(T/I);return S}function P(h,p){for(var v=[];p-- >0;)v.push(0);return v.concat(h)}function D(h,p){var v=Math.max(h.length,p.length);if(v<=30)return R(h,p);v=Math.ceil(v/2);var S=h.slice(v),I=h.slice(0,v),T=p.slice(v),M=p.slice(0,v),C=D(I,M),k=D(S,T),X=D(d(I,S),d(M,T)),W=d(d(C,P(N(N(X,C),k),v)),P(k,2*v));return E(W),W}function L(h,p){return-.012*h-.012*p+15e-6*h*p>0}a.prototype.multiply=function(h){var p=j(h),v=this.value,S=p.value,I=this.sign!==p.sign,T;if(p.isSmall){if(S===0)return l[0];if(S===1)return this;if(S===-1)return this.negate();if(T=Math.abs(S),T=0;z--){for(W=I-1,k[z+S]!==M&&(W=Math.floor((k[z+S]*I+k[z+S-1])/M)),Z=0,At=0,Cs=X.length,wt=0;wtS&&(X=(X+1)*M),C=Math.ceil(X/W);do{if(z=B(p,C),zt(z,T)<=0)break;C--}while(C);I.push(C),T=N(T,z)}return I.reverse(),[b(I),b(T)]}function G(h,p){var v=h.length,S=m(v),I=t,T,M,C,k;for(C=0,T=v-1;T>=0;--T)k=C*I+h[T],M=w(k/p),C=k-M*p,S[T]=M|0;return[S,C|0]}function it(h,p){var v,S=j(p);if(o)return[new u(h.value/S.value),new u(h.value%S.value)];var I=h.value,T=S.value,M;if(T===0)throw new Error("Cannot divide by zero");if(h.isSmall)return S.isSmall?[new c(w(I/T)),new c(I%T)]:[l[0],h];if(S.isSmall){if(T===1)return[h,l[0]];if(T==-1)return[h.negate(),l[0]];var C=Math.abs(T);if(Cp.length?1:-1;for(var v=h.length-1;v>=0;v--)if(h[v]!==p[v])return h[v]>p[v]?1:-1;return 0}a.prototype.compareAbs=function(h){var p=j(h),v=this.value,S=p.value;return p.isSmall?1:zt(v,S)},c.prototype.compareAbs=function(h){var p=j(h),v=Math.abs(this.value),S=p.value;return p.isSmall?(S=Math.abs(S),v===S?0:v>S?1:-1):-1},u.prototype.compareAbs=function(h){var p=this.value,v=j(h).value;return p=p>=0?p:-p,v=v>=0?v:-v,p===v?0:p>v?1:-1},a.prototype.compare=function(h){if(h===Infinity)return-1;if(h===-Infinity)return 1;var p=j(h),v=this.value,S=p.value;return this.sign!==p.sign?p.sign?1:-1:p.isSmall?this.sign?-1:1:zt(v,S)*(this.sign?-1:1)},a.prototype.compareTo=a.prototype.compare,c.prototype.compare=function(h){if(h===Infinity)return-1;if(h===-Infinity)return 1;var p=j(h),v=this.value,S=p.value;return p.isSmall?v==S?0:v>S?1:-1:v<0!==p.sign?v<0?-1:1:v<0?1:-1},c.prototype.compareTo=c.prototype.compare,u.prototype.compare=function(h){if(h===Infinity)return-1;if(h===-Infinity)return 1;var p=this.value,v=j(h).value;return p===v?0:p>v?1:-1},u.prototype.compareTo=u.prototype.compare,a.prototype.equals=function(h){return this.compare(h)===0},u.prototype.eq=u.prototype.equals=c.prototype.eq=c.prototype.equals=a.prototype.eq=a.prototype.equals,a.prototype.notEquals=function(h){return this.compare(h)!==0},u.prototype.neq=u.prototype.notEquals=c.prototype.neq=c.prototype.notEquals=a.prototype.neq=a.prototype.notEquals,a.prototype.greater=function(h){return this.compare(h)>0},u.prototype.gt=u.prototype.greater=c.prototype.gt=c.prototype.greater=a.prototype.gt=a.prototype.greater,a.prototype.lesser=function(h){return this.compare(h)<0},u.prototype.lt=u.prototype.lesser=c.prototype.lt=c.prototype.lesser=a.prototype.lt=a.prototype.lesser,a.prototype.greaterOrEquals=function(h){return this.compare(h)>=0},u.prototype.geq=u.prototype.greaterOrEquals=c.prototype.geq=c.prototype.greaterOrEquals=a.prototype.geq=a.prototype.greaterOrEquals,a.prototype.lesserOrEquals=function(h){return this.compare(h)<=0},u.prototype.leq=u.prototype.lesserOrEquals=c.prototype.leq=c.prototype.lesserOrEquals=a.prototype.leq=a.prototype.lesserOrEquals,a.prototype.isEven=function(){return(this.value[0]&1)==0},c.prototype.isEven=function(){return(this.value&1)==0},u.prototype.isEven=function(){return(this.value&BigInt(1))===BigInt(0)},a.prototype.isOdd=function(){return(this.value[0]&1)==1},c.prototype.isOdd=function(){return(this.value&1)==1},u.prototype.isOdd=function(){return(this.value&BigInt(1))===BigInt(1)},a.prototype.isPositive=function(){return!this.sign},c.prototype.isPositive=function(){return this.value>0},u.prototype.isPositive=c.prototype.isPositive,a.prototype.isNegative=function(){return this.sign},c.prototype.isNegative=function(){return this.value<0},u.prototype.isNegative=c.prototype.isNegative,a.prototype.isUnit=function(){return!1},c.prototype.isUnit=function(){return Math.abs(this.value)===1},u.prototype.isUnit=function(){return this.abs().value===BigInt(1)},a.prototype.isZero=function(){return!1},c.prototype.isZero=function(){return this.value===0},u.prototype.isZero=function(){return this.value===BigInt(0)},a.prototype.isDivisibleBy=function(h){var p=j(h);return p.isZero()?!1:p.isUnit()?!0:p.compareAbs(2)===0?this.isEven():this.mod(p).isZero()},u.prototype.isDivisibleBy=c.prototype.isDivisibleBy=a.prototype.isDivisibleBy;function sr(h){var p=h.abs();if(p.isUnit())return!1;if(p.equals(2)||p.equals(3)||p.equals(5))return!0;if(p.isEven()||p.isDivisibleBy(3)||p.isDivisibleBy(5))return!1;if(p.lesser(49))return!0}function or(h,p){for(var v=h.prev(),S=v,I=0,T,M,C,k;S.isEven();)S=S.divide(2),I++;t:for(C=0;C-i?new c(h-1):new a(n,!0)},u.prototype.prev=function(){return new u(this.value-BigInt(1))};for(var Ct=[1];2*Ct[Ct.length-1]<=t;)Ct.push(2*Ct[Ct.length-1]);var te=Ct.length,Be=Ct[te-1];function _l(h){return Math.abs(h)<=t}a.prototype.shiftLeft=function(h){var p=j(h).toJSNumber();if(!_l(p))throw new Error(String(p)+" is too large for shifting.");if(p<0)return this.shiftRight(-p);var v=this;if(v.isZero())return v;for(;p>=te;)v=v.multiply(Be),p-=te-1;return v.multiply(Ct[p])},u.prototype.shiftLeft=c.prototype.shiftLeft=a.prototype.shiftLeft,a.prototype.shiftRight=function(h){var p,v=j(h).toJSNumber();if(!_l(v))throw new Error(String(v)+" is too large for shifting.");if(v<0)return this.shiftLeft(-v);for(var S=this;v>=te;){if(S.isZero()||S.isNegative()&&S.isUnit())return S;p=it(S,Be),S=p[1].isNegative()?p[0].prev():p[0],v-=te-1}return p=it(S,Ct[v]),p[1].isNegative()?p[0].prev():p[0]},u.prototype.shiftRight=c.prototype.shiftRight=a.prototype.shiftRight;function xs(h,p,v){p=j(p);for(var S=h.isNegative(),I=p.isNegative(),T=S?h.not():h,M=I?p.not():p,C=0,k=0,X=null,W=null,z=[];!T.isZero()||!M.isZero();)X=it(T,Be),C=X[1].toJSNumber(),S&&(C=Be-1-C),W=it(M,Be),k=W[1].toJSNumber(),I&&(k=Be-1-k),T=X[0],M=W[0],z.push(v(C,k));for(var Z=v(S?1:0,I?1:0)!==0?nt(-1):nt(0),At=z.length-1;At>=0;At-=1)Z=Z.multiply(Be).add(nt(z[At]));return Z}a.prototype.not=function(){return this.negate().prev()},u.prototype.not=c.prototype.not=a.prototype.not,a.prototype.and=function(h){return xs(this,h,function(p,v){return p&v})},u.prototype.and=c.prototype.and=a.prototype.and,a.prototype.or=function(h){return xs(this,h,function(p,v){return p|v})},u.prototype.or=c.prototype.or=a.prototype.or,a.prototype.xor=function(h){return xs(this,h,function(p,v){return p^v})},u.prototype.xor=c.prototype.xor=a.prototype.xor;var Ls=1<<30,wy=(t&-t)*(t&-t)|Ls;function Hi(h){var p=h.value,v=typeof p=="number"?p|Ls:typeof p=="bigint"?p|BigInt(Ls):p[0]+p[1]*t|wy;return v&-v}function Sl(h,p){if(p.compareTo(h)<=0){var v=Sl(h,p.square(p)),S=v.p,I=v.e,T=S.multiply(p);return T.compareTo(h)<=0?{p:T,e:I*2+1}:{p:S,e:I*2}}return{p:nt(1),e:0}}a.prototype.bitLength=function(){var h=this;return h.compareTo(nt(0))<0&&(h=h.negate().subtract(nt(1))),h.compareTo(nt(0))===0?nt(0):nt(Sl(h,nt(2)).e).add(nt(1))},u.prototype.bitLength=c.prototype.bitLength=a.prototype.bitLength;function Ol(h,p){return h=j(h),p=j(p),h.greater(p)?h:p}function Ms(h,p){return h=j(h),p=j(p),h.lesser(p)?h:p}function Nl(h,p){if(h=j(h).abs(),p=j(p).abs(),h.equals(p))return h;if(h.isZero())return p;if(p.isZero())return h;for(var v=l[1],S,I;h.isEven()&&p.isEven();)S=Ms(Hi(h),Hi(p)),h=h.divide(S),p=p.divide(S),v=v.multiply(S);for(;h.isEven();)h=h.divide(Hi(h));do{for(;p.isEven();)p=p.divide(Hi(p));h.greater(p)&&(I=p,p=h,h=I),p=p.subtract(h)}while(!p.isZero());return v.isUnit()?h:h.multiply(v)}function Ey(h,p){return h=j(h).abs(),p=j(p).abs(),h.divide(Nl(h,p)).multiply(p)}function by(h,p,v){h=j(h),p=j(p);var S=v||Math.random,I=Ms(h,p),T=Ol(h,p),M=T.subtract(I).add(1);if(M.isSmall)return I.add(Math.floor(S()*M));for(var C=Qr(M,t).value,k=[],X=!0,W=0;W=M){if(k==="1"&&M===1)continue;throw new Error(k+" is not a valid digit in base "+p+".")}}p=j(p);var X=[],W=h[0]==="-";for(T=W?1:0;T"&&T=0;T--)S=S.add(h[T].times(I)),I=I.times(p);return v?S.negate():S}function Sy(h,p){return p=p||s,h"}function Qr(h,p){if(p=nt(p),p.isZero()){if(h.isZero())return{value:[0],isNegative:!1};throw new Error("Cannot convert nonzero numbers to base 0.")}if(p.equals(-1)){if(h.isZero())return{value:[0],isNegative:!1};if(h.isNegative())return{value:[].concat.apply([],Array.apply(null,Array(-h.toJSNumber())).map(Array.prototype.valueOf,[1,0])),isNegative:!1};var v=Array.apply(null,Array(h.toJSNumber()-1)).map(Array.prototype.valueOf,[0,1]);return v.unshift([1]),{value:[].concat.apply([],v),isNegative:!1}}var S=!1;if(h.isNegative()&&p.isPositive()&&(S=!0,h=h.abs()),p.isUnit())return h.isZero()?{value:[0],isNegative:!1}:{value:Array.apply(null,Array(h.toJSNumber())).map(Number.prototype.valueOf,1),isNegative:S};for(var I=[],T=h,M;T.isNegative()||T.compareAbs(p)>=0;){M=T.divmod(p),T=M.quotient;var C=M.remainder;C.isNegative()&&(C=p.minus(C).abs(),T=T.next()),I.push(C.toJSNumber())}return I.push(T.toJSNumber()),{value:I.reverse(),isNegative:S}}function Tl(h,p,v){var S=Qr(h,p);return(S.isNegative?"-":"")+S.value.map(function(I){return Sy(I,v)}).join("")}a.prototype.toArray=function(h){return Qr(this,h)},c.prototype.toArray=function(h){return Qr(this,h)},u.prototype.toArray=function(h){return Qr(this,h)},a.prototype.toString=function(h,p){if(h===e&&(h=10),h!==10)return Tl(this,h,p);for(var v=this.value,S=v.length,I=String(v[--S]),T="0000000",M;--S>=0;)M=String(v[S]),I+=T.slice(M.length)+M;var C=this.sign?"-":"";return C+I},c.prototype.toString=function(h,p){return h===e&&(h=10),h!=10?Tl(this,h,p):String(this.value)},u.prototype.toString=c.prototype.toString,u.prototype.toJSON=a.prototype.toJSON=c.prototype.toJSON=function(){return this.toString()},a.prototype.valueOf=function(){return parseInt(this.toString(),10)},a.prototype.toJSNumber=a.prototype.valueOf,c.prototype.valueOf=function(){return this.value},c.prototype.toJSNumber=c.prototype.valueOf,u.prototype.valueOf=u.prototype.toJSNumber=function(){return parseInt(this.toString(),10)};function Rl(h){if(f(+h)){var p=+h;if(p===w(p))return o?new u(BigInt(p)):new c(p);throw new Error("Invalid integer: "+h)}var v=h[0]==="-";v&&(h=h.slice(1));var S=h.split(/e/i);if(S.length>2)throw new Error("Invalid integer: "+S.join("e"));if(S.length===2){var I=S[1];if(I[0]==="+"&&(I=I.slice(1)),I=+I,I!==w(I)||!f(I))throw new Error("Invalid integer: "+I+" is not a valid exponent.");var T=S[0],M=T.indexOf(".");if(M>=0&&(I-=T.length-M-1,T=T.slice(0,M)+T.slice(M+1)),I<0)throw new Error("Cannot include negative exponent part for integers");T+=new Array(I+1).join("0"),h=T}var C=/^([0-9][0-9]*)$/.test(h);if(!C)throw new Error("Invalid integer: "+h);if(o)return new u(BigInt(v?"-"+h:h));for(var k=[],X=h.length,W=r,z=X-W;X>0;)k.push(+h.slice(z,X)),z-=W,z<0&&(z=0),X-=W;return E(k),new a(k,v)}function Oy(h){if(o)return new u(BigInt(h));if(f(h)){if(h!==w(h))throw new Error(h+" is not an integer.");return new c(h)}return Rl(h.toString())}function j(h){return typeof h=="number"?Oy(h):typeof h=="string"?Rl(h):typeof h=="bigint"?new u(h):h}for(var Fe=0;Fe<1e3;Fe++)l[Fe]=j(Fe),Fe>0&&(l[-Fe]=j(-Fe));return l.one=l[1],l.zero=l[0],l.minusOne=l[-1],l.max=Ol,l.min=Ms,l.gcd=Nl,l.lcm=Ey,l.isInstance=function(h){return h instanceof a||h instanceof c||h instanceof u},l.randBetween=by,l.fromArray=function(h,p,v){return Dl(h.map(j),j(p||10),v)},l}();typeof Ki!="undefined"&&Ki.hasOwnProperty("exports")&&(Ki.exports=nt);typeof define=="function"&&define.amd&&define(function(){return nt})});var Vl=x(st=>{"use strict";var Fy=require("fs"),qy=Hl(),me=!1;st.maxObjectSize=100*1e3*1e3;st.maxObjectCount=32768;var Uy=9783072e5,jy=st.UID=function(e){this.UID=e},S1=st.parseFile=function(e,t){return new Promise(function(r,i){function n(s){let o=null,l;try{l=Xy(s),r(l)}catch(a){o=a,i(o)}finally{t&&t(o,l)}}if(Buffer.isBuffer(e))return n(e);Fy.readFile(e,function(s,o){if(s)return i(s),t(s);n(o)})})},Xy=st.parseBuffer=function(e){if(e.slice(0,"bplist".length).toString("utf8")!=="bplist")throw new Error("Invalid binary plist. Expected 'bplist' at offset 0.");let r=e.slice(e.length-32,e.length),i=r.readUInt8(6);me&&console.log("offsetSize: "+i);let n=r.readUInt8(7);me&&console.log("objectRefSize: "+n);let s=qs(r,8);me&&console.log("numObjects: "+s);let o=qs(r,16);me&&console.log("topObject: "+o);let l=qs(r,24);if(me&&console.log("offsetTableOffset: "+l),s>st.maxObjectCount)throw new Error("maxObjectCount exceeded");let a=[];for(let u=0;u>4,E=y&15;switch(b){case 0:return m();case 1:return O();case 8:return d();case 2:return g();case 3:return N();case 4:return A();case 5:return _();case 6:return _(!0);case 10:return R();case 13:return B();default:throw new Error("Unhandled type 0x"+b.toString(16))}function m(){switch(E){case 0:return null;case 8:return!1;case 9:return!0;case 15:return null;default:throw new Error("Unhandled simple type 0x"+b.toString(16))}}function w(P){let D="",L;for(L=0;Lst.maxObjectSize)throw new Error("To little heap space available!");let L=[];for(let F=0;Fst.maxObjectSize)throw new Error("To little heap space available!");me&&console.log("Parsing dictionary #"+u);let L={};for(let F=0;F{Yl.exports={DEFAULT_INITIAL_SIZE:8*1024,DEFAULT_INCREMENT_AMOUNT:8*1024,DEFAULT_FREQUENCY:1,DEFAULT_CHUNK_SIZE:1024}});var Jl=x((D1,Zl)=>{var Kl=require("stream"),Qi=Ji(),Gy=require("util"),$y=Zl.exports=function(e){var t=this;Kl.Stream.call(this),e=e||{};var r=e.hasOwnProperty("frequency")?e.frequency:Qi.DEFAULT_FREQUENCY,i=e.chunkSize||Qi.DEFAULT_CHUNK_SIZE,n=e.initialSize||Qi.DEFAULT_INITIAL_SIZE,s=e.incrementAmount||Qi.DEFAULT_INCREMENT_AMOUNT,o=0,l=new Buffer(n),a=null;this.readable=!0,this.writable=!1;var c=function(){var f=Math.min(i,o);if(f>0){var y=null;a?y=l.toString(a,0,f):(y=new Buffer(f),l.copy(y,0,0,f)),t.emit("data",y),f0&&this.emit("readable"),!this.isPaused&&!r)for(;o>0;)c()}},this.pause=function(){this.isPaused=!0,c&&c.interval&&(clearInterval(c.interval),delete c.interval)},this.resume=function(){this.isPaused=!1,c&&!c.interval&&r>0&&(c.interval=setInterval(c,r))},this.destroy=function(){t.emit("end"),c.interval&&clearInterval(c.interval),c=null,t.readable=!1,t.emit("close")},this.destroySoon=function(){t.readable=!1,c.interval||(t.emit("end"),t.emit("close"))},this.setEncoding=function(f){a=f},this.resume()};Gy.inherits($y,Kl.Stream)});var rc=x((T1,Ql)=>{var Wy=require("util"),tc=require("stream"),ec=Ji(),Hy=Ql.exports=function(e){var t=this;tc.Stream.call(this),e=e||{};var r=e.initialSize||ec.DEFAULT_INITIAL_SIZE,i=e.incrementAmount||ec.DEFAULT_INCREMENT_AMOUNT,n=new Buffer(r),s=0;this.writable=!0,this.readable=!1,this.size=function(){return s},this.maxSize=function(){return n.length},this.getContents=function(l){if(!s)return!1;var a=new Buffer(Math.min(l||s,s));return n.copy(a,0,0,a.length),a.length{tn.exports=Ji();tn.exports.ReadableStreamBuffer=Jl();tn.exports.WritableStreamBuffer=rc()});var sc=x((A1,Us)=>{"use strict";var Vy=ic(),lt=!1;function nc(e){this.value=e}Us.exports=function(e){var t=new Vy.WritableStreamBuffer;t.write(new Buffer("bplist00")),lt&&console.log("create",require("util").inspect(e,!1,10)),e instanceof Array&&e.length===1&&(e=e[0]);var r=en(e);lt&&console.log("entries",r);var i=Zy(r.length),n=[],s,o;return l(),r.forEach(function(D,L){n[L]=t.size(),D?u(D):t.write(0)}),c(),a(),t.getContents();function l(){var D={},L=0;r.forEach(function(F){F.id||(F.type==="string"?!F.bplistOverride&&D.hasOwnProperty(F.value)?(F.type="stringref",F.id=D[F.value]):D[F.value]=F.id=L++:F.id=L++)}),r=r.filter(function(F){return F.type!=="stringref"})}function a(){lt&&console.log("0x"+t.size().toString(16),"writeTrailer"),t.write(new Buffer([0,0,0,0,0,0])),lt&&console.log("0x"+t.size().toString(16),"writeTrailer(offsetSizeInBytes):",s),N(s),lt&&console.log("0x"+t.size().toString(16),"writeTrailer(offsetSizeInBytes):",i),N(i),lt&&console.log("0x"+t.size().toString(16),"writeTrailer(number of objects):",r.length),g(r.length),lt&&console.log("0x"+t.size().toString(16),"writeTrailer(top object)"),g(0),lt&&console.log("0x"+t.size().toString(16),"writeTrailer(offset table offset):",o),g(o)}function c(){lt&&console.log("0x"+t.size().toString(16),"writeOffsetTable"),o=t.size(),s=Yy(o),n.forEach(function(D){B(D,s)})}function u(D){switch(D.type){case"dict":y(D);break;case"number":case"double":b(D);break;case"UID":E(D);break;case"array":m(D);break;case"boolean":w(D);break;case"string":case"string-utf16":O(D);break;case"date":f(D);break;case"data":d(D);break;default:throw new Error("unhandled entry type: "+D.type)}}function f(D){N(51);var L=Date.parse(D.value)/1e3-978307200;A(L)}function y(D){if(lt){var L=D.entryKeys.map(function(U){return U.id}),F=D.entryValues.map(function(U){return U.id});console.log("0x"+t.size().toString(16),"writeDict","(id: "+D.id+")","(keys: "+L+")","(values: "+F+")")}_(13,D.entryKeys.length),D.entryKeys.forEach(function(U){R(U.id)}),D.entryValues.forEach(function(U){R(U.id)})}function b(D){lt&&console.log("0x"+t.size().toString(16),"writeNumber",D.value," (type: "+D.type+")","(id: "+D.id+")"),D.type!=="double"&&parseFloat(D.value.toFixed())==D.value?D.value<0?(N(19),B(D.value,8,!0)):D.value<=255?(N(16),B(D.value,1)):D.value<=65535?(N(17),B(D.value,2)):D.value<=4294967295?(N(18),B(D.value,4)):(N(20),B(D.value,8)):(N(35),A(D.value))}function E(D){lt&&console.log("0x"+t.size().toString(16),"writeUID",D.value," (type: "+D.type+")","(id: "+D.id+")"),_(8,0),R(D.value)}function m(D){lt&&console.log("0x"+t.size().toString(16),"writeArray (length: "+D.entries.length+")","(id: "+D.id+")"),_(10,D.entries.length),D.entries.forEach(function(L){R(L.id)})}function w(D){lt&&console.log("0x"+t.size().toString(16),"writeBoolean",D.value,"(id: "+D.id+")"),N(D.value?9:8)}function O(D){if(lt&&console.log("0x"+t.size().toString(16),"writeString",D.value,"(id: "+D.id+")"),D.type==="string-utf16"||P(D.value)){var L=new Buffer(D.value,"ucs2");_(6,L.length/2);for(var F=0;F4;)U[Y++]=0,L--;for(var $=L-1;$>=0;$--)U[Y++]=D>>8*$;t.write(U)}function P(D){return Buffer.byteLength(D,"utf8")!=D.length}};function en(e){if(e.bplistOverride)return[e];if(e instanceof Array)return Ky(e);if(e instanceof Buffer)return[{type:"data",value:e}];if(e instanceof nc)return[{type:"double",value:e.value}];if(typeof e=="object")return e instanceof Date?[{type:"date",value:e}]:Object.keys(e).length==1&&typeof e.UID=="number"?[{type:"UID",value:e.UID}]:Jy(e);if(typeof e=="string")return[{type:"string",value:e}];if(typeof e=="number")return[{type:"number",value:e}];if(typeof e=="boolean")return[{type:"boolean",value:e}];if(typeof e=="bigint")return[{type:"number",value:Number(BigInt.asIntN(32,e))}];throw new Error("unhandled entry: "+e)}function Ky(e){lt&&console.log("toEntriesArray");var t=[{type:"array",entries:[]}];return e.forEach(function(r){var i=en(r);t[0].entries.push(i[0]),t=t.concat(i)}),t}function Jy(e){lt&&console.log("toEntriesObject");var t=[{type:"dict",entryKeys:[],entryValues:[]}];return Object.keys(e).forEach(function(r){var i=en(r);t[0].entryKeys.push(i[0]),t=t.concat(i[0])}),Object.keys(e).forEach(function(r){var i=en(e[r]);t[0].entryValues.push(i[0]),t=t.concat(i)}),t}function Yy(e){return e<256?1:e<65536?2:e<4294967296?4:8}function Zy(e){return e<256?1:e<65536?2:4}Us.exports.Real=nc});var dc=x(oc=>{var js=/[A-Z_a-z\xC0-\xD6\xD8-\xF6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]/,ac=new RegExp("[\\-\\.0-9"+js.source.slice(1,-1)+"\\u00B7\\u0300-\\u036F\\u203F-\\u2040]"),lc=new RegExp("^"+js.source+ac.source+"*(?::"+js.source+ac.source+"*)?$"),ti=0,ye=1,lr=2,ei=3,cr=4,ur=5,ri=6,rn=7;function cc(){}cc.prototype={parse:function(e,t,r){var i=this.domBuilder;i.startDocument(),uc(t,t={}),Qy(e,t,r,i,this.errorHandler),i.endDocument()}};function Qy(e,t,r,i,n){function s(G){if(G>65535){G-=65536;var it=55296+(G>>10),zt=56320+(G&1023);return String.fromCharCode(it,zt)}else return String.fromCharCode(G)}function o(G){var it=G.slice(1,-1);return it in r?r[it]:it.charAt(0)==="#"?s(parseInt(it.substr(1).replace("x","0x"))):(n.error("entity not found:"+G),G)}function l(G){if(G>m){var it=e.substring(m,G).replace(/&#?\w+;/g,o);y&&a(m),i.characters(it,0,G-m),m=G}}function a(G,it){for(;G>=u&&(it=f.exec(e));)c=it.index,u=c+it[0].length,y.lineNumber++;y.columnNumber=G-c+1}for(var c=0,u=0,f=/.*(?:\r\n?|\n)|.*$/g,y=i.locator,b=[{currentNSMap:t}],E={},m=0;;){try{var w=e.indexOf("<",m);if(w<0){if(!e.substr(m).match(/^\s*$/)){var O=i.doc,d=O.createTextNode(e.substr(m));O.appendChild(d),i.currentElement=d}return}switch(w>m&&l(w),e.charAt(w+1)){case"/":var g=e.indexOf(">",w+3),N=e.substring(w+2,g),A=b.pop();g<0?(N=e.substring(w+2).replace(/[\s<].*/,""),n.error("end tag name: "+N+" is not complete:"+A.tagName),g=w+1+N.length):N.match(/\sm?m=g:l(Math.max(w,m)+1)}}function hc(e,t){return t.lineNumber=e.lineNumber,t.columnNumber=e.columnNumber,t}function tg(e,t,r,i,n,s){for(var o,l,a=++t,c=ti;;){var u=e.charAt(a);switch(u){case"=":if(c===ye)o=e.slice(t,a),c=ei;else if(c===lr)c=ei;else throw new Error("attribute equal must after attrName");break;case"'":case'"':if(c===ei||c===ye)if(c===ye&&(s.warning('attribute value must after "="'),o=e.slice(t,a)),t=a+1,a=e.indexOf(u,t),a>0)l=e.slice(t,a).replace(/&#?\w+;/g,n),r.add(o,l,t-1),c=ur;else throw new Error("attribute value no end '"+u+"' match");else if(c==cr)l=e.slice(t,a).replace(/&#?\w+;/g,n),r.add(o,l,t),s.warning('attribute "'+o+'" missed start quot('+u+")!!"),t=a+1,c=ur;else throw new Error('attribute value must after "="');break;case"/":switch(c){case ti:r.setTagName(e.slice(t,a));case ur:case ri:case rn:c=rn,r.closed=!0;case cr:case ye:case lr:break;default:throw new Error("attribute invalid close char('/')")}break;case"":return s.error("unexpected end of input"),c==ti&&r.setTagName(e.slice(t,a)),a;case">":switch(c){case ti:r.setTagName(e.slice(t,a));case ur:case ri:case rn:break;case cr:case ye:l=e.slice(t,a),l.slice(-1)==="/"&&(r.closed=!0,l=l.slice(0,-1));case lr:c===lr&&(l=o),c==cr?(s.warning('attribute "'+l+'" missed quot(")!!'),r.add(o,l.replace(/&#?\w+;/g,n),t)):((i[""]!=="http://www.w3.org/1999/xhtml"||!l.match(/^(?:disabled|checked|selected)$/i))&&s.warning('attribute "'+l+'" missed value!! "'+l+'" instead!!'),r.add(l,l,t));break;case ei:throw new Error("attribute value missed!!")}return a;case"\x80":u=" ";default:if(u<=" ")switch(c){case ti:r.setTagName(e.slice(t,a)),c=ri;break;case ye:o=e.slice(t,a),c=lr;break;case cr:var l=e.slice(t,a).replace(/&#?\w+;/g,n);s.warning('attribute "'+l+'" missed quot(")!!'),r.add(o,l,t);case ur:c=ri;break}else switch(c){case lr:var f=r.tagName;(i[""]!=="http://www.w3.org/1999/xhtml"||!o.match(/^(?:disabled|checked|selected)$/i))&&s.warning('attribute "'+o+'" missed value!! "'+o+'" instead2!!'),r.add(o,o,t),t=a,c=ye;break;case ur:s.warning('attribute space is required"'+o+'"!!');case ri:c=ye,t=a;break;case ei:c=cr,t=a;break;case rn:throw new Error("elements closed character '/' and '>' must be connected to")}}a++}}function fc(e,t,r){for(var i=e.tagName,n=null,s=e.length;s--;){var o=e[s],l=o.qName,a=o.value,y=l.indexOf(":");if(y>0)var c=o.prefix=l.slice(0,y),u=l.slice(y+1),f=c==="xmlns"&&u;else u=l,c=null,f=l==="xmlns"&&"";o.localName=u,f!==!1&&(n==null&&(n={},uc(r,r={})),r[f]=n[f]=a,o.uri="http://www.w3.org/2000/xmlns/",t.startPrefixMapping(f,a))}for(var s=e.length;s--;){o=e[s];var c=o.prefix;c&&(c==="xml"&&(o.uri="http://www.w3.org/XML/1998/namespace"),c!=="xmlns"&&(o.uri=r[c||""]))}var y=i.indexOf(":");y>0?(c=e.prefix=i.slice(0,y),u=e.localName=i.slice(y+1)):(c=null,u=e.localName=i);var b=e.uri=r[c||""];if(t.startElement(b,u,i,e),e.closed){if(t.endElement(b,u,i),n)for(c in n)t.endPrefixMapping(c)}else return e.currentNSMap=r,e.localNSMap=n,!0}function eg(e,t,r,i,n){if(/^(?:script|textarea)$/i.test(r)){var s=e.indexOf("",t),o=e.substring(t+1,s);if(/[&<]/.test(o))return/^script$/i.test(r)?(n.characters(o,0,o.length),s):(o=o.replace(/&#?\w+;/g,i),n.characters(o,0,o.length),s)}return t+1}function rg(e,t,r,i){var n=i[r];return n==null&&(n=e.lastIndexOf(""),n",t+4);return s>t?(r.comment(e,t+4,s-t-4),s+3):(i.error("Unclosed comment"),-1)}else return-1;default:if(e.substr(t+3,6)=="CDATA["){var s=e.indexOf("]]>",t+9);return r.startCDATA(),r.characters(e,t+9,s-t-9),r.endCDATA(),s+3}var o=sg(e,t),l=o.length;if(l>1&&/!doctype/i.test(o[0][0])){var a=o[1][0],c=l>3&&/^public$/i.test(o[2][0])&&o[3][0],u=l>4&&o[4][0],f=o[l-1];return r.startDTD(a,c&&c.replace(/^(['"])(.*?)\1$/,"$2"),u&&u.replace(/^(['"])(.*?)\1$/,"$2")),r.endDTD(),f.index+f[0].length}}return-1}function ng(e,t,r){var i=e.indexOf("?>",t);if(i){var n=e.substring(t,i).match(/^<\?(\S*)\s*([\s\S]*?)\s*$/);if(n){var s=n[0].length;return r.processingInstruction(n[1],n[2]),i+2}else return-1}return-1}function pc(e){}pc.prototype={setTagName:function(e){if(!lc.test(e))throw new Error("invalid tagName:"+e);this.tagName=e},add:function(e,t,r){if(!lc.test(e))throw new Error("invalid attribute:"+e);this[this.length++]={qName:e,value:t,offset:r}},length:0,getLocalName:function(e){return this[e].localName},getLocator:function(e){return this[e].locator},getQName:function(e){return this[e].qName},getURI:function(e){return this[e].uri},getValue:function(e){return this[e].value}};function nn(e,t){return e.__proto__=t,e}nn({},nn.prototype)instanceof nn||(nn=function(e,t){function r(){}r.prototype=t,r=new r;for(t in e)r[t]=e[t];return r});function sg(e,t){var r,i=[],n=/'[^']+'|"[^"]+"|[^\s<>\/=]+=?|(\/?\s*>|<)/g;for(n.lastIndex=t,n.exec(e);r=n.exec(e);)if(i.push(r),r[1])return i}oc.XMLReader=cc});var Js=x(Xs=>{function ii(e,t){for(var r in e)t[r]=e[r]}function _t(e,t){var r=e.prototype;if(Object.create){var i=Object.create(t.prototype);r.__proto__=i}if(!(r instanceof t)){let s=function(){};var n=s;s.prototype=t.prototype,s=new s,ii(r,s),e.prototype=r=s}r.constructor!=e&&(typeof e!="function"&&console.error("unknow Class:"+e),r.constructor=e)}var og="http://www.w3.org/1999/xhtml",St={},Wt=St.ELEMENT_NODE=1,hr=St.ATTRIBUTE_NODE=2,sn=St.TEXT_NODE=3,mc=St.CDATA_SECTION_NODE=4,yc=St.ENTITY_REFERENCE_NODE=5,ag=St.ENTITY_NODE=6,gc=St.PROCESSING_INSTRUCTION_NODE=7,vc=St.COMMENT_NODE=8,wc=St.DOCUMENT_NODE=9,Ec=St.DOCUMENT_TYPE_NODE=10,ee=St.DOCUMENT_FRAGMENT_NODE=11,lg=St.NOTATION_NODE=12,pt={},ct={},x1=pt.INDEX_SIZE_ERR=(ct[1]="Index size error",1),L1=pt.DOMSTRING_SIZE_ERR=(ct[2]="DOMString size error",2),cg=pt.HIERARCHY_REQUEST_ERR=(ct[3]="Hierarchy request error",3),M1=pt.WRONG_DOCUMENT_ERR=(ct[4]="Wrong document",4),C1=pt.INVALID_CHARACTER_ERR=(ct[5]="Invalid character",5),P1=pt.NO_DATA_ALLOWED_ERR=(ct[6]="No data allowed",6),k1=pt.NO_MODIFICATION_ALLOWED_ERR=(ct[7]="No modification allowed",7),ug=pt.NOT_FOUND_ERR=(ct[8]="Not found",8),B1=pt.NOT_SUPPORTED_ERR=(ct[9]="Not supported",9),bc=pt.INUSE_ATTRIBUTE_ERR=(ct[10]="Attribute in use",10),F1=pt.INVALID_STATE_ERR=(ct[11]="Invalid state",11),q1=pt.SYNTAX_ERR=(ct[12]="Syntax error",12),U1=pt.INVALID_MODIFICATION_ERR=(ct[13]="Invalid modification",13),j1=pt.NAMESPACE_ERR=(ct[14]="Invalid namespace",14),X1=pt.INVALID_ACCESS_ERR=(ct[15]="Invalid access",15);function fr(e,t){if(t instanceof Error)var r=t;else r=this,Error.call(this,ct[e]),this.message=ct[e],Error.captureStackTrace&&Error.captureStackTrace(this,fr);return r.code=e,t&&(this.message=this.message+": "+t),r}fr.prototype=Error.prototype;ii(pt,fr);function ge(){}ge.prototype={length:0,item:function(e){return this[e]||null},toString:function(e,t){for(var r=[],i=0;i=0){for(var n=t.length-1;i0},lookupPrefix:function(e){for(var t=this;t;){var r=t._nsMap;if(r){for(var i in r)if(r[i]==e)return i}t=t.nodeType==hr?t.ownerDocument:t.parentNode}return null},lookupNamespaceURI:function(e){for(var t=this;t;){var r=t._nsMap;if(r&&e in r)return r[e];t=t.nodeType==hr?t.ownerDocument:t.parentNode}return null},isDefaultNamespace:function(e){var t=this.lookupPrefix(e);return t==null}};function Ic(e){return e=="<"&&"<"||e==">"&&">"||e=="&"&&"&"||e=='"'&&"""||"&#"+e.charCodeAt()+";"}ii(St,yt);ii(St,yt.prototype);function an(e,t){if(t(e))return!0;if(e=e.firstChild)do if(an(e,t))return!0;while(e=e.nextSibling)}function si(){}function hg(e,t,r){e&&e._inc++;var i=r.namespaceURI;i=="http://www.w3.org/2000/xmlns/"&&(t._nsMap[r.prefix?r.localName:""]=r.value)}function Oc(e,t,r,i){e&&e._inc++;var n=r.namespaceURI;n=="http://www.w3.org/2000/xmlns/"&&delete t._nsMap[r.prefix?r.localName:""]}function Ws(e,t,r){if(e&&e._inc){e._inc++;var i=t.childNodes;if(r)i[i.length++]=r;else{for(var n=t.firstChild,s=0;n;)i[s++]=n,n=n.nextSibling;i.length=s}}}function Rc(e,t){var r=t.previousSibling,i=t.nextSibling;return r?r.nextSibling=i:e.firstChild=i,i?i.previousSibling=r:e.lastChild=r,Ws(e.ownerDocument,e),t}function Ac(e,t,r){var i=t.parentNode;if(i&&i.removeChild(t),t.nodeType===ee){var n=t.firstChild;if(n==null)return t;var s=t.lastChild}else n=s=t;var o=r?r.previousSibling:e.lastChild;n.previousSibling=o,s.nextSibling=r,o?o.nextSibling=n:e.firstChild=n,r==null?e.lastChild=s:r.previousSibling=s;do n.parentNode=e;while(n!==s&&(n=n.nextSibling));return Ws(e.ownerDocument||e,e),t.nodeType==ee&&(t.firstChild=t.lastChild=null),t}function fg(e,t){var r=t.parentNode;if(r){var i=e.lastChild;r.removeChild(t);var i=e.lastChild}var i=e.lastChild;return t.parentNode=e,t.previousSibling=i,t.nextSibling=null,i?i.nextSibling=t:e.firstChild=t,e.lastChild=t,Ws(e.ownerDocument,e,t),t}si.prototype={nodeName:"#document",nodeType:wc,doctype:null,documentElement:null,_inc:1,insertBefore:function(e,t){if(e.nodeType==ee){for(var r=e.firstChild;r;){var i=r.nextSibling;this.insertBefore(r,t),r=i}return e}return this.documentElement==null&&e.nodeType==Wt&&(this.documentElement=e),Ac(this,e,t),e.ownerDocument=this,e},removeChild:function(e){return this.documentElement==e&&(this.documentElement=null),Rc(this,e)},importNode:function(e,t){return xc(this,e,t)},getElementById:function(e){var t=null;return an(this.documentElement,function(r){if(r.nodeType==Wt&&r.getAttribute("id")==e)return t=r,!0}),t},createElement:function(e){var t=new dr;t.ownerDocument=this,t.nodeName=e,t.tagName=e,t.childNodes=new ge;var r=t.attributes=new on;return r._ownerElement=t,t},createDocumentFragment:function(){var e=new cn;return e.ownerDocument=this,e.childNodes=new ge,e},createTextNode:function(e){var t=new Hs;return t.ownerDocument=this,t.appendData(e),t},createComment:function(e){var t=new Vs;return t.ownerDocument=this,t.appendData(e),t},createCDATASection:function(e){var t=new Ys;return t.ownerDocument=this,t.appendData(e),t},createProcessingInstruction:function(e,t){var r=new Ks;return r.ownerDocument=this,r.tagName=r.target=e,r.nodeValue=r.data=t,r},createAttribute:function(e){var t=new ln;return t.ownerDocument=this,t.name=e,t.nodeName=e,t.localName=e,t.specified=!0,t},createEntityReference:function(e){var t=new Zs;return t.ownerDocument=this,t.nodeName=e,t},createElementNS:function(e,t){var r=new dr,i=t.split(":"),n=r.attributes=new on;return r.childNodes=new ge,r.ownerDocument=this,r.nodeName=t,r.tagName=t,r.namespaceURI=e,i.length==2?(r.prefix=i[0],r.localName=i[1]):r.localName=t,n._ownerElement=r,r},createAttributeNS:function(e,t){var r=new ln,i=t.split(":");return r.ownerDocument=this,r.nodeName=t,r.name=t,r.namespaceURI=e,r.specified=!0,i.length==2?(r.prefix=i[0],r.localName=i[1]):r.localName=t,r}};_t(si,yt);function dr(){this._nsMap={}}dr.prototype={nodeType:Wt,hasAttribute:function(e){return this.getAttributeNode(e)!=null},getAttribute:function(e){var t=this.getAttributeNode(e);return t&&t.value||""},getAttributeNode:function(e){return this.attributes.getNamedItem(e)},setAttribute:function(e,t){var r=this.ownerDocument.createAttribute(e);r.value=r.nodeValue=""+t,this.setAttributeNode(r)},removeAttribute:function(e){var t=this.getAttributeNode(e);t&&this.removeAttributeNode(t)},appendChild:function(e){return e.nodeType===ee?this.insertBefore(e,null):fg(this,e)},setAttributeNode:function(e){return this.attributes.setNamedItem(e)},setAttributeNodeNS:function(e){return this.attributes.setNamedItemNS(e)},removeAttributeNode:function(e){return this.attributes.removeNamedItem(e.nodeName)},removeAttributeNS:function(e,t){var r=this.getAttributeNodeNS(e,t);r&&this.removeAttributeNode(r)},hasAttributeNS:function(e,t){return this.getAttributeNodeNS(e,t)!=null},getAttributeNS:function(e,t){var r=this.getAttributeNodeNS(e,t);return r&&r.value||""},setAttributeNS:function(e,t,r){var i=this.ownerDocument.createAttributeNS(e,t);i.value=i.nodeValue=""+r,this.setAttributeNode(i)},getAttributeNodeNS:function(e,t){return this.attributes.getNamedItemNS(e,t)},getElementsByTagName:function(e){return new ni(this,function(t){var r=[];return an(t,function(i){i!==t&&i.nodeType==Wt&&(e==="*"||i.tagName==e)&&r.push(i)}),r})},getElementsByTagNameNS:function(e,t){return new ni(this,function(r){var i=[];return an(r,function(n){n!==r&&n.nodeType===Wt&&(e==="*"||n.namespaceURI===e)&&(t==="*"||n.localName==t)&&i.push(n)}),i})}};si.prototype.getElementsByTagName=dr.prototype.getElementsByTagName;si.prototype.getElementsByTagNameNS=dr.prototype.getElementsByTagNameNS;_t(dr,yt);function ln(){}ln.prototype.nodeType=hr;_t(ln,yt);function oi(){}oi.prototype={data:"",substringData:function(e,t){return this.data.substring(e,e+t)},appendData:function(e){e=this.data+e,this.nodeValue=this.data=e,this.length=e.length},insertData:function(e,t){this.replaceData(e,0,t)},appendChild:function(e){throw new Error(ct[cg])},deleteData:function(e,t){this.replaceData(e,t,"")},replaceData:function(e,t,r){var i=this.data.substring(0,e),n=this.data.substring(e+t);r=i+r+n,this.nodeValue=this.data=r,this.length=r.length}};_t(oi,yt);function Hs(){}Hs.prototype={nodeName:"#text",nodeType:sn,splitText:function(e){var t=this.data,r=t.substring(e);t=t.substring(0,e),this.data=this.nodeValue=t,this.length=t.length;var i=this.ownerDocument.createTextNode(r);return this.parentNode&&this.parentNode.insertBefore(i,this.nextSibling),i}};_t(Hs,oi);function Vs(){}Vs.prototype={nodeName:"#comment",nodeType:vc};_t(Vs,oi);function Ys(){}Ys.prototype={nodeName:"#cdata-section",nodeType:mc};_t(Ys,oi);function Gs(){}Gs.prototype.nodeType=Ec;_t(Gs,yt);function Lc(){}Lc.prototype.nodeType=lg;_t(Lc,yt);function Mc(){}Mc.prototype.nodeType=ag;_t(Mc,yt);function Zs(){}Zs.prototype.nodeType=yc;_t(Zs,yt);function cn(){}cn.prototype.nodeName="#document-fragment";cn.prototype.nodeType=ee;_t(cn,yt);function Ks(){}Ks.prototype.nodeType=gc;_t(Ks,yt);function Cc(){}Cc.prototype.serializeToString=function(e,t,r){return Pc.call(e,t,r)};yt.prototype.toString=Pc;function Pc(e,t){var r=[],i=this.nodeType==9?this.documentElement:this,n=i.prefix,s=i.namespaceURI;if(s&&n==null){var n=i.lookupPrefix(s);if(n==null)var o=[{namespace:s,prefix:null}]}return pr(this,r,e,t,o),r.join("")}function kc(e,t,r){var i=e.prefix||"",n=e.namespaceURI;if(!i&&!n||i==="xml"&&n==="http://www.w3.org/XML/1998/namespace"||n=="http://www.w3.org/2000/xmlns/")return!1;for(var s=r.length;s--;){var o=r[s];if(o.prefix==i)return o.namespace!=n}return!0}function pr(e,t,r,i,n){if(i)if(e=i(e),e){if(typeof e=="string"){t.push(e);return}}else return;switch(e.nodeType){case Wt:n||(n=[]);var s=n.length,o=e.attributes,l=o.length,a=e.firstChild,c=e.tagName;r=og===e.namespaceURI||r,t.push("<",c);for(var u=0;u"),r&&/^script$/i.test(c))for(;a;)a.data?t.push(a.data):pr(a,t,r,i,n),a=a.nextSibling;else for(;a;)pr(a,t,r,i,n),a=a.nextSibling;t.push("")}else t.push("/>");return;case wc:case ee:for(var a=e.firstChild;a;)pr(a,t,r,i,n),a=a.nextSibling;return;case hr:return t.push(" ",e.name,'="',e.value.replace(/[<&"]/g,Ic),'"');case sn:return t.push(e.data.replace(/[<&]/g,Ic));case mc:return t.push("");case vc:return t.push("");case Ec:var m=e.publicId,w=e.systemId;if(t.push("');else if(w&&w!=".")t.push(' SYSTEM "',w,'">');else{var O=e.internalSubset;O&&t.push(" [",O,"]"),t.push(">")}return;case gc:return t.push("");case yc:return t.push("&",e.nodeName,";");default:t.push("??",e.nodeName)}}function xc(e,t,r){var i;switch(t.nodeType){case Wt:i=t.cloneNode(!1),i.ownerDocument=e;case ee:break;case hr:r=!0;break}if(i||(i=t.cloneNode(!1)),i.ownerDocument=e,i.parentNode=null,r)for(var n=t.firstChild;n;)i.appendChild(xc(e,n,r)),n=n.nextSibling;return i}function $s(e,t,r){var i=new t.constructor;for(var n in t){var s=t[n];typeof s!="object"&&s!=i[n]&&(i[n]=s)}switch(t.childNodes&&(i.childNodes=new ge),i.ownerDocument=e,i.nodeType){case Wt:var o=t.attributes,l=i.attributes=new on,a=o.length;l._ownerElement=i;for(var c=0;c{function Bc(e){this.options=e||{locator:{}}}Bc.prototype.parseFromString=function(e,t){var r=this.options,i=new dg,n=r.domBuilder||new hn,s=r.errorHandler,o=r.locator,l=r.xmlns||{},a={lt:"<",gt:">",amp:"&",quot:'"',apos:"'"};return o&&n.setDocumentLocator(o),i.errorHandler=pg(s,n,o),i.domBuilder=r.domBuilder||n,/\/x?html?$/.test(t)&&(a.nbsp="\xA0",a.copy="\xA9",l[""]="http://www.w3.org/1999/xhtml"),l.xml=l.xml||"http://www.w3.org/XML/1998/namespace",e?i.parse(e,l,a):i.errorHandler.error("invalid doc source"),n.doc};function pg(e,t,r){if(!e){if(t instanceof hn)return t;e=t}var i={},n=e instanceof Function;r=r||{};function s(o){var l=e[o];!l&&n&&(l=e.length==2?function(a){e(o,a)}:e),i[o]=l&&function(a){l("[xmldom "+o+"] "+a+fn(r))}||function(){}}return s("warning"),s("error"),s("fatalError"),i}function hn(){this.cdata=!1}function mr(e,t){t.lineNumber=e.lineNumber,t.columnNumber=e.columnNumber}hn.prototype={startDocument:function(){this.doc=new mg().createDocument(null,null,null),this.locator&&(this.doc.documentURI=this.locator.systemId)},startElement:function(e,t,r,i){var n=this.doc,s=n.createElementNS(e,r||t),o=i.length;pn(this,s),this.currentElement=s,this.locator&&mr(this.locator,s);for(var l=0;l=t+r||t?new java.lang.String(e,t,r)+"":e}"endDTD,startEntity,endEntity,attributeDecl,elementDecl,externalEntityDecl,internalEntityDecl,resolveEntity,getExternalSubset,notationDecl,unparsedEntityDecl".replace(/\w+/g,function(e){hn.prototype[e]=function(){return null}});function pn(e,t){e.currentElement?e.currentElement.appendChild(t):e.doc.appendChild(t)}var dg=dc().XMLReader,mg=un.DOMImplementation=Js().DOMImplementation;un.XMLSerializer=Js().XMLSerializer;un.DOMParser=Bc});var Xc=x(Uc=>{var yg=qc().DOMParser;Uc.parse=gg;var dn=3,jc=4,vg=8;function Qs(e){return e.nodeType===dn||e.nodeType===vg||e.nodeType===jc}function re(e){return!e.childNodes||e.childNodes.length===0}function yr(e,t){if(!e)throw new Error(t)}function gg(e){var t=new yg().parseFromString(e);yr(t.documentElement.nodeName==="plist","malformed document. First element should be ");var r=gr(t.documentElement);return r.length==1&&(r=r[0]),r}function gr(e){var t,r,i,n,s,o,l,a;if(!e)return null;if(e.nodeName==="plist"){if(s=[],re(e))return s;for(t=0;t."),i=gr(e.childNodes[t])):(yr(e.childNodes[t].nodeName!=="key",'Unexpected key "'+gr(e.childNodes[t])+'" while parsing .'),r[i]=gr(e.childNodes[t])),l+=1);if(l%2==1)throw new Error('Missing value for "'+i+'" while parsing ');return r}else if(e.nodeName==="array"){if(s=[],re(e))return s;for(t=0;t{"use strict";mn.byteLength=wg;mn.toByteArray=Eg;mn.fromByteArray=bg;var Ht=[],Pt=[],_g=typeof Uint8Array!="undefined"?Uint8Array:Array,to="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";for(var vr=0,Sg=to.length;vr0)throw new Error("Invalid string. Length must be a multiple of 4");var r=e.indexOf("=");r===-1&&(r=t);var i=r===t?0:4-r%4;return[r,i]}function wg(e){var t=zc(e),r=t[0],i=t[1];return(r+i)*3/4-i}function Og(e,t,r){return(t+r)*3/4-r}function Eg(e){var t,r=zc(e),i=r[0],n=r[1],s=new _g(Og(e,i,n)),o=0,l=n>0?i-4:i,a;for(a=0;a>16&255,s[o++]=t>>8&255,s[o++]=t&255;return n===2&&(t=Pt[e.charCodeAt(a)]<<2|Pt[e.charCodeAt(a+1)]>>4,s[o++]=t&255),n===1&&(t=Pt[e.charCodeAt(a)]<<10|Pt[e.charCodeAt(a+1)]<<4|Pt[e.charCodeAt(a+2)]>>2,s[o++]=t>>8&255,s[o++]=t&255),s}function Ng(e){return Ht[e>>18&63]+Ht[e>>12&63]+Ht[e>>6&63]+Ht[e&63]}function Dg(e,t,r){for(var i,n=[],s=t;sl?l:o+s));return i===1?(t=e[r-1],n.push(Ht[t>>2]+Ht[t<<4&63]+"==")):i===2&&(t=(e[r-2]<<8)+e[r-1],n.push(Ht[t>>10]+Ht[t>>4&63]+Ht[t<<2&63]+"=")),n.join("")}});var ie=x(($c,qe)=>{(function(){var e,t,r,i,n,s,o=[].slice,l={}.hasOwnProperty;e=function(){var a,c,u,f,y,b;if(b=arguments[0],y=2<=arguments.length?o.call(arguments,1):[],i(Object.assign))Object.assign.apply(null,arguments);else for(a=0,u=y.length;a{(function(){var e;Hc.exports=e=function(){function t(r,i,n){if(this.options=r.options,this.stringify=r.stringify,i==null)throw new Error("Missing attribute name of element "+r.name);if(n==null)throw new Error("Missing attribute value for attribute "+i+" of element "+r.name);this.name=this.stringify.attName(i),this.value=this.stringify.attValue(n)}return t.prototype.clone=function(){return Object.create(this)},t.prototype.toString=function(r){return this.options.writer.set(r).attribute(this)},t}()}).call(Wc)});var ai=x((Vc,Yc)=>{(function(){var e,t,r,i,n,s,o=function(a,c){for(var u in c)l.call(c,u)&&(a[u]=c[u]);function f(){this.constructor=a}return f.prototype=c.prototype,a.prototype=new f,a.__super__=c.prototype,a},l={}.hasOwnProperty;s=ie(),n=s.isObject,i=s.isFunction,r=Ot(),e=eo(),Yc.exports=t=function(a){o(c,a);function c(u,f,y){if(c.__super__.constructor.call(this,u),f==null)throw new Error("Missing element name");this.name=this.stringify.eleName(f),this.attributes={},y!=null&&this.attribute(y),u.isDocument&&(this.isRoot=!0,this.documentObject=u,u.rootObject=this)}return c.prototype.clone=function(){var u,f,y,b;y=Object.create(this),y.isRoot&&(y.documentObject=null),y.attributes={},b=this.attributes;for(f in b)!l.call(b,f)||(u=b[f],y.attributes[f]=u.clone());return y.children=[],this.children.forEach(function(E){var m;return m=E.clone(),m.parent=y,y.children.push(m)}),y},c.prototype.attribute=function(u,f){var y,b;if(u!=null&&(u=u.valueOf()),n(u))for(y in u)!l.call(u,y)||(b=u[y],this.attribute(y,b));else i(f)&&(f=f.apply()),(!this.options.skipNullAttributes||f!=null)&&(this.attributes[u]=new e(this,u,f));return this},c.prototype.removeAttribute=function(u){var f,y,b;if(u==null)throw new Error("Missing attribute name");if(u=u.valueOf(),Array.isArray(u))for(y=0,b=u.length;y{(function(){var e,t,r=function(n,s){for(var o in s)i.call(s,o)&&(n[o]=s[o]);function l(){this.constructor=n}return l.prototype=s.prototype,n.prototype=new l,n.__super__=s.prototype,n},i={}.hasOwnProperty;t=Ot(),Kc.exports=e=function(n){r(s,n);function s(o,l){if(s.__super__.constructor.call(this,o),l==null)throw new Error("Missing CDATA text");this.text=this.stringify.cdata(l)}return s.prototype.clone=function(){return Object.create(this)},s.prototype.toString=function(o){return this.options.writer.set(o).cdata(this)},s}(t)}).call(Zc)});var ci=x((Jc,Qc)=>{(function(){var e,t,r=function(n,s){for(var o in s)i.call(s,o)&&(n[o]=s[o]);function l(){this.constructor=n}return l.prototype=s.prototype,n.prototype=new l,n.__super__=s.prototype,n},i={}.hasOwnProperty;t=Ot(),Qc.exports=e=function(n){r(s,n);function s(o,l){if(s.__super__.constructor.call(this,o),l==null)throw new Error("Missing comment text");this.text=this.stringify.comment(l)}return s.prototype.clone=function(){return Object.create(this)},s.prototype.toString=function(o){return this.options.writer.set(o).comment(this)},s}(t)}).call(Jc)});var ui=x((tu,eu)=>{(function(){var e,t,r,i=function(s,o){for(var l in o)n.call(o,l)&&(s[l]=o[l]);function a(){this.constructor=s}return a.prototype=o.prototype,s.prototype=new a,s.__super__=o.prototype,s},n={}.hasOwnProperty;r=ie().isObject,t=Ot(),eu.exports=e=function(s){i(o,s);function o(l,a,c,u){var f;o.__super__.constructor.call(this,l),r(a)&&(f=a,a=f.version,c=f.encoding,u=f.standalone),a||(a="1.0"),this.version=this.stringify.xmlVersion(a),c!=null&&(this.encoding=this.stringify.xmlEncoding(c)),u!=null&&(this.standalone=this.stringify.xmlStandalone(u))}return o.prototype.toString=function(l){return this.options.writer.set(l).declaration(this)},o}(t)}).call(tu)});var hi=x((ru,iu)=>{(function(){var e,t,r=function(n,s){for(var o in s)i.call(s,o)&&(n[o]=s[o]);function l(){this.constructor=n}return l.prototype=s.prototype,n.prototype=new l,n.__super__=s.prototype,n},i={}.hasOwnProperty;t=Ot(),iu.exports=e=function(n){r(s,n);function s(o,l,a,c,u,f){if(s.__super__.constructor.call(this,o),l==null)throw new Error("Missing DTD element name");if(a==null)throw new Error("Missing DTD attribute name");if(!c)throw new Error("Missing DTD attribute type");if(!u)throw new Error("Missing DTD attribute default");if(u.indexOf("#")!==0&&(u="#"+u),!u.match(/^(#REQUIRED|#IMPLIED|#FIXED|#DEFAULT)$/))throw new Error("Invalid default value type; expected: #REQUIRED, #IMPLIED, #FIXED or #DEFAULT");if(f&&!u.match(/^(#FIXED|#DEFAULT)$/))throw new Error("Default value only applies to #FIXED or #DEFAULT");this.elementName=this.stringify.eleName(l),this.attributeName=this.stringify.attName(a),this.attributeType=this.stringify.dtdAttType(c),this.defaultValue=this.stringify.dtdAttDefault(f),this.defaultValueType=u}return s.prototype.toString=function(o){return this.options.writer.set(o).dtdAttList(this)},s}(t)}).call(ru)});var fi=x((nu,su)=>{(function(){var e,t,r,i=function(s,o){for(var l in o)n.call(o,l)&&(s[l]=o[l]);function a(){this.constructor=s}return a.prototype=o.prototype,s.prototype=new a,s.__super__=o.prototype,s},n={}.hasOwnProperty;r=ie().isObject,t=Ot(),su.exports=e=function(s){i(o,s);function o(l,a,c,u){if(o.__super__.constructor.call(this,l),c==null)throw new Error("Missing entity name");if(u==null)throw new Error("Missing entity value");if(this.pe=!!a,this.name=this.stringify.eleName(c),!r(u))this.value=this.stringify.dtdEntityValue(u);else{if(!u.pubID&&!u.sysID)throw new Error("Public and/or system identifiers are required for an external entity");if(u.pubID&&!u.sysID)throw new Error("System identifier is required for a public external entity");if(u.pubID!=null&&(this.pubID=this.stringify.dtdPubID(u.pubID)),u.sysID!=null&&(this.sysID=this.stringify.dtdSysID(u.sysID)),u.nData!=null&&(this.nData=this.stringify.dtdNData(u.nData)),this.pe&&this.nData)throw new Error("Notation declaration is not allowed in a parameter entity")}}return o.prototype.toString=function(l){return this.options.writer.set(l).dtdEntity(this)},o}(t)}).call(nu)});var pi=x((ou,au)=>{(function(){var e,t,r=function(n,s){for(var o in s)i.call(s,o)&&(n[o]=s[o]);function l(){this.constructor=n}return l.prototype=s.prototype,n.prototype=new l,n.__super__=s.prototype,n},i={}.hasOwnProperty;t=Ot(),au.exports=e=function(n){r(s,n);function s(o,l,a){if(s.__super__.constructor.call(this,o),l==null)throw new Error("Missing DTD element name");a||(a="(#PCDATA)"),Array.isArray(a)&&(a="("+a.join(",")+")"),this.name=this.stringify.eleName(l),this.value=this.stringify.dtdElementValue(a)}return s.prototype.toString=function(o){return this.options.writer.set(o).dtdElement(this)},s}(t)}).call(ou)});var di=x((lu,cu)=>{(function(){var e,t,r=function(n,s){for(var o in s)i.call(s,o)&&(n[o]=s[o]);function l(){this.constructor=n}return l.prototype=s.prototype,n.prototype=new l,n.__super__=s.prototype,n},i={}.hasOwnProperty;t=Ot(),cu.exports=e=function(n){r(s,n);function s(o,l,a){if(s.__super__.constructor.call(this,o),l==null)throw new Error("Missing notation name");if(!a.pubID&&!a.sysID)throw new Error("Public or system identifiers are required for an external entity");this.name=this.stringify.eleName(l),a.pubID!=null&&(this.pubID=this.stringify.dtdPubID(a.pubID)),a.sysID!=null&&(this.sysID=this.stringify.dtdSysID(a.sysID))}return s.prototype.toString=function(o){return this.options.writer.set(o).dtdNotation(this)},s}(t)}).call(lu)});var mi=x((uu,hu)=>{(function(){var e,t,r,i,n,s,o,l=function(c,u){for(var f in u)a.call(u,f)&&(c[f]=u[f]);function y(){this.constructor=c}return y.prototype=u.prototype,c.prototype=new y,c.__super__=u.prototype,c},a={}.hasOwnProperty;o=ie().isObject,s=Ot(),e=hi(),r=fi(),t=pi(),i=di(),hu.exports=n=function(c){l(u,c);function u(f,y,b){var E,m;u.__super__.constructor.call(this,f),this.documentObject=f,o(y)&&(E=y,y=E.pubID,b=E.sysID),b==null&&(m=[y,b],b=m[0],y=m[1]),y!=null&&(this.pubID=this.stringify.dtdPubID(y)),b!=null&&(this.sysID=this.stringify.dtdSysID(b))}return u.prototype.element=function(f,y){var b;return b=new t(this,f,y),this.children.push(b),this},u.prototype.attList=function(f,y,b,E,m){var w;return w=new e(this,f,y,b,E,m),this.children.push(w),this},u.prototype.entity=function(f,y){var b;return b=new r(this,!1,f,y),this.children.push(b),this},u.prototype.pEntity=function(f,y){var b;return b=new r(this,!0,f,y),this.children.push(b),this},u.prototype.notation=function(f,y){var b;return b=new i(this,f,y),this.children.push(b),this},u.prototype.toString=function(f){return this.options.writer.set(f).docType(this)},u.prototype.ele=function(f,y){return this.element(f,y)},u.prototype.att=function(f,y,b,E,m){return this.attList(f,y,b,E,m)},u.prototype.ent=function(f,y){return this.entity(f,y)},u.prototype.pent=function(f,y){return this.pEntity(f,y)},u.prototype.not=function(f,y){return this.notation(f,y)},u.prototype.up=function(){return this.root()||this.documentObject},u}(s)}).call(uu)});var yi=x((fu,pu)=>{(function(){var e,t,r=function(n,s){for(var o in s)i.call(s,o)&&(n[o]=s[o]);function l(){this.constructor=n}return l.prototype=s.prototype,n.prototype=new l,n.__super__=s.prototype,n},i={}.hasOwnProperty;e=Ot(),pu.exports=t=function(n){r(s,n);function s(o,l){if(s.__super__.constructor.call(this,o),l==null)throw new Error("Missing raw text");this.value=this.stringify.raw(l)}return s.prototype.clone=function(){return Object.create(this)},s.prototype.toString=function(o){return this.options.writer.set(o).raw(this)},s}(e)}).call(fu)});var gi=x((du,mu)=>{(function(){var e,t,r=function(n,s){for(var o in s)i.call(s,o)&&(n[o]=s[o]);function l(){this.constructor=n}return l.prototype=s.prototype,n.prototype=new l,n.__super__=s.prototype,n},i={}.hasOwnProperty;e=Ot(),mu.exports=t=function(n){r(s,n);function s(o,l){if(s.__super__.constructor.call(this,o),l==null)throw new Error("Missing element text");this.value=this.stringify.eleText(l)}return s.prototype.clone=function(){return Object.create(this)},s.prototype.toString=function(o){return this.options.writer.set(o).text(this)},s}(e)}).call(du)});var vi=x((yu,gu)=>{(function(){var e,t,r=function(n,s){for(var o in s)i.call(s,o)&&(n[o]=s[o]);function l(){this.constructor=n}return l.prototype=s.prototype,n.prototype=new l,n.__super__=s.prototype,n},i={}.hasOwnProperty;e=Ot(),gu.exports=t=function(n){r(s,n);function s(o,l,a){if(s.__super__.constructor.call(this,o),l==null)throw new Error("Missing instruction target");this.target=this.stringify.insTarget(l),a&&(this.value=this.stringify.insValue(a))}return s.prototype.clone=function(){return Object.create(this)},s.prototype.toString=function(o){return this.options.writer.set(o).processingInstruction(this)},s}(e)}).call(yu)});var Ot=x((vu,wu)=>{(function(){var e,t,r,i,n,s,o,l,a,c,u,f,y,b={}.hasOwnProperty;y=ie(),f=y.isObject,u=y.isFunction,c=y.isEmpty,n=null,e=null,t=null,r=null,i=null,l=null,a=null,o=null,wu.exports=s=function(){function E(m){this.parent=m,this.parent&&(this.options=this.parent.options,this.stringify=this.parent.stringify),this.children=[],n||(n=ai(),e=li(),t=ci(),r=ui(),i=mi(),l=yi(),a=gi(),o=vi())}return E.prototype.element=function(m,w,O){var d,g,N,A,_,R,B,P,D,L;if(R=null,w==null&&(w={}),w=w.valueOf(),f(w)||(D=[w,O],O=D[0],w=D[1]),m!=null&&(m=m.valueOf()),Array.isArray(m))for(N=0,B=m.length;N{(function(){var e,t=function(i,n){return function(){return i.apply(n,arguments)}},r={}.hasOwnProperty;bu.exports=e=function(){function i(n){this.assertLegalChar=t(this.assertLegalChar,this);var s,o,l;n||(n={}),this.noDoubleEncoding=n.noDoubleEncoding,o=n.stringify||{};for(s in o)!r.call(o,s)||(l=o[s],this[s]=l)}return i.prototype.eleName=function(n){return n=""+n||"",this.assertLegalChar(n)},i.prototype.eleText=function(n){return n=""+n||"",this.assertLegalChar(this.elEscape(n))},i.prototype.cdata=function(n){return n=""+n||"",n=n.replace("]]>","]]]]>"),this.assertLegalChar(n)},i.prototype.comment=function(n){if(n=""+n||"",n.match(/--/))throw new Error("Comment text cannot contain double-hypen: "+n);return this.assertLegalChar(n)},i.prototype.raw=function(n){return""+n||""},i.prototype.attName=function(n){return n=""+n||""},i.prototype.attValue=function(n){return n=""+n||"",this.attEscape(n)},i.prototype.insTarget=function(n){return""+n||""},i.prototype.insValue=function(n){if(n=""+n||"",n.match(/\?>/))throw new Error("Invalid processing instruction value: "+n);return n},i.prototype.xmlVersion=function(n){if(n=""+n||"",!n.match(/1\.[0-9]+/))throw new Error("Invalid version number: "+n);return n},i.prototype.xmlEncoding=function(n){if(n=""+n||"",!n.match(/^[A-Za-z](?:[A-Za-z0-9._-])*$/))throw new Error("Invalid encoding: "+n);return n},i.prototype.xmlStandalone=function(n){return n?"yes":"no"},i.prototype.dtdPubID=function(n){return""+n||""},i.prototype.dtdSysID=function(n){return""+n||""},i.prototype.dtdElementValue=function(n){return""+n||""},i.prototype.dtdAttType=function(n){return""+n||""},i.prototype.dtdAttDefault=function(n){return n!=null?""+n||"":n},i.prototype.dtdEntityValue=function(n){return""+n||""},i.prototype.dtdNData=function(n){return""+n||""},i.prototype.convertAttKey="@",i.prototype.convertPIKey="?",i.prototype.convertTextKey="#text",i.prototype.convertCDataKey="#cdata",i.prototype.convertCommentKey="#comment",i.prototype.convertRawKey="#raw",i.prototype.assertLegalChar=function(n){var s;if(s=n.match(/[\0\uFFFE\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/),s)throw new Error("Invalid character in string: "+n+" at index "+s.index);return n},i.prototype.elEscape=function(n){var s;return s=this.noDoubleEncoding?/(?!&\S+;)&/g:/&/g,n.replace(s,"&").replace(//g,">").replace(/\r/g," ")},i.prototype.attEscape=function(n){var s;return s=this.noDoubleEncoding?/(?!&\S+;)&/g:/&/g,n.replace(s,"&").replace(/{(function(){var e,t={}.hasOwnProperty;Su.exports=e=function(){function r(i){var n,s,o,l,a,c,u,f,y;i||(i={}),this.pretty=i.pretty||!1,this.allowEmpty=(s=i.allowEmpty)!=null?s:!1,this.pretty?(this.indent=(o=i.indent)!=null?o:" ",this.newline=(l=i.newline)!=null?l:` `,this.offset=(a=i.offset)!=null?a:0,this.dontprettytextnodes=(c=i.dontprettytextnodes)!=null?c:0):(this.indent="",this.newline="",this.offset=0,this.dontprettytextnodes=0),this.spacebeforeslash=(u=i.spacebeforeslash)!=null?u:"",this.spacebeforeslash===!0&&(this.spacebeforeslash=" "),this.newlinedefault=this.newline,this.prettydefault=this.pretty,f=i.writer||{};for(n in f)!t.call(f,n)||(y=f[n],this[n]=y)}return r.prototype.set=function(i){var n,s,o;i||(i={}),"pretty"in i&&(this.pretty=i.pretty),"allowEmpty"in i&&(this.allowEmpty=i.allowEmpty),this.pretty?(this.indent="indent"in i?i.indent:" ",this.newline="newline"in i?i.newline:` -`,this.offset="offset"in i?i.offset:0,this.dontprettytextnodes="dontprettytextnodes"in i?i.dontprettytextnodes:0):(this.indent="",this.newline="",this.offset=0,this.dontprettytextnodes=0),this.spacebeforeslash="spacebeforeslash"in i?i.spacebeforeslash:"",this.spacebeforeslash===!0&&(this.spacebeforeslash=" "),this.newlinedefault=this.newline,this.prettydefault=this.pretty,s=i.writer||{};for(n in s)!t.call(s,n)||(o=s[n],this[n]=o);return this},r.prototype.space=function(i){var n;return this.pretty?(n=(i||0)+this.offset+1,n>0?new Array(n).join(this.indent):""):""},r}()}).call(_u)});var yn=x((Ou,Nu)=>{(function(){var e,t,r,i,n,s,o,l,a,c,u,f,y,b,E=function(w,O){for(var d in O)m.call(O,d)&&(w[d]=O[d]);function g(){this.constructor=w}return g.prototype=O.prototype,w.prototype=new g,w.__super__=O.prototype,w},m={}.hasOwnProperty;o=ui(),l=mi(),e=li(),t=ci(),a=ai(),u=yi(),y=gi(),c=vi(),r=hi(),i=pi(),n=fi(),s=di(),b=ro(),Nu.exports=f=function(w){E(O,w);function O(d){O.__super__.constructor.call(this,d)}return O.prototype.document=function(d){var g,N,A,_,R;for(this.textispresent=!1,_="",R=d.children,N=0,A=R.length;N"+this.newline},O.prototype.comment=function(d,g){return this.space(g)+""+this.newline},O.prototype.declaration=function(d,g){var N;return N=this.space(g),N+='",N+=this.newline,N},O.prototype.docType=function(d,g){var N,A,_,R,B;if(g||(g=0),R=this.space(g),R+="0){for(R+=" [",R+=this.newline,B=d.children,A=0,_=B.length;A<_;A++)N=B[A],R+=function(){switch(!1){case!(N instanceof r):return this.dtdAttList(N,g+1);case!(N instanceof i):return this.dtdElement(N,g+1);case!(N instanceof n):return this.dtdEntity(N,g+1);case!(N instanceof s):return this.dtdNotation(N,g+1);case!(N instanceof e):return this.cdata(N,g+1);case!(N instanceof t):return this.comment(N,g+1);case!(N instanceof c):return this.processingInstruction(N,g+1);default:throw new Error("Unknown DTD node type: "+N.constructor.name)}}.call(this);R+="]"}return R+=this.spacebeforeslash+">",R+=this.newline,R},O.prototype.element=function(d,g){var N,A,_,R,B,P,D,L,F,U,Y,$,G;g||(g=0),G=!1,this.textispresent?(this.newline="",this.pretty=!1):(this.newline=this.newlinedefault,this.pretty=this.prettydefault),$=this.space(g),L="",L+=$+"<"+d.name,F=d.attributes;for(D in F)!m.call(F,D)||(N=F[D],L+=this.attribute(N));if(d.children.length===0||d.children.every(function(it){return it.value===""}))this.allowEmpty?L+=">"+this.newline:L+=this.spacebeforeslash+"/>"+this.newline;else if(this.pretty&&d.children.length===1&&d.children[0].value!=null)L+=">",L+=d.children[0].value,L+=""+this.newline;else{if(this.dontprettytextnodes){for(U=d.children,_=0,B=U.length;_"+this.newline,Y=d.children,R=0,P=Y.length;R"+this.newline}return L},O.prototype.processingInstruction=function(d,g){var N;return N=this.space(g)+""+this.newline,N},O.prototype.raw=function(d,g){return this.space(g)+d.value+this.newline},O.prototype.text=function(d,g){return this.space(g)+d.value+this.newline},O.prototype.dtdAttList=function(d,g){var N;return N=this.space(g)+""+this.newline,N},O.prototype.dtdElement=function(d,g){return this.space(g)+""+this.newline},O.prototype.dtdEntity=function(d,g){var N;return N=this.space(g)+""+this.newline,N},O.prototype.dtdNotation=function(d,g){var N;return N=this.space(g)+""+this.newline,N},O.prototype.openNode=function(d,g){var N,A,_,R;if(g||(g=0),d instanceof a){_=this.space(g)+"<"+d.name,R=d.attributes;for(A in R)!m.call(R,A)||(N=R[A],_+=this.attribute(N));return _+=(d.children?">":"/>")+this.newline,_}else return _=this.space(g)+"")+this.newline,_},O.prototype.closeNode=function(d,g){switch(g||(g=0),!1){case!(d instanceof a):return this.space(g)+""+this.newline;case!(d instanceof l):return this.space(g)+"]>"+this.newline}},O}(b)}).call(Ou)});var Ru=x((Du,Tu)=>{(function(){var e,t,r,i,n,s=function(l,a){for(var c in a)o.call(a,c)&&(l[c]=a[c]);function u(){this.constructor=l}return u.prototype=a.prototype,l.prototype=new u,l.__super__=a.prototype,l},o={}.hasOwnProperty;n=ie().isPlainObject,t=St(),i=eo(),r=yn(),Tu.exports=e=function(l){s(a,l);function a(c){a.__super__.constructor.call(this,null),c||(c={}),c.writer||(c.writer=new r),this.options=c,this.stringify=new i(c),this.isDocument=!0}return a.prototype.end=function(c){var u;return c?n(c)&&(u=c,c=this.options.writer.set(u)):c=this.options.writer,c.document(this)},a.prototype.toString=function(c){return this.options.writer.set(c).document(this)},a}(t)}).call(Du)});var xu=x((Au,Iu)=>{(function(){var e,t,r,i,n,s,o,l,a,c,u,f,y,b,E,m,w,O,d,g,N={}.hasOwnProperty;g=ie(),O=g.isObject,w=g.isFunction,d=g.isPlainObject,u=ai(),t=li(),r=ci(),y=yi(),m=gi(),f=vi(),l=ui(),a=mi(),i=hi(),s=fi(),n=pi(),o=di(),e=to(),E=eo(),b=yn(),Iu.exports=c=function(){function A(_,R,B){var P;_||(_={}),_.writer?d(_.writer)&&(P=_.writer,_.writer=new b(P)):_.writer=new b(_),this.options=_,this.writer=_.writer,this.stringify=new E(_),this.onDataCallback=R||function(){},this.onEndCallback=B||function(){},this.currentNode=null,this.currentLevel=-1,this.openTags={},this.documentStarted=!1,this.documentCompleted=!1,this.root=null}return A.prototype.node=function(_,R,B){var P;if(_==null)throw new Error("Missing node name");if(this.root&&this.currentLevel===-1)throw new Error("Document can only have one root node");return this.openCurrent(),_=_.valueOf(),R==null&&(R={}),R=R.valueOf(),O(R)||(P=[R,B],B=P[0],R=P[1]),this.currentNode=new u(this,_,R),this.currentNode.children=!1,this.currentLevel++,this.openTags[this.currentLevel]=this.currentNode,B!=null&&this.text(B),this},A.prototype.element=function(_,R,B){return this.currentNode&&this.currentNode instanceof a?this.dtdElement.apply(this,arguments):this.node(_,R,B)},A.prototype.attribute=function(_,R){var B,P;if(!this.currentNode||this.currentNode.children)throw new Error("att() can only be used immediately after an ele() call in callback mode");if(_!=null&&(_=_.valueOf()),O(_))for(B in _)!N.call(_,B)||(P=_[B],this.attribute(B,P));else w(R)&&(R=R.apply()),(!this.options.skipNullAttributes||R!=null)&&(this.currentNode.attributes[_]=new e(this,_,R));return this},A.prototype.text=function(_){var R;return this.openCurrent(),R=new m(this,_),this.onData(this.writer.text(R,this.currentLevel+1)),this},A.prototype.cdata=function(_){var R;return this.openCurrent(),R=new t(this,_),this.onData(this.writer.cdata(R,this.currentLevel+1)),this},A.prototype.comment=function(_){var R;return this.openCurrent(),R=new r(this,_),this.onData(this.writer.comment(R,this.currentLevel+1)),this},A.prototype.raw=function(_){var R;return this.openCurrent(),R=new y(this,_),this.onData(this.writer.raw(R,this.currentLevel+1)),this},A.prototype.instruction=function(_,R){var B,P,D,L,F;if(this.openCurrent(),_!=null&&(_=_.valueOf()),R!=null&&(R=R.valueOf()),Array.isArray(_))for(B=0,L=_.length;B=0;)this.up();return this.onEnd()},A.prototype.openCurrent=function(){if(this.currentNode)return this.currentNode.children=!0,this.openNode(this.currentNode)},A.prototype.openNode=function(_){if(!_.isOpen)return!this.root&&this.currentLevel===0&&_ instanceof u&&(this.root=_),this.onData(this.writer.openNode(_,this.currentLevel)),_.isOpen=!0},A.prototype.closeNode=function(_){if(!_.isClosed)return this.onData(this.writer.closeNode(_,this.currentLevel)),_.isClosed=!0},A.prototype.onData=function(_){return this.documentStarted=!0,this.onDataCallback(_)},A.prototype.onEnd=function(){return this.documentCompleted=!0,this.onEndCallback()},A.prototype.ele=function(){return this.element.apply(this,arguments)},A.prototype.nod=function(_,R,B){return this.node(_,R,B)},A.prototype.txt=function(_){return this.text(_)},A.prototype.dat=function(_){return this.cdata(_)},A.prototype.com=function(_){return this.comment(_)},A.prototype.ins=function(_,R){return this.instruction(_,R)},A.prototype.dec=function(_,R,B){return this.declaration(_,R,B)},A.prototype.dtd=function(_,R,B){return this.doctype(_,R,B)},A.prototype.e=function(_,R,B){return this.element(_,R,B)},A.prototype.n=function(_,R,B){return this.node(_,R,B)},A.prototype.t=function(_){return this.text(_)},A.prototype.d=function(_){return this.cdata(_)},A.prototype.c=function(_){return this.comment(_)},A.prototype.r=function(_){return this.raw(_)},A.prototype.i=function(_,R){return this.instruction(_,R)},A.prototype.att=function(){return this.currentNode&&this.currentNode instanceof a?this.attList.apply(this,arguments):this.attribute.apply(this,arguments)},A.prototype.a=function(){return this.currentNode&&this.currentNode instanceof a?this.attList.apply(this,arguments):this.attribute.apply(this,arguments)},A.prototype.ent=function(_,R){return this.entity(_,R)},A.prototype.pent=function(_,R){return this.pEntity(_,R)},A.prototype.not=function(_,R){return this.notation(_,R)},A}()}).call(Au)});var Cu=x((Lu,Mu)=>{(function(){var e,t,r,i,n,s,o,l,a,c,u,f,y,b,E=function(w,O){for(var d in O)m.call(O,d)&&(w[d]=O[d]);function g(){this.constructor=w}return g.prototype=O.prototype,w.prototype=new g,w.__super__=O.prototype,w},m={}.hasOwnProperty;o=ui(),l=mi(),e=li(),t=ci(),a=ai(),u=yi(),y=gi(),c=vi(),r=hi(),i=pi(),n=fi(),s=di(),b=ro(),Mu.exports=f=function(w){E(O,w);function O(d,g){O.__super__.constructor.call(this,g),this.stream=d}return O.prototype.document=function(d){var g,N,A,_,R,B,P,D;for(B=d.children,N=0,_=B.length;N<_;N++)g=B[N],g.isLastRootNode=!1;for(d.children[d.children.length-1].isLastRootNode=!0,P=d.children,D=[],A=0,R=P.length;A"+this.endline(d))},O.prototype.comment=function(d,g){return this.stream.write(this.space(g)+""+this.endline(d))},O.prototype.declaration=function(d,g){return this.stream.write(this.space(g)),this.stream.write('"),this.stream.write(this.endline(d))},O.prototype.docType=function(d,g){var N,A,_,R;if(g||(g=0),this.stream.write(this.space(g)),this.stream.write("0){for(this.stream.write(" ["),this.stream.write(this.endline(d)),R=d.children,A=0,_=R.length;A<_;A++)switch(N=R[A],!1){case!(N instanceof r):this.dtdAttList(N,g+1);break;case!(N instanceof i):this.dtdElement(N,g+1);break;case!(N instanceof n):this.dtdEntity(N,g+1);break;case!(N instanceof s):this.dtdNotation(N,g+1);break;case!(N instanceof e):this.cdata(N,g+1);break;case!(N instanceof t):this.comment(N,g+1);break;case!(N instanceof c):this.processingInstruction(N,g+1);break;default:throw new Error("Unknown DTD node type: "+N.constructor.name)}this.stream.write("]")}return this.stream.write(this.spacebeforeslash+">"),this.stream.write(this.endline(d))},O.prototype.element=function(d,g){var N,A,_,R,B,P,D,L;g||(g=0),L=this.space(g),this.stream.write(L+"<"+d.name),P=d.attributes;for(B in P)!m.call(P,B)||(N=P[B],this.attribute(N));if(d.children.length===0||d.children.every(function(F){return F.value===""}))this.allowEmpty?this.stream.write(">"):this.stream.write(this.spacebeforeslash+"/>");else if(this.pretty&&d.children.length===1&&d.children[0].value!=null)this.stream.write(">"),this.stream.write(d.children[0].value),this.stream.write("");else{for(this.stream.write(">"+this.newline),D=d.children,_=0,R=D.length;_")}return this.stream.write(this.endline(d))},O.prototype.processingInstruction=function(d,g){return this.stream.write(this.space(g)+""+this.endline(d))},O.prototype.raw=function(d,g){return this.stream.write(this.space(g)+d.value+this.endline(d))},O.prototype.text=function(d,g){return this.stream.write(this.space(g)+d.value+this.endline(d))},O.prototype.dtdAttList=function(d,g){return this.stream.write(this.space(g)+""+this.endline(d))},O.prototype.dtdElement=function(d,g){return this.stream.write(this.space(g)+""+this.endline(d))},O.prototype.dtdEntity=function(d,g){return this.stream.write(this.space(g)+""+this.endline(d))},O.prototype.dtdNotation=function(d,g){return this.stream.write(this.space(g)+""+this.endline(d))},O.prototype.endline=function(d){return d.isLastRootNode?"":this.newline},O}(b)}).call(Lu)});var ku=x((Pu,wi)=>{(function(){var e,t,r,i,n,s,o;o=ie(),n=o.assign,s=o.isFunction,e=Ru(),t=xu(),i=yn(),r=Cu(),wi.exports.create=function(l,a,c,u){var f,y;if(l==null)throw new Error("Root element needs a name");return u=n({},a,c,u),f=new e(u),y=f.element(l),u.headless||(f.declaration(u),(u.pubID!=null||u.sysID!=null)&&f.doctype(u)),y},wi.exports.begin=function(l,a,c){var u;return s(l)&&(u=[l,a],a=u[0],c=u[1],l={}),a?new t(l,a,c):new e(l)},wi.exports.stringWriter=function(l){return new i(l)},wi.exports.streamWriter=function(l,a){return new r(l,a)}}).call(Pu)});var Uu=x(Bu=>{var Fu=Gc(),Dg=ku();Bu.build=Tg;function Rg(e){function t(r){return r<10?"0"+r:r}return e.getUTCFullYear()+"-"+t(e.getUTCMonth()+1)+"-"+t(e.getUTCDate())+"T"+t(e.getUTCHours())+":"+t(e.getUTCMinutes())+":"+t(e.getUTCSeconds())+"Z"}var Ag=Object.prototype.toString;function qu(e){var t=Ag.call(e).match(/\[object (.*)\]/);return t&&t[1]}function Tg(e,t){var r={version:"1.0",encoding:"UTF-8"},i={pubid:"-//Apple//DTD PLIST 1.0//EN",sysid:"http://www.apple.com/DTDs/PropertyList-1.0.dtd"},n=Dg.create("plist");return n.dec(r.version,r.encoding,r.standalone),n.dtd(i.pubid,i.sysid),n.att("version","1.0"),io(e,n),t||(t={}),t.pretty=t.pretty!==!1,n.end(t)}function io(e,t){var r,i,n,s=qu(e);if(s!="Undefined")if(Array.isArray(e))for(t=t.ele("array"),i=0;i{var ju=Xc();Object.keys(ju).forEach(function(e){no[e]=ju[e]});var Xu=Uu();Object.keys(Xu).forEach(function(e){no[e]=Xu[e]})});var Wu=x((V1,Gu)=>{var $u=Vl(),gn=sc(),wr=zu(),ve=require("fs");function so(e,t){let r=e[0],i;try{if(r===60||r==="<")i=wr.parse(e.toString());else if(r===98)[i]=$u.parseBuffer(e);else throw t!=null?new Error(`Unable to determine format for '${t}'`):new Error("Unable to determine format for plist aStringOrBuffer")}catch(n){throw new Error(n)}return i}function Ig(e){let t=ve.readFileSync(e);return t.length===0?{}:so(t,e)}function xg(e,t){ve.readFile(e,(r,i)=>{if(r)return t(r);let n;try{n=so(i,e)}catch(s){return t(s)}return t(null,n)})}function Lg(e,t,r){let i=wr.build(t);return ve.writeFileSync(e,i,r)}function Mg(e,t,r,i){arguments.length===3&&typeof r=="function"?ve.writeFile(e,wr.build(t),r):ve.writeFile(e,wr.build(t),r,i)}function Cg(e,t,r){return ve.writeFileSync(e,gn(t),r)}function Pg(e,t,r,i){arguments.length===3&&typeof r=="function"?ve.writeFile(e,gn(t),r):ve.writeFile(e,gn(t),r,i)}function kg(e){return wr.build(e)}Gu.exports={bplistCreator:gn,bplistParser:$u,parse:so,plist:wr,readFile:xg,readFileSync:Ig,stringify:kg,writeBinaryFile:Pg,writeBinaryFileSync:Cg,writeFile:Mg,writeFileSync:Lg}});var Vu=x((Y1,Hu)=>{"use strict";Hu.exports={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]}});var oo=x((Z1,Yu)=>{var Ei=Vu(),Zu={};for(let e of Object.keys(Ei))Zu[Ei[e]]=e;var q={rgb:{channels:3,labels:"rgb"},hsl:{channels:3,labels:"hsl"},hsv:{channels:3,labels:"hsv"},hwb:{channels:3,labels:"hwb"},cmyk:{channels:4,labels:"cmyk"},xyz:{channels:3,labels:"xyz"},lab:{channels:3,labels:"lab"},lch:{channels:3,labels:"lch"},hex:{channels:1,labels:["hex"]},keyword:{channels:1,labels:["keyword"]},ansi16:{channels:1,labels:["ansi16"]},ansi256:{channels:1,labels:["ansi256"]},hcg:{channels:3,labels:["h","c","g"]},apple:{channels:3,labels:["r16","g16","b16"]},gray:{channels:1,labels:["gray"]}};Yu.exports=q;for(let e of Object.keys(q)){if(!("channels"in q[e]))throw new Error("missing channels property: "+e);if(!("labels"in q[e]))throw new Error("missing channel labels property: "+e);if(q[e].labels.length!==q[e].channels)throw new Error("channel and label counts mismatch: "+e);let{channels:t,labels:r}=q[e];delete q[e].channels,delete q[e].labels,Object.defineProperty(q[e],"channels",{value:t}),Object.defineProperty(q[e],"labels",{value:r})}q.rgb.hsl=function(e){let t=e[0]/255,r=e[1]/255,i=e[2]/255,n=Math.min(t,r,i),s=Math.max(t,r,i),o=s-n,l,a;s===n?l=0:t===s?l=(r-i)/o:r===s?l=2+(i-t)/o:i===s&&(l=4+(t-r)/o),l=Math.min(l*60,360),l<0&&(l+=360);let c=(n+s)/2;return s===n?a=0:c<=.5?a=o/(s+n):a=o/(2-s-n),[l,a*100,c*100]};q.rgb.hsv=function(e){let t,r,i,n,s,o=e[0]/255,l=e[1]/255,a=e[2]/255,c=Math.max(o,l,a),u=c-Math.min(o,l,a),f=function(y){return(c-y)/6/u+1/2};return u===0?(n=0,s=0):(s=u/c,t=f(o),r=f(l),i=f(a),o===c?n=i-r:l===c?n=1/3+t-i:a===c&&(n=2/3+r-t),n<0?n+=1:n>1&&(n-=1)),[n*360,s*100,c*100]};q.rgb.hwb=function(e){let t=e[0],r=e[1],i=e[2],n=q.rgb.hsl(e)[0],s=1/255*Math.min(t,Math.min(r,i));return i=1-1/255*Math.max(t,Math.max(r,i)),[n,s*100,i*100]};q.rgb.cmyk=function(e){let t=e[0]/255,r=e[1]/255,i=e[2]/255,n=Math.min(1-t,1-r,1-i),s=(1-t-n)/(1-n)||0,o=(1-r-n)/(1-n)||0,l=(1-i-n)/(1-n)||0;return[s*100,o*100,l*100,n*100]};function Bg(e,t){return(e[0]-t[0])**2+(e[1]-t[1])**2+(e[2]-t[2])**2}q.rgb.keyword=function(e){let t=Zu[e];if(t)return t;let r=Infinity,i;for(let n of Object.keys(Ei)){let s=Ei[n],o=Bg(e,s);o.04045?((t+.055)/1.055)**2.4:t/12.92,r=r>.04045?((r+.055)/1.055)**2.4:r/12.92,i=i>.04045?((i+.055)/1.055)**2.4:i/12.92;let n=t*.4124+r*.3576+i*.1805,s=t*.2126+r*.7152+i*.0722,o=t*.0193+r*.1192+i*.9505;return[n*100,s*100,o*100]};q.rgb.lab=function(e){let t=q.rgb.xyz(e),r=t[0],i=t[1],n=t[2];r/=95.047,i/=100,n/=108.883,r=r>.008856?r**(1/3):7.787*r+16/116,i=i>.008856?i**(1/3):7.787*i+16/116,n=n>.008856?n**(1/3):7.787*n+16/116;let s=116*i-16,o=500*(r-i),l=200*(i-n);return[s,o,l]};q.hsl.rgb=function(e){let t=e[0]/360,r=e[1]/100,i=e[2]/100,n,s,o;if(r===0)return o=i*255,[o,o,o];i<.5?n=i*(1+r):n=i+r-i*r;let l=2*i-n,a=[0,0,0];for(let c=0;c<3;c++)s=t+1/3*-(c-1),s<0&&s++,s>1&&s--,6*s<1?o=l+(n-l)*6*s:2*s<1?o=n:3*s<2?o=l+(n-l)*(2/3-s)*6:o=l,a[c]=o*255;return a};q.hsl.hsv=function(e){let t=e[0],r=e[1]/100,i=e[2]/100,n=r,s=Math.max(i,.01);i*=2,r*=i<=1?i:2-i,n*=s<=1?s:2-s;let o=(i+r)/2,l=i===0?2*n/(s+n):2*r/(i+r);return[t,l*100,o*100]};q.hsv.rgb=function(e){let t=e[0]/60,r=e[1]/100,i=e[2]/100,n=Math.floor(t)%6,s=t-Math.floor(t),o=255*i*(1-r),l=255*i*(1-r*s),a=255*i*(1-r*(1-s));switch(i*=255,n){case 0:return[i,a,o];case 1:return[l,i,o];case 2:return[o,i,a];case 3:return[o,l,i];case 4:return[a,o,i];case 5:return[i,o,l]}};q.hsv.hsl=function(e){let t=e[0],r=e[1]/100,i=e[2]/100,n=Math.max(i,.01),s,o;o=(2-r)*i;let l=(2-r)*n;return s=r*n,s/=l<=1?l:2-l,s=s||0,o/=2,[t,s*100,o*100]};q.hwb.rgb=function(e){let t=e[0]/360,r=e[1]/100,i=e[2]/100,n=r+i,s;n>1&&(r/=n,i/=n);let o=Math.floor(6*t),l=1-i;s=6*t-o,(o&1)!=0&&(s=1-s);let a=r+s*(l-r),c,u,f;switch(o){default:case 6:case 0:c=l,u=a,f=r;break;case 1:c=a,u=l,f=r;break;case 2:c=r,u=l,f=a;break;case 3:c=r,u=a,f=l;break;case 4:c=a,u=r,f=l;break;case 5:c=l,u=r,f=a;break}return[c*255,u*255,f*255]};q.cmyk.rgb=function(e){let t=e[0]/100,r=e[1]/100,i=e[2]/100,n=e[3]/100,s=1-Math.min(1,t*(1-n)+n),o=1-Math.min(1,r*(1-n)+n),l=1-Math.min(1,i*(1-n)+n);return[s*255,o*255,l*255]};q.xyz.rgb=function(e){let t=e[0]/100,r=e[1]/100,i=e[2]/100,n,s,o;return n=t*3.2406+r*-1.5372+i*-.4986,s=t*-.9689+r*1.8758+i*.0415,o=t*.0557+r*-.204+i*1.057,n=n>.0031308?1.055*n**(1/2.4)-.055:n*12.92,s=s>.0031308?1.055*s**(1/2.4)-.055:s*12.92,o=o>.0031308?1.055*o**(1/2.4)-.055:o*12.92,n=Math.min(Math.max(0,n),1),s=Math.min(Math.max(0,s),1),o=Math.min(Math.max(0,o),1),[n*255,s*255,o*255]};q.xyz.lab=function(e){let t=e[0],r=e[1],i=e[2];t/=95.047,r/=100,i/=108.883,t=t>.008856?t**(1/3):7.787*t+16/116,r=r>.008856?r**(1/3):7.787*r+16/116,i=i>.008856?i**(1/3):7.787*i+16/116;let n=116*r-16,s=500*(t-r),o=200*(r-i);return[n,s,o]};q.lab.xyz=function(e){let t=e[0],r=e[1],i=e[2],n,s,o;s=(t+16)/116,n=r/500+s,o=s-i/200;let l=s**3,a=n**3,c=o**3;return s=l>.008856?l:(s-16/116)/7.787,n=a>.008856?a:(n-16/116)/7.787,o=c>.008856?c:(o-16/116)/7.787,n*=95.047,s*=100,o*=108.883,[n,s,o]};q.lab.lch=function(e){let t=e[0],r=e[1],i=e[2],n;n=Math.atan2(i,r)*360/2/Math.PI,n<0&&(n+=360);let o=Math.sqrt(r*r+i*i);return[t,o,n]};q.lch.lab=function(e){let t=e[0],r=e[1],n=e[2]/360*2*Math.PI,s=r*Math.cos(n),o=r*Math.sin(n);return[t,s,o]};q.rgb.ansi16=function(e,t=null){let[r,i,n]=e,s=t===null?q.rgb.hsv(e)[2]:t;if(s=Math.round(s/50),s===0)return 30;let o=30+(Math.round(n/255)<<2|Math.round(i/255)<<1|Math.round(r/255));return s===2&&(o+=60),o};q.hsv.ansi16=function(e){return q.rgb.ansi16(q.hsv.rgb(e),e[2])};q.rgb.ansi256=function(e){let t=e[0],r=e[1],i=e[2];return t===r&&r===i?t<8?16:t>248?231:Math.round((t-8)/247*24)+232:16+36*Math.round(t/255*5)+6*Math.round(r/255*5)+Math.round(i/255*5)};q.ansi16.rgb=function(e){let t=e%10;if(t===0||t===7)return e>50&&(t+=3.5),t=t/10.5*255,[t,t,t];let r=(~~(e>50)+1)*.5,i=(t&1)*r*255,n=(t>>1&1)*r*255,s=(t>>2&1)*r*255;return[i,n,s]};q.ansi256.rgb=function(e){if(e>=232){let s=(e-232)*10+8;return[s,s,s]}e-=16;let t,r=Math.floor(e/36)/5*255,i=Math.floor((t=e%36)/6)/5*255,n=t%6/5*255;return[r,i,n]};q.rgb.hex=function(e){let r=(((Math.round(e[0])&255)<<16)+((Math.round(e[1])&255)<<8)+(Math.round(e[2])&255)).toString(16).toUpperCase();return"000000".substring(r.length)+r};q.hex.rgb=function(e){let t=e.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);if(!t)return[0,0,0];let r=t[0];t[0].length===3&&(r=r.split("").map(l=>l+l).join(""));let i=parseInt(r,16),n=i>>16&255,s=i>>8&255,o=i&255;return[n,s,o]};q.rgb.hcg=function(e){let t=e[0]/255,r=e[1]/255,i=e[2]/255,n=Math.max(Math.max(t,r),i),s=Math.min(Math.min(t,r),i),o=n-s,l,a;return o<1?l=s/(1-o):l=0,o<=0?a=0:n===t?a=(r-i)/o%6:n===r?a=2+(i-t)/o:a=4+(t-r)/o,a/=6,a%=1,[a*360,o*100,l*100]};q.hsl.hcg=function(e){let t=e[1]/100,r=e[2]/100,i=r<.5?2*t*r:2*t*(1-r),n=0;return i<1&&(n=(r-.5*i)/(1-i)),[e[0],i*100,n*100]};q.hsv.hcg=function(e){let t=e[1]/100,r=e[2]/100,i=t*r,n=0;return i<1&&(n=(r-i)/(1-i)),[e[0],i*100,n*100]};q.hcg.rgb=function(e){let t=e[0]/360,r=e[1]/100,i=e[2]/100;if(r===0)return[i*255,i*255,i*255];let n=[0,0,0],s=t%1*6,o=s%1,l=1-o,a=0;switch(Math.floor(s)){case 0:n[0]=1,n[1]=o,n[2]=0;break;case 1:n[0]=l,n[1]=1,n[2]=0;break;case 2:n[0]=0,n[1]=1,n[2]=o;break;case 3:n[0]=0,n[1]=l,n[2]=1;break;case 4:n[0]=o,n[1]=0,n[2]=1;break;default:n[0]=1,n[1]=0,n[2]=l}return a=(1-r)*i,[(r*n[0]+a)*255,(r*n[1]+a)*255,(r*n[2]+a)*255]};q.hcg.hsv=function(e){let t=e[1]/100,r=e[2]/100,i=t+r*(1-t),n=0;return i>0&&(n=t/i),[e[0],n*100,i*100]};q.hcg.hsl=function(e){let t=e[1]/100,i=e[2]/100*(1-t)+.5*t,n=0;return i>0&&i<.5?n=t/(2*i):i>=.5&&i<1&&(n=t/(2*(1-i))),[e[0],n*100,i*100]};q.hcg.hwb=function(e){let t=e[1]/100,r=e[2]/100,i=t+r*(1-t);return[e[0],(i-t)*100,(1-i)*100]};q.hwb.hcg=function(e){let t=e[1]/100,r=e[2]/100,i=1-r,n=i-t,s=0;return n<1&&(s=(i-n)/(1-n)),[e[0],n*100,s*100]};q.apple.rgb=function(e){return[e[0]/65535*255,e[1]/65535*255,e[2]/65535*255]};q.rgb.apple=function(e){return[e[0]/255*65535,e[1]/255*65535,e[2]/255*65535]};q.gray.rgb=function(e){return[e[0]/100*255,e[0]/100*255,e[0]/100*255]};q.gray.hsl=function(e){return[0,0,e[0]]};q.gray.hsv=q.gray.hsl;q.gray.hwb=function(e){return[0,100,e[0]]};q.gray.cmyk=function(e){return[0,0,0,e[0]]};q.gray.lab=function(e){return[e[0],0,0]};q.gray.hex=function(e){let t=Math.round(e[0]/100*255)&255,i=((t<<16)+(t<<8)+t).toString(16).toUpperCase();return"000000".substring(i.length)+i};q.rgb.gray=function(e){return[(e[0]+e[1]+e[2])/3/255*100]}});var Ju=x((K1,Ku)=>{var vn=oo();function Fg(){let e={},t=Object.keys(vn);for(let r=t.length,i=0;i{var ao=oo(),Xg=Ju(),Er={},zg=Object.keys(ao);function Gg(e){let t=function(...r){let i=r[0];return i==null?i:(i.length>1&&(r=i),e(r))};return"conversion"in e&&(t.conversion=e.conversion),t}function $g(e){let t=function(...r){let i=r[0];if(i==null)return i;i.length>1&&(r=i);let n=e(r);if(typeof n=="object")for(let s=n.length,o=0;o{Er[e]={},Object.defineProperty(Er[e],"channels",{value:ao[e].channels}),Object.defineProperty(Er[e],"labels",{value:ao[e].labels});let t=Xg(e);Object.keys(t).forEach(i=>{let n=t[i];Er[e][i]=$g(n),Er[e][i].raw=Gg(n)})});Qu.exports=Er});var oh=x((Q1,eh)=>{"use strict";var rh=(e,t)=>(...r)=>`[${e(...r)+t}m`,ih=(e,t)=>(...r)=>{let i=e(...r);return`[${38+t};5;${i}m`},nh=(e,t)=>(...r)=>{let i=e(...r);return`[${38+t};2;${i[0]};${i[1]};${i[2]}m`},wn=e=>e,sh=(e,t,r)=>[e,t,r],br=(e,t,r)=>{Object.defineProperty(e,t,{get:()=>{let i=r();return Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0}),i},enumerable:!0,configurable:!0})},lo,_r=(e,t,r,i)=>{lo===void 0&&(lo=th());let n=i?10:0,s={};for(let[o,l]of Object.entries(lo)){let a=o==="ansi16"?"ansi":o;o===t?s[a]=e(r,n):typeof l=="object"&&(s[a]=e(l[t],n))}return s};function Wg(){let e=new Map,t={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},color:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],blackBright:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39]},bgColor:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgBlackBright:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}};t.color.gray=t.color.blackBright,t.bgColor.bgGray=t.bgColor.bgBlackBright,t.color.grey=t.color.blackBright,t.bgColor.bgGrey=t.bgColor.bgBlackBright;for(let[r,i]of Object.entries(t)){for(let[n,s]of Object.entries(i))t[n]={open:`[${s[0]}m`,close:`[${s[1]}m`},i[n]=t[n],e.set(s[0],s[1]);Object.defineProperty(t,r,{value:i,enumerable:!1})}return Object.defineProperty(t,"codes",{value:e,enumerable:!1}),t.color.close="",t.bgColor.close="",br(t.color,"ansi",()=>_r(rh,"ansi16",wn,!1)),br(t.color,"ansi256",()=>_r(ih,"ansi256",wn,!1)),br(t.color,"ansi16m",()=>_r(nh,"rgb",sh,!1)),br(t.bgColor,"ansi",()=>_r(rh,"ansi16",wn,!0)),br(t.bgColor,"ansi256",()=>_r(ih,"ansi256",wn,!0)),br(t.bgColor,"ansi16m",()=>_r(nh,"rgb",sh,!0)),t}Object.defineProperty(eh,"exports",{enumerable:!0,get:Wg})});var lh=x((tb,ah)=>{"use strict";ah.exports=(e,t=process.argv)=>{let r=e.startsWith("-")?"":e.length===1?"-":"--",i=t.indexOf(r+e),n=t.indexOf("--");return i!==-1&&(n===-1||i{"use strict";var Hg=require("os"),uh=require("tty"),kt=lh(),{env:ut}=process,we;kt("no-color")||kt("no-colors")||kt("color=false")||kt("color=never")?we=0:(kt("color")||kt("colors")||kt("color=true")||kt("color=always"))&&(we=1);"FORCE_COLOR"in ut&&(ut.FORCE_COLOR==="true"?we=1:ut.FORCE_COLOR==="false"?we=0:we=ut.FORCE_COLOR.length===0?1:Math.min(parseInt(ut.FORCE_COLOR,10),3));function co(e){return e===0?!1:{level:e,hasBasic:!0,has256:e>=2,has16m:e>=3}}function uo(e,t){if(we===0)return 0;if(kt("color=16m")||kt("color=full")||kt("color=truecolor"))return 3;if(kt("color=256"))return 2;if(e&&!t&&we===void 0)return 0;let r=we||0;if(ut.TERM==="dumb")return r;if(process.platform==="win32"){let i=Hg.release().split(".");return Number(i[0])>=10&&Number(i[2])>=10586?Number(i[2])>=14931?3:2:1}if("CI"in ut)return["TRAVIS","CIRCLECI","APPVEYOR","GITLAB_CI","GITHUB_ACTIONS","BUILDKITE"].some(i=>i in ut)||ut.CI_NAME==="codeship"?1:r;if("TEAMCITY_VERSION"in ut)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(ut.TEAMCITY_VERSION)?1:0;if(ut.COLORTERM==="truecolor")return 3;if("TERM_PROGRAM"in ut){let i=parseInt((ut.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(ut.TERM_PROGRAM){case"iTerm.app":return i>=3?3:2;case"Apple_Terminal":return 2}}return/-256(color)?$/i.test(ut.TERM)?2:/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(ut.TERM)||"COLORTERM"in ut?1:r}function Vg(e){let t=uo(e,e&&e.isTTY);return co(t)}ch.exports={supportsColor:Vg,stdout:co(uo(!0,uh.isatty(1))),stderr:co(uo(!0,uh.isatty(2)))}});var ph=x((rb,fh)=>{"use strict";var Yg=(e,t,r)=>{let i=e.indexOf(t);if(i===-1)return e;let n=t.length,s=0,o="";do o+=e.substr(s,i-s)+t+r,s=i+n,i=e.indexOf(t,s);while(i!==-1);return o+=e.substr(s),o},Zg=(e,t,r,i)=>{let n=0,s="";do{let o=e[i-1]==="\r";s+=e.substr(n,(o?i-1:i)-n)+t+(o?`\r +`,this.offset="offset"in i?i.offset:0,this.dontprettytextnodes="dontprettytextnodes"in i?i.dontprettytextnodes:0):(this.indent="",this.newline="",this.offset=0,this.dontprettytextnodes=0),this.spacebeforeslash="spacebeforeslash"in i?i.spacebeforeslash:"",this.spacebeforeslash===!0&&(this.spacebeforeslash=" "),this.newlinedefault=this.newline,this.prettydefault=this.pretty,s=i.writer||{};for(n in s)!t.call(s,n)||(o=s[n],this[n]=o);return this},r.prototype.space=function(i){var n;return this.pretty?(n=(i||0)+this.offset+1,n>0?new Array(n).join(this.indent):""):""},r}()}).call(_u)});var yn=x((Ou,Nu)=>{(function(){var e,t,r,i,n,s,o,l,a,c,u,f,y,b,E=function(w,O){for(var d in O)m.call(O,d)&&(w[d]=O[d]);function g(){this.constructor=w}return g.prototype=O.prototype,w.prototype=new g,w.__super__=O.prototype,w},m={}.hasOwnProperty;o=ui(),l=mi(),e=li(),t=ci(),a=ai(),u=yi(),y=gi(),c=vi(),r=hi(),i=pi(),n=fi(),s=di(),b=io(),Nu.exports=f=function(w){E(O,w);function O(d){O.__super__.constructor.call(this,d)}return O.prototype.document=function(d){var g,N,A,_,R;for(this.textispresent=!1,_="",R=d.children,N=0,A=R.length;N"+this.newline},O.prototype.comment=function(d,g){return this.space(g)+""+this.newline},O.prototype.declaration=function(d,g){var N;return N=this.space(g),N+='",N+=this.newline,N},O.prototype.docType=function(d,g){var N,A,_,R,B;if(g||(g=0),R=this.space(g),R+="0){for(R+=" [",R+=this.newline,B=d.children,A=0,_=B.length;A<_;A++)N=B[A],R+=function(){switch(!1){case!(N instanceof r):return this.dtdAttList(N,g+1);case!(N instanceof i):return this.dtdElement(N,g+1);case!(N instanceof n):return this.dtdEntity(N,g+1);case!(N instanceof s):return this.dtdNotation(N,g+1);case!(N instanceof e):return this.cdata(N,g+1);case!(N instanceof t):return this.comment(N,g+1);case!(N instanceof c):return this.processingInstruction(N,g+1);default:throw new Error("Unknown DTD node type: "+N.constructor.name)}}.call(this);R+="]"}return R+=this.spacebeforeslash+">",R+=this.newline,R},O.prototype.element=function(d,g){var N,A,_,R,B,P,D,L,F,U,Y,$,G;g||(g=0),G=!1,this.textispresent?(this.newline="",this.pretty=!1):(this.newline=this.newlinedefault,this.pretty=this.prettydefault),$=this.space(g),L="",L+=$+"<"+d.name,F=d.attributes;for(D in F)!m.call(F,D)||(N=F[D],L+=this.attribute(N));if(d.children.length===0||d.children.every(function(it){return it.value===""}))this.allowEmpty?L+=">"+this.newline:L+=this.spacebeforeslash+"/>"+this.newline;else if(this.pretty&&d.children.length===1&&d.children[0].value!=null)L+=">",L+=d.children[0].value,L+=""+this.newline;else{if(this.dontprettytextnodes){for(U=d.children,_=0,B=U.length;_"+this.newline,Y=d.children,R=0,P=Y.length;R"+this.newline}return L},O.prototype.processingInstruction=function(d,g){var N;return N=this.space(g)+""+this.newline,N},O.prototype.raw=function(d,g){return this.space(g)+d.value+this.newline},O.prototype.text=function(d,g){return this.space(g)+d.value+this.newline},O.prototype.dtdAttList=function(d,g){var N;return N=this.space(g)+""+this.newline,N},O.prototype.dtdElement=function(d,g){return this.space(g)+""+this.newline},O.prototype.dtdEntity=function(d,g){var N;return N=this.space(g)+""+this.newline,N},O.prototype.dtdNotation=function(d,g){var N;return N=this.space(g)+""+this.newline,N},O.prototype.openNode=function(d,g){var N,A,_,R;if(g||(g=0),d instanceof a){_=this.space(g)+"<"+d.name,R=d.attributes;for(A in R)!m.call(R,A)||(N=R[A],_+=this.attribute(N));return _+=(d.children?">":"/>")+this.newline,_}else return _=this.space(g)+"")+this.newline,_},O.prototype.closeNode=function(d,g){switch(g||(g=0),!1){case!(d instanceof a):return this.space(g)+""+this.newline;case!(d instanceof l):return this.space(g)+"]>"+this.newline}},O}(b)}).call(Ou)});var Ru=x((Du,Tu)=>{(function(){var e,t,r,i,n,s=function(l,a){for(var c in a)o.call(a,c)&&(l[c]=a[c]);function u(){this.constructor=l}return u.prototype=a.prototype,l.prototype=new u,l.__super__=a.prototype,l},o={}.hasOwnProperty;n=ie().isPlainObject,t=Ot(),i=ro(),r=yn(),Tu.exports=e=function(l){s(a,l);function a(c){a.__super__.constructor.call(this,null),c||(c={}),c.writer||(c.writer=new r),this.options=c,this.stringify=new i(c),this.isDocument=!0}return a.prototype.end=function(c){var u;return c?n(c)&&(u=c,c=this.options.writer.set(u)):c=this.options.writer,c.document(this)},a.prototype.toString=function(c){return this.options.writer.set(c).document(this)},a}(t)}).call(Du)});var xu=x((Au,Iu)=>{(function(){var e,t,r,i,n,s,o,l,a,c,u,f,y,b,E,m,w,O,d,g,N={}.hasOwnProperty;g=ie(),O=g.isObject,w=g.isFunction,d=g.isPlainObject,u=ai(),t=li(),r=ci(),y=yi(),m=gi(),f=vi(),l=ui(),a=mi(),i=hi(),s=fi(),n=pi(),o=di(),e=eo(),E=ro(),b=yn(),Iu.exports=c=function(){function A(_,R,B){var P;_||(_={}),_.writer?d(_.writer)&&(P=_.writer,_.writer=new b(P)):_.writer=new b(_),this.options=_,this.writer=_.writer,this.stringify=new E(_),this.onDataCallback=R||function(){},this.onEndCallback=B||function(){},this.currentNode=null,this.currentLevel=-1,this.openTags={},this.documentStarted=!1,this.documentCompleted=!1,this.root=null}return A.prototype.node=function(_,R,B){var P;if(_==null)throw new Error("Missing node name");if(this.root&&this.currentLevel===-1)throw new Error("Document can only have one root node");return this.openCurrent(),_=_.valueOf(),R==null&&(R={}),R=R.valueOf(),O(R)||(P=[R,B],B=P[0],R=P[1]),this.currentNode=new u(this,_,R),this.currentNode.children=!1,this.currentLevel++,this.openTags[this.currentLevel]=this.currentNode,B!=null&&this.text(B),this},A.prototype.element=function(_,R,B){return this.currentNode&&this.currentNode instanceof a?this.dtdElement.apply(this,arguments):this.node(_,R,B)},A.prototype.attribute=function(_,R){var B,P;if(!this.currentNode||this.currentNode.children)throw new Error("att() can only be used immediately after an ele() call in callback mode");if(_!=null&&(_=_.valueOf()),O(_))for(B in _)!N.call(_,B)||(P=_[B],this.attribute(B,P));else w(R)&&(R=R.apply()),(!this.options.skipNullAttributes||R!=null)&&(this.currentNode.attributes[_]=new e(this,_,R));return this},A.prototype.text=function(_){var R;return this.openCurrent(),R=new m(this,_),this.onData(this.writer.text(R,this.currentLevel+1)),this},A.prototype.cdata=function(_){var R;return this.openCurrent(),R=new t(this,_),this.onData(this.writer.cdata(R,this.currentLevel+1)),this},A.prototype.comment=function(_){var R;return this.openCurrent(),R=new r(this,_),this.onData(this.writer.comment(R,this.currentLevel+1)),this},A.prototype.raw=function(_){var R;return this.openCurrent(),R=new y(this,_),this.onData(this.writer.raw(R,this.currentLevel+1)),this},A.prototype.instruction=function(_,R){var B,P,D,L,F;if(this.openCurrent(),_!=null&&(_=_.valueOf()),R!=null&&(R=R.valueOf()),Array.isArray(_))for(B=0,L=_.length;B=0;)this.up();return this.onEnd()},A.prototype.openCurrent=function(){if(this.currentNode)return this.currentNode.children=!0,this.openNode(this.currentNode)},A.prototype.openNode=function(_){if(!_.isOpen)return!this.root&&this.currentLevel===0&&_ instanceof u&&(this.root=_),this.onData(this.writer.openNode(_,this.currentLevel)),_.isOpen=!0},A.prototype.closeNode=function(_){if(!_.isClosed)return this.onData(this.writer.closeNode(_,this.currentLevel)),_.isClosed=!0},A.prototype.onData=function(_){return this.documentStarted=!0,this.onDataCallback(_)},A.prototype.onEnd=function(){return this.documentCompleted=!0,this.onEndCallback()},A.prototype.ele=function(){return this.element.apply(this,arguments)},A.prototype.nod=function(_,R,B){return this.node(_,R,B)},A.prototype.txt=function(_){return this.text(_)},A.prototype.dat=function(_){return this.cdata(_)},A.prototype.com=function(_){return this.comment(_)},A.prototype.ins=function(_,R){return this.instruction(_,R)},A.prototype.dec=function(_,R,B){return this.declaration(_,R,B)},A.prototype.dtd=function(_,R,B){return this.doctype(_,R,B)},A.prototype.e=function(_,R,B){return this.element(_,R,B)},A.prototype.n=function(_,R,B){return this.node(_,R,B)},A.prototype.t=function(_){return this.text(_)},A.prototype.d=function(_){return this.cdata(_)},A.prototype.c=function(_){return this.comment(_)},A.prototype.r=function(_){return this.raw(_)},A.prototype.i=function(_,R){return this.instruction(_,R)},A.prototype.att=function(){return this.currentNode&&this.currentNode instanceof a?this.attList.apply(this,arguments):this.attribute.apply(this,arguments)},A.prototype.a=function(){return this.currentNode&&this.currentNode instanceof a?this.attList.apply(this,arguments):this.attribute.apply(this,arguments)},A.prototype.ent=function(_,R){return this.entity(_,R)},A.prototype.pent=function(_,R){return this.pEntity(_,R)},A.prototype.not=function(_,R){return this.notation(_,R)},A}()}).call(Au)});var Cu=x((Lu,Mu)=>{(function(){var e,t,r,i,n,s,o,l,a,c,u,f,y,b,E=function(w,O){for(var d in O)m.call(O,d)&&(w[d]=O[d]);function g(){this.constructor=w}return g.prototype=O.prototype,w.prototype=new g,w.__super__=O.prototype,w},m={}.hasOwnProperty;o=ui(),l=mi(),e=li(),t=ci(),a=ai(),u=yi(),y=gi(),c=vi(),r=hi(),i=pi(),n=fi(),s=di(),b=io(),Mu.exports=f=function(w){E(O,w);function O(d,g){O.__super__.constructor.call(this,g),this.stream=d}return O.prototype.document=function(d){var g,N,A,_,R,B,P,D;for(B=d.children,N=0,_=B.length;N<_;N++)g=B[N],g.isLastRootNode=!1;for(d.children[d.children.length-1].isLastRootNode=!0,P=d.children,D=[],A=0,R=P.length;A"+this.endline(d))},O.prototype.comment=function(d,g){return this.stream.write(this.space(g)+""+this.endline(d))},O.prototype.declaration=function(d,g){return this.stream.write(this.space(g)),this.stream.write('"),this.stream.write(this.endline(d))},O.prototype.docType=function(d,g){var N,A,_,R;if(g||(g=0),this.stream.write(this.space(g)),this.stream.write("0){for(this.stream.write(" ["),this.stream.write(this.endline(d)),R=d.children,A=0,_=R.length;A<_;A++)switch(N=R[A],!1){case!(N instanceof r):this.dtdAttList(N,g+1);break;case!(N instanceof i):this.dtdElement(N,g+1);break;case!(N instanceof n):this.dtdEntity(N,g+1);break;case!(N instanceof s):this.dtdNotation(N,g+1);break;case!(N instanceof e):this.cdata(N,g+1);break;case!(N instanceof t):this.comment(N,g+1);break;case!(N instanceof c):this.processingInstruction(N,g+1);break;default:throw new Error("Unknown DTD node type: "+N.constructor.name)}this.stream.write("]")}return this.stream.write(this.spacebeforeslash+">"),this.stream.write(this.endline(d))},O.prototype.element=function(d,g){var N,A,_,R,B,P,D,L;g||(g=0),L=this.space(g),this.stream.write(L+"<"+d.name),P=d.attributes;for(B in P)!m.call(P,B)||(N=P[B],this.attribute(N));if(d.children.length===0||d.children.every(function(F){return F.value===""}))this.allowEmpty?this.stream.write(">"):this.stream.write(this.spacebeforeslash+"/>");else if(this.pretty&&d.children.length===1&&d.children[0].value!=null)this.stream.write(">"),this.stream.write(d.children[0].value),this.stream.write("");else{for(this.stream.write(">"+this.newline),D=d.children,_=0,R=D.length;_")}return this.stream.write(this.endline(d))},O.prototype.processingInstruction=function(d,g){return this.stream.write(this.space(g)+""+this.endline(d))},O.prototype.raw=function(d,g){return this.stream.write(this.space(g)+d.value+this.endline(d))},O.prototype.text=function(d,g){return this.stream.write(this.space(g)+d.value+this.endline(d))},O.prototype.dtdAttList=function(d,g){return this.stream.write(this.space(g)+""+this.endline(d))},O.prototype.dtdElement=function(d,g){return this.stream.write(this.space(g)+""+this.endline(d))},O.prototype.dtdEntity=function(d,g){return this.stream.write(this.space(g)+""+this.endline(d))},O.prototype.dtdNotation=function(d,g){return this.stream.write(this.space(g)+""+this.endline(d))},O.prototype.endline=function(d){return d.isLastRootNode?"":this.newline},O}(b)}).call(Lu)});var ku=x((Pu,wi)=>{(function(){var e,t,r,i,n,s,o;o=ie(),n=o.assign,s=o.isFunction,e=Ru(),t=xu(),i=yn(),r=Cu(),wi.exports.create=function(l,a,c,u){var f,y;if(l==null)throw new Error("Root element needs a name");return u=n({},a,c,u),f=new e(u),y=f.element(l),u.headless||(f.declaration(u),(u.pubID!=null||u.sysID!=null)&&f.doctype(u)),y},wi.exports.begin=function(l,a,c){var u;return s(l)&&(u=[l,a],a=u[0],c=u[1],l={}),a?new t(l,a,c):new e(l)},wi.exports.stringWriter=function(l){return new i(l)},wi.exports.streamWriter=function(l,a){return new r(l,a)}}).call(Pu)});var Uu=x(Bu=>{var Fu=Gc(),Tg=ku();Bu.build=Rg;function Ag(e){function t(r){return r<10?"0"+r:r}return e.getUTCFullYear()+"-"+t(e.getUTCMonth()+1)+"-"+t(e.getUTCDate())+"T"+t(e.getUTCHours())+":"+t(e.getUTCMinutes())+":"+t(e.getUTCSeconds())+"Z"}var Ig=Object.prototype.toString;function qu(e){var t=Ig.call(e).match(/\[object (.*)\]/);return t&&t[1]}function Rg(e,t){var r={version:"1.0",encoding:"UTF-8"},i={pubid:"-//Apple//DTD PLIST 1.0//EN",sysid:"http://www.apple.com/DTDs/PropertyList-1.0.dtd"},n=Tg.create("plist");return n.dec(r.version,r.encoding,r.standalone),n.dtd(i.pubid,i.sysid),n.att("version","1.0"),no(e,n),t||(t={}),t.pretty=t.pretty!==!1,n.end(t)}function no(e,t){var r,i,n,s=qu(e);if(s!="Undefined")if(Array.isArray(e))for(t=t.ele("array"),i=0;i{var ju=Xc();Object.keys(ju).forEach(function(e){so[e]=ju[e]});var Xu=Uu();Object.keys(Xu).forEach(function(e){so[e]=Xu[e]})});var Wu=x((Y1,Gu)=>{var $u=Vl(),gn=sc(),wr=zu(),ve=require("fs");function oo(e,t){let r=e[0],i;try{if(r===60||r==="<")i=wr.parse(e.toString());else if(r===98)[i]=$u.parseBuffer(e);else throw t!=null?new Error(`Unable to determine format for '${t}'`):new Error("Unable to determine format for plist aStringOrBuffer")}catch(n){throw new Error(n)}return i}function xg(e){let t=ve.readFileSync(e);return t.length===0?{}:oo(t,e)}function Lg(e,t){ve.readFile(e,(r,i)=>{if(r)return t(r);let n;try{n=oo(i,e)}catch(s){return t(s)}return t(null,n)})}function Mg(e,t,r){let i=wr.build(t);return ve.writeFileSync(e,i,r)}function Cg(e,t,r,i){arguments.length===3&&typeof r=="function"?ve.writeFile(e,wr.build(t),r):ve.writeFile(e,wr.build(t),r,i)}function Pg(e,t,r){return ve.writeFileSync(e,gn(t),r)}function kg(e,t,r,i){arguments.length===3&&typeof r=="function"?ve.writeFile(e,gn(t),r):ve.writeFile(e,gn(t),r,i)}function Bg(e){return wr.build(e)}Gu.exports={bplistCreator:gn,bplistParser:$u,parse:oo,plist:wr,readFile:Lg,readFileSync:xg,stringify:Bg,writeBinaryFile:kg,writeBinaryFileSync:Pg,writeFile:Cg,writeFileSync:Mg}});var Vu=x((Z1,Hu)=>{"use strict";Hu.exports={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]}});var ao=x((K1,Yu)=>{var Ei=Vu(),Zu={};for(let e of Object.keys(Ei))Zu[Ei[e]]=e;var q={rgb:{channels:3,labels:"rgb"},hsl:{channels:3,labels:"hsl"},hsv:{channels:3,labels:"hsv"},hwb:{channels:3,labels:"hwb"},cmyk:{channels:4,labels:"cmyk"},xyz:{channels:3,labels:"xyz"},lab:{channels:3,labels:"lab"},lch:{channels:3,labels:"lch"},hex:{channels:1,labels:["hex"]},keyword:{channels:1,labels:["keyword"]},ansi16:{channels:1,labels:["ansi16"]},ansi256:{channels:1,labels:["ansi256"]},hcg:{channels:3,labels:["h","c","g"]},apple:{channels:3,labels:["r16","g16","b16"]},gray:{channels:1,labels:["gray"]}};Yu.exports=q;for(let e of Object.keys(q)){if(!("channels"in q[e]))throw new Error("missing channels property: "+e);if(!("labels"in q[e]))throw new Error("missing channel labels property: "+e);if(q[e].labels.length!==q[e].channels)throw new Error("channel and label counts mismatch: "+e);let{channels:t,labels:r}=q[e];delete q[e].channels,delete q[e].labels,Object.defineProperty(q[e],"channels",{value:t}),Object.defineProperty(q[e],"labels",{value:r})}q.rgb.hsl=function(e){let t=e[0]/255,r=e[1]/255,i=e[2]/255,n=Math.min(t,r,i),s=Math.max(t,r,i),o=s-n,l,a;s===n?l=0:t===s?l=(r-i)/o:r===s?l=2+(i-t)/o:i===s&&(l=4+(t-r)/o),l=Math.min(l*60,360),l<0&&(l+=360);let c=(n+s)/2;return s===n?a=0:c<=.5?a=o/(s+n):a=o/(2-s-n),[l,a*100,c*100]};q.rgb.hsv=function(e){let t,r,i,n,s,o=e[0]/255,l=e[1]/255,a=e[2]/255,c=Math.max(o,l,a),u=c-Math.min(o,l,a),f=function(y){return(c-y)/6/u+1/2};return u===0?(n=0,s=0):(s=u/c,t=f(o),r=f(l),i=f(a),o===c?n=i-r:l===c?n=1/3+t-i:a===c&&(n=2/3+r-t),n<0?n+=1:n>1&&(n-=1)),[n*360,s*100,c*100]};q.rgb.hwb=function(e){let t=e[0],r=e[1],i=e[2],n=q.rgb.hsl(e)[0],s=1/255*Math.min(t,Math.min(r,i));return i=1-1/255*Math.max(t,Math.max(r,i)),[n,s*100,i*100]};q.rgb.cmyk=function(e){let t=e[0]/255,r=e[1]/255,i=e[2]/255,n=Math.min(1-t,1-r,1-i),s=(1-t-n)/(1-n)||0,o=(1-r-n)/(1-n)||0,l=(1-i-n)/(1-n)||0;return[s*100,o*100,l*100,n*100]};function Fg(e,t){return(e[0]-t[0])**2+(e[1]-t[1])**2+(e[2]-t[2])**2}q.rgb.keyword=function(e){let t=Zu[e];if(t)return t;let r=Infinity,i;for(let n of Object.keys(Ei)){let s=Ei[n],o=Fg(e,s);o.04045?((t+.055)/1.055)**2.4:t/12.92,r=r>.04045?((r+.055)/1.055)**2.4:r/12.92,i=i>.04045?((i+.055)/1.055)**2.4:i/12.92;let n=t*.4124+r*.3576+i*.1805,s=t*.2126+r*.7152+i*.0722,o=t*.0193+r*.1192+i*.9505;return[n*100,s*100,o*100]};q.rgb.lab=function(e){let t=q.rgb.xyz(e),r=t[0],i=t[1],n=t[2];r/=95.047,i/=100,n/=108.883,r=r>.008856?r**(1/3):7.787*r+16/116,i=i>.008856?i**(1/3):7.787*i+16/116,n=n>.008856?n**(1/3):7.787*n+16/116;let s=116*i-16,o=500*(r-i),l=200*(i-n);return[s,o,l]};q.hsl.rgb=function(e){let t=e[0]/360,r=e[1]/100,i=e[2]/100,n,s,o;if(r===0)return o=i*255,[o,o,o];i<.5?n=i*(1+r):n=i+r-i*r;let l=2*i-n,a=[0,0,0];for(let c=0;c<3;c++)s=t+1/3*-(c-1),s<0&&s++,s>1&&s--,6*s<1?o=l+(n-l)*6*s:2*s<1?o=n:3*s<2?o=l+(n-l)*(2/3-s)*6:o=l,a[c]=o*255;return a};q.hsl.hsv=function(e){let t=e[0],r=e[1]/100,i=e[2]/100,n=r,s=Math.max(i,.01);i*=2,r*=i<=1?i:2-i,n*=s<=1?s:2-s;let o=(i+r)/2,l=i===0?2*n/(s+n):2*r/(i+r);return[t,l*100,o*100]};q.hsv.rgb=function(e){let t=e[0]/60,r=e[1]/100,i=e[2]/100,n=Math.floor(t)%6,s=t-Math.floor(t),o=255*i*(1-r),l=255*i*(1-r*s),a=255*i*(1-r*(1-s));switch(i*=255,n){case 0:return[i,a,o];case 1:return[l,i,o];case 2:return[o,i,a];case 3:return[o,l,i];case 4:return[a,o,i];case 5:return[i,o,l]}};q.hsv.hsl=function(e){let t=e[0],r=e[1]/100,i=e[2]/100,n=Math.max(i,.01),s,o;o=(2-r)*i;let l=(2-r)*n;return s=r*n,s/=l<=1?l:2-l,s=s||0,o/=2,[t,s*100,o*100]};q.hwb.rgb=function(e){let t=e[0]/360,r=e[1]/100,i=e[2]/100,n=r+i,s;n>1&&(r/=n,i/=n);let o=Math.floor(6*t),l=1-i;s=6*t-o,(o&1)!=0&&(s=1-s);let a=r+s*(l-r),c,u,f;switch(o){default:case 6:case 0:c=l,u=a,f=r;break;case 1:c=a,u=l,f=r;break;case 2:c=r,u=l,f=a;break;case 3:c=r,u=a,f=l;break;case 4:c=a,u=r,f=l;break;case 5:c=l,u=r,f=a;break}return[c*255,u*255,f*255]};q.cmyk.rgb=function(e){let t=e[0]/100,r=e[1]/100,i=e[2]/100,n=e[3]/100,s=1-Math.min(1,t*(1-n)+n),o=1-Math.min(1,r*(1-n)+n),l=1-Math.min(1,i*(1-n)+n);return[s*255,o*255,l*255]};q.xyz.rgb=function(e){let t=e[0]/100,r=e[1]/100,i=e[2]/100,n,s,o;return n=t*3.2406+r*-1.5372+i*-.4986,s=t*-.9689+r*1.8758+i*.0415,o=t*.0557+r*-.204+i*1.057,n=n>.0031308?1.055*n**(1/2.4)-.055:n*12.92,s=s>.0031308?1.055*s**(1/2.4)-.055:s*12.92,o=o>.0031308?1.055*o**(1/2.4)-.055:o*12.92,n=Math.min(Math.max(0,n),1),s=Math.min(Math.max(0,s),1),o=Math.min(Math.max(0,o),1),[n*255,s*255,o*255]};q.xyz.lab=function(e){let t=e[0],r=e[1],i=e[2];t/=95.047,r/=100,i/=108.883,t=t>.008856?t**(1/3):7.787*t+16/116,r=r>.008856?r**(1/3):7.787*r+16/116,i=i>.008856?i**(1/3):7.787*i+16/116;let n=116*r-16,s=500*(t-r),o=200*(r-i);return[n,s,o]};q.lab.xyz=function(e){let t=e[0],r=e[1],i=e[2],n,s,o;s=(t+16)/116,n=r/500+s,o=s-i/200;let l=s**3,a=n**3,c=o**3;return s=l>.008856?l:(s-16/116)/7.787,n=a>.008856?a:(n-16/116)/7.787,o=c>.008856?c:(o-16/116)/7.787,n*=95.047,s*=100,o*=108.883,[n,s,o]};q.lab.lch=function(e){let t=e[0],r=e[1],i=e[2],n;n=Math.atan2(i,r)*360/2/Math.PI,n<0&&(n+=360);let o=Math.sqrt(r*r+i*i);return[t,o,n]};q.lch.lab=function(e){let t=e[0],r=e[1],n=e[2]/360*2*Math.PI,s=r*Math.cos(n),o=r*Math.sin(n);return[t,s,o]};q.rgb.ansi16=function(e,t=null){let[r,i,n]=e,s=t===null?q.rgb.hsv(e)[2]:t;if(s=Math.round(s/50),s===0)return 30;let o=30+(Math.round(n/255)<<2|Math.round(i/255)<<1|Math.round(r/255));return s===2&&(o+=60),o};q.hsv.ansi16=function(e){return q.rgb.ansi16(q.hsv.rgb(e),e[2])};q.rgb.ansi256=function(e){let t=e[0],r=e[1],i=e[2];return t===r&&r===i?t<8?16:t>248?231:Math.round((t-8)/247*24)+232:16+36*Math.round(t/255*5)+6*Math.round(r/255*5)+Math.round(i/255*5)};q.ansi16.rgb=function(e){let t=e%10;if(t===0||t===7)return e>50&&(t+=3.5),t=t/10.5*255,[t,t,t];let r=(~~(e>50)+1)*.5,i=(t&1)*r*255,n=(t>>1&1)*r*255,s=(t>>2&1)*r*255;return[i,n,s]};q.ansi256.rgb=function(e){if(e>=232){let s=(e-232)*10+8;return[s,s,s]}e-=16;let t,r=Math.floor(e/36)/5*255,i=Math.floor((t=e%36)/6)/5*255,n=t%6/5*255;return[r,i,n]};q.rgb.hex=function(e){let r=(((Math.round(e[0])&255)<<16)+((Math.round(e[1])&255)<<8)+(Math.round(e[2])&255)).toString(16).toUpperCase();return"000000".substring(r.length)+r};q.hex.rgb=function(e){let t=e.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);if(!t)return[0,0,0];let r=t[0];t[0].length===3&&(r=r.split("").map(l=>l+l).join(""));let i=parseInt(r,16),n=i>>16&255,s=i>>8&255,o=i&255;return[n,s,o]};q.rgb.hcg=function(e){let t=e[0]/255,r=e[1]/255,i=e[2]/255,n=Math.max(Math.max(t,r),i),s=Math.min(Math.min(t,r),i),o=n-s,l,a;return o<1?l=s/(1-o):l=0,o<=0?a=0:n===t?a=(r-i)/o%6:n===r?a=2+(i-t)/o:a=4+(t-r)/o,a/=6,a%=1,[a*360,o*100,l*100]};q.hsl.hcg=function(e){let t=e[1]/100,r=e[2]/100,i=r<.5?2*t*r:2*t*(1-r),n=0;return i<1&&(n=(r-.5*i)/(1-i)),[e[0],i*100,n*100]};q.hsv.hcg=function(e){let t=e[1]/100,r=e[2]/100,i=t*r,n=0;return i<1&&(n=(r-i)/(1-i)),[e[0],i*100,n*100]};q.hcg.rgb=function(e){let t=e[0]/360,r=e[1]/100,i=e[2]/100;if(r===0)return[i*255,i*255,i*255];let n=[0,0,0],s=t%1*6,o=s%1,l=1-o,a=0;switch(Math.floor(s)){case 0:n[0]=1,n[1]=o,n[2]=0;break;case 1:n[0]=l,n[1]=1,n[2]=0;break;case 2:n[0]=0,n[1]=1,n[2]=o;break;case 3:n[0]=0,n[1]=l,n[2]=1;break;case 4:n[0]=o,n[1]=0,n[2]=1;break;default:n[0]=1,n[1]=0,n[2]=l}return a=(1-r)*i,[(r*n[0]+a)*255,(r*n[1]+a)*255,(r*n[2]+a)*255]};q.hcg.hsv=function(e){let t=e[1]/100,r=e[2]/100,i=t+r*(1-t),n=0;return i>0&&(n=t/i),[e[0],n*100,i*100]};q.hcg.hsl=function(e){let t=e[1]/100,i=e[2]/100*(1-t)+.5*t,n=0;return i>0&&i<.5?n=t/(2*i):i>=.5&&i<1&&(n=t/(2*(1-i))),[e[0],n*100,i*100]};q.hcg.hwb=function(e){let t=e[1]/100,r=e[2]/100,i=t+r*(1-t);return[e[0],(i-t)*100,(1-i)*100]};q.hwb.hcg=function(e){let t=e[1]/100,r=e[2]/100,i=1-r,n=i-t,s=0;return n<1&&(s=(i-n)/(1-n)),[e[0],n*100,s*100]};q.apple.rgb=function(e){return[e[0]/65535*255,e[1]/65535*255,e[2]/65535*255]};q.rgb.apple=function(e){return[e[0]/255*65535,e[1]/255*65535,e[2]/255*65535]};q.gray.rgb=function(e){return[e[0]/100*255,e[0]/100*255,e[0]/100*255]};q.gray.hsl=function(e){return[0,0,e[0]]};q.gray.hsv=q.gray.hsl;q.gray.hwb=function(e){return[0,100,e[0]]};q.gray.cmyk=function(e){return[0,0,0,e[0]]};q.gray.lab=function(e){return[e[0],0,0]};q.gray.hex=function(e){let t=Math.round(e[0]/100*255)&255,i=((t<<16)+(t<<8)+t).toString(16).toUpperCase();return"000000".substring(i.length)+i};q.rgb.gray=function(e){return[(e[0]+e[1]+e[2])/3/255*100]}});var Ju=x((J1,Ku)=>{var vn=ao();function qg(){let e={},t=Object.keys(vn);for(let r=t.length,i=0;i{var lo=ao(),zg=Ju(),Er={},Gg=Object.keys(lo);function $g(e){let t=function(...r){let i=r[0];return i==null?i:(i.length>1&&(r=i),e(r))};return"conversion"in e&&(t.conversion=e.conversion),t}function Wg(e){let t=function(...r){let i=r[0];if(i==null)return i;i.length>1&&(r=i);let n=e(r);if(typeof n=="object")for(let s=n.length,o=0;o{Er[e]={},Object.defineProperty(Er[e],"channels",{value:lo[e].channels}),Object.defineProperty(Er[e],"labels",{value:lo[e].labels});let t=zg(e);Object.keys(t).forEach(i=>{let n=t[i];Er[e][i]=Wg(n),Er[e][i].raw=$g(n)})});Qu.exports=Er});var oh=x((tb,eh)=>{"use strict";var rh=(e,t)=>(...r)=>`[${e(...r)+t}m`,ih=(e,t)=>(...r)=>{let i=e(...r);return`[${38+t};5;${i}m`},nh=(e,t)=>(...r)=>{let i=e(...r);return`[${38+t};2;${i[0]};${i[1]};${i[2]}m`},wn=e=>e,sh=(e,t,r)=>[e,t,r],br=(e,t,r)=>{Object.defineProperty(e,t,{get:()=>{let i=r();return Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0}),i},enumerable:!0,configurable:!0})},co,_r=(e,t,r,i)=>{co===void 0&&(co=th());let n=i?10:0,s={};for(let[o,l]of Object.entries(co)){let a=o==="ansi16"?"ansi":o;o===t?s[a]=e(r,n):typeof l=="object"&&(s[a]=e(l[t],n))}return s};function Hg(){let e=new Map,t={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},color:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],blackBright:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39]},bgColor:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgBlackBright:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}};t.color.gray=t.color.blackBright,t.bgColor.bgGray=t.bgColor.bgBlackBright,t.color.grey=t.color.blackBright,t.bgColor.bgGrey=t.bgColor.bgBlackBright;for(let[r,i]of Object.entries(t)){for(let[n,s]of Object.entries(i))t[n]={open:`[${s[0]}m`,close:`[${s[1]}m`},i[n]=t[n],e.set(s[0],s[1]);Object.defineProperty(t,r,{value:i,enumerable:!1})}return Object.defineProperty(t,"codes",{value:e,enumerable:!1}),t.color.close="",t.bgColor.close="",br(t.color,"ansi",()=>_r(rh,"ansi16",wn,!1)),br(t.color,"ansi256",()=>_r(ih,"ansi256",wn,!1)),br(t.color,"ansi16m",()=>_r(nh,"rgb",sh,!1)),br(t.bgColor,"ansi",()=>_r(rh,"ansi16",wn,!0)),br(t.bgColor,"ansi256",()=>_r(ih,"ansi256",wn,!0)),br(t.bgColor,"ansi16m",()=>_r(nh,"rgb",sh,!0)),t}Object.defineProperty(eh,"exports",{enumerable:!0,get:Hg})});var lh=x((eb,ah)=>{"use strict";ah.exports=(e,t=process.argv)=>{let r=e.startsWith("-")?"":e.length===1?"-":"--",i=t.indexOf(r+e),n=t.indexOf("--");return i!==-1&&(n===-1||i{"use strict";var Vg=require("os"),uh=require("tty"),kt=lh(),{env:ut}=process,we;kt("no-color")||kt("no-colors")||kt("color=false")||kt("color=never")?we=0:(kt("color")||kt("colors")||kt("color=true")||kt("color=always"))&&(we=1);"FORCE_COLOR"in ut&&(ut.FORCE_COLOR==="true"?we=1:ut.FORCE_COLOR==="false"?we=0:we=ut.FORCE_COLOR.length===0?1:Math.min(parseInt(ut.FORCE_COLOR,10),3));function uo(e){return e===0?!1:{level:e,hasBasic:!0,has256:e>=2,has16m:e>=3}}function ho(e,t){if(we===0)return 0;if(kt("color=16m")||kt("color=full")||kt("color=truecolor"))return 3;if(kt("color=256"))return 2;if(e&&!t&&we===void 0)return 0;let r=we||0;if(ut.TERM==="dumb")return r;if(process.platform==="win32"){let i=Vg.release().split(".");return Number(i[0])>=10&&Number(i[2])>=10586?Number(i[2])>=14931?3:2:1}if("CI"in ut)return["TRAVIS","CIRCLECI","APPVEYOR","GITLAB_CI","GITHUB_ACTIONS","BUILDKITE"].some(i=>i in ut)||ut.CI_NAME==="codeship"?1:r;if("TEAMCITY_VERSION"in ut)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(ut.TEAMCITY_VERSION)?1:0;if(ut.COLORTERM==="truecolor")return 3;if("TERM_PROGRAM"in ut){let i=parseInt((ut.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(ut.TERM_PROGRAM){case"iTerm.app":return i>=3?3:2;case"Apple_Terminal":return 2}}return/-256(color)?$/i.test(ut.TERM)?2:/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(ut.TERM)||"COLORTERM"in ut?1:r}function Yg(e){let t=ho(e,e&&e.isTTY);return uo(t)}ch.exports={supportsColor:Yg,stdout:uo(ho(!0,uh.isatty(1))),stderr:uo(ho(!0,uh.isatty(2)))}});var ph=x((ib,fh)=>{"use strict";var Zg=(e,t,r)=>{let i=e.indexOf(t);if(i===-1)return e;let n=t.length,s=0,o="";do o+=e.substr(s,i-s)+t+r,s=i+n,i=e.indexOf(t,s);while(i!==-1);return o+=e.substr(s),o},Kg=(e,t,r,i)=>{let n=0,s="";do{let o=e[i-1]==="\r";s+=e.substr(n,(o?i-1:i)-n)+t+(o?`\r `:` `)+r,n=i+1,i=e.indexOf(` -`,n)}while(i!==-1);return s+=e.substr(n),s};fh.exports={stringReplaceAll:Yg,stringEncaseCRLFWithFirstIndex:Zg}});var vh=x((ib,dh)=>{"use strict";var Kg=/(?:\\(u(?:[a-f\d]{4}|\{[a-f\d]{1,6}\})|x[a-f\d]{2}|.))|(?:\{(~)?(\w+(?:\([^)]*\))?(?:\.\w+(?:\([^)]*\))?)*)(?:[ \t]|(?=\r?\n)))|(\})|((?:.|[\r\n\f])+?)/gi,mh=/(?:^|\.)(\w+)(?:\(([^)]*)\))?/g,Jg=/^(['"])((?:\\.|(?!\1)[^\\])*)\1$/,Qg=/\\(u(?:[a-f\d]{4}|{[a-f\d]{1,6}})|x[a-f\d]{2}|.)|([^\\])/gi,tv=new Map([["n",` -`],["r","\r"],["t"," "],["b","\b"],["f","\f"],["v","\v"],["0","\0"],["\\","\\"],["e",""],["a","\x07"]]);function yh(e){let t=e[0]==="u",r=e[1]==="{";return t&&!r&&e.length===5||e[0]==="x"&&e.length===3?String.fromCharCode(parseInt(e.slice(1),16)):t&&r?String.fromCodePoint(parseInt(e.slice(2,-1),16)):tv.get(e)||e}function ev(e,t){let r=[],i=t.trim().split(/\s*,\s*/g),n;for(let s of i){let o=Number(s);if(!Number.isNaN(o))r.push(o);else if(n=s.match(Jg))r.push(n[2].replace(Qg,(l,a,c)=>a?yh(a):c));else throw new Error(`Invalid Chalk template style argument: ${s} (in style '${e}')`)}return r}function rv(e){mh.lastIndex=0;let t=[],r;for(;(r=mh.exec(e))!==null;){let i=r[1];if(r[2]){let n=ev(i,r[2]);t.push([i].concat(n))}else t.push([i])}return t}function gh(e,t){let r={};for(let n of t)for(let s of n.styles)r[s[0]]=n.inverse?null:s.slice(1);let i=e;for(let[n,s]of Object.entries(r))if(!!Array.isArray(s)){if(!(n in i))throw new Error(`Unknown Chalk style: ${n}`);i=s.length>0?i[n](...s):i[n]}return i}dh.exports=(e,t)=>{let r=[],i=[],n=[];if(t.replace(Kg,(s,o,l,a,c,u)=>{if(o)n.push(yh(o));else if(a){let f=n.join("");n=[],i.push(r.length===0?f:gh(e,r)(f)),r.push({inverse:l,styles:rv(a)})}else if(c){if(r.length===0)throw new Error("Found extraneous } in Chalk template literal");i.push(gh(e,r)(n.join(""))),n=[],r.pop()}else n.push(u)}),i.push(n.join("")),r.length>0){let s=`Chalk template literal is missing ${r.length} closing bracket${r.length===1?"":"s"} (\`}\`)`;throw new Error(s)}return i.join("")}});var yo=x((nb,wh)=>{"use strict";var bi=oh(),{stdout:ho,stderr:fo}=hh(),{stringReplaceAll:iv,stringEncaseCRLFWithFirstIndex:nv}=ph(),{isArray:En}=Array,Eh=["ansi","ansi","ansi256","ansi16m"],Sr=Object.create(null),sv=(e,t={})=>{if(t.level&&!(Number.isInteger(t.level)&&t.level>=0&&t.level<=3))throw new Error("The `level` option should be an integer from 0 to 3");let r=ho?ho.level:0;e.level=t.level===void 0?r:t.level},bh=class{constructor(t){return _h(t)}},_h=e=>{let t={};return sv(t,e),t.template=(...r)=>Sh(t.template,...r),Object.setPrototypeOf(t,bn.prototype),Object.setPrototypeOf(t.template,t),t.template.constructor=()=>{throw new Error("`chalk.constructor()` is deprecated. Use `new chalk.Instance()` instead.")},t.template.Instance=bh,t.template};function bn(e){return _h(e)}for(let[e,t]of Object.entries(bi))Sr[e]={get(){let r=_n(this,po(t.open,t.close,this._styler),this._isEmpty);return Object.defineProperty(this,e,{value:r}),r}};Sr.visible={get(){let e=_n(this,this._styler,!0);return Object.defineProperty(this,"visible",{value:e}),e}};var Oh=["rgb","hex","keyword","hsl","hsv","hwb","ansi","ansi256"];for(let e of Oh)Sr[e]={get(){let{level:t}=this;return function(...r){let i=po(bi.color[Eh[t]][e](...r),bi.color.close,this._styler);return _n(this,i,this._isEmpty)}}};for(let e of Oh){let t="bg"+e[0].toUpperCase()+e.slice(1);Sr[t]={get(){let{level:r}=this;return function(...i){let n=po(bi.bgColor[Eh[r]][e](...i),bi.bgColor.close,this._styler);return _n(this,n,this._isEmpty)}}}}var ov=Object.defineProperties(()=>{},{...Sr,level:{enumerable:!0,get(){return this._generator.level},set(e){this._generator.level=e}}}),po=(e,t,r)=>{let i,n;return r===void 0?(i=e,n=t):(i=r.openAll+e,n=t+r.closeAll),{open:e,close:t,openAll:i,closeAll:n,parent:r}},_n=(e,t,r)=>{let i=(...n)=>En(n[0])&&En(n[0].raw)?Nh(i,Sh(i,...n)):Nh(i,n.length===1?""+n[0]:n.join(" "));return Object.setPrototypeOf(i,ov),i._generator=e,i._styler=t,i._isEmpty=r,i},Nh=(e,t)=>{if(e.level<=0||!t)return e._isEmpty?"":t;let r=e._styler;if(r===void 0)return t;let{openAll:i,closeAll:n}=r;if(t.indexOf("")!==-1)for(;r!==void 0;)t=iv(t,r.close,r.open),r=r.parent;let s=t.indexOf(` -`);return s!==-1&&(t=nv(t,n,i,s)),i+t+n},mo,Sh=(e,...t)=>{let[r]=t;if(!En(r)||!En(r.raw))return t.join(" ");let i=t.slice(1),n=[r.raw[0]];for(let s=1;s{Yi(av);Ps(av,{execSync:()=>Or,generateAppleScript:()=>Th,register:()=>lv});var go=At(Bs()),vo=At(Wu()),Dh=At(require("child_process")),Gt=At(require("fs")),_i=At(require("path")),Ee=At(yo()),wo="/Applications/git-peek.app/Contents/temp";function Or(e){return console.log("$ ",Ee.default.gray(e)),Dh.default.execSync(e,{cwd:process.cwd(),stdio:"inherit"})}async function lv(e){try{await go.default("duti")}catch(a){let c="HOMEBREW_NO_AUTO_UPDATE=1 HOMEBREW_NO_INSTALL_CLEANUP=1 brew install duti";console.log("duti not installed. Installing with homebrew."),Or(c)}let t=_i.default.join("/Applications/git-peek.app/Contents/","git-peek-shim");console.log("Generating AppleScript handler.");let r=await Th(t,wo),i=_i.default.join(process.cwd(),"git-peek.applescript"),n=_i.default.join(process.cwd(),"git-peek.app");await Gt.default.promises.writeFile(i,r,"utf8"),console.log(Ee.default.gray(r)),console.log("Compiling .applescript to .app"),Or(`osacompile -o git-peek.app ${i}`),console.log("Updating Info.plist to support URL handler");let s=_i.default.join(n,"contents/Info.plist"),o=vo.default.readFileSync(s);o.CFBundleIdentifier="com.apple.ScriptEditor.id.git-peek",o.CFBundleURLTypes=[{CFBundleURLName:"HTTP URL",CFBundleURLSchemes:["http","https",Ue]}],o.LSBackgroundOnly=!0,vo.default.writeFileSync(s,o),console.log("Updated Info.plist"),console.log("Moving application to /Applications/git-peek.app"),Gt.default.existsSync("/Applications/git-peek.app")&&Gt.default.rmSync("/Applications/git-peek.app",{recursive:!0,force:!0}),Gt.default.existsSync("/Applications/git-peek.app")&&Gt.default.rmSync("/Applications/git-peek.app",{force:!0,recursive:!0}),Gt.default.renameSync(n,"/Applications/git-peek.app"),console.log(Ee.default.gray(`mkdir ${wo}`)),Gt.default.mkdirSync(wo);let l=`#!/bin/bash +`,n)}while(i!==-1);return s+=e.substr(n),s};fh.exports={stringReplaceAll:Zg,stringEncaseCRLFWithFirstIndex:Kg}});var vh=x((nb,dh)=>{"use strict";var Jg=/(?:\\(u(?:[a-f\d]{4}|\{[a-f\d]{1,6}\})|x[a-f\d]{2}|.))|(?:\{(~)?(\w+(?:\([^)]*\))?(?:\.\w+(?:\([^)]*\))?)*)(?:[ \t]|(?=\r?\n)))|(\})|((?:.|[\r\n\f])+?)/gi,mh=/(?:^|\.)(\w+)(?:\(([^)]*)\))?/g,Qg=/^(['"])((?:\\.|(?!\1)[^\\])*)\1$/,tv=/\\(u(?:[a-f\d]{4}|{[a-f\d]{1,6}})|x[a-f\d]{2}|.)|([^\\])/gi,ev=new Map([["n",` +`],["r","\r"],["t"," "],["b","\b"],["f","\f"],["v","\v"],["0","\0"],["\\","\\"],["e",""],["a","\x07"]]);function yh(e){let t=e[0]==="u",r=e[1]==="{";return t&&!r&&e.length===5||e[0]==="x"&&e.length===3?String.fromCharCode(parseInt(e.slice(1),16)):t&&r?String.fromCodePoint(parseInt(e.slice(2,-1),16)):ev.get(e)||e}function rv(e,t){let r=[],i=t.trim().split(/\s*,\s*/g),n;for(let s of i){let o=Number(s);if(!Number.isNaN(o))r.push(o);else if(n=s.match(Qg))r.push(n[2].replace(tv,(l,a,c)=>a?yh(a):c));else throw new Error(`Invalid Chalk template style argument: ${s} (in style '${e}')`)}return r}function iv(e){mh.lastIndex=0;let t=[],r;for(;(r=mh.exec(e))!==null;){let i=r[1];if(r[2]){let n=rv(i,r[2]);t.push([i].concat(n))}else t.push([i])}return t}function gh(e,t){let r={};for(let n of t)for(let s of n.styles)r[s[0]]=n.inverse?null:s.slice(1);let i=e;for(let[n,s]of Object.entries(r))if(!!Array.isArray(s)){if(!(n in i))throw new Error(`Unknown Chalk style: ${n}`);i=s.length>0?i[n](...s):i[n]}return i}dh.exports=(e,t)=>{let r=[],i=[],n=[];if(t.replace(Jg,(s,o,l,a,c,u)=>{if(o)n.push(yh(o));else if(a){let f=n.join("");n=[],i.push(r.length===0?f:gh(e,r)(f)),r.push({inverse:l,styles:iv(a)})}else if(c){if(r.length===0)throw new Error("Found extraneous } in Chalk template literal");i.push(gh(e,r)(n.join(""))),n=[],r.pop()}else n.push(u)}),i.push(n.join("")),r.length>0){let s=`Chalk template literal is missing ${r.length} closing bracket${r.length===1?"":"s"} (\`}\`)`;throw new Error(s)}return i.join("")}});var go=x((sb,wh)=>{"use strict";var bi=oh(),{stdout:fo,stderr:po}=hh(),{stringReplaceAll:nv,stringEncaseCRLFWithFirstIndex:sv}=ph(),{isArray:En}=Array,Eh=["ansi","ansi","ansi256","ansi16m"],Sr=Object.create(null),ov=(e,t={})=>{if(t.level&&!(Number.isInteger(t.level)&&t.level>=0&&t.level<=3))throw new Error("The `level` option should be an integer from 0 to 3");let r=fo?fo.level:0;e.level=t.level===void 0?r:t.level},bh=class{constructor(t){return _h(t)}},_h=e=>{let t={};return ov(t,e),t.template=(...r)=>Sh(t.template,...r),Object.setPrototypeOf(t,bn.prototype),Object.setPrototypeOf(t.template,t),t.template.constructor=()=>{throw new Error("`chalk.constructor()` is deprecated. Use `new chalk.Instance()` instead.")},t.template.Instance=bh,t.template};function bn(e){return _h(e)}for(let[e,t]of Object.entries(bi))Sr[e]={get(){let r=_n(this,mo(t.open,t.close,this._styler),this._isEmpty);return Object.defineProperty(this,e,{value:r}),r}};Sr.visible={get(){let e=_n(this,this._styler,!0);return Object.defineProperty(this,"visible",{value:e}),e}};var Oh=["rgb","hex","keyword","hsl","hsv","hwb","ansi","ansi256"];for(let e of Oh)Sr[e]={get(){let{level:t}=this;return function(...r){let i=mo(bi.color[Eh[t]][e](...r),bi.color.close,this._styler);return _n(this,i,this._isEmpty)}}};for(let e of Oh){let t="bg"+e[0].toUpperCase()+e.slice(1);Sr[t]={get(){let{level:r}=this;return function(...i){let n=mo(bi.bgColor[Eh[r]][e](...i),bi.bgColor.close,this._styler);return _n(this,n,this._isEmpty)}}}}var av=Object.defineProperties(()=>{},{...Sr,level:{enumerable:!0,get(){return this._generator.level},set(e){this._generator.level=e}}}),mo=(e,t,r)=>{let i,n;return r===void 0?(i=e,n=t):(i=r.openAll+e,n=t+r.closeAll),{open:e,close:t,openAll:i,closeAll:n,parent:r}},_n=(e,t,r)=>{let i=(...n)=>En(n[0])&&En(n[0].raw)?Nh(i,Sh(i,...n)):Nh(i,n.length===1?""+n[0]:n.join(" "));return Object.setPrototypeOf(i,av),i._generator=e,i._styler=t,i._isEmpty=r,i},Nh=(e,t)=>{if(e.level<=0||!t)return e._isEmpty?"":t;let r=e._styler;if(r===void 0)return t;let{openAll:i,closeAll:n}=r;if(t.indexOf("")!==-1)for(;r!==void 0;)t=nv(t,r.close,r.open),r=r.parent;let s=t.indexOf(` +`);return s!==-1&&(t=sv(t,n,i,s)),i+t+n},yo,Sh=(e,...t)=>{let[r]=t;if(!En(r)||!En(r.raw))return t.join(" ");let i=t.slice(1),n=[r.raw[0]];for(let s=1;s{var Ue=require("path"),Ee=process.platform==="win32",be=require("fs"),lv=process.env.NODE_DEBUG&&/fs/.test(process.env.NODE_DEBUG);function cv(){var e;if(lv){var t=new Error;e=r}else e=i;return e;function r(n){n&&(t.message=n.message,n=t,i(n))}function i(n){if(n){if(process.throwDeprecation)throw n;if(!process.noDeprecation){var s="fs: missing callback "+(n.stack||n.message);process.traceDeprecation?console.trace(s):console.error(s)}}}}function uv(e){return typeof e=="function"?e:cv()}var ob=Ue.normalize;Ee?ne=/(.*?)(?:[\/\\]+|$)/g:ne=/(.*?)(?:[\/]+|$)/g;var ne;Ee?_i=/^(?:[a-zA-Z]:|[\\\/]{2}[^\\\/]+[\\\/][^\\\/]+)?[\\\/]*/:_i=/^[\/]*/;var _i;vo.realpathSync=function(t,r){if(t=Ue.resolve(t),r&&Object.prototype.hasOwnProperty.call(r,t))return r[t];var i=t,n={},s={},o,l,a,c;u();function u(){var w=_i.exec(t);o=w[0].length,l=w[0],a=w[0],c="",Ee&&!s[a]&&(be.lstatSync(a),s[a]=!0)}for(;o=t.length)return r&&(r[n]=t),i(null,t);ne.lastIndex=l;var w=ne.exec(t);return u=a,a+=w[0],c=u+w[1],l=ne.lastIndex,o[c]||r&&r[c]===c?process.nextTick(y):r&&Object.prototype.hasOwnProperty.call(r,c)?m(r[c]):be.lstat(c,b)}function b(w,O){if(w)return i(w);if(!O.isSymbolicLink())return o[c]=!0,r&&(r[c]=c),process.nextTick(y);if(!Ee){var d=O.dev.toString(32)+":"+O.ino.toString(32);if(s.hasOwnProperty(d))return E(null,s[d],c)}be.stat(c,function(g){if(g)return i(g);be.readlink(c,function(N,A){Ee||(s[d]=A),E(N,A)})})}function E(w,O,d){if(w)return i(w);var g=Ue.resolve(u,O);r&&(r[d]=g),m(g)}function m(w){t=Ue.resolve(w,t.slice(l)),f()}}});var _o=x((lb,Th)=>{Th.exports=_e;_e.realpath=_e;_e.sync=wo;_e.realpathSync=wo;_e.monkeypatch=hv;_e.unmonkeypatch=fv;var Or=require("fs"),Eo=Or.realpath,bo=Or.realpathSync,pv=process.version,Rh=/^v[0-5]\./.test(pv),Ah=Dh();function Ih(e){return e&&e.syscall==="realpath"&&(e.code==="ELOOP"||e.code==="ENOMEM"||e.code==="ENAMETOOLONG")}function _e(e,t,r){if(Rh)return Eo(e,t,r);typeof t=="function"&&(r=t,t=null),Eo(e,t,function(i,n){Ih(i)?Ah.realpath(e,t,r):r(i,n)})}function wo(e,t){if(Rh)return bo(e,t);try{return bo(e,t)}catch(r){if(Ih(r))return Ah.realpathSync(e,t);throw r}}function hv(){Or.realpath=_e,Or.realpathSync=wo}function fv(){Or.realpath=Eo,Or.realpathSync=bo}});var Lh=x((cb,xh)=>{xh.exports=function(e,t){for(var r=[],i=0;i{"use strict";Mh.exports=Ch;function Ch(e,t,r){e instanceof RegExp&&(e=Ph(e,r)),t instanceof RegExp&&(t=Ph(t,r));var i=kh(e,t,r);return i&&{start:i[0],end:i[1],pre:r.slice(0,i[0]),body:r.slice(i[0]+e.length,i[1]),post:r.slice(i[1]+t.length)}}function Ph(e,t){var r=t.match(e);return r?r[0]:null}Ch.range=kh;function kh(e,t,r){var i,n,s,o,l,a=r.indexOf(e),c=r.indexOf(t,a+1),u=a;if(a>=0&&c>0){for(i=[],s=r.length;u>=0&&!l;)u==a?(i.push(u),a=r.indexOf(e,u+1)):i.length==1?l=[i.pop(),c]:(n=i.pop(),n=0?a:c;i.length&&(l=[s,o])}return l}});var $h=x((hb,Fh)=>{var mv=Lh(),qh=Bh();Fh.exports=yv;var Uh="\0SLASH"+Math.random()+"\0",jh="\0OPEN"+Math.random()+"\0",So="\0CLOSE"+Math.random()+"\0",Xh="\0COMMA"+Math.random()+"\0",zh="\0PERIOD"+Math.random()+"\0";function Oo(e){return parseInt(e,10)==e?parseInt(e,10):e.charCodeAt(0)}function gv(e){return e.split("\\\\").join(Uh).split("\\{").join(jh).split("\\}").join(So).split("\\,").join(Xh).split("\\.").join(zh)}function vv(e){return e.split(Uh).join("\\").split(jh).join("{").split(So).join("}").split(Xh).join(",").split(zh).join(".")}function Gh(e){if(!e)return[""];var t=[],r=qh("{","}",e);if(!r)return e.split(",");var i=r.pre,n=r.body,s=r.post,o=i.split(",");o[o.length-1]+="{"+n+"}";var l=Gh(s);return s.length&&(o[o.length-1]+=l.shift(),o.push.apply(o,l)),t.push.apply(t,o),t}function yv(e){return e?(e.substr(0,2)==="{}"&&(e="\\{\\}"+e.substr(2)),Nr(gv(e),!0).map(vv)):[]}function wv(e){return"{"+e+"}"}function Ev(e){return/^-?0\d/.test(e)}function bv(e,t){return e<=t}function _v(e,t){return e>=t}function Nr(e,t){var r=[],i=qh("{","}",e);if(!i||/\$$/.test(i.pre))return[e];var n=/^-?\d+\.\.-?\d+(?:\.\.-?\d+)?$/.test(i.body),s=/^[a-zA-Z]\.\.[a-zA-Z](?:\.\.-?\d+)?$/.test(i.body),o=n||s,l=i.body.indexOf(",")>=0;if(!o&&!l)return i.post.match(/,.*\}/)?(e=i.pre+"{"+i.body+So+i.post,Nr(e)):[e];var a;if(o)a=i.body.split(/\.\./);else if(a=Gh(i.body),a.length===1&&(a=Nr(a[0],!1).map(wv),a.length===1)){var u=i.post.length?Nr(i.post,!1):[""];return u.map(function(L){return i.pre+a[0]+L})}var c=i.pre,u=i.post.length?Nr(i.post,!1):[""],f;if(o){var y=Oo(a[0]),b=Oo(a[1]),E=Math.max(a[0].length,a[1].length),m=a.length==3?Math.abs(Oo(a[2])):1,w=bv,O=b0){var _=new Array(A+1).join("0");g<0?N="-"+_+N.slice(1):N=_+N}}f.push(N)}}else f=mv(a,function(D){return Nr(D,!1)});for(var R=0;R{Wh.exports=Bt;Bt.Minimatch=ht;var Si={sep:"/"};try{Si=require("path")}catch(e){}var No=Bt.GLOBSTAR=ht.GLOBSTAR={},Sv=$h(),Hh={"!":{open:"(?:(?!(?:",close:"))[^/]*?)"},"?":{open:"(?:",close:")?"},"+":{open:"(?:",close:")+"},"*":{open:"(?:",close:")*"},"@":{open:"(?:",close:")"}},Do="[^/]",To=Do+"*?",Ov="(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?",Nv="(?:(?!(?:\\/|^)\\.).)*?",Vh=Dv("().*{}+?[]^$\\!");function Dv(e){return e.split("").reduce(function(t,r){return t[r]=!0,t},{})}var Yh=/\/+/;Bt.filter=Tv;function Tv(e,t){return t=t||{},function(r,i,n){return Bt(r,e,t)}}function Zh(e,t){e=e||{},t=t||{};var r={};return Object.keys(t).forEach(function(i){r[i]=t[i]}),Object.keys(e).forEach(function(i){r[i]=e[i]}),r}Bt.defaults=function(e){if(!e||!Object.keys(e).length)return Bt;var t=Bt,r=function(n,s,o){return t.minimatch(n,s,Zh(e,o))};return r.Minimatch=function(n,s){return new t.Minimatch(n,Zh(e,s))},r};ht.defaults=function(e){return!e||!Object.keys(e).length?ht:Bt.defaults(e).Minimatch};function Bt(e,t,r){if(typeof t!="string")throw new TypeError("glob pattern string required");return r||(r={}),!r.nocomment&&t.charAt(0)==="#"?!1:t.trim()===""?e==="":new ht(t,r).match(e)}function ht(e,t){if(!(this instanceof ht))return new ht(e,t);if(typeof e!="string")throw new TypeError("glob pattern string required");t||(t={}),e=e.trim(),Si.sep!=="/"&&(e=e.split(Si.sep).join("/")),this.options=t,this.set=[],this.pattern=e,this.regexp=null,this.negate=!1,this.comment=!1,this.empty=!1,this.make()}ht.prototype.debug=function(){};ht.prototype.make=Rv;function Rv(){if(!this._made){var e=this.pattern,t=this.options;if(!t.nocomment&&e.charAt(0)==="#"){this.comment=!0;return}if(!e){this.empty=!0;return}this.parseNegate();var r=this.globSet=this.braceExpand();t.debug&&(this.debug=console.error),this.debug(this.pattern,r),r=this.globParts=r.map(function(i){return i.split(Yh)}),this.debug(this.pattern,r),r=r.map(function(i,n,s){return i.map(this.parse,this)},this),this.debug(this.pattern,r),r=r.filter(function(i){return i.indexOf(!1)===-1}),this.debug(this.pattern,r),this.set=r}}ht.prototype.parseNegate=Av;function Av(){var e=this.pattern,t=!1,r=this.options,i=0;if(!r.nonegate){for(var n=0,s=e.length;n1024*64)throw new TypeError("pattern is too long");var r=this.options;if(!r.noglobstar&&e==="**")return No;if(e==="")return"";var i="",n=!!r.nocase,s=!1,o=[],l=[],a,c=!1,u=-1,f=-1,y=e.charAt(0)==="."?"":r.dot?"(?!(?:^|\\/)\\.{1,2}(?:$|\\/))":"(?!\\.)",b=this;function E(){if(a){switch(a){case"*":i+=To,n=!0;break;case"?":i+=Do,n=!0;break;default:i+="\\"+a;break}b.debug("clearStateChar %j %j",a,i),a=!1}}for(var m=0,w=e.length,O;m-1;B--){var P=l[B],D=i.slice(0,P.reStart),L=i.slice(P.reStart,P.reEnd-8),F=i.slice(P.reEnd-8,P.reEnd),U=i.slice(P.reEnd);F+=U;var Y=D.split("(").length-1,$=U;for(m=0;m=0&&(n=e[s],!n);s--);for(s=0;s>> no match, partial?`,e,u,t,f),u===o))}var b;if(typeof a=="string"?(i.nocase?b=c.toLowerCase()===a.toLowerCase():b=c===a,this.debug("string match",a,c,b)):(b=c.match(a),this.debug("pattern match",a,c,b)),!b)return!1}if(n===o&&s===l)return!0;if(n===o)return r;if(s===l){var E=n===o-1&&e[n]==="";return E}throw new Error("wtf?")};function xv(e){return e.replace(/\\(.)/g,"$1")}function Mv(e){return e.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&")}});var Jh=x((pb,Ro)=>{typeof Object.create=="function"?Ro.exports=function(t,r){r&&(t.super_=r,t.prototype=Object.create(r.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}))}:Ro.exports=function(t,r){if(r){t.super_=r;var i=function(){};i.prototype=r.prototype,t.prototype=new i,t.prototype.constructor=t}}});var Qh=x((db,Ao)=>{try{if(Io=require("util"),typeof Io.inherits!="function")throw"";Ao.exports=Io.inherits}catch(e){Ao.exports=Jh()}var Io});var Tn=x((mb,Dn)=>{"use strict";function tf(e){return e.charAt(0)==="/"}function ef(e){var t=/^([a-zA-Z]:|[\\\/]{2}[^\\\/]+[\\\/]+[^\\\/]+)?([\\\/])?([\s\S]*?)$/,r=t.exec(e),i=r[1]||"",n=Boolean(i&&i.charAt(1)!==":");return Boolean(r[2]||n)}Dn.exports=process.platform==="win32"?ef:tf;Dn.exports.posix=tf;Dn.exports.win32=ef});var Lo=x(Vt=>{Vt.alphasort=rf;Vt.alphasorti=nf;Vt.setopts=Pv;Vt.ownProp=sf;Vt.makeAbs=Oi;Vt.finish=kv;Vt.mark=Bv;Vt.isIgnored=of;Vt.childrenIgnored=Fv;function sf(e,t){return Object.prototype.hasOwnProperty.call(e,t)}var Dr=require("path"),qv=Nn(),af=Tn(),xo=qv.Minimatch;function nf(e,t){return e.toLowerCase().localeCompare(t.toLowerCase())}function rf(e,t){return e.localeCompare(t)}function jv(e,t){e.ignore=t.ignore||[],Array.isArray(e.ignore)||(e.ignore=[e.ignore]),e.ignore.length&&(e.ignore=e.ignore.map(Uv))}function Uv(e){var t=null;if(e.slice(-3)==="/**"){var r=e.replace(/(\/\*\*)+$/,"");t=new xo(r,{dot:!0})}return{matcher:new xo(e,{dot:!0}),gmatcher:t}}function Pv(e,t,r){if(r||(r={}),r.matchBase&&t.indexOf("/")===-1){if(r.noglobstar)throw new Error("base matching requires globstar");t="**/"+t}e.silent=!!r.silent,e.pattern=t,e.strict=r.strict!==!1,e.realpath=!!r.realpath,e.realpathCache=r.realpathCache||Object.create(null),e.follow=!!r.follow,e.dot=!!r.dot,e.mark=!!r.mark,e.nodir=!!r.nodir,e.nodir&&(e.mark=!0),e.sync=!!r.sync,e.nounique=!!r.nounique,e.nonull=!!r.nonull,e.nosort=!!r.nosort,e.nocase=!!r.nocase,e.stat=!!r.stat,e.noprocess=!!r.noprocess,e.absolute=!!r.absolute,e.maxLength=r.maxLength||Infinity,e.cache=r.cache||Object.create(null),e.statCache=r.statCache||Object.create(null),e.symlinks=r.symlinks||Object.create(null),jv(e,r),e.changedCwd=!1;var i=process.cwd();sf(r,"cwd")?(e.cwd=Dr.resolve(r.cwd),e.changedCwd=e.cwd!==i):e.cwd=i,e.root=r.root||Dr.resolve(e.cwd,"/"),e.root=Dr.resolve(e.root),process.platform==="win32"&&(e.root=e.root.replace(/\\/g,"/")),e.cwdAbs=af(e.cwd)?e.cwd:Oi(e,e.cwd),process.platform==="win32"&&(e.cwdAbs=e.cwdAbs.replace(/\\/g,"/")),e.nomount=!!r.nomount,r.nonegate=!0,r.nocomment=!0,e.minimatch=new xo(t,r),e.options=e.minimatch.options}function kv(e){for(var t=e.nounique,r=t?[]:Object.create(null),i=0,n=e.matches.length;i{lf.exports=cf;cf.GlobSync=ot;var Rn=require("fs"),Xv=_o(),uf=Nn(),gb=uf.Minimatch,vb=Mo().Glob,wb=require("util"),Co=require("path"),hf=require("assert"),An=Tn(),se=Lo(),Eb=se.alphasort,bb=se.alphasorti,zv=se.setopts,Po=se.ownProp,Gv=se.childrenIgnored,$v=se.isIgnored;function cf(e,t){if(typeof t=="function"||arguments.length===3)throw new TypeError(`callback provided to sync glob +See: https://github.com/isaacs/node-glob/issues/167`);return new ot(e,t).found}function ot(e,t){if(!e)throw new Error("must provide pattern");if(typeof t=="function"||arguments.length===3)throw new TypeError(`callback provided to sync glob +See: https://github.com/isaacs/node-glob/issues/167`);if(!(this instanceof ot))return new ot(e,t);if(zv(this,e,t),this.noprocess)return this;var r=this.minimatch.set.length;this.matches=new Array(r);for(var i=0;ithis.maxLength)return!1;if(!this.stat&&Po(this.cache,t)){var o=this.cache[t];if(Array.isArray(o)&&(o="DIR"),!r||o==="DIR")return o;if(r&&o==="FILE")return!1}var i,n=this.statCache[t];if(!n){var s;try{s=Rn.lstatSync(t)}catch(l){if(l&&(l.code==="ENOENT"||l.code==="ENOTDIR"))return this.statCache[t]=!1,!1}if(s&&s.isSymbolicLink())try{n=Rn.statSync(t)}catch(l){n=s}else n=s}this.statCache[t]=n;var o=!0;return n&&(o=n.isDirectory()?"DIR":"FILE"),this.cache[t]=this.cache[t]||o,r&&o==="FILE"?!1:o};ot.prototype._mark=function(e){return se.mark(this,e)};ot.prototype._makeAbs=function(e){return se.makeAbs(this,e)}});var ko=x((Sb,pf)=>{pf.exports=df;function df(e,t){if(e&&t)return df(e)(t);if(typeof e!="function")throw new TypeError("need wrapper function");return Object.keys(e).forEach(function(i){r[i]=e[i]}),r;function r(){for(var i=new Array(arguments.length),n=0;n{var mf=ko();Bo.exports=mf(In);Bo.exports.strict=mf(yf);In.proto=In(function(){Object.defineProperty(Function.prototype,"once",{value:function(){return In(this)},configurable:!0}),Object.defineProperty(Function.prototype,"onceStrict",{value:function(){return yf(this)},configurable:!0})});function In(e){var t=function(){return t.called?t.value:(t.called=!0,t.value=e.apply(this,arguments))};return t.called=!1,t}function yf(e){var t=function(){if(t.called)throw new Error(t.onceError);return t.called=!0,t.value=e.apply(this,arguments)},r=e.name||"Function wrapped with `once`";return t.onceError=r+" shouldn't be called more than once",t.called=!1,t}});var vf=x((Nb,gf)=>{var Wv=ko(),Ni=Object.create(null),Hv=Fo();gf.exports=Wv(Vv);function Vv(e,t){return Ni[e]?(Ni[e].push(t),null):(Ni[e]=[t],Yv(e))}function Yv(e){return Hv(function t(){var r=Ni[e],i=r.length,n=Zv(arguments);try{for(var s=0;si?(r.splice(0,i),process.nextTick(function(){t.apply(null,n)})):delete Ni[e]}})}function Zv(e){for(var t=e.length,r=[],i=0;i{wf.exports=je;var xn=require("fs"),Kv=_o(),Ef=Nn(),Db=Ef.Minimatch,Jv=Qh(),Qv=require("events").EventEmitter,qo=require("path"),Uo=require("assert"),Di=Tn(),jo=ff(),oe=Lo(),Tb=oe.alphasort,Rb=oe.alphasorti,t0=oe.setopts,Xo=oe.ownProp,zo=vf(),Ab=require("util"),e0=oe.childrenIgnored,r0=oe.isIgnored,i0=Fo();function je(e,t,r){if(typeof t=="function"&&(r=t,t={}),t||(t={}),t.sync){if(r)throw new TypeError("callback provided to sync glob");return jo(e,t)}return new K(e,t,r)}je.sync=jo;var n0=je.GlobSync=jo.GlobSync;je.glob=je;function s0(e,t){if(t===null||typeof t!="object")return e;for(var r=Object.keys(t),i=r.length;i--;)e[r[i]]=t[r[i]];return e}je.hasMagic=function(e,t){var r=s0({},t);r.noprocess=!0;var i=new K(e,r),n=i.minimatch.set;if(!e)return!1;if(n.length>1)return!0;for(var s=0;sthis.maxLength)return t();if(!this.stat&&Xo(this.cache,r)){var n=this.cache[r];if(Array.isArray(n)&&(n="DIR"),!i||n==="DIR")return t(null,n);if(i&&n==="FILE")return t()}var s,o=this.statCache[r];if(o!==void 0){if(o===!1)return t(null,o);var l=o.isDirectory()?"DIR":"FILE";return i&&l==="FILE"?t():t(null,l,o)}var a=this,c=zo("stat\0"+r,u);c&&xn.lstat(r,c);function u(f,y){if(y&&y.isSymbolicLink())return xn.stat(r,function(b,E){b?a._stat2(e,r,null,y,t):a._stat2(e,r,b,E,t)});a._stat2(e,r,f,y,t)}};K.prototype._stat2=function(e,t,r,i,n){if(r&&(r.code==="ENOENT"||r.code==="ENOTDIR"))return this.statCache[t]=!1,n();var s=e.slice(-1)==="/";if(this.statCache[t]=i,t.slice(-1)==="/"&&i&&!i.isDirectory())return n(null,!1,i);var o=!0;return i&&(o=i.isDirectory()?"DIR":"FILE"),this.cache[t]=this.cache[t]||o,s&&o==="FILE"?n():n(null,o,i)}});var Rf=x((xb,bf)=>{var tt=require("assert"),_f=require("path"),Sf=require("fs"),Tr;try{Tr=Mo()}catch(e){}var a0={nosort:!0,silent:!0},Go=0,Ti=process.platform==="win32",Of=e=>{if(["unlink","chmod","stat","lstat","rmdir","readdir"].forEach(r=>{e[r]=e[r]||Sf[r],r=r+"Sync",e[r]=e[r]||Sf[r]}),e.maxBusyTries=e.maxBusyTries||3,e.emfileWait=e.emfileWait||1e3,e.glob===!1&&(e.disableGlob=!0),e.disableGlob!==!0&&Tr===void 0)throw Error("glob dependency not found, set `options.disableGlob = true` if intentional");e.disableGlob=e.disableGlob||!1,e.glob=e.glob||a0},Wo=(e,t,r)=>{typeof t=="function"&&(r=t,t={}),tt(e,"rimraf: missing path"),tt.equal(typeof e,"string","rimraf: path should be a string"),tt.equal(typeof r,"function","rimraf: callback function required"),tt(t,"rimraf: invalid options argument provided"),tt.equal(typeof t,"object","rimraf: options should be object"),Of(t);let i=0,n=null,s=0,o=a=>{n=n||a,--s==0&&r(n)},l=(a,c)=>{if(a)return r(a);if(s=c.length,s===0)return r();c.forEach(u=>{let f=y=>{if(y){if((y.code==="EBUSY"||y.code==="ENOTEMPTY"||y.code==="EPERM")&&i$o(u,t,f),i*100);if(y.code==="EMFILE"&&Go$o(u,t,f),Go++);y.code==="ENOENT"&&(y=null)}Go=0,o(y)};$o(u,t,f)})};if(t.disableGlob||!Tr.hasMagic(e))return l(null,[e]);t.lstat(e,(a,c)=>{if(!a)return l(null,[e]);Tr(e,t.glob,l)})},$o=(e,t,r)=>{tt(e),tt(t),tt(typeof r=="function"),t.lstat(e,(i,n)=>{if(i&&i.code==="ENOENT")return r(null);if(i&&i.code==="EPERM"&&Ti&&Nf(e,t,i,r),n&&n.isDirectory())return Ln(e,t,i,r);t.unlink(e,s=>{if(s){if(s.code==="ENOENT")return r(null);if(s.code==="EPERM")return Ti?Nf(e,t,s,r):Ln(e,t,s,r);if(s.code==="EISDIR")return Ln(e,t,s,r)}return r(s)})})},Nf=(e,t,r,i)=>{tt(e),tt(t),tt(typeof i=="function"),t.chmod(e,438,n=>{n?i(n.code==="ENOENT"?null:r):t.stat(e,(s,o)=>{s?i(s.code==="ENOENT"?null:r):o.isDirectory()?Ln(e,t,r,i):t.unlink(e,i)})})},Df=(e,t,r)=>{tt(e),tt(t);try{t.chmodSync(e,438)}catch(n){if(n.code==="ENOENT")return;throw r}let i;try{i=t.statSync(e)}catch(n){if(n.code==="ENOENT")return;throw r}i.isDirectory()?Mn(e,t,r):t.unlinkSync(e)},Ln=(e,t,r,i)=>{tt(e),tt(t),tt(typeof i=="function"),t.rmdir(e,n=>{n&&(n.code==="ENOTEMPTY"||n.code==="EEXIST"||n.code==="EPERM")?l0(e,t,i):n&&n.code==="ENOTDIR"?i(r):i(n)})},l0=(e,t,r)=>{tt(e),tt(t),tt(typeof r=="function"),t.readdir(e,(i,n)=>{if(i)return r(i);let s=n.length;if(s===0)return t.rmdir(e,r);let o;n.forEach(l=>{Wo(_f.join(e,l),t,a=>{if(!o){if(a)return r(o=a);--s==0&&t.rmdir(e,r)}})})})},Tf=(e,t)=>{t=t||{},Of(t),tt(e,"rimraf: missing path"),tt.equal(typeof e,"string","rimraf: path should be a string"),tt(t,"rimraf: missing options"),tt.equal(typeof t,"object","rimraf: options should be object");let r;if(t.disableGlob||!Tr.hasMagic(e))r=[e];else try{t.lstatSync(e),r=[e]}catch(i){r=Tr.sync(e,t.glob)}if(!!r.length)for(let i=0;i{tt(e),tt(t);try{t.rmdirSync(e)}catch(i){if(i.code==="ENOENT")return;if(i.code==="ENOTDIR")throw r;(i.code==="ENOTEMPTY"||i.code==="EEXIST"||i.code==="EPERM")&&c0(e,t)}},c0=(e,t)=>{tt(e),tt(t),t.readdirSync(e).forEach(n=>Tf(_f.join(e,n),t));let r=Ti?100:1,i=0;do{let n=!0;try{let s=t.rmdirSync(e,t);return n=!1,s}finally{if(++i{var ft=require("fs"),Ho=require("os"),It=require("path"),Af=require("crypto"),Yt={fs:ft.constants,os:Ho.constants},If=Rf(),xf="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",Lf=/XXXXXX/,u0=3,Mf=(Yt.O_CREAT||Yt.fs.O_CREAT)|(Yt.O_EXCL||Yt.fs.O_EXCL)|(Yt.O_RDWR||Yt.fs.O_RDWR),h0=Ho.platform()==="win32",f0=Yt.EBADF||Yt.os.errno.EBADF,p0=Yt.ENOENT||Yt.os.errno.ENOENT,Cf=448,Pf=384,d0="exit",Rr=[],kf=ft.rmdirSync.bind(ft),Bf=If.sync,Ff=!1;function Vo(e,t){let r=Ar(e,t),i=r[0],n=r[1];try{Uf(i)}catch(o){return n(o)}let s=i.tries;(function o(){try{let l=qf(i);ft.stat(l,function(a){if(!a)return s-- >0?o():n(new Error("Could not get a unique tmp filename, max tries reached "+l));n(null,l)})}catch(l){n(l)}})()}function Yo(e){let t=Ar(e),r=t[0];Uf(r);let i=r.tries;do{let n=qf(r);try{ft.statSync(n)}catch(s){return n}}while(i-- >0);throw new Error("Could not get a unique tmp filename, max tries reached")}function m0(e,t){let r=Ar(e,t),i=r[0],n=r[1];Vo(i,function(o,l){if(o)return n(o);ft.open(l,Mf,i.mode||Pf,function(c,u){if(c)return n(c);if(i.discardDescriptor)return ft.close(u,function(y){return n(y,l,void 0,Zo(l,-1,i,!1))});{let f=i.discardDescriptor||i.detachDescriptor;n(null,l,u,Zo(l,f?-1:u,i,!1))}})})}function y0(e){let t=Ar(e),r=t[0],i=r.discardDescriptor||r.detachDescriptor,n=Yo(r);var s=ft.openSync(n,Mf,r.mode||Pf);return r.discardDescriptor&&(ft.closeSync(s),s=void 0),{name:n,fd:s,removeCallback:Zo(n,i?-1:s,r,!0)}}function g0(e,t){let r=Ar(e,t),i=r[0],n=r[1];Vo(i,function(o,l){if(o)return n(o);ft.mkdir(l,i.mode||Cf,function(c){if(c)return n(c);n(null,l,jf(l,i,!1))})})}function v0(e){let t=Ar(e),r=t[0],i=Yo(r);return ft.mkdirSync(i,r.mode||Cf),{name:i,removeCallback:jf(i,r,!0)}}function w0(e,t){let r=function(i){if(i&&!Ko(i))return t(i);t()};0<=e[0]?ft.close(e[0],function(){ft.unlink(e[1],r)}):ft.unlink(e[1],r)}function b0(e){let t=null;try{0<=e[0]&&ft.closeSync(e[0])}catch(r){if(!E0(r)&&!Ko(r))throw r}finally{try{ft.unlinkSync(e[1])}catch(r){Ko(r)||(t=r)}}if(t!==null)throw t}function Zo(e,t,r,i){let n=Cn(b0,[t,e],i),s=Cn(w0,[t,e],i,n);return r.keep||Rr.unshift(n),i?n:s}function jf(e,t,r){let i=t.unsafeCleanup?If:ft.rmdir.bind(ft),n=t.unsafeCleanup?Bf:kf,s=Cn(n,e,r),o=Cn(i,e,r,s);return t.keep||Rr.unshift(s),r?s:o}function Cn(e,t,r,i){let n=!1;return function s(o){if(!n){let l=i||s,a=Rr.indexOf(l);return a>=0&&Rr.splice(a,1),n=!0,r||e===kf||e===Bf?e(t):e(t,o||function(){})}}}function _0(){if(!!Ff)for(;Rr.length;)try{Rr[0]()}catch(e){}}function Xf(e){let t=[],r=null;try{r=Af.randomBytes(e)}catch(n){r=Af.pseudoRandomBytes(e)}for(var i=0;i{Yi(O0);ks(O0,{execSync:()=>Ir,generateAppleScript:()=>Vf,register:()=>N0});var ea=Et(Fs()),ra=Et(Wu()),Wf=Et(require("child_process")),Gt=Et(require("fs")),Ri=Et(require("path")),Se=Et(go()),Hf=Et(Pn()),ia="/Applications/git-peek.app/Contents/temp";function Ir(e){return console.log("$ ",Se.default.gray(e)),Wf.default.execSync(e,{cwd:process.cwd(),stdio:"inherit"})}async function N0(e){try{await ea.default("duti")}catch(c){let u="HOMEBREW_NO_AUTO_UPDATE=1 HOMEBREW_NO_INSTALL_CLEANUP=1 brew install duti";console.log("duti not installed. Installing with homebrew."),Ir(u)}let t=Ri.default.join("/Applications/git-peek.app/Contents/","git-peek-shim");console.log("Generating AppleScript handler.");let r=await Vf(t,ia),i=Hf.default.dirSync({unsafeCleanup:!0}),n=Ri.default.join(i.name,"git-peek.applescript"),s=Ri.default.join(i.name,"git-peek.app");await Gt.default.promises.writeFile(n,r,"utf8"),console.log(Se.default.gray(r)),console.log("Compiling .applescript to .app"),Ir(`osacompile -o ${s} ${n}`),console.log("Updating Info.plist to support URL handler");let o=Ri.default.join(s,"contents/Info.plist"),l=ra.default.readFileSync(o);l.CFBundleIdentifier="com.apple.ScriptEditor.id.git-peek",l.CFBundleURLTypes=[{CFBundleURLName:"HTTP URL",CFBundleURLSchemes:["http","https",Xe]}],l.LSBackgroundOnly=!0,ra.default.writeFileSync(o,l),console.log("Updated Info.plist"),console.log("Moving application to /Applications/git-peek.app"),Gt.default.existsSync("/Applications/git-peek.app")&&Gt.default.rmSync("/Applications/git-peek.app",{recursive:!0,force:!0}),Gt.default.existsSync("/Applications/git-peek.app")&&Gt.default.rmSync("/Applications/git-peek.app",{force:!0,recursive:!0}),Gt.default.renameSync(s,"/Applications/git-peek.app"),console.log(Se.default.gray(`mkdir ${ia}`)),Gt.default.mkdirSync(ia);let a=`#!/bin/bash # AppleScript might run as a different user/environment variables. # So we have to inline some environment variables! @@ -15,10 +20,10 @@ export EDITOR=${JSON.stringify(e)} export HOME=${JSON.stringify(process.env.HOME)||""} export USER=${JSON.stringify(process.env.USER)||""} -.${JSON.stringify(await go.default("git-peek"))} --fromscript $1 $2 $3 $4 & disown +.${JSON.stringify(await ea.default("git-peek"))} --fromscript $1 $2 $3 $4 & disown `;if(console.log(`// --- BEGIN SHIM FILE --- -`+Ee.default.gray(l)+` -// --- END SHIM FILE ---`),console.log(`Wrote shim file (${Ee.default.gray(t)})`),Gt.default.writeFileSync(t,l,"utf8"),Or("chmod +x "+t),console.log("Registering URL handler..."),Or(`duti -s com.apple.ScriptEditor.id.git-peek ${Ue}`),Gt.default.rmSync(i),Gt.default.existsSync("/Applications/Google Chrome.app")){console.log(`Adding ${Ue}:// to Google Chrome`);try{Or(`defaults write com.google.Chrome URLWhitelist -array '${Ue}://*'`)}catch(a){console.warn("Failed to add protocol to Google Chrome. Its okay.")}}console.log(Ee.default.green("\u2705 Registered git-peek:// protocol successfully.")),console.log('To unregister, just delete "/Applications/git-peek.app".'),console.log("To test it, run this:"),console.log(" "+Ee.default.blue("open git-peek://Jarred-Sumner/git-peek")),e.includes("vi")&&console.warn("vim/vi not supported (no terminal window will be open), but if you know a way to run a terminal window from the AppleScript please do submit a PR!")}async function Th(e,t){return` +`+Se.default.gray(a)+` +// --- END SHIM FILE ---`),console.log(`Wrote shim file (${Se.default.gray(t)})`),Gt.default.writeFileSync(t,a,"utf8"),Ir("chmod +x "+t),console.log("Registering URL handler..."),Ir(`duti -s com.apple.ScriptEditor.id.git-peek ${Xe}`),Gt.default.rmSync(n),Gt.default.existsSync("/Applications/Google Chrome.app")){console.log(`Adding ${Xe}:// to Google Chrome`);try{Ir(`defaults write com.google.Chrome URLWhitelist -array '${Xe}://*'`)}catch(c){console.warn("Failed to add protocol to Google Chrome. Its okay.")}}console.log(Se.default.green("\u2705 Registered git-peek:// protocol successfully.")),console.log('To unregister, just delete "/Applications/git-peek.app".'),console.log("To test it, run this:"),console.log(" "+Se.default.blue("open git-peek://Jarred-Sumner/git-peek")),e.includes("vi")&&console.warn("vim/vi not supported (no terminal window will be open), but if you know a way to run a terminal window from the AppleScript please do submit a PR!")}async function Vf(e,t){return` on open location this_URL try @@ -28,15 +33,10 @@ on open location this_URL display dialog errMsg end try end open location -`.trim()}});var Lh=x((lb,Ah)=>{var Ih=class{constructor(t){this.value=t,this.next=void 0}},xh=class{constructor(){this.clear()}enqueue(t){let r=new Ih(t);this._head?(this._tail.next=r,this._tail=r):(this._head=r,this._tail=r),this._size++}dequeue(){let t=this._head;if(!!t)return this._head=this._head.next,this._size--,t.value}clear(){this._head=void 0,this._tail=void 0,this._size=0}get size(){return this._size}*[Symbol.iterator](){let t=this._head;for(;t;)yield t.value,t=t.next}};Ah.exports=xh});var Ch=x((cb,Mh)=>{"use strict";var cv=Lh(),uv=e=>{if(!((Number.isInteger(e)||e===Infinity)&&e>0))throw new TypeError("Expected `concurrency` to be a number from 1 and up");let t=new cv,r=0,i=()=>{r--,t.size>0&&t.dequeue()()},n=async(l,a,...c)=>{r++;let u=(async()=>l(...c))();a(u);try{await u}catch{}i()},s=(l,a,...c)=>{t.enqueue(n.bind(null,l,a,...c)),(async()=>{await Promise.resolve(),r0&&t.dequeue()()})()},o=(l,...a)=>new Promise(c=>{s(l,c,...a)});return Object.defineProperties(o,{activeCount:{get:()=>r},pendingCount:{get:()=>t.size},clearQueue:{value:()=>{t.clear()}}}),o};Mh.exports=uv});var Bh=x((ub,Ph)=>{"use strict";var kh=Ch(),Eo=class extends Error{constructor(t){super();this.value=t}},hv=async(e,t)=>t(await e),fv=async e=>{let t=await Promise.all(e);if(t[1]===!0)throw new Eo(t[0]);return!1},pv=async(e,t,r)=>{r={concurrency:Infinity,preserveOrder:!0,...r};let i=kh(r.concurrency),n=[...e].map(o=>[o,i(hv,o,t)]),s=kh(r.preserveOrder?1:Infinity);try{await Promise.all(n.map(o=>s(fv,o)))}catch(o){if(o instanceof Eo)return o.value;throw o}};Ph.exports=pv});var zh=x((hb,bo)=>{"use strict";var Fh=require("path"),On=require("fs"),{promisify:qh}=require("util"),dv=Bh(),mv=qh(On.stat),yv=qh(On.lstat),Uh={directory:"isDirectory",file:"isFile"};function jh({type:e}){if(!(e in Uh))throw new Error(`Invalid type specified: ${e}`)}var Xh=(e,t)=>e===void 0||t[Uh[e]]();bo.exports=async(e,t)=>{t={cwd:process.cwd(),type:"file",allowSymlinks:!0,...t},jh(t);let r=t.allowSymlinks?mv:yv;return dv(e,async i=>{try{let n=await r(Fh.resolve(t.cwd,i));return Xh(t.type,n)}catch{return!1}},t)};bo.exports.sync=(e,t)=>{t={cwd:process.cwd(),allowSymlinks:!0,type:"file",...t},jh(t);let r=t.allowSymlinks?On.statSync:On.lstatSync;for(let i of e)try{let n=r(Fh.resolve(t.cwd,i));if(Xh(t.type,n))return i}catch{}}});var $h=x((fb,_o)=>{"use strict";var Gh=require("fs"),{promisify:gv}=require("util"),vv=gv(Gh.access);_o.exports=async e=>{try{return await vv(e),!0}catch(t){return!1}};_o.exports.sync=e=>{try{return Gh.accessSync(e),!0}catch(t){return!1}}});var Hh=x((pb,Nr)=>{"use strict";var be=require("path"),Nn=zh(),Wh=$h(),So=Symbol("findUp.stop");Nr.exports=async(e,t={})=>{let r=be.resolve(t.cwd||""),{root:i}=be.parse(r),n=[].concat(e),s=async o=>{if(typeof e!="function")return Nn(n,o);let l=await e(o.cwd);return typeof l=="string"?Nn([l],o):l};for(;;){let o=await s({...t,cwd:r});if(o===So)return;if(o)return be.resolve(r,o);if(r===i)return;r=be.dirname(r)}};Nr.exports.sync=(e,t={})=>{let r=be.resolve(t.cwd||""),{root:i}=be.parse(r),n=[].concat(e),s=o=>{if(typeof e!="function")return Nn.sync(n,o);let l=e(o.cwd);return typeof l=="string"?Nn.sync([l],o):l};for(;;){let o=s({...t,cwd:r});if(o===So)return;if(o)return be.resolve(r,o);if(r===i)return;r=be.dirname(r)}};Nr.exports.exists=Wh;Nr.exports.sync.exists=Wh.sync;Nr.exports.stop=So});var Vh=x(Oo=>{var je=require("path"),_e=process.platform==="win32",Se=require("fs"),wv=process.env.NODE_DEBUG&&/fs/.test(process.env.NODE_DEBUG);function Ev(){var e;if(wv){var t=new Error;e=r}else e=i;return e;function r(n){n&&(t.message=n.message,n=t,i(n))}function i(n){if(n){if(process.throwDeprecation)throw n;if(!process.noDeprecation){var s="fs: missing callback "+(n.stack||n.message);process.traceDeprecation?console.trace(s):console.error(s)}}}}function bv(e){return typeof e=="function"?e:Ev()}var db=je.normalize;_e?ne=/(.*?)(?:[\/\\]+|$)/g:ne=/(.*?)(?:[\/]+|$)/g;var ne;_e?Si=/^(?:[a-zA-Z]:|[\\\/]{2}[^\\\/]+[\\\/][^\\\/]+)?[\\\/]*/:Si=/^[\/]*/;var Si;Oo.realpathSync=function(t,r){if(t=je.resolve(t),r&&Object.prototype.hasOwnProperty.call(r,t))return r[t];var i=t,n={},s={},o,l,a,c;u();function u(){var w=Si.exec(t);o=w[0].length,l=w[0],a=w[0],c="",_e&&!s[a]&&(Se.lstatSync(a),s[a]=!0)}for(;o=t.length)return r&&(r[n]=t),i(null,t);ne.lastIndex=l;var w=ne.exec(t);return u=a,a+=w[0],c=u+w[1],l=ne.lastIndex,o[c]||r&&r[c]===c?process.nextTick(y):r&&Object.prototype.hasOwnProperty.call(r,c)?m(r[c]):Se.lstat(c,b)}function b(w,O){if(w)return i(w);if(!O.isSymbolicLink())return o[c]=!0,r&&(r[c]=c),process.nextTick(y);if(!_e){var d=O.dev.toString(32)+":"+O.ino.toString(32);if(s.hasOwnProperty(d))return E(null,s[d],c)}Se.stat(c,function(g){if(g)return i(g);Se.readlink(c,function(N,A){_e||(s[d]=A),E(N,A)})})}function E(w,O,d){if(w)return i(w);var g=je.resolve(u,O);r&&(r[d]=g),m(g)}function m(w){t=je.resolve(w,t.slice(l)),f()}}});var Ro=x((yb,Yh)=>{Yh.exports=Oe;Oe.realpath=Oe;Oe.sync=No;Oe.realpathSync=No;Oe.monkeypatch=_v;Oe.unmonkeypatch=Sv;var Dr=require("fs"),Do=Dr.realpath,To=Dr.realpathSync,Ov=process.version,Zh=/^v[0-5]\./.test(Ov),Kh=Vh();function Jh(e){return e&&e.syscall==="realpath"&&(e.code==="ELOOP"||e.code==="ENOMEM"||e.code==="ENAMETOOLONG")}function Oe(e,t,r){if(Zh)return Do(e,t,r);typeof t=="function"&&(r=t,t=null),Do(e,t,function(i,n){Jh(i)?Kh.realpath(e,t,r):r(i,n)})}function No(e,t){if(Zh)return To(e,t);try{return To(e,t)}catch(r){if(Jh(r))return Kh.realpathSync(e,t);throw r}}function _v(){Dr.realpath=Oe,Dr.realpathSync=No}function Sv(){Dr.realpath=Do,Dr.realpathSync=To}});var tf=x((gb,Qh)=>{Qh.exports=function(e,t){for(var r=[],i=0;i{"use strict";ef.exports=rf;function rf(e,t,r){e instanceof RegExp&&(e=nf(e,r)),t instanceof RegExp&&(t=nf(t,r));var i=sf(e,t,r);return i&&{start:i[0],end:i[1],pre:r.slice(0,i[0]),body:r.slice(i[0]+e.length,i[1]),post:r.slice(i[1]+t.length)}}function nf(e,t){var r=t.match(e);return r?r[0]:null}rf.range=sf;function sf(e,t,r){var i,n,s,o,l,a=r.indexOf(e),c=r.indexOf(t,a+1),u=a;if(a>=0&&c>0){for(i=[],s=r.length;u>=0&&!l;)u==a?(i.push(u),a=r.indexOf(e,u+1)):i.length==1?l=[i.pop(),c]:(n=i.pop(),n=0?a:c;i.length&&(l=[s,o])}return l}});var df=x((wb,af)=>{var Dv=tf(),lf=of();af.exports=Tv;var cf="\0SLASH"+Math.random()+"\0",uf="\0OPEN"+Math.random()+"\0",Ao="\0CLOSE"+Math.random()+"\0",hf="\0COMMA"+Math.random()+"\0",ff="\0PERIOD"+Math.random()+"\0";function Io(e){return parseInt(e,10)==e?parseInt(e,10):e.charCodeAt(0)}function Rv(e){return e.split("\\\\").join(cf).split("\\{").join(uf).split("\\}").join(Ao).split("\\,").join(hf).split("\\.").join(ff)}function Av(e){return e.split(cf).join("\\").split(uf).join("{").split(Ao).join("}").split(hf).join(",").split(ff).join(".")}function pf(e){if(!e)return[""];var t=[],r=lf("{","}",e);if(!r)return e.split(",");var i=r.pre,n=r.body,s=r.post,o=i.split(",");o[o.length-1]+="{"+n+"}";var l=pf(s);return s.length&&(o[o.length-1]+=l.shift(),o.push.apply(o,l)),t.push.apply(t,o),t}function Tv(e){return e?(e.substr(0,2)==="{}"&&(e="\\{\\}"+e.substr(2)),Tr(Rv(e),!0).map(Av)):[]}function Iv(e){return"{"+e+"}"}function xv(e){return/^-?0\d/.test(e)}function Lv(e,t){return e<=t}function Mv(e,t){return e>=t}function Tr(e,t){var r=[],i=lf("{","}",e);if(!i||/\$$/.test(i.pre))return[e];var n=/^-?\d+\.\.-?\d+(?:\.\.-?\d+)?$/.test(i.body),s=/^[a-zA-Z]\.\.[a-zA-Z](?:\.\.-?\d+)?$/.test(i.body),o=n||s,l=i.body.indexOf(",")>=0;if(!o&&!l)return i.post.match(/,.*\}/)?(e=i.pre+"{"+i.body+Ao+i.post,Tr(e)):[e];var a;if(o)a=i.body.split(/\.\./);else if(a=pf(i.body),a.length===1&&(a=Tr(a[0],!1).map(Iv),a.length===1)){var u=i.post.length?Tr(i.post,!1):[""];return u.map(function(L){return i.pre+a[0]+L})}var c=i.pre,u=i.post.length?Tr(i.post,!1):[""],f;if(o){var y=Io(a[0]),b=Io(a[1]),E=Math.max(a[0].length,a[1].length),m=a.length==3?Math.abs(Io(a[2])):1,w=Lv,O=b0){var _=new Array(A+1).join("0");g<0?N="-"+_+N.slice(1):N=_+N}}f.push(N)}}else f=Dv(a,function(D){return Tr(D,!1)});for(var R=0;R{mf.exports=Bt;Bt.Minimatch=ht;var Oi={sep:"/"};try{Oi=require("path")}catch(e){}var xo=Bt.GLOBSTAR=ht.GLOBSTAR={},Cv=df(),yf={"!":{open:"(?:(?!(?:",close:"))[^/]*?)"},"?":{open:"(?:",close:")?"},"+":{open:"(?:",close:")+"},"*":{open:"(?:",close:")*"},"@":{open:"(?:",close:")"}},Lo="[^/]",Mo=Lo+"*?",Pv="(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?",kv="(?:(?!(?:\\/|^)\\.).)*?",gf=Bv("().*{}+?[]^$\\!");function Bv(e){return e.split("").reduce(function(t,r){return t[r]=!0,t},{})}var vf=/\/+/;Bt.filter=Fv;function Fv(e,t){return t=t||{},function(r,i,n){return Bt(r,e,t)}}function wf(e,t){e=e||{},t=t||{};var r={};return Object.keys(t).forEach(function(i){r[i]=t[i]}),Object.keys(e).forEach(function(i){r[i]=e[i]}),r}Bt.defaults=function(e){if(!e||!Object.keys(e).length)return Bt;var t=Bt,r=function(n,s,o){return t.minimatch(n,s,wf(e,o))};return r.Minimatch=function(n,s){return new t.Minimatch(n,wf(e,s))},r};ht.defaults=function(e){return!e||!Object.keys(e).length?ht:Bt.defaults(e).Minimatch};function Bt(e,t,r){if(typeof t!="string")throw new TypeError("glob pattern string required");return r||(r={}),!r.nocomment&&t.charAt(0)==="#"?!1:t.trim()===""?e==="":new ht(t,r).match(e)}function ht(e,t){if(!(this instanceof ht))return new ht(e,t);if(typeof e!="string")throw new TypeError("glob pattern string required");t||(t={}),e=e.trim(),Oi.sep!=="/"&&(e=e.split(Oi.sep).join("/")),this.options=t,this.set=[],this.pattern=e,this.regexp=null,this.negate=!1,this.comment=!1,this.empty=!1,this.make()}ht.prototype.debug=function(){};ht.prototype.make=qv;function qv(){if(!this._made){var e=this.pattern,t=this.options;if(!t.nocomment&&e.charAt(0)==="#"){this.comment=!0;return}if(!e){this.empty=!0;return}this.parseNegate();var r=this.globSet=this.braceExpand();t.debug&&(this.debug=console.error),this.debug(this.pattern,r),r=this.globParts=r.map(function(i){return i.split(vf)}),this.debug(this.pattern,r),r=r.map(function(i,n,s){return i.map(this.parse,this)},this),this.debug(this.pattern,r),r=r.filter(function(i){return i.indexOf(!1)===-1}),this.debug(this.pattern,r),this.set=r}}ht.prototype.parseNegate=Uv;function Uv(){var e=this.pattern,t=!1,r=this.options,i=0;if(!r.nonegate){for(var n=0,s=e.length;n1024*64)throw new TypeError("pattern is too long");var r=this.options;if(!r.noglobstar&&e==="**")return xo;if(e==="")return"";var i="",n=!!r.nocase,s=!1,o=[],l=[],a,c=!1,u=-1,f=-1,y=e.charAt(0)==="."?"":r.dot?"(?!(?:^|\\/)\\.{1,2}(?:$|\\/))":"(?!\\.)",b=this;function E(){if(a){switch(a){case"*":i+=Mo,n=!0;break;case"?":i+=Lo,n=!0;break;default:i+="\\"+a;break}b.debug("clearStateChar %j %j",a,i),a=!1}}for(var m=0,w=e.length,O;m-1;B--){var P=l[B],D=i.slice(0,P.reStart),L=i.slice(P.reStart,P.reEnd-8),F=i.slice(P.reEnd-8,P.reEnd),U=i.slice(P.reEnd);F+=U;var Y=D.split("(").length-1,$=U;for(m=0;m=0&&(n=e[s],!n);s--);for(s=0;s>> no match, partial?`,e,u,t,f),u===o))}var b;if(typeof a=="string"?(i.nocase?b=c.toLowerCase()===a.toLowerCase():b=c===a,this.debug("string match",a,c,b)):(b=c.match(a),this.debug("pattern match",a,c,b)),!b)return!1}if(n===o&&s===l)return!0;if(n===o)return r;if(s===l){var E=n===o-1&&e[n]==="";return E}throw new Error("wtf?")};function Xv(e){return e.replace(/\\(.)/g,"$1")}function Gv(e){return e.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&")}});var bf=x((bb,Co)=>{typeof Object.create=="function"?Co.exports=function(t,r){r&&(t.super_=r,t.prototype=Object.create(r.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}))}:Co.exports=function(t,r){if(r){t.super_=r;var i=function(){};i.prototype=r.prototype,t.prototype=new i,t.prototype.constructor=t}}});var _f=x((_b,Po)=>{try{if(ko=require("util"),typeof ko.inherits!="function")throw"";Po.exports=ko.inherits}catch(e){Po.exports=bf()}var ko});var An=x((Sb,Rn)=>{"use strict";function Sf(e){return e.charAt(0)==="/"}function Of(e){var t=/^([a-zA-Z]:|[\\\/]{2}[^\\\/]+[\\\/]+[^\\\/]+)?([\\\/])?([\s\S]*?)$/,r=t.exec(e),i=r[1]||"",n=Boolean(i&&i.charAt(1)!==":");return Boolean(r[2]||n)}Rn.exports=process.platform==="win32"?Of:Sf;Rn.exports.posix=Sf;Rn.exports.win32=Of});var Fo=x(Vt=>{Vt.alphasort=Nf;Vt.alphasorti=Df;Vt.setopts=Wv;Vt.ownProp=Tf;Vt.makeAbs=Ni;Vt.finish=Hv;Vt.mark=Vv;Vt.isIgnored=Rf;Vt.childrenIgnored=Yv;function Tf(e,t){return Object.prototype.hasOwnProperty.call(e,t)}var Rr=require("path"),Zv=Tn(),Af=An(),Bo=Zv.Minimatch;function Df(e,t){return e.toLowerCase().localeCompare(t.toLowerCase())}function Nf(e,t){return e.localeCompare(t)}function Jv(e,t){e.ignore=t.ignore||[],Array.isArray(e.ignore)||(e.ignore=[e.ignore]),e.ignore.length&&(e.ignore=e.ignore.map(Kv))}function Kv(e){var t=null;if(e.slice(-3)==="/**"){var r=e.replace(/(\/\*\*)+$/,"");t=new Bo(r,{dot:!0})}return{matcher:new Bo(e,{dot:!0}),gmatcher:t}}function Wv(e,t,r){if(r||(r={}),r.matchBase&&t.indexOf("/")===-1){if(r.noglobstar)throw new Error("base matching requires globstar");t="**/"+t}e.silent=!!r.silent,e.pattern=t,e.strict=r.strict!==!1,e.realpath=!!r.realpath,e.realpathCache=r.realpathCache||Object.create(null),e.follow=!!r.follow,e.dot=!!r.dot,e.mark=!!r.mark,e.nodir=!!r.nodir,e.nodir&&(e.mark=!0),e.sync=!!r.sync,e.nounique=!!r.nounique,e.nonull=!!r.nonull,e.nosort=!!r.nosort,e.nocase=!!r.nocase,e.stat=!!r.stat,e.noprocess=!!r.noprocess,e.absolute=!!r.absolute,e.maxLength=r.maxLength||Infinity,e.cache=r.cache||Object.create(null),e.statCache=r.statCache||Object.create(null),e.symlinks=r.symlinks||Object.create(null),Jv(e,r),e.changedCwd=!1;var i=process.cwd();Tf(r,"cwd")?(e.cwd=Rr.resolve(r.cwd),e.changedCwd=e.cwd!==i):e.cwd=i,e.root=r.root||Rr.resolve(e.cwd,"/"),e.root=Rr.resolve(e.root),process.platform==="win32"&&(e.root=e.root.replace(/\\/g,"/")),e.cwdAbs=Af(e.cwd)?e.cwd:Ni(e,e.cwd),process.platform==="win32"&&(e.cwdAbs=e.cwdAbs.replace(/\\/g,"/")),e.nomount=!!r.nomount,r.nonegate=!0,r.nocomment=!0,e.minimatch=new Bo(t,r),e.options=e.minimatch.options}function Hv(e){for(var t=e.nounique,r=t?[]:Object.create(null),i=0,n=e.matches.length;i{If.exports=xf;xf.GlobSync=ot;var In=require("fs"),Qv=Ro(),Lf=Tn(),Nb=Lf.Minimatch,Db=qo().Glob,Tb=require("util"),Uo=require("path"),Mf=require("assert"),xn=An(),se=Fo(),Rb=se.alphasort,Ab=se.alphasorti,t0=se.setopts,jo=se.ownProp,e0=se.childrenIgnored,r0=se.isIgnored;function xf(e,t){if(typeof t=="function"||arguments.length===3)throw new TypeError(`callback provided to sync glob -See: https://github.com/isaacs/node-glob/issues/167`);return new ot(e,t).found}function ot(e,t){if(!e)throw new Error("must provide pattern");if(typeof t=="function"||arguments.length===3)throw new TypeError(`callback provided to sync glob -See: https://github.com/isaacs/node-glob/issues/167`);if(!(this instanceof ot))return new ot(e,t);if(t0(this,e,t),this.noprocess)return this;var r=this.minimatch.set.length;this.matches=new Array(r);for(var i=0;ithis.maxLength)return!1;if(!this.stat&&jo(this.cache,t)){var o=this.cache[t];if(Array.isArray(o)&&(o="DIR"),!r||o==="DIR")return o;if(r&&o==="FILE")return!1}var i,n=this.statCache[t];if(!n){var s;try{s=In.lstatSync(t)}catch(l){if(l&&(l.code==="ENOENT"||l.code==="ENOTDIR"))return this.statCache[t]=!1,!1}if(s&&s.isSymbolicLink())try{n=In.statSync(t)}catch(l){n=s}else n=s}this.statCache[t]=n;var o=!0;return n&&(o=n.isDirectory()?"DIR":"FILE"),this.cache[t]=this.cache[t]||o,r&&o==="FILE"?!1:o};ot.prototype._mark=function(e){return se.mark(this,e)};ot.prototype._makeAbs=function(e){return se.makeAbs(this,e)}});var Xo=x((xb,Pf)=>{Pf.exports=kf;function kf(e,t){if(e&&t)return kf(e)(t);if(typeof e!="function")throw new TypeError("need wrapper function");return Object.keys(e).forEach(function(i){r[i]=e[i]}),r;function r(){for(var i=new Array(arguments.length),n=0;n{var Bf=Xo();zo.exports=Bf(Ln);zo.exports.strict=Bf(Ff);Ln.proto=Ln(function(){Object.defineProperty(Function.prototype,"once",{value:function(){return Ln(this)},configurable:!0}),Object.defineProperty(Function.prototype,"onceStrict",{value:function(){return Ff(this)},configurable:!0})});function Ln(e){var t=function(){return t.called?t.value:(t.called=!0,t.value=e.apply(this,arguments))};return t.called=!1,t}function Ff(e){var t=function(){if(t.called)throw new Error(t.onceError);return t.called=!0,t.value=e.apply(this,arguments)},r=e.name||"Function wrapped with `once`";return t.onceError=r+" shouldn't be called more than once",t.called=!1,t}});var Uf=x((Mb,qf)=>{var i0=Xo(),Di=Object.create(null),n0=Go();qf.exports=i0(s0);function s0(e,t){return Di[e]?(Di[e].push(t),null):(Di[e]=[t],o0(e))}function o0(e){return n0(function t(){var r=Di[e],i=r.length,n=a0(arguments);try{for(var s=0;si?(r.splice(0,i),process.nextTick(function(){t.apply(null,n)})):delete Di[e]}})}function a0(e){for(var t=e.length,r=[],i=0;i{jf.exports=Xe;var Mn=require("fs"),l0=Ro(),Xf=Tn(),Cb=Xf.Minimatch,c0=_f(),u0=require("events").EventEmitter,$o=require("path"),Wo=require("assert"),Ti=An(),Ho=Cf(),oe=Fo(),Pb=oe.alphasort,kb=oe.alphasorti,h0=oe.setopts,Vo=oe.ownProp,Yo=Uf(),Bb=require("util"),f0=oe.childrenIgnored,p0=oe.isIgnored,d0=Go();function Xe(e,t,r){if(typeof t=="function"&&(r=t,t={}),t||(t={}),t.sync){if(r)throw new TypeError("callback provided to sync glob");return Ho(e,t)}return new K(e,t,r)}Xe.sync=Ho;var m0=Xe.GlobSync=Ho.GlobSync;Xe.glob=Xe;function y0(e,t){if(t===null||typeof t!="object")return e;for(var r=Object.keys(t),i=r.length;i--;)e[r[i]]=t[r[i]];return e}Xe.hasMagic=function(e,t){var r=y0({},t);r.noprocess=!0;var i=new K(e,r),n=i.minimatch.set;if(!e)return!1;if(n.length>1)return!0;for(var s=0;sthis.maxLength)return t();if(!this.stat&&Vo(this.cache,r)){var n=this.cache[r];if(Array.isArray(n)&&(n="DIR"),!i||n==="DIR")return t(null,n);if(i&&n==="FILE")return t()}var s,o=this.statCache[r];if(o!==void 0){if(o===!1)return t(null,o);var l=o.isDirectory()?"DIR":"FILE";return i&&l==="FILE"?t():t(null,l,o)}var a=this,c=Yo("stat\0"+r,u);c&&Mn.lstat(r,c);function u(f,y){if(y&&y.isSymbolicLink())return Mn.stat(r,function(b,E){b?a._stat2(e,r,null,y,t):a._stat2(e,r,b,E,t)});a._stat2(e,r,f,y,t)}};K.prototype._stat2=function(e,t,r,i,n){if(r&&(r.code==="ENOENT"||r.code==="ENOTDIR"))return this.statCache[t]=!1,n();var s=e.slice(-1)==="/";if(this.statCache[t]=i,t.slice(-1)==="/"&&i&&!i.isDirectory())return n(null,!1,i);var o=!0;return i&&(o=i.isDirectory()?"DIR":"FILE"),this.cache[t]=this.cache[t]||o,s&&o==="FILE"?n():n(null,o,i)}});var Zf=x((qb,zf)=>{var tt=require("assert"),Gf=require("path"),$f=require("fs"),Ar;try{Ar=qo()}catch(e){}var v0={nosort:!0,silent:!0},Zo=0,Ri=process.platform==="win32",Wf=e=>{if(["unlink","chmod","stat","lstat","rmdir","readdir"].forEach(r=>{e[r]=e[r]||$f[r],r=r+"Sync",e[r]=e[r]||$f[r]}),e.maxBusyTries=e.maxBusyTries||3,e.emfileWait=e.emfileWait||1e3,e.glob===!1&&(e.disableGlob=!0),e.disableGlob!==!0&&Ar===void 0)throw Error("glob dependency not found, set `options.disableGlob = true` if intentional");e.disableGlob=e.disableGlob||!1,e.glob=e.glob||v0},Jo=(e,t,r)=>{typeof t=="function"&&(r=t,t={}),tt(e,"rimraf: missing path"),tt.equal(typeof e,"string","rimraf: path should be a string"),tt.equal(typeof r,"function","rimraf: callback function required"),tt(t,"rimraf: invalid options argument provided"),tt.equal(typeof t,"object","rimraf: options should be object"),Wf(t);let i=0,n=null,s=0,o=a=>{n=n||a,--s==0&&r(n)},l=(a,c)=>{if(a)return r(a);if(s=c.length,s===0)return r();c.forEach(u=>{let f=y=>{if(y){if((y.code==="EBUSY"||y.code==="ENOTEMPTY"||y.code==="EPERM")&&iKo(u,t,f),i*100);if(y.code==="EMFILE"&&ZoKo(u,t,f),Zo++);y.code==="ENOENT"&&(y=null)}Zo=0,o(y)};Ko(u,t,f)})};if(t.disableGlob||!Ar.hasMagic(e))return l(null,[e]);t.lstat(e,(a,c)=>{if(!a)return l(null,[e]);Ar(e,t.glob,l)})},Ko=(e,t,r)=>{tt(e),tt(t),tt(typeof r=="function"),t.lstat(e,(i,n)=>{if(i&&i.code==="ENOENT")return r(null);if(i&&i.code==="EPERM"&&Ri&&Hf(e,t,i,r),n&&n.isDirectory())return Cn(e,t,i,r);t.unlink(e,s=>{if(s){if(s.code==="ENOENT")return r(null);if(s.code==="EPERM")return Ri?Hf(e,t,s,r):Cn(e,t,s,r);if(s.code==="EISDIR")return Cn(e,t,s,r)}return r(s)})})},Hf=(e,t,r,i)=>{tt(e),tt(t),tt(typeof i=="function"),t.chmod(e,438,n=>{n?i(n.code==="ENOENT"?null:r):t.stat(e,(s,o)=>{s?i(s.code==="ENOENT"?null:r):o.isDirectory()?Cn(e,t,r,i):t.unlink(e,i)})})},Vf=(e,t,r)=>{tt(e),tt(t);try{t.chmodSync(e,438)}catch(n){if(n.code==="ENOENT")return;throw r}let i;try{i=t.statSync(e)}catch(n){if(n.code==="ENOENT")return;throw r}i.isDirectory()?Pn(e,t,r):t.unlinkSync(e)},Cn=(e,t,r,i)=>{tt(e),tt(t),tt(typeof i=="function"),t.rmdir(e,n=>{n&&(n.code==="ENOTEMPTY"||n.code==="EEXIST"||n.code==="EPERM")?w0(e,t,i):n&&n.code==="ENOTDIR"?i(r):i(n)})},w0=(e,t,r)=>{tt(e),tt(t),tt(typeof r=="function"),t.readdir(e,(i,n)=>{if(i)return r(i);let s=n.length;if(s===0)return t.rmdir(e,r);let o;n.forEach(l=>{Jo(Gf.join(e,l),t,a=>{if(!o){if(a)return r(o=a);--s==0&&t.rmdir(e,r)}})})})},Yf=(e,t)=>{t=t||{},Wf(t),tt(e,"rimraf: missing path"),tt.equal(typeof e,"string","rimraf: path should be a string"),tt(t,"rimraf: missing options"),tt.equal(typeof t,"object","rimraf: options should be object");let r;if(t.disableGlob||!Ar.hasMagic(e))r=[e];else try{t.lstatSync(e),r=[e]}catch(i){r=Ar.sync(e,t.glob)}if(!!r.length)for(let i=0;i{tt(e),tt(t);try{t.rmdirSync(e)}catch(i){if(i.code==="ENOENT")return;if(i.code==="ENOTDIR")throw r;(i.code==="ENOTEMPTY"||i.code==="EEXIST"||i.code==="EPERM")&&E0(e,t)}},E0=(e,t)=>{tt(e),tt(t),t.readdirSync(e).forEach(n=>Yf(Gf.join(e,n),t));let r=Ri?100:1,i=0;do{let n=!0;try{let s=t.rmdirSync(e,t);return n=!1,s}finally{if(++i{var ft=require("fs"),Qo=require("os"),It=require("path"),Kf=require("crypto"),Yt={fs:ft.constants,os:Qo.constants},Jf=Zf(),Qf="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",tp=/XXXXXX/,b0=3,ep=(Yt.O_CREAT||Yt.fs.O_CREAT)|(Yt.O_EXCL||Yt.fs.O_EXCL)|(Yt.O_RDWR||Yt.fs.O_RDWR),_0=Qo.platform()==="win32",S0=Yt.EBADF||Yt.os.errno.EBADF,O0=Yt.ENOENT||Yt.os.errno.ENOENT,rp=448,ip=384,N0="exit",Ir=[],np=ft.rmdirSync.bind(ft),sp=Jf.sync,op=!1;function ta(e,t){let r=xr(e,t),i=r[0],n=r[1];try{lp(i)}catch(o){return n(o)}let s=i.tries;(function o(){try{let l=ap(i);ft.stat(l,function(a){if(!a)return s-- >0?o():n(new Error("Could not get a unique tmp filename, max tries reached "+l));n(null,l)})}catch(l){n(l)}})()}function ea(e){let t=xr(e),r=t[0];lp(r);let i=r.tries;do{let n=ap(r);try{ft.statSync(n)}catch(s){return n}}while(i-- >0);throw new Error("Could not get a unique tmp filename, max tries reached")}function D0(e,t){let r=xr(e,t),i=r[0],n=r[1];ta(i,function(o,l){if(o)return n(o);ft.open(l,ep,i.mode||ip,function(c,u){if(c)return n(c);if(i.discardDescriptor)return ft.close(u,function(y){return n(y,l,void 0,ra(l,-1,i,!1))});{let f=i.discardDescriptor||i.detachDescriptor;n(null,l,u,ra(l,f?-1:u,i,!1))}})})}function T0(e){let t=xr(e),r=t[0],i=r.discardDescriptor||r.detachDescriptor,n=ea(r);var s=ft.openSync(n,ep,r.mode||ip);return r.discardDescriptor&&(ft.closeSync(s),s=void 0),{name:n,fd:s,removeCallback:ra(n,i?-1:s,r,!0)}}function R0(e,t){let r=xr(e,t),i=r[0],n=r[1];ta(i,function(o,l){if(o)return n(o);ft.mkdir(l,i.mode||rp,function(c){if(c)return n(c);n(null,l,cp(l,i,!1))})})}function A0(e){let t=xr(e),r=t[0],i=ea(r);return ft.mkdirSync(i,r.mode||rp),{name:i,removeCallback:cp(i,r,!0)}}function I0(e,t){let r=function(i){if(i&&!ia(i))return t(i);t()};0<=e[0]?ft.close(e[0],function(){ft.unlink(e[1],r)}):ft.unlink(e[1],r)}function L0(e){let t=null;try{0<=e[0]&&ft.closeSync(e[0])}catch(r){if(!x0(r)&&!ia(r))throw r}finally{try{ft.unlinkSync(e[1])}catch(r){ia(r)||(t=r)}}if(t!==null)throw t}function ra(e,t,r,i){let n=kn(L0,[t,e],i),s=kn(I0,[t,e],i,n);return r.keep||Ir.unshift(n),i?n:s}function cp(e,t,r){let i=t.unsafeCleanup?Jf:ft.rmdir.bind(ft),n=t.unsafeCleanup?sp:np,s=kn(n,e,r),o=kn(i,e,r,s);return t.keep||Ir.unshift(s),r?s:o}function kn(e,t,r,i){let n=!1;return function s(o){if(!n){let l=i||s,a=Ir.indexOf(l);return a>=0&&Ir.splice(a,1),n=!0,r||e===np||e===sp?e(t):e(t,o||function(){})}}}function M0(){if(!!op)for(;Ir.length;)try{Ir[0]()}catch(e){}}function up(e){let t=[],r=null;try{r=Kf.randomBytes(e)}catch(n){r=Kf.pseudoRandomBytes(e)}for(var i=0;i{"use strict";var{promisify:Ai}=require("util"),Ne=aa();xt.exports.fileSync=Ne.fileSync;var P0=Ai((e,t)=>Ne.file(e,(r,i,n,s)=>r?t(r):t(void 0,{path:i,fd:n,cleanup:Ai(s)})));xt.exports.file=async e=>P0(e);xt.exports.withFile=async function(t,r){let{path:i,fd:n,cleanup:s}=await xt.exports.file(r);try{return await t({path:i,fd:n})}finally{await s()}};xt.exports.dirSync=Ne.dirSync;var k0=Ai((e,t)=>Ne.dir(e,(r,i,n)=>r?t(r):t(void 0,{path:i,cleanup:Ai(n)})));xt.exports.dir=async e=>k0(e);xt.exports.withDir=async function(t,r){let{path:i,cleanup:n}=await xt.exports.dir(r);try{return await t({path:i})}finally{await n()}};xt.exports.tmpNameSync=Ne.tmpNameSync;xt.exports.tmpName=Ai(Ne.tmpName);xt.exports.tmpdir=Ne.tmpdir;xt.exports.setGracefulCleanup=Ne.setGracefulCleanup});var gp=x(la=>{var B0=Object.create,Bn=Object.defineProperty,F0=Object.getPrototypeOf,q0=Object.prototype.hasOwnProperty,U0=Object.getOwnPropertyNames,j0=Object.getOwnPropertyDescriptor,mp=e=>Bn(e,"__esModule",{value:!0}),X0=(e,t)=>{for(var r in t)Bn(e,r,{get:t[r],enumerable:!0})},z0=(e,t,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of U0(t))!q0.call(e,i)&&i!=="default"&&Bn(e,i,{get:()=>t[i],enumerable:!(r=j0(t,i))||r.enumerable});return e},Ii=e=>e&&e.__esModule?e:z0(mp(Bn(e!=null?B0(F0(e)):{},"default",{value:e,enumerable:!0})),e);mp(la);X0(la,{BINARY_VERSION:()=>G0,PACKAGE_NAMES:()=>$0,installBin:()=>W0,register:()=>H0});var yp=Ii(require("child_process")),V0=Ii(Hh()),Fn=Ii(require("fs")),xi=Ii(require("path")),Y0=Ii(dp());async function Z0(e){return xi.resolve(await V0.default("node_modules",{type:"directory",cwd:e}),"../")}var G0="1.0.7",$0={win64:"register-url-win64-bin","win64-uac":"register-url-win64-bin-uac"};async function W0(e=!0){let t=e?"register-url-win64-bin-uac":"register-url-win64-bin",r=await Z0(xi.resolve(__dirname));return new Promise((i,n)=>{let s=yp.default.spawn("npm",["install",`${t}@1.0.7`,"--legacy-peer-deps","-g","--production","--no-fund","--no-audit","--no-package-lock","--ignore-scripts"],{cwd:r,detached:!1,shell:!0,env:process.env});s.stdout.pipe(process.stdout),s.stdin.pipe(process.stdin),s.once("exit",i),s.once("error",n)})}async function H0(e,t=null){var r,i;let n=t;if(!t){let l=((i=(r=e.origins)==null?void 0:r.length)!=null?i:0)>0?"register-url-win64-bin-uac":"register-url-win64-bin";try{n=require(xi.resolve(__dirname,"node_modules",l))}catch(a){return Promise.reject(`Please install "${l}" into ${xi.resolve(__dirname)} before running this function. For convienience, you can call installBin()`)}}if(await Fn.promises.access(n,Fn.constants.F_OK),typeof e.register=="undefined"&&(e.register=!0),!e.output){let{path:o}=await Y0.default.file({discardDescriptor:!0,postfix:".json"});e.output=o}let s=xi.resolve(e.output);return delete e.output,await Fn.promises.writeFile(s,JSON.stringify(e),"utf-8"),await new Promise(async(o,l)=>{yp.default.spawn(n,[s],{env:process.env,windowsHide:!0,detached:!1,shell:!0,stdio:"inherit"}).once("exit",async()=>{let c;try{if(c=JSON.parse((await Fn.promises.readFile(s,"utf-8")).trim()),typeof c!="object")throw"Empty response"}catch(u){c={error:u.message,exception:u,chrome:!1,protocol:!1,edge:!1}}o(c)})}).catch(o=>Promise.resolve({error:o.message,exception:o,chrome:!1,edge:!1,protocol:!1}))}});var Lr=x((zb,vp)=>{"use strict";var wp=new Map([["C","cwd"],["f","file"],["z","gzip"],["P","preservePaths"],["U","unlink"],["strip-components","strip"],["stripComponents","strip"],["keep-newer","newer"],["keepNewer","newer"],["keep-newer-files","newer"],["keepNewerFiles","newer"],["k","keep"],["keep-existing","keep"],["keepExisting","keep"],["m","noMtime"],["no-mtime","noMtime"],["p","preserveOwner"],["L","follow"],["h","follow"]]);vp.exports=e=>e?Object.keys(e).map(t=>[wp.has(t)?wp.get(t):t,e[t]]).reduce((t,r)=>(t[r[0]]=r[1],t),Object.create(null)):{}});var bp=x((Gb,Ep)=>{"use strict";Ep.exports=function(e){e.prototype[Symbol.iterator]=function*(){for(let t=this.head;t;t=t.next)yield t.value}}});var Sp=x(($b,_p)=>{"use strict";_p.exports=H;H.Node=ze;H.create=H;function H(e){var t=this;if(t instanceof H||(t=new H),t.tail=null,t.head=null,t.length=0,e&&typeof e.forEach=="function")e.forEach(function(n){t.push(n)});else if(arguments.length>0)for(var r=0,i=arguments.length;r1)r=t;else if(this.head)i=this.head.next,r=this.head.value;else throw new TypeError("Reduce of empty list with no initial value");for(var n=0;i!==null;n++)r=e(r,i.value,n),i=i.next;return r};H.prototype.reduceReverse=function(e,t){var r,i=this.tail;if(arguments.length>1)r=t;else if(this.tail)i=this.tail.prev,r=this.tail.value;else throw new TypeError("Reduce of empty list with no initial value");for(var n=this.length-1;i!==null;n--)r=e(r,i.value,n),i=i.prev;return r};H.prototype.toArray=function(){for(var e=new Array(this.length),t=0,r=this.head;r!==null;t++)e[t]=r.value,r=r.next;return e};H.prototype.toArrayReverse=function(){for(var e=new Array(this.length),t=0,r=this.tail;r!==null;t++)e[t]=r.value,r=r.prev;return e};H.prototype.slice=function(e,t){t=t||this.length,t<0&&(t+=this.length),e=e||0,e<0&&(e+=this.length);var r=new H;if(tthis.length&&(t=this.length);for(var i=0,n=this.head;n!==null&&ithis.length&&(t=this.length);for(var i=this.length,n=this.tail;n!==null&&i>t;i--)n=n.prev;for(;n!==null&&i>e;i--,n=n.prev)r.push(n.value);return r};H.prototype.splice=function(e,t,...r){e>this.length&&(e=this.length-1),e<0&&(e=this.length+e);for(var i=0,n=this.head;n!==null&&i{"use strict";var tw=require("events"),Np=require("stream"),Li=Sp(),Dp=require("string_decoder").StringDecoder,le=Symbol("EOF"),Mi=Symbol("maybeEmitEnd"),De=Symbol("emittedEnd"),qn=Symbol("emittingEnd"),Un=Symbol("closed"),Tp=Symbol("read"),ca=Symbol("flush"),Rp=Symbol("flushChunk"),Nt=Symbol("encoding"),ce=Symbol("decoder"),jn=Symbol("flowing"),Ci=Symbol("paused"),Pi=Symbol("resume"),gt=Symbol("bufferLength"),Ap=Symbol("bufferPush"),ua=Symbol("bufferShift"),dt=Symbol("objectMode"),mt=Symbol("destroyed"),Ip=global._MP_NO_ITERATOR_SYMBOLS_!=="1",ew=Ip&&Symbol.asyncIterator||Symbol("asyncIterator not implemented"),rw=Ip&&Symbol.iterator||Symbol("iterator not implemented"),xp=e=>e==="end"||e==="finish"||e==="prefinish",iw=e=>e instanceof ArrayBuffer||typeof e=="object"&&e.constructor&&e.constructor.name==="ArrayBuffer"&&e.byteLength>=0,nw=e=>!Buffer.isBuffer(e)&&ArrayBuffer.isView(e);Op.exports=class Lp extends Np{constructor(t){super();this[jn]=!1,this[Ci]=!1,this.pipes=new Li,this.buffer=new Li,this[dt]=t&&t.objectMode||!1,this[dt]?this[Nt]=null:this[Nt]=t&&t.encoding||null,this[Nt]==="buffer"&&(this[Nt]=null),this[ce]=this[Nt]?new Dp(this[Nt]):null,this[le]=!1,this[De]=!1,this[qn]=!1,this[Un]=!1,this.writable=!0,this.readable=!0,this[gt]=0,this[mt]=!1}get bufferLength(){return this[gt]}get encoding(){return this[Nt]}set encoding(t){if(this[dt])throw new Error("cannot set encoding in objectMode");if(this[Nt]&&t!==this[Nt]&&(this[ce]&&this[ce].lastNeed||this[gt]))throw new Error("cannot change encoding");this[Nt]!==t&&(this[ce]=t?new Dp(t):null,this.buffer.length&&(this.buffer=this.buffer.map(r=>this[ce].write(r)))),this[Nt]=t}setEncoding(t){this.encoding=t}get objectMode(){return this[dt]}set objectMode(t){this[dt]=this[dt]||!!t}write(t,r,i){if(this[le])throw new Error("write after end");return this[mt]?(this.emit("error",Object.assign(new Error("Cannot call write after a stream was destroyed"),{code:"ERR_STREAM_DESTROYED"})),!0):(typeof r=="function"&&(i=r,r="utf8"),r||(r="utf8"),!this[dt]&&!Buffer.isBuffer(t)&&(nw(t)?t=Buffer.from(t.buffer,t.byteOffset,t.byteLength):iw(t)?t=Buffer.from(t):typeof t!="string"&&(this.objectMode=!0)),!this.objectMode&&!t.length?(this[gt]!==0&&this.emit("readable"),i&&i(),this.flowing):(typeof t=="string"&&!this[dt]&&!(r===this[Nt]&&!this[ce].lastNeed)&&(t=Buffer.from(t,r)),Buffer.isBuffer(t)&&this[Nt]&&(t=this[ce].write(t)),this.flowing?(this[gt]!==0&&this[ca](!0),this.emit("data",t)):this[Ap](t),this[gt]!==0&&this.emit("readable"),i&&i(),this.flowing))}read(t){if(this[mt])return null;try{return this[gt]===0||t===0||t>this[gt]?null:(this[dt]&&(t=null),this.buffer.length>1&&!this[dt]&&(this.encoding?this.buffer=new Li([Array.from(this.buffer).join("")]):this.buffer=new Li([Buffer.concat(Array.from(this.buffer),this[gt])])),this[Tp](t||null,this.buffer.head.value))}finally{this[Mi]()}}[Tp](t,r){return t===r.length||t===null?this[ua]():(this.buffer.head.value=r.slice(t),r=r.slice(0,t),this[gt]-=t),this.emit("data",r),!this.buffer.length&&!this[le]&&this.emit("drain"),r}end(t,r,i){return typeof t=="function"&&(i=t,t=null),typeof r=="function"&&(i=r,r="utf8"),t&&this.write(t,r),i&&this.once("end",i),this[le]=!0,this.writable=!1,(this.flowing||!this[Ci])&&this[Mi](),this}[Pi](){this[mt]||(this[Ci]=!1,this[jn]=!0,this.emit("resume"),this.buffer.length?this[ca]():this[le]?this[Mi]():this.emit("drain"))}resume(){return this[Pi]()}pause(){this[jn]=!1,this[Ci]=!0}get destroyed(){return this[mt]}get flowing(){return this[jn]}get paused(){return this[Ci]}[Ap](t){return this[dt]?this[gt]+=1:this[gt]+=t.length,this.buffer.push(t)}[ua](){return this.buffer.length&&(this[dt]?this[gt]-=1:this[gt]-=this.buffer.head.value.length),this.buffer.shift()}[ca](t){do;while(this[Rp](this[ua]()));!t&&!this.buffer.length&&!this[le]&&this.emit("drain")}[Rp](t){return t?(this.emit("data",t),this.flowing):!1}pipe(t,r){if(this[mt])return;let i=this[De];r=r||{},t===process.stdout||t===process.stderr?r.end=!1:r.end=r.end!==!1;let n={dest:t,opts:r,ondrain:s=>this[Pi]()};return this.pipes.push(n),t.on("drain",n.ondrain),this[Pi](),i&&n.opts.end&&n.dest.end(),t}addListener(t,r){return this.on(t,r)}on(t,r){try{return super.on(t,r)}finally{t==="data"&&!this.pipes.length&&!this.flowing?this[Pi]():xp(t)&&this[De]&&(super.emit(t),this.removeAllListeners(t))}}get emittedEnd(){return this[De]}[Mi](){!this[qn]&&!this[De]&&!this[mt]&&this.buffer.length===0&&this[le]&&(this[qn]=!0,this.emit("end"),this.emit("prefinish"),this.emit("finish"),this[Un]&&this.emit("close"),this[qn]=!1)}emit(t,r){if(t!=="error"&&t!=="close"&&t!==mt&&this[mt])return;if(t==="data"){if(!r)return;this.pipes.length&&this.pipes.forEach(n=>n.dest.write(r)===!1&&this.pause())}else if(t==="end"){if(this[De]===!0)return;this[De]=!0,this.readable=!1,this[ce]&&(r=this[ce].end(),r&&(this.pipes.forEach(n=>n.dest.write(r)),super.emit("data",r))),this.pipes.forEach(n=>{n.dest.removeListener("drain",n.ondrain),n.opts.end&&n.dest.end()})}else if(t==="close"&&(this[Un]=!0,!this[De]&&!this[mt]))return;let i=new Array(arguments.length);if(i[0]=t,i[1]=r,arguments.length>2)for(let n=2;n{t.push(i),this[dt]||(t.dataLength+=i.length)}),r.then(()=>t)}concat(){return this[dt]?Promise.reject(new Error("cannot concat in objectMode")):this.collect().then(t=>this[dt]?Promise.reject(new Error("cannot concat in objectMode")):this[Nt]?t.join(""):Buffer.concat(t,t.dataLength))}promise(){return new Promise((t,r)=>{this.on(mt,()=>r(new Error("stream destroyed"))),this.on("end",()=>t()),this.on("error",i=>r(i))})}[ew](){return{next:()=>{let r=this.read();if(r!==null)return Promise.resolve({done:!1,value:r});if(this[le])return Promise.resolve({done:!0});let i=null,n=null,s=c=>{this.removeListener("data",o),this.removeListener("end",l),n(c)},o=c=>{this.removeListener("error",s),this.removeListener("end",l),this.pause(),i({value:c,done:!!this[le]})},l=()=>{this.removeListener("error",s),this.removeListener("data",o),i({done:!0})},a=()=>s(new Error("stream destroyed"));return new Promise((c,u)=>{n=u,i=c,this.once(mt,a),this.once("error",s),this.once("end",l),this.once("data",o)})}}}[rw](){return{next:()=>{let r=this.read();return{value:r,done:r===null}}}}destroy(t){return this[mt]?(t?this.emit("error",t):this.emit(mt),this):(this[mt]=!0,this.buffer=new Li,this[gt]=0,typeof this.close=="function"&&!this[Un]&&this.close(),t?this.emit("error",t):this.emit(mt),this)}static isStream(t){return!!t&&(t instanceof Lp||t instanceof Np||t instanceof tw&&(typeof t.pipe=="function"||typeof t.write=="function"&&typeof t.end=="function"))}}});var Cp=x((Hb,Mp)=>{var sw=require("zlib").constants||{ZLIB_VERNUM:4736};Mp.exports=Object.freeze(Object.assign(Object.create(null),{Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_VERSION_ERROR:-6,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,DEFLATE:1,INFLATE:2,GZIP:3,GUNZIP:4,DEFLATERAW:5,INFLATERAW:6,UNZIP:7,BROTLI_DECODE:8,BROTLI_ENCODE:9,Z_MIN_WINDOWBITS:8,Z_MAX_WINDOWBITS:15,Z_DEFAULT_WINDOWBITS:15,Z_MIN_CHUNK:64,Z_MAX_CHUNK:Infinity,Z_DEFAULT_CHUNK:16384,Z_MIN_MEMLEVEL:1,Z_MAX_MEMLEVEL:9,Z_DEFAULT_MEMLEVEL:8,Z_MIN_LEVEL:-1,Z_MAX_LEVEL:9,Z_DEFAULT_LEVEL:-1,BROTLI_OPERATION_PROCESS:0,BROTLI_OPERATION_FLUSH:1,BROTLI_OPERATION_FINISH:2,BROTLI_OPERATION_EMIT_METADATA:3,BROTLI_MODE_GENERIC:0,BROTLI_MODE_TEXT:1,BROTLI_MODE_FONT:2,BROTLI_DEFAULT_MODE:0,BROTLI_MIN_QUALITY:0,BROTLI_MAX_QUALITY:11,BROTLI_DEFAULT_QUALITY:11,BROTLI_MIN_WINDOW_BITS:10,BROTLI_MAX_WINDOW_BITS:24,BROTLI_LARGE_MAX_WINDOW_BITS:30,BROTLI_DEFAULT_WINDOW:22,BROTLI_MIN_INPUT_BLOCK_BITS:16,BROTLI_MAX_INPUT_BLOCK_BITS:24,BROTLI_PARAM_MODE:0,BROTLI_PARAM_QUALITY:1,BROTLI_PARAM_LGWIN:2,BROTLI_PARAM_LGBLOCK:3,BROTLI_PARAM_DISABLE_LITERAL_CONTEXT_MODELING:4,BROTLI_PARAM_SIZE_HINT:5,BROTLI_PARAM_LARGE_WINDOW:6,BROTLI_PARAM_NPOSTFIX:7,BROTLI_PARAM_NDIRECT:8,BROTLI_DECODER_RESULT_ERROR:0,BROTLI_DECODER_RESULT_SUCCESS:1,BROTLI_DECODER_RESULT_NEEDS_MORE_INPUT:2,BROTLI_DECODER_RESULT_NEEDS_MORE_OUTPUT:3,BROTLI_DECODER_PARAM_DISABLE_RING_BUFFER_REALLOCATION:0,BROTLI_DECODER_PARAM_LARGE_WINDOW:1,BROTLI_DECODER_NO_ERROR:0,BROTLI_DECODER_SUCCESS:1,BROTLI_DECODER_NEEDS_MORE_INPUT:2,BROTLI_DECODER_NEEDS_MORE_OUTPUT:3,BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_NIBBLE:-1,BROTLI_DECODER_ERROR_FORMAT_RESERVED:-2,BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_META_NIBBLE:-3,BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_ALPHABET:-4,BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_SAME:-5,BROTLI_DECODER_ERROR_FORMAT_CL_SPACE:-6,BROTLI_DECODER_ERROR_FORMAT_HUFFMAN_SPACE:-7,BROTLI_DECODER_ERROR_FORMAT_CONTEXT_MAP_REPEAT:-8,BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_1:-9,BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_2:-10,BROTLI_DECODER_ERROR_FORMAT_TRANSFORM:-11,BROTLI_DECODER_ERROR_FORMAT_DICTIONARY:-12,BROTLI_DECODER_ERROR_FORMAT_WINDOW_BITS:-13,BROTLI_DECODER_ERROR_FORMAT_PADDING_1:-14,BROTLI_DECODER_ERROR_FORMAT_PADDING_2:-15,BROTLI_DECODER_ERROR_FORMAT_DISTANCE:-16,BROTLI_DECODER_ERROR_DICTIONARY_NOT_SET:-19,BROTLI_DECODER_ERROR_INVALID_ARGUMENTS:-20,BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MODES:-21,BROTLI_DECODER_ERROR_ALLOC_TREE_GROUPS:-22,BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MAP:-25,BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_1:-26,BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_2:-27,BROTLI_DECODER_ERROR_ALLOC_BLOCK_TYPE_TREES:-30,BROTLI_DECODER_ERROR_UNREACHABLE:-31},sw))});var wa=x(Lt=>{"use strict";var ha=require("assert"),Te=require("buffer").Buffer,Pp=require("zlib"),Ge=Lt.constants=Cp(),ow=Mr(),kp=Te.concat,$e=Symbol("_superWrite"),ki=class extends Error{constructor(t){super("zlib: "+t.message);this.code=t.code,this.errno=t.errno,this.code||(this.code="ZLIB_ERROR"),this.message="zlib: "+t.message,Error.captureStackTrace(this,this.constructor)}get name(){return"ZlibError"}},aw=Symbol("opts"),Bi=Symbol("flushFlag"),Bp=Symbol("finishFlushFlag"),fa=Symbol("fullFlushFlag"),et=Symbol("handle"),Xn=Symbol("onError"),Cr=Symbol("sawError"),pa=Symbol("level"),da=Symbol("strategy"),ma=Symbol("ended"),Vb=Symbol("_defaultFullFlush"),ya=class extends ow{constructor(t,r){if(!t||typeof t!="object")throw new TypeError("invalid options for ZlibBase constructor");super(t);this[Cr]=!1,this[ma]=!1,this[aw]=t,this[Bi]=t.flush,this[Bp]=t.finishFlush;try{this[et]=new Pp[r](t)}catch(i){throw new ki(i)}this[Xn]=i=>{this[Cr]||(this[Cr]=!0,this.close(),this.emit("error",i))},this[et].on("error",i=>this[Xn](new ki(i))),this.once("end",()=>this.close)}close(){this[et]&&(this[et].close(),this[et]=null,this.emit("close"))}reset(){if(!this[Cr])return ha(this[et],"zlib binding closed"),this[et].reset()}flush(t){this.ended||(typeof t!="number"&&(t=this[fa]),this.write(Object.assign(Te.alloc(0),{[Bi]:t})))}end(t,r,i){return t&&this.write(t,r),this.flush(this[Bp]),this[ma]=!0,super.end(null,null,i)}get ended(){return this[ma]}write(t,r,i){if(typeof r=="function"&&(i=r,r="utf8"),typeof t=="string"&&(t=Te.from(t,r)),this[Cr])return;ha(this[et],"zlib binding closed");let n=this[et]._handle,s=n.close;n.close=()=>{};let o=this[et].close;this[et].close=()=>{},Te.concat=c=>c;let l;try{let c=typeof t[Bi]=="number"?t[Bi]:this[Bi];l=this[et]._processChunk(t,c),Te.concat=kp}catch(c){Te.concat=kp,this[Xn](new ki(c))}finally{this[et]&&(this[et]._handle=n,n.close=s,this[et].close=o,this[et].removeAllListeners("error"))}this[et]&&this[et].on("error",c=>this[Xn](new ki(c)));let a;if(l)if(Array.isArray(l)&&l.length>0){a=this[$e](Te.from(l[0]));for(let c=1;c{this.flush(n),s()};try{this[et].params(t,r)}finally{this[et].flush=i}this[et]&&(this[pa]=t,this[da]=r)}}}},Fp=class extends Re{constructor(t){super(t,"Deflate")}},qp=class extends Re{constructor(t){super(t,"Inflate")}},ga=Symbol("_portable"),Up=class extends Re{constructor(t){super(t,"Gzip");this[ga]=t&&!!t.portable}[$e](t){return this[ga]?(this[ga]=!1,t[9]=255,super[$e](t)):super[$e](t)}},jp=class extends Re{constructor(t){super(t,"Gunzip")}},Xp=class extends Re{constructor(t){super(t,"DeflateRaw")}},zp=class extends Re{constructor(t){super(t,"InflateRaw")}},Gp=class extends Re{constructor(t){super(t,"Unzip")}},va=class extends ya{constructor(t,r){t=t||{},t.flush=t.flush||Ge.BROTLI_OPERATION_PROCESS,t.finishFlush=t.finishFlush||Ge.BROTLI_OPERATION_FINISH,super(t,r),this[fa]=Ge.BROTLI_OPERATION_FLUSH}},$p=class extends va{constructor(t){super(t,"BrotliCompress")}},Wp=class extends va{constructor(t){super(t,"BrotliDecompress")}};Lt.Deflate=Fp;Lt.Inflate=qp;Lt.Gzip=Up;Lt.Gunzip=jp;Lt.DeflateRaw=Xp;Lt.InflateRaw=zp;Lt.Unzip=Gp;typeof Pp.BrotliCompress=="function"?(Lt.BrotliCompress=$p,Lt.BrotliDecompress=Wp):Lt.BrotliCompress=Lt.BrotliDecompress=class{constructor(){throw new Error("Brotli is not supported in this version of Node.js")}}});var zn=x((Kb,Hp)=>{"use strict";var lw=Mr(),Ea=Symbol("slurp");Hp.exports=class extends lw{constructor(t,r,i){super();switch(this.pause(),this.extended=r,this.globalExtended=i,this.header=t,this.startBlockSize=512*Math.ceil(t.size/512),this.blockRemain=this.startBlockSize,this.remain=t.size,this.type=t.type,this.meta=!1,this.ignore=!1,this.type){case"File":case"OldFile":case"Link":case"SymbolicLink":case"CharacterDevice":case"BlockDevice":case"Directory":case"FIFO":case"ContiguousFile":case"GNUDumpDir":break;case"NextFileHasLongLinkpath":case"NextFileHasLongPath":case"OldGnuLongPath":case"GlobalExtendedHeader":case"ExtendedHeader":case"OldExtendedHeader":this.meta=!0;break;default:this.ignore=!0}this.path=t.path,this.mode=t.mode,this.mode&&(this.mode=this.mode&4095),this.uid=t.uid,this.gid=t.gid,this.uname=t.uname,this.gname=t.gname,this.size=t.size,this.mtime=t.mtime,this.atime=t.atime,this.ctime=t.ctime,this.linkpath=t.linkpath,this.uname=t.uname,this.gname=t.gname,r&&this[Ea](r),i&&this[Ea](i,!0)}write(t){let r=t.length;if(r>this.blockRemain)throw new Error("writing more to entry than is appropriate");let i=this.remain,n=this.blockRemain;return this.remain=Math.max(0,i-r),this.blockRemain=Math.max(0,n-r),this.ignore?!0:i>=r?super.write(t):super.write(t.slice(0,i))}[Ea](t,r){for(let i in t)t[i]!==null&&t[i]!==void 0&&!(r&&i==="path")&&(this[i]=t[i])}}});var ba=x(Gn=>{"use strict";Gn.name=new Map([["0","File"],["","OldFile"],["1","Link"],["2","SymbolicLink"],["3","CharacterDevice"],["4","BlockDevice"],["5","Directory"],["6","FIFO"],["7","ContiguousFile"],["g","GlobalExtendedHeader"],["x","ExtendedHeader"],["A","SolarisACL"],["D","GNUDumpDir"],["I","Inode"],["K","NextFileHasLongLinkpath"],["L","NextFileHasLongPath"],["M","ContinuationFile"],["N","OldGnuLongPath"],["S","SparseFile"],["V","TapeVolumeHeader"],["X","OldExtendedHeader"]]);Gn.code=new Map(Array.from(Gn.name).map(e=>[e[1],e[0]]))});var Kp=x((Qb,Vp)=>{"use strict";var hw=(e,t)=>{if(Number.isSafeInteger(e))e<0?uw(e,t):cw(e,t);else throw Error("cannot encode number outside of javascript safe integer range");return t},cw=(e,t)=>{t[0]=128;for(var r=t.length;r>1;r--)t[r-1]=e&255,e=Math.floor(e/256)},uw=(e,t)=>{t[0]=255;var r=!1;e=e*-1;for(var i=t.length;i>1;i--){var n=e&255;e=Math.floor(e/256),r?t[i-1]=Yp(n):n===0?t[i-1]=0:(r=!0,t[i-1]=Zp(n))}},dw=e=>{let t=e[0],r=t===128?pw(e.slice(1,e.length)):t===255?fw(e):null;if(r===null)throw Error("invalid base256 encoding");if(!Number.isSafeInteger(r))throw Error("parsed number outside of javascript safe integer range");return r},fw=e=>{for(var t=e.length,r=0,i=!1,n=t-1;n>-1;n--){var s=e[n],o;i?o=Yp(s):s===0?o=s:(i=!0,o=Zp(s)),o!==0&&(r-=o*Math.pow(256,t-n-1))}return r},pw=e=>{for(var t=e.length,r=0,i=t-1;i>-1;i--){var n=e[i];n!==0&&(r+=n*Math.pow(256,t-i-1))}return r},Yp=e=>(255^e)&255,Zp=e=>(255^e)+1&255;Vp.exports={encode:hw,parse:dw}});var kr=x((t_,Jp)=>{"use strict";var _a=ba(),Pr=require("path").posix,Qp=Kp(),Sa=Symbol("slurp"),Mt=Symbol("type"),td=class{constructor(t,r,i,n){this.cksumValid=!1,this.needPax=!1,this.nullBlock=!1,this.block=null,this.path=null,this.mode=null,this.uid=null,this.gid=null,this.size=null,this.mtime=null,this.cksum=null,this[Mt]="0",this.linkpath=null,this.uname=null,this.gname=null,this.devmaj=0,this.devmin=0,this.atime=null,this.ctime=null,Buffer.isBuffer(t)?this.decode(t,r||0,i,n):t&&this.set(t)}decode(t,r,i,n){if(r||(r=0),!t||!(t.length>=r+512))throw new Error("need 512 bytes for header");if(this.path=We(t,r,100),this.mode=Ae(t,r+100,8),this.uid=Ae(t,r+108,8),this.gid=Ae(t,r+116,8),this.size=Ae(t,r+124,12),this.mtime=Oa(t,r+136,12),this.cksum=Ae(t,r+148,12),this[Sa](i),this[Sa](n,!0),this[Mt]=We(t,r+156,1),this[Mt]===""&&(this[Mt]="0"),this[Mt]==="0"&&this.path.substr(-1)==="/"&&(this[Mt]="5"),this[Mt]==="5"&&(this.size=0),this.linkpath=We(t,r+157,100),t.slice(r+257,r+265).toString()==="ustar\x0000")if(this.uname=We(t,r+265,32),this.gname=We(t,r+297,32),this.devmaj=Ae(t,r+329,8),this.devmin=Ae(t,r+337,8),t[r+475]!==0){let o=We(t,r+345,155);this.path=o+"/"+this.path}else{let o=We(t,r+345,130);o&&(this.path=o+"/"+this.path),this.atime=Oa(t,r+476,12),this.ctime=Oa(t,r+488,12)}let s=8*32;for(let o=r;o=r+512))throw new Error("need 512 bytes for header");let i=this.ctime||this.atime?130:155,n=mw(this.path||"",i),s=n[0],o=n[1];this.needPax=n[2],this.needPax=He(t,r,100,s)||this.needPax,this.needPax=Ie(t,r+100,8,this.mode)||this.needPax,this.needPax=Ie(t,r+108,8,this.uid)||this.needPax,this.needPax=Ie(t,r+116,8,this.gid)||this.needPax,this.needPax=Ie(t,r+124,12,this.size)||this.needPax,this.needPax=Na(t,r+136,12,this.mtime)||this.needPax,t[r+156]=this[Mt].charCodeAt(0),this.needPax=He(t,r+157,100,this.linkpath)||this.needPax,t.write("ustar\x0000",r+257,8),this.needPax=He(t,r+265,32,this.uname)||this.needPax,this.needPax=He(t,r+297,32,this.gname)||this.needPax,this.needPax=Ie(t,r+329,8,this.devmaj)||this.needPax,this.needPax=Ie(t,r+337,8,this.devmin)||this.needPax,this.needPax=He(t,r+345,i,o)||this.needPax,t[r+475]!==0?this.needPax=He(t,r+345,155,o)||this.needPax:(this.needPax=He(t,r+345,130,o)||this.needPax,this.needPax=Na(t,r+476,12,this.atime)||this.needPax,this.needPax=Na(t,r+488,12,this.ctime)||this.needPax);let l=8*32;for(let a=r;a{let r=100,i=e,n="",s,o=Pr.parse(e).root||".";if(Buffer.byteLength(i)r&&Buffer.byteLength(n)<=t?s=[i.substr(0,r-1),n,!0]:(i=Pr.join(Pr.basename(n),i),n=Pr.dirname(n));while(n!==o&&!s);s||(s=[e.substr(0,r-1),"",!0])}return s},We=(e,t,r)=>e.slice(t,t+r).toString("utf8").replace(/\0.*/,""),Oa=(e,t,r)=>yw(Ae(e,t,r)),yw=e=>e===null?null:new Date(e*1e3),Ae=(e,t,r)=>e[t]&128?Qp.parse(e.slice(t,t+r)):gw(e,t,r),vw=e=>isNaN(e)?null:e,gw=(e,t,r)=>vw(parseInt(e.slice(t,t+r).toString("utf8").replace(/\0.*$/,"").trim(),8)),ww={12:8589934591,8:2097151},Ie=(e,t,r,i)=>i===null?!1:i>ww[r]||i<0?(Qp.encode(i,e.slice(t,t+r)),!0):(Ew(e,t,r,i),!1),Ew=(e,t,r,i)=>e.write(bw(i,r),t,r,"ascii"),bw=(e,t)=>_w(Math.floor(e).toString(8),t),_w=(e,t)=>(e.length===t-1?e:new Array(t-e.length-1).join("0")+e+" ")+"\0",Na=(e,t,r,i)=>i===null?!1:Ie(e,t,r,i.getTime()/1e3),Sw=new Array(156).join("\0"),He=(e,t,r,i)=>i===null?!1:(e.write(i+Sw,t,r,"utf8"),i.length!==Buffer.byteLength(i)||i.length>r);Jp.exports=td});var Wn=x((e_,ed)=>{"use strict";var Ow=kr(),Nw=require("path"),$n=class{constructor(t,r){this.atime=t.atime||null,this.charset=t.charset||null,this.comment=t.comment||null,this.ctime=t.ctime||null,this.gid=t.gid||null,this.gname=t.gname||null,this.linkpath=t.linkpath||null,this.mtime=t.mtime||null,this.path=t.path||null,this.size=t.size||null,this.uid=t.uid||null,this.uname=t.uname||null,this.dev=t.dev||null,this.ino=t.ino||null,this.nlink=t.nlink||null,this.global=r||!1}encode(){let t=this.encodeBody();if(t==="")return null;let r=Buffer.byteLength(t),i=512*Math.ceil(1+r/512),n=Buffer.allocUnsafe(i);for(let s=0;s<512;s++)n[s]=0;new Ow({path:("PaxHeader/"+Nw.basename(this.path)).slice(0,99),mode:this.mode||420,uid:this.uid||null,gid:this.gid||null,size:r,mtime:this.mtime||null,type:this.global?"GlobalExtendedHeader":"ExtendedHeader",linkpath:"",uname:this.uname||"",gname:this.gname||"",devmaj:0,devmin:0,atime:this.atime||null,ctime:this.ctime||null}).encode(n),n.write(t,512,r,"utf8");for(let s=r+512;s=Math.pow(10,s)&&(s+=1),s+n+i}};$n.parse=(e,t,r)=>new $n(Dw(Tw(e),t),r);var Dw=(e,t)=>t?Object.keys(e).reduce((r,i)=>(r[i]=e[i],r),t):e,Tw=e=>e.replace(/\n$/,"").split(` -`).reduce(Rw,Object.create(null)),Rw=(e,t)=>{let r=parseInt(t,10);if(r!==Buffer.byteLength(t)+1)return e;t=t.substr((r+" ").length);let i=t.split("="),n=i.shift().replace(/^SCHILY\.(dev|ino|nlink)/,"$1");if(!n)return e;let s=i.join("=");return e[n]=/^([A-Z]+\.)?([mac]|birth|creation)time$/.test(n)?new Date(s*1e3):/^[0-9]+$/.test(s)?+s:s,e};ed.exports=$n});var Hn=x((r_,rd)=>{"use strict";rd.exports=e=>class extends e{warn(t,r,i={}){this.file&&(i.file=this.file),this.cwd&&(i.cwd=this.cwd),i.code=r instanceof Error&&r.code||t,i.tarCode=t,!this.strict&&i.recoverable!==!1?(r instanceof Error&&(i=Object.assign(r,i),r=r.message),this.emit("warn",i.tarCode,r,i)):r instanceof Error?this.emit("error",Object.assign(r,i)):this.emit("error",Object.assign(new Error(`${t}: ${r}`),i))}}});var Ta=x((i_,id)=>{"use strict";var Vn=["|","<",">","?",":"],Da=Vn.map(e=>String.fromCharCode(61440+e.charCodeAt(0))),Aw=new Map(Vn.map((e,t)=>[e,Da[t]])),Iw=new Map(Da.map((e,t)=>[e,Vn[t]]));id.exports={encode:e=>Vn.reduce((t,r)=>t.split(r).join(Aw.get(r)),e),decode:e=>Da.reduce((t,r)=>t.split(r).join(Iw.get(r)),e)}});var sd=x((n_,nd)=>{"use strict";nd.exports=(e,t,r)=>(e&=4095,r&&(e=(e|384)&~18),t&&(e&256&&(e|=64),e&32&&(e|=8),e&4&&(e|=1)),e)});var Ca=x((a_,od)=>{"use strict";var ad=Mr(),ld=Wn(),cd=kr(),Zt=require("fs"),Br=require("path"),xw=16*1024*1024,ud=Symbol("process"),hd=Symbol("file"),fd=Symbol("directory"),Ra=Symbol("symlink"),pd=Symbol("hardlink"),Fi=Symbol("header"),Yn=Symbol("read"),Aa=Symbol("lstat"),Zn=Symbol("onlstat"),Ia=Symbol("onread"),xa=Symbol("onreadlink"),La=Symbol("openfile"),Ma=Symbol("onopenfile"),Ve=Symbol("close"),Kn=Symbol("mode"),dd=Hn(),Lw=Ta(),md=sd(),Jn=dd(class extends ad{constructor(t,r){if(r=r||{},super(r),typeof t!="string")throw new TypeError("path is required");this.path=t,this.portable=!!r.portable,this.myuid=process.getuid&&process.getuid(),this.myuser=process.env.USER||"",this.maxReadSize=r.maxReadSize||xw,this.linkCache=r.linkCache||new Map,this.statCache=r.statCache||new Map,this.preservePaths=!!r.preservePaths,this.cwd=r.cwd||process.cwd(),this.strict=!!r.strict,this.noPax=!!r.noPax,this.noMtime=!!r.noMtime,this.mtime=r.mtime||null,typeof r.onwarn=="function"&&this.on("warn",r.onwarn);let i=!1;if(!this.preservePaths&&Br.win32.isAbsolute(t)){let n=Br.win32.parse(t);this.path=t.substr(n.root.length),i=n.root}this.win32=!!r.win32||process.platform==="win32",this.win32&&(this.path=Lw.decode(this.path.replace(/\\/g,"/")),t=t.replace(/\\/g,"/")),this.absolute=r.absolute||Br.resolve(this.cwd,t),this.path===""&&(this.path="./"),i&&this.warn("TAR_ENTRY_INFO",`stripping ${i} from absolute path`,{entry:this,path:i+this.path}),this.statCache.has(this.absolute)?this[Zn](this.statCache.get(this.absolute)):this[Aa]()}[Aa](){Zt.lstat(this.absolute,(t,r)=>{if(t)return this.emit("error",t);this[Zn](r)})}[Zn](t){this.statCache.set(this.absolute,t),this.stat=t,t.isFile()||(t.size=0),this.type=Mw(t),this.emit("stat",t),this[ud]()}[ud](){switch(this.type){case"File":return this[hd]();case"Directory":return this[fd]();case"SymbolicLink":return this[Ra]();default:return this.end()}}[Kn](t){return md(t,this.type==="Directory",this.portable)}[Fi](){this.type==="Directory"&&this.portable&&(this.noMtime=!0),this.header=new cd({path:this.path,linkpath:this.linkpath,mode:this[Kn](this.stat.mode),uid:this.portable?null:this.stat.uid,gid:this.portable?null:this.stat.gid,size:this.stat.size,mtime:this.noMtime?null:this.mtime||this.stat.mtime,type:this.type,uname:this.portable?null:this.stat.uid===this.myuid?this.myuser:"",atime:this.portable?null:this.stat.atime,ctime:this.portable?null:this.stat.ctime}),this.header.encode()&&!this.noPax&&this.write(new ld({atime:this.portable?null:this.header.atime,ctime:this.portable?null:this.header.ctime,gid:this.portable?null:this.header.gid,mtime:this.noMtime?null:this.mtime||this.header.mtime,path:this.path,linkpath:this.linkpath,size:this.header.size,uid:this.portable?null:this.header.uid,uname:this.portable?null:this.header.uname,dev:this.portable?null:this.stat.dev,ino:this.portable?null:this.stat.ino,nlink:this.portable?null:this.stat.nlink}).encode()),this.write(this.header.block)}[fd](){this.path.substr(-1)!=="/"&&(this.path+="/"),this.stat.size=0,this[Fi](),this.end()}[Ra](){Zt.readlink(this.absolute,(t,r)=>{if(t)return this.emit("error",t);this[xa](r)})}[xa](t){this.linkpath=t.replace(/\\/g,"/"),this[Fi](),this.end()}[pd](t){this.type="Link",this.linkpath=Br.relative(this.cwd,t).replace(/\\/g,"/"),this.stat.size=0,this[Fi](),this.end()}[hd](){if(this.stat.nlink>1){let t=this.stat.dev+":"+this.stat.ino;if(this.linkCache.has(t)){let r=this.linkCache.get(t);if(r.indexOf(this.cwd)===0)return this[pd](r)}this.linkCache.set(t,this.absolute)}if(this[Fi](),this.stat.size===0)return this.end();this[La]()}[La](){Zt.open(this.absolute,"r",(t,r)=>{if(t)return this.emit("error",t);this[Ma](r)})}[Ma](t){let r=512*Math.ceil(this.stat.size/512),i=Math.min(r,this.maxReadSize),n=Buffer.allocUnsafe(i);this[Yn](t,n,0,n.length,0,this.stat.size,r)}[Yn](t,r,i,n,s,o,l){Zt.read(t,r,i,n,s,(a,c)=>{if(a)return this[Ve](t,()=>this.emit("error",a));this[Ia](t,r,i,n,s,o,l,c)})}[Ve](t,r){Zt.close(t,r)}[Ia](t,r,i,n,s,o,l,a){if(a<=0&&o>0){let u=new Error("encountered unexpected EOF");return u.path=this.absolute,u.syscall="read",u.code="EOF",this[Ve](t,()=>this.emit("error",u))}if(a>o){let u=new Error("did not encounter expected EOF");return u.path=this.absolute,u.syscall="read",u.code="EOF",this[Ve](t,()=>this.emit("error",u))}if(a===o)for(let u=a;uu?this.emit("error",u):this.end());i>=n&&(r=Buffer.allocUnsafe(n),i=0),n=r.length-i,this[Yn](t,r,i,n,s,o,l)}}),yd=class extends Jn{[Aa](){this[Zn](Zt.lstatSync(this.absolute))}[Ra](){this[xa](Zt.readlinkSync(this.absolute))}[La](){this[Ma](Zt.openSync(this.absolute,"r"))}[Yn](t,r,i,n,s,o,l){let a=!0;try{let c=Zt.readSync(t,r,i,n,s);this[Ia](t,r,i,n,s,o,l,c),a=!1}finally{if(a)try{this[Ve](t,()=>{})}catch(c){}}}[Ve](t,r){Zt.closeSync(t),r()}},Cw=dd(class extends ad{constructor(t,r){r=r||{},super(r),this.preservePaths=!!r.preservePaths,this.portable=!!r.portable,this.strict=!!r.strict,this.noPax=!!r.noPax,this.noMtime=!!r.noMtime,this.readEntry=t,this.type=t.type,this.type==="Directory"&&this.portable&&(this.noMtime=!0),this.path=t.path,this.mode=this[Kn](t.mode),this.uid=this.portable?null:t.uid,this.gid=this.portable?null:t.gid,this.uname=this.portable?null:t.uname,this.gname=this.portable?null:t.gname,this.size=t.size,this.mtime=this.noMtime?null:r.mtime||t.mtime,this.atime=this.portable?null:t.atime,this.ctime=this.portable?null:t.ctime,this.linkpath=t.linkpath,typeof r.onwarn=="function"&&this.on("warn",r.onwarn);let i=!1;if(Br.isAbsolute(this.path)&&!this.preservePaths){let n=Br.parse(this.path);i=n.root,this.path=this.path.substr(n.root.length)}this.remain=t.size,this.blockRemain=t.startBlockSize,this.header=new cd({path:this.path,linkpath:this.linkpath,mode:this.mode,uid:this.portable?null:this.uid,gid:this.portable?null:this.gid,size:this.size,mtime:this.noMtime?null:this.mtime,type:this.type,uname:this.portable?null:this.uname,atime:this.portable?null:this.atime,ctime:this.portable?null:this.ctime}),i&&this.warn("TAR_ENTRY_INFO",`stripping ${i} from absolute path`,{entry:this,path:i+this.path}),this.header.encode()&&!this.noPax&&super.write(new ld({atime:this.portable?null:this.atime,ctime:this.portable?null:this.ctime,gid:this.portable?null:this.gid,mtime:this.noMtime?null:this.mtime,path:this.path,linkpath:this.linkpath,size:this.size,uid:this.portable?null:this.uid,uname:this.portable?null:this.uname,dev:this.portable?null:this.readEntry.dev,ino:this.portable?null:this.readEntry.ino,nlink:this.portable?null:this.readEntry.nlink}).encode()),super.write(this.header.block),t.pipe(this)}[Kn](t){return md(t,this.type==="Directory",this.portable)}write(t){let r=t.length;if(r>this.blockRemain)throw new Error("writing more to entry than is appropriate");return this.blockRemain-=r,super.write(t)}end(){return this.blockRemain&&this.write(Buffer.alloc(this.blockRemain)),super.end()}});Jn.Sync=yd;Jn.Tar=Cw;var Mw=e=>e.isFile()?"File":e.isDirectory()?"Directory":e.isSymbolicLink()?"SymbolicLink":"Unsupported";od.exports=Jn});var vd=x((l_,gd)=>{"use strict";gd.exports=function(e){e.prototype[Symbol.iterator]=function*(){for(let t=this.head;t;t=t.next)yield t.value}}});var Pa=x((c_,wd)=>{"use strict";wd.exports=V;V.Node=Ye;V.create=V;function V(e){var t=this;if(t instanceof V||(t=new V),t.tail=null,t.head=null,t.length=0,e&&typeof e.forEach=="function")e.forEach(function(n){t.push(n)});else if(arguments.length>0)for(var r=0,i=arguments.length;r1)r=t;else if(this.head)i=this.head.next,r=this.head.value;else throw new TypeError("Reduce of empty list with no initial value");for(var n=0;i!==null;n++)r=e(r,i.value,n),i=i.next;return r};V.prototype.reduceReverse=function(e,t){var r,i=this.tail;if(arguments.length>1)r=t;else if(this.tail)i=this.tail.prev,r=this.tail.value;else throw new TypeError("Reduce of empty list with no initial value");for(var n=this.length-1;i!==null;n--)r=e(r,i.value,n),i=i.prev;return r};V.prototype.toArray=function(){for(var e=new Array(this.length),t=0,r=this.head;r!==null;t++)e[t]=r.value,r=r.next;return e};V.prototype.toArrayReverse=function(){for(var e=new Array(this.length),t=0,r=this.tail;r!==null;t++)e[t]=r.value,r=r.prev;return e};V.prototype.slice=function(e,t){t=t||this.length,t<0&&(t+=this.length),e=e||0,e<0&&(e+=this.length);var r=new V;if(tthis.length&&(t=this.length);for(var i=0,n=this.head;n!==null&&ithis.length&&(t=this.length);for(var i=this.length,n=this.tail;n!==null&&i>t;i--)n=n.prev;for(;n!==null&&i>e;i--,n=n.prev)r.push(n.value);return r};V.prototype.splice=function(e,t,...r){e>this.length&&(e=this.length-1),e<0&&(e=this.length+e);for(var i=0,n=this.head;n!==null&&i{"use strict";var ka=class{constructor(t,r){this.path=t||"./",this.absolute=r,this.entry=null,this.stat=null,this.readdir=null,this.pending=!1,this.ignore=!1,this.piped=!1}},Fw=Mr(),qw=wa(),Uw=zn(),Ba=Ca(),jw=Ba.Sync,Xw=Ba.Tar,zw=Pa(),bd=Buffer.alloc(1024),Qn=Symbol("onStat"),ts=Symbol("ended"),Kt=Symbol("queue"),Fr=Symbol("current"),Ze=Symbol("process"),es=Symbol("processing"),_d=Symbol("processJob"),Jt=Symbol("jobs"),Fa=Symbol("jobDone"),rs=Symbol("addFSEntry"),Sd=Symbol("addTarEntry"),qa=Symbol("stat"),Ua=Symbol("readdir"),is=Symbol("onreaddir"),ns=Symbol("pipe"),Od=Symbol("entry"),ja=Symbol("entryOpt"),Xa=Symbol("writeEntryClass"),Nd=Symbol("write"),za=Symbol("ondrain"),ss=require("fs"),Dd=require("path"),Gw=Hn(),Ga=Gw(class extends Fw{constructor(t){super(t);t=t||Object.create(null),this.opt=t,this.file=t.file||"",this.cwd=t.cwd||process.cwd(),this.maxReadSize=t.maxReadSize,this.preservePaths=!!t.preservePaths,this.strict=!!t.strict,this.noPax=!!t.noPax,this.prefix=(t.prefix||"").replace(/(\\|\/)+$/,""),this.linkCache=t.linkCache||new Map,this.statCache=t.statCache||new Map,this.readdirCache=t.readdirCache||new Map,this[Xa]=Ba,typeof t.onwarn=="function"&&this.on("warn",t.onwarn),this.portable=!!t.portable,this.zip=null,t.gzip?(typeof t.gzip!="object"&&(t.gzip={}),this.portable&&(t.gzip.portable=!0),this.zip=new qw.Gzip(t.gzip),this.zip.on("data",r=>super.write(r)),this.zip.on("end",r=>super.end()),this.zip.on("drain",r=>this[za]()),this.on("resume",r=>this.zip.resume())):this.on("drain",this[za]),this.noDirRecurse=!!t.noDirRecurse,this.follow=!!t.follow,this.noMtime=!!t.noMtime,this.mtime=t.mtime||null,this.filter=typeof t.filter=="function"?t.filter:r=>!0,this[Kt]=new zw,this[Jt]=0,this.jobs=+t.jobs||4,this[es]=!1,this[ts]=!1}[Nd](t){return super.write(t)}add(t){return this.write(t),this}end(t){return t&&this.write(t),this[ts]=!0,this[Ze](),this}write(t){if(this[ts])throw new Error("write after end");return t instanceof Uw?this[Sd](t):this[rs](t),this.flowing}[Sd](t){let r=Dd.resolve(this.cwd,t.path);if(this.prefix&&(t.path=this.prefix+"/"+t.path.replace(/^\.(\/+|$)/,"")),!this.filter(t.path,t))t.resume();else{let i=new ka(t.path,r,!1);i.entry=new Xw(t,this[ja](i)),i.entry.on("end",n=>this[Fa](i)),this[Jt]+=1,this[Kt].push(i)}this[Ze]()}[rs](t){let r=Dd.resolve(this.cwd,t);this.prefix&&(t=this.prefix+"/"+t.replace(/^\.(\/+|$)/,"")),this[Kt].push(new ka(t,r)),this[Ze]()}[qa](t){t.pending=!0,this[Jt]+=1;let r=this.follow?"stat":"lstat";ss[r](t.absolute,(i,n)=>{t.pending=!1,this[Jt]-=1,i?this.emit("error",i):this[Qn](t,n)})}[Qn](t,r){this.statCache.set(t.absolute,r),t.stat=r,this.filter(t.path,r)||(t.ignore=!0),this[Ze]()}[Ua](t){t.pending=!0,this[Jt]+=1,ss.readdir(t.absolute,(r,i)=>{if(t.pending=!1,this[Jt]-=1,r)return this.emit("error",r);this[is](t,i)})}[is](t,r){this.readdirCache.set(t.absolute,r),t.readdir=r,this[Ze]()}[Ze](){if(!this[es]){this[es]=!0;for(let t=this[Kt].head;t!==null&&this[Jt]this.warn(r,i,n),noPax:this.noPax,cwd:this.cwd,absolute:t.absolute,preservePaths:this.preservePaths,maxReadSize:this.maxReadSize,strict:this.strict,portable:this.portable,linkCache:this.linkCache,statCache:this.statCache,noMtime:this.noMtime,mtime:this.mtime}}[Od](t){this[Jt]+=1;try{return new this[Xa](t.path,this[ja](t)).on("end",()=>this[Fa](t)).on("error",r=>this.emit("error",r))}catch(r){this.emit("error",r)}}[za](){this[Fr]&&this[Fr].entry&&this[Fr].entry.resume()}[ns](t){t.piped=!0,t.readdir&&t.readdir.forEach(n=>{let s=this.prefix?t.path.slice(this.prefix.length+1)||"./":t.path,o=s==="./"?"":s.replace(/\/*$/,"/");this[rs](o+n)});let r=t.entry,i=this.zip;i?r.on("data",n=>{i.write(n)||r.pause()}):r.on("data",n=>{super.write(n)||r.pause()})}pause(){return this.zip&&this.zip.pause(),super.pause()}}),Td=class extends Ga{constructor(t){super(t);this[Xa]=jw}pause(){}resume(){}[qa](t){let r=this.follow?"statSync":"lstatSync";this[Qn](t,ss[r](t.absolute))}[Ua](t,r){this[is](t,ss.readdirSync(t.absolute))}[ns](t){let r=t.entry,i=this.zip;t.readdir&&t.readdir.forEach(n=>{let s=this.prefix?t.path.slice(this.prefix.length+1)||"./":t.path,o=s==="./"?"":s.replace(/\/*$/,"/");this[rs](o+n)}),i?r.on("data",n=>{i.write(n)}):r.on("data",n=>{super[Nd](n)})}};Ga.Sync=Td;Ed.exports=Ga});var Wr=x(qi=>{"use strict";var $w=Mr(),Ww=require("events").EventEmitter,Dt=require("fs"),$a=Dt.writev;if(!$a){let e=process.binding("fs"),t=e.FSReqWrap||e.FSReqCallback;$a=(r,i,n,s)=>{let o=(a,c)=>s(a,c,i),l=new t;l.oncomplete=o,e.writeBuffers(r,i,n,l)}}var qr=Symbol("_autoClose"),$t=Symbol("_close"),Ui=Symbol("_ended"),Q=Symbol("_fd"),Rd=Symbol("_finished"),xe=Symbol("_flags"),Wa=Symbol("_flush"),Ha=Symbol("_handleChunk"),Va=Symbol("_makeBuf"),as=Symbol("_mode"),ls=Symbol("_needDrain"),Ur=Symbol("_onerror"),jr=Symbol("_onopen"),Ya=Symbol("_onread"),Xr=Symbol("_onwrite"),Le=Symbol("_open"),ue=Symbol("_path"),Ke=Symbol("_pos"),Qt=Symbol("_queue"),zr=Symbol("_read"),Ad=Symbol("_readSize"),Me=Symbol("_reading"),cs=Symbol("_remain"),Id=Symbol("_size"),us=Symbol("_write"),Gr=Symbol("_writing"),hs=Symbol("_defaultFlag"),$r=Symbol("_errored"),Za=class extends $w{constructor(t,r){if(r=r||{},super(r),this.readable=!0,this.writable=!1,typeof t!="string")throw new TypeError("path must be a string");this[$r]=!1,this[Q]=typeof r.fd=="number"?r.fd:null,this[ue]=t,this[Ad]=r.readSize||16*1024*1024,this[Me]=!1,this[Id]=typeof r.size=="number"?r.size:Infinity,this[cs]=this[Id],this[qr]=typeof r.autoClose=="boolean"?r.autoClose:!0,typeof this[Q]=="number"?this[zr]():this[Le]()}get fd(){return this[Q]}get path(){return this[ue]}write(){throw new TypeError("this is a readable stream")}end(){throw new TypeError("this is a readable stream")}[Le](){Dt.open(this[ue],"r",(t,r)=>this[jr](t,r))}[jr](t,r){t?this[Ur](t):(this[Q]=r,this.emit("open",r),this[zr]())}[Va](){return Buffer.allocUnsafe(Math.min(this[Ad],this[cs]))}[zr](){if(!this[Me]){this[Me]=!0;let t=this[Va]();if(t.length===0)return process.nextTick(()=>this[Ya](null,0,t));Dt.read(this[Q],t,0,t.length,null,(r,i,n)=>this[Ya](r,i,n))}}[Ya](t,r,i){this[Me]=!1,t?this[Ur](t):this[Ha](r,i)&&this[zr]()}[$t](){if(this[qr]&&typeof this[Q]=="number"){let t=this[Q];this[Q]=null,Dt.close(t,r=>r?this.emit("error",r):this.emit("close"))}}[Ur](t){this[Me]=!0,this[$t](),this.emit("error",t)}[Ha](t,r){let i=!1;return this[cs]-=t,t>0&&(i=super.write(tthis[jr](t,r))}[jr](t,r){this[hs]&&this[xe]==="r+"&&t&&t.code==="ENOENT"?(this[xe]="w",this[Le]()):t?this[Ur](t):(this[Q]=r,this.emit("open",r),this[Wa]())}end(t,r){return t&&this.write(t,r),this[Ui]=!0,!this[Gr]&&!this[Qt].length&&typeof this[Q]=="number"&&this[Xr](null,0),this}write(t,r){return typeof t=="string"&&(t=Buffer.from(t,r)),this[Ui]?(this.emit("error",new Error("write() after end()")),!1):this[Q]===null||this[Gr]||this[Qt].length?(this[Qt].push(t),this[ls]=!0,!1):(this[Gr]=!0,this[us](t),!0)}[us](t){Dt.write(this[Q],t,0,t.length,this[Ke],(r,i)=>this[Xr](r,i))}[Xr](t,r){t?this[Ur](t):(this[Ke]!==null&&(this[Ke]+=r),this[Qt].length?this[Wa]():(this[Gr]=!1,this[Ui]&&!this[Rd]?(this[Rd]=!0,this[$t](),this.emit("finish")):this[ls]&&(this[ls]=!1,this.emit("drain"))))}[Wa](){if(this[Qt].length===0)this[Ui]&&this[Xr](null,0);else if(this[Qt].length===1)this[us](this[Qt].pop());else{let t=this[Qt];this[Qt]=[],$a(this[Q],t,this[Ke],(r,i)=>this[Xr](r,i))}}[$t](){if(this[qr]&&typeof this[Q]=="number"){let t=this[Q];this[Q]=null,Dt.close(t,r=>r?this.emit("error",r):this.emit("close"))}}},Ld=class extends Ka{[Le](){let t;if(this[hs]&&this[xe]==="r+")try{t=Dt.openSync(this[ue],this[xe],this[as])}catch(r){if(r.code==="ENOENT")return this[xe]="w",this[Le]();throw r}else t=Dt.openSync(this[ue],this[xe],this[as]);this[jr](null,t)}[$t](){if(this[qr]&&typeof this[Q]=="number"){let t=this[Q];this[Q]=null,Dt.closeSync(t),this.emit("close")}}[us](t){let r=!0;try{this[Xr](null,Dt.writeSync(this[Q],t,0,t.length,this[Ke])),r=!1}finally{if(r)try{this[$t]()}catch(i){}}}};qi.ReadStream=Za;qi.ReadStreamSync=xd;qi.WriteStream=Ka;qi.WriteStreamSync=Ld});var vs=x((d_,Md)=>{"use strict";var Hw=Hn(),Vw=kr(),Yw=require("events"),Zw=Pa(),Kw=1024*1024,Jw=zn(),Cd=Wn(),Qw=wa(),Ja=Buffer.from([31,139]),Ft=Symbol("state"),Je=Symbol("writeEntry"),he=Symbol("readEntry"),Qa=Symbol("nextEntry"),Pd=Symbol("processEntry"),qt=Symbol("extendedHeader"),ji=Symbol("globalExtendedHeader"),Ce=Symbol("meta"),kd=Symbol("emitMeta"),rt=Symbol("buffer"),fe=Symbol("queue"),Qe=Symbol("ended"),Bd=Symbol("emittedEnd"),tr=Symbol("emit"),Tt=Symbol("unzip"),fs=Symbol("consumeChunk"),ps=Symbol("consumeChunkSub"),tl=Symbol("consumeBody"),Fd=Symbol("consumeMeta"),qd=Symbol("consumeHeader"),ds=Symbol("consuming"),el=Symbol("bufferConcat"),rl=Symbol("maybeEnd"),Xi=Symbol("writing"),Pe=Symbol("aborted"),ms=Symbol("onDone"),er=Symbol("sawValidEntry"),ys=Symbol("sawNullBlock"),gs=Symbol("sawEOF"),tE=e=>!0;Md.exports=Hw(class extends Yw{constructor(t){t=t||{},super(t),this.file=t.file||"",this[er]=null,this.on(ms,r=>{(this[Ft]==="begin"||this[er]===!1)&&this.warn("TAR_BAD_ARCHIVE","Unrecognized archive format")}),t.ondone?this.on(ms,t.ondone):this.on(ms,r=>{this.emit("prefinish"),this.emit("finish"),this.emit("end"),this.emit("close")}),this.strict=!!t.strict,this.maxMetaEntrySize=t.maxMetaEntrySize||Kw,this.filter=typeof t.filter=="function"?t.filter:tE,this.writable=!0,this.readable=!1,this[fe]=new Zw,this[rt]=null,this[he]=null,this[Je]=null,this[Ft]="begin",this[Ce]="",this[qt]=null,this[ji]=null,this[Qe]=!1,this[Tt]=null,this[Pe]=!1,this[ys]=!1,this[gs]=!1,typeof t.onwarn=="function"&&this.on("warn",t.onwarn),typeof t.onentry=="function"&&this.on("entry",t.onentry)}[qd](t,r){this[er]===null&&(this[er]=!1);let i;try{i=new Vw(t,r,this[qt],this[ji])}catch(n){return this.warn("TAR_ENTRY_INVALID",n)}if(i.nullBlock)this[ys]?(this[gs]=!0,this[Ft]==="begin"&&(this[Ft]="header"),this[tr]("eof")):(this[ys]=!0,this[tr]("nullBlock"));else if(this[ys]=!1,!i.cksumValid)this.warn("TAR_ENTRY_INVALID","checksum failure",{header:i});else if(!i.path)this.warn("TAR_ENTRY_INVALID","path is required",{header:i});else{let n=i.type;if(/^(Symbolic)?Link$/.test(n)&&!i.linkpath)this.warn("TAR_ENTRY_INVALID","linkpath required",{header:i});else if(!/^(Symbolic)?Link$/.test(n)&&i.linkpath)this.warn("TAR_ENTRY_INVALID","linkpath forbidden",{header:i});else{let s=this[Je]=new Jw(i,this[qt],this[ji]);if(!this[er])if(s.remain){let o=()=>{s.invalid||(this[er]=!0)};s.on("end",o)}else this[er]=!0;s.meta?s.size>this.maxMetaEntrySize?(s.ignore=!0,this[tr]("ignoredEntry",s),this[Ft]="ignore",s.resume()):s.size>0&&(this[Ce]="",s.on("data",o=>this[Ce]+=o),this[Ft]="meta"):(this[qt]=null,s.ignore=s.ignore||!this.filter(s.path,s),s.ignore?(this[tr]("ignoredEntry",s),this[Ft]=s.remain?"ignore":"header",s.resume()):(s.remain?this[Ft]="body":(this[Ft]="header",s.end()),this[he]?this[fe].push(s):(this[fe].push(s),this[Qa]())))}}}[Pd](t){let r=!0;return t?Array.isArray(t)?this.emit.apply(this,t):(this[he]=t,this.emit("entry",t),t.emittedEnd||(t.on("end",i=>this[Qa]()),r=!1)):(this[he]=null,r=!1),r}[Qa](){do;while(this[Pd](this[fe].shift()));if(!this[fe].length){let t=this[he];!t||t.flowing||t.size===t.remain?this[Xi]||this.emit("drain"):t.once("drain",i=>this.emit("drain"))}}[tl](t,r){let i=this[Je],n=i.blockRemain,s=n>=t.length&&r===0?t:t.slice(r,r+n);return i.write(s),i.blockRemain||(this[Ft]="header",this[Je]=null,i.end()),s.length}[Fd](t,r){let i=this[Je],n=this[tl](t,r);return this[Je]||this[kd](i),n}[tr](t,r,i){!this[fe].length&&!this[he]?this.emit(t,r,i):this[fe].push([t,r,i])}[kd](t){switch(this[tr]("meta",this[Ce]),t.type){case"ExtendedHeader":case"OldExtendedHeader":this[qt]=Cd.parse(this[Ce],this[qt],!1);break;case"GlobalExtendedHeader":this[ji]=Cd.parse(this[Ce],this[ji],!0);break;case"NextFileHasLongPath":case"OldGnuLongPath":this[qt]=this[qt]||Object.create(null),this[qt].path=this[Ce].replace(/\0.*/,"");break;case"NextFileHasLongLinkpath":this[qt]=this[qt]||Object.create(null),this[qt].linkpath=this[Ce].replace(/\0.*/,"");break;default:throw new Error("unknown meta: "+t.type)}}abort(t){this[Pe]=!0,this.emit("abort",t),this.warn("TAR_ABORT",t,{recoverable:!1})}write(t){if(this[Pe])return;if(this[Tt]===null&&t){if(this[rt]&&(t=Buffer.concat([this[rt],t]),this[rt]=null),t.lengththis[fs](s)),this[Tt].on("error",s=>this.abort(s)),this[Tt].on("end",s=>{this[Qe]=!0,this[fs]()}),this[Xi]=!0;let n=this[Tt][i?"end":"write"](t);return this[Xi]=!1,n}}this[Xi]=!0,this[Tt]?this[Tt].write(t):this[fs](t),this[Xi]=!1;let r=this[fe].length?!1:this[he]?this[he].flowing:!0;return!r&&!this[fe].length&&this[he].once("drain",i=>this.emit("drain")),r}[el](t){t&&!this[Pe]&&(this[rt]=this[rt]?Buffer.concat([this[rt],t]):t)}[rl](){if(this[Qe]&&!this[Bd]&&!this[Pe]&&!this[ds]){this[Bd]=!0;let t=this[Je];if(t&&t.blockRemain){let r=this[rt]?this[rt].length:0;this.warn("TAR_BAD_ARCHIVE",`Truncated input (needed ${t.blockRemain} more bytes, only ${r} available)`,{entry:t}),this[rt]&&t.write(this[rt]),t.end()}this[tr](ms)}}[fs](t){if(this[ds])this[el](t);else if(!t&&!this[rt])this[rl]();else{if(this[ds]=!0,this[rt]){this[el](t);let r=this[rt];this[rt]=null,this[ps](r)}else this[ps](t);for(;this[rt]&&this[rt].length>=512&&!this[Pe]&&!this[gs];){let r=this[rt];this[rt]=null,this[ps](r)}this[ds]=!1}(!this[rt]||this[Qe])&&this[rl]()}[ps](t){let r=0,i=t.length;for(;r+512<=i&&!this[Pe]&&!this[gs];)switch(this[Ft]){case"begin":case"header":this[qd](t,r),r+=512;break;case"ignore":case"body":r+=this[tl](t,r);break;case"meta":r+=this[Fd](t,r);break;default:throw new Error("invalid state: "+this[Ft])}r{"use strict";var eE=Lr(),jd=vs(),Hr=require("fs"),rE=Wr(),Xd=require("path");Ud.exports=(e,t,r)=>{typeof e=="function"?(r=e,t=null,e={}):Array.isArray(e)&&(t=e,e={}),typeof t=="function"&&(r=t,t=null),t?t=Array.from(t):t=[];let i=eE(e);if(i.sync&&typeof r=="function")throw new TypeError("callback not supported for sync tar functions");if(!i.file&&typeof r=="function")throw new TypeError("callback only supported with file option");return t.length&&nE(i,t),i.noResume||iE(i),i.file&&i.sync?sE(i):i.file?oE(i,r):zd(i)};var iE=e=>{let t=e.onentry;e.onentry=t?r=>{t(r),r.resume()}:r=>r.resume()},nE=(e,t)=>{let r=new Map(t.map(s=>[s.replace(/\/+$/,""),!0])),i=e.filter,n=(s,o)=>{let l=o||Xd.parse(s).root||".",a=s===l?!1:r.has(s)?r.get(s):n(Xd.dirname(s),l);return r.set(s,a),a};e.filter=i?(s,o)=>i(s,o)&&n(s.replace(/\/+$/,"")):s=>n(s.replace(/\/+$/,""))},sE=e=>{let t=zd(e),r=e.file,i=!0,n;try{let s=Hr.statSync(r),o=e.maxReadSize||16*1024*1024;if(s.size{let r=new jd(e),i=e.maxReadSize||16*1024*1024,n=e.file,s=new Promise((o,l)=>{r.on("error",l),r.on("end",o),Hr.stat(n,(a,c)=>{if(a)l(a);else{let u=new rE.ReadStream(n,{readSize:i,size:c.size});u.on("error",l),u.pipe(r)}})});return t?s.then(t,t):s},zd=e=>new jd(e)});var Yd=x((y_,Gd)=>{"use strict";var aE=Lr(),Es=os(),$d=Wr(),Wd=ws(),Hd=require("path");Gd.exports=(e,t,r)=>{if(typeof t=="function"&&(r=t),Array.isArray(e)&&(t=e,e={}),!t||!Array.isArray(t)||!t.length)throw new TypeError("no files or directories specified");t=Array.from(t);let i=aE(e);if(i.sync&&typeof r=="function")throw new TypeError("callback not supported for sync tar functions");if(!i.file&&typeof r=="function")throw new TypeError("callback only supported with file option");return i.file&&i.sync?lE(i,t):i.file?cE(i,t,r):i.sync?uE(i,t):hE(i,t)};var lE=(e,t)=>{let r=new Es.Sync(e),i=new $d.WriteStreamSync(e.file,{mode:e.mode||438});r.pipe(i),Vd(r,t)},cE=(e,t,r)=>{let i=new Es(e),n=new $d.WriteStream(e.file,{mode:e.mode||438});i.pipe(n);let s=new Promise((o,l)=>{n.on("error",l),n.on("close",o),i.on("error",l)});return il(i,t),r?s.then(r,r):s},Vd=(e,t)=>{t.forEach(r=>{r.charAt(0)==="@"?Wd({file:Hd.resolve(e.cwd,r.substr(1)),sync:!0,noResume:!0,onentry:i=>e.add(i)}):e.add(r)}),e.end()},il=(e,t)=>{for(;t.length;){let r=t.shift();if(r.charAt(0)==="@")return Wd({file:Hd.resolve(e.cwd,r.substr(1)),noResume:!0,onentry:i=>e.add(i)}).then(i=>il(e,t));e.add(r)}e.end()},uE=(e,t)=>{let r=new Es.Sync(e);return Vd(r,t),r},hE=(e,t)=>{let r=new Es(e);return il(r,t),r}});var nl=x((g_,Zd)=>{"use strict";var fE=Lr(),Kd=os(),Ut=require("fs"),Jd=Wr(),Qd=ws(),tm=require("path"),em=kr();Zd.exports=(e,t,r)=>{let i=fE(e);if(!i.file)throw new TypeError("file is required");if(i.gzip)throw new TypeError("cannot append to compressed archives");if(!t||!Array.isArray(t)||!t.length)throw new TypeError("no files or directories specified");return t=Array.from(t),i.sync?pE(i,t):dE(i,t,r)};var pE=(e,t)=>{let r=new Kd.Sync(e),i=!0,n,s;try{try{n=Ut.openSync(e.file,"r+")}catch(a){if(a.code==="ENOENT")n=Ut.openSync(e.file,"w+");else throw a}let o=Ut.fstatSync(n),l=Buffer.alloc(512);t:for(s=0;so.size)break;s+=c,e.mtimeCache&&e.mtimeCache.set(a.path,a.mtime)}i=!1,mE(e,r,s,n,t)}finally{if(i)try{Ut.closeSync(n)}catch(o){}}},mE=(e,t,r,i,n)=>{let s=new Jd.WriteStreamSync(e.file,{fd:i,start:r});t.pipe(s),yE(t,n)},dE=(e,t,r)=>{t=Array.from(t);let i=new Kd(e),n=(o,l,a)=>{let c=(E,m)=>{E?Ut.close(o,w=>a(E)):a(null,m)},u=0;if(l===0)return c(null,0);let f=0,y=Buffer.alloc(512),b=(E,m)=>{if(E)return c(E);if(f+=m,f<512&&m)return Ut.read(o,y,f,y.length-f,u+f,b);if(u===0&&y[0]===31&&y[1]===139)return c(new Error("cannot append to compressed archives"));if(f<512)return c(null,u);let w=new em(y);if(!w.cksumValid)return c(null,u);let O=512*Math.ceil(w.size/512);if(u+O+512>l||(u+=O+512,u>=l))return c(null,u);e.mtimeCache&&e.mtimeCache.set(w.path,w.mtime),f=0,Ut.read(o,y,0,512,u,b)};Ut.read(o,y,0,512,u,b)},s=new Promise((o,l)=>{i.on("error",l);let a="r+",c=(u,f)=>{if(u&&u.code==="ENOENT"&&a==="r+")return a="w+",Ut.open(e.file,a,c);if(u)return l(u);Ut.fstat(f,(y,b)=>{if(y)return l(y);n(f,b.size,(E,m)=>{if(E)return l(E);let w=new Jd.WriteStream(e.file,{fd:f,start:m});i.pipe(w),w.on("error",l),w.on("close",o),rm(i,t)})})};Ut.open(e.file,a,c)});return r?s.then(r,r):s},yE=(e,t)=>{t.forEach(r=>{r.charAt(0)==="@"?Qd({file:tm.resolve(e.cwd,r.substr(1)),sync:!0,noResume:!0,onentry:i=>e.add(i)}):e.add(r)}),e.end()},rm=(e,t)=>{for(;t.length;){let r=t.shift();if(r.charAt(0)==="@")return Qd({file:tm.resolve(e.cwd,r.substr(1)),noResume:!0,onentry:i=>e.add(i)}).then(i=>rm(e,t));e.add(r)}e.end()}});var nm=x((v_,im)=>{"use strict";var gE=Lr(),vE=nl();im.exports=(e,t,r)=>{let i=gE(e);if(!i.file)throw new TypeError("file is required");if(i.gzip)throw new TypeError("cannot append to compressed archives");if(!t||!Array.isArray(t)||!t.length)throw new TypeError("no files or directories specified");return t=Array.from(t),wE(i),vE(i,t,r)};var wE=e=>{let t=e.filter;e.mtimeCache||(e.mtimeCache=new Map),e.filter=t?(r,i)=>t(r,i)&&!(e.mtimeCache.get(r)>i.mtime):(r,i)=>!(e.mtimeCache.get(r)>i.mtime)}});var am=x((w_,sm)=>{var{promisify:om}=require("util"),ke=require("fs"),EE=e=>{if(!e)e={mode:511,fs:ke};else if(typeof e=="object")e={mode:511,fs:ke,...e};else if(typeof e=="number")e={mode:e,fs:ke};else if(typeof e=="string")e={mode:parseInt(e,8),fs:ke};else throw new TypeError("invalid options argument");return e.mkdir=e.mkdir||e.fs.mkdir||ke.mkdir,e.mkdirAsync=om(e.mkdir),e.stat=e.stat||e.fs.stat||ke.stat,e.statAsync=om(e.stat),e.statSync=e.statSync||e.fs.statSync||ke.statSync,e.mkdirSync=e.mkdirSync||e.fs.mkdirSync||ke.mkdirSync,e};sm.exports=EE});var cm=x((E_,lm)=>{var bE=process.env.__TESTING_MKDIRP_PLATFORM__||process.platform,{resolve:_E,parse:SE}=require("path"),OE=e=>{if(/\0/.test(e))throw Object.assign(new TypeError("path must be a string without null bytes"),{path:e,code:"ERR_INVALID_ARG_VALUE"});if(e=_E(e),bE==="win32"){let t=/[*|"<>?:]/,{root:r}=SE(e);if(t.test(e.substr(r.length)))throw Object.assign(new Error("Illegal characters in path."),{path:e,code:"EINVAL"})}return e};lm.exports=OE});var dm=x((b_,um)=>{var{dirname:hm}=require("path"),fm=(e,t,r=void 0)=>r===t?Promise.resolve():e.statAsync(t).then(i=>i.isDirectory()?r:void 0,i=>i.code==="ENOENT"?fm(e,hm(t),t):void 0),pm=(e,t,r=void 0)=>{if(r!==t)try{return e.statSync(t).isDirectory()?r:void 0}catch(i){return i.code==="ENOENT"?pm(e,hm(t),t):void 0}};um.exports={findMade:fm,findMadeSync:pm}});var al=x((__,mm)=>{var{dirname:ym}=require("path"),sl=(e,t,r)=>{t.recursive=!1;let i=ym(e);return i===e?t.mkdirAsync(e,t).catch(n=>{if(n.code!=="EISDIR")throw n}):t.mkdirAsync(e,t).then(()=>r||e,n=>{if(n.code==="ENOENT")return sl(i,t).then(s=>sl(e,t,s));if(n.code!=="EEXIST"&&n.code!=="EROFS")throw n;return t.statAsync(e).then(s=>{if(s.isDirectory())return r;throw n},()=>{throw n})})},ol=(e,t,r)=>{let i=ym(e);if(t.recursive=!1,i===e)try{return t.mkdirSync(e,t)}catch(n){if(n.code!=="EISDIR")throw n;return}try{return t.mkdirSync(e,t),r||e}catch(n){if(n.code==="ENOENT")return ol(e,t,ol(i,t,r));if(n.code!=="EEXIST"&&n.code!=="EROFS")throw n;try{if(!t.statSync(e).isDirectory())throw n}catch(s){throw n}}};mm.exports={mkdirpManual:sl,mkdirpManualSync:ol}});var wm=x((S_,gm)=>{var{dirname:vm}=require("path"),{findMade:NE,findMadeSync:DE}=dm(),{mkdirpManual:TE,mkdirpManualSync:RE}=al(),AE=(e,t)=>(t.recursive=!0,vm(e)===e?t.mkdirAsync(e,t):NE(t,e).then(i=>t.mkdirAsync(e,t).then(()=>i).catch(n=>{if(n.code==="ENOENT")return TE(e,t);throw n}))),IE=(e,t)=>{if(t.recursive=!0,vm(e)===e)return t.mkdirSync(e,t);let i=DE(t,e);try{return t.mkdirSync(e,t),i}catch(n){if(n.code==="ENOENT")return RE(e,t);throw n}};gm.exports={mkdirpNative:AE,mkdirpNativeSync:IE}});var Sm=x((O_,Em)=>{var bm=require("fs"),xE=process.env.__TESTING_MKDIRP_NODE_VERSION__||process.version,ll=xE.replace(/^v/,"").split("."),_m=+ll[0]>10||+ll[0]==10&&+ll[1]>=12,LE=_m?e=>e.mkdir===bm.mkdir:()=>!1,ME=_m?e=>e.mkdirSync===bm.mkdirSync:()=>!1;Em.exports={useNative:LE,useNativeSync:ME}});var Am=x((N_,Om)=>{var Vr=am(),Yr=cm(),{mkdirpNative:Nm,mkdirpNativeSync:Dm}=wm(),{mkdirpManual:Tm,mkdirpManualSync:Rm}=al(),{useNative:CE,useNativeSync:PE}=Sm(),Zr=(e,t)=>(e=Yr(e),t=Vr(t),CE(t)?Nm(e,t):Tm(e,t)),kE=(e,t)=>(e=Yr(e),t=Vr(t),PE(t)?Dm(e,t):Rm(e,t));Zr.sync=kE;Zr.native=(e,t)=>Nm(Yr(e),Vr(t));Zr.manual=(e,t)=>Tm(Yr(e),Vr(t));Zr.nativeSync=(e,t)=>Dm(Yr(e),Vr(t));Zr.manualSync=(e,t)=>Rm(Yr(e),Vr(t));Om.exports=Zr});var km=x((D_,Im)=>{"use strict";var jt=require("fs"),rr=require("path"),BE=jt.lchown?"lchown":"chown",FE=jt.lchownSync?"lchownSync":"chownSync",xm=jt.lchown&&!process.version.match(/v1[1-9]+\./)&&!process.version.match(/v10\.[6-9]/),Lm=(e,t,r)=>{try{return jt[FE](e,t,r)}catch(i){if(i.code!=="ENOENT")throw i}},qE=(e,t,r)=>{try{return jt.chownSync(e,t,r)}catch(i){if(i.code!=="ENOENT")throw i}},UE=xm?(e,t,r,i)=>n=>{!n||n.code!=="EISDIR"?i(n):jt.chown(e,t,r,i)}:(e,t,r,i)=>i,cl=xm?(e,t,r)=>{try{return Lm(e,t,r)}catch(i){if(i.code!=="EISDIR")throw i;qE(e,t,r)}}:(e,t,r)=>Lm(e,t,r),jE=process.version,Mm=(e,t,r)=>jt.readdir(e,t,r),XE=(e,t)=>jt.readdirSync(e,t);/^v4\./.test(jE)&&(Mm=(e,t,r)=>jt.readdir(e,r));var bs=(e,t,r,i)=>{jt[BE](e,t,r,UE(e,t,r,n=>{i(n&&n.code!=="ENOENT"?n:null)}))},Cm=(e,t,r,i,n)=>{if(typeof t=="string")return jt.lstat(rr.resolve(e,t),(s,o)=>{if(s)return n(s.code!=="ENOENT"?s:null);o.name=t,Cm(e,o,r,i,n)});if(t.isDirectory())ul(rr.resolve(e,t.name),r,i,s=>{if(s)return n(s);let o=rr.resolve(e,t.name);bs(o,r,i,n)});else{let s=rr.resolve(e,t.name);bs(s,r,i,n)}},ul=(e,t,r,i)=>{Mm(e,{withFileTypes:!0},(n,s)=>{if(n){if(n.code==="ENOENT")return i();if(n.code!=="ENOTDIR"&&n.code!=="ENOTSUP")return i(n)}if(n||!s.length)return bs(e,t,r,i);let o=s.length,l=null,a=c=>{if(!l){if(c)return i(l=c);if(--o==0)return bs(e,t,r,i)}};s.forEach(c=>Cm(e,c,t,r,a))})},zE=(e,t,r,i)=>{if(typeof t=="string")try{let n=jt.lstatSync(rr.resolve(e,t));n.name=t,t=n}catch(n){if(n.code==="ENOENT")return;throw n}t.isDirectory()&&Pm(rr.resolve(e,t.name),r,i),cl(rr.resolve(e,t.name),r,i)},Pm=(e,t,r)=>{let i;try{i=XE(e,{withFileTypes:!0})}catch(n){if(n.code==="ENOENT")return;if(n.code==="ENOTDIR"||n.code==="ENOTSUP")return cl(e,t,r);throw n}return i&&i.length&&i.forEach(n=>zE(e,n,t,r)),cl(e,t,r)};Im.exports=ul;ul.sync=Pm});var Um=x((T_,hl)=>{"use strict";var Bm=Am(),Xt=require("fs"),_s=require("path"),Fm=km(),fl=class extends Error{constructor(t,r){super("Cannot extract through symbolic link");this.path=r,this.symlink=t}get name(){return"SylinkError"}},zi=class extends Error{constructor(t,r){super(r+": Cannot cd into '"+t+"'");this.path=t,this.code=r}get name(){return"CwdError"}};hl.exports=(e,t,r)=>{let i=t.umask,n=t.mode|448,s=(n&i)!=0,o=t.uid,l=t.gid,a=typeof o=="number"&&typeof l=="number"&&(o!==t.processUid||l!==t.processGid),c=t.preserve,u=t.unlink,f=t.cache,y=t.cwd,b=(w,O)=>{w?r(w):(f.set(e,!0),O&&a?Fm(O,o,l,d=>b(d)):s?Xt.chmod(e,n,r):r())};if(f&&f.get(e)===!0)return b();if(e===y)return Xt.stat(e,(w,O)=>{(w||!O.isDirectory())&&(w=new zi(e,w&&w.code||"ENOTDIR")),b(w)});if(c)return Bm(e,{mode:n}).then(w=>b(null,w),b);let m=_s.relative(y,e).split(/\/|\\/);Ss(y,m,n,f,u,y,null,b)};var Ss=(e,t,r,i,n,s,o,l)=>{if(!t.length)return l(null,o);let a=t.shift(),c=e+"/"+a;if(i.get(c))return Ss(c,t,r,i,n,s,o,l);Xt.mkdir(c,r,qm(c,t,r,i,n,s,o,l))},qm=(e,t,r,i,n,s,o,l)=>a=>{if(a){if(a.path&&_s.dirname(a.path)===s&&(a.code==="ENOTDIR"||a.code==="ENOENT"))return l(new zi(s,a.code));Xt.lstat(e,(c,u)=>{if(c)l(c);else if(u.isDirectory())Ss(e,t,r,i,n,s,o,l);else if(n)Xt.unlink(e,f=>{if(f)return l(f);Xt.mkdir(e,r,qm(e,t,r,i,n,s,o,l))});else{if(u.isSymbolicLink())return l(new fl(e,e+"/"+t.join("/")));l(a)}})}else o=o||e,Ss(e,t,r,i,n,s,o,l)};hl.exports.sync=(e,t)=>{let r=t.umask,i=t.mode|448,n=(i&r)!=0,s=t.uid,o=t.gid,l=typeof s=="number"&&typeof o=="number"&&(s!==t.processUid||o!==t.processGid),a=t.preserve,c=t.unlink,u=t.cache,f=t.cwd,y=w=>{u.set(e,!0),w&&l&&Fm.sync(w,s,o),n&&Xt.chmodSync(e,i)};if(u&&u.get(e)===!0)return y();if(e===f){let w=!1,O="ENOTDIR";try{w=Xt.statSync(e).isDirectory()}catch(d){O=d.code}finally{if(!w)throw new zi(e,O)}y();return}if(a)return y(Bm.sync(e,i));let E=_s.relative(f,e).split(/\/|\\/),m=null;for(let w=E.shift(),O=f;w&&(O+="/"+w);w=E.shift())if(!u.get(O))try{Xt.mkdirSync(O,i),m=m||O,u.set(O,!0)}catch(d){if(d.path&&_s.dirname(d.path)===f&&(d.code==="ENOTDIR"||d.code==="ENOENT"))return new zi(f,d.code);let g=Xt.lstatSync(O);if(g.isDirectory()){u.set(O,!0);continue}else if(c){Xt.unlinkSync(O),Xt.mkdirSync(O,i),m=m||O,u.set(O,!0);continue}else if(g.isSymbolicLink())return new fl(O,O+"/"+E.join("/"))}return y(m)}});var zm=x((R_,jm)=>{var Xm=require("assert");jm.exports=()=>{let e=new Map,t=new Map,{join:r}=require("path"),i=u=>r(u).split(/[\\/]/).slice(0,-1).reduce((f,y)=>f.length?f.concat(r(f[f.length-1],y)):[y],[]),n=new Set,s=u=>{let f=t.get(u);if(!f)throw new Error("function does not have any path reservations");return{paths:f.paths.map(y=>e.get(y)),dirs:[...f.dirs].map(y=>e.get(y))}},o=u=>{let{paths:f,dirs:y}=s(u);return f.every(b=>b[0]===u)&&y.every(b=>b[0]instanceof Set&&b[0].has(u))},l=u=>n.has(u)||!o(u)?!1:(n.add(u),u(()=>a(u)),!0),a=u=>{if(!n.has(u))return!1;let{paths:f,dirs:y}=t.get(u),b=new Set;return f.forEach(E=>{let m=e.get(E);Xm.equal(m[0],u),m.length===1?e.delete(E):(m.shift(),typeof m[0]=="function"?b.add(m[0]):m[0].forEach(w=>b.add(w)))}),y.forEach(E=>{let m=e.get(E);Xm(m[0]instanceof Set),m[0].size===1&&m.length===1?e.delete(E):m[0].size===1?(m.shift(),b.add(m[0])):m[0].delete(u)}),n.delete(u),b.forEach(E=>l(E)),!0};return{check:o,reserve:(u,f)=>{let y=new Set(u.map(b=>i(b)).reduce((b,E)=>b.concat(E)));return t.set(f,{dirs:y,paths:u}),u.forEach(b=>{let E=e.get(b);E?E.push(f):e.set(b,[f])}),y.forEach(b=>{let E=e.get(b);E?E[E.length-1]instanceof Set?E[E.length-1].add(f):E.push(new Set([f])):e.set(b,[new Set([f])])}),l(f)}}}});var Wm=x((A_,Gm)=>{var GE=process.env.__FAKE_PLATFORM__||process.platform,$E=GE==="win32",WE=global.__FAKE_TESTING_FS__||require("fs"),{O_CREAT:HE,O_TRUNC:VE,O_WRONLY:YE,UV_FS_O_FILEMAP:$m=0}=WE.constants,ZE=$E&&!!$m,KE=512*1024,JE=$m|VE|HE|YE;Gm.exports=ZE?e=>e"w"});var El=x((I_,Hm)=>{"use strict";var QE=require("assert"),t1=vs(),J=require("fs"),e1=Wr(),pe=require("path"),Vm=Um(),Ym=Ta(),r1=zm(),Zm=Symbol("onEntry"),pl=Symbol("checkFs"),Km=Symbol("checkFs2"),dl=Symbol("isReusable"),de=Symbol("makeFs"),ml=Symbol("file"),yl=Symbol("directory"),Os=Symbol("link"),Jm=Symbol("symlink"),Qm=Symbol("hardlink"),ty=Symbol("unsupported"),ey=Symbol("checkPath"),Kr=Symbol("mkdir"),vt=Symbol("onError"),Ns=Symbol("pending"),ry=Symbol("pend"),Jr=Symbol("unpend"),gl=Symbol("ended"),vl=Symbol("maybeClose"),wl=Symbol("skip"),Gi=Symbol("doChown"),$i=Symbol("uid"),Wi=Symbol("gid"),iy=require("crypto"),ny=Wm(),Ds=()=>{throw new Error("sync function called cb somehow?!?")},i1=(e,t)=>{if(process.platform!=="win32")return J.unlink(e,t);let r=e+".DELETE."+iy.randomBytes(16).toString("hex");J.rename(e,r,i=>{if(i)return t(i);J.unlink(r,t)})},n1=e=>{if(process.platform!=="win32")return J.unlinkSync(e);let t=e+".DELETE."+iy.randomBytes(16).toString("hex");J.renameSync(e,t),J.unlinkSync(t)},sy=(e,t,r)=>e===e>>>0?e:t===t>>>0?t:r,Ts=class extends t1{constructor(t){if(t||(t={}),t.ondone=r=>{this[gl]=!0,this[vl]()},super(t),this.reservations=r1(),this.transform=typeof t.transform=="function"?t.transform:null,this.writable=!0,this.readable=!1,this[Ns]=0,this[gl]=!1,this.dirCache=t.dirCache||new Map,typeof t.uid=="number"||typeof t.gid=="number"){if(typeof t.uid!="number"||typeof t.gid!="number")throw new TypeError("cannot set owner without number uid and gid");if(t.preserveOwner)throw new TypeError("cannot preserve owner in archive and also set owner explicitly");this.uid=t.uid,this.gid=t.gid,this.setOwner=!0}else this.uid=null,this.gid=null,this.setOwner=!1;t.preserveOwner===void 0&&typeof t.uid!="number"?this.preserveOwner=process.getuid&&process.getuid()===0:this.preserveOwner=!!t.preserveOwner,this.processUid=(this.preserveOwner||this.setOwner)&&process.getuid?process.getuid():null,this.processGid=(this.preserveOwner||this.setOwner)&&process.getgid?process.getgid():null,this.forceChown=t.forceChown===!0,this.win32=!!t.win32||process.platform==="win32",this.newer=!!t.newer,this.keep=!!t.keep,this.noMtime=!!t.noMtime,this.preservePaths=!!t.preservePaths,this.unlink=!!t.unlink,this.cwd=pe.resolve(t.cwd||process.cwd()),this.strip=+t.strip||0,this.processUmask=t.noChmod?0:process.umask(),this.umask=typeof t.umask=="number"?t.umask:this.processUmask,this.dmode=t.dmode||511&~this.umask,this.fmode=t.fmode||438&~this.umask,this.on("entry",r=>this[Zm](r))}warn(t,r,i={}){return(t==="TAR_BAD_ARCHIVE"||t==="TAR_ABORT")&&(i.recoverable=!1),super.warn(t,r,i)}[vl](){this[gl]&&this[Ns]===0&&(this.emit("prefinish"),this.emit("finish"),this.emit("end"),this.emit("close"))}[ey](t){if(this.strip){let r=t.path.split(/\/|\\/);if(r.length=this.strip&&(t.linkpath=i.slice(this.strip).join("/"))}}if(!this.preservePaths){let r=t.path;if(r.match(/(^|\/|\\)\.\.(\\|\/|$)/))return this.warn("TAR_ENTRY_ERROR","path contains '..'",{entry:t,path:r}),!1;if(pe.win32.isAbsolute(r)){let i=pe.win32.parse(r);t.path=r.substr(i.root.length);let n=i.root;this.warn("TAR_ENTRY_INFO",`stripping ${n} from absolute path`,{entry:t,path:r})}}if(this.win32){let r=pe.win32.parse(t.path);t.path=r.root===""?Ym.encode(t.path):r.root+Ym.encode(t.path.substr(r.root.length))}return pe.isAbsolute(t.path)?t.absolute=t.path:t.absolute=pe.resolve(this.cwd,t.path),!0}[Zm](t){if(!this[ey](t))return t.resume();switch(QE.equal(typeof t.absolute,"string"),t.type){case"Directory":case"GNUDumpDir":t.mode&&(t.mode=t.mode|448);case"File":case"OldFile":case"ContiguousFile":case"Link":case"SymbolicLink":return this[pl](t);case"CharacterDevice":case"BlockDevice":case"FIFO":default:return this[ty](t)}}[vt](t,r){t.name==="CwdError"?this.emit("error",t):(this.warn("TAR_ENTRY_ERROR",t,{entry:r}),this[Jr](),r.resume())}[Kr](t,r,i){Vm(t,{uid:this.uid,gid:this.gid,processUid:this.processUid,processGid:this.processGid,umask:this.processUmask,preserve:this.preservePaths,unlink:this.unlink,cache:this.dirCache,cwd:this.cwd,mode:r,noChmod:this.noChmod},i)}[Gi](t){return this.forceChown||this.preserveOwner&&(typeof t.uid=="number"&&t.uid!==this.processUid||typeof t.gid=="number"&&t.gid!==this.processGid)||typeof this.uid=="number"&&this.uid!==this.processUid||typeof this.gid=="number"&&this.gid!==this.processGid}[$i](t){return sy(this.uid,t.uid,this.processUid)}[Wi](t){return sy(this.gid,t.gid,this.processGid)}[ml](t,r){let i=t.mode&4095||this.fmode,n=new e1.WriteStream(t.absolute,{flags:ny(t.size),mode:i,autoClose:!1});n.on("error",a=>this[vt](a,t));let s=1,o=a=>{if(a)return this[vt](a,t);--s==0&&J.close(n.fd,c=>{r(),c?this[vt](c,t):this[Jr]()})};n.on("finish",a=>{let c=t.absolute,u=n.fd;if(t.mtime&&!this.noMtime){s++;let f=t.atime||new Date,y=t.mtime;J.futimes(u,f,y,b=>b?J.utimes(c,f,y,E=>o(E&&b)):o())}if(this[Gi](t)){s++;let f=this[$i](t),y=this[Wi](t);J.fchown(u,f,y,b=>b?J.chown(c,f,y,E=>o(E&&b)):o())}o()});let l=this.transform&&this.transform(t)||t;l!==t&&(l.on("error",a=>this[vt](a,t)),t.pipe(l)),l.pipe(n)}[yl](t,r){let i=t.mode&4095||this.dmode;this[Kr](t.absolute,i,n=>{if(n)return r(),this[vt](n,t);let s=1,o=l=>{--s==0&&(r(),this[Jr](),t.resume())};t.mtime&&!this.noMtime&&(s++,J.utimes(t.absolute,t.atime||new Date,t.mtime,o)),this[Gi](t)&&(s++,J.chown(t.absolute,this[$i](t),this[Wi](t),o)),o()})}[ty](t){t.unsupported=!0,this.warn("TAR_ENTRY_UNSUPPORTED",`unsupported entry type: ${t.type}`,{entry:t}),t.resume()}[Jm](t,r){this[Os](t,t.linkpath,"symlink",r)}[Qm](t,r){this[Os](t,pe.resolve(this.cwd,t.linkpath),"link",r)}[ry](){this[Ns]++}[Jr](){this[Ns]--,this[vl]()}[wl](t){this[Jr](),t.resume()}[dl](t,r){return t.type==="File"&&!this.unlink&&r.isFile()&&r.nlink<=1&&process.platform!=="win32"}[pl](t){this[ry]();let r=[t.path];t.linkpath&&r.push(t.linkpath),this.reservations.reserve(r,i=>this[Km](t,i))}[Km](t,r){this[Kr](pe.dirname(t.absolute),this.dmode,i=>{if(i)return r(),this[vt](i,t);J.lstat(t.absolute,(n,s)=>{s&&(this.keep||this.newer&&s.mtime>t.mtime)?(this[wl](t),r()):n||this[dl](t,s)?this[de](null,t,r):s.isDirectory()?t.type==="Directory"?!this.noChmod&&(!t.mode||(s.mode&4095)===t.mode)?this[de](null,t,r):J.chmod(t.absolute,t.mode,o=>this[de](o,t,r)):J.rmdir(t.absolute,o=>this[de](o,t,r)):i1(t.absolute,o=>this[de](o,t,r))})})}[de](t,r,i){if(t)return this[vt](t,r);switch(r.type){case"File":case"OldFile":case"ContiguousFile":return this[ml](r,i);case"Link":return this[Qm](r,i);case"SymbolicLink":return this[Jm](r,i);case"Directory":case"GNUDumpDir":return this[yl](r,i)}}[Os](t,r,i,n){J[i](r,t.absolute,s=>{if(s)return this[vt](s,t);n(),this[Jr](),t.resume()})}},oy=class extends Ts{[pl](t){let r=this[Kr](pe.dirname(t.absolute),this.dmode,Ds);if(r)return this[vt](r,t);try{let i=J.lstatSync(t.absolute);if(this.keep||this.newer&&i.mtime>t.mtime)return this[wl](t);if(this[dl](t,i))return this[de](null,t,Ds);try{return i.isDirectory()?t.type==="Directory"?!this.noChmod&&t.mode&&(i.mode&4095)!==t.mode&&J.chmodSync(t.absolute,t.mode):J.rmdirSync(t.absolute):n1(t.absolute),this[de](null,t,Ds)}catch(n){return this[vt](n,t)}}catch(i){return this[de](null,t,Ds)}}[ml](t,r){let i=t.mode&4095||this.fmode,n=l=>{let a;try{J.closeSync(s)}catch(c){a=c}(l||a)&&this[vt](l||a,t)},s;try{s=J.openSync(t.absolute,ny(t.size),i)}catch(l){return n(l)}let o=this.transform&&this.transform(t)||t;o!==t&&(o.on("error",l=>this[vt](l,t)),t.pipe(o)),o.on("data",l=>{try{J.writeSync(s,l,0,l.length)}catch(a){n(a)}}),o.on("end",l=>{let a=null;if(t.mtime&&!this.noMtime){let c=t.atime||new Date,u=t.mtime;try{J.futimesSync(s,c,u)}catch(f){try{J.utimesSync(t.absolute,c,u)}catch(y){a=f}}}if(this[Gi](t)){let c=this[$i](t),u=this[Wi](t);try{J.fchownSync(s,c,u)}catch(f){try{J.chownSync(t.absolute,c,u)}catch(y){a=a||f}}}n(a)})}[yl](t,r){let i=t.mode&4095||this.dmode,n=this[Kr](t.absolute,i);if(n)return this[vt](n,t);if(t.mtime&&!this.noMtime)try{J.utimesSync(t.absolute,t.atime||new Date,t.mtime)}catch(s){}if(this[Gi](t))try{J.chownSync(t.absolute,this[$i](t),this[Wi](t))}catch(s){}t.resume()}[Kr](t,r){try{return Vm.sync(t,{uid:this.uid,gid:this.gid,processUid:this.processUid,processGid:this.processGid,umask:this.processUmask,preserve:this.preservePaths,unlink:this.unlink,cache:this.dirCache,cwd:this.cwd,mode:r})}catch(i){return i}}[Os](t,r,i,n){try{J[i+"Sync"](r,t.absolute),t.resume()}catch(s){return this[vt](s,t)}}};Ts.Sync=oy;Hm.exports=Ts});var hy=x((x_,ay)=>{"use strict";var s1=Lr(),Rs=El(),ly=require("fs"),cy=Wr(),uy=require("path");ay.exports=(e,t,r)=>{typeof e=="function"?(r=e,t=null,e={}):Array.isArray(e)&&(t=e,e={}),typeof t=="function"&&(r=t,t=null),t?t=Array.from(t):t=[];let i=s1(e);if(i.sync&&typeof r=="function")throw new TypeError("callback not supported for sync tar functions");if(!i.file&&typeof r=="function")throw new TypeError("callback only supported with file option");return t.length&&o1(i,t),i.file&&i.sync?a1(i):i.file?l1(i,r):i.sync?c1(i):u1(i)};var o1=(e,t)=>{let r=new Map(t.map(s=>[s.replace(/\/+$/,""),!0])),i=e.filter,n=(s,o)=>{let l=o||uy.parse(s).root||".",a=s===l?!1:r.has(s)?r.get(s):n(uy.dirname(s),l);return r.set(s,a),a};e.filter=i?(s,o)=>i(s,o)&&n(s.replace(/\/+$/,"")):s=>n(s.replace(/\/+$/,""))},a1=e=>{let t=new Rs.Sync(e),r=e.file,i=ly.statSync(r),n=e.maxReadSize||16*1024*1024;new cy.ReadStreamSync(r,{readSize:n,size:i.size}).pipe(t)},l1=(e,t)=>{let r=new Rs(e),i=e.maxReadSize||16*1024*1024,n=e.file,s=new Promise((o,l)=>{r.on("error",l),r.on("close",o),ly.stat(n,(a,c)=>{if(a)l(a);else{let u=new cy.ReadStream(n,{readSize:i,size:c.size});u.on("error",l),u.pipe(r)}})});return t?s.then(t,t):s},c1=e=>new Rs.Sync(e),u1=e=>new Rs(e)});var fy=x(at=>{"use strict";at.c=at.create=Yd();at.r=at.replace=nl();at.t=at.list=ws();at.u=at.update=nm();at.x=at.extract=hy();at.Pack=os();at.Unpack=El();at.Parse=vs();at.ReadEntry=zn();at.WriteEntry=Ca();at.Header=kr();at.Pax=Wn();at.types=ba()});var gy=x(h1=>{Yi(h1);Ps(h1,{register:()=>d1});var ir=At(yo()),nr=At(gp()),py=At(Bs()),dy=At(require("http")),my=At(aa()),bl=At(require("path")),yy=At(fy()),f1=`http://registry.npmjs.org/${nr.PACKAGE_NAMES["win64-uac"]}/-/${nr.PACKAGE_NAMES["win64-uac"]}-${nr.BINARY_VERSION}.tgz`;function p1(){let{name:e}=my.default.dirSync({postfix:"git-peek",unsafeCleanup:!0});return new Promise((t,r)=>{dy.default.get(f1,function(i){i.pipe(yy.default.x({cwd:e,strip:1,onentry(n){},onwarn(n,s){console.warn(n)}}).on("finish",()=>{t(bl.default.resolve(e,"register-url.exe"))}).on("error",n=>{r(n)}))})})}async function d1(e){console.log("Downloading register-url-windows!");let t=await p1();console.log("Downloaded register-url-windows"),console.log(`${ir.default.whiteBright("git-peek uses Administrator privileges to enable 1-click in Chrome & Edge")}. Source code: -${ir.default.gray(" https://github.com/Jarred-Sumner/register-url-windows/blob/main/dotnet/RegisterURLHandler/Program.cs")}`);let r=await nr.register({path:bl.default.resolve(await py.default("git-peek"),"../","node_modules","@jarred","git-peek","bin","git-peek-win32.exe"),name:"git-peek",origins:["github.com","bitbucket.com","gitlab.com","*.gitlab.com","sourcehut.org"],register:!0,protocol:Ue},t);process.env.VERBOSE&&console.log(r),r.error&&!(r.protocol&&r.edge&&r.chrome)&&console.error(r.error),r.exception&&!(r.protocol&&r.edge&&r.chrome)&&console.error(r.exception),r.protocol&&r.edge&&r.chrome?console.log(`${ir.default.green("Registered git-peek:// successfully")}`):r.protocol?(console.log(ir.default.whiteBright("Registered git-peek://, but 1-click is disabled")),console.log(`${ir.default.cyan("To enable 1-click, re-run `git-peek -r` with Administrator privileges.")}`)):console.log(`${ir.default.red("Register failed")}`),process.exit()}});Yi(exports);Ps(exports,{register:()=>As});var As;var Ue="git-peek";process.platform==="darwin"?As=Rh().register:process.platform==="win32"?As=gy().register:As=()=>{throw"Unsupported Platform"}; +`.trim()}});var Qf=x((kb,Zf)=>{var Kf=class{constructor(t){this.value=t,this.next=void 0}},Jf=class{constructor(){this.clear()}enqueue(t){let r=new Kf(t);this._head?(this._tail.next=r,this._tail=r):(this._head=r,this._tail=r),this._size++}dequeue(){let t=this._head;if(!!t)return this._head=this._head.next,this._size--,t.value}clear(){this._head=void 0,this._tail=void 0,this._size=0}get size(){return this._size}*[Symbol.iterator](){let t=this._head;for(;t;)yield t.value,t=t.next}};Zf.exports=Jf});var ep=x((Bb,tp)=>{"use strict";var D0=Qf(),T0=e=>{if(!((Number.isInteger(e)||e===Infinity)&&e>0))throw new TypeError("Expected `concurrency` to be a number from 1 and up");let t=new D0,r=0,i=()=>{r--,t.size>0&&t.dequeue()()},n=async(l,a,...c)=>{r++;let u=(async()=>l(...c))();a(u);try{await u}catch{}i()},s=(l,a,...c)=>{t.enqueue(n.bind(null,l,a,...c)),(async()=>{await Promise.resolve(),r0&&t.dequeue()()})()},o=(l,...a)=>new Promise(c=>{s(l,c,...a)});return Object.defineProperties(o,{activeCount:{get:()=>r},pendingCount:{get:()=>t.size},clearQueue:{value:()=>{t.clear()}}}),o};tp.exports=T0});var np=x((Fb,rp)=>{"use strict";var ip=ep(),na=class extends Error{constructor(t){super();this.value=t}},R0=async(e,t)=>t(await e),A0=async e=>{let t=await Promise.all(e);if(t[1]===!0)throw new na(t[0]);return!1},I0=async(e,t,r)=>{r={concurrency:Infinity,preserveOrder:!0,...r};let i=ip(r.concurrency),n=[...e].map(o=>[o,i(R0,o,t)]),s=ip(r.preserveOrder?1:Infinity);try{await Promise.all(n.map(o=>s(A0,o)))}catch(o){if(o instanceof na)return o.value;throw o}};rp.exports=I0});var up=x((qb,sa)=>{"use strict";var sp=require("path"),kn=require("fs"),{promisify:op}=require("util"),x0=np(),L0=op(kn.stat),M0=op(kn.lstat),ap={directory:"isDirectory",file:"isFile"};function lp({type:e}){if(!(e in ap))throw new Error(`Invalid type specified: ${e}`)}var cp=(e,t)=>e===void 0||t[ap[e]]();sa.exports=async(e,t)=>{t={cwd:process.cwd(),type:"file",allowSymlinks:!0,...t},lp(t);let r=t.allowSymlinks?L0:M0;return x0(e,async i=>{try{let n=await r(sp.resolve(t.cwd,i));return cp(t.type,n)}catch{return!1}},t)};sa.exports.sync=(e,t)=>{t={cwd:process.cwd(),allowSymlinks:!0,type:"file",...t},lp(t);let r=t.allowSymlinks?kn.statSync:kn.lstatSync;for(let i of e)try{let n=r(sp.resolve(t.cwd,i));if(cp(t.type,n))return i}catch{}}});var fp=x((Ub,oa)=>{"use strict";var hp=require("fs"),{promisify:C0}=require("util"),P0=C0(hp.access);oa.exports=async e=>{try{return await P0(e),!0}catch(t){return!1}};oa.exports.sync=e=>{try{return hp.accessSync(e),!0}catch(t){return!1}}});var dp=x((jb,xr)=>{"use strict";var Oe=require("path"),Bn=up(),pp=fp(),aa=Symbol("findUp.stop");xr.exports=async(e,t={})=>{let r=Oe.resolve(t.cwd||""),{root:i}=Oe.parse(r),n=[].concat(e),s=async o=>{if(typeof e!="function")return Bn(n,o);let l=await e(o.cwd);return typeof l=="string"?Bn([l],o):l};for(;;){let o=await s({...t,cwd:r});if(o===aa)return;if(o)return Oe.resolve(r,o);if(r===i)return;r=Oe.dirname(r)}};xr.exports.sync=(e,t={})=>{let r=Oe.resolve(t.cwd||""),{root:i}=Oe.parse(r),n=[].concat(e),s=o=>{if(typeof e!="function")return Bn.sync(n,o);let l=e(o.cwd);return typeof l=="string"?Bn.sync([l],o):l};for(;;){let o=s({...t,cwd:r});if(o===aa)return;if(o)return Oe.resolve(r,o);if(r===i)return;r=Oe.dirname(r)}};xr.exports.exists=pp;xr.exports.sync.exists=pp.sync;xr.exports.stop=aa});var mp=x((Xb,xt)=>{"use strict";var{promisify:Ai}=require("util"),Ne=Pn();xt.exports.fileSync=Ne.fileSync;var k0=Ai((e,t)=>Ne.file(e,(r,i,n,s)=>r?t(r):t(void 0,{path:i,fd:n,cleanup:Ai(s)})));xt.exports.file=async e=>k0(e);xt.exports.withFile=async function(t,r){let{path:i,fd:n,cleanup:s}=await xt.exports.file(r);try{return await t({path:i,fd:n})}finally{await s()}};xt.exports.dirSync=Ne.dirSync;var B0=Ai((e,t)=>Ne.dir(e,(r,i,n)=>r?t(r):t(void 0,{path:i,cleanup:Ai(n)})));xt.exports.dir=async e=>B0(e);xt.exports.withDir=async function(t,r){let{path:i,cleanup:n}=await xt.exports.dir(r);try{return await t({path:i})}finally{await n()}};xt.exports.tmpNameSync=Ne.tmpNameSync;xt.exports.tmpName=Ai(Ne.tmpName);xt.exports.tmpdir=Ne.tmpdir;xt.exports.setGracefulCleanup=Ne.setGracefulCleanup});var vp=x(la=>{var F0=Object.create,Fn=Object.defineProperty,q0=Object.getPrototypeOf,U0=Object.prototype.hasOwnProperty,j0=Object.getOwnPropertyNames,X0=Object.getOwnPropertyDescriptor,yp=e=>Fn(e,"__esModule",{value:!0}),z0=(e,t)=>{for(var r in t)Fn(e,r,{get:t[r],enumerable:!0})},G0=(e,t,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of j0(t))!U0.call(e,i)&&i!=="default"&&Fn(e,i,{get:()=>t[i],enumerable:!(r=X0(t,i))||r.enumerable});return e},Ii=e=>e&&e.__esModule?e:G0(yp(Fn(e!=null?F0(q0(e)):{},"default",{value:e,enumerable:!0})),e);yp(la);z0(la,{BINARY_VERSION:()=>$0,PACKAGE_NAMES:()=>W0,installBin:()=>H0,register:()=>V0});var gp=Ii(require("child_process")),Y0=Ii(dp()),qn=Ii(require("fs")),xi=Ii(require("path")),Z0=Ii(mp());async function K0(e){return xi.resolve(await Y0.default("node_modules",{type:"directory",cwd:e}),"../")}var $0="1.0.7",W0={win64:"register-url-win64-bin","win64-uac":"register-url-win64-bin-uac"};async function H0(e=!0){let t=e?"register-url-win64-bin-uac":"register-url-win64-bin",r=await K0(xi.resolve(__dirname));return new Promise((i,n)=>{let s=gp.default.spawn("npm",["install",`${t}@1.0.7`,"--legacy-peer-deps","-g","--production","--no-fund","--no-audit","--no-package-lock","--ignore-scripts"],{cwd:r,detached:!1,shell:!0,env:process.env});s.stdout.pipe(process.stdout),s.stdin.pipe(process.stdin),s.once("exit",i),s.once("error",n)})}async function V0(e,t=null){var r,i;let n=t;if(!t){let l=((i=(r=e.origins)==null?void 0:r.length)!=null?i:0)>0?"register-url-win64-bin-uac":"register-url-win64-bin";try{n=require(xi.resolve(__dirname,"node_modules",l))}catch(a){return Promise.reject(`Please install "${l}" into ${xi.resolve(__dirname)} before running this function. For convienience, you can call installBin()`)}}if(await qn.promises.access(n,qn.constants.F_OK),typeof e.register=="undefined"&&(e.register=!0),!e.output){let{path:o}=await Z0.default.file({discardDescriptor:!0,postfix:".json"});e.output=o}let s=xi.resolve(e.output);return delete e.output,await qn.promises.writeFile(s,JSON.stringify(e),"utf-8"),await new Promise(async(o,l)=>{gp.default.spawn(n,[s],{env:process.env,windowsHide:!0,detached:!1,shell:!0,stdio:"inherit"}).once("exit",async()=>{let c;try{if(c=JSON.parse((await qn.promises.readFile(s,"utf-8")).trim()),typeof c!="object")throw"Empty response"}catch(u){c={error:u.message,exception:u,chrome:!1,protocol:!1,edge:!1}}o(c)})}).catch(o=>Promise.resolve({error:o.message,exception:o,chrome:!1,edge:!1,protocol:!1}))}});var Lr=x((Gb,wp)=>{"use strict";var Ep=new Map([["C","cwd"],["f","file"],["z","gzip"],["P","preservePaths"],["U","unlink"],["strip-components","strip"],["stripComponents","strip"],["keep-newer","newer"],["keepNewer","newer"],["keep-newer-files","newer"],["keepNewerFiles","newer"],["k","keep"],["keep-existing","keep"],["keepExisting","keep"],["m","noMtime"],["no-mtime","noMtime"],["p","preserveOwner"],["L","follow"],["h","follow"]]);wp.exports=e=>e?Object.keys(e).map(t=>[Ep.has(t)?Ep.get(t):t,e[t]]).reduce((t,r)=>(t[r[0]]=r[1],t),Object.create(null)):{}});var _p=x(($b,bp)=>{"use strict";bp.exports=function(e){e.prototype[Symbol.iterator]=function*(){for(let t=this.head;t;t=t.next)yield t.value}}});var Op=x((Wb,Sp)=>{"use strict";Sp.exports=H;H.Node=ze;H.create=H;function H(e){var t=this;if(t instanceof H||(t=new H),t.tail=null,t.head=null,t.length=0,e&&typeof e.forEach=="function")e.forEach(function(n){t.push(n)});else if(arguments.length>0)for(var r=0,i=arguments.length;r1)r=t;else if(this.head)i=this.head.next,r=this.head.value;else throw new TypeError("Reduce of empty list with no initial value");for(var n=0;i!==null;n++)r=e(r,i.value,n),i=i.next;return r};H.prototype.reduceReverse=function(e,t){var r,i=this.tail;if(arguments.length>1)r=t;else if(this.tail)i=this.tail.prev,r=this.tail.value;else throw new TypeError("Reduce of empty list with no initial value");for(var n=this.length-1;i!==null;n--)r=e(r,i.value,n),i=i.prev;return r};H.prototype.toArray=function(){for(var e=new Array(this.length),t=0,r=this.head;r!==null;t++)e[t]=r.value,r=r.next;return e};H.prototype.toArrayReverse=function(){for(var e=new Array(this.length),t=0,r=this.tail;r!==null;t++)e[t]=r.value,r=r.prev;return e};H.prototype.slice=function(e,t){t=t||this.length,t<0&&(t+=this.length),e=e||0,e<0&&(e+=this.length);var r=new H;if(tthis.length&&(t=this.length);for(var i=0,n=this.head;n!==null&&ithis.length&&(t=this.length);for(var i=this.length,n=this.tail;n!==null&&i>t;i--)n=n.prev;for(;n!==null&&i>e;i--,n=n.prev)r.push(n.value);return r};H.prototype.splice=function(e,t,...r){e>this.length&&(e=this.length-1),e<0&&(e=this.length+e);for(var i=0,n=this.head;n!==null&&i{"use strict";var ew=require("events"),Dp=require("stream"),Li=Op(),Tp=require("string_decoder").StringDecoder,le=Symbol("EOF"),Mi=Symbol("maybeEmitEnd"),De=Symbol("emittedEnd"),Un=Symbol("emittingEnd"),jn=Symbol("closed"),Rp=Symbol("read"),ca=Symbol("flush"),Ap=Symbol("flushChunk"),Dt=Symbol("encoding"),ce=Symbol("decoder"),Xn=Symbol("flowing"),Ci=Symbol("paused"),Pi=Symbol("resume"),gt=Symbol("bufferLength"),Ip=Symbol("bufferPush"),ua=Symbol("bufferShift"),dt=Symbol("objectMode"),mt=Symbol("destroyed"),xp=global._MP_NO_ITERATOR_SYMBOLS_!=="1",rw=xp&&Symbol.asyncIterator||Symbol("asyncIterator not implemented"),iw=xp&&Symbol.iterator||Symbol("iterator not implemented"),Lp=e=>e==="end"||e==="finish"||e==="prefinish",nw=e=>e instanceof ArrayBuffer||typeof e=="object"&&e.constructor&&e.constructor.name==="ArrayBuffer"&&e.byteLength>=0,sw=e=>!Buffer.isBuffer(e)&&ArrayBuffer.isView(e);Np.exports=class Mp extends Dp{constructor(t){super();this[Xn]=!1,this[Ci]=!1,this.pipes=new Li,this.buffer=new Li,this[dt]=t&&t.objectMode||!1,this[dt]?this[Dt]=null:this[Dt]=t&&t.encoding||null,this[Dt]==="buffer"&&(this[Dt]=null),this[ce]=this[Dt]?new Tp(this[Dt]):null,this[le]=!1,this[De]=!1,this[Un]=!1,this[jn]=!1,this.writable=!0,this.readable=!0,this[gt]=0,this[mt]=!1}get bufferLength(){return this[gt]}get encoding(){return this[Dt]}set encoding(t){if(this[dt])throw new Error("cannot set encoding in objectMode");if(this[Dt]&&t!==this[Dt]&&(this[ce]&&this[ce].lastNeed||this[gt]))throw new Error("cannot change encoding");this[Dt]!==t&&(this[ce]=t?new Tp(t):null,this.buffer.length&&(this.buffer=this.buffer.map(r=>this[ce].write(r)))),this[Dt]=t}setEncoding(t){this.encoding=t}get objectMode(){return this[dt]}set objectMode(t){this[dt]=this[dt]||!!t}write(t,r,i){if(this[le])throw new Error("write after end");return this[mt]?(this.emit("error",Object.assign(new Error("Cannot call write after a stream was destroyed"),{code:"ERR_STREAM_DESTROYED"})),!0):(typeof r=="function"&&(i=r,r="utf8"),r||(r="utf8"),!this[dt]&&!Buffer.isBuffer(t)&&(sw(t)?t=Buffer.from(t.buffer,t.byteOffset,t.byteLength):nw(t)?t=Buffer.from(t):typeof t!="string"&&(this.objectMode=!0)),!this.objectMode&&!t.length?(this[gt]!==0&&this.emit("readable"),i&&i(),this.flowing):(typeof t=="string"&&!this[dt]&&!(r===this[Dt]&&!this[ce].lastNeed)&&(t=Buffer.from(t,r)),Buffer.isBuffer(t)&&this[Dt]&&(t=this[ce].write(t)),this.flowing?(this[gt]!==0&&this[ca](!0),this.emit("data",t)):this[Ip](t),this[gt]!==0&&this.emit("readable"),i&&i(),this.flowing))}read(t){if(this[mt])return null;try{return this[gt]===0||t===0||t>this[gt]?null:(this[dt]&&(t=null),this.buffer.length>1&&!this[dt]&&(this.encoding?this.buffer=new Li([Array.from(this.buffer).join("")]):this.buffer=new Li([Buffer.concat(Array.from(this.buffer),this[gt])])),this[Rp](t||null,this.buffer.head.value))}finally{this[Mi]()}}[Rp](t,r){return t===r.length||t===null?this[ua]():(this.buffer.head.value=r.slice(t),r=r.slice(0,t),this[gt]-=t),this.emit("data",r),!this.buffer.length&&!this[le]&&this.emit("drain"),r}end(t,r,i){return typeof t=="function"&&(i=t,t=null),typeof r=="function"&&(i=r,r="utf8"),t&&this.write(t,r),i&&this.once("end",i),this[le]=!0,this.writable=!1,(this.flowing||!this[Ci])&&this[Mi](),this}[Pi](){this[mt]||(this[Ci]=!1,this[Xn]=!0,this.emit("resume"),this.buffer.length?this[ca]():this[le]?this[Mi]():this.emit("drain"))}resume(){return this[Pi]()}pause(){this[Xn]=!1,this[Ci]=!0}get destroyed(){return this[mt]}get flowing(){return this[Xn]}get paused(){return this[Ci]}[Ip](t){return this[dt]?this[gt]+=1:this[gt]+=t.length,this.buffer.push(t)}[ua](){return this.buffer.length&&(this[dt]?this[gt]-=1:this[gt]-=this.buffer.head.value.length),this.buffer.shift()}[ca](t){do;while(this[Ap](this[ua]()));!t&&!this.buffer.length&&!this[le]&&this.emit("drain")}[Ap](t){return t?(this.emit("data",t),this.flowing):!1}pipe(t,r){if(this[mt])return;let i=this[De];r=r||{},t===process.stdout||t===process.stderr?r.end=!1:r.end=r.end!==!1;let n={dest:t,opts:r,ondrain:s=>this[Pi]()};return this.pipes.push(n),t.on("drain",n.ondrain),this[Pi](),i&&n.opts.end&&n.dest.end(),t}addListener(t,r){return this.on(t,r)}on(t,r){try{return super.on(t,r)}finally{t==="data"&&!this.pipes.length&&!this.flowing?this[Pi]():Lp(t)&&this[De]&&(super.emit(t),this.removeAllListeners(t))}}get emittedEnd(){return this[De]}[Mi](){!this[Un]&&!this[De]&&!this[mt]&&this.buffer.length===0&&this[le]&&(this[Un]=!0,this.emit("end"),this.emit("prefinish"),this.emit("finish"),this[jn]&&this.emit("close"),this[Un]=!1)}emit(t,r){if(t!=="error"&&t!=="close"&&t!==mt&&this[mt])return;if(t==="data"){if(!r)return;this.pipes.length&&this.pipes.forEach(n=>n.dest.write(r)===!1&&this.pause())}else if(t==="end"){if(this[De]===!0)return;this[De]=!0,this.readable=!1,this[ce]&&(r=this[ce].end(),r&&(this.pipes.forEach(n=>n.dest.write(r)),super.emit("data",r))),this.pipes.forEach(n=>{n.dest.removeListener("drain",n.ondrain),n.opts.end&&n.dest.end()})}else if(t==="close"&&(this[jn]=!0,!this[De]&&!this[mt]))return;let i=new Array(arguments.length);if(i[0]=t,i[1]=r,arguments.length>2)for(let n=2;n{t.push(i),this[dt]||(t.dataLength+=i.length)}),r.then(()=>t)}concat(){return this[dt]?Promise.reject(new Error("cannot concat in objectMode")):this.collect().then(t=>this[dt]?Promise.reject(new Error("cannot concat in objectMode")):this[Dt]?t.join(""):Buffer.concat(t,t.dataLength))}promise(){return new Promise((t,r)=>{this.on(mt,()=>r(new Error("stream destroyed"))),this.on("end",()=>t()),this.on("error",i=>r(i))})}[rw](){return{next:()=>{let r=this.read();if(r!==null)return Promise.resolve({done:!1,value:r});if(this[le])return Promise.resolve({done:!0});let i=null,n=null,s=c=>{this.removeListener("data",o),this.removeListener("end",l),n(c)},o=c=>{this.removeListener("error",s),this.removeListener("end",l),this.pause(),i({value:c,done:!!this[le]})},l=()=>{this.removeListener("error",s),this.removeListener("data",o),i({done:!0})},a=()=>s(new Error("stream destroyed"));return new Promise((c,u)=>{n=u,i=c,this.once(mt,a),this.once("error",s),this.once("end",l),this.once("data",o)})}}}[iw](){return{next:()=>{let r=this.read();return{value:r,done:r===null}}}}destroy(t){return this[mt]?(t?this.emit("error",t):this.emit(mt),this):(this[mt]=!0,this.buffer=new Li,this[gt]=0,typeof this.close=="function"&&!this[jn]&&this.close(),t?this.emit("error",t):this.emit(mt),this)}static isStream(t){return!!t&&(t instanceof Mp||t instanceof Dp||t instanceof ew&&(typeof t.pipe=="function"||typeof t.write=="function"&&typeof t.end=="function"))}}});var Pp=x((Vb,Cp)=>{var ow=require("zlib").constants||{ZLIB_VERNUM:4736};Cp.exports=Object.freeze(Object.assign(Object.create(null),{Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_VERSION_ERROR:-6,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,DEFLATE:1,INFLATE:2,GZIP:3,GUNZIP:4,DEFLATERAW:5,INFLATERAW:6,UNZIP:7,BROTLI_DECODE:8,BROTLI_ENCODE:9,Z_MIN_WINDOWBITS:8,Z_MAX_WINDOWBITS:15,Z_DEFAULT_WINDOWBITS:15,Z_MIN_CHUNK:64,Z_MAX_CHUNK:Infinity,Z_DEFAULT_CHUNK:16384,Z_MIN_MEMLEVEL:1,Z_MAX_MEMLEVEL:9,Z_DEFAULT_MEMLEVEL:8,Z_MIN_LEVEL:-1,Z_MAX_LEVEL:9,Z_DEFAULT_LEVEL:-1,BROTLI_OPERATION_PROCESS:0,BROTLI_OPERATION_FLUSH:1,BROTLI_OPERATION_FINISH:2,BROTLI_OPERATION_EMIT_METADATA:3,BROTLI_MODE_GENERIC:0,BROTLI_MODE_TEXT:1,BROTLI_MODE_FONT:2,BROTLI_DEFAULT_MODE:0,BROTLI_MIN_QUALITY:0,BROTLI_MAX_QUALITY:11,BROTLI_DEFAULT_QUALITY:11,BROTLI_MIN_WINDOW_BITS:10,BROTLI_MAX_WINDOW_BITS:24,BROTLI_LARGE_MAX_WINDOW_BITS:30,BROTLI_DEFAULT_WINDOW:22,BROTLI_MIN_INPUT_BLOCK_BITS:16,BROTLI_MAX_INPUT_BLOCK_BITS:24,BROTLI_PARAM_MODE:0,BROTLI_PARAM_QUALITY:1,BROTLI_PARAM_LGWIN:2,BROTLI_PARAM_LGBLOCK:3,BROTLI_PARAM_DISABLE_LITERAL_CONTEXT_MODELING:4,BROTLI_PARAM_SIZE_HINT:5,BROTLI_PARAM_LARGE_WINDOW:6,BROTLI_PARAM_NPOSTFIX:7,BROTLI_PARAM_NDIRECT:8,BROTLI_DECODER_RESULT_ERROR:0,BROTLI_DECODER_RESULT_SUCCESS:1,BROTLI_DECODER_RESULT_NEEDS_MORE_INPUT:2,BROTLI_DECODER_RESULT_NEEDS_MORE_OUTPUT:3,BROTLI_DECODER_PARAM_DISABLE_RING_BUFFER_REALLOCATION:0,BROTLI_DECODER_PARAM_LARGE_WINDOW:1,BROTLI_DECODER_NO_ERROR:0,BROTLI_DECODER_SUCCESS:1,BROTLI_DECODER_NEEDS_MORE_INPUT:2,BROTLI_DECODER_NEEDS_MORE_OUTPUT:3,BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_NIBBLE:-1,BROTLI_DECODER_ERROR_FORMAT_RESERVED:-2,BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_META_NIBBLE:-3,BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_ALPHABET:-4,BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_SAME:-5,BROTLI_DECODER_ERROR_FORMAT_CL_SPACE:-6,BROTLI_DECODER_ERROR_FORMAT_HUFFMAN_SPACE:-7,BROTLI_DECODER_ERROR_FORMAT_CONTEXT_MAP_REPEAT:-8,BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_1:-9,BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_2:-10,BROTLI_DECODER_ERROR_FORMAT_TRANSFORM:-11,BROTLI_DECODER_ERROR_FORMAT_DICTIONARY:-12,BROTLI_DECODER_ERROR_FORMAT_WINDOW_BITS:-13,BROTLI_DECODER_ERROR_FORMAT_PADDING_1:-14,BROTLI_DECODER_ERROR_FORMAT_PADDING_2:-15,BROTLI_DECODER_ERROR_FORMAT_DISTANCE:-16,BROTLI_DECODER_ERROR_DICTIONARY_NOT_SET:-19,BROTLI_DECODER_ERROR_INVALID_ARGUMENTS:-20,BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MODES:-21,BROTLI_DECODER_ERROR_ALLOC_TREE_GROUPS:-22,BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MAP:-25,BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_1:-26,BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_2:-27,BROTLI_DECODER_ERROR_ALLOC_BLOCK_TYPE_TREES:-30,BROTLI_DECODER_ERROR_UNREACHABLE:-31},ow))});var wa=x(Lt=>{"use strict";var ha=require("assert"),Te=require("buffer").Buffer,kp=require("zlib"),Ge=Lt.constants=Pp(),aw=Mr(),Bp=Te.concat,$e=Symbol("_superWrite"),ki=class extends Error{constructor(t){super("zlib: "+t.message);this.code=t.code,this.errno=t.errno,this.code||(this.code="ZLIB_ERROR"),this.message="zlib: "+t.message,Error.captureStackTrace(this,this.constructor)}get name(){return"ZlibError"}},lw=Symbol("opts"),Bi=Symbol("flushFlag"),Fp=Symbol("finishFlushFlag"),fa=Symbol("fullFlushFlag"),et=Symbol("handle"),zn=Symbol("onError"),Cr=Symbol("sawError"),pa=Symbol("level"),da=Symbol("strategy"),ma=Symbol("ended"),Yb=Symbol("_defaultFullFlush"),ya=class extends aw{constructor(t,r){if(!t||typeof t!="object")throw new TypeError("invalid options for ZlibBase constructor");super(t);this[Cr]=!1,this[ma]=!1,this[lw]=t,this[Bi]=t.flush,this[Fp]=t.finishFlush;try{this[et]=new kp[r](t)}catch(i){throw new ki(i)}this[zn]=i=>{this[Cr]||(this[Cr]=!0,this.close(),this.emit("error",i))},this[et].on("error",i=>this[zn](new ki(i))),this.once("end",()=>this.close)}close(){this[et]&&(this[et].close(),this[et]=null,this.emit("close"))}reset(){if(!this[Cr])return ha(this[et],"zlib binding closed"),this[et].reset()}flush(t){this.ended||(typeof t!="number"&&(t=this[fa]),this.write(Object.assign(Te.alloc(0),{[Bi]:t})))}end(t,r,i){return t&&this.write(t,r),this.flush(this[Fp]),this[ma]=!0,super.end(null,null,i)}get ended(){return this[ma]}write(t,r,i){if(typeof r=="function"&&(i=r,r="utf8"),typeof t=="string"&&(t=Te.from(t,r)),this[Cr])return;ha(this[et],"zlib binding closed");let n=this[et]._handle,s=n.close;n.close=()=>{};let o=this[et].close;this[et].close=()=>{},Te.concat=c=>c;let l;try{let c=typeof t[Bi]=="number"?t[Bi]:this[Bi];l=this[et]._processChunk(t,c),Te.concat=Bp}catch(c){Te.concat=Bp,this[zn](new ki(c))}finally{this[et]&&(this[et]._handle=n,n.close=s,this[et].close=o,this[et].removeAllListeners("error"))}this[et]&&this[et].on("error",c=>this[zn](new ki(c)));let a;if(l)if(Array.isArray(l)&&l.length>0){a=this[$e](Te.from(l[0]));for(let c=1;c{this.flush(n),s()};try{this[et].params(t,r)}finally{this[et].flush=i}this[et]&&(this[pa]=t,this[da]=r)}}}},qp=class extends Re{constructor(t){super(t,"Deflate")}},Up=class extends Re{constructor(t){super(t,"Inflate")}},ga=Symbol("_portable"),jp=class extends Re{constructor(t){super(t,"Gzip");this[ga]=t&&!!t.portable}[$e](t){return this[ga]?(this[ga]=!1,t[9]=255,super[$e](t)):super[$e](t)}},Xp=class extends Re{constructor(t){super(t,"Gunzip")}},zp=class extends Re{constructor(t){super(t,"DeflateRaw")}},Gp=class extends Re{constructor(t){super(t,"InflateRaw")}},$p=class extends Re{constructor(t){super(t,"Unzip")}},va=class extends ya{constructor(t,r){t=t||{},t.flush=t.flush||Ge.BROTLI_OPERATION_PROCESS,t.finishFlush=t.finishFlush||Ge.BROTLI_OPERATION_FINISH,super(t,r),this[fa]=Ge.BROTLI_OPERATION_FLUSH}},Wp=class extends va{constructor(t){super(t,"BrotliCompress")}},Hp=class extends va{constructor(t){super(t,"BrotliDecompress")}};Lt.Deflate=qp;Lt.Inflate=Up;Lt.Gzip=jp;Lt.Gunzip=Xp;Lt.DeflateRaw=zp;Lt.InflateRaw=Gp;Lt.Unzip=$p;typeof kp.BrotliCompress=="function"?(Lt.BrotliCompress=Wp,Lt.BrotliDecompress=Hp):Lt.BrotliCompress=Lt.BrotliDecompress=class{constructor(){throw new Error("Brotli is not supported in this version of Node.js")}}});var Gn=x((Jb,Vp)=>{"use strict";var cw=Mr(),Ea=Symbol("slurp");Vp.exports=class extends cw{constructor(t,r,i){super();switch(this.pause(),this.extended=r,this.globalExtended=i,this.header=t,this.startBlockSize=512*Math.ceil(t.size/512),this.blockRemain=this.startBlockSize,this.remain=t.size,this.type=t.type,this.meta=!1,this.ignore=!1,this.type){case"File":case"OldFile":case"Link":case"SymbolicLink":case"CharacterDevice":case"BlockDevice":case"Directory":case"FIFO":case"ContiguousFile":case"GNUDumpDir":break;case"NextFileHasLongLinkpath":case"NextFileHasLongPath":case"OldGnuLongPath":case"GlobalExtendedHeader":case"ExtendedHeader":case"OldExtendedHeader":this.meta=!0;break;default:this.ignore=!0}this.path=t.path,this.mode=t.mode,this.mode&&(this.mode=this.mode&4095),this.uid=t.uid,this.gid=t.gid,this.uname=t.uname,this.gname=t.gname,this.size=t.size,this.mtime=t.mtime,this.atime=t.atime,this.ctime=t.ctime,this.linkpath=t.linkpath,this.uname=t.uname,this.gname=t.gname,r&&this[Ea](r),i&&this[Ea](i,!0)}write(t){let r=t.length;if(r>this.blockRemain)throw new Error("writing more to entry than is appropriate");let i=this.remain,n=this.blockRemain;return this.remain=Math.max(0,i-r),this.blockRemain=Math.max(0,n-r),this.ignore?!0:i>=r?super.write(t):super.write(t.slice(0,i))}[Ea](t,r){for(let i in t)t[i]!==null&&t[i]!==void 0&&!(r&&i==="path")&&(this[i]=t[i])}}});var ba=x($n=>{"use strict";$n.name=new Map([["0","File"],["","OldFile"],["1","Link"],["2","SymbolicLink"],["3","CharacterDevice"],["4","BlockDevice"],["5","Directory"],["6","FIFO"],["7","ContiguousFile"],["g","GlobalExtendedHeader"],["x","ExtendedHeader"],["A","SolarisACL"],["D","GNUDumpDir"],["I","Inode"],["K","NextFileHasLongLinkpath"],["L","NextFileHasLongPath"],["M","ContinuationFile"],["N","OldGnuLongPath"],["S","SparseFile"],["V","TapeVolumeHeader"],["X","OldExtendedHeader"]]);$n.code=new Map(Array.from($n.name).map(e=>[e[1],e[0]]))});var Jp=x((t_,Yp)=>{"use strict";var fw=(e,t)=>{if(Number.isSafeInteger(e))e<0?hw(e,t):uw(e,t);else throw Error("cannot encode number outside of javascript safe integer range");return t},uw=(e,t)=>{t[0]=128;for(var r=t.length;r>1;r--)t[r-1]=e&255,e=Math.floor(e/256)},hw=(e,t)=>{t[0]=255;var r=!1;e=e*-1;for(var i=t.length;i>1;i--){var n=e&255;e=Math.floor(e/256),r?t[i-1]=Zp(n):n===0?t[i-1]=0:(r=!0,t[i-1]=Kp(n))}},mw=e=>{let t=e[0],r=t===128?dw(e.slice(1,e.length)):t===255?pw(e):null;if(r===null)throw Error("invalid base256 encoding");if(!Number.isSafeInteger(r))throw Error("parsed number outside of javascript safe integer range");return r},pw=e=>{for(var t=e.length,r=0,i=!1,n=t-1;n>-1;n--){var s=e[n],o;i?o=Zp(s):s===0?o=s:(i=!0,o=Kp(s)),o!==0&&(r-=o*Math.pow(256,t-n-1))}return r},dw=e=>{for(var t=e.length,r=0,i=t-1;i>-1;i--){var n=e[i];n!==0&&(r+=n*Math.pow(256,t-i-1))}return r},Zp=e=>(255^e)&255,Kp=e=>(255^e)+1&255;Yp.exports={encode:fw,parse:mw}});var kr=x((e_,Qp)=>{"use strict";var _a=ba(),Pr=require("path").posix,td=Jp(),Sa=Symbol("slurp"),Mt=Symbol("type"),ed=class{constructor(t,r,i,n){this.cksumValid=!1,this.needPax=!1,this.nullBlock=!1,this.block=null,this.path=null,this.mode=null,this.uid=null,this.gid=null,this.size=null,this.mtime=null,this.cksum=null,this[Mt]="0",this.linkpath=null,this.uname=null,this.gname=null,this.devmaj=0,this.devmin=0,this.atime=null,this.ctime=null,Buffer.isBuffer(t)?this.decode(t,r||0,i,n):t&&this.set(t)}decode(t,r,i,n){if(r||(r=0),!t||!(t.length>=r+512))throw new Error("need 512 bytes for header");if(this.path=We(t,r,100),this.mode=Ae(t,r+100,8),this.uid=Ae(t,r+108,8),this.gid=Ae(t,r+116,8),this.size=Ae(t,r+124,12),this.mtime=Oa(t,r+136,12),this.cksum=Ae(t,r+148,12),this[Sa](i),this[Sa](n,!0),this[Mt]=We(t,r+156,1),this[Mt]===""&&(this[Mt]="0"),this[Mt]==="0"&&this.path.substr(-1)==="/"&&(this[Mt]="5"),this[Mt]==="5"&&(this.size=0),this.linkpath=We(t,r+157,100),t.slice(r+257,r+265).toString()==="ustar\x0000")if(this.uname=We(t,r+265,32),this.gname=We(t,r+297,32),this.devmaj=Ae(t,r+329,8),this.devmin=Ae(t,r+337,8),t[r+475]!==0){let o=We(t,r+345,155);this.path=o+"/"+this.path}else{let o=We(t,r+345,130);o&&(this.path=o+"/"+this.path),this.atime=Oa(t,r+476,12),this.ctime=Oa(t,r+488,12)}let s=8*32;for(let o=r;o=r+512))throw new Error("need 512 bytes for header");let i=this.ctime||this.atime?130:155,n=yw(this.path||"",i),s=n[0],o=n[1];this.needPax=n[2],this.needPax=He(t,r,100,s)||this.needPax,this.needPax=Ie(t,r+100,8,this.mode)||this.needPax,this.needPax=Ie(t,r+108,8,this.uid)||this.needPax,this.needPax=Ie(t,r+116,8,this.gid)||this.needPax,this.needPax=Ie(t,r+124,12,this.size)||this.needPax,this.needPax=Na(t,r+136,12,this.mtime)||this.needPax,t[r+156]=this[Mt].charCodeAt(0),this.needPax=He(t,r+157,100,this.linkpath)||this.needPax,t.write("ustar\x0000",r+257,8),this.needPax=He(t,r+265,32,this.uname)||this.needPax,this.needPax=He(t,r+297,32,this.gname)||this.needPax,this.needPax=Ie(t,r+329,8,this.devmaj)||this.needPax,this.needPax=Ie(t,r+337,8,this.devmin)||this.needPax,this.needPax=He(t,r+345,i,o)||this.needPax,t[r+475]!==0?this.needPax=He(t,r+345,155,o)||this.needPax:(this.needPax=He(t,r+345,130,o)||this.needPax,this.needPax=Na(t,r+476,12,this.atime)||this.needPax,this.needPax=Na(t,r+488,12,this.ctime)||this.needPax);let l=8*32;for(let a=r;a{let r=100,i=e,n="",s,o=Pr.parse(e).root||".";if(Buffer.byteLength(i)r&&Buffer.byteLength(n)<=t?s=[i.substr(0,r-1),n,!0]:(i=Pr.join(Pr.basename(n),i),n=Pr.dirname(n));while(n!==o&&!s);s||(s=[e.substr(0,r-1),"",!0])}return s},We=(e,t,r)=>e.slice(t,t+r).toString("utf8").replace(/\0.*/,""),Oa=(e,t,r)=>gw(Ae(e,t,r)),gw=e=>e===null?null:new Date(e*1e3),Ae=(e,t,r)=>e[t]&128?td.parse(e.slice(t,t+r)):vw(e,t,r),ww=e=>isNaN(e)?null:e,vw=(e,t,r)=>ww(parseInt(e.slice(t,t+r).toString("utf8").replace(/\0.*$/,"").trim(),8)),Ew={12:8589934591,8:2097151},Ie=(e,t,r,i)=>i===null?!1:i>Ew[r]||i<0?(td.encode(i,e.slice(t,t+r)),!0):(bw(e,t,r,i),!1),bw=(e,t,r,i)=>e.write(_w(i,r),t,r,"ascii"),_w=(e,t)=>Sw(Math.floor(e).toString(8),t),Sw=(e,t)=>(e.length===t-1?e:new Array(t-e.length-1).join("0")+e+" ")+"\0",Na=(e,t,r,i)=>i===null?!1:Ie(e,t,r,i.getTime()/1e3),Ow=new Array(156).join("\0"),He=(e,t,r,i)=>i===null?!1:(e.write(i+Ow,t,r,"utf8"),i.length!==Buffer.byteLength(i)||i.length>r);Qp.exports=ed});var Hn=x((r_,rd)=>{"use strict";var Nw=kr(),Dw=require("path"),Wn=class{constructor(t,r){this.atime=t.atime||null,this.charset=t.charset||null,this.comment=t.comment||null,this.ctime=t.ctime||null,this.gid=t.gid||null,this.gname=t.gname||null,this.linkpath=t.linkpath||null,this.mtime=t.mtime||null,this.path=t.path||null,this.size=t.size||null,this.uid=t.uid||null,this.uname=t.uname||null,this.dev=t.dev||null,this.ino=t.ino||null,this.nlink=t.nlink||null,this.global=r||!1}encode(){let t=this.encodeBody();if(t==="")return null;let r=Buffer.byteLength(t),i=512*Math.ceil(1+r/512),n=Buffer.allocUnsafe(i);for(let s=0;s<512;s++)n[s]=0;new Nw({path:("PaxHeader/"+Dw.basename(this.path)).slice(0,99),mode:this.mode||420,uid:this.uid||null,gid:this.gid||null,size:r,mtime:this.mtime||null,type:this.global?"GlobalExtendedHeader":"ExtendedHeader",linkpath:"",uname:this.uname||"",gname:this.gname||"",devmaj:0,devmin:0,atime:this.atime||null,ctime:this.ctime||null}).encode(n),n.write(t,512,r,"utf8");for(let s=r+512;s=Math.pow(10,s)&&(s+=1),s+n+i}};Wn.parse=(e,t,r)=>new Wn(Tw(Rw(e),t),r);var Tw=(e,t)=>t?Object.keys(e).reduce((r,i)=>(r[i]=e[i],r),t):e,Rw=e=>e.replace(/\n$/,"").split(` +`).reduce(Aw,Object.create(null)),Aw=(e,t)=>{let r=parseInt(t,10);if(r!==Buffer.byteLength(t)+1)return e;t=t.substr((r+" ").length);let i=t.split("="),n=i.shift().replace(/^SCHILY\.(dev|ino|nlink)/,"$1");if(!n)return e;let s=i.join("=");return e[n]=/^([A-Z]+\.)?([mac]|birth|creation)time$/.test(n)?new Date(s*1e3):/^[0-9]+$/.test(s)?+s:s,e};rd.exports=Wn});var Vn=x((i_,id)=>{"use strict";id.exports=e=>class extends e{warn(t,r,i={}){this.file&&(i.file=this.file),this.cwd&&(i.cwd=this.cwd),i.code=r instanceof Error&&r.code||t,i.tarCode=t,!this.strict&&i.recoverable!==!1?(r instanceof Error&&(i=Object.assign(r,i),r=r.message),this.emit("warn",i.tarCode,r,i)):r instanceof Error?this.emit("error",Object.assign(r,i)):this.emit("error",Object.assign(new Error(`${t}: ${r}`),i))}}});var Ta=x((n_,nd)=>{"use strict";var Yn=["|","<",">","?",":"],Da=Yn.map(e=>String.fromCharCode(61440+e.charCodeAt(0))),Iw=new Map(Yn.map((e,t)=>[e,Da[t]])),xw=new Map(Da.map((e,t)=>[e,Yn[t]]));nd.exports={encode:e=>Yn.reduce((t,r)=>t.split(r).join(Iw.get(r)),e),decode:e=>Da.reduce((t,r)=>t.split(r).join(xw.get(r)),e)}});var od=x((s_,sd)=>{"use strict";sd.exports=(e,t,r)=>(e&=4095,r&&(e=(e|384)&~18),t&&(e&256&&(e|=64),e&32&&(e|=8),e&4&&(e|=1)),e)});var Ca=x((l_,ad)=>{"use strict";var ld=Mr(),cd=Hn(),ud=kr(),Zt=require("fs"),Br=require("path"),Lw=16*1024*1024,hd=Symbol("process"),fd=Symbol("file"),pd=Symbol("directory"),Ra=Symbol("symlink"),dd=Symbol("hardlink"),Fi=Symbol("header"),Zn=Symbol("read"),Aa=Symbol("lstat"),Kn=Symbol("onlstat"),Ia=Symbol("onread"),xa=Symbol("onreadlink"),La=Symbol("openfile"),Ma=Symbol("onopenfile"),Ve=Symbol("close"),Jn=Symbol("mode"),md=Vn(),Mw=Ta(),yd=od(),Qn=md(class extends ld{constructor(t,r){if(r=r||{},super(r),typeof t!="string")throw new TypeError("path is required");this.path=t,this.portable=!!r.portable,this.myuid=process.getuid&&process.getuid(),this.myuser=process.env.USER||"",this.maxReadSize=r.maxReadSize||Lw,this.linkCache=r.linkCache||new Map,this.statCache=r.statCache||new Map,this.preservePaths=!!r.preservePaths,this.cwd=r.cwd||process.cwd(),this.strict=!!r.strict,this.noPax=!!r.noPax,this.noMtime=!!r.noMtime,this.mtime=r.mtime||null,typeof r.onwarn=="function"&&this.on("warn",r.onwarn);let i=!1;if(!this.preservePaths&&Br.win32.isAbsolute(t)){let n=Br.win32.parse(t);this.path=t.substr(n.root.length),i=n.root}this.win32=!!r.win32||process.platform==="win32",this.win32&&(this.path=Mw.decode(this.path.replace(/\\/g,"/")),t=t.replace(/\\/g,"/")),this.absolute=r.absolute||Br.resolve(this.cwd,t),this.path===""&&(this.path="./"),i&&this.warn("TAR_ENTRY_INFO",`stripping ${i} from absolute path`,{entry:this,path:i+this.path}),this.statCache.has(this.absolute)?this[Kn](this.statCache.get(this.absolute)):this[Aa]()}[Aa](){Zt.lstat(this.absolute,(t,r)=>{if(t)return this.emit("error",t);this[Kn](r)})}[Kn](t){this.statCache.set(this.absolute,t),this.stat=t,t.isFile()||(t.size=0),this.type=Cw(t),this.emit("stat",t),this[hd]()}[hd](){switch(this.type){case"File":return this[fd]();case"Directory":return this[pd]();case"SymbolicLink":return this[Ra]();default:return this.end()}}[Jn](t){return yd(t,this.type==="Directory",this.portable)}[Fi](){this.type==="Directory"&&this.portable&&(this.noMtime=!0),this.header=new ud({path:this.path,linkpath:this.linkpath,mode:this[Jn](this.stat.mode),uid:this.portable?null:this.stat.uid,gid:this.portable?null:this.stat.gid,size:this.stat.size,mtime:this.noMtime?null:this.mtime||this.stat.mtime,type:this.type,uname:this.portable?null:this.stat.uid===this.myuid?this.myuser:"",atime:this.portable?null:this.stat.atime,ctime:this.portable?null:this.stat.ctime}),this.header.encode()&&!this.noPax&&this.write(new cd({atime:this.portable?null:this.header.atime,ctime:this.portable?null:this.header.ctime,gid:this.portable?null:this.header.gid,mtime:this.noMtime?null:this.mtime||this.header.mtime,path:this.path,linkpath:this.linkpath,size:this.header.size,uid:this.portable?null:this.header.uid,uname:this.portable?null:this.header.uname,dev:this.portable?null:this.stat.dev,ino:this.portable?null:this.stat.ino,nlink:this.portable?null:this.stat.nlink}).encode()),this.write(this.header.block)}[pd](){this.path.substr(-1)!=="/"&&(this.path+="/"),this.stat.size=0,this[Fi](),this.end()}[Ra](){Zt.readlink(this.absolute,(t,r)=>{if(t)return this.emit("error",t);this[xa](r)})}[xa](t){this.linkpath=t.replace(/\\/g,"/"),this[Fi](),this.end()}[dd](t){this.type="Link",this.linkpath=Br.relative(this.cwd,t).replace(/\\/g,"/"),this.stat.size=0,this[Fi](),this.end()}[fd](){if(this.stat.nlink>1){let t=this.stat.dev+":"+this.stat.ino;if(this.linkCache.has(t)){let r=this.linkCache.get(t);if(r.indexOf(this.cwd)===0)return this[dd](r)}this.linkCache.set(t,this.absolute)}if(this[Fi](),this.stat.size===0)return this.end();this[La]()}[La](){Zt.open(this.absolute,"r",(t,r)=>{if(t)return this.emit("error",t);this[Ma](r)})}[Ma](t){let r=512*Math.ceil(this.stat.size/512),i=Math.min(r,this.maxReadSize),n=Buffer.allocUnsafe(i);this[Zn](t,n,0,n.length,0,this.stat.size,r)}[Zn](t,r,i,n,s,o,l){Zt.read(t,r,i,n,s,(a,c)=>{if(a)return this[Ve](t,()=>this.emit("error",a));this[Ia](t,r,i,n,s,o,l,c)})}[Ve](t,r){Zt.close(t,r)}[Ia](t,r,i,n,s,o,l,a){if(a<=0&&o>0){let u=new Error("encountered unexpected EOF");return u.path=this.absolute,u.syscall="read",u.code="EOF",this[Ve](t,()=>this.emit("error",u))}if(a>o){let u=new Error("did not encounter expected EOF");return u.path=this.absolute,u.syscall="read",u.code="EOF",this[Ve](t,()=>this.emit("error",u))}if(a===o)for(let u=a;uu?this.emit("error",u):this.end());i>=n&&(r=Buffer.allocUnsafe(n),i=0),n=r.length-i,this[Zn](t,r,i,n,s,o,l)}}),gd=class extends Qn{[Aa](){this[Kn](Zt.lstatSync(this.absolute))}[Ra](){this[xa](Zt.readlinkSync(this.absolute))}[La](){this[Ma](Zt.openSync(this.absolute,"r"))}[Zn](t,r,i,n,s,o,l){let a=!0;try{let c=Zt.readSync(t,r,i,n,s);this[Ia](t,r,i,n,s,o,l,c),a=!1}finally{if(a)try{this[Ve](t,()=>{})}catch(c){}}}[Ve](t,r){Zt.closeSync(t),r()}},Pw=md(class extends ld{constructor(t,r){r=r||{},super(r),this.preservePaths=!!r.preservePaths,this.portable=!!r.portable,this.strict=!!r.strict,this.noPax=!!r.noPax,this.noMtime=!!r.noMtime,this.readEntry=t,this.type=t.type,this.type==="Directory"&&this.portable&&(this.noMtime=!0),this.path=t.path,this.mode=this[Jn](t.mode),this.uid=this.portable?null:t.uid,this.gid=this.portable?null:t.gid,this.uname=this.portable?null:t.uname,this.gname=this.portable?null:t.gname,this.size=t.size,this.mtime=this.noMtime?null:r.mtime||t.mtime,this.atime=this.portable?null:t.atime,this.ctime=this.portable?null:t.ctime,this.linkpath=t.linkpath,typeof r.onwarn=="function"&&this.on("warn",r.onwarn);let i=!1;if(Br.isAbsolute(this.path)&&!this.preservePaths){let n=Br.parse(this.path);i=n.root,this.path=this.path.substr(n.root.length)}this.remain=t.size,this.blockRemain=t.startBlockSize,this.header=new ud({path:this.path,linkpath:this.linkpath,mode:this.mode,uid:this.portable?null:this.uid,gid:this.portable?null:this.gid,size:this.size,mtime:this.noMtime?null:this.mtime,type:this.type,uname:this.portable?null:this.uname,atime:this.portable?null:this.atime,ctime:this.portable?null:this.ctime}),i&&this.warn("TAR_ENTRY_INFO",`stripping ${i} from absolute path`,{entry:this,path:i+this.path}),this.header.encode()&&!this.noPax&&super.write(new cd({atime:this.portable?null:this.atime,ctime:this.portable?null:this.ctime,gid:this.portable?null:this.gid,mtime:this.noMtime?null:this.mtime,path:this.path,linkpath:this.linkpath,size:this.size,uid:this.portable?null:this.uid,uname:this.portable?null:this.uname,dev:this.portable?null:this.readEntry.dev,ino:this.portable?null:this.readEntry.ino,nlink:this.portable?null:this.readEntry.nlink}).encode()),super.write(this.header.block),t.pipe(this)}[Jn](t){return yd(t,this.type==="Directory",this.portable)}write(t){let r=t.length;if(r>this.blockRemain)throw new Error("writing more to entry than is appropriate");return this.blockRemain-=r,super.write(t)}end(){return this.blockRemain&&this.write(Buffer.alloc(this.blockRemain)),super.end()}});Qn.Sync=gd;Qn.Tar=Pw;var Cw=e=>e.isFile()?"File":e.isDirectory()?"Directory":e.isSymbolicLink()?"SymbolicLink":"Unsupported";ad.exports=Qn});var wd=x((c_,vd)=>{"use strict";vd.exports=function(e){e.prototype[Symbol.iterator]=function*(){for(let t=this.head;t;t=t.next)yield t.value}}});var Pa=x((u_,Ed)=>{"use strict";Ed.exports=V;V.Node=Ye;V.create=V;function V(e){var t=this;if(t instanceof V||(t=new V),t.tail=null,t.head=null,t.length=0,e&&typeof e.forEach=="function")e.forEach(function(n){t.push(n)});else if(arguments.length>0)for(var r=0,i=arguments.length;r1)r=t;else if(this.head)i=this.head.next,r=this.head.value;else throw new TypeError("Reduce of empty list with no initial value");for(var n=0;i!==null;n++)r=e(r,i.value,n),i=i.next;return r};V.prototype.reduceReverse=function(e,t){var r,i=this.tail;if(arguments.length>1)r=t;else if(this.tail)i=this.tail.prev,r=this.tail.value;else throw new TypeError("Reduce of empty list with no initial value");for(var n=this.length-1;i!==null;n--)r=e(r,i.value,n),i=i.prev;return r};V.prototype.toArray=function(){for(var e=new Array(this.length),t=0,r=this.head;r!==null;t++)e[t]=r.value,r=r.next;return e};V.prototype.toArrayReverse=function(){for(var e=new Array(this.length),t=0,r=this.tail;r!==null;t++)e[t]=r.value,r=r.prev;return e};V.prototype.slice=function(e,t){t=t||this.length,t<0&&(t+=this.length),e=e||0,e<0&&(e+=this.length);var r=new V;if(tthis.length&&(t=this.length);for(var i=0,n=this.head;n!==null&&ithis.length&&(t=this.length);for(var i=this.length,n=this.tail;n!==null&&i>t;i--)n=n.prev;for(;n!==null&&i>e;i--,n=n.prev)r.push(n.value);return r};V.prototype.splice=function(e,t,...r){e>this.length&&(e=this.length-1),e<0&&(e=this.length+e);for(var i=0,n=this.head;n!==null&&i{"use strict";var ka=class{constructor(t,r){this.path=t||"./",this.absolute=r,this.entry=null,this.stat=null,this.readdir=null,this.pending=!1,this.ignore=!1,this.piped=!1}},qw=Mr(),Uw=wa(),jw=Gn(),Ba=Ca(),Xw=Ba.Sync,zw=Ba.Tar,Gw=Pa(),_d=Buffer.alloc(1024),ts=Symbol("onStat"),es=Symbol("ended"),Kt=Symbol("queue"),Fr=Symbol("current"),Ze=Symbol("process"),rs=Symbol("processing"),Sd=Symbol("processJob"),Jt=Symbol("jobs"),Fa=Symbol("jobDone"),is=Symbol("addFSEntry"),Od=Symbol("addTarEntry"),qa=Symbol("stat"),Ua=Symbol("readdir"),ns=Symbol("onreaddir"),ss=Symbol("pipe"),Nd=Symbol("entry"),ja=Symbol("entryOpt"),Xa=Symbol("writeEntryClass"),Dd=Symbol("write"),za=Symbol("ondrain"),os=require("fs"),Td=require("path"),$w=Vn(),Ga=$w(class extends qw{constructor(t){super(t);t=t||Object.create(null),this.opt=t,this.file=t.file||"",this.cwd=t.cwd||process.cwd(),this.maxReadSize=t.maxReadSize,this.preservePaths=!!t.preservePaths,this.strict=!!t.strict,this.noPax=!!t.noPax,this.prefix=(t.prefix||"").replace(/(\\|\/)+$/,""),this.linkCache=t.linkCache||new Map,this.statCache=t.statCache||new Map,this.readdirCache=t.readdirCache||new Map,this[Xa]=Ba,typeof t.onwarn=="function"&&this.on("warn",t.onwarn),this.portable=!!t.portable,this.zip=null,t.gzip?(typeof t.gzip!="object"&&(t.gzip={}),this.portable&&(t.gzip.portable=!0),this.zip=new Uw.Gzip(t.gzip),this.zip.on("data",r=>super.write(r)),this.zip.on("end",r=>super.end()),this.zip.on("drain",r=>this[za]()),this.on("resume",r=>this.zip.resume())):this.on("drain",this[za]),this.noDirRecurse=!!t.noDirRecurse,this.follow=!!t.follow,this.noMtime=!!t.noMtime,this.mtime=t.mtime||null,this.filter=typeof t.filter=="function"?t.filter:r=>!0,this[Kt]=new Gw,this[Jt]=0,this.jobs=+t.jobs||4,this[rs]=!1,this[es]=!1}[Dd](t){return super.write(t)}add(t){return this.write(t),this}end(t){return t&&this.write(t),this[es]=!0,this[Ze](),this}write(t){if(this[es])throw new Error("write after end");return t instanceof jw?this[Od](t):this[is](t),this.flowing}[Od](t){let r=Td.resolve(this.cwd,t.path);if(this.prefix&&(t.path=this.prefix+"/"+t.path.replace(/^\.(\/+|$)/,"")),!this.filter(t.path,t))t.resume();else{let i=new ka(t.path,r,!1);i.entry=new zw(t,this[ja](i)),i.entry.on("end",n=>this[Fa](i)),this[Jt]+=1,this[Kt].push(i)}this[Ze]()}[is](t){let r=Td.resolve(this.cwd,t);this.prefix&&(t=this.prefix+"/"+t.replace(/^\.(\/+|$)/,"")),this[Kt].push(new ka(t,r)),this[Ze]()}[qa](t){t.pending=!0,this[Jt]+=1;let r=this.follow?"stat":"lstat";os[r](t.absolute,(i,n)=>{t.pending=!1,this[Jt]-=1,i?this.emit("error",i):this[ts](t,n)})}[ts](t,r){this.statCache.set(t.absolute,r),t.stat=r,this.filter(t.path,r)||(t.ignore=!0),this[Ze]()}[Ua](t){t.pending=!0,this[Jt]+=1,os.readdir(t.absolute,(r,i)=>{if(t.pending=!1,this[Jt]-=1,r)return this.emit("error",r);this[ns](t,i)})}[ns](t,r){this.readdirCache.set(t.absolute,r),t.readdir=r,this[Ze]()}[Ze](){if(!this[rs]){this[rs]=!0;for(let t=this[Kt].head;t!==null&&this[Jt]this.warn(r,i,n),noPax:this.noPax,cwd:this.cwd,absolute:t.absolute,preservePaths:this.preservePaths,maxReadSize:this.maxReadSize,strict:this.strict,portable:this.portable,linkCache:this.linkCache,statCache:this.statCache,noMtime:this.noMtime,mtime:this.mtime}}[Nd](t){this[Jt]+=1;try{return new this[Xa](t.path,this[ja](t)).on("end",()=>this[Fa](t)).on("error",r=>this.emit("error",r))}catch(r){this.emit("error",r)}}[za](){this[Fr]&&this[Fr].entry&&this[Fr].entry.resume()}[ss](t){t.piped=!0,t.readdir&&t.readdir.forEach(n=>{let s=this.prefix?t.path.slice(this.prefix.length+1)||"./":t.path,o=s==="./"?"":s.replace(/\/*$/,"/");this[is](o+n)});let r=t.entry,i=this.zip;i?r.on("data",n=>{i.write(n)||r.pause()}):r.on("data",n=>{super.write(n)||r.pause()})}pause(){return this.zip&&this.zip.pause(),super.pause()}}),Rd=class extends Ga{constructor(t){super(t);this[Xa]=Xw}pause(){}resume(){}[qa](t){let r=this.follow?"statSync":"lstatSync";this[ts](t,os[r](t.absolute))}[Ua](t,r){this[ns](t,os.readdirSync(t.absolute))}[ss](t){let r=t.entry,i=this.zip;t.readdir&&t.readdir.forEach(n=>{let s=this.prefix?t.path.slice(this.prefix.length+1)||"./":t.path,o=s==="./"?"":s.replace(/\/*$/,"/");this[is](o+n)}),i?r.on("data",n=>{i.write(n)}):r.on("data",n=>{super[Dd](n)})}};Ga.Sync=Rd;bd.exports=Ga});var Wr=x(qi=>{"use strict";var Ww=Mr(),Hw=require("events").EventEmitter,Tt=require("fs"),$a=Tt.writev;if(!$a){let e=process.binding("fs"),t=e.FSReqWrap||e.FSReqCallback;$a=(r,i,n,s)=>{let o=(a,c)=>s(a,c,i),l=new t;l.oncomplete=o,e.writeBuffers(r,i,n,l)}}var qr=Symbol("_autoClose"),$t=Symbol("_close"),Ui=Symbol("_ended"),Q=Symbol("_fd"),Ad=Symbol("_finished"),xe=Symbol("_flags"),Wa=Symbol("_flush"),Ha=Symbol("_handleChunk"),Va=Symbol("_makeBuf"),ls=Symbol("_mode"),cs=Symbol("_needDrain"),Ur=Symbol("_onerror"),jr=Symbol("_onopen"),Ya=Symbol("_onread"),Xr=Symbol("_onwrite"),Le=Symbol("_open"),ue=Symbol("_path"),Ke=Symbol("_pos"),Qt=Symbol("_queue"),zr=Symbol("_read"),Id=Symbol("_readSize"),Me=Symbol("_reading"),us=Symbol("_remain"),xd=Symbol("_size"),hs=Symbol("_write"),Gr=Symbol("_writing"),fs=Symbol("_defaultFlag"),$r=Symbol("_errored"),Za=class extends Ww{constructor(t,r){if(r=r||{},super(r),this.readable=!0,this.writable=!1,typeof t!="string")throw new TypeError("path must be a string");this[$r]=!1,this[Q]=typeof r.fd=="number"?r.fd:null,this[ue]=t,this[Id]=r.readSize||16*1024*1024,this[Me]=!1,this[xd]=typeof r.size=="number"?r.size:Infinity,this[us]=this[xd],this[qr]=typeof r.autoClose=="boolean"?r.autoClose:!0,typeof this[Q]=="number"?this[zr]():this[Le]()}get fd(){return this[Q]}get path(){return this[ue]}write(){throw new TypeError("this is a readable stream")}end(){throw new TypeError("this is a readable stream")}[Le](){Tt.open(this[ue],"r",(t,r)=>this[jr](t,r))}[jr](t,r){t?this[Ur](t):(this[Q]=r,this.emit("open",r),this[zr]())}[Va](){return Buffer.allocUnsafe(Math.min(this[Id],this[us]))}[zr](){if(!this[Me]){this[Me]=!0;let t=this[Va]();if(t.length===0)return process.nextTick(()=>this[Ya](null,0,t));Tt.read(this[Q],t,0,t.length,null,(r,i,n)=>this[Ya](r,i,n))}}[Ya](t,r,i){this[Me]=!1,t?this[Ur](t):this[Ha](r,i)&&this[zr]()}[$t](){if(this[qr]&&typeof this[Q]=="number"){let t=this[Q];this[Q]=null,Tt.close(t,r=>r?this.emit("error",r):this.emit("close"))}}[Ur](t){this[Me]=!0,this[$t](),this.emit("error",t)}[Ha](t,r){let i=!1;return this[us]-=t,t>0&&(i=super.write(tthis[jr](t,r))}[jr](t,r){this[fs]&&this[xe]==="r+"&&t&&t.code==="ENOENT"?(this[xe]="w",this[Le]()):t?this[Ur](t):(this[Q]=r,this.emit("open",r),this[Wa]())}end(t,r){return t&&this.write(t,r),this[Ui]=!0,!this[Gr]&&!this[Qt].length&&typeof this[Q]=="number"&&this[Xr](null,0),this}write(t,r){return typeof t=="string"&&(t=Buffer.from(t,r)),this[Ui]?(this.emit("error",new Error("write() after end()")),!1):this[Q]===null||this[Gr]||this[Qt].length?(this[Qt].push(t),this[cs]=!0,!1):(this[Gr]=!0,this[hs](t),!0)}[hs](t){Tt.write(this[Q],t,0,t.length,this[Ke],(r,i)=>this[Xr](r,i))}[Xr](t,r){t?this[Ur](t):(this[Ke]!==null&&(this[Ke]+=r),this[Qt].length?this[Wa]():(this[Gr]=!1,this[Ui]&&!this[Ad]?(this[Ad]=!0,this[$t](),this.emit("finish")):this[cs]&&(this[cs]=!1,this.emit("drain"))))}[Wa](){if(this[Qt].length===0)this[Ui]&&this[Xr](null,0);else if(this[Qt].length===1)this[hs](this[Qt].pop());else{let t=this[Qt];this[Qt]=[],$a(this[Q],t,this[Ke],(r,i)=>this[Xr](r,i))}}[$t](){if(this[qr]&&typeof this[Q]=="number"){let t=this[Q];this[Q]=null,Tt.close(t,r=>r?this.emit("error",r):this.emit("close"))}}},Md=class extends Ka{[Le](){let t;if(this[fs]&&this[xe]==="r+")try{t=Tt.openSync(this[ue],this[xe],this[ls])}catch(r){if(r.code==="ENOENT")return this[xe]="w",this[Le]();throw r}else t=Tt.openSync(this[ue],this[xe],this[ls]);this[jr](null,t)}[$t](){if(this[qr]&&typeof this[Q]=="number"){let t=this[Q];this[Q]=null,Tt.closeSync(t),this.emit("close")}}[hs](t){let r=!0;try{this[Xr](null,Tt.writeSync(this[Q],t,0,t.length,this[Ke])),r=!1}finally{if(r)try{this[$t]()}catch(i){}}}};qi.ReadStream=Za;qi.ReadStreamSync=Ld;qi.WriteStream=Ka;qi.WriteStreamSync=Md});var ws=x((m_,Cd)=>{"use strict";var Vw=Vn(),Yw=kr(),Zw=require("events"),Kw=Pa(),Jw=1024*1024,Qw=Gn(),Pd=Hn(),tE=wa(),Ja=Buffer.from([31,139]),Ft=Symbol("state"),Je=Symbol("writeEntry"),he=Symbol("readEntry"),Qa=Symbol("nextEntry"),kd=Symbol("processEntry"),qt=Symbol("extendedHeader"),ji=Symbol("globalExtendedHeader"),Ce=Symbol("meta"),Bd=Symbol("emitMeta"),rt=Symbol("buffer"),fe=Symbol("queue"),Qe=Symbol("ended"),Fd=Symbol("emittedEnd"),tr=Symbol("emit"),Rt=Symbol("unzip"),ps=Symbol("consumeChunk"),ds=Symbol("consumeChunkSub"),tl=Symbol("consumeBody"),qd=Symbol("consumeMeta"),Ud=Symbol("consumeHeader"),ms=Symbol("consuming"),el=Symbol("bufferConcat"),rl=Symbol("maybeEnd"),Xi=Symbol("writing"),Pe=Symbol("aborted"),ys=Symbol("onDone"),er=Symbol("sawValidEntry"),gs=Symbol("sawNullBlock"),vs=Symbol("sawEOF"),eE=e=>!0;Cd.exports=Vw(class extends Zw{constructor(t){t=t||{},super(t),this.file=t.file||"",this[er]=null,this.on(ys,r=>{(this[Ft]==="begin"||this[er]===!1)&&this.warn("TAR_BAD_ARCHIVE","Unrecognized archive format")}),t.ondone?this.on(ys,t.ondone):this.on(ys,r=>{this.emit("prefinish"),this.emit("finish"),this.emit("end"),this.emit("close")}),this.strict=!!t.strict,this.maxMetaEntrySize=t.maxMetaEntrySize||Jw,this.filter=typeof t.filter=="function"?t.filter:eE,this.writable=!0,this.readable=!1,this[fe]=new Kw,this[rt]=null,this[he]=null,this[Je]=null,this[Ft]="begin",this[Ce]="",this[qt]=null,this[ji]=null,this[Qe]=!1,this[Rt]=null,this[Pe]=!1,this[gs]=!1,this[vs]=!1,typeof t.onwarn=="function"&&this.on("warn",t.onwarn),typeof t.onentry=="function"&&this.on("entry",t.onentry)}[Ud](t,r){this[er]===null&&(this[er]=!1);let i;try{i=new Yw(t,r,this[qt],this[ji])}catch(n){return this.warn("TAR_ENTRY_INVALID",n)}if(i.nullBlock)this[gs]?(this[vs]=!0,this[Ft]==="begin"&&(this[Ft]="header"),this[tr]("eof")):(this[gs]=!0,this[tr]("nullBlock"));else if(this[gs]=!1,!i.cksumValid)this.warn("TAR_ENTRY_INVALID","checksum failure",{header:i});else if(!i.path)this.warn("TAR_ENTRY_INVALID","path is required",{header:i});else{let n=i.type;if(/^(Symbolic)?Link$/.test(n)&&!i.linkpath)this.warn("TAR_ENTRY_INVALID","linkpath required",{header:i});else if(!/^(Symbolic)?Link$/.test(n)&&i.linkpath)this.warn("TAR_ENTRY_INVALID","linkpath forbidden",{header:i});else{let s=this[Je]=new Qw(i,this[qt],this[ji]);if(!this[er])if(s.remain){let o=()=>{s.invalid||(this[er]=!0)};s.on("end",o)}else this[er]=!0;s.meta?s.size>this.maxMetaEntrySize?(s.ignore=!0,this[tr]("ignoredEntry",s),this[Ft]="ignore",s.resume()):s.size>0&&(this[Ce]="",s.on("data",o=>this[Ce]+=o),this[Ft]="meta"):(this[qt]=null,s.ignore=s.ignore||!this.filter(s.path,s),s.ignore?(this[tr]("ignoredEntry",s),this[Ft]=s.remain?"ignore":"header",s.resume()):(s.remain?this[Ft]="body":(this[Ft]="header",s.end()),this[he]?this[fe].push(s):(this[fe].push(s),this[Qa]())))}}}[kd](t){let r=!0;return t?Array.isArray(t)?this.emit.apply(this,t):(this[he]=t,this.emit("entry",t),t.emittedEnd||(t.on("end",i=>this[Qa]()),r=!1)):(this[he]=null,r=!1),r}[Qa](){do;while(this[kd](this[fe].shift()));if(!this[fe].length){let t=this[he];!t||t.flowing||t.size===t.remain?this[Xi]||this.emit("drain"):t.once("drain",i=>this.emit("drain"))}}[tl](t,r){let i=this[Je],n=i.blockRemain,s=n>=t.length&&r===0?t:t.slice(r,r+n);return i.write(s),i.blockRemain||(this[Ft]="header",this[Je]=null,i.end()),s.length}[qd](t,r){let i=this[Je],n=this[tl](t,r);return this[Je]||this[Bd](i),n}[tr](t,r,i){!this[fe].length&&!this[he]?this.emit(t,r,i):this[fe].push([t,r,i])}[Bd](t){switch(this[tr]("meta",this[Ce]),t.type){case"ExtendedHeader":case"OldExtendedHeader":this[qt]=Pd.parse(this[Ce],this[qt],!1);break;case"GlobalExtendedHeader":this[ji]=Pd.parse(this[Ce],this[ji],!0);break;case"NextFileHasLongPath":case"OldGnuLongPath":this[qt]=this[qt]||Object.create(null),this[qt].path=this[Ce].replace(/\0.*/,"");break;case"NextFileHasLongLinkpath":this[qt]=this[qt]||Object.create(null),this[qt].linkpath=this[Ce].replace(/\0.*/,"");break;default:throw new Error("unknown meta: "+t.type)}}abort(t){this[Pe]=!0,this.emit("abort",t),this.warn("TAR_ABORT",t,{recoverable:!1})}write(t){if(this[Pe])return;if(this[Rt]===null&&t){if(this[rt]&&(t=Buffer.concat([this[rt],t]),this[rt]=null),t.lengththis[ps](s)),this[Rt].on("error",s=>this.abort(s)),this[Rt].on("end",s=>{this[Qe]=!0,this[ps]()}),this[Xi]=!0;let n=this[Rt][i?"end":"write"](t);return this[Xi]=!1,n}}this[Xi]=!0,this[Rt]?this[Rt].write(t):this[ps](t),this[Xi]=!1;let r=this[fe].length?!1:this[he]?this[he].flowing:!0;return!r&&!this[fe].length&&this[he].once("drain",i=>this.emit("drain")),r}[el](t){t&&!this[Pe]&&(this[rt]=this[rt]?Buffer.concat([this[rt],t]):t)}[rl](){if(this[Qe]&&!this[Fd]&&!this[Pe]&&!this[ms]){this[Fd]=!0;let t=this[Je];if(t&&t.blockRemain){let r=this[rt]?this[rt].length:0;this.warn("TAR_BAD_ARCHIVE",`Truncated input (needed ${t.blockRemain} more bytes, only ${r} available)`,{entry:t}),this[rt]&&t.write(this[rt]),t.end()}this[tr](ys)}}[ps](t){if(this[ms])this[el](t);else if(!t&&!this[rt])this[rl]();else{if(this[ms]=!0,this[rt]){this[el](t);let r=this[rt];this[rt]=null,this[ds](r)}else this[ds](t);for(;this[rt]&&this[rt].length>=512&&!this[Pe]&&!this[vs];){let r=this[rt];this[rt]=null,this[ds](r)}this[ms]=!1}(!this[rt]||this[Qe])&&this[rl]()}[ds](t){let r=0,i=t.length;for(;r+512<=i&&!this[Pe]&&!this[vs];)switch(this[Ft]){case"begin":case"header":this[Ud](t,r),r+=512;break;case"ignore":case"body":r+=this[tl](t,r);break;case"meta":r+=this[qd](t,r);break;default:throw new Error("invalid state: "+this[Ft])}r{"use strict";var rE=Lr(),Xd=ws(),Hr=require("fs"),iE=Wr(),zd=require("path");jd.exports=(e,t,r)=>{typeof e=="function"?(r=e,t=null,e={}):Array.isArray(e)&&(t=e,e={}),typeof t=="function"&&(r=t,t=null),t?t=Array.from(t):t=[];let i=rE(e);if(i.sync&&typeof r=="function")throw new TypeError("callback not supported for sync tar functions");if(!i.file&&typeof r=="function")throw new TypeError("callback only supported with file option");return t.length&&sE(i,t),i.noResume||nE(i),i.file&&i.sync?oE(i):i.file?aE(i,r):Gd(i)};var nE=e=>{let t=e.onentry;e.onentry=t?r=>{t(r),r.resume()}:r=>r.resume()},sE=(e,t)=>{let r=new Map(t.map(s=>[s.replace(/\/+$/,""),!0])),i=e.filter,n=(s,o)=>{let l=o||zd.parse(s).root||".",a=s===l?!1:r.has(s)?r.get(s):n(zd.dirname(s),l);return r.set(s,a),a};e.filter=i?(s,o)=>i(s,o)&&n(s.replace(/\/+$/,"")):s=>n(s.replace(/\/+$/,""))},oE=e=>{let t=Gd(e),r=e.file,i=!0,n;try{let s=Hr.statSync(r),o=e.maxReadSize||16*1024*1024;if(s.size{let r=new Xd(e),i=e.maxReadSize||16*1024*1024,n=e.file,s=new Promise((o,l)=>{r.on("error",l),r.on("end",o),Hr.stat(n,(a,c)=>{if(a)l(a);else{let u=new iE.ReadStream(n,{readSize:i,size:c.size});u.on("error",l),u.pipe(r)}})});return t?s.then(t,t):s},Gd=e=>new Xd(e)});var Zd=x((g_,$d)=>{"use strict";var lE=Lr(),bs=as(),Wd=Wr(),Hd=Es(),Vd=require("path");$d.exports=(e,t,r)=>{if(typeof t=="function"&&(r=t),Array.isArray(e)&&(t=e,e={}),!t||!Array.isArray(t)||!t.length)throw new TypeError("no files or directories specified");t=Array.from(t);let i=lE(e);if(i.sync&&typeof r=="function")throw new TypeError("callback not supported for sync tar functions");if(!i.file&&typeof r=="function")throw new TypeError("callback only supported with file option");return i.file&&i.sync?cE(i,t):i.file?uE(i,t,r):i.sync?hE(i,t):fE(i,t)};var cE=(e,t)=>{let r=new bs.Sync(e),i=new Wd.WriteStreamSync(e.file,{mode:e.mode||438});r.pipe(i),Yd(r,t)},uE=(e,t,r)=>{let i=new bs(e),n=new Wd.WriteStream(e.file,{mode:e.mode||438});i.pipe(n);let s=new Promise((o,l)=>{n.on("error",l),n.on("close",o),i.on("error",l)});return il(i,t),r?s.then(r,r):s},Yd=(e,t)=>{t.forEach(r=>{r.charAt(0)==="@"?Hd({file:Vd.resolve(e.cwd,r.substr(1)),sync:!0,noResume:!0,onentry:i=>e.add(i)}):e.add(r)}),e.end()},il=(e,t)=>{for(;t.length;){let r=t.shift();if(r.charAt(0)==="@")return Hd({file:Vd.resolve(e.cwd,r.substr(1)),noResume:!0,onentry:i=>e.add(i)}).then(i=>il(e,t));e.add(r)}e.end()},hE=(e,t)=>{let r=new bs.Sync(e);return Yd(r,t),r},fE=(e,t)=>{let r=new bs(e);return il(r,t),r}});var nl=x((v_,Kd)=>{"use strict";var pE=Lr(),Jd=as(),Ut=require("fs"),Qd=Wr(),tm=Es(),em=require("path"),rm=kr();Kd.exports=(e,t,r)=>{let i=pE(e);if(!i.file)throw new TypeError("file is required");if(i.gzip)throw new TypeError("cannot append to compressed archives");if(!t||!Array.isArray(t)||!t.length)throw new TypeError("no files or directories specified");return t=Array.from(t),i.sync?dE(i,t):mE(i,t,r)};var dE=(e,t)=>{let r=new Jd.Sync(e),i=!0,n,s;try{try{n=Ut.openSync(e.file,"r+")}catch(a){if(a.code==="ENOENT")n=Ut.openSync(e.file,"w+");else throw a}let o=Ut.fstatSync(n),l=Buffer.alloc(512);t:for(s=0;so.size)break;s+=c,e.mtimeCache&&e.mtimeCache.set(a.path,a.mtime)}i=!1,yE(e,r,s,n,t)}finally{if(i)try{Ut.closeSync(n)}catch(o){}}},yE=(e,t,r,i,n)=>{let s=new Qd.WriteStreamSync(e.file,{fd:i,start:r});t.pipe(s),gE(t,n)},mE=(e,t,r)=>{t=Array.from(t);let i=new Jd(e),n=(o,l,a)=>{let c=(E,m)=>{E?Ut.close(o,w=>a(E)):a(null,m)},u=0;if(l===0)return c(null,0);let f=0,y=Buffer.alloc(512),b=(E,m)=>{if(E)return c(E);if(f+=m,f<512&&m)return Ut.read(o,y,f,y.length-f,u+f,b);if(u===0&&y[0]===31&&y[1]===139)return c(new Error("cannot append to compressed archives"));if(f<512)return c(null,u);let w=new rm(y);if(!w.cksumValid)return c(null,u);let O=512*Math.ceil(w.size/512);if(u+O+512>l||(u+=O+512,u>=l))return c(null,u);e.mtimeCache&&e.mtimeCache.set(w.path,w.mtime),f=0,Ut.read(o,y,0,512,u,b)};Ut.read(o,y,0,512,u,b)},s=new Promise((o,l)=>{i.on("error",l);let a="r+",c=(u,f)=>{if(u&&u.code==="ENOENT"&&a==="r+")return a="w+",Ut.open(e.file,a,c);if(u)return l(u);Ut.fstat(f,(y,b)=>{if(y)return l(y);n(f,b.size,(E,m)=>{if(E)return l(E);let w=new Qd.WriteStream(e.file,{fd:f,start:m});i.pipe(w),w.on("error",l),w.on("close",o),im(i,t)})})};Ut.open(e.file,a,c)});return r?s.then(r,r):s},gE=(e,t)=>{t.forEach(r=>{r.charAt(0)==="@"?tm({file:em.resolve(e.cwd,r.substr(1)),sync:!0,noResume:!0,onentry:i=>e.add(i)}):e.add(r)}),e.end()},im=(e,t)=>{for(;t.length;){let r=t.shift();if(r.charAt(0)==="@")return tm({file:em.resolve(e.cwd,r.substr(1)),noResume:!0,onentry:i=>e.add(i)}).then(i=>im(e,t));e.add(r)}e.end()}});var sm=x((w_,nm)=>{"use strict";var vE=Lr(),wE=nl();nm.exports=(e,t,r)=>{let i=vE(e);if(!i.file)throw new TypeError("file is required");if(i.gzip)throw new TypeError("cannot append to compressed archives");if(!t||!Array.isArray(t)||!t.length)throw new TypeError("no files or directories specified");return t=Array.from(t),EE(i),wE(i,t,r)};var EE=e=>{let t=e.filter;e.mtimeCache||(e.mtimeCache=new Map),e.filter=t?(r,i)=>t(r,i)&&!(e.mtimeCache.get(r)>i.mtime):(r,i)=>!(e.mtimeCache.get(r)>i.mtime)}});var lm=x((E_,om)=>{var{promisify:am}=require("util"),ke=require("fs"),bE=e=>{if(!e)e={mode:511,fs:ke};else if(typeof e=="object")e={mode:511,fs:ke,...e};else if(typeof e=="number")e={mode:e,fs:ke};else if(typeof e=="string")e={mode:parseInt(e,8),fs:ke};else throw new TypeError("invalid options argument");return e.mkdir=e.mkdir||e.fs.mkdir||ke.mkdir,e.mkdirAsync=am(e.mkdir),e.stat=e.stat||e.fs.stat||ke.stat,e.statAsync=am(e.stat),e.statSync=e.statSync||e.fs.statSync||ke.statSync,e.mkdirSync=e.mkdirSync||e.fs.mkdirSync||ke.mkdirSync,e};om.exports=bE});var um=x((b_,cm)=>{var _E=process.env.__TESTING_MKDIRP_PLATFORM__||process.platform,{resolve:SE,parse:OE}=require("path"),NE=e=>{if(/\0/.test(e))throw Object.assign(new TypeError("path must be a string without null bytes"),{path:e,code:"ERR_INVALID_ARG_VALUE"});if(e=SE(e),_E==="win32"){let t=/[*|"<>?:]/,{root:r}=OE(e);if(t.test(e.substr(r.length)))throw Object.assign(new Error("Illegal characters in path."),{path:e,code:"EINVAL"})}return e};cm.exports=NE});var mm=x((__,hm)=>{var{dirname:fm}=require("path"),pm=(e,t,r=void 0)=>r===t?Promise.resolve():e.statAsync(t).then(i=>i.isDirectory()?r:void 0,i=>i.code==="ENOENT"?pm(e,fm(t),t):void 0),dm=(e,t,r=void 0)=>{if(r!==t)try{return e.statSync(t).isDirectory()?r:void 0}catch(i){return i.code==="ENOENT"?dm(e,fm(t),t):void 0}};hm.exports={findMade:pm,findMadeSync:dm}});var al=x((S_,ym)=>{var{dirname:gm}=require("path"),sl=(e,t,r)=>{t.recursive=!1;let i=gm(e);return i===e?t.mkdirAsync(e,t).catch(n=>{if(n.code!=="EISDIR")throw n}):t.mkdirAsync(e,t).then(()=>r||e,n=>{if(n.code==="ENOENT")return sl(i,t).then(s=>sl(e,t,s));if(n.code!=="EEXIST"&&n.code!=="EROFS")throw n;return t.statAsync(e).then(s=>{if(s.isDirectory())return r;throw n},()=>{throw n})})},ol=(e,t,r)=>{let i=gm(e);if(t.recursive=!1,i===e)try{return t.mkdirSync(e,t)}catch(n){if(n.code!=="EISDIR")throw n;return}try{return t.mkdirSync(e,t),r||e}catch(n){if(n.code==="ENOENT")return ol(e,t,ol(i,t,r));if(n.code!=="EEXIST"&&n.code!=="EROFS")throw n;try{if(!t.statSync(e).isDirectory())throw n}catch(s){throw n}}};ym.exports={mkdirpManual:sl,mkdirpManualSync:ol}});var Em=x((O_,vm)=>{var{dirname:wm}=require("path"),{findMade:DE,findMadeSync:TE}=mm(),{mkdirpManual:RE,mkdirpManualSync:AE}=al(),IE=(e,t)=>(t.recursive=!0,wm(e)===e?t.mkdirAsync(e,t):DE(t,e).then(i=>t.mkdirAsync(e,t).then(()=>i).catch(n=>{if(n.code==="ENOENT")return RE(e,t);throw n}))),xE=(e,t)=>{if(t.recursive=!0,wm(e)===e)return t.mkdirSync(e,t);let i=TE(t,e);try{return t.mkdirSync(e,t),i}catch(n){if(n.code==="ENOENT")return AE(e,t);throw n}};vm.exports={mkdirpNative:IE,mkdirpNativeSync:xE}});var Om=x((N_,bm)=>{var _m=require("fs"),LE=process.env.__TESTING_MKDIRP_NODE_VERSION__||process.version,ll=LE.replace(/^v/,"").split("."),Sm=+ll[0]>10||+ll[0]==10&&+ll[1]>=12,ME=Sm?e=>e.mkdir===_m.mkdir:()=>!1,CE=Sm?e=>e.mkdirSync===_m.mkdirSync:()=>!1;bm.exports={useNative:ME,useNativeSync:CE}});var Im=x((D_,Nm)=>{var Vr=lm(),Yr=um(),{mkdirpNative:Dm,mkdirpNativeSync:Tm}=Em(),{mkdirpManual:Rm,mkdirpManualSync:Am}=al(),{useNative:PE,useNativeSync:kE}=Om(),Zr=(e,t)=>(e=Yr(e),t=Vr(t),PE(t)?Dm(e,t):Rm(e,t)),BE=(e,t)=>(e=Yr(e),t=Vr(t),kE(t)?Tm(e,t):Am(e,t));Zr.sync=BE;Zr.native=(e,t)=>Dm(Yr(e),Vr(t));Zr.manual=(e,t)=>Rm(Yr(e),Vr(t));Zr.nativeSync=(e,t)=>Tm(Yr(e),Vr(t));Zr.manualSync=(e,t)=>Am(Yr(e),Vr(t));Nm.exports=Zr});var Bm=x((T_,xm)=>{"use strict";var jt=require("fs"),rr=require("path"),FE=jt.lchown?"lchown":"chown",qE=jt.lchownSync?"lchownSync":"chownSync",Lm=jt.lchown&&!process.version.match(/v1[1-9]+\./)&&!process.version.match(/v10\.[6-9]/),Mm=(e,t,r)=>{try{return jt[qE](e,t,r)}catch(i){if(i.code!=="ENOENT")throw i}},UE=(e,t,r)=>{try{return jt.chownSync(e,t,r)}catch(i){if(i.code!=="ENOENT")throw i}},jE=Lm?(e,t,r,i)=>n=>{!n||n.code!=="EISDIR"?i(n):jt.chown(e,t,r,i)}:(e,t,r,i)=>i,cl=Lm?(e,t,r)=>{try{return Mm(e,t,r)}catch(i){if(i.code!=="EISDIR")throw i;UE(e,t,r)}}:(e,t,r)=>Mm(e,t,r),XE=process.version,Cm=(e,t,r)=>jt.readdir(e,t,r),zE=(e,t)=>jt.readdirSync(e,t);/^v4\./.test(XE)&&(Cm=(e,t,r)=>jt.readdir(e,r));var _s=(e,t,r,i)=>{jt[FE](e,t,r,jE(e,t,r,n=>{i(n&&n.code!=="ENOENT"?n:null)}))},Pm=(e,t,r,i,n)=>{if(typeof t=="string")return jt.lstat(rr.resolve(e,t),(s,o)=>{if(s)return n(s.code!=="ENOENT"?s:null);o.name=t,Pm(e,o,r,i,n)});if(t.isDirectory())ul(rr.resolve(e,t.name),r,i,s=>{if(s)return n(s);let o=rr.resolve(e,t.name);_s(o,r,i,n)});else{let s=rr.resolve(e,t.name);_s(s,r,i,n)}},ul=(e,t,r,i)=>{Cm(e,{withFileTypes:!0},(n,s)=>{if(n){if(n.code==="ENOENT")return i();if(n.code!=="ENOTDIR"&&n.code!=="ENOTSUP")return i(n)}if(n||!s.length)return _s(e,t,r,i);let o=s.length,l=null,a=c=>{if(!l){if(c)return i(l=c);if(--o==0)return _s(e,t,r,i)}};s.forEach(c=>Pm(e,c,t,r,a))})},GE=(e,t,r,i)=>{if(typeof t=="string")try{let n=jt.lstatSync(rr.resolve(e,t));n.name=t,t=n}catch(n){if(n.code==="ENOENT")return;throw n}t.isDirectory()&&km(rr.resolve(e,t.name),r,i),cl(rr.resolve(e,t.name),r,i)},km=(e,t,r)=>{let i;try{i=zE(e,{withFileTypes:!0})}catch(n){if(n.code==="ENOENT")return;if(n.code==="ENOTDIR"||n.code==="ENOTSUP")return cl(e,t,r);throw n}return i&&i.length&&i.forEach(n=>GE(e,n,t,r)),cl(e,t,r)};xm.exports=ul;ul.sync=km});var jm=x((R_,hl)=>{"use strict";var Fm=Im(),Xt=require("fs"),Ss=require("path"),qm=Bm(),fl=class extends Error{constructor(t,r){super("Cannot extract through symbolic link");this.path=r,this.symlink=t}get name(){return"SylinkError"}},zi=class extends Error{constructor(t,r){super(r+": Cannot cd into '"+t+"'");this.path=t,this.code=r}get name(){return"CwdError"}};hl.exports=(e,t,r)=>{let i=t.umask,n=t.mode|448,s=(n&i)!=0,o=t.uid,l=t.gid,a=typeof o=="number"&&typeof l=="number"&&(o!==t.processUid||l!==t.processGid),c=t.preserve,u=t.unlink,f=t.cache,y=t.cwd,b=(w,O)=>{w?r(w):(f.set(e,!0),O&&a?qm(O,o,l,d=>b(d)):s?Xt.chmod(e,n,r):r())};if(f&&f.get(e)===!0)return b();if(e===y)return Xt.stat(e,(w,O)=>{(w||!O.isDirectory())&&(w=new zi(e,w&&w.code||"ENOTDIR")),b(w)});if(c)return Fm(e,{mode:n}).then(w=>b(null,w),b);let m=Ss.relative(y,e).split(/\/|\\/);Os(y,m,n,f,u,y,null,b)};var Os=(e,t,r,i,n,s,o,l)=>{if(!t.length)return l(null,o);let a=t.shift(),c=e+"/"+a;if(i.get(c))return Os(c,t,r,i,n,s,o,l);Xt.mkdir(c,r,Um(c,t,r,i,n,s,o,l))},Um=(e,t,r,i,n,s,o,l)=>a=>{if(a){if(a.path&&Ss.dirname(a.path)===s&&(a.code==="ENOTDIR"||a.code==="ENOENT"))return l(new zi(s,a.code));Xt.lstat(e,(c,u)=>{if(c)l(c);else if(u.isDirectory())Os(e,t,r,i,n,s,o,l);else if(n)Xt.unlink(e,f=>{if(f)return l(f);Xt.mkdir(e,r,Um(e,t,r,i,n,s,o,l))});else{if(u.isSymbolicLink())return l(new fl(e,e+"/"+t.join("/")));l(a)}})}else o=o||e,Os(e,t,r,i,n,s,o,l)};hl.exports.sync=(e,t)=>{let r=t.umask,i=t.mode|448,n=(i&r)!=0,s=t.uid,o=t.gid,l=typeof s=="number"&&typeof o=="number"&&(s!==t.processUid||o!==t.processGid),a=t.preserve,c=t.unlink,u=t.cache,f=t.cwd,y=w=>{u.set(e,!0),w&&l&&qm.sync(w,s,o),n&&Xt.chmodSync(e,i)};if(u&&u.get(e)===!0)return y();if(e===f){let w=!1,O="ENOTDIR";try{w=Xt.statSync(e).isDirectory()}catch(d){O=d.code}finally{if(!w)throw new zi(e,O)}y();return}if(a)return y(Fm.sync(e,i));let E=Ss.relative(f,e).split(/\/|\\/),m=null;for(let w=E.shift(),O=f;w&&(O+="/"+w);w=E.shift())if(!u.get(O))try{Xt.mkdirSync(O,i),m=m||O,u.set(O,!0)}catch(d){if(d.path&&Ss.dirname(d.path)===f&&(d.code==="ENOTDIR"||d.code==="ENOENT"))return new zi(f,d.code);let g=Xt.lstatSync(O);if(g.isDirectory()){u.set(O,!0);continue}else if(c){Xt.unlinkSync(O),Xt.mkdirSync(O,i),m=m||O,u.set(O,!0);continue}else if(g.isSymbolicLink())return new fl(O,O+"/"+E.join("/"))}return y(m)}});var Gm=x((A_,Xm)=>{var zm=require("assert");Xm.exports=()=>{let e=new Map,t=new Map,{join:r}=require("path"),i=u=>r(u).split(/[\\/]/).slice(0,-1).reduce((f,y)=>f.length?f.concat(r(f[f.length-1],y)):[y],[]),n=new Set,s=u=>{let f=t.get(u);if(!f)throw new Error("function does not have any path reservations");return{paths:f.paths.map(y=>e.get(y)),dirs:[...f.dirs].map(y=>e.get(y))}},o=u=>{let{paths:f,dirs:y}=s(u);return f.every(b=>b[0]===u)&&y.every(b=>b[0]instanceof Set&&b[0].has(u))},l=u=>n.has(u)||!o(u)?!1:(n.add(u),u(()=>a(u)),!0),a=u=>{if(!n.has(u))return!1;let{paths:f,dirs:y}=t.get(u),b=new Set;return f.forEach(E=>{let m=e.get(E);zm.equal(m[0],u),m.length===1?e.delete(E):(m.shift(),typeof m[0]=="function"?b.add(m[0]):m[0].forEach(w=>b.add(w)))}),y.forEach(E=>{let m=e.get(E);zm(m[0]instanceof Set),m[0].size===1&&m.length===1?e.delete(E):m[0].size===1?(m.shift(),b.add(m[0])):m[0].delete(u)}),n.delete(u),b.forEach(E=>l(E)),!0};return{check:o,reserve:(u,f)=>{let y=new Set(u.map(b=>i(b)).reduce((b,E)=>b.concat(E)));return t.set(f,{dirs:y,paths:u}),u.forEach(b=>{let E=e.get(b);E?E.push(f):e.set(b,[f])}),y.forEach(b=>{let E=e.get(b);E?E[E.length-1]instanceof Set?E[E.length-1].add(f):E.push(new Set([f])):e.set(b,[new Set([f])])}),l(f)}}}});var Hm=x((I_,$m)=>{var $E=process.env.__FAKE_PLATFORM__||process.platform,WE=$E==="win32",HE=global.__FAKE_TESTING_FS__||require("fs"),{O_CREAT:VE,O_TRUNC:YE,O_WRONLY:ZE,UV_FS_O_FILEMAP:Wm=0}=HE.constants,KE=WE&&!!Wm,JE=512*1024,QE=Wm|YE|VE|ZE;$m.exports=KE?e=>e"w"});var El=x((x_,Vm)=>{"use strict";var t1=require("assert"),e1=ws(),J=require("fs"),r1=Wr(),pe=require("path"),Ym=jm(),Zm=Ta(),i1=Gm(),Km=Symbol("onEntry"),pl=Symbol("checkFs"),Jm=Symbol("checkFs2"),dl=Symbol("isReusable"),de=Symbol("makeFs"),ml=Symbol("file"),yl=Symbol("directory"),Ns=Symbol("link"),Qm=Symbol("symlink"),ty=Symbol("hardlink"),ey=Symbol("unsupported"),ry=Symbol("checkPath"),Kr=Symbol("mkdir"),vt=Symbol("onError"),Ds=Symbol("pending"),iy=Symbol("pend"),Jr=Symbol("unpend"),gl=Symbol("ended"),vl=Symbol("maybeClose"),wl=Symbol("skip"),Gi=Symbol("doChown"),$i=Symbol("uid"),Wi=Symbol("gid"),ny=require("crypto"),sy=Hm(),Ts=()=>{throw new Error("sync function called cb somehow?!?")},n1=(e,t)=>{if(process.platform!=="win32")return J.unlink(e,t);let r=e+".DELETE."+ny.randomBytes(16).toString("hex");J.rename(e,r,i=>{if(i)return t(i);J.unlink(r,t)})},s1=e=>{if(process.platform!=="win32")return J.unlinkSync(e);let t=e+".DELETE."+ny.randomBytes(16).toString("hex");J.renameSync(e,t),J.unlinkSync(t)},oy=(e,t,r)=>e===e>>>0?e:t===t>>>0?t:r,Rs=class extends e1{constructor(t){if(t||(t={}),t.ondone=r=>{this[gl]=!0,this[vl]()},super(t),this.reservations=i1(),this.transform=typeof t.transform=="function"?t.transform:null,this.writable=!0,this.readable=!1,this[Ds]=0,this[gl]=!1,this.dirCache=t.dirCache||new Map,typeof t.uid=="number"||typeof t.gid=="number"){if(typeof t.uid!="number"||typeof t.gid!="number")throw new TypeError("cannot set owner without number uid and gid");if(t.preserveOwner)throw new TypeError("cannot preserve owner in archive and also set owner explicitly");this.uid=t.uid,this.gid=t.gid,this.setOwner=!0}else this.uid=null,this.gid=null,this.setOwner=!1;t.preserveOwner===void 0&&typeof t.uid!="number"?this.preserveOwner=process.getuid&&process.getuid()===0:this.preserveOwner=!!t.preserveOwner,this.processUid=(this.preserveOwner||this.setOwner)&&process.getuid?process.getuid():null,this.processGid=(this.preserveOwner||this.setOwner)&&process.getgid?process.getgid():null,this.forceChown=t.forceChown===!0,this.win32=!!t.win32||process.platform==="win32",this.newer=!!t.newer,this.keep=!!t.keep,this.noMtime=!!t.noMtime,this.preservePaths=!!t.preservePaths,this.unlink=!!t.unlink,this.cwd=pe.resolve(t.cwd||process.cwd()),this.strip=+t.strip||0,this.processUmask=t.noChmod?0:process.umask(),this.umask=typeof t.umask=="number"?t.umask:this.processUmask,this.dmode=t.dmode||511&~this.umask,this.fmode=t.fmode||438&~this.umask,this.on("entry",r=>this[Km](r))}warn(t,r,i={}){return(t==="TAR_BAD_ARCHIVE"||t==="TAR_ABORT")&&(i.recoverable=!1),super.warn(t,r,i)}[vl](){this[gl]&&this[Ds]===0&&(this.emit("prefinish"),this.emit("finish"),this.emit("end"),this.emit("close"))}[ry](t){if(this.strip){let r=t.path.split(/\/|\\/);if(r.length=this.strip&&(t.linkpath=i.slice(this.strip).join("/"))}}if(!this.preservePaths){let r=t.path;if(r.match(/(^|\/|\\)\.\.(\\|\/|$)/))return this.warn("TAR_ENTRY_ERROR","path contains '..'",{entry:t,path:r}),!1;if(pe.win32.isAbsolute(r)){let i=pe.win32.parse(r);t.path=r.substr(i.root.length);let n=i.root;this.warn("TAR_ENTRY_INFO",`stripping ${n} from absolute path`,{entry:t,path:r})}}if(this.win32){let r=pe.win32.parse(t.path);t.path=r.root===""?Zm.encode(t.path):r.root+Zm.encode(t.path.substr(r.root.length))}return pe.isAbsolute(t.path)?t.absolute=t.path:t.absolute=pe.resolve(this.cwd,t.path),!0}[Km](t){if(!this[ry](t))return t.resume();switch(t1.equal(typeof t.absolute,"string"),t.type){case"Directory":case"GNUDumpDir":t.mode&&(t.mode=t.mode|448);case"File":case"OldFile":case"ContiguousFile":case"Link":case"SymbolicLink":return this[pl](t);case"CharacterDevice":case"BlockDevice":case"FIFO":default:return this[ey](t)}}[vt](t,r){t.name==="CwdError"?this.emit("error",t):(this.warn("TAR_ENTRY_ERROR",t,{entry:r}),this[Jr](),r.resume())}[Kr](t,r,i){Ym(t,{uid:this.uid,gid:this.gid,processUid:this.processUid,processGid:this.processGid,umask:this.processUmask,preserve:this.preservePaths,unlink:this.unlink,cache:this.dirCache,cwd:this.cwd,mode:r,noChmod:this.noChmod},i)}[Gi](t){return this.forceChown||this.preserveOwner&&(typeof t.uid=="number"&&t.uid!==this.processUid||typeof t.gid=="number"&&t.gid!==this.processGid)||typeof this.uid=="number"&&this.uid!==this.processUid||typeof this.gid=="number"&&this.gid!==this.processGid}[$i](t){return oy(this.uid,t.uid,this.processUid)}[Wi](t){return oy(this.gid,t.gid,this.processGid)}[ml](t,r){let i=t.mode&4095||this.fmode,n=new r1.WriteStream(t.absolute,{flags:sy(t.size),mode:i,autoClose:!1});n.on("error",a=>this[vt](a,t));let s=1,o=a=>{if(a)return this[vt](a,t);--s==0&&J.close(n.fd,c=>{r(),c?this[vt](c,t):this[Jr]()})};n.on("finish",a=>{let c=t.absolute,u=n.fd;if(t.mtime&&!this.noMtime){s++;let f=t.atime||new Date,y=t.mtime;J.futimes(u,f,y,b=>b?J.utimes(c,f,y,E=>o(E&&b)):o())}if(this[Gi](t)){s++;let f=this[$i](t),y=this[Wi](t);J.fchown(u,f,y,b=>b?J.chown(c,f,y,E=>o(E&&b)):o())}o()});let l=this.transform&&this.transform(t)||t;l!==t&&(l.on("error",a=>this[vt](a,t)),t.pipe(l)),l.pipe(n)}[yl](t,r){let i=t.mode&4095||this.dmode;this[Kr](t.absolute,i,n=>{if(n)return r(),this[vt](n,t);let s=1,o=l=>{--s==0&&(r(),this[Jr](),t.resume())};t.mtime&&!this.noMtime&&(s++,J.utimes(t.absolute,t.atime||new Date,t.mtime,o)),this[Gi](t)&&(s++,J.chown(t.absolute,this[$i](t),this[Wi](t),o)),o()})}[ey](t){t.unsupported=!0,this.warn("TAR_ENTRY_UNSUPPORTED",`unsupported entry type: ${t.type}`,{entry:t}),t.resume()}[Qm](t,r){this[Ns](t,t.linkpath,"symlink",r)}[ty](t,r){this[Ns](t,pe.resolve(this.cwd,t.linkpath),"link",r)}[iy](){this[Ds]++}[Jr](){this[Ds]--,this[vl]()}[wl](t){this[Jr](),t.resume()}[dl](t,r){return t.type==="File"&&!this.unlink&&r.isFile()&&r.nlink<=1&&process.platform!=="win32"}[pl](t){this[iy]();let r=[t.path];t.linkpath&&r.push(t.linkpath),this.reservations.reserve(r,i=>this[Jm](t,i))}[Jm](t,r){this[Kr](pe.dirname(t.absolute),this.dmode,i=>{if(i)return r(),this[vt](i,t);J.lstat(t.absolute,(n,s)=>{s&&(this.keep||this.newer&&s.mtime>t.mtime)?(this[wl](t),r()):n||this[dl](t,s)?this[de](null,t,r):s.isDirectory()?t.type==="Directory"?!this.noChmod&&(!t.mode||(s.mode&4095)===t.mode)?this[de](null,t,r):J.chmod(t.absolute,t.mode,o=>this[de](o,t,r)):J.rmdir(t.absolute,o=>this[de](o,t,r)):n1(t.absolute,o=>this[de](o,t,r))})})}[de](t,r,i){if(t)return this[vt](t,r);switch(r.type){case"File":case"OldFile":case"ContiguousFile":return this[ml](r,i);case"Link":return this[ty](r,i);case"SymbolicLink":return this[Qm](r,i);case"Directory":case"GNUDumpDir":return this[yl](r,i)}}[Ns](t,r,i,n){J[i](r,t.absolute,s=>{if(s)return this[vt](s,t);n(),this[Jr](),t.resume()})}},ay=class extends Rs{[pl](t){let r=this[Kr](pe.dirname(t.absolute),this.dmode,Ts);if(r)return this[vt](r,t);try{let i=J.lstatSync(t.absolute);if(this.keep||this.newer&&i.mtime>t.mtime)return this[wl](t);if(this[dl](t,i))return this[de](null,t,Ts);try{return i.isDirectory()?t.type==="Directory"?!this.noChmod&&t.mode&&(i.mode&4095)!==t.mode&&J.chmodSync(t.absolute,t.mode):J.rmdirSync(t.absolute):s1(t.absolute),this[de](null,t,Ts)}catch(n){return this[vt](n,t)}}catch(i){return this[de](null,t,Ts)}}[ml](t,r){let i=t.mode&4095||this.fmode,n=l=>{let a;try{J.closeSync(s)}catch(c){a=c}(l||a)&&this[vt](l||a,t)},s;try{s=J.openSync(t.absolute,sy(t.size),i)}catch(l){return n(l)}let o=this.transform&&this.transform(t)||t;o!==t&&(o.on("error",l=>this[vt](l,t)),t.pipe(o)),o.on("data",l=>{try{J.writeSync(s,l,0,l.length)}catch(a){n(a)}}),o.on("end",l=>{let a=null;if(t.mtime&&!this.noMtime){let c=t.atime||new Date,u=t.mtime;try{J.futimesSync(s,c,u)}catch(f){try{J.utimesSync(t.absolute,c,u)}catch(y){a=f}}}if(this[Gi](t)){let c=this[$i](t),u=this[Wi](t);try{J.fchownSync(s,c,u)}catch(f){try{J.chownSync(t.absolute,c,u)}catch(y){a=a||f}}}n(a)})}[yl](t,r){let i=t.mode&4095||this.dmode,n=this[Kr](t.absolute,i);if(n)return this[vt](n,t);if(t.mtime&&!this.noMtime)try{J.utimesSync(t.absolute,t.atime||new Date,t.mtime)}catch(s){}if(this[Gi](t))try{J.chownSync(t.absolute,this[$i](t),this[Wi](t))}catch(s){}t.resume()}[Kr](t,r){try{return Ym.sync(t,{uid:this.uid,gid:this.gid,processUid:this.processUid,processGid:this.processGid,umask:this.processUmask,preserve:this.preservePaths,unlink:this.unlink,cache:this.dirCache,cwd:this.cwd,mode:r})}catch(i){return i}}[Ns](t,r,i,n){try{J[i+"Sync"](r,t.absolute),t.resume()}catch(s){return this[vt](s,t)}}};Rs.Sync=ay;Vm.exports=Rs});var fy=x((L_,ly)=>{"use strict";var o1=Lr(),As=El(),cy=require("fs"),uy=Wr(),hy=require("path");ly.exports=(e,t,r)=>{typeof e=="function"?(r=e,t=null,e={}):Array.isArray(e)&&(t=e,e={}),typeof t=="function"&&(r=t,t=null),t?t=Array.from(t):t=[];let i=o1(e);if(i.sync&&typeof r=="function")throw new TypeError("callback not supported for sync tar functions");if(!i.file&&typeof r=="function")throw new TypeError("callback only supported with file option");return t.length&&a1(i,t),i.file&&i.sync?l1(i):i.file?c1(i,r):i.sync?u1(i):h1(i)};var a1=(e,t)=>{let r=new Map(t.map(s=>[s.replace(/\/+$/,""),!0])),i=e.filter,n=(s,o)=>{let l=o||hy.parse(s).root||".",a=s===l?!1:r.has(s)?r.get(s):n(hy.dirname(s),l);return r.set(s,a),a};e.filter=i?(s,o)=>i(s,o)&&n(s.replace(/\/+$/,"")):s=>n(s.replace(/\/+$/,""))},l1=e=>{let t=new As.Sync(e),r=e.file,i=cy.statSync(r),n=e.maxReadSize||16*1024*1024;new uy.ReadStreamSync(r,{readSize:n,size:i.size}).pipe(t)},c1=(e,t)=>{let r=new As(e),i=e.maxReadSize||16*1024*1024,n=e.file,s=new Promise((o,l)=>{r.on("error",l),r.on("close",o),cy.stat(n,(a,c)=>{if(a)l(a);else{let u=new uy.ReadStream(n,{readSize:i,size:c.size});u.on("error",l),u.pipe(r)}})});return t?s.then(t,t):s},u1=e=>new As.Sync(e),h1=e=>new As(e)});var py=x(at=>{"use strict";at.c=at.create=Zd();at.r=at.replace=nl();at.t=at.list=Es();at.u=at.update=sm();at.x=at.extract=fy();at.Pack=as();at.Unpack=El();at.Parse=ws();at.ReadEntry=Gn();at.WriteEntry=Ca();at.Header=kr();at.Pax=Hn();at.types=ba()});var vy=x(f1=>{Yi(f1);ks(f1,{register:()=>m1});var ir=Et(go()),nr=Et(vp()),dy=Et(Fs()),my=Et(require("http")),yy=Et(Pn()),bl=Et(require("path")),gy=Et(py()),p1=`http://registry.npmjs.org/${nr.PACKAGE_NAMES["win64-uac"]}/-/${nr.PACKAGE_NAMES["win64-uac"]}-${nr.BINARY_VERSION}.tgz`;function d1(){let{name:e}=yy.default.dirSync({postfix:"git-peek",unsafeCleanup:!0});return new Promise((t,r)=>{my.default.get(p1,function(i){i.pipe(gy.default.x({cwd:e,strip:1,onentry(n){},onwarn(n,s){console.warn(n)}}).on("finish",()=>{t(bl.default.resolve(e,"register-url.exe"))}).on("error",n=>{r(n)}))})})}async function m1(e){console.log("Downloading register-url-windows!");let t=await d1();console.log("Downloaded register-url-windows"),console.log(`${ir.default.whiteBright("git-peek uses Administrator privileges to enable 1-click in Chrome & Edge")}. Source code: +${ir.default.gray(" https://github.com/Jarred-Sumner/register-url-windows/blob/main/dotnet/RegisterURLHandler/Program.cs")}`);let r=await nr.register({path:bl.default.resolve(await dy.default("git-peek"),"../","node_modules","@jarred","git-peek","bin","git-peek-win32.exe"),name:"git-peek",origins:["github.com","bitbucket.com","gitlab.com","*.gitlab.com","sourcehut.org"],register:!0,protocol:Xe},t);process.env.VERBOSE&&console.log(r),r.error&&!(r.protocol&&r.edge&&r.chrome)&&console.error(r.error),r.exception&&!(r.protocol&&r.edge&&r.chrome)&&console.error(r.exception),r.protocol&&r.edge&&r.chrome?console.log(`${ir.default.green("Registered git-peek:// successfully")}`):r.protocol?(console.log(ir.default.whiteBright("Registered git-peek://, but 1-click is disabled")),console.log(`${ir.default.cyan("To enable 1-click, re-run `git-peek -r` with Administrator privileges.")}`)):console.log(`${ir.default.red("Register failed")}`),process.exit()}});Yi(exports);ks(exports,{register:()=>Is});var Is;var Xe="git-peek";process.platform==="darwin"?Is=Yf().register:process.platform==="win32"?Is=vy().register:Is=()=>{throw"Unsupported Platform"}; /*! * Tmp * diff --git a/bin/registerProtocol.js.map b/bin/registerProtocol.js.map index ad60288..2cf720b 100644 --- a/bin/registerProtocol.js.map +++ b/bin/registerProtocol.js.map @@ -1,7 +1,7 @@ { "version": 3, - "sources": ["../node_modules/.pnpm/isexe@2.0.0/node_modules/isexe/windows.js", "../node_modules/.pnpm/isexe@2.0.0/node_modules/isexe/mode.js", "../node_modules/.pnpm/isexe@2.0.0/node_modules/isexe/index.js", "../node_modules/.pnpm/which@2.0.2/node_modules/which/which.js", "../node_modules/.pnpm/big-integer@1.6.48/node_modules/big-integer/BigInteger.js", "../node_modules/.pnpm/bplist-parser@0.2.0/node_modules/bplist-parser/bplistParser.js", "../node_modules/.pnpm/stream-buffers@2.2.0/node_modules/stream-buffers/lib/constants.js", "../node_modules/.pnpm/stream-buffers@2.2.0/node_modules/stream-buffers/lib/readable_streambuffer.js", "../node_modules/.pnpm/stream-buffers@2.2.0/node_modules/stream-buffers/lib/writable_streambuffer.js", "../node_modules/.pnpm/stream-buffers@2.2.0/node_modules/stream-buffers/lib/streambuffer.js", "../node_modules/.pnpm/bplist-creator@0.0.8/node_modules/bplist-creator/bplistCreator.js", "../node_modules/.pnpm/xmldom@0.1.31/node_modules/xmldom/sax.js", "../node_modules/.pnpm/xmldom@0.1.31/node_modules/xmldom/dom.js", "../node_modules/.pnpm/xmldom@0.1.31/node_modules/xmldom/dom-parser.js", "../node_modules/.pnpm/plist@3.0.1/node_modules/plist/lib/parse.js", "../node_modules/.pnpm/base64-js@1.5.1/node_modules/base64-js/index.js", "../node_modules/.pnpm/xmlbuilder@9.0.7/node_modules/xmlbuilder/lib/Utility.js", "../node_modules/.pnpm/xmlbuilder@9.0.7/node_modules/xmlbuilder/lib/XMLAttribute.js", "../node_modules/.pnpm/xmlbuilder@9.0.7/node_modules/xmlbuilder/lib/XMLElement.js", "../node_modules/.pnpm/xmlbuilder@9.0.7/node_modules/xmlbuilder/lib/XMLCData.js", "../node_modules/.pnpm/xmlbuilder@9.0.7/node_modules/xmlbuilder/lib/XMLComment.js", "../node_modules/.pnpm/xmlbuilder@9.0.7/node_modules/xmlbuilder/lib/XMLDeclaration.js", "../node_modules/.pnpm/xmlbuilder@9.0.7/node_modules/xmlbuilder/lib/XMLDTDAttList.js", "../node_modules/.pnpm/xmlbuilder@9.0.7/node_modules/xmlbuilder/lib/XMLDTDEntity.js", "../node_modules/.pnpm/xmlbuilder@9.0.7/node_modules/xmlbuilder/lib/XMLDTDElement.js", "../node_modules/.pnpm/xmlbuilder@9.0.7/node_modules/xmlbuilder/lib/XMLDTDNotation.js", "../node_modules/.pnpm/xmlbuilder@9.0.7/node_modules/xmlbuilder/lib/XMLDocType.js", "../node_modules/.pnpm/xmlbuilder@9.0.7/node_modules/xmlbuilder/lib/XMLRaw.js", "../node_modules/.pnpm/xmlbuilder@9.0.7/node_modules/xmlbuilder/lib/XMLText.js", "../node_modules/.pnpm/xmlbuilder@9.0.7/node_modules/xmlbuilder/lib/XMLProcessingInstruction.js", "../node_modules/.pnpm/xmlbuilder@9.0.7/node_modules/xmlbuilder/lib/XMLNode.js", "../node_modules/.pnpm/xmlbuilder@9.0.7/node_modules/xmlbuilder/lib/XMLStringifier.js", "../node_modules/.pnpm/xmlbuilder@9.0.7/node_modules/xmlbuilder/lib/XMLWriterBase.js", "../node_modules/.pnpm/xmlbuilder@9.0.7/node_modules/xmlbuilder/lib/XMLStringWriter.js", "../node_modules/.pnpm/xmlbuilder@9.0.7/node_modules/xmlbuilder/lib/XMLDocument.js", "../node_modules/.pnpm/xmlbuilder@9.0.7/node_modules/xmlbuilder/lib/XMLDocumentCB.js", "../node_modules/.pnpm/xmlbuilder@9.0.7/node_modules/xmlbuilder/lib/XMLStreamWriter.js", "../node_modules/.pnpm/xmlbuilder@9.0.7/node_modules/xmlbuilder/lib/index.js", "../node_modules/.pnpm/plist@3.0.1/node_modules/plist/lib/build.js", "../node_modules/.pnpm/plist@3.0.1/node_modules/plist/index.js", "../node_modules/.pnpm/simple-plist@1.1.1/node_modules/simple-plist/simple-plist.js", "../node_modules/.pnpm/color-name@1.1.4/node_modules/color-name/index.js", "../node_modules/.pnpm/color-convert@2.0.1/node_modules/color-convert/conversions.js", "../node_modules/.pnpm/color-convert@2.0.1/node_modules/color-convert/route.js", "../node_modules/.pnpm/color-convert@2.0.1/node_modules/color-convert/index.js", "../node_modules/.pnpm/ansi-styles@4.3.0/node_modules/ansi-styles/index.js", "../node_modules/.pnpm/has-flag@4.0.0/node_modules/has-flag/index.js", "../node_modules/.pnpm/supports-color@7.2.0/node_modules/supports-color/index.js", "../node_modules/.pnpm/chalk@4.1.0/node_modules/chalk/source/util.js", "../node_modules/.pnpm/chalk@4.1.0/node_modules/chalk/source/templates.js", "../node_modules/.pnpm/chalk@4.1.0/node_modules/chalk/source/index.js", "../src/registerProtocol.mac.ts", "../node_modules/.pnpm/yocto-queue@0.1.0/node_modules/yocto-queue/index.js", "../node_modules/.pnpm/register-url-windows@1.0.24/node_modules/register-url-windows/node_modules/p-limit/index.js", "../node_modules/.pnpm/register-url-windows@1.0.24/node_modules/register-url-windows/node_modules/p-locate/index.js", "../node_modules/.pnpm/register-url-windows@1.0.24/node_modules/register-url-windows/node_modules/locate-path/index.js", "../node_modules/.pnpm/path-exists@4.0.0/node_modules/path-exists/index.js", "../node_modules/.pnpm/register-url-windows@1.0.24/node_modules/register-url-windows/node_modules/find-up/index.js", "../node_modules/.pnpm/fs.realpath@1.0.0/node_modules/fs.realpath/old.js", "../node_modules/.pnpm/fs.realpath@1.0.0/node_modules/fs.realpath/index.js", "../node_modules/.pnpm/concat-map@0.0.1/node_modules/concat-map/index.js", "../node_modules/.pnpm/balanced-match@1.0.0/node_modules/balanced-match/index.js", "../node_modules/.pnpm/brace-expansion@1.1.11/node_modules/brace-expansion/index.js", "../node_modules/.pnpm/minimatch@3.0.4/node_modules/minimatch/minimatch.js", "../node_modules/.pnpm/inherits@2.0.4/node_modules/inherits/inherits_browser.js", "../node_modules/.pnpm/inherits@2.0.4/node_modules/inherits/inherits.js", "../node_modules/.pnpm/path-is-absolute@1.0.1/node_modules/path-is-absolute/index.js", "../node_modules/.pnpm/glob@7.1.6/node_modules/glob/common.js", "../node_modules/.pnpm/glob@7.1.6/node_modules/glob/sync.js", "../node_modules/.pnpm/wrappy@1.0.2/node_modules/wrappy/wrappy.js", "../node_modules/.pnpm/once@1.4.0/node_modules/once/once.js", "../node_modules/.pnpm/inflight@1.0.6/node_modules/inflight/inflight.js", "../node_modules/.pnpm/glob@7.1.6/node_modules/glob/glob.js", "../node_modules/.pnpm/rimraf@3.0.2/node_modules/rimraf/rimraf.js", "../node_modules/.pnpm/tmp@0.2.1/node_modules/tmp/lib/tmp.js", "../node_modules/.pnpm/tmp-promise@3.0.2/node_modules/tmp-promise/index.js", "../node_modules/.pnpm/register-url-windows@1.0.24/node_modules/register-url-windows/index.js", "../node_modules/.pnpm/tar@6.1.0/node_modules/tar/lib/high-level-opt.js", "../node_modules/.pnpm/yallist@4.0.0/node_modules/yallist/iterator.js", "../node_modules/.pnpm/yallist@4.0.0/node_modules/yallist/yallist.js", "../node_modules/.pnpm/minipass@3.1.3/node_modules/minipass/index.js", "../node_modules/.pnpm/minizlib@2.1.2/node_modules/minizlib/constants.js", "../node_modules/.pnpm/minizlib@2.1.2/node_modules/minizlib/index.js", "../node_modules/.pnpm/tar@6.1.0/node_modules/tar/lib/read-entry.js", "../node_modules/.pnpm/tar@6.1.0/node_modules/tar/lib/types.js", "../node_modules/.pnpm/tar@6.1.0/node_modules/tar/lib/large-numbers.js", "../node_modules/.pnpm/tar@6.1.0/node_modules/tar/lib/header.js", "../node_modules/.pnpm/tar@6.1.0/node_modules/tar/lib/pax.js", "../node_modules/.pnpm/tar@6.1.0/node_modules/tar/lib/warn-mixin.js", "../node_modules/.pnpm/tar@6.1.0/node_modules/tar/lib/winchars.js", "../node_modules/.pnpm/tar@6.1.0/node_modules/tar/lib/mode-fix.js", "../node_modules/.pnpm/tar@6.1.0/node_modules/tar/lib/write-entry.js", "../node_modules/.pnpm/tar@6.1.0/node_modules/tar/node_modules/yallist/iterator.js", "../node_modules/.pnpm/tar@6.1.0/node_modules/tar/node_modules/yallist/yallist.js", "../node_modules/.pnpm/tar@6.1.0/node_modules/tar/lib/pack.js", "../node_modules/.pnpm/fs-minipass@2.1.0/node_modules/fs-minipass/index.js", "../node_modules/.pnpm/tar@6.1.0/node_modules/tar/lib/parse.js", "../node_modules/.pnpm/tar@6.1.0/node_modules/tar/lib/list.js", "../node_modules/.pnpm/tar@6.1.0/node_modules/tar/lib/create.js", "../node_modules/.pnpm/tar@6.1.0/node_modules/tar/lib/replace.js", "../node_modules/.pnpm/tar@6.1.0/node_modules/tar/lib/update.js", "../node_modules/.pnpm/tar@6.1.0/node_modules/tar/node_modules/mkdirp/lib/opts-arg.js", "../node_modules/.pnpm/tar@6.1.0/node_modules/tar/node_modules/mkdirp/lib/path-arg.js", "../node_modules/.pnpm/tar@6.1.0/node_modules/tar/node_modules/mkdirp/lib/find-made.js", "../node_modules/.pnpm/tar@6.1.0/node_modules/tar/node_modules/mkdirp/lib/mkdirp-manual.js", "../node_modules/.pnpm/tar@6.1.0/node_modules/tar/node_modules/mkdirp/lib/mkdirp-native.js", "../node_modules/.pnpm/tar@6.1.0/node_modules/tar/node_modules/mkdirp/lib/use-native.js", "../node_modules/.pnpm/tar@6.1.0/node_modules/tar/node_modules/mkdirp/index.js", "../node_modules/.pnpm/chownr@2.0.0/node_modules/chownr/chownr.js", "../node_modules/.pnpm/tar@6.1.0/node_modules/tar/lib/mkdir.js", "../node_modules/.pnpm/tar@6.1.0/node_modules/tar/lib/path-reservations.js", "../node_modules/.pnpm/tar@6.1.0/node_modules/tar/lib/get-write-flag.js", "../node_modules/.pnpm/tar@6.1.0/node_modules/tar/lib/unpack.js", "../node_modules/.pnpm/tar@6.1.0/node_modules/tar/lib/extract.js", "../node_modules/.pnpm/tar@6.1.0/node_modules/tar/index.js", "../src/registerProtocol.windows.ts", "../src/registerProtocol.ts", "../src/PROTOCOL.ts"], - "sourcesContent": ["module.exports = isexe\nisexe.sync = sync\n\nvar fs = require('fs')\n\nfunction checkPathExt (path, options) {\n var pathext = options.pathExt !== undefined ?\n options.pathExt : process.env.PATHEXT\n\n if (!pathext) {\n return true\n }\n\n pathext = pathext.split(';')\n if (pathext.indexOf('') !== -1) {\n return true\n }\n for (var i = 0; i < pathext.length; i++) {\n var p = pathext[i].toLowerCase()\n if (p && path.substr(-p.length).toLowerCase() === p) {\n return true\n }\n }\n return false\n}\n\nfunction checkStat (stat, path, options) {\n if (!stat.isSymbolicLink() && !stat.isFile()) {\n return false\n }\n return checkPathExt(path, options)\n}\n\nfunction isexe (path, options, cb) {\n fs.stat(path, function (er, stat) {\n cb(er, er ? false : checkStat(stat, path, options))\n })\n}\n\nfunction sync (path, options) {\n return checkStat(fs.statSync(path), path, options)\n}\n", "module.exports = isexe\nisexe.sync = sync\n\nvar fs = require('fs')\n\nfunction isexe (path, options, cb) {\n fs.stat(path, function (er, stat) {\n cb(er, er ? false : checkStat(stat, options))\n })\n}\n\nfunction sync (path, options) {\n return checkStat(fs.statSync(path), options)\n}\n\nfunction checkStat (stat, options) {\n return stat.isFile() && checkMode(stat, options)\n}\n\nfunction checkMode (stat, options) {\n var mod = stat.mode\n var uid = stat.uid\n var gid = stat.gid\n\n var myUid = options.uid !== undefined ?\n options.uid : process.getuid && process.getuid()\n var myGid = options.gid !== undefined ?\n options.gid : process.getgid && process.getgid()\n\n var u = parseInt('100', 8)\n var g = parseInt('010', 8)\n var o = parseInt('001', 8)\n var ug = u | g\n\n var ret = (mod & o) ||\n (mod & g) && gid === myGid ||\n (mod & u) && uid === myUid ||\n (mod & ug) && myUid === 0\n\n return ret\n}\n", "var fs = require('fs')\nvar core\nif (process.platform === 'win32' || global.TESTING_WINDOWS) {\n core = require('./windows.js')\n} else {\n core = require('./mode.js')\n}\n\nmodule.exports = isexe\nisexe.sync = sync\n\nfunction isexe (path, options, cb) {\n if (typeof options === 'function') {\n cb = options\n options = {}\n }\n\n if (!cb) {\n if (typeof Promise !== 'function') {\n throw new TypeError('callback not provided')\n }\n\n return new Promise(function (resolve, reject) {\n isexe(path, options || {}, function (er, is) {\n if (er) {\n reject(er)\n } else {\n resolve(is)\n }\n })\n })\n }\n\n core(path, options || {}, function (er, is) {\n // ignore EACCES because that just means we aren't allowed to run it\n if (er) {\n if (er.code === 'EACCES' || options && options.ignoreErrors) {\n er = null\n is = false\n }\n }\n cb(er, is)\n })\n}\n\nfunction sync (path, options) {\n // my kingdom for a filtered catch\n try {\n return core.sync(path, options || {})\n } catch (er) {\n if (options && options.ignoreErrors || er.code === 'EACCES') {\n return false\n } else {\n throw er\n }\n }\n}\n", "const isWindows = process.platform === 'win32' ||\n process.env.OSTYPE === 'cygwin' ||\n process.env.OSTYPE === 'msys'\n\nconst path = require('path')\nconst COLON = isWindows ? ';' : ':'\nconst isexe = require('isexe')\n\nconst getNotFoundError = (cmd) =>\n Object.assign(new Error(`not found: ${cmd}`), { code: 'ENOENT' })\n\nconst getPathInfo = (cmd, opt) => {\n const colon = opt.colon || COLON\n\n // If it has a slash, then we don't bother searching the pathenv.\n // just check the file itself, and that's it.\n const pathEnv = cmd.match(/\\//) || isWindows && cmd.match(/\\\\/) ? ['']\n : (\n [\n // windows always checks the cwd first\n ...(isWindows ? [process.cwd()] : []),\n ...(opt.path || process.env.PATH ||\n /* istanbul ignore next: very unusual */ '').split(colon),\n ]\n )\n const pathExtExe = isWindows\n ? opt.pathExt || process.env.PATHEXT || '.EXE;.CMD;.BAT;.COM'\n : ''\n const pathExt = isWindows ? pathExtExe.split(colon) : ['']\n\n if (isWindows) {\n if (cmd.indexOf('.') !== -1 && pathExt[0] !== '')\n pathExt.unshift('')\n }\n\n return {\n pathEnv,\n pathExt,\n pathExtExe,\n }\n}\n\nconst which = (cmd, opt, cb) => {\n if (typeof opt === 'function') {\n cb = opt\n opt = {}\n }\n if (!opt)\n opt = {}\n\n const { pathEnv, pathExt, pathExtExe } = getPathInfo(cmd, opt)\n const found = []\n\n const step = i => new Promise((resolve, reject) => {\n if (i === pathEnv.length)\n return opt.all && found.length ? resolve(found)\n : reject(getNotFoundError(cmd))\n\n const ppRaw = pathEnv[i]\n const pathPart = /^\".*\"$/.test(ppRaw) ? ppRaw.slice(1, -1) : ppRaw\n\n const pCmd = path.join(pathPart, cmd)\n const p = !pathPart && /^\\.[\\\\\\/]/.test(cmd) ? cmd.slice(0, 2) + pCmd\n : pCmd\n\n resolve(subStep(p, i, 0))\n })\n\n const subStep = (p, i, ii) => new Promise((resolve, reject) => {\n if (ii === pathExt.length)\n return resolve(step(i + 1))\n const ext = pathExt[ii]\n isexe(p + ext, { pathExt: pathExtExe }, (er, is) => {\n if (!er && is) {\n if (opt.all)\n found.push(p + ext)\n else\n return resolve(p + ext)\n }\n return resolve(subStep(p, i, ii + 1))\n })\n })\n\n return cb ? step(0).then(res => cb(null, res), cb) : step(0)\n}\n\nconst whichSync = (cmd, opt) => {\n opt = opt || {}\n\n const { pathEnv, pathExt, pathExtExe } = getPathInfo(cmd, opt)\n const found = []\n\n for (let i = 0; i < pathEnv.length; i ++) {\n const ppRaw = pathEnv[i]\n const pathPart = /^\".*\"$/.test(ppRaw) ? ppRaw.slice(1, -1) : ppRaw\n\n const pCmd = path.join(pathPart, cmd)\n const p = !pathPart && /^\\.[\\\\\\/]/.test(cmd) ? cmd.slice(0, 2) + pCmd\n : pCmd\n\n for (let j = 0; j < pathExt.length; j ++) {\n const cur = p + pathExt[j]\n try {\n const is = isexe.sync(cur, { pathExt: pathExtExe })\n if (is) {\n if (opt.all)\n found.push(cur)\n else\n return cur\n }\n } catch (ex) {}\n }\n }\n\n if (opt.all && found.length)\n return found\n\n if (opt.nothrow)\n return null\n\n throw getNotFoundError(cmd)\n}\n\nmodule.exports = which\nwhich.sync = whichSync\n", "var bigInt = (function (undefined) {\r\n \"use strict\";\r\n\r\n var BASE = 1e7,\r\n LOG_BASE = 7,\r\n MAX_INT = 9007199254740992,\r\n MAX_INT_ARR = smallToArray(MAX_INT),\r\n DEFAULT_ALPHABET = \"0123456789abcdefghijklmnopqrstuvwxyz\";\r\n\r\n var supportsNativeBigInt = typeof BigInt === \"function\";\r\n\r\n function Integer(v, radix, alphabet, caseSensitive) {\r\n if (typeof v === \"undefined\") return Integer[0];\r\n if (typeof radix !== \"undefined\") return +radix === 10 && !alphabet ? parseValue(v) : parseBase(v, radix, alphabet, caseSensitive);\r\n return parseValue(v);\r\n }\r\n\r\n function BigInteger(value, sign) {\r\n this.value = value;\r\n this.sign = sign;\r\n this.isSmall = false;\r\n }\r\n BigInteger.prototype = Object.create(Integer.prototype);\r\n\r\n function SmallInteger(value) {\r\n this.value = value;\r\n this.sign = value < 0;\r\n this.isSmall = true;\r\n }\r\n SmallInteger.prototype = Object.create(Integer.prototype);\r\n\r\n function NativeBigInt(value) {\r\n this.value = value;\r\n }\r\n NativeBigInt.prototype = Object.create(Integer.prototype);\r\n\r\n function isPrecise(n) {\r\n return -MAX_INT < n && n < MAX_INT;\r\n }\r\n\r\n function smallToArray(n) { // For performance reasons doesn't reference BASE, need to change this function if BASE changes\r\n if (n < 1e7)\r\n return [n];\r\n if (n < 1e14)\r\n return [n % 1e7, Math.floor(n / 1e7)];\r\n return [n % 1e7, Math.floor(n / 1e7) % 1e7, Math.floor(n / 1e14)];\r\n }\r\n\r\n function arrayToSmall(arr) { // If BASE changes this function may need to change\r\n trim(arr);\r\n var length = arr.length;\r\n if (length < 4 && compareAbs(arr, MAX_INT_ARR) < 0) {\r\n switch (length) {\r\n case 0: return 0;\r\n case 1: return arr[0];\r\n case 2: return arr[0] + arr[1] * BASE;\r\n default: return arr[0] + (arr[1] + arr[2] * BASE) * BASE;\r\n }\r\n }\r\n return arr;\r\n }\r\n\r\n function trim(v) {\r\n var i = v.length;\r\n while (v[--i] === 0);\r\n v.length = i + 1;\r\n }\r\n\r\n function createArray(length) { // function shamelessly stolen from Yaffle's library https://github.com/Yaffle/BigInteger\r\n var x = new Array(length);\r\n var i = -1;\r\n while (++i < length) {\r\n x[i] = 0;\r\n }\r\n return x;\r\n }\r\n\r\n function truncate(n) {\r\n if (n > 0) return Math.floor(n);\r\n return Math.ceil(n);\r\n }\r\n\r\n function add(a, b) { // assumes a and b are arrays with a.length >= b.length\r\n var l_a = a.length,\r\n l_b = b.length,\r\n r = new Array(l_a),\r\n carry = 0,\r\n base = BASE,\r\n sum, i;\r\n for (i = 0; i < l_b; i++) {\r\n sum = a[i] + b[i] + carry;\r\n carry = sum >= base ? 1 : 0;\r\n r[i] = sum - carry * base;\r\n }\r\n while (i < l_a) {\r\n sum = a[i] + carry;\r\n carry = sum === base ? 1 : 0;\r\n r[i++] = sum - carry * base;\r\n }\r\n if (carry > 0) r.push(carry);\r\n return r;\r\n }\r\n\r\n function addAny(a, b) {\r\n if (a.length >= b.length) return add(a, b);\r\n return add(b, a);\r\n }\r\n\r\n function addSmall(a, carry) { // assumes a is array, carry is number with 0 <= carry < MAX_INT\r\n var l = a.length,\r\n r = new Array(l),\r\n base = BASE,\r\n sum, i;\r\n for (i = 0; i < l; i++) {\r\n sum = a[i] - base + carry;\r\n carry = Math.floor(sum / base);\r\n r[i] = sum - carry * base;\r\n carry += 1;\r\n }\r\n while (carry > 0) {\r\n r[i++] = carry % base;\r\n carry = Math.floor(carry / base);\r\n }\r\n return r;\r\n }\r\n\r\n BigInteger.prototype.add = function (v) {\r\n var n = parseValue(v);\r\n if (this.sign !== n.sign) {\r\n return this.subtract(n.negate());\r\n }\r\n var a = this.value, b = n.value;\r\n if (n.isSmall) {\r\n return new BigInteger(addSmall(a, Math.abs(b)), this.sign);\r\n }\r\n return new BigInteger(addAny(a, b), this.sign);\r\n };\r\n BigInteger.prototype.plus = BigInteger.prototype.add;\r\n\r\n SmallInteger.prototype.add = function (v) {\r\n var n = parseValue(v);\r\n var a = this.value;\r\n if (a < 0 !== n.sign) {\r\n return this.subtract(n.negate());\r\n }\r\n var b = n.value;\r\n if (n.isSmall) {\r\n if (isPrecise(a + b)) return new SmallInteger(a + b);\r\n b = smallToArray(Math.abs(b));\r\n }\r\n return new BigInteger(addSmall(b, Math.abs(a)), a < 0);\r\n };\r\n SmallInteger.prototype.plus = SmallInteger.prototype.add;\r\n\r\n NativeBigInt.prototype.add = function (v) {\r\n return new NativeBigInt(this.value + parseValue(v).value);\r\n }\r\n NativeBigInt.prototype.plus = NativeBigInt.prototype.add;\r\n\r\n function subtract(a, b) { // assumes a and b are arrays with a >= b\r\n var a_l = a.length,\r\n b_l = b.length,\r\n r = new Array(a_l),\r\n borrow = 0,\r\n base = BASE,\r\n i, difference;\r\n for (i = 0; i < b_l; i++) {\r\n difference = a[i] - borrow - b[i];\r\n if (difference < 0) {\r\n difference += base;\r\n borrow = 1;\r\n } else borrow = 0;\r\n r[i] = difference;\r\n }\r\n for (i = b_l; i < a_l; i++) {\r\n difference = a[i] - borrow;\r\n if (difference < 0) difference += base;\r\n else {\r\n r[i++] = difference;\r\n break;\r\n }\r\n r[i] = difference;\r\n }\r\n for (; i < a_l; i++) {\r\n r[i] = a[i];\r\n }\r\n trim(r);\r\n return r;\r\n }\r\n\r\n function subtractAny(a, b, sign) {\r\n var value;\r\n if (compareAbs(a, b) >= 0) {\r\n value = subtract(a, b);\r\n } else {\r\n value = subtract(b, a);\r\n sign = !sign;\r\n }\r\n value = arrayToSmall(value);\r\n if (typeof value === \"number\") {\r\n if (sign) value = -value;\r\n return new SmallInteger(value);\r\n }\r\n return new BigInteger(value, sign);\r\n }\r\n\r\n function subtractSmall(a, b, sign) { // assumes a is array, b is number with 0 <= b < MAX_INT\r\n var l = a.length,\r\n r = new Array(l),\r\n carry = -b,\r\n base = BASE,\r\n i, difference;\r\n for (i = 0; i < l; i++) {\r\n difference = a[i] + carry;\r\n carry = Math.floor(difference / base);\r\n difference %= base;\r\n r[i] = difference < 0 ? difference + base : difference;\r\n }\r\n r = arrayToSmall(r);\r\n if (typeof r === \"number\") {\r\n if (sign) r = -r;\r\n return new SmallInteger(r);\r\n } return new BigInteger(r, sign);\r\n }\r\n\r\n BigInteger.prototype.subtract = function (v) {\r\n var n = parseValue(v);\r\n if (this.sign !== n.sign) {\r\n return this.add(n.negate());\r\n }\r\n var a = this.value, b = n.value;\r\n if (n.isSmall)\r\n return subtractSmall(a, Math.abs(b), this.sign);\r\n return subtractAny(a, b, this.sign);\r\n };\r\n BigInteger.prototype.minus = BigInteger.prototype.subtract;\r\n\r\n SmallInteger.prototype.subtract = function (v) {\r\n var n = parseValue(v);\r\n var a = this.value;\r\n if (a < 0 !== n.sign) {\r\n return this.add(n.negate());\r\n }\r\n var b = n.value;\r\n if (n.isSmall) {\r\n return new SmallInteger(a - b);\r\n }\r\n return subtractSmall(b, Math.abs(a), a >= 0);\r\n };\r\n SmallInteger.prototype.minus = SmallInteger.prototype.subtract;\r\n\r\n NativeBigInt.prototype.subtract = function (v) {\r\n return new NativeBigInt(this.value - parseValue(v).value);\r\n }\r\n NativeBigInt.prototype.minus = NativeBigInt.prototype.subtract;\r\n\r\n BigInteger.prototype.negate = function () {\r\n return new BigInteger(this.value, !this.sign);\r\n };\r\n SmallInteger.prototype.negate = function () {\r\n var sign = this.sign;\r\n var small = new SmallInteger(-this.value);\r\n small.sign = !sign;\r\n return small;\r\n };\r\n NativeBigInt.prototype.negate = function () {\r\n return new NativeBigInt(-this.value);\r\n }\r\n\r\n BigInteger.prototype.abs = function () {\r\n return new BigInteger(this.value, false);\r\n };\r\n SmallInteger.prototype.abs = function () {\r\n return new SmallInteger(Math.abs(this.value));\r\n };\r\n NativeBigInt.prototype.abs = function () {\r\n return new NativeBigInt(this.value >= 0 ? this.value : -this.value);\r\n }\r\n\r\n\r\n function multiplyLong(a, b) {\r\n var a_l = a.length,\r\n b_l = b.length,\r\n l = a_l + b_l,\r\n r = createArray(l),\r\n base = BASE,\r\n product, carry, i, a_i, b_j;\r\n for (i = 0; i < a_l; ++i) {\r\n a_i = a[i];\r\n for (var j = 0; j < b_l; ++j) {\r\n b_j = b[j];\r\n product = a_i * b_j + r[i + j];\r\n carry = Math.floor(product / base);\r\n r[i + j] = product - carry * base;\r\n r[i + j + 1] += carry;\r\n }\r\n }\r\n trim(r);\r\n return r;\r\n }\r\n\r\n function multiplySmall(a, b) { // assumes a is array, b is number with |b| < BASE\r\n var l = a.length,\r\n r = new Array(l),\r\n base = BASE,\r\n carry = 0,\r\n product, i;\r\n for (i = 0; i < l; i++) {\r\n product = a[i] * b + carry;\r\n carry = Math.floor(product / base);\r\n r[i] = product - carry * base;\r\n }\r\n while (carry > 0) {\r\n r[i++] = carry % base;\r\n carry = Math.floor(carry / base);\r\n }\r\n return r;\r\n }\r\n\r\n function shiftLeft(x, n) {\r\n var r = [];\r\n while (n-- > 0) r.push(0);\r\n return r.concat(x);\r\n }\r\n\r\n function multiplyKaratsuba(x, y) {\r\n var n = Math.max(x.length, y.length);\r\n\r\n if (n <= 30) return multiplyLong(x, y);\r\n n = Math.ceil(n / 2);\r\n\r\n var b = x.slice(n),\r\n a = x.slice(0, n),\r\n d = y.slice(n),\r\n c = y.slice(0, n);\r\n\r\n var ac = multiplyKaratsuba(a, c),\r\n bd = multiplyKaratsuba(b, d),\r\n abcd = multiplyKaratsuba(addAny(a, b), addAny(c, d));\r\n\r\n var product = addAny(addAny(ac, shiftLeft(subtract(subtract(abcd, ac), bd), n)), shiftLeft(bd, 2 * n));\r\n trim(product);\r\n return product;\r\n }\r\n\r\n // The following function is derived from a surface fit of a graph plotting the performance difference\r\n // between long multiplication and karatsuba multiplication versus the lengths of the two arrays.\r\n function useKaratsuba(l1, l2) {\r\n return -0.012 * l1 - 0.012 * l2 + 0.000015 * l1 * l2 > 0;\r\n }\r\n\r\n BigInteger.prototype.multiply = function (v) {\r\n var n = parseValue(v),\r\n a = this.value, b = n.value,\r\n sign = this.sign !== n.sign,\r\n abs;\r\n if (n.isSmall) {\r\n if (b === 0) return Integer[0];\r\n if (b === 1) return this;\r\n if (b === -1) return this.negate();\r\n abs = Math.abs(b);\r\n if (abs < BASE) {\r\n return new BigInteger(multiplySmall(a, abs), sign);\r\n }\r\n b = smallToArray(abs);\r\n }\r\n if (useKaratsuba(a.length, b.length)) // Karatsuba is only faster for certain array sizes\r\n return new BigInteger(multiplyKaratsuba(a, b), sign);\r\n return new BigInteger(multiplyLong(a, b), sign);\r\n };\r\n\r\n BigInteger.prototype.times = BigInteger.prototype.multiply;\r\n\r\n function multiplySmallAndArray(a, b, sign) { // a >= 0\r\n if (a < BASE) {\r\n return new BigInteger(multiplySmall(b, a), sign);\r\n }\r\n return new BigInteger(multiplyLong(b, smallToArray(a)), sign);\r\n }\r\n SmallInteger.prototype._multiplyBySmall = function (a) {\r\n if (isPrecise(a.value * this.value)) {\r\n return new SmallInteger(a.value * this.value);\r\n }\r\n return multiplySmallAndArray(Math.abs(a.value), smallToArray(Math.abs(this.value)), this.sign !== a.sign);\r\n };\r\n BigInteger.prototype._multiplyBySmall = function (a) {\r\n if (a.value === 0) return Integer[0];\r\n if (a.value === 1) return this;\r\n if (a.value === -1) return this.negate();\r\n return multiplySmallAndArray(Math.abs(a.value), this.value, this.sign !== a.sign);\r\n };\r\n SmallInteger.prototype.multiply = function (v) {\r\n return parseValue(v)._multiplyBySmall(this);\r\n };\r\n SmallInteger.prototype.times = SmallInteger.prototype.multiply;\r\n\r\n NativeBigInt.prototype.multiply = function (v) {\r\n return new NativeBigInt(this.value * parseValue(v).value);\r\n }\r\n NativeBigInt.prototype.times = NativeBigInt.prototype.multiply;\r\n\r\n function square(a) {\r\n //console.assert(2 * BASE * BASE < MAX_INT);\r\n var l = a.length,\r\n r = createArray(l + l),\r\n base = BASE,\r\n product, carry, i, a_i, a_j;\r\n for (i = 0; i < l; i++) {\r\n a_i = a[i];\r\n carry = 0 - a_i * a_i;\r\n for (var j = i; j < l; j++) {\r\n a_j = a[j];\r\n product = 2 * (a_i * a_j) + r[i + j] + carry;\r\n carry = Math.floor(product / base);\r\n r[i + j] = product - carry * base;\r\n }\r\n r[i + l] = carry;\r\n }\r\n trim(r);\r\n return r;\r\n }\r\n\r\n BigInteger.prototype.square = function () {\r\n return new BigInteger(square(this.value), false);\r\n };\r\n\r\n SmallInteger.prototype.square = function () {\r\n var value = this.value * this.value;\r\n if (isPrecise(value)) return new SmallInteger(value);\r\n return new BigInteger(square(smallToArray(Math.abs(this.value))), false);\r\n };\r\n\r\n NativeBigInt.prototype.square = function (v) {\r\n return new NativeBigInt(this.value * this.value);\r\n }\r\n\r\n function divMod1(a, b) { // Left over from previous version. Performs faster than divMod2 on smaller input sizes.\r\n var a_l = a.length,\r\n b_l = b.length,\r\n base = BASE,\r\n result = createArray(b.length),\r\n divisorMostSignificantDigit = b[b_l - 1],\r\n // normalization\r\n lambda = Math.ceil(base / (2 * divisorMostSignificantDigit)),\r\n remainder = multiplySmall(a, lambda),\r\n divisor = multiplySmall(b, lambda),\r\n quotientDigit, shift, carry, borrow, i, l, q;\r\n if (remainder.length <= a_l) remainder.push(0);\r\n divisor.push(0);\r\n divisorMostSignificantDigit = divisor[b_l - 1];\r\n for (shift = a_l - b_l; shift >= 0; shift--) {\r\n quotientDigit = base - 1;\r\n if (remainder[shift + b_l] !== divisorMostSignificantDigit) {\r\n quotientDigit = Math.floor((remainder[shift + b_l] * base + remainder[shift + b_l - 1]) / divisorMostSignificantDigit);\r\n }\r\n // quotientDigit <= base - 1\r\n carry = 0;\r\n borrow = 0;\r\n l = divisor.length;\r\n for (i = 0; i < l; i++) {\r\n carry += quotientDigit * divisor[i];\r\n q = Math.floor(carry / base);\r\n borrow += remainder[shift + i] - (carry - q * base);\r\n carry = q;\r\n if (borrow < 0) {\r\n remainder[shift + i] = borrow + base;\r\n borrow = -1;\r\n } else {\r\n remainder[shift + i] = borrow;\r\n borrow = 0;\r\n }\r\n }\r\n while (borrow !== 0) {\r\n quotientDigit -= 1;\r\n carry = 0;\r\n for (i = 0; i < l; i++) {\r\n carry += remainder[shift + i] - base + divisor[i];\r\n if (carry < 0) {\r\n remainder[shift + i] = carry + base;\r\n carry = 0;\r\n } else {\r\n remainder[shift + i] = carry;\r\n carry = 1;\r\n }\r\n }\r\n borrow += carry;\r\n }\r\n result[shift] = quotientDigit;\r\n }\r\n // denormalization\r\n remainder = divModSmall(remainder, lambda)[0];\r\n return [arrayToSmall(result), arrayToSmall(remainder)];\r\n }\r\n\r\n function divMod2(a, b) { // Implementation idea shamelessly stolen from Silent Matt's library http://silentmatt.com/biginteger/\r\n // Performs faster than divMod1 on larger input sizes.\r\n var a_l = a.length,\r\n b_l = b.length,\r\n result = [],\r\n part = [],\r\n base = BASE,\r\n guess, xlen, highx, highy, check;\r\n while (a_l) {\r\n part.unshift(a[--a_l]);\r\n trim(part);\r\n if (compareAbs(part, b) < 0) {\r\n result.push(0);\r\n continue;\r\n }\r\n xlen = part.length;\r\n highx = part[xlen - 1] * base + part[xlen - 2];\r\n highy = b[b_l - 1] * base + b[b_l - 2];\r\n if (xlen > b_l) {\r\n highx = (highx + 1) * base;\r\n }\r\n guess = Math.ceil(highx / highy);\r\n do {\r\n check = multiplySmall(b, guess);\r\n if (compareAbs(check, part) <= 0) break;\r\n guess--;\r\n } while (guess);\r\n result.push(guess);\r\n part = subtract(part, check);\r\n }\r\n result.reverse();\r\n return [arrayToSmall(result), arrayToSmall(part)];\r\n }\r\n\r\n function divModSmall(value, lambda) {\r\n var length = value.length,\r\n quotient = createArray(length),\r\n base = BASE,\r\n i, q, remainder, divisor;\r\n remainder = 0;\r\n for (i = length - 1; i >= 0; --i) {\r\n divisor = remainder * base + value[i];\r\n q = truncate(divisor / lambda);\r\n remainder = divisor - q * lambda;\r\n quotient[i] = q | 0;\r\n }\r\n return [quotient, remainder | 0];\r\n }\r\n\r\n function divModAny(self, v) {\r\n var value, n = parseValue(v);\r\n if (supportsNativeBigInt) {\r\n return [new NativeBigInt(self.value / n.value), new NativeBigInt(self.value % n.value)];\r\n }\r\n var a = self.value, b = n.value;\r\n var quotient;\r\n if (b === 0) throw new Error(\"Cannot divide by zero\");\r\n if (self.isSmall) {\r\n if (n.isSmall) {\r\n return [new SmallInteger(truncate(a / b)), new SmallInteger(a % b)];\r\n }\r\n return [Integer[0], self];\r\n }\r\n if (n.isSmall) {\r\n if (b === 1) return [self, Integer[0]];\r\n if (b == -1) return [self.negate(), Integer[0]];\r\n var abs = Math.abs(b);\r\n if (abs < BASE) {\r\n value = divModSmall(a, abs);\r\n quotient = arrayToSmall(value[0]);\r\n var remainder = value[1];\r\n if (self.sign) remainder = -remainder;\r\n if (typeof quotient === \"number\") {\r\n if (self.sign !== n.sign) quotient = -quotient;\r\n return [new SmallInteger(quotient), new SmallInteger(remainder)];\r\n }\r\n return [new BigInteger(quotient, self.sign !== n.sign), new SmallInteger(remainder)];\r\n }\r\n b = smallToArray(abs);\r\n }\r\n var comparison = compareAbs(a, b);\r\n if (comparison === -1) return [Integer[0], self];\r\n if (comparison === 0) return [Integer[self.sign === n.sign ? 1 : -1], Integer[0]];\r\n\r\n // divMod1 is faster on smaller input sizes\r\n if (a.length + b.length <= 200)\r\n value = divMod1(a, b);\r\n else value = divMod2(a, b);\r\n\r\n quotient = value[0];\r\n var qSign = self.sign !== n.sign,\r\n mod = value[1],\r\n mSign = self.sign;\r\n if (typeof quotient === \"number\") {\r\n if (qSign) quotient = -quotient;\r\n quotient = new SmallInteger(quotient);\r\n } else quotient = new BigInteger(quotient, qSign);\r\n if (typeof mod === \"number\") {\r\n if (mSign) mod = -mod;\r\n mod = new SmallInteger(mod);\r\n } else mod = new BigInteger(mod, mSign);\r\n return [quotient, mod];\r\n }\r\n\r\n BigInteger.prototype.divmod = function (v) {\r\n var result = divModAny(this, v);\r\n return {\r\n quotient: result[0],\r\n remainder: result[1]\r\n };\r\n };\r\n NativeBigInt.prototype.divmod = SmallInteger.prototype.divmod = BigInteger.prototype.divmod;\r\n\r\n\r\n BigInteger.prototype.divide = function (v) {\r\n return divModAny(this, v)[0];\r\n };\r\n NativeBigInt.prototype.over = NativeBigInt.prototype.divide = function (v) {\r\n return new NativeBigInt(this.value / parseValue(v).value);\r\n };\r\n SmallInteger.prototype.over = SmallInteger.prototype.divide = BigInteger.prototype.over = BigInteger.prototype.divide;\r\n\r\n BigInteger.prototype.mod = function (v) {\r\n return divModAny(this, v)[1];\r\n };\r\n NativeBigInt.prototype.mod = NativeBigInt.prototype.remainder = function (v) {\r\n return new NativeBigInt(this.value % parseValue(v).value);\r\n };\r\n SmallInteger.prototype.remainder = SmallInteger.prototype.mod = BigInteger.prototype.remainder = BigInteger.prototype.mod;\r\n\r\n BigInteger.prototype.pow = function (v) {\r\n var n = parseValue(v),\r\n a = this.value,\r\n b = n.value,\r\n value, x, y;\r\n if (b === 0) return Integer[1];\r\n if (a === 0) return Integer[0];\r\n if (a === 1) return Integer[1];\r\n if (a === -1) return n.isEven() ? Integer[1] : Integer[-1];\r\n if (n.sign) {\r\n return Integer[0];\r\n }\r\n if (!n.isSmall) throw new Error(\"The exponent \" + n.toString() + \" is too large.\");\r\n if (this.isSmall) {\r\n if (isPrecise(value = Math.pow(a, b)))\r\n return new SmallInteger(truncate(value));\r\n }\r\n x = this;\r\n y = Integer[1];\r\n while (true) {\r\n if (b & 1 === 1) {\r\n y = y.times(x);\r\n --b;\r\n }\r\n if (b === 0) break;\r\n b /= 2;\r\n x = x.square();\r\n }\r\n return y;\r\n };\r\n SmallInteger.prototype.pow = BigInteger.prototype.pow;\r\n\r\n NativeBigInt.prototype.pow = function (v) {\r\n var n = parseValue(v);\r\n var a = this.value, b = n.value;\r\n var _0 = BigInt(0), _1 = BigInt(1), _2 = BigInt(2);\r\n if (b === _0) return Integer[1];\r\n if (a === _0) return Integer[0];\r\n if (a === _1) return Integer[1];\r\n if (a === BigInt(-1)) return n.isEven() ? Integer[1] : Integer[-1];\r\n if (n.isNegative()) return new NativeBigInt(_0);\r\n var x = this;\r\n var y = Integer[1];\r\n while (true) {\r\n if ((b & _1) === _1) {\r\n y = y.times(x);\r\n --b;\r\n }\r\n if (b === _0) break;\r\n b /= _2;\r\n x = x.square();\r\n }\r\n return y;\r\n }\r\n\r\n BigInteger.prototype.modPow = function (exp, mod) {\r\n exp = parseValue(exp);\r\n mod = parseValue(mod);\r\n if (mod.isZero()) throw new Error(\"Cannot take modPow with modulus 0\");\r\n var r = Integer[1],\r\n base = this.mod(mod);\r\n if (exp.isNegative()) {\r\n exp = exp.multiply(Integer[-1]);\r\n base = base.modInv(mod);\r\n }\r\n while (exp.isPositive()) {\r\n if (base.isZero()) return Integer[0];\r\n if (exp.isOdd()) r = r.multiply(base).mod(mod);\r\n exp = exp.divide(2);\r\n base = base.square().mod(mod);\r\n }\r\n return r;\r\n };\r\n NativeBigInt.prototype.modPow = SmallInteger.prototype.modPow = BigInteger.prototype.modPow;\r\n\r\n function compareAbs(a, b) {\r\n if (a.length !== b.length) {\r\n return a.length > b.length ? 1 : -1;\r\n }\r\n for (var i = a.length - 1; i >= 0; i--) {\r\n if (a[i] !== b[i]) return a[i] > b[i] ? 1 : -1;\r\n }\r\n return 0;\r\n }\r\n\r\n BigInteger.prototype.compareAbs = function (v) {\r\n var n = parseValue(v),\r\n a = this.value,\r\n b = n.value;\r\n if (n.isSmall) return 1;\r\n return compareAbs(a, b);\r\n };\r\n SmallInteger.prototype.compareAbs = function (v) {\r\n var n = parseValue(v),\r\n a = Math.abs(this.value),\r\n b = n.value;\r\n if (n.isSmall) {\r\n b = Math.abs(b);\r\n return a === b ? 0 : a > b ? 1 : -1;\r\n }\r\n return -1;\r\n };\r\n NativeBigInt.prototype.compareAbs = function (v) {\r\n var a = this.value;\r\n var b = parseValue(v).value;\r\n a = a >= 0 ? a : -a;\r\n b = b >= 0 ? b : -b;\r\n return a === b ? 0 : a > b ? 1 : -1;\r\n }\r\n\r\n BigInteger.prototype.compare = function (v) {\r\n // See discussion about comparison with Infinity:\r\n // https://github.com/peterolson/BigInteger.js/issues/61\r\n if (v === Infinity) {\r\n return -1;\r\n }\r\n if (v === -Infinity) {\r\n return 1;\r\n }\r\n\r\n var n = parseValue(v),\r\n a = this.value,\r\n b = n.value;\r\n if (this.sign !== n.sign) {\r\n return n.sign ? 1 : -1;\r\n }\r\n if (n.isSmall) {\r\n return this.sign ? -1 : 1;\r\n }\r\n return compareAbs(a, b) * (this.sign ? -1 : 1);\r\n };\r\n BigInteger.prototype.compareTo = BigInteger.prototype.compare;\r\n\r\n SmallInteger.prototype.compare = function (v) {\r\n if (v === Infinity) {\r\n return -1;\r\n }\r\n if (v === -Infinity) {\r\n return 1;\r\n }\r\n\r\n var n = parseValue(v),\r\n a = this.value,\r\n b = n.value;\r\n if (n.isSmall) {\r\n return a == b ? 0 : a > b ? 1 : -1;\r\n }\r\n if (a < 0 !== n.sign) {\r\n return a < 0 ? -1 : 1;\r\n }\r\n return a < 0 ? 1 : -1;\r\n };\r\n SmallInteger.prototype.compareTo = SmallInteger.prototype.compare;\r\n\r\n NativeBigInt.prototype.compare = function (v) {\r\n if (v === Infinity) {\r\n return -1;\r\n }\r\n if (v === -Infinity) {\r\n return 1;\r\n }\r\n var a = this.value;\r\n var b = parseValue(v).value;\r\n return a === b ? 0 : a > b ? 1 : -1;\r\n }\r\n NativeBigInt.prototype.compareTo = NativeBigInt.prototype.compare;\r\n\r\n BigInteger.prototype.equals = function (v) {\r\n return this.compare(v) === 0;\r\n };\r\n NativeBigInt.prototype.eq = NativeBigInt.prototype.equals = SmallInteger.prototype.eq = SmallInteger.prototype.equals = BigInteger.prototype.eq = BigInteger.prototype.equals;\r\n\r\n BigInteger.prototype.notEquals = function (v) {\r\n return this.compare(v) !== 0;\r\n };\r\n NativeBigInt.prototype.neq = NativeBigInt.prototype.notEquals = SmallInteger.prototype.neq = SmallInteger.prototype.notEquals = BigInteger.prototype.neq = BigInteger.prototype.notEquals;\r\n\r\n BigInteger.prototype.greater = function (v) {\r\n return this.compare(v) > 0;\r\n };\r\n NativeBigInt.prototype.gt = NativeBigInt.prototype.greater = SmallInteger.prototype.gt = SmallInteger.prototype.greater = BigInteger.prototype.gt = BigInteger.prototype.greater;\r\n\r\n BigInteger.prototype.lesser = function (v) {\r\n return this.compare(v) < 0;\r\n };\r\n NativeBigInt.prototype.lt = NativeBigInt.prototype.lesser = SmallInteger.prototype.lt = SmallInteger.prototype.lesser = BigInteger.prototype.lt = BigInteger.prototype.lesser;\r\n\r\n BigInteger.prototype.greaterOrEquals = function (v) {\r\n return this.compare(v) >= 0;\r\n };\r\n NativeBigInt.prototype.geq = NativeBigInt.prototype.greaterOrEquals = SmallInteger.prototype.geq = SmallInteger.prototype.greaterOrEquals = BigInteger.prototype.geq = BigInteger.prototype.greaterOrEquals;\r\n\r\n BigInteger.prototype.lesserOrEquals = function (v) {\r\n return this.compare(v) <= 0;\r\n };\r\n NativeBigInt.prototype.leq = NativeBigInt.prototype.lesserOrEquals = SmallInteger.prototype.leq = SmallInteger.prototype.lesserOrEquals = BigInteger.prototype.leq = BigInteger.prototype.lesserOrEquals;\r\n\r\n BigInteger.prototype.isEven = function () {\r\n return (this.value[0] & 1) === 0;\r\n };\r\n SmallInteger.prototype.isEven = function () {\r\n return (this.value & 1) === 0;\r\n };\r\n NativeBigInt.prototype.isEven = function () {\r\n return (this.value & BigInt(1)) === BigInt(0);\r\n }\r\n\r\n BigInteger.prototype.isOdd = function () {\r\n return (this.value[0] & 1) === 1;\r\n };\r\n SmallInteger.prototype.isOdd = function () {\r\n return (this.value & 1) === 1;\r\n };\r\n NativeBigInt.prototype.isOdd = function () {\r\n return (this.value & BigInt(1)) === BigInt(1);\r\n }\r\n\r\n BigInteger.prototype.isPositive = function () {\r\n return !this.sign;\r\n };\r\n SmallInteger.prototype.isPositive = function () {\r\n return this.value > 0;\r\n };\r\n NativeBigInt.prototype.isPositive = SmallInteger.prototype.isPositive;\r\n\r\n BigInteger.prototype.isNegative = function () {\r\n return this.sign;\r\n };\r\n SmallInteger.prototype.isNegative = function () {\r\n return this.value < 0;\r\n };\r\n NativeBigInt.prototype.isNegative = SmallInteger.prototype.isNegative;\r\n\r\n BigInteger.prototype.isUnit = function () {\r\n return false;\r\n };\r\n SmallInteger.prototype.isUnit = function () {\r\n return Math.abs(this.value) === 1;\r\n };\r\n NativeBigInt.prototype.isUnit = function () {\r\n return this.abs().value === BigInt(1);\r\n }\r\n\r\n BigInteger.prototype.isZero = function () {\r\n return false;\r\n };\r\n SmallInteger.prototype.isZero = function () {\r\n return this.value === 0;\r\n };\r\n NativeBigInt.prototype.isZero = function () {\r\n return this.value === BigInt(0);\r\n }\r\n\r\n BigInteger.prototype.isDivisibleBy = function (v) {\r\n var n = parseValue(v);\r\n if (n.isZero()) return false;\r\n if (n.isUnit()) return true;\r\n if (n.compareAbs(2) === 0) return this.isEven();\r\n return this.mod(n).isZero();\r\n };\r\n NativeBigInt.prototype.isDivisibleBy = SmallInteger.prototype.isDivisibleBy = BigInteger.prototype.isDivisibleBy;\r\n\r\n function isBasicPrime(v) {\r\n var n = v.abs();\r\n if (n.isUnit()) return false;\r\n if (n.equals(2) || n.equals(3) || n.equals(5)) return true;\r\n if (n.isEven() || n.isDivisibleBy(3) || n.isDivisibleBy(5)) return false;\r\n if (n.lesser(49)) return true;\r\n // we don't know if it's prime: let the other functions figure it out\r\n }\r\n\r\n function millerRabinTest(n, a) {\r\n var nPrev = n.prev(),\r\n b = nPrev,\r\n r = 0,\r\n d, t, i, x;\r\n while (b.isEven()) b = b.divide(2), r++;\r\n next: for (i = 0; i < a.length; i++) {\r\n if (n.lesser(a[i])) continue;\r\n x = bigInt(a[i]).modPow(b, n);\r\n if (x.isUnit() || x.equals(nPrev)) continue;\r\n for (d = r - 1; d != 0; d--) {\r\n x = x.square().mod(n);\r\n if (x.isUnit()) return false;\r\n if (x.equals(nPrev)) continue next;\r\n }\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n // Set \"strict\" to true to force GRH-supported lower bound of 2*log(N)^2\r\n BigInteger.prototype.isPrime = function (strict) {\r\n var isPrime = isBasicPrime(this);\r\n if (isPrime !== undefined) return isPrime;\r\n var n = this.abs();\r\n var bits = n.bitLength();\r\n if (bits <= 64)\r\n return millerRabinTest(n, [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37]);\r\n var logN = Math.log(2) * bits.toJSNumber();\r\n var t = Math.ceil((strict === true) ? (2 * Math.pow(logN, 2)) : logN);\r\n for (var a = [], i = 0; i < t; i++) {\r\n a.push(bigInt(i + 2));\r\n }\r\n return millerRabinTest(n, a);\r\n };\r\n NativeBigInt.prototype.isPrime = SmallInteger.prototype.isPrime = BigInteger.prototype.isPrime;\r\n\r\n BigInteger.prototype.isProbablePrime = function (iterations, rng) {\r\n var isPrime = isBasicPrime(this);\r\n if (isPrime !== undefined) return isPrime;\r\n var n = this.abs();\r\n var t = iterations === undefined ? 5 : iterations;\r\n for (var a = [], i = 0; i < t; i++) {\r\n a.push(bigInt.randBetween(2, n.minus(2), rng));\r\n }\r\n return millerRabinTest(n, a);\r\n };\r\n NativeBigInt.prototype.isProbablePrime = SmallInteger.prototype.isProbablePrime = BigInteger.prototype.isProbablePrime;\r\n\r\n BigInteger.prototype.modInv = function (n) {\r\n var t = bigInt.zero, newT = bigInt.one, r = parseValue(n), newR = this.abs(), q, lastT, lastR;\r\n while (!newR.isZero()) {\r\n q = r.divide(newR);\r\n lastT = t;\r\n lastR = r;\r\n t = newT;\r\n r = newR;\r\n newT = lastT.subtract(q.multiply(newT));\r\n newR = lastR.subtract(q.multiply(newR));\r\n }\r\n if (!r.isUnit()) throw new Error(this.toString() + \" and \" + n.toString() + \" are not co-prime\");\r\n if (t.compare(0) === -1) {\r\n t = t.add(n);\r\n }\r\n if (this.isNegative()) {\r\n return t.negate();\r\n }\r\n return t;\r\n };\r\n\r\n NativeBigInt.prototype.modInv = SmallInteger.prototype.modInv = BigInteger.prototype.modInv;\r\n\r\n BigInteger.prototype.next = function () {\r\n var value = this.value;\r\n if (this.sign) {\r\n return subtractSmall(value, 1, this.sign);\r\n }\r\n return new BigInteger(addSmall(value, 1), this.sign);\r\n };\r\n SmallInteger.prototype.next = function () {\r\n var value = this.value;\r\n if (value + 1 < MAX_INT) return new SmallInteger(value + 1);\r\n return new BigInteger(MAX_INT_ARR, false);\r\n };\r\n NativeBigInt.prototype.next = function () {\r\n return new NativeBigInt(this.value + BigInt(1));\r\n }\r\n\r\n BigInteger.prototype.prev = function () {\r\n var value = this.value;\r\n if (this.sign) {\r\n return new BigInteger(addSmall(value, 1), true);\r\n }\r\n return subtractSmall(value, 1, this.sign);\r\n };\r\n SmallInteger.prototype.prev = function () {\r\n var value = this.value;\r\n if (value - 1 > -MAX_INT) return new SmallInteger(value - 1);\r\n return new BigInteger(MAX_INT_ARR, true);\r\n };\r\n NativeBigInt.prototype.prev = function () {\r\n return new NativeBigInt(this.value - BigInt(1));\r\n }\r\n\r\n var powersOfTwo = [1];\r\n while (2 * powersOfTwo[powersOfTwo.length - 1] <= BASE) powersOfTwo.push(2 * powersOfTwo[powersOfTwo.length - 1]);\r\n var powers2Length = powersOfTwo.length, highestPower2 = powersOfTwo[powers2Length - 1];\r\n\r\n function shift_isSmall(n) {\r\n return Math.abs(n) <= BASE;\r\n }\r\n\r\n BigInteger.prototype.shiftLeft = function (v) {\r\n var n = parseValue(v).toJSNumber();\r\n if (!shift_isSmall(n)) {\r\n throw new Error(String(n) + \" is too large for shifting.\");\r\n }\r\n if (n < 0) return this.shiftRight(-n);\r\n var result = this;\r\n if (result.isZero()) return result;\r\n while (n >= powers2Length) {\r\n result = result.multiply(highestPower2);\r\n n -= powers2Length - 1;\r\n }\r\n return result.multiply(powersOfTwo[n]);\r\n };\r\n NativeBigInt.prototype.shiftLeft = SmallInteger.prototype.shiftLeft = BigInteger.prototype.shiftLeft;\r\n\r\n BigInteger.prototype.shiftRight = function (v) {\r\n var remQuo;\r\n var n = parseValue(v).toJSNumber();\r\n if (!shift_isSmall(n)) {\r\n throw new Error(String(n) + \" is too large for shifting.\");\r\n }\r\n if (n < 0) return this.shiftLeft(-n);\r\n var result = this;\r\n while (n >= powers2Length) {\r\n if (result.isZero() || (result.isNegative() && result.isUnit())) return result;\r\n remQuo = divModAny(result, highestPower2);\r\n result = remQuo[1].isNegative() ? remQuo[0].prev() : remQuo[0];\r\n n -= powers2Length - 1;\r\n }\r\n remQuo = divModAny(result, powersOfTwo[n]);\r\n return remQuo[1].isNegative() ? remQuo[0].prev() : remQuo[0];\r\n };\r\n NativeBigInt.prototype.shiftRight = SmallInteger.prototype.shiftRight = BigInteger.prototype.shiftRight;\r\n\r\n function bitwise(x, y, fn) {\r\n y = parseValue(y);\r\n var xSign = x.isNegative(), ySign = y.isNegative();\r\n var xRem = xSign ? x.not() : x,\r\n yRem = ySign ? y.not() : y;\r\n var xDigit = 0, yDigit = 0;\r\n var xDivMod = null, yDivMod = null;\r\n var result = [];\r\n while (!xRem.isZero() || !yRem.isZero()) {\r\n xDivMod = divModAny(xRem, highestPower2);\r\n xDigit = xDivMod[1].toJSNumber();\r\n if (xSign) {\r\n xDigit = highestPower2 - 1 - xDigit; // two's complement for negative numbers\r\n }\r\n\r\n yDivMod = divModAny(yRem, highestPower2);\r\n yDigit = yDivMod[1].toJSNumber();\r\n if (ySign) {\r\n yDigit = highestPower2 - 1 - yDigit; // two's complement for negative numbers\r\n }\r\n\r\n xRem = xDivMod[0];\r\n yRem = yDivMod[0];\r\n result.push(fn(xDigit, yDigit));\r\n }\r\n var sum = fn(xSign ? 1 : 0, ySign ? 1 : 0) !== 0 ? bigInt(-1) : bigInt(0);\r\n for (var i = result.length - 1; i >= 0; i -= 1) {\r\n sum = sum.multiply(highestPower2).add(bigInt(result[i]));\r\n }\r\n return sum;\r\n }\r\n\r\n BigInteger.prototype.not = function () {\r\n return this.negate().prev();\r\n };\r\n NativeBigInt.prototype.not = SmallInteger.prototype.not = BigInteger.prototype.not;\r\n\r\n BigInteger.prototype.and = function (n) {\r\n return bitwise(this, n, function (a, b) { return a & b; });\r\n };\r\n NativeBigInt.prototype.and = SmallInteger.prototype.and = BigInteger.prototype.and;\r\n\r\n BigInteger.prototype.or = function (n) {\r\n return bitwise(this, n, function (a, b) { return a | b; });\r\n };\r\n NativeBigInt.prototype.or = SmallInteger.prototype.or = BigInteger.prototype.or;\r\n\r\n BigInteger.prototype.xor = function (n) {\r\n return bitwise(this, n, function (a, b) { return a ^ b; });\r\n };\r\n NativeBigInt.prototype.xor = SmallInteger.prototype.xor = BigInteger.prototype.xor;\r\n\r\n var LOBMASK_I = 1 << 30, LOBMASK_BI = (BASE & -BASE) * (BASE & -BASE) | LOBMASK_I;\r\n function roughLOB(n) { // get lowestOneBit (rough)\r\n // SmallInteger: return Min(lowestOneBit(n), 1 << 30)\r\n // BigInteger: return Min(lowestOneBit(n), 1 << 14) [BASE=1e7]\r\n var v = n.value,\r\n x = typeof v === \"number\" ? v | LOBMASK_I :\r\n typeof v === \"bigint\" ? v | BigInt(LOBMASK_I) :\r\n v[0] + v[1] * BASE | LOBMASK_BI;\r\n return x & -x;\r\n }\r\n\r\n function integerLogarithm(value, base) {\r\n if (base.compareTo(value) <= 0) {\r\n var tmp = integerLogarithm(value, base.square(base));\r\n var p = tmp.p;\r\n var e = tmp.e;\r\n var t = p.multiply(base);\r\n return t.compareTo(value) <= 0 ? { p: t, e: e * 2 + 1 } : { p: p, e: e * 2 };\r\n }\r\n return { p: bigInt(1), e: 0 };\r\n }\r\n\r\n BigInteger.prototype.bitLength = function () {\r\n var n = this;\r\n if (n.compareTo(bigInt(0)) < 0) {\r\n n = n.negate().subtract(bigInt(1));\r\n }\r\n if (n.compareTo(bigInt(0)) === 0) {\r\n return bigInt(0);\r\n }\r\n return bigInt(integerLogarithm(n, bigInt(2)).e).add(bigInt(1));\r\n }\r\n NativeBigInt.prototype.bitLength = SmallInteger.prototype.bitLength = BigInteger.prototype.bitLength;\r\n\r\n function max(a, b) {\r\n a = parseValue(a);\r\n b = parseValue(b);\r\n return a.greater(b) ? a : b;\r\n }\r\n function min(a, b) {\r\n a = parseValue(a);\r\n b = parseValue(b);\r\n return a.lesser(b) ? a : b;\r\n }\r\n function gcd(a, b) {\r\n a = parseValue(a).abs();\r\n b = parseValue(b).abs();\r\n if (a.equals(b)) return a;\r\n if (a.isZero()) return b;\r\n if (b.isZero()) return a;\r\n var c = Integer[1], d, t;\r\n while (a.isEven() && b.isEven()) {\r\n d = min(roughLOB(a), roughLOB(b));\r\n a = a.divide(d);\r\n b = b.divide(d);\r\n c = c.multiply(d);\r\n }\r\n while (a.isEven()) {\r\n a = a.divide(roughLOB(a));\r\n }\r\n do {\r\n while (b.isEven()) {\r\n b = b.divide(roughLOB(b));\r\n }\r\n if (a.greater(b)) {\r\n t = b; b = a; a = t;\r\n }\r\n b = b.subtract(a);\r\n } while (!b.isZero());\r\n return c.isUnit() ? a : a.multiply(c);\r\n }\r\n function lcm(a, b) {\r\n a = parseValue(a).abs();\r\n b = parseValue(b).abs();\r\n return a.divide(gcd(a, b)).multiply(b);\r\n }\r\n function randBetween(a, b, rng) {\r\n a = parseValue(a);\r\n b = parseValue(b);\r\n var usedRNG = rng || Math.random;\r\n var low = min(a, b), high = max(a, b);\r\n var range = high.subtract(low).add(1);\r\n if (range.isSmall) return low.add(Math.floor(usedRNG() * range));\r\n var digits = toBase(range, BASE).value;\r\n var result = [], restricted = true;\r\n for (var i = 0; i < digits.length; i++) {\r\n var top = restricted ? digits[i] : BASE;\r\n var digit = truncate(usedRNG() * top);\r\n result.push(digit);\r\n if (digit < top) restricted = false;\r\n }\r\n return low.add(Integer.fromArray(result, BASE, false));\r\n }\r\n\r\n var parseBase = function (text, base, alphabet, caseSensitive) {\r\n alphabet = alphabet || DEFAULT_ALPHABET;\r\n text = String(text);\r\n if (!caseSensitive) {\r\n text = text.toLowerCase();\r\n alphabet = alphabet.toLowerCase();\r\n }\r\n var length = text.length;\r\n var i;\r\n var absBase = Math.abs(base);\r\n var alphabetValues = {};\r\n for (i = 0; i < alphabet.length; i++) {\r\n alphabetValues[alphabet[i]] = i;\r\n }\r\n for (i = 0; i < length; i++) {\r\n var c = text[i];\r\n if (c === \"-\") continue;\r\n if (c in alphabetValues) {\r\n if (alphabetValues[c] >= absBase) {\r\n if (c === \"1\" && absBase === 1) continue;\r\n throw new Error(c + \" is not a valid digit in base \" + base + \".\");\r\n }\r\n }\r\n }\r\n base = parseValue(base);\r\n var digits = [];\r\n var isNegative = text[0] === \"-\";\r\n for (i = isNegative ? 1 : 0; i < text.length; i++) {\r\n var c = text[i];\r\n if (c in alphabetValues) digits.push(parseValue(alphabetValues[c]));\r\n else if (c === \"<\") {\r\n var start = i;\r\n do { i++; } while (text[i] !== \">\" && i < text.length);\r\n digits.push(parseValue(text.slice(start + 1, i)));\r\n }\r\n else throw new Error(c + \" is not a valid character\");\r\n }\r\n return parseBaseFromArray(digits, base, isNegative);\r\n };\r\n\r\n function parseBaseFromArray(digits, base, isNegative) {\r\n var val = Integer[0], pow = Integer[1], i;\r\n for (i = digits.length - 1; i >= 0; i--) {\r\n val = val.add(digits[i].times(pow));\r\n pow = pow.times(base);\r\n }\r\n return isNegative ? val.negate() : val;\r\n }\r\n\r\n function stringify(digit, alphabet) {\r\n alphabet = alphabet || DEFAULT_ALPHABET;\r\n if (digit < alphabet.length) {\r\n return alphabet[digit];\r\n }\r\n return \"<\" + digit + \">\";\r\n }\r\n\r\n function toBase(n, base) {\r\n base = bigInt(base);\r\n if (base.isZero()) {\r\n if (n.isZero()) return { value: [0], isNegative: false };\r\n throw new Error(\"Cannot convert nonzero numbers to base 0.\");\r\n }\r\n if (base.equals(-1)) {\r\n if (n.isZero()) return { value: [0], isNegative: false };\r\n if (n.isNegative())\r\n return {\r\n value: [].concat.apply([], Array.apply(null, Array(-n.toJSNumber()))\r\n .map(Array.prototype.valueOf, [1, 0])\r\n ),\r\n isNegative: false\r\n };\r\n\r\n var arr = Array.apply(null, Array(n.toJSNumber() - 1))\r\n .map(Array.prototype.valueOf, [0, 1]);\r\n arr.unshift([1]);\r\n return {\r\n value: [].concat.apply([], arr),\r\n isNegative: false\r\n };\r\n }\r\n\r\n var neg = false;\r\n if (n.isNegative() && base.isPositive()) {\r\n neg = true;\r\n n = n.abs();\r\n }\r\n if (base.isUnit()) {\r\n if (n.isZero()) return { value: [0], isNegative: false };\r\n\r\n return {\r\n value: Array.apply(null, Array(n.toJSNumber()))\r\n .map(Number.prototype.valueOf, 1),\r\n isNegative: neg\r\n };\r\n }\r\n var out = [];\r\n var left = n, divmod;\r\n while (left.isNegative() || left.compareAbs(base) >= 0) {\r\n divmod = left.divmod(base);\r\n left = divmod.quotient;\r\n var digit = divmod.remainder;\r\n if (digit.isNegative()) {\r\n digit = base.minus(digit).abs();\r\n left = left.next();\r\n }\r\n out.push(digit.toJSNumber());\r\n }\r\n out.push(left.toJSNumber());\r\n return { value: out.reverse(), isNegative: neg };\r\n }\r\n\r\n function toBaseString(n, base, alphabet) {\r\n var arr = toBase(n, base);\r\n return (arr.isNegative ? \"-\" : \"\") + arr.value.map(function (x) {\r\n return stringify(x, alphabet);\r\n }).join('');\r\n }\r\n\r\n BigInteger.prototype.toArray = function (radix) {\r\n return toBase(this, radix);\r\n };\r\n\r\n SmallInteger.prototype.toArray = function (radix) {\r\n return toBase(this, radix);\r\n };\r\n\r\n NativeBigInt.prototype.toArray = function (radix) {\r\n return toBase(this, radix);\r\n };\r\n\r\n BigInteger.prototype.toString = function (radix, alphabet) {\r\n if (radix === undefined) radix = 10;\r\n if (radix !== 10) return toBaseString(this, radix, alphabet);\r\n var v = this.value, l = v.length, str = String(v[--l]), zeros = \"0000000\", digit;\r\n while (--l >= 0) {\r\n digit = String(v[l]);\r\n str += zeros.slice(digit.length) + digit;\r\n }\r\n var sign = this.sign ? \"-\" : \"\";\r\n return sign + str;\r\n };\r\n\r\n SmallInteger.prototype.toString = function (radix, alphabet) {\r\n if (radix === undefined) radix = 10;\r\n if (radix != 10) return toBaseString(this, radix, alphabet);\r\n return String(this.value);\r\n };\r\n\r\n NativeBigInt.prototype.toString = SmallInteger.prototype.toString;\r\n\r\n NativeBigInt.prototype.toJSON = BigInteger.prototype.toJSON = SmallInteger.prototype.toJSON = function () { return this.toString(); }\r\n\r\n BigInteger.prototype.valueOf = function () {\r\n return parseInt(this.toString(), 10);\r\n };\r\n BigInteger.prototype.toJSNumber = BigInteger.prototype.valueOf;\r\n\r\n SmallInteger.prototype.valueOf = function () {\r\n return this.value;\r\n };\r\n SmallInteger.prototype.toJSNumber = SmallInteger.prototype.valueOf;\r\n NativeBigInt.prototype.valueOf = NativeBigInt.prototype.toJSNumber = function () {\r\n return parseInt(this.toString(), 10);\r\n }\r\n\r\n function parseStringValue(v) {\r\n if (isPrecise(+v)) {\r\n var x = +v;\r\n if (x === truncate(x))\r\n return supportsNativeBigInt ? new NativeBigInt(BigInt(x)) : new SmallInteger(x);\r\n throw new Error(\"Invalid integer: \" + v);\r\n }\r\n var sign = v[0] === \"-\";\r\n if (sign) v = v.slice(1);\r\n var split = v.split(/e/i);\r\n if (split.length > 2) throw new Error(\"Invalid integer: \" + split.join(\"e\"));\r\n if (split.length === 2) {\r\n var exp = split[1];\r\n if (exp[0] === \"+\") exp = exp.slice(1);\r\n exp = +exp;\r\n if (exp !== truncate(exp) || !isPrecise(exp)) throw new Error(\"Invalid integer: \" + exp + \" is not a valid exponent.\");\r\n var text = split[0];\r\n var decimalPlace = text.indexOf(\".\");\r\n if (decimalPlace >= 0) {\r\n exp -= text.length - decimalPlace - 1;\r\n text = text.slice(0, decimalPlace) + text.slice(decimalPlace + 1);\r\n }\r\n if (exp < 0) throw new Error(\"Cannot include negative exponent part for integers\");\r\n text += (new Array(exp + 1)).join(\"0\");\r\n v = text;\r\n }\r\n var isValid = /^([0-9][0-9]*)$/.test(v);\r\n if (!isValid) throw new Error(\"Invalid integer: \" + v);\r\n if (supportsNativeBigInt) {\r\n return new NativeBigInt(BigInt(sign ? \"-\" + v : v));\r\n }\r\n var r = [], max = v.length, l = LOG_BASE, min = max - l;\r\n while (max > 0) {\r\n r.push(+v.slice(min, max));\r\n min -= l;\r\n if (min < 0) min = 0;\r\n max -= l;\r\n }\r\n trim(r);\r\n return new BigInteger(r, sign);\r\n }\r\n\r\n function parseNumberValue(v) {\r\n if (supportsNativeBigInt) {\r\n return new NativeBigInt(BigInt(v));\r\n }\r\n if (isPrecise(v)) {\r\n if (v !== truncate(v)) throw new Error(v + \" is not an integer.\");\r\n return new SmallInteger(v);\r\n }\r\n return parseStringValue(v.toString());\r\n }\r\n\r\n function parseValue(v) {\r\n if (typeof v === \"number\") {\r\n return parseNumberValue(v);\r\n }\r\n if (typeof v === \"string\") {\r\n return parseStringValue(v);\r\n }\r\n if (typeof v === \"bigint\") {\r\n return new NativeBigInt(v);\r\n }\r\n return v;\r\n }\r\n // Pre-define numbers in range [-999,999]\r\n for (var i = 0; i < 1000; i++) {\r\n Integer[i] = parseValue(i);\r\n if (i > 0) Integer[-i] = parseValue(-i);\r\n }\r\n // Backwards compatibility\r\n Integer.one = Integer[1];\r\n Integer.zero = Integer[0];\r\n Integer.minusOne = Integer[-1];\r\n Integer.max = max;\r\n Integer.min = min;\r\n Integer.gcd = gcd;\r\n Integer.lcm = lcm;\r\n Integer.isInstance = function (x) { return x instanceof BigInteger || x instanceof SmallInteger || x instanceof NativeBigInt; };\r\n Integer.randBetween = randBetween;\r\n\r\n Integer.fromArray = function (digits, base, isNegative) {\r\n return parseBaseFromArray(digits.map(parseValue), parseValue(base || 10), isNegative);\r\n };\r\n\r\n return Integer;\r\n})();\r\n\r\n// Node.js check\r\nif (typeof module !== \"undefined\" && module.hasOwnProperty(\"exports\")) {\r\n module.exports = bigInt;\r\n}\r\n\r\n//amd check\r\nif (typeof define === \"function\" && define.amd) {\r\n define( function () {\r\n return bigInt;\r\n });\r\n}\r\n", "'use strict';\n\n// adapted from http://code.google.com/p/plist/source/browse/trunk/src/com/dd/plist/BinaryPropertyListParser.java\n\nconst fs = require('fs');\nconst bigInt = require(\"big-integer\");\nconst debug = false;\n\nexports.maxObjectSize = 100 * 1000 * 1000; // 100Meg\nexports.maxObjectCount = 32768;\n\n// EPOCH = new SimpleDateFormat(\"yyyy MM dd zzz\").parse(\"2001 01 01 GMT\").getTime();\n// ...but that's annoying in a static initializer because it can throw exceptions, ick.\n// So we just hardcode the correct value.\nconst EPOCH = 978307200000;\n\n// UID object definition\nconst UID = exports.UID = function(id) {\n this.UID = id;\n};\n\nconst parseFile = exports.parseFile = function (fileNameOrBuffer, callback) {\n return new Promise(function (resolve, reject) {\n function tryParseBuffer(buffer) {\n let err = null;\n let result;\n try {\n result = parseBuffer(buffer);\n resolve(result);\n } catch (ex) {\n err = ex;\n reject(err);\n } finally {\n if (callback) callback(err, result);\n }\n }\n\n if (Buffer.isBuffer(fileNameOrBuffer)) {\n return tryParseBuffer(fileNameOrBuffer);\n }\n fs.readFile(fileNameOrBuffer, function (err, data) {\n if (err) {\n reject(err);\n return callback(err);\n }\n tryParseBuffer(data);\n });\n });\n};\n\nconst parseBuffer = exports.parseBuffer = function (buffer) {\n // check header\n const header = buffer.slice(0, 'bplist'.length).toString('utf8');\n if (header !== 'bplist') {\n throw new Error(\"Invalid binary plist. Expected 'bplist' at offset 0.\");\n }\n\n // Handle trailer, last 32 bytes of the file\n const trailer = buffer.slice(buffer.length - 32, buffer.length);\n // 6 null bytes (index 0 to 5)\n const offsetSize = trailer.readUInt8(6);\n if (debug) {\n console.log(\"offsetSize: \" + offsetSize);\n }\n const objectRefSize = trailer.readUInt8(7);\n if (debug) {\n console.log(\"objectRefSize: \" + objectRefSize);\n }\n const numObjects = readUInt64BE(trailer, 8);\n if (debug) {\n console.log(\"numObjects: \" + numObjects);\n }\n const topObject = readUInt64BE(trailer, 16);\n if (debug) {\n console.log(\"topObject: \" + topObject);\n }\n const offsetTableOffset = readUInt64BE(trailer, 24);\n if (debug) {\n console.log(\"offsetTableOffset: \" + offsetTableOffset);\n }\n\n if (numObjects > exports.maxObjectCount) {\n throw new Error(\"maxObjectCount exceeded\");\n }\n\n // Handle offset table\n const offsetTable = [];\n\n for (let i = 0; i < numObjects; i++) {\n const offsetBytes = buffer.slice(offsetTableOffset + i * offsetSize, offsetTableOffset + (i + 1) * offsetSize);\n offsetTable[i] = readUInt(offsetBytes, 0);\n if (debug) {\n console.log(\"Offset for Object #\" + i + \" is \" + offsetTable[i] + \" [\" + offsetTable[i].toString(16) + \"]\");\n }\n }\n\n // Parses an object inside the currently parsed binary property list.\n // For the format specification check\n // \n // Apple's binary property list parser implementation.\n function parseObject(tableOffset) {\n const offset = offsetTable[tableOffset];\n const type = buffer[offset];\n const objType = (type & 0xF0) >> 4; //First 4 bits\n const objInfo = (type & 0x0F); //Second 4 bits\n switch (objType) {\n case 0x0:\n return parseSimple();\n case 0x1:\n return parseInteger();\n case 0x8:\n return parseUID();\n case 0x2:\n return parseReal();\n case 0x3:\n return parseDate();\n case 0x4:\n return parseData();\n case 0x5: // ASCII\n return parsePlistString();\n case 0x6: // UTF-16\n return parsePlistString(true);\n case 0xA:\n return parseArray();\n case 0xD:\n return parseDictionary();\n default:\n throw new Error(\"Unhandled type 0x\" + objType.toString(16));\n }\n\n function parseSimple() {\n //Simple\n switch (objInfo) {\n case 0x0: // null\n return null;\n case 0x8: // false\n return false;\n case 0x9: // true\n return true;\n case 0xF: // filler byte\n return null;\n default:\n throw new Error(\"Unhandled simple type 0x\" + objType.toString(16));\n }\n }\n\n function bufferToHexString(buffer) {\n let str = '';\n let i;\n for (i = 0; i < buffer.length; i++) {\n if (buffer[i] != 0x00) {\n break;\n }\n }\n for (; i < buffer.length; i++) {\n const part = '00' + buffer[i].toString(16);\n str += part.substr(part.length - 2);\n }\n return str;\n }\n\n function parseInteger() {\n const length = Math.pow(2, objInfo);\n\n if (objInfo == 0x4) {\n const data = buffer.slice(offset + 1, offset + 1 + length);\n const str = bufferToHexString(data);\n return bigInt(str, 16);\n }\n if (objInfo == 0x3) {\n return buffer.readInt32BE(offset + 1);\n }\n if (length < exports.maxObjectSize) {\n return readUInt(buffer.slice(offset + 1, offset + 1 + length));\n }\n throw new Error(\"To little heap space available! Wanted to read \" + length + \" bytes, but only \" + exports.maxObjectSize + \" are available.\");\n }\n\n function parseUID() {\n const length = objInfo + 1;\n if (length < exports.maxObjectSize) {\n return new UID(readUInt(buffer.slice(offset + 1, offset + 1 + length)));\n }\n throw new Error(\"To little heap space available! Wanted to read \" + length + \" bytes, but only \" + exports.maxObjectSize + \" are available.\");\n }\n\n function parseReal() {\n const length = Math.pow(2, objInfo);\n if (length < exports.maxObjectSize) {\n const realBuffer = buffer.slice(offset + 1, offset + 1 + length);\n if (length === 4) {\n return realBuffer.readFloatBE(0);\n }\n if (length === 8) {\n return realBuffer.readDoubleBE(0);\n }\n } else {\n throw new Error(\"To little heap space available! Wanted to read \" + length + \" bytes, but only \" + exports.maxObjectSize + \" are available.\");\n }\n }\n\n function parseDate() {\n if (objInfo != 0x3) {\n console.error(\"Unknown date type :\" + objInfo + \". Parsing anyway...\");\n }\n const dateBuffer = buffer.slice(offset + 1, offset + 9);\n return new Date(EPOCH + (1000 * dateBuffer.readDoubleBE(0)));\n }\n\n function parseData() {\n let dataoffset = 1;\n let length = objInfo;\n if (objInfo == 0xF) {\n const int_type = buffer[offset + 1];\n const intType = (int_type & 0xF0) / 0x10;\n if (intType != 0x1) {\n console.error(\"0x4: UNEXPECTED LENGTH-INT TYPE! \" + intType);\n }\n const intInfo = int_type & 0x0F;\n const intLength = Math.pow(2, intInfo);\n dataoffset = 2 + intLength;\n if (intLength < 3) {\n length = readUInt(buffer.slice(offset + 2, offset + 2 + intLength));\n } else {\n length = readUInt(buffer.slice(offset + 2, offset + 2 + intLength));\n }\n }\n if (length < exports.maxObjectSize) {\n return buffer.slice(offset + dataoffset, offset + dataoffset + length);\n }\n throw new Error(\"To little heap space available! Wanted to read \" + length + \" bytes, but only \" + exports.maxObjectSize + \" are available.\");\n }\n\n function parsePlistString (isUtf16) {\n isUtf16 = isUtf16 || 0;\n let enc = \"utf8\";\n let length = objInfo;\n let stroffset = 1;\n if (objInfo == 0xF) {\n const int_type = buffer[offset + 1];\n const intType = (int_type & 0xF0) / 0x10;\n if (intType != 0x1) {\n console.err(\"UNEXPECTED LENGTH-INT TYPE! \" + intType);\n }\n const intInfo = int_type & 0x0F;\n const intLength = Math.pow(2, intInfo);\n stroffset = 2 + intLength;\n if (intLength < 3) {\n length = readUInt(buffer.slice(offset + 2, offset + 2 + intLength));\n } else {\n length = readUInt(buffer.slice(offset + 2, offset + 2 + intLength));\n }\n }\n // length is String length -> to get byte length multiply by 2, as 1 character takes 2 bytes in UTF-16\n length *= (isUtf16 + 1);\n if (length < exports.maxObjectSize) {\n let plistString = Buffer.from(buffer.slice(offset + stroffset, offset + stroffset + length));\n if (isUtf16) {\n plistString = swapBytes(plistString);\n enc = \"ucs2\";\n }\n return plistString.toString(enc);\n }\n throw new Error(\"To little heap space available! Wanted to read \" + length + \" bytes, but only \" + exports.maxObjectSize + \" are available.\");\n }\n\n function parseArray() {\n let length = objInfo;\n let arrayoffset = 1;\n if (objInfo == 0xF) {\n const int_type = buffer[offset + 1];\n const intType = (int_type & 0xF0) / 0x10;\n if (intType != 0x1) {\n console.error(\"0xa: UNEXPECTED LENGTH-INT TYPE! \" + intType);\n }\n const intInfo = int_type & 0x0F;\n const intLength = Math.pow(2, intInfo);\n arrayoffset = 2 + intLength;\n if (intLength < 3) {\n length = readUInt(buffer.slice(offset + 2, offset + 2 + intLength));\n } else {\n length = readUInt(buffer.slice(offset + 2, offset + 2 + intLength));\n }\n }\n if (length * objectRefSize > exports.maxObjectSize) {\n throw new Error(\"To little heap space available!\");\n }\n const array = [];\n for (let i = 0; i < length; i++) {\n const objRef = readUInt(buffer.slice(offset + arrayoffset + i * objectRefSize, offset + arrayoffset + (i + 1) * objectRefSize));\n array[i] = parseObject(objRef);\n }\n return array;\n }\n\n function parseDictionary() {\n let length = objInfo;\n let dictoffset = 1;\n if (objInfo == 0xF) {\n const int_type = buffer[offset + 1];\n const intType = (int_type & 0xF0) / 0x10;\n if (intType != 0x1) {\n console.error(\"0xD: UNEXPECTED LENGTH-INT TYPE! \" + intType);\n }\n const intInfo = int_type & 0x0F;\n const intLength = Math.pow(2, intInfo);\n dictoffset = 2 + intLength;\n if (intLength < 3) {\n length = readUInt(buffer.slice(offset + 2, offset + 2 + intLength));\n } else {\n length = readUInt(buffer.slice(offset + 2, offset + 2 + intLength));\n }\n }\n if (length * 2 * objectRefSize > exports.maxObjectSize) {\n throw new Error(\"To little heap space available!\");\n }\n if (debug) {\n console.log(\"Parsing dictionary #\" + tableOffset);\n }\n const dict = {};\n for (let i = 0; i < length; i++) {\n const keyRef = readUInt(buffer.slice(offset + dictoffset + i * objectRefSize, offset + dictoffset + (i + 1) * objectRefSize));\n const valRef = readUInt(buffer.slice(offset + dictoffset + (length * objectRefSize) + i * objectRefSize, offset + dictoffset + (length * objectRefSize) + (i + 1) * objectRefSize));\n const key = parseObject(keyRef);\n const val = parseObject(valRef);\n if (debug) {\n console.log(\" DICT #\" + tableOffset + \": Mapped \" + key + \" to \" + val);\n }\n dict[key] = val;\n }\n return dict;\n }\n }\n\n return [ parseObject(topObject) ];\n};\n\nfunction readUInt(buffer, start) {\n start = start || 0;\n\n let l = 0;\n for (let i = start; i < buffer.length; i++) {\n l <<= 8;\n l |= buffer[i] & 0xFF;\n }\n return l;\n}\n\n// we're just going to toss the high order bits because javascript doesn't have 64-bit ints\nfunction readUInt64BE(buffer, start) {\n const data = buffer.slice(start, start + 8);\n return data.readUInt32BE(4, 8);\n}\n\nfunction swapBytes(buffer) {\n const len = buffer.length;\n for (let i = 0; i < len; i += 2) {\n const a = buffer[i];\n buffer[i] = buffer[i+1];\n buffer[i+1] = a;\n }\n return buffer;\n}\n", "module.exports = {\r\n\tDEFAULT_INITIAL_SIZE: (8 * 1024),\r\n\tDEFAULT_INCREMENT_AMOUNT: (8 * 1024),\r\n\tDEFAULT_FREQUENCY: 1,\r\n\tDEFAULT_CHUNK_SIZE: 1024\r\n};\r\n", "var stream = require(\"stream\"),\r\n\tconstants = require(\"./constants\"),\r\n\tutil = require(\"util\");\r\n\r\nvar ReadableStreamBuffer = module.exports = function(opts) {\r\n\tvar that = this;\r\n\r\n\tstream.Stream.call(this);\r\n\r\n\topts = opts || {};\r\n\tvar frequency = opts.hasOwnProperty(\"frequency\") ? opts.frequency : constants.DEFAULT_FREQUENCY;\r\n\tvar chunkSize = opts.chunkSize || constants.DEFAULT_CHUNK_SIZE;\r\n\tvar initialSize = opts.initialSize || constants.DEFAULT_INITIAL_SIZE;\r\n\tvar incrementAmount = opts.incrementAmount || constants.DEFAULT_INCREMENT_AMOUNT;\r\n\r\n\tvar size = 0;\r\n\tvar buffer = new Buffer(initialSize);\r\n\tvar encoding = null;\r\n\r\n\tthis.readable = true;\r\n\tthis.writable = false;\r\n\r\n\tvar sendData = function() {\r\n\t\tvar amount = Math.min(chunkSize, size);\r\n\r\n\t\tif (amount > 0) {\r\n\t\t\tvar chunk = null;\r\n\t\t\tif(encoding) {\r\n\t\t\t\tchunk = buffer.toString(encoding, 0, amount);\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tchunk = new Buffer(amount);\r\n\t\t\t\tbuffer.copy(chunk, 0, 0, amount);\r\n\t\t\t}\r\n\r\n\t\t\tthat.emit(\"data\", chunk);\r\n\r\n\t\t\tif(amount < buffer.length)\r\n\t\t\t\tbuffer.copy(buffer, 0, amount, size);\r\n\t\t\tsize -= amount;\r\n\t\t}\r\n\r\n\t\tif(size === 0 && !that.readable) {\r\n\t\t\tthat.emit(\"end\");\r\n\t\t\tthat.emit(\"close\");\r\n\t\t\tif (sendData && sendData.interval) {\r\n\t\t\t\tclearInterval(sendData.interval);\r\n\t\t\t\tsendData.interval = null;\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\tthis.size = function() {\r\n\t\treturn size;\r\n\t};\r\n\r\n\tthis.maxSize = function() {\r\n\t\treturn buffer.length;\r\n\t};\r\n\r\n\tvar increaseBufferIfNecessary = function(incomingDataSize) {\r\n\t\tif((buffer.length - size) < incomingDataSize) {\r\n\t\t\tvar factor = Math.ceil((incomingDataSize - (buffer.length - size)) / incrementAmount);\r\n\r\n\t\t\tvar newBuffer = new Buffer(buffer.length + (incrementAmount * factor));\r\n\t\t\tbuffer.copy(newBuffer, 0, 0, size);\r\n\t\t\tbuffer = newBuffer;\r\n\t\t}\r\n\t};\r\n\r\n\tthis.put = function(data, encoding) {\r\n\t\tif(!that.readable) return;\r\n\r\n\t\tvar wasEmpty = size === 0;\r\n\t\tif(Buffer.isBuffer(data)) {\r\n\t\t\tincreaseBufferIfNecessary(data.length);\r\n\t\t\tdata.copy(buffer, size, 0);\r\n\t\t\tsize += data.length;\r\n\t\t}\r\n\t\telse {\r\n\t\t\tdata = data + \"\";\r\n\t\t\tvar dataSizeInBytes = Buffer.byteLength(data);\r\n\t\t\tincreaseBufferIfNecessary(dataSizeInBytes);\r\n\t\t\tbuffer.write(data, size, encoding || \"utf8\");\r\n\t\t\tsize += dataSizeInBytes;\r\n\t\t}\r\n\r\n\t\tif (wasEmpty && size > 0) {\r\n\t\t\tthis.emit('readable')\r\n\t\t}\r\n\r\n\t\tif (!this.isPaused && !frequency) {\r\n\t\t\twhile (size > 0) {\r\n\t\t\t\tsendData();\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\tthis.pause = function() {\r\n\t\tthis.isPaused = true;\r\n\t\tif(sendData && sendData.interval) {\r\n\t\t\tclearInterval(sendData.interval);\r\n\t\t\tdelete sendData.interval;\r\n\t\t}\r\n\t};\r\n\r\n\tthis.resume = function() {\r\n\t\tthis.isPaused = false;\r\n\t\tif(sendData && !sendData.interval && frequency > 0) {\r\n\t\t\tsendData.interval = setInterval(sendData, frequency);\r\n\t\t}\r\n\t};\r\n\r\n\tthis.destroy = function() {\r\n\t\tthat.emit(\"end\");\r\n\t\tif(sendData.interval) clearInterval(sendData.interval);\r\n\t\tsendData = null;\r\n\t\tthat.readable = false;\r\n\t\tthat.emit(\"close\");\r\n\t};\r\n\r\n\tthis.destroySoon = function() {\r\n\t\tthat.readable = false;\r\n\t\tif (!sendData.interval) {\r\n\t\t\tthat.emit(\"end\");\r\n\t\t\tthat.emit(\"close\");\r\n\t\t}\r\n\t};\r\n\r\n\tthis.setEncoding = function(_encoding) {\r\n\t\tencoding = _encoding;\r\n\t};\r\n\r\n\tthis.resume();\r\n};\r\nutil.inherits(ReadableStreamBuffer, stream.Stream);\r\n", "var util = require(\"util\"),\r\n\tstream = require(\"stream\"),\r\n\tconstants = require(\"./constants\");\r\n\r\n// TODO: clear up specs on returning false from a write and emitting a drain event.\r\n// Does this mean if I return false from a write, I should ignore any write requests between that false return and the drain event?\r\nvar WritableStreamBuffer = module.exports = function(opts) {\r\n\tvar that = this;\r\n\r\n\tstream.Stream.call(this);\r\n\r\n\topts = opts || {};\r\n\tvar initialSize = opts.initialSize || constants.DEFAULT_INITIAL_SIZE;\r\n\tvar incrementAmount = opts.incrementAmount || constants.DEFAULT_INCREMENT_AMOUNT;\r\n\r\n\tvar buffer = new Buffer(initialSize);\r\n\tvar size = 0;\r\n\r\n\tthis.writable = true;\r\n\tthis.readable = false;\r\n\r\n\tthis.size = function() {\r\n\t\treturn size;\r\n\t};\r\n\r\n\tthis.maxSize = function() {\r\n\t\treturn buffer.length;\r\n\t};\r\n\r\n\tthis.getContents = function(length) {\r\n\t\tif(!size) return false;\r\n\r\n\t\tvar data = new Buffer(Math.min(length || size, size));\r\n\t\tbuffer.copy(data, 0, 0, data.length);\r\n\r\n\t\tif(data.length < size)\r\n\t\t\tbuffer.copy(buffer, 0, data.length);\r\n\r\n\t\tsize -= data.length;\r\n\r\n\t\treturn data;\r\n\t};\r\n\r\n\tthis.getContentsAsString = function(encoding, length) {\r\n\t\tif(!size) return false;\r\n\r\n\t\tvar data = buffer.toString(encoding || \"utf8\", 0, Math.min(length || size, size));\r\n\t\tvar dataLength = Buffer.byteLength(data);\r\n\r\n\t\tif(dataLength < size)\r\n\t\t\tbuffer.copy(buffer, 0, dataLength);\r\n\r\n\t\tsize -= dataLength;\r\n\t\treturn data;\r\n\t};\r\n\r\n\tvar increaseBufferIfNecessary = function(incomingDataSize) {\r\n\t\tif((buffer.length - size) < incomingDataSize) {\r\n\t\t\tvar factor = Math.ceil((incomingDataSize - (buffer.length - size)) / incrementAmount);\r\n\r\n\t\t\tvar newBuffer = new Buffer(buffer.length + (incrementAmount * factor));\r\n\t\t\tbuffer.copy(newBuffer, 0, 0, size);\r\n\t\t\tbuffer = newBuffer;\r\n\t\t}\r\n\t};\r\n\r\n\tthis.write = function(data, encoding, callback) {\r\n\t\tif(!that.writable) return;\r\n\r\n\t\tif(Buffer.isBuffer(data)) {\r\n\t\t\tincreaseBufferIfNecessary(data.length);\r\n\t\t\tdata.copy(buffer, size, 0);\r\n\t\t\tsize += data.length;\r\n\t\t}\r\n\t\telse {\r\n\t\t\tdata = data + \"\";\r\n\t\t\tincreaseBufferIfNecessary(Buffer.byteLength(data));\r\n\t\t\tbuffer.write(data, size, encoding || \"utf8\");\r\n\t\t\tsize += Buffer.byteLength(data);\r\n\t\t}\r\n\t\t\r\n\t\tif(typeof callback === \"function\") { callback() ;}\r\n\t};\r\n\r\n\tthis.end = function() {\r\n\t\tvar args = Array.prototype.slice.apply(arguments);\r\n\t\tif(args.length) that.write.apply(that, args);\r\n\t\tthat.emit('finish');\r\n\t\tthat.destroy();\r\n\t};\r\n\r\n\tthis.destroySoon = this.destroy = function() {\r\n\t\tthat.writable = false;\r\n\t\tthat.emit(\"close\");\r\n\t};\r\n};\r\nutil.inherits(WritableStreamBuffer, stream.Stream);\r\n", "module.exports = require(\"./constants\");\r\nmodule.exports.ReadableStreamBuffer = require(\"./readable_streambuffer\");\r\nmodule.exports.WritableStreamBuffer = require(\"./writable_streambuffer\");\r\n", "'use strict';\n\n// adapted from http://code.google.com/p/plist/source/browse/trunk/src/main/java/com/dd/plist/BinaryPropertyListWriter.java\n\nvar streamBuffers = require(\"stream-buffers\");\n\nvar debug = false;\n\nfunction Real(value) {\n this.value = value;\n}\n\nmodule.exports = function(dicts) {\n var buffer = new streamBuffers.WritableStreamBuffer();\n buffer.write(new Buffer(\"bplist00\"));\n\n if (debug) {\n console.log('create', require('util').inspect(dicts, false, 10));\n }\n\n if (dicts instanceof Array && dicts.length === 1) {\n dicts = dicts[0];\n }\n\n var entries = toEntries(dicts);\n if (debug) {\n console.log('entries', entries);\n }\n var idSizeInBytes = computeIdSizeInBytes(entries.length);\n var offsets = [];\n var offsetSizeInBytes;\n var offsetTableOffset;\n\n updateEntryIds();\n\n entries.forEach(function(entry, entryIdx) {\n offsets[entryIdx] = buffer.size();\n if (!entry) {\n buffer.write(0x00);\n } else {\n write(entry);\n }\n });\n\n writeOffsetTable();\n writeTrailer();\n return buffer.getContents();\n\n function updateEntryIds() {\n var strings = {};\n var entryId = 0;\n entries.forEach(function(entry) {\n if (entry.id) {\n return;\n }\n if (entry.type === 'string') {\n if (!entry.bplistOverride && strings.hasOwnProperty(entry.value)) {\n entry.type = 'stringref';\n entry.id = strings[entry.value];\n } else {\n strings[entry.value] = entry.id = entryId++;\n }\n } else {\n entry.id = entryId++;\n }\n });\n\n entries = entries.filter(function(entry) {\n return (entry.type !== 'stringref');\n });\n }\n\n function writeTrailer() {\n if (debug) {\n console.log('0x' + buffer.size().toString(16), 'writeTrailer');\n }\n // 6 null bytes\n buffer.write(new Buffer([0, 0, 0, 0, 0, 0]));\n\n // size of an offset\n if (debug) {\n console.log('0x' + buffer.size().toString(16), 'writeTrailer(offsetSizeInBytes):', offsetSizeInBytes);\n }\n writeByte(offsetSizeInBytes);\n\n // size of a ref\n if (debug) {\n console.log('0x' + buffer.size().toString(16), 'writeTrailer(offsetSizeInBytes):', idSizeInBytes);\n }\n writeByte(idSizeInBytes);\n\n // number of objects\n if (debug) {\n console.log('0x' + buffer.size().toString(16), 'writeTrailer(number of objects):', entries.length);\n }\n writeLong(entries.length);\n\n // top object\n if (debug) {\n console.log('0x' + buffer.size().toString(16), 'writeTrailer(top object)');\n }\n writeLong(0);\n\n // offset table offset\n if (debug) {\n console.log('0x' + buffer.size().toString(16), 'writeTrailer(offset table offset):', offsetTableOffset);\n }\n writeLong(offsetTableOffset);\n }\n\n function writeOffsetTable() {\n if (debug) {\n console.log('0x' + buffer.size().toString(16), 'writeOffsetTable');\n }\n offsetTableOffset = buffer.size();\n offsetSizeInBytes = computeOffsetSizeInBytes(offsetTableOffset);\n offsets.forEach(function(offset) {\n writeBytes(offset, offsetSizeInBytes);\n });\n }\n\n function write(entry) {\n switch (entry.type) {\n case 'dict':\n writeDict(entry);\n break;\n case 'number':\n case 'double':\n writeNumber(entry);\n break;\n case 'UID':\n writeUID(entry);\n break;\n case 'array':\n writeArray(entry);\n break;\n case 'boolean':\n writeBoolean(entry);\n break;\n case 'string':\n case 'string-utf16':\n writeString(entry);\n break;\n case 'date':\n writeDate(entry);\n break;\n case 'data':\n writeData(entry);\n break;\n default:\n throw new Error(\"unhandled entry type: \" + entry.type);\n }\n }\n\n function writeDate(entry) {\n writeByte(0x33);\n var date = (Date.parse(entry.value)/1000) - 978307200\n writeDouble(date)\n }\n\n function writeDict(entry) {\n if (debug) {\n var keysStr = entry.entryKeys.map(function(k) {return k.id;});\n var valsStr = entry.entryValues.map(function(k) {return k.id;});\n console.log('0x' + buffer.size().toString(16), 'writeDict', '(id: ' + entry.id + ')', '(keys: ' + keysStr + ')', '(values: ' + valsStr + ')');\n }\n writeIntHeader(0xD, entry.entryKeys.length);\n entry.entryKeys.forEach(function(entry) {\n writeID(entry.id);\n });\n entry.entryValues.forEach(function(entry) {\n writeID(entry.id);\n });\n }\n\n function writeNumber(entry) {\n if (debug) {\n console.log('0x' + buffer.size().toString(16), 'writeNumber', entry.value, ' (type: ' + entry.type + ')', '(id: ' + entry.id + ')');\n }\n\n if (entry.type !== 'double' && parseFloat(entry.value.toFixed()) == entry.value) {\n if (entry.value < 0) {\n writeByte(0x13);\n writeBytes(entry.value, 8, true);\n } else if (entry.value <= 0xff) {\n writeByte(0x10);\n writeBytes(entry.value, 1);\n } else if (entry.value <= 0xffff) {\n writeByte(0x11);\n writeBytes(entry.value, 2);\n } else if (entry.value <= 0xffffffff) {\n writeByte(0x12);\n writeBytes(entry.value, 4);\n } else {\n writeByte(0x14);\n writeBytes(entry.value, 8);\n }\n } else {\n writeByte(0x23);\n writeDouble(entry.value);\n }\n }\n\n function writeUID(entry) {\n if (debug) {\n console.log('0x' + buffer.size().toString(16), 'writeUID', entry.value, ' (type: ' + entry.type + ')', '(id: ' + entry.id + ')');\n }\n\n writeIntHeader(0x8, 0x0);\n writeID(entry.value);\n }\n\n function writeArray(entry) {\n if (debug) {\n console.log('0x' + buffer.size().toString(16), 'writeArray (length: ' + entry.entries.length + ')', '(id: ' + entry.id + ')');\n }\n writeIntHeader(0xA, entry.entries.length);\n entry.entries.forEach(function(e) {\n writeID(e.id);\n });\n }\n\n function writeBoolean(entry) {\n if (debug) {\n console.log('0x' + buffer.size().toString(16), 'writeBoolean', entry.value, '(id: ' + entry.id + ')');\n }\n writeByte(entry.value ? 0x09 : 0x08);\n }\n\n function writeString(entry) {\n if (debug) {\n console.log('0x' + buffer.size().toString(16), 'writeString', entry.value, '(id: ' + entry.id + ')');\n }\n if (entry.type === 'string-utf16' || mustBeUtf16(entry.value)) {\n var utf16 = new Buffer(entry.value, 'ucs2');\n writeIntHeader(0x6, utf16.length / 2);\n // needs to be big endian so swap the bytes\n for (var i = 0; i < utf16.length; i += 2) {\n var t = utf16[i + 0];\n utf16[i + 0] = utf16[i + 1];\n utf16[i + 1] = t;\n }\n buffer.write(utf16);\n } else {\n var utf8 = new Buffer(entry.value, 'ascii');\n writeIntHeader(0x5, utf8.length);\n buffer.write(utf8);\n }\n }\n\n function writeData(entry) {\n if (debug) {\n console.log('0x' + buffer.size().toString(16), 'writeData', entry.value, '(id: ' + entry.id + ')');\n }\n writeIntHeader(0x4, entry.value.length);\n buffer.write(entry.value);\n }\n\n function writeLong(l) {\n writeBytes(l, 8);\n }\n\n function writeByte(b) {\n buffer.write(new Buffer([b]));\n }\n\n function writeDouble(v) {\n var buf = new Buffer(8);\n buf.writeDoubleBE(v, 0);\n buffer.write(buf);\n }\n\n function writeIntHeader(kind, value) {\n if (value < 15) {\n writeByte((kind << 4) + value);\n } else if (value < 256) {\n writeByte((kind << 4) + 15);\n writeByte(0x10);\n writeBytes(value, 1);\n } else if (value < 65536) {\n writeByte((kind << 4) + 15);\n writeByte(0x11);\n writeBytes(value, 2);\n } else {\n writeByte((kind << 4) + 15);\n writeByte(0x12);\n writeBytes(value, 4);\n }\n }\n\n function writeID(id) {\n writeBytes(id, idSizeInBytes);\n }\n\n function writeBytes(value, bytes, is_signedint) {\n // write low-order bytes big-endian style\n var buf = new Buffer(bytes);\n var z = 0;\n\n // javascript doesn't handle large numbers\n if(!is_signedint) {\n while (bytes > 4) {\n buf[z++] = 0;\n bytes--;\n }\n }\n\n for (var i = bytes - 1; i >= 0; i--) {\n buf[z++] = value >> (8 * i);\n }\n buffer.write(buf);\n }\n\n function mustBeUtf16(string) {\n return Buffer.byteLength(string, 'utf8') != string.length;\n }\n};\n\nfunction toEntries(dicts) {\n if (dicts.bplistOverride) {\n return [dicts];\n }\n\n if (dicts instanceof Array) {\n return toEntriesArray(dicts);\n } else if (dicts instanceof Buffer) {\n return [\n {\n type: 'data',\n value: dicts\n }\n ];\n } else if (dicts instanceof Real) {\n return [\n {\n type: 'double',\n value: dicts.value\n }\n ];\n } else if (typeof(dicts) === 'object') {\n if (dicts instanceof Date) {\n return [\n {\n type: 'date',\n value: dicts\n }\n ]\n } else if (Object.keys(dicts).length == 1 && typeof(dicts.UID) === 'number') {\n return [\n {\n type: 'UID',\n value: dicts.UID\n }\n ]\n } else {\n return toEntriesObject(dicts);\n }\n } else if (typeof(dicts) === 'string') {\n return [\n {\n type: 'string',\n value: dicts\n }\n ];\n } else if (typeof(dicts) === 'number') {\n return [\n {\n type: 'number',\n value: dicts\n }\n ];\n } else if (typeof(dicts) === 'boolean') {\n return [\n {\n type: 'boolean',\n value: dicts\n }\n ];\n } else if (typeof(dicts) === 'bigint') {\n return [\n {\n type: 'number',\n value: Number(BigInt.asIntN(32, dicts))\n }\n ];\n } else {\n throw new Error('unhandled entry: ' + dicts);\n }\n}\n\nfunction toEntriesArray(arr) {\n if (debug) {\n console.log('toEntriesArray');\n }\n var results = [\n {\n type: 'array',\n entries: []\n }\n ];\n arr.forEach(function(v) {\n var entry = toEntries(v);\n results[0].entries.push(entry[0]);\n results = results.concat(entry);\n });\n return results;\n}\n\nfunction toEntriesObject(dict) {\n if (debug) {\n console.log('toEntriesObject');\n }\n var results = [\n {\n type: 'dict',\n entryKeys: [],\n entryValues: []\n }\n ];\n Object.keys(dict).forEach(function(key) {\n var entryKey = toEntries(key);\n results[0].entryKeys.push(entryKey[0]);\n results = results.concat(entryKey[0]);\n });\n Object.keys(dict).forEach(function(key) {\n var entryValue = toEntries(dict[key]);\n results[0].entryValues.push(entryValue[0]);\n results = results.concat(entryValue);\n });\n return results;\n}\n\nfunction computeOffsetSizeInBytes(maxOffset) {\n if (maxOffset < 256) {\n return 1;\n }\n if (maxOffset < 65536) {\n return 2;\n }\n if (maxOffset < 4294967296) {\n return 4;\n }\n return 8;\n}\n\nfunction computeIdSizeInBytes(numberOfIds) {\n if (numberOfIds < 256) {\n return 1;\n }\n if (numberOfIds < 65536) {\n return 2;\n }\n return 4;\n}\n\nmodule.exports.Real = Real;\n", "//[4] \tNameStartChar\t ::= \t\":\" | [A-Z] | \"_\" | [a-z] | [#xC0-#xD6] | [#xD8-#xF6] | [#xF8-#x2FF] | [#x370-#x37D] | [#x37F-#x1FFF] | [#x200C-#x200D] | [#x2070-#x218F] | [#x2C00-#x2FEF] | [#x3001-#xD7FF] | [#xF900-#xFDCF] | [#xFDF0-#xFFFD] | [#x10000-#xEFFFF]\r\n//[4a] \tNameChar\t ::= \tNameStartChar | \"-\" | \".\" | [0-9] | #xB7 | [#x0300-#x036F] | [#x203F-#x2040]\r\n//[5] \tName\t ::= \tNameStartChar (NameChar)*\r\nvar nameStartChar = /[A-Z_a-z\\xC0-\\xD6\\xD8-\\xF6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]///\\u10000-\\uEFFFF\r\nvar nameChar = new RegExp(\"[\\\\-\\\\.0-9\"+nameStartChar.source.slice(1,-1)+\"\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040]\");\r\nvar tagNamePattern = new RegExp('^'+nameStartChar.source+nameChar.source+'*(?:\\:'+nameStartChar.source+nameChar.source+'*)?$');\r\n//var tagNamePattern = /^[a-zA-Z_][\\w\\-\\.]*(?:\\:[a-zA-Z_][\\w\\-\\.]*)?$/\r\n//var handlers = 'resolveEntity,getExternalSubset,characters,endDocument,endElement,endPrefixMapping,ignorableWhitespace,processingInstruction,setDocumentLocator,skippedEntity,startDocument,startElement,startPrefixMapping,notationDecl,unparsedEntityDecl,error,fatalError,warning,attributeDecl,elementDecl,externalEntityDecl,internalEntityDecl,comment,endCDATA,endDTD,endEntity,startCDATA,startDTD,startEntity'.split(',')\r\n\r\n//S_TAG,\tS_ATTR,\tS_EQ,\tS_ATTR_NOQUOT_VALUE\r\n//S_ATTR_SPACE,\tS_ATTR_END,\tS_TAG_SPACE, S_TAG_CLOSE\r\nvar S_TAG = 0;//tag name offerring\r\nvar S_ATTR = 1;//attr name offerring \r\nvar S_ATTR_SPACE=2;//attr name end and space offer\r\nvar S_EQ = 3;//=space?\r\nvar S_ATTR_NOQUOT_VALUE = 4;//attr value(no quot value only)\r\nvar S_ATTR_END = 5;//attr value end and no space(quot end)\r\nvar S_TAG_SPACE = 6;//(attr value end || tag end ) && (space offer)\r\nvar S_TAG_CLOSE = 7;//closed el\r\n\r\nfunction XMLReader(){\r\n\t\r\n}\r\n\r\nXMLReader.prototype = {\r\n\tparse:function(source,defaultNSMap,entityMap){\r\n\t\tvar domBuilder = this.domBuilder;\r\n\t\tdomBuilder.startDocument();\r\n\t\t_copy(defaultNSMap ,defaultNSMap = {})\r\n\t\tparse(source,defaultNSMap,entityMap,\r\n\t\t\t\tdomBuilder,this.errorHandler);\r\n\t\tdomBuilder.endDocument();\r\n\t}\r\n}\r\nfunction parse(source,defaultNSMapCopy,entityMap,domBuilder,errorHandler){\r\n\tfunction fixedFromCharCode(code) {\r\n\t\t// String.prototype.fromCharCode does not supports\r\n\t\t// > 2 bytes unicode chars directly\r\n\t\tif (code > 0xffff) {\r\n\t\t\tcode -= 0x10000;\r\n\t\t\tvar surrogate1 = 0xd800 + (code >> 10)\r\n\t\t\t\t, surrogate2 = 0xdc00 + (code & 0x3ff);\r\n\r\n\t\t\treturn String.fromCharCode(surrogate1, surrogate2);\r\n\t\t} else {\r\n\t\t\treturn String.fromCharCode(code);\r\n\t\t}\r\n\t}\r\n\tfunction entityReplacer(a){\r\n\t\tvar k = a.slice(1,-1);\r\n\t\tif(k in entityMap){\r\n\t\t\treturn entityMap[k]; \r\n\t\t}else if(k.charAt(0) === '#'){\r\n\t\t\treturn fixedFromCharCode(parseInt(k.substr(1).replace('x','0x')))\r\n\t\t}else{\r\n\t\t\terrorHandler.error('entity not found:'+a);\r\n\t\t\treturn a;\r\n\t\t}\r\n\t}\r\n\tfunction appendText(end){//has some bugs\r\n\t\tif(end>start){\r\n\t\t\tvar xt = source.substring(start,end).replace(/&#?\\w+;/g,entityReplacer);\r\n\t\t\tlocator&&position(start);\r\n\t\t\tdomBuilder.characters(xt,0,end-start);\r\n\t\t\tstart = end\r\n\t\t}\r\n\t}\r\n\tfunction position(p,m){\r\n\t\twhile(p>=lineEnd && (m = linePattern.exec(source))){\r\n\t\t\tlineStart = m.index;\r\n\t\t\tlineEnd = lineStart + m[0].length;\r\n\t\t\tlocator.lineNumber++;\r\n\t\t\t//console.log('line++:',locator,startPos,endPos)\r\n\t\t}\r\n\t\tlocator.columnNumber = p-lineStart+1;\r\n\t}\r\n\tvar lineStart = 0;\r\n\tvar lineEnd = 0;\r\n\tvar linePattern = /.*(?:\\r\\n?|\\n)|.*$/g\r\n\tvar locator = domBuilder.locator;\r\n\t\r\n\tvar parseStack = [{currentNSMap:defaultNSMapCopy}]\r\n\tvar closeMap = {};\r\n\tvar start = 0;\r\n\twhile(true){\r\n\t\ttry{\r\n\t\t\tvar tagStart = source.indexOf('<',start);\r\n\t\t\tif(tagStart<0){\r\n\t\t\t\tif(!source.substr(start).match(/^\\s*$/)){\r\n\t\t\t\t\tvar doc = domBuilder.doc;\r\n\t \t\t\tvar text = doc.createTextNode(source.substr(start));\r\n\t \t\t\tdoc.appendChild(text);\r\n\t \t\t\tdomBuilder.currentElement = text;\r\n\t\t\t\t}\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tif(tagStart>start){\r\n\t\t\t\tappendText(tagStart);\r\n\t\t\t}\r\n\t\t\tswitch(source.charAt(tagStart+1)){\r\n\t\t\tcase '/':\r\n\t\t\t\tvar end = source.indexOf('>',tagStart+3);\r\n\t\t\t\tvar tagName = source.substring(tagStart+2,end);\r\n\t\t\t\tvar config = parseStack.pop();\r\n\t\t\t\tif(end<0){\r\n\t\t\t\t\t\r\n\t \t\ttagName = source.substring(tagStart+2).replace(/[\\s<].*/,'');\r\n\t \t\t//console.error('#@@@@@@'+tagName)\r\n\t \t\terrorHandler.error(\"end tag name: \"+tagName+' is not complete:'+config.tagName);\r\n\t \t\tend = tagStart+1+tagName.length;\r\n\t \t}else if(tagName.match(/\\s\r\n\t\t\t\tlocator&&position(tagStart);\r\n\t\t\t\tend = parseInstruction(source,tagStart,domBuilder);\r\n\t\t\t\tbreak;\r\n\t\t\tcase '!':// start){\r\n\t\t\tstart = end;\r\n\t\t}else{\r\n\t\t\t//TODO: \u8FD9\u91CC\u6709\u53EF\u80FDsax\u56DE\u9000\uFF0C\u6709\u4F4D\u7F6E\u9519\u8BEF\u98CE\u9669\r\n\t\t\tappendText(Math.max(tagStart,start)+1);\r\n\t\t}\r\n\t}\r\n}\r\nfunction copyLocator(f,t){\r\n\tt.lineNumber = f.lineNumber;\r\n\tt.columnNumber = f.columnNumber;\r\n\treturn t;\r\n}\r\n\r\n/**\r\n * @see #appendElement(source,elStartEnd,el,selfClosed,entityReplacer,domBuilder,parseStack);\r\n * @return end of the elementStartPart(end of elementEndPart for selfClosed el)\r\n */\r\nfunction parseElementStartPart(source,start,el,currentNSMap,entityReplacer,errorHandler){\r\n\tvar attrName;\r\n\tvar value;\r\n\tvar p = ++start;\r\n\tvar s = S_TAG;//status\r\n\twhile(true){\r\n\t\tvar c = source.charAt(p);\r\n\t\tswitch(c){\r\n\t\tcase '=':\r\n\t\t\tif(s === S_ATTR){//attrName\r\n\t\t\t\tattrName = source.slice(start,p);\r\n\t\t\t\ts = S_EQ;\r\n\t\t\t}else if(s === S_ATTR_SPACE){\r\n\t\t\t\ts = S_EQ;\r\n\t\t\t}else{\r\n\t\t\t\t//fatalError: equal must after attrName or space after attrName\r\n\t\t\t\tthrow new Error('attribute equal must after attrName');\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\tcase '\\'':\r\n\t\tcase '\"':\r\n\t\t\tif(s === S_EQ || s === S_ATTR //|| s == S_ATTR_SPACE\r\n\t\t\t\t){//equal\r\n\t\t\t\tif(s === S_ATTR){\r\n\t\t\t\t\terrorHandler.warning('attribute value must after \"=\"')\r\n\t\t\t\t\tattrName = source.slice(start,p)\r\n\t\t\t\t}\r\n\t\t\t\tstart = p+1;\r\n\t\t\t\tp = source.indexOf(c,start)\r\n\t\t\t\tif(p>0){\r\n\t\t\t\t\tvalue = source.slice(start,p).replace(/&#?\\w+;/g,entityReplacer);\r\n\t\t\t\t\tel.add(attrName,value,start-1);\r\n\t\t\t\t\ts = S_ATTR_END;\r\n\t\t\t\t}else{\r\n\t\t\t\t\t//fatalError: no end quot match\r\n\t\t\t\t\tthrow new Error('attribute value no end \\''+c+'\\' match');\r\n\t\t\t\t}\r\n\t\t\t}else if(s == S_ATTR_NOQUOT_VALUE){\r\n\t\t\t\tvalue = source.slice(start,p).replace(/&#?\\w+;/g,entityReplacer);\r\n\t\t\t\t//console.log(attrName,value,start,p)\r\n\t\t\t\tel.add(attrName,value,start);\r\n\t\t\t\t//console.dir(el)\r\n\t\t\t\terrorHandler.warning('attribute \"'+attrName+'\" missed start quot('+c+')!!');\r\n\t\t\t\tstart = p+1;\r\n\t\t\t\ts = S_ATTR_END\r\n\t\t\t}else{\r\n\t\t\t\t//fatalError: no equal before\r\n\t\t\t\tthrow new Error('attribute value must after \"=\"');\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\tcase '/':\r\n\t\t\tswitch(s){\r\n\t\t\tcase S_TAG:\r\n\t\t\t\tel.setTagName(source.slice(start,p));\r\n\t\t\tcase S_ATTR_END:\r\n\t\t\tcase S_TAG_SPACE:\r\n\t\t\tcase S_TAG_CLOSE:\r\n\t\t\t\ts =S_TAG_CLOSE;\r\n\t\t\t\tel.closed = true;\r\n\t\t\tcase S_ATTR_NOQUOT_VALUE:\r\n\t\t\tcase S_ATTR:\r\n\t\t\tcase S_ATTR_SPACE:\r\n\t\t\t\tbreak;\r\n\t\t\t//case S_EQ:\r\n\t\t\tdefault:\r\n\t\t\t\tthrow new Error(\"attribute invalid close char('/')\")\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\tcase ''://end document\r\n\t\t\t//throw new Error('unexpected end of input')\r\n\t\t\terrorHandler.error('unexpected end of input');\r\n\t\t\tif(s == S_TAG){\r\n\t\t\t\tel.setTagName(source.slice(start,p));\r\n\t\t\t}\r\n\t\t\treturn p;\r\n\t\tcase '>':\r\n\t\t\tswitch(s){\r\n\t\t\tcase S_TAG:\r\n\t\t\t\tel.setTagName(source.slice(start,p));\r\n\t\t\tcase S_ATTR_END:\r\n\t\t\tcase S_TAG_SPACE:\r\n\t\t\tcase S_TAG_CLOSE:\r\n\t\t\t\tbreak;//normal\r\n\t\t\tcase S_ATTR_NOQUOT_VALUE://Compatible state\r\n\t\t\tcase S_ATTR:\r\n\t\t\t\tvalue = source.slice(start,p);\r\n\t\t\t\tif(value.slice(-1) === '/'){\r\n\t\t\t\t\tel.closed = true;\r\n\t\t\t\t\tvalue = value.slice(0,-1)\r\n\t\t\t\t}\r\n\t\t\tcase S_ATTR_SPACE:\r\n\t\t\t\tif(s === S_ATTR_SPACE){\r\n\t\t\t\t\tvalue = attrName;\r\n\t\t\t\t}\r\n\t\t\t\tif(s == S_ATTR_NOQUOT_VALUE){\r\n\t\t\t\t\terrorHandler.warning('attribute \"'+value+'\" missed quot(\")!!');\r\n\t\t\t\t\tel.add(attrName,value.replace(/&#?\\w+;/g,entityReplacer),start)\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(currentNSMap[''] !== 'http://www.w3.org/1999/xhtml' || !value.match(/^(?:disabled|checked|selected)$/i)){\r\n\t\t\t\t\t\terrorHandler.warning('attribute \"'+value+'\" missed value!! \"'+value+'\" instead!!')\r\n\t\t\t\t\t}\r\n\t\t\t\t\tel.add(value,value,start)\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase S_EQ:\r\n\t\t\t\tthrow new Error('attribute value missed!!');\r\n\t\t\t}\r\n//\t\t\tconsole.log(tagName,tagNamePattern,tagNamePattern.test(tagName))\r\n\t\t\treturn p;\r\n\t\t/*xml space '\\x20' | #x9 | #xD | #xA; */\r\n\t\tcase '\\u0080':\r\n\t\t\tc = ' ';\r\n\t\tdefault:\r\n\t\t\tif(c<= ' '){//space\r\n\t\t\t\tswitch(s){\r\n\t\t\t\tcase S_TAG:\r\n\t\t\t\t\tel.setTagName(source.slice(start,p));//tagName\r\n\t\t\t\t\ts = S_TAG_SPACE;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase S_ATTR:\r\n\t\t\t\t\tattrName = source.slice(start,p)\r\n\t\t\t\t\ts = S_ATTR_SPACE;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase S_ATTR_NOQUOT_VALUE:\r\n\t\t\t\t\tvar value = source.slice(start,p).replace(/&#?\\w+;/g,entityReplacer);\r\n\t\t\t\t\terrorHandler.warning('attribute \"'+value+'\" missed quot(\")!!');\r\n\t\t\t\t\tel.add(attrName,value,start)\r\n\t\t\t\tcase S_ATTR_END:\r\n\t\t\t\t\ts = S_TAG_SPACE;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t//case S_TAG_SPACE:\r\n\t\t\t\t//case S_EQ:\r\n\t\t\t\t//case S_ATTR_SPACE:\r\n\t\t\t\t//\tvoid();break;\r\n\t\t\t\t//case S_TAG_CLOSE:\r\n\t\t\t\t\t//ignore warning\r\n\t\t\t\t}\r\n\t\t\t}else{//not space\r\n//S_TAG,\tS_ATTR,\tS_EQ,\tS_ATTR_NOQUOT_VALUE\r\n//S_ATTR_SPACE,\tS_ATTR_END,\tS_TAG_SPACE, S_TAG_CLOSE\r\n\t\t\t\tswitch(s){\r\n\t\t\t\t//case S_TAG:void();break;\r\n\t\t\t\t//case S_ATTR:void();break;\r\n\t\t\t\t//case S_ATTR_NOQUOT_VALUE:void();break;\r\n\t\t\t\tcase S_ATTR_SPACE:\r\n\t\t\t\t\tvar tagName = el.tagName;\r\n\t\t\t\t\tif(currentNSMap[''] !== 'http://www.w3.org/1999/xhtml' || !attrName.match(/^(?:disabled|checked|selected)$/i)){\r\n\t\t\t\t\t\terrorHandler.warning('attribute \"'+attrName+'\" missed value!! \"'+attrName+'\" instead2!!')\r\n\t\t\t\t\t}\r\n\t\t\t\t\tel.add(attrName,attrName,start);\r\n\t\t\t\t\tstart = p;\r\n\t\t\t\t\ts = S_ATTR;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase S_ATTR_END:\r\n\t\t\t\t\terrorHandler.warning('attribute space is required\"'+attrName+'\"!!')\r\n\t\t\t\tcase S_TAG_SPACE:\r\n\t\t\t\t\ts = S_ATTR;\r\n\t\t\t\t\tstart = p;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase S_EQ:\r\n\t\t\t\t\ts = S_ATTR_NOQUOT_VALUE;\r\n\t\t\t\t\tstart = p;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase S_TAG_CLOSE:\r\n\t\t\t\t\tthrow new Error(\"elements closed character '/' and '>' must be connected to\");\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}//end outer switch\r\n\t\t//console.log('p++',p)\r\n\t\tp++;\r\n\t}\r\n}\r\n/**\r\n * @return true if has new namespace define\r\n */\r\nfunction appendElement(el,domBuilder,currentNSMap){\r\n\tvar tagName = el.tagName;\r\n\tvar localNSMap = null;\r\n\t//var currentNSMap = parseStack[parseStack.length-1].currentNSMap;\r\n\tvar i = el.length;\r\n\twhile(i--){\r\n\t\tvar a = el[i];\r\n\t\tvar qName = a.qName;\r\n\t\tvar value = a.value;\r\n\t\tvar nsp = qName.indexOf(':');\r\n\t\tif(nsp>0){\r\n\t\t\tvar prefix = a.prefix = qName.slice(0,nsp);\r\n\t\t\tvar localName = qName.slice(nsp+1);\r\n\t\t\tvar nsPrefix = prefix === 'xmlns' && localName\r\n\t\t}else{\r\n\t\t\tlocalName = qName;\r\n\t\t\tprefix = null\r\n\t\t\tnsPrefix = qName === 'xmlns' && ''\r\n\t\t}\r\n\t\t//can not set prefix,because prefix !== ''\r\n\t\ta.localName = localName ;\r\n\t\t//prefix == null for no ns prefix attribute \r\n\t\tif(nsPrefix !== false){//hack!!\r\n\t\t\tif(localNSMap == null){\r\n\t\t\t\tlocalNSMap = {}\r\n\t\t\t\t//console.log(currentNSMap,0)\r\n\t\t\t\t_copy(currentNSMap,currentNSMap={})\r\n\t\t\t\t//console.log(currentNSMap,1)\r\n\t\t\t}\r\n\t\t\tcurrentNSMap[nsPrefix] = localNSMap[nsPrefix] = value;\r\n\t\t\ta.uri = 'http://www.w3.org/2000/xmlns/'\r\n\t\t\tdomBuilder.startPrefixMapping(nsPrefix, value) \r\n\t\t}\r\n\t}\r\n\tvar i = el.length;\r\n\twhile(i--){\r\n\t\ta = el[i];\r\n\t\tvar prefix = a.prefix;\r\n\t\tif(prefix){//no prefix attribute has no namespace\r\n\t\t\tif(prefix === 'xml'){\r\n\t\t\t\ta.uri = 'http://www.w3.org/XML/1998/namespace';\r\n\t\t\t}if(prefix !== 'xmlns'){\r\n\t\t\t\ta.uri = currentNSMap[prefix || '']\r\n\t\t\t\t\r\n\t\t\t\t//{console.log('###'+a.qName,domBuilder.locator.systemId+'',currentNSMap,a.uri)}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\tvar nsp = tagName.indexOf(':');\r\n\tif(nsp>0){\r\n\t\tprefix = el.prefix = tagName.slice(0,nsp);\r\n\t\tlocalName = el.localName = tagName.slice(nsp+1);\r\n\t}else{\r\n\t\tprefix = null;//important!!\r\n\t\tlocalName = el.localName = tagName;\r\n\t}\r\n\t//no prefix element has default namespace\r\n\tvar ns = el.uri = currentNSMap[prefix || ''];\r\n\tdomBuilder.startElement(ns,localName,tagName,el);\r\n\t//endPrefixMapping and startPrefixMapping have not any help for dom builder\r\n\t//localNSMap = null\r\n\tif(el.closed){\r\n\t\tdomBuilder.endElement(ns,localName,tagName);\r\n\t\tif(localNSMap){\r\n\t\t\tfor(prefix in localNSMap){\r\n\t\t\t\tdomBuilder.endPrefixMapping(prefix) \r\n\t\t\t}\r\n\t\t}\r\n\t}else{\r\n\t\tel.currentNSMap = currentNSMap;\r\n\t\tel.localNSMap = localNSMap;\r\n\t\t//parseStack.push(el);\r\n\t\treturn true;\r\n\t}\r\n}\r\nfunction parseHtmlSpecialContent(source,elStartEnd,tagName,entityReplacer,domBuilder){\r\n\tif(/^(?:script|textarea)$/i.test(tagName)){\r\n\t\tvar elEndStart = source.indexOf('',elStartEnd);\r\n\t\tvar text = source.substring(elStartEnd+1,elEndStart);\r\n\t\tif(/[&<]/.test(text)){\r\n\t\t\tif(/^script$/i.test(tagName)){\r\n\t\t\t\t//if(!/\\]\\]>/.test(text)){\r\n\t\t\t\t\t//lexHandler.startCDATA();\r\n\t\t\t\t\tdomBuilder.characters(text,0,text.length);\r\n\t\t\t\t\t//lexHandler.endCDATA();\r\n\t\t\t\t\treturn elEndStart;\r\n\t\t\t\t//}\r\n\t\t\t}//}else{//text area\r\n\t\t\t\ttext = text.replace(/&#?\\w+;/g,entityReplacer);\r\n\t\t\t\tdomBuilder.characters(text,0,text.length);\r\n\t\t\t\treturn elEndStart;\r\n\t\t\t//}\r\n\t\t\t\r\n\t\t}\r\n\t}\r\n\treturn elStartEnd+1;\r\n}\r\nfunction fixSelfClosed(source,elStartEnd,tagName,closeMap){\r\n\t//if(tagName in closeMap){\r\n\tvar pos = closeMap[tagName];\r\n\tif(pos == null){\r\n\t\t//console.log(tagName)\r\n\t\tpos = source.lastIndexOf('')\r\n\t\tif(pos',start+4);\r\n\t\t\t//append comment source.substring(4,end)//\");\n\tcase DOCUMENT_TYPE_NODE:\n\t\tvar pubid = node.publicId;\n\t\tvar sysid = node.systemId;\n\t\tbuf.push('');\n\t\t}else if(sysid && sysid!='.'){\n\t\t\tbuf.push(' SYSTEM \"',sysid,'\">');\n\t\t}else{\n\t\t\tvar sub = node.internalSubset;\n\t\t\tif(sub){\n\t\t\t\tbuf.push(\" [\",sub,\"]\");\n\t\t\t}\n\t\t\tbuf.push(\">\");\n\t\t}\n\t\treturn;\n\tcase PROCESSING_INSTRUCTION_NODE:\n\t\treturn buf.push( \"\");\n\tcase ENTITY_REFERENCE_NODE:\n\t\treturn buf.push( '&',node.nodeName,';');\n\t//case ENTITY_NODE:\n\t//case NOTATION_NODE:\n\tdefault:\n\t\tbuf.push('??',node.nodeName);\n\t}\n}\nfunction importNode(doc,node,deep){\n\tvar node2;\n\tswitch (node.nodeType) {\n\tcase ELEMENT_NODE:\n\t\tnode2 = node.cloneNode(false);\n\t\tnode2.ownerDocument = doc;\n\t\t//var attrs = node2.attributes;\n\t\t//var len = attrs.length;\n\t\t//for(var i=0;i','amp':'&','quot':'\"','apos':\"'\"}\r\n\tif(locator){\r\n\t\tdomBuilder.setDocumentLocator(locator)\r\n\t}\r\n\t\r\n\tsax.errorHandler = buildErrorHandler(errorHandler,domBuilder,locator);\r\n\tsax.domBuilder = options.domBuilder || domBuilder;\r\n\tif(/\\/x?html?$/.test(mimeType)){\r\n\t\tentityMap.nbsp = '\\xa0';\r\n\t\tentityMap.copy = '\\xa9';\r\n\t\tdefaultNSMap['']= 'http://www.w3.org/1999/xhtml';\r\n\t}\r\n\tdefaultNSMap.xml = defaultNSMap.xml || 'http://www.w3.org/XML/1998/namespace';\r\n\tif(source){\r\n\t\tsax.parse(source,defaultNSMap,entityMap);\r\n\t}else{\r\n\t\tsax.errorHandler.error(\"invalid doc source\");\r\n\t}\r\n\treturn domBuilder.doc;\r\n}\r\nfunction buildErrorHandler(errorImpl,domBuilder,locator){\r\n\tif(!errorImpl){\r\n\t\tif(domBuilder instanceof DOMHandler){\r\n\t\t\treturn domBuilder;\r\n\t\t}\r\n\t\terrorImpl = domBuilder ;\r\n\t}\r\n\tvar errorHandler = {}\r\n\tvar isCallback = errorImpl instanceof Function;\r\n\tlocator = locator||{}\r\n\tfunction build(key){\r\n\t\tvar fn = errorImpl[key];\r\n\t\tif(!fn && isCallback){\r\n\t\t\tfn = errorImpl.length == 2?function(msg){errorImpl(key,msg)}:errorImpl;\r\n\t\t}\r\n\t\terrorHandler[key] = fn && function(msg){\r\n\t\t\tfn('[xmldom '+key+']\\t'+msg+_locator(locator));\r\n\t\t}||function(){};\r\n\t}\r\n\tbuild('warning');\r\n\tbuild('error');\r\n\tbuild('fatalError');\r\n\treturn errorHandler;\r\n}\r\n\r\n//console.log('#\\n\\n\\n\\n\\n\\n\\n####')\r\n/**\r\n * +ContentHandler+ErrorHandler\r\n * +LexicalHandler+EntityResolver2\r\n * -DeclHandler-DTDHandler \r\n * \r\n * DefaultHandler:EntityResolver, DTDHandler, ContentHandler, ErrorHandler\r\n * DefaultHandler2:DefaultHandler,LexicalHandler, DeclHandler, EntityResolver2\r\n * @link http://www.saxproject.org/apidoc/org/xml/sax/helpers/DefaultHandler.html\r\n */\r\nfunction DOMHandler() {\r\n this.cdata = false;\r\n}\r\nfunction position(locator,node){\r\n\tnode.lineNumber = locator.lineNumber;\r\n\tnode.columnNumber = locator.columnNumber;\r\n}\r\n/**\r\n * @see org.xml.sax.ContentHandler#startDocument\r\n * @link http://www.saxproject.org/apidoc/org/xml/sax/ContentHandler.html\r\n */ \r\nDOMHandler.prototype = {\r\n\tstartDocument : function() {\r\n \tthis.doc = new DOMImplementation().createDocument(null, null, null);\r\n \tif (this.locator) {\r\n \tthis.doc.documentURI = this.locator.systemId;\r\n \t}\r\n\t},\r\n\tstartElement:function(namespaceURI, localName, qName, attrs) {\r\n\t\tvar doc = this.doc;\r\n\t var el = doc.createElementNS(namespaceURI, qName||localName);\r\n\t var len = attrs.length;\r\n\t appendElement(this, el);\r\n\t this.currentElement = el;\r\n\t \r\n\t\tthis.locator && position(this.locator,el)\r\n\t for (var i = 0 ; i < len; i++) {\r\n\t var namespaceURI = attrs.getURI(i);\r\n\t var value = attrs.getValue(i);\r\n\t var qName = attrs.getQName(i);\r\n\t\t\tvar attr = doc.createAttributeNS(namespaceURI, qName);\r\n\t\t\tthis.locator &&position(attrs.getLocator(i),attr);\r\n\t\t\tattr.value = attr.nodeValue = value;\r\n\t\t\tel.setAttributeNode(attr)\r\n\t }\r\n\t},\r\n\tendElement:function(namespaceURI, localName, qName) {\r\n\t\tvar current = this.currentElement\r\n\t\tvar tagName = current.tagName;\r\n\t\tthis.currentElement = current.parentNode;\r\n\t},\r\n\tstartPrefixMapping:function(prefix, uri) {\r\n\t},\r\n\tendPrefixMapping:function(prefix) {\r\n\t},\r\n\tprocessingInstruction:function(target, data) {\r\n\t var ins = this.doc.createProcessingInstruction(target, data);\r\n\t this.locator && position(this.locator,ins)\r\n\t appendElement(this, ins);\r\n\t},\r\n\tignorableWhitespace:function(ch, start, length) {\r\n\t},\r\n\tcharacters:function(chars, start, length) {\r\n\t\tchars = _toString.apply(this,arguments)\r\n\t\t//console.log(chars)\r\n\t\tif(chars){\r\n\t\t\tif (this.cdata) {\r\n\t\t\t\tvar charNode = this.doc.createCDATASection(chars);\r\n\t\t\t} else {\r\n\t\t\t\tvar charNode = this.doc.createTextNode(chars);\r\n\t\t\t}\r\n\t\t\tif(this.currentElement){\r\n\t\t\t\tthis.currentElement.appendChild(charNode);\r\n\t\t\t}else if(/^\\s*$/.test(chars)){\r\n\t\t\t\tthis.doc.appendChild(charNode);\r\n\t\t\t\t//process xml\r\n\t\t\t}\r\n\t\t\tthis.locator && position(this.locator,charNode)\r\n\t\t}\r\n\t},\r\n\tskippedEntity:function(name) {\r\n\t},\r\n\tendDocument:function() {\r\n\t\tthis.doc.normalize();\r\n\t},\r\n\tsetDocumentLocator:function (locator) {\r\n\t if(this.locator = locator){// && !('lineNumber' in locator)){\r\n\t \tlocator.lineNumber = 0;\r\n\t }\r\n\t},\r\n\t//LexicalHandler\r\n\tcomment:function(chars, start, length) {\r\n\t\tchars = _toString.apply(this,arguments)\r\n\t var comm = this.doc.createComment(chars);\r\n\t this.locator && position(this.locator,comm)\r\n\t appendElement(this, comm);\r\n\t},\r\n\t\r\n\tstartCDATA:function() {\r\n\t //used in characters() methods\r\n\t this.cdata = true;\r\n\t},\r\n\tendCDATA:function() {\r\n\t this.cdata = false;\r\n\t},\r\n\t\r\n\tstartDTD:function(name, publicId, systemId) {\r\n\t\tvar impl = this.doc.implementation;\r\n\t if (impl && impl.createDocumentType) {\r\n\t var dt = impl.createDocumentType(name, publicId, systemId);\r\n\t this.locator && position(this.locator,dt)\r\n\t appendElement(this, dt);\r\n\t }\r\n\t},\r\n\t/**\r\n\t * @see org.xml.sax.ErrorHandler\r\n\t * @link http://www.saxproject.org/apidoc/org/xml/sax/ErrorHandler.html\r\n\t */\r\n\twarning:function(error) {\r\n\t\tconsole.warn('[xmldom warning]\\t'+error,_locator(this.locator));\r\n\t},\r\n\terror:function(error) {\r\n\t\tconsole.error('[xmldom error]\\t'+error,_locator(this.locator));\r\n\t},\r\n\tfatalError:function(error) {\r\n\t\tconsole.error('[xmldom fatalError]\\t'+error,_locator(this.locator));\r\n\t throw error;\r\n\t}\r\n}\r\nfunction _locator(l){\r\n\tif(l){\r\n\t\treturn '\\n@'+(l.systemId ||'')+'#[line:'+l.lineNumber+',col:'+l.columnNumber+']'\r\n\t}\r\n}\r\nfunction _toString(chars,start,length){\r\n\tif(typeof chars == 'string'){\r\n\t\treturn chars.substr(start,length)\r\n\t}else{//java sax connect width xmldom on rhino(what about: \"? && !(chars instanceof String)\")\r\n\t\tif(chars.length >= start+length || start){\r\n\t\t\treturn new java.lang.String(chars,start,length)+'';\r\n\t\t}\r\n\t\treturn chars;\r\n\t}\r\n}\r\n\r\n/*\r\n * @link http://www.saxproject.org/apidoc/org/xml/sax/ext/LexicalHandler.html\r\n * used method of org.xml.sax.ext.LexicalHandler:\r\n * #comment(chars, start, length)\r\n * #startCDATA()\r\n * #endCDATA()\r\n * #startDTD(name, publicId, systemId)\r\n *\r\n *\r\n * IGNORED method of org.xml.sax.ext.LexicalHandler:\r\n * #endDTD()\r\n * #startEntity(name)\r\n * #endEntity(name)\r\n *\r\n *\r\n * @link http://www.saxproject.org/apidoc/org/xml/sax/ext/DeclHandler.html\r\n * IGNORED method of org.xml.sax.ext.DeclHandler\r\n * \t#attributeDecl(eName, aName, type, mode, value)\r\n * #elementDecl(name, model)\r\n * #externalEntityDecl(name, publicId, systemId)\r\n * #internalEntityDecl(name, value)\r\n * @link http://www.saxproject.org/apidoc/org/xml/sax/ext/EntityResolver2.html\r\n * IGNORED method of org.xml.sax.EntityResolver2\r\n * #resolveEntity(String name,String publicId,String baseURI,String systemId)\r\n * #resolveEntity(publicId, systemId)\r\n * #getExternalSubset(name, baseURI)\r\n * @link http://www.saxproject.org/apidoc/org/xml/sax/DTDHandler.html\r\n * IGNORED method of org.xml.sax.DTDHandler\r\n * #notationDecl(name, publicId, systemId) {};\r\n * #unparsedEntityDecl(name, publicId, systemId, notationName) {};\r\n */\r\n\"endDTD,startEntity,endEntity,attributeDecl,elementDecl,externalEntityDecl,internalEntityDecl,resolveEntity,getExternalSubset,notationDecl,unparsedEntityDecl\".replace(/\\w+/g,function(key){\r\n\tDOMHandler.prototype[key] = function(){return null}\r\n})\r\n\r\n/* Private static helpers treated below as private instance methods, so don't need to add these to the public API; we might use a Relator to also get rid of non-standard public properties */\r\nfunction appendElement (hander,node) {\r\n if (!hander.currentElement) {\r\n hander.doc.appendChild(node);\r\n } else {\r\n hander.currentElement.appendChild(node);\r\n }\r\n}//appendChild and setAttributeNS are preformance key\r\n\r\n//if(typeof require == 'function'){\r\n\tvar XMLReader = require('./sax').XMLReader;\r\n\tvar DOMImplementation = exports.DOMImplementation = require('./dom').DOMImplementation;\r\n\texports.XMLSerializer = require('./dom').XMLSerializer ;\r\n\texports.DOMParser = DOMParser;\r\n//}\r\n", "/**\n * Module dependencies.\n */\n\nvar DOMParser = require('xmldom').DOMParser;\n\n/**\n * Module exports.\n */\n\nexports.parse = parse;\n\nvar TEXT_NODE = 3;\nvar CDATA_NODE = 4;\nvar COMMENT_NODE = 8;\n\n\n/**\n * We ignore raw text (usually whitespace), ,\n * and raw CDATA nodes.\n *\n * @param {Element} node\n * @returns {Boolean}\n * @api private\n */\n\nfunction shouldIgnoreNode (node) {\n return node.nodeType === TEXT_NODE\n || node.nodeType === COMMENT_NODE\n || node.nodeType === CDATA_NODE;\n}\n\n/**\n * Check if the node is empty. Some plist file has such node:\n * \n * this node shoud be ignored.\n *\n * @see https://github.com/TooTallNate/plist.js/issues/66\n * @param {Element} node\n * @returns {Boolean}\n * @api private\n */\nfunction isEmptyNode(node){\n if(!node.childNodes || node.childNodes.length === 0) {\n return true;\n } else {\n return false;\n }\n}\n\nfunction invariant(test, message) {\n if (!test) {\n throw new Error(message);\n }\n}\n\n/**\n * Parses a Plist XML string. Returns an Object.\n *\n * @param {String} xml - the XML String to decode\n * @returns {Mixed} the decoded value from the Plist XML\n * @api public\n */\n\nfunction parse (xml) {\n var doc = new DOMParser().parseFromString(xml);\n invariant(\n doc.documentElement.nodeName === 'plist',\n 'malformed document. First element should be '\n );\n var plist = parsePlistXML(doc.documentElement);\n\n // the root node gets interpreted as an Array,\n // so pull out the inner data first\n if (plist.length == 1) plist = plist[0];\n\n return plist;\n}\n\n/**\n * Convert an XML based plist document into a JSON representation.\n *\n * @param {Object} xml_node - current XML node in the plist\n * @returns {Mixed} built up JSON object\n * @api private\n */\n\nfunction parsePlistXML (node) {\n var i, new_obj, key, val, new_arr, res, counter, type;\n\n if (!node)\n return null;\n\n if (node.nodeName === 'plist') {\n new_arr = [];\n if (isEmptyNode(node)) {\n return new_arr;\n }\n for (i=0; i < node.childNodes.length; i++) {\n if (!shouldIgnoreNode(node.childNodes[i])) {\n new_arr.push( parsePlistXML(node.childNodes[i]));\n }\n }\n return new_arr;\n } else if (node.nodeName === 'dict') {\n new_obj = {};\n key = null;\n counter = 0;\n if (isEmptyNode(node)) {\n return new_obj;\n }\n for (i=0; i < node.childNodes.length; i++) {\n if (shouldIgnoreNode(node.childNodes[i])) continue;\n if (counter % 2 === 0) {\n invariant(\n node.childNodes[i].nodeName === 'key',\n 'Missing key while parsing .'\n );\n key = parsePlistXML(node.childNodes[i]);\n } else {\n invariant(\n node.childNodes[i].nodeName !== 'key',\n 'Unexpected key \"'\n + parsePlistXML(node.childNodes[i])\n + '\" while parsing .'\n );\n new_obj[key] = parsePlistXML(node.childNodes[i]);\n }\n counter += 1;\n }\n if (counter % 2 === 1) {\n throw new Error('Missing value for \"' + key + '\" while parsing ');\n }\n return new_obj;\n\n } else if (node.nodeName === 'array') {\n new_arr = [];\n if (isEmptyNode(node)) {\n return new_arr;\n }\n for (i=0; i < node.childNodes.length; i++) {\n if (!shouldIgnoreNode(node.childNodes[i])) {\n res = parsePlistXML(node.childNodes[i]);\n if (null != res) new_arr.push(res);\n }\n }\n return new_arr;\n\n } else if (node.nodeName === '#text') {\n // TODO: what should we do with text types? (CDATA sections)\n\n } else if (node.nodeName === 'key') {\n if (isEmptyNode(node)) {\n return '';\n }\n return node.childNodes[0].nodeValue;\n } else if (node.nodeName === 'string') {\n res = '';\n if (isEmptyNode(node)) {\n return res;\n }\n for (i=0; i < node.childNodes.length; i++) {\n var type = node.childNodes[i].nodeType;\n if (type === TEXT_NODE || type === CDATA_NODE) {\n res += node.childNodes[i].nodeValue;\n }\n }\n return res;\n\n } else if (node.nodeName === 'integer') {\n invariant(\n !isEmptyNode(node),\n 'Cannot parse \"\" as integer.'\n );\n return parseInt(node.childNodes[0].nodeValue, 10);\n\n } else if (node.nodeName === 'real') {\n invariant(\n !isEmptyNode(node),\n 'Cannot parse \"\" as real.'\n );\n res = '';\n for (i=0; i < node.childNodes.length; i++) {\n if (node.childNodes[i].nodeType === TEXT_NODE) {\n res += node.childNodes[i].nodeValue;\n }\n }\n return parseFloat(res);\n\n } else if (node.nodeName === 'data') {\n res = '';\n if (isEmptyNode(node)) {\n return Buffer.from(res, 'base64');\n }\n for (i=0; i < node.childNodes.length; i++) {\n if (node.childNodes[i].nodeType === TEXT_NODE) {\n res += node.childNodes[i].nodeValue.replace(/\\s+/g, '');\n }\n }\n return Buffer.from(res, 'base64');\n\n } else if (node.nodeName === 'date') {\n invariant(\n !isEmptyNode(node),\n 'Cannot parse \"\" as Date.'\n )\n return new Date(node.childNodes[0].nodeValue);\n\n } else if (node.nodeName === 'true') {\n return true;\n\n } else if (node.nodeName === 'false') {\n return false;\n }\n}\n", "'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n", "// Generated by CoffeeScript 1.12.7\n(function() {\n var assign, isArray, isEmpty, isFunction, isObject, isPlainObject,\n slice = [].slice,\n hasProp = {}.hasOwnProperty;\n\n assign = function() {\n var i, key, len, source, sources, target;\n target = arguments[0], sources = 2 <= arguments.length ? slice.call(arguments, 1) : [];\n if (isFunction(Object.assign)) {\n Object.assign.apply(null, arguments);\n } else {\n for (i = 0, len = sources.length; i < len; i++) {\n source = sources[i];\n if (source != null) {\n for (key in source) {\n if (!hasProp.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n }\n }\n return target;\n };\n\n isFunction = function(val) {\n return !!val && Object.prototype.toString.call(val) === '[object Function]';\n };\n\n isObject = function(val) {\n var ref;\n return !!val && ((ref = typeof val) === 'function' || ref === 'object');\n };\n\n isArray = function(val) {\n if (isFunction(Array.isArray)) {\n return Array.isArray(val);\n } else {\n return Object.prototype.toString.call(val) === '[object Array]';\n }\n };\n\n isEmpty = function(val) {\n var key;\n if (isArray(val)) {\n return !val.length;\n } else {\n for (key in val) {\n if (!hasProp.call(val, key)) continue;\n return false;\n }\n return true;\n }\n };\n\n isPlainObject = function(val) {\n var ctor, proto;\n return isObject(val) && (proto = Object.getPrototypeOf(val)) && (ctor = proto.constructor) && (typeof ctor === 'function') && (ctor instanceof ctor) && (Function.prototype.toString.call(ctor) === Function.prototype.toString.call(Object));\n };\n\n module.exports.assign = assign;\n\n module.exports.isFunction = isFunction;\n\n module.exports.isObject = isObject;\n\n module.exports.isArray = isArray;\n\n module.exports.isEmpty = isEmpty;\n\n module.exports.isPlainObject = isPlainObject;\n\n}).call(this);\n", "// Generated by CoffeeScript 1.12.7\n(function() {\n var XMLAttribute;\n\n module.exports = XMLAttribute = (function() {\n function XMLAttribute(parent, name, value) {\n this.options = parent.options;\n this.stringify = parent.stringify;\n if (name == null) {\n throw new Error(\"Missing attribute name of element \" + parent.name);\n }\n if (value == null) {\n throw new Error(\"Missing attribute value for attribute \" + name + \" of element \" + parent.name);\n }\n this.name = this.stringify.attName(name);\n this.value = this.stringify.attValue(value);\n }\n\n XMLAttribute.prototype.clone = function() {\n return Object.create(this);\n };\n\n XMLAttribute.prototype.toString = function(options) {\n return this.options.writer.set(options).attribute(this);\n };\n\n return XMLAttribute;\n\n })();\n\n}).call(this);\n", "// Generated by CoffeeScript 1.12.7\n(function() {\n var XMLAttribute, XMLElement, XMLNode, isFunction, isObject, ref,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n ref = require('./Utility'), isObject = ref.isObject, isFunction = ref.isFunction;\n\n XMLNode = require('./XMLNode');\n\n XMLAttribute = require('./XMLAttribute');\n\n module.exports = XMLElement = (function(superClass) {\n extend(XMLElement, superClass);\n\n function XMLElement(parent, name, attributes) {\n XMLElement.__super__.constructor.call(this, parent);\n if (name == null) {\n throw new Error(\"Missing element name\");\n }\n this.name = this.stringify.eleName(name);\n this.attributes = {};\n if (attributes != null) {\n this.attribute(attributes);\n }\n if (parent.isDocument) {\n this.isRoot = true;\n this.documentObject = parent;\n parent.rootObject = this;\n }\n }\n\n XMLElement.prototype.clone = function() {\n var att, attName, clonedSelf, ref1;\n clonedSelf = Object.create(this);\n if (clonedSelf.isRoot) {\n clonedSelf.documentObject = null;\n }\n clonedSelf.attributes = {};\n ref1 = this.attributes;\n for (attName in ref1) {\n if (!hasProp.call(ref1, attName)) continue;\n att = ref1[attName];\n clonedSelf.attributes[attName] = att.clone();\n }\n clonedSelf.children = [];\n this.children.forEach(function(child) {\n var clonedChild;\n clonedChild = child.clone();\n clonedChild.parent = clonedSelf;\n return clonedSelf.children.push(clonedChild);\n });\n return clonedSelf;\n };\n\n XMLElement.prototype.attribute = function(name, value) {\n var attName, attValue;\n if (name != null) {\n name = name.valueOf();\n }\n if (isObject(name)) {\n for (attName in name) {\n if (!hasProp.call(name, attName)) continue;\n attValue = name[attName];\n this.attribute(attName, attValue);\n }\n } else {\n if (isFunction(value)) {\n value = value.apply();\n }\n if (!this.options.skipNullAttributes || (value != null)) {\n this.attributes[name] = new XMLAttribute(this, name, value);\n }\n }\n return this;\n };\n\n XMLElement.prototype.removeAttribute = function(name) {\n var attName, i, len;\n if (name == null) {\n throw new Error(\"Missing attribute name\");\n }\n name = name.valueOf();\n if (Array.isArray(name)) {\n for (i = 0, len = name.length; i < len; i++) {\n attName = name[i];\n delete this.attributes[attName];\n }\n } else {\n delete this.attributes[name];\n }\n return this;\n };\n\n XMLElement.prototype.toString = function(options) {\n return this.options.writer.set(options).element(this);\n };\n\n XMLElement.prototype.att = function(name, value) {\n return this.attribute(name, value);\n };\n\n XMLElement.prototype.a = function(name, value) {\n return this.attribute(name, value);\n };\n\n return XMLElement;\n\n })(XMLNode);\n\n}).call(this);\n", "// Generated by CoffeeScript 1.12.7\n(function() {\n var XMLCData, XMLNode,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n XMLNode = require('./XMLNode');\n\n module.exports = XMLCData = (function(superClass) {\n extend(XMLCData, superClass);\n\n function XMLCData(parent, text) {\n XMLCData.__super__.constructor.call(this, parent);\n if (text == null) {\n throw new Error(\"Missing CDATA text\");\n }\n this.text = this.stringify.cdata(text);\n }\n\n XMLCData.prototype.clone = function() {\n return Object.create(this);\n };\n\n XMLCData.prototype.toString = function(options) {\n return this.options.writer.set(options).cdata(this);\n };\n\n return XMLCData;\n\n })(XMLNode);\n\n}).call(this);\n", "// Generated by CoffeeScript 1.12.7\n(function() {\n var XMLComment, XMLNode,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n XMLNode = require('./XMLNode');\n\n module.exports = XMLComment = (function(superClass) {\n extend(XMLComment, superClass);\n\n function XMLComment(parent, text) {\n XMLComment.__super__.constructor.call(this, parent);\n if (text == null) {\n throw new Error(\"Missing comment text\");\n }\n this.text = this.stringify.comment(text);\n }\n\n XMLComment.prototype.clone = function() {\n return Object.create(this);\n };\n\n XMLComment.prototype.toString = function(options) {\n return this.options.writer.set(options).comment(this);\n };\n\n return XMLComment;\n\n })(XMLNode);\n\n}).call(this);\n", "// Generated by CoffeeScript 1.12.7\n(function() {\n var XMLDeclaration, XMLNode, isObject,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n isObject = require('./Utility').isObject;\n\n XMLNode = require('./XMLNode');\n\n module.exports = XMLDeclaration = (function(superClass) {\n extend(XMLDeclaration, superClass);\n\n function XMLDeclaration(parent, version, encoding, standalone) {\n var ref;\n XMLDeclaration.__super__.constructor.call(this, parent);\n if (isObject(version)) {\n ref = version, version = ref.version, encoding = ref.encoding, standalone = ref.standalone;\n }\n if (!version) {\n version = '1.0';\n }\n this.version = this.stringify.xmlVersion(version);\n if (encoding != null) {\n this.encoding = this.stringify.xmlEncoding(encoding);\n }\n if (standalone != null) {\n this.standalone = this.stringify.xmlStandalone(standalone);\n }\n }\n\n XMLDeclaration.prototype.toString = function(options) {\n return this.options.writer.set(options).declaration(this);\n };\n\n return XMLDeclaration;\n\n })(XMLNode);\n\n}).call(this);\n", "// Generated by CoffeeScript 1.12.7\n(function() {\n var XMLDTDAttList, XMLNode,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n XMLNode = require('./XMLNode');\n\n module.exports = XMLDTDAttList = (function(superClass) {\n extend(XMLDTDAttList, superClass);\n\n function XMLDTDAttList(parent, elementName, attributeName, attributeType, defaultValueType, defaultValue) {\n XMLDTDAttList.__super__.constructor.call(this, parent);\n if (elementName == null) {\n throw new Error(\"Missing DTD element name\");\n }\n if (attributeName == null) {\n throw new Error(\"Missing DTD attribute name\");\n }\n if (!attributeType) {\n throw new Error(\"Missing DTD attribute type\");\n }\n if (!defaultValueType) {\n throw new Error(\"Missing DTD attribute default\");\n }\n if (defaultValueType.indexOf('#') !== 0) {\n defaultValueType = '#' + defaultValueType;\n }\n if (!defaultValueType.match(/^(#REQUIRED|#IMPLIED|#FIXED|#DEFAULT)$/)) {\n throw new Error(\"Invalid default value type; expected: #REQUIRED, #IMPLIED, #FIXED or #DEFAULT\");\n }\n if (defaultValue && !defaultValueType.match(/^(#FIXED|#DEFAULT)$/)) {\n throw new Error(\"Default value only applies to #FIXED or #DEFAULT\");\n }\n this.elementName = this.stringify.eleName(elementName);\n this.attributeName = this.stringify.attName(attributeName);\n this.attributeType = this.stringify.dtdAttType(attributeType);\n this.defaultValue = this.stringify.dtdAttDefault(defaultValue);\n this.defaultValueType = defaultValueType;\n }\n\n XMLDTDAttList.prototype.toString = function(options) {\n return this.options.writer.set(options).dtdAttList(this);\n };\n\n return XMLDTDAttList;\n\n })(XMLNode);\n\n}).call(this);\n", "// Generated by CoffeeScript 1.12.7\n(function() {\n var XMLDTDEntity, XMLNode, isObject,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n isObject = require('./Utility').isObject;\n\n XMLNode = require('./XMLNode');\n\n module.exports = XMLDTDEntity = (function(superClass) {\n extend(XMLDTDEntity, superClass);\n\n function XMLDTDEntity(parent, pe, name, value) {\n XMLDTDEntity.__super__.constructor.call(this, parent);\n if (name == null) {\n throw new Error(\"Missing entity name\");\n }\n if (value == null) {\n throw new Error(\"Missing entity value\");\n }\n this.pe = !!pe;\n this.name = this.stringify.eleName(name);\n if (!isObject(value)) {\n this.value = this.stringify.dtdEntityValue(value);\n } else {\n if (!value.pubID && !value.sysID) {\n throw new Error(\"Public and/or system identifiers are required for an external entity\");\n }\n if (value.pubID && !value.sysID) {\n throw new Error(\"System identifier is required for a public external entity\");\n }\n if (value.pubID != null) {\n this.pubID = this.stringify.dtdPubID(value.pubID);\n }\n if (value.sysID != null) {\n this.sysID = this.stringify.dtdSysID(value.sysID);\n }\n if (value.nData != null) {\n this.nData = this.stringify.dtdNData(value.nData);\n }\n if (this.pe && this.nData) {\n throw new Error(\"Notation declaration is not allowed in a parameter entity\");\n }\n }\n }\n\n XMLDTDEntity.prototype.toString = function(options) {\n return this.options.writer.set(options).dtdEntity(this);\n };\n\n return XMLDTDEntity;\n\n })(XMLNode);\n\n}).call(this);\n", "// Generated by CoffeeScript 1.12.7\n(function() {\n var XMLDTDElement, XMLNode,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n XMLNode = require('./XMLNode');\n\n module.exports = XMLDTDElement = (function(superClass) {\n extend(XMLDTDElement, superClass);\n\n function XMLDTDElement(parent, name, value) {\n XMLDTDElement.__super__.constructor.call(this, parent);\n if (name == null) {\n throw new Error(\"Missing DTD element name\");\n }\n if (!value) {\n value = '(#PCDATA)';\n }\n if (Array.isArray(value)) {\n value = '(' + value.join(',') + ')';\n }\n this.name = this.stringify.eleName(name);\n this.value = this.stringify.dtdElementValue(value);\n }\n\n XMLDTDElement.prototype.toString = function(options) {\n return this.options.writer.set(options).dtdElement(this);\n };\n\n return XMLDTDElement;\n\n })(XMLNode);\n\n}).call(this);\n", "// Generated by CoffeeScript 1.12.7\n(function() {\n var XMLDTDNotation, XMLNode,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n XMLNode = require('./XMLNode');\n\n module.exports = XMLDTDNotation = (function(superClass) {\n extend(XMLDTDNotation, superClass);\n\n function XMLDTDNotation(parent, name, value) {\n XMLDTDNotation.__super__.constructor.call(this, parent);\n if (name == null) {\n throw new Error(\"Missing notation name\");\n }\n if (!value.pubID && !value.sysID) {\n throw new Error(\"Public or system identifiers are required for an external entity\");\n }\n this.name = this.stringify.eleName(name);\n if (value.pubID != null) {\n this.pubID = this.stringify.dtdPubID(value.pubID);\n }\n if (value.sysID != null) {\n this.sysID = this.stringify.dtdSysID(value.sysID);\n }\n }\n\n XMLDTDNotation.prototype.toString = function(options) {\n return this.options.writer.set(options).dtdNotation(this);\n };\n\n return XMLDTDNotation;\n\n })(XMLNode);\n\n}).call(this);\n", "// Generated by CoffeeScript 1.12.7\n(function() {\n var XMLDTDAttList, XMLDTDElement, XMLDTDEntity, XMLDTDNotation, XMLDocType, XMLNode, isObject,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n isObject = require('./Utility').isObject;\n\n XMLNode = require('./XMLNode');\n\n XMLDTDAttList = require('./XMLDTDAttList');\n\n XMLDTDEntity = require('./XMLDTDEntity');\n\n XMLDTDElement = require('./XMLDTDElement');\n\n XMLDTDNotation = require('./XMLDTDNotation');\n\n module.exports = XMLDocType = (function(superClass) {\n extend(XMLDocType, superClass);\n\n function XMLDocType(parent, pubID, sysID) {\n var ref, ref1;\n XMLDocType.__super__.constructor.call(this, parent);\n this.documentObject = parent;\n if (isObject(pubID)) {\n ref = pubID, pubID = ref.pubID, sysID = ref.sysID;\n }\n if (sysID == null) {\n ref1 = [pubID, sysID], sysID = ref1[0], pubID = ref1[1];\n }\n if (pubID != null) {\n this.pubID = this.stringify.dtdPubID(pubID);\n }\n if (sysID != null) {\n this.sysID = this.stringify.dtdSysID(sysID);\n }\n }\n\n XMLDocType.prototype.element = function(name, value) {\n var child;\n child = new XMLDTDElement(this, name, value);\n this.children.push(child);\n return this;\n };\n\n XMLDocType.prototype.attList = function(elementName, attributeName, attributeType, defaultValueType, defaultValue) {\n var child;\n child = new XMLDTDAttList(this, elementName, attributeName, attributeType, defaultValueType, defaultValue);\n this.children.push(child);\n return this;\n };\n\n XMLDocType.prototype.entity = function(name, value) {\n var child;\n child = new XMLDTDEntity(this, false, name, value);\n this.children.push(child);\n return this;\n };\n\n XMLDocType.prototype.pEntity = function(name, value) {\n var child;\n child = new XMLDTDEntity(this, true, name, value);\n this.children.push(child);\n return this;\n };\n\n XMLDocType.prototype.notation = function(name, value) {\n var child;\n child = new XMLDTDNotation(this, name, value);\n this.children.push(child);\n return this;\n };\n\n XMLDocType.prototype.toString = function(options) {\n return this.options.writer.set(options).docType(this);\n };\n\n XMLDocType.prototype.ele = function(name, value) {\n return this.element(name, value);\n };\n\n XMLDocType.prototype.att = function(elementName, attributeName, attributeType, defaultValueType, defaultValue) {\n return this.attList(elementName, attributeName, attributeType, defaultValueType, defaultValue);\n };\n\n XMLDocType.prototype.ent = function(name, value) {\n return this.entity(name, value);\n };\n\n XMLDocType.prototype.pent = function(name, value) {\n return this.pEntity(name, value);\n };\n\n XMLDocType.prototype.not = function(name, value) {\n return this.notation(name, value);\n };\n\n XMLDocType.prototype.up = function() {\n return this.root() || this.documentObject;\n };\n\n return XMLDocType;\n\n })(XMLNode);\n\n}).call(this);\n", "// Generated by CoffeeScript 1.12.7\n(function() {\n var XMLNode, XMLRaw,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n XMLNode = require('./XMLNode');\n\n module.exports = XMLRaw = (function(superClass) {\n extend(XMLRaw, superClass);\n\n function XMLRaw(parent, text) {\n XMLRaw.__super__.constructor.call(this, parent);\n if (text == null) {\n throw new Error(\"Missing raw text\");\n }\n this.value = this.stringify.raw(text);\n }\n\n XMLRaw.prototype.clone = function() {\n return Object.create(this);\n };\n\n XMLRaw.prototype.toString = function(options) {\n return this.options.writer.set(options).raw(this);\n };\n\n return XMLRaw;\n\n })(XMLNode);\n\n}).call(this);\n", "// Generated by CoffeeScript 1.12.7\n(function() {\n var XMLNode, XMLText,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n XMLNode = require('./XMLNode');\n\n module.exports = XMLText = (function(superClass) {\n extend(XMLText, superClass);\n\n function XMLText(parent, text) {\n XMLText.__super__.constructor.call(this, parent);\n if (text == null) {\n throw new Error(\"Missing element text\");\n }\n this.value = this.stringify.eleText(text);\n }\n\n XMLText.prototype.clone = function() {\n return Object.create(this);\n };\n\n XMLText.prototype.toString = function(options) {\n return this.options.writer.set(options).text(this);\n };\n\n return XMLText;\n\n })(XMLNode);\n\n}).call(this);\n", "// Generated by CoffeeScript 1.12.7\n(function() {\n var XMLNode, XMLProcessingInstruction,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n XMLNode = require('./XMLNode');\n\n module.exports = XMLProcessingInstruction = (function(superClass) {\n extend(XMLProcessingInstruction, superClass);\n\n function XMLProcessingInstruction(parent, target, value) {\n XMLProcessingInstruction.__super__.constructor.call(this, parent);\n if (target == null) {\n throw new Error(\"Missing instruction target\");\n }\n this.target = this.stringify.insTarget(target);\n if (value) {\n this.value = this.stringify.insValue(value);\n }\n }\n\n XMLProcessingInstruction.prototype.clone = function() {\n return Object.create(this);\n };\n\n XMLProcessingInstruction.prototype.toString = function(options) {\n return this.options.writer.set(options).processingInstruction(this);\n };\n\n return XMLProcessingInstruction;\n\n })(XMLNode);\n\n}).call(this);\n", "// Generated by CoffeeScript 1.12.7\n(function() {\n var XMLCData, XMLComment, XMLDeclaration, XMLDocType, XMLElement, XMLNode, XMLProcessingInstruction, XMLRaw, XMLText, isEmpty, isFunction, isObject, ref,\n hasProp = {}.hasOwnProperty;\n\n ref = require('./Utility'), isObject = ref.isObject, isFunction = ref.isFunction, isEmpty = ref.isEmpty;\n\n XMLElement = null;\n\n XMLCData = null;\n\n XMLComment = null;\n\n XMLDeclaration = null;\n\n XMLDocType = null;\n\n XMLRaw = null;\n\n XMLText = null;\n\n XMLProcessingInstruction = null;\n\n module.exports = XMLNode = (function() {\n function XMLNode(parent) {\n this.parent = parent;\n if (this.parent) {\n this.options = this.parent.options;\n this.stringify = this.parent.stringify;\n }\n this.children = [];\n if (!XMLElement) {\n XMLElement = require('./XMLElement');\n XMLCData = require('./XMLCData');\n XMLComment = require('./XMLComment');\n XMLDeclaration = require('./XMLDeclaration');\n XMLDocType = require('./XMLDocType');\n XMLRaw = require('./XMLRaw');\n XMLText = require('./XMLText');\n XMLProcessingInstruction = require('./XMLProcessingInstruction');\n }\n }\n\n XMLNode.prototype.element = function(name, attributes, text) {\n var childNode, item, j, k, key, lastChild, len, len1, ref1, val;\n lastChild = null;\n if (attributes == null) {\n attributes = {};\n }\n attributes = attributes.valueOf();\n if (!isObject(attributes)) {\n ref1 = [attributes, text], text = ref1[0], attributes = ref1[1];\n }\n if (name != null) {\n name = name.valueOf();\n }\n if (Array.isArray(name)) {\n for (j = 0, len = name.length; j < len; j++) {\n item = name[j];\n lastChild = this.element(item);\n }\n } else if (isFunction(name)) {\n lastChild = this.element(name.apply());\n } else if (isObject(name)) {\n for (key in name) {\n if (!hasProp.call(name, key)) continue;\n val = name[key];\n if (isFunction(val)) {\n val = val.apply();\n }\n if ((isObject(val)) && (isEmpty(val))) {\n val = null;\n }\n if (!this.options.ignoreDecorators && this.stringify.convertAttKey && key.indexOf(this.stringify.convertAttKey) === 0) {\n lastChild = this.attribute(key.substr(this.stringify.convertAttKey.length), val);\n } else if (!this.options.separateArrayItems && Array.isArray(val)) {\n for (k = 0, len1 = val.length; k < len1; k++) {\n item = val[k];\n childNode = {};\n childNode[key] = item;\n lastChild = this.element(childNode);\n }\n } else if (isObject(val)) {\n lastChild = this.element(key);\n lastChild.element(val);\n } else {\n lastChild = this.element(key, val);\n }\n }\n } else {\n if (!this.options.ignoreDecorators && this.stringify.convertTextKey && name.indexOf(this.stringify.convertTextKey) === 0) {\n lastChild = this.text(text);\n } else if (!this.options.ignoreDecorators && this.stringify.convertCDataKey && name.indexOf(this.stringify.convertCDataKey) === 0) {\n lastChild = this.cdata(text);\n } else if (!this.options.ignoreDecorators && this.stringify.convertCommentKey && name.indexOf(this.stringify.convertCommentKey) === 0) {\n lastChild = this.comment(text);\n } else if (!this.options.ignoreDecorators && this.stringify.convertRawKey && name.indexOf(this.stringify.convertRawKey) === 0) {\n lastChild = this.raw(text);\n } else if (!this.options.ignoreDecorators && this.stringify.convertPIKey && name.indexOf(this.stringify.convertPIKey) === 0) {\n lastChild = this.instruction(name.substr(this.stringify.convertPIKey.length), text);\n } else {\n lastChild = this.node(name, attributes, text);\n }\n }\n if (lastChild == null) {\n throw new Error(\"Could not create any elements with: \" + name);\n }\n return lastChild;\n };\n\n XMLNode.prototype.insertBefore = function(name, attributes, text) {\n var child, i, removed;\n if (this.isRoot) {\n throw new Error(\"Cannot insert elements at root level\");\n }\n i = this.parent.children.indexOf(this);\n removed = this.parent.children.splice(i);\n child = this.parent.element(name, attributes, text);\n Array.prototype.push.apply(this.parent.children, removed);\n return child;\n };\n\n XMLNode.prototype.insertAfter = function(name, attributes, text) {\n var child, i, removed;\n if (this.isRoot) {\n throw new Error(\"Cannot insert elements at root level\");\n }\n i = this.parent.children.indexOf(this);\n removed = this.parent.children.splice(i + 1);\n child = this.parent.element(name, attributes, text);\n Array.prototype.push.apply(this.parent.children, removed);\n return child;\n };\n\n XMLNode.prototype.remove = function() {\n var i, ref1;\n if (this.isRoot) {\n throw new Error(\"Cannot remove the root element\");\n }\n i = this.parent.children.indexOf(this);\n [].splice.apply(this.parent.children, [i, i - i + 1].concat(ref1 = [])), ref1;\n return this.parent;\n };\n\n XMLNode.prototype.node = function(name, attributes, text) {\n var child, ref1;\n if (name != null) {\n name = name.valueOf();\n }\n attributes || (attributes = {});\n attributes = attributes.valueOf();\n if (!isObject(attributes)) {\n ref1 = [attributes, text], text = ref1[0], attributes = ref1[1];\n }\n child = new XMLElement(this, name, attributes);\n if (text != null) {\n child.text(text);\n }\n this.children.push(child);\n return child;\n };\n\n XMLNode.prototype.text = function(value) {\n var child;\n child = new XMLText(this, value);\n this.children.push(child);\n return this;\n };\n\n XMLNode.prototype.cdata = function(value) {\n var child;\n child = new XMLCData(this, value);\n this.children.push(child);\n return this;\n };\n\n XMLNode.prototype.comment = function(value) {\n var child;\n child = new XMLComment(this, value);\n this.children.push(child);\n return this;\n };\n\n XMLNode.prototype.commentBefore = function(value) {\n var child, i, removed;\n i = this.parent.children.indexOf(this);\n removed = this.parent.children.splice(i);\n child = this.parent.comment(value);\n Array.prototype.push.apply(this.parent.children, removed);\n return this;\n };\n\n XMLNode.prototype.commentAfter = function(value) {\n var child, i, removed;\n i = this.parent.children.indexOf(this);\n removed = this.parent.children.splice(i + 1);\n child = this.parent.comment(value);\n Array.prototype.push.apply(this.parent.children, removed);\n return this;\n };\n\n XMLNode.prototype.raw = function(value) {\n var child;\n child = new XMLRaw(this, value);\n this.children.push(child);\n return this;\n };\n\n XMLNode.prototype.instruction = function(target, value) {\n var insTarget, insValue, instruction, j, len;\n if (target != null) {\n target = target.valueOf();\n }\n if (value != null) {\n value = value.valueOf();\n }\n if (Array.isArray(target)) {\n for (j = 0, len = target.length; j < len; j++) {\n insTarget = target[j];\n this.instruction(insTarget);\n }\n } else if (isObject(target)) {\n for (insTarget in target) {\n if (!hasProp.call(target, insTarget)) continue;\n insValue = target[insTarget];\n this.instruction(insTarget, insValue);\n }\n } else {\n if (isFunction(value)) {\n value = value.apply();\n }\n instruction = new XMLProcessingInstruction(this, target, value);\n this.children.push(instruction);\n }\n return this;\n };\n\n XMLNode.prototype.instructionBefore = function(target, value) {\n var child, i, removed;\n i = this.parent.children.indexOf(this);\n removed = this.parent.children.splice(i);\n child = this.parent.instruction(target, value);\n Array.prototype.push.apply(this.parent.children, removed);\n return this;\n };\n\n XMLNode.prototype.instructionAfter = function(target, value) {\n var child, i, removed;\n i = this.parent.children.indexOf(this);\n removed = this.parent.children.splice(i + 1);\n child = this.parent.instruction(target, value);\n Array.prototype.push.apply(this.parent.children, removed);\n return this;\n };\n\n XMLNode.prototype.declaration = function(version, encoding, standalone) {\n var doc, xmldec;\n doc = this.document();\n xmldec = new XMLDeclaration(doc, version, encoding, standalone);\n if (doc.children[0] instanceof XMLDeclaration) {\n doc.children[0] = xmldec;\n } else {\n doc.children.unshift(xmldec);\n }\n return doc.root() || doc;\n };\n\n XMLNode.prototype.doctype = function(pubID, sysID) {\n var child, doc, doctype, i, j, k, len, len1, ref1, ref2;\n doc = this.document();\n doctype = new XMLDocType(doc, pubID, sysID);\n ref1 = doc.children;\n for (i = j = 0, len = ref1.length; j < len; i = ++j) {\n child = ref1[i];\n if (child instanceof XMLDocType) {\n doc.children[i] = doctype;\n return doctype;\n }\n }\n ref2 = doc.children;\n for (i = k = 0, len1 = ref2.length; k < len1; i = ++k) {\n child = ref2[i];\n if (child.isRoot) {\n doc.children.splice(i, 0, doctype);\n return doctype;\n }\n }\n doc.children.push(doctype);\n return doctype;\n };\n\n XMLNode.prototype.up = function() {\n if (this.isRoot) {\n throw new Error(\"The root node has no parent. Use doc() if you need to get the document object.\");\n }\n return this.parent;\n };\n\n XMLNode.prototype.root = function() {\n var node;\n node = this;\n while (node) {\n if (node.isDocument) {\n return node.rootObject;\n } else if (node.isRoot) {\n return node;\n } else {\n node = node.parent;\n }\n }\n };\n\n XMLNode.prototype.document = function() {\n var node;\n node = this;\n while (node) {\n if (node.isDocument) {\n return node;\n } else {\n node = node.parent;\n }\n }\n };\n\n XMLNode.prototype.end = function(options) {\n return this.document().end(options);\n };\n\n XMLNode.prototype.prev = function() {\n var i;\n i = this.parent.children.indexOf(this);\n if (i < 1) {\n throw new Error(\"Already at the first node\");\n }\n return this.parent.children[i - 1];\n };\n\n XMLNode.prototype.next = function() {\n var i;\n i = this.parent.children.indexOf(this);\n if (i === -1 || i === this.parent.children.length - 1) {\n throw new Error(\"Already at the last node\");\n }\n return this.parent.children[i + 1];\n };\n\n XMLNode.prototype.importDocument = function(doc) {\n var clonedRoot;\n clonedRoot = doc.root().clone();\n clonedRoot.parent = this;\n clonedRoot.isRoot = false;\n this.children.push(clonedRoot);\n return this;\n };\n\n XMLNode.prototype.ele = function(name, attributes, text) {\n return this.element(name, attributes, text);\n };\n\n XMLNode.prototype.nod = function(name, attributes, text) {\n return this.node(name, attributes, text);\n };\n\n XMLNode.prototype.txt = function(value) {\n return this.text(value);\n };\n\n XMLNode.prototype.dat = function(value) {\n return this.cdata(value);\n };\n\n XMLNode.prototype.com = function(value) {\n return this.comment(value);\n };\n\n XMLNode.prototype.ins = function(target, value) {\n return this.instruction(target, value);\n };\n\n XMLNode.prototype.doc = function() {\n return this.document();\n };\n\n XMLNode.prototype.dec = function(version, encoding, standalone) {\n return this.declaration(version, encoding, standalone);\n };\n\n XMLNode.prototype.dtd = function(pubID, sysID) {\n return this.doctype(pubID, sysID);\n };\n\n XMLNode.prototype.e = function(name, attributes, text) {\n return this.element(name, attributes, text);\n };\n\n XMLNode.prototype.n = function(name, attributes, text) {\n return this.node(name, attributes, text);\n };\n\n XMLNode.prototype.t = function(value) {\n return this.text(value);\n };\n\n XMLNode.prototype.d = function(value) {\n return this.cdata(value);\n };\n\n XMLNode.prototype.c = function(value) {\n return this.comment(value);\n };\n\n XMLNode.prototype.r = function(value) {\n return this.raw(value);\n };\n\n XMLNode.prototype.i = function(target, value) {\n return this.instruction(target, value);\n };\n\n XMLNode.prototype.u = function() {\n return this.up();\n };\n\n XMLNode.prototype.importXMLBuilder = function(doc) {\n return this.importDocument(doc);\n };\n\n return XMLNode;\n\n })();\n\n}).call(this);\n", "// Generated by CoffeeScript 1.12.7\n(function() {\n var XMLStringifier,\n bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; },\n hasProp = {}.hasOwnProperty;\n\n module.exports = XMLStringifier = (function() {\n function XMLStringifier(options) {\n this.assertLegalChar = bind(this.assertLegalChar, this);\n var key, ref, value;\n options || (options = {});\n this.noDoubleEncoding = options.noDoubleEncoding;\n ref = options.stringify || {};\n for (key in ref) {\n if (!hasProp.call(ref, key)) continue;\n value = ref[key];\n this[key] = value;\n }\n }\n\n XMLStringifier.prototype.eleName = function(val) {\n val = '' + val || '';\n return this.assertLegalChar(val);\n };\n\n XMLStringifier.prototype.eleText = function(val) {\n val = '' + val || '';\n return this.assertLegalChar(this.elEscape(val));\n };\n\n XMLStringifier.prototype.cdata = function(val) {\n val = '' + val || '';\n val = val.replace(']]>', ']]]]>');\n return this.assertLegalChar(val);\n };\n\n XMLStringifier.prototype.comment = function(val) {\n val = '' + val || '';\n if (val.match(/--/)) {\n throw new Error(\"Comment text cannot contain double-hypen: \" + val);\n }\n return this.assertLegalChar(val);\n };\n\n XMLStringifier.prototype.raw = function(val) {\n return '' + val || '';\n };\n\n XMLStringifier.prototype.attName = function(val) {\n return val = '' + val || '';\n };\n\n XMLStringifier.prototype.attValue = function(val) {\n val = '' + val || '';\n return this.attEscape(val);\n };\n\n XMLStringifier.prototype.insTarget = function(val) {\n return '' + val || '';\n };\n\n XMLStringifier.prototype.insValue = function(val) {\n val = '' + val || '';\n if (val.match(/\\?>/)) {\n throw new Error(\"Invalid processing instruction value: \" + val);\n }\n return val;\n };\n\n XMLStringifier.prototype.xmlVersion = function(val) {\n val = '' + val || '';\n if (!val.match(/1\\.[0-9]+/)) {\n throw new Error(\"Invalid version number: \" + val);\n }\n return val;\n };\n\n XMLStringifier.prototype.xmlEncoding = function(val) {\n val = '' + val || '';\n if (!val.match(/^[A-Za-z](?:[A-Za-z0-9._-])*$/)) {\n throw new Error(\"Invalid encoding: \" + val);\n }\n return val;\n };\n\n XMLStringifier.prototype.xmlStandalone = function(val) {\n if (val) {\n return \"yes\";\n } else {\n return \"no\";\n }\n };\n\n XMLStringifier.prototype.dtdPubID = function(val) {\n return '' + val || '';\n };\n\n XMLStringifier.prototype.dtdSysID = function(val) {\n return '' + val || '';\n };\n\n XMLStringifier.prototype.dtdElementValue = function(val) {\n return '' + val || '';\n };\n\n XMLStringifier.prototype.dtdAttType = function(val) {\n return '' + val || '';\n };\n\n XMLStringifier.prototype.dtdAttDefault = function(val) {\n if (val != null) {\n return '' + val || '';\n } else {\n return val;\n }\n };\n\n XMLStringifier.prototype.dtdEntityValue = function(val) {\n return '' + val || '';\n };\n\n XMLStringifier.prototype.dtdNData = function(val) {\n return '' + val || '';\n };\n\n XMLStringifier.prototype.convertAttKey = '@';\n\n XMLStringifier.prototype.convertPIKey = '?';\n\n XMLStringifier.prototype.convertTextKey = '#text';\n\n XMLStringifier.prototype.convertCDataKey = '#cdata';\n\n XMLStringifier.prototype.convertCommentKey = '#comment';\n\n XMLStringifier.prototype.convertRawKey = '#raw';\n\n XMLStringifier.prototype.assertLegalChar = function(str) {\n var res;\n res = str.match(/[\\0\\uFFFE\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF]/);\n if (res) {\n throw new Error(\"Invalid character in string: \" + str + \" at index \" + res.index);\n }\n return str;\n };\n\n XMLStringifier.prototype.elEscape = function(str) {\n var ampregex;\n ampregex = this.noDoubleEncoding ? /(?!&\\S+;)&/g : /&/g;\n return str.replace(ampregex, '&').replace(//g, '>').replace(/\\r/g, ' ');\n };\n\n XMLStringifier.prototype.attEscape = function(str) {\n var ampregex;\n ampregex = this.noDoubleEncoding ? /(?!&\\S+;)&/g : /&/g;\n return str.replace(ampregex, '&').replace(/ 0) {\n return new Array(indent).join(this.indent);\n } else {\n return '';\n }\n } else {\n return '';\n }\n };\n\n return XMLWriterBase;\n\n })();\n\n}).call(this);\n", "// Generated by CoffeeScript 1.12.7\n(function() {\n var XMLCData, XMLComment, XMLDTDAttList, XMLDTDElement, XMLDTDEntity, XMLDTDNotation, XMLDeclaration, XMLDocType, XMLElement, XMLProcessingInstruction, XMLRaw, XMLStringWriter, XMLText, XMLWriterBase,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n XMLDeclaration = require('./XMLDeclaration');\n\n XMLDocType = require('./XMLDocType');\n\n XMLCData = require('./XMLCData');\n\n XMLComment = require('./XMLComment');\n\n XMLElement = require('./XMLElement');\n\n XMLRaw = require('./XMLRaw');\n\n XMLText = require('./XMLText');\n\n XMLProcessingInstruction = require('./XMLProcessingInstruction');\n\n XMLDTDAttList = require('./XMLDTDAttList');\n\n XMLDTDElement = require('./XMLDTDElement');\n\n XMLDTDEntity = require('./XMLDTDEntity');\n\n XMLDTDNotation = require('./XMLDTDNotation');\n\n XMLWriterBase = require('./XMLWriterBase');\n\n module.exports = XMLStringWriter = (function(superClass) {\n extend(XMLStringWriter, superClass);\n\n function XMLStringWriter(options) {\n XMLStringWriter.__super__.constructor.call(this, options);\n }\n\n XMLStringWriter.prototype.document = function(doc) {\n var child, i, len, r, ref;\n this.textispresent = false;\n r = '';\n ref = doc.children;\n for (i = 0, len = ref.length; i < len; i++) {\n child = ref[i];\n r += (function() {\n switch (false) {\n case !(child instanceof XMLDeclaration):\n return this.declaration(child);\n case !(child instanceof XMLDocType):\n return this.docType(child);\n case !(child instanceof XMLComment):\n return this.comment(child);\n case !(child instanceof XMLProcessingInstruction):\n return this.processingInstruction(child);\n default:\n return this.element(child, 0);\n }\n }).call(this);\n }\n if (this.pretty && r.slice(-this.newline.length) === this.newline) {\n r = r.slice(0, -this.newline.length);\n }\n return r;\n };\n\n XMLStringWriter.prototype.attribute = function(att) {\n return ' ' + att.name + '=\"' + att.value + '\"';\n };\n\n XMLStringWriter.prototype.cdata = function(node, level) {\n return this.space(level) + '' + this.newline;\n };\n\n XMLStringWriter.prototype.comment = function(node, level) {\n return this.space(level) + '' + this.newline;\n };\n\n XMLStringWriter.prototype.declaration = function(node, level) {\n var r;\n r = this.space(level);\n r += '';\n r += this.newline;\n return r;\n };\n\n XMLStringWriter.prototype.docType = function(node, level) {\n var child, i, len, r, ref;\n level || (level = 0);\n r = this.space(level);\n r += ' 0) {\n r += ' [';\n r += this.newline;\n ref = node.children;\n for (i = 0, len = ref.length; i < len; i++) {\n child = ref[i];\n r += (function() {\n switch (false) {\n case !(child instanceof XMLDTDAttList):\n return this.dtdAttList(child, level + 1);\n case !(child instanceof XMLDTDElement):\n return this.dtdElement(child, level + 1);\n case !(child instanceof XMLDTDEntity):\n return this.dtdEntity(child, level + 1);\n case !(child instanceof XMLDTDNotation):\n return this.dtdNotation(child, level + 1);\n case !(child instanceof XMLCData):\n return this.cdata(child, level + 1);\n case !(child instanceof XMLComment):\n return this.comment(child, level + 1);\n case !(child instanceof XMLProcessingInstruction):\n return this.processingInstruction(child, level + 1);\n default:\n throw new Error(\"Unknown DTD node type: \" + child.constructor.name);\n }\n }).call(this);\n }\n r += ']';\n }\n r += this.spacebeforeslash + '>';\n r += this.newline;\n return r;\n };\n\n XMLStringWriter.prototype.element = function(node, level) {\n var att, child, i, j, len, len1, name, r, ref, ref1, ref2, space, textispresentwasset;\n level || (level = 0);\n textispresentwasset = false;\n if (this.textispresent) {\n this.newline = '';\n this.pretty = false;\n } else {\n this.newline = this.newlinedefault;\n this.pretty = this.prettydefault;\n }\n space = this.space(level);\n r = '';\n r += space + '<' + node.name;\n ref = node.attributes;\n for (name in ref) {\n if (!hasProp.call(ref, name)) continue;\n att = ref[name];\n r += this.attribute(att);\n }\n if (node.children.length === 0 || node.children.every(function(e) {\n return e.value === '';\n })) {\n if (this.allowEmpty) {\n r += '>' + this.newline;\n } else {\n r += this.spacebeforeslash + '/>' + this.newline;\n }\n } else if (this.pretty && node.children.length === 1 && (node.children[0].value != null)) {\n r += '>';\n r += node.children[0].value;\n r += '' + this.newline;\n } else {\n if (this.dontprettytextnodes) {\n ref1 = node.children;\n for (i = 0, len = ref1.length; i < len; i++) {\n child = ref1[i];\n if (child.value != null) {\n this.textispresent++;\n textispresentwasset = true;\n break;\n }\n }\n }\n if (this.textispresent) {\n this.newline = '';\n this.pretty = false;\n space = this.space(level);\n }\n r += '>' + this.newline;\n ref2 = node.children;\n for (j = 0, len1 = ref2.length; j < len1; j++) {\n child = ref2[j];\n r += (function() {\n switch (false) {\n case !(child instanceof XMLCData):\n return this.cdata(child, level + 1);\n case !(child instanceof XMLComment):\n return this.comment(child, level + 1);\n case !(child instanceof XMLElement):\n return this.element(child, level + 1);\n case !(child instanceof XMLRaw):\n return this.raw(child, level + 1);\n case !(child instanceof XMLText):\n return this.text(child, level + 1);\n case !(child instanceof XMLProcessingInstruction):\n return this.processingInstruction(child, level + 1);\n default:\n throw new Error(\"Unknown XML node type: \" + child.constructor.name);\n }\n }).call(this);\n }\n if (textispresentwasset) {\n this.textispresent--;\n }\n if (!this.textispresent) {\n this.newline = this.newlinedefault;\n this.pretty = this.prettydefault;\n }\n r += space + '' + this.newline;\n }\n return r;\n };\n\n XMLStringWriter.prototype.processingInstruction = function(node, level) {\n var r;\n r = this.space(level) + '' + this.newline;\n return r;\n };\n\n XMLStringWriter.prototype.raw = function(node, level) {\n return this.space(level) + node.value + this.newline;\n };\n\n XMLStringWriter.prototype.text = function(node, level) {\n return this.space(level) + node.value + this.newline;\n };\n\n XMLStringWriter.prototype.dtdAttList = function(node, level) {\n var r;\n r = this.space(level) + '' + this.newline;\n return r;\n };\n\n XMLStringWriter.prototype.dtdElement = function(node, level) {\n return this.space(level) + '' + this.newline;\n };\n\n XMLStringWriter.prototype.dtdEntity = function(node, level) {\n var r;\n r = this.space(level) + '' + this.newline;\n return r;\n };\n\n XMLStringWriter.prototype.dtdNotation = function(node, level) {\n var r;\n r = this.space(level) + '' + this.newline;\n return r;\n };\n\n XMLStringWriter.prototype.openNode = function(node, level) {\n var att, name, r, ref;\n level || (level = 0);\n if (node instanceof XMLElement) {\n r = this.space(level) + '<' + node.name;\n ref = node.attributes;\n for (name in ref) {\n if (!hasProp.call(ref, name)) continue;\n att = ref[name];\n r += this.attribute(att);\n }\n r += (node.children ? '>' : '/>') + this.newline;\n return r;\n } else {\n r = this.space(level) + '') + this.newline;\n return r;\n }\n };\n\n XMLStringWriter.prototype.closeNode = function(node, level) {\n level || (level = 0);\n switch (false) {\n case !(node instanceof XMLElement):\n return this.space(level) + '' + this.newline;\n case !(node instanceof XMLDocType):\n return this.space(level) + ']>' + this.newline;\n }\n };\n\n return XMLStringWriter;\n\n })(XMLWriterBase);\n\n}).call(this);\n", "// Generated by CoffeeScript 1.12.7\n(function() {\n var XMLDocument, XMLNode, XMLStringWriter, XMLStringifier, isPlainObject,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n isPlainObject = require('./Utility').isPlainObject;\n\n XMLNode = require('./XMLNode');\n\n XMLStringifier = require('./XMLStringifier');\n\n XMLStringWriter = require('./XMLStringWriter');\n\n module.exports = XMLDocument = (function(superClass) {\n extend(XMLDocument, superClass);\n\n function XMLDocument(options) {\n XMLDocument.__super__.constructor.call(this, null);\n options || (options = {});\n if (!options.writer) {\n options.writer = new XMLStringWriter();\n }\n this.options = options;\n this.stringify = new XMLStringifier(options);\n this.isDocument = true;\n }\n\n XMLDocument.prototype.end = function(writer) {\n var writerOptions;\n if (!writer) {\n writer = this.options.writer;\n } else if (isPlainObject(writer)) {\n writerOptions = writer;\n writer = this.options.writer.set(writerOptions);\n }\n return writer.document(this);\n };\n\n XMLDocument.prototype.toString = function(options) {\n return this.options.writer.set(options).document(this);\n };\n\n return XMLDocument;\n\n })(XMLNode);\n\n}).call(this);\n", "// Generated by CoffeeScript 1.12.7\n(function() {\n var XMLAttribute, XMLCData, XMLComment, XMLDTDAttList, XMLDTDElement, XMLDTDEntity, XMLDTDNotation, XMLDeclaration, XMLDocType, XMLDocumentCB, XMLElement, XMLProcessingInstruction, XMLRaw, XMLStringWriter, XMLStringifier, XMLText, isFunction, isObject, isPlainObject, ref,\n hasProp = {}.hasOwnProperty;\n\n ref = require('./Utility'), isObject = ref.isObject, isFunction = ref.isFunction, isPlainObject = ref.isPlainObject;\n\n XMLElement = require('./XMLElement');\n\n XMLCData = require('./XMLCData');\n\n XMLComment = require('./XMLComment');\n\n XMLRaw = require('./XMLRaw');\n\n XMLText = require('./XMLText');\n\n XMLProcessingInstruction = require('./XMLProcessingInstruction');\n\n XMLDeclaration = require('./XMLDeclaration');\n\n XMLDocType = require('./XMLDocType');\n\n XMLDTDAttList = require('./XMLDTDAttList');\n\n XMLDTDEntity = require('./XMLDTDEntity');\n\n XMLDTDElement = require('./XMLDTDElement');\n\n XMLDTDNotation = require('./XMLDTDNotation');\n\n XMLAttribute = require('./XMLAttribute');\n\n XMLStringifier = require('./XMLStringifier');\n\n XMLStringWriter = require('./XMLStringWriter');\n\n module.exports = XMLDocumentCB = (function() {\n function XMLDocumentCB(options, onData, onEnd) {\n var writerOptions;\n options || (options = {});\n if (!options.writer) {\n options.writer = new XMLStringWriter(options);\n } else if (isPlainObject(options.writer)) {\n writerOptions = options.writer;\n options.writer = new XMLStringWriter(writerOptions);\n }\n this.options = options;\n this.writer = options.writer;\n this.stringify = new XMLStringifier(options);\n this.onDataCallback = onData || function() {};\n this.onEndCallback = onEnd || function() {};\n this.currentNode = null;\n this.currentLevel = -1;\n this.openTags = {};\n this.documentStarted = false;\n this.documentCompleted = false;\n this.root = null;\n }\n\n XMLDocumentCB.prototype.node = function(name, attributes, text) {\n var ref1;\n if (name == null) {\n throw new Error(\"Missing node name\");\n }\n if (this.root && this.currentLevel === -1) {\n throw new Error(\"Document can only have one root node\");\n }\n this.openCurrent();\n name = name.valueOf();\n if (attributes == null) {\n attributes = {};\n }\n attributes = attributes.valueOf();\n if (!isObject(attributes)) {\n ref1 = [attributes, text], text = ref1[0], attributes = ref1[1];\n }\n this.currentNode = new XMLElement(this, name, attributes);\n this.currentNode.children = false;\n this.currentLevel++;\n this.openTags[this.currentLevel] = this.currentNode;\n if (text != null) {\n this.text(text);\n }\n return this;\n };\n\n XMLDocumentCB.prototype.element = function(name, attributes, text) {\n if (this.currentNode && this.currentNode instanceof XMLDocType) {\n return this.dtdElement.apply(this, arguments);\n } else {\n return this.node(name, attributes, text);\n }\n };\n\n XMLDocumentCB.prototype.attribute = function(name, value) {\n var attName, attValue;\n if (!this.currentNode || this.currentNode.children) {\n throw new Error(\"att() can only be used immediately after an ele() call in callback mode\");\n }\n if (name != null) {\n name = name.valueOf();\n }\n if (isObject(name)) {\n for (attName in name) {\n if (!hasProp.call(name, attName)) continue;\n attValue = name[attName];\n this.attribute(attName, attValue);\n }\n } else {\n if (isFunction(value)) {\n value = value.apply();\n }\n if (!this.options.skipNullAttributes || (value != null)) {\n this.currentNode.attributes[name] = new XMLAttribute(this, name, value);\n }\n }\n return this;\n };\n\n XMLDocumentCB.prototype.text = function(value) {\n var node;\n this.openCurrent();\n node = new XMLText(this, value);\n this.onData(this.writer.text(node, this.currentLevel + 1));\n return this;\n };\n\n XMLDocumentCB.prototype.cdata = function(value) {\n var node;\n this.openCurrent();\n node = new XMLCData(this, value);\n this.onData(this.writer.cdata(node, this.currentLevel + 1));\n return this;\n };\n\n XMLDocumentCB.prototype.comment = function(value) {\n var node;\n this.openCurrent();\n node = new XMLComment(this, value);\n this.onData(this.writer.comment(node, this.currentLevel + 1));\n return this;\n };\n\n XMLDocumentCB.prototype.raw = function(value) {\n var node;\n this.openCurrent();\n node = new XMLRaw(this, value);\n this.onData(this.writer.raw(node, this.currentLevel + 1));\n return this;\n };\n\n XMLDocumentCB.prototype.instruction = function(target, value) {\n var i, insTarget, insValue, len, node;\n this.openCurrent();\n if (target != null) {\n target = target.valueOf();\n }\n if (value != null) {\n value = value.valueOf();\n }\n if (Array.isArray(target)) {\n for (i = 0, len = target.length; i < len; i++) {\n insTarget = target[i];\n this.instruction(insTarget);\n }\n } else if (isObject(target)) {\n for (insTarget in target) {\n if (!hasProp.call(target, insTarget)) continue;\n insValue = target[insTarget];\n this.instruction(insTarget, insValue);\n }\n } else {\n if (isFunction(value)) {\n value = value.apply();\n }\n node = new XMLProcessingInstruction(this, target, value);\n this.onData(this.writer.processingInstruction(node, this.currentLevel + 1));\n }\n return this;\n };\n\n XMLDocumentCB.prototype.declaration = function(version, encoding, standalone) {\n var node;\n this.openCurrent();\n if (this.documentStarted) {\n throw new Error(\"declaration() must be the first node\");\n }\n node = new XMLDeclaration(this, version, encoding, standalone);\n this.onData(this.writer.declaration(node, this.currentLevel + 1));\n return this;\n };\n\n XMLDocumentCB.prototype.doctype = function(root, pubID, sysID) {\n this.openCurrent();\n if (root == null) {\n throw new Error(\"Missing root node name\");\n }\n if (this.root) {\n throw new Error(\"dtd() must come before the root node\");\n }\n this.currentNode = new XMLDocType(this, pubID, sysID);\n this.currentNode.rootNodeName = root;\n this.currentNode.children = false;\n this.currentLevel++;\n this.openTags[this.currentLevel] = this.currentNode;\n return this;\n };\n\n XMLDocumentCB.prototype.dtdElement = function(name, value) {\n var node;\n this.openCurrent();\n node = new XMLDTDElement(this, name, value);\n this.onData(this.writer.dtdElement(node, this.currentLevel + 1));\n return this;\n };\n\n XMLDocumentCB.prototype.attList = function(elementName, attributeName, attributeType, defaultValueType, defaultValue) {\n var node;\n this.openCurrent();\n node = new XMLDTDAttList(this, elementName, attributeName, attributeType, defaultValueType, defaultValue);\n this.onData(this.writer.dtdAttList(node, this.currentLevel + 1));\n return this;\n };\n\n XMLDocumentCB.prototype.entity = function(name, value) {\n var node;\n this.openCurrent();\n node = new XMLDTDEntity(this, false, name, value);\n this.onData(this.writer.dtdEntity(node, this.currentLevel + 1));\n return this;\n };\n\n XMLDocumentCB.prototype.pEntity = function(name, value) {\n var node;\n this.openCurrent();\n node = new XMLDTDEntity(this, true, name, value);\n this.onData(this.writer.dtdEntity(node, this.currentLevel + 1));\n return this;\n };\n\n XMLDocumentCB.prototype.notation = function(name, value) {\n var node;\n this.openCurrent();\n node = new XMLDTDNotation(this, name, value);\n this.onData(this.writer.dtdNotation(node, this.currentLevel + 1));\n return this;\n };\n\n XMLDocumentCB.prototype.up = function() {\n if (this.currentLevel < 0) {\n throw new Error(\"The document node has no parent\");\n }\n if (this.currentNode) {\n if (this.currentNode.children) {\n this.closeNode(this.currentNode);\n } else {\n this.openNode(this.currentNode);\n }\n this.currentNode = null;\n } else {\n this.closeNode(this.openTags[this.currentLevel]);\n }\n delete this.openTags[this.currentLevel];\n this.currentLevel--;\n return this;\n };\n\n XMLDocumentCB.prototype.end = function() {\n while (this.currentLevel >= 0) {\n this.up();\n }\n return this.onEnd();\n };\n\n XMLDocumentCB.prototype.openCurrent = function() {\n if (this.currentNode) {\n this.currentNode.children = true;\n return this.openNode(this.currentNode);\n }\n };\n\n XMLDocumentCB.prototype.openNode = function(node) {\n if (!node.isOpen) {\n if (!this.root && this.currentLevel === 0 && node instanceof XMLElement) {\n this.root = node;\n }\n this.onData(this.writer.openNode(node, this.currentLevel));\n return node.isOpen = true;\n }\n };\n\n XMLDocumentCB.prototype.closeNode = function(node) {\n if (!node.isClosed) {\n this.onData(this.writer.closeNode(node, this.currentLevel));\n return node.isClosed = true;\n }\n };\n\n XMLDocumentCB.prototype.onData = function(chunk) {\n this.documentStarted = true;\n return this.onDataCallback(chunk);\n };\n\n XMLDocumentCB.prototype.onEnd = function() {\n this.documentCompleted = true;\n return this.onEndCallback();\n };\n\n XMLDocumentCB.prototype.ele = function() {\n return this.element.apply(this, arguments);\n };\n\n XMLDocumentCB.prototype.nod = function(name, attributes, text) {\n return this.node(name, attributes, text);\n };\n\n XMLDocumentCB.prototype.txt = function(value) {\n return this.text(value);\n };\n\n XMLDocumentCB.prototype.dat = function(value) {\n return this.cdata(value);\n };\n\n XMLDocumentCB.prototype.com = function(value) {\n return this.comment(value);\n };\n\n XMLDocumentCB.prototype.ins = function(target, value) {\n return this.instruction(target, value);\n };\n\n XMLDocumentCB.prototype.dec = function(version, encoding, standalone) {\n return this.declaration(version, encoding, standalone);\n };\n\n XMLDocumentCB.prototype.dtd = function(root, pubID, sysID) {\n return this.doctype(root, pubID, sysID);\n };\n\n XMLDocumentCB.prototype.e = function(name, attributes, text) {\n return this.element(name, attributes, text);\n };\n\n XMLDocumentCB.prototype.n = function(name, attributes, text) {\n return this.node(name, attributes, text);\n };\n\n XMLDocumentCB.prototype.t = function(value) {\n return this.text(value);\n };\n\n XMLDocumentCB.prototype.d = function(value) {\n return this.cdata(value);\n };\n\n XMLDocumentCB.prototype.c = function(value) {\n return this.comment(value);\n };\n\n XMLDocumentCB.prototype.r = function(value) {\n return this.raw(value);\n };\n\n XMLDocumentCB.prototype.i = function(target, value) {\n return this.instruction(target, value);\n };\n\n XMLDocumentCB.prototype.att = function() {\n if (this.currentNode && this.currentNode instanceof XMLDocType) {\n return this.attList.apply(this, arguments);\n } else {\n return this.attribute.apply(this, arguments);\n }\n };\n\n XMLDocumentCB.prototype.a = function() {\n if (this.currentNode && this.currentNode instanceof XMLDocType) {\n return this.attList.apply(this, arguments);\n } else {\n return this.attribute.apply(this, arguments);\n }\n };\n\n XMLDocumentCB.prototype.ent = function(name, value) {\n return this.entity(name, value);\n };\n\n XMLDocumentCB.prototype.pent = function(name, value) {\n return this.pEntity(name, value);\n };\n\n XMLDocumentCB.prototype.not = function(name, value) {\n return this.notation(name, value);\n };\n\n return XMLDocumentCB;\n\n })();\n\n}).call(this);\n", "// Generated by CoffeeScript 1.12.7\n(function() {\n var XMLCData, XMLComment, XMLDTDAttList, XMLDTDElement, XMLDTDEntity, XMLDTDNotation, XMLDeclaration, XMLDocType, XMLElement, XMLProcessingInstruction, XMLRaw, XMLStreamWriter, XMLText, XMLWriterBase,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n XMLDeclaration = require('./XMLDeclaration');\n\n XMLDocType = require('./XMLDocType');\n\n XMLCData = require('./XMLCData');\n\n XMLComment = require('./XMLComment');\n\n XMLElement = require('./XMLElement');\n\n XMLRaw = require('./XMLRaw');\n\n XMLText = require('./XMLText');\n\n XMLProcessingInstruction = require('./XMLProcessingInstruction');\n\n XMLDTDAttList = require('./XMLDTDAttList');\n\n XMLDTDElement = require('./XMLDTDElement');\n\n XMLDTDEntity = require('./XMLDTDEntity');\n\n XMLDTDNotation = require('./XMLDTDNotation');\n\n XMLWriterBase = require('./XMLWriterBase');\n\n module.exports = XMLStreamWriter = (function(superClass) {\n extend(XMLStreamWriter, superClass);\n\n function XMLStreamWriter(stream, options) {\n XMLStreamWriter.__super__.constructor.call(this, options);\n this.stream = stream;\n }\n\n XMLStreamWriter.prototype.document = function(doc) {\n var child, i, j, len, len1, ref, ref1, results;\n ref = doc.children;\n for (i = 0, len = ref.length; i < len; i++) {\n child = ref[i];\n child.isLastRootNode = false;\n }\n doc.children[doc.children.length - 1].isLastRootNode = true;\n ref1 = doc.children;\n results = [];\n for (j = 0, len1 = ref1.length; j < len1; j++) {\n child = ref1[j];\n switch (false) {\n case !(child instanceof XMLDeclaration):\n results.push(this.declaration(child));\n break;\n case !(child instanceof XMLDocType):\n results.push(this.docType(child));\n break;\n case !(child instanceof XMLComment):\n results.push(this.comment(child));\n break;\n case !(child instanceof XMLProcessingInstruction):\n results.push(this.processingInstruction(child));\n break;\n default:\n results.push(this.element(child));\n }\n }\n return results;\n };\n\n XMLStreamWriter.prototype.attribute = function(att) {\n return this.stream.write(' ' + att.name + '=\"' + att.value + '\"');\n };\n\n XMLStreamWriter.prototype.cdata = function(node, level) {\n return this.stream.write(this.space(level) + '' + this.endline(node));\n };\n\n XMLStreamWriter.prototype.comment = function(node, level) {\n return this.stream.write(this.space(level) + '' + this.endline(node));\n };\n\n XMLStreamWriter.prototype.declaration = function(node, level) {\n this.stream.write(this.space(level));\n this.stream.write('');\n return this.stream.write(this.endline(node));\n };\n\n XMLStreamWriter.prototype.docType = function(node, level) {\n var child, i, len, ref;\n level || (level = 0);\n this.stream.write(this.space(level));\n this.stream.write(' 0) {\n this.stream.write(' [');\n this.stream.write(this.endline(node));\n ref = node.children;\n for (i = 0, len = ref.length; i < len; i++) {\n child = ref[i];\n switch (false) {\n case !(child instanceof XMLDTDAttList):\n this.dtdAttList(child, level + 1);\n break;\n case !(child instanceof XMLDTDElement):\n this.dtdElement(child, level + 1);\n break;\n case !(child instanceof XMLDTDEntity):\n this.dtdEntity(child, level + 1);\n break;\n case !(child instanceof XMLDTDNotation):\n this.dtdNotation(child, level + 1);\n break;\n case !(child instanceof XMLCData):\n this.cdata(child, level + 1);\n break;\n case !(child instanceof XMLComment):\n this.comment(child, level + 1);\n break;\n case !(child instanceof XMLProcessingInstruction):\n this.processingInstruction(child, level + 1);\n break;\n default:\n throw new Error(\"Unknown DTD node type: \" + child.constructor.name);\n }\n }\n this.stream.write(']');\n }\n this.stream.write(this.spacebeforeslash + '>');\n return this.stream.write(this.endline(node));\n };\n\n XMLStreamWriter.prototype.element = function(node, level) {\n var att, child, i, len, name, ref, ref1, space;\n level || (level = 0);\n space = this.space(level);\n this.stream.write(space + '<' + node.name);\n ref = node.attributes;\n for (name in ref) {\n if (!hasProp.call(ref, name)) continue;\n att = ref[name];\n this.attribute(att);\n }\n if (node.children.length === 0 || node.children.every(function(e) {\n return e.value === '';\n })) {\n if (this.allowEmpty) {\n this.stream.write('>');\n } else {\n this.stream.write(this.spacebeforeslash + '/>');\n }\n } else if (this.pretty && node.children.length === 1 && (node.children[0].value != null)) {\n this.stream.write('>');\n this.stream.write(node.children[0].value);\n this.stream.write('');\n } else {\n this.stream.write('>' + this.newline);\n ref1 = node.children;\n for (i = 0, len = ref1.length; i < len; i++) {\n child = ref1[i];\n switch (false) {\n case !(child instanceof XMLCData):\n this.cdata(child, level + 1);\n break;\n case !(child instanceof XMLComment):\n this.comment(child, level + 1);\n break;\n case !(child instanceof XMLElement):\n this.element(child, level + 1);\n break;\n case !(child instanceof XMLRaw):\n this.raw(child, level + 1);\n break;\n case !(child instanceof XMLText):\n this.text(child, level + 1);\n break;\n case !(child instanceof XMLProcessingInstruction):\n this.processingInstruction(child, level + 1);\n break;\n default:\n throw new Error(\"Unknown XML node type: \" + child.constructor.name);\n }\n }\n this.stream.write(space + '');\n }\n return this.stream.write(this.endline(node));\n };\n\n XMLStreamWriter.prototype.processingInstruction = function(node, level) {\n this.stream.write(this.space(level) + '' + this.endline(node));\n };\n\n XMLStreamWriter.prototype.raw = function(node, level) {\n return this.stream.write(this.space(level) + node.value + this.endline(node));\n };\n\n XMLStreamWriter.prototype.text = function(node, level) {\n return this.stream.write(this.space(level) + node.value + this.endline(node));\n };\n\n XMLStreamWriter.prototype.dtdAttList = function(node, level) {\n this.stream.write(this.space(level) + '' + this.endline(node));\n };\n\n XMLStreamWriter.prototype.dtdElement = function(node, level) {\n this.stream.write(this.space(level) + '' + this.endline(node));\n };\n\n XMLStreamWriter.prototype.dtdEntity = function(node, level) {\n this.stream.write(this.space(level) + '' + this.endline(node));\n };\n\n XMLStreamWriter.prototype.dtdNotation = function(node, level) {\n this.stream.write(this.space(level) + '' + this.endline(node));\n };\n\n XMLStreamWriter.prototype.endline = function(node) {\n if (!node.isLastRootNode) {\n return this.newline;\n } else {\n return '';\n }\n };\n\n return XMLStreamWriter;\n\n })(XMLWriterBase);\n\n}).call(this);\n", "// Generated by CoffeeScript 1.12.7\n(function() {\n var XMLDocument, XMLDocumentCB, XMLStreamWriter, XMLStringWriter, assign, isFunction, ref;\n\n ref = require('./Utility'), assign = ref.assign, isFunction = ref.isFunction;\n\n XMLDocument = require('./XMLDocument');\n\n XMLDocumentCB = require('./XMLDocumentCB');\n\n XMLStringWriter = require('./XMLStringWriter');\n\n XMLStreamWriter = require('./XMLStreamWriter');\n\n module.exports.create = function(name, xmldec, doctype, options) {\n var doc, root;\n if (name == null) {\n throw new Error(\"Root element needs a name\");\n }\n options = assign({}, xmldec, doctype, options);\n doc = new XMLDocument(options);\n root = doc.element(name);\n if (!options.headless) {\n doc.declaration(options);\n if ((options.pubID != null) || (options.sysID != null)) {\n doc.doctype(options);\n }\n }\n return root;\n };\n\n module.exports.begin = function(options, onData, onEnd) {\n var ref1;\n if (isFunction(options)) {\n ref1 = [options, onData], onData = ref1[0], onEnd = ref1[1];\n options = {};\n }\n if (onData) {\n return new XMLDocumentCB(options, onData, onEnd);\n } else {\n return new XMLDocument(options);\n }\n };\n\n module.exports.stringWriter = function(options) {\n return new XMLStringWriter(options);\n };\n\n module.exports.streamWriter = function(stream, options) {\n return new XMLStreamWriter(stream, options);\n };\n\n}).call(this);\n", "/**\n * Module dependencies.\n */\n\nvar base64 = require('base64-js');\nvar xmlbuilder = require('xmlbuilder');\n\n/**\n * Module exports.\n */\n\nexports.build = build;\n\n/**\n * Accepts a `Date` instance and returns an ISO date string.\n *\n * @param {Date} d - Date instance to serialize\n * @returns {String} ISO date string representation of `d`\n * @api private\n */\n\nfunction ISODateString(d){\n function pad(n){\n return n < 10 ? '0' + n : n;\n }\n return d.getUTCFullYear()+'-'\n + pad(d.getUTCMonth()+1)+'-'\n + pad(d.getUTCDate())+'T'\n + pad(d.getUTCHours())+':'\n + pad(d.getUTCMinutes())+':'\n + pad(d.getUTCSeconds())+'Z';\n}\n\n/**\n * Returns the internal \"type\" of `obj` via the\n * `Object.prototype.toString()` trick.\n *\n * @param {Mixed} obj - any value\n * @returns {String} the internal \"type\" name\n * @api private\n */\n\nvar toString = Object.prototype.toString;\nfunction type (obj) {\n var m = toString.call(obj).match(/\\[object (.*)\\]/);\n return m ? m[1] : m;\n}\n\n/**\n * Generate an XML plist string from the input object `obj`.\n *\n * @param {Object} obj - the object to convert\n * @param {Object} [opts] - optional options object\n * @returns {String} converted plist XML string\n * @api public\n */\n\nfunction build (obj, opts) {\n var XMLHDR = {\n version: '1.0',\n encoding: 'UTF-8'\n };\n\n var XMLDTD = {\n pubid: '-//Apple//DTD PLIST 1.0//EN',\n sysid: 'http://www.apple.com/DTDs/PropertyList-1.0.dtd'\n };\n\n var doc = xmlbuilder.create('plist');\n\n doc.dec(XMLHDR.version, XMLHDR.encoding, XMLHDR.standalone);\n doc.dtd(XMLDTD.pubid, XMLDTD.sysid);\n doc.att('version', '1.0');\n\n walk_obj(obj, doc);\n\n if (!opts) opts = {};\n // default `pretty` to `true`\n opts.pretty = opts.pretty !== false;\n return doc.end(opts);\n}\n\n/**\n * depth first, recursive traversal of a javascript object. when complete,\n * next_child contains a reference to the build XML object.\n *\n * @api private\n */\n\nfunction walk_obj(next, next_child) {\n var tag_type, i, prop;\n var name = type(next);\n\n if ('Undefined' == name) {\n return;\n } else if (Array.isArray(next)) {\n next_child = next_child.ele('array');\n for (i = 0; i < next.length; i++) {\n walk_obj(next[i], next_child);\n }\n\n } else if (Buffer.isBuffer(next)) {\n next_child.ele('data').raw(next.toString('base64'));\n\n } else if ('Object' == name) {\n next_child = next_child.ele('dict');\n for (prop in next) {\n if (next.hasOwnProperty(prop)) {\n next_child.ele('key').txt(prop);\n walk_obj(next[prop], next_child);\n }\n }\n\n } else if ('Number' == name) {\n // detect if this is an integer or real\n // TODO: add an ability to force one way or another via a \"cast\"\n tag_type = (next % 1 === 0) ? 'integer' : 'real';\n next_child.ele(tag_type).txt(next.toString());\n\n } else if ('Date' == name) {\n next_child.ele('date').txt(ISODateString(new Date(next)));\n\n } else if ('Boolean' == name) {\n next_child.ele(next ? 'true' : 'false');\n\n } else if ('String' == name) {\n next_child.ele('string').txt(next);\n\n } else if ('ArrayBuffer' == name) {\n next_child.ele('data').raw(base64.fromByteArray(next));\n\n } else if (next && next.buffer && 'ArrayBuffer' == type(next.buffer)) {\n // a typed array\n next_child.ele('data').raw(base64.fromByteArray(new Uint8Array(next.buffer), next_child));\n\n }\n}\n", "/**\n * Parser functions.\n */\n\nvar parserFunctions = require('./lib/parse');\nObject.keys(parserFunctions).forEach(function (k) { exports[k] = parserFunctions[k]; });\n\n/**\n * Builder functions.\n */\n\nvar builderFunctions = require('./lib/build');\nObject.keys(builderFunctions).forEach(function (k) { exports[k] = builderFunctions[k]; });\n", "const bplistParser = require('bplist-parser')\nconst bplistCreator = require('bplist-creator')\nconst plist = require('plist')\nconst fs = require('fs')\n\nfunction parse(aStringOrBuffer, aFile) {\n const firstByte = aStringOrBuffer[0]\n let results\n try {\n if (firstByte === 60 || firstByte === '<') {\n results = plist.parse(aStringOrBuffer.toString())\n } else if (firstByte === 98) {\n ;[results] = bplistParser.parseBuffer(aStringOrBuffer)\n } else if (aFile != null) {\n throw new Error(`Unable to determine format for '${aFile}'`)\n } else {\n throw new Error('Unable to determine format for plist aStringOrBuffer')\n }\n } catch (error) {\n throw new Error(error)\n }\n return results\n}\n\nfunction readFileSync(aFile) {\n const contents = fs.readFileSync(aFile)\n if (contents.length === 0) {\n return {}\n }\n return parse(contents, aFile)\n}\n\nfunction readFile(aFile, callback) {\n fs.readFile(aFile, (err, contents) => {\n if (err) {\n return callback(err)\n }\n let results\n try {\n results = parse(contents, aFile)\n } catch (error) {\n return callback(error)\n }\n\n return callback(null, results)\n })\n}\n\nfunction writeFileSync(aFile, anObject, options) {\n const data = plist.build(anObject)\n return fs.writeFileSync(aFile, data, options)\n}\n\nfunction writeFile(aFile, anObject, options, callback) {\n if (arguments.length === 3 && typeof options === 'function') {\n fs.writeFile(aFile, plist.build(anObject), options)\n } else {\n fs.writeFile(aFile, plist.build(anObject), options, callback)\n }\n}\n\nfunction writeBinaryFileSync(aFile, anObject, options) {\n return fs.writeFileSync(aFile, bplistCreator(anObject), options)\n}\n\nfunction writeBinaryFile(aFile, anObject, options, callback) {\n if (arguments.length === 3 && typeof options === 'function') {\n fs.writeFile(aFile, bplistCreator(anObject), options)\n } else {\n fs.writeFile(aFile, bplistCreator(anObject), options, callback)\n }\n}\n\nfunction stringify(anObject) {\n return plist.build(anObject)\n}\n\nmodule.exports = {\n bplistCreator,\n bplistParser,\n parse,\n plist,\n readFile,\n readFileSync,\n stringify,\n writeBinaryFile,\n writeBinaryFileSync,\n writeFile,\n writeFileSync,\n}\n", "'use strict'\r\n\r\nmodule.exports = {\r\n\t\"aliceblue\": [240, 248, 255],\r\n\t\"antiquewhite\": [250, 235, 215],\r\n\t\"aqua\": [0, 255, 255],\r\n\t\"aquamarine\": [127, 255, 212],\r\n\t\"azure\": [240, 255, 255],\r\n\t\"beige\": [245, 245, 220],\r\n\t\"bisque\": [255, 228, 196],\r\n\t\"black\": [0, 0, 0],\r\n\t\"blanchedalmond\": [255, 235, 205],\r\n\t\"blue\": [0, 0, 255],\r\n\t\"blueviolet\": [138, 43, 226],\r\n\t\"brown\": [165, 42, 42],\r\n\t\"burlywood\": [222, 184, 135],\r\n\t\"cadetblue\": [95, 158, 160],\r\n\t\"chartreuse\": [127, 255, 0],\r\n\t\"chocolate\": [210, 105, 30],\r\n\t\"coral\": [255, 127, 80],\r\n\t\"cornflowerblue\": [100, 149, 237],\r\n\t\"cornsilk\": [255, 248, 220],\r\n\t\"crimson\": [220, 20, 60],\r\n\t\"cyan\": [0, 255, 255],\r\n\t\"darkblue\": [0, 0, 139],\r\n\t\"darkcyan\": [0, 139, 139],\r\n\t\"darkgoldenrod\": [184, 134, 11],\r\n\t\"darkgray\": [169, 169, 169],\r\n\t\"darkgreen\": [0, 100, 0],\r\n\t\"darkgrey\": [169, 169, 169],\r\n\t\"darkkhaki\": [189, 183, 107],\r\n\t\"darkmagenta\": [139, 0, 139],\r\n\t\"darkolivegreen\": [85, 107, 47],\r\n\t\"darkorange\": [255, 140, 0],\r\n\t\"darkorchid\": [153, 50, 204],\r\n\t\"darkred\": [139, 0, 0],\r\n\t\"darksalmon\": [233, 150, 122],\r\n\t\"darkseagreen\": [143, 188, 143],\r\n\t\"darkslateblue\": [72, 61, 139],\r\n\t\"darkslategray\": [47, 79, 79],\r\n\t\"darkslategrey\": [47, 79, 79],\r\n\t\"darkturquoise\": [0, 206, 209],\r\n\t\"darkviolet\": [148, 0, 211],\r\n\t\"deeppink\": [255, 20, 147],\r\n\t\"deepskyblue\": [0, 191, 255],\r\n\t\"dimgray\": [105, 105, 105],\r\n\t\"dimgrey\": [105, 105, 105],\r\n\t\"dodgerblue\": [30, 144, 255],\r\n\t\"firebrick\": [178, 34, 34],\r\n\t\"floralwhite\": [255, 250, 240],\r\n\t\"forestgreen\": [34, 139, 34],\r\n\t\"fuchsia\": [255, 0, 255],\r\n\t\"gainsboro\": [220, 220, 220],\r\n\t\"ghostwhite\": [248, 248, 255],\r\n\t\"gold\": [255, 215, 0],\r\n\t\"goldenrod\": [218, 165, 32],\r\n\t\"gray\": [128, 128, 128],\r\n\t\"green\": [0, 128, 0],\r\n\t\"greenyellow\": [173, 255, 47],\r\n\t\"grey\": [128, 128, 128],\r\n\t\"honeydew\": [240, 255, 240],\r\n\t\"hotpink\": [255, 105, 180],\r\n\t\"indianred\": [205, 92, 92],\r\n\t\"indigo\": [75, 0, 130],\r\n\t\"ivory\": [255, 255, 240],\r\n\t\"khaki\": [240, 230, 140],\r\n\t\"lavender\": [230, 230, 250],\r\n\t\"lavenderblush\": [255, 240, 245],\r\n\t\"lawngreen\": [124, 252, 0],\r\n\t\"lemonchiffon\": [255, 250, 205],\r\n\t\"lightblue\": [173, 216, 230],\r\n\t\"lightcoral\": [240, 128, 128],\r\n\t\"lightcyan\": [224, 255, 255],\r\n\t\"lightgoldenrodyellow\": [250, 250, 210],\r\n\t\"lightgray\": [211, 211, 211],\r\n\t\"lightgreen\": [144, 238, 144],\r\n\t\"lightgrey\": [211, 211, 211],\r\n\t\"lightpink\": [255, 182, 193],\r\n\t\"lightsalmon\": [255, 160, 122],\r\n\t\"lightseagreen\": [32, 178, 170],\r\n\t\"lightskyblue\": [135, 206, 250],\r\n\t\"lightslategray\": [119, 136, 153],\r\n\t\"lightslategrey\": [119, 136, 153],\r\n\t\"lightsteelblue\": [176, 196, 222],\r\n\t\"lightyellow\": [255, 255, 224],\r\n\t\"lime\": [0, 255, 0],\r\n\t\"limegreen\": [50, 205, 50],\r\n\t\"linen\": [250, 240, 230],\r\n\t\"magenta\": [255, 0, 255],\r\n\t\"maroon\": [128, 0, 0],\r\n\t\"mediumaquamarine\": [102, 205, 170],\r\n\t\"mediumblue\": [0, 0, 205],\r\n\t\"mediumorchid\": [186, 85, 211],\r\n\t\"mediumpurple\": [147, 112, 219],\r\n\t\"mediumseagreen\": [60, 179, 113],\r\n\t\"mediumslateblue\": [123, 104, 238],\r\n\t\"mediumspringgreen\": [0, 250, 154],\r\n\t\"mediumturquoise\": [72, 209, 204],\r\n\t\"mediumvioletred\": [199, 21, 133],\r\n\t\"midnightblue\": [25, 25, 112],\r\n\t\"mintcream\": [245, 255, 250],\r\n\t\"mistyrose\": [255, 228, 225],\r\n\t\"moccasin\": [255, 228, 181],\r\n\t\"navajowhite\": [255, 222, 173],\r\n\t\"navy\": [0, 0, 128],\r\n\t\"oldlace\": [253, 245, 230],\r\n\t\"olive\": [128, 128, 0],\r\n\t\"olivedrab\": [107, 142, 35],\r\n\t\"orange\": [255, 165, 0],\r\n\t\"orangered\": [255, 69, 0],\r\n\t\"orchid\": [218, 112, 214],\r\n\t\"palegoldenrod\": [238, 232, 170],\r\n\t\"palegreen\": [152, 251, 152],\r\n\t\"paleturquoise\": [175, 238, 238],\r\n\t\"palevioletred\": [219, 112, 147],\r\n\t\"papayawhip\": [255, 239, 213],\r\n\t\"peachpuff\": [255, 218, 185],\r\n\t\"peru\": [205, 133, 63],\r\n\t\"pink\": [255, 192, 203],\r\n\t\"plum\": [221, 160, 221],\r\n\t\"powderblue\": [176, 224, 230],\r\n\t\"purple\": [128, 0, 128],\r\n\t\"rebeccapurple\": [102, 51, 153],\r\n\t\"red\": [255, 0, 0],\r\n\t\"rosybrown\": [188, 143, 143],\r\n\t\"royalblue\": [65, 105, 225],\r\n\t\"saddlebrown\": [139, 69, 19],\r\n\t\"salmon\": [250, 128, 114],\r\n\t\"sandybrown\": [244, 164, 96],\r\n\t\"seagreen\": [46, 139, 87],\r\n\t\"seashell\": [255, 245, 238],\r\n\t\"sienna\": [160, 82, 45],\r\n\t\"silver\": [192, 192, 192],\r\n\t\"skyblue\": [135, 206, 235],\r\n\t\"slateblue\": [106, 90, 205],\r\n\t\"slategray\": [112, 128, 144],\r\n\t\"slategrey\": [112, 128, 144],\r\n\t\"snow\": [255, 250, 250],\r\n\t\"springgreen\": [0, 255, 127],\r\n\t\"steelblue\": [70, 130, 180],\r\n\t\"tan\": [210, 180, 140],\r\n\t\"teal\": [0, 128, 128],\r\n\t\"thistle\": [216, 191, 216],\r\n\t\"tomato\": [255, 99, 71],\r\n\t\"turquoise\": [64, 224, 208],\r\n\t\"violet\": [238, 130, 238],\r\n\t\"wheat\": [245, 222, 179],\r\n\t\"white\": [255, 255, 255],\r\n\t\"whitesmoke\": [245, 245, 245],\r\n\t\"yellow\": [255, 255, 0],\r\n\t\"yellowgreen\": [154, 205, 50]\r\n};\r\n", "/* MIT license */\n/* eslint-disable no-mixed-operators */\nconst cssKeywords = require('color-name');\n\n// NOTE: conversions should only return primitive values (i.e. arrays, or\n// values that give correct `typeof` results).\n// do not use box values types (i.e. Number(), String(), etc.)\n\nconst reverseKeywords = {};\nfor (const key of Object.keys(cssKeywords)) {\n\treverseKeywords[cssKeywords[key]] = key;\n}\n\nconst convert = {\n\trgb: {channels: 3, labels: 'rgb'},\n\thsl: {channels: 3, labels: 'hsl'},\n\thsv: {channels: 3, labels: 'hsv'},\n\thwb: {channels: 3, labels: 'hwb'},\n\tcmyk: {channels: 4, labels: 'cmyk'},\n\txyz: {channels: 3, labels: 'xyz'},\n\tlab: {channels: 3, labels: 'lab'},\n\tlch: {channels: 3, labels: 'lch'},\n\thex: {channels: 1, labels: ['hex']},\n\tkeyword: {channels: 1, labels: ['keyword']},\n\tansi16: {channels: 1, labels: ['ansi16']},\n\tansi256: {channels: 1, labels: ['ansi256']},\n\thcg: {channels: 3, labels: ['h', 'c', 'g']},\n\tapple: {channels: 3, labels: ['r16', 'g16', 'b16']},\n\tgray: {channels: 1, labels: ['gray']}\n};\n\nmodule.exports = convert;\n\n// Hide .channels and .labels properties\nfor (const model of Object.keys(convert)) {\n\tif (!('channels' in convert[model])) {\n\t\tthrow new Error('missing channels property: ' + model);\n\t}\n\n\tif (!('labels' in convert[model])) {\n\t\tthrow new Error('missing channel labels property: ' + model);\n\t}\n\n\tif (convert[model].labels.length !== convert[model].channels) {\n\t\tthrow new Error('channel and label counts mismatch: ' + model);\n\t}\n\n\tconst {channels, labels} = convert[model];\n\tdelete convert[model].channels;\n\tdelete convert[model].labels;\n\tObject.defineProperty(convert[model], 'channels', {value: channels});\n\tObject.defineProperty(convert[model], 'labels', {value: labels});\n}\n\nconvert.rgb.hsl = function (rgb) {\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\tconst min = Math.min(r, g, b);\n\tconst max = Math.max(r, g, b);\n\tconst delta = max - min;\n\tlet h;\n\tlet s;\n\n\tif (max === min) {\n\t\th = 0;\n\t} else if (r === max) {\n\t\th = (g - b) / delta;\n\t} else if (g === max) {\n\t\th = 2 + (b - r) / delta;\n\t} else if (b === max) {\n\t\th = 4 + (r - g) / delta;\n\t}\n\n\th = Math.min(h * 60, 360);\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tconst l = (min + max) / 2;\n\n\tif (max === min) {\n\t\ts = 0;\n\t} else if (l <= 0.5) {\n\t\ts = delta / (max + min);\n\t} else {\n\t\ts = delta / (2 - max - min);\n\t}\n\n\treturn [h, s * 100, l * 100];\n};\n\nconvert.rgb.hsv = function (rgb) {\n\tlet rdif;\n\tlet gdif;\n\tlet bdif;\n\tlet h;\n\tlet s;\n\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\tconst v = Math.max(r, g, b);\n\tconst diff = v - Math.min(r, g, b);\n\tconst diffc = function (c) {\n\t\treturn (v - c) / 6 / diff + 1 / 2;\n\t};\n\n\tif (diff === 0) {\n\t\th = 0;\n\t\ts = 0;\n\t} else {\n\t\ts = diff / v;\n\t\trdif = diffc(r);\n\t\tgdif = diffc(g);\n\t\tbdif = diffc(b);\n\n\t\tif (r === v) {\n\t\t\th = bdif - gdif;\n\t\t} else if (g === v) {\n\t\t\th = (1 / 3) + rdif - bdif;\n\t\t} else if (b === v) {\n\t\t\th = (2 / 3) + gdif - rdif;\n\t\t}\n\n\t\tif (h < 0) {\n\t\t\th += 1;\n\t\t} else if (h > 1) {\n\t\t\th -= 1;\n\t\t}\n\t}\n\n\treturn [\n\t\th * 360,\n\t\ts * 100,\n\t\tv * 100\n\t];\n};\n\nconvert.rgb.hwb = function (rgb) {\n\tconst r = rgb[0];\n\tconst g = rgb[1];\n\tlet b = rgb[2];\n\tconst h = convert.rgb.hsl(rgb)[0];\n\tconst w = 1 / 255 * Math.min(r, Math.min(g, b));\n\n\tb = 1 - 1 / 255 * Math.max(r, Math.max(g, b));\n\n\treturn [h, w * 100, b * 100];\n};\n\nconvert.rgb.cmyk = function (rgb) {\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\n\tconst k = Math.min(1 - r, 1 - g, 1 - b);\n\tconst c = (1 - r - k) / (1 - k) || 0;\n\tconst m = (1 - g - k) / (1 - k) || 0;\n\tconst y = (1 - b - k) / (1 - k) || 0;\n\n\treturn [c * 100, m * 100, y * 100, k * 100];\n};\n\nfunction comparativeDistance(x, y) {\n\t/*\n\t\tSee https://en.m.wikipedia.org/wiki/Euclidean_distance#Squared_Euclidean_distance\n\t*/\n\treturn (\n\t\t((x[0] - y[0]) ** 2) +\n\t\t((x[1] - y[1]) ** 2) +\n\t\t((x[2] - y[2]) ** 2)\n\t);\n}\n\nconvert.rgb.keyword = function (rgb) {\n\tconst reversed = reverseKeywords[rgb];\n\tif (reversed) {\n\t\treturn reversed;\n\t}\n\n\tlet currentClosestDistance = Infinity;\n\tlet currentClosestKeyword;\n\n\tfor (const keyword of Object.keys(cssKeywords)) {\n\t\tconst value = cssKeywords[keyword];\n\n\t\t// Compute comparative distance\n\t\tconst distance = comparativeDistance(rgb, value);\n\n\t\t// Check if its less, if so set as closest\n\t\tif (distance < currentClosestDistance) {\n\t\t\tcurrentClosestDistance = distance;\n\t\t\tcurrentClosestKeyword = keyword;\n\t\t}\n\t}\n\n\treturn currentClosestKeyword;\n};\n\nconvert.keyword.rgb = function (keyword) {\n\treturn cssKeywords[keyword];\n};\n\nconvert.rgb.xyz = function (rgb) {\n\tlet r = rgb[0] / 255;\n\tlet g = rgb[1] / 255;\n\tlet b = rgb[2] / 255;\n\n\t// Assume sRGB\n\tr = r > 0.04045 ? (((r + 0.055) / 1.055) ** 2.4) : (r / 12.92);\n\tg = g > 0.04045 ? (((g + 0.055) / 1.055) ** 2.4) : (g / 12.92);\n\tb = b > 0.04045 ? (((b + 0.055) / 1.055) ** 2.4) : (b / 12.92);\n\n\tconst x = (r * 0.4124) + (g * 0.3576) + (b * 0.1805);\n\tconst y = (r * 0.2126) + (g * 0.7152) + (b * 0.0722);\n\tconst z = (r * 0.0193) + (g * 0.1192) + (b * 0.9505);\n\n\treturn [x * 100, y * 100, z * 100];\n};\n\nconvert.rgb.lab = function (rgb) {\n\tconst xyz = convert.rgb.xyz(rgb);\n\tlet x = xyz[0];\n\tlet y = xyz[1];\n\tlet z = xyz[2];\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? (x ** (1 / 3)) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? (y ** (1 / 3)) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? (z ** (1 / 3)) : (7.787 * z) + (16 / 116);\n\n\tconst l = (116 * y) - 16;\n\tconst a = 500 * (x - y);\n\tconst b = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.hsl.rgb = function (hsl) {\n\tconst h = hsl[0] / 360;\n\tconst s = hsl[1] / 100;\n\tconst l = hsl[2] / 100;\n\tlet t2;\n\tlet t3;\n\tlet val;\n\n\tif (s === 0) {\n\t\tval = l * 255;\n\t\treturn [val, val, val];\n\t}\n\n\tif (l < 0.5) {\n\t\tt2 = l * (1 + s);\n\t} else {\n\t\tt2 = l + s - l * s;\n\t}\n\n\tconst t1 = 2 * l - t2;\n\n\tconst rgb = [0, 0, 0];\n\tfor (let i = 0; i < 3; i++) {\n\t\tt3 = h + 1 / 3 * -(i - 1);\n\t\tif (t3 < 0) {\n\t\t\tt3++;\n\t\t}\n\n\t\tif (t3 > 1) {\n\t\t\tt3--;\n\t\t}\n\n\t\tif (6 * t3 < 1) {\n\t\t\tval = t1 + (t2 - t1) * 6 * t3;\n\t\t} else if (2 * t3 < 1) {\n\t\t\tval = t2;\n\t\t} else if (3 * t3 < 2) {\n\t\t\tval = t1 + (t2 - t1) * (2 / 3 - t3) * 6;\n\t\t} else {\n\t\t\tval = t1;\n\t\t}\n\n\t\trgb[i] = val * 255;\n\t}\n\n\treturn rgb;\n};\n\nconvert.hsl.hsv = function (hsl) {\n\tconst h = hsl[0];\n\tlet s = hsl[1] / 100;\n\tlet l = hsl[2] / 100;\n\tlet smin = s;\n\tconst lmin = Math.max(l, 0.01);\n\n\tl *= 2;\n\ts *= (l <= 1) ? l : 2 - l;\n\tsmin *= lmin <= 1 ? lmin : 2 - lmin;\n\tconst v = (l + s) / 2;\n\tconst sv = l === 0 ? (2 * smin) / (lmin + smin) : (2 * s) / (l + s);\n\n\treturn [h, sv * 100, v * 100];\n};\n\nconvert.hsv.rgb = function (hsv) {\n\tconst h = hsv[0] / 60;\n\tconst s = hsv[1] / 100;\n\tlet v = hsv[2] / 100;\n\tconst hi = Math.floor(h) % 6;\n\n\tconst f = h - Math.floor(h);\n\tconst p = 255 * v * (1 - s);\n\tconst q = 255 * v * (1 - (s * f));\n\tconst t = 255 * v * (1 - (s * (1 - f)));\n\tv *= 255;\n\n\tswitch (hi) {\n\t\tcase 0:\n\t\t\treturn [v, t, p];\n\t\tcase 1:\n\t\t\treturn [q, v, p];\n\t\tcase 2:\n\t\t\treturn [p, v, t];\n\t\tcase 3:\n\t\t\treturn [p, q, v];\n\t\tcase 4:\n\t\t\treturn [t, p, v];\n\t\tcase 5:\n\t\t\treturn [v, p, q];\n\t}\n};\n\nconvert.hsv.hsl = function (hsv) {\n\tconst h = hsv[0];\n\tconst s = hsv[1] / 100;\n\tconst v = hsv[2] / 100;\n\tconst vmin = Math.max(v, 0.01);\n\tlet sl;\n\tlet l;\n\n\tl = (2 - s) * v;\n\tconst lmin = (2 - s) * vmin;\n\tsl = s * vmin;\n\tsl /= (lmin <= 1) ? lmin : 2 - lmin;\n\tsl = sl || 0;\n\tl /= 2;\n\n\treturn [h, sl * 100, l * 100];\n};\n\n// http://dev.w3.org/csswg/css-color/#hwb-to-rgb\nconvert.hwb.rgb = function (hwb) {\n\tconst h = hwb[0] / 360;\n\tlet wh = hwb[1] / 100;\n\tlet bl = hwb[2] / 100;\n\tconst ratio = wh + bl;\n\tlet f;\n\n\t// Wh + bl cant be > 1\n\tif (ratio > 1) {\n\t\twh /= ratio;\n\t\tbl /= ratio;\n\t}\n\n\tconst i = Math.floor(6 * h);\n\tconst v = 1 - bl;\n\tf = 6 * h - i;\n\n\tif ((i & 0x01) !== 0) {\n\t\tf = 1 - f;\n\t}\n\n\tconst n = wh + f * (v - wh); // Linear interpolation\n\n\tlet r;\n\tlet g;\n\tlet b;\n\t/* eslint-disable max-statements-per-line,no-multi-spaces */\n\tswitch (i) {\n\t\tdefault:\n\t\tcase 6:\n\t\tcase 0: r = v; g = n; b = wh; break;\n\t\tcase 1: r = n; g = v; b = wh; break;\n\t\tcase 2: r = wh; g = v; b = n; break;\n\t\tcase 3: r = wh; g = n; b = v; break;\n\t\tcase 4: r = n; g = wh; b = v; break;\n\t\tcase 5: r = v; g = wh; b = n; break;\n\t}\n\t/* eslint-enable max-statements-per-line,no-multi-spaces */\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.cmyk.rgb = function (cmyk) {\n\tconst c = cmyk[0] / 100;\n\tconst m = cmyk[1] / 100;\n\tconst y = cmyk[2] / 100;\n\tconst k = cmyk[3] / 100;\n\n\tconst r = 1 - Math.min(1, c * (1 - k) + k);\n\tconst g = 1 - Math.min(1, m * (1 - k) + k);\n\tconst b = 1 - Math.min(1, y * (1 - k) + k);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.rgb = function (xyz) {\n\tconst x = xyz[0] / 100;\n\tconst y = xyz[1] / 100;\n\tconst z = xyz[2] / 100;\n\tlet r;\n\tlet g;\n\tlet b;\n\n\tr = (x * 3.2406) + (y * -1.5372) + (z * -0.4986);\n\tg = (x * -0.9689) + (y * 1.8758) + (z * 0.0415);\n\tb = (x * 0.0557) + (y * -0.2040) + (z * 1.0570);\n\n\t// Assume sRGB\n\tr = r > 0.0031308\n\t\t? ((1.055 * (r ** (1.0 / 2.4))) - 0.055)\n\t\t: r * 12.92;\n\n\tg = g > 0.0031308\n\t\t? ((1.055 * (g ** (1.0 / 2.4))) - 0.055)\n\t\t: g * 12.92;\n\n\tb = b > 0.0031308\n\t\t? ((1.055 * (b ** (1.0 / 2.4))) - 0.055)\n\t\t: b * 12.92;\n\n\tr = Math.min(Math.max(0, r), 1);\n\tg = Math.min(Math.max(0, g), 1);\n\tb = Math.min(Math.max(0, b), 1);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.lab = function (xyz) {\n\tlet x = xyz[0];\n\tlet y = xyz[1];\n\tlet z = xyz[2];\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? (x ** (1 / 3)) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? (y ** (1 / 3)) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? (z ** (1 / 3)) : (7.787 * z) + (16 / 116);\n\n\tconst l = (116 * y) - 16;\n\tconst a = 500 * (x - y);\n\tconst b = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.lab.xyz = function (lab) {\n\tconst l = lab[0];\n\tconst a = lab[1];\n\tconst b = lab[2];\n\tlet x;\n\tlet y;\n\tlet z;\n\n\ty = (l + 16) / 116;\n\tx = a / 500 + y;\n\tz = y - b / 200;\n\n\tconst y2 = y ** 3;\n\tconst x2 = x ** 3;\n\tconst z2 = z ** 3;\n\ty = y2 > 0.008856 ? y2 : (y - 16 / 116) / 7.787;\n\tx = x2 > 0.008856 ? x2 : (x - 16 / 116) / 7.787;\n\tz = z2 > 0.008856 ? z2 : (z - 16 / 116) / 7.787;\n\n\tx *= 95.047;\n\ty *= 100;\n\tz *= 108.883;\n\n\treturn [x, y, z];\n};\n\nconvert.lab.lch = function (lab) {\n\tconst l = lab[0];\n\tconst a = lab[1];\n\tconst b = lab[2];\n\tlet h;\n\n\tconst hr = Math.atan2(b, a);\n\th = hr * 360 / 2 / Math.PI;\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tconst c = Math.sqrt(a * a + b * b);\n\n\treturn [l, c, h];\n};\n\nconvert.lch.lab = function (lch) {\n\tconst l = lch[0];\n\tconst c = lch[1];\n\tconst h = lch[2];\n\n\tconst hr = h / 360 * 2 * Math.PI;\n\tconst a = c * Math.cos(hr);\n\tconst b = c * Math.sin(hr);\n\n\treturn [l, a, b];\n};\n\nconvert.rgb.ansi16 = function (args, saturation = null) {\n\tconst [r, g, b] = args;\n\tlet value = saturation === null ? convert.rgb.hsv(args)[2] : saturation; // Hsv -> ansi16 optimization\n\n\tvalue = Math.round(value / 50);\n\n\tif (value === 0) {\n\t\treturn 30;\n\t}\n\n\tlet ansi = 30\n\t\t+ ((Math.round(b / 255) << 2)\n\t\t| (Math.round(g / 255) << 1)\n\t\t| Math.round(r / 255));\n\n\tif (value === 2) {\n\t\tansi += 60;\n\t}\n\n\treturn ansi;\n};\n\nconvert.hsv.ansi16 = function (args) {\n\t// Optimization here; we already know the value and don't need to get\n\t// it converted for us.\n\treturn convert.rgb.ansi16(convert.hsv.rgb(args), args[2]);\n};\n\nconvert.rgb.ansi256 = function (args) {\n\tconst r = args[0];\n\tconst g = args[1];\n\tconst b = args[2];\n\n\t// We use the extended greyscale palette here, with the exception of\n\t// black and white. normal palette only has 4 greyscale shades.\n\tif (r === g && g === b) {\n\t\tif (r < 8) {\n\t\t\treturn 16;\n\t\t}\n\n\t\tif (r > 248) {\n\t\t\treturn 231;\n\t\t}\n\n\t\treturn Math.round(((r - 8) / 247) * 24) + 232;\n\t}\n\n\tconst ansi = 16\n\t\t+ (36 * Math.round(r / 255 * 5))\n\t\t+ (6 * Math.round(g / 255 * 5))\n\t\t+ Math.round(b / 255 * 5);\n\n\treturn ansi;\n};\n\nconvert.ansi16.rgb = function (args) {\n\tlet color = args % 10;\n\n\t// Handle greyscale\n\tif (color === 0 || color === 7) {\n\t\tif (args > 50) {\n\t\t\tcolor += 3.5;\n\t\t}\n\n\t\tcolor = color / 10.5 * 255;\n\n\t\treturn [color, color, color];\n\t}\n\n\tconst mult = (~~(args > 50) + 1) * 0.5;\n\tconst r = ((color & 1) * mult) * 255;\n\tconst g = (((color >> 1) & 1) * mult) * 255;\n\tconst b = (((color >> 2) & 1) * mult) * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.ansi256.rgb = function (args) {\n\t// Handle greyscale\n\tif (args >= 232) {\n\t\tconst c = (args - 232) * 10 + 8;\n\t\treturn [c, c, c];\n\t}\n\n\targs -= 16;\n\n\tlet rem;\n\tconst r = Math.floor(args / 36) / 5 * 255;\n\tconst g = Math.floor((rem = args % 36) / 6) / 5 * 255;\n\tconst b = (rem % 6) / 5 * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hex = function (args) {\n\tconst integer = ((Math.round(args[0]) & 0xFF) << 16)\n\t\t+ ((Math.round(args[1]) & 0xFF) << 8)\n\t\t+ (Math.round(args[2]) & 0xFF);\n\n\tconst string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.hex.rgb = function (args) {\n\tconst match = args.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);\n\tif (!match) {\n\t\treturn [0, 0, 0];\n\t}\n\n\tlet colorString = match[0];\n\n\tif (match[0].length === 3) {\n\t\tcolorString = colorString.split('').map(char => {\n\t\t\treturn char + char;\n\t\t}).join('');\n\t}\n\n\tconst integer = parseInt(colorString, 16);\n\tconst r = (integer >> 16) & 0xFF;\n\tconst g = (integer >> 8) & 0xFF;\n\tconst b = integer & 0xFF;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hcg = function (rgb) {\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\tconst max = Math.max(Math.max(r, g), b);\n\tconst min = Math.min(Math.min(r, g), b);\n\tconst chroma = (max - min);\n\tlet grayscale;\n\tlet hue;\n\n\tif (chroma < 1) {\n\t\tgrayscale = min / (1 - chroma);\n\t} else {\n\t\tgrayscale = 0;\n\t}\n\n\tif (chroma <= 0) {\n\t\thue = 0;\n\t} else\n\tif (max === r) {\n\t\thue = ((g - b) / chroma) % 6;\n\t} else\n\tif (max === g) {\n\t\thue = 2 + (b - r) / chroma;\n\t} else {\n\t\thue = 4 + (r - g) / chroma;\n\t}\n\n\thue /= 6;\n\thue %= 1;\n\n\treturn [hue * 360, chroma * 100, grayscale * 100];\n};\n\nconvert.hsl.hcg = function (hsl) {\n\tconst s = hsl[1] / 100;\n\tconst l = hsl[2] / 100;\n\n\tconst c = l < 0.5 ? (2.0 * s * l) : (2.0 * s * (1.0 - l));\n\n\tlet f = 0;\n\tif (c < 1.0) {\n\t\tf = (l - 0.5 * c) / (1.0 - c);\n\t}\n\n\treturn [hsl[0], c * 100, f * 100];\n};\n\nconvert.hsv.hcg = function (hsv) {\n\tconst s = hsv[1] / 100;\n\tconst v = hsv[2] / 100;\n\n\tconst c = s * v;\n\tlet f = 0;\n\n\tif (c < 1.0) {\n\t\tf = (v - c) / (1 - c);\n\t}\n\n\treturn [hsv[0], c * 100, f * 100];\n};\n\nconvert.hcg.rgb = function (hcg) {\n\tconst h = hcg[0] / 360;\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\n\tif (c === 0.0) {\n\t\treturn [g * 255, g * 255, g * 255];\n\t}\n\n\tconst pure = [0, 0, 0];\n\tconst hi = (h % 1) * 6;\n\tconst v = hi % 1;\n\tconst w = 1 - v;\n\tlet mg = 0;\n\n\t/* eslint-disable max-statements-per-line */\n\tswitch (Math.floor(hi)) {\n\t\tcase 0:\n\t\t\tpure[0] = 1; pure[1] = v; pure[2] = 0; break;\n\t\tcase 1:\n\t\t\tpure[0] = w; pure[1] = 1; pure[2] = 0; break;\n\t\tcase 2:\n\t\t\tpure[0] = 0; pure[1] = 1; pure[2] = v; break;\n\t\tcase 3:\n\t\t\tpure[0] = 0; pure[1] = w; pure[2] = 1; break;\n\t\tcase 4:\n\t\t\tpure[0] = v; pure[1] = 0; pure[2] = 1; break;\n\t\tdefault:\n\t\t\tpure[0] = 1; pure[1] = 0; pure[2] = w;\n\t}\n\t/* eslint-enable max-statements-per-line */\n\n\tmg = (1.0 - c) * g;\n\n\treturn [\n\t\t(c * pure[0] + mg) * 255,\n\t\t(c * pure[1] + mg) * 255,\n\t\t(c * pure[2] + mg) * 255\n\t];\n};\n\nconvert.hcg.hsv = function (hcg) {\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\n\tconst v = c + g * (1.0 - c);\n\tlet f = 0;\n\n\tif (v > 0.0) {\n\t\tf = c / v;\n\t}\n\n\treturn [hcg[0], f * 100, v * 100];\n};\n\nconvert.hcg.hsl = function (hcg) {\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\n\tconst l = g * (1.0 - c) + 0.5 * c;\n\tlet s = 0;\n\n\tif (l > 0.0 && l < 0.5) {\n\t\ts = c / (2 * l);\n\t} else\n\tif (l >= 0.5 && l < 1.0) {\n\t\ts = c / (2 * (1 - l));\n\t}\n\n\treturn [hcg[0], s * 100, l * 100];\n};\n\nconvert.hcg.hwb = function (hcg) {\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\tconst v = c + g * (1.0 - c);\n\treturn [hcg[0], (v - c) * 100, (1 - v) * 100];\n};\n\nconvert.hwb.hcg = function (hwb) {\n\tconst w = hwb[1] / 100;\n\tconst b = hwb[2] / 100;\n\tconst v = 1 - b;\n\tconst c = v - w;\n\tlet g = 0;\n\n\tif (c < 1) {\n\t\tg = (v - c) / (1 - c);\n\t}\n\n\treturn [hwb[0], c * 100, g * 100];\n};\n\nconvert.apple.rgb = function (apple) {\n\treturn [(apple[0] / 65535) * 255, (apple[1] / 65535) * 255, (apple[2] / 65535) * 255];\n};\n\nconvert.rgb.apple = function (rgb) {\n\treturn [(rgb[0] / 255) * 65535, (rgb[1] / 255) * 65535, (rgb[2] / 255) * 65535];\n};\n\nconvert.gray.rgb = function (args) {\n\treturn [args[0] / 100 * 255, args[0] / 100 * 255, args[0] / 100 * 255];\n};\n\nconvert.gray.hsl = function (args) {\n\treturn [0, 0, args[0]];\n};\n\nconvert.gray.hsv = convert.gray.hsl;\n\nconvert.gray.hwb = function (gray) {\n\treturn [0, 100, gray[0]];\n};\n\nconvert.gray.cmyk = function (gray) {\n\treturn [0, 0, 0, gray[0]];\n};\n\nconvert.gray.lab = function (gray) {\n\treturn [gray[0], 0, 0];\n};\n\nconvert.gray.hex = function (gray) {\n\tconst val = Math.round(gray[0] / 100 * 255) & 0xFF;\n\tconst integer = (val << 16) + (val << 8) + val;\n\n\tconst string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.rgb.gray = function (rgb) {\n\tconst val = (rgb[0] + rgb[1] + rgb[2]) / 3;\n\treturn [val / 255 * 100];\n};\n", "const conversions = require('./conversions');\n\n/*\n\tThis function routes a model to all other models.\n\n\tall functions that are routed have a property `.conversion` attached\n\tto the returned synthetic function. This property is an array\n\tof strings, each with the steps in between the 'from' and 'to'\n\tcolor models (inclusive).\n\n\tconversions that are not possible simply are not included.\n*/\n\nfunction buildGraph() {\n\tconst graph = {};\n\t// https://jsperf.com/object-keys-vs-for-in-with-closure/3\n\tconst models = Object.keys(conversions);\n\n\tfor (let len = models.length, i = 0; i < len; i++) {\n\t\tgraph[models[i]] = {\n\t\t\t// http://jsperf.com/1-vs-infinity\n\t\t\t// micro-opt, but this is simple.\n\t\t\tdistance: -1,\n\t\t\tparent: null\n\t\t};\n\t}\n\n\treturn graph;\n}\n\n// https://en.wikipedia.org/wiki/Breadth-first_search\nfunction deriveBFS(fromModel) {\n\tconst graph = buildGraph();\n\tconst queue = [fromModel]; // Unshift -> queue -> pop\n\n\tgraph[fromModel].distance = 0;\n\n\twhile (queue.length) {\n\t\tconst current = queue.pop();\n\t\tconst adjacents = Object.keys(conversions[current]);\n\n\t\tfor (let len = adjacents.length, i = 0; i < len; i++) {\n\t\t\tconst adjacent = adjacents[i];\n\t\t\tconst node = graph[adjacent];\n\n\t\t\tif (node.distance === -1) {\n\t\t\t\tnode.distance = graph[current].distance + 1;\n\t\t\t\tnode.parent = current;\n\t\t\t\tqueue.unshift(adjacent);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn graph;\n}\n\nfunction link(from, to) {\n\treturn function (args) {\n\t\treturn to(from(args));\n\t};\n}\n\nfunction wrapConversion(toModel, graph) {\n\tconst path = [graph[toModel].parent, toModel];\n\tlet fn = conversions[graph[toModel].parent][toModel];\n\n\tlet cur = graph[toModel].parent;\n\twhile (graph[cur].parent) {\n\t\tpath.unshift(graph[cur].parent);\n\t\tfn = link(conversions[graph[cur].parent][cur], fn);\n\t\tcur = graph[cur].parent;\n\t}\n\n\tfn.conversion = path;\n\treturn fn;\n}\n\nmodule.exports = function (fromModel) {\n\tconst graph = deriveBFS(fromModel);\n\tconst conversion = {};\n\n\tconst models = Object.keys(graph);\n\tfor (let len = models.length, i = 0; i < len; i++) {\n\t\tconst toModel = models[i];\n\t\tconst node = graph[toModel];\n\n\t\tif (node.parent === null) {\n\t\t\t// No possible conversion, or this node is the source model.\n\t\t\tcontinue;\n\t\t}\n\n\t\tconversion[toModel] = wrapConversion(toModel, graph);\n\t}\n\n\treturn conversion;\n};\n\n", "const conversions = require('./conversions');\nconst route = require('./route');\n\nconst convert = {};\n\nconst models = Object.keys(conversions);\n\nfunction wrapRaw(fn) {\n\tconst wrappedFn = function (...args) {\n\t\tconst arg0 = args[0];\n\t\tif (arg0 === undefined || arg0 === null) {\n\t\t\treturn arg0;\n\t\t}\n\n\t\tif (arg0.length > 1) {\n\t\t\targs = arg0;\n\t\t}\n\n\t\treturn fn(args);\n\t};\n\n\t// Preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nfunction wrapRounded(fn) {\n\tconst wrappedFn = function (...args) {\n\t\tconst arg0 = args[0];\n\n\t\tif (arg0 === undefined || arg0 === null) {\n\t\t\treturn arg0;\n\t\t}\n\n\t\tif (arg0.length > 1) {\n\t\t\targs = arg0;\n\t\t}\n\n\t\tconst result = fn(args);\n\n\t\t// We're assuming the result is an array here.\n\t\t// see notice in conversions.js; don't use box types\n\t\t// in conversion functions.\n\t\tif (typeof result === 'object') {\n\t\t\tfor (let len = result.length, i = 0; i < len; i++) {\n\t\t\t\tresult[i] = Math.round(result[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t};\n\n\t// Preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nmodels.forEach(fromModel => {\n\tconvert[fromModel] = {};\n\n\tObject.defineProperty(convert[fromModel], 'channels', {value: conversions[fromModel].channels});\n\tObject.defineProperty(convert[fromModel], 'labels', {value: conversions[fromModel].labels});\n\n\tconst routes = route(fromModel);\n\tconst routeModels = Object.keys(routes);\n\n\trouteModels.forEach(toModel => {\n\t\tconst fn = routes[toModel];\n\n\t\tconvert[fromModel][toModel] = wrapRounded(fn);\n\t\tconvert[fromModel][toModel].raw = wrapRaw(fn);\n\t});\n});\n\nmodule.exports = convert;\n", "'use strict';\n\nconst wrapAnsi16 = (fn, offset) => (...args) => {\n\tconst code = fn(...args);\n\treturn `\\u001B[${code + offset}m`;\n};\n\nconst wrapAnsi256 = (fn, offset) => (...args) => {\n\tconst code = fn(...args);\n\treturn `\\u001B[${38 + offset};5;${code}m`;\n};\n\nconst wrapAnsi16m = (fn, offset) => (...args) => {\n\tconst rgb = fn(...args);\n\treturn `\\u001B[${38 + offset};2;${rgb[0]};${rgb[1]};${rgb[2]}m`;\n};\n\nconst ansi2ansi = n => n;\nconst rgb2rgb = (r, g, b) => [r, g, b];\n\nconst setLazyProperty = (object, property, get) => {\n\tObject.defineProperty(object, property, {\n\t\tget: () => {\n\t\t\tconst value = get();\n\n\t\t\tObject.defineProperty(object, property, {\n\t\t\t\tvalue,\n\t\t\t\tenumerable: true,\n\t\t\t\tconfigurable: true\n\t\t\t});\n\n\t\t\treturn value;\n\t\t},\n\t\tenumerable: true,\n\t\tconfigurable: true\n\t});\n};\n\n/** @type {typeof import('color-convert')} */\nlet colorConvert;\nconst makeDynamicStyles = (wrap, targetSpace, identity, isBackground) => {\n\tif (colorConvert === undefined) {\n\t\tcolorConvert = require('color-convert');\n\t}\n\n\tconst offset = isBackground ? 10 : 0;\n\tconst styles = {};\n\n\tfor (const [sourceSpace, suite] of Object.entries(colorConvert)) {\n\t\tconst name = sourceSpace === 'ansi16' ? 'ansi' : sourceSpace;\n\t\tif (sourceSpace === targetSpace) {\n\t\t\tstyles[name] = wrap(identity, offset);\n\t\t} else if (typeof suite === 'object') {\n\t\t\tstyles[name] = wrap(suite[targetSpace], offset);\n\t\t}\n\t}\n\n\treturn styles;\n};\n\nfunction assembleStyles() {\n\tconst codes = new Map();\n\tconst styles = {\n\t\tmodifier: {\n\t\t\treset: [0, 0],\n\t\t\t// 21 isn't widely supported and 22 does the same thing\n\t\t\tbold: [1, 22],\n\t\t\tdim: [2, 22],\n\t\t\titalic: [3, 23],\n\t\t\tunderline: [4, 24],\n\t\t\tinverse: [7, 27],\n\t\t\thidden: [8, 28],\n\t\t\tstrikethrough: [9, 29]\n\t\t},\n\t\tcolor: {\n\t\t\tblack: [30, 39],\n\t\t\tred: [31, 39],\n\t\t\tgreen: [32, 39],\n\t\t\tyellow: [33, 39],\n\t\t\tblue: [34, 39],\n\t\t\tmagenta: [35, 39],\n\t\t\tcyan: [36, 39],\n\t\t\twhite: [37, 39],\n\n\t\t\t// Bright color\n\t\t\tblackBright: [90, 39],\n\t\t\tredBright: [91, 39],\n\t\t\tgreenBright: [92, 39],\n\t\t\tyellowBright: [93, 39],\n\t\t\tblueBright: [94, 39],\n\t\t\tmagentaBright: [95, 39],\n\t\t\tcyanBright: [96, 39],\n\t\t\twhiteBright: [97, 39]\n\t\t},\n\t\tbgColor: {\n\t\t\tbgBlack: [40, 49],\n\t\t\tbgRed: [41, 49],\n\t\t\tbgGreen: [42, 49],\n\t\t\tbgYellow: [43, 49],\n\t\t\tbgBlue: [44, 49],\n\t\t\tbgMagenta: [45, 49],\n\t\t\tbgCyan: [46, 49],\n\t\t\tbgWhite: [47, 49],\n\n\t\t\t// Bright color\n\t\t\tbgBlackBright: [100, 49],\n\t\t\tbgRedBright: [101, 49],\n\t\t\tbgGreenBright: [102, 49],\n\t\t\tbgYellowBright: [103, 49],\n\t\t\tbgBlueBright: [104, 49],\n\t\t\tbgMagentaBright: [105, 49],\n\t\t\tbgCyanBright: [106, 49],\n\t\t\tbgWhiteBright: [107, 49]\n\t\t}\n\t};\n\n\t// Alias bright black as gray (and grey)\n\tstyles.color.gray = styles.color.blackBright;\n\tstyles.bgColor.bgGray = styles.bgColor.bgBlackBright;\n\tstyles.color.grey = styles.color.blackBright;\n\tstyles.bgColor.bgGrey = styles.bgColor.bgBlackBright;\n\n\tfor (const [groupName, group] of Object.entries(styles)) {\n\t\tfor (const [styleName, style] of Object.entries(group)) {\n\t\t\tstyles[styleName] = {\n\t\t\t\topen: `\\u001B[${style[0]}m`,\n\t\t\t\tclose: `\\u001B[${style[1]}m`\n\t\t\t};\n\n\t\t\tgroup[styleName] = styles[styleName];\n\n\t\t\tcodes.set(style[0], style[1]);\n\t\t}\n\n\t\tObject.defineProperty(styles, groupName, {\n\t\t\tvalue: group,\n\t\t\tenumerable: false\n\t\t});\n\t}\n\n\tObject.defineProperty(styles, 'codes', {\n\t\tvalue: codes,\n\t\tenumerable: false\n\t});\n\n\tstyles.color.close = '\\u001B[39m';\n\tstyles.bgColor.close = '\\u001B[49m';\n\n\tsetLazyProperty(styles.color, 'ansi', () => makeDynamicStyles(wrapAnsi16, 'ansi16', ansi2ansi, false));\n\tsetLazyProperty(styles.color, 'ansi256', () => makeDynamicStyles(wrapAnsi256, 'ansi256', ansi2ansi, false));\n\tsetLazyProperty(styles.color, 'ansi16m', () => makeDynamicStyles(wrapAnsi16m, 'rgb', rgb2rgb, false));\n\tsetLazyProperty(styles.bgColor, 'ansi', () => makeDynamicStyles(wrapAnsi16, 'ansi16', ansi2ansi, true));\n\tsetLazyProperty(styles.bgColor, 'ansi256', () => makeDynamicStyles(wrapAnsi256, 'ansi256', ansi2ansi, true));\n\tsetLazyProperty(styles.bgColor, 'ansi16m', () => makeDynamicStyles(wrapAnsi16m, 'rgb', rgb2rgb, true));\n\n\treturn styles;\n}\n\n// Make the export immutable\nObject.defineProperty(module, 'exports', {\n\tenumerable: true,\n\tget: assembleStyles\n});\n", "'use strict';\n\nmodule.exports = (flag, argv = process.argv) => {\n\tconst prefix = flag.startsWith('-') ? '' : (flag.length === 1 ? '-' : '--');\n\tconst position = argv.indexOf(prefix + flag);\n\tconst terminatorPosition = argv.indexOf('--');\n\treturn position !== -1 && (terminatorPosition === -1 || position < terminatorPosition);\n};\n", "'use strict';\nconst os = require('os');\nconst tty = require('tty');\nconst hasFlag = require('has-flag');\n\nconst {env} = process;\n\nlet forceColor;\nif (hasFlag('no-color') ||\n\thasFlag('no-colors') ||\n\thasFlag('color=false') ||\n\thasFlag('color=never')) {\n\tforceColor = 0;\n} else if (hasFlag('color') ||\n\thasFlag('colors') ||\n\thasFlag('color=true') ||\n\thasFlag('color=always')) {\n\tforceColor = 1;\n}\n\nif ('FORCE_COLOR' in env) {\n\tif (env.FORCE_COLOR === 'true') {\n\t\tforceColor = 1;\n\t} else if (env.FORCE_COLOR === 'false') {\n\t\tforceColor = 0;\n\t} else {\n\t\tforceColor = env.FORCE_COLOR.length === 0 ? 1 : Math.min(parseInt(env.FORCE_COLOR, 10), 3);\n\t}\n}\n\nfunction translateLevel(level) {\n\tif (level === 0) {\n\t\treturn false;\n\t}\n\n\treturn {\n\t\tlevel,\n\t\thasBasic: true,\n\t\thas256: level >= 2,\n\t\thas16m: level >= 3\n\t};\n}\n\nfunction supportsColor(haveStream, streamIsTTY) {\n\tif (forceColor === 0) {\n\t\treturn 0;\n\t}\n\n\tif (hasFlag('color=16m') ||\n\t\thasFlag('color=full') ||\n\t\thasFlag('color=truecolor')) {\n\t\treturn 3;\n\t}\n\n\tif (hasFlag('color=256')) {\n\t\treturn 2;\n\t}\n\n\tif (haveStream && !streamIsTTY && forceColor === undefined) {\n\t\treturn 0;\n\t}\n\n\tconst min = forceColor || 0;\n\n\tif (env.TERM === 'dumb') {\n\t\treturn min;\n\t}\n\n\tif (process.platform === 'win32') {\n\t\t// Windows 10 build 10586 is the first Windows release that supports 256 colors.\n\t\t// Windows 10 build 14931 is the first release that supports 16m/TrueColor.\n\t\tconst osRelease = os.release().split('.');\n\t\tif (\n\t\t\tNumber(osRelease[0]) >= 10 &&\n\t\t\tNumber(osRelease[2]) >= 10586\n\t\t) {\n\t\t\treturn Number(osRelease[2]) >= 14931 ? 3 : 2;\n\t\t}\n\n\t\treturn 1;\n\t}\n\n\tif ('CI' in env) {\n\t\tif (['TRAVIS', 'CIRCLECI', 'APPVEYOR', 'GITLAB_CI', 'GITHUB_ACTIONS', 'BUILDKITE'].some(sign => sign in env) || env.CI_NAME === 'codeship') {\n\t\t\treturn 1;\n\t\t}\n\n\t\treturn min;\n\t}\n\n\tif ('TEAMCITY_VERSION' in env) {\n\t\treturn /^(9\\.(0*[1-9]\\d*)\\.|\\d{2,}\\.)/.test(env.TEAMCITY_VERSION) ? 1 : 0;\n\t}\n\n\tif (env.COLORTERM === 'truecolor') {\n\t\treturn 3;\n\t}\n\n\tif ('TERM_PROGRAM' in env) {\n\t\tconst version = parseInt((env.TERM_PROGRAM_VERSION || '').split('.')[0], 10);\n\n\t\tswitch (env.TERM_PROGRAM) {\n\t\t\tcase 'iTerm.app':\n\t\t\t\treturn version >= 3 ? 3 : 2;\n\t\t\tcase 'Apple_Terminal':\n\t\t\t\treturn 2;\n\t\t\t// No default\n\t\t}\n\t}\n\n\tif (/-256(color)?$/i.test(env.TERM)) {\n\t\treturn 2;\n\t}\n\n\tif (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)) {\n\t\treturn 1;\n\t}\n\n\tif ('COLORTERM' in env) {\n\t\treturn 1;\n\t}\n\n\treturn min;\n}\n\nfunction getSupportLevel(stream) {\n\tconst level = supportsColor(stream, stream && stream.isTTY);\n\treturn translateLevel(level);\n}\n\nmodule.exports = {\n\tsupportsColor: getSupportLevel,\n\tstdout: translateLevel(supportsColor(true, tty.isatty(1))),\n\tstderr: translateLevel(supportsColor(true, tty.isatty(2)))\n};\n", "'use strict';\n\nconst stringReplaceAll = (string, substring, replacer) => {\n\tlet index = string.indexOf(substring);\n\tif (index === -1) {\n\t\treturn string;\n\t}\n\n\tconst substringLength = substring.length;\n\tlet endIndex = 0;\n\tlet returnValue = '';\n\tdo {\n\t\treturnValue += string.substr(endIndex, index - endIndex) + substring + replacer;\n\t\tendIndex = index + substringLength;\n\t\tindex = string.indexOf(substring, endIndex);\n\t} while (index !== -1);\n\n\treturnValue += string.substr(endIndex);\n\treturn returnValue;\n};\n\nconst stringEncaseCRLFWithFirstIndex = (string, prefix, postfix, index) => {\n\tlet endIndex = 0;\n\tlet returnValue = '';\n\tdo {\n\t\tconst gotCR = string[index - 1] === '\\r';\n\t\treturnValue += string.substr(endIndex, (gotCR ? index - 1 : index) - endIndex) + prefix + (gotCR ? '\\r\\n' : '\\n') + postfix;\n\t\tendIndex = index + 1;\n\t\tindex = string.indexOf('\\n', endIndex);\n\t} while (index !== -1);\n\n\treturnValue += string.substr(endIndex);\n\treturn returnValue;\n};\n\nmodule.exports = {\n\tstringReplaceAll,\n\tstringEncaseCRLFWithFirstIndex\n};\n", "'use strict';\nconst TEMPLATE_REGEX = /(?:\\\\(u(?:[a-f\\d]{4}|\\{[a-f\\d]{1,6}\\})|x[a-f\\d]{2}|.))|(?:\\{(~)?(\\w+(?:\\([^)]*\\))?(?:\\.\\w+(?:\\([^)]*\\))?)*)(?:[ \\t]|(?=\\r?\\n)))|(\\})|((?:.|[\\r\\n\\f])+?)/gi;\nconst STYLE_REGEX = /(?:^|\\.)(\\w+)(?:\\(([^)]*)\\))?/g;\nconst STRING_REGEX = /^(['\"])((?:\\\\.|(?!\\1)[^\\\\])*)\\1$/;\nconst ESCAPE_REGEX = /\\\\(u(?:[a-f\\d]{4}|{[a-f\\d]{1,6}})|x[a-f\\d]{2}|.)|([^\\\\])/gi;\n\nconst ESCAPES = new Map([\n\t['n', '\\n'],\n\t['r', '\\r'],\n\t['t', '\\t'],\n\t['b', '\\b'],\n\t['f', '\\f'],\n\t['v', '\\v'],\n\t['0', '\\0'],\n\t['\\\\', '\\\\'],\n\t['e', '\\u001B'],\n\t['a', '\\u0007']\n]);\n\nfunction unescape(c) {\n\tconst u = c[0] === 'u';\n\tconst bracket = c[1] === '{';\n\n\tif ((u && !bracket && c.length === 5) || (c[0] === 'x' && c.length === 3)) {\n\t\treturn String.fromCharCode(parseInt(c.slice(1), 16));\n\t}\n\n\tif (u && bracket) {\n\t\treturn String.fromCodePoint(parseInt(c.slice(2, -1), 16));\n\t}\n\n\treturn ESCAPES.get(c) || c;\n}\n\nfunction parseArguments(name, arguments_) {\n\tconst results = [];\n\tconst chunks = arguments_.trim().split(/\\s*,\\s*/g);\n\tlet matches;\n\n\tfor (const chunk of chunks) {\n\t\tconst number = Number(chunk);\n\t\tif (!Number.isNaN(number)) {\n\t\t\tresults.push(number);\n\t\t} else if ((matches = chunk.match(STRING_REGEX))) {\n\t\t\tresults.push(matches[2].replace(ESCAPE_REGEX, (m, escape, character) => escape ? unescape(escape) : character));\n\t\t} else {\n\t\t\tthrow new Error(`Invalid Chalk template style argument: ${chunk} (in style '${name}')`);\n\t\t}\n\t}\n\n\treturn results;\n}\n\nfunction parseStyle(style) {\n\tSTYLE_REGEX.lastIndex = 0;\n\n\tconst results = [];\n\tlet matches;\n\n\twhile ((matches = STYLE_REGEX.exec(style)) !== null) {\n\t\tconst name = matches[1];\n\n\t\tif (matches[2]) {\n\t\t\tconst args = parseArguments(name, matches[2]);\n\t\t\tresults.push([name].concat(args));\n\t\t} else {\n\t\t\tresults.push([name]);\n\t\t}\n\t}\n\n\treturn results;\n}\n\nfunction buildStyle(chalk, styles) {\n\tconst enabled = {};\n\n\tfor (const layer of styles) {\n\t\tfor (const style of layer.styles) {\n\t\t\tenabled[style[0]] = layer.inverse ? null : style.slice(1);\n\t\t}\n\t}\n\n\tlet current = chalk;\n\tfor (const [styleName, styles] of Object.entries(enabled)) {\n\t\tif (!Array.isArray(styles)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (!(styleName in current)) {\n\t\t\tthrow new Error(`Unknown Chalk style: ${styleName}`);\n\t\t}\n\n\t\tcurrent = styles.length > 0 ? current[styleName](...styles) : current[styleName];\n\t}\n\n\treturn current;\n}\n\nmodule.exports = (chalk, temporary) => {\n\tconst styles = [];\n\tconst chunks = [];\n\tlet chunk = [];\n\n\t// eslint-disable-next-line max-params\n\ttemporary.replace(TEMPLATE_REGEX, (m, escapeCharacter, inverse, style, close, character) => {\n\t\tif (escapeCharacter) {\n\t\t\tchunk.push(unescape(escapeCharacter));\n\t\t} else if (style) {\n\t\t\tconst string = chunk.join('');\n\t\t\tchunk = [];\n\t\t\tchunks.push(styles.length === 0 ? string : buildStyle(chalk, styles)(string));\n\t\t\tstyles.push({inverse, styles: parseStyle(style)});\n\t\t} else if (close) {\n\t\t\tif (styles.length === 0) {\n\t\t\t\tthrow new Error('Found extraneous } in Chalk template literal');\n\t\t\t}\n\n\t\t\tchunks.push(buildStyle(chalk, styles)(chunk.join('')));\n\t\t\tchunk = [];\n\t\t\tstyles.pop();\n\t\t} else {\n\t\t\tchunk.push(character);\n\t\t}\n\t});\n\n\tchunks.push(chunk.join(''));\n\n\tif (styles.length > 0) {\n\t\tconst errMessage = `Chalk template literal is missing ${styles.length} closing bracket${styles.length === 1 ? '' : 's'} (\\`}\\`)`;\n\t\tthrow new Error(errMessage);\n\t}\n\n\treturn chunks.join('');\n};\n", "'use strict';\nconst ansiStyles = require('ansi-styles');\nconst {stdout: stdoutColor, stderr: stderrColor} = require('supports-color');\nconst {\n\tstringReplaceAll,\n\tstringEncaseCRLFWithFirstIndex\n} = require('./util');\n\nconst {isArray} = Array;\n\n// `supportsColor.level` \u2192 `ansiStyles.color[name]` mapping\nconst levelMapping = [\n\t'ansi',\n\t'ansi',\n\t'ansi256',\n\t'ansi16m'\n];\n\nconst styles = Object.create(null);\n\nconst applyOptions = (object, options = {}) => {\n\tif (options.level && !(Number.isInteger(options.level) && options.level >= 0 && options.level <= 3)) {\n\t\tthrow new Error('The `level` option should be an integer from 0 to 3');\n\t}\n\n\t// Detect level if not set manually\n\tconst colorLevel = stdoutColor ? stdoutColor.level : 0;\n\tobject.level = options.level === undefined ? colorLevel : options.level;\n};\n\nclass ChalkClass {\n\tconstructor(options) {\n\t\t// eslint-disable-next-line no-constructor-return\n\t\treturn chalkFactory(options);\n\t}\n}\n\nconst chalkFactory = options => {\n\tconst chalk = {};\n\tapplyOptions(chalk, options);\n\n\tchalk.template = (...arguments_) => chalkTag(chalk.template, ...arguments_);\n\n\tObject.setPrototypeOf(chalk, Chalk.prototype);\n\tObject.setPrototypeOf(chalk.template, chalk);\n\n\tchalk.template.constructor = () => {\n\t\tthrow new Error('`chalk.constructor()` is deprecated. Use `new chalk.Instance()` instead.');\n\t};\n\n\tchalk.template.Instance = ChalkClass;\n\n\treturn chalk.template;\n};\n\nfunction Chalk(options) {\n\treturn chalkFactory(options);\n}\n\nfor (const [styleName, style] of Object.entries(ansiStyles)) {\n\tstyles[styleName] = {\n\t\tget() {\n\t\t\tconst builder = createBuilder(this, createStyler(style.open, style.close, this._styler), this._isEmpty);\n\t\t\tObject.defineProperty(this, styleName, {value: builder});\n\t\t\treturn builder;\n\t\t}\n\t};\n}\n\nstyles.visible = {\n\tget() {\n\t\tconst builder = createBuilder(this, this._styler, true);\n\t\tObject.defineProperty(this, 'visible', {value: builder});\n\t\treturn builder;\n\t}\n};\n\nconst usedModels = ['rgb', 'hex', 'keyword', 'hsl', 'hsv', 'hwb', 'ansi', 'ansi256'];\n\nfor (const model of usedModels) {\n\tstyles[model] = {\n\t\tget() {\n\t\t\tconst {level} = this;\n\t\t\treturn function (...arguments_) {\n\t\t\t\tconst styler = createStyler(ansiStyles.color[levelMapping[level]][model](...arguments_), ansiStyles.color.close, this._styler);\n\t\t\t\treturn createBuilder(this, styler, this._isEmpty);\n\t\t\t};\n\t\t}\n\t};\n}\n\nfor (const model of usedModels) {\n\tconst bgModel = 'bg' + model[0].toUpperCase() + model.slice(1);\n\tstyles[bgModel] = {\n\t\tget() {\n\t\t\tconst {level} = this;\n\t\t\treturn function (...arguments_) {\n\t\t\t\tconst styler = createStyler(ansiStyles.bgColor[levelMapping[level]][model](...arguments_), ansiStyles.bgColor.close, this._styler);\n\t\t\t\treturn createBuilder(this, styler, this._isEmpty);\n\t\t\t};\n\t\t}\n\t};\n}\n\nconst proto = Object.defineProperties(() => {}, {\n\t...styles,\n\tlevel: {\n\t\tenumerable: true,\n\t\tget() {\n\t\t\treturn this._generator.level;\n\t\t},\n\t\tset(level) {\n\t\t\tthis._generator.level = level;\n\t\t}\n\t}\n});\n\nconst createStyler = (open, close, parent) => {\n\tlet openAll;\n\tlet closeAll;\n\tif (parent === undefined) {\n\t\topenAll = open;\n\t\tcloseAll = close;\n\t} else {\n\t\topenAll = parent.openAll + open;\n\t\tcloseAll = close + parent.closeAll;\n\t}\n\n\treturn {\n\t\topen,\n\t\tclose,\n\t\topenAll,\n\t\tcloseAll,\n\t\tparent\n\t};\n};\n\nconst createBuilder = (self, _styler, _isEmpty) => {\n\tconst builder = (...arguments_) => {\n\t\tif (isArray(arguments_[0]) && isArray(arguments_[0].raw)) {\n\t\t\t// Called as a template literal, for example: chalk.red`2 + 3 = {bold ${2+3}}`\n\t\t\treturn applyStyle(builder, chalkTag(builder, ...arguments_));\n\t\t}\n\n\t\t// Single argument is hot path, implicit coercion is faster than anything\n\t\t// eslint-disable-next-line no-implicit-coercion\n\t\treturn applyStyle(builder, (arguments_.length === 1) ? ('' + arguments_[0]) : arguments_.join(' '));\n\t};\n\n\t// We alter the prototype because we must return a function, but there is\n\t// no way to create a function with a different prototype\n\tObject.setPrototypeOf(builder, proto);\n\n\tbuilder._generator = self;\n\tbuilder._styler = _styler;\n\tbuilder._isEmpty = _isEmpty;\n\n\treturn builder;\n};\n\nconst applyStyle = (self, string) => {\n\tif (self.level <= 0 || !string) {\n\t\treturn self._isEmpty ? '' : string;\n\t}\n\n\tlet styler = self._styler;\n\n\tif (styler === undefined) {\n\t\treturn string;\n\t}\n\n\tconst {openAll, closeAll} = styler;\n\tif (string.indexOf('\\u001B') !== -1) {\n\t\twhile (styler !== undefined) {\n\t\t\t// Replace any instances already present with a re-opening code\n\t\t\t// otherwise only the part of the string until said closing code\n\t\t\t// will be colored, and the rest will simply be 'plain'.\n\t\t\tstring = stringReplaceAll(string, styler.close, styler.open);\n\n\t\t\tstyler = styler.parent;\n\t\t}\n\t}\n\n\t// We can move both next actions out of loop, because remaining actions in loop won't have\n\t// any/visible effect on parts we add here. Close the styling before a linebreak and reopen\n\t// after next line to fix a bleed issue on macOS: https://github.com/chalk/chalk/pull/92\n\tconst lfIndex = string.indexOf('\\n');\n\tif (lfIndex !== -1) {\n\t\tstring = stringEncaseCRLFWithFirstIndex(string, closeAll, openAll, lfIndex);\n\t}\n\n\treturn openAll + string + closeAll;\n};\n\nlet template;\nconst chalkTag = (chalk, ...strings) => {\n\tconst [firstString] = strings;\n\n\tif (!isArray(firstString) || !isArray(firstString.raw)) {\n\t\t// If chalk() was called by itself or with a string,\n\t\t// return the string itself as a string.\n\t\treturn strings.join(' ');\n\t}\n\n\tconst arguments_ = strings.slice(1);\n\tconst parts = [firstString.raw[0]];\n\n\tfor (let i = 1; i < firstString.length; i++) {\n\t\tparts.push(\n\t\t\tString(arguments_[i - 1]).replace(/[{}\\\\]/g, '\\\\$&'),\n\t\t\tString(firstString.raw[i])\n\t\t);\n\t}\n\n\tif (template === undefined) {\n\t\ttemplate = require('./templates');\n\t}\n\n\treturn template(chalk, parts.join(''));\n};\n\nObject.defineProperties(Chalk.prototype, styles);\n\nconst chalk = Chalk(); // eslint-disable-line new-cap\nchalk.supportsColor = stdoutColor;\nchalk.stderr = Chalk({level: stderrColor ? stderrColor.level : 0}); // eslint-disable-line new-cap\nchalk.stderr.supportsColor = stderrColor;\n\nmodule.exports = chalk;\n", "import which from \"which\";\nimport plist from \"simple-plist\";\nimport child_process from \"child_process\";\nimport fs from \"fs\";\nimport path from \"path\";\nimport chalk from \"chalk\";\n\nconst TEMP_DIR = \"/Applications/git-peek.app/Contents/temp\";\nimport { PROTOCOL } from \"./PROTOCOL\";\n\nexport function execSync(cmd) {\n console.log(\"$ \", chalk.gray(cmd));\n return child_process.execSync(cmd, { cwd: process.cwd(), stdio: \"inherit\" });\n}\n\nexport async function register(editor: string) {\n try {\n await which(\"duti\");\n } catch (exception) {\n const installCommand = `HOMEBREW_NO_AUTO_UPDATE=1 HOMEBREW_NO_INSTALL_CLEANUP=1 brew install duti`;\n console.log(`duti not installed. Installing with homebrew.`);\n execSync(installCommand);\n }\n\n const gitPeekShim = path.join(\n \"/Applications/git-peek.app/Contents/\",\n \"git-peek-shim\"\n );\n\n console.log(\"Generating AppleScript handler.\");\n const appleScriptCode = await generateAppleScript(gitPeekShim, TEMP_DIR);\n const appleScriptFile = path.join(process.cwd(), \"git-peek.applescript\");\n const appleScriptApp = path.join(process.cwd(), \"git-peek.app\");\n await fs.promises.writeFile(appleScriptFile, appleScriptCode, \"utf8\");\n console.log(chalk.gray(appleScriptCode));\n console.log(\"Compiling .applescript to .app\");\n execSync(`osacompile -o git-peek.app ${appleScriptFile}`);\n console.log(\"Updating Info.plist to support URL handler\");\n const infoPlist = path.join(appleScriptApp, \"contents/Info.plist\");\n const info = plist.readFileSync(infoPlist);\n info[\"CFBundleIdentifier\"] = \"com.apple.ScriptEditor.id.git-peek\";\n info[\"CFBundleURLTypes\"] = [\n {\n CFBundleURLName: \"HTTP URL\",\n CFBundleURLSchemes: [\"http\", \"https\", PROTOCOL],\n },\n ];\n info[\"LSBackgroundOnly\"] = true;\n plist.writeFileSync(infoPlist, info);\n console.log(\"Updated Info.plist\");\n console.log(\"Moving application to /Applications/git-peek.app\");\n if (fs.existsSync(\"/Applications/git-peek.app\")) {\n fs.rmSync(\"/Applications/git-peek.app\", {\n recursive: true,\n force: true,\n });\n }\n\n if (fs.existsSync(\"/Applications/git-peek.app\")) {\n fs.rmSync(\"/Applications/git-peek.app\", { force: true, recursive: true });\n }\n\n fs.renameSync(appleScriptApp, \"/Applications/git-peek.app\");\n\n console.log(chalk.gray(`mkdir ${TEMP_DIR}`));\n fs.mkdirSync(TEMP_DIR);\n\n const shim = `#!/bin/bash\n\n# AppleScript might run as a different user/environment variables.\n# So we have to inline some environment variables!\nexport PATH=$PATH:${JSON.stringify(process.env.PATH) || \"\"}\nexport EDITOR=${JSON.stringify(editor)}\nexport HOME=${JSON.stringify(process.env.HOME) || \"\"}\nexport USER=${JSON.stringify(process.env.USER) || \"\"}\n\n.${JSON.stringify(await which(\"git-peek\"))} --fromscript $1 $2 $3 $4 & disown\n`;\n\n console.log(\n \"// --- BEGIN SHIM FILE ---\\n\" +\n chalk.gray(shim) +\n \"\\n// --- END SHIM FILE ---\"\n );\n console.log(`Wrote shim file (${chalk.gray(gitPeekShim)})`);\n fs.writeFileSync(gitPeekShim, shim, \"utf8\");\n execSync(\"chmod +x \" + gitPeekShim);\n\n console.log(\"Registering URL handler...\");\n execSync(`duti -s com.apple.ScriptEditor.id.git-peek ${PROTOCOL}`);\n\n fs.rmSync(appleScriptFile);\n\n if (fs.existsSync(\"/Applications/Google Chrome.app\")) {\n console.log(`Adding ${PROTOCOL}:// to Google Chrome`);\n try {\n execSync(\n `defaults write com.google.Chrome URLWhitelist -array '${PROTOCOL}://*'`\n );\n } catch (exception) {\n console.warn(\"Failed to add protocol to Google Chrome. Its okay.\");\n }\n }\n\n console.log(chalk.green(\"\u2705 Registered git-peek:// protocol successfully.\"));\n console.log('To unregister, just delete \"/Applications/git-peek.app\".');\n console.log(\"To test it, run this:\");\n console.log(\" \" + chalk.blue(`open git-peek://Jarred-Sumner/git-peek`));\n if (editor.includes(\"vi\")) {\n console.warn(\n \"vim/vi not supported (no terminal window will be open), but if you know a way to run a terminal window from the AppleScript please do submit a PR!\"\n );\n }\n}\n\nexport async function generateAppleScript(shimLocation: string, tempDir) {\n return `\n\non open location this_URL\n try\n set innerCmd to \"${shimLocation} \" & quoted form of this_URL & \" &> /usr/local/var/log/git-peek &\"\n do shell script innerCmd\n on error errMsg\n display dialog errMsg\n end try\nend open location\n`.trim();\n}\n", "class Node {\n\t/// value;\n\t/// next;\n\n\tconstructor(value) {\n\t\tthis.value = value;\n\n\t\t// TODO: Remove this when targeting Node.js 12.\n\t\tthis.next = undefined;\n\t}\n}\n\nclass Queue {\n\t// TODO: Use private class fields when targeting Node.js 12.\n\t// #_head;\n\t// #_tail;\n\t// #_size;\n\n\tconstructor() {\n\t\tthis.clear();\n\t}\n\n\tenqueue(value) {\n\t\tconst node = new Node(value);\n\n\t\tif (this._head) {\n\t\t\tthis._tail.next = node;\n\t\t\tthis._tail = node;\n\t\t} else {\n\t\t\tthis._head = node;\n\t\t\tthis._tail = node;\n\t\t}\n\n\t\tthis._size++;\n\t}\n\n\tdequeue() {\n\t\tconst current = this._head;\n\t\tif (!current) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._head = this._head.next;\n\t\tthis._size--;\n\t\treturn current.value;\n\t}\n\n\tclear() {\n\t\tthis._head = undefined;\n\t\tthis._tail = undefined;\n\t\tthis._size = 0;\n\t}\n\n\tget size() {\n\t\treturn this._size;\n\t}\n\n\t* [Symbol.iterator]() {\n\t\tlet current = this._head;\n\n\t\twhile (current) {\n\t\t\tyield current.value;\n\t\t\tcurrent = current.next;\n\t\t}\n\t}\n}\n\nmodule.exports = Queue;\n", "'use strict';\nconst Queue = require('yocto-queue');\n\nconst pLimit = concurrency => {\n\tif (!((Number.isInteger(concurrency) || concurrency === Infinity) && concurrency > 0)) {\n\t\tthrow new TypeError('Expected `concurrency` to be a number from 1 and up');\n\t}\n\n\tconst queue = new Queue();\n\tlet activeCount = 0;\n\n\tconst next = () => {\n\t\tactiveCount--;\n\n\t\tif (queue.size > 0) {\n\t\t\tqueue.dequeue()();\n\t\t}\n\t};\n\n\tconst run = async (fn, resolve, ...args) => {\n\t\tactiveCount++;\n\n\t\tconst result = (async () => fn(...args))();\n\n\t\tresolve(result);\n\n\t\ttry {\n\t\t\tawait result;\n\t\t} catch {}\n\n\t\tnext();\n\t};\n\n\tconst enqueue = (fn, resolve, ...args) => {\n\t\tqueue.enqueue(run.bind(null, fn, resolve, ...args));\n\n\t\t(async () => {\n\t\t\t// This function needs to wait until the next microtask before comparing\n\t\t\t// `activeCount` to `concurrency`, because `activeCount` is updated asynchronously\n\t\t\t// when the run function is dequeued and called. The comparison in the if-statement\n\t\t\t// needs to happen asynchronously as well to get an up-to-date value for `activeCount`.\n\t\t\tawait Promise.resolve();\n\n\t\t\tif (activeCount < concurrency && queue.size > 0) {\n\t\t\t\tqueue.dequeue()();\n\t\t\t}\n\t\t})();\n\t};\n\n\tconst generator = (fn, ...args) => new Promise(resolve => {\n\t\tenqueue(fn, resolve, ...args);\n\t});\n\n\tObject.defineProperties(generator, {\n\t\tactiveCount: {\n\t\t\tget: () => activeCount\n\t\t},\n\t\tpendingCount: {\n\t\t\tget: () => queue.size\n\t\t},\n\t\tclearQueue: {\n\t\t\tvalue: () => {\n\t\t\t\tqueue.clear();\n\t\t\t}\n\t\t}\n\t});\n\n\treturn generator;\n};\n\nmodule.exports = pLimit;\n", "'use strict';\nconst pLimit = require('p-limit');\n\nclass EndError extends Error {\n\tconstructor(value) {\n\t\tsuper();\n\t\tthis.value = value;\n\t}\n}\n\n// The input can also be a promise, so we await it\nconst testElement = async (element, tester) => tester(await element);\n\n// The input can also be a promise, so we `Promise.all()` them both\nconst finder = async element => {\n\tconst values = await Promise.all(element);\n\tif (values[1] === true) {\n\t\tthrow new EndError(values[0]);\n\t}\n\n\treturn false;\n};\n\nconst pLocate = async (iterable, tester, options) => {\n\toptions = {\n\t\tconcurrency: Infinity,\n\t\tpreserveOrder: true,\n\t\t...options\n\t};\n\n\tconst limit = pLimit(options.concurrency);\n\n\t// Start all the promises concurrently with optional limit\n\tconst items = [...iterable].map(element => [element, limit(testElement, element, tester)]);\n\n\t// Check the promises either serially or concurrently\n\tconst checkLimit = pLimit(options.preserveOrder ? 1 : Infinity);\n\n\ttry {\n\t\tawait Promise.all(items.map(element => checkLimit(finder, element)));\n\t} catch (error) {\n\t\tif (error instanceof EndError) {\n\t\t\treturn error.value;\n\t\t}\n\n\t\tthrow error;\n\t}\n};\n\nmodule.exports = pLocate;\n", "'use strict';\nconst path = require('path');\nconst fs = require('fs');\nconst {promisify} = require('util');\nconst pLocate = require('p-locate');\n\nconst fsStat = promisify(fs.stat);\nconst fsLStat = promisify(fs.lstat);\n\nconst typeMappings = {\n\tdirectory: 'isDirectory',\n\tfile: 'isFile'\n};\n\nfunction checkType({type}) {\n\tif (type in typeMappings) {\n\t\treturn;\n\t}\n\n\tthrow new Error(`Invalid type specified: ${type}`);\n}\n\nconst matchType = (type, stat) => type === undefined || stat[typeMappings[type]]();\n\nmodule.exports = async (paths, options) => {\n\toptions = {\n\t\tcwd: process.cwd(),\n\t\ttype: 'file',\n\t\tallowSymlinks: true,\n\t\t...options\n\t};\n\n\tcheckType(options);\n\n\tconst statFn = options.allowSymlinks ? fsStat : fsLStat;\n\n\treturn pLocate(paths, async path_ => {\n\t\ttry {\n\t\t\tconst stat = await statFn(path.resolve(options.cwd, path_));\n\t\t\treturn matchType(options.type, stat);\n\t\t} catch {\n\t\t\treturn false;\n\t\t}\n\t}, options);\n};\n\nmodule.exports.sync = (paths, options) => {\n\toptions = {\n\t\tcwd: process.cwd(),\n\t\tallowSymlinks: true,\n\t\ttype: 'file',\n\t\t...options\n\t};\n\n\tcheckType(options);\n\n\tconst statFn = options.allowSymlinks ? fs.statSync : fs.lstatSync;\n\n\tfor (const path_ of paths) {\n\t\ttry {\n\t\t\tconst stat = statFn(path.resolve(options.cwd, path_));\n\n\t\t\tif (matchType(options.type, stat)) {\n\t\t\t\treturn path_;\n\t\t\t}\n\t\t} catch {}\n\t}\n};\n", "'use strict';\nconst fs = require('fs');\nconst {promisify} = require('util');\n\nconst pAccess = promisify(fs.access);\n\nmodule.exports = async path => {\n\ttry {\n\t\tawait pAccess(path);\n\t\treturn true;\n\t} catch (_) {\n\t\treturn false;\n\t}\n};\n\nmodule.exports.sync = path => {\n\ttry {\n\t\tfs.accessSync(path);\n\t\treturn true;\n\t} catch (_) {\n\t\treturn false;\n\t}\n};\n", "'use strict';\nconst path = require('path');\nconst locatePath = require('locate-path');\nconst pathExists = require('path-exists');\n\nconst stop = Symbol('findUp.stop');\n\nmodule.exports = async (name, options = {}) => {\n\tlet directory = path.resolve(options.cwd || '');\n\tconst {root} = path.parse(directory);\n\tconst paths = [].concat(name);\n\n\tconst runMatcher = async locateOptions => {\n\t\tif (typeof name !== 'function') {\n\t\t\treturn locatePath(paths, locateOptions);\n\t\t}\n\n\t\tconst foundPath = await name(locateOptions.cwd);\n\t\tif (typeof foundPath === 'string') {\n\t\t\treturn locatePath([foundPath], locateOptions);\n\t\t}\n\n\t\treturn foundPath;\n\t};\n\n\t// eslint-disable-next-line no-constant-condition\n\twhile (true) {\n\t\t// eslint-disable-next-line no-await-in-loop\n\t\tconst foundPath = await runMatcher({...options, cwd: directory});\n\n\t\tif (foundPath === stop) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (foundPath) {\n\t\t\treturn path.resolve(directory, foundPath);\n\t\t}\n\n\t\tif (directory === root) {\n\t\t\treturn;\n\t\t}\n\n\t\tdirectory = path.dirname(directory);\n\t}\n};\n\nmodule.exports.sync = (name, options = {}) => {\n\tlet directory = path.resolve(options.cwd || '');\n\tconst {root} = path.parse(directory);\n\tconst paths = [].concat(name);\n\n\tconst runMatcher = locateOptions => {\n\t\tif (typeof name !== 'function') {\n\t\t\treturn locatePath.sync(paths, locateOptions);\n\t\t}\n\n\t\tconst foundPath = name(locateOptions.cwd);\n\t\tif (typeof foundPath === 'string') {\n\t\t\treturn locatePath.sync([foundPath], locateOptions);\n\t\t}\n\n\t\treturn foundPath;\n\t};\n\n\t// eslint-disable-next-line no-constant-condition\n\twhile (true) {\n\t\tconst foundPath = runMatcher({...options, cwd: directory});\n\n\t\tif (foundPath === stop) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (foundPath) {\n\t\t\treturn path.resolve(directory, foundPath);\n\t\t}\n\n\t\tif (directory === root) {\n\t\t\treturn;\n\t\t}\n\n\t\tdirectory = path.dirname(directory);\n\t}\n};\n\nmodule.exports.exists = pathExists;\n\nmodule.exports.sync.exists = pathExists.sync;\n\nmodule.exports.stop = stop;\n", "// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar pathModule = require('path');\nvar isWindows = process.platform === 'win32';\nvar fs = require('fs');\n\n// JavaScript implementation of realpath, ported from node pre-v6\n\nvar DEBUG = process.env.NODE_DEBUG && /fs/.test(process.env.NODE_DEBUG);\n\nfunction rethrow() {\n // Only enable in debug mode. A backtrace uses ~1000 bytes of heap space and\n // is fairly slow to generate.\n var callback;\n if (DEBUG) {\n var backtrace = new Error;\n callback = debugCallback;\n } else\n callback = missingCallback;\n\n return callback;\n\n function debugCallback(err) {\n if (err) {\n backtrace.message = err.message;\n err = backtrace;\n missingCallback(err);\n }\n }\n\n function missingCallback(err) {\n if (err) {\n if (process.throwDeprecation)\n throw err; // Forgot a callback but don't know where? Use NODE_DEBUG=fs\n else if (!process.noDeprecation) {\n var msg = 'fs: missing callback ' + (err.stack || err.message);\n if (process.traceDeprecation)\n console.trace(msg);\n else\n console.error(msg);\n }\n }\n }\n}\n\nfunction maybeCallback(cb) {\n return typeof cb === 'function' ? cb : rethrow();\n}\n\nvar normalize = pathModule.normalize;\n\n// Regexp that finds the next partion of a (partial) path\n// result is [base_with_slash, base], e.g. ['somedir/', 'somedir']\nif (isWindows) {\n var nextPartRe = /(.*?)(?:[\\/\\\\]+|$)/g;\n} else {\n var nextPartRe = /(.*?)(?:[\\/]+|$)/g;\n}\n\n// Regex to find the device root, including trailing slash. E.g. 'c:\\\\'.\nif (isWindows) {\n var splitRootRe = /^(?:[a-zA-Z]:|[\\\\\\/]{2}[^\\\\\\/]+[\\\\\\/][^\\\\\\/]+)?[\\\\\\/]*/;\n} else {\n var splitRootRe = /^[\\/]*/;\n}\n\nexports.realpathSync = function realpathSync(p, cache) {\n // make p is absolute\n p = pathModule.resolve(p);\n\n if (cache && Object.prototype.hasOwnProperty.call(cache, p)) {\n return cache[p];\n }\n\n var original = p,\n seenLinks = {},\n knownHard = {};\n\n // current character position in p\n var pos;\n // the partial path so far, including a trailing slash if any\n var current;\n // the partial path without a trailing slash (except when pointing at a root)\n var base;\n // the partial path scanned in the previous round, with slash\n var previous;\n\n start();\n\n function start() {\n // Skip over roots\n var m = splitRootRe.exec(p);\n pos = m[0].length;\n current = m[0];\n base = m[0];\n previous = '';\n\n // On windows, check that the root exists. On unix there is no need.\n if (isWindows && !knownHard[base]) {\n fs.lstatSync(base);\n knownHard[base] = true;\n }\n }\n\n // walk down the path, swapping out linked pathparts for their real\n // values\n // NB: p.length changes.\n while (pos < p.length) {\n // find the next part\n nextPartRe.lastIndex = pos;\n var result = nextPartRe.exec(p);\n previous = current;\n current += result[0];\n base = previous + result[1];\n pos = nextPartRe.lastIndex;\n\n // continue if not a symlink\n if (knownHard[base] || (cache && cache[base] === base)) {\n continue;\n }\n\n var resolvedLink;\n if (cache && Object.prototype.hasOwnProperty.call(cache, base)) {\n // some known symbolic link. no need to stat again.\n resolvedLink = cache[base];\n } else {\n var stat = fs.lstatSync(base);\n if (!stat.isSymbolicLink()) {\n knownHard[base] = true;\n if (cache) cache[base] = base;\n continue;\n }\n\n // read the link if it wasn't read before\n // dev/ino always return 0 on windows, so skip the check.\n var linkTarget = null;\n if (!isWindows) {\n var id = stat.dev.toString(32) + ':' + stat.ino.toString(32);\n if (seenLinks.hasOwnProperty(id)) {\n linkTarget = seenLinks[id];\n }\n }\n if (linkTarget === null) {\n fs.statSync(base);\n linkTarget = fs.readlinkSync(base);\n }\n resolvedLink = pathModule.resolve(previous, linkTarget);\n // track this, if given a cache.\n if (cache) cache[base] = resolvedLink;\n if (!isWindows) seenLinks[id] = linkTarget;\n }\n\n // resolve the link, then start over\n p = pathModule.resolve(resolvedLink, p.slice(pos));\n start();\n }\n\n if (cache) cache[original] = p;\n\n return p;\n};\n\n\nexports.realpath = function realpath(p, cache, cb) {\n if (typeof cb !== 'function') {\n cb = maybeCallback(cache);\n cache = null;\n }\n\n // make p is absolute\n p = pathModule.resolve(p);\n\n if (cache && Object.prototype.hasOwnProperty.call(cache, p)) {\n return process.nextTick(cb.bind(null, null, cache[p]));\n }\n\n var original = p,\n seenLinks = {},\n knownHard = {};\n\n // current character position in p\n var pos;\n // the partial path so far, including a trailing slash if any\n var current;\n // the partial path without a trailing slash (except when pointing at a root)\n var base;\n // the partial path scanned in the previous round, with slash\n var previous;\n\n start();\n\n function start() {\n // Skip over roots\n var m = splitRootRe.exec(p);\n pos = m[0].length;\n current = m[0];\n base = m[0];\n previous = '';\n\n // On windows, check that the root exists. On unix there is no need.\n if (isWindows && !knownHard[base]) {\n fs.lstat(base, function(err) {\n if (err) return cb(err);\n knownHard[base] = true;\n LOOP();\n });\n } else {\n process.nextTick(LOOP);\n }\n }\n\n // walk down the path, swapping out linked pathparts for their real\n // values\n function LOOP() {\n // stop if scanned past end of path\n if (pos >= p.length) {\n if (cache) cache[original] = p;\n return cb(null, p);\n }\n\n // find the next part\n nextPartRe.lastIndex = pos;\n var result = nextPartRe.exec(p);\n previous = current;\n current += result[0];\n base = previous + result[1];\n pos = nextPartRe.lastIndex;\n\n // continue if not a symlink\n if (knownHard[base] || (cache && cache[base] === base)) {\n return process.nextTick(LOOP);\n }\n\n if (cache && Object.prototype.hasOwnProperty.call(cache, base)) {\n // known symbolic link. no need to stat again.\n return gotResolvedLink(cache[base]);\n }\n\n return fs.lstat(base, gotStat);\n }\n\n function gotStat(err, stat) {\n if (err) return cb(err);\n\n // if not a symlink, skip to the next path part\n if (!stat.isSymbolicLink()) {\n knownHard[base] = true;\n if (cache) cache[base] = base;\n return process.nextTick(LOOP);\n }\n\n // stat & read the link if not read before\n // call gotTarget as soon as the link target is known\n // dev/ino always return 0 on windows, so skip the check.\n if (!isWindows) {\n var id = stat.dev.toString(32) + ':' + stat.ino.toString(32);\n if (seenLinks.hasOwnProperty(id)) {\n return gotTarget(null, seenLinks[id], base);\n }\n }\n fs.stat(base, function(err) {\n if (err) return cb(err);\n\n fs.readlink(base, function(err, target) {\n if (!isWindows) seenLinks[id] = target;\n gotTarget(err, target);\n });\n });\n }\n\n function gotTarget(err, target, base) {\n if (err) return cb(err);\n\n var resolvedLink = pathModule.resolve(previous, target);\n if (cache) cache[base] = resolvedLink;\n gotResolvedLink(resolvedLink);\n }\n\n function gotResolvedLink(resolvedLink) {\n // resolve the link, then start over\n p = pathModule.resolve(resolvedLink, p.slice(pos));\n start();\n }\n};\n", "module.exports = realpath\nrealpath.realpath = realpath\nrealpath.sync = realpathSync\nrealpath.realpathSync = realpathSync\nrealpath.monkeypatch = monkeypatch\nrealpath.unmonkeypatch = unmonkeypatch\n\nvar fs = require('fs')\nvar origRealpath = fs.realpath\nvar origRealpathSync = fs.realpathSync\n\nvar version = process.version\nvar ok = /^v[0-5]\\./.test(version)\nvar old = require('./old.js')\n\nfunction newError (er) {\n return er && er.syscall === 'realpath' && (\n er.code === 'ELOOP' ||\n er.code === 'ENOMEM' ||\n er.code === 'ENAMETOOLONG'\n )\n}\n\nfunction realpath (p, cache, cb) {\n if (ok) {\n return origRealpath(p, cache, cb)\n }\n\n if (typeof cache === 'function') {\n cb = cache\n cache = null\n }\n origRealpath(p, cache, function (er, result) {\n if (newError(er)) {\n old.realpath(p, cache, cb)\n } else {\n cb(er, result)\n }\n })\n}\n\nfunction realpathSync (p, cache) {\n if (ok) {\n return origRealpathSync(p, cache)\n }\n\n try {\n return origRealpathSync(p, cache)\n } catch (er) {\n if (newError(er)) {\n return old.realpathSync(p, cache)\n } else {\n throw er\n }\n }\n}\n\nfunction monkeypatch () {\n fs.realpath = realpath\n fs.realpathSync = realpathSync\n}\n\nfunction unmonkeypatch () {\n fs.realpath = origRealpath\n fs.realpathSync = origRealpathSync\n}\n", "module.exports = function (xs, fn) {\n var res = [];\n for (var i = 0; i < xs.length; i++) {\n var x = fn(xs[i], i);\n if (isArray(x)) res.push.apply(res, x);\n else res.push(x);\n }\n return res;\n};\n\nvar isArray = Array.isArray || function (xs) {\n return Object.prototype.toString.call(xs) === '[object Array]';\n};\n", "'use strict';\nmodule.exports = balanced;\nfunction balanced(a, b, str) {\n if (a instanceof RegExp) a = maybeMatch(a, str);\n if (b instanceof RegExp) b = maybeMatch(b, str);\n\n var r = range(a, b, str);\n\n return r && {\n start: r[0],\n end: r[1],\n pre: str.slice(0, r[0]),\n body: str.slice(r[0] + a.length, r[1]),\n post: str.slice(r[1] + b.length)\n };\n}\n\nfunction maybeMatch(reg, str) {\n var m = str.match(reg);\n return m ? m[0] : null;\n}\n\nbalanced.range = range;\nfunction range(a, b, str) {\n var begs, beg, left, right, result;\n var ai = str.indexOf(a);\n var bi = str.indexOf(b, ai + 1);\n var i = ai;\n\n if (ai >= 0 && bi > 0) {\n begs = [];\n left = str.length;\n\n while (i >= 0 && !result) {\n if (i == ai) {\n begs.push(i);\n ai = str.indexOf(a, i + 1);\n } else if (begs.length == 1) {\n result = [ begs.pop(), bi ];\n } else {\n beg = begs.pop();\n if (beg < left) {\n left = beg;\n right = bi;\n }\n\n bi = str.indexOf(b, i + 1);\n }\n\n i = ai < bi && ai >= 0 ? ai : bi;\n }\n\n if (begs.length) {\n result = [ left, right ];\n }\n }\n\n return result;\n}\n", "var concatMap = require('concat-map');\nvar balanced = require('balanced-match');\n\nmodule.exports = expandTop;\n\nvar escSlash = '\\0SLASH'+Math.random()+'\\0';\nvar escOpen = '\\0OPEN'+Math.random()+'\\0';\nvar escClose = '\\0CLOSE'+Math.random()+'\\0';\nvar escComma = '\\0COMMA'+Math.random()+'\\0';\nvar escPeriod = '\\0PERIOD'+Math.random()+'\\0';\n\nfunction numeric(str) {\n return parseInt(str, 10) == str\n ? parseInt(str, 10)\n : str.charCodeAt(0);\n}\n\nfunction escapeBraces(str) {\n return str.split('\\\\\\\\').join(escSlash)\n .split('\\\\{').join(escOpen)\n .split('\\\\}').join(escClose)\n .split('\\\\,').join(escComma)\n .split('\\\\.').join(escPeriod);\n}\n\nfunction unescapeBraces(str) {\n return str.split(escSlash).join('\\\\')\n .split(escOpen).join('{')\n .split(escClose).join('}')\n .split(escComma).join(',')\n .split(escPeriod).join('.');\n}\n\n\n// Basically just str.split(\",\"), but handling cases\n// where we have nested braced sections, which should be\n// treated as individual members, like {a,{b,c},d}\nfunction parseCommaParts(str) {\n if (!str)\n return [''];\n\n var parts = [];\n var m = balanced('{', '}', str);\n\n if (!m)\n return str.split(',');\n\n var pre = m.pre;\n var body = m.body;\n var post = m.post;\n var p = pre.split(',');\n\n p[p.length-1] += '{' + body + '}';\n var postParts = parseCommaParts(post);\n if (post.length) {\n p[p.length-1] += postParts.shift();\n p.push.apply(p, postParts);\n }\n\n parts.push.apply(parts, p);\n\n return parts;\n}\n\nfunction expandTop(str) {\n if (!str)\n return [];\n\n // I don't know why Bash 4.3 does this, but it does.\n // Anything starting with {} will have the first two bytes preserved\n // but *only* at the top level, so {},a}b will not expand to anything,\n // but a{},b}c will be expanded to [a}c,abc].\n // One could argue that this is a bug in Bash, but since the goal of\n // this module is to match Bash's rules, we escape a leading {}\n if (str.substr(0, 2) === '{}') {\n str = '\\\\{\\\\}' + str.substr(2);\n }\n\n return expand(escapeBraces(str), true).map(unescapeBraces);\n}\n\nfunction identity(e) {\n return e;\n}\n\nfunction embrace(str) {\n return '{' + str + '}';\n}\nfunction isPadded(el) {\n return /^-?0\\d/.test(el);\n}\n\nfunction lte(i, y) {\n return i <= y;\n}\nfunction gte(i, y) {\n return i >= y;\n}\n\nfunction expand(str, isTop) {\n var expansions = [];\n\n var m = balanced('{', '}', str);\n if (!m || /\\$$/.test(m.pre)) return [str];\n\n var isNumericSequence = /^-?\\d+\\.\\.-?\\d+(?:\\.\\.-?\\d+)?$/.test(m.body);\n var isAlphaSequence = /^[a-zA-Z]\\.\\.[a-zA-Z](?:\\.\\.-?\\d+)?$/.test(m.body);\n var isSequence = isNumericSequence || isAlphaSequence;\n var isOptions = m.body.indexOf(',') >= 0;\n if (!isSequence && !isOptions) {\n // {a},b}\n if (m.post.match(/,.*\\}/)) {\n str = m.pre + '{' + m.body + escClose + m.post;\n return expand(str);\n }\n return [str];\n }\n\n var n;\n if (isSequence) {\n n = m.body.split(/\\.\\./);\n } else {\n n = parseCommaParts(m.body);\n if (n.length === 1) {\n // x{{a,b}}y ==> x{a}y x{b}y\n n = expand(n[0], false).map(embrace);\n if (n.length === 1) {\n var post = m.post.length\n ? expand(m.post, false)\n : [''];\n return post.map(function(p) {\n return m.pre + n[0] + p;\n });\n }\n }\n }\n\n // at this point, n is the parts, and we know it's not a comma set\n // with a single entry.\n\n // no need to expand pre, since it is guaranteed to be free of brace-sets\n var pre = m.pre;\n var post = m.post.length\n ? expand(m.post, false)\n : [''];\n\n var N;\n\n if (isSequence) {\n var x = numeric(n[0]);\n var y = numeric(n[1]);\n var width = Math.max(n[0].length, n[1].length)\n var incr = n.length == 3\n ? Math.abs(numeric(n[2]))\n : 1;\n var test = lte;\n var reverse = y < x;\n if (reverse) {\n incr *= -1;\n test = gte;\n }\n var pad = n.some(isPadded);\n\n N = [];\n\n for (var i = x; test(i, y); i += incr) {\n var c;\n if (isAlphaSequence) {\n c = String.fromCharCode(i);\n if (c === '\\\\')\n c = '';\n } else {\n c = String(i);\n if (pad) {\n var need = width - c.length;\n if (need > 0) {\n var z = new Array(need + 1).join('0');\n if (i < 0)\n c = '-' + z + c.slice(1);\n else\n c = z + c;\n }\n }\n }\n N.push(c);\n }\n } else {\n N = concatMap(n, function(el) { return expand(el, false) });\n }\n\n for (var j = 0; j < N.length; j++) {\n for (var k = 0; k < post.length; k++) {\n var expansion = pre + N[j] + post[k];\n if (!isTop || isSequence || expansion)\n expansions.push(expansion);\n }\n }\n\n return expansions;\n}\n\n", "module.exports = minimatch\nminimatch.Minimatch = Minimatch\n\nvar path = { sep: '/' }\ntry {\n path = require('path')\n} catch (er) {}\n\nvar GLOBSTAR = minimatch.GLOBSTAR = Minimatch.GLOBSTAR = {}\nvar expand = require('brace-expansion')\n\nvar plTypes = {\n '!': { open: '(?:(?!(?:', close: '))[^/]*?)'},\n '?': { open: '(?:', close: ')?' },\n '+': { open: '(?:', close: ')+' },\n '*': { open: '(?:', close: ')*' },\n '@': { open: '(?:', close: ')' }\n}\n\n// any single thing other than /\n// don't need to escape / when using new RegExp()\nvar qmark = '[^/]'\n\n// * => any number of characters\nvar star = qmark + '*?'\n\n// ** when dots are allowed. Anything goes, except .. and .\n// not (^ or / followed by one or two dots followed by $ or /),\n// followed by anything, any number of times.\nvar twoStarDot = '(?:(?!(?:\\\\\\/|^)(?:\\\\.{1,2})($|\\\\\\/)).)*?'\n\n// not a ^ or / followed by a dot,\n// followed by anything, any number of times.\nvar twoStarNoDot = '(?:(?!(?:\\\\\\/|^)\\\\.).)*?'\n\n// characters that need to be escaped in RegExp.\nvar reSpecials = charSet('().*{}+?[]^$\\\\!')\n\n// \"abc\" -> { a:true, b:true, c:true }\nfunction charSet (s) {\n return s.split('').reduce(function (set, c) {\n set[c] = true\n return set\n }, {})\n}\n\n// normalizes slashes.\nvar slashSplit = /\\/+/\n\nminimatch.filter = filter\nfunction filter (pattern, options) {\n options = options || {}\n return function (p, i, list) {\n return minimatch(p, pattern, options)\n }\n}\n\nfunction ext (a, b) {\n a = a || {}\n b = b || {}\n var t = {}\n Object.keys(b).forEach(function (k) {\n t[k] = b[k]\n })\n Object.keys(a).forEach(function (k) {\n t[k] = a[k]\n })\n return t\n}\n\nminimatch.defaults = function (def) {\n if (!def || !Object.keys(def).length) return minimatch\n\n var orig = minimatch\n\n var m = function minimatch (p, pattern, options) {\n return orig.minimatch(p, pattern, ext(def, options))\n }\n\n m.Minimatch = function Minimatch (pattern, options) {\n return new orig.Minimatch(pattern, ext(def, options))\n }\n\n return m\n}\n\nMinimatch.defaults = function (def) {\n if (!def || !Object.keys(def).length) return Minimatch\n return minimatch.defaults(def).Minimatch\n}\n\nfunction minimatch (p, pattern, options) {\n if (typeof pattern !== 'string') {\n throw new TypeError('glob pattern string required')\n }\n\n if (!options) options = {}\n\n // shortcut: comments match nothing.\n if (!options.nocomment && pattern.charAt(0) === '#') {\n return false\n }\n\n // \"\" only matches \"\"\n if (pattern.trim() === '') return p === ''\n\n return new Minimatch(pattern, options).match(p)\n}\n\nfunction Minimatch (pattern, options) {\n if (!(this instanceof Minimatch)) {\n return new Minimatch(pattern, options)\n }\n\n if (typeof pattern !== 'string') {\n throw new TypeError('glob pattern string required')\n }\n\n if (!options) options = {}\n pattern = pattern.trim()\n\n // windows support: need to use /, not \\\n if (path.sep !== '/') {\n pattern = pattern.split(path.sep).join('/')\n }\n\n this.options = options\n this.set = []\n this.pattern = pattern\n this.regexp = null\n this.negate = false\n this.comment = false\n this.empty = false\n\n // make the set of regexps etc.\n this.make()\n}\n\nMinimatch.prototype.debug = function () {}\n\nMinimatch.prototype.make = make\nfunction make () {\n // don't do it more than once.\n if (this._made) return\n\n var pattern = this.pattern\n var options = this.options\n\n // empty patterns and comments match nothing.\n if (!options.nocomment && pattern.charAt(0) === '#') {\n this.comment = true\n return\n }\n if (!pattern) {\n this.empty = true\n return\n }\n\n // step 1: figure out negation, etc.\n this.parseNegate()\n\n // step 2: expand braces\n var set = this.globSet = this.braceExpand()\n\n if (options.debug) this.debug = console.error\n\n this.debug(this.pattern, set)\n\n // step 3: now we have a set, so turn each one into a series of path-portion\n // matching patterns.\n // These will be regexps, except in the case of \"**\", which is\n // set to the GLOBSTAR object for globstar behavior,\n // and will not contain any / characters\n set = this.globParts = set.map(function (s) {\n return s.split(slashSplit)\n })\n\n this.debug(this.pattern, set)\n\n // glob --> regexps\n set = set.map(function (s, si, set) {\n return s.map(this.parse, this)\n }, this)\n\n this.debug(this.pattern, set)\n\n // filter out everything that didn't compile properly.\n set = set.filter(function (s) {\n return s.indexOf(false) === -1\n })\n\n this.debug(this.pattern, set)\n\n this.set = set\n}\n\nMinimatch.prototype.parseNegate = parseNegate\nfunction parseNegate () {\n var pattern = this.pattern\n var negate = false\n var options = this.options\n var negateOffset = 0\n\n if (options.nonegate) return\n\n for (var i = 0, l = pattern.length\n ; i < l && pattern.charAt(i) === '!'\n ; i++) {\n negate = !negate\n negateOffset++\n }\n\n if (negateOffset) this.pattern = pattern.substr(negateOffset)\n this.negate = negate\n}\n\n// Brace expansion:\n// a{b,c}d -> abd acd\n// a{b,}c -> abc ac\n// a{0..3}d -> a0d a1d a2d a3d\n// a{b,c{d,e}f}g -> abg acdfg acefg\n// a{b,c}d{e,f}g -> abdeg acdeg abdeg abdfg\n//\n// Invalid sets are not expanded.\n// a{2..}b -> a{2..}b\n// a{b}c -> a{b}c\nminimatch.braceExpand = function (pattern, options) {\n return braceExpand(pattern, options)\n}\n\nMinimatch.prototype.braceExpand = braceExpand\n\nfunction braceExpand (pattern, options) {\n if (!options) {\n if (this instanceof Minimatch) {\n options = this.options\n } else {\n options = {}\n }\n }\n\n pattern = typeof pattern === 'undefined'\n ? this.pattern : pattern\n\n if (typeof pattern === 'undefined') {\n throw new TypeError('undefined pattern')\n }\n\n if (options.nobrace ||\n !pattern.match(/\\{.*\\}/)) {\n // shortcut. no need to expand.\n return [pattern]\n }\n\n return expand(pattern)\n}\n\n// parse a component of the expanded set.\n// At this point, no pattern may contain \"/\" in it\n// so we're going to return a 2d array, where each entry is the full\n// pattern, split on '/', and then turned into a regular expression.\n// A regexp is made at the end which joins each array with an\n// escaped /, and another full one which joins each regexp with |.\n//\n// Following the lead of Bash 4.1, note that \"**\" only has special meaning\n// when it is the *only* thing in a path portion. Otherwise, any series\n// of * is equivalent to a single *. Globstar behavior is enabled by\n// default, and can be disabled by setting options.noglobstar.\nMinimatch.prototype.parse = parse\nvar SUBPARSE = {}\nfunction parse (pattern, isSub) {\n if (pattern.length > 1024 * 64) {\n throw new TypeError('pattern is too long')\n }\n\n var options = this.options\n\n // shortcuts\n if (!options.noglobstar && pattern === '**') return GLOBSTAR\n if (pattern === '') return ''\n\n var re = ''\n var hasMagic = !!options.nocase\n var escaping = false\n // ? => one single character\n var patternListStack = []\n var negativeLists = []\n var stateChar\n var inClass = false\n var reClassStart = -1\n var classStart = -1\n // . and .. never match anything that doesn't start with .,\n // even when options.dot is set.\n var patternStart = pattern.charAt(0) === '.' ? '' // anything\n // not (start or / followed by . or .. followed by / or end)\n : options.dot ? '(?!(?:^|\\\\\\/)\\\\.{1,2}(?:$|\\\\\\/))'\n : '(?!\\\\.)'\n var self = this\n\n function clearStateChar () {\n if (stateChar) {\n // we had some state-tracking character\n // that wasn't consumed by this pass.\n switch (stateChar) {\n case '*':\n re += star\n hasMagic = true\n break\n case '?':\n re += qmark\n hasMagic = true\n break\n default:\n re += '\\\\' + stateChar\n break\n }\n self.debug('clearStateChar %j %j', stateChar, re)\n stateChar = false\n }\n }\n\n for (var i = 0, len = pattern.length, c\n ; (i < len) && (c = pattern.charAt(i))\n ; i++) {\n this.debug('%s\\t%s %s %j', pattern, i, re, c)\n\n // skip over any that are escaped.\n if (escaping && reSpecials[c]) {\n re += '\\\\' + c\n escaping = false\n continue\n }\n\n switch (c) {\n case '/':\n // completely not allowed, even escaped.\n // Should already be path-split by now.\n return false\n\n case '\\\\':\n clearStateChar()\n escaping = true\n continue\n\n // the various stateChar values\n // for the \"extglob\" stuff.\n case '?':\n case '*':\n case '+':\n case '@':\n case '!':\n this.debug('%s\\t%s %s %j <-- stateChar', pattern, i, re, c)\n\n // all of those are literals inside a class, except that\n // the glob [!a] means [^a] in regexp\n if (inClass) {\n this.debug(' in class')\n if (c === '!' && i === classStart + 1) c = '^'\n re += c\n continue\n }\n\n // if we already have a stateChar, then it means\n // that there was something like ** or +? in there.\n // Handle the stateChar, then proceed with this one.\n self.debug('call clearStateChar %j', stateChar)\n clearStateChar()\n stateChar = c\n // if extglob is disabled, then +(asdf|foo) isn't a thing.\n // just clear the statechar *now*, rather than even diving into\n // the patternList stuff.\n if (options.noext) clearStateChar()\n continue\n\n case '(':\n if (inClass) {\n re += '('\n continue\n }\n\n if (!stateChar) {\n re += '\\\\('\n continue\n }\n\n patternListStack.push({\n type: stateChar,\n start: i - 1,\n reStart: re.length,\n open: plTypes[stateChar].open,\n close: plTypes[stateChar].close\n })\n // negation is (?:(?!js)[^/]*)\n re += stateChar === '!' ? '(?:(?!(?:' : '(?:'\n this.debug('plType %j %j', stateChar, re)\n stateChar = false\n continue\n\n case ')':\n if (inClass || !patternListStack.length) {\n re += '\\\\)'\n continue\n }\n\n clearStateChar()\n hasMagic = true\n var pl = patternListStack.pop()\n // negation is (?:(?!js)[^/]*)\n // The others are (?:)\n re += pl.close\n if (pl.type === '!') {\n negativeLists.push(pl)\n }\n pl.reEnd = re.length\n continue\n\n case '|':\n if (inClass || !patternListStack.length || escaping) {\n re += '\\\\|'\n escaping = false\n continue\n }\n\n clearStateChar()\n re += '|'\n continue\n\n // these are mostly the same in regexp and glob\n case '[':\n // swallow any state-tracking char before the [\n clearStateChar()\n\n if (inClass) {\n re += '\\\\' + c\n continue\n }\n\n inClass = true\n classStart = i\n reClassStart = re.length\n re += c\n continue\n\n case ']':\n // a right bracket shall lose its special\n // meaning and represent itself in\n // a bracket expression if it occurs\n // first in the list. -- POSIX.2 2.8.3.2\n if (i === classStart + 1 || !inClass) {\n re += '\\\\' + c\n escaping = false\n continue\n }\n\n // handle the case where we left a class open.\n // \"[z-a]\" is valid, equivalent to \"\\[z-a\\]\"\n if (inClass) {\n // split where the last [ was, make sure we don't have\n // an invalid re. if so, re-walk the contents of the\n // would-be class to re-translate any characters that\n // were passed through as-is\n // TODO: It would probably be faster to determine this\n // without a try/catch and a new RegExp, but it's tricky\n // to do safely. For now, this is safe and works.\n var cs = pattern.substring(classStart + 1, i)\n try {\n RegExp('[' + cs + ']')\n } catch (er) {\n // not a valid class!\n var sp = this.parse(cs, SUBPARSE)\n re = re.substr(0, reClassStart) + '\\\\[' + sp[0] + '\\\\]'\n hasMagic = hasMagic || sp[1]\n inClass = false\n continue\n }\n }\n\n // finish up the class.\n hasMagic = true\n inClass = false\n re += c\n continue\n\n default:\n // swallow any state char that wasn't consumed\n clearStateChar()\n\n if (escaping) {\n // no need\n escaping = false\n } else if (reSpecials[c]\n && !(c === '^' && inClass)) {\n re += '\\\\'\n }\n\n re += c\n\n } // switch\n } // for\n\n // handle the case where we left a class open.\n // \"[abc\" is valid, equivalent to \"\\[abc\"\n if (inClass) {\n // split where the last [ was, and escape it\n // this is a huge pita. We now have to re-walk\n // the contents of the would-be class to re-translate\n // any characters that were passed through as-is\n cs = pattern.substr(classStart + 1)\n sp = this.parse(cs, SUBPARSE)\n re = re.substr(0, reClassStart) + '\\\\[' + sp[0]\n hasMagic = hasMagic || sp[1]\n }\n\n // handle the case where we had a +( thing at the *end*\n // of the pattern.\n // each pattern list stack adds 3 chars, and we need to go through\n // and escape any | chars that were passed through as-is for the regexp.\n // Go through and escape them, taking care not to double-escape any\n // | chars that were already escaped.\n for (pl = patternListStack.pop(); pl; pl = patternListStack.pop()) {\n var tail = re.slice(pl.reStart + pl.open.length)\n this.debug('setting tail', re, pl)\n // maybe some even number of \\, then maybe 1 \\, followed by a |\n tail = tail.replace(/((?:\\\\{2}){0,64})(\\\\?)\\|/g, function (_, $1, $2) {\n if (!$2) {\n // the | isn't already escaped, so escape it.\n $2 = '\\\\'\n }\n\n // need to escape all those slashes *again*, without escaping the\n // one that we need for escaping the | character. As it works out,\n // escaping an even number of slashes can be done by simply repeating\n // it exactly after itself. That's why this trick works.\n //\n // I am sorry that you have to see this.\n return $1 + $1 + $2 + '|'\n })\n\n this.debug('tail=%j\\n %s', tail, tail, pl, re)\n var t = pl.type === '*' ? star\n : pl.type === '?' ? qmark\n : '\\\\' + pl.type\n\n hasMagic = true\n re = re.slice(0, pl.reStart) + t + '\\\\(' + tail\n }\n\n // handle trailing things that only matter at the very end.\n clearStateChar()\n if (escaping) {\n // trailing \\\\\n re += '\\\\\\\\'\n }\n\n // only need to apply the nodot start if the re starts with\n // something that could conceivably capture a dot\n var addPatternStart = false\n switch (re.charAt(0)) {\n case '.':\n case '[':\n case '(': addPatternStart = true\n }\n\n // Hack to work around lack of negative lookbehind in JS\n // A pattern like: *.!(x).!(y|z) needs to ensure that a name\n // like 'a.xyz.yz' doesn't match. So, the first negative\n // lookahead, has to look ALL the way ahead, to the end of\n // the pattern.\n for (var n = negativeLists.length - 1; n > -1; n--) {\n var nl = negativeLists[n]\n\n var nlBefore = re.slice(0, nl.reStart)\n var nlFirst = re.slice(nl.reStart, nl.reEnd - 8)\n var nlLast = re.slice(nl.reEnd - 8, nl.reEnd)\n var nlAfter = re.slice(nl.reEnd)\n\n nlLast += nlAfter\n\n // Handle nested stuff like *(*.js|!(*.json)), where open parens\n // mean that we should *not* include the ) in the bit that is considered\n // \"after\" the negated section.\n var openParensBefore = nlBefore.split('(').length - 1\n var cleanAfter = nlAfter\n for (i = 0; i < openParensBefore; i++) {\n cleanAfter = cleanAfter.replace(/\\)[+*?]?/, '')\n }\n nlAfter = cleanAfter\n\n var dollar = ''\n if (nlAfter === '' && isSub !== SUBPARSE) {\n dollar = '$'\n }\n var newRe = nlBefore + nlFirst + nlAfter + dollar + nlLast\n re = newRe\n }\n\n // if the re is not \"\" at this point, then we need to make sure\n // it doesn't match against an empty path part.\n // Otherwise a/* will match a/, which it should not.\n if (re !== '' && hasMagic) {\n re = '(?=.)' + re\n }\n\n if (addPatternStart) {\n re = patternStart + re\n }\n\n // parsing just a piece of a larger pattern.\n if (isSub === SUBPARSE) {\n return [re, hasMagic]\n }\n\n // skip the regexp for non-magical patterns\n // unescape anything in it, though, so that it'll be\n // an exact match against a file etc.\n if (!hasMagic) {\n return globUnescape(pattern)\n }\n\n var flags = options.nocase ? 'i' : ''\n try {\n var regExp = new RegExp('^' + re + '$', flags)\n } catch (er) {\n // If it was an invalid regular expression, then it can't match\n // anything. This trick looks for a character after the end of\n // the string, which is of course impossible, except in multi-line\n // mode, but it's not a /m regex.\n return new RegExp('$.')\n }\n\n regExp._glob = pattern\n regExp._src = re\n\n return regExp\n}\n\nminimatch.makeRe = function (pattern, options) {\n return new Minimatch(pattern, options || {}).makeRe()\n}\n\nMinimatch.prototype.makeRe = makeRe\nfunction makeRe () {\n if (this.regexp || this.regexp === false) return this.regexp\n\n // at this point, this.set is a 2d array of partial\n // pattern strings, or \"**\".\n //\n // It's better to use .match(). This function shouldn't\n // be used, really, but it's pretty convenient sometimes,\n // when you just want to work with a regex.\n var set = this.set\n\n if (!set.length) {\n this.regexp = false\n return this.regexp\n }\n var options = this.options\n\n var twoStar = options.noglobstar ? star\n : options.dot ? twoStarDot\n : twoStarNoDot\n var flags = options.nocase ? 'i' : ''\n\n var re = set.map(function (pattern) {\n return pattern.map(function (p) {\n return (p === GLOBSTAR) ? twoStar\n : (typeof p === 'string') ? regExpEscape(p)\n : p._src\n }).join('\\\\\\/')\n }).join('|')\n\n // must match entire pattern\n // ending in a * or ** will make it less strict.\n re = '^(?:' + re + ')$'\n\n // can match anything, as long as it's not this.\n if (this.negate) re = '^(?!' + re + ').*$'\n\n try {\n this.regexp = new RegExp(re, flags)\n } catch (ex) {\n this.regexp = false\n }\n return this.regexp\n}\n\nminimatch.match = function (list, pattern, options) {\n options = options || {}\n var mm = new Minimatch(pattern, options)\n list = list.filter(function (f) {\n return mm.match(f)\n })\n if (mm.options.nonull && !list.length) {\n list.push(pattern)\n }\n return list\n}\n\nMinimatch.prototype.match = match\nfunction match (f, partial) {\n this.debug('match', f, this.pattern)\n // short-circuit in the case of busted things.\n // comments, etc.\n if (this.comment) return false\n if (this.empty) return f === ''\n\n if (f === '/' && partial) return true\n\n var options = this.options\n\n // windows: need to use /, not \\\n if (path.sep !== '/') {\n f = f.split(path.sep).join('/')\n }\n\n // treat the test path as a set of pathparts.\n f = f.split(slashSplit)\n this.debug(this.pattern, 'split', f)\n\n // just ONE of the pattern sets in this.set needs to match\n // in order for it to be valid. If negating, then just one\n // match means that we have failed.\n // Either way, return on the first hit.\n\n var set = this.set\n this.debug(this.pattern, 'set', set)\n\n // Find the basename of the path by looking for the last non-empty segment\n var filename\n var i\n for (i = f.length - 1; i >= 0; i--) {\n filename = f[i]\n if (filename) break\n }\n\n for (i = 0; i < set.length; i++) {\n var pattern = set[i]\n var file = f\n if (options.matchBase && pattern.length === 1) {\n file = [filename]\n }\n var hit = this.matchOne(file, pattern, partial)\n if (hit) {\n if (options.flipNegate) return true\n return !this.negate\n }\n }\n\n // didn't get any hits. this is success if it's a negative\n // pattern, failure otherwise.\n if (options.flipNegate) return false\n return this.negate\n}\n\n// set partial to true to test if, for example,\n// \"/a/b\" matches the start of \"/*/b/*/d\"\n// Partial means, if you run out of file before you run\n// out of pattern, then that's fine, as long as all\n// the parts match.\nMinimatch.prototype.matchOne = function (file, pattern, partial) {\n var options = this.options\n\n this.debug('matchOne',\n { 'this': this, file: file, pattern: pattern })\n\n this.debug('matchOne', file.length, pattern.length)\n\n for (var fi = 0,\n pi = 0,\n fl = file.length,\n pl = pattern.length\n ; (fi < fl) && (pi < pl)\n ; fi++, pi++) {\n this.debug('matchOne loop')\n var p = pattern[pi]\n var f = file[fi]\n\n this.debug(pattern, p, f)\n\n // should be impossible.\n // some invalid regexp stuff in the set.\n if (p === false) return false\n\n if (p === GLOBSTAR) {\n this.debug('GLOBSTAR', [pattern, p, f])\n\n // \"**\"\n // a/**/b/**/c would match the following:\n // a/b/x/y/z/c\n // a/x/y/z/b/c\n // a/b/x/b/x/c\n // a/b/c\n // To do this, take the rest of the pattern after\n // the **, and see if it would match the file remainder.\n // If so, return success.\n // If not, the ** \"swallows\" a segment, and try again.\n // This is recursively awful.\n //\n // a/**/b/**/c matching a/b/x/y/z/c\n // - a matches a\n // - doublestar\n // - matchOne(b/x/y/z/c, b/**/c)\n // - b matches b\n // - doublestar\n // - matchOne(x/y/z/c, c) -> no\n // - matchOne(y/z/c, c) -> no\n // - matchOne(z/c, c) -> no\n // - matchOne(c, c) yes, hit\n var fr = fi\n var pr = pi + 1\n if (pr === pl) {\n this.debug('** at the end')\n // a ** at the end will just swallow the rest.\n // We have found a match.\n // however, it will not swallow /.x, unless\n // options.dot is set.\n // . and .. are *never* matched by **, for explosively\n // exponential reasons.\n for (; fi < fl; fi++) {\n if (file[fi] === '.' || file[fi] === '..' ||\n (!options.dot && file[fi].charAt(0) === '.')) return false\n }\n return true\n }\n\n // ok, let's see if we can swallow whatever we can.\n while (fr < fl) {\n var swallowee = file[fr]\n\n this.debug('\\nglobstar while', file, fr, pattern, pr, swallowee)\n\n // XXX remove this slice. Just pass the start index.\n if (this.matchOne(file.slice(fr), pattern.slice(pr), partial)) {\n this.debug('globstar found match!', fr, fl, swallowee)\n // found a match.\n return true\n } else {\n // can't swallow \".\" or \"..\" ever.\n // can only swallow \".foo\" when explicitly asked.\n if (swallowee === '.' || swallowee === '..' ||\n (!options.dot && swallowee.charAt(0) === '.')) {\n this.debug('dot detected!', file, fr, pattern, pr)\n break\n }\n\n // ** swallows a segment, and continue.\n this.debug('globstar swallow a segment, and continue')\n fr++\n }\n }\n\n // no match was found.\n // However, in partial mode, we can't say this is necessarily over.\n // If there's more *pattern* left, then\n if (partial) {\n // ran out of file\n this.debug('\\n>>> no match, partial?', file, fr, pattern, pr)\n if (fr === fl) return true\n }\n return false\n }\n\n // something other than **\n // non-magic patterns just have to match exactly\n // patterns with magic have been turned into regexps.\n var hit\n if (typeof p === 'string') {\n if (options.nocase) {\n hit = f.toLowerCase() === p.toLowerCase()\n } else {\n hit = f === p\n }\n this.debug('string match', p, f, hit)\n } else {\n hit = f.match(p)\n this.debug('pattern match', p, f, hit)\n }\n\n if (!hit) return false\n }\n\n // Note: ending in / means that we'll get a final \"\"\n // at the end of the pattern. This can only match a\n // corresponding \"\" at the end of the file.\n // If the file ends in /, then it can only match a\n // a pattern that ends in /, unless the pattern just\n // doesn't have any more for it. But, a/b/ should *not*\n // match \"a/b/*\", even though \"\" matches against the\n // [^/]*? pattern, except in partial mode, where it might\n // simply not be reached yet.\n // However, a/b/ should still satisfy a/*\n\n // now either we fell off the end of the pattern, or we're done.\n if (fi === fl && pi === pl) {\n // ran out of pattern and filename at the same time.\n // an exact hit!\n return true\n } else if (fi === fl) {\n // ran out of file, but still had pattern left.\n // this is ok if we're doing the match as part of\n // a glob fs traversal.\n return partial\n } else if (pi === pl) {\n // ran out of pattern, still have file left.\n // this is only acceptable if we're on the very last\n // empty segment of a file with a trailing slash.\n // a/* should match a/b/\n var emptyFileEnd = (fi === fl - 1) && (file[fi] === '')\n return emptyFileEnd\n }\n\n // should be unreachable.\n throw new Error('wtf?')\n}\n\n// replace stuff like \\* with *\nfunction globUnescape (s) {\n return s.replace(/\\\\(.)/g, '$1')\n}\n\nfunction regExpEscape (s) {\n return s.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&')\n}\n", "if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n", "try {\n var util = require('util');\n /* istanbul ignore next */\n if (typeof util.inherits !== 'function') throw '';\n module.exports = util.inherits;\n} catch (e) {\n /* istanbul ignore next */\n module.exports = require('./inherits_browser.js');\n}\n", "'use strict';\n\nfunction posix(path) {\n\treturn path.charAt(0) === '/';\n}\n\nfunction win32(path) {\n\t// https://github.com/nodejs/node/blob/b3fcc245fb25539909ef1d5eaa01dbf92e168633/lib/path.js#L56\n\tvar splitDeviceRe = /^([a-zA-Z]:|[\\\\\\/]{2}[^\\\\\\/]+[\\\\\\/]+[^\\\\\\/]+)?([\\\\\\/])?([\\s\\S]*?)$/;\n\tvar result = splitDeviceRe.exec(path);\n\tvar device = result[1] || '';\n\tvar isUnc = Boolean(device && device.charAt(1) !== ':');\n\n\t// UNC paths are always absolute\n\treturn Boolean(result[2] || isUnc);\n}\n\nmodule.exports = process.platform === 'win32' ? win32 : posix;\nmodule.exports.posix = posix;\nmodule.exports.win32 = win32;\n", "exports.alphasort = alphasort\nexports.alphasorti = alphasorti\nexports.setopts = setopts\nexports.ownProp = ownProp\nexports.makeAbs = makeAbs\nexports.finish = finish\nexports.mark = mark\nexports.isIgnored = isIgnored\nexports.childrenIgnored = childrenIgnored\n\nfunction ownProp (obj, field) {\n return Object.prototype.hasOwnProperty.call(obj, field)\n}\n\nvar path = require(\"path\")\nvar minimatch = require(\"minimatch\")\nvar isAbsolute = require(\"path-is-absolute\")\nvar Minimatch = minimatch.Minimatch\n\nfunction alphasorti (a, b) {\n return a.toLowerCase().localeCompare(b.toLowerCase())\n}\n\nfunction alphasort (a, b) {\n return a.localeCompare(b)\n}\n\nfunction setupIgnores (self, options) {\n self.ignore = options.ignore || []\n\n if (!Array.isArray(self.ignore))\n self.ignore = [self.ignore]\n\n if (self.ignore.length) {\n self.ignore = self.ignore.map(ignoreMap)\n }\n}\n\n// ignore patterns are always in dot:true mode.\nfunction ignoreMap (pattern) {\n var gmatcher = null\n if (pattern.slice(-3) === '/**') {\n var gpattern = pattern.replace(/(\\/\\*\\*)+$/, '')\n gmatcher = new Minimatch(gpattern, { dot: true })\n }\n\n return {\n matcher: new Minimatch(pattern, { dot: true }),\n gmatcher: gmatcher\n }\n}\n\nfunction setopts (self, pattern, options) {\n if (!options)\n options = {}\n\n // base-matching: just use globstar for that.\n if (options.matchBase && -1 === pattern.indexOf(\"/\")) {\n if (options.noglobstar) {\n throw new Error(\"base matching requires globstar\")\n }\n pattern = \"**/\" + pattern\n }\n\n self.silent = !!options.silent\n self.pattern = pattern\n self.strict = options.strict !== false\n self.realpath = !!options.realpath\n self.realpathCache = options.realpathCache || Object.create(null)\n self.follow = !!options.follow\n self.dot = !!options.dot\n self.mark = !!options.mark\n self.nodir = !!options.nodir\n if (self.nodir)\n self.mark = true\n self.sync = !!options.sync\n self.nounique = !!options.nounique\n self.nonull = !!options.nonull\n self.nosort = !!options.nosort\n self.nocase = !!options.nocase\n self.stat = !!options.stat\n self.noprocess = !!options.noprocess\n self.absolute = !!options.absolute\n\n self.maxLength = options.maxLength || Infinity\n self.cache = options.cache || Object.create(null)\n self.statCache = options.statCache || Object.create(null)\n self.symlinks = options.symlinks || Object.create(null)\n\n setupIgnores(self, options)\n\n self.changedCwd = false\n var cwd = process.cwd()\n if (!ownProp(options, \"cwd\"))\n self.cwd = cwd\n else {\n self.cwd = path.resolve(options.cwd)\n self.changedCwd = self.cwd !== cwd\n }\n\n self.root = options.root || path.resolve(self.cwd, \"/\")\n self.root = path.resolve(self.root)\n if (process.platform === \"win32\")\n self.root = self.root.replace(/\\\\/g, \"/\")\n\n // TODO: is an absolute `cwd` supposed to be resolved against `root`?\n // e.g. { cwd: '/test', root: __dirname } === path.join(__dirname, '/test')\n self.cwdAbs = isAbsolute(self.cwd) ? self.cwd : makeAbs(self, self.cwd)\n if (process.platform === \"win32\")\n self.cwdAbs = self.cwdAbs.replace(/\\\\/g, \"/\")\n self.nomount = !!options.nomount\n\n // disable comments and negation in Minimatch.\n // Note that they are not supported in Glob itself anyway.\n options.nonegate = true\n options.nocomment = true\n\n self.minimatch = new Minimatch(pattern, options)\n self.options = self.minimatch.options\n}\n\nfunction finish (self) {\n var nou = self.nounique\n var all = nou ? [] : Object.create(null)\n\n for (var i = 0, l = self.matches.length; i < l; i ++) {\n var matches = self.matches[i]\n if (!matches || Object.keys(matches).length === 0) {\n if (self.nonull) {\n // do like the shell, and spit out the literal glob\n var literal = self.minimatch.globSet[i]\n if (nou)\n all.push(literal)\n else\n all[literal] = true\n }\n } else {\n // had matches\n var m = Object.keys(matches)\n if (nou)\n all.push.apply(all, m)\n else\n m.forEach(function (m) {\n all[m] = true\n })\n }\n }\n\n if (!nou)\n all = Object.keys(all)\n\n if (!self.nosort)\n all = all.sort(self.nocase ? alphasorti : alphasort)\n\n // at *some* point we statted all of these\n if (self.mark) {\n for (var i = 0; i < all.length; i++) {\n all[i] = self._mark(all[i])\n }\n if (self.nodir) {\n all = all.filter(function (e) {\n var notDir = !(/\\/$/.test(e))\n var c = self.cache[e] || self.cache[makeAbs(self, e)]\n if (notDir && c)\n notDir = c !== 'DIR' && !Array.isArray(c)\n return notDir\n })\n }\n }\n\n if (self.ignore.length)\n all = all.filter(function(m) {\n return !isIgnored(self, m)\n })\n\n self.found = all\n}\n\nfunction mark (self, p) {\n var abs = makeAbs(self, p)\n var c = self.cache[abs]\n var m = p\n if (c) {\n var isDir = c === 'DIR' || Array.isArray(c)\n var slash = p.slice(-1) === '/'\n\n if (isDir && !slash)\n m += '/'\n else if (!isDir && slash)\n m = m.slice(0, -1)\n\n if (m !== p) {\n var mabs = makeAbs(self, m)\n self.statCache[mabs] = self.statCache[abs]\n self.cache[mabs] = self.cache[abs]\n }\n }\n\n return m\n}\n\n// lotta situps...\nfunction makeAbs (self, f) {\n var abs = f\n if (f.charAt(0) === '/') {\n abs = path.join(self.root, f)\n } else if (isAbsolute(f) || f === '') {\n abs = f\n } else if (self.changedCwd) {\n abs = path.resolve(self.cwd, f)\n } else {\n abs = path.resolve(f)\n }\n\n if (process.platform === 'win32')\n abs = abs.replace(/\\\\/g, '/')\n\n return abs\n}\n\n\n// Return true, if pattern ends with globstar '**', for the accompanying parent directory.\n// Ex:- If node_modules/** is the pattern, add 'node_modules' to ignore list along with it's contents\nfunction isIgnored (self, path) {\n if (!self.ignore.length)\n return false\n\n return self.ignore.some(function(item) {\n return item.matcher.match(path) || !!(item.gmatcher && item.gmatcher.match(path))\n })\n}\n\nfunction childrenIgnored (self, path) {\n if (!self.ignore.length)\n return false\n\n return self.ignore.some(function(item) {\n return !!(item.gmatcher && item.gmatcher.match(path))\n })\n}\n", "module.exports = globSync\nglobSync.GlobSync = GlobSync\n\nvar fs = require('fs')\nvar rp = require('fs.realpath')\nvar minimatch = require('minimatch')\nvar Minimatch = minimatch.Minimatch\nvar Glob = require('./glob.js').Glob\nvar util = require('util')\nvar path = require('path')\nvar assert = require('assert')\nvar isAbsolute = require('path-is-absolute')\nvar common = require('./common.js')\nvar alphasort = common.alphasort\nvar alphasorti = common.alphasorti\nvar setopts = common.setopts\nvar ownProp = common.ownProp\nvar childrenIgnored = common.childrenIgnored\nvar isIgnored = common.isIgnored\n\nfunction globSync (pattern, options) {\n if (typeof options === 'function' || arguments.length === 3)\n throw new TypeError('callback provided to sync glob\\n'+\n 'See: https://github.com/isaacs/node-glob/issues/167')\n\n return new GlobSync(pattern, options).found\n}\n\nfunction GlobSync (pattern, options) {\n if (!pattern)\n throw new Error('must provide pattern')\n\n if (typeof options === 'function' || arguments.length === 3)\n throw new TypeError('callback provided to sync glob\\n'+\n 'See: https://github.com/isaacs/node-glob/issues/167')\n\n if (!(this instanceof GlobSync))\n return new GlobSync(pattern, options)\n\n setopts(this, pattern, options)\n\n if (this.noprocess)\n return this\n\n var n = this.minimatch.set.length\n this.matches = new Array(n)\n for (var i = 0; i < n; i ++) {\n this._process(this.minimatch.set[i], i, false)\n }\n this._finish()\n}\n\nGlobSync.prototype._finish = function () {\n assert(this instanceof GlobSync)\n if (this.realpath) {\n var self = this\n this.matches.forEach(function (matchset, index) {\n var set = self.matches[index] = Object.create(null)\n for (var p in matchset) {\n try {\n p = self._makeAbs(p)\n var real = rp.realpathSync(p, self.realpathCache)\n set[real] = true\n } catch (er) {\n if (er.syscall === 'stat')\n set[self._makeAbs(p)] = true\n else\n throw er\n }\n }\n })\n }\n common.finish(this)\n}\n\n\nGlobSync.prototype._process = function (pattern, index, inGlobStar) {\n assert(this instanceof GlobSync)\n\n // Get the first [n] parts of pattern that are all strings.\n var n = 0\n while (typeof pattern[n] === 'string') {\n n ++\n }\n // now n is the index of the first one that is *not* a string.\n\n // See if there's anything else\n var prefix\n switch (n) {\n // if not, then this is rather simple\n case pattern.length:\n this._processSimple(pattern.join('/'), index)\n return\n\n case 0:\n // pattern *starts* with some non-trivial item.\n // going to readdir(cwd), but not include the prefix in matches.\n prefix = null\n break\n\n default:\n // pattern has some string bits in the front.\n // whatever it starts with, whether that's 'absolute' like /foo/bar,\n // or 'relative' like '../baz'\n prefix = pattern.slice(0, n).join('/')\n break\n }\n\n var remain = pattern.slice(n)\n\n // get the list of entries.\n var read\n if (prefix === null)\n read = '.'\n else if (isAbsolute(prefix) || isAbsolute(pattern.join('/'))) {\n if (!prefix || !isAbsolute(prefix))\n prefix = '/' + prefix\n read = prefix\n } else\n read = prefix\n\n var abs = this._makeAbs(read)\n\n //if ignored, skip processing\n if (childrenIgnored(this, read))\n return\n\n var isGlobStar = remain[0] === minimatch.GLOBSTAR\n if (isGlobStar)\n this._processGlobStar(prefix, read, abs, remain, index, inGlobStar)\n else\n this._processReaddir(prefix, read, abs, remain, index, inGlobStar)\n}\n\n\nGlobSync.prototype._processReaddir = function (prefix, read, abs, remain, index, inGlobStar) {\n var entries = this._readdir(abs, inGlobStar)\n\n // if the abs isn't a dir, then nothing can match!\n if (!entries)\n return\n\n // It will only match dot entries if it starts with a dot, or if\n // dot is set. Stuff like @(.foo|.bar) isn't allowed.\n var pn = remain[0]\n var negate = !!this.minimatch.negate\n var rawGlob = pn._glob\n var dotOk = this.dot || rawGlob.charAt(0) === '.'\n\n var matchedEntries = []\n for (var i = 0; i < entries.length; i++) {\n var e = entries[i]\n if (e.charAt(0) !== '.' || dotOk) {\n var m\n if (negate && !prefix) {\n m = !e.match(pn)\n } else {\n m = e.match(pn)\n }\n if (m)\n matchedEntries.push(e)\n }\n }\n\n var len = matchedEntries.length\n // If there are no matched entries, then nothing matches.\n if (len === 0)\n return\n\n // if this is the last remaining pattern bit, then no need for\n // an additional stat *unless* the user has specified mark or\n // stat explicitly. We know they exist, since readdir returned\n // them.\n\n if (remain.length === 1 && !this.mark && !this.stat) {\n if (!this.matches[index])\n this.matches[index] = Object.create(null)\n\n for (var i = 0; i < len; i ++) {\n var e = matchedEntries[i]\n if (prefix) {\n if (prefix.slice(-1) !== '/')\n e = prefix + '/' + e\n else\n e = prefix + e\n }\n\n if (e.charAt(0) === '/' && !this.nomount) {\n e = path.join(this.root, e)\n }\n this._emitMatch(index, e)\n }\n // This was the last one, and no stats were needed\n return\n }\n\n // now test all matched entries as stand-ins for that part\n // of the pattern.\n remain.shift()\n for (var i = 0; i < len; i ++) {\n var e = matchedEntries[i]\n var newPattern\n if (prefix)\n newPattern = [prefix, e]\n else\n newPattern = [e]\n this._process(newPattern.concat(remain), index, inGlobStar)\n }\n}\n\n\nGlobSync.prototype._emitMatch = function (index, e) {\n if (isIgnored(this, e))\n return\n\n var abs = this._makeAbs(e)\n\n if (this.mark)\n e = this._mark(e)\n\n if (this.absolute) {\n e = abs\n }\n\n if (this.matches[index][e])\n return\n\n if (this.nodir) {\n var c = this.cache[abs]\n if (c === 'DIR' || Array.isArray(c))\n return\n }\n\n this.matches[index][e] = true\n\n if (this.stat)\n this._stat(e)\n}\n\n\nGlobSync.prototype._readdirInGlobStar = function (abs) {\n // follow all symlinked directories forever\n // just proceed as if this is a non-globstar situation\n if (this.follow)\n return this._readdir(abs, false)\n\n var entries\n var lstat\n var stat\n try {\n lstat = fs.lstatSync(abs)\n } catch (er) {\n if (er.code === 'ENOENT') {\n // lstat failed, doesn't exist\n return null\n }\n }\n\n var isSym = lstat && lstat.isSymbolicLink()\n this.symlinks[abs] = isSym\n\n // If it's not a symlink or a dir, then it's definitely a regular file.\n // don't bother doing a readdir in that case.\n if (!isSym && lstat && !lstat.isDirectory())\n this.cache[abs] = 'FILE'\n else\n entries = this._readdir(abs, false)\n\n return entries\n}\n\nGlobSync.prototype._readdir = function (abs, inGlobStar) {\n var entries\n\n if (inGlobStar && !ownProp(this.symlinks, abs))\n return this._readdirInGlobStar(abs)\n\n if (ownProp(this.cache, abs)) {\n var c = this.cache[abs]\n if (!c || c === 'FILE')\n return null\n\n if (Array.isArray(c))\n return c\n }\n\n try {\n return this._readdirEntries(abs, fs.readdirSync(abs))\n } catch (er) {\n this._readdirError(abs, er)\n return null\n }\n}\n\nGlobSync.prototype._readdirEntries = function (abs, entries) {\n // if we haven't asked to stat everything, then just\n // assume that everything in there exists, so we can avoid\n // having to stat it a second time.\n if (!this.mark && !this.stat) {\n for (var i = 0; i < entries.length; i ++) {\n var e = entries[i]\n if (abs === '/')\n e = abs + e\n else\n e = abs + '/' + e\n this.cache[e] = true\n }\n }\n\n this.cache[abs] = entries\n\n // mark and cache dir-ness\n return entries\n}\n\nGlobSync.prototype._readdirError = function (f, er) {\n // handle errors, and cache the information\n switch (er.code) {\n case 'ENOTSUP': // https://github.com/isaacs/node-glob/issues/205\n case 'ENOTDIR': // totally normal. means it *does* exist.\n var abs = this._makeAbs(f)\n this.cache[abs] = 'FILE'\n if (abs === this.cwdAbs) {\n var error = new Error(er.code + ' invalid cwd ' + this.cwd)\n error.path = this.cwd\n error.code = er.code\n throw error\n }\n break\n\n case 'ENOENT': // not terribly unusual\n case 'ELOOP':\n case 'ENAMETOOLONG':\n case 'UNKNOWN':\n this.cache[this._makeAbs(f)] = false\n break\n\n default: // some unusual error. Treat as failure.\n this.cache[this._makeAbs(f)] = false\n if (this.strict)\n throw er\n if (!this.silent)\n console.error('glob error', er)\n break\n }\n}\n\nGlobSync.prototype._processGlobStar = function (prefix, read, abs, remain, index, inGlobStar) {\n\n var entries = this._readdir(abs, inGlobStar)\n\n // no entries means not a dir, so it can never have matches\n // foo.txt/** doesn't match foo.txt\n if (!entries)\n return\n\n // test without the globstar, and with every child both below\n // and replacing the globstar.\n var remainWithoutGlobStar = remain.slice(1)\n var gspref = prefix ? [ prefix ] : []\n var noGlobStar = gspref.concat(remainWithoutGlobStar)\n\n // the noGlobStar pattern exits the inGlobStar state\n this._process(noGlobStar, index, false)\n\n var len = entries.length\n var isSym = this.symlinks[abs]\n\n // If it's a symlink, and we're in a globstar, then stop\n if (isSym && inGlobStar)\n return\n\n for (var i = 0; i < len; i++) {\n var e = entries[i]\n if (e.charAt(0) === '.' && !this.dot)\n continue\n\n // these two cases enter the inGlobStar state\n var instead = gspref.concat(entries[i], remainWithoutGlobStar)\n this._process(instead, index, true)\n\n var below = gspref.concat(entries[i], remain)\n this._process(below, index, true)\n }\n}\n\nGlobSync.prototype._processSimple = function (prefix, index) {\n // XXX review this. Shouldn't it be doing the mounting etc\n // before doing stat? kinda weird?\n var exists = this._stat(prefix)\n\n if (!this.matches[index])\n this.matches[index] = Object.create(null)\n\n // If it doesn't exist, then just mark the lack of results\n if (!exists)\n return\n\n if (prefix && isAbsolute(prefix) && !this.nomount) {\n var trail = /[\\/\\\\]$/.test(prefix)\n if (prefix.charAt(0) === '/') {\n prefix = path.join(this.root, prefix)\n } else {\n prefix = path.resolve(this.root, prefix)\n if (trail)\n prefix += '/'\n }\n }\n\n if (process.platform === 'win32')\n prefix = prefix.replace(/\\\\/g, '/')\n\n // Mark this as a match\n this._emitMatch(index, prefix)\n}\n\n// Returns either 'DIR', 'FILE', or false\nGlobSync.prototype._stat = function (f) {\n var abs = this._makeAbs(f)\n var needDir = f.slice(-1) === '/'\n\n if (f.length > this.maxLength)\n return false\n\n if (!this.stat && ownProp(this.cache, abs)) {\n var c = this.cache[abs]\n\n if (Array.isArray(c))\n c = 'DIR'\n\n // It exists, but maybe not how we need it\n if (!needDir || c === 'DIR')\n return c\n\n if (needDir && c === 'FILE')\n return false\n\n // otherwise we have to stat, because maybe c=true\n // if we know it exists, but not what it is.\n }\n\n var exists\n var stat = this.statCache[abs]\n if (!stat) {\n var lstat\n try {\n lstat = fs.lstatSync(abs)\n } catch (er) {\n if (er && (er.code === 'ENOENT' || er.code === 'ENOTDIR')) {\n this.statCache[abs] = false\n return false\n }\n }\n\n if (lstat && lstat.isSymbolicLink()) {\n try {\n stat = fs.statSync(abs)\n } catch (er) {\n stat = lstat\n }\n } else {\n stat = lstat\n }\n }\n\n this.statCache[abs] = stat\n\n var c = true\n if (stat)\n c = stat.isDirectory() ? 'DIR' : 'FILE'\n\n this.cache[abs] = this.cache[abs] || c\n\n if (needDir && c === 'FILE')\n return false\n\n return c\n}\n\nGlobSync.prototype._mark = function (p) {\n return common.mark(this, p)\n}\n\nGlobSync.prototype._makeAbs = function (f) {\n return common.makeAbs(this, f)\n}\n", "// Returns a wrapper function that returns a wrapped callback\n// The wrapper function should do some stuff, and return a\n// presumably different callback function.\n// This makes sure that own properties are retained, so that\n// decorations and such are not lost along the way.\nmodule.exports = wrappy\nfunction wrappy (fn, cb) {\n if (fn && cb) return wrappy(fn)(cb)\n\n if (typeof fn !== 'function')\n throw new TypeError('need wrapper function')\n\n Object.keys(fn).forEach(function (k) {\n wrapper[k] = fn[k]\n })\n\n return wrapper\n\n function wrapper() {\n var args = new Array(arguments.length)\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i]\n }\n var ret = fn.apply(this, args)\n var cb = args[args.length-1]\n if (typeof ret === 'function' && ret !== cb) {\n Object.keys(cb).forEach(function (k) {\n ret[k] = cb[k]\n })\n }\n return ret\n }\n}\n", "var wrappy = require('wrappy')\nmodule.exports = wrappy(once)\nmodule.exports.strict = wrappy(onceStrict)\n\nonce.proto = once(function () {\n Object.defineProperty(Function.prototype, 'once', {\n value: function () {\n return once(this)\n },\n configurable: true\n })\n\n Object.defineProperty(Function.prototype, 'onceStrict', {\n value: function () {\n return onceStrict(this)\n },\n configurable: true\n })\n})\n\nfunction once (fn) {\n var f = function () {\n if (f.called) return f.value\n f.called = true\n return f.value = fn.apply(this, arguments)\n }\n f.called = false\n return f\n}\n\nfunction onceStrict (fn) {\n var f = function () {\n if (f.called)\n throw new Error(f.onceError)\n f.called = true\n return f.value = fn.apply(this, arguments)\n }\n var name = fn.name || 'Function wrapped with `once`'\n f.onceError = name + \" shouldn't be called more than once\"\n f.called = false\n return f\n}\n", "var wrappy = require('wrappy')\nvar reqs = Object.create(null)\nvar once = require('once')\n\nmodule.exports = wrappy(inflight)\n\nfunction inflight (key, cb) {\n if (reqs[key]) {\n reqs[key].push(cb)\n return null\n } else {\n reqs[key] = [cb]\n return makeres(key)\n }\n}\n\nfunction makeres (key) {\n return once(function RES () {\n var cbs = reqs[key]\n var len = cbs.length\n var args = slice(arguments)\n\n // XXX It's somewhat ambiguous whether a new callback added in this\n // pass should be queued for later execution if something in the\n // list of callbacks throws, or if it should just be discarded.\n // However, it's such an edge case that it hardly matters, and either\n // choice is likely as surprising as the other.\n // As it happens, we do go ahead and schedule it for later execution.\n try {\n for (var i = 0; i < len; i++) {\n cbs[i].apply(null, args)\n }\n } finally {\n if (cbs.length > len) {\n // added more in the interim.\n // de-zalgo, just in case, but don't call again.\n cbs.splice(0, len)\n process.nextTick(function () {\n RES.apply(null, args)\n })\n } else {\n delete reqs[key]\n }\n }\n })\n}\n\nfunction slice (args) {\n var length = args.length\n var array = []\n\n for (var i = 0; i < length; i++) array[i] = args[i]\n return array\n}\n", "// Approach:\n//\n// 1. Get the minimatch set\n// 2. For each pattern in the set, PROCESS(pattern, false)\n// 3. Store matches per-set, then uniq them\n//\n// PROCESS(pattern, inGlobStar)\n// Get the first [n] items from pattern that are all strings\n// Join these together. This is PREFIX.\n// If there is no more remaining, then stat(PREFIX) and\n// add to matches if it succeeds. END.\n//\n// If inGlobStar and PREFIX is symlink and points to dir\n// set ENTRIES = []\n// else readdir(PREFIX) as ENTRIES\n// If fail, END\n//\n// with ENTRIES\n// If pattern[n] is GLOBSTAR\n// // handle the case where the globstar match is empty\n// // by pruning it out, and testing the resulting pattern\n// PROCESS(pattern[0..n] + pattern[n+1 .. $], false)\n// // handle other cases.\n// for ENTRY in ENTRIES (not dotfiles)\n// // attach globstar + tail onto the entry\n// // Mark that this entry is a globstar match\n// PROCESS(pattern[0..n] + ENTRY + pattern[n .. $], true)\n//\n// else // not globstar\n// for ENTRY in ENTRIES (not dotfiles, unless pattern[n] is dot)\n// Test ENTRY against pattern[n]\n// If fails, continue\n// If passes, PROCESS(pattern[0..n] + item + pattern[n+1 .. $])\n//\n// Caveat:\n// Cache all stats and readdirs results to minimize syscall. Since all\n// we ever care about is existence and directory-ness, we can just keep\n// `true` for files, and [children,...] for directories, or `false` for\n// things that don't exist.\n\nmodule.exports = glob\n\nvar fs = require('fs')\nvar rp = require('fs.realpath')\nvar minimatch = require('minimatch')\nvar Minimatch = minimatch.Minimatch\nvar inherits = require('inherits')\nvar EE = require('events').EventEmitter\nvar path = require('path')\nvar assert = require('assert')\nvar isAbsolute = require('path-is-absolute')\nvar globSync = require('./sync.js')\nvar common = require('./common.js')\nvar alphasort = common.alphasort\nvar alphasorti = common.alphasorti\nvar setopts = common.setopts\nvar ownProp = common.ownProp\nvar inflight = require('inflight')\nvar util = require('util')\nvar childrenIgnored = common.childrenIgnored\nvar isIgnored = common.isIgnored\n\nvar once = require('once')\n\nfunction glob (pattern, options, cb) {\n if (typeof options === 'function') cb = options, options = {}\n if (!options) options = {}\n\n if (options.sync) {\n if (cb)\n throw new TypeError('callback provided to sync glob')\n return globSync(pattern, options)\n }\n\n return new Glob(pattern, options, cb)\n}\n\nglob.sync = globSync\nvar GlobSync = glob.GlobSync = globSync.GlobSync\n\n// old api surface\nglob.glob = glob\n\nfunction extend (origin, add) {\n if (add === null || typeof add !== 'object') {\n return origin\n }\n\n var keys = Object.keys(add)\n var i = keys.length\n while (i--) {\n origin[keys[i]] = add[keys[i]]\n }\n return origin\n}\n\nglob.hasMagic = function (pattern, options_) {\n var options = extend({}, options_)\n options.noprocess = true\n\n var g = new Glob(pattern, options)\n var set = g.minimatch.set\n\n if (!pattern)\n return false\n\n if (set.length > 1)\n return true\n\n for (var j = 0; j < set[0].length; j++) {\n if (typeof set[0][j] !== 'string')\n return true\n }\n\n return false\n}\n\nglob.Glob = Glob\ninherits(Glob, EE)\nfunction Glob (pattern, options, cb) {\n if (typeof options === 'function') {\n cb = options\n options = null\n }\n\n if (options && options.sync) {\n if (cb)\n throw new TypeError('callback provided to sync glob')\n return new GlobSync(pattern, options)\n }\n\n if (!(this instanceof Glob))\n return new Glob(pattern, options, cb)\n\n setopts(this, pattern, options)\n this._didRealPath = false\n\n // process each pattern in the minimatch set\n var n = this.minimatch.set.length\n\n // The matches are stored as {: true,...} so that\n // duplicates are automagically pruned.\n // Later, we do an Object.keys() on these.\n // Keep them as a list so we can fill in when nonull is set.\n this.matches = new Array(n)\n\n if (typeof cb === 'function') {\n cb = once(cb)\n this.on('error', cb)\n this.on('end', function (matches) {\n cb(null, matches)\n })\n }\n\n var self = this\n this._processing = 0\n\n this._emitQueue = []\n this._processQueue = []\n this.paused = false\n\n if (this.noprocess)\n return this\n\n if (n === 0)\n return done()\n\n var sync = true\n for (var i = 0; i < n; i ++) {\n this._process(this.minimatch.set[i], i, false, done)\n }\n sync = false\n\n function done () {\n --self._processing\n if (self._processing <= 0) {\n if (sync) {\n process.nextTick(function () {\n self._finish()\n })\n } else {\n self._finish()\n }\n }\n }\n}\n\nGlob.prototype._finish = function () {\n assert(this instanceof Glob)\n if (this.aborted)\n return\n\n if (this.realpath && !this._didRealpath)\n return this._realpath()\n\n common.finish(this)\n this.emit('end', this.found)\n}\n\nGlob.prototype._realpath = function () {\n if (this._didRealpath)\n return\n\n this._didRealpath = true\n\n var n = this.matches.length\n if (n === 0)\n return this._finish()\n\n var self = this\n for (var i = 0; i < this.matches.length; i++)\n this._realpathSet(i, next)\n\n function next () {\n if (--n === 0)\n self._finish()\n }\n}\n\nGlob.prototype._realpathSet = function (index, cb) {\n var matchset = this.matches[index]\n if (!matchset)\n return cb()\n\n var found = Object.keys(matchset)\n var self = this\n var n = found.length\n\n if (n === 0)\n return cb()\n\n var set = this.matches[index] = Object.create(null)\n found.forEach(function (p, i) {\n // If there's a problem with the stat, then it means that\n // one or more of the links in the realpath couldn't be\n // resolved. just return the abs value in that case.\n p = self._makeAbs(p)\n rp.realpath(p, self.realpathCache, function (er, real) {\n if (!er)\n set[real] = true\n else if (er.syscall === 'stat')\n set[p] = true\n else\n self.emit('error', er) // srsly wtf right here\n\n if (--n === 0) {\n self.matches[index] = set\n cb()\n }\n })\n })\n}\n\nGlob.prototype._mark = function (p) {\n return common.mark(this, p)\n}\n\nGlob.prototype._makeAbs = function (f) {\n return common.makeAbs(this, f)\n}\n\nGlob.prototype.abort = function () {\n this.aborted = true\n this.emit('abort')\n}\n\nGlob.prototype.pause = function () {\n if (!this.paused) {\n this.paused = true\n this.emit('pause')\n }\n}\n\nGlob.prototype.resume = function () {\n if (this.paused) {\n this.emit('resume')\n this.paused = false\n if (this._emitQueue.length) {\n var eq = this._emitQueue.slice(0)\n this._emitQueue.length = 0\n for (var i = 0; i < eq.length; i ++) {\n var e = eq[i]\n this._emitMatch(e[0], e[1])\n }\n }\n if (this._processQueue.length) {\n var pq = this._processQueue.slice(0)\n this._processQueue.length = 0\n for (var i = 0; i < pq.length; i ++) {\n var p = pq[i]\n this._processing--\n this._process(p[0], p[1], p[2], p[3])\n }\n }\n }\n}\n\nGlob.prototype._process = function (pattern, index, inGlobStar, cb) {\n assert(this instanceof Glob)\n assert(typeof cb === 'function')\n\n if (this.aborted)\n return\n\n this._processing++\n if (this.paused) {\n this._processQueue.push([pattern, index, inGlobStar, cb])\n return\n }\n\n //console.error('PROCESS %d', this._processing, pattern)\n\n // Get the first [n] parts of pattern that are all strings.\n var n = 0\n while (typeof pattern[n] === 'string') {\n n ++\n }\n // now n is the index of the first one that is *not* a string.\n\n // see if there's anything else\n var prefix\n switch (n) {\n // if not, then this is rather simple\n case pattern.length:\n this._processSimple(pattern.join('/'), index, cb)\n return\n\n case 0:\n // pattern *starts* with some non-trivial item.\n // going to readdir(cwd), but not include the prefix in matches.\n prefix = null\n break\n\n default:\n // pattern has some string bits in the front.\n // whatever it starts with, whether that's 'absolute' like /foo/bar,\n // or 'relative' like '../baz'\n prefix = pattern.slice(0, n).join('/')\n break\n }\n\n var remain = pattern.slice(n)\n\n // get the list of entries.\n var read\n if (prefix === null)\n read = '.'\n else if (isAbsolute(prefix) || isAbsolute(pattern.join('/'))) {\n if (!prefix || !isAbsolute(prefix))\n prefix = '/' + prefix\n read = prefix\n } else\n read = prefix\n\n var abs = this._makeAbs(read)\n\n //if ignored, skip _processing\n if (childrenIgnored(this, read))\n return cb()\n\n var isGlobStar = remain[0] === minimatch.GLOBSTAR\n if (isGlobStar)\n this._processGlobStar(prefix, read, abs, remain, index, inGlobStar, cb)\n else\n this._processReaddir(prefix, read, abs, remain, index, inGlobStar, cb)\n}\n\nGlob.prototype._processReaddir = function (prefix, read, abs, remain, index, inGlobStar, cb) {\n var self = this\n this._readdir(abs, inGlobStar, function (er, entries) {\n return self._processReaddir2(prefix, read, abs, remain, index, inGlobStar, entries, cb)\n })\n}\n\nGlob.prototype._processReaddir2 = function (prefix, read, abs, remain, index, inGlobStar, entries, cb) {\n\n // if the abs isn't a dir, then nothing can match!\n if (!entries)\n return cb()\n\n // It will only match dot entries if it starts with a dot, or if\n // dot is set. Stuff like @(.foo|.bar) isn't allowed.\n var pn = remain[0]\n var negate = !!this.minimatch.negate\n var rawGlob = pn._glob\n var dotOk = this.dot || rawGlob.charAt(0) === '.'\n\n var matchedEntries = []\n for (var i = 0; i < entries.length; i++) {\n var e = entries[i]\n if (e.charAt(0) !== '.' || dotOk) {\n var m\n if (negate && !prefix) {\n m = !e.match(pn)\n } else {\n m = e.match(pn)\n }\n if (m)\n matchedEntries.push(e)\n }\n }\n\n //console.error('prd2', prefix, entries, remain[0]._glob, matchedEntries)\n\n var len = matchedEntries.length\n // If there are no matched entries, then nothing matches.\n if (len === 0)\n return cb()\n\n // if this is the last remaining pattern bit, then no need for\n // an additional stat *unless* the user has specified mark or\n // stat explicitly. We know they exist, since readdir returned\n // them.\n\n if (remain.length === 1 && !this.mark && !this.stat) {\n if (!this.matches[index])\n this.matches[index] = Object.create(null)\n\n for (var i = 0; i < len; i ++) {\n var e = matchedEntries[i]\n if (prefix) {\n if (prefix !== '/')\n e = prefix + '/' + e\n else\n e = prefix + e\n }\n\n if (e.charAt(0) === '/' && !this.nomount) {\n e = path.join(this.root, e)\n }\n this._emitMatch(index, e)\n }\n // This was the last one, and no stats were needed\n return cb()\n }\n\n // now test all matched entries as stand-ins for that part\n // of the pattern.\n remain.shift()\n for (var i = 0; i < len; i ++) {\n var e = matchedEntries[i]\n var newPattern\n if (prefix) {\n if (prefix !== '/')\n e = prefix + '/' + e\n else\n e = prefix + e\n }\n this._process([e].concat(remain), index, inGlobStar, cb)\n }\n cb()\n}\n\nGlob.prototype._emitMatch = function (index, e) {\n if (this.aborted)\n return\n\n if (isIgnored(this, e))\n return\n\n if (this.paused) {\n this._emitQueue.push([index, e])\n return\n }\n\n var abs = isAbsolute(e) ? e : this._makeAbs(e)\n\n if (this.mark)\n e = this._mark(e)\n\n if (this.absolute)\n e = abs\n\n if (this.matches[index][e])\n return\n\n if (this.nodir) {\n var c = this.cache[abs]\n if (c === 'DIR' || Array.isArray(c))\n return\n }\n\n this.matches[index][e] = true\n\n var st = this.statCache[abs]\n if (st)\n this.emit('stat', e, st)\n\n this.emit('match', e)\n}\n\nGlob.prototype._readdirInGlobStar = function (abs, cb) {\n if (this.aborted)\n return\n\n // follow all symlinked directories forever\n // just proceed as if this is a non-globstar situation\n if (this.follow)\n return this._readdir(abs, false, cb)\n\n var lstatkey = 'lstat\\0' + abs\n var self = this\n var lstatcb = inflight(lstatkey, lstatcb_)\n\n if (lstatcb)\n fs.lstat(abs, lstatcb)\n\n function lstatcb_ (er, lstat) {\n if (er && er.code === 'ENOENT')\n return cb()\n\n var isSym = lstat && lstat.isSymbolicLink()\n self.symlinks[abs] = isSym\n\n // If it's not a symlink or a dir, then it's definitely a regular file.\n // don't bother doing a readdir in that case.\n if (!isSym && lstat && !lstat.isDirectory()) {\n self.cache[abs] = 'FILE'\n cb()\n } else\n self._readdir(abs, false, cb)\n }\n}\n\nGlob.prototype._readdir = function (abs, inGlobStar, cb) {\n if (this.aborted)\n return\n\n cb = inflight('readdir\\0'+abs+'\\0'+inGlobStar, cb)\n if (!cb)\n return\n\n //console.error('RD %j %j', +inGlobStar, abs)\n if (inGlobStar && !ownProp(this.symlinks, abs))\n return this._readdirInGlobStar(abs, cb)\n\n if (ownProp(this.cache, abs)) {\n var c = this.cache[abs]\n if (!c || c === 'FILE')\n return cb()\n\n if (Array.isArray(c))\n return cb(null, c)\n }\n\n var self = this\n fs.readdir(abs, readdirCb(this, abs, cb))\n}\n\nfunction readdirCb (self, abs, cb) {\n return function (er, entries) {\n if (er)\n self._readdirError(abs, er, cb)\n else\n self._readdirEntries(abs, entries, cb)\n }\n}\n\nGlob.prototype._readdirEntries = function (abs, entries, cb) {\n if (this.aborted)\n return\n\n // if we haven't asked to stat everything, then just\n // assume that everything in there exists, so we can avoid\n // having to stat it a second time.\n if (!this.mark && !this.stat) {\n for (var i = 0; i < entries.length; i ++) {\n var e = entries[i]\n if (abs === '/')\n e = abs + e\n else\n e = abs + '/' + e\n this.cache[e] = true\n }\n }\n\n this.cache[abs] = entries\n return cb(null, entries)\n}\n\nGlob.prototype._readdirError = function (f, er, cb) {\n if (this.aborted)\n return\n\n // handle errors, and cache the information\n switch (er.code) {\n case 'ENOTSUP': // https://github.com/isaacs/node-glob/issues/205\n case 'ENOTDIR': // totally normal. means it *does* exist.\n var abs = this._makeAbs(f)\n this.cache[abs] = 'FILE'\n if (abs === this.cwdAbs) {\n var error = new Error(er.code + ' invalid cwd ' + this.cwd)\n error.path = this.cwd\n error.code = er.code\n this.emit('error', error)\n this.abort()\n }\n break\n\n case 'ENOENT': // not terribly unusual\n case 'ELOOP':\n case 'ENAMETOOLONG':\n case 'UNKNOWN':\n this.cache[this._makeAbs(f)] = false\n break\n\n default: // some unusual error. Treat as failure.\n this.cache[this._makeAbs(f)] = false\n if (this.strict) {\n this.emit('error', er)\n // If the error is handled, then we abort\n // if not, we threw out of here\n this.abort()\n }\n if (!this.silent)\n console.error('glob error', er)\n break\n }\n\n return cb()\n}\n\nGlob.prototype._processGlobStar = function (prefix, read, abs, remain, index, inGlobStar, cb) {\n var self = this\n this._readdir(abs, inGlobStar, function (er, entries) {\n self._processGlobStar2(prefix, read, abs, remain, index, inGlobStar, entries, cb)\n })\n}\n\n\nGlob.prototype._processGlobStar2 = function (prefix, read, abs, remain, index, inGlobStar, entries, cb) {\n //console.error('pgs2', prefix, remain[0], entries)\n\n // no entries means not a dir, so it can never have matches\n // foo.txt/** doesn't match foo.txt\n if (!entries)\n return cb()\n\n // test without the globstar, and with every child both below\n // and replacing the globstar.\n var remainWithoutGlobStar = remain.slice(1)\n var gspref = prefix ? [ prefix ] : []\n var noGlobStar = gspref.concat(remainWithoutGlobStar)\n\n // the noGlobStar pattern exits the inGlobStar state\n this._process(noGlobStar, index, false, cb)\n\n var isSym = this.symlinks[abs]\n var len = entries.length\n\n // If it's a symlink, and we're in a globstar, then stop\n if (isSym && inGlobStar)\n return cb()\n\n for (var i = 0; i < len; i++) {\n var e = entries[i]\n if (e.charAt(0) === '.' && !this.dot)\n continue\n\n // these two cases enter the inGlobStar state\n var instead = gspref.concat(entries[i], remainWithoutGlobStar)\n this._process(instead, index, true, cb)\n\n var below = gspref.concat(entries[i], remain)\n this._process(below, index, true, cb)\n }\n\n cb()\n}\n\nGlob.prototype._processSimple = function (prefix, index, cb) {\n // XXX review this. Shouldn't it be doing the mounting etc\n // before doing stat? kinda weird?\n var self = this\n this._stat(prefix, function (er, exists) {\n self._processSimple2(prefix, index, er, exists, cb)\n })\n}\nGlob.prototype._processSimple2 = function (prefix, index, er, exists, cb) {\n\n //console.error('ps2', prefix, exists)\n\n if (!this.matches[index])\n this.matches[index] = Object.create(null)\n\n // If it doesn't exist, then just mark the lack of results\n if (!exists)\n return cb()\n\n if (prefix && isAbsolute(prefix) && !this.nomount) {\n var trail = /[\\/\\\\]$/.test(prefix)\n if (prefix.charAt(0) === '/') {\n prefix = path.join(this.root, prefix)\n } else {\n prefix = path.resolve(this.root, prefix)\n if (trail)\n prefix += '/'\n }\n }\n\n if (process.platform === 'win32')\n prefix = prefix.replace(/\\\\/g, '/')\n\n // Mark this as a match\n this._emitMatch(index, prefix)\n cb()\n}\n\n// Returns either 'DIR', 'FILE', or false\nGlob.prototype._stat = function (f, cb) {\n var abs = this._makeAbs(f)\n var needDir = f.slice(-1) === '/'\n\n if (f.length > this.maxLength)\n return cb()\n\n if (!this.stat && ownProp(this.cache, abs)) {\n var c = this.cache[abs]\n\n if (Array.isArray(c))\n c = 'DIR'\n\n // It exists, but maybe not how we need it\n if (!needDir || c === 'DIR')\n return cb(null, c)\n\n if (needDir && c === 'FILE')\n return cb()\n\n // otherwise we have to stat, because maybe c=true\n // if we know it exists, but not what it is.\n }\n\n var exists\n var stat = this.statCache[abs]\n if (stat !== undefined) {\n if (stat === false)\n return cb(null, stat)\n else {\n var type = stat.isDirectory() ? 'DIR' : 'FILE'\n if (needDir && type === 'FILE')\n return cb()\n else\n return cb(null, type, stat)\n }\n }\n\n var self = this\n var statcb = inflight('stat\\0' + abs, lstatcb_)\n if (statcb)\n fs.lstat(abs, statcb)\n\n function lstatcb_ (er, lstat) {\n if (lstat && lstat.isSymbolicLink()) {\n // If it's a symlink, then treat it as the target, unless\n // the target does not exist, then treat it as a file.\n return fs.stat(abs, function (er, stat) {\n if (er)\n self._stat2(f, abs, null, lstat, cb)\n else\n self._stat2(f, abs, er, stat, cb)\n })\n } else {\n self._stat2(f, abs, er, lstat, cb)\n }\n }\n}\n\nGlob.prototype._stat2 = function (f, abs, er, stat, cb) {\n if (er && (er.code === 'ENOENT' || er.code === 'ENOTDIR')) {\n this.statCache[abs] = false\n return cb()\n }\n\n var needDir = f.slice(-1) === '/'\n this.statCache[abs] = stat\n\n if (abs.slice(-1) === '/' && stat && !stat.isDirectory())\n return cb(null, false, stat)\n\n var c = true\n if (stat)\n c = stat.isDirectory() ? 'DIR' : 'FILE'\n this.cache[abs] = this.cache[abs] || c\n\n if (needDir && c === 'FILE')\n return cb()\n\n return cb(null, c, stat)\n}\n", "const assert = require(\"assert\")\nconst path = require(\"path\")\nconst fs = require(\"fs\")\nlet glob = undefined\ntry {\n glob = require(\"glob\")\n} catch (_err) {\n // treat glob as optional.\n}\n\nconst defaultGlobOpts = {\n nosort: true,\n silent: true\n}\n\n// for EMFILE handling\nlet timeout = 0\n\nconst isWindows = (process.platform === \"win32\")\n\nconst defaults = options => {\n const methods = [\n 'unlink',\n 'chmod',\n 'stat',\n 'lstat',\n 'rmdir',\n 'readdir'\n ]\n methods.forEach(m => {\n options[m] = options[m] || fs[m]\n m = m + 'Sync'\n options[m] = options[m] || fs[m]\n })\n\n options.maxBusyTries = options.maxBusyTries || 3\n options.emfileWait = options.emfileWait || 1000\n if (options.glob === false) {\n options.disableGlob = true\n }\n if (options.disableGlob !== true && glob === undefined) {\n throw Error('glob dependency not found, set `options.disableGlob = true` if intentional')\n }\n options.disableGlob = options.disableGlob || false\n options.glob = options.glob || defaultGlobOpts\n}\n\nconst rimraf = (p, options, cb) => {\n if (typeof options === 'function') {\n cb = options\n options = {}\n }\n\n assert(p, 'rimraf: missing path')\n assert.equal(typeof p, 'string', 'rimraf: path should be a string')\n assert.equal(typeof cb, 'function', 'rimraf: callback function required')\n assert(options, 'rimraf: invalid options argument provided')\n assert.equal(typeof options, 'object', 'rimraf: options should be object')\n\n defaults(options)\n\n let busyTries = 0\n let errState = null\n let n = 0\n\n const next = (er) => {\n errState = errState || er\n if (--n === 0)\n cb(errState)\n }\n\n const afterGlob = (er, results) => {\n if (er)\n return cb(er)\n\n n = results.length\n if (n === 0)\n return cb()\n\n results.forEach(p => {\n const CB = (er) => {\n if (er) {\n if ((er.code === \"EBUSY\" || er.code === \"ENOTEMPTY\" || er.code === \"EPERM\") &&\n busyTries < options.maxBusyTries) {\n busyTries ++\n // try again, with the same exact callback as this one.\n return setTimeout(() => rimraf_(p, options, CB), busyTries * 100)\n }\n\n // this one won't happen if graceful-fs is used.\n if (er.code === \"EMFILE\" && timeout < options.emfileWait) {\n return setTimeout(() => rimraf_(p, options, CB), timeout ++)\n }\n\n // already gone\n if (er.code === \"ENOENT\") er = null\n }\n\n timeout = 0\n next(er)\n }\n rimraf_(p, options, CB)\n })\n }\n\n if (options.disableGlob || !glob.hasMagic(p))\n return afterGlob(null, [p])\n\n options.lstat(p, (er, stat) => {\n if (!er)\n return afterGlob(null, [p])\n\n glob(p, options.glob, afterGlob)\n })\n\n}\n\n// Two possible strategies.\n// 1. Assume it's a file. unlink it, then do the dir stuff on EPERM or EISDIR\n// 2. Assume it's a directory. readdir, then do the file stuff on ENOTDIR\n//\n// Both result in an extra syscall when you guess wrong. However, there\n// are likely far more normal files in the world than directories. This\n// is based on the assumption that a the average number of files per\n// directory is >= 1.\n//\n// If anyone ever complains about this, then I guess the strategy could\n// be made configurable somehow. But until then, YAGNI.\nconst rimraf_ = (p, options, cb) => {\n assert(p)\n assert(options)\n assert(typeof cb === 'function')\n\n // sunos lets the root user unlink directories, which is... weird.\n // so we have to lstat here and make sure it's not a dir.\n options.lstat(p, (er, st) => {\n if (er && er.code === \"ENOENT\")\n return cb(null)\n\n // Windows can EPERM on stat. Life is suffering.\n if (er && er.code === \"EPERM\" && isWindows)\n fixWinEPERM(p, options, er, cb)\n\n if (st && st.isDirectory())\n return rmdir(p, options, er, cb)\n\n options.unlink(p, er => {\n if (er) {\n if (er.code === \"ENOENT\")\n return cb(null)\n if (er.code === \"EPERM\")\n return (isWindows)\n ? fixWinEPERM(p, options, er, cb)\n : rmdir(p, options, er, cb)\n if (er.code === \"EISDIR\")\n return rmdir(p, options, er, cb)\n }\n return cb(er)\n })\n })\n}\n\nconst fixWinEPERM = (p, options, er, cb) => {\n assert(p)\n assert(options)\n assert(typeof cb === 'function')\n\n options.chmod(p, 0o666, er2 => {\n if (er2)\n cb(er2.code === \"ENOENT\" ? null : er)\n else\n options.stat(p, (er3, stats) => {\n if (er3)\n cb(er3.code === \"ENOENT\" ? null : er)\n else if (stats.isDirectory())\n rmdir(p, options, er, cb)\n else\n options.unlink(p, cb)\n })\n })\n}\n\nconst fixWinEPERMSync = (p, options, er) => {\n assert(p)\n assert(options)\n\n try {\n options.chmodSync(p, 0o666)\n } catch (er2) {\n if (er2.code === \"ENOENT\")\n return\n else\n throw er\n }\n\n let stats\n try {\n stats = options.statSync(p)\n } catch (er3) {\n if (er3.code === \"ENOENT\")\n return\n else\n throw er\n }\n\n if (stats.isDirectory())\n rmdirSync(p, options, er)\n else\n options.unlinkSync(p)\n}\n\nconst rmdir = (p, options, originalEr, cb) => {\n assert(p)\n assert(options)\n assert(typeof cb === 'function')\n\n // try to rmdir first, and only readdir on ENOTEMPTY or EEXIST (SunOS)\n // if we guessed wrong, and it's not a directory, then\n // raise the original error.\n options.rmdir(p, er => {\n if (er && (er.code === \"ENOTEMPTY\" || er.code === \"EEXIST\" || er.code === \"EPERM\"))\n rmkids(p, options, cb)\n else if (er && er.code === \"ENOTDIR\")\n cb(originalEr)\n else\n cb(er)\n })\n}\n\nconst rmkids = (p, options, cb) => {\n assert(p)\n assert(options)\n assert(typeof cb === 'function')\n\n options.readdir(p, (er, files) => {\n if (er)\n return cb(er)\n let n = files.length\n if (n === 0)\n return options.rmdir(p, cb)\n let errState\n files.forEach(f => {\n rimraf(path.join(p, f), options, er => {\n if (errState)\n return\n if (er)\n return cb(errState = er)\n if (--n === 0)\n options.rmdir(p, cb)\n })\n })\n })\n}\n\n// this looks simpler, and is strictly *faster*, but will\n// tie up the JavaScript thread and fail on excessively\n// deep directory trees.\nconst rimrafSync = (p, options) => {\n options = options || {}\n defaults(options)\n\n assert(p, 'rimraf: missing path')\n assert.equal(typeof p, 'string', 'rimraf: path should be a string')\n assert(options, 'rimraf: missing options')\n assert.equal(typeof options, 'object', 'rimraf: options should be object')\n\n let results\n\n if (options.disableGlob || !glob.hasMagic(p)) {\n results = [p]\n } else {\n try {\n options.lstatSync(p)\n results = [p]\n } catch (er) {\n results = glob.sync(p, options.glob)\n }\n }\n\n if (!results.length)\n return\n\n for (let i = 0; i < results.length; i++) {\n const p = results[i]\n\n let st\n try {\n st = options.lstatSync(p)\n } catch (er) {\n if (er.code === \"ENOENT\")\n return\n\n // Windows can EPERM on stat. Life is suffering.\n if (er.code === \"EPERM\" && isWindows)\n fixWinEPERMSync(p, options, er)\n }\n\n try {\n // sunos lets the root user unlink directories, which is... weird.\n if (st && st.isDirectory())\n rmdirSync(p, options, null)\n else\n options.unlinkSync(p)\n } catch (er) {\n if (er.code === \"ENOENT\")\n return\n if (er.code === \"EPERM\")\n return isWindows ? fixWinEPERMSync(p, options, er) : rmdirSync(p, options, er)\n if (er.code !== \"EISDIR\")\n throw er\n\n rmdirSync(p, options, er)\n }\n }\n}\n\nconst rmdirSync = (p, options, originalEr) => {\n assert(p)\n assert(options)\n\n try {\n options.rmdirSync(p)\n } catch (er) {\n if (er.code === \"ENOENT\")\n return\n if (er.code === \"ENOTDIR\")\n throw originalEr\n if (er.code === \"ENOTEMPTY\" || er.code === \"EEXIST\" || er.code === \"EPERM\")\n rmkidsSync(p, options)\n }\n}\n\nconst rmkidsSync = (p, options) => {\n assert(p)\n assert(options)\n options.readdirSync(p).forEach(f => rimrafSync(path.join(p, f), options))\n\n // We only end up here once we got ENOTEMPTY at least once, and\n // at this point, we are guaranteed to have removed all the kids.\n // So, we know that it won't be ENOENT or ENOTDIR or anything else.\n // try really hard to delete stuff on windows, because it has a\n // PROFOUNDLY annoying habit of not closing handles promptly when\n // files are deleted, resulting in spurious ENOTEMPTY errors.\n const retries = isWindows ? 100 : 1\n let i = 0\n do {\n let threw = true\n try {\n const ret = options.rmdirSync(p, options)\n threw = false\n return ret\n } finally {\n if (++i < retries && threw)\n continue\n }\n } while (true)\n}\n\nmodule.exports = rimraf\nrimraf.sync = rimrafSync\n", "/*!\n * Tmp\n *\n * Copyright (c) 2011-2017 KARASZI Istvan \n *\n * MIT Licensed\n */\n\n/*\n * Module dependencies.\n */\nconst fs = require('fs');\nconst os = require('os');\nconst path = require('path');\nconst crypto = require('crypto');\nconst _c = { fs: fs.constants, os: os.constants };\nconst rimraf = require('rimraf');\n\n/*\n * The working inner variables.\n */\nconst\n // the random characters to choose from\n RANDOM_CHARS = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz',\n\n TEMPLATE_PATTERN = /XXXXXX/,\n\n DEFAULT_TRIES = 3,\n\n CREATE_FLAGS = (_c.O_CREAT || _c.fs.O_CREAT) | (_c.O_EXCL || _c.fs.O_EXCL) | (_c.O_RDWR || _c.fs.O_RDWR),\n\n // constants are off on the windows platform and will not match the actual errno codes\n IS_WIN32 = os.platform() === 'win32',\n EBADF = _c.EBADF || _c.os.errno.EBADF,\n ENOENT = _c.ENOENT || _c.os.errno.ENOENT,\n\n DIR_MODE = 0o700 /* 448 */,\n FILE_MODE = 0o600 /* 384 */,\n\n EXIT = 'exit',\n\n // this will hold the objects need to be removed on exit\n _removeObjects = [],\n\n // API change in fs.rmdirSync leads to error when passing in a second parameter, e.g. the callback\n FN_RMDIR_SYNC = fs.rmdirSync.bind(fs),\n FN_RIMRAF_SYNC = rimraf.sync;\n\nlet\n _gracefulCleanup = false;\n\n/**\n * Gets a temporary file name.\n *\n * @param {(Options|tmpNameCallback)} options options or callback\n * @param {?tmpNameCallback} callback the callback function\n */\nfunction tmpName(options, callback) {\n const\n args = _parseArguments(options, callback),\n opts = args[0],\n cb = args[1];\n\n try {\n _assertAndSanitizeOptions(opts);\n } catch (err) {\n return cb(err);\n }\n\n let tries = opts.tries;\n (function _getUniqueName() {\n try {\n const name = _generateTmpName(opts);\n\n // check whether the path exists then retry if needed\n fs.stat(name, function (err) {\n /* istanbul ignore else */\n if (!err) {\n /* istanbul ignore else */\n if (tries-- > 0) return _getUniqueName();\n\n return cb(new Error('Could not get a unique tmp filename, max tries reached ' + name));\n }\n\n cb(null, name);\n });\n } catch (err) {\n cb(err);\n }\n }());\n}\n\n/**\n * Synchronous version of tmpName.\n *\n * @param {Object} options\n * @returns {string} the generated random name\n * @throws {Error} if the options are invalid or could not generate a filename\n */\nfunction tmpNameSync(options) {\n const\n args = _parseArguments(options),\n opts = args[0];\n\n _assertAndSanitizeOptions(opts);\n\n let tries = opts.tries;\n do {\n const name = _generateTmpName(opts);\n try {\n fs.statSync(name);\n } catch (e) {\n return name;\n }\n } while (tries-- > 0);\n\n throw new Error('Could not get a unique tmp filename, max tries reached');\n}\n\n/**\n * Creates and opens a temporary file.\n *\n * @param {(Options|null|undefined|fileCallback)} options the config options or the callback function or null or undefined\n * @param {?fileCallback} callback\n */\nfunction file(options, callback) {\n const\n args = _parseArguments(options, callback),\n opts = args[0],\n cb = args[1];\n\n // gets a temporary filename\n tmpName(opts, function _tmpNameCreated(err, name) {\n /* istanbul ignore else */\n if (err) return cb(err);\n\n // create and open the file\n fs.open(name, CREATE_FLAGS, opts.mode || FILE_MODE, function _fileCreated(err, fd) {\n /* istanbu ignore else */\n if (err) return cb(err);\n\n if (opts.discardDescriptor) {\n return fs.close(fd, function _discardCallback(possibleErr) {\n // the chance of getting an error on close here is rather low and might occur in the most edgiest cases only\n return cb(possibleErr, name, undefined, _prepareTmpFileRemoveCallback(name, -1, opts, false));\n });\n } else {\n // detachDescriptor passes the descriptor whereas discardDescriptor closes it, either way, we no longer care\n // about the descriptor\n const discardOrDetachDescriptor = opts.discardDescriptor || opts.detachDescriptor;\n cb(null, name, fd, _prepareTmpFileRemoveCallback(name, discardOrDetachDescriptor ? -1 : fd, opts, false));\n }\n });\n });\n}\n\n/**\n * Synchronous version of file.\n *\n * @param {Options} options\n * @returns {FileSyncObject} object consists of name, fd and removeCallback\n * @throws {Error} if cannot create a file\n */\nfunction fileSync(options) {\n const\n args = _parseArguments(options),\n opts = args[0];\n\n const discardOrDetachDescriptor = opts.discardDescriptor || opts.detachDescriptor;\n const name = tmpNameSync(opts);\n var fd = fs.openSync(name, CREATE_FLAGS, opts.mode || FILE_MODE);\n /* istanbul ignore else */\n if (opts.discardDescriptor) {\n fs.closeSync(fd);\n fd = undefined;\n }\n\n return {\n name: name,\n fd: fd,\n removeCallback: _prepareTmpFileRemoveCallback(name, discardOrDetachDescriptor ? -1 : fd, opts, true)\n };\n}\n\n/**\n * Creates a temporary directory.\n *\n * @param {(Options|dirCallback)} options the options or the callback function\n * @param {?dirCallback} callback\n */\nfunction dir(options, callback) {\n const\n args = _parseArguments(options, callback),\n opts = args[0],\n cb = args[1];\n\n // gets a temporary filename\n tmpName(opts, function _tmpNameCreated(err, name) {\n /* istanbul ignore else */\n if (err) return cb(err);\n\n // create the directory\n fs.mkdir(name, opts.mode || DIR_MODE, function _dirCreated(err) {\n /* istanbul ignore else */\n if (err) return cb(err);\n\n cb(null, name, _prepareTmpDirRemoveCallback(name, opts, false));\n });\n });\n}\n\n/**\n * Synchronous version of dir.\n *\n * @param {Options} options\n * @returns {DirSyncObject} object consists of name and removeCallback\n * @throws {Error} if it cannot create a directory\n */\nfunction dirSync(options) {\n const\n args = _parseArguments(options),\n opts = args[0];\n\n const name = tmpNameSync(opts);\n fs.mkdirSync(name, opts.mode || DIR_MODE);\n\n return {\n name: name,\n removeCallback: _prepareTmpDirRemoveCallback(name, opts, true)\n };\n}\n\n/**\n * Removes files asynchronously.\n *\n * @param {Object} fdPath\n * @param {Function} next\n * @private\n */\nfunction _removeFileAsync(fdPath, next) {\n const _handler = function (err) {\n if (err && !_isENOENT(err)) {\n // reraise any unanticipated error\n return next(err);\n }\n next();\n };\n\n if (0 <= fdPath[0])\n fs.close(fdPath[0], function () {\n fs.unlink(fdPath[1], _handler);\n });\n else fs.unlink(fdPath[1], _handler);\n}\n\n/**\n * Removes files synchronously.\n *\n * @param {Object} fdPath\n * @private\n */\nfunction _removeFileSync(fdPath) {\n let rethrownException = null;\n try {\n if (0 <= fdPath[0]) fs.closeSync(fdPath[0]);\n } catch (e) {\n // reraise any unanticipated error\n if (!_isEBADF(e) && !_isENOENT(e)) throw e;\n } finally {\n try {\n fs.unlinkSync(fdPath[1]);\n }\n catch (e) {\n // reraise any unanticipated error\n if (!_isENOENT(e)) rethrownException = e;\n }\n }\n if (rethrownException !== null) {\n throw rethrownException;\n }\n}\n\n/**\n * Prepares the callback for removal of the temporary file.\n *\n * Returns either a sync callback or a async callback depending on whether\n * fileSync or file was called, which is expressed by the sync parameter.\n *\n * @param {string} name the path of the file\n * @param {number} fd file descriptor\n * @param {Object} opts\n * @param {boolean} sync\n * @returns {fileCallback | fileCallbackSync}\n * @private\n */\nfunction _prepareTmpFileRemoveCallback(name, fd, opts, sync) {\n const removeCallbackSync = _prepareRemoveCallback(_removeFileSync, [fd, name], sync);\n const removeCallback = _prepareRemoveCallback(_removeFileAsync, [fd, name], sync, removeCallbackSync);\n\n if (!opts.keep) _removeObjects.unshift(removeCallbackSync);\n\n return sync ? removeCallbackSync : removeCallback;\n}\n\n/**\n * Prepares the callback for removal of the temporary directory.\n *\n * Returns either a sync callback or a async callback depending on whether\n * tmpFileSync or tmpFile was called, which is expressed by the sync parameter.\n *\n * @param {string} name\n * @param {Object} opts\n * @param {boolean} sync\n * @returns {Function} the callback\n * @private\n */\nfunction _prepareTmpDirRemoveCallback(name, opts, sync) {\n const removeFunction = opts.unsafeCleanup ? rimraf : fs.rmdir.bind(fs);\n const removeFunctionSync = opts.unsafeCleanup ? FN_RIMRAF_SYNC : FN_RMDIR_SYNC;\n const removeCallbackSync = _prepareRemoveCallback(removeFunctionSync, name, sync);\n const removeCallback = _prepareRemoveCallback(removeFunction, name, sync, removeCallbackSync);\n if (!opts.keep) _removeObjects.unshift(removeCallbackSync);\n\n return sync ? removeCallbackSync : removeCallback;\n}\n\n/**\n * Creates a guarded function wrapping the removeFunction call.\n *\n * The cleanup callback is save to be called multiple times.\n * Subsequent invocations will be ignored.\n *\n * @param {Function} removeFunction\n * @param {string} fileOrDirName\n * @param {boolean} sync\n * @param {cleanupCallbackSync?} cleanupCallbackSync\n * @returns {cleanupCallback | cleanupCallbackSync}\n * @private\n */\nfunction _prepareRemoveCallback(removeFunction, fileOrDirName, sync, cleanupCallbackSync) {\n let called = false;\n\n // if sync is true, the next parameter will be ignored\n return function _cleanupCallback(next) {\n\n /* istanbul ignore else */\n if (!called) {\n // remove cleanupCallback from cache\n const toRemove = cleanupCallbackSync || _cleanupCallback;\n const index = _removeObjects.indexOf(toRemove);\n /* istanbul ignore else */\n if (index >= 0) _removeObjects.splice(index, 1);\n\n called = true;\n if (sync || removeFunction === FN_RMDIR_SYNC || removeFunction === FN_RIMRAF_SYNC) {\n return removeFunction(fileOrDirName);\n } else {\n return removeFunction(fileOrDirName, next || function() {});\n }\n }\n };\n}\n\n/**\n * The garbage collector.\n *\n * @private\n */\nfunction _garbageCollector() {\n /* istanbul ignore else */\n if (!_gracefulCleanup) return;\n\n // the function being called removes itself from _removeObjects,\n // loop until _removeObjects is empty\n while (_removeObjects.length) {\n try {\n _removeObjects[0]();\n } catch (e) {\n // already removed?\n }\n }\n}\n\n/**\n * Random name generator based on crypto.\n * Adapted from http://blog.tompawlak.org/how-to-generate-random-values-nodejs-javascript\n *\n * @param {number} howMany\n * @returns {string} the generated random name\n * @private\n */\nfunction _randomChars(howMany) {\n let\n value = [],\n rnd = null;\n\n // make sure that we do not fail because we ran out of entropy\n try {\n rnd = crypto.randomBytes(howMany);\n } catch (e) {\n rnd = crypto.pseudoRandomBytes(howMany);\n }\n\n for (var i = 0; i < howMany; i++) {\n value.push(RANDOM_CHARS[rnd[i] % RANDOM_CHARS.length]);\n }\n\n return value.join('');\n}\n\n/**\n * Helper which determines whether a string s is blank, that is undefined, or empty or null.\n *\n * @private\n * @param {string} s\n * @returns {Boolean} true whether the string s is blank, false otherwise\n */\nfunction _isBlank(s) {\n return s === null || _isUndefined(s) || !s.trim();\n}\n\n/**\n * Checks whether the `obj` parameter is defined or not.\n *\n * @param {Object} obj\n * @returns {boolean} true if the object is undefined\n * @private\n */\nfunction _isUndefined(obj) {\n return typeof obj === 'undefined';\n}\n\n/**\n * Parses the function arguments.\n *\n * This function helps to have optional arguments.\n *\n * @param {(Options|null|undefined|Function)} options\n * @param {?Function} callback\n * @returns {Array} parsed arguments\n * @private\n */\nfunction _parseArguments(options, callback) {\n /* istanbul ignore else */\n if (typeof options === 'function') {\n return [{}, options];\n }\n\n /* istanbul ignore else */\n if (_isUndefined(options)) {\n return [{}, callback];\n }\n\n // copy options so we do not leak the changes we make internally\n const actualOptions = {};\n for (const key of Object.getOwnPropertyNames(options)) {\n actualOptions[key] = options[key];\n }\n\n return [actualOptions, callback];\n}\n\n/**\n * Generates a new temporary name.\n *\n * @param {Object} opts\n * @returns {string} the new random name according to opts\n * @private\n */\nfunction _generateTmpName(opts) {\n\n const tmpDir = opts.tmpdir;\n\n /* istanbul ignore else */\n if (!_isUndefined(opts.name))\n return path.join(tmpDir, opts.dir, opts.name);\n\n /* istanbul ignore else */\n if (!_isUndefined(opts.template))\n return path.join(tmpDir, opts.dir, opts.template).replace(TEMPLATE_PATTERN, _randomChars(6));\n\n // prefix and postfix\n const name = [\n opts.prefix ? opts.prefix : 'tmp',\n '-',\n process.pid,\n '-',\n _randomChars(12),\n opts.postfix ? '-' + opts.postfix : ''\n ].join('');\n\n return path.join(tmpDir, opts.dir, name);\n}\n\n/**\n * Asserts whether the specified options are valid, also sanitizes options and provides sane defaults for missing\n * options.\n *\n * @param {Options} options\n * @private\n */\nfunction _assertAndSanitizeOptions(options) {\n\n options.tmpdir = _getTmpDir(options);\n\n const tmpDir = options.tmpdir;\n\n /* istanbul ignore else */\n if (!_isUndefined(options.name))\n _assertIsRelative(options.name, 'name', tmpDir);\n /* istanbul ignore else */\n if (!_isUndefined(options.dir))\n _assertIsRelative(options.dir, 'dir', tmpDir);\n /* istanbul ignore else */\n if (!_isUndefined(options.template)) {\n _assertIsRelative(options.template, 'template', tmpDir);\n if (!options.template.match(TEMPLATE_PATTERN))\n throw new Error(`Invalid template, found \"${options.template}\".`);\n }\n /* istanbul ignore else */\n if (!_isUndefined(options.tries) && isNaN(options.tries) || options.tries < 0)\n throw new Error(`Invalid tries, found \"${options.tries}\".`);\n\n // if a name was specified we will try once\n options.tries = _isUndefined(options.name) ? options.tries || DEFAULT_TRIES : 1;\n options.keep = !!options.keep;\n options.detachDescriptor = !!options.detachDescriptor;\n options.discardDescriptor = !!options.discardDescriptor;\n options.unsafeCleanup = !!options.unsafeCleanup;\n\n // sanitize dir, also keep (multiple) blanks if the user, purportedly sane, requests us to\n options.dir = _isUndefined(options.dir) ? '' : path.relative(tmpDir, _resolvePath(options.dir, tmpDir));\n options.template = _isUndefined(options.template) ? undefined : path.relative(tmpDir, _resolvePath(options.template, tmpDir));\n // sanitize further if template is relative to options.dir\n options.template = _isBlank(options.template) ? undefined : path.relative(options.dir, options.template);\n\n // for completeness' sake only, also keep (multiple) blanks if the user, purportedly sane, requests us to\n options.name = _isUndefined(options.name) ? undefined : _sanitizeName(options.name);\n options.prefix = _isUndefined(options.prefix) ? '' : options.prefix;\n options.postfix = _isUndefined(options.postfix) ? '' : options.postfix;\n}\n\n/**\n * Resolve the specified path name in respect to tmpDir.\n *\n * The specified name might include relative path components, e.g. ../\n * so we need to resolve in order to be sure that is is located inside tmpDir\n *\n * @param name\n * @param tmpDir\n * @returns {string}\n * @private\n */\nfunction _resolvePath(name, tmpDir) {\n const sanitizedName = _sanitizeName(name);\n if (sanitizedName.startsWith(tmpDir)) {\n return path.resolve(sanitizedName);\n } else {\n return path.resolve(path.join(tmpDir, sanitizedName));\n }\n}\n\n/**\n * Sanitize the specified path name by removing all quote characters.\n *\n * @param name\n * @returns {string}\n * @private\n */\nfunction _sanitizeName(name) {\n if (_isBlank(name)) {\n return name;\n }\n return name.replace(/[\"']/g, '');\n}\n\n/**\n * Asserts whether specified name is relative to the specified tmpDir.\n *\n * @param {string} name\n * @param {string} option\n * @param {string} tmpDir\n * @throws {Error}\n * @private\n */\nfunction _assertIsRelative(name, option, tmpDir) {\n if (option === 'name') {\n // assert that name is not absolute and does not contain a path\n if (path.isAbsolute(name))\n throw new Error(`${option} option must not contain an absolute path, found \"${name}\".`);\n // must not fail on valid . or .. or similar such constructs\n let basename = path.basename(name);\n if (basename === '..' || basename === '.' || basename !== name)\n throw new Error(`${option} option must not contain a path, found \"${name}\".`);\n }\n else { // if (option === 'dir' || option === 'template') {\n // assert that dir or template are relative to tmpDir\n if (path.isAbsolute(name) && !name.startsWith(tmpDir)) {\n throw new Error(`${option} option must be relative to \"${tmpDir}\", found \"${name}\".`);\n }\n let resolvedPath = _resolvePath(name, tmpDir);\n if (!resolvedPath.startsWith(tmpDir))\n throw new Error(`${option} option must be relative to \"${tmpDir}\", found \"${resolvedPath}\".`);\n }\n}\n\n/**\n * Helper for testing against EBADF to compensate changes made to Node 7.x under Windows.\n *\n * @private\n */\nfunction _isEBADF(error) {\n return _isExpectedError(error, -EBADF, 'EBADF');\n}\n\n/**\n * Helper for testing against ENOENT to compensate changes made to Node 7.x under Windows.\n *\n * @private\n */\nfunction _isENOENT(error) {\n return _isExpectedError(error, -ENOENT, 'ENOENT');\n}\n\n/**\n * Helper to determine whether the expected error code matches the actual code and errno,\n * which will differ between the supported node versions.\n *\n * - Node >= 7.0:\n * error.code {string}\n * error.errno {number} any numerical value will be negated\n *\n * CAVEAT\n *\n * On windows, the errno for EBADF is -4083 but os.constants.errno.EBADF is different and we must assume that ENOENT\n * is no different here.\n *\n * @param {SystemError} error\n * @param {number} errno\n * @param {string} code\n * @private\n */\nfunction _isExpectedError(error, errno, code) {\n return IS_WIN32 ? error.code === code : error.code === code && error.errno === errno;\n}\n\n/**\n * Sets the graceful cleanup.\n *\n * If graceful cleanup is set, tmp will remove all controlled temporary objects on process exit, otherwise the\n * temporary objects will remain in place, waiting to be cleaned up on system restart or otherwise scheduled temporary\n * object removals.\n */\nfunction setGracefulCleanup() {\n _gracefulCleanup = true;\n}\n\n/**\n * Returns the currently configured tmp dir from os.tmpdir().\n *\n * @private\n * @param {?Options} options\n * @returns {string} the currently configured tmp dir\n */\nfunction _getTmpDir(options) {\n return path.resolve(_sanitizeName(options && options.tmpdir || os.tmpdir()));\n}\n\n// Install process exit listener\nprocess.addListener(EXIT, _garbageCollector);\n\n/**\n * Configuration options.\n *\n * @typedef {Object} Options\n * @property {?boolean} keep the temporary object (file or dir) will not be garbage collected\n * @property {?number} tries the number of tries before give up the name generation\n * @property (?int) mode the access mode, defaults are 0o700 for directories and 0o600 for files\n * @property {?string} template the \"mkstemp\" like filename template\n * @property {?string} name fixed name relative to tmpdir or the specified dir option\n * @property {?string} dir tmp directory relative to the root tmp directory in use\n * @property {?string} prefix prefix for the generated name\n * @property {?string} postfix postfix for the generated name\n * @property {?string} tmpdir the root tmp directory which overrides the os tmpdir\n * @property {?boolean} unsafeCleanup recursively removes the created temporary directory, even when it's not empty\n * @property {?boolean} detachDescriptor detaches the file descriptor, caller is responsible for closing the file, tmp will no longer try closing the file during garbage collection\n * @property {?boolean} discardDescriptor discards the file descriptor (closes file, fd is -1), tmp will no longer try closing the file during garbage collection\n */\n\n/**\n * @typedef {Object} FileSyncObject\n * @property {string} name the name of the file\n * @property {string} fd the file descriptor or -1 if the fd has been discarded\n * @property {fileCallback} removeCallback the callback function to remove the file\n */\n\n/**\n * @typedef {Object} DirSyncObject\n * @property {string} name the name of the directory\n * @property {fileCallback} removeCallback the callback function to remove the directory\n */\n\n/**\n * @callback tmpNameCallback\n * @param {?Error} err the error object if anything goes wrong\n * @param {string} name the temporary file name\n */\n\n/**\n * @callback fileCallback\n * @param {?Error} err the error object if anything goes wrong\n * @param {string} name the temporary file name\n * @param {number} fd the file descriptor or -1 if the fd had been discarded\n * @param {cleanupCallback} fn the cleanup callback function\n */\n\n/**\n * @callback fileCallbackSync\n * @param {?Error} err the error object if anything goes wrong\n * @param {string} name the temporary file name\n * @param {number} fd the file descriptor or -1 if the fd had been discarded\n * @param {cleanupCallbackSync} fn the cleanup callback function\n */\n\n/**\n * @callback dirCallback\n * @param {?Error} err the error object if anything goes wrong\n * @param {string} name the temporary file name\n * @param {cleanupCallback} fn the cleanup callback function\n */\n\n/**\n * @callback dirCallbackSync\n * @param {?Error} err the error object if anything goes wrong\n * @param {string} name the temporary file name\n * @param {cleanupCallbackSync} fn the cleanup callback function\n */\n\n/**\n * Removes the temporary created file or directory.\n *\n * @callback cleanupCallback\n * @param {simpleCallback} [next] function to call whenever the tmp object needs to be removed\n */\n\n/**\n * Removes the temporary created file or directory.\n *\n * @callback cleanupCallbackSync\n */\n\n/**\n * Callback function for function composition.\n * @see {@link https://github.com/raszi/node-tmp/issues/57|raszi/node-tmp#57}\n *\n * @callback simpleCallback\n */\n\n// exporting all the needed methods\n\n// evaluate _getTmpDir() lazily, mainly for simplifying testing but it also will\n// allow users to reconfigure the temporary directory\nObject.defineProperty(module.exports, 'tmpdir', {\n enumerable: true,\n configurable: false,\n get: function () {\n return _getTmpDir();\n }\n});\n\nmodule.exports.dir = dir;\nmodule.exports.dirSync = dirSync;\n\nmodule.exports.file = file;\nmodule.exports.fileSync = fileSync;\n\nmodule.exports.tmpName = tmpName;\nmodule.exports.tmpNameSync = tmpNameSync;\n\nmodule.exports.setGracefulCleanup = setGracefulCleanup;\n", "'use strict';\r\n\r\nconst { promisify } = require(\"util\");\r\nconst tmp = require(\"tmp\");\r\n\r\n// file\r\nmodule.exports.fileSync = tmp.fileSync;\r\nconst fileWithOptions = promisify((options, cb) =>\r\n tmp.file(options, (err, path, fd, cleanup) =>\r\n err ? cb(err) : cb(undefined, { path, fd, cleanup: promisify(cleanup) })\r\n )\r\n);\r\nmodule.exports.file = async (options) => fileWithOptions(options);\r\n\r\nmodule.exports.withFile = async function withFile(fn, options) {\r\n const { path, fd, cleanup } = await module.exports.file(options);\r\n try {\r\n return await fn({ path, fd });\r\n } finally {\r\n await cleanup();\r\n }\r\n};\r\n\r\n\r\n// directory\r\nmodule.exports.dirSync = tmp.dirSync;\r\nconst dirWithOptions = promisify((options, cb) =>\r\n tmp.dir(options, (err, path, cleanup) =>\r\n err ? cb(err) : cb(undefined, { path, cleanup: promisify(cleanup) })\r\n )\r\n);\r\nmodule.exports.dir = async (options) => dirWithOptions(options);\r\n\r\nmodule.exports.withDir = async function withDir(fn, options) {\r\n const { path, cleanup } = await module.exports.dir(options);\r\n try {\r\n return await fn({ path });\r\n } finally {\r\n await cleanup();\r\n }\r\n};\r\n\r\n\r\n// name generation\r\nmodule.exports.tmpNameSync = tmp.tmpNameSync;\r\nmodule.exports.tmpName = promisify(tmp.tmpName);\r\n\r\nmodule.exports.tmpdir = tmp.tmpdir;\r\n\r\nmodule.exports.setGracefulCleanup = tmp.setGracefulCleanup;\r\n", "var __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __getProtoOf = Object.getPrototypeOf;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __markAsModule = (target) => __defProp(target, \"__esModule\", {value: true});\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, {get: all[name], enumerable: true});\n};\nvar __exportStar = (target, module2, desc) => {\n if (module2 && typeof module2 === \"object\" || typeof module2 === \"function\") {\n for (let key of __getOwnPropNames(module2))\n if (!__hasOwnProp.call(target, key) && key !== \"default\")\n __defProp(target, key, {get: () => module2[key], enumerable: !(desc = __getOwnPropDesc(module2, key)) || desc.enumerable});\n }\n return target;\n};\nvar __toModule = (module2) => {\n if (module2 && module2.__esModule)\n return module2;\n return __exportStar(__markAsModule(__defProp(module2 != null ? __create(__getProtoOf(module2)) : {}, \"default\", {value: module2, enumerable: true})), module2);\n};\n\n// src/index.ts\n__markAsModule(exports);\n__export(exports, {\n BINARY_VERSION: () => BINARY_VERSION,\n PACKAGE_NAMES: () => PACKAGE_NAMES,\n installBin: () => installBin,\n register: () => register\n});\nvar import_child_process = __toModule(require(\"child_process\"));\nvar import_find_up = __toModule(require(\"find-up\"));\nvar fs = __toModule(require(\"fs\"));\nvar path = __toModule(require(\"path\"));\nvar import_tmp_promise = __toModule(require(\"tmp-promise\"));\nasync function getNodeModules(cwd) {\n return path.resolve(await import_find_up.default(\"node_modules\", {type: \"directory\", cwd}), \"../\");\n}\nvar BINARY_VERSION = \"1.0.7\";\nvar PACKAGE_NAMES = {\n win64: \"register-url-win64-bin\",\n \"win64-uac\": \"register-url-win64-bin-uac\"\n};\nasync function installBin(requireUAC = true) {\n const packageName = requireUAC ? \"register-url-win64-bin-uac\" : \"register-url-win64-bin\";\n const cwd = await getNodeModules(path.resolve(__dirname));\n return new Promise((resolve2, reject) => {\n const child = import_child_process.default.spawn(\"npm\", [\n \"install\",\n `${packageName}@${\"1.0.7\"}`,\n `--legacy-peer-deps`,\n \"-g\",\n `--production`,\n `--no-fund`,\n `--no-audit`,\n `--no-package-lock`,\n `--ignore-scripts`\n ], {\n cwd,\n detached: false,\n shell: true,\n env: process.env\n });\n child.stdout.pipe(process.stdout);\n child.stdin.pipe(process.stdin);\n child.once(\"exit\", resolve2);\n child.once(\"error\", reject);\n });\n}\nasync function register(request, binPath = null) {\n var _a, _b;\n let downloadBin = binPath;\n if (!binPath) {\n let uac = ((_b = (_a = request.origins) == null ? void 0 : _a.length) != null ? _b : 0) > 0;\n let packageName = uac ? \"register-url-win64-bin-uac\" : \"register-url-win64-bin\";\n try {\n downloadBin = require(path.resolve(__dirname, \"node_modules\", packageName));\n } catch (exception) {\n return Promise.reject(`Please install \"${packageName}\" into ${path.resolve(__dirname)} before running this function. For convienience, you can call installBin()`);\n }\n }\n await fs.promises.access(downloadBin, fs.constants.F_OK);\n if (typeof request.register === \"undefined\") {\n request.register = true;\n }\n if (!request.output) {\n const {path: filePath2} = await import_tmp_promise.default.file({\n discardDescriptor: true,\n postfix: \".json\"\n });\n request.output = filePath2;\n }\n const filePath = path.resolve(request.output);\n delete request.output;\n await fs.promises.writeFile(filePath, JSON.stringify(request), \"utf-8\");\n return await new Promise(async (resolve2, reject) => {\n const child = import_child_process.default.spawn(downloadBin, [filePath], {\n env: process.env,\n windowsHide: true,\n detached: false,\n shell: true,\n stdio: \"inherit\"\n });\n child.once(\"exit\", async () => {\n let response;\n try {\n response = JSON.parse((await fs.promises.readFile(filePath, \"utf-8\")).trim());\n if (typeof response !== \"object\") {\n throw \"Empty response\";\n }\n } catch (exception) {\n response = {\n error: exception.message,\n exception,\n chrome: false,\n protocol: false,\n edge: false\n };\n }\n resolve2(response);\n });\n }).catch((err) => {\n return Promise.resolve({\n error: err.message,\n exception: err,\n chrome: false,\n edge: false,\n protocol: false\n });\n });\n}\n", "'use strict'\n\n// turn tar(1) style args like `C` into the more verbose things like `cwd`\n\nconst argmap = new Map([\n ['C', 'cwd'],\n ['f', 'file'],\n ['z', 'gzip'],\n ['P', 'preservePaths'],\n ['U', 'unlink'],\n ['strip-components', 'strip'],\n ['stripComponents', 'strip'],\n ['keep-newer', 'newer'],\n ['keepNewer', 'newer'],\n ['keep-newer-files', 'newer'],\n ['keepNewerFiles', 'newer'],\n ['k', 'keep'],\n ['keep-existing', 'keep'],\n ['keepExisting', 'keep'],\n ['m', 'noMtime'],\n ['no-mtime', 'noMtime'],\n ['p', 'preserveOwner'],\n ['L', 'follow'],\n ['h', 'follow'],\n])\n\nmodule.exports = opt => opt ? Object.keys(opt).map(k => [\n argmap.has(k) ? argmap.get(k) : k, opt[k],\n]).reduce((set, kv) => (set[kv[0]] = kv[1], set), Object.create(null)) : {}\n", "'use strict'\nmodule.exports = function (Yallist) {\n Yallist.prototype[Symbol.iterator] = function* () {\n for (let walker = this.head; walker; walker = walker.next) {\n yield walker.value\n }\n }\n}\n", "'use strict'\nmodule.exports = Yallist\n\nYallist.Node = Node\nYallist.create = Yallist\n\nfunction Yallist (list) {\n var self = this\n if (!(self instanceof Yallist)) {\n self = new Yallist()\n }\n\n self.tail = null\n self.head = null\n self.length = 0\n\n if (list && typeof list.forEach === 'function') {\n list.forEach(function (item) {\n self.push(item)\n })\n } else if (arguments.length > 0) {\n for (var i = 0, l = arguments.length; i < l; i++) {\n self.push(arguments[i])\n }\n }\n\n return self\n}\n\nYallist.prototype.removeNode = function (node) {\n if (node.list !== this) {\n throw new Error('removing node which does not belong to this list')\n }\n\n var next = node.next\n var prev = node.prev\n\n if (next) {\n next.prev = prev\n }\n\n if (prev) {\n prev.next = next\n }\n\n if (node === this.head) {\n this.head = next\n }\n if (node === this.tail) {\n this.tail = prev\n }\n\n node.list.length--\n node.next = null\n node.prev = null\n node.list = null\n\n return next\n}\n\nYallist.prototype.unshiftNode = function (node) {\n if (node === this.head) {\n return\n }\n\n if (node.list) {\n node.list.removeNode(node)\n }\n\n var head = this.head\n node.list = this\n node.next = head\n if (head) {\n head.prev = node\n }\n\n this.head = node\n if (!this.tail) {\n this.tail = node\n }\n this.length++\n}\n\nYallist.prototype.pushNode = function (node) {\n if (node === this.tail) {\n return\n }\n\n if (node.list) {\n node.list.removeNode(node)\n }\n\n var tail = this.tail\n node.list = this\n node.prev = tail\n if (tail) {\n tail.next = node\n }\n\n this.tail = node\n if (!this.head) {\n this.head = node\n }\n this.length++\n}\n\nYallist.prototype.push = function () {\n for (var i = 0, l = arguments.length; i < l; i++) {\n push(this, arguments[i])\n }\n return this.length\n}\n\nYallist.prototype.unshift = function () {\n for (var i = 0, l = arguments.length; i < l; i++) {\n unshift(this, arguments[i])\n }\n return this.length\n}\n\nYallist.prototype.pop = function () {\n if (!this.tail) {\n return undefined\n }\n\n var res = this.tail.value\n this.tail = this.tail.prev\n if (this.tail) {\n this.tail.next = null\n } else {\n this.head = null\n }\n this.length--\n return res\n}\n\nYallist.prototype.shift = function () {\n if (!this.head) {\n return undefined\n }\n\n var res = this.head.value\n this.head = this.head.next\n if (this.head) {\n this.head.prev = null\n } else {\n this.tail = null\n }\n this.length--\n return res\n}\n\nYallist.prototype.forEach = function (fn, thisp) {\n thisp = thisp || this\n for (var walker = this.head, i = 0; walker !== null; i++) {\n fn.call(thisp, walker.value, i, this)\n walker = walker.next\n }\n}\n\nYallist.prototype.forEachReverse = function (fn, thisp) {\n thisp = thisp || this\n for (var walker = this.tail, i = this.length - 1; walker !== null; i--) {\n fn.call(thisp, walker.value, i, this)\n walker = walker.prev\n }\n}\n\nYallist.prototype.get = function (n) {\n for (var i = 0, walker = this.head; walker !== null && i < n; i++) {\n // abort out of the list early if we hit a cycle\n walker = walker.next\n }\n if (i === n && walker !== null) {\n return walker.value\n }\n}\n\nYallist.prototype.getReverse = function (n) {\n for (var i = 0, walker = this.tail; walker !== null && i < n; i++) {\n // abort out of the list early if we hit a cycle\n walker = walker.prev\n }\n if (i === n && walker !== null) {\n return walker.value\n }\n}\n\nYallist.prototype.map = function (fn, thisp) {\n thisp = thisp || this\n var res = new Yallist()\n for (var walker = this.head; walker !== null;) {\n res.push(fn.call(thisp, walker.value, this))\n walker = walker.next\n }\n return res\n}\n\nYallist.prototype.mapReverse = function (fn, thisp) {\n thisp = thisp || this\n var res = new Yallist()\n for (var walker = this.tail; walker !== null;) {\n res.push(fn.call(thisp, walker.value, this))\n walker = walker.prev\n }\n return res\n}\n\nYallist.prototype.reduce = function (fn, initial) {\n var acc\n var walker = this.head\n if (arguments.length > 1) {\n acc = initial\n } else if (this.head) {\n walker = this.head.next\n acc = this.head.value\n } else {\n throw new TypeError('Reduce of empty list with no initial value')\n }\n\n for (var i = 0; walker !== null; i++) {\n acc = fn(acc, walker.value, i)\n walker = walker.next\n }\n\n return acc\n}\n\nYallist.prototype.reduceReverse = function (fn, initial) {\n var acc\n var walker = this.tail\n if (arguments.length > 1) {\n acc = initial\n } else if (this.tail) {\n walker = this.tail.prev\n acc = this.tail.value\n } else {\n throw new TypeError('Reduce of empty list with no initial value')\n }\n\n for (var i = this.length - 1; walker !== null; i--) {\n acc = fn(acc, walker.value, i)\n walker = walker.prev\n }\n\n return acc\n}\n\nYallist.prototype.toArray = function () {\n var arr = new Array(this.length)\n for (var i = 0, walker = this.head; walker !== null; i++) {\n arr[i] = walker.value\n walker = walker.next\n }\n return arr\n}\n\nYallist.prototype.toArrayReverse = function () {\n var arr = new Array(this.length)\n for (var i = 0, walker = this.tail; walker !== null; i++) {\n arr[i] = walker.value\n walker = walker.prev\n }\n return arr\n}\n\nYallist.prototype.slice = function (from, to) {\n to = to || this.length\n if (to < 0) {\n to += this.length\n }\n from = from || 0\n if (from < 0) {\n from += this.length\n }\n var ret = new Yallist()\n if (to < from || to < 0) {\n return ret\n }\n if (from < 0) {\n from = 0\n }\n if (to > this.length) {\n to = this.length\n }\n for (var i = 0, walker = this.head; walker !== null && i < from; i++) {\n walker = walker.next\n }\n for (; walker !== null && i < to; i++, walker = walker.next) {\n ret.push(walker.value)\n }\n return ret\n}\n\nYallist.prototype.sliceReverse = function (from, to) {\n to = to || this.length\n if (to < 0) {\n to += this.length\n }\n from = from || 0\n if (from < 0) {\n from += this.length\n }\n var ret = new Yallist()\n if (to < from || to < 0) {\n return ret\n }\n if (from < 0) {\n from = 0\n }\n if (to > this.length) {\n to = this.length\n }\n for (var i = this.length, walker = this.tail; walker !== null && i > to; i--) {\n walker = walker.prev\n }\n for (; walker !== null && i > from; i--, walker = walker.prev) {\n ret.push(walker.value)\n }\n return ret\n}\n\nYallist.prototype.splice = function (start, deleteCount, ...nodes) {\n if (start > this.length) {\n start = this.length - 1\n }\n if (start < 0) {\n start = this.length + start;\n }\n\n for (var i = 0, walker = this.head; walker !== null && i < start; i++) {\n walker = walker.next\n }\n\n var ret = []\n for (var i = 0; walker && i < deleteCount; i++) {\n ret.push(walker.value)\n walker = this.removeNode(walker)\n }\n if (walker === null) {\n walker = this.tail\n }\n\n if (walker !== this.head && walker !== this.tail) {\n walker = walker.prev\n }\n\n for (var i = 0; i < nodes.length; i++) {\n walker = insert(this, walker, nodes[i])\n }\n return ret;\n}\n\nYallist.prototype.reverse = function () {\n var head = this.head\n var tail = this.tail\n for (var walker = head; walker !== null; walker = walker.prev) {\n var p = walker.prev\n walker.prev = walker.next\n walker.next = p\n }\n this.head = tail\n this.tail = head\n return this\n}\n\nfunction insert (self, node, value) {\n var inserted = node === self.head ?\n new Node(value, null, node, self) :\n new Node(value, node, node.next, self)\n\n if (inserted.next === null) {\n self.tail = inserted\n }\n if (inserted.prev === null) {\n self.head = inserted\n }\n\n self.length++\n\n return inserted\n}\n\nfunction push (self, item) {\n self.tail = new Node(item, self.tail, null, self)\n if (!self.head) {\n self.head = self.tail\n }\n self.length++\n}\n\nfunction unshift (self, item) {\n self.head = new Node(item, null, self.head, self)\n if (!self.tail) {\n self.tail = self.head\n }\n self.length++\n}\n\nfunction Node (value, prev, next, list) {\n if (!(this instanceof Node)) {\n return new Node(value, prev, next, list)\n }\n\n this.list = list\n this.value = value\n\n if (prev) {\n prev.next = this\n this.prev = prev\n } else {\n this.prev = null\n }\n\n if (next) {\n next.prev = this\n this.next = next\n } else {\n this.next = null\n }\n}\n\ntry {\n // add if support for Symbol.iterator is present\n require('./iterator.js')(Yallist)\n} catch (er) {}\n", "'use strict'\nconst EE = require('events')\nconst Stream = require('stream')\nconst Yallist = require('yallist')\nconst SD = require('string_decoder').StringDecoder\n\nconst EOF = Symbol('EOF')\nconst MAYBE_EMIT_END = Symbol('maybeEmitEnd')\nconst EMITTED_END = Symbol('emittedEnd')\nconst EMITTING_END = Symbol('emittingEnd')\nconst CLOSED = Symbol('closed')\nconst READ = Symbol('read')\nconst FLUSH = Symbol('flush')\nconst FLUSHCHUNK = Symbol('flushChunk')\nconst ENCODING = Symbol('encoding')\nconst DECODER = Symbol('decoder')\nconst FLOWING = Symbol('flowing')\nconst PAUSED = Symbol('paused')\nconst RESUME = Symbol('resume')\nconst BUFFERLENGTH = Symbol('bufferLength')\nconst BUFFERPUSH = Symbol('bufferPush')\nconst BUFFERSHIFT = Symbol('bufferShift')\nconst OBJECTMODE = Symbol('objectMode')\nconst DESTROYED = Symbol('destroyed')\n\n// TODO remove when Node v8 support drops\nconst doIter = global._MP_NO_ITERATOR_SYMBOLS_ !== '1'\nconst ASYNCITERATOR = doIter && Symbol.asyncIterator\n || Symbol('asyncIterator not implemented')\nconst ITERATOR = doIter && Symbol.iterator\n || Symbol('iterator not implemented')\n\n// events that mean 'the stream is over'\n// these are treated specially, and re-emitted\n// if they are listened for after emitting.\nconst isEndish = ev =>\n ev === 'end' ||\n ev === 'finish' ||\n ev === 'prefinish'\n\nconst isArrayBuffer = b => b instanceof ArrayBuffer ||\n typeof b === 'object' &&\n b.constructor &&\n b.constructor.name === 'ArrayBuffer' &&\n b.byteLength >= 0\n\nconst isArrayBufferView = b => !Buffer.isBuffer(b) && ArrayBuffer.isView(b)\n\nmodule.exports = class Minipass extends Stream {\n constructor (options) {\n super()\n this[FLOWING] = false\n // whether we're explicitly paused\n this[PAUSED] = false\n this.pipes = new Yallist()\n this.buffer = new Yallist()\n this[OBJECTMODE] = options && options.objectMode || false\n if (this[OBJECTMODE])\n this[ENCODING] = null\n else\n this[ENCODING] = options && options.encoding || null\n if (this[ENCODING] === 'buffer')\n this[ENCODING] = null\n this[DECODER] = this[ENCODING] ? new SD(this[ENCODING]) : null\n this[EOF] = false\n this[EMITTED_END] = false\n this[EMITTING_END] = false\n this[CLOSED] = false\n this.writable = true\n this.readable = true\n this[BUFFERLENGTH] = 0\n this[DESTROYED] = false\n }\n\n get bufferLength () { return this[BUFFERLENGTH] }\n\n get encoding () { return this[ENCODING] }\n set encoding (enc) {\n if (this[OBJECTMODE])\n throw new Error('cannot set encoding in objectMode')\n\n if (this[ENCODING] && enc !== this[ENCODING] &&\n (this[DECODER] && this[DECODER].lastNeed || this[BUFFERLENGTH]))\n throw new Error('cannot change encoding')\n\n if (this[ENCODING] !== enc) {\n this[DECODER] = enc ? new SD(enc) : null\n if (this.buffer.length)\n this.buffer = this.buffer.map(chunk => this[DECODER].write(chunk))\n }\n\n this[ENCODING] = enc\n }\n\n setEncoding (enc) {\n this.encoding = enc\n }\n\n get objectMode () { return this[OBJECTMODE] }\n set objectMode (om) { this[OBJECTMODE] = this[OBJECTMODE] || !!om }\n\n write (chunk, encoding, cb) {\n if (this[EOF])\n throw new Error('write after end')\n\n if (this[DESTROYED]) {\n this.emit('error', Object.assign(\n new Error('Cannot call write after a stream was destroyed'),\n { code: 'ERR_STREAM_DESTROYED' }\n ))\n return true\n }\n\n if (typeof encoding === 'function')\n cb = encoding, encoding = 'utf8'\n\n if (!encoding)\n encoding = 'utf8'\n\n // convert array buffers and typed array views into buffers\n // at some point in the future, we may want to do the opposite!\n // leave strings and buffers as-is\n // anything else switches us into object mode\n if (!this[OBJECTMODE] && !Buffer.isBuffer(chunk)) {\n if (isArrayBufferView(chunk))\n chunk = Buffer.from(chunk.buffer, chunk.byteOffset, chunk.byteLength)\n else if (isArrayBuffer(chunk))\n chunk = Buffer.from(chunk)\n else if (typeof chunk !== 'string')\n // use the setter so we throw if we have encoding set\n this.objectMode = true\n }\n\n // this ensures at this point that the chunk is a buffer or string\n // don't buffer it up or send it to the decoder\n if (!this.objectMode && !chunk.length) {\n if (this[BUFFERLENGTH] !== 0)\n this.emit('readable')\n if (cb)\n cb()\n return this.flowing\n }\n\n // fast-path writing strings of same encoding to a stream with\n // an empty buffer, skipping the buffer/decoder dance\n if (typeof chunk === 'string' && !this[OBJECTMODE] &&\n // unless it is a string already ready for us to use\n !(encoding === this[ENCODING] && !this[DECODER].lastNeed)) {\n chunk = Buffer.from(chunk, encoding)\n }\n\n if (Buffer.isBuffer(chunk) && this[ENCODING])\n chunk = this[DECODER].write(chunk)\n\n if (this.flowing) {\n // if we somehow have something in the buffer, but we think we're\n // flowing, then we need to flush all that out first, or we get\n // chunks coming in out of order. Can't emit 'drain' here though,\n // because we're mid-write, so that'd be bad.\n if (this[BUFFERLENGTH] !== 0)\n this[FLUSH](true)\n this.emit('data', chunk)\n } else\n this[BUFFERPUSH](chunk)\n\n if (this[BUFFERLENGTH] !== 0)\n this.emit('readable')\n\n if (cb)\n cb()\n\n return this.flowing\n }\n\n read (n) {\n if (this[DESTROYED])\n return null\n\n try {\n if (this[BUFFERLENGTH] === 0 || n === 0 || n > this[BUFFERLENGTH])\n return null\n\n if (this[OBJECTMODE])\n n = null\n\n if (this.buffer.length > 1 && !this[OBJECTMODE]) {\n if (this.encoding)\n this.buffer = new Yallist([\n Array.from(this.buffer).join('')\n ])\n else\n this.buffer = new Yallist([\n Buffer.concat(Array.from(this.buffer), this[BUFFERLENGTH])\n ])\n }\n\n return this[READ](n || null, this.buffer.head.value)\n } finally {\n this[MAYBE_EMIT_END]()\n }\n }\n\n [READ] (n, chunk) {\n if (n === chunk.length || n === null)\n this[BUFFERSHIFT]()\n else {\n this.buffer.head.value = chunk.slice(n)\n chunk = chunk.slice(0, n)\n this[BUFFERLENGTH] -= n\n }\n\n this.emit('data', chunk)\n\n if (!this.buffer.length && !this[EOF])\n this.emit('drain')\n\n return chunk\n }\n\n end (chunk, encoding, cb) {\n if (typeof chunk === 'function')\n cb = chunk, chunk = null\n if (typeof encoding === 'function')\n cb = encoding, encoding = 'utf8'\n if (chunk)\n this.write(chunk, encoding)\n if (cb)\n this.once('end', cb)\n this[EOF] = true\n this.writable = false\n\n // if we haven't written anything, then go ahead and emit,\n // even if we're not reading.\n // we'll re-emit if a new 'end' listener is added anyway.\n // This makes MP more suitable to write-only use cases.\n if (this.flowing || !this[PAUSED])\n this[MAYBE_EMIT_END]()\n return this\n }\n\n // don't let the internal resume be overwritten\n [RESUME] () {\n if (this[DESTROYED])\n return\n\n this[PAUSED] = false\n this[FLOWING] = true\n this.emit('resume')\n if (this.buffer.length)\n this[FLUSH]()\n else if (this[EOF])\n this[MAYBE_EMIT_END]()\n else\n this.emit('drain')\n }\n\n resume () {\n return this[RESUME]()\n }\n\n pause () {\n this[FLOWING] = false\n this[PAUSED] = true\n }\n\n get destroyed () {\n return this[DESTROYED]\n }\n\n get flowing () {\n return this[FLOWING]\n }\n\n get paused () {\n return this[PAUSED]\n }\n\n [BUFFERPUSH] (chunk) {\n if (this[OBJECTMODE])\n this[BUFFERLENGTH] += 1\n else\n this[BUFFERLENGTH] += chunk.length\n return this.buffer.push(chunk)\n }\n\n [BUFFERSHIFT] () {\n if (this.buffer.length) {\n if (this[OBJECTMODE])\n this[BUFFERLENGTH] -= 1\n else\n this[BUFFERLENGTH] -= this.buffer.head.value.length\n }\n return this.buffer.shift()\n }\n\n [FLUSH] (noDrain) {\n do {} while (this[FLUSHCHUNK](this[BUFFERSHIFT]()))\n\n if (!noDrain && !this.buffer.length && !this[EOF])\n this.emit('drain')\n }\n\n [FLUSHCHUNK] (chunk) {\n return chunk ? (this.emit('data', chunk), this.flowing) : false\n }\n\n pipe (dest, opts) {\n if (this[DESTROYED])\n return\n\n const ended = this[EMITTED_END]\n opts = opts || {}\n if (dest === process.stdout || dest === process.stderr)\n opts.end = false\n else\n opts.end = opts.end !== false\n\n const p = { dest: dest, opts: opts, ondrain: _ => this[RESUME]() }\n this.pipes.push(p)\n\n dest.on('drain', p.ondrain)\n this[RESUME]()\n // piping an ended stream ends immediately\n if (ended && p.opts.end)\n p.dest.end()\n return dest\n }\n\n addListener (ev, fn) {\n return this.on(ev, fn)\n }\n\n on (ev, fn) {\n try {\n return super.on(ev, fn)\n } finally {\n if (ev === 'data' && !this.pipes.length && !this.flowing)\n this[RESUME]()\n else if (isEndish(ev) && this[EMITTED_END]) {\n super.emit(ev)\n this.removeAllListeners(ev)\n }\n }\n }\n\n get emittedEnd () {\n return this[EMITTED_END]\n }\n\n [MAYBE_EMIT_END] () {\n if (!this[EMITTING_END] &&\n !this[EMITTED_END] &&\n !this[DESTROYED] &&\n this.buffer.length === 0 &&\n this[EOF]) {\n this[EMITTING_END] = true\n this.emit('end')\n this.emit('prefinish')\n this.emit('finish')\n if (this[CLOSED])\n this.emit('close')\n this[EMITTING_END] = false\n }\n }\n\n emit (ev, data) {\n // error and close are only events allowed after calling destroy()\n if (ev !== 'error' && ev !== 'close' && ev !== DESTROYED && this[DESTROYED])\n return\n else if (ev === 'data') {\n if (!data)\n return\n\n if (this.pipes.length)\n this.pipes.forEach(p =>\n p.dest.write(data) === false && this.pause())\n } else if (ev === 'end') {\n // only actual end gets this treatment\n if (this[EMITTED_END] === true)\n return\n\n this[EMITTED_END] = true\n this.readable = false\n\n if (this[DECODER]) {\n data = this[DECODER].end()\n if (data) {\n this.pipes.forEach(p => p.dest.write(data))\n super.emit('data', data)\n }\n }\n\n this.pipes.forEach(p => {\n p.dest.removeListener('drain', p.ondrain)\n if (p.opts.end)\n p.dest.end()\n })\n } else if (ev === 'close') {\n this[CLOSED] = true\n // don't emit close before 'end' and 'finish'\n if (!this[EMITTED_END] && !this[DESTROYED])\n return\n }\n\n // TODO: replace with a spread operator when Node v4 support drops\n const args = new Array(arguments.length)\n args[0] = ev\n args[1] = data\n if (arguments.length > 2) {\n for (let i = 2; i < arguments.length; i++) {\n args[i] = arguments[i]\n }\n }\n\n try {\n return super.emit.apply(this, args)\n } finally {\n if (!isEndish(ev))\n this[MAYBE_EMIT_END]()\n else\n this.removeAllListeners(ev)\n }\n }\n\n // const all = await stream.collect()\n collect () {\n const buf = []\n if (!this[OBJECTMODE])\n buf.dataLength = 0\n // set the promise first, in case an error is raised\n // by triggering the flow here.\n const p = this.promise()\n this.on('data', c => {\n buf.push(c)\n if (!this[OBJECTMODE])\n buf.dataLength += c.length\n })\n return p.then(() => buf)\n }\n\n // const data = await stream.concat()\n concat () {\n return this[OBJECTMODE]\n ? Promise.reject(new Error('cannot concat in objectMode'))\n : this.collect().then(buf =>\n this[OBJECTMODE]\n ? Promise.reject(new Error('cannot concat in objectMode'))\n : this[ENCODING] ? buf.join('') : Buffer.concat(buf, buf.dataLength))\n }\n\n // stream.promise().then(() => done, er => emitted error)\n promise () {\n return new Promise((resolve, reject) => {\n this.on(DESTROYED, () => reject(new Error('stream destroyed')))\n this.on('end', () => resolve())\n this.on('error', er => reject(er))\n })\n }\n\n // for await (let chunk of stream)\n [ASYNCITERATOR] () {\n const next = () => {\n const res = this.read()\n if (res !== null)\n return Promise.resolve({ done: false, value: res })\n\n if (this[EOF])\n return Promise.resolve({ done: true })\n\n let resolve = null\n let reject = null\n const onerr = er => {\n this.removeListener('data', ondata)\n this.removeListener('end', onend)\n reject(er)\n }\n const ondata = value => {\n this.removeListener('error', onerr)\n this.removeListener('end', onend)\n this.pause()\n resolve({ value: value, done: !!this[EOF] })\n }\n const onend = () => {\n this.removeListener('error', onerr)\n this.removeListener('data', ondata)\n resolve({ done: true })\n }\n const ondestroy = () => onerr(new Error('stream destroyed'))\n return new Promise((res, rej) => {\n reject = rej\n resolve = res\n this.once(DESTROYED, ondestroy)\n this.once('error', onerr)\n this.once('end', onend)\n this.once('data', ondata)\n })\n }\n\n return { next }\n }\n\n // for (let chunk of stream)\n [ITERATOR] () {\n const next = () => {\n const value = this.read()\n const done = value === null\n return { value, done }\n }\n return { next }\n }\n\n destroy (er) {\n if (this[DESTROYED]) {\n if (er)\n this.emit('error', er)\n else\n this.emit(DESTROYED)\n return this\n }\n\n this[DESTROYED] = true\n\n // throw away all buffered data, it's never coming out\n this.buffer = new Yallist()\n this[BUFFERLENGTH] = 0\n\n if (typeof this.close === 'function' && !this[CLOSED])\n this.close()\n\n if (er)\n this.emit('error', er)\n else // if no error to emit, still reject pending promises\n this.emit(DESTROYED)\n\n return this\n }\n\n static isStream (s) {\n return !!s && (s instanceof Minipass || s instanceof Stream ||\n s instanceof EE && (\n typeof s.pipe === 'function' || // readable\n (typeof s.write === 'function' && typeof s.end === 'function') // writable\n ))\n }\n}\n", "// Update with any zlib constants that are added or changed in the future.\n// Node v6 didn't export this, so we just hard code the version and rely\n// on all the other hard-coded values from zlib v4736. When node v6\n// support drops, we can just export the realZlibConstants object.\nconst realZlibConstants = require('zlib').constants ||\n /* istanbul ignore next */ { ZLIB_VERNUM: 4736 }\n\nmodule.exports = Object.freeze(Object.assign(Object.create(null), {\n Z_NO_FLUSH: 0,\n Z_PARTIAL_FLUSH: 1,\n Z_SYNC_FLUSH: 2,\n Z_FULL_FLUSH: 3,\n Z_FINISH: 4,\n Z_BLOCK: 5,\n Z_OK: 0,\n Z_STREAM_END: 1,\n Z_NEED_DICT: 2,\n Z_ERRNO: -1,\n Z_STREAM_ERROR: -2,\n Z_DATA_ERROR: -3,\n Z_MEM_ERROR: -4,\n Z_BUF_ERROR: -5,\n Z_VERSION_ERROR: -6,\n Z_NO_COMPRESSION: 0,\n Z_BEST_SPEED: 1,\n Z_BEST_COMPRESSION: 9,\n Z_DEFAULT_COMPRESSION: -1,\n Z_FILTERED: 1,\n Z_HUFFMAN_ONLY: 2,\n Z_RLE: 3,\n Z_FIXED: 4,\n Z_DEFAULT_STRATEGY: 0,\n DEFLATE: 1,\n INFLATE: 2,\n GZIP: 3,\n GUNZIP: 4,\n DEFLATERAW: 5,\n INFLATERAW: 6,\n UNZIP: 7,\n BROTLI_DECODE: 8,\n BROTLI_ENCODE: 9,\n Z_MIN_WINDOWBITS: 8,\n Z_MAX_WINDOWBITS: 15,\n Z_DEFAULT_WINDOWBITS: 15,\n Z_MIN_CHUNK: 64,\n Z_MAX_CHUNK: Infinity,\n Z_DEFAULT_CHUNK: 16384,\n Z_MIN_MEMLEVEL: 1,\n Z_MAX_MEMLEVEL: 9,\n Z_DEFAULT_MEMLEVEL: 8,\n Z_MIN_LEVEL: -1,\n Z_MAX_LEVEL: 9,\n Z_DEFAULT_LEVEL: -1,\n BROTLI_OPERATION_PROCESS: 0,\n BROTLI_OPERATION_FLUSH: 1,\n BROTLI_OPERATION_FINISH: 2,\n BROTLI_OPERATION_EMIT_METADATA: 3,\n BROTLI_MODE_GENERIC: 0,\n BROTLI_MODE_TEXT: 1,\n BROTLI_MODE_FONT: 2,\n BROTLI_DEFAULT_MODE: 0,\n BROTLI_MIN_QUALITY: 0,\n BROTLI_MAX_QUALITY: 11,\n BROTLI_DEFAULT_QUALITY: 11,\n BROTLI_MIN_WINDOW_BITS: 10,\n BROTLI_MAX_WINDOW_BITS: 24,\n BROTLI_LARGE_MAX_WINDOW_BITS: 30,\n BROTLI_DEFAULT_WINDOW: 22,\n BROTLI_MIN_INPUT_BLOCK_BITS: 16,\n BROTLI_MAX_INPUT_BLOCK_BITS: 24,\n BROTLI_PARAM_MODE: 0,\n BROTLI_PARAM_QUALITY: 1,\n BROTLI_PARAM_LGWIN: 2,\n BROTLI_PARAM_LGBLOCK: 3,\n BROTLI_PARAM_DISABLE_LITERAL_CONTEXT_MODELING: 4,\n BROTLI_PARAM_SIZE_HINT: 5,\n BROTLI_PARAM_LARGE_WINDOW: 6,\n BROTLI_PARAM_NPOSTFIX: 7,\n BROTLI_PARAM_NDIRECT: 8,\n BROTLI_DECODER_RESULT_ERROR: 0,\n BROTLI_DECODER_RESULT_SUCCESS: 1,\n BROTLI_DECODER_RESULT_NEEDS_MORE_INPUT: 2,\n BROTLI_DECODER_RESULT_NEEDS_MORE_OUTPUT: 3,\n BROTLI_DECODER_PARAM_DISABLE_RING_BUFFER_REALLOCATION: 0,\n BROTLI_DECODER_PARAM_LARGE_WINDOW: 1,\n BROTLI_DECODER_NO_ERROR: 0,\n BROTLI_DECODER_SUCCESS: 1,\n BROTLI_DECODER_NEEDS_MORE_INPUT: 2,\n BROTLI_DECODER_NEEDS_MORE_OUTPUT: 3,\n BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_NIBBLE: -1,\n BROTLI_DECODER_ERROR_FORMAT_RESERVED: -2,\n BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_META_NIBBLE: -3,\n BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_ALPHABET: -4,\n BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_SAME: -5,\n BROTLI_DECODER_ERROR_FORMAT_CL_SPACE: -6,\n BROTLI_DECODER_ERROR_FORMAT_HUFFMAN_SPACE: -7,\n BROTLI_DECODER_ERROR_FORMAT_CONTEXT_MAP_REPEAT: -8,\n BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_1: -9,\n BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_2: -10,\n BROTLI_DECODER_ERROR_FORMAT_TRANSFORM: -11,\n BROTLI_DECODER_ERROR_FORMAT_DICTIONARY: -12,\n BROTLI_DECODER_ERROR_FORMAT_WINDOW_BITS: -13,\n BROTLI_DECODER_ERROR_FORMAT_PADDING_1: -14,\n BROTLI_DECODER_ERROR_FORMAT_PADDING_2: -15,\n BROTLI_DECODER_ERROR_FORMAT_DISTANCE: -16,\n BROTLI_DECODER_ERROR_DICTIONARY_NOT_SET: -19,\n BROTLI_DECODER_ERROR_INVALID_ARGUMENTS: -20,\n BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MODES: -21,\n BROTLI_DECODER_ERROR_ALLOC_TREE_GROUPS: -22,\n BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MAP: -25,\n BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_1: -26,\n BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_2: -27,\n BROTLI_DECODER_ERROR_ALLOC_BLOCK_TYPE_TREES: -30,\n BROTLI_DECODER_ERROR_UNREACHABLE: -31,\n}, realZlibConstants))\n", "'use strict'\n\nconst assert = require('assert')\nconst Buffer = require('buffer').Buffer\nconst realZlib = require('zlib')\n\nconst constants = exports.constants = require('./constants.js')\nconst Minipass = require('minipass')\n\nconst OriginalBufferConcat = Buffer.concat\n\nconst _superWrite = Symbol('_superWrite')\nclass ZlibError extends Error {\n constructor (err) {\n super('zlib: ' + err.message)\n this.code = err.code\n this.errno = err.errno\n /* istanbul ignore if */\n if (!this.code)\n this.code = 'ZLIB_ERROR'\n\n this.message = 'zlib: ' + err.message\n Error.captureStackTrace(this, this.constructor)\n }\n\n get name () {\n return 'ZlibError'\n }\n}\n\n// the Zlib class they all inherit from\n// This thing manages the queue of requests, and returns\n// true or false if there is anything in the queue when\n// you call the .write() method.\nconst _opts = Symbol('opts')\nconst _flushFlag = Symbol('flushFlag')\nconst _finishFlushFlag = Symbol('finishFlushFlag')\nconst _fullFlushFlag = Symbol('fullFlushFlag')\nconst _handle = Symbol('handle')\nconst _onError = Symbol('onError')\nconst _sawError = Symbol('sawError')\nconst _level = Symbol('level')\nconst _strategy = Symbol('strategy')\nconst _ended = Symbol('ended')\nconst _defaultFullFlush = Symbol('_defaultFullFlush')\n\nclass ZlibBase extends Minipass {\n constructor (opts, mode) {\n if (!opts || typeof opts !== 'object')\n throw new TypeError('invalid options for ZlibBase constructor')\n\n super(opts)\n this[_sawError] = false\n this[_ended] = false\n this[_opts] = opts\n\n this[_flushFlag] = opts.flush\n this[_finishFlushFlag] = opts.finishFlush\n // this will throw if any options are invalid for the class selected\n try {\n this[_handle] = new realZlib[mode](opts)\n } catch (er) {\n // make sure that all errors get decorated properly\n throw new ZlibError(er)\n }\n\n this[_onError] = (err) => {\n // no sense raising multiple errors, since we abort on the first one.\n if (this[_sawError])\n return\n\n this[_sawError] = true\n\n // there is no way to cleanly recover.\n // continuing only obscures problems.\n this.close()\n this.emit('error', err)\n }\n\n this[_handle].on('error', er => this[_onError](new ZlibError(er)))\n this.once('end', () => this.close)\n }\n\n close () {\n if (this[_handle]) {\n this[_handle].close()\n this[_handle] = null\n this.emit('close')\n }\n }\n\n reset () {\n if (!this[_sawError]) {\n assert(this[_handle], 'zlib binding closed')\n return this[_handle].reset()\n }\n }\n\n flush (flushFlag) {\n if (this.ended)\n return\n\n if (typeof flushFlag !== 'number')\n flushFlag = this[_fullFlushFlag]\n this.write(Object.assign(Buffer.alloc(0), { [_flushFlag]: flushFlag }))\n }\n\n end (chunk, encoding, cb) {\n if (chunk)\n this.write(chunk, encoding)\n this.flush(this[_finishFlushFlag])\n this[_ended] = true\n return super.end(null, null, cb)\n }\n\n get ended () {\n return this[_ended]\n }\n\n write (chunk, encoding, cb) {\n // process the chunk using the sync process\n // then super.write() all the outputted chunks\n if (typeof encoding === 'function')\n cb = encoding, encoding = 'utf8'\n\n if (typeof chunk === 'string')\n chunk = Buffer.from(chunk, encoding)\n\n if (this[_sawError])\n return\n assert(this[_handle], 'zlib binding closed')\n\n // _processChunk tries to .close() the native handle after it's done, so we\n // intercept that by temporarily making it a no-op.\n const nativeHandle = this[_handle]._handle\n const originalNativeClose = nativeHandle.close\n nativeHandle.close = () => {}\n const originalClose = this[_handle].close\n this[_handle].close = () => {}\n // It also calls `Buffer.concat()` at the end, which may be convenient\n // for some, but which we are not interested in as it slows us down.\n Buffer.concat = (args) => args\n let result\n try {\n const flushFlag = typeof chunk[_flushFlag] === 'number'\n ? chunk[_flushFlag] : this[_flushFlag]\n result = this[_handle]._processChunk(chunk, flushFlag)\n // if we don't throw, reset it back how it was\n Buffer.concat = OriginalBufferConcat\n } catch (err) {\n // or if we do, put Buffer.concat() back before we emit error\n // Error events call into user code, which may call Buffer.concat()\n Buffer.concat = OriginalBufferConcat\n this[_onError](new ZlibError(err))\n } finally {\n if (this[_handle]) {\n // Core zlib resets `_handle` to null after attempting to close the\n // native handle. Our no-op handler prevented actual closure, but we\n // need to restore the `._handle` property.\n this[_handle]._handle = nativeHandle\n nativeHandle.close = originalNativeClose\n this[_handle].close = originalClose\n // `_processChunk()` adds an 'error' listener. If we don't remove it\n // after each call, these handlers start piling up.\n this[_handle].removeAllListeners('error')\n // make sure OUR error listener is still attached tho\n }\n }\n\n if (this[_handle])\n this[_handle].on('error', er => this[_onError](new ZlibError(er)))\n\n let writeReturn\n if (result) {\n if (Array.isArray(result) && result.length > 0) {\n // The first buffer is always `handle._outBuffer`, which would be\n // re-used for later invocations; so, we always have to copy that one.\n writeReturn = this[_superWrite](Buffer.from(result[0]))\n for (let i = 1; i < result.length; i++) {\n writeReturn = this[_superWrite](result[i])\n }\n } else {\n writeReturn = this[_superWrite](Buffer.from(result))\n }\n }\n\n if (cb)\n cb()\n return writeReturn\n }\n\n [_superWrite] (data) {\n return super.write(data)\n }\n}\n\nclass Zlib extends ZlibBase {\n constructor (opts, mode) {\n opts = opts || {}\n\n opts.flush = opts.flush || constants.Z_NO_FLUSH\n opts.finishFlush = opts.finishFlush || constants.Z_FINISH\n super(opts, mode)\n\n this[_fullFlushFlag] = constants.Z_FULL_FLUSH\n this[_level] = opts.level\n this[_strategy] = opts.strategy\n }\n\n params (level, strategy) {\n if (this[_sawError])\n return\n\n if (!this[_handle])\n throw new Error('cannot switch params when binding is closed')\n\n // no way to test this without also not supporting params at all\n /* istanbul ignore if */\n if (!this[_handle].params)\n throw new Error('not supported in this implementation')\n\n if (this[_level] !== level || this[_strategy] !== strategy) {\n this.flush(constants.Z_SYNC_FLUSH)\n assert(this[_handle], 'zlib binding closed')\n // .params() calls .flush(), but the latter is always async in the\n // core zlib. We override .flush() temporarily to intercept that and\n // flush synchronously.\n const origFlush = this[_handle].flush\n this[_handle].flush = (flushFlag, cb) => {\n this.flush(flushFlag)\n cb()\n }\n try {\n this[_handle].params(level, strategy)\n } finally {\n this[_handle].flush = origFlush\n }\n /* istanbul ignore else */\n if (this[_handle]) {\n this[_level] = level\n this[_strategy] = strategy\n }\n }\n }\n}\n\n// minimal 2-byte header\nclass Deflate extends Zlib {\n constructor (opts) {\n super(opts, 'Deflate')\n }\n}\n\nclass Inflate extends Zlib {\n constructor (opts) {\n super(opts, 'Inflate')\n }\n}\n\n// gzip - bigger header, same deflate compression\nconst _portable = Symbol('_portable')\nclass Gzip extends Zlib {\n constructor (opts) {\n super(opts, 'Gzip')\n this[_portable] = opts && !!opts.portable\n }\n\n [_superWrite] (data) {\n if (!this[_portable])\n return super[_superWrite](data)\n\n // we'll always get the header emitted in one first chunk\n // overwrite the OS indicator byte with 0xFF\n this[_portable] = false\n data[9] = 255\n return super[_superWrite](data)\n }\n}\n\nclass Gunzip extends Zlib {\n constructor (opts) {\n super(opts, 'Gunzip')\n }\n}\n\n// raw - no header\nclass DeflateRaw extends Zlib {\n constructor (opts) {\n super(opts, 'DeflateRaw')\n }\n}\n\nclass InflateRaw extends Zlib {\n constructor (opts) {\n super(opts, 'InflateRaw')\n }\n}\n\n// auto-detect header.\nclass Unzip extends Zlib {\n constructor (opts) {\n super(opts, 'Unzip')\n }\n}\n\nclass Brotli extends ZlibBase {\n constructor (opts, mode) {\n opts = opts || {}\n\n opts.flush = opts.flush || constants.BROTLI_OPERATION_PROCESS\n opts.finishFlush = opts.finishFlush || constants.BROTLI_OPERATION_FINISH\n\n super(opts, mode)\n\n this[_fullFlushFlag] = constants.BROTLI_OPERATION_FLUSH\n }\n}\n\nclass BrotliCompress extends Brotli {\n constructor (opts) {\n super(opts, 'BrotliCompress')\n }\n}\n\nclass BrotliDecompress extends Brotli {\n constructor (opts) {\n super(opts, 'BrotliDecompress')\n }\n}\n\nexports.Deflate = Deflate\nexports.Inflate = Inflate\nexports.Gzip = Gzip\nexports.Gunzip = Gunzip\nexports.DeflateRaw = DeflateRaw\nexports.InflateRaw = InflateRaw\nexports.Unzip = Unzip\n/* istanbul ignore else */\nif (typeof realZlib.BrotliCompress === 'function') {\n exports.BrotliCompress = BrotliCompress\n exports.BrotliDecompress = BrotliDecompress\n} else {\n exports.BrotliCompress = exports.BrotliDecompress = class {\n constructor () {\n throw new Error('Brotli is not supported in this version of Node.js')\n }\n }\n}\n", "'use strict'\nconst MiniPass = require('minipass')\n\nconst SLURP = Symbol('slurp')\nmodule.exports = class ReadEntry extends MiniPass {\n constructor (header, ex, gex) {\n super()\n // read entries always start life paused. this is to avoid the\n // situation where Minipass's auto-ending empty streams results\n // in an entry ending before we're ready for it.\n this.pause()\n this.extended = ex\n this.globalExtended = gex\n this.header = header\n this.startBlockSize = 512 * Math.ceil(header.size / 512)\n this.blockRemain = this.startBlockSize\n this.remain = header.size\n this.type = header.type\n this.meta = false\n this.ignore = false\n switch (this.type) {\n case 'File':\n case 'OldFile':\n case 'Link':\n case 'SymbolicLink':\n case 'CharacterDevice':\n case 'BlockDevice':\n case 'Directory':\n case 'FIFO':\n case 'ContiguousFile':\n case 'GNUDumpDir':\n break\n\n case 'NextFileHasLongLinkpath':\n case 'NextFileHasLongPath':\n case 'OldGnuLongPath':\n case 'GlobalExtendedHeader':\n case 'ExtendedHeader':\n case 'OldExtendedHeader':\n this.meta = true\n break\n\n // NOTE: gnutar and bsdtar treat unrecognized types as 'File'\n // it may be worth doing the same, but with a warning.\n default:\n this.ignore = true\n }\n\n this.path = header.path\n this.mode = header.mode\n if (this.mode)\n this.mode = this.mode & 0o7777\n this.uid = header.uid\n this.gid = header.gid\n this.uname = header.uname\n this.gname = header.gname\n this.size = header.size\n this.mtime = header.mtime\n this.atime = header.atime\n this.ctime = header.ctime\n this.linkpath = header.linkpath\n this.uname = header.uname\n this.gname = header.gname\n\n if (ex)\n this[SLURP](ex)\n if (gex)\n this[SLURP](gex, true)\n }\n\n write (data) {\n const writeLen = data.length\n if (writeLen > this.blockRemain)\n throw new Error('writing more to entry than is appropriate')\n\n const r = this.remain\n const br = this.blockRemain\n this.remain = Math.max(0, r - writeLen)\n this.blockRemain = Math.max(0, br - writeLen)\n if (this.ignore)\n return true\n\n if (r >= writeLen)\n return super.write(data)\n\n // r < writeLen\n return super.write(data.slice(0, r))\n }\n\n [SLURP] (ex, global) {\n for (const k in ex) {\n // we slurp in everything except for the path attribute in\n // a global extended header, because that's weird.\n if (ex[k] !== null && ex[k] !== undefined &&\n !(global && k === 'path'))\n this[k] = ex[k]\n }\n }\n}\n", "'use strict'\n// map types from key to human-friendly name\nexports.name = new Map([\n ['0', 'File'],\n // same as File\n ['', 'OldFile'],\n ['1', 'Link'],\n ['2', 'SymbolicLink'],\n // Devices and FIFOs aren't fully supported\n // they are parsed, but skipped when unpacking\n ['3', 'CharacterDevice'],\n ['4', 'BlockDevice'],\n ['5', 'Directory'],\n ['6', 'FIFO'],\n // same as File\n ['7', 'ContiguousFile'],\n // pax headers\n ['g', 'GlobalExtendedHeader'],\n ['x', 'ExtendedHeader'],\n // vendor-specific stuff\n // skip\n ['A', 'SolarisACL'],\n // like 5, but with data, which should be skipped\n ['D', 'GNUDumpDir'],\n // metadata only, skip\n ['I', 'Inode'],\n // data = link path of next file\n ['K', 'NextFileHasLongLinkpath'],\n // data = path of next file\n ['L', 'NextFileHasLongPath'],\n // skip\n ['M', 'ContinuationFile'],\n // like L\n ['N', 'OldGnuLongPath'],\n // skip\n ['S', 'SparseFile'],\n // skip\n ['V', 'TapeVolumeHeader'],\n // like x\n ['X', 'OldExtendedHeader'],\n])\n\n// map the other direction\nexports.code = new Map(Array.from(exports.name).map(kv => [kv[1], kv[0]]))\n", "'use strict'\n// Tar can encode large and negative numbers using a leading byte of\n// 0xff for negative, and 0x80 for positive.\n\nconst encode = (num, buf) => {\n if (!Number.isSafeInteger(num))\n // The number is so large that javascript cannot represent it with integer\n // precision.\n throw Error('cannot encode number outside of javascript safe integer range')\n else if (num < 0)\n encodeNegative(num, buf)\n else\n encodePositive(num, buf)\n return buf\n}\n\nconst encodePositive = (num, buf) => {\n buf[0] = 0x80\n\n for (var i = buf.length; i > 1; i--) {\n buf[i - 1] = num & 0xff\n num = Math.floor(num / 0x100)\n }\n}\n\nconst encodeNegative = (num, buf) => {\n buf[0] = 0xff\n var flipped = false\n num = num * -1\n for (var i = buf.length; i > 1; i--) {\n var byte = num & 0xff\n num = Math.floor(num / 0x100)\n if (flipped)\n buf[i - 1] = onesComp(byte)\n else if (byte === 0)\n buf[i - 1] = 0\n else {\n flipped = true\n buf[i - 1] = twosComp(byte)\n }\n }\n}\n\nconst parse = (buf) => {\n const pre = buf[0]\n const value = pre === 0x80 ? pos(buf.slice(1, buf.length))\n : pre === 0xff ? twos(buf)\n : null\n if (value === null)\n throw Error('invalid base256 encoding')\n\n if (!Number.isSafeInteger(value))\n // The number is so large that javascript cannot represent it with integer\n // precision.\n throw Error('parsed number outside of javascript safe integer range')\n\n return value\n}\n\nconst twos = (buf) => {\n var len = buf.length\n var sum = 0\n var flipped = false\n for (var i = len - 1; i > -1; i--) {\n var byte = buf[i]\n var f\n if (flipped)\n f = onesComp(byte)\n else if (byte === 0)\n f = byte\n else {\n flipped = true\n f = twosComp(byte)\n }\n if (f !== 0)\n sum -= f * Math.pow(256, len - i - 1)\n }\n return sum\n}\n\nconst pos = (buf) => {\n var len = buf.length\n var sum = 0\n for (var i = len - 1; i > -1; i--) {\n var byte = buf[i]\n if (byte !== 0)\n sum += byte * Math.pow(256, len - i - 1)\n }\n return sum\n}\n\nconst onesComp = byte => (0xff ^ byte) & 0xff\n\nconst twosComp = byte => ((0xff ^ byte) + 1) & 0xff\n\nmodule.exports = {\n encode,\n parse,\n}\n", "'use strict'\n// parse a 512-byte header block to a data object, or vice-versa\n// encode returns `true` if a pax extended header is needed, because\n// the data could not be faithfully encoded in a simple header.\n// (Also, check header.needPax to see if it needs a pax header.)\n\nconst types = require('./types.js')\nconst pathModule = require('path').posix\nconst large = require('./large-numbers.js')\n\nconst SLURP = Symbol('slurp')\nconst TYPE = Symbol('type')\n\nclass Header {\n constructor (data, off, ex, gex) {\n this.cksumValid = false\n this.needPax = false\n this.nullBlock = false\n\n this.block = null\n this.path = null\n this.mode = null\n this.uid = null\n this.gid = null\n this.size = null\n this.mtime = null\n this.cksum = null\n this[TYPE] = '0'\n this.linkpath = null\n this.uname = null\n this.gname = null\n this.devmaj = 0\n this.devmin = 0\n this.atime = null\n this.ctime = null\n\n if (Buffer.isBuffer(data))\n this.decode(data, off || 0, ex, gex)\n else if (data)\n this.set(data)\n }\n\n decode (buf, off, ex, gex) {\n if (!off)\n off = 0\n\n if (!buf || !(buf.length >= off + 512))\n throw new Error('need 512 bytes for header')\n\n this.path = decString(buf, off, 100)\n this.mode = decNumber(buf, off + 100, 8)\n this.uid = decNumber(buf, off + 108, 8)\n this.gid = decNumber(buf, off + 116, 8)\n this.size = decNumber(buf, off + 124, 12)\n this.mtime = decDate(buf, off + 136, 12)\n this.cksum = decNumber(buf, off + 148, 12)\n\n // if we have extended or global extended headers, apply them now\n // See https://github.com/npm/node-tar/pull/187\n this[SLURP](ex)\n this[SLURP](gex, true)\n\n // old tar versions marked dirs as a file with a trailing /\n this[TYPE] = decString(buf, off + 156, 1)\n if (this[TYPE] === '')\n this[TYPE] = '0'\n if (this[TYPE] === '0' && this.path.substr(-1) === '/')\n this[TYPE] = '5'\n\n // tar implementations sometimes incorrectly put the stat(dir).size\n // as the size in the tarball, even though Directory entries are\n // not able to have any body at all. In the very rare chance that\n // it actually DOES have a body, we weren't going to do anything with\n // it anyway, and it'll just be a warning about an invalid header.\n if (this[TYPE] === '5')\n this.size = 0\n\n this.linkpath = decString(buf, off + 157, 100)\n if (buf.slice(off + 257, off + 265).toString() === 'ustar\\u000000') {\n this.uname = decString(buf, off + 265, 32)\n this.gname = decString(buf, off + 297, 32)\n this.devmaj = decNumber(buf, off + 329, 8)\n this.devmin = decNumber(buf, off + 337, 8)\n if (buf[off + 475] !== 0) {\n // definitely a prefix, definitely >130 chars.\n const prefix = decString(buf, off + 345, 155)\n this.path = prefix + '/' + this.path\n } else {\n const prefix = decString(buf, off + 345, 130)\n if (prefix)\n this.path = prefix + '/' + this.path\n this.atime = decDate(buf, off + 476, 12)\n this.ctime = decDate(buf, off + 488, 12)\n }\n }\n\n let sum = 8 * 0x20\n for (let i = off; i < off + 148; i++)\n sum += buf[i]\n\n for (let i = off + 156; i < off + 512; i++)\n sum += buf[i]\n\n this.cksumValid = sum === this.cksum\n if (this.cksum === null && sum === 8 * 0x20)\n this.nullBlock = true\n }\n\n [SLURP] (ex, global) {\n for (const k in ex) {\n // we slurp in everything except for the path attribute in\n // a global extended header, because that's weird.\n if (ex[k] !== null && ex[k] !== undefined &&\n !(global && k === 'path'))\n this[k] = ex[k]\n }\n }\n\n encode (buf, off) {\n if (!buf) {\n buf = this.block = Buffer.alloc(512)\n off = 0\n }\n\n if (!off)\n off = 0\n\n if (!(buf.length >= off + 512))\n throw new Error('need 512 bytes for header')\n\n const prefixSize = this.ctime || this.atime ? 130 : 155\n const split = splitPrefix(this.path || '', prefixSize)\n const path = split[0]\n const prefix = split[1]\n this.needPax = split[2]\n\n this.needPax = encString(buf, off, 100, path) || this.needPax\n this.needPax = encNumber(buf, off + 100, 8, this.mode) || this.needPax\n this.needPax = encNumber(buf, off + 108, 8, this.uid) || this.needPax\n this.needPax = encNumber(buf, off + 116, 8, this.gid) || this.needPax\n this.needPax = encNumber(buf, off + 124, 12, this.size) || this.needPax\n this.needPax = encDate(buf, off + 136, 12, this.mtime) || this.needPax\n buf[off + 156] = this[TYPE].charCodeAt(0)\n this.needPax = encString(buf, off + 157, 100, this.linkpath) || this.needPax\n buf.write('ustar\\u000000', off + 257, 8)\n this.needPax = encString(buf, off + 265, 32, this.uname) || this.needPax\n this.needPax = encString(buf, off + 297, 32, this.gname) || this.needPax\n this.needPax = encNumber(buf, off + 329, 8, this.devmaj) || this.needPax\n this.needPax = encNumber(buf, off + 337, 8, this.devmin) || this.needPax\n this.needPax = encString(buf, off + 345, prefixSize, prefix) || this.needPax\n if (buf[off + 475] !== 0)\n this.needPax = encString(buf, off + 345, 155, prefix) || this.needPax\n else {\n this.needPax = encString(buf, off + 345, 130, prefix) || this.needPax\n this.needPax = encDate(buf, off + 476, 12, this.atime) || this.needPax\n this.needPax = encDate(buf, off + 488, 12, this.ctime) || this.needPax\n }\n\n let sum = 8 * 0x20\n for (let i = off; i < off + 148; i++)\n sum += buf[i]\n\n for (let i = off + 156; i < off + 512; i++)\n sum += buf[i]\n\n this.cksum = sum\n encNumber(buf, off + 148, 8, this.cksum)\n this.cksumValid = true\n\n return this.needPax\n }\n\n set (data) {\n for (const i in data) {\n if (data[i] !== null && data[i] !== undefined)\n this[i] = data[i]\n }\n }\n\n get type () {\n return types.name.get(this[TYPE]) || this[TYPE]\n }\n\n get typeKey () {\n return this[TYPE]\n }\n\n set type (type) {\n if (types.code.has(type))\n this[TYPE] = types.code.get(type)\n else\n this[TYPE] = type\n }\n}\n\nconst splitPrefix = (p, prefixSize) => {\n const pathSize = 100\n let pp = p\n let prefix = ''\n let ret\n const root = pathModule.parse(p).root || '.'\n\n if (Buffer.byteLength(pp) < pathSize)\n ret = [pp, prefix, false]\n else {\n // first set prefix to the dir, and path to the base\n prefix = pathModule.dirname(pp)\n pp = pathModule.basename(pp)\n\n do {\n // both fit!\n if (Buffer.byteLength(pp) <= pathSize &&\n Buffer.byteLength(prefix) <= prefixSize)\n ret = [pp, prefix, false]\n\n // prefix fits in prefix, but path doesn't fit in path\n else if (Buffer.byteLength(pp) > pathSize &&\n Buffer.byteLength(prefix) <= prefixSize)\n ret = [pp.substr(0, pathSize - 1), prefix, true]\n\n else {\n // make path take a bit from prefix\n pp = pathModule.join(pathModule.basename(prefix), pp)\n prefix = pathModule.dirname(prefix)\n }\n } while (prefix !== root && !ret)\n\n // at this point, found no resolution, just truncate\n if (!ret)\n ret = [p.substr(0, pathSize - 1), '', true]\n }\n return ret\n}\n\nconst decString = (buf, off, size) =>\n buf.slice(off, off + size).toString('utf8').replace(/\\0.*/, '')\n\nconst decDate = (buf, off, size) =>\n numToDate(decNumber(buf, off, size))\n\nconst numToDate = num => num === null ? null : new Date(num * 1000)\n\nconst decNumber = (buf, off, size) =>\n buf[off] & 0x80 ? large.parse(buf.slice(off, off + size))\n : decSmallNumber(buf, off, size)\n\nconst nanNull = value => isNaN(value) ? null : value\n\nconst decSmallNumber = (buf, off, size) =>\n nanNull(parseInt(\n buf.slice(off, off + size)\n .toString('utf8').replace(/\\0.*$/, '').trim(), 8))\n\n// the maximum encodable as a null-terminated octal, by field size\nconst MAXNUM = {\n 12: 0o77777777777,\n 8: 0o7777777,\n}\n\nconst encNumber = (buf, off, size, number) =>\n number === null ? false :\n number > MAXNUM[size] || number < 0\n ? (large.encode(number, buf.slice(off, off + size)), true)\n : (encSmallNumber(buf, off, size, number), false)\n\nconst encSmallNumber = (buf, off, size, number) =>\n buf.write(octalString(number, size), off, size, 'ascii')\n\nconst octalString = (number, size) =>\n padOctal(Math.floor(number).toString(8), size)\n\nconst padOctal = (string, size) =>\n (string.length === size - 1 ? string\n : new Array(size - string.length - 1).join('0') + string + ' ') + '\\0'\n\nconst encDate = (buf, off, size, date) =>\n date === null ? false :\n encNumber(buf, off, size, date.getTime() / 1000)\n\n// enough to fill the longest string we've got\nconst NULLS = new Array(156).join('\\0')\n// pad with nulls, return true if it's longer or non-ascii\nconst encString = (buf, off, size, string) =>\n string === null ? false :\n (buf.write(string + NULLS, off, size, 'utf8'),\n string.length !== Buffer.byteLength(string) || string.length > size)\n\nmodule.exports = Header\n", "'use strict'\nconst Header = require('./header.js')\nconst path = require('path')\n\nclass Pax {\n constructor (obj, global) {\n this.atime = obj.atime || null\n this.charset = obj.charset || null\n this.comment = obj.comment || null\n this.ctime = obj.ctime || null\n this.gid = obj.gid || null\n this.gname = obj.gname || null\n this.linkpath = obj.linkpath || null\n this.mtime = obj.mtime || null\n this.path = obj.path || null\n this.size = obj.size || null\n this.uid = obj.uid || null\n this.uname = obj.uname || null\n this.dev = obj.dev || null\n this.ino = obj.ino || null\n this.nlink = obj.nlink || null\n this.global = global || false\n }\n\n encode () {\n const body = this.encodeBody()\n if (body === '')\n return null\n\n const bodyLen = Buffer.byteLength(body)\n // round up to 512 bytes\n // add 512 for header\n const bufLen = 512 * Math.ceil(1 + bodyLen / 512)\n const buf = Buffer.allocUnsafe(bufLen)\n\n // 0-fill the header section, it might not hit every field\n for (let i = 0; i < 512; i++)\n buf[i] = 0\n\n new Header({\n // XXX split the path\n // then the path should be PaxHeader + basename, but less than 99,\n // prepend with the dirname\n path: ('PaxHeader/' + path.basename(this.path)).slice(0, 99),\n mode: this.mode || 0o644,\n uid: this.uid || null,\n gid: this.gid || null,\n size: bodyLen,\n mtime: this.mtime || null,\n type: this.global ? 'GlobalExtendedHeader' : 'ExtendedHeader',\n linkpath: '',\n uname: this.uname || '',\n gname: this.gname || '',\n devmaj: 0,\n devmin: 0,\n atime: this.atime || null,\n ctime: this.ctime || null,\n }).encode(buf)\n\n buf.write(body, 512, bodyLen, 'utf8')\n\n // null pad after the body\n for (let i = bodyLen + 512; i < buf.length; i++)\n buf[i] = 0\n\n return buf\n }\n\n encodeBody () {\n return (\n this.encodeField('path') +\n this.encodeField('ctime') +\n this.encodeField('atime') +\n this.encodeField('dev') +\n this.encodeField('ino') +\n this.encodeField('nlink') +\n this.encodeField('charset') +\n this.encodeField('comment') +\n this.encodeField('gid') +\n this.encodeField('gname') +\n this.encodeField('linkpath') +\n this.encodeField('mtime') +\n this.encodeField('size') +\n this.encodeField('uid') +\n this.encodeField('uname')\n )\n }\n\n encodeField (field) {\n if (this[field] === null || this[field] === undefined)\n return ''\n const v = this[field] instanceof Date ? this[field].getTime() / 1000\n : this[field]\n const s = ' ' +\n (field === 'dev' || field === 'ino' || field === 'nlink'\n ? 'SCHILY.' : '') +\n field + '=' + v + '\\n'\n const byteLen = Buffer.byteLength(s)\n // the digits includes the length of the digits in ascii base-10\n // so if it's 9 characters, then adding 1 for the 9 makes it 10\n // which makes it 11 chars.\n let digits = Math.floor(Math.log(byteLen) / Math.log(10)) + 1\n if (byteLen + digits >= Math.pow(10, digits))\n digits += 1\n const len = digits + byteLen\n return len + s\n }\n}\n\nPax.parse = (string, ex, g) => new Pax(merge(parseKV(string), ex), g)\n\nconst merge = (a, b) =>\n b ? Object.keys(a).reduce((s, k) => (s[k] = a[k], s), b) : a\n\nconst parseKV = string =>\n string\n .replace(/\\n$/, '')\n .split('\\n')\n .reduce(parseKVLine, Object.create(null))\n\nconst parseKVLine = (set, line) => {\n const n = parseInt(line, 10)\n\n // XXX Values with \\n in them will fail this.\n // Refactor to not be a naive line-by-line parse.\n if (n !== Buffer.byteLength(line) + 1)\n return set\n\n line = line.substr((n + ' ').length)\n const kv = line.split('=')\n const k = kv.shift().replace(/^SCHILY\\.(dev|ino|nlink)/, '$1')\n if (!k)\n return set\n\n const v = kv.join('=')\n set[k] = /^([A-Z]+\\.)?([mac]|birth|creation)time$/.test(k)\n ? new Date(v * 1000)\n : /^[0-9]+$/.test(v) ? +v\n : v\n return set\n}\n\nmodule.exports = Pax\n", "'use strict'\nmodule.exports = Base => class extends Base {\n warn (code, message, data = {}) {\n if (this.file)\n data.file = this.file\n if (this.cwd)\n data.cwd = this.cwd\n data.code = message instanceof Error && message.code || code\n data.tarCode = code\n if (!this.strict && data.recoverable !== false) {\n if (message instanceof Error) {\n data = Object.assign(message, data)\n message = message.message\n }\n this.emit('warn', data.tarCode, message, data)\n } else if (message instanceof Error)\n this.emit('error', Object.assign(message, data))\n else\n this.emit('error', Object.assign(new Error(`${code}: ${message}`), data))\n }\n}\n", "'use strict'\n\n// When writing files on Windows, translate the characters to their\n// 0xf000 higher-encoded versions.\n\nconst raw = [\n '|',\n '<',\n '>',\n '?',\n ':',\n]\n\nconst win = raw.map(char =>\n String.fromCharCode(0xf000 + char.charCodeAt(0)))\n\nconst toWin = new Map(raw.map((char, i) => [char, win[i]]))\nconst toRaw = new Map(win.map((char, i) => [char, raw[i]]))\n\nmodule.exports = {\n encode: s => raw.reduce((s, c) => s.split(c).join(toWin.get(c)), s),\n decode: s => win.reduce((s, c) => s.split(c).join(toRaw.get(c)), s),\n}\n", "'use strict'\nmodule.exports = (mode, isDir, portable) => {\n mode &= 0o7777\n\n // in portable mode, use the minimum reasonable umask\n // if this system creates files with 0o664 by default\n // (as some linux distros do), then we'll write the\n // archive with 0o644 instead. Also, don't ever create\n // a file that is not readable/writable by the owner.\n if (portable)\n mode = (mode | 0o600) & ~0o22\n\n // if dirs are readable, then they should be listable\n if (isDir) {\n if (mode & 0o400)\n mode |= 0o100\n if (mode & 0o40)\n mode |= 0o10\n if (mode & 0o4)\n mode |= 0o1\n }\n return mode\n}\n", "'use strict'\nconst MiniPass = require('minipass')\nconst Pax = require('./pax.js')\nconst Header = require('./header.js')\nconst fs = require('fs')\nconst path = require('path')\n\nconst maxReadSize = 16 * 1024 * 1024\nconst PROCESS = Symbol('process')\nconst FILE = Symbol('file')\nconst DIRECTORY = Symbol('directory')\nconst SYMLINK = Symbol('symlink')\nconst HARDLINK = Symbol('hardlink')\nconst HEADER = Symbol('header')\nconst READ = Symbol('read')\nconst LSTAT = Symbol('lstat')\nconst ONLSTAT = Symbol('onlstat')\nconst ONREAD = Symbol('onread')\nconst ONREADLINK = Symbol('onreadlink')\nconst OPENFILE = Symbol('openfile')\nconst ONOPENFILE = Symbol('onopenfile')\nconst CLOSE = Symbol('close')\nconst MODE = Symbol('mode')\nconst warner = require('./warn-mixin.js')\nconst winchars = require('./winchars.js')\n\nconst modeFix = require('./mode-fix.js')\n\nconst WriteEntry = warner(class WriteEntry extends MiniPass {\n constructor (p, opt) {\n opt = opt || {}\n super(opt)\n if (typeof p !== 'string')\n throw new TypeError('path is required')\n this.path = p\n // suppress atime, ctime, uid, gid, uname, gname\n this.portable = !!opt.portable\n // until node has builtin pwnam functions, this'll have to do\n this.myuid = process.getuid && process.getuid()\n this.myuser = process.env.USER || ''\n this.maxReadSize = opt.maxReadSize || maxReadSize\n this.linkCache = opt.linkCache || new Map()\n this.statCache = opt.statCache || new Map()\n this.preservePaths = !!opt.preservePaths\n this.cwd = opt.cwd || process.cwd()\n this.strict = !!opt.strict\n this.noPax = !!opt.noPax\n this.noMtime = !!opt.noMtime\n this.mtime = opt.mtime || null\n\n if (typeof opt.onwarn === 'function')\n this.on('warn', opt.onwarn)\n\n let pathWarn = false\n if (!this.preservePaths && path.win32.isAbsolute(p)) {\n // absolutes on posix are also absolutes on win32\n // so we only need to test this one to get both\n const parsed = path.win32.parse(p)\n this.path = p.substr(parsed.root.length)\n pathWarn = parsed.root\n }\n\n this.win32 = !!opt.win32 || process.platform === 'win32'\n if (this.win32) {\n this.path = winchars.decode(this.path.replace(/\\\\/g, '/'))\n p = p.replace(/\\\\/g, '/')\n }\n\n this.absolute = opt.absolute || path.resolve(this.cwd, p)\n\n if (this.path === '')\n this.path = './'\n\n if (pathWarn) {\n this.warn('TAR_ENTRY_INFO', `stripping ${pathWarn} from absolute path`, {\n entry: this,\n path: pathWarn + this.path,\n })\n }\n\n if (this.statCache.has(this.absolute))\n this[ONLSTAT](this.statCache.get(this.absolute))\n else\n this[LSTAT]()\n }\n\n [LSTAT] () {\n fs.lstat(this.absolute, (er, stat) => {\n if (er)\n return this.emit('error', er)\n this[ONLSTAT](stat)\n })\n }\n\n [ONLSTAT] (stat) {\n this.statCache.set(this.absolute, stat)\n this.stat = stat\n if (!stat.isFile())\n stat.size = 0\n this.type = getType(stat)\n this.emit('stat', stat)\n this[PROCESS]()\n }\n\n [PROCESS] () {\n switch (this.type) {\n case 'File': return this[FILE]()\n case 'Directory': return this[DIRECTORY]()\n case 'SymbolicLink': return this[SYMLINK]()\n // unsupported types are ignored.\n default: return this.end()\n }\n }\n\n [MODE] (mode) {\n return modeFix(mode, this.type === 'Directory', this.portable)\n }\n\n [HEADER] () {\n if (this.type === 'Directory' && this.portable)\n this.noMtime = true\n\n this.header = new Header({\n path: this.path,\n linkpath: this.linkpath,\n // only the permissions and setuid/setgid/sticky bitflags\n // not the higher-order bits that specify file type\n mode: this[MODE](this.stat.mode),\n uid: this.portable ? null : this.stat.uid,\n gid: this.portable ? null : this.stat.gid,\n size: this.stat.size,\n mtime: this.noMtime ? null : this.mtime || this.stat.mtime,\n type: this.type,\n uname: this.portable ? null :\n this.stat.uid === this.myuid ? this.myuser : '',\n atime: this.portable ? null : this.stat.atime,\n ctime: this.portable ? null : this.stat.ctime,\n })\n\n if (this.header.encode() && !this.noPax) {\n this.write(new Pax({\n atime: this.portable ? null : this.header.atime,\n ctime: this.portable ? null : this.header.ctime,\n gid: this.portable ? null : this.header.gid,\n mtime: this.noMtime ? null : this.mtime || this.header.mtime,\n path: this.path,\n linkpath: this.linkpath,\n size: this.header.size,\n uid: this.portable ? null : this.header.uid,\n uname: this.portable ? null : this.header.uname,\n dev: this.portable ? null : this.stat.dev,\n ino: this.portable ? null : this.stat.ino,\n nlink: this.portable ? null : this.stat.nlink,\n }).encode())\n }\n this.write(this.header.block)\n }\n\n [DIRECTORY] () {\n if (this.path.substr(-1) !== '/')\n this.path += '/'\n this.stat.size = 0\n this[HEADER]()\n this.end()\n }\n\n [SYMLINK] () {\n fs.readlink(this.absolute, (er, linkpath) => {\n if (er)\n return this.emit('error', er)\n this[ONREADLINK](linkpath)\n })\n }\n\n [ONREADLINK] (linkpath) {\n this.linkpath = linkpath.replace(/\\\\/g, '/')\n this[HEADER]()\n this.end()\n }\n\n [HARDLINK] (linkpath) {\n this.type = 'Link'\n this.linkpath = path.relative(this.cwd, linkpath).replace(/\\\\/g, '/')\n this.stat.size = 0\n this[HEADER]()\n this.end()\n }\n\n [FILE] () {\n if (this.stat.nlink > 1) {\n const linkKey = this.stat.dev + ':' + this.stat.ino\n if (this.linkCache.has(linkKey)) {\n const linkpath = this.linkCache.get(linkKey)\n if (linkpath.indexOf(this.cwd) === 0)\n return this[HARDLINK](linkpath)\n }\n this.linkCache.set(linkKey, this.absolute)\n }\n\n this[HEADER]()\n if (this.stat.size === 0)\n return this.end()\n\n this[OPENFILE]()\n }\n\n [OPENFILE] () {\n fs.open(this.absolute, 'r', (er, fd) => {\n if (er)\n return this.emit('error', er)\n this[ONOPENFILE](fd)\n })\n }\n\n [ONOPENFILE] (fd) {\n const blockLen = 512 * Math.ceil(this.stat.size / 512)\n const bufLen = Math.min(blockLen, this.maxReadSize)\n const buf = Buffer.allocUnsafe(bufLen)\n this[READ](fd, buf, 0, buf.length, 0, this.stat.size, blockLen)\n }\n\n [READ] (fd, buf, offset, length, pos, remain, blockRemain) {\n fs.read(fd, buf, offset, length, pos, (er, bytesRead) => {\n if (er) {\n // ignoring the error from close(2) is a bad practice, but at\n // this point we already have an error, don't need another one\n return this[CLOSE](fd, () => this.emit('error', er))\n }\n this[ONREAD](fd, buf, offset, length, pos, remain, blockRemain, bytesRead)\n })\n }\n\n [CLOSE] (fd, cb) {\n fs.close(fd, cb)\n }\n\n [ONREAD] (fd, buf, offset, length, pos, remain, blockRemain, bytesRead) {\n if (bytesRead <= 0 && remain > 0) {\n const er = new Error('encountered unexpected EOF')\n er.path = this.absolute\n er.syscall = 'read'\n er.code = 'EOF'\n return this[CLOSE](fd, () => this.emit('error', er))\n }\n\n if (bytesRead > remain) {\n const er = new Error('did not encounter expected EOF')\n er.path = this.absolute\n er.syscall = 'read'\n er.code = 'EOF'\n return this[CLOSE](fd, () => this.emit('error', er))\n }\n\n // null out the rest of the buffer, if we could fit the block padding\n if (bytesRead === remain) {\n for (let i = bytesRead; i < length && bytesRead < blockRemain; i++) {\n buf[i + offset] = 0\n bytesRead++\n remain++\n }\n }\n\n const writeBuf = offset === 0 && bytesRead === buf.length ?\n buf : buf.slice(offset, offset + bytesRead)\n remain -= bytesRead\n blockRemain -= bytesRead\n pos += bytesRead\n offset += bytesRead\n\n this.write(writeBuf)\n\n if (!remain) {\n if (blockRemain)\n this.write(Buffer.alloc(blockRemain))\n return this[CLOSE](fd, er => er ? this.emit('error', er) : this.end())\n }\n\n if (offset >= length) {\n buf = Buffer.allocUnsafe(length)\n offset = 0\n }\n length = buf.length - offset\n this[READ](fd, buf, offset, length, pos, remain, blockRemain)\n }\n})\n\nclass WriteEntrySync extends WriteEntry {\n [LSTAT] () {\n this[ONLSTAT](fs.lstatSync(this.absolute))\n }\n\n [SYMLINK] () {\n this[ONREADLINK](fs.readlinkSync(this.absolute))\n }\n\n [OPENFILE] () {\n this[ONOPENFILE](fs.openSync(this.absolute, 'r'))\n }\n\n [READ] (fd, buf, offset, length, pos, remain, blockRemain) {\n let threw = true\n try {\n const bytesRead = fs.readSync(fd, buf, offset, length, pos)\n this[ONREAD](fd, buf, offset, length, pos, remain, blockRemain, bytesRead)\n threw = false\n } finally {\n // ignoring the error from close(2) is a bad practice, but at\n // this point we already have an error, don't need another one\n if (threw) {\n try {\n this[CLOSE](fd, () => {})\n } catch (er) {}\n }\n }\n }\n\n [CLOSE] (fd, cb) {\n fs.closeSync(fd)\n cb()\n }\n}\n\nconst WriteEntryTar = warner(class WriteEntryTar extends MiniPass {\n constructor (readEntry, opt) {\n opt = opt || {}\n super(opt)\n this.preservePaths = !!opt.preservePaths\n this.portable = !!opt.portable\n this.strict = !!opt.strict\n this.noPax = !!opt.noPax\n this.noMtime = !!opt.noMtime\n\n this.readEntry = readEntry\n this.type = readEntry.type\n if (this.type === 'Directory' && this.portable)\n this.noMtime = true\n\n this.path = readEntry.path\n this.mode = this[MODE](readEntry.mode)\n this.uid = this.portable ? null : readEntry.uid\n this.gid = this.portable ? null : readEntry.gid\n this.uname = this.portable ? null : readEntry.uname\n this.gname = this.portable ? null : readEntry.gname\n this.size = readEntry.size\n this.mtime = this.noMtime ? null : opt.mtime || readEntry.mtime\n this.atime = this.portable ? null : readEntry.atime\n this.ctime = this.portable ? null : readEntry.ctime\n this.linkpath = readEntry.linkpath\n\n if (typeof opt.onwarn === 'function')\n this.on('warn', opt.onwarn)\n\n let pathWarn = false\n if (path.isAbsolute(this.path) && !this.preservePaths) {\n const parsed = path.parse(this.path)\n pathWarn = parsed.root\n this.path = this.path.substr(parsed.root.length)\n }\n\n this.remain = readEntry.size\n this.blockRemain = readEntry.startBlockSize\n\n this.header = new Header({\n path: this.path,\n linkpath: this.linkpath,\n // only the permissions and setuid/setgid/sticky bitflags\n // not the higher-order bits that specify file type\n mode: this.mode,\n uid: this.portable ? null : this.uid,\n gid: this.portable ? null : this.gid,\n size: this.size,\n mtime: this.noMtime ? null : this.mtime,\n type: this.type,\n uname: this.portable ? null : this.uname,\n atime: this.portable ? null : this.atime,\n ctime: this.portable ? null : this.ctime,\n })\n\n if (pathWarn) {\n this.warn('TAR_ENTRY_INFO', `stripping ${pathWarn} from absolute path`, {\n entry: this,\n path: pathWarn + this.path,\n })\n }\n\n if (this.header.encode() && !this.noPax) {\n super.write(new Pax({\n atime: this.portable ? null : this.atime,\n ctime: this.portable ? null : this.ctime,\n gid: this.portable ? null : this.gid,\n mtime: this.noMtime ? null : this.mtime,\n path: this.path,\n linkpath: this.linkpath,\n size: this.size,\n uid: this.portable ? null : this.uid,\n uname: this.portable ? null : this.uname,\n dev: this.portable ? null : this.readEntry.dev,\n ino: this.portable ? null : this.readEntry.ino,\n nlink: this.portable ? null : this.readEntry.nlink,\n }).encode())\n }\n\n super.write(this.header.block)\n readEntry.pipe(this)\n }\n\n [MODE] (mode) {\n return modeFix(mode, this.type === 'Directory', this.portable)\n }\n\n write (data) {\n const writeLen = data.length\n if (writeLen > this.blockRemain)\n throw new Error('writing more to entry than is appropriate')\n this.blockRemain -= writeLen\n return super.write(data)\n }\n\n end () {\n if (this.blockRemain)\n this.write(Buffer.alloc(this.blockRemain))\n return super.end()\n }\n})\n\nWriteEntry.Sync = WriteEntrySync\nWriteEntry.Tar = WriteEntryTar\n\nconst getType = stat =>\n stat.isFile() ? 'File'\n : stat.isDirectory() ? 'Directory'\n : stat.isSymbolicLink() ? 'SymbolicLink'\n : 'Unsupported'\n\nmodule.exports = WriteEntry\n", "'use strict'\nmodule.exports = function (Yallist) {\n Yallist.prototype[Symbol.iterator] = function* () {\n for (let walker = this.head; walker; walker = walker.next) {\n yield walker.value\n }\n }\n}\n", "'use strict'\nmodule.exports = Yallist\n\nYallist.Node = Node\nYallist.create = Yallist\n\nfunction Yallist (list) {\n var self = this\n if (!(self instanceof Yallist)) {\n self = new Yallist()\n }\n\n self.tail = null\n self.head = null\n self.length = 0\n\n if (list && typeof list.forEach === 'function') {\n list.forEach(function (item) {\n self.push(item)\n })\n } else if (arguments.length > 0) {\n for (var i = 0, l = arguments.length; i < l; i++) {\n self.push(arguments[i])\n }\n }\n\n return self\n}\n\nYallist.prototype.removeNode = function (node) {\n if (node.list !== this) {\n throw new Error('removing node which does not belong to this list')\n }\n\n var next = node.next\n var prev = node.prev\n\n if (next) {\n next.prev = prev\n }\n\n if (prev) {\n prev.next = next\n }\n\n if (node === this.head) {\n this.head = next\n }\n if (node === this.tail) {\n this.tail = prev\n }\n\n node.list.length--\n node.next = null\n node.prev = null\n node.list = null\n\n return next\n}\n\nYallist.prototype.unshiftNode = function (node) {\n if (node === this.head) {\n return\n }\n\n if (node.list) {\n node.list.removeNode(node)\n }\n\n var head = this.head\n node.list = this\n node.next = head\n if (head) {\n head.prev = node\n }\n\n this.head = node\n if (!this.tail) {\n this.tail = node\n }\n this.length++\n}\n\nYallist.prototype.pushNode = function (node) {\n if (node === this.tail) {\n return\n }\n\n if (node.list) {\n node.list.removeNode(node)\n }\n\n var tail = this.tail\n node.list = this\n node.prev = tail\n if (tail) {\n tail.next = node\n }\n\n this.tail = node\n if (!this.head) {\n this.head = node\n }\n this.length++\n}\n\nYallist.prototype.push = function () {\n for (var i = 0, l = arguments.length; i < l; i++) {\n push(this, arguments[i])\n }\n return this.length\n}\n\nYallist.prototype.unshift = function () {\n for (var i = 0, l = arguments.length; i < l; i++) {\n unshift(this, arguments[i])\n }\n return this.length\n}\n\nYallist.prototype.pop = function () {\n if (!this.tail) {\n return undefined\n }\n\n var res = this.tail.value\n this.tail = this.tail.prev\n if (this.tail) {\n this.tail.next = null\n } else {\n this.head = null\n }\n this.length--\n return res\n}\n\nYallist.prototype.shift = function () {\n if (!this.head) {\n return undefined\n }\n\n var res = this.head.value\n this.head = this.head.next\n if (this.head) {\n this.head.prev = null\n } else {\n this.tail = null\n }\n this.length--\n return res\n}\n\nYallist.prototype.forEach = function (fn, thisp) {\n thisp = thisp || this\n for (var walker = this.head, i = 0; walker !== null; i++) {\n fn.call(thisp, walker.value, i, this)\n walker = walker.next\n }\n}\n\nYallist.prototype.forEachReverse = function (fn, thisp) {\n thisp = thisp || this\n for (var walker = this.tail, i = this.length - 1; walker !== null; i--) {\n fn.call(thisp, walker.value, i, this)\n walker = walker.prev\n }\n}\n\nYallist.prototype.get = function (n) {\n for (var i = 0, walker = this.head; walker !== null && i < n; i++) {\n // abort out of the list early if we hit a cycle\n walker = walker.next\n }\n if (i === n && walker !== null) {\n return walker.value\n }\n}\n\nYallist.prototype.getReverse = function (n) {\n for (var i = 0, walker = this.tail; walker !== null && i < n; i++) {\n // abort out of the list early if we hit a cycle\n walker = walker.prev\n }\n if (i === n && walker !== null) {\n return walker.value\n }\n}\n\nYallist.prototype.map = function (fn, thisp) {\n thisp = thisp || this\n var res = new Yallist()\n for (var walker = this.head; walker !== null;) {\n res.push(fn.call(thisp, walker.value, this))\n walker = walker.next\n }\n return res\n}\n\nYallist.prototype.mapReverse = function (fn, thisp) {\n thisp = thisp || this\n var res = new Yallist()\n for (var walker = this.tail; walker !== null;) {\n res.push(fn.call(thisp, walker.value, this))\n walker = walker.prev\n }\n return res\n}\n\nYallist.prototype.reduce = function (fn, initial) {\n var acc\n var walker = this.head\n if (arguments.length > 1) {\n acc = initial\n } else if (this.head) {\n walker = this.head.next\n acc = this.head.value\n } else {\n throw new TypeError('Reduce of empty list with no initial value')\n }\n\n for (var i = 0; walker !== null; i++) {\n acc = fn(acc, walker.value, i)\n walker = walker.next\n }\n\n return acc\n}\n\nYallist.prototype.reduceReverse = function (fn, initial) {\n var acc\n var walker = this.tail\n if (arguments.length > 1) {\n acc = initial\n } else if (this.tail) {\n walker = this.tail.prev\n acc = this.tail.value\n } else {\n throw new TypeError('Reduce of empty list with no initial value')\n }\n\n for (var i = this.length - 1; walker !== null; i--) {\n acc = fn(acc, walker.value, i)\n walker = walker.prev\n }\n\n return acc\n}\n\nYallist.prototype.toArray = function () {\n var arr = new Array(this.length)\n for (var i = 0, walker = this.head; walker !== null; i++) {\n arr[i] = walker.value\n walker = walker.next\n }\n return arr\n}\n\nYallist.prototype.toArrayReverse = function () {\n var arr = new Array(this.length)\n for (var i = 0, walker = this.tail; walker !== null; i++) {\n arr[i] = walker.value\n walker = walker.prev\n }\n return arr\n}\n\nYallist.prototype.slice = function (from, to) {\n to = to || this.length\n if (to < 0) {\n to += this.length\n }\n from = from || 0\n if (from < 0) {\n from += this.length\n }\n var ret = new Yallist()\n if (to < from || to < 0) {\n return ret\n }\n if (from < 0) {\n from = 0\n }\n if (to > this.length) {\n to = this.length\n }\n for (var i = 0, walker = this.head; walker !== null && i < from; i++) {\n walker = walker.next\n }\n for (; walker !== null && i < to; i++, walker = walker.next) {\n ret.push(walker.value)\n }\n return ret\n}\n\nYallist.prototype.sliceReverse = function (from, to) {\n to = to || this.length\n if (to < 0) {\n to += this.length\n }\n from = from || 0\n if (from < 0) {\n from += this.length\n }\n var ret = new Yallist()\n if (to < from || to < 0) {\n return ret\n }\n if (from < 0) {\n from = 0\n }\n if (to > this.length) {\n to = this.length\n }\n for (var i = this.length, walker = this.tail; walker !== null && i > to; i--) {\n walker = walker.prev\n }\n for (; walker !== null && i > from; i--, walker = walker.prev) {\n ret.push(walker.value)\n }\n return ret\n}\n\nYallist.prototype.splice = function (start, deleteCount, ...nodes) {\n if (start > this.length) {\n start = this.length - 1\n }\n if (start < 0) {\n start = this.length + start;\n }\n\n for (var i = 0, walker = this.head; walker !== null && i < start; i++) {\n walker = walker.next\n }\n\n var ret = []\n for (var i = 0; walker && i < deleteCount; i++) {\n ret.push(walker.value)\n walker = this.removeNode(walker)\n }\n if (walker === null) {\n walker = this.tail\n }\n\n if (walker !== this.head && walker !== this.tail) {\n walker = walker.prev\n }\n\n for (var i = 0; i < nodes.length; i++) {\n walker = insert(this, walker, nodes[i])\n }\n return ret;\n}\n\nYallist.prototype.reverse = function () {\n var head = this.head\n var tail = this.tail\n for (var walker = head; walker !== null; walker = walker.prev) {\n var p = walker.prev\n walker.prev = walker.next\n walker.next = p\n }\n this.head = tail\n this.tail = head\n return this\n}\n\nfunction insert (self, node, value) {\n var inserted = node === self.head ?\n new Node(value, null, node, self) :\n new Node(value, node, node.next, self)\n\n if (inserted.next === null) {\n self.tail = inserted\n }\n if (inserted.prev === null) {\n self.head = inserted\n }\n\n self.length++\n\n return inserted\n}\n\nfunction push (self, item) {\n self.tail = new Node(item, self.tail, null, self)\n if (!self.head) {\n self.head = self.tail\n }\n self.length++\n}\n\nfunction unshift (self, item) {\n self.head = new Node(item, null, self.head, self)\n if (!self.tail) {\n self.tail = self.head\n }\n self.length++\n}\n\nfunction Node (value, prev, next, list) {\n if (!(this instanceof Node)) {\n return new Node(value, prev, next, list)\n }\n\n this.list = list\n this.value = value\n\n if (prev) {\n prev.next = this\n this.prev = prev\n } else {\n this.prev = null\n }\n\n if (next) {\n next.prev = this\n this.next = next\n } else {\n this.next = null\n }\n}\n\ntry {\n // add if support for Symbol.iterator is present\n require('./iterator.js')(Yallist)\n} catch (er) {}\n", "'use strict'\n\n// A readable tar stream creator\n// Technically, this is a transform stream that you write paths into,\n// and tar format comes out of.\n// The `add()` method is like `write()` but returns this,\n// and end() return `this` as well, so you can\n// do `new Pack(opt).add('files').add('dir').end().pipe(output)\n// You could also do something like:\n// streamOfPaths().pipe(new Pack()).pipe(new fs.WriteStream('out.tar'))\n\nclass PackJob {\n constructor (path, absolute) {\n this.path = path || './'\n this.absolute = absolute\n this.entry = null\n this.stat = null\n this.readdir = null\n this.pending = false\n this.ignore = false\n this.piped = false\n }\n}\n\nconst MiniPass = require('minipass')\nconst zlib = require('minizlib')\nconst ReadEntry = require('./read-entry.js')\nconst WriteEntry = require('./write-entry.js')\nconst WriteEntrySync = WriteEntry.Sync\nconst WriteEntryTar = WriteEntry.Tar\nconst Yallist = require('yallist')\nconst EOF = Buffer.alloc(1024)\nconst ONSTAT = Symbol('onStat')\nconst ENDED = Symbol('ended')\nconst QUEUE = Symbol('queue')\nconst CURRENT = Symbol('current')\nconst PROCESS = Symbol('process')\nconst PROCESSING = Symbol('processing')\nconst PROCESSJOB = Symbol('processJob')\nconst JOBS = Symbol('jobs')\nconst JOBDONE = Symbol('jobDone')\nconst ADDFSENTRY = Symbol('addFSEntry')\nconst ADDTARENTRY = Symbol('addTarEntry')\nconst STAT = Symbol('stat')\nconst READDIR = Symbol('readdir')\nconst ONREADDIR = Symbol('onreaddir')\nconst PIPE = Symbol('pipe')\nconst ENTRY = Symbol('entry')\nconst ENTRYOPT = Symbol('entryOpt')\nconst WRITEENTRYCLASS = Symbol('writeEntryClass')\nconst WRITE = Symbol('write')\nconst ONDRAIN = Symbol('ondrain')\n\nconst fs = require('fs')\nconst path = require('path')\nconst warner = require('./warn-mixin.js')\n\nconst Pack = warner(class Pack extends MiniPass {\n constructor (opt) {\n super(opt)\n opt = opt || Object.create(null)\n this.opt = opt\n this.file = opt.file || ''\n this.cwd = opt.cwd || process.cwd()\n this.maxReadSize = opt.maxReadSize\n this.preservePaths = !!opt.preservePaths\n this.strict = !!opt.strict\n this.noPax = !!opt.noPax\n this.prefix = (opt.prefix || '').replace(/(\\\\|\\/)+$/, '')\n this.linkCache = opt.linkCache || new Map()\n this.statCache = opt.statCache || new Map()\n this.readdirCache = opt.readdirCache || new Map()\n\n this[WRITEENTRYCLASS] = WriteEntry\n if (typeof opt.onwarn === 'function')\n this.on('warn', opt.onwarn)\n\n this.portable = !!opt.portable\n this.zip = null\n if (opt.gzip) {\n if (typeof opt.gzip !== 'object')\n opt.gzip = {}\n if (this.portable)\n opt.gzip.portable = true\n this.zip = new zlib.Gzip(opt.gzip)\n this.zip.on('data', chunk => super.write(chunk))\n this.zip.on('end', _ => super.end())\n this.zip.on('drain', _ => this[ONDRAIN]())\n this.on('resume', _ => this.zip.resume())\n } else\n this.on('drain', this[ONDRAIN])\n\n this.noDirRecurse = !!opt.noDirRecurse\n this.follow = !!opt.follow\n this.noMtime = !!opt.noMtime\n this.mtime = opt.mtime || null\n\n this.filter = typeof opt.filter === 'function' ? opt.filter : _ => true\n\n this[QUEUE] = new Yallist()\n this[JOBS] = 0\n this.jobs = +opt.jobs || 4\n this[PROCESSING] = false\n this[ENDED] = false\n }\n\n [WRITE] (chunk) {\n return super.write(chunk)\n }\n\n add (path) {\n this.write(path)\n return this\n }\n\n end (path) {\n if (path)\n this.write(path)\n this[ENDED] = true\n this[PROCESS]()\n return this\n }\n\n write (path) {\n if (this[ENDED])\n throw new Error('write after end')\n\n if (path instanceof ReadEntry)\n this[ADDTARENTRY](path)\n else\n this[ADDFSENTRY](path)\n return this.flowing\n }\n\n [ADDTARENTRY] (p) {\n const absolute = path.resolve(this.cwd, p.path)\n if (this.prefix)\n p.path = this.prefix + '/' + p.path.replace(/^\\.(\\/+|$)/, '')\n\n // in this case, we don't have to wait for the stat\n if (!this.filter(p.path, p))\n p.resume()\n else {\n const job = new PackJob(p.path, absolute, false)\n job.entry = new WriteEntryTar(p, this[ENTRYOPT](job))\n job.entry.on('end', _ => this[JOBDONE](job))\n this[JOBS] += 1\n this[QUEUE].push(job)\n }\n\n this[PROCESS]()\n }\n\n [ADDFSENTRY] (p) {\n const absolute = path.resolve(this.cwd, p)\n if (this.prefix)\n p = this.prefix + '/' + p.replace(/^\\.(\\/+|$)/, '')\n\n this[QUEUE].push(new PackJob(p, absolute))\n this[PROCESS]()\n }\n\n [STAT] (job) {\n job.pending = true\n this[JOBS] += 1\n const stat = this.follow ? 'stat' : 'lstat'\n fs[stat](job.absolute, (er, stat) => {\n job.pending = false\n this[JOBS] -= 1\n if (er)\n this.emit('error', er)\n else\n this[ONSTAT](job, stat)\n })\n }\n\n [ONSTAT] (job, stat) {\n this.statCache.set(job.absolute, stat)\n job.stat = stat\n\n // now we have the stat, we can filter it.\n if (!this.filter(job.path, stat))\n job.ignore = true\n\n this[PROCESS]()\n }\n\n [READDIR] (job) {\n job.pending = true\n this[JOBS] += 1\n fs.readdir(job.absolute, (er, entries) => {\n job.pending = false\n this[JOBS] -= 1\n if (er)\n return this.emit('error', er)\n this[ONREADDIR](job, entries)\n })\n }\n\n [ONREADDIR] (job, entries) {\n this.readdirCache.set(job.absolute, entries)\n job.readdir = entries\n this[PROCESS]()\n }\n\n [PROCESS] () {\n if (this[PROCESSING])\n return\n\n this[PROCESSING] = true\n for (let w = this[QUEUE].head;\n w !== null && this[JOBS] < this.jobs;\n w = w.next) {\n this[PROCESSJOB](w.value)\n if (w.value.ignore) {\n const p = w.next\n this[QUEUE].removeNode(w)\n w.next = p\n }\n }\n\n this[PROCESSING] = false\n\n if (this[ENDED] && !this[QUEUE].length && this[JOBS] === 0) {\n if (this.zip)\n this.zip.end(EOF)\n else {\n super.write(EOF)\n super.end()\n }\n }\n }\n\n get [CURRENT] () {\n return this[QUEUE] && this[QUEUE].head && this[QUEUE].head.value\n }\n\n [JOBDONE] (job) {\n this[QUEUE].shift()\n this[JOBS] -= 1\n this[PROCESS]()\n }\n\n [PROCESSJOB] (job) {\n if (job.pending)\n return\n\n if (job.entry) {\n if (job === this[CURRENT] && !job.piped)\n this[PIPE](job)\n return\n }\n\n if (!job.stat) {\n if (this.statCache.has(job.absolute))\n this[ONSTAT](job, this.statCache.get(job.absolute))\n else\n this[STAT](job)\n }\n if (!job.stat)\n return\n\n // filtered out!\n if (job.ignore)\n return\n\n if (!this.noDirRecurse && job.stat.isDirectory() && !job.readdir) {\n if (this.readdirCache.has(job.absolute))\n this[ONREADDIR](job, this.readdirCache.get(job.absolute))\n else\n this[READDIR](job)\n if (!job.readdir)\n return\n }\n\n // we know it doesn't have an entry, because that got checked above\n job.entry = this[ENTRY](job)\n if (!job.entry) {\n job.ignore = true\n return\n }\n\n if (job === this[CURRENT] && !job.piped)\n this[PIPE](job)\n }\n\n [ENTRYOPT] (job) {\n return {\n onwarn: (code, msg, data) => this.warn(code, msg, data),\n noPax: this.noPax,\n cwd: this.cwd,\n absolute: job.absolute,\n preservePaths: this.preservePaths,\n maxReadSize: this.maxReadSize,\n strict: this.strict,\n portable: this.portable,\n linkCache: this.linkCache,\n statCache: this.statCache,\n noMtime: this.noMtime,\n mtime: this.mtime,\n }\n }\n\n [ENTRY] (job) {\n this[JOBS] += 1\n try {\n return new this[WRITEENTRYCLASS](job.path, this[ENTRYOPT](job))\n .on('end', () => this[JOBDONE](job))\n .on('error', er => this.emit('error', er))\n } catch (er) {\n this.emit('error', er)\n }\n }\n\n [ONDRAIN] () {\n if (this[CURRENT] && this[CURRENT].entry)\n this[CURRENT].entry.resume()\n }\n\n // like .pipe() but using super, because our write() is special\n [PIPE] (job) {\n job.piped = true\n\n if (job.readdir) {\n job.readdir.forEach(entry => {\n const p = this.prefix ?\n job.path.slice(this.prefix.length + 1) || './'\n : job.path\n\n const base = p === './' ? '' : p.replace(/\\/*$/, '/')\n this[ADDFSENTRY](base + entry)\n })\n }\n\n const source = job.entry\n const zip = this.zip\n\n if (zip) {\n source.on('data', chunk => {\n if (!zip.write(chunk))\n source.pause()\n })\n } else {\n source.on('data', chunk => {\n if (!super.write(chunk))\n source.pause()\n })\n }\n }\n\n pause () {\n if (this.zip)\n this.zip.pause()\n return super.pause()\n }\n})\n\nclass PackSync extends Pack {\n constructor (opt) {\n super(opt)\n this[WRITEENTRYCLASS] = WriteEntrySync\n }\n\n // pause/resume are no-ops in sync streams.\n pause () {}\n resume () {}\n\n [STAT] (job) {\n const stat = this.follow ? 'statSync' : 'lstatSync'\n this[ONSTAT](job, fs[stat](job.absolute))\n }\n\n [READDIR] (job, stat) {\n this[ONREADDIR](job, fs.readdirSync(job.absolute))\n }\n\n // gotta get it all in this tick\n [PIPE] (job) {\n const source = job.entry\n const zip = this.zip\n\n if (job.readdir) {\n job.readdir.forEach(entry => {\n const p = this.prefix ?\n job.path.slice(this.prefix.length + 1) || './'\n : job.path\n\n const base = p === './' ? '' : p.replace(/\\/*$/, '/')\n this[ADDFSENTRY](base + entry)\n })\n }\n\n if (zip) {\n source.on('data', chunk => {\n zip.write(chunk)\n })\n } else {\n source.on('data', chunk => {\n super[WRITE](chunk)\n })\n }\n }\n}\n\nPack.Sync = PackSync\n\nmodule.exports = Pack\n", "'use strict'\nconst MiniPass = require('minipass')\nconst EE = require('events').EventEmitter\nconst fs = require('fs')\n\nlet writev = fs.writev\n/* istanbul ignore next */\nif (!writev) {\n // This entire block can be removed if support for earlier than Node.js\n // 12.9.0 is not needed.\n const binding = process.binding('fs')\n const FSReqWrap = binding.FSReqWrap || binding.FSReqCallback\n\n writev = (fd, iovec, pos, cb) => {\n const done = (er, bw) => cb(er, bw, iovec)\n const req = new FSReqWrap()\n req.oncomplete = done\n binding.writeBuffers(fd, iovec, pos, req)\n }\n}\n\nconst _autoClose = Symbol('_autoClose')\nconst _close = Symbol('_close')\nconst _ended = Symbol('_ended')\nconst _fd = Symbol('_fd')\nconst _finished = Symbol('_finished')\nconst _flags = Symbol('_flags')\nconst _flush = Symbol('_flush')\nconst _handleChunk = Symbol('_handleChunk')\nconst _makeBuf = Symbol('_makeBuf')\nconst _mode = Symbol('_mode')\nconst _needDrain = Symbol('_needDrain')\nconst _onerror = Symbol('_onerror')\nconst _onopen = Symbol('_onopen')\nconst _onread = Symbol('_onread')\nconst _onwrite = Symbol('_onwrite')\nconst _open = Symbol('_open')\nconst _path = Symbol('_path')\nconst _pos = Symbol('_pos')\nconst _queue = Symbol('_queue')\nconst _read = Symbol('_read')\nconst _readSize = Symbol('_readSize')\nconst _reading = Symbol('_reading')\nconst _remain = Symbol('_remain')\nconst _size = Symbol('_size')\nconst _write = Symbol('_write')\nconst _writing = Symbol('_writing')\nconst _defaultFlag = Symbol('_defaultFlag')\nconst _errored = Symbol('_errored')\n\nclass ReadStream extends MiniPass {\n constructor (path, opt) {\n opt = opt || {}\n super(opt)\n\n this.readable = true\n this.writable = false\n\n if (typeof path !== 'string')\n throw new TypeError('path must be a string')\n\n this[_errored] = false\n this[_fd] = typeof opt.fd === 'number' ? opt.fd : null\n this[_path] = path\n this[_readSize] = opt.readSize || 16*1024*1024\n this[_reading] = false\n this[_size] = typeof opt.size === 'number' ? opt.size : Infinity\n this[_remain] = this[_size]\n this[_autoClose] = typeof opt.autoClose === 'boolean' ?\n opt.autoClose : true\n\n if (typeof this[_fd] === 'number')\n this[_read]()\n else\n this[_open]()\n }\n\n get fd () { return this[_fd] }\n get path () { return this[_path] }\n\n write () {\n throw new TypeError('this is a readable stream')\n }\n\n end () {\n throw new TypeError('this is a readable stream')\n }\n\n [_open] () {\n fs.open(this[_path], 'r', (er, fd) => this[_onopen](er, fd))\n }\n\n [_onopen] (er, fd) {\n if (er)\n this[_onerror](er)\n else {\n this[_fd] = fd\n this.emit('open', fd)\n this[_read]()\n }\n }\n\n [_makeBuf] () {\n return Buffer.allocUnsafe(Math.min(this[_readSize], this[_remain]))\n }\n\n [_read] () {\n if (!this[_reading]) {\n this[_reading] = true\n const buf = this[_makeBuf]()\n /* istanbul ignore if */\n if (buf.length === 0)\n return process.nextTick(() => this[_onread](null, 0, buf))\n fs.read(this[_fd], buf, 0, buf.length, null, (er, br, buf) =>\n this[_onread](er, br, buf))\n }\n }\n\n [_onread] (er, br, buf) {\n this[_reading] = false\n if (er)\n this[_onerror](er)\n else if (this[_handleChunk](br, buf))\n this[_read]()\n }\n\n [_close] () {\n if (this[_autoClose] && typeof this[_fd] === 'number') {\n const fd = this[_fd]\n this[_fd] = null\n fs.close(fd, er => er ? this.emit('error', er) : this.emit('close'))\n }\n }\n\n [_onerror] (er) {\n this[_reading] = true\n this[_close]()\n this.emit('error', er)\n }\n\n [_handleChunk] (br, buf) {\n let ret = false\n // no effect if infinite\n this[_remain] -= br\n if (br > 0)\n ret = super.write(br < buf.length ? buf.slice(0, br) : buf)\n\n if (br === 0 || this[_remain] <= 0) {\n ret = false\n this[_close]()\n super.end()\n }\n\n return ret\n }\n\n emit (ev, data) {\n switch (ev) {\n case 'prefinish':\n case 'finish':\n break\n\n case 'drain':\n if (typeof this[_fd] === 'number')\n this[_read]()\n break\n\n case 'error':\n if (this[_errored])\n return\n this[_errored] = true\n return super.emit(ev, data)\n\n default:\n return super.emit(ev, data)\n }\n }\n}\n\nclass ReadStreamSync extends ReadStream {\n [_open] () {\n let threw = true\n try {\n this[_onopen](null, fs.openSync(this[_path], 'r'))\n threw = false\n } finally {\n if (threw)\n this[_close]()\n }\n }\n\n [_read] () {\n let threw = true\n try {\n if (!this[_reading]) {\n this[_reading] = true\n do {\n const buf = this[_makeBuf]()\n /* istanbul ignore next */\n const br = buf.length === 0 ? 0\n : fs.readSync(this[_fd], buf, 0, buf.length, null)\n if (!this[_handleChunk](br, buf))\n break\n } while (true)\n this[_reading] = false\n }\n threw = false\n } finally {\n if (threw)\n this[_close]()\n }\n }\n\n [_close] () {\n if (this[_autoClose] && typeof this[_fd] === 'number') {\n const fd = this[_fd]\n this[_fd] = null\n fs.closeSync(fd)\n this.emit('close')\n }\n }\n}\n\nclass WriteStream extends EE {\n constructor (path, opt) {\n opt = opt || {}\n super(opt)\n this.readable = false\n this.writable = true\n this[_errored] = false\n this[_writing] = false\n this[_ended] = false\n this[_needDrain] = false\n this[_queue] = []\n this[_path] = path\n this[_fd] = typeof opt.fd === 'number' ? opt.fd : null\n this[_mode] = opt.mode === undefined ? 0o666 : opt.mode\n this[_pos] = typeof opt.start === 'number' ? opt.start : null\n this[_autoClose] = typeof opt.autoClose === 'boolean' ?\n opt.autoClose : true\n\n // truncating makes no sense when writing into the middle\n const defaultFlag = this[_pos] !== null ? 'r+' : 'w'\n this[_defaultFlag] = opt.flags === undefined\n this[_flags] = this[_defaultFlag] ? defaultFlag : opt.flags\n\n if (this[_fd] === null)\n this[_open]()\n }\n\n emit (ev, data) {\n if (ev === 'error') {\n if (this[_errored])\n return\n this[_errored] = true\n }\n return super.emit(ev, data)\n }\n\n\n get fd () { return this[_fd] }\n get path () { return this[_path] }\n\n [_onerror] (er) {\n this[_close]()\n this[_writing] = true\n this.emit('error', er)\n }\n\n [_open] () {\n fs.open(this[_path], this[_flags], this[_mode],\n (er, fd) => this[_onopen](er, fd))\n }\n\n [_onopen] (er, fd) {\n if (this[_defaultFlag] &&\n this[_flags] === 'r+' &&\n er && er.code === 'ENOENT') {\n this[_flags] = 'w'\n this[_open]()\n } else if (er)\n this[_onerror](er)\n else {\n this[_fd] = fd\n this.emit('open', fd)\n this[_flush]()\n }\n }\n\n end (buf, enc) {\n if (buf)\n this.write(buf, enc)\n\n this[_ended] = true\n\n // synthetic after-write logic, where drain/finish live\n if (!this[_writing] && !this[_queue].length &&\n typeof this[_fd] === 'number')\n this[_onwrite](null, 0)\n return this\n }\n\n write (buf, enc) {\n if (typeof buf === 'string')\n buf = Buffer.from(buf, enc)\n\n if (this[_ended]) {\n this.emit('error', new Error('write() after end()'))\n return false\n }\n\n if (this[_fd] === null || this[_writing] || this[_queue].length) {\n this[_queue].push(buf)\n this[_needDrain] = true\n return false\n }\n\n this[_writing] = true\n this[_write](buf)\n return true\n }\n\n [_write] (buf) {\n fs.write(this[_fd], buf, 0, buf.length, this[_pos], (er, bw) =>\n this[_onwrite](er, bw))\n }\n\n [_onwrite] (er, bw) {\n if (er)\n this[_onerror](er)\n else {\n if (this[_pos] !== null)\n this[_pos] += bw\n if (this[_queue].length)\n this[_flush]()\n else {\n this[_writing] = false\n\n if (this[_ended] && !this[_finished]) {\n this[_finished] = true\n this[_close]()\n this.emit('finish')\n } else if (this[_needDrain]) {\n this[_needDrain] = false\n this.emit('drain')\n }\n }\n }\n }\n\n [_flush] () {\n if (this[_queue].length === 0) {\n if (this[_ended])\n this[_onwrite](null, 0)\n } else if (this[_queue].length === 1)\n this[_write](this[_queue].pop())\n else {\n const iovec = this[_queue]\n this[_queue] = []\n writev(this[_fd], iovec, this[_pos],\n (er, bw) => this[_onwrite](er, bw))\n }\n }\n\n [_close] () {\n if (this[_autoClose] && typeof this[_fd] === 'number') {\n const fd = this[_fd]\n this[_fd] = null\n fs.close(fd, er => er ? this.emit('error', er) : this.emit('close'))\n }\n }\n}\n\nclass WriteStreamSync extends WriteStream {\n [_open] () {\n let fd\n // only wrap in a try{} block if we know we'll retry, to avoid\n // the rethrow obscuring the error's source frame in most cases.\n if (this[_defaultFlag] && this[_flags] === 'r+') {\n try {\n fd = fs.openSync(this[_path], this[_flags], this[_mode])\n } catch (er) {\n if (er.code === 'ENOENT') {\n this[_flags] = 'w'\n return this[_open]()\n } else\n throw er\n }\n } else\n fd = fs.openSync(this[_path], this[_flags], this[_mode])\n\n this[_onopen](null, fd)\n }\n\n [_close] () {\n if (this[_autoClose] && typeof this[_fd] === 'number') {\n const fd = this[_fd]\n this[_fd] = null\n fs.closeSync(fd)\n this.emit('close')\n }\n }\n\n [_write] (buf) {\n // throw the original, but try to close if it fails\n let threw = true\n try {\n this[_onwrite](null,\n fs.writeSync(this[_fd], buf, 0, buf.length, this[_pos]))\n threw = false\n } finally {\n if (threw)\n try { this[_close]() } catch (_) {}\n }\n }\n}\n\nexports.ReadStream = ReadStream\nexports.ReadStreamSync = ReadStreamSync\n\nexports.WriteStream = WriteStream\nexports.WriteStreamSync = WriteStreamSync\n", "'use strict'\n\n// this[BUFFER] is the remainder of a chunk if we're waiting for\n// the full 512 bytes of a header to come in. We will Buffer.concat()\n// it to the next write(), which is a mem copy, but a small one.\n//\n// this[QUEUE] is a Yallist of entries that haven't been emitted\n// yet this can only get filled up if the user keeps write()ing after\n// a write() returns false, or does a write() with more than one entry\n//\n// We don't buffer chunks, we always parse them and either create an\n// entry, or push it into the active entry. The ReadEntry class knows\n// to throw data away if .ignore=true\n//\n// Shift entry off the buffer when it emits 'end', and emit 'entry' for\n// the next one in the list.\n//\n// At any time, we're pushing body chunks into the entry at WRITEENTRY,\n// and waiting for 'end' on the entry at READENTRY\n//\n// ignored entries get .resume() called on them straight away\n\nconst warner = require('./warn-mixin.js')\nconst Header = require('./header.js')\nconst EE = require('events')\nconst Yallist = require('yallist')\nconst maxMetaEntrySize = 1024 * 1024\nconst Entry = require('./read-entry.js')\nconst Pax = require('./pax.js')\nconst zlib = require('minizlib')\n\nconst gzipHeader = Buffer.from([0x1f, 0x8b])\nconst STATE = Symbol('state')\nconst WRITEENTRY = Symbol('writeEntry')\nconst READENTRY = Symbol('readEntry')\nconst NEXTENTRY = Symbol('nextEntry')\nconst PROCESSENTRY = Symbol('processEntry')\nconst EX = Symbol('extendedHeader')\nconst GEX = Symbol('globalExtendedHeader')\nconst META = Symbol('meta')\nconst EMITMETA = Symbol('emitMeta')\nconst BUFFER = Symbol('buffer')\nconst QUEUE = Symbol('queue')\nconst ENDED = Symbol('ended')\nconst EMITTEDEND = Symbol('emittedEnd')\nconst EMIT = Symbol('emit')\nconst UNZIP = Symbol('unzip')\nconst CONSUMECHUNK = Symbol('consumeChunk')\nconst CONSUMECHUNKSUB = Symbol('consumeChunkSub')\nconst CONSUMEBODY = Symbol('consumeBody')\nconst CONSUMEMETA = Symbol('consumeMeta')\nconst CONSUMEHEADER = Symbol('consumeHeader')\nconst CONSUMING = Symbol('consuming')\nconst BUFFERCONCAT = Symbol('bufferConcat')\nconst MAYBEEND = Symbol('maybeEnd')\nconst WRITING = Symbol('writing')\nconst ABORTED = Symbol('aborted')\nconst DONE = Symbol('onDone')\nconst SAW_VALID_ENTRY = Symbol('sawValidEntry')\nconst SAW_NULL_BLOCK = Symbol('sawNullBlock')\nconst SAW_EOF = Symbol('sawEOF')\n\nconst noop = _ => true\n\nmodule.exports = warner(class Parser extends EE {\n constructor (opt) {\n opt = opt || {}\n super(opt)\n\n this.file = opt.file || ''\n\n // set to boolean false when an entry starts. 1024 bytes of \\0\n // is technically a valid tarball, albeit a boring one.\n this[SAW_VALID_ENTRY] = null\n\n // these BADARCHIVE errors can't be detected early. listen on DONE.\n this.on(DONE, _ => {\n if (this[STATE] === 'begin' || this[SAW_VALID_ENTRY] === false) {\n // either less than 1 block of data, or all entries were invalid.\n // Either way, probably not even a tarball.\n this.warn('TAR_BAD_ARCHIVE', 'Unrecognized archive format')\n }\n })\n\n if (opt.ondone)\n this.on(DONE, opt.ondone)\n else {\n this.on(DONE, _ => {\n this.emit('prefinish')\n this.emit('finish')\n this.emit('end')\n this.emit('close')\n })\n }\n\n this.strict = !!opt.strict\n this.maxMetaEntrySize = opt.maxMetaEntrySize || maxMetaEntrySize\n this.filter = typeof opt.filter === 'function' ? opt.filter : noop\n\n // have to set this so that streams are ok piping into it\n this.writable = true\n this.readable = false\n\n this[QUEUE] = new Yallist()\n this[BUFFER] = null\n this[READENTRY] = null\n this[WRITEENTRY] = null\n this[STATE] = 'begin'\n this[META] = ''\n this[EX] = null\n this[GEX] = null\n this[ENDED] = false\n this[UNZIP] = null\n this[ABORTED] = false\n this[SAW_NULL_BLOCK] = false\n this[SAW_EOF] = false\n if (typeof opt.onwarn === 'function')\n this.on('warn', opt.onwarn)\n if (typeof opt.onentry === 'function')\n this.on('entry', opt.onentry)\n }\n\n [CONSUMEHEADER] (chunk, position) {\n if (this[SAW_VALID_ENTRY] === null)\n this[SAW_VALID_ENTRY] = false\n let header\n try {\n header = new Header(chunk, position, this[EX], this[GEX])\n } catch (er) {\n return this.warn('TAR_ENTRY_INVALID', er)\n }\n\n if (header.nullBlock) {\n if (this[SAW_NULL_BLOCK]) {\n this[SAW_EOF] = true\n // ending an archive with no entries. pointless, but legal.\n if (this[STATE] === 'begin')\n this[STATE] = 'header'\n this[EMIT]('eof')\n } else {\n this[SAW_NULL_BLOCK] = true\n this[EMIT]('nullBlock')\n }\n } else {\n this[SAW_NULL_BLOCK] = false\n if (!header.cksumValid)\n this.warn('TAR_ENTRY_INVALID', 'checksum failure', {header})\n else if (!header.path)\n this.warn('TAR_ENTRY_INVALID', 'path is required', {header})\n else {\n const type = header.type\n if (/^(Symbolic)?Link$/.test(type) && !header.linkpath)\n this.warn('TAR_ENTRY_INVALID', 'linkpath required', {header})\n else if (!/^(Symbolic)?Link$/.test(type) && header.linkpath)\n this.warn('TAR_ENTRY_INVALID', 'linkpath forbidden', {header})\n else {\n const entry = this[WRITEENTRY] = new Entry(header, this[EX], this[GEX])\n\n // we do this for meta & ignored entries as well, because they\n // are still valid tar, or else we wouldn't know to ignore them\n if (!this[SAW_VALID_ENTRY]) {\n if (entry.remain) {\n // this might be the one!\n const onend = () => {\n if (!entry.invalid)\n this[SAW_VALID_ENTRY] = true\n }\n entry.on('end', onend)\n } else\n this[SAW_VALID_ENTRY] = true\n }\n\n if (entry.meta) {\n if (entry.size > this.maxMetaEntrySize) {\n entry.ignore = true\n this[EMIT]('ignoredEntry', entry)\n this[STATE] = 'ignore'\n entry.resume()\n } else if (entry.size > 0) {\n this[META] = ''\n entry.on('data', c => this[META] += c)\n this[STATE] = 'meta'\n }\n } else {\n this[EX] = null\n entry.ignore = entry.ignore || !this.filter(entry.path, entry)\n\n if (entry.ignore) {\n // probably valid, just not something we care about\n this[EMIT]('ignoredEntry', entry)\n this[STATE] = entry.remain ? 'ignore' : 'header'\n entry.resume()\n } else {\n if (entry.remain)\n this[STATE] = 'body'\n else {\n this[STATE] = 'header'\n entry.end()\n }\n\n if (!this[READENTRY]) {\n this[QUEUE].push(entry)\n this[NEXTENTRY]()\n } else\n this[QUEUE].push(entry)\n }\n }\n }\n }\n }\n }\n\n [PROCESSENTRY] (entry) {\n let go = true\n\n if (!entry) {\n this[READENTRY] = null\n go = false\n } else if (Array.isArray(entry))\n this.emit.apply(this, entry)\n else {\n this[READENTRY] = entry\n this.emit('entry', entry)\n if (!entry.emittedEnd) {\n entry.on('end', _ => this[NEXTENTRY]())\n go = false\n }\n }\n\n return go\n }\n\n [NEXTENTRY] () {\n do {} while (this[PROCESSENTRY](this[QUEUE].shift()))\n\n if (!this[QUEUE].length) {\n // At this point, there's nothing in the queue, but we may have an\n // entry which is being consumed (readEntry).\n // If we don't, then we definitely can handle more data.\n // If we do, and either it's flowing, or it has never had any data\n // written to it, then it needs more.\n // The only other possibility is that it has returned false from a\n // write() call, so we wait for the next drain to continue.\n const re = this[READENTRY]\n const drainNow = !re || re.flowing || re.size === re.remain\n if (drainNow) {\n if (!this[WRITING])\n this.emit('drain')\n } else\n re.once('drain', _ => this.emit('drain'))\n }\n }\n\n [CONSUMEBODY] (chunk, position) {\n // write up to but no more than writeEntry.blockRemain\n const entry = this[WRITEENTRY]\n const br = entry.blockRemain\n const c = (br >= chunk.length && position === 0) ? chunk\n : chunk.slice(position, position + br)\n\n entry.write(c)\n\n if (!entry.blockRemain) {\n this[STATE] = 'header'\n this[WRITEENTRY] = null\n entry.end()\n }\n\n return c.length\n }\n\n [CONSUMEMETA] (chunk, position) {\n const entry = this[WRITEENTRY]\n const ret = this[CONSUMEBODY](chunk, position)\n\n // if we finished, then the entry is reset\n if (!this[WRITEENTRY])\n this[EMITMETA](entry)\n\n return ret\n }\n\n [EMIT] (ev, data, extra) {\n if (!this[QUEUE].length && !this[READENTRY])\n this.emit(ev, data, extra)\n else\n this[QUEUE].push([ev, data, extra])\n }\n\n [EMITMETA] (entry) {\n this[EMIT]('meta', this[META])\n switch (entry.type) {\n case 'ExtendedHeader':\n case 'OldExtendedHeader':\n this[EX] = Pax.parse(this[META], this[EX], false)\n break\n\n case 'GlobalExtendedHeader':\n this[GEX] = Pax.parse(this[META], this[GEX], true)\n break\n\n case 'NextFileHasLongPath':\n case 'OldGnuLongPath':\n this[EX] = this[EX] || Object.create(null)\n this[EX].path = this[META].replace(/\\0.*/, '')\n break\n\n case 'NextFileHasLongLinkpath':\n this[EX] = this[EX] || Object.create(null)\n this[EX].linkpath = this[META].replace(/\\0.*/, '')\n break\n\n /* istanbul ignore next */\n default: throw new Error('unknown meta: ' + entry.type)\n }\n }\n\n abort (error) {\n this[ABORTED] = true\n this.emit('abort', error)\n // always throws, even in non-strict mode\n this.warn('TAR_ABORT', error, { recoverable: false })\n }\n\n write (chunk) {\n if (this[ABORTED])\n return\n\n // first write, might be gzipped\n if (this[UNZIP] === null && chunk) {\n if (this[BUFFER]) {\n chunk = Buffer.concat([this[BUFFER], chunk])\n this[BUFFER] = null\n }\n if (chunk.length < gzipHeader.length) {\n this[BUFFER] = chunk\n return true\n }\n for (let i = 0; this[UNZIP] === null && i < gzipHeader.length; i++) {\n if (chunk[i] !== gzipHeader[i])\n this[UNZIP] = false\n }\n if (this[UNZIP] === null) {\n const ended = this[ENDED]\n this[ENDED] = false\n this[UNZIP] = new zlib.Unzip()\n this[UNZIP].on('data', chunk => this[CONSUMECHUNK](chunk))\n this[UNZIP].on('error', er => this.abort(er))\n this[UNZIP].on('end', _ => {\n this[ENDED] = true\n this[CONSUMECHUNK]()\n })\n this[WRITING] = true\n const ret = this[UNZIP][ended ? 'end' : 'write'](chunk)\n this[WRITING] = false\n return ret\n }\n }\n\n this[WRITING] = true\n if (this[UNZIP])\n this[UNZIP].write(chunk)\n else\n this[CONSUMECHUNK](chunk)\n this[WRITING] = false\n\n // return false if there's a queue, or if the current entry isn't flowing\n const ret =\n this[QUEUE].length ? false :\n this[READENTRY] ? this[READENTRY].flowing :\n true\n\n // if we have no queue, then that means a clogged READENTRY\n if (!ret && !this[QUEUE].length)\n this[READENTRY].once('drain', _ => this.emit('drain'))\n\n return ret\n }\n\n [BUFFERCONCAT] (c) {\n if (c && !this[ABORTED])\n this[BUFFER] = this[BUFFER] ? Buffer.concat([this[BUFFER], c]) : c\n }\n\n [MAYBEEND] () {\n if (this[ENDED] &&\n !this[EMITTEDEND] &&\n !this[ABORTED] &&\n !this[CONSUMING]) {\n this[EMITTEDEND] = true\n const entry = this[WRITEENTRY]\n if (entry && entry.blockRemain) {\n // truncated, likely a damaged file\n const have = this[BUFFER] ? this[BUFFER].length : 0\n this.warn('TAR_BAD_ARCHIVE', `Truncated input (needed ${\n entry.blockRemain} more bytes, only ${have} available)`, {entry})\n if (this[BUFFER])\n entry.write(this[BUFFER])\n entry.end()\n }\n this[EMIT](DONE)\n }\n }\n\n [CONSUMECHUNK] (chunk) {\n if (this[CONSUMING])\n this[BUFFERCONCAT](chunk)\n else if (!chunk && !this[BUFFER])\n this[MAYBEEND]()\n else {\n this[CONSUMING] = true\n if (this[BUFFER]) {\n this[BUFFERCONCAT](chunk)\n const c = this[BUFFER]\n this[BUFFER] = null\n this[CONSUMECHUNKSUB](c)\n } else\n this[CONSUMECHUNKSUB](chunk)\n\n while (this[BUFFER] &&\n this[BUFFER].length >= 512 &&\n !this[ABORTED] &&\n !this[SAW_EOF]) {\n const c = this[BUFFER]\n this[BUFFER] = null\n this[CONSUMECHUNKSUB](c)\n }\n this[CONSUMING] = false\n }\n\n if (!this[BUFFER] || this[ENDED])\n this[MAYBEEND]()\n }\n\n [CONSUMECHUNKSUB] (chunk) {\n // we know that we are in CONSUMING mode, so anything written goes into\n // the buffer. Advance the position and put any remainder in the buffer.\n let position = 0\n const length = chunk.length\n while (position + 512 <= length && !this[ABORTED] && !this[SAW_EOF]) {\n switch (this[STATE]) {\n case 'begin':\n case 'header':\n this[CONSUMEHEADER](chunk, position)\n position += 512\n break\n\n case 'ignore':\n case 'body':\n position += this[CONSUMEBODY](chunk, position)\n break\n\n case 'meta':\n position += this[CONSUMEMETA](chunk, position)\n break\n\n /* istanbul ignore next */\n default:\n throw new Error('invalid state: ' + this[STATE])\n }\n }\n\n if (position < length) {\n if (this[BUFFER])\n this[BUFFER] = Buffer.concat([chunk.slice(position), this[BUFFER]])\n else\n this[BUFFER] = chunk.slice(position)\n }\n }\n\n end (chunk) {\n if (!this[ABORTED]) {\n if (this[UNZIP])\n this[UNZIP].end(chunk)\n else {\n this[ENDED] = true\n this.write(chunk)\n }\n }\n }\n})\n", "'use strict'\n\n// XXX: This shares a lot in common with extract.js\n// maybe some DRY opportunity here?\n\n// tar -t\nconst hlo = require('./high-level-opt.js')\nconst Parser = require('./parse.js')\nconst fs = require('fs')\nconst fsm = require('fs-minipass')\nconst path = require('path')\n\nmodule.exports = (opt_, files, cb) => {\n if (typeof opt_ === 'function')\n cb = opt_, files = null, opt_ = {}\n else if (Array.isArray(opt_))\n files = opt_, opt_ = {}\n\n if (typeof files === 'function')\n cb = files, files = null\n\n if (!files)\n files = []\n else\n files = Array.from(files)\n\n const opt = hlo(opt_)\n\n if (opt.sync && typeof cb === 'function')\n throw new TypeError('callback not supported for sync tar functions')\n\n if (!opt.file && typeof cb === 'function')\n throw new TypeError('callback only supported with file option')\n\n if (files.length)\n filesFilter(opt, files)\n\n if (!opt.noResume)\n onentryFunction(opt)\n\n return opt.file && opt.sync ? listFileSync(opt)\n : opt.file ? listFile(opt, cb)\n : list(opt)\n}\n\nconst onentryFunction = opt => {\n const onentry = opt.onentry\n opt.onentry = onentry ? e => {\n onentry(e)\n e.resume()\n } : e => e.resume()\n}\n\n// construct a filter that limits the file entries listed\n// include child entries if a dir is included\nconst filesFilter = (opt, files) => {\n const map = new Map(files.map(f => [f.replace(/\\/+$/, ''), true]))\n const filter = opt.filter\n\n const mapHas = (file, r) => {\n const root = r || path.parse(file).root || '.'\n const ret = file === root ? false\n : map.has(file) ? map.get(file)\n : mapHas(path.dirname(file), root)\n\n map.set(file, ret)\n return ret\n }\n\n opt.filter = filter\n ? (file, entry) => filter(file, entry) && mapHas(file.replace(/\\/+$/, ''))\n : file => mapHas(file.replace(/\\/+$/, ''))\n}\n\nconst listFileSync = opt => {\n const p = list(opt)\n const file = opt.file\n let threw = true\n let fd\n try {\n const stat = fs.statSync(file)\n const readSize = opt.maxReadSize || 16 * 1024 * 1024\n if (stat.size < readSize)\n p.end(fs.readFileSync(file))\n else {\n let pos = 0\n const buf = Buffer.allocUnsafe(readSize)\n fd = fs.openSync(file, 'r')\n while (pos < stat.size) {\n const bytesRead = fs.readSync(fd, buf, 0, readSize, pos)\n pos += bytesRead\n p.write(buf.slice(0, bytesRead))\n }\n p.end()\n }\n threw = false\n } finally {\n if (threw && fd) {\n try {\n fs.closeSync(fd)\n } catch (er) {}\n }\n }\n}\n\nconst listFile = (opt, cb) => {\n const parse = new Parser(opt)\n const readSize = opt.maxReadSize || 16 * 1024 * 1024\n\n const file = opt.file\n const p = new Promise((resolve, reject) => {\n parse.on('error', reject)\n parse.on('end', resolve)\n\n fs.stat(file, (er, stat) => {\n if (er)\n reject(er)\n else {\n const stream = new fsm.ReadStream(file, {\n readSize: readSize,\n size: stat.size,\n })\n stream.on('error', reject)\n stream.pipe(parse)\n }\n })\n })\n return cb ? p.then(cb, cb) : p\n}\n\nconst list = opt => new Parser(opt)\n", "'use strict'\n\n// tar -c\nconst hlo = require('./high-level-opt.js')\n\nconst Pack = require('./pack.js')\nconst fsm = require('fs-minipass')\nconst t = require('./list.js')\nconst path = require('path')\n\nmodule.exports = (opt_, files, cb) => {\n if (typeof files === 'function')\n cb = files\n\n if (Array.isArray(opt_))\n files = opt_, opt_ = {}\n\n if (!files || !Array.isArray(files) || !files.length)\n throw new TypeError('no files or directories specified')\n\n files = Array.from(files)\n\n const opt = hlo(opt_)\n\n if (opt.sync && typeof cb === 'function')\n throw new TypeError('callback not supported for sync tar functions')\n\n if (!opt.file && typeof cb === 'function')\n throw new TypeError('callback only supported with file option')\n\n return opt.file && opt.sync ? createFileSync(opt, files)\n : opt.file ? createFile(opt, files, cb)\n : opt.sync ? createSync(opt, files)\n : create(opt, files)\n}\n\nconst createFileSync = (opt, files) => {\n const p = new Pack.Sync(opt)\n const stream = new fsm.WriteStreamSync(opt.file, {\n mode: opt.mode || 0o666,\n })\n p.pipe(stream)\n addFilesSync(p, files)\n}\n\nconst createFile = (opt, files, cb) => {\n const p = new Pack(opt)\n const stream = new fsm.WriteStream(opt.file, {\n mode: opt.mode || 0o666,\n })\n p.pipe(stream)\n\n const promise = new Promise((res, rej) => {\n stream.on('error', rej)\n stream.on('close', res)\n p.on('error', rej)\n })\n\n addFilesAsync(p, files)\n\n return cb ? promise.then(cb, cb) : promise\n}\n\nconst addFilesSync = (p, files) => {\n files.forEach(file => {\n if (file.charAt(0) === '@') {\n t({\n file: path.resolve(p.cwd, file.substr(1)),\n sync: true,\n noResume: true,\n onentry: entry => p.add(entry),\n })\n } else\n p.add(file)\n })\n p.end()\n}\n\nconst addFilesAsync = (p, files) => {\n while (files.length) {\n const file = files.shift()\n if (file.charAt(0) === '@') {\n return t({\n file: path.resolve(p.cwd, file.substr(1)),\n noResume: true,\n onentry: entry => p.add(entry),\n }).then(_ => addFilesAsync(p, files))\n } else\n p.add(file)\n }\n p.end()\n}\n\nconst createSync = (opt, files) => {\n const p = new Pack.Sync(opt)\n addFilesSync(p, files)\n return p\n}\n\nconst create = (opt, files) => {\n const p = new Pack(opt)\n addFilesAsync(p, files)\n return p\n}\n", "'use strict'\n\n// tar -r\nconst hlo = require('./high-level-opt.js')\nconst Pack = require('./pack.js')\nconst fs = require('fs')\nconst fsm = require('fs-minipass')\nconst t = require('./list.js')\nconst path = require('path')\n\n// starting at the head of the file, read a Header\n// If the checksum is invalid, that's our position to start writing\n// If it is, jump forward by the specified size (round up to 512)\n// and try again.\n// Write the new Pack stream starting there.\n\nconst Header = require('./header.js')\n\nmodule.exports = (opt_, files, cb) => {\n const opt = hlo(opt_)\n\n if (!opt.file)\n throw new TypeError('file is required')\n\n if (opt.gzip)\n throw new TypeError('cannot append to compressed archives')\n\n if (!files || !Array.isArray(files) || !files.length)\n throw new TypeError('no files or directories specified')\n\n files = Array.from(files)\n\n return opt.sync ? replaceSync(opt, files)\n : replace(opt, files, cb)\n}\n\nconst replaceSync = (opt, files) => {\n const p = new Pack.Sync(opt)\n\n let threw = true\n let fd\n let position\n\n try {\n try {\n fd = fs.openSync(opt.file, 'r+')\n } catch (er) {\n if (er.code === 'ENOENT')\n fd = fs.openSync(opt.file, 'w+')\n else\n throw er\n }\n\n const st = fs.fstatSync(fd)\n const headBuf = Buffer.alloc(512)\n\n POSITION: for (position = 0; position < st.size; position += 512) {\n for (let bufPos = 0, bytes = 0; bufPos < 512; bufPos += bytes) {\n bytes = fs.readSync(\n fd, headBuf, bufPos, headBuf.length - bufPos, position + bufPos\n )\n\n if (position === 0 && headBuf[0] === 0x1f && headBuf[1] === 0x8b)\n throw new Error('cannot append to compressed archives')\n\n if (!bytes)\n break POSITION\n }\n\n const h = new Header(headBuf)\n if (!h.cksumValid)\n break\n const entryBlockSize = 512 * Math.ceil(h.size / 512)\n if (position + entryBlockSize + 512 > st.size)\n break\n // the 512 for the header we just parsed will be added as well\n // also jump ahead all the blocks for the body\n position += entryBlockSize\n if (opt.mtimeCache)\n opt.mtimeCache.set(h.path, h.mtime)\n }\n threw = false\n\n streamSync(opt, p, position, fd, files)\n } finally {\n if (threw) {\n try {\n fs.closeSync(fd)\n } catch (er) {}\n }\n }\n}\n\nconst streamSync = (opt, p, position, fd, files) => {\n const stream = new fsm.WriteStreamSync(opt.file, {\n fd: fd,\n start: position,\n })\n p.pipe(stream)\n addFilesSync(p, files)\n}\n\nconst replace = (opt, files, cb) => {\n files = Array.from(files)\n const p = new Pack(opt)\n\n const getPos = (fd, size, cb_) => {\n const cb = (er, pos) => {\n if (er)\n fs.close(fd, _ => cb_(er))\n else\n cb_(null, pos)\n }\n\n let position = 0\n if (size === 0)\n return cb(null, 0)\n\n let bufPos = 0\n const headBuf = Buffer.alloc(512)\n const onread = (er, bytes) => {\n if (er)\n return cb(er)\n bufPos += bytes\n if (bufPos < 512 && bytes) {\n return fs.read(\n fd, headBuf, bufPos, headBuf.length - bufPos,\n position + bufPos, onread\n )\n }\n\n if (position === 0 && headBuf[0] === 0x1f && headBuf[1] === 0x8b)\n return cb(new Error('cannot append to compressed archives'))\n\n // truncated header\n if (bufPos < 512)\n return cb(null, position)\n\n const h = new Header(headBuf)\n if (!h.cksumValid)\n return cb(null, position)\n\n const entryBlockSize = 512 * Math.ceil(h.size / 512)\n if (position + entryBlockSize + 512 > size)\n return cb(null, position)\n\n position += entryBlockSize + 512\n if (position >= size)\n return cb(null, position)\n\n if (opt.mtimeCache)\n opt.mtimeCache.set(h.path, h.mtime)\n bufPos = 0\n fs.read(fd, headBuf, 0, 512, position, onread)\n }\n fs.read(fd, headBuf, 0, 512, position, onread)\n }\n\n const promise = new Promise((resolve, reject) => {\n p.on('error', reject)\n let flag = 'r+'\n const onopen = (er, fd) => {\n if (er && er.code === 'ENOENT' && flag === 'r+') {\n flag = 'w+'\n return fs.open(opt.file, flag, onopen)\n }\n\n if (er)\n return reject(er)\n\n fs.fstat(fd, (er, st) => {\n if (er)\n return reject(er)\n getPos(fd, st.size, (er, position) => {\n if (er)\n return reject(er)\n const stream = new fsm.WriteStream(opt.file, {\n fd: fd,\n start: position,\n })\n p.pipe(stream)\n stream.on('error', reject)\n stream.on('close', resolve)\n addFilesAsync(p, files)\n })\n })\n }\n fs.open(opt.file, flag, onopen)\n })\n\n return cb ? promise.then(cb, cb) : promise\n}\n\nconst addFilesSync = (p, files) => {\n files.forEach(file => {\n if (file.charAt(0) === '@') {\n t({\n file: path.resolve(p.cwd, file.substr(1)),\n sync: true,\n noResume: true,\n onentry: entry => p.add(entry),\n })\n } else\n p.add(file)\n })\n p.end()\n}\n\nconst addFilesAsync = (p, files) => {\n while (files.length) {\n const file = files.shift()\n if (file.charAt(0) === '@') {\n return t({\n file: path.resolve(p.cwd, file.substr(1)),\n noResume: true,\n onentry: entry => p.add(entry),\n }).then(_ => addFilesAsync(p, files))\n } else\n p.add(file)\n }\n p.end()\n}\n", "'use strict'\n\n// tar -u\n\nconst hlo = require('./high-level-opt.js')\nconst r = require('./replace.js')\n// just call tar.r with the filter and mtimeCache\n\nmodule.exports = (opt_, files, cb) => {\n const opt = hlo(opt_)\n\n if (!opt.file)\n throw new TypeError('file is required')\n\n if (opt.gzip)\n throw new TypeError('cannot append to compressed archives')\n\n if (!files || !Array.isArray(files) || !files.length)\n throw new TypeError('no files or directories specified')\n\n files = Array.from(files)\n\n mtimeFilter(opt)\n return r(opt, files, cb)\n}\n\nconst mtimeFilter = opt => {\n const filter = opt.filter\n\n if (!opt.mtimeCache)\n opt.mtimeCache = new Map()\n\n opt.filter = filter ? (path, stat) =>\n filter(path, stat) && !(opt.mtimeCache.get(path) > stat.mtime)\n : (path, stat) => !(opt.mtimeCache.get(path) > stat.mtime)\n}\n", "const { promisify } = require('util')\nconst fs = require('fs')\nconst optsArg = opts => {\n if (!opts)\n opts = { mode: 0o777, fs }\n else if (typeof opts === 'object')\n opts = { mode: 0o777, fs, ...opts }\n else if (typeof opts === 'number')\n opts = { mode: opts, fs }\n else if (typeof opts === 'string')\n opts = { mode: parseInt(opts, 8), fs }\n else\n throw new TypeError('invalid options argument')\n\n opts.mkdir = opts.mkdir || opts.fs.mkdir || fs.mkdir\n opts.mkdirAsync = promisify(opts.mkdir)\n opts.stat = opts.stat || opts.fs.stat || fs.stat\n opts.statAsync = promisify(opts.stat)\n opts.statSync = opts.statSync || opts.fs.statSync || fs.statSync\n opts.mkdirSync = opts.mkdirSync || opts.fs.mkdirSync || fs.mkdirSync\n return opts\n}\nmodule.exports = optsArg\n", "const platform = process.env.__TESTING_MKDIRP_PLATFORM__ || process.platform\nconst { resolve, parse } = require('path')\nconst pathArg = path => {\n if (/\\0/.test(path)) {\n // simulate same failure that node raises\n throw Object.assign(\n new TypeError('path must be a string without null bytes'),\n {\n path,\n code: 'ERR_INVALID_ARG_VALUE',\n }\n )\n }\n\n path = resolve(path)\n if (platform === 'win32') {\n const badWinChars = /[*|\"<>?:]/\n const {root} = parse(path)\n if (badWinChars.test(path.substr(root.length))) {\n throw Object.assign(new Error('Illegal characters in path.'), {\n path,\n code: 'EINVAL',\n })\n }\n }\n\n return path\n}\nmodule.exports = pathArg\n", "const {dirname} = require('path')\n\nconst findMade = (opts, parent, path = undefined) => {\n // we never want the 'made' return value to be a root directory\n if (path === parent)\n return Promise.resolve()\n\n return opts.statAsync(parent).then(\n st => st.isDirectory() ? path : undefined, // will fail later\n er => er.code === 'ENOENT'\n ? findMade(opts, dirname(parent), parent)\n : undefined\n )\n}\n\nconst findMadeSync = (opts, parent, path = undefined) => {\n if (path === parent)\n return undefined\n\n try {\n return opts.statSync(parent).isDirectory() ? path : undefined\n } catch (er) {\n return er.code === 'ENOENT'\n ? findMadeSync(opts, dirname(parent), parent)\n : undefined\n }\n}\n\nmodule.exports = {findMade, findMadeSync}\n", "const {dirname} = require('path')\n\nconst mkdirpManual = (path, opts, made) => {\n opts.recursive = false\n const parent = dirname(path)\n if (parent === path) {\n return opts.mkdirAsync(path, opts).catch(er => {\n // swallowed by recursive implementation on posix systems\n // any other error is a failure\n if (er.code !== 'EISDIR')\n throw er\n })\n }\n\n return opts.mkdirAsync(path, opts).then(() => made || path, er => {\n if (er.code === 'ENOENT')\n return mkdirpManual(parent, opts)\n .then(made => mkdirpManual(path, opts, made))\n if (er.code !== 'EEXIST' && er.code !== 'EROFS')\n throw er\n return opts.statAsync(path).then(st => {\n if (st.isDirectory())\n return made\n else\n throw er\n }, () => { throw er })\n })\n}\n\nconst mkdirpManualSync = (path, opts, made) => {\n const parent = dirname(path)\n opts.recursive = false\n\n if (parent === path) {\n try {\n return opts.mkdirSync(path, opts)\n } catch (er) {\n // swallowed by recursive implementation on posix systems\n // any other error is a failure\n if (er.code !== 'EISDIR')\n throw er\n else\n return\n }\n }\n\n try {\n opts.mkdirSync(path, opts)\n return made || path\n } catch (er) {\n if (er.code === 'ENOENT')\n return mkdirpManualSync(path, opts, mkdirpManualSync(parent, opts, made))\n if (er.code !== 'EEXIST' && er.code !== 'EROFS')\n throw er\n try {\n if (!opts.statSync(path).isDirectory())\n throw er\n } catch (_) {\n throw er\n }\n }\n}\n\nmodule.exports = {mkdirpManual, mkdirpManualSync}\n", "const {dirname} = require('path')\nconst {findMade, findMadeSync} = require('./find-made.js')\nconst {mkdirpManual, mkdirpManualSync} = require('./mkdirp-manual.js')\n\nconst mkdirpNative = (path, opts) => {\n opts.recursive = true\n const parent = dirname(path)\n if (parent === path)\n return opts.mkdirAsync(path, opts)\n\n return findMade(opts, path).then(made =>\n opts.mkdirAsync(path, opts).then(() => made)\n .catch(er => {\n if (er.code === 'ENOENT')\n return mkdirpManual(path, opts)\n else\n throw er\n }))\n}\n\nconst mkdirpNativeSync = (path, opts) => {\n opts.recursive = true\n const parent = dirname(path)\n if (parent === path)\n return opts.mkdirSync(path, opts)\n\n const made = findMadeSync(opts, path)\n try {\n opts.mkdirSync(path, opts)\n return made\n } catch (er) {\n if (er.code === 'ENOENT')\n return mkdirpManualSync(path, opts)\n else\n throw er\n }\n}\n\nmodule.exports = {mkdirpNative, mkdirpNativeSync}\n", "const fs = require('fs')\n\nconst version = process.env.__TESTING_MKDIRP_NODE_VERSION__ || process.version\nconst versArr = version.replace(/^v/, '').split('.')\nconst hasNative = +versArr[0] > 10 || +versArr[0] === 10 && +versArr[1] >= 12\n\nconst useNative = !hasNative ? () => false : opts => opts.mkdir === fs.mkdir\nconst useNativeSync = !hasNative ? () => false : opts => opts.mkdirSync === fs.mkdirSync\n\nmodule.exports = {useNative, useNativeSync}\n", "const optsArg = require('./lib/opts-arg.js')\nconst pathArg = require('./lib/path-arg.js')\n\nconst {mkdirpNative, mkdirpNativeSync} = require('./lib/mkdirp-native.js')\nconst {mkdirpManual, mkdirpManualSync} = require('./lib/mkdirp-manual.js')\nconst {useNative, useNativeSync} = require('./lib/use-native.js')\n\n\nconst mkdirp = (path, opts) => {\n path = pathArg(path)\n opts = optsArg(opts)\n return useNative(opts)\n ? mkdirpNative(path, opts)\n : mkdirpManual(path, opts)\n}\n\nconst mkdirpSync = (path, opts) => {\n path = pathArg(path)\n opts = optsArg(opts)\n return useNativeSync(opts)\n ? mkdirpNativeSync(path, opts)\n : mkdirpManualSync(path, opts)\n}\n\nmkdirp.sync = mkdirpSync\nmkdirp.native = (path, opts) => mkdirpNative(pathArg(path), optsArg(opts))\nmkdirp.manual = (path, opts) => mkdirpManual(pathArg(path), optsArg(opts))\nmkdirp.nativeSync = (path, opts) => mkdirpNativeSync(pathArg(path), optsArg(opts))\nmkdirp.manualSync = (path, opts) => mkdirpManualSync(pathArg(path), optsArg(opts))\n\nmodule.exports = mkdirp\n", "'use strict'\nconst fs = require('fs')\nconst path = require('path')\n\n/* istanbul ignore next */\nconst LCHOWN = fs.lchown ? 'lchown' : 'chown'\n/* istanbul ignore next */\nconst LCHOWNSYNC = fs.lchownSync ? 'lchownSync' : 'chownSync'\n\n/* istanbul ignore next */\nconst needEISDIRHandled = fs.lchown &&\n !process.version.match(/v1[1-9]+\\./) &&\n !process.version.match(/v10\\.[6-9]/)\n\nconst lchownSync = (path, uid, gid) => {\n try {\n return fs[LCHOWNSYNC](path, uid, gid)\n } catch (er) {\n if (er.code !== 'ENOENT')\n throw er\n }\n}\n\n/* istanbul ignore next */\nconst chownSync = (path, uid, gid) => {\n try {\n return fs.chownSync(path, uid, gid)\n } catch (er) {\n if (er.code !== 'ENOENT')\n throw er\n }\n}\n\n/* istanbul ignore next */\nconst handleEISDIR =\n needEISDIRHandled ? (path, uid, gid, cb) => er => {\n // Node prior to v10 had a very questionable implementation of\n // fs.lchown, which would always try to call fs.open on a directory\n // Fall back to fs.chown in those cases.\n if (!er || er.code !== 'EISDIR')\n cb(er)\n else\n fs.chown(path, uid, gid, cb)\n }\n : (_, __, ___, cb) => cb\n\n/* istanbul ignore next */\nconst handleEISDirSync =\n needEISDIRHandled ? (path, uid, gid) => {\n try {\n return lchownSync(path, uid, gid)\n } catch (er) {\n if (er.code !== 'EISDIR')\n throw er\n chownSync(path, uid, gid)\n }\n }\n : (path, uid, gid) => lchownSync(path, uid, gid)\n\n// fs.readdir could only accept an options object as of node v6\nconst nodeVersion = process.version\nlet readdir = (path, options, cb) => fs.readdir(path, options, cb)\nlet readdirSync = (path, options) => fs.readdirSync(path, options)\n/* istanbul ignore next */\nif (/^v4\\./.test(nodeVersion))\n readdir = (path, options, cb) => fs.readdir(path, cb)\n\nconst chown = (cpath, uid, gid, cb) => {\n fs[LCHOWN](cpath, uid, gid, handleEISDIR(cpath, uid, gid, er => {\n // Skip ENOENT error\n cb(er && er.code !== 'ENOENT' ? er : null)\n }))\n}\n\nconst chownrKid = (p, child, uid, gid, cb) => {\n if (typeof child === 'string')\n return fs.lstat(path.resolve(p, child), (er, stats) => {\n // Skip ENOENT error\n if (er)\n return cb(er.code !== 'ENOENT' ? er : null)\n stats.name = child\n chownrKid(p, stats, uid, gid, cb)\n })\n\n if (child.isDirectory()) {\n chownr(path.resolve(p, child.name), uid, gid, er => {\n if (er)\n return cb(er)\n const cpath = path.resolve(p, child.name)\n chown(cpath, uid, gid, cb)\n })\n } else {\n const cpath = path.resolve(p, child.name)\n chown(cpath, uid, gid, cb)\n }\n}\n\n\nconst chownr = (p, uid, gid, cb) => {\n readdir(p, { withFileTypes: true }, (er, children) => {\n // any error other than ENOTDIR or ENOTSUP means it's not readable,\n // or doesn't exist. give up.\n if (er) {\n if (er.code === 'ENOENT')\n return cb()\n else if (er.code !== 'ENOTDIR' && er.code !== 'ENOTSUP')\n return cb(er)\n }\n if (er || !children.length)\n return chown(p, uid, gid, cb)\n\n let len = children.length\n let errState = null\n const then = er => {\n if (errState)\n return\n if (er)\n return cb(errState = er)\n if (-- len === 0)\n return chown(p, uid, gid, cb)\n }\n\n children.forEach(child => chownrKid(p, child, uid, gid, then))\n })\n}\n\nconst chownrKidSync = (p, child, uid, gid) => {\n if (typeof child === 'string') {\n try {\n const stats = fs.lstatSync(path.resolve(p, child))\n stats.name = child\n child = stats\n } catch (er) {\n if (er.code === 'ENOENT')\n return\n else\n throw er\n }\n }\n\n if (child.isDirectory())\n chownrSync(path.resolve(p, child.name), uid, gid)\n\n handleEISDirSync(path.resolve(p, child.name), uid, gid)\n}\n\nconst chownrSync = (p, uid, gid) => {\n let children\n try {\n children = readdirSync(p, { withFileTypes: true })\n } catch (er) {\n if (er.code === 'ENOENT')\n return\n else if (er.code === 'ENOTDIR' || er.code === 'ENOTSUP')\n return handleEISDirSync(p, uid, gid)\n else\n throw er\n }\n\n if (children && children.length)\n children.forEach(child => chownrKidSync(p, child, uid, gid))\n\n return handleEISDirSync(p, uid, gid)\n}\n\nmodule.exports = chownr\nchownr.sync = chownrSync\n", "'use strict'\n// wrapper around mkdirp for tar's needs.\n\n// TODO: This should probably be a class, not functionally\n// passing around state in a gazillion args.\n\nconst mkdirp = require('mkdirp')\nconst fs = require('fs')\nconst path = require('path')\nconst chownr = require('chownr')\n\nclass SymlinkError extends Error {\n constructor (symlink, path) {\n super('Cannot extract through symbolic link')\n this.path = path\n this.symlink = symlink\n }\n\n get name () {\n return 'SylinkError'\n }\n}\n\nclass CwdError extends Error {\n constructor (path, code) {\n super(code + ': Cannot cd into \\'' + path + '\\'')\n this.path = path\n this.code = code\n }\n\n get name () {\n return 'CwdError'\n }\n}\n\nmodule.exports = (dir, opt, cb) => {\n // if there's any overlap between mask and mode,\n // then we'll need an explicit chmod\n const umask = opt.umask\n const mode = opt.mode | 0o0700\n const needChmod = (mode & umask) !== 0\n\n const uid = opt.uid\n const gid = opt.gid\n const doChown = typeof uid === 'number' &&\n typeof gid === 'number' &&\n (uid !== opt.processUid || gid !== opt.processGid)\n\n const preserve = opt.preserve\n const unlink = opt.unlink\n const cache = opt.cache\n const cwd = opt.cwd\n\n const done = (er, created) => {\n if (er)\n cb(er)\n else {\n cache.set(dir, true)\n if (created && doChown)\n chownr(created, uid, gid, er => done(er))\n else if (needChmod)\n fs.chmod(dir, mode, cb)\n else\n cb()\n }\n }\n\n if (cache && cache.get(dir) === true)\n return done()\n\n if (dir === cwd) {\n return fs.stat(dir, (er, st) => {\n if (er || !st.isDirectory())\n er = new CwdError(dir, er && er.code || 'ENOTDIR')\n done(er)\n })\n }\n\n if (preserve)\n return mkdirp(dir, {mode}).then(made => done(null, made), done)\n\n const sub = path.relative(cwd, dir)\n const parts = sub.split(/\\/|\\\\/)\n mkdir_(cwd, parts, mode, cache, unlink, cwd, null, done)\n}\n\nconst mkdir_ = (base, parts, mode, cache, unlink, cwd, created, cb) => {\n if (!parts.length)\n return cb(null, created)\n const p = parts.shift()\n const part = base + '/' + p\n if (cache.get(part))\n return mkdir_(part, parts, mode, cache, unlink, cwd, created, cb)\n fs.mkdir(part, mode, onmkdir(part, parts, mode, cache, unlink, cwd, created, cb))\n}\n\nconst onmkdir = (part, parts, mode, cache, unlink, cwd, created, cb) => er => {\n if (er) {\n if (er.path && path.dirname(er.path) === cwd &&\n (er.code === 'ENOTDIR' || er.code === 'ENOENT'))\n return cb(new CwdError(cwd, er.code))\n\n fs.lstat(part, (statEr, st) => {\n if (statEr)\n cb(statEr)\n else if (st.isDirectory())\n mkdir_(part, parts, mode, cache, unlink, cwd, created, cb)\n else if (unlink) {\n fs.unlink(part, er => {\n if (er)\n return cb(er)\n fs.mkdir(part, mode, onmkdir(part, parts, mode, cache, unlink, cwd, created, cb))\n })\n } else if (st.isSymbolicLink())\n return cb(new SymlinkError(part, part + '/' + parts.join('/')))\n else\n cb(er)\n })\n } else {\n created = created || part\n mkdir_(part, parts, mode, cache, unlink, cwd, created, cb)\n }\n}\n\nmodule.exports.sync = (dir, opt) => {\n // if there's any overlap between mask and mode,\n // then we'll need an explicit chmod\n const umask = opt.umask\n const mode = opt.mode | 0o0700\n const needChmod = (mode & umask) !== 0\n\n const uid = opt.uid\n const gid = opt.gid\n const doChown = typeof uid === 'number' &&\n typeof gid === 'number' &&\n (uid !== opt.processUid || gid !== opt.processGid)\n\n const preserve = opt.preserve\n const unlink = opt.unlink\n const cache = opt.cache\n const cwd = opt.cwd\n\n const done = (created) => {\n cache.set(dir, true)\n if (created && doChown)\n chownr.sync(created, uid, gid)\n if (needChmod)\n fs.chmodSync(dir, mode)\n }\n\n if (cache && cache.get(dir) === true)\n return done()\n\n if (dir === cwd) {\n let ok = false\n let code = 'ENOTDIR'\n try {\n ok = fs.statSync(dir).isDirectory()\n } catch (er) {\n code = er.code\n } finally {\n if (!ok)\n throw new CwdError(dir, code)\n }\n done()\n return\n }\n\n if (preserve)\n return done(mkdirp.sync(dir, mode))\n\n const sub = path.relative(cwd, dir)\n const parts = sub.split(/\\/|\\\\/)\n let created = null\n for (let p = parts.shift(), part = cwd;\n p && (part += '/' + p);\n p = parts.shift()) {\n if (cache.get(part))\n continue\n\n try {\n fs.mkdirSync(part, mode)\n created = created || part\n cache.set(part, true)\n } catch (er) {\n if (er.path && path.dirname(er.path) === cwd &&\n (er.code === 'ENOTDIR' || er.code === 'ENOENT'))\n return new CwdError(cwd, er.code)\n\n const st = fs.lstatSync(part)\n if (st.isDirectory()) {\n cache.set(part, true)\n continue\n } else if (unlink) {\n fs.unlinkSync(part)\n fs.mkdirSync(part, mode)\n created = created || part\n cache.set(part, true)\n continue\n } else if (st.isSymbolicLink())\n return new SymlinkError(part, part + '/' + parts.join('/'))\n }\n }\n\n return done(created)\n}\n", "// A path exclusive reservation system\n// reserve([list, of, paths], fn)\n// When the fn is first in line for all its paths, it\n// is called with a cb that clears the reservation.\n//\n// Used by async unpack to avoid clobbering paths in use,\n// while still allowing maximal safe parallelization.\n\nconst assert = require('assert')\n\nmodule.exports = () => {\n // path => [function or Set]\n // A Set object means a directory reservation\n // A fn is a direct reservation on that path\n const queues = new Map()\n\n // fn => {paths:[path,...], dirs:[path, ...]}\n const reservations = new Map()\n\n // return a set of parent dirs for a given path\n const { join } = require('path')\n const getDirs = path =>\n join(path).split(/[\\\\/]/).slice(0, -1).reduce((set, path) =>\n set.length ? set.concat(join(set[set.length - 1], path)) : [path], [])\n\n // functions currently running\n const running = new Set()\n\n // return the queues for each path the function cares about\n // fn => {paths, dirs}\n const getQueues = fn => {\n const res = reservations.get(fn)\n /* istanbul ignore if - unpossible */\n if (!res)\n throw new Error('function does not have any path reservations')\n return {\n paths: res.paths.map(path => queues.get(path)),\n dirs: [...res.dirs].map(path => queues.get(path)),\n }\n }\n\n // check if fn is first in line for all its paths, and is\n // included in the first set for all its dir queues\n const check = fn => {\n const {paths, dirs} = getQueues(fn)\n return paths.every(q => q[0] === fn) &&\n dirs.every(q => q[0] instanceof Set && q[0].has(fn))\n }\n\n // run the function if it's first in line and not already running\n const run = fn => {\n if (running.has(fn) || !check(fn))\n return false\n running.add(fn)\n fn(() => clear(fn))\n return true\n }\n\n const clear = fn => {\n if (!running.has(fn))\n return false\n\n const { paths, dirs } = reservations.get(fn)\n const next = new Set()\n\n paths.forEach(path => {\n const q = queues.get(path)\n assert.equal(q[0], fn)\n if (q.length === 1)\n queues.delete(path)\n else {\n q.shift()\n if (typeof q[0] === 'function')\n next.add(q[0])\n else\n q[0].forEach(fn => next.add(fn))\n }\n })\n\n dirs.forEach(dir => {\n const q = queues.get(dir)\n assert(q[0] instanceof Set)\n if (q[0].size === 1 && q.length === 1)\n queues.delete(dir)\n else if (q[0].size === 1) {\n q.shift()\n\n // must be a function or else the Set would've been reused\n next.add(q[0])\n } else\n q[0].delete(fn)\n })\n running.delete(fn)\n\n next.forEach(fn => run(fn))\n return true\n }\n\n const reserve = (paths, fn) => {\n const dirs = new Set(\n paths.map(path => getDirs(path)).reduce((a, b) => a.concat(b))\n )\n reservations.set(fn, {dirs, paths})\n paths.forEach(path => {\n const q = queues.get(path)\n if (!q)\n queues.set(path, [fn])\n else\n q.push(fn)\n })\n dirs.forEach(dir => {\n const q = queues.get(dir)\n if (!q)\n queues.set(dir, [new Set([fn])])\n else if (q[q.length - 1] instanceof Set)\n q[q.length - 1].add(fn)\n else\n q.push(new Set([fn]))\n })\n\n return run(fn)\n }\n\n return { check, reserve }\n}\n", "// Get the appropriate flag to use for creating files\n// We use fmap on Windows platforms for files less than\n// 512kb. This is a fairly low limit, but avoids making\n// things slower in some cases. Since most of what this\n// library is used for is extracting tarballs of many\n// relatively small files in npm packages and the like,\n// it can be a big boost on Windows platforms.\n// Only supported in Node v12.9.0 and above.\nconst platform = process.env.__FAKE_PLATFORM__ || process.platform\nconst isWindows = platform === 'win32'\nconst fs = global.__FAKE_TESTING_FS__ || require('fs')\n\n/* istanbul ignore next */\nconst { O_CREAT, O_TRUNC, O_WRONLY, UV_FS_O_FILEMAP = 0 } = fs.constants\n\nconst fMapEnabled = isWindows && !!UV_FS_O_FILEMAP\nconst fMapLimit = 512 * 1024\nconst fMapFlag = UV_FS_O_FILEMAP | O_TRUNC | O_CREAT | O_WRONLY\nmodule.exports = !fMapEnabled ? () => 'w'\n : size => size < fMapLimit ? fMapFlag : 'w'\n", "'use strict'\n\n// the PEND/UNPEND stuff tracks whether we're ready to emit end/close yet.\n// but the path reservations are required to avoid race conditions where\n// parallelized unpack ops may mess with one another, due to dependencies\n// (like a Link depending on its target) or destructive operations (like\n// clobbering an fs object to create one of a different type.)\n\nconst assert = require('assert')\nconst Parser = require('./parse.js')\nconst fs = require('fs')\nconst fsm = require('fs-minipass')\nconst path = require('path')\nconst mkdir = require('./mkdir.js')\nconst wc = require('./winchars.js')\nconst pathReservations = require('./path-reservations.js')\n\nconst ONENTRY = Symbol('onEntry')\nconst CHECKFS = Symbol('checkFs')\nconst CHECKFS2 = Symbol('checkFs2')\nconst ISREUSABLE = Symbol('isReusable')\nconst MAKEFS = Symbol('makeFs')\nconst FILE = Symbol('file')\nconst DIRECTORY = Symbol('directory')\nconst LINK = Symbol('link')\nconst SYMLINK = Symbol('symlink')\nconst HARDLINK = Symbol('hardlink')\nconst UNSUPPORTED = Symbol('unsupported')\nconst CHECKPATH = Symbol('checkPath')\nconst MKDIR = Symbol('mkdir')\nconst ONERROR = Symbol('onError')\nconst PENDING = Symbol('pending')\nconst PEND = Symbol('pend')\nconst UNPEND = Symbol('unpend')\nconst ENDED = Symbol('ended')\nconst MAYBECLOSE = Symbol('maybeClose')\nconst SKIP = Symbol('skip')\nconst DOCHOWN = Symbol('doChown')\nconst UID = Symbol('uid')\nconst GID = Symbol('gid')\nconst crypto = require('crypto')\nconst getFlag = require('./get-write-flag.js')\n\n/* istanbul ignore next */\nconst neverCalled = () => {\n throw new Error('sync function called cb somehow?!?')\n}\n\n// Unlinks on Windows are not atomic.\n//\n// This means that if you have a file entry, followed by another\n// file entry with an identical name, and you cannot re-use the file\n// (because it's a hardlink, or because unlink:true is set, or it's\n// Windows, which does not have useful nlink values), then the unlink\n// will be committed to the disk AFTER the new file has been written\n// over the old one, deleting the new file.\n//\n// To work around this, on Windows systems, we rename the file and then\n// delete the renamed file. It's a sloppy kludge, but frankly, I do not\n// know of a better way to do this, given windows' non-atomic unlink\n// semantics.\n//\n// See: https://github.com/npm/node-tar/issues/183\n/* istanbul ignore next */\nconst unlinkFile = (path, cb) => {\n if (process.platform !== 'win32')\n return fs.unlink(path, cb)\n\n const name = path + '.DELETE.' + crypto.randomBytes(16).toString('hex')\n fs.rename(path, name, er => {\n if (er)\n return cb(er)\n fs.unlink(name, cb)\n })\n}\n\n/* istanbul ignore next */\nconst unlinkFileSync = path => {\n if (process.platform !== 'win32')\n return fs.unlinkSync(path)\n\n const name = path + '.DELETE.' + crypto.randomBytes(16).toString('hex')\n fs.renameSync(path, name)\n fs.unlinkSync(name)\n}\n\n// this.gid, entry.gid, this.processUid\nconst uint32 = (a, b, c) =>\n a === a >>> 0 ? a\n : b === b >>> 0 ? b\n : c\n\nclass Unpack extends Parser {\n constructor (opt) {\n if (!opt)\n opt = {}\n\n opt.ondone = _ => {\n this[ENDED] = true\n this[MAYBECLOSE]()\n }\n\n super(opt)\n\n this.reservations = pathReservations()\n\n this.transform = typeof opt.transform === 'function' ? opt.transform : null\n\n this.writable = true\n this.readable = false\n\n this[PENDING] = 0\n this[ENDED] = false\n\n this.dirCache = opt.dirCache || new Map()\n\n if (typeof opt.uid === 'number' || typeof opt.gid === 'number') {\n // need both or neither\n if (typeof opt.uid !== 'number' || typeof opt.gid !== 'number')\n throw new TypeError('cannot set owner without number uid and gid')\n if (opt.preserveOwner) {\n throw new TypeError(\n 'cannot preserve owner in archive and also set owner explicitly')\n }\n this.uid = opt.uid\n this.gid = opt.gid\n this.setOwner = true\n } else {\n this.uid = null\n this.gid = null\n this.setOwner = false\n }\n\n // default true for root\n if (opt.preserveOwner === undefined && typeof opt.uid !== 'number')\n this.preserveOwner = process.getuid && process.getuid() === 0\n else\n this.preserveOwner = !!opt.preserveOwner\n\n this.processUid = (this.preserveOwner || this.setOwner) && process.getuid ?\n process.getuid() : null\n this.processGid = (this.preserveOwner || this.setOwner) && process.getgid ?\n process.getgid() : null\n\n // mostly just for testing, but useful in some cases.\n // Forcibly trigger a chown on every entry, no matter what\n this.forceChown = opt.forceChown === true\n\n // turn > this[ONENTRY](entry))\n }\n\n // a bad or damaged archive is a warning for Parser, but an error\n // when extracting. Mark those errors as unrecoverable, because\n // the Unpack contract cannot be met.\n warn (code, msg, data = {}) {\n if (code === 'TAR_BAD_ARCHIVE' || code === 'TAR_ABORT')\n data.recoverable = false\n return super.warn(code, msg, data)\n }\n\n [MAYBECLOSE] () {\n if (this[ENDED] && this[PENDING] === 0) {\n this.emit('prefinish')\n this.emit('finish')\n this.emit('end')\n this.emit('close')\n }\n }\n\n [CHECKPATH] (entry) {\n if (this.strip) {\n const parts = entry.path.split(/\\/|\\\\/)\n if (parts.length < this.strip)\n return false\n entry.path = parts.slice(this.strip).join('/')\n\n if (entry.type === 'Link') {\n const linkparts = entry.linkpath.split(/\\/|\\\\/)\n if (linkparts.length >= this.strip)\n entry.linkpath = linkparts.slice(this.strip).join('/')\n }\n }\n\n if (!this.preservePaths) {\n const p = entry.path\n if (p.match(/(^|\\/|\\\\)\\.\\.(\\\\|\\/|$)/)) {\n this.warn('TAR_ENTRY_ERROR', `path contains '..'`, {\n entry,\n path: p,\n })\n return false\n }\n\n // absolutes on posix are also absolutes on win32\n // so we only need to test this one to get both\n if (path.win32.isAbsolute(p)) {\n const parsed = path.win32.parse(p)\n entry.path = p.substr(parsed.root.length)\n const r = parsed.root\n this.warn('TAR_ENTRY_INFO', `stripping ${r} from absolute path`, {\n entry,\n path: p,\n })\n }\n }\n\n // only encode : chars that aren't drive letter indicators\n if (this.win32) {\n const parsed = path.win32.parse(entry.path)\n entry.path = parsed.root === '' ? wc.encode(entry.path)\n : parsed.root + wc.encode(entry.path.substr(parsed.root.length))\n }\n\n if (path.isAbsolute(entry.path))\n entry.absolute = entry.path\n else\n entry.absolute = path.resolve(this.cwd, entry.path)\n\n return true\n }\n\n [ONENTRY] (entry) {\n if (!this[CHECKPATH](entry))\n return entry.resume()\n\n assert.equal(typeof entry.absolute, 'string')\n\n switch (entry.type) {\n case 'Directory':\n case 'GNUDumpDir':\n if (entry.mode)\n entry.mode = entry.mode | 0o700\n\n case 'File':\n case 'OldFile':\n case 'ContiguousFile':\n case 'Link':\n case 'SymbolicLink':\n return this[CHECKFS](entry)\n\n case 'CharacterDevice':\n case 'BlockDevice':\n case 'FIFO':\n default:\n return this[UNSUPPORTED](entry)\n }\n }\n\n [ONERROR] (er, entry) {\n // Cwd has to exist, or else nothing works. That's serious.\n // Other errors are warnings, which raise the error in strict\n // mode, but otherwise continue on.\n if (er.name === 'CwdError')\n this.emit('error', er)\n else {\n this.warn('TAR_ENTRY_ERROR', er, {entry})\n this[UNPEND]()\n entry.resume()\n }\n }\n\n [MKDIR] (dir, mode, cb) {\n mkdir(dir, {\n uid: this.uid,\n gid: this.gid,\n processUid: this.processUid,\n processGid: this.processGid,\n umask: this.processUmask,\n preserve: this.preservePaths,\n unlink: this.unlink,\n cache: this.dirCache,\n cwd: this.cwd,\n mode: mode,\n noChmod: this.noChmod,\n }, cb)\n }\n\n [DOCHOWN] (entry) {\n // in preserve owner mode, chown if the entry doesn't match process\n // in set owner mode, chown if setting doesn't match process\n return this.forceChown ||\n this.preserveOwner &&\n (typeof entry.uid === 'number' && entry.uid !== this.processUid ||\n typeof entry.gid === 'number' && entry.gid !== this.processGid)\n ||\n (typeof this.uid === 'number' && this.uid !== this.processUid ||\n typeof this.gid === 'number' && this.gid !== this.processGid)\n }\n\n [UID] (entry) {\n return uint32(this.uid, entry.uid, this.processUid)\n }\n\n [GID] (entry) {\n return uint32(this.gid, entry.gid, this.processGid)\n }\n\n [FILE] (entry, fullyDone) {\n const mode = entry.mode & 0o7777 || this.fmode\n const stream = new fsm.WriteStream(entry.absolute, {\n flags: getFlag(entry.size),\n mode: mode,\n autoClose: false,\n })\n stream.on('error', er => this[ONERROR](er, entry))\n\n let actions = 1\n const done = er => {\n if (er)\n return this[ONERROR](er, entry)\n\n if (--actions === 0) {\n fs.close(stream.fd, er => {\n fullyDone()\n er ? this[ONERROR](er, entry) : this[UNPEND]()\n })\n }\n }\n\n stream.on('finish', _ => {\n // if futimes fails, try utimes\n // if utimes fails, fail with the original error\n // same for fchown/chown\n const abs = entry.absolute\n const fd = stream.fd\n\n if (entry.mtime && !this.noMtime) {\n actions++\n const atime = entry.atime || new Date()\n const mtime = entry.mtime\n fs.futimes(fd, atime, mtime, er =>\n er ? fs.utimes(abs, atime, mtime, er2 => done(er2 && er))\n : done())\n }\n\n if (this[DOCHOWN](entry)) {\n actions++\n const uid = this[UID](entry)\n const gid = this[GID](entry)\n fs.fchown(fd, uid, gid, er =>\n er ? fs.chown(abs, uid, gid, er2 => done(er2 && er))\n : done())\n }\n\n done()\n })\n\n const tx = this.transform ? this.transform(entry) || entry : entry\n if (tx !== entry) {\n tx.on('error', er => this[ONERROR](er, entry))\n entry.pipe(tx)\n }\n tx.pipe(stream)\n }\n\n [DIRECTORY] (entry, fullyDone) {\n const mode = entry.mode & 0o7777 || this.dmode\n this[MKDIR](entry.absolute, mode, er => {\n if (er) {\n fullyDone()\n return this[ONERROR](er, entry)\n }\n\n let actions = 1\n const done = _ => {\n if (--actions === 0) {\n fullyDone()\n this[UNPEND]()\n entry.resume()\n }\n }\n\n if (entry.mtime && !this.noMtime) {\n actions++\n fs.utimes(entry.absolute, entry.atime || new Date(), entry.mtime, done)\n }\n\n if (this[DOCHOWN](entry)) {\n actions++\n fs.chown(entry.absolute, this[UID](entry), this[GID](entry), done)\n }\n\n done()\n })\n }\n\n [UNSUPPORTED] (entry) {\n entry.unsupported = true\n this.warn('TAR_ENTRY_UNSUPPORTED',\n `unsupported entry type: ${entry.type}`, {entry})\n entry.resume()\n }\n\n [SYMLINK] (entry, done) {\n this[LINK](entry, entry.linkpath, 'symlink', done)\n }\n\n [HARDLINK] (entry, done) {\n this[LINK](entry, path.resolve(this.cwd, entry.linkpath), 'link', done)\n }\n\n [PEND] () {\n this[PENDING]++\n }\n\n [UNPEND] () {\n this[PENDING]--\n this[MAYBECLOSE]()\n }\n\n [SKIP] (entry) {\n this[UNPEND]()\n entry.resume()\n }\n\n // Check if we can reuse an existing filesystem entry safely and\n // overwrite it, rather than unlinking and recreating\n // Windows doesn't report a useful nlink, so we just never reuse entries\n [ISREUSABLE] (entry, st) {\n return entry.type === 'File' &&\n !this.unlink &&\n st.isFile() &&\n st.nlink <= 1 &&\n process.platform !== 'win32'\n }\n\n // check if a thing is there, and if so, try to clobber it\n [CHECKFS] (entry) {\n this[PEND]()\n const paths = [entry.path]\n if (entry.linkpath)\n paths.push(entry.linkpath)\n this.reservations.reserve(paths, done => this[CHECKFS2](entry, done))\n }\n\n [CHECKFS2] (entry, done) {\n this[MKDIR](path.dirname(entry.absolute), this.dmode, er => {\n if (er) {\n done()\n return this[ONERROR](er, entry)\n }\n fs.lstat(entry.absolute, (er, st) => {\n if (st && (this.keep || this.newer && st.mtime > entry.mtime)) {\n this[SKIP](entry)\n done()\n } else if (er || this[ISREUSABLE](entry, st))\n this[MAKEFS](null, entry, done)\n\n else if (st.isDirectory()) {\n if (entry.type === 'Directory') {\n if (!this.noChmod && (!entry.mode || (st.mode & 0o7777) === entry.mode))\n this[MAKEFS](null, entry, done)\n else {\n fs.chmod(entry.absolute, entry.mode,\n er => this[MAKEFS](er, entry, done))\n }\n } else\n fs.rmdir(entry.absolute, er => this[MAKEFS](er, entry, done))\n } else\n unlinkFile(entry.absolute, er => this[MAKEFS](er, entry, done))\n })\n })\n }\n\n [MAKEFS] (er, entry, done) {\n if (er)\n return this[ONERROR](er, entry)\n\n switch (entry.type) {\n case 'File':\n case 'OldFile':\n case 'ContiguousFile':\n return this[FILE](entry, done)\n\n case 'Link':\n return this[HARDLINK](entry, done)\n\n case 'SymbolicLink':\n return this[SYMLINK](entry, done)\n\n case 'Directory':\n case 'GNUDumpDir':\n return this[DIRECTORY](entry, done)\n }\n }\n\n [LINK] (entry, linkpath, link, done) {\n // XXX: get the type ('file' or 'dir') for windows\n fs[link](linkpath, entry.absolute, er => {\n if (er)\n return this[ONERROR](er, entry)\n done()\n this[UNPEND]()\n entry.resume()\n })\n }\n}\n\nclass UnpackSync extends Unpack {\n [CHECKFS] (entry) {\n const er = this[MKDIR](path.dirname(entry.absolute), this.dmode, neverCalled)\n if (er)\n return this[ONERROR](er, entry)\n try {\n const st = fs.lstatSync(entry.absolute)\n if (this.keep || this.newer && st.mtime > entry.mtime)\n return this[SKIP](entry)\n else if (this[ISREUSABLE](entry, st))\n return this[MAKEFS](null, entry, neverCalled)\n else {\n try {\n if (st.isDirectory()) {\n if (entry.type === 'Directory') {\n if (!this.noChmod && entry.mode && (st.mode & 0o7777) !== entry.mode)\n fs.chmodSync(entry.absolute, entry.mode)\n } else\n fs.rmdirSync(entry.absolute)\n } else\n unlinkFileSync(entry.absolute)\n return this[MAKEFS](null, entry, neverCalled)\n } catch (er) {\n return this[ONERROR](er, entry)\n }\n }\n } catch (er) {\n return this[MAKEFS](null, entry, neverCalled)\n }\n }\n\n [FILE] (entry, _) {\n const mode = entry.mode & 0o7777 || this.fmode\n\n const oner = er => {\n let closeError\n try {\n fs.closeSync(fd)\n } catch (e) {\n closeError = e\n }\n if (er || closeError)\n this[ONERROR](er || closeError, entry)\n }\n\n let fd\n try {\n fd = fs.openSync(entry.absolute, getFlag(entry.size), mode)\n } catch (er) {\n return oner(er)\n }\n const tx = this.transform ? this.transform(entry) || entry : entry\n if (tx !== entry) {\n tx.on('error', er => this[ONERROR](er, entry))\n entry.pipe(tx)\n }\n\n tx.on('data', chunk => {\n try {\n fs.writeSync(fd, chunk, 0, chunk.length)\n } catch (er) {\n oner(er)\n }\n })\n\n tx.on('end', _ => {\n let er = null\n // try both, falling futimes back to utimes\n // if either fails, handle the first error\n if (entry.mtime && !this.noMtime) {\n const atime = entry.atime || new Date()\n const mtime = entry.mtime\n try {\n fs.futimesSync(fd, atime, mtime)\n } catch (futimeser) {\n try {\n fs.utimesSync(entry.absolute, atime, mtime)\n } catch (utimeser) {\n er = futimeser\n }\n }\n }\n\n if (this[DOCHOWN](entry)) {\n const uid = this[UID](entry)\n const gid = this[GID](entry)\n\n try {\n fs.fchownSync(fd, uid, gid)\n } catch (fchowner) {\n try {\n fs.chownSync(entry.absolute, uid, gid)\n } catch (chowner) {\n er = er || fchowner\n }\n }\n }\n\n oner(er)\n })\n }\n\n [DIRECTORY] (entry, _) {\n const mode = entry.mode & 0o7777 || this.dmode\n const er = this[MKDIR](entry.absolute, mode)\n if (er)\n return this[ONERROR](er, entry)\n if (entry.mtime && !this.noMtime) {\n try {\n fs.utimesSync(entry.absolute, entry.atime || new Date(), entry.mtime)\n } catch (er) {}\n }\n if (this[DOCHOWN](entry)) {\n try {\n fs.chownSync(entry.absolute, this[UID](entry), this[GID](entry))\n } catch (er) {}\n }\n entry.resume()\n }\n\n [MKDIR] (dir, mode) {\n try {\n return mkdir.sync(dir, {\n uid: this.uid,\n gid: this.gid,\n processUid: this.processUid,\n processGid: this.processGid,\n umask: this.processUmask,\n preserve: this.preservePaths,\n unlink: this.unlink,\n cache: this.dirCache,\n cwd: this.cwd,\n mode: mode,\n })\n } catch (er) {\n return er\n }\n }\n\n [LINK] (entry, linkpath, link, _) {\n try {\n fs[link + 'Sync'](linkpath, entry.absolute)\n entry.resume()\n } catch (er) {\n return this[ONERROR](er, entry)\n }\n }\n}\n\nUnpack.Sync = UnpackSync\nmodule.exports = Unpack\n", "'use strict'\n\n// tar -x\nconst hlo = require('./high-level-opt.js')\nconst Unpack = require('./unpack.js')\nconst fs = require('fs')\nconst fsm = require('fs-minipass')\nconst path = require('path')\n\nmodule.exports = (opt_, files, cb) => {\n if (typeof opt_ === 'function')\n cb = opt_, files = null, opt_ = {}\n else if (Array.isArray(opt_))\n files = opt_, opt_ = {}\n\n if (typeof files === 'function')\n cb = files, files = null\n\n if (!files)\n files = []\n else\n files = Array.from(files)\n\n const opt = hlo(opt_)\n\n if (opt.sync && typeof cb === 'function')\n throw new TypeError('callback not supported for sync tar functions')\n\n if (!opt.file && typeof cb === 'function')\n throw new TypeError('callback only supported with file option')\n\n if (files.length)\n filesFilter(opt, files)\n\n return opt.file && opt.sync ? extractFileSync(opt)\n : opt.file ? extractFile(opt, cb)\n : opt.sync ? extractSync(opt)\n : extract(opt)\n}\n\n// construct a filter that limits the file entries listed\n// include child entries if a dir is included\nconst filesFilter = (opt, files) => {\n const map = new Map(files.map(f => [f.replace(/\\/+$/, ''), true]))\n const filter = opt.filter\n\n const mapHas = (file, r) => {\n const root = r || path.parse(file).root || '.'\n const ret = file === root ? false\n : map.has(file) ? map.get(file)\n : mapHas(path.dirname(file), root)\n\n map.set(file, ret)\n return ret\n }\n\n opt.filter = filter\n ? (file, entry) => filter(file, entry) && mapHas(file.replace(/\\/+$/, ''))\n : file => mapHas(file.replace(/\\/+$/, ''))\n}\n\nconst extractFileSync = opt => {\n const u = new Unpack.Sync(opt)\n\n const file = opt.file\n const stat = fs.statSync(file)\n // This trades a zero-byte read() syscall for a stat\n // However, it will usually result in less memory allocation\n const readSize = opt.maxReadSize || 16 * 1024 * 1024\n const stream = new fsm.ReadStreamSync(file, {\n readSize: readSize,\n size: stat.size,\n })\n stream.pipe(u)\n}\n\nconst extractFile = (opt, cb) => {\n const u = new Unpack(opt)\n const readSize = opt.maxReadSize || 16 * 1024 * 1024\n\n const file = opt.file\n const p = new Promise((resolve, reject) => {\n u.on('error', reject)\n u.on('close', resolve)\n\n // This trades a zero-byte read() syscall for a stat\n // However, it will usually result in less memory allocation\n fs.stat(file, (er, stat) => {\n if (er)\n reject(er)\n else {\n const stream = new fsm.ReadStream(file, {\n readSize: readSize,\n size: stat.size,\n })\n stream.on('error', reject)\n stream.pipe(u)\n }\n })\n })\n return cb ? p.then(cb, cb) : p\n}\n\nconst extractSync = opt => new Unpack.Sync(opt)\n\nconst extract = opt => new Unpack(opt)\n", "'use strict'\n\n// high-level commands\nexports.c = exports.create = require('./lib/create.js')\nexports.r = exports.replace = require('./lib/replace.js')\nexports.t = exports.list = require('./lib/list.js')\nexports.u = exports.update = require('./lib/update.js')\nexports.x = exports.extract = require('./lib/extract.js')\n\n// classes\nexports.Pack = require('./lib/pack.js')\nexports.Unpack = require('./lib/unpack.js')\nexports.Parse = require('./lib/parse.js')\nexports.ReadEntry = require('./lib/read-entry.js')\nexports.WriteEntry = require('./lib/write-entry.js')\nexports.Header = require('./lib/header.js')\nexports.Pax = require('./lib/pax.js')\nexports.types = require('./lib/types.js')\n", "import chalk from \"chalk\";\nimport {\n register as _register,\n BINARY_VERSION,\n PACKAGE_NAMES,\n} from \"register-url-windows\";\nimport { PROTOCOL } from \"src/PROTOCOL\";\nimport which from \"which\";\nimport { fetch } from \"./fetch\";\nimport fs from \"fs\";\nimport http from \"http\";\nimport tmp from \"tmp\";\nimport path from \"path\";\nimport tar from \"tar\";\n\nconst TARBALL_URL = `http://registry.npmjs.org/${PACKAGE_NAMES[\"win64-uac\"]}/-/${PACKAGE_NAMES[\"win64-uac\"]}-${BINARY_VERSION}.tgz`;\n\nfunction downloadBin(): Promise {\n const { name: tgzPath } = tmp.dirSync({\n postfix: \"git-peek\",\n unsafeCleanup: true,\n });\n return new Promise((resolve, reject) => {\n http.get(TARBALL_URL, function (response) {\n response.pipe(\n tar\n .x({\n cwd: tgzPath,\n strip: 1,\n onentry(entry) {},\n onwarn(message, data) {\n console.warn(message);\n },\n })\n .on(\"finish\", () => {\n resolve(path.resolve(tgzPath, \"register-url.exe\"));\n })\n .on(\"error\", (err) => {\n reject(err);\n })\n );\n });\n });\n}\n\nexport async function register(editor: string) {\n console.log(\"Downloading register-url-windows!\");\n const downloadPath = await downloadBin();\n console.log(\"Downloaded register-url-windows\");\n\n console.log(\n `${chalk.whiteBright(\n \"git-peek uses Administrator privileges to enable 1-click in Chrome & Edge\"\n )}. Source code: \\n${chalk.gray(\n \" https://github.com/Jarred-Sumner/register-url-windows/blob/main/dotnet/RegisterURLHandler/Program.cs\"\n )}`\n );\n const result = await _register(\n {\n path: path.resolve(\n await which(\"git-peek\"),\n \"../\",\n \"node_modules\",\n \"@jarred\",\n \"git-peek\",\n \"bin\",\n \"git-peek-win32.exe\"\n ),\n name: \"git-peek\",\n origins: [\n \"github.com\",\n \"bitbucket.com\",\n \"gitlab.com\",\n \"*.gitlab.com\",\n \"sourcehut.org\",\n ],\n register: true,\n protocol: PROTOCOL,\n },\n downloadPath\n );\n\n if (process.env.VERBOSE) console.log(result);\n\n if (result.error && !(result.protocol && result.edge && result.chrome)) {\n console.error(result.error);\n }\n\n if (result.exception && !(result.protocol && result.edge && result.chrome)) {\n console.error(result.exception);\n }\n\n if (result.protocol && result.edge && result.chrome) {\n console.log(`${chalk.green(\"Registered git-peek:// successfully\")}`);\n } else if (result.protocol) {\n console.log(\n chalk.whiteBright(\"Registered git-peek://, but 1-click is disabled\")\n );\n console.log(\n `${chalk.cyan(\n \"To enable 1-click, re-run `git-peek -r` with Administrator privileges.\"\n )}`\n );\n } else {\n console.log(`${chalk.red(\"Register failed\")}`);\n }\n\n process.exit();\n}\n", "let register: (editor: string) => void;\nif (process.platform === \"darwin\") {\n register = require(\"./registerProtocol.mac\").register;\n} else if (process.platform === \"win32\") {\n register = require(\"./registerProtocol.windows\").register;\n} else {\n register = () => {\n throw \"Unsupported Platform\";\n };\n}\n\nexport { register };\n", "export const PROTOCOL = \"git-peek\";\n"], - "mappings": "gmBAAA,sBAAO,QAAU,GACjB,GAAM,KAAO,GAEb,GAAI,IAAa,cAEjB,YAAuB,EAAM,GAC3B,GAAI,GAAU,EAAQ,UAAY,OAChC,EAAQ,QAAU,QAAQ,IAAI,QAOhC,GALI,CAAC,GAIL,GAAU,EAAQ,MAAM,KACpB,EAAQ,QAAQ,MAAQ,IAC1B,MAAO,GAET,OAAS,GAAI,EAAG,EAAI,EAAQ,OAAQ,KAClC,GAAI,GAAI,EAAQ,GAAG,cACnB,GAAI,GAAK,EAAK,OAAO,CAAC,EAAE,QAAQ,gBAAkB,EAChD,MAAO,GAGX,MAAO,GAGT,YAAoB,EAAM,EAAM,GAC9B,MAAI,CAAC,EAAK,kBAAoB,CAAC,EAAK,SAC3B,GAEF,GAAa,EAAM,GAG5B,YAAgB,EAAM,EAAS,GAC7B,GAAG,KAAK,EAAM,SAAU,EAAI,GAC1B,EAAG,EAAI,EAAK,GAAQ,GAAU,EAAM,EAAM,MAI9C,YAAe,EAAM,GACnB,MAAO,IAAU,GAAG,SAAS,GAAO,EAAM,MCxC5C,sBAAO,QAAU,GACjB,GAAM,KAAO,GAEb,GAAI,IAAa,cAEjB,YAAgB,EAAM,EAAS,GAC7B,GAAG,KAAK,EAAM,SAAU,EAAI,GAC1B,EAAG,EAAI,EAAK,GAAQ,GAAU,EAAM,MAIxC,YAAe,EAAM,GACnB,MAAO,IAAU,GAAG,SAAS,GAAO,GAGtC,YAAoB,EAAM,GACxB,MAAO,GAAK,UAAY,GAAU,EAAM,GAG1C,YAAoB,EAAM,GACxB,GAAI,GAAM,EAAK,KACX,EAAM,EAAK,IACX,EAAM,EAAK,IAEX,EAAQ,EAAQ,MAAQ,OAC1B,EAAQ,IAAM,QAAQ,QAAU,QAAQ,SACtC,EAAQ,EAAQ,MAAQ,OAC1B,EAAQ,IAAM,QAAQ,QAAU,QAAQ,SAEtC,EAAI,SAAS,MAAO,GACpB,EAAI,SAAS,MAAO,GACpB,EAAI,SAAS,MAAO,GACpB,EAAK,EAAI,EAET,EAAO,EAAM,GACd,EAAM,GAAM,IAAQ,GACpB,EAAM,GAAM,IAAQ,GACpB,EAAM,GAAO,IAAU,EAE1B,MAAO,MCvCT,sBAAI,IAAa,cACb,GACJ,AAAI,QAAQ,WAAa,SAAW,OAAO,gBACzC,GAAe,KAEf,GAAe,KAGjB,GAAO,QAAU,GACjB,GAAM,KAAO,GAEb,YAAgB,EAAM,EAAS,GAM7B,GALI,MAAO,IAAY,YACrB,GAAK,EACL,EAAU,IAGR,CAAC,GACH,GAAI,MAAO,UAAY,WACrB,KAAM,IAAI,WAAU,yBAGtB,MAAO,IAAI,SAAQ,SAAU,EAAS,GACpC,GAAM,EAAM,GAAW,GAAI,SAAU,EAAI,GACvC,AAAI,EACF,EAAO,GAEP,EAAQ,OAMhB,GAAK,EAAM,GAAW,GAAI,SAAU,EAAI,GAEtC,AAAI,GACE,GAAG,OAAS,UAAY,GAAW,EAAQ,eAC7C,GAAK,KACL,EAAK,IAGT,EAAG,EAAI,KAIX,YAAe,EAAM,GAEnB,IACE,MAAO,IAAK,KAAK,EAAM,GAAW,UAC3B,GACP,GAAI,GAAW,EAAQ,cAAgB,EAAG,OAAS,SACjD,MAAO,GAEP,KAAM,OCrDZ,sBAAM,IAAY,QAAQ,WAAa,SACnC,QAAQ,IAAI,SAAW,UACvB,QAAQ,IAAI,SAAW,OAErB,GAAe,gBACf,GAAQ,GAAY,IAAM,IAC1B,GAAgB,KAEhB,GAAmB,AAAC,GACxB,OAAO,OAAO,GAAI,OAAM,cAAc,KAAQ,CAAE,KAAM,WAElD,GAAc,CAAC,EAAK,KACxB,GAAM,GAAQ,EAAI,OAAS,GAIrB,EAAU,EAAI,MAAM,OAAS,IAAa,EAAI,MAAM,MAAQ,CAAC,IAE/D,CAEE,GAAI,GAAY,CAAC,QAAQ,OAAS,GAClC,GAAI,GAAI,MAAQ,QAAQ,IAAI,MACe,IAAI,MAAM,IAGrD,EAAa,GACf,EAAI,SAAW,QAAQ,IAAI,SAAW,sBACtC,GACE,EAAU,GAAY,EAAW,MAAM,GAAS,CAAC,IAEvD,MAAI,KACE,EAAI,QAAQ,OAAS,IAAM,EAAQ,KAAO,IAC5C,EAAQ,QAAQ,IAGb,CACL,UACA,UACA,eAIE,GAAQ,CAAC,EAAK,EAAK,KACvB,AAAI,MAAO,IAAQ,YACjB,GAAK,EACL,EAAM,IAEH,GACH,GAAM,IAER,GAAM,CAAE,UAAS,UAAS,cAAe,GAAY,EAAK,GACpD,EAAQ,GAER,EAAO,GAAK,GAAI,SAAQ,CAAC,EAAS,KACtC,GAAI,IAAM,EAAQ,OAChB,MAAO,GAAI,KAAO,EAAM,OAAS,EAAQ,GACrC,EAAO,GAAiB,IAE9B,GAAM,GAAQ,EAAQ,GAChB,EAAW,SAAS,KAAK,GAAS,EAAM,MAAM,EAAG,IAAM,EAEvD,EAAO,GAAK,KAAK,EAAU,GAC3B,EAAI,CAAC,GAAY,YAAY,KAAK,GAAO,EAAI,MAAM,EAAG,GAAK,EAC7D,EAEJ,EAAQ,EAAQ,EAAG,EAAG,MAGlB,EAAU,CAAC,EAAG,EAAG,IAAO,GAAI,SAAQ,CAAC,EAAS,KAClD,GAAI,IAAO,EAAQ,OACjB,MAAO,GAAQ,EAAK,EAAI,IAC1B,GAAM,GAAM,EAAQ,GACpB,GAAM,EAAI,EAAK,CAAE,QAAS,GAAc,CAAC,EAAI,KAC3C,GAAI,CAAC,GAAM,EACT,GAAI,EAAI,IACN,EAAM,KAAK,EAAI,OAEf,OAAO,GAAQ,EAAI,GAEvB,MAAO,GAAQ,EAAQ,EAAG,EAAG,EAAK,QAItC,MAAO,GAAK,EAAK,GAAG,KAAK,GAAO,EAAG,KAAM,GAAM,GAAM,EAAK,IAGtD,GAAY,CAAC,EAAK,KACtB,EAAM,GAAO,GAEb,GAAM,CAAE,UAAS,UAAS,cAAe,GAAY,EAAK,GACpD,EAAQ,GAEd,OAAS,GAAI,EAAG,EAAI,EAAQ,OAAQ,KAClC,GAAM,GAAQ,EAAQ,GAChB,EAAW,SAAS,KAAK,GAAS,EAAM,MAAM,EAAG,IAAM,EAEvD,EAAO,GAAK,KAAK,EAAU,GAC3B,EAAI,CAAC,GAAY,YAAY,KAAK,GAAO,EAAI,MAAM,EAAG,GAAK,EAC7D,EAEJ,OAAS,GAAI,EAAG,EAAI,EAAQ,OAAQ,KAClC,GAAM,GAAM,EAAI,EAAQ,GACxB,IAEE,GADW,GAAM,KAAK,EAAK,CAAE,QAAS,IAEpC,GAAI,EAAI,IACN,EAAM,KAAK,OAEX,OAAO,SAEJ,MAIb,GAAI,EAAI,KAAO,EAAM,OACnB,MAAO,GAET,GAAI,EAAI,QACN,MAAO,MAET,KAAM,IAAiB,IAGzB,GAAO,QAAU,GACjB,GAAM,KAAO,KC5Hb,sBAAI,IAAU,SAAU,GACpB,aAEA,GAAI,GAAO,IACP,EAAW,EACX,EAAU,iBACV,EAAc,EAAa,GAC3B,EAAmB,uCAEnB,EAAuB,MAAO,SAAW,WAE7C,WAAiB,EAAG,EAAO,EAAU,GACjC,MAAI,OAAO,IAAM,YAAoB,EAAQ,GACzC,MAAO,IAAU,YAAoB,CAAC,GAAU,IAAM,CAAC,EAAW,EAAW,GAAK,GAAU,EAAG,EAAO,EAAU,GAC7G,EAAW,GAGtB,WAAoB,EAAO,GACvB,KAAK,MAAQ,EACb,KAAK,KAAO,EACZ,KAAK,QAAU,GAEnB,EAAW,UAAY,OAAO,OAAO,EAAQ,WAE7C,WAAsB,GAClB,KAAK,MAAQ,EACb,KAAK,KAAO,EAAQ,EACpB,KAAK,QAAU,GAEnB,EAAa,UAAY,OAAO,OAAO,EAAQ,WAE/C,WAAsB,GAClB,KAAK,MAAQ,EAEjB,EAAa,UAAY,OAAO,OAAO,EAAQ,WAE/C,WAAmB,GACf,MAAO,CAAC,EAAU,GAAK,EAAI,EAG/B,WAAsB,GAClB,MAAI,GAAI,IACG,CAAC,GACR,EAAI,KACG,CAAC,EAAI,IAAK,KAAK,MAAM,EAAI,MAC7B,CAAC,EAAI,IAAK,KAAK,MAAM,EAAI,KAAO,IAAK,KAAK,MAAM,EAAI,OAG/D,WAAsB,GAClB,EAAK,GACL,GAAI,GAAS,EAAI,OACjB,GAAI,EAAS,GAAK,GAAW,EAAK,GAAe,EAC7C,OAAQ,OACC,GAAG,MAAO,OACV,GAAG,MAAO,GAAI,OACd,GAAG,MAAO,GAAI,GAAK,EAAI,GAAK,UACxB,MAAO,GAAI,GAAM,GAAI,GAAK,EAAI,GAAK,GAAQ,EAG5D,MAAO,GAGX,WAAc,GAEV,OADI,GAAI,EAAE,OACH,EAAE,EAAE,KAAO,GAAE,CACpB,EAAE,OAAS,EAAI,EAGnB,WAAqB,GAGjB,OAFI,GAAI,GAAI,OAAM,GACd,EAAI,GACD,EAAE,EAAI,GACT,EAAE,GAAK,EAEX,MAAO,GAGX,WAAkB,GACd,MAAI,GAAI,EAAU,KAAK,MAAM,GACtB,KAAK,KAAK,GAGrB,WAAa,EAAG,GACZ,GAAI,GAAM,EAAE,OACR,EAAM,EAAE,OACR,EAAI,GAAI,OAAM,GACd,EAAQ,EACR,EAAO,EACP,EAAK,EACT,IAAK,EAAI,EAAG,EAAI,EAAK,IACjB,EAAM,EAAE,GAAK,EAAE,GAAK,EACpB,EAAQ,GAAO,EAAO,EAAI,EAC1B,EAAE,GAAK,EAAM,EAAQ,EAEzB,KAAO,EAAI,GACP,EAAM,EAAE,GAAK,EACb,EAAQ,IAAQ,EAAO,EAAI,EAC3B,EAAE,KAAO,EAAM,EAAQ,EAE3B,MAAI,GAAQ,GAAG,EAAE,KAAK,GACf,EAGX,WAAgB,EAAG,GACf,MAAI,GAAE,QAAU,EAAE,OAAe,EAAI,EAAG,GACjC,EAAI,EAAG,GAGlB,WAAkB,EAAG,GACjB,GAAI,GAAI,EAAE,OACN,EAAI,GAAI,OAAM,GACd,EAAO,EACP,EAAK,EACT,IAAK,EAAI,EAAG,EAAI,EAAG,IACf,EAAM,EAAE,GAAK,EAAO,EACpB,EAAQ,KAAK,MAAM,EAAM,GACzB,EAAE,GAAK,EAAM,EAAQ,EACrB,GAAS,EAEb,KAAO,EAAQ,GACX,EAAE,KAAO,EAAQ,EACjB,EAAQ,KAAK,MAAM,EAAQ,GAE/B,MAAO,GAGX,EAAW,UAAU,IAAM,SAAU,GACjC,GAAI,GAAI,EAAW,GACnB,GAAI,KAAK,OAAS,EAAE,KAChB,MAAO,MAAK,SAAS,EAAE,UAE3B,GAAI,GAAI,KAAK,MAAO,EAAI,EAAE,MAC1B,MAAI,GAAE,QACK,GAAI,GAAW,EAAS,EAAG,KAAK,IAAI,IAAK,KAAK,MAElD,GAAI,GAAW,EAAO,EAAG,GAAI,KAAK,OAE7C,EAAW,UAAU,KAAO,EAAW,UAAU,IAEjD,EAAa,UAAU,IAAM,SAAU,GACnC,GAAI,GAAI,EAAW,GACf,EAAI,KAAK,MACb,GAAI,EAAI,IAAM,EAAE,KACZ,MAAO,MAAK,SAAS,EAAE,UAE3B,GAAI,GAAI,EAAE,MACV,GAAI,EAAE,SACF,GAAI,EAAU,EAAI,GAAI,MAAO,IAAI,GAAa,EAAI,GAClD,EAAI,EAAa,KAAK,IAAI,IAE9B,MAAO,IAAI,GAAW,EAAS,EAAG,KAAK,IAAI,IAAK,EAAI,IAExD,EAAa,UAAU,KAAO,EAAa,UAAU,IAErD,EAAa,UAAU,IAAM,SAAU,GACnC,MAAO,IAAI,GAAa,KAAK,MAAQ,EAAW,GAAG,QAEvD,EAAa,UAAU,KAAO,EAAa,UAAU,IAErD,WAAkB,EAAG,GACjB,GAAI,GAAM,EAAE,OACR,EAAM,EAAE,OACR,EAAI,GAAI,OAAM,GACd,EAAS,EACT,EAAO,EACP,EAAG,EACP,IAAK,EAAI,EAAG,EAAI,EAAK,IACjB,EAAa,EAAE,GAAK,EAAS,EAAE,GAC/B,AAAI,EAAa,EACb,IAAc,EACd,EAAS,GACN,EAAS,EAChB,EAAE,GAAK,EAEX,IAAK,EAAI,EAAK,EAAI,EAAK,KAEnB,GADA,EAAa,EAAE,GAAK,EAChB,EAAa,EAAG,GAAc,OAE9B,EAAE,KAAO,EACT,MAEJ,EAAE,GAAK,EAEX,KAAO,EAAI,EAAK,IACZ,EAAE,GAAK,EAAE,GAEb,SAAK,GACE,EAGX,WAAqB,EAAG,EAAG,GACvB,GAAI,GAQJ,MAPA,AAAI,IAAW,EAAG,IAAM,EACpB,EAAQ,EAAS,EAAG,GAEpB,GAAQ,EAAS,EAAG,GACpB,EAAO,CAAC,GAEZ,EAAQ,EAAa,GACjB,MAAO,IAAU,SACb,IAAM,GAAQ,CAAC,GACZ,GAAI,GAAa,IAErB,GAAI,GAAW,EAAO,GAGjC,WAAuB,EAAG,EAAG,GACzB,GAAI,GAAI,EAAE,OACN,EAAI,GAAI,OAAM,GACd,EAAQ,CAAC,EACT,EAAO,EACP,EAAG,EACP,IAAK,EAAI,EAAG,EAAI,EAAG,IACf,EAAa,EAAE,GAAK,EACpB,EAAQ,KAAK,MAAM,EAAa,GAChC,GAAc,EACd,EAAE,GAAK,EAAa,EAAI,EAAa,EAAO,EAGhD,MADA,GAAI,EAAa,GACb,MAAO,IAAM,SACT,IAAM,GAAI,CAAC,GACR,GAAI,GAAa,IACnB,GAAI,GAAW,EAAG,GAG/B,EAAW,UAAU,SAAW,SAAU,GACtC,GAAI,GAAI,EAAW,GACnB,GAAI,KAAK,OAAS,EAAE,KAChB,MAAO,MAAK,IAAI,EAAE,UAEtB,GAAI,GAAI,KAAK,MAAO,EAAI,EAAE,MAC1B,MAAI,GAAE,QACK,EAAc,EAAG,KAAK,IAAI,GAAI,KAAK,MACvC,EAAY,EAAG,EAAG,KAAK,OAElC,EAAW,UAAU,MAAQ,EAAW,UAAU,SAElD,EAAa,UAAU,SAAW,SAAU,GACxC,GAAI,GAAI,EAAW,GACf,EAAI,KAAK,MACb,GAAI,EAAI,IAAM,EAAE,KACZ,MAAO,MAAK,IAAI,EAAE,UAEtB,GAAI,GAAI,EAAE,MACV,MAAI,GAAE,QACK,GAAI,GAAa,EAAI,GAEzB,EAAc,EAAG,KAAK,IAAI,GAAI,GAAK,IAE9C,EAAa,UAAU,MAAQ,EAAa,UAAU,SAEtD,EAAa,UAAU,SAAW,SAAU,GACxC,MAAO,IAAI,GAAa,KAAK,MAAQ,EAAW,GAAG,QAEvD,EAAa,UAAU,MAAQ,EAAa,UAAU,SAEtD,EAAW,UAAU,OAAS,WAC1B,MAAO,IAAI,GAAW,KAAK,MAAO,CAAC,KAAK,OAE5C,EAAa,UAAU,OAAS,WAC5B,GAAI,GAAO,KAAK,KACZ,EAAQ,GAAI,GAAa,CAAC,KAAK,OACnC,SAAM,KAAO,CAAC,EACP,GAEX,EAAa,UAAU,OAAS,WAC5B,MAAO,IAAI,GAAa,CAAC,KAAK,QAGlC,EAAW,UAAU,IAAM,WACvB,MAAO,IAAI,GAAW,KAAK,MAAO,KAEtC,EAAa,UAAU,IAAM,WACzB,MAAO,IAAI,GAAa,KAAK,IAAI,KAAK,SAE1C,EAAa,UAAU,IAAM,WACzB,MAAO,IAAI,GAAa,KAAK,OAAS,EAAI,KAAK,MAAQ,CAAC,KAAK,QAIjE,WAAsB,EAAG,GACrB,GAAI,GAAM,EAAE,OACR,EAAM,EAAE,OACR,EAAI,EAAM,EACV,EAAI,EAAY,GAChB,EAAO,EACP,EAAS,EAAO,EAAG,EAAK,EAC5B,IAAK,EAAI,EAAG,EAAI,EAAK,EAAE,GACnB,EAAM,EAAE,GACR,OAAS,GAAI,EAAG,EAAI,EAAK,EAAE,EACvB,EAAM,EAAE,GACR,EAAU,EAAM,EAAM,EAAE,EAAI,GAC5B,EAAQ,KAAK,MAAM,EAAU,GAC7B,EAAE,EAAI,GAAK,EAAU,EAAQ,EAC7B,EAAE,EAAI,EAAI,IAAM,EAGxB,SAAK,GACE,EAGX,WAAuB,EAAG,GACtB,GAAI,GAAI,EAAE,OACN,EAAI,GAAI,OAAM,GACd,EAAO,EACP,EAAQ,EACR,EAAS,EACb,IAAK,EAAI,EAAG,EAAI,EAAG,IACf,EAAU,EAAE,GAAK,EAAI,EACrB,EAAQ,KAAK,MAAM,EAAU,GAC7B,EAAE,GAAK,EAAU,EAAQ,EAE7B,KAAO,EAAQ,GACX,EAAE,KAAO,EAAQ,EACjB,EAAQ,KAAK,MAAM,EAAQ,GAE/B,MAAO,GAGX,WAAmB,EAAG,GAElB,OADI,GAAI,GACD,KAAM,GAAG,EAAE,KAAK,GACvB,MAAO,GAAE,OAAO,GAGpB,WAA2B,EAAG,GAC1B,GAAI,GAAI,KAAK,IAAI,EAAE,OAAQ,EAAE,QAE7B,GAAI,GAAK,GAAI,MAAO,GAAa,EAAG,GACpC,EAAI,KAAK,KAAK,EAAI,GAElB,GAAI,GAAI,EAAE,MAAM,GACZ,EAAI,EAAE,MAAM,EAAG,GACf,EAAI,EAAE,MAAM,GACZ,EAAI,EAAE,MAAM,EAAG,GAEf,EAAK,EAAkB,EAAG,GAC1B,EAAK,EAAkB,EAAG,GAC1B,EAAO,EAAkB,EAAO,EAAG,GAAI,EAAO,EAAG,IAEjD,EAAU,EAAO,EAAO,EAAI,EAAU,EAAS,EAAS,EAAM,GAAK,GAAK,IAAK,EAAU,EAAI,EAAI,IACnG,SAAK,GACE,EAKX,WAAsB,EAAI,GACtB,MAAO,MAAS,EAAK,KAAQ,EAAK,MAAW,EAAK,EAAK,EAG3D,EAAW,UAAU,SAAW,SAAU,GACtC,GAAI,GAAI,EAAW,GACf,EAAI,KAAK,MAAO,EAAI,EAAE,MACtB,EAAO,KAAK,OAAS,EAAE,KACvB,EACJ,GAAI,EAAE,SACF,GAAI,IAAM,EAAG,MAAO,GAAQ,GAC5B,GAAI,IAAM,EAAG,MAAO,MACpB,GAAI,IAAM,GAAI,MAAO,MAAK,SAE1B,GADA,EAAM,KAAK,IAAI,GACX,EAAM,EACN,MAAO,IAAI,GAAW,EAAc,EAAG,GAAM,GAEjD,EAAI,EAAa,GAErB,MAAI,GAAa,EAAE,OAAQ,EAAE,QAClB,GAAI,GAAW,EAAkB,EAAG,GAAI,GAC5C,GAAI,GAAW,EAAa,EAAG,GAAI,IAG9C,EAAW,UAAU,MAAQ,EAAW,UAAU,SAElD,WAA+B,EAAG,EAAG,GACjC,MAAI,GAAI,EACG,GAAI,GAAW,EAAc,EAAG,GAAI,GAExC,GAAI,GAAW,EAAa,EAAG,EAAa,IAAK,GAE5D,EAAa,UAAU,iBAAmB,SAAU,GAChD,MAAI,GAAU,EAAE,MAAQ,KAAK,OAClB,GAAI,GAAa,EAAE,MAAQ,KAAK,OAEpC,EAAsB,KAAK,IAAI,EAAE,OAAQ,EAAa,KAAK,IAAI,KAAK,QAAS,KAAK,OAAS,EAAE,OAExG,EAAW,UAAU,iBAAmB,SAAU,GAC9C,MAAI,GAAE,QAAU,EAAU,EAAQ,GAC9B,EAAE,QAAU,EAAU,KACtB,EAAE,QAAU,GAAW,KAAK,SACzB,EAAsB,KAAK,IAAI,EAAE,OAAQ,KAAK,MAAO,KAAK,OAAS,EAAE,OAEhF,EAAa,UAAU,SAAW,SAAU,GACxC,MAAO,GAAW,GAAG,iBAAiB,OAE1C,EAAa,UAAU,MAAQ,EAAa,UAAU,SAEtD,EAAa,UAAU,SAAW,SAAU,GACxC,MAAO,IAAI,GAAa,KAAK,MAAQ,EAAW,GAAG,QAEvD,EAAa,UAAU,MAAQ,EAAa,UAAU,SAEtD,WAAgB,GAEZ,GAAI,GAAI,EAAE,OACN,EAAI,EAAY,EAAI,GACpB,EAAO,EACP,EAAS,EAAO,EAAG,EAAK,EAC5B,IAAK,EAAI,EAAG,EAAI,EAAG,KACf,EAAM,EAAE,GACR,EAAQ,EAAI,EAAM,EAClB,OAAS,GAAI,EAAG,EAAI,EAAG,IACnB,EAAM,EAAE,GACR,EAAU,EAAK,GAAM,GAAO,EAAE,EAAI,GAAK,EACvC,EAAQ,KAAK,MAAM,EAAU,GAC7B,EAAE,EAAI,GAAK,EAAU,EAAQ,EAEjC,EAAE,EAAI,GAAK,EAEf,SAAK,GACE,EAGX,EAAW,UAAU,OAAS,WAC1B,MAAO,IAAI,GAAW,EAAO,KAAK,OAAQ,KAG9C,EAAa,UAAU,OAAS,WAC5B,GAAI,GAAQ,KAAK,MAAQ,KAAK,MAC9B,MAAI,GAAU,GAAe,GAAI,GAAa,GACvC,GAAI,GAAW,EAAO,EAAa,KAAK,IAAI,KAAK,SAAU,KAGtE,EAAa,UAAU,OAAS,SAAU,GACtC,MAAO,IAAI,GAAa,KAAK,MAAQ,KAAK,QAG9C,WAAiB,EAAG,GAChB,GAAI,GAAM,EAAE,OACR,EAAM,EAAE,OACR,EAAO,EACP,EAAS,EAAY,EAAE,QACvB,EAA8B,EAAE,EAAM,GAEtC,EAAS,KAAK,KAAK,EAAQ,GAAI,IAC/B,EAAY,EAAc,EAAG,GAC7B,EAAU,EAAc,EAAG,GAC3B,EAAe,EAAO,EAAO,GAAQ,GAAG,GAAG,GAI/C,IAHI,EAAU,QAAU,GAAK,EAAU,KAAK,GAC5C,EAAQ,KAAK,GACb,EAA8B,EAAQ,EAAM,GACvC,EAAQ,EAAM,EAAK,GAAS,EAAG,KAShC,IARA,EAAgB,EAAO,EACnB,EAAU,EAAQ,KAAS,GAC3B,GAAgB,KAAK,MAAO,GAAU,EAAQ,GAAO,EAAO,EAAU,EAAQ,EAAM,IAAM,IAG9F,EAAQ,EACR,GAAS,EACT,GAAI,EAAQ,OACP,GAAI,EAAG,GAAI,GAAG,KACf,GAAS,EAAgB,EAAQ,IACjC,GAAI,KAAK,MAAM,EAAQ,GACvB,IAAU,EAAU,EAAQ,IAAM,GAAQ,GAAI,GAC9C,EAAQ,GACR,AAAI,GAAS,EACT,GAAU,EAAQ,IAAK,GAAS,EAChC,GAAS,IAET,GAAU,EAAQ,IAAK,GACvB,GAAS,GAGjB,KAAO,KAAW,IAGd,IAFA,GAAiB,EACjB,EAAQ,EACH,GAAI,EAAG,GAAI,GAAG,KACf,GAAS,EAAU,EAAQ,IAAK,EAAO,EAAQ,IAC/C,AAAI,EAAQ,EACR,GAAU,EAAQ,IAAK,EAAQ,EAC/B,EAAQ,GAER,GAAU,EAAQ,IAAK,EACvB,EAAQ,GAGhB,IAAU,EAEd,EAAO,GAAS,EAGpB,SAAY,EAAY,EAAW,GAAQ,GACpC,CAAC,EAAa,GAAS,EAAa,IAG/C,WAAiB,EAAG,GAQhB,OANI,GAAM,EAAE,OACR,EAAM,EAAE,OACR,EAAS,GACT,EAAO,GACP,EAAO,EACP,EAAO,EAAM,EAAO,EAAO,EACxB,IAGH,GAFA,EAAK,QAAQ,EAAE,EAAE,IACjB,EAAK,GACD,GAAW,EAAM,GAAK,GACtB,EAAO,KAAK,GACZ,SAEJ,EAAO,EAAK,OACZ,EAAQ,EAAK,EAAO,GAAK,EAAO,EAAK,EAAO,GAC5C,EAAQ,EAAE,EAAM,GAAK,EAAO,EAAE,EAAM,GAChC,EAAO,GACP,GAAS,GAAQ,GAAK,GAE1B,EAAQ,KAAK,KAAK,EAAQ,GAC1B,GAEI,GADA,EAAQ,EAAc,EAAG,GACrB,GAAW,EAAO,IAAS,EAAG,MAClC,UACK,GACT,EAAO,KAAK,GACZ,EAAO,EAAS,EAAM,GAE1B,SAAO,UACA,CAAC,EAAa,GAAS,EAAa,IAG/C,WAAqB,EAAO,GACxB,GAAI,GAAS,EAAM,OACf,EAAW,EAAY,GACvB,EAAO,EACP,EAAG,EAAG,EAAW,EAErB,IADA,EAAY,EACP,EAAI,EAAS,EAAG,GAAK,EAAG,EAAE,EAC3B,EAAU,EAAY,EAAO,EAAM,GACnC,EAAI,EAAS,EAAU,GACvB,EAAY,EAAU,EAAI,EAC1B,EAAS,GAAK,EAAI,EAEtB,MAAO,CAAC,EAAU,EAAY,GAGlC,YAAmB,EAAM,GACrB,GAAI,GAAO,EAAI,EAAW,GAC1B,GAAI,EACA,MAAO,CAAC,GAAI,GAAa,EAAK,MAAQ,EAAE,OAAQ,GAAI,GAAa,EAAK,MAAQ,EAAE,QAEpF,GAAI,GAAI,EAAK,MAAO,EAAI,EAAE,MACtB,EACJ,GAAI,IAAM,EAAG,KAAM,IAAI,OAAM,yBAC7B,GAAI,EAAK,QACL,MAAI,GAAE,QACK,CAAC,GAAI,GAAa,EAAS,EAAI,IAAK,GAAI,GAAa,EAAI,IAE7D,CAAC,EAAQ,GAAI,GAExB,GAAI,EAAE,SACF,GAAI,IAAM,EAAG,MAAO,CAAC,EAAM,EAAQ,IACnC,GAAI,GAAK,GAAI,MAAO,CAAC,EAAK,SAAU,EAAQ,IAC5C,GAAI,GAAM,KAAK,IAAI,GACnB,GAAI,EAAM,GACN,EAAQ,EAAY,EAAG,GACvB,EAAW,EAAa,EAAM,IAC9B,GAAI,GAAY,EAAM,GAEtB,MADI,GAAK,MAAM,GAAY,CAAC,GACxB,MAAO,IAAa,SAChB,GAAK,OAAS,EAAE,MAAM,GAAW,CAAC,GAC/B,CAAC,GAAI,GAAa,GAAW,GAAI,GAAa,KAElD,CAAC,GAAI,GAAW,EAAU,EAAK,OAAS,EAAE,MAAO,GAAI,GAAa,IAE7E,EAAI,EAAa,GAErB,GAAI,GAAa,GAAW,EAAG,GAC/B,GAAI,IAAe,GAAI,MAAO,CAAC,EAAQ,GAAI,GAC3C,GAAI,IAAe,EAAG,MAAO,CAAC,EAAQ,EAAK,OAAS,EAAE,KAAO,EAAI,IAAK,EAAQ,IAG9E,AAAI,EAAE,OAAS,EAAE,QAAU,IACvB,EAAQ,EAAQ,EAAG,GAClB,EAAQ,EAAQ,EAAG,GAExB,EAAW,EAAM,GACjB,GAAI,GAAQ,EAAK,OAAS,EAAE,KACxB,EAAM,EAAM,GACZ,EAAQ,EAAK,KACjB,MAAI,OAAO,IAAa,SAChB,IAAO,GAAW,CAAC,GACvB,EAAW,GAAI,GAAa,IACzB,EAAW,GAAI,GAAW,EAAU,GAC3C,AAAI,MAAO,IAAQ,SACX,IAAO,GAAM,CAAC,GAClB,EAAM,GAAI,GAAa,IACpB,EAAM,GAAI,GAAW,EAAK,GAC1B,CAAC,EAAU,GAGtB,EAAW,UAAU,OAAS,SAAU,GACpC,GAAI,GAAS,GAAU,KAAM,GAC7B,MAAO,CACH,SAAU,EAAO,GACjB,UAAW,EAAO,KAG1B,EAAa,UAAU,OAAS,EAAa,UAAU,OAAS,EAAW,UAAU,OAGrF,EAAW,UAAU,OAAS,SAAU,GACpC,MAAO,IAAU,KAAM,GAAG,IAE9B,EAAa,UAAU,KAAO,EAAa,UAAU,OAAS,SAAU,GACpE,MAAO,IAAI,GAAa,KAAK,MAAQ,EAAW,GAAG,QAEvD,EAAa,UAAU,KAAO,EAAa,UAAU,OAAS,EAAW,UAAU,KAAO,EAAW,UAAU,OAE/G,EAAW,UAAU,IAAM,SAAU,GACjC,MAAO,IAAU,KAAM,GAAG,IAE9B,EAAa,UAAU,IAAM,EAAa,UAAU,UAAY,SAAU,GACtE,MAAO,IAAI,GAAa,KAAK,MAAQ,EAAW,GAAG,QAEvD,EAAa,UAAU,UAAY,EAAa,UAAU,IAAM,EAAW,UAAU,UAAY,EAAW,UAAU,IAEtH,EAAW,UAAU,IAAM,SAAU,GACjC,GAAI,GAAI,EAAW,GACf,EAAI,KAAK,MACT,EAAI,EAAE,MACN,EAAO,EAAG,EACd,GAAI,IAAM,EAAG,MAAO,GAAQ,GAC5B,GAAI,IAAM,EAAG,MAAO,GAAQ,GAC5B,GAAI,IAAM,EAAG,MAAO,GAAQ,GAC5B,GAAI,IAAM,GAAI,MAAO,GAAE,SAAW,EAAQ,GAAK,EAAQ,IACvD,GAAI,EAAE,KACF,MAAO,GAAQ,GAEnB,GAAI,CAAC,EAAE,QAAS,KAAM,IAAI,OAAM,gBAAkB,EAAE,WAAa,kBACjE,GAAI,KAAK,SACD,EAAU,EAAQ,KAAK,IAAI,EAAG,IAC9B,MAAO,IAAI,GAAa,EAAS,IAIzC,IAFA,EAAI,KACJ,EAAI,EAAQ,GAEJ,EAAI,IACJ,GAAI,EAAE,MAAM,GACZ,EAAE,GAEF,IAAM,GACV,GAAK,EACL,EAAI,EAAE,SAEV,MAAO,IAEX,EAAa,UAAU,IAAM,EAAW,UAAU,IAElD,EAAa,UAAU,IAAM,SAAU,GACnC,GAAI,GAAI,EAAW,GACf,EAAI,KAAK,MAAO,EAAI,EAAE,MACtB,EAAK,OAAO,GAAI,EAAK,OAAO,GAAI,EAAK,OAAO,GAChD,GAAI,IAAM,EAAI,MAAO,GAAQ,GAC7B,GAAI,IAAM,EAAI,MAAO,GAAQ,GAC7B,GAAI,IAAM,EAAI,MAAO,GAAQ,GAC7B,GAAI,IAAM,OAAO,IAAK,MAAO,GAAE,SAAW,EAAQ,GAAK,EAAQ,IAC/D,GAAI,EAAE,aAAc,MAAO,IAAI,GAAa,GAG5C,OAFI,GAAI,KACJ,EAAI,EAAQ,GAEP,GAAI,KAAQ,GACb,GAAI,EAAE,MAAM,GACZ,EAAE,GAEF,IAAM,GACV,GAAK,EACL,EAAI,EAAE,SAEV,MAAO,IAGX,EAAW,UAAU,OAAS,SAAU,EAAK,GAGzC,GAFA,EAAM,EAAW,GACjB,EAAM,EAAW,GACb,EAAI,SAAU,KAAM,IAAI,OAAM,qCAClC,GAAI,GAAI,EAAQ,GACZ,EAAO,KAAK,IAAI,GAKpB,IAJI,EAAI,cACJ,GAAM,EAAI,SAAS,EAAQ,KAC3B,EAAO,EAAK,OAAO,IAEhB,EAAI,eACP,GAAI,EAAK,SAAU,MAAO,GAAQ,GAClC,AAAI,EAAI,SAAS,GAAI,EAAE,SAAS,GAAM,IAAI,IAC1C,EAAM,EAAI,OAAO,GACjB,EAAO,EAAK,SAAS,IAAI,GAE7B,MAAO,IAEX,EAAa,UAAU,OAAS,EAAa,UAAU,OAAS,EAAW,UAAU,OAErF,YAAoB,EAAG,GACnB,GAAI,EAAE,SAAW,EAAE,OACf,MAAO,GAAE,OAAS,EAAE,OAAS,EAAI,GAErC,OAAS,GAAI,EAAE,OAAS,EAAG,GAAK,EAAG,IAC/B,GAAI,EAAE,KAAO,EAAE,GAAI,MAAO,GAAE,GAAK,EAAE,GAAK,EAAI,GAEhD,MAAO,GAGX,EAAW,UAAU,WAAa,SAAU,GACxC,GAAI,GAAI,EAAW,GACf,EAAI,KAAK,MACT,EAAI,EAAE,MACV,MAAI,GAAE,QAAgB,EACf,GAAW,EAAG,IAEzB,EAAa,UAAU,WAAa,SAAU,GAC1C,GAAI,GAAI,EAAW,GACf,EAAI,KAAK,IAAI,KAAK,OAClB,EAAI,EAAE,MACV,MAAI,GAAE,QACF,GAAI,KAAK,IAAI,GACN,IAAM,EAAI,EAAI,EAAI,EAAI,EAAI,IAE9B,IAEX,EAAa,UAAU,WAAa,SAAU,GAC1C,GAAI,GAAI,KAAK,MACT,EAAI,EAAW,GAAG,MACtB,SAAI,GAAK,EAAI,EAAI,CAAC,EAClB,EAAI,GAAK,EAAI,EAAI,CAAC,EACX,IAAM,EAAI,EAAI,EAAI,EAAI,EAAI,IAGrC,EAAW,UAAU,QAAU,SAAU,GAGrC,GAAI,IAAM,SACN,MAAO,GAEX,GAAI,IAAM,UACN,MAAO,GAGX,GAAI,GAAI,EAAW,GACf,EAAI,KAAK,MACT,EAAI,EAAE,MACV,MAAI,MAAK,OAAS,EAAE,KACT,EAAE,KAAO,EAAI,GAEpB,EAAE,QACK,KAAK,KAAO,GAAK,EAErB,GAAW,EAAG,GAAM,MAAK,KAAO,GAAK,IAEhD,EAAW,UAAU,UAAY,EAAW,UAAU,QAEtD,EAAa,UAAU,QAAU,SAAU,GACvC,GAAI,IAAM,SACN,MAAO,GAEX,GAAI,IAAM,UACN,MAAO,GAGX,GAAI,GAAI,EAAW,GACf,EAAI,KAAK,MACT,EAAI,EAAE,MACV,MAAI,GAAE,QACK,GAAK,EAAI,EAAI,EAAI,EAAI,EAAI,GAEhC,EAAI,IAAM,EAAE,KACL,EAAI,EAAI,GAAK,EAEjB,EAAI,EAAI,EAAI,IAEvB,EAAa,UAAU,UAAY,EAAa,UAAU,QAE1D,EAAa,UAAU,QAAU,SAAU,GACvC,GAAI,IAAM,SACN,MAAO,GAEX,GAAI,IAAM,UACN,MAAO,GAEX,GAAI,GAAI,KAAK,MACT,EAAI,EAAW,GAAG,MACtB,MAAO,KAAM,EAAI,EAAI,EAAI,EAAI,EAAI,IAErC,EAAa,UAAU,UAAY,EAAa,UAAU,QAE1D,EAAW,UAAU,OAAS,SAAU,GACpC,MAAO,MAAK,QAAQ,KAAO,GAE/B,EAAa,UAAU,GAAK,EAAa,UAAU,OAAS,EAAa,UAAU,GAAK,EAAa,UAAU,OAAS,EAAW,UAAU,GAAK,EAAW,UAAU,OAEvK,EAAW,UAAU,UAAY,SAAU,GACvC,MAAO,MAAK,QAAQ,KAAO,GAE/B,EAAa,UAAU,IAAM,EAAa,UAAU,UAAY,EAAa,UAAU,IAAM,EAAa,UAAU,UAAY,EAAW,UAAU,IAAM,EAAW,UAAU,UAEhL,EAAW,UAAU,QAAU,SAAU,GACrC,MAAO,MAAK,QAAQ,GAAK,GAE7B,EAAa,UAAU,GAAK,EAAa,UAAU,QAAU,EAAa,UAAU,GAAK,EAAa,UAAU,QAAU,EAAW,UAAU,GAAK,EAAW,UAAU,QAEzK,EAAW,UAAU,OAAS,SAAU,GACpC,MAAO,MAAK,QAAQ,GAAK,GAE7B,EAAa,UAAU,GAAK,EAAa,UAAU,OAAS,EAAa,UAAU,GAAK,EAAa,UAAU,OAAS,EAAW,UAAU,GAAK,EAAW,UAAU,OAEvK,EAAW,UAAU,gBAAkB,SAAU,GAC7C,MAAO,MAAK,QAAQ,IAAM,GAE9B,EAAa,UAAU,IAAM,EAAa,UAAU,gBAAkB,EAAa,UAAU,IAAM,EAAa,UAAU,gBAAkB,EAAW,UAAU,IAAM,EAAW,UAAU,gBAE5L,EAAW,UAAU,eAAiB,SAAU,GAC5C,MAAO,MAAK,QAAQ,IAAM,GAE9B,EAAa,UAAU,IAAM,EAAa,UAAU,eAAiB,EAAa,UAAU,IAAM,EAAa,UAAU,eAAiB,EAAW,UAAU,IAAM,EAAW,UAAU,eAE1L,EAAW,UAAU,OAAS,WAC1B,MAAQ,MAAK,MAAM,GAAK,IAAO,GAEnC,EAAa,UAAU,OAAS,WAC5B,MAAQ,MAAK,MAAQ,IAAO,GAEhC,EAAa,UAAU,OAAS,WAC5B,MAAQ,MAAK,MAAQ,OAAO,MAAQ,OAAO,IAG/C,EAAW,UAAU,MAAQ,WACzB,MAAQ,MAAK,MAAM,GAAK,IAAO,GAEnC,EAAa,UAAU,MAAQ,WAC3B,MAAQ,MAAK,MAAQ,IAAO,GAEhC,EAAa,UAAU,MAAQ,WAC3B,MAAQ,MAAK,MAAQ,OAAO,MAAQ,OAAO,IAG/C,EAAW,UAAU,WAAa,WAC9B,MAAO,CAAC,KAAK,MAEjB,EAAa,UAAU,WAAa,WAChC,MAAO,MAAK,MAAQ,GAExB,EAAa,UAAU,WAAa,EAAa,UAAU,WAE3D,EAAW,UAAU,WAAa,WAC9B,MAAO,MAAK,MAEhB,EAAa,UAAU,WAAa,WAChC,MAAO,MAAK,MAAQ,GAExB,EAAa,UAAU,WAAa,EAAa,UAAU,WAE3D,EAAW,UAAU,OAAS,WAC1B,MAAO,IAEX,EAAa,UAAU,OAAS,WAC5B,MAAO,MAAK,IAAI,KAAK,SAAW,GAEpC,EAAa,UAAU,OAAS,WAC5B,MAAO,MAAK,MAAM,QAAU,OAAO,IAGvC,EAAW,UAAU,OAAS,WAC1B,MAAO,IAEX,EAAa,UAAU,OAAS,WAC5B,MAAO,MAAK,QAAU,GAE1B,EAAa,UAAU,OAAS,WAC5B,MAAO,MAAK,QAAU,OAAO,IAGjC,EAAW,UAAU,cAAgB,SAAU,GAC3C,GAAI,GAAI,EAAW,GACnB,MAAI,GAAE,SAAiB,GACnB,EAAE,SAAiB,GACnB,EAAE,WAAW,KAAO,EAAU,KAAK,SAChC,KAAK,IAAI,GAAG,UAEvB,EAAa,UAAU,cAAgB,EAAa,UAAU,cAAgB,EAAW,UAAU,cAEnG,YAAsB,GAClB,GAAI,GAAI,EAAE,MACV,GAAI,EAAE,SAAU,MAAO,GACvB,GAAI,EAAE,OAAO,IAAM,EAAE,OAAO,IAAM,EAAE,OAAO,GAAI,MAAO,GACtD,GAAI,EAAE,UAAY,EAAE,cAAc,IAAM,EAAE,cAAc,GAAI,MAAO,GACnE,GAAI,EAAE,OAAO,IAAK,MAAO,GAI7B,YAAyB,EAAG,GAKxB,OAJI,GAAQ,EAAE,OACV,EAAI,EACJ,EAAI,EACJ,EAAG,EAAG,EAAG,EACN,EAAE,UAAU,EAAI,EAAE,OAAO,GAAI,IACpC,EAAM,IAAK,EAAI,EAAG,EAAI,EAAE,OAAQ,IAC5B,GAAI,GAAE,OAAO,EAAE,KACf,GAAI,GAAO,EAAE,IAAI,OAAO,EAAG,GACvB,IAAE,UAAY,EAAE,OAAO,MAC3B,IAAK,EAAI,EAAI,EAAG,GAAK,EAAG,KAEpB,GADA,EAAI,EAAE,SAAS,IAAI,GACf,EAAE,SAAU,MAAO,GACvB,GAAI,EAAE,OAAO,GAAQ,WAEzB,MAAO,GAEX,MAAO,GAIX,EAAW,UAAU,QAAU,SAAU,GACrC,GAAI,GAAU,GAAa,MAC3B,GAAI,IAAY,EAAW,MAAO,GAClC,GAAI,GAAI,KAAK,MACT,EAAO,EAAE,YACb,GAAI,GAAQ,GACR,MAAO,IAAgB,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,KAGvE,OAFI,GAAO,KAAK,IAAI,GAAK,EAAK,aAC1B,EAAI,KAAK,KAAM,IAAW,GAAS,EAAI,KAAK,IAAI,EAAM,GAAM,GACvD,EAAI,GAAI,EAAI,EAAG,EAAI,EAAG,IAC3B,EAAE,KAAK,GAAO,EAAI,IAEtB,MAAO,IAAgB,EAAG,IAE9B,EAAa,UAAU,QAAU,EAAa,UAAU,QAAU,EAAW,UAAU,QAEvF,EAAW,UAAU,gBAAkB,SAAU,EAAY,GACzD,GAAI,GAAU,GAAa,MAC3B,GAAI,IAAY,EAAW,MAAO,GAGlC,OAFI,GAAI,KAAK,MACT,EAAI,IAAe,EAAY,EAAI,EAC9B,EAAI,GAAI,EAAI,EAAG,EAAI,EAAG,IAC3B,EAAE,KAAK,GAAO,YAAY,EAAG,EAAE,MAAM,GAAI,IAE7C,MAAO,IAAgB,EAAG,IAE9B,EAAa,UAAU,gBAAkB,EAAa,UAAU,gBAAkB,EAAW,UAAU,gBAEvG,EAAW,UAAU,OAAS,SAAU,GAEpC,OADI,GAAI,GAAO,KAAM,EAAO,GAAO,IAAK,EAAI,EAAW,GAAI,EAAO,KAAK,MAAO,EAAG,EAAO,EACjF,CAAC,EAAK,UACT,EAAI,EAAE,OAAO,GACb,EAAQ,EACR,EAAQ,EACR,EAAI,EACJ,EAAI,EACJ,EAAO,EAAM,SAAS,EAAE,SAAS,IACjC,EAAO,EAAM,SAAS,EAAE,SAAS,IAErC,GAAI,CAAC,EAAE,SAAU,KAAM,IAAI,OAAM,KAAK,WAAa,QAAU,EAAE,WAAa,qBAI5E,MAHI,GAAE,QAAQ,KAAO,IACjB,GAAI,EAAE,IAAI,IAEV,KAAK,aACE,EAAE,SAEN,GAGX,EAAa,UAAU,OAAS,EAAa,UAAU,OAAS,EAAW,UAAU,OAErF,EAAW,UAAU,KAAO,WACxB,GAAI,GAAQ,KAAK,MACjB,MAAI,MAAK,KACE,EAAc,EAAO,EAAG,KAAK,MAEjC,GAAI,GAAW,EAAS,EAAO,GAAI,KAAK,OAEnD,EAAa,UAAU,KAAO,WAC1B,GAAI,GAAQ,KAAK,MACjB,MAAI,GAAQ,EAAI,EAAgB,GAAI,GAAa,EAAQ,GAClD,GAAI,GAAW,EAAa,KAEvC,EAAa,UAAU,KAAO,WAC1B,MAAO,IAAI,GAAa,KAAK,MAAQ,OAAO,KAGhD,EAAW,UAAU,KAAO,WACxB,GAAI,GAAQ,KAAK,MACjB,MAAI,MAAK,KACE,GAAI,GAAW,EAAS,EAAO,GAAI,IAEvC,EAAc,EAAO,EAAG,KAAK,OAExC,EAAa,UAAU,KAAO,WAC1B,GAAI,GAAQ,KAAK,MACjB,MAAI,GAAQ,EAAI,CAAC,EAAgB,GAAI,GAAa,EAAQ,GACnD,GAAI,GAAW,EAAa,KAEvC,EAAa,UAAU,KAAO,WAC1B,MAAO,IAAI,GAAa,KAAK,MAAQ,OAAO,KAIhD,OADI,IAAc,CAAC,GACZ,EAAI,GAAY,GAAY,OAAS,IAAM,GAAM,GAAY,KAAK,EAAI,GAAY,GAAY,OAAS,IAC9G,GAAI,IAAgB,GAAY,OAAQ,GAAgB,GAAY,GAAgB,GAEpF,YAAuB,GACnB,MAAO,MAAK,IAAI,IAAM,EAG1B,EAAW,UAAU,UAAY,SAAU,GACvC,GAAI,GAAI,EAAW,GAAG,aACtB,GAAI,CAAC,GAAc,GACf,KAAM,IAAI,OAAM,OAAO,GAAK,+BAEhC,GAAI,EAAI,EAAG,MAAO,MAAK,WAAW,CAAC,GACnC,GAAI,GAAS,KACb,GAAI,EAAO,SAAU,MAAO,GAC5B,KAAO,GAAK,IACR,EAAS,EAAO,SAAS,IACzB,GAAK,GAAgB,EAEzB,MAAO,GAAO,SAAS,GAAY,KAEvC,EAAa,UAAU,UAAY,EAAa,UAAU,UAAY,EAAW,UAAU,UAE3F,EAAW,UAAU,WAAa,SAAU,GACxC,GAAI,GACA,EAAI,EAAW,GAAG,aACtB,GAAI,CAAC,GAAc,GACf,KAAM,IAAI,OAAM,OAAO,GAAK,+BAEhC,GAAI,EAAI,EAAG,MAAO,MAAK,UAAU,CAAC,GAElC,OADI,GAAS,KACN,GAAK,KACR,GAAI,EAAO,UAAa,EAAO,cAAgB,EAAO,SAAW,MAAO,GACxE,EAAS,GAAU,EAAQ,IAC3B,EAAS,EAAO,GAAG,aAAe,EAAO,GAAG,OAAS,EAAO,GAC5D,GAAK,GAAgB,EAEzB,SAAS,GAAU,EAAQ,GAAY,IAChC,EAAO,GAAG,aAAe,EAAO,GAAG,OAAS,EAAO,IAE9D,EAAa,UAAU,WAAa,EAAa,UAAU,WAAa,EAAW,UAAU,WAE7F,YAAiB,EAAG,EAAG,GACnB,EAAI,EAAW,GAOf,OANI,GAAQ,EAAE,aAAc,EAAQ,EAAE,aAClC,EAAO,EAAQ,EAAE,MAAQ,EACzB,EAAO,EAAQ,EAAE,MAAQ,EACzB,EAAS,EAAG,EAAS,EACrB,EAAU,KAAM,EAAU,KAC1B,EAAS,GACN,CAAC,EAAK,UAAY,CAAC,EAAK,UAC3B,EAAU,GAAU,EAAM,IAC1B,EAAS,EAAQ,GAAG,aAChB,GACA,GAAS,GAAgB,EAAI,GAGjC,EAAU,GAAU,EAAM,IAC1B,EAAS,EAAQ,GAAG,aAChB,GACA,GAAS,GAAgB,EAAI,GAGjC,EAAO,EAAQ,GACf,EAAO,EAAQ,GACf,EAAO,KAAK,EAAG,EAAQ,IAG3B,OADI,GAAM,EAAG,EAAQ,EAAI,EAAG,EAAQ,EAAI,KAAO,EAAI,GAAO,IAAM,GAAO,GAC9D,GAAI,EAAO,OAAS,EAAG,IAAK,EAAG,IAAK,EACzC,EAAM,EAAI,SAAS,IAAe,IAAI,GAAO,EAAO,MAExD,MAAO,GAGX,EAAW,UAAU,IAAM,WACvB,MAAO,MAAK,SAAS,QAEzB,EAAa,UAAU,IAAM,EAAa,UAAU,IAAM,EAAW,UAAU,IAE/E,EAAW,UAAU,IAAM,SAAU,GACjC,MAAO,IAAQ,KAAM,EAAG,SAAU,EAAG,GAAK,MAAO,GAAI,KAEzD,EAAa,UAAU,IAAM,EAAa,UAAU,IAAM,EAAW,UAAU,IAE/E,EAAW,UAAU,GAAK,SAAU,GAChC,MAAO,IAAQ,KAAM,EAAG,SAAU,EAAG,GAAK,MAAO,GAAI,KAEzD,EAAa,UAAU,GAAK,EAAa,UAAU,GAAK,EAAW,UAAU,GAE7E,EAAW,UAAU,IAAM,SAAU,GACjC,MAAO,IAAQ,KAAM,EAAG,SAAU,EAAG,GAAK,MAAO,GAAI,KAEzD,EAAa,UAAU,IAAM,EAAa,UAAU,IAAM,EAAW,UAAU,IAE/E,GAAI,IAAY,GAAK,GAAI,GAAc,GAAO,CAAC,GAAS,GAAO,CAAC,GAAQ,GACxE,YAAkB,GAGd,GAAI,GAAI,EAAE,MACN,EAAI,MAAO,IAAM,SAAW,EAAI,GAC5B,MAAO,IAAM,SAAW,EAAI,OAAO,IAC/B,EAAE,GAAK,EAAE,GAAK,EAAO,GACjC,MAAO,GAAI,CAAC,EAGhB,YAA0B,EAAO,GAC7B,GAAI,EAAK,UAAU,IAAU,GACzB,GAAI,GAAM,GAAiB,EAAO,EAAK,OAAO,IAC1C,EAAI,EAAI,EACR,EAAI,EAAI,EACR,EAAI,EAAE,SAAS,GACnB,MAAO,GAAE,UAAU,IAAU,EAAI,CAAE,EAAG,EAAG,EAAG,EAAI,EAAI,GAAM,CAAE,EAAG,EAAG,EAAG,EAAI,GAE7E,MAAO,CAAE,EAAG,GAAO,GAAI,EAAG,GAG9B,EAAW,UAAU,UAAY,WAC7B,GAAI,GAAI,KAIR,MAHI,GAAE,UAAU,GAAO,IAAM,GACzB,GAAI,EAAE,SAAS,SAAS,GAAO,KAE/B,EAAE,UAAU,GAAO,MAAQ,EACpB,GAAO,GAEX,GAAO,GAAiB,EAAG,GAAO,IAAI,GAAG,IAAI,GAAO,KAE/D,EAAa,UAAU,UAAY,EAAa,UAAU,UAAY,EAAW,UAAU,UAE3F,YAAa,EAAG,GACZ,SAAI,EAAW,GACf,EAAI,EAAW,GACR,EAAE,QAAQ,GAAK,EAAI,EAE9B,YAAa,EAAG,GACZ,SAAI,EAAW,GACf,EAAI,EAAW,GACR,EAAE,OAAO,GAAK,EAAI,EAE7B,YAAa,EAAG,GAGZ,GAFA,EAAI,EAAW,GAAG,MAClB,EAAI,EAAW,GAAG,MACd,EAAE,OAAO,GAAI,MAAO,GACxB,GAAI,EAAE,SAAU,MAAO,GACvB,GAAI,EAAE,SAAU,MAAO,GAEvB,OADI,GAAI,EAAQ,GAAI,EAAG,EAChB,EAAE,UAAY,EAAE,UACnB,EAAI,GAAI,GAAS,GAAI,GAAS,IAC9B,EAAI,EAAE,OAAO,GACb,EAAI,EAAE,OAAO,GACb,EAAI,EAAE,SAAS,GAEnB,KAAO,EAAE,UACL,EAAI,EAAE,OAAO,GAAS,IAE1B,GACI,KAAO,EAAE,UACL,EAAI,EAAE,OAAO,GAAS,IAE1B,AAAI,EAAE,QAAQ,IACV,GAAI,EAAG,EAAI,EAAG,EAAI,GAEtB,EAAI,EAAE,SAAS,SACV,CAAC,EAAE,UACZ,MAAO,GAAE,SAAW,EAAI,EAAE,SAAS,GAEvC,YAAa,EAAG,GACZ,SAAI,EAAW,GAAG,MAClB,EAAI,EAAW,GAAG,MACX,EAAE,OAAO,GAAI,EAAG,IAAI,SAAS,GAExC,YAAqB,EAAG,EAAG,GACvB,EAAI,EAAW,GACf,EAAI,EAAW,GACf,GAAI,GAAU,GAAO,KAAK,OACtB,EAAM,GAAI,EAAG,GAAI,EAAO,GAAI,EAAG,GAC/B,EAAQ,EAAK,SAAS,GAAK,IAAI,GACnC,GAAI,EAAM,QAAS,MAAO,GAAI,IAAI,KAAK,MAAM,IAAY,IAGzD,OAFI,GAAS,GAAO,EAAO,GAAM,MAC7B,EAAS,GAAI,EAAa,GACrB,EAAI,EAAG,EAAI,EAAO,OAAQ,KAC/B,GAAI,GAAM,EAAa,EAAO,GAAK,EAC/B,EAAQ,EAAS,IAAY,GACjC,EAAO,KAAK,GACR,EAAQ,GAAK,GAAa,IAElC,MAAO,GAAI,IAAI,EAAQ,UAAU,EAAQ,EAAM,KAGnD,GAAI,IAAY,SAAU,EAAM,EAAM,EAAU,GAC5C,EAAW,GAAY,EACvB,EAAO,OAAO,GACT,GACD,GAAO,EAAK,cACZ,EAAW,EAAS,eAExB,GAAI,GAAS,EAAK,OACd,EACA,EAAU,KAAK,IAAI,GACnB,EAAiB,GACrB,IAAK,EAAI,EAAG,EAAI,EAAS,OAAQ,IAC7B,EAAe,EAAS,IAAM,EAElC,IAAK,EAAI,EAAG,EAAI,EAAQ,KACpB,GAAI,GAAI,EAAK,GACb,GAAI,IAAM,KACN,IAAK,IACD,EAAe,IAAM,GACrB,GAAI,IAAM,KAAO,IAAY,EAAG,SAChC,KAAM,IAAI,OAAM,EAAI,iCAAmC,EAAO,MAI1E,EAAO,EAAW,GAClB,GAAI,GAAS,GACT,EAAa,EAAK,KAAO,IAC7B,IAAK,EAAI,EAAa,EAAI,EAAG,EAAI,EAAK,OAAQ,KAC1C,GAAI,GAAI,EAAK,GACb,GAAI,IAAK,GAAgB,EAAO,KAAK,EAAW,EAAe,aACtD,IAAM,KACX,GAAI,GAAQ,EACZ,EAAK,WAAc,EAAK,KAAO,KAAO,EAAI,EAAK,QAC/C,EAAO,KAAK,EAAW,EAAK,MAAM,EAAQ,EAAG,SAE5C,MAAM,IAAI,OAAM,EAAI,6BAE7B,MAAO,IAAmB,EAAQ,EAAM,IAG5C,YAA4B,EAAQ,EAAM,GACtC,GAAI,GAAM,EAAQ,GAAI,EAAM,EAAQ,GAAI,EACxC,IAAK,EAAI,EAAO,OAAS,EAAG,GAAK,EAAG,IAChC,EAAM,EAAI,IAAI,EAAO,GAAG,MAAM,IAC9B,EAAM,EAAI,MAAM,GAEpB,MAAO,GAAa,EAAI,SAAW,EAGvC,YAAmB,EAAO,GAEtB,MADA,GAAW,GAAY,EACnB,EAAQ,EAAS,OACV,EAAS,GAEb,IAAM,EAAQ,IAGzB,YAAgB,EAAG,GAEf,GADA,EAAO,GAAO,GACV,EAAK,UACL,GAAI,EAAE,SAAU,MAAO,CAAE,MAAO,CAAC,GAAI,WAAY,IACjD,KAAM,IAAI,OAAM,6CAEpB,GAAI,EAAK,OAAO,KACZ,GAAI,EAAE,SAAU,MAAO,CAAE,MAAO,CAAC,GAAI,WAAY,IACjD,GAAI,EAAE,aACF,MAAO,CACH,MAAO,GAAG,OAAO,MAAM,GAAI,MAAM,MAAM,KAAM,MAAM,CAAC,EAAE,eACjD,IAAI,MAAM,UAAU,QAAS,CAAC,EAAG,KAEtC,WAAY,IAGpB,GAAI,GAAM,MAAM,MAAM,KAAM,MAAM,EAAE,aAAe,IAC9C,IAAI,MAAM,UAAU,QAAS,CAAC,EAAG,IACtC,SAAI,QAAQ,CAAC,IACN,CACH,MAAO,GAAG,OAAO,MAAM,GAAI,GAC3B,WAAY,IAIpB,GAAI,GAAM,GAKV,GAJI,EAAE,cAAgB,EAAK,cACvB,GAAM,GACN,EAAI,EAAE,OAEN,EAAK,SACL,MAAI,GAAE,SAAiB,CAAE,MAAO,CAAC,GAAI,WAAY,IAE1C,CACH,MAAO,MAAM,MAAM,KAAM,MAAM,EAAE,eAC5B,IAAI,OAAO,UAAU,QAAS,GACnC,WAAY,GAKpB,OAFI,GAAM,GACN,EAAO,EAAG,EACP,EAAK,cAAgB,EAAK,WAAW,IAAS,IACjD,EAAS,EAAK,OAAO,GACrB,EAAO,EAAO,SACd,GAAI,GAAQ,EAAO,UACnB,AAAI,EAAM,cACN,GAAQ,EAAK,MAAM,GAAO,MAC1B,EAAO,EAAK,QAEhB,EAAI,KAAK,EAAM,cAEnB,SAAI,KAAK,EAAK,cACP,CAAE,MAAO,EAAI,UAAW,WAAY,GAG/C,YAAsB,EAAG,EAAM,GAC3B,GAAI,GAAM,GAAO,EAAG,GACpB,MAAQ,GAAI,WAAa,IAAM,IAAM,EAAI,MAAM,IAAI,SAAU,GACzD,MAAO,IAAU,EAAG,KACrB,KAAK,IAGZ,EAAW,UAAU,QAAU,SAAU,GACrC,MAAO,IAAO,KAAM,IAGxB,EAAa,UAAU,QAAU,SAAU,GACvC,MAAO,IAAO,KAAM,IAGxB,EAAa,UAAU,QAAU,SAAU,GACvC,MAAO,IAAO,KAAM,IAGxB,EAAW,UAAU,SAAW,SAAU,EAAO,GAE7C,GADI,IAAU,GAAW,GAAQ,IAC7B,IAAU,GAAI,MAAO,IAAa,KAAM,EAAO,GAEnD,OADI,GAAI,KAAK,MAAO,EAAI,EAAE,OAAQ,EAAM,OAAO,EAAE,EAAE,IAAK,EAAQ,UAAW,EACpE,EAAE,GAAK,GACV,EAAQ,OAAO,EAAE,IACjB,GAAO,EAAM,MAAM,EAAM,QAAU,EAEvC,GAAI,GAAO,KAAK,KAAO,IAAM,GAC7B,MAAO,GAAO,GAGlB,EAAa,UAAU,SAAW,SAAU,EAAO,GAE/C,MADI,KAAU,GAAW,GAAQ,IAC7B,GAAS,GAAW,GAAa,KAAM,EAAO,GAC3C,OAAO,KAAK,QAGvB,EAAa,UAAU,SAAW,EAAa,UAAU,SAEzD,EAAa,UAAU,OAAS,EAAW,UAAU,OAAS,EAAa,UAAU,OAAS,WAAc,MAAO,MAAK,YAExH,EAAW,UAAU,QAAU,WAC3B,MAAO,UAAS,KAAK,WAAY,KAErC,EAAW,UAAU,WAAa,EAAW,UAAU,QAEvD,EAAa,UAAU,QAAU,WAC7B,MAAO,MAAK,OAEhB,EAAa,UAAU,WAAa,EAAa,UAAU,QAC3D,EAAa,UAAU,QAAU,EAAa,UAAU,WAAa,WACjE,MAAO,UAAS,KAAK,WAAY,KAGrC,YAA0B,GACtB,GAAI,EAAU,CAAC,IACX,GAAI,GAAI,CAAC,EACT,GAAI,IAAM,EAAS,GACf,MAAO,GAAuB,GAAI,GAAa,OAAO,IAAM,GAAI,GAAa,GACjF,KAAM,IAAI,OAAM,oBAAsB,GAE1C,GAAI,GAAO,EAAE,KAAO,IACpB,AAAI,GAAM,GAAI,EAAE,MAAM,IACtB,GAAI,GAAQ,EAAE,MAAM,MACpB,GAAI,EAAM,OAAS,EAAG,KAAM,IAAI,OAAM,oBAAsB,EAAM,KAAK,MACvE,GAAI,EAAM,SAAW,GACjB,GAAI,GAAM,EAAM,GAGhB,GAFI,EAAI,KAAO,KAAK,GAAM,EAAI,MAAM,IACpC,EAAM,CAAC,EACH,IAAQ,EAAS,IAAQ,CAAC,EAAU,GAAM,KAAM,IAAI,OAAM,oBAAsB,EAAM,6BAC1F,GAAI,GAAO,EAAM,GACb,EAAe,EAAK,QAAQ,KAKhC,GAJI,GAAgB,GAChB,IAAO,EAAK,OAAS,EAAe,EACpC,EAAO,EAAK,MAAM,EAAG,GAAgB,EAAK,MAAM,EAAe,IAE/D,EAAM,EAAG,KAAM,IAAI,OAAM,sDAC7B,GAAS,GAAI,OAAM,EAAM,GAAI,KAAK,KAClC,EAAI,EAER,GAAI,GAAU,kBAAkB,KAAK,GACrC,GAAI,CAAC,EAAS,KAAM,IAAI,OAAM,oBAAsB,GACpD,GAAI,EACA,MAAO,IAAI,GAAa,OAAO,EAAO,IAAM,EAAI,IAGpD,OADI,GAAI,GAAI,EAAM,EAAE,OAAQ,EAAI,EAAU,EAAM,EAAM,EAC/C,EAAM,GACT,EAAE,KAAK,CAAC,EAAE,MAAM,EAAK,IACrB,GAAO,EACH,EAAM,GAAG,GAAM,GACnB,GAAO,EAEX,SAAK,GACE,GAAI,GAAW,EAAG,GAG7B,YAA0B,GACtB,GAAI,EACA,MAAO,IAAI,GAAa,OAAO,IAEnC,GAAI,EAAU,IACV,GAAI,IAAM,EAAS,GAAI,KAAM,IAAI,OAAM,EAAI,uBAC3C,MAAO,IAAI,GAAa,GAE5B,MAAO,IAAiB,EAAE,YAG9B,WAAoB,GAChB,MAAI,OAAO,IAAM,SACN,GAAiB,GAExB,MAAO,IAAM,SACN,GAAiB,GAExB,MAAO,IAAM,SACN,GAAI,GAAa,GAErB,EAGX,OAAS,IAAI,EAAG,GAAI,IAAM,KACtB,EAAQ,IAAK,EAAW,IACpB,GAAI,GAAG,GAAQ,CAAC,IAAK,EAAW,CAAC,KAGzC,SAAQ,IAAM,EAAQ,GACtB,EAAQ,KAAO,EAAQ,GACvB,EAAQ,SAAW,EAAQ,IAC3B,EAAQ,IAAM,GACd,EAAQ,IAAM,GACd,EAAQ,IAAM,GACd,EAAQ,IAAM,GACd,EAAQ,WAAa,SAAU,GAAK,MAAO,aAAa,IAAc,YAAa,IAAgB,YAAa,IAChH,EAAQ,YAAc,GAEtB,EAAQ,UAAY,SAAU,EAAQ,EAAM,GACxC,MAAO,IAAmB,EAAO,IAAI,GAAa,EAAW,GAAQ,IAAK,IAGvE,KAIX,AAAI,MAAO,KAAW,aAAe,GAAO,eAAe,YACvD,IAAO,QAAU,IAIrB,AAAI,MAAO,SAAW,YAAc,OAAO,KACvC,OAAQ,WACJ,MAAO,QC16Cf,2BAIA,GAAM,IAAa,cACb,GAAiB,KACjB,GAAQ,GAEd,GAAQ,cAAgB,IAAM,IAAO,IACrC,GAAQ,eAAiB,MAKzB,GAAM,IAAQ,UAGR,GAAM,GAAQ,IAAM,SAAS,GACjC,KAAK,IAAM,GAGP,GAAY,GAAQ,UAAY,SAAU,EAAkB,GAChE,MAAO,IAAI,SAAQ,SAAU,EAAS,GACpC,WAAwB,GACtB,GAAI,GAAM,KACN,EACJ,IACE,EAAS,GAAY,GACrB,EAAQ,SACD,GACP,EAAM,EACN,EAAO,WAEP,AAAI,GAAU,EAAS,EAAK,IAIhC,GAAI,OAAO,SAAS,GAClB,MAAO,GAAe,GAExB,GAAG,SAAS,EAAkB,SAAU,EAAK,GAC3C,GAAI,EACF,SAAO,GACA,EAAS,GAElB,EAAe,QAKf,GAAc,GAAQ,YAAc,SAAU,GAGlD,GAAI,AADW,EAAO,MAAM,EAAG,SAAS,QAAQ,SAAS,UAC1C,SACb,KAAM,IAAI,OAAM,wDAIlB,GAAM,GAAU,EAAO,MAAM,EAAO,OAAS,GAAI,EAAO,QAElD,EAAa,EAAQ,UAAU,GACrC,AAAI,IACF,QAAQ,IAAI,eAAiB,GAE/B,GAAM,GAAgB,EAAQ,UAAU,GACxC,AAAI,IACF,QAAQ,IAAI,kBAAoB,GAElC,GAAM,GAAa,GAAa,EAAS,GACzC,AAAI,IACF,QAAQ,IAAI,eAAiB,GAE/B,GAAM,GAAY,GAAa,EAAS,IACxC,AAAI,IACF,QAAQ,IAAI,cAAgB,GAE9B,GAAM,GAAoB,GAAa,EAAS,IAKhD,GAJI,IACF,QAAQ,IAAI,sBAAwB,GAGlC,EAAa,GAAQ,eACvB,KAAM,IAAI,OAAM,2BAIlB,GAAM,GAAc,GAEpB,OAAS,GAAI,EAAG,EAAI,EAAY,KAC9B,GAAM,GAAc,EAAO,MAAM,EAAoB,EAAI,EAAY,EAAqB,GAAI,GAAK,GACnG,EAAY,GAAK,GAAS,EAAa,GACnC,IACF,QAAQ,IAAI,sBAAwB,EAAI,OAAS,EAAY,GAAK,KAAO,EAAY,GAAG,SAAS,IAAM,KAQ3G,WAAqB,GACnB,GAAM,GAAS,EAAY,GACrB,EAAO,EAAO,GACd,EAAW,GAAO,MAAS,EAC3B,EAAW,EAAO,GACxB,OAAQ,OACH,GACH,MAAO,SACJ,GACH,MAAO,SACJ,GACH,MAAO,SACJ,GACH,MAAO,SACJ,GACH,MAAO,SACJ,GACH,MAAO,SACJ,GACH,MAAO,SACJ,GACH,MAAO,GAAiB,QACrB,IACH,MAAO,SACJ,IACH,MAAO,aAEP,KAAM,IAAI,OAAM,oBAAsB,EAAQ,SAAS,KAGzD,aAEE,OAAQ,OACH,GACH,MAAO,UACJ,GACH,MAAO,OACJ,GACH,MAAO,OACJ,IACH,MAAO,cAEP,KAAM,IAAI,OAAM,2BAA6B,EAAQ,SAAS,MAIlE,WAA2B,GACzB,GAAI,GAAM,GACN,EACJ,IAAK,EAAI,EAAG,EAAI,EAAO,QACjB,EAAO,IAAM,EADY,IAC7B,CAIF,KAAO,EAAI,EAAO,OAAQ,KACxB,GAAM,GAAO,KAAO,EAAO,GAAG,SAAS,IACvC,GAAO,EAAK,OAAO,EAAK,OAAS,GAEnC,MAAO,GAGT,aACE,GAAM,GAAS,KAAK,IAAI,EAAG,GAE3B,GAAI,GAAW,GACb,GAAM,GAAO,EAAO,MAAM,EAAS,EAAG,EAAS,EAAI,GAC7C,EAAM,EAAkB,GAC9B,MAAO,IAAO,EAAK,IAErB,GAAI,GAAW,EACb,MAAO,GAAO,YAAY,EAAS,GAErC,GAAI,EAAS,GAAQ,cACnB,MAAO,IAAS,EAAO,MAAM,EAAS,EAAG,EAAS,EAAI,IAExD,KAAM,IAAI,OAAM,kDAAoD,EAAS,oBAAsB,GAAQ,cAAgB,mBAG7H,aACE,GAAM,GAAS,EAAU,EACzB,GAAI,EAAS,GAAQ,cACnB,MAAO,IAAI,IAAI,GAAS,EAAO,MAAM,EAAS,EAAG,EAAS,EAAI,KAEhE,KAAM,IAAI,OAAM,kDAAoD,EAAS,oBAAsB,GAAQ,cAAgB,mBAG7H,aACE,GAAM,GAAS,KAAK,IAAI,EAAG,GAC3B,GAAI,EAAS,GAAQ,eACnB,GAAM,GAAa,EAAO,MAAM,EAAS,EAAG,EAAS,EAAI,GACzD,GAAI,IAAW,EACb,MAAO,GAAW,YAAY,GAEhC,GAAI,IAAW,EACb,MAAO,GAAW,aAAa,OAGjC,MAAM,IAAI,OAAM,kDAAoD,EAAS,oBAAsB,GAAQ,cAAgB,mBAI/H,aACE,AAAI,GAAW,GACb,QAAQ,MAAM,sBAAwB,EAAU,uBAElD,GAAM,GAAa,EAAO,MAAM,EAAS,EAAG,EAAS,GACrD,MAAO,IAAI,MAAK,GAAS,IAAO,EAAW,aAAa,IAG1D,aACE,GAAI,GAAa,EACb,EAAS,EACb,GAAI,GAAW,IACb,GAAM,GAAW,EAAO,EAAS,GAC3B,EAAW,GAAW,KAAQ,GACpC,AAAI,GAAW,GACb,QAAQ,MAAM,oCAAsC,GAEtD,GAAM,GAAU,EAAW,GACrB,EAAY,KAAK,IAAI,EAAG,GAC9B,EAAa,EAAI,EACb,EAAY,EACd,EAAS,GAAS,EAAO,MAAM,EAAS,EAAG,EAAS,EAAI,IAK5D,GAAI,EAAS,GAAQ,cACnB,MAAO,GAAO,MAAM,EAAS,EAAY,EAAS,EAAa,GAEjE,KAAM,IAAI,OAAM,kDAAoD,EAAS,oBAAsB,GAAQ,cAAgB,mBAG7H,WAA2B,GACzB,EAAU,GAAW,EACrB,GAAI,GAAM,OACN,EAAS,EACT,EAAY,EAChB,GAAI,GAAW,IACb,GAAM,GAAW,EAAO,EAAS,GAC3B,EAAW,GAAW,KAAQ,GACpC,AAAI,GAAW,GACb,QAAQ,IAAI,+BAAiC,GAE/C,GAAM,GAAU,EAAW,GACrB,EAAY,KAAK,IAAI,EAAG,GAC9B,EAAY,EAAI,EACZ,EAAY,EACd,EAAS,GAAS,EAAO,MAAM,EAAS,EAAG,EAAS,EAAI,IAO5D,GADA,GAAW,EAAU,EACjB,EAAS,GAAQ,eACnB,GAAI,GAAc,OAAO,KAAK,EAAO,MAAM,EAAS,EAAW,EAAS,EAAY,IACpF,MAAI,IACF,GAAc,GAAU,GACxB,EAAM,QAED,EAAY,SAAS,GAE9B,KAAM,IAAI,OAAM,kDAAoD,EAAS,oBAAsB,GAAQ,cAAgB,mBAG7H,aACE,GAAI,GAAS,EACT,EAAc,EAClB,GAAI,GAAW,IACb,GAAM,GAAW,EAAO,EAAS,GAC3B,EAAW,GAAW,KAAQ,GACpC,AAAI,GAAW,GACb,QAAQ,MAAM,oCAAsC,GAEtD,GAAM,GAAU,EAAW,GACrB,EAAY,KAAK,IAAI,EAAG,GAC9B,EAAc,EAAI,EACd,EAAY,EACd,EAAS,GAAS,EAAO,MAAM,EAAS,EAAG,EAAS,EAAI,IAK5D,GAAI,EAAS,EAAgB,GAAQ,cACnC,KAAM,IAAI,OAAM,mCAElB,GAAM,GAAQ,GACd,OAAS,GAAI,EAAG,EAAI,EAAQ,KAC1B,GAAM,GAAS,GAAS,EAAO,MAAM,EAAS,EAAc,EAAI,EAAe,EAAS,EAAe,GAAI,GAAK,IAChH,EAAM,GAAK,EAAY,GAEzB,MAAO,GAGT,aACE,GAAI,GAAS,EACT,EAAa,EACjB,GAAI,GAAW,IACb,GAAM,GAAW,EAAO,EAAS,GAC3B,EAAW,GAAW,KAAQ,GACpC,AAAI,GAAW,GACb,QAAQ,MAAM,oCAAsC,GAEtD,GAAM,GAAU,EAAW,GACrB,EAAY,KAAK,IAAI,EAAG,GAC9B,EAAa,EAAI,EACb,EAAY,EACd,EAAS,GAAS,EAAO,MAAM,EAAS,EAAG,EAAS,EAAI,IAK5D,GAAI,EAAS,EAAI,EAAgB,GAAQ,cACvC,KAAM,IAAI,OAAM,mCAElB,AAAI,IACF,QAAQ,IAAI,uBAAyB,GAEvC,GAAM,GAAO,GACb,OAAS,GAAI,EAAG,EAAI,EAAQ,KAC1B,GAAM,GAAS,GAAS,EAAO,MAAM,EAAS,EAAa,EAAI,EAAe,EAAS,EAAc,GAAI,GAAK,IACxG,EAAS,GAAS,EAAO,MAAM,EAAS,EAAc,EAAS,EAAiB,EAAI,EAAe,EAAS,EAAc,EAAS,EAAkB,GAAI,GAAK,IAC9J,EAAM,EAAY,GAClB,EAAM,EAAY,GACxB,AAAI,IACF,QAAQ,IAAI,WAAa,EAAc,YAAc,EAAM,OAAS,GAEtE,EAAK,GAAO,EAEd,MAAO,IAIX,MAAO,CAAE,EAAY,KAGvB,YAAkB,EAAQ,GACxB,EAAQ,GAAS,EAEjB,GAAI,GAAI,EACR,OAAS,GAAI,EAAO,EAAI,EAAO,OAAQ,IACrC,IAAM,EACN,GAAK,EAAO,GAAK,IAEnB,MAAO,GAIT,YAAsB,EAAQ,GAE5B,MAAO,AADM,GAAO,MAAM,EAAO,EAAQ,GAC7B,aAAa,EAAG,GAG9B,YAAmB,GACjB,GAAM,GAAM,EAAO,OACnB,OAAS,GAAI,EAAG,EAAI,EAAK,GAAK,GAC5B,GAAM,GAAI,EAAO,GACjB,EAAO,GAAK,EAAO,EAAE,GACrB,EAAO,EAAE,GAAK,EAEhB,MAAO,MCzWT,sBAAO,QAAU,CAChB,qBAAuB,EAAI,KAC3B,yBAA2B,EAAI,KAC/B,kBAAmB,EACnB,mBAAoB,QCJrB,sBAAI,IAAiB,kBACpB,GAAoB,KACpB,GAAe,gBAEZ,GAAuB,GAAO,QAAU,SAAS,GACpD,GAAI,GAAO,KAEX,GAAO,OAAO,KAAK,MAEnB,EAAO,GAAQ,GACf,GAAI,GAAY,EAAK,eAAe,aAAe,EAAK,UAAY,GAAU,kBAC1E,EAAY,EAAK,WAAa,GAAU,mBACxC,EAAc,EAAK,aAAe,GAAU,qBAC5C,EAAkB,EAAK,iBAAmB,GAAU,yBAEpD,EAAO,EACP,EAAS,GAAI,QAAO,GACpB,EAAW,KAEf,KAAK,SAAW,GAChB,KAAK,SAAW,GAEhB,GAAI,GAAW,WACd,GAAI,GAAS,KAAK,IAAI,EAAW,GAEjC,GAAI,EAAS,GACZ,GAAI,GAAQ,KACZ,AAAG,EACF,EAAQ,EAAO,SAAS,EAAU,EAAG,GAGrC,GAAQ,GAAI,QAAO,GACnB,EAAO,KAAK,EAAO,EAAG,EAAG,IAG1B,EAAK,KAAK,OAAQ,GAEf,EAAS,EAAO,QAClB,EAAO,KAAK,EAAQ,EAAG,EAAQ,GAChC,GAAQ,EAGT,AAAG,IAAS,GAAK,CAAC,EAAK,UACtB,GAAK,KAAK,OACV,EAAK,KAAK,SACN,GAAY,EAAS,UACxB,eAAc,EAAS,UACvB,EAAS,SAAW,QAKvB,KAAK,KAAO,WACX,MAAO,IAGR,KAAK,QAAU,WACd,MAAO,GAAO,QAGf,GAAI,GAA4B,SAAS,GACxC,GAAI,EAAO,OAAS,EAAQ,GAC3B,GAAI,GAAS,KAAK,KAAM,GAAoB,GAAO,OAAS,IAAS,GAEjE,EAAY,GAAI,QAAO,EAAO,OAAU,EAAkB,GAC9D,EAAO,KAAK,EAAW,EAAG,EAAG,GAC7B,EAAS,IAIX,KAAK,IAAM,SAAS,EAAM,GACzB,GAAG,EAAC,EAAK,UAET,GAAI,GAAW,IAAS,EACxB,GAAG,OAAO,SAAS,GAClB,EAA0B,EAAK,QAC/B,EAAK,KAAK,EAAQ,EAAM,GACxB,GAAQ,EAAK,YAGb,EAAO,EAAO,GACd,GAAI,GAAkB,OAAO,WAAW,GACxC,EAA0B,GAC1B,EAAO,MAAM,EAAM,EAAM,GAAY,QACrC,GAAQ,EAOT,GAJI,GAAY,EAAO,GACtB,KAAK,KAAK,YAGP,CAAC,KAAK,UAAY,CAAC,EACtB,KAAO,EAAO,GACb,MAKH,KAAK,MAAQ,WACZ,KAAK,SAAW,GACb,GAAY,EAAS,UACvB,eAAc,EAAS,UACvB,MAAO,GAAS,WAIlB,KAAK,OAAS,WACb,KAAK,SAAW,GACb,GAAY,CAAC,EAAS,UAAY,EAAY,GAChD,GAAS,SAAW,YAAY,EAAU,KAI5C,KAAK,QAAU,WACd,EAAK,KAAK,OACP,EAAS,UAAU,cAAc,EAAS,UAC7C,EAAW,KACX,EAAK,SAAW,GAChB,EAAK,KAAK,UAGX,KAAK,YAAc,WAClB,EAAK,SAAW,GACX,EAAS,UACb,GAAK,KAAK,OACV,EAAK,KAAK,WAIZ,KAAK,YAAc,SAAS,GAC3B,EAAW,GAGZ,KAAK,UAEN,GAAK,SAAS,GAAsB,GAAO,UCvI3C,sBAAI,IAAe,gBAClB,GAAiB,kBACjB,GAAoB,KAIjB,GAAuB,GAAO,QAAU,SAAS,GACpD,GAAI,GAAO,KAEX,GAAO,OAAO,KAAK,MAEnB,EAAO,GAAQ,GACf,GAAI,GAAc,EAAK,aAAe,GAAU,qBAC5C,EAAkB,EAAK,iBAAmB,GAAU,yBAEpD,EAAS,GAAI,QAAO,GACpB,EAAO,EAEX,KAAK,SAAW,GAChB,KAAK,SAAW,GAEhB,KAAK,KAAO,WACX,MAAO,IAGR,KAAK,QAAU,WACd,MAAO,GAAO,QAGf,KAAK,YAAc,SAAS,GAC3B,GAAG,CAAC,EAAM,MAAO,GAEjB,GAAI,GAAO,GAAI,QAAO,KAAK,IAAI,GAAU,EAAM,IAC/C,SAAO,KAAK,EAAM,EAAG,EAAG,EAAK,QAE1B,EAAK,OAAS,GAChB,EAAO,KAAK,EAAQ,EAAG,EAAK,QAE7B,GAAQ,EAAK,OAEN,GAGR,KAAK,oBAAsB,SAAS,EAAU,GAC7C,GAAG,CAAC,EAAM,MAAO,GAEjB,GAAI,GAAO,EAAO,SAAS,GAAY,OAAQ,EAAG,KAAK,IAAI,GAAU,EAAM,IACvE,EAAa,OAAO,WAAW,GAEnC,MAAG,GAAa,GACf,EAAO,KAAK,EAAQ,EAAG,GAExB,GAAQ,EACD,GAGR,GAAI,GAA4B,SAAS,GACxC,GAAI,EAAO,OAAS,EAAQ,GAC3B,GAAI,GAAS,KAAK,KAAM,GAAoB,GAAO,OAAS,IAAS,GAEjE,EAAY,GAAI,QAAO,EAAO,OAAU,EAAkB,GAC9D,EAAO,KAAK,EAAW,EAAG,EAAG,GAC7B,EAAS,IAIX,KAAK,MAAQ,SAAS,EAAM,EAAU,GACrC,AAAG,CAAC,EAAK,UAET,CAAG,OAAO,SAAS,GAClB,GAA0B,EAAK,QAC/B,EAAK,KAAK,EAAQ,EAAM,GACxB,GAAQ,EAAK,QAGb,GAAO,EAAO,GACd,EAA0B,OAAO,WAAW,IAC5C,EAAO,MAAM,EAAM,EAAM,GAAY,QACrC,GAAQ,OAAO,WAAW,IAGxB,MAAO,IAAa,YAAc,MAGtC,KAAK,IAAM,WACV,GAAI,GAAO,MAAM,UAAU,MAAM,MAAM,WACvC,AAAG,EAAK,QAAQ,EAAK,MAAM,MAAM,EAAM,GACvC,EAAK,KAAK,UACV,EAAK,WAGN,KAAK,YAAc,KAAK,QAAU,WACjC,EAAK,SAAW,GAChB,EAAK,KAAK,WAGZ,GAAK,SAAS,GAAsB,GAAO,UChG3C,sBAAO,QAAkB,KACzB,GAAO,QAAQ,qBAA+B,KAC9C,GAAO,QAAQ,qBAA+B,OCF9C,gCAIA,GAAI,IAAwB,KAExB,GAAQ,GAEZ,YAAc,GACZ,KAAK,MAAQ,EAGf,GAAO,QAAU,SAAS,GACxB,GAAI,GAAS,GAAI,IAAc,qBAC/B,EAAO,MAAM,GAAI,QAAO,aAEpB,IACF,QAAQ,IAAI,SAAU,AAAQ,gBAAQ,QAAQ,EAAO,GAAO,KAG1D,YAAiB,QAAS,EAAM,SAAW,GAC7C,GAAQ,EAAM,IAGhB,GAAI,GAAU,GAAU,GACxB,AAAI,IACF,QAAQ,IAAI,UAAW,GAEzB,GAAI,GAAgB,GAAqB,EAAQ,QAC7C,EAAU,GACV,EACA,EAEJ,WAEA,EAAQ,QAAQ,SAAS,EAAO,GAC9B,EAAQ,GAAY,EAAO,OAC3B,AAAK,EAGH,EAAM,GAFN,EAAO,MAAM,KAMjB,IACA,IACO,EAAO,cAEd,aACE,GAAI,GAAU,GACV,EAAU,EACd,EAAQ,QAAQ,SAAS,GACvB,AAAI,EAAM,IAGV,CAAI,EAAM,OAAS,SACjB,AAAI,CAAC,EAAM,gBAAkB,EAAQ,eAAe,EAAM,OACxD,GAAM,KAAO,YACb,EAAM,GAAK,EAAQ,EAAM,QAEzB,EAAQ,EAAM,OAAS,EAAM,GAAK,IAGpC,EAAM,GAAK,OAIf,EAAU,EAAQ,OAAO,SAAS,GAChC,MAAQ,GAAM,OAAS,cAI3B,aACE,AAAI,IACF,QAAQ,IAAI,KAAO,EAAO,OAAO,SAAS,IAAK,gBAGjD,EAAO,MAAM,GAAI,QAAO,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,KAGpC,IACF,QAAQ,IAAI,KAAO,EAAO,OAAO,SAAS,IAAK,mCAAoC,GAErF,EAAU,GAGN,IACF,QAAQ,IAAI,KAAO,EAAO,OAAO,SAAS,IAAK,mCAAoC,GAErF,EAAU,GAGN,IACF,QAAQ,IAAI,KAAO,EAAO,OAAO,SAAS,IAAK,mCAAoC,EAAQ,QAE7F,EAAU,EAAQ,QAGd,IACF,QAAQ,IAAI,KAAO,EAAO,OAAO,SAAS,IAAK,4BAEjD,EAAU,GAGN,IACF,QAAQ,IAAI,KAAO,EAAO,OAAO,SAAS,IAAK,qCAAsC,GAEvF,EAAU,GAGZ,aACE,AAAI,IACF,QAAQ,IAAI,KAAO,EAAO,OAAO,SAAS,IAAK,oBAEjD,EAAoB,EAAO,OAC3B,EAAoB,GAAyB,GAC7C,EAAQ,QAAQ,SAAS,GACvB,EAAW,EAAQ,KAIvB,WAAe,GACb,OAAQ,EAAM,UACT,OACH,EAAU,GACV,UACG,aACA,SACH,EAAY,GACZ,UACG,MACH,EAAS,GACT,UACG,QACH,EAAW,GACX,UACG,UACH,EAAa,GACb,UACG,aACA,eACH,EAAY,GACZ,UACG,OACH,EAAU,GACV,UACG,OACH,EAAU,GACV,cAEA,KAAM,IAAI,OAAM,yBAA2B,EAAM,OAIrD,WAAmB,GACjB,EAAU,IACV,GAAI,GAAQ,KAAK,MAAM,EAAM,OAAO,IAAQ,UAC5C,EAAY,GAGd,WAAmB,GACjB,GAAI,IACF,GAAI,GAAU,EAAM,UAAU,IAAI,SAAS,GAAI,MAAO,GAAE,KACpD,EAAU,EAAM,YAAY,IAAI,SAAS,GAAI,MAAO,GAAE,KAC1D,QAAQ,IAAI,KAAO,EAAO,OAAO,SAAS,IAAK,YAAa,QAAU,EAAM,GAAK,IAAK,UAAY,EAAU,IAAK,YAAc,EAAU,KAE3I,EAAe,GAAK,EAAM,UAAU,QACpC,EAAM,UAAU,QAAQ,SAAS,GAC/B,EAAQ,EAAM,MAEhB,EAAM,YAAY,QAAQ,SAAS,GACjC,EAAQ,EAAM,MAIlB,WAAqB,GACnB,AAAI,IACF,QAAQ,IAAI,KAAO,EAAO,OAAO,SAAS,IAAK,cAAe,EAAM,MAAO,WAAa,EAAM,KAAO,IAAK,QAAU,EAAM,GAAK,KAGjI,AAAI,EAAM,OAAS,UAAY,WAAW,EAAM,MAAM,YAAc,EAAM,MACxE,AAAI,EAAM,MAAQ,EAChB,GAAU,IACV,EAAW,EAAM,MAAO,EAAG,KACtB,AAAI,EAAM,OAAS,IACxB,GAAU,IACV,EAAW,EAAM,MAAO,IACnB,AAAI,EAAM,OAAS,MACxB,GAAU,IACV,EAAW,EAAM,MAAO,IACnB,AAAI,EAAM,OAAS,WACxB,GAAU,IACV,EAAW,EAAM,MAAO,IAExB,GAAU,IACV,EAAW,EAAM,MAAO,IAG1B,GAAU,IACV,EAAY,EAAM,QAItB,WAAkB,GAChB,AAAI,IACF,QAAQ,IAAI,KAAO,EAAO,OAAO,SAAS,IAAK,WAAY,EAAM,MAAO,WAAa,EAAM,KAAO,IAAK,QAAU,EAAM,GAAK,KAG9H,EAAe,EAAK,GACpB,EAAQ,EAAM,OAGhB,WAAoB,GAClB,AAAI,IACF,QAAQ,IAAI,KAAO,EAAO,OAAO,SAAS,IAAK,uBAAyB,EAAM,QAAQ,OAAS,IAAK,QAAU,EAAM,GAAK,KAE3H,EAAe,GAAK,EAAM,QAAQ,QAClC,EAAM,QAAQ,QAAQ,SAAS,GAC7B,EAAQ,EAAE,MAId,WAAsB,GACpB,AAAI,IACF,QAAQ,IAAI,KAAO,EAAO,OAAO,SAAS,IAAK,eAAgB,EAAM,MAAO,QAAU,EAAM,GAAK,KAEnG,EAAU,EAAM,MAAQ,EAAO,GAGjC,WAAqB,GAInB,GAHI,IACF,QAAQ,IAAI,KAAO,EAAO,OAAO,SAAS,IAAK,cAAe,EAAM,MAAO,QAAU,EAAM,GAAK,KAE9F,EAAM,OAAS,gBAAkB,EAAY,EAAM,QACrD,GAAI,GAAQ,GAAI,QAAO,EAAM,MAAO,QACpC,EAAe,EAAK,EAAM,OAAS,GAEnC,OAAS,GAAI,EAAG,EAAI,EAAM,OAAQ,GAAK,GACrC,GAAI,GAAI,EAAM,EAAI,GAClB,EAAM,EAAI,GAAK,EAAM,EAAI,GACzB,EAAM,EAAI,GAAK,EAEjB,EAAO,MAAM,QAEb,GAAI,GAAO,GAAI,QAAO,EAAM,MAAO,SACnC,EAAe,EAAK,EAAK,QACzB,EAAO,MAAM,IAIjB,WAAmB,GACjB,AAAI,IACF,QAAQ,IAAI,KAAO,EAAO,OAAO,SAAS,IAAK,YAAa,EAAM,MAAO,QAAU,EAAM,GAAK,KAEhG,EAAe,EAAK,EAAM,MAAM,QAChC,EAAO,MAAM,EAAM,OAGrB,WAAmB,GACjB,EAAW,EAAG,GAGhB,WAAmB,GACjB,EAAO,MAAM,GAAI,QAAO,CAAC,KAG3B,WAAqB,GACnB,GAAI,GAAM,GAAI,QAAO,GACrB,EAAI,cAAc,EAAG,GACrB,EAAO,MAAM,GAGf,WAAwB,EAAM,GAC5B,AAAI,EAAQ,GACV,EAAW,IAAQ,GAAK,GACnB,AAAI,EAAQ,IACjB,GAAW,IAAQ,GAAK,IACxB,EAAU,IACV,EAAW,EAAO,IACb,AAAI,EAAQ,MACjB,GAAW,IAAQ,GAAK,IACxB,EAAU,IACV,EAAW,EAAO,IAElB,GAAW,IAAQ,GAAK,IACxB,EAAU,IACV,EAAW,EAAO,IAItB,WAAiB,GACf,EAAW,EAAI,GAGjB,WAAoB,EAAO,EAAO,GAEhC,GAAI,GAAM,GAAI,QAAO,GACjB,EAAI,EAGR,GAAG,CAAC,EACF,KAAO,EAAQ,GACb,EAAI,KAAO,EACX,IAIJ,OAAS,GAAI,EAAQ,EAAG,GAAK,EAAG,IAC9B,EAAI,KAAO,GAAU,EAAI,EAE3B,EAAO,MAAM,GAGf,WAAqB,GACnB,MAAO,QAAO,WAAW,EAAQ,SAAW,EAAO,SAIvD,YAAmB,GACjB,GAAI,EAAM,eACR,MAAO,CAAC,GAGV,GAAI,YAAiB,OACnB,MAAO,IAAe,GACjB,GAAI,YAAiB,QAC1B,MAAO,CACL,CACE,KAAM,OACN,MAAO,IAGN,GAAI,YAAiB,IAC1B,MAAO,CACL,CACE,KAAM,SACN,MAAO,EAAM,QAGZ,GAAI,MAAO,IAAW,SAC3B,MAAI,aAAiB,MACZ,CACL,CACE,KAAM,OACN,MAAO,IAGF,OAAO,KAAK,GAAO,QAAU,GAAK,MAAO,GAAM,KAAS,SAC1D,CACL,CACE,KAAM,MACN,MAAO,EAAM,MAIV,GAAgB,GAEpB,GAAI,MAAO,IAAW,SAC3B,MAAO,CACL,CACE,KAAM,SACN,MAAO,IAGN,GAAI,MAAO,IAAW,SAC3B,MAAO,CACL,CACE,KAAM,SACN,MAAO,IAGN,GAAI,MAAO,IAAW,UAC3B,MAAO,CACL,CACE,KAAM,UACN,MAAO,IAGN,GAAI,MAAO,IAAW,SAC3B,MAAO,CACL,CACE,KAAM,SACN,MAAO,OAAO,OAAO,OAAO,GAAI,MAIpC,KAAM,IAAI,OAAM,oBAAsB,GAI1C,YAAwB,GACtB,AAAI,IACF,QAAQ,IAAI,kBAEd,GAAI,GAAU,CACZ,CACE,KAAM,QACN,QAAS,KAGb,SAAI,QAAQ,SAAS,GACnB,GAAI,GAAQ,GAAU,GACtB,EAAQ,GAAG,QAAQ,KAAK,EAAM,IAC9B,EAAU,EAAQ,OAAO,KAEpB,EAGT,YAAyB,GACvB,AAAI,IACF,QAAQ,IAAI,mBAEd,GAAI,GAAU,CACZ,CACE,KAAM,OACN,UAAW,GACX,YAAa,KAGjB,cAAO,KAAK,GAAM,QAAQ,SAAS,GACjC,GAAI,GAAW,GAAU,GACzB,EAAQ,GAAG,UAAU,KAAK,EAAS,IACnC,EAAU,EAAQ,OAAO,EAAS,MAEpC,OAAO,KAAK,GAAM,QAAQ,SAAS,GACjC,GAAI,GAAa,GAAU,EAAK,IAChC,EAAQ,GAAG,YAAY,KAAK,EAAW,IACvC,EAAU,EAAQ,OAAO,KAEpB,EAGT,YAAkC,GAChC,MAAI,GAAY,IACP,EAEL,EAAY,MACP,EAEL,EAAY,WACP,EAEF,EAGT,YAA8B,GAC5B,MAAI,GAAc,IACT,EAEL,EAAc,MACT,EAEF,EAGT,GAAO,QAAQ,KAAO,KCvctB,cAGA,GAAI,IAAgB,mJAChB,GAAW,GAAI,QAAO,aAAa,GAAc,OAAO,MAAM,EAAE,IAAI,0CACpE,GAAiB,GAAI,QAAO,IAAI,GAAc,OAAO,GAAS,OAAO,QAAS,GAAc,OAAO,GAAS,OAAO,QAMnH,GAAQ,EACR,GAAS,EACT,GAAa,EACb,GAAO,EACP,GAAsB,EACtB,GAAa,EACb,GAAc,EACd,GAAc,EAElB,eAIA,GAAU,UAAY,CACrB,MAAM,SAAS,EAAO,EAAa,GAClC,GAAI,GAAa,KAAK,WACtB,EAAW,gBACX,GAAM,EAAc,EAAe,IACnC,GAAM,EAAO,EAAa,EACxB,EAAW,KAAK,cAClB,EAAW,gBAGb,YAAe,EAAO,EAAiB,EAAU,EAAW,GAC3D,WAA2B,GAG1B,GAAI,EAAO,OACV,GAAQ,MACR,GAAI,IAAa,MAAU,IAAQ,IAChC,GAAa,MAAU,GAAO,MAEjC,MAAO,QAAO,aAAa,GAAY,QAEvC,OAAO,QAAO,aAAa,GAG7B,WAAwB,GACvB,GAAI,IAAI,EAAE,MAAM,EAAE,IAClB,MAAG,MAAK,GACA,EAAU,IACT,GAAE,OAAO,KAAO,IACjB,EAAkB,SAAS,GAAE,OAAO,GAAG,QAAQ,IAAI,QAE1D,GAAa,MAAM,oBAAoB,GAChC,GAGT,WAAoB,GACnB,GAAG,EAAI,GACN,GAAI,IAAK,EAAO,UAAU,EAAM,GAAK,QAAQ,WAAW,GACxD,GAAS,EAAS,GAClB,EAAW,WAAW,GAAG,EAAE,EAAI,GAC/B,EAAQ,GAGV,WAAkB,EAAE,IACnB,KAAM,GAAG,GAAY,IAAI,EAAY,KAAK,KACzC,EAAY,GAAE,MACd,EAAU,EAAY,GAAE,GAAG,OAC3B,EAAQ,aAGT,EAAQ,aAAe,EAAE,EAAU,EAUpC,OARI,GAAY,EACZ,EAAU,EACV,EAAc,sBACd,EAAU,EAAW,QAErB,EAAa,CAAC,CAAC,aAAa,IAC5B,EAAW,GACX,EAAQ,KAEX,IACC,GAAI,GAAW,EAAO,QAAQ,IAAI,GAClC,GAAG,EAAS,GACX,GAAG,CAAC,EAAO,OAAO,GAAO,MAAM,UAC9B,GAAI,GAAM,EAAW,IACd,EAAO,EAAI,eAAe,EAAO,OAAO,IAC5C,EAAI,YAAY,GAChB,EAAW,eAAiB,EAEhC,OAKD,OAHG,EAAS,GACX,EAAW,GAEL,EAAO,OAAO,EAAS,QACzB,IACJ,GAAI,GAAM,EAAO,QAAQ,IAAI,EAAS,GAClC,EAAU,EAAO,UAAU,EAAS,EAAE,GACtC,EAAS,EAAW,MACxB,AAAG,EAAI,EAEA,GAAU,EAAO,UAAU,EAAS,GAAG,QAAQ,UAAU,IAEzD,EAAa,MAAM,iBAAiB,EAAQ,oBAAoB,EAAO,SACvE,EAAM,EAAS,EAAE,EAAQ,QACjB,EAAQ,MAAM,QACtB,GAAU,EAAQ,QAAQ,UAAU,IACpC,EAAa,MAAM,iBAAiB,EAAQ,uBAC5C,EAAM,EAAS,EAAE,EAAQ,QAIhC,GAAI,GAAa,EAAO,WACpB,EAAW,EAAO,SAAW,EAC7B,EAAoB,GAAY,EAAO,SAAS,EAAO,QAAQ,eAAiB,EAAQ,cACtF,GAAG,GAER,GADM,EAAW,WAAW,EAAO,IAAI,EAAO,UAAU,GACrD,EACF,OAAQ,KAAU,GACjB,EAAW,iBAAiB,GAG9B,AAAI,GACM,EAAa,WAAW,iBAAiB,EAAQ,2CAA2C,EAAO,aAGvG,GAAW,KAAK,GAGvB,IACA,UAEI,IACJ,GAAS,EAAS,GAClB,EAAM,GAAiB,EAAO,EAAS,GACvC,UACI,IACJ,GAAS,EAAS,GAClB,EAAM,GAAS,EAAO,EAAS,EAAW,GAC1C,cAEA,GAAS,EAAS,GAClB,GAAI,GAAK,GAAI,IACT,EAAe,EAAW,EAAW,OAAO,GAAG,aAE/C,EAAM,GAAsB,EAAO,EAAS,EAAG,EAAa,EAAe,GAC3E,EAAM,EAAG,OASb,GANG,CAAC,EAAG,QAAU,GAAc,EAAO,EAAI,EAAG,QAAQ,IACpD,GAAG,OAAS,GACR,EAAU,MACb,EAAa,QAAQ,2BAGpB,GAAW,GAGb,OAFI,GAAW,GAAY,EAAQ,IAE3B,EAAI,EAAE,EAAE,EAAI,KACnB,GAAI,GAAI,EAAG,GACX,EAAS,EAAE,QACX,EAAE,QAAU,GAAY,EAAQ,IAGjC,EAAW,QAAU,EAClB,GAAc,EAAG,EAAW,IAC9B,EAAW,KAAK,GAEjB,EAAW,QAAU,MAErB,AAAG,IAAc,EAAG,EAAW,IAC9B,EAAW,KAAK,GAMlB,AAAG,EAAG,MAAQ,gCAAkC,CAAC,EAAG,OACnD,EAAM,GAAwB,EAAO,EAAI,EAAG,QAAQ,EAAe,GAEnE,WAGI,GACN,EAAa,MAAM,wBAAwB,GAE3C,EAAM,GAGP,AAAG,EAAI,EACN,EAAQ,EAGR,EAAW,KAAK,IAAI,EAAS,GAAO,IAIvC,YAAqB,EAAE,GACtB,SAAE,WAAa,EAAE,WACjB,EAAE,aAAe,EAAE,aACZ,EAOR,YAA+B,EAAO,EAAM,EAAG,EAAa,EAAe,GAK1E,OAJI,GACA,EACA,EAAI,EAAE,EACN,EAAI,MAEP,GAAI,GAAI,EAAO,OAAO,GACtB,OAAO,OACF,IACJ,GAAG,IAAM,GACR,EAAW,EAAO,MAAM,EAAM,GAC9B,EAAI,WACI,IAAM,GACd,EAAI,OAGJ,MAAM,IAAI,OAAM,uCAEjB,UACI,QACA,IACJ,GAAG,IAAM,IAAQ,IAAM,GAQtB,GANG,IAAM,IACR,GAAa,QAAQ,kCACrB,EAAW,EAAO,MAAM,EAAM,IAE/B,EAAQ,EAAE,EACV,EAAI,EAAO,QAAQ,EAAE,GAClB,EAAE,EACJ,EAAQ,EAAO,MAAM,EAAM,GAAG,QAAQ,WAAW,GACjD,EAAG,IAAI,EAAS,EAAM,EAAM,GAC5B,EAAI,OAGJ,MAAM,IAAI,OAAM,2BAA4B,EAAE,mBAEvC,GAAK,GACb,EAAQ,EAAO,MAAM,EAAM,GAAG,QAAQ,WAAW,GAEjD,EAAG,IAAI,EAAS,EAAM,GAEtB,EAAa,QAAQ,cAAc,EAAS,uBAAuB,EAAE,OACrE,EAAQ,EAAE,EACV,EAAI,OAGJ,MAAM,IAAI,OAAM,kCAEjB,UACI,IACJ,OAAO,OACF,IACJ,EAAG,WAAW,EAAO,MAAM,EAAM,QAC7B,QACA,QACA,IACJ,EAAG,GACH,EAAG,OAAS,OACR,QACA,QACA,IACJ,cAGA,KAAM,IAAI,OAAM,qCAEjB,UACI,GAEJ,SAAa,MAAM,2BAChB,GAAK,IACP,EAAG,WAAW,EAAO,MAAM,EAAM,IAE3B,MACH,IACJ,OAAO,OACF,IACJ,EAAG,WAAW,EAAO,MAAM,EAAM,QAC7B,QACA,QACA,IACJ,UACI,QACA,IACJ,EAAQ,EAAO,MAAM,EAAM,GACxB,EAAM,MAAM,MAAQ,KACtB,GAAG,OAAU,GACb,EAAQ,EAAM,MAAM,EAAE,SAEnB,IACJ,AAAG,IAAM,IACR,GAAQ,GAET,AAAG,GAAK,GACP,GAAa,QAAQ,cAAc,EAAM,sBACzC,EAAG,IAAI,EAAS,EAAM,QAAQ,WAAW,GAAgB,IAEtD,IAAa,MAAQ,gCAAkC,CAAC,EAAM,MAAM,sCACtE,EAAa,QAAQ,cAAc,EAAM,qBAAqB,EAAM,eAErE,EAAG,IAAI,EAAM,EAAM,IAEpB,UACI,IACJ,KAAM,IAAI,OAAM,4BAGjB,MAAO,OAEH,OACJ,EAAI,YAEJ,GAAG,GAAI,IACN,OAAO,OACF,IACJ,EAAG,WAAW,EAAO,MAAM,EAAM,IACjC,EAAI,GACJ,UACI,IACJ,EAAW,EAAO,MAAM,EAAM,GAC9B,EAAI,GACJ,UACI,IACJ,GAAI,GAAQ,EAAO,MAAM,EAAM,GAAG,QAAQ,WAAW,GACrD,EAAa,QAAQ,cAAc,EAAM,sBACzC,EAAG,IAAI,EAAS,EAAM,OAClB,IACJ,EAAI,GACJ,UAWD,QAAO,OAIF,IACJ,GAAI,GAAW,EAAG,QAClB,AAAG,GAAa,MAAQ,gCAAkC,CAAC,EAAS,MAAM,sCACzE,EAAa,QAAQ,cAAc,EAAS,qBAAqB,EAAS,gBAE3E,EAAG,IAAI,EAAS,EAAS,GACzB,EAAQ,EACR,EAAI,GACJ,UACI,IACJ,EAAa,QAAQ,+BAA+B,EAAS,WACzD,IACJ,EAAI,GACJ,EAAQ,EACR,UACI,IACJ,EAAI,GACJ,EAAQ,EACR,UACI,IACJ,KAAM,IAAI,OAAM,+DAKnB,KAMF,YAAuB,EAAG,EAAW,GAKpC,OAJI,GAAU,EAAG,QACb,EAAa,KAEb,EAAI,EAAG,OACL,MACL,GAAI,GAAI,EAAG,GACP,EAAQ,EAAE,MACV,EAAQ,EAAE,MACV,EAAM,EAAM,QAAQ,KACxB,GAAG,EAAI,EACN,GAAI,GAAS,EAAE,OAAS,EAAM,MAAM,EAAE,GAClC,EAAY,EAAM,MAAM,EAAI,GAC5B,EAAW,IAAW,SAAW,MAErC,GAAY,EACZ,EAAS,KACT,EAAW,IAAU,SAAW,GAGjC,EAAE,UAAY,EAEX,IAAa,IACZ,IAAc,MAChB,GAAa,GAEb,GAAM,EAAa,EAAa,KAGjC,EAAa,GAAY,EAAW,GAAY,EAChD,EAAE,IAAM,gCACR,EAAW,mBAAmB,EAAU,IAI1C,OADI,GAAI,EAAG,OACL,MACL,EAAI,EAAG,GACP,GAAI,GAAS,EAAE,OACf,AAAG,GACC,KAAW,OACb,GAAE,IAAM,wCACL,IAAW,SACd,GAAE,IAAM,EAAa,GAAU,MAMlC,GAAI,GAAM,EAAQ,QAAQ,KAC1B,AAAG,EAAI,EACN,GAAS,EAAG,OAAS,EAAQ,MAAM,EAAE,GACrC,EAAY,EAAG,UAAY,EAAQ,MAAM,EAAI,IAE7C,GAAS,KACT,EAAY,EAAG,UAAY,GAG5B,GAAI,GAAK,EAAG,IAAM,EAAa,GAAU,IAIzC,GAHA,EAAW,aAAa,EAAG,EAAU,EAAQ,GAG1C,EAAG,QAEL,GADA,EAAW,WAAW,EAAG,EAAU,GAChC,EACF,IAAI,IAAU,GACb,EAAW,iBAAiB,OAI9B,UAAG,aAAe,EAClB,EAAG,WAAa,EAET,GAGT,YAAiC,EAAO,EAAW,EAAQ,EAAe,GACzE,GAAG,yBAAyB,KAAK,IAChC,GAAI,GAAc,EAAO,QAAQ,KAAK,EAAQ,IAAI,GAC9C,EAAO,EAAO,UAAU,EAAW,EAAE,GACzC,GAAG,OAAO,KAAK,GACd,MAAG,YAAY,KAAK,GAGlB,GAAW,WAAW,EAAK,EAAE,EAAK,QAE3B,GAGR,GAAO,EAAK,QAAQ,WAAW,GAC/B,EAAW,WAAW,EAAK,EAAE,EAAK,QAC3B,GAKV,MAAO,GAAW,EAEnB,YAAuB,EAAO,EAAW,EAAQ,GAEhD,GAAI,GAAM,EAAS,GACnB,MAAG,IAAO,MAET,GAAO,EAAO,YAAY,KAAK,EAAQ,KACpC,EAAI,GACN,GAAM,EAAO,YAAY,KAAK,IAE/B,EAAS,GAAU,GAEb,EAAI,EAGZ,YAAe,EAAO,GACrB,OAAQ,KAAK,GAAQ,EAAO,GAAK,EAAO,GAEzC,YAAkB,EAAO,EAAM,EAAW,GACzC,GAAI,GAAM,EAAO,OAAO,EAAM,GAC9B,OAAO,OACF,IACJ,GAAG,EAAO,OAAO,EAAQ,KAAO,KAC/B,GAAI,GAAM,EAAO,QAAQ,MAAM,EAAM,GAErC,MAAG,GAAI,EACN,GAAW,QAAQ,EAAO,EAAM,EAAE,EAAI,EAAM,GACrC,EAAI,GAEX,GAAa,MAAM,oBACZ,QAIR,OAAO,WAGR,GAAG,EAAO,OAAO,EAAM,EAAE,IAAM,UAC9B,GAAI,GAAM,EAAO,QAAQ,MAAM,EAAM,GACrC,SAAW,aACX,EAAW,WAAW,EAAO,EAAM,EAAE,EAAI,EAAM,GAC/C,EAAW,WACJ,EAAI,EAIZ,GAAI,GAAS,GAAM,EAAO,GACtB,EAAM,EAAO,OACjB,GAAG,EAAI,GAAK,YAAY,KAAK,EAAO,GAAG,KACtC,GAAI,GAAO,EAAO,GAAG,GACjB,EAAQ,EAAI,GAAK,YAAY,KAAK,EAAO,GAAG,KAAO,EAAO,GAAG,GAC7D,EAAQ,EAAI,GAAK,EAAO,GAAG,GAC3B,EAAY,EAAO,EAAI,GAC3B,SAAW,SAAS,EAAK,GAAS,EAAM,QAAQ,kBAAkB,MAChE,GAAS,EAAM,QAAQ,kBAAkB,OAC3C,EAAW,SAEJ,EAAU,MAAM,EAAU,GAAG,QAGtC,MAAO,GAKR,YAA0B,EAAO,EAAM,GACtC,GAAI,GAAM,EAAO,QAAQ,KAAK,GAC9B,GAAG,GACF,GAAI,GAAQ,EAAO,UAAU,EAAM,GAAK,MAAM,8BAC9C,GAAG,GACF,GAAI,GAAM,EAAM,GAAG,OACnB,SAAW,sBAAsB,EAAM,GAAI,EAAM,IAC1C,EAAI,MAEX,OAAO,GAGT,MAAO,GAMR,YAA2B,IAG3B,GAAkB,UAAY,CAC7B,WAAW,SAAS,GACnB,GAAG,CAAC,GAAe,KAAK,GACvB,KAAM,IAAI,OAAM,mBAAmB,GAEpC,KAAK,QAAU,GAEhB,IAAI,SAAS,EAAM,EAAM,GACxB,GAAG,CAAC,GAAe,KAAK,GACvB,KAAM,IAAI,OAAM,qBAAqB,GAEtC,KAAK,KAAK,UAAY,CAAC,MAAM,EAAM,MAAM,EAAM,OAAO,IAEvD,OAAO,EACP,aAAa,SAAS,GAAG,MAAO,MAAK,GAAG,WACxC,WAAW,SAAS,GAAG,MAAO,MAAK,GAAG,SACtC,SAAS,SAAS,GAAG,MAAO,MAAK,GAAG,OACpC,OAAO,SAAS,GAAG,MAAO,MAAK,GAAG,KAClC,SAAS,SAAS,GAAG,MAAO,MAAK,GAAG,QAgBrC,YAAqB,EAAK,GACzB,SAAK,UAAY,EACV,EAER,AAAK,GAAY,GAAG,GAAY,oBAAsB,KACrD,IAAc,SAAS,EAAK,GAC3B,cACA,EAAE,UAAY,EACd,EAAI,GAAI,GACR,IAAI,IAAU,GACb,EAAE,GAAU,EAAK,GAElB,MAAO,KAIT,YAAe,EAAO,GACrB,GAAI,GACA,EAAM,GACN,EAAM,6CAGV,IAFA,EAAI,UAAY,EAChB,EAAI,KAAK,GACH,EAAQ,EAAI,KAAK,IAEtB,GADA,EAAI,KAAK,GACN,EAAM,GAAG,MAAO,GAIrB,GAAQ,UAAY,KCvnBpB,cAOA,YAAc,EAAI,GACjB,OAAQ,KAAK,GACZ,EAAK,GAAK,EAAI,GAOhB,YAAkB,EAAM,GACvB,GAAI,GAAK,EAAM,UACf,GAAG,OAAO,QACT,GAAI,GAAM,OAAO,OAAO,EAAM,WAC9B,EAAG,UAAY,EAEhB,GAAG,CAAE,aAAc,KAClB,GAAS,GAAT,aAAS,QACT,EAAE,UAAY,EAAM,UACpB,EAAI,GAAI,GACR,GAAK,EAAG,GACR,EAAM,UAAY,EAAK,EAExB,AAAG,EAAG,aAAe,GACjB,OAAO,IAAS,YAClB,QAAQ,MAAM,gBAAgB,GAE/B,EAAG,YAAc,GAGnB,GAAI,IAAS,+BAET,GAAW,GACX,GAA8B,GAAS,aAA8B,EACrE,GAA8B,GAAS,eAA8B,EACrE,GAA8B,GAAS,UAA8B,EACrE,GAA8B,GAAS,mBAA8B,EACrE,GAA8B,GAAS,sBAA8B,EACrE,GAA8B,GAAS,YAA8B,EACrE,GAA8B,GAAS,4BAA8B,EACrE,GAA8B,GAAS,aAA8B,EACrE,GAA8B,GAAS,cAA8B,EACrE,GAA8B,GAAS,mBAA8B,GACrE,GAA8B,GAAS,uBAA8B,GACrE,GAA8B,GAAS,cAA8B,GAGrE,GAAgB,GAChB,GAAmB,GACnB,GAA8B,GAAc,eAAgC,IAAiB,GAAG,mBAAoB,GACpH,GAA8B,GAAc,mBAAgC,IAAiB,GAAG,uBAAwB,GACxH,GAA8B,GAAc,sBAAgC,IAAiB,GAAG,0BAA2B,GAC3H,GAA8B,GAAc,mBAAgC,IAAiB,GAAG,iBAAkB,GAClH,GAA8B,GAAc,sBAAgC,IAAiB,GAAG,oBAAqB,GACrH,GAA8B,GAAc,oBAAgC,IAAiB,GAAG,kBAAmB,GACnH,GAA8B,GAAc,4BAAgC,IAAiB,GAAG,0BAA2B,GAC3H,GAA8B,GAAc,cAAgC,IAAiB,GAAG,YAAa,GAC7G,GAA8B,GAAc,kBAAgC,IAAiB,GAAG,gBAAiB,GACjH,GAA8B,GAAc,oBAAgC,IAAiB,IAAI,mBAAoB,IAErH,GAA4B,GAAc,kBAA8B,IAAiB,IAAI,gBAAiB,IAC9G,GAA4B,GAAc,WAA8B,IAAiB,IAAI,eAAgB,IAC7G,GAA4B,GAAc,yBAA8B,IAAiB,IAAI,uBAAwB,IACrH,GAA4B,GAAc,cAA6B,IAAiB,IAAI,oBAAqB,IACjH,GAA4B,GAAc,mBAA6B,IAAiB,IAAI,iBAAkB,IAGlH,YAAsB,EAAM,GAC3B,GAAG,YAAmB,OACrB,GAAI,GAAQ,MAEZ,GAAQ,KACR,MAAM,KAAK,KAAM,GAAiB,IAClC,KAAK,QAAU,GAAiB,GAC7B,MAAM,mBAAmB,MAAM,kBAAkB,KAAM,IAE3D,SAAM,KAAO,EACV,GAAS,MAAK,QAAU,KAAK,QAAU,KAAO,GAC1C,EAER,GAAa,UAAY,MAAM,UAC/B,GAAK,GAAc,IAMnB,eAEA,GAAS,UAAY,CAKpB,OAAO,EASP,KAAM,SAAS,GACd,MAAO,MAAK,IAAU,MAEvB,SAAS,SAAS,EAAO,GACxB,OAAQ,GAAM,GAAI,EAAI,EAAE,EAAE,KAAK,OAAO,IACrC,GAAkB,KAAK,GAAG,EAAI,EAAO,GAEtC,MAAO,GAAI,KAAK,MAGlB,YAAsB,EAAK,GAC1B,KAAK,MAAQ,EACb,KAAK,SAAW,EAChB,GAAgB,MAEjB,YAAyB,GACxB,GAAI,GAAM,EAAK,MAAM,MAAQ,EAAK,MAAM,cAAc,KACtD,GAAG,EAAK,MAAQ,GACf,GAAI,GAAK,EAAK,SAAS,EAAK,OAE5B,GAAQ,EAAK,SAAS,EAAG,QACzB,GAAK,EAAG,GACR,EAAK,KAAO,GAGd,GAAa,UAAU,KAAO,SAAS,GACtC,UAAgB,MACT,KAAK,IAGb,GAAS,GAAa,IAOtB,eAGA,YAAwB,EAAK,GAE5B,OADI,GAAI,EAAK,OACP,KACL,GAAG,EAAK,KAAO,EAAM,MAAO,GAI9B,YAAuB,EAAG,EAAK,EAAQ,GAMtC,GALA,AAAG,EACF,EAAK,GAAe,EAAK,IAAY,EAErC,EAAK,EAAK,UAAY,EAEpB,GACF,EAAQ,aAAe,EACvB,GAAI,GAAM,EAAG,cACb,AAAG,GACF,IAAW,GAAmB,EAAI,EAAG,GACrC,GAAgB,EAAI,EAAG,KAI1B,YAA0B,EAAG,EAAK,GAEjC,GAAI,GAAI,GAAe,EAAK,GAC5B,GAAG,GAAG,GAEL,OADI,GAAY,EAAK,OAAO,EACtB,EAAE,GACP,EAAK,GAAK,EAAK,EAAE,GAGlB,GADA,EAAK,OAAS,EACX,GACF,GAAI,GAAM,EAAG,cACb,AAAG,GACF,IAAmB,EAAI,EAAG,GAC1B,EAAK,aAAe,WAItB,MAAM,IAAa,GAAc,GAAI,OAAM,EAAG,QAAQ,IAAI,IAG5D,GAAa,UAAY,CACxB,OAAO,EACP,KAAK,GAAS,UAAU,KACxB,aAAc,SAAS,GAMtB,OADI,GAAI,KAAK,OACP,MACL,GAAI,GAAO,KAAK,GAEhB,GAAG,EAAK,UAAY,EACnB,MAAO,KAIV,aAAc,SAAS,GACtB,GAAI,GAAK,EAAK,aACd,GAAG,GAAM,GAAI,KAAK,cACjB,KAAM,IAAI,IAAa,IAExB,GAAI,GAAU,KAAK,aAAa,EAAK,UACrC,UAAc,KAAK,cAAc,KAAK,EAAK,GACpC,GAGR,eAAgB,SAAS,GACxB,GAAI,GAAK,EAAK,aAAc,EAC5B,GAAG,GAAM,GAAI,KAAK,cACjB,KAAM,IAAI,IAAa,IAExB,SAAU,KAAK,eAAe,EAAK,aAAa,EAAK,WACrD,GAAc,KAAK,cAAc,KAAK,EAAK,GACpC,GAIR,gBAAiB,SAAS,GACzB,GAAI,GAAO,KAAK,aAAa,GAC7B,UAAiB,KAAK,cAAc,KAAK,GAClC,GAMR,kBAAkB,SAAS,EAAa,GACvC,GAAI,GAAO,KAAK,eAAe,EAAa,GAC5C,UAAiB,KAAK,cAAc,KAAK,GAClC,GAER,eAAgB,SAAS,EAAc,GAEtC,OADI,GAAI,KAAK,OACP,MACL,GAAI,GAAO,KAAK,GAChB,GAAG,EAAK,WAAa,GAAa,EAAK,cAAgB,EACtD,MAAO,GAGT,MAAO,QAMT,YAAwC,GAEvC,GADA,KAAK,UAAY,GACb,EACH,OAAS,KAAW,GAClB,KAAK,UAAY,EAAS,GAK9B,GAAkB,UAAY,CAC7B,WAAY,SAAsB,EAAsB,GACvD,GAAI,GAAW,KAAK,UAAU,EAAQ,eACtC,MAAI,MAAa,EAAC,GAAW,IAAW,MAOzC,eAAe,SAAS,EAAe,EAAe,GACrD,GAAI,GAAM,GAAI,IAOd,GANA,EAAI,eAAiB,KACrB,EAAI,WAAa,GAAI,IACrB,EAAI,QAAU,EACX,GACF,EAAI,YAAY,GAEd,GACF,GAAI,GAAO,EAAI,gBAAgB,EAAa,GAC5C,EAAI,YAAY,GAEjB,MAAO,IAGR,mBAAmB,SAAS,EAAe,EAAU,GACpD,GAAI,GAAO,GAAI,IACf,SAAK,KAAO,EACZ,EAAK,SAAW,EAChB,EAAK,SAAW,EAChB,EAAK,SAAW,EAOT,IAST,eAGA,GAAK,UAAY,CAChB,WAAa,KACb,UAAY,KACZ,gBAAkB,KAClB,YAAc,KACd,WAAa,KACb,WAAa,KACb,WAAa,KACb,cAAgB,KAChB,UAAY,KACZ,aAAe,KACf,OAAS,KACT,UAAY,KAEZ,aAAa,SAAS,EAAU,GAC/B,MAAO,IAAc,KAAK,EAAS,IAEpC,aAAa,SAAS,EAAU,GAC/B,KAAK,aAAa,EAAS,GACxB,GACF,KAAK,YAAY,IAGnB,YAAY,SAAS,GACpB,MAAO,IAAa,KAAK,IAE1B,YAAY,SAAS,GACpB,MAAO,MAAK,aAAa,EAAS,OAEnC,cAAc,WACb,MAAO,MAAK,YAAc,MAE3B,UAAU,SAAS,GAClB,MAAO,IAAU,KAAK,eAAe,KAAK,KAAK,IAGhD,UAAU,WAET,OADI,GAAQ,KAAK,WACX,IACL,GAAI,GAAO,EAAM,YACjB,AAAG,GAAQ,EAAK,UAAY,IAAa,EAAM,UAAY,GAC1D,MAAK,YAAY,GACjB,EAAM,WAAW,EAAK,OAEtB,GAAM,YACN,EAAQ,KAKX,YAAY,SAAS,EAAS,GAC7B,MAAO,MAAK,cAAc,eAAe,WAAW,EAAQ,IAG1D,cAAc,WACb,MAAO,MAAK,WAAW,OAAO,GAE/B,aAAa,SAAS,GAErB,OADI,GAAK,KACH,IACL,GAAI,GAAM,EAAG,OAEb,GAAG,GACF,OAAQ,KAAK,GACZ,GAAG,EAAI,IAAM,EACZ,MAAO,GAIV,EAAK,EAAG,UAAY,GAAe,EAAG,cAAgB,EAAG,WAE1D,MAAO,OAGR,mBAAmB,SAAS,GAE3B,OADI,GAAK,KACH,IACL,GAAI,GAAM,EAAG,OAEb,GAAG,GACC,IAAU,GACZ,MAAO,GAAI,GAGb,EAAK,EAAG,UAAY,GAAe,EAAG,cAAgB,EAAG,WAE1D,MAAO,OAGR,mBAAmB,SAAS,GAC3B,GAAI,GAAS,KAAK,aAAa,GAC/B,MAAO,IAAU,OAKtB,YAAqB,GACpB,MAAO,IAAK,KAAO,QACX,GAAK,KAAO,QACZ,GAAK,KAAO,SACZ,GAAK,KAAO,UACZ,KAAK,EAAE,aAAa,IAI7B,GAAK,GAAS,IACd,GAAK,GAAS,GAAK,WAMnB,YAAoB,EAAK,GACxB,GAAG,EAAS,GACX,MAAO,GAER,GAAG,EAAO,EAAK,WACd,EACC,IAAG,GAAW,EAAK,GAAW,MAAO,SACzB,EAAK,EAAK,aAMzB,eAEA,YAAyB,EAAI,EAAG,GAC/B,GAAO,EAAI,OACX,GAAI,GAAK,EAAQ,aACjB,AAAG,GAAM,iCAER,GAAG,OAAO,EAAQ,OAAO,EAAQ,UAAU,IAAM,EAAQ,OAG3D,YAA4B,EAAI,EAAG,EAAQ,GAC1C,GAAO,EAAI,OACX,GAAI,GAAK,EAAQ,aACjB,AAAG,GAAM,iCAER,MAAO,GAAG,OAAO,EAAQ,OAAO,EAAQ,UAAU,IAGpD,YAAwB,EAAI,EAAG,GAC9B,GAAG,GAAO,EAAI,MACb,EAAI,OAEJ,GAAI,GAAK,EAAG,WACZ,GAAG,EACF,EAAG,EAAG,UAAY,OAKlB,OAFI,GAAQ,EAAG,WACX,EAAI,EACF,GACL,EAAG,KAAO,EACV,EAAO,EAAM,YAEd,EAAG,OAAS,IAaf,YAAsB,EAAW,GAChC,GAAI,GAAW,EAAM,gBACjB,EAAO,EAAM,YACjB,MAAG,GACF,EAAS,YAAc,EAEvB,EAAW,WAAa,EAEzB,AAAG,EACF,EAAK,gBAAkB,EAEvB,EAAW,UAAY,EAExB,GAAe,EAAW,cAAc,GACjC,EAKR,YAAuB,EAAW,EAAS,GAC1C,GAAI,GAAK,EAAS,WAIlB,GAHG,GACF,EAAG,YAAY,GAEb,EAAS,WAAa,IACxB,GAAI,GAAW,EAAS,WACxB,GAAI,GAAY,KACf,MAAO,GAER,GAAI,GAAU,EAAS,cAEvB,GAAW,EAAU,EAEtB,GAAI,GAAM,EAAY,EAAU,gBAAkB,EAAW,UAE7D,EAAS,gBAAkB,EAC3B,EAAQ,YAAc,EAGtB,AAAG,EACF,EAAI,YAAc,EAElB,EAAW,WAAa,EAEzB,AAAG,GAAa,KACf,EAAW,UAAY,EAEvB,EAAU,gBAAkB,EAE7B,EACC,GAAS,WAAa,QAChB,IAAa,GAAY,GAAU,EAAS,cACnD,UAAe,EAAW,eAAe,EAAW,GAEhD,EAAS,UAAY,IACxB,GAAS,WAAa,EAAS,UAAY,MAErC,EAER,YAA4B,EAAW,GACtC,GAAI,GAAK,EAAS,WAClB,GAAG,GACF,GAAI,GAAM,EAAW,UACrB,EAAG,YAAY,GACf,GAAI,GAAM,EAAW,UAEtB,GAAI,GAAM,EAAW,UACrB,SAAS,WAAa,EACtB,EAAS,gBAAkB,EAC3B,EAAS,YAAc,KACvB,AAAG,EACF,EAAI,YAAc,EAElB,EAAW,WAAa,EAEzB,EAAW,UAAY,EACvB,GAAe,EAAW,cAAc,EAAW,GAC5C,EAGR,GAAS,UAAY,CAEpB,SAAY,YACZ,SAAY,GACZ,QAAW,KACX,gBAAmB,KACnB,KAAO,EAEP,aAAgB,SAAS,EAAU,GAClC,GAAG,EAAS,UAAY,IAEvB,OADI,GAAQ,EAAS,WACf,IACL,GAAI,GAAO,EAAM,YACjB,KAAK,aAAa,EAAM,GACxB,EAAQ,EAET,MAAO,GAER,MAAG,MAAK,iBAAmB,MAAQ,EAAS,UAAY,IACvD,MAAK,gBAAkB,GAGjB,GAAc,KAAK,EAAS,GAAW,EAAS,cAAgB,KAAM,GAE9E,YAAe,SAAS,GACvB,MAAG,MAAK,iBAAmB,GAC1B,MAAK,gBAAkB,MAEjB,GAAa,KAAK,IAG1B,WAAa,SAAS,EAAa,GAClC,MAAO,IAAW,KAAK,EAAa,IAGrC,eAAiB,SAAS,GACzB,GAAI,GAAM,KACV,UAAW,KAAK,gBAAgB,SAAS,GACxC,GAAG,EAAK,UAAY,IAChB,EAAK,aAAa,OAAS,EAC7B,SAAM,EACC,KAIH,GAIR,cAAgB,SAAS,GACxB,GAAI,GAAO,GAAI,IACf,EAAK,cAAgB,KACrB,EAAK,SAAW,EAChB,EAAK,QAAU,EACf,EAAK,WAAa,GAAI,IACtB,GAAI,GAAQ,EAAK,WAAa,GAAI,IAClC,SAAM,cAAgB,EACf,GAER,uBAAyB,WACxB,GAAI,GAAO,GAAI,IACf,SAAK,cAAgB,KACrB,EAAK,WAAa,GAAI,IACf,GAER,eAAiB,SAAS,GACzB,GAAI,GAAO,GAAI,IACf,SAAK,cAAgB,KACrB,EAAK,WAAW,GACT,GAER,cAAgB,SAAS,GACxB,GAAI,GAAO,GAAI,IACf,SAAK,cAAgB,KACrB,EAAK,WAAW,GACT,GAER,mBAAqB,SAAS,GAC7B,GAAI,GAAO,GAAI,IACf,SAAK,cAAgB,KACrB,EAAK,WAAW,GACT,GAER,4BAA8B,SAAS,EAAO,GAC7C,GAAI,GAAO,GAAI,IACf,SAAK,cAAgB,KACrB,EAAK,QAAU,EAAK,OAAS,EAC7B,EAAK,UAAW,EAAK,KAAO,EACrB,GAER,gBAAkB,SAAS,GAC1B,GAAI,GAAO,GAAI,IACf,SAAK,cAAgB,KACrB,EAAK,KAAO,EACZ,EAAK,SAAW,EAChB,EAAK,UAAY,EACjB,EAAK,UAAY,GACV,GAER,sBAAwB,SAAS,GAChC,GAAI,GAAO,GAAI,IACf,SAAK,cAAgB,KACrB,EAAK,SAAW,EACT,GAGR,gBAAkB,SAAS,EAAa,GACvC,GAAI,GAAO,GAAI,IACX,EAAK,EAAc,MAAM,KACzB,EAAQ,EAAK,WAAa,GAAI,IAClC,SAAK,WAAa,GAAI,IACtB,EAAK,cAAgB,KACrB,EAAK,SAAW,EAChB,EAAK,QAAU,EACf,EAAK,aAAe,EACpB,AAAG,EAAG,QAAU,EACf,GAAK,OAAS,EAAG,GACjB,EAAK,UAAY,EAAG,IAGpB,EAAK,UAAY,EAElB,EAAM,cAAgB,EACf,GAGR,kBAAoB,SAAS,EAAa,GACzC,GAAI,GAAO,GAAI,IACX,EAAK,EAAc,MAAM,KAC7B,SAAK,cAAgB,KACrB,EAAK,SAAW,EAChB,EAAK,KAAO,EACZ,EAAK,aAAe,EACpB,EAAK,UAAY,GACjB,AAAG,EAAG,QAAU,EACf,GAAK,OAAS,EAAG,GACjB,EAAK,UAAY,EAAG,IAGpB,EAAK,UAAY,EAEX,IAGT,GAAS,GAAS,IAGlB,cACC,KAAK,OAAS,GAEf,GAAQ,UAAY,CACnB,SAAW,GACX,aAAe,SAAS,GACvB,MAAO,MAAK,iBAAiB,IAAO,MAErC,aAAe,SAAS,GACvB,GAAI,GAAO,KAAK,iBAAiB,GACjC,MAAO,IAAQ,EAAK,OAAS,IAE9B,iBAAmB,SAAS,GAC3B,MAAO,MAAK,WAAW,aAAa,IAErC,aAAe,SAAS,EAAM,GAC7B,GAAI,GAAO,KAAK,cAAc,gBAAgB,GAC9C,EAAK,MAAQ,EAAK,UAAY,GAAK,EACnC,KAAK,iBAAiB,IAEvB,gBAAkB,SAAS,GAC1B,GAAI,GAAO,KAAK,iBAAiB,GACjC,GAAQ,KAAK,oBAAoB,IAIlC,YAAY,SAAS,GACpB,MAAG,GAAS,WAAa,GACjB,KAAK,aAAa,EAAS,MAE3B,GAAmB,KAAK,IAGjC,iBAAmB,SAAS,GAC3B,MAAO,MAAK,WAAW,aAAa,IAErC,mBAAqB,SAAS,GAC7B,MAAO,MAAK,WAAW,eAAe,IAEvC,oBAAsB,SAAS,GAE9B,MAAO,MAAK,WAAW,gBAAgB,EAAQ,WAGhD,kBAAoB,SAAS,EAAc,GAC1C,GAAI,GAAM,KAAK,mBAAmB,EAAc,GAChD,GAAO,KAAK,oBAAoB,IAGjC,eAAiB,SAAS,EAAc,GACvC,MAAO,MAAK,mBAAmB,EAAc,IAAY,MAE1D,eAAiB,SAAS,EAAc,GACvC,GAAI,GAAO,KAAK,mBAAmB,EAAc,GACjD,MAAO,IAAQ,EAAK,OAAS,IAE9B,eAAiB,SAAS,EAAc,EAAe,GACtD,GAAI,GAAO,KAAK,cAAc,kBAAkB,EAAc,GAC9D,EAAK,MAAQ,EAAK,UAAY,GAAK,EACnC,KAAK,iBAAiB,IAEvB,mBAAqB,SAAS,EAAc,GAC3C,MAAO,MAAK,WAAW,eAAe,EAAc,IAGrD,qBAAuB,SAAS,GAC/B,MAAO,IAAI,IAAa,KAAK,SAAS,GACrC,GAAI,GAAK,GACT,UAAW,EAAK,SAAS,GACxB,AAAG,IAAS,GAAQ,EAAK,UAAY,IAAiB,KAAY,KAAO,EAAK,SAAW,IACxF,EAAG,KAAK,KAGH,KAGT,uBAAyB,SAAS,EAAc,GAC/C,MAAO,IAAI,IAAa,KAAK,SAAS,GACrC,GAAI,GAAK,GACT,UAAW,EAAK,SAAS,GACxB,AAAG,IAAS,GAAQ,EAAK,WAAa,IAAiB,KAAiB,KAAO,EAAK,eAAiB,IAAkB,KAAc,KAAO,EAAK,WAAa,IAC7J,EAAG,KAAK,KAGH,MAKV,GAAS,UAAU,qBAAuB,GAAQ,UAAU,qBAC5D,GAAS,UAAU,uBAAyB,GAAQ,UAAU,uBAG9D,GAAS,GAAQ,IACjB,eAEA,GAAK,UAAU,SAAW,GAC1B,GAAS,GAAK,IAGd,eAEA,GAAc,UAAY,CACzB,KAAO,GACP,cAAgB,SAAS,EAAQ,GAChC,MAAO,MAAK,KAAK,UAAU,EAAQ,EAAO,IAE3C,WAAY,SAAS,GACpB,EAAO,KAAK,KAAK,EACjB,KAAK,UAAY,KAAK,KAAO,EAC7B,KAAK,OAAS,EAAK,QAEpB,WAAY,SAAS,EAAO,GAC3B,KAAK,YAAY,EAAO,EAAE,IAG3B,YAAY,SAAS,GACpB,KAAM,IAAI,OAAM,GAAiB,MAElC,WAAY,SAAS,EAAQ,GAC5B,KAAK,YAAY,EAAO,EAAM,KAE/B,YAAa,SAAS,EAAQ,EAAO,GACpC,GAAI,GAAQ,KAAK,KAAK,UAAU,EAAE,GAC9B,EAAM,KAAK,KAAK,UAAU,EAAO,GACrC,EAAO,EAAQ,EAAO,EACtB,KAAK,UAAY,KAAK,KAAO,EAC7B,KAAK,OAAS,EAAK,SAGrB,GAAS,GAAc,IACvB,eAEA,GAAK,UAAY,CAChB,SAAW,QACX,SAAW,GACX,UAAY,SAAS,GACpB,GAAI,GAAO,KAAK,KACZ,EAAU,EAAK,UAAU,GAC7B,EAAO,EAAK,UAAU,EAAG,GACzB,KAAK,KAAO,KAAK,UAAY,EAC7B,KAAK,OAAS,EAAK,OACnB,GAAI,GAAU,KAAK,cAAc,eAAe,GAChD,MAAG,MAAK,YACP,KAAK,WAAW,aAAa,EAAS,KAAK,aAErC,IAGT,GAAS,GAAK,IACd,eAEA,GAAQ,UAAY,CACnB,SAAW,WACX,SAAW,IAEZ,GAAS,GAAQ,IAEjB,eAEA,GAAa,UAAY,CACxB,SAAW,iBACX,SAAW,IAEZ,GAAS,GAAa,IAGtB,eAEA,GAAa,UAAU,SAAW,GAClC,GAAS,GAAa,IAEtB,eAEA,GAAS,UAAU,SAAW,GAC9B,GAAS,GAAS,IAElB,eAEA,GAAO,UAAU,SAAW,GAC5B,GAAS,GAAO,IAEhB,eAEA,GAAgB,UAAU,SAAW,GACrC,GAAS,GAAgB,IAEzB,eAEA,GAAiB,UAAU,SAAW,qBACtC,GAAiB,UAAU,SAAW,GACtC,GAAS,GAAiB,IAG1B,eAEA,GAAsB,UAAU,SAAW,GAC3C,GAAS,GAAsB,IAC/B,eACA,GAAc,UAAU,kBAAoB,SAAS,EAAK,EAAO,GAChE,MAAO,IAAsB,KAAK,EAAK,EAAO,IAE/C,GAAK,UAAU,SAAW,GAC1B,YAA+B,EAAO,GACrC,GAAI,GAAM,GACN,EAAU,KAAK,UAAY,EAAE,KAAK,gBAAgB,KAClD,EAAS,EAAQ,OACjB,EAAM,EAAQ,aAElB,GAAG,GAAO,GAAU,MAEnB,GAAI,GAAS,EAAQ,aAAa,GAClC,GAAG,GAAU,KAEZ,GAAI,GAAkB,CACtB,CAAC,UAAU,EAAI,OAAO,OAKxB,UAAkB,KAAK,EAAI,EAAO,EAAW,GAEtC,EAAI,KAAK,IAEjB,YAA6B,EAAK,EAAQ,GACzC,GAAI,GAAS,EAAK,QAAQ,GACtB,EAAM,EAAK,aAIf,GAHI,CAAC,GAAU,CAAC,GAGZ,IAAW,OAAS,IAAQ,wCAC5B,GAAO,gCACV,MAAO,GAKR,OAFI,GAAI,EAAkB,OAEnB,MACN,GAAI,GAAK,EAAkB,GAG3B,GAAI,EAAG,QAAU,EAChB,MAAO,GAAG,WAAa,EASzB,MAAO,GAER,YAA2B,EAAK,EAAI,EAAO,EAAW,GACrD,GAAG,EAEF,GADA,EAAO,EAAW,GACf,GACF,GAAG,MAAO,IAAQ,UACjB,EAAI,KAAK,GACT,YAGD,QAIF,OAAO,EAAK,cACP,IACJ,AAAK,GAAmB,GAAoB,IAC5C,GAAI,GAAyB,EAAkB,OAC3C,EAAQ,EAAK,WACb,EAAM,EAAM,OACZ,EAAQ,EAAK,WACb,EAAW,EAAK,QAEpB,EAAW,KAAW,EAAK,cAAgB,EAC3C,EAAI,KAAK,IAAI,GAIb,OAAQ,GAAE,EAAE,EAAE,EAAI,KAEjB,GAAI,GAAO,EAAM,KAAK,GACtB,AAAI,EAAK,QAAU,QAClB,EAAkB,KAAK,CAAE,OAAQ,EAAK,UAAW,UAAW,EAAK,QACzD,EAAK,UAAY,SACzB,EAAkB,KAAK,CAAE,OAAQ,GAAI,UAAW,EAAK,QAGvD,OAAQ,GAAE,EAAE,EAAE,EAAI,KACjB,GAAI,GAAO,EAAM,KAAK,GACtB,GAAI,GAAoB,EAAK,EAAQ,IACpC,GAAI,GAAS,EAAK,QAAQ,GACtB,EAAM,EAAK,aACX,EAAK,EAAS,UAAY,EAAS,SACvC,EAAI,KAAK,EAAI,KAAO,EAAM,KAC1B,EAAkB,KAAK,CAAE,OAAQ,EAAQ,UAAU,IAEpD,GAAkB,EAAK,EAAI,EAAO,EAAW,GAG9C,GAAI,GAAoB,EAAK,EAAQ,IACpC,GAAI,GAAS,EAAK,QAAQ,GACtB,EAAM,EAAK,aACX,EAAK,EAAS,UAAY,EAAS,SACvC,EAAI,KAAK,EAAI,KAAO,EAAM,KAC1B,EAAkB,KAAK,CAAE,OAAQ,EAAQ,UAAU,IAGpD,GAAG,GAAS,GAAU,CAAC,mCAAmC,KAAK,IAG9D,GAFA,EAAI,KAAK,KAEN,GAAU,YAAY,KAAK,GAC7B,KAAM,GACL,AAAG,EAAM,KACR,EAAI,KAAK,EAAM,MAEf,GAAkB,EAAM,EAAI,EAAO,EAAW,GAE/C,EAAQ,EAAM,gBAIf,MAAM,GACL,GAAkB,EAAM,EAAI,EAAO,EAAW,GAC9C,EAAQ,EAAM,YAGhB,EAAI,KAAK,KAAK,EAAS,SAEvB,GAAI,KAAK,MAIV,WACI,QACA,IAEJ,OADI,GAAQ,EAAK,WACX,GACL,GAAkB,EAAM,EAAI,EAAO,EAAW,GAC9C,EAAQ,EAAM,YAEf,WACI,IACJ,MAAO,GAAI,KAAK,IAAI,EAAK,KAAK,KAAK,EAAK,MAAM,QAAQ,SAAS,IAAa,SACxE,IACJ,MAAO,GAAI,KAAK,EAAK,KAAK,QAAQ,QAAQ,SACtC,IACJ,MAAO,GAAI,KAAM,YAAY,EAAK,KAAK,WACnC,IACJ,MAAO,GAAI,KAAM,OAAO,EAAK,KAAK,WAC9B,IACJ,GAAI,GAAQ,EAAK,SACb,EAAQ,EAAK,SAEjB,GADA,EAAI,KAAK,aAAa,EAAK,MACxB,EACF,EAAI,KAAK,YAAY,GACjB,GAAS,GAAO,KACnB,EAAI,KAAM,MAAM,GAEjB,EAAI,KAAK,cACD,GAAS,GAAO,IACxB,EAAI,KAAK,YAAY,EAAM,WAE3B,GAAI,GAAM,EAAK,eACf,AAAG,GACF,EAAI,KAAK,KAAK,EAAI,KAEnB,EAAI,KAAK,KAEV,WACI,IACJ,MAAO,GAAI,KAAM,KAAK,EAAK,OAAO,IAAI,EAAK,KAAK,UAC5C,IACJ,MAAO,GAAI,KAAM,IAAI,EAAK,SAAS,aAInC,EAAI,KAAK,KAAK,EAAK,WAGrB,YAAoB,EAAI,EAAK,GAC5B,GAAI,GACJ,OAAQ,EAAK,cACR,IACJ,EAAQ,EAAK,UAAU,IACvB,EAAM,cAAgB,MAMlB,IACJ,UACI,IACJ,EAAO,GACP,MAqBD,GALI,GACH,GAAQ,EAAK,UAAU,KAExB,EAAM,cAAgB,EACtB,EAAM,WAAa,KAChB,EAEF,OADI,GAAQ,EAAK,WACX,GACL,EAAM,YAAY,GAAW,EAAI,EAAM,IACvC,EAAQ,EAAM,YAGhB,MAAO,GAKR,YAAmB,EAAI,EAAK,GAC3B,GAAI,GAAQ,GAAI,GAAK,YACrB,OAAQ,KAAK,IACZ,GAAI,GAAI,EAAK,GACb,AAAG,MAAO,IAAK,UACX,GAAK,EAAM,IACb,GAAM,GAAK,GAQd,OAJG,EAAK,YACP,GAAM,WAAa,GAAI,KAExB,EAAM,cAAgB,EACd,EAAM,cACT,IACJ,GAAI,GAAQ,EAAK,WACb,EAAS,EAAM,WAAa,GAAI,IAChC,EAAM,EAAM,OAChB,EAAO,cAAgB,EACvB,OAAQ,GAAE,EAAE,EAAE,EAAI,IACjB,EAAM,iBAAiB,GAAU,EAAI,EAAM,KAAK,GAAG,KAEpD,UACI,IACJ,EAAO,GAER,GAAG,EAEF,OADI,GAAQ,EAAK,WACX,GACL,EAAM,YAAY,GAAU,EAAI,EAAM,IACtC,EAAQ,EAAM,YAGhB,MAAO,GAGR,YAAiB,EAAO,EAAI,GAC3B,EAAO,GAAO,EAGf,IACC,GAAG,OAAO,gBA+BT,GAAS,GAAT,SAAwB,GACvB,OAAO,EAAK,cACP,QACA,IACJ,GAAI,GAAM,GAEV,IADA,EAAO,EAAK,WACN,GACL,AAAG,EAAK,WAAW,GAAK,EAAK,WAAY,GACxC,EAAI,KAAK,EAAe,IAEzB,EAAO,EAAK,YAEb,MAAO,GAAI,KAAK,YAEhB,MAAO,GAAK,YAdL,qBA9BT,OAAO,eAAe,GAAa,UAAU,SAAS,CACrD,IAAI,WACH,UAAgB,MACT,KAAK,YAGd,OAAO,eAAe,GAAK,UAAU,cAAc,CAClD,IAAI,WACH,MAAO,GAAe,OAEvB,IAAI,SAAS,GACZ,OAAO,KAAK,cACP,QACA,IACJ,KAAM,KAAK,YACV,KAAK,YAAY,KAAK,YAEvB,AAAG,IAAQ,OAAO,KACjB,KAAK,YAAY,KAAK,cAAc,eAAe,IAEpD,cAGA,KAAK,KAAO,EACZ,KAAK,MAAQ,EACb,KAAK,UAAY,MAsBpB,GAAU,SAAS,EAAO,EAAI,GAE7B,EAAO,KAAK,GAAO,UAGf,IAIN,GAAQ,kBAAoB,GAC5B,GAAQ,cAAgB,KC1tCzB,0BAAmB,GAClB,KAAK,QAAU,GAAU,CAAC,QAAQ,IAGnC,GAAU,UAAU,gBAAkB,SAAS,EAAO,GACrD,GAAI,GAAU,KAAK,QACf,EAAO,GAAI,IACX,EAAa,EAAQ,YAAc,GAAI,IACvC,EAAe,EAAQ,aACvB,EAAU,EAAQ,QAClB,EAAe,EAAQ,OAAO,GAC9B,EAAY,CAAC,GAAK,IAAI,GAAK,IAAI,IAAM,IAAI,KAAO,IAAI,KAAO,KAC/D,MAAG,IACF,EAAW,mBAAmB,GAG/B,EAAI,aAAe,GAAkB,EAAa,EAAW,GAC7D,EAAI,WAAa,EAAQ,YAAc,EACpC,aAAa,KAAK,IACpB,GAAU,KAAO,OACjB,EAAU,KAAO,OACjB,EAAa,IAAK,gCAEnB,EAAa,IAAM,EAAa,KAAO,uCACvC,AAAG,EACF,EAAI,MAAM,EAAO,EAAa,GAE9B,EAAI,aAAa,MAAM,sBAEjB,EAAW,KAEnB,YAA2B,EAAU,EAAW,GAC/C,GAAG,CAAC,GACH,GAAG,YAAsB,IACxB,MAAO,GAER,EAAY,EAEb,GAAI,GAAe,GACf,EAAa,YAAqB,UACtC,EAAU,GAAS,GACnB,WAAe,GACd,GAAI,GAAK,EAAU,GACnB,AAAG,CAAC,GAAM,GACT,GAAK,EAAU,QAAU,EAAE,SAAS,GAAK,EAAU,EAAI,IAAM,GAE9D,EAAa,GAAO,GAAM,SAAS,GAClC,EAAG,WAAW,EAAI,KAAM,EAAI,GAAS,MACnC,aAEJ,SAAM,WACN,EAAM,SACN,EAAM,cACC,EAaR,cACI,KAAK,MAAQ,GAEjB,YAAkB,EAAQ,GACzB,EAAK,WAAa,EAAQ,WAC1B,EAAK,aAAe,EAAQ,aAM7B,GAAW,UAAY,CACtB,cAAgB,WACZ,KAAK,IAAM,GAAI,MAAoB,eAAe,KAAM,KAAM,MAC1D,KAAK,SACL,MAAK,IAAI,YAAc,KAAK,QAAQ,WAG5C,aAAa,SAAS,EAAc,EAAW,EAAO,GACrD,GAAI,GAAM,KAAK,IACR,EAAK,EAAI,gBAAgB,EAAc,GAAO,GAC9C,EAAM,EAAM,OAChB,GAAc,KAAM,GACpB,KAAK,eAAiB,EAEzB,KAAK,SAAW,GAAS,KAAK,QAAQ,GACnC,OAAS,GAAI,EAAI,EAAI,EAAK,KACtB,GAAI,GAAe,EAAM,OAAO,GAC5B,EAAQ,EAAM,SAAS,GACvB,EAAQ,EAAM,SAAS,GAC7B,EAAO,EAAI,kBAAkB,EAAc,GAC/C,KAAK,SAAU,GAAS,EAAM,WAAW,GAAG,GAC5C,EAAK,MAAQ,EAAK,UAAY,EAC9B,EAAG,iBAAiB,KAGtB,WAAW,SAAS,EAAc,EAAW,GAC5C,GAAI,GAAU,KAAK,eACf,EAAU,EAAQ,QACtB,KAAK,eAAiB,EAAQ,YAE/B,mBAAmB,SAAS,EAAQ,KAEpC,iBAAiB,SAAS,KAE1B,sBAAsB,SAAS,EAAQ,GACnC,GAAI,GAAM,KAAK,IAAI,4BAA4B,EAAQ,GACvD,KAAK,SAAW,GAAS,KAAK,QAAQ,GACtC,GAAc,KAAM,IAExB,oBAAoB,SAAS,EAAI,EAAO,KAExC,WAAW,SAAS,EAAO,EAAO,GAGjC,GAFA,EAAQ,GAAU,MAAM,KAAK,WAE1B,GACF,GAAI,KAAK,MACR,GAAI,GAAW,KAAK,IAAI,mBAAmB,OAE3C,IAAI,GAAW,KAAK,IAAI,eAAe,GAExC,AAAG,KAAK,eACP,KAAK,eAAe,YAAY,GACxB,QAAQ,KAAK,IACrB,KAAK,IAAI,YAAY,GAGtB,KAAK,SAAW,GAAS,KAAK,QAAQ,KAGxC,cAAc,SAAS,KAEvB,YAAY,WACX,KAAK,IAAI,aAEV,mBAAmB,SAAU,GACzB,AAAG,MAAK,QAAU,IACjB,GAAQ,WAAa,IAI1B,QAAQ,SAAS,EAAO,EAAO,GAC9B,EAAQ,GAAU,MAAM,KAAK,WAC1B,GAAI,GAAO,KAAK,IAAI,cAAc,GAClC,KAAK,SAAW,GAAS,KAAK,QAAQ,GACtC,GAAc,KAAM,IAGxB,WAAW,WAEP,KAAK,MAAQ,IAEjB,SAAS,WACL,KAAK,MAAQ,IAGjB,SAAS,SAAS,EAAM,EAAU,GACjC,GAAI,GAAO,KAAK,IAAI,eACjB,GAAI,GAAQ,EAAK,oBACb,GAAI,GAAK,EAAK,mBAAmB,EAAM,EAAU,GACjD,KAAK,SAAW,GAAS,KAAK,QAAQ,GACtC,GAAc,KAAM,KAO5B,QAAQ,SAAS,GAChB,QAAQ,KAAK,oBAAqB,EAAM,GAAS,KAAK,WAEvD,MAAM,SAAS,GACd,QAAQ,MAAM,kBAAmB,EAAM,GAAS,KAAK,WAEtD,WAAW,SAAS,GACnB,cAAQ,MAAM,uBAAwB,EAAM,GAAS,KAAK,UACjD,IAGX,YAAkB,GACjB,GAAG,EACF,MAAO;AAAA,GAAO,GAAE,UAAW,IAAI,UAAU,EAAE,WAAW,QAAQ,EAAE,aAAa,IAG/E,YAAmB,EAAM,EAAM,GAC9B,MAAG,OAAO,IAAS,SACX,EAAM,OAAO,EAAM,GAEvB,EAAM,QAAU,EAAM,GAAU,EAC3B,GAAI,MAAK,KAAK,OAAO,EAAM,EAAM,GAAQ,GAE1C,EAmCT,+JAA+J,QAAQ,OAAO,SAAS,GACtL,GAAW,UAAU,GAAO,WAAW,MAAO,SAI/C,YAAwB,EAAO,GAC3B,AAAK,EAAO,eAGR,EAAO,eAAe,YAAY,GAFlC,EAAO,IAAI,YAAY,GAO9B,GAAI,IAAY,AAAQ,KAAS,UAC7B,GAAoB,GAAQ,kBAAoB,AAAQ,KAAS,kBACrE,GAAQ,cAAgB,AAAQ,KAAS,cACzC,GAAQ,UAAY,KCzPrB,cAIA,GAAI,IAAY,AAAQ,KAAU,UAMlC,GAAQ,MAAQ,GAEhB,GAAI,IAAY,EACZ,GAAa,EACb,GAAe,EAYnB,YAA2B,GACzB,MAAO,GAAK,WAAa,IACpB,EAAK,WAAa,IAClB,EAAK,WAAa,GAazB,YAAqB,GACnB,MAAG,CAAC,EAAK,YAAc,EAAK,WAAW,SAAW,EAOpD,YAAmB,EAAM,GACvB,GAAI,CAAC,EACH,KAAM,IAAI,OAAM,GAYpB,YAAgB,GACd,GAAI,GAAM,GAAI,MAAY,gBAAgB,GAC1C,GACE,EAAI,gBAAgB,WAAa,QACjC,uDAEF,GAAI,GAAQ,GAAc,EAAI,iBAI9B,MAAI,GAAM,QAAU,GAAG,GAAQ,EAAM,IAE9B,EAWT,YAAwB,GACtB,GAAI,GAAG,EAAS,EAAK,EAAK,EAAS,EAAK,EAAS,EAEjD,GAAI,CAAC,EACH,MAAO,MAET,GAAI,EAAK,WAAa,SAEpB,GADA,EAAU,GACN,GAAY,GACd,MAAO,GAET,IAAK,EAAE,EAAG,EAAI,EAAK,WAAW,OAAQ,IACpC,AAAK,GAAiB,EAAK,WAAW,KACpC,EAAQ,KAAM,GAAc,EAAK,WAAW,KAGhD,MAAO,WACE,EAAK,WAAa,QAI3B,GAHA,EAAU,GACV,EAAM,KACN,EAAU,EACN,GAAY,GACd,MAAO,GAET,IAAK,EAAE,EAAG,EAAI,EAAK,WAAW,OAAQ,IACpC,AAAI,GAAiB,EAAK,WAAW,KACrC,CAAI,EAAU,GAAM,EAClB,IACE,EAAK,WAAW,GAAG,WAAa,MAChC,sCAEF,EAAM,GAAc,EAAK,WAAW,KAEpC,IACE,EAAK,WAAW,GAAG,WAAa,MAChC,mBACI,GAAc,EAAK,WAAW,IAC9B,4BAEN,EAAQ,GAAO,GAAc,EAAK,WAAW,KAE/C,GAAW,GAEb,GAAI,EAAU,GAAM,EAClB,KAAM,IAAI,OAAM,sBAAwB,EAAM,2BAEhD,MAAO,WAEE,EAAK,WAAa,SAE3B,GADA,EAAU,GACN,GAAY,GACd,MAAO,GAET,IAAK,EAAE,EAAG,EAAI,EAAK,WAAW,OAAQ,IACpC,AAAK,GAAiB,EAAK,WAAW,KACpC,GAAM,GAAc,EAAK,WAAW,IAChC,AAAQ,GAAR,MAAa,EAAQ,KAAK,IAGlC,MAAO,WAEE,EAAK,WAAa,SAGtB,GAAI,EAAK,WAAa,MAC3B,MAAI,IAAY,GACP,GAEF,EAAK,WAAW,GAAG,UACrB,GAAI,EAAK,WAAa,UAE3B,GADA,EAAM,GACF,GAAY,GACd,MAAO,GAET,IAAK,EAAE,EAAG,EAAI,EAAK,WAAW,OAAQ,KACpC,GAAI,GAAO,EAAK,WAAW,GAAG,SAC9B,AAAI,KAAS,IAAa,IAAS,KACjC,IAAO,EAAK,WAAW,GAAG,WAG9B,MAAO,QAEF,GAAI,EAAK,WAAa,UAC3B,UACE,CAAC,GAAY,GACb,+BAEK,SAAS,EAAK,WAAW,GAAG,UAAW,IAEzC,GAAI,EAAK,WAAa,QAM3B,IALA,GACE,CAAC,GAAY,GACb,4BAEF,EAAM,GACD,EAAE,EAAG,EAAI,EAAK,WAAW,OAAQ,IACpC,AAAI,EAAK,WAAW,GAAG,WAAa,IAClC,IAAO,EAAK,WAAW,GAAG,WAG9B,MAAO,YAAW,WAET,EAAK,WAAa,QAE3B,GADA,EAAM,GACF,GAAY,GACd,MAAO,QAAO,KAAK,EAAK,UAE1B,IAAK,EAAE,EAAG,EAAI,EAAK,WAAW,OAAQ,IACpC,AAAI,EAAK,WAAW,GAAG,WAAa,IAClC,IAAO,EAAK,WAAW,GAAG,UAAU,QAAQ,OAAQ,KAGxD,MAAO,QAAO,KAAK,EAAK,eAEnB,GAAI,EAAK,WAAa,OAC3B,UACE,CAAC,GAAY,GACb,4BAEK,GAAI,MAAK,EAAK,WAAW,GAAG,WAE9B,GAAI,EAAK,WAAa,OAC3B,MAAO,GAEF,GAAI,EAAK,WAAa,QAC3B,MAAO,SCpNX,2BAEA,GAAQ,WAAa,GACrB,GAAQ,YAAc,GACtB,GAAQ,cAAgB,GAExB,GAAI,IAAS,GACT,GAAY,GACZ,GAAM,MAAO,aAAe,YAAc,WAAa,MAEvD,GAAO,mEACX,OAAS,IAAI,EAAG,GAAM,GAAK,OAAQ,GAAI,GAAK,EAAE,GAC5C,GAAO,IAAK,GAAK,IACjB,GAAU,GAAK,WAAW,KAAM,GAKlC,GAAU,IAAI,WAAW,IAAM,GAC/B,GAAU,IAAI,WAAW,IAAM,GAE/B,YAAkB,GAChB,GAAI,GAAM,EAAI,OAEd,GAAI,EAAM,EAAI,EACZ,KAAM,IAAI,OAAM,kDAKlB,GAAI,GAAW,EAAI,QAAQ,KAC3B,AAAI,IAAa,IAAI,GAAW,GAEhC,GAAI,GAAkB,IAAa,EAC/B,EACA,EAAK,EAAW,EAEpB,MAAO,CAAC,EAAU,GAIpB,YAAqB,GACnB,GAAI,GAAO,GAAQ,GACf,EAAW,EAAK,GAChB,EAAkB,EAAK,GAC3B,MAAS,GAAW,GAAmB,EAAI,EAAK,EAGlD,YAAsB,EAAK,EAAU,GACnC,MAAS,GAAW,GAAmB,EAAI,EAAK,EAGlD,YAAsB,GACpB,GAAI,GACA,EAAO,GAAQ,GACf,EAAW,EAAK,GAChB,EAAkB,EAAK,GAEvB,EAAM,GAAI,IAAI,GAAY,EAAK,EAAU,IAEzC,EAAU,EAGV,EAAM,EAAkB,EACxB,EAAW,EACX,EAEA,EACJ,IAAK,EAAI,EAAG,EAAI,EAAK,GAAK,EACxB,EACG,GAAU,EAAI,WAAW,KAAO,GAChC,GAAU,EAAI,WAAW,EAAI,KAAO,GACpC,GAAU,EAAI,WAAW,EAAI,KAAO,EACrC,GAAU,EAAI,WAAW,EAAI,IAC/B,EAAI,KAAc,GAAO,GAAM,IAC/B,EAAI,KAAc,GAAO,EAAK,IAC9B,EAAI,KAAa,EAAM,IAGzB,MAAI,KAAoB,GACtB,GACG,GAAU,EAAI,WAAW,KAAO,EAChC,GAAU,EAAI,WAAW,EAAI,KAAO,EACvC,EAAI,KAAa,EAAM,KAGrB,IAAoB,GACtB,GACG,GAAU,EAAI,WAAW,KAAO,GAChC,GAAU,EAAI,WAAW,EAAI,KAAO,EACpC,GAAU,EAAI,WAAW,EAAI,KAAO,EACvC,EAAI,KAAc,GAAO,EAAK,IAC9B,EAAI,KAAa,EAAM,KAGlB,EAGT,YAA0B,GACxB,MAAO,IAAO,GAAO,GAAK,IACxB,GAAO,GAAO,GAAK,IACnB,GAAO,GAAO,EAAI,IAClB,GAAO,EAAM,IAGjB,YAAsB,EAAO,EAAO,GAGlC,OAFI,GACA,EAAS,GACJ,EAAI,EAAO,EAAI,EAAK,GAAK,EAChC,EACI,GAAM,IAAM,GAAM,UAClB,GAAM,EAAI,IAAM,EAAK,OACtB,GAAM,EAAI,GAAK,KAClB,EAAO,KAAK,GAAgB,IAE9B,MAAO,GAAO,KAAK,IAGrB,YAAwB,GAQtB,OAPI,GACA,EAAM,EAAM,OACZ,EAAa,EAAM,EACnB,EAAQ,GACR,EAAiB,MAGZ,EAAI,EAAG,EAAO,EAAM,EAAY,EAAI,EAAM,GAAK,EACtD,EAAM,KAAK,GAAY,EAAO,EAAI,EAAI,EAAkB,EAAO,EAAQ,EAAI,IAI7E,MAAI,KAAe,EACjB,GAAM,EAAM,EAAM,GAClB,EAAM,KACJ,GAAO,GAAO,GACd,GAAQ,GAAO,EAAK,IACpB,OAEO,IAAe,GACxB,GAAO,GAAM,EAAM,IAAM,GAAK,EAAM,EAAM,GAC1C,EAAM,KACJ,GAAO,GAAO,IACd,GAAQ,GAAO,EAAK,IACpB,GAAQ,GAAO,EAAK,IACpB,MAIG,EAAM,KAAK,OCpJpB,mBACA,AAAC,YACC,GAAI,GAAQ,EAAS,EAAS,EAAY,EAAU,EAClD,EAAQ,GAAG,MACX,EAAU,GAAG,eAEf,EAAS,WACP,GAAI,GAAG,EAAK,EAAK,EAAQ,EAAS,EAElC,GADA,EAAS,UAAU,GAAI,EAAU,GAAK,UAAU,OAAS,EAAM,KAAK,UAAW,GAAK,GAChF,EAAW,OAAO,QACpB,OAAO,OAAO,MAAM,KAAM,eAE1B,KAAK,EAAI,EAAG,EAAM,EAAQ,OAAQ,EAAI,EAAK,IAEzC,GADA,EAAS,EAAQ,GACb,GAAU,KACZ,IAAK,IAAO,GACV,AAAI,CAAC,EAAQ,KAAK,EAAQ,IAC1B,GAAO,GAAO,EAAO,IAK7B,MAAO,IAGT,EAAa,SAAS,GACpB,MAAO,CAAC,CAAC,GAAO,OAAO,UAAU,SAAS,KAAK,KAAS,qBAG1D,EAAW,SAAS,GAClB,GAAI,GACJ,MAAO,CAAC,CAAC,GAAS,IAAM,MAAO,MAAS,YAAc,IAAQ,WAGhE,EAAU,SAAS,GACjB,MAAI,GAAW,MAAM,SACZ,MAAM,QAAQ,GAEd,OAAO,UAAU,SAAS,KAAK,KAAS,kBAInD,EAAU,SAAS,GACjB,GAAI,GACJ,GAAI,EAAQ,GACV,MAAO,CAAC,EAAI,OAEZ,IAAK,IAAO,GACV,GAAI,EAAC,EAAQ,KAAK,EAAK,GACvB,MAAO,GAET,MAAO,IAIX,EAAgB,SAAS,GACvB,GAAI,GAAM,EACV,MAAO,GAAS,IAAS,GAAQ,OAAO,eAAe,KAAU,GAAO,EAAM,cAAiB,MAAO,IAAS,YAAgB,YAAgB,IAAU,SAAS,UAAU,SAAS,KAAK,KAAU,SAAS,UAAU,SAAS,KAAK,SAGvO,GAAO,QAAQ,OAAS,EAExB,GAAO,QAAQ,WAAa,EAE5B,GAAO,QAAQ,SAAW,EAE1B,GAAO,QAAQ,QAAU,EAEzB,GAAO,QAAQ,QAAU,EAEzB,GAAO,QAAQ,cAAgB,IAE9B,KAAK,MCxER,mBACA,AAAC,YACC,GAAI,GAEJ,GAAO,QAAU,EAAgB,WAC/B,WAAsB,EAAQ,EAAM,GAGlC,GAFA,KAAK,QAAU,EAAO,QACtB,KAAK,UAAY,EAAO,UACpB,GAAQ,KACV,KAAM,IAAI,OAAM,qCAAuC,EAAO,MAEhE,GAAI,GAAS,KACX,KAAM,IAAI,OAAM,yCAA2C,EAAO,eAAiB,EAAO,MAE5F,KAAK,KAAO,KAAK,UAAU,QAAQ,GACnC,KAAK,MAAQ,KAAK,UAAU,SAAS,GAGvC,SAAa,UAAU,MAAQ,WAC7B,MAAO,QAAO,OAAO,OAGvB,EAAa,UAAU,SAAW,SAAS,GACzC,MAAO,MAAK,QAAQ,OAAO,IAAI,GAAS,UAAU,OAG7C,OAIR,KAAK,MC9BR,mBACA,AAAC,YACC,GAAI,GAAc,EAAY,EAAS,EAAY,EAAU,EAC3D,EAAS,SAAS,EAAO,GAAU,OAAS,KAAO,GAAU,AAAI,EAAQ,KAAK,EAAQ,IAAM,GAAM,GAAO,EAAO,IAAQ,aAAkB,KAAK,YAAc,EAAS,SAAK,UAAY,EAAO,UAAW,EAAM,UAAY,GAAI,GAAQ,EAAM,UAAY,EAAO,UAAkB,GAClR,EAAU,GAAG,eAEf,EAAc,KAAc,EAAW,EAAI,SAAU,EAAa,EAAI,WAEtE,EAAkB,KAElB,EAAuB,KAEvB,GAAO,QAAU,EAAc,SAAS,GACtC,EAAO,EAAY,GAEnB,WAAoB,EAAQ,EAAM,GAEhC,GADA,EAAW,UAAU,YAAY,KAAK,KAAM,GACxC,GAAQ,KACV,KAAM,IAAI,OAAM,wBAElB,KAAK,KAAO,KAAK,UAAU,QAAQ,GACnC,KAAK,WAAa,GACd,GAAc,MAChB,KAAK,UAAU,GAEb,EAAO,YACT,MAAK,OAAS,GACd,KAAK,eAAiB,EACtB,EAAO,WAAa,MAIxB,SAAW,UAAU,MAAQ,WAC3B,GAAI,GAAK,EAAS,EAAY,EAC9B,EAAa,OAAO,OAAO,MACvB,EAAW,QACb,GAAW,eAAiB,MAE9B,EAAW,WAAa,GACxB,EAAO,KAAK,WACZ,IAAK,IAAW,GACd,AAAI,CAAC,EAAQ,KAAK,EAAM,IACxB,GAAM,EAAK,GACX,EAAW,WAAW,GAAW,EAAI,SAEvC,SAAW,SAAW,GACtB,KAAK,SAAS,QAAQ,SAAS,GAC7B,GAAI,GACJ,SAAc,EAAM,QACpB,EAAY,OAAS,EACd,EAAW,SAAS,KAAK,KAE3B,GAGT,EAAW,UAAU,UAAY,SAAS,EAAM,GAC9C,GAAI,GAAS,EAIb,GAHI,GAAQ,MACV,GAAO,EAAK,WAEV,EAAS,GACX,IAAK,IAAW,GACd,AAAI,CAAC,EAAQ,KAAK,EAAM,IACxB,GAAW,EAAK,GAChB,KAAK,UAAU,EAAS,QAG1B,AAAI,GAAW,IACb,GAAQ,EAAM,SAEZ,EAAC,KAAK,QAAQ,oBAAuB,GAAS,OAChD,MAAK,WAAW,GAAQ,GAAI,GAAa,KAAM,EAAM,IAGzD,MAAO,OAGT,EAAW,UAAU,gBAAkB,SAAS,GAC9C,GAAI,GAAS,EAAG,EAChB,GAAI,GAAQ,KACV,KAAM,IAAI,OAAM,0BAGlB,GADA,EAAO,EAAK,UACR,MAAM,QAAQ,GAChB,IAAK,EAAI,EAAG,EAAM,EAAK,OAAQ,EAAI,EAAK,IACtC,EAAU,EAAK,GACf,MAAO,MAAK,WAAW,OAGzB,OAAO,MAAK,WAAW,GAEzB,MAAO,OAGT,EAAW,UAAU,SAAW,SAAS,GACvC,MAAO,MAAK,QAAQ,OAAO,IAAI,GAAS,QAAQ,OAGlD,EAAW,UAAU,IAAM,SAAS,EAAM,GACxC,MAAO,MAAK,UAAU,EAAM,IAG9B,EAAW,UAAU,EAAI,SAAS,EAAM,GACtC,MAAO,MAAK,UAAU,EAAM,IAGvB,GAEN,KAEF,KAAK,MC9GR,mBACA,AAAC,YACC,GAAI,GAAU,EACZ,EAAS,SAAS,EAAO,GAAU,OAAS,KAAO,GAAU,AAAI,EAAQ,KAAK,EAAQ,IAAM,GAAM,GAAO,EAAO,IAAQ,aAAkB,KAAK,YAAc,EAAS,SAAK,UAAY,EAAO,UAAW,EAAM,UAAY,GAAI,GAAQ,EAAM,UAAY,EAAO,UAAkB,GAClR,EAAU,GAAG,eAEf,EAAkB,KAElB,GAAO,QAAU,EAAY,SAAS,GACpC,EAAO,EAAU,GAEjB,WAAkB,EAAQ,GAExB,GADA,EAAS,UAAU,YAAY,KAAK,KAAM,GACtC,GAAQ,KACV,KAAM,IAAI,OAAM,sBAElB,KAAK,KAAO,KAAK,UAAU,MAAM,GAGnC,SAAS,UAAU,MAAQ,WACzB,MAAO,QAAO,OAAO,OAGvB,EAAS,UAAU,SAAW,SAAS,GACrC,MAAO,MAAK,QAAQ,OAAO,IAAI,GAAS,MAAM,OAGzC,GAEN,KAEF,KAAK,MC/BR,mBACA,AAAC,YACC,GAAI,GAAY,EACd,EAAS,SAAS,EAAO,GAAU,OAAS,KAAO,GAAU,AAAI,EAAQ,KAAK,EAAQ,IAAM,GAAM,GAAO,EAAO,IAAQ,aAAkB,KAAK,YAAc,EAAS,SAAK,UAAY,EAAO,UAAW,EAAM,UAAY,GAAI,GAAQ,EAAM,UAAY,EAAO,UAAkB,GAClR,EAAU,GAAG,eAEf,EAAkB,KAElB,GAAO,QAAU,EAAc,SAAS,GACtC,EAAO,EAAY,GAEnB,WAAoB,EAAQ,GAE1B,GADA,EAAW,UAAU,YAAY,KAAK,KAAM,GACxC,GAAQ,KACV,KAAM,IAAI,OAAM,wBAElB,KAAK,KAAO,KAAK,UAAU,QAAQ,GAGrC,SAAW,UAAU,MAAQ,WAC3B,MAAO,QAAO,OAAO,OAGvB,EAAW,UAAU,SAAW,SAAS,GACvC,MAAO,MAAK,QAAQ,OAAO,IAAI,GAAS,QAAQ,OAG3C,GAEN,KAEF,KAAK,MC/BR,mBACA,AAAC,YACC,GAAI,GAAgB,EAAS,EAC3B,EAAS,SAAS,EAAO,GAAU,OAAS,KAAO,GAAU,AAAI,EAAQ,KAAK,EAAQ,IAAM,GAAM,GAAO,EAAO,IAAQ,aAAkB,KAAK,YAAc,EAAS,SAAK,UAAY,EAAO,UAAW,EAAM,UAAY,GAAI,GAAQ,EAAM,UAAY,EAAO,UAAkB,GAClR,EAAU,GAAG,eAEf,EAAW,AAAQ,KAAa,SAEhC,EAAkB,KAElB,GAAO,QAAU,EAAkB,SAAS,GAC1C,EAAO,EAAgB,GAEvB,WAAwB,EAAQ,EAAS,EAAU,GACjD,GAAI,GACJ,EAAe,UAAU,YAAY,KAAK,KAAM,GAC5C,EAAS,IACX,GAAM,EAAS,EAAU,EAAI,QAAS,EAAW,EAAI,SAAU,EAAa,EAAI,YAE7E,GACH,GAAU,OAEZ,KAAK,QAAU,KAAK,UAAU,WAAW,GACrC,GAAY,MACd,MAAK,SAAW,KAAK,UAAU,YAAY,IAEzC,GAAc,MAChB,MAAK,WAAa,KAAK,UAAU,cAAc,IAInD,SAAe,UAAU,SAAW,SAAS,GAC3C,MAAO,MAAK,QAAQ,OAAO,IAAI,GAAS,YAAY,OAG/C,GAEN,KAEF,KAAK,MCvCR,mBACA,AAAC,YACC,GAAI,GAAe,EACjB,EAAS,SAAS,EAAO,GAAU,OAAS,KAAO,GAAU,AAAI,EAAQ,KAAK,EAAQ,IAAM,GAAM,GAAO,EAAO,IAAQ,aAAkB,KAAK,YAAc,EAAS,SAAK,UAAY,EAAO,UAAW,EAAM,UAAY,GAAI,GAAQ,EAAM,UAAY,EAAO,UAAkB,GAClR,EAAU,GAAG,eAEf,EAAkB,KAElB,GAAO,QAAU,EAAiB,SAAS,GACzC,EAAO,EAAe,GAEtB,WAAuB,EAAQ,EAAa,EAAe,EAAe,EAAkB,GAE1F,GADA,EAAc,UAAU,YAAY,KAAK,KAAM,GAC3C,GAAe,KACjB,KAAM,IAAI,OAAM,4BAElB,GAAI,GAAiB,KACnB,KAAM,IAAI,OAAM,8BAElB,GAAI,CAAC,EACH,KAAM,IAAI,OAAM,8BAElB,GAAI,CAAC,EACH,KAAM,IAAI,OAAM,iCAKlB,GAHI,EAAiB,QAAQ,OAAS,GACpC,GAAmB,IAAM,GAEvB,CAAC,EAAiB,MAAM,0CAC1B,KAAM,IAAI,OAAM,iFAElB,GAAI,GAAgB,CAAC,EAAiB,MAAM,uBAC1C,KAAM,IAAI,OAAM,oDAElB,KAAK,YAAc,KAAK,UAAU,QAAQ,GAC1C,KAAK,cAAgB,KAAK,UAAU,QAAQ,GAC5C,KAAK,cAAgB,KAAK,UAAU,WAAW,GAC/C,KAAK,aAAe,KAAK,UAAU,cAAc,GACjD,KAAK,iBAAmB,EAG1B,SAAc,UAAU,SAAW,SAAS,GAC1C,MAAO,MAAK,QAAQ,OAAO,IAAI,GAAS,WAAW,OAG9C,GAEN,KAEF,KAAK,MCjDR,mBACA,AAAC,YACC,GAAI,GAAc,EAAS,EACzB,EAAS,SAAS,EAAO,GAAU,OAAS,KAAO,GAAU,AAAI,EAAQ,KAAK,EAAQ,IAAM,GAAM,GAAO,EAAO,IAAQ,aAAkB,KAAK,YAAc,EAAS,SAAK,UAAY,EAAO,UAAW,EAAM,UAAY,GAAI,GAAQ,EAAM,UAAY,EAAO,UAAkB,GAClR,EAAU,GAAG,eAEf,EAAW,AAAQ,KAAa,SAEhC,EAAkB,KAElB,GAAO,QAAU,EAAgB,SAAS,GACxC,EAAO,EAAc,GAErB,WAAsB,EAAQ,EAAI,EAAM,GAEtC,GADA,EAAa,UAAU,YAAY,KAAK,KAAM,GAC1C,GAAQ,KACV,KAAM,IAAI,OAAM,uBAElB,GAAI,GAAS,KACX,KAAM,IAAI,OAAM,wBAIlB,GAFA,KAAK,GAAK,CAAC,CAAC,EACZ,KAAK,KAAO,KAAK,UAAU,QAAQ,GAC/B,CAAC,EAAS,GACZ,KAAK,MAAQ,KAAK,UAAU,eAAe,QAE3C,GAAI,CAAC,EAAM,OAAS,CAAC,EAAM,MACzB,KAAM,IAAI,OAAM,wEAElB,GAAI,EAAM,OAAS,CAAC,EAAM,MACxB,KAAM,IAAI,OAAM,8DAWlB,GATI,EAAM,OAAS,MACjB,MAAK,MAAQ,KAAK,UAAU,SAAS,EAAM,QAEzC,EAAM,OAAS,MACjB,MAAK,MAAQ,KAAK,UAAU,SAAS,EAAM,QAEzC,EAAM,OAAS,MACjB,MAAK,MAAQ,KAAK,UAAU,SAAS,EAAM,QAEzC,KAAK,IAAM,KAAK,MAClB,KAAM,IAAI,OAAM,8DAKtB,SAAa,UAAU,SAAW,SAAS,GACzC,MAAO,MAAK,QAAQ,OAAO,IAAI,GAAS,UAAU,OAG7C,GAEN,KAEF,KAAK,MCvDR,mBACA,AAAC,YACC,GAAI,GAAe,EACjB,EAAS,SAAS,EAAO,GAAU,OAAS,KAAO,GAAU,AAAI,EAAQ,KAAK,EAAQ,IAAM,GAAM,GAAO,EAAO,IAAQ,aAAkB,KAAK,YAAc,EAAS,SAAK,UAAY,EAAO,UAAW,EAAM,UAAY,GAAI,GAAQ,EAAM,UAAY,EAAO,UAAkB,GAClR,EAAU,GAAG,eAEf,EAAkB,KAElB,GAAO,QAAU,EAAiB,SAAS,GACzC,EAAO,EAAe,GAEtB,WAAuB,EAAQ,EAAM,GAEnC,GADA,EAAc,UAAU,YAAY,KAAK,KAAM,GAC3C,GAAQ,KACV,KAAM,IAAI,OAAM,4BAElB,AAAK,GACH,GAAQ,aAEN,MAAM,QAAQ,IAChB,GAAQ,IAAM,EAAM,KAAK,KAAO,KAElC,KAAK,KAAO,KAAK,UAAU,QAAQ,GACnC,KAAK,MAAQ,KAAK,UAAU,gBAAgB,GAG9C,SAAc,UAAU,SAAW,SAAS,GAC1C,MAAO,MAAK,QAAQ,OAAO,IAAI,GAAS,WAAW,OAG9C,GAEN,KAEF,KAAK,MClCR,mBACA,AAAC,YACC,GAAI,GAAgB,EAClB,EAAS,SAAS,EAAO,GAAU,OAAS,KAAO,GAAU,AAAI,EAAQ,KAAK,EAAQ,IAAM,GAAM,GAAO,EAAO,IAAQ,aAAkB,KAAK,YAAc,EAAS,SAAK,UAAY,EAAO,UAAW,EAAM,UAAY,GAAI,GAAQ,EAAM,UAAY,EAAO,UAAkB,GAClR,EAAU,GAAG,eAEf,EAAkB,KAElB,GAAO,QAAU,EAAkB,SAAS,GAC1C,EAAO,EAAgB,GAEvB,WAAwB,EAAQ,EAAM,GAEpC,GADA,EAAe,UAAU,YAAY,KAAK,KAAM,GAC5C,GAAQ,KACV,KAAM,IAAI,OAAM,yBAElB,GAAI,CAAC,EAAM,OAAS,CAAC,EAAM,MACzB,KAAM,IAAI,OAAM,oEAElB,KAAK,KAAO,KAAK,UAAU,QAAQ,GAC/B,EAAM,OAAS,MACjB,MAAK,MAAQ,KAAK,UAAU,SAAS,EAAM,QAEzC,EAAM,OAAS,MACjB,MAAK,MAAQ,KAAK,UAAU,SAAS,EAAM,QAI/C,SAAe,UAAU,SAAW,SAAS,GAC3C,MAAO,MAAK,QAAQ,OAAO,IAAI,GAAS,YAAY,OAG/C,GAEN,KAEF,KAAK,MCpCR,mBACA,AAAC,YACC,GAAI,GAAe,EAAe,EAAc,EAAgB,EAAY,EAAS,EACnF,EAAS,SAAS,EAAO,GAAU,OAAS,KAAO,GAAU,AAAI,EAAQ,KAAK,EAAQ,IAAM,GAAM,GAAO,EAAO,IAAQ,aAAkB,KAAK,YAAc,EAAS,SAAK,UAAY,EAAO,UAAW,EAAM,UAAY,GAAI,GAAQ,EAAM,UAAY,EAAO,UAAkB,GAClR,EAAU,GAAG,eAEf,EAAW,AAAQ,KAAa,SAEhC,EAAkB,KAElB,EAAwB,KAExB,EAAuB,KAEvB,EAAwB,KAExB,EAAyB,KAEzB,GAAO,QAAU,EAAc,SAAS,GACtC,EAAO,EAAY,GAEnB,WAAoB,EAAQ,EAAO,GACjC,GAAI,GAAK,EACT,EAAW,UAAU,YAAY,KAAK,KAAM,GAC5C,KAAK,eAAiB,EAClB,EAAS,IACX,GAAM,EAAO,EAAQ,EAAI,MAAO,EAAQ,EAAI,OAE1C,GAAS,MACX,GAAO,CAAC,EAAO,GAAQ,EAAQ,EAAK,GAAI,EAAQ,EAAK,IAEnD,GAAS,MACX,MAAK,MAAQ,KAAK,UAAU,SAAS,IAEnC,GAAS,MACX,MAAK,MAAQ,KAAK,UAAU,SAAS,IAIzC,SAAW,UAAU,QAAU,SAAS,EAAM,GAC5C,GAAI,GACJ,SAAQ,GAAI,GAAc,KAAM,EAAM,GACtC,KAAK,SAAS,KAAK,GACZ,MAGT,EAAW,UAAU,QAAU,SAAS,EAAa,EAAe,EAAe,EAAkB,GACnG,GAAI,GACJ,SAAQ,GAAI,GAAc,KAAM,EAAa,EAAe,EAAe,EAAkB,GAC7F,KAAK,SAAS,KAAK,GACZ,MAGT,EAAW,UAAU,OAAS,SAAS,EAAM,GAC3C,GAAI,GACJ,SAAQ,GAAI,GAAa,KAAM,GAAO,EAAM,GAC5C,KAAK,SAAS,KAAK,GACZ,MAGT,EAAW,UAAU,QAAU,SAAS,EAAM,GAC5C,GAAI,GACJ,SAAQ,GAAI,GAAa,KAAM,GAAM,EAAM,GAC3C,KAAK,SAAS,KAAK,GACZ,MAGT,EAAW,UAAU,SAAW,SAAS,EAAM,GAC7C,GAAI,GACJ,SAAQ,GAAI,GAAe,KAAM,EAAM,GACvC,KAAK,SAAS,KAAK,GACZ,MAGT,EAAW,UAAU,SAAW,SAAS,GACvC,MAAO,MAAK,QAAQ,OAAO,IAAI,GAAS,QAAQ,OAGlD,EAAW,UAAU,IAAM,SAAS,EAAM,GACxC,MAAO,MAAK,QAAQ,EAAM,IAG5B,EAAW,UAAU,IAAM,SAAS,EAAa,EAAe,EAAe,EAAkB,GAC/F,MAAO,MAAK,QAAQ,EAAa,EAAe,EAAe,EAAkB,IAGnF,EAAW,UAAU,IAAM,SAAS,EAAM,GACxC,MAAO,MAAK,OAAO,EAAM,IAG3B,EAAW,UAAU,KAAO,SAAS,EAAM,GACzC,MAAO,MAAK,QAAQ,EAAM,IAG5B,EAAW,UAAU,IAAM,SAAS,EAAM,GACxC,MAAO,MAAK,SAAS,EAAM,IAG7B,EAAW,UAAU,GAAK,WACxB,MAAO,MAAK,QAAU,KAAK,gBAGtB,GAEN,KAEF,KAAK,MC1GR,mBACA,AAAC,YACC,GAAI,GAAS,EACX,EAAS,SAAS,EAAO,GAAU,OAAS,KAAO,GAAU,AAAI,EAAQ,KAAK,EAAQ,IAAM,GAAM,GAAO,EAAO,IAAQ,aAAkB,KAAK,YAAc,EAAS,SAAK,UAAY,EAAO,UAAW,EAAM,UAAY,GAAI,GAAQ,EAAM,UAAY,EAAO,UAAkB,GAClR,EAAU,GAAG,eAEf,EAAkB,KAElB,GAAO,QAAU,EAAU,SAAS,GAClC,EAAO,EAAQ,GAEf,WAAgB,EAAQ,GAEtB,GADA,EAAO,UAAU,YAAY,KAAK,KAAM,GACpC,GAAQ,KACV,KAAM,IAAI,OAAM,oBAElB,KAAK,MAAQ,KAAK,UAAU,IAAI,GAGlC,SAAO,UAAU,MAAQ,WACvB,MAAO,QAAO,OAAO,OAGvB,EAAO,UAAU,SAAW,SAAS,GACnC,MAAO,MAAK,QAAQ,OAAO,IAAI,GAAS,IAAI,OAGvC,GAEN,KAEF,KAAK,MC/BR,mBACA,AAAC,YACC,GAAI,GAAS,EACX,EAAS,SAAS,EAAO,GAAU,OAAS,KAAO,GAAU,AAAI,EAAQ,KAAK,EAAQ,IAAM,GAAM,GAAO,EAAO,IAAQ,aAAkB,KAAK,YAAc,EAAS,SAAK,UAAY,EAAO,UAAW,EAAM,UAAY,GAAI,GAAQ,EAAM,UAAY,EAAO,UAAkB,GAClR,EAAU,GAAG,eAEf,EAAkB,KAElB,GAAO,QAAU,EAAW,SAAS,GACnC,EAAO,EAAS,GAEhB,WAAiB,EAAQ,GAEvB,GADA,EAAQ,UAAU,YAAY,KAAK,KAAM,GACrC,GAAQ,KACV,KAAM,IAAI,OAAM,wBAElB,KAAK,MAAQ,KAAK,UAAU,QAAQ,GAGtC,SAAQ,UAAU,MAAQ,WACxB,MAAO,QAAO,OAAO,OAGvB,EAAQ,UAAU,SAAW,SAAS,GACpC,MAAO,MAAK,QAAQ,OAAO,IAAI,GAAS,KAAK,OAGxC,GAEN,KAEF,KAAK,MC/BR,mBACA,AAAC,YACC,GAAI,GAAS,EACX,EAAS,SAAS,EAAO,GAAU,OAAS,KAAO,GAAU,AAAI,EAAQ,KAAK,EAAQ,IAAM,GAAM,GAAO,EAAO,IAAQ,aAAkB,KAAK,YAAc,EAAS,SAAK,UAAY,EAAO,UAAW,EAAM,UAAY,GAAI,GAAQ,EAAM,UAAY,EAAO,UAAkB,GAClR,EAAU,GAAG,eAEf,EAAkB,KAElB,GAAO,QAAU,EAA4B,SAAS,GACpD,EAAO,EAA0B,GAEjC,WAAkC,EAAQ,EAAQ,GAEhD,GADA,EAAyB,UAAU,YAAY,KAAK,KAAM,GACtD,GAAU,KACZ,KAAM,IAAI,OAAM,8BAElB,KAAK,OAAS,KAAK,UAAU,UAAU,GACnC,GACF,MAAK,MAAQ,KAAK,UAAU,SAAS,IAIzC,SAAyB,UAAU,MAAQ,WACzC,MAAO,QAAO,OAAO,OAGvB,EAAyB,UAAU,SAAW,SAAS,GACrD,MAAO,MAAK,QAAQ,OAAO,IAAI,GAAS,sBAAsB,OAGzD,GAEN,KAEF,KAAK,MClCR,mBACA,AAAC,YACC,GAAI,GAAU,EAAY,EAAgB,EAAY,EAAY,EAAS,EAA0B,EAAQ,EAAS,EAAS,EAAY,EAAU,EACnJ,EAAU,GAAG,eAEf,EAAc,KAAc,EAAW,EAAI,SAAU,EAAa,EAAI,WAAY,EAAU,EAAI,QAEhG,EAAa,KAEb,EAAW,KAEX,EAAa,KAEb,EAAiB,KAEjB,EAAa,KAEb,EAAS,KAET,EAAU,KAEV,EAA2B,KAE3B,GAAO,QAAU,EAAW,WAC1B,WAAiB,GACf,KAAK,OAAS,EACV,KAAK,QACP,MAAK,QAAU,KAAK,OAAO,QAC3B,KAAK,UAAY,KAAK,OAAO,WAE/B,KAAK,SAAW,GACX,GACH,GAAqB,KACrB,EAAmB,KACnB,EAAqB,KACrB,EAAyB,KACzB,EAAqB,KACrB,EAAiB,KACjB,EAAkB,KAClB,EAAmC,MAIvC,SAAQ,UAAU,QAAU,SAAS,EAAM,EAAY,GACrD,GAAI,GAAW,EAAM,EAAG,EAAG,EAAK,EAAW,EAAK,EAAM,EAAM,EAY5D,GAXA,EAAY,KACR,GAAc,MAChB,GAAa,IAEf,EAAa,EAAW,UACnB,EAAS,IACZ,GAAO,CAAC,EAAY,GAAO,EAAO,EAAK,GAAI,EAAa,EAAK,IAE3D,GAAQ,MACV,GAAO,EAAK,WAEV,MAAM,QAAQ,GAChB,IAAK,EAAI,EAAG,EAAM,EAAK,OAAQ,EAAI,EAAK,IACtC,EAAO,EAAK,GACZ,EAAY,KAAK,QAAQ,WAElB,EAAW,GACpB,EAAY,KAAK,QAAQ,EAAK,iBACrB,EAAS,IAClB,IAAK,IAAO,GACV,GAAI,EAAC,EAAQ,KAAK,EAAM,GAQxB,GAPA,EAAM,EAAK,GACP,EAAW,IACb,GAAM,EAAI,SAEP,EAAS,IAAU,EAAQ,IAC9B,GAAM,MAEJ,CAAC,KAAK,QAAQ,kBAAoB,KAAK,UAAU,eAAiB,EAAI,QAAQ,KAAK,UAAU,iBAAmB,EAClH,EAAY,KAAK,UAAU,EAAI,OAAO,KAAK,UAAU,cAAc,QAAS,WACnE,CAAC,KAAK,QAAQ,oBAAsB,MAAM,QAAQ,GAC3D,IAAK,EAAI,EAAG,EAAO,EAAI,OAAQ,EAAI,EAAM,IACvC,EAAO,EAAI,GACX,EAAY,GACZ,EAAU,GAAO,EACjB,EAAY,KAAK,QAAQ,OAEtB,AAAI,GAAS,GAClB,GAAY,KAAK,QAAQ,GACzB,EAAU,QAAQ,IAElB,EAAY,KAAK,QAAQ,EAAK,OAIlC,AAAI,CAAC,KAAK,QAAQ,kBAAoB,KAAK,UAAU,gBAAkB,EAAK,QAAQ,KAAK,UAAU,kBAAoB,EACrH,EAAY,KAAK,KAAK,GACjB,AAAI,CAAC,KAAK,QAAQ,kBAAoB,KAAK,UAAU,iBAAmB,EAAK,QAAQ,KAAK,UAAU,mBAAqB,EAC9H,EAAY,KAAK,MAAM,GAClB,AAAI,CAAC,KAAK,QAAQ,kBAAoB,KAAK,UAAU,mBAAqB,EAAK,QAAQ,KAAK,UAAU,qBAAuB,EAClI,EAAY,KAAK,QAAQ,GACpB,AAAI,CAAC,KAAK,QAAQ,kBAAoB,KAAK,UAAU,eAAiB,EAAK,QAAQ,KAAK,UAAU,iBAAmB,EAC1H,EAAY,KAAK,IAAI,GAChB,AAAI,CAAC,KAAK,QAAQ,kBAAoB,KAAK,UAAU,cAAgB,EAAK,QAAQ,KAAK,UAAU,gBAAkB,EACxH,EAAY,KAAK,YAAY,EAAK,OAAO,KAAK,UAAU,aAAa,QAAS,GAE9E,EAAY,KAAK,KAAK,EAAM,EAAY,GAG5C,GAAI,GAAa,KACf,KAAM,IAAI,OAAM,uCAAyC,GAE3D,MAAO,IAGT,EAAQ,UAAU,aAAe,SAAS,EAAM,EAAY,GAC1D,GAAI,GAAO,EAAG,EACd,GAAI,KAAK,OACP,KAAM,IAAI,OAAM,wCAElB,SAAI,KAAK,OAAO,SAAS,QAAQ,MACjC,EAAU,KAAK,OAAO,SAAS,OAAO,GACtC,EAAQ,KAAK,OAAO,QAAQ,EAAM,EAAY,GAC9C,MAAM,UAAU,KAAK,MAAM,KAAK,OAAO,SAAU,GAC1C,GAGT,EAAQ,UAAU,YAAc,SAAS,EAAM,EAAY,GACzD,GAAI,GAAO,EAAG,EACd,GAAI,KAAK,OACP,KAAM,IAAI,OAAM,wCAElB,SAAI,KAAK,OAAO,SAAS,QAAQ,MACjC,EAAU,KAAK,OAAO,SAAS,OAAO,EAAI,GAC1C,EAAQ,KAAK,OAAO,QAAQ,EAAM,EAAY,GAC9C,MAAM,UAAU,KAAK,MAAM,KAAK,OAAO,SAAU,GAC1C,GAGT,EAAQ,UAAU,OAAS,WACzB,GAAI,GAAG,EACP,GAAI,KAAK,OACP,KAAM,IAAI,OAAM,kCAElB,SAAI,KAAK,OAAO,SAAS,QAAQ,MACjC,GAAG,OAAO,MAAM,KAAK,OAAO,SAAU,CAAC,EAAG,EAAI,EAAI,GAAG,OAAO,EAAO,KAC5D,KAAK,QAGd,EAAQ,UAAU,KAAO,SAAS,EAAM,EAAY,GAClD,GAAI,GAAO,EACX,MAAI,IAAQ,MACV,GAAO,EAAK,WAEd,GAAe,GAAa,IAC5B,EAAa,EAAW,UACnB,EAAS,IACZ,GAAO,CAAC,EAAY,GAAO,EAAO,EAAK,GAAI,EAAa,EAAK,IAE/D,EAAQ,GAAI,GAAW,KAAM,EAAM,GAC/B,GAAQ,MACV,EAAM,KAAK,GAEb,KAAK,SAAS,KAAK,GACZ,GAGT,EAAQ,UAAU,KAAO,SAAS,GAChC,GAAI,GACJ,SAAQ,GAAI,GAAQ,KAAM,GAC1B,KAAK,SAAS,KAAK,GACZ,MAGT,EAAQ,UAAU,MAAQ,SAAS,GACjC,GAAI,GACJ,SAAQ,GAAI,GAAS,KAAM,GAC3B,KAAK,SAAS,KAAK,GACZ,MAGT,EAAQ,UAAU,QAAU,SAAS,GACnC,GAAI,GACJ,SAAQ,GAAI,GAAW,KAAM,GAC7B,KAAK,SAAS,KAAK,GACZ,MAGT,EAAQ,UAAU,cAAgB,SAAS,GACzC,GAAI,GAAO,EAAG,EACd,SAAI,KAAK,OAAO,SAAS,QAAQ,MACjC,EAAU,KAAK,OAAO,SAAS,OAAO,GACtC,EAAQ,KAAK,OAAO,QAAQ,GAC5B,MAAM,UAAU,KAAK,MAAM,KAAK,OAAO,SAAU,GAC1C,MAGT,EAAQ,UAAU,aAAe,SAAS,GACxC,GAAI,GAAO,EAAG,EACd,SAAI,KAAK,OAAO,SAAS,QAAQ,MACjC,EAAU,KAAK,OAAO,SAAS,OAAO,EAAI,GAC1C,EAAQ,KAAK,OAAO,QAAQ,GAC5B,MAAM,UAAU,KAAK,MAAM,KAAK,OAAO,SAAU,GAC1C,MAGT,EAAQ,UAAU,IAAM,SAAS,GAC/B,GAAI,GACJ,SAAQ,GAAI,GAAO,KAAM,GACzB,KAAK,SAAS,KAAK,GACZ,MAGT,EAAQ,UAAU,YAAc,SAAS,EAAQ,GAC/C,GAAI,GAAW,EAAU,EAAa,EAAG,EAOzC,GANI,GAAU,MACZ,GAAS,EAAO,WAEd,GAAS,MACX,GAAQ,EAAM,WAEZ,MAAM,QAAQ,GAChB,IAAK,EAAI,EAAG,EAAM,EAAO,OAAQ,EAAI,EAAK,IACxC,EAAY,EAAO,GACnB,KAAK,YAAY,WAEV,EAAS,GAClB,IAAK,IAAa,GAChB,AAAI,CAAC,EAAQ,KAAK,EAAQ,IAC1B,GAAW,EAAO,GAClB,KAAK,YAAY,EAAW,QAG9B,AAAI,GAAW,IACb,GAAQ,EAAM,SAEhB,EAAc,GAAI,GAAyB,KAAM,EAAQ,GACzD,KAAK,SAAS,KAAK,GAErB,MAAO,OAGT,EAAQ,UAAU,kBAAoB,SAAS,EAAQ,GACrD,GAAI,GAAO,EAAG,EACd,SAAI,KAAK,OAAO,SAAS,QAAQ,MACjC,EAAU,KAAK,OAAO,SAAS,OAAO,GACtC,EAAQ,KAAK,OAAO,YAAY,EAAQ,GACxC,MAAM,UAAU,KAAK,MAAM,KAAK,OAAO,SAAU,GAC1C,MAGT,EAAQ,UAAU,iBAAmB,SAAS,EAAQ,GACpD,GAAI,GAAO,EAAG,EACd,SAAI,KAAK,OAAO,SAAS,QAAQ,MACjC,EAAU,KAAK,OAAO,SAAS,OAAO,EAAI,GAC1C,EAAQ,KAAK,OAAO,YAAY,EAAQ,GACxC,MAAM,UAAU,KAAK,MAAM,KAAK,OAAO,SAAU,GAC1C,MAGT,EAAQ,UAAU,YAAc,SAAS,EAAS,EAAU,GAC1D,GAAI,GAAK,EACT,SAAM,KAAK,WACX,EAAS,GAAI,GAAe,EAAK,EAAS,EAAU,GACpD,AAAI,EAAI,SAAS,YAAc,GAC7B,EAAI,SAAS,GAAK,EAElB,EAAI,SAAS,QAAQ,GAEhB,EAAI,QAAU,GAGvB,EAAQ,UAAU,QAAU,SAAS,EAAO,GAC1C,GAAI,GAAO,EAAK,EAAS,EAAG,EAAG,EAAG,EAAK,EAAM,EAAM,EAInD,IAHA,EAAM,KAAK,WACX,EAAU,GAAI,GAAW,EAAK,EAAO,GACrC,EAAO,EAAI,SACN,EAAI,EAAI,EAAG,EAAM,EAAK,OAAQ,EAAI,EAAK,EAAI,EAAE,EAEhD,GADA,EAAQ,EAAK,GACT,YAAiB,GACnB,SAAI,SAAS,GAAK,EACX,EAIX,IADA,EAAO,EAAI,SACN,EAAI,EAAI,EAAG,EAAO,EAAK,OAAQ,EAAI,EAAM,EAAI,EAAE,EAElD,GADA,EAAQ,EAAK,GACT,EAAM,OACR,SAAI,SAAS,OAAO,EAAG,EAAG,GACnB,EAGX,SAAI,SAAS,KAAK,GACX,GAGT,EAAQ,UAAU,GAAK,WACrB,GAAI,KAAK,OACP,KAAM,IAAI,OAAM,kFAElB,MAAO,MAAK,QAGd,EAAQ,UAAU,KAAO,WACvB,GAAI,GAEJ,IADA,EAAO,KACA,IACL,GAAI,EAAK,WACP,MAAO,GAAK,WACP,GAAI,EAAK,OACd,MAAO,GAEP,EAAO,EAAK,SAKlB,EAAQ,UAAU,SAAW,WAC3B,GAAI,GAEJ,IADA,EAAO,KACA,IACL,GAAI,EAAK,WACP,MAAO,GAEP,EAAO,EAAK,SAKlB,EAAQ,UAAU,IAAM,SAAS,GAC/B,MAAO,MAAK,WAAW,IAAI,IAG7B,EAAQ,UAAU,KAAO,WACvB,GAAI,GAEJ,GADA,EAAI,KAAK,OAAO,SAAS,QAAQ,MAC7B,EAAI,EACN,KAAM,IAAI,OAAM,6BAElB,MAAO,MAAK,OAAO,SAAS,EAAI,IAGlC,EAAQ,UAAU,KAAO,WACvB,GAAI,GAEJ,GADA,EAAI,KAAK,OAAO,SAAS,QAAQ,MAC7B,IAAM,IAAM,IAAM,KAAK,OAAO,SAAS,OAAS,EAClD,KAAM,IAAI,OAAM,4BAElB,MAAO,MAAK,OAAO,SAAS,EAAI,IAGlC,EAAQ,UAAU,eAAiB,SAAS,GAC1C,GAAI,GACJ,SAAa,EAAI,OAAO,QACxB,EAAW,OAAS,KACpB,EAAW,OAAS,GACpB,KAAK,SAAS,KAAK,GACZ,MAGT,EAAQ,UAAU,IAAM,SAAS,EAAM,EAAY,GACjD,MAAO,MAAK,QAAQ,EAAM,EAAY,IAGxC,EAAQ,UAAU,IAAM,SAAS,EAAM,EAAY,GACjD,MAAO,MAAK,KAAK,EAAM,EAAY,IAGrC,EAAQ,UAAU,IAAM,SAAS,GAC/B,MAAO,MAAK,KAAK,IAGnB,EAAQ,UAAU,IAAM,SAAS,GAC/B,MAAO,MAAK,MAAM,IAGpB,EAAQ,UAAU,IAAM,SAAS,GAC/B,MAAO,MAAK,QAAQ,IAGtB,EAAQ,UAAU,IAAM,SAAS,EAAQ,GACvC,MAAO,MAAK,YAAY,EAAQ,IAGlC,EAAQ,UAAU,IAAM,WACtB,MAAO,MAAK,YAGd,EAAQ,UAAU,IAAM,SAAS,EAAS,EAAU,GAClD,MAAO,MAAK,YAAY,EAAS,EAAU,IAG7C,EAAQ,UAAU,IAAM,SAAS,EAAO,GACtC,MAAO,MAAK,QAAQ,EAAO,IAG7B,EAAQ,UAAU,EAAI,SAAS,EAAM,EAAY,GAC/C,MAAO,MAAK,QAAQ,EAAM,EAAY,IAGxC,EAAQ,UAAU,EAAI,SAAS,EAAM,EAAY,GAC/C,MAAO,MAAK,KAAK,EAAM,EAAY,IAGrC,EAAQ,UAAU,EAAI,SAAS,GAC7B,MAAO,MAAK,KAAK,IAGnB,EAAQ,UAAU,EAAI,SAAS,GAC7B,MAAO,MAAK,MAAM,IAGpB,EAAQ,UAAU,EAAI,SAAS,GAC7B,MAAO,MAAK,QAAQ,IAGtB,EAAQ,UAAU,EAAI,SAAS,GAC7B,MAAO,MAAK,IAAI,IAGlB,EAAQ,UAAU,EAAI,SAAS,EAAQ,GACrC,MAAO,MAAK,YAAY,EAAQ,IAGlC,EAAQ,UAAU,EAAI,WACpB,MAAO,MAAK,MAGd,EAAQ,UAAU,iBAAmB,SAAS,GAC5C,MAAO,MAAK,eAAe,IAGtB,OAIR,KAAK,MC/aR,mBACA,AAAC,YACC,GAAI,GACF,EAAO,SAAS,EAAI,GAAK,MAAO,YAAY,MAAO,GAAG,MAAM,EAAI,aAChE,EAAU,GAAG,eAEf,GAAO,QAAU,EAAkB,WACjC,WAAwB,GACtB,KAAK,gBAAkB,EAAK,KAAK,gBAAiB,MAClD,GAAI,GAAK,EAAK,EACd,GAAY,GAAU,IACtB,KAAK,iBAAmB,EAAQ,iBAChC,EAAM,EAAQ,WAAa,GAC3B,IAAK,IAAO,GACV,AAAI,CAAC,EAAQ,KAAK,EAAK,IACvB,GAAQ,EAAI,GACZ,KAAK,GAAO,GAIhB,SAAe,UAAU,QAAU,SAAS,GAC1C,SAAM,GAAK,GAAO,GACX,KAAK,gBAAgB,IAG9B,EAAe,UAAU,QAAU,SAAS,GAC1C,SAAM,GAAK,GAAO,GACX,KAAK,gBAAgB,KAAK,SAAS,KAG5C,EAAe,UAAU,MAAQ,SAAS,GACxC,SAAM,GAAK,GAAO,GAClB,EAAM,EAAI,QAAQ,MAAO,mBAClB,KAAK,gBAAgB,IAG9B,EAAe,UAAU,QAAU,SAAS,GAE1C,GADA,EAAM,GAAK,GAAO,GACd,EAAI,MAAM,MACZ,KAAM,IAAI,OAAM,6CAA+C,GAEjE,MAAO,MAAK,gBAAgB,IAG9B,EAAe,UAAU,IAAM,SAAS,GACtC,MAAO,GAAK,GAAO,IAGrB,EAAe,UAAU,QAAU,SAAS,GAC1C,MAAO,GAAM,GAAK,GAAO,IAG3B,EAAe,UAAU,SAAW,SAAS,GAC3C,SAAM,GAAK,GAAO,GACX,KAAK,UAAU,IAGxB,EAAe,UAAU,UAAY,SAAS,GAC5C,MAAO,GAAK,GAAO,IAGrB,EAAe,UAAU,SAAW,SAAS,GAE3C,GADA,EAAM,GAAK,GAAO,GACd,EAAI,MAAM,OACZ,KAAM,IAAI,OAAM,yCAA2C,GAE7D,MAAO,IAGT,EAAe,UAAU,WAAa,SAAS,GAE7C,GADA,EAAM,GAAK,GAAO,GACd,CAAC,EAAI,MAAM,aACb,KAAM,IAAI,OAAM,2BAA6B,GAE/C,MAAO,IAGT,EAAe,UAAU,YAAc,SAAS,GAE9C,GADA,EAAM,GAAK,GAAO,GACd,CAAC,EAAI,MAAM,iCACb,KAAM,IAAI,OAAM,qBAAuB,GAEzC,MAAO,IAGT,EAAe,UAAU,cAAgB,SAAS,GAChD,MAAI,GACK,MAEA,MAIX,EAAe,UAAU,SAAW,SAAS,GAC3C,MAAO,GAAK,GAAO,IAGrB,EAAe,UAAU,SAAW,SAAS,GAC3C,MAAO,GAAK,GAAO,IAGrB,EAAe,UAAU,gBAAkB,SAAS,GAClD,MAAO,GAAK,GAAO,IAGrB,EAAe,UAAU,WAAa,SAAS,GAC7C,MAAO,GAAK,GAAO,IAGrB,EAAe,UAAU,cAAgB,SAAS,GAChD,MAAI,IAAO,KACF,GAAK,GAAO,GAEZ,GAIX,EAAe,UAAU,eAAiB,SAAS,GACjD,MAAO,GAAK,GAAO,IAGrB,EAAe,UAAU,SAAW,SAAS,GAC3C,MAAO,GAAK,GAAO,IAGrB,EAAe,UAAU,cAAgB,IAEzC,EAAe,UAAU,aAAe,IAExC,EAAe,UAAU,eAAiB,QAE1C,EAAe,UAAU,gBAAkB,SAE3C,EAAe,UAAU,kBAAoB,WAE7C,EAAe,UAAU,cAAgB,OAEzC,EAAe,UAAU,gBAAkB,SAAS,GAClD,GAAI,GAEJ,GADA,EAAM,EAAI,MAAM,6FACZ,EACF,KAAM,IAAI,OAAM,gCAAkC,EAAM,aAAe,EAAI,OAE7E,MAAO,IAGT,EAAe,UAAU,SAAW,SAAS,GAC3C,GAAI,GACJ,SAAW,KAAK,iBAAmB,cAAgB,KAC5C,EAAI,QAAQ,EAAU,SAAS,QAAQ,KAAM,QAAQ,QAAQ,KAAM,QAAQ,QAAQ,MAAO,UAGnG,EAAe,UAAU,UAAY,SAAS,GAC5C,GAAI,GACJ,SAAW,KAAK,iBAAmB,cAAgB,KAC5C,EAAI,QAAQ,EAAU,SAAS,QAAQ,KAAM,QAAQ,QAAQ,KAAM,UAAU,QAAQ,MAAO,SAAS,QAAQ,MAAO,SAAS,QAAQ,MAAO,UAG9I,OAIR,KAAK,MClKR,mBACA,AAAC,YACC,GAAI,GACF,EAAU,GAAG,eAEf,GAAO,QAAU,EAAiB,WAChC,WAAuB,GACrB,GAAI,GAAK,EAAK,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAClD,GAAY,GAAU,IACtB,KAAK,OAAS,EAAQ,QAAU,GAChC,KAAK,WAAc,GAAM,EAAQ,aAAe,KAAO,EAAM,GAC7D,AAAI,KAAK,OACP,MAAK,OAAU,GAAO,EAAQ,SAAW,KAAO,EAAO,KACvD,KAAK,QAAW,GAAO,EAAQ,UAAY,KAAO,EAAO;AAAA,EACzD,KAAK,OAAU,GAAO,EAAQ,SAAW,KAAO,EAAO,EACvD,KAAK,oBAAuB,GAAO,EAAQ,sBAAwB,KAAO,EAAO,GAEjF,MAAK,OAAS,GACd,KAAK,QAAU,GACf,KAAK,OAAS,EACd,KAAK,oBAAsB,GAE7B,KAAK,iBAAoB,GAAO,EAAQ,mBAAqB,KAAO,EAAO,GACvE,KAAK,mBAAqB,IAC5B,MAAK,iBAAmB,KAE1B,KAAK,eAAiB,KAAK,QAC3B,KAAK,cAAgB,KAAK,OAC1B,EAAO,EAAQ,QAAU,GACzB,IAAK,IAAO,GACV,AAAI,CAAC,EAAQ,KAAK,EAAM,IACxB,GAAQ,EAAK,GACb,KAAK,GAAO,GAIhB,SAAc,UAAU,IAAM,SAAS,GACrC,GAAI,GAAK,EAAK,EACd,GAAY,GAAU,IAClB,UAAY,IACd,MAAK,OAAS,EAAQ,QAEpB,cAAgB,IAClB,MAAK,WAAa,EAAQ,YAE5B,AAAI,KAAK,OACP,MAAK,OAAS,UAAY,GAAU,EAAQ,OAAS,KACrD,KAAK,QAAU,WAAa,GAAU,EAAQ,QAAU;AAAA,EACxD,KAAK,OAAS,UAAY,GAAU,EAAQ,OAAS,EACrD,KAAK,oBAAsB,uBAAyB,GAAU,EAAQ,oBAAsB,GAE5F,MAAK,OAAS,GACd,KAAK,QAAU,GACf,KAAK,OAAS,EACd,KAAK,oBAAsB,GAE7B,KAAK,iBAAmB,oBAAsB,GAAU,EAAQ,iBAAmB,GAC/E,KAAK,mBAAqB,IAC5B,MAAK,iBAAmB,KAE1B,KAAK,eAAiB,KAAK,QAC3B,KAAK,cAAgB,KAAK,OAC1B,EAAM,EAAQ,QAAU,GACxB,IAAK,IAAO,GACV,AAAI,CAAC,EAAQ,KAAK,EAAK,IACvB,GAAQ,EAAI,GACZ,KAAK,GAAO,GAEd,MAAO,OAGT,EAAc,UAAU,MAAQ,SAAS,GACvC,GAAI,GACJ,MAAI,MAAK,OACP,GAAU,IAAS,GAAK,KAAK,OAAS,EAClC,EAAS,EACJ,GAAI,OAAM,GAAQ,KAAK,KAAK,QAE5B,IAGF,IAIJ,OAIR,KAAK,MCzFR,mBACA,AAAC,YACC,GAAI,GAAU,EAAY,EAAe,EAAe,EAAc,EAAgB,EAAgB,EAAY,EAAY,EAA0B,EAAQ,EAAiB,EAAS,EACxL,EAAS,SAAS,EAAO,GAAU,OAAS,KAAO,GAAU,AAAI,EAAQ,KAAK,EAAQ,IAAM,GAAM,GAAO,EAAO,IAAQ,aAAkB,KAAK,YAAc,EAAS,SAAK,UAAY,EAAO,UAAW,EAAM,UAAY,GAAI,GAAQ,EAAM,UAAY,EAAO,UAAkB,GAClR,EAAU,GAAG,eAEf,EAAyB,KAEzB,EAAqB,KAErB,EAAmB,KAEnB,EAAqB,KAErB,EAAqB,KAErB,EAAiB,KAEjB,EAAkB,KAElB,EAAmC,KAEnC,EAAwB,KAExB,EAAwB,KAExB,EAAuB,KAEvB,EAAyB,KAEzB,EAAwB,KAExB,GAAO,QAAU,EAAmB,SAAS,GAC3C,EAAO,EAAiB,GAExB,WAAyB,GACvB,EAAgB,UAAU,YAAY,KAAK,KAAM,GAGnD,SAAgB,UAAU,SAAW,SAAS,GAC5C,GAAI,GAAO,EAAG,EAAK,EAAG,EAItB,IAHA,KAAK,cAAgB,GACrB,EAAI,GACJ,EAAM,EAAI,SACL,EAAI,EAAG,EAAM,EAAI,OAAQ,EAAI,EAAK,IACrC,EAAQ,EAAI,GACZ,GAAM,WACJ,OAAQ,QACD,CAAE,aAAiB,IACtB,MAAO,MAAK,YAAY,OACrB,CAAE,aAAiB,IACtB,MAAO,MAAK,QAAQ,OACjB,CAAE,aAAiB,IACtB,MAAO,MAAK,QAAQ,OACjB,CAAE,aAAiB,IACtB,MAAO,MAAK,sBAAsB,WAElC,MAAO,MAAK,QAAQ,EAAO,KAE9B,KAAK,MAEV,MAAI,MAAK,QAAU,EAAE,MAAM,CAAC,KAAK,QAAQ,UAAY,KAAK,SACxD,GAAI,EAAE,MAAM,EAAG,CAAC,KAAK,QAAQ,SAExB,GAGT,EAAgB,UAAU,UAAY,SAAS,GAC7C,MAAO,IAAM,EAAI,KAAO,KAAO,EAAI,MAAQ,KAG7C,EAAgB,UAAU,MAAQ,SAAS,EAAM,GAC/C,MAAO,MAAK,MAAM,GAAS,YAAc,EAAK,KAAO,MAAQ,KAAK,SAGpE,EAAgB,UAAU,QAAU,SAAS,EAAM,GACjD,MAAO,MAAK,MAAM,GAAS,QAAU,EAAK,KAAO,OAAS,KAAK,SAGjE,EAAgB,UAAU,YAAc,SAAS,EAAM,GACrD,GAAI,GACJ,SAAI,KAAK,MAAM,GACf,GAAK,kBAAoB,EAAK,QAAU,IACpC,EAAK,UAAY,MACnB,IAAK,cAAgB,EAAK,SAAW,KAEnC,EAAK,YAAc,MACrB,IAAK,gBAAkB,EAAK,WAAa,KAE3C,GAAK,KAAK,iBAAmB,KAC7B,GAAK,KAAK,QACH,GAGT,EAAgB,UAAU,QAAU,SAAS,EAAM,GACjD,GAAI,GAAO,EAAG,EAAK,EAAG,EAStB,GARA,GAAU,GAAQ,GAClB,EAAI,KAAK,MAAM,GACf,GAAK,aAAe,EAAK,OAAO,KAChC,AAAI,EAAK,OAAS,EAAK,MACrB,GAAK,YAAc,EAAK,MAAQ,MAAQ,EAAK,MAAQ,IAC5C,EAAK,OACd,IAAK,YAAc,EAAK,MAAQ,KAE9B,EAAK,SAAS,OAAS,GAIzB,IAHA,GAAK,KACL,GAAK,KAAK,QACV,EAAM,EAAK,SACN,EAAI,EAAG,EAAM,EAAI,OAAQ,EAAI,EAAK,IACrC,EAAQ,EAAI,GACZ,GAAM,WACJ,OAAQ,QACD,CAAE,aAAiB,IACtB,MAAO,MAAK,WAAW,EAAO,EAAQ,OACnC,CAAE,aAAiB,IACtB,MAAO,MAAK,WAAW,EAAO,EAAQ,OACnC,CAAE,aAAiB,IACtB,MAAO,MAAK,UAAU,EAAO,EAAQ,OAClC,CAAE,aAAiB,IACtB,MAAO,MAAK,YAAY,EAAO,EAAQ,OACpC,CAAE,aAAiB,IACtB,MAAO,MAAK,MAAM,EAAO,EAAQ,OAC9B,CAAE,aAAiB,IACtB,MAAO,MAAK,QAAQ,EAAO,EAAQ,OAChC,CAAE,aAAiB,IACtB,MAAO,MAAK,sBAAsB,EAAO,EAAQ,WAEjD,KAAM,IAAI,OAAM,0BAA4B,EAAM,YAAY,QAEjE,KAAK,MAEV,GAAK,IAEP,UAAK,KAAK,iBAAmB,IAC7B,GAAK,KAAK,QACH,GAGT,EAAgB,UAAU,QAAU,SAAS,EAAM,GACjD,GAAI,GAAK,EAAO,EAAG,EAAG,EAAK,EAAM,EAAM,EAAG,EAAK,EAAM,EAAM,EAAO,EAClE,GAAU,GAAQ,GAClB,EAAsB,GACtB,AAAI,KAAK,cACP,MAAK,QAAU,GACf,KAAK,OAAS,IAEd,MAAK,QAAU,KAAK,eACpB,KAAK,OAAS,KAAK,eAErB,EAAQ,KAAK,MAAM,GACnB,EAAI,GACJ,GAAK,EAAQ,IAAM,EAAK,KACxB,EAAM,EAAK,WACX,IAAK,IAAQ,GACX,AAAI,CAAC,EAAQ,KAAK,EAAK,IACvB,GAAM,EAAI,GACV,GAAK,KAAK,UAAU,IAEtB,GAAI,EAAK,SAAS,SAAW,GAAK,EAAK,SAAS,MAAM,SAAS,IAC7D,MAAO,IAAE,QAAU,KAEnB,AAAI,KAAK,WACP,GAAK,MAAQ,EAAK,KAAO,IAAM,KAAK,QAEpC,GAAK,KAAK,iBAAmB,KAAO,KAAK,gBAElC,KAAK,QAAU,EAAK,SAAS,SAAW,GAAM,EAAK,SAAS,GAAG,OAAS,KACjF,GAAK,IACL,GAAK,EAAK,SAAS,GAAG,MACtB,GAAK,KAAO,EAAK,KAAO,IAAM,KAAK,aAEnC,GAAI,KAAK,qBAEP,IADA,EAAO,EAAK,SACP,EAAI,EAAG,EAAM,EAAK,OAAQ,EAAI,EAAK,IAEtC,GADA,EAAQ,EAAK,GACT,EAAM,OAAS,MACjB,KAAK,gBACL,EAAsB,GACtB,OAWN,IAPI,KAAK,eACP,MAAK,QAAU,GACf,KAAK,OAAS,GACd,EAAQ,KAAK,MAAM,IAErB,GAAK,IAAM,KAAK,QAChB,EAAO,EAAK,SACP,EAAI,EAAG,EAAO,EAAK,OAAQ,EAAI,EAAM,IACxC,EAAQ,EAAK,GACb,GAAM,WACJ,OAAQ,QACD,CAAE,aAAiB,IACtB,MAAO,MAAK,MAAM,EAAO,EAAQ,OAC9B,CAAE,aAAiB,IACtB,MAAO,MAAK,QAAQ,EAAO,EAAQ,OAChC,CAAE,aAAiB,IACtB,MAAO,MAAK,QAAQ,EAAO,EAAQ,OAChC,CAAE,aAAiB,IACtB,MAAO,MAAK,IAAI,EAAO,EAAQ,OAC5B,CAAE,aAAiB,IACtB,MAAO,MAAK,KAAK,EAAO,EAAQ,OAC7B,CAAE,aAAiB,IACtB,MAAO,MAAK,sBAAsB,EAAO,EAAQ,WAEjD,KAAM,IAAI,OAAM,0BAA4B,EAAM,YAAY,QAEjE,KAAK,MAEV,AAAI,GACF,KAAK,gBAEF,KAAK,eACR,MAAK,QAAU,KAAK,eACpB,KAAK,OAAS,KAAK,eAErB,GAAK,EAAQ,KAAO,EAAK,KAAO,IAAM,KAAK,QAE7C,MAAO,IAGT,EAAgB,UAAU,sBAAwB,SAAS,EAAM,GAC/D,GAAI,GACJ,SAAI,KAAK,MAAM,GAAS,KAAO,EAAK,OAChC,EAAK,OACP,IAAK,IAAM,EAAK,OAElB,GAAK,KAAK,iBAAmB,KAAO,KAAK,QAClC,GAGT,EAAgB,UAAU,IAAM,SAAS,EAAM,GAC7C,MAAO,MAAK,MAAM,GAAS,EAAK,MAAQ,KAAK,SAG/C,EAAgB,UAAU,KAAO,SAAS,EAAM,GAC9C,MAAO,MAAK,MAAM,GAAS,EAAK,MAAQ,KAAK,SAG/C,EAAgB,UAAU,WAAa,SAAS,EAAM,GACpD,GAAI,GACJ,SAAI,KAAK,MAAM,GAAS,aAAe,EAAK,YAAc,IAAM,EAAK,cAAgB,IAAM,EAAK,cAC5F,EAAK,mBAAqB,YAC5B,IAAK,IAAM,EAAK,kBAEd,EAAK,cACP,IAAK,KAAO,EAAK,aAAe,KAElC,GAAK,KAAK,iBAAmB,IAAM,KAAK,QACjC,GAGT,EAAgB,UAAU,WAAa,SAAS,EAAM,GACpD,MAAO,MAAK,MAAM,GAAS,aAAe,EAAK,KAAO,IAAM,EAAK,MAAQ,KAAK,iBAAmB,IAAM,KAAK,SAG9G,EAAgB,UAAU,UAAY,SAAS,EAAM,GACnD,GAAI,GACJ,SAAI,KAAK,MAAM,GAAS,WACpB,EAAK,IACP,IAAK,MAEP,GAAK,IAAM,EAAK,KAChB,AAAI,EAAK,MACP,GAAK,KAAO,EAAK,MAAQ,IAEzB,CAAI,EAAK,OAAS,EAAK,MACrB,GAAK,YAAc,EAAK,MAAQ,MAAQ,EAAK,MAAQ,IAC5C,EAAK,OACd,IAAK,YAAc,EAAK,MAAQ,KAE9B,EAAK,OACP,IAAK,UAAY,EAAK,QAG1B,GAAK,KAAK,iBAAmB,IAAM,KAAK,QACjC,GAGT,EAAgB,UAAU,YAAc,SAAS,EAAM,GACrD,GAAI,GACJ,SAAI,KAAK,MAAM,GAAS,cAAgB,EAAK,KAC7C,AAAI,EAAK,OAAS,EAAK,MACrB,GAAK,YAAc,EAAK,MAAQ,MAAQ,EAAK,MAAQ,IAChD,AAAI,EAAK,MACd,GAAK,YAAc,EAAK,MAAQ,IACvB,EAAK,OACd,IAAK,YAAc,EAAK,MAAQ,KAElC,GAAK,KAAK,iBAAmB,IAAM,KAAK,QACjC,GAGT,EAAgB,UAAU,SAAW,SAAS,EAAM,GAClD,GAAI,GAAK,EAAM,EAAG,EAElB,GADA,GAAU,GAAQ,GACd,YAAgB,IAClB,EAAI,KAAK,MAAM,GAAS,IAAM,EAAK,KACnC,EAAM,EAAK,WACX,IAAK,IAAQ,GACX,AAAI,CAAC,EAAQ,KAAK,EAAK,IACvB,GAAM,EAAI,GACV,GAAK,KAAK,UAAU,IAEtB,UAAM,GAAK,SAAW,IAAM,MAAQ,KAAK,QAClC,MAEP,UAAI,KAAK,MAAM,GAAS,aAAe,EAAK,aAC5C,AAAI,EAAK,OAAS,EAAK,MACrB,GAAK,YAAc,EAAK,MAAQ,MAAQ,EAAK,MAAQ,IAC5C,EAAK,OACd,IAAK,YAAc,EAAK,MAAQ,KAElC,GAAM,GAAK,SAAW,KAAO,KAAO,KAAK,QAClC,GAIX,EAAgB,UAAU,UAAY,SAAS,EAAM,GAEnD,OADA,GAAU,GAAQ,GACV,QACD,CAAE,aAAgB,IACrB,MAAO,MAAK,MAAM,GAAS,KAAO,EAAK,KAAO,IAAM,KAAK,YACtD,CAAE,aAAgB,IACrB,MAAO,MAAK,MAAM,GAAS,KAAO,KAAK,UAItC,GAEN,KAEF,KAAK,MC7UR,mBACA,AAAC,YACC,GAAI,GAAa,EAAS,EAAiB,EAAgB,EACzD,EAAS,SAAS,EAAO,GAAU,OAAS,KAAO,GAAU,AAAI,EAAQ,KAAK,EAAQ,IAAM,GAAM,GAAO,EAAO,IAAQ,aAAkB,KAAK,YAAc,EAAS,SAAK,UAAY,EAAO,UAAW,EAAM,UAAY,GAAI,GAAQ,EAAM,UAAY,EAAO,UAAkB,GAClR,EAAU,GAAG,eAEf,EAAgB,AAAQ,KAAa,cAErC,EAAkB,KAElB,EAAyB,KAEzB,EAA0B,KAE1B,GAAO,QAAU,EAAe,SAAS,GACvC,EAAO,EAAa,GAEpB,WAAqB,GACnB,EAAY,UAAU,YAAY,KAAK,KAAM,MAC7C,GAAY,GAAU,IACjB,EAAQ,QACX,GAAQ,OAAS,GAAI,IAEvB,KAAK,QAAU,EACf,KAAK,UAAY,GAAI,GAAe,GACpC,KAAK,WAAa,GAGpB,SAAY,UAAU,IAAM,SAAS,GACnC,GAAI,GACJ,MAAK,GAEM,EAAc,IACvB,GAAgB,EAChB,EAAS,KAAK,QAAQ,OAAO,IAAI,IAHjC,EAAS,KAAK,QAAQ,OAKjB,EAAO,SAAS,OAGzB,EAAY,UAAU,SAAW,SAAS,GACxC,MAAO,MAAK,QAAQ,OAAO,IAAI,GAAS,SAAS,OAG5C,GAEN,KAEF,KAAK,MC/CR,mBACA,AAAC,YACC,GAAI,GAAc,EAAU,EAAY,EAAe,EAAe,EAAc,EAAgB,EAAgB,EAAY,EAAe,EAAY,EAA0B,EAAQ,EAAiB,EAAgB,EAAS,EAAY,EAAU,EAAe,EAC1Q,EAAU,GAAG,eAEf,EAAc,KAAc,EAAW,EAAI,SAAU,EAAa,EAAI,WAAY,EAAgB,EAAI,cAEtG,EAAqB,KAErB,EAAmB,KAEnB,EAAqB,KAErB,EAAiB,KAEjB,EAAkB,KAElB,EAAmC,KAEnC,EAAyB,KAEzB,EAAqB,KAErB,EAAwB,KAExB,EAAuB,KAEvB,EAAwB,KAExB,EAAyB,KAEzB,EAAuB,KAEvB,EAAyB,KAEzB,EAA0B,KAE1B,GAAO,QAAU,EAAiB,WAChC,WAAuB,EAAS,EAAQ,GACtC,GAAI,GACJ,GAAY,GAAU,IACtB,AAAK,EAAQ,OAEF,EAAc,EAAQ,SAC/B,GAAgB,EAAQ,OACxB,EAAQ,OAAS,GAAI,GAAgB,IAHrC,EAAQ,OAAS,GAAI,GAAgB,GAKvC,KAAK,QAAU,EACf,KAAK,OAAS,EAAQ,OACtB,KAAK,UAAY,GAAI,GAAe,GACpC,KAAK,eAAiB,GAAU,aAChC,KAAK,cAAgB,GAAS,aAC9B,KAAK,YAAc,KACnB,KAAK,aAAe,GACpB,KAAK,SAAW,GAChB,KAAK,gBAAkB,GACvB,KAAK,kBAAoB,GACzB,KAAK,KAAO,KAGd,SAAc,UAAU,KAAO,SAAS,EAAM,EAAY,GACxD,GAAI,GACJ,GAAI,GAAQ,KACV,KAAM,IAAI,OAAM,qBAElB,GAAI,KAAK,MAAQ,KAAK,eAAiB,GACrC,KAAM,IAAI,OAAM,wCAElB,YAAK,cACL,EAAO,EAAK,UACR,GAAc,MAChB,GAAa,IAEf,EAAa,EAAW,UACnB,EAAS,IACZ,GAAO,CAAC,EAAY,GAAO,EAAO,EAAK,GAAI,EAAa,EAAK,IAE/D,KAAK,YAAc,GAAI,GAAW,KAAM,EAAM,GAC9C,KAAK,YAAY,SAAW,GAC5B,KAAK,eACL,KAAK,SAAS,KAAK,cAAgB,KAAK,YACpC,GAAQ,MACV,KAAK,KAAK,GAEL,MAGT,EAAc,UAAU,QAAU,SAAS,EAAM,EAAY,GAC3D,MAAI,MAAK,aAAe,KAAK,sBAAuB,GAC3C,KAAK,WAAW,MAAM,KAAM,WAE5B,KAAK,KAAK,EAAM,EAAY,IAIvC,EAAc,UAAU,UAAY,SAAS,EAAM,GACjD,GAAI,GAAS,EACb,GAAI,CAAC,KAAK,aAAe,KAAK,YAAY,SACxC,KAAM,IAAI,OAAM,2EAKlB,GAHI,GAAQ,MACV,GAAO,EAAK,WAEV,EAAS,GACX,IAAK,IAAW,GACd,AAAI,CAAC,EAAQ,KAAK,EAAM,IACxB,GAAW,EAAK,GAChB,KAAK,UAAU,EAAS,QAG1B,AAAI,GAAW,IACb,GAAQ,EAAM,SAEZ,EAAC,KAAK,QAAQ,oBAAuB,GAAS,OAChD,MAAK,YAAY,WAAW,GAAQ,GAAI,GAAa,KAAM,EAAM,IAGrE,MAAO,OAGT,EAAc,UAAU,KAAO,SAAS,GACtC,GAAI,GACJ,YAAK,cACL,EAAO,GAAI,GAAQ,KAAM,GACzB,KAAK,OAAO,KAAK,OAAO,KAAK,EAAM,KAAK,aAAe,IAChD,MAGT,EAAc,UAAU,MAAQ,SAAS,GACvC,GAAI,GACJ,YAAK,cACL,EAAO,GAAI,GAAS,KAAM,GAC1B,KAAK,OAAO,KAAK,OAAO,MAAM,EAAM,KAAK,aAAe,IACjD,MAGT,EAAc,UAAU,QAAU,SAAS,GACzC,GAAI,GACJ,YAAK,cACL,EAAO,GAAI,GAAW,KAAM,GAC5B,KAAK,OAAO,KAAK,OAAO,QAAQ,EAAM,KAAK,aAAe,IACnD,MAGT,EAAc,UAAU,IAAM,SAAS,GACrC,GAAI,GACJ,YAAK,cACL,EAAO,GAAI,GAAO,KAAM,GACxB,KAAK,OAAO,KAAK,OAAO,IAAI,EAAM,KAAK,aAAe,IAC/C,MAGT,EAAc,UAAU,YAAc,SAAS,EAAQ,GACrD,GAAI,GAAG,EAAW,EAAU,EAAK,EAQjC,GAPA,KAAK,cACD,GAAU,MACZ,GAAS,EAAO,WAEd,GAAS,MACX,GAAQ,EAAM,WAEZ,MAAM,QAAQ,GAChB,IAAK,EAAI,EAAG,EAAM,EAAO,OAAQ,EAAI,EAAK,IACxC,EAAY,EAAO,GACnB,KAAK,YAAY,WAEV,EAAS,GAClB,IAAK,IAAa,GAChB,AAAI,CAAC,EAAQ,KAAK,EAAQ,IAC1B,GAAW,EAAO,GAClB,KAAK,YAAY,EAAW,QAG9B,AAAI,GAAW,IACb,GAAQ,EAAM,SAEhB,EAAO,GAAI,GAAyB,KAAM,EAAQ,GAClD,KAAK,OAAO,KAAK,OAAO,sBAAsB,EAAM,KAAK,aAAe,IAE1E,MAAO,OAGT,EAAc,UAAU,YAAc,SAAS,EAAS,EAAU,GAChE,GAAI,GAEJ,GADA,KAAK,cACD,KAAK,gBACP,KAAM,IAAI,OAAM,wCAElB,SAAO,GAAI,GAAe,KAAM,EAAS,EAAU,GACnD,KAAK,OAAO,KAAK,OAAO,YAAY,EAAM,KAAK,aAAe,IACvD,MAGT,EAAc,UAAU,QAAU,SAAS,EAAM,EAAO,GAEtD,GADA,KAAK,cACD,GAAQ,KACV,KAAM,IAAI,OAAM,0BAElB,GAAI,KAAK,KACP,KAAM,IAAI,OAAM,wCAElB,YAAK,YAAc,GAAI,GAAW,KAAM,EAAO,GAC/C,KAAK,YAAY,aAAe,EAChC,KAAK,YAAY,SAAW,GAC5B,KAAK,eACL,KAAK,SAAS,KAAK,cAAgB,KAAK,YACjC,MAGT,EAAc,UAAU,WAAa,SAAS,EAAM,GAClD,GAAI,GACJ,YAAK,cACL,EAAO,GAAI,GAAc,KAAM,EAAM,GACrC,KAAK,OAAO,KAAK,OAAO,WAAW,EAAM,KAAK,aAAe,IACtD,MAGT,EAAc,UAAU,QAAU,SAAS,EAAa,EAAe,EAAe,EAAkB,GACtG,GAAI,GACJ,YAAK,cACL,EAAO,GAAI,GAAc,KAAM,EAAa,EAAe,EAAe,EAAkB,GAC5F,KAAK,OAAO,KAAK,OAAO,WAAW,EAAM,KAAK,aAAe,IACtD,MAGT,EAAc,UAAU,OAAS,SAAS,EAAM,GAC9C,GAAI,GACJ,YAAK,cACL,EAAO,GAAI,GAAa,KAAM,GAAO,EAAM,GAC3C,KAAK,OAAO,KAAK,OAAO,UAAU,EAAM,KAAK,aAAe,IACrD,MAGT,EAAc,UAAU,QAAU,SAAS,EAAM,GAC/C,GAAI,GACJ,YAAK,cACL,EAAO,GAAI,GAAa,KAAM,GAAM,EAAM,GAC1C,KAAK,OAAO,KAAK,OAAO,UAAU,EAAM,KAAK,aAAe,IACrD,MAGT,EAAc,UAAU,SAAW,SAAS,EAAM,GAChD,GAAI,GACJ,YAAK,cACL,EAAO,GAAI,GAAe,KAAM,EAAM,GACtC,KAAK,OAAO,KAAK,OAAO,YAAY,EAAM,KAAK,aAAe,IACvD,MAGT,EAAc,UAAU,GAAK,WAC3B,GAAI,KAAK,aAAe,EACtB,KAAM,IAAI,OAAM,mCAElB,MAAI,MAAK,YACP,CAAI,KAAK,YAAY,SACnB,KAAK,UAAU,KAAK,aAEpB,KAAK,SAAS,KAAK,aAErB,KAAK,YAAc,MAEnB,KAAK,UAAU,KAAK,SAAS,KAAK,eAEpC,MAAO,MAAK,SAAS,KAAK,cAC1B,KAAK,eACE,MAGT,EAAc,UAAU,IAAM,WAC5B,KAAO,KAAK,cAAgB,GAC1B,KAAK,KAEP,MAAO,MAAK,SAGd,EAAc,UAAU,YAAc,WACpC,GAAI,KAAK,YACP,YAAK,YAAY,SAAW,GACrB,KAAK,SAAS,KAAK,cAI9B,EAAc,UAAU,SAAW,SAAS,GAC1C,GAAI,CAAC,EAAK,OACR,MAAI,CAAC,KAAK,MAAQ,KAAK,eAAiB,GAAK,YAAgB,IAC3D,MAAK,KAAO,GAEd,KAAK,OAAO,KAAK,OAAO,SAAS,EAAM,KAAK,eACrC,EAAK,OAAS,IAIzB,EAAc,UAAU,UAAY,SAAS,GAC3C,GAAI,CAAC,EAAK,SACR,YAAK,OAAO,KAAK,OAAO,UAAU,EAAM,KAAK,eACtC,EAAK,SAAW,IAI3B,EAAc,UAAU,OAAS,SAAS,GACxC,YAAK,gBAAkB,GAChB,KAAK,eAAe,IAG7B,EAAc,UAAU,MAAQ,WAC9B,YAAK,kBAAoB,GAClB,KAAK,iBAGd,EAAc,UAAU,IAAM,WAC5B,MAAO,MAAK,QAAQ,MAAM,KAAM,YAGlC,EAAc,UAAU,IAAM,SAAS,EAAM,EAAY,GACvD,MAAO,MAAK,KAAK,EAAM,EAAY,IAGrC,EAAc,UAAU,IAAM,SAAS,GACrC,MAAO,MAAK,KAAK,IAGnB,EAAc,UAAU,IAAM,SAAS,GACrC,MAAO,MAAK,MAAM,IAGpB,EAAc,UAAU,IAAM,SAAS,GACrC,MAAO,MAAK,QAAQ,IAGtB,EAAc,UAAU,IAAM,SAAS,EAAQ,GAC7C,MAAO,MAAK,YAAY,EAAQ,IAGlC,EAAc,UAAU,IAAM,SAAS,EAAS,EAAU,GACxD,MAAO,MAAK,YAAY,EAAS,EAAU,IAG7C,EAAc,UAAU,IAAM,SAAS,EAAM,EAAO,GAClD,MAAO,MAAK,QAAQ,EAAM,EAAO,IAGnC,EAAc,UAAU,EAAI,SAAS,EAAM,EAAY,GACrD,MAAO,MAAK,QAAQ,EAAM,EAAY,IAGxC,EAAc,UAAU,EAAI,SAAS,EAAM,EAAY,GACrD,MAAO,MAAK,KAAK,EAAM,EAAY,IAGrC,EAAc,UAAU,EAAI,SAAS,GACnC,MAAO,MAAK,KAAK,IAGnB,EAAc,UAAU,EAAI,SAAS,GACnC,MAAO,MAAK,MAAM,IAGpB,EAAc,UAAU,EAAI,SAAS,GACnC,MAAO,MAAK,QAAQ,IAGtB,EAAc,UAAU,EAAI,SAAS,GACnC,MAAO,MAAK,IAAI,IAGlB,EAAc,UAAU,EAAI,SAAS,EAAQ,GAC3C,MAAO,MAAK,YAAY,EAAQ,IAGlC,EAAc,UAAU,IAAM,WAC5B,MAAI,MAAK,aAAe,KAAK,sBAAuB,GAC3C,KAAK,QAAQ,MAAM,KAAM,WAEzB,KAAK,UAAU,MAAM,KAAM,YAItC,EAAc,UAAU,EAAI,WAC1B,MAAI,MAAK,aAAe,KAAK,sBAAuB,GAC3C,KAAK,QAAQ,MAAM,KAAM,WAEzB,KAAK,UAAU,MAAM,KAAM,YAItC,EAAc,UAAU,IAAM,SAAS,EAAM,GAC3C,MAAO,MAAK,OAAO,EAAM,IAG3B,EAAc,UAAU,KAAO,SAAS,EAAM,GAC5C,MAAO,MAAK,QAAQ,EAAM,IAG5B,EAAc,UAAU,IAAM,SAAS,EAAM,GAC3C,MAAO,MAAK,SAAS,EAAM,IAGtB,OAIR,KAAK,MCjZR,mBACA,AAAC,YACC,GAAI,GAAU,EAAY,EAAe,EAAe,EAAc,EAAgB,EAAgB,EAAY,EAAY,EAA0B,EAAQ,EAAiB,EAAS,EACxL,EAAS,SAAS,EAAO,GAAU,OAAS,KAAO,GAAU,AAAI,EAAQ,KAAK,EAAQ,IAAM,GAAM,GAAO,EAAO,IAAQ,aAAkB,KAAK,YAAc,EAAS,SAAK,UAAY,EAAO,UAAW,EAAM,UAAY,GAAI,GAAQ,EAAM,UAAY,EAAO,UAAkB,GAClR,EAAU,GAAG,eAEf,EAAyB,KAEzB,EAAqB,KAErB,EAAmB,KAEnB,EAAqB,KAErB,EAAqB,KAErB,EAAiB,KAEjB,EAAkB,KAElB,EAAmC,KAEnC,EAAwB,KAExB,EAAwB,KAExB,EAAuB,KAEvB,EAAyB,KAEzB,EAAwB,KAExB,GAAO,QAAU,EAAmB,SAAS,GAC3C,EAAO,EAAiB,GAExB,WAAyB,EAAQ,GAC/B,EAAgB,UAAU,YAAY,KAAK,KAAM,GACjD,KAAK,OAAS,EAGhB,SAAgB,UAAU,SAAW,SAAS,GAC5C,GAAI,GAAO,EAAG,EAAG,EAAK,EAAM,EAAK,EAAM,EAEvC,IADA,EAAM,EAAI,SACL,EAAI,EAAG,EAAM,EAAI,OAAQ,EAAI,EAAK,IACrC,EAAQ,EAAI,GACZ,EAAM,eAAiB,GAKzB,IAHA,EAAI,SAAS,EAAI,SAAS,OAAS,GAAG,eAAiB,GACvD,EAAO,EAAI,SACX,EAAU,GACL,EAAI,EAAG,EAAO,EAAK,OAAQ,EAAI,EAAM,IAExC,OADA,EAAQ,EAAK,GACL,QACD,CAAE,aAAiB,IACtB,EAAQ,KAAK,KAAK,YAAY,IAC9B,UACG,CAAE,aAAiB,IACtB,EAAQ,KAAK,KAAK,QAAQ,IAC1B,UACG,CAAE,aAAiB,IACtB,EAAQ,KAAK,KAAK,QAAQ,IAC1B,UACG,CAAE,aAAiB,IACtB,EAAQ,KAAK,KAAK,sBAAsB,IACxC,cAEA,EAAQ,KAAK,KAAK,QAAQ,IAGhC,MAAO,IAGT,EAAgB,UAAU,UAAY,SAAS,GAC7C,MAAO,MAAK,OAAO,MAAM,IAAM,EAAI,KAAO,KAAO,EAAI,MAAQ,MAG/D,EAAgB,UAAU,MAAQ,SAAS,EAAM,GAC/C,MAAO,MAAK,OAAO,MAAM,KAAK,MAAM,GAAS,YAAc,EAAK,KAAO,MAAQ,KAAK,QAAQ,KAG9F,EAAgB,UAAU,QAAU,SAAS,EAAM,GACjD,MAAO,MAAK,OAAO,MAAM,KAAK,MAAM,GAAS,QAAU,EAAK,KAAO,OAAS,KAAK,QAAQ,KAG3F,EAAgB,UAAU,YAAc,SAAS,EAAM,GACrD,YAAK,OAAO,MAAM,KAAK,MAAM,IAC7B,KAAK,OAAO,MAAM,kBAAoB,EAAK,QAAU,KACjD,EAAK,UAAY,MACnB,KAAK,OAAO,MAAM,cAAgB,EAAK,SAAW,KAEhD,EAAK,YAAc,MACrB,KAAK,OAAO,MAAM,gBAAkB,EAAK,WAAa,KAExD,KAAK,OAAO,MAAM,KAAK,iBAAmB,MACnC,KAAK,OAAO,MAAM,KAAK,QAAQ,KAGxC,EAAgB,UAAU,QAAU,SAAS,EAAM,GACjD,GAAI,GAAO,EAAG,EAAK,EASnB,GARA,GAAU,GAAQ,GAClB,KAAK,OAAO,MAAM,KAAK,MAAM,IAC7B,KAAK,OAAO,MAAM,aAAe,EAAK,OAAO,MAC7C,AAAI,EAAK,OAAS,EAAK,MACrB,KAAK,OAAO,MAAM,YAAc,EAAK,MAAQ,MAAQ,EAAK,MAAQ,KACzD,EAAK,OACd,KAAK,OAAO,MAAM,YAAc,EAAK,MAAQ,KAE3C,EAAK,SAAS,OAAS,GAIzB,IAHA,KAAK,OAAO,MAAM,MAClB,KAAK,OAAO,MAAM,KAAK,QAAQ,IAC/B,EAAM,EAAK,SACN,EAAI,EAAG,EAAM,EAAI,OAAQ,EAAI,EAAK,IAErC,OADA,EAAQ,EAAI,GACJ,QACD,CAAE,aAAiB,IACtB,KAAK,WAAW,EAAO,EAAQ,GAC/B,UACG,CAAE,aAAiB,IACtB,KAAK,WAAW,EAAO,EAAQ,GAC/B,UACG,CAAE,aAAiB,IACtB,KAAK,UAAU,EAAO,EAAQ,GAC9B,UACG,CAAE,aAAiB,IACtB,KAAK,YAAY,EAAO,EAAQ,GAChC,UACG,CAAE,aAAiB,IACtB,KAAK,MAAM,EAAO,EAAQ,GAC1B,UACG,CAAE,aAAiB,IACtB,KAAK,QAAQ,EAAO,EAAQ,GAC5B,UACG,CAAE,aAAiB,IACtB,KAAK,sBAAsB,EAAO,EAAQ,GAC1C,cAEA,KAAM,IAAI,OAAM,0BAA4B,EAAM,YAAY,MAGpE,KAAK,OAAO,MAAM,KAEpB,YAAK,OAAO,MAAM,KAAK,iBAAmB,KACnC,KAAK,OAAO,MAAM,KAAK,QAAQ,KAGxC,EAAgB,UAAU,QAAU,SAAS,EAAM,GACjD,GAAI,GAAK,EAAO,EAAG,EAAK,EAAM,EAAK,EAAM,EACzC,GAAU,GAAQ,GAClB,EAAQ,KAAK,MAAM,GACnB,KAAK,OAAO,MAAM,EAAQ,IAAM,EAAK,MACrC,EAAM,EAAK,WACX,IAAK,IAAQ,GACX,AAAI,CAAC,EAAQ,KAAK,EAAK,IACvB,GAAM,EAAI,GACV,KAAK,UAAU,IAEjB,GAAI,EAAK,SAAS,SAAW,GAAK,EAAK,SAAS,MAAM,SAAS,GAC7D,MAAO,GAAE,QAAU,KAEnB,AAAI,KAAK,WACP,KAAK,OAAO,MAAM,MAAQ,EAAK,KAAO,KAEtC,KAAK,OAAO,MAAM,KAAK,iBAAmB,cAEnC,KAAK,QAAU,EAAK,SAAS,SAAW,GAAM,EAAK,SAAS,GAAG,OAAS,KACjF,KAAK,OAAO,MAAM,KAClB,KAAK,OAAO,MAAM,EAAK,SAAS,GAAG,OACnC,KAAK,OAAO,MAAM,KAAO,EAAK,KAAO,UAIrC,IAFA,KAAK,OAAO,MAAM,IAAM,KAAK,SAC7B,EAAO,EAAK,SACP,EAAI,EAAG,EAAM,EAAK,OAAQ,EAAI,EAAK,IAEtC,OADA,EAAQ,EAAK,GACL,QACD,CAAE,aAAiB,IACtB,KAAK,MAAM,EAAO,EAAQ,GAC1B,UACG,CAAE,aAAiB,IACtB,KAAK,QAAQ,EAAO,EAAQ,GAC5B,UACG,CAAE,aAAiB,IACtB,KAAK,QAAQ,EAAO,EAAQ,GAC5B,UACG,CAAE,aAAiB,IACtB,KAAK,IAAI,EAAO,EAAQ,GACxB,UACG,CAAE,aAAiB,IACtB,KAAK,KAAK,EAAO,EAAQ,GACzB,UACG,CAAE,aAAiB,IACtB,KAAK,sBAAsB,EAAO,EAAQ,GAC1C,cAEA,KAAM,IAAI,OAAM,0BAA4B,EAAM,YAAY,MAGpE,KAAK,OAAO,MAAM,EAAQ,KAAO,EAAK,KAAO,KAE/C,MAAO,MAAK,OAAO,MAAM,KAAK,QAAQ,KAGxC,EAAgB,UAAU,sBAAwB,SAAS,EAAM,GAC/D,YAAK,OAAO,MAAM,KAAK,MAAM,GAAS,KAAO,EAAK,QAC9C,EAAK,OACP,KAAK,OAAO,MAAM,IAAM,EAAK,OAExB,KAAK,OAAO,MAAM,KAAK,iBAAmB,KAAO,KAAK,QAAQ,KAGvE,EAAgB,UAAU,IAAM,SAAS,EAAM,GAC7C,MAAO,MAAK,OAAO,MAAM,KAAK,MAAM,GAAS,EAAK,MAAQ,KAAK,QAAQ,KAGzE,EAAgB,UAAU,KAAO,SAAS,EAAM,GAC9C,MAAO,MAAK,OAAO,MAAM,KAAK,MAAM,GAAS,EAAK,MAAQ,KAAK,QAAQ,KAGzE,EAAgB,UAAU,WAAa,SAAS,EAAM,GACpD,YAAK,OAAO,MAAM,KAAK,MAAM,GAAS,aAAe,EAAK,YAAc,IAAM,EAAK,cAAgB,IAAM,EAAK,eAC1G,EAAK,mBAAqB,YAC5B,KAAK,OAAO,MAAM,IAAM,EAAK,kBAE3B,EAAK,cACP,KAAK,OAAO,MAAM,KAAO,EAAK,aAAe,KAExC,KAAK,OAAO,MAAM,KAAK,iBAAmB,IAAM,KAAK,QAAQ,KAGtE,EAAgB,UAAU,WAAa,SAAS,EAAM,GACpD,YAAK,OAAO,MAAM,KAAK,MAAM,GAAS,aAAe,EAAK,KAAO,IAAM,EAAK,OACrE,KAAK,OAAO,MAAM,KAAK,iBAAmB,IAAM,KAAK,QAAQ,KAGtE,EAAgB,UAAU,UAAY,SAAS,EAAM,GACnD,YAAK,OAAO,MAAM,KAAK,MAAM,GAAS,YAClC,EAAK,IACP,KAAK,OAAO,MAAM,MAEpB,KAAK,OAAO,MAAM,IAAM,EAAK,MAC7B,AAAI,EAAK,MACP,KAAK,OAAO,MAAM,KAAO,EAAK,MAAQ,KAEtC,CAAI,EAAK,OAAS,EAAK,MACrB,KAAK,OAAO,MAAM,YAAc,EAAK,MAAQ,MAAQ,EAAK,MAAQ,KACzD,EAAK,OACd,KAAK,OAAO,MAAM,YAAc,EAAK,MAAQ,KAE3C,EAAK,OACP,KAAK,OAAO,MAAM,UAAY,EAAK,QAGhC,KAAK,OAAO,MAAM,KAAK,iBAAmB,IAAM,KAAK,QAAQ,KAGtE,EAAgB,UAAU,YAAc,SAAS,EAAM,GACrD,YAAK,OAAO,MAAM,KAAK,MAAM,GAAS,cAAgB,EAAK,MAC3D,AAAI,EAAK,OAAS,EAAK,MACrB,KAAK,OAAO,MAAM,YAAc,EAAK,MAAQ,MAAQ,EAAK,MAAQ,KAC7D,AAAI,EAAK,MACd,KAAK,OAAO,MAAM,YAAc,EAAK,MAAQ,KACpC,EAAK,OACd,KAAK,OAAO,MAAM,YAAc,EAAK,MAAQ,KAExC,KAAK,OAAO,MAAM,KAAK,iBAAmB,IAAM,KAAK,QAAQ,KAGtE,EAAgB,UAAU,QAAU,SAAS,GAC3C,MAAK,GAAK,eAGD,GAFA,KAAK,SAMT,GAEN,KAEF,KAAK,MCtRR,mBACA,AAAC,YACC,GAAI,GAAa,EAAe,EAAiB,EAAiB,EAAQ,EAAY,EAEtF,EAAc,KAAc,EAAS,EAAI,OAAQ,EAAa,EAAI,WAElE,EAAsB,KAEtB,EAAwB,KAExB,EAA0B,KAE1B,EAA0B,KAE1B,GAAO,QAAQ,OAAS,SAAS,EAAM,EAAQ,EAAS,GACtD,GAAI,GAAK,EACT,GAAI,GAAQ,KACV,KAAM,IAAI,OAAM,6BAElB,SAAU,EAAO,GAAI,EAAQ,EAAS,GACtC,EAAM,GAAI,GAAY,GACtB,EAAO,EAAI,QAAQ,GACd,EAAQ,UACX,GAAI,YAAY,GACX,GAAQ,OAAS,MAAU,EAAQ,OAAS,OAC/C,EAAI,QAAQ,IAGT,GAGT,GAAO,QAAQ,MAAQ,SAAS,EAAS,EAAQ,GAC/C,GAAI,GAKJ,MAJI,GAAW,IACb,GAAO,CAAC,EAAS,GAAS,EAAS,EAAK,GAAI,EAAQ,EAAK,GACzD,EAAU,IAER,EACK,GAAI,GAAc,EAAS,EAAQ,GAEnC,GAAI,GAAY,IAI3B,GAAO,QAAQ,aAAe,SAAS,GACrC,MAAO,IAAI,GAAgB,IAG7B,GAAO,QAAQ,aAAe,SAAS,EAAQ,GAC7C,MAAO,IAAI,GAAgB,EAAQ,MAGpC,KAAK,MCpDR,cAIA,GAAI,IAAiB,KACjB,GAAqB,KAMzB,GAAQ,MAAQ,GAUhB,YAAuB,GACrB,WAAa,GACX,MAAO,GAAI,GAAK,IAAM,EAAI,EAE5B,MAAO,GAAE,iBAAiB,IACtB,EAAI,EAAE,cAAc,GAAG,IACvB,EAAI,EAAE,cAAc,IACpB,EAAI,EAAE,eAAe,IACrB,EAAI,EAAE,iBAAiB,IACvB,EAAI,EAAE,iBAAiB,IAY7B,GAAI,IAAW,OAAO,UAAU,SAChC,YAAe,GACb,GAAI,GAAI,GAAS,KAAK,GAAK,MAAM,mBACjC,MAAO,IAAI,EAAE,GAYf,YAAgB,EAAK,GACnB,GAAI,GAAS,CACX,QAAS,MACT,SAAU,SAGR,EAAS,CACX,MAAO,8BACP,MAAO,kDAGL,EAAM,GAAW,OAAO,SAE5B,SAAI,IAAI,EAAO,QAAS,EAAO,SAAU,EAAO,YAChD,EAAI,IAAI,EAAO,MAAO,EAAO,OAC7B,EAAI,IAAI,UAAW,OAEnB,GAAS,EAAK,GAET,GAAM,GAAO,IAElB,EAAK,OAAS,EAAK,SAAW,GACvB,EAAI,IAAI,GAUjB,YAAkB,EAAM,GACtB,GAAI,GAAU,EAAG,EACb,EAAO,GAAK,GAEhB,GAAI,AAAe,GAAf,YAEG,GAAI,MAAM,QAAQ,GAEvB,IADA,EAAa,EAAW,IAAI,SACvB,EAAI,EAAG,EAAI,EAAK,OAAQ,IAC3B,GAAS,EAAK,GAAI,WAGX,OAAO,SAAS,GACzB,EAAW,IAAI,QAAQ,IAAI,EAAK,SAAS,mBAEhC,AAAY,GAAZ,UACT,EAAa,EAAW,IAAI,QAC5B,IAAK,IAAQ,GACX,AAAI,EAAK,eAAe,IACtB,GAAW,IAAI,OAAO,IAAI,GAC1B,GAAS,EAAK,GAAO,QAIpB,AAAI,AAAY,IAAZ,SAGT,GAAY,EAAO,GAAM,EAAK,UAAY,OAC1C,EAAW,IAAI,GAAU,IAAI,EAAK,aAE7B,AAAI,AAAU,GAAV,OACT,EAAW,IAAI,QAAQ,IAAI,GAAc,GAAI,MAAK,KAE7C,AAAI,AAAa,GAAb,UACT,EAAW,IAAI,EAAO,OAAS,SAE1B,AAAI,AAAY,GAAZ,SACT,EAAW,IAAI,UAAU,IAAI,GAExB,AAAI,AAAiB,GAAjB,cACT,EAAW,IAAI,QAAQ,IAAI,GAAO,cAAc,IAEvC,GAAQ,EAAK,QAAU,AAAiB,GAAK,EAAK,SAA3B,eAEhC,EAAW,IAAI,QAAQ,IAAI,GAAO,cAAc,GAAI,YAAW,EAAK,QAAS,OCrIjF,cAIA,GAAI,IAA0B,KAC9B,OAAO,KAAK,IAAiB,QAAQ,SAAU,GAAK,GAAQ,GAAK,GAAgB,KAMjF,GAAI,IAA2B,KAC/B,OAAO,KAAK,IAAkB,QAAQ,SAAU,GAAK,GAAQ,GAAK,GAAiB,OCZnF,sBAAM,IAAuB,KACvB,GAAwB,KACxB,GAAgB,KAChB,GAAa,cAEnB,YAAe,EAAiB,GAC9B,GAAM,GAAY,EAAgB,GAC9B,EACJ,IACE,GAAI,IAAc,IAAM,IAAc,IACpC,EAAU,GAAM,MAAM,EAAgB,oBAC7B,IAAc,GACtB,CAAC,GAAW,GAAa,YAAY,OACjC,MAAI,IAAS,KACZ,GAAI,OAAM,mCAAmC,MAE7C,GAAI,OAAM,8DAEX,GACP,KAAM,IAAI,OAAM,GAElB,MAAO,GAGT,YAAsB,GACpB,GAAM,GAAW,GAAG,aAAa,GACjC,MAAI,GAAS,SAAW,EACf,GAEF,GAAM,EAAU,GAGzB,YAAkB,EAAO,GACvB,GAAG,SAAS,EAAO,CAAC,EAAK,KACvB,GAAI,EACF,MAAO,GAAS,GAElB,GAAI,GACJ,IACE,EAAU,GAAM,EAAU,SACnB,GACP,MAAO,GAAS,GAGlB,MAAO,GAAS,KAAM,KAI1B,YAAuB,EAAO,EAAU,GACtC,GAAM,GAAO,GAAM,MAAM,GACzB,MAAO,IAAG,cAAc,EAAO,EAAM,GAGvC,YAAmB,EAAO,EAAU,EAAS,GAC3C,AAAI,UAAU,SAAW,GAAK,MAAO,IAAY,WAC/C,GAAG,UAAU,EAAO,GAAM,MAAM,GAAW,GAE3C,GAAG,UAAU,EAAO,GAAM,MAAM,GAAW,EAAS,GAIxD,YAA6B,EAAO,EAAU,GAC5C,MAAO,IAAG,cAAc,EAAO,GAAc,GAAW,GAG1D,YAAyB,EAAO,EAAU,EAAS,GACjD,AAAI,UAAU,SAAW,GAAK,MAAO,IAAY,WAC/C,GAAG,UAAU,EAAO,GAAc,GAAW,GAE7C,GAAG,UAAU,EAAO,GAAc,GAAW,EAAS,GAI1D,YAAmB,GACjB,MAAO,IAAM,MAAM,GAGrB,GAAO,QAAU,CACf,iBACA,gBACA,SACA,SACA,YACA,gBACA,aACA,mBACA,uBACA,aACA,oBCxFF,gCAEA,GAAO,QAAU,CAChB,UAAa,CAAC,IAAK,IAAK,KACxB,aAAgB,CAAC,IAAK,IAAK,KAC3B,KAAQ,CAAC,EAAG,IAAK,KACjB,WAAc,CAAC,IAAK,IAAK,KACzB,MAAS,CAAC,IAAK,IAAK,KACpB,MAAS,CAAC,IAAK,IAAK,KACpB,OAAU,CAAC,IAAK,IAAK,KACrB,MAAS,CAAC,EAAG,EAAG,GAChB,eAAkB,CAAC,IAAK,IAAK,KAC7B,KAAQ,CAAC,EAAG,EAAG,KACf,WAAc,CAAC,IAAK,GAAI,KACxB,MAAS,CAAC,IAAK,GAAI,IACnB,UAAa,CAAC,IAAK,IAAK,KACxB,UAAa,CAAC,GAAI,IAAK,KACvB,WAAc,CAAC,IAAK,IAAK,GACzB,UAAa,CAAC,IAAK,IAAK,IACxB,MAAS,CAAC,IAAK,IAAK,IACpB,eAAkB,CAAC,IAAK,IAAK,KAC7B,SAAY,CAAC,IAAK,IAAK,KACvB,QAAW,CAAC,IAAK,GAAI,IACrB,KAAQ,CAAC,EAAG,IAAK,KACjB,SAAY,CAAC,EAAG,EAAG,KACnB,SAAY,CAAC,EAAG,IAAK,KACrB,cAAiB,CAAC,IAAK,IAAK,IAC5B,SAAY,CAAC,IAAK,IAAK,KACvB,UAAa,CAAC,EAAG,IAAK,GACtB,SAAY,CAAC,IAAK,IAAK,KACvB,UAAa,CAAC,IAAK,IAAK,KACxB,YAAe,CAAC,IAAK,EAAG,KACxB,eAAkB,CAAC,GAAI,IAAK,IAC5B,WAAc,CAAC,IAAK,IAAK,GACzB,WAAc,CAAC,IAAK,GAAI,KACxB,QAAW,CAAC,IAAK,EAAG,GACpB,WAAc,CAAC,IAAK,IAAK,KACzB,aAAgB,CAAC,IAAK,IAAK,KAC3B,cAAiB,CAAC,GAAI,GAAI,KAC1B,cAAiB,CAAC,GAAI,GAAI,IAC1B,cAAiB,CAAC,GAAI,GAAI,IAC1B,cAAiB,CAAC,EAAG,IAAK,KAC1B,WAAc,CAAC,IAAK,EAAG,KACvB,SAAY,CAAC,IAAK,GAAI,KACtB,YAAe,CAAC,EAAG,IAAK,KACxB,QAAW,CAAC,IAAK,IAAK,KACtB,QAAW,CAAC,IAAK,IAAK,KACtB,WAAc,CAAC,GAAI,IAAK,KACxB,UAAa,CAAC,IAAK,GAAI,IACvB,YAAe,CAAC,IAAK,IAAK,KAC1B,YAAe,CAAC,GAAI,IAAK,IACzB,QAAW,CAAC,IAAK,EAAG,KACpB,UAAa,CAAC,IAAK,IAAK,KACxB,WAAc,CAAC,IAAK,IAAK,KACzB,KAAQ,CAAC,IAAK,IAAK,GACnB,UAAa,CAAC,IAAK,IAAK,IACxB,KAAQ,CAAC,IAAK,IAAK,KACnB,MAAS,CAAC,EAAG,IAAK,GAClB,YAAe,CAAC,IAAK,IAAK,IAC1B,KAAQ,CAAC,IAAK,IAAK,KACnB,SAAY,CAAC,IAAK,IAAK,KACvB,QAAW,CAAC,IAAK,IAAK,KACtB,UAAa,CAAC,IAAK,GAAI,IACvB,OAAU,CAAC,GAAI,EAAG,KAClB,MAAS,CAAC,IAAK,IAAK,KACpB,MAAS,CAAC,IAAK,IAAK,KACpB,SAAY,CAAC,IAAK,IAAK,KACvB,cAAiB,CAAC,IAAK,IAAK,KAC5B,UAAa,CAAC,IAAK,IAAK,GACxB,aAAgB,CAAC,IAAK,IAAK,KAC3B,UAAa,CAAC,IAAK,IAAK,KACxB,WAAc,CAAC,IAAK,IAAK,KACzB,UAAa,CAAC,IAAK,IAAK,KACxB,qBAAwB,CAAC,IAAK,IAAK,KACnC,UAAa,CAAC,IAAK,IAAK,KACxB,WAAc,CAAC,IAAK,IAAK,KACzB,UAAa,CAAC,IAAK,IAAK,KACxB,UAAa,CAAC,IAAK,IAAK,KACxB,YAAe,CAAC,IAAK,IAAK,KAC1B,cAAiB,CAAC,GAAI,IAAK,KAC3B,aAAgB,CAAC,IAAK,IAAK,KAC3B,eAAkB,CAAC,IAAK,IAAK,KAC7B,eAAkB,CAAC,IAAK,IAAK,KAC7B,eAAkB,CAAC,IAAK,IAAK,KAC7B,YAAe,CAAC,IAAK,IAAK,KAC1B,KAAQ,CAAC,EAAG,IAAK,GACjB,UAAa,CAAC,GAAI,IAAK,IACvB,MAAS,CAAC,IAAK,IAAK,KACpB,QAAW,CAAC,IAAK,EAAG,KACpB,OAAU,CAAC,IAAK,EAAG,GACnB,iBAAoB,CAAC,IAAK,IAAK,KAC/B,WAAc,CAAC,EAAG,EAAG,KACrB,aAAgB,CAAC,IAAK,GAAI,KAC1B,aAAgB,CAAC,IAAK,IAAK,KAC3B,eAAkB,CAAC,GAAI,IAAK,KAC5B,gBAAmB,CAAC,IAAK,IAAK,KAC9B,kBAAqB,CAAC,EAAG,IAAK,KAC9B,gBAAmB,CAAC,GAAI,IAAK,KAC7B,gBAAmB,CAAC,IAAK,GAAI,KAC7B,aAAgB,CAAC,GAAI,GAAI,KACzB,UAAa,CAAC,IAAK,IAAK,KACxB,UAAa,CAAC,IAAK,IAAK,KACxB,SAAY,CAAC,IAAK,IAAK,KACvB,YAAe,CAAC,IAAK,IAAK,KAC1B,KAAQ,CAAC,EAAG,EAAG,KACf,QAAW,CAAC,IAAK,IAAK,KACtB,MAAS,CAAC,IAAK,IAAK,GACpB,UAAa,CAAC,IAAK,IAAK,IACxB,OAAU,CAAC,IAAK,IAAK,GACrB,UAAa,CAAC,IAAK,GAAI,GACvB,OAAU,CAAC,IAAK,IAAK,KACrB,cAAiB,CAAC,IAAK,IAAK,KAC5B,UAAa,CAAC,IAAK,IAAK,KACxB,cAAiB,CAAC,IAAK,IAAK,KAC5B,cAAiB,CAAC,IAAK,IAAK,KAC5B,WAAc,CAAC,IAAK,IAAK,KACzB,UAAa,CAAC,IAAK,IAAK,KACxB,KAAQ,CAAC,IAAK,IAAK,IACnB,KAAQ,CAAC,IAAK,IAAK,KACnB,KAAQ,CAAC,IAAK,IAAK,KACnB,WAAc,CAAC,IAAK,IAAK,KACzB,OAAU,CAAC,IAAK,EAAG,KACnB,cAAiB,CAAC,IAAK,GAAI,KAC3B,IAAO,CAAC,IAAK,EAAG,GAChB,UAAa,CAAC,IAAK,IAAK,KACxB,UAAa,CAAC,GAAI,IAAK,KACvB,YAAe,CAAC,IAAK,GAAI,IACzB,OAAU,CAAC,IAAK,IAAK,KACrB,WAAc,CAAC,IAAK,IAAK,IACzB,SAAY,CAAC,GAAI,IAAK,IACtB,SAAY,CAAC,IAAK,IAAK,KACvB,OAAU,CAAC,IAAK,GAAI,IACpB,OAAU,CAAC,IAAK,IAAK,KACrB,QAAW,CAAC,IAAK,IAAK,KACtB,UAAa,CAAC,IAAK,GAAI,KACvB,UAAa,CAAC,IAAK,IAAK,KACxB,UAAa,CAAC,IAAK,IAAK,KACxB,KAAQ,CAAC,IAAK,IAAK,KACnB,YAAe,CAAC,EAAG,IAAK,KACxB,UAAa,CAAC,GAAI,IAAK,KACvB,IAAO,CAAC,IAAK,IAAK,KAClB,KAAQ,CAAC,EAAG,IAAK,KACjB,QAAW,CAAC,IAAK,IAAK,KACtB,OAAU,CAAC,IAAK,GAAI,IACpB,UAAa,CAAC,GAAI,IAAK,KACvB,OAAU,CAAC,IAAK,IAAK,KACrB,MAAS,CAAC,IAAK,IAAK,KACpB,MAAS,CAAC,IAAK,IAAK,KACpB,WAAc,CAAC,IAAK,IAAK,KACzB,OAAU,CAAC,IAAK,IAAK,GACrB,YAAe,CAAC,IAAK,IAAK,OCtJ3B,mBAEA,GAAM,IAAsB,KAMtB,GAAkB,GACxB,OAAW,KAAO,QAAO,KAAK,IAC7B,GAAgB,GAAY,IAAQ,EAGrC,GAAM,GAAU,CACf,IAAK,CAAC,SAAU,EAAG,OAAQ,OAC3B,IAAK,CAAC,SAAU,EAAG,OAAQ,OAC3B,IAAK,CAAC,SAAU,EAAG,OAAQ,OAC3B,IAAK,CAAC,SAAU,EAAG,OAAQ,OAC3B,KAAM,CAAC,SAAU,EAAG,OAAQ,QAC5B,IAAK,CAAC,SAAU,EAAG,OAAQ,OAC3B,IAAK,CAAC,SAAU,EAAG,OAAQ,OAC3B,IAAK,CAAC,SAAU,EAAG,OAAQ,OAC3B,IAAK,CAAC,SAAU,EAAG,OAAQ,CAAC,QAC5B,QAAS,CAAC,SAAU,EAAG,OAAQ,CAAC,YAChC,OAAQ,CAAC,SAAU,EAAG,OAAQ,CAAC,WAC/B,QAAS,CAAC,SAAU,EAAG,OAAQ,CAAC,YAChC,IAAK,CAAC,SAAU,EAAG,OAAQ,CAAC,IAAK,IAAK,MACtC,MAAO,CAAC,SAAU,EAAG,OAAQ,CAAC,MAAO,MAAO,QAC5C,KAAM,CAAC,SAAU,EAAG,OAAQ,CAAC,UAG9B,GAAO,QAAU,EAGjB,OAAW,KAAS,QAAO,KAAK,IAC/B,GAAI,CAAE,aAAc,GAAQ,IAC3B,KAAM,IAAI,OAAM,8BAAgC,GAGjD,GAAI,CAAE,WAAY,GAAQ,IACzB,KAAM,IAAI,OAAM,oCAAsC,GAGvD,GAAI,EAAQ,GAAO,OAAO,SAAW,EAAQ,GAAO,SACnD,KAAM,IAAI,OAAM,sCAAwC,GAGzD,GAAM,CAAC,WAAU,UAAU,EAAQ,GACnC,MAAO,GAAQ,GAAO,SACtB,MAAO,GAAQ,GAAO,OACtB,OAAO,eAAe,EAAQ,GAAQ,WAAY,CAAC,MAAO,IAC1D,OAAO,eAAe,EAAQ,GAAQ,SAAU,CAAC,MAAO,IAGzD,EAAQ,IAAI,IAAM,SAAU,GAC3B,GAAM,GAAI,EAAI,GAAK,IACb,EAAI,EAAI,GAAK,IACb,EAAI,EAAI,GAAK,IACb,EAAM,KAAK,IAAI,EAAG,EAAG,GACrB,EAAM,KAAK,IAAI,EAAG,EAAG,GACrB,EAAQ,EAAM,EAChB,EACA,EAEJ,AAAI,IAAQ,EACX,EAAI,EACE,AAAI,IAAM,EAChB,EAAK,GAAI,GAAK,EACR,AAAI,IAAM,EAChB,EAAI,EAAK,GAAI,GAAK,EACR,IAAM,GAChB,GAAI,EAAK,GAAI,GAAK,GAGnB,EAAI,KAAK,IAAI,EAAI,GAAI,KAEjB,EAAI,GACP,IAAK,KAGN,GAAM,GAAK,GAAM,GAAO,EAExB,MAAI,KAAQ,EACX,EAAI,EACE,AAAI,GAAK,GACf,EAAI,EAAS,GAAM,GAEnB,EAAI,EAAS,GAAI,EAAM,GAGjB,CAAC,EAAG,EAAI,IAAK,EAAI,MAGzB,EAAQ,IAAI,IAAM,SAAU,GAC3B,GAAI,GACA,EACA,EACA,EACA,EAEE,EAAI,EAAI,GAAK,IACb,EAAI,EAAI,GAAK,IACb,EAAI,EAAI,GAAK,IACb,EAAI,KAAK,IAAI,EAAG,EAAG,GACnB,EAAO,EAAI,KAAK,IAAI,EAAG,EAAG,GAC1B,EAAQ,SAAU,GACvB,MAAQ,GAAI,GAAK,EAAI,EAAO,EAAI,GAGjC,MAAI,KAAS,EACZ,GAAI,EACJ,EAAI,GAEJ,GAAI,EAAO,EACX,EAAO,EAAM,GACb,EAAO,EAAM,GACb,EAAO,EAAM,GAEb,AAAI,IAAM,EACT,EAAI,EAAO,EACL,AAAI,IAAM,EAChB,EAAK,EAAI,EAAK,EAAO,EACX,IAAM,GAChB,GAAK,EAAI,EAAK,EAAO,GAGtB,AAAI,EAAI,EACP,GAAK,EACK,EAAI,GACd,IAAK,IAIA,CACN,EAAI,IACJ,EAAI,IACJ,EAAI,MAIN,EAAQ,IAAI,IAAM,SAAU,GAC3B,GAAM,GAAI,EAAI,GACR,EAAI,EAAI,GACV,EAAI,EAAI,GACN,EAAI,EAAQ,IAAI,IAAI,GAAK,GACzB,EAAI,EAAI,IAAM,KAAK,IAAI,EAAG,KAAK,IAAI,EAAG,IAE5C,SAAI,EAAI,EAAI,IAAM,KAAK,IAAI,EAAG,KAAK,IAAI,EAAG,IAEnC,CAAC,EAAG,EAAI,IAAK,EAAI,MAGzB,EAAQ,IAAI,KAAO,SAAU,GAC5B,GAAM,GAAI,EAAI,GAAK,IACb,EAAI,EAAI,GAAK,IACb,EAAI,EAAI,GAAK,IAEb,EAAI,KAAK,IAAI,EAAI,EAAG,EAAI,EAAG,EAAI,GAC/B,EAAK,GAAI,EAAI,GAAM,GAAI,IAAM,EAC7B,EAAK,GAAI,EAAI,GAAM,GAAI,IAAM,EAC7B,EAAK,GAAI,EAAI,GAAM,GAAI,IAAM,EAEnC,MAAO,CAAC,EAAI,IAAK,EAAI,IAAK,EAAI,IAAK,EAAI,MAGxC,YAA6B,EAAG,GAI/B,MACG,GAAE,GAAK,EAAE,KAAO,EAChB,GAAE,GAAK,EAAE,KAAO,EAChB,GAAE,GAAK,EAAE,KAAO,EAIpB,EAAQ,IAAI,QAAU,SAAU,GAC/B,GAAM,GAAW,GAAgB,GACjC,GAAI,EACH,MAAO,GAGR,GAAI,GAAyB,SACzB,EAEJ,OAAW,KAAW,QAAO,KAAK,KACjC,GAAM,GAAQ,GAAY,GAGpB,EAAW,GAAoB,EAAK,GAG1C,AAAI,EAAW,GACd,GAAyB,EACzB,EAAwB,GAI1B,MAAO,IAGR,EAAQ,QAAQ,IAAM,SAAU,GAC/B,MAAO,IAAY,IAGpB,EAAQ,IAAI,IAAM,SAAU,GAC3B,GAAI,GAAI,EAAI,GAAK,IACb,EAAI,EAAI,GAAK,IACb,EAAI,EAAI,GAAK,IAGjB,EAAI,EAAI,OAAa,IAAI,MAAS,QAAU,IAAQ,EAAI,MACxD,EAAI,EAAI,OAAa,IAAI,MAAS,QAAU,IAAQ,EAAI,MACxD,EAAI,EAAI,OAAa,IAAI,MAAS,QAAU,IAAQ,EAAI,MAExD,GAAM,GAAK,EAAI,MAAW,EAAI,MAAW,EAAI,MACvC,EAAK,EAAI,MAAW,EAAI,MAAW,EAAI,MACvC,EAAK,EAAI,MAAW,EAAI,MAAW,EAAI,MAE7C,MAAO,CAAC,EAAI,IAAK,EAAI,IAAK,EAAI,MAG/B,EAAQ,IAAI,IAAM,SAAU,GAC3B,GAAM,GAAM,EAAQ,IAAI,IAAI,GACxB,EAAI,EAAI,GACR,EAAI,EAAI,GACR,EAAI,EAAI,GAEZ,GAAK,OACL,GAAK,IACL,GAAK,QAEL,EAAI,EAAI,QAAY,GAAM,GAAI,GAAO,MAAQ,EAAM,GAAK,IACxD,EAAI,EAAI,QAAY,GAAM,GAAI,GAAO,MAAQ,EAAM,GAAK,IACxD,EAAI,EAAI,QAAY,GAAM,GAAI,GAAO,MAAQ,EAAM,GAAK,IAExD,GAAM,GAAK,IAAM,EAAK,GAChB,EAAI,IAAO,GAAI,GACf,EAAI,IAAO,GAAI,GAErB,MAAO,CAAC,EAAG,EAAG,IAGf,EAAQ,IAAI,IAAM,SAAU,GAC3B,GAAM,GAAI,EAAI,GAAK,IACb,EAAI,EAAI,GAAK,IACb,EAAI,EAAI,GAAK,IACf,EACA,EACA,EAEJ,GAAI,IAAM,EACT,SAAM,EAAI,IACH,CAAC,EAAK,EAAK,GAGnB,AAAI,EAAI,GACP,EAAK,EAAK,GAAI,GAEd,EAAK,EAAI,EAAI,EAAI,EAGlB,GAAM,GAAK,EAAI,EAAI,EAEb,EAAM,CAAC,EAAG,EAAG,GACnB,OAAS,GAAI,EAAG,EAAI,EAAG,IACtB,EAAK,EAAI,EAAI,EAAI,CAAE,GAAI,GACnB,EAAK,GACR,IAGG,EAAK,GACR,IAGD,AAAI,EAAI,EAAK,EACZ,EAAM,EAAM,GAAK,GAAM,EAAI,EACrB,AAAI,EAAI,EAAK,EACnB,EAAM,EACA,AAAI,EAAI,EAAK,EACnB,EAAM,EAAM,GAAK,GAAO,GAAI,EAAI,GAAM,EAEtC,EAAM,EAGP,EAAI,GAAK,EAAM,IAGhB,MAAO,IAGR,EAAQ,IAAI,IAAM,SAAU,GAC3B,GAAM,GAAI,EAAI,GACV,EAAI,EAAI,GAAK,IACb,EAAI,EAAI,GAAK,IACb,EAAO,EACL,EAAO,KAAK,IAAI,EAAG,KAEzB,GAAK,EACL,GAAM,GAAK,EAAK,EAAI,EAAI,EACxB,GAAQ,GAAQ,EAAI,EAAO,EAAI,EAC/B,GAAM,GAAK,GAAI,GAAK,EACd,EAAK,IAAM,EAAK,EAAI,EAAS,GAAO,GAAS,EAAI,EAAM,GAAI,GAEjE,MAAO,CAAC,EAAG,EAAK,IAAK,EAAI,MAG1B,EAAQ,IAAI,IAAM,SAAU,GAC3B,GAAM,GAAI,EAAI,GAAK,GACb,EAAI,EAAI,GAAK,IACf,EAAI,EAAI,GAAK,IACX,EAAK,KAAK,MAAM,GAAK,EAErB,EAAI,EAAI,KAAK,MAAM,GACnB,EAAI,IAAM,EAAK,GAAI,GACnB,EAAI,IAAM,EAAK,GAAK,EAAI,GACxB,EAAI,IAAM,EAAK,GAAK,EAAK,GAAI,IAGnC,OAFA,GAAK,IAEG,OACF,GACJ,MAAO,CAAC,EAAG,EAAG,OACV,GACJ,MAAO,CAAC,EAAG,EAAG,OACV,GACJ,MAAO,CAAC,EAAG,EAAG,OACV,GACJ,MAAO,CAAC,EAAG,EAAG,OACV,GACJ,MAAO,CAAC,EAAG,EAAG,OACV,GACJ,MAAO,CAAC,EAAG,EAAG,KAIjB,EAAQ,IAAI,IAAM,SAAU,GAC3B,GAAM,GAAI,EAAI,GACR,EAAI,EAAI,GAAK,IACb,EAAI,EAAI,GAAK,IACb,EAAO,KAAK,IAAI,EAAG,KACrB,EACA,EAEJ,EAAK,GAAI,GAAK,EACd,GAAM,GAAQ,GAAI,GAAK,EACvB,SAAK,EAAI,EACT,GAAO,GAAQ,EAAK,EAAO,EAAI,EAC/B,EAAK,GAAM,EACX,GAAK,EAEE,CAAC,EAAG,EAAK,IAAK,EAAI,MAI1B,EAAQ,IAAI,IAAM,SAAU,GAC3B,GAAM,GAAI,EAAI,GAAK,IACf,EAAK,EAAI,GAAK,IACd,EAAK,EAAI,GAAK,IACZ,EAAQ,EAAK,EACf,EAGJ,AAAI,EAAQ,GACX,IAAM,EACN,GAAM,GAGP,GAAM,GAAI,KAAK,MAAM,EAAI,GACnB,EAAI,EAAI,EACd,EAAI,EAAI,EAAI,EAEP,GAAI,IAAU,GAClB,GAAI,EAAI,GAGT,GAAM,GAAI,EAAK,EAAK,GAAI,GAEpB,EACA,EACA,EAEJ,OAAQ,eAEF,OACA,GAAG,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,UAC3B,GAAG,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,UAC3B,GAAG,EAAI,EAAI,EAAI,EAAI,EAAI,EAAG,UAC1B,GAAG,EAAI,EAAI,EAAI,EAAI,EAAI,EAAG,UAC1B,GAAG,EAAI,EAAI,EAAI,EAAI,EAAI,EAAG,UAC1B,GAAG,EAAI,EAAI,EAAI,EAAI,EAAI,EAAG,MAIhC,MAAO,CAAC,EAAI,IAAK,EAAI,IAAK,EAAI,MAG/B,EAAQ,KAAK,IAAM,SAAU,GAC5B,GAAM,GAAI,EAAK,GAAK,IACd,EAAI,EAAK,GAAK,IACd,EAAI,EAAK,GAAK,IACd,EAAI,EAAK,GAAK,IAEd,EAAI,EAAI,KAAK,IAAI,EAAG,EAAK,GAAI,GAAK,GAClC,EAAI,EAAI,KAAK,IAAI,EAAG,EAAK,GAAI,GAAK,GAClC,EAAI,EAAI,KAAK,IAAI,EAAG,EAAK,GAAI,GAAK,GAExC,MAAO,CAAC,EAAI,IAAK,EAAI,IAAK,EAAI,MAG/B,EAAQ,IAAI,IAAM,SAAU,GAC3B,GAAM,GAAI,EAAI,GAAK,IACb,EAAI,EAAI,GAAK,IACb,EAAI,EAAI,GAAK,IACf,EACA,EACA,EAEJ,SAAK,EAAI,OAAW,EAAI,QAAY,EAAI,OACxC,EAAK,EAAI,OAAY,EAAI,OAAW,EAAI,MACxC,EAAK,EAAI,MAAW,EAAI,MAAY,EAAI,MAGxC,EAAI,EAAI,SACH,MAAS,GAAM,GAAM,KAAS,KAChC,EAAI,MAEP,EAAI,EAAI,SACH,MAAS,GAAM,GAAM,KAAS,KAChC,EAAI,MAEP,EAAI,EAAI,SACH,MAAS,GAAM,GAAM,KAAS,KAChC,EAAI,MAEP,EAAI,KAAK,IAAI,KAAK,IAAI,EAAG,GAAI,GAC7B,EAAI,KAAK,IAAI,KAAK,IAAI,EAAG,GAAI,GAC7B,EAAI,KAAK,IAAI,KAAK,IAAI,EAAG,GAAI,GAEtB,CAAC,EAAI,IAAK,EAAI,IAAK,EAAI,MAG/B,EAAQ,IAAI,IAAM,SAAU,GAC3B,GAAI,GAAI,EAAI,GACR,EAAI,EAAI,GACR,EAAI,EAAI,GAEZ,GAAK,OACL,GAAK,IACL,GAAK,QAEL,EAAI,EAAI,QAAY,GAAM,GAAI,GAAO,MAAQ,EAAM,GAAK,IACxD,EAAI,EAAI,QAAY,GAAM,GAAI,GAAO,MAAQ,EAAM,GAAK,IACxD,EAAI,EAAI,QAAY,GAAM,GAAI,GAAO,MAAQ,EAAM,GAAK,IAExD,GAAM,GAAK,IAAM,EAAK,GAChB,EAAI,IAAO,GAAI,GACf,EAAI,IAAO,GAAI,GAErB,MAAO,CAAC,EAAG,EAAG,IAGf,EAAQ,IAAI,IAAM,SAAU,GAC3B,GAAM,GAAI,EAAI,GACR,EAAI,EAAI,GACR,EAAI,EAAI,GACV,EACA,EACA,EAEJ,EAAK,GAAI,IAAM,IACf,EAAI,EAAI,IAAM,EACd,EAAI,EAAI,EAAI,IAEZ,GAAM,GAAK,GAAK,EACV,EAAK,GAAK,EACV,EAAK,GAAK,EAChB,SAAI,EAAK,QAAW,EAAM,GAAI,GAAK,KAAO,MAC1C,EAAI,EAAK,QAAW,EAAM,GAAI,GAAK,KAAO,MAC1C,EAAI,EAAK,QAAW,EAAM,GAAI,GAAK,KAAO,MAE1C,GAAK,OACL,GAAK,IACL,GAAK,QAEE,CAAC,EAAG,EAAG,IAGf,EAAQ,IAAI,IAAM,SAAU,GAC3B,GAAM,GAAI,EAAI,GACR,EAAI,EAAI,GACR,EAAI,EAAI,GACV,EAGJ,EAAI,AADO,KAAK,MAAM,EAAG,GAChB,IAAM,EAAI,KAAK,GAEpB,EAAI,GACP,IAAK,KAGN,GAAM,GAAI,KAAK,KAAK,EAAI,EAAI,EAAI,GAEhC,MAAO,CAAC,EAAG,EAAG,IAGf,EAAQ,IAAI,IAAM,SAAU,GAC3B,GAAM,GAAI,EAAI,GACR,EAAI,EAAI,GAGR,EAAK,AAFD,EAAI,GAEC,IAAM,EAAI,KAAK,GACxB,EAAI,EAAI,KAAK,IAAI,GACjB,EAAI,EAAI,KAAK,IAAI,GAEvB,MAAO,CAAC,EAAG,EAAG,IAGf,EAAQ,IAAI,OAAS,SAAU,EAAM,EAAa,MACjD,GAAM,CAAC,EAAG,EAAG,GAAK,EACd,EAAQ,IAAe,KAAO,EAAQ,IAAI,IAAI,GAAM,GAAK,EAI7D,GAFA,EAAQ,KAAK,MAAM,EAAQ,IAEvB,IAAU,EACb,MAAO,IAGR,GAAI,GAAO,GACN,MAAK,MAAM,EAAI,MAAQ,EACxB,KAAK,MAAM,EAAI,MAAQ,EACxB,KAAK,MAAM,EAAI,MAElB,MAAI,KAAU,GACb,IAAQ,IAGF,GAGR,EAAQ,IAAI,OAAS,SAAU,GAG9B,MAAO,GAAQ,IAAI,OAAO,EAAQ,IAAI,IAAI,GAAO,EAAK,KAGvD,EAAQ,IAAI,QAAU,SAAU,GAC/B,GAAM,GAAI,EAAK,GACT,EAAI,EAAK,GACT,EAAI,EAAK,GAIf,MAAI,KAAM,GAAK,IAAM,EAChB,EAAI,EACA,GAGJ,EAAI,IACA,IAGD,KAAK,MAAQ,GAAI,GAAK,IAAO,IAAM,IAG9B,GACT,GAAK,KAAK,MAAM,EAAI,IAAM,GAC1B,EAAI,KAAK,MAAM,EAAI,IAAM,GAC1B,KAAK,MAAM,EAAI,IAAM,IAKzB,EAAQ,OAAO,IAAM,SAAU,GAC9B,GAAI,GAAQ,EAAO,GAGnB,GAAI,IAAU,GAAK,IAAU,EAC5B,MAAI,GAAO,IACV,IAAS,KAGV,EAAQ,EAAQ,KAAO,IAEhB,CAAC,EAAO,EAAO,GAGvB,GAAM,GAAQ,EAAC,CAAE,GAAO,IAAM,GAAK,GAC7B,EAAM,GAAQ,GAAK,EAAQ,IAC3B,EAAO,IAAS,EAAK,GAAK,EAAQ,IAClC,EAAO,IAAS,EAAK,GAAK,EAAQ,IAExC,MAAO,CAAC,EAAG,EAAG,IAGf,EAAQ,QAAQ,IAAM,SAAU,GAE/B,GAAI,GAAQ,KACX,GAAM,GAAK,GAAO,KAAO,GAAK,EAC9B,MAAO,CAAC,EAAG,EAAG,GAGf,GAAQ,GAER,GAAI,GACE,EAAI,KAAK,MAAM,EAAO,IAAM,EAAI,IAChC,EAAI,KAAK,MAAO,GAAM,EAAO,IAAM,GAAK,EAAI,IAC5C,EAAK,EAAM,EAAK,EAAI,IAE1B,MAAO,CAAC,EAAG,EAAG,IAGf,EAAQ,IAAI,IAAM,SAAU,GAK3B,GAAM,GAAS,AAJG,QAAK,MAAM,EAAK,IAAM,MAAS,IAC5C,OAAK,MAAM,EAAK,IAAM,MAAS,GAChC,MAAK,MAAM,EAAK,IAAM,MAEH,SAAS,IAAI,cACpC,MAAO,SAAS,UAAU,EAAO,QAAU,GAG5C,EAAQ,IAAI,IAAM,SAAU,GAC3B,GAAM,GAAQ,EAAK,SAAS,IAAI,MAAM,4BACtC,GAAI,CAAC,EACJ,MAAO,CAAC,EAAG,EAAG,GAGf,GAAI,GAAc,EAAM,GAExB,AAAI,EAAM,GAAG,SAAW,GACvB,GAAc,EAAY,MAAM,IAAI,IAAI,GAChC,EAAO,GACZ,KAAK,KAGT,GAAM,GAAU,SAAS,EAAa,IAChC,EAAK,GAAW,GAAM,IACtB,EAAK,GAAW,EAAK,IACrB,EAAI,EAAU,IAEpB,MAAO,CAAC,EAAG,EAAG,IAGf,EAAQ,IAAI,IAAM,SAAU,GAC3B,GAAM,GAAI,EAAI,GAAK,IACb,EAAI,EAAI,GAAK,IACb,EAAI,EAAI,GAAK,IACb,EAAM,KAAK,IAAI,KAAK,IAAI,EAAG,GAAI,GAC/B,EAAM,KAAK,IAAI,KAAK,IAAI,EAAG,GAAI,GAC/B,EAAU,EAAM,EAClB,EACA,EAEJ,MAAI,GAAS,EACZ,EAAY,EAAO,GAAI,GAEvB,EAAY,EAGb,AAAI,GAAU,EACb,EAAM,EAEP,AAAI,IAAQ,EACX,EAAQ,GAAI,GAAK,EAAU,EAE5B,AAAI,IAAQ,EACX,EAAM,EAAK,GAAI,GAAK,EAEpB,EAAM,EAAK,GAAI,GAAK,EAGrB,GAAO,EACP,GAAO,EAEA,CAAC,EAAM,IAAK,EAAS,IAAK,EAAY,MAG9C,EAAQ,IAAI,IAAM,SAAU,GAC3B,GAAM,GAAI,EAAI,GAAK,IACb,EAAI,EAAI,GAAK,IAEb,EAAI,EAAI,GAAO,EAAM,EAAI,EAAM,EAAM,EAAK,GAAM,GAElD,EAAI,EACR,MAAI,GAAI,GACP,GAAK,GAAI,GAAM,GAAM,GAAM,IAGrB,CAAC,EAAI,GAAI,EAAI,IAAK,EAAI,MAG9B,EAAQ,IAAI,IAAM,SAAU,GAC3B,GAAM,GAAI,EAAI,GAAK,IACb,EAAI,EAAI,GAAK,IAEb,EAAI,EAAI,EACV,EAAI,EAER,MAAI,GAAI,GACP,GAAK,GAAI,GAAM,GAAI,IAGb,CAAC,EAAI,GAAI,EAAI,IAAK,EAAI,MAG9B,EAAQ,IAAI,IAAM,SAAU,GAC3B,GAAM,GAAI,EAAI,GAAK,IACb,EAAI,EAAI,GAAK,IACb,EAAI,EAAI,GAAK,IAEnB,GAAI,IAAM,EACT,MAAO,CAAC,EAAI,IAAK,EAAI,IAAK,EAAI,KAG/B,GAAM,GAAO,CAAC,EAAG,EAAG,GACd,EAAM,EAAI,EAAK,EACf,EAAI,EAAK,EACT,EAAI,EAAI,EACV,EAAK,EAGT,OAAQ,KAAK,MAAM,QACb,GACJ,EAAK,GAAK,EAAG,EAAK,GAAK,EAAG,EAAK,GAAK,EAAG,UACnC,GACJ,EAAK,GAAK,EAAG,EAAK,GAAK,EAAG,EAAK,GAAK,EAAG,UACnC,GACJ,EAAK,GAAK,EAAG,EAAK,GAAK,EAAG,EAAK,GAAK,EAAG,UACnC,GACJ,EAAK,GAAK,EAAG,EAAK,GAAK,EAAG,EAAK,GAAK,EAAG,UACnC,GACJ,EAAK,GAAK,EAAG,EAAK,GAAK,EAAG,EAAK,GAAK,EAAG,cAEvC,EAAK,GAAK,EAAG,EAAK,GAAK,EAAG,EAAK,GAAK,EAItC,SAAM,GAAM,GAAK,EAEV,CACL,GAAI,EAAK,GAAK,GAAM,IACpB,GAAI,EAAK,GAAK,GAAM,IACpB,GAAI,EAAK,GAAK,GAAM,MAIvB,EAAQ,IAAI,IAAM,SAAU,GAC3B,GAAM,GAAI,EAAI,GAAK,IACb,EAAI,EAAI,GAAK,IAEb,EAAI,EAAI,EAAK,GAAM,GACrB,EAAI,EAER,MAAI,GAAI,GACP,GAAI,EAAI,GAGF,CAAC,EAAI,GAAI,EAAI,IAAK,EAAI,MAG9B,EAAQ,IAAI,IAAM,SAAU,GAC3B,GAAM,GAAI,EAAI,GAAK,IAGb,EAAI,AAFA,EAAI,GAAK,IAEJ,GAAM,GAAK,GAAM,EAC5B,EAAI,EAER,MAAI,GAAI,GAAO,EAAI,GAClB,EAAI,EAAK,GAAI,GAEV,GAAK,IAAO,EAAI,GACnB,GAAI,EAAK,GAAK,GAAI,KAGZ,CAAC,EAAI,GAAI,EAAI,IAAK,EAAI,MAG9B,EAAQ,IAAI,IAAM,SAAU,GAC3B,GAAM,GAAI,EAAI,GAAK,IACb,EAAI,EAAI,GAAK,IACb,EAAI,EAAI,EAAK,GAAM,GACzB,MAAO,CAAC,EAAI,GAAK,GAAI,GAAK,IAAM,GAAI,GAAK,MAG1C,EAAQ,IAAI,IAAM,SAAU,GAC3B,GAAM,GAAI,EAAI,GAAK,IACb,EAAI,EAAI,GAAK,IACb,EAAI,EAAI,EACR,EAAI,EAAI,EACV,EAAI,EAER,MAAI,GAAI,GACP,GAAK,GAAI,GAAM,GAAI,IAGb,CAAC,EAAI,GAAI,EAAI,IAAK,EAAI,MAG9B,EAAQ,MAAM,IAAM,SAAU,GAC7B,MAAO,CAAE,EAAM,GAAK,MAAS,IAAM,EAAM,GAAK,MAAS,IAAM,EAAM,GAAK,MAAS,MAGlF,EAAQ,IAAI,MAAQ,SAAU,GAC7B,MAAO,CAAE,EAAI,GAAK,IAAO,MAAQ,EAAI,GAAK,IAAO,MAAQ,EAAI,GAAK,IAAO,QAG1E,EAAQ,KAAK,IAAM,SAAU,GAC5B,MAAO,CAAC,EAAK,GAAK,IAAM,IAAK,EAAK,GAAK,IAAM,IAAK,EAAK,GAAK,IAAM,MAGnE,EAAQ,KAAK,IAAM,SAAU,GAC5B,MAAO,CAAC,EAAG,EAAG,EAAK,KAGpB,EAAQ,KAAK,IAAM,EAAQ,KAAK,IAEhC,EAAQ,KAAK,IAAM,SAAU,GAC5B,MAAO,CAAC,EAAG,IAAK,EAAK,KAGtB,EAAQ,KAAK,KAAO,SAAU,GAC7B,MAAO,CAAC,EAAG,EAAG,EAAG,EAAK,KAGvB,EAAQ,KAAK,IAAM,SAAU,GAC5B,MAAO,CAAC,EAAK,GAAI,EAAG,IAGrB,EAAQ,KAAK,IAAM,SAAU,GAC5B,GAAM,GAAM,KAAK,MAAM,EAAK,GAAK,IAAM,KAAO,IAGxC,EAAS,AAFE,KAAO,IAAO,IAAO,GAAK,GAEpB,SAAS,IAAI,cACpC,MAAO,SAAS,UAAU,EAAO,QAAU,GAG5C,EAAQ,IAAI,KAAO,SAAU,GAE5B,MAAO,CAAC,AADK,GAAI,GAAK,EAAI,GAAK,EAAI,IAAM,EAC3B,IAAM,QCr0BrB,sBAAM,IAAsB,KAa5B,cACC,GAAM,GAAQ,GAER,EAAS,OAAO,KAAK,IAE3B,OAAS,GAAM,EAAO,OAAQ,EAAI,EAAG,EAAI,EAAK,IAC7C,EAAM,EAAO,IAAM,CAGlB,SAAU,GACV,OAAQ,MAIV,MAAO,GAIR,YAAmB,GAClB,GAAM,GAAQ,KACR,EAAQ,CAAC,GAIf,IAFA,EAAM,GAAW,SAAW,EAErB,EAAM,SACZ,GAAM,GAAU,EAAM,MAChB,EAAY,OAAO,KAAK,GAAY,IAE1C,OAAS,GAAM,EAAU,OAAQ,EAAI,EAAG,EAAI,EAAK,KAChD,GAAM,GAAW,EAAU,GACrB,EAAO,EAAM,GAEnB,AAAI,EAAK,WAAa,IACrB,GAAK,SAAW,EAAM,GAAS,SAAW,EAC1C,EAAK,OAAS,EACd,EAAM,QAAQ,KAKjB,MAAO,GAGR,YAAc,EAAM,GACnB,MAAO,UAAU,GAChB,MAAO,GAAG,EAAK,KAIjB,YAAwB,EAAS,GAChC,GAAM,GAAO,CAAC,EAAM,GAAS,OAAQ,GACjC,EAAK,GAAY,EAAM,GAAS,QAAQ,GAExC,EAAM,EAAM,GAAS,OACzB,KAAO,EAAM,GAAK,QACjB,EAAK,QAAQ,EAAM,GAAK,QACxB,EAAK,GAAK,GAAY,EAAM,GAAK,QAAQ,GAAM,GAC/C,EAAM,EAAM,GAAK,OAGlB,SAAG,WAAa,EACT,EAGR,GAAO,QAAU,SAAU,GAC1B,GAAM,GAAQ,GAAU,GAClB,EAAa,GAEb,EAAS,OAAO,KAAK,GAC3B,OAAS,GAAM,EAAO,OAAQ,EAAI,EAAG,EAAI,EAAK,KAC7C,GAAM,GAAU,EAAO,GAGvB,AAAI,AAFS,EAAM,GAEV,SAAW,MAKpB,GAAW,GAAW,GAAe,EAAS,IAG/C,MAAO,MC9FR,sBAAM,IAAsB,KACtB,GAAgB,KAEhB,GAAU,GAEV,GAAS,OAAO,KAAK,IAE3B,YAAiB,GAChB,GAAM,GAAY,YAAa,GAC9B,GAAM,GAAO,EAAK,GAClB,MAAI,AAAsB,IAAS,KAC3B,EAGJ,GAAK,OAAS,GACjB,GAAO,GAGD,EAAG,KAIX,MAAI,cAAgB,IACnB,GAAU,WAAa,EAAG,YAGpB,EAGR,YAAqB,GACpB,GAAM,GAAY,YAAa,GAC9B,GAAM,GAAO,EAAK,GAElB,GAAI,AAAsB,GAAS,KAClC,MAAO,GAGR,AAAI,EAAK,OAAS,GACjB,GAAO,GAGR,GAAM,GAAS,EAAG,GAKlB,GAAI,MAAO,IAAW,SACrB,OAAS,GAAM,EAAO,OAAQ,EAAI,EAAG,EAAI,EAAK,IAC7C,EAAO,GAAK,KAAK,MAAM,EAAO,IAIhC,MAAO,IAIR,MAAI,cAAgB,IACnB,GAAU,WAAa,EAAG,YAGpB,EAGR,GAAO,QAAQ,IACd,GAAQ,GAAa,GAErB,OAAO,eAAe,GAAQ,GAAY,WAAY,CAAC,MAAO,GAAY,GAAW,WACrF,OAAO,eAAe,GAAQ,GAAY,SAAU,CAAC,MAAO,GAAY,GAAW,SAEnF,GAAM,GAAS,GAAM,GAGrB,AAFoB,OAAO,KAAK,GAEpB,QAAQ,IACnB,GAAM,GAAK,EAAO,GAElB,GAAQ,GAAW,GAAW,GAAY,GAC1C,GAAQ,GAAW,GAAS,IAAM,GAAQ,OAI5C,GAAO,QAAU,KChFjB,gCAEA,GAAM,IAAa,CAAC,EAAI,IAAW,IAAI,IAE/B,KAAU,AADJ,EAAG,GAAG,GACK,KAGnB,GAAc,CAAC,EAAI,IAAW,IAAI,KACvC,GAAM,GAAO,EAAG,GAAG,GACnB,MAAO,KAAU,GAAK,OAAY,MAG7B,GAAc,CAAC,EAAI,IAAW,IAAI,KACvC,GAAM,GAAM,EAAG,GAAG,GAClB,MAAO,KAAU,GAAK,OAAY,EAAI,MAAM,EAAI,MAAM,EAAI,OAGrD,GAAY,GAAK,EACjB,GAAU,CAAC,EAAG,EAAG,IAAM,CAAC,EAAG,EAAG,GAE9B,GAAkB,CAAC,EAAQ,EAAU,KAC1C,OAAO,eAAe,EAAQ,EAAU,CACvC,IAAK,KACJ,GAAM,GAAQ,IAEd,cAAO,eAAe,EAAQ,EAAU,CACvC,QACA,WAAY,GACZ,aAAc,KAGR,GAER,WAAY,GACZ,aAAc,MAKZ,GACE,GAAoB,CAAC,EAAM,EAAa,EAAU,KACvD,AAAI,KAAiB,QACpB,IAAuB,MAGxB,GAAM,GAAS,EAAe,GAAK,EAC7B,EAAS,GAEf,OAAW,CAAC,EAAa,IAAU,QAAO,QAAQ,KACjD,GAAM,GAAO,IAAgB,SAAW,OAAS,EACjD,AAAI,IAAgB,EACnB,EAAO,GAAQ,EAAK,EAAU,GACpB,MAAO,IAAU,UAC3B,GAAO,GAAQ,EAAK,EAAM,GAAc,IAI1C,MAAO,IAGR,cACC,GAAM,GAAQ,GAAI,KACZ,EAAS,CACd,SAAU,CACT,MAAO,CAAC,EAAG,GAEX,KAAM,CAAC,EAAG,IACV,IAAK,CAAC,EAAG,IACT,OAAQ,CAAC,EAAG,IACZ,UAAW,CAAC,EAAG,IACf,QAAS,CAAC,EAAG,IACb,OAAQ,CAAC,EAAG,IACZ,cAAe,CAAC,EAAG,KAEpB,MAAO,CACN,MAAO,CAAC,GAAI,IACZ,IAAK,CAAC,GAAI,IACV,MAAO,CAAC,GAAI,IACZ,OAAQ,CAAC,GAAI,IACb,KAAM,CAAC,GAAI,IACX,QAAS,CAAC,GAAI,IACd,KAAM,CAAC,GAAI,IACX,MAAO,CAAC,GAAI,IAGZ,YAAa,CAAC,GAAI,IAClB,UAAW,CAAC,GAAI,IAChB,YAAa,CAAC,GAAI,IAClB,aAAc,CAAC,GAAI,IACnB,WAAY,CAAC,GAAI,IACjB,cAAe,CAAC,GAAI,IACpB,WAAY,CAAC,GAAI,IACjB,YAAa,CAAC,GAAI,KAEnB,QAAS,CACR,QAAS,CAAC,GAAI,IACd,MAAO,CAAC,GAAI,IACZ,QAAS,CAAC,GAAI,IACd,SAAU,CAAC,GAAI,IACf,OAAQ,CAAC,GAAI,IACb,UAAW,CAAC,GAAI,IAChB,OAAQ,CAAC,GAAI,IACb,QAAS,CAAC,GAAI,IAGd,cAAe,CAAC,IAAK,IACrB,YAAa,CAAC,IAAK,IACnB,cAAe,CAAC,IAAK,IACrB,eAAgB,CAAC,IAAK,IACtB,aAAc,CAAC,IAAK,IACpB,gBAAiB,CAAC,IAAK,IACvB,aAAc,CAAC,IAAK,IACpB,cAAe,CAAC,IAAK,MAKvB,EAAO,MAAM,KAAO,EAAO,MAAM,YACjC,EAAO,QAAQ,OAAS,EAAO,QAAQ,cACvC,EAAO,MAAM,KAAO,EAAO,MAAM,YACjC,EAAO,QAAQ,OAAS,EAAO,QAAQ,cAEvC,OAAW,CAAC,EAAW,IAAU,QAAO,QAAQ,IAC/C,OAAW,CAAC,EAAW,IAAU,QAAO,QAAQ,GAC/C,EAAO,GAAa,CACnB,KAAM,KAAU,EAAM,MACtB,MAAO,KAAU,EAAM,OAGxB,EAAM,GAAa,EAAO,GAE1B,EAAM,IAAI,EAAM,GAAI,EAAM,IAG3B,OAAO,eAAe,EAAQ,EAAW,CACxC,MAAO,EACP,WAAY,KAId,cAAO,eAAe,EAAQ,QAAS,CACtC,MAAO,EACP,WAAY,KAGb,EAAO,MAAM,MAAQ,QACrB,EAAO,QAAQ,MAAQ,QAEvB,GAAgB,EAAO,MAAO,OAAQ,IAAM,GAAkB,GAAY,SAAU,GAAW,KAC/F,GAAgB,EAAO,MAAO,UAAW,IAAM,GAAkB,GAAa,UAAW,GAAW,KACpG,GAAgB,EAAO,MAAO,UAAW,IAAM,GAAkB,GAAa,MAAO,GAAS,KAC9F,GAAgB,EAAO,QAAS,OAAQ,IAAM,GAAkB,GAAY,SAAU,GAAW,KACjG,GAAgB,EAAO,QAAS,UAAW,IAAM,GAAkB,GAAa,UAAW,GAAW,KACtG,GAAgB,EAAO,QAAS,UAAW,IAAM,GAAkB,GAAa,MAAO,GAAS,KAEzF,EAIR,OAAO,eAAe,GAAQ,UAAW,CACxC,WAAY,GACZ,IAAK,OCjKN,gCAEA,GAAO,QAAU,CAAC,EAAM,EAAO,QAAQ,QACtC,GAAM,GAAS,EAAK,WAAW,KAAO,GAAM,EAAK,SAAW,EAAI,IAAM,KAChE,EAAW,EAAK,QAAQ,EAAS,GACjC,EAAqB,EAAK,QAAQ,MACxC,MAAO,KAAa,IAAO,KAAuB,IAAM,EAAW,MCNpE,gCACA,GAAM,IAAa,cACb,GAAc,eACd,GAAkB,KAElB,CAAC,QAAO,QAEV,GACJ,AAAI,GAAQ,aACX,GAAQ,cACR,GAAQ,gBACR,GAAQ,eACR,GAAa,EACH,IAAQ,UAClB,GAAQ,WACR,GAAQ,eACR,GAAQ,kBACR,IAAa,GAGd,AAAI,eAAiB,KACpB,CAAI,GAAI,cAAgB,OACvB,GAAa,EACP,AAAI,GAAI,cAAgB,QAC9B,GAAa,EAEb,GAAa,GAAI,YAAY,SAAW,EAAI,EAAI,KAAK,IAAI,SAAS,GAAI,YAAa,IAAK,IAI1F,YAAwB,GACvB,MAAI,KAAU,EACN,GAGD,CACN,QACA,SAAU,GACV,OAAQ,GAAS,EACjB,OAAQ,GAAS,GAInB,YAAuB,EAAY,GAClC,GAAI,KAAe,EAClB,MAAO,GAGR,GAAI,GAAQ,cACX,GAAQ,eACR,GAAQ,mBACR,MAAO,GAGR,GAAI,GAAQ,aACX,MAAO,GAGR,GAAI,GAAc,CAAC,GAAe,KAAe,OAChD,MAAO,GAGR,GAAM,GAAM,IAAc,EAE1B,GAAI,GAAI,OAAS,OAChB,MAAO,GAGR,GAAI,QAAQ,WAAa,SAGxB,GAAM,GAAY,GAAG,UAAU,MAAM,KACrC,MACC,QAAO,EAAU,KAAO,IACxB,OAAO,EAAU,KAAO,MAEjB,OAAO,EAAU,KAAO,MAAQ,EAAI,EAGrC,EAGR,GAAI,MAAQ,IACX,MAAI,CAAC,SAAU,WAAY,WAAY,YAAa,iBAAkB,aAAa,KAAK,GAAQ,IAAQ,MAAQ,GAAI,UAAY,WACxH,EAGD,EAGR,GAAI,oBAAsB,IACzB,MAAO,gCAAgC,KAAK,GAAI,kBAAoB,EAAI,EAGzE,GAAI,GAAI,YAAc,YACrB,MAAO,GAGR,GAAI,gBAAkB,KACrB,GAAM,GAAU,SAAU,IAAI,sBAAwB,IAAI,MAAM,KAAK,GAAI,IAEzE,OAAQ,GAAI,kBACN,YACJ,MAAO,IAAW,EAAI,EAAI,MACtB,iBACJ,MAAO,IAKV,MAAI,iBAAiB,KAAK,GAAI,MACtB,EAGJ,8DAA8D,KAAK,GAAI,OAIvE,aAAe,IACX,EAGD,EAGR,YAAyB,GACxB,GAAM,GAAQ,GAAc,EAAQ,GAAU,EAAO,OACrD,MAAO,IAAe,GAGvB,GAAO,QAAU,CAChB,cAAe,GACf,OAAQ,GAAe,GAAc,GAAM,GAAI,OAAO,KACtD,OAAQ,GAAe,GAAc,GAAM,GAAI,OAAO,QCrIvD,gCAEA,GAAM,IAAmB,CAAC,EAAQ,EAAW,KAC5C,GAAI,GAAQ,EAAO,QAAQ,GAC3B,GAAI,IAAU,GACb,MAAO,GAGR,GAAM,GAAkB,EAAU,OAC9B,EAAW,EACX,EAAc,GAClB,EACC,IAAe,EAAO,OAAO,EAAU,EAAQ,GAAY,EAAY,EACvE,EAAW,EAAQ,EACnB,EAAQ,EAAO,QAAQ,EAAW,SAC1B,IAAU,IAEnB,UAAe,EAAO,OAAO,GACtB,GAGF,GAAiC,CAAC,EAAQ,EAAQ,EAAS,KAChE,GAAI,GAAW,EACX,EAAc,GAClB,GACC,GAAM,GAAQ,EAAO,EAAQ,KAAO,KACpC,GAAe,EAAO,OAAO,EAAW,GAAQ,EAAQ,EAAI,GAAS,GAAY,EAAU,GAAQ;AAAA,EAAS;AAAA,GAAQ,EACpH,EAAW,EAAQ,EACnB,EAAQ,EAAO,QAAQ;AAAA,EAAM,SACrB,IAAU,IAEnB,UAAe,EAAO,OAAO,GACtB,GAGR,GAAO,QAAU,CAChB,oBACA,qCCrCD,gCACA,GAAM,IAAiB,4JACjB,GAAc,iCACd,GAAe,mCACf,GAAe,6DAEf,GAAU,GAAI,KAAI,CACvB,CAAC,IAAK;AAAA,GACN,CAAC,IAAK,MACN,CAAC,IAAK,KACN,CAAC,IAAK,MACN,CAAC,IAAK,MACN,CAAC,IAAK,MACN,CAAC,IAAK,MACN,CAAC,KAAM,MACP,CAAC,IAAK,KACN,CAAC,IAAK,UAGP,YAAkB,GACjB,GAAM,GAAI,EAAE,KAAO,IACb,EAAU,EAAE,KAAO,IAEzB,MAAK,IAAK,CAAC,GAAW,EAAE,SAAW,GAAO,EAAE,KAAO,KAAO,EAAE,SAAW,EAC/D,OAAO,aAAa,SAAS,EAAE,MAAM,GAAI,KAG7C,GAAK,EACD,OAAO,cAAc,SAAS,EAAE,MAAM,EAAG,IAAK,KAG/C,GAAQ,IAAI,IAAM,EAG1B,YAAwB,EAAM,GAC7B,GAAM,GAAU,GACV,EAAS,EAAW,OAAO,MAAM,YACnC,EAEJ,OAAW,KAAS,IACnB,GAAM,GAAS,OAAO,GACtB,GAAI,CAAC,OAAO,MAAM,GACjB,EAAQ,KAAK,WACF,EAAU,EAAM,MAAM,IACjC,EAAQ,KAAK,EAAQ,GAAG,QAAQ,GAAc,CAAC,EAAG,EAAQ,IAAc,EAAS,GAAS,GAAU,QAEpG,MAAM,IAAI,OAAM,0CAA0C,gBAAoB,OAIhF,MAAO,GAGR,YAAoB,GACnB,GAAY,UAAY,EAExB,GAAM,GAAU,GACZ,EAEJ,KAAQ,GAAU,GAAY,KAAK,MAAY,OAC9C,GAAM,GAAO,EAAQ,GAErB,GAAI,EAAQ,IACX,GAAM,GAAO,GAAe,EAAM,EAAQ,IAC1C,EAAQ,KAAK,CAAC,GAAM,OAAO,QAE3B,GAAQ,KAAK,CAAC,IAIhB,MAAO,GAGR,YAAoB,EAAO,GAC1B,GAAM,GAAU,GAEhB,OAAW,KAAS,GACnB,OAAW,KAAS,GAAM,OACzB,EAAQ,EAAM,IAAM,EAAM,QAAU,KAAO,EAAM,MAAM,GAIzD,GAAI,GAAU,EACd,OAAW,CAAC,EAAW,IAAW,QAAO,QAAQ,GAChD,GAAI,EAAC,MAAM,QAAQ,IAInB,GAAI,CAAE,KAAa,IAClB,KAAM,IAAI,OAAM,wBAAwB,KAGzC,EAAU,EAAO,OAAS,EAAI,EAAQ,GAAW,GAAG,GAAU,EAAQ,GAGvE,MAAO,GAGR,GAAO,QAAU,CAAC,EAAO,KACxB,GAAM,GAAS,GACT,EAAS,GACX,EAAQ,GA0BZ,GAvBA,EAAU,QAAQ,GAAgB,CAAC,EAAG,EAAiB,EAAS,EAAO,EAAO,KAC7E,GAAI,EACH,EAAM,KAAK,GAAS,YACV,GACV,GAAM,GAAS,EAAM,KAAK,IAC1B,EAAQ,GACR,EAAO,KAAK,EAAO,SAAW,EAAI,EAAS,GAAW,EAAO,GAAQ,IACrE,EAAO,KAAK,CAAC,UAAS,OAAQ,GAAW,aAC/B,GACV,GAAI,EAAO,SAAW,EACrB,KAAM,IAAI,OAAM,gDAGjB,EAAO,KAAK,GAAW,EAAO,GAAQ,EAAM,KAAK,MACjD,EAAQ,GACR,EAAO,UAEP,GAAM,KAAK,KAIb,EAAO,KAAK,EAAM,KAAK,KAEnB,EAAO,OAAS,GACnB,GAAM,GAAa,qCAAqC,EAAO,yBAAyB,EAAO,SAAW,EAAI,GAAK,cACnH,KAAM,IAAI,OAAM,GAGjB,MAAO,GAAO,KAAK,OCpIpB,gCACA,GAAM,IAAqB,KACrB,CAAC,OAAQ,GAAa,OAAQ,IAAuB,KACrD,CACL,oBACA,mCACW,KAEN,CAAC,YAAW,MAGZ,GAAe,CACpB,OACA,OACA,UACA,WAGK,GAAS,OAAO,OAAO,MAEvB,GAAe,CAAC,EAAQ,EAAU,MACvC,GAAI,EAAQ,OAAS,CAAE,QAAO,UAAU,EAAQ,QAAU,EAAQ,OAAS,GAAK,EAAQ,OAAS,GAChG,KAAM,IAAI,OAAM,uDAIjB,GAAM,GAAa,GAAc,GAAY,MAAQ,EACrD,EAAO,MAAQ,EAAQ,QAAU,OAAY,EAAa,EAAQ,OA3BnE,SA+BC,YAAY,GAEX,MAAO,IAAa,KAIhB,GAAe,IACpB,GAAM,GAAQ,GACd,UAAa,EAAO,GAEpB,EAAM,SAAW,IAAI,IAAe,GAAS,EAAM,SAAU,GAAG,GAEhE,OAAO,eAAe,EAAO,GAAM,WACnC,OAAO,eAAe,EAAM,SAAU,GAEtC,EAAM,SAAS,YAAc,KAC5B,KAAM,IAAI,OAAM,6EAGjB,EAAM,SAAS,SAAW,GAEnB,EAAM,UAGd,YAAe,GACd,MAAO,IAAa,GAGrB,OAAW,CAAC,EAAW,IAAU,QAAO,QAAQ,IAC/C,GAAO,GAAa,CACnB,MACC,GAAM,GAAU,GAAc,KAAM,GAAa,EAAM,KAAM,EAAM,MAAO,KAAK,SAAU,KAAK,UAC9F,cAAO,eAAe,KAAM,EAAW,CAAC,MAAO,IACxC,IAKV,GAAO,QAAU,CAChB,MACC,GAAM,GAAU,GAAc,KAAM,KAAK,QAAS,IAClD,cAAO,eAAe,KAAM,UAAW,CAAC,MAAO,IACxC,IAIT,GAAM,IAAa,CAAC,MAAO,MAAO,UAAW,MAAO,MAAO,MAAO,OAAQ,WAE1E,OAAW,KAAS,IACnB,GAAO,GAAS,CACf,MACC,GAAM,CAAC,SAAS,KAChB,MAAO,aAAa,GACnB,GAAM,GAAS,GAAa,GAAW,MAAM,GAAa,IAAQ,GAAO,GAAG,GAAa,GAAW,MAAM,MAAO,KAAK,SACtH,MAAO,IAAc,KAAM,EAAQ,KAAK,aAM5C,OAAW,KAAS,KACnB,GAAM,GAAU,KAAO,EAAM,GAAG,cAAgB,EAAM,MAAM,GAC5D,GAAO,GAAW,CACjB,MACC,GAAM,CAAC,SAAS,KAChB,MAAO,aAAa,GACnB,GAAM,GAAS,GAAa,GAAW,QAAQ,GAAa,IAAQ,GAAO,GAAG,GAAa,GAAW,QAAQ,MAAO,KAAK,SAC1H,MAAO,IAAc,KAAM,EAAQ,KAAK,aAM5C,GAAM,IAAQ,OAAO,iBAAiB,OAAU,IAC5C,GACH,MAAO,CACN,WAAY,GACZ,MACC,MAAO,MAAK,WAAW,OAExB,IAAI,GACH,KAAK,WAAW,MAAQ,MAKrB,GAAe,CAAC,EAAM,EAAO,KAClC,GAAI,GACA,EACJ,MAAI,KAAW,OACd,GAAU,EACV,EAAW,GAEX,GAAU,EAAO,QAAU,EAC3B,EAAW,EAAQ,EAAO,UAGpB,CACN,OACA,QACA,UACA,WACA,WAII,GAAgB,CAAC,EAAM,EAAS,KACrC,GAAM,GAAU,IAAI,IACf,GAAQ,EAAW,KAAO,GAAQ,EAAW,GAAG,KAE5C,GAAW,EAAS,GAAS,EAAS,GAAG,IAK1C,GAAW,EAAU,EAAW,SAAW,EAAM,GAAK,EAAW,GAAM,EAAW,KAAK,MAK/F,cAAO,eAAe,EAAS,IAE/B,EAAQ,WAAa,EACrB,EAAQ,QAAU,EAClB,EAAQ,SAAW,EAEZ,GAGF,GAAa,CAAC,EAAM,KACzB,GAAI,EAAK,OAAS,GAAK,CAAC,EACvB,MAAO,GAAK,SAAW,GAAK,EAG7B,GAAI,GAAS,EAAK,QAElB,GAAI,IAAW,OACd,MAAO,GAGR,GAAM,CAAC,UAAS,YAAY,EAC5B,GAAI,EAAO,QAAQ,OAAc,GAChC,KAAO,IAAW,QAIjB,EAAS,GAAiB,EAAQ,EAAO,MAAO,EAAO,MAEvD,EAAS,EAAO,OAOlB,GAAM,GAAU,EAAO,QAAQ;AAAA,GAC/B,MAAI,KAAY,IACf,GAAS,GAA+B,EAAQ,EAAU,EAAS,IAG7D,EAAU,EAAS,GAGvB,GACE,GAAW,CAAC,KAAU,KAC3B,GAAM,CAAC,GAAe,EAEtB,GAAI,CAAC,GAAQ,IAAgB,CAAC,GAAQ,EAAY,KAGjD,MAAO,GAAQ,KAAK,KAGrB,GAAM,GAAa,EAAQ,MAAM,GAC3B,EAAQ,CAAC,EAAY,IAAI,IAE/B,OAAS,GAAI,EAAG,EAAI,EAAY,OAAQ,IACvC,EAAM,KACL,OAAO,EAAW,EAAI,IAAI,QAAQ,UAAW,QAC7C,OAAO,EAAY,IAAI,KAIzB,MAAI,MAAa,QAChB,IAAmB,MAGb,GAAS,EAAO,EAAM,KAAK,MAGnC,OAAO,iBAAiB,GAAM,UAAW,IAEzC,GAAM,IAAQ,KACd,GAAM,cAAgB,GACtB,GAAM,OAAS,GAAM,CAAC,MAAO,GAAc,GAAY,MAAQ,IAC/D,GAAM,OAAO,cAAgB,GAE7B,GAAO,QAAU,KCpOjB,gGAAkB,SAClB,GAAkB,SAClB,GAA0B,6BAC1B,GAAe,kBACf,GAAiB,oBACjB,GAAkB,SAEZ,GAAW,2CAGV,YAAkB,GACvB,eAAQ,IAAI,KAAM,WAAM,KAAK,IACtB,WAAc,SAAS,EAAK,CAAE,IAAK,QAAQ,MAAO,MAAO,YAGlE,kBAA+B,GAC7B,IACE,KAAM,YAAM,cACL,GACP,GAAM,GAAiB,4EACvB,QAAQ,IAAI,iDACZ,GAAS,GAGX,GAAM,GAAc,WAAK,KACvB,uCACA,iBAGF,QAAQ,IAAI,mCACZ,GAAM,GAAkB,KAAM,IAAoB,EAAa,IACzD,EAAkB,WAAK,KAAK,QAAQ,MAAO,wBAC3C,EAAiB,WAAK,KAAK,QAAQ,MAAO,gBAChD,KAAM,YAAG,SAAS,UAAU,EAAiB,EAAiB,QAC9D,QAAQ,IAAI,WAAM,KAAK,IACvB,QAAQ,IAAI,kCACZ,GAAS,8BAA8B,KACvC,QAAQ,IAAI,8CACZ,GAAM,GAAY,WAAK,KAAK,EAAgB,uBACtC,EAAO,WAAM,aAAa,GAChC,EAAK,mBAAwB,qCAC7B,EAAK,iBAAsB,CACzB,CACE,gBAAiB,WACjB,mBAAoB,CAAC,OAAQ,QAAS,MAG1C,EAAK,iBAAsB,GAC3B,WAAM,cAAc,EAAW,GAC/B,QAAQ,IAAI,sBACZ,QAAQ,IAAI,oDACR,WAAG,WAAW,+BAChB,WAAG,OAAO,6BAA8B,CACtC,UAAW,GACX,MAAO,KAIP,WAAG,WAAW,+BAChB,WAAG,OAAO,6BAA8B,CAAE,MAAO,GAAM,UAAW,KAGpE,WAAG,WAAW,EAAgB,8BAE9B,QAAQ,IAAI,WAAM,KAAK,SAAS,OAChC,WAAG,UAAU,IAEb,GAAM,GAAO;AAAA;AAAA;AAAA;AAAA,oBAIK,KAAK,UAAU,QAAQ,IAAI,OAAS;AAAA,gBACxC,KAAK,UAAU;AAAA,cACjB,KAAK,UAAU,QAAQ,IAAI,OAAS;AAAA,cACpC,KAAK,UAAU,QAAQ,IAAI,OAAS;AAAA;AAAA,GAE/C,KAAK,UAAU,KAAM,YAAM;AAAA,EAiB5B,GAdA,QAAQ,IACN;AAAA,EACE,WAAM,KAAK,GACX;AAAA,2BAEJ,QAAQ,IAAI,oBAAoB,WAAM,KAAK,OAC3C,WAAG,cAAc,EAAa,EAAM,QACpC,GAAS,YAAc,GAEvB,QAAQ,IAAI,8BACZ,GAAS,8CAA8C,MAEvD,WAAG,OAAO,GAEN,WAAG,WAAW,oCAChB,QAAQ,IAAI,UAAU,0BACtB,IACE,GACE,yDAAyD,iBAEpD,GACP,QAAQ,KAAK,uDAIjB,QAAQ,IAAI,WAAM,MAAM,yDACxB,QAAQ,IAAI,4DACZ,QAAQ,IAAI,yBACZ,QAAQ,IAAI,MAAQ,WAAM,KAAK,2CAC3B,EAAO,SAAS,OAClB,QAAQ,KACN,sJAKN,kBAA0C,EAAsB,GAC9D,MAAO;AAAA;AAAA;AAAA;AAAA,uBAIc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMrB,UC9HF,gCAIC,YAAY,GACX,KAAK,MAAQ,EAGb,KAAK,KAAO,SARd,SAkBC,cACC,KAAK,QAGN,QAAQ,GACP,GAAM,GAAO,GAAI,IAAK,GAEtB,AAAI,KAAK,MACR,MAAK,MAAM,KAAO,EAClB,KAAK,MAAQ,GAEb,MAAK,MAAQ,EACb,KAAK,MAAQ,GAGd,KAAK,QAGN,UACC,GAAM,GAAU,KAAK,MACrB,GAAI,EAAC,EAIL,YAAK,MAAQ,KAAK,MAAM,KACxB,KAAK,QACE,EAAQ,MAGhB,QACC,KAAK,MAAQ,OACb,KAAK,MAAQ,OACb,KAAK,MAAQ,KAGV,QACH,MAAO,MAAK,QAGV,OAAO,YACT,GAAI,GAAU,KAAK,MAEnB,KAAO,GACN,KAAM,GAAQ,MACd,EAAU,EAAQ,OAKrB,GAAO,QAAU,KCnEjB,gCACA,GAAM,IAAgB,KAEhB,GAAS,IACd,GAAI,CAAG,SAAO,UAAU,IAAgB,IAAgB,WAAa,EAAc,GAClF,KAAM,IAAI,WAAU,uDAGrB,GAAM,GAAQ,GAAI,IACd,EAAc,EAEZ,EAAO,KACZ,IAEI,EAAM,KAAO,GAChB,EAAM,aAIF,EAAM,MAAO,EAAI,KAAY,KAClC,IAEA,GAAM,GAAU,UAAY,EAAG,GAAG,MAElC,EAAQ,GAER,IACC,KAAM,UAGP,KAGK,EAAU,CAAC,EAAI,KAAY,KAChC,EAAM,QAAQ,EAAI,KAAK,KAAM,EAAI,EAAS,GAAG,IAE5C,WAKA,KAAM,SAAQ,UAEV,EAAc,GAAe,EAAM,KAAO,GAC7C,EAAM,iBAKH,EAAY,CAAC,KAAO,IAAS,GAAI,SAAQ,IAC9C,EAAQ,EAAI,EAAS,GAAG,KAGzB,cAAO,iBAAiB,EAAW,CAClC,YAAa,CACZ,IAAK,IAAM,GAEZ,aAAc,CACb,IAAK,IAAM,EAAM,MAElB,WAAY,CACX,MAAO,KACN,EAAM,YAKF,GAGR,GAAO,QAAU,KCtEjB,gCACA,GAAM,IAAiB,KADvB,gBAGuB,OACtB,YAAY,GACX,QACA,KAAK,MAAQ,IAKT,GAAc,MAAO,EAAS,IAAW,EAAO,KAAM,IAGtD,GAAS,KAAM,KACpB,GAAM,GAAS,KAAM,SAAQ,IAAI,GACjC,GAAI,EAAO,KAAO,GACjB,KAAM,IAAI,IAAS,EAAO,IAG3B,MAAO,IAGF,GAAU,MAAO,EAAU,EAAQ,KACxC,EAAU,CACT,YAAa,SACb,cAAe,MACZ,GAGJ,GAAM,GAAQ,GAAO,EAAQ,aAGvB,EAAQ,CAAC,GAAG,GAAU,IAAI,GAAW,CAAC,EAAS,EAAM,GAAa,EAAS,KAG3E,EAAa,GAAO,EAAQ,cAAgB,EAAI,UAEtD,IACC,KAAM,SAAQ,IAAI,EAAM,IAAI,GAAW,EAAW,GAAQ,WAClD,GACR,GAAI,YAAiB,IACpB,MAAO,GAAM,MAGd,KAAM,KAIR,GAAO,QAAU,KCjDjB,gCACA,GAAM,IAAe,gBACf,GAAa,cACb,CAAC,cAAqB,gBACtB,GAAkB,KAElB,GAAS,GAAU,GAAG,MACtB,GAAU,GAAU,GAAG,OAEvB,GAAe,CACpB,UAAW,cACX,KAAM,UAGP,YAAmB,CAAC,SACnB,GAAI,MAAQ,KAIZ,KAAM,IAAI,OAAM,2BAA2B,KAG5C,GAAM,IAAY,CAAC,EAAM,IAAS,IAAS,QAAa,EAAK,GAAa,MAE1E,GAAO,QAAU,MAAO,EAAO,KAC9B,EAAU,CACT,IAAK,QAAQ,MACb,KAAM,OACN,cAAe,MACZ,GAGJ,GAAU,GAEV,GAAM,GAAS,EAAQ,cAAgB,GAAS,GAEhD,MAAO,IAAQ,EAAO,KAAM,KAC3B,IACC,GAAM,GAAO,KAAM,GAAO,GAAK,QAAQ,EAAQ,IAAK,IACpD,MAAO,IAAU,EAAQ,KAAM,SAE/B,MAAO,KAEN,IAGJ,GAAO,QAAQ,KAAO,CAAC,EAAO,KAC7B,EAAU,CACT,IAAK,QAAQ,MACb,cAAe,GACf,KAAM,UACH,GAGJ,GAAU,GAEV,GAAM,GAAS,EAAQ,cAAgB,GAAG,SAAW,GAAG,UAExD,OAAW,KAAS,GACnB,IACC,GAAM,GAAO,EAAO,GAAK,QAAQ,EAAQ,IAAK,IAE9C,GAAI,GAAU,EAAQ,KAAM,GAC3B,MAAO,cC/DX,gCACA,GAAM,IAAa,cACb,CAAC,cAAqB,gBAEtB,GAAU,GAAU,GAAG,QAE7B,GAAO,QAAU,KAAM,KACtB,IACC,YAAM,IAAQ,GACP,SACC,GACR,MAAO,KAIT,GAAO,QAAQ,KAAO,IACrB,IACC,UAAG,WAAW,GACP,SACC,GACR,MAAO,OCpBT,gCACA,GAAM,IAAe,gBACf,GAAqB,KACrB,GAAqB,KAErB,GAAO,OAAO,eAEpB,GAAO,QAAU,MAAO,EAAM,EAAU,MACvC,GAAI,GAAY,GAAK,QAAQ,EAAQ,KAAO,IACtC,CAAC,QAAQ,GAAK,MAAM,GACpB,EAAQ,GAAG,OAAO,GAElB,EAAa,KAAM,KACxB,GAAI,MAAO,IAAS,WACnB,MAAO,IAAW,EAAO,GAG1B,GAAM,GAAY,KAAM,GAAK,EAAc,KAC3C,MAAI,OAAO,IAAc,SACjB,GAAW,CAAC,GAAY,GAGzB,GAIR,QAEC,GAAM,GAAY,KAAM,GAAW,IAAI,EAAS,IAAK,IAErD,GAAI,IAAc,GACjB,OAGD,GAAI,EACH,MAAO,IAAK,QAAQ,EAAW,GAGhC,GAAI,IAAc,EACjB,OAGD,EAAY,GAAK,QAAQ,KAI3B,GAAO,QAAQ,KAAO,CAAC,EAAM,EAAU,MACtC,GAAI,GAAY,GAAK,QAAQ,EAAQ,KAAO,IACtC,CAAC,QAAQ,GAAK,MAAM,GACpB,EAAQ,GAAG,OAAO,GAElB,EAAa,IAClB,GAAI,MAAO,IAAS,WACnB,MAAO,IAAW,KAAK,EAAO,GAG/B,GAAM,GAAY,EAAK,EAAc,KACrC,MAAI,OAAO,IAAc,SACjB,GAAW,KAAK,CAAC,GAAY,GAG9B,GAIR,QACC,GAAM,GAAY,EAAW,IAAI,EAAS,IAAK,IAE/C,GAAI,IAAc,GACjB,OAGD,GAAI,EACH,MAAO,IAAK,QAAQ,EAAW,GAGhC,GAAI,IAAc,EACjB,OAGD,EAAY,GAAK,QAAQ,KAI3B,GAAO,QAAQ,OAAS,GAExB,GAAO,QAAQ,KAAK,OAAS,GAAW,KAExC,GAAO,QAAQ,KAAO,KCxFtB,cAqBA,GAAI,IAAqB,gBACrB,GAAY,QAAQ,WAAa,QACjC,GAAa,cAIb,GAAQ,QAAQ,IAAI,YAAc,KAAK,KAAK,QAAQ,IAAI,YAE5D,cAGE,GAAI,GACJ,GAAI,IACF,GAAI,GAAY,GAAI,OACpB,EAAW,MAEX,GAAW,EAEb,MAAO,GAEP,WAAuB,GACrB,AAAI,GACF,GAAU,QAAU,EAAI,QACxB,EAAM,EACN,EAAgB,IAIpB,WAAyB,GACvB,GAAI,GACF,GAAI,QAAQ,iBACV,KAAM,GACH,GAAI,CAAC,QAAQ,eAChB,GAAI,GAAM,wBAA2B,GAAI,OAAS,EAAI,SACtD,AAAI,QAAQ,iBACV,QAAQ,MAAM,GAEd,QAAQ,MAAM,MAMxB,YAAuB,GACrB,MAAO,OAAO,IAAO,WAAa,EAAK,KAGzC,GAAI,IAAY,GAAW,UAI3B,AAAI,GACE,GAAa,sBAEb,GAAa,oBAFb,OAMN,AAAI,GACE,GAAc,yDAEd,GAAc,SAFd,OAKN,GAAQ,aAAe,SAAsB,EAAG,GAI9C,GAFA,EAAI,GAAW,QAAQ,GAEnB,GAAS,OAAO,UAAU,eAAe,KAAK,EAAO,GACvD,MAAO,GAAM,GAGf,GAAI,GAAW,EACX,EAAY,GACZ,EAAY,GAGZ,EAEA,EAEA,EAEA,EAEJ,IAEA,aAEE,GAAI,GAAI,GAAY,KAAK,GACzB,EAAM,EAAE,GAAG,OACX,EAAU,EAAE,GACZ,EAAO,EAAE,GACT,EAAW,GAGP,IAAa,CAAC,EAAU,IAC1B,IAAG,UAAU,GACb,EAAU,GAAQ,IAOtB,KAAO,EAAM,EAAE,SAEb,GAAW,UAAY,EACvB,GAAI,GAAS,GAAW,KAAK,GAO7B,GANA,EAAW,EACX,GAAW,EAAO,GAClB,EAAO,EAAW,EAAO,GACzB,EAAM,GAAW,UAGb,IAAU,IAAU,GAAS,EAAM,KAAU,IAIjD,GAAI,GACJ,GAAI,GAAS,OAAO,UAAU,eAAe,KAAK,EAAO,GAEvD,EAAe,EAAM,QAErB,GAAI,GAAO,GAAG,UAAU,GACxB,GAAI,CAAC,EAAK,kBACR,EAAU,GAAQ,GACd,GAAO,GAAM,GAAQ,GACzB,SAKF,GAAI,GAAa,KACjB,GAAI,CAAC,IACH,GAAI,GAAK,EAAK,IAAI,SAAS,IAAM,IAAM,EAAK,IAAI,SAAS,IACzD,AAAI,EAAU,eAAe,IAC3B,GAAa,EAAU,IAG3B,AAAI,IAAe,MACjB,IAAG,SAAS,GACZ,EAAa,GAAG,aAAa,IAE/B,EAAe,GAAW,QAAQ,EAAU,GAExC,GAAO,GAAM,GAAQ,GACpB,IAAW,GAAU,GAAM,GAIlC,EAAI,GAAW,QAAQ,EAAc,EAAE,MAAM,IAC7C,KAGF,MAAI,IAAO,GAAM,GAAY,GAEtB,GAIT,GAAQ,SAAW,SAAkB,EAAG,EAAO,GAS7C,GARI,MAAO,IAAO,YAChB,GAAK,GAAc,GACnB,EAAQ,MAIV,EAAI,GAAW,QAAQ,GAEnB,GAAS,OAAO,UAAU,eAAe,KAAK,EAAO,GACvD,MAAO,SAAQ,SAAS,EAAG,KAAK,KAAM,KAAM,EAAM,KAGpD,GAAI,GAAW,EACX,EAAY,GACZ,EAAY,GAGZ,EAEA,EAEA,EAEA,EAEJ,IAEA,aAEE,GAAI,GAAI,GAAY,KAAK,GACzB,EAAM,EAAE,GAAG,OACX,EAAU,EAAE,GACZ,EAAO,EAAE,GACT,EAAW,GAGX,AAAI,IAAa,CAAC,EAAU,GAC1B,GAAG,MAAM,EAAM,SAAS,GACtB,GAAI,EAAK,MAAO,GAAG,GACnB,EAAU,GAAQ,GAClB,MAGF,QAAQ,SAAS,GAMrB,aAEE,GAAI,GAAO,EAAE,OACX,MAAI,IAAO,GAAM,GAAY,GACtB,EAAG,KAAM,GAIlB,GAAW,UAAY,EACvB,GAAI,GAAS,GAAW,KAAK,GAO7B,MANA,GAAW,EACX,GAAW,EAAO,GAClB,EAAO,EAAW,EAAO,GACzB,EAAM,GAAW,UAGb,EAAU,IAAU,GAAS,EAAM,KAAU,EACxC,QAAQ,SAAS,GAGtB,GAAS,OAAO,UAAU,eAAe,KAAK,EAAO,GAEhD,EAAgB,EAAM,IAGxB,GAAG,MAAM,EAAM,GAGxB,WAAiB,EAAK,GACpB,GAAI,EAAK,MAAO,GAAG,GAGnB,GAAI,CAAC,EAAK,iBACR,SAAU,GAAQ,GACd,GAAO,GAAM,GAAQ,GAClB,QAAQ,SAAS,GAM1B,GAAI,CAAC,IACH,GAAI,GAAK,EAAK,IAAI,SAAS,IAAM,IAAM,EAAK,IAAI,SAAS,IACzD,GAAI,EAAU,eAAe,GAC3B,MAAO,GAAU,KAAM,EAAU,GAAK,GAG1C,GAAG,KAAK,EAAM,SAAS,GACrB,GAAI,EAAK,MAAO,GAAG,GAEnB,GAAG,SAAS,EAAM,SAAS,EAAK,GAC9B,AAAK,IAAW,GAAU,GAAM,GAChC,EAAU,EAAK,OAKrB,WAAmB,EAAK,EAAQ,GAC9B,GAAI,EAAK,MAAO,GAAG,GAEnB,GAAI,GAAe,GAAW,QAAQ,EAAU,GAChD,AAAI,GAAO,GAAM,GAAQ,GACzB,EAAgB,GAGlB,WAAyB,GAEvB,EAAI,GAAW,QAAQ,EAAc,EAAE,MAAM,IAC7C,QC5SJ,sBAAO,QAAU,GACjB,GAAS,SAAW,GACpB,GAAS,KAAO,GAChB,GAAS,aAAe,GACxB,GAAS,YAAc,GACvB,GAAS,cAAgB,GAEzB,GAAI,IAAa,cACb,GAAe,GAAG,SAClB,GAAmB,GAAG,aAEtB,GAAU,QAAQ,QAClB,GAAK,YAAY,KAAK,IACtB,GAAc,KAElB,YAAmB,GACjB,MAAO,IAAM,EAAG,UAAY,YAC1B,GAAG,OAAS,SACZ,EAAG,OAAS,UACZ,EAAG,OAAS,gBAIhB,YAAmB,EAAG,EAAO,GAC3B,GAAI,GACF,MAAO,IAAa,EAAG,EAAO,GAGhC,AAAI,MAAO,IAAU,YACnB,GAAK,EACL,EAAQ,MAEV,GAAa,EAAG,EAAO,SAAU,EAAI,GACnC,AAAI,GAAS,GACX,GAAI,SAAS,EAAG,EAAO,GAEvB,EAAG,EAAI,KAKb,YAAuB,EAAG,GACxB,GAAI,GACF,MAAO,IAAiB,EAAG,GAG7B,IACE,MAAO,IAAiB,EAAG,SACpB,GACP,GAAI,GAAS,GACX,MAAO,IAAI,aAAa,EAAG,GAE3B,KAAM,IAKZ,cACE,GAAG,SAAW,GACd,GAAG,aAAe,GAGpB,cACE,GAAG,SAAW,GACd,GAAG,aAAe,MChEpB,sBAAO,QAAU,SAAU,EAAI,GAE3B,OADI,GAAM,GACD,EAAI,EAAG,EAAI,EAAG,OAAQ,KAC3B,GAAI,GAAI,EAAG,EAAG,GAAI,GAClB,AAAI,GAAQ,GAAI,EAAI,KAAK,MAAM,EAAK,GAC/B,EAAI,KAAK,GAElB,MAAO,IAGX,GAAI,IAAU,MAAM,SAAW,SAAU,GACrC,MAAO,QAAO,UAAU,SAAS,KAAK,KAAQ,oBCXlD,gCACA,GAAO,QAAU,GACjB,YAAkB,EAAG,EAAG,GACtB,AAAI,YAAa,SAAQ,GAAI,GAAW,EAAG,IACvC,YAAa,SAAQ,GAAI,GAAW,EAAG,IAE3C,GAAI,GAAI,GAAM,EAAG,EAAG,GAEpB,MAAO,IAAK,CACV,MAAO,EAAE,GACT,IAAK,EAAE,GACP,IAAK,EAAI,MAAM,EAAG,EAAE,IACpB,KAAM,EAAI,MAAM,EAAE,GAAK,EAAE,OAAQ,EAAE,IACnC,KAAM,EAAI,MAAM,EAAE,GAAK,EAAE,SAI7B,YAAoB,EAAK,GACvB,GAAI,GAAI,EAAI,MAAM,GAClB,MAAO,GAAI,EAAE,GAAK,KAGpB,GAAS,MAAQ,GACjB,YAAe,EAAG,EAAG,GACnB,GAAI,GAAM,EAAK,EAAM,EAAO,EACxB,EAAK,EAAI,QAAQ,GACjB,EAAK,EAAI,QAAQ,EAAG,EAAK,GACzB,EAAI,EAER,GAAI,GAAM,GAAK,EAAK,GAIlB,IAHA,EAAO,GACP,EAAO,EAAI,OAEJ,GAAK,GAAK,CAAC,GAChB,AAAI,GAAK,EACP,GAAK,KAAK,GACV,EAAK,EAAI,QAAQ,EAAG,EAAI,IACnB,AAAI,EAAK,QAAU,EACxB,EAAS,CAAE,EAAK,MAAO,GAEvB,GAAM,EAAK,MACP,EAAM,GACR,GAAO,EACP,EAAQ,GAGV,EAAK,EAAI,QAAQ,EAAG,EAAI,IAG1B,EAAI,EAAK,GAAM,GAAM,EAAI,EAAK,EAGhC,AAAI,EAAK,QACP,GAAS,CAAE,EAAM,IAIrB,MAAO,MCzDT,sBAAI,IAAoB,KACpB,GAAmB,KAEvB,GAAO,QAAU,GAEjB,GAAI,IAAW,UAAU,KAAK,SAAS,KACnC,GAAU,SAAS,KAAK,SAAS,KACjC,GAAW,UAAU,KAAK,SAAS,KACnC,GAAW,UAAU,KAAK,SAAS,KACnC,GAAY,WAAW,KAAK,SAAS,KAEzC,YAAiB,GACf,MAAO,UAAS,EAAK,KAAO,EACxB,SAAS,EAAK,IACd,EAAI,WAAW,GAGrB,YAAsB,GACpB,MAAO,GAAI,MAAM,QAAQ,KAAK,IACnB,MAAM,OAAO,KAAK,IAClB,MAAM,OAAO,KAAK,IAClB,MAAM,OAAO,KAAK,IAClB,MAAM,OAAO,KAAK,IAG/B,YAAwB,GACtB,MAAO,GAAI,MAAM,IAAU,KAAK,MACrB,MAAM,IAAS,KAAK,KACpB,MAAM,IAAU,KAAK,KACrB,MAAM,IAAU,KAAK,KACrB,MAAM,IAAW,KAAK,KAOnC,YAAyB,GACvB,GAAI,CAAC,EACH,MAAO,CAAC,IAEV,GAAI,GAAQ,GACR,EAAI,GAAS,IAAK,IAAK,GAE3B,GAAI,CAAC,EACH,MAAO,GAAI,MAAM,KAEnB,GAAI,GAAM,EAAE,IACR,EAAO,EAAE,KACT,EAAO,EAAE,KACT,EAAI,EAAI,MAAM,KAElB,EAAE,EAAE,OAAO,IAAM,IAAM,EAAO,IAC9B,GAAI,GAAY,GAAgB,GAChC,MAAI,GAAK,QACP,GAAE,EAAE,OAAO,IAAM,EAAU,QAC3B,EAAE,KAAK,MAAM,EAAG,IAGlB,EAAM,KAAK,MAAM,EAAO,GAEjB,EAGT,YAAmB,GACjB,MAAK,GASD,GAAI,OAAO,EAAG,KAAO,MACvB,GAAM,SAAW,EAAI,OAAO,IAGvB,GAAO,GAAa,GAAM,IAAM,IAAI,KAZlC,GAmBX,YAAiB,GACf,MAAO,IAAM,EAAM,IAErB,YAAkB,GAChB,MAAO,SAAS,KAAK,GAGvB,YAAa,EAAG,GACd,MAAO,IAAK,EAEd,YAAa,EAAG,GACd,MAAO,IAAK,EAGd,YAAgB,EAAK,GACnB,GAAI,GAAa,GAEb,EAAI,GAAS,IAAK,IAAK,GAC3B,GAAI,CAAC,GAAK,MAAM,KAAK,EAAE,KAAM,MAAO,CAAC,GAErC,GAAI,GAAoB,iCAAiC,KAAK,EAAE,MAC5D,EAAkB,uCAAuC,KAAK,EAAE,MAChE,EAAa,GAAqB,EAClC,EAAY,EAAE,KAAK,QAAQ,MAAQ,EACvC,GAAI,CAAC,GAAc,CAAC,EAElB,MAAI,GAAE,KAAK,MAAM,SACf,GAAM,EAAE,IAAM,IAAM,EAAE,KAAO,GAAW,EAAE,KACnC,GAAO,IAET,CAAC,GAGV,GAAI,GACJ,GAAI,EACF,EAAI,EAAE,KAAK,MAAM,gBAEjB,EAAI,GAAgB,EAAE,MAClB,EAAE,SAAW,GAEf,GAAI,GAAO,EAAE,GAAI,IAAO,IAAI,IACxB,EAAE,SAAW,IACf,GAAI,GAAO,EAAE,KAAK,OACd,GAAO,EAAE,KAAM,IACf,CAAC,IACL,MAAO,GAAK,IAAI,SAAS,GACvB,MAAO,GAAE,IAAM,EAAE,GAAK,IAU9B,GAAI,GAAM,EAAE,IACR,EAAO,EAAE,KAAK,OACd,GAAO,EAAE,KAAM,IACf,CAAC,IAED,EAEJ,GAAI,GACF,GAAI,GAAI,GAAQ,EAAE,IACd,EAAI,GAAQ,EAAE,IACd,EAAQ,KAAK,IAAI,EAAE,GAAG,OAAQ,EAAE,GAAG,QACnC,EAAO,EAAE,QAAU,EACnB,KAAK,IAAI,GAAQ,EAAE,KACnB,EACA,EAAO,GACP,EAAU,EAAI,EAClB,AAAI,GACF,IAAQ,GACR,EAAO,IAET,GAAI,GAAM,EAAE,KAAK,IAEjB,EAAI,GAEJ,OAAS,GAAI,EAAG,EAAK,EAAG,GAAI,GAAK,GAC/B,GAAI,GACJ,GAAI,EACF,EAAI,OAAO,aAAa,GACpB,IAAM,MACR,GAAI,YAEN,EAAI,OAAO,GACP,GACF,GAAI,GAAO,EAAQ,EAAE,OACrB,GAAI,EAAO,GACT,GAAI,GAAI,GAAI,OAAM,EAAO,GAAG,KAAK,KACjC,AAAI,EAAI,EACN,EAAI,IAAM,EAAI,EAAE,MAAM,GAEtB,EAAI,EAAI,GAIhB,EAAE,KAAK,QAGT,GAAI,GAAU,EAAG,SAAS,GAAM,MAAO,IAAO,EAAI,MAGpD,OAAS,GAAI,EAAG,EAAI,EAAE,OAAQ,IAC5B,OAAS,GAAI,EAAG,EAAI,EAAK,OAAQ,KAC/B,GAAI,GAAY,EAAM,EAAE,GAAK,EAAK,GAClC,AAAI,EAAC,GAAS,GAAc,IAC1B,EAAW,KAAK,GAItB,MAAO,MCtMT,sBAAO,QAAU,GACjB,GAAU,UAAY,GAEtB,GAAI,IAAO,CAAE,IAAK,KAClB,IACE,GAAe,sBACR,IAET,GAAI,IAAW,GAAU,SAAW,GAAU,SAAW,GACrD,GAAiB,KAEjB,GAAU,CACZ,IAAK,CAAE,KAAM,YAAa,MAAO,aACjC,IAAK,CAAE,KAAM,MAAO,MAAO,MAC3B,IAAK,CAAE,KAAM,MAAO,MAAO,MAC3B,IAAK,CAAE,KAAM,MAAO,MAAO,MAC3B,IAAK,CAAE,KAAM,MAAO,MAAO,MAKzB,GAAQ,OAGR,GAAO,GAAQ,KAKf,GAAa,0CAIb,GAAe,0BAGf,GAAa,GAAQ,mBAGzB,YAAkB,GAChB,MAAO,GAAE,MAAM,IAAI,OAAO,SAAU,EAAK,GACvC,SAAI,GAAK,GACF,GACN,IAIL,GAAI,IAAa,MAEjB,GAAU,OAAS,GACnB,YAAiB,EAAS,GACxB,SAAU,GAAW,GACd,SAAU,EAAG,EAAG,GACrB,MAAO,IAAU,EAAG,EAAS,IAIjC,YAAc,EAAG,GACf,EAAI,GAAK,GACT,EAAI,GAAK,GACT,GAAI,GAAI,GACR,cAAO,KAAK,GAAG,QAAQ,SAAU,GAC/B,EAAE,GAAK,EAAE,KAEX,OAAO,KAAK,GAAG,QAAQ,SAAU,GAC/B,EAAE,GAAK,EAAE,KAEJ,EAGT,GAAU,SAAW,SAAU,GAC7B,GAAI,CAAC,GAAO,CAAC,OAAO,KAAK,GAAK,OAAQ,MAAO,IAE7C,GAAI,GAAO,GAEP,EAAI,SAAoB,EAAG,EAAS,GACtC,MAAO,GAAK,UAAU,EAAG,EAAS,GAAI,EAAK,KAG7C,SAAE,UAAY,SAAoB,EAAS,GACzC,MAAO,IAAI,GAAK,UAAU,EAAS,GAAI,EAAK,KAGvC,GAGT,GAAU,SAAW,SAAU,GAC7B,MAAI,CAAC,GAAO,CAAC,OAAO,KAAK,GAAK,OAAe,GACtC,GAAU,SAAS,GAAK,WAGjC,YAAoB,EAAG,EAAS,GAC9B,GAAI,MAAO,IAAY,SACrB,KAAM,IAAI,WAAU,gCAMtB,MAHK,IAAS,GAAU,IAGpB,CAAC,EAAQ,WAAa,EAAQ,OAAO,KAAO,IACvC,GAIL,EAAQ,SAAW,GAAW,IAAM,GAEjC,GAAI,IAAU,EAAS,GAAS,MAAM,GAG/C,YAAoB,EAAS,GAC3B,GAAI,CAAE,gBAAgB,KACpB,MAAO,IAAI,IAAU,EAAS,GAGhC,GAAI,MAAO,IAAY,SACrB,KAAM,IAAI,WAAU,gCAGtB,AAAK,GAAS,GAAU,IACxB,EAAU,EAAQ,OAGd,GAAK,MAAQ,KACf,GAAU,EAAQ,MAAM,GAAK,KAAK,KAAK,MAGzC,KAAK,QAAU,EACf,KAAK,IAAM,GACX,KAAK,QAAU,EACf,KAAK,OAAS,KACd,KAAK,OAAS,GACd,KAAK,QAAU,GACf,KAAK,MAAQ,GAGb,KAAK,OAGP,GAAU,UAAU,MAAQ,aAE5B,GAAU,UAAU,KAAO,GAC3B,cAEE,GAAI,MAAK,OAET,GAAI,GAAU,KAAK,QACf,EAAU,KAAK,QAGnB,GAAI,CAAC,EAAQ,WAAa,EAAQ,OAAO,KAAO,KAC9C,KAAK,QAAU,GACf,OAEF,GAAI,CAAC,GACH,KAAK,MAAQ,GACb,OAIF,KAAK,cAGL,GAAI,GAAM,KAAK,QAAU,KAAK,cAE9B,AAAI,EAAQ,OAAO,MAAK,MAAQ,QAAQ,OAExC,KAAK,MAAM,KAAK,QAAS,GAOzB,EAAM,KAAK,UAAY,EAAI,IAAI,SAAU,GACvC,MAAO,GAAE,MAAM,MAGjB,KAAK,MAAM,KAAK,QAAS,GAGzB,EAAM,EAAI,IAAI,SAAU,EAAG,EAAI,GAC7B,MAAO,GAAE,IAAI,KAAK,MAAO,OACxB,MAEH,KAAK,MAAM,KAAK,QAAS,GAGzB,EAAM,EAAI,OAAO,SAAU,GACzB,MAAO,GAAE,QAAQ,MAAW,KAG9B,KAAK,MAAM,KAAK,QAAS,GAEzB,KAAK,IAAM,GAGb,GAAU,UAAU,YAAc,GAClC,cACE,GAAI,GAAU,KAAK,QACf,EAAS,GACT,EAAU,KAAK,QACf,EAAe,EAEnB,GAAI,GAAQ,UAEZ,OAAS,GAAI,EAAG,EAAI,EAAQ,OACxB,EAAI,GAAK,EAAQ,OAAO,KAAO,IAC/B,IACF,EAAS,CAAC,EACV,IAGF,AAAI,GAAc,MAAK,QAAU,EAAQ,OAAO,IAChD,KAAK,OAAS,GAahB,GAAU,YAAc,SAAU,EAAS,GACzC,MAAO,IAAY,EAAS,IAG9B,GAAU,UAAU,YAAc,GAElC,YAAsB,EAAS,GAY7B,GAXK,GACH,CAAI,eAAgB,IAClB,EAAU,KAAK,QAEf,EAAU,IAId,EAAU,MAAO,IAAY,YACzB,KAAK,QAAU,EAEf,MAAO,IAAY,YACrB,KAAM,IAAI,WAAU,qBAGtB,MAAI,GAAQ,SACV,CAAC,EAAQ,MAAM,UAER,CAAC,GAGH,GAAO,GAchB,GAAU,UAAU,MAAQ,GAC5B,GAAI,IAAW,GACf,YAAgB,EAAS,GACvB,GAAI,EAAQ,OAAS,KAAO,GAC1B,KAAM,IAAI,WAAU,uBAGtB,GAAI,GAAU,KAAK,QAGnB,GAAI,CAAC,EAAQ,YAAc,IAAY,KAAM,MAAO,IACpD,GAAI,IAAY,GAAI,MAAO,GAE3B,GAAI,GAAK,GACL,EAAW,CAAC,CAAC,EAAQ,OACrB,EAAW,GAEX,EAAmB,GACnB,EAAgB,GAChB,EACA,EAAU,GACV,EAAe,GACf,EAAa,GAGb,EAAe,EAAQ,OAAO,KAAO,IAAM,GAE7C,EAAQ,IAAM,iCACd,UACE,EAAO,KAEX,aACE,GAAI,GAGF,OAAQ,OACD,IACH,GAAM,GACN,EAAW,GACb,UACK,IACH,GAAM,GACN,EAAW,GACb,cAEE,GAAM,KAAO,EACf,MAEF,EAAK,MAAM,uBAAwB,EAAW,GAC9C,EAAY,IAIhB,OAAS,GAAI,EAAG,EAAM,EAAQ,OAAQ,EACjC,EAAI,GAAS,GAAI,EAAQ,OAAO,IACjC,KAIF,GAHA,KAAK,MAAM,cAAgB,EAAS,EAAG,EAAI,GAGvC,GAAY,GAAW,IACzB,GAAM,KAAO,EACb,EAAW,GACX,SAGF,OAAQ,OACD,IAGH,MAAO,OAEJ,KACH,IACA,EAAW,GACb,aAIK,QACA,QACA,QACA,QACA,IAKH,GAJA,KAAK,MAAM,4BAA8B,EAAS,EAAG,EAAI,GAIrD,GACF,KAAK,MAAM,cACP,IAAM,KAAO,IAAM,EAAa,GAAG,GAAI,KAC3C,GAAM,EACN,SAMF,EAAK,MAAM,yBAA0B,GACrC,IACA,EAAY,EAIR,EAAQ,OAAO,IACrB,aAEK,IACH,GAAI,GACF,GAAM,IACN,SAGF,GAAI,CAAC,GACH,GAAM,MACN,SAGF,EAAiB,KAAK,CACpB,KAAM,EACN,MAAO,EAAI,EACX,QAAS,EAAG,OACZ,KAAM,GAAQ,GAAW,KACzB,MAAO,GAAQ,GAAW,QAG5B,GAAM,IAAc,IAAM,YAAc,MACxC,KAAK,MAAM,eAAgB,EAAW,GACtC,EAAY,GACd,aAEK,IACH,GAAI,GAAW,CAAC,EAAiB,QAC/B,GAAM,MACN,SAGF,IACA,EAAW,GACX,GAAI,GAAK,EAAiB,MAG1B,GAAM,EAAG,MACL,EAAG,OAAS,KACd,EAAc,KAAK,GAErB,EAAG,MAAQ,EAAG,OAChB,aAEK,IACH,GAAI,GAAW,CAAC,EAAiB,QAAU,GACzC,GAAM,MACN,EAAW,GACX,SAGF,IACA,GAAM,IACR,aAGK,IAIH,GAFA,IAEI,GACF,GAAM,KAAO,EACb,SAGF,EAAU,GACV,EAAa,EACb,EAAe,EAAG,OAClB,GAAM,EACR,aAEK,IAKH,GAAI,IAAM,EAAa,GAAK,CAAC,GAC3B,GAAM,KAAO,EACb,EAAW,GACX,SAKF,GAAI,GAQF,GAAI,GAAK,EAAQ,UAAU,EAAa,EAAG,GAC3C,IACE,OAAO,IAAM,EAAK,WACX,IAEP,GAAI,GAAK,KAAK,MAAM,EAAI,IACxB,EAAK,EAAG,OAAO,EAAG,GAAgB,MAAQ,EAAG,GAAK,MAClD,EAAW,GAAY,EAAG,GAC1B,EAAU,GACV,UAKJ,EAAW,GACX,EAAU,GACV,GAAM,EACR,iBAIE,IAEA,AAAI,EAEF,EAAW,GACF,GAAW,IACjB,CAAE,KAAM,KAAO,IAClB,IAAM,MAGR,GAAM,GAwBZ,IAjBI,GAKF,GAAK,EAAQ,OAAO,EAAa,GACjC,EAAK,KAAK,MAAM,EAAI,IACpB,EAAK,EAAG,OAAO,EAAG,GAAgB,MAAQ,EAAG,GAC7C,EAAW,GAAY,EAAG,IASvB,EAAK,EAAiB,MAAO,EAAI,EAAK,EAAiB,OAC1D,GAAI,GAAO,EAAG,MAAM,EAAG,QAAU,EAAG,KAAK,QACzC,KAAK,MAAM,eAAgB,EAAI,GAE/B,EAAO,EAAK,QAAQ,4BAA6B,SAAU,GAAG,GAAI,IAChE,MAAK,KAEH,IAAK,MASA,GAAK,GAAK,GAAK,MAGxB,KAAK,MAAM;AAAA,OAAkB,EAAM,EAAM,EAAI,GAC7C,GAAI,GAAI,EAAG,OAAS,IAAM,GACtB,EAAG,OAAS,IAAM,GAClB,KAAO,EAAG,KAEd,EAAW,GACX,EAAK,EAAG,MAAM,EAAG,EAAG,SAAW,EAAI,MAAQ,EAI7C,IACI,GAEF,IAAM,QAKR,GAAI,GAAkB,GACtB,OAAQ,EAAG,OAAO,QACX,QACA,QACA,IAAK,EAAkB,GAQ9B,OAAS,GAAI,EAAc,OAAS,EAAG,EAAI,GAAI,KAC7C,GAAI,GAAK,EAAc,GAEnB,EAAW,EAAG,MAAM,EAAG,EAAG,SAC1B,EAAU,EAAG,MAAM,EAAG,QAAS,EAAG,MAAQ,GAC1C,EAAS,EAAG,MAAM,EAAG,MAAQ,EAAG,EAAG,OACnC,EAAU,EAAG,MAAM,EAAG,OAE1B,GAAU,EAKV,GAAI,GAAmB,EAAS,MAAM,KAAK,OAAS,EAChD,EAAa,EACjB,IAAK,EAAI,EAAG,EAAI,EAAkB,IAChC,EAAa,EAAW,QAAQ,WAAY,IAE9C,EAAU,EAEV,GAAI,GAAS,GACb,AAAI,IAAY,IAAM,IAAU,IAC9B,GAAS,KAEX,GAAI,IAAQ,EAAW,EAAU,EAAU,EAAS,EACpD,EAAK,GAeP,GATI,IAAO,IAAM,GACf,GAAK,QAAU,GAGb,GACF,GAAK,EAAe,GAIlB,IAAU,GACZ,MAAO,CAAC,EAAI,GAMd,GAAI,CAAC,EACH,MAAO,IAAa,GAGtB,GAAI,IAAQ,EAAQ,OAAS,IAAM,GACnC,IACE,GAAI,IAAS,GAAI,QAAO,IAAM,EAAK,IAAK,UACjC,IAKP,MAAO,IAAI,QAAO,MAGpB,UAAO,MAAQ,EACf,GAAO,KAAO,EAEP,GAGT,GAAU,OAAS,SAAU,EAAS,GACpC,MAAO,IAAI,IAAU,EAAS,GAAW,IAAI,UAG/C,GAAU,UAAU,OAAS,GAC7B,cACE,GAAI,KAAK,QAAU,KAAK,SAAW,GAAO,MAAO,MAAK,OAQtD,GAAI,GAAM,KAAK,IAEf,GAAI,CAAC,EAAI,OACP,YAAK,OAAS,GACP,KAAK,OAEd,GAAI,GAAU,KAAK,QAEf,EAAU,EAAQ,WAAa,GAC/B,EAAQ,IAAM,GACd,GACA,EAAQ,EAAQ,OAAS,IAAM,GAE/B,EAAK,EAAI,IAAI,SAAU,GACzB,MAAO,GAAQ,IAAI,SAAU,GAC3B,MAAQ,KAAM,GAAY,EACvB,MAAO,IAAM,SAAY,GAAa,GACvC,EAAE,OACH,KAAK,SACP,KAAK,KAIR,EAAK,OAAS,EAAK,KAGf,KAAK,QAAQ,GAAK,OAAS,EAAK,QAEpC,IACE,KAAK,OAAS,GAAI,QAAO,EAAI,SACtB,GACP,KAAK,OAAS,GAEhB,MAAO,MAAK,OAGd,GAAU,MAAQ,SAAU,EAAM,EAAS,GACzC,EAAU,GAAW,GACrB,GAAI,GAAK,GAAI,IAAU,EAAS,GAChC,SAAO,EAAK,OAAO,SAAU,GAC3B,MAAO,GAAG,MAAM,KAEd,EAAG,QAAQ,QAAU,CAAC,EAAK,QAC7B,EAAK,KAAK,GAEL,GAGT,GAAU,UAAU,MAAQ,GAC5B,YAAgB,EAAG,GAIjB,GAHA,KAAK,MAAM,QAAS,EAAG,KAAK,SAGxB,KAAK,QAAS,MAAO,GACzB,GAAI,KAAK,MAAO,MAAO,KAAM,GAE7B,GAAI,IAAM,KAAO,EAAS,MAAO,GAEjC,GAAI,GAAU,KAAK,QAGnB,AAAI,GAAK,MAAQ,KACf,GAAI,EAAE,MAAM,GAAK,KAAK,KAAK,MAI7B,EAAI,EAAE,MAAM,IACZ,KAAK,MAAM,KAAK,QAAS,QAAS,GAOlC,GAAI,GAAM,KAAK,IACf,KAAK,MAAM,KAAK,QAAS,MAAO,GAGhC,GAAI,GACA,EACJ,IAAK,EAAI,EAAE,OAAS,EAAG,GAAK,GAC1B,GAAW,EAAE,GACT,IAFyB,IAE7B,CAGF,IAAK,EAAI,EAAG,EAAI,EAAI,OAAQ,KAC1B,GAAI,GAAU,EAAI,GACd,EAAO,EACX,AAAI,EAAQ,WAAa,EAAQ,SAAW,GAC1C,GAAO,CAAC,IAEV,GAAI,GAAM,KAAK,SAAS,EAAM,EAAS,GACvC,GAAI,EACF,MAAI,GAAQ,WAAmB,GACxB,CAAC,KAAK,OAMjB,MAAI,GAAQ,WAAmB,GACxB,KAAK,OAQd,GAAU,UAAU,SAAW,SAAU,EAAM,EAAS,GACtD,GAAI,GAAU,KAAK,QAEnB,KAAK,MAAM,WACT,CAAE,KAAQ,KAAM,KAAM,EAAM,QAAS,IAEvC,KAAK,MAAM,WAAY,EAAK,OAAQ,EAAQ,QAE5C,OAAS,GAAK,EACV,EAAK,EACL,EAAK,EAAK,OACV,EAAK,EAAQ,OACV,EAAK,GAAQ,EAAK,EACnB,IAAM,KACV,KAAK,MAAM,iBACX,GAAI,GAAI,EAAQ,GACZ,EAAI,EAAK,GAMb,GAJA,KAAK,MAAM,EAAS,EAAG,GAInB,IAAM,GAAO,MAAO,GAExB,GAAI,IAAM,IACR,KAAK,MAAM,WAAY,CAAC,EAAS,EAAG,IAwBpC,GAAI,GAAK,EACL,EAAK,EAAK,EACd,GAAI,IAAO,GAQT,IAPA,KAAK,MAAM,iBAOJ,EAAK,EAAI,IACd,GAAI,EAAK,KAAQ,KAAO,EAAK,KAAQ,MAClC,CAAC,EAAQ,KAAO,EAAK,GAAI,OAAO,KAAO,IAAM,MAAO,GAEzD,MAAO,GAIT,KAAO,EAAK,IACV,GAAI,GAAY,EAAK,GAKrB,GAHA,KAAK,MAAM;AAAA,gBAAoB,EAAM,EAAI,EAAS,EAAI,GAGlD,KAAK,SAAS,EAAK,MAAM,GAAK,EAAQ,MAAM,GAAK,GACnD,YAAK,MAAM,wBAAyB,EAAI,EAAI,GAErC,GAIP,GAAI,IAAc,KAAO,IAAc,MACpC,CAAC,EAAQ,KAAO,EAAU,OAAO,KAAO,KACzC,KAAK,MAAM,gBAAiB,EAAM,EAAI,EAAS,GAC/C,MAIF,KAAK,MAAM,4CACX,IAOJ,MAAI,MAEF,MAAK,MAAM;AAAA,wBAA4B,EAAM,EAAI,EAAS,GACtD,IAAO,IAQf,GAAI,GAaJ,GAZA,AAAI,MAAO,IAAM,SACf,CAAI,EAAQ,OACV,EAAM,EAAE,gBAAkB,EAAE,cAE5B,EAAM,IAAM,EAEd,KAAK,MAAM,eAAgB,EAAG,EAAG,IAEjC,GAAM,EAAE,MAAM,GACd,KAAK,MAAM,gBAAiB,EAAG,EAAG,IAGhC,CAAC,EAAK,MAAO,GAenB,GAAI,IAAO,GAAM,IAAO,EAGtB,MAAO,GACF,GAAI,IAAO,EAIhB,MAAO,GACF,GAAI,IAAO,GAKhB,GAAI,GAAgB,IAAO,EAAK,GAAO,EAAK,KAAQ,GACpD,MAAO,GAIT,KAAM,IAAI,OAAM,SAIlB,YAAuB,GACrB,MAAO,GAAE,QAAQ,SAAU,MAG7B,YAAuB,GACrB,MAAO,GAAE,QAAQ,2BAA4B,WCz5B/C,mBAAI,MAAO,QAAO,QAAW,WAE3B,GAAO,QAAU,SAAkB,EAAM,GACvC,AAAI,GACF,GAAK,OAAS,EACd,EAAK,UAAY,OAAO,OAAO,EAAU,UAAW,CAClD,YAAa,CACX,MAAO,EACP,WAAY,GACZ,SAAU,GACV,aAAc,QAOtB,GAAO,QAAU,SAAkB,EAAM,GACvC,GAAI,GACF,EAAK,OAAS,EACd,GAAI,GAAW,aACf,EAAS,UAAY,EAAU,UAC/B,EAAK,UAAY,GAAI,GACrB,EAAK,UAAU,YAAc,MCvBnC,uBAGE,GAFI,GAAe,gBAEf,MAAO,IAAK,UAAa,WAAY,KAAM,GAC/C,GAAO,QAAU,GAAK,eACf,GAEP,GAAO,QAAkB,KANrB,SCDN,gCAEA,YAAe,GACd,MAAO,GAAK,OAAO,KAAO,IAG3B,YAAe,GAEd,GAAI,GAAgB,qEAChB,EAAS,EAAc,KAAK,GAC5B,EAAS,EAAO,IAAM,GACtB,EAAQ,QAAQ,GAAU,EAAO,OAAO,KAAO,KAGnD,MAAO,SAAQ,EAAO,IAAM,GAG7B,GAAO,QAAU,QAAQ,WAAa,QAAU,GAAQ,GACxD,GAAO,QAAQ,MAAQ,GACvB,GAAO,QAAQ,MAAQ,KCnBvB,iBAAQ,UAAY,GACpB,GAAQ,WAAa,GACrB,GAAQ,QAAU,GAClB,GAAQ,QAAU,GAClB,GAAQ,QAAU,GAClB,GAAQ,OAAS,GACjB,GAAQ,KAAO,GACf,GAAQ,UAAY,GACpB,GAAQ,gBAAkB,GAE1B,YAAkB,EAAK,GACrB,MAAO,QAAO,UAAU,eAAe,KAAK,EAAK,GAGnD,GAAI,IAAe,gBACf,GAAoB,KACpB,GAAqB,KACrB,GAAY,GAAU,UAE1B,YAAqB,EAAG,GACtB,MAAO,GAAE,cAAc,cAAc,EAAE,eAGzC,YAAoB,EAAG,GACrB,MAAO,GAAE,cAAc,GAGzB,YAAuB,EAAM,GAC3B,EAAK,OAAS,EAAQ,QAAU,GAE3B,MAAM,QAAQ,EAAK,SACtB,GAAK,OAAS,CAAC,EAAK,SAElB,EAAK,OAAO,QACd,GAAK,OAAS,EAAK,OAAO,IAAI,KAKlC,YAAoB,GAClB,GAAI,GAAW,KACf,GAAI,EAAQ,MAAM,MAAQ,OACxB,GAAI,GAAW,EAAQ,QAAQ,aAAc,IAC7C,EAAW,GAAI,IAAU,EAAU,CAAE,IAAK,KAG5C,MAAO,CACL,QAAS,GAAI,IAAU,EAAS,CAAE,IAAK,KACvC,SAAU,GAId,YAAkB,EAAM,EAAS,GAK/B,GAJK,GACH,GAAU,IAGR,EAAQ,WAAa,AAAO,EAAQ,QAAQ,OAAvB,IACvB,GAAI,EAAQ,WACV,KAAM,IAAI,OAAM,mCAElB,EAAU,MAAQ,EAGpB,EAAK,OAAS,CAAC,CAAC,EAAQ,OACxB,EAAK,QAAU,EACf,EAAK,OAAS,EAAQ,SAAW,GACjC,EAAK,SAAW,CAAC,CAAC,EAAQ,SAC1B,EAAK,cAAgB,EAAQ,eAAiB,OAAO,OAAO,MAC5D,EAAK,OAAS,CAAC,CAAC,EAAQ,OACxB,EAAK,IAAM,CAAC,CAAC,EAAQ,IACrB,EAAK,KAAO,CAAC,CAAC,EAAQ,KACtB,EAAK,MAAQ,CAAC,CAAC,EAAQ,MACnB,EAAK,OACP,GAAK,KAAO,IACd,EAAK,KAAO,CAAC,CAAC,EAAQ,KACtB,EAAK,SAAW,CAAC,CAAC,EAAQ,SAC1B,EAAK,OAAS,CAAC,CAAC,EAAQ,OACxB,EAAK,OAAS,CAAC,CAAC,EAAQ,OACxB,EAAK,OAAS,CAAC,CAAC,EAAQ,OACxB,EAAK,KAAO,CAAC,CAAC,EAAQ,KACtB,EAAK,UAAY,CAAC,CAAC,EAAQ,UAC3B,EAAK,SAAW,CAAC,CAAC,EAAQ,SAE1B,EAAK,UAAY,EAAQ,WAAa,SACtC,EAAK,MAAQ,EAAQ,OAAS,OAAO,OAAO,MAC5C,EAAK,UAAY,EAAQ,WAAa,OAAO,OAAO,MACpD,EAAK,SAAW,EAAQ,UAAY,OAAO,OAAO,MAElD,GAAa,EAAM,GAEnB,EAAK,WAAa,GAClB,GAAI,GAAM,QAAQ,MAClB,AAAK,GAAQ,EAAS,OAGpB,GAAK,IAAM,GAAK,QAAQ,EAAQ,KAChC,EAAK,WAAa,EAAK,MAAQ,GAH/B,EAAK,IAAM,EAMb,EAAK,KAAO,EAAQ,MAAQ,GAAK,QAAQ,EAAK,IAAK,KACnD,EAAK,KAAO,GAAK,QAAQ,EAAK,MAC1B,QAAQ,WAAa,SACvB,GAAK,KAAO,EAAK,KAAK,QAAQ,MAAO,MAIvC,EAAK,OAAS,GAAW,EAAK,KAAO,EAAK,IAAM,GAAQ,EAAM,EAAK,KAC/D,QAAQ,WAAa,SACvB,GAAK,OAAS,EAAK,OAAO,QAAQ,MAAO,MAC3C,EAAK,QAAU,CAAC,CAAC,EAAQ,QAIzB,EAAQ,SAAW,GACnB,EAAQ,UAAY,GAEpB,EAAK,UAAY,GAAI,IAAU,EAAS,GACxC,EAAK,QAAU,EAAK,UAAU,QAGhC,YAAiB,GAIf,OAHI,GAAM,EAAK,SACX,EAAM,EAAM,GAAK,OAAO,OAAO,MAE1B,EAAI,EAAG,EAAI,EAAK,QAAQ,OAAQ,EAAI,EAAG,KAC9C,GAAI,GAAU,EAAK,QAAQ,GAC3B,GAAI,CAAC,GAAW,OAAO,KAAK,GAAS,SAAW,GAC9C,GAAI,EAAK,QAEP,GAAI,GAAU,EAAK,UAAU,QAAQ,GACrC,AAAI,EACF,EAAI,KAAK,GAET,EAAI,GAAW,SAInB,GAAI,GAAI,OAAO,KAAK,GACpB,AAAI,EACF,EAAI,KAAK,MAAM,EAAK,GAEpB,EAAE,QAAQ,SAAU,GAClB,EAAI,GAAK,MAYjB,GAPK,GACH,GAAM,OAAO,KAAK,IAEf,EAAK,QACR,GAAM,EAAI,KAAK,EAAK,OAAS,GAAa,KAGxC,EAAK,MACP,OAAS,GAAI,EAAG,EAAI,EAAI,OAAQ,IAC9B,EAAI,GAAK,EAAK,MAAM,EAAI,IAE1B,AAAI,EAAK,OACP,GAAM,EAAI,OAAO,SAAU,GACzB,GAAI,GAAS,CAAE,MAAM,KAAK,GACtB,EAAI,EAAK,MAAM,IAAM,EAAK,MAAM,GAAQ,EAAM,IAClD,MAAI,IAAU,GACZ,GAAS,IAAM,OAAS,CAAC,MAAM,QAAQ,IAClC,KAKb,AAAI,EAAK,OAAO,QACd,GAAM,EAAI,OAAO,SAAS,GACxB,MAAO,CAAC,GAAU,EAAM,MAG5B,EAAK,MAAQ,EAGf,YAAe,EAAM,GACnB,GAAI,GAAM,GAAQ,EAAM,GACpB,EAAI,EAAK,MAAM,GACf,EAAI,EACR,GAAI,GACF,GAAI,GAAQ,IAAM,OAAS,MAAM,QAAQ,GACrC,EAAQ,EAAE,MAAM,MAAQ,IAO5B,GALA,AAAI,GAAS,CAAC,EACZ,GAAK,IACE,CAAC,GAAS,GACjB,GAAI,EAAE,MAAM,EAAG,KAEb,IAAM,GACR,GAAI,GAAO,GAAQ,EAAM,GACzB,EAAK,UAAU,GAAQ,EAAK,UAAU,GACtC,EAAK,MAAM,GAAQ,EAAK,MAAM,IAIlC,MAAO,GAIT,YAAkB,EAAM,GACtB,GAAI,GAAM,EACV,MAAI,GAAE,OAAO,KAAO,IAClB,EAAM,GAAK,KAAK,EAAK,KAAM,GACtB,AAAI,GAAW,IAAM,IAAM,GAChC,EAAM,EACD,AAAI,EAAK,WACd,EAAM,GAAK,QAAQ,EAAK,IAAK,GAE7B,EAAM,GAAK,QAAQ,GAGjB,QAAQ,WAAa,SACvB,GAAM,EAAI,QAAQ,MAAO,MAEpB,EAMT,YAAoB,EAAM,GACxB,MAAK,GAAK,OAAO,OAGV,EAAK,OAAO,KAAK,SAAS,GAC/B,MAAO,GAAK,QAAQ,MAAM,IAAS,CAAC,CAAE,GAAK,UAAY,EAAK,SAAS,MAAM,MAHpE,GAOX,YAA0B,EAAM,GAC9B,MAAK,GAAK,OAAO,OAGV,EAAK,OAAO,KAAK,SAAS,GAC/B,MAAO,CAAC,CAAE,GAAK,UAAY,EAAK,SAAS,MAAM,MAHxC,MC1OX,sBAAO,QAAU,GACjB,GAAS,SAAW,GAEpB,GAAI,IAAa,cACb,GAAa,KACb,GAAoB,KACpB,GAAY,GAAU,UACtB,GAAO,AAAQ,KAAa,KAC5B,GAAe,gBACf,GAAe,gBACf,GAAiB,kBACjB,GAAqB,KACrB,GAAiB,KACjB,GAAY,GAAO,UACnB,GAAa,GAAO,WACpB,GAAU,GAAO,QACjB,GAAU,GAAO,QACjB,GAAkB,GAAO,gBACzB,GAAY,GAAO,UAEvB,YAAmB,EAAS,GAC1B,GAAI,MAAO,IAAY,YAAc,UAAU,SAAW,EACxD,KAAM,IAAI,WAAU;AAAA,sDAGtB,MAAO,IAAI,IAAS,EAAS,GAAS,MAGxC,YAAmB,EAAS,GAC1B,GAAI,CAAC,EACH,KAAM,IAAI,OAAM,wBAElB,GAAI,MAAO,IAAY,YAAc,UAAU,SAAW,EACxD,KAAM,IAAI,WAAU;AAAA,sDAGtB,GAAI,CAAE,gBAAgB,KACpB,MAAO,IAAI,IAAS,EAAS,GAI/B,GAFA,GAAQ,KAAM,EAAS,GAEnB,KAAK,UACP,MAAO,MAET,GAAI,GAAI,KAAK,UAAU,IAAI,OAC3B,KAAK,QAAU,GAAI,OAAM,GACzB,OAAS,GAAI,EAAG,EAAI,EAAG,IACrB,KAAK,SAAS,KAAK,UAAU,IAAI,GAAI,EAAG,IAE1C,KAAK,UAGP,GAAS,UAAU,QAAU,WAE3B,GADA,GAAO,eAAgB,KACnB,KAAK,UACP,GAAI,GAAO,KACX,KAAK,QAAQ,QAAQ,SAAU,EAAU,GACvC,GAAI,GAAM,EAAK,QAAQ,GAAS,OAAO,OAAO,MAC9C,OAAS,KAAK,GACZ,IACE,EAAI,EAAK,SAAS,GAClB,GAAI,GAAO,GAAG,aAAa,EAAG,EAAK,eACnC,EAAI,GAAQ,SACL,GACP,GAAI,EAAG,UAAY,OACjB,EAAI,EAAK,SAAS,IAAM,OAExB,MAAM,MAKhB,GAAO,OAAO,OAIhB,GAAS,UAAU,SAAW,SAAU,EAAS,EAAO,GACtD,GAAO,eAAgB,KAIvB,OADI,GAAI,EACD,MAAO,GAAQ,IAAO,UAC3B,IAKF,GAAI,GACJ,OAAQ,OAED,GAAQ,OACX,KAAK,eAAe,EAAQ,KAAK,KAAM,GACvC,WAEG,GAGH,EAAS,KACT,cAMA,EAAS,EAAQ,MAAM,EAAG,GAAG,KAAK,KAClC,MAGJ,GAAI,GAAS,EAAQ,MAAM,GAGvB,EACJ,AAAI,IAAW,KACb,EAAO,IACA,KAAW,IAAW,GAAW,EAAQ,KAAK,QACjD,EAAC,GAAU,CAAC,GAAW,KACzB,GAAS,IAAM,GACjB,EAAO,GAIT,GAAI,GAAM,KAAK,SAAS,GAGxB,GAAI,IAAgB,KAAM,IAG1B,GAAI,GAAa,EAAO,KAAO,GAAU,SACzC,AAAI,EACF,KAAK,iBAAiB,EAAQ,EAAM,EAAK,EAAQ,EAAO,GAExD,KAAK,gBAAgB,EAAQ,EAAM,EAAK,EAAQ,EAAO,KAI3D,GAAS,UAAU,gBAAkB,SAAU,EAAQ,EAAM,EAAK,EAAQ,EAAO,GAC/E,GAAI,GAAU,KAAK,SAAS,EAAK,GAGjC,GAAI,EAAC,GAWL,OANI,GAAK,EAAO,GACZ,EAAS,CAAC,CAAC,KAAK,UAAU,OAC1B,EAAU,EAAG,MACb,EAAQ,KAAK,KAAO,EAAQ,OAAO,KAAO,IAE1C,EAAiB,GACZ,EAAI,EAAG,EAAI,EAAQ,OAAQ,KAClC,GAAI,GAAI,EAAQ,GAChB,GAAI,EAAE,OAAO,KAAO,KAAO,GACzB,GAAI,GACJ,AAAI,GAAU,CAAC,EACb,EAAI,CAAC,EAAE,MAAM,GAEb,EAAI,EAAE,MAAM,GAEV,GACF,EAAe,KAAK,IAI1B,GAAI,GAAM,EAAe,OAEzB,GAAI,IAAQ,GAQZ,GAAI,EAAO,SAAW,GAAK,CAAC,KAAK,MAAQ,CAAC,KAAK,MAC7C,AAAK,KAAK,QAAQ,IAChB,MAAK,QAAQ,GAAS,OAAO,OAAO,OAEtC,OAAS,GAAI,EAAG,EAAI,EAAK,KACvB,GAAI,GAAI,EAAe,GACvB,AAAI,GACF,CAAI,EAAO,MAAM,MAAQ,IACvB,EAAI,EAAS,IAAM,EAEnB,EAAI,EAAS,GAGb,EAAE,OAAO,KAAO,KAAO,CAAC,KAAK,SAC/B,GAAI,GAAK,KAAK,KAAK,KAAM,IAE3B,KAAK,WAAW,EAAO,GAGzB,OAKF,EAAO,QACP,OAAS,GAAI,EAAG,EAAI,EAAK,KACvB,GAAI,GAAI,EAAe,GACnB,EACJ,AAAI,EACF,EAAa,CAAC,EAAQ,GAEtB,EAAa,CAAC,GAChB,KAAK,SAAS,EAAW,OAAO,GAAS,EAAO,OAKpD,GAAS,UAAU,WAAa,SAAU,EAAO,GAC/C,GAAI,IAAU,KAAM,IAGpB,GAAI,GAAM,KAAK,SAAS,GASxB,GAPI,KAAK,MACP,GAAI,KAAK,MAAM,IAEb,KAAK,UACP,GAAI,GAGF,MAAK,QAAQ,GAAO,IAGxB,GAAI,KAAK,OACP,GAAI,GAAI,KAAK,MAAM,GACnB,GAAI,IAAM,OAAS,MAAM,QAAQ,GAC/B,OAGJ,KAAK,QAAQ,GAAO,GAAK,GAErB,KAAK,MACP,KAAK,MAAM,MAIf,GAAS,UAAU,mBAAqB,SAAU,GAGhD,GAAI,KAAK,OACP,MAAO,MAAK,SAAS,EAAK,IAE5B,GAAI,GACA,EACA,EACJ,IACE,EAAQ,GAAG,UAAU,SACd,GACP,GAAI,EAAG,OAAS,SAEd,MAAO,MAIX,GAAI,GAAQ,GAAS,EAAM,iBAC3B,YAAK,SAAS,GAAO,EAIrB,AAAI,CAAC,GAAS,GAAS,CAAC,EAAM,cAC5B,KAAK,MAAM,GAAO,OAElB,EAAU,KAAK,SAAS,EAAK,IAExB,GAGT,GAAS,UAAU,SAAW,SAAU,EAAK,GAC3C,GAAI,GAEJ,GAAI,GAAc,CAAC,GAAQ,KAAK,SAAU,GACxC,MAAO,MAAK,mBAAmB,GAEjC,GAAI,GAAQ,KAAK,MAAO,IACtB,GAAI,GAAI,KAAK,MAAM,GACnB,GAAI,CAAC,GAAK,IAAM,OACd,MAAO,MAET,GAAI,MAAM,QAAQ,GAChB,MAAO,GAGX,IACE,MAAO,MAAK,gBAAgB,EAAK,GAAG,YAAY,UACzC,GACP,YAAK,cAAc,EAAK,GACjB,OAIX,GAAS,UAAU,gBAAkB,SAAU,EAAK,GAIlD,GAAI,CAAC,KAAK,MAAQ,CAAC,KAAK,KACtB,OAAS,GAAI,EAAG,EAAI,EAAQ,OAAQ,KAClC,GAAI,GAAI,EAAQ,GAChB,AAAI,IAAQ,IACV,EAAI,EAAM,EAEV,EAAI,EAAM,IAAM,EAClB,KAAK,MAAM,GAAK,GAIpB,YAAK,MAAM,GAAO,EAGX,GAGT,GAAS,UAAU,cAAgB,SAAU,EAAG,GAE9C,OAAQ,EAAG,UACJ,cACA,UACH,GAAI,GAAM,KAAK,SAAS,GAExB,GADA,KAAK,MAAM,GAAO,OACd,IAAQ,KAAK,QACf,GAAI,GAAQ,GAAI,OAAM,EAAG,KAAO,gBAAkB,KAAK,KACvD,QAAM,KAAO,KAAK,IAClB,EAAM,KAAO,EAAG,KACV,EAER,UAEG,aACA,YACA,mBACA,UACH,KAAK,MAAM,KAAK,SAAS,IAAM,GAC/B,cAIA,GADA,KAAK,MAAM,KAAK,SAAS,IAAM,GAC3B,KAAK,OACP,KAAM,GACR,AAAK,KAAK,QACR,QAAQ,MAAM,aAAc,GAC9B,QAIN,GAAS,UAAU,iBAAmB,SAAU,EAAQ,EAAM,EAAK,EAAQ,EAAO,GAEhF,GAAI,GAAU,KAAK,SAAS,EAAK,GAIjC,GAAI,EAAC,GAKL,GAAI,GAAwB,EAAO,MAAM,GACrC,EAAS,EAAS,CAAE,GAAW,GAC/B,EAAa,EAAO,OAAO,GAG/B,KAAK,SAAS,EAAY,EAAO,IAEjC,GAAI,GAAM,EAAQ,OACd,EAAQ,KAAK,SAAS,GAG1B,GAAI,KAAS,GAGb,OAAS,GAAI,EAAG,EAAI,EAAK,KACvB,GAAI,GAAI,EAAQ,GAChB,GAAI,IAAE,OAAO,KAAO,KAAO,CAAC,KAAK,MAIjC,GAAI,GAAU,EAAO,OAAO,EAAQ,GAAI,GACxC,KAAK,SAAS,EAAS,EAAO,IAE9B,GAAI,GAAQ,EAAO,OAAO,EAAQ,GAAI,GACtC,KAAK,SAAS,EAAO,EAAO,QAIhC,GAAS,UAAU,eAAiB,SAAU,EAAQ,GAGpD,GAAI,GAAS,KAAK,MAAM,GAMxB,GAJK,KAAK,QAAQ,IAChB,MAAK,QAAQ,GAAS,OAAO,OAAO,OAGlC,EAAC,GAGL,GAAI,GAAU,GAAW,IAAW,CAAC,KAAK,SACxC,GAAI,GAAQ,UAAU,KAAK,GAC3B,AAAI,EAAO,OAAO,KAAO,IACvB,EAAS,GAAK,KAAK,KAAK,KAAM,GAE9B,GAAS,GAAK,QAAQ,KAAK,KAAM,GAC7B,GACF,IAAU,MAIhB,AAAI,QAAQ,WAAa,SACvB,GAAS,EAAO,QAAQ,MAAO,MAGjC,KAAK,WAAW,EAAO,KAIzB,GAAS,UAAU,MAAQ,SAAU,GACnC,GAAI,GAAM,KAAK,SAAS,GACpB,EAAU,EAAE,MAAM,MAAQ,IAE9B,GAAI,EAAE,OAAS,KAAK,UAClB,MAAO,GAET,GAAI,CAAC,KAAK,MAAQ,GAAQ,KAAK,MAAO,IACpC,GAAI,GAAI,KAAK,MAAM,GAMnB,GAJI,MAAM,QAAQ,IAChB,GAAI,OAGF,CAAC,GAAW,IAAM,MACpB,MAAO,GAET,GAAI,GAAW,IAAM,OACnB,MAAO,GAMX,GAAI,GACA,EAAO,KAAK,UAAU,GAC1B,GAAI,CAAC,GACH,GAAI,GACJ,IACE,EAAQ,GAAG,UAAU,SACd,GACP,GAAI,GAAO,GAAG,OAAS,UAAY,EAAG,OAAS,WAC7C,YAAK,UAAU,GAAO,GACf,GAIX,GAAI,GAAS,EAAM,iBACjB,IACE,EAAO,GAAG,SAAS,SACZ,GACP,EAAO,MAGT,GAAO,EAIX,KAAK,UAAU,GAAO,EAEtB,GAAI,GAAI,GAMR,MALI,IACF,GAAI,EAAK,cAAgB,MAAQ,QAEnC,KAAK,MAAM,GAAO,KAAK,MAAM,IAAQ,EAEjC,GAAW,IAAM,OACZ,GAEF,GAGT,GAAS,UAAU,MAAQ,SAAU,GACnC,MAAO,IAAO,KAAK,KAAM,IAG3B,GAAS,UAAU,SAAW,SAAU,GACtC,MAAO,IAAO,QAAQ,KAAM,MCpe9B,mBAKA,GAAO,QAAU,GACjB,YAAiB,EAAI,GACnB,GAAI,GAAM,EAAI,MAAO,IAAO,GAAI,GAEhC,GAAI,MAAO,IAAO,WAChB,KAAM,IAAI,WAAU,yBAEtB,cAAO,KAAK,GAAI,QAAQ,SAAU,GAChC,EAAQ,GAAK,EAAG,KAGX,EAEP,aAEE,OADI,GAAO,GAAI,OAAM,UAAU,QACtB,EAAI,EAAG,EAAI,EAAK,OAAQ,IAC/B,EAAK,GAAK,UAAU,GAEtB,GAAI,GAAM,EAAG,MAAM,KAAM,GACrB,EAAK,EAAK,EAAK,OAAO,GAC1B,MAAI,OAAO,IAAQ,YAAc,IAAQ,GACvC,OAAO,KAAK,GAAI,QAAQ,SAAU,GAChC,EAAI,GAAK,EAAG,KAGT,MC9BX,sBAAI,IAAiB,KACrB,GAAO,QAAU,GAAO,IACxB,GAAO,QAAQ,OAAS,GAAO,IAE/B,GAAK,MAAQ,GAAK,WAChB,OAAO,eAAe,SAAS,UAAW,OAAQ,CAChD,MAAO,WACL,MAAO,IAAK,OAEd,aAAc,KAGhB,OAAO,eAAe,SAAS,UAAW,aAAc,CACtD,MAAO,WACL,MAAO,IAAW,OAEpB,aAAc,OAIlB,YAAe,GACb,GAAI,GAAI,WACN,MAAI,GAAE,OAAe,EAAE,MACvB,GAAE,OAAS,GACJ,EAAE,MAAQ,EAAG,MAAM,KAAM,aAElC,SAAE,OAAS,GACJ,EAGT,YAAqB,GACnB,GAAI,GAAI,WACN,GAAI,EAAE,OACJ,KAAM,IAAI,OAAM,EAAE,WACpB,SAAE,OAAS,GACJ,EAAE,MAAQ,EAAG,MAAM,KAAM,YAE9B,EAAO,EAAG,MAAQ,+BACtB,SAAE,UAAY,EAAO,sCACrB,EAAE,OAAS,GACJ,KCxCT,sBAAI,IAAiB,KACjB,GAAO,OAAO,OAAO,MACrB,GAAe,KAEnB,GAAO,QAAU,GAAO,IAExB,YAAmB,EAAK,GACtB,MAAI,IAAK,GACP,IAAK,GAAK,KAAK,GACR,MAEP,IAAK,GAAO,CAAC,GACN,GAAQ,IAInB,YAAkB,GAChB,MAAO,IAAK,aACV,GAAI,GAAM,GAAK,GACX,EAAM,EAAI,OACV,EAAO,GAAM,WAQjB,IACE,OAAS,GAAI,EAAG,EAAI,EAAK,IACvB,EAAI,GAAG,MAAM,KAAM,WAGrB,AAAI,EAAI,OAAS,EAGf,GAAI,OAAO,EAAG,GACd,QAAQ,SAAS,WACf,EAAI,MAAM,KAAM,MAGlB,MAAO,IAAK,MAMpB,YAAgB,GAId,OAHI,GAAS,EAAK,OACd,EAAQ,GAEH,EAAI,EAAG,EAAI,EAAQ,IAAK,EAAM,GAAK,EAAK,GACjD,MAAO,MCpDT,mBAwCA,GAAO,QAAU,GAEjB,GAAI,IAAa,cACb,GAAa,KACb,GAAoB,KACpB,GAAY,GAAU,UACtB,GAAmB,KACnB,GAAK,AAAQ,kBAAU,aACvB,GAAe,gBACf,GAAiB,kBACjB,GAAqB,KACrB,GAAmB,KACnB,GAAiB,KACjB,GAAY,GAAO,UACnB,GAAa,GAAO,WACpB,GAAU,GAAO,QACjB,GAAU,GAAO,QACjB,GAAmB,KACnB,GAAe,gBACf,GAAkB,GAAO,gBACzB,GAAY,GAAO,UAEnB,GAAe,KAEnB,YAAe,EAAS,EAAS,GAI/B,GAHI,MAAO,IAAY,YAAY,GAAK,EAAS,EAAU,IACtD,GAAS,GAAU,IAEpB,EAAQ,MACV,GAAI,EACF,KAAM,IAAI,WAAU,kCACtB,MAAO,IAAS,EAAS,GAG3B,MAAO,IAAI,GAAK,EAAS,EAAS,GAGpC,GAAK,KAAO,GACZ,GAAI,IAAW,GAAK,SAAW,GAAS,SAGxC,GAAK,KAAO,GAEZ,YAAiB,EAAQ,GACvB,GAAI,IAAQ,MAAQ,MAAO,IAAQ,SACjC,MAAO,GAKT,OAFI,GAAO,OAAO,KAAK,GACnB,EAAI,EAAK,OACN,KACL,EAAO,EAAK,IAAM,EAAI,EAAK,IAE7B,MAAO,GAGT,GAAK,SAAW,SAAU,EAAS,GACjC,GAAI,GAAU,GAAO,GAAI,GACzB,EAAQ,UAAY,GAEpB,GAAI,GAAI,GAAI,GAAK,EAAS,GACtB,EAAM,EAAE,UAAU,IAEtB,GAAI,CAAC,EACH,MAAO,GAET,GAAI,EAAI,OAAS,EACf,MAAO,GAET,OAAS,GAAI,EAAG,EAAI,EAAI,GAAG,OAAQ,IACjC,GAAI,MAAO,GAAI,GAAG,IAAO,SACvB,MAAO,GAGX,MAAO,IAGT,GAAK,KAAO,EACZ,GAAS,EAAM,IACf,WAAe,EAAS,EAAS,GAM/B,GALI,MAAO,IAAY,YACrB,GAAK,EACL,EAAU,MAGR,GAAW,EAAQ,MACrB,GAAI,EACF,KAAM,IAAI,WAAU,kCACtB,MAAO,IAAI,IAAS,EAAS,GAG/B,GAAI,CAAE,gBAAgB,IACpB,MAAO,IAAI,GAAK,EAAS,EAAS,GAEpC,GAAQ,KAAM,EAAS,GACvB,KAAK,aAAe,GAGpB,GAAI,GAAI,KAAK,UAAU,IAAI,OAM3B,KAAK,QAAU,GAAI,OAAM,GAErB,MAAO,IAAO,YAChB,GAAK,GAAK,GACV,KAAK,GAAG,QAAS,GACjB,KAAK,GAAG,MAAO,SAAU,GACvB,EAAG,KAAM,MAIb,GAAI,GAAO,KAOX,GANA,KAAK,YAAc,EAEnB,KAAK,WAAa,GAClB,KAAK,cAAgB,GACrB,KAAK,OAAS,GAEV,KAAK,UACP,MAAO,MAET,GAAI,IAAM,EACR,MAAO,KAGT,OADI,GAAO,GACF,EAAI,EAAG,EAAI,EAAG,IACrB,KAAK,SAAS,KAAK,UAAU,IAAI,GAAI,EAAG,GAAO,GAEjD,EAAO,GAEP,aACE,EAAE,EAAK,YACH,EAAK,aAAe,GACtB,CAAI,EACF,QAAQ,SAAS,WACf,EAAK,YAGP,EAAK,YAMb,EAAK,UAAU,QAAU,WAEvB,GADA,GAAO,eAAgB,IACnB,MAAK,SAGT,GAAI,KAAK,UAAY,CAAC,KAAK,aACzB,MAAO,MAAK,YAEd,GAAO,OAAO,MACd,KAAK,KAAK,MAAO,KAAK,SAGxB,EAAK,UAAU,UAAY,WACzB,GAAI,KAAK,aACP,OAEF,KAAK,aAAe,GAEpB,GAAI,GAAI,KAAK,QAAQ,OACrB,GAAI,IAAM,EACR,MAAO,MAAK,UAGd,OADI,GAAO,KACF,EAAI,EAAG,EAAI,KAAK,QAAQ,OAAQ,IACvC,KAAK,aAAa,EAAG,GAEvB,aACE,AAAI,EAAE,GAAM,GACV,EAAK,YAIX,EAAK,UAAU,aAAe,SAAU,EAAO,GAC7C,GAAI,GAAW,KAAK,QAAQ,GAC5B,GAAI,CAAC,EACH,MAAO,KAET,GAAI,GAAQ,OAAO,KAAK,GACpB,EAAO,KACP,EAAI,EAAM,OAEd,GAAI,IAAM,EACR,MAAO,KAET,GAAI,GAAM,KAAK,QAAQ,GAAS,OAAO,OAAO,MAC9C,EAAM,QAAQ,SAAU,EAAG,GAIzB,EAAI,EAAK,SAAS,GAClB,GAAG,SAAS,EAAG,EAAK,cAAe,SAAU,EAAI,GAC/C,AAAK,EAEA,AAAI,EAAG,UAAY,OACtB,EAAI,GAAK,GAET,EAAK,KAAK,QAAS,GAJnB,EAAI,GAAQ,GAMV,EAAE,GAAM,GACV,GAAK,QAAQ,GAAS,EACtB,UAMR,EAAK,UAAU,MAAQ,SAAU,GAC/B,MAAO,IAAO,KAAK,KAAM,IAG3B,EAAK,UAAU,SAAW,SAAU,GAClC,MAAO,IAAO,QAAQ,KAAM,IAG9B,EAAK,UAAU,MAAQ,WACrB,KAAK,QAAU,GACf,KAAK,KAAK,UAGZ,EAAK,UAAU,MAAQ,WACrB,AAAK,KAAK,QACR,MAAK,OAAS,GACd,KAAK,KAAK,WAId,EAAK,UAAU,OAAS,WACtB,GAAI,KAAK,QAGP,GAFA,KAAK,KAAK,UACV,KAAK,OAAS,GACV,KAAK,WAAW,QAClB,GAAI,GAAK,KAAK,WAAW,MAAM,GAC/B,KAAK,WAAW,OAAS,EACzB,OAAS,GAAI,EAAG,EAAI,EAAG,OAAQ,KAC7B,GAAI,GAAI,EAAG,GACX,KAAK,WAAW,EAAE,GAAI,EAAE,KAG5B,GAAI,KAAK,cAAc,QACrB,GAAI,GAAK,KAAK,cAAc,MAAM,GAClC,KAAK,cAAc,OAAS,EAC5B,OAAS,GAAI,EAAG,EAAI,EAAG,OAAQ,KAC7B,GAAI,GAAI,EAAG,GACX,KAAK,cACL,KAAK,SAAS,EAAE,GAAI,EAAE,GAAI,EAAE,GAAI,EAAE,QAM1C,EAAK,UAAU,SAAW,SAAU,EAAS,EAAO,EAAY,GAI9D,GAHA,GAAO,eAAgB,IACvB,GAAO,MAAO,IAAO,YAEjB,MAAK,SAIT,GADA,KAAK,cACD,KAAK,QACP,KAAK,cAAc,KAAK,CAAC,EAAS,EAAO,EAAY,IACrD,OAOF,OADI,GAAI,EACD,MAAO,GAAQ,IAAO,UAC3B,IAKF,GAAI,GACJ,OAAQ,OAED,GAAQ,OACX,KAAK,eAAe,EAAQ,KAAK,KAAM,EAAO,GAC9C,WAEG,GAGH,EAAS,KACT,cAMA,EAAS,EAAQ,MAAM,EAAG,GAAG,KAAK,KAClC,MAGJ,GAAI,GAAS,EAAQ,MAAM,GAGvB,EACJ,AAAI,IAAW,KACb,EAAO,IACA,KAAW,IAAW,GAAW,EAAQ,KAAK,QACjD,EAAC,GAAU,CAAC,GAAW,KACzB,GAAS,IAAM,GACjB,EAAO,GAIT,GAAI,GAAM,KAAK,SAAS,GAGxB,GAAI,GAAgB,KAAM,GACxB,MAAO,KAET,GAAI,GAAa,EAAO,KAAO,GAAU,SACzC,AAAI,EACF,KAAK,iBAAiB,EAAQ,EAAM,EAAK,EAAQ,EAAO,EAAY,GAEpE,KAAK,gBAAgB,EAAQ,EAAM,EAAK,EAAQ,EAAO,EAAY,KAGvE,EAAK,UAAU,gBAAkB,SAAU,EAAQ,EAAM,EAAK,EAAQ,EAAO,EAAY,GACvF,GAAI,GAAO,KACX,KAAK,SAAS,EAAK,EAAY,SAAU,EAAI,GAC3C,MAAO,GAAK,iBAAiB,EAAQ,EAAM,EAAK,EAAQ,EAAO,EAAY,EAAS,MAIxF,EAAK,UAAU,iBAAmB,SAAU,EAAQ,EAAM,EAAK,EAAQ,EAAO,EAAY,EAAS,GAGjG,GAAI,CAAC,EACH,MAAO,KAUT,OANI,GAAK,EAAO,GACZ,EAAS,CAAC,CAAC,KAAK,UAAU,OAC1B,EAAU,EAAG,MACb,EAAQ,KAAK,KAAO,EAAQ,OAAO,KAAO,IAE1C,EAAiB,GACZ,EAAI,EAAG,EAAI,EAAQ,OAAQ,KAClC,GAAI,GAAI,EAAQ,GAChB,GAAI,EAAE,OAAO,KAAO,KAAO,GACzB,GAAI,GACJ,AAAI,GAAU,CAAC,EACb,EAAI,CAAC,EAAE,MAAM,GAEb,EAAI,EAAE,MAAM,GAEV,GACF,EAAe,KAAK,IAM1B,GAAI,GAAM,EAAe,OAEzB,GAAI,IAAQ,EACV,MAAO,KAOT,GAAI,EAAO,SAAW,GAAK,CAAC,KAAK,MAAQ,CAAC,KAAK,MAC7C,AAAK,KAAK,QAAQ,IAChB,MAAK,QAAQ,GAAS,OAAO,OAAO,OAEtC,OAAS,GAAI,EAAG,EAAI,EAAK,KACvB,GAAI,GAAI,EAAe,GACvB,AAAI,GACF,CAAI,IAAW,IACb,EAAI,EAAS,IAAM,EAEnB,EAAI,EAAS,GAGb,EAAE,OAAO,KAAO,KAAO,CAAC,KAAK,SAC/B,GAAI,GAAK,KAAK,KAAK,KAAM,IAE3B,KAAK,WAAW,EAAO,GAGzB,MAAO,KAKT,EAAO,QACP,OAAS,GAAI,EAAG,EAAI,EAAK,KACvB,GAAI,GAAI,EAAe,GACnB,EACJ,AAAI,GACF,CAAI,IAAW,IACb,EAAI,EAAS,IAAM,EAEnB,EAAI,EAAS,GAEjB,KAAK,SAAS,CAAC,GAAG,OAAO,GAAS,EAAO,EAAY,GAEvD,KAGF,EAAK,UAAU,WAAa,SAAU,EAAO,GAC3C,GAAI,MAAK,SAGL,IAAU,KAAM,IAGpB,GAAI,KAAK,QACP,KAAK,WAAW,KAAK,CAAC,EAAO,IAC7B,OAGF,GAAI,GAAM,GAAW,GAAK,EAAI,KAAK,SAAS,GAQ5C,GANI,KAAK,MACP,GAAI,KAAK,MAAM,IAEb,KAAK,UACP,GAAI,GAEF,MAAK,QAAQ,GAAO,IAGxB,GAAI,KAAK,OACP,GAAI,GAAI,KAAK,MAAM,GACnB,GAAI,IAAM,OAAS,MAAM,QAAQ,GAC/B,OAGJ,KAAK,QAAQ,GAAO,GAAK,GAEzB,GAAI,GAAK,KAAK,UAAU,GACxB,AAAI,GACF,KAAK,KAAK,OAAQ,EAAG,GAEvB,KAAK,KAAK,QAAS,MAGrB,EAAK,UAAU,mBAAqB,SAAU,EAAK,GACjD,GAAI,KAAK,QACP,OAIF,GAAI,KAAK,OACP,MAAO,MAAK,SAAS,EAAK,GAAO,GAEnC,GAAI,GAAW,UAAY,EACvB,EAAO,KACP,EAAU,GAAS,EAAU,GAEjC,AAAI,GACF,GAAG,MAAM,EAAK,GAEhB,WAAmB,EAAI,GACrB,GAAI,GAAM,EAAG,OAAS,SACpB,MAAO,KAET,GAAI,GAAQ,GAAS,EAAM,iBAC3B,EAAK,SAAS,GAAO,EAIrB,AAAI,CAAC,GAAS,GAAS,CAAC,EAAM,cAC5B,GAAK,MAAM,GAAO,OAClB,KAEA,EAAK,SAAS,EAAK,GAAO,KAIhC,EAAK,UAAU,SAAW,SAAU,EAAK,EAAY,GACnD,GAAI,MAAK,SAGT,GAAK,GAAS,YAAY,EAAI,KAAK,EAAY,GAC3C,EAAC,IAIL,GAAI,GAAc,CAAC,GAAQ,KAAK,SAAU,GACxC,MAAO,MAAK,mBAAmB,EAAK,GAEtC,GAAI,GAAQ,KAAK,MAAO,IACtB,GAAI,GAAI,KAAK,MAAM,GACnB,GAAI,CAAC,GAAK,IAAM,OACd,MAAO,KAET,GAAI,MAAM,QAAQ,GAChB,MAAO,GAAG,KAAM,GAGpB,GAAI,GAAO,KACX,GAAG,QAAQ,EAAK,GAAU,KAAM,EAAK,MAGvC,YAAoB,EAAM,EAAK,GAC7B,MAAO,UAAU,EAAI,GACnB,AAAI,EACF,EAAK,cAAc,EAAK,EAAI,GAE5B,EAAK,gBAAgB,EAAK,EAAS,IAIzC,EAAK,UAAU,gBAAkB,SAAU,EAAK,EAAS,GACvD,GAAI,MAAK,SAMT,GAAI,CAAC,KAAK,MAAQ,CAAC,KAAK,KACtB,OAAS,GAAI,EAAG,EAAI,EAAQ,OAAQ,KAClC,GAAI,GAAI,EAAQ,GAChB,AAAI,IAAQ,IACV,EAAI,EAAM,EAEV,EAAI,EAAM,IAAM,EAClB,KAAK,MAAM,GAAK,GAIpB,YAAK,MAAM,GAAO,EACX,EAAG,KAAM,KAGlB,EAAK,UAAU,cAAgB,SAAU,EAAG,EAAI,GAC9C,GAAI,MAAK,SAIT,OAAQ,EAAG,UACJ,cACA,UACH,GAAI,GAAM,KAAK,SAAS,GAExB,GADA,KAAK,MAAM,GAAO,OACd,IAAQ,KAAK,QACf,GAAI,GAAQ,GAAI,OAAM,EAAG,KAAO,gBAAkB,KAAK,KACvD,EAAM,KAAO,KAAK,IAClB,EAAM,KAAO,EAAG,KAChB,KAAK,KAAK,QAAS,GACnB,KAAK,QAEP,UAEG,aACA,YACA,mBACA,UACH,KAAK,MAAM,KAAK,SAAS,IAAM,GAC/B,cAGA,KAAK,MAAM,KAAK,SAAS,IAAM,GAC3B,KAAK,QACP,MAAK,KAAK,QAAS,GAGnB,KAAK,SAEF,KAAK,QACR,QAAQ,MAAM,aAAc,GAC9B,MAGJ,MAAO,OAGT,EAAK,UAAU,iBAAmB,SAAU,EAAQ,EAAM,EAAK,EAAQ,EAAO,EAAY,GACxF,GAAI,GAAO,KACX,KAAK,SAAS,EAAK,EAAY,SAAU,EAAI,GAC3C,EAAK,kBAAkB,EAAQ,EAAM,EAAK,EAAQ,EAAO,EAAY,EAAS,MAKlF,EAAK,UAAU,kBAAoB,SAAU,EAAQ,EAAM,EAAK,EAAQ,EAAO,EAAY,EAAS,GAKlG,GAAI,CAAC,EACH,MAAO,KAIT,GAAI,GAAwB,EAAO,MAAM,GACrC,EAAS,EAAS,CAAE,GAAW,GAC/B,EAAa,EAAO,OAAO,GAG/B,KAAK,SAAS,EAAY,EAAO,GAAO,GAExC,GAAI,GAAQ,KAAK,SAAS,GACtB,EAAM,EAAQ,OAGlB,GAAI,GAAS,EACX,MAAO,KAET,OAAS,GAAI,EAAG,EAAI,EAAK,KACvB,GAAI,GAAI,EAAQ,GAChB,GAAI,IAAE,OAAO,KAAO,KAAO,CAAC,KAAK,MAIjC,GAAI,GAAU,EAAO,OAAO,EAAQ,GAAI,GACxC,KAAK,SAAS,EAAS,EAAO,GAAM,GAEpC,GAAI,GAAQ,EAAO,OAAO,EAAQ,GAAI,GACtC,KAAK,SAAS,EAAO,EAAO,GAAM,IAGpC,KAGF,EAAK,UAAU,eAAiB,SAAU,EAAQ,EAAO,GAGvD,GAAI,GAAO,KACX,KAAK,MAAM,EAAQ,SAAU,EAAI,GAC/B,EAAK,gBAAgB,EAAQ,EAAO,EAAI,EAAQ,MAGpD,EAAK,UAAU,gBAAkB,SAAU,EAAQ,EAAO,EAAI,EAAQ,GAQpE,GAJK,KAAK,QAAQ,IAChB,MAAK,QAAQ,GAAS,OAAO,OAAO,OAGlC,CAAC,EACH,MAAO,KAET,GAAI,GAAU,GAAW,IAAW,CAAC,KAAK,SACxC,GAAI,GAAQ,UAAU,KAAK,GAC3B,AAAI,EAAO,OAAO,KAAO,IACvB,EAAS,GAAK,KAAK,KAAK,KAAM,GAE9B,GAAS,GAAK,QAAQ,KAAK,KAAM,GAC7B,GACF,IAAU,MAIhB,AAAI,QAAQ,WAAa,SACvB,GAAS,EAAO,QAAQ,MAAO,MAGjC,KAAK,WAAW,EAAO,GACvB,KAIF,EAAK,UAAU,MAAQ,SAAU,EAAG,GAClC,GAAI,GAAM,KAAK,SAAS,GACpB,EAAU,EAAE,MAAM,MAAQ,IAE9B,GAAI,EAAE,OAAS,KAAK,UAClB,MAAO,KAET,GAAI,CAAC,KAAK,MAAQ,GAAQ,KAAK,MAAO,IACpC,GAAI,GAAI,KAAK,MAAM,GAMnB,GAJI,MAAM,QAAQ,IAChB,GAAI,OAGF,CAAC,GAAW,IAAM,MACpB,MAAO,GAAG,KAAM,GAElB,GAAI,GAAW,IAAM,OACnB,MAAO,KAMX,GAAI,GACA,EAAO,KAAK,UAAU,GAC1B,GAAI,IAAS,QACX,GAAI,IAAS,GACX,MAAO,GAAG,KAAM,GAEhB,GAAI,GAAO,EAAK,cAAgB,MAAQ,OACxC,MAAI,IAAW,IAAS,OACf,IAEA,EAAG,KAAM,EAAM,GAI5B,GAAI,GAAO,KACP,EAAS,GAAS,SAAW,EAAK,GACtC,AAAI,GACF,GAAG,MAAM,EAAK,GAEhB,WAAmB,EAAI,GACrB,GAAI,GAAS,EAAM,iBAGjB,MAAO,IAAG,KAAK,EAAK,SAAU,EAAI,GAChC,AAAI,EACF,EAAK,OAAO,EAAG,EAAK,KAAM,EAAO,GAEjC,EAAK,OAAO,EAAG,EAAK,EAAI,EAAM,KAGlC,EAAK,OAAO,EAAG,EAAK,EAAI,EAAO,KAKrC,EAAK,UAAU,OAAS,SAAU,EAAG,EAAK,EAAI,EAAM,GAClD,GAAI,GAAO,GAAG,OAAS,UAAY,EAAG,OAAS,WAC7C,YAAK,UAAU,GAAO,GACf,IAGT,GAAI,GAAU,EAAE,MAAM,MAAQ,IAG9B,GAFA,KAAK,UAAU,GAAO,EAElB,EAAI,MAAM,MAAQ,KAAO,GAAQ,CAAC,EAAK,cACzC,MAAO,GAAG,KAAM,GAAO,GAEzB,GAAI,GAAI,GAKR,MAJI,IACF,GAAI,EAAK,cAAgB,MAAQ,QACnC,KAAK,MAAM,GAAO,KAAK,MAAM,IAAQ,EAEjC,GAAW,IAAM,OACZ,IAEF,EAAG,KAAM,EAAG,MCpxBrB,sBAAM,IAAiB,kBACjB,GAAe,gBACf,GAAa,cACf,GACJ,IACE,GAAe,WACR,IAIT,GAAM,IAAkB,CACtB,OAAQ,GACR,OAAQ,IAIN,GAAU,EAER,GAAa,QAAQ,WAAa,QAElC,GAAW,IAoBf,GAXA,AARgB,CACd,SACA,QACA,OACA,QACA,QACA,WAEM,QAAQ,IACd,EAAQ,GAAK,EAAQ,IAAM,GAAG,GAC9B,EAAI,EAAI,OACR,EAAQ,GAAK,EAAQ,IAAM,GAAG,KAGhC,EAAQ,aAAe,EAAQ,cAAgB,EAC/C,EAAQ,WAAa,EAAQ,YAAc,IACvC,EAAQ,OAAS,IACnB,GAAQ,YAAc,IAEpB,EAAQ,cAAgB,IAAQ,KAAS,OAC3C,KAAM,OAAM,8EAEd,EAAQ,YAAc,EAAQ,aAAe,GAC7C,EAAQ,KAAO,EAAQ,MAAQ,IAG3B,GAAS,CAAC,EAAG,EAAS,KAC1B,AAAI,MAAO,IAAY,YACrB,GAAK,EACL,EAAU,IAGZ,GAAO,EAAG,wBACV,GAAO,MAAM,MAAO,GAAG,SAAU,mCACjC,GAAO,MAAM,MAAO,GAAI,WAAY,sCACpC,GAAO,EAAS,6CAChB,GAAO,MAAM,MAAO,GAAS,SAAU,oCAEvC,GAAS,GAET,GAAI,GAAY,EACZ,EAAW,KACX,EAAI,EAEF,EAAO,AAAC,IACZ,EAAW,GAAY,EACnB,EAAE,GAAM,GACV,EAAG,IAGD,EAAY,CAAC,EAAI,KACrB,GAAI,EACF,MAAO,GAAG,GAGZ,GADA,EAAI,EAAQ,OACR,IAAM,EACR,MAAO,KAET,EAAQ,QAAQ,IACd,GAAM,GAAK,AAAC,IACV,GAAI,GACF,GAAK,GAAG,OAAS,SAAW,EAAG,OAAS,aAAe,EAAG,OAAS,UAC/D,EAAY,EAAQ,aACtB,WAEO,WAAW,IAAM,GAAQ,EAAG,EAAS,GAAK,EAAY,KAI/D,GAAI,EAAG,OAAS,UAAY,GAAU,EAAQ,WAC5C,MAAO,YAAW,IAAM,GAAQ,EAAG,EAAS,GAAK,MAInD,AAAI,EAAG,OAAS,UAAU,GAAK,MAGjC,GAAU,EACV,EAAK,IAEP,GAAQ,EAAG,EAAS,MAIxB,GAAI,EAAQ,aAAe,CAAC,GAAK,SAAS,GACxC,MAAO,GAAU,KAAM,CAAC,IAE1B,EAAQ,MAAM,EAAG,CAAC,EAAI,KACpB,GAAI,CAAC,EACH,MAAO,GAAU,KAAM,CAAC,IAE1B,GAAK,EAAG,EAAQ,KAAM,MAgBpB,GAAU,CAAC,EAAG,EAAS,KAC3B,GAAO,GACP,GAAO,GACP,GAAO,MAAO,IAAO,YAIrB,EAAQ,MAAM,EAAG,CAAC,EAAI,KACpB,GAAI,GAAM,EAAG,OAAS,SACpB,MAAO,GAAG,MAMZ,GAHI,GAAM,EAAG,OAAS,SAAW,IAC/B,GAAY,EAAG,EAAS,EAAI,GAE1B,GAAM,EAAG,cACX,MAAO,IAAM,EAAG,EAAS,EAAI,GAE/B,EAAQ,OAAO,EAAG,IAChB,GAAI,GACF,GAAI,EAAG,OAAS,SACd,MAAO,GAAG,MACZ,GAAI,EAAG,OAAS,QACd,MAAQ,IACJ,GAAY,EAAG,EAAS,EAAI,GAC5B,GAAM,EAAG,EAAS,EAAI,GAC5B,GAAI,EAAG,OAAS,SACd,MAAO,IAAM,EAAG,EAAS,EAAI,GAEjC,MAAO,GAAG,QAKV,GAAc,CAAC,EAAG,EAAS,EAAI,KACnC,GAAO,GACP,GAAO,GACP,GAAO,MAAO,IAAO,YAErB,EAAQ,MAAM,EAAG,IAAO,IACtB,AAAI,EACF,EAAG,EAAI,OAAS,SAAW,KAAO,GAElC,EAAQ,KAAK,EAAG,CAAC,EAAK,KACpB,AAAI,EACF,EAAG,EAAI,OAAS,SAAW,KAAO,GAC/B,AAAI,EAAM,cACb,GAAM,EAAG,EAAS,EAAI,GAEtB,EAAQ,OAAO,EAAG,QAKtB,GAAkB,CAAC,EAAG,EAAS,KACnC,GAAO,GACP,GAAO,GAEP,IACE,EAAQ,UAAU,EAAG,WACd,GACP,GAAI,EAAI,OAAS,SACf,OAEA,KAAM,GAGV,GAAI,GACJ,IACE,EAAQ,EAAQ,SAAS,SAClB,GACP,GAAI,EAAI,OAAS,SACf,OAEA,KAAM,GAGV,AAAI,EAAM,cACR,GAAU,EAAG,EAAS,GAEtB,EAAQ,WAAW,IAGjB,GAAQ,CAAC,EAAG,EAAS,EAAY,KACrC,GAAO,GACP,GAAO,GACP,GAAO,MAAO,IAAO,YAKrB,EAAQ,MAAM,EAAG,IACf,AAAI,GAAO,GAAG,OAAS,aAAe,EAAG,OAAS,UAAY,EAAG,OAAS,SACxE,GAAO,EAAG,EAAS,GAChB,AAAI,GAAM,EAAG,OAAS,UACzB,EAAG,GAEH,EAAG,MAIH,GAAS,CAAC,EAAG,EAAS,KAC1B,GAAO,GACP,GAAO,GACP,GAAO,MAAO,IAAO,YAErB,EAAQ,QAAQ,EAAG,CAAC,EAAI,KACtB,GAAI,EACF,MAAO,GAAG,GACZ,GAAI,GAAI,EAAM,OACd,GAAI,IAAM,EACR,MAAO,GAAQ,MAAM,EAAG,GAC1B,GAAI,GACJ,EAAM,QAAQ,IACZ,GAAO,GAAK,KAAK,EAAG,GAAI,EAAS,IAC/B,GAAI,IAEJ,GAAI,EACF,MAAO,GAAG,EAAW,GACvB,AAAI,EAAE,GAAM,GACV,EAAQ,MAAM,EAAG,WASrB,GAAa,CAAC,EAAG,KACrB,EAAU,GAAW,GACrB,GAAS,GAET,GAAO,EAAG,wBACV,GAAO,MAAM,MAAO,GAAG,SAAU,mCACjC,GAAO,EAAS,2BAChB,GAAO,MAAM,MAAO,GAAS,SAAU,oCAEvC,GAAI,GAEJ,GAAI,EAAQ,aAAe,CAAC,GAAK,SAAS,GACxC,EAAU,CAAC,OAEX,KACE,EAAQ,UAAU,GAClB,EAAU,CAAC,SACJ,GACP,EAAU,GAAK,KAAK,EAAG,EAAQ,MAInC,GAAI,EAAC,EAAQ,OAGb,OAAS,GAAI,EAAG,EAAI,EAAQ,OAAQ,KAClC,GAAM,GAAI,EAAQ,GAEd,EACJ,IACE,EAAK,EAAQ,UAAU,SAChB,GACP,GAAI,EAAG,OAAS,SACd,OAGF,AAAI,EAAG,OAAS,SAAW,IACzB,GAAgB,EAAG,EAAS,GAGhC,IAEE,AAAI,GAAM,EAAG,cACX,GAAU,EAAG,EAAS,MAEtB,EAAQ,WAAW,SACd,GACP,GAAI,EAAG,OAAS,SACd,OACF,GAAI,EAAG,OAAS,QACd,MAAO,IAAY,GAAgB,EAAG,EAAS,GAAM,GAAU,EAAG,EAAS,GAC7E,GAAI,EAAG,OAAS,SACd,KAAM,GAER,GAAU,EAAG,EAAS,MAKtB,GAAY,CAAC,EAAG,EAAS,KAC7B,GAAO,GACP,GAAO,GAEP,IACE,EAAQ,UAAU,SACX,GACP,GAAI,EAAG,OAAS,SACd,OACF,GAAI,EAAG,OAAS,UACd,KAAM,GACR,AAAI,GAAG,OAAS,aAAe,EAAG,OAAS,UAAY,EAAG,OAAS,UACjE,GAAW,EAAG,KAId,GAAa,CAAC,EAAG,KACrB,GAAO,GACP,GAAO,GACP,EAAQ,YAAY,GAAG,QAAQ,GAAK,GAAW,GAAK,KAAK,EAAG,GAAI,IAQhE,GAAM,GAAU,GAAY,IAAM,EAC9B,EAAI,EACR,GACE,GAAI,GAAQ,GACZ,IACE,GAAM,GAAM,EAAQ,UAAU,EAAG,GACjC,SAAQ,GACD,UAEP,GAAI,EAAE,EAAI,GAAW,EACnB,gBAEG,KAGX,GAAO,QAAU,GACjB,GAAO,KAAO,KCvWd,mBAWA,GAAM,IAAa,cACb,GAAa,cACb,GAAe,gBACf,GAAiB,kBACjB,GAAK,CAAE,GAAI,GAAG,UAAW,GAAI,GAAG,WAChC,GAAiB,KAOrB,GAAe,iEAEf,GAAmB,SAEnB,GAAgB,EAEhB,GAAgB,IAAG,SAAW,GAAG,GAAG,SAAY,IAAG,QAAU,GAAG,GAAG,QAAW,IAAG,QAAU,GAAG,GAAG,QAGjG,GAAW,GAAG,aAAe,QAC7B,GAAQ,GAAG,OAAS,GAAG,GAAG,MAAM,MAChC,GAAS,GAAG,QAAU,GAAG,GAAG,MAAM,OAElC,GAAW,IACX,GAAY,IAEZ,GAAO,OAGP,GAAiB,GAGjB,GAAgB,GAAG,UAAU,KAAK,IAClC,GAAiB,GAAO,KAGxB,GAAmB,GAQrB,YAAiB,EAAS,GACxB,GACE,GAAO,GAAgB,EAAS,GAChC,EAAO,EAAK,GACZ,EAAK,EAAK,GAEZ,IACE,GAA0B,SACnB,GACP,MAAO,GAAG,GAGZ,GAAI,GAAQ,EAAK,MACjB,AAAC,cACC,IACE,GAAM,GAAO,GAAiB,GAG9B,GAAG,KAAK,EAAM,SAAU,GAEtB,GAAI,CAAC,EAEH,MAAI,MAAU,EAAU,IAEjB,EAAG,GAAI,OAAM,0DAA4D,IAGlF,EAAG,KAAM,WAEJ,GACP,EAAG,QAYT,YAAqB,GACnB,GACE,GAAO,GAAgB,GACvB,EAAO,EAAK,GAEd,GAA0B,GAE1B,GAAI,GAAQ,EAAK,MACjB,GACE,GAAM,GAAO,GAAiB,GAC9B,IACE,GAAG,SAAS,SACL,GACP,MAAO,UAEF,KAAU,GAEnB,KAAM,IAAI,OAAM,0DASlB,YAAc,EAAS,GACrB,GACE,GAAO,GAAgB,EAAS,GAChC,EAAO,EAAK,GACZ,EAAK,EAAK,GAGZ,GAAQ,EAAM,SAAyB,EAAK,GAE1C,GAAI,EAAK,MAAO,GAAG,GAGnB,GAAG,KAAK,EAAM,GAAc,EAAK,MAAQ,GAAW,SAAsB,EAAK,GAE7E,GAAI,EAAK,MAAO,GAAG,GAEnB,GAAI,EAAK,kBACP,MAAO,IAAG,MAAM,EAAI,SAA0B,GAE5C,MAAO,GAAG,EAAa,EAAM,OAAW,GAA8B,EAAM,GAAI,EAAM,OAEnF,CAGL,GAAM,GAA4B,EAAK,mBAAqB,EAAK,iBACjE,EAAG,KAAM,EAAM,EAAI,GAA8B,EAAM,EAA4B,GAAK,EAAI,EAAM,UAa1G,YAAkB,GAChB,GACE,GAAO,GAAgB,GACvB,EAAO,EAAK,GAER,EAA4B,EAAK,mBAAqB,EAAK,iBAC3D,EAAO,GAAY,GACzB,GAAI,GAAK,GAAG,SAAS,EAAM,GAAc,EAAK,MAAQ,IAEtD,MAAI,GAAK,mBACP,IAAG,UAAU,GACb,EAAK,QAGA,CACL,KAAM,EACN,GAAI,EACJ,eAAgB,GAA8B,EAAM,EAA4B,GAAK,EAAI,EAAM,KAUnG,YAAa,EAAS,GACpB,GACE,GAAO,GAAgB,EAAS,GAChC,EAAO,EAAK,GACZ,EAAK,EAAK,GAGZ,GAAQ,EAAM,SAAyB,EAAK,GAE1C,GAAI,EAAK,MAAO,GAAG,GAGnB,GAAG,MAAM,EAAM,EAAK,MAAQ,GAAU,SAAqB,GAEzD,GAAI,EAAK,MAAO,GAAG,GAEnB,EAAG,KAAM,EAAM,GAA6B,EAAM,EAAM,SAY9D,YAAiB,GACf,GACE,GAAO,GAAgB,GACvB,EAAO,EAAK,GAER,EAAO,GAAY,GACzB,UAAG,UAAU,EAAM,EAAK,MAAQ,IAEzB,CACL,KAAM,EACN,eAAgB,GAA6B,EAAM,EAAM,KAW7D,YAA0B,EAAQ,GAChC,GAAM,GAAW,SAAU,GACzB,GAAI,GAAO,CAAC,GAAU,GAEpB,MAAO,GAAK,GAEd,KAGF,AAAI,GAAK,EAAO,GACd,GAAG,MAAM,EAAO,GAAI,WAClB,GAAG,OAAO,EAAO,GAAI,KAEpB,GAAG,OAAO,EAAO,GAAI,GAS5B,YAAyB,GACvB,GAAI,GAAoB,KACxB,IACE,AAAI,GAAK,EAAO,IAAI,GAAG,UAAU,EAAO,UACjC,GAEP,GAAI,CAAC,GAAS,IAAM,CAAC,GAAU,GAAI,KAAM,WAEzC,IACE,GAAG,WAAW,EAAO,UAEhB,GAEL,AAAK,GAAU,IAAI,GAAoB,IAG3C,GAAI,IAAsB,KACxB,KAAM,GAiBV,YAAuC,EAAM,EAAI,EAAM,GACrD,GAAM,GAAqB,GAAuB,GAAiB,CAAC,EAAI,GAAO,GACzE,EAAiB,GAAuB,GAAkB,CAAC,EAAI,GAAO,EAAM,GAElF,MAAK,GAAK,MAAM,GAAe,QAAQ,GAEhC,EAAO,EAAqB,EAerC,YAAsC,EAAM,EAAM,GAChD,GAAM,GAAiB,EAAK,cAAgB,GAAS,GAAG,MAAM,KAAK,IAC7D,EAAqB,EAAK,cAAgB,GAAiB,GAC3D,EAAqB,GAAuB,EAAoB,EAAM,GACtE,EAAiB,GAAuB,EAAgB,EAAM,EAAM,GAC1E,MAAK,GAAK,MAAM,GAAe,QAAQ,GAEhC,EAAO,EAAqB,EAgBrC,YAAgC,EAAgB,EAAe,EAAM,GACnE,GAAI,GAAS,GAGb,MAAO,YAA0B,GAG/B,GAAI,CAAC,GAEH,GAAM,GAAW,GAAuB,EAClC,EAAQ,GAAe,QAAQ,GAKrC,MAHI,IAAS,GAAG,GAAe,OAAO,EAAO,GAE7C,EAAS,GACL,GAAQ,IAAmB,IAAiB,IAAmB,GAC1D,EAAe,GAEf,EAAe,EAAe,GAAQ,gBAWrD,cAEE,GAAI,EAAC,GAIL,KAAO,GAAe,QACpB,IACE,GAAe,WACR,KAcb,YAAsB,GACpB,GACE,GAAQ,GACR,EAAM,KAGR,IACE,EAAM,GAAO,YAAY,SAClB,GACP,EAAM,GAAO,kBAAkB,GAGjC,OAAS,GAAI,EAAG,EAAI,EAAS,IAC3B,EAAM,KAAK,GAAa,EAAI,GAAK,GAAa,SAGhD,MAAO,GAAM,KAAK,IAUpB,YAAkB,GAChB,MAAO,KAAM,MAAQ,GAAa,IAAM,CAAC,EAAE,OAU7C,YAAsB,GACpB,MAAO,OAAO,IAAQ,YAaxB,YAAyB,EAAS,GAEhC,GAAI,MAAO,IAAY,WACrB,MAAO,CAAC,GAAI,GAId,GAAI,GAAa,GACf,MAAO,CAAC,GAAI,GAId,GAAM,GAAgB,GACtB,OAAW,KAAO,QAAO,oBAAoB,GAC3C,EAAc,GAAO,EAAQ,GAG/B,MAAO,CAAC,EAAe,GAUzB,YAA0B,GAExB,GAAM,GAAS,EAAK,OAGpB,GAAI,CAAC,GAAa,EAAK,MACrB,MAAO,IAAK,KAAK,EAAQ,EAAK,IAAK,EAAK,MAG1C,GAAI,CAAC,GAAa,EAAK,UACrB,MAAO,IAAK,KAAK,EAAQ,EAAK,IAAK,EAAK,UAAU,QAAQ,GAAkB,GAAa,IAG3F,GAAM,GAAO,CACX,EAAK,OAAS,EAAK,OAAS,MAC5B,IACA,QAAQ,IACR,IACA,GAAa,IACb,EAAK,QAAU,IAAM,EAAK,QAAU,IACpC,KAAK,IAEP,MAAO,IAAK,KAAK,EAAQ,EAAK,IAAK,GAUrC,YAAmC,GAEjC,EAAQ,OAAS,GAAW,GAE5B,GAAM,GAAS,EAAQ,OASvB,GANK,GAAa,EAAQ,OACxB,GAAkB,EAAQ,KAAM,OAAQ,GAErC,GAAa,EAAQ,MACxB,GAAkB,EAAQ,IAAK,MAAO,GAEpC,CAAC,GAAa,EAAQ,WACxB,IAAkB,EAAQ,SAAU,WAAY,GAC5C,CAAC,EAAQ,SAAS,MAAM,KAC1B,KAAM,IAAI,OAAM,4BAA4B,EAAQ,cAGxD,GAAI,CAAC,GAAa,EAAQ,QAAU,MAAM,EAAQ,QAAU,EAAQ,MAAQ,EAC1E,KAAM,IAAI,OAAM,yBAAyB,EAAQ,WAGnD,EAAQ,MAAQ,GAAa,EAAQ,MAAQ,EAAQ,OAAS,GAAgB,EAC9E,EAAQ,KAAO,CAAC,CAAC,EAAQ,KACzB,EAAQ,iBAAmB,CAAC,CAAC,EAAQ,iBACrC,EAAQ,kBAAoB,CAAC,CAAC,EAAQ,kBACtC,EAAQ,cAAgB,CAAC,CAAC,EAAQ,cAGlC,EAAQ,IAAM,GAAa,EAAQ,KAAO,GAAK,GAAK,SAAS,EAAQ,GAAa,EAAQ,IAAK,IAC/F,EAAQ,SAAW,GAAa,EAAQ,UAAY,OAAY,GAAK,SAAS,EAAQ,GAAa,EAAQ,SAAU,IAErH,EAAQ,SAAW,GAAS,EAAQ,UAAY,OAAY,GAAK,SAAS,EAAQ,IAAK,EAAQ,UAG/F,EAAQ,KAAO,GAAa,EAAQ,MAAQ,OAAY,GAAc,EAAQ,MAC9E,EAAQ,OAAS,GAAa,EAAQ,QAAU,GAAK,EAAQ,OAC7D,EAAQ,QAAU,GAAa,EAAQ,SAAW,GAAK,EAAQ,QAcjE,YAAsB,EAAM,GAC1B,GAAM,GAAgB,GAAc,GACpC,MAAI,GAAc,WAAW,GACpB,GAAK,QAAQ,GAEb,GAAK,QAAQ,GAAK,KAAK,EAAQ,IAW1C,YAAuB,GACrB,MAAI,IAAS,GACJ,EAEF,EAAK,QAAQ,QAAS,IAY/B,YAA2B,EAAM,EAAQ,GACvC,GAAI,IAAW,QAEb,GAAI,GAAK,WAAW,GAClB,KAAM,IAAI,OAAM,GAAG,sDAA2D,OAEhF,GAAI,GAAW,GAAK,SAAS,GAC7B,GAAI,IAAa,MAAQ,IAAa,KAAO,IAAa,EACxD,KAAM,IAAI,OAAM,GAAG,4CAAiD,YAItE,GAAI,GAAK,WAAW,IAAS,CAAC,EAAK,WAAW,GAC5C,KAAM,IAAI,OAAM,GAAG,iCAAsC,cAAmB,OAE9E,GAAI,GAAe,GAAa,EAAM,GACtC,GAAI,CAAC,EAAa,WAAW,GAC3B,KAAM,IAAI,OAAM,GAAG,iCAAsC,cAAmB,QASlF,YAAkB,GAChB,MAAO,IAAiB,EAAO,CAAC,GAAO,SAQzC,YAAmB,GACjB,MAAO,IAAiB,EAAO,CAAC,GAAQ,UAqB1C,YAA0B,EAAO,EAAO,GACtC,MAAO,IAAW,EAAM,OAAS,EAAO,EAAM,OAAS,GAAQ,EAAM,QAAU,EAUjF,cACE,GAAmB,GAUrB,YAAoB,GAClB,MAAO,IAAK,QAAQ,GAAc,GAAW,EAAQ,QAAU,GAAG,WAIpE,QAAQ,YAAY,GAAM,IA6F1B,OAAO,eAAe,GAAO,QAAS,SAAU,CAC9C,WAAY,GACZ,aAAc,GACd,IAAK,WACH,MAAO,SAIX,GAAO,QAAQ,IAAM,GACrB,GAAO,QAAQ,QAAU,GAEzB,GAAO,QAAQ,KAAO,GACtB,GAAO,QAAQ,SAAW,GAE1B,GAAO,QAAQ,QAAU,GACzB,GAAO,QAAQ,YAAc,GAE7B,GAAO,QAAQ,mBAAqB,KC3wBpC,gCAEA,GAAM,CAAE,cAAsB,gBACxB,GAAc,KAGpB,GAAO,QAAQ,SAAW,GAAI,SAC9B,GAAM,IAAkB,GAAU,CAAC,EAAS,IAC1C,GAAI,KAAK,EAAS,CAAC,EAAK,EAAM,EAAI,IAChC,EAAM,EAAG,GAAO,EAAG,OAAW,CAAE,OAAM,KAAI,QAAS,GAAU,OAGjE,GAAO,QAAQ,KAAO,KAAO,IAAY,GAAgB,GAEzD,GAAO,QAAQ,SAAW,eAAwB,EAAI,GACpD,GAAM,CAAE,OAAM,KAAI,WAAY,KAAM,IAAO,QAAQ,KAAK,GACxD,IACE,MAAO,MAAM,GAAG,CAAE,OAAM,eAExB,KAAM,OAMV,GAAO,QAAQ,QAAU,GAAI,QAC7B,GAAM,IAAiB,GAAU,CAAC,EAAS,IACzC,GAAI,IAAI,EAAS,CAAC,EAAK,EAAM,IAC3B,EAAM,EAAG,GAAO,EAAG,OAAW,CAAE,OAAM,QAAS,GAAU,OAG7D,GAAO,QAAQ,IAAM,KAAO,IAAY,GAAe,GAEvD,GAAO,QAAQ,QAAU,eAAuB,EAAI,GAClD,GAAM,CAAE,OAAM,WAAY,KAAM,IAAO,QAAQ,IAAI,GACnD,IACE,MAAO,MAAM,GAAG,CAAE,iBAElB,KAAM,OAMV,GAAO,QAAQ,YAAc,GAAI,YACjC,GAAO,QAAQ,QAAU,GAAU,GAAI,SAEvC,GAAO,QAAQ,OAAS,GAAI,OAE5B,GAAO,QAAQ,mBAAqB,GAAI,qBCjDxC,iBAAI,IAAW,OAAO,OAClB,GAAY,OAAO,eACnB,GAAe,OAAO,eACtB,GAAe,OAAO,UAAU,eAChC,GAAoB,OAAO,oBAC3B,GAAmB,OAAO,yBAC1B,GAAiB,AAAC,GAAW,GAAU,EAAQ,aAAc,CAAC,MAAO,KACrE,GAAW,CAAC,EAAQ,KACtB,OAAS,KAAQ,GACf,GAAU,EAAQ,EAAM,CAAC,IAAK,EAAI,GAAO,WAAY,MAErD,GAAe,CAAC,EAAQ,EAAS,KACnC,GAAI,GAAW,MAAO,IAAY,UAAY,MAAO,IAAY,WAC/D,OAAS,KAAO,IAAkB,GAChC,AAAI,CAAC,GAAa,KAAK,EAAQ,IAAQ,IAAQ,WAC7C,GAAU,EAAQ,EAAK,CAAC,IAAK,IAAM,EAAQ,GAAM,WAAY,CAAE,GAAO,GAAiB,EAAS,KAAS,EAAK,aAEpH,MAAO,IAEL,GAAa,AAAC,GACZ,GAAW,EAAQ,WACd,EACF,GAAa,GAAe,GAAU,GAAW,KAAO,GAAS,GAAa,IAAY,GAAI,UAAW,CAAC,MAAO,EAAS,WAAY,MAAS,GAIxJ,GAAe,IACf,GAAS,GAAS,CAChB,eAAgB,IAAM,GACtB,cAAe,IAAM,GACrB,WAAY,IAAM,GAClB,SAAU,IAAM,KAElB,GAAI,IAAuB,GAAmB,0BAC1C,GAAiB,GAAmB,MACpC,GAAK,GAAmB,eACxB,GAAO,GAAmB,iBAC1B,GAAqB,GAAmB,MAC5C,kBAA8B,GAC5B,MAAO,IAAK,QAAQ,KAAM,IAAe,QAAQ,eAAgB,CAAC,KAAM,YAAa,QAAO,OAE9F,GAAI,IAAiB,QACjB,GAAgB,CAClB,MAAO,yBACP,YAAa,8BAEf,kBAA0B,EAAa,IACrC,GAAM,GAAc,EAAa,6BAA+B,yBAC1D,EAAM,KAAM,IAAe,GAAK,QAAQ,YAC9C,MAAO,IAAI,SAAQ,CAAC,EAAU,KAC5B,GAAM,GAAQ,GAAqB,QAAQ,MAAM,MAAO,CACtD,UACA,GAAG,UACH,qBACA,KACA,eACA,YACA,aACA,oBACA,oBACC,CACD,MACA,SAAU,GACV,MAAO,GACP,IAAK,QAAQ,MAEf,EAAM,OAAO,KAAK,QAAQ,QAC1B,EAAM,MAAM,KAAK,QAAQ,OACzB,EAAM,KAAK,OAAQ,GACnB,EAAM,KAAK,QAAS,KAGxB,kBAAwB,EAAS,EAAU,MACzC,GAAI,GAAI,EACR,GAAI,GAAc,EAClB,GAAI,CAAC,GAEH,GAAI,GAAc,AADN,IAAM,GAAK,EAAQ,UAAY,KAAO,OAAS,EAAG,SAAW,KAAO,EAAK,GAAK,EAClE,6BAA+B,yBACvD,IACE,EAAsB,AAAR,QAAQ,GAAK,QAAQ,UAAW,eAAgB,UACvD,GACP,MAAO,SAAQ,OAAO,mBAAmB,WAAqB,GAAK,QAAQ,yFAO/E,GAJA,KAAM,IAAG,SAAS,OAAO,EAAa,GAAG,UAAU,MAC/C,MAAO,GAAQ,UAAa,aAC9B,GAAQ,SAAW,IAEjB,CAAC,EAAQ,QACX,GAAM,CAAC,KAAM,GAAa,KAAM,IAAmB,QAAQ,KAAK,CAC9D,kBAAmB,GACnB,QAAS,UAEX,EAAQ,OAAS,EAEnB,GAAM,GAAW,GAAK,QAAQ,EAAQ,QACtC,aAAO,GAAQ,OACf,KAAM,IAAG,SAAS,UAAU,EAAU,KAAK,UAAU,GAAU,SACxD,KAAM,IAAI,SAAQ,MAAO,EAAU,KAQxC,AAPc,GAAqB,QAAQ,MAAM,EAAa,CAAC,GAAW,CACxE,IAAK,QAAQ,IACb,YAAa,GACb,SAAU,GACV,MAAO,GACP,MAAO,YAEH,KAAK,OAAQ,UACjB,GAAI,GACJ,IAEE,GADA,EAAW,KAAK,MAAO,MAAM,IAAG,SAAS,SAAS,EAAU,UAAU,QAClE,MAAO,IAAa,SACtB,KAAM,uBAED,GACP,EAAW,CACT,MAAO,EAAU,QACjB,YACA,OAAQ,GACR,SAAU,GACV,KAAM,IAGV,EAAS,OAEV,MAAM,AAAC,GACD,QAAQ,QAAQ,CACrB,MAAO,EAAI,QACX,UAAW,EACX,OAAQ,GACR,KAAM,GACN,SAAU,SClIhB,gCAIA,GAAM,IAAS,GAAI,KAAI,CACrB,CAAC,IAAK,OACN,CAAC,IAAK,QACN,CAAC,IAAK,QACN,CAAC,IAAK,iBACN,CAAC,IAAK,UACN,CAAC,mBAAoB,SACrB,CAAC,kBAAmB,SACpB,CAAC,aAAc,SACf,CAAC,YAAa,SACd,CAAC,mBAAoB,SACrB,CAAC,iBAAkB,SACnB,CAAC,IAAK,QACN,CAAC,gBAAiB,QAClB,CAAC,eAAgB,QACjB,CAAC,IAAK,WACN,CAAC,WAAY,WACb,CAAC,IAAK,iBACN,CAAC,IAAK,UACN,CAAC,IAAK,YAGR,GAAO,QAAU,GAAO,EAAM,OAAO,KAAK,GAAK,IAAI,GAAK,CACtD,GAAO,IAAI,GAAK,GAAO,IAAI,GAAK,EAAG,EAAI,KACtC,OAAO,CAAC,EAAK,IAAQ,GAAI,EAAG,IAAM,EAAG,GAAI,GAAM,OAAO,OAAO,OAAS,KC5BzE,gCACA,GAAO,QAAU,SAAU,GACzB,EAAQ,UAAU,OAAO,UAAY,YACnC,OAAS,GAAS,KAAK,KAAM,EAAQ,EAAS,EAAO,KACnD,KAAM,GAAO,UCJnB,gCACA,GAAO,QAAU,EAEjB,EAAQ,KAAO,GACf,EAAQ,OAAS,EAEjB,WAAkB,GAChB,GAAI,GAAO,KASX,GARM,YAAgB,IACpB,GAAO,GAAI,IAGb,EAAK,KAAO,KACZ,EAAK,KAAO,KACZ,EAAK,OAAS,EAEV,GAAQ,MAAO,GAAK,SAAY,WAClC,EAAK,QAAQ,SAAU,GACrB,EAAK,KAAK,aAEH,UAAU,OAAS,EAC5B,OAAS,GAAI,EAAG,EAAI,UAAU,OAAQ,EAAI,EAAG,IAC3C,EAAK,KAAK,UAAU,IAIxB,MAAO,GAGT,EAAQ,UAAU,WAAa,SAAU,GACvC,GAAI,EAAK,OAAS,KAChB,KAAM,IAAI,OAAM,oDAGlB,GAAI,GAAO,EAAK,KACZ,EAAO,EAAK,KAEhB,MAAI,IACF,GAAK,KAAO,GAGV,GACF,GAAK,KAAO,GAGV,IAAS,KAAK,MAChB,MAAK,KAAO,GAEV,IAAS,KAAK,MAChB,MAAK,KAAO,GAGd,EAAK,KAAK,SACV,EAAK,KAAO,KACZ,EAAK,KAAO,KACZ,EAAK,KAAO,KAEL,GAGT,EAAQ,UAAU,YAAc,SAAU,GACxC,GAAI,IAAS,KAAK,MAIlB,AAAI,EAAK,MACP,EAAK,KAAK,WAAW,GAGvB,GAAI,GAAO,KAAK,KAChB,EAAK,KAAO,KACZ,EAAK,KAAO,EACR,GACF,GAAK,KAAO,GAGd,KAAK,KAAO,EACP,KAAK,MACR,MAAK,KAAO,GAEd,KAAK,WAGP,EAAQ,UAAU,SAAW,SAAU,GACrC,GAAI,IAAS,KAAK,MAIlB,AAAI,EAAK,MACP,EAAK,KAAK,WAAW,GAGvB,GAAI,GAAO,KAAK,KAChB,EAAK,KAAO,KACZ,EAAK,KAAO,EACR,GACF,GAAK,KAAO,GAGd,KAAK,KAAO,EACP,KAAK,MACR,MAAK,KAAO,GAEd,KAAK,WAGP,EAAQ,UAAU,KAAO,WACvB,OAAS,GAAI,EAAG,EAAI,UAAU,OAAQ,EAAI,EAAG,IAC3C,GAAK,KAAM,UAAU,IAEvB,MAAO,MAAK,QAGd,EAAQ,UAAU,QAAU,WAC1B,OAAS,GAAI,EAAG,EAAI,UAAU,OAAQ,EAAI,EAAG,IAC3C,GAAQ,KAAM,UAAU,IAE1B,MAAO,MAAK,QAGd,EAAQ,UAAU,IAAM,WACtB,GAAI,EAAC,KAAK,MAIV,GAAI,GAAM,KAAK,KAAK,MACpB,YAAK,KAAO,KAAK,KAAK,KACtB,AAAI,KAAK,KACP,KAAK,KAAK,KAAO,KAEjB,KAAK,KAAO,KAEd,KAAK,SACE,IAGT,EAAQ,UAAU,MAAQ,WACxB,GAAI,EAAC,KAAK,MAIV,GAAI,GAAM,KAAK,KAAK,MACpB,YAAK,KAAO,KAAK,KAAK,KACtB,AAAI,KAAK,KACP,KAAK,KAAK,KAAO,KAEjB,KAAK,KAAO,KAEd,KAAK,SACE,IAGT,EAAQ,UAAU,QAAU,SAAU,EAAI,GACxC,EAAQ,GAAS,KACjB,OAAS,GAAS,KAAK,KAAM,EAAI,EAAG,IAAW,KAAM,IACnD,EAAG,KAAK,EAAO,EAAO,MAAO,EAAG,MAChC,EAAS,EAAO,MAIpB,EAAQ,UAAU,eAAiB,SAAU,EAAI,GAC/C,EAAQ,GAAS,KACjB,OAAS,GAAS,KAAK,KAAM,EAAI,KAAK,OAAS,EAAG,IAAW,KAAM,IACjE,EAAG,KAAK,EAAO,EAAO,MAAO,EAAG,MAChC,EAAS,EAAO,MAIpB,EAAQ,UAAU,IAAM,SAAU,GAChC,OAAS,GAAI,EAAG,EAAS,KAAK,KAAM,IAAW,MAAQ,EAAI,EAAG,IAE5D,EAAS,EAAO,KAElB,GAAI,IAAM,GAAK,IAAW,KACxB,MAAO,GAAO,OAIlB,EAAQ,UAAU,WAAa,SAAU,GACvC,OAAS,GAAI,EAAG,EAAS,KAAK,KAAM,IAAW,MAAQ,EAAI,EAAG,IAE5D,EAAS,EAAO,KAElB,GAAI,IAAM,GAAK,IAAW,KACxB,MAAO,GAAO,OAIlB,EAAQ,UAAU,IAAM,SAAU,EAAI,GACpC,EAAQ,GAAS,KAEjB,OADI,GAAM,GAAI,GACL,EAAS,KAAK,KAAM,IAAW,MACtC,EAAI,KAAK,EAAG,KAAK,EAAO,EAAO,MAAO,OACtC,EAAS,EAAO,KAElB,MAAO,IAGT,EAAQ,UAAU,WAAa,SAAU,EAAI,GAC3C,EAAQ,GAAS,KAEjB,OADI,GAAM,GAAI,GACL,EAAS,KAAK,KAAM,IAAW,MACtC,EAAI,KAAK,EAAG,KAAK,EAAO,EAAO,MAAO,OACtC,EAAS,EAAO,KAElB,MAAO,IAGT,EAAQ,UAAU,OAAS,SAAU,EAAI,GACvC,GAAI,GACA,EAAS,KAAK,KAClB,GAAI,UAAU,OAAS,EACrB,EAAM,UACG,KAAK,KACd,EAAS,KAAK,KAAK,KACnB,EAAM,KAAK,KAAK,UAEhB,MAAM,IAAI,WAAU,8CAGtB,OAAS,GAAI,EAAG,IAAW,KAAM,IAC/B,EAAM,EAAG,EAAK,EAAO,MAAO,GAC5B,EAAS,EAAO,KAGlB,MAAO,IAGT,EAAQ,UAAU,cAAgB,SAAU,EAAI,GAC9C,GAAI,GACA,EAAS,KAAK,KAClB,GAAI,UAAU,OAAS,EACrB,EAAM,UACG,KAAK,KACd,EAAS,KAAK,KAAK,KACnB,EAAM,KAAK,KAAK,UAEhB,MAAM,IAAI,WAAU,8CAGtB,OAAS,GAAI,KAAK,OAAS,EAAG,IAAW,KAAM,IAC7C,EAAM,EAAG,EAAK,EAAO,MAAO,GAC5B,EAAS,EAAO,KAGlB,MAAO,IAGT,EAAQ,UAAU,QAAU,WAE1B,OADI,GAAM,GAAI,OAAM,KAAK,QAChB,EAAI,EAAG,EAAS,KAAK,KAAM,IAAW,KAAM,IACnD,EAAI,GAAK,EAAO,MAChB,EAAS,EAAO,KAElB,MAAO,IAGT,EAAQ,UAAU,eAAiB,WAEjC,OADI,GAAM,GAAI,OAAM,KAAK,QAChB,EAAI,EAAG,EAAS,KAAK,KAAM,IAAW,KAAM,IACnD,EAAI,GAAK,EAAO,MAChB,EAAS,EAAO,KAElB,MAAO,IAGT,EAAQ,UAAU,MAAQ,SAAU,EAAM,GACxC,EAAK,GAAM,KAAK,OACZ,EAAK,GACP,IAAM,KAAK,QAEb,EAAO,GAAQ,EACX,EAAO,GACT,IAAQ,KAAK,QAEf,GAAI,GAAM,GAAI,GACd,GAAI,EAAK,GAAQ,EAAK,EACpB,MAAO,GAET,AAAI,EAAO,GACT,GAAO,GAEL,EAAK,KAAK,QACZ,GAAK,KAAK,QAEZ,OAAS,GAAI,EAAG,EAAS,KAAK,KAAM,IAAW,MAAQ,EAAI,EAAM,IAC/D,EAAS,EAAO,KAElB,KAAO,IAAW,MAAQ,EAAI,EAAI,IAAK,EAAS,EAAO,KACrD,EAAI,KAAK,EAAO,OAElB,MAAO,IAGT,EAAQ,UAAU,aAAe,SAAU,EAAM,GAC/C,EAAK,GAAM,KAAK,OACZ,EAAK,GACP,IAAM,KAAK,QAEb,EAAO,GAAQ,EACX,EAAO,GACT,IAAQ,KAAK,QAEf,GAAI,GAAM,GAAI,GACd,GAAI,EAAK,GAAQ,EAAK,EACpB,MAAO,GAET,AAAI,EAAO,GACT,GAAO,GAEL,EAAK,KAAK,QACZ,GAAK,KAAK,QAEZ,OAAS,GAAI,KAAK,OAAQ,EAAS,KAAK,KAAM,IAAW,MAAQ,EAAI,EAAI,IACvE,EAAS,EAAO,KAElB,KAAO,IAAW,MAAQ,EAAI,EAAM,IAAK,EAAS,EAAO,KACvD,EAAI,KAAK,EAAO,OAElB,MAAO,IAGT,EAAQ,UAAU,OAAS,SAAU,EAAO,KAAgB,GAC1D,AAAI,EAAQ,KAAK,QACf,GAAQ,KAAK,OAAS,GAEpB,EAAQ,GACV,GAAQ,KAAK,OAAS,GAGxB,OAAS,GAAI,EAAG,EAAS,KAAK,KAAM,IAAW,MAAQ,EAAI,EAAO,IAChE,EAAS,EAAO,KAIlB,OADI,GAAM,GACD,EAAI,EAAG,GAAU,EAAI,EAAa,IACzC,EAAI,KAAK,EAAO,OAChB,EAAS,KAAK,WAAW,GAE3B,AAAI,IAAW,MACb,GAAS,KAAK,MAGZ,IAAW,KAAK,MAAQ,IAAW,KAAK,MAC1C,GAAS,EAAO,MAGlB,OAAS,GAAI,EAAG,EAAI,EAAM,OAAQ,IAChC,EAAS,GAAO,KAAM,EAAQ,EAAM,IAEtC,MAAO,IAGT,EAAQ,UAAU,QAAU,WAG1B,OAFI,GAAO,KAAK,KACZ,EAAO,KAAK,KACP,EAAS,EAAM,IAAW,KAAM,EAAS,EAAO,MACvD,GAAI,GAAI,EAAO,KACf,EAAO,KAAO,EAAO,KACrB,EAAO,KAAO,EAEhB,YAAK,KAAO,EACZ,KAAK,KAAO,EACL,MAGT,YAAiB,EAAM,EAAM,GAC3B,GAAI,GAAW,IAAS,EAAK,KAC3B,GAAI,IAAK,EAAO,KAAM,EAAM,GAC5B,GAAI,IAAK,EAAO,EAAM,EAAK,KAAM,GAEnC,MAAI,GAAS,OAAS,MACpB,GAAK,KAAO,GAEV,EAAS,OAAS,MACpB,GAAK,KAAO,GAGd,EAAK,SAEE,EAGT,YAAe,EAAM,GACnB,EAAK,KAAO,GAAI,IAAK,EAAM,EAAK,KAAM,KAAM,GACvC,EAAK,MACR,GAAK,KAAO,EAAK,MAEnB,EAAK,SAGP,YAAkB,EAAM,GACtB,EAAK,KAAO,GAAI,IAAK,EAAM,KAAM,EAAK,KAAM,GACvC,EAAK,MACR,GAAK,KAAO,EAAK,MAEnB,EAAK,SAGP,YAAe,EAAO,EAAM,EAAM,GAChC,GAAI,CAAE,gBAAgB,KACpB,MAAO,IAAI,IAAK,EAAO,EAAM,EAAM,GAGrC,KAAK,KAAO,EACZ,KAAK,MAAQ,EAEb,AAAI,EACF,GAAK,KAAO,KACZ,KAAK,KAAO,GAEZ,KAAK,KAAO,KAGd,AAAI,EACF,GAAK,KAAO,KACZ,KAAK,KAAO,GAEZ,KAAK,KAAO,KAIhB,IAEE,AAAQ,KAAiB,SAClB,OCzaT,gCACA,GAAM,IAAa,kBACb,GAAiB,kBACjB,GAAkB,KAClB,GAAK,AAAQ,0BAAkB,cAE/B,GAAM,OAAO,OACb,GAAiB,OAAO,gBACxB,GAAc,OAAO,cACrB,GAAe,OAAO,eACtB,GAAS,OAAO,UAChB,GAAO,OAAO,QACd,GAAQ,OAAO,SACf,GAAa,OAAO,cACpB,GAAW,OAAO,YAClB,GAAU,OAAO,WACjB,GAAU,OAAO,WACjB,GAAS,OAAO,UAChB,GAAS,OAAO,UAChB,GAAe,OAAO,gBACtB,GAAa,OAAO,cACpB,GAAc,OAAO,eACrB,GAAa,OAAO,cACpB,GAAY,OAAO,aAGnB,GAAS,OAAO,2BAA8B,IAC9C,GAAgB,IAAU,OAAO,eAClC,OAAO,iCACN,GAAW,IAAU,OAAO,UAC7B,OAAO,4BAKN,GAAW,GACf,IAAO,OACP,IAAO,UACP,IAAO,YAEH,GAAgB,GAAK,YAAa,cACtC,MAAO,IAAM,UACb,EAAE,aACF,EAAE,YAAY,OAAS,eACvB,EAAE,YAAc,EAEZ,GAAoB,GAAK,CAAC,OAAO,SAAS,IAAM,YAAY,OAAO,GAEzE,GAAO,QAAU,gBAAuB,IACtC,YAAa,GACX,QACA,KAAK,IAAW,GAEhB,KAAK,IAAU,GACf,KAAK,MAAQ,GAAI,IACjB,KAAK,OAAS,GAAI,IAClB,KAAK,IAAc,GAAW,EAAQ,YAAc,GACpD,AAAI,KAAK,IACP,KAAK,IAAY,KAEjB,KAAK,IAAY,GAAW,EAAQ,UAAY,KAC9C,KAAK,MAAc,UACrB,MAAK,IAAY,MACnB,KAAK,IAAW,KAAK,IAAY,GAAI,IAAG,KAAK,KAAa,KAC1D,KAAK,IAAO,GACZ,KAAK,IAAe,GACpB,KAAK,IAAgB,GACrB,KAAK,IAAU,GACf,KAAK,SAAW,GAChB,KAAK,SAAW,GAChB,KAAK,IAAgB,EACrB,KAAK,IAAa,MAGhB,gBAAkB,MAAO,MAAK,OAE9B,YAAc,MAAO,MAAK,OAC1B,UAAU,GACZ,GAAI,KAAK,IACP,KAAM,IAAI,OAAM,qCAElB,GAAI,KAAK,KAAa,IAAQ,KAAK,KAC9B,MAAK,KAAY,KAAK,IAAS,UAAY,KAAK,KACnD,KAAM,IAAI,OAAM,0BAElB,AAAI,KAAK,MAAc,GACrB,MAAK,IAAW,EAAM,GAAI,IAAG,GAAO,KAChC,KAAK,OAAO,QACd,MAAK,OAAS,KAAK,OAAO,IAAI,GAAS,KAAK,IAAS,MAAM,MAG/D,KAAK,IAAY,EAGnB,YAAa,GACX,KAAK,SAAW,KAGd,cAAgB,MAAO,MAAK,OAC5B,YAAY,GAAM,KAAK,IAAc,KAAK,KAAe,CAAC,CAAC,EAE/D,MAAO,EAAO,EAAU,GACtB,GAAI,KAAK,IACP,KAAM,IAAI,OAAM,mBAElB,MAAI,MAAK,IACP,MAAK,KAAK,QAAS,OAAO,OACxB,GAAI,OAAM,kDACV,CAAE,KAAM,0BAEH,IAGL,OAAO,IAAa,YACtB,GAAK,EAAU,EAAW,QAEvB,GACH,GAAW,QAMT,CAAC,KAAK,KAAe,CAAC,OAAO,SAAS,IACxC,CAAI,GAAkB,GACpB,EAAQ,OAAO,KAAK,EAAM,OAAQ,EAAM,WAAY,EAAM,YACvD,AAAI,GAAc,GACrB,EAAQ,OAAO,KAAK,GACb,MAAO,IAAU,UAExB,MAAK,WAAa,KAKlB,CAAC,KAAK,YAAc,CAAC,EAAM,OACzB,MAAK,MAAkB,GACzB,KAAK,KAAK,YACR,GACF,IACK,KAAK,SAKV,OAAO,IAAU,UAAY,CAAC,KAAK,KAEnC,CAAE,KAAa,KAAK,KAAa,CAAC,KAAK,IAAS,WAClD,GAAQ,OAAO,KAAK,EAAO,IAGzB,OAAO,SAAS,IAAU,KAAK,KACjC,GAAQ,KAAK,IAAS,MAAM,IAE9B,AAAI,KAAK,QAKH,MAAK,MAAkB,GACzB,KAAK,IAAO,IACd,KAAK,KAAK,OAAQ,IAElB,KAAK,IAAY,GAEf,KAAK,MAAkB,GACzB,KAAK,KAAK,YAER,GACF,IAEK,KAAK,UAGd,KAAM,GACJ,GAAI,KAAK,IACP,MAAO,MAET,IACE,MAAI,MAAK,MAAkB,GAAK,IAAM,GAAK,EAAI,KAAK,IAC3C,KAEL,MAAK,KACP,GAAI,MAEF,KAAK,OAAO,OAAS,GAAK,CAAC,KAAK,KAClC,CAAI,KAAK,SACP,KAAK,OAAS,GAAI,IAAQ,CACxB,MAAM,KAAK,KAAK,QAAQ,KAAK,MAG/B,KAAK,OAAS,GAAI,IAAQ,CACxB,OAAO,OAAO,MAAM,KAAK,KAAK,QAAS,KAAK,QAI3C,KAAK,IAAM,GAAK,KAAM,KAAK,OAAO,KAAK,gBAE9C,KAAK,QAIR,IAAO,EAAG,GACT,MAAI,KAAM,EAAM,QAAU,IAAM,KAC9B,KAAK,MAEL,MAAK,OAAO,KAAK,MAAQ,EAAM,MAAM,GACrC,EAAQ,EAAM,MAAM,EAAG,GACvB,KAAK,KAAiB,GAGxB,KAAK,KAAK,OAAQ,GAEd,CAAC,KAAK,OAAO,QAAU,CAAC,KAAK,KAC/B,KAAK,KAAK,SAEL,EAGT,IAAK,EAAO,EAAU,GACpB,MAAI,OAAO,IAAU,YACnB,GAAK,EAAO,EAAQ,MAClB,MAAO,IAAa,YACtB,GAAK,EAAU,EAAW,QACxB,GACF,KAAK,MAAM,EAAO,GAChB,GACF,KAAK,KAAK,MAAO,GACnB,KAAK,IAAO,GACZ,KAAK,SAAW,GAMZ,MAAK,SAAW,CAAC,KAAK,MACxB,KAAK,MACA,MAIR,MACC,AAAI,KAAK,KAGT,MAAK,IAAU,GACf,KAAK,IAAW,GAChB,KAAK,KAAK,UACV,AAAI,KAAK,OAAO,OACd,KAAK,MACF,AAAI,KAAK,IACZ,KAAK,MAEL,KAAK,KAAK,UAGd,SACE,MAAO,MAAK,MAGd,QACE,KAAK,IAAW,GAChB,KAAK,IAAU,MAGb,aACF,MAAO,MAAK,OAGV,WACF,MAAO,MAAK,OAGV,UACF,MAAO,MAAK,KAGb,IAAa,GACZ,MAAI,MAAK,IACP,KAAK,KAAiB,EAEtB,KAAK,KAAiB,EAAM,OACvB,KAAK,OAAO,KAAK,IAGzB,MACC,MAAI,MAAK,OAAO,QACd,CAAI,KAAK,IACP,KAAK,KAAiB,EAEtB,KAAK,KAAiB,KAAK,OAAO,KAAK,MAAM,QAE1C,KAAK,OAAO,SAGpB,IAAQ,GACP,EAAG,OAAU,KAAK,IAAY,KAAK,QAEnC,AAAI,CAAC,GAAW,CAAC,KAAK,OAAO,QAAU,CAAC,KAAK,KAC3C,KAAK,KAAK,UAGb,IAAa,GACZ,MAAO,GAAS,MAAK,KAAK,OAAQ,GAAQ,KAAK,SAAW,GAG5D,KAAM,EAAM,GACV,GAAI,KAAK,IACP,OAEF,GAAM,GAAQ,KAAK,IACnB,EAAO,GAAQ,GACf,AAAI,IAAS,QAAQ,QAAU,IAAS,QAAQ,OAC9C,EAAK,IAAM,GAEX,EAAK,IAAM,EAAK,MAAQ,GAE1B,GAAM,GAAI,CAAE,KAAM,EAAM,KAAM,EAAM,QAAS,GAAK,KAAK,OACvD,YAAK,MAAM,KAAK,GAEhB,EAAK,GAAG,QAAS,EAAE,SACnB,KAAK,MAED,GAAS,EAAE,KAAK,KAClB,EAAE,KAAK,MACF,EAGT,YAAa,EAAI,GACf,MAAO,MAAK,GAAG,EAAI,GAGrB,GAAI,EAAI,GACN,IACE,MAAO,OAAM,GAAG,EAAI,WAEpB,AAAI,IAAO,QAAU,CAAC,KAAK,MAAM,QAAU,CAAC,KAAK,QAC/C,KAAK,MACE,GAAS,IAAO,KAAK,KAC5B,OAAM,KAAK,GACX,KAAK,mBAAmB,QAK1B,cACF,MAAO,MAAK,KAGb,MACC,AAAI,CAAC,KAAK,KACN,CAAC,KAAK,KACN,CAAC,KAAK,KACN,KAAK,OAAO,SAAW,GACvB,KAAK,KACP,MAAK,IAAgB,GACrB,KAAK,KAAK,OACV,KAAK,KAAK,aACV,KAAK,KAAK,UACN,KAAK,KACP,KAAK,KAAK,SACZ,KAAK,IAAgB,IAIzB,KAAM,EAAI,GAER,GAAI,IAAO,SAAW,IAAO,SAAW,IAAO,IAAa,KAAK,IAC/D,OACG,GAAI,IAAO,QACd,GAAI,CAAC,EACH,OAEF,AAAI,KAAK,MAAM,QACb,KAAK,MAAM,QAAQ,GACjB,EAAE,KAAK,MAAM,KAAU,IAAS,KAAK,iBAChC,IAAO,OAEhB,GAAI,KAAK,MAAiB,GACxB,OAEF,KAAK,IAAe,GACpB,KAAK,SAAW,GAEZ,KAAK,KACP,GAAO,KAAK,IAAS,MACjB,GACF,MAAK,MAAM,QAAQ,GAAK,EAAE,KAAK,MAAM,IACrC,MAAM,KAAK,OAAQ,KAIvB,KAAK,MAAM,QAAQ,IACjB,EAAE,KAAK,eAAe,QAAS,EAAE,SAC7B,EAAE,KAAK,KACT,EAAE,KAAK,gBAEF,IAAO,SAChB,MAAK,IAAU,GAEX,CAAC,KAAK,KAAgB,CAAC,KAAK,KAC9B,OAIJ,GAAM,GAAO,GAAI,OAAM,UAAU,QAGjC,GAFA,EAAK,GAAK,EACV,EAAK,GAAK,EACN,UAAU,OAAS,EACrB,OAAS,GAAI,EAAG,EAAI,UAAU,OAAQ,IACpC,EAAK,GAAK,UAAU,GAIxB,IACE,MAAO,OAAM,KAAK,MAAM,KAAM,WAE9B,AAAK,GAAS,GAGZ,KAAK,mBAAmB,GAFxB,KAAK,OAOX,UACE,GAAM,GAAM,GACZ,AAAK,KAAK,KACR,GAAI,WAAa,GAGnB,GAAM,GAAI,KAAK,UACf,YAAK,GAAG,OAAQ,IACd,EAAI,KAAK,GACJ,KAAK,KACR,GAAI,YAAc,EAAE,UAEjB,EAAE,KAAK,IAAM,GAItB,SACE,MAAO,MAAK,IACR,QAAQ,OAAO,GAAI,OAAM,gCACzB,KAAK,UAAU,KAAK,GAClB,KAAK,IACD,QAAQ,OAAO,GAAI,OAAM,gCACzB,KAAK,IAAY,EAAI,KAAK,IAAM,OAAO,OAAO,EAAK,EAAI,aAInE,UACE,MAAO,IAAI,SAAQ,CAAC,EAAS,KAC3B,KAAK,GAAG,GAAW,IAAM,EAAO,GAAI,OAAM,sBAC1C,KAAK,GAAG,MAAO,IAAM,KACrB,KAAK,GAAG,QAAS,GAAM,EAAO,OAKjC,MAsCC,MAAO,CAAE,KArCI,KACX,GAAM,GAAM,KAAK,OACjB,GAAI,IAAQ,KACV,MAAO,SAAQ,QAAQ,CAAE,KAAM,GAAO,MAAO,IAE/C,GAAI,KAAK,IACP,MAAO,SAAQ,QAAQ,CAAE,KAAM,KAEjC,GAAI,GAAU,KACV,EAAS,KACP,EAAQ,IACZ,KAAK,eAAe,OAAQ,GAC5B,KAAK,eAAe,MAAO,GAC3B,EAAO,IAEH,EAAS,IACb,KAAK,eAAe,QAAS,GAC7B,KAAK,eAAe,MAAO,GAC3B,KAAK,QACL,EAAQ,CAAE,MAAO,EAAO,KAAM,CAAC,CAAC,KAAK,OAEjC,EAAQ,KACZ,KAAK,eAAe,QAAS,GAC7B,KAAK,eAAe,OAAQ,GAC5B,EAAQ,CAAE,KAAM,MAEZ,EAAY,IAAM,EAAM,GAAI,OAAM,qBACxC,MAAO,IAAI,SAAQ,CAAC,EAAK,KACvB,EAAS,EACT,EAAU,EACV,KAAK,KAAK,GAAW,GACrB,KAAK,KAAK,QAAS,GACnB,KAAK,KAAK,MAAO,GACjB,KAAK,KAAK,OAAQ,QAQvB,MAMC,MAAO,CAAE,KALI,KACX,GAAM,GAAQ,KAAK,OAEnB,MAAO,CAAE,QAAO,KADH,IAAU,QAM3B,QAAS,GACP,MAAI,MAAK,IACP,CAAI,EACF,KAAK,KAAK,QAAS,GAEnB,KAAK,KAAK,IACL,MAGT,MAAK,IAAa,GAGlB,KAAK,OAAS,GAAI,IAClB,KAAK,IAAgB,EAEjB,MAAO,MAAK,OAAU,YAAc,CAAC,KAAK,KAC5C,KAAK,QAEP,AAAI,EACF,KAAK,KAAK,QAAS,GAEnB,KAAK,KAAK,IAEL,YAGF,UAAU,GACf,MAAO,CAAC,CAAC,GAAM,aAAa,KAAY,YAAa,KACnD,YAAa,KACX,OAAO,GAAE,MAAS,YACjB,MAAO,GAAE,OAAU,YAAc,MAAO,GAAE,KAAQ,iBC7hB3D,mBAIA,GAAM,IAAoB,AAAQ,gBAAQ,WACb,CAAE,YAAa,MAE5C,GAAO,QAAU,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,MAAO,CAChE,WAAY,EACZ,gBAAiB,EACjB,aAAc,EACd,aAAc,EACd,SAAU,EACV,QAAS,EACT,KAAM,EACN,aAAc,EACd,YAAa,EACb,QAAS,GACT,eAAgB,GAChB,aAAc,GACd,YAAa,GACb,YAAa,GACb,gBAAiB,GACjB,iBAAkB,EAClB,aAAc,EACd,mBAAoB,EACpB,sBAAuB,GACvB,WAAY,EACZ,eAAgB,EAChB,MAAO,EACP,QAAS,EACT,mBAAoB,EACpB,QAAS,EACT,QAAS,EACT,KAAM,EACN,OAAQ,EACR,WAAY,EACZ,WAAY,EACZ,MAAO,EACP,cAAe,EACf,cAAe,EACf,iBAAkB,EAClB,iBAAkB,GAClB,qBAAsB,GACtB,YAAa,GACb,YAAa,SACb,gBAAiB,MACjB,eAAgB,EAChB,eAAgB,EAChB,mBAAoB,EACpB,YAAa,GACb,YAAa,EACb,gBAAiB,GACjB,yBAA0B,EAC1B,uBAAwB,EACxB,wBAAyB,EACzB,+BAAgC,EAChC,oBAAqB,EACrB,iBAAkB,EAClB,iBAAkB,EAClB,oBAAqB,EACrB,mBAAoB,EACpB,mBAAoB,GACpB,uBAAwB,GACxB,uBAAwB,GACxB,uBAAwB,GACxB,6BAA8B,GAC9B,sBAAuB,GACvB,4BAA6B,GAC7B,4BAA6B,GAC7B,kBAAmB,EACnB,qBAAsB,EACtB,mBAAoB,EACpB,qBAAsB,EACtB,8CAA+C,EAC/C,uBAAwB,EACxB,0BAA2B,EAC3B,sBAAuB,EACvB,qBAAsB,EACtB,4BAA6B,EAC7B,8BAA+B,EAC/B,uCAAwC,EACxC,wCAAyC,EACzC,sDAAuD,EACvD,kCAAmC,EACnC,wBAAyB,EACzB,uBAAwB,EACxB,gCAAiC,EACjC,iCAAkC,EAClC,6CAA8C,GAC9C,qCAAsC,GACtC,kDAAmD,GACnD,oDAAqD,GACrD,gDAAiD,GACjD,qCAAsC,GACtC,0CAA2C,GAC3C,+CAAgD,GAChD,2CAA4C,GAC5C,2CAA4C,IAC5C,sCAAuC,IACvC,uCAAwC,IACxC,wCAAyC,IACzC,sCAAuC,IACvC,sCAAuC,IACvC,qCAAsC,IACtC,wCAAyC,IACzC,uCAAwC,IACxC,yCAA0C,IAC1C,uCAAwC,IACxC,uCAAwC,IACxC,yCAA0C,IAC1C,yCAA0C,IAC1C,4CAA6C,IAC7C,iCAAkC,KACjC,OClHH,2BAEA,GAAM,IAAiB,kBACjB,GAAS,AAAQ,kBAAU,OAC3B,GAAmB,gBAEnB,GAAY,GAAQ,UAAoB,KACxC,GAAmB,KAEnB,GAAuB,GAAO,OAE9B,GAAc,OAAO,eAX3B,gBAYwB,OACtB,YAAa,GACX,MAAM,SAAW,EAAI,SACrB,KAAK,KAAO,EAAI,KAChB,KAAK,MAAQ,EAAI,MAEZ,KAAK,MACR,MAAK,KAAO,cAEd,KAAK,QAAU,SAAW,EAAI,QAC9B,MAAM,kBAAkB,KAAM,KAAK,gBAGjC,QACF,MAAO,cAQL,GAAQ,OAAO,QACf,GAAa,OAAO,aACpB,GAAmB,OAAO,mBAC1B,GAAiB,OAAO,iBACxB,GAAU,OAAO,UACjB,GAAW,OAAO,WAClB,GAAY,OAAO,YACnB,GAAS,OAAO,SAChB,GAAY,OAAO,YACnB,GAAS,OAAO,SAChB,GAAoB,OAAO,qBA5CjC,gBA8CuB,IACrB,YAAa,EAAM,GACjB,GAAI,CAAC,GAAQ,MAAO,IAAS,SAC3B,KAAM,IAAI,WAAU,4CAEtB,MAAM,GACN,KAAK,IAAa,GAClB,KAAK,IAAU,GACf,KAAK,IAAS,EAEd,KAAK,IAAc,EAAK,MACxB,KAAK,IAAoB,EAAK,YAE9B,IACE,KAAK,IAAW,GAAI,IAAS,GAAM,SAC5B,GAEP,KAAM,IAAI,IAAU,GAGtB,KAAK,IAAY,AAAC,IAEhB,AAAI,KAAK,KAGT,MAAK,IAAa,GAIlB,KAAK,QACL,KAAK,KAAK,QAAS,KAGrB,KAAK,IAAS,GAAG,QAAS,GAAM,KAAK,IAAU,GAAI,IAAU,KAC7D,KAAK,KAAK,MAAO,IAAM,KAAK,OAG9B,QACE,AAAI,KAAK,KACP,MAAK,IAAS,QACd,KAAK,IAAW,KAChB,KAAK,KAAK,UAId,QACE,GAAI,CAAC,KAAK,IACR,UAAO,KAAK,IAAU,uBACf,KAAK,IAAS,QAIzB,MAAO,GACL,AAAI,KAAK,OAGL,OAAO,IAAc,UACvB,GAAY,KAAK,KACnB,KAAK,MAAM,OAAO,OAAO,GAAO,MAAM,GAAI,EAAG,IAAa,MAG5D,IAAK,EAAO,EAAU,GACpB,MAAI,IACF,KAAK,MAAM,EAAO,GACpB,KAAK,MAAM,KAAK,KAChB,KAAK,IAAU,GACR,MAAM,IAAI,KAAM,KAAM,MAG3B,SACF,MAAO,MAAK,IAGd,MAAO,EAAO,EAAU,GAStB,GANI,MAAO,IAAa,YACtB,GAAK,EAAU,EAAW,QAExB,MAAO,IAAU,UACnB,GAAQ,GAAO,KAAK,EAAO,IAEzB,KAAK,IACP,OACF,GAAO,KAAK,IAAU,uBAItB,GAAM,GAAe,KAAK,IAAS,QAC7B,EAAsB,EAAa,MACzC,EAAa,MAAQ,OACrB,GAAM,GAAgB,KAAK,IAAS,MACpC,KAAK,IAAS,MAAQ,OAGtB,GAAO,OAAS,AAAC,GAAS,EAC1B,GAAI,GACJ,IACE,GAAM,GAAY,MAAO,GAAM,KAAgB,SAC3C,EAAM,IAAc,KAAK,IAC7B,EAAS,KAAK,IAAS,cAAc,EAAO,GAE5C,GAAO,OAAS,SACT,GAGP,GAAO,OAAS,GAChB,KAAK,IAAU,GAAI,IAAU,YAE7B,AAAI,KAAK,KAIP,MAAK,IAAS,QAAU,EACxB,EAAa,MAAQ,EACrB,KAAK,IAAS,MAAQ,EAGtB,KAAK,IAAS,mBAAmB,UAKrC,AAAI,KAAK,KACP,KAAK,IAAS,GAAG,QAAS,GAAM,KAAK,IAAU,GAAI,IAAU,KAE/D,GAAI,GACJ,GAAI,EACF,GAAI,MAAM,QAAQ,IAAW,EAAO,OAAS,GAG3C,EAAc,KAAK,IAAa,GAAO,KAAK,EAAO,KACnD,OAAS,GAAI,EAAG,EAAI,EAAO,OAAQ,IACjC,EAAc,KAAK,IAAa,EAAO,QAGzC,GAAc,KAAK,IAAa,GAAO,KAAK,IAIhD,MAAI,IACF,IACK,GAGR,IAAc,GACb,MAAO,OAAM,MAAM,KAhMvB,gBAoMmB,IACjB,YAAa,EAAM,GACjB,EAAO,GAAQ,GAEf,EAAK,MAAQ,EAAK,OAAS,GAAU,WACrC,EAAK,YAAc,EAAK,aAAe,GAAU,SACjD,MAAM,EAAM,GAEZ,KAAK,IAAkB,GAAU,aACjC,KAAK,IAAU,EAAK,MACpB,KAAK,IAAa,EAAK,SAGzB,OAAQ,EAAO,GACb,GAAI,MAAK,KAGT,GAAI,CAAC,KAAK,IACR,KAAM,IAAI,OAAM,+CAIlB,GAAI,CAAC,KAAK,IAAS,OACjB,KAAM,IAAI,OAAM,wCAElB,GAAI,KAAK,MAAY,GAAS,KAAK,MAAe,GAChD,KAAK,MAAM,GAAU,cACrB,GAAO,KAAK,IAAU,uBAItB,GAAM,GAAY,KAAK,IAAS,MAChC,KAAK,IAAS,MAAQ,CAAC,EAAW,KAChC,KAAK,MAAM,GACX,KAEF,IACE,KAAK,IAAS,OAAO,EAAO,WAE5B,KAAK,IAAS,MAAQ,EAGxB,AAAI,KAAK,KACP,MAAK,IAAU,EACf,KAAK,IAAa,OAhP1B,gBAuPsB,IACpB,YAAa,GACX,MAAM,EAAM,aAzPhB,gBA6PsB,IACpB,YAAa,GACX,MAAM,EAAM,aAKV,GAAY,OAAO,aApQzB,gBAqQmB,IACjB,YAAa,GACX,MAAM,EAAM,QACZ,KAAK,IAAa,GAAQ,CAAC,CAAC,EAAK,UAGlC,IAAc,GACb,MAAK,MAAK,IAKV,MAAK,IAAa,GAClB,EAAK,GAAK,IACH,MAAM,IAAa,IANjB,MAAM,IAAa,KA7QhC,gBAuRqB,IACnB,YAAa,GACX,MAAM,EAAM,YAzRhB,gBA8RyB,IACvB,YAAa,GACX,MAAM,EAAM,gBAhShB,gBAoSyB,IACvB,YAAa,GACX,MAAM,EAAM,gBAtShB,gBA2SoB,IAClB,YAAa,GACX,MAAM,EAAM,WA7ShB,gBAiTqB,IACnB,YAAa,EAAM,GACjB,EAAO,GAAQ,GAEf,EAAK,MAAQ,EAAK,OAAS,GAAU,yBACrC,EAAK,YAAc,EAAK,aAAe,GAAU,wBAEjD,MAAM,EAAM,GAEZ,KAAK,IAAkB,GAAU,yBA1TrC,gBA8T6B,IAC3B,YAAa,GACX,MAAM,EAAM,oBAhUhB,gBAoU+B,IAC7B,YAAa,GACX,MAAM,EAAM,sBAIhB,GAAQ,QAAU,GAClB,GAAQ,QAAU,GAClB,GAAQ,KAAO,GACf,GAAQ,OAAS,GACjB,GAAQ,WAAa,GACrB,GAAQ,WAAa,GACrB,GAAQ,MAAQ,GAEhB,AAAI,MAAO,IAAS,gBAAmB,WACrC,IAAQ,eAAiB,GACzB,GAAQ,iBAAmB,IAE3B,GAAQ,eAAiB,GAAQ,iBAAmB,MAClD,cACE,KAAM,IAAI,OAAM,0DCxVtB,gCACA,GAAM,IAAmB,KAEnB,GAAQ,OAAO,SACrB,GAAO,QAAU,aAAwB,IACvC,YAAa,EAAQ,EAAI,GACvB,QAcA,OAVA,KAAK,QACL,KAAK,SAAW,EAChB,KAAK,eAAiB,EACtB,KAAK,OAAS,EACd,KAAK,eAAiB,IAAM,KAAK,KAAK,EAAO,KAAO,KACpD,KAAK,YAAc,KAAK,eACxB,KAAK,OAAS,EAAO,KACrB,KAAK,KAAO,EAAO,KACnB,KAAK,KAAO,GACZ,KAAK,OAAS,GACN,KAAK,UACN,WACA,cACA,WACA,mBACA,sBACA,kBACA,gBACA,WACA,qBACA,aACH,UAEG,8BACA,0BACA,qBACA,2BACA,qBACA,oBACH,KAAK,KAAO,GACZ,cAKA,KAAK,OAAS,GAGlB,KAAK,KAAO,EAAO,KACnB,KAAK,KAAO,EAAO,KACf,KAAK,MACP,MAAK,KAAO,KAAK,KAAO,MAC1B,KAAK,IAAM,EAAO,IAClB,KAAK,IAAM,EAAO,IAClB,KAAK,MAAQ,EAAO,MACpB,KAAK,MAAQ,EAAO,MACpB,KAAK,KAAO,EAAO,KACnB,KAAK,MAAQ,EAAO,MACpB,KAAK,MAAQ,EAAO,MACpB,KAAK,MAAQ,EAAO,MACpB,KAAK,SAAW,EAAO,SACvB,KAAK,MAAQ,EAAO,MACpB,KAAK,MAAQ,EAAO,MAEhB,GACF,KAAK,IAAO,GACV,GACF,KAAK,IAAO,EAAK,IAGrB,MAAO,GACL,GAAM,GAAW,EAAK,OACtB,GAAI,EAAW,KAAK,YAClB,KAAM,IAAI,OAAM,6CAElB,GAAM,GAAI,KAAK,OACT,EAAK,KAAK,YAGhB,MAFA,MAAK,OAAS,KAAK,IAAI,EAAG,EAAI,GAC9B,KAAK,YAAc,KAAK,IAAI,EAAG,EAAK,GAChC,KAAK,OACA,GAEL,GAAK,EACA,MAAM,MAAM,GAGd,MAAM,MAAM,EAAK,MAAM,EAAG,KAGlC,IAAQ,EAAI,GACX,OAAW,KAAK,GAGd,AAAI,EAAG,KAAO,MAAQ,EAAG,KAAO,QAC5B,CAAE,IAAU,IAAM,SACpB,MAAK,GAAK,EAAG,QC/FrB,2BAEA,GAAQ,KAAO,GAAI,KAAI,CACrB,CAAC,IAAK,QAEN,CAAC,GAAI,WACL,CAAC,IAAK,QACN,CAAC,IAAK,gBAGN,CAAC,IAAK,mBACN,CAAC,IAAK,eACN,CAAC,IAAK,aACN,CAAC,IAAK,QAEN,CAAC,IAAK,kBAEN,CAAC,IAAK,wBACN,CAAC,IAAK,kBAGN,CAAC,IAAK,cAEN,CAAC,IAAK,cAEN,CAAC,IAAK,SAEN,CAAC,IAAK,2BAEN,CAAC,IAAK,uBAEN,CAAC,IAAK,oBAEN,CAAC,IAAK,kBAEN,CAAC,IAAK,cAEN,CAAC,IAAK,oBAEN,CAAC,IAAK,uBAIR,GAAQ,KAAO,GAAI,KAAI,MAAM,KAAK,GAAQ,MAAM,IAAI,GAAM,CAAC,EAAG,GAAI,EAAG,QC3CrE,gCAIA,GAAM,IAAS,CAAC,EAAK,KACnB,GAAK,OAAO,cAAc,GAIrB,AAAI,EAAM,EACb,GAAe,EAAK,GAEpB,GAAe,EAAK,OAJpB,MAAM,OAAM,iEAKd,MAAO,IAGH,GAAiB,CAAC,EAAK,KAC3B,EAAI,GAAK,IAET,OAAS,GAAI,EAAI,OAAQ,EAAI,EAAG,IAC9B,EAAI,EAAI,GAAK,EAAM,IACnB,EAAM,KAAK,MAAM,EAAM,MAIrB,GAAiB,CAAC,EAAK,KAC3B,EAAI,GAAK,IACT,GAAI,GAAU,GACd,EAAM,EAAM,GACZ,OAAS,GAAI,EAAI,OAAQ,EAAI,EAAG,KAC9B,GAAI,GAAO,EAAM,IACjB,EAAM,KAAK,MAAM,EAAM,KACvB,AAAI,EACF,EAAI,EAAI,GAAK,GAAS,GACnB,AAAI,IAAS,EAChB,EAAI,EAAI,GAAK,EAEb,GAAU,GACV,EAAI,EAAI,GAAK,GAAS,MAKtB,GAAQ,AAAC,IACb,GAAM,GAAM,EAAI,GACV,EAAQ,IAAQ,IAAO,GAAI,EAAI,MAAM,EAAG,EAAI,SAC9C,IAAQ,IAAO,GAAK,GACpB,KACJ,GAAI,IAAU,KACZ,KAAM,OAAM,4BAEd,GAAI,CAAC,OAAO,cAAc,GAGxB,KAAM,OAAM,0DAEd,MAAO,IAGH,GAAO,AAAC,IAIZ,OAHI,GAAM,EAAI,OACV,EAAM,EACN,EAAU,GACL,EAAI,EAAM,EAAG,EAAI,GAAI,KAC5B,GAAI,GAAO,EAAI,GACX,EACJ,AAAI,EACF,EAAI,GAAS,GACV,AAAI,IAAS,EAChB,EAAI,EAEJ,GAAU,GACV,EAAI,GAAS,IAEX,IAAM,GACR,IAAO,EAAI,KAAK,IAAI,IAAK,EAAM,EAAI,IAEvC,MAAO,IAGH,GAAM,AAAC,IAGX,OAFI,GAAM,EAAI,OACV,EAAM,EACD,EAAI,EAAM,EAAG,EAAI,GAAI,KAC5B,GAAI,GAAO,EAAI,GACf,AAAI,IAAS,GACX,IAAO,EAAO,KAAK,IAAI,IAAK,EAAM,EAAI,IAE1C,MAAO,IAGH,GAAW,GAAS,KAAO,GAAQ,IAEnC,GAAW,GAAU,KAAO,GAAQ,EAAK,IAE/C,GAAO,QAAU,CACf,UACA,YCjGF,gCAMA,GAAM,IAAgB,KAChB,GAAa,AAAQ,gBAAQ,MAC7B,GAAgB,KAEhB,GAAQ,OAAO,SACf,GAAO,OAAO,QAXpB,SAcE,YAAa,EAAM,EAAK,EAAI,GAC1B,KAAK,WAAa,GAClB,KAAK,QAAU,GACf,KAAK,UAAY,GAEjB,KAAK,MAAQ,KACb,KAAK,KAAO,KACZ,KAAK,KAAO,KACZ,KAAK,IAAM,KACX,KAAK,IAAM,KACX,KAAK,KAAO,KACZ,KAAK,MAAQ,KACb,KAAK,MAAQ,KACb,KAAK,IAAQ,IACb,KAAK,SAAW,KAChB,KAAK,MAAQ,KACb,KAAK,MAAQ,KACb,KAAK,OAAS,EACd,KAAK,OAAS,EACd,KAAK,MAAQ,KACb,KAAK,MAAQ,KAEb,AAAI,OAAO,SAAS,GAClB,KAAK,OAAO,EAAM,GAAO,EAAG,EAAI,GACzB,GACP,KAAK,IAAI,GAGb,OAAQ,EAAK,EAAK,EAAI,GAIpB,GAHK,GACH,GAAM,GAEJ,CAAC,GAAO,CAAE,GAAI,QAAU,EAAM,KAChC,KAAM,IAAI,OAAM,6BA+BlB,GA7BA,KAAK,KAAO,GAAU,EAAK,EAAK,KAChC,KAAK,KAAO,GAAU,EAAK,EAAM,IAAK,GACtC,KAAK,IAAM,GAAU,EAAK,EAAM,IAAK,GACrC,KAAK,IAAM,GAAU,EAAK,EAAM,IAAK,GACrC,KAAK,KAAO,GAAU,EAAK,EAAM,IAAK,IACtC,KAAK,MAAQ,GAAQ,EAAK,EAAM,IAAK,IACrC,KAAK,MAAQ,GAAU,EAAK,EAAM,IAAK,IAIvC,KAAK,IAAO,GACZ,KAAK,IAAO,EAAK,IAGjB,KAAK,IAAQ,GAAU,EAAK,EAAM,IAAK,GACnC,KAAK,MAAU,IACjB,MAAK,IAAQ,KACX,KAAK,MAAU,KAAO,KAAK,KAAK,OAAO,MAAQ,KACjD,MAAK,IAAQ,KAOX,KAAK,MAAU,KACjB,MAAK,KAAO,GAEd,KAAK,SAAW,GAAU,EAAK,EAAM,IAAK,KACtC,EAAI,MAAM,EAAM,IAAK,EAAM,KAAK,aAAe,cAKjD,GAJA,KAAK,MAAQ,GAAU,EAAK,EAAM,IAAK,IACvC,KAAK,MAAQ,GAAU,EAAK,EAAM,IAAK,IACvC,KAAK,OAAS,GAAU,EAAK,EAAM,IAAK,GACxC,KAAK,OAAS,GAAU,EAAK,EAAM,IAAK,GACpC,EAAI,EAAM,OAAS,GAErB,GAAM,GAAS,GAAU,EAAK,EAAM,IAAK,KACzC,KAAK,KAAO,EAAS,IAAM,KAAK,UAEhC,GAAM,GAAS,GAAU,EAAK,EAAM,IAAK,KACzC,AAAI,GACF,MAAK,KAAO,EAAS,IAAM,KAAK,MAClC,KAAK,MAAQ,GAAQ,EAAK,EAAM,IAAK,IACrC,KAAK,MAAQ,GAAQ,EAAK,EAAM,IAAK,IAIzC,GAAI,GAAM,EAAI,GACd,OAAS,GAAI,EAAK,EAAI,EAAM,IAAK,IAC/B,GAAO,EAAI,GAEb,OAAS,GAAI,EAAM,IAAK,EAAI,EAAM,IAAK,IACrC,GAAO,EAAI,GAEb,KAAK,WAAa,IAAQ,KAAK,MAC3B,KAAK,QAAU,MAAQ,IAAQ,EAAI,IACrC,MAAK,UAAY,KAGpB,IAAQ,EAAI,GACX,OAAW,KAAK,GAGd,AAAI,EAAG,KAAO,MAAQ,EAAG,KAAO,QAC5B,CAAE,IAAU,IAAM,SACpB,MAAK,GAAK,EAAG,IAInB,OAAQ,EAAK,GASX,GARK,GACH,GAAM,KAAK,MAAQ,OAAO,MAAM,KAChC,EAAM,GAGH,GACH,GAAM,GAEJ,CAAE,GAAI,QAAU,EAAM,KACxB,KAAM,IAAI,OAAM,6BAElB,GAAM,GAAa,KAAK,OAAS,KAAK,MAAQ,IAAM,IAC9C,EAAQ,GAAY,KAAK,MAAQ,GAAI,GACrC,EAAO,EAAM,GACb,EAAS,EAAM,GACrB,KAAK,QAAU,EAAM,GAErB,KAAK,QAAU,GAAU,EAAK,EAAK,IAAK,IAAS,KAAK,QACtD,KAAK,QAAU,GAAU,EAAK,EAAM,IAAK,EAAG,KAAK,OAAS,KAAK,QAC/D,KAAK,QAAU,GAAU,EAAK,EAAM,IAAK,EAAG,KAAK,MAAQ,KAAK,QAC9D,KAAK,QAAU,GAAU,EAAK,EAAM,IAAK,EAAG,KAAK,MAAQ,KAAK,QAC9D,KAAK,QAAU,GAAU,EAAK,EAAM,IAAK,GAAI,KAAK,OAAS,KAAK,QAChE,KAAK,QAAU,GAAQ,EAAK,EAAM,IAAK,GAAI,KAAK,QAAU,KAAK,QAC/D,EAAI,EAAM,KAAO,KAAK,IAAM,WAAW,GACvC,KAAK,QAAU,GAAU,EAAK,EAAM,IAAK,IAAK,KAAK,WAAa,KAAK,QACrE,EAAI,MAAM,cAAiB,EAAM,IAAK,GACtC,KAAK,QAAU,GAAU,EAAK,EAAM,IAAK,GAAI,KAAK,QAAU,KAAK,QACjE,KAAK,QAAU,GAAU,EAAK,EAAM,IAAK,GAAI,KAAK,QAAU,KAAK,QACjE,KAAK,QAAU,GAAU,EAAK,EAAM,IAAK,EAAG,KAAK,SAAW,KAAK,QACjE,KAAK,QAAU,GAAU,EAAK,EAAM,IAAK,EAAG,KAAK,SAAW,KAAK,QACjE,KAAK,QAAU,GAAU,EAAK,EAAM,IAAK,EAAY,IAAW,KAAK,QACrE,AAAI,EAAI,EAAM,OAAS,EACrB,KAAK,QAAU,GAAU,EAAK,EAAM,IAAK,IAAK,IAAW,KAAK,QAE9D,MAAK,QAAU,GAAU,EAAK,EAAM,IAAK,IAAK,IAAW,KAAK,QAC9D,KAAK,QAAU,GAAQ,EAAK,EAAM,IAAK,GAAI,KAAK,QAAU,KAAK,QAC/D,KAAK,QAAU,GAAQ,EAAK,EAAM,IAAK,GAAI,KAAK,QAAU,KAAK,SAGjE,GAAI,GAAM,EAAI,GACd,OAAS,GAAI,EAAK,EAAI,EAAM,IAAK,IAC/B,GAAO,EAAI,GAEb,OAAS,GAAI,EAAM,IAAK,EAAI,EAAM,IAAK,IACrC,GAAO,EAAI,GAEb,YAAK,MAAQ,EACb,GAAU,EAAK,EAAM,IAAK,EAAG,KAAK,OAClC,KAAK,WAAa,GAEX,KAAK,QAGd,IAAK,GACH,OAAW,KAAK,GACd,AAAI,EAAK,KAAO,MAAQ,EAAK,KAAO,QAClC,MAAK,GAAK,EAAK,OAIjB,QACF,MAAO,IAAM,KAAK,IAAI,KAAK,MAAU,KAAK,OAGxC,WACF,MAAO,MAAK,OAGV,MAAM,GACR,AAAI,GAAM,KAAK,IAAI,GACjB,KAAK,IAAQ,GAAM,KAAK,IAAI,GAE5B,KAAK,IAAQ,IAIb,GAAc,CAAC,EAAG,KACtB,GAAM,GAAW,IACb,EAAK,EACL,EAAS,GACT,EACE,EAAO,GAAW,MAAM,GAAG,MAAQ,IAEzC,GAAI,OAAO,WAAW,GAAM,EAC1B,EAAM,CAAC,EAAI,EAAQ,SAGnB,EAAS,GAAW,QAAQ,GAC5B,EAAK,GAAW,SAAS,GAEzB,EAEE,AAAI,QAAO,WAAW,IAAO,GACzB,OAAO,WAAW,IAAW,EAC/B,EAAM,CAAC,EAAI,EAAQ,IAGhB,AAAI,OAAO,WAAW,GAAM,GAC7B,OAAO,WAAW,IAAW,EAC/B,EAAM,CAAC,EAAG,OAAO,EAAG,EAAW,GAAI,EAAQ,IAI3C,GAAK,GAAW,KAAK,GAAW,SAAS,GAAS,GAClD,EAAS,GAAW,QAAQ,UAEvB,IAAW,GAAQ,CAAC,GAG7B,AAAK,GACH,GAAM,CAAC,EAAE,OAAO,EAAG,EAAW,GAAI,GAAI,KAE1C,MAAO,IAGH,GAAY,CAAC,EAAK,EAAK,IAC3B,EAAI,MAAM,EAAK,EAAM,GAAM,SAAS,QAAQ,QAAQ,OAAQ,IAExD,GAAU,CAAC,EAAK,EAAK,IACzB,GAAU,GAAU,EAAK,EAAK,IAE1B,GAAY,GAAO,IAAQ,KAAO,KAAO,GAAI,MAAK,EAAM,KAExD,GAAY,CAAC,EAAK,EAAK,IAC3B,EAAI,GAAO,IAAO,GAAM,MAAM,EAAI,MAAM,EAAK,EAAM,IACjD,GAAe,EAAK,EAAK,GAEvB,GAAU,GAAS,MAAM,GAAS,KAAO,EAEzC,GAAiB,CAAC,EAAK,EAAK,IAChC,GAAQ,SACN,EAAI,MAAM,EAAK,EAAM,GAClB,SAAS,QAAQ,QAAQ,QAAS,IAAI,OAAQ,IAG/C,GAAS,CACb,GAAI,WACJ,EAAG,SAGC,GAAY,CAAC,EAAK,EAAK,EAAM,IACjC,IAAW,KAAO,GAClB,EAAS,GAAO,IAAS,EAAS,EAC7B,IAAM,OAAO,EAAQ,EAAI,MAAM,EAAK,EAAM,IAAQ,IAClD,IAAe,EAAK,EAAK,EAAM,GAAS,IAEzC,GAAiB,CAAC,EAAK,EAAK,EAAM,IACtC,EAAI,MAAM,GAAY,EAAQ,GAAO,EAAK,EAAM,SAE5C,GAAc,CAAC,EAAQ,IAC3B,GAAS,KAAK,MAAM,GAAQ,SAAS,GAAI,GAErC,GAAW,CAAC,EAAQ,IACvB,GAAO,SAAW,EAAO,EAAI,EAC5B,GAAI,OAAM,EAAO,EAAO,OAAS,GAAG,KAAK,KAAO,EAAS,KAAO,KAE9D,GAAU,CAAC,EAAK,EAAK,EAAM,IAC/B,IAAS,KAAO,GAChB,GAAU,EAAK,EAAK,EAAM,EAAK,UAAY,KAGvC,GAAQ,GAAI,OAAM,KAAK,KAAK,MAE5B,GAAY,CAAC,EAAK,EAAK,EAAM,IACjC,IAAW,KAAO,GACjB,GAAI,MAAM,EAAS,GAAO,EAAK,EAAM,QACtC,EAAO,SAAW,OAAO,WAAW,IAAW,EAAO,OAAS,GAEjE,GAAO,QAAU,KC/RjB,gCACA,GAAM,IAAiB,KACjB,GAAe,gBAFrB,SAKE,YAAa,EAAK,GAChB,KAAK,MAAQ,EAAI,OAAS,KAC1B,KAAK,QAAU,EAAI,SAAW,KAC9B,KAAK,QAAU,EAAI,SAAW,KAC9B,KAAK,MAAQ,EAAI,OAAS,KAC1B,KAAK,IAAM,EAAI,KAAO,KACtB,KAAK,MAAQ,EAAI,OAAS,KAC1B,KAAK,SAAW,EAAI,UAAY,KAChC,KAAK,MAAQ,EAAI,OAAS,KAC1B,KAAK,KAAO,EAAI,MAAQ,KACxB,KAAK,KAAO,EAAI,MAAQ,KACxB,KAAK,IAAM,EAAI,KAAO,KACtB,KAAK,MAAQ,EAAI,OAAS,KAC1B,KAAK,IAAM,EAAI,KAAO,KACtB,KAAK,IAAM,EAAI,KAAO,KACtB,KAAK,MAAQ,EAAI,OAAS,KAC1B,KAAK,OAAS,GAAU,GAG1B,SACE,GAAM,GAAO,KAAK,aAClB,GAAI,IAAS,GACX,MAAO,MAET,GAAM,GAAU,OAAO,WAAW,GAG5B,EAAS,IAAM,KAAK,KAAK,EAAI,EAAU,KACvC,EAAM,OAAO,YAAY,GAG/B,OAAS,GAAI,EAAG,EAAI,IAAK,IACvB,EAAI,GAAK,EAEX,GAAI,IAAO,CAIT,KAAO,cAAe,GAAK,SAAS,KAAK,OAAO,MAAM,EAAG,IACzD,KAAM,KAAK,MAAQ,IACnB,IAAK,KAAK,KAAO,KACjB,IAAK,KAAK,KAAO,KACjB,KAAM,EACN,MAAO,KAAK,OAAS,KACrB,KAAM,KAAK,OAAS,uBAAyB,iBAC7C,SAAU,GACV,MAAO,KAAK,OAAS,GACrB,MAAO,KAAK,OAAS,GACrB,OAAQ,EACR,OAAQ,EACR,MAAO,KAAK,OAAS,KACrB,MAAO,KAAK,OAAS,OACpB,OAAO,GAEV,EAAI,MAAM,EAAM,IAAK,EAAS,QAG9B,OAAS,GAAI,EAAU,IAAK,EAAI,EAAI,OAAQ,IAC1C,EAAI,GAAK,EAEX,MAAO,GAGT,aACE,MACE,MAAK,YAAY,QACjB,KAAK,YAAY,SACjB,KAAK,YAAY,SACjB,KAAK,YAAY,OACjB,KAAK,YAAY,OACjB,KAAK,YAAY,SACjB,KAAK,YAAY,WACjB,KAAK,YAAY,WACjB,KAAK,YAAY,OACjB,KAAK,YAAY,SACjB,KAAK,YAAY,YACjB,KAAK,YAAY,SACjB,KAAK,YAAY,QACjB,KAAK,YAAY,OACjB,KAAK,YAAY,SAIrB,YAAa,GACX,GAAI,KAAK,KAAW,MAAQ,KAAK,KAAW,OAC1C,MAAO,GACT,GAAM,GAAI,KAAK,YAAkB,MAAO,KAAK,GAAO,UAAY,IAC5D,KAAK,GACH,EAAI,IACP,KAAU,OAAS,IAAU,OAAS,IAAU,QAC7C,UAAY,IAChB,EAAQ,IAAM,EAAI;AAAA,EACd,EAAU,OAAO,WAAW,GAI9B,EAAS,KAAK,MAAM,KAAK,IAAI,GAAW,KAAK,IAAI,KAAO,EAC5D,MAAI,GAAU,GAAU,KAAK,IAAI,GAAI,IACnC,IAAU,GAEL,AADK,EAAS,EACR,IAIjB,GAAI,MAAQ,CAAC,EAAQ,EAAI,IAAM,GAAI,IAAI,GAAM,GAAQ,GAAS,GAAK,GAEnE,GAAM,IAAQ,CAAC,EAAG,IAChB,EAAI,OAAO,KAAK,GAAG,OAAO,CAAC,EAAG,IAAO,GAAE,GAAK,EAAE,GAAI,GAAI,GAAK,EAEvD,GAAU,GACd,EACG,QAAQ,MAAO,IACf,MAAM;AAAA,GACN,OAAO,GAAa,OAAO,OAAO,OAEjC,GAAc,CAAC,EAAK,KACxB,GAAM,GAAI,SAAS,EAAM,IAIzB,GAAI,IAAM,OAAO,WAAW,GAAQ,EAClC,MAAO,GAET,EAAO,EAAK,OAAQ,GAAI,KAAK,QAC7B,GAAM,GAAK,EAAK,MAAM,KAChB,EAAI,EAAG,QAAQ,QAAQ,2BAA4B,MACzD,GAAI,CAAC,EACH,MAAO,GAET,GAAM,GAAI,EAAG,KAAK,KAClB,SAAI,GAAK,0CAA0C,KAAK,GACpD,GAAI,MAAK,EAAI,KACb,WAAW,KAAK,GAAK,CAAC,EACtB,EACG,GAGT,GAAO,QAAU,KC9IjB,gCACA,GAAO,QAAU,GAAQ,aAAc,GACrC,KAAM,EAAM,EAAS,EAAO,IAC1B,AAAI,KAAK,MACP,GAAK,KAAO,KAAK,MACf,KAAK,KACP,GAAK,IAAM,KAAK,KAClB,EAAK,KAAO,YAAmB,QAAS,EAAQ,MAAQ,EACxD,EAAK,QAAU,EACf,AAAI,CAAC,KAAK,QAAU,EAAK,cAAgB,GACnC,aAAmB,QACrB,GAAO,OAAO,OAAO,EAAS,GAC9B,EAAU,EAAQ,SAEpB,KAAK,KAAK,OAAQ,EAAK,QAAS,EAAS,IACpC,AAAI,YAAmB,OAC5B,KAAK,KAAK,QAAS,OAAO,OAAO,EAAS,IAE1C,KAAK,KAAK,QAAS,OAAO,OAAO,GAAI,OAAM,GAAG,MAAS,KAAY,QClBzE,gCAKA,GAAM,IAAM,CACV,IACA,IACA,IACA,IACA,KAGI,GAAM,GAAI,IAAI,GAClB,OAAO,aAAa,MAAS,EAAK,WAAW,KAEzC,GAAQ,GAAI,KAAI,GAAI,IAAI,CAAC,EAAM,IAAM,CAAC,EAAM,GAAI,MAChD,GAAQ,GAAI,KAAI,GAAI,IAAI,CAAC,EAAM,IAAM,CAAC,EAAM,GAAI,MAEtD,GAAO,QAAU,CACf,OAAQ,GAAK,GAAI,OAAO,CAAC,EAAG,IAAM,EAAE,MAAM,GAAG,KAAK,GAAM,IAAI,IAAK,GACjE,OAAQ,GAAK,GAAI,OAAO,CAAC,EAAG,IAAM,EAAE,MAAM,GAAG,KAAK,GAAM,IAAI,IAAK,MCrBnE,gCACA,GAAO,QAAU,CAAC,EAAM,EAAO,IAC7B,IAAQ,KAOJ,GACF,GAAQ,GAAO,KAAS,CAAC,IAGvB,GACE,GAAO,KACT,IAAQ,IACN,EAAO,IACT,IAAQ,GACN,EAAO,GACT,IAAQ,IAEL,KCrBT,gCACA,GAAM,IAAmB,KACnB,GAAc,KACd,GAAiB,KACjB,GAAa,cACb,GAAe,gBAEf,GAAc,GAAK,KAAO,KAC1B,GAAU,OAAO,WACjB,GAAO,OAAO,QACd,GAAY,OAAO,aACnB,GAAU,OAAO,WACjB,GAAW,OAAO,YAClB,GAAS,OAAO,UAChB,GAAO,OAAO,QACd,GAAQ,OAAO,SACf,GAAU,OAAO,WACjB,GAAS,OAAO,UAChB,GAAa,OAAO,cACpB,GAAW,OAAO,YAClB,GAAa,OAAO,cACpB,GAAQ,OAAO,SACf,GAAO,OAAO,QACd,GAAiB,KACjB,GAAmB,KAEnB,GAAkB,KAElB,GAAa,GAAO,aAAyB,IACjD,YAAa,EAAG,GAGd,GAFA,EAAM,GAAO,GACb,MAAM,GACF,MAAO,IAAM,SACf,KAAM,IAAI,WAAU,oBACtB,KAAK,KAAO,EAEZ,KAAK,SAAW,CAAC,CAAC,EAAI,SAEtB,KAAK,MAAQ,QAAQ,QAAU,QAAQ,SACvC,KAAK,OAAS,QAAQ,IAAI,MAAQ,GAClC,KAAK,YAAc,EAAI,aAAe,GACtC,KAAK,UAAY,EAAI,WAAa,GAAI,KACtC,KAAK,UAAY,EAAI,WAAa,GAAI,KACtC,KAAK,cAAgB,CAAC,CAAC,EAAI,cAC3B,KAAK,IAAM,EAAI,KAAO,QAAQ,MAC9B,KAAK,OAAS,CAAC,CAAC,EAAI,OACpB,KAAK,MAAQ,CAAC,CAAC,EAAI,MACnB,KAAK,QAAU,CAAC,CAAC,EAAI,QACrB,KAAK,MAAQ,EAAI,OAAS,KAEtB,MAAO,GAAI,QAAW,YACxB,KAAK,GAAG,OAAQ,EAAI,QAEtB,GAAI,GAAW,GACf,GAAI,CAAC,KAAK,eAAiB,GAAK,MAAM,WAAW,IAG/C,GAAM,GAAS,GAAK,MAAM,MAAM,GAChC,KAAK,KAAO,EAAE,OAAO,EAAO,KAAK,QACjC,EAAW,EAAO,KAGpB,KAAK,MAAQ,CAAC,CAAC,EAAI,OAAS,QAAQ,WAAa,QAC7C,KAAK,OACP,MAAK,KAAO,GAAS,OAAO,KAAK,KAAK,QAAQ,MAAO,MACrD,EAAI,EAAE,QAAQ,MAAO,MAGvB,KAAK,SAAW,EAAI,UAAY,GAAK,QAAQ,KAAK,IAAK,GAEnD,KAAK,OAAS,IAChB,MAAK,KAAO,MAEV,GACF,KAAK,KAAK,iBAAkB,aAAa,uBAA+B,CACtE,MAAO,KACP,KAAM,EAAW,KAAK,OAI1B,AAAI,KAAK,UAAU,IAAI,KAAK,UAC1B,KAAK,IAAS,KAAK,UAAU,IAAI,KAAK,WAEtC,KAAK,OAGR,MACC,GAAG,MAAM,KAAK,SAAU,CAAC,EAAI,KAC3B,GAAI,EACF,MAAO,MAAK,KAAK,QAAS,GAC5B,KAAK,IAAS,MAIjB,IAAU,GACT,KAAK,UAAU,IAAI,KAAK,SAAU,GAClC,KAAK,KAAO,EACP,EAAK,UACR,GAAK,KAAO,GACd,KAAK,KAAO,GAAQ,GACpB,KAAK,KAAK,OAAQ,GAClB,KAAK,OAGN,MACC,OAAQ,KAAK,UACN,OAAQ,MAAO,MAAK,UACpB,YAAa,MAAO,MAAK,UACzB,eAAgB,MAAO,MAAK,cAExB,MAAO,MAAK,QAIxB,IAAO,GACN,MAAO,IAAQ,EAAM,KAAK,OAAS,YAAa,KAAK,WAGtD,MACC,AAAI,KAAK,OAAS,aAAe,KAAK,UACpC,MAAK,QAAU,IAEjB,KAAK,OAAS,GAAI,IAAO,CACvB,KAAM,KAAK,KACX,SAAU,KAAK,SAGf,KAAM,KAAK,IAAM,KAAK,KAAK,MAC3B,IAAK,KAAK,SAAW,KAAO,KAAK,KAAK,IACtC,IAAK,KAAK,SAAW,KAAO,KAAK,KAAK,IACtC,KAAM,KAAK,KAAK,KAChB,MAAO,KAAK,QAAU,KAAO,KAAK,OAAS,KAAK,KAAK,MACrD,KAAM,KAAK,KACX,MAAO,KAAK,SAAW,KACvB,KAAK,KAAK,MAAQ,KAAK,MAAQ,KAAK,OAAS,GAC7C,MAAO,KAAK,SAAW,KAAO,KAAK,KAAK,MACxC,MAAO,KAAK,SAAW,KAAO,KAAK,KAAK,QAGtC,KAAK,OAAO,UAAY,CAAC,KAAK,OAChC,KAAK,MAAM,GAAI,IAAI,CACjB,MAAO,KAAK,SAAW,KAAO,KAAK,OAAO,MAC1C,MAAO,KAAK,SAAW,KAAO,KAAK,OAAO,MAC1C,IAAK,KAAK,SAAW,KAAO,KAAK,OAAO,IACxC,MAAO,KAAK,QAAU,KAAO,KAAK,OAAS,KAAK,OAAO,MACvD,KAAM,KAAK,KACX,SAAU,KAAK,SACf,KAAM,KAAK,OAAO,KAClB,IAAK,KAAK,SAAW,KAAO,KAAK,OAAO,IACxC,MAAO,KAAK,SAAW,KAAO,KAAK,OAAO,MAC1C,IAAK,KAAK,SAAW,KAAO,KAAK,KAAK,IACtC,IAAK,KAAK,SAAW,KAAO,KAAK,KAAK,IACtC,MAAO,KAAK,SAAW,KAAO,KAAK,KAAK,QACvC,UAEL,KAAK,MAAM,KAAK,OAAO,QAGxB,MACC,AAAI,KAAK,KAAK,OAAO,MAAQ,KAC3B,MAAK,MAAQ,KACf,KAAK,KAAK,KAAO,EACjB,KAAK,MACL,KAAK,OAGN,MACC,GAAG,SAAS,KAAK,SAAU,CAAC,EAAI,KAC9B,GAAI,EACF,MAAO,MAAK,KAAK,QAAS,GAC5B,KAAK,IAAY,MAIpB,IAAa,GACZ,KAAK,SAAW,EAAS,QAAQ,MAAO,KACxC,KAAK,MACL,KAAK,OAGN,IAAW,GACV,KAAK,KAAO,OACZ,KAAK,SAAW,GAAK,SAAS,KAAK,IAAK,GAAU,QAAQ,MAAO,KACjE,KAAK,KAAK,KAAO,EACjB,KAAK,MACL,KAAK,OAGN,MACC,GAAI,KAAK,KAAK,MAAQ,GACpB,GAAM,GAAU,KAAK,KAAK,IAAM,IAAM,KAAK,KAAK,IAChD,GAAI,KAAK,UAAU,IAAI,IACrB,GAAM,GAAW,KAAK,UAAU,IAAI,GACpC,GAAI,EAAS,QAAQ,KAAK,OAAS,EACjC,MAAO,MAAK,IAAU,GAE1B,KAAK,UAAU,IAAI,EAAS,KAAK,UAInC,GADA,KAAK,MACD,KAAK,KAAK,OAAS,EACrB,MAAO,MAAK,MAEd,KAAK,OAGN,MACC,GAAG,KAAK,KAAK,SAAU,IAAK,CAAC,EAAI,KAC/B,GAAI,EACF,MAAO,MAAK,KAAK,QAAS,GAC5B,KAAK,IAAY,MAIpB,IAAa,GACZ,GAAM,GAAW,IAAM,KAAK,KAAK,KAAK,KAAK,KAAO,KAC5C,EAAS,KAAK,IAAI,EAAU,KAAK,aACjC,EAAM,OAAO,YAAY,GAC/B,KAAK,IAAM,EAAI,EAAK,EAAG,EAAI,OAAQ,EAAG,KAAK,KAAK,KAAM,IAGvD,IAAO,EAAI,EAAK,EAAQ,EAAQ,EAAK,EAAQ,GAC5C,GAAG,KAAK,EAAI,EAAK,EAAQ,EAAQ,EAAK,CAAC,EAAI,KACzC,GAAI,EAGF,MAAO,MAAK,IAAO,EAAI,IAAM,KAAK,KAAK,QAAS,IAElD,KAAK,IAAQ,EAAI,EAAK,EAAQ,EAAQ,EAAK,EAAQ,EAAa,MAInE,IAAQ,EAAI,GACX,GAAG,MAAM,EAAI,IAGd,IAAS,EAAI,EAAK,EAAQ,EAAQ,EAAK,EAAQ,EAAa,GAC3D,GAAI,GAAa,GAAK,EAAS,GAC7B,GAAM,GAAK,GAAI,OAAM,8BACrB,SAAG,KAAO,KAAK,SACf,EAAG,QAAU,OACb,EAAG,KAAO,MACH,KAAK,IAAO,EAAI,IAAM,KAAK,KAAK,QAAS,IAGlD,GAAI,EAAY,GACd,GAAM,GAAK,GAAI,OAAM,kCACrB,SAAG,KAAO,KAAK,SACf,EAAG,QAAU,OACb,EAAG,KAAO,MACH,KAAK,IAAO,EAAI,IAAM,KAAK,KAAK,QAAS,IAIlD,GAAI,IAAc,EAChB,OAAS,GAAI,EAAW,EAAI,GAAU,EAAY,EAAa,IAC7D,EAAI,EAAI,GAAU,EAClB,IACA,IAIJ,GAAM,GAAW,IAAW,GAAK,IAAc,EAAI,OACjD,EAAM,EAAI,MAAM,EAAQ,EAAS,GAQnC,GAPA,GAAU,EACV,GAAe,EACf,GAAO,EACP,GAAU,EAEV,KAAK,MAAM,GAEP,CAAC,EACH,MAAI,IACF,KAAK,MAAM,OAAO,MAAM,IACnB,KAAK,IAAO,EAAI,GAAM,EAAK,KAAK,KAAK,QAAS,GAAM,KAAK,OAGlE,AAAI,GAAU,GACZ,GAAM,OAAO,YAAY,GACzB,EAAS,GAEX,EAAS,EAAI,OAAS,EACtB,KAAK,IAAM,EAAI,EAAK,EAAQ,EAAQ,EAAK,EAAQ,MA1RrD,gBA8R6B,KAC1B,MACC,KAAK,IAAS,GAAG,UAAU,KAAK,YAGjC,MACC,KAAK,IAAY,GAAG,aAAa,KAAK,YAGvC,MACC,KAAK,IAAY,GAAG,SAAS,KAAK,SAAU,OAG7C,IAAO,EAAI,EAAK,EAAQ,EAAQ,EAAK,EAAQ,GAC5C,GAAI,GAAQ,GACZ,IACE,GAAM,GAAY,GAAG,SAAS,EAAI,EAAK,EAAQ,EAAQ,GACvD,KAAK,IAAQ,EAAI,EAAK,EAAQ,EAAQ,EAAK,EAAQ,EAAa,GAChE,EAAQ,WAIR,GAAI,EACF,IACE,KAAK,IAAO,EAAI,cACT,OAKd,IAAQ,EAAI,GACX,GAAG,UAAU,GACb,MAIE,GAAgB,GAAO,aAA4B,IACvD,YAAa,EAAW,GACtB,EAAM,GAAO,GACb,MAAM,GACN,KAAK,cAAgB,CAAC,CAAC,EAAI,cAC3B,KAAK,SAAW,CAAC,CAAC,EAAI,SACtB,KAAK,OAAS,CAAC,CAAC,EAAI,OACpB,KAAK,MAAQ,CAAC,CAAC,EAAI,MACnB,KAAK,QAAU,CAAC,CAAC,EAAI,QAErB,KAAK,UAAY,EACjB,KAAK,KAAO,EAAU,KAClB,KAAK,OAAS,aAAe,KAAK,UACpC,MAAK,QAAU,IAEjB,KAAK,KAAO,EAAU,KACtB,KAAK,KAAO,KAAK,IAAM,EAAU,MACjC,KAAK,IAAM,KAAK,SAAW,KAAO,EAAU,IAC5C,KAAK,IAAM,KAAK,SAAW,KAAO,EAAU,IAC5C,KAAK,MAAQ,KAAK,SAAW,KAAO,EAAU,MAC9C,KAAK,MAAQ,KAAK,SAAW,KAAO,EAAU,MAC9C,KAAK,KAAO,EAAU,KACtB,KAAK,MAAQ,KAAK,QAAU,KAAO,EAAI,OAAS,EAAU,MAC1D,KAAK,MAAQ,KAAK,SAAW,KAAO,EAAU,MAC9C,KAAK,MAAQ,KAAK,SAAW,KAAO,EAAU,MAC9C,KAAK,SAAW,EAAU,SAEtB,MAAO,GAAI,QAAW,YACxB,KAAK,GAAG,OAAQ,EAAI,QAEtB,GAAI,GAAW,GACf,GAAI,GAAK,WAAW,KAAK,OAAS,CAAC,KAAK,eACtC,GAAM,GAAS,GAAK,MAAM,KAAK,MAC/B,EAAW,EAAO,KAClB,KAAK,KAAO,KAAK,KAAK,OAAO,EAAO,KAAK,QAG3C,KAAK,OAAS,EAAU,KACxB,KAAK,YAAc,EAAU,eAE7B,KAAK,OAAS,GAAI,IAAO,CACvB,KAAM,KAAK,KACX,SAAU,KAAK,SAGf,KAAM,KAAK,KACX,IAAK,KAAK,SAAW,KAAO,KAAK,IACjC,IAAK,KAAK,SAAW,KAAO,KAAK,IACjC,KAAM,KAAK,KACX,MAAO,KAAK,QAAU,KAAO,KAAK,MAClC,KAAM,KAAK,KACX,MAAO,KAAK,SAAW,KAAO,KAAK,MACnC,MAAO,KAAK,SAAW,KAAO,KAAK,MACnC,MAAO,KAAK,SAAW,KAAO,KAAK,QAGjC,GACF,KAAK,KAAK,iBAAkB,aAAa,uBAA+B,CACtE,MAAO,KACP,KAAM,EAAW,KAAK,OAItB,KAAK,OAAO,UAAY,CAAC,KAAK,OAChC,MAAM,MAAM,GAAI,IAAI,CAClB,MAAO,KAAK,SAAW,KAAO,KAAK,MACnC,MAAO,KAAK,SAAW,KAAO,KAAK,MACnC,IAAK,KAAK,SAAW,KAAO,KAAK,IACjC,MAAO,KAAK,QAAU,KAAO,KAAK,MAClC,KAAM,KAAK,KACX,SAAU,KAAK,SACf,KAAM,KAAK,KACX,IAAK,KAAK,SAAW,KAAO,KAAK,IACjC,MAAO,KAAK,SAAW,KAAO,KAAK,MACnC,IAAK,KAAK,SAAW,KAAO,KAAK,UAAU,IAC3C,IAAK,KAAK,SAAW,KAAO,KAAK,UAAU,IAC3C,MAAO,KAAK,SAAW,KAAO,KAAK,UAAU,QAC5C,UAGL,MAAM,MAAM,KAAK,OAAO,OACxB,EAAU,KAAK,OAGhB,IAAO,GACN,MAAO,IAAQ,EAAM,KAAK,OAAS,YAAa,KAAK,UAGvD,MAAO,GACL,GAAM,GAAW,EAAK,OACtB,GAAI,EAAW,KAAK,YAClB,KAAM,IAAI,OAAM,6CAClB,YAAK,aAAe,EACb,MAAM,MAAM,GAGrB,MACE,MAAI,MAAK,aACP,KAAK,MAAM,OAAO,MAAM,KAAK,cACxB,MAAM,SAIjB,GAAW,KAAO,GAClB,GAAW,IAAM,GAEjB,GAAM,IAAU,GACd,EAAK,SAAW,OACd,EAAK,cAAgB,YACrB,EAAK,iBAAmB,eACxB,cAEJ,GAAO,QAAU,KClbjB,gCACA,GAAO,QAAU,SAAU,GACzB,EAAQ,UAAU,OAAO,UAAY,YACnC,OAAS,GAAS,KAAK,KAAM,EAAQ,EAAS,EAAO,KACnD,KAAM,GAAO,UCJnB,gCACA,GAAO,QAAU,EAEjB,EAAQ,KAAO,GACf,EAAQ,OAAS,EAEjB,WAAkB,GAChB,GAAI,GAAO,KASX,GARM,YAAgB,IACpB,GAAO,GAAI,IAGb,EAAK,KAAO,KACZ,EAAK,KAAO,KACZ,EAAK,OAAS,EAEV,GAAQ,MAAO,GAAK,SAAY,WAClC,EAAK,QAAQ,SAAU,GACrB,EAAK,KAAK,aAEH,UAAU,OAAS,EAC5B,OAAS,GAAI,EAAG,EAAI,UAAU,OAAQ,EAAI,EAAG,IAC3C,EAAK,KAAK,UAAU,IAIxB,MAAO,GAGT,EAAQ,UAAU,WAAa,SAAU,GACvC,GAAI,EAAK,OAAS,KAChB,KAAM,IAAI,OAAM,oDAGlB,GAAI,GAAO,EAAK,KACZ,EAAO,EAAK,KAEhB,MAAI,IACF,GAAK,KAAO,GAGV,GACF,GAAK,KAAO,GAGV,IAAS,KAAK,MAChB,MAAK,KAAO,GAEV,IAAS,KAAK,MAChB,MAAK,KAAO,GAGd,EAAK,KAAK,SACV,EAAK,KAAO,KACZ,EAAK,KAAO,KACZ,EAAK,KAAO,KAEL,GAGT,EAAQ,UAAU,YAAc,SAAU,GACxC,GAAI,IAAS,KAAK,MAIlB,AAAI,EAAK,MACP,EAAK,KAAK,WAAW,GAGvB,GAAI,GAAO,KAAK,KAChB,EAAK,KAAO,KACZ,EAAK,KAAO,EACR,GACF,GAAK,KAAO,GAGd,KAAK,KAAO,EACP,KAAK,MACR,MAAK,KAAO,GAEd,KAAK,WAGP,EAAQ,UAAU,SAAW,SAAU,GACrC,GAAI,IAAS,KAAK,MAIlB,AAAI,EAAK,MACP,EAAK,KAAK,WAAW,GAGvB,GAAI,GAAO,KAAK,KAChB,EAAK,KAAO,KACZ,EAAK,KAAO,EACR,GACF,GAAK,KAAO,GAGd,KAAK,KAAO,EACP,KAAK,MACR,MAAK,KAAO,GAEd,KAAK,WAGP,EAAQ,UAAU,KAAO,WACvB,OAAS,GAAI,EAAG,EAAI,UAAU,OAAQ,EAAI,EAAG,IAC3C,GAAK,KAAM,UAAU,IAEvB,MAAO,MAAK,QAGd,EAAQ,UAAU,QAAU,WAC1B,OAAS,GAAI,EAAG,EAAI,UAAU,OAAQ,EAAI,EAAG,IAC3C,GAAQ,KAAM,UAAU,IAE1B,MAAO,MAAK,QAGd,EAAQ,UAAU,IAAM,WACtB,GAAI,EAAC,KAAK,MAIV,GAAI,GAAM,KAAK,KAAK,MACpB,YAAK,KAAO,KAAK,KAAK,KACtB,AAAI,KAAK,KACP,KAAK,KAAK,KAAO,KAEjB,KAAK,KAAO,KAEd,KAAK,SACE,IAGT,EAAQ,UAAU,MAAQ,WACxB,GAAI,EAAC,KAAK,MAIV,GAAI,GAAM,KAAK,KAAK,MACpB,YAAK,KAAO,KAAK,KAAK,KACtB,AAAI,KAAK,KACP,KAAK,KAAK,KAAO,KAEjB,KAAK,KAAO,KAEd,KAAK,SACE,IAGT,EAAQ,UAAU,QAAU,SAAU,EAAI,GACxC,EAAQ,GAAS,KACjB,OAAS,GAAS,KAAK,KAAM,EAAI,EAAG,IAAW,KAAM,IACnD,EAAG,KAAK,EAAO,EAAO,MAAO,EAAG,MAChC,EAAS,EAAO,MAIpB,EAAQ,UAAU,eAAiB,SAAU,EAAI,GAC/C,EAAQ,GAAS,KACjB,OAAS,GAAS,KAAK,KAAM,EAAI,KAAK,OAAS,EAAG,IAAW,KAAM,IACjE,EAAG,KAAK,EAAO,EAAO,MAAO,EAAG,MAChC,EAAS,EAAO,MAIpB,EAAQ,UAAU,IAAM,SAAU,GAChC,OAAS,GAAI,EAAG,EAAS,KAAK,KAAM,IAAW,MAAQ,EAAI,EAAG,IAE5D,EAAS,EAAO,KAElB,GAAI,IAAM,GAAK,IAAW,KACxB,MAAO,GAAO,OAIlB,EAAQ,UAAU,WAAa,SAAU,GACvC,OAAS,GAAI,EAAG,EAAS,KAAK,KAAM,IAAW,MAAQ,EAAI,EAAG,IAE5D,EAAS,EAAO,KAElB,GAAI,IAAM,GAAK,IAAW,KACxB,MAAO,GAAO,OAIlB,EAAQ,UAAU,IAAM,SAAU,EAAI,GACpC,EAAQ,GAAS,KAEjB,OADI,GAAM,GAAI,GACL,EAAS,KAAK,KAAM,IAAW,MACtC,EAAI,KAAK,EAAG,KAAK,EAAO,EAAO,MAAO,OACtC,EAAS,EAAO,KAElB,MAAO,IAGT,EAAQ,UAAU,WAAa,SAAU,EAAI,GAC3C,EAAQ,GAAS,KAEjB,OADI,GAAM,GAAI,GACL,EAAS,KAAK,KAAM,IAAW,MACtC,EAAI,KAAK,EAAG,KAAK,EAAO,EAAO,MAAO,OACtC,EAAS,EAAO,KAElB,MAAO,IAGT,EAAQ,UAAU,OAAS,SAAU,EAAI,GACvC,GAAI,GACA,EAAS,KAAK,KAClB,GAAI,UAAU,OAAS,EACrB,EAAM,UACG,KAAK,KACd,EAAS,KAAK,KAAK,KACnB,EAAM,KAAK,KAAK,UAEhB,MAAM,IAAI,WAAU,8CAGtB,OAAS,GAAI,EAAG,IAAW,KAAM,IAC/B,EAAM,EAAG,EAAK,EAAO,MAAO,GAC5B,EAAS,EAAO,KAGlB,MAAO,IAGT,EAAQ,UAAU,cAAgB,SAAU,EAAI,GAC9C,GAAI,GACA,EAAS,KAAK,KAClB,GAAI,UAAU,OAAS,EACrB,EAAM,UACG,KAAK,KACd,EAAS,KAAK,KAAK,KACnB,EAAM,KAAK,KAAK,UAEhB,MAAM,IAAI,WAAU,8CAGtB,OAAS,GAAI,KAAK,OAAS,EAAG,IAAW,KAAM,IAC7C,EAAM,EAAG,EAAK,EAAO,MAAO,GAC5B,EAAS,EAAO,KAGlB,MAAO,IAGT,EAAQ,UAAU,QAAU,WAE1B,OADI,GAAM,GAAI,OAAM,KAAK,QAChB,EAAI,EAAG,EAAS,KAAK,KAAM,IAAW,KAAM,IACnD,EAAI,GAAK,EAAO,MAChB,EAAS,EAAO,KAElB,MAAO,IAGT,EAAQ,UAAU,eAAiB,WAEjC,OADI,GAAM,GAAI,OAAM,KAAK,QAChB,EAAI,EAAG,EAAS,KAAK,KAAM,IAAW,KAAM,IACnD,EAAI,GAAK,EAAO,MAChB,EAAS,EAAO,KAElB,MAAO,IAGT,EAAQ,UAAU,MAAQ,SAAU,EAAM,GACxC,EAAK,GAAM,KAAK,OACZ,EAAK,GACP,IAAM,KAAK,QAEb,EAAO,GAAQ,EACX,EAAO,GACT,IAAQ,KAAK,QAEf,GAAI,GAAM,GAAI,GACd,GAAI,EAAK,GAAQ,EAAK,EACpB,MAAO,GAET,AAAI,EAAO,GACT,GAAO,GAEL,EAAK,KAAK,QACZ,GAAK,KAAK,QAEZ,OAAS,GAAI,EAAG,EAAS,KAAK,KAAM,IAAW,MAAQ,EAAI,EAAM,IAC/D,EAAS,EAAO,KAElB,KAAO,IAAW,MAAQ,EAAI,EAAI,IAAK,EAAS,EAAO,KACrD,EAAI,KAAK,EAAO,OAElB,MAAO,IAGT,EAAQ,UAAU,aAAe,SAAU,EAAM,GAC/C,EAAK,GAAM,KAAK,OACZ,EAAK,GACP,IAAM,KAAK,QAEb,EAAO,GAAQ,EACX,EAAO,GACT,IAAQ,KAAK,QAEf,GAAI,GAAM,GAAI,GACd,GAAI,EAAK,GAAQ,EAAK,EACpB,MAAO,GAET,AAAI,EAAO,GACT,GAAO,GAEL,EAAK,KAAK,QACZ,GAAK,KAAK,QAEZ,OAAS,GAAI,KAAK,OAAQ,EAAS,KAAK,KAAM,IAAW,MAAQ,EAAI,EAAI,IACvE,EAAS,EAAO,KAElB,KAAO,IAAW,MAAQ,EAAI,EAAM,IAAK,EAAS,EAAO,KACvD,EAAI,KAAK,EAAO,OAElB,MAAO,IAGT,EAAQ,UAAU,OAAS,SAAU,EAAO,KAAgB,GAC1D,AAAI,EAAQ,KAAK,QACf,GAAQ,KAAK,OAAS,GAEpB,EAAQ,GACV,GAAQ,KAAK,OAAS,GAGxB,OAAS,GAAI,EAAG,EAAS,KAAK,KAAM,IAAW,MAAQ,EAAI,EAAO,IAChE,EAAS,EAAO,KAIlB,OADI,GAAM,GACD,EAAI,EAAG,GAAU,EAAI,EAAa,IACzC,EAAI,KAAK,EAAO,OAChB,EAAS,KAAK,WAAW,GAE3B,AAAI,IAAW,MACb,GAAS,KAAK,MAGZ,IAAW,KAAK,MAAQ,IAAW,KAAK,MAC1C,GAAS,EAAO,MAGlB,OAAS,GAAI,EAAG,EAAI,EAAM,OAAQ,IAChC,EAAS,GAAO,KAAM,EAAQ,EAAM,IAEtC,MAAO,IAGT,EAAQ,UAAU,QAAU,WAG1B,OAFI,GAAO,KAAK,KACZ,EAAO,KAAK,KACP,EAAS,EAAM,IAAW,KAAM,EAAS,EAAO,MACvD,GAAI,GAAI,EAAO,KACf,EAAO,KAAO,EAAO,KACrB,EAAO,KAAO,EAEhB,YAAK,KAAO,EACZ,KAAK,KAAO,EACL,MAGT,YAAiB,EAAM,EAAM,GAC3B,GAAI,GAAW,IAAS,EAAK,KAC3B,GAAI,IAAK,EAAO,KAAM,EAAM,GAC5B,GAAI,IAAK,EAAO,EAAM,EAAK,KAAM,GAEnC,MAAI,GAAS,OAAS,MACpB,GAAK,KAAO,GAEV,EAAS,OAAS,MACpB,GAAK,KAAO,GAGd,EAAK,SAEE,EAGT,YAAe,EAAM,GACnB,EAAK,KAAO,GAAI,IAAK,EAAM,EAAK,KAAM,KAAM,GACvC,EAAK,MACR,GAAK,KAAO,EAAK,MAEnB,EAAK,SAGP,YAAkB,EAAM,GACtB,EAAK,KAAO,GAAI,IAAK,EAAM,KAAM,EAAK,KAAM,GACvC,EAAK,MACR,GAAK,KAAO,EAAK,MAEnB,EAAK,SAGP,YAAe,EAAO,EAAM,EAAM,GAChC,GAAI,CAAE,gBAAgB,KACpB,MAAO,IAAI,IAAK,EAAO,EAAM,EAAM,GAGrC,KAAK,KAAO,EACZ,KAAK,MAAQ,EAEb,AAAI,EACF,GAAK,KAAO,KACZ,KAAK,KAAO,GAEZ,KAAK,KAAO,KAGd,AAAI,EACF,GAAK,KAAO,KACZ,KAAK,KAAO,GAEZ,KAAK,KAAO,KAIhB,IAEE,AAAQ,KAAiB,SAClB,OCzaT,6CAYE,YAAa,EAAM,GACjB,KAAK,KAAO,GAAQ,KACpB,KAAK,SAAW,EAChB,KAAK,MAAQ,KACb,KAAK,KAAO,KACZ,KAAK,QAAU,KACf,KAAK,QAAU,GACf,KAAK,OAAS,GACd,KAAK,MAAQ,KAIX,GAAmB,KACnB,GAAe,KACf,GAAoB,KACpB,GAAqB,KACrB,GAAiB,GAAW,KAC5B,GAAgB,GAAW,IAC3B,GAAkB,KAClB,GAAM,OAAO,MAAM,MACnB,GAAS,OAAO,UAChB,GAAQ,OAAO,SACf,GAAQ,OAAO,SACf,GAAU,OAAO,WACjB,GAAU,OAAO,WACjB,GAAa,OAAO,cACpB,GAAa,OAAO,cACpB,GAAO,OAAO,QACd,GAAU,OAAO,WACjB,GAAa,OAAO,cACpB,GAAc,OAAO,eACrB,GAAO,OAAO,QACd,GAAU,OAAO,WACjB,GAAY,OAAO,aACnB,GAAO,OAAO,QACd,GAAQ,OAAO,SACf,GAAW,OAAO,YAClB,GAAkB,OAAO,mBACzB,GAAQ,OAAO,SACf,GAAU,OAAO,WAEjB,GAAa,cACb,GAAe,gBACf,GAAiB,KAEjB,GAAO,GAAO,aAAmB,IACrC,YAAa,GACX,MAAM,GACN,EAAM,GAAO,OAAO,OAAO,MAC3B,KAAK,IAAM,EACX,KAAK,KAAO,EAAI,MAAQ,GACxB,KAAK,IAAM,EAAI,KAAO,QAAQ,MAC9B,KAAK,YAAc,EAAI,YACvB,KAAK,cAAgB,CAAC,CAAC,EAAI,cAC3B,KAAK,OAAS,CAAC,CAAC,EAAI,OACpB,KAAK,MAAQ,CAAC,CAAC,EAAI,MACnB,KAAK,OAAU,GAAI,QAAU,IAAI,QAAQ,YAAa,IACtD,KAAK,UAAY,EAAI,WAAa,GAAI,KACtC,KAAK,UAAY,EAAI,WAAa,GAAI,KACtC,KAAK,aAAe,EAAI,cAAgB,GAAI,KAE5C,KAAK,IAAmB,GACpB,MAAO,GAAI,QAAW,YACxB,KAAK,GAAG,OAAQ,EAAI,QAEtB,KAAK,SAAW,CAAC,CAAC,EAAI,SACtB,KAAK,IAAM,KACX,AAAI,EAAI,KACF,OAAO,GAAI,MAAS,UACtB,GAAI,KAAO,IACT,KAAK,UACP,GAAI,KAAK,SAAW,IACtB,KAAK,IAAM,GAAI,IAAK,KAAK,EAAI,MAC7B,KAAK,IAAI,GAAG,OAAQ,GAAS,MAAM,MAAM,IACzC,KAAK,IAAI,GAAG,MAAO,GAAK,MAAM,OAC9B,KAAK,IAAI,GAAG,QAAS,GAAK,KAAK,OAC/B,KAAK,GAAG,SAAU,GAAK,KAAK,IAAI,WAEhC,KAAK,GAAG,QAAS,KAAK,KAExB,KAAK,aAAe,CAAC,CAAC,EAAI,aAC1B,KAAK,OAAS,CAAC,CAAC,EAAI,OACpB,KAAK,QAAU,CAAC,CAAC,EAAI,QACrB,KAAK,MAAQ,EAAI,OAAS,KAE1B,KAAK,OAAS,MAAO,GAAI,QAAW,WAAa,EAAI,OAAS,GAAK,GAEnE,KAAK,IAAS,GAAI,IAClB,KAAK,IAAQ,EACb,KAAK,KAAO,CAAC,EAAI,MAAQ,EACzB,KAAK,IAAc,GACnB,KAAK,IAAS,IAGf,IAAQ,GACP,MAAO,OAAM,MAAM,GAGrB,IAAK,GACH,YAAK,MAAM,GACJ,KAGT,IAAK,GACH,MAAI,IACF,KAAK,MAAM,GACb,KAAK,IAAS,GACd,KAAK,MACE,KAGT,MAAO,GACL,GAAI,KAAK,IACP,KAAM,IAAI,OAAM,mBAElB,MAAI,aAAgB,IAClB,KAAK,IAAa,GAElB,KAAK,IAAY,GACZ,KAAK,SAGb,IAAc,GACb,GAAM,GAAW,GAAK,QAAQ,KAAK,IAAK,EAAE,MAK1C,GAJI,KAAK,QACP,GAAE,KAAO,KAAK,OAAS,IAAM,EAAE,KAAK,QAAQ,aAAc,KAGxD,CAAC,KAAK,OAAO,EAAE,KAAM,GACvB,EAAE,cAEF,GAAM,GAAM,GAAI,IAAQ,EAAE,KAAM,EAAU,IAC1C,EAAI,MAAQ,GAAI,IAAc,EAAG,KAAK,IAAU,IAChD,EAAI,MAAM,GAAG,MAAO,GAAK,KAAK,IAAS,IACvC,KAAK,KAAS,EACd,KAAK,IAAO,KAAK,GAGnB,KAAK,OAGN,IAAa,GACZ,GAAM,GAAW,GAAK,QAAQ,KAAK,IAAK,GACxC,AAAI,KAAK,QACP,GAAI,KAAK,OAAS,IAAM,EAAE,QAAQ,aAAc,KAElD,KAAK,IAAO,KAAK,GAAI,IAAQ,EAAG,IAChC,KAAK,OAGN,IAAO,GACN,EAAI,QAAU,GACd,KAAK,KAAS,EACd,GAAM,GAAO,KAAK,OAAS,OAAS,QACpC,GAAG,GAAM,EAAI,SAAU,CAAC,EAAI,KAC1B,EAAI,QAAU,GACd,KAAK,KAAS,EACd,AAAI,EACF,KAAK,KAAK,QAAS,GAEnB,KAAK,IAAQ,EAAK,MAIvB,IAAS,EAAK,GACb,KAAK,UAAU,IAAI,EAAI,SAAU,GACjC,EAAI,KAAO,EAGN,KAAK,OAAO,EAAI,KAAM,IACzB,GAAI,OAAS,IAEf,KAAK,OAGN,IAAU,GACT,EAAI,QAAU,GACd,KAAK,KAAS,EACd,GAAG,QAAQ,EAAI,SAAU,CAAC,EAAI,KAG5B,GAFA,EAAI,QAAU,GACd,KAAK,KAAS,EACV,EACF,MAAO,MAAK,KAAK,QAAS,GAC5B,KAAK,IAAW,EAAK,MAIxB,IAAY,EAAK,GAChB,KAAK,aAAa,IAAI,EAAI,SAAU,GACpC,EAAI,QAAU,EACd,KAAK,OAGN,MACC,GAAI,MAAK,KAGT,KAAK,IAAc,GACnB,OAAS,GAAI,KAAK,IAAO,KACvB,IAAM,MAAQ,KAAK,IAAQ,KAAK,KAChC,EAAI,EAAE,KAEN,GADA,KAAK,IAAY,EAAE,OACf,EAAE,MAAM,QACV,GAAM,GAAI,EAAE,KACZ,KAAK,IAAO,WAAW,GACvB,EAAE,KAAO,EAIb,KAAK,IAAc,GAEf,KAAK,KAAU,CAAC,KAAK,IAAO,QAAU,KAAK,MAAU,GACvD,CAAI,KAAK,IACP,KAAK,IAAI,IAAI,IAEb,OAAM,MAAM,IACZ,MAAM,aAKP,MACH,MAAO,MAAK,KAAU,KAAK,IAAO,MAAQ,KAAK,IAAO,KAAK,OAG5D,IAAU,GACT,KAAK,IAAO,QACZ,KAAK,KAAS,EACd,KAAK,OAGN,IAAa,GACZ,GAAI,GAAI,SAGR,GAAI,EAAI,OACN,AAAI,IAAQ,KAAK,KAAY,CAAC,EAAI,OAChC,KAAK,IAAM,GACb,OASF,GANK,EAAI,MACP,CAAI,KAAK,UAAU,IAAI,EAAI,UACzB,KAAK,IAAQ,EAAK,KAAK,UAAU,IAAI,EAAI,WAEzC,KAAK,IAAM,IAEX,EAAC,EAAI,MAIL,GAAI,QAGJ,GAAC,KAAK,cAAgB,EAAI,KAAK,eAAiB,CAAC,EAAI,SACvD,CAAI,KAAK,aAAa,IAAI,EAAI,UAC5B,KAAK,IAAW,EAAK,KAAK,aAAa,IAAI,EAAI,WAE/C,KAAK,IAAS,GACZ,CAAC,EAAI,WAMX,GADA,EAAI,MAAQ,KAAK,IAAO,GACpB,CAAC,EAAI,OACP,EAAI,OAAS,GACb,OAGF,AAAI,IAAQ,KAAK,KAAY,CAAC,EAAI,OAChC,KAAK,IAAM,MAGd,IAAW,GACV,MAAO,CACL,OAAQ,CAAC,EAAM,EAAK,IAAS,KAAK,KAAK,EAAM,EAAK,GAClD,MAAO,KAAK,MACZ,IAAK,KAAK,IACV,SAAU,EAAI,SACd,cAAe,KAAK,cACpB,YAAa,KAAK,YAClB,OAAQ,KAAK,OACb,SAAU,KAAK,SACf,UAAW,KAAK,UAChB,UAAW,KAAK,UAChB,QAAS,KAAK,QACd,MAAO,KAAK,QAIf,IAAQ,GACP,KAAK,KAAS,EACd,IACE,MAAO,IAAI,MAAK,IAAiB,EAAI,KAAM,KAAK,IAAU,IACvD,GAAG,MAAO,IAAM,KAAK,IAAS,IAC9B,GAAG,QAAS,GAAM,KAAK,KAAK,QAAS,UACjC,GACP,KAAK,KAAK,QAAS,KAItB,MACC,AAAI,KAAK,KAAY,KAAK,IAAS,OACjC,KAAK,IAAS,MAAM,UAIvB,IAAO,GACN,EAAI,MAAQ,GAER,EAAI,SACN,EAAI,QAAQ,QAAQ,IAClB,GAAM,GAAI,KAAK,OACb,EAAI,KAAK,MAAM,KAAK,OAAO,OAAS,IAAM,KACxC,EAAI,KAEF,EAAO,IAAM,KAAO,GAAK,EAAE,QAAQ,OAAQ,KACjD,KAAK,IAAY,EAAO,KAI5B,GAAM,GAAS,EAAI,MACb,EAAM,KAAK,IAEjB,AAAI,EACF,EAAO,GAAG,OAAQ,IAChB,AAAK,EAAI,MAAM,IACb,EAAO,UAGX,EAAO,GAAG,OAAQ,IAChB,AAAK,MAAM,MAAM,IACf,EAAO,UAKf,QACE,MAAI,MAAK,KACP,KAAK,IAAI,QACJ,MAAM,WAjWjB,gBAqWuB,IACrB,YAAa,GACX,MAAM,GACN,KAAK,IAAmB,GAI1B,SACA,WAEC,IAAO,GACN,GAAM,GAAO,KAAK,OAAS,WAAa,YACxC,KAAK,IAAQ,EAAK,GAAG,GAAM,EAAI,YAGhC,IAAU,EAAK,GACd,KAAK,IAAW,EAAK,GAAG,YAAY,EAAI,YAIzC,IAAO,GACN,GAAM,GAAS,EAAI,MACb,EAAM,KAAK,IAEjB,AAAI,EAAI,SACN,EAAI,QAAQ,QAAQ,IAClB,GAAM,GAAI,KAAK,OACb,EAAI,KAAK,MAAM,KAAK,OAAO,OAAS,IAAM,KACxC,EAAI,KAEF,EAAO,IAAM,KAAO,GAAK,EAAE,QAAQ,OAAQ,KACjD,KAAK,IAAY,EAAO,KAI5B,AAAI,EACF,EAAO,GAAG,OAAQ,IAChB,EAAI,MAAM,KAGZ,EAAO,GAAG,OAAQ,IAChB,MAAM,IAAO,OAMrB,GAAK,KAAO,GAEZ,GAAO,QAAU,KCtZjB,2BACA,GAAM,IAAmB,KACnB,GAAK,AAAQ,kBAAU,aACvB,GAAa,cAEf,GAAS,GAAG,OAEhB,GAAI,CAAC,IAGH,GAAM,GAAU,QAAQ,QAAQ,MAC1B,EAAY,EAAQ,WAAa,EAAQ,cAE/C,GAAS,CAAC,EAAI,EAAO,EAAK,KACxB,GAAM,GAAO,CAAC,EAAI,IAAO,EAAG,EAAI,EAAI,GAC9B,EAAM,GAAI,GAChB,EAAI,WAAa,EACjB,EAAQ,aAAa,EAAI,EAAO,EAAK,IAIzC,GAAM,IAAa,OAAO,cACpB,GAAS,OAAO,UAChB,GAAS,OAAO,UAChB,EAAM,OAAO,OACb,GAAY,OAAO,aACnB,GAAS,OAAO,UAChB,GAAS,OAAO,UAChB,GAAe,OAAO,gBACtB,GAAW,OAAO,YAClB,GAAQ,OAAO,SACf,GAAa,OAAO,cACpB,GAAW,OAAO,YAClB,GAAU,OAAO,WACjB,GAAU,OAAO,WACjB,GAAW,OAAO,YAClB,GAAQ,OAAO,SACf,GAAQ,OAAO,SACf,GAAO,OAAO,QACd,GAAS,OAAO,UAChB,GAAQ,OAAO,SACf,GAAY,OAAO,aACnB,GAAW,OAAO,YAClB,GAAU,OAAO,WACjB,GAAQ,OAAO,SACf,GAAS,OAAO,UAChB,GAAW,OAAO,YAClB,GAAe,OAAO,gBACtB,GAAW,OAAO,YAhDxB,gBAkDyB,IACvB,YAAa,EAAM,GAOjB,GANA,EAAM,GAAO,GACb,MAAM,GAEN,KAAK,SAAW,GAChB,KAAK,SAAW,GAEZ,MAAO,IAAS,SAClB,KAAM,IAAI,WAAU,yBAEtB,KAAK,IAAY,GACjB,KAAK,GAAO,MAAO,GAAI,IAAO,SAAW,EAAI,GAAK,KAClD,KAAK,IAAS,EACd,KAAK,IAAa,EAAI,UAAY,GAAG,KAAK,KAC1C,KAAK,IAAY,GACjB,KAAK,IAAS,MAAO,GAAI,MAAS,SAAW,EAAI,KAAO,SACxD,KAAK,IAAW,KAAK,IACrB,KAAK,IAAc,MAAO,GAAI,WAAc,UAC1C,EAAI,UAAY,GAElB,AAAI,MAAO,MAAK,IAAS,SACvB,KAAK,MAEL,KAAK,SAGL,MAAQ,MAAO,MAAK,MACpB,QAAU,MAAO,MAAK,IAE1B,QACE,KAAM,IAAI,WAAU,6BAGtB,MACE,KAAM,IAAI,WAAU,8BAGrB,MACC,GAAG,KAAK,KAAK,IAAQ,IAAK,CAAC,EAAI,IAAO,KAAK,IAAS,EAAI,KAGzD,IAAU,EAAI,GACb,AAAI,EACF,KAAK,IAAU,GAEf,MAAK,GAAO,EACZ,KAAK,KAAK,OAAQ,GAClB,KAAK,QAIR,MACC,MAAO,QAAO,YAAY,KAAK,IAAI,KAAK,IAAY,KAAK,OAG1D,MACC,GAAI,CAAC,KAAK,KACR,KAAK,IAAY,GACjB,GAAM,GAAM,KAAK,MAEjB,GAAI,EAAI,SAAW,EACjB,MAAO,SAAQ,SAAS,IAAM,KAAK,IAAS,KAAM,EAAG,IACvD,GAAG,KAAK,KAAK,GAAM,EAAK,EAAG,EAAI,OAAQ,KAAM,CAAC,EAAI,EAAI,IACpD,KAAK,IAAS,EAAI,EAAI,MAI3B,IAAU,EAAI,EAAI,GACjB,KAAK,IAAY,GACjB,AAAI,EACF,KAAK,IAAU,GACR,KAAK,IAAc,EAAI,IAC9B,KAAK,OAGR,MACC,GAAI,KAAK,KAAe,MAAO,MAAK,IAAS,UAC3C,GAAM,GAAK,KAAK,GAChB,KAAK,GAAO,KACZ,GAAG,MAAM,EAAI,GAAM,EAAK,KAAK,KAAK,QAAS,GAAM,KAAK,KAAK,YAI9D,IAAW,GACV,KAAK,IAAY,GACjB,KAAK,MACL,KAAK,KAAK,QAAS,IAGpB,IAAe,EAAI,GAClB,GAAI,GAAM,GAEV,YAAK,KAAY,EACb,EAAK,GACP,GAAM,MAAM,MAAM,EAAK,EAAI,OAAS,EAAI,MAAM,EAAG,GAAM,IAErD,KAAO,GAAK,KAAK,KAAY,IAC/B,GAAM,GACN,KAAK,MACL,MAAM,OAGD,EAGT,KAAM,EAAI,GACR,OAAQ,OACD,gBACA,SACH,UAEG,QACH,AAAI,MAAO,MAAK,IAAS,UACvB,KAAK,MACP,UAEG,QACH,MAAI,MAAK,IACP,OACF,MAAK,IAAY,GACV,MAAM,KAAK,EAAI,YAGtB,MAAO,OAAM,KAAK,EAAI,MA9K9B,gBAmL6B,KAC1B,MACC,GAAI,GAAQ,GACZ,IACE,KAAK,IAAS,KAAM,GAAG,SAAS,KAAK,IAAQ,MAC7C,EAAQ,WAER,AAAI,GACF,KAAK,QAIV,MACC,GAAI,GAAQ,GACZ,IACE,GAAI,CAAC,KAAK,KACR,KAAK,IAAY,GACjB,GACE,GAAM,GAAM,KAAK,MAEX,EAAK,EAAI,SAAW,EAAI,EAC1B,GAAG,SAAS,KAAK,GAAM,EAAK,EAAG,EAAI,OAAQ,MAC/C,GAAI,CAAC,KAAK,IAAc,EAAI,GAC1B,YACK,IACT,KAAK,IAAY,GAEnB,EAAQ,WAER,AAAI,GACF,KAAK,QAIV,MACC,GAAI,KAAK,KAAe,MAAO,MAAK,IAAS,UAC3C,GAAM,GAAK,KAAK,GAChB,KAAK,GAAO,KACZ,GAAG,UAAU,GACb,KAAK,KAAK,YA1NhB,gBA+N0B,IACxB,YAAa,EAAM,GACjB,EAAM,GAAO,GACb,MAAM,GACN,KAAK,SAAW,GAChB,KAAK,SAAW,GAChB,KAAK,IAAY,GACjB,KAAK,IAAY,GACjB,KAAK,IAAU,GACf,KAAK,IAAc,GACnB,KAAK,IAAU,GACf,KAAK,IAAS,EACd,KAAK,GAAO,MAAO,GAAI,IAAO,SAAW,EAAI,GAAK,KAClD,KAAK,IAAS,EAAI,OAAS,OAAY,IAAQ,EAAI,KACnD,KAAK,IAAQ,MAAO,GAAI,OAAU,SAAW,EAAI,MAAQ,KACzD,KAAK,IAAc,MAAO,GAAI,WAAc,UAC1C,EAAI,UAAY,GAGlB,GAAM,GAAc,KAAK,MAAU,KAAO,KAAO,IACjD,KAAK,IAAgB,EAAI,QAAU,OACnC,KAAK,IAAU,KAAK,IAAgB,EAAc,EAAI,MAElD,KAAK,KAAS,MAChB,KAAK,MAGT,KAAM,EAAI,GACR,GAAI,IAAO,SACT,GAAI,KAAK,IACP,OACF,KAAK,IAAY,GAEnB,MAAO,OAAM,KAAK,EAAI,MAIpB,MAAQ,MAAO,MAAK,MACpB,QAAU,MAAO,MAAK,KAEzB,IAAW,GACV,KAAK,MACL,KAAK,IAAY,GACjB,KAAK,KAAK,QAAS,IAGpB,MACC,GAAG,KAAK,KAAK,IAAQ,KAAK,IAAS,KAAK,IACtC,CAAC,EAAI,IAAO,KAAK,IAAS,EAAI,KAGjC,IAAU,EAAI,GACb,AAAI,KAAK,KACL,KAAK,MAAY,MACjB,GAAM,EAAG,OAAS,SACpB,MAAK,IAAU,IACf,KAAK,OACA,AAAI,EACT,KAAK,IAAU,GAEf,MAAK,GAAO,EACZ,KAAK,KAAK,OAAQ,GAClB,KAAK,OAIT,IAAK,EAAK,GACR,MAAI,IACF,KAAK,MAAM,EAAK,GAElB,KAAK,IAAU,GAGX,CAAC,KAAK,KAAa,CAAC,KAAK,IAAQ,QACjC,MAAO,MAAK,IAAS,UACvB,KAAK,IAAU,KAAM,GAChB,KAGT,MAAO,EAAK,GAIV,MAHI,OAAO,IAAQ,UACjB,GAAM,OAAO,KAAK,EAAK,IAErB,KAAK,IACP,MAAK,KAAK,QAAS,GAAI,OAAM,wBACtB,IAGL,KAAK,KAAS,MAAQ,KAAK,KAAa,KAAK,IAAQ,OACvD,MAAK,IAAQ,KAAK,GAClB,KAAK,IAAc,GACZ,IAGT,MAAK,IAAY,GACjB,KAAK,IAAQ,GACN,KAGR,IAAS,GACR,GAAG,MAAM,KAAK,GAAM,EAAK,EAAG,EAAI,OAAQ,KAAK,IAAO,CAAC,EAAI,IACvD,KAAK,IAAU,EAAI,KAGtB,IAAW,EAAI,GACd,AAAI,EACF,KAAK,IAAU,GAEX,MAAK,MAAU,MACjB,MAAK,KAAS,GAChB,AAAI,KAAK,IAAQ,OACf,KAAK,MAEL,MAAK,IAAY,GAEjB,AAAI,KAAK,KAAW,CAAC,KAAK,IACxB,MAAK,IAAa,GAClB,KAAK,MACL,KAAK,KAAK,WACD,KAAK,KACd,MAAK,IAAc,GACnB,KAAK,KAAK,aAMjB,MACC,GAAI,KAAK,IAAQ,SAAW,EAC1B,AAAI,KAAK,KACP,KAAK,IAAU,KAAM,WACd,KAAK,IAAQ,SAAW,EACjC,KAAK,IAAQ,KAAK,IAAQ,YAE1B,GAAM,GAAQ,KAAK,IACnB,KAAK,IAAU,GACf,GAAO,KAAK,GAAM,EAAO,KAAK,IAC5B,CAAC,EAAI,IAAO,KAAK,IAAU,EAAI,MAIpC,MACC,GAAI,KAAK,KAAe,MAAO,MAAK,IAAS,UAC3C,GAAM,GAAK,KAAK,GAChB,KAAK,GAAO,KACZ,GAAG,MAAM,EAAI,GAAM,EAAK,KAAK,KAAK,QAAS,GAAM,KAAK,KAAK,aAhXjE,gBAqX8B,KAC3B,MACC,GAAI,GAGJ,GAAI,KAAK,KAAiB,KAAK,MAAY,KACzC,IACE,EAAK,GAAG,SAAS,KAAK,IAAQ,KAAK,IAAS,KAAK,WAC1C,GACP,GAAI,EAAG,OAAS,SACd,YAAK,IAAU,IACR,KAAK,MAEZ,KAAM,OAGV,GAAK,GAAG,SAAS,KAAK,IAAQ,KAAK,IAAS,KAAK,KAEnD,KAAK,IAAS,KAAM,IAGrB,MACC,GAAI,KAAK,KAAe,MAAO,MAAK,IAAS,UAC3C,GAAM,GAAK,KAAK,GAChB,KAAK,GAAO,KACZ,GAAG,UAAU,GACb,KAAK,KAAK,WAIb,IAAS,GAER,GAAI,GAAQ,GACZ,IACE,KAAK,IAAU,KACb,GAAG,UAAU,KAAK,GAAM,EAAK,EAAG,EAAI,OAAQ,KAAK,MACnD,EAAQ,WAER,GAAI,EACF,IAAM,KAAK,YAAmB,QAKtC,GAAQ,WAAa,GACrB,GAAQ,eAAiB,GAEzB,GAAQ,YAAc,GACtB,GAAQ,gBAAkB,KCra1B,gCAsBA,GAAM,IAAiB,KACjB,GAAiB,KACjB,GAAa,kBACb,GAAkB,KAClB,GAAmB,KAAO,KAC1B,GAAgB,KAChB,GAAc,KACd,GAAe,KAEf,GAAa,OAAO,KAAK,CAAC,GAAM,MAChC,GAAQ,OAAO,SACf,GAAa,OAAO,cACpB,GAAY,OAAO,aACnB,GAAY,OAAO,aACnB,GAAe,OAAO,gBACtB,GAAK,OAAO,kBACZ,GAAM,OAAO,wBACb,GAAO,OAAO,QACd,GAAW,OAAO,YAClB,GAAS,OAAO,UAChB,GAAQ,OAAO,SACf,GAAQ,OAAO,SACf,GAAa,OAAO,cACpB,GAAO,OAAO,QACd,GAAQ,OAAO,SACf,GAAe,OAAO,gBACtB,GAAkB,OAAO,mBACzB,GAAc,OAAO,eACrB,GAAc,OAAO,eACrB,GAAgB,OAAO,iBACvB,GAAY,OAAO,aACnB,GAAe,OAAO,gBACtB,GAAW,OAAO,YAClB,GAAU,OAAO,WACjB,GAAU,OAAO,WACjB,GAAO,OAAO,UACd,GAAkB,OAAO,iBACzB,GAAiB,OAAO,gBACxB,GAAU,OAAO,UAEjB,GAAO,GAAK,GAElB,GAAO,QAAU,GAAO,aAAqB,IAC3C,YAAa,GACX,EAAM,GAAO,GACb,MAAM,GAEN,KAAK,KAAO,EAAI,MAAQ,GAIxB,KAAK,IAAmB,KAGxB,KAAK,GAAG,GAAM,IACZ,AAAI,MAAK,MAAW,SAAW,KAAK,MAAqB,KAGvD,KAAK,KAAK,kBAAmB,iCAIjC,AAAI,EAAI,OACN,KAAK,GAAG,GAAM,EAAI,QAElB,KAAK,GAAG,GAAM,IACZ,KAAK,KAAK,aACV,KAAK,KAAK,UACV,KAAK,KAAK,OACV,KAAK,KAAK,WAId,KAAK,OAAS,CAAC,CAAC,EAAI,OACpB,KAAK,iBAAmB,EAAI,kBAAoB,GAChD,KAAK,OAAS,MAAO,GAAI,QAAW,WAAa,EAAI,OAAS,GAG9D,KAAK,SAAW,GAChB,KAAK,SAAW,GAEhB,KAAK,IAAS,GAAI,IAClB,KAAK,IAAU,KACf,KAAK,IAAa,KAClB,KAAK,IAAc,KACnB,KAAK,IAAS,QACd,KAAK,IAAQ,GACb,KAAK,IAAM,KACX,KAAK,IAAO,KACZ,KAAK,IAAS,GACd,KAAK,IAAS,KACd,KAAK,IAAW,GAChB,KAAK,IAAkB,GACvB,KAAK,IAAW,GACZ,MAAO,GAAI,QAAW,YACxB,KAAK,GAAG,OAAQ,EAAI,QAClB,MAAO,GAAI,SAAY,YACzB,KAAK,GAAG,QAAS,EAAI,UAGxB,IAAgB,EAAO,GACtB,AAAI,KAAK,MAAqB,MAC5B,MAAK,IAAmB,IAC1B,GAAI,GACJ,IACE,EAAS,GAAI,IAAO,EAAO,EAAU,KAAK,IAAK,KAAK,WAC7C,GACP,MAAO,MAAK,KAAK,oBAAqB,GAGxC,GAAI,EAAO,UACT,AAAI,KAAK,IACP,MAAK,IAAW,GAEZ,KAAK,MAAW,SAClB,MAAK,IAAS,UAChB,KAAK,IAAM,QAEX,MAAK,IAAkB,GACvB,KAAK,IAAM,sBAGb,KAAK,IAAkB,GACnB,CAAC,EAAO,WACV,KAAK,KAAK,oBAAqB,mBAAoB,CAAC,mBAC7C,CAAC,EAAO,KACf,KAAK,KAAK,oBAAqB,mBAAoB,CAAC,gBAEpD,GAAM,GAAO,EAAO,KACpB,GAAI,oBAAoB,KAAK,IAAS,CAAC,EAAO,SAC5C,KAAK,KAAK,oBAAqB,oBAAqB,CAAC,mBAC9C,CAAC,oBAAoB,KAAK,IAAS,EAAO,SACjD,KAAK,KAAK,oBAAqB,qBAAsB,CAAC,gBAEtD,GAAM,GAAQ,KAAK,IAAc,GAAI,IAAM,EAAQ,KAAK,IAAK,KAAK,KAIlE,GAAI,CAAC,KAAK,IACR,GAAI,EAAM,QAER,GAAM,GAAQ,KACZ,AAAK,EAAM,SACT,MAAK,IAAmB,KAE5B,EAAM,GAAG,MAAO,OAEhB,MAAK,IAAmB,GAG5B,AAAI,EAAM,KACR,AAAI,EAAM,KAAO,KAAK,iBACpB,GAAM,OAAS,GACf,KAAK,IAAM,eAAgB,GAC3B,KAAK,IAAS,SACd,EAAM,UACG,EAAM,KAAO,GACtB,MAAK,IAAQ,GACb,EAAM,GAAG,OAAQ,GAAK,KAAK,KAAS,GACpC,KAAK,IAAS,QAGhB,MAAK,IAAM,KACX,EAAM,OAAS,EAAM,QAAU,CAAC,KAAK,OAAO,EAAM,KAAM,GAExD,AAAI,EAAM,OAER,MAAK,IAAM,eAAgB,GAC3B,KAAK,IAAS,EAAM,OAAS,SAAW,SACxC,EAAM,UAEN,CAAI,EAAM,OACR,KAAK,IAAS,OAEd,MAAK,IAAS,SACd,EAAM,OAGR,AAAK,KAAK,IAIR,KAAK,IAAO,KAAK,GAHjB,MAAK,IAAO,KAAK,GACjB,KAAK,YAUlB,IAAe,GACd,GAAI,GAAK,GAET,MAAK,GAGE,AAAI,MAAM,QAAQ,GACvB,KAAK,KAAK,MAAM,KAAM,GAEtB,MAAK,IAAa,EAClB,KAAK,KAAK,QAAS,GACd,EAAM,YACT,GAAM,GAAG,MAAO,GAAK,KAAK,OAC1B,EAAK,KATP,MAAK,IAAa,KAClB,EAAK,IAYA,GAGR,MACC,EAAG,OAAU,KAAK,IAAc,KAAK,IAAO,UAE5C,GAAI,CAAC,KAAK,IAAO,QAQf,GAAM,GAAK,KAAK,IAEhB,AADiB,CAAC,GAAM,EAAG,SAAW,EAAG,OAAS,EAAG,OAE9C,KAAK,KACR,KAAK,KAAK,SAEZ,EAAG,KAAK,QAAS,GAAK,KAAK,KAAK,YAIrC,IAAc,EAAO,GAEpB,GAAM,GAAQ,KAAK,IACb,EAAK,EAAM,YACX,EAAK,GAAM,EAAM,QAAU,IAAa,EAAK,EAC/C,EAAM,MAAM,EAAU,EAAW,GAErC,SAAM,MAAM,GAEP,EAAM,aACT,MAAK,IAAS,SACd,KAAK,IAAc,KACnB,EAAM,OAGD,EAAE,QAGV,IAAc,EAAO,GACpB,GAAM,GAAQ,KAAK,IACb,EAAM,KAAK,IAAa,EAAO,GAGrC,MAAK,MAAK,KACR,KAAK,IAAU,GAEV,GAGR,IAAO,EAAI,EAAM,GAChB,AAAI,CAAC,KAAK,IAAO,QAAU,CAAC,KAAK,IAC/B,KAAK,KAAK,EAAI,EAAM,GAEpB,KAAK,IAAO,KAAK,CAAC,EAAI,EAAM,KAG/B,IAAW,GAEV,OADA,KAAK,IAAM,OAAQ,KAAK,KAChB,EAAM,UACP,qBACA,oBACH,KAAK,IAAM,GAAI,MAAM,KAAK,IAAO,KAAK,IAAK,IAC3C,UAEG,uBACH,KAAK,IAAO,GAAI,MAAM,KAAK,IAAO,KAAK,IAAM,IAC7C,UAEG,0BACA,iBACH,KAAK,IAAM,KAAK,KAAO,OAAO,OAAO,MACrC,KAAK,IAAI,KAAO,KAAK,IAAM,QAAQ,OAAQ,IAC3C,UAEG,0BACH,KAAK,IAAM,KAAK,KAAO,OAAO,OAAO,MACrC,KAAK,IAAI,SAAW,KAAK,IAAM,QAAQ,OAAQ,IAC/C,cAGO,KAAM,IAAI,OAAM,iBAAmB,EAAM,OAItD,MAAO,GACL,KAAK,IAAW,GAChB,KAAK,KAAK,QAAS,GAEnB,KAAK,KAAK,YAAa,EAAO,CAAE,YAAa,KAG/C,MAAO,GACL,GAAI,KAAK,IACP,OAGF,GAAI,KAAK,MAAW,MAAQ,GAK1B,GAJI,KAAK,KACP,GAAQ,OAAO,OAAO,CAAC,KAAK,IAAS,IACrC,KAAK,IAAU,MAEb,EAAM,OAAS,GAAW,OAC5B,YAAK,IAAU,EACR,GAET,OAAS,GAAI,EAAG,KAAK,MAAW,MAAQ,EAAI,GAAW,OAAQ,IAC7D,AAAI,EAAM,KAAO,GAAW,IAC1B,MAAK,IAAS,IAElB,GAAI,KAAK,MAAW,MAClB,GAAM,GAAQ,KAAK,IACnB,KAAK,IAAS,GACd,KAAK,IAAS,GAAI,IAAK,MACvB,KAAK,IAAO,GAAG,OAAQ,GAAS,KAAK,IAAc,IACnD,KAAK,IAAO,GAAG,QAAS,GAAM,KAAK,MAAM,IACzC,KAAK,IAAO,GAAG,MAAO,IACpB,KAAK,IAAS,GACd,KAAK,QAEP,KAAK,IAAW,GAChB,GAAM,GAAM,KAAK,IAAO,EAAQ,MAAQ,SAAS,GACjD,YAAK,IAAW,GACT,GAIX,KAAK,IAAW,GAChB,AAAI,KAAK,IACP,KAAK,IAAO,MAAM,GAElB,KAAK,IAAc,GACrB,KAAK,IAAW,GAGhB,GAAM,GACJ,KAAK,IAAO,OAAS,GACrB,KAAK,IAAa,KAAK,IAAW,QAClC,GAGF,MAAI,CAAC,GAAO,CAAC,KAAK,IAAO,QACvB,KAAK,IAAW,KAAK,QAAS,GAAK,KAAK,KAAK,UAExC,GAGR,IAAe,GACd,AAAI,GAAK,CAAC,KAAK,KACb,MAAK,IAAU,KAAK,IAAU,OAAO,OAAO,CAAC,KAAK,IAAS,IAAM,IAGpE,MACC,GAAI,KAAK,KACL,CAAC,KAAK,KACN,CAAC,KAAK,KACN,CAAC,KAAK,KACR,KAAK,IAAc,GACnB,GAAM,GAAQ,KAAK,IACnB,GAAI,GAAS,EAAM,aAEjB,GAAM,GAAO,KAAK,IAAU,KAAK,IAAQ,OAAS,EAClD,KAAK,KAAK,kBAAmB,2BAC3B,EAAM,gCAAgC,eAAmB,CAAC,UACxD,KAAK,KACP,EAAM,MAAM,KAAK,KACnB,EAAM,MAER,KAAK,IAAM,MAId,IAAe,GACd,GAAI,KAAK,IACP,KAAK,IAAc,WACZ,CAAC,GAAS,CAAC,KAAK,IACvB,KAAK,WAGL,GADA,KAAK,IAAa,GACd,KAAK,KACP,KAAK,IAAc,GACnB,GAAM,GAAI,KAAK,IACf,KAAK,IAAU,KACf,KAAK,IAAiB,OAEtB,MAAK,IAAiB,GAExB,KAAO,KAAK,KACR,KAAK,IAAQ,QAAU,KACvB,CAAC,KAAK,KACN,CAAC,KAAK,MACR,GAAM,GAAI,KAAK,IACf,KAAK,IAAU,KACf,KAAK,IAAiB,GAExB,KAAK,IAAa,GAGpB,AAAI,EAAC,KAAK,KAAW,KAAK,MACxB,KAAK,OAGR,IAAkB,GAGjB,GAAI,GAAW,EACT,EAAS,EAAM,OACrB,KAAO,EAAW,KAAO,GAAU,CAAC,KAAK,KAAY,CAAC,KAAK,KACzD,OAAQ,KAAK,SACN,YACA,SACH,KAAK,IAAe,EAAO,GAC3B,GAAY,IACZ,UAEG,aACA,OACH,GAAY,KAAK,IAAa,EAAO,GACrC,UAEG,OACH,GAAY,KAAK,IAAa,EAAO,GACrC,cAIA,KAAM,IAAI,OAAM,kBAAoB,KAAK,KAI/C,AAAI,EAAW,GACb,CAAI,KAAK,IACP,KAAK,IAAU,OAAO,OAAO,CAAC,EAAM,MAAM,GAAW,KAAK,MAE1D,KAAK,IAAU,EAAM,MAAM,IAIjC,IAAK,GACH,AAAK,KAAK,KACR,CAAI,KAAK,IACP,KAAK,IAAO,IAAI,GAEhB,MAAK,IAAS,GACd,KAAK,MAAM,UC5dnB,gCAMA,GAAM,IAAc,KACd,GAAiB,KACjB,GAAa,cACb,GAAc,KACd,GAAe,gBAErB,GAAO,QAAU,CAAC,EAAM,EAAO,KAC7B,AAAI,MAAO,IAAS,WAClB,GAAK,EAAM,EAAQ,KAAM,EAAO,IACzB,MAAM,QAAQ,IACrB,GAAQ,EAAM,EAAO,IAEnB,MAAO,IAAU,YACnB,GAAK,EAAO,EAAQ,MAEtB,AAAK,EAGH,EAAQ,MAAM,KAAK,GAFnB,EAAQ,GAIV,GAAM,GAAM,GAAI,GAEhB,GAAI,EAAI,MAAQ,MAAO,IAAO,WAC5B,KAAM,IAAI,WAAU,iDAEtB,GAAI,CAAC,EAAI,MAAQ,MAAO,IAAO,WAC7B,KAAM,IAAI,WAAU,4CAEtB,MAAI,GAAM,QACR,GAAY,EAAK,GAEd,EAAI,UACP,GAAgB,GAEX,EAAI,MAAQ,EAAI,KAAO,GAAa,GACvC,EAAI,KAAO,GAAS,EAAK,GACzB,GAAK,IAGX,GAAM,IAAkB,IACtB,GAAM,GAAU,EAAI,QACpB,EAAI,QAAU,EAAU,IACtB,EAAQ,GACR,EAAE,UACA,GAAK,EAAE,UAKP,GAAc,CAAC,EAAK,KACxB,GAAM,GAAM,GAAI,KAAI,EAAM,IAAI,GAAK,CAAC,EAAE,QAAQ,OAAQ,IAAK,MACrD,EAAS,EAAI,OAEb,EAAS,CAAC,EAAM,KACpB,GAAM,GAAO,GAAK,GAAK,MAAM,GAAM,MAAQ,IACrC,EAAM,IAAS,EAAO,GACxB,EAAI,IAAI,GAAQ,EAAI,IAAI,GACxB,EAAO,GAAK,QAAQ,GAAO,GAE/B,SAAI,IAAI,EAAM,GACP,GAGT,EAAI,OAAS,EACT,CAAC,EAAM,IAAU,EAAO,EAAM,IAAU,EAAO,EAAK,QAAQ,OAAQ,KACpE,GAAQ,EAAO,EAAK,QAAQ,OAAQ,MAGpC,GAAe,IACnB,GAAM,GAAI,GAAK,GACT,EAAO,EAAI,KACb,EAAQ,GACR,EACJ,IACE,GAAM,GAAO,GAAG,SAAS,GACnB,EAAW,EAAI,aAAe,GAAK,KAAO,KAChD,GAAI,EAAK,KAAO,EACd,EAAE,IAAI,GAAG,aAAa,SAEtB,GAAI,GAAM,EACJ,EAAM,OAAO,YAAY,GAE/B,IADA,EAAK,GAAG,SAAS,EAAM,KAChB,EAAM,EAAK,OAChB,GAAM,GAAY,GAAG,SAAS,EAAI,EAAK,EAAG,EAAU,GACpD,GAAO,EACP,EAAE,MAAM,EAAI,MAAM,EAAG,IAEvB,EAAE,MAEJ,EAAQ,WAER,GAAI,GAAS,EACX,IACE,GAAG,UAAU,SACN,OAKT,GAAW,CAAC,EAAK,KACrB,GAAM,GAAQ,GAAI,IAAO,GACnB,EAAW,EAAI,aAAe,GAAK,KAAO,KAE1C,EAAO,EAAI,KACX,EAAI,GAAI,SAAQ,CAAC,EAAS,KAC9B,EAAM,GAAG,QAAS,GAClB,EAAM,GAAG,MAAO,GAEhB,GAAG,KAAK,EAAM,CAAC,EAAI,KACjB,GAAI,EACF,EAAO,QAEP,GAAM,GAAS,GAAI,IAAI,WAAW,EAAM,CACtC,SAAU,EACV,KAAM,EAAK,OAEb,EAAO,GAAG,QAAS,GACnB,EAAO,KAAK,QAIlB,MAAO,GAAK,EAAE,KAAK,EAAI,GAAM,GAGzB,GAAO,GAAO,GAAI,IAAO,KClI/B,gCAGA,GAAM,IAAc,KAEd,GAAe,KACf,GAAc,KACd,GAAY,KACZ,GAAe,gBAErB,GAAO,QAAU,CAAC,EAAM,EAAO,KAO7B,GANI,MAAO,IAAU,YACnB,GAAK,GAEH,MAAM,QAAQ,IAChB,GAAQ,EAAM,EAAO,IAEnB,CAAC,GAAS,CAAC,MAAM,QAAQ,IAAU,CAAC,EAAM,OAC5C,KAAM,IAAI,WAAU,qCAEtB,EAAQ,MAAM,KAAK,GAEnB,GAAM,GAAM,GAAI,GAEhB,GAAI,EAAI,MAAQ,MAAO,IAAO,WAC5B,KAAM,IAAI,WAAU,iDAEtB,GAAI,CAAC,EAAI,MAAQ,MAAO,IAAO,WAC7B,KAAM,IAAI,WAAU,4CAEtB,MAAO,GAAI,MAAQ,EAAI,KAAO,GAAe,EAAK,GAC9C,EAAI,KAAO,GAAW,EAAK,EAAO,GAClC,EAAI,KAAO,GAAW,EAAK,GAC3B,GAAO,EAAK,IAGlB,GAAM,IAAiB,CAAC,EAAK,KAC3B,GAAM,GAAI,GAAI,IAAK,KAAK,GAClB,EAAS,GAAI,IAAI,gBAAgB,EAAI,KAAM,CAC/C,KAAM,EAAI,MAAQ,MAEpB,EAAE,KAAK,GACP,GAAa,EAAG,IAGZ,GAAa,CAAC,EAAK,EAAO,KAC9B,GAAM,GAAI,GAAI,IAAK,GACb,EAAS,GAAI,IAAI,YAAY,EAAI,KAAM,CAC3C,KAAM,EAAI,MAAQ,MAEpB,EAAE,KAAK,GAEP,GAAM,GAAU,GAAI,SAAQ,CAAC,EAAK,KAChC,EAAO,GAAG,QAAS,GACnB,EAAO,GAAG,QAAS,GACnB,EAAE,GAAG,QAAS,KAGhB,UAAc,EAAG,GAEV,EAAK,EAAQ,KAAK,EAAI,GAAM,GAG/B,GAAe,CAAC,EAAG,KACvB,EAAM,QAAQ,IACZ,AAAI,EAAK,OAAO,KAAO,IACrB,GAAE,CACA,KAAM,GAAK,QAAQ,EAAE,IAAK,EAAK,OAAO,IACtC,KAAM,GACN,SAAU,GACV,QAAS,GAAS,EAAE,IAAI,KAG1B,EAAE,IAAI,KAEV,EAAE,OAGE,GAAgB,CAAC,EAAG,KACxB,KAAO,EAAM,SACX,GAAM,GAAO,EAAM,QACnB,GAAI,EAAK,OAAO,KAAO,IACrB,MAAO,IAAE,CACP,KAAM,GAAK,QAAQ,EAAE,IAAK,EAAK,OAAO,IACtC,SAAU,GACV,QAAS,GAAS,EAAE,IAAI,KACvB,KAAK,GAAK,GAAc,EAAG,IAE9B,EAAE,IAAI,GAEV,EAAE,OAGE,GAAa,CAAC,EAAK,KACvB,GAAM,GAAI,GAAI,IAAK,KAAK,GACxB,UAAa,EAAG,GACT,GAGH,GAAS,CAAC,EAAK,KACnB,GAAM,GAAI,GAAI,IAAK,GACnB,UAAc,EAAG,GACV,KCtGT,gCAGA,GAAM,IAAc,KACd,GAAe,KACf,GAAa,cACb,GAAc,KACd,GAAY,KACZ,GAAe,gBAQf,GAAiB,KAEvB,GAAO,QAAU,CAAC,EAAM,EAAO,KAC7B,GAAM,GAAM,GAAI,GAEhB,GAAI,CAAC,EAAI,KACP,KAAM,IAAI,WAAU,oBAEtB,GAAI,EAAI,KACN,KAAM,IAAI,WAAU,wCAEtB,GAAI,CAAC,GAAS,CAAC,MAAM,QAAQ,IAAU,CAAC,EAAM,OAC5C,KAAM,IAAI,WAAU,qCAEtB,SAAQ,MAAM,KAAK,GAEZ,EAAI,KAAO,GAAY,EAAK,GAC/B,GAAQ,EAAK,EAAO,IAG1B,GAAM,IAAc,CAAC,EAAK,KACxB,GAAM,GAAI,GAAI,IAAK,KAAK,GAEpB,EAAQ,GACR,EACA,EAEJ,IACE,IACE,EAAK,GAAG,SAAS,EAAI,KAAM,YACpB,GACP,GAAI,EAAG,OAAS,SACd,EAAK,GAAG,SAAS,EAAI,KAAM,UAE3B,MAAM,GAGV,GAAM,GAAK,GAAG,UAAU,GAClB,EAAU,OAAO,MAAM,KAE7B,EAAU,IAAK,EAAW,EAAG,EAAW,EAAG,KAAM,GAAY,KAC3D,OAAS,GAAS,EAAG,EAAQ,EAAG,EAAS,IAAK,GAAU,GAKtD,GAJA,EAAQ,GAAG,SACT,EAAI,EAAS,EAAQ,EAAQ,OAAS,EAAQ,EAAW,GAGvD,IAAa,GAAK,EAAQ,KAAO,IAAQ,EAAQ,KAAO,IAC1D,KAAM,IAAI,OAAM,wCAElB,GAAI,CAAC,EACH,QAGJ,GAAM,GAAI,GAAI,IAAO,GACrB,GAAI,CAAC,EAAE,WACL,MACF,GAAM,GAAiB,IAAM,KAAK,KAAK,EAAE,KAAO,KAChD,GAAI,EAAW,EAAiB,IAAM,EAAG,KACvC,MAGF,GAAY,EACR,EAAI,YACN,EAAI,WAAW,IAAI,EAAE,KAAM,EAAE,OAEjC,EAAQ,GAER,GAAW,EAAK,EAAG,EAAU,EAAI,WAEjC,GAAI,EACF,IACE,GAAG,UAAU,SACN,OAKT,GAAa,CAAC,EAAK,EAAG,EAAU,EAAI,KACxC,GAAM,GAAS,GAAI,IAAI,gBAAgB,EAAI,KAAM,CAC/C,GAAI,EACJ,MAAO,IAET,EAAE,KAAK,GACP,GAAa,EAAG,IAGZ,GAAU,CAAC,EAAK,EAAO,KAC3B,EAAQ,MAAM,KAAK,GACnB,GAAM,GAAI,GAAI,IAAK,GAEb,EAAS,CAAC,EAAI,EAAM,KACxB,GAAM,GAAK,CAAC,EAAI,KACd,AAAI,EACF,GAAG,MAAM,EAAI,GAAK,EAAI,IAEtB,EAAI,KAAM,IAGV,EAAW,EACf,GAAI,IAAS,EACX,MAAO,GAAG,KAAM,GAElB,GAAI,GAAS,EACP,EAAU,OAAO,MAAM,KACvB,EAAS,CAAC,EAAI,KAClB,GAAI,EACF,MAAO,GAAG,GAEZ,GADA,GAAU,EACN,EAAS,KAAO,EAClB,MAAO,IAAG,KACR,EAAI,EAAS,EAAQ,EAAQ,OAAS,EACtC,EAAW,EAAQ,GAIvB,GAAI,IAAa,GAAK,EAAQ,KAAO,IAAQ,EAAQ,KAAO,IAC1D,MAAO,GAAG,GAAI,OAAM,yCAGtB,GAAI,EAAS,IACX,MAAO,GAAG,KAAM,GAElB,GAAM,GAAI,GAAI,IAAO,GACrB,GAAI,CAAC,EAAE,WACL,MAAO,GAAG,KAAM,GAElB,GAAM,GAAiB,IAAM,KAAK,KAAK,EAAE,KAAO,KAKhD,GAJI,EAAW,EAAiB,IAAM,GAGtC,IAAY,EAAiB,IACzB,GAAY,GACd,MAAO,GAAG,KAAM,GAElB,AAAI,EAAI,YACN,EAAI,WAAW,IAAI,EAAE,KAAM,EAAE,OAC/B,EAAS,EACT,GAAG,KAAK,EAAI,EAAS,EAAG,IAAK,EAAU,IAEzC,GAAG,KAAK,EAAI,EAAS,EAAG,IAAK,EAAU,IAGnC,EAAU,GAAI,SAAQ,CAAC,EAAS,KACpC,EAAE,GAAG,QAAS,GACd,GAAI,GAAO,KACL,EAAS,CAAC,EAAI,KAClB,GAAI,GAAM,EAAG,OAAS,UAAY,IAAS,KACzC,SAAO,KACA,GAAG,KAAK,EAAI,KAAM,EAAM,GAGjC,GAAI,EACF,MAAO,GAAO,GAEhB,GAAG,MAAM,EAAI,CAAC,EAAI,KAChB,GAAI,EACF,MAAO,GAAO,GAChB,EAAO,EAAI,EAAG,KAAM,CAAC,EAAI,KACvB,GAAI,EACF,MAAO,GAAO,GAChB,GAAM,GAAS,GAAI,IAAI,YAAY,EAAI,KAAM,CAC3C,GAAI,EACJ,MAAO,IAET,EAAE,KAAK,GACP,EAAO,GAAG,QAAS,GACnB,EAAO,GAAG,QAAS,GACnB,GAAc,EAAG,QAIvB,GAAG,KAAK,EAAI,KAAM,EAAM,KAG1B,MAAO,GAAK,EAAQ,KAAK,EAAI,GAAM,GAG/B,GAAe,CAAC,EAAG,KACvB,EAAM,QAAQ,IACZ,AAAI,EAAK,OAAO,KAAO,IACrB,GAAE,CACA,KAAM,GAAK,QAAQ,EAAE,IAAK,EAAK,OAAO,IACtC,KAAM,GACN,SAAU,GACV,QAAS,GAAS,EAAE,IAAI,KAG1B,EAAE,IAAI,KAEV,EAAE,OAGE,GAAgB,CAAC,EAAG,KACxB,KAAO,EAAM,SACX,GAAM,GAAO,EAAM,QACnB,GAAI,EAAK,OAAO,KAAO,IACrB,MAAO,IAAE,CACP,KAAM,GAAK,QAAQ,EAAE,IAAK,EAAK,OAAO,IACtC,SAAU,GACV,QAAS,GAAS,EAAE,IAAI,KACvB,KAAK,GAAK,GAAc,EAAG,IAE9B,EAAE,IAAI,GAEV,EAAE,SC5NJ,gCAIA,GAAM,IAAc,KACd,GAAY,KAGlB,GAAO,QAAU,CAAC,EAAM,EAAO,KAC7B,GAAM,GAAM,GAAI,GAEhB,GAAI,CAAC,EAAI,KACP,KAAM,IAAI,WAAU,oBAEtB,GAAI,EAAI,KACN,KAAM,IAAI,WAAU,wCAEtB,GAAI,CAAC,GAAS,CAAC,MAAM,QAAQ,IAAU,CAAC,EAAM,OAC5C,KAAM,IAAI,WAAU,qCAEtB,SAAQ,MAAM,KAAK,GAEnB,GAAY,GACL,GAAE,EAAK,EAAO,IAGvB,GAAM,IAAc,IAClB,GAAM,GAAS,EAAI,OAEnB,AAAK,EAAI,YACP,GAAI,WAAa,GAAI,MAEvB,EAAI,OAAS,EAAS,CAAC,EAAM,IAC3B,EAAO,EAAM,IAAS,CAAE,GAAI,WAAW,IAAI,GAAQ,EAAK,OACtD,CAAC,EAAM,IAAS,CAAE,GAAI,WAAW,IAAI,GAAQ,EAAK,UClCxD,sBAAM,CAAE,cAAsB,gBACxB,GAAa,cACb,GAAU,IACd,GAAI,CAAC,EACH,EAAO,CAAE,KAAM,IAAO,eACf,MAAO,IAAS,SACvB,EAAO,CAAE,KAAM,IAAO,SAAO,WACtB,MAAO,IAAS,SACvB,EAAO,CAAE,KAAM,EAAM,eACd,MAAO,IAAS,SACvB,EAAO,CAAE,KAAM,SAAS,EAAM,GAAI,WAElC,MAAM,IAAI,WAAU,4BAEtB,SAAK,MAAQ,EAAK,OAAS,EAAK,GAAG,OAAS,GAAG,MAC/C,EAAK,WAAa,GAAU,EAAK,OACjC,EAAK,KAAO,EAAK,MAAQ,EAAK,GAAG,MAAQ,GAAG,KAC5C,EAAK,UAAY,GAAU,EAAK,MAChC,EAAK,SAAW,EAAK,UAAY,EAAK,GAAG,UAAY,GAAG,SACxD,EAAK,UAAY,EAAK,WAAa,EAAK,GAAG,WAAa,GAAG,UACpD,GAET,GAAO,QAAU,KCtBjB,sBAAM,IAAW,QAAQ,IAAI,6BAA+B,QAAQ,SAC9D,CAAE,WAAS,UAAkB,gBAC7B,GAAU,IACd,GAAI,KAAK,KAAK,GAEZ,KAAM,QAAO,OACX,GAAI,WAAU,4CACd,CACE,OACA,KAAM,0BAMZ,GADA,EAAO,GAAQ,GACX,KAAa,SACf,GAAM,GAAc,YACd,CAAC,QAAQ,GAAM,GACrB,GAAI,EAAY,KAAK,EAAK,OAAO,EAAK,SACpC,KAAM,QAAO,OAAO,GAAI,OAAM,+BAAgC,CAC5D,OACA,KAAM,WAKZ,MAAO,IAET,GAAO,QAAU,KC5BjB,sBAAM,CAAC,YAAmB,gBAEpB,GAAW,CAAC,EAAM,EAAQ,EAAO,SAEjC,IAAS,EACJ,QAAQ,UAEV,EAAK,UAAU,GAAQ,KAC5B,GAAM,EAAG,cAAgB,EAAO,OAChC,GAAM,EAAG,OAAS,SACd,GAAS,EAAM,GAAQ,GAAS,GAChC,QAIF,GAAe,CAAC,EAAM,EAAQ,EAAO,UACzC,GAAI,IAAS,EAGb,IACE,MAAO,GAAK,SAAS,GAAQ,cAAgB,EAAO,aAC7C,GACP,MAAO,GAAG,OAAS,SACf,GAAa,EAAM,GAAQ,GAAS,GACpC,SAIR,GAAO,QAAU,CAAC,YAAU,mBC5B5B,sBAAM,CAAC,YAAmB,gBAEpB,GAAe,CAAC,EAAM,EAAM,KAChC,EAAK,UAAY,GACjB,GAAM,GAAS,GAAQ,GACvB,MAAI,KAAW,EACN,EAAK,WAAW,EAAM,GAAM,MAAM,IAGvC,GAAI,EAAG,OAAS,SACd,KAAM,KAIL,EAAK,WAAW,EAAM,GAAM,KAAK,IAAM,GAAQ,EAAM,IAC1D,GAAI,EAAG,OAAS,SACd,MAAO,IAAa,EAAQ,GACzB,KAAK,GAAQ,GAAa,EAAM,EAAM,IAC3C,GAAI,EAAG,OAAS,UAAY,EAAG,OAAS,QACtC,KAAM,GACR,MAAO,GAAK,UAAU,GAAM,KAAK,IAC/B,GAAI,EAAG,cACL,MAAO,GAEP,KAAM,IACP,KAAQ,KAAM,QAIf,GAAmB,CAAC,EAAM,EAAM,KACpC,GAAM,GAAS,GAAQ,GAGvB,GAFA,EAAK,UAAY,GAEb,IAAW,EACb,IACE,MAAO,GAAK,UAAU,EAAM,SACrB,GAGP,GAAI,EAAG,OAAS,SACd,KAAM,GAEN,OAIN,IACE,SAAK,UAAU,EAAM,GACd,GAAQ,QACR,GACP,GAAI,EAAG,OAAS,SACd,MAAO,IAAiB,EAAM,EAAM,GAAiB,EAAQ,EAAM,IACrE,GAAI,EAAG,OAAS,UAAY,EAAG,OAAS,QACtC,KAAM,GACR,IACE,GAAI,CAAC,EAAK,SAAS,GAAM,cACvB,KAAM,SACD,GACP,KAAM,MAKZ,GAAO,QAAU,CAAC,gBAAc,uBC/DhC,sBAAM,CAAC,YAAmB,gBACpB,CAAC,YAAU,iBAAwB,KACnC,CAAC,gBAAc,qBAA4B,KAE3C,GAAe,CAAC,EAAM,IAC1B,GAAK,UAAY,GAEb,AADW,GAAQ,KACR,EACN,EAAK,WAAW,EAAM,GAExB,GAAS,EAAM,GAAM,KAAK,GAC/B,EAAK,WAAW,EAAM,GAAM,KAAK,IAAM,GACtC,MAAM,IACL,GAAI,EAAG,OAAS,SACd,MAAO,IAAa,EAAM,GAE1B,KAAM,OAIR,GAAmB,CAAC,EAAM,KAG9B,GAFA,EAAK,UAAY,GAEb,AADW,GAAQ,KACR,EACb,MAAO,GAAK,UAAU,EAAM,GAE9B,GAAM,GAAO,GAAa,EAAM,GAChC,IACE,SAAK,UAAU,EAAM,GACd,QACA,GACP,GAAI,EAAG,OAAS,SACd,MAAO,IAAiB,EAAM,GAE9B,KAAM,KAIZ,GAAO,QAAU,CAAC,gBAAc,uBCtChC,sBAAM,IAAa,cAEb,GAAU,QAAQ,IAAI,iCAAmC,QAAQ,QACjE,GAAU,GAAQ,QAAQ,KAAM,IAAI,MAAM,KAC1C,GAAY,CAAC,GAAQ,GAAK,IAAM,CAAC,GAAQ,IAAO,IAAM,CAAC,GAAQ,IAAM,GAErE,GAAY,AAAC,GAA0B,GAAQ,EAAK,QAAU,GAAG,MAAxC,IAAM,GAC/B,GAAgB,AAAC,GAA0B,GAAQ,EAAK,YAAc,GAAG,UAA5C,IAAM,GAEzC,GAAO,QAAU,CAAC,aAAW,oBCT7B,sBAAM,IAAkB,KAClB,GAAkB,KAElB,CAAC,gBAAc,qBAA4B,KAC3C,CAAC,gBAAc,qBAA4B,KAC3C,CAAC,aAAW,kBAAyB,KAGrC,GAAS,CAAC,EAAM,IACpB,GAAO,GAAQ,GACf,EAAO,GAAQ,GACR,GAAU,GACb,GAAa,EAAM,GACnB,GAAa,EAAM,IAGnB,GAAa,CAAC,EAAM,IACxB,GAAO,GAAQ,GACf,EAAO,GAAQ,GACR,GAAc,GACjB,GAAiB,EAAM,GACvB,GAAiB,EAAM,IAG7B,GAAO,KAAO,GACd,GAAO,OAAS,CAAC,EAAM,IAAS,GAAa,GAAQ,GAAO,GAAQ,IACpE,GAAO,OAAS,CAAC,EAAM,IAAS,GAAa,GAAQ,GAAO,GAAQ,IACpE,GAAO,WAAa,CAAC,EAAM,IAAS,GAAiB,GAAQ,GAAO,GAAQ,IAC5E,GAAO,WAAa,CAAC,EAAM,IAAS,GAAiB,GAAQ,GAAO,GAAQ,IAE5E,GAAO,QAAU,KC9BjB,gCACA,GAAM,IAAa,cACb,GAAe,gBAGf,GAAS,GAAG,OAAS,SAAW,QAEhC,GAAa,GAAG,WAAa,aAAe,YAG5C,GAAoB,GAAG,QAC3B,CAAC,QAAQ,QAAQ,MAAM,eACvB,CAAC,QAAQ,QAAQ,MAAM,cAEnB,GAAa,CAAC,EAAM,EAAK,KAC7B,IACE,MAAO,IAAG,IAAY,EAAM,EAAK,SAC1B,GACP,GAAI,EAAG,OAAS,SACd,KAAM,KAKN,GAAY,CAAC,EAAM,EAAK,KAC5B,IACE,MAAO,IAAG,UAAU,EAAM,EAAK,SACxB,GACP,GAAI,EAAG,OAAS,SACd,KAAM,KAKN,GACJ,GAAoB,CAAC,EAAM,EAAK,EAAK,IAAO,IAI1C,AAAI,CAAC,GAAM,EAAG,OAAS,SACrB,EAAG,GAEH,GAAG,MAAM,EAAM,EAAK,EAAK,IAE3B,CAAC,EAAG,EAAI,EAAK,IAAO,EAGlB,GACJ,GAAoB,CAAC,EAAM,EAAK,KAC9B,IACE,MAAO,IAAW,EAAM,EAAK,SACtB,GACP,GAAI,EAAG,OAAS,SACd,KAAM,GACR,GAAU,EAAM,EAAK,KAGvB,CAAC,EAAM,EAAK,IAAQ,GAAW,EAAM,EAAK,GAGxC,GAAc,QAAQ,QACxB,GAAU,CAAC,EAAM,EAAS,IAAO,GAAG,QAAQ,EAAM,EAAS,GAC3D,GAAc,CAAC,EAAM,IAAY,GAAG,YAAY,EAAM,GAE1D,AAAI,QAAQ,KAAK,KACf,IAAU,CAAC,EAAM,EAAS,IAAO,GAAG,QAAQ,EAAM,IAEpD,GAAM,IAAQ,CAAC,EAAO,EAAK,EAAK,KAC9B,GAAG,IAAQ,EAAO,EAAK,EAAK,GAAa,EAAO,EAAK,EAAK,IAExD,EAAG,GAAM,EAAG,OAAS,SAAW,EAAK,UAInC,GAAY,CAAC,EAAG,EAAO,EAAK,EAAK,KACrC,GAAI,MAAO,IAAU,SACnB,MAAO,IAAG,MAAM,GAAK,QAAQ,EAAG,GAAQ,CAAC,EAAI,KAE3C,GAAI,EACF,MAAO,GAAG,EAAG,OAAS,SAAW,EAAK,MACxC,EAAM,KAAO,EACb,GAAU,EAAG,EAAO,EAAK,EAAK,KAGlC,GAAI,EAAM,cACR,GAAO,GAAK,QAAQ,EAAG,EAAM,MAAO,EAAK,EAAK,IAC5C,GAAI,EACF,MAAO,GAAG,GACZ,GAAM,GAAQ,GAAK,QAAQ,EAAG,EAAM,MACpC,GAAM,EAAO,EAAK,EAAK,UAGzB,GAAM,GAAQ,GAAK,QAAQ,EAAG,EAAM,MACpC,GAAM,EAAO,EAAK,EAAK,KAKrB,GAAS,CAAC,EAAG,EAAK,EAAK,KAC3B,GAAQ,EAAG,CAAE,cAAe,IAAQ,CAAC,EAAI,KAGvC,GAAI,GACF,GAAI,EAAG,OAAS,SACd,MAAO,KACJ,GAAI,EAAG,OAAS,WAAa,EAAG,OAAS,UAC5C,MAAO,GAAG,GAEd,GAAI,GAAM,CAAC,EAAS,OAClB,MAAO,IAAM,EAAG,EAAK,EAAK,GAE5B,GAAI,GAAM,EAAS,OACf,EAAW,KACT,EAAO,IACX,GAAI,IAEJ,GAAI,EACF,MAAO,GAAG,EAAW,GACvB,GAAI,EAAG,GAAQ,EACb,MAAO,IAAM,EAAG,EAAK,EAAK,KAG9B,EAAS,QAAQ,GAAS,GAAU,EAAG,EAAO,EAAK,EAAK,OAItD,GAAgB,CAAC,EAAG,EAAO,EAAK,KACpC,GAAI,MAAO,IAAU,SACnB,IACE,GAAM,GAAQ,GAAG,UAAU,GAAK,QAAQ,EAAG,IAC3C,EAAM,KAAO,EACb,EAAQ,QACD,GACP,GAAI,EAAG,OAAS,SACd,OAEA,KAAM,GAIZ,AAAI,EAAM,eACR,GAAW,GAAK,QAAQ,EAAG,EAAM,MAAO,EAAK,GAE/C,GAAiB,GAAK,QAAQ,EAAG,EAAM,MAAO,EAAK,IAG/C,GAAa,CAAC,EAAG,EAAK,KAC1B,GAAI,GACJ,IACE,EAAW,GAAY,EAAG,CAAE,cAAe,WACpC,GACP,GAAI,EAAG,OAAS,SACd,OACG,GAAI,EAAG,OAAS,WAAa,EAAG,OAAS,UAC5C,MAAO,IAAiB,EAAG,EAAK,GAEhC,KAAM,GAGV,MAAI,IAAY,EAAS,QACvB,EAAS,QAAQ,GAAS,GAAc,EAAG,EAAO,EAAK,IAElD,GAAiB,EAAG,EAAK,IAGlC,GAAO,QAAU,GACjB,GAAO,KAAO,KCtKd,gCAMA,GAAM,IAAiB,KACjB,GAAa,cACb,GAAe,gBACf,GAAiB,KATvB,gBAW2B,OACzB,YAAa,EAAS,GACpB,MAAM,wCACN,KAAK,KAAO,EACZ,KAAK,QAAU,KAGb,QACF,MAAO,gBAnBX,gBAuBuB,OACrB,YAAa,EAAM,GACjB,MAAM,EAAO,qBAAwB,EAAO,KAC5C,KAAK,KAAO,EACZ,KAAK,KAAO,KAGV,QACF,MAAO,aAIX,GAAO,QAAU,CAAC,EAAK,EAAK,KAG1B,GAAM,GAAQ,EAAI,MACZ,EAAO,EAAI,KAAO,IAClB,EAAa,GAAO,IAAW,EAE/B,EAAM,EAAI,IACV,EAAM,EAAI,IACV,EAAU,MAAO,IAAQ,UAC7B,MAAO,IAAQ,UACd,KAAQ,EAAI,YAAc,IAAQ,EAAI,YAEnC,EAAW,EAAI,SACf,EAAS,EAAI,OACb,EAAQ,EAAI,MACZ,EAAM,EAAI,IAEV,EAAO,CAAC,EAAI,KAChB,AAAI,EACF,EAAG,GAEH,GAAM,IAAI,EAAK,IACf,AAAI,GAAW,EACb,GAAO,EAAS,EAAK,EAAK,GAAM,EAAK,IAClC,AAAI,EACP,GAAG,MAAM,EAAK,EAAM,GAEpB,MAIN,GAAI,GAAS,EAAM,IAAI,KAAS,GAC9B,MAAO,KAET,GAAI,IAAQ,EACV,MAAO,IAAG,KAAK,EAAK,CAAC,EAAI,KACvB,AAAI,IAAM,CAAC,EAAG,gBACZ,GAAK,GAAI,IAAS,EAAK,GAAM,EAAG,MAAQ,YAC1C,EAAK,KAIT,GAAI,EACF,MAAO,IAAO,EAAK,CAAC,SAAO,KAAK,GAAQ,EAAK,KAAM,GAAO,GAG5D,GAAM,GAAQ,AADF,GAAK,SAAS,EAAK,GACb,MAAM,SACxB,GAAO,EAAK,EAAO,EAAM,EAAO,EAAQ,EAAK,KAAM,IAGrD,GAAM,IAAS,CAAC,EAAM,EAAO,EAAM,EAAO,EAAQ,EAAK,EAAS,KAC9D,GAAI,CAAC,EAAM,OACT,MAAO,GAAG,KAAM,GAClB,GAAM,GAAI,EAAM,QACV,EAAO,EAAO,IAAM,EAC1B,GAAI,EAAM,IAAI,GACZ,MAAO,IAAO,EAAM,EAAO,EAAM,EAAO,EAAQ,EAAK,EAAS,GAChE,GAAG,MAAM,EAAM,EAAM,GAAQ,EAAM,EAAO,EAAM,EAAO,EAAQ,EAAK,EAAS,KAGzE,GAAU,CAAC,EAAM,EAAO,EAAM,EAAO,EAAQ,EAAK,EAAS,IAAO,IACtE,GAAI,GACF,GAAI,EAAG,MAAQ,GAAK,QAAQ,EAAG,QAAU,GACpC,GAAG,OAAS,WAAa,EAAG,OAAS,UACxC,MAAO,GAAG,GAAI,IAAS,EAAK,EAAG,OAEjC,GAAG,MAAM,EAAM,CAAC,EAAQ,KACtB,GAAI,EACF,EAAG,WACI,EAAG,cACV,GAAO,EAAM,EAAO,EAAM,EAAO,EAAQ,EAAK,EAAS,WAChD,EACP,GAAG,OAAO,EAAM,IACd,GAAI,EACF,MAAO,GAAG,GACZ,GAAG,MAAM,EAAM,EAAM,GAAQ,EAAM,EAAO,EAAM,EAAO,EAAQ,EAAK,EAAS,WAE1E,GAAI,EAAG,iBACZ,MAAO,GAAG,GAAI,IAAa,EAAM,EAAO,IAAM,EAAM,KAAK,OAEzD,EAAG,UAGP,GAAU,GAAW,EACrB,GAAO,EAAM,EAAO,EAAM,EAAO,EAAQ,EAAK,EAAS,IAI3D,GAAO,QAAQ,KAAO,CAAC,EAAK,KAG1B,GAAM,GAAQ,EAAI,MACZ,EAAO,EAAI,KAAO,IAClB,EAAa,GAAO,IAAW,EAE/B,EAAM,EAAI,IACV,EAAM,EAAI,IACV,EAAU,MAAO,IAAQ,UAC7B,MAAO,IAAQ,UACd,KAAQ,EAAI,YAAc,IAAQ,EAAI,YAEnC,EAAW,EAAI,SACf,EAAS,EAAI,OACb,EAAQ,EAAI,MACZ,EAAM,EAAI,IAEV,EAAO,AAAC,IACZ,EAAM,IAAI,EAAK,IACX,GAAW,GACb,GAAO,KAAK,EAAS,EAAK,GACxB,GACF,GAAG,UAAU,EAAK,IAGtB,GAAI,GAAS,EAAM,IAAI,KAAS,GAC9B,MAAO,KAET,GAAI,IAAQ,GACV,GAAI,GAAK,GACL,EAAO,UACX,IACE,EAAK,GAAG,SAAS,GAAK,oBACf,GACP,EAAO,EAAG,aAEV,GAAI,CAAC,EACH,KAAM,IAAI,IAAS,EAAK,GAE5B,IACA,OAGF,GAAI,EACF,MAAO,GAAK,GAAO,KAAK,EAAK,IAG/B,GAAM,GAAQ,AADF,GAAK,SAAS,EAAK,GACb,MAAM,SACpB,EAAU,KACd,OAAS,GAAI,EAAM,QAAS,EAAO,EACjC,GAAM,IAAQ,IAAM,GACpB,EAAI,EAAM,QACV,GAAI,GAAM,IAAI,GAGd,IACE,GAAG,UAAU,EAAM,GACnB,EAAU,GAAW,EACrB,EAAM,IAAI,EAAM,UACT,GACP,GAAI,EAAG,MAAQ,GAAK,QAAQ,EAAG,QAAU,GACpC,GAAG,OAAS,WAAa,EAAG,OAAS,UACxC,MAAO,IAAI,IAAS,EAAK,EAAG,MAE9B,GAAM,GAAK,GAAG,UAAU,GACxB,GAAI,EAAG,eACL,EAAM,IAAI,EAAM,IAChB,iBACS,GACT,GAAG,WAAW,GACd,GAAG,UAAU,EAAM,GACnB,EAAU,GAAW,EACrB,EAAM,IAAI,EAAM,IAChB,iBACS,EAAG,iBACZ,MAAO,IAAI,IAAa,EAAM,EAAO,IAAM,EAAM,KAAK,MAI5D,MAAO,GAAK,MC5Md,mBAQA,GAAM,IAAiB,kBAEvB,GAAO,QAAU,KAIf,GAAM,GAAS,GAAI,KAGb,EAAe,GAAI,KAGnB,CAAE,QAAiB,gBACnB,EAAU,GACd,EAAK,GAAM,MAAM,SAAS,MAAM,EAAG,IAAI,OAAO,CAAC,EAAK,IAClD,EAAI,OAAS,EAAI,OAAO,EAAK,EAAI,EAAI,OAAS,GAAI,IAAS,CAAC,GAAO,IAGjE,EAAU,GAAI,KAId,EAAY,IAChB,GAAM,GAAM,EAAa,IAAI,GAE7B,GAAI,CAAC,EACH,KAAM,IAAI,OAAM,gDAClB,MAAO,CACL,MAAO,EAAI,MAAM,IAAI,GAAQ,EAAO,IAAI,IACxC,KAAM,CAAC,GAAG,EAAI,MAAM,IAAI,GAAQ,EAAO,IAAI,MAMzC,EAAQ,IACZ,GAAM,CAAC,QAAO,QAAQ,EAAU,GAChC,MAAO,GAAM,MAAM,GAAK,EAAE,KAAO,IAC/B,EAAK,MAAM,GAAK,EAAE,YAAc,MAAO,EAAE,GAAG,IAAI,KAI9C,EAAM,GACN,EAAQ,IAAI,IAAO,CAAC,EAAM,GACrB,GACT,GAAQ,IAAI,GACZ,EAAG,IAAM,EAAM,IACR,IAGH,EAAQ,IACZ,GAAI,CAAC,EAAQ,IAAI,GACf,MAAO,GAET,GAAM,CAAE,QAAO,QAAS,EAAa,IAAI,GACnC,EAAO,GAAI,KAEjB,SAAM,QAAQ,IACZ,GAAM,GAAI,EAAO,IAAI,GACrB,GAAO,MAAM,EAAE,GAAI,GACnB,AAAI,EAAE,SAAW,EACf,EAAO,OAAO,GAEd,GAAE,QACF,AAAI,MAAO,GAAE,IAAO,WAClB,EAAK,IAAI,EAAE,IAEX,EAAE,GAAG,QAAQ,GAAM,EAAK,IAAI,OAIlC,EAAK,QAAQ,IACX,GAAM,GAAI,EAAO,IAAI,GACrB,GAAO,EAAE,YAAc,MACvB,AAAI,EAAE,GAAG,OAAS,GAAK,EAAE,SAAW,EAClC,EAAO,OAAO,GACX,AAAI,EAAE,GAAG,OAAS,EACrB,GAAE,QAGF,EAAK,IAAI,EAAE,KAEX,EAAE,GAAG,OAAO,KAEhB,EAAQ,OAAO,GAEf,EAAK,QAAQ,GAAM,EAAI,IAChB,IA4BT,MAAO,CAAE,QAAO,QAzBA,CAAC,EAAO,KACtB,GAAM,GAAO,GAAI,KACf,EAAM,IAAI,GAAQ,EAAQ,IAAO,OAAO,CAAC,EAAG,IAAM,EAAE,OAAO,KAE7D,SAAa,IAAI,EAAI,CAAC,OAAM,UAC5B,EAAM,QAAQ,IACZ,GAAM,GAAI,EAAO,IAAI,GACrB,AAAK,EAGH,EAAE,KAAK,GAFP,EAAO,IAAI,EAAM,CAAC,MAItB,EAAK,QAAQ,IACX,GAAM,GAAI,EAAO,IAAI,GACrB,AAAK,EAEA,AAAI,EAAE,EAAE,OAAS,YAAc,KAClC,EAAE,EAAE,OAAS,GAAG,IAAI,GAEpB,EAAE,KAAK,GAAI,KAAI,CAAC,KAJhB,EAAO,IAAI,EAAK,CAAC,GAAI,KAAI,CAAC,QAOvB,EAAI,QCxHf,mBAQA,GAAM,IAAW,QAAQ,IAAI,mBAAqB,QAAQ,SACpD,GAAY,KAAa,QACzB,GAAK,OAAO,qBAA+B,cAG3C,CAAE,WAAS,WAAS,YAAU,mBAAkB,GAAM,GAAG,UAEzD,GAAc,IAAa,CAAC,CAAC,GAC7B,GAAY,IAAM,KAClB,GAAW,GAAkB,GAAU,GAAU,GACvD,GAAO,QAAU,AAAC,GACd,GAAQ,EAAO,GAAY,GAAW,IADV,IAAM,MClBtC,gCAQA,GAAM,IAAiB,kBACjB,GAAiB,KACjB,EAAa,cACb,GAAc,KACd,GAAe,gBACf,GAAgB,KAChB,GAAa,KACb,GAA2B,KAE3B,GAAU,OAAO,WACjB,GAAU,OAAO,WACjB,GAAW,OAAO,YAClB,GAAa,OAAO,cACpB,GAAS,OAAO,UAChB,GAAO,OAAO,QACd,GAAY,OAAO,aACnB,GAAO,OAAO,QACd,GAAU,OAAO,WACjB,GAAW,OAAO,YAClB,GAAc,OAAO,eACrB,GAAY,OAAO,aACnB,GAAQ,OAAO,SACf,GAAU,OAAO,WACjB,GAAU,OAAO,WACjB,GAAO,OAAO,QACd,GAAS,OAAO,UAChB,GAAQ,OAAO,SACf,GAAa,OAAO,cACpB,GAAO,OAAO,QACd,GAAU,OAAO,WACjB,GAAM,OAAO,OACb,GAAM,OAAO,OACb,GAAiB,kBACjB,GAAkB,KAGlB,GAAc,KAClB,KAAM,IAAI,OAAM,uCAmBZ,GAAa,CAAC,EAAM,KACxB,GAAI,QAAQ,WAAa,QACvB,MAAO,GAAG,OAAO,EAAM,GAEzB,GAAM,GAAO,EAAO,WAAa,GAAO,YAAY,IAAI,SAAS,OACjE,EAAG,OAAO,EAAM,EAAM,IACpB,GAAI,EACF,MAAO,GAAG,GACZ,EAAG,OAAO,EAAM,MAKd,GAAiB,IACrB,GAAI,QAAQ,WAAa,QACvB,MAAO,GAAG,WAAW,GAEvB,GAAM,GAAO,EAAO,WAAa,GAAO,YAAY,IAAI,SAAS,OACjE,EAAG,WAAW,EAAM,GACpB,EAAG,WAAW,IAIV,GAAS,CAAC,EAAG,EAAG,IACpB,IAAM,IAAM,EAAI,EACd,IAAM,IAAM,EAAI,EAChB,EA1FJ,gBA4FqB,IACnB,YAAa,GAuBX,GAtBK,GACH,GAAM,IAER,EAAI,OAAS,IACX,KAAK,IAAS,GACd,KAAK,OAGP,MAAM,GAEN,KAAK,aAAe,KAEpB,KAAK,UAAY,MAAO,GAAI,WAAc,WAAa,EAAI,UAAY,KAEvE,KAAK,SAAW,GAChB,KAAK,SAAW,GAEhB,KAAK,IAAW,EAChB,KAAK,IAAS,GAEd,KAAK,SAAW,EAAI,UAAY,GAAI,KAEhC,MAAO,GAAI,KAAQ,UAAY,MAAO,GAAI,KAAQ,UAEpD,GAAI,MAAO,GAAI,KAAQ,UAAY,MAAO,GAAI,KAAQ,SACpD,KAAM,IAAI,WAAU,+CACtB,GAAI,EAAI,cACN,KAAM,IAAI,WACR,kEAEJ,KAAK,IAAM,EAAI,IACf,KAAK,IAAM,EAAI,IACf,KAAK,SAAW,OAEhB,MAAK,IAAM,KACX,KAAK,IAAM,KACX,KAAK,SAAW,GAIlB,AAAI,EAAI,gBAAkB,QAAa,MAAO,GAAI,KAAQ,SACxD,KAAK,cAAgB,QAAQ,QAAU,QAAQ,WAAa,EAE5D,KAAK,cAAgB,CAAC,CAAC,EAAI,cAE7B,KAAK,WAAc,MAAK,eAAiB,KAAK,WAAa,QAAQ,OACjE,QAAQ,SAAW,KACrB,KAAK,WAAc,MAAK,eAAiB,KAAK,WAAa,QAAQ,OACjE,QAAQ,SAAW,KAIrB,KAAK,WAAa,EAAI,aAAe,GAGrC,KAAK,MAAQ,CAAC,CAAC,EAAI,OAAS,QAAQ,WAAa,QAGjD,KAAK,MAAQ,CAAC,CAAC,EAAI,MAGnB,KAAK,KAAO,CAAC,CAAC,EAAI,KAGlB,KAAK,QAAU,CAAC,CAAC,EAAI,QAKrB,KAAK,cAAgB,CAAC,CAAC,EAAI,cAI3B,KAAK,OAAS,CAAC,CAAC,EAAI,OAEpB,KAAK,IAAM,GAAK,QAAQ,EAAI,KAAO,QAAQ,OAC3C,KAAK,MAAQ,CAAC,EAAI,OAAS,EAE3B,KAAK,aAAe,EAAI,QAAU,EAAI,QAAQ,QAC9C,KAAK,MAAQ,MAAO,GAAI,OAAU,SAAW,EAAI,MAAQ,KAAK,aAG9D,KAAK,MAAQ,EAAI,OAAU,IAAU,CAAC,KAAK,MAC3C,KAAK,MAAQ,EAAI,OAAU,IAAU,CAAC,KAAK,MAE3C,KAAK,GAAG,QAAS,GAAS,KAAK,IAAS,IAM1C,KAAM,EAAM,EAAK,EAAO,IACtB,MAAI,KAAS,mBAAqB,IAAS,cACzC,GAAK,YAAc,IACd,MAAM,KAAK,EAAM,EAAK,IAG9B,MACC,AAAI,KAAK,KAAU,KAAK,MAAa,GACnC,MAAK,KAAK,aACV,KAAK,KAAK,UACV,KAAK,KAAK,OACV,KAAK,KAAK,WAIb,IAAY,GACX,GAAI,KAAK,OACP,GAAM,GAAQ,EAAM,KAAK,MAAM,SAC/B,GAAI,EAAM,OAAS,KAAK,MACtB,MAAO,GAGT,GAFA,EAAM,KAAO,EAAM,MAAM,KAAK,OAAO,KAAK,KAEtC,EAAM,OAAS,QACjB,GAAM,GAAY,EAAM,SAAS,MAAM,SACvC,AAAI,EAAU,QAAU,KAAK,OAC3B,GAAM,SAAW,EAAU,MAAM,KAAK,OAAO,KAAK,OAIxD,GAAI,CAAC,KAAK,eACR,GAAM,GAAI,EAAM,KAChB,GAAI,EAAE,MAAM,0BACV,YAAK,KAAK,kBAAmB,qBAAsB,CACjD,QACA,KAAM,IAED,GAKT,GAAI,GAAK,MAAM,WAAW,IACxB,GAAM,GAAS,GAAK,MAAM,MAAM,GAChC,EAAM,KAAO,EAAE,OAAO,EAAO,KAAK,QAClC,GAAM,GAAI,EAAO,KACjB,KAAK,KAAK,iBAAkB,aAAa,uBAAwB,CAC/D,QACA,KAAM,KAMZ,GAAI,KAAK,OACP,GAAM,GAAS,GAAK,MAAM,MAAM,EAAM,MACtC,EAAM,KAAO,EAAO,OAAS,GAAK,GAAG,OAAO,EAAM,MAC9C,EAAO,KAAO,GAAG,OAAO,EAAM,KAAK,OAAO,EAAO,KAAK,SAG5D,MAAI,IAAK,WAAW,EAAM,MACxB,EAAM,SAAW,EAAM,KAEvB,EAAM,SAAW,GAAK,QAAQ,KAAK,IAAK,EAAM,MAEzC,IAGR,IAAU,GACT,GAAI,CAAC,KAAK,IAAW,GACnB,MAAO,GAAM,SAIf,OAFA,GAAO,MAAM,MAAO,GAAM,SAAU,UAE5B,EAAM,UACP,gBACA,aACH,AAAI,EAAM,MACR,GAAM,KAAO,EAAM,KAAO,SAEzB,WACA,cACA,qBACA,WACA,eACH,MAAO,MAAK,IAAS,OAElB,sBACA,kBACA,eAEH,MAAO,MAAK,IAAa,KAI9B,IAAU,EAAI,GAIb,AAAI,EAAG,OAAS,WACd,KAAK,KAAK,QAAS,GAEnB,MAAK,KAAK,kBAAmB,EAAI,CAAC,UAClC,KAAK,MACL,EAAM,WAIT,IAAQ,EAAK,EAAM,GAClB,GAAM,EAAK,CACT,IAAK,KAAK,IACV,IAAK,KAAK,IACV,WAAY,KAAK,WACjB,WAAY,KAAK,WACjB,MAAO,KAAK,aACZ,SAAU,KAAK,cACf,OAAQ,KAAK,OACb,MAAO,KAAK,SACZ,IAAK,KAAK,IACV,KAAM,EACN,QAAS,KAAK,SACb,IAGJ,IAAU,GAGT,MAAO,MAAK,YACV,KAAK,eACJ,OAAO,GAAM,KAAQ,UAAY,EAAM,MAAQ,KAAK,YACnD,MAAO,GAAM,KAAQ,UAAY,EAAM,MAAQ,KAAK,aAErD,MAAO,MAAK,KAAQ,UAAY,KAAK,MAAQ,KAAK,YACjD,MAAO,MAAK,KAAQ,UAAY,KAAK,MAAQ,KAAK,YAGvD,IAAM,GACL,MAAO,IAAO,KAAK,IAAK,EAAM,IAAK,KAAK,aAGzC,IAAM,GACL,MAAO,IAAO,KAAK,IAAK,EAAM,IAAK,KAAK,aAGzC,IAAO,EAAO,GACb,GAAM,GAAO,EAAM,KAAO,MAAU,KAAK,MACnC,EAAS,GAAI,IAAI,YAAY,EAAM,SAAU,CACjD,MAAO,GAAQ,EAAM,MACrB,KAAM,EACN,UAAW,KAEb,EAAO,GAAG,QAAS,GAAM,KAAK,IAAS,EAAI,IAE3C,GAAI,GAAU,EACR,EAAO,IACX,GAAI,EACF,MAAO,MAAK,IAAS,EAAI,GAE3B,AAAI,EAAE,GAAY,GAChB,EAAG,MAAM,EAAO,GAAI,IAClB,IACA,EAAK,KAAK,IAAS,EAAI,GAAS,KAAK,SAK3C,EAAO,GAAG,SAAU,IAIlB,GAAM,GAAM,EAAM,SACZ,EAAK,EAAO,GAElB,GAAI,EAAM,OAAS,CAAC,KAAK,SACvB,IACA,GAAM,GAAQ,EAAM,OAAS,GAAI,MAC3B,EAAQ,EAAM,MACpB,EAAG,QAAQ,EAAI,EAAO,EAAO,GAC3B,EAAK,EAAG,OAAO,EAAK,EAAO,EAAO,GAAO,EAAK,GAAO,IACnD,KAGN,GAAI,KAAK,IAAS,IAChB,IACA,GAAM,GAAM,KAAK,IAAK,GAChB,EAAM,KAAK,IAAK,GACtB,EAAG,OAAO,EAAI,EAAK,EAAK,GACtB,EAAK,EAAG,MAAM,EAAK,EAAK,EAAK,GAAO,EAAK,GAAO,IAC9C,KAGN,MAGF,GAAM,GAAK,KAAK,WAAY,KAAK,UAAU,IAAU,EACrD,AAAI,IAAO,GACT,GAAG,GAAG,QAAS,GAAM,KAAK,IAAS,EAAI,IACvC,EAAM,KAAK,IAEb,EAAG,KAAK,IAGT,IAAY,EAAO,GAClB,GAAM,GAAO,EAAM,KAAO,MAAU,KAAK,MACzC,KAAK,IAAO,EAAM,SAAU,EAAM,IAChC,GAAI,EACF,WACO,KAAK,IAAS,EAAI,GAG3B,GAAI,GAAU,EACR,EAAO,IACX,AAAI,EAAE,GAAY,GAChB,KACA,KAAK,MACL,EAAM,WAIV,AAAI,EAAM,OAAS,CAAC,KAAK,SACvB,KACA,EAAG,OAAO,EAAM,SAAU,EAAM,OAAS,GAAI,MAAQ,EAAM,MAAO,IAGhE,KAAK,IAAS,IAChB,KACA,EAAG,MAAM,EAAM,SAAU,KAAK,IAAK,GAAQ,KAAK,IAAK,GAAQ,IAG/D,OAIH,IAAc,GACb,EAAM,YAAc,GACpB,KAAK,KAAK,wBACR,2BAA2B,EAAM,OAAQ,CAAC,UAC5C,EAAM,UAGP,IAAU,EAAO,GAChB,KAAK,IAAM,EAAO,EAAM,SAAU,UAAW,IAG9C,IAAW,EAAO,GACjB,KAAK,IAAM,EAAO,GAAK,QAAQ,KAAK,IAAK,EAAM,UAAW,OAAQ,IAGnE,MACC,KAAK,OAGN,MACC,KAAK,MACL,KAAK,OAGN,IAAO,GACN,KAAK,MACL,EAAM,UAMP,IAAa,EAAO,GACnB,MAAO,GAAM,OAAS,QACpB,CAAC,KAAK,QACN,EAAG,UACH,EAAG,OAAS,GACZ,QAAQ,WAAa,SAIxB,IAAU,GACT,KAAK,MACL,GAAM,GAAQ,CAAC,EAAM,MACrB,AAAI,EAAM,UACR,EAAM,KAAK,EAAM,UACnB,KAAK,aAAa,QAAQ,EAAO,GAAQ,KAAK,IAAU,EAAO,KAGhE,IAAW,EAAO,GACjB,KAAK,IAAO,GAAK,QAAQ,EAAM,UAAW,KAAK,MAAO,IACpD,GAAI,EACF,WACO,KAAK,IAAS,EAAI,GAE3B,EAAG,MAAM,EAAM,SAAU,CAAC,EAAI,KAC5B,AAAI,GAAO,MAAK,MAAQ,KAAK,OAAS,EAAG,MAAQ,EAAM,OACrD,MAAK,IAAM,GACX,KACK,AAAI,GAAM,KAAK,IAAY,EAAO,GACvC,KAAK,IAAQ,KAAM,EAAO,GAEvB,AAAI,EAAG,cACV,AAAI,EAAM,OAAS,YACjB,AAAI,CAAC,KAAK,SAAY,EAAC,EAAM,MAAS,GAAG,KAAO,QAAY,EAAM,MAChE,KAAK,IAAQ,KAAM,EAAO,GAE1B,EAAG,MAAM,EAAM,SAAU,EAAM,KAC7B,GAAM,KAAK,IAAQ,EAAI,EAAO,IAGlC,EAAG,MAAM,EAAM,SAAU,GAAM,KAAK,IAAQ,EAAI,EAAO,IAEzD,GAAW,EAAM,SAAU,GAAM,KAAK,IAAQ,EAAI,EAAO,SAKhE,IAAS,EAAI,EAAO,GACnB,GAAI,EACF,MAAO,MAAK,IAAS,EAAI,GAE3B,OAAQ,EAAM,UACP,WACA,cACA,iBACH,MAAO,MAAK,IAAM,EAAO,OAEtB,OACH,MAAO,MAAK,IAAU,EAAO,OAE1B,eACH,MAAO,MAAK,IAAS,EAAO,OAEzB,gBACA,aACH,MAAO,MAAK,IAAW,EAAO,KAInC,IAAO,EAAO,EAAU,EAAM,GAE7B,EAAG,GAAM,EAAU,EAAM,SAAU,IACjC,GAAI,EACF,MAAO,MAAK,IAAS,EAAI,GAC3B,IACA,KAAK,MACL,EAAM,aA5gBZ,gBAihByB,KACtB,IAAU,GACT,GAAM,GAAK,KAAK,IAAO,GAAK,QAAQ,EAAM,UAAW,KAAK,MAAO,IACjE,GAAI,EACF,MAAO,MAAK,IAAS,EAAI,GAC3B,IACE,GAAM,GAAK,EAAG,UAAU,EAAM,UAC9B,GAAI,KAAK,MAAQ,KAAK,OAAS,EAAG,MAAQ,EAAM,MAC9C,MAAO,MAAK,IAAM,GACf,GAAI,KAAK,IAAY,EAAO,GAC/B,MAAO,MAAK,IAAQ,KAAM,EAAO,IAEjC,IACE,MAAI,GAAG,cACL,AAAI,EAAM,OAAS,YACb,CAAC,KAAK,SAAW,EAAM,MAAS,GAAG,KAAO,QAAY,EAAM,MAC9D,EAAG,UAAU,EAAM,SAAU,EAAM,MAErC,EAAG,UAAU,EAAM,UAErB,GAAe,EAAM,UAChB,KAAK,IAAQ,KAAM,EAAO,UAC1B,GACP,MAAO,MAAK,IAAS,EAAI,UAGtB,GACP,MAAO,MAAK,IAAQ,KAAM,EAAO,MAIpC,IAAO,EAAO,GACb,GAAM,GAAO,EAAM,KAAO,MAAU,KAAK,MAEnC,EAAO,IACX,GAAI,GACJ,IACE,EAAG,UAAU,SACN,GACP,EAAa,EAEf,AAAI,IAAM,IACR,KAAK,IAAS,GAAM,EAAY,IAGhC,EACJ,IACE,EAAK,EAAG,SAAS,EAAM,SAAU,GAAQ,EAAM,MAAO,SAC/C,GACP,MAAO,GAAK,GAEd,GAAM,GAAK,KAAK,WAAY,KAAK,UAAU,IAAU,EACrD,AAAI,IAAO,GACT,GAAG,GAAG,QAAS,GAAM,KAAK,IAAS,EAAI,IACvC,EAAM,KAAK,IAGb,EAAG,GAAG,OAAQ,IACZ,IACE,EAAG,UAAU,EAAI,EAAO,EAAG,EAAM,cAC1B,GACP,EAAK,MAIT,EAAG,GAAG,MAAO,IACX,GAAI,GAAK,KAGT,GAAI,EAAM,OAAS,CAAC,KAAK,SACvB,GAAM,GAAQ,EAAM,OAAS,GAAI,MAC3B,EAAQ,EAAM,MACpB,IACE,EAAG,YAAY,EAAI,EAAO,SACnB,GACP,IACE,EAAG,WAAW,EAAM,SAAU,EAAO,SAC9B,GACP,EAAK,IAKX,GAAI,KAAK,IAAS,IAChB,GAAM,GAAM,KAAK,IAAK,GAChB,EAAM,KAAK,IAAK,GAEtB,IACE,EAAG,WAAW,EAAI,EAAK,SAChB,GACP,IACE,EAAG,UAAU,EAAM,SAAU,EAAK,SAC3B,GACP,EAAK,GAAM,IAKjB,EAAK,MAIR,IAAY,EAAO,GAClB,GAAM,GAAO,EAAM,KAAO,MAAU,KAAK,MACnC,EAAK,KAAK,IAAO,EAAM,SAAU,GACvC,GAAI,EACF,MAAO,MAAK,IAAS,EAAI,GAC3B,GAAI,EAAM,OAAS,CAAC,KAAK,QACvB,IACE,EAAG,WAAW,EAAM,SAAU,EAAM,OAAS,GAAI,MAAQ,EAAM,aACxD,IAEX,GAAI,KAAK,IAAS,GAChB,IACE,EAAG,UAAU,EAAM,SAAU,KAAK,IAAK,GAAQ,KAAK,IAAK,UAClD,IAEX,EAAM,UAGP,IAAQ,EAAK,GACZ,IACE,MAAO,IAAM,KAAK,EAAK,CACrB,IAAK,KAAK,IACV,IAAK,KAAK,IACV,WAAY,KAAK,WACjB,WAAY,KAAK,WACjB,MAAO,KAAK,aACZ,SAAU,KAAK,cACf,OAAQ,KAAK,OACb,MAAO,KAAK,SACZ,IAAK,KAAK,IACV,KAAM,UAED,GACP,MAAO,KAIV,IAAO,EAAO,EAAU,EAAM,GAC7B,IACE,EAAG,EAAO,QAAQ,EAAU,EAAM,UAClC,EAAM,eACC,GACP,MAAO,MAAK,IAAS,EAAI,MAK/B,GAAO,KAAO,GACd,GAAO,QAAU,KCvqBjB,gCAGA,GAAM,IAAc,KACd,GAAiB,KACjB,GAAa,cACb,GAAc,KACd,GAAe,gBAErB,GAAO,QAAU,CAAC,EAAM,EAAO,KAC7B,AAAI,MAAO,IAAS,WAClB,GAAK,EAAM,EAAQ,KAAM,EAAO,IACzB,MAAM,QAAQ,IACrB,GAAQ,EAAM,EAAO,IAEnB,MAAO,IAAU,YACnB,GAAK,EAAO,EAAQ,MAEtB,AAAK,EAGH,EAAQ,MAAM,KAAK,GAFnB,EAAQ,GAIV,GAAM,GAAM,GAAI,GAEhB,GAAI,EAAI,MAAQ,MAAO,IAAO,WAC5B,KAAM,IAAI,WAAU,iDAEtB,GAAI,CAAC,EAAI,MAAQ,MAAO,IAAO,WAC7B,KAAM,IAAI,WAAU,4CAEtB,MAAI,GAAM,QACR,GAAY,EAAK,GAEZ,EAAI,MAAQ,EAAI,KAAO,GAAgB,GAC1C,EAAI,KAAO,GAAY,EAAK,GAC5B,EAAI,KAAO,GAAY,GACvB,GAAQ,IAKd,GAAM,IAAc,CAAC,EAAK,KACxB,GAAM,GAAM,GAAI,KAAI,EAAM,IAAI,GAAK,CAAC,EAAE,QAAQ,OAAQ,IAAK,MACrD,EAAS,EAAI,OAEb,EAAS,CAAC,EAAM,KACpB,GAAM,GAAO,GAAK,GAAK,MAAM,GAAM,MAAQ,IACrC,EAAM,IAAS,EAAO,GACxB,EAAI,IAAI,GAAQ,EAAI,IAAI,GACxB,EAAO,GAAK,QAAQ,GAAO,GAE/B,SAAI,IAAI,EAAM,GACP,GAGT,EAAI,OAAS,EACT,CAAC,EAAM,IAAU,EAAO,EAAM,IAAU,EAAO,EAAK,QAAQ,OAAQ,KACpE,GAAQ,EAAO,EAAK,QAAQ,OAAQ,MAGpC,GAAkB,IACtB,GAAM,GAAI,GAAI,IAAO,KAAK,GAEpB,EAAO,EAAI,KACX,EAAO,GAAG,SAAS,GAGnB,EAAW,EAAI,aAAe,GAAK,KAAO,KAKhD,AAJe,GAAI,IAAI,eAAe,EAAM,CAC1C,SAAU,EACV,KAAM,EAAK,OAEN,KAAK,IAGR,GAAc,CAAC,EAAK,KACxB,GAAM,GAAI,GAAI,IAAO,GACf,EAAW,EAAI,aAAe,GAAK,KAAO,KAE1C,EAAO,EAAI,KACX,EAAI,GAAI,SAAQ,CAAC,EAAS,KAC9B,EAAE,GAAG,QAAS,GACd,EAAE,GAAG,QAAS,GAId,GAAG,KAAK,EAAM,CAAC,EAAI,KACjB,GAAI,EACF,EAAO,QAEP,GAAM,GAAS,GAAI,IAAI,WAAW,EAAM,CACtC,SAAU,EACV,KAAM,EAAK,OAEb,EAAO,GAAG,QAAS,GACnB,EAAO,KAAK,QAIlB,MAAO,GAAK,EAAE,KAAK,EAAI,GAAM,GAGzB,GAAc,GAAO,GAAI,IAAO,KAAK,GAErC,GAAU,GAAO,GAAI,IAAO,KCzGlC,2BAGA,GAAQ,EAAI,GAAQ,OAAiB,KACrC,GAAQ,EAAI,GAAQ,QAAkB,KACtC,GAAQ,EAAI,GAAQ,KAAe,KACnC,GAAQ,EAAI,GAAQ,OAAiB,KACrC,GAAQ,EAAI,GAAQ,QAAkB,KAGtC,GAAQ,KAAe,KACvB,GAAQ,OAAiB,KACzB,GAAQ,MAAgB,KACxB,GAAQ,UAAoB,KAC5B,GAAQ,WAAqB,KAC7B,GAAQ,OAAiB,KACzB,GAAQ,IAAc,KACtB,GAAQ,MAAgB,OCjBxB,qDAAkB,SAClB,GAIO,SAEP,GAAkB,SAGlB,GAAiB,oBACjB,GAAgB,SAChB,GAAiB,oBACjB,GAAgB,SAEV,GAAc,6BAA6B,iBAAc,kBAAkB,iBAAc,gBAAgB,wBAE/G,cACE,GAAM,CAAE,KAAM,GAAY,WAAI,QAAQ,CACpC,QAAS,WACT,cAAe,KAEjB,MAAO,IAAI,SAAQ,CAAC,EAAS,KAC3B,WAAK,IAAI,GAAa,SAAU,GAC9B,EAAS,KACP,WACG,EAAE,CACD,IAAK,EACL,MAAO,EACP,QAAQ,KACR,OAAO,EAAS,GACd,QAAQ,KAAK,MAGhB,GAAG,SAAU,KACZ,EAAQ,WAAK,QAAQ,EAAS,uBAE/B,GAAG,QAAS,AAAC,IACZ,EAAO,UAOnB,kBAA+B,GAC7B,QAAQ,IAAI,qCACZ,GAAM,GAAe,KAAM,MAC3B,QAAQ,IAAI,mCAEZ,QAAQ,IACN,GAAG,WAAM,YACP;AAAA,EACmB,WAAM,KACzB,8GAGJ,GAAM,GAAS,KAAM,aACnB,CACE,KAAM,WAAK,QACT,KAAM,YAAM,YACZ,MACA,eACA,UACA,WACA,MACA,sBAEF,KAAM,WACN,QAAS,CACP,aACA,gBACA,aACA,eACA,iBAEF,SAAU,GACV,SAAU,IAEZ,GAGF,AAAI,QAAQ,IAAI,SAAS,QAAQ,IAAI,GAEjC,EAAO,OAAS,CAAE,GAAO,UAAY,EAAO,MAAQ,EAAO,SAC7D,QAAQ,MAAM,EAAO,OAGnB,EAAO,WAAa,CAAE,GAAO,UAAY,EAAO,MAAQ,EAAO,SACjE,QAAQ,MAAM,EAAO,WAGvB,AAAI,EAAO,UAAY,EAAO,MAAQ,EAAO,OAC3C,QAAQ,IAAI,GAAG,WAAM,MAAM,0CACtB,AAAI,EAAO,SAChB,SAAQ,IACN,WAAM,YAAY,oDAEpB,QAAQ,IACN,GAAG,WAAM,KACP,8EAIJ,QAAQ,IAAI,GAAG,WAAM,IAAI,sBAG3B,QAAQ,UC3GV,0CAAA,GAAI,ICAG,GAAM,IAAW,WDCxB,AAAI,QAAQ,WAAa,SACvB,GAAW,AAAQ,KAA0B,SACxC,AAAI,QAAQ,WAAa,QAC9B,GAAW,AAAQ,KAA8B,SAEjD,GAAW,KACT,KAAM", + "sources": ["../node_modules/.pnpm/isexe@2.0.0/node_modules/isexe/windows.js", "../node_modules/.pnpm/isexe@2.0.0/node_modules/isexe/mode.js", "../node_modules/.pnpm/isexe@2.0.0/node_modules/isexe/index.js", "../node_modules/.pnpm/which@2.0.2/node_modules/which/which.js", "../node_modules/.pnpm/big-integer@1.6.48/node_modules/big-integer/BigInteger.js", "../node_modules/.pnpm/bplist-parser@0.2.0/node_modules/bplist-parser/bplistParser.js", "../node_modules/.pnpm/stream-buffers@2.2.0/node_modules/stream-buffers/lib/constants.js", "../node_modules/.pnpm/stream-buffers@2.2.0/node_modules/stream-buffers/lib/readable_streambuffer.js", "../node_modules/.pnpm/stream-buffers@2.2.0/node_modules/stream-buffers/lib/writable_streambuffer.js", "../node_modules/.pnpm/stream-buffers@2.2.0/node_modules/stream-buffers/lib/streambuffer.js", "../node_modules/.pnpm/bplist-creator@0.0.8/node_modules/bplist-creator/bplistCreator.js", "../node_modules/.pnpm/xmldom@0.1.31/node_modules/xmldom/sax.js", "../node_modules/.pnpm/xmldom@0.1.31/node_modules/xmldom/dom.js", "../node_modules/.pnpm/xmldom@0.1.31/node_modules/xmldom/dom-parser.js", "../node_modules/.pnpm/plist@3.0.1/node_modules/plist/lib/parse.js", "../node_modules/.pnpm/base64-js@1.5.1/node_modules/base64-js/index.js", "../node_modules/.pnpm/xmlbuilder@9.0.7/node_modules/xmlbuilder/lib/Utility.js", "../node_modules/.pnpm/xmlbuilder@9.0.7/node_modules/xmlbuilder/lib/XMLAttribute.js", "../node_modules/.pnpm/xmlbuilder@9.0.7/node_modules/xmlbuilder/lib/XMLElement.js", "../node_modules/.pnpm/xmlbuilder@9.0.7/node_modules/xmlbuilder/lib/XMLCData.js", "../node_modules/.pnpm/xmlbuilder@9.0.7/node_modules/xmlbuilder/lib/XMLComment.js", "../node_modules/.pnpm/xmlbuilder@9.0.7/node_modules/xmlbuilder/lib/XMLDeclaration.js", "../node_modules/.pnpm/xmlbuilder@9.0.7/node_modules/xmlbuilder/lib/XMLDTDAttList.js", "../node_modules/.pnpm/xmlbuilder@9.0.7/node_modules/xmlbuilder/lib/XMLDTDEntity.js", "../node_modules/.pnpm/xmlbuilder@9.0.7/node_modules/xmlbuilder/lib/XMLDTDElement.js", "../node_modules/.pnpm/xmlbuilder@9.0.7/node_modules/xmlbuilder/lib/XMLDTDNotation.js", "../node_modules/.pnpm/xmlbuilder@9.0.7/node_modules/xmlbuilder/lib/XMLDocType.js", "../node_modules/.pnpm/xmlbuilder@9.0.7/node_modules/xmlbuilder/lib/XMLRaw.js", "../node_modules/.pnpm/xmlbuilder@9.0.7/node_modules/xmlbuilder/lib/XMLText.js", "../node_modules/.pnpm/xmlbuilder@9.0.7/node_modules/xmlbuilder/lib/XMLProcessingInstruction.js", "../node_modules/.pnpm/xmlbuilder@9.0.7/node_modules/xmlbuilder/lib/XMLNode.js", "../node_modules/.pnpm/xmlbuilder@9.0.7/node_modules/xmlbuilder/lib/XMLStringifier.js", "../node_modules/.pnpm/xmlbuilder@9.0.7/node_modules/xmlbuilder/lib/XMLWriterBase.js", "../node_modules/.pnpm/xmlbuilder@9.0.7/node_modules/xmlbuilder/lib/XMLStringWriter.js", "../node_modules/.pnpm/xmlbuilder@9.0.7/node_modules/xmlbuilder/lib/XMLDocument.js", "../node_modules/.pnpm/xmlbuilder@9.0.7/node_modules/xmlbuilder/lib/XMLDocumentCB.js", "../node_modules/.pnpm/xmlbuilder@9.0.7/node_modules/xmlbuilder/lib/XMLStreamWriter.js", "../node_modules/.pnpm/xmlbuilder@9.0.7/node_modules/xmlbuilder/lib/index.js", "../node_modules/.pnpm/plist@3.0.1/node_modules/plist/lib/build.js", "../node_modules/.pnpm/plist@3.0.1/node_modules/plist/index.js", "../node_modules/.pnpm/simple-plist@1.1.1/node_modules/simple-plist/simple-plist.js", "../node_modules/.pnpm/color-name@1.1.4/node_modules/color-name/index.js", "../node_modules/.pnpm/color-convert@2.0.1/node_modules/color-convert/conversions.js", "../node_modules/.pnpm/color-convert@2.0.1/node_modules/color-convert/route.js", "../node_modules/.pnpm/color-convert@2.0.1/node_modules/color-convert/index.js", "../node_modules/.pnpm/ansi-styles@4.3.0/node_modules/ansi-styles/index.js", "../node_modules/.pnpm/has-flag@4.0.0/node_modules/has-flag/index.js", "../node_modules/.pnpm/supports-color@7.2.0/node_modules/supports-color/index.js", "../node_modules/.pnpm/chalk@4.1.0/node_modules/chalk/source/util.js", "../node_modules/.pnpm/chalk@4.1.0/node_modules/chalk/source/templates.js", "../node_modules/.pnpm/chalk@4.1.0/node_modules/chalk/source/index.js", "../node_modules/.pnpm/fs.realpath@1.0.0/node_modules/fs.realpath/old.js", "../node_modules/.pnpm/fs.realpath@1.0.0/node_modules/fs.realpath/index.js", "../node_modules/.pnpm/concat-map@0.0.1/node_modules/concat-map/index.js", "../node_modules/.pnpm/balanced-match@1.0.0/node_modules/balanced-match/index.js", "../node_modules/.pnpm/brace-expansion@1.1.11/node_modules/brace-expansion/index.js", "../node_modules/.pnpm/minimatch@3.0.4/node_modules/minimatch/minimatch.js", "../node_modules/.pnpm/inherits@2.0.4/node_modules/inherits/inherits_browser.js", "../node_modules/.pnpm/inherits@2.0.4/node_modules/inherits/inherits.js", "../node_modules/.pnpm/path-is-absolute@1.0.1/node_modules/path-is-absolute/index.js", "../node_modules/.pnpm/glob@7.1.6/node_modules/glob/common.js", "../node_modules/.pnpm/glob@7.1.6/node_modules/glob/sync.js", "../node_modules/.pnpm/wrappy@1.0.2/node_modules/wrappy/wrappy.js", "../node_modules/.pnpm/once@1.4.0/node_modules/once/once.js", "../node_modules/.pnpm/inflight@1.0.6/node_modules/inflight/inflight.js", "../node_modules/.pnpm/glob@7.1.6/node_modules/glob/glob.js", "../node_modules/.pnpm/rimraf@3.0.2/node_modules/rimraf/rimraf.js", "../node_modules/.pnpm/tmp@0.2.1/node_modules/tmp/lib/tmp.js", "../src/registerProtocol.mac.ts", "../node_modules/.pnpm/yocto-queue@0.1.0/node_modules/yocto-queue/index.js", "../node_modules/.pnpm/register-url-windows@1.0.24/node_modules/register-url-windows/node_modules/p-limit/index.js", "../node_modules/.pnpm/register-url-windows@1.0.24/node_modules/register-url-windows/node_modules/p-locate/index.js", "../node_modules/.pnpm/register-url-windows@1.0.24/node_modules/register-url-windows/node_modules/locate-path/index.js", "../node_modules/.pnpm/path-exists@4.0.0/node_modules/path-exists/index.js", "../node_modules/.pnpm/register-url-windows@1.0.24/node_modules/register-url-windows/node_modules/find-up/index.js", "../node_modules/.pnpm/tmp-promise@3.0.2/node_modules/tmp-promise/index.js", "../node_modules/.pnpm/register-url-windows@1.0.24/node_modules/register-url-windows/index.js", "../node_modules/.pnpm/tar@6.1.0/node_modules/tar/lib/high-level-opt.js", "../node_modules/.pnpm/yallist@4.0.0/node_modules/yallist/iterator.js", "../node_modules/.pnpm/yallist@4.0.0/node_modules/yallist/yallist.js", "../node_modules/.pnpm/minipass@3.1.3/node_modules/minipass/index.js", "../node_modules/.pnpm/minizlib@2.1.2/node_modules/minizlib/constants.js", "../node_modules/.pnpm/minizlib@2.1.2/node_modules/minizlib/index.js", "../node_modules/.pnpm/tar@6.1.0/node_modules/tar/lib/read-entry.js", "../node_modules/.pnpm/tar@6.1.0/node_modules/tar/lib/types.js", "../node_modules/.pnpm/tar@6.1.0/node_modules/tar/lib/large-numbers.js", "../node_modules/.pnpm/tar@6.1.0/node_modules/tar/lib/header.js", "../node_modules/.pnpm/tar@6.1.0/node_modules/tar/lib/pax.js", "../node_modules/.pnpm/tar@6.1.0/node_modules/tar/lib/warn-mixin.js", "../node_modules/.pnpm/tar@6.1.0/node_modules/tar/lib/winchars.js", "../node_modules/.pnpm/tar@6.1.0/node_modules/tar/lib/mode-fix.js", "../node_modules/.pnpm/tar@6.1.0/node_modules/tar/lib/write-entry.js", "../node_modules/.pnpm/tar@6.1.0/node_modules/tar/node_modules/yallist/iterator.js", "../node_modules/.pnpm/tar@6.1.0/node_modules/tar/node_modules/yallist/yallist.js", "../node_modules/.pnpm/tar@6.1.0/node_modules/tar/lib/pack.js", "../node_modules/.pnpm/fs-minipass@2.1.0/node_modules/fs-minipass/index.js", "../node_modules/.pnpm/tar@6.1.0/node_modules/tar/lib/parse.js", "../node_modules/.pnpm/tar@6.1.0/node_modules/tar/lib/list.js", "../node_modules/.pnpm/tar@6.1.0/node_modules/tar/lib/create.js", "../node_modules/.pnpm/tar@6.1.0/node_modules/tar/lib/replace.js", "../node_modules/.pnpm/tar@6.1.0/node_modules/tar/lib/update.js", "../node_modules/.pnpm/tar@6.1.0/node_modules/tar/node_modules/mkdirp/lib/opts-arg.js", "../node_modules/.pnpm/tar@6.1.0/node_modules/tar/node_modules/mkdirp/lib/path-arg.js", "../node_modules/.pnpm/tar@6.1.0/node_modules/tar/node_modules/mkdirp/lib/find-made.js", "../node_modules/.pnpm/tar@6.1.0/node_modules/tar/node_modules/mkdirp/lib/mkdirp-manual.js", "../node_modules/.pnpm/tar@6.1.0/node_modules/tar/node_modules/mkdirp/lib/mkdirp-native.js", "../node_modules/.pnpm/tar@6.1.0/node_modules/tar/node_modules/mkdirp/lib/use-native.js", "../node_modules/.pnpm/tar@6.1.0/node_modules/tar/node_modules/mkdirp/index.js", "../node_modules/.pnpm/chownr@2.0.0/node_modules/chownr/chownr.js", "../node_modules/.pnpm/tar@6.1.0/node_modules/tar/lib/mkdir.js", "../node_modules/.pnpm/tar@6.1.0/node_modules/tar/lib/path-reservations.js", "../node_modules/.pnpm/tar@6.1.0/node_modules/tar/lib/get-write-flag.js", "../node_modules/.pnpm/tar@6.1.0/node_modules/tar/lib/unpack.js", "../node_modules/.pnpm/tar@6.1.0/node_modules/tar/lib/extract.js", "../node_modules/.pnpm/tar@6.1.0/node_modules/tar/index.js", "../src/registerProtocol.windows.ts", "../src/registerProtocol.ts", "../src/PROTOCOL.ts"], + "sourcesContent": ["module.exports = isexe\nisexe.sync = sync\n\nvar fs = require('fs')\n\nfunction checkPathExt (path, options) {\n var pathext = options.pathExt !== undefined ?\n options.pathExt : process.env.PATHEXT\n\n if (!pathext) {\n return true\n }\n\n pathext = pathext.split(';')\n if (pathext.indexOf('') !== -1) {\n return true\n }\n for (var i = 0; i < pathext.length; i++) {\n var p = pathext[i].toLowerCase()\n if (p && path.substr(-p.length).toLowerCase() === p) {\n return true\n }\n }\n return false\n}\n\nfunction checkStat (stat, path, options) {\n if (!stat.isSymbolicLink() && !stat.isFile()) {\n return false\n }\n return checkPathExt(path, options)\n}\n\nfunction isexe (path, options, cb) {\n fs.stat(path, function (er, stat) {\n cb(er, er ? false : checkStat(stat, path, options))\n })\n}\n\nfunction sync (path, options) {\n return checkStat(fs.statSync(path), path, options)\n}\n", "module.exports = isexe\nisexe.sync = sync\n\nvar fs = require('fs')\n\nfunction isexe (path, options, cb) {\n fs.stat(path, function (er, stat) {\n cb(er, er ? false : checkStat(stat, options))\n })\n}\n\nfunction sync (path, options) {\n return checkStat(fs.statSync(path), options)\n}\n\nfunction checkStat (stat, options) {\n return stat.isFile() && checkMode(stat, options)\n}\n\nfunction checkMode (stat, options) {\n var mod = stat.mode\n var uid = stat.uid\n var gid = stat.gid\n\n var myUid = options.uid !== undefined ?\n options.uid : process.getuid && process.getuid()\n var myGid = options.gid !== undefined ?\n options.gid : process.getgid && process.getgid()\n\n var u = parseInt('100', 8)\n var g = parseInt('010', 8)\n var o = parseInt('001', 8)\n var ug = u | g\n\n var ret = (mod & o) ||\n (mod & g) && gid === myGid ||\n (mod & u) && uid === myUid ||\n (mod & ug) && myUid === 0\n\n return ret\n}\n", "var fs = require('fs')\nvar core\nif (process.platform === 'win32' || global.TESTING_WINDOWS) {\n core = require('./windows.js')\n} else {\n core = require('./mode.js')\n}\n\nmodule.exports = isexe\nisexe.sync = sync\n\nfunction isexe (path, options, cb) {\n if (typeof options === 'function') {\n cb = options\n options = {}\n }\n\n if (!cb) {\n if (typeof Promise !== 'function') {\n throw new TypeError('callback not provided')\n }\n\n return new Promise(function (resolve, reject) {\n isexe(path, options || {}, function (er, is) {\n if (er) {\n reject(er)\n } else {\n resolve(is)\n }\n })\n })\n }\n\n core(path, options || {}, function (er, is) {\n // ignore EACCES because that just means we aren't allowed to run it\n if (er) {\n if (er.code === 'EACCES' || options && options.ignoreErrors) {\n er = null\n is = false\n }\n }\n cb(er, is)\n })\n}\n\nfunction sync (path, options) {\n // my kingdom for a filtered catch\n try {\n return core.sync(path, options || {})\n } catch (er) {\n if (options && options.ignoreErrors || er.code === 'EACCES') {\n return false\n } else {\n throw er\n }\n }\n}\n", "const isWindows = process.platform === 'win32' ||\n process.env.OSTYPE === 'cygwin' ||\n process.env.OSTYPE === 'msys'\n\nconst path = require('path')\nconst COLON = isWindows ? ';' : ':'\nconst isexe = require('isexe')\n\nconst getNotFoundError = (cmd) =>\n Object.assign(new Error(`not found: ${cmd}`), { code: 'ENOENT' })\n\nconst getPathInfo = (cmd, opt) => {\n const colon = opt.colon || COLON\n\n // If it has a slash, then we don't bother searching the pathenv.\n // just check the file itself, and that's it.\n const pathEnv = cmd.match(/\\//) || isWindows && cmd.match(/\\\\/) ? ['']\n : (\n [\n // windows always checks the cwd first\n ...(isWindows ? [process.cwd()] : []),\n ...(opt.path || process.env.PATH ||\n /* istanbul ignore next: very unusual */ '').split(colon),\n ]\n )\n const pathExtExe = isWindows\n ? opt.pathExt || process.env.PATHEXT || '.EXE;.CMD;.BAT;.COM'\n : ''\n const pathExt = isWindows ? pathExtExe.split(colon) : ['']\n\n if (isWindows) {\n if (cmd.indexOf('.') !== -1 && pathExt[0] !== '')\n pathExt.unshift('')\n }\n\n return {\n pathEnv,\n pathExt,\n pathExtExe,\n }\n}\n\nconst which = (cmd, opt, cb) => {\n if (typeof opt === 'function') {\n cb = opt\n opt = {}\n }\n if (!opt)\n opt = {}\n\n const { pathEnv, pathExt, pathExtExe } = getPathInfo(cmd, opt)\n const found = []\n\n const step = i => new Promise((resolve, reject) => {\n if (i === pathEnv.length)\n return opt.all && found.length ? resolve(found)\n : reject(getNotFoundError(cmd))\n\n const ppRaw = pathEnv[i]\n const pathPart = /^\".*\"$/.test(ppRaw) ? ppRaw.slice(1, -1) : ppRaw\n\n const pCmd = path.join(pathPart, cmd)\n const p = !pathPart && /^\\.[\\\\\\/]/.test(cmd) ? cmd.slice(0, 2) + pCmd\n : pCmd\n\n resolve(subStep(p, i, 0))\n })\n\n const subStep = (p, i, ii) => new Promise((resolve, reject) => {\n if (ii === pathExt.length)\n return resolve(step(i + 1))\n const ext = pathExt[ii]\n isexe(p + ext, { pathExt: pathExtExe }, (er, is) => {\n if (!er && is) {\n if (opt.all)\n found.push(p + ext)\n else\n return resolve(p + ext)\n }\n return resolve(subStep(p, i, ii + 1))\n })\n })\n\n return cb ? step(0).then(res => cb(null, res), cb) : step(0)\n}\n\nconst whichSync = (cmd, opt) => {\n opt = opt || {}\n\n const { pathEnv, pathExt, pathExtExe } = getPathInfo(cmd, opt)\n const found = []\n\n for (let i = 0; i < pathEnv.length; i ++) {\n const ppRaw = pathEnv[i]\n const pathPart = /^\".*\"$/.test(ppRaw) ? ppRaw.slice(1, -1) : ppRaw\n\n const pCmd = path.join(pathPart, cmd)\n const p = !pathPart && /^\\.[\\\\\\/]/.test(cmd) ? cmd.slice(0, 2) + pCmd\n : pCmd\n\n for (let j = 0; j < pathExt.length; j ++) {\n const cur = p + pathExt[j]\n try {\n const is = isexe.sync(cur, { pathExt: pathExtExe })\n if (is) {\n if (opt.all)\n found.push(cur)\n else\n return cur\n }\n } catch (ex) {}\n }\n }\n\n if (opt.all && found.length)\n return found\n\n if (opt.nothrow)\n return null\n\n throw getNotFoundError(cmd)\n}\n\nmodule.exports = which\nwhich.sync = whichSync\n", "var bigInt = (function (undefined) {\r\n \"use strict\";\r\n\r\n var BASE = 1e7,\r\n LOG_BASE = 7,\r\n MAX_INT = 9007199254740992,\r\n MAX_INT_ARR = smallToArray(MAX_INT),\r\n DEFAULT_ALPHABET = \"0123456789abcdefghijklmnopqrstuvwxyz\";\r\n\r\n var supportsNativeBigInt = typeof BigInt === \"function\";\r\n\r\n function Integer(v, radix, alphabet, caseSensitive) {\r\n if (typeof v === \"undefined\") return Integer[0];\r\n if (typeof radix !== \"undefined\") return +radix === 10 && !alphabet ? parseValue(v) : parseBase(v, radix, alphabet, caseSensitive);\r\n return parseValue(v);\r\n }\r\n\r\n function BigInteger(value, sign) {\r\n this.value = value;\r\n this.sign = sign;\r\n this.isSmall = false;\r\n }\r\n BigInteger.prototype = Object.create(Integer.prototype);\r\n\r\n function SmallInteger(value) {\r\n this.value = value;\r\n this.sign = value < 0;\r\n this.isSmall = true;\r\n }\r\n SmallInteger.prototype = Object.create(Integer.prototype);\r\n\r\n function NativeBigInt(value) {\r\n this.value = value;\r\n }\r\n NativeBigInt.prototype = Object.create(Integer.prototype);\r\n\r\n function isPrecise(n) {\r\n return -MAX_INT < n && n < MAX_INT;\r\n }\r\n\r\n function smallToArray(n) { // For performance reasons doesn't reference BASE, need to change this function if BASE changes\r\n if (n < 1e7)\r\n return [n];\r\n if (n < 1e14)\r\n return [n % 1e7, Math.floor(n / 1e7)];\r\n return [n % 1e7, Math.floor(n / 1e7) % 1e7, Math.floor(n / 1e14)];\r\n }\r\n\r\n function arrayToSmall(arr) { // If BASE changes this function may need to change\r\n trim(arr);\r\n var length = arr.length;\r\n if (length < 4 && compareAbs(arr, MAX_INT_ARR) < 0) {\r\n switch (length) {\r\n case 0: return 0;\r\n case 1: return arr[0];\r\n case 2: return arr[0] + arr[1] * BASE;\r\n default: return arr[0] + (arr[1] + arr[2] * BASE) * BASE;\r\n }\r\n }\r\n return arr;\r\n }\r\n\r\n function trim(v) {\r\n var i = v.length;\r\n while (v[--i] === 0);\r\n v.length = i + 1;\r\n }\r\n\r\n function createArray(length) { // function shamelessly stolen from Yaffle's library https://github.com/Yaffle/BigInteger\r\n var x = new Array(length);\r\n var i = -1;\r\n while (++i < length) {\r\n x[i] = 0;\r\n }\r\n return x;\r\n }\r\n\r\n function truncate(n) {\r\n if (n > 0) return Math.floor(n);\r\n return Math.ceil(n);\r\n }\r\n\r\n function add(a, b) { // assumes a and b are arrays with a.length >= b.length\r\n var l_a = a.length,\r\n l_b = b.length,\r\n r = new Array(l_a),\r\n carry = 0,\r\n base = BASE,\r\n sum, i;\r\n for (i = 0; i < l_b; i++) {\r\n sum = a[i] + b[i] + carry;\r\n carry = sum >= base ? 1 : 0;\r\n r[i] = sum - carry * base;\r\n }\r\n while (i < l_a) {\r\n sum = a[i] + carry;\r\n carry = sum === base ? 1 : 0;\r\n r[i++] = sum - carry * base;\r\n }\r\n if (carry > 0) r.push(carry);\r\n return r;\r\n }\r\n\r\n function addAny(a, b) {\r\n if (a.length >= b.length) return add(a, b);\r\n return add(b, a);\r\n }\r\n\r\n function addSmall(a, carry) { // assumes a is array, carry is number with 0 <= carry < MAX_INT\r\n var l = a.length,\r\n r = new Array(l),\r\n base = BASE,\r\n sum, i;\r\n for (i = 0; i < l; i++) {\r\n sum = a[i] - base + carry;\r\n carry = Math.floor(sum / base);\r\n r[i] = sum - carry * base;\r\n carry += 1;\r\n }\r\n while (carry > 0) {\r\n r[i++] = carry % base;\r\n carry = Math.floor(carry / base);\r\n }\r\n return r;\r\n }\r\n\r\n BigInteger.prototype.add = function (v) {\r\n var n = parseValue(v);\r\n if (this.sign !== n.sign) {\r\n return this.subtract(n.negate());\r\n }\r\n var a = this.value, b = n.value;\r\n if (n.isSmall) {\r\n return new BigInteger(addSmall(a, Math.abs(b)), this.sign);\r\n }\r\n return new BigInteger(addAny(a, b), this.sign);\r\n };\r\n BigInteger.prototype.plus = BigInteger.prototype.add;\r\n\r\n SmallInteger.prototype.add = function (v) {\r\n var n = parseValue(v);\r\n var a = this.value;\r\n if (a < 0 !== n.sign) {\r\n return this.subtract(n.negate());\r\n }\r\n var b = n.value;\r\n if (n.isSmall) {\r\n if (isPrecise(a + b)) return new SmallInteger(a + b);\r\n b = smallToArray(Math.abs(b));\r\n }\r\n return new BigInteger(addSmall(b, Math.abs(a)), a < 0);\r\n };\r\n SmallInteger.prototype.plus = SmallInteger.prototype.add;\r\n\r\n NativeBigInt.prototype.add = function (v) {\r\n return new NativeBigInt(this.value + parseValue(v).value);\r\n }\r\n NativeBigInt.prototype.plus = NativeBigInt.prototype.add;\r\n\r\n function subtract(a, b) { // assumes a and b are arrays with a >= b\r\n var a_l = a.length,\r\n b_l = b.length,\r\n r = new Array(a_l),\r\n borrow = 0,\r\n base = BASE,\r\n i, difference;\r\n for (i = 0; i < b_l; i++) {\r\n difference = a[i] - borrow - b[i];\r\n if (difference < 0) {\r\n difference += base;\r\n borrow = 1;\r\n } else borrow = 0;\r\n r[i] = difference;\r\n }\r\n for (i = b_l; i < a_l; i++) {\r\n difference = a[i] - borrow;\r\n if (difference < 0) difference += base;\r\n else {\r\n r[i++] = difference;\r\n break;\r\n }\r\n r[i] = difference;\r\n }\r\n for (; i < a_l; i++) {\r\n r[i] = a[i];\r\n }\r\n trim(r);\r\n return r;\r\n }\r\n\r\n function subtractAny(a, b, sign) {\r\n var value;\r\n if (compareAbs(a, b) >= 0) {\r\n value = subtract(a, b);\r\n } else {\r\n value = subtract(b, a);\r\n sign = !sign;\r\n }\r\n value = arrayToSmall(value);\r\n if (typeof value === \"number\") {\r\n if (sign) value = -value;\r\n return new SmallInteger(value);\r\n }\r\n return new BigInteger(value, sign);\r\n }\r\n\r\n function subtractSmall(a, b, sign) { // assumes a is array, b is number with 0 <= b < MAX_INT\r\n var l = a.length,\r\n r = new Array(l),\r\n carry = -b,\r\n base = BASE,\r\n i, difference;\r\n for (i = 0; i < l; i++) {\r\n difference = a[i] + carry;\r\n carry = Math.floor(difference / base);\r\n difference %= base;\r\n r[i] = difference < 0 ? difference + base : difference;\r\n }\r\n r = arrayToSmall(r);\r\n if (typeof r === \"number\") {\r\n if (sign) r = -r;\r\n return new SmallInteger(r);\r\n } return new BigInteger(r, sign);\r\n }\r\n\r\n BigInteger.prototype.subtract = function (v) {\r\n var n = parseValue(v);\r\n if (this.sign !== n.sign) {\r\n return this.add(n.negate());\r\n }\r\n var a = this.value, b = n.value;\r\n if (n.isSmall)\r\n return subtractSmall(a, Math.abs(b), this.sign);\r\n return subtractAny(a, b, this.sign);\r\n };\r\n BigInteger.prototype.minus = BigInteger.prototype.subtract;\r\n\r\n SmallInteger.prototype.subtract = function (v) {\r\n var n = parseValue(v);\r\n var a = this.value;\r\n if (a < 0 !== n.sign) {\r\n return this.add(n.negate());\r\n }\r\n var b = n.value;\r\n if (n.isSmall) {\r\n return new SmallInteger(a - b);\r\n }\r\n return subtractSmall(b, Math.abs(a), a >= 0);\r\n };\r\n SmallInteger.prototype.minus = SmallInteger.prototype.subtract;\r\n\r\n NativeBigInt.prototype.subtract = function (v) {\r\n return new NativeBigInt(this.value - parseValue(v).value);\r\n }\r\n NativeBigInt.prototype.minus = NativeBigInt.prototype.subtract;\r\n\r\n BigInteger.prototype.negate = function () {\r\n return new BigInteger(this.value, !this.sign);\r\n };\r\n SmallInteger.prototype.negate = function () {\r\n var sign = this.sign;\r\n var small = new SmallInteger(-this.value);\r\n small.sign = !sign;\r\n return small;\r\n };\r\n NativeBigInt.prototype.negate = function () {\r\n return new NativeBigInt(-this.value);\r\n }\r\n\r\n BigInteger.prototype.abs = function () {\r\n return new BigInteger(this.value, false);\r\n };\r\n SmallInteger.prototype.abs = function () {\r\n return new SmallInteger(Math.abs(this.value));\r\n };\r\n NativeBigInt.prototype.abs = function () {\r\n return new NativeBigInt(this.value >= 0 ? this.value : -this.value);\r\n }\r\n\r\n\r\n function multiplyLong(a, b) {\r\n var a_l = a.length,\r\n b_l = b.length,\r\n l = a_l + b_l,\r\n r = createArray(l),\r\n base = BASE,\r\n product, carry, i, a_i, b_j;\r\n for (i = 0; i < a_l; ++i) {\r\n a_i = a[i];\r\n for (var j = 0; j < b_l; ++j) {\r\n b_j = b[j];\r\n product = a_i * b_j + r[i + j];\r\n carry = Math.floor(product / base);\r\n r[i + j] = product - carry * base;\r\n r[i + j + 1] += carry;\r\n }\r\n }\r\n trim(r);\r\n return r;\r\n }\r\n\r\n function multiplySmall(a, b) { // assumes a is array, b is number with |b| < BASE\r\n var l = a.length,\r\n r = new Array(l),\r\n base = BASE,\r\n carry = 0,\r\n product, i;\r\n for (i = 0; i < l; i++) {\r\n product = a[i] * b + carry;\r\n carry = Math.floor(product / base);\r\n r[i] = product - carry * base;\r\n }\r\n while (carry > 0) {\r\n r[i++] = carry % base;\r\n carry = Math.floor(carry / base);\r\n }\r\n return r;\r\n }\r\n\r\n function shiftLeft(x, n) {\r\n var r = [];\r\n while (n-- > 0) r.push(0);\r\n return r.concat(x);\r\n }\r\n\r\n function multiplyKaratsuba(x, y) {\r\n var n = Math.max(x.length, y.length);\r\n\r\n if (n <= 30) return multiplyLong(x, y);\r\n n = Math.ceil(n / 2);\r\n\r\n var b = x.slice(n),\r\n a = x.slice(0, n),\r\n d = y.slice(n),\r\n c = y.slice(0, n);\r\n\r\n var ac = multiplyKaratsuba(a, c),\r\n bd = multiplyKaratsuba(b, d),\r\n abcd = multiplyKaratsuba(addAny(a, b), addAny(c, d));\r\n\r\n var product = addAny(addAny(ac, shiftLeft(subtract(subtract(abcd, ac), bd), n)), shiftLeft(bd, 2 * n));\r\n trim(product);\r\n return product;\r\n }\r\n\r\n // The following function is derived from a surface fit of a graph plotting the performance difference\r\n // between long multiplication and karatsuba multiplication versus the lengths of the two arrays.\r\n function useKaratsuba(l1, l2) {\r\n return -0.012 * l1 - 0.012 * l2 + 0.000015 * l1 * l2 > 0;\r\n }\r\n\r\n BigInteger.prototype.multiply = function (v) {\r\n var n = parseValue(v),\r\n a = this.value, b = n.value,\r\n sign = this.sign !== n.sign,\r\n abs;\r\n if (n.isSmall) {\r\n if (b === 0) return Integer[0];\r\n if (b === 1) return this;\r\n if (b === -1) return this.negate();\r\n abs = Math.abs(b);\r\n if (abs < BASE) {\r\n return new BigInteger(multiplySmall(a, abs), sign);\r\n }\r\n b = smallToArray(abs);\r\n }\r\n if (useKaratsuba(a.length, b.length)) // Karatsuba is only faster for certain array sizes\r\n return new BigInteger(multiplyKaratsuba(a, b), sign);\r\n return new BigInteger(multiplyLong(a, b), sign);\r\n };\r\n\r\n BigInteger.prototype.times = BigInteger.prototype.multiply;\r\n\r\n function multiplySmallAndArray(a, b, sign) { // a >= 0\r\n if (a < BASE) {\r\n return new BigInteger(multiplySmall(b, a), sign);\r\n }\r\n return new BigInteger(multiplyLong(b, smallToArray(a)), sign);\r\n }\r\n SmallInteger.prototype._multiplyBySmall = function (a) {\r\n if (isPrecise(a.value * this.value)) {\r\n return new SmallInteger(a.value * this.value);\r\n }\r\n return multiplySmallAndArray(Math.abs(a.value), smallToArray(Math.abs(this.value)), this.sign !== a.sign);\r\n };\r\n BigInteger.prototype._multiplyBySmall = function (a) {\r\n if (a.value === 0) return Integer[0];\r\n if (a.value === 1) return this;\r\n if (a.value === -1) return this.negate();\r\n return multiplySmallAndArray(Math.abs(a.value), this.value, this.sign !== a.sign);\r\n };\r\n SmallInteger.prototype.multiply = function (v) {\r\n return parseValue(v)._multiplyBySmall(this);\r\n };\r\n SmallInteger.prototype.times = SmallInteger.prototype.multiply;\r\n\r\n NativeBigInt.prototype.multiply = function (v) {\r\n return new NativeBigInt(this.value * parseValue(v).value);\r\n }\r\n NativeBigInt.prototype.times = NativeBigInt.prototype.multiply;\r\n\r\n function square(a) {\r\n //console.assert(2 * BASE * BASE < MAX_INT);\r\n var l = a.length,\r\n r = createArray(l + l),\r\n base = BASE,\r\n product, carry, i, a_i, a_j;\r\n for (i = 0; i < l; i++) {\r\n a_i = a[i];\r\n carry = 0 - a_i * a_i;\r\n for (var j = i; j < l; j++) {\r\n a_j = a[j];\r\n product = 2 * (a_i * a_j) + r[i + j] + carry;\r\n carry = Math.floor(product / base);\r\n r[i + j] = product - carry * base;\r\n }\r\n r[i + l] = carry;\r\n }\r\n trim(r);\r\n return r;\r\n }\r\n\r\n BigInteger.prototype.square = function () {\r\n return new BigInteger(square(this.value), false);\r\n };\r\n\r\n SmallInteger.prototype.square = function () {\r\n var value = this.value * this.value;\r\n if (isPrecise(value)) return new SmallInteger(value);\r\n return new BigInteger(square(smallToArray(Math.abs(this.value))), false);\r\n };\r\n\r\n NativeBigInt.prototype.square = function (v) {\r\n return new NativeBigInt(this.value * this.value);\r\n }\r\n\r\n function divMod1(a, b) { // Left over from previous version. Performs faster than divMod2 on smaller input sizes.\r\n var a_l = a.length,\r\n b_l = b.length,\r\n base = BASE,\r\n result = createArray(b.length),\r\n divisorMostSignificantDigit = b[b_l - 1],\r\n // normalization\r\n lambda = Math.ceil(base / (2 * divisorMostSignificantDigit)),\r\n remainder = multiplySmall(a, lambda),\r\n divisor = multiplySmall(b, lambda),\r\n quotientDigit, shift, carry, borrow, i, l, q;\r\n if (remainder.length <= a_l) remainder.push(0);\r\n divisor.push(0);\r\n divisorMostSignificantDigit = divisor[b_l - 1];\r\n for (shift = a_l - b_l; shift >= 0; shift--) {\r\n quotientDigit = base - 1;\r\n if (remainder[shift + b_l] !== divisorMostSignificantDigit) {\r\n quotientDigit = Math.floor((remainder[shift + b_l] * base + remainder[shift + b_l - 1]) / divisorMostSignificantDigit);\r\n }\r\n // quotientDigit <= base - 1\r\n carry = 0;\r\n borrow = 0;\r\n l = divisor.length;\r\n for (i = 0; i < l; i++) {\r\n carry += quotientDigit * divisor[i];\r\n q = Math.floor(carry / base);\r\n borrow += remainder[shift + i] - (carry - q * base);\r\n carry = q;\r\n if (borrow < 0) {\r\n remainder[shift + i] = borrow + base;\r\n borrow = -1;\r\n } else {\r\n remainder[shift + i] = borrow;\r\n borrow = 0;\r\n }\r\n }\r\n while (borrow !== 0) {\r\n quotientDigit -= 1;\r\n carry = 0;\r\n for (i = 0; i < l; i++) {\r\n carry += remainder[shift + i] - base + divisor[i];\r\n if (carry < 0) {\r\n remainder[shift + i] = carry + base;\r\n carry = 0;\r\n } else {\r\n remainder[shift + i] = carry;\r\n carry = 1;\r\n }\r\n }\r\n borrow += carry;\r\n }\r\n result[shift] = quotientDigit;\r\n }\r\n // denormalization\r\n remainder = divModSmall(remainder, lambda)[0];\r\n return [arrayToSmall(result), arrayToSmall(remainder)];\r\n }\r\n\r\n function divMod2(a, b) { // Implementation idea shamelessly stolen from Silent Matt's library http://silentmatt.com/biginteger/\r\n // Performs faster than divMod1 on larger input sizes.\r\n var a_l = a.length,\r\n b_l = b.length,\r\n result = [],\r\n part = [],\r\n base = BASE,\r\n guess, xlen, highx, highy, check;\r\n while (a_l) {\r\n part.unshift(a[--a_l]);\r\n trim(part);\r\n if (compareAbs(part, b) < 0) {\r\n result.push(0);\r\n continue;\r\n }\r\n xlen = part.length;\r\n highx = part[xlen - 1] * base + part[xlen - 2];\r\n highy = b[b_l - 1] * base + b[b_l - 2];\r\n if (xlen > b_l) {\r\n highx = (highx + 1) * base;\r\n }\r\n guess = Math.ceil(highx / highy);\r\n do {\r\n check = multiplySmall(b, guess);\r\n if (compareAbs(check, part) <= 0) break;\r\n guess--;\r\n } while (guess);\r\n result.push(guess);\r\n part = subtract(part, check);\r\n }\r\n result.reverse();\r\n return [arrayToSmall(result), arrayToSmall(part)];\r\n }\r\n\r\n function divModSmall(value, lambda) {\r\n var length = value.length,\r\n quotient = createArray(length),\r\n base = BASE,\r\n i, q, remainder, divisor;\r\n remainder = 0;\r\n for (i = length - 1; i >= 0; --i) {\r\n divisor = remainder * base + value[i];\r\n q = truncate(divisor / lambda);\r\n remainder = divisor - q * lambda;\r\n quotient[i] = q | 0;\r\n }\r\n return [quotient, remainder | 0];\r\n }\r\n\r\n function divModAny(self, v) {\r\n var value, n = parseValue(v);\r\n if (supportsNativeBigInt) {\r\n return [new NativeBigInt(self.value / n.value), new NativeBigInt(self.value % n.value)];\r\n }\r\n var a = self.value, b = n.value;\r\n var quotient;\r\n if (b === 0) throw new Error(\"Cannot divide by zero\");\r\n if (self.isSmall) {\r\n if (n.isSmall) {\r\n return [new SmallInteger(truncate(a / b)), new SmallInteger(a % b)];\r\n }\r\n return [Integer[0], self];\r\n }\r\n if (n.isSmall) {\r\n if (b === 1) return [self, Integer[0]];\r\n if (b == -1) return [self.negate(), Integer[0]];\r\n var abs = Math.abs(b);\r\n if (abs < BASE) {\r\n value = divModSmall(a, abs);\r\n quotient = arrayToSmall(value[0]);\r\n var remainder = value[1];\r\n if (self.sign) remainder = -remainder;\r\n if (typeof quotient === \"number\") {\r\n if (self.sign !== n.sign) quotient = -quotient;\r\n return [new SmallInteger(quotient), new SmallInteger(remainder)];\r\n }\r\n return [new BigInteger(quotient, self.sign !== n.sign), new SmallInteger(remainder)];\r\n }\r\n b = smallToArray(abs);\r\n }\r\n var comparison = compareAbs(a, b);\r\n if (comparison === -1) return [Integer[0], self];\r\n if (comparison === 0) return [Integer[self.sign === n.sign ? 1 : -1], Integer[0]];\r\n\r\n // divMod1 is faster on smaller input sizes\r\n if (a.length + b.length <= 200)\r\n value = divMod1(a, b);\r\n else value = divMod2(a, b);\r\n\r\n quotient = value[0];\r\n var qSign = self.sign !== n.sign,\r\n mod = value[1],\r\n mSign = self.sign;\r\n if (typeof quotient === \"number\") {\r\n if (qSign) quotient = -quotient;\r\n quotient = new SmallInteger(quotient);\r\n } else quotient = new BigInteger(quotient, qSign);\r\n if (typeof mod === \"number\") {\r\n if (mSign) mod = -mod;\r\n mod = new SmallInteger(mod);\r\n } else mod = new BigInteger(mod, mSign);\r\n return [quotient, mod];\r\n }\r\n\r\n BigInteger.prototype.divmod = function (v) {\r\n var result = divModAny(this, v);\r\n return {\r\n quotient: result[0],\r\n remainder: result[1]\r\n };\r\n };\r\n NativeBigInt.prototype.divmod = SmallInteger.prototype.divmod = BigInteger.prototype.divmod;\r\n\r\n\r\n BigInteger.prototype.divide = function (v) {\r\n return divModAny(this, v)[0];\r\n };\r\n NativeBigInt.prototype.over = NativeBigInt.prototype.divide = function (v) {\r\n return new NativeBigInt(this.value / parseValue(v).value);\r\n };\r\n SmallInteger.prototype.over = SmallInteger.prototype.divide = BigInteger.prototype.over = BigInteger.prototype.divide;\r\n\r\n BigInteger.prototype.mod = function (v) {\r\n return divModAny(this, v)[1];\r\n };\r\n NativeBigInt.prototype.mod = NativeBigInt.prototype.remainder = function (v) {\r\n return new NativeBigInt(this.value % parseValue(v).value);\r\n };\r\n SmallInteger.prototype.remainder = SmallInteger.prototype.mod = BigInteger.prototype.remainder = BigInteger.prototype.mod;\r\n\r\n BigInteger.prototype.pow = function (v) {\r\n var n = parseValue(v),\r\n a = this.value,\r\n b = n.value,\r\n value, x, y;\r\n if (b === 0) return Integer[1];\r\n if (a === 0) return Integer[0];\r\n if (a === 1) return Integer[1];\r\n if (a === -1) return n.isEven() ? Integer[1] : Integer[-1];\r\n if (n.sign) {\r\n return Integer[0];\r\n }\r\n if (!n.isSmall) throw new Error(\"The exponent \" + n.toString() + \" is too large.\");\r\n if (this.isSmall) {\r\n if (isPrecise(value = Math.pow(a, b)))\r\n return new SmallInteger(truncate(value));\r\n }\r\n x = this;\r\n y = Integer[1];\r\n while (true) {\r\n if (b & 1 === 1) {\r\n y = y.times(x);\r\n --b;\r\n }\r\n if (b === 0) break;\r\n b /= 2;\r\n x = x.square();\r\n }\r\n return y;\r\n };\r\n SmallInteger.prototype.pow = BigInteger.prototype.pow;\r\n\r\n NativeBigInt.prototype.pow = function (v) {\r\n var n = parseValue(v);\r\n var a = this.value, b = n.value;\r\n var _0 = BigInt(0), _1 = BigInt(1), _2 = BigInt(2);\r\n if (b === _0) return Integer[1];\r\n if (a === _0) return Integer[0];\r\n if (a === _1) return Integer[1];\r\n if (a === BigInt(-1)) return n.isEven() ? Integer[1] : Integer[-1];\r\n if (n.isNegative()) return new NativeBigInt(_0);\r\n var x = this;\r\n var y = Integer[1];\r\n while (true) {\r\n if ((b & _1) === _1) {\r\n y = y.times(x);\r\n --b;\r\n }\r\n if (b === _0) break;\r\n b /= _2;\r\n x = x.square();\r\n }\r\n return y;\r\n }\r\n\r\n BigInteger.prototype.modPow = function (exp, mod) {\r\n exp = parseValue(exp);\r\n mod = parseValue(mod);\r\n if (mod.isZero()) throw new Error(\"Cannot take modPow with modulus 0\");\r\n var r = Integer[1],\r\n base = this.mod(mod);\r\n if (exp.isNegative()) {\r\n exp = exp.multiply(Integer[-1]);\r\n base = base.modInv(mod);\r\n }\r\n while (exp.isPositive()) {\r\n if (base.isZero()) return Integer[0];\r\n if (exp.isOdd()) r = r.multiply(base).mod(mod);\r\n exp = exp.divide(2);\r\n base = base.square().mod(mod);\r\n }\r\n return r;\r\n };\r\n NativeBigInt.prototype.modPow = SmallInteger.prototype.modPow = BigInteger.prototype.modPow;\r\n\r\n function compareAbs(a, b) {\r\n if (a.length !== b.length) {\r\n return a.length > b.length ? 1 : -1;\r\n }\r\n for (var i = a.length - 1; i >= 0; i--) {\r\n if (a[i] !== b[i]) return a[i] > b[i] ? 1 : -1;\r\n }\r\n return 0;\r\n }\r\n\r\n BigInteger.prototype.compareAbs = function (v) {\r\n var n = parseValue(v),\r\n a = this.value,\r\n b = n.value;\r\n if (n.isSmall) return 1;\r\n return compareAbs(a, b);\r\n };\r\n SmallInteger.prototype.compareAbs = function (v) {\r\n var n = parseValue(v),\r\n a = Math.abs(this.value),\r\n b = n.value;\r\n if (n.isSmall) {\r\n b = Math.abs(b);\r\n return a === b ? 0 : a > b ? 1 : -1;\r\n }\r\n return -1;\r\n };\r\n NativeBigInt.prototype.compareAbs = function (v) {\r\n var a = this.value;\r\n var b = parseValue(v).value;\r\n a = a >= 0 ? a : -a;\r\n b = b >= 0 ? b : -b;\r\n return a === b ? 0 : a > b ? 1 : -1;\r\n }\r\n\r\n BigInteger.prototype.compare = function (v) {\r\n // See discussion about comparison with Infinity:\r\n // https://github.com/peterolson/BigInteger.js/issues/61\r\n if (v === Infinity) {\r\n return -1;\r\n }\r\n if (v === -Infinity) {\r\n return 1;\r\n }\r\n\r\n var n = parseValue(v),\r\n a = this.value,\r\n b = n.value;\r\n if (this.sign !== n.sign) {\r\n return n.sign ? 1 : -1;\r\n }\r\n if (n.isSmall) {\r\n return this.sign ? -1 : 1;\r\n }\r\n return compareAbs(a, b) * (this.sign ? -1 : 1);\r\n };\r\n BigInteger.prototype.compareTo = BigInteger.prototype.compare;\r\n\r\n SmallInteger.prototype.compare = function (v) {\r\n if (v === Infinity) {\r\n return -1;\r\n }\r\n if (v === -Infinity) {\r\n return 1;\r\n }\r\n\r\n var n = parseValue(v),\r\n a = this.value,\r\n b = n.value;\r\n if (n.isSmall) {\r\n return a == b ? 0 : a > b ? 1 : -1;\r\n }\r\n if (a < 0 !== n.sign) {\r\n return a < 0 ? -1 : 1;\r\n }\r\n return a < 0 ? 1 : -1;\r\n };\r\n SmallInteger.prototype.compareTo = SmallInteger.prototype.compare;\r\n\r\n NativeBigInt.prototype.compare = function (v) {\r\n if (v === Infinity) {\r\n return -1;\r\n }\r\n if (v === -Infinity) {\r\n return 1;\r\n }\r\n var a = this.value;\r\n var b = parseValue(v).value;\r\n return a === b ? 0 : a > b ? 1 : -1;\r\n }\r\n NativeBigInt.prototype.compareTo = NativeBigInt.prototype.compare;\r\n\r\n BigInteger.prototype.equals = function (v) {\r\n return this.compare(v) === 0;\r\n };\r\n NativeBigInt.prototype.eq = NativeBigInt.prototype.equals = SmallInteger.prototype.eq = SmallInteger.prototype.equals = BigInteger.prototype.eq = BigInteger.prototype.equals;\r\n\r\n BigInteger.prototype.notEquals = function (v) {\r\n return this.compare(v) !== 0;\r\n };\r\n NativeBigInt.prototype.neq = NativeBigInt.prototype.notEquals = SmallInteger.prototype.neq = SmallInteger.prototype.notEquals = BigInteger.prototype.neq = BigInteger.prototype.notEquals;\r\n\r\n BigInteger.prototype.greater = function (v) {\r\n return this.compare(v) > 0;\r\n };\r\n NativeBigInt.prototype.gt = NativeBigInt.prototype.greater = SmallInteger.prototype.gt = SmallInteger.prototype.greater = BigInteger.prototype.gt = BigInteger.prototype.greater;\r\n\r\n BigInteger.prototype.lesser = function (v) {\r\n return this.compare(v) < 0;\r\n };\r\n NativeBigInt.prototype.lt = NativeBigInt.prototype.lesser = SmallInteger.prototype.lt = SmallInteger.prototype.lesser = BigInteger.prototype.lt = BigInteger.prototype.lesser;\r\n\r\n BigInteger.prototype.greaterOrEquals = function (v) {\r\n return this.compare(v) >= 0;\r\n };\r\n NativeBigInt.prototype.geq = NativeBigInt.prototype.greaterOrEquals = SmallInteger.prototype.geq = SmallInteger.prototype.greaterOrEquals = BigInteger.prototype.geq = BigInteger.prototype.greaterOrEquals;\r\n\r\n BigInteger.prototype.lesserOrEquals = function (v) {\r\n return this.compare(v) <= 0;\r\n };\r\n NativeBigInt.prototype.leq = NativeBigInt.prototype.lesserOrEquals = SmallInteger.prototype.leq = SmallInteger.prototype.lesserOrEquals = BigInteger.prototype.leq = BigInteger.prototype.lesserOrEquals;\r\n\r\n BigInteger.prototype.isEven = function () {\r\n return (this.value[0] & 1) === 0;\r\n };\r\n SmallInteger.prototype.isEven = function () {\r\n return (this.value & 1) === 0;\r\n };\r\n NativeBigInt.prototype.isEven = function () {\r\n return (this.value & BigInt(1)) === BigInt(0);\r\n }\r\n\r\n BigInteger.prototype.isOdd = function () {\r\n return (this.value[0] & 1) === 1;\r\n };\r\n SmallInteger.prototype.isOdd = function () {\r\n return (this.value & 1) === 1;\r\n };\r\n NativeBigInt.prototype.isOdd = function () {\r\n return (this.value & BigInt(1)) === BigInt(1);\r\n }\r\n\r\n BigInteger.prototype.isPositive = function () {\r\n return !this.sign;\r\n };\r\n SmallInteger.prototype.isPositive = function () {\r\n return this.value > 0;\r\n };\r\n NativeBigInt.prototype.isPositive = SmallInteger.prototype.isPositive;\r\n\r\n BigInteger.prototype.isNegative = function () {\r\n return this.sign;\r\n };\r\n SmallInteger.prototype.isNegative = function () {\r\n return this.value < 0;\r\n };\r\n NativeBigInt.prototype.isNegative = SmallInteger.prototype.isNegative;\r\n\r\n BigInteger.prototype.isUnit = function () {\r\n return false;\r\n };\r\n SmallInteger.prototype.isUnit = function () {\r\n return Math.abs(this.value) === 1;\r\n };\r\n NativeBigInt.prototype.isUnit = function () {\r\n return this.abs().value === BigInt(1);\r\n }\r\n\r\n BigInteger.prototype.isZero = function () {\r\n return false;\r\n };\r\n SmallInteger.prototype.isZero = function () {\r\n return this.value === 0;\r\n };\r\n NativeBigInt.prototype.isZero = function () {\r\n return this.value === BigInt(0);\r\n }\r\n\r\n BigInteger.prototype.isDivisibleBy = function (v) {\r\n var n = parseValue(v);\r\n if (n.isZero()) return false;\r\n if (n.isUnit()) return true;\r\n if (n.compareAbs(2) === 0) return this.isEven();\r\n return this.mod(n).isZero();\r\n };\r\n NativeBigInt.prototype.isDivisibleBy = SmallInteger.prototype.isDivisibleBy = BigInteger.prototype.isDivisibleBy;\r\n\r\n function isBasicPrime(v) {\r\n var n = v.abs();\r\n if (n.isUnit()) return false;\r\n if (n.equals(2) || n.equals(3) || n.equals(5)) return true;\r\n if (n.isEven() || n.isDivisibleBy(3) || n.isDivisibleBy(5)) return false;\r\n if (n.lesser(49)) return true;\r\n // we don't know if it's prime: let the other functions figure it out\r\n }\r\n\r\n function millerRabinTest(n, a) {\r\n var nPrev = n.prev(),\r\n b = nPrev,\r\n r = 0,\r\n d, t, i, x;\r\n while (b.isEven()) b = b.divide(2), r++;\r\n next: for (i = 0; i < a.length; i++) {\r\n if (n.lesser(a[i])) continue;\r\n x = bigInt(a[i]).modPow(b, n);\r\n if (x.isUnit() || x.equals(nPrev)) continue;\r\n for (d = r - 1; d != 0; d--) {\r\n x = x.square().mod(n);\r\n if (x.isUnit()) return false;\r\n if (x.equals(nPrev)) continue next;\r\n }\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n // Set \"strict\" to true to force GRH-supported lower bound of 2*log(N)^2\r\n BigInteger.prototype.isPrime = function (strict) {\r\n var isPrime = isBasicPrime(this);\r\n if (isPrime !== undefined) return isPrime;\r\n var n = this.abs();\r\n var bits = n.bitLength();\r\n if (bits <= 64)\r\n return millerRabinTest(n, [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37]);\r\n var logN = Math.log(2) * bits.toJSNumber();\r\n var t = Math.ceil((strict === true) ? (2 * Math.pow(logN, 2)) : logN);\r\n for (var a = [], i = 0; i < t; i++) {\r\n a.push(bigInt(i + 2));\r\n }\r\n return millerRabinTest(n, a);\r\n };\r\n NativeBigInt.prototype.isPrime = SmallInteger.prototype.isPrime = BigInteger.prototype.isPrime;\r\n\r\n BigInteger.prototype.isProbablePrime = function (iterations, rng) {\r\n var isPrime = isBasicPrime(this);\r\n if (isPrime !== undefined) return isPrime;\r\n var n = this.abs();\r\n var t = iterations === undefined ? 5 : iterations;\r\n for (var a = [], i = 0; i < t; i++) {\r\n a.push(bigInt.randBetween(2, n.minus(2), rng));\r\n }\r\n return millerRabinTest(n, a);\r\n };\r\n NativeBigInt.prototype.isProbablePrime = SmallInteger.prototype.isProbablePrime = BigInteger.prototype.isProbablePrime;\r\n\r\n BigInteger.prototype.modInv = function (n) {\r\n var t = bigInt.zero, newT = bigInt.one, r = parseValue(n), newR = this.abs(), q, lastT, lastR;\r\n while (!newR.isZero()) {\r\n q = r.divide(newR);\r\n lastT = t;\r\n lastR = r;\r\n t = newT;\r\n r = newR;\r\n newT = lastT.subtract(q.multiply(newT));\r\n newR = lastR.subtract(q.multiply(newR));\r\n }\r\n if (!r.isUnit()) throw new Error(this.toString() + \" and \" + n.toString() + \" are not co-prime\");\r\n if (t.compare(0) === -1) {\r\n t = t.add(n);\r\n }\r\n if (this.isNegative()) {\r\n return t.negate();\r\n }\r\n return t;\r\n };\r\n\r\n NativeBigInt.prototype.modInv = SmallInteger.prototype.modInv = BigInteger.prototype.modInv;\r\n\r\n BigInteger.prototype.next = function () {\r\n var value = this.value;\r\n if (this.sign) {\r\n return subtractSmall(value, 1, this.sign);\r\n }\r\n return new BigInteger(addSmall(value, 1), this.sign);\r\n };\r\n SmallInteger.prototype.next = function () {\r\n var value = this.value;\r\n if (value + 1 < MAX_INT) return new SmallInteger(value + 1);\r\n return new BigInteger(MAX_INT_ARR, false);\r\n };\r\n NativeBigInt.prototype.next = function () {\r\n return new NativeBigInt(this.value + BigInt(1));\r\n }\r\n\r\n BigInteger.prototype.prev = function () {\r\n var value = this.value;\r\n if (this.sign) {\r\n return new BigInteger(addSmall(value, 1), true);\r\n }\r\n return subtractSmall(value, 1, this.sign);\r\n };\r\n SmallInteger.prototype.prev = function () {\r\n var value = this.value;\r\n if (value - 1 > -MAX_INT) return new SmallInteger(value - 1);\r\n return new BigInteger(MAX_INT_ARR, true);\r\n };\r\n NativeBigInt.prototype.prev = function () {\r\n return new NativeBigInt(this.value - BigInt(1));\r\n }\r\n\r\n var powersOfTwo = [1];\r\n while (2 * powersOfTwo[powersOfTwo.length - 1] <= BASE) powersOfTwo.push(2 * powersOfTwo[powersOfTwo.length - 1]);\r\n var powers2Length = powersOfTwo.length, highestPower2 = powersOfTwo[powers2Length - 1];\r\n\r\n function shift_isSmall(n) {\r\n return Math.abs(n) <= BASE;\r\n }\r\n\r\n BigInteger.prototype.shiftLeft = function (v) {\r\n var n = parseValue(v).toJSNumber();\r\n if (!shift_isSmall(n)) {\r\n throw new Error(String(n) + \" is too large for shifting.\");\r\n }\r\n if (n < 0) return this.shiftRight(-n);\r\n var result = this;\r\n if (result.isZero()) return result;\r\n while (n >= powers2Length) {\r\n result = result.multiply(highestPower2);\r\n n -= powers2Length - 1;\r\n }\r\n return result.multiply(powersOfTwo[n]);\r\n };\r\n NativeBigInt.prototype.shiftLeft = SmallInteger.prototype.shiftLeft = BigInteger.prototype.shiftLeft;\r\n\r\n BigInteger.prototype.shiftRight = function (v) {\r\n var remQuo;\r\n var n = parseValue(v).toJSNumber();\r\n if (!shift_isSmall(n)) {\r\n throw new Error(String(n) + \" is too large for shifting.\");\r\n }\r\n if (n < 0) return this.shiftLeft(-n);\r\n var result = this;\r\n while (n >= powers2Length) {\r\n if (result.isZero() || (result.isNegative() && result.isUnit())) return result;\r\n remQuo = divModAny(result, highestPower2);\r\n result = remQuo[1].isNegative() ? remQuo[0].prev() : remQuo[0];\r\n n -= powers2Length - 1;\r\n }\r\n remQuo = divModAny(result, powersOfTwo[n]);\r\n return remQuo[1].isNegative() ? remQuo[0].prev() : remQuo[0];\r\n };\r\n NativeBigInt.prototype.shiftRight = SmallInteger.prototype.shiftRight = BigInteger.prototype.shiftRight;\r\n\r\n function bitwise(x, y, fn) {\r\n y = parseValue(y);\r\n var xSign = x.isNegative(), ySign = y.isNegative();\r\n var xRem = xSign ? x.not() : x,\r\n yRem = ySign ? y.not() : y;\r\n var xDigit = 0, yDigit = 0;\r\n var xDivMod = null, yDivMod = null;\r\n var result = [];\r\n while (!xRem.isZero() || !yRem.isZero()) {\r\n xDivMod = divModAny(xRem, highestPower2);\r\n xDigit = xDivMod[1].toJSNumber();\r\n if (xSign) {\r\n xDigit = highestPower2 - 1 - xDigit; // two's complement for negative numbers\r\n }\r\n\r\n yDivMod = divModAny(yRem, highestPower2);\r\n yDigit = yDivMod[1].toJSNumber();\r\n if (ySign) {\r\n yDigit = highestPower2 - 1 - yDigit; // two's complement for negative numbers\r\n }\r\n\r\n xRem = xDivMod[0];\r\n yRem = yDivMod[0];\r\n result.push(fn(xDigit, yDigit));\r\n }\r\n var sum = fn(xSign ? 1 : 0, ySign ? 1 : 0) !== 0 ? bigInt(-1) : bigInt(0);\r\n for (var i = result.length - 1; i >= 0; i -= 1) {\r\n sum = sum.multiply(highestPower2).add(bigInt(result[i]));\r\n }\r\n return sum;\r\n }\r\n\r\n BigInteger.prototype.not = function () {\r\n return this.negate().prev();\r\n };\r\n NativeBigInt.prototype.not = SmallInteger.prototype.not = BigInteger.prototype.not;\r\n\r\n BigInteger.prototype.and = function (n) {\r\n return bitwise(this, n, function (a, b) { return a & b; });\r\n };\r\n NativeBigInt.prototype.and = SmallInteger.prototype.and = BigInteger.prototype.and;\r\n\r\n BigInteger.prototype.or = function (n) {\r\n return bitwise(this, n, function (a, b) { return a | b; });\r\n };\r\n NativeBigInt.prototype.or = SmallInteger.prototype.or = BigInteger.prototype.or;\r\n\r\n BigInteger.prototype.xor = function (n) {\r\n return bitwise(this, n, function (a, b) { return a ^ b; });\r\n };\r\n NativeBigInt.prototype.xor = SmallInteger.prototype.xor = BigInteger.prototype.xor;\r\n\r\n var LOBMASK_I = 1 << 30, LOBMASK_BI = (BASE & -BASE) * (BASE & -BASE) | LOBMASK_I;\r\n function roughLOB(n) { // get lowestOneBit (rough)\r\n // SmallInteger: return Min(lowestOneBit(n), 1 << 30)\r\n // BigInteger: return Min(lowestOneBit(n), 1 << 14) [BASE=1e7]\r\n var v = n.value,\r\n x = typeof v === \"number\" ? v | LOBMASK_I :\r\n typeof v === \"bigint\" ? v | BigInt(LOBMASK_I) :\r\n v[0] + v[1] * BASE | LOBMASK_BI;\r\n return x & -x;\r\n }\r\n\r\n function integerLogarithm(value, base) {\r\n if (base.compareTo(value) <= 0) {\r\n var tmp = integerLogarithm(value, base.square(base));\r\n var p = tmp.p;\r\n var e = tmp.e;\r\n var t = p.multiply(base);\r\n return t.compareTo(value) <= 0 ? { p: t, e: e * 2 + 1 } : { p: p, e: e * 2 };\r\n }\r\n return { p: bigInt(1), e: 0 };\r\n }\r\n\r\n BigInteger.prototype.bitLength = function () {\r\n var n = this;\r\n if (n.compareTo(bigInt(0)) < 0) {\r\n n = n.negate().subtract(bigInt(1));\r\n }\r\n if (n.compareTo(bigInt(0)) === 0) {\r\n return bigInt(0);\r\n }\r\n return bigInt(integerLogarithm(n, bigInt(2)).e).add(bigInt(1));\r\n }\r\n NativeBigInt.prototype.bitLength = SmallInteger.prototype.bitLength = BigInteger.prototype.bitLength;\r\n\r\n function max(a, b) {\r\n a = parseValue(a);\r\n b = parseValue(b);\r\n return a.greater(b) ? a : b;\r\n }\r\n function min(a, b) {\r\n a = parseValue(a);\r\n b = parseValue(b);\r\n return a.lesser(b) ? a : b;\r\n }\r\n function gcd(a, b) {\r\n a = parseValue(a).abs();\r\n b = parseValue(b).abs();\r\n if (a.equals(b)) return a;\r\n if (a.isZero()) return b;\r\n if (b.isZero()) return a;\r\n var c = Integer[1], d, t;\r\n while (a.isEven() && b.isEven()) {\r\n d = min(roughLOB(a), roughLOB(b));\r\n a = a.divide(d);\r\n b = b.divide(d);\r\n c = c.multiply(d);\r\n }\r\n while (a.isEven()) {\r\n a = a.divide(roughLOB(a));\r\n }\r\n do {\r\n while (b.isEven()) {\r\n b = b.divide(roughLOB(b));\r\n }\r\n if (a.greater(b)) {\r\n t = b; b = a; a = t;\r\n }\r\n b = b.subtract(a);\r\n } while (!b.isZero());\r\n return c.isUnit() ? a : a.multiply(c);\r\n }\r\n function lcm(a, b) {\r\n a = parseValue(a).abs();\r\n b = parseValue(b).abs();\r\n return a.divide(gcd(a, b)).multiply(b);\r\n }\r\n function randBetween(a, b, rng) {\r\n a = parseValue(a);\r\n b = parseValue(b);\r\n var usedRNG = rng || Math.random;\r\n var low = min(a, b), high = max(a, b);\r\n var range = high.subtract(low).add(1);\r\n if (range.isSmall) return low.add(Math.floor(usedRNG() * range));\r\n var digits = toBase(range, BASE).value;\r\n var result = [], restricted = true;\r\n for (var i = 0; i < digits.length; i++) {\r\n var top = restricted ? digits[i] : BASE;\r\n var digit = truncate(usedRNG() * top);\r\n result.push(digit);\r\n if (digit < top) restricted = false;\r\n }\r\n return low.add(Integer.fromArray(result, BASE, false));\r\n }\r\n\r\n var parseBase = function (text, base, alphabet, caseSensitive) {\r\n alphabet = alphabet || DEFAULT_ALPHABET;\r\n text = String(text);\r\n if (!caseSensitive) {\r\n text = text.toLowerCase();\r\n alphabet = alphabet.toLowerCase();\r\n }\r\n var length = text.length;\r\n var i;\r\n var absBase = Math.abs(base);\r\n var alphabetValues = {};\r\n for (i = 0; i < alphabet.length; i++) {\r\n alphabetValues[alphabet[i]] = i;\r\n }\r\n for (i = 0; i < length; i++) {\r\n var c = text[i];\r\n if (c === \"-\") continue;\r\n if (c in alphabetValues) {\r\n if (alphabetValues[c] >= absBase) {\r\n if (c === \"1\" && absBase === 1) continue;\r\n throw new Error(c + \" is not a valid digit in base \" + base + \".\");\r\n }\r\n }\r\n }\r\n base = parseValue(base);\r\n var digits = [];\r\n var isNegative = text[0] === \"-\";\r\n for (i = isNegative ? 1 : 0; i < text.length; i++) {\r\n var c = text[i];\r\n if (c in alphabetValues) digits.push(parseValue(alphabetValues[c]));\r\n else if (c === \"<\") {\r\n var start = i;\r\n do { i++; } while (text[i] !== \">\" && i < text.length);\r\n digits.push(parseValue(text.slice(start + 1, i)));\r\n }\r\n else throw new Error(c + \" is not a valid character\");\r\n }\r\n return parseBaseFromArray(digits, base, isNegative);\r\n };\r\n\r\n function parseBaseFromArray(digits, base, isNegative) {\r\n var val = Integer[0], pow = Integer[1], i;\r\n for (i = digits.length - 1; i >= 0; i--) {\r\n val = val.add(digits[i].times(pow));\r\n pow = pow.times(base);\r\n }\r\n return isNegative ? val.negate() : val;\r\n }\r\n\r\n function stringify(digit, alphabet) {\r\n alphabet = alphabet || DEFAULT_ALPHABET;\r\n if (digit < alphabet.length) {\r\n return alphabet[digit];\r\n }\r\n return \"<\" + digit + \">\";\r\n }\r\n\r\n function toBase(n, base) {\r\n base = bigInt(base);\r\n if (base.isZero()) {\r\n if (n.isZero()) return { value: [0], isNegative: false };\r\n throw new Error(\"Cannot convert nonzero numbers to base 0.\");\r\n }\r\n if (base.equals(-1)) {\r\n if (n.isZero()) return { value: [0], isNegative: false };\r\n if (n.isNegative())\r\n return {\r\n value: [].concat.apply([], Array.apply(null, Array(-n.toJSNumber()))\r\n .map(Array.prototype.valueOf, [1, 0])\r\n ),\r\n isNegative: false\r\n };\r\n\r\n var arr = Array.apply(null, Array(n.toJSNumber() - 1))\r\n .map(Array.prototype.valueOf, [0, 1]);\r\n arr.unshift([1]);\r\n return {\r\n value: [].concat.apply([], arr),\r\n isNegative: false\r\n };\r\n }\r\n\r\n var neg = false;\r\n if (n.isNegative() && base.isPositive()) {\r\n neg = true;\r\n n = n.abs();\r\n }\r\n if (base.isUnit()) {\r\n if (n.isZero()) return { value: [0], isNegative: false };\r\n\r\n return {\r\n value: Array.apply(null, Array(n.toJSNumber()))\r\n .map(Number.prototype.valueOf, 1),\r\n isNegative: neg\r\n };\r\n }\r\n var out = [];\r\n var left = n, divmod;\r\n while (left.isNegative() || left.compareAbs(base) >= 0) {\r\n divmod = left.divmod(base);\r\n left = divmod.quotient;\r\n var digit = divmod.remainder;\r\n if (digit.isNegative()) {\r\n digit = base.minus(digit).abs();\r\n left = left.next();\r\n }\r\n out.push(digit.toJSNumber());\r\n }\r\n out.push(left.toJSNumber());\r\n return { value: out.reverse(), isNegative: neg };\r\n }\r\n\r\n function toBaseString(n, base, alphabet) {\r\n var arr = toBase(n, base);\r\n return (arr.isNegative ? \"-\" : \"\") + arr.value.map(function (x) {\r\n return stringify(x, alphabet);\r\n }).join('');\r\n }\r\n\r\n BigInteger.prototype.toArray = function (radix) {\r\n return toBase(this, radix);\r\n };\r\n\r\n SmallInteger.prototype.toArray = function (radix) {\r\n return toBase(this, radix);\r\n };\r\n\r\n NativeBigInt.prototype.toArray = function (radix) {\r\n return toBase(this, radix);\r\n };\r\n\r\n BigInteger.prototype.toString = function (radix, alphabet) {\r\n if (radix === undefined) radix = 10;\r\n if (radix !== 10) return toBaseString(this, radix, alphabet);\r\n var v = this.value, l = v.length, str = String(v[--l]), zeros = \"0000000\", digit;\r\n while (--l >= 0) {\r\n digit = String(v[l]);\r\n str += zeros.slice(digit.length) + digit;\r\n }\r\n var sign = this.sign ? \"-\" : \"\";\r\n return sign + str;\r\n };\r\n\r\n SmallInteger.prototype.toString = function (radix, alphabet) {\r\n if (radix === undefined) radix = 10;\r\n if (radix != 10) return toBaseString(this, radix, alphabet);\r\n return String(this.value);\r\n };\r\n\r\n NativeBigInt.prototype.toString = SmallInteger.prototype.toString;\r\n\r\n NativeBigInt.prototype.toJSON = BigInteger.prototype.toJSON = SmallInteger.prototype.toJSON = function () { return this.toString(); }\r\n\r\n BigInteger.prototype.valueOf = function () {\r\n return parseInt(this.toString(), 10);\r\n };\r\n BigInteger.prototype.toJSNumber = BigInteger.prototype.valueOf;\r\n\r\n SmallInteger.prototype.valueOf = function () {\r\n return this.value;\r\n };\r\n SmallInteger.prototype.toJSNumber = SmallInteger.prototype.valueOf;\r\n NativeBigInt.prototype.valueOf = NativeBigInt.prototype.toJSNumber = function () {\r\n return parseInt(this.toString(), 10);\r\n }\r\n\r\n function parseStringValue(v) {\r\n if (isPrecise(+v)) {\r\n var x = +v;\r\n if (x === truncate(x))\r\n return supportsNativeBigInt ? new NativeBigInt(BigInt(x)) : new SmallInteger(x);\r\n throw new Error(\"Invalid integer: \" + v);\r\n }\r\n var sign = v[0] === \"-\";\r\n if (sign) v = v.slice(1);\r\n var split = v.split(/e/i);\r\n if (split.length > 2) throw new Error(\"Invalid integer: \" + split.join(\"e\"));\r\n if (split.length === 2) {\r\n var exp = split[1];\r\n if (exp[0] === \"+\") exp = exp.slice(1);\r\n exp = +exp;\r\n if (exp !== truncate(exp) || !isPrecise(exp)) throw new Error(\"Invalid integer: \" + exp + \" is not a valid exponent.\");\r\n var text = split[0];\r\n var decimalPlace = text.indexOf(\".\");\r\n if (decimalPlace >= 0) {\r\n exp -= text.length - decimalPlace - 1;\r\n text = text.slice(0, decimalPlace) + text.slice(decimalPlace + 1);\r\n }\r\n if (exp < 0) throw new Error(\"Cannot include negative exponent part for integers\");\r\n text += (new Array(exp + 1)).join(\"0\");\r\n v = text;\r\n }\r\n var isValid = /^([0-9][0-9]*)$/.test(v);\r\n if (!isValid) throw new Error(\"Invalid integer: \" + v);\r\n if (supportsNativeBigInt) {\r\n return new NativeBigInt(BigInt(sign ? \"-\" + v : v));\r\n }\r\n var r = [], max = v.length, l = LOG_BASE, min = max - l;\r\n while (max > 0) {\r\n r.push(+v.slice(min, max));\r\n min -= l;\r\n if (min < 0) min = 0;\r\n max -= l;\r\n }\r\n trim(r);\r\n return new BigInteger(r, sign);\r\n }\r\n\r\n function parseNumberValue(v) {\r\n if (supportsNativeBigInt) {\r\n return new NativeBigInt(BigInt(v));\r\n }\r\n if (isPrecise(v)) {\r\n if (v !== truncate(v)) throw new Error(v + \" is not an integer.\");\r\n return new SmallInteger(v);\r\n }\r\n return parseStringValue(v.toString());\r\n }\r\n\r\n function parseValue(v) {\r\n if (typeof v === \"number\") {\r\n return parseNumberValue(v);\r\n }\r\n if (typeof v === \"string\") {\r\n return parseStringValue(v);\r\n }\r\n if (typeof v === \"bigint\") {\r\n return new NativeBigInt(v);\r\n }\r\n return v;\r\n }\r\n // Pre-define numbers in range [-999,999]\r\n for (var i = 0; i < 1000; i++) {\r\n Integer[i] = parseValue(i);\r\n if (i > 0) Integer[-i] = parseValue(-i);\r\n }\r\n // Backwards compatibility\r\n Integer.one = Integer[1];\r\n Integer.zero = Integer[0];\r\n Integer.minusOne = Integer[-1];\r\n Integer.max = max;\r\n Integer.min = min;\r\n Integer.gcd = gcd;\r\n Integer.lcm = lcm;\r\n Integer.isInstance = function (x) { return x instanceof BigInteger || x instanceof SmallInteger || x instanceof NativeBigInt; };\r\n Integer.randBetween = randBetween;\r\n\r\n Integer.fromArray = function (digits, base, isNegative) {\r\n return parseBaseFromArray(digits.map(parseValue), parseValue(base || 10), isNegative);\r\n };\r\n\r\n return Integer;\r\n})();\r\n\r\n// Node.js check\r\nif (typeof module !== \"undefined\" && module.hasOwnProperty(\"exports\")) {\r\n module.exports = bigInt;\r\n}\r\n\r\n//amd check\r\nif (typeof define === \"function\" && define.amd) {\r\n define( function () {\r\n return bigInt;\r\n });\r\n}\r\n", "'use strict';\n\n// adapted from http://code.google.com/p/plist/source/browse/trunk/src/com/dd/plist/BinaryPropertyListParser.java\n\nconst fs = require('fs');\nconst bigInt = require(\"big-integer\");\nconst debug = false;\n\nexports.maxObjectSize = 100 * 1000 * 1000; // 100Meg\nexports.maxObjectCount = 32768;\n\n// EPOCH = new SimpleDateFormat(\"yyyy MM dd zzz\").parse(\"2001 01 01 GMT\").getTime();\n// ...but that's annoying in a static initializer because it can throw exceptions, ick.\n// So we just hardcode the correct value.\nconst EPOCH = 978307200000;\n\n// UID object definition\nconst UID = exports.UID = function(id) {\n this.UID = id;\n};\n\nconst parseFile = exports.parseFile = function (fileNameOrBuffer, callback) {\n return new Promise(function (resolve, reject) {\n function tryParseBuffer(buffer) {\n let err = null;\n let result;\n try {\n result = parseBuffer(buffer);\n resolve(result);\n } catch (ex) {\n err = ex;\n reject(err);\n } finally {\n if (callback) callback(err, result);\n }\n }\n\n if (Buffer.isBuffer(fileNameOrBuffer)) {\n return tryParseBuffer(fileNameOrBuffer);\n }\n fs.readFile(fileNameOrBuffer, function (err, data) {\n if (err) {\n reject(err);\n return callback(err);\n }\n tryParseBuffer(data);\n });\n });\n};\n\nconst parseBuffer = exports.parseBuffer = function (buffer) {\n // check header\n const header = buffer.slice(0, 'bplist'.length).toString('utf8');\n if (header !== 'bplist') {\n throw new Error(\"Invalid binary plist. Expected 'bplist' at offset 0.\");\n }\n\n // Handle trailer, last 32 bytes of the file\n const trailer = buffer.slice(buffer.length - 32, buffer.length);\n // 6 null bytes (index 0 to 5)\n const offsetSize = trailer.readUInt8(6);\n if (debug) {\n console.log(\"offsetSize: \" + offsetSize);\n }\n const objectRefSize = trailer.readUInt8(7);\n if (debug) {\n console.log(\"objectRefSize: \" + objectRefSize);\n }\n const numObjects = readUInt64BE(trailer, 8);\n if (debug) {\n console.log(\"numObjects: \" + numObjects);\n }\n const topObject = readUInt64BE(trailer, 16);\n if (debug) {\n console.log(\"topObject: \" + topObject);\n }\n const offsetTableOffset = readUInt64BE(trailer, 24);\n if (debug) {\n console.log(\"offsetTableOffset: \" + offsetTableOffset);\n }\n\n if (numObjects > exports.maxObjectCount) {\n throw new Error(\"maxObjectCount exceeded\");\n }\n\n // Handle offset table\n const offsetTable = [];\n\n for (let i = 0; i < numObjects; i++) {\n const offsetBytes = buffer.slice(offsetTableOffset + i * offsetSize, offsetTableOffset + (i + 1) * offsetSize);\n offsetTable[i] = readUInt(offsetBytes, 0);\n if (debug) {\n console.log(\"Offset for Object #\" + i + \" is \" + offsetTable[i] + \" [\" + offsetTable[i].toString(16) + \"]\");\n }\n }\n\n // Parses an object inside the currently parsed binary property list.\n // For the format specification check\n // \n // Apple's binary property list parser implementation.\n function parseObject(tableOffset) {\n const offset = offsetTable[tableOffset];\n const type = buffer[offset];\n const objType = (type & 0xF0) >> 4; //First 4 bits\n const objInfo = (type & 0x0F); //Second 4 bits\n switch (objType) {\n case 0x0:\n return parseSimple();\n case 0x1:\n return parseInteger();\n case 0x8:\n return parseUID();\n case 0x2:\n return parseReal();\n case 0x3:\n return parseDate();\n case 0x4:\n return parseData();\n case 0x5: // ASCII\n return parsePlistString();\n case 0x6: // UTF-16\n return parsePlistString(true);\n case 0xA:\n return parseArray();\n case 0xD:\n return parseDictionary();\n default:\n throw new Error(\"Unhandled type 0x\" + objType.toString(16));\n }\n\n function parseSimple() {\n //Simple\n switch (objInfo) {\n case 0x0: // null\n return null;\n case 0x8: // false\n return false;\n case 0x9: // true\n return true;\n case 0xF: // filler byte\n return null;\n default:\n throw new Error(\"Unhandled simple type 0x\" + objType.toString(16));\n }\n }\n\n function bufferToHexString(buffer) {\n let str = '';\n let i;\n for (i = 0; i < buffer.length; i++) {\n if (buffer[i] != 0x00) {\n break;\n }\n }\n for (; i < buffer.length; i++) {\n const part = '00' + buffer[i].toString(16);\n str += part.substr(part.length - 2);\n }\n return str;\n }\n\n function parseInteger() {\n const length = Math.pow(2, objInfo);\n\n if (objInfo == 0x4) {\n const data = buffer.slice(offset + 1, offset + 1 + length);\n const str = bufferToHexString(data);\n return bigInt(str, 16);\n }\n if (objInfo == 0x3) {\n return buffer.readInt32BE(offset + 1);\n }\n if (length < exports.maxObjectSize) {\n return readUInt(buffer.slice(offset + 1, offset + 1 + length));\n }\n throw new Error(\"To little heap space available! Wanted to read \" + length + \" bytes, but only \" + exports.maxObjectSize + \" are available.\");\n }\n\n function parseUID() {\n const length = objInfo + 1;\n if (length < exports.maxObjectSize) {\n return new UID(readUInt(buffer.slice(offset + 1, offset + 1 + length)));\n }\n throw new Error(\"To little heap space available! Wanted to read \" + length + \" bytes, but only \" + exports.maxObjectSize + \" are available.\");\n }\n\n function parseReal() {\n const length = Math.pow(2, objInfo);\n if (length < exports.maxObjectSize) {\n const realBuffer = buffer.slice(offset + 1, offset + 1 + length);\n if (length === 4) {\n return realBuffer.readFloatBE(0);\n }\n if (length === 8) {\n return realBuffer.readDoubleBE(0);\n }\n } else {\n throw new Error(\"To little heap space available! Wanted to read \" + length + \" bytes, but only \" + exports.maxObjectSize + \" are available.\");\n }\n }\n\n function parseDate() {\n if (objInfo != 0x3) {\n console.error(\"Unknown date type :\" + objInfo + \". Parsing anyway...\");\n }\n const dateBuffer = buffer.slice(offset + 1, offset + 9);\n return new Date(EPOCH + (1000 * dateBuffer.readDoubleBE(0)));\n }\n\n function parseData() {\n let dataoffset = 1;\n let length = objInfo;\n if (objInfo == 0xF) {\n const int_type = buffer[offset + 1];\n const intType = (int_type & 0xF0) / 0x10;\n if (intType != 0x1) {\n console.error(\"0x4: UNEXPECTED LENGTH-INT TYPE! \" + intType);\n }\n const intInfo = int_type & 0x0F;\n const intLength = Math.pow(2, intInfo);\n dataoffset = 2 + intLength;\n if (intLength < 3) {\n length = readUInt(buffer.slice(offset + 2, offset + 2 + intLength));\n } else {\n length = readUInt(buffer.slice(offset + 2, offset + 2 + intLength));\n }\n }\n if (length < exports.maxObjectSize) {\n return buffer.slice(offset + dataoffset, offset + dataoffset + length);\n }\n throw new Error(\"To little heap space available! Wanted to read \" + length + \" bytes, but only \" + exports.maxObjectSize + \" are available.\");\n }\n\n function parsePlistString (isUtf16) {\n isUtf16 = isUtf16 || 0;\n let enc = \"utf8\";\n let length = objInfo;\n let stroffset = 1;\n if (objInfo == 0xF) {\n const int_type = buffer[offset + 1];\n const intType = (int_type & 0xF0) / 0x10;\n if (intType != 0x1) {\n console.err(\"UNEXPECTED LENGTH-INT TYPE! \" + intType);\n }\n const intInfo = int_type & 0x0F;\n const intLength = Math.pow(2, intInfo);\n stroffset = 2 + intLength;\n if (intLength < 3) {\n length = readUInt(buffer.slice(offset + 2, offset + 2 + intLength));\n } else {\n length = readUInt(buffer.slice(offset + 2, offset + 2 + intLength));\n }\n }\n // length is String length -> to get byte length multiply by 2, as 1 character takes 2 bytes in UTF-16\n length *= (isUtf16 + 1);\n if (length < exports.maxObjectSize) {\n let plistString = Buffer.from(buffer.slice(offset + stroffset, offset + stroffset + length));\n if (isUtf16) {\n plistString = swapBytes(plistString);\n enc = \"ucs2\";\n }\n return plistString.toString(enc);\n }\n throw new Error(\"To little heap space available! Wanted to read \" + length + \" bytes, but only \" + exports.maxObjectSize + \" are available.\");\n }\n\n function parseArray() {\n let length = objInfo;\n let arrayoffset = 1;\n if (objInfo == 0xF) {\n const int_type = buffer[offset + 1];\n const intType = (int_type & 0xF0) / 0x10;\n if (intType != 0x1) {\n console.error(\"0xa: UNEXPECTED LENGTH-INT TYPE! \" + intType);\n }\n const intInfo = int_type & 0x0F;\n const intLength = Math.pow(2, intInfo);\n arrayoffset = 2 + intLength;\n if (intLength < 3) {\n length = readUInt(buffer.slice(offset + 2, offset + 2 + intLength));\n } else {\n length = readUInt(buffer.slice(offset + 2, offset + 2 + intLength));\n }\n }\n if (length * objectRefSize > exports.maxObjectSize) {\n throw new Error(\"To little heap space available!\");\n }\n const array = [];\n for (let i = 0; i < length; i++) {\n const objRef = readUInt(buffer.slice(offset + arrayoffset + i * objectRefSize, offset + arrayoffset + (i + 1) * objectRefSize));\n array[i] = parseObject(objRef);\n }\n return array;\n }\n\n function parseDictionary() {\n let length = objInfo;\n let dictoffset = 1;\n if (objInfo == 0xF) {\n const int_type = buffer[offset + 1];\n const intType = (int_type & 0xF0) / 0x10;\n if (intType != 0x1) {\n console.error(\"0xD: UNEXPECTED LENGTH-INT TYPE! \" + intType);\n }\n const intInfo = int_type & 0x0F;\n const intLength = Math.pow(2, intInfo);\n dictoffset = 2 + intLength;\n if (intLength < 3) {\n length = readUInt(buffer.slice(offset + 2, offset + 2 + intLength));\n } else {\n length = readUInt(buffer.slice(offset + 2, offset + 2 + intLength));\n }\n }\n if (length * 2 * objectRefSize > exports.maxObjectSize) {\n throw new Error(\"To little heap space available!\");\n }\n if (debug) {\n console.log(\"Parsing dictionary #\" + tableOffset);\n }\n const dict = {};\n for (let i = 0; i < length; i++) {\n const keyRef = readUInt(buffer.slice(offset + dictoffset + i * objectRefSize, offset + dictoffset + (i + 1) * objectRefSize));\n const valRef = readUInt(buffer.slice(offset + dictoffset + (length * objectRefSize) + i * objectRefSize, offset + dictoffset + (length * objectRefSize) + (i + 1) * objectRefSize));\n const key = parseObject(keyRef);\n const val = parseObject(valRef);\n if (debug) {\n console.log(\" DICT #\" + tableOffset + \": Mapped \" + key + \" to \" + val);\n }\n dict[key] = val;\n }\n return dict;\n }\n }\n\n return [ parseObject(topObject) ];\n};\n\nfunction readUInt(buffer, start) {\n start = start || 0;\n\n let l = 0;\n for (let i = start; i < buffer.length; i++) {\n l <<= 8;\n l |= buffer[i] & 0xFF;\n }\n return l;\n}\n\n// we're just going to toss the high order bits because javascript doesn't have 64-bit ints\nfunction readUInt64BE(buffer, start) {\n const data = buffer.slice(start, start + 8);\n return data.readUInt32BE(4, 8);\n}\n\nfunction swapBytes(buffer) {\n const len = buffer.length;\n for (let i = 0; i < len; i += 2) {\n const a = buffer[i];\n buffer[i] = buffer[i+1];\n buffer[i+1] = a;\n }\n return buffer;\n}\n", "module.exports = {\r\n\tDEFAULT_INITIAL_SIZE: (8 * 1024),\r\n\tDEFAULT_INCREMENT_AMOUNT: (8 * 1024),\r\n\tDEFAULT_FREQUENCY: 1,\r\n\tDEFAULT_CHUNK_SIZE: 1024\r\n};\r\n", "var stream = require(\"stream\"),\r\n\tconstants = require(\"./constants\"),\r\n\tutil = require(\"util\");\r\n\r\nvar ReadableStreamBuffer = module.exports = function(opts) {\r\n\tvar that = this;\r\n\r\n\tstream.Stream.call(this);\r\n\r\n\topts = opts || {};\r\n\tvar frequency = opts.hasOwnProperty(\"frequency\") ? opts.frequency : constants.DEFAULT_FREQUENCY;\r\n\tvar chunkSize = opts.chunkSize || constants.DEFAULT_CHUNK_SIZE;\r\n\tvar initialSize = opts.initialSize || constants.DEFAULT_INITIAL_SIZE;\r\n\tvar incrementAmount = opts.incrementAmount || constants.DEFAULT_INCREMENT_AMOUNT;\r\n\r\n\tvar size = 0;\r\n\tvar buffer = new Buffer(initialSize);\r\n\tvar encoding = null;\r\n\r\n\tthis.readable = true;\r\n\tthis.writable = false;\r\n\r\n\tvar sendData = function() {\r\n\t\tvar amount = Math.min(chunkSize, size);\r\n\r\n\t\tif (amount > 0) {\r\n\t\t\tvar chunk = null;\r\n\t\t\tif(encoding) {\r\n\t\t\t\tchunk = buffer.toString(encoding, 0, amount);\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tchunk = new Buffer(amount);\r\n\t\t\t\tbuffer.copy(chunk, 0, 0, amount);\r\n\t\t\t}\r\n\r\n\t\t\tthat.emit(\"data\", chunk);\r\n\r\n\t\t\tif(amount < buffer.length)\r\n\t\t\t\tbuffer.copy(buffer, 0, amount, size);\r\n\t\t\tsize -= amount;\r\n\t\t}\r\n\r\n\t\tif(size === 0 && !that.readable) {\r\n\t\t\tthat.emit(\"end\");\r\n\t\t\tthat.emit(\"close\");\r\n\t\t\tif (sendData && sendData.interval) {\r\n\t\t\t\tclearInterval(sendData.interval);\r\n\t\t\t\tsendData.interval = null;\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\tthis.size = function() {\r\n\t\treturn size;\r\n\t};\r\n\r\n\tthis.maxSize = function() {\r\n\t\treturn buffer.length;\r\n\t};\r\n\r\n\tvar increaseBufferIfNecessary = function(incomingDataSize) {\r\n\t\tif((buffer.length - size) < incomingDataSize) {\r\n\t\t\tvar factor = Math.ceil((incomingDataSize - (buffer.length - size)) / incrementAmount);\r\n\r\n\t\t\tvar newBuffer = new Buffer(buffer.length + (incrementAmount * factor));\r\n\t\t\tbuffer.copy(newBuffer, 0, 0, size);\r\n\t\t\tbuffer = newBuffer;\r\n\t\t}\r\n\t};\r\n\r\n\tthis.put = function(data, encoding) {\r\n\t\tif(!that.readable) return;\r\n\r\n\t\tvar wasEmpty = size === 0;\r\n\t\tif(Buffer.isBuffer(data)) {\r\n\t\t\tincreaseBufferIfNecessary(data.length);\r\n\t\t\tdata.copy(buffer, size, 0);\r\n\t\t\tsize += data.length;\r\n\t\t}\r\n\t\telse {\r\n\t\t\tdata = data + \"\";\r\n\t\t\tvar dataSizeInBytes = Buffer.byteLength(data);\r\n\t\t\tincreaseBufferIfNecessary(dataSizeInBytes);\r\n\t\t\tbuffer.write(data, size, encoding || \"utf8\");\r\n\t\t\tsize += dataSizeInBytes;\r\n\t\t}\r\n\r\n\t\tif (wasEmpty && size > 0) {\r\n\t\t\tthis.emit('readable')\r\n\t\t}\r\n\r\n\t\tif (!this.isPaused && !frequency) {\r\n\t\t\twhile (size > 0) {\r\n\t\t\t\tsendData();\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\tthis.pause = function() {\r\n\t\tthis.isPaused = true;\r\n\t\tif(sendData && sendData.interval) {\r\n\t\t\tclearInterval(sendData.interval);\r\n\t\t\tdelete sendData.interval;\r\n\t\t}\r\n\t};\r\n\r\n\tthis.resume = function() {\r\n\t\tthis.isPaused = false;\r\n\t\tif(sendData && !sendData.interval && frequency > 0) {\r\n\t\t\tsendData.interval = setInterval(sendData, frequency);\r\n\t\t}\r\n\t};\r\n\r\n\tthis.destroy = function() {\r\n\t\tthat.emit(\"end\");\r\n\t\tif(sendData.interval) clearInterval(sendData.interval);\r\n\t\tsendData = null;\r\n\t\tthat.readable = false;\r\n\t\tthat.emit(\"close\");\r\n\t};\r\n\r\n\tthis.destroySoon = function() {\r\n\t\tthat.readable = false;\r\n\t\tif (!sendData.interval) {\r\n\t\t\tthat.emit(\"end\");\r\n\t\t\tthat.emit(\"close\");\r\n\t\t}\r\n\t};\r\n\r\n\tthis.setEncoding = function(_encoding) {\r\n\t\tencoding = _encoding;\r\n\t};\r\n\r\n\tthis.resume();\r\n};\r\nutil.inherits(ReadableStreamBuffer, stream.Stream);\r\n", "var util = require(\"util\"),\r\n\tstream = require(\"stream\"),\r\n\tconstants = require(\"./constants\");\r\n\r\n// TODO: clear up specs on returning false from a write and emitting a drain event.\r\n// Does this mean if I return false from a write, I should ignore any write requests between that false return and the drain event?\r\nvar WritableStreamBuffer = module.exports = function(opts) {\r\n\tvar that = this;\r\n\r\n\tstream.Stream.call(this);\r\n\r\n\topts = opts || {};\r\n\tvar initialSize = opts.initialSize || constants.DEFAULT_INITIAL_SIZE;\r\n\tvar incrementAmount = opts.incrementAmount || constants.DEFAULT_INCREMENT_AMOUNT;\r\n\r\n\tvar buffer = new Buffer(initialSize);\r\n\tvar size = 0;\r\n\r\n\tthis.writable = true;\r\n\tthis.readable = false;\r\n\r\n\tthis.size = function() {\r\n\t\treturn size;\r\n\t};\r\n\r\n\tthis.maxSize = function() {\r\n\t\treturn buffer.length;\r\n\t};\r\n\r\n\tthis.getContents = function(length) {\r\n\t\tif(!size) return false;\r\n\r\n\t\tvar data = new Buffer(Math.min(length || size, size));\r\n\t\tbuffer.copy(data, 0, 0, data.length);\r\n\r\n\t\tif(data.length < size)\r\n\t\t\tbuffer.copy(buffer, 0, data.length);\r\n\r\n\t\tsize -= data.length;\r\n\r\n\t\treturn data;\r\n\t};\r\n\r\n\tthis.getContentsAsString = function(encoding, length) {\r\n\t\tif(!size) return false;\r\n\r\n\t\tvar data = buffer.toString(encoding || \"utf8\", 0, Math.min(length || size, size));\r\n\t\tvar dataLength = Buffer.byteLength(data);\r\n\r\n\t\tif(dataLength < size)\r\n\t\t\tbuffer.copy(buffer, 0, dataLength);\r\n\r\n\t\tsize -= dataLength;\r\n\t\treturn data;\r\n\t};\r\n\r\n\tvar increaseBufferIfNecessary = function(incomingDataSize) {\r\n\t\tif((buffer.length - size) < incomingDataSize) {\r\n\t\t\tvar factor = Math.ceil((incomingDataSize - (buffer.length - size)) / incrementAmount);\r\n\r\n\t\t\tvar newBuffer = new Buffer(buffer.length + (incrementAmount * factor));\r\n\t\t\tbuffer.copy(newBuffer, 0, 0, size);\r\n\t\t\tbuffer = newBuffer;\r\n\t\t}\r\n\t};\r\n\r\n\tthis.write = function(data, encoding, callback) {\r\n\t\tif(!that.writable) return;\r\n\r\n\t\tif(Buffer.isBuffer(data)) {\r\n\t\t\tincreaseBufferIfNecessary(data.length);\r\n\t\t\tdata.copy(buffer, size, 0);\r\n\t\t\tsize += data.length;\r\n\t\t}\r\n\t\telse {\r\n\t\t\tdata = data + \"\";\r\n\t\t\tincreaseBufferIfNecessary(Buffer.byteLength(data));\r\n\t\t\tbuffer.write(data, size, encoding || \"utf8\");\r\n\t\t\tsize += Buffer.byteLength(data);\r\n\t\t}\r\n\t\t\r\n\t\tif(typeof callback === \"function\") { callback() ;}\r\n\t};\r\n\r\n\tthis.end = function() {\r\n\t\tvar args = Array.prototype.slice.apply(arguments);\r\n\t\tif(args.length) that.write.apply(that, args);\r\n\t\tthat.emit('finish');\r\n\t\tthat.destroy();\r\n\t};\r\n\r\n\tthis.destroySoon = this.destroy = function() {\r\n\t\tthat.writable = false;\r\n\t\tthat.emit(\"close\");\r\n\t};\r\n};\r\nutil.inherits(WritableStreamBuffer, stream.Stream);\r\n", "module.exports = require(\"./constants\");\r\nmodule.exports.ReadableStreamBuffer = require(\"./readable_streambuffer\");\r\nmodule.exports.WritableStreamBuffer = require(\"./writable_streambuffer\");\r\n", "'use strict';\n\n// adapted from http://code.google.com/p/plist/source/browse/trunk/src/main/java/com/dd/plist/BinaryPropertyListWriter.java\n\nvar streamBuffers = require(\"stream-buffers\");\n\nvar debug = false;\n\nfunction Real(value) {\n this.value = value;\n}\n\nmodule.exports = function(dicts) {\n var buffer = new streamBuffers.WritableStreamBuffer();\n buffer.write(new Buffer(\"bplist00\"));\n\n if (debug) {\n console.log('create', require('util').inspect(dicts, false, 10));\n }\n\n if (dicts instanceof Array && dicts.length === 1) {\n dicts = dicts[0];\n }\n\n var entries = toEntries(dicts);\n if (debug) {\n console.log('entries', entries);\n }\n var idSizeInBytes = computeIdSizeInBytes(entries.length);\n var offsets = [];\n var offsetSizeInBytes;\n var offsetTableOffset;\n\n updateEntryIds();\n\n entries.forEach(function(entry, entryIdx) {\n offsets[entryIdx] = buffer.size();\n if (!entry) {\n buffer.write(0x00);\n } else {\n write(entry);\n }\n });\n\n writeOffsetTable();\n writeTrailer();\n return buffer.getContents();\n\n function updateEntryIds() {\n var strings = {};\n var entryId = 0;\n entries.forEach(function(entry) {\n if (entry.id) {\n return;\n }\n if (entry.type === 'string') {\n if (!entry.bplistOverride && strings.hasOwnProperty(entry.value)) {\n entry.type = 'stringref';\n entry.id = strings[entry.value];\n } else {\n strings[entry.value] = entry.id = entryId++;\n }\n } else {\n entry.id = entryId++;\n }\n });\n\n entries = entries.filter(function(entry) {\n return (entry.type !== 'stringref');\n });\n }\n\n function writeTrailer() {\n if (debug) {\n console.log('0x' + buffer.size().toString(16), 'writeTrailer');\n }\n // 6 null bytes\n buffer.write(new Buffer([0, 0, 0, 0, 0, 0]));\n\n // size of an offset\n if (debug) {\n console.log('0x' + buffer.size().toString(16), 'writeTrailer(offsetSizeInBytes):', offsetSizeInBytes);\n }\n writeByte(offsetSizeInBytes);\n\n // size of a ref\n if (debug) {\n console.log('0x' + buffer.size().toString(16), 'writeTrailer(offsetSizeInBytes):', idSizeInBytes);\n }\n writeByte(idSizeInBytes);\n\n // number of objects\n if (debug) {\n console.log('0x' + buffer.size().toString(16), 'writeTrailer(number of objects):', entries.length);\n }\n writeLong(entries.length);\n\n // top object\n if (debug) {\n console.log('0x' + buffer.size().toString(16), 'writeTrailer(top object)');\n }\n writeLong(0);\n\n // offset table offset\n if (debug) {\n console.log('0x' + buffer.size().toString(16), 'writeTrailer(offset table offset):', offsetTableOffset);\n }\n writeLong(offsetTableOffset);\n }\n\n function writeOffsetTable() {\n if (debug) {\n console.log('0x' + buffer.size().toString(16), 'writeOffsetTable');\n }\n offsetTableOffset = buffer.size();\n offsetSizeInBytes = computeOffsetSizeInBytes(offsetTableOffset);\n offsets.forEach(function(offset) {\n writeBytes(offset, offsetSizeInBytes);\n });\n }\n\n function write(entry) {\n switch (entry.type) {\n case 'dict':\n writeDict(entry);\n break;\n case 'number':\n case 'double':\n writeNumber(entry);\n break;\n case 'UID':\n writeUID(entry);\n break;\n case 'array':\n writeArray(entry);\n break;\n case 'boolean':\n writeBoolean(entry);\n break;\n case 'string':\n case 'string-utf16':\n writeString(entry);\n break;\n case 'date':\n writeDate(entry);\n break;\n case 'data':\n writeData(entry);\n break;\n default:\n throw new Error(\"unhandled entry type: \" + entry.type);\n }\n }\n\n function writeDate(entry) {\n writeByte(0x33);\n var date = (Date.parse(entry.value)/1000) - 978307200\n writeDouble(date)\n }\n\n function writeDict(entry) {\n if (debug) {\n var keysStr = entry.entryKeys.map(function(k) {return k.id;});\n var valsStr = entry.entryValues.map(function(k) {return k.id;});\n console.log('0x' + buffer.size().toString(16), 'writeDict', '(id: ' + entry.id + ')', '(keys: ' + keysStr + ')', '(values: ' + valsStr + ')');\n }\n writeIntHeader(0xD, entry.entryKeys.length);\n entry.entryKeys.forEach(function(entry) {\n writeID(entry.id);\n });\n entry.entryValues.forEach(function(entry) {\n writeID(entry.id);\n });\n }\n\n function writeNumber(entry) {\n if (debug) {\n console.log('0x' + buffer.size().toString(16), 'writeNumber', entry.value, ' (type: ' + entry.type + ')', '(id: ' + entry.id + ')');\n }\n\n if (entry.type !== 'double' && parseFloat(entry.value.toFixed()) == entry.value) {\n if (entry.value < 0) {\n writeByte(0x13);\n writeBytes(entry.value, 8, true);\n } else if (entry.value <= 0xff) {\n writeByte(0x10);\n writeBytes(entry.value, 1);\n } else if (entry.value <= 0xffff) {\n writeByte(0x11);\n writeBytes(entry.value, 2);\n } else if (entry.value <= 0xffffffff) {\n writeByte(0x12);\n writeBytes(entry.value, 4);\n } else {\n writeByte(0x14);\n writeBytes(entry.value, 8);\n }\n } else {\n writeByte(0x23);\n writeDouble(entry.value);\n }\n }\n\n function writeUID(entry) {\n if (debug) {\n console.log('0x' + buffer.size().toString(16), 'writeUID', entry.value, ' (type: ' + entry.type + ')', '(id: ' + entry.id + ')');\n }\n\n writeIntHeader(0x8, 0x0);\n writeID(entry.value);\n }\n\n function writeArray(entry) {\n if (debug) {\n console.log('0x' + buffer.size().toString(16), 'writeArray (length: ' + entry.entries.length + ')', '(id: ' + entry.id + ')');\n }\n writeIntHeader(0xA, entry.entries.length);\n entry.entries.forEach(function(e) {\n writeID(e.id);\n });\n }\n\n function writeBoolean(entry) {\n if (debug) {\n console.log('0x' + buffer.size().toString(16), 'writeBoolean', entry.value, '(id: ' + entry.id + ')');\n }\n writeByte(entry.value ? 0x09 : 0x08);\n }\n\n function writeString(entry) {\n if (debug) {\n console.log('0x' + buffer.size().toString(16), 'writeString', entry.value, '(id: ' + entry.id + ')');\n }\n if (entry.type === 'string-utf16' || mustBeUtf16(entry.value)) {\n var utf16 = new Buffer(entry.value, 'ucs2');\n writeIntHeader(0x6, utf16.length / 2);\n // needs to be big endian so swap the bytes\n for (var i = 0; i < utf16.length; i += 2) {\n var t = utf16[i + 0];\n utf16[i + 0] = utf16[i + 1];\n utf16[i + 1] = t;\n }\n buffer.write(utf16);\n } else {\n var utf8 = new Buffer(entry.value, 'ascii');\n writeIntHeader(0x5, utf8.length);\n buffer.write(utf8);\n }\n }\n\n function writeData(entry) {\n if (debug) {\n console.log('0x' + buffer.size().toString(16), 'writeData', entry.value, '(id: ' + entry.id + ')');\n }\n writeIntHeader(0x4, entry.value.length);\n buffer.write(entry.value);\n }\n\n function writeLong(l) {\n writeBytes(l, 8);\n }\n\n function writeByte(b) {\n buffer.write(new Buffer([b]));\n }\n\n function writeDouble(v) {\n var buf = new Buffer(8);\n buf.writeDoubleBE(v, 0);\n buffer.write(buf);\n }\n\n function writeIntHeader(kind, value) {\n if (value < 15) {\n writeByte((kind << 4) + value);\n } else if (value < 256) {\n writeByte((kind << 4) + 15);\n writeByte(0x10);\n writeBytes(value, 1);\n } else if (value < 65536) {\n writeByte((kind << 4) + 15);\n writeByte(0x11);\n writeBytes(value, 2);\n } else {\n writeByte((kind << 4) + 15);\n writeByte(0x12);\n writeBytes(value, 4);\n }\n }\n\n function writeID(id) {\n writeBytes(id, idSizeInBytes);\n }\n\n function writeBytes(value, bytes, is_signedint) {\n // write low-order bytes big-endian style\n var buf = new Buffer(bytes);\n var z = 0;\n\n // javascript doesn't handle large numbers\n if(!is_signedint) {\n while (bytes > 4) {\n buf[z++] = 0;\n bytes--;\n }\n }\n\n for (var i = bytes - 1; i >= 0; i--) {\n buf[z++] = value >> (8 * i);\n }\n buffer.write(buf);\n }\n\n function mustBeUtf16(string) {\n return Buffer.byteLength(string, 'utf8') != string.length;\n }\n};\n\nfunction toEntries(dicts) {\n if (dicts.bplistOverride) {\n return [dicts];\n }\n\n if (dicts instanceof Array) {\n return toEntriesArray(dicts);\n } else if (dicts instanceof Buffer) {\n return [\n {\n type: 'data',\n value: dicts\n }\n ];\n } else if (dicts instanceof Real) {\n return [\n {\n type: 'double',\n value: dicts.value\n }\n ];\n } else if (typeof(dicts) === 'object') {\n if (dicts instanceof Date) {\n return [\n {\n type: 'date',\n value: dicts\n }\n ]\n } else if (Object.keys(dicts).length == 1 && typeof(dicts.UID) === 'number') {\n return [\n {\n type: 'UID',\n value: dicts.UID\n }\n ]\n } else {\n return toEntriesObject(dicts);\n }\n } else if (typeof(dicts) === 'string') {\n return [\n {\n type: 'string',\n value: dicts\n }\n ];\n } else if (typeof(dicts) === 'number') {\n return [\n {\n type: 'number',\n value: dicts\n }\n ];\n } else if (typeof(dicts) === 'boolean') {\n return [\n {\n type: 'boolean',\n value: dicts\n }\n ];\n } else if (typeof(dicts) === 'bigint') {\n return [\n {\n type: 'number',\n value: Number(BigInt.asIntN(32, dicts))\n }\n ];\n } else {\n throw new Error('unhandled entry: ' + dicts);\n }\n}\n\nfunction toEntriesArray(arr) {\n if (debug) {\n console.log('toEntriesArray');\n }\n var results = [\n {\n type: 'array',\n entries: []\n }\n ];\n arr.forEach(function(v) {\n var entry = toEntries(v);\n results[0].entries.push(entry[0]);\n results = results.concat(entry);\n });\n return results;\n}\n\nfunction toEntriesObject(dict) {\n if (debug) {\n console.log('toEntriesObject');\n }\n var results = [\n {\n type: 'dict',\n entryKeys: [],\n entryValues: []\n }\n ];\n Object.keys(dict).forEach(function(key) {\n var entryKey = toEntries(key);\n results[0].entryKeys.push(entryKey[0]);\n results = results.concat(entryKey[0]);\n });\n Object.keys(dict).forEach(function(key) {\n var entryValue = toEntries(dict[key]);\n results[0].entryValues.push(entryValue[0]);\n results = results.concat(entryValue);\n });\n return results;\n}\n\nfunction computeOffsetSizeInBytes(maxOffset) {\n if (maxOffset < 256) {\n return 1;\n }\n if (maxOffset < 65536) {\n return 2;\n }\n if (maxOffset < 4294967296) {\n return 4;\n }\n return 8;\n}\n\nfunction computeIdSizeInBytes(numberOfIds) {\n if (numberOfIds < 256) {\n return 1;\n }\n if (numberOfIds < 65536) {\n return 2;\n }\n return 4;\n}\n\nmodule.exports.Real = Real;\n", "//[4] \tNameStartChar\t ::= \t\":\" | [A-Z] | \"_\" | [a-z] | [#xC0-#xD6] | [#xD8-#xF6] | [#xF8-#x2FF] | [#x370-#x37D] | [#x37F-#x1FFF] | [#x200C-#x200D] | [#x2070-#x218F] | [#x2C00-#x2FEF] | [#x3001-#xD7FF] | [#xF900-#xFDCF] | [#xFDF0-#xFFFD] | [#x10000-#xEFFFF]\r\n//[4a] \tNameChar\t ::= \tNameStartChar | \"-\" | \".\" | [0-9] | #xB7 | [#x0300-#x036F] | [#x203F-#x2040]\r\n//[5] \tName\t ::= \tNameStartChar (NameChar)*\r\nvar nameStartChar = /[A-Z_a-z\\xC0-\\xD6\\xD8-\\xF6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]///\\u10000-\\uEFFFF\r\nvar nameChar = new RegExp(\"[\\\\-\\\\.0-9\"+nameStartChar.source.slice(1,-1)+\"\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040]\");\r\nvar tagNamePattern = new RegExp('^'+nameStartChar.source+nameChar.source+'*(?:\\:'+nameStartChar.source+nameChar.source+'*)?$');\r\n//var tagNamePattern = /^[a-zA-Z_][\\w\\-\\.]*(?:\\:[a-zA-Z_][\\w\\-\\.]*)?$/\r\n//var handlers = 'resolveEntity,getExternalSubset,characters,endDocument,endElement,endPrefixMapping,ignorableWhitespace,processingInstruction,setDocumentLocator,skippedEntity,startDocument,startElement,startPrefixMapping,notationDecl,unparsedEntityDecl,error,fatalError,warning,attributeDecl,elementDecl,externalEntityDecl,internalEntityDecl,comment,endCDATA,endDTD,endEntity,startCDATA,startDTD,startEntity'.split(',')\r\n\r\n//S_TAG,\tS_ATTR,\tS_EQ,\tS_ATTR_NOQUOT_VALUE\r\n//S_ATTR_SPACE,\tS_ATTR_END,\tS_TAG_SPACE, S_TAG_CLOSE\r\nvar S_TAG = 0;//tag name offerring\r\nvar S_ATTR = 1;//attr name offerring \r\nvar S_ATTR_SPACE=2;//attr name end and space offer\r\nvar S_EQ = 3;//=space?\r\nvar S_ATTR_NOQUOT_VALUE = 4;//attr value(no quot value only)\r\nvar S_ATTR_END = 5;//attr value end and no space(quot end)\r\nvar S_TAG_SPACE = 6;//(attr value end || tag end ) && (space offer)\r\nvar S_TAG_CLOSE = 7;//closed el\r\n\r\nfunction XMLReader(){\r\n\t\r\n}\r\n\r\nXMLReader.prototype = {\r\n\tparse:function(source,defaultNSMap,entityMap){\r\n\t\tvar domBuilder = this.domBuilder;\r\n\t\tdomBuilder.startDocument();\r\n\t\t_copy(defaultNSMap ,defaultNSMap = {})\r\n\t\tparse(source,defaultNSMap,entityMap,\r\n\t\t\t\tdomBuilder,this.errorHandler);\r\n\t\tdomBuilder.endDocument();\r\n\t}\r\n}\r\nfunction parse(source,defaultNSMapCopy,entityMap,domBuilder,errorHandler){\r\n\tfunction fixedFromCharCode(code) {\r\n\t\t// String.prototype.fromCharCode does not supports\r\n\t\t// > 2 bytes unicode chars directly\r\n\t\tif (code > 0xffff) {\r\n\t\t\tcode -= 0x10000;\r\n\t\t\tvar surrogate1 = 0xd800 + (code >> 10)\r\n\t\t\t\t, surrogate2 = 0xdc00 + (code & 0x3ff);\r\n\r\n\t\t\treturn String.fromCharCode(surrogate1, surrogate2);\r\n\t\t} else {\r\n\t\t\treturn String.fromCharCode(code);\r\n\t\t}\r\n\t}\r\n\tfunction entityReplacer(a){\r\n\t\tvar k = a.slice(1,-1);\r\n\t\tif(k in entityMap){\r\n\t\t\treturn entityMap[k]; \r\n\t\t}else if(k.charAt(0) === '#'){\r\n\t\t\treturn fixedFromCharCode(parseInt(k.substr(1).replace('x','0x')))\r\n\t\t}else{\r\n\t\t\terrorHandler.error('entity not found:'+a);\r\n\t\t\treturn a;\r\n\t\t}\r\n\t}\r\n\tfunction appendText(end){//has some bugs\r\n\t\tif(end>start){\r\n\t\t\tvar xt = source.substring(start,end).replace(/&#?\\w+;/g,entityReplacer);\r\n\t\t\tlocator&&position(start);\r\n\t\t\tdomBuilder.characters(xt,0,end-start);\r\n\t\t\tstart = end\r\n\t\t}\r\n\t}\r\n\tfunction position(p,m){\r\n\t\twhile(p>=lineEnd && (m = linePattern.exec(source))){\r\n\t\t\tlineStart = m.index;\r\n\t\t\tlineEnd = lineStart + m[0].length;\r\n\t\t\tlocator.lineNumber++;\r\n\t\t\t//console.log('line++:',locator,startPos,endPos)\r\n\t\t}\r\n\t\tlocator.columnNumber = p-lineStart+1;\r\n\t}\r\n\tvar lineStart = 0;\r\n\tvar lineEnd = 0;\r\n\tvar linePattern = /.*(?:\\r\\n?|\\n)|.*$/g\r\n\tvar locator = domBuilder.locator;\r\n\t\r\n\tvar parseStack = [{currentNSMap:defaultNSMapCopy}]\r\n\tvar closeMap = {};\r\n\tvar start = 0;\r\n\twhile(true){\r\n\t\ttry{\r\n\t\t\tvar tagStart = source.indexOf('<',start);\r\n\t\t\tif(tagStart<0){\r\n\t\t\t\tif(!source.substr(start).match(/^\\s*$/)){\r\n\t\t\t\t\tvar doc = domBuilder.doc;\r\n\t \t\t\tvar text = doc.createTextNode(source.substr(start));\r\n\t \t\t\tdoc.appendChild(text);\r\n\t \t\t\tdomBuilder.currentElement = text;\r\n\t\t\t\t}\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tif(tagStart>start){\r\n\t\t\t\tappendText(tagStart);\r\n\t\t\t}\r\n\t\t\tswitch(source.charAt(tagStart+1)){\r\n\t\t\tcase '/':\r\n\t\t\t\tvar end = source.indexOf('>',tagStart+3);\r\n\t\t\t\tvar tagName = source.substring(tagStart+2,end);\r\n\t\t\t\tvar config = parseStack.pop();\r\n\t\t\t\tif(end<0){\r\n\t\t\t\t\t\r\n\t \t\ttagName = source.substring(tagStart+2).replace(/[\\s<].*/,'');\r\n\t \t\t//console.error('#@@@@@@'+tagName)\r\n\t \t\terrorHandler.error(\"end tag name: \"+tagName+' is not complete:'+config.tagName);\r\n\t \t\tend = tagStart+1+tagName.length;\r\n\t \t}else if(tagName.match(/\\s\r\n\t\t\t\tlocator&&position(tagStart);\r\n\t\t\t\tend = parseInstruction(source,tagStart,domBuilder);\r\n\t\t\t\tbreak;\r\n\t\t\tcase '!':// start){\r\n\t\t\tstart = end;\r\n\t\t}else{\r\n\t\t\t//TODO: \u8FD9\u91CC\u6709\u53EF\u80FDsax\u56DE\u9000\uFF0C\u6709\u4F4D\u7F6E\u9519\u8BEF\u98CE\u9669\r\n\t\t\tappendText(Math.max(tagStart,start)+1);\r\n\t\t}\r\n\t}\r\n}\r\nfunction copyLocator(f,t){\r\n\tt.lineNumber = f.lineNumber;\r\n\tt.columnNumber = f.columnNumber;\r\n\treturn t;\r\n}\r\n\r\n/**\r\n * @see #appendElement(source,elStartEnd,el,selfClosed,entityReplacer,domBuilder,parseStack);\r\n * @return end of the elementStartPart(end of elementEndPart for selfClosed el)\r\n */\r\nfunction parseElementStartPart(source,start,el,currentNSMap,entityReplacer,errorHandler){\r\n\tvar attrName;\r\n\tvar value;\r\n\tvar p = ++start;\r\n\tvar s = S_TAG;//status\r\n\twhile(true){\r\n\t\tvar c = source.charAt(p);\r\n\t\tswitch(c){\r\n\t\tcase '=':\r\n\t\t\tif(s === S_ATTR){//attrName\r\n\t\t\t\tattrName = source.slice(start,p);\r\n\t\t\t\ts = S_EQ;\r\n\t\t\t}else if(s === S_ATTR_SPACE){\r\n\t\t\t\ts = S_EQ;\r\n\t\t\t}else{\r\n\t\t\t\t//fatalError: equal must after attrName or space after attrName\r\n\t\t\t\tthrow new Error('attribute equal must after attrName');\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\tcase '\\'':\r\n\t\tcase '\"':\r\n\t\t\tif(s === S_EQ || s === S_ATTR //|| s == S_ATTR_SPACE\r\n\t\t\t\t){//equal\r\n\t\t\t\tif(s === S_ATTR){\r\n\t\t\t\t\terrorHandler.warning('attribute value must after \"=\"')\r\n\t\t\t\t\tattrName = source.slice(start,p)\r\n\t\t\t\t}\r\n\t\t\t\tstart = p+1;\r\n\t\t\t\tp = source.indexOf(c,start)\r\n\t\t\t\tif(p>0){\r\n\t\t\t\t\tvalue = source.slice(start,p).replace(/&#?\\w+;/g,entityReplacer);\r\n\t\t\t\t\tel.add(attrName,value,start-1);\r\n\t\t\t\t\ts = S_ATTR_END;\r\n\t\t\t\t}else{\r\n\t\t\t\t\t//fatalError: no end quot match\r\n\t\t\t\t\tthrow new Error('attribute value no end \\''+c+'\\' match');\r\n\t\t\t\t}\r\n\t\t\t}else if(s == S_ATTR_NOQUOT_VALUE){\r\n\t\t\t\tvalue = source.slice(start,p).replace(/&#?\\w+;/g,entityReplacer);\r\n\t\t\t\t//console.log(attrName,value,start,p)\r\n\t\t\t\tel.add(attrName,value,start);\r\n\t\t\t\t//console.dir(el)\r\n\t\t\t\terrorHandler.warning('attribute \"'+attrName+'\" missed start quot('+c+')!!');\r\n\t\t\t\tstart = p+1;\r\n\t\t\t\ts = S_ATTR_END\r\n\t\t\t}else{\r\n\t\t\t\t//fatalError: no equal before\r\n\t\t\t\tthrow new Error('attribute value must after \"=\"');\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\tcase '/':\r\n\t\t\tswitch(s){\r\n\t\t\tcase S_TAG:\r\n\t\t\t\tel.setTagName(source.slice(start,p));\r\n\t\t\tcase S_ATTR_END:\r\n\t\t\tcase S_TAG_SPACE:\r\n\t\t\tcase S_TAG_CLOSE:\r\n\t\t\t\ts =S_TAG_CLOSE;\r\n\t\t\t\tel.closed = true;\r\n\t\t\tcase S_ATTR_NOQUOT_VALUE:\r\n\t\t\tcase S_ATTR:\r\n\t\t\tcase S_ATTR_SPACE:\r\n\t\t\t\tbreak;\r\n\t\t\t//case S_EQ:\r\n\t\t\tdefault:\r\n\t\t\t\tthrow new Error(\"attribute invalid close char('/')\")\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\tcase ''://end document\r\n\t\t\t//throw new Error('unexpected end of input')\r\n\t\t\terrorHandler.error('unexpected end of input');\r\n\t\t\tif(s == S_TAG){\r\n\t\t\t\tel.setTagName(source.slice(start,p));\r\n\t\t\t}\r\n\t\t\treturn p;\r\n\t\tcase '>':\r\n\t\t\tswitch(s){\r\n\t\t\tcase S_TAG:\r\n\t\t\t\tel.setTagName(source.slice(start,p));\r\n\t\t\tcase S_ATTR_END:\r\n\t\t\tcase S_TAG_SPACE:\r\n\t\t\tcase S_TAG_CLOSE:\r\n\t\t\t\tbreak;//normal\r\n\t\t\tcase S_ATTR_NOQUOT_VALUE://Compatible state\r\n\t\t\tcase S_ATTR:\r\n\t\t\t\tvalue = source.slice(start,p);\r\n\t\t\t\tif(value.slice(-1) === '/'){\r\n\t\t\t\t\tel.closed = true;\r\n\t\t\t\t\tvalue = value.slice(0,-1)\r\n\t\t\t\t}\r\n\t\t\tcase S_ATTR_SPACE:\r\n\t\t\t\tif(s === S_ATTR_SPACE){\r\n\t\t\t\t\tvalue = attrName;\r\n\t\t\t\t}\r\n\t\t\t\tif(s == S_ATTR_NOQUOT_VALUE){\r\n\t\t\t\t\terrorHandler.warning('attribute \"'+value+'\" missed quot(\")!!');\r\n\t\t\t\t\tel.add(attrName,value.replace(/&#?\\w+;/g,entityReplacer),start)\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(currentNSMap[''] !== 'http://www.w3.org/1999/xhtml' || !value.match(/^(?:disabled|checked|selected)$/i)){\r\n\t\t\t\t\t\terrorHandler.warning('attribute \"'+value+'\" missed value!! \"'+value+'\" instead!!')\r\n\t\t\t\t\t}\r\n\t\t\t\t\tel.add(value,value,start)\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase S_EQ:\r\n\t\t\t\tthrow new Error('attribute value missed!!');\r\n\t\t\t}\r\n//\t\t\tconsole.log(tagName,tagNamePattern,tagNamePattern.test(tagName))\r\n\t\t\treturn p;\r\n\t\t/*xml space '\\x20' | #x9 | #xD | #xA; */\r\n\t\tcase '\\u0080':\r\n\t\t\tc = ' ';\r\n\t\tdefault:\r\n\t\t\tif(c<= ' '){//space\r\n\t\t\t\tswitch(s){\r\n\t\t\t\tcase S_TAG:\r\n\t\t\t\t\tel.setTagName(source.slice(start,p));//tagName\r\n\t\t\t\t\ts = S_TAG_SPACE;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase S_ATTR:\r\n\t\t\t\t\tattrName = source.slice(start,p)\r\n\t\t\t\t\ts = S_ATTR_SPACE;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase S_ATTR_NOQUOT_VALUE:\r\n\t\t\t\t\tvar value = source.slice(start,p).replace(/&#?\\w+;/g,entityReplacer);\r\n\t\t\t\t\terrorHandler.warning('attribute \"'+value+'\" missed quot(\")!!');\r\n\t\t\t\t\tel.add(attrName,value,start)\r\n\t\t\t\tcase S_ATTR_END:\r\n\t\t\t\t\ts = S_TAG_SPACE;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t//case S_TAG_SPACE:\r\n\t\t\t\t//case S_EQ:\r\n\t\t\t\t//case S_ATTR_SPACE:\r\n\t\t\t\t//\tvoid();break;\r\n\t\t\t\t//case S_TAG_CLOSE:\r\n\t\t\t\t\t//ignore warning\r\n\t\t\t\t}\r\n\t\t\t}else{//not space\r\n//S_TAG,\tS_ATTR,\tS_EQ,\tS_ATTR_NOQUOT_VALUE\r\n//S_ATTR_SPACE,\tS_ATTR_END,\tS_TAG_SPACE, S_TAG_CLOSE\r\n\t\t\t\tswitch(s){\r\n\t\t\t\t//case S_TAG:void();break;\r\n\t\t\t\t//case S_ATTR:void();break;\r\n\t\t\t\t//case S_ATTR_NOQUOT_VALUE:void();break;\r\n\t\t\t\tcase S_ATTR_SPACE:\r\n\t\t\t\t\tvar tagName = el.tagName;\r\n\t\t\t\t\tif(currentNSMap[''] !== 'http://www.w3.org/1999/xhtml' || !attrName.match(/^(?:disabled|checked|selected)$/i)){\r\n\t\t\t\t\t\terrorHandler.warning('attribute \"'+attrName+'\" missed value!! \"'+attrName+'\" instead2!!')\r\n\t\t\t\t\t}\r\n\t\t\t\t\tel.add(attrName,attrName,start);\r\n\t\t\t\t\tstart = p;\r\n\t\t\t\t\ts = S_ATTR;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase S_ATTR_END:\r\n\t\t\t\t\terrorHandler.warning('attribute space is required\"'+attrName+'\"!!')\r\n\t\t\t\tcase S_TAG_SPACE:\r\n\t\t\t\t\ts = S_ATTR;\r\n\t\t\t\t\tstart = p;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase S_EQ:\r\n\t\t\t\t\ts = S_ATTR_NOQUOT_VALUE;\r\n\t\t\t\t\tstart = p;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase S_TAG_CLOSE:\r\n\t\t\t\t\tthrow new Error(\"elements closed character '/' and '>' must be connected to\");\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}//end outer switch\r\n\t\t//console.log('p++',p)\r\n\t\tp++;\r\n\t}\r\n}\r\n/**\r\n * @return true if has new namespace define\r\n */\r\nfunction appendElement(el,domBuilder,currentNSMap){\r\n\tvar tagName = el.tagName;\r\n\tvar localNSMap = null;\r\n\t//var currentNSMap = parseStack[parseStack.length-1].currentNSMap;\r\n\tvar i = el.length;\r\n\twhile(i--){\r\n\t\tvar a = el[i];\r\n\t\tvar qName = a.qName;\r\n\t\tvar value = a.value;\r\n\t\tvar nsp = qName.indexOf(':');\r\n\t\tif(nsp>0){\r\n\t\t\tvar prefix = a.prefix = qName.slice(0,nsp);\r\n\t\t\tvar localName = qName.slice(nsp+1);\r\n\t\t\tvar nsPrefix = prefix === 'xmlns' && localName\r\n\t\t}else{\r\n\t\t\tlocalName = qName;\r\n\t\t\tprefix = null\r\n\t\t\tnsPrefix = qName === 'xmlns' && ''\r\n\t\t}\r\n\t\t//can not set prefix,because prefix !== ''\r\n\t\ta.localName = localName ;\r\n\t\t//prefix == null for no ns prefix attribute \r\n\t\tif(nsPrefix !== false){//hack!!\r\n\t\t\tif(localNSMap == null){\r\n\t\t\t\tlocalNSMap = {}\r\n\t\t\t\t//console.log(currentNSMap,0)\r\n\t\t\t\t_copy(currentNSMap,currentNSMap={})\r\n\t\t\t\t//console.log(currentNSMap,1)\r\n\t\t\t}\r\n\t\t\tcurrentNSMap[nsPrefix] = localNSMap[nsPrefix] = value;\r\n\t\t\ta.uri = 'http://www.w3.org/2000/xmlns/'\r\n\t\t\tdomBuilder.startPrefixMapping(nsPrefix, value) \r\n\t\t}\r\n\t}\r\n\tvar i = el.length;\r\n\twhile(i--){\r\n\t\ta = el[i];\r\n\t\tvar prefix = a.prefix;\r\n\t\tif(prefix){//no prefix attribute has no namespace\r\n\t\t\tif(prefix === 'xml'){\r\n\t\t\t\ta.uri = 'http://www.w3.org/XML/1998/namespace';\r\n\t\t\t}if(prefix !== 'xmlns'){\r\n\t\t\t\ta.uri = currentNSMap[prefix || '']\r\n\t\t\t\t\r\n\t\t\t\t//{console.log('###'+a.qName,domBuilder.locator.systemId+'',currentNSMap,a.uri)}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\tvar nsp = tagName.indexOf(':');\r\n\tif(nsp>0){\r\n\t\tprefix = el.prefix = tagName.slice(0,nsp);\r\n\t\tlocalName = el.localName = tagName.slice(nsp+1);\r\n\t}else{\r\n\t\tprefix = null;//important!!\r\n\t\tlocalName = el.localName = tagName;\r\n\t}\r\n\t//no prefix element has default namespace\r\n\tvar ns = el.uri = currentNSMap[prefix || ''];\r\n\tdomBuilder.startElement(ns,localName,tagName,el);\r\n\t//endPrefixMapping and startPrefixMapping have not any help for dom builder\r\n\t//localNSMap = null\r\n\tif(el.closed){\r\n\t\tdomBuilder.endElement(ns,localName,tagName);\r\n\t\tif(localNSMap){\r\n\t\t\tfor(prefix in localNSMap){\r\n\t\t\t\tdomBuilder.endPrefixMapping(prefix) \r\n\t\t\t}\r\n\t\t}\r\n\t}else{\r\n\t\tel.currentNSMap = currentNSMap;\r\n\t\tel.localNSMap = localNSMap;\r\n\t\t//parseStack.push(el);\r\n\t\treturn true;\r\n\t}\r\n}\r\nfunction parseHtmlSpecialContent(source,elStartEnd,tagName,entityReplacer,domBuilder){\r\n\tif(/^(?:script|textarea)$/i.test(tagName)){\r\n\t\tvar elEndStart = source.indexOf('',elStartEnd);\r\n\t\tvar text = source.substring(elStartEnd+1,elEndStart);\r\n\t\tif(/[&<]/.test(text)){\r\n\t\t\tif(/^script$/i.test(tagName)){\r\n\t\t\t\t//if(!/\\]\\]>/.test(text)){\r\n\t\t\t\t\t//lexHandler.startCDATA();\r\n\t\t\t\t\tdomBuilder.characters(text,0,text.length);\r\n\t\t\t\t\t//lexHandler.endCDATA();\r\n\t\t\t\t\treturn elEndStart;\r\n\t\t\t\t//}\r\n\t\t\t}//}else{//text area\r\n\t\t\t\ttext = text.replace(/&#?\\w+;/g,entityReplacer);\r\n\t\t\t\tdomBuilder.characters(text,0,text.length);\r\n\t\t\t\treturn elEndStart;\r\n\t\t\t//}\r\n\t\t\t\r\n\t\t}\r\n\t}\r\n\treturn elStartEnd+1;\r\n}\r\nfunction fixSelfClosed(source,elStartEnd,tagName,closeMap){\r\n\t//if(tagName in closeMap){\r\n\tvar pos = closeMap[tagName];\r\n\tif(pos == null){\r\n\t\t//console.log(tagName)\r\n\t\tpos = source.lastIndexOf('')\r\n\t\tif(pos',start+4);\r\n\t\t\t//append comment source.substring(4,end)//\");\n\tcase DOCUMENT_TYPE_NODE:\n\t\tvar pubid = node.publicId;\n\t\tvar sysid = node.systemId;\n\t\tbuf.push('');\n\t\t}else if(sysid && sysid!='.'){\n\t\t\tbuf.push(' SYSTEM \"',sysid,'\">');\n\t\t}else{\n\t\t\tvar sub = node.internalSubset;\n\t\t\tif(sub){\n\t\t\t\tbuf.push(\" [\",sub,\"]\");\n\t\t\t}\n\t\t\tbuf.push(\">\");\n\t\t}\n\t\treturn;\n\tcase PROCESSING_INSTRUCTION_NODE:\n\t\treturn buf.push( \"\");\n\tcase ENTITY_REFERENCE_NODE:\n\t\treturn buf.push( '&',node.nodeName,';');\n\t//case ENTITY_NODE:\n\t//case NOTATION_NODE:\n\tdefault:\n\t\tbuf.push('??',node.nodeName);\n\t}\n}\nfunction importNode(doc,node,deep){\n\tvar node2;\n\tswitch (node.nodeType) {\n\tcase ELEMENT_NODE:\n\t\tnode2 = node.cloneNode(false);\n\t\tnode2.ownerDocument = doc;\n\t\t//var attrs = node2.attributes;\n\t\t//var len = attrs.length;\n\t\t//for(var i=0;i','amp':'&','quot':'\"','apos':\"'\"}\r\n\tif(locator){\r\n\t\tdomBuilder.setDocumentLocator(locator)\r\n\t}\r\n\t\r\n\tsax.errorHandler = buildErrorHandler(errorHandler,domBuilder,locator);\r\n\tsax.domBuilder = options.domBuilder || domBuilder;\r\n\tif(/\\/x?html?$/.test(mimeType)){\r\n\t\tentityMap.nbsp = '\\xa0';\r\n\t\tentityMap.copy = '\\xa9';\r\n\t\tdefaultNSMap['']= 'http://www.w3.org/1999/xhtml';\r\n\t}\r\n\tdefaultNSMap.xml = defaultNSMap.xml || 'http://www.w3.org/XML/1998/namespace';\r\n\tif(source){\r\n\t\tsax.parse(source,defaultNSMap,entityMap);\r\n\t}else{\r\n\t\tsax.errorHandler.error(\"invalid doc source\");\r\n\t}\r\n\treturn domBuilder.doc;\r\n}\r\nfunction buildErrorHandler(errorImpl,domBuilder,locator){\r\n\tif(!errorImpl){\r\n\t\tif(domBuilder instanceof DOMHandler){\r\n\t\t\treturn domBuilder;\r\n\t\t}\r\n\t\terrorImpl = domBuilder ;\r\n\t}\r\n\tvar errorHandler = {}\r\n\tvar isCallback = errorImpl instanceof Function;\r\n\tlocator = locator||{}\r\n\tfunction build(key){\r\n\t\tvar fn = errorImpl[key];\r\n\t\tif(!fn && isCallback){\r\n\t\t\tfn = errorImpl.length == 2?function(msg){errorImpl(key,msg)}:errorImpl;\r\n\t\t}\r\n\t\terrorHandler[key] = fn && function(msg){\r\n\t\t\tfn('[xmldom '+key+']\\t'+msg+_locator(locator));\r\n\t\t}||function(){};\r\n\t}\r\n\tbuild('warning');\r\n\tbuild('error');\r\n\tbuild('fatalError');\r\n\treturn errorHandler;\r\n}\r\n\r\n//console.log('#\\n\\n\\n\\n\\n\\n\\n####')\r\n/**\r\n * +ContentHandler+ErrorHandler\r\n * +LexicalHandler+EntityResolver2\r\n * -DeclHandler-DTDHandler \r\n * \r\n * DefaultHandler:EntityResolver, DTDHandler, ContentHandler, ErrorHandler\r\n * DefaultHandler2:DefaultHandler,LexicalHandler, DeclHandler, EntityResolver2\r\n * @link http://www.saxproject.org/apidoc/org/xml/sax/helpers/DefaultHandler.html\r\n */\r\nfunction DOMHandler() {\r\n this.cdata = false;\r\n}\r\nfunction position(locator,node){\r\n\tnode.lineNumber = locator.lineNumber;\r\n\tnode.columnNumber = locator.columnNumber;\r\n}\r\n/**\r\n * @see org.xml.sax.ContentHandler#startDocument\r\n * @link http://www.saxproject.org/apidoc/org/xml/sax/ContentHandler.html\r\n */ \r\nDOMHandler.prototype = {\r\n\tstartDocument : function() {\r\n \tthis.doc = new DOMImplementation().createDocument(null, null, null);\r\n \tif (this.locator) {\r\n \tthis.doc.documentURI = this.locator.systemId;\r\n \t}\r\n\t},\r\n\tstartElement:function(namespaceURI, localName, qName, attrs) {\r\n\t\tvar doc = this.doc;\r\n\t var el = doc.createElementNS(namespaceURI, qName||localName);\r\n\t var len = attrs.length;\r\n\t appendElement(this, el);\r\n\t this.currentElement = el;\r\n\t \r\n\t\tthis.locator && position(this.locator,el)\r\n\t for (var i = 0 ; i < len; i++) {\r\n\t var namespaceURI = attrs.getURI(i);\r\n\t var value = attrs.getValue(i);\r\n\t var qName = attrs.getQName(i);\r\n\t\t\tvar attr = doc.createAttributeNS(namespaceURI, qName);\r\n\t\t\tthis.locator &&position(attrs.getLocator(i),attr);\r\n\t\t\tattr.value = attr.nodeValue = value;\r\n\t\t\tel.setAttributeNode(attr)\r\n\t }\r\n\t},\r\n\tendElement:function(namespaceURI, localName, qName) {\r\n\t\tvar current = this.currentElement\r\n\t\tvar tagName = current.tagName;\r\n\t\tthis.currentElement = current.parentNode;\r\n\t},\r\n\tstartPrefixMapping:function(prefix, uri) {\r\n\t},\r\n\tendPrefixMapping:function(prefix) {\r\n\t},\r\n\tprocessingInstruction:function(target, data) {\r\n\t var ins = this.doc.createProcessingInstruction(target, data);\r\n\t this.locator && position(this.locator,ins)\r\n\t appendElement(this, ins);\r\n\t},\r\n\tignorableWhitespace:function(ch, start, length) {\r\n\t},\r\n\tcharacters:function(chars, start, length) {\r\n\t\tchars = _toString.apply(this,arguments)\r\n\t\t//console.log(chars)\r\n\t\tif(chars){\r\n\t\t\tif (this.cdata) {\r\n\t\t\t\tvar charNode = this.doc.createCDATASection(chars);\r\n\t\t\t} else {\r\n\t\t\t\tvar charNode = this.doc.createTextNode(chars);\r\n\t\t\t}\r\n\t\t\tif(this.currentElement){\r\n\t\t\t\tthis.currentElement.appendChild(charNode);\r\n\t\t\t}else if(/^\\s*$/.test(chars)){\r\n\t\t\t\tthis.doc.appendChild(charNode);\r\n\t\t\t\t//process xml\r\n\t\t\t}\r\n\t\t\tthis.locator && position(this.locator,charNode)\r\n\t\t}\r\n\t},\r\n\tskippedEntity:function(name) {\r\n\t},\r\n\tendDocument:function() {\r\n\t\tthis.doc.normalize();\r\n\t},\r\n\tsetDocumentLocator:function (locator) {\r\n\t if(this.locator = locator){// && !('lineNumber' in locator)){\r\n\t \tlocator.lineNumber = 0;\r\n\t }\r\n\t},\r\n\t//LexicalHandler\r\n\tcomment:function(chars, start, length) {\r\n\t\tchars = _toString.apply(this,arguments)\r\n\t var comm = this.doc.createComment(chars);\r\n\t this.locator && position(this.locator,comm)\r\n\t appendElement(this, comm);\r\n\t},\r\n\t\r\n\tstartCDATA:function() {\r\n\t //used in characters() methods\r\n\t this.cdata = true;\r\n\t},\r\n\tendCDATA:function() {\r\n\t this.cdata = false;\r\n\t},\r\n\t\r\n\tstartDTD:function(name, publicId, systemId) {\r\n\t\tvar impl = this.doc.implementation;\r\n\t if (impl && impl.createDocumentType) {\r\n\t var dt = impl.createDocumentType(name, publicId, systemId);\r\n\t this.locator && position(this.locator,dt)\r\n\t appendElement(this, dt);\r\n\t }\r\n\t},\r\n\t/**\r\n\t * @see org.xml.sax.ErrorHandler\r\n\t * @link http://www.saxproject.org/apidoc/org/xml/sax/ErrorHandler.html\r\n\t */\r\n\twarning:function(error) {\r\n\t\tconsole.warn('[xmldom warning]\\t'+error,_locator(this.locator));\r\n\t},\r\n\terror:function(error) {\r\n\t\tconsole.error('[xmldom error]\\t'+error,_locator(this.locator));\r\n\t},\r\n\tfatalError:function(error) {\r\n\t\tconsole.error('[xmldom fatalError]\\t'+error,_locator(this.locator));\r\n\t throw error;\r\n\t}\r\n}\r\nfunction _locator(l){\r\n\tif(l){\r\n\t\treturn '\\n@'+(l.systemId ||'')+'#[line:'+l.lineNumber+',col:'+l.columnNumber+']'\r\n\t}\r\n}\r\nfunction _toString(chars,start,length){\r\n\tif(typeof chars == 'string'){\r\n\t\treturn chars.substr(start,length)\r\n\t}else{//java sax connect width xmldom on rhino(what about: \"? && !(chars instanceof String)\")\r\n\t\tif(chars.length >= start+length || start){\r\n\t\t\treturn new java.lang.String(chars,start,length)+'';\r\n\t\t}\r\n\t\treturn chars;\r\n\t}\r\n}\r\n\r\n/*\r\n * @link http://www.saxproject.org/apidoc/org/xml/sax/ext/LexicalHandler.html\r\n * used method of org.xml.sax.ext.LexicalHandler:\r\n * #comment(chars, start, length)\r\n * #startCDATA()\r\n * #endCDATA()\r\n * #startDTD(name, publicId, systemId)\r\n *\r\n *\r\n * IGNORED method of org.xml.sax.ext.LexicalHandler:\r\n * #endDTD()\r\n * #startEntity(name)\r\n * #endEntity(name)\r\n *\r\n *\r\n * @link http://www.saxproject.org/apidoc/org/xml/sax/ext/DeclHandler.html\r\n * IGNORED method of org.xml.sax.ext.DeclHandler\r\n * \t#attributeDecl(eName, aName, type, mode, value)\r\n * #elementDecl(name, model)\r\n * #externalEntityDecl(name, publicId, systemId)\r\n * #internalEntityDecl(name, value)\r\n * @link http://www.saxproject.org/apidoc/org/xml/sax/ext/EntityResolver2.html\r\n * IGNORED method of org.xml.sax.EntityResolver2\r\n * #resolveEntity(String name,String publicId,String baseURI,String systemId)\r\n * #resolveEntity(publicId, systemId)\r\n * #getExternalSubset(name, baseURI)\r\n * @link http://www.saxproject.org/apidoc/org/xml/sax/DTDHandler.html\r\n * IGNORED method of org.xml.sax.DTDHandler\r\n * #notationDecl(name, publicId, systemId) {};\r\n * #unparsedEntityDecl(name, publicId, systemId, notationName) {};\r\n */\r\n\"endDTD,startEntity,endEntity,attributeDecl,elementDecl,externalEntityDecl,internalEntityDecl,resolveEntity,getExternalSubset,notationDecl,unparsedEntityDecl\".replace(/\\w+/g,function(key){\r\n\tDOMHandler.prototype[key] = function(){return null}\r\n})\r\n\r\n/* Private static helpers treated below as private instance methods, so don't need to add these to the public API; we might use a Relator to also get rid of non-standard public properties */\r\nfunction appendElement (hander,node) {\r\n if (!hander.currentElement) {\r\n hander.doc.appendChild(node);\r\n } else {\r\n hander.currentElement.appendChild(node);\r\n }\r\n}//appendChild and setAttributeNS are preformance key\r\n\r\n//if(typeof require == 'function'){\r\n\tvar XMLReader = require('./sax').XMLReader;\r\n\tvar DOMImplementation = exports.DOMImplementation = require('./dom').DOMImplementation;\r\n\texports.XMLSerializer = require('./dom').XMLSerializer ;\r\n\texports.DOMParser = DOMParser;\r\n//}\r\n", "/**\n * Module dependencies.\n */\n\nvar DOMParser = require('xmldom').DOMParser;\n\n/**\n * Module exports.\n */\n\nexports.parse = parse;\n\nvar TEXT_NODE = 3;\nvar CDATA_NODE = 4;\nvar COMMENT_NODE = 8;\n\n\n/**\n * We ignore raw text (usually whitespace), ,\n * and raw CDATA nodes.\n *\n * @param {Element} node\n * @returns {Boolean}\n * @api private\n */\n\nfunction shouldIgnoreNode (node) {\n return node.nodeType === TEXT_NODE\n || node.nodeType === COMMENT_NODE\n || node.nodeType === CDATA_NODE;\n}\n\n/**\n * Check if the node is empty. Some plist file has such node:\n * \n * this node shoud be ignored.\n *\n * @see https://github.com/TooTallNate/plist.js/issues/66\n * @param {Element} node\n * @returns {Boolean}\n * @api private\n */\nfunction isEmptyNode(node){\n if(!node.childNodes || node.childNodes.length === 0) {\n return true;\n } else {\n return false;\n }\n}\n\nfunction invariant(test, message) {\n if (!test) {\n throw new Error(message);\n }\n}\n\n/**\n * Parses a Plist XML string. Returns an Object.\n *\n * @param {String} xml - the XML String to decode\n * @returns {Mixed} the decoded value from the Plist XML\n * @api public\n */\n\nfunction parse (xml) {\n var doc = new DOMParser().parseFromString(xml);\n invariant(\n doc.documentElement.nodeName === 'plist',\n 'malformed document. First element should be '\n );\n var plist = parsePlistXML(doc.documentElement);\n\n // the root node gets interpreted as an Array,\n // so pull out the inner data first\n if (plist.length == 1) plist = plist[0];\n\n return plist;\n}\n\n/**\n * Convert an XML based plist document into a JSON representation.\n *\n * @param {Object} xml_node - current XML node in the plist\n * @returns {Mixed} built up JSON object\n * @api private\n */\n\nfunction parsePlistXML (node) {\n var i, new_obj, key, val, new_arr, res, counter, type;\n\n if (!node)\n return null;\n\n if (node.nodeName === 'plist') {\n new_arr = [];\n if (isEmptyNode(node)) {\n return new_arr;\n }\n for (i=0; i < node.childNodes.length; i++) {\n if (!shouldIgnoreNode(node.childNodes[i])) {\n new_arr.push( parsePlistXML(node.childNodes[i]));\n }\n }\n return new_arr;\n } else if (node.nodeName === 'dict') {\n new_obj = {};\n key = null;\n counter = 0;\n if (isEmptyNode(node)) {\n return new_obj;\n }\n for (i=0; i < node.childNodes.length; i++) {\n if (shouldIgnoreNode(node.childNodes[i])) continue;\n if (counter % 2 === 0) {\n invariant(\n node.childNodes[i].nodeName === 'key',\n 'Missing key while parsing .'\n );\n key = parsePlistXML(node.childNodes[i]);\n } else {\n invariant(\n node.childNodes[i].nodeName !== 'key',\n 'Unexpected key \"'\n + parsePlistXML(node.childNodes[i])\n + '\" while parsing .'\n );\n new_obj[key] = parsePlistXML(node.childNodes[i]);\n }\n counter += 1;\n }\n if (counter % 2 === 1) {\n throw new Error('Missing value for \"' + key + '\" while parsing ');\n }\n return new_obj;\n\n } else if (node.nodeName === 'array') {\n new_arr = [];\n if (isEmptyNode(node)) {\n return new_arr;\n }\n for (i=0; i < node.childNodes.length; i++) {\n if (!shouldIgnoreNode(node.childNodes[i])) {\n res = parsePlistXML(node.childNodes[i]);\n if (null != res) new_arr.push(res);\n }\n }\n return new_arr;\n\n } else if (node.nodeName === '#text') {\n // TODO: what should we do with text types? (CDATA sections)\n\n } else if (node.nodeName === 'key') {\n if (isEmptyNode(node)) {\n return '';\n }\n return node.childNodes[0].nodeValue;\n } else if (node.nodeName === 'string') {\n res = '';\n if (isEmptyNode(node)) {\n return res;\n }\n for (i=0; i < node.childNodes.length; i++) {\n var type = node.childNodes[i].nodeType;\n if (type === TEXT_NODE || type === CDATA_NODE) {\n res += node.childNodes[i].nodeValue;\n }\n }\n return res;\n\n } else if (node.nodeName === 'integer') {\n invariant(\n !isEmptyNode(node),\n 'Cannot parse \"\" as integer.'\n );\n return parseInt(node.childNodes[0].nodeValue, 10);\n\n } else if (node.nodeName === 'real') {\n invariant(\n !isEmptyNode(node),\n 'Cannot parse \"\" as real.'\n );\n res = '';\n for (i=0; i < node.childNodes.length; i++) {\n if (node.childNodes[i].nodeType === TEXT_NODE) {\n res += node.childNodes[i].nodeValue;\n }\n }\n return parseFloat(res);\n\n } else if (node.nodeName === 'data') {\n res = '';\n if (isEmptyNode(node)) {\n return Buffer.from(res, 'base64');\n }\n for (i=0; i < node.childNodes.length; i++) {\n if (node.childNodes[i].nodeType === TEXT_NODE) {\n res += node.childNodes[i].nodeValue.replace(/\\s+/g, '');\n }\n }\n return Buffer.from(res, 'base64');\n\n } else if (node.nodeName === 'date') {\n invariant(\n !isEmptyNode(node),\n 'Cannot parse \"\" as Date.'\n )\n return new Date(node.childNodes[0].nodeValue);\n\n } else if (node.nodeName === 'true') {\n return true;\n\n } else if (node.nodeName === 'false') {\n return false;\n }\n}\n", "'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n", "// Generated by CoffeeScript 1.12.7\n(function() {\n var assign, isArray, isEmpty, isFunction, isObject, isPlainObject,\n slice = [].slice,\n hasProp = {}.hasOwnProperty;\n\n assign = function() {\n var i, key, len, source, sources, target;\n target = arguments[0], sources = 2 <= arguments.length ? slice.call(arguments, 1) : [];\n if (isFunction(Object.assign)) {\n Object.assign.apply(null, arguments);\n } else {\n for (i = 0, len = sources.length; i < len; i++) {\n source = sources[i];\n if (source != null) {\n for (key in source) {\n if (!hasProp.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n }\n }\n return target;\n };\n\n isFunction = function(val) {\n return !!val && Object.prototype.toString.call(val) === '[object Function]';\n };\n\n isObject = function(val) {\n var ref;\n return !!val && ((ref = typeof val) === 'function' || ref === 'object');\n };\n\n isArray = function(val) {\n if (isFunction(Array.isArray)) {\n return Array.isArray(val);\n } else {\n return Object.prototype.toString.call(val) === '[object Array]';\n }\n };\n\n isEmpty = function(val) {\n var key;\n if (isArray(val)) {\n return !val.length;\n } else {\n for (key in val) {\n if (!hasProp.call(val, key)) continue;\n return false;\n }\n return true;\n }\n };\n\n isPlainObject = function(val) {\n var ctor, proto;\n return isObject(val) && (proto = Object.getPrototypeOf(val)) && (ctor = proto.constructor) && (typeof ctor === 'function') && (ctor instanceof ctor) && (Function.prototype.toString.call(ctor) === Function.prototype.toString.call(Object));\n };\n\n module.exports.assign = assign;\n\n module.exports.isFunction = isFunction;\n\n module.exports.isObject = isObject;\n\n module.exports.isArray = isArray;\n\n module.exports.isEmpty = isEmpty;\n\n module.exports.isPlainObject = isPlainObject;\n\n}).call(this);\n", "// Generated by CoffeeScript 1.12.7\n(function() {\n var XMLAttribute;\n\n module.exports = XMLAttribute = (function() {\n function XMLAttribute(parent, name, value) {\n this.options = parent.options;\n this.stringify = parent.stringify;\n if (name == null) {\n throw new Error(\"Missing attribute name of element \" + parent.name);\n }\n if (value == null) {\n throw new Error(\"Missing attribute value for attribute \" + name + \" of element \" + parent.name);\n }\n this.name = this.stringify.attName(name);\n this.value = this.stringify.attValue(value);\n }\n\n XMLAttribute.prototype.clone = function() {\n return Object.create(this);\n };\n\n XMLAttribute.prototype.toString = function(options) {\n return this.options.writer.set(options).attribute(this);\n };\n\n return XMLAttribute;\n\n })();\n\n}).call(this);\n", "// Generated by CoffeeScript 1.12.7\n(function() {\n var XMLAttribute, XMLElement, XMLNode, isFunction, isObject, ref,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n ref = require('./Utility'), isObject = ref.isObject, isFunction = ref.isFunction;\n\n XMLNode = require('./XMLNode');\n\n XMLAttribute = require('./XMLAttribute');\n\n module.exports = XMLElement = (function(superClass) {\n extend(XMLElement, superClass);\n\n function XMLElement(parent, name, attributes) {\n XMLElement.__super__.constructor.call(this, parent);\n if (name == null) {\n throw new Error(\"Missing element name\");\n }\n this.name = this.stringify.eleName(name);\n this.attributes = {};\n if (attributes != null) {\n this.attribute(attributes);\n }\n if (parent.isDocument) {\n this.isRoot = true;\n this.documentObject = parent;\n parent.rootObject = this;\n }\n }\n\n XMLElement.prototype.clone = function() {\n var att, attName, clonedSelf, ref1;\n clonedSelf = Object.create(this);\n if (clonedSelf.isRoot) {\n clonedSelf.documentObject = null;\n }\n clonedSelf.attributes = {};\n ref1 = this.attributes;\n for (attName in ref1) {\n if (!hasProp.call(ref1, attName)) continue;\n att = ref1[attName];\n clonedSelf.attributes[attName] = att.clone();\n }\n clonedSelf.children = [];\n this.children.forEach(function(child) {\n var clonedChild;\n clonedChild = child.clone();\n clonedChild.parent = clonedSelf;\n return clonedSelf.children.push(clonedChild);\n });\n return clonedSelf;\n };\n\n XMLElement.prototype.attribute = function(name, value) {\n var attName, attValue;\n if (name != null) {\n name = name.valueOf();\n }\n if (isObject(name)) {\n for (attName in name) {\n if (!hasProp.call(name, attName)) continue;\n attValue = name[attName];\n this.attribute(attName, attValue);\n }\n } else {\n if (isFunction(value)) {\n value = value.apply();\n }\n if (!this.options.skipNullAttributes || (value != null)) {\n this.attributes[name] = new XMLAttribute(this, name, value);\n }\n }\n return this;\n };\n\n XMLElement.prototype.removeAttribute = function(name) {\n var attName, i, len;\n if (name == null) {\n throw new Error(\"Missing attribute name\");\n }\n name = name.valueOf();\n if (Array.isArray(name)) {\n for (i = 0, len = name.length; i < len; i++) {\n attName = name[i];\n delete this.attributes[attName];\n }\n } else {\n delete this.attributes[name];\n }\n return this;\n };\n\n XMLElement.prototype.toString = function(options) {\n return this.options.writer.set(options).element(this);\n };\n\n XMLElement.prototype.att = function(name, value) {\n return this.attribute(name, value);\n };\n\n XMLElement.prototype.a = function(name, value) {\n return this.attribute(name, value);\n };\n\n return XMLElement;\n\n })(XMLNode);\n\n}).call(this);\n", "// Generated by CoffeeScript 1.12.7\n(function() {\n var XMLCData, XMLNode,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n XMLNode = require('./XMLNode');\n\n module.exports = XMLCData = (function(superClass) {\n extend(XMLCData, superClass);\n\n function XMLCData(parent, text) {\n XMLCData.__super__.constructor.call(this, parent);\n if (text == null) {\n throw new Error(\"Missing CDATA text\");\n }\n this.text = this.stringify.cdata(text);\n }\n\n XMLCData.prototype.clone = function() {\n return Object.create(this);\n };\n\n XMLCData.prototype.toString = function(options) {\n return this.options.writer.set(options).cdata(this);\n };\n\n return XMLCData;\n\n })(XMLNode);\n\n}).call(this);\n", "// Generated by CoffeeScript 1.12.7\n(function() {\n var XMLComment, XMLNode,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n XMLNode = require('./XMLNode');\n\n module.exports = XMLComment = (function(superClass) {\n extend(XMLComment, superClass);\n\n function XMLComment(parent, text) {\n XMLComment.__super__.constructor.call(this, parent);\n if (text == null) {\n throw new Error(\"Missing comment text\");\n }\n this.text = this.stringify.comment(text);\n }\n\n XMLComment.prototype.clone = function() {\n return Object.create(this);\n };\n\n XMLComment.prototype.toString = function(options) {\n return this.options.writer.set(options).comment(this);\n };\n\n return XMLComment;\n\n })(XMLNode);\n\n}).call(this);\n", "// Generated by CoffeeScript 1.12.7\n(function() {\n var XMLDeclaration, XMLNode, isObject,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n isObject = require('./Utility').isObject;\n\n XMLNode = require('./XMLNode');\n\n module.exports = XMLDeclaration = (function(superClass) {\n extend(XMLDeclaration, superClass);\n\n function XMLDeclaration(parent, version, encoding, standalone) {\n var ref;\n XMLDeclaration.__super__.constructor.call(this, parent);\n if (isObject(version)) {\n ref = version, version = ref.version, encoding = ref.encoding, standalone = ref.standalone;\n }\n if (!version) {\n version = '1.0';\n }\n this.version = this.stringify.xmlVersion(version);\n if (encoding != null) {\n this.encoding = this.stringify.xmlEncoding(encoding);\n }\n if (standalone != null) {\n this.standalone = this.stringify.xmlStandalone(standalone);\n }\n }\n\n XMLDeclaration.prototype.toString = function(options) {\n return this.options.writer.set(options).declaration(this);\n };\n\n return XMLDeclaration;\n\n })(XMLNode);\n\n}).call(this);\n", "// Generated by CoffeeScript 1.12.7\n(function() {\n var XMLDTDAttList, XMLNode,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n XMLNode = require('./XMLNode');\n\n module.exports = XMLDTDAttList = (function(superClass) {\n extend(XMLDTDAttList, superClass);\n\n function XMLDTDAttList(parent, elementName, attributeName, attributeType, defaultValueType, defaultValue) {\n XMLDTDAttList.__super__.constructor.call(this, parent);\n if (elementName == null) {\n throw new Error(\"Missing DTD element name\");\n }\n if (attributeName == null) {\n throw new Error(\"Missing DTD attribute name\");\n }\n if (!attributeType) {\n throw new Error(\"Missing DTD attribute type\");\n }\n if (!defaultValueType) {\n throw new Error(\"Missing DTD attribute default\");\n }\n if (defaultValueType.indexOf('#') !== 0) {\n defaultValueType = '#' + defaultValueType;\n }\n if (!defaultValueType.match(/^(#REQUIRED|#IMPLIED|#FIXED|#DEFAULT)$/)) {\n throw new Error(\"Invalid default value type; expected: #REQUIRED, #IMPLIED, #FIXED or #DEFAULT\");\n }\n if (defaultValue && !defaultValueType.match(/^(#FIXED|#DEFAULT)$/)) {\n throw new Error(\"Default value only applies to #FIXED or #DEFAULT\");\n }\n this.elementName = this.stringify.eleName(elementName);\n this.attributeName = this.stringify.attName(attributeName);\n this.attributeType = this.stringify.dtdAttType(attributeType);\n this.defaultValue = this.stringify.dtdAttDefault(defaultValue);\n this.defaultValueType = defaultValueType;\n }\n\n XMLDTDAttList.prototype.toString = function(options) {\n return this.options.writer.set(options).dtdAttList(this);\n };\n\n return XMLDTDAttList;\n\n })(XMLNode);\n\n}).call(this);\n", "// Generated by CoffeeScript 1.12.7\n(function() {\n var XMLDTDEntity, XMLNode, isObject,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n isObject = require('./Utility').isObject;\n\n XMLNode = require('./XMLNode');\n\n module.exports = XMLDTDEntity = (function(superClass) {\n extend(XMLDTDEntity, superClass);\n\n function XMLDTDEntity(parent, pe, name, value) {\n XMLDTDEntity.__super__.constructor.call(this, parent);\n if (name == null) {\n throw new Error(\"Missing entity name\");\n }\n if (value == null) {\n throw new Error(\"Missing entity value\");\n }\n this.pe = !!pe;\n this.name = this.stringify.eleName(name);\n if (!isObject(value)) {\n this.value = this.stringify.dtdEntityValue(value);\n } else {\n if (!value.pubID && !value.sysID) {\n throw new Error(\"Public and/or system identifiers are required for an external entity\");\n }\n if (value.pubID && !value.sysID) {\n throw new Error(\"System identifier is required for a public external entity\");\n }\n if (value.pubID != null) {\n this.pubID = this.stringify.dtdPubID(value.pubID);\n }\n if (value.sysID != null) {\n this.sysID = this.stringify.dtdSysID(value.sysID);\n }\n if (value.nData != null) {\n this.nData = this.stringify.dtdNData(value.nData);\n }\n if (this.pe && this.nData) {\n throw new Error(\"Notation declaration is not allowed in a parameter entity\");\n }\n }\n }\n\n XMLDTDEntity.prototype.toString = function(options) {\n return this.options.writer.set(options).dtdEntity(this);\n };\n\n return XMLDTDEntity;\n\n })(XMLNode);\n\n}).call(this);\n", "// Generated by CoffeeScript 1.12.7\n(function() {\n var XMLDTDElement, XMLNode,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n XMLNode = require('./XMLNode');\n\n module.exports = XMLDTDElement = (function(superClass) {\n extend(XMLDTDElement, superClass);\n\n function XMLDTDElement(parent, name, value) {\n XMLDTDElement.__super__.constructor.call(this, parent);\n if (name == null) {\n throw new Error(\"Missing DTD element name\");\n }\n if (!value) {\n value = '(#PCDATA)';\n }\n if (Array.isArray(value)) {\n value = '(' + value.join(',') + ')';\n }\n this.name = this.stringify.eleName(name);\n this.value = this.stringify.dtdElementValue(value);\n }\n\n XMLDTDElement.prototype.toString = function(options) {\n return this.options.writer.set(options).dtdElement(this);\n };\n\n return XMLDTDElement;\n\n })(XMLNode);\n\n}).call(this);\n", "// Generated by CoffeeScript 1.12.7\n(function() {\n var XMLDTDNotation, XMLNode,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n XMLNode = require('./XMLNode');\n\n module.exports = XMLDTDNotation = (function(superClass) {\n extend(XMLDTDNotation, superClass);\n\n function XMLDTDNotation(parent, name, value) {\n XMLDTDNotation.__super__.constructor.call(this, parent);\n if (name == null) {\n throw new Error(\"Missing notation name\");\n }\n if (!value.pubID && !value.sysID) {\n throw new Error(\"Public or system identifiers are required for an external entity\");\n }\n this.name = this.stringify.eleName(name);\n if (value.pubID != null) {\n this.pubID = this.stringify.dtdPubID(value.pubID);\n }\n if (value.sysID != null) {\n this.sysID = this.stringify.dtdSysID(value.sysID);\n }\n }\n\n XMLDTDNotation.prototype.toString = function(options) {\n return this.options.writer.set(options).dtdNotation(this);\n };\n\n return XMLDTDNotation;\n\n })(XMLNode);\n\n}).call(this);\n", "// Generated by CoffeeScript 1.12.7\n(function() {\n var XMLDTDAttList, XMLDTDElement, XMLDTDEntity, XMLDTDNotation, XMLDocType, XMLNode, isObject,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n isObject = require('./Utility').isObject;\n\n XMLNode = require('./XMLNode');\n\n XMLDTDAttList = require('./XMLDTDAttList');\n\n XMLDTDEntity = require('./XMLDTDEntity');\n\n XMLDTDElement = require('./XMLDTDElement');\n\n XMLDTDNotation = require('./XMLDTDNotation');\n\n module.exports = XMLDocType = (function(superClass) {\n extend(XMLDocType, superClass);\n\n function XMLDocType(parent, pubID, sysID) {\n var ref, ref1;\n XMLDocType.__super__.constructor.call(this, parent);\n this.documentObject = parent;\n if (isObject(pubID)) {\n ref = pubID, pubID = ref.pubID, sysID = ref.sysID;\n }\n if (sysID == null) {\n ref1 = [pubID, sysID], sysID = ref1[0], pubID = ref1[1];\n }\n if (pubID != null) {\n this.pubID = this.stringify.dtdPubID(pubID);\n }\n if (sysID != null) {\n this.sysID = this.stringify.dtdSysID(sysID);\n }\n }\n\n XMLDocType.prototype.element = function(name, value) {\n var child;\n child = new XMLDTDElement(this, name, value);\n this.children.push(child);\n return this;\n };\n\n XMLDocType.prototype.attList = function(elementName, attributeName, attributeType, defaultValueType, defaultValue) {\n var child;\n child = new XMLDTDAttList(this, elementName, attributeName, attributeType, defaultValueType, defaultValue);\n this.children.push(child);\n return this;\n };\n\n XMLDocType.prototype.entity = function(name, value) {\n var child;\n child = new XMLDTDEntity(this, false, name, value);\n this.children.push(child);\n return this;\n };\n\n XMLDocType.prototype.pEntity = function(name, value) {\n var child;\n child = new XMLDTDEntity(this, true, name, value);\n this.children.push(child);\n return this;\n };\n\n XMLDocType.prototype.notation = function(name, value) {\n var child;\n child = new XMLDTDNotation(this, name, value);\n this.children.push(child);\n return this;\n };\n\n XMLDocType.prototype.toString = function(options) {\n return this.options.writer.set(options).docType(this);\n };\n\n XMLDocType.prototype.ele = function(name, value) {\n return this.element(name, value);\n };\n\n XMLDocType.prototype.att = function(elementName, attributeName, attributeType, defaultValueType, defaultValue) {\n return this.attList(elementName, attributeName, attributeType, defaultValueType, defaultValue);\n };\n\n XMLDocType.prototype.ent = function(name, value) {\n return this.entity(name, value);\n };\n\n XMLDocType.prototype.pent = function(name, value) {\n return this.pEntity(name, value);\n };\n\n XMLDocType.prototype.not = function(name, value) {\n return this.notation(name, value);\n };\n\n XMLDocType.prototype.up = function() {\n return this.root() || this.documentObject;\n };\n\n return XMLDocType;\n\n })(XMLNode);\n\n}).call(this);\n", "// Generated by CoffeeScript 1.12.7\n(function() {\n var XMLNode, XMLRaw,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n XMLNode = require('./XMLNode');\n\n module.exports = XMLRaw = (function(superClass) {\n extend(XMLRaw, superClass);\n\n function XMLRaw(parent, text) {\n XMLRaw.__super__.constructor.call(this, parent);\n if (text == null) {\n throw new Error(\"Missing raw text\");\n }\n this.value = this.stringify.raw(text);\n }\n\n XMLRaw.prototype.clone = function() {\n return Object.create(this);\n };\n\n XMLRaw.prototype.toString = function(options) {\n return this.options.writer.set(options).raw(this);\n };\n\n return XMLRaw;\n\n })(XMLNode);\n\n}).call(this);\n", "// Generated by CoffeeScript 1.12.7\n(function() {\n var XMLNode, XMLText,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n XMLNode = require('./XMLNode');\n\n module.exports = XMLText = (function(superClass) {\n extend(XMLText, superClass);\n\n function XMLText(parent, text) {\n XMLText.__super__.constructor.call(this, parent);\n if (text == null) {\n throw new Error(\"Missing element text\");\n }\n this.value = this.stringify.eleText(text);\n }\n\n XMLText.prototype.clone = function() {\n return Object.create(this);\n };\n\n XMLText.prototype.toString = function(options) {\n return this.options.writer.set(options).text(this);\n };\n\n return XMLText;\n\n })(XMLNode);\n\n}).call(this);\n", "// Generated by CoffeeScript 1.12.7\n(function() {\n var XMLNode, XMLProcessingInstruction,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n XMLNode = require('./XMLNode');\n\n module.exports = XMLProcessingInstruction = (function(superClass) {\n extend(XMLProcessingInstruction, superClass);\n\n function XMLProcessingInstruction(parent, target, value) {\n XMLProcessingInstruction.__super__.constructor.call(this, parent);\n if (target == null) {\n throw new Error(\"Missing instruction target\");\n }\n this.target = this.stringify.insTarget(target);\n if (value) {\n this.value = this.stringify.insValue(value);\n }\n }\n\n XMLProcessingInstruction.prototype.clone = function() {\n return Object.create(this);\n };\n\n XMLProcessingInstruction.prototype.toString = function(options) {\n return this.options.writer.set(options).processingInstruction(this);\n };\n\n return XMLProcessingInstruction;\n\n })(XMLNode);\n\n}).call(this);\n", "// Generated by CoffeeScript 1.12.7\n(function() {\n var XMLCData, XMLComment, XMLDeclaration, XMLDocType, XMLElement, XMLNode, XMLProcessingInstruction, XMLRaw, XMLText, isEmpty, isFunction, isObject, ref,\n hasProp = {}.hasOwnProperty;\n\n ref = require('./Utility'), isObject = ref.isObject, isFunction = ref.isFunction, isEmpty = ref.isEmpty;\n\n XMLElement = null;\n\n XMLCData = null;\n\n XMLComment = null;\n\n XMLDeclaration = null;\n\n XMLDocType = null;\n\n XMLRaw = null;\n\n XMLText = null;\n\n XMLProcessingInstruction = null;\n\n module.exports = XMLNode = (function() {\n function XMLNode(parent) {\n this.parent = parent;\n if (this.parent) {\n this.options = this.parent.options;\n this.stringify = this.parent.stringify;\n }\n this.children = [];\n if (!XMLElement) {\n XMLElement = require('./XMLElement');\n XMLCData = require('./XMLCData');\n XMLComment = require('./XMLComment');\n XMLDeclaration = require('./XMLDeclaration');\n XMLDocType = require('./XMLDocType');\n XMLRaw = require('./XMLRaw');\n XMLText = require('./XMLText');\n XMLProcessingInstruction = require('./XMLProcessingInstruction');\n }\n }\n\n XMLNode.prototype.element = function(name, attributes, text) {\n var childNode, item, j, k, key, lastChild, len, len1, ref1, val;\n lastChild = null;\n if (attributes == null) {\n attributes = {};\n }\n attributes = attributes.valueOf();\n if (!isObject(attributes)) {\n ref1 = [attributes, text], text = ref1[0], attributes = ref1[1];\n }\n if (name != null) {\n name = name.valueOf();\n }\n if (Array.isArray(name)) {\n for (j = 0, len = name.length; j < len; j++) {\n item = name[j];\n lastChild = this.element(item);\n }\n } else if (isFunction(name)) {\n lastChild = this.element(name.apply());\n } else if (isObject(name)) {\n for (key in name) {\n if (!hasProp.call(name, key)) continue;\n val = name[key];\n if (isFunction(val)) {\n val = val.apply();\n }\n if ((isObject(val)) && (isEmpty(val))) {\n val = null;\n }\n if (!this.options.ignoreDecorators && this.stringify.convertAttKey && key.indexOf(this.stringify.convertAttKey) === 0) {\n lastChild = this.attribute(key.substr(this.stringify.convertAttKey.length), val);\n } else if (!this.options.separateArrayItems && Array.isArray(val)) {\n for (k = 0, len1 = val.length; k < len1; k++) {\n item = val[k];\n childNode = {};\n childNode[key] = item;\n lastChild = this.element(childNode);\n }\n } else if (isObject(val)) {\n lastChild = this.element(key);\n lastChild.element(val);\n } else {\n lastChild = this.element(key, val);\n }\n }\n } else {\n if (!this.options.ignoreDecorators && this.stringify.convertTextKey && name.indexOf(this.stringify.convertTextKey) === 0) {\n lastChild = this.text(text);\n } else if (!this.options.ignoreDecorators && this.stringify.convertCDataKey && name.indexOf(this.stringify.convertCDataKey) === 0) {\n lastChild = this.cdata(text);\n } else if (!this.options.ignoreDecorators && this.stringify.convertCommentKey && name.indexOf(this.stringify.convertCommentKey) === 0) {\n lastChild = this.comment(text);\n } else if (!this.options.ignoreDecorators && this.stringify.convertRawKey && name.indexOf(this.stringify.convertRawKey) === 0) {\n lastChild = this.raw(text);\n } else if (!this.options.ignoreDecorators && this.stringify.convertPIKey && name.indexOf(this.stringify.convertPIKey) === 0) {\n lastChild = this.instruction(name.substr(this.stringify.convertPIKey.length), text);\n } else {\n lastChild = this.node(name, attributes, text);\n }\n }\n if (lastChild == null) {\n throw new Error(\"Could not create any elements with: \" + name);\n }\n return lastChild;\n };\n\n XMLNode.prototype.insertBefore = function(name, attributes, text) {\n var child, i, removed;\n if (this.isRoot) {\n throw new Error(\"Cannot insert elements at root level\");\n }\n i = this.parent.children.indexOf(this);\n removed = this.parent.children.splice(i);\n child = this.parent.element(name, attributes, text);\n Array.prototype.push.apply(this.parent.children, removed);\n return child;\n };\n\n XMLNode.prototype.insertAfter = function(name, attributes, text) {\n var child, i, removed;\n if (this.isRoot) {\n throw new Error(\"Cannot insert elements at root level\");\n }\n i = this.parent.children.indexOf(this);\n removed = this.parent.children.splice(i + 1);\n child = this.parent.element(name, attributes, text);\n Array.prototype.push.apply(this.parent.children, removed);\n return child;\n };\n\n XMLNode.prototype.remove = function() {\n var i, ref1;\n if (this.isRoot) {\n throw new Error(\"Cannot remove the root element\");\n }\n i = this.parent.children.indexOf(this);\n [].splice.apply(this.parent.children, [i, i - i + 1].concat(ref1 = [])), ref1;\n return this.parent;\n };\n\n XMLNode.prototype.node = function(name, attributes, text) {\n var child, ref1;\n if (name != null) {\n name = name.valueOf();\n }\n attributes || (attributes = {});\n attributes = attributes.valueOf();\n if (!isObject(attributes)) {\n ref1 = [attributes, text], text = ref1[0], attributes = ref1[1];\n }\n child = new XMLElement(this, name, attributes);\n if (text != null) {\n child.text(text);\n }\n this.children.push(child);\n return child;\n };\n\n XMLNode.prototype.text = function(value) {\n var child;\n child = new XMLText(this, value);\n this.children.push(child);\n return this;\n };\n\n XMLNode.prototype.cdata = function(value) {\n var child;\n child = new XMLCData(this, value);\n this.children.push(child);\n return this;\n };\n\n XMLNode.prototype.comment = function(value) {\n var child;\n child = new XMLComment(this, value);\n this.children.push(child);\n return this;\n };\n\n XMLNode.prototype.commentBefore = function(value) {\n var child, i, removed;\n i = this.parent.children.indexOf(this);\n removed = this.parent.children.splice(i);\n child = this.parent.comment(value);\n Array.prototype.push.apply(this.parent.children, removed);\n return this;\n };\n\n XMLNode.prototype.commentAfter = function(value) {\n var child, i, removed;\n i = this.parent.children.indexOf(this);\n removed = this.parent.children.splice(i + 1);\n child = this.parent.comment(value);\n Array.prototype.push.apply(this.parent.children, removed);\n return this;\n };\n\n XMLNode.prototype.raw = function(value) {\n var child;\n child = new XMLRaw(this, value);\n this.children.push(child);\n return this;\n };\n\n XMLNode.prototype.instruction = function(target, value) {\n var insTarget, insValue, instruction, j, len;\n if (target != null) {\n target = target.valueOf();\n }\n if (value != null) {\n value = value.valueOf();\n }\n if (Array.isArray(target)) {\n for (j = 0, len = target.length; j < len; j++) {\n insTarget = target[j];\n this.instruction(insTarget);\n }\n } else if (isObject(target)) {\n for (insTarget in target) {\n if (!hasProp.call(target, insTarget)) continue;\n insValue = target[insTarget];\n this.instruction(insTarget, insValue);\n }\n } else {\n if (isFunction(value)) {\n value = value.apply();\n }\n instruction = new XMLProcessingInstruction(this, target, value);\n this.children.push(instruction);\n }\n return this;\n };\n\n XMLNode.prototype.instructionBefore = function(target, value) {\n var child, i, removed;\n i = this.parent.children.indexOf(this);\n removed = this.parent.children.splice(i);\n child = this.parent.instruction(target, value);\n Array.prototype.push.apply(this.parent.children, removed);\n return this;\n };\n\n XMLNode.prototype.instructionAfter = function(target, value) {\n var child, i, removed;\n i = this.parent.children.indexOf(this);\n removed = this.parent.children.splice(i + 1);\n child = this.parent.instruction(target, value);\n Array.prototype.push.apply(this.parent.children, removed);\n return this;\n };\n\n XMLNode.prototype.declaration = function(version, encoding, standalone) {\n var doc, xmldec;\n doc = this.document();\n xmldec = new XMLDeclaration(doc, version, encoding, standalone);\n if (doc.children[0] instanceof XMLDeclaration) {\n doc.children[0] = xmldec;\n } else {\n doc.children.unshift(xmldec);\n }\n return doc.root() || doc;\n };\n\n XMLNode.prototype.doctype = function(pubID, sysID) {\n var child, doc, doctype, i, j, k, len, len1, ref1, ref2;\n doc = this.document();\n doctype = new XMLDocType(doc, pubID, sysID);\n ref1 = doc.children;\n for (i = j = 0, len = ref1.length; j < len; i = ++j) {\n child = ref1[i];\n if (child instanceof XMLDocType) {\n doc.children[i] = doctype;\n return doctype;\n }\n }\n ref2 = doc.children;\n for (i = k = 0, len1 = ref2.length; k < len1; i = ++k) {\n child = ref2[i];\n if (child.isRoot) {\n doc.children.splice(i, 0, doctype);\n return doctype;\n }\n }\n doc.children.push(doctype);\n return doctype;\n };\n\n XMLNode.prototype.up = function() {\n if (this.isRoot) {\n throw new Error(\"The root node has no parent. Use doc() if you need to get the document object.\");\n }\n return this.parent;\n };\n\n XMLNode.prototype.root = function() {\n var node;\n node = this;\n while (node) {\n if (node.isDocument) {\n return node.rootObject;\n } else if (node.isRoot) {\n return node;\n } else {\n node = node.parent;\n }\n }\n };\n\n XMLNode.prototype.document = function() {\n var node;\n node = this;\n while (node) {\n if (node.isDocument) {\n return node;\n } else {\n node = node.parent;\n }\n }\n };\n\n XMLNode.prototype.end = function(options) {\n return this.document().end(options);\n };\n\n XMLNode.prototype.prev = function() {\n var i;\n i = this.parent.children.indexOf(this);\n if (i < 1) {\n throw new Error(\"Already at the first node\");\n }\n return this.parent.children[i - 1];\n };\n\n XMLNode.prototype.next = function() {\n var i;\n i = this.parent.children.indexOf(this);\n if (i === -1 || i === this.parent.children.length - 1) {\n throw new Error(\"Already at the last node\");\n }\n return this.parent.children[i + 1];\n };\n\n XMLNode.prototype.importDocument = function(doc) {\n var clonedRoot;\n clonedRoot = doc.root().clone();\n clonedRoot.parent = this;\n clonedRoot.isRoot = false;\n this.children.push(clonedRoot);\n return this;\n };\n\n XMLNode.prototype.ele = function(name, attributes, text) {\n return this.element(name, attributes, text);\n };\n\n XMLNode.prototype.nod = function(name, attributes, text) {\n return this.node(name, attributes, text);\n };\n\n XMLNode.prototype.txt = function(value) {\n return this.text(value);\n };\n\n XMLNode.prototype.dat = function(value) {\n return this.cdata(value);\n };\n\n XMLNode.prototype.com = function(value) {\n return this.comment(value);\n };\n\n XMLNode.prototype.ins = function(target, value) {\n return this.instruction(target, value);\n };\n\n XMLNode.prototype.doc = function() {\n return this.document();\n };\n\n XMLNode.prototype.dec = function(version, encoding, standalone) {\n return this.declaration(version, encoding, standalone);\n };\n\n XMLNode.prototype.dtd = function(pubID, sysID) {\n return this.doctype(pubID, sysID);\n };\n\n XMLNode.prototype.e = function(name, attributes, text) {\n return this.element(name, attributes, text);\n };\n\n XMLNode.prototype.n = function(name, attributes, text) {\n return this.node(name, attributes, text);\n };\n\n XMLNode.prototype.t = function(value) {\n return this.text(value);\n };\n\n XMLNode.prototype.d = function(value) {\n return this.cdata(value);\n };\n\n XMLNode.prototype.c = function(value) {\n return this.comment(value);\n };\n\n XMLNode.prototype.r = function(value) {\n return this.raw(value);\n };\n\n XMLNode.prototype.i = function(target, value) {\n return this.instruction(target, value);\n };\n\n XMLNode.prototype.u = function() {\n return this.up();\n };\n\n XMLNode.prototype.importXMLBuilder = function(doc) {\n return this.importDocument(doc);\n };\n\n return XMLNode;\n\n })();\n\n}).call(this);\n", "// Generated by CoffeeScript 1.12.7\n(function() {\n var XMLStringifier,\n bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; },\n hasProp = {}.hasOwnProperty;\n\n module.exports = XMLStringifier = (function() {\n function XMLStringifier(options) {\n this.assertLegalChar = bind(this.assertLegalChar, this);\n var key, ref, value;\n options || (options = {});\n this.noDoubleEncoding = options.noDoubleEncoding;\n ref = options.stringify || {};\n for (key in ref) {\n if (!hasProp.call(ref, key)) continue;\n value = ref[key];\n this[key] = value;\n }\n }\n\n XMLStringifier.prototype.eleName = function(val) {\n val = '' + val || '';\n return this.assertLegalChar(val);\n };\n\n XMLStringifier.prototype.eleText = function(val) {\n val = '' + val || '';\n return this.assertLegalChar(this.elEscape(val));\n };\n\n XMLStringifier.prototype.cdata = function(val) {\n val = '' + val || '';\n val = val.replace(']]>', ']]]]>');\n return this.assertLegalChar(val);\n };\n\n XMLStringifier.prototype.comment = function(val) {\n val = '' + val || '';\n if (val.match(/--/)) {\n throw new Error(\"Comment text cannot contain double-hypen: \" + val);\n }\n return this.assertLegalChar(val);\n };\n\n XMLStringifier.prototype.raw = function(val) {\n return '' + val || '';\n };\n\n XMLStringifier.prototype.attName = function(val) {\n return val = '' + val || '';\n };\n\n XMLStringifier.prototype.attValue = function(val) {\n val = '' + val || '';\n return this.attEscape(val);\n };\n\n XMLStringifier.prototype.insTarget = function(val) {\n return '' + val || '';\n };\n\n XMLStringifier.prototype.insValue = function(val) {\n val = '' + val || '';\n if (val.match(/\\?>/)) {\n throw new Error(\"Invalid processing instruction value: \" + val);\n }\n return val;\n };\n\n XMLStringifier.prototype.xmlVersion = function(val) {\n val = '' + val || '';\n if (!val.match(/1\\.[0-9]+/)) {\n throw new Error(\"Invalid version number: \" + val);\n }\n return val;\n };\n\n XMLStringifier.prototype.xmlEncoding = function(val) {\n val = '' + val || '';\n if (!val.match(/^[A-Za-z](?:[A-Za-z0-9._-])*$/)) {\n throw new Error(\"Invalid encoding: \" + val);\n }\n return val;\n };\n\n XMLStringifier.prototype.xmlStandalone = function(val) {\n if (val) {\n return \"yes\";\n } else {\n return \"no\";\n }\n };\n\n XMLStringifier.prototype.dtdPubID = function(val) {\n return '' + val || '';\n };\n\n XMLStringifier.prototype.dtdSysID = function(val) {\n return '' + val || '';\n };\n\n XMLStringifier.prototype.dtdElementValue = function(val) {\n return '' + val || '';\n };\n\n XMLStringifier.prototype.dtdAttType = function(val) {\n return '' + val || '';\n };\n\n XMLStringifier.prototype.dtdAttDefault = function(val) {\n if (val != null) {\n return '' + val || '';\n } else {\n return val;\n }\n };\n\n XMLStringifier.prototype.dtdEntityValue = function(val) {\n return '' + val || '';\n };\n\n XMLStringifier.prototype.dtdNData = function(val) {\n return '' + val || '';\n };\n\n XMLStringifier.prototype.convertAttKey = '@';\n\n XMLStringifier.prototype.convertPIKey = '?';\n\n XMLStringifier.prototype.convertTextKey = '#text';\n\n XMLStringifier.prototype.convertCDataKey = '#cdata';\n\n XMLStringifier.prototype.convertCommentKey = '#comment';\n\n XMLStringifier.prototype.convertRawKey = '#raw';\n\n XMLStringifier.prototype.assertLegalChar = function(str) {\n var res;\n res = str.match(/[\\0\\uFFFE\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF]/);\n if (res) {\n throw new Error(\"Invalid character in string: \" + str + \" at index \" + res.index);\n }\n return str;\n };\n\n XMLStringifier.prototype.elEscape = function(str) {\n var ampregex;\n ampregex = this.noDoubleEncoding ? /(?!&\\S+;)&/g : /&/g;\n return str.replace(ampregex, '&').replace(//g, '>').replace(/\\r/g, ' ');\n };\n\n XMLStringifier.prototype.attEscape = function(str) {\n var ampregex;\n ampregex = this.noDoubleEncoding ? /(?!&\\S+;)&/g : /&/g;\n return str.replace(ampregex, '&').replace(/ 0) {\n return new Array(indent).join(this.indent);\n } else {\n return '';\n }\n } else {\n return '';\n }\n };\n\n return XMLWriterBase;\n\n })();\n\n}).call(this);\n", "// Generated by CoffeeScript 1.12.7\n(function() {\n var XMLCData, XMLComment, XMLDTDAttList, XMLDTDElement, XMLDTDEntity, XMLDTDNotation, XMLDeclaration, XMLDocType, XMLElement, XMLProcessingInstruction, XMLRaw, XMLStringWriter, XMLText, XMLWriterBase,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n XMLDeclaration = require('./XMLDeclaration');\n\n XMLDocType = require('./XMLDocType');\n\n XMLCData = require('./XMLCData');\n\n XMLComment = require('./XMLComment');\n\n XMLElement = require('./XMLElement');\n\n XMLRaw = require('./XMLRaw');\n\n XMLText = require('./XMLText');\n\n XMLProcessingInstruction = require('./XMLProcessingInstruction');\n\n XMLDTDAttList = require('./XMLDTDAttList');\n\n XMLDTDElement = require('./XMLDTDElement');\n\n XMLDTDEntity = require('./XMLDTDEntity');\n\n XMLDTDNotation = require('./XMLDTDNotation');\n\n XMLWriterBase = require('./XMLWriterBase');\n\n module.exports = XMLStringWriter = (function(superClass) {\n extend(XMLStringWriter, superClass);\n\n function XMLStringWriter(options) {\n XMLStringWriter.__super__.constructor.call(this, options);\n }\n\n XMLStringWriter.prototype.document = function(doc) {\n var child, i, len, r, ref;\n this.textispresent = false;\n r = '';\n ref = doc.children;\n for (i = 0, len = ref.length; i < len; i++) {\n child = ref[i];\n r += (function() {\n switch (false) {\n case !(child instanceof XMLDeclaration):\n return this.declaration(child);\n case !(child instanceof XMLDocType):\n return this.docType(child);\n case !(child instanceof XMLComment):\n return this.comment(child);\n case !(child instanceof XMLProcessingInstruction):\n return this.processingInstruction(child);\n default:\n return this.element(child, 0);\n }\n }).call(this);\n }\n if (this.pretty && r.slice(-this.newline.length) === this.newline) {\n r = r.slice(0, -this.newline.length);\n }\n return r;\n };\n\n XMLStringWriter.prototype.attribute = function(att) {\n return ' ' + att.name + '=\"' + att.value + '\"';\n };\n\n XMLStringWriter.prototype.cdata = function(node, level) {\n return this.space(level) + '' + this.newline;\n };\n\n XMLStringWriter.prototype.comment = function(node, level) {\n return this.space(level) + '' + this.newline;\n };\n\n XMLStringWriter.prototype.declaration = function(node, level) {\n var r;\n r = this.space(level);\n r += '';\n r += this.newline;\n return r;\n };\n\n XMLStringWriter.prototype.docType = function(node, level) {\n var child, i, len, r, ref;\n level || (level = 0);\n r = this.space(level);\n r += ' 0) {\n r += ' [';\n r += this.newline;\n ref = node.children;\n for (i = 0, len = ref.length; i < len; i++) {\n child = ref[i];\n r += (function() {\n switch (false) {\n case !(child instanceof XMLDTDAttList):\n return this.dtdAttList(child, level + 1);\n case !(child instanceof XMLDTDElement):\n return this.dtdElement(child, level + 1);\n case !(child instanceof XMLDTDEntity):\n return this.dtdEntity(child, level + 1);\n case !(child instanceof XMLDTDNotation):\n return this.dtdNotation(child, level + 1);\n case !(child instanceof XMLCData):\n return this.cdata(child, level + 1);\n case !(child instanceof XMLComment):\n return this.comment(child, level + 1);\n case !(child instanceof XMLProcessingInstruction):\n return this.processingInstruction(child, level + 1);\n default:\n throw new Error(\"Unknown DTD node type: \" + child.constructor.name);\n }\n }).call(this);\n }\n r += ']';\n }\n r += this.spacebeforeslash + '>';\n r += this.newline;\n return r;\n };\n\n XMLStringWriter.prototype.element = function(node, level) {\n var att, child, i, j, len, len1, name, r, ref, ref1, ref2, space, textispresentwasset;\n level || (level = 0);\n textispresentwasset = false;\n if (this.textispresent) {\n this.newline = '';\n this.pretty = false;\n } else {\n this.newline = this.newlinedefault;\n this.pretty = this.prettydefault;\n }\n space = this.space(level);\n r = '';\n r += space + '<' + node.name;\n ref = node.attributes;\n for (name in ref) {\n if (!hasProp.call(ref, name)) continue;\n att = ref[name];\n r += this.attribute(att);\n }\n if (node.children.length === 0 || node.children.every(function(e) {\n return e.value === '';\n })) {\n if (this.allowEmpty) {\n r += '>' + this.newline;\n } else {\n r += this.spacebeforeslash + '/>' + this.newline;\n }\n } else if (this.pretty && node.children.length === 1 && (node.children[0].value != null)) {\n r += '>';\n r += node.children[0].value;\n r += '' + this.newline;\n } else {\n if (this.dontprettytextnodes) {\n ref1 = node.children;\n for (i = 0, len = ref1.length; i < len; i++) {\n child = ref1[i];\n if (child.value != null) {\n this.textispresent++;\n textispresentwasset = true;\n break;\n }\n }\n }\n if (this.textispresent) {\n this.newline = '';\n this.pretty = false;\n space = this.space(level);\n }\n r += '>' + this.newline;\n ref2 = node.children;\n for (j = 0, len1 = ref2.length; j < len1; j++) {\n child = ref2[j];\n r += (function() {\n switch (false) {\n case !(child instanceof XMLCData):\n return this.cdata(child, level + 1);\n case !(child instanceof XMLComment):\n return this.comment(child, level + 1);\n case !(child instanceof XMLElement):\n return this.element(child, level + 1);\n case !(child instanceof XMLRaw):\n return this.raw(child, level + 1);\n case !(child instanceof XMLText):\n return this.text(child, level + 1);\n case !(child instanceof XMLProcessingInstruction):\n return this.processingInstruction(child, level + 1);\n default:\n throw new Error(\"Unknown XML node type: \" + child.constructor.name);\n }\n }).call(this);\n }\n if (textispresentwasset) {\n this.textispresent--;\n }\n if (!this.textispresent) {\n this.newline = this.newlinedefault;\n this.pretty = this.prettydefault;\n }\n r += space + '' + this.newline;\n }\n return r;\n };\n\n XMLStringWriter.prototype.processingInstruction = function(node, level) {\n var r;\n r = this.space(level) + '' + this.newline;\n return r;\n };\n\n XMLStringWriter.prototype.raw = function(node, level) {\n return this.space(level) + node.value + this.newline;\n };\n\n XMLStringWriter.prototype.text = function(node, level) {\n return this.space(level) + node.value + this.newline;\n };\n\n XMLStringWriter.prototype.dtdAttList = function(node, level) {\n var r;\n r = this.space(level) + '' + this.newline;\n return r;\n };\n\n XMLStringWriter.prototype.dtdElement = function(node, level) {\n return this.space(level) + '' + this.newline;\n };\n\n XMLStringWriter.prototype.dtdEntity = function(node, level) {\n var r;\n r = this.space(level) + '' + this.newline;\n return r;\n };\n\n XMLStringWriter.prototype.dtdNotation = function(node, level) {\n var r;\n r = this.space(level) + '' + this.newline;\n return r;\n };\n\n XMLStringWriter.prototype.openNode = function(node, level) {\n var att, name, r, ref;\n level || (level = 0);\n if (node instanceof XMLElement) {\n r = this.space(level) + '<' + node.name;\n ref = node.attributes;\n for (name in ref) {\n if (!hasProp.call(ref, name)) continue;\n att = ref[name];\n r += this.attribute(att);\n }\n r += (node.children ? '>' : '/>') + this.newline;\n return r;\n } else {\n r = this.space(level) + '') + this.newline;\n return r;\n }\n };\n\n XMLStringWriter.prototype.closeNode = function(node, level) {\n level || (level = 0);\n switch (false) {\n case !(node instanceof XMLElement):\n return this.space(level) + '' + this.newline;\n case !(node instanceof XMLDocType):\n return this.space(level) + ']>' + this.newline;\n }\n };\n\n return XMLStringWriter;\n\n })(XMLWriterBase);\n\n}).call(this);\n", "// Generated by CoffeeScript 1.12.7\n(function() {\n var XMLDocument, XMLNode, XMLStringWriter, XMLStringifier, isPlainObject,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n isPlainObject = require('./Utility').isPlainObject;\n\n XMLNode = require('./XMLNode');\n\n XMLStringifier = require('./XMLStringifier');\n\n XMLStringWriter = require('./XMLStringWriter');\n\n module.exports = XMLDocument = (function(superClass) {\n extend(XMLDocument, superClass);\n\n function XMLDocument(options) {\n XMLDocument.__super__.constructor.call(this, null);\n options || (options = {});\n if (!options.writer) {\n options.writer = new XMLStringWriter();\n }\n this.options = options;\n this.stringify = new XMLStringifier(options);\n this.isDocument = true;\n }\n\n XMLDocument.prototype.end = function(writer) {\n var writerOptions;\n if (!writer) {\n writer = this.options.writer;\n } else if (isPlainObject(writer)) {\n writerOptions = writer;\n writer = this.options.writer.set(writerOptions);\n }\n return writer.document(this);\n };\n\n XMLDocument.prototype.toString = function(options) {\n return this.options.writer.set(options).document(this);\n };\n\n return XMLDocument;\n\n })(XMLNode);\n\n}).call(this);\n", "// Generated by CoffeeScript 1.12.7\n(function() {\n var XMLAttribute, XMLCData, XMLComment, XMLDTDAttList, XMLDTDElement, XMLDTDEntity, XMLDTDNotation, XMLDeclaration, XMLDocType, XMLDocumentCB, XMLElement, XMLProcessingInstruction, XMLRaw, XMLStringWriter, XMLStringifier, XMLText, isFunction, isObject, isPlainObject, ref,\n hasProp = {}.hasOwnProperty;\n\n ref = require('./Utility'), isObject = ref.isObject, isFunction = ref.isFunction, isPlainObject = ref.isPlainObject;\n\n XMLElement = require('./XMLElement');\n\n XMLCData = require('./XMLCData');\n\n XMLComment = require('./XMLComment');\n\n XMLRaw = require('./XMLRaw');\n\n XMLText = require('./XMLText');\n\n XMLProcessingInstruction = require('./XMLProcessingInstruction');\n\n XMLDeclaration = require('./XMLDeclaration');\n\n XMLDocType = require('./XMLDocType');\n\n XMLDTDAttList = require('./XMLDTDAttList');\n\n XMLDTDEntity = require('./XMLDTDEntity');\n\n XMLDTDElement = require('./XMLDTDElement');\n\n XMLDTDNotation = require('./XMLDTDNotation');\n\n XMLAttribute = require('./XMLAttribute');\n\n XMLStringifier = require('./XMLStringifier');\n\n XMLStringWriter = require('./XMLStringWriter');\n\n module.exports = XMLDocumentCB = (function() {\n function XMLDocumentCB(options, onData, onEnd) {\n var writerOptions;\n options || (options = {});\n if (!options.writer) {\n options.writer = new XMLStringWriter(options);\n } else if (isPlainObject(options.writer)) {\n writerOptions = options.writer;\n options.writer = new XMLStringWriter(writerOptions);\n }\n this.options = options;\n this.writer = options.writer;\n this.stringify = new XMLStringifier(options);\n this.onDataCallback = onData || function() {};\n this.onEndCallback = onEnd || function() {};\n this.currentNode = null;\n this.currentLevel = -1;\n this.openTags = {};\n this.documentStarted = false;\n this.documentCompleted = false;\n this.root = null;\n }\n\n XMLDocumentCB.prototype.node = function(name, attributes, text) {\n var ref1;\n if (name == null) {\n throw new Error(\"Missing node name\");\n }\n if (this.root && this.currentLevel === -1) {\n throw new Error(\"Document can only have one root node\");\n }\n this.openCurrent();\n name = name.valueOf();\n if (attributes == null) {\n attributes = {};\n }\n attributes = attributes.valueOf();\n if (!isObject(attributes)) {\n ref1 = [attributes, text], text = ref1[0], attributes = ref1[1];\n }\n this.currentNode = new XMLElement(this, name, attributes);\n this.currentNode.children = false;\n this.currentLevel++;\n this.openTags[this.currentLevel] = this.currentNode;\n if (text != null) {\n this.text(text);\n }\n return this;\n };\n\n XMLDocumentCB.prototype.element = function(name, attributes, text) {\n if (this.currentNode && this.currentNode instanceof XMLDocType) {\n return this.dtdElement.apply(this, arguments);\n } else {\n return this.node(name, attributes, text);\n }\n };\n\n XMLDocumentCB.prototype.attribute = function(name, value) {\n var attName, attValue;\n if (!this.currentNode || this.currentNode.children) {\n throw new Error(\"att() can only be used immediately after an ele() call in callback mode\");\n }\n if (name != null) {\n name = name.valueOf();\n }\n if (isObject(name)) {\n for (attName in name) {\n if (!hasProp.call(name, attName)) continue;\n attValue = name[attName];\n this.attribute(attName, attValue);\n }\n } else {\n if (isFunction(value)) {\n value = value.apply();\n }\n if (!this.options.skipNullAttributes || (value != null)) {\n this.currentNode.attributes[name] = new XMLAttribute(this, name, value);\n }\n }\n return this;\n };\n\n XMLDocumentCB.prototype.text = function(value) {\n var node;\n this.openCurrent();\n node = new XMLText(this, value);\n this.onData(this.writer.text(node, this.currentLevel + 1));\n return this;\n };\n\n XMLDocumentCB.prototype.cdata = function(value) {\n var node;\n this.openCurrent();\n node = new XMLCData(this, value);\n this.onData(this.writer.cdata(node, this.currentLevel + 1));\n return this;\n };\n\n XMLDocumentCB.prototype.comment = function(value) {\n var node;\n this.openCurrent();\n node = new XMLComment(this, value);\n this.onData(this.writer.comment(node, this.currentLevel + 1));\n return this;\n };\n\n XMLDocumentCB.prototype.raw = function(value) {\n var node;\n this.openCurrent();\n node = new XMLRaw(this, value);\n this.onData(this.writer.raw(node, this.currentLevel + 1));\n return this;\n };\n\n XMLDocumentCB.prototype.instruction = function(target, value) {\n var i, insTarget, insValue, len, node;\n this.openCurrent();\n if (target != null) {\n target = target.valueOf();\n }\n if (value != null) {\n value = value.valueOf();\n }\n if (Array.isArray(target)) {\n for (i = 0, len = target.length; i < len; i++) {\n insTarget = target[i];\n this.instruction(insTarget);\n }\n } else if (isObject(target)) {\n for (insTarget in target) {\n if (!hasProp.call(target, insTarget)) continue;\n insValue = target[insTarget];\n this.instruction(insTarget, insValue);\n }\n } else {\n if (isFunction(value)) {\n value = value.apply();\n }\n node = new XMLProcessingInstruction(this, target, value);\n this.onData(this.writer.processingInstruction(node, this.currentLevel + 1));\n }\n return this;\n };\n\n XMLDocumentCB.prototype.declaration = function(version, encoding, standalone) {\n var node;\n this.openCurrent();\n if (this.documentStarted) {\n throw new Error(\"declaration() must be the first node\");\n }\n node = new XMLDeclaration(this, version, encoding, standalone);\n this.onData(this.writer.declaration(node, this.currentLevel + 1));\n return this;\n };\n\n XMLDocumentCB.prototype.doctype = function(root, pubID, sysID) {\n this.openCurrent();\n if (root == null) {\n throw new Error(\"Missing root node name\");\n }\n if (this.root) {\n throw new Error(\"dtd() must come before the root node\");\n }\n this.currentNode = new XMLDocType(this, pubID, sysID);\n this.currentNode.rootNodeName = root;\n this.currentNode.children = false;\n this.currentLevel++;\n this.openTags[this.currentLevel] = this.currentNode;\n return this;\n };\n\n XMLDocumentCB.prototype.dtdElement = function(name, value) {\n var node;\n this.openCurrent();\n node = new XMLDTDElement(this, name, value);\n this.onData(this.writer.dtdElement(node, this.currentLevel + 1));\n return this;\n };\n\n XMLDocumentCB.prototype.attList = function(elementName, attributeName, attributeType, defaultValueType, defaultValue) {\n var node;\n this.openCurrent();\n node = new XMLDTDAttList(this, elementName, attributeName, attributeType, defaultValueType, defaultValue);\n this.onData(this.writer.dtdAttList(node, this.currentLevel + 1));\n return this;\n };\n\n XMLDocumentCB.prototype.entity = function(name, value) {\n var node;\n this.openCurrent();\n node = new XMLDTDEntity(this, false, name, value);\n this.onData(this.writer.dtdEntity(node, this.currentLevel + 1));\n return this;\n };\n\n XMLDocumentCB.prototype.pEntity = function(name, value) {\n var node;\n this.openCurrent();\n node = new XMLDTDEntity(this, true, name, value);\n this.onData(this.writer.dtdEntity(node, this.currentLevel + 1));\n return this;\n };\n\n XMLDocumentCB.prototype.notation = function(name, value) {\n var node;\n this.openCurrent();\n node = new XMLDTDNotation(this, name, value);\n this.onData(this.writer.dtdNotation(node, this.currentLevel + 1));\n return this;\n };\n\n XMLDocumentCB.prototype.up = function() {\n if (this.currentLevel < 0) {\n throw new Error(\"The document node has no parent\");\n }\n if (this.currentNode) {\n if (this.currentNode.children) {\n this.closeNode(this.currentNode);\n } else {\n this.openNode(this.currentNode);\n }\n this.currentNode = null;\n } else {\n this.closeNode(this.openTags[this.currentLevel]);\n }\n delete this.openTags[this.currentLevel];\n this.currentLevel--;\n return this;\n };\n\n XMLDocumentCB.prototype.end = function() {\n while (this.currentLevel >= 0) {\n this.up();\n }\n return this.onEnd();\n };\n\n XMLDocumentCB.prototype.openCurrent = function() {\n if (this.currentNode) {\n this.currentNode.children = true;\n return this.openNode(this.currentNode);\n }\n };\n\n XMLDocumentCB.prototype.openNode = function(node) {\n if (!node.isOpen) {\n if (!this.root && this.currentLevel === 0 && node instanceof XMLElement) {\n this.root = node;\n }\n this.onData(this.writer.openNode(node, this.currentLevel));\n return node.isOpen = true;\n }\n };\n\n XMLDocumentCB.prototype.closeNode = function(node) {\n if (!node.isClosed) {\n this.onData(this.writer.closeNode(node, this.currentLevel));\n return node.isClosed = true;\n }\n };\n\n XMLDocumentCB.prototype.onData = function(chunk) {\n this.documentStarted = true;\n return this.onDataCallback(chunk);\n };\n\n XMLDocumentCB.prototype.onEnd = function() {\n this.documentCompleted = true;\n return this.onEndCallback();\n };\n\n XMLDocumentCB.prototype.ele = function() {\n return this.element.apply(this, arguments);\n };\n\n XMLDocumentCB.prototype.nod = function(name, attributes, text) {\n return this.node(name, attributes, text);\n };\n\n XMLDocumentCB.prototype.txt = function(value) {\n return this.text(value);\n };\n\n XMLDocumentCB.prototype.dat = function(value) {\n return this.cdata(value);\n };\n\n XMLDocumentCB.prototype.com = function(value) {\n return this.comment(value);\n };\n\n XMLDocumentCB.prototype.ins = function(target, value) {\n return this.instruction(target, value);\n };\n\n XMLDocumentCB.prototype.dec = function(version, encoding, standalone) {\n return this.declaration(version, encoding, standalone);\n };\n\n XMLDocumentCB.prototype.dtd = function(root, pubID, sysID) {\n return this.doctype(root, pubID, sysID);\n };\n\n XMLDocumentCB.prototype.e = function(name, attributes, text) {\n return this.element(name, attributes, text);\n };\n\n XMLDocumentCB.prototype.n = function(name, attributes, text) {\n return this.node(name, attributes, text);\n };\n\n XMLDocumentCB.prototype.t = function(value) {\n return this.text(value);\n };\n\n XMLDocumentCB.prototype.d = function(value) {\n return this.cdata(value);\n };\n\n XMLDocumentCB.prototype.c = function(value) {\n return this.comment(value);\n };\n\n XMLDocumentCB.prototype.r = function(value) {\n return this.raw(value);\n };\n\n XMLDocumentCB.prototype.i = function(target, value) {\n return this.instruction(target, value);\n };\n\n XMLDocumentCB.prototype.att = function() {\n if (this.currentNode && this.currentNode instanceof XMLDocType) {\n return this.attList.apply(this, arguments);\n } else {\n return this.attribute.apply(this, arguments);\n }\n };\n\n XMLDocumentCB.prototype.a = function() {\n if (this.currentNode && this.currentNode instanceof XMLDocType) {\n return this.attList.apply(this, arguments);\n } else {\n return this.attribute.apply(this, arguments);\n }\n };\n\n XMLDocumentCB.prototype.ent = function(name, value) {\n return this.entity(name, value);\n };\n\n XMLDocumentCB.prototype.pent = function(name, value) {\n return this.pEntity(name, value);\n };\n\n XMLDocumentCB.prototype.not = function(name, value) {\n return this.notation(name, value);\n };\n\n return XMLDocumentCB;\n\n })();\n\n}).call(this);\n", "// Generated by CoffeeScript 1.12.7\n(function() {\n var XMLCData, XMLComment, XMLDTDAttList, XMLDTDElement, XMLDTDEntity, XMLDTDNotation, XMLDeclaration, XMLDocType, XMLElement, XMLProcessingInstruction, XMLRaw, XMLStreamWriter, XMLText, XMLWriterBase,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n XMLDeclaration = require('./XMLDeclaration');\n\n XMLDocType = require('./XMLDocType');\n\n XMLCData = require('./XMLCData');\n\n XMLComment = require('./XMLComment');\n\n XMLElement = require('./XMLElement');\n\n XMLRaw = require('./XMLRaw');\n\n XMLText = require('./XMLText');\n\n XMLProcessingInstruction = require('./XMLProcessingInstruction');\n\n XMLDTDAttList = require('./XMLDTDAttList');\n\n XMLDTDElement = require('./XMLDTDElement');\n\n XMLDTDEntity = require('./XMLDTDEntity');\n\n XMLDTDNotation = require('./XMLDTDNotation');\n\n XMLWriterBase = require('./XMLWriterBase');\n\n module.exports = XMLStreamWriter = (function(superClass) {\n extend(XMLStreamWriter, superClass);\n\n function XMLStreamWriter(stream, options) {\n XMLStreamWriter.__super__.constructor.call(this, options);\n this.stream = stream;\n }\n\n XMLStreamWriter.prototype.document = function(doc) {\n var child, i, j, len, len1, ref, ref1, results;\n ref = doc.children;\n for (i = 0, len = ref.length; i < len; i++) {\n child = ref[i];\n child.isLastRootNode = false;\n }\n doc.children[doc.children.length - 1].isLastRootNode = true;\n ref1 = doc.children;\n results = [];\n for (j = 0, len1 = ref1.length; j < len1; j++) {\n child = ref1[j];\n switch (false) {\n case !(child instanceof XMLDeclaration):\n results.push(this.declaration(child));\n break;\n case !(child instanceof XMLDocType):\n results.push(this.docType(child));\n break;\n case !(child instanceof XMLComment):\n results.push(this.comment(child));\n break;\n case !(child instanceof XMLProcessingInstruction):\n results.push(this.processingInstruction(child));\n break;\n default:\n results.push(this.element(child));\n }\n }\n return results;\n };\n\n XMLStreamWriter.prototype.attribute = function(att) {\n return this.stream.write(' ' + att.name + '=\"' + att.value + '\"');\n };\n\n XMLStreamWriter.prototype.cdata = function(node, level) {\n return this.stream.write(this.space(level) + '' + this.endline(node));\n };\n\n XMLStreamWriter.prototype.comment = function(node, level) {\n return this.stream.write(this.space(level) + '' + this.endline(node));\n };\n\n XMLStreamWriter.prototype.declaration = function(node, level) {\n this.stream.write(this.space(level));\n this.stream.write('');\n return this.stream.write(this.endline(node));\n };\n\n XMLStreamWriter.prototype.docType = function(node, level) {\n var child, i, len, ref;\n level || (level = 0);\n this.stream.write(this.space(level));\n this.stream.write(' 0) {\n this.stream.write(' [');\n this.stream.write(this.endline(node));\n ref = node.children;\n for (i = 0, len = ref.length; i < len; i++) {\n child = ref[i];\n switch (false) {\n case !(child instanceof XMLDTDAttList):\n this.dtdAttList(child, level + 1);\n break;\n case !(child instanceof XMLDTDElement):\n this.dtdElement(child, level + 1);\n break;\n case !(child instanceof XMLDTDEntity):\n this.dtdEntity(child, level + 1);\n break;\n case !(child instanceof XMLDTDNotation):\n this.dtdNotation(child, level + 1);\n break;\n case !(child instanceof XMLCData):\n this.cdata(child, level + 1);\n break;\n case !(child instanceof XMLComment):\n this.comment(child, level + 1);\n break;\n case !(child instanceof XMLProcessingInstruction):\n this.processingInstruction(child, level + 1);\n break;\n default:\n throw new Error(\"Unknown DTD node type: \" + child.constructor.name);\n }\n }\n this.stream.write(']');\n }\n this.stream.write(this.spacebeforeslash + '>');\n return this.stream.write(this.endline(node));\n };\n\n XMLStreamWriter.prototype.element = function(node, level) {\n var att, child, i, len, name, ref, ref1, space;\n level || (level = 0);\n space = this.space(level);\n this.stream.write(space + '<' + node.name);\n ref = node.attributes;\n for (name in ref) {\n if (!hasProp.call(ref, name)) continue;\n att = ref[name];\n this.attribute(att);\n }\n if (node.children.length === 0 || node.children.every(function(e) {\n return e.value === '';\n })) {\n if (this.allowEmpty) {\n this.stream.write('>');\n } else {\n this.stream.write(this.spacebeforeslash + '/>');\n }\n } else if (this.pretty && node.children.length === 1 && (node.children[0].value != null)) {\n this.stream.write('>');\n this.stream.write(node.children[0].value);\n this.stream.write('');\n } else {\n this.stream.write('>' + this.newline);\n ref1 = node.children;\n for (i = 0, len = ref1.length; i < len; i++) {\n child = ref1[i];\n switch (false) {\n case !(child instanceof XMLCData):\n this.cdata(child, level + 1);\n break;\n case !(child instanceof XMLComment):\n this.comment(child, level + 1);\n break;\n case !(child instanceof XMLElement):\n this.element(child, level + 1);\n break;\n case !(child instanceof XMLRaw):\n this.raw(child, level + 1);\n break;\n case !(child instanceof XMLText):\n this.text(child, level + 1);\n break;\n case !(child instanceof XMLProcessingInstruction):\n this.processingInstruction(child, level + 1);\n break;\n default:\n throw new Error(\"Unknown XML node type: \" + child.constructor.name);\n }\n }\n this.stream.write(space + '');\n }\n return this.stream.write(this.endline(node));\n };\n\n XMLStreamWriter.prototype.processingInstruction = function(node, level) {\n this.stream.write(this.space(level) + '' + this.endline(node));\n };\n\n XMLStreamWriter.prototype.raw = function(node, level) {\n return this.stream.write(this.space(level) + node.value + this.endline(node));\n };\n\n XMLStreamWriter.prototype.text = function(node, level) {\n return this.stream.write(this.space(level) + node.value + this.endline(node));\n };\n\n XMLStreamWriter.prototype.dtdAttList = function(node, level) {\n this.stream.write(this.space(level) + '' + this.endline(node));\n };\n\n XMLStreamWriter.prototype.dtdElement = function(node, level) {\n this.stream.write(this.space(level) + '' + this.endline(node));\n };\n\n XMLStreamWriter.prototype.dtdEntity = function(node, level) {\n this.stream.write(this.space(level) + '' + this.endline(node));\n };\n\n XMLStreamWriter.prototype.dtdNotation = function(node, level) {\n this.stream.write(this.space(level) + '' + this.endline(node));\n };\n\n XMLStreamWriter.prototype.endline = function(node) {\n if (!node.isLastRootNode) {\n return this.newline;\n } else {\n return '';\n }\n };\n\n return XMLStreamWriter;\n\n })(XMLWriterBase);\n\n}).call(this);\n", "// Generated by CoffeeScript 1.12.7\n(function() {\n var XMLDocument, XMLDocumentCB, XMLStreamWriter, XMLStringWriter, assign, isFunction, ref;\n\n ref = require('./Utility'), assign = ref.assign, isFunction = ref.isFunction;\n\n XMLDocument = require('./XMLDocument');\n\n XMLDocumentCB = require('./XMLDocumentCB');\n\n XMLStringWriter = require('./XMLStringWriter');\n\n XMLStreamWriter = require('./XMLStreamWriter');\n\n module.exports.create = function(name, xmldec, doctype, options) {\n var doc, root;\n if (name == null) {\n throw new Error(\"Root element needs a name\");\n }\n options = assign({}, xmldec, doctype, options);\n doc = new XMLDocument(options);\n root = doc.element(name);\n if (!options.headless) {\n doc.declaration(options);\n if ((options.pubID != null) || (options.sysID != null)) {\n doc.doctype(options);\n }\n }\n return root;\n };\n\n module.exports.begin = function(options, onData, onEnd) {\n var ref1;\n if (isFunction(options)) {\n ref1 = [options, onData], onData = ref1[0], onEnd = ref1[1];\n options = {};\n }\n if (onData) {\n return new XMLDocumentCB(options, onData, onEnd);\n } else {\n return new XMLDocument(options);\n }\n };\n\n module.exports.stringWriter = function(options) {\n return new XMLStringWriter(options);\n };\n\n module.exports.streamWriter = function(stream, options) {\n return new XMLStreamWriter(stream, options);\n };\n\n}).call(this);\n", "/**\n * Module dependencies.\n */\n\nvar base64 = require('base64-js');\nvar xmlbuilder = require('xmlbuilder');\n\n/**\n * Module exports.\n */\n\nexports.build = build;\n\n/**\n * Accepts a `Date` instance and returns an ISO date string.\n *\n * @param {Date} d - Date instance to serialize\n * @returns {String} ISO date string representation of `d`\n * @api private\n */\n\nfunction ISODateString(d){\n function pad(n){\n return n < 10 ? '0' + n : n;\n }\n return d.getUTCFullYear()+'-'\n + pad(d.getUTCMonth()+1)+'-'\n + pad(d.getUTCDate())+'T'\n + pad(d.getUTCHours())+':'\n + pad(d.getUTCMinutes())+':'\n + pad(d.getUTCSeconds())+'Z';\n}\n\n/**\n * Returns the internal \"type\" of `obj` via the\n * `Object.prototype.toString()` trick.\n *\n * @param {Mixed} obj - any value\n * @returns {String} the internal \"type\" name\n * @api private\n */\n\nvar toString = Object.prototype.toString;\nfunction type (obj) {\n var m = toString.call(obj).match(/\\[object (.*)\\]/);\n return m ? m[1] : m;\n}\n\n/**\n * Generate an XML plist string from the input object `obj`.\n *\n * @param {Object} obj - the object to convert\n * @param {Object} [opts] - optional options object\n * @returns {String} converted plist XML string\n * @api public\n */\n\nfunction build (obj, opts) {\n var XMLHDR = {\n version: '1.0',\n encoding: 'UTF-8'\n };\n\n var XMLDTD = {\n pubid: '-//Apple//DTD PLIST 1.0//EN',\n sysid: 'http://www.apple.com/DTDs/PropertyList-1.0.dtd'\n };\n\n var doc = xmlbuilder.create('plist');\n\n doc.dec(XMLHDR.version, XMLHDR.encoding, XMLHDR.standalone);\n doc.dtd(XMLDTD.pubid, XMLDTD.sysid);\n doc.att('version', '1.0');\n\n walk_obj(obj, doc);\n\n if (!opts) opts = {};\n // default `pretty` to `true`\n opts.pretty = opts.pretty !== false;\n return doc.end(opts);\n}\n\n/**\n * depth first, recursive traversal of a javascript object. when complete,\n * next_child contains a reference to the build XML object.\n *\n * @api private\n */\n\nfunction walk_obj(next, next_child) {\n var tag_type, i, prop;\n var name = type(next);\n\n if ('Undefined' == name) {\n return;\n } else if (Array.isArray(next)) {\n next_child = next_child.ele('array');\n for (i = 0; i < next.length; i++) {\n walk_obj(next[i], next_child);\n }\n\n } else if (Buffer.isBuffer(next)) {\n next_child.ele('data').raw(next.toString('base64'));\n\n } else if ('Object' == name) {\n next_child = next_child.ele('dict');\n for (prop in next) {\n if (next.hasOwnProperty(prop)) {\n next_child.ele('key').txt(prop);\n walk_obj(next[prop], next_child);\n }\n }\n\n } else if ('Number' == name) {\n // detect if this is an integer or real\n // TODO: add an ability to force one way or another via a \"cast\"\n tag_type = (next % 1 === 0) ? 'integer' : 'real';\n next_child.ele(tag_type).txt(next.toString());\n\n } else if ('Date' == name) {\n next_child.ele('date').txt(ISODateString(new Date(next)));\n\n } else if ('Boolean' == name) {\n next_child.ele(next ? 'true' : 'false');\n\n } else if ('String' == name) {\n next_child.ele('string').txt(next);\n\n } else if ('ArrayBuffer' == name) {\n next_child.ele('data').raw(base64.fromByteArray(next));\n\n } else if (next && next.buffer && 'ArrayBuffer' == type(next.buffer)) {\n // a typed array\n next_child.ele('data').raw(base64.fromByteArray(new Uint8Array(next.buffer), next_child));\n\n }\n}\n", "/**\n * Parser functions.\n */\n\nvar parserFunctions = require('./lib/parse');\nObject.keys(parserFunctions).forEach(function (k) { exports[k] = parserFunctions[k]; });\n\n/**\n * Builder functions.\n */\n\nvar builderFunctions = require('./lib/build');\nObject.keys(builderFunctions).forEach(function (k) { exports[k] = builderFunctions[k]; });\n", "const bplistParser = require('bplist-parser')\nconst bplistCreator = require('bplist-creator')\nconst plist = require('plist')\nconst fs = require('fs')\n\nfunction parse(aStringOrBuffer, aFile) {\n const firstByte = aStringOrBuffer[0]\n let results\n try {\n if (firstByte === 60 || firstByte === '<') {\n results = plist.parse(aStringOrBuffer.toString())\n } else if (firstByte === 98) {\n ;[results] = bplistParser.parseBuffer(aStringOrBuffer)\n } else if (aFile != null) {\n throw new Error(`Unable to determine format for '${aFile}'`)\n } else {\n throw new Error('Unable to determine format for plist aStringOrBuffer')\n }\n } catch (error) {\n throw new Error(error)\n }\n return results\n}\n\nfunction readFileSync(aFile) {\n const contents = fs.readFileSync(aFile)\n if (contents.length === 0) {\n return {}\n }\n return parse(contents, aFile)\n}\n\nfunction readFile(aFile, callback) {\n fs.readFile(aFile, (err, contents) => {\n if (err) {\n return callback(err)\n }\n let results\n try {\n results = parse(contents, aFile)\n } catch (error) {\n return callback(error)\n }\n\n return callback(null, results)\n })\n}\n\nfunction writeFileSync(aFile, anObject, options) {\n const data = plist.build(anObject)\n return fs.writeFileSync(aFile, data, options)\n}\n\nfunction writeFile(aFile, anObject, options, callback) {\n if (arguments.length === 3 && typeof options === 'function') {\n fs.writeFile(aFile, plist.build(anObject), options)\n } else {\n fs.writeFile(aFile, plist.build(anObject), options, callback)\n }\n}\n\nfunction writeBinaryFileSync(aFile, anObject, options) {\n return fs.writeFileSync(aFile, bplistCreator(anObject), options)\n}\n\nfunction writeBinaryFile(aFile, anObject, options, callback) {\n if (arguments.length === 3 && typeof options === 'function') {\n fs.writeFile(aFile, bplistCreator(anObject), options)\n } else {\n fs.writeFile(aFile, bplistCreator(anObject), options, callback)\n }\n}\n\nfunction stringify(anObject) {\n return plist.build(anObject)\n}\n\nmodule.exports = {\n bplistCreator,\n bplistParser,\n parse,\n plist,\n readFile,\n readFileSync,\n stringify,\n writeBinaryFile,\n writeBinaryFileSync,\n writeFile,\n writeFileSync,\n}\n", "'use strict'\r\n\r\nmodule.exports = {\r\n\t\"aliceblue\": [240, 248, 255],\r\n\t\"antiquewhite\": [250, 235, 215],\r\n\t\"aqua\": [0, 255, 255],\r\n\t\"aquamarine\": [127, 255, 212],\r\n\t\"azure\": [240, 255, 255],\r\n\t\"beige\": [245, 245, 220],\r\n\t\"bisque\": [255, 228, 196],\r\n\t\"black\": [0, 0, 0],\r\n\t\"blanchedalmond\": [255, 235, 205],\r\n\t\"blue\": [0, 0, 255],\r\n\t\"blueviolet\": [138, 43, 226],\r\n\t\"brown\": [165, 42, 42],\r\n\t\"burlywood\": [222, 184, 135],\r\n\t\"cadetblue\": [95, 158, 160],\r\n\t\"chartreuse\": [127, 255, 0],\r\n\t\"chocolate\": [210, 105, 30],\r\n\t\"coral\": [255, 127, 80],\r\n\t\"cornflowerblue\": [100, 149, 237],\r\n\t\"cornsilk\": [255, 248, 220],\r\n\t\"crimson\": [220, 20, 60],\r\n\t\"cyan\": [0, 255, 255],\r\n\t\"darkblue\": [0, 0, 139],\r\n\t\"darkcyan\": [0, 139, 139],\r\n\t\"darkgoldenrod\": [184, 134, 11],\r\n\t\"darkgray\": [169, 169, 169],\r\n\t\"darkgreen\": [0, 100, 0],\r\n\t\"darkgrey\": [169, 169, 169],\r\n\t\"darkkhaki\": [189, 183, 107],\r\n\t\"darkmagenta\": [139, 0, 139],\r\n\t\"darkolivegreen\": [85, 107, 47],\r\n\t\"darkorange\": [255, 140, 0],\r\n\t\"darkorchid\": [153, 50, 204],\r\n\t\"darkred\": [139, 0, 0],\r\n\t\"darksalmon\": [233, 150, 122],\r\n\t\"darkseagreen\": [143, 188, 143],\r\n\t\"darkslateblue\": [72, 61, 139],\r\n\t\"darkslategray\": [47, 79, 79],\r\n\t\"darkslategrey\": [47, 79, 79],\r\n\t\"darkturquoise\": [0, 206, 209],\r\n\t\"darkviolet\": [148, 0, 211],\r\n\t\"deeppink\": [255, 20, 147],\r\n\t\"deepskyblue\": [0, 191, 255],\r\n\t\"dimgray\": [105, 105, 105],\r\n\t\"dimgrey\": [105, 105, 105],\r\n\t\"dodgerblue\": [30, 144, 255],\r\n\t\"firebrick\": [178, 34, 34],\r\n\t\"floralwhite\": [255, 250, 240],\r\n\t\"forestgreen\": [34, 139, 34],\r\n\t\"fuchsia\": [255, 0, 255],\r\n\t\"gainsboro\": [220, 220, 220],\r\n\t\"ghostwhite\": [248, 248, 255],\r\n\t\"gold\": [255, 215, 0],\r\n\t\"goldenrod\": [218, 165, 32],\r\n\t\"gray\": [128, 128, 128],\r\n\t\"green\": [0, 128, 0],\r\n\t\"greenyellow\": [173, 255, 47],\r\n\t\"grey\": [128, 128, 128],\r\n\t\"honeydew\": [240, 255, 240],\r\n\t\"hotpink\": [255, 105, 180],\r\n\t\"indianred\": [205, 92, 92],\r\n\t\"indigo\": [75, 0, 130],\r\n\t\"ivory\": [255, 255, 240],\r\n\t\"khaki\": [240, 230, 140],\r\n\t\"lavender\": [230, 230, 250],\r\n\t\"lavenderblush\": [255, 240, 245],\r\n\t\"lawngreen\": [124, 252, 0],\r\n\t\"lemonchiffon\": [255, 250, 205],\r\n\t\"lightblue\": [173, 216, 230],\r\n\t\"lightcoral\": [240, 128, 128],\r\n\t\"lightcyan\": [224, 255, 255],\r\n\t\"lightgoldenrodyellow\": [250, 250, 210],\r\n\t\"lightgray\": [211, 211, 211],\r\n\t\"lightgreen\": [144, 238, 144],\r\n\t\"lightgrey\": [211, 211, 211],\r\n\t\"lightpink\": [255, 182, 193],\r\n\t\"lightsalmon\": [255, 160, 122],\r\n\t\"lightseagreen\": [32, 178, 170],\r\n\t\"lightskyblue\": [135, 206, 250],\r\n\t\"lightslategray\": [119, 136, 153],\r\n\t\"lightslategrey\": [119, 136, 153],\r\n\t\"lightsteelblue\": [176, 196, 222],\r\n\t\"lightyellow\": [255, 255, 224],\r\n\t\"lime\": [0, 255, 0],\r\n\t\"limegreen\": [50, 205, 50],\r\n\t\"linen\": [250, 240, 230],\r\n\t\"magenta\": [255, 0, 255],\r\n\t\"maroon\": [128, 0, 0],\r\n\t\"mediumaquamarine\": [102, 205, 170],\r\n\t\"mediumblue\": [0, 0, 205],\r\n\t\"mediumorchid\": [186, 85, 211],\r\n\t\"mediumpurple\": [147, 112, 219],\r\n\t\"mediumseagreen\": [60, 179, 113],\r\n\t\"mediumslateblue\": [123, 104, 238],\r\n\t\"mediumspringgreen\": [0, 250, 154],\r\n\t\"mediumturquoise\": [72, 209, 204],\r\n\t\"mediumvioletred\": [199, 21, 133],\r\n\t\"midnightblue\": [25, 25, 112],\r\n\t\"mintcream\": [245, 255, 250],\r\n\t\"mistyrose\": [255, 228, 225],\r\n\t\"moccasin\": [255, 228, 181],\r\n\t\"navajowhite\": [255, 222, 173],\r\n\t\"navy\": [0, 0, 128],\r\n\t\"oldlace\": [253, 245, 230],\r\n\t\"olive\": [128, 128, 0],\r\n\t\"olivedrab\": [107, 142, 35],\r\n\t\"orange\": [255, 165, 0],\r\n\t\"orangered\": [255, 69, 0],\r\n\t\"orchid\": [218, 112, 214],\r\n\t\"palegoldenrod\": [238, 232, 170],\r\n\t\"palegreen\": [152, 251, 152],\r\n\t\"paleturquoise\": [175, 238, 238],\r\n\t\"palevioletred\": [219, 112, 147],\r\n\t\"papayawhip\": [255, 239, 213],\r\n\t\"peachpuff\": [255, 218, 185],\r\n\t\"peru\": [205, 133, 63],\r\n\t\"pink\": [255, 192, 203],\r\n\t\"plum\": [221, 160, 221],\r\n\t\"powderblue\": [176, 224, 230],\r\n\t\"purple\": [128, 0, 128],\r\n\t\"rebeccapurple\": [102, 51, 153],\r\n\t\"red\": [255, 0, 0],\r\n\t\"rosybrown\": [188, 143, 143],\r\n\t\"royalblue\": [65, 105, 225],\r\n\t\"saddlebrown\": [139, 69, 19],\r\n\t\"salmon\": [250, 128, 114],\r\n\t\"sandybrown\": [244, 164, 96],\r\n\t\"seagreen\": [46, 139, 87],\r\n\t\"seashell\": [255, 245, 238],\r\n\t\"sienna\": [160, 82, 45],\r\n\t\"silver\": [192, 192, 192],\r\n\t\"skyblue\": [135, 206, 235],\r\n\t\"slateblue\": [106, 90, 205],\r\n\t\"slategray\": [112, 128, 144],\r\n\t\"slategrey\": [112, 128, 144],\r\n\t\"snow\": [255, 250, 250],\r\n\t\"springgreen\": [0, 255, 127],\r\n\t\"steelblue\": [70, 130, 180],\r\n\t\"tan\": [210, 180, 140],\r\n\t\"teal\": [0, 128, 128],\r\n\t\"thistle\": [216, 191, 216],\r\n\t\"tomato\": [255, 99, 71],\r\n\t\"turquoise\": [64, 224, 208],\r\n\t\"violet\": [238, 130, 238],\r\n\t\"wheat\": [245, 222, 179],\r\n\t\"white\": [255, 255, 255],\r\n\t\"whitesmoke\": [245, 245, 245],\r\n\t\"yellow\": [255, 255, 0],\r\n\t\"yellowgreen\": [154, 205, 50]\r\n};\r\n", "/* MIT license */\n/* eslint-disable no-mixed-operators */\nconst cssKeywords = require('color-name');\n\n// NOTE: conversions should only return primitive values (i.e. arrays, or\n// values that give correct `typeof` results).\n// do not use box values types (i.e. Number(), String(), etc.)\n\nconst reverseKeywords = {};\nfor (const key of Object.keys(cssKeywords)) {\n\treverseKeywords[cssKeywords[key]] = key;\n}\n\nconst convert = {\n\trgb: {channels: 3, labels: 'rgb'},\n\thsl: {channels: 3, labels: 'hsl'},\n\thsv: {channels: 3, labels: 'hsv'},\n\thwb: {channels: 3, labels: 'hwb'},\n\tcmyk: {channels: 4, labels: 'cmyk'},\n\txyz: {channels: 3, labels: 'xyz'},\n\tlab: {channels: 3, labels: 'lab'},\n\tlch: {channels: 3, labels: 'lch'},\n\thex: {channels: 1, labels: ['hex']},\n\tkeyword: {channels: 1, labels: ['keyword']},\n\tansi16: {channels: 1, labels: ['ansi16']},\n\tansi256: {channels: 1, labels: ['ansi256']},\n\thcg: {channels: 3, labels: ['h', 'c', 'g']},\n\tapple: {channels: 3, labels: ['r16', 'g16', 'b16']},\n\tgray: {channels: 1, labels: ['gray']}\n};\n\nmodule.exports = convert;\n\n// Hide .channels and .labels properties\nfor (const model of Object.keys(convert)) {\n\tif (!('channels' in convert[model])) {\n\t\tthrow new Error('missing channels property: ' + model);\n\t}\n\n\tif (!('labels' in convert[model])) {\n\t\tthrow new Error('missing channel labels property: ' + model);\n\t}\n\n\tif (convert[model].labels.length !== convert[model].channels) {\n\t\tthrow new Error('channel and label counts mismatch: ' + model);\n\t}\n\n\tconst {channels, labels} = convert[model];\n\tdelete convert[model].channels;\n\tdelete convert[model].labels;\n\tObject.defineProperty(convert[model], 'channels', {value: channels});\n\tObject.defineProperty(convert[model], 'labels', {value: labels});\n}\n\nconvert.rgb.hsl = function (rgb) {\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\tconst min = Math.min(r, g, b);\n\tconst max = Math.max(r, g, b);\n\tconst delta = max - min;\n\tlet h;\n\tlet s;\n\n\tif (max === min) {\n\t\th = 0;\n\t} else if (r === max) {\n\t\th = (g - b) / delta;\n\t} else if (g === max) {\n\t\th = 2 + (b - r) / delta;\n\t} else if (b === max) {\n\t\th = 4 + (r - g) / delta;\n\t}\n\n\th = Math.min(h * 60, 360);\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tconst l = (min + max) / 2;\n\n\tif (max === min) {\n\t\ts = 0;\n\t} else if (l <= 0.5) {\n\t\ts = delta / (max + min);\n\t} else {\n\t\ts = delta / (2 - max - min);\n\t}\n\n\treturn [h, s * 100, l * 100];\n};\n\nconvert.rgb.hsv = function (rgb) {\n\tlet rdif;\n\tlet gdif;\n\tlet bdif;\n\tlet h;\n\tlet s;\n\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\tconst v = Math.max(r, g, b);\n\tconst diff = v - Math.min(r, g, b);\n\tconst diffc = function (c) {\n\t\treturn (v - c) / 6 / diff + 1 / 2;\n\t};\n\n\tif (diff === 0) {\n\t\th = 0;\n\t\ts = 0;\n\t} else {\n\t\ts = diff / v;\n\t\trdif = diffc(r);\n\t\tgdif = diffc(g);\n\t\tbdif = diffc(b);\n\n\t\tif (r === v) {\n\t\t\th = bdif - gdif;\n\t\t} else if (g === v) {\n\t\t\th = (1 / 3) + rdif - bdif;\n\t\t} else if (b === v) {\n\t\t\th = (2 / 3) + gdif - rdif;\n\t\t}\n\n\t\tif (h < 0) {\n\t\t\th += 1;\n\t\t} else if (h > 1) {\n\t\t\th -= 1;\n\t\t}\n\t}\n\n\treturn [\n\t\th * 360,\n\t\ts * 100,\n\t\tv * 100\n\t];\n};\n\nconvert.rgb.hwb = function (rgb) {\n\tconst r = rgb[0];\n\tconst g = rgb[1];\n\tlet b = rgb[2];\n\tconst h = convert.rgb.hsl(rgb)[0];\n\tconst w = 1 / 255 * Math.min(r, Math.min(g, b));\n\n\tb = 1 - 1 / 255 * Math.max(r, Math.max(g, b));\n\n\treturn [h, w * 100, b * 100];\n};\n\nconvert.rgb.cmyk = function (rgb) {\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\n\tconst k = Math.min(1 - r, 1 - g, 1 - b);\n\tconst c = (1 - r - k) / (1 - k) || 0;\n\tconst m = (1 - g - k) / (1 - k) || 0;\n\tconst y = (1 - b - k) / (1 - k) || 0;\n\n\treturn [c * 100, m * 100, y * 100, k * 100];\n};\n\nfunction comparativeDistance(x, y) {\n\t/*\n\t\tSee https://en.m.wikipedia.org/wiki/Euclidean_distance#Squared_Euclidean_distance\n\t*/\n\treturn (\n\t\t((x[0] - y[0]) ** 2) +\n\t\t((x[1] - y[1]) ** 2) +\n\t\t((x[2] - y[2]) ** 2)\n\t);\n}\n\nconvert.rgb.keyword = function (rgb) {\n\tconst reversed = reverseKeywords[rgb];\n\tif (reversed) {\n\t\treturn reversed;\n\t}\n\n\tlet currentClosestDistance = Infinity;\n\tlet currentClosestKeyword;\n\n\tfor (const keyword of Object.keys(cssKeywords)) {\n\t\tconst value = cssKeywords[keyword];\n\n\t\t// Compute comparative distance\n\t\tconst distance = comparativeDistance(rgb, value);\n\n\t\t// Check if its less, if so set as closest\n\t\tif (distance < currentClosestDistance) {\n\t\t\tcurrentClosestDistance = distance;\n\t\t\tcurrentClosestKeyword = keyword;\n\t\t}\n\t}\n\n\treturn currentClosestKeyword;\n};\n\nconvert.keyword.rgb = function (keyword) {\n\treturn cssKeywords[keyword];\n};\n\nconvert.rgb.xyz = function (rgb) {\n\tlet r = rgb[0] / 255;\n\tlet g = rgb[1] / 255;\n\tlet b = rgb[2] / 255;\n\n\t// Assume sRGB\n\tr = r > 0.04045 ? (((r + 0.055) / 1.055) ** 2.4) : (r / 12.92);\n\tg = g > 0.04045 ? (((g + 0.055) / 1.055) ** 2.4) : (g / 12.92);\n\tb = b > 0.04045 ? (((b + 0.055) / 1.055) ** 2.4) : (b / 12.92);\n\n\tconst x = (r * 0.4124) + (g * 0.3576) + (b * 0.1805);\n\tconst y = (r * 0.2126) + (g * 0.7152) + (b * 0.0722);\n\tconst z = (r * 0.0193) + (g * 0.1192) + (b * 0.9505);\n\n\treturn [x * 100, y * 100, z * 100];\n};\n\nconvert.rgb.lab = function (rgb) {\n\tconst xyz = convert.rgb.xyz(rgb);\n\tlet x = xyz[0];\n\tlet y = xyz[1];\n\tlet z = xyz[2];\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? (x ** (1 / 3)) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? (y ** (1 / 3)) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? (z ** (1 / 3)) : (7.787 * z) + (16 / 116);\n\n\tconst l = (116 * y) - 16;\n\tconst a = 500 * (x - y);\n\tconst b = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.hsl.rgb = function (hsl) {\n\tconst h = hsl[0] / 360;\n\tconst s = hsl[1] / 100;\n\tconst l = hsl[2] / 100;\n\tlet t2;\n\tlet t3;\n\tlet val;\n\n\tif (s === 0) {\n\t\tval = l * 255;\n\t\treturn [val, val, val];\n\t}\n\n\tif (l < 0.5) {\n\t\tt2 = l * (1 + s);\n\t} else {\n\t\tt2 = l + s - l * s;\n\t}\n\n\tconst t1 = 2 * l - t2;\n\n\tconst rgb = [0, 0, 0];\n\tfor (let i = 0; i < 3; i++) {\n\t\tt3 = h + 1 / 3 * -(i - 1);\n\t\tif (t3 < 0) {\n\t\t\tt3++;\n\t\t}\n\n\t\tif (t3 > 1) {\n\t\t\tt3--;\n\t\t}\n\n\t\tif (6 * t3 < 1) {\n\t\t\tval = t1 + (t2 - t1) * 6 * t3;\n\t\t} else if (2 * t3 < 1) {\n\t\t\tval = t2;\n\t\t} else if (3 * t3 < 2) {\n\t\t\tval = t1 + (t2 - t1) * (2 / 3 - t3) * 6;\n\t\t} else {\n\t\t\tval = t1;\n\t\t}\n\n\t\trgb[i] = val * 255;\n\t}\n\n\treturn rgb;\n};\n\nconvert.hsl.hsv = function (hsl) {\n\tconst h = hsl[0];\n\tlet s = hsl[1] / 100;\n\tlet l = hsl[2] / 100;\n\tlet smin = s;\n\tconst lmin = Math.max(l, 0.01);\n\n\tl *= 2;\n\ts *= (l <= 1) ? l : 2 - l;\n\tsmin *= lmin <= 1 ? lmin : 2 - lmin;\n\tconst v = (l + s) / 2;\n\tconst sv = l === 0 ? (2 * smin) / (lmin + smin) : (2 * s) / (l + s);\n\n\treturn [h, sv * 100, v * 100];\n};\n\nconvert.hsv.rgb = function (hsv) {\n\tconst h = hsv[0] / 60;\n\tconst s = hsv[1] / 100;\n\tlet v = hsv[2] / 100;\n\tconst hi = Math.floor(h) % 6;\n\n\tconst f = h - Math.floor(h);\n\tconst p = 255 * v * (1 - s);\n\tconst q = 255 * v * (1 - (s * f));\n\tconst t = 255 * v * (1 - (s * (1 - f)));\n\tv *= 255;\n\n\tswitch (hi) {\n\t\tcase 0:\n\t\t\treturn [v, t, p];\n\t\tcase 1:\n\t\t\treturn [q, v, p];\n\t\tcase 2:\n\t\t\treturn [p, v, t];\n\t\tcase 3:\n\t\t\treturn [p, q, v];\n\t\tcase 4:\n\t\t\treturn [t, p, v];\n\t\tcase 5:\n\t\t\treturn [v, p, q];\n\t}\n};\n\nconvert.hsv.hsl = function (hsv) {\n\tconst h = hsv[0];\n\tconst s = hsv[1] / 100;\n\tconst v = hsv[2] / 100;\n\tconst vmin = Math.max(v, 0.01);\n\tlet sl;\n\tlet l;\n\n\tl = (2 - s) * v;\n\tconst lmin = (2 - s) * vmin;\n\tsl = s * vmin;\n\tsl /= (lmin <= 1) ? lmin : 2 - lmin;\n\tsl = sl || 0;\n\tl /= 2;\n\n\treturn [h, sl * 100, l * 100];\n};\n\n// http://dev.w3.org/csswg/css-color/#hwb-to-rgb\nconvert.hwb.rgb = function (hwb) {\n\tconst h = hwb[0] / 360;\n\tlet wh = hwb[1] / 100;\n\tlet bl = hwb[2] / 100;\n\tconst ratio = wh + bl;\n\tlet f;\n\n\t// Wh + bl cant be > 1\n\tif (ratio > 1) {\n\t\twh /= ratio;\n\t\tbl /= ratio;\n\t}\n\n\tconst i = Math.floor(6 * h);\n\tconst v = 1 - bl;\n\tf = 6 * h - i;\n\n\tif ((i & 0x01) !== 0) {\n\t\tf = 1 - f;\n\t}\n\n\tconst n = wh + f * (v - wh); // Linear interpolation\n\n\tlet r;\n\tlet g;\n\tlet b;\n\t/* eslint-disable max-statements-per-line,no-multi-spaces */\n\tswitch (i) {\n\t\tdefault:\n\t\tcase 6:\n\t\tcase 0: r = v; g = n; b = wh; break;\n\t\tcase 1: r = n; g = v; b = wh; break;\n\t\tcase 2: r = wh; g = v; b = n; break;\n\t\tcase 3: r = wh; g = n; b = v; break;\n\t\tcase 4: r = n; g = wh; b = v; break;\n\t\tcase 5: r = v; g = wh; b = n; break;\n\t}\n\t/* eslint-enable max-statements-per-line,no-multi-spaces */\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.cmyk.rgb = function (cmyk) {\n\tconst c = cmyk[0] / 100;\n\tconst m = cmyk[1] / 100;\n\tconst y = cmyk[2] / 100;\n\tconst k = cmyk[3] / 100;\n\n\tconst r = 1 - Math.min(1, c * (1 - k) + k);\n\tconst g = 1 - Math.min(1, m * (1 - k) + k);\n\tconst b = 1 - Math.min(1, y * (1 - k) + k);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.rgb = function (xyz) {\n\tconst x = xyz[0] / 100;\n\tconst y = xyz[1] / 100;\n\tconst z = xyz[2] / 100;\n\tlet r;\n\tlet g;\n\tlet b;\n\n\tr = (x * 3.2406) + (y * -1.5372) + (z * -0.4986);\n\tg = (x * -0.9689) + (y * 1.8758) + (z * 0.0415);\n\tb = (x * 0.0557) + (y * -0.2040) + (z * 1.0570);\n\n\t// Assume sRGB\n\tr = r > 0.0031308\n\t\t? ((1.055 * (r ** (1.0 / 2.4))) - 0.055)\n\t\t: r * 12.92;\n\n\tg = g > 0.0031308\n\t\t? ((1.055 * (g ** (1.0 / 2.4))) - 0.055)\n\t\t: g * 12.92;\n\n\tb = b > 0.0031308\n\t\t? ((1.055 * (b ** (1.0 / 2.4))) - 0.055)\n\t\t: b * 12.92;\n\n\tr = Math.min(Math.max(0, r), 1);\n\tg = Math.min(Math.max(0, g), 1);\n\tb = Math.min(Math.max(0, b), 1);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.lab = function (xyz) {\n\tlet x = xyz[0];\n\tlet y = xyz[1];\n\tlet z = xyz[2];\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? (x ** (1 / 3)) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? (y ** (1 / 3)) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? (z ** (1 / 3)) : (7.787 * z) + (16 / 116);\n\n\tconst l = (116 * y) - 16;\n\tconst a = 500 * (x - y);\n\tconst b = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.lab.xyz = function (lab) {\n\tconst l = lab[0];\n\tconst a = lab[1];\n\tconst b = lab[2];\n\tlet x;\n\tlet y;\n\tlet z;\n\n\ty = (l + 16) / 116;\n\tx = a / 500 + y;\n\tz = y - b / 200;\n\n\tconst y2 = y ** 3;\n\tconst x2 = x ** 3;\n\tconst z2 = z ** 3;\n\ty = y2 > 0.008856 ? y2 : (y - 16 / 116) / 7.787;\n\tx = x2 > 0.008856 ? x2 : (x - 16 / 116) / 7.787;\n\tz = z2 > 0.008856 ? z2 : (z - 16 / 116) / 7.787;\n\n\tx *= 95.047;\n\ty *= 100;\n\tz *= 108.883;\n\n\treturn [x, y, z];\n};\n\nconvert.lab.lch = function (lab) {\n\tconst l = lab[0];\n\tconst a = lab[1];\n\tconst b = lab[2];\n\tlet h;\n\n\tconst hr = Math.atan2(b, a);\n\th = hr * 360 / 2 / Math.PI;\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tconst c = Math.sqrt(a * a + b * b);\n\n\treturn [l, c, h];\n};\n\nconvert.lch.lab = function (lch) {\n\tconst l = lch[0];\n\tconst c = lch[1];\n\tconst h = lch[2];\n\n\tconst hr = h / 360 * 2 * Math.PI;\n\tconst a = c * Math.cos(hr);\n\tconst b = c * Math.sin(hr);\n\n\treturn [l, a, b];\n};\n\nconvert.rgb.ansi16 = function (args, saturation = null) {\n\tconst [r, g, b] = args;\n\tlet value = saturation === null ? convert.rgb.hsv(args)[2] : saturation; // Hsv -> ansi16 optimization\n\n\tvalue = Math.round(value / 50);\n\n\tif (value === 0) {\n\t\treturn 30;\n\t}\n\n\tlet ansi = 30\n\t\t+ ((Math.round(b / 255) << 2)\n\t\t| (Math.round(g / 255) << 1)\n\t\t| Math.round(r / 255));\n\n\tif (value === 2) {\n\t\tansi += 60;\n\t}\n\n\treturn ansi;\n};\n\nconvert.hsv.ansi16 = function (args) {\n\t// Optimization here; we already know the value and don't need to get\n\t// it converted for us.\n\treturn convert.rgb.ansi16(convert.hsv.rgb(args), args[2]);\n};\n\nconvert.rgb.ansi256 = function (args) {\n\tconst r = args[0];\n\tconst g = args[1];\n\tconst b = args[2];\n\n\t// We use the extended greyscale palette here, with the exception of\n\t// black and white. normal palette only has 4 greyscale shades.\n\tif (r === g && g === b) {\n\t\tif (r < 8) {\n\t\t\treturn 16;\n\t\t}\n\n\t\tif (r > 248) {\n\t\t\treturn 231;\n\t\t}\n\n\t\treturn Math.round(((r - 8) / 247) * 24) + 232;\n\t}\n\n\tconst ansi = 16\n\t\t+ (36 * Math.round(r / 255 * 5))\n\t\t+ (6 * Math.round(g / 255 * 5))\n\t\t+ Math.round(b / 255 * 5);\n\n\treturn ansi;\n};\n\nconvert.ansi16.rgb = function (args) {\n\tlet color = args % 10;\n\n\t// Handle greyscale\n\tif (color === 0 || color === 7) {\n\t\tif (args > 50) {\n\t\t\tcolor += 3.5;\n\t\t}\n\n\t\tcolor = color / 10.5 * 255;\n\n\t\treturn [color, color, color];\n\t}\n\n\tconst mult = (~~(args > 50) + 1) * 0.5;\n\tconst r = ((color & 1) * mult) * 255;\n\tconst g = (((color >> 1) & 1) * mult) * 255;\n\tconst b = (((color >> 2) & 1) * mult) * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.ansi256.rgb = function (args) {\n\t// Handle greyscale\n\tif (args >= 232) {\n\t\tconst c = (args - 232) * 10 + 8;\n\t\treturn [c, c, c];\n\t}\n\n\targs -= 16;\n\n\tlet rem;\n\tconst r = Math.floor(args / 36) / 5 * 255;\n\tconst g = Math.floor((rem = args % 36) / 6) / 5 * 255;\n\tconst b = (rem % 6) / 5 * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hex = function (args) {\n\tconst integer = ((Math.round(args[0]) & 0xFF) << 16)\n\t\t+ ((Math.round(args[1]) & 0xFF) << 8)\n\t\t+ (Math.round(args[2]) & 0xFF);\n\n\tconst string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.hex.rgb = function (args) {\n\tconst match = args.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);\n\tif (!match) {\n\t\treturn [0, 0, 0];\n\t}\n\n\tlet colorString = match[0];\n\n\tif (match[0].length === 3) {\n\t\tcolorString = colorString.split('').map(char => {\n\t\t\treturn char + char;\n\t\t}).join('');\n\t}\n\n\tconst integer = parseInt(colorString, 16);\n\tconst r = (integer >> 16) & 0xFF;\n\tconst g = (integer >> 8) & 0xFF;\n\tconst b = integer & 0xFF;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hcg = function (rgb) {\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\tconst max = Math.max(Math.max(r, g), b);\n\tconst min = Math.min(Math.min(r, g), b);\n\tconst chroma = (max - min);\n\tlet grayscale;\n\tlet hue;\n\n\tif (chroma < 1) {\n\t\tgrayscale = min / (1 - chroma);\n\t} else {\n\t\tgrayscale = 0;\n\t}\n\n\tif (chroma <= 0) {\n\t\thue = 0;\n\t} else\n\tif (max === r) {\n\t\thue = ((g - b) / chroma) % 6;\n\t} else\n\tif (max === g) {\n\t\thue = 2 + (b - r) / chroma;\n\t} else {\n\t\thue = 4 + (r - g) / chroma;\n\t}\n\n\thue /= 6;\n\thue %= 1;\n\n\treturn [hue * 360, chroma * 100, grayscale * 100];\n};\n\nconvert.hsl.hcg = function (hsl) {\n\tconst s = hsl[1] / 100;\n\tconst l = hsl[2] / 100;\n\n\tconst c = l < 0.5 ? (2.0 * s * l) : (2.0 * s * (1.0 - l));\n\n\tlet f = 0;\n\tif (c < 1.0) {\n\t\tf = (l - 0.5 * c) / (1.0 - c);\n\t}\n\n\treturn [hsl[0], c * 100, f * 100];\n};\n\nconvert.hsv.hcg = function (hsv) {\n\tconst s = hsv[1] / 100;\n\tconst v = hsv[2] / 100;\n\n\tconst c = s * v;\n\tlet f = 0;\n\n\tif (c < 1.0) {\n\t\tf = (v - c) / (1 - c);\n\t}\n\n\treturn [hsv[0], c * 100, f * 100];\n};\n\nconvert.hcg.rgb = function (hcg) {\n\tconst h = hcg[0] / 360;\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\n\tif (c === 0.0) {\n\t\treturn [g * 255, g * 255, g * 255];\n\t}\n\n\tconst pure = [0, 0, 0];\n\tconst hi = (h % 1) * 6;\n\tconst v = hi % 1;\n\tconst w = 1 - v;\n\tlet mg = 0;\n\n\t/* eslint-disable max-statements-per-line */\n\tswitch (Math.floor(hi)) {\n\t\tcase 0:\n\t\t\tpure[0] = 1; pure[1] = v; pure[2] = 0; break;\n\t\tcase 1:\n\t\t\tpure[0] = w; pure[1] = 1; pure[2] = 0; break;\n\t\tcase 2:\n\t\t\tpure[0] = 0; pure[1] = 1; pure[2] = v; break;\n\t\tcase 3:\n\t\t\tpure[0] = 0; pure[1] = w; pure[2] = 1; break;\n\t\tcase 4:\n\t\t\tpure[0] = v; pure[1] = 0; pure[2] = 1; break;\n\t\tdefault:\n\t\t\tpure[0] = 1; pure[1] = 0; pure[2] = w;\n\t}\n\t/* eslint-enable max-statements-per-line */\n\n\tmg = (1.0 - c) * g;\n\n\treturn [\n\t\t(c * pure[0] + mg) * 255,\n\t\t(c * pure[1] + mg) * 255,\n\t\t(c * pure[2] + mg) * 255\n\t];\n};\n\nconvert.hcg.hsv = function (hcg) {\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\n\tconst v = c + g * (1.0 - c);\n\tlet f = 0;\n\n\tif (v > 0.0) {\n\t\tf = c / v;\n\t}\n\n\treturn [hcg[0], f * 100, v * 100];\n};\n\nconvert.hcg.hsl = function (hcg) {\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\n\tconst l = g * (1.0 - c) + 0.5 * c;\n\tlet s = 0;\n\n\tif (l > 0.0 && l < 0.5) {\n\t\ts = c / (2 * l);\n\t} else\n\tif (l >= 0.5 && l < 1.0) {\n\t\ts = c / (2 * (1 - l));\n\t}\n\n\treturn [hcg[0], s * 100, l * 100];\n};\n\nconvert.hcg.hwb = function (hcg) {\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\tconst v = c + g * (1.0 - c);\n\treturn [hcg[0], (v - c) * 100, (1 - v) * 100];\n};\n\nconvert.hwb.hcg = function (hwb) {\n\tconst w = hwb[1] / 100;\n\tconst b = hwb[2] / 100;\n\tconst v = 1 - b;\n\tconst c = v - w;\n\tlet g = 0;\n\n\tif (c < 1) {\n\t\tg = (v - c) / (1 - c);\n\t}\n\n\treturn [hwb[0], c * 100, g * 100];\n};\n\nconvert.apple.rgb = function (apple) {\n\treturn [(apple[0] / 65535) * 255, (apple[1] / 65535) * 255, (apple[2] / 65535) * 255];\n};\n\nconvert.rgb.apple = function (rgb) {\n\treturn [(rgb[0] / 255) * 65535, (rgb[1] / 255) * 65535, (rgb[2] / 255) * 65535];\n};\n\nconvert.gray.rgb = function (args) {\n\treturn [args[0] / 100 * 255, args[0] / 100 * 255, args[0] / 100 * 255];\n};\n\nconvert.gray.hsl = function (args) {\n\treturn [0, 0, args[0]];\n};\n\nconvert.gray.hsv = convert.gray.hsl;\n\nconvert.gray.hwb = function (gray) {\n\treturn [0, 100, gray[0]];\n};\n\nconvert.gray.cmyk = function (gray) {\n\treturn [0, 0, 0, gray[0]];\n};\n\nconvert.gray.lab = function (gray) {\n\treturn [gray[0], 0, 0];\n};\n\nconvert.gray.hex = function (gray) {\n\tconst val = Math.round(gray[0] / 100 * 255) & 0xFF;\n\tconst integer = (val << 16) + (val << 8) + val;\n\n\tconst string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.rgb.gray = function (rgb) {\n\tconst val = (rgb[0] + rgb[1] + rgb[2]) / 3;\n\treturn [val / 255 * 100];\n};\n", "const conversions = require('./conversions');\n\n/*\n\tThis function routes a model to all other models.\n\n\tall functions that are routed have a property `.conversion` attached\n\tto the returned synthetic function. This property is an array\n\tof strings, each with the steps in between the 'from' and 'to'\n\tcolor models (inclusive).\n\n\tconversions that are not possible simply are not included.\n*/\n\nfunction buildGraph() {\n\tconst graph = {};\n\t// https://jsperf.com/object-keys-vs-for-in-with-closure/3\n\tconst models = Object.keys(conversions);\n\n\tfor (let len = models.length, i = 0; i < len; i++) {\n\t\tgraph[models[i]] = {\n\t\t\t// http://jsperf.com/1-vs-infinity\n\t\t\t// micro-opt, but this is simple.\n\t\t\tdistance: -1,\n\t\t\tparent: null\n\t\t};\n\t}\n\n\treturn graph;\n}\n\n// https://en.wikipedia.org/wiki/Breadth-first_search\nfunction deriveBFS(fromModel) {\n\tconst graph = buildGraph();\n\tconst queue = [fromModel]; // Unshift -> queue -> pop\n\n\tgraph[fromModel].distance = 0;\n\n\twhile (queue.length) {\n\t\tconst current = queue.pop();\n\t\tconst adjacents = Object.keys(conversions[current]);\n\n\t\tfor (let len = adjacents.length, i = 0; i < len; i++) {\n\t\t\tconst adjacent = adjacents[i];\n\t\t\tconst node = graph[adjacent];\n\n\t\t\tif (node.distance === -1) {\n\t\t\t\tnode.distance = graph[current].distance + 1;\n\t\t\t\tnode.parent = current;\n\t\t\t\tqueue.unshift(adjacent);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn graph;\n}\n\nfunction link(from, to) {\n\treturn function (args) {\n\t\treturn to(from(args));\n\t};\n}\n\nfunction wrapConversion(toModel, graph) {\n\tconst path = [graph[toModel].parent, toModel];\n\tlet fn = conversions[graph[toModel].parent][toModel];\n\n\tlet cur = graph[toModel].parent;\n\twhile (graph[cur].parent) {\n\t\tpath.unshift(graph[cur].parent);\n\t\tfn = link(conversions[graph[cur].parent][cur], fn);\n\t\tcur = graph[cur].parent;\n\t}\n\n\tfn.conversion = path;\n\treturn fn;\n}\n\nmodule.exports = function (fromModel) {\n\tconst graph = deriveBFS(fromModel);\n\tconst conversion = {};\n\n\tconst models = Object.keys(graph);\n\tfor (let len = models.length, i = 0; i < len; i++) {\n\t\tconst toModel = models[i];\n\t\tconst node = graph[toModel];\n\n\t\tif (node.parent === null) {\n\t\t\t// No possible conversion, or this node is the source model.\n\t\t\tcontinue;\n\t\t}\n\n\t\tconversion[toModel] = wrapConversion(toModel, graph);\n\t}\n\n\treturn conversion;\n};\n\n", "const conversions = require('./conversions');\nconst route = require('./route');\n\nconst convert = {};\n\nconst models = Object.keys(conversions);\n\nfunction wrapRaw(fn) {\n\tconst wrappedFn = function (...args) {\n\t\tconst arg0 = args[0];\n\t\tif (arg0 === undefined || arg0 === null) {\n\t\t\treturn arg0;\n\t\t}\n\n\t\tif (arg0.length > 1) {\n\t\t\targs = arg0;\n\t\t}\n\n\t\treturn fn(args);\n\t};\n\n\t// Preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nfunction wrapRounded(fn) {\n\tconst wrappedFn = function (...args) {\n\t\tconst arg0 = args[0];\n\n\t\tif (arg0 === undefined || arg0 === null) {\n\t\t\treturn arg0;\n\t\t}\n\n\t\tif (arg0.length > 1) {\n\t\t\targs = arg0;\n\t\t}\n\n\t\tconst result = fn(args);\n\n\t\t// We're assuming the result is an array here.\n\t\t// see notice in conversions.js; don't use box types\n\t\t// in conversion functions.\n\t\tif (typeof result === 'object') {\n\t\t\tfor (let len = result.length, i = 0; i < len; i++) {\n\t\t\t\tresult[i] = Math.round(result[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t};\n\n\t// Preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nmodels.forEach(fromModel => {\n\tconvert[fromModel] = {};\n\n\tObject.defineProperty(convert[fromModel], 'channels', {value: conversions[fromModel].channels});\n\tObject.defineProperty(convert[fromModel], 'labels', {value: conversions[fromModel].labels});\n\n\tconst routes = route(fromModel);\n\tconst routeModels = Object.keys(routes);\n\n\trouteModels.forEach(toModel => {\n\t\tconst fn = routes[toModel];\n\n\t\tconvert[fromModel][toModel] = wrapRounded(fn);\n\t\tconvert[fromModel][toModel].raw = wrapRaw(fn);\n\t});\n});\n\nmodule.exports = convert;\n", "'use strict';\n\nconst wrapAnsi16 = (fn, offset) => (...args) => {\n\tconst code = fn(...args);\n\treturn `\\u001B[${code + offset}m`;\n};\n\nconst wrapAnsi256 = (fn, offset) => (...args) => {\n\tconst code = fn(...args);\n\treturn `\\u001B[${38 + offset};5;${code}m`;\n};\n\nconst wrapAnsi16m = (fn, offset) => (...args) => {\n\tconst rgb = fn(...args);\n\treturn `\\u001B[${38 + offset};2;${rgb[0]};${rgb[1]};${rgb[2]}m`;\n};\n\nconst ansi2ansi = n => n;\nconst rgb2rgb = (r, g, b) => [r, g, b];\n\nconst setLazyProperty = (object, property, get) => {\n\tObject.defineProperty(object, property, {\n\t\tget: () => {\n\t\t\tconst value = get();\n\n\t\t\tObject.defineProperty(object, property, {\n\t\t\t\tvalue,\n\t\t\t\tenumerable: true,\n\t\t\t\tconfigurable: true\n\t\t\t});\n\n\t\t\treturn value;\n\t\t},\n\t\tenumerable: true,\n\t\tconfigurable: true\n\t});\n};\n\n/** @type {typeof import('color-convert')} */\nlet colorConvert;\nconst makeDynamicStyles = (wrap, targetSpace, identity, isBackground) => {\n\tif (colorConvert === undefined) {\n\t\tcolorConvert = require('color-convert');\n\t}\n\n\tconst offset = isBackground ? 10 : 0;\n\tconst styles = {};\n\n\tfor (const [sourceSpace, suite] of Object.entries(colorConvert)) {\n\t\tconst name = sourceSpace === 'ansi16' ? 'ansi' : sourceSpace;\n\t\tif (sourceSpace === targetSpace) {\n\t\t\tstyles[name] = wrap(identity, offset);\n\t\t} else if (typeof suite === 'object') {\n\t\t\tstyles[name] = wrap(suite[targetSpace], offset);\n\t\t}\n\t}\n\n\treturn styles;\n};\n\nfunction assembleStyles() {\n\tconst codes = new Map();\n\tconst styles = {\n\t\tmodifier: {\n\t\t\treset: [0, 0],\n\t\t\t// 21 isn't widely supported and 22 does the same thing\n\t\t\tbold: [1, 22],\n\t\t\tdim: [2, 22],\n\t\t\titalic: [3, 23],\n\t\t\tunderline: [4, 24],\n\t\t\tinverse: [7, 27],\n\t\t\thidden: [8, 28],\n\t\t\tstrikethrough: [9, 29]\n\t\t},\n\t\tcolor: {\n\t\t\tblack: [30, 39],\n\t\t\tred: [31, 39],\n\t\t\tgreen: [32, 39],\n\t\t\tyellow: [33, 39],\n\t\t\tblue: [34, 39],\n\t\t\tmagenta: [35, 39],\n\t\t\tcyan: [36, 39],\n\t\t\twhite: [37, 39],\n\n\t\t\t// Bright color\n\t\t\tblackBright: [90, 39],\n\t\t\tredBright: [91, 39],\n\t\t\tgreenBright: [92, 39],\n\t\t\tyellowBright: [93, 39],\n\t\t\tblueBright: [94, 39],\n\t\t\tmagentaBright: [95, 39],\n\t\t\tcyanBright: [96, 39],\n\t\t\twhiteBright: [97, 39]\n\t\t},\n\t\tbgColor: {\n\t\t\tbgBlack: [40, 49],\n\t\t\tbgRed: [41, 49],\n\t\t\tbgGreen: [42, 49],\n\t\t\tbgYellow: [43, 49],\n\t\t\tbgBlue: [44, 49],\n\t\t\tbgMagenta: [45, 49],\n\t\t\tbgCyan: [46, 49],\n\t\t\tbgWhite: [47, 49],\n\n\t\t\t// Bright color\n\t\t\tbgBlackBright: [100, 49],\n\t\t\tbgRedBright: [101, 49],\n\t\t\tbgGreenBright: [102, 49],\n\t\t\tbgYellowBright: [103, 49],\n\t\t\tbgBlueBright: [104, 49],\n\t\t\tbgMagentaBright: [105, 49],\n\t\t\tbgCyanBright: [106, 49],\n\t\t\tbgWhiteBright: [107, 49]\n\t\t}\n\t};\n\n\t// Alias bright black as gray (and grey)\n\tstyles.color.gray = styles.color.blackBright;\n\tstyles.bgColor.bgGray = styles.bgColor.bgBlackBright;\n\tstyles.color.grey = styles.color.blackBright;\n\tstyles.bgColor.bgGrey = styles.bgColor.bgBlackBright;\n\n\tfor (const [groupName, group] of Object.entries(styles)) {\n\t\tfor (const [styleName, style] of Object.entries(group)) {\n\t\t\tstyles[styleName] = {\n\t\t\t\topen: `\\u001B[${style[0]}m`,\n\t\t\t\tclose: `\\u001B[${style[1]}m`\n\t\t\t};\n\n\t\t\tgroup[styleName] = styles[styleName];\n\n\t\t\tcodes.set(style[0], style[1]);\n\t\t}\n\n\t\tObject.defineProperty(styles, groupName, {\n\t\t\tvalue: group,\n\t\t\tenumerable: false\n\t\t});\n\t}\n\n\tObject.defineProperty(styles, 'codes', {\n\t\tvalue: codes,\n\t\tenumerable: false\n\t});\n\n\tstyles.color.close = '\\u001B[39m';\n\tstyles.bgColor.close = '\\u001B[49m';\n\n\tsetLazyProperty(styles.color, 'ansi', () => makeDynamicStyles(wrapAnsi16, 'ansi16', ansi2ansi, false));\n\tsetLazyProperty(styles.color, 'ansi256', () => makeDynamicStyles(wrapAnsi256, 'ansi256', ansi2ansi, false));\n\tsetLazyProperty(styles.color, 'ansi16m', () => makeDynamicStyles(wrapAnsi16m, 'rgb', rgb2rgb, false));\n\tsetLazyProperty(styles.bgColor, 'ansi', () => makeDynamicStyles(wrapAnsi16, 'ansi16', ansi2ansi, true));\n\tsetLazyProperty(styles.bgColor, 'ansi256', () => makeDynamicStyles(wrapAnsi256, 'ansi256', ansi2ansi, true));\n\tsetLazyProperty(styles.bgColor, 'ansi16m', () => makeDynamicStyles(wrapAnsi16m, 'rgb', rgb2rgb, true));\n\n\treturn styles;\n}\n\n// Make the export immutable\nObject.defineProperty(module, 'exports', {\n\tenumerable: true,\n\tget: assembleStyles\n});\n", "'use strict';\n\nmodule.exports = (flag, argv = process.argv) => {\n\tconst prefix = flag.startsWith('-') ? '' : (flag.length === 1 ? '-' : '--');\n\tconst position = argv.indexOf(prefix + flag);\n\tconst terminatorPosition = argv.indexOf('--');\n\treturn position !== -1 && (terminatorPosition === -1 || position < terminatorPosition);\n};\n", "'use strict';\nconst os = require('os');\nconst tty = require('tty');\nconst hasFlag = require('has-flag');\n\nconst {env} = process;\n\nlet forceColor;\nif (hasFlag('no-color') ||\n\thasFlag('no-colors') ||\n\thasFlag('color=false') ||\n\thasFlag('color=never')) {\n\tforceColor = 0;\n} else if (hasFlag('color') ||\n\thasFlag('colors') ||\n\thasFlag('color=true') ||\n\thasFlag('color=always')) {\n\tforceColor = 1;\n}\n\nif ('FORCE_COLOR' in env) {\n\tif (env.FORCE_COLOR === 'true') {\n\t\tforceColor = 1;\n\t} else if (env.FORCE_COLOR === 'false') {\n\t\tforceColor = 0;\n\t} else {\n\t\tforceColor = env.FORCE_COLOR.length === 0 ? 1 : Math.min(parseInt(env.FORCE_COLOR, 10), 3);\n\t}\n}\n\nfunction translateLevel(level) {\n\tif (level === 0) {\n\t\treturn false;\n\t}\n\n\treturn {\n\t\tlevel,\n\t\thasBasic: true,\n\t\thas256: level >= 2,\n\t\thas16m: level >= 3\n\t};\n}\n\nfunction supportsColor(haveStream, streamIsTTY) {\n\tif (forceColor === 0) {\n\t\treturn 0;\n\t}\n\n\tif (hasFlag('color=16m') ||\n\t\thasFlag('color=full') ||\n\t\thasFlag('color=truecolor')) {\n\t\treturn 3;\n\t}\n\n\tif (hasFlag('color=256')) {\n\t\treturn 2;\n\t}\n\n\tif (haveStream && !streamIsTTY && forceColor === undefined) {\n\t\treturn 0;\n\t}\n\n\tconst min = forceColor || 0;\n\n\tif (env.TERM === 'dumb') {\n\t\treturn min;\n\t}\n\n\tif (process.platform === 'win32') {\n\t\t// Windows 10 build 10586 is the first Windows release that supports 256 colors.\n\t\t// Windows 10 build 14931 is the first release that supports 16m/TrueColor.\n\t\tconst osRelease = os.release().split('.');\n\t\tif (\n\t\t\tNumber(osRelease[0]) >= 10 &&\n\t\t\tNumber(osRelease[2]) >= 10586\n\t\t) {\n\t\t\treturn Number(osRelease[2]) >= 14931 ? 3 : 2;\n\t\t}\n\n\t\treturn 1;\n\t}\n\n\tif ('CI' in env) {\n\t\tif (['TRAVIS', 'CIRCLECI', 'APPVEYOR', 'GITLAB_CI', 'GITHUB_ACTIONS', 'BUILDKITE'].some(sign => sign in env) || env.CI_NAME === 'codeship') {\n\t\t\treturn 1;\n\t\t}\n\n\t\treturn min;\n\t}\n\n\tif ('TEAMCITY_VERSION' in env) {\n\t\treturn /^(9\\.(0*[1-9]\\d*)\\.|\\d{2,}\\.)/.test(env.TEAMCITY_VERSION) ? 1 : 0;\n\t}\n\n\tif (env.COLORTERM === 'truecolor') {\n\t\treturn 3;\n\t}\n\n\tif ('TERM_PROGRAM' in env) {\n\t\tconst version = parseInt((env.TERM_PROGRAM_VERSION || '').split('.')[0], 10);\n\n\t\tswitch (env.TERM_PROGRAM) {\n\t\t\tcase 'iTerm.app':\n\t\t\t\treturn version >= 3 ? 3 : 2;\n\t\t\tcase 'Apple_Terminal':\n\t\t\t\treturn 2;\n\t\t\t// No default\n\t\t}\n\t}\n\n\tif (/-256(color)?$/i.test(env.TERM)) {\n\t\treturn 2;\n\t}\n\n\tif (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)) {\n\t\treturn 1;\n\t}\n\n\tif ('COLORTERM' in env) {\n\t\treturn 1;\n\t}\n\n\treturn min;\n}\n\nfunction getSupportLevel(stream) {\n\tconst level = supportsColor(stream, stream && stream.isTTY);\n\treturn translateLevel(level);\n}\n\nmodule.exports = {\n\tsupportsColor: getSupportLevel,\n\tstdout: translateLevel(supportsColor(true, tty.isatty(1))),\n\tstderr: translateLevel(supportsColor(true, tty.isatty(2)))\n};\n", "'use strict';\n\nconst stringReplaceAll = (string, substring, replacer) => {\n\tlet index = string.indexOf(substring);\n\tif (index === -1) {\n\t\treturn string;\n\t}\n\n\tconst substringLength = substring.length;\n\tlet endIndex = 0;\n\tlet returnValue = '';\n\tdo {\n\t\treturnValue += string.substr(endIndex, index - endIndex) + substring + replacer;\n\t\tendIndex = index + substringLength;\n\t\tindex = string.indexOf(substring, endIndex);\n\t} while (index !== -1);\n\n\treturnValue += string.substr(endIndex);\n\treturn returnValue;\n};\n\nconst stringEncaseCRLFWithFirstIndex = (string, prefix, postfix, index) => {\n\tlet endIndex = 0;\n\tlet returnValue = '';\n\tdo {\n\t\tconst gotCR = string[index - 1] === '\\r';\n\t\treturnValue += string.substr(endIndex, (gotCR ? index - 1 : index) - endIndex) + prefix + (gotCR ? '\\r\\n' : '\\n') + postfix;\n\t\tendIndex = index + 1;\n\t\tindex = string.indexOf('\\n', endIndex);\n\t} while (index !== -1);\n\n\treturnValue += string.substr(endIndex);\n\treturn returnValue;\n};\n\nmodule.exports = {\n\tstringReplaceAll,\n\tstringEncaseCRLFWithFirstIndex\n};\n", "'use strict';\nconst TEMPLATE_REGEX = /(?:\\\\(u(?:[a-f\\d]{4}|\\{[a-f\\d]{1,6}\\})|x[a-f\\d]{2}|.))|(?:\\{(~)?(\\w+(?:\\([^)]*\\))?(?:\\.\\w+(?:\\([^)]*\\))?)*)(?:[ \\t]|(?=\\r?\\n)))|(\\})|((?:.|[\\r\\n\\f])+?)/gi;\nconst STYLE_REGEX = /(?:^|\\.)(\\w+)(?:\\(([^)]*)\\))?/g;\nconst STRING_REGEX = /^(['\"])((?:\\\\.|(?!\\1)[^\\\\])*)\\1$/;\nconst ESCAPE_REGEX = /\\\\(u(?:[a-f\\d]{4}|{[a-f\\d]{1,6}})|x[a-f\\d]{2}|.)|([^\\\\])/gi;\n\nconst ESCAPES = new Map([\n\t['n', '\\n'],\n\t['r', '\\r'],\n\t['t', '\\t'],\n\t['b', '\\b'],\n\t['f', '\\f'],\n\t['v', '\\v'],\n\t['0', '\\0'],\n\t['\\\\', '\\\\'],\n\t['e', '\\u001B'],\n\t['a', '\\u0007']\n]);\n\nfunction unescape(c) {\n\tconst u = c[0] === 'u';\n\tconst bracket = c[1] === '{';\n\n\tif ((u && !bracket && c.length === 5) || (c[0] === 'x' && c.length === 3)) {\n\t\treturn String.fromCharCode(parseInt(c.slice(1), 16));\n\t}\n\n\tif (u && bracket) {\n\t\treturn String.fromCodePoint(parseInt(c.slice(2, -1), 16));\n\t}\n\n\treturn ESCAPES.get(c) || c;\n}\n\nfunction parseArguments(name, arguments_) {\n\tconst results = [];\n\tconst chunks = arguments_.trim().split(/\\s*,\\s*/g);\n\tlet matches;\n\n\tfor (const chunk of chunks) {\n\t\tconst number = Number(chunk);\n\t\tif (!Number.isNaN(number)) {\n\t\t\tresults.push(number);\n\t\t} else if ((matches = chunk.match(STRING_REGEX))) {\n\t\t\tresults.push(matches[2].replace(ESCAPE_REGEX, (m, escape, character) => escape ? unescape(escape) : character));\n\t\t} else {\n\t\t\tthrow new Error(`Invalid Chalk template style argument: ${chunk} (in style '${name}')`);\n\t\t}\n\t}\n\n\treturn results;\n}\n\nfunction parseStyle(style) {\n\tSTYLE_REGEX.lastIndex = 0;\n\n\tconst results = [];\n\tlet matches;\n\n\twhile ((matches = STYLE_REGEX.exec(style)) !== null) {\n\t\tconst name = matches[1];\n\n\t\tif (matches[2]) {\n\t\t\tconst args = parseArguments(name, matches[2]);\n\t\t\tresults.push([name].concat(args));\n\t\t} else {\n\t\t\tresults.push([name]);\n\t\t}\n\t}\n\n\treturn results;\n}\n\nfunction buildStyle(chalk, styles) {\n\tconst enabled = {};\n\n\tfor (const layer of styles) {\n\t\tfor (const style of layer.styles) {\n\t\t\tenabled[style[0]] = layer.inverse ? null : style.slice(1);\n\t\t}\n\t}\n\n\tlet current = chalk;\n\tfor (const [styleName, styles] of Object.entries(enabled)) {\n\t\tif (!Array.isArray(styles)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (!(styleName in current)) {\n\t\t\tthrow new Error(`Unknown Chalk style: ${styleName}`);\n\t\t}\n\n\t\tcurrent = styles.length > 0 ? current[styleName](...styles) : current[styleName];\n\t}\n\n\treturn current;\n}\n\nmodule.exports = (chalk, temporary) => {\n\tconst styles = [];\n\tconst chunks = [];\n\tlet chunk = [];\n\n\t// eslint-disable-next-line max-params\n\ttemporary.replace(TEMPLATE_REGEX, (m, escapeCharacter, inverse, style, close, character) => {\n\t\tif (escapeCharacter) {\n\t\t\tchunk.push(unescape(escapeCharacter));\n\t\t} else if (style) {\n\t\t\tconst string = chunk.join('');\n\t\t\tchunk = [];\n\t\t\tchunks.push(styles.length === 0 ? string : buildStyle(chalk, styles)(string));\n\t\t\tstyles.push({inverse, styles: parseStyle(style)});\n\t\t} else if (close) {\n\t\t\tif (styles.length === 0) {\n\t\t\t\tthrow new Error('Found extraneous } in Chalk template literal');\n\t\t\t}\n\n\t\t\tchunks.push(buildStyle(chalk, styles)(chunk.join('')));\n\t\t\tchunk = [];\n\t\t\tstyles.pop();\n\t\t} else {\n\t\t\tchunk.push(character);\n\t\t}\n\t});\n\n\tchunks.push(chunk.join(''));\n\n\tif (styles.length > 0) {\n\t\tconst errMessage = `Chalk template literal is missing ${styles.length} closing bracket${styles.length === 1 ? '' : 's'} (\\`}\\`)`;\n\t\tthrow new Error(errMessage);\n\t}\n\n\treturn chunks.join('');\n};\n", "'use strict';\nconst ansiStyles = require('ansi-styles');\nconst {stdout: stdoutColor, stderr: stderrColor} = require('supports-color');\nconst {\n\tstringReplaceAll,\n\tstringEncaseCRLFWithFirstIndex\n} = require('./util');\n\nconst {isArray} = Array;\n\n// `supportsColor.level` \u2192 `ansiStyles.color[name]` mapping\nconst levelMapping = [\n\t'ansi',\n\t'ansi',\n\t'ansi256',\n\t'ansi16m'\n];\n\nconst styles = Object.create(null);\n\nconst applyOptions = (object, options = {}) => {\n\tif (options.level && !(Number.isInteger(options.level) && options.level >= 0 && options.level <= 3)) {\n\t\tthrow new Error('The `level` option should be an integer from 0 to 3');\n\t}\n\n\t// Detect level if not set manually\n\tconst colorLevel = stdoutColor ? stdoutColor.level : 0;\n\tobject.level = options.level === undefined ? colorLevel : options.level;\n};\n\nclass ChalkClass {\n\tconstructor(options) {\n\t\t// eslint-disable-next-line no-constructor-return\n\t\treturn chalkFactory(options);\n\t}\n}\n\nconst chalkFactory = options => {\n\tconst chalk = {};\n\tapplyOptions(chalk, options);\n\n\tchalk.template = (...arguments_) => chalkTag(chalk.template, ...arguments_);\n\n\tObject.setPrototypeOf(chalk, Chalk.prototype);\n\tObject.setPrototypeOf(chalk.template, chalk);\n\n\tchalk.template.constructor = () => {\n\t\tthrow new Error('`chalk.constructor()` is deprecated. Use `new chalk.Instance()` instead.');\n\t};\n\n\tchalk.template.Instance = ChalkClass;\n\n\treturn chalk.template;\n};\n\nfunction Chalk(options) {\n\treturn chalkFactory(options);\n}\n\nfor (const [styleName, style] of Object.entries(ansiStyles)) {\n\tstyles[styleName] = {\n\t\tget() {\n\t\t\tconst builder = createBuilder(this, createStyler(style.open, style.close, this._styler), this._isEmpty);\n\t\t\tObject.defineProperty(this, styleName, {value: builder});\n\t\t\treturn builder;\n\t\t}\n\t};\n}\n\nstyles.visible = {\n\tget() {\n\t\tconst builder = createBuilder(this, this._styler, true);\n\t\tObject.defineProperty(this, 'visible', {value: builder});\n\t\treturn builder;\n\t}\n};\n\nconst usedModels = ['rgb', 'hex', 'keyword', 'hsl', 'hsv', 'hwb', 'ansi', 'ansi256'];\n\nfor (const model of usedModels) {\n\tstyles[model] = {\n\t\tget() {\n\t\t\tconst {level} = this;\n\t\t\treturn function (...arguments_) {\n\t\t\t\tconst styler = createStyler(ansiStyles.color[levelMapping[level]][model](...arguments_), ansiStyles.color.close, this._styler);\n\t\t\t\treturn createBuilder(this, styler, this._isEmpty);\n\t\t\t};\n\t\t}\n\t};\n}\n\nfor (const model of usedModels) {\n\tconst bgModel = 'bg' + model[0].toUpperCase() + model.slice(1);\n\tstyles[bgModel] = {\n\t\tget() {\n\t\t\tconst {level} = this;\n\t\t\treturn function (...arguments_) {\n\t\t\t\tconst styler = createStyler(ansiStyles.bgColor[levelMapping[level]][model](...arguments_), ansiStyles.bgColor.close, this._styler);\n\t\t\t\treturn createBuilder(this, styler, this._isEmpty);\n\t\t\t};\n\t\t}\n\t};\n}\n\nconst proto = Object.defineProperties(() => {}, {\n\t...styles,\n\tlevel: {\n\t\tenumerable: true,\n\t\tget() {\n\t\t\treturn this._generator.level;\n\t\t},\n\t\tset(level) {\n\t\t\tthis._generator.level = level;\n\t\t}\n\t}\n});\n\nconst createStyler = (open, close, parent) => {\n\tlet openAll;\n\tlet closeAll;\n\tif (parent === undefined) {\n\t\topenAll = open;\n\t\tcloseAll = close;\n\t} else {\n\t\topenAll = parent.openAll + open;\n\t\tcloseAll = close + parent.closeAll;\n\t}\n\n\treturn {\n\t\topen,\n\t\tclose,\n\t\topenAll,\n\t\tcloseAll,\n\t\tparent\n\t};\n};\n\nconst createBuilder = (self, _styler, _isEmpty) => {\n\tconst builder = (...arguments_) => {\n\t\tif (isArray(arguments_[0]) && isArray(arguments_[0].raw)) {\n\t\t\t// Called as a template literal, for example: chalk.red`2 + 3 = {bold ${2+3}}`\n\t\t\treturn applyStyle(builder, chalkTag(builder, ...arguments_));\n\t\t}\n\n\t\t// Single argument is hot path, implicit coercion is faster than anything\n\t\t// eslint-disable-next-line no-implicit-coercion\n\t\treturn applyStyle(builder, (arguments_.length === 1) ? ('' + arguments_[0]) : arguments_.join(' '));\n\t};\n\n\t// We alter the prototype because we must return a function, but there is\n\t// no way to create a function with a different prototype\n\tObject.setPrototypeOf(builder, proto);\n\n\tbuilder._generator = self;\n\tbuilder._styler = _styler;\n\tbuilder._isEmpty = _isEmpty;\n\n\treturn builder;\n};\n\nconst applyStyle = (self, string) => {\n\tif (self.level <= 0 || !string) {\n\t\treturn self._isEmpty ? '' : string;\n\t}\n\n\tlet styler = self._styler;\n\n\tif (styler === undefined) {\n\t\treturn string;\n\t}\n\n\tconst {openAll, closeAll} = styler;\n\tif (string.indexOf('\\u001B') !== -1) {\n\t\twhile (styler !== undefined) {\n\t\t\t// Replace any instances already present with a re-opening code\n\t\t\t// otherwise only the part of the string until said closing code\n\t\t\t// will be colored, and the rest will simply be 'plain'.\n\t\t\tstring = stringReplaceAll(string, styler.close, styler.open);\n\n\t\t\tstyler = styler.parent;\n\t\t}\n\t}\n\n\t// We can move both next actions out of loop, because remaining actions in loop won't have\n\t// any/visible effect on parts we add here. Close the styling before a linebreak and reopen\n\t// after next line to fix a bleed issue on macOS: https://github.com/chalk/chalk/pull/92\n\tconst lfIndex = string.indexOf('\\n');\n\tif (lfIndex !== -1) {\n\t\tstring = stringEncaseCRLFWithFirstIndex(string, closeAll, openAll, lfIndex);\n\t}\n\n\treturn openAll + string + closeAll;\n};\n\nlet template;\nconst chalkTag = (chalk, ...strings) => {\n\tconst [firstString] = strings;\n\n\tif (!isArray(firstString) || !isArray(firstString.raw)) {\n\t\t// If chalk() was called by itself or with a string,\n\t\t// return the string itself as a string.\n\t\treturn strings.join(' ');\n\t}\n\n\tconst arguments_ = strings.slice(1);\n\tconst parts = [firstString.raw[0]];\n\n\tfor (let i = 1; i < firstString.length; i++) {\n\t\tparts.push(\n\t\t\tString(arguments_[i - 1]).replace(/[{}\\\\]/g, '\\\\$&'),\n\t\t\tString(firstString.raw[i])\n\t\t);\n\t}\n\n\tif (template === undefined) {\n\t\ttemplate = require('./templates');\n\t}\n\n\treturn template(chalk, parts.join(''));\n};\n\nObject.defineProperties(Chalk.prototype, styles);\n\nconst chalk = Chalk(); // eslint-disable-line new-cap\nchalk.supportsColor = stdoutColor;\nchalk.stderr = Chalk({level: stderrColor ? stderrColor.level : 0}); // eslint-disable-line new-cap\nchalk.stderr.supportsColor = stderrColor;\n\nmodule.exports = chalk;\n", "// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar pathModule = require('path');\nvar isWindows = process.platform === 'win32';\nvar fs = require('fs');\n\n// JavaScript implementation of realpath, ported from node pre-v6\n\nvar DEBUG = process.env.NODE_DEBUG && /fs/.test(process.env.NODE_DEBUG);\n\nfunction rethrow() {\n // Only enable in debug mode. A backtrace uses ~1000 bytes of heap space and\n // is fairly slow to generate.\n var callback;\n if (DEBUG) {\n var backtrace = new Error;\n callback = debugCallback;\n } else\n callback = missingCallback;\n\n return callback;\n\n function debugCallback(err) {\n if (err) {\n backtrace.message = err.message;\n err = backtrace;\n missingCallback(err);\n }\n }\n\n function missingCallback(err) {\n if (err) {\n if (process.throwDeprecation)\n throw err; // Forgot a callback but don't know where? Use NODE_DEBUG=fs\n else if (!process.noDeprecation) {\n var msg = 'fs: missing callback ' + (err.stack || err.message);\n if (process.traceDeprecation)\n console.trace(msg);\n else\n console.error(msg);\n }\n }\n }\n}\n\nfunction maybeCallback(cb) {\n return typeof cb === 'function' ? cb : rethrow();\n}\n\nvar normalize = pathModule.normalize;\n\n// Regexp that finds the next partion of a (partial) path\n// result is [base_with_slash, base], e.g. ['somedir/', 'somedir']\nif (isWindows) {\n var nextPartRe = /(.*?)(?:[\\/\\\\]+|$)/g;\n} else {\n var nextPartRe = /(.*?)(?:[\\/]+|$)/g;\n}\n\n// Regex to find the device root, including trailing slash. E.g. 'c:\\\\'.\nif (isWindows) {\n var splitRootRe = /^(?:[a-zA-Z]:|[\\\\\\/]{2}[^\\\\\\/]+[\\\\\\/][^\\\\\\/]+)?[\\\\\\/]*/;\n} else {\n var splitRootRe = /^[\\/]*/;\n}\n\nexports.realpathSync = function realpathSync(p, cache) {\n // make p is absolute\n p = pathModule.resolve(p);\n\n if (cache && Object.prototype.hasOwnProperty.call(cache, p)) {\n return cache[p];\n }\n\n var original = p,\n seenLinks = {},\n knownHard = {};\n\n // current character position in p\n var pos;\n // the partial path so far, including a trailing slash if any\n var current;\n // the partial path without a trailing slash (except when pointing at a root)\n var base;\n // the partial path scanned in the previous round, with slash\n var previous;\n\n start();\n\n function start() {\n // Skip over roots\n var m = splitRootRe.exec(p);\n pos = m[0].length;\n current = m[0];\n base = m[0];\n previous = '';\n\n // On windows, check that the root exists. On unix there is no need.\n if (isWindows && !knownHard[base]) {\n fs.lstatSync(base);\n knownHard[base] = true;\n }\n }\n\n // walk down the path, swapping out linked pathparts for their real\n // values\n // NB: p.length changes.\n while (pos < p.length) {\n // find the next part\n nextPartRe.lastIndex = pos;\n var result = nextPartRe.exec(p);\n previous = current;\n current += result[0];\n base = previous + result[1];\n pos = nextPartRe.lastIndex;\n\n // continue if not a symlink\n if (knownHard[base] || (cache && cache[base] === base)) {\n continue;\n }\n\n var resolvedLink;\n if (cache && Object.prototype.hasOwnProperty.call(cache, base)) {\n // some known symbolic link. no need to stat again.\n resolvedLink = cache[base];\n } else {\n var stat = fs.lstatSync(base);\n if (!stat.isSymbolicLink()) {\n knownHard[base] = true;\n if (cache) cache[base] = base;\n continue;\n }\n\n // read the link if it wasn't read before\n // dev/ino always return 0 on windows, so skip the check.\n var linkTarget = null;\n if (!isWindows) {\n var id = stat.dev.toString(32) + ':' + stat.ino.toString(32);\n if (seenLinks.hasOwnProperty(id)) {\n linkTarget = seenLinks[id];\n }\n }\n if (linkTarget === null) {\n fs.statSync(base);\n linkTarget = fs.readlinkSync(base);\n }\n resolvedLink = pathModule.resolve(previous, linkTarget);\n // track this, if given a cache.\n if (cache) cache[base] = resolvedLink;\n if (!isWindows) seenLinks[id] = linkTarget;\n }\n\n // resolve the link, then start over\n p = pathModule.resolve(resolvedLink, p.slice(pos));\n start();\n }\n\n if (cache) cache[original] = p;\n\n return p;\n};\n\n\nexports.realpath = function realpath(p, cache, cb) {\n if (typeof cb !== 'function') {\n cb = maybeCallback(cache);\n cache = null;\n }\n\n // make p is absolute\n p = pathModule.resolve(p);\n\n if (cache && Object.prototype.hasOwnProperty.call(cache, p)) {\n return process.nextTick(cb.bind(null, null, cache[p]));\n }\n\n var original = p,\n seenLinks = {},\n knownHard = {};\n\n // current character position in p\n var pos;\n // the partial path so far, including a trailing slash if any\n var current;\n // the partial path without a trailing slash (except when pointing at a root)\n var base;\n // the partial path scanned in the previous round, with slash\n var previous;\n\n start();\n\n function start() {\n // Skip over roots\n var m = splitRootRe.exec(p);\n pos = m[0].length;\n current = m[0];\n base = m[0];\n previous = '';\n\n // On windows, check that the root exists. On unix there is no need.\n if (isWindows && !knownHard[base]) {\n fs.lstat(base, function(err) {\n if (err) return cb(err);\n knownHard[base] = true;\n LOOP();\n });\n } else {\n process.nextTick(LOOP);\n }\n }\n\n // walk down the path, swapping out linked pathparts for their real\n // values\n function LOOP() {\n // stop if scanned past end of path\n if (pos >= p.length) {\n if (cache) cache[original] = p;\n return cb(null, p);\n }\n\n // find the next part\n nextPartRe.lastIndex = pos;\n var result = nextPartRe.exec(p);\n previous = current;\n current += result[0];\n base = previous + result[1];\n pos = nextPartRe.lastIndex;\n\n // continue if not a symlink\n if (knownHard[base] || (cache && cache[base] === base)) {\n return process.nextTick(LOOP);\n }\n\n if (cache && Object.prototype.hasOwnProperty.call(cache, base)) {\n // known symbolic link. no need to stat again.\n return gotResolvedLink(cache[base]);\n }\n\n return fs.lstat(base, gotStat);\n }\n\n function gotStat(err, stat) {\n if (err) return cb(err);\n\n // if not a symlink, skip to the next path part\n if (!stat.isSymbolicLink()) {\n knownHard[base] = true;\n if (cache) cache[base] = base;\n return process.nextTick(LOOP);\n }\n\n // stat & read the link if not read before\n // call gotTarget as soon as the link target is known\n // dev/ino always return 0 on windows, so skip the check.\n if (!isWindows) {\n var id = stat.dev.toString(32) + ':' + stat.ino.toString(32);\n if (seenLinks.hasOwnProperty(id)) {\n return gotTarget(null, seenLinks[id], base);\n }\n }\n fs.stat(base, function(err) {\n if (err) return cb(err);\n\n fs.readlink(base, function(err, target) {\n if (!isWindows) seenLinks[id] = target;\n gotTarget(err, target);\n });\n });\n }\n\n function gotTarget(err, target, base) {\n if (err) return cb(err);\n\n var resolvedLink = pathModule.resolve(previous, target);\n if (cache) cache[base] = resolvedLink;\n gotResolvedLink(resolvedLink);\n }\n\n function gotResolvedLink(resolvedLink) {\n // resolve the link, then start over\n p = pathModule.resolve(resolvedLink, p.slice(pos));\n start();\n }\n};\n", "module.exports = realpath\nrealpath.realpath = realpath\nrealpath.sync = realpathSync\nrealpath.realpathSync = realpathSync\nrealpath.monkeypatch = monkeypatch\nrealpath.unmonkeypatch = unmonkeypatch\n\nvar fs = require('fs')\nvar origRealpath = fs.realpath\nvar origRealpathSync = fs.realpathSync\n\nvar version = process.version\nvar ok = /^v[0-5]\\./.test(version)\nvar old = require('./old.js')\n\nfunction newError (er) {\n return er && er.syscall === 'realpath' && (\n er.code === 'ELOOP' ||\n er.code === 'ENOMEM' ||\n er.code === 'ENAMETOOLONG'\n )\n}\n\nfunction realpath (p, cache, cb) {\n if (ok) {\n return origRealpath(p, cache, cb)\n }\n\n if (typeof cache === 'function') {\n cb = cache\n cache = null\n }\n origRealpath(p, cache, function (er, result) {\n if (newError(er)) {\n old.realpath(p, cache, cb)\n } else {\n cb(er, result)\n }\n })\n}\n\nfunction realpathSync (p, cache) {\n if (ok) {\n return origRealpathSync(p, cache)\n }\n\n try {\n return origRealpathSync(p, cache)\n } catch (er) {\n if (newError(er)) {\n return old.realpathSync(p, cache)\n } else {\n throw er\n }\n }\n}\n\nfunction monkeypatch () {\n fs.realpath = realpath\n fs.realpathSync = realpathSync\n}\n\nfunction unmonkeypatch () {\n fs.realpath = origRealpath\n fs.realpathSync = origRealpathSync\n}\n", "module.exports = function (xs, fn) {\n var res = [];\n for (var i = 0; i < xs.length; i++) {\n var x = fn(xs[i], i);\n if (isArray(x)) res.push.apply(res, x);\n else res.push(x);\n }\n return res;\n};\n\nvar isArray = Array.isArray || function (xs) {\n return Object.prototype.toString.call(xs) === '[object Array]';\n};\n", "'use strict';\nmodule.exports = balanced;\nfunction balanced(a, b, str) {\n if (a instanceof RegExp) a = maybeMatch(a, str);\n if (b instanceof RegExp) b = maybeMatch(b, str);\n\n var r = range(a, b, str);\n\n return r && {\n start: r[0],\n end: r[1],\n pre: str.slice(0, r[0]),\n body: str.slice(r[0] + a.length, r[1]),\n post: str.slice(r[1] + b.length)\n };\n}\n\nfunction maybeMatch(reg, str) {\n var m = str.match(reg);\n return m ? m[0] : null;\n}\n\nbalanced.range = range;\nfunction range(a, b, str) {\n var begs, beg, left, right, result;\n var ai = str.indexOf(a);\n var bi = str.indexOf(b, ai + 1);\n var i = ai;\n\n if (ai >= 0 && bi > 0) {\n begs = [];\n left = str.length;\n\n while (i >= 0 && !result) {\n if (i == ai) {\n begs.push(i);\n ai = str.indexOf(a, i + 1);\n } else if (begs.length == 1) {\n result = [ begs.pop(), bi ];\n } else {\n beg = begs.pop();\n if (beg < left) {\n left = beg;\n right = bi;\n }\n\n bi = str.indexOf(b, i + 1);\n }\n\n i = ai < bi && ai >= 0 ? ai : bi;\n }\n\n if (begs.length) {\n result = [ left, right ];\n }\n }\n\n return result;\n}\n", "var concatMap = require('concat-map');\nvar balanced = require('balanced-match');\n\nmodule.exports = expandTop;\n\nvar escSlash = '\\0SLASH'+Math.random()+'\\0';\nvar escOpen = '\\0OPEN'+Math.random()+'\\0';\nvar escClose = '\\0CLOSE'+Math.random()+'\\0';\nvar escComma = '\\0COMMA'+Math.random()+'\\0';\nvar escPeriod = '\\0PERIOD'+Math.random()+'\\0';\n\nfunction numeric(str) {\n return parseInt(str, 10) == str\n ? parseInt(str, 10)\n : str.charCodeAt(0);\n}\n\nfunction escapeBraces(str) {\n return str.split('\\\\\\\\').join(escSlash)\n .split('\\\\{').join(escOpen)\n .split('\\\\}').join(escClose)\n .split('\\\\,').join(escComma)\n .split('\\\\.').join(escPeriod);\n}\n\nfunction unescapeBraces(str) {\n return str.split(escSlash).join('\\\\')\n .split(escOpen).join('{')\n .split(escClose).join('}')\n .split(escComma).join(',')\n .split(escPeriod).join('.');\n}\n\n\n// Basically just str.split(\",\"), but handling cases\n// where we have nested braced sections, which should be\n// treated as individual members, like {a,{b,c},d}\nfunction parseCommaParts(str) {\n if (!str)\n return [''];\n\n var parts = [];\n var m = balanced('{', '}', str);\n\n if (!m)\n return str.split(',');\n\n var pre = m.pre;\n var body = m.body;\n var post = m.post;\n var p = pre.split(',');\n\n p[p.length-1] += '{' + body + '}';\n var postParts = parseCommaParts(post);\n if (post.length) {\n p[p.length-1] += postParts.shift();\n p.push.apply(p, postParts);\n }\n\n parts.push.apply(parts, p);\n\n return parts;\n}\n\nfunction expandTop(str) {\n if (!str)\n return [];\n\n // I don't know why Bash 4.3 does this, but it does.\n // Anything starting with {} will have the first two bytes preserved\n // but *only* at the top level, so {},a}b will not expand to anything,\n // but a{},b}c will be expanded to [a}c,abc].\n // One could argue that this is a bug in Bash, but since the goal of\n // this module is to match Bash's rules, we escape a leading {}\n if (str.substr(0, 2) === '{}') {\n str = '\\\\{\\\\}' + str.substr(2);\n }\n\n return expand(escapeBraces(str), true).map(unescapeBraces);\n}\n\nfunction identity(e) {\n return e;\n}\n\nfunction embrace(str) {\n return '{' + str + '}';\n}\nfunction isPadded(el) {\n return /^-?0\\d/.test(el);\n}\n\nfunction lte(i, y) {\n return i <= y;\n}\nfunction gte(i, y) {\n return i >= y;\n}\n\nfunction expand(str, isTop) {\n var expansions = [];\n\n var m = balanced('{', '}', str);\n if (!m || /\\$$/.test(m.pre)) return [str];\n\n var isNumericSequence = /^-?\\d+\\.\\.-?\\d+(?:\\.\\.-?\\d+)?$/.test(m.body);\n var isAlphaSequence = /^[a-zA-Z]\\.\\.[a-zA-Z](?:\\.\\.-?\\d+)?$/.test(m.body);\n var isSequence = isNumericSequence || isAlphaSequence;\n var isOptions = m.body.indexOf(',') >= 0;\n if (!isSequence && !isOptions) {\n // {a},b}\n if (m.post.match(/,.*\\}/)) {\n str = m.pre + '{' + m.body + escClose + m.post;\n return expand(str);\n }\n return [str];\n }\n\n var n;\n if (isSequence) {\n n = m.body.split(/\\.\\./);\n } else {\n n = parseCommaParts(m.body);\n if (n.length === 1) {\n // x{{a,b}}y ==> x{a}y x{b}y\n n = expand(n[0], false).map(embrace);\n if (n.length === 1) {\n var post = m.post.length\n ? expand(m.post, false)\n : [''];\n return post.map(function(p) {\n return m.pre + n[0] + p;\n });\n }\n }\n }\n\n // at this point, n is the parts, and we know it's not a comma set\n // with a single entry.\n\n // no need to expand pre, since it is guaranteed to be free of brace-sets\n var pre = m.pre;\n var post = m.post.length\n ? expand(m.post, false)\n : [''];\n\n var N;\n\n if (isSequence) {\n var x = numeric(n[0]);\n var y = numeric(n[1]);\n var width = Math.max(n[0].length, n[1].length)\n var incr = n.length == 3\n ? Math.abs(numeric(n[2]))\n : 1;\n var test = lte;\n var reverse = y < x;\n if (reverse) {\n incr *= -1;\n test = gte;\n }\n var pad = n.some(isPadded);\n\n N = [];\n\n for (var i = x; test(i, y); i += incr) {\n var c;\n if (isAlphaSequence) {\n c = String.fromCharCode(i);\n if (c === '\\\\')\n c = '';\n } else {\n c = String(i);\n if (pad) {\n var need = width - c.length;\n if (need > 0) {\n var z = new Array(need + 1).join('0');\n if (i < 0)\n c = '-' + z + c.slice(1);\n else\n c = z + c;\n }\n }\n }\n N.push(c);\n }\n } else {\n N = concatMap(n, function(el) { return expand(el, false) });\n }\n\n for (var j = 0; j < N.length; j++) {\n for (var k = 0; k < post.length; k++) {\n var expansion = pre + N[j] + post[k];\n if (!isTop || isSequence || expansion)\n expansions.push(expansion);\n }\n }\n\n return expansions;\n}\n\n", "module.exports = minimatch\nminimatch.Minimatch = Minimatch\n\nvar path = { sep: '/' }\ntry {\n path = require('path')\n} catch (er) {}\n\nvar GLOBSTAR = minimatch.GLOBSTAR = Minimatch.GLOBSTAR = {}\nvar expand = require('brace-expansion')\n\nvar plTypes = {\n '!': { open: '(?:(?!(?:', close: '))[^/]*?)'},\n '?': { open: '(?:', close: ')?' },\n '+': { open: '(?:', close: ')+' },\n '*': { open: '(?:', close: ')*' },\n '@': { open: '(?:', close: ')' }\n}\n\n// any single thing other than /\n// don't need to escape / when using new RegExp()\nvar qmark = '[^/]'\n\n// * => any number of characters\nvar star = qmark + '*?'\n\n// ** when dots are allowed. Anything goes, except .. and .\n// not (^ or / followed by one or two dots followed by $ or /),\n// followed by anything, any number of times.\nvar twoStarDot = '(?:(?!(?:\\\\\\/|^)(?:\\\\.{1,2})($|\\\\\\/)).)*?'\n\n// not a ^ or / followed by a dot,\n// followed by anything, any number of times.\nvar twoStarNoDot = '(?:(?!(?:\\\\\\/|^)\\\\.).)*?'\n\n// characters that need to be escaped in RegExp.\nvar reSpecials = charSet('().*{}+?[]^$\\\\!')\n\n// \"abc\" -> { a:true, b:true, c:true }\nfunction charSet (s) {\n return s.split('').reduce(function (set, c) {\n set[c] = true\n return set\n }, {})\n}\n\n// normalizes slashes.\nvar slashSplit = /\\/+/\n\nminimatch.filter = filter\nfunction filter (pattern, options) {\n options = options || {}\n return function (p, i, list) {\n return minimatch(p, pattern, options)\n }\n}\n\nfunction ext (a, b) {\n a = a || {}\n b = b || {}\n var t = {}\n Object.keys(b).forEach(function (k) {\n t[k] = b[k]\n })\n Object.keys(a).forEach(function (k) {\n t[k] = a[k]\n })\n return t\n}\n\nminimatch.defaults = function (def) {\n if (!def || !Object.keys(def).length) return minimatch\n\n var orig = minimatch\n\n var m = function minimatch (p, pattern, options) {\n return orig.minimatch(p, pattern, ext(def, options))\n }\n\n m.Minimatch = function Minimatch (pattern, options) {\n return new orig.Minimatch(pattern, ext(def, options))\n }\n\n return m\n}\n\nMinimatch.defaults = function (def) {\n if (!def || !Object.keys(def).length) return Minimatch\n return minimatch.defaults(def).Minimatch\n}\n\nfunction minimatch (p, pattern, options) {\n if (typeof pattern !== 'string') {\n throw new TypeError('glob pattern string required')\n }\n\n if (!options) options = {}\n\n // shortcut: comments match nothing.\n if (!options.nocomment && pattern.charAt(0) === '#') {\n return false\n }\n\n // \"\" only matches \"\"\n if (pattern.trim() === '') return p === ''\n\n return new Minimatch(pattern, options).match(p)\n}\n\nfunction Minimatch (pattern, options) {\n if (!(this instanceof Minimatch)) {\n return new Minimatch(pattern, options)\n }\n\n if (typeof pattern !== 'string') {\n throw new TypeError('glob pattern string required')\n }\n\n if (!options) options = {}\n pattern = pattern.trim()\n\n // windows support: need to use /, not \\\n if (path.sep !== '/') {\n pattern = pattern.split(path.sep).join('/')\n }\n\n this.options = options\n this.set = []\n this.pattern = pattern\n this.regexp = null\n this.negate = false\n this.comment = false\n this.empty = false\n\n // make the set of regexps etc.\n this.make()\n}\n\nMinimatch.prototype.debug = function () {}\n\nMinimatch.prototype.make = make\nfunction make () {\n // don't do it more than once.\n if (this._made) return\n\n var pattern = this.pattern\n var options = this.options\n\n // empty patterns and comments match nothing.\n if (!options.nocomment && pattern.charAt(0) === '#') {\n this.comment = true\n return\n }\n if (!pattern) {\n this.empty = true\n return\n }\n\n // step 1: figure out negation, etc.\n this.parseNegate()\n\n // step 2: expand braces\n var set = this.globSet = this.braceExpand()\n\n if (options.debug) this.debug = console.error\n\n this.debug(this.pattern, set)\n\n // step 3: now we have a set, so turn each one into a series of path-portion\n // matching patterns.\n // These will be regexps, except in the case of \"**\", which is\n // set to the GLOBSTAR object for globstar behavior,\n // and will not contain any / characters\n set = this.globParts = set.map(function (s) {\n return s.split(slashSplit)\n })\n\n this.debug(this.pattern, set)\n\n // glob --> regexps\n set = set.map(function (s, si, set) {\n return s.map(this.parse, this)\n }, this)\n\n this.debug(this.pattern, set)\n\n // filter out everything that didn't compile properly.\n set = set.filter(function (s) {\n return s.indexOf(false) === -1\n })\n\n this.debug(this.pattern, set)\n\n this.set = set\n}\n\nMinimatch.prototype.parseNegate = parseNegate\nfunction parseNegate () {\n var pattern = this.pattern\n var negate = false\n var options = this.options\n var negateOffset = 0\n\n if (options.nonegate) return\n\n for (var i = 0, l = pattern.length\n ; i < l && pattern.charAt(i) === '!'\n ; i++) {\n negate = !negate\n negateOffset++\n }\n\n if (negateOffset) this.pattern = pattern.substr(negateOffset)\n this.negate = negate\n}\n\n// Brace expansion:\n// a{b,c}d -> abd acd\n// a{b,}c -> abc ac\n// a{0..3}d -> a0d a1d a2d a3d\n// a{b,c{d,e}f}g -> abg acdfg acefg\n// a{b,c}d{e,f}g -> abdeg acdeg abdeg abdfg\n//\n// Invalid sets are not expanded.\n// a{2..}b -> a{2..}b\n// a{b}c -> a{b}c\nminimatch.braceExpand = function (pattern, options) {\n return braceExpand(pattern, options)\n}\n\nMinimatch.prototype.braceExpand = braceExpand\n\nfunction braceExpand (pattern, options) {\n if (!options) {\n if (this instanceof Minimatch) {\n options = this.options\n } else {\n options = {}\n }\n }\n\n pattern = typeof pattern === 'undefined'\n ? this.pattern : pattern\n\n if (typeof pattern === 'undefined') {\n throw new TypeError('undefined pattern')\n }\n\n if (options.nobrace ||\n !pattern.match(/\\{.*\\}/)) {\n // shortcut. no need to expand.\n return [pattern]\n }\n\n return expand(pattern)\n}\n\n// parse a component of the expanded set.\n// At this point, no pattern may contain \"/\" in it\n// so we're going to return a 2d array, where each entry is the full\n// pattern, split on '/', and then turned into a regular expression.\n// A regexp is made at the end which joins each array with an\n// escaped /, and another full one which joins each regexp with |.\n//\n// Following the lead of Bash 4.1, note that \"**\" only has special meaning\n// when it is the *only* thing in a path portion. Otherwise, any series\n// of * is equivalent to a single *. Globstar behavior is enabled by\n// default, and can be disabled by setting options.noglobstar.\nMinimatch.prototype.parse = parse\nvar SUBPARSE = {}\nfunction parse (pattern, isSub) {\n if (pattern.length > 1024 * 64) {\n throw new TypeError('pattern is too long')\n }\n\n var options = this.options\n\n // shortcuts\n if (!options.noglobstar && pattern === '**') return GLOBSTAR\n if (pattern === '') return ''\n\n var re = ''\n var hasMagic = !!options.nocase\n var escaping = false\n // ? => one single character\n var patternListStack = []\n var negativeLists = []\n var stateChar\n var inClass = false\n var reClassStart = -1\n var classStart = -1\n // . and .. never match anything that doesn't start with .,\n // even when options.dot is set.\n var patternStart = pattern.charAt(0) === '.' ? '' // anything\n // not (start or / followed by . or .. followed by / or end)\n : options.dot ? '(?!(?:^|\\\\\\/)\\\\.{1,2}(?:$|\\\\\\/))'\n : '(?!\\\\.)'\n var self = this\n\n function clearStateChar () {\n if (stateChar) {\n // we had some state-tracking character\n // that wasn't consumed by this pass.\n switch (stateChar) {\n case '*':\n re += star\n hasMagic = true\n break\n case '?':\n re += qmark\n hasMagic = true\n break\n default:\n re += '\\\\' + stateChar\n break\n }\n self.debug('clearStateChar %j %j', stateChar, re)\n stateChar = false\n }\n }\n\n for (var i = 0, len = pattern.length, c\n ; (i < len) && (c = pattern.charAt(i))\n ; i++) {\n this.debug('%s\\t%s %s %j', pattern, i, re, c)\n\n // skip over any that are escaped.\n if (escaping && reSpecials[c]) {\n re += '\\\\' + c\n escaping = false\n continue\n }\n\n switch (c) {\n case '/':\n // completely not allowed, even escaped.\n // Should already be path-split by now.\n return false\n\n case '\\\\':\n clearStateChar()\n escaping = true\n continue\n\n // the various stateChar values\n // for the \"extglob\" stuff.\n case '?':\n case '*':\n case '+':\n case '@':\n case '!':\n this.debug('%s\\t%s %s %j <-- stateChar', pattern, i, re, c)\n\n // all of those are literals inside a class, except that\n // the glob [!a] means [^a] in regexp\n if (inClass) {\n this.debug(' in class')\n if (c === '!' && i === classStart + 1) c = '^'\n re += c\n continue\n }\n\n // if we already have a stateChar, then it means\n // that there was something like ** or +? in there.\n // Handle the stateChar, then proceed with this one.\n self.debug('call clearStateChar %j', stateChar)\n clearStateChar()\n stateChar = c\n // if extglob is disabled, then +(asdf|foo) isn't a thing.\n // just clear the statechar *now*, rather than even diving into\n // the patternList stuff.\n if (options.noext) clearStateChar()\n continue\n\n case '(':\n if (inClass) {\n re += '('\n continue\n }\n\n if (!stateChar) {\n re += '\\\\('\n continue\n }\n\n patternListStack.push({\n type: stateChar,\n start: i - 1,\n reStart: re.length,\n open: plTypes[stateChar].open,\n close: plTypes[stateChar].close\n })\n // negation is (?:(?!js)[^/]*)\n re += stateChar === '!' ? '(?:(?!(?:' : '(?:'\n this.debug('plType %j %j', stateChar, re)\n stateChar = false\n continue\n\n case ')':\n if (inClass || !patternListStack.length) {\n re += '\\\\)'\n continue\n }\n\n clearStateChar()\n hasMagic = true\n var pl = patternListStack.pop()\n // negation is (?:(?!js)[^/]*)\n // The others are (?:)\n re += pl.close\n if (pl.type === '!') {\n negativeLists.push(pl)\n }\n pl.reEnd = re.length\n continue\n\n case '|':\n if (inClass || !patternListStack.length || escaping) {\n re += '\\\\|'\n escaping = false\n continue\n }\n\n clearStateChar()\n re += '|'\n continue\n\n // these are mostly the same in regexp and glob\n case '[':\n // swallow any state-tracking char before the [\n clearStateChar()\n\n if (inClass) {\n re += '\\\\' + c\n continue\n }\n\n inClass = true\n classStart = i\n reClassStart = re.length\n re += c\n continue\n\n case ']':\n // a right bracket shall lose its special\n // meaning and represent itself in\n // a bracket expression if it occurs\n // first in the list. -- POSIX.2 2.8.3.2\n if (i === classStart + 1 || !inClass) {\n re += '\\\\' + c\n escaping = false\n continue\n }\n\n // handle the case where we left a class open.\n // \"[z-a]\" is valid, equivalent to \"\\[z-a\\]\"\n if (inClass) {\n // split where the last [ was, make sure we don't have\n // an invalid re. if so, re-walk the contents of the\n // would-be class to re-translate any characters that\n // were passed through as-is\n // TODO: It would probably be faster to determine this\n // without a try/catch and a new RegExp, but it's tricky\n // to do safely. For now, this is safe and works.\n var cs = pattern.substring(classStart + 1, i)\n try {\n RegExp('[' + cs + ']')\n } catch (er) {\n // not a valid class!\n var sp = this.parse(cs, SUBPARSE)\n re = re.substr(0, reClassStart) + '\\\\[' + sp[0] + '\\\\]'\n hasMagic = hasMagic || sp[1]\n inClass = false\n continue\n }\n }\n\n // finish up the class.\n hasMagic = true\n inClass = false\n re += c\n continue\n\n default:\n // swallow any state char that wasn't consumed\n clearStateChar()\n\n if (escaping) {\n // no need\n escaping = false\n } else if (reSpecials[c]\n && !(c === '^' && inClass)) {\n re += '\\\\'\n }\n\n re += c\n\n } // switch\n } // for\n\n // handle the case where we left a class open.\n // \"[abc\" is valid, equivalent to \"\\[abc\"\n if (inClass) {\n // split where the last [ was, and escape it\n // this is a huge pita. We now have to re-walk\n // the contents of the would-be class to re-translate\n // any characters that were passed through as-is\n cs = pattern.substr(classStart + 1)\n sp = this.parse(cs, SUBPARSE)\n re = re.substr(0, reClassStart) + '\\\\[' + sp[0]\n hasMagic = hasMagic || sp[1]\n }\n\n // handle the case where we had a +( thing at the *end*\n // of the pattern.\n // each pattern list stack adds 3 chars, and we need to go through\n // and escape any | chars that were passed through as-is for the regexp.\n // Go through and escape them, taking care not to double-escape any\n // | chars that were already escaped.\n for (pl = patternListStack.pop(); pl; pl = patternListStack.pop()) {\n var tail = re.slice(pl.reStart + pl.open.length)\n this.debug('setting tail', re, pl)\n // maybe some even number of \\, then maybe 1 \\, followed by a |\n tail = tail.replace(/((?:\\\\{2}){0,64})(\\\\?)\\|/g, function (_, $1, $2) {\n if (!$2) {\n // the | isn't already escaped, so escape it.\n $2 = '\\\\'\n }\n\n // need to escape all those slashes *again*, without escaping the\n // one that we need for escaping the | character. As it works out,\n // escaping an even number of slashes can be done by simply repeating\n // it exactly after itself. That's why this trick works.\n //\n // I am sorry that you have to see this.\n return $1 + $1 + $2 + '|'\n })\n\n this.debug('tail=%j\\n %s', tail, tail, pl, re)\n var t = pl.type === '*' ? star\n : pl.type === '?' ? qmark\n : '\\\\' + pl.type\n\n hasMagic = true\n re = re.slice(0, pl.reStart) + t + '\\\\(' + tail\n }\n\n // handle trailing things that only matter at the very end.\n clearStateChar()\n if (escaping) {\n // trailing \\\\\n re += '\\\\\\\\'\n }\n\n // only need to apply the nodot start if the re starts with\n // something that could conceivably capture a dot\n var addPatternStart = false\n switch (re.charAt(0)) {\n case '.':\n case '[':\n case '(': addPatternStart = true\n }\n\n // Hack to work around lack of negative lookbehind in JS\n // A pattern like: *.!(x).!(y|z) needs to ensure that a name\n // like 'a.xyz.yz' doesn't match. So, the first negative\n // lookahead, has to look ALL the way ahead, to the end of\n // the pattern.\n for (var n = negativeLists.length - 1; n > -1; n--) {\n var nl = negativeLists[n]\n\n var nlBefore = re.slice(0, nl.reStart)\n var nlFirst = re.slice(nl.reStart, nl.reEnd - 8)\n var nlLast = re.slice(nl.reEnd - 8, nl.reEnd)\n var nlAfter = re.slice(nl.reEnd)\n\n nlLast += nlAfter\n\n // Handle nested stuff like *(*.js|!(*.json)), where open parens\n // mean that we should *not* include the ) in the bit that is considered\n // \"after\" the negated section.\n var openParensBefore = nlBefore.split('(').length - 1\n var cleanAfter = nlAfter\n for (i = 0; i < openParensBefore; i++) {\n cleanAfter = cleanAfter.replace(/\\)[+*?]?/, '')\n }\n nlAfter = cleanAfter\n\n var dollar = ''\n if (nlAfter === '' && isSub !== SUBPARSE) {\n dollar = '$'\n }\n var newRe = nlBefore + nlFirst + nlAfter + dollar + nlLast\n re = newRe\n }\n\n // if the re is not \"\" at this point, then we need to make sure\n // it doesn't match against an empty path part.\n // Otherwise a/* will match a/, which it should not.\n if (re !== '' && hasMagic) {\n re = '(?=.)' + re\n }\n\n if (addPatternStart) {\n re = patternStart + re\n }\n\n // parsing just a piece of a larger pattern.\n if (isSub === SUBPARSE) {\n return [re, hasMagic]\n }\n\n // skip the regexp for non-magical patterns\n // unescape anything in it, though, so that it'll be\n // an exact match against a file etc.\n if (!hasMagic) {\n return globUnescape(pattern)\n }\n\n var flags = options.nocase ? 'i' : ''\n try {\n var regExp = new RegExp('^' + re + '$', flags)\n } catch (er) {\n // If it was an invalid regular expression, then it can't match\n // anything. This trick looks for a character after the end of\n // the string, which is of course impossible, except in multi-line\n // mode, but it's not a /m regex.\n return new RegExp('$.')\n }\n\n regExp._glob = pattern\n regExp._src = re\n\n return regExp\n}\n\nminimatch.makeRe = function (pattern, options) {\n return new Minimatch(pattern, options || {}).makeRe()\n}\n\nMinimatch.prototype.makeRe = makeRe\nfunction makeRe () {\n if (this.regexp || this.regexp === false) return this.regexp\n\n // at this point, this.set is a 2d array of partial\n // pattern strings, or \"**\".\n //\n // It's better to use .match(). This function shouldn't\n // be used, really, but it's pretty convenient sometimes,\n // when you just want to work with a regex.\n var set = this.set\n\n if (!set.length) {\n this.regexp = false\n return this.regexp\n }\n var options = this.options\n\n var twoStar = options.noglobstar ? star\n : options.dot ? twoStarDot\n : twoStarNoDot\n var flags = options.nocase ? 'i' : ''\n\n var re = set.map(function (pattern) {\n return pattern.map(function (p) {\n return (p === GLOBSTAR) ? twoStar\n : (typeof p === 'string') ? regExpEscape(p)\n : p._src\n }).join('\\\\\\/')\n }).join('|')\n\n // must match entire pattern\n // ending in a * or ** will make it less strict.\n re = '^(?:' + re + ')$'\n\n // can match anything, as long as it's not this.\n if (this.negate) re = '^(?!' + re + ').*$'\n\n try {\n this.regexp = new RegExp(re, flags)\n } catch (ex) {\n this.regexp = false\n }\n return this.regexp\n}\n\nminimatch.match = function (list, pattern, options) {\n options = options || {}\n var mm = new Minimatch(pattern, options)\n list = list.filter(function (f) {\n return mm.match(f)\n })\n if (mm.options.nonull && !list.length) {\n list.push(pattern)\n }\n return list\n}\n\nMinimatch.prototype.match = match\nfunction match (f, partial) {\n this.debug('match', f, this.pattern)\n // short-circuit in the case of busted things.\n // comments, etc.\n if (this.comment) return false\n if (this.empty) return f === ''\n\n if (f === '/' && partial) return true\n\n var options = this.options\n\n // windows: need to use /, not \\\n if (path.sep !== '/') {\n f = f.split(path.sep).join('/')\n }\n\n // treat the test path as a set of pathparts.\n f = f.split(slashSplit)\n this.debug(this.pattern, 'split', f)\n\n // just ONE of the pattern sets in this.set needs to match\n // in order for it to be valid. If negating, then just one\n // match means that we have failed.\n // Either way, return on the first hit.\n\n var set = this.set\n this.debug(this.pattern, 'set', set)\n\n // Find the basename of the path by looking for the last non-empty segment\n var filename\n var i\n for (i = f.length - 1; i >= 0; i--) {\n filename = f[i]\n if (filename) break\n }\n\n for (i = 0; i < set.length; i++) {\n var pattern = set[i]\n var file = f\n if (options.matchBase && pattern.length === 1) {\n file = [filename]\n }\n var hit = this.matchOne(file, pattern, partial)\n if (hit) {\n if (options.flipNegate) return true\n return !this.negate\n }\n }\n\n // didn't get any hits. this is success if it's a negative\n // pattern, failure otherwise.\n if (options.flipNegate) return false\n return this.negate\n}\n\n// set partial to true to test if, for example,\n// \"/a/b\" matches the start of \"/*/b/*/d\"\n// Partial means, if you run out of file before you run\n// out of pattern, then that's fine, as long as all\n// the parts match.\nMinimatch.prototype.matchOne = function (file, pattern, partial) {\n var options = this.options\n\n this.debug('matchOne',\n { 'this': this, file: file, pattern: pattern })\n\n this.debug('matchOne', file.length, pattern.length)\n\n for (var fi = 0,\n pi = 0,\n fl = file.length,\n pl = pattern.length\n ; (fi < fl) && (pi < pl)\n ; fi++, pi++) {\n this.debug('matchOne loop')\n var p = pattern[pi]\n var f = file[fi]\n\n this.debug(pattern, p, f)\n\n // should be impossible.\n // some invalid regexp stuff in the set.\n if (p === false) return false\n\n if (p === GLOBSTAR) {\n this.debug('GLOBSTAR', [pattern, p, f])\n\n // \"**\"\n // a/**/b/**/c would match the following:\n // a/b/x/y/z/c\n // a/x/y/z/b/c\n // a/b/x/b/x/c\n // a/b/c\n // To do this, take the rest of the pattern after\n // the **, and see if it would match the file remainder.\n // If so, return success.\n // If not, the ** \"swallows\" a segment, and try again.\n // This is recursively awful.\n //\n // a/**/b/**/c matching a/b/x/y/z/c\n // - a matches a\n // - doublestar\n // - matchOne(b/x/y/z/c, b/**/c)\n // - b matches b\n // - doublestar\n // - matchOne(x/y/z/c, c) -> no\n // - matchOne(y/z/c, c) -> no\n // - matchOne(z/c, c) -> no\n // - matchOne(c, c) yes, hit\n var fr = fi\n var pr = pi + 1\n if (pr === pl) {\n this.debug('** at the end')\n // a ** at the end will just swallow the rest.\n // We have found a match.\n // however, it will not swallow /.x, unless\n // options.dot is set.\n // . and .. are *never* matched by **, for explosively\n // exponential reasons.\n for (; fi < fl; fi++) {\n if (file[fi] === '.' || file[fi] === '..' ||\n (!options.dot && file[fi].charAt(0) === '.')) return false\n }\n return true\n }\n\n // ok, let's see if we can swallow whatever we can.\n while (fr < fl) {\n var swallowee = file[fr]\n\n this.debug('\\nglobstar while', file, fr, pattern, pr, swallowee)\n\n // XXX remove this slice. Just pass the start index.\n if (this.matchOne(file.slice(fr), pattern.slice(pr), partial)) {\n this.debug('globstar found match!', fr, fl, swallowee)\n // found a match.\n return true\n } else {\n // can't swallow \".\" or \"..\" ever.\n // can only swallow \".foo\" when explicitly asked.\n if (swallowee === '.' || swallowee === '..' ||\n (!options.dot && swallowee.charAt(0) === '.')) {\n this.debug('dot detected!', file, fr, pattern, pr)\n break\n }\n\n // ** swallows a segment, and continue.\n this.debug('globstar swallow a segment, and continue')\n fr++\n }\n }\n\n // no match was found.\n // However, in partial mode, we can't say this is necessarily over.\n // If there's more *pattern* left, then\n if (partial) {\n // ran out of file\n this.debug('\\n>>> no match, partial?', file, fr, pattern, pr)\n if (fr === fl) return true\n }\n return false\n }\n\n // something other than **\n // non-magic patterns just have to match exactly\n // patterns with magic have been turned into regexps.\n var hit\n if (typeof p === 'string') {\n if (options.nocase) {\n hit = f.toLowerCase() === p.toLowerCase()\n } else {\n hit = f === p\n }\n this.debug('string match', p, f, hit)\n } else {\n hit = f.match(p)\n this.debug('pattern match', p, f, hit)\n }\n\n if (!hit) return false\n }\n\n // Note: ending in / means that we'll get a final \"\"\n // at the end of the pattern. This can only match a\n // corresponding \"\" at the end of the file.\n // If the file ends in /, then it can only match a\n // a pattern that ends in /, unless the pattern just\n // doesn't have any more for it. But, a/b/ should *not*\n // match \"a/b/*\", even though \"\" matches against the\n // [^/]*? pattern, except in partial mode, where it might\n // simply not be reached yet.\n // However, a/b/ should still satisfy a/*\n\n // now either we fell off the end of the pattern, or we're done.\n if (fi === fl && pi === pl) {\n // ran out of pattern and filename at the same time.\n // an exact hit!\n return true\n } else if (fi === fl) {\n // ran out of file, but still had pattern left.\n // this is ok if we're doing the match as part of\n // a glob fs traversal.\n return partial\n } else if (pi === pl) {\n // ran out of pattern, still have file left.\n // this is only acceptable if we're on the very last\n // empty segment of a file with a trailing slash.\n // a/* should match a/b/\n var emptyFileEnd = (fi === fl - 1) && (file[fi] === '')\n return emptyFileEnd\n }\n\n // should be unreachable.\n throw new Error('wtf?')\n}\n\n// replace stuff like \\* with *\nfunction globUnescape (s) {\n return s.replace(/\\\\(.)/g, '$1')\n}\n\nfunction regExpEscape (s) {\n return s.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&')\n}\n", "if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n", "try {\n var util = require('util');\n /* istanbul ignore next */\n if (typeof util.inherits !== 'function') throw '';\n module.exports = util.inherits;\n} catch (e) {\n /* istanbul ignore next */\n module.exports = require('./inherits_browser.js');\n}\n", "'use strict';\n\nfunction posix(path) {\n\treturn path.charAt(0) === '/';\n}\n\nfunction win32(path) {\n\t// https://github.com/nodejs/node/blob/b3fcc245fb25539909ef1d5eaa01dbf92e168633/lib/path.js#L56\n\tvar splitDeviceRe = /^([a-zA-Z]:|[\\\\\\/]{2}[^\\\\\\/]+[\\\\\\/]+[^\\\\\\/]+)?([\\\\\\/])?([\\s\\S]*?)$/;\n\tvar result = splitDeviceRe.exec(path);\n\tvar device = result[1] || '';\n\tvar isUnc = Boolean(device && device.charAt(1) !== ':');\n\n\t// UNC paths are always absolute\n\treturn Boolean(result[2] || isUnc);\n}\n\nmodule.exports = process.platform === 'win32' ? win32 : posix;\nmodule.exports.posix = posix;\nmodule.exports.win32 = win32;\n", "exports.alphasort = alphasort\nexports.alphasorti = alphasorti\nexports.setopts = setopts\nexports.ownProp = ownProp\nexports.makeAbs = makeAbs\nexports.finish = finish\nexports.mark = mark\nexports.isIgnored = isIgnored\nexports.childrenIgnored = childrenIgnored\n\nfunction ownProp (obj, field) {\n return Object.prototype.hasOwnProperty.call(obj, field)\n}\n\nvar path = require(\"path\")\nvar minimatch = require(\"minimatch\")\nvar isAbsolute = require(\"path-is-absolute\")\nvar Minimatch = minimatch.Minimatch\n\nfunction alphasorti (a, b) {\n return a.toLowerCase().localeCompare(b.toLowerCase())\n}\n\nfunction alphasort (a, b) {\n return a.localeCompare(b)\n}\n\nfunction setupIgnores (self, options) {\n self.ignore = options.ignore || []\n\n if (!Array.isArray(self.ignore))\n self.ignore = [self.ignore]\n\n if (self.ignore.length) {\n self.ignore = self.ignore.map(ignoreMap)\n }\n}\n\n// ignore patterns are always in dot:true mode.\nfunction ignoreMap (pattern) {\n var gmatcher = null\n if (pattern.slice(-3) === '/**') {\n var gpattern = pattern.replace(/(\\/\\*\\*)+$/, '')\n gmatcher = new Minimatch(gpattern, { dot: true })\n }\n\n return {\n matcher: new Minimatch(pattern, { dot: true }),\n gmatcher: gmatcher\n }\n}\n\nfunction setopts (self, pattern, options) {\n if (!options)\n options = {}\n\n // base-matching: just use globstar for that.\n if (options.matchBase && -1 === pattern.indexOf(\"/\")) {\n if (options.noglobstar) {\n throw new Error(\"base matching requires globstar\")\n }\n pattern = \"**/\" + pattern\n }\n\n self.silent = !!options.silent\n self.pattern = pattern\n self.strict = options.strict !== false\n self.realpath = !!options.realpath\n self.realpathCache = options.realpathCache || Object.create(null)\n self.follow = !!options.follow\n self.dot = !!options.dot\n self.mark = !!options.mark\n self.nodir = !!options.nodir\n if (self.nodir)\n self.mark = true\n self.sync = !!options.sync\n self.nounique = !!options.nounique\n self.nonull = !!options.nonull\n self.nosort = !!options.nosort\n self.nocase = !!options.nocase\n self.stat = !!options.stat\n self.noprocess = !!options.noprocess\n self.absolute = !!options.absolute\n\n self.maxLength = options.maxLength || Infinity\n self.cache = options.cache || Object.create(null)\n self.statCache = options.statCache || Object.create(null)\n self.symlinks = options.symlinks || Object.create(null)\n\n setupIgnores(self, options)\n\n self.changedCwd = false\n var cwd = process.cwd()\n if (!ownProp(options, \"cwd\"))\n self.cwd = cwd\n else {\n self.cwd = path.resolve(options.cwd)\n self.changedCwd = self.cwd !== cwd\n }\n\n self.root = options.root || path.resolve(self.cwd, \"/\")\n self.root = path.resolve(self.root)\n if (process.platform === \"win32\")\n self.root = self.root.replace(/\\\\/g, \"/\")\n\n // TODO: is an absolute `cwd` supposed to be resolved against `root`?\n // e.g. { cwd: '/test', root: __dirname } === path.join(__dirname, '/test')\n self.cwdAbs = isAbsolute(self.cwd) ? self.cwd : makeAbs(self, self.cwd)\n if (process.platform === \"win32\")\n self.cwdAbs = self.cwdAbs.replace(/\\\\/g, \"/\")\n self.nomount = !!options.nomount\n\n // disable comments and negation in Minimatch.\n // Note that they are not supported in Glob itself anyway.\n options.nonegate = true\n options.nocomment = true\n\n self.minimatch = new Minimatch(pattern, options)\n self.options = self.minimatch.options\n}\n\nfunction finish (self) {\n var nou = self.nounique\n var all = nou ? [] : Object.create(null)\n\n for (var i = 0, l = self.matches.length; i < l; i ++) {\n var matches = self.matches[i]\n if (!matches || Object.keys(matches).length === 0) {\n if (self.nonull) {\n // do like the shell, and spit out the literal glob\n var literal = self.minimatch.globSet[i]\n if (nou)\n all.push(literal)\n else\n all[literal] = true\n }\n } else {\n // had matches\n var m = Object.keys(matches)\n if (nou)\n all.push.apply(all, m)\n else\n m.forEach(function (m) {\n all[m] = true\n })\n }\n }\n\n if (!nou)\n all = Object.keys(all)\n\n if (!self.nosort)\n all = all.sort(self.nocase ? alphasorti : alphasort)\n\n // at *some* point we statted all of these\n if (self.mark) {\n for (var i = 0; i < all.length; i++) {\n all[i] = self._mark(all[i])\n }\n if (self.nodir) {\n all = all.filter(function (e) {\n var notDir = !(/\\/$/.test(e))\n var c = self.cache[e] || self.cache[makeAbs(self, e)]\n if (notDir && c)\n notDir = c !== 'DIR' && !Array.isArray(c)\n return notDir\n })\n }\n }\n\n if (self.ignore.length)\n all = all.filter(function(m) {\n return !isIgnored(self, m)\n })\n\n self.found = all\n}\n\nfunction mark (self, p) {\n var abs = makeAbs(self, p)\n var c = self.cache[abs]\n var m = p\n if (c) {\n var isDir = c === 'DIR' || Array.isArray(c)\n var slash = p.slice(-1) === '/'\n\n if (isDir && !slash)\n m += '/'\n else if (!isDir && slash)\n m = m.slice(0, -1)\n\n if (m !== p) {\n var mabs = makeAbs(self, m)\n self.statCache[mabs] = self.statCache[abs]\n self.cache[mabs] = self.cache[abs]\n }\n }\n\n return m\n}\n\n// lotta situps...\nfunction makeAbs (self, f) {\n var abs = f\n if (f.charAt(0) === '/') {\n abs = path.join(self.root, f)\n } else if (isAbsolute(f) || f === '') {\n abs = f\n } else if (self.changedCwd) {\n abs = path.resolve(self.cwd, f)\n } else {\n abs = path.resolve(f)\n }\n\n if (process.platform === 'win32')\n abs = abs.replace(/\\\\/g, '/')\n\n return abs\n}\n\n\n// Return true, if pattern ends with globstar '**', for the accompanying parent directory.\n// Ex:- If node_modules/** is the pattern, add 'node_modules' to ignore list along with it's contents\nfunction isIgnored (self, path) {\n if (!self.ignore.length)\n return false\n\n return self.ignore.some(function(item) {\n return item.matcher.match(path) || !!(item.gmatcher && item.gmatcher.match(path))\n })\n}\n\nfunction childrenIgnored (self, path) {\n if (!self.ignore.length)\n return false\n\n return self.ignore.some(function(item) {\n return !!(item.gmatcher && item.gmatcher.match(path))\n })\n}\n", "module.exports = globSync\nglobSync.GlobSync = GlobSync\n\nvar fs = require('fs')\nvar rp = require('fs.realpath')\nvar minimatch = require('minimatch')\nvar Minimatch = minimatch.Minimatch\nvar Glob = require('./glob.js').Glob\nvar util = require('util')\nvar path = require('path')\nvar assert = require('assert')\nvar isAbsolute = require('path-is-absolute')\nvar common = require('./common.js')\nvar alphasort = common.alphasort\nvar alphasorti = common.alphasorti\nvar setopts = common.setopts\nvar ownProp = common.ownProp\nvar childrenIgnored = common.childrenIgnored\nvar isIgnored = common.isIgnored\n\nfunction globSync (pattern, options) {\n if (typeof options === 'function' || arguments.length === 3)\n throw new TypeError('callback provided to sync glob\\n'+\n 'See: https://github.com/isaacs/node-glob/issues/167')\n\n return new GlobSync(pattern, options).found\n}\n\nfunction GlobSync (pattern, options) {\n if (!pattern)\n throw new Error('must provide pattern')\n\n if (typeof options === 'function' || arguments.length === 3)\n throw new TypeError('callback provided to sync glob\\n'+\n 'See: https://github.com/isaacs/node-glob/issues/167')\n\n if (!(this instanceof GlobSync))\n return new GlobSync(pattern, options)\n\n setopts(this, pattern, options)\n\n if (this.noprocess)\n return this\n\n var n = this.minimatch.set.length\n this.matches = new Array(n)\n for (var i = 0; i < n; i ++) {\n this._process(this.minimatch.set[i], i, false)\n }\n this._finish()\n}\n\nGlobSync.prototype._finish = function () {\n assert(this instanceof GlobSync)\n if (this.realpath) {\n var self = this\n this.matches.forEach(function (matchset, index) {\n var set = self.matches[index] = Object.create(null)\n for (var p in matchset) {\n try {\n p = self._makeAbs(p)\n var real = rp.realpathSync(p, self.realpathCache)\n set[real] = true\n } catch (er) {\n if (er.syscall === 'stat')\n set[self._makeAbs(p)] = true\n else\n throw er\n }\n }\n })\n }\n common.finish(this)\n}\n\n\nGlobSync.prototype._process = function (pattern, index, inGlobStar) {\n assert(this instanceof GlobSync)\n\n // Get the first [n] parts of pattern that are all strings.\n var n = 0\n while (typeof pattern[n] === 'string') {\n n ++\n }\n // now n is the index of the first one that is *not* a string.\n\n // See if there's anything else\n var prefix\n switch (n) {\n // if not, then this is rather simple\n case pattern.length:\n this._processSimple(pattern.join('/'), index)\n return\n\n case 0:\n // pattern *starts* with some non-trivial item.\n // going to readdir(cwd), but not include the prefix in matches.\n prefix = null\n break\n\n default:\n // pattern has some string bits in the front.\n // whatever it starts with, whether that's 'absolute' like /foo/bar,\n // or 'relative' like '../baz'\n prefix = pattern.slice(0, n).join('/')\n break\n }\n\n var remain = pattern.slice(n)\n\n // get the list of entries.\n var read\n if (prefix === null)\n read = '.'\n else if (isAbsolute(prefix) || isAbsolute(pattern.join('/'))) {\n if (!prefix || !isAbsolute(prefix))\n prefix = '/' + prefix\n read = prefix\n } else\n read = prefix\n\n var abs = this._makeAbs(read)\n\n //if ignored, skip processing\n if (childrenIgnored(this, read))\n return\n\n var isGlobStar = remain[0] === minimatch.GLOBSTAR\n if (isGlobStar)\n this._processGlobStar(prefix, read, abs, remain, index, inGlobStar)\n else\n this._processReaddir(prefix, read, abs, remain, index, inGlobStar)\n}\n\n\nGlobSync.prototype._processReaddir = function (prefix, read, abs, remain, index, inGlobStar) {\n var entries = this._readdir(abs, inGlobStar)\n\n // if the abs isn't a dir, then nothing can match!\n if (!entries)\n return\n\n // It will only match dot entries if it starts with a dot, or if\n // dot is set. Stuff like @(.foo|.bar) isn't allowed.\n var pn = remain[0]\n var negate = !!this.minimatch.negate\n var rawGlob = pn._glob\n var dotOk = this.dot || rawGlob.charAt(0) === '.'\n\n var matchedEntries = []\n for (var i = 0; i < entries.length; i++) {\n var e = entries[i]\n if (e.charAt(0) !== '.' || dotOk) {\n var m\n if (negate && !prefix) {\n m = !e.match(pn)\n } else {\n m = e.match(pn)\n }\n if (m)\n matchedEntries.push(e)\n }\n }\n\n var len = matchedEntries.length\n // If there are no matched entries, then nothing matches.\n if (len === 0)\n return\n\n // if this is the last remaining pattern bit, then no need for\n // an additional stat *unless* the user has specified mark or\n // stat explicitly. We know they exist, since readdir returned\n // them.\n\n if (remain.length === 1 && !this.mark && !this.stat) {\n if (!this.matches[index])\n this.matches[index] = Object.create(null)\n\n for (var i = 0; i < len; i ++) {\n var e = matchedEntries[i]\n if (prefix) {\n if (prefix.slice(-1) !== '/')\n e = prefix + '/' + e\n else\n e = prefix + e\n }\n\n if (e.charAt(0) === '/' && !this.nomount) {\n e = path.join(this.root, e)\n }\n this._emitMatch(index, e)\n }\n // This was the last one, and no stats were needed\n return\n }\n\n // now test all matched entries as stand-ins for that part\n // of the pattern.\n remain.shift()\n for (var i = 0; i < len; i ++) {\n var e = matchedEntries[i]\n var newPattern\n if (prefix)\n newPattern = [prefix, e]\n else\n newPattern = [e]\n this._process(newPattern.concat(remain), index, inGlobStar)\n }\n}\n\n\nGlobSync.prototype._emitMatch = function (index, e) {\n if (isIgnored(this, e))\n return\n\n var abs = this._makeAbs(e)\n\n if (this.mark)\n e = this._mark(e)\n\n if (this.absolute) {\n e = abs\n }\n\n if (this.matches[index][e])\n return\n\n if (this.nodir) {\n var c = this.cache[abs]\n if (c === 'DIR' || Array.isArray(c))\n return\n }\n\n this.matches[index][e] = true\n\n if (this.stat)\n this._stat(e)\n}\n\n\nGlobSync.prototype._readdirInGlobStar = function (abs) {\n // follow all symlinked directories forever\n // just proceed as if this is a non-globstar situation\n if (this.follow)\n return this._readdir(abs, false)\n\n var entries\n var lstat\n var stat\n try {\n lstat = fs.lstatSync(abs)\n } catch (er) {\n if (er.code === 'ENOENT') {\n // lstat failed, doesn't exist\n return null\n }\n }\n\n var isSym = lstat && lstat.isSymbolicLink()\n this.symlinks[abs] = isSym\n\n // If it's not a symlink or a dir, then it's definitely a regular file.\n // don't bother doing a readdir in that case.\n if (!isSym && lstat && !lstat.isDirectory())\n this.cache[abs] = 'FILE'\n else\n entries = this._readdir(abs, false)\n\n return entries\n}\n\nGlobSync.prototype._readdir = function (abs, inGlobStar) {\n var entries\n\n if (inGlobStar && !ownProp(this.symlinks, abs))\n return this._readdirInGlobStar(abs)\n\n if (ownProp(this.cache, abs)) {\n var c = this.cache[abs]\n if (!c || c === 'FILE')\n return null\n\n if (Array.isArray(c))\n return c\n }\n\n try {\n return this._readdirEntries(abs, fs.readdirSync(abs))\n } catch (er) {\n this._readdirError(abs, er)\n return null\n }\n}\n\nGlobSync.prototype._readdirEntries = function (abs, entries) {\n // if we haven't asked to stat everything, then just\n // assume that everything in there exists, so we can avoid\n // having to stat it a second time.\n if (!this.mark && !this.stat) {\n for (var i = 0; i < entries.length; i ++) {\n var e = entries[i]\n if (abs === '/')\n e = abs + e\n else\n e = abs + '/' + e\n this.cache[e] = true\n }\n }\n\n this.cache[abs] = entries\n\n // mark and cache dir-ness\n return entries\n}\n\nGlobSync.prototype._readdirError = function (f, er) {\n // handle errors, and cache the information\n switch (er.code) {\n case 'ENOTSUP': // https://github.com/isaacs/node-glob/issues/205\n case 'ENOTDIR': // totally normal. means it *does* exist.\n var abs = this._makeAbs(f)\n this.cache[abs] = 'FILE'\n if (abs === this.cwdAbs) {\n var error = new Error(er.code + ' invalid cwd ' + this.cwd)\n error.path = this.cwd\n error.code = er.code\n throw error\n }\n break\n\n case 'ENOENT': // not terribly unusual\n case 'ELOOP':\n case 'ENAMETOOLONG':\n case 'UNKNOWN':\n this.cache[this._makeAbs(f)] = false\n break\n\n default: // some unusual error. Treat as failure.\n this.cache[this._makeAbs(f)] = false\n if (this.strict)\n throw er\n if (!this.silent)\n console.error('glob error', er)\n break\n }\n}\n\nGlobSync.prototype._processGlobStar = function (prefix, read, abs, remain, index, inGlobStar) {\n\n var entries = this._readdir(abs, inGlobStar)\n\n // no entries means not a dir, so it can never have matches\n // foo.txt/** doesn't match foo.txt\n if (!entries)\n return\n\n // test without the globstar, and with every child both below\n // and replacing the globstar.\n var remainWithoutGlobStar = remain.slice(1)\n var gspref = prefix ? [ prefix ] : []\n var noGlobStar = gspref.concat(remainWithoutGlobStar)\n\n // the noGlobStar pattern exits the inGlobStar state\n this._process(noGlobStar, index, false)\n\n var len = entries.length\n var isSym = this.symlinks[abs]\n\n // If it's a symlink, and we're in a globstar, then stop\n if (isSym && inGlobStar)\n return\n\n for (var i = 0; i < len; i++) {\n var e = entries[i]\n if (e.charAt(0) === '.' && !this.dot)\n continue\n\n // these two cases enter the inGlobStar state\n var instead = gspref.concat(entries[i], remainWithoutGlobStar)\n this._process(instead, index, true)\n\n var below = gspref.concat(entries[i], remain)\n this._process(below, index, true)\n }\n}\n\nGlobSync.prototype._processSimple = function (prefix, index) {\n // XXX review this. Shouldn't it be doing the mounting etc\n // before doing stat? kinda weird?\n var exists = this._stat(prefix)\n\n if (!this.matches[index])\n this.matches[index] = Object.create(null)\n\n // If it doesn't exist, then just mark the lack of results\n if (!exists)\n return\n\n if (prefix && isAbsolute(prefix) && !this.nomount) {\n var trail = /[\\/\\\\]$/.test(prefix)\n if (prefix.charAt(0) === '/') {\n prefix = path.join(this.root, prefix)\n } else {\n prefix = path.resolve(this.root, prefix)\n if (trail)\n prefix += '/'\n }\n }\n\n if (process.platform === 'win32')\n prefix = prefix.replace(/\\\\/g, '/')\n\n // Mark this as a match\n this._emitMatch(index, prefix)\n}\n\n// Returns either 'DIR', 'FILE', or false\nGlobSync.prototype._stat = function (f) {\n var abs = this._makeAbs(f)\n var needDir = f.slice(-1) === '/'\n\n if (f.length > this.maxLength)\n return false\n\n if (!this.stat && ownProp(this.cache, abs)) {\n var c = this.cache[abs]\n\n if (Array.isArray(c))\n c = 'DIR'\n\n // It exists, but maybe not how we need it\n if (!needDir || c === 'DIR')\n return c\n\n if (needDir && c === 'FILE')\n return false\n\n // otherwise we have to stat, because maybe c=true\n // if we know it exists, but not what it is.\n }\n\n var exists\n var stat = this.statCache[abs]\n if (!stat) {\n var lstat\n try {\n lstat = fs.lstatSync(abs)\n } catch (er) {\n if (er && (er.code === 'ENOENT' || er.code === 'ENOTDIR')) {\n this.statCache[abs] = false\n return false\n }\n }\n\n if (lstat && lstat.isSymbolicLink()) {\n try {\n stat = fs.statSync(abs)\n } catch (er) {\n stat = lstat\n }\n } else {\n stat = lstat\n }\n }\n\n this.statCache[abs] = stat\n\n var c = true\n if (stat)\n c = stat.isDirectory() ? 'DIR' : 'FILE'\n\n this.cache[abs] = this.cache[abs] || c\n\n if (needDir && c === 'FILE')\n return false\n\n return c\n}\n\nGlobSync.prototype._mark = function (p) {\n return common.mark(this, p)\n}\n\nGlobSync.prototype._makeAbs = function (f) {\n return common.makeAbs(this, f)\n}\n", "// Returns a wrapper function that returns a wrapped callback\n// The wrapper function should do some stuff, and return a\n// presumably different callback function.\n// This makes sure that own properties are retained, so that\n// decorations and such are not lost along the way.\nmodule.exports = wrappy\nfunction wrappy (fn, cb) {\n if (fn && cb) return wrappy(fn)(cb)\n\n if (typeof fn !== 'function')\n throw new TypeError('need wrapper function')\n\n Object.keys(fn).forEach(function (k) {\n wrapper[k] = fn[k]\n })\n\n return wrapper\n\n function wrapper() {\n var args = new Array(arguments.length)\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i]\n }\n var ret = fn.apply(this, args)\n var cb = args[args.length-1]\n if (typeof ret === 'function' && ret !== cb) {\n Object.keys(cb).forEach(function (k) {\n ret[k] = cb[k]\n })\n }\n return ret\n }\n}\n", "var wrappy = require('wrappy')\nmodule.exports = wrappy(once)\nmodule.exports.strict = wrappy(onceStrict)\n\nonce.proto = once(function () {\n Object.defineProperty(Function.prototype, 'once', {\n value: function () {\n return once(this)\n },\n configurable: true\n })\n\n Object.defineProperty(Function.prototype, 'onceStrict', {\n value: function () {\n return onceStrict(this)\n },\n configurable: true\n })\n})\n\nfunction once (fn) {\n var f = function () {\n if (f.called) return f.value\n f.called = true\n return f.value = fn.apply(this, arguments)\n }\n f.called = false\n return f\n}\n\nfunction onceStrict (fn) {\n var f = function () {\n if (f.called)\n throw new Error(f.onceError)\n f.called = true\n return f.value = fn.apply(this, arguments)\n }\n var name = fn.name || 'Function wrapped with `once`'\n f.onceError = name + \" shouldn't be called more than once\"\n f.called = false\n return f\n}\n", "var wrappy = require('wrappy')\nvar reqs = Object.create(null)\nvar once = require('once')\n\nmodule.exports = wrappy(inflight)\n\nfunction inflight (key, cb) {\n if (reqs[key]) {\n reqs[key].push(cb)\n return null\n } else {\n reqs[key] = [cb]\n return makeres(key)\n }\n}\n\nfunction makeres (key) {\n return once(function RES () {\n var cbs = reqs[key]\n var len = cbs.length\n var args = slice(arguments)\n\n // XXX It's somewhat ambiguous whether a new callback added in this\n // pass should be queued for later execution if something in the\n // list of callbacks throws, or if it should just be discarded.\n // However, it's such an edge case that it hardly matters, and either\n // choice is likely as surprising as the other.\n // As it happens, we do go ahead and schedule it for later execution.\n try {\n for (var i = 0; i < len; i++) {\n cbs[i].apply(null, args)\n }\n } finally {\n if (cbs.length > len) {\n // added more in the interim.\n // de-zalgo, just in case, but don't call again.\n cbs.splice(0, len)\n process.nextTick(function () {\n RES.apply(null, args)\n })\n } else {\n delete reqs[key]\n }\n }\n })\n}\n\nfunction slice (args) {\n var length = args.length\n var array = []\n\n for (var i = 0; i < length; i++) array[i] = args[i]\n return array\n}\n", "// Approach:\n//\n// 1. Get the minimatch set\n// 2. For each pattern in the set, PROCESS(pattern, false)\n// 3. Store matches per-set, then uniq them\n//\n// PROCESS(pattern, inGlobStar)\n// Get the first [n] items from pattern that are all strings\n// Join these together. This is PREFIX.\n// If there is no more remaining, then stat(PREFIX) and\n// add to matches if it succeeds. END.\n//\n// If inGlobStar and PREFIX is symlink and points to dir\n// set ENTRIES = []\n// else readdir(PREFIX) as ENTRIES\n// If fail, END\n//\n// with ENTRIES\n// If pattern[n] is GLOBSTAR\n// // handle the case where the globstar match is empty\n// // by pruning it out, and testing the resulting pattern\n// PROCESS(pattern[0..n] + pattern[n+1 .. $], false)\n// // handle other cases.\n// for ENTRY in ENTRIES (not dotfiles)\n// // attach globstar + tail onto the entry\n// // Mark that this entry is a globstar match\n// PROCESS(pattern[0..n] + ENTRY + pattern[n .. $], true)\n//\n// else // not globstar\n// for ENTRY in ENTRIES (not dotfiles, unless pattern[n] is dot)\n// Test ENTRY against pattern[n]\n// If fails, continue\n// If passes, PROCESS(pattern[0..n] + item + pattern[n+1 .. $])\n//\n// Caveat:\n// Cache all stats and readdirs results to minimize syscall. Since all\n// we ever care about is existence and directory-ness, we can just keep\n// `true` for files, and [children,...] for directories, or `false` for\n// things that don't exist.\n\nmodule.exports = glob\n\nvar fs = require('fs')\nvar rp = require('fs.realpath')\nvar minimatch = require('minimatch')\nvar Minimatch = minimatch.Minimatch\nvar inherits = require('inherits')\nvar EE = require('events').EventEmitter\nvar path = require('path')\nvar assert = require('assert')\nvar isAbsolute = require('path-is-absolute')\nvar globSync = require('./sync.js')\nvar common = require('./common.js')\nvar alphasort = common.alphasort\nvar alphasorti = common.alphasorti\nvar setopts = common.setopts\nvar ownProp = common.ownProp\nvar inflight = require('inflight')\nvar util = require('util')\nvar childrenIgnored = common.childrenIgnored\nvar isIgnored = common.isIgnored\n\nvar once = require('once')\n\nfunction glob (pattern, options, cb) {\n if (typeof options === 'function') cb = options, options = {}\n if (!options) options = {}\n\n if (options.sync) {\n if (cb)\n throw new TypeError('callback provided to sync glob')\n return globSync(pattern, options)\n }\n\n return new Glob(pattern, options, cb)\n}\n\nglob.sync = globSync\nvar GlobSync = glob.GlobSync = globSync.GlobSync\n\n// old api surface\nglob.glob = glob\n\nfunction extend (origin, add) {\n if (add === null || typeof add !== 'object') {\n return origin\n }\n\n var keys = Object.keys(add)\n var i = keys.length\n while (i--) {\n origin[keys[i]] = add[keys[i]]\n }\n return origin\n}\n\nglob.hasMagic = function (pattern, options_) {\n var options = extend({}, options_)\n options.noprocess = true\n\n var g = new Glob(pattern, options)\n var set = g.minimatch.set\n\n if (!pattern)\n return false\n\n if (set.length > 1)\n return true\n\n for (var j = 0; j < set[0].length; j++) {\n if (typeof set[0][j] !== 'string')\n return true\n }\n\n return false\n}\n\nglob.Glob = Glob\ninherits(Glob, EE)\nfunction Glob (pattern, options, cb) {\n if (typeof options === 'function') {\n cb = options\n options = null\n }\n\n if (options && options.sync) {\n if (cb)\n throw new TypeError('callback provided to sync glob')\n return new GlobSync(pattern, options)\n }\n\n if (!(this instanceof Glob))\n return new Glob(pattern, options, cb)\n\n setopts(this, pattern, options)\n this._didRealPath = false\n\n // process each pattern in the minimatch set\n var n = this.minimatch.set.length\n\n // The matches are stored as {: true,...} so that\n // duplicates are automagically pruned.\n // Later, we do an Object.keys() on these.\n // Keep them as a list so we can fill in when nonull is set.\n this.matches = new Array(n)\n\n if (typeof cb === 'function') {\n cb = once(cb)\n this.on('error', cb)\n this.on('end', function (matches) {\n cb(null, matches)\n })\n }\n\n var self = this\n this._processing = 0\n\n this._emitQueue = []\n this._processQueue = []\n this.paused = false\n\n if (this.noprocess)\n return this\n\n if (n === 0)\n return done()\n\n var sync = true\n for (var i = 0; i < n; i ++) {\n this._process(this.minimatch.set[i], i, false, done)\n }\n sync = false\n\n function done () {\n --self._processing\n if (self._processing <= 0) {\n if (sync) {\n process.nextTick(function () {\n self._finish()\n })\n } else {\n self._finish()\n }\n }\n }\n}\n\nGlob.prototype._finish = function () {\n assert(this instanceof Glob)\n if (this.aborted)\n return\n\n if (this.realpath && !this._didRealpath)\n return this._realpath()\n\n common.finish(this)\n this.emit('end', this.found)\n}\n\nGlob.prototype._realpath = function () {\n if (this._didRealpath)\n return\n\n this._didRealpath = true\n\n var n = this.matches.length\n if (n === 0)\n return this._finish()\n\n var self = this\n for (var i = 0; i < this.matches.length; i++)\n this._realpathSet(i, next)\n\n function next () {\n if (--n === 0)\n self._finish()\n }\n}\n\nGlob.prototype._realpathSet = function (index, cb) {\n var matchset = this.matches[index]\n if (!matchset)\n return cb()\n\n var found = Object.keys(matchset)\n var self = this\n var n = found.length\n\n if (n === 0)\n return cb()\n\n var set = this.matches[index] = Object.create(null)\n found.forEach(function (p, i) {\n // If there's a problem with the stat, then it means that\n // one or more of the links in the realpath couldn't be\n // resolved. just return the abs value in that case.\n p = self._makeAbs(p)\n rp.realpath(p, self.realpathCache, function (er, real) {\n if (!er)\n set[real] = true\n else if (er.syscall === 'stat')\n set[p] = true\n else\n self.emit('error', er) // srsly wtf right here\n\n if (--n === 0) {\n self.matches[index] = set\n cb()\n }\n })\n })\n}\n\nGlob.prototype._mark = function (p) {\n return common.mark(this, p)\n}\n\nGlob.prototype._makeAbs = function (f) {\n return common.makeAbs(this, f)\n}\n\nGlob.prototype.abort = function () {\n this.aborted = true\n this.emit('abort')\n}\n\nGlob.prototype.pause = function () {\n if (!this.paused) {\n this.paused = true\n this.emit('pause')\n }\n}\n\nGlob.prototype.resume = function () {\n if (this.paused) {\n this.emit('resume')\n this.paused = false\n if (this._emitQueue.length) {\n var eq = this._emitQueue.slice(0)\n this._emitQueue.length = 0\n for (var i = 0; i < eq.length; i ++) {\n var e = eq[i]\n this._emitMatch(e[0], e[1])\n }\n }\n if (this._processQueue.length) {\n var pq = this._processQueue.slice(0)\n this._processQueue.length = 0\n for (var i = 0; i < pq.length; i ++) {\n var p = pq[i]\n this._processing--\n this._process(p[0], p[1], p[2], p[3])\n }\n }\n }\n}\n\nGlob.prototype._process = function (pattern, index, inGlobStar, cb) {\n assert(this instanceof Glob)\n assert(typeof cb === 'function')\n\n if (this.aborted)\n return\n\n this._processing++\n if (this.paused) {\n this._processQueue.push([pattern, index, inGlobStar, cb])\n return\n }\n\n //console.error('PROCESS %d', this._processing, pattern)\n\n // Get the first [n] parts of pattern that are all strings.\n var n = 0\n while (typeof pattern[n] === 'string') {\n n ++\n }\n // now n is the index of the first one that is *not* a string.\n\n // see if there's anything else\n var prefix\n switch (n) {\n // if not, then this is rather simple\n case pattern.length:\n this._processSimple(pattern.join('/'), index, cb)\n return\n\n case 0:\n // pattern *starts* with some non-trivial item.\n // going to readdir(cwd), but not include the prefix in matches.\n prefix = null\n break\n\n default:\n // pattern has some string bits in the front.\n // whatever it starts with, whether that's 'absolute' like /foo/bar,\n // or 'relative' like '../baz'\n prefix = pattern.slice(0, n).join('/')\n break\n }\n\n var remain = pattern.slice(n)\n\n // get the list of entries.\n var read\n if (prefix === null)\n read = '.'\n else if (isAbsolute(prefix) || isAbsolute(pattern.join('/'))) {\n if (!prefix || !isAbsolute(prefix))\n prefix = '/' + prefix\n read = prefix\n } else\n read = prefix\n\n var abs = this._makeAbs(read)\n\n //if ignored, skip _processing\n if (childrenIgnored(this, read))\n return cb()\n\n var isGlobStar = remain[0] === minimatch.GLOBSTAR\n if (isGlobStar)\n this._processGlobStar(prefix, read, abs, remain, index, inGlobStar, cb)\n else\n this._processReaddir(prefix, read, abs, remain, index, inGlobStar, cb)\n}\n\nGlob.prototype._processReaddir = function (prefix, read, abs, remain, index, inGlobStar, cb) {\n var self = this\n this._readdir(abs, inGlobStar, function (er, entries) {\n return self._processReaddir2(prefix, read, abs, remain, index, inGlobStar, entries, cb)\n })\n}\n\nGlob.prototype._processReaddir2 = function (prefix, read, abs, remain, index, inGlobStar, entries, cb) {\n\n // if the abs isn't a dir, then nothing can match!\n if (!entries)\n return cb()\n\n // It will only match dot entries if it starts with a dot, or if\n // dot is set. Stuff like @(.foo|.bar) isn't allowed.\n var pn = remain[0]\n var negate = !!this.minimatch.negate\n var rawGlob = pn._glob\n var dotOk = this.dot || rawGlob.charAt(0) === '.'\n\n var matchedEntries = []\n for (var i = 0; i < entries.length; i++) {\n var e = entries[i]\n if (e.charAt(0) !== '.' || dotOk) {\n var m\n if (negate && !prefix) {\n m = !e.match(pn)\n } else {\n m = e.match(pn)\n }\n if (m)\n matchedEntries.push(e)\n }\n }\n\n //console.error('prd2', prefix, entries, remain[0]._glob, matchedEntries)\n\n var len = matchedEntries.length\n // If there are no matched entries, then nothing matches.\n if (len === 0)\n return cb()\n\n // if this is the last remaining pattern bit, then no need for\n // an additional stat *unless* the user has specified mark or\n // stat explicitly. We know they exist, since readdir returned\n // them.\n\n if (remain.length === 1 && !this.mark && !this.stat) {\n if (!this.matches[index])\n this.matches[index] = Object.create(null)\n\n for (var i = 0; i < len; i ++) {\n var e = matchedEntries[i]\n if (prefix) {\n if (prefix !== '/')\n e = prefix + '/' + e\n else\n e = prefix + e\n }\n\n if (e.charAt(0) === '/' && !this.nomount) {\n e = path.join(this.root, e)\n }\n this._emitMatch(index, e)\n }\n // This was the last one, and no stats were needed\n return cb()\n }\n\n // now test all matched entries as stand-ins for that part\n // of the pattern.\n remain.shift()\n for (var i = 0; i < len; i ++) {\n var e = matchedEntries[i]\n var newPattern\n if (prefix) {\n if (prefix !== '/')\n e = prefix + '/' + e\n else\n e = prefix + e\n }\n this._process([e].concat(remain), index, inGlobStar, cb)\n }\n cb()\n}\n\nGlob.prototype._emitMatch = function (index, e) {\n if (this.aborted)\n return\n\n if (isIgnored(this, e))\n return\n\n if (this.paused) {\n this._emitQueue.push([index, e])\n return\n }\n\n var abs = isAbsolute(e) ? e : this._makeAbs(e)\n\n if (this.mark)\n e = this._mark(e)\n\n if (this.absolute)\n e = abs\n\n if (this.matches[index][e])\n return\n\n if (this.nodir) {\n var c = this.cache[abs]\n if (c === 'DIR' || Array.isArray(c))\n return\n }\n\n this.matches[index][e] = true\n\n var st = this.statCache[abs]\n if (st)\n this.emit('stat', e, st)\n\n this.emit('match', e)\n}\n\nGlob.prototype._readdirInGlobStar = function (abs, cb) {\n if (this.aborted)\n return\n\n // follow all symlinked directories forever\n // just proceed as if this is a non-globstar situation\n if (this.follow)\n return this._readdir(abs, false, cb)\n\n var lstatkey = 'lstat\\0' + abs\n var self = this\n var lstatcb = inflight(lstatkey, lstatcb_)\n\n if (lstatcb)\n fs.lstat(abs, lstatcb)\n\n function lstatcb_ (er, lstat) {\n if (er && er.code === 'ENOENT')\n return cb()\n\n var isSym = lstat && lstat.isSymbolicLink()\n self.symlinks[abs] = isSym\n\n // If it's not a symlink or a dir, then it's definitely a regular file.\n // don't bother doing a readdir in that case.\n if (!isSym && lstat && !lstat.isDirectory()) {\n self.cache[abs] = 'FILE'\n cb()\n } else\n self._readdir(abs, false, cb)\n }\n}\n\nGlob.prototype._readdir = function (abs, inGlobStar, cb) {\n if (this.aborted)\n return\n\n cb = inflight('readdir\\0'+abs+'\\0'+inGlobStar, cb)\n if (!cb)\n return\n\n //console.error('RD %j %j', +inGlobStar, abs)\n if (inGlobStar && !ownProp(this.symlinks, abs))\n return this._readdirInGlobStar(abs, cb)\n\n if (ownProp(this.cache, abs)) {\n var c = this.cache[abs]\n if (!c || c === 'FILE')\n return cb()\n\n if (Array.isArray(c))\n return cb(null, c)\n }\n\n var self = this\n fs.readdir(abs, readdirCb(this, abs, cb))\n}\n\nfunction readdirCb (self, abs, cb) {\n return function (er, entries) {\n if (er)\n self._readdirError(abs, er, cb)\n else\n self._readdirEntries(abs, entries, cb)\n }\n}\n\nGlob.prototype._readdirEntries = function (abs, entries, cb) {\n if (this.aborted)\n return\n\n // if we haven't asked to stat everything, then just\n // assume that everything in there exists, so we can avoid\n // having to stat it a second time.\n if (!this.mark && !this.stat) {\n for (var i = 0; i < entries.length; i ++) {\n var e = entries[i]\n if (abs === '/')\n e = abs + e\n else\n e = abs + '/' + e\n this.cache[e] = true\n }\n }\n\n this.cache[abs] = entries\n return cb(null, entries)\n}\n\nGlob.prototype._readdirError = function (f, er, cb) {\n if (this.aborted)\n return\n\n // handle errors, and cache the information\n switch (er.code) {\n case 'ENOTSUP': // https://github.com/isaacs/node-glob/issues/205\n case 'ENOTDIR': // totally normal. means it *does* exist.\n var abs = this._makeAbs(f)\n this.cache[abs] = 'FILE'\n if (abs === this.cwdAbs) {\n var error = new Error(er.code + ' invalid cwd ' + this.cwd)\n error.path = this.cwd\n error.code = er.code\n this.emit('error', error)\n this.abort()\n }\n break\n\n case 'ENOENT': // not terribly unusual\n case 'ELOOP':\n case 'ENAMETOOLONG':\n case 'UNKNOWN':\n this.cache[this._makeAbs(f)] = false\n break\n\n default: // some unusual error. Treat as failure.\n this.cache[this._makeAbs(f)] = false\n if (this.strict) {\n this.emit('error', er)\n // If the error is handled, then we abort\n // if not, we threw out of here\n this.abort()\n }\n if (!this.silent)\n console.error('glob error', er)\n break\n }\n\n return cb()\n}\n\nGlob.prototype._processGlobStar = function (prefix, read, abs, remain, index, inGlobStar, cb) {\n var self = this\n this._readdir(abs, inGlobStar, function (er, entries) {\n self._processGlobStar2(prefix, read, abs, remain, index, inGlobStar, entries, cb)\n })\n}\n\n\nGlob.prototype._processGlobStar2 = function (prefix, read, abs, remain, index, inGlobStar, entries, cb) {\n //console.error('pgs2', prefix, remain[0], entries)\n\n // no entries means not a dir, so it can never have matches\n // foo.txt/** doesn't match foo.txt\n if (!entries)\n return cb()\n\n // test without the globstar, and with every child both below\n // and replacing the globstar.\n var remainWithoutGlobStar = remain.slice(1)\n var gspref = prefix ? [ prefix ] : []\n var noGlobStar = gspref.concat(remainWithoutGlobStar)\n\n // the noGlobStar pattern exits the inGlobStar state\n this._process(noGlobStar, index, false, cb)\n\n var isSym = this.symlinks[abs]\n var len = entries.length\n\n // If it's a symlink, and we're in a globstar, then stop\n if (isSym && inGlobStar)\n return cb()\n\n for (var i = 0; i < len; i++) {\n var e = entries[i]\n if (e.charAt(0) === '.' && !this.dot)\n continue\n\n // these two cases enter the inGlobStar state\n var instead = gspref.concat(entries[i], remainWithoutGlobStar)\n this._process(instead, index, true, cb)\n\n var below = gspref.concat(entries[i], remain)\n this._process(below, index, true, cb)\n }\n\n cb()\n}\n\nGlob.prototype._processSimple = function (prefix, index, cb) {\n // XXX review this. Shouldn't it be doing the mounting etc\n // before doing stat? kinda weird?\n var self = this\n this._stat(prefix, function (er, exists) {\n self._processSimple2(prefix, index, er, exists, cb)\n })\n}\nGlob.prototype._processSimple2 = function (prefix, index, er, exists, cb) {\n\n //console.error('ps2', prefix, exists)\n\n if (!this.matches[index])\n this.matches[index] = Object.create(null)\n\n // If it doesn't exist, then just mark the lack of results\n if (!exists)\n return cb()\n\n if (prefix && isAbsolute(prefix) && !this.nomount) {\n var trail = /[\\/\\\\]$/.test(prefix)\n if (prefix.charAt(0) === '/') {\n prefix = path.join(this.root, prefix)\n } else {\n prefix = path.resolve(this.root, prefix)\n if (trail)\n prefix += '/'\n }\n }\n\n if (process.platform === 'win32')\n prefix = prefix.replace(/\\\\/g, '/')\n\n // Mark this as a match\n this._emitMatch(index, prefix)\n cb()\n}\n\n// Returns either 'DIR', 'FILE', or false\nGlob.prototype._stat = function (f, cb) {\n var abs = this._makeAbs(f)\n var needDir = f.slice(-1) === '/'\n\n if (f.length > this.maxLength)\n return cb()\n\n if (!this.stat && ownProp(this.cache, abs)) {\n var c = this.cache[abs]\n\n if (Array.isArray(c))\n c = 'DIR'\n\n // It exists, but maybe not how we need it\n if (!needDir || c === 'DIR')\n return cb(null, c)\n\n if (needDir && c === 'FILE')\n return cb()\n\n // otherwise we have to stat, because maybe c=true\n // if we know it exists, but not what it is.\n }\n\n var exists\n var stat = this.statCache[abs]\n if (stat !== undefined) {\n if (stat === false)\n return cb(null, stat)\n else {\n var type = stat.isDirectory() ? 'DIR' : 'FILE'\n if (needDir && type === 'FILE')\n return cb()\n else\n return cb(null, type, stat)\n }\n }\n\n var self = this\n var statcb = inflight('stat\\0' + abs, lstatcb_)\n if (statcb)\n fs.lstat(abs, statcb)\n\n function lstatcb_ (er, lstat) {\n if (lstat && lstat.isSymbolicLink()) {\n // If it's a symlink, then treat it as the target, unless\n // the target does not exist, then treat it as a file.\n return fs.stat(abs, function (er, stat) {\n if (er)\n self._stat2(f, abs, null, lstat, cb)\n else\n self._stat2(f, abs, er, stat, cb)\n })\n } else {\n self._stat2(f, abs, er, lstat, cb)\n }\n }\n}\n\nGlob.prototype._stat2 = function (f, abs, er, stat, cb) {\n if (er && (er.code === 'ENOENT' || er.code === 'ENOTDIR')) {\n this.statCache[abs] = false\n return cb()\n }\n\n var needDir = f.slice(-1) === '/'\n this.statCache[abs] = stat\n\n if (abs.slice(-1) === '/' && stat && !stat.isDirectory())\n return cb(null, false, stat)\n\n var c = true\n if (stat)\n c = stat.isDirectory() ? 'DIR' : 'FILE'\n this.cache[abs] = this.cache[abs] || c\n\n if (needDir && c === 'FILE')\n return cb()\n\n return cb(null, c, stat)\n}\n", "const assert = require(\"assert\")\nconst path = require(\"path\")\nconst fs = require(\"fs\")\nlet glob = undefined\ntry {\n glob = require(\"glob\")\n} catch (_err) {\n // treat glob as optional.\n}\n\nconst defaultGlobOpts = {\n nosort: true,\n silent: true\n}\n\n// for EMFILE handling\nlet timeout = 0\n\nconst isWindows = (process.platform === \"win32\")\n\nconst defaults = options => {\n const methods = [\n 'unlink',\n 'chmod',\n 'stat',\n 'lstat',\n 'rmdir',\n 'readdir'\n ]\n methods.forEach(m => {\n options[m] = options[m] || fs[m]\n m = m + 'Sync'\n options[m] = options[m] || fs[m]\n })\n\n options.maxBusyTries = options.maxBusyTries || 3\n options.emfileWait = options.emfileWait || 1000\n if (options.glob === false) {\n options.disableGlob = true\n }\n if (options.disableGlob !== true && glob === undefined) {\n throw Error('glob dependency not found, set `options.disableGlob = true` if intentional')\n }\n options.disableGlob = options.disableGlob || false\n options.glob = options.glob || defaultGlobOpts\n}\n\nconst rimraf = (p, options, cb) => {\n if (typeof options === 'function') {\n cb = options\n options = {}\n }\n\n assert(p, 'rimraf: missing path')\n assert.equal(typeof p, 'string', 'rimraf: path should be a string')\n assert.equal(typeof cb, 'function', 'rimraf: callback function required')\n assert(options, 'rimraf: invalid options argument provided')\n assert.equal(typeof options, 'object', 'rimraf: options should be object')\n\n defaults(options)\n\n let busyTries = 0\n let errState = null\n let n = 0\n\n const next = (er) => {\n errState = errState || er\n if (--n === 0)\n cb(errState)\n }\n\n const afterGlob = (er, results) => {\n if (er)\n return cb(er)\n\n n = results.length\n if (n === 0)\n return cb()\n\n results.forEach(p => {\n const CB = (er) => {\n if (er) {\n if ((er.code === \"EBUSY\" || er.code === \"ENOTEMPTY\" || er.code === \"EPERM\") &&\n busyTries < options.maxBusyTries) {\n busyTries ++\n // try again, with the same exact callback as this one.\n return setTimeout(() => rimraf_(p, options, CB), busyTries * 100)\n }\n\n // this one won't happen if graceful-fs is used.\n if (er.code === \"EMFILE\" && timeout < options.emfileWait) {\n return setTimeout(() => rimraf_(p, options, CB), timeout ++)\n }\n\n // already gone\n if (er.code === \"ENOENT\") er = null\n }\n\n timeout = 0\n next(er)\n }\n rimraf_(p, options, CB)\n })\n }\n\n if (options.disableGlob || !glob.hasMagic(p))\n return afterGlob(null, [p])\n\n options.lstat(p, (er, stat) => {\n if (!er)\n return afterGlob(null, [p])\n\n glob(p, options.glob, afterGlob)\n })\n\n}\n\n// Two possible strategies.\n// 1. Assume it's a file. unlink it, then do the dir stuff on EPERM or EISDIR\n// 2. Assume it's a directory. readdir, then do the file stuff on ENOTDIR\n//\n// Both result in an extra syscall when you guess wrong. However, there\n// are likely far more normal files in the world than directories. This\n// is based on the assumption that a the average number of files per\n// directory is >= 1.\n//\n// If anyone ever complains about this, then I guess the strategy could\n// be made configurable somehow. But until then, YAGNI.\nconst rimraf_ = (p, options, cb) => {\n assert(p)\n assert(options)\n assert(typeof cb === 'function')\n\n // sunos lets the root user unlink directories, which is... weird.\n // so we have to lstat here and make sure it's not a dir.\n options.lstat(p, (er, st) => {\n if (er && er.code === \"ENOENT\")\n return cb(null)\n\n // Windows can EPERM on stat. Life is suffering.\n if (er && er.code === \"EPERM\" && isWindows)\n fixWinEPERM(p, options, er, cb)\n\n if (st && st.isDirectory())\n return rmdir(p, options, er, cb)\n\n options.unlink(p, er => {\n if (er) {\n if (er.code === \"ENOENT\")\n return cb(null)\n if (er.code === \"EPERM\")\n return (isWindows)\n ? fixWinEPERM(p, options, er, cb)\n : rmdir(p, options, er, cb)\n if (er.code === \"EISDIR\")\n return rmdir(p, options, er, cb)\n }\n return cb(er)\n })\n })\n}\n\nconst fixWinEPERM = (p, options, er, cb) => {\n assert(p)\n assert(options)\n assert(typeof cb === 'function')\n\n options.chmod(p, 0o666, er2 => {\n if (er2)\n cb(er2.code === \"ENOENT\" ? null : er)\n else\n options.stat(p, (er3, stats) => {\n if (er3)\n cb(er3.code === \"ENOENT\" ? null : er)\n else if (stats.isDirectory())\n rmdir(p, options, er, cb)\n else\n options.unlink(p, cb)\n })\n })\n}\n\nconst fixWinEPERMSync = (p, options, er) => {\n assert(p)\n assert(options)\n\n try {\n options.chmodSync(p, 0o666)\n } catch (er2) {\n if (er2.code === \"ENOENT\")\n return\n else\n throw er\n }\n\n let stats\n try {\n stats = options.statSync(p)\n } catch (er3) {\n if (er3.code === \"ENOENT\")\n return\n else\n throw er\n }\n\n if (stats.isDirectory())\n rmdirSync(p, options, er)\n else\n options.unlinkSync(p)\n}\n\nconst rmdir = (p, options, originalEr, cb) => {\n assert(p)\n assert(options)\n assert(typeof cb === 'function')\n\n // try to rmdir first, and only readdir on ENOTEMPTY or EEXIST (SunOS)\n // if we guessed wrong, and it's not a directory, then\n // raise the original error.\n options.rmdir(p, er => {\n if (er && (er.code === \"ENOTEMPTY\" || er.code === \"EEXIST\" || er.code === \"EPERM\"))\n rmkids(p, options, cb)\n else if (er && er.code === \"ENOTDIR\")\n cb(originalEr)\n else\n cb(er)\n })\n}\n\nconst rmkids = (p, options, cb) => {\n assert(p)\n assert(options)\n assert(typeof cb === 'function')\n\n options.readdir(p, (er, files) => {\n if (er)\n return cb(er)\n let n = files.length\n if (n === 0)\n return options.rmdir(p, cb)\n let errState\n files.forEach(f => {\n rimraf(path.join(p, f), options, er => {\n if (errState)\n return\n if (er)\n return cb(errState = er)\n if (--n === 0)\n options.rmdir(p, cb)\n })\n })\n })\n}\n\n// this looks simpler, and is strictly *faster*, but will\n// tie up the JavaScript thread and fail on excessively\n// deep directory trees.\nconst rimrafSync = (p, options) => {\n options = options || {}\n defaults(options)\n\n assert(p, 'rimraf: missing path')\n assert.equal(typeof p, 'string', 'rimraf: path should be a string')\n assert(options, 'rimraf: missing options')\n assert.equal(typeof options, 'object', 'rimraf: options should be object')\n\n let results\n\n if (options.disableGlob || !glob.hasMagic(p)) {\n results = [p]\n } else {\n try {\n options.lstatSync(p)\n results = [p]\n } catch (er) {\n results = glob.sync(p, options.glob)\n }\n }\n\n if (!results.length)\n return\n\n for (let i = 0; i < results.length; i++) {\n const p = results[i]\n\n let st\n try {\n st = options.lstatSync(p)\n } catch (er) {\n if (er.code === \"ENOENT\")\n return\n\n // Windows can EPERM on stat. Life is suffering.\n if (er.code === \"EPERM\" && isWindows)\n fixWinEPERMSync(p, options, er)\n }\n\n try {\n // sunos lets the root user unlink directories, which is... weird.\n if (st && st.isDirectory())\n rmdirSync(p, options, null)\n else\n options.unlinkSync(p)\n } catch (er) {\n if (er.code === \"ENOENT\")\n return\n if (er.code === \"EPERM\")\n return isWindows ? fixWinEPERMSync(p, options, er) : rmdirSync(p, options, er)\n if (er.code !== \"EISDIR\")\n throw er\n\n rmdirSync(p, options, er)\n }\n }\n}\n\nconst rmdirSync = (p, options, originalEr) => {\n assert(p)\n assert(options)\n\n try {\n options.rmdirSync(p)\n } catch (er) {\n if (er.code === \"ENOENT\")\n return\n if (er.code === \"ENOTDIR\")\n throw originalEr\n if (er.code === \"ENOTEMPTY\" || er.code === \"EEXIST\" || er.code === \"EPERM\")\n rmkidsSync(p, options)\n }\n}\n\nconst rmkidsSync = (p, options) => {\n assert(p)\n assert(options)\n options.readdirSync(p).forEach(f => rimrafSync(path.join(p, f), options))\n\n // We only end up here once we got ENOTEMPTY at least once, and\n // at this point, we are guaranteed to have removed all the kids.\n // So, we know that it won't be ENOENT or ENOTDIR or anything else.\n // try really hard to delete stuff on windows, because it has a\n // PROFOUNDLY annoying habit of not closing handles promptly when\n // files are deleted, resulting in spurious ENOTEMPTY errors.\n const retries = isWindows ? 100 : 1\n let i = 0\n do {\n let threw = true\n try {\n const ret = options.rmdirSync(p, options)\n threw = false\n return ret\n } finally {\n if (++i < retries && threw)\n continue\n }\n } while (true)\n}\n\nmodule.exports = rimraf\nrimraf.sync = rimrafSync\n", "/*!\n * Tmp\n *\n * Copyright (c) 2011-2017 KARASZI Istvan \n *\n * MIT Licensed\n */\n\n/*\n * Module dependencies.\n */\nconst fs = require('fs');\nconst os = require('os');\nconst path = require('path');\nconst crypto = require('crypto');\nconst _c = { fs: fs.constants, os: os.constants };\nconst rimraf = require('rimraf');\n\n/*\n * The working inner variables.\n */\nconst\n // the random characters to choose from\n RANDOM_CHARS = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz',\n\n TEMPLATE_PATTERN = /XXXXXX/,\n\n DEFAULT_TRIES = 3,\n\n CREATE_FLAGS = (_c.O_CREAT || _c.fs.O_CREAT) | (_c.O_EXCL || _c.fs.O_EXCL) | (_c.O_RDWR || _c.fs.O_RDWR),\n\n // constants are off on the windows platform and will not match the actual errno codes\n IS_WIN32 = os.platform() === 'win32',\n EBADF = _c.EBADF || _c.os.errno.EBADF,\n ENOENT = _c.ENOENT || _c.os.errno.ENOENT,\n\n DIR_MODE = 0o700 /* 448 */,\n FILE_MODE = 0o600 /* 384 */,\n\n EXIT = 'exit',\n\n // this will hold the objects need to be removed on exit\n _removeObjects = [],\n\n // API change in fs.rmdirSync leads to error when passing in a second parameter, e.g. the callback\n FN_RMDIR_SYNC = fs.rmdirSync.bind(fs),\n FN_RIMRAF_SYNC = rimraf.sync;\n\nlet\n _gracefulCleanup = false;\n\n/**\n * Gets a temporary file name.\n *\n * @param {(Options|tmpNameCallback)} options options or callback\n * @param {?tmpNameCallback} callback the callback function\n */\nfunction tmpName(options, callback) {\n const\n args = _parseArguments(options, callback),\n opts = args[0],\n cb = args[1];\n\n try {\n _assertAndSanitizeOptions(opts);\n } catch (err) {\n return cb(err);\n }\n\n let tries = opts.tries;\n (function _getUniqueName() {\n try {\n const name = _generateTmpName(opts);\n\n // check whether the path exists then retry if needed\n fs.stat(name, function (err) {\n /* istanbul ignore else */\n if (!err) {\n /* istanbul ignore else */\n if (tries-- > 0) return _getUniqueName();\n\n return cb(new Error('Could not get a unique tmp filename, max tries reached ' + name));\n }\n\n cb(null, name);\n });\n } catch (err) {\n cb(err);\n }\n }());\n}\n\n/**\n * Synchronous version of tmpName.\n *\n * @param {Object} options\n * @returns {string} the generated random name\n * @throws {Error} if the options are invalid or could not generate a filename\n */\nfunction tmpNameSync(options) {\n const\n args = _parseArguments(options),\n opts = args[0];\n\n _assertAndSanitizeOptions(opts);\n\n let tries = opts.tries;\n do {\n const name = _generateTmpName(opts);\n try {\n fs.statSync(name);\n } catch (e) {\n return name;\n }\n } while (tries-- > 0);\n\n throw new Error('Could not get a unique tmp filename, max tries reached');\n}\n\n/**\n * Creates and opens a temporary file.\n *\n * @param {(Options|null|undefined|fileCallback)} options the config options or the callback function or null or undefined\n * @param {?fileCallback} callback\n */\nfunction file(options, callback) {\n const\n args = _parseArguments(options, callback),\n opts = args[0],\n cb = args[1];\n\n // gets a temporary filename\n tmpName(opts, function _tmpNameCreated(err, name) {\n /* istanbul ignore else */\n if (err) return cb(err);\n\n // create and open the file\n fs.open(name, CREATE_FLAGS, opts.mode || FILE_MODE, function _fileCreated(err, fd) {\n /* istanbu ignore else */\n if (err) return cb(err);\n\n if (opts.discardDescriptor) {\n return fs.close(fd, function _discardCallback(possibleErr) {\n // the chance of getting an error on close here is rather low and might occur in the most edgiest cases only\n return cb(possibleErr, name, undefined, _prepareTmpFileRemoveCallback(name, -1, opts, false));\n });\n } else {\n // detachDescriptor passes the descriptor whereas discardDescriptor closes it, either way, we no longer care\n // about the descriptor\n const discardOrDetachDescriptor = opts.discardDescriptor || opts.detachDescriptor;\n cb(null, name, fd, _prepareTmpFileRemoveCallback(name, discardOrDetachDescriptor ? -1 : fd, opts, false));\n }\n });\n });\n}\n\n/**\n * Synchronous version of file.\n *\n * @param {Options} options\n * @returns {FileSyncObject} object consists of name, fd and removeCallback\n * @throws {Error} if cannot create a file\n */\nfunction fileSync(options) {\n const\n args = _parseArguments(options),\n opts = args[0];\n\n const discardOrDetachDescriptor = opts.discardDescriptor || opts.detachDescriptor;\n const name = tmpNameSync(opts);\n var fd = fs.openSync(name, CREATE_FLAGS, opts.mode || FILE_MODE);\n /* istanbul ignore else */\n if (opts.discardDescriptor) {\n fs.closeSync(fd);\n fd = undefined;\n }\n\n return {\n name: name,\n fd: fd,\n removeCallback: _prepareTmpFileRemoveCallback(name, discardOrDetachDescriptor ? -1 : fd, opts, true)\n };\n}\n\n/**\n * Creates a temporary directory.\n *\n * @param {(Options|dirCallback)} options the options or the callback function\n * @param {?dirCallback} callback\n */\nfunction dir(options, callback) {\n const\n args = _parseArguments(options, callback),\n opts = args[0],\n cb = args[1];\n\n // gets a temporary filename\n tmpName(opts, function _tmpNameCreated(err, name) {\n /* istanbul ignore else */\n if (err) return cb(err);\n\n // create the directory\n fs.mkdir(name, opts.mode || DIR_MODE, function _dirCreated(err) {\n /* istanbul ignore else */\n if (err) return cb(err);\n\n cb(null, name, _prepareTmpDirRemoveCallback(name, opts, false));\n });\n });\n}\n\n/**\n * Synchronous version of dir.\n *\n * @param {Options} options\n * @returns {DirSyncObject} object consists of name and removeCallback\n * @throws {Error} if it cannot create a directory\n */\nfunction dirSync(options) {\n const\n args = _parseArguments(options),\n opts = args[0];\n\n const name = tmpNameSync(opts);\n fs.mkdirSync(name, opts.mode || DIR_MODE);\n\n return {\n name: name,\n removeCallback: _prepareTmpDirRemoveCallback(name, opts, true)\n };\n}\n\n/**\n * Removes files asynchronously.\n *\n * @param {Object} fdPath\n * @param {Function} next\n * @private\n */\nfunction _removeFileAsync(fdPath, next) {\n const _handler = function (err) {\n if (err && !_isENOENT(err)) {\n // reraise any unanticipated error\n return next(err);\n }\n next();\n };\n\n if (0 <= fdPath[0])\n fs.close(fdPath[0], function () {\n fs.unlink(fdPath[1], _handler);\n });\n else fs.unlink(fdPath[1], _handler);\n}\n\n/**\n * Removes files synchronously.\n *\n * @param {Object} fdPath\n * @private\n */\nfunction _removeFileSync(fdPath) {\n let rethrownException = null;\n try {\n if (0 <= fdPath[0]) fs.closeSync(fdPath[0]);\n } catch (e) {\n // reraise any unanticipated error\n if (!_isEBADF(e) && !_isENOENT(e)) throw e;\n } finally {\n try {\n fs.unlinkSync(fdPath[1]);\n }\n catch (e) {\n // reraise any unanticipated error\n if (!_isENOENT(e)) rethrownException = e;\n }\n }\n if (rethrownException !== null) {\n throw rethrownException;\n }\n}\n\n/**\n * Prepares the callback for removal of the temporary file.\n *\n * Returns either a sync callback or a async callback depending on whether\n * fileSync or file was called, which is expressed by the sync parameter.\n *\n * @param {string} name the path of the file\n * @param {number} fd file descriptor\n * @param {Object} opts\n * @param {boolean} sync\n * @returns {fileCallback | fileCallbackSync}\n * @private\n */\nfunction _prepareTmpFileRemoveCallback(name, fd, opts, sync) {\n const removeCallbackSync = _prepareRemoveCallback(_removeFileSync, [fd, name], sync);\n const removeCallback = _prepareRemoveCallback(_removeFileAsync, [fd, name], sync, removeCallbackSync);\n\n if (!opts.keep) _removeObjects.unshift(removeCallbackSync);\n\n return sync ? removeCallbackSync : removeCallback;\n}\n\n/**\n * Prepares the callback for removal of the temporary directory.\n *\n * Returns either a sync callback or a async callback depending on whether\n * tmpFileSync or tmpFile was called, which is expressed by the sync parameter.\n *\n * @param {string} name\n * @param {Object} opts\n * @param {boolean} sync\n * @returns {Function} the callback\n * @private\n */\nfunction _prepareTmpDirRemoveCallback(name, opts, sync) {\n const removeFunction = opts.unsafeCleanup ? rimraf : fs.rmdir.bind(fs);\n const removeFunctionSync = opts.unsafeCleanup ? FN_RIMRAF_SYNC : FN_RMDIR_SYNC;\n const removeCallbackSync = _prepareRemoveCallback(removeFunctionSync, name, sync);\n const removeCallback = _prepareRemoveCallback(removeFunction, name, sync, removeCallbackSync);\n if (!opts.keep) _removeObjects.unshift(removeCallbackSync);\n\n return sync ? removeCallbackSync : removeCallback;\n}\n\n/**\n * Creates a guarded function wrapping the removeFunction call.\n *\n * The cleanup callback is save to be called multiple times.\n * Subsequent invocations will be ignored.\n *\n * @param {Function} removeFunction\n * @param {string} fileOrDirName\n * @param {boolean} sync\n * @param {cleanupCallbackSync?} cleanupCallbackSync\n * @returns {cleanupCallback | cleanupCallbackSync}\n * @private\n */\nfunction _prepareRemoveCallback(removeFunction, fileOrDirName, sync, cleanupCallbackSync) {\n let called = false;\n\n // if sync is true, the next parameter will be ignored\n return function _cleanupCallback(next) {\n\n /* istanbul ignore else */\n if (!called) {\n // remove cleanupCallback from cache\n const toRemove = cleanupCallbackSync || _cleanupCallback;\n const index = _removeObjects.indexOf(toRemove);\n /* istanbul ignore else */\n if (index >= 0) _removeObjects.splice(index, 1);\n\n called = true;\n if (sync || removeFunction === FN_RMDIR_SYNC || removeFunction === FN_RIMRAF_SYNC) {\n return removeFunction(fileOrDirName);\n } else {\n return removeFunction(fileOrDirName, next || function() {});\n }\n }\n };\n}\n\n/**\n * The garbage collector.\n *\n * @private\n */\nfunction _garbageCollector() {\n /* istanbul ignore else */\n if (!_gracefulCleanup) return;\n\n // the function being called removes itself from _removeObjects,\n // loop until _removeObjects is empty\n while (_removeObjects.length) {\n try {\n _removeObjects[0]();\n } catch (e) {\n // already removed?\n }\n }\n}\n\n/**\n * Random name generator based on crypto.\n * Adapted from http://blog.tompawlak.org/how-to-generate-random-values-nodejs-javascript\n *\n * @param {number} howMany\n * @returns {string} the generated random name\n * @private\n */\nfunction _randomChars(howMany) {\n let\n value = [],\n rnd = null;\n\n // make sure that we do not fail because we ran out of entropy\n try {\n rnd = crypto.randomBytes(howMany);\n } catch (e) {\n rnd = crypto.pseudoRandomBytes(howMany);\n }\n\n for (var i = 0; i < howMany; i++) {\n value.push(RANDOM_CHARS[rnd[i] % RANDOM_CHARS.length]);\n }\n\n return value.join('');\n}\n\n/**\n * Helper which determines whether a string s is blank, that is undefined, or empty or null.\n *\n * @private\n * @param {string} s\n * @returns {Boolean} true whether the string s is blank, false otherwise\n */\nfunction _isBlank(s) {\n return s === null || _isUndefined(s) || !s.trim();\n}\n\n/**\n * Checks whether the `obj` parameter is defined or not.\n *\n * @param {Object} obj\n * @returns {boolean} true if the object is undefined\n * @private\n */\nfunction _isUndefined(obj) {\n return typeof obj === 'undefined';\n}\n\n/**\n * Parses the function arguments.\n *\n * This function helps to have optional arguments.\n *\n * @param {(Options|null|undefined|Function)} options\n * @param {?Function} callback\n * @returns {Array} parsed arguments\n * @private\n */\nfunction _parseArguments(options, callback) {\n /* istanbul ignore else */\n if (typeof options === 'function') {\n return [{}, options];\n }\n\n /* istanbul ignore else */\n if (_isUndefined(options)) {\n return [{}, callback];\n }\n\n // copy options so we do not leak the changes we make internally\n const actualOptions = {};\n for (const key of Object.getOwnPropertyNames(options)) {\n actualOptions[key] = options[key];\n }\n\n return [actualOptions, callback];\n}\n\n/**\n * Generates a new temporary name.\n *\n * @param {Object} opts\n * @returns {string} the new random name according to opts\n * @private\n */\nfunction _generateTmpName(opts) {\n\n const tmpDir = opts.tmpdir;\n\n /* istanbul ignore else */\n if (!_isUndefined(opts.name))\n return path.join(tmpDir, opts.dir, opts.name);\n\n /* istanbul ignore else */\n if (!_isUndefined(opts.template))\n return path.join(tmpDir, opts.dir, opts.template).replace(TEMPLATE_PATTERN, _randomChars(6));\n\n // prefix and postfix\n const name = [\n opts.prefix ? opts.prefix : 'tmp',\n '-',\n process.pid,\n '-',\n _randomChars(12),\n opts.postfix ? '-' + opts.postfix : ''\n ].join('');\n\n return path.join(tmpDir, opts.dir, name);\n}\n\n/**\n * Asserts whether the specified options are valid, also sanitizes options and provides sane defaults for missing\n * options.\n *\n * @param {Options} options\n * @private\n */\nfunction _assertAndSanitizeOptions(options) {\n\n options.tmpdir = _getTmpDir(options);\n\n const tmpDir = options.tmpdir;\n\n /* istanbul ignore else */\n if (!_isUndefined(options.name))\n _assertIsRelative(options.name, 'name', tmpDir);\n /* istanbul ignore else */\n if (!_isUndefined(options.dir))\n _assertIsRelative(options.dir, 'dir', tmpDir);\n /* istanbul ignore else */\n if (!_isUndefined(options.template)) {\n _assertIsRelative(options.template, 'template', tmpDir);\n if (!options.template.match(TEMPLATE_PATTERN))\n throw new Error(`Invalid template, found \"${options.template}\".`);\n }\n /* istanbul ignore else */\n if (!_isUndefined(options.tries) && isNaN(options.tries) || options.tries < 0)\n throw new Error(`Invalid tries, found \"${options.tries}\".`);\n\n // if a name was specified we will try once\n options.tries = _isUndefined(options.name) ? options.tries || DEFAULT_TRIES : 1;\n options.keep = !!options.keep;\n options.detachDescriptor = !!options.detachDescriptor;\n options.discardDescriptor = !!options.discardDescriptor;\n options.unsafeCleanup = !!options.unsafeCleanup;\n\n // sanitize dir, also keep (multiple) blanks if the user, purportedly sane, requests us to\n options.dir = _isUndefined(options.dir) ? '' : path.relative(tmpDir, _resolvePath(options.dir, tmpDir));\n options.template = _isUndefined(options.template) ? undefined : path.relative(tmpDir, _resolvePath(options.template, tmpDir));\n // sanitize further if template is relative to options.dir\n options.template = _isBlank(options.template) ? undefined : path.relative(options.dir, options.template);\n\n // for completeness' sake only, also keep (multiple) blanks if the user, purportedly sane, requests us to\n options.name = _isUndefined(options.name) ? undefined : _sanitizeName(options.name);\n options.prefix = _isUndefined(options.prefix) ? '' : options.prefix;\n options.postfix = _isUndefined(options.postfix) ? '' : options.postfix;\n}\n\n/**\n * Resolve the specified path name in respect to tmpDir.\n *\n * The specified name might include relative path components, e.g. ../\n * so we need to resolve in order to be sure that is is located inside tmpDir\n *\n * @param name\n * @param tmpDir\n * @returns {string}\n * @private\n */\nfunction _resolvePath(name, tmpDir) {\n const sanitizedName = _sanitizeName(name);\n if (sanitizedName.startsWith(tmpDir)) {\n return path.resolve(sanitizedName);\n } else {\n return path.resolve(path.join(tmpDir, sanitizedName));\n }\n}\n\n/**\n * Sanitize the specified path name by removing all quote characters.\n *\n * @param name\n * @returns {string}\n * @private\n */\nfunction _sanitizeName(name) {\n if (_isBlank(name)) {\n return name;\n }\n return name.replace(/[\"']/g, '');\n}\n\n/**\n * Asserts whether specified name is relative to the specified tmpDir.\n *\n * @param {string} name\n * @param {string} option\n * @param {string} tmpDir\n * @throws {Error}\n * @private\n */\nfunction _assertIsRelative(name, option, tmpDir) {\n if (option === 'name') {\n // assert that name is not absolute and does not contain a path\n if (path.isAbsolute(name))\n throw new Error(`${option} option must not contain an absolute path, found \"${name}\".`);\n // must not fail on valid . or .. or similar such constructs\n let basename = path.basename(name);\n if (basename === '..' || basename === '.' || basename !== name)\n throw new Error(`${option} option must not contain a path, found \"${name}\".`);\n }\n else { // if (option === 'dir' || option === 'template') {\n // assert that dir or template are relative to tmpDir\n if (path.isAbsolute(name) && !name.startsWith(tmpDir)) {\n throw new Error(`${option} option must be relative to \"${tmpDir}\", found \"${name}\".`);\n }\n let resolvedPath = _resolvePath(name, tmpDir);\n if (!resolvedPath.startsWith(tmpDir))\n throw new Error(`${option} option must be relative to \"${tmpDir}\", found \"${resolvedPath}\".`);\n }\n}\n\n/**\n * Helper for testing against EBADF to compensate changes made to Node 7.x under Windows.\n *\n * @private\n */\nfunction _isEBADF(error) {\n return _isExpectedError(error, -EBADF, 'EBADF');\n}\n\n/**\n * Helper for testing against ENOENT to compensate changes made to Node 7.x under Windows.\n *\n * @private\n */\nfunction _isENOENT(error) {\n return _isExpectedError(error, -ENOENT, 'ENOENT');\n}\n\n/**\n * Helper to determine whether the expected error code matches the actual code and errno,\n * which will differ between the supported node versions.\n *\n * - Node >= 7.0:\n * error.code {string}\n * error.errno {number} any numerical value will be negated\n *\n * CAVEAT\n *\n * On windows, the errno for EBADF is -4083 but os.constants.errno.EBADF is different and we must assume that ENOENT\n * is no different here.\n *\n * @param {SystemError} error\n * @param {number} errno\n * @param {string} code\n * @private\n */\nfunction _isExpectedError(error, errno, code) {\n return IS_WIN32 ? error.code === code : error.code === code && error.errno === errno;\n}\n\n/**\n * Sets the graceful cleanup.\n *\n * If graceful cleanup is set, tmp will remove all controlled temporary objects on process exit, otherwise the\n * temporary objects will remain in place, waiting to be cleaned up on system restart or otherwise scheduled temporary\n * object removals.\n */\nfunction setGracefulCleanup() {\n _gracefulCleanup = true;\n}\n\n/**\n * Returns the currently configured tmp dir from os.tmpdir().\n *\n * @private\n * @param {?Options} options\n * @returns {string} the currently configured tmp dir\n */\nfunction _getTmpDir(options) {\n return path.resolve(_sanitizeName(options && options.tmpdir || os.tmpdir()));\n}\n\n// Install process exit listener\nprocess.addListener(EXIT, _garbageCollector);\n\n/**\n * Configuration options.\n *\n * @typedef {Object} Options\n * @property {?boolean} keep the temporary object (file or dir) will not be garbage collected\n * @property {?number} tries the number of tries before give up the name generation\n * @property (?int) mode the access mode, defaults are 0o700 for directories and 0o600 for files\n * @property {?string} template the \"mkstemp\" like filename template\n * @property {?string} name fixed name relative to tmpdir or the specified dir option\n * @property {?string} dir tmp directory relative to the root tmp directory in use\n * @property {?string} prefix prefix for the generated name\n * @property {?string} postfix postfix for the generated name\n * @property {?string} tmpdir the root tmp directory which overrides the os tmpdir\n * @property {?boolean} unsafeCleanup recursively removes the created temporary directory, even when it's not empty\n * @property {?boolean} detachDescriptor detaches the file descriptor, caller is responsible for closing the file, tmp will no longer try closing the file during garbage collection\n * @property {?boolean} discardDescriptor discards the file descriptor (closes file, fd is -1), tmp will no longer try closing the file during garbage collection\n */\n\n/**\n * @typedef {Object} FileSyncObject\n * @property {string} name the name of the file\n * @property {string} fd the file descriptor or -1 if the fd has been discarded\n * @property {fileCallback} removeCallback the callback function to remove the file\n */\n\n/**\n * @typedef {Object} DirSyncObject\n * @property {string} name the name of the directory\n * @property {fileCallback} removeCallback the callback function to remove the directory\n */\n\n/**\n * @callback tmpNameCallback\n * @param {?Error} err the error object if anything goes wrong\n * @param {string} name the temporary file name\n */\n\n/**\n * @callback fileCallback\n * @param {?Error} err the error object if anything goes wrong\n * @param {string} name the temporary file name\n * @param {number} fd the file descriptor or -1 if the fd had been discarded\n * @param {cleanupCallback} fn the cleanup callback function\n */\n\n/**\n * @callback fileCallbackSync\n * @param {?Error} err the error object if anything goes wrong\n * @param {string} name the temporary file name\n * @param {number} fd the file descriptor or -1 if the fd had been discarded\n * @param {cleanupCallbackSync} fn the cleanup callback function\n */\n\n/**\n * @callback dirCallback\n * @param {?Error} err the error object if anything goes wrong\n * @param {string} name the temporary file name\n * @param {cleanupCallback} fn the cleanup callback function\n */\n\n/**\n * @callback dirCallbackSync\n * @param {?Error} err the error object if anything goes wrong\n * @param {string} name the temporary file name\n * @param {cleanupCallbackSync} fn the cleanup callback function\n */\n\n/**\n * Removes the temporary created file or directory.\n *\n * @callback cleanupCallback\n * @param {simpleCallback} [next] function to call whenever the tmp object needs to be removed\n */\n\n/**\n * Removes the temporary created file or directory.\n *\n * @callback cleanupCallbackSync\n */\n\n/**\n * Callback function for function composition.\n * @see {@link https://github.com/raszi/node-tmp/issues/57|raszi/node-tmp#57}\n *\n * @callback simpleCallback\n */\n\n// exporting all the needed methods\n\n// evaluate _getTmpDir() lazily, mainly for simplifying testing but it also will\n// allow users to reconfigure the temporary directory\nObject.defineProperty(module.exports, 'tmpdir', {\n enumerable: true,\n configurable: false,\n get: function () {\n return _getTmpDir();\n }\n});\n\nmodule.exports.dir = dir;\nmodule.exports.dirSync = dirSync;\n\nmodule.exports.file = file;\nmodule.exports.fileSync = fileSync;\n\nmodule.exports.tmpName = tmpName;\nmodule.exports.tmpNameSync = tmpNameSync;\n\nmodule.exports.setGracefulCleanup = setGracefulCleanup;\n", "import which from \"which\";\nimport plist from \"simple-plist\";\nimport child_process from \"child_process\";\nimport fs from \"fs\";\nimport path from \"path\";\nimport chalk from \"chalk\";\nimport tmp from \"tmp\";\n\nconst TEMP_DIR = \"/Applications/git-peek.app/Contents/temp\";\nimport { PROTOCOL } from \"./PROTOCOL\";\n\nexport function execSync(cmd) {\n console.log(\"$ \", chalk.gray(cmd));\n return child_process.execSync(cmd, { cwd: process.cwd(), stdio: \"inherit\" });\n}\n\nexport async function register(editor: string) {\n try {\n await which(\"duti\");\n } catch (exception) {\n const installCommand = `HOMEBREW_NO_AUTO_UPDATE=1 HOMEBREW_NO_INSTALL_CLEANUP=1 brew install duti`;\n console.log(`duti not installed. Installing with homebrew.`);\n execSync(installCommand);\n }\n\n const gitPeekShim = path.join(\n \"/Applications/git-peek.app/Contents/\",\n \"git-peek-shim\"\n );\n\n console.log(\"Generating AppleScript handler.\");\n const appleScriptCode = await generateAppleScript(gitPeekShim, TEMP_DIR);\n const _tmp = tmp.dirSync({ unsafeCleanup: true });\n const appleScriptFile = path.join(_tmp.name, \"git-peek.applescript\");\n const appleScriptApp = path.join(_tmp.name, \"git-peek.app\");\n\n await fs.promises.writeFile(appleScriptFile, appleScriptCode, \"utf8\");\n console.log(chalk.gray(appleScriptCode));\n console.log(\"Compiling .applescript to .app\");\n execSync(`osacompile -o ${appleScriptApp} ${appleScriptFile}`);\n console.log(\"Updating Info.plist to support URL handler\");\n const infoPlist = path.join(appleScriptApp, \"contents/Info.plist\");\n const info = plist.readFileSync(infoPlist);\n info[\"CFBundleIdentifier\"] = \"com.apple.ScriptEditor.id.git-peek\";\n info[\"CFBundleURLTypes\"] = [\n {\n CFBundleURLName: \"HTTP URL\",\n CFBundleURLSchemes: [\"http\", \"https\", PROTOCOL],\n },\n ];\n info[\"LSBackgroundOnly\"] = true;\n plist.writeFileSync(infoPlist, info);\n console.log(\"Updated Info.plist\");\n console.log(\"Moving application to /Applications/git-peek.app\");\n if (fs.existsSync(\"/Applications/git-peek.app\")) {\n fs.rmSync(\"/Applications/git-peek.app\", {\n recursive: true,\n force: true,\n });\n }\n\n if (fs.existsSync(\"/Applications/git-peek.app\")) {\n fs.rmSync(\"/Applications/git-peek.app\", { force: true, recursive: true });\n }\n\n fs.renameSync(appleScriptApp, \"/Applications/git-peek.app\");\n\n console.log(chalk.gray(`mkdir ${TEMP_DIR}`));\n fs.mkdirSync(TEMP_DIR);\n\n const shim = `#!/bin/bash\n\n# AppleScript might run as a different user/environment variables.\n# So we have to inline some environment variables!\nexport PATH=$PATH:${JSON.stringify(process.env.PATH) || \"\"}\nexport EDITOR=${JSON.stringify(editor)}\nexport HOME=${JSON.stringify(process.env.HOME) || \"\"}\nexport USER=${JSON.stringify(process.env.USER) || \"\"}\n\n.${JSON.stringify(await which(\"git-peek\"))} --fromscript $1 $2 $3 $4 & disown\n`;\n\n console.log(\n \"// --- BEGIN SHIM FILE ---\\n\" +\n chalk.gray(shim) +\n \"\\n// --- END SHIM FILE ---\"\n );\n console.log(`Wrote shim file (${chalk.gray(gitPeekShim)})`);\n fs.writeFileSync(gitPeekShim, shim, \"utf8\");\n execSync(\"chmod +x \" + gitPeekShim);\n\n console.log(\"Registering URL handler...\");\n execSync(`duti -s com.apple.ScriptEditor.id.git-peek ${PROTOCOL}`);\n\n fs.rmSync(appleScriptFile);\n\n if (fs.existsSync(\"/Applications/Google Chrome.app\")) {\n console.log(`Adding ${PROTOCOL}:// to Google Chrome`);\n try {\n execSync(\n `defaults write com.google.Chrome URLWhitelist -array '${PROTOCOL}://*'`\n );\n } catch (exception) {\n console.warn(\"Failed to add protocol to Google Chrome. Its okay.\");\n }\n }\n\n console.log(chalk.green(\"\u2705 Registered git-peek:// protocol successfully.\"));\n console.log('To unregister, just delete \"/Applications/git-peek.app\".');\n console.log(\"To test it, run this:\");\n console.log(\" \" + chalk.blue(`open git-peek://Jarred-Sumner/git-peek`));\n if (editor.includes(\"vi\")) {\n console.warn(\n \"vim/vi not supported (no terminal window will be open), but if you know a way to run a terminal window from the AppleScript please do submit a PR!\"\n );\n }\n}\n\nexport async function generateAppleScript(shimLocation: string, tempDir) {\n return `\n\non open location this_URL\n try\n set innerCmd to \"${shimLocation} \" & quoted form of this_URL & \" &> /usr/local/var/log/git-peek &\"\n do shell script innerCmd\n on error errMsg\n display dialog errMsg\n end try\nend open location\n`.trim();\n}\n", "class Node {\n\t/// value;\n\t/// next;\n\n\tconstructor(value) {\n\t\tthis.value = value;\n\n\t\t// TODO: Remove this when targeting Node.js 12.\n\t\tthis.next = undefined;\n\t}\n}\n\nclass Queue {\n\t// TODO: Use private class fields when targeting Node.js 12.\n\t// #_head;\n\t// #_tail;\n\t// #_size;\n\n\tconstructor() {\n\t\tthis.clear();\n\t}\n\n\tenqueue(value) {\n\t\tconst node = new Node(value);\n\n\t\tif (this._head) {\n\t\t\tthis._tail.next = node;\n\t\t\tthis._tail = node;\n\t\t} else {\n\t\t\tthis._head = node;\n\t\t\tthis._tail = node;\n\t\t}\n\n\t\tthis._size++;\n\t}\n\n\tdequeue() {\n\t\tconst current = this._head;\n\t\tif (!current) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._head = this._head.next;\n\t\tthis._size--;\n\t\treturn current.value;\n\t}\n\n\tclear() {\n\t\tthis._head = undefined;\n\t\tthis._tail = undefined;\n\t\tthis._size = 0;\n\t}\n\n\tget size() {\n\t\treturn this._size;\n\t}\n\n\t* [Symbol.iterator]() {\n\t\tlet current = this._head;\n\n\t\twhile (current) {\n\t\t\tyield current.value;\n\t\t\tcurrent = current.next;\n\t\t}\n\t}\n}\n\nmodule.exports = Queue;\n", "'use strict';\nconst Queue = require('yocto-queue');\n\nconst pLimit = concurrency => {\n\tif (!((Number.isInteger(concurrency) || concurrency === Infinity) && concurrency > 0)) {\n\t\tthrow new TypeError('Expected `concurrency` to be a number from 1 and up');\n\t}\n\n\tconst queue = new Queue();\n\tlet activeCount = 0;\n\n\tconst next = () => {\n\t\tactiveCount--;\n\n\t\tif (queue.size > 0) {\n\t\t\tqueue.dequeue()();\n\t\t}\n\t};\n\n\tconst run = async (fn, resolve, ...args) => {\n\t\tactiveCount++;\n\n\t\tconst result = (async () => fn(...args))();\n\n\t\tresolve(result);\n\n\t\ttry {\n\t\t\tawait result;\n\t\t} catch {}\n\n\t\tnext();\n\t};\n\n\tconst enqueue = (fn, resolve, ...args) => {\n\t\tqueue.enqueue(run.bind(null, fn, resolve, ...args));\n\n\t\t(async () => {\n\t\t\t// This function needs to wait until the next microtask before comparing\n\t\t\t// `activeCount` to `concurrency`, because `activeCount` is updated asynchronously\n\t\t\t// when the run function is dequeued and called. The comparison in the if-statement\n\t\t\t// needs to happen asynchronously as well to get an up-to-date value for `activeCount`.\n\t\t\tawait Promise.resolve();\n\n\t\t\tif (activeCount < concurrency && queue.size > 0) {\n\t\t\t\tqueue.dequeue()();\n\t\t\t}\n\t\t})();\n\t};\n\n\tconst generator = (fn, ...args) => new Promise(resolve => {\n\t\tenqueue(fn, resolve, ...args);\n\t});\n\n\tObject.defineProperties(generator, {\n\t\tactiveCount: {\n\t\t\tget: () => activeCount\n\t\t},\n\t\tpendingCount: {\n\t\t\tget: () => queue.size\n\t\t},\n\t\tclearQueue: {\n\t\t\tvalue: () => {\n\t\t\t\tqueue.clear();\n\t\t\t}\n\t\t}\n\t});\n\n\treturn generator;\n};\n\nmodule.exports = pLimit;\n", "'use strict';\nconst pLimit = require('p-limit');\n\nclass EndError extends Error {\n\tconstructor(value) {\n\t\tsuper();\n\t\tthis.value = value;\n\t}\n}\n\n// The input can also be a promise, so we await it\nconst testElement = async (element, tester) => tester(await element);\n\n// The input can also be a promise, so we `Promise.all()` them both\nconst finder = async element => {\n\tconst values = await Promise.all(element);\n\tif (values[1] === true) {\n\t\tthrow new EndError(values[0]);\n\t}\n\n\treturn false;\n};\n\nconst pLocate = async (iterable, tester, options) => {\n\toptions = {\n\t\tconcurrency: Infinity,\n\t\tpreserveOrder: true,\n\t\t...options\n\t};\n\n\tconst limit = pLimit(options.concurrency);\n\n\t// Start all the promises concurrently with optional limit\n\tconst items = [...iterable].map(element => [element, limit(testElement, element, tester)]);\n\n\t// Check the promises either serially or concurrently\n\tconst checkLimit = pLimit(options.preserveOrder ? 1 : Infinity);\n\n\ttry {\n\t\tawait Promise.all(items.map(element => checkLimit(finder, element)));\n\t} catch (error) {\n\t\tif (error instanceof EndError) {\n\t\t\treturn error.value;\n\t\t}\n\n\t\tthrow error;\n\t}\n};\n\nmodule.exports = pLocate;\n", "'use strict';\nconst path = require('path');\nconst fs = require('fs');\nconst {promisify} = require('util');\nconst pLocate = require('p-locate');\n\nconst fsStat = promisify(fs.stat);\nconst fsLStat = promisify(fs.lstat);\n\nconst typeMappings = {\n\tdirectory: 'isDirectory',\n\tfile: 'isFile'\n};\n\nfunction checkType({type}) {\n\tif (type in typeMappings) {\n\t\treturn;\n\t}\n\n\tthrow new Error(`Invalid type specified: ${type}`);\n}\n\nconst matchType = (type, stat) => type === undefined || stat[typeMappings[type]]();\n\nmodule.exports = async (paths, options) => {\n\toptions = {\n\t\tcwd: process.cwd(),\n\t\ttype: 'file',\n\t\tallowSymlinks: true,\n\t\t...options\n\t};\n\n\tcheckType(options);\n\n\tconst statFn = options.allowSymlinks ? fsStat : fsLStat;\n\n\treturn pLocate(paths, async path_ => {\n\t\ttry {\n\t\t\tconst stat = await statFn(path.resolve(options.cwd, path_));\n\t\t\treturn matchType(options.type, stat);\n\t\t} catch {\n\t\t\treturn false;\n\t\t}\n\t}, options);\n};\n\nmodule.exports.sync = (paths, options) => {\n\toptions = {\n\t\tcwd: process.cwd(),\n\t\tallowSymlinks: true,\n\t\ttype: 'file',\n\t\t...options\n\t};\n\n\tcheckType(options);\n\n\tconst statFn = options.allowSymlinks ? fs.statSync : fs.lstatSync;\n\n\tfor (const path_ of paths) {\n\t\ttry {\n\t\t\tconst stat = statFn(path.resolve(options.cwd, path_));\n\n\t\t\tif (matchType(options.type, stat)) {\n\t\t\t\treturn path_;\n\t\t\t}\n\t\t} catch {}\n\t}\n};\n", "'use strict';\nconst fs = require('fs');\nconst {promisify} = require('util');\n\nconst pAccess = promisify(fs.access);\n\nmodule.exports = async path => {\n\ttry {\n\t\tawait pAccess(path);\n\t\treturn true;\n\t} catch (_) {\n\t\treturn false;\n\t}\n};\n\nmodule.exports.sync = path => {\n\ttry {\n\t\tfs.accessSync(path);\n\t\treturn true;\n\t} catch (_) {\n\t\treturn false;\n\t}\n};\n", "'use strict';\nconst path = require('path');\nconst locatePath = require('locate-path');\nconst pathExists = require('path-exists');\n\nconst stop = Symbol('findUp.stop');\n\nmodule.exports = async (name, options = {}) => {\n\tlet directory = path.resolve(options.cwd || '');\n\tconst {root} = path.parse(directory);\n\tconst paths = [].concat(name);\n\n\tconst runMatcher = async locateOptions => {\n\t\tif (typeof name !== 'function') {\n\t\t\treturn locatePath(paths, locateOptions);\n\t\t}\n\n\t\tconst foundPath = await name(locateOptions.cwd);\n\t\tif (typeof foundPath === 'string') {\n\t\t\treturn locatePath([foundPath], locateOptions);\n\t\t}\n\n\t\treturn foundPath;\n\t};\n\n\t// eslint-disable-next-line no-constant-condition\n\twhile (true) {\n\t\t// eslint-disable-next-line no-await-in-loop\n\t\tconst foundPath = await runMatcher({...options, cwd: directory});\n\n\t\tif (foundPath === stop) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (foundPath) {\n\t\t\treturn path.resolve(directory, foundPath);\n\t\t}\n\n\t\tif (directory === root) {\n\t\t\treturn;\n\t\t}\n\n\t\tdirectory = path.dirname(directory);\n\t}\n};\n\nmodule.exports.sync = (name, options = {}) => {\n\tlet directory = path.resolve(options.cwd || '');\n\tconst {root} = path.parse(directory);\n\tconst paths = [].concat(name);\n\n\tconst runMatcher = locateOptions => {\n\t\tif (typeof name !== 'function') {\n\t\t\treturn locatePath.sync(paths, locateOptions);\n\t\t}\n\n\t\tconst foundPath = name(locateOptions.cwd);\n\t\tif (typeof foundPath === 'string') {\n\t\t\treturn locatePath.sync([foundPath], locateOptions);\n\t\t}\n\n\t\treturn foundPath;\n\t};\n\n\t// eslint-disable-next-line no-constant-condition\n\twhile (true) {\n\t\tconst foundPath = runMatcher({...options, cwd: directory});\n\n\t\tif (foundPath === stop) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (foundPath) {\n\t\t\treturn path.resolve(directory, foundPath);\n\t\t}\n\n\t\tif (directory === root) {\n\t\t\treturn;\n\t\t}\n\n\t\tdirectory = path.dirname(directory);\n\t}\n};\n\nmodule.exports.exists = pathExists;\n\nmodule.exports.sync.exists = pathExists.sync;\n\nmodule.exports.stop = stop;\n", "'use strict';\r\n\r\nconst { promisify } = require(\"util\");\r\nconst tmp = require(\"tmp\");\r\n\r\n// file\r\nmodule.exports.fileSync = tmp.fileSync;\r\nconst fileWithOptions = promisify((options, cb) =>\r\n tmp.file(options, (err, path, fd, cleanup) =>\r\n err ? cb(err) : cb(undefined, { path, fd, cleanup: promisify(cleanup) })\r\n )\r\n);\r\nmodule.exports.file = async (options) => fileWithOptions(options);\r\n\r\nmodule.exports.withFile = async function withFile(fn, options) {\r\n const { path, fd, cleanup } = await module.exports.file(options);\r\n try {\r\n return await fn({ path, fd });\r\n } finally {\r\n await cleanup();\r\n }\r\n};\r\n\r\n\r\n// directory\r\nmodule.exports.dirSync = tmp.dirSync;\r\nconst dirWithOptions = promisify((options, cb) =>\r\n tmp.dir(options, (err, path, cleanup) =>\r\n err ? cb(err) : cb(undefined, { path, cleanup: promisify(cleanup) })\r\n )\r\n);\r\nmodule.exports.dir = async (options) => dirWithOptions(options);\r\n\r\nmodule.exports.withDir = async function withDir(fn, options) {\r\n const { path, cleanup } = await module.exports.dir(options);\r\n try {\r\n return await fn({ path });\r\n } finally {\r\n await cleanup();\r\n }\r\n};\r\n\r\n\r\n// name generation\r\nmodule.exports.tmpNameSync = tmp.tmpNameSync;\r\nmodule.exports.tmpName = promisify(tmp.tmpName);\r\n\r\nmodule.exports.tmpdir = tmp.tmpdir;\r\n\r\nmodule.exports.setGracefulCleanup = tmp.setGracefulCleanup;\r\n", "var __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __getProtoOf = Object.getPrototypeOf;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __markAsModule = (target) => __defProp(target, \"__esModule\", {value: true});\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, {get: all[name], enumerable: true});\n};\nvar __exportStar = (target, module2, desc) => {\n if (module2 && typeof module2 === \"object\" || typeof module2 === \"function\") {\n for (let key of __getOwnPropNames(module2))\n if (!__hasOwnProp.call(target, key) && key !== \"default\")\n __defProp(target, key, {get: () => module2[key], enumerable: !(desc = __getOwnPropDesc(module2, key)) || desc.enumerable});\n }\n return target;\n};\nvar __toModule = (module2) => {\n if (module2 && module2.__esModule)\n return module2;\n return __exportStar(__markAsModule(__defProp(module2 != null ? __create(__getProtoOf(module2)) : {}, \"default\", {value: module2, enumerable: true})), module2);\n};\n\n// src/index.ts\n__markAsModule(exports);\n__export(exports, {\n BINARY_VERSION: () => BINARY_VERSION,\n PACKAGE_NAMES: () => PACKAGE_NAMES,\n installBin: () => installBin,\n register: () => register\n});\nvar import_child_process = __toModule(require(\"child_process\"));\nvar import_find_up = __toModule(require(\"find-up\"));\nvar fs = __toModule(require(\"fs\"));\nvar path = __toModule(require(\"path\"));\nvar import_tmp_promise = __toModule(require(\"tmp-promise\"));\nasync function getNodeModules(cwd) {\n return path.resolve(await import_find_up.default(\"node_modules\", {type: \"directory\", cwd}), \"../\");\n}\nvar BINARY_VERSION = \"1.0.7\";\nvar PACKAGE_NAMES = {\n win64: \"register-url-win64-bin\",\n \"win64-uac\": \"register-url-win64-bin-uac\"\n};\nasync function installBin(requireUAC = true) {\n const packageName = requireUAC ? \"register-url-win64-bin-uac\" : \"register-url-win64-bin\";\n const cwd = await getNodeModules(path.resolve(__dirname));\n return new Promise((resolve2, reject) => {\n const child = import_child_process.default.spawn(\"npm\", [\n \"install\",\n `${packageName}@${\"1.0.7\"}`,\n `--legacy-peer-deps`,\n \"-g\",\n `--production`,\n `--no-fund`,\n `--no-audit`,\n `--no-package-lock`,\n `--ignore-scripts`\n ], {\n cwd,\n detached: false,\n shell: true,\n env: process.env\n });\n child.stdout.pipe(process.stdout);\n child.stdin.pipe(process.stdin);\n child.once(\"exit\", resolve2);\n child.once(\"error\", reject);\n });\n}\nasync function register(request, binPath = null) {\n var _a, _b;\n let downloadBin = binPath;\n if (!binPath) {\n let uac = ((_b = (_a = request.origins) == null ? void 0 : _a.length) != null ? _b : 0) > 0;\n let packageName = uac ? \"register-url-win64-bin-uac\" : \"register-url-win64-bin\";\n try {\n downloadBin = require(path.resolve(__dirname, \"node_modules\", packageName));\n } catch (exception) {\n return Promise.reject(`Please install \"${packageName}\" into ${path.resolve(__dirname)} before running this function. For convienience, you can call installBin()`);\n }\n }\n await fs.promises.access(downloadBin, fs.constants.F_OK);\n if (typeof request.register === \"undefined\") {\n request.register = true;\n }\n if (!request.output) {\n const {path: filePath2} = await import_tmp_promise.default.file({\n discardDescriptor: true,\n postfix: \".json\"\n });\n request.output = filePath2;\n }\n const filePath = path.resolve(request.output);\n delete request.output;\n await fs.promises.writeFile(filePath, JSON.stringify(request), \"utf-8\");\n return await new Promise(async (resolve2, reject) => {\n const child = import_child_process.default.spawn(downloadBin, [filePath], {\n env: process.env,\n windowsHide: true,\n detached: false,\n shell: true,\n stdio: \"inherit\"\n });\n child.once(\"exit\", async () => {\n let response;\n try {\n response = JSON.parse((await fs.promises.readFile(filePath, \"utf-8\")).trim());\n if (typeof response !== \"object\") {\n throw \"Empty response\";\n }\n } catch (exception) {\n response = {\n error: exception.message,\n exception,\n chrome: false,\n protocol: false,\n edge: false\n };\n }\n resolve2(response);\n });\n }).catch((err) => {\n return Promise.resolve({\n error: err.message,\n exception: err,\n chrome: false,\n edge: false,\n protocol: false\n });\n });\n}\n", "'use strict'\n\n// turn tar(1) style args like `C` into the more verbose things like `cwd`\n\nconst argmap = new Map([\n ['C', 'cwd'],\n ['f', 'file'],\n ['z', 'gzip'],\n ['P', 'preservePaths'],\n ['U', 'unlink'],\n ['strip-components', 'strip'],\n ['stripComponents', 'strip'],\n ['keep-newer', 'newer'],\n ['keepNewer', 'newer'],\n ['keep-newer-files', 'newer'],\n ['keepNewerFiles', 'newer'],\n ['k', 'keep'],\n ['keep-existing', 'keep'],\n ['keepExisting', 'keep'],\n ['m', 'noMtime'],\n ['no-mtime', 'noMtime'],\n ['p', 'preserveOwner'],\n ['L', 'follow'],\n ['h', 'follow'],\n])\n\nmodule.exports = opt => opt ? Object.keys(opt).map(k => [\n argmap.has(k) ? argmap.get(k) : k, opt[k],\n]).reduce((set, kv) => (set[kv[0]] = kv[1], set), Object.create(null)) : {}\n", "'use strict'\nmodule.exports = function (Yallist) {\n Yallist.prototype[Symbol.iterator] = function* () {\n for (let walker = this.head; walker; walker = walker.next) {\n yield walker.value\n }\n }\n}\n", "'use strict'\nmodule.exports = Yallist\n\nYallist.Node = Node\nYallist.create = Yallist\n\nfunction Yallist (list) {\n var self = this\n if (!(self instanceof Yallist)) {\n self = new Yallist()\n }\n\n self.tail = null\n self.head = null\n self.length = 0\n\n if (list && typeof list.forEach === 'function') {\n list.forEach(function (item) {\n self.push(item)\n })\n } else if (arguments.length > 0) {\n for (var i = 0, l = arguments.length; i < l; i++) {\n self.push(arguments[i])\n }\n }\n\n return self\n}\n\nYallist.prototype.removeNode = function (node) {\n if (node.list !== this) {\n throw new Error('removing node which does not belong to this list')\n }\n\n var next = node.next\n var prev = node.prev\n\n if (next) {\n next.prev = prev\n }\n\n if (prev) {\n prev.next = next\n }\n\n if (node === this.head) {\n this.head = next\n }\n if (node === this.tail) {\n this.tail = prev\n }\n\n node.list.length--\n node.next = null\n node.prev = null\n node.list = null\n\n return next\n}\n\nYallist.prototype.unshiftNode = function (node) {\n if (node === this.head) {\n return\n }\n\n if (node.list) {\n node.list.removeNode(node)\n }\n\n var head = this.head\n node.list = this\n node.next = head\n if (head) {\n head.prev = node\n }\n\n this.head = node\n if (!this.tail) {\n this.tail = node\n }\n this.length++\n}\n\nYallist.prototype.pushNode = function (node) {\n if (node === this.tail) {\n return\n }\n\n if (node.list) {\n node.list.removeNode(node)\n }\n\n var tail = this.tail\n node.list = this\n node.prev = tail\n if (tail) {\n tail.next = node\n }\n\n this.tail = node\n if (!this.head) {\n this.head = node\n }\n this.length++\n}\n\nYallist.prototype.push = function () {\n for (var i = 0, l = arguments.length; i < l; i++) {\n push(this, arguments[i])\n }\n return this.length\n}\n\nYallist.prototype.unshift = function () {\n for (var i = 0, l = arguments.length; i < l; i++) {\n unshift(this, arguments[i])\n }\n return this.length\n}\n\nYallist.prototype.pop = function () {\n if (!this.tail) {\n return undefined\n }\n\n var res = this.tail.value\n this.tail = this.tail.prev\n if (this.tail) {\n this.tail.next = null\n } else {\n this.head = null\n }\n this.length--\n return res\n}\n\nYallist.prototype.shift = function () {\n if (!this.head) {\n return undefined\n }\n\n var res = this.head.value\n this.head = this.head.next\n if (this.head) {\n this.head.prev = null\n } else {\n this.tail = null\n }\n this.length--\n return res\n}\n\nYallist.prototype.forEach = function (fn, thisp) {\n thisp = thisp || this\n for (var walker = this.head, i = 0; walker !== null; i++) {\n fn.call(thisp, walker.value, i, this)\n walker = walker.next\n }\n}\n\nYallist.prototype.forEachReverse = function (fn, thisp) {\n thisp = thisp || this\n for (var walker = this.tail, i = this.length - 1; walker !== null; i--) {\n fn.call(thisp, walker.value, i, this)\n walker = walker.prev\n }\n}\n\nYallist.prototype.get = function (n) {\n for (var i = 0, walker = this.head; walker !== null && i < n; i++) {\n // abort out of the list early if we hit a cycle\n walker = walker.next\n }\n if (i === n && walker !== null) {\n return walker.value\n }\n}\n\nYallist.prototype.getReverse = function (n) {\n for (var i = 0, walker = this.tail; walker !== null && i < n; i++) {\n // abort out of the list early if we hit a cycle\n walker = walker.prev\n }\n if (i === n && walker !== null) {\n return walker.value\n }\n}\n\nYallist.prototype.map = function (fn, thisp) {\n thisp = thisp || this\n var res = new Yallist()\n for (var walker = this.head; walker !== null;) {\n res.push(fn.call(thisp, walker.value, this))\n walker = walker.next\n }\n return res\n}\n\nYallist.prototype.mapReverse = function (fn, thisp) {\n thisp = thisp || this\n var res = new Yallist()\n for (var walker = this.tail; walker !== null;) {\n res.push(fn.call(thisp, walker.value, this))\n walker = walker.prev\n }\n return res\n}\n\nYallist.prototype.reduce = function (fn, initial) {\n var acc\n var walker = this.head\n if (arguments.length > 1) {\n acc = initial\n } else if (this.head) {\n walker = this.head.next\n acc = this.head.value\n } else {\n throw new TypeError('Reduce of empty list with no initial value')\n }\n\n for (var i = 0; walker !== null; i++) {\n acc = fn(acc, walker.value, i)\n walker = walker.next\n }\n\n return acc\n}\n\nYallist.prototype.reduceReverse = function (fn, initial) {\n var acc\n var walker = this.tail\n if (arguments.length > 1) {\n acc = initial\n } else if (this.tail) {\n walker = this.tail.prev\n acc = this.tail.value\n } else {\n throw new TypeError('Reduce of empty list with no initial value')\n }\n\n for (var i = this.length - 1; walker !== null; i--) {\n acc = fn(acc, walker.value, i)\n walker = walker.prev\n }\n\n return acc\n}\n\nYallist.prototype.toArray = function () {\n var arr = new Array(this.length)\n for (var i = 0, walker = this.head; walker !== null; i++) {\n arr[i] = walker.value\n walker = walker.next\n }\n return arr\n}\n\nYallist.prototype.toArrayReverse = function () {\n var arr = new Array(this.length)\n for (var i = 0, walker = this.tail; walker !== null; i++) {\n arr[i] = walker.value\n walker = walker.prev\n }\n return arr\n}\n\nYallist.prototype.slice = function (from, to) {\n to = to || this.length\n if (to < 0) {\n to += this.length\n }\n from = from || 0\n if (from < 0) {\n from += this.length\n }\n var ret = new Yallist()\n if (to < from || to < 0) {\n return ret\n }\n if (from < 0) {\n from = 0\n }\n if (to > this.length) {\n to = this.length\n }\n for (var i = 0, walker = this.head; walker !== null && i < from; i++) {\n walker = walker.next\n }\n for (; walker !== null && i < to; i++, walker = walker.next) {\n ret.push(walker.value)\n }\n return ret\n}\n\nYallist.prototype.sliceReverse = function (from, to) {\n to = to || this.length\n if (to < 0) {\n to += this.length\n }\n from = from || 0\n if (from < 0) {\n from += this.length\n }\n var ret = new Yallist()\n if (to < from || to < 0) {\n return ret\n }\n if (from < 0) {\n from = 0\n }\n if (to > this.length) {\n to = this.length\n }\n for (var i = this.length, walker = this.tail; walker !== null && i > to; i--) {\n walker = walker.prev\n }\n for (; walker !== null && i > from; i--, walker = walker.prev) {\n ret.push(walker.value)\n }\n return ret\n}\n\nYallist.prototype.splice = function (start, deleteCount, ...nodes) {\n if (start > this.length) {\n start = this.length - 1\n }\n if (start < 0) {\n start = this.length + start;\n }\n\n for (var i = 0, walker = this.head; walker !== null && i < start; i++) {\n walker = walker.next\n }\n\n var ret = []\n for (var i = 0; walker && i < deleteCount; i++) {\n ret.push(walker.value)\n walker = this.removeNode(walker)\n }\n if (walker === null) {\n walker = this.tail\n }\n\n if (walker !== this.head && walker !== this.tail) {\n walker = walker.prev\n }\n\n for (var i = 0; i < nodes.length; i++) {\n walker = insert(this, walker, nodes[i])\n }\n return ret;\n}\n\nYallist.prototype.reverse = function () {\n var head = this.head\n var tail = this.tail\n for (var walker = head; walker !== null; walker = walker.prev) {\n var p = walker.prev\n walker.prev = walker.next\n walker.next = p\n }\n this.head = tail\n this.tail = head\n return this\n}\n\nfunction insert (self, node, value) {\n var inserted = node === self.head ?\n new Node(value, null, node, self) :\n new Node(value, node, node.next, self)\n\n if (inserted.next === null) {\n self.tail = inserted\n }\n if (inserted.prev === null) {\n self.head = inserted\n }\n\n self.length++\n\n return inserted\n}\n\nfunction push (self, item) {\n self.tail = new Node(item, self.tail, null, self)\n if (!self.head) {\n self.head = self.tail\n }\n self.length++\n}\n\nfunction unshift (self, item) {\n self.head = new Node(item, null, self.head, self)\n if (!self.tail) {\n self.tail = self.head\n }\n self.length++\n}\n\nfunction Node (value, prev, next, list) {\n if (!(this instanceof Node)) {\n return new Node(value, prev, next, list)\n }\n\n this.list = list\n this.value = value\n\n if (prev) {\n prev.next = this\n this.prev = prev\n } else {\n this.prev = null\n }\n\n if (next) {\n next.prev = this\n this.next = next\n } else {\n this.next = null\n }\n}\n\ntry {\n // add if support for Symbol.iterator is present\n require('./iterator.js')(Yallist)\n} catch (er) {}\n", "'use strict'\nconst EE = require('events')\nconst Stream = require('stream')\nconst Yallist = require('yallist')\nconst SD = require('string_decoder').StringDecoder\n\nconst EOF = Symbol('EOF')\nconst MAYBE_EMIT_END = Symbol('maybeEmitEnd')\nconst EMITTED_END = Symbol('emittedEnd')\nconst EMITTING_END = Symbol('emittingEnd')\nconst CLOSED = Symbol('closed')\nconst READ = Symbol('read')\nconst FLUSH = Symbol('flush')\nconst FLUSHCHUNK = Symbol('flushChunk')\nconst ENCODING = Symbol('encoding')\nconst DECODER = Symbol('decoder')\nconst FLOWING = Symbol('flowing')\nconst PAUSED = Symbol('paused')\nconst RESUME = Symbol('resume')\nconst BUFFERLENGTH = Symbol('bufferLength')\nconst BUFFERPUSH = Symbol('bufferPush')\nconst BUFFERSHIFT = Symbol('bufferShift')\nconst OBJECTMODE = Symbol('objectMode')\nconst DESTROYED = Symbol('destroyed')\n\n// TODO remove when Node v8 support drops\nconst doIter = global._MP_NO_ITERATOR_SYMBOLS_ !== '1'\nconst ASYNCITERATOR = doIter && Symbol.asyncIterator\n || Symbol('asyncIterator not implemented')\nconst ITERATOR = doIter && Symbol.iterator\n || Symbol('iterator not implemented')\n\n// events that mean 'the stream is over'\n// these are treated specially, and re-emitted\n// if they are listened for after emitting.\nconst isEndish = ev =>\n ev === 'end' ||\n ev === 'finish' ||\n ev === 'prefinish'\n\nconst isArrayBuffer = b => b instanceof ArrayBuffer ||\n typeof b === 'object' &&\n b.constructor &&\n b.constructor.name === 'ArrayBuffer' &&\n b.byteLength >= 0\n\nconst isArrayBufferView = b => !Buffer.isBuffer(b) && ArrayBuffer.isView(b)\n\nmodule.exports = class Minipass extends Stream {\n constructor (options) {\n super()\n this[FLOWING] = false\n // whether we're explicitly paused\n this[PAUSED] = false\n this.pipes = new Yallist()\n this.buffer = new Yallist()\n this[OBJECTMODE] = options && options.objectMode || false\n if (this[OBJECTMODE])\n this[ENCODING] = null\n else\n this[ENCODING] = options && options.encoding || null\n if (this[ENCODING] === 'buffer')\n this[ENCODING] = null\n this[DECODER] = this[ENCODING] ? new SD(this[ENCODING]) : null\n this[EOF] = false\n this[EMITTED_END] = false\n this[EMITTING_END] = false\n this[CLOSED] = false\n this.writable = true\n this.readable = true\n this[BUFFERLENGTH] = 0\n this[DESTROYED] = false\n }\n\n get bufferLength () { return this[BUFFERLENGTH] }\n\n get encoding () { return this[ENCODING] }\n set encoding (enc) {\n if (this[OBJECTMODE])\n throw new Error('cannot set encoding in objectMode')\n\n if (this[ENCODING] && enc !== this[ENCODING] &&\n (this[DECODER] && this[DECODER].lastNeed || this[BUFFERLENGTH]))\n throw new Error('cannot change encoding')\n\n if (this[ENCODING] !== enc) {\n this[DECODER] = enc ? new SD(enc) : null\n if (this.buffer.length)\n this.buffer = this.buffer.map(chunk => this[DECODER].write(chunk))\n }\n\n this[ENCODING] = enc\n }\n\n setEncoding (enc) {\n this.encoding = enc\n }\n\n get objectMode () { return this[OBJECTMODE] }\n set objectMode (om) { this[OBJECTMODE] = this[OBJECTMODE] || !!om }\n\n write (chunk, encoding, cb) {\n if (this[EOF])\n throw new Error('write after end')\n\n if (this[DESTROYED]) {\n this.emit('error', Object.assign(\n new Error('Cannot call write after a stream was destroyed'),\n { code: 'ERR_STREAM_DESTROYED' }\n ))\n return true\n }\n\n if (typeof encoding === 'function')\n cb = encoding, encoding = 'utf8'\n\n if (!encoding)\n encoding = 'utf8'\n\n // convert array buffers and typed array views into buffers\n // at some point in the future, we may want to do the opposite!\n // leave strings and buffers as-is\n // anything else switches us into object mode\n if (!this[OBJECTMODE] && !Buffer.isBuffer(chunk)) {\n if (isArrayBufferView(chunk))\n chunk = Buffer.from(chunk.buffer, chunk.byteOffset, chunk.byteLength)\n else if (isArrayBuffer(chunk))\n chunk = Buffer.from(chunk)\n else if (typeof chunk !== 'string')\n // use the setter so we throw if we have encoding set\n this.objectMode = true\n }\n\n // this ensures at this point that the chunk is a buffer or string\n // don't buffer it up or send it to the decoder\n if (!this.objectMode && !chunk.length) {\n if (this[BUFFERLENGTH] !== 0)\n this.emit('readable')\n if (cb)\n cb()\n return this.flowing\n }\n\n // fast-path writing strings of same encoding to a stream with\n // an empty buffer, skipping the buffer/decoder dance\n if (typeof chunk === 'string' && !this[OBJECTMODE] &&\n // unless it is a string already ready for us to use\n !(encoding === this[ENCODING] && !this[DECODER].lastNeed)) {\n chunk = Buffer.from(chunk, encoding)\n }\n\n if (Buffer.isBuffer(chunk) && this[ENCODING])\n chunk = this[DECODER].write(chunk)\n\n if (this.flowing) {\n // if we somehow have something in the buffer, but we think we're\n // flowing, then we need to flush all that out first, or we get\n // chunks coming in out of order. Can't emit 'drain' here though,\n // because we're mid-write, so that'd be bad.\n if (this[BUFFERLENGTH] !== 0)\n this[FLUSH](true)\n this.emit('data', chunk)\n } else\n this[BUFFERPUSH](chunk)\n\n if (this[BUFFERLENGTH] !== 0)\n this.emit('readable')\n\n if (cb)\n cb()\n\n return this.flowing\n }\n\n read (n) {\n if (this[DESTROYED])\n return null\n\n try {\n if (this[BUFFERLENGTH] === 0 || n === 0 || n > this[BUFFERLENGTH])\n return null\n\n if (this[OBJECTMODE])\n n = null\n\n if (this.buffer.length > 1 && !this[OBJECTMODE]) {\n if (this.encoding)\n this.buffer = new Yallist([\n Array.from(this.buffer).join('')\n ])\n else\n this.buffer = new Yallist([\n Buffer.concat(Array.from(this.buffer), this[BUFFERLENGTH])\n ])\n }\n\n return this[READ](n || null, this.buffer.head.value)\n } finally {\n this[MAYBE_EMIT_END]()\n }\n }\n\n [READ] (n, chunk) {\n if (n === chunk.length || n === null)\n this[BUFFERSHIFT]()\n else {\n this.buffer.head.value = chunk.slice(n)\n chunk = chunk.slice(0, n)\n this[BUFFERLENGTH] -= n\n }\n\n this.emit('data', chunk)\n\n if (!this.buffer.length && !this[EOF])\n this.emit('drain')\n\n return chunk\n }\n\n end (chunk, encoding, cb) {\n if (typeof chunk === 'function')\n cb = chunk, chunk = null\n if (typeof encoding === 'function')\n cb = encoding, encoding = 'utf8'\n if (chunk)\n this.write(chunk, encoding)\n if (cb)\n this.once('end', cb)\n this[EOF] = true\n this.writable = false\n\n // if we haven't written anything, then go ahead and emit,\n // even if we're not reading.\n // we'll re-emit if a new 'end' listener is added anyway.\n // This makes MP more suitable to write-only use cases.\n if (this.flowing || !this[PAUSED])\n this[MAYBE_EMIT_END]()\n return this\n }\n\n // don't let the internal resume be overwritten\n [RESUME] () {\n if (this[DESTROYED])\n return\n\n this[PAUSED] = false\n this[FLOWING] = true\n this.emit('resume')\n if (this.buffer.length)\n this[FLUSH]()\n else if (this[EOF])\n this[MAYBE_EMIT_END]()\n else\n this.emit('drain')\n }\n\n resume () {\n return this[RESUME]()\n }\n\n pause () {\n this[FLOWING] = false\n this[PAUSED] = true\n }\n\n get destroyed () {\n return this[DESTROYED]\n }\n\n get flowing () {\n return this[FLOWING]\n }\n\n get paused () {\n return this[PAUSED]\n }\n\n [BUFFERPUSH] (chunk) {\n if (this[OBJECTMODE])\n this[BUFFERLENGTH] += 1\n else\n this[BUFFERLENGTH] += chunk.length\n return this.buffer.push(chunk)\n }\n\n [BUFFERSHIFT] () {\n if (this.buffer.length) {\n if (this[OBJECTMODE])\n this[BUFFERLENGTH] -= 1\n else\n this[BUFFERLENGTH] -= this.buffer.head.value.length\n }\n return this.buffer.shift()\n }\n\n [FLUSH] (noDrain) {\n do {} while (this[FLUSHCHUNK](this[BUFFERSHIFT]()))\n\n if (!noDrain && !this.buffer.length && !this[EOF])\n this.emit('drain')\n }\n\n [FLUSHCHUNK] (chunk) {\n return chunk ? (this.emit('data', chunk), this.flowing) : false\n }\n\n pipe (dest, opts) {\n if (this[DESTROYED])\n return\n\n const ended = this[EMITTED_END]\n opts = opts || {}\n if (dest === process.stdout || dest === process.stderr)\n opts.end = false\n else\n opts.end = opts.end !== false\n\n const p = { dest: dest, opts: opts, ondrain: _ => this[RESUME]() }\n this.pipes.push(p)\n\n dest.on('drain', p.ondrain)\n this[RESUME]()\n // piping an ended stream ends immediately\n if (ended && p.opts.end)\n p.dest.end()\n return dest\n }\n\n addListener (ev, fn) {\n return this.on(ev, fn)\n }\n\n on (ev, fn) {\n try {\n return super.on(ev, fn)\n } finally {\n if (ev === 'data' && !this.pipes.length && !this.flowing)\n this[RESUME]()\n else if (isEndish(ev) && this[EMITTED_END]) {\n super.emit(ev)\n this.removeAllListeners(ev)\n }\n }\n }\n\n get emittedEnd () {\n return this[EMITTED_END]\n }\n\n [MAYBE_EMIT_END] () {\n if (!this[EMITTING_END] &&\n !this[EMITTED_END] &&\n !this[DESTROYED] &&\n this.buffer.length === 0 &&\n this[EOF]) {\n this[EMITTING_END] = true\n this.emit('end')\n this.emit('prefinish')\n this.emit('finish')\n if (this[CLOSED])\n this.emit('close')\n this[EMITTING_END] = false\n }\n }\n\n emit (ev, data) {\n // error and close are only events allowed after calling destroy()\n if (ev !== 'error' && ev !== 'close' && ev !== DESTROYED && this[DESTROYED])\n return\n else if (ev === 'data') {\n if (!data)\n return\n\n if (this.pipes.length)\n this.pipes.forEach(p =>\n p.dest.write(data) === false && this.pause())\n } else if (ev === 'end') {\n // only actual end gets this treatment\n if (this[EMITTED_END] === true)\n return\n\n this[EMITTED_END] = true\n this.readable = false\n\n if (this[DECODER]) {\n data = this[DECODER].end()\n if (data) {\n this.pipes.forEach(p => p.dest.write(data))\n super.emit('data', data)\n }\n }\n\n this.pipes.forEach(p => {\n p.dest.removeListener('drain', p.ondrain)\n if (p.opts.end)\n p.dest.end()\n })\n } else if (ev === 'close') {\n this[CLOSED] = true\n // don't emit close before 'end' and 'finish'\n if (!this[EMITTED_END] && !this[DESTROYED])\n return\n }\n\n // TODO: replace with a spread operator when Node v4 support drops\n const args = new Array(arguments.length)\n args[0] = ev\n args[1] = data\n if (arguments.length > 2) {\n for (let i = 2; i < arguments.length; i++) {\n args[i] = arguments[i]\n }\n }\n\n try {\n return super.emit.apply(this, args)\n } finally {\n if (!isEndish(ev))\n this[MAYBE_EMIT_END]()\n else\n this.removeAllListeners(ev)\n }\n }\n\n // const all = await stream.collect()\n collect () {\n const buf = []\n if (!this[OBJECTMODE])\n buf.dataLength = 0\n // set the promise first, in case an error is raised\n // by triggering the flow here.\n const p = this.promise()\n this.on('data', c => {\n buf.push(c)\n if (!this[OBJECTMODE])\n buf.dataLength += c.length\n })\n return p.then(() => buf)\n }\n\n // const data = await stream.concat()\n concat () {\n return this[OBJECTMODE]\n ? Promise.reject(new Error('cannot concat in objectMode'))\n : this.collect().then(buf =>\n this[OBJECTMODE]\n ? Promise.reject(new Error('cannot concat in objectMode'))\n : this[ENCODING] ? buf.join('') : Buffer.concat(buf, buf.dataLength))\n }\n\n // stream.promise().then(() => done, er => emitted error)\n promise () {\n return new Promise((resolve, reject) => {\n this.on(DESTROYED, () => reject(new Error('stream destroyed')))\n this.on('end', () => resolve())\n this.on('error', er => reject(er))\n })\n }\n\n // for await (let chunk of stream)\n [ASYNCITERATOR] () {\n const next = () => {\n const res = this.read()\n if (res !== null)\n return Promise.resolve({ done: false, value: res })\n\n if (this[EOF])\n return Promise.resolve({ done: true })\n\n let resolve = null\n let reject = null\n const onerr = er => {\n this.removeListener('data', ondata)\n this.removeListener('end', onend)\n reject(er)\n }\n const ondata = value => {\n this.removeListener('error', onerr)\n this.removeListener('end', onend)\n this.pause()\n resolve({ value: value, done: !!this[EOF] })\n }\n const onend = () => {\n this.removeListener('error', onerr)\n this.removeListener('data', ondata)\n resolve({ done: true })\n }\n const ondestroy = () => onerr(new Error('stream destroyed'))\n return new Promise((res, rej) => {\n reject = rej\n resolve = res\n this.once(DESTROYED, ondestroy)\n this.once('error', onerr)\n this.once('end', onend)\n this.once('data', ondata)\n })\n }\n\n return { next }\n }\n\n // for (let chunk of stream)\n [ITERATOR] () {\n const next = () => {\n const value = this.read()\n const done = value === null\n return { value, done }\n }\n return { next }\n }\n\n destroy (er) {\n if (this[DESTROYED]) {\n if (er)\n this.emit('error', er)\n else\n this.emit(DESTROYED)\n return this\n }\n\n this[DESTROYED] = true\n\n // throw away all buffered data, it's never coming out\n this.buffer = new Yallist()\n this[BUFFERLENGTH] = 0\n\n if (typeof this.close === 'function' && !this[CLOSED])\n this.close()\n\n if (er)\n this.emit('error', er)\n else // if no error to emit, still reject pending promises\n this.emit(DESTROYED)\n\n return this\n }\n\n static isStream (s) {\n return !!s && (s instanceof Minipass || s instanceof Stream ||\n s instanceof EE && (\n typeof s.pipe === 'function' || // readable\n (typeof s.write === 'function' && typeof s.end === 'function') // writable\n ))\n }\n}\n", "// Update with any zlib constants that are added or changed in the future.\n// Node v6 didn't export this, so we just hard code the version and rely\n// on all the other hard-coded values from zlib v4736. When node v6\n// support drops, we can just export the realZlibConstants object.\nconst realZlibConstants = require('zlib').constants ||\n /* istanbul ignore next */ { ZLIB_VERNUM: 4736 }\n\nmodule.exports = Object.freeze(Object.assign(Object.create(null), {\n Z_NO_FLUSH: 0,\n Z_PARTIAL_FLUSH: 1,\n Z_SYNC_FLUSH: 2,\n Z_FULL_FLUSH: 3,\n Z_FINISH: 4,\n Z_BLOCK: 5,\n Z_OK: 0,\n Z_STREAM_END: 1,\n Z_NEED_DICT: 2,\n Z_ERRNO: -1,\n Z_STREAM_ERROR: -2,\n Z_DATA_ERROR: -3,\n Z_MEM_ERROR: -4,\n Z_BUF_ERROR: -5,\n Z_VERSION_ERROR: -6,\n Z_NO_COMPRESSION: 0,\n Z_BEST_SPEED: 1,\n Z_BEST_COMPRESSION: 9,\n Z_DEFAULT_COMPRESSION: -1,\n Z_FILTERED: 1,\n Z_HUFFMAN_ONLY: 2,\n Z_RLE: 3,\n Z_FIXED: 4,\n Z_DEFAULT_STRATEGY: 0,\n DEFLATE: 1,\n INFLATE: 2,\n GZIP: 3,\n GUNZIP: 4,\n DEFLATERAW: 5,\n INFLATERAW: 6,\n UNZIP: 7,\n BROTLI_DECODE: 8,\n BROTLI_ENCODE: 9,\n Z_MIN_WINDOWBITS: 8,\n Z_MAX_WINDOWBITS: 15,\n Z_DEFAULT_WINDOWBITS: 15,\n Z_MIN_CHUNK: 64,\n Z_MAX_CHUNK: Infinity,\n Z_DEFAULT_CHUNK: 16384,\n Z_MIN_MEMLEVEL: 1,\n Z_MAX_MEMLEVEL: 9,\n Z_DEFAULT_MEMLEVEL: 8,\n Z_MIN_LEVEL: -1,\n Z_MAX_LEVEL: 9,\n Z_DEFAULT_LEVEL: -1,\n BROTLI_OPERATION_PROCESS: 0,\n BROTLI_OPERATION_FLUSH: 1,\n BROTLI_OPERATION_FINISH: 2,\n BROTLI_OPERATION_EMIT_METADATA: 3,\n BROTLI_MODE_GENERIC: 0,\n BROTLI_MODE_TEXT: 1,\n BROTLI_MODE_FONT: 2,\n BROTLI_DEFAULT_MODE: 0,\n BROTLI_MIN_QUALITY: 0,\n BROTLI_MAX_QUALITY: 11,\n BROTLI_DEFAULT_QUALITY: 11,\n BROTLI_MIN_WINDOW_BITS: 10,\n BROTLI_MAX_WINDOW_BITS: 24,\n BROTLI_LARGE_MAX_WINDOW_BITS: 30,\n BROTLI_DEFAULT_WINDOW: 22,\n BROTLI_MIN_INPUT_BLOCK_BITS: 16,\n BROTLI_MAX_INPUT_BLOCK_BITS: 24,\n BROTLI_PARAM_MODE: 0,\n BROTLI_PARAM_QUALITY: 1,\n BROTLI_PARAM_LGWIN: 2,\n BROTLI_PARAM_LGBLOCK: 3,\n BROTLI_PARAM_DISABLE_LITERAL_CONTEXT_MODELING: 4,\n BROTLI_PARAM_SIZE_HINT: 5,\n BROTLI_PARAM_LARGE_WINDOW: 6,\n BROTLI_PARAM_NPOSTFIX: 7,\n BROTLI_PARAM_NDIRECT: 8,\n BROTLI_DECODER_RESULT_ERROR: 0,\n BROTLI_DECODER_RESULT_SUCCESS: 1,\n BROTLI_DECODER_RESULT_NEEDS_MORE_INPUT: 2,\n BROTLI_DECODER_RESULT_NEEDS_MORE_OUTPUT: 3,\n BROTLI_DECODER_PARAM_DISABLE_RING_BUFFER_REALLOCATION: 0,\n BROTLI_DECODER_PARAM_LARGE_WINDOW: 1,\n BROTLI_DECODER_NO_ERROR: 0,\n BROTLI_DECODER_SUCCESS: 1,\n BROTLI_DECODER_NEEDS_MORE_INPUT: 2,\n BROTLI_DECODER_NEEDS_MORE_OUTPUT: 3,\n BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_NIBBLE: -1,\n BROTLI_DECODER_ERROR_FORMAT_RESERVED: -2,\n BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_META_NIBBLE: -3,\n BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_ALPHABET: -4,\n BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_SAME: -5,\n BROTLI_DECODER_ERROR_FORMAT_CL_SPACE: -6,\n BROTLI_DECODER_ERROR_FORMAT_HUFFMAN_SPACE: -7,\n BROTLI_DECODER_ERROR_FORMAT_CONTEXT_MAP_REPEAT: -8,\n BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_1: -9,\n BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_2: -10,\n BROTLI_DECODER_ERROR_FORMAT_TRANSFORM: -11,\n BROTLI_DECODER_ERROR_FORMAT_DICTIONARY: -12,\n BROTLI_DECODER_ERROR_FORMAT_WINDOW_BITS: -13,\n BROTLI_DECODER_ERROR_FORMAT_PADDING_1: -14,\n BROTLI_DECODER_ERROR_FORMAT_PADDING_2: -15,\n BROTLI_DECODER_ERROR_FORMAT_DISTANCE: -16,\n BROTLI_DECODER_ERROR_DICTIONARY_NOT_SET: -19,\n BROTLI_DECODER_ERROR_INVALID_ARGUMENTS: -20,\n BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MODES: -21,\n BROTLI_DECODER_ERROR_ALLOC_TREE_GROUPS: -22,\n BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MAP: -25,\n BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_1: -26,\n BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_2: -27,\n BROTLI_DECODER_ERROR_ALLOC_BLOCK_TYPE_TREES: -30,\n BROTLI_DECODER_ERROR_UNREACHABLE: -31,\n}, realZlibConstants))\n", "'use strict'\n\nconst assert = require('assert')\nconst Buffer = require('buffer').Buffer\nconst realZlib = require('zlib')\n\nconst constants = exports.constants = require('./constants.js')\nconst Minipass = require('minipass')\n\nconst OriginalBufferConcat = Buffer.concat\n\nconst _superWrite = Symbol('_superWrite')\nclass ZlibError extends Error {\n constructor (err) {\n super('zlib: ' + err.message)\n this.code = err.code\n this.errno = err.errno\n /* istanbul ignore if */\n if (!this.code)\n this.code = 'ZLIB_ERROR'\n\n this.message = 'zlib: ' + err.message\n Error.captureStackTrace(this, this.constructor)\n }\n\n get name () {\n return 'ZlibError'\n }\n}\n\n// the Zlib class they all inherit from\n// This thing manages the queue of requests, and returns\n// true or false if there is anything in the queue when\n// you call the .write() method.\nconst _opts = Symbol('opts')\nconst _flushFlag = Symbol('flushFlag')\nconst _finishFlushFlag = Symbol('finishFlushFlag')\nconst _fullFlushFlag = Symbol('fullFlushFlag')\nconst _handle = Symbol('handle')\nconst _onError = Symbol('onError')\nconst _sawError = Symbol('sawError')\nconst _level = Symbol('level')\nconst _strategy = Symbol('strategy')\nconst _ended = Symbol('ended')\nconst _defaultFullFlush = Symbol('_defaultFullFlush')\n\nclass ZlibBase extends Minipass {\n constructor (opts, mode) {\n if (!opts || typeof opts !== 'object')\n throw new TypeError('invalid options for ZlibBase constructor')\n\n super(opts)\n this[_sawError] = false\n this[_ended] = false\n this[_opts] = opts\n\n this[_flushFlag] = opts.flush\n this[_finishFlushFlag] = opts.finishFlush\n // this will throw if any options are invalid for the class selected\n try {\n this[_handle] = new realZlib[mode](opts)\n } catch (er) {\n // make sure that all errors get decorated properly\n throw new ZlibError(er)\n }\n\n this[_onError] = (err) => {\n // no sense raising multiple errors, since we abort on the first one.\n if (this[_sawError])\n return\n\n this[_sawError] = true\n\n // there is no way to cleanly recover.\n // continuing only obscures problems.\n this.close()\n this.emit('error', err)\n }\n\n this[_handle].on('error', er => this[_onError](new ZlibError(er)))\n this.once('end', () => this.close)\n }\n\n close () {\n if (this[_handle]) {\n this[_handle].close()\n this[_handle] = null\n this.emit('close')\n }\n }\n\n reset () {\n if (!this[_sawError]) {\n assert(this[_handle], 'zlib binding closed')\n return this[_handle].reset()\n }\n }\n\n flush (flushFlag) {\n if (this.ended)\n return\n\n if (typeof flushFlag !== 'number')\n flushFlag = this[_fullFlushFlag]\n this.write(Object.assign(Buffer.alloc(0), { [_flushFlag]: flushFlag }))\n }\n\n end (chunk, encoding, cb) {\n if (chunk)\n this.write(chunk, encoding)\n this.flush(this[_finishFlushFlag])\n this[_ended] = true\n return super.end(null, null, cb)\n }\n\n get ended () {\n return this[_ended]\n }\n\n write (chunk, encoding, cb) {\n // process the chunk using the sync process\n // then super.write() all the outputted chunks\n if (typeof encoding === 'function')\n cb = encoding, encoding = 'utf8'\n\n if (typeof chunk === 'string')\n chunk = Buffer.from(chunk, encoding)\n\n if (this[_sawError])\n return\n assert(this[_handle], 'zlib binding closed')\n\n // _processChunk tries to .close() the native handle after it's done, so we\n // intercept that by temporarily making it a no-op.\n const nativeHandle = this[_handle]._handle\n const originalNativeClose = nativeHandle.close\n nativeHandle.close = () => {}\n const originalClose = this[_handle].close\n this[_handle].close = () => {}\n // It also calls `Buffer.concat()` at the end, which may be convenient\n // for some, but which we are not interested in as it slows us down.\n Buffer.concat = (args) => args\n let result\n try {\n const flushFlag = typeof chunk[_flushFlag] === 'number'\n ? chunk[_flushFlag] : this[_flushFlag]\n result = this[_handle]._processChunk(chunk, flushFlag)\n // if we don't throw, reset it back how it was\n Buffer.concat = OriginalBufferConcat\n } catch (err) {\n // or if we do, put Buffer.concat() back before we emit error\n // Error events call into user code, which may call Buffer.concat()\n Buffer.concat = OriginalBufferConcat\n this[_onError](new ZlibError(err))\n } finally {\n if (this[_handle]) {\n // Core zlib resets `_handle` to null after attempting to close the\n // native handle. Our no-op handler prevented actual closure, but we\n // need to restore the `._handle` property.\n this[_handle]._handle = nativeHandle\n nativeHandle.close = originalNativeClose\n this[_handle].close = originalClose\n // `_processChunk()` adds an 'error' listener. If we don't remove it\n // after each call, these handlers start piling up.\n this[_handle].removeAllListeners('error')\n // make sure OUR error listener is still attached tho\n }\n }\n\n if (this[_handle])\n this[_handle].on('error', er => this[_onError](new ZlibError(er)))\n\n let writeReturn\n if (result) {\n if (Array.isArray(result) && result.length > 0) {\n // The first buffer is always `handle._outBuffer`, which would be\n // re-used for later invocations; so, we always have to copy that one.\n writeReturn = this[_superWrite](Buffer.from(result[0]))\n for (let i = 1; i < result.length; i++) {\n writeReturn = this[_superWrite](result[i])\n }\n } else {\n writeReturn = this[_superWrite](Buffer.from(result))\n }\n }\n\n if (cb)\n cb()\n return writeReturn\n }\n\n [_superWrite] (data) {\n return super.write(data)\n }\n}\n\nclass Zlib extends ZlibBase {\n constructor (opts, mode) {\n opts = opts || {}\n\n opts.flush = opts.flush || constants.Z_NO_FLUSH\n opts.finishFlush = opts.finishFlush || constants.Z_FINISH\n super(opts, mode)\n\n this[_fullFlushFlag] = constants.Z_FULL_FLUSH\n this[_level] = opts.level\n this[_strategy] = opts.strategy\n }\n\n params (level, strategy) {\n if (this[_sawError])\n return\n\n if (!this[_handle])\n throw new Error('cannot switch params when binding is closed')\n\n // no way to test this without also not supporting params at all\n /* istanbul ignore if */\n if (!this[_handle].params)\n throw new Error('not supported in this implementation')\n\n if (this[_level] !== level || this[_strategy] !== strategy) {\n this.flush(constants.Z_SYNC_FLUSH)\n assert(this[_handle], 'zlib binding closed')\n // .params() calls .flush(), but the latter is always async in the\n // core zlib. We override .flush() temporarily to intercept that and\n // flush synchronously.\n const origFlush = this[_handle].flush\n this[_handle].flush = (flushFlag, cb) => {\n this.flush(flushFlag)\n cb()\n }\n try {\n this[_handle].params(level, strategy)\n } finally {\n this[_handle].flush = origFlush\n }\n /* istanbul ignore else */\n if (this[_handle]) {\n this[_level] = level\n this[_strategy] = strategy\n }\n }\n }\n}\n\n// minimal 2-byte header\nclass Deflate extends Zlib {\n constructor (opts) {\n super(opts, 'Deflate')\n }\n}\n\nclass Inflate extends Zlib {\n constructor (opts) {\n super(opts, 'Inflate')\n }\n}\n\n// gzip - bigger header, same deflate compression\nconst _portable = Symbol('_portable')\nclass Gzip extends Zlib {\n constructor (opts) {\n super(opts, 'Gzip')\n this[_portable] = opts && !!opts.portable\n }\n\n [_superWrite] (data) {\n if (!this[_portable])\n return super[_superWrite](data)\n\n // we'll always get the header emitted in one first chunk\n // overwrite the OS indicator byte with 0xFF\n this[_portable] = false\n data[9] = 255\n return super[_superWrite](data)\n }\n}\n\nclass Gunzip extends Zlib {\n constructor (opts) {\n super(opts, 'Gunzip')\n }\n}\n\n// raw - no header\nclass DeflateRaw extends Zlib {\n constructor (opts) {\n super(opts, 'DeflateRaw')\n }\n}\n\nclass InflateRaw extends Zlib {\n constructor (opts) {\n super(opts, 'InflateRaw')\n }\n}\n\n// auto-detect header.\nclass Unzip extends Zlib {\n constructor (opts) {\n super(opts, 'Unzip')\n }\n}\n\nclass Brotli extends ZlibBase {\n constructor (opts, mode) {\n opts = opts || {}\n\n opts.flush = opts.flush || constants.BROTLI_OPERATION_PROCESS\n opts.finishFlush = opts.finishFlush || constants.BROTLI_OPERATION_FINISH\n\n super(opts, mode)\n\n this[_fullFlushFlag] = constants.BROTLI_OPERATION_FLUSH\n }\n}\n\nclass BrotliCompress extends Brotli {\n constructor (opts) {\n super(opts, 'BrotliCompress')\n }\n}\n\nclass BrotliDecompress extends Brotli {\n constructor (opts) {\n super(opts, 'BrotliDecompress')\n }\n}\n\nexports.Deflate = Deflate\nexports.Inflate = Inflate\nexports.Gzip = Gzip\nexports.Gunzip = Gunzip\nexports.DeflateRaw = DeflateRaw\nexports.InflateRaw = InflateRaw\nexports.Unzip = Unzip\n/* istanbul ignore else */\nif (typeof realZlib.BrotliCompress === 'function') {\n exports.BrotliCompress = BrotliCompress\n exports.BrotliDecompress = BrotliDecompress\n} else {\n exports.BrotliCompress = exports.BrotliDecompress = class {\n constructor () {\n throw new Error('Brotli is not supported in this version of Node.js')\n }\n }\n}\n", "'use strict'\nconst MiniPass = require('minipass')\n\nconst SLURP = Symbol('slurp')\nmodule.exports = class ReadEntry extends MiniPass {\n constructor (header, ex, gex) {\n super()\n // read entries always start life paused. this is to avoid the\n // situation where Minipass's auto-ending empty streams results\n // in an entry ending before we're ready for it.\n this.pause()\n this.extended = ex\n this.globalExtended = gex\n this.header = header\n this.startBlockSize = 512 * Math.ceil(header.size / 512)\n this.blockRemain = this.startBlockSize\n this.remain = header.size\n this.type = header.type\n this.meta = false\n this.ignore = false\n switch (this.type) {\n case 'File':\n case 'OldFile':\n case 'Link':\n case 'SymbolicLink':\n case 'CharacterDevice':\n case 'BlockDevice':\n case 'Directory':\n case 'FIFO':\n case 'ContiguousFile':\n case 'GNUDumpDir':\n break\n\n case 'NextFileHasLongLinkpath':\n case 'NextFileHasLongPath':\n case 'OldGnuLongPath':\n case 'GlobalExtendedHeader':\n case 'ExtendedHeader':\n case 'OldExtendedHeader':\n this.meta = true\n break\n\n // NOTE: gnutar and bsdtar treat unrecognized types as 'File'\n // it may be worth doing the same, but with a warning.\n default:\n this.ignore = true\n }\n\n this.path = header.path\n this.mode = header.mode\n if (this.mode)\n this.mode = this.mode & 0o7777\n this.uid = header.uid\n this.gid = header.gid\n this.uname = header.uname\n this.gname = header.gname\n this.size = header.size\n this.mtime = header.mtime\n this.atime = header.atime\n this.ctime = header.ctime\n this.linkpath = header.linkpath\n this.uname = header.uname\n this.gname = header.gname\n\n if (ex)\n this[SLURP](ex)\n if (gex)\n this[SLURP](gex, true)\n }\n\n write (data) {\n const writeLen = data.length\n if (writeLen > this.blockRemain)\n throw new Error('writing more to entry than is appropriate')\n\n const r = this.remain\n const br = this.blockRemain\n this.remain = Math.max(0, r - writeLen)\n this.blockRemain = Math.max(0, br - writeLen)\n if (this.ignore)\n return true\n\n if (r >= writeLen)\n return super.write(data)\n\n // r < writeLen\n return super.write(data.slice(0, r))\n }\n\n [SLURP] (ex, global) {\n for (const k in ex) {\n // we slurp in everything except for the path attribute in\n // a global extended header, because that's weird.\n if (ex[k] !== null && ex[k] !== undefined &&\n !(global && k === 'path'))\n this[k] = ex[k]\n }\n }\n}\n", "'use strict'\n// map types from key to human-friendly name\nexports.name = new Map([\n ['0', 'File'],\n // same as File\n ['', 'OldFile'],\n ['1', 'Link'],\n ['2', 'SymbolicLink'],\n // Devices and FIFOs aren't fully supported\n // they are parsed, but skipped when unpacking\n ['3', 'CharacterDevice'],\n ['4', 'BlockDevice'],\n ['5', 'Directory'],\n ['6', 'FIFO'],\n // same as File\n ['7', 'ContiguousFile'],\n // pax headers\n ['g', 'GlobalExtendedHeader'],\n ['x', 'ExtendedHeader'],\n // vendor-specific stuff\n // skip\n ['A', 'SolarisACL'],\n // like 5, but with data, which should be skipped\n ['D', 'GNUDumpDir'],\n // metadata only, skip\n ['I', 'Inode'],\n // data = link path of next file\n ['K', 'NextFileHasLongLinkpath'],\n // data = path of next file\n ['L', 'NextFileHasLongPath'],\n // skip\n ['M', 'ContinuationFile'],\n // like L\n ['N', 'OldGnuLongPath'],\n // skip\n ['S', 'SparseFile'],\n // skip\n ['V', 'TapeVolumeHeader'],\n // like x\n ['X', 'OldExtendedHeader'],\n])\n\n// map the other direction\nexports.code = new Map(Array.from(exports.name).map(kv => [kv[1], kv[0]]))\n", "'use strict'\n// Tar can encode large and negative numbers using a leading byte of\n// 0xff for negative, and 0x80 for positive.\n\nconst encode = (num, buf) => {\n if (!Number.isSafeInteger(num))\n // The number is so large that javascript cannot represent it with integer\n // precision.\n throw Error('cannot encode number outside of javascript safe integer range')\n else if (num < 0)\n encodeNegative(num, buf)\n else\n encodePositive(num, buf)\n return buf\n}\n\nconst encodePositive = (num, buf) => {\n buf[0] = 0x80\n\n for (var i = buf.length; i > 1; i--) {\n buf[i - 1] = num & 0xff\n num = Math.floor(num / 0x100)\n }\n}\n\nconst encodeNegative = (num, buf) => {\n buf[0] = 0xff\n var flipped = false\n num = num * -1\n for (var i = buf.length; i > 1; i--) {\n var byte = num & 0xff\n num = Math.floor(num / 0x100)\n if (flipped)\n buf[i - 1] = onesComp(byte)\n else if (byte === 0)\n buf[i - 1] = 0\n else {\n flipped = true\n buf[i - 1] = twosComp(byte)\n }\n }\n}\n\nconst parse = (buf) => {\n const pre = buf[0]\n const value = pre === 0x80 ? pos(buf.slice(1, buf.length))\n : pre === 0xff ? twos(buf)\n : null\n if (value === null)\n throw Error('invalid base256 encoding')\n\n if (!Number.isSafeInteger(value))\n // The number is so large that javascript cannot represent it with integer\n // precision.\n throw Error('parsed number outside of javascript safe integer range')\n\n return value\n}\n\nconst twos = (buf) => {\n var len = buf.length\n var sum = 0\n var flipped = false\n for (var i = len - 1; i > -1; i--) {\n var byte = buf[i]\n var f\n if (flipped)\n f = onesComp(byte)\n else if (byte === 0)\n f = byte\n else {\n flipped = true\n f = twosComp(byte)\n }\n if (f !== 0)\n sum -= f * Math.pow(256, len - i - 1)\n }\n return sum\n}\n\nconst pos = (buf) => {\n var len = buf.length\n var sum = 0\n for (var i = len - 1; i > -1; i--) {\n var byte = buf[i]\n if (byte !== 0)\n sum += byte * Math.pow(256, len - i - 1)\n }\n return sum\n}\n\nconst onesComp = byte => (0xff ^ byte) & 0xff\n\nconst twosComp = byte => ((0xff ^ byte) + 1) & 0xff\n\nmodule.exports = {\n encode,\n parse,\n}\n", "'use strict'\n// parse a 512-byte header block to a data object, or vice-versa\n// encode returns `true` if a pax extended header is needed, because\n// the data could not be faithfully encoded in a simple header.\n// (Also, check header.needPax to see if it needs a pax header.)\n\nconst types = require('./types.js')\nconst pathModule = require('path').posix\nconst large = require('./large-numbers.js')\n\nconst SLURP = Symbol('slurp')\nconst TYPE = Symbol('type')\n\nclass Header {\n constructor (data, off, ex, gex) {\n this.cksumValid = false\n this.needPax = false\n this.nullBlock = false\n\n this.block = null\n this.path = null\n this.mode = null\n this.uid = null\n this.gid = null\n this.size = null\n this.mtime = null\n this.cksum = null\n this[TYPE] = '0'\n this.linkpath = null\n this.uname = null\n this.gname = null\n this.devmaj = 0\n this.devmin = 0\n this.atime = null\n this.ctime = null\n\n if (Buffer.isBuffer(data))\n this.decode(data, off || 0, ex, gex)\n else if (data)\n this.set(data)\n }\n\n decode (buf, off, ex, gex) {\n if (!off)\n off = 0\n\n if (!buf || !(buf.length >= off + 512))\n throw new Error('need 512 bytes for header')\n\n this.path = decString(buf, off, 100)\n this.mode = decNumber(buf, off + 100, 8)\n this.uid = decNumber(buf, off + 108, 8)\n this.gid = decNumber(buf, off + 116, 8)\n this.size = decNumber(buf, off + 124, 12)\n this.mtime = decDate(buf, off + 136, 12)\n this.cksum = decNumber(buf, off + 148, 12)\n\n // if we have extended or global extended headers, apply them now\n // See https://github.com/npm/node-tar/pull/187\n this[SLURP](ex)\n this[SLURP](gex, true)\n\n // old tar versions marked dirs as a file with a trailing /\n this[TYPE] = decString(buf, off + 156, 1)\n if (this[TYPE] === '')\n this[TYPE] = '0'\n if (this[TYPE] === '0' && this.path.substr(-1) === '/')\n this[TYPE] = '5'\n\n // tar implementations sometimes incorrectly put the stat(dir).size\n // as the size in the tarball, even though Directory entries are\n // not able to have any body at all. In the very rare chance that\n // it actually DOES have a body, we weren't going to do anything with\n // it anyway, and it'll just be a warning about an invalid header.\n if (this[TYPE] === '5')\n this.size = 0\n\n this.linkpath = decString(buf, off + 157, 100)\n if (buf.slice(off + 257, off + 265).toString() === 'ustar\\u000000') {\n this.uname = decString(buf, off + 265, 32)\n this.gname = decString(buf, off + 297, 32)\n this.devmaj = decNumber(buf, off + 329, 8)\n this.devmin = decNumber(buf, off + 337, 8)\n if (buf[off + 475] !== 0) {\n // definitely a prefix, definitely >130 chars.\n const prefix = decString(buf, off + 345, 155)\n this.path = prefix + '/' + this.path\n } else {\n const prefix = decString(buf, off + 345, 130)\n if (prefix)\n this.path = prefix + '/' + this.path\n this.atime = decDate(buf, off + 476, 12)\n this.ctime = decDate(buf, off + 488, 12)\n }\n }\n\n let sum = 8 * 0x20\n for (let i = off; i < off + 148; i++)\n sum += buf[i]\n\n for (let i = off + 156; i < off + 512; i++)\n sum += buf[i]\n\n this.cksumValid = sum === this.cksum\n if (this.cksum === null && sum === 8 * 0x20)\n this.nullBlock = true\n }\n\n [SLURP] (ex, global) {\n for (const k in ex) {\n // we slurp in everything except for the path attribute in\n // a global extended header, because that's weird.\n if (ex[k] !== null && ex[k] !== undefined &&\n !(global && k === 'path'))\n this[k] = ex[k]\n }\n }\n\n encode (buf, off) {\n if (!buf) {\n buf = this.block = Buffer.alloc(512)\n off = 0\n }\n\n if (!off)\n off = 0\n\n if (!(buf.length >= off + 512))\n throw new Error('need 512 bytes for header')\n\n const prefixSize = this.ctime || this.atime ? 130 : 155\n const split = splitPrefix(this.path || '', prefixSize)\n const path = split[0]\n const prefix = split[1]\n this.needPax = split[2]\n\n this.needPax = encString(buf, off, 100, path) || this.needPax\n this.needPax = encNumber(buf, off + 100, 8, this.mode) || this.needPax\n this.needPax = encNumber(buf, off + 108, 8, this.uid) || this.needPax\n this.needPax = encNumber(buf, off + 116, 8, this.gid) || this.needPax\n this.needPax = encNumber(buf, off + 124, 12, this.size) || this.needPax\n this.needPax = encDate(buf, off + 136, 12, this.mtime) || this.needPax\n buf[off + 156] = this[TYPE].charCodeAt(0)\n this.needPax = encString(buf, off + 157, 100, this.linkpath) || this.needPax\n buf.write('ustar\\u000000', off + 257, 8)\n this.needPax = encString(buf, off + 265, 32, this.uname) || this.needPax\n this.needPax = encString(buf, off + 297, 32, this.gname) || this.needPax\n this.needPax = encNumber(buf, off + 329, 8, this.devmaj) || this.needPax\n this.needPax = encNumber(buf, off + 337, 8, this.devmin) || this.needPax\n this.needPax = encString(buf, off + 345, prefixSize, prefix) || this.needPax\n if (buf[off + 475] !== 0)\n this.needPax = encString(buf, off + 345, 155, prefix) || this.needPax\n else {\n this.needPax = encString(buf, off + 345, 130, prefix) || this.needPax\n this.needPax = encDate(buf, off + 476, 12, this.atime) || this.needPax\n this.needPax = encDate(buf, off + 488, 12, this.ctime) || this.needPax\n }\n\n let sum = 8 * 0x20\n for (let i = off; i < off + 148; i++)\n sum += buf[i]\n\n for (let i = off + 156; i < off + 512; i++)\n sum += buf[i]\n\n this.cksum = sum\n encNumber(buf, off + 148, 8, this.cksum)\n this.cksumValid = true\n\n return this.needPax\n }\n\n set (data) {\n for (const i in data) {\n if (data[i] !== null && data[i] !== undefined)\n this[i] = data[i]\n }\n }\n\n get type () {\n return types.name.get(this[TYPE]) || this[TYPE]\n }\n\n get typeKey () {\n return this[TYPE]\n }\n\n set type (type) {\n if (types.code.has(type))\n this[TYPE] = types.code.get(type)\n else\n this[TYPE] = type\n }\n}\n\nconst splitPrefix = (p, prefixSize) => {\n const pathSize = 100\n let pp = p\n let prefix = ''\n let ret\n const root = pathModule.parse(p).root || '.'\n\n if (Buffer.byteLength(pp) < pathSize)\n ret = [pp, prefix, false]\n else {\n // first set prefix to the dir, and path to the base\n prefix = pathModule.dirname(pp)\n pp = pathModule.basename(pp)\n\n do {\n // both fit!\n if (Buffer.byteLength(pp) <= pathSize &&\n Buffer.byteLength(prefix) <= prefixSize)\n ret = [pp, prefix, false]\n\n // prefix fits in prefix, but path doesn't fit in path\n else if (Buffer.byteLength(pp) > pathSize &&\n Buffer.byteLength(prefix) <= prefixSize)\n ret = [pp.substr(0, pathSize - 1), prefix, true]\n\n else {\n // make path take a bit from prefix\n pp = pathModule.join(pathModule.basename(prefix), pp)\n prefix = pathModule.dirname(prefix)\n }\n } while (prefix !== root && !ret)\n\n // at this point, found no resolution, just truncate\n if (!ret)\n ret = [p.substr(0, pathSize - 1), '', true]\n }\n return ret\n}\n\nconst decString = (buf, off, size) =>\n buf.slice(off, off + size).toString('utf8').replace(/\\0.*/, '')\n\nconst decDate = (buf, off, size) =>\n numToDate(decNumber(buf, off, size))\n\nconst numToDate = num => num === null ? null : new Date(num * 1000)\n\nconst decNumber = (buf, off, size) =>\n buf[off] & 0x80 ? large.parse(buf.slice(off, off + size))\n : decSmallNumber(buf, off, size)\n\nconst nanNull = value => isNaN(value) ? null : value\n\nconst decSmallNumber = (buf, off, size) =>\n nanNull(parseInt(\n buf.slice(off, off + size)\n .toString('utf8').replace(/\\0.*$/, '').trim(), 8))\n\n// the maximum encodable as a null-terminated octal, by field size\nconst MAXNUM = {\n 12: 0o77777777777,\n 8: 0o7777777,\n}\n\nconst encNumber = (buf, off, size, number) =>\n number === null ? false :\n number > MAXNUM[size] || number < 0\n ? (large.encode(number, buf.slice(off, off + size)), true)\n : (encSmallNumber(buf, off, size, number), false)\n\nconst encSmallNumber = (buf, off, size, number) =>\n buf.write(octalString(number, size), off, size, 'ascii')\n\nconst octalString = (number, size) =>\n padOctal(Math.floor(number).toString(8), size)\n\nconst padOctal = (string, size) =>\n (string.length === size - 1 ? string\n : new Array(size - string.length - 1).join('0') + string + ' ') + '\\0'\n\nconst encDate = (buf, off, size, date) =>\n date === null ? false :\n encNumber(buf, off, size, date.getTime() / 1000)\n\n// enough to fill the longest string we've got\nconst NULLS = new Array(156).join('\\0')\n// pad with nulls, return true if it's longer or non-ascii\nconst encString = (buf, off, size, string) =>\n string === null ? false :\n (buf.write(string + NULLS, off, size, 'utf8'),\n string.length !== Buffer.byteLength(string) || string.length > size)\n\nmodule.exports = Header\n", "'use strict'\nconst Header = require('./header.js')\nconst path = require('path')\n\nclass Pax {\n constructor (obj, global) {\n this.atime = obj.atime || null\n this.charset = obj.charset || null\n this.comment = obj.comment || null\n this.ctime = obj.ctime || null\n this.gid = obj.gid || null\n this.gname = obj.gname || null\n this.linkpath = obj.linkpath || null\n this.mtime = obj.mtime || null\n this.path = obj.path || null\n this.size = obj.size || null\n this.uid = obj.uid || null\n this.uname = obj.uname || null\n this.dev = obj.dev || null\n this.ino = obj.ino || null\n this.nlink = obj.nlink || null\n this.global = global || false\n }\n\n encode () {\n const body = this.encodeBody()\n if (body === '')\n return null\n\n const bodyLen = Buffer.byteLength(body)\n // round up to 512 bytes\n // add 512 for header\n const bufLen = 512 * Math.ceil(1 + bodyLen / 512)\n const buf = Buffer.allocUnsafe(bufLen)\n\n // 0-fill the header section, it might not hit every field\n for (let i = 0; i < 512; i++)\n buf[i] = 0\n\n new Header({\n // XXX split the path\n // then the path should be PaxHeader + basename, but less than 99,\n // prepend with the dirname\n path: ('PaxHeader/' + path.basename(this.path)).slice(0, 99),\n mode: this.mode || 0o644,\n uid: this.uid || null,\n gid: this.gid || null,\n size: bodyLen,\n mtime: this.mtime || null,\n type: this.global ? 'GlobalExtendedHeader' : 'ExtendedHeader',\n linkpath: '',\n uname: this.uname || '',\n gname: this.gname || '',\n devmaj: 0,\n devmin: 0,\n atime: this.atime || null,\n ctime: this.ctime || null,\n }).encode(buf)\n\n buf.write(body, 512, bodyLen, 'utf8')\n\n // null pad after the body\n for (let i = bodyLen + 512; i < buf.length; i++)\n buf[i] = 0\n\n return buf\n }\n\n encodeBody () {\n return (\n this.encodeField('path') +\n this.encodeField('ctime') +\n this.encodeField('atime') +\n this.encodeField('dev') +\n this.encodeField('ino') +\n this.encodeField('nlink') +\n this.encodeField('charset') +\n this.encodeField('comment') +\n this.encodeField('gid') +\n this.encodeField('gname') +\n this.encodeField('linkpath') +\n this.encodeField('mtime') +\n this.encodeField('size') +\n this.encodeField('uid') +\n this.encodeField('uname')\n )\n }\n\n encodeField (field) {\n if (this[field] === null || this[field] === undefined)\n return ''\n const v = this[field] instanceof Date ? this[field].getTime() / 1000\n : this[field]\n const s = ' ' +\n (field === 'dev' || field === 'ino' || field === 'nlink'\n ? 'SCHILY.' : '') +\n field + '=' + v + '\\n'\n const byteLen = Buffer.byteLength(s)\n // the digits includes the length of the digits in ascii base-10\n // so if it's 9 characters, then adding 1 for the 9 makes it 10\n // which makes it 11 chars.\n let digits = Math.floor(Math.log(byteLen) / Math.log(10)) + 1\n if (byteLen + digits >= Math.pow(10, digits))\n digits += 1\n const len = digits + byteLen\n return len + s\n }\n}\n\nPax.parse = (string, ex, g) => new Pax(merge(parseKV(string), ex), g)\n\nconst merge = (a, b) =>\n b ? Object.keys(a).reduce((s, k) => (s[k] = a[k], s), b) : a\n\nconst parseKV = string =>\n string\n .replace(/\\n$/, '')\n .split('\\n')\n .reduce(parseKVLine, Object.create(null))\n\nconst parseKVLine = (set, line) => {\n const n = parseInt(line, 10)\n\n // XXX Values with \\n in them will fail this.\n // Refactor to not be a naive line-by-line parse.\n if (n !== Buffer.byteLength(line) + 1)\n return set\n\n line = line.substr((n + ' ').length)\n const kv = line.split('=')\n const k = kv.shift().replace(/^SCHILY\\.(dev|ino|nlink)/, '$1')\n if (!k)\n return set\n\n const v = kv.join('=')\n set[k] = /^([A-Z]+\\.)?([mac]|birth|creation)time$/.test(k)\n ? new Date(v * 1000)\n : /^[0-9]+$/.test(v) ? +v\n : v\n return set\n}\n\nmodule.exports = Pax\n", "'use strict'\nmodule.exports = Base => class extends Base {\n warn (code, message, data = {}) {\n if (this.file)\n data.file = this.file\n if (this.cwd)\n data.cwd = this.cwd\n data.code = message instanceof Error && message.code || code\n data.tarCode = code\n if (!this.strict && data.recoverable !== false) {\n if (message instanceof Error) {\n data = Object.assign(message, data)\n message = message.message\n }\n this.emit('warn', data.tarCode, message, data)\n } else if (message instanceof Error)\n this.emit('error', Object.assign(message, data))\n else\n this.emit('error', Object.assign(new Error(`${code}: ${message}`), data))\n }\n}\n", "'use strict'\n\n// When writing files on Windows, translate the characters to their\n// 0xf000 higher-encoded versions.\n\nconst raw = [\n '|',\n '<',\n '>',\n '?',\n ':',\n]\n\nconst win = raw.map(char =>\n String.fromCharCode(0xf000 + char.charCodeAt(0)))\n\nconst toWin = new Map(raw.map((char, i) => [char, win[i]]))\nconst toRaw = new Map(win.map((char, i) => [char, raw[i]]))\n\nmodule.exports = {\n encode: s => raw.reduce((s, c) => s.split(c).join(toWin.get(c)), s),\n decode: s => win.reduce((s, c) => s.split(c).join(toRaw.get(c)), s),\n}\n", "'use strict'\nmodule.exports = (mode, isDir, portable) => {\n mode &= 0o7777\n\n // in portable mode, use the minimum reasonable umask\n // if this system creates files with 0o664 by default\n // (as some linux distros do), then we'll write the\n // archive with 0o644 instead. Also, don't ever create\n // a file that is not readable/writable by the owner.\n if (portable)\n mode = (mode | 0o600) & ~0o22\n\n // if dirs are readable, then they should be listable\n if (isDir) {\n if (mode & 0o400)\n mode |= 0o100\n if (mode & 0o40)\n mode |= 0o10\n if (mode & 0o4)\n mode |= 0o1\n }\n return mode\n}\n", "'use strict'\nconst MiniPass = require('minipass')\nconst Pax = require('./pax.js')\nconst Header = require('./header.js')\nconst fs = require('fs')\nconst path = require('path')\n\nconst maxReadSize = 16 * 1024 * 1024\nconst PROCESS = Symbol('process')\nconst FILE = Symbol('file')\nconst DIRECTORY = Symbol('directory')\nconst SYMLINK = Symbol('symlink')\nconst HARDLINK = Symbol('hardlink')\nconst HEADER = Symbol('header')\nconst READ = Symbol('read')\nconst LSTAT = Symbol('lstat')\nconst ONLSTAT = Symbol('onlstat')\nconst ONREAD = Symbol('onread')\nconst ONREADLINK = Symbol('onreadlink')\nconst OPENFILE = Symbol('openfile')\nconst ONOPENFILE = Symbol('onopenfile')\nconst CLOSE = Symbol('close')\nconst MODE = Symbol('mode')\nconst warner = require('./warn-mixin.js')\nconst winchars = require('./winchars.js')\n\nconst modeFix = require('./mode-fix.js')\n\nconst WriteEntry = warner(class WriteEntry extends MiniPass {\n constructor (p, opt) {\n opt = opt || {}\n super(opt)\n if (typeof p !== 'string')\n throw new TypeError('path is required')\n this.path = p\n // suppress atime, ctime, uid, gid, uname, gname\n this.portable = !!opt.portable\n // until node has builtin pwnam functions, this'll have to do\n this.myuid = process.getuid && process.getuid()\n this.myuser = process.env.USER || ''\n this.maxReadSize = opt.maxReadSize || maxReadSize\n this.linkCache = opt.linkCache || new Map()\n this.statCache = opt.statCache || new Map()\n this.preservePaths = !!opt.preservePaths\n this.cwd = opt.cwd || process.cwd()\n this.strict = !!opt.strict\n this.noPax = !!opt.noPax\n this.noMtime = !!opt.noMtime\n this.mtime = opt.mtime || null\n\n if (typeof opt.onwarn === 'function')\n this.on('warn', opt.onwarn)\n\n let pathWarn = false\n if (!this.preservePaths && path.win32.isAbsolute(p)) {\n // absolutes on posix are also absolutes on win32\n // so we only need to test this one to get both\n const parsed = path.win32.parse(p)\n this.path = p.substr(parsed.root.length)\n pathWarn = parsed.root\n }\n\n this.win32 = !!opt.win32 || process.platform === 'win32'\n if (this.win32) {\n this.path = winchars.decode(this.path.replace(/\\\\/g, '/'))\n p = p.replace(/\\\\/g, '/')\n }\n\n this.absolute = opt.absolute || path.resolve(this.cwd, p)\n\n if (this.path === '')\n this.path = './'\n\n if (pathWarn) {\n this.warn('TAR_ENTRY_INFO', `stripping ${pathWarn} from absolute path`, {\n entry: this,\n path: pathWarn + this.path,\n })\n }\n\n if (this.statCache.has(this.absolute))\n this[ONLSTAT](this.statCache.get(this.absolute))\n else\n this[LSTAT]()\n }\n\n [LSTAT] () {\n fs.lstat(this.absolute, (er, stat) => {\n if (er)\n return this.emit('error', er)\n this[ONLSTAT](stat)\n })\n }\n\n [ONLSTAT] (stat) {\n this.statCache.set(this.absolute, stat)\n this.stat = stat\n if (!stat.isFile())\n stat.size = 0\n this.type = getType(stat)\n this.emit('stat', stat)\n this[PROCESS]()\n }\n\n [PROCESS] () {\n switch (this.type) {\n case 'File': return this[FILE]()\n case 'Directory': return this[DIRECTORY]()\n case 'SymbolicLink': return this[SYMLINK]()\n // unsupported types are ignored.\n default: return this.end()\n }\n }\n\n [MODE] (mode) {\n return modeFix(mode, this.type === 'Directory', this.portable)\n }\n\n [HEADER] () {\n if (this.type === 'Directory' && this.portable)\n this.noMtime = true\n\n this.header = new Header({\n path: this.path,\n linkpath: this.linkpath,\n // only the permissions and setuid/setgid/sticky bitflags\n // not the higher-order bits that specify file type\n mode: this[MODE](this.stat.mode),\n uid: this.portable ? null : this.stat.uid,\n gid: this.portable ? null : this.stat.gid,\n size: this.stat.size,\n mtime: this.noMtime ? null : this.mtime || this.stat.mtime,\n type: this.type,\n uname: this.portable ? null :\n this.stat.uid === this.myuid ? this.myuser : '',\n atime: this.portable ? null : this.stat.atime,\n ctime: this.portable ? null : this.stat.ctime,\n })\n\n if (this.header.encode() && !this.noPax) {\n this.write(new Pax({\n atime: this.portable ? null : this.header.atime,\n ctime: this.portable ? null : this.header.ctime,\n gid: this.portable ? null : this.header.gid,\n mtime: this.noMtime ? null : this.mtime || this.header.mtime,\n path: this.path,\n linkpath: this.linkpath,\n size: this.header.size,\n uid: this.portable ? null : this.header.uid,\n uname: this.portable ? null : this.header.uname,\n dev: this.portable ? null : this.stat.dev,\n ino: this.portable ? null : this.stat.ino,\n nlink: this.portable ? null : this.stat.nlink,\n }).encode())\n }\n this.write(this.header.block)\n }\n\n [DIRECTORY] () {\n if (this.path.substr(-1) !== '/')\n this.path += '/'\n this.stat.size = 0\n this[HEADER]()\n this.end()\n }\n\n [SYMLINK] () {\n fs.readlink(this.absolute, (er, linkpath) => {\n if (er)\n return this.emit('error', er)\n this[ONREADLINK](linkpath)\n })\n }\n\n [ONREADLINK] (linkpath) {\n this.linkpath = linkpath.replace(/\\\\/g, '/')\n this[HEADER]()\n this.end()\n }\n\n [HARDLINK] (linkpath) {\n this.type = 'Link'\n this.linkpath = path.relative(this.cwd, linkpath).replace(/\\\\/g, '/')\n this.stat.size = 0\n this[HEADER]()\n this.end()\n }\n\n [FILE] () {\n if (this.stat.nlink > 1) {\n const linkKey = this.stat.dev + ':' + this.stat.ino\n if (this.linkCache.has(linkKey)) {\n const linkpath = this.linkCache.get(linkKey)\n if (linkpath.indexOf(this.cwd) === 0)\n return this[HARDLINK](linkpath)\n }\n this.linkCache.set(linkKey, this.absolute)\n }\n\n this[HEADER]()\n if (this.stat.size === 0)\n return this.end()\n\n this[OPENFILE]()\n }\n\n [OPENFILE] () {\n fs.open(this.absolute, 'r', (er, fd) => {\n if (er)\n return this.emit('error', er)\n this[ONOPENFILE](fd)\n })\n }\n\n [ONOPENFILE] (fd) {\n const blockLen = 512 * Math.ceil(this.stat.size / 512)\n const bufLen = Math.min(blockLen, this.maxReadSize)\n const buf = Buffer.allocUnsafe(bufLen)\n this[READ](fd, buf, 0, buf.length, 0, this.stat.size, blockLen)\n }\n\n [READ] (fd, buf, offset, length, pos, remain, blockRemain) {\n fs.read(fd, buf, offset, length, pos, (er, bytesRead) => {\n if (er) {\n // ignoring the error from close(2) is a bad practice, but at\n // this point we already have an error, don't need another one\n return this[CLOSE](fd, () => this.emit('error', er))\n }\n this[ONREAD](fd, buf, offset, length, pos, remain, blockRemain, bytesRead)\n })\n }\n\n [CLOSE] (fd, cb) {\n fs.close(fd, cb)\n }\n\n [ONREAD] (fd, buf, offset, length, pos, remain, blockRemain, bytesRead) {\n if (bytesRead <= 0 && remain > 0) {\n const er = new Error('encountered unexpected EOF')\n er.path = this.absolute\n er.syscall = 'read'\n er.code = 'EOF'\n return this[CLOSE](fd, () => this.emit('error', er))\n }\n\n if (bytesRead > remain) {\n const er = new Error('did not encounter expected EOF')\n er.path = this.absolute\n er.syscall = 'read'\n er.code = 'EOF'\n return this[CLOSE](fd, () => this.emit('error', er))\n }\n\n // null out the rest of the buffer, if we could fit the block padding\n if (bytesRead === remain) {\n for (let i = bytesRead; i < length && bytesRead < blockRemain; i++) {\n buf[i + offset] = 0\n bytesRead++\n remain++\n }\n }\n\n const writeBuf = offset === 0 && bytesRead === buf.length ?\n buf : buf.slice(offset, offset + bytesRead)\n remain -= bytesRead\n blockRemain -= bytesRead\n pos += bytesRead\n offset += bytesRead\n\n this.write(writeBuf)\n\n if (!remain) {\n if (blockRemain)\n this.write(Buffer.alloc(blockRemain))\n return this[CLOSE](fd, er => er ? this.emit('error', er) : this.end())\n }\n\n if (offset >= length) {\n buf = Buffer.allocUnsafe(length)\n offset = 0\n }\n length = buf.length - offset\n this[READ](fd, buf, offset, length, pos, remain, blockRemain)\n }\n})\n\nclass WriteEntrySync extends WriteEntry {\n [LSTAT] () {\n this[ONLSTAT](fs.lstatSync(this.absolute))\n }\n\n [SYMLINK] () {\n this[ONREADLINK](fs.readlinkSync(this.absolute))\n }\n\n [OPENFILE] () {\n this[ONOPENFILE](fs.openSync(this.absolute, 'r'))\n }\n\n [READ] (fd, buf, offset, length, pos, remain, blockRemain) {\n let threw = true\n try {\n const bytesRead = fs.readSync(fd, buf, offset, length, pos)\n this[ONREAD](fd, buf, offset, length, pos, remain, blockRemain, bytesRead)\n threw = false\n } finally {\n // ignoring the error from close(2) is a bad practice, but at\n // this point we already have an error, don't need another one\n if (threw) {\n try {\n this[CLOSE](fd, () => {})\n } catch (er) {}\n }\n }\n }\n\n [CLOSE] (fd, cb) {\n fs.closeSync(fd)\n cb()\n }\n}\n\nconst WriteEntryTar = warner(class WriteEntryTar extends MiniPass {\n constructor (readEntry, opt) {\n opt = opt || {}\n super(opt)\n this.preservePaths = !!opt.preservePaths\n this.portable = !!opt.portable\n this.strict = !!opt.strict\n this.noPax = !!opt.noPax\n this.noMtime = !!opt.noMtime\n\n this.readEntry = readEntry\n this.type = readEntry.type\n if (this.type === 'Directory' && this.portable)\n this.noMtime = true\n\n this.path = readEntry.path\n this.mode = this[MODE](readEntry.mode)\n this.uid = this.portable ? null : readEntry.uid\n this.gid = this.portable ? null : readEntry.gid\n this.uname = this.portable ? null : readEntry.uname\n this.gname = this.portable ? null : readEntry.gname\n this.size = readEntry.size\n this.mtime = this.noMtime ? null : opt.mtime || readEntry.mtime\n this.atime = this.portable ? null : readEntry.atime\n this.ctime = this.portable ? null : readEntry.ctime\n this.linkpath = readEntry.linkpath\n\n if (typeof opt.onwarn === 'function')\n this.on('warn', opt.onwarn)\n\n let pathWarn = false\n if (path.isAbsolute(this.path) && !this.preservePaths) {\n const parsed = path.parse(this.path)\n pathWarn = parsed.root\n this.path = this.path.substr(parsed.root.length)\n }\n\n this.remain = readEntry.size\n this.blockRemain = readEntry.startBlockSize\n\n this.header = new Header({\n path: this.path,\n linkpath: this.linkpath,\n // only the permissions and setuid/setgid/sticky bitflags\n // not the higher-order bits that specify file type\n mode: this.mode,\n uid: this.portable ? null : this.uid,\n gid: this.portable ? null : this.gid,\n size: this.size,\n mtime: this.noMtime ? null : this.mtime,\n type: this.type,\n uname: this.portable ? null : this.uname,\n atime: this.portable ? null : this.atime,\n ctime: this.portable ? null : this.ctime,\n })\n\n if (pathWarn) {\n this.warn('TAR_ENTRY_INFO', `stripping ${pathWarn} from absolute path`, {\n entry: this,\n path: pathWarn + this.path,\n })\n }\n\n if (this.header.encode() && !this.noPax) {\n super.write(new Pax({\n atime: this.portable ? null : this.atime,\n ctime: this.portable ? null : this.ctime,\n gid: this.portable ? null : this.gid,\n mtime: this.noMtime ? null : this.mtime,\n path: this.path,\n linkpath: this.linkpath,\n size: this.size,\n uid: this.portable ? null : this.uid,\n uname: this.portable ? null : this.uname,\n dev: this.portable ? null : this.readEntry.dev,\n ino: this.portable ? null : this.readEntry.ino,\n nlink: this.portable ? null : this.readEntry.nlink,\n }).encode())\n }\n\n super.write(this.header.block)\n readEntry.pipe(this)\n }\n\n [MODE] (mode) {\n return modeFix(mode, this.type === 'Directory', this.portable)\n }\n\n write (data) {\n const writeLen = data.length\n if (writeLen > this.blockRemain)\n throw new Error('writing more to entry than is appropriate')\n this.blockRemain -= writeLen\n return super.write(data)\n }\n\n end () {\n if (this.blockRemain)\n this.write(Buffer.alloc(this.blockRemain))\n return super.end()\n }\n})\n\nWriteEntry.Sync = WriteEntrySync\nWriteEntry.Tar = WriteEntryTar\n\nconst getType = stat =>\n stat.isFile() ? 'File'\n : stat.isDirectory() ? 'Directory'\n : stat.isSymbolicLink() ? 'SymbolicLink'\n : 'Unsupported'\n\nmodule.exports = WriteEntry\n", "'use strict'\nmodule.exports = function (Yallist) {\n Yallist.prototype[Symbol.iterator] = function* () {\n for (let walker = this.head; walker; walker = walker.next) {\n yield walker.value\n }\n }\n}\n", "'use strict'\nmodule.exports = Yallist\n\nYallist.Node = Node\nYallist.create = Yallist\n\nfunction Yallist (list) {\n var self = this\n if (!(self instanceof Yallist)) {\n self = new Yallist()\n }\n\n self.tail = null\n self.head = null\n self.length = 0\n\n if (list && typeof list.forEach === 'function') {\n list.forEach(function (item) {\n self.push(item)\n })\n } else if (arguments.length > 0) {\n for (var i = 0, l = arguments.length; i < l; i++) {\n self.push(arguments[i])\n }\n }\n\n return self\n}\n\nYallist.prototype.removeNode = function (node) {\n if (node.list !== this) {\n throw new Error('removing node which does not belong to this list')\n }\n\n var next = node.next\n var prev = node.prev\n\n if (next) {\n next.prev = prev\n }\n\n if (prev) {\n prev.next = next\n }\n\n if (node === this.head) {\n this.head = next\n }\n if (node === this.tail) {\n this.tail = prev\n }\n\n node.list.length--\n node.next = null\n node.prev = null\n node.list = null\n\n return next\n}\n\nYallist.prototype.unshiftNode = function (node) {\n if (node === this.head) {\n return\n }\n\n if (node.list) {\n node.list.removeNode(node)\n }\n\n var head = this.head\n node.list = this\n node.next = head\n if (head) {\n head.prev = node\n }\n\n this.head = node\n if (!this.tail) {\n this.tail = node\n }\n this.length++\n}\n\nYallist.prototype.pushNode = function (node) {\n if (node === this.tail) {\n return\n }\n\n if (node.list) {\n node.list.removeNode(node)\n }\n\n var tail = this.tail\n node.list = this\n node.prev = tail\n if (tail) {\n tail.next = node\n }\n\n this.tail = node\n if (!this.head) {\n this.head = node\n }\n this.length++\n}\n\nYallist.prototype.push = function () {\n for (var i = 0, l = arguments.length; i < l; i++) {\n push(this, arguments[i])\n }\n return this.length\n}\n\nYallist.prototype.unshift = function () {\n for (var i = 0, l = arguments.length; i < l; i++) {\n unshift(this, arguments[i])\n }\n return this.length\n}\n\nYallist.prototype.pop = function () {\n if (!this.tail) {\n return undefined\n }\n\n var res = this.tail.value\n this.tail = this.tail.prev\n if (this.tail) {\n this.tail.next = null\n } else {\n this.head = null\n }\n this.length--\n return res\n}\n\nYallist.prototype.shift = function () {\n if (!this.head) {\n return undefined\n }\n\n var res = this.head.value\n this.head = this.head.next\n if (this.head) {\n this.head.prev = null\n } else {\n this.tail = null\n }\n this.length--\n return res\n}\n\nYallist.prototype.forEach = function (fn, thisp) {\n thisp = thisp || this\n for (var walker = this.head, i = 0; walker !== null; i++) {\n fn.call(thisp, walker.value, i, this)\n walker = walker.next\n }\n}\n\nYallist.prototype.forEachReverse = function (fn, thisp) {\n thisp = thisp || this\n for (var walker = this.tail, i = this.length - 1; walker !== null; i--) {\n fn.call(thisp, walker.value, i, this)\n walker = walker.prev\n }\n}\n\nYallist.prototype.get = function (n) {\n for (var i = 0, walker = this.head; walker !== null && i < n; i++) {\n // abort out of the list early if we hit a cycle\n walker = walker.next\n }\n if (i === n && walker !== null) {\n return walker.value\n }\n}\n\nYallist.prototype.getReverse = function (n) {\n for (var i = 0, walker = this.tail; walker !== null && i < n; i++) {\n // abort out of the list early if we hit a cycle\n walker = walker.prev\n }\n if (i === n && walker !== null) {\n return walker.value\n }\n}\n\nYallist.prototype.map = function (fn, thisp) {\n thisp = thisp || this\n var res = new Yallist()\n for (var walker = this.head; walker !== null;) {\n res.push(fn.call(thisp, walker.value, this))\n walker = walker.next\n }\n return res\n}\n\nYallist.prototype.mapReverse = function (fn, thisp) {\n thisp = thisp || this\n var res = new Yallist()\n for (var walker = this.tail; walker !== null;) {\n res.push(fn.call(thisp, walker.value, this))\n walker = walker.prev\n }\n return res\n}\n\nYallist.prototype.reduce = function (fn, initial) {\n var acc\n var walker = this.head\n if (arguments.length > 1) {\n acc = initial\n } else if (this.head) {\n walker = this.head.next\n acc = this.head.value\n } else {\n throw new TypeError('Reduce of empty list with no initial value')\n }\n\n for (var i = 0; walker !== null; i++) {\n acc = fn(acc, walker.value, i)\n walker = walker.next\n }\n\n return acc\n}\n\nYallist.prototype.reduceReverse = function (fn, initial) {\n var acc\n var walker = this.tail\n if (arguments.length > 1) {\n acc = initial\n } else if (this.tail) {\n walker = this.tail.prev\n acc = this.tail.value\n } else {\n throw new TypeError('Reduce of empty list with no initial value')\n }\n\n for (var i = this.length - 1; walker !== null; i--) {\n acc = fn(acc, walker.value, i)\n walker = walker.prev\n }\n\n return acc\n}\n\nYallist.prototype.toArray = function () {\n var arr = new Array(this.length)\n for (var i = 0, walker = this.head; walker !== null; i++) {\n arr[i] = walker.value\n walker = walker.next\n }\n return arr\n}\n\nYallist.prototype.toArrayReverse = function () {\n var arr = new Array(this.length)\n for (var i = 0, walker = this.tail; walker !== null; i++) {\n arr[i] = walker.value\n walker = walker.prev\n }\n return arr\n}\n\nYallist.prototype.slice = function (from, to) {\n to = to || this.length\n if (to < 0) {\n to += this.length\n }\n from = from || 0\n if (from < 0) {\n from += this.length\n }\n var ret = new Yallist()\n if (to < from || to < 0) {\n return ret\n }\n if (from < 0) {\n from = 0\n }\n if (to > this.length) {\n to = this.length\n }\n for (var i = 0, walker = this.head; walker !== null && i < from; i++) {\n walker = walker.next\n }\n for (; walker !== null && i < to; i++, walker = walker.next) {\n ret.push(walker.value)\n }\n return ret\n}\n\nYallist.prototype.sliceReverse = function (from, to) {\n to = to || this.length\n if (to < 0) {\n to += this.length\n }\n from = from || 0\n if (from < 0) {\n from += this.length\n }\n var ret = new Yallist()\n if (to < from || to < 0) {\n return ret\n }\n if (from < 0) {\n from = 0\n }\n if (to > this.length) {\n to = this.length\n }\n for (var i = this.length, walker = this.tail; walker !== null && i > to; i--) {\n walker = walker.prev\n }\n for (; walker !== null && i > from; i--, walker = walker.prev) {\n ret.push(walker.value)\n }\n return ret\n}\n\nYallist.prototype.splice = function (start, deleteCount, ...nodes) {\n if (start > this.length) {\n start = this.length - 1\n }\n if (start < 0) {\n start = this.length + start;\n }\n\n for (var i = 0, walker = this.head; walker !== null && i < start; i++) {\n walker = walker.next\n }\n\n var ret = []\n for (var i = 0; walker && i < deleteCount; i++) {\n ret.push(walker.value)\n walker = this.removeNode(walker)\n }\n if (walker === null) {\n walker = this.tail\n }\n\n if (walker !== this.head && walker !== this.tail) {\n walker = walker.prev\n }\n\n for (var i = 0; i < nodes.length; i++) {\n walker = insert(this, walker, nodes[i])\n }\n return ret;\n}\n\nYallist.prototype.reverse = function () {\n var head = this.head\n var tail = this.tail\n for (var walker = head; walker !== null; walker = walker.prev) {\n var p = walker.prev\n walker.prev = walker.next\n walker.next = p\n }\n this.head = tail\n this.tail = head\n return this\n}\n\nfunction insert (self, node, value) {\n var inserted = node === self.head ?\n new Node(value, null, node, self) :\n new Node(value, node, node.next, self)\n\n if (inserted.next === null) {\n self.tail = inserted\n }\n if (inserted.prev === null) {\n self.head = inserted\n }\n\n self.length++\n\n return inserted\n}\n\nfunction push (self, item) {\n self.tail = new Node(item, self.tail, null, self)\n if (!self.head) {\n self.head = self.tail\n }\n self.length++\n}\n\nfunction unshift (self, item) {\n self.head = new Node(item, null, self.head, self)\n if (!self.tail) {\n self.tail = self.head\n }\n self.length++\n}\n\nfunction Node (value, prev, next, list) {\n if (!(this instanceof Node)) {\n return new Node(value, prev, next, list)\n }\n\n this.list = list\n this.value = value\n\n if (prev) {\n prev.next = this\n this.prev = prev\n } else {\n this.prev = null\n }\n\n if (next) {\n next.prev = this\n this.next = next\n } else {\n this.next = null\n }\n}\n\ntry {\n // add if support for Symbol.iterator is present\n require('./iterator.js')(Yallist)\n} catch (er) {}\n", "'use strict'\n\n// A readable tar stream creator\n// Technically, this is a transform stream that you write paths into,\n// and tar format comes out of.\n// The `add()` method is like `write()` but returns this,\n// and end() return `this` as well, so you can\n// do `new Pack(opt).add('files').add('dir').end().pipe(output)\n// You could also do something like:\n// streamOfPaths().pipe(new Pack()).pipe(new fs.WriteStream('out.tar'))\n\nclass PackJob {\n constructor (path, absolute) {\n this.path = path || './'\n this.absolute = absolute\n this.entry = null\n this.stat = null\n this.readdir = null\n this.pending = false\n this.ignore = false\n this.piped = false\n }\n}\n\nconst MiniPass = require('minipass')\nconst zlib = require('minizlib')\nconst ReadEntry = require('./read-entry.js')\nconst WriteEntry = require('./write-entry.js')\nconst WriteEntrySync = WriteEntry.Sync\nconst WriteEntryTar = WriteEntry.Tar\nconst Yallist = require('yallist')\nconst EOF = Buffer.alloc(1024)\nconst ONSTAT = Symbol('onStat')\nconst ENDED = Symbol('ended')\nconst QUEUE = Symbol('queue')\nconst CURRENT = Symbol('current')\nconst PROCESS = Symbol('process')\nconst PROCESSING = Symbol('processing')\nconst PROCESSJOB = Symbol('processJob')\nconst JOBS = Symbol('jobs')\nconst JOBDONE = Symbol('jobDone')\nconst ADDFSENTRY = Symbol('addFSEntry')\nconst ADDTARENTRY = Symbol('addTarEntry')\nconst STAT = Symbol('stat')\nconst READDIR = Symbol('readdir')\nconst ONREADDIR = Symbol('onreaddir')\nconst PIPE = Symbol('pipe')\nconst ENTRY = Symbol('entry')\nconst ENTRYOPT = Symbol('entryOpt')\nconst WRITEENTRYCLASS = Symbol('writeEntryClass')\nconst WRITE = Symbol('write')\nconst ONDRAIN = Symbol('ondrain')\n\nconst fs = require('fs')\nconst path = require('path')\nconst warner = require('./warn-mixin.js')\n\nconst Pack = warner(class Pack extends MiniPass {\n constructor (opt) {\n super(opt)\n opt = opt || Object.create(null)\n this.opt = opt\n this.file = opt.file || ''\n this.cwd = opt.cwd || process.cwd()\n this.maxReadSize = opt.maxReadSize\n this.preservePaths = !!opt.preservePaths\n this.strict = !!opt.strict\n this.noPax = !!opt.noPax\n this.prefix = (opt.prefix || '').replace(/(\\\\|\\/)+$/, '')\n this.linkCache = opt.linkCache || new Map()\n this.statCache = opt.statCache || new Map()\n this.readdirCache = opt.readdirCache || new Map()\n\n this[WRITEENTRYCLASS] = WriteEntry\n if (typeof opt.onwarn === 'function')\n this.on('warn', opt.onwarn)\n\n this.portable = !!opt.portable\n this.zip = null\n if (opt.gzip) {\n if (typeof opt.gzip !== 'object')\n opt.gzip = {}\n if (this.portable)\n opt.gzip.portable = true\n this.zip = new zlib.Gzip(opt.gzip)\n this.zip.on('data', chunk => super.write(chunk))\n this.zip.on('end', _ => super.end())\n this.zip.on('drain', _ => this[ONDRAIN]())\n this.on('resume', _ => this.zip.resume())\n } else\n this.on('drain', this[ONDRAIN])\n\n this.noDirRecurse = !!opt.noDirRecurse\n this.follow = !!opt.follow\n this.noMtime = !!opt.noMtime\n this.mtime = opt.mtime || null\n\n this.filter = typeof opt.filter === 'function' ? opt.filter : _ => true\n\n this[QUEUE] = new Yallist()\n this[JOBS] = 0\n this.jobs = +opt.jobs || 4\n this[PROCESSING] = false\n this[ENDED] = false\n }\n\n [WRITE] (chunk) {\n return super.write(chunk)\n }\n\n add (path) {\n this.write(path)\n return this\n }\n\n end (path) {\n if (path)\n this.write(path)\n this[ENDED] = true\n this[PROCESS]()\n return this\n }\n\n write (path) {\n if (this[ENDED])\n throw new Error('write after end')\n\n if (path instanceof ReadEntry)\n this[ADDTARENTRY](path)\n else\n this[ADDFSENTRY](path)\n return this.flowing\n }\n\n [ADDTARENTRY] (p) {\n const absolute = path.resolve(this.cwd, p.path)\n if (this.prefix)\n p.path = this.prefix + '/' + p.path.replace(/^\\.(\\/+|$)/, '')\n\n // in this case, we don't have to wait for the stat\n if (!this.filter(p.path, p))\n p.resume()\n else {\n const job = new PackJob(p.path, absolute, false)\n job.entry = new WriteEntryTar(p, this[ENTRYOPT](job))\n job.entry.on('end', _ => this[JOBDONE](job))\n this[JOBS] += 1\n this[QUEUE].push(job)\n }\n\n this[PROCESS]()\n }\n\n [ADDFSENTRY] (p) {\n const absolute = path.resolve(this.cwd, p)\n if (this.prefix)\n p = this.prefix + '/' + p.replace(/^\\.(\\/+|$)/, '')\n\n this[QUEUE].push(new PackJob(p, absolute))\n this[PROCESS]()\n }\n\n [STAT] (job) {\n job.pending = true\n this[JOBS] += 1\n const stat = this.follow ? 'stat' : 'lstat'\n fs[stat](job.absolute, (er, stat) => {\n job.pending = false\n this[JOBS] -= 1\n if (er)\n this.emit('error', er)\n else\n this[ONSTAT](job, stat)\n })\n }\n\n [ONSTAT] (job, stat) {\n this.statCache.set(job.absolute, stat)\n job.stat = stat\n\n // now we have the stat, we can filter it.\n if (!this.filter(job.path, stat))\n job.ignore = true\n\n this[PROCESS]()\n }\n\n [READDIR] (job) {\n job.pending = true\n this[JOBS] += 1\n fs.readdir(job.absolute, (er, entries) => {\n job.pending = false\n this[JOBS] -= 1\n if (er)\n return this.emit('error', er)\n this[ONREADDIR](job, entries)\n })\n }\n\n [ONREADDIR] (job, entries) {\n this.readdirCache.set(job.absolute, entries)\n job.readdir = entries\n this[PROCESS]()\n }\n\n [PROCESS] () {\n if (this[PROCESSING])\n return\n\n this[PROCESSING] = true\n for (let w = this[QUEUE].head;\n w !== null && this[JOBS] < this.jobs;\n w = w.next) {\n this[PROCESSJOB](w.value)\n if (w.value.ignore) {\n const p = w.next\n this[QUEUE].removeNode(w)\n w.next = p\n }\n }\n\n this[PROCESSING] = false\n\n if (this[ENDED] && !this[QUEUE].length && this[JOBS] === 0) {\n if (this.zip)\n this.zip.end(EOF)\n else {\n super.write(EOF)\n super.end()\n }\n }\n }\n\n get [CURRENT] () {\n return this[QUEUE] && this[QUEUE].head && this[QUEUE].head.value\n }\n\n [JOBDONE] (job) {\n this[QUEUE].shift()\n this[JOBS] -= 1\n this[PROCESS]()\n }\n\n [PROCESSJOB] (job) {\n if (job.pending)\n return\n\n if (job.entry) {\n if (job === this[CURRENT] && !job.piped)\n this[PIPE](job)\n return\n }\n\n if (!job.stat) {\n if (this.statCache.has(job.absolute))\n this[ONSTAT](job, this.statCache.get(job.absolute))\n else\n this[STAT](job)\n }\n if (!job.stat)\n return\n\n // filtered out!\n if (job.ignore)\n return\n\n if (!this.noDirRecurse && job.stat.isDirectory() && !job.readdir) {\n if (this.readdirCache.has(job.absolute))\n this[ONREADDIR](job, this.readdirCache.get(job.absolute))\n else\n this[READDIR](job)\n if (!job.readdir)\n return\n }\n\n // we know it doesn't have an entry, because that got checked above\n job.entry = this[ENTRY](job)\n if (!job.entry) {\n job.ignore = true\n return\n }\n\n if (job === this[CURRENT] && !job.piped)\n this[PIPE](job)\n }\n\n [ENTRYOPT] (job) {\n return {\n onwarn: (code, msg, data) => this.warn(code, msg, data),\n noPax: this.noPax,\n cwd: this.cwd,\n absolute: job.absolute,\n preservePaths: this.preservePaths,\n maxReadSize: this.maxReadSize,\n strict: this.strict,\n portable: this.portable,\n linkCache: this.linkCache,\n statCache: this.statCache,\n noMtime: this.noMtime,\n mtime: this.mtime,\n }\n }\n\n [ENTRY] (job) {\n this[JOBS] += 1\n try {\n return new this[WRITEENTRYCLASS](job.path, this[ENTRYOPT](job))\n .on('end', () => this[JOBDONE](job))\n .on('error', er => this.emit('error', er))\n } catch (er) {\n this.emit('error', er)\n }\n }\n\n [ONDRAIN] () {\n if (this[CURRENT] && this[CURRENT].entry)\n this[CURRENT].entry.resume()\n }\n\n // like .pipe() but using super, because our write() is special\n [PIPE] (job) {\n job.piped = true\n\n if (job.readdir) {\n job.readdir.forEach(entry => {\n const p = this.prefix ?\n job.path.slice(this.prefix.length + 1) || './'\n : job.path\n\n const base = p === './' ? '' : p.replace(/\\/*$/, '/')\n this[ADDFSENTRY](base + entry)\n })\n }\n\n const source = job.entry\n const zip = this.zip\n\n if (zip) {\n source.on('data', chunk => {\n if (!zip.write(chunk))\n source.pause()\n })\n } else {\n source.on('data', chunk => {\n if (!super.write(chunk))\n source.pause()\n })\n }\n }\n\n pause () {\n if (this.zip)\n this.zip.pause()\n return super.pause()\n }\n})\n\nclass PackSync extends Pack {\n constructor (opt) {\n super(opt)\n this[WRITEENTRYCLASS] = WriteEntrySync\n }\n\n // pause/resume are no-ops in sync streams.\n pause () {}\n resume () {}\n\n [STAT] (job) {\n const stat = this.follow ? 'statSync' : 'lstatSync'\n this[ONSTAT](job, fs[stat](job.absolute))\n }\n\n [READDIR] (job, stat) {\n this[ONREADDIR](job, fs.readdirSync(job.absolute))\n }\n\n // gotta get it all in this tick\n [PIPE] (job) {\n const source = job.entry\n const zip = this.zip\n\n if (job.readdir) {\n job.readdir.forEach(entry => {\n const p = this.prefix ?\n job.path.slice(this.prefix.length + 1) || './'\n : job.path\n\n const base = p === './' ? '' : p.replace(/\\/*$/, '/')\n this[ADDFSENTRY](base + entry)\n })\n }\n\n if (zip) {\n source.on('data', chunk => {\n zip.write(chunk)\n })\n } else {\n source.on('data', chunk => {\n super[WRITE](chunk)\n })\n }\n }\n}\n\nPack.Sync = PackSync\n\nmodule.exports = Pack\n", "'use strict'\nconst MiniPass = require('minipass')\nconst EE = require('events').EventEmitter\nconst fs = require('fs')\n\nlet writev = fs.writev\n/* istanbul ignore next */\nif (!writev) {\n // This entire block can be removed if support for earlier than Node.js\n // 12.9.0 is not needed.\n const binding = process.binding('fs')\n const FSReqWrap = binding.FSReqWrap || binding.FSReqCallback\n\n writev = (fd, iovec, pos, cb) => {\n const done = (er, bw) => cb(er, bw, iovec)\n const req = new FSReqWrap()\n req.oncomplete = done\n binding.writeBuffers(fd, iovec, pos, req)\n }\n}\n\nconst _autoClose = Symbol('_autoClose')\nconst _close = Symbol('_close')\nconst _ended = Symbol('_ended')\nconst _fd = Symbol('_fd')\nconst _finished = Symbol('_finished')\nconst _flags = Symbol('_flags')\nconst _flush = Symbol('_flush')\nconst _handleChunk = Symbol('_handleChunk')\nconst _makeBuf = Symbol('_makeBuf')\nconst _mode = Symbol('_mode')\nconst _needDrain = Symbol('_needDrain')\nconst _onerror = Symbol('_onerror')\nconst _onopen = Symbol('_onopen')\nconst _onread = Symbol('_onread')\nconst _onwrite = Symbol('_onwrite')\nconst _open = Symbol('_open')\nconst _path = Symbol('_path')\nconst _pos = Symbol('_pos')\nconst _queue = Symbol('_queue')\nconst _read = Symbol('_read')\nconst _readSize = Symbol('_readSize')\nconst _reading = Symbol('_reading')\nconst _remain = Symbol('_remain')\nconst _size = Symbol('_size')\nconst _write = Symbol('_write')\nconst _writing = Symbol('_writing')\nconst _defaultFlag = Symbol('_defaultFlag')\nconst _errored = Symbol('_errored')\n\nclass ReadStream extends MiniPass {\n constructor (path, opt) {\n opt = opt || {}\n super(opt)\n\n this.readable = true\n this.writable = false\n\n if (typeof path !== 'string')\n throw new TypeError('path must be a string')\n\n this[_errored] = false\n this[_fd] = typeof opt.fd === 'number' ? opt.fd : null\n this[_path] = path\n this[_readSize] = opt.readSize || 16*1024*1024\n this[_reading] = false\n this[_size] = typeof opt.size === 'number' ? opt.size : Infinity\n this[_remain] = this[_size]\n this[_autoClose] = typeof opt.autoClose === 'boolean' ?\n opt.autoClose : true\n\n if (typeof this[_fd] === 'number')\n this[_read]()\n else\n this[_open]()\n }\n\n get fd () { return this[_fd] }\n get path () { return this[_path] }\n\n write () {\n throw new TypeError('this is a readable stream')\n }\n\n end () {\n throw new TypeError('this is a readable stream')\n }\n\n [_open] () {\n fs.open(this[_path], 'r', (er, fd) => this[_onopen](er, fd))\n }\n\n [_onopen] (er, fd) {\n if (er)\n this[_onerror](er)\n else {\n this[_fd] = fd\n this.emit('open', fd)\n this[_read]()\n }\n }\n\n [_makeBuf] () {\n return Buffer.allocUnsafe(Math.min(this[_readSize], this[_remain]))\n }\n\n [_read] () {\n if (!this[_reading]) {\n this[_reading] = true\n const buf = this[_makeBuf]()\n /* istanbul ignore if */\n if (buf.length === 0)\n return process.nextTick(() => this[_onread](null, 0, buf))\n fs.read(this[_fd], buf, 0, buf.length, null, (er, br, buf) =>\n this[_onread](er, br, buf))\n }\n }\n\n [_onread] (er, br, buf) {\n this[_reading] = false\n if (er)\n this[_onerror](er)\n else if (this[_handleChunk](br, buf))\n this[_read]()\n }\n\n [_close] () {\n if (this[_autoClose] && typeof this[_fd] === 'number') {\n const fd = this[_fd]\n this[_fd] = null\n fs.close(fd, er => er ? this.emit('error', er) : this.emit('close'))\n }\n }\n\n [_onerror] (er) {\n this[_reading] = true\n this[_close]()\n this.emit('error', er)\n }\n\n [_handleChunk] (br, buf) {\n let ret = false\n // no effect if infinite\n this[_remain] -= br\n if (br > 0)\n ret = super.write(br < buf.length ? buf.slice(0, br) : buf)\n\n if (br === 0 || this[_remain] <= 0) {\n ret = false\n this[_close]()\n super.end()\n }\n\n return ret\n }\n\n emit (ev, data) {\n switch (ev) {\n case 'prefinish':\n case 'finish':\n break\n\n case 'drain':\n if (typeof this[_fd] === 'number')\n this[_read]()\n break\n\n case 'error':\n if (this[_errored])\n return\n this[_errored] = true\n return super.emit(ev, data)\n\n default:\n return super.emit(ev, data)\n }\n }\n}\n\nclass ReadStreamSync extends ReadStream {\n [_open] () {\n let threw = true\n try {\n this[_onopen](null, fs.openSync(this[_path], 'r'))\n threw = false\n } finally {\n if (threw)\n this[_close]()\n }\n }\n\n [_read] () {\n let threw = true\n try {\n if (!this[_reading]) {\n this[_reading] = true\n do {\n const buf = this[_makeBuf]()\n /* istanbul ignore next */\n const br = buf.length === 0 ? 0\n : fs.readSync(this[_fd], buf, 0, buf.length, null)\n if (!this[_handleChunk](br, buf))\n break\n } while (true)\n this[_reading] = false\n }\n threw = false\n } finally {\n if (threw)\n this[_close]()\n }\n }\n\n [_close] () {\n if (this[_autoClose] && typeof this[_fd] === 'number') {\n const fd = this[_fd]\n this[_fd] = null\n fs.closeSync(fd)\n this.emit('close')\n }\n }\n}\n\nclass WriteStream extends EE {\n constructor (path, opt) {\n opt = opt || {}\n super(opt)\n this.readable = false\n this.writable = true\n this[_errored] = false\n this[_writing] = false\n this[_ended] = false\n this[_needDrain] = false\n this[_queue] = []\n this[_path] = path\n this[_fd] = typeof opt.fd === 'number' ? opt.fd : null\n this[_mode] = opt.mode === undefined ? 0o666 : opt.mode\n this[_pos] = typeof opt.start === 'number' ? opt.start : null\n this[_autoClose] = typeof opt.autoClose === 'boolean' ?\n opt.autoClose : true\n\n // truncating makes no sense when writing into the middle\n const defaultFlag = this[_pos] !== null ? 'r+' : 'w'\n this[_defaultFlag] = opt.flags === undefined\n this[_flags] = this[_defaultFlag] ? defaultFlag : opt.flags\n\n if (this[_fd] === null)\n this[_open]()\n }\n\n emit (ev, data) {\n if (ev === 'error') {\n if (this[_errored])\n return\n this[_errored] = true\n }\n return super.emit(ev, data)\n }\n\n\n get fd () { return this[_fd] }\n get path () { return this[_path] }\n\n [_onerror] (er) {\n this[_close]()\n this[_writing] = true\n this.emit('error', er)\n }\n\n [_open] () {\n fs.open(this[_path], this[_flags], this[_mode],\n (er, fd) => this[_onopen](er, fd))\n }\n\n [_onopen] (er, fd) {\n if (this[_defaultFlag] &&\n this[_flags] === 'r+' &&\n er && er.code === 'ENOENT') {\n this[_flags] = 'w'\n this[_open]()\n } else if (er)\n this[_onerror](er)\n else {\n this[_fd] = fd\n this.emit('open', fd)\n this[_flush]()\n }\n }\n\n end (buf, enc) {\n if (buf)\n this.write(buf, enc)\n\n this[_ended] = true\n\n // synthetic after-write logic, where drain/finish live\n if (!this[_writing] && !this[_queue].length &&\n typeof this[_fd] === 'number')\n this[_onwrite](null, 0)\n return this\n }\n\n write (buf, enc) {\n if (typeof buf === 'string')\n buf = Buffer.from(buf, enc)\n\n if (this[_ended]) {\n this.emit('error', new Error('write() after end()'))\n return false\n }\n\n if (this[_fd] === null || this[_writing] || this[_queue].length) {\n this[_queue].push(buf)\n this[_needDrain] = true\n return false\n }\n\n this[_writing] = true\n this[_write](buf)\n return true\n }\n\n [_write] (buf) {\n fs.write(this[_fd], buf, 0, buf.length, this[_pos], (er, bw) =>\n this[_onwrite](er, bw))\n }\n\n [_onwrite] (er, bw) {\n if (er)\n this[_onerror](er)\n else {\n if (this[_pos] !== null)\n this[_pos] += bw\n if (this[_queue].length)\n this[_flush]()\n else {\n this[_writing] = false\n\n if (this[_ended] && !this[_finished]) {\n this[_finished] = true\n this[_close]()\n this.emit('finish')\n } else if (this[_needDrain]) {\n this[_needDrain] = false\n this.emit('drain')\n }\n }\n }\n }\n\n [_flush] () {\n if (this[_queue].length === 0) {\n if (this[_ended])\n this[_onwrite](null, 0)\n } else if (this[_queue].length === 1)\n this[_write](this[_queue].pop())\n else {\n const iovec = this[_queue]\n this[_queue] = []\n writev(this[_fd], iovec, this[_pos],\n (er, bw) => this[_onwrite](er, bw))\n }\n }\n\n [_close] () {\n if (this[_autoClose] && typeof this[_fd] === 'number') {\n const fd = this[_fd]\n this[_fd] = null\n fs.close(fd, er => er ? this.emit('error', er) : this.emit('close'))\n }\n }\n}\n\nclass WriteStreamSync extends WriteStream {\n [_open] () {\n let fd\n // only wrap in a try{} block if we know we'll retry, to avoid\n // the rethrow obscuring the error's source frame in most cases.\n if (this[_defaultFlag] && this[_flags] === 'r+') {\n try {\n fd = fs.openSync(this[_path], this[_flags], this[_mode])\n } catch (er) {\n if (er.code === 'ENOENT') {\n this[_flags] = 'w'\n return this[_open]()\n } else\n throw er\n }\n } else\n fd = fs.openSync(this[_path], this[_flags], this[_mode])\n\n this[_onopen](null, fd)\n }\n\n [_close] () {\n if (this[_autoClose] && typeof this[_fd] === 'number') {\n const fd = this[_fd]\n this[_fd] = null\n fs.closeSync(fd)\n this.emit('close')\n }\n }\n\n [_write] (buf) {\n // throw the original, but try to close if it fails\n let threw = true\n try {\n this[_onwrite](null,\n fs.writeSync(this[_fd], buf, 0, buf.length, this[_pos]))\n threw = false\n } finally {\n if (threw)\n try { this[_close]() } catch (_) {}\n }\n }\n}\n\nexports.ReadStream = ReadStream\nexports.ReadStreamSync = ReadStreamSync\n\nexports.WriteStream = WriteStream\nexports.WriteStreamSync = WriteStreamSync\n", "'use strict'\n\n// this[BUFFER] is the remainder of a chunk if we're waiting for\n// the full 512 bytes of a header to come in. We will Buffer.concat()\n// it to the next write(), which is a mem copy, but a small one.\n//\n// this[QUEUE] is a Yallist of entries that haven't been emitted\n// yet this can only get filled up if the user keeps write()ing after\n// a write() returns false, or does a write() with more than one entry\n//\n// We don't buffer chunks, we always parse them and either create an\n// entry, or push it into the active entry. The ReadEntry class knows\n// to throw data away if .ignore=true\n//\n// Shift entry off the buffer when it emits 'end', and emit 'entry' for\n// the next one in the list.\n//\n// At any time, we're pushing body chunks into the entry at WRITEENTRY,\n// and waiting for 'end' on the entry at READENTRY\n//\n// ignored entries get .resume() called on them straight away\n\nconst warner = require('./warn-mixin.js')\nconst Header = require('./header.js')\nconst EE = require('events')\nconst Yallist = require('yallist')\nconst maxMetaEntrySize = 1024 * 1024\nconst Entry = require('./read-entry.js')\nconst Pax = require('./pax.js')\nconst zlib = require('minizlib')\n\nconst gzipHeader = Buffer.from([0x1f, 0x8b])\nconst STATE = Symbol('state')\nconst WRITEENTRY = Symbol('writeEntry')\nconst READENTRY = Symbol('readEntry')\nconst NEXTENTRY = Symbol('nextEntry')\nconst PROCESSENTRY = Symbol('processEntry')\nconst EX = Symbol('extendedHeader')\nconst GEX = Symbol('globalExtendedHeader')\nconst META = Symbol('meta')\nconst EMITMETA = Symbol('emitMeta')\nconst BUFFER = Symbol('buffer')\nconst QUEUE = Symbol('queue')\nconst ENDED = Symbol('ended')\nconst EMITTEDEND = Symbol('emittedEnd')\nconst EMIT = Symbol('emit')\nconst UNZIP = Symbol('unzip')\nconst CONSUMECHUNK = Symbol('consumeChunk')\nconst CONSUMECHUNKSUB = Symbol('consumeChunkSub')\nconst CONSUMEBODY = Symbol('consumeBody')\nconst CONSUMEMETA = Symbol('consumeMeta')\nconst CONSUMEHEADER = Symbol('consumeHeader')\nconst CONSUMING = Symbol('consuming')\nconst BUFFERCONCAT = Symbol('bufferConcat')\nconst MAYBEEND = Symbol('maybeEnd')\nconst WRITING = Symbol('writing')\nconst ABORTED = Symbol('aborted')\nconst DONE = Symbol('onDone')\nconst SAW_VALID_ENTRY = Symbol('sawValidEntry')\nconst SAW_NULL_BLOCK = Symbol('sawNullBlock')\nconst SAW_EOF = Symbol('sawEOF')\n\nconst noop = _ => true\n\nmodule.exports = warner(class Parser extends EE {\n constructor (opt) {\n opt = opt || {}\n super(opt)\n\n this.file = opt.file || ''\n\n // set to boolean false when an entry starts. 1024 bytes of \\0\n // is technically a valid tarball, albeit a boring one.\n this[SAW_VALID_ENTRY] = null\n\n // these BADARCHIVE errors can't be detected early. listen on DONE.\n this.on(DONE, _ => {\n if (this[STATE] === 'begin' || this[SAW_VALID_ENTRY] === false) {\n // either less than 1 block of data, or all entries were invalid.\n // Either way, probably not even a tarball.\n this.warn('TAR_BAD_ARCHIVE', 'Unrecognized archive format')\n }\n })\n\n if (opt.ondone)\n this.on(DONE, opt.ondone)\n else {\n this.on(DONE, _ => {\n this.emit('prefinish')\n this.emit('finish')\n this.emit('end')\n this.emit('close')\n })\n }\n\n this.strict = !!opt.strict\n this.maxMetaEntrySize = opt.maxMetaEntrySize || maxMetaEntrySize\n this.filter = typeof opt.filter === 'function' ? opt.filter : noop\n\n // have to set this so that streams are ok piping into it\n this.writable = true\n this.readable = false\n\n this[QUEUE] = new Yallist()\n this[BUFFER] = null\n this[READENTRY] = null\n this[WRITEENTRY] = null\n this[STATE] = 'begin'\n this[META] = ''\n this[EX] = null\n this[GEX] = null\n this[ENDED] = false\n this[UNZIP] = null\n this[ABORTED] = false\n this[SAW_NULL_BLOCK] = false\n this[SAW_EOF] = false\n if (typeof opt.onwarn === 'function')\n this.on('warn', opt.onwarn)\n if (typeof opt.onentry === 'function')\n this.on('entry', opt.onentry)\n }\n\n [CONSUMEHEADER] (chunk, position) {\n if (this[SAW_VALID_ENTRY] === null)\n this[SAW_VALID_ENTRY] = false\n let header\n try {\n header = new Header(chunk, position, this[EX], this[GEX])\n } catch (er) {\n return this.warn('TAR_ENTRY_INVALID', er)\n }\n\n if (header.nullBlock) {\n if (this[SAW_NULL_BLOCK]) {\n this[SAW_EOF] = true\n // ending an archive with no entries. pointless, but legal.\n if (this[STATE] === 'begin')\n this[STATE] = 'header'\n this[EMIT]('eof')\n } else {\n this[SAW_NULL_BLOCK] = true\n this[EMIT]('nullBlock')\n }\n } else {\n this[SAW_NULL_BLOCK] = false\n if (!header.cksumValid)\n this.warn('TAR_ENTRY_INVALID', 'checksum failure', {header})\n else if (!header.path)\n this.warn('TAR_ENTRY_INVALID', 'path is required', {header})\n else {\n const type = header.type\n if (/^(Symbolic)?Link$/.test(type) && !header.linkpath)\n this.warn('TAR_ENTRY_INVALID', 'linkpath required', {header})\n else if (!/^(Symbolic)?Link$/.test(type) && header.linkpath)\n this.warn('TAR_ENTRY_INVALID', 'linkpath forbidden', {header})\n else {\n const entry = this[WRITEENTRY] = new Entry(header, this[EX], this[GEX])\n\n // we do this for meta & ignored entries as well, because they\n // are still valid tar, or else we wouldn't know to ignore them\n if (!this[SAW_VALID_ENTRY]) {\n if (entry.remain) {\n // this might be the one!\n const onend = () => {\n if (!entry.invalid)\n this[SAW_VALID_ENTRY] = true\n }\n entry.on('end', onend)\n } else\n this[SAW_VALID_ENTRY] = true\n }\n\n if (entry.meta) {\n if (entry.size > this.maxMetaEntrySize) {\n entry.ignore = true\n this[EMIT]('ignoredEntry', entry)\n this[STATE] = 'ignore'\n entry.resume()\n } else if (entry.size > 0) {\n this[META] = ''\n entry.on('data', c => this[META] += c)\n this[STATE] = 'meta'\n }\n } else {\n this[EX] = null\n entry.ignore = entry.ignore || !this.filter(entry.path, entry)\n\n if (entry.ignore) {\n // probably valid, just not something we care about\n this[EMIT]('ignoredEntry', entry)\n this[STATE] = entry.remain ? 'ignore' : 'header'\n entry.resume()\n } else {\n if (entry.remain)\n this[STATE] = 'body'\n else {\n this[STATE] = 'header'\n entry.end()\n }\n\n if (!this[READENTRY]) {\n this[QUEUE].push(entry)\n this[NEXTENTRY]()\n } else\n this[QUEUE].push(entry)\n }\n }\n }\n }\n }\n }\n\n [PROCESSENTRY] (entry) {\n let go = true\n\n if (!entry) {\n this[READENTRY] = null\n go = false\n } else if (Array.isArray(entry))\n this.emit.apply(this, entry)\n else {\n this[READENTRY] = entry\n this.emit('entry', entry)\n if (!entry.emittedEnd) {\n entry.on('end', _ => this[NEXTENTRY]())\n go = false\n }\n }\n\n return go\n }\n\n [NEXTENTRY] () {\n do {} while (this[PROCESSENTRY](this[QUEUE].shift()))\n\n if (!this[QUEUE].length) {\n // At this point, there's nothing in the queue, but we may have an\n // entry which is being consumed (readEntry).\n // If we don't, then we definitely can handle more data.\n // If we do, and either it's flowing, or it has never had any data\n // written to it, then it needs more.\n // The only other possibility is that it has returned false from a\n // write() call, so we wait for the next drain to continue.\n const re = this[READENTRY]\n const drainNow = !re || re.flowing || re.size === re.remain\n if (drainNow) {\n if (!this[WRITING])\n this.emit('drain')\n } else\n re.once('drain', _ => this.emit('drain'))\n }\n }\n\n [CONSUMEBODY] (chunk, position) {\n // write up to but no more than writeEntry.blockRemain\n const entry = this[WRITEENTRY]\n const br = entry.blockRemain\n const c = (br >= chunk.length && position === 0) ? chunk\n : chunk.slice(position, position + br)\n\n entry.write(c)\n\n if (!entry.blockRemain) {\n this[STATE] = 'header'\n this[WRITEENTRY] = null\n entry.end()\n }\n\n return c.length\n }\n\n [CONSUMEMETA] (chunk, position) {\n const entry = this[WRITEENTRY]\n const ret = this[CONSUMEBODY](chunk, position)\n\n // if we finished, then the entry is reset\n if (!this[WRITEENTRY])\n this[EMITMETA](entry)\n\n return ret\n }\n\n [EMIT] (ev, data, extra) {\n if (!this[QUEUE].length && !this[READENTRY])\n this.emit(ev, data, extra)\n else\n this[QUEUE].push([ev, data, extra])\n }\n\n [EMITMETA] (entry) {\n this[EMIT]('meta', this[META])\n switch (entry.type) {\n case 'ExtendedHeader':\n case 'OldExtendedHeader':\n this[EX] = Pax.parse(this[META], this[EX], false)\n break\n\n case 'GlobalExtendedHeader':\n this[GEX] = Pax.parse(this[META], this[GEX], true)\n break\n\n case 'NextFileHasLongPath':\n case 'OldGnuLongPath':\n this[EX] = this[EX] || Object.create(null)\n this[EX].path = this[META].replace(/\\0.*/, '')\n break\n\n case 'NextFileHasLongLinkpath':\n this[EX] = this[EX] || Object.create(null)\n this[EX].linkpath = this[META].replace(/\\0.*/, '')\n break\n\n /* istanbul ignore next */\n default: throw new Error('unknown meta: ' + entry.type)\n }\n }\n\n abort (error) {\n this[ABORTED] = true\n this.emit('abort', error)\n // always throws, even in non-strict mode\n this.warn('TAR_ABORT', error, { recoverable: false })\n }\n\n write (chunk) {\n if (this[ABORTED])\n return\n\n // first write, might be gzipped\n if (this[UNZIP] === null && chunk) {\n if (this[BUFFER]) {\n chunk = Buffer.concat([this[BUFFER], chunk])\n this[BUFFER] = null\n }\n if (chunk.length < gzipHeader.length) {\n this[BUFFER] = chunk\n return true\n }\n for (let i = 0; this[UNZIP] === null && i < gzipHeader.length; i++) {\n if (chunk[i] !== gzipHeader[i])\n this[UNZIP] = false\n }\n if (this[UNZIP] === null) {\n const ended = this[ENDED]\n this[ENDED] = false\n this[UNZIP] = new zlib.Unzip()\n this[UNZIP].on('data', chunk => this[CONSUMECHUNK](chunk))\n this[UNZIP].on('error', er => this.abort(er))\n this[UNZIP].on('end', _ => {\n this[ENDED] = true\n this[CONSUMECHUNK]()\n })\n this[WRITING] = true\n const ret = this[UNZIP][ended ? 'end' : 'write'](chunk)\n this[WRITING] = false\n return ret\n }\n }\n\n this[WRITING] = true\n if (this[UNZIP])\n this[UNZIP].write(chunk)\n else\n this[CONSUMECHUNK](chunk)\n this[WRITING] = false\n\n // return false if there's a queue, or if the current entry isn't flowing\n const ret =\n this[QUEUE].length ? false :\n this[READENTRY] ? this[READENTRY].flowing :\n true\n\n // if we have no queue, then that means a clogged READENTRY\n if (!ret && !this[QUEUE].length)\n this[READENTRY].once('drain', _ => this.emit('drain'))\n\n return ret\n }\n\n [BUFFERCONCAT] (c) {\n if (c && !this[ABORTED])\n this[BUFFER] = this[BUFFER] ? Buffer.concat([this[BUFFER], c]) : c\n }\n\n [MAYBEEND] () {\n if (this[ENDED] &&\n !this[EMITTEDEND] &&\n !this[ABORTED] &&\n !this[CONSUMING]) {\n this[EMITTEDEND] = true\n const entry = this[WRITEENTRY]\n if (entry && entry.blockRemain) {\n // truncated, likely a damaged file\n const have = this[BUFFER] ? this[BUFFER].length : 0\n this.warn('TAR_BAD_ARCHIVE', `Truncated input (needed ${\n entry.blockRemain} more bytes, only ${have} available)`, {entry})\n if (this[BUFFER])\n entry.write(this[BUFFER])\n entry.end()\n }\n this[EMIT](DONE)\n }\n }\n\n [CONSUMECHUNK] (chunk) {\n if (this[CONSUMING])\n this[BUFFERCONCAT](chunk)\n else if (!chunk && !this[BUFFER])\n this[MAYBEEND]()\n else {\n this[CONSUMING] = true\n if (this[BUFFER]) {\n this[BUFFERCONCAT](chunk)\n const c = this[BUFFER]\n this[BUFFER] = null\n this[CONSUMECHUNKSUB](c)\n } else\n this[CONSUMECHUNKSUB](chunk)\n\n while (this[BUFFER] &&\n this[BUFFER].length >= 512 &&\n !this[ABORTED] &&\n !this[SAW_EOF]) {\n const c = this[BUFFER]\n this[BUFFER] = null\n this[CONSUMECHUNKSUB](c)\n }\n this[CONSUMING] = false\n }\n\n if (!this[BUFFER] || this[ENDED])\n this[MAYBEEND]()\n }\n\n [CONSUMECHUNKSUB] (chunk) {\n // we know that we are in CONSUMING mode, so anything written goes into\n // the buffer. Advance the position and put any remainder in the buffer.\n let position = 0\n const length = chunk.length\n while (position + 512 <= length && !this[ABORTED] && !this[SAW_EOF]) {\n switch (this[STATE]) {\n case 'begin':\n case 'header':\n this[CONSUMEHEADER](chunk, position)\n position += 512\n break\n\n case 'ignore':\n case 'body':\n position += this[CONSUMEBODY](chunk, position)\n break\n\n case 'meta':\n position += this[CONSUMEMETA](chunk, position)\n break\n\n /* istanbul ignore next */\n default:\n throw new Error('invalid state: ' + this[STATE])\n }\n }\n\n if (position < length) {\n if (this[BUFFER])\n this[BUFFER] = Buffer.concat([chunk.slice(position), this[BUFFER]])\n else\n this[BUFFER] = chunk.slice(position)\n }\n }\n\n end (chunk) {\n if (!this[ABORTED]) {\n if (this[UNZIP])\n this[UNZIP].end(chunk)\n else {\n this[ENDED] = true\n this.write(chunk)\n }\n }\n }\n})\n", "'use strict'\n\n// XXX: This shares a lot in common with extract.js\n// maybe some DRY opportunity here?\n\n// tar -t\nconst hlo = require('./high-level-opt.js')\nconst Parser = require('./parse.js')\nconst fs = require('fs')\nconst fsm = require('fs-minipass')\nconst path = require('path')\n\nmodule.exports = (opt_, files, cb) => {\n if (typeof opt_ === 'function')\n cb = opt_, files = null, opt_ = {}\n else if (Array.isArray(opt_))\n files = opt_, opt_ = {}\n\n if (typeof files === 'function')\n cb = files, files = null\n\n if (!files)\n files = []\n else\n files = Array.from(files)\n\n const opt = hlo(opt_)\n\n if (opt.sync && typeof cb === 'function')\n throw new TypeError('callback not supported for sync tar functions')\n\n if (!opt.file && typeof cb === 'function')\n throw new TypeError('callback only supported with file option')\n\n if (files.length)\n filesFilter(opt, files)\n\n if (!opt.noResume)\n onentryFunction(opt)\n\n return opt.file && opt.sync ? listFileSync(opt)\n : opt.file ? listFile(opt, cb)\n : list(opt)\n}\n\nconst onentryFunction = opt => {\n const onentry = opt.onentry\n opt.onentry = onentry ? e => {\n onentry(e)\n e.resume()\n } : e => e.resume()\n}\n\n// construct a filter that limits the file entries listed\n// include child entries if a dir is included\nconst filesFilter = (opt, files) => {\n const map = new Map(files.map(f => [f.replace(/\\/+$/, ''), true]))\n const filter = opt.filter\n\n const mapHas = (file, r) => {\n const root = r || path.parse(file).root || '.'\n const ret = file === root ? false\n : map.has(file) ? map.get(file)\n : mapHas(path.dirname(file), root)\n\n map.set(file, ret)\n return ret\n }\n\n opt.filter = filter\n ? (file, entry) => filter(file, entry) && mapHas(file.replace(/\\/+$/, ''))\n : file => mapHas(file.replace(/\\/+$/, ''))\n}\n\nconst listFileSync = opt => {\n const p = list(opt)\n const file = opt.file\n let threw = true\n let fd\n try {\n const stat = fs.statSync(file)\n const readSize = opt.maxReadSize || 16 * 1024 * 1024\n if (stat.size < readSize)\n p.end(fs.readFileSync(file))\n else {\n let pos = 0\n const buf = Buffer.allocUnsafe(readSize)\n fd = fs.openSync(file, 'r')\n while (pos < stat.size) {\n const bytesRead = fs.readSync(fd, buf, 0, readSize, pos)\n pos += bytesRead\n p.write(buf.slice(0, bytesRead))\n }\n p.end()\n }\n threw = false\n } finally {\n if (threw && fd) {\n try {\n fs.closeSync(fd)\n } catch (er) {}\n }\n }\n}\n\nconst listFile = (opt, cb) => {\n const parse = new Parser(opt)\n const readSize = opt.maxReadSize || 16 * 1024 * 1024\n\n const file = opt.file\n const p = new Promise((resolve, reject) => {\n parse.on('error', reject)\n parse.on('end', resolve)\n\n fs.stat(file, (er, stat) => {\n if (er)\n reject(er)\n else {\n const stream = new fsm.ReadStream(file, {\n readSize: readSize,\n size: stat.size,\n })\n stream.on('error', reject)\n stream.pipe(parse)\n }\n })\n })\n return cb ? p.then(cb, cb) : p\n}\n\nconst list = opt => new Parser(opt)\n", "'use strict'\n\n// tar -c\nconst hlo = require('./high-level-opt.js')\n\nconst Pack = require('./pack.js')\nconst fsm = require('fs-minipass')\nconst t = require('./list.js')\nconst path = require('path')\n\nmodule.exports = (opt_, files, cb) => {\n if (typeof files === 'function')\n cb = files\n\n if (Array.isArray(opt_))\n files = opt_, opt_ = {}\n\n if (!files || !Array.isArray(files) || !files.length)\n throw new TypeError('no files or directories specified')\n\n files = Array.from(files)\n\n const opt = hlo(opt_)\n\n if (opt.sync && typeof cb === 'function')\n throw new TypeError('callback not supported for sync tar functions')\n\n if (!opt.file && typeof cb === 'function')\n throw new TypeError('callback only supported with file option')\n\n return opt.file && opt.sync ? createFileSync(opt, files)\n : opt.file ? createFile(opt, files, cb)\n : opt.sync ? createSync(opt, files)\n : create(opt, files)\n}\n\nconst createFileSync = (opt, files) => {\n const p = new Pack.Sync(opt)\n const stream = new fsm.WriteStreamSync(opt.file, {\n mode: opt.mode || 0o666,\n })\n p.pipe(stream)\n addFilesSync(p, files)\n}\n\nconst createFile = (opt, files, cb) => {\n const p = new Pack(opt)\n const stream = new fsm.WriteStream(opt.file, {\n mode: opt.mode || 0o666,\n })\n p.pipe(stream)\n\n const promise = new Promise((res, rej) => {\n stream.on('error', rej)\n stream.on('close', res)\n p.on('error', rej)\n })\n\n addFilesAsync(p, files)\n\n return cb ? promise.then(cb, cb) : promise\n}\n\nconst addFilesSync = (p, files) => {\n files.forEach(file => {\n if (file.charAt(0) === '@') {\n t({\n file: path.resolve(p.cwd, file.substr(1)),\n sync: true,\n noResume: true,\n onentry: entry => p.add(entry),\n })\n } else\n p.add(file)\n })\n p.end()\n}\n\nconst addFilesAsync = (p, files) => {\n while (files.length) {\n const file = files.shift()\n if (file.charAt(0) === '@') {\n return t({\n file: path.resolve(p.cwd, file.substr(1)),\n noResume: true,\n onentry: entry => p.add(entry),\n }).then(_ => addFilesAsync(p, files))\n } else\n p.add(file)\n }\n p.end()\n}\n\nconst createSync = (opt, files) => {\n const p = new Pack.Sync(opt)\n addFilesSync(p, files)\n return p\n}\n\nconst create = (opt, files) => {\n const p = new Pack(opt)\n addFilesAsync(p, files)\n return p\n}\n", "'use strict'\n\n// tar -r\nconst hlo = require('./high-level-opt.js')\nconst Pack = require('./pack.js')\nconst fs = require('fs')\nconst fsm = require('fs-minipass')\nconst t = require('./list.js')\nconst path = require('path')\n\n// starting at the head of the file, read a Header\n// If the checksum is invalid, that's our position to start writing\n// If it is, jump forward by the specified size (round up to 512)\n// and try again.\n// Write the new Pack stream starting there.\n\nconst Header = require('./header.js')\n\nmodule.exports = (opt_, files, cb) => {\n const opt = hlo(opt_)\n\n if (!opt.file)\n throw new TypeError('file is required')\n\n if (opt.gzip)\n throw new TypeError('cannot append to compressed archives')\n\n if (!files || !Array.isArray(files) || !files.length)\n throw new TypeError('no files or directories specified')\n\n files = Array.from(files)\n\n return opt.sync ? replaceSync(opt, files)\n : replace(opt, files, cb)\n}\n\nconst replaceSync = (opt, files) => {\n const p = new Pack.Sync(opt)\n\n let threw = true\n let fd\n let position\n\n try {\n try {\n fd = fs.openSync(opt.file, 'r+')\n } catch (er) {\n if (er.code === 'ENOENT')\n fd = fs.openSync(opt.file, 'w+')\n else\n throw er\n }\n\n const st = fs.fstatSync(fd)\n const headBuf = Buffer.alloc(512)\n\n POSITION: for (position = 0; position < st.size; position += 512) {\n for (let bufPos = 0, bytes = 0; bufPos < 512; bufPos += bytes) {\n bytes = fs.readSync(\n fd, headBuf, bufPos, headBuf.length - bufPos, position + bufPos\n )\n\n if (position === 0 && headBuf[0] === 0x1f && headBuf[1] === 0x8b)\n throw new Error('cannot append to compressed archives')\n\n if (!bytes)\n break POSITION\n }\n\n const h = new Header(headBuf)\n if (!h.cksumValid)\n break\n const entryBlockSize = 512 * Math.ceil(h.size / 512)\n if (position + entryBlockSize + 512 > st.size)\n break\n // the 512 for the header we just parsed will be added as well\n // also jump ahead all the blocks for the body\n position += entryBlockSize\n if (opt.mtimeCache)\n opt.mtimeCache.set(h.path, h.mtime)\n }\n threw = false\n\n streamSync(opt, p, position, fd, files)\n } finally {\n if (threw) {\n try {\n fs.closeSync(fd)\n } catch (er) {}\n }\n }\n}\n\nconst streamSync = (opt, p, position, fd, files) => {\n const stream = new fsm.WriteStreamSync(opt.file, {\n fd: fd,\n start: position,\n })\n p.pipe(stream)\n addFilesSync(p, files)\n}\n\nconst replace = (opt, files, cb) => {\n files = Array.from(files)\n const p = new Pack(opt)\n\n const getPos = (fd, size, cb_) => {\n const cb = (er, pos) => {\n if (er)\n fs.close(fd, _ => cb_(er))\n else\n cb_(null, pos)\n }\n\n let position = 0\n if (size === 0)\n return cb(null, 0)\n\n let bufPos = 0\n const headBuf = Buffer.alloc(512)\n const onread = (er, bytes) => {\n if (er)\n return cb(er)\n bufPos += bytes\n if (bufPos < 512 && bytes) {\n return fs.read(\n fd, headBuf, bufPos, headBuf.length - bufPos,\n position + bufPos, onread\n )\n }\n\n if (position === 0 && headBuf[0] === 0x1f && headBuf[1] === 0x8b)\n return cb(new Error('cannot append to compressed archives'))\n\n // truncated header\n if (bufPos < 512)\n return cb(null, position)\n\n const h = new Header(headBuf)\n if (!h.cksumValid)\n return cb(null, position)\n\n const entryBlockSize = 512 * Math.ceil(h.size / 512)\n if (position + entryBlockSize + 512 > size)\n return cb(null, position)\n\n position += entryBlockSize + 512\n if (position >= size)\n return cb(null, position)\n\n if (opt.mtimeCache)\n opt.mtimeCache.set(h.path, h.mtime)\n bufPos = 0\n fs.read(fd, headBuf, 0, 512, position, onread)\n }\n fs.read(fd, headBuf, 0, 512, position, onread)\n }\n\n const promise = new Promise((resolve, reject) => {\n p.on('error', reject)\n let flag = 'r+'\n const onopen = (er, fd) => {\n if (er && er.code === 'ENOENT' && flag === 'r+') {\n flag = 'w+'\n return fs.open(opt.file, flag, onopen)\n }\n\n if (er)\n return reject(er)\n\n fs.fstat(fd, (er, st) => {\n if (er)\n return reject(er)\n getPos(fd, st.size, (er, position) => {\n if (er)\n return reject(er)\n const stream = new fsm.WriteStream(opt.file, {\n fd: fd,\n start: position,\n })\n p.pipe(stream)\n stream.on('error', reject)\n stream.on('close', resolve)\n addFilesAsync(p, files)\n })\n })\n }\n fs.open(opt.file, flag, onopen)\n })\n\n return cb ? promise.then(cb, cb) : promise\n}\n\nconst addFilesSync = (p, files) => {\n files.forEach(file => {\n if (file.charAt(0) === '@') {\n t({\n file: path.resolve(p.cwd, file.substr(1)),\n sync: true,\n noResume: true,\n onentry: entry => p.add(entry),\n })\n } else\n p.add(file)\n })\n p.end()\n}\n\nconst addFilesAsync = (p, files) => {\n while (files.length) {\n const file = files.shift()\n if (file.charAt(0) === '@') {\n return t({\n file: path.resolve(p.cwd, file.substr(1)),\n noResume: true,\n onentry: entry => p.add(entry),\n }).then(_ => addFilesAsync(p, files))\n } else\n p.add(file)\n }\n p.end()\n}\n", "'use strict'\n\n// tar -u\n\nconst hlo = require('./high-level-opt.js')\nconst r = require('./replace.js')\n// just call tar.r with the filter and mtimeCache\n\nmodule.exports = (opt_, files, cb) => {\n const opt = hlo(opt_)\n\n if (!opt.file)\n throw new TypeError('file is required')\n\n if (opt.gzip)\n throw new TypeError('cannot append to compressed archives')\n\n if (!files || !Array.isArray(files) || !files.length)\n throw new TypeError('no files or directories specified')\n\n files = Array.from(files)\n\n mtimeFilter(opt)\n return r(opt, files, cb)\n}\n\nconst mtimeFilter = opt => {\n const filter = opt.filter\n\n if (!opt.mtimeCache)\n opt.mtimeCache = new Map()\n\n opt.filter = filter ? (path, stat) =>\n filter(path, stat) && !(opt.mtimeCache.get(path) > stat.mtime)\n : (path, stat) => !(opt.mtimeCache.get(path) > stat.mtime)\n}\n", "const { promisify } = require('util')\nconst fs = require('fs')\nconst optsArg = opts => {\n if (!opts)\n opts = { mode: 0o777, fs }\n else if (typeof opts === 'object')\n opts = { mode: 0o777, fs, ...opts }\n else if (typeof opts === 'number')\n opts = { mode: opts, fs }\n else if (typeof opts === 'string')\n opts = { mode: parseInt(opts, 8), fs }\n else\n throw new TypeError('invalid options argument')\n\n opts.mkdir = opts.mkdir || opts.fs.mkdir || fs.mkdir\n opts.mkdirAsync = promisify(opts.mkdir)\n opts.stat = opts.stat || opts.fs.stat || fs.stat\n opts.statAsync = promisify(opts.stat)\n opts.statSync = opts.statSync || opts.fs.statSync || fs.statSync\n opts.mkdirSync = opts.mkdirSync || opts.fs.mkdirSync || fs.mkdirSync\n return opts\n}\nmodule.exports = optsArg\n", "const platform = process.env.__TESTING_MKDIRP_PLATFORM__ || process.platform\nconst { resolve, parse } = require('path')\nconst pathArg = path => {\n if (/\\0/.test(path)) {\n // simulate same failure that node raises\n throw Object.assign(\n new TypeError('path must be a string without null bytes'),\n {\n path,\n code: 'ERR_INVALID_ARG_VALUE',\n }\n )\n }\n\n path = resolve(path)\n if (platform === 'win32') {\n const badWinChars = /[*|\"<>?:]/\n const {root} = parse(path)\n if (badWinChars.test(path.substr(root.length))) {\n throw Object.assign(new Error('Illegal characters in path.'), {\n path,\n code: 'EINVAL',\n })\n }\n }\n\n return path\n}\nmodule.exports = pathArg\n", "const {dirname} = require('path')\n\nconst findMade = (opts, parent, path = undefined) => {\n // we never want the 'made' return value to be a root directory\n if (path === parent)\n return Promise.resolve()\n\n return opts.statAsync(parent).then(\n st => st.isDirectory() ? path : undefined, // will fail later\n er => er.code === 'ENOENT'\n ? findMade(opts, dirname(parent), parent)\n : undefined\n )\n}\n\nconst findMadeSync = (opts, parent, path = undefined) => {\n if (path === parent)\n return undefined\n\n try {\n return opts.statSync(parent).isDirectory() ? path : undefined\n } catch (er) {\n return er.code === 'ENOENT'\n ? findMadeSync(opts, dirname(parent), parent)\n : undefined\n }\n}\n\nmodule.exports = {findMade, findMadeSync}\n", "const {dirname} = require('path')\n\nconst mkdirpManual = (path, opts, made) => {\n opts.recursive = false\n const parent = dirname(path)\n if (parent === path) {\n return opts.mkdirAsync(path, opts).catch(er => {\n // swallowed by recursive implementation on posix systems\n // any other error is a failure\n if (er.code !== 'EISDIR')\n throw er\n })\n }\n\n return opts.mkdirAsync(path, opts).then(() => made || path, er => {\n if (er.code === 'ENOENT')\n return mkdirpManual(parent, opts)\n .then(made => mkdirpManual(path, opts, made))\n if (er.code !== 'EEXIST' && er.code !== 'EROFS')\n throw er\n return opts.statAsync(path).then(st => {\n if (st.isDirectory())\n return made\n else\n throw er\n }, () => { throw er })\n })\n}\n\nconst mkdirpManualSync = (path, opts, made) => {\n const parent = dirname(path)\n opts.recursive = false\n\n if (parent === path) {\n try {\n return opts.mkdirSync(path, opts)\n } catch (er) {\n // swallowed by recursive implementation on posix systems\n // any other error is a failure\n if (er.code !== 'EISDIR')\n throw er\n else\n return\n }\n }\n\n try {\n opts.mkdirSync(path, opts)\n return made || path\n } catch (er) {\n if (er.code === 'ENOENT')\n return mkdirpManualSync(path, opts, mkdirpManualSync(parent, opts, made))\n if (er.code !== 'EEXIST' && er.code !== 'EROFS')\n throw er\n try {\n if (!opts.statSync(path).isDirectory())\n throw er\n } catch (_) {\n throw er\n }\n }\n}\n\nmodule.exports = {mkdirpManual, mkdirpManualSync}\n", "const {dirname} = require('path')\nconst {findMade, findMadeSync} = require('./find-made.js')\nconst {mkdirpManual, mkdirpManualSync} = require('./mkdirp-manual.js')\n\nconst mkdirpNative = (path, opts) => {\n opts.recursive = true\n const parent = dirname(path)\n if (parent === path)\n return opts.mkdirAsync(path, opts)\n\n return findMade(opts, path).then(made =>\n opts.mkdirAsync(path, opts).then(() => made)\n .catch(er => {\n if (er.code === 'ENOENT')\n return mkdirpManual(path, opts)\n else\n throw er\n }))\n}\n\nconst mkdirpNativeSync = (path, opts) => {\n opts.recursive = true\n const parent = dirname(path)\n if (parent === path)\n return opts.mkdirSync(path, opts)\n\n const made = findMadeSync(opts, path)\n try {\n opts.mkdirSync(path, opts)\n return made\n } catch (er) {\n if (er.code === 'ENOENT')\n return mkdirpManualSync(path, opts)\n else\n throw er\n }\n}\n\nmodule.exports = {mkdirpNative, mkdirpNativeSync}\n", "const fs = require('fs')\n\nconst version = process.env.__TESTING_MKDIRP_NODE_VERSION__ || process.version\nconst versArr = version.replace(/^v/, '').split('.')\nconst hasNative = +versArr[0] > 10 || +versArr[0] === 10 && +versArr[1] >= 12\n\nconst useNative = !hasNative ? () => false : opts => opts.mkdir === fs.mkdir\nconst useNativeSync = !hasNative ? () => false : opts => opts.mkdirSync === fs.mkdirSync\n\nmodule.exports = {useNative, useNativeSync}\n", "const optsArg = require('./lib/opts-arg.js')\nconst pathArg = require('./lib/path-arg.js')\n\nconst {mkdirpNative, mkdirpNativeSync} = require('./lib/mkdirp-native.js')\nconst {mkdirpManual, mkdirpManualSync} = require('./lib/mkdirp-manual.js')\nconst {useNative, useNativeSync} = require('./lib/use-native.js')\n\n\nconst mkdirp = (path, opts) => {\n path = pathArg(path)\n opts = optsArg(opts)\n return useNative(opts)\n ? mkdirpNative(path, opts)\n : mkdirpManual(path, opts)\n}\n\nconst mkdirpSync = (path, opts) => {\n path = pathArg(path)\n opts = optsArg(opts)\n return useNativeSync(opts)\n ? mkdirpNativeSync(path, opts)\n : mkdirpManualSync(path, opts)\n}\n\nmkdirp.sync = mkdirpSync\nmkdirp.native = (path, opts) => mkdirpNative(pathArg(path), optsArg(opts))\nmkdirp.manual = (path, opts) => mkdirpManual(pathArg(path), optsArg(opts))\nmkdirp.nativeSync = (path, opts) => mkdirpNativeSync(pathArg(path), optsArg(opts))\nmkdirp.manualSync = (path, opts) => mkdirpManualSync(pathArg(path), optsArg(opts))\n\nmodule.exports = mkdirp\n", "'use strict'\nconst fs = require('fs')\nconst path = require('path')\n\n/* istanbul ignore next */\nconst LCHOWN = fs.lchown ? 'lchown' : 'chown'\n/* istanbul ignore next */\nconst LCHOWNSYNC = fs.lchownSync ? 'lchownSync' : 'chownSync'\n\n/* istanbul ignore next */\nconst needEISDIRHandled = fs.lchown &&\n !process.version.match(/v1[1-9]+\\./) &&\n !process.version.match(/v10\\.[6-9]/)\n\nconst lchownSync = (path, uid, gid) => {\n try {\n return fs[LCHOWNSYNC](path, uid, gid)\n } catch (er) {\n if (er.code !== 'ENOENT')\n throw er\n }\n}\n\n/* istanbul ignore next */\nconst chownSync = (path, uid, gid) => {\n try {\n return fs.chownSync(path, uid, gid)\n } catch (er) {\n if (er.code !== 'ENOENT')\n throw er\n }\n}\n\n/* istanbul ignore next */\nconst handleEISDIR =\n needEISDIRHandled ? (path, uid, gid, cb) => er => {\n // Node prior to v10 had a very questionable implementation of\n // fs.lchown, which would always try to call fs.open on a directory\n // Fall back to fs.chown in those cases.\n if (!er || er.code !== 'EISDIR')\n cb(er)\n else\n fs.chown(path, uid, gid, cb)\n }\n : (_, __, ___, cb) => cb\n\n/* istanbul ignore next */\nconst handleEISDirSync =\n needEISDIRHandled ? (path, uid, gid) => {\n try {\n return lchownSync(path, uid, gid)\n } catch (er) {\n if (er.code !== 'EISDIR')\n throw er\n chownSync(path, uid, gid)\n }\n }\n : (path, uid, gid) => lchownSync(path, uid, gid)\n\n// fs.readdir could only accept an options object as of node v6\nconst nodeVersion = process.version\nlet readdir = (path, options, cb) => fs.readdir(path, options, cb)\nlet readdirSync = (path, options) => fs.readdirSync(path, options)\n/* istanbul ignore next */\nif (/^v4\\./.test(nodeVersion))\n readdir = (path, options, cb) => fs.readdir(path, cb)\n\nconst chown = (cpath, uid, gid, cb) => {\n fs[LCHOWN](cpath, uid, gid, handleEISDIR(cpath, uid, gid, er => {\n // Skip ENOENT error\n cb(er && er.code !== 'ENOENT' ? er : null)\n }))\n}\n\nconst chownrKid = (p, child, uid, gid, cb) => {\n if (typeof child === 'string')\n return fs.lstat(path.resolve(p, child), (er, stats) => {\n // Skip ENOENT error\n if (er)\n return cb(er.code !== 'ENOENT' ? er : null)\n stats.name = child\n chownrKid(p, stats, uid, gid, cb)\n })\n\n if (child.isDirectory()) {\n chownr(path.resolve(p, child.name), uid, gid, er => {\n if (er)\n return cb(er)\n const cpath = path.resolve(p, child.name)\n chown(cpath, uid, gid, cb)\n })\n } else {\n const cpath = path.resolve(p, child.name)\n chown(cpath, uid, gid, cb)\n }\n}\n\n\nconst chownr = (p, uid, gid, cb) => {\n readdir(p, { withFileTypes: true }, (er, children) => {\n // any error other than ENOTDIR or ENOTSUP means it's not readable,\n // or doesn't exist. give up.\n if (er) {\n if (er.code === 'ENOENT')\n return cb()\n else if (er.code !== 'ENOTDIR' && er.code !== 'ENOTSUP')\n return cb(er)\n }\n if (er || !children.length)\n return chown(p, uid, gid, cb)\n\n let len = children.length\n let errState = null\n const then = er => {\n if (errState)\n return\n if (er)\n return cb(errState = er)\n if (-- len === 0)\n return chown(p, uid, gid, cb)\n }\n\n children.forEach(child => chownrKid(p, child, uid, gid, then))\n })\n}\n\nconst chownrKidSync = (p, child, uid, gid) => {\n if (typeof child === 'string') {\n try {\n const stats = fs.lstatSync(path.resolve(p, child))\n stats.name = child\n child = stats\n } catch (er) {\n if (er.code === 'ENOENT')\n return\n else\n throw er\n }\n }\n\n if (child.isDirectory())\n chownrSync(path.resolve(p, child.name), uid, gid)\n\n handleEISDirSync(path.resolve(p, child.name), uid, gid)\n}\n\nconst chownrSync = (p, uid, gid) => {\n let children\n try {\n children = readdirSync(p, { withFileTypes: true })\n } catch (er) {\n if (er.code === 'ENOENT')\n return\n else if (er.code === 'ENOTDIR' || er.code === 'ENOTSUP')\n return handleEISDirSync(p, uid, gid)\n else\n throw er\n }\n\n if (children && children.length)\n children.forEach(child => chownrKidSync(p, child, uid, gid))\n\n return handleEISDirSync(p, uid, gid)\n}\n\nmodule.exports = chownr\nchownr.sync = chownrSync\n", "'use strict'\n// wrapper around mkdirp for tar's needs.\n\n// TODO: This should probably be a class, not functionally\n// passing around state in a gazillion args.\n\nconst mkdirp = require('mkdirp')\nconst fs = require('fs')\nconst path = require('path')\nconst chownr = require('chownr')\n\nclass SymlinkError extends Error {\n constructor (symlink, path) {\n super('Cannot extract through symbolic link')\n this.path = path\n this.symlink = symlink\n }\n\n get name () {\n return 'SylinkError'\n }\n}\n\nclass CwdError extends Error {\n constructor (path, code) {\n super(code + ': Cannot cd into \\'' + path + '\\'')\n this.path = path\n this.code = code\n }\n\n get name () {\n return 'CwdError'\n }\n}\n\nmodule.exports = (dir, opt, cb) => {\n // if there's any overlap between mask and mode,\n // then we'll need an explicit chmod\n const umask = opt.umask\n const mode = opt.mode | 0o0700\n const needChmod = (mode & umask) !== 0\n\n const uid = opt.uid\n const gid = opt.gid\n const doChown = typeof uid === 'number' &&\n typeof gid === 'number' &&\n (uid !== opt.processUid || gid !== opt.processGid)\n\n const preserve = opt.preserve\n const unlink = opt.unlink\n const cache = opt.cache\n const cwd = opt.cwd\n\n const done = (er, created) => {\n if (er)\n cb(er)\n else {\n cache.set(dir, true)\n if (created && doChown)\n chownr(created, uid, gid, er => done(er))\n else if (needChmod)\n fs.chmod(dir, mode, cb)\n else\n cb()\n }\n }\n\n if (cache && cache.get(dir) === true)\n return done()\n\n if (dir === cwd) {\n return fs.stat(dir, (er, st) => {\n if (er || !st.isDirectory())\n er = new CwdError(dir, er && er.code || 'ENOTDIR')\n done(er)\n })\n }\n\n if (preserve)\n return mkdirp(dir, {mode}).then(made => done(null, made), done)\n\n const sub = path.relative(cwd, dir)\n const parts = sub.split(/\\/|\\\\/)\n mkdir_(cwd, parts, mode, cache, unlink, cwd, null, done)\n}\n\nconst mkdir_ = (base, parts, mode, cache, unlink, cwd, created, cb) => {\n if (!parts.length)\n return cb(null, created)\n const p = parts.shift()\n const part = base + '/' + p\n if (cache.get(part))\n return mkdir_(part, parts, mode, cache, unlink, cwd, created, cb)\n fs.mkdir(part, mode, onmkdir(part, parts, mode, cache, unlink, cwd, created, cb))\n}\n\nconst onmkdir = (part, parts, mode, cache, unlink, cwd, created, cb) => er => {\n if (er) {\n if (er.path && path.dirname(er.path) === cwd &&\n (er.code === 'ENOTDIR' || er.code === 'ENOENT'))\n return cb(new CwdError(cwd, er.code))\n\n fs.lstat(part, (statEr, st) => {\n if (statEr)\n cb(statEr)\n else if (st.isDirectory())\n mkdir_(part, parts, mode, cache, unlink, cwd, created, cb)\n else if (unlink) {\n fs.unlink(part, er => {\n if (er)\n return cb(er)\n fs.mkdir(part, mode, onmkdir(part, parts, mode, cache, unlink, cwd, created, cb))\n })\n } else if (st.isSymbolicLink())\n return cb(new SymlinkError(part, part + '/' + parts.join('/')))\n else\n cb(er)\n })\n } else {\n created = created || part\n mkdir_(part, parts, mode, cache, unlink, cwd, created, cb)\n }\n}\n\nmodule.exports.sync = (dir, opt) => {\n // if there's any overlap between mask and mode,\n // then we'll need an explicit chmod\n const umask = opt.umask\n const mode = opt.mode | 0o0700\n const needChmod = (mode & umask) !== 0\n\n const uid = opt.uid\n const gid = opt.gid\n const doChown = typeof uid === 'number' &&\n typeof gid === 'number' &&\n (uid !== opt.processUid || gid !== opt.processGid)\n\n const preserve = opt.preserve\n const unlink = opt.unlink\n const cache = opt.cache\n const cwd = opt.cwd\n\n const done = (created) => {\n cache.set(dir, true)\n if (created && doChown)\n chownr.sync(created, uid, gid)\n if (needChmod)\n fs.chmodSync(dir, mode)\n }\n\n if (cache && cache.get(dir) === true)\n return done()\n\n if (dir === cwd) {\n let ok = false\n let code = 'ENOTDIR'\n try {\n ok = fs.statSync(dir).isDirectory()\n } catch (er) {\n code = er.code\n } finally {\n if (!ok)\n throw new CwdError(dir, code)\n }\n done()\n return\n }\n\n if (preserve)\n return done(mkdirp.sync(dir, mode))\n\n const sub = path.relative(cwd, dir)\n const parts = sub.split(/\\/|\\\\/)\n let created = null\n for (let p = parts.shift(), part = cwd;\n p && (part += '/' + p);\n p = parts.shift()) {\n if (cache.get(part))\n continue\n\n try {\n fs.mkdirSync(part, mode)\n created = created || part\n cache.set(part, true)\n } catch (er) {\n if (er.path && path.dirname(er.path) === cwd &&\n (er.code === 'ENOTDIR' || er.code === 'ENOENT'))\n return new CwdError(cwd, er.code)\n\n const st = fs.lstatSync(part)\n if (st.isDirectory()) {\n cache.set(part, true)\n continue\n } else if (unlink) {\n fs.unlinkSync(part)\n fs.mkdirSync(part, mode)\n created = created || part\n cache.set(part, true)\n continue\n } else if (st.isSymbolicLink())\n return new SymlinkError(part, part + '/' + parts.join('/'))\n }\n }\n\n return done(created)\n}\n", "// A path exclusive reservation system\n// reserve([list, of, paths], fn)\n// When the fn is first in line for all its paths, it\n// is called with a cb that clears the reservation.\n//\n// Used by async unpack to avoid clobbering paths in use,\n// while still allowing maximal safe parallelization.\n\nconst assert = require('assert')\n\nmodule.exports = () => {\n // path => [function or Set]\n // A Set object means a directory reservation\n // A fn is a direct reservation on that path\n const queues = new Map()\n\n // fn => {paths:[path,...], dirs:[path, ...]}\n const reservations = new Map()\n\n // return a set of parent dirs for a given path\n const { join } = require('path')\n const getDirs = path =>\n join(path).split(/[\\\\/]/).slice(0, -1).reduce((set, path) =>\n set.length ? set.concat(join(set[set.length - 1], path)) : [path], [])\n\n // functions currently running\n const running = new Set()\n\n // return the queues for each path the function cares about\n // fn => {paths, dirs}\n const getQueues = fn => {\n const res = reservations.get(fn)\n /* istanbul ignore if - unpossible */\n if (!res)\n throw new Error('function does not have any path reservations')\n return {\n paths: res.paths.map(path => queues.get(path)),\n dirs: [...res.dirs].map(path => queues.get(path)),\n }\n }\n\n // check if fn is first in line for all its paths, and is\n // included in the first set for all its dir queues\n const check = fn => {\n const {paths, dirs} = getQueues(fn)\n return paths.every(q => q[0] === fn) &&\n dirs.every(q => q[0] instanceof Set && q[0].has(fn))\n }\n\n // run the function if it's first in line and not already running\n const run = fn => {\n if (running.has(fn) || !check(fn))\n return false\n running.add(fn)\n fn(() => clear(fn))\n return true\n }\n\n const clear = fn => {\n if (!running.has(fn))\n return false\n\n const { paths, dirs } = reservations.get(fn)\n const next = new Set()\n\n paths.forEach(path => {\n const q = queues.get(path)\n assert.equal(q[0], fn)\n if (q.length === 1)\n queues.delete(path)\n else {\n q.shift()\n if (typeof q[0] === 'function')\n next.add(q[0])\n else\n q[0].forEach(fn => next.add(fn))\n }\n })\n\n dirs.forEach(dir => {\n const q = queues.get(dir)\n assert(q[0] instanceof Set)\n if (q[0].size === 1 && q.length === 1)\n queues.delete(dir)\n else if (q[0].size === 1) {\n q.shift()\n\n // must be a function or else the Set would've been reused\n next.add(q[0])\n } else\n q[0].delete(fn)\n })\n running.delete(fn)\n\n next.forEach(fn => run(fn))\n return true\n }\n\n const reserve = (paths, fn) => {\n const dirs = new Set(\n paths.map(path => getDirs(path)).reduce((a, b) => a.concat(b))\n )\n reservations.set(fn, {dirs, paths})\n paths.forEach(path => {\n const q = queues.get(path)\n if (!q)\n queues.set(path, [fn])\n else\n q.push(fn)\n })\n dirs.forEach(dir => {\n const q = queues.get(dir)\n if (!q)\n queues.set(dir, [new Set([fn])])\n else if (q[q.length - 1] instanceof Set)\n q[q.length - 1].add(fn)\n else\n q.push(new Set([fn]))\n })\n\n return run(fn)\n }\n\n return { check, reserve }\n}\n", "// Get the appropriate flag to use for creating files\n// We use fmap on Windows platforms for files less than\n// 512kb. This is a fairly low limit, but avoids making\n// things slower in some cases. Since most of what this\n// library is used for is extracting tarballs of many\n// relatively small files in npm packages and the like,\n// it can be a big boost on Windows platforms.\n// Only supported in Node v12.9.0 and above.\nconst platform = process.env.__FAKE_PLATFORM__ || process.platform\nconst isWindows = platform === 'win32'\nconst fs = global.__FAKE_TESTING_FS__ || require('fs')\n\n/* istanbul ignore next */\nconst { O_CREAT, O_TRUNC, O_WRONLY, UV_FS_O_FILEMAP = 0 } = fs.constants\n\nconst fMapEnabled = isWindows && !!UV_FS_O_FILEMAP\nconst fMapLimit = 512 * 1024\nconst fMapFlag = UV_FS_O_FILEMAP | O_TRUNC | O_CREAT | O_WRONLY\nmodule.exports = !fMapEnabled ? () => 'w'\n : size => size < fMapLimit ? fMapFlag : 'w'\n", "'use strict'\n\n// the PEND/UNPEND stuff tracks whether we're ready to emit end/close yet.\n// but the path reservations are required to avoid race conditions where\n// parallelized unpack ops may mess with one another, due to dependencies\n// (like a Link depending on its target) or destructive operations (like\n// clobbering an fs object to create one of a different type.)\n\nconst assert = require('assert')\nconst Parser = require('./parse.js')\nconst fs = require('fs')\nconst fsm = require('fs-minipass')\nconst path = require('path')\nconst mkdir = require('./mkdir.js')\nconst wc = require('./winchars.js')\nconst pathReservations = require('./path-reservations.js')\n\nconst ONENTRY = Symbol('onEntry')\nconst CHECKFS = Symbol('checkFs')\nconst CHECKFS2 = Symbol('checkFs2')\nconst ISREUSABLE = Symbol('isReusable')\nconst MAKEFS = Symbol('makeFs')\nconst FILE = Symbol('file')\nconst DIRECTORY = Symbol('directory')\nconst LINK = Symbol('link')\nconst SYMLINK = Symbol('symlink')\nconst HARDLINK = Symbol('hardlink')\nconst UNSUPPORTED = Symbol('unsupported')\nconst CHECKPATH = Symbol('checkPath')\nconst MKDIR = Symbol('mkdir')\nconst ONERROR = Symbol('onError')\nconst PENDING = Symbol('pending')\nconst PEND = Symbol('pend')\nconst UNPEND = Symbol('unpend')\nconst ENDED = Symbol('ended')\nconst MAYBECLOSE = Symbol('maybeClose')\nconst SKIP = Symbol('skip')\nconst DOCHOWN = Symbol('doChown')\nconst UID = Symbol('uid')\nconst GID = Symbol('gid')\nconst crypto = require('crypto')\nconst getFlag = require('./get-write-flag.js')\n\n/* istanbul ignore next */\nconst neverCalled = () => {\n throw new Error('sync function called cb somehow?!?')\n}\n\n// Unlinks on Windows are not atomic.\n//\n// This means that if you have a file entry, followed by another\n// file entry with an identical name, and you cannot re-use the file\n// (because it's a hardlink, or because unlink:true is set, or it's\n// Windows, which does not have useful nlink values), then the unlink\n// will be committed to the disk AFTER the new file has been written\n// over the old one, deleting the new file.\n//\n// To work around this, on Windows systems, we rename the file and then\n// delete the renamed file. It's a sloppy kludge, but frankly, I do not\n// know of a better way to do this, given windows' non-atomic unlink\n// semantics.\n//\n// See: https://github.com/npm/node-tar/issues/183\n/* istanbul ignore next */\nconst unlinkFile = (path, cb) => {\n if (process.platform !== 'win32')\n return fs.unlink(path, cb)\n\n const name = path + '.DELETE.' + crypto.randomBytes(16).toString('hex')\n fs.rename(path, name, er => {\n if (er)\n return cb(er)\n fs.unlink(name, cb)\n })\n}\n\n/* istanbul ignore next */\nconst unlinkFileSync = path => {\n if (process.platform !== 'win32')\n return fs.unlinkSync(path)\n\n const name = path + '.DELETE.' + crypto.randomBytes(16).toString('hex')\n fs.renameSync(path, name)\n fs.unlinkSync(name)\n}\n\n// this.gid, entry.gid, this.processUid\nconst uint32 = (a, b, c) =>\n a === a >>> 0 ? a\n : b === b >>> 0 ? b\n : c\n\nclass Unpack extends Parser {\n constructor (opt) {\n if (!opt)\n opt = {}\n\n opt.ondone = _ => {\n this[ENDED] = true\n this[MAYBECLOSE]()\n }\n\n super(opt)\n\n this.reservations = pathReservations()\n\n this.transform = typeof opt.transform === 'function' ? opt.transform : null\n\n this.writable = true\n this.readable = false\n\n this[PENDING] = 0\n this[ENDED] = false\n\n this.dirCache = opt.dirCache || new Map()\n\n if (typeof opt.uid === 'number' || typeof opt.gid === 'number') {\n // need both or neither\n if (typeof opt.uid !== 'number' || typeof opt.gid !== 'number')\n throw new TypeError('cannot set owner without number uid and gid')\n if (opt.preserveOwner) {\n throw new TypeError(\n 'cannot preserve owner in archive and also set owner explicitly')\n }\n this.uid = opt.uid\n this.gid = opt.gid\n this.setOwner = true\n } else {\n this.uid = null\n this.gid = null\n this.setOwner = false\n }\n\n // default true for root\n if (opt.preserveOwner === undefined && typeof opt.uid !== 'number')\n this.preserveOwner = process.getuid && process.getuid() === 0\n else\n this.preserveOwner = !!opt.preserveOwner\n\n this.processUid = (this.preserveOwner || this.setOwner) && process.getuid ?\n process.getuid() : null\n this.processGid = (this.preserveOwner || this.setOwner) && process.getgid ?\n process.getgid() : null\n\n // mostly just for testing, but useful in some cases.\n // Forcibly trigger a chown on every entry, no matter what\n this.forceChown = opt.forceChown === true\n\n // turn > this[ONENTRY](entry))\n }\n\n // a bad or damaged archive is a warning for Parser, but an error\n // when extracting. Mark those errors as unrecoverable, because\n // the Unpack contract cannot be met.\n warn (code, msg, data = {}) {\n if (code === 'TAR_BAD_ARCHIVE' || code === 'TAR_ABORT')\n data.recoverable = false\n return super.warn(code, msg, data)\n }\n\n [MAYBECLOSE] () {\n if (this[ENDED] && this[PENDING] === 0) {\n this.emit('prefinish')\n this.emit('finish')\n this.emit('end')\n this.emit('close')\n }\n }\n\n [CHECKPATH] (entry) {\n if (this.strip) {\n const parts = entry.path.split(/\\/|\\\\/)\n if (parts.length < this.strip)\n return false\n entry.path = parts.slice(this.strip).join('/')\n\n if (entry.type === 'Link') {\n const linkparts = entry.linkpath.split(/\\/|\\\\/)\n if (linkparts.length >= this.strip)\n entry.linkpath = linkparts.slice(this.strip).join('/')\n }\n }\n\n if (!this.preservePaths) {\n const p = entry.path\n if (p.match(/(^|\\/|\\\\)\\.\\.(\\\\|\\/|$)/)) {\n this.warn('TAR_ENTRY_ERROR', `path contains '..'`, {\n entry,\n path: p,\n })\n return false\n }\n\n // absolutes on posix are also absolutes on win32\n // so we only need to test this one to get both\n if (path.win32.isAbsolute(p)) {\n const parsed = path.win32.parse(p)\n entry.path = p.substr(parsed.root.length)\n const r = parsed.root\n this.warn('TAR_ENTRY_INFO', `stripping ${r} from absolute path`, {\n entry,\n path: p,\n })\n }\n }\n\n // only encode : chars that aren't drive letter indicators\n if (this.win32) {\n const parsed = path.win32.parse(entry.path)\n entry.path = parsed.root === '' ? wc.encode(entry.path)\n : parsed.root + wc.encode(entry.path.substr(parsed.root.length))\n }\n\n if (path.isAbsolute(entry.path))\n entry.absolute = entry.path\n else\n entry.absolute = path.resolve(this.cwd, entry.path)\n\n return true\n }\n\n [ONENTRY] (entry) {\n if (!this[CHECKPATH](entry))\n return entry.resume()\n\n assert.equal(typeof entry.absolute, 'string')\n\n switch (entry.type) {\n case 'Directory':\n case 'GNUDumpDir':\n if (entry.mode)\n entry.mode = entry.mode | 0o700\n\n case 'File':\n case 'OldFile':\n case 'ContiguousFile':\n case 'Link':\n case 'SymbolicLink':\n return this[CHECKFS](entry)\n\n case 'CharacterDevice':\n case 'BlockDevice':\n case 'FIFO':\n default:\n return this[UNSUPPORTED](entry)\n }\n }\n\n [ONERROR] (er, entry) {\n // Cwd has to exist, or else nothing works. That's serious.\n // Other errors are warnings, which raise the error in strict\n // mode, but otherwise continue on.\n if (er.name === 'CwdError')\n this.emit('error', er)\n else {\n this.warn('TAR_ENTRY_ERROR', er, {entry})\n this[UNPEND]()\n entry.resume()\n }\n }\n\n [MKDIR] (dir, mode, cb) {\n mkdir(dir, {\n uid: this.uid,\n gid: this.gid,\n processUid: this.processUid,\n processGid: this.processGid,\n umask: this.processUmask,\n preserve: this.preservePaths,\n unlink: this.unlink,\n cache: this.dirCache,\n cwd: this.cwd,\n mode: mode,\n noChmod: this.noChmod,\n }, cb)\n }\n\n [DOCHOWN] (entry) {\n // in preserve owner mode, chown if the entry doesn't match process\n // in set owner mode, chown if setting doesn't match process\n return this.forceChown ||\n this.preserveOwner &&\n (typeof entry.uid === 'number' && entry.uid !== this.processUid ||\n typeof entry.gid === 'number' && entry.gid !== this.processGid)\n ||\n (typeof this.uid === 'number' && this.uid !== this.processUid ||\n typeof this.gid === 'number' && this.gid !== this.processGid)\n }\n\n [UID] (entry) {\n return uint32(this.uid, entry.uid, this.processUid)\n }\n\n [GID] (entry) {\n return uint32(this.gid, entry.gid, this.processGid)\n }\n\n [FILE] (entry, fullyDone) {\n const mode = entry.mode & 0o7777 || this.fmode\n const stream = new fsm.WriteStream(entry.absolute, {\n flags: getFlag(entry.size),\n mode: mode,\n autoClose: false,\n })\n stream.on('error', er => this[ONERROR](er, entry))\n\n let actions = 1\n const done = er => {\n if (er)\n return this[ONERROR](er, entry)\n\n if (--actions === 0) {\n fs.close(stream.fd, er => {\n fullyDone()\n er ? this[ONERROR](er, entry) : this[UNPEND]()\n })\n }\n }\n\n stream.on('finish', _ => {\n // if futimes fails, try utimes\n // if utimes fails, fail with the original error\n // same for fchown/chown\n const abs = entry.absolute\n const fd = stream.fd\n\n if (entry.mtime && !this.noMtime) {\n actions++\n const atime = entry.atime || new Date()\n const mtime = entry.mtime\n fs.futimes(fd, atime, mtime, er =>\n er ? fs.utimes(abs, atime, mtime, er2 => done(er2 && er))\n : done())\n }\n\n if (this[DOCHOWN](entry)) {\n actions++\n const uid = this[UID](entry)\n const gid = this[GID](entry)\n fs.fchown(fd, uid, gid, er =>\n er ? fs.chown(abs, uid, gid, er2 => done(er2 && er))\n : done())\n }\n\n done()\n })\n\n const tx = this.transform ? this.transform(entry) || entry : entry\n if (tx !== entry) {\n tx.on('error', er => this[ONERROR](er, entry))\n entry.pipe(tx)\n }\n tx.pipe(stream)\n }\n\n [DIRECTORY] (entry, fullyDone) {\n const mode = entry.mode & 0o7777 || this.dmode\n this[MKDIR](entry.absolute, mode, er => {\n if (er) {\n fullyDone()\n return this[ONERROR](er, entry)\n }\n\n let actions = 1\n const done = _ => {\n if (--actions === 0) {\n fullyDone()\n this[UNPEND]()\n entry.resume()\n }\n }\n\n if (entry.mtime && !this.noMtime) {\n actions++\n fs.utimes(entry.absolute, entry.atime || new Date(), entry.mtime, done)\n }\n\n if (this[DOCHOWN](entry)) {\n actions++\n fs.chown(entry.absolute, this[UID](entry), this[GID](entry), done)\n }\n\n done()\n })\n }\n\n [UNSUPPORTED] (entry) {\n entry.unsupported = true\n this.warn('TAR_ENTRY_UNSUPPORTED',\n `unsupported entry type: ${entry.type}`, {entry})\n entry.resume()\n }\n\n [SYMLINK] (entry, done) {\n this[LINK](entry, entry.linkpath, 'symlink', done)\n }\n\n [HARDLINK] (entry, done) {\n this[LINK](entry, path.resolve(this.cwd, entry.linkpath), 'link', done)\n }\n\n [PEND] () {\n this[PENDING]++\n }\n\n [UNPEND] () {\n this[PENDING]--\n this[MAYBECLOSE]()\n }\n\n [SKIP] (entry) {\n this[UNPEND]()\n entry.resume()\n }\n\n // Check if we can reuse an existing filesystem entry safely and\n // overwrite it, rather than unlinking and recreating\n // Windows doesn't report a useful nlink, so we just never reuse entries\n [ISREUSABLE] (entry, st) {\n return entry.type === 'File' &&\n !this.unlink &&\n st.isFile() &&\n st.nlink <= 1 &&\n process.platform !== 'win32'\n }\n\n // check if a thing is there, and if so, try to clobber it\n [CHECKFS] (entry) {\n this[PEND]()\n const paths = [entry.path]\n if (entry.linkpath)\n paths.push(entry.linkpath)\n this.reservations.reserve(paths, done => this[CHECKFS2](entry, done))\n }\n\n [CHECKFS2] (entry, done) {\n this[MKDIR](path.dirname(entry.absolute), this.dmode, er => {\n if (er) {\n done()\n return this[ONERROR](er, entry)\n }\n fs.lstat(entry.absolute, (er, st) => {\n if (st && (this.keep || this.newer && st.mtime > entry.mtime)) {\n this[SKIP](entry)\n done()\n } else if (er || this[ISREUSABLE](entry, st))\n this[MAKEFS](null, entry, done)\n\n else if (st.isDirectory()) {\n if (entry.type === 'Directory') {\n if (!this.noChmod && (!entry.mode || (st.mode & 0o7777) === entry.mode))\n this[MAKEFS](null, entry, done)\n else {\n fs.chmod(entry.absolute, entry.mode,\n er => this[MAKEFS](er, entry, done))\n }\n } else\n fs.rmdir(entry.absolute, er => this[MAKEFS](er, entry, done))\n } else\n unlinkFile(entry.absolute, er => this[MAKEFS](er, entry, done))\n })\n })\n }\n\n [MAKEFS] (er, entry, done) {\n if (er)\n return this[ONERROR](er, entry)\n\n switch (entry.type) {\n case 'File':\n case 'OldFile':\n case 'ContiguousFile':\n return this[FILE](entry, done)\n\n case 'Link':\n return this[HARDLINK](entry, done)\n\n case 'SymbolicLink':\n return this[SYMLINK](entry, done)\n\n case 'Directory':\n case 'GNUDumpDir':\n return this[DIRECTORY](entry, done)\n }\n }\n\n [LINK] (entry, linkpath, link, done) {\n // XXX: get the type ('file' or 'dir') for windows\n fs[link](linkpath, entry.absolute, er => {\n if (er)\n return this[ONERROR](er, entry)\n done()\n this[UNPEND]()\n entry.resume()\n })\n }\n}\n\nclass UnpackSync extends Unpack {\n [CHECKFS] (entry) {\n const er = this[MKDIR](path.dirname(entry.absolute), this.dmode, neverCalled)\n if (er)\n return this[ONERROR](er, entry)\n try {\n const st = fs.lstatSync(entry.absolute)\n if (this.keep || this.newer && st.mtime > entry.mtime)\n return this[SKIP](entry)\n else if (this[ISREUSABLE](entry, st))\n return this[MAKEFS](null, entry, neverCalled)\n else {\n try {\n if (st.isDirectory()) {\n if (entry.type === 'Directory') {\n if (!this.noChmod && entry.mode && (st.mode & 0o7777) !== entry.mode)\n fs.chmodSync(entry.absolute, entry.mode)\n } else\n fs.rmdirSync(entry.absolute)\n } else\n unlinkFileSync(entry.absolute)\n return this[MAKEFS](null, entry, neverCalled)\n } catch (er) {\n return this[ONERROR](er, entry)\n }\n }\n } catch (er) {\n return this[MAKEFS](null, entry, neverCalled)\n }\n }\n\n [FILE] (entry, _) {\n const mode = entry.mode & 0o7777 || this.fmode\n\n const oner = er => {\n let closeError\n try {\n fs.closeSync(fd)\n } catch (e) {\n closeError = e\n }\n if (er || closeError)\n this[ONERROR](er || closeError, entry)\n }\n\n let fd\n try {\n fd = fs.openSync(entry.absolute, getFlag(entry.size), mode)\n } catch (er) {\n return oner(er)\n }\n const tx = this.transform ? this.transform(entry) || entry : entry\n if (tx !== entry) {\n tx.on('error', er => this[ONERROR](er, entry))\n entry.pipe(tx)\n }\n\n tx.on('data', chunk => {\n try {\n fs.writeSync(fd, chunk, 0, chunk.length)\n } catch (er) {\n oner(er)\n }\n })\n\n tx.on('end', _ => {\n let er = null\n // try both, falling futimes back to utimes\n // if either fails, handle the first error\n if (entry.mtime && !this.noMtime) {\n const atime = entry.atime || new Date()\n const mtime = entry.mtime\n try {\n fs.futimesSync(fd, atime, mtime)\n } catch (futimeser) {\n try {\n fs.utimesSync(entry.absolute, atime, mtime)\n } catch (utimeser) {\n er = futimeser\n }\n }\n }\n\n if (this[DOCHOWN](entry)) {\n const uid = this[UID](entry)\n const gid = this[GID](entry)\n\n try {\n fs.fchownSync(fd, uid, gid)\n } catch (fchowner) {\n try {\n fs.chownSync(entry.absolute, uid, gid)\n } catch (chowner) {\n er = er || fchowner\n }\n }\n }\n\n oner(er)\n })\n }\n\n [DIRECTORY] (entry, _) {\n const mode = entry.mode & 0o7777 || this.dmode\n const er = this[MKDIR](entry.absolute, mode)\n if (er)\n return this[ONERROR](er, entry)\n if (entry.mtime && !this.noMtime) {\n try {\n fs.utimesSync(entry.absolute, entry.atime || new Date(), entry.mtime)\n } catch (er) {}\n }\n if (this[DOCHOWN](entry)) {\n try {\n fs.chownSync(entry.absolute, this[UID](entry), this[GID](entry))\n } catch (er) {}\n }\n entry.resume()\n }\n\n [MKDIR] (dir, mode) {\n try {\n return mkdir.sync(dir, {\n uid: this.uid,\n gid: this.gid,\n processUid: this.processUid,\n processGid: this.processGid,\n umask: this.processUmask,\n preserve: this.preservePaths,\n unlink: this.unlink,\n cache: this.dirCache,\n cwd: this.cwd,\n mode: mode,\n })\n } catch (er) {\n return er\n }\n }\n\n [LINK] (entry, linkpath, link, _) {\n try {\n fs[link + 'Sync'](linkpath, entry.absolute)\n entry.resume()\n } catch (er) {\n return this[ONERROR](er, entry)\n }\n }\n}\n\nUnpack.Sync = UnpackSync\nmodule.exports = Unpack\n", "'use strict'\n\n// tar -x\nconst hlo = require('./high-level-opt.js')\nconst Unpack = require('./unpack.js')\nconst fs = require('fs')\nconst fsm = require('fs-minipass')\nconst path = require('path')\n\nmodule.exports = (opt_, files, cb) => {\n if (typeof opt_ === 'function')\n cb = opt_, files = null, opt_ = {}\n else if (Array.isArray(opt_))\n files = opt_, opt_ = {}\n\n if (typeof files === 'function')\n cb = files, files = null\n\n if (!files)\n files = []\n else\n files = Array.from(files)\n\n const opt = hlo(opt_)\n\n if (opt.sync && typeof cb === 'function')\n throw new TypeError('callback not supported for sync tar functions')\n\n if (!opt.file && typeof cb === 'function')\n throw new TypeError('callback only supported with file option')\n\n if (files.length)\n filesFilter(opt, files)\n\n return opt.file && opt.sync ? extractFileSync(opt)\n : opt.file ? extractFile(opt, cb)\n : opt.sync ? extractSync(opt)\n : extract(opt)\n}\n\n// construct a filter that limits the file entries listed\n// include child entries if a dir is included\nconst filesFilter = (opt, files) => {\n const map = new Map(files.map(f => [f.replace(/\\/+$/, ''), true]))\n const filter = opt.filter\n\n const mapHas = (file, r) => {\n const root = r || path.parse(file).root || '.'\n const ret = file === root ? false\n : map.has(file) ? map.get(file)\n : mapHas(path.dirname(file), root)\n\n map.set(file, ret)\n return ret\n }\n\n opt.filter = filter\n ? (file, entry) => filter(file, entry) && mapHas(file.replace(/\\/+$/, ''))\n : file => mapHas(file.replace(/\\/+$/, ''))\n}\n\nconst extractFileSync = opt => {\n const u = new Unpack.Sync(opt)\n\n const file = opt.file\n const stat = fs.statSync(file)\n // This trades a zero-byte read() syscall for a stat\n // However, it will usually result in less memory allocation\n const readSize = opt.maxReadSize || 16 * 1024 * 1024\n const stream = new fsm.ReadStreamSync(file, {\n readSize: readSize,\n size: stat.size,\n })\n stream.pipe(u)\n}\n\nconst extractFile = (opt, cb) => {\n const u = new Unpack(opt)\n const readSize = opt.maxReadSize || 16 * 1024 * 1024\n\n const file = opt.file\n const p = new Promise((resolve, reject) => {\n u.on('error', reject)\n u.on('close', resolve)\n\n // This trades a zero-byte read() syscall for a stat\n // However, it will usually result in less memory allocation\n fs.stat(file, (er, stat) => {\n if (er)\n reject(er)\n else {\n const stream = new fsm.ReadStream(file, {\n readSize: readSize,\n size: stat.size,\n })\n stream.on('error', reject)\n stream.pipe(u)\n }\n })\n })\n return cb ? p.then(cb, cb) : p\n}\n\nconst extractSync = opt => new Unpack.Sync(opt)\n\nconst extract = opt => new Unpack(opt)\n", "'use strict'\n\n// high-level commands\nexports.c = exports.create = require('./lib/create.js')\nexports.r = exports.replace = require('./lib/replace.js')\nexports.t = exports.list = require('./lib/list.js')\nexports.u = exports.update = require('./lib/update.js')\nexports.x = exports.extract = require('./lib/extract.js')\n\n// classes\nexports.Pack = require('./lib/pack.js')\nexports.Unpack = require('./lib/unpack.js')\nexports.Parse = require('./lib/parse.js')\nexports.ReadEntry = require('./lib/read-entry.js')\nexports.WriteEntry = require('./lib/write-entry.js')\nexports.Header = require('./lib/header.js')\nexports.Pax = require('./lib/pax.js')\nexports.types = require('./lib/types.js')\n", "import chalk from \"chalk\";\nimport {\n register as _register,\n BINARY_VERSION,\n PACKAGE_NAMES,\n} from \"register-url-windows\";\nimport { PROTOCOL } from \"src/PROTOCOL\";\nimport which from \"which\";\nimport { fetch } from \"./fetch\";\nimport fs from \"fs\";\nimport http from \"http\";\nimport tmp from \"tmp\";\nimport path from \"path\";\nimport tar from \"tar\";\n\nconst TARBALL_URL = `http://registry.npmjs.org/${PACKAGE_NAMES[\"win64-uac\"]}/-/${PACKAGE_NAMES[\"win64-uac\"]}-${BINARY_VERSION}.tgz`;\n\nfunction downloadBin(): Promise {\n const { name: tgzPath } = tmp.dirSync({\n postfix: \"git-peek\",\n unsafeCleanup: true,\n });\n return new Promise((resolve, reject) => {\n http.get(TARBALL_URL, function (response) {\n response.pipe(\n tar\n .x({\n cwd: tgzPath,\n strip: 1,\n onentry(entry) {},\n onwarn(message, data) {\n console.warn(message);\n },\n })\n .on(\"finish\", () => {\n resolve(path.resolve(tgzPath, \"register-url.exe\"));\n })\n .on(\"error\", (err) => {\n reject(err);\n })\n );\n });\n });\n}\n\nexport async function register(editor: string) {\n console.log(\"Downloading register-url-windows!\");\n const downloadPath = await downloadBin();\n console.log(\"Downloaded register-url-windows\");\n\n console.log(\n `${chalk.whiteBright(\n \"git-peek uses Administrator privileges to enable 1-click in Chrome & Edge\"\n )}. Source code: \\n${chalk.gray(\n \" https://github.com/Jarred-Sumner/register-url-windows/blob/main/dotnet/RegisterURLHandler/Program.cs\"\n )}`\n );\n const result = await _register(\n {\n path: path.resolve(\n await which(\"git-peek\"),\n \"../\",\n \"node_modules\",\n \"@jarred\",\n \"git-peek\",\n \"bin\",\n \"git-peek-win32.exe\"\n ),\n name: \"git-peek\",\n origins: [\n \"github.com\",\n \"bitbucket.com\",\n \"gitlab.com\",\n \"*.gitlab.com\",\n \"sourcehut.org\",\n ],\n register: true,\n protocol: PROTOCOL,\n },\n downloadPath\n );\n\n if (process.env.VERBOSE) console.log(result);\n\n if (result.error && !(result.protocol && result.edge && result.chrome)) {\n console.error(result.error);\n }\n\n if (result.exception && !(result.protocol && result.edge && result.chrome)) {\n console.error(result.exception);\n }\n\n if (result.protocol && result.edge && result.chrome) {\n console.log(`${chalk.green(\"Registered git-peek:// successfully\")}`);\n } else if (result.protocol) {\n console.log(\n chalk.whiteBright(\"Registered git-peek://, but 1-click is disabled\")\n );\n console.log(\n `${chalk.cyan(\n \"To enable 1-click, re-run `git-peek -r` with Administrator privileges.\"\n )}`\n );\n } else {\n console.log(`${chalk.red(\"Register failed\")}`);\n }\n\n process.exit();\n}\n", "let register: (editor: string) => void;\nif (process.platform === \"darwin\") {\n register = require(\"./registerProtocol.mac\").register;\n} else if (process.platform === \"win32\") {\n register = require(\"./registerProtocol.windows\").register;\n} else {\n register = () => {\n throw \"Unsupported Platform\";\n };\n}\n\nexport { register };\n", "export const PROTOCOL = \"git-peek\";\n"], + "mappings": "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", "names": [] } diff --git a/src/registerProtocol.mac.ts b/src/registerProtocol.mac.ts index 6063bc3..950c73f 100644 --- a/src/registerProtocol.mac.ts +++ b/src/registerProtocol.mac.ts @@ -4,6 +4,7 @@ import child_process from "child_process"; import fs from "fs"; import path from "path"; import chalk from "chalk"; +import tmp from "tmp"; const TEMP_DIR = "/Applications/git-peek.app/Contents/temp"; import { PROTOCOL } from "./PROTOCOL"; @@ -29,12 +30,14 @@ export async function register(editor: string) { console.log("Generating AppleScript handler."); const appleScriptCode = await generateAppleScript(gitPeekShim, TEMP_DIR); - const appleScriptFile = path.join(process.cwd(), "git-peek.applescript"); - const appleScriptApp = path.join(process.cwd(), "git-peek.app"); + const _tmp = tmp.dirSync({ unsafeCleanup: true }); + const appleScriptFile = path.join(_tmp.name, "git-peek.applescript"); + const appleScriptApp = path.join(_tmp.name, "git-peek.app"); + await fs.promises.writeFile(appleScriptFile, appleScriptCode, "utf8"); console.log(chalk.gray(appleScriptCode)); console.log("Compiling .applescript to .app"); - execSync(`osacompile -o git-peek.app ${appleScriptFile}`); + execSync(`osacompile -o ${appleScriptApp} ${appleScriptFile}`); console.log("Updating Info.plist to support URL handler"); const infoPlist = path.join(appleScriptApp, "contents/Info.plist"); const info = plist.readFileSync(infoPlist);