diff --git a/.tool-versions b/.tool-versions index 5155ec0..1d6a203 100644 --- a/.tool-versions +++ b/.tool-versions @@ -1 +1 @@ -nodejs 15.8.0 +nodejs 14.7.0 diff --git a/bin/git-peek b/bin/git-peek index f8be7d6..d8ad07b 100755 --- a/bin/git-peek +++ b/bin/git-peek @@ -1,42 +1,42 @@ #!/usr/bin/env node -var uO=Object.create,Is=Object.defineProperty,cO=Object.getPrototypeOf,lO=Object.prototype.hasOwnProperty,fO=Object.getOwnPropertyNames,hO=Object.getOwnPropertyDescriptor;var ja=t=>Is(t,"__esModule",{value:!0});var d=(t,e)=>()=>(e||(e={exports:{}},t(e.exports,e)),e.exports),uh=(t,e)=>{for(var r in e)Is(t,r,{get:e[r],enumerable:!0})},pO=(t,e,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of fO(e))!lO.call(t,n)&&n!=="default"&&Is(t,n,{get:()=>e[n],enumerable:!(r=hO(e,n))||r.enumerable});return t},Te=t=>t&&t.__esModule?t:pO(ja(Is(t!=null?uO(cO(t)):{},"default",{value:t,enumerable:!0})),t);var qa=d((v5,ch)=>{"use strict";ch.exports=function(e,r){r===!0&&(r=0);var n=e.indexOf("://"),i=e.substring(0,n).split("+").filter(Boolean);return typeof r=="number"?i[r]:i}});var $a=d((b5,lh)=>{"use strict";var dO=qa();function fh(t){if(Array.isArray(t))return t.indexOf("ssh")!==-1||t.indexOf("rsync")!==-1;if(typeof t!="string")return!1;var e=dO(t);return t=t.substring(t.indexOf("://")+3),fh(e)?!0:t.indexOf("@"){"use strict";hh.exports=t=>encodeURIComponent(t).replace(/[!'()*]/g,e=>`%${e.charCodeAt(0).toString(16).toUpperCase()}`)});var vh=d((w5,dh)=>{"use strict";var mh="%[a-f0-9]{2}",gh=new RegExp(mh,"gi"),yh=new RegExp("("+mh+")+","gi");function Ma(t,e){try{return decodeURIComponent(t.join(""))}catch(i){}if(t.length===1)return t;e=e||1;var r=t.slice(0,e),n=t.slice(e);return Array.prototype.concat.call([],Ma(r),Ma(n))}function mO(t){try{return decodeURIComponent(t)}catch(n){for(var e=t.match(gh),r=1;r{"use strict";bh.exports=(t,e)=>{if(!(typeof t=="string"&&typeof e=="string"))throw new TypeError("Expected the arguments to be of type `string`");if(e==="")return[t];let r=t.indexOf(e);return r===-1?[t]:[t.slice(0,r),t.slice(r+e.length)]}});var Sh=d((O5,wh)=>{"use strict";wh.exports=function(t,e){for(var r={},n=Object.keys(t),i=Array.isArray(e),s=0;s{"use strict";var yO=ph(),vO=vh(),Oh=Eh(),bO=Sh(),EO=t=>t==null;function wO(t){switch(t.arrayFormat){case"index":return e=>(r,n)=>{let i=r.length;return n===void 0||t.skipNull&&n===null||t.skipEmptyString&&n===""?r:n===null?[...r,[Le(e,t),"[",i,"]"].join("")]:[...r,[Le(e,t),"[",Le(i,t),"]=",Le(n,t)].join("")]};case"bracket":return e=>(r,n)=>n===void 0||t.skipNull&&n===null||t.skipEmptyString&&n===""?r:n===null?[...r,[Le(e,t),"[]"].join("")]:[...r,[Le(e,t),"[]=",Le(n,t)].join("")];case"comma":case"separator":return e=>(r,n)=>n==null||n.length===0?r:r.length===0?[[Le(e,t),"=",Le(n,t)].join("")]:[[r,Le(n,t)].join(t.arrayFormatSeparator)];default:return e=>(r,n)=>n===void 0||t.skipNull&&n===null||t.skipEmptyString&&n===""?r:n===null?[...r,Le(e,t)]:[...r,[Le(e,t),"=",Le(n,t)].join("")]}}function SO(t){let e;switch(t.arrayFormat){case"index":return(r,n,i)=>{if(e=/\[(\d*)\]$/.exec(r),r=r.replace(/\[\d*\]$/,""),!e){i[r]=n;return}i[r]===void 0&&(i[r]={}),i[r][e[1]]=n};case"bracket":return(r,n,i)=>{if(e=/(\[\])$/.exec(r),r=r.replace(/\[\]$/,""),!e){i[r]=n;return}if(i[r]===void 0){i[r]=[n];return}i[r]=[].concat(i[r],n)};case"comma":case"separator":return(r,n,i)=>{let s=typeof n=="string"&&n.includes(t.arrayFormatSeparator),o=typeof n=="string"&&!s&&Fr(n,t).includes(t.arrayFormatSeparator);n=o?Fr(n,t):n;let a=s||o?n.split(t.arrayFormatSeparator).map(u=>Fr(u,t)):n===null?n:Fr(n,t);i[r]=a};default:return(r,n,i)=>{if(i[r]===void 0){i[r]=n;return}i[r]=[].concat(i[r],n)}}}function Rh(t){if(typeof t!="string"||t.length!==1)throw new TypeError("arrayFormatSeparator must be single character string")}function Le(t,e){return e.encode?e.strict?yO(t):encodeURIComponent(t):t}function Fr(t,e){return e.decode?vO(t):t}function Ch(t){return Array.isArray(t)?t.sort():typeof t=="object"?Ch(Object.keys(t)).sort((e,r)=>Number(e)-Number(r)).map(e=>t[e]):t}function _h(t){let e=t.indexOf("#");return e!==-1&&(t=t.slice(0,e)),t}function OO(t){let e="",r=t.indexOf("#");return r!==-1&&(e=t.slice(r)),e}function Ah(t){t=_h(t);let e=t.indexOf("?");return e===-1?"":t.slice(e+1)}function Th(t,e){return e.parseNumbers&&!Number.isNaN(Number(t))&&typeof t=="string"&&t.trim()!==""?t=Number(t):e.parseBooleans&&t!==null&&(t.toLowerCase()==="true"||t.toLowerCase()==="false")&&(t=t.toLowerCase()==="true"),t}function Lh(t,e){e=Object.assign({decode:!0,sort:!0,arrayFormat:"none",arrayFormatSeparator:",",parseNumbers:!1,parseBooleans:!1},e),Rh(e.arrayFormatSeparator);let r=SO(e),n=Object.create(null);if(typeof t!="string"||(t=t.trim().replace(/^[?#&]/,""),!t))return n;for(let i of t.split("&")){if(i==="")continue;let[s,o]=Oh(e.decode?i.replace(/\+/g," "):i,"=");o=o===void 0?null:["comma","separator"].includes(e.arrayFormat)?o:Fr(o,e),r(Fr(s,e),o,n)}for(let i of Object.keys(n)){let s=n[i];if(typeof s=="object"&&s!==null)for(let o of Object.keys(s))s[o]=Th(s[o],e);else n[i]=Th(s,e)}return e.sort===!1?n:(e.sort===!0?Object.keys(n).sort():Object.keys(n).sort(e.sort)).reduce((i,s)=>{let o=n[s];return Boolean(o)&&typeof o=="object"&&!Array.isArray(o)?i[s]=Ch(o):i[s]=o,i},Object.create(null))}Xe.extract=Ah;Xe.parse=Lh;Xe.stringify=(t,e)=>{if(!t)return"";e=Object.assign({encode:!0,strict:!0,arrayFormat:"none",arrayFormatSeparator:","},e),Rh(e.arrayFormatSeparator);let r=o=>e.skipNull&&EO(t[o])||e.skipEmptyString&&t[o]==="",n=wO(e),i={};for(let o of Object.keys(t))r(o)||(i[o]=t[o]);let s=Object.keys(i);return e.sort!==!1&&s.sort(e.sort),s.map(o=>{let a=t[o];return a===void 0?"":a===null?Le(o,e):Array.isArray(a)?a.reduce(n(o),[]).join("&"):Le(o,e)+"="+Le(a,e)}).filter(o=>o.length>0).join("&")};Xe.parseUrl=(t,e)=>{e=Object.assign({decode:!0},e);let[r,n]=Oh(t,"#");return Object.assign({url:r.split("?")[0]||"",query:Lh(Ah(t),e)},e&&e.parseFragmentIdentifier&&n?{fragmentIdentifier:Fr(n,e)}:{})};Xe.stringifyUrl=(t,e)=>{e=Object.assign({encode:!0,strict:!0},e);let r=_h(t.url).split("?")[0]||"",n=Xe.extract(t.url),i=Xe.parse(n,{sort:!1}),s=Object.assign(i,t.query),o=Xe.stringify(s,e);o&&(o=`?${o}`);let a=OO(t.url);return t.fragmentIdentifier&&(a=`#${Le(t.fragmentIdentifier,e)}`),`${r}${o}${a}`};Xe.pick=(t,e,r)=>{r=Object.assign({parseFragmentIdentifier:!0},r);let{url:n,query:i,fragmentIdentifier:s}=Xe.parseUrl(t,r);return Xe.stringifyUrl({url:n,query:bO(i,e),fragmentIdentifier:s},r)};Xe.exclude=(t,e,r)=>{let n=Array.isArray(e)?i=>!e.includes(i):(i,s)=>!e(i,s);return Xe.pick(t,n,r)}});var Ih=d((C5,Nh)=>{"use strict";var RO=qa(),CO=$a(),_O=xh();function AO(t){t=(t||"").trim();var e={protocols:RO(t),protocol:null,port:null,resource:"",user:"",pathname:"",hash:"",search:"",href:t,query:Object.create(null)},r=t.indexOf("://"),n=-1,i=null,s=null;t.startsWith(".")&&(t.startsWith("./")&&(t=t.substring(2)),e.pathname=t,e.protocol="file");var o=t.charAt(1);return e.protocol||(e.protocol=e.protocols[0],e.protocol||(CO(t)?e.protocol="ssh":((o==="/"||o==="~")&&(t=t.substring(2)),e.protocol="file"))),r!==-1&&(t=t.substring(r+3)),s=t.split(/\/|\\/),e.protocol!=="file"?e.resource=s.shift():e.resource="",i=e.resource.split("@"),i.length===2&&(e.user=i[0],e.resource=i[1]),i=e.resource.split(":"),i.length===2&&(e.resource=i[0],i[1]?(e.port=Number(i[1]),isNaN(e.port)&&(e.port=null,s.unshift(i[1]))):e.port=null),s=s.filter(Boolean),e.protocol==="file"?e.pathname=e.href:e.pathname=e.pathname||(e.protocol!=="file"||e.href[0]==="/"?"/":"")+s.join("/"),i=e.pathname.split("#"),i.length===2&&(e.pathname=i[0],e.hash=i[1]),i=e.pathname.split("?"),i.length===2&&(e.pathname=i[0],e.search=i[1]),e.query=_O.parse(e.search),e.href=e.href.replace(/\/$/,""),e.pathname=e.pathname.replace(/\/$/,""),e}Nh.exports=AO});var Fh=d((_5,Ph)=>{"use strict";var TO=typeof URL=="undefined"?require("url").URL:URL,Dh=(t,e)=>e.some(r=>r instanceof RegExp?r.test(t):r===t);Ph.exports=(t,e)=>{e=Object.assign({defaultProtocol:"http:",normalizeProtocol:!0,forceHttp:!1,forceHttps:!1,stripHash:!0,stripWWW:!0,removeQueryParameters:[/^utm_\w+/i],removeTrailingSlash:!0,removeDirectoryIndex:!1,sortQueryParameters:!0},e),Reflect.has(e,"normalizeHttps")&&(e.forceHttp=e.normalizeHttps),Reflect.has(e,"normalizeHttp")&&(e.forceHttps=e.normalizeHttp),Reflect.has(e,"stripFragment")&&(e.stripHash=e.stripFragment),t=t.trim();let r=t.startsWith("//");!r&&/^\.*\//.test(t)||(t=t.replace(/^(?!(?:\w+:)?\/\/)|^\/\//,e.defaultProtocol));let i=new TO(t);if(e.forceHttp&&e.forceHttps)throw new Error("The `forceHttp` and `forceHttps` options cannot be used together");if(e.forceHttp&&i.protocol==="https:"&&(i.protocol="http:"),e.forceHttps&&i.protocol==="http:"&&(i.protocol="https:"),e.stripHash&&(i.hash=""),i.pathname&&(i.pathname=i.pathname.replace(/((?![https?:]).)\/{2,}/g,(s,o)=>/^(?!\/)/g.test(o)?`${o}/`:"/")),i.pathname&&(i.pathname=decodeURI(i.pathname)),e.removeDirectoryIndex===!0&&(e.removeDirectoryIndex=[/^index\.[a-z]+$/]),Array.isArray(e.removeDirectoryIndex)&&e.removeDirectoryIndex.length>0){let s=i.pathname.split("/"),o=s[s.length-1];Dh(o,e.removeDirectoryIndex)&&(s=s.slice(0,s.length-1),i.pathname=s.slice(1).join("/")+"/")}if(i.hostname&&(i.hostname=i.hostname.replace(/\.$/,""),e.stripWWW&&/^www\.([a-z\-\d]{2,63})\.([a-z\.]{2,5})$/.test(i.hostname)&&(i.hostname=i.hostname.replace(/^www\./,""))),Array.isArray(e.removeQueryParameters))for(let s of[...i.searchParams.keys()])Dh(s,e.removeQueryParameters)&&i.searchParams.delete(s);return e.sortQueryParameters&&i.searchParams.sort(),t=i.toString(),(e.removeTrailingSlash||i.pathname==="/")&&(t=t.replace(/\/$/,"")),r&&!e.normalizeProtocol&&(t=t.replace(/^http:\/\//,"//")),t}});var jh=d((A5,kh)=>{"use strict";var LO=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},xO=Ih(),NO=Fh();function IO(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;if(typeof t!="string"||!t.trim())throw new Error("Invalid url.");e&&((typeof e=="undefined"?"undefined":LO(e))!=="object"&&(e={stripFragment:!1}),t=NO(t,e));var r=xO(t);return r}kh.exports=IO});var Mh=d((T5,qh)=>{"use strict";var PO=jh(),$h=$a();function DO(t){var e=PO(t);e.token="";var r=e.user.split(":");return r.length===2&&(r[1]==="x-oauth-basic"?e.token=r[0]:r[0]==="x-token-auth"&&(e.token=r[1])),$h(e.protocols)||$h(t)?e.protocol="ssh":e.protocols.length?e.protocol=e.protocols[0]:e.protocol="file",e.href=e.href.replace(/\/$/,""),e}qh.exports=DO});var Uh=d((L5,Bh)=>{"use strict";var FO=Mh();function Ba(t){if(typeof t!="string")throw new Error("The url must be a string.");var e=FO(t),r=e.resource.split("."),n=null;switch(e.toString=function(m){return Ba.stringify(this,m)},e.source=r.length>2?r.slice(1-r.length).join("."):e.source=e.resource,e.git_suffix=/\.git$/.test(e.pathname),e.name=decodeURIComponent(e.pathname.replace(/^\//,"").replace(/\.git$/,"")),e.owner=decodeURIComponent(e.user),e.source){case"git.cloudforge.com":e.owner=e.user,e.organization=r[0],e.source="cloudforge.com";break;case"visualstudio.com":if(e.resource==="vs-ssh.visualstudio.com"){n=e.name.split("/"),n.length===4&&(e.organization=n[1],e.owner=n[2],e.name=n[3],e.full_name=n[2]+"/"+n[3]);break}else{n=e.name.split("/"),n.length===2?(e.owner=n[1],e.name=n[1],e.full_name="_git/"+e.name):n.length===3?(e.name=n[2],n[0]==="DefaultCollection"?(e.owner=n[2],e.organization=n[0],e.full_name=e.organization+"/_git/"+e.name):(e.owner=n[0],e.full_name=e.owner+"/_git/"+e.name)):n.length===4&&(e.organization=n[0],e.owner=n[1],e.name=n[3],e.full_name=e.organization+"/"+e.owner+"/_git/"+e.name);break}case"dev.azure.com":case"azure.com":if(e.resource==="ssh.dev.azure.com"){n=e.name.split("/"),n.length===4&&(e.organization=n[1],e.owner=n[2],e.name=n[3]);break}else{n=e.name.split("/"),n.length===5?(e.organization=n[0],e.owner=n[1],e.name=n[4],e.full_name="_git/"+e.name):n.length===3?(e.name=n[2],n[0]==="DefaultCollection"?(e.owner=n[2],e.organization=n[0],e.full_name=e.organization+"/_git/"+e.name):(e.owner=n[0],e.full_name=e.owner+"/_git/"+e.name)):n.length===4&&(e.organization=n[0],e.owner=n[1],e.name=n[3],e.full_name=e.organization+"/"+e.owner+"/_git/"+e.name),e.query&&e.query.path&&(e.filepath=e.query.path.replace(/^\/+/g,"")),e.query&&e.query.version&&(e.ref=e.query.version.replace(/^GB/,""));break}default:n=e.name.split("/");var i=n.length-1;if(n.length>=2){var s=n.indexOf("-",2),o=n.indexOf("blob",2),a=n.indexOf("tree",2),u=n.indexOf("commit",2),c=n.indexOf("src",2),l=n.indexOf("raw",2);i=s>0?s-1:o>0?o-1:a>0?a-1:u>0?u-1:c>0?c-1:l>0?l-1:i,e.owner=n.slice(0,i).join("/"),e.name=n[i],u&&(e.commit=n[i+2])}e.ref="",e.filepathtype="",e.filepath="";var f=n.length>i&&n[i+1]==="-"?i+1:i;n.length>f+2&&["raw","src","blob","tree"].indexOf(n[f+1])>=0&&(e.filepathtype=n[f+1],e.ref=n[f+2],n.length>f+3&&(e.filepath=n.slice(f+3).join("/"))),e.organization=e.owner;break}e.full_name||(e.full_name=e.owner,e.name&&(e.full_name&&(e.full_name+="/"),e.full_name+=e.name)),e.owner.startsWith("scm/")&&(e.source="bitbucket-server",e.owner=e.owner.replace("scm/",""),e.organization=e.owner,e.full_name=e.owner+"/"+e.name);var p=/(projects|users)\/(.*?)\/repos\/(.*?)\/(raw|browse)(?:\/(?:$|(.+?)))?$/,y=p.exec(e.pathname);return y!=null&&(e.source="bitbucket-server",y[1]==="users"?e.owner="~"+y[2]:e.owner=y[2],e.organization=e.owner,e.name=y[3],e.filepathtype=y[4],e.filepath=y[5],e.full_name=e.owner+"/"+e.name,e.query.at?e.ref=e.query.at:e.ref=""),e}Ba.stringify=function(t,e){e=e||(t.protocols&&t.protocols.length?t.protocols.join("+"):t.protocol);var r=t.port?":"+t.port:"",n=t.user||"git",i=t.git_suffix?".git":"";switch(e){case"ssh":return r?"ssh://"+n+"@"+t.resource+r+"/"+t.full_name+i:n+"@"+t.resource+":"+t.full_name+i;case"git+ssh":case"ssh+git":case"ftp":case"ftps":return e+"://"+n+"@"+t.resource+r+"/"+t.full_name+i;case"http":case"https":var s=t.token?kO(t):t.user&&(t.protocols.includes("http")||t.protocols.includes("https"))?t.user+"@":"";return e+"://"+s+t.resource+r+"/"+jO(t)+i;default:return t.href}};function kO(t){switch(t.source){case"bitbucket.org":return"x-token-auth:"+t.token+"@";default:return t.token+"@"}}function jO(t){switch(t.source){case"bitbucket-server":return"scm/"+t.full_name;default:return""+t.full_name}}Bh.exports=Ba});var zh=d((x5,Gh)=>{"use strict";var qO=Object.prototype.toString;Gh.exports=function(t){var e;return qO.call(t)==="[object Object]"&&(e=Object.getPrototypeOf(t),e===null||e===Object.getPrototypeOf({}))}});var Wh=d((N5,Hh)=>{"use strict";Hh.exports=function(t){return t==null?[]:Array.isArray(t)?t:[t]}});var Xh=d((I5,Vh)=>{var $O=Object.prototype.toString;Vh.exports=function(e){if(e===void 0)return"undefined";if(e===null)return"null";var r=typeof e;if(r==="boolean")return"boolean";if(r==="string")return"string";if(r==="number")return"number";if(r==="symbol")return"symbol";if(r==="function")return zO(e)?"generatorfunction":"function";if(MO(e))return"array";if(VO(e))return"buffer";if(WO(e))return"arguments";if(UO(e))return"date";if(BO(e))return"error";if(GO(e))return"regexp";switch(Yh(e)){case"Symbol":return"symbol";case"Promise":return"promise";case"WeakMap":return"weakmap";case"WeakSet":return"weakset";case"Map":return"map";case"Set":return"set";case"Int8Array":return"int8array";case"Uint8Array":return"uint8array";case"Uint8ClampedArray":return"uint8clampedarray";case"Int16Array":return"int16array";case"Uint16Array":return"uint16array";case"Int32Array":return"int32array";case"Uint32Array":return"uint32array";case"Float32Array":return"float32array";case"Float64Array":return"float64array"}if(HO(e))return"generator";switch(r=$O.call(e),r){case"[object Object]":return"object";case"[object Map Iterator]":return"mapiterator";case"[object Set Iterator]":return"setiterator";case"[object String Iterator]":return"stringiterator";case"[object Array Iterator]":return"arrayiterator"}return r.slice(8,-1).toLowerCase().replace(/\s/g,"")};function Yh(t){return typeof t.constructor=="function"?t.constructor.name:null}function MO(t){return Array.isArray?Array.isArray(t):t instanceof Array}function BO(t){return t instanceof Error||typeof t.message=="string"&&t.constructor&&typeof t.constructor.stackTraceLimit=="number"}function UO(t){return t instanceof Date?!0:typeof t.toDateString=="function"&&typeof t.getDate=="function"&&typeof t.setDate=="function"}function GO(t){return t instanceof RegExp?!0:typeof t.flags=="string"&&typeof t.ignoreCase=="boolean"&&typeof t.multiline=="boolean"&&typeof t.global=="boolean"}function zO(t,e){return Yh(t)==="GeneratorFunction"}function HO(t){return typeof t.throw=="function"&&typeof t.return=="function"&&typeof t.next=="function"}function WO(t){try{if(typeof t.length=="number"&&typeof t.callee=="function")return!0}catch(e){if(e.message.indexOf("callee")!==-1)return!0}return!1}function VO(t){return t.constructor&&typeof t.constructor.isBuffer=="function"?t.constructor.isBuffer(t):!1}});var tp=d((P5,Ua)=>{"use strict";var YO=zh(),XO=Wh(),Ga=Xh(),Kh=(t,e,r)=>{t[e]||(t[e]=[]),t[e].push(r)},Zh=(t,e,r,n)=>{t[e]||(t[e]={}),t[e][r]=n},Ps=t=>Array.isArray(t)?`[${t.map(Ps).join(", ")}]`:Ga(t)==="string"?JSON.stringify(t):t,KO=t=>{if(Array.isArray(t)&&t.length>0){let[e]=t;return`${Ga(e)}-array`}return Ga(t)},ZO=(t,e)=>{let r=t==="array"?"string-array":t;return za.includes(r)&&Array.isArray(e)&&e.length===0?"array":r},JO=["stopEarly","unknown","--"],Jh=["string","boolean","number"],za=Jh.map(t=>`${t}-array`),Qh=[...Jh,"array",...za],ep=t=>{t=t||{};let e={};return JO.forEach(r=>{t[r]&&(e[r]=t[r])}),Object.keys(t).forEach(r=>{let n=t[r];if(r==="arguments"&&(r="_"),typeof n=="string"&&(n={type:n}),YO(n)){let i=n,{type:s}=i;if(s){if(!Qh.includes(s))throw new TypeError(`Expected type of "${r}" to be one of ${Ps(Qh)}, got ${Ps(s)}`);if(za.includes(s)){let[o]=s.split("-");Kh(e,"array",{key:r,[o]:!0})}else Kh(e,s,r)}if({}.hasOwnProperty.call(i,"default")){let{default:o}=i,a=KO(o),u=ZO(s,o);if(u&&u!==a)throw new TypeError(`Expected "${r}" default value to be of type "${u}", got ${Ps(a)}`);Zh(e,"default",r,o)}XO(i.alias).forEach(o=>{Zh(e,"alias",o,r)})}}),e};Ua.exports=ep;Ua.exports.default=ep});var lp=d((F5,rp)=>{"use strict";var QO=require("util"),D5=require("fs"),np=require("path");function Ei(t){if(t=t.toLocaleLowerCase(),t.indexOf("-")===-1&&t.indexOf("_")===-1)return t;{let e="",r=!1,n=t.match(/^-+/);for(let i=n?n[0].length:0;i0?n+=`${e}${r.charAt(i)}`:n+=o}return n}function sp(t){return t==null?!1:typeof t=="number"||/^0x[0-9a-f]+$/i.test(t)?!0:t.length>1&&t[0]==="0"?!1:/^[-]?(?:\d+(?:\.\d*)?|\.\d+)(e[-+]?\d+)?$/.test(t)}function eR(t){if(Array.isArray(t))return t.map(o=>typeof o!="string"?o+"":o);t=t.trim();let e=0,r=null,n=null,i=null,s=[];for(let o=0;o{typeof v=="number"&&(h.nargs[g]=v,h.keys.push(g))}),typeof n.coerce=="object"&&Object.entries(n.coerce).forEach(([g,v])=>{typeof v=="function"&&(h.coercions[g]=v,h.keys.push(g))}),typeof n.config!="undefined"&&(Array.isArray(n.config)||typeof n.config=="string"?[].concat(n.config).filter(Boolean).forEach(function(g){h.configs[g]=!0}):typeof n.config=="object"&&Object.entries(n.config).forEach(([g,v])=>{(typeof v=="boolean"||typeof v=="function")&&(h.configs[g]=v)})),Tt(n.key,s,n.default,h.arrays),Object.keys(a).forEach(function(g){(h.aliases[g]||[]).forEach(function(v){a[v]=a[g]})});let A=null;aO();let q=[],x=Object.assign(Object.create(null),{_:[]}),V={};for(let g=0;g=3&&(D(_[1],h.arrays)?g=z(g,_[1],i,_[2]):D(_[1],h.nargs)!==!1?g=P(g,_[1],i,_[2]):S(_[1],_[2]));else if(v.match(O)&&o["boolean-negation"])_=v.match(O),_!==null&&Array.isArray(_)&&_.length>=2&&(b=_[1],S(b,D(b,h.arrays)?[!1]:!1));else if(v.match(/^--.+/)||!o["short-option-groups"]&&v.match(/^-[^-]+/))_=v.match(/^--?(.+)/),_!==null&&Array.isArray(_)&&_.length>=2&&(b=_[1],D(b,h.arrays)?g=z(g,b,i):D(b,h.nargs)!==!1?g=P(g,b,i):(I=i[g+1],I!==void 0&&(!I.match(/^-/)||I.match(E))&&!D(b,h.bools)&&!D(b,h.counts)||/^(true|false)$/.test(I)?(S(b,I),g++):S(b,Mt(b))));else if(v.match(/^-.\..+=/))_=v.match(/^-([^=]+)=([\s\S]*)$/),_!==null&&Array.isArray(_)&&_.length>=3&&S(_[1],_[2]);else if(v.match(/^-.\..+/)&&!v.match(E))I=i[g+1],_=v.match(/^-(.\..+)/),_!==null&&Array.isArray(_)&&_.length>=2&&(b=_[1],I!==void 0&&!I.match(/^-/)&&!D(b,h.bools)&&!D(b,h.counts)?(S(b,I),g++):S(b,Mt(b)));else if(v.match(/^-[^-]+/)&&!v.match(E)){w=v.slice(1,-1).split(""),C=!1;for(let J=0;Jg!=="--"&&g.includes("-")).forEach(g=>{delete x[g]}),o["strip-aliased"]&&[].concat(...Object.keys(s).map(g=>s[g])).forEach(g=>{o["camel-case-expansion"]&&g.includes("-")&&delete x[g.split(".").map(v=>Ei(v)).join(".")],delete x[g]});function j(g){let v=k("_",g);(typeof v=="string"||typeof v=="number")&&x._.push(v)}function P(g,v,C,b){let w,_=D(v,h.nargs);if(_=typeof _!="number"||isNaN(_)?1:_,_===0)return Bt(b)||(A=Error(m("Argument unexpected for: %s",v))),S(v,Mt(v)),g;let I=Bt(b)?0:1;if(o["nargs-eats-options"])C.length-(g+1)+I<_&&(A=Error(m("Not enough arguments following: %s",v))),I=_;else{for(w=g+1;w0&&(S(v,b),te--),w=g+1;w0||I&&typeof I=="number"&&w.length>=I||(_=C[te],/^-/.test(_)&&!E.test(_)&&!$t(_)));te++)g=te,w.push(M(v,_))}return typeof I=="number"&&(I&&w.length1&&o["dot-notation"]&&(h.aliases[b[0]]||[]).forEach(function(w){let _=w.split("."),I=[].concat(b);I.shift(),_=_.concat(I),(h.aliases[g]||[]).includes(_.join("."))||ue(x,_,C)}),D(g,h.normalize)&&!D(g,h.arrays)&&[g].concat(h.aliases[g]||[]).forEach(function(_){Object.defineProperty(V,_,{enumerable:!0,get(){return v},set(I){v=typeof I=="string"?Ut.normalize(I):I}})})}function F(g,v){h.aliases[g]&&h.aliases[g].length||(h.aliases[g]=[v],p[v]=!0),h.aliases[v]&&h.aliases[v].length||F(v,g)}function M(g,v){typeof v=="string"&&(v[0]==="'"||v[0]==='"')&&v[v.length-1]===v[0]&&(v=v.substring(1,v.length-1)),(D(g,h.bools)||D(g,h.counts))&&typeof v=="string"&&(v=v==="true");let C=Array.isArray(v)?v.map(function(b){return k(g,b)}):k(g,v);return D(g,h.counts)&&(Bt(C)||typeof C=="boolean")&&(C=Ha()),D(g,h.normalize)&&D(g,h.arrays)&&(Array.isArray(v)?C=v.map(b=>Ut.normalize(b)):C=Ut.normalize(v)),C}function k(g,v){return!o["parse-positional-numbers"]&&g==="_"||!D(g,h.strings)&&!D(g,h.bools)&&!Array.isArray(v)&&(sp(v)&&o["parse-numbers"]&&Number.isSafeInteger(Math.floor(parseFloat(`${v}`)))||!Bt(v)&&D(g,h.numbers))&&(v=Number(v)),v}function U(g){let v=Object.create(null);Me(v,h.aliases,a),Object.keys(h.configs).forEach(function(C){let b=g[C]||v[C];if(b)try{let w=null,_=Ut.resolve(Ut.cwd(),b),I=h.configs[C];if(typeof I=="function"){try{w=I(_)}catch(te){w=te}if(w instanceof Error){A=w;return}}else w=Ut.require(_);he(w)}catch(w){w.name==="PermissionDenied"?A=w:g[C]&&(A=Error(m("Invalid JSON config file: %s",b)))}})}function he(g,v){Object.keys(g).forEach(function(C){let b=g[C],w=v?v+"."+C:C;typeof b=="object"&&b!==null&&!Array.isArray(b)&&o["dot-notation"]?he(b,w):(!ye(x,w.split("."))||D(w,h.arrays)&&o["combine-arrays"])&&S(w,b)})}function ne(){typeof u!="undefined"&&u.forEach(function(g){he(g)})}function ee(g,v){if(typeof c=="undefined")return;let C=typeof c=="string"?c:"",b=Ut.env();Object.keys(b).forEach(function(w){if(C===""||w.lastIndexOf(C,0)===0){let _=w.split("__").map(function(I,te){return te===0&&(I=I.substring(C.length)),Ei(I)});(v&&h.configs[_.join(".")]||!v)&&!ye(g,_)&&S(_.join("."),b[w])}})}function Ee(g){let v,C=new Set;Object.keys(g).forEach(function(b){if(!C.has(b)&&(v=D(b,h.coercions),typeof v=="function"))try{let w=k(b,v(g[b]));[].concat(h.aliases[b]||[],b).forEach(_=>{C.add(_),g[_]=w})}catch(w){A=w}})}function rt(g){return h.keys.forEach(v=>{~v.indexOf(".")||typeof g[v]=="undefined"&&(g[v]=void 0)}),g}function Me(g,v,C,b=!1){Object.keys(C).forEach(function(w){ye(g,w.split("."))||(ue(g,w.split("."),C[w]),b&&(y[w]=!0),(v[w]||[]).forEach(function(_){ye(g,_.split("."))||ue(g,_.split("."),C[w])}))})}function ye(g,v){let C=g;o["dot-notation"]||(v=[v.join(".")]),v.slice(0,-1).forEach(function(w){C=C[w]||{}});let b=v[v.length-1];return typeof C!="object"?!1:b in C}function ue(g,v,C){let b=g;o["dot-notation"]||(v=[v.join(".")]),v.slice(0,-1).forEach(function(J){J=ap(J),typeof b=="object"&&b[J]===void 0&&(b[J]={}),typeof b[J]!="object"||Array.isArray(b[J])?(Array.isArray(b[J])?b[J].push({}):b[J]=[b[J],{}],b=b[J][b[J].length-1]):b=b[J]});let w=ap(v[v.length-1]),_=D(v.join("."),h.arrays),I=Array.isArray(C),te=o["duplicate-arguments-array"];!te&&D(w,h.nargs)&&(te=!0,(!Bt(b[w])&&h.nargs[w]===1||Array.isArray(b[w])&&b[w].length===h.nargs[w])&&(b[w]=void 0)),C===Ha()?b[w]=Ha(b[w]):Array.isArray(b[w])?te&&_&&I?b[w]=o["flatten-duplicate-arrays"]?b[w].concat(C):(Array.isArray(b[w][0])?b[w]:[b[w]]).concat([C]):!te&&Boolean(_)===Boolean(I)?b[w]=C:b[w]=b[w].concat([C]):b[w]===void 0&&_?b[w]=I?C:[C]:te&&!(b[w]===void 0||D(w,h.counts)||D(w,h.bools))?b[w]=[b[w],C]:b[w]=C}function Tt(...g){g.forEach(function(v){Object.keys(v||{}).forEach(function(C){h.aliases[C]||(h.aliases[C]=[].concat(s[C]||[]),h.aliases[C].concat(C).forEach(function(b){if(/-/.test(b)&&o["camel-case-expansion"]){let w=Ei(b);w!==C&&h.aliases[C].indexOf(w)===-1&&(h.aliases[C].push(w),p[w]=!0)}}),h.aliases[C].concat(C).forEach(function(b){if(b.length>1&&/[A-Z]/.test(b)&&o["camel-case-expansion"]){let w=ip(b,"-");w!==C&&h.aliases[C].indexOf(w)===-1&&(h.aliases[C].push(w),p[w]=!0)}}),h.aliases[C].forEach(function(b){h.aliases[b]=[C].concat(h.aliases[C].filter(function(w){return b!==w}))}))})})}function D(g,v){let C=[].concat(h.aliases[g]||[],g),b=Object.keys(v),w=C.find(_=>b.includes(_));return w?v[w]:!1}function qt(g){let v=Object.keys(h);return[].concat(v.map(b=>h[b])).some(function(b){return Array.isArray(b)?b.includes(g):b[g]})}function Ot(g,...v){return[].concat(...v).some(function(b){let w=g.match(b);return w&&qt(w[1])})}function vn(g){if(g.match(E)||!g.match(/^-[^-]+/))return!1;let v=!0,C,b=g.slice(1).split("");for(let w=0;wD(g,h.arrays)?(A=Error(m("Invalid configuration: %s, opts.count excludes opts.array.",g)),!0):D(g,h.nargs)?(A=Error(m("Invalid configuration: %s, opts.count excludes opts.narg.",g)),!0):!1)}return{aliases:Object.assign({},h.aliases),argv:Object.assign(V,x),configuration:o,defaulted:Object.assign({},y),error:A,newAliases:Object.assign({},p)}}};function tR(t){let e=[],r=Object.create(null),n=!0;for(Object.keys(t).forEach(function(i){e.push([].concat(t[i],i))});n;){n=!1;for(let i=0;irR,format:QO.format,normalize:np.normalize,resolve:np.resolve,require:t=>require(t)}),wi=function(e,r){return cp.parse(e.slice(),r).argv};wi.detailed=function(t,e){return cp.parse(t.slice(),e)};wi.camelCase=Ei;wi.decamelize=ip;wi.looksLikeNumber=sp;rp.exports=wi});var dp=d((k5,fp)=>{"use strict";var hp=t=>typeof t=="object"&&t!==null,pp=t=>hp(t)&&!(t instanceof RegExp)&&!(t instanceof Error)&&!(t instanceof Date),Wa=(t,e,r,n=new WeakMap)=>{if(r={deep:!1,target:{},...r},n.has(t))return n.get(t);n.set(t,r.target);let{target:i}=r;delete r.target;let s=o=>o.map(a=>pp(a)?Wa(a,e,r,n):a);if(Array.isArray(t))return s(t);for(let[o,a]of Object.entries(t)){let[u,c]=e(o,a,t);r.deep&&pp(c)&&(c=Array.isArray(c)?s(c):Wa(c,e,r,n)),i[u]=c}return i};fp.exports=(t,e,r)=>{if(!hp(t))throw new TypeError(`Expected an object, got \`${t}\` (${typeof t})`);return Wa(t,e,r)}});var gp=d((j5,Va)=>{"use strict";var nR=t=>{let e=!1,r=!1,n=!1;for(let i=0;i{if(!(typeof t=="string"||Array.isArray(t)))throw new TypeError("Expected the input to be `string | string[]`");e=Object.assign({pascalCase:!1},e);let r=i=>e.pascalCase?i.charAt(0).toUpperCase()+i.slice(1):i;return Array.isArray(t)?t=t.map(i=>i.trim()).filter(i=>i.length).join("-"):t=t.trim(),t.length===0?"":t.length===1?e.pascalCase?t.toUpperCase():t.toLowerCase():(t!==t.toLowerCase()&&(t=nR(t)),t=t.replace(/^[_.\- ]+/,"").toLowerCase().replace(/[_.\- ]+(\w|$)/g,(i,s)=>s.toUpperCase()).replace(/\d+(\w|$)/g,i=>i.toUpperCase()),r(t))};Va.exports=mp;Va.exports.default=mp});var bp=d((q5,yp)=>{"use strict";var vp=class{constructor(e={}){if(!(e.maxSize&&e.maxSize>0))throw new TypeError("`maxSize` must be a number greater than 0");this.maxSize=e.maxSize,this.cache=new Map,this.oldCache=new Map,this._size=0}_set(e,r){this.cache.set(e,r),this._size++,this._size>=this.maxSize&&(this._size=0,this.oldCache=this.cache,this.cache=new Map)}get(e){if(this.cache.has(e))return this.cache.get(e);if(this.oldCache.has(e)){let r=this.oldCache.get(e);return this.oldCache.delete(e),this._set(e,r),r}}set(e,r){return this.cache.has(e)?this.cache.set(e,r):this._set(e,r),this}has(e){return this.cache.has(e)||this.oldCache.has(e)}peek(e){if(this.cache.has(e))return this.cache.get(e);if(this.oldCache.has(e))return this.oldCache.get(e)}delete(e){let r=this.cache.delete(e);return r&&this._size--,this.oldCache.delete(e)||r}clear(){this.cache.clear(),this.oldCache.clear(),this._size=0}*keys(){for(let[e]of this)yield e}*values(){for(let[,e]of this)yield e}*[Symbol.iterator](){for(let e of this.cache)yield e;for(let e of this.oldCache){let[r]=e;this.cache.has(r)||(yield e)}}get size(){let e=0;for(let r of this.oldCache.keys())this.cache.has(r)||e++;return this._size+e}};yp.exports=vp});var Rp=d(($5,Ep)=>{"use strict";var wp=dp(),iR=gp(),sR=bp(),oR=(t,e)=>t.some(r=>typeof r=="string"?r===e:(r.lastIndex=0,r.test(e))),Ya=new sR({maxSize:1e5}),Sp=t=>typeof t=="object"&&t!==null&&!(t instanceof RegExp)&&!(t instanceof Error)&&!(t instanceof Date),Op=(t,e)=>{if(!Sp(t))return t;e={deep:!1,pascalCase:!1,...e};let{exclude:r,pascalCase:n,stopPaths:i,deep:s}=e,o=new Set(i),a=u=>(c,l)=>{if(s&&Sp(l)){let f=u===void 0?c:`${u}.${c}`;o.has(f)||(l=wp(l,a(f)))}if(!(r&&oR(r,c))){let f=n?`${c}_`:c;if(Ya.has(f))c=Ya.get(f);else{let p=iR(c,{pascalCase:n});c.length<100&&Ya.set(f,p),c=p}}return[c,l]};return wp(t,a(void 0))};Ep.exports=(t,e)=>Array.isArray(t)?Object.keys(t).map(r=>Op(t[r],e)):Op(t,e)});var Xa=d((M5,Cp)=>{"use strict";Cp.exports=function(t,e){if(typeof t!="string")throw new TypeError("Expected a string");return e=typeof e=="undefined"?"_":e,t.replace(/([a-z\d])([A-Z])/g,"$1"+e+"$2").replace(/([A-Z]+)([A-Z][a-z\d]+)/g,"$1"+e+"$2").toLowerCase()}});var Ap=d((B5,_p)=>{"use strict";_p.exports=function(t,e){for(var r={},n=Object.keys(t),i=0;i{"use strict";var aR=Ap(),uR=Xa();Tp.exports=function(t,e,r){typeof e!="string"&&(r=e,e=null),r=r||{},e=e||r.separator;var n=r.exclude||[];return aR(t,function(i,s){return i=n.indexOf(i)===-1?uR(i,e):i,[i,s]})}});var xp=d((G5,Ds)=>{"use strict";Ds.exports=t=>t.replace(/^[\r\n]+/,"").replace(/[\r\n]+$/,"");Ds.exports.start=t=>t.replace(/^[\r\n]+/,"");Ds.exports.end=t=>t.replace(/[\r\n]+$/,"")});var Ip=d((z5,Np)=>{"use strict";Np.exports=t=>{let e=t.match(/^[ \t]*(?=\S)/gm);return e?e.reduce((r,n)=>Math.min(r,n.length),Infinity):0}});var Dp=d((H5,Pp)=>{"use strict";var cR=Ip();Pp.exports=t=>{let e=cR(t);if(e===0)return t;let r=new RegExp(`^[ \\t]{${e}}`,"gm");return t.replace(r,"")}});var kp=d((W5,Fp)=>{"use strict";Fp.exports=(t,e=1,r)=>{if(r={indent:" ",includeEmptyLines:!1,...r},typeof t!="string")throw new TypeError(`Expected \`input\` to be a \`string\`, got \`${typeof t}\``);if(typeof e!="number")throw new TypeError(`Expected \`count\` to be a \`number\`, got \`${typeof e}\``);if(typeof r.indent!="string")throw new TypeError(`Expected \`options.indent\` to be a \`string\`, got \`${typeof r.indent}\``);if(e===0)return t;let n=r.includeEmptyLines?/^/gm:/^(?!\s*$)/gm;return t.replace(n,r.indent.repeat(e))}});var qp=d((V5,jp)=>{"use strict";var lR=Dp(),fR=kp();jp.exports=(t,e=0,r)=>fR(lR(t),e,r)});var Mp=d((Y5,Ka)=>{"use strict";var $p=(t,...e)=>new Promise(r=>{r(t(...e))});Ka.exports=$p;Ka.exports.default=$p});var Up=d((X5,Za)=>{"use strict";var hR=Mp(),Bp=t=>{if(!((Number.isInteger(t)||t===Infinity)&&t>0))return Promise.reject(new TypeError("Expected `concurrency` to be a number from 1 and up"));let e=[],r=0,n=()=>{r--,e.length>0&&e.shift()()},i=(a,u,...c)=>{r++;let l=hR(a,...c);u(l),l.then(n,n)},s=(a,u,...c)=>{rnew Promise(c=>s(a,c,...u));return Object.defineProperties(o,{activeCount:{get:()=>r},pendingCount:{get:()=>e.length},clearQueue:{value:()=>{e.length=0}}}),o};Za.exports=Bp;Za.exports.default=Bp});var Hp=d((K5,Ja)=>{"use strict";var Gp=Up(),Qa=class extends Error{constructor(e){super();this.value=e}},pR=async(t,e)=>e(await t),dR=async t=>{let e=await Promise.all(t);if(e[1]===!0)throw new Qa(e[0]);return!1},zp=async(t,e,r)=>{r={concurrency:Infinity,preserveOrder:!0,...r};let n=Gp(r.concurrency),i=[...t].map(o=>[o,n(pR,o,e)]),s=Gp(r.preserveOrder?1:Infinity);try{await Promise.all(i.map(o=>s(dR,o)))}catch(o){if(o instanceof Qa)return o.value;throw o}};Ja.exports=zp;Ja.exports.default=zp});var Zp=d((Z5,eu)=>{"use strict";var Wp=require("path"),Fs=require("fs"),{promisify:Vp}=require("util"),mR=Hp(),gR=Vp(Fs.stat),yR=Vp(Fs.lstat),Yp={directory:"isDirectory",file:"isFile"};function Xp({type:t}){if(!(t in Yp))throw new Error(`Invalid type specified: ${t}`)}var Kp=(t,e)=>t===void 0||e[Yp[t]]();eu.exports=async(t,e)=>{e={cwd:process.cwd(),type:"file",allowSymlinks:!0,...e},Xp(e);let r=e.allowSymlinks?gR:yR;return mR(t,async n=>{try{let i=await r(Wp.resolve(e.cwd,n));return Kp(e.type,i)}catch(i){return!1}},e)};eu.exports.sync=(t,e)=>{e={cwd:process.cwd(),allowSymlinks:!0,type:"file",...e},Xp(e);let r=e.allowSymlinks?Fs.statSync:Fs.lstatSync;for(let n of t)try{let i=r(Wp.resolve(e.cwd,n));if(Kp(e.type,i))return n}catch(i){}}});var Qp=d((J5,tu)=>{"use strict";var Jp=require("fs"),{promisify:vR}=require("util"),bR=vR(Jp.access);tu.exports=async t=>{try{return await bR(t),!0}catch(e){return!1}};tu.exports.sync=t=>{try{return Jp.accessSync(t),!0}catch(e){return!1}}});var td=d((Q5,bn)=>{"use strict";var fr=require("path"),ks=Zp(),ed=Qp(),ru=Symbol("findUp.stop");bn.exports=async(t,e={})=>{let r=fr.resolve(e.cwd||""),{root:n}=fr.parse(r),i=[].concat(t),s=async o=>{if(typeof t!="function")return ks(i,o);let a=await t(o.cwd);return typeof a=="string"?ks([a],o):a};for(;;){let o=await s({...e,cwd:r});if(o===ru)return;if(o)return fr.resolve(r,o);if(r===n)return;r=fr.dirname(r)}};bn.exports.sync=(t,e={})=>{let r=fr.resolve(e.cwd||""),{root:n}=fr.parse(r),i=[].concat(t),s=o=>{if(typeof t!="function")return ks.sync(i,o);let a=t(o.cwd);return typeof a=="string"?ks.sync([a],o):a};for(;;){let o=s({...e,cwd:r});if(o===ru)return;if(o)return fr.resolve(r,o);if(r===n)return;r=fr.dirname(r)}};bn.exports.exists=ed;bn.exports.sync.exists=ed.sync;bn.exports.stop=ru});var nd=d((eF,rd)=>{"use strict";rd.exports=function(e){return e?e instanceof Array||Array.isArray(e)||e.length>=0&&e.splice instanceof Function:!1}});var sd=d((tF,id)=>{"use strict";var ER=require("util"),wR=nd(),nu=function(e,r){(!e||e.constructor!==String)&&(r=e||{},e=Error.name);var n=function i(s){if(!this)return new i(s);s=s instanceof Error?s.message:s||this.message,Error.call(this,s),Error.captureStackTrace(this,n),this.name=e,Object.defineProperty(this,"message",{configurable:!0,enumerable:!1,get:function(){var l=s.split(/\r?\n/g);for(var f in r)if(!!r.hasOwnProperty(f)){var p=r[f];"message"in p&&(l=p.message(this[f],l)||l,wR(l)||(l=[l]))}return l.join(` +var H2=Object.create,As=Object.defineProperty,W2=Object.getPrototypeOf,Y2=Object.prototype.hasOwnProperty,V2=Object.getOwnPropertyNames,X2=Object.getOwnPropertyDescriptor;var Jf=t=>As(t,"__esModule",{value:!0});var d=(t,e)=>()=>(e||(e={exports:{}},t(e.exports,e)),e.exports),K2=(t,e)=>{for(var r in e)As(t,r,{get:e[r],enumerable:!0})},Z2=(t,e,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of V2(e))!Y2.call(t,n)&&n!=="default"&&As(t,n,{get:()=>e[n],enumerable:!(r=X2(e,n))||r.enumerable});return t},Te=t=>t&&t.__esModule?t:Z2(Jf(As(t!=null?H2(W2(t)):{},"default",{value:t,enumerable:!0})),t);var Ta=d((VD,Qf)=>{"use strict";Qf.exports=function(e,r){r===!0&&(r=0);var n=e.indexOf("://"),i=e.substring(0,n).split("+").filter(Boolean);return typeof r=="number"?i[r]:i}});var xa=d((XD,eh)=>{"use strict";var J2=Ta();function th(t){if(Array.isArray(t))return t.indexOf("ssh")!==-1||t.indexOf("rsync")!==-1;if(typeof t!="string")return!1;var e=J2(t);return t=t.substring(t.indexOf("://")+3),th(e)?!0:t.indexOf("@"){"use strict";rh.exports=t=>encodeURIComponent(t).replace(/[!'()*]/g,e=>`%${e.charCodeAt(0).toString(16).toUpperCase()}`)});var uh=d((ZD,ih)=>{"use strict";var sh="%[a-f0-9]{2}",oh=new RegExp(sh,"gi"),ah=new RegExp("("+sh+")+","gi");function Na(t,e){try{return decodeURIComponent(t.join(""))}catch(i){}if(t.length===1)return t;e=e||1;var r=t.slice(0,e),n=t.slice(e);return Array.prototype.concat.call([],Na(r),Na(n))}function Q2(t){try{return decodeURIComponent(t)}catch(n){for(var e=t.match(oh),r=1;r{"use strict";ch.exports=(t,e)=>{if(!(typeof t=="string"&&typeof e=="string"))throw new TypeError("Expected the arguments to be of type `string`");if(e==="")return[t];let r=t.indexOf(e);return r===-1?[t]:[t.slice(0,r),t.slice(r+e.length)]}});var hh=d((QD,fh)=>{"use strict";fh.exports=function(t,e){for(var r={},n=Object.keys(t),i=Array.isArray(e),s=0;s{"use strict";var tO=nh(),rO=uh(),ph=lh(),nO=hh(),iO=t=>t==null;function sO(t){switch(t.arrayFormat){case"index":return e=>(r,n)=>{let i=r.length;return n===void 0||t.skipNull&&n===null||t.skipEmptyString&&n===""?r:n===null?[...r,[xe(e,t),"[",i,"]"].join("")]:[...r,[xe(e,t),"[",xe(i,t),"]=",xe(n,t)].join("")]};case"bracket":return e=>(r,n)=>n===void 0||t.skipNull&&n===null||t.skipEmptyString&&n===""?r:n===null?[...r,[xe(e,t),"[]"].join("")]:[...r,[xe(e,t),"[]=",xe(n,t)].join("")];case"comma":case"separator":return e=>(r,n)=>n==null||n.length===0?r:r.length===0?[[xe(e,t),"=",xe(n,t)].join("")]:[[r,xe(n,t)].join(t.arrayFormatSeparator)];default:return e=>(r,n)=>n===void 0||t.skipNull&&n===null||t.skipEmptyString&&n===""?r:n===null?[...r,xe(e,t)]:[...r,[xe(e,t),"=",xe(n,t)].join("")]}}function oO(t){let e;switch(t.arrayFormat){case"index":return(r,n,i)=>{if(e=/\[(\d*)\]$/.exec(r),r=r.replace(/\[\d*\]$/,""),!e){i[r]=n;return}i[r]===void 0&&(i[r]={}),i[r][e[1]]=n};case"bracket":return(r,n,i)=>{if(e=/(\[\])$/.exec(r),r=r.replace(/\[\]$/,""),!e){i[r]=n;return}if(i[r]===void 0){i[r]=[n];return}i[r]=[].concat(i[r],n)};case"comma":case"separator":return(r,n,i)=>{let s=typeof n=="string"&&n.includes(t.arrayFormatSeparator),o=typeof n=="string"&&!s&&Dr(n,t).includes(t.arrayFormatSeparator);n=o?Dr(n,t):n;let a=s||o?n.split(t.arrayFormatSeparator).map(u=>Dr(u,t)):n===null?n:Dr(n,t);i[r]=a};default:return(r,n,i)=>{if(i[r]===void 0){i[r]=n;return}i[r]=[].concat(i[r],n)}}}function dh(t){if(typeof t!="string"||t.length!==1)throw new TypeError("arrayFormatSeparator must be single character string")}function xe(t,e){return e.encode?e.strict?tO(t):encodeURIComponent(t):t}function Dr(t,e){return e.decode?rO(t):t}function mh(t){return Array.isArray(t)?t.sort():typeof t=="object"?mh(Object.keys(t)).sort((e,r)=>Number(e)-Number(r)).map(e=>t[e]):t}function gh(t){let e=t.indexOf("#");return e!==-1&&(t=t.slice(0,e)),t}function aO(t){let e="",r=t.indexOf("#");return r!==-1&&(e=t.slice(r)),e}function yh(t){t=gh(t);let e=t.indexOf("?");return e===-1?"":t.slice(e+1)}function vh(t,e){return e.parseNumbers&&!Number.isNaN(Number(t))&&typeof t=="string"&&t.trim()!==""?t=Number(t):e.parseBooleans&&t!==null&&(t.toLowerCase()==="true"||t.toLowerCase()==="false")&&(t=t.toLowerCase()==="true"),t}function bh(t,e){e=Object.assign({decode:!0,sort:!0,arrayFormat:"none",arrayFormatSeparator:",",parseNumbers:!1,parseBooleans:!1},e),dh(e.arrayFormatSeparator);let r=oO(e),n=Object.create(null);if(typeof t!="string"||(t=t.trim().replace(/^[?#&]/,""),!t))return n;for(let i of t.split("&")){if(i==="")continue;let[s,o]=ph(e.decode?i.replace(/\+/g," "):i,"=");o=o===void 0?null:["comma","separator"].includes(e.arrayFormat)?o:Dr(o,e),r(Dr(s,e),o,n)}for(let i of Object.keys(n)){let s=n[i];if(typeof s=="object"&&s!==null)for(let o of Object.keys(s))s[o]=vh(s[o],e);else n[i]=vh(s,e)}return e.sort===!1?n:(e.sort===!0?Object.keys(n).sort():Object.keys(n).sort(e.sort)).reduce((i,s)=>{let o=n[s];return Boolean(o)&&typeof o=="object"&&!Array.isArray(o)?i[s]=mh(o):i[s]=o,i},Object.create(null))}Ke.extract=yh;Ke.parse=bh;Ke.stringify=(t,e)=>{if(!t)return"";e=Object.assign({encode:!0,strict:!0,arrayFormat:"none",arrayFormatSeparator:","},e),dh(e.arrayFormatSeparator);let r=o=>e.skipNull&&iO(t[o])||e.skipEmptyString&&t[o]==="",n=sO(e),i={};for(let o of Object.keys(t))r(o)||(i[o]=t[o]);let s=Object.keys(i);return e.sort!==!1&&s.sort(e.sort),s.map(o=>{let a=t[o];return a===void 0?"":a===null?xe(o,e):Array.isArray(a)?a.reduce(n(o),[]).join("&"):xe(o,e)+"="+xe(a,e)}).filter(o=>o.length>0).join("&")};Ke.parseUrl=(t,e)=>{e=Object.assign({decode:!0},e);let[r,n]=ph(t,"#");return Object.assign({url:r.split("?")[0]||"",query:bh(yh(t),e)},e&&e.parseFragmentIdentifier&&n?{fragmentIdentifier:Dr(n,e)}:{})};Ke.stringifyUrl=(t,e)=>{e=Object.assign({encode:!0,strict:!0},e);let r=gh(t.url).split("?")[0]||"",n=Ke.extract(t.url),i=Ke.parse(n,{sort:!1}),s=Object.assign(i,t.query),o=Ke.stringify(s,e);o&&(o=`?${o}`);let a=aO(t.url);return t.fragmentIdentifier&&(a=`#${xe(t.fragmentIdentifier,e)}`),`${r}${o}${a}`};Ke.pick=(t,e,r)=>{r=Object.assign({parseFragmentIdentifier:!0},r);let{url:n,query:i,fragmentIdentifier:s}=Ke.parseUrl(t,r);return Ke.stringifyUrl({url:n,query:nO(i,e),fragmentIdentifier:s},r)};Ke.exclude=(t,e,r)=>{let n=Array.isArray(e)?i=>!e.includes(i):(i,s)=>!e(i,s);return Ke.pick(t,n,r)}});var Sh=d((t5,wh)=>{"use strict";var uO=Ta(),cO=xa(),lO=Eh();function fO(t){t=(t||"").trim();var e={protocols:uO(t),protocol:null,port:null,resource:"",user:"",pathname:"",hash:"",search:"",href:t,query:Object.create(null)},r=t.indexOf("://"),n=-1,i=null,s=null;t.startsWith(".")&&(t.startsWith("./")&&(t=t.substring(2)),e.pathname=t,e.protocol="file");var o=t.charAt(1);return e.protocol||(e.protocol=e.protocols[0],e.protocol||(cO(t)?e.protocol="ssh":((o==="/"||o==="~")&&(t=t.substring(2)),e.protocol="file"))),r!==-1&&(t=t.substring(r+3)),s=t.split(/\/|\\/),e.protocol!=="file"?e.resource=s.shift():e.resource="",i=e.resource.split("@"),i.length===2&&(e.user=i[0],e.resource=i[1]),i=e.resource.split(":"),i.length===2&&(e.resource=i[0],i[1]?(e.port=Number(i[1]),isNaN(e.port)&&(e.port=null,s.unshift(i[1]))):e.port=null),s=s.filter(Boolean),e.protocol==="file"?e.pathname=e.href:e.pathname=e.pathname||(e.protocol!=="file"||e.href[0]==="/"?"/":"")+s.join("/"),i=e.pathname.split("#"),i.length===2&&(e.pathname=i[0],e.hash=i[1]),i=e.pathname.split("?"),i.length===2&&(e.pathname=i[0],e.search=i[1]),e.query=lO.parse(e.search),e.href=e.href.replace(/\/$/,""),e.pathname=e.pathname.replace(/\/$/,""),e}wh.exports=fO});var _h=d((r5,Oh)=>{"use strict";var hO=typeof URL=="undefined"?require("url").URL:URL,Rh=(t,e)=>e.some(r=>r instanceof RegExp?r.test(t):r===t);Oh.exports=(t,e)=>{e=Object.assign({defaultProtocol:"http:",normalizeProtocol:!0,forceHttp:!1,forceHttps:!1,stripHash:!0,stripWWW:!0,removeQueryParameters:[/^utm_\w+/i],removeTrailingSlash:!0,removeDirectoryIndex:!1,sortQueryParameters:!0},e),Reflect.has(e,"normalizeHttps")&&(e.forceHttp=e.normalizeHttps),Reflect.has(e,"normalizeHttp")&&(e.forceHttps=e.normalizeHttp),Reflect.has(e,"stripFragment")&&(e.stripHash=e.stripFragment),t=t.trim();let r=t.startsWith("//");!r&&/^\.*\//.test(t)||(t=t.replace(/^(?!(?:\w+:)?\/\/)|^\/\//,e.defaultProtocol));let i=new hO(t);if(e.forceHttp&&e.forceHttps)throw new Error("The `forceHttp` and `forceHttps` options cannot be used together");if(e.forceHttp&&i.protocol==="https:"&&(i.protocol="http:"),e.forceHttps&&i.protocol==="http:"&&(i.protocol="https:"),e.stripHash&&(i.hash=""),i.pathname&&(i.pathname=i.pathname.replace(/((?![https?:]).)\/{2,}/g,(s,o)=>/^(?!\/)/g.test(o)?`${o}/`:"/")),i.pathname&&(i.pathname=decodeURI(i.pathname)),e.removeDirectoryIndex===!0&&(e.removeDirectoryIndex=[/^index\.[a-z]+$/]),Array.isArray(e.removeDirectoryIndex)&&e.removeDirectoryIndex.length>0){let s=i.pathname.split("/"),o=s[s.length-1];Rh(o,e.removeDirectoryIndex)&&(s=s.slice(0,s.length-1),i.pathname=s.slice(1).join("/")+"/")}if(i.hostname&&(i.hostname=i.hostname.replace(/\.$/,""),e.stripWWW&&/^www\.([a-z\-\d]{2,63})\.([a-z\.]{2,5})$/.test(i.hostname)&&(i.hostname=i.hostname.replace(/^www\./,""))),Array.isArray(e.removeQueryParameters))for(let s of[...i.searchParams.keys()])Rh(s,e.removeQueryParameters)&&i.searchParams.delete(s);return e.sortQueryParameters&&i.searchParams.sort(),t=i.toString(),(e.removeTrailingSlash||i.pathname==="/")&&(t=t.replace(/\/$/,"")),r&&!e.normalizeProtocol&&(t=t.replace(/^http:\/\//,"//")),t}});var Ah=d((n5,Ch)=>{"use strict";var pO=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},dO=Sh(),mO=_h();function gO(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;if(typeof t!="string"||!t.trim())throw new Error("Invalid url.");e&&((typeof e=="undefined"?"undefined":pO(e))!=="object"&&(e={stripFragment:!1}),t=mO(t,e));var r=dO(t);return r}Ch.exports=gO});var xh=d((i5,Lh)=>{"use strict";var yO=Ah(),Th=xa();function vO(t){var e=yO(t);e.token="";var r=e.user.split(":");return r.length===2&&(r[1]==="x-oauth-basic"?e.token=r[0]:r[0]==="x-token-auth"&&(e.token=r[1])),Th(e.protocols)||Th(t)?e.protocol="ssh":e.protocols.length?e.protocol=e.protocols[0]:e.protocol="file",e.href=e.href.replace(/\/$/,""),e}Lh.exports=vO});var Ih=d((s5,Nh)=>{"use strict";var bO=xh();function Ia(t){if(typeof t!="string")throw new Error("The url must be a string.");var e=bO(t),r=e.resource.split("."),n=null;switch(e.toString=function(m){return Ia.stringify(this,m)},e.source=r.length>2?r.slice(1-r.length).join("."):e.source=e.resource,e.git_suffix=/\.git$/.test(e.pathname),e.name=decodeURIComponent(e.pathname.replace(/^\//,"").replace(/\.git$/,"")),e.owner=decodeURIComponent(e.user),e.source){case"git.cloudforge.com":e.owner=e.user,e.organization=r[0],e.source="cloudforge.com";break;case"visualstudio.com":if(e.resource==="vs-ssh.visualstudio.com"){n=e.name.split("/"),n.length===4&&(e.organization=n[1],e.owner=n[2],e.name=n[3],e.full_name=n[2]+"/"+n[3]);break}else{n=e.name.split("/"),n.length===2?(e.owner=n[1],e.name=n[1],e.full_name="_git/"+e.name):n.length===3?(e.name=n[2],n[0]==="DefaultCollection"?(e.owner=n[2],e.organization=n[0],e.full_name=e.organization+"/_git/"+e.name):(e.owner=n[0],e.full_name=e.owner+"/_git/"+e.name)):n.length===4&&(e.organization=n[0],e.owner=n[1],e.name=n[3],e.full_name=e.organization+"/"+e.owner+"/_git/"+e.name);break}case"dev.azure.com":case"azure.com":if(e.resource==="ssh.dev.azure.com"){n=e.name.split("/"),n.length===4&&(e.organization=n[1],e.owner=n[2],e.name=n[3]);break}else{n=e.name.split("/"),n.length===5?(e.organization=n[0],e.owner=n[1],e.name=n[4],e.full_name="_git/"+e.name):n.length===3?(e.name=n[2],n[0]==="DefaultCollection"?(e.owner=n[2],e.organization=n[0],e.full_name=e.organization+"/_git/"+e.name):(e.owner=n[0],e.full_name=e.owner+"/_git/"+e.name)):n.length===4&&(e.organization=n[0],e.owner=n[1],e.name=n[3],e.full_name=e.organization+"/"+e.owner+"/_git/"+e.name),e.query&&e.query.path&&(e.filepath=e.query.path.replace(/^\/+/g,"")),e.query&&e.query.version&&(e.ref=e.query.version.replace(/^GB/,""));break}default:n=e.name.split("/");var i=n.length-1;if(n.length>=2){var s=n.indexOf("-",2),o=n.indexOf("blob",2),a=n.indexOf("tree",2),u=n.indexOf("commit",2),c=n.indexOf("src",2),l=n.indexOf("raw",2);i=s>0?s-1:o>0?o-1:a>0?a-1:u>0?u-1:c>0?c-1:l>0?l-1:i,e.owner=n.slice(0,i).join("/"),e.name=n[i],u&&(e.commit=n[i+2])}e.ref="",e.filepathtype="",e.filepath="";var f=n.length>i&&n[i+1]==="-"?i+1:i;n.length>f+2&&["raw","src","blob","tree"].indexOf(n[f+1])>=0&&(e.filepathtype=n[f+1],e.ref=n[f+2],n.length>f+3&&(e.filepath=n.slice(f+3).join("/"))),e.organization=e.owner;break}e.full_name||(e.full_name=e.owner,e.name&&(e.full_name&&(e.full_name+="/"),e.full_name+=e.name)),e.owner.startsWith("scm/")&&(e.source="bitbucket-server",e.owner=e.owner.replace("scm/",""),e.organization=e.owner,e.full_name=e.owner+"/"+e.name);var p=/(projects|users)\/(.*?)\/repos\/(.*?)\/(raw|browse)(?:\/(?:$|(.+?)))?$/,y=p.exec(e.pathname);return y!=null&&(e.source="bitbucket-server",y[1]==="users"?e.owner="~"+y[2]:e.owner=y[2],e.organization=e.owner,e.name=y[3],e.filepathtype=y[4],e.filepath=y[5],e.full_name=e.owner+"/"+e.name,e.query.at?e.ref=e.query.at:e.ref=""),e}Ia.stringify=function(t,e){e=e||(t.protocols&&t.protocols.length?t.protocols.join("+"):t.protocol);var r=t.port?":"+t.port:"",n=t.user||"git",i=t.git_suffix?".git":"";switch(e){case"ssh":return r?"ssh://"+n+"@"+t.resource+r+"/"+t.full_name+i:n+"@"+t.resource+":"+t.full_name+i;case"git+ssh":case"ssh+git":case"ftp":case"ftps":return e+"://"+n+"@"+t.resource+r+"/"+t.full_name+i;case"http":case"https":var s=t.token?EO(t):t.user&&(t.protocols.includes("http")||t.protocols.includes("https"))?t.user+"@":"";return e+"://"+s+t.resource+r+"/"+wO(t)+i;default:return t.href}};function EO(t){switch(t.source){case"bitbucket.org":return"x-token-auth:"+t.token+"@";default:return t.token+"@"}}function wO(t){switch(t.source){case"bitbucket-server":return"scm/"+t.full_name;default:return""+t.full_name}}Nh.exports=Ia});var Dh=d((o5,Ph)=>{"use strict";var SO=Object.prototype.toString;Ph.exports=function(t){var e;return SO.call(t)==="[object Object]"&&(e=Object.getPrototypeOf(t),e===null||e===Object.getPrototypeOf({}))}});var kh=d((a5,Fh)=>{"use strict";Fh.exports=function(t){return t==null?[]:Array.isArray(t)?t:[t]}});var $h=d((u5,qh)=>{var OO=Object.prototype.toString;qh.exports=function(e){if(e===void 0)return"undefined";if(e===null)return"null";var r=typeof e;if(r==="boolean")return"boolean";if(r==="string")return"string";if(r==="number")return"number";if(r==="symbol")return"symbol";if(r==="function")return LO(e)?"generatorfunction":"function";if(RO(e))return"array";if(NO(e))return"buffer";if(xO(e))return"arguments";if(CO(e))return"date";if(_O(e))return"error";if(AO(e))return"regexp";switch(jh(e)){case"Symbol":return"symbol";case"Promise":return"promise";case"WeakMap":return"weakmap";case"WeakSet":return"weakset";case"Map":return"map";case"Set":return"set";case"Int8Array":return"int8array";case"Uint8Array":return"uint8array";case"Uint8ClampedArray":return"uint8clampedarray";case"Int16Array":return"int16array";case"Uint16Array":return"uint16array";case"Int32Array":return"int32array";case"Uint32Array":return"uint32array";case"Float32Array":return"float32array";case"Float64Array":return"float64array"}if(TO(e))return"generator";switch(r=OO.call(e),r){case"[object Object]":return"object";case"[object Map Iterator]":return"mapiterator";case"[object Set Iterator]":return"setiterator";case"[object String Iterator]":return"stringiterator";case"[object Array Iterator]":return"arrayiterator"}return r.slice(8,-1).toLowerCase().replace(/\s/g,"")};function jh(t){return typeof t.constructor=="function"?t.constructor.name:null}function RO(t){return Array.isArray?Array.isArray(t):t instanceof Array}function _O(t){return t instanceof Error||typeof t.message=="string"&&t.constructor&&typeof t.constructor.stackTraceLimit=="number"}function CO(t){return t instanceof Date?!0:typeof t.toDateString=="function"&&typeof t.getDate=="function"&&typeof t.setDate=="function"}function AO(t){return t instanceof RegExp?!0:typeof t.flags=="string"&&typeof t.ignoreCase=="boolean"&&typeof t.multiline=="boolean"&&typeof t.global=="boolean"}function LO(t,e){return jh(t)==="GeneratorFunction"}function TO(t){return typeof t.throw=="function"&&typeof t.return=="function"&&typeof t.next=="function"}function xO(t){try{if(typeof t.length=="number"&&typeof t.callee=="function")return!0}catch(e){if(e.message.indexOf("callee")!==-1)return!0}return!1}function NO(t){return t.constructor&&typeof t.constructor.isBuffer=="function"?t.constructor.isBuffer(t):!1}});var Hh=d((c5,Pa)=>{"use strict";var IO=Dh(),PO=kh(),Da=$h(),Mh=(t,e,r)=>{t[e]||(t[e]=[]),t[e].push(r)},Bh=(t,e,r,n)=>{t[e]||(t[e]={}),t[e][r]=n},Ls=t=>Array.isArray(t)?`[${t.map(Ls).join(", ")}]`:Da(t)==="string"?JSON.stringify(t):t,DO=t=>{if(Array.isArray(t)&&t.length>0){let[e]=t;return`${Da(e)}-array`}return Da(t)},FO=(t,e)=>{let r=t==="array"?"string-array":t;return Fa.includes(r)&&Array.isArray(e)&&e.length===0?"array":r},kO=["stopEarly","unknown","--"],Uh=["string","boolean","number"],Fa=Uh.map(t=>`${t}-array`),Gh=[...Uh,"array",...Fa],zh=t=>{t=t||{};let e={};return kO.forEach(r=>{t[r]&&(e[r]=t[r])}),Object.keys(t).forEach(r=>{let n=t[r];if(r==="arguments"&&(r="_"),typeof n=="string"&&(n={type:n}),IO(n)){let i=n,{type:s}=i;if(s){if(!Gh.includes(s))throw new TypeError(`Expected type of "${r}" to be one of ${Ls(Gh)}, got ${Ls(s)}`);if(Fa.includes(s)){let[o]=s.split("-");Mh(e,"array",{key:r,[o]:!0})}else Mh(e,s,r)}if({}.hasOwnProperty.call(i,"default")){let{default:o}=i,a=DO(o),u=FO(s,o);if(u&&u!==a)throw new TypeError(`Expected "${r}" default value to be of type "${u}", got ${Ls(a)}`);Bh(e,"default",r,o)}PO(i.alias).forEach(o=>{Bh(e,"alias",o,r)})}}),e};Pa.exports=zh;Pa.exports.default=zh});var ep=d((f5,Wh)=>{"use strict";var qO=require("util"),l5=require("fs"),Yh=require("path");function bi(t){if(t=t.toLocaleLowerCase(),t.indexOf("-")===-1&&t.indexOf("_")===-1)return t;{let e="",r=!1,n=t.match(/^-+/);for(let i=n?n[0].length:0;i0?n+=`${e}${r.charAt(i)}`:n+=o}return n}function Xh(t){return t==null?!1:typeof t=="number"||/^0x[0-9a-f]+$/i.test(t)?!0:t.length>1&&t[0]==="0"?!1:/^[-]?(?:\d+(?:\.\d*)?|\.\d+)(e[-+]?\d+)?$/.test(t)}function jO(t){if(Array.isArray(t))return t.map(o=>typeof o!="string"?o+"":o);t=t.trim();let e=0,r=null,n=null,i=null,s=[];for(let o=0;o{typeof b=="number"&&(h.nargs[g]=b,h.keys.push(g))}),typeof n.coerce=="object"&&Object.entries(n.coerce).forEach(([g,b])=>{typeof b=="function"&&(h.coercions[g]=b,h.keys.push(g))}),typeof n.config!="undefined"&&(Array.isArray(n.config)||typeof n.config=="string"?[].concat(n.config).filter(Boolean).forEach(function(g){h.configs[g]=!0}):typeof n.config=="object"&&Object.entries(n.config).forEach(([g,b])=>{(typeof b=="boolean"||typeof b=="function")&&(h.configs[g]=b)})),Lt(n.key,s,n.default,h.arrays),Object.keys(a).forEach(function(g){(h.aliases[g]||[]).forEach(function(b){a[b]=a[g]})});let R=null;z2();let A=[],_=Object.assign(Object.create(null),{_:[]}),F={};for(let g=0;g=3&&(j(T[1],h.arrays)?g=M(g,T[1],i,T[2]):j(T[1],h.nargs)!==!1?g=N(g,T[1],i,T[2]):O(T[1],T[2]));else if(b.match(v)&&o["boolean-negation"])T=b.match(v),T!==null&&Array.isArray(T)&&T.length>=2&&(E=T[1],O(E,j(E,h.arrays)?[!1]:!1));else if(b.match(/^--.+/)||!o["short-option-groups"]&&b.match(/^-[^-]+/))T=b.match(/^--?(.+)/),T!==null&&Array.isArray(T)&&T.length>=2&&(E=T[1],j(E,h.arrays)?g=M(g,E,i):j(E,h.nargs)!==!1?g=N(g,E,i):(k=i[g+1],k!==void 0&&(!k.match(/^-/)||k.match(w))&&!j(E,h.bools)&&!j(E,h.counts)||/^(true|false)$/.test(k)?(O(E,k),g++):O(E,$t(E))));else if(b.match(/^-.\..+=/))T=b.match(/^-([^=]+)=([\s\S]*)$/),T!==null&&Array.isArray(T)&&T.length>=3&&O(T[1],T[2]);else if(b.match(/^-.\..+/)&&!b.match(w))k=i[g+1],T=b.match(/^-(.\..+)/),T!==null&&Array.isArray(T)&&T.length>=2&&(E=T[1],k!==void 0&&!k.match(/^-/)&&!j(E,h.bools)&&!j(E,h.counts)?(O(E,k),g++):O(E,$t(E)));else if(b.match(/^-[^-]+/)&&!b.match(w)){S=b.slice(1,-1).split(""),L=!1;for(let re=0;reg!=="--"&&g.includes("-")).forEach(g=>{delete _[g]}),o["strip-aliased"]&&[].concat(...Object.keys(s).map(g=>s[g])).forEach(g=>{o["camel-case-expansion"]&&g.includes("-")&&delete _[g.split(".").map(b=>bi(b)).join(".")],delete _[g]});function x(g){let b=$("_",g);(typeof b=="string"||typeof b=="number")&&_._.push(b)}function N(g,b,L,E){let S,T=j(b,h.nargs);if(T=typeof T!="number"||isNaN(T)?1:T,T===0)return Mt(E)||(R=Error(m("Argument unexpected for: %s",b))),O(b,$t(b)),g;let k=Mt(E)?0:1;if(o["nargs-eats-options"])L.length-(g+1)+k0&&(O(b,E),ie--),S=g+1;S0||k&&typeof k=="number"&&S.length>=k||(T=L[ie],/^-/.test(T)&&!w.test(T)&&!jt(T)));ie++)g=ie,S.push(G(b,T))}return typeof k=="number"&&(k&&S.length1&&o["dot-notation"]&&(h.aliases[E[0]]||[]).forEach(function(S){let T=S.split("."),k=[].concat(E);k.shift(),T=T.concat(k),(h.aliases[g]||[]).includes(T.join("."))||le(_,T,L)}),j(g,h.normalize)&&!j(g,h.arrays)&&[g].concat(h.aliases[g]||[]).forEach(function(T){Object.defineProperty(F,T,{enumerable:!0,get(){return b},set(k){b=typeof k=="string"?Bt.normalize(k):k}})})}function q(g,b){h.aliases[g]&&h.aliases[g].length||(h.aliases[g]=[b],p[b]=!0),h.aliases[b]&&h.aliases[b].length||q(b,g)}function G(g,b){typeof b=="string"&&(b[0]==="'"||b[0]==='"')&&b[b.length-1]===b[0]&&(b=b.substring(1,b.length-1)),(j(g,h.bools)||j(g,h.counts))&&typeof b=="string"&&(b=b==="true");let L=Array.isArray(b)?b.map(function(E){return $(g,E)}):$(g,b);return j(g,h.counts)&&(Mt(L)||typeof L=="boolean")&&(L=ka()),j(g,h.normalize)&&j(g,h.arrays)&&(Array.isArray(b)?L=b.map(E=>Bt.normalize(E)):L=Bt.normalize(b)),L}function $(g,b){return!o["parse-positional-numbers"]&&g==="_"||!j(g,h.strings)&&!j(g,h.bools)&&!Array.isArray(b)&&(Xh(b)&&o["parse-numbers"]&&Number.isSafeInteger(Math.floor(parseFloat(`${b}`)))||!Mt(b)&&j(g,h.numbers))&&(b=Number(b)),b}function B(g){let b=Object.create(null);Le(b,h.aliases,a),Object.keys(h.configs).forEach(function(L){let E=g[L]||b[L];if(E)try{let S=null,T=Bt.resolve(Bt.cwd(),E),k=h.configs[L];if(typeof k=="function"){try{S=k(T)}catch(ie){S=ie}if(S instanceof Error){R=S;return}}else S=Bt.require(T);V(S)}catch(S){S.name==="PermissionDenied"?R=S:g[L]&&(R=Error(m("Invalid JSON config file: %s",E)))}})}function V(g,b){Object.keys(g).forEach(function(L){let E=g[L],S=b?b+"."+L:L;typeof E=="object"&&E!==null&&!Array.isArray(E)&&o["dot-notation"]?V(E,S):(!ve(_,S.split("."))||j(S,h.arrays)&&o["combine-arrays"])&&O(S,E)})}function X(){typeof u!="undefined"&&u.forEach(function(g){V(g)})}function H(g,b){if(typeof c=="undefined")return;let L=typeof c=="string"?c:"",E=Bt.env();Object.keys(E).forEach(function(S){if(L===""||S.lastIndexOf(L,0)===0){let T=S.split("__").map(function(k,ie){return ie===0&&(k=k.substring(L.length)),bi(k)});(b&&h.configs[T.join(".")]||!b)&&!ve(g,T)&&O(T.join("."),E[S])}})}function me(g){let b,L=new Set;Object.keys(g).forEach(function(E){if(!L.has(E)&&(b=j(E,h.coercions),typeof b=="function"))try{let S=$(E,b(g[E]));[].concat(h.aliases[E]||[],E).forEach(T=>{L.add(T),g[T]=S})}catch(S){R=S}})}function Be(g){return h.keys.forEach(b=>{~b.indexOf(".")||typeof g[b]=="undefined"&&(g[b]=void 0)}),g}function Le(g,b,L,E=!1){Object.keys(L).forEach(function(S){ve(g,S.split("."))||(le(g,S.split("."),L[S]),E&&(y[S]=!0),(b[S]||[]).forEach(function(T){ve(g,T.split("."))||le(g,T.split("."),L[S])}))})}function ve(g,b){let L=g;o["dot-notation"]||(b=[b.join(".")]),b.slice(0,-1).forEach(function(S){L=L[S]||{}});let E=b[b.length-1];return typeof L!="object"?!1:E in L}function le(g,b,L){let E=g;o["dot-notation"]||(b=[b.join(".")]),b.slice(0,-1).forEach(function(re){re=Zh(re),typeof E=="object"&&E[re]===void 0&&(E[re]={}),typeof E[re]!="object"||Array.isArray(E[re])?(Array.isArray(E[re])?E[re].push({}):E[re]=[E[re],{}],E=E[re][E[re].length-1]):E=E[re]});let S=Zh(b[b.length-1]),T=j(b.join("."),h.arrays),k=Array.isArray(L),ie=o["duplicate-arguments-array"];!ie&&j(S,h.nargs)&&(ie=!0,(!Mt(E[S])&&h.nargs[S]===1||Array.isArray(E[S])&&E[S].length===h.nargs[S])&&(E[S]=void 0)),L===ka()?E[S]=ka(E[S]):Array.isArray(E[S])?ie&&T&&k?E[S]=o["flatten-duplicate-arrays"]?E[S].concat(L):(Array.isArray(E[S][0])?E[S]:[E[S]]).concat([L]):!ie&&Boolean(T)===Boolean(k)?E[S]=L:E[S]=E[S].concat([L]):E[S]===void 0&&T?E[S]=k?L:[L]:ie&&!(E[S]===void 0||j(S,h.counts)||j(S,h.bools))?E[S]=[E[S],L]:E[S]=L}function Lt(...g){g.forEach(function(b){Object.keys(b||{}).forEach(function(L){h.aliases[L]||(h.aliases[L]=[].concat(s[L]||[]),h.aliases[L].concat(L).forEach(function(E){if(/-/.test(E)&&o["camel-case-expansion"]){let S=bi(E);S!==L&&h.aliases[L].indexOf(S)===-1&&(h.aliases[L].push(S),p[S]=!0)}}),h.aliases[L].concat(L).forEach(function(E){if(E.length>1&&/[A-Z]/.test(E)&&o["camel-case-expansion"]){let S=Vh(E,"-");S!==L&&h.aliases[L].indexOf(S)===-1&&(h.aliases[L].push(S),p[S]=!0)}}),h.aliases[L].forEach(function(E){h.aliases[E]=[L].concat(h.aliases[L].filter(function(S){return E!==S}))}))})})}function j(g,b){let L=[].concat(h.aliases[g]||[],g),E=Object.keys(b),S=L.find(T=>E.includes(T));return S?b[S]:!1}function qt(g){let b=Object.keys(h);return[].concat(b.map(E=>h[E])).some(function(E){return Array.isArray(E)?E.includes(g):E[g]})}function Ot(g,...b){return[].concat(...b).some(function(E){let S=g.match(E);return S&&qt(S[1])})}function vn(g){if(g.match(w)||!g.match(/^-[^-]+/))return!1;let b=!0,L,E=g.slice(1).split("");for(let S=0;Sj(g,h.arrays)?(R=Error(m("Invalid configuration: %s, opts.count excludes opts.array.",g)),!0):j(g,h.nargs)?(R=Error(m("Invalid configuration: %s, opts.count excludes opts.narg.",g)),!0):!1)}return{aliases:Object.assign({},h.aliases),argv:Object.assign(F,_),configuration:o,defaulted:Object.assign({},y),error:R,newAliases:Object.assign({},p)}}};function $O(t){let e=[],r=Object.create(null),n=!0;for(Object.keys(t).forEach(function(i){e.push([].concat(t[i],i))});n;){n=!1;for(let i=0;iMO,format:qO.format,normalize:Yh.normalize,resolve:Yh.resolve,require:t=>require(t)}),Ei=function(e,r){return Qh.parse(e.slice(),r).argv};Ei.detailed=function(t,e){return Qh.parse(t.slice(),e)};Ei.camelCase=bi;Ei.decamelize=Vh;Ei.looksLikeNumber=Xh;Wh.exports=Ei});var ip=d((h5,tp)=>{"use strict";var rp=t=>typeof t=="object"&&t!==null,np=t=>rp(t)&&!(t instanceof RegExp)&&!(t instanceof Error)&&!(t instanceof Date),qa=(t,e,r,n=new WeakMap)=>{if(r={deep:!1,target:{},...r},n.has(t))return n.get(t);n.set(t,r.target);let{target:i}=r;delete r.target;let s=o=>o.map(a=>np(a)?qa(a,e,r,n):a);if(Array.isArray(t))return s(t);for(let[o,a]of Object.entries(t)){let[u,c]=e(o,a,t);r.deep&&np(c)&&(c=Array.isArray(c)?s(c):qa(c,e,r,n)),i[u]=c}return i};tp.exports=(t,e,r)=>{if(!rp(t))throw new TypeError(`Expected an object, got \`${t}\` (${typeof t})`);return qa(t,e,r)}});var op=d((p5,ja)=>{"use strict";var BO=t=>{let e=!1,r=!1,n=!1;for(let i=0;i{if(!(typeof t=="string"||Array.isArray(t)))throw new TypeError("Expected the input to be `string | string[]`");e=Object.assign({pascalCase:!1},e);let r=i=>e.pascalCase?i.charAt(0).toUpperCase()+i.slice(1):i;return Array.isArray(t)?t=t.map(i=>i.trim()).filter(i=>i.length).join("-"):t=t.trim(),t.length===0?"":t.length===1?e.pascalCase?t.toUpperCase():t.toLowerCase():(t!==t.toLowerCase()&&(t=BO(t)),t=t.replace(/^[_.\- ]+/,"").toLowerCase().replace(/[_.\- ]+(\w|$)/g,(i,s)=>s.toUpperCase()).replace(/\d+(\w|$)/g,i=>i.toUpperCase()),r(t))};ja.exports=sp;ja.exports.default=sp});var cp=d((d5,ap)=>{"use strict";var up=class{constructor(e={}){if(!(e.maxSize&&e.maxSize>0))throw new TypeError("`maxSize` must be a number greater than 0");this.maxSize=e.maxSize,this.cache=new Map,this.oldCache=new Map,this._size=0}_set(e,r){this.cache.set(e,r),this._size++,this._size>=this.maxSize&&(this._size=0,this.oldCache=this.cache,this.cache=new Map)}get(e){if(this.cache.has(e))return this.cache.get(e);if(this.oldCache.has(e)){let r=this.oldCache.get(e);return this.oldCache.delete(e),this._set(e,r),r}}set(e,r){return this.cache.has(e)?this.cache.set(e,r):this._set(e,r),this}has(e){return this.cache.has(e)||this.oldCache.has(e)}peek(e){if(this.cache.has(e))return this.cache.get(e);if(this.oldCache.has(e))return this.oldCache.get(e)}delete(e){let r=this.cache.delete(e);return r&&this._size--,this.oldCache.delete(e)||r}clear(){this.cache.clear(),this.oldCache.clear(),this._size=0}*keys(){for(let[e]of this)yield e}*values(){for(let[,e]of this)yield e}*[Symbol.iterator](){for(let e of this.cache)yield e;for(let e of this.oldCache){let[r]=e;this.cache.has(r)||(yield e)}}get size(){let e=0;for(let r of this.oldCache.keys())this.cache.has(r)||e++;return this._size+e}};ap.exports=up});var dp=d((m5,lp)=>{"use strict";var fp=ip(),UO=op(),GO=cp(),zO=(t,e)=>t.some(r=>typeof r=="string"?r===e:(r.lastIndex=0,r.test(e))),$a=new GO({maxSize:1e5}),hp=t=>typeof t=="object"&&t!==null&&!(t instanceof RegExp)&&!(t instanceof Error)&&!(t instanceof Date),pp=(t,e)=>{if(!hp(t))return t;e={deep:!1,pascalCase:!1,...e};let{exclude:r,pascalCase:n,stopPaths:i,deep:s}=e,o=new Set(i),a=u=>(c,l)=>{if(s&&hp(l)){let f=u===void 0?c:`${u}.${c}`;o.has(f)||(l=fp(l,a(f)))}if(!(r&&zO(r,c))){let f=n?`${c}_`:c;if($a.has(f))c=$a.get(f);else{let p=UO(c,{pascalCase:n});c.length<100&&$a.set(f,p),c=p}}return[c,l]};return fp(t,a(void 0))};lp.exports=(t,e)=>Array.isArray(t)?Object.keys(t).map(r=>pp(t[r],e)):pp(t,e)});var Ma=d((g5,mp)=>{"use strict";mp.exports=function(t,e){if(typeof t!="string")throw new TypeError("Expected a string");return e=typeof e=="undefined"?"_":e,t.replace(/([a-z\d])([A-Z])/g,"$1"+e+"$2").replace(/([A-Z]+)([A-Z][a-z\d]+)/g,"$1"+e+"$2").toLowerCase()}});var yp=d((y5,gp)=>{"use strict";gp.exports=function(t,e){for(var r={},n=Object.keys(t),i=0;i{"use strict";var HO=yp(),WO=Ma();vp.exports=function(t,e,r){typeof e!="string"&&(r=e,e=null),r=r||{},e=e||r.separator;var n=r.exclude||[];return HO(t,function(i,s){return i=n.indexOf(i)===-1?WO(i,e):i,[i,s]})}});var Ep=d((b5,Ts)=>{"use strict";Ts.exports=t=>t.replace(/^[\r\n]+/,"").replace(/[\r\n]+$/,"");Ts.exports.start=t=>t.replace(/^[\r\n]+/,"");Ts.exports.end=t=>t.replace(/[\r\n]+$/,"")});var Sp=d((E5,wp)=>{"use strict";wp.exports=t=>{let e=t.match(/^[ \t]*(?=\S)/gm);return e?e.reduce((r,n)=>Math.min(r,n.length),Infinity):0}});var Rp=d((w5,Op)=>{"use strict";var YO=Sp();Op.exports=t=>{let e=YO(t);if(e===0)return t;let r=new RegExp(`^[ \\t]{${e}}`,"gm");return t.replace(r,"")}});var Cp=d((S5,_p)=>{"use strict";_p.exports=(t,e=1,r)=>{if(r={indent:" ",includeEmptyLines:!1,...r},typeof t!="string")throw new TypeError(`Expected \`input\` to be a \`string\`, got \`${typeof t}\``);if(typeof e!="number")throw new TypeError(`Expected \`count\` to be a \`number\`, got \`${typeof e}\``);if(typeof r.indent!="string")throw new TypeError(`Expected \`options.indent\` to be a \`string\`, got \`${typeof r.indent}\``);if(e===0)return t;let n=r.includeEmptyLines?/^/gm:/^(?!\s*$)/gm;return t.replace(n,r.indent.repeat(e))}});var Lp=d((O5,Ap)=>{"use strict";var VO=Rp(),XO=Cp();Ap.exports=(t,e=0,r)=>XO(VO(t),e,r)});var xp=d((R5,Ba)=>{"use strict";var Tp=(t,...e)=>new Promise(r=>{r(t(...e))});Ba.exports=Tp;Ba.exports.default=Tp});var Ip=d((_5,Ua)=>{"use strict";var KO=xp(),Np=t=>{if(!((Number.isInteger(t)||t===Infinity)&&t>0))return Promise.reject(new TypeError("Expected `concurrency` to be a number from 1 and up"));let e=[],r=0,n=()=>{r--,e.length>0&&e.shift()()},i=(a,u,...c)=>{r++;let l=KO(a,...c);u(l),l.then(n,n)},s=(a,u,...c)=>{rnew Promise(c=>s(a,c,...u));return Object.defineProperties(o,{activeCount:{get:()=>r},pendingCount:{get:()=>e.length},clearQueue:{value:()=>{e.length=0}}}),o};Ua.exports=Np;Ua.exports.default=Np});var Fp=d((C5,Ga)=>{"use strict";var Pp=Ip(),za=class extends Error{constructor(e){super();this.value=e}},ZO=async(t,e)=>e(await t),JO=async t=>{let e=await Promise.all(t);if(e[1]===!0)throw new za(e[0]);return!1},Dp=async(t,e,r)=>{r={concurrency:Infinity,preserveOrder:!0,...r};let n=Pp(r.concurrency),i=[...t].map(o=>[o,n(ZO,o,e)]),s=Pp(r.preserveOrder?1:Infinity);try{await Promise.all(i.map(o=>s(JO,o)))}catch(o){if(o instanceof za)return o.value;throw o}};Ga.exports=Dp;Ga.exports.default=Dp});var Bp=d((A5,Ha)=>{"use strict";var kp=require("path"),xs=require("fs"),{promisify:qp}=require("util"),QO=Fp(),eR=qp(xs.stat),tR=qp(xs.lstat),jp={directory:"isDirectory",file:"isFile"};function $p({type:t}){if(!(t in jp))throw new Error(`Invalid type specified: ${t}`)}var Mp=(t,e)=>t===void 0||e[jp[t]]();Ha.exports=async(t,e)=>{e={cwd:process.cwd(),type:"file",allowSymlinks:!0,...e},$p(e);let r=e.allowSymlinks?eR:tR;return QO(t,async n=>{try{let i=await r(kp.resolve(e.cwd,n));return Mp(e.type,i)}catch(i){return!1}},e)};Ha.exports.sync=(t,e)=>{e={cwd:process.cwd(),allowSymlinks:!0,type:"file",...e},$p(e);let r=e.allowSymlinks?xs.statSync:xs.lstatSync;for(let n of t)try{let i=r(kp.resolve(e.cwd,n));if(Mp(e.type,i))return n}catch(i){}}});var Gp=d((L5,Wa)=>{"use strict";var Up=require("fs"),{promisify:rR}=require("util"),nR=rR(Up.access);Wa.exports=async t=>{try{return await nR(t),!0}catch(e){return!1}};Wa.exports.sync=t=>{try{return Up.accessSync(t),!0}catch(e){return!1}}});var Hp=d((T5,bn)=>{"use strict";var lr=require("path"),Ns=Bp(),zp=Gp(),Ya=Symbol("findUp.stop");bn.exports=async(t,e={})=>{let r=lr.resolve(e.cwd||""),{root:n}=lr.parse(r),i=[].concat(t),s=async o=>{if(typeof t!="function")return Ns(i,o);let a=await t(o.cwd);return typeof a=="string"?Ns([a],o):a};for(;;){let o=await s({...e,cwd:r});if(o===Ya)return;if(o)return lr.resolve(r,o);if(r===n)return;r=lr.dirname(r)}};bn.exports.sync=(t,e={})=>{let r=lr.resolve(e.cwd||""),{root:n}=lr.parse(r),i=[].concat(t),s=o=>{if(typeof t!="function")return Ns.sync(i,o);let a=t(o.cwd);return typeof a=="string"?Ns.sync([a],o):a};for(;;){let o=s({...e,cwd:r});if(o===Ya)return;if(o)return lr.resolve(r,o);if(r===n)return;r=lr.dirname(r)}};bn.exports.exists=zp;bn.exports.sync.exists=zp.sync;bn.exports.stop=Ya});var Yp=d((x5,Wp)=>{"use strict";Wp.exports=function(e){return e?e instanceof Array||Array.isArray(e)||e.length>=0&&e.splice instanceof Function:!1}});var Xp=d((N5,Vp)=>{"use strict";var iR=require("util"),sR=Yp(),Va=function(e,r){(!e||e.constructor!==String)&&(r=e||{},e=Error.name);var n=function i(s){if(!this)return new i(s);s=s instanceof Error?s.message:s||this.message,Error.call(this,s),Error.captureStackTrace(this,n),this.name=e,Object.defineProperty(this,"message",{configurable:!0,enumerable:!1,get:function(){var l=s.split(/\r?\n/g);for(var f in r)if(!!r.hasOwnProperty(f)){var p=r[f];"message"in p&&(l=p.message(this[f],l)||l,sR(l)||(l=[l]))}return l.join(` `)},set:function(l){s=l}});var o=null,a=Object.getOwnPropertyDescriptor(this,"stack"),u=a.get,c=a.value;delete a.value,delete a.writable,a.set=function(l){o=l},a.get=function(){var l=(o||(u?u.call(this):c)).split(/\r?\n+/g);o||(l[0]=this.name+": "+this.message);var f=1;for(var p in r)if(!!r.hasOwnProperty(p)){var y=r[p];if("line"in y){var m=y.line(this[p]);m&&l.splice(f++,0," "+m)}"stack"in y&&y.stack(this[p],l)}return l.join(` -`)},Object.defineProperty(this,"stack",a)};return Object.setPrototypeOf?(Object.setPrototypeOf(n.prototype,Error.prototype),Object.setPrototypeOf(n,Error)):ER.inherits(n,Error),n};nu.append=function(t,e){return{message:function(r,n){return r=r||e,r&&(n[0]+=" "+t.replace("%s",r.toString())),n}}};nu.line=function(t,e){return{line:function(r){return r=r||e,r?t.replace("%s",r.toString()):null}}};id.exports=nu});var ud=d((rF,od)=>{"use strict";var SR=t=>{let e=t.charCodeAt(0).toString(16).toUpperCase();return"0x"+(e.length%2?"0":"")+e},OR=(t,e,r)=>{if(!e)return{message:t.message+" while parsing empty string",position:0};let n=t.message.match(/^Unexpected token (.) .*position\s+(\d+)/i),i=n?+n[2]:t.message.match(/^Unexpected end of JSON.*/i)?e.length-1:null,s=n?t.message.replace(/^Unexpected token ./,`Unexpected token ${JSON.stringify(n[1])} (${SR(n[1])})`):t.message;if(i!=null){let o=i<=r?0:i-r,a=i+r>=e.length?e.length:i+r,u=(o===0?"":"...")+e.slice(o,a)+(a===e.length?"":"...");return{message:s+` while parsing ${e===u?"":"near "}${JSON.stringify(u)}`,position:i}}else return{message:s+` while parsing '${e.slice(0,r*2)}'`,position:0}},iu=class extends SyntaxError{constructor(e,r,n,i){n=n||20;let s=OR(e,r,n);super(s.message);Object.assign(this,s),this.code="EJSONPARSE",this.systemError=e,Error.captureStackTrace(this,i||this.constructor)}get name(){return this.constructor.name}set name(e){}get[Symbol.toStringTag](){return this.constructor.name}},RR=Symbol.for("indent"),CR=Symbol.for("newline"),_R=/^\s*[{\[]((?:\r?\n)+)([\s\t]*)/,AR=/^(?:\{\}|\[\])((?:\r?\n)+)?$/,js=(t,e,r)=>{let n=ad(t);r=r||20;try{let[,i=` -`,s=" "]=n.match(AR)||n.match(_R)||[,"",""],o=JSON.parse(n,e);return o&&typeof o=="object"&&(o[CR]=i,o[RR]=s),o}catch(i){if(typeof t!="string"&&!Buffer.isBuffer(t)){let s=Array.isArray(t)&&t.length===0;throw Object.assign(new TypeError(`Cannot parse ${s?"an empty array":String(t)}`),{code:"EJSONPARSE",systemError:i})}throw new iu(i,n,r,js)}},ad=t=>String(t).replace(/^\uFEFF/,"");od.exports=js;js.JSONParseError=iu;js.noExceptions=(t,e)=>{try{return JSON.parse(ad(t),e)}catch(r){}}});var ld=d(su=>{"use strict";var qs=` -`,cd="\r",TR=function(){function t(e){this.string=e;for(var r=[0],n=0;nthis.string.length)return null;for(var r=0,n=this.offsets;n[r+1]<=e;)r++;var i=e-n[r];return{line:r,column:i}},t.prototype.indexForLocation=function(e){var r=e.line,n=e.column;return r<0||r>=this.offsets.length||n<0||n>this.lengthOfLine(r)?null:this.offsets[r]+n},t.prototype.lengthOfLine=function(e){var r=this.offsets[e],n=e===this.offsets.length-1?this.string.length:this.offsets[e+1];return n-r},t}();su.__esModule=!0;su.default=TR});var fd=d($s=>{Object.defineProperty($s,"__esModule",{value:!0});$s.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;$s.matchToToken=function(t){var e={type:"invalid",value:t[0],closed:void 0};return t[1]?(e.type="string",e.closed=!!(t[3]||t[4])):t[5]?e.type="comment":t[6]?(e.type="comment",e.closed=!!t[7]):t[8]?e.type="regex":t[9]?e.type="number":t[10]?e.type="name":t[11]?e.type="punctuator":t[12]&&(e.type="whitespace"),e}});var gd=d(Si=>{"use strict";Object.defineProperty(Si,"__esModule",{value:!0});Si.isIdentifierStart=hd;Si.isIdentifierChar=pd;Si.isIdentifierName=LR;var ou="\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",dd="\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",xR=new RegExp("["+ou+"]"),NR=new RegExp("["+ou+dd+"]");ou=dd=null;var md=[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],IR=[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];function au(t,e){let r=65536;for(let n=0,i=e.length;nt)return!1;if(r+=e[n+1],r>=t)return!0}return!1}function hd(t){return t<65?t===36:t<=90?!0:t<97?t===95:t<=122?!0:t<=65535?t>=170&&xR.test(String.fromCharCode(t)):au(t,md)}function pd(t){return t<48?t===36:t<58?!0:t<65?!1:t<=90?!0:t<97?t===95:t<=122?!0:t<=65535?t>=170&&NR.test(String.fromCharCode(t)):au(t,md)||au(t,IR)}function LR(t){let e=!0;for(let r=0,n=Array.from(t);r{"use strict";Object.defineProperty(kr,"__esModule",{value:!0});kr.isReservedWord=yd;kr.isStrictReservedWord=vd;kr.isStrictBindOnlyReservedWord=bd;kr.isStrictBindReservedWord=PR;kr.isKeyword=DR;var uu={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"],strict:["implements","interface","let","package","private","protected","public","static","yield"],strictBind:["eval","arguments"]},FR=new Set(uu.keyword),kR=new Set(uu.strict),jR=new Set(uu.strictBind);function yd(t,e){return e&&t==="await"||t==="enum"}function vd(t,e){return yd(t,e)||kR.has(t)}function bd(t){return jR.has(t)}function PR(t,e){return vd(t,e)||bd(t)}function DR(t){return FR.has(t)}});var wd=d(Lt=>{"use strict";Object.defineProperty(Lt,"__esModule",{value:!0});Object.defineProperty(Lt,"isIdentifierName",{enumerable:!0,get:function(){return cu.isIdentifierName}});Object.defineProperty(Lt,"isIdentifierChar",{enumerable:!0,get:function(){return cu.isIdentifierChar}});Object.defineProperty(Lt,"isIdentifierStart",{enumerable:!0,get:function(){return cu.isIdentifierStart}});Object.defineProperty(Lt,"isReservedWord",{enumerable:!0,get:function(){return Oi.isReservedWord}});Object.defineProperty(Lt,"isStrictBindOnlyReservedWord",{enumerable:!0,get:function(){return Oi.isStrictBindOnlyReservedWord}});Object.defineProperty(Lt,"isStrictBindReservedWord",{enumerable:!0,get:function(){return Oi.isStrictBindReservedWord}});Object.defineProperty(Lt,"isStrictReservedWord",{enumerable:!0,get:function(){return Oi.isStrictReservedWord}});Object.defineProperty(Lt,"isKeyword",{enumerable:!0,get:function(){return Oi.isKeyword}});var cu=gd(),Oi=Ed()});var Od=d((uF,Sd)=>{"use strict";var qR=/[|\\{}()[\]^$+*?.]/g;Sd.exports=function(t){if(typeof t!="string")throw new TypeError("Expected a string");return t.replace(qR,"\\$&")}});var Cd=d((cF,Rd)=>{"use strict";Rd.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 fu=d((lF,_d)=>{var jr=Cd(),Ad={};for(var lu in jr)jr.hasOwnProperty(lu)&&(Ad[jr[lu]]=lu);var N=_d.exports={rgb:{channels:3,labels:"rgb"},hsl:{channels:3,labels:"hsl"},hsv:{channels:3,labels:"hsv"},hwb:{channels:3,labels:"hwb"},cmyk:{channels:4,labels:"cmyk"},xyz:{channels:3,labels:"xyz"},lab:{channels:3,labels:"lab"},lch:{channels:3,labels:"lch"},hex:{channels:1,labels:["hex"]},keyword:{channels:1,labels:["keyword"]},ansi16:{channels:1,labels:["ansi16"]},ansi256:{channels:1,labels:["ansi256"]},hcg:{channels:3,labels:["h","c","g"]},apple:{channels:3,labels:["r16","g16","b16"]},gray:{channels:1,labels:["gray"]}};for(var Ke in N)if(N.hasOwnProperty(Ke)){if(!("channels"in N[Ke]))throw new Error("missing channels property: "+Ke);if(!("labels"in N[Ke]))throw new Error("missing channel labels property: "+Ke);if(N[Ke].labels.length!==N[Ke].channels)throw new Error("channel and label counts mismatch: "+Ke);Td=N[Ke].channels,Ld=N[Ke].labels,delete N[Ke].channels,delete N[Ke].labels,Object.defineProperty(N[Ke],"channels",{value:Td}),Object.defineProperty(N[Ke],"labels",{value:Ld})}var Td,Ld;N.rgb.hsl=function(t){var e=t[0]/255,r=t[1]/255,n=t[2]/255,i=Math.min(e,r,n),s=Math.max(e,r,n),o=s-i,a,u,c;return s===i?a=0:e===s?a=(r-n)/o:r===s?a=2+(n-e)/o:n===s&&(a=4+(e-r)/o),a=Math.min(a*60,360),a<0&&(a+=360),c=(i+s)/2,s===i?u=0:c<=.5?u=o/(s+i):u=o/(2-s-i),[a,u*100,c*100]};N.rgb.hsv=function(t){var e,r,n,i,s,o=t[0]/255,a=t[1]/255,u=t[2]/255,c=Math.max(o,a,u),l=c-Math.min(o,a,u),f=function(p){return(c-p)/6/l+1/2};return l===0?i=s=0:(s=l/c,e=f(o),r=f(a),n=f(u),o===c?i=n-r:a===c?i=1/3+e-n:u===c&&(i=2/3+r-e),i<0?i+=1:i>1&&(i-=1)),[i*360,s*100,c*100]};N.rgb.hwb=function(t){var e=t[0],r=t[1],n=t[2],i=N.rgb.hsl(t)[0],s=1/255*Math.min(e,Math.min(r,n));return n=1-1/255*Math.max(e,Math.max(r,n)),[i,s*100,n*100]};N.rgb.cmyk=function(t){var e=t[0]/255,r=t[1]/255,n=t[2]/255,i,s,o,a;return a=Math.min(1-e,1-r,1-n),i=(1-e-a)/(1-a)||0,s=(1-r-a)/(1-a)||0,o=(1-n-a)/(1-a)||0,[i*100,s*100,o*100,a*100]};function $R(t,e){return Math.pow(t[0]-e[0],2)+Math.pow(t[1]-e[1],2)+Math.pow(t[2]-e[2],2)}N.rgb.keyword=function(t){var e=Ad[t];if(e)return e;var r=Infinity,n;for(var i in jr)if(jr.hasOwnProperty(i)){var s=jr[i],o=$R(t,s);o.04045?Math.pow((e+.055)/1.055,2.4):e/12.92,r=r>.04045?Math.pow((r+.055)/1.055,2.4):r/12.92,n=n>.04045?Math.pow((n+.055)/1.055,2.4):n/12.92;var i=e*.4124+r*.3576+n*.1805,s=e*.2126+r*.7152+n*.0722,o=e*.0193+r*.1192+n*.9505;return[i*100,s*100,o*100]};N.rgb.lab=function(t){var e=N.rgb.xyz(t),r=e[0],n=e[1],i=e[2],s,o,a;return r/=95.047,n/=100,i/=108.883,r=r>.008856?Math.pow(r,1/3):7.787*r+16/116,n=n>.008856?Math.pow(n,1/3):7.787*n+16/116,i=i>.008856?Math.pow(i,1/3):7.787*i+16/116,s=116*n-16,o=500*(r-n),a=200*(n-i),[s,o,a]};N.hsl.rgb=function(t){var e=t[0]/360,r=t[1]/100,n=t[2]/100,i,s,o,a,u;if(r===0)return u=n*255,[u,u,u];n<.5?s=n*(1+r):s=n+r-n*r,i=2*n-s,a=[0,0,0];for(var c=0;c<3;c++)o=e+1/3*-(c-1),o<0&&o++,o>1&&o--,6*o<1?u=i+(s-i)*6*o:2*o<1?u=s:3*o<2?u=i+(s-i)*(2/3-o)*6:u=i,a[c]=u*255;return a};N.hsl.hsv=function(t){var e=t[0],r=t[1]/100,n=t[2]/100,i=r,s=Math.max(n,.01),o,a;return n*=2,r*=n<=1?n:2-n,i*=s<=1?s:2-s,a=(n+r)/2,o=n===0?2*i/(s+i):2*r/(n+r),[e,o*100,a*100]};N.hsv.rgb=function(t){var e=t[0]/60,r=t[1]/100,n=t[2]/100,i=Math.floor(e)%6,s=e-Math.floor(e),o=255*n*(1-r),a=255*n*(1-r*s),u=255*n*(1-r*(1-s));switch(n*=255,i){case 0:return[n,u,o];case 1:return[a,n,o];case 2:return[o,n,u];case 3:return[o,a,n];case 4:return[u,o,n];case 5:return[n,o,a]}};N.hsv.hsl=function(t){var e=t[0],r=t[1]/100,n=t[2]/100,i=Math.max(n,.01),s,o,a;return a=(2-r)*n,s=(2-r)*i,o=r*i,o/=s<=1?s:2-s,o=o||0,a/=2,[e,o*100,a*100]};N.hwb.rgb=function(t){var e=t[0]/360,r=t[1]/100,n=t[2]/100,i=r+n,s,o,a,u;i>1&&(r/=i,n/=i),s=Math.floor(6*e),o=1-n,a=6*e-s,(s&1)!=0&&(a=1-a),u=r+a*(o-r);var c,l,f;switch(s){default:case 6:case 0:c=o,l=u,f=r;break;case 1:c=u,l=o,f=r;break;case 2:c=r,l=o,f=u;break;case 3:c=r,l=u,f=o;break;case 4:c=u,l=r,f=o;break;case 5:c=o,l=r,f=u;break}return[c*255,l*255,f*255]};N.cmyk.rgb=function(t){var e=t[0]/100,r=t[1]/100,n=t[2]/100,i=t[3]/100,s,o,a;return s=1-Math.min(1,e*(1-i)+i),o=1-Math.min(1,r*(1-i)+i),a=1-Math.min(1,n*(1-i)+i),[s*255,o*255,a*255]};N.xyz.rgb=function(t){var e=t[0]/100,r=t[1]/100,n=t[2]/100,i,s,o;return i=e*3.2406+r*-1.5372+n*-.4986,s=e*-.9689+r*1.8758+n*.0415,o=e*.0557+r*-.204+n*1.057,i=i>.0031308?1.055*Math.pow(i,1/2.4)-.055:i*12.92,s=s>.0031308?1.055*Math.pow(s,1/2.4)-.055:s*12.92,o=o>.0031308?1.055*Math.pow(o,1/2.4)-.055:o*12.92,i=Math.min(Math.max(0,i),1),s=Math.min(Math.max(0,s),1),o=Math.min(Math.max(0,o),1),[i*255,s*255,o*255]};N.xyz.lab=function(t){var e=t[0],r=t[1],n=t[2],i,s,o;return e/=95.047,r/=100,n/=108.883,e=e>.008856?Math.pow(e,1/3):7.787*e+16/116,r=r>.008856?Math.pow(r,1/3):7.787*r+16/116,n=n>.008856?Math.pow(n,1/3):7.787*n+16/116,i=116*r-16,s=500*(e-r),o=200*(r-n),[i,s,o]};N.lab.xyz=function(t){var e=t[0],r=t[1],n=t[2],i,s,o;s=(e+16)/116,i=r/500+s,o=s-n/200;var a=Math.pow(s,3),u=Math.pow(i,3),c=Math.pow(o,3);return s=a>.008856?a:(s-16/116)/7.787,i=u>.008856?u:(i-16/116)/7.787,o=c>.008856?c:(o-16/116)/7.787,i*=95.047,s*=100,o*=108.883,[i,s,o]};N.lab.lch=function(t){var e=t[0],r=t[1],n=t[2],i,s,o;return i=Math.atan2(n,r),s=i*360/2/Math.PI,s<0&&(s+=360),o=Math.sqrt(r*r+n*n),[e,o,s]};N.lch.lab=function(t){var e=t[0],r=t[1],n=t[2],i,s,o;return o=n/360*2*Math.PI,i=r*Math.cos(o),s=r*Math.sin(o),[e,i,s]};N.rgb.ansi16=function(t){var e=t[0],r=t[1],n=t[2],i=1 in arguments?arguments[1]:N.rgb.hsv(t)[2];if(i=Math.round(i/50),i===0)return 30;var s=30+(Math.round(n/255)<<2|Math.round(r/255)<<1|Math.round(e/255));return i===2&&(s+=60),s};N.hsv.ansi16=function(t){return N.rgb.ansi16(N.hsv.rgb(t),t[2])};N.rgb.ansi256=function(t){var e=t[0],r=t[1],n=t[2];if(e===r&&r===n)return e<8?16:e>248?231:Math.round((e-8)/247*24)+232;var i=16+36*Math.round(e/255*5)+6*Math.round(r/255*5)+Math.round(n/255*5);return i};N.ansi16.rgb=function(t){var e=t%10;if(e===0||e===7)return t>50&&(e+=3.5),e=e/10.5*255,[e,e,e];var r=(~~(t>50)+1)*.5,n=(e&1)*r*255,i=(e>>1&1)*r*255,s=(e>>2&1)*r*255;return[n,i,s]};N.ansi256.rgb=function(t){if(t>=232){var e=(t-232)*10+8;return[e,e,e]}t-=16;var r,n=Math.floor(t/36)/5*255,i=Math.floor((r=t%36)/6)/5*255,s=r%6/5*255;return[n,i,s]};N.rgb.hex=function(t){var e=((Math.round(t[0])&255)<<16)+((Math.round(t[1])&255)<<8)+(Math.round(t[2])&255),r=e.toString(16).toUpperCase();return"000000".substring(r.length)+r};N.hex.rgb=function(t){var e=t.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);if(!e)return[0,0,0];var r=e[0];e[0].length===3&&(r=r.split("").map(function(a){return a+a}).join(""));var n=parseInt(r,16),i=n>>16&255,s=n>>8&255,o=n&255;return[i,s,o]};N.rgb.hcg=function(t){var e=t[0]/255,r=t[1]/255,n=t[2]/255,i=Math.max(Math.max(e,r),n),s=Math.min(Math.min(e,r),n),o=i-s,a,u;return o<1?a=s/(1-o):a=0,o<=0?u=0:i===e?u=(r-n)/o%6:i===r?u=2+(n-e)/o:u=4+(e-r)/o+4,u/=6,u%=1,[u*360,o*100,a*100]};N.hsl.hcg=function(t){var e=t[1]/100,r=t[2]/100,n=1,i=0;return r<.5?n=2*e*r:n=2*e*(1-r),n<1&&(i=(r-.5*n)/(1-n)),[t[0],n*100,i*100]};N.hsv.hcg=function(t){var e=t[1]/100,r=t[2]/100,n=e*r,i=0;return n<1&&(i=(r-n)/(1-n)),[t[0],n*100,i*100]};N.hcg.rgb=function(t){var e=t[0]/360,r=t[1]/100,n=t[2]/100;if(r===0)return[n*255,n*255,n*255];var i=[0,0,0],s=e%1*6,o=s%1,a=1-o,u=0;switch(Math.floor(s)){case 0:i[0]=1,i[1]=o,i[2]=0;break;case 1:i[0]=a,i[1]=1,i[2]=0;break;case 2:i[0]=0,i[1]=1,i[2]=o;break;case 3:i[0]=0,i[1]=a,i[2]=1;break;case 4:i[0]=o,i[1]=0,i[2]=1;break;default:i[0]=1,i[1]=0,i[2]=a}return u=(1-r)*n,[(r*i[0]+u)*255,(r*i[1]+u)*255,(r*i[2]+u)*255]};N.hcg.hsv=function(t){var e=t[1]/100,r=t[2]/100,n=e+r*(1-e),i=0;return n>0&&(i=e/n),[t[0],i*100,n*100]};N.hcg.hsl=function(t){var e=t[1]/100,r=t[2]/100,n=r*(1-e)+.5*e,i=0;return n>0&&n<.5?i=e/(2*n):n>=.5&&n<1&&(i=e/(2*(1-n))),[t[0],i*100,n*100]};N.hcg.hwb=function(t){var e=t[1]/100,r=t[2]/100,n=e+r*(1-e);return[t[0],(n-e)*100,(1-n)*100]};N.hwb.hcg=function(t){var e=t[1]/100,r=t[2]/100,n=1-r,i=n-e,s=0;return i<1&&(s=(n-i)/(1-i)),[t[0],i*100,s*100]};N.apple.rgb=function(t){return[t[0]/65535*255,t[1]/65535*255,t[2]/65535*255]};N.rgb.apple=function(t){return[t[0]/255*65535,t[1]/255*65535,t[2]/255*65535]};N.gray.rgb=function(t){return[t[0]/100*255,t[0]/100*255,t[0]/100*255]};N.gray.hsl=N.gray.hsv=function(t){return[0,0,t[0]]};N.gray.hwb=function(t){return[0,100,t[0]]};N.gray.cmyk=function(t){return[0,0,0,t[0]]};N.gray.lab=function(t){return[t[0],0,0]};N.gray.hex=function(t){var e=Math.round(t[0]/100*255)&255,r=(e<<16)+(e<<8)+e,n=r.toString(16).toUpperCase();return"000000".substring(n.length)+n};N.rgb.gray=function(t){var e=(t[0]+t[1]+t[2])/3;return[e/255*100]}});var Nd=d((fF,xd)=>{var Ms=fu();function MR(){for(var t={},e=Object.keys(Ms),r=e.length,n=0;n{var hu=fu(),zR=Nd(),En={},HR=Object.keys(hu);function WR(t){var e=function(r){return r==null?r:(arguments.length>1&&(r=Array.prototype.slice.call(arguments)),t(r))};return"conversion"in t&&(e.conversion=t.conversion),e}function VR(t){var e=function(r){if(r==null)return r;arguments.length>1&&(r=Array.prototype.slice.call(arguments));var n=t(r);if(typeof n=="object")for(var i=n.length,s=0;s{"use strict";var wn=Pd(),Bs=(t,e)=>function(){return`[${t.apply(wn,arguments)+e}m`},Us=(t,e)=>function(){let r=t.apply(wn,arguments);return`[${38+e};5;${r}m`},Gs=(t,e)=>function(){let r=t.apply(wn,arguments);return`[${38+e};2;${r[0]};${r[1]};${r[2]}m`};function YR(){let t=new Map,e={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],gray:[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]}};e.color.grey=e.color.gray;for(let i of Object.keys(e)){let s=e[i];for(let o of Object.keys(s)){let a=s[o];e[o]={open:`[${a[0]}m`,close:`[${a[1]}m`},s[o]=e[o],t.set(a[0],a[1])}Object.defineProperty(e,i,{value:s,enumerable:!1}),Object.defineProperty(e,"codes",{value:t,enumerable:!1})}let r=i=>i,n=(i,s,o)=>[i,s,o];e.color.close="",e.bgColor.close="",e.color.ansi={ansi:Bs(r,0)},e.color.ansi256={ansi256:Us(r,0)},e.color.ansi16m={rgb:Gs(n,0)},e.bgColor.ansi={ansi:Bs(r,10)},e.bgColor.ansi256={ansi256:Us(r,10)},e.bgColor.ansi16m={rgb:Gs(n,10)};for(let i of Object.keys(wn)){if(typeof wn[i]!="object")continue;let s=wn[i];i==="ansi16"&&(i="ansi"),"ansi16"in s&&(e.color.ansi[i]=Bs(s.ansi16,0),e.bgColor.ansi[i]=Bs(s.ansi16,10)),"ansi256"in s&&(e.color.ansi256[i]=Us(s.ansi256,0),e.bgColor.ansi256[i]=Us(s.ansi256,10)),"rgb"in s&&(e.color.ansi16m[i]=Gs(s.rgb,0),e.bgColor.ansi16m[i]=Gs(s.rgb,10))}return e}Object.defineProperty(Dd,"exports",{enumerable:!0,get:YR})});var jd=d((dF,kd)=>{"use strict";kd.exports=(t,e)=>{e=e||process.argv;let r=t.startsWith("-")?"":t.length===1?"-":"--",n=e.indexOf(r+t),i=e.indexOf("--");return n!==-1&&(i===-1?!0:n{"use strict";var XR=require("os"),Rt=jd(),Ne=process.env,Sn;Rt("no-color")||Rt("no-colors")||Rt("color=false")?Sn=!1:(Rt("color")||Rt("colors")||Rt("color=true")||Rt("color=always"))&&(Sn=!0);"FORCE_COLOR"in Ne&&(Sn=Ne.FORCE_COLOR.length===0||parseInt(Ne.FORCE_COLOR,10)!==0);function KR(t){return t===0?!1:{level:t,hasBasic:!0,has256:t>=2,has16m:t>=3}}function ZR(t){if(Sn===!1)return 0;if(Rt("color=16m")||Rt("color=full")||Rt("color=truecolor"))return 3;if(Rt("color=256"))return 2;if(t&&!t.isTTY&&Sn!==!0)return 0;let e=Sn?1:0;if(process.platform==="win32"){let r=XR.release().split(".");return Number(process.versions.node.split(".")[0])>=8&&Number(r[0])>=10&&Number(r[2])>=10586?Number(r[2])>=14931?3:2:1}if("CI"in Ne)return["TRAVIS","CIRCLECI","APPVEYOR","GITLAB_CI"].some(r=>r in Ne)||Ne.CI_NAME==="codeship"?1:e;if("TEAMCITY_VERSION"in Ne)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(Ne.TEAMCITY_VERSION)?1:0;if(Ne.COLORTERM==="truecolor")return 3;if("TERM_PROGRAM"in Ne){let r=parseInt((Ne.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(Ne.TERM_PROGRAM){case"iTerm.app":return r>=3?3:2;case"Apple_Terminal":return 2}}return/-256(color)?$/i.test(Ne.TERM)?2:/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(Ne.TERM)||"COLORTERM"in Ne?1:(Ne.TERM==="dumb",e)}function pu(t){let e=ZR(t);return KR(e)}qd.exports={supportsColor:pu,stdout:pu(process.stdout),stderr:pu(process.stderr)}});var zd=d((gF,Md)=>{"use strict";var JR=/(?:\\(u[a-f\d]{4}|x[a-f\d]{2}|.))|(?:\{(~)?(\w+(?:\([^)]*\))?(?:\.\w+(?:\([^)]*\))?)*)(?:[ \t]|(?=\r?\n)))|(\})|((?:.|[\r\n\f])+?)/gi,Bd=/(?:^|\.)(\w+)(?:\(([^)]*)\))?/g,QR=/^(['"])((?:\\.|(?!\1)[^\\])*)\1$/,eC=/\\(u[a-f\d]{4}|x[a-f\d]{2}|.)|([^\\])/gi,tC=new Map([["n",` -`],["r","\r"],["t"," "],["b","\b"],["f","\f"],["v","\v"],["0","\0"],["\\","\\"],["e",""],["a","\x07"]]);function Ud(t){return t[0]==="u"&&t.length===5||t[0]==="x"&&t.length===3?String.fromCharCode(parseInt(t.slice(1),16)):tC.get(t)||t}function rC(t,e){let r=[],n=e.trim().split(/\s*,\s*/g),i;for(let s of n)if(!isNaN(s))r.push(Number(s));else if(i=s.match(QR))r.push(i[2].replace(eC,(o,a,u)=>a?Ud(a):u));else throw new Error(`Invalid Chalk template style argument: ${s} (in style '${t}')`);return r}function nC(t){Bd.lastIndex=0;let e=[],r;for(;(r=Bd.exec(t))!==null;){let n=r[1];if(r[2]){let i=rC(n,r[2]);e.push([n].concat(i))}else e.push([n])}return e}function Gd(t,e){let r={};for(let i of e)for(let s of i.styles)r[s[0]]=i.inverse?null:s.slice(1);let n=t;for(let i of Object.keys(r))if(Array.isArray(r[i])){if(!(i in n))throw new Error(`Unknown Chalk style: ${i}`);r[i].length>0?n=n[i].apply(n,r[i]):n=n[i]}return n}Md.exports=(t,e)=>{let r=[],n=[],i=[];if(e.replace(JR,(s,o,a,u,c,l)=>{if(o)i.push(Ud(o));else if(u){let f=i.join("");i=[],n.push(r.length===0?f:Gd(t,r)(f)),r.push({inverse:a,styles:nC(u)})}else if(c){if(r.length===0)throw new Error("Found extraneous } in Chalk template literal");n.push(Gd(t,r)(i.join(""))),i=[],r.pop()}else i.push(l)}),n.push(i.join("")),r.length>0){let s=`Chalk template literal is missing ${r.length} closing bracket${r.length===1?"":"s"} (\`}\`)`;throw new Error(s)}return n.join("")}});var Xd=d((yF,Ri)=>{"use strict";var du=Od(),me=Fd(),mu=$d().stdout,iC=zd(),Hd=process.platform==="win32"&&!(process.env.TERM||"").toLowerCase().startsWith("xterm"),Wd=["ansi","ansi","ansi256","ansi16m"],Vd=new Set(["gray"]),On=Object.create(null);function Yd(t,e){e=e||{};let r=mu?mu.level:0;t.level=e.level===void 0?r:e.level,t.enabled="enabled"in e?e.enabled:t.level>0}function Ci(t){if(!this||!(this instanceof Ci)||this.template){let e={};return Yd(e,t),e.template=function(){let r=[].slice.call(arguments);return sC.apply(null,[e.template].concat(r))},Object.setPrototypeOf(e,Ci.prototype),Object.setPrototypeOf(e.template,e),e.template.constructor=Ci,e.template}Yd(this,t)}Hd&&(me.blue.open="");for(let t of Object.keys(me))me[t].closeRe=new RegExp(du(me[t].close),"g"),On[t]={get(){let e=me[t];return zs.call(this,this._styles?this._styles.concat(e):[e],this._empty,t)}};On.visible={get(){return zs.call(this,this._styles||[],!0,"visible")}};me.color.closeRe=new RegExp(du(me.color.close),"g");for(let t of Object.keys(me.color.ansi))Vd.has(t)||(On[t]={get(){let e=this.level;return function(){let n={open:me.color[Wd[e]][t].apply(null,arguments),close:me.color.close,closeRe:me.color.closeRe};return zs.call(this,this._styles?this._styles.concat(n):[n],this._empty,t)}}});me.bgColor.closeRe=new RegExp(du(me.bgColor.close),"g");for(let t of Object.keys(me.bgColor.ansi)){if(Vd.has(t))continue;let e="bg"+t[0].toUpperCase()+t.slice(1);On[e]={get(){let r=this.level;return function(){let i={open:me.bgColor[Wd[r]][t].apply(null,arguments),close:me.bgColor.close,closeRe:me.bgColor.closeRe};return zs.call(this,this._styles?this._styles.concat(i):[i],this._empty,t)}}}}var oC=Object.defineProperties(()=>{},On);function zs(t,e,r){let n=function(){return aC.apply(n,arguments)};n._styles=t,n._empty=e;let i=this;return Object.defineProperty(n,"level",{enumerable:!0,get(){return i.level},set(s){i.level=s}}),Object.defineProperty(n,"enabled",{enumerable:!0,get(){return i.enabled},set(s){i.enabled=s}}),n.hasGrey=this.hasGrey||r==="gray"||r==="grey",n.__proto__=oC,n}function aC(){let t=arguments,e=t.length,r=String(arguments[0]);if(e===0)return"";if(e>1)for(let i=1;i{"use strict";Object.defineProperty(_i,"__esModule",{value:!0});_i.shouldHighlight=Kd;_i.getChalk=Zd;_i.default=uC;var Jd=cC(fd()),Qd=wd(),gu=lC(Xd());function lC(t){return t&&t.__esModule?t:{default:t}}function em(){if(typeof WeakMap!="function")return null;var t=new WeakMap;return em=function(){return t},t}function cC(t){if(t&&t.__esModule)return t;if(t===null||typeof t!="object"&&typeof t!="function")return{default:t};var e=em();if(e&&e.has(t))return e.get(t);var r={},n=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var i in t)if(Object.prototype.hasOwnProperty.call(t,i)){var s=n?Object.getOwnPropertyDescriptor(t,i):null;s&&(s.get||s.set)?Object.defineProperty(r,i,s):r[i]=t[i]}return r.default=t,e&&e.set(t,r),r}var fC=new Set(["as","async","from","get","of","set"]);function hC(t){return{keyword:t.cyan,capitalized:t.yellow,jsxIdentifier:t.yellow,punctuator:t.yellow,number:t.magenta,string:t.green,regex:t.magenta,comment:t.grey,invalid:t.white.bgRed.bold}}var pC=/\r\n|[\n\r\u2028\u2029]/,dC=/^[()[\]{}]$/,tm;{let{matchToToken:t}=Jd,e=/^[a-z][\w-]*$/i,r=function(n,i,s){if(n.type==="name"){if((0,Qd.isKeyword)(n.value)||(0,Qd.isStrictReservedWord)(n.value,!0)||fC.has(n.value))return"keyword";if(e.test(n.value)&&(s[i-1]==="<"||s.substr(i-2,2)=="s(o)).join(` -`):r+=i}return r}function Kd(t){return gu.default.supportsColor||t.forceColor}function Zd(t){let e=gu.default;return t.forceColor&&(e=new gu.default.constructor({enabled:!0,level:1})),e}function uC(t,e={}){if(Kd(e)){let r=Zd(e),n=hC(r);return mC(n,t)}else return t}});var am=d(Hs=>{"use strict";Object.defineProperty(Hs,"__esModule",{value:!0});Hs.codeFrameColumns=nm;Hs.default=gC;var yu=yC(rm());function im(){if(typeof WeakMap!="function")return null;var t=new WeakMap;return im=function(){return t},t}function yC(t){if(t&&t.__esModule)return t;if(t===null||typeof t!="object"&&typeof t!="function")return{default:t};var e=im();if(e&&e.has(t))return e.get(t);var r={},n=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var i in t)if(Object.prototype.hasOwnProperty.call(t,i)){var s=n?Object.getOwnPropertyDescriptor(t,i):null;s&&(s.get||s.set)?Object.defineProperty(r,i,s):r[i]=t[i]}return r.default=t,e&&e.set(t,r),r}var sm=!1;function vC(t){return{gutter:t.grey,marker:t.red.bold,message:t.red.bold}}var om=/\r\n|[\n\r\u2028\u2029]/;function bC(t,e,r){let n=Object.assign({column:0,line:-1},t.start),i=Object.assign({},n,t.end),{linesAbove:s=2,linesBelow:o=3}=r||{},a=n.line,u=n.column,c=i.line,l=i.column,f=Math.max(a-(s+1),0),p=Math.min(e.length,c+o);a===-1&&(f=0),c===-1&&(p=e.length);let y=c-a,m={};if(y)for(let h=0;h<=y;h++){let E=h+a;if(!u)m[E]=!0;else if(h===0){let O=e[E-1].length;m[E]=[u,O-u+1]}else if(h===y)m[E]=[0,l];else{let O=e[E-h].length;m[E]=[0,O]}}else u===l?u?m[a]=[u,0]:m[a]=!0:m[a]=[u,l-u];return{start:f,end:p,markerLines:m}}function nm(t,e,r={}){let n=(r.highlightCode||r.forceColor)&&(0,yu.shouldHighlight)(r),i=(0,yu.getChalk)(r),s=vC(i),o=(h,E)=>n?h(E):E,a=t.split(om),{start:u,end:c,markerLines:l}=bC(e,a,r),f=e.start&&typeof e.start.column=="number",p=String(c).length,m=(n?(0,yu.default)(t,r):t).split(om).slice(u,c).map((h,E)=>{let O=u+1+E,q=` ${` ${O}`.slice(-p)} |`,x=l[O],V=!l[O+1];if(x){let j="";if(Array.isArray(x)){let P=h.slice(0,Math.max(x[0]-1,0)).replace(/[^\t]/g," "),z=x[1]||1;j=[` - `,o(s.gutter,q.replace(/\d/g," "))," ",P,o(s.marker,"^").repeat(z)].join(""),V&&r.message&&(j+=" "+o(s.message,r.message))}return[o(s.marker,">"),o(s.gutter,q),h.length>0?` ${h}`:"",j].join("")}else return` ${o(s.gutter,q)}${h.length>0?` ${h}`:""}`}).join(` +`)},Object.defineProperty(this,"stack",a)};return Object.setPrototypeOf?(Object.setPrototypeOf(n.prototype,Error.prototype),Object.setPrototypeOf(n,Error)):iR.inherits(n,Error),n};Va.append=function(t,e){return{message:function(r,n){return r=r||e,r&&(n[0]+=" "+t.replace("%s",r.toString())),n}}};Va.line=function(t,e){return{line:function(r){return r=r||e,r?t.replace("%s",r.toString()):null}}};Vp.exports=Va});var Jp=d((I5,Kp)=>{"use strict";var oR=t=>{let e=t.charCodeAt(0).toString(16).toUpperCase();return"0x"+(e.length%2?"0":"")+e},aR=(t,e,r)=>{if(!e)return{message:t.message+" while parsing empty string",position:0};let n=t.message.match(/^Unexpected token (.) .*position\s+(\d+)/i),i=n?+n[2]:t.message.match(/^Unexpected end of JSON.*/i)?e.length-1:null,s=n?t.message.replace(/^Unexpected token ./,`Unexpected token ${JSON.stringify(n[1])} (${oR(n[1])})`):t.message;if(i!=null){let o=i<=r?0:i-r,a=i+r>=e.length?e.length:i+r,u=(o===0?"":"...")+e.slice(o,a)+(a===e.length?"":"...");return{message:s+` while parsing ${e===u?"":"near "}${JSON.stringify(u)}`,position:i}}else return{message:s+` while parsing '${e.slice(0,r*2)}'`,position:0}},Xa=class extends SyntaxError{constructor(e,r,n,i){n=n||20;let s=aR(e,r,n);super(s.message);Object.assign(this,s),this.code="EJSONPARSE",this.systemError=e,Error.captureStackTrace(this,i||this.constructor)}get name(){return this.constructor.name}set name(e){}get[Symbol.toStringTag](){return this.constructor.name}},uR=Symbol.for("indent"),cR=Symbol.for("newline"),lR=/^\s*[{\[]((?:\r?\n)+)([\s\t]*)/,fR=/^(?:\{\}|\[\])((?:\r?\n)+)?$/,Is=(t,e,r)=>{let n=Zp(t);r=r||20;try{let[,i=` +`,s=" "]=n.match(fR)||n.match(lR)||[,"",""],o=JSON.parse(n,e);return o&&typeof o=="object"&&(o[cR]=i,o[uR]=s),o}catch(i){if(typeof t!="string"&&!Buffer.isBuffer(t)){let s=Array.isArray(t)&&t.length===0;throw Object.assign(new TypeError(`Cannot parse ${s?"an empty array":String(t)}`),{code:"EJSONPARSE",systemError:i})}throw new Xa(i,n,r,Is)}},Zp=t=>String(t).replace(/^\uFEFF/,"");Kp.exports=Is;Is.JSONParseError=Xa;Is.noExceptions=(t,e)=>{try{return JSON.parse(Zp(t),e)}catch(r){}}});var ed=d(Ka=>{"use strict";var Ps=` +`,Qp="\r",hR=function(){function t(e){this.string=e;for(var r=[0],n=0;nthis.string.length)return null;for(var r=0,n=this.offsets;n[r+1]<=e;)r++;var i=e-n[r];return{line:r,column:i}},t.prototype.indexForLocation=function(e){var r=e.line,n=e.column;return r<0||r>=this.offsets.length||n<0||n>this.lengthOfLine(r)?null:this.offsets[r]+n},t.prototype.lengthOfLine=function(e){var r=this.offsets[e],n=e===this.offsets.length-1?this.string.length:this.offsets[e+1];return n-r},t}();Ka.__esModule=!0;Ka.default=hR});var td=d(Ds=>{Object.defineProperty(Ds,"__esModule",{value:!0});Ds.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;Ds.matchToToken=function(t){var e={type:"invalid",value:t[0],closed:void 0};return t[1]?(e.type="string",e.closed=!!(t[3]||t[4])):t[5]?e.type="comment":t[6]?(e.type="comment",e.closed=!!t[7]):t[8]?e.type="regex":t[9]?e.type="number":t[10]?e.type="name":t[11]?e.type="punctuator":t[12]&&(e.type="whitespace"),e}});var od=d(wi=>{"use strict";Object.defineProperty(wi,"__esModule",{value:!0});wi.isIdentifierStart=rd;wi.isIdentifierChar=nd;wi.isIdentifierName=pR;var Za="\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",id="\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",dR=new RegExp("["+Za+"]"),mR=new RegExp("["+Za+id+"]");Za=id=null;var sd=[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],gR=[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];function Ja(t,e){let r=65536;for(let n=0,i=e.length;nt)return!1;if(r+=e[n+1],r>=t)return!0}return!1}function rd(t){return t<65?t===36:t<=90?!0:t<97?t===95:t<=122?!0:t<=65535?t>=170&&dR.test(String.fromCharCode(t)):Ja(t,sd)}function nd(t){return t<48?t===36:t<58?!0:t<65?!1:t<=90?!0:t<97?t===95:t<=122?!0:t<=65535?t>=170&&mR.test(String.fromCharCode(t)):Ja(t,sd)||Ja(t,gR)}function pR(t){let e=!0;for(let r=0,n=Array.from(t);r{"use strict";Object.defineProperty(Fr,"__esModule",{value:!0});Fr.isReservedWord=ad;Fr.isStrictReservedWord=ud;Fr.isStrictBindOnlyReservedWord=cd;Fr.isStrictBindReservedWord=yR;Fr.isKeyword=vR;var Qa={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"],strict:["implements","interface","let","package","private","protected","public","static","yield"],strictBind:["eval","arguments"]},bR=new Set(Qa.keyword),ER=new Set(Qa.strict),wR=new Set(Qa.strictBind);function ad(t,e){return e&&t==="await"||t==="enum"}function ud(t,e){return ad(t,e)||ER.has(t)}function cd(t){return wR.has(t)}function yR(t,e){return ud(t,e)||cd(t)}function vR(t){return bR.has(t)}});var fd=d(Tt=>{"use strict";Object.defineProperty(Tt,"__esModule",{value:!0});Object.defineProperty(Tt,"isIdentifierName",{enumerable:!0,get:function(){return eu.isIdentifierName}});Object.defineProperty(Tt,"isIdentifierChar",{enumerable:!0,get:function(){return eu.isIdentifierChar}});Object.defineProperty(Tt,"isIdentifierStart",{enumerable:!0,get:function(){return eu.isIdentifierStart}});Object.defineProperty(Tt,"isReservedWord",{enumerable:!0,get:function(){return Si.isReservedWord}});Object.defineProperty(Tt,"isStrictBindOnlyReservedWord",{enumerable:!0,get:function(){return Si.isStrictBindOnlyReservedWord}});Object.defineProperty(Tt,"isStrictBindReservedWord",{enumerable:!0,get:function(){return Si.isStrictBindReservedWord}});Object.defineProperty(Tt,"isStrictReservedWord",{enumerable:!0,get:function(){return Si.isStrictReservedWord}});Object.defineProperty(Tt,"isKeyword",{enumerable:!0,get:function(){return Si.isKeyword}});var eu=od(),Si=ld()});var pd=d((j5,hd)=>{"use strict";var SR=/[|\\{}()[\]^$+*?.]/g;hd.exports=function(t){if(typeof t!="string")throw new TypeError("Expected a string");return t.replace(SR,"\\$&")}});var md=d(($5,dd)=>{"use strict";dd.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 ru=d((M5,gd)=>{var kr=md(),yd={};for(var tu in kr)kr.hasOwnProperty(tu)&&(yd[kr[tu]]=tu);var D=gd.exports={rgb:{channels:3,labels:"rgb"},hsl:{channels:3,labels:"hsl"},hsv:{channels:3,labels:"hsv"},hwb:{channels:3,labels:"hwb"},cmyk:{channels:4,labels:"cmyk"},xyz:{channels:3,labels:"xyz"},lab:{channels:3,labels:"lab"},lch:{channels:3,labels:"lch"},hex:{channels:1,labels:["hex"]},keyword:{channels:1,labels:["keyword"]},ansi16:{channels:1,labels:["ansi16"]},ansi256:{channels:1,labels:["ansi256"]},hcg:{channels:3,labels:["h","c","g"]},apple:{channels:3,labels:["r16","g16","b16"]},gray:{channels:1,labels:["gray"]}};for(var Ze in D)if(D.hasOwnProperty(Ze)){if(!("channels"in D[Ze]))throw new Error("missing channels property: "+Ze);if(!("labels"in D[Ze]))throw new Error("missing channel labels property: "+Ze);if(D[Ze].labels.length!==D[Ze].channels)throw new Error("channel and label counts mismatch: "+Ze);vd=D[Ze].channels,bd=D[Ze].labels,delete D[Ze].channels,delete D[Ze].labels,Object.defineProperty(D[Ze],"channels",{value:vd}),Object.defineProperty(D[Ze],"labels",{value:bd})}var vd,bd;D.rgb.hsl=function(t){var e=t[0]/255,r=t[1]/255,n=t[2]/255,i=Math.min(e,r,n),s=Math.max(e,r,n),o=s-i,a,u,c;return s===i?a=0:e===s?a=(r-n)/o:r===s?a=2+(n-e)/o:n===s&&(a=4+(e-r)/o),a=Math.min(a*60,360),a<0&&(a+=360),c=(i+s)/2,s===i?u=0:c<=.5?u=o/(s+i):u=o/(2-s-i),[a,u*100,c*100]};D.rgb.hsv=function(t){var e,r,n,i,s,o=t[0]/255,a=t[1]/255,u=t[2]/255,c=Math.max(o,a,u),l=c-Math.min(o,a,u),f=function(p){return(c-p)/6/l+1/2};return l===0?i=s=0:(s=l/c,e=f(o),r=f(a),n=f(u),o===c?i=n-r:a===c?i=1/3+e-n:u===c&&(i=2/3+r-e),i<0?i+=1:i>1&&(i-=1)),[i*360,s*100,c*100]};D.rgb.hwb=function(t){var e=t[0],r=t[1],n=t[2],i=D.rgb.hsl(t)[0],s=1/255*Math.min(e,Math.min(r,n));return n=1-1/255*Math.max(e,Math.max(r,n)),[i,s*100,n*100]};D.rgb.cmyk=function(t){var e=t[0]/255,r=t[1]/255,n=t[2]/255,i,s,o,a;return a=Math.min(1-e,1-r,1-n),i=(1-e-a)/(1-a)||0,s=(1-r-a)/(1-a)||0,o=(1-n-a)/(1-a)||0,[i*100,s*100,o*100,a*100]};function OR(t,e){return Math.pow(t[0]-e[0],2)+Math.pow(t[1]-e[1],2)+Math.pow(t[2]-e[2],2)}D.rgb.keyword=function(t){var e=yd[t];if(e)return e;var r=Infinity,n;for(var i in kr)if(kr.hasOwnProperty(i)){var s=kr[i],o=OR(t,s);o.04045?Math.pow((e+.055)/1.055,2.4):e/12.92,r=r>.04045?Math.pow((r+.055)/1.055,2.4):r/12.92,n=n>.04045?Math.pow((n+.055)/1.055,2.4):n/12.92;var i=e*.4124+r*.3576+n*.1805,s=e*.2126+r*.7152+n*.0722,o=e*.0193+r*.1192+n*.9505;return[i*100,s*100,o*100]};D.rgb.lab=function(t){var e=D.rgb.xyz(t),r=e[0],n=e[1],i=e[2],s,o,a;return r/=95.047,n/=100,i/=108.883,r=r>.008856?Math.pow(r,1/3):7.787*r+16/116,n=n>.008856?Math.pow(n,1/3):7.787*n+16/116,i=i>.008856?Math.pow(i,1/3):7.787*i+16/116,s=116*n-16,o=500*(r-n),a=200*(n-i),[s,o,a]};D.hsl.rgb=function(t){var e=t[0]/360,r=t[1]/100,n=t[2]/100,i,s,o,a,u;if(r===0)return u=n*255,[u,u,u];n<.5?s=n*(1+r):s=n+r-n*r,i=2*n-s,a=[0,0,0];for(var c=0;c<3;c++)o=e+1/3*-(c-1),o<0&&o++,o>1&&o--,6*o<1?u=i+(s-i)*6*o:2*o<1?u=s:3*o<2?u=i+(s-i)*(2/3-o)*6:u=i,a[c]=u*255;return a};D.hsl.hsv=function(t){var e=t[0],r=t[1]/100,n=t[2]/100,i=r,s=Math.max(n,.01),o,a;return n*=2,r*=n<=1?n:2-n,i*=s<=1?s:2-s,a=(n+r)/2,o=n===0?2*i/(s+i):2*r/(n+r),[e,o*100,a*100]};D.hsv.rgb=function(t){var e=t[0]/60,r=t[1]/100,n=t[2]/100,i=Math.floor(e)%6,s=e-Math.floor(e),o=255*n*(1-r),a=255*n*(1-r*s),u=255*n*(1-r*(1-s));switch(n*=255,i){case 0:return[n,u,o];case 1:return[a,n,o];case 2:return[o,n,u];case 3:return[o,a,n];case 4:return[u,o,n];case 5:return[n,o,a]}};D.hsv.hsl=function(t){var e=t[0],r=t[1]/100,n=t[2]/100,i=Math.max(n,.01),s,o,a;return a=(2-r)*n,s=(2-r)*i,o=r*i,o/=s<=1?s:2-s,o=o||0,a/=2,[e,o*100,a*100]};D.hwb.rgb=function(t){var e=t[0]/360,r=t[1]/100,n=t[2]/100,i=r+n,s,o,a,u;i>1&&(r/=i,n/=i),s=Math.floor(6*e),o=1-n,a=6*e-s,(s&1)!=0&&(a=1-a),u=r+a*(o-r);var c,l,f;switch(s){default:case 6:case 0:c=o,l=u,f=r;break;case 1:c=u,l=o,f=r;break;case 2:c=r,l=o,f=u;break;case 3:c=r,l=u,f=o;break;case 4:c=u,l=r,f=o;break;case 5:c=o,l=r,f=u;break}return[c*255,l*255,f*255]};D.cmyk.rgb=function(t){var e=t[0]/100,r=t[1]/100,n=t[2]/100,i=t[3]/100,s,o,a;return s=1-Math.min(1,e*(1-i)+i),o=1-Math.min(1,r*(1-i)+i),a=1-Math.min(1,n*(1-i)+i),[s*255,o*255,a*255]};D.xyz.rgb=function(t){var e=t[0]/100,r=t[1]/100,n=t[2]/100,i,s,o;return i=e*3.2406+r*-1.5372+n*-.4986,s=e*-.9689+r*1.8758+n*.0415,o=e*.0557+r*-.204+n*1.057,i=i>.0031308?1.055*Math.pow(i,1/2.4)-.055:i*12.92,s=s>.0031308?1.055*Math.pow(s,1/2.4)-.055:s*12.92,o=o>.0031308?1.055*Math.pow(o,1/2.4)-.055:o*12.92,i=Math.min(Math.max(0,i),1),s=Math.min(Math.max(0,s),1),o=Math.min(Math.max(0,o),1),[i*255,s*255,o*255]};D.xyz.lab=function(t){var e=t[0],r=t[1],n=t[2],i,s,o;return e/=95.047,r/=100,n/=108.883,e=e>.008856?Math.pow(e,1/3):7.787*e+16/116,r=r>.008856?Math.pow(r,1/3):7.787*r+16/116,n=n>.008856?Math.pow(n,1/3):7.787*n+16/116,i=116*r-16,s=500*(e-r),o=200*(r-n),[i,s,o]};D.lab.xyz=function(t){var e=t[0],r=t[1],n=t[2],i,s,o;s=(e+16)/116,i=r/500+s,o=s-n/200;var a=Math.pow(s,3),u=Math.pow(i,3),c=Math.pow(o,3);return s=a>.008856?a:(s-16/116)/7.787,i=u>.008856?u:(i-16/116)/7.787,o=c>.008856?c:(o-16/116)/7.787,i*=95.047,s*=100,o*=108.883,[i,s,o]};D.lab.lch=function(t){var e=t[0],r=t[1],n=t[2],i,s,o;return i=Math.atan2(n,r),s=i*360/2/Math.PI,s<0&&(s+=360),o=Math.sqrt(r*r+n*n),[e,o,s]};D.lch.lab=function(t){var e=t[0],r=t[1],n=t[2],i,s,o;return o=n/360*2*Math.PI,i=r*Math.cos(o),s=r*Math.sin(o),[e,i,s]};D.rgb.ansi16=function(t){var e=t[0],r=t[1],n=t[2],i=1 in arguments?arguments[1]:D.rgb.hsv(t)[2];if(i=Math.round(i/50),i===0)return 30;var s=30+(Math.round(n/255)<<2|Math.round(r/255)<<1|Math.round(e/255));return i===2&&(s+=60),s};D.hsv.ansi16=function(t){return D.rgb.ansi16(D.hsv.rgb(t),t[2])};D.rgb.ansi256=function(t){var e=t[0],r=t[1],n=t[2];if(e===r&&r===n)return e<8?16:e>248?231:Math.round((e-8)/247*24)+232;var i=16+36*Math.round(e/255*5)+6*Math.round(r/255*5)+Math.round(n/255*5);return i};D.ansi16.rgb=function(t){var e=t%10;if(e===0||e===7)return t>50&&(e+=3.5),e=e/10.5*255,[e,e,e];var r=(~~(t>50)+1)*.5,n=(e&1)*r*255,i=(e>>1&1)*r*255,s=(e>>2&1)*r*255;return[n,i,s]};D.ansi256.rgb=function(t){if(t>=232){var e=(t-232)*10+8;return[e,e,e]}t-=16;var r,n=Math.floor(t/36)/5*255,i=Math.floor((r=t%36)/6)/5*255,s=r%6/5*255;return[n,i,s]};D.rgb.hex=function(t){var e=((Math.round(t[0])&255)<<16)+((Math.round(t[1])&255)<<8)+(Math.round(t[2])&255),r=e.toString(16).toUpperCase();return"000000".substring(r.length)+r};D.hex.rgb=function(t){var e=t.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);if(!e)return[0,0,0];var r=e[0];e[0].length===3&&(r=r.split("").map(function(a){return a+a}).join(""));var n=parseInt(r,16),i=n>>16&255,s=n>>8&255,o=n&255;return[i,s,o]};D.rgb.hcg=function(t){var e=t[0]/255,r=t[1]/255,n=t[2]/255,i=Math.max(Math.max(e,r),n),s=Math.min(Math.min(e,r),n),o=i-s,a,u;return o<1?a=s/(1-o):a=0,o<=0?u=0:i===e?u=(r-n)/o%6:i===r?u=2+(n-e)/o:u=4+(e-r)/o+4,u/=6,u%=1,[u*360,o*100,a*100]};D.hsl.hcg=function(t){var e=t[1]/100,r=t[2]/100,n=1,i=0;return r<.5?n=2*e*r:n=2*e*(1-r),n<1&&(i=(r-.5*n)/(1-n)),[t[0],n*100,i*100]};D.hsv.hcg=function(t){var e=t[1]/100,r=t[2]/100,n=e*r,i=0;return n<1&&(i=(r-n)/(1-n)),[t[0],n*100,i*100]};D.hcg.rgb=function(t){var e=t[0]/360,r=t[1]/100,n=t[2]/100;if(r===0)return[n*255,n*255,n*255];var i=[0,0,0],s=e%1*6,o=s%1,a=1-o,u=0;switch(Math.floor(s)){case 0:i[0]=1,i[1]=o,i[2]=0;break;case 1:i[0]=a,i[1]=1,i[2]=0;break;case 2:i[0]=0,i[1]=1,i[2]=o;break;case 3:i[0]=0,i[1]=a,i[2]=1;break;case 4:i[0]=o,i[1]=0,i[2]=1;break;default:i[0]=1,i[1]=0,i[2]=a}return u=(1-r)*n,[(r*i[0]+u)*255,(r*i[1]+u)*255,(r*i[2]+u)*255]};D.hcg.hsv=function(t){var e=t[1]/100,r=t[2]/100,n=e+r*(1-e),i=0;return n>0&&(i=e/n),[t[0],i*100,n*100]};D.hcg.hsl=function(t){var e=t[1]/100,r=t[2]/100,n=r*(1-e)+.5*e,i=0;return n>0&&n<.5?i=e/(2*n):n>=.5&&n<1&&(i=e/(2*(1-n))),[t[0],i*100,n*100]};D.hcg.hwb=function(t){var e=t[1]/100,r=t[2]/100,n=e+r*(1-e);return[t[0],(n-e)*100,(1-n)*100]};D.hwb.hcg=function(t){var e=t[1]/100,r=t[2]/100,n=1-r,i=n-e,s=0;return i<1&&(s=(n-i)/(1-i)),[t[0],i*100,s*100]};D.apple.rgb=function(t){return[t[0]/65535*255,t[1]/65535*255,t[2]/65535*255]};D.rgb.apple=function(t){return[t[0]/255*65535,t[1]/255*65535,t[2]/255*65535]};D.gray.rgb=function(t){return[t[0]/100*255,t[0]/100*255,t[0]/100*255]};D.gray.hsl=D.gray.hsv=function(t){return[0,0,t[0]]};D.gray.hwb=function(t){return[0,100,t[0]]};D.gray.cmyk=function(t){return[0,0,0,t[0]]};D.gray.lab=function(t){return[t[0],0,0]};D.gray.hex=function(t){var e=Math.round(t[0]/100*255)&255,r=(e<<16)+(e<<8)+e,n=r.toString(16).toUpperCase();return"000000".substring(n.length)+n};D.rgb.gray=function(t){var e=(t[0]+t[1]+t[2])/3;return[e/255*100]}});var wd=d((B5,Ed)=>{var Fs=ru();function RR(){for(var t={},e=Object.keys(Fs),r=e.length,n=0;n{var nu=ru(),LR=wd(),En={},TR=Object.keys(nu);function xR(t){var e=function(r){return r==null?r:(arguments.length>1&&(r=Array.prototype.slice.call(arguments)),t(r))};return"conversion"in t&&(e.conversion=t.conversion),e}function NR(t){var e=function(r){if(r==null)return r;arguments.length>1&&(r=Array.prototype.slice.call(arguments));var n=t(r);if(typeof n=="object")for(var i=n.length,s=0;s{"use strict";var wn=Od(),ks=(t,e)=>function(){return`[${t.apply(wn,arguments)+e}m`},qs=(t,e)=>function(){let r=t.apply(wn,arguments);return`[${38+e};5;${r}m`},js=(t,e)=>function(){let r=t.apply(wn,arguments);return`[${38+e};2;${r[0]};${r[1]};${r[2]}m`};function IR(){let t=new Map,e={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],gray:[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]}};e.color.grey=e.color.gray;for(let i of Object.keys(e)){let s=e[i];for(let o of Object.keys(s)){let a=s[o];e[o]={open:`[${a[0]}m`,close:`[${a[1]}m`},s[o]=e[o],t.set(a[0],a[1])}Object.defineProperty(e,i,{value:s,enumerable:!1}),Object.defineProperty(e,"codes",{value:t,enumerable:!1})}let r=i=>i,n=(i,s,o)=>[i,s,o];e.color.close="",e.bgColor.close="",e.color.ansi={ansi:ks(r,0)},e.color.ansi256={ansi256:qs(r,0)},e.color.ansi16m={rgb:js(n,0)},e.bgColor.ansi={ansi:ks(r,10)},e.bgColor.ansi256={ansi256:qs(r,10)},e.bgColor.ansi16m={rgb:js(n,10)};for(let i of Object.keys(wn)){if(typeof wn[i]!="object")continue;let s=wn[i];i==="ansi16"&&(i="ansi"),"ansi16"in s&&(e.color.ansi[i]=ks(s.ansi16,0),e.bgColor.ansi[i]=ks(s.ansi16,10)),"ansi256"in s&&(e.color.ansi256[i]=qs(s.ansi256,0),e.bgColor.ansi256[i]=qs(s.ansi256,10)),"rgb"in s&&(e.color.ansi16m[i]=js(s.rgb,0),e.bgColor.ansi16m[i]=js(s.rgb,10))}return e}Object.defineProperty(Rd,"exports",{enumerable:!0,get:IR})});var Ad=d((z5,Cd)=>{"use strict";Cd.exports=(t,e)=>{e=e||process.argv;let r=t.startsWith("-")?"":t.length===1?"-":"--",n=e.indexOf(r+t),i=e.indexOf("--");return n!==-1&&(i===-1?!0:n{"use strict";var PR=require("os"),Rt=Ad(),Ie=process.env,Sn;Rt("no-color")||Rt("no-colors")||Rt("color=false")?Sn=!1:(Rt("color")||Rt("colors")||Rt("color=true")||Rt("color=always"))&&(Sn=!0);"FORCE_COLOR"in Ie&&(Sn=Ie.FORCE_COLOR.length===0||parseInt(Ie.FORCE_COLOR,10)!==0);function DR(t){return t===0?!1:{level:t,hasBasic:!0,has256:t>=2,has16m:t>=3}}function FR(t){if(Sn===!1)return 0;if(Rt("color=16m")||Rt("color=full")||Rt("color=truecolor"))return 3;if(Rt("color=256"))return 2;if(t&&!t.isTTY&&Sn!==!0)return 0;let e=Sn?1:0;if(process.platform==="win32"){let r=PR.release().split(".");return Number(process.versions.node.split(".")[0])>=8&&Number(r[0])>=10&&Number(r[2])>=10586?Number(r[2])>=14931?3:2:1}if("CI"in Ie)return["TRAVIS","CIRCLECI","APPVEYOR","GITLAB_CI"].some(r=>r in Ie)||Ie.CI_NAME==="codeship"?1:e;if("TEAMCITY_VERSION"in Ie)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(Ie.TEAMCITY_VERSION)?1:0;if(Ie.COLORTERM==="truecolor")return 3;if("TERM_PROGRAM"in Ie){let r=parseInt((Ie.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(Ie.TERM_PROGRAM){case"iTerm.app":return r>=3?3:2;case"Apple_Terminal":return 2}}return/-256(color)?$/i.test(Ie.TERM)?2:/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(Ie.TERM)||"COLORTERM"in Ie?1:(Ie.TERM==="dumb",e)}function iu(t){let e=FR(t);return DR(e)}Ld.exports={supportsColor:iu,stdout:iu(process.stdout),stderr:iu(process.stderr)}});var Dd=d((W5,xd)=>{"use strict";var kR=/(?:\\(u[a-f\d]{4}|x[a-f\d]{2}|.))|(?:\{(~)?(\w+(?:\([^)]*\))?(?:\.\w+(?:\([^)]*\))?)*)(?:[ \t]|(?=\r?\n)))|(\})|((?:.|[\r\n\f])+?)/gi,Nd=/(?:^|\.)(\w+)(?:\(([^)]*)\))?/g,qR=/^(['"])((?:\\.|(?!\1)[^\\])*)\1$/,jR=/\\(u[a-f\d]{4}|x[a-f\d]{2}|.)|([^\\])/gi,$R=new Map([["n",` +`],["r","\r"],["t"," "],["b","\b"],["f","\f"],["v","\v"],["0","\0"],["\\","\\"],["e",""],["a","\x07"]]);function Id(t){return t[0]==="u"&&t.length===5||t[0]==="x"&&t.length===3?String.fromCharCode(parseInt(t.slice(1),16)):$R.get(t)||t}function MR(t,e){let r=[],n=e.trim().split(/\s*,\s*/g),i;for(let s of n)if(!isNaN(s))r.push(Number(s));else if(i=s.match(qR))r.push(i[2].replace(jR,(o,a,u)=>a?Id(a):u));else throw new Error(`Invalid Chalk template style argument: ${s} (in style '${t}')`);return r}function BR(t){Nd.lastIndex=0;let e=[],r;for(;(r=Nd.exec(t))!==null;){let n=r[1];if(r[2]){let i=MR(n,r[2]);e.push([n].concat(i))}else e.push([n])}return e}function Pd(t,e){let r={};for(let i of e)for(let s of i.styles)r[s[0]]=i.inverse?null:s.slice(1);let n=t;for(let i of Object.keys(r))if(Array.isArray(r[i])){if(!(i in n))throw new Error(`Unknown Chalk style: ${i}`);r[i].length>0?n=n[i].apply(n,r[i]):n=n[i]}return n}xd.exports=(t,e)=>{let r=[],n=[],i=[];if(e.replace(kR,(s,o,a,u,c,l)=>{if(o)i.push(Id(o));else if(u){let f=i.join("");i=[],n.push(r.length===0?f:Pd(t,r)(f)),r.push({inverse:a,styles:BR(u)})}else if(c){if(r.length===0)throw new Error("Found extraneous } in Chalk template literal");n.push(Pd(t,r)(i.join(""))),i=[],r.pop()}else i.push(l)}),n.push(i.join("")),r.length>0){let s=`Chalk template literal is missing ${r.length} closing bracket${r.length===1?"":"s"} (\`}\`)`;throw new Error(s)}return n.join("")}});var $d=d((Y5,Oi)=>{"use strict";var su=pd(),ge=_d(),ou=Td().stdout,UR=Dd(),Fd=process.platform==="win32"&&!(process.env.TERM||"").toLowerCase().startsWith("xterm"),kd=["ansi","ansi","ansi256","ansi16m"],qd=new Set(["gray"]),On=Object.create(null);function jd(t,e){e=e||{};let r=ou?ou.level:0;t.level=e.level===void 0?r:e.level,t.enabled="enabled"in e?e.enabled:t.level>0}function Ri(t){if(!this||!(this instanceof Ri)||this.template){let e={};return jd(e,t),e.template=function(){let r=[].slice.call(arguments);return GR.apply(null,[e.template].concat(r))},Object.setPrototypeOf(e,Ri.prototype),Object.setPrototypeOf(e.template,e),e.template.constructor=Ri,e.template}jd(this,t)}Fd&&(ge.blue.open="");for(let t of Object.keys(ge))ge[t].closeRe=new RegExp(su(ge[t].close),"g"),On[t]={get(){let e=ge[t];return $s.call(this,this._styles?this._styles.concat(e):[e],this._empty,t)}};On.visible={get(){return $s.call(this,this._styles||[],!0,"visible")}};ge.color.closeRe=new RegExp(su(ge.color.close),"g");for(let t of Object.keys(ge.color.ansi))qd.has(t)||(On[t]={get(){let e=this.level;return function(){let n={open:ge.color[kd[e]][t].apply(null,arguments),close:ge.color.close,closeRe:ge.color.closeRe};return $s.call(this,this._styles?this._styles.concat(n):[n],this._empty,t)}}});ge.bgColor.closeRe=new RegExp(su(ge.bgColor.close),"g");for(let t of Object.keys(ge.bgColor.ansi)){if(qd.has(t))continue;let e="bg"+t[0].toUpperCase()+t.slice(1);On[e]={get(){let r=this.level;return function(){let i={open:ge.bgColor[kd[r]][t].apply(null,arguments),close:ge.bgColor.close,closeRe:ge.bgColor.closeRe};return $s.call(this,this._styles?this._styles.concat(i):[i],this._empty,t)}}}}var zR=Object.defineProperties(()=>{},On);function $s(t,e,r){let n=function(){return HR.apply(n,arguments)};n._styles=t,n._empty=e;let i=this;return Object.defineProperty(n,"level",{enumerable:!0,get(){return i.level},set(s){i.level=s}}),Object.defineProperty(n,"enabled",{enumerable:!0,get(){return i.enabled},set(s){i.enabled=s}}),n.hasGrey=this.hasGrey||r==="gray"||r==="grey",n.__proto__=zR,n}function HR(){let t=arguments,e=t.length,r=String(arguments[0]);if(e===0)return"";if(e>1)for(let i=1;i{"use strict";Object.defineProperty(_i,"__esModule",{value:!0});_i.shouldHighlight=Md;_i.getChalk=Bd;_i.default=WR;var Ud=YR(td()),Gd=fd(),au=VR($d());function VR(t){return t&&t.__esModule?t:{default:t}}function zd(){if(typeof WeakMap!="function")return null;var t=new WeakMap;return zd=function(){return t},t}function YR(t){if(t&&t.__esModule)return t;if(t===null||typeof t!="object"&&typeof t!="function")return{default:t};var e=zd();if(e&&e.has(t))return e.get(t);var r={},n=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var i in t)if(Object.prototype.hasOwnProperty.call(t,i)){var s=n?Object.getOwnPropertyDescriptor(t,i):null;s&&(s.get||s.set)?Object.defineProperty(r,i,s):r[i]=t[i]}return r.default=t,e&&e.set(t,r),r}var XR=new Set(["as","async","from","get","of","set"]);function KR(t){return{keyword:t.cyan,capitalized:t.yellow,jsxIdentifier:t.yellow,punctuator:t.yellow,number:t.magenta,string:t.green,regex:t.magenta,comment:t.grey,invalid:t.white.bgRed.bold}}var ZR=/\r\n|[\n\r\u2028\u2029]/,JR=/^[()[\]{}]$/,Hd;{let{matchToToken:t}=Ud,e=/^[a-z][\w-]*$/i,r=function(n,i,s){if(n.type==="name"){if((0,Gd.isKeyword)(n.value)||(0,Gd.isStrictReservedWord)(n.value,!0)||XR.has(n.value))return"keyword";if(e.test(n.value)&&(s[i-1]==="<"||s.substr(i-2,2)=="s(o)).join(` +`):r+=i}return r}function Md(t){return au.default.supportsColor||t.forceColor}function Bd(t){let e=au.default;return t.forceColor&&(e=new au.default.constructor({enabled:!0,level:1})),e}function WR(t,e={}){if(Md(e)){let r=Bd(e),n=KR(r);return QR(n,t)}else return t}});var Zd=d(Ms=>{"use strict";Object.defineProperty(Ms,"__esModule",{value:!0});Ms.codeFrameColumns=Yd;Ms.default=e_;var uu=t_(Wd());function Vd(){if(typeof WeakMap!="function")return null;var t=new WeakMap;return Vd=function(){return t},t}function t_(t){if(t&&t.__esModule)return t;if(t===null||typeof t!="object"&&typeof t!="function")return{default:t};var e=Vd();if(e&&e.has(t))return e.get(t);var r={},n=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var i in t)if(Object.prototype.hasOwnProperty.call(t,i)){var s=n?Object.getOwnPropertyDescriptor(t,i):null;s&&(s.get||s.set)?Object.defineProperty(r,i,s):r[i]=t[i]}return r.default=t,e&&e.set(t,r),r}var Xd=!1;function r_(t){return{gutter:t.grey,marker:t.red.bold,message:t.red.bold}}var Kd=/\r\n|[\n\r\u2028\u2029]/;function n_(t,e,r){let n=Object.assign({column:0,line:-1},t.start),i=Object.assign({},n,t.end),{linesAbove:s=2,linesBelow:o=3}=r||{},a=n.line,u=n.column,c=i.line,l=i.column,f=Math.max(a-(s+1),0),p=Math.min(e.length,c+o);a===-1&&(f=0),c===-1&&(p=e.length);let y=c-a,m={};if(y)for(let h=0;h<=y;h++){let w=h+a;if(!u)m[w]=!0;else if(h===0){let v=e[w-1].length;m[w]=[u,v-u+1]}else if(h===y)m[w]=[0,l];else{let v=e[w-h].length;m[w]=[0,v]}}else u===l?u?m[a]=[u,0]:m[a]=!0:m[a]=[u,l-u];return{start:f,end:p,markerLines:m}}function Yd(t,e,r={}){let n=(r.highlightCode||r.forceColor)&&(0,uu.shouldHighlight)(r),i=(0,uu.getChalk)(r),s=r_(i),o=(h,w)=>n?h(w):w,a=t.split(Kd),{start:u,end:c,markerLines:l}=n_(e,a,r),f=e.start&&typeof e.start.column=="number",p=String(c).length,m=(n?(0,uu.default)(t,r):t).split(Kd).slice(u,c).map((h,w)=>{let v=u+1+w,A=` ${` ${v}`.slice(-p)} |`,_=l[v],F=!l[v+1];if(_){let x="";if(Array.isArray(_)){let N=h.slice(0,Math.max(_[0]-1,0)).replace(/[^\t]/g," "),M=_[1]||1;x=[` + `,o(s.gutter,A.replace(/\d/g," "))," ",N,o(s.marker,"^").repeat(M)].join(""),F&&r.message&&(x+=" "+o(s.message,r.message))}return[o(s.marker,">"),o(s.gutter,A),h.length>0?` ${h}`:"",x].join("")}else return` ${o(s.gutter,A)}${h.length>0?` ${h}`:""}`}).join(` `);return r.message&&!f&&(m=`${" ".repeat(p+1)}${r.message} -${m}`),n?i.reset(m):m}function gC(t,e,r,n={}){if(!sm){sm=!0;let s="Passing lineNumber and colNumber is deprecated to @babel/code-frame. Please use `codeFrameColumns`.";if(process.emitWarning)process.emitWarning(s,"DeprecationWarning");else{let o=new Error(s);o.name="DeprecationWarning",console.warn(new Error(s))}}return r=Math.max(r,0),nm(t,{start:{column:r,line:e}},n)}});var fm=d((EF,um)=>{"use strict";var vu=sd(),EC=ud(),{default:wC}=ld(),{codeFrameColumns:SC}=am(),cm=vu("JSONError",{fileName:vu.append("in %s"),codeFrame:vu.append(` +${m}`),n?i.reset(m):m}function e_(t,e,r,n={}){if(!Xd){Xd=!0;let s="Passing lineNumber and colNumber is deprecated to @babel/code-frame. Please use `codeFrameColumns`.";if(process.emitWarning)process.emitWarning(s,"DeprecationWarning");else{let o=new Error(s);o.name="DeprecationWarning",console.warn(new Error(s))}}return r=Math.max(r,0),Yd(t,{start:{column:r,line:e}},n)}});var tm=d((K5,Jd)=>{"use strict";var cu=Xp(),i_=Jp(),{default:s_}=ed(),{codeFrameColumns:o_}=Zd(),Qd=cu("JSONError",{fileName:cu.append("in %s"),codeFrame:cu.append(` %s -`)}),lm=(t,e,r)=>{typeof e=="string"&&(r=e,e=null);try{try{return JSON.parse(t,e)}catch(n){throw EC(t,e),n}}catch(n){n.message=n.message.replace(/\n/g,"");let i=n.message.match(/in JSON at position (\d+) while parsing/),s=new cm(n);if(r&&(s.fileName=r),i&&i.length>0){let o=new wC(t),a=Number(i[1]),u=o.locationForIndex(a),c=SC(t,{start:{line:u.line+1,column:u.column+1}},{highlightCode:!0});s.codeFrame=c}throw s}};lm.JSONError=cm;um.exports=lm});var Tm=d(($,hm)=>{$=hm.exports=W;var Q;typeof process=="object"&&process.env&&process.env.NODE_DEBUG&&/\bsemver\b/i.test(process.env.NODE_DEBUG)?Q=function(){var t=Array.prototype.slice.call(arguments,0);t.unshift("SEMVER"),console.log.apply(console,t)}:Q=function(){};$.SEMVER_SPEC_VERSION="2.0.0";var bu=256,Ws=Number.MAX_SAFE_INTEGER||9007199254740991,Eu=16,ie=$.re=[],R=$.src=[],H=0,Rn=H++;R[Rn]="0|[1-9]\\d*";var Cn=H++;R[Cn]="[0-9]+";var wu=H++;R[wu]="\\d*[a-zA-Z-][a-zA-Z0-9-]*";var pm=H++;R[pm]="("+R[Rn]+")\\.("+R[Rn]+")\\.("+R[Rn]+")";var dm=H++;R[dm]="("+R[Cn]+")\\.("+R[Cn]+")\\.("+R[Cn]+")";var Su=H++;R[Su]="(?:"+R[Rn]+"|"+R[wu]+")";var Ou=H++;R[Ou]="(?:"+R[Cn]+"|"+R[wu]+")";var Ru=H++;R[Ru]="(?:-("+R[Su]+"(?:\\."+R[Su]+")*))";var Cu=H++;R[Cu]="(?:-?("+R[Ou]+"(?:\\."+R[Ou]+")*))";var _u=H++;R[_u]="[0-9A-Za-z-]+";var Ai=H++;R[Ai]="(?:\\+("+R[_u]+"(?:\\."+R[_u]+")*))";var Au=H++,mm="v?"+R[pm]+R[Ru]+"?"+R[Ai]+"?";R[Au]="^"+mm+"$";var Tu="[v=\\s]*"+R[dm]+R[Cu]+"?"+R[Ai]+"?",Lu=H++;R[Lu]="^"+Tu+"$";var _n=H++;R[_n]="((?:<|>)?=?)";var Vs=H++;R[Vs]=R[Cn]+"|x|X|\\*";var Ys=H++;R[Ys]=R[Rn]+"|x|X|\\*";var qr=H++;R[qr]="[v=\\s]*("+R[Ys]+")(?:\\.("+R[Ys]+")(?:\\.("+R[Ys]+")(?:"+R[Ru]+")?"+R[Ai]+"?)?)?";var An=H++;R[An]="[v=\\s]*("+R[Vs]+")(?:\\.("+R[Vs]+")(?:\\.("+R[Vs]+")(?:"+R[Cu]+")?"+R[Ai]+"?)?)?";var gm=H++;R[gm]="^"+R[_n]+"\\s*"+R[qr]+"$";var ym=H++;R[ym]="^"+R[_n]+"\\s*"+R[An]+"$";var vm=H++;R[vm]="(?:^|[^\\d])(\\d{1,"+Eu+"})(?:\\.(\\d{1,"+Eu+"}))?(?:\\.(\\d{1,"+Eu+"}))?(?:$|[^\\d])";var Xs=H++;R[Xs]="(?:~>?)";var Ks=H++;R[Ks]="(\\s*)"+R[Xs]+"\\s+";ie[Ks]=new RegExp(R[Ks],"g");var OC="$1~",bm=H++;R[bm]="^"+R[Xs]+R[qr]+"$";var Em=H++;R[Em]="^"+R[Xs]+R[An]+"$";var Zs=H++;R[Zs]="(?:\\^)";var Js=H++;R[Js]="(\\s*)"+R[Zs]+"\\s+";ie[Js]=new RegExp(R[Js],"g");var RC="$1^",wm=H++;R[wm]="^"+R[Zs]+R[qr]+"$";var Sm=H++;R[Sm]="^"+R[Zs]+R[An]+"$";var xu=H++;R[xu]="^"+R[_n]+"\\s*("+Tu+")$|^$";var Nu=H++;R[Nu]="^"+R[_n]+"\\s*("+mm+")$|^$";var Ti=H++;R[Ti]="(\\s*)"+R[_n]+"\\s*("+Tu+"|"+R[qr]+")";ie[Ti]=new RegExp(R[Ti],"g");var CC="$1$2$3",Om=H++;R[Om]="^\\s*("+R[qr]+")\\s+-\\s+("+R[qr]+")\\s*$";var Rm=H++;R[Rm]="^\\s*("+R[An]+")\\s+-\\s+("+R[An]+")\\s*$";var Cm=H++;R[Cm]="(<|>)?=?\\s*\\*";for(var $r=0;$rbu)return null;var r=e.loose?ie[Lu]:ie[Au];if(!r.test(t))return null;try{return new W(t,e)}catch(n){return null}}$.valid=_C;function _C(t,e){var r=Mr(t,e);return r?r.version:null}$.clean=AC;function AC(t,e){var r=Mr(t.trim().replace(/^[=v]+/,""),e);return r?r.version:null}$.SemVer=W;function W(t,e){if((!e||typeof e!="object")&&(e={loose:!!e,includePrerelease:!1}),t instanceof W){if(t.loose===e.loose)return t;t=t.version}else if(typeof t!="string")throw new TypeError("Invalid Version: "+t);if(t.length>bu)throw new TypeError("version is longer than "+bu+" characters");if(!(this instanceof W))return new W(t,e);Q("SemVer",t,e),this.options=e,this.loose=!!e.loose;var r=t.trim().match(e.loose?ie[Lu]:ie[Au]);if(!r)throw new TypeError("Invalid Version: "+t);if(this.raw=t,this.major=+r[1],this.minor=+r[2],this.patch=+r[3],this.major>Ws||this.major<0)throw new TypeError("Invalid major version");if(this.minor>Ws||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>Ws||this.patch<0)throw new TypeError("Invalid patch version");r[4]?this.prerelease=r[4].split(".").map(function(n){if(/^[0-9]+$/.test(n)){var i=+n;if(i>=0&&i=0;)typeof this.prerelease[r]=="number"&&(this.prerelease[r]++,r=-2);r===-1&&this.prerelease.push(0)}e&&(this.prerelease[0]===e?isNaN(this.prerelease[1])&&(this.prerelease=[e,0]):this.prerelease=[e,0]);break;default:throw new Error("invalid increment argument: "+t)}return this.format(),this.raw=this.version,this};$.inc=TC;function TC(t,e,r,n){typeof r=="string"&&(n=r,r=void 0);try{return new W(t,r).inc(e,n).version}catch(i){return null}}$.diff=LC;function LC(t,e){if(Iu(t,e))return null;var r=Mr(t),n=Mr(e),i="";if(r.prerelease.length||n.prerelease.length){i="pre";var s="prerelease"}for(var o in r)if((o==="major"||o==="minor"||o==="patch")&&r[o]!==n[o])return i+o;return s}$.compareIdentifiers=Tn;var _m=/^[0-9]+$/;function Tn(t,e){var r=_m.test(t),n=_m.test(e);return r&&n&&(t=+t,e=+e),t===e?0:r&&!n?-1:n&&!r?1:t0}$.lt=Qs;function Qs(t,e,r){return Gt(t,e,r)<0}$.eq=Iu;function Iu(t,e,r){return Gt(t,e,r)===0}$.neq=Am;function Am(t,e,r){return Gt(t,e,r)!==0}$.gte=Pu;function Pu(t,e,r){return Gt(t,e,r)>=0}$.lte=Du;function Du(t,e,r){return Gt(t,e,r)<=0}$.cmp=eo;function eo(t,e,r,n){switch(e){case"===":return typeof t=="object"&&(t=t.version),typeof r=="object"&&(r=r.version),t===r;case"!==":return typeof t=="object"&&(t=t.version),typeof r=="object"&&(r=r.version),t!==r;case"":case"=":case"==":return Iu(t,r,n);case"!=":return Am(t,r,n);case">":return Li(t,r,n);case">=":return Pu(t,r,n);case"<":return Qs(t,r,n);case"<=":return Du(t,r,n);default:throw new TypeError("Invalid operator: "+e)}}$.Comparator=ct;function ct(t,e){if((!e||typeof e!="object")&&(e={loose:!!e,includePrerelease:!1}),t instanceof ct){if(t.loose===!!e.loose)return t;t=t.value}if(!(this instanceof ct))return new ct(t,e);Q("comparator",t,e),this.options=e,this.loose=!!e.loose,this.parse(t),this.semver===xi?this.value="":this.value=this.operator+this.semver.version,Q("comp",this)}var xi={};ct.prototype.parse=function(t){var e=this.options.loose?ie[xu]:ie[Nu],r=t.match(e);if(!r)throw new TypeError("Invalid comparator: "+t);this.operator=r[1],this.operator==="="&&(this.operator=""),r[2]?this.semver=new W(r[2],this.options.loose):this.semver=xi};ct.prototype.toString=function(){return this.value};ct.prototype.test=function(t){return Q("Comparator.test",t,this.options.loose),this.semver===xi?!0:(typeof t=="string"&&(t=new W(t,this.options)),eo(t,this.operator,this.semver,this.options))};ct.prototype.intersects=function(t,e){if(!(t instanceof ct))throw new TypeError("a Comparator is required");(!e||typeof e!="object")&&(e={loose:!!e,includePrerelease:!1});var r;if(this.operator==="")return r=new fe(t.value,e),to(this.value,r,e);if(t.operator==="")return r=new fe(this.value,e),to(t.semver,r,e);var n=(this.operator===">="||this.operator===">")&&(t.operator===">="||t.operator===">"),i=(this.operator==="<="||this.operator==="<")&&(t.operator==="<="||t.operator==="<"),s=this.semver.version===t.semver.version,o=(this.operator===">="||this.operator==="<=")&&(t.operator===">="||t.operator==="<="),a=eo(this.semver,"<",t.semver,e)&&(this.operator===">="||this.operator===">")&&(t.operator==="<="||t.operator==="<"),u=eo(this.semver,">",t.semver,e)&&(this.operator==="<="||this.operator==="<")&&(t.operator===">="||t.operator===">");return n||i||s&&o||a||u};$.Range=fe;function fe(t,e){if((!e||typeof e!="object")&&(e={loose:!!e,includePrerelease:!1}),t instanceof fe)return t.loose===!!e.loose&&t.includePrerelease===!!e.includePrerelease?t:new fe(t.raw,e);if(t instanceof ct)return new fe(t.value,e);if(!(this instanceof fe))return new fe(t,e);if(this.options=e,this.loose=!!e.loose,this.includePrerelease=!!e.includePrerelease,this.raw=t,this.set=t.split(/\s*\|\|\s*/).map(function(r){return this.parseRange(r.trim())},this).filter(function(r){return r.length}),!this.set.length)throw new TypeError("Invalid SemVer Range: "+t);this.format()}fe.prototype.format=function(){return this.range=this.set.map(function(t){return t.join(" ").trim()}).join("||").trim(),this.range};fe.prototype.toString=function(){return this.range};fe.prototype.parseRange=function(t){var e=this.options.loose;t=t.trim();var r=e?ie[Rm]:ie[Om];t=t.replace(r,$C),Q("hyphen replace",t),t=t.replace(ie[Ti],CC),Q("comparator trim",t,ie[Ti]),t=t.replace(ie[Ks],OC),t=t.replace(ie[Js],RC),t=t.split(/\s+/).join(" ");var n=e?ie[xu]:ie[Nu],i=t.split(" ").map(function(s){return qC(s,this.options)},this).join(" ").split(/\s+/);return this.options.loose&&(i=i.filter(function(s){return!!s.match(n)})),i=i.map(function(s){return new ct(s,this.options)},this),i};fe.prototype.intersects=function(t,e){if(!(t instanceof fe))throw new TypeError("a Range is required");return this.set.some(function(r){return r.every(function(n){return t.set.some(function(i){return i.every(function(s){return n.intersects(s,e)})})})})};$.toComparators=MC;function MC(t,e){return new fe(t,e).set.map(function(r){return r.map(function(n){return n.value}).join(" ").trim().split(" ")})}function qC(t,e){return Q("comp",t,e),t=UC(t,e),Q("caret",t),t=BC(t,e),Q("tildes",t),t=GC(t,e),Q("xrange",t),t=zC(t,e),Q("stars",t),t}function Be(t){return!t||t.toLowerCase()==="x"||t==="*"}function BC(t,e){return t.trim().split(/\s+/).map(function(r){return HC(r,e)}).join(" ")}function HC(t,e){var r=e.loose?ie[Em]:ie[bm];return t.replace(r,function(n,i,s,o,a){Q("tilde",t,n,i,s,o,a);var u;return Be(i)?u="":Be(s)?u=">="+i+".0.0 <"+(+i+1)+".0.0":Be(o)?u=">="+i+"."+s+".0 <"+i+"."+(+s+1)+".0":a?(Q("replaceTilde pr",a),u=">="+i+"."+s+"."+o+"-"+a+" <"+i+"."+(+s+1)+".0"):u=">="+i+"."+s+"."+o+" <"+i+"."+(+s+1)+".0",Q("tilde return",u),u})}function UC(t,e){return t.trim().split(/\s+/).map(function(r){return WC(r,e)}).join(" ")}function WC(t,e){Q("caret",t,e);var r=e.loose?ie[Sm]:ie[wm];return t.replace(r,function(n,i,s,o,a){Q("caret",t,n,i,s,o,a);var u;return Be(i)?u="":Be(s)?u=">="+i+".0.0 <"+(+i+1)+".0.0":Be(o)?i==="0"?u=">="+i+"."+s+".0 <"+i+"."+(+s+1)+".0":u=">="+i+"."+s+".0 <"+(+i+1)+".0.0":a?(Q("replaceCaret pr",a),i==="0"?s==="0"?u=">="+i+"."+s+"."+o+"-"+a+" <"+i+"."+s+"."+(+o+1):u=">="+i+"."+s+"."+o+"-"+a+" <"+i+"."+(+s+1)+".0":u=">="+i+"."+s+"."+o+"-"+a+" <"+(+i+1)+".0.0"):(Q("no pr"),i==="0"?s==="0"?u=">="+i+"."+s+"."+o+" <"+i+"."+s+"."+(+o+1):u=">="+i+"."+s+"."+o+" <"+i+"."+(+s+1)+".0":u=">="+i+"."+s+"."+o+" <"+(+i+1)+".0.0"),Q("caret return",u),u})}function GC(t,e){return Q("replaceXRanges",t,e),t.split(/\s+/).map(function(r){return VC(r,e)}).join(" ")}function VC(t,e){t=t.trim();var r=e.loose?ie[ym]:ie[gm];return t.replace(r,function(n,i,s,o,a,u){Q("xRange",t,n,i,s,o,a,u);var c=Be(s),l=c||Be(o),f=l||Be(a),p=f;return i==="="&&p&&(i=""),c?i===">"||i==="<"?n="<0.0.0":n="*":i&&p?(l&&(o=0),a=0,i===">"?(i=">=",l?(s=+s+1,o=0,a=0):(o=+o+1,a=0)):i==="<="&&(i="<",l?s=+s+1:o=+o+1),n=i+s+"."+o+"."+a):l?n=">="+s+".0.0 <"+(+s+1)+".0.0":f&&(n=">="+s+"."+o+".0 <"+s+"."+(+o+1)+".0"),Q("xRange return",n),n})}function zC(t,e){return Q("replaceStars",t,e),t.trim().replace(ie[Cm],"")}function $C(t,e,r,n,i,s,o,a,u,c,l,f,p){return Be(r)?e="":Be(n)?e=">="+r+".0.0":Be(i)?e=">="+r+"."+n+".0":e=">="+e,Be(u)?a="":Be(c)?a="<"+(+u+1)+".0.0":Be(l)?a="<"+u+"."+(+c+1)+".0":f?a="<="+u+"."+c+"."+l+"-"+f:a="<="+a,(e+" "+a).trim()}fe.prototype.test=function(t){if(!t)return!1;typeof t=="string"&&(t=new W(t,this.options));for(var e=0;e0){var i=t[n].semver;if(i.major===e.major&&i.minor===e.minor&&i.patch===e.patch)return!0}return!1}return!0}$.satisfies=to;function to(t,e,r){try{e=new fe(e,r)}catch(n){return!1}return e.test(t)}$.maxSatisfying=XC;function XC(t,e,r){var n=null,i=null;try{var s=new fe(e,r)}catch(o){return null}return t.forEach(function(o){s.test(o)&&(!n||i.compare(o)===-1)&&(n=o,i=new W(n,r))}),n}$.minSatisfying=KC;function KC(t,e,r){var n=null,i=null;try{var s=new fe(e,r)}catch(o){return null}return t.forEach(function(o){s.test(o)&&(!n||i.compare(o)===1)&&(n=o,i=new W(n,r))}),n}$.minVersion=ZC;function ZC(t,e){t=new fe(t,e);var r=new W("0.0.0");if(t.test(r)||(r=new W("0.0.0-0"),t.test(r)))return r;r=null;for(var n=0;n":o.prerelease.length===0?o.patch++:o.prerelease.push(0),o.raw=o.format();case"":case">=":(!r||Li(r,o))&&(r=o);break;case"<":case"<=":break;default:throw new Error("Unexpected operation: "+s.operator)}})}return r&&t.test(r)?r:null}$.validRange=JC;function JC(t,e){try{return new fe(t,e).range||"*"}catch(r){return null}}$.ltr=QC;function QC(t,e,r){return Fu(t,e,"<",r)}$.gtr=e_;function e_(t,e,r){return Fu(t,e,">",r)}$.outside=Fu;function Fu(t,e,r,n){t=new W(t,n),e=new fe(e,n);var i,s,o,a,u;switch(r){case">":i=Li,s=Du,o=Qs,a=">",u=">=";break;case"<":i=Qs,s=Pu,o=Li,a="<",u="<=";break;default:throw new TypeError('Must provide a hilo val of "<" or ">"')}if(to(t,e,n))return!1;for(var c=0;c=0.0.0")),f=f||y,p=p||y,i(y.semver,f.semver,n)?f=y:o(y.semver,p.semver,n)&&(p=y)}),f.operator===a||f.operator===u||(!p.operator||p.operator===a)&&s(t,p.semver))return!1;if(p.operator===u&&o(t,p.semver))return!1}return!0}$.prerelease=t_;function t_(t,e){var r=Mr(t,e);return r&&r.prerelease.length?r.prerelease:null}$.intersects=r_;function r_(t,e,r){return t=new fe(t,r),e=new fe(e,r),t.intersects(e)}$.coerce=n_;function n_(t){if(t instanceof W)return t;if(typeof t!="string")return null;var e=t.match(ie[vm]);return e==null?null:Mr(e[1]+"."+(e[2]||"0")+"."+(e[3]||"0"))}});var ku=d((wF,Lm)=>{Lm.exports=["0BSD","AAL","ADSL","AFL-1.1","AFL-1.2","AFL-2.0","AFL-2.1","AFL-3.0","AGPL-1.0-only","AGPL-1.0-or-later","AGPL-3.0-only","AGPL-3.0-or-later","AMDPLPA","AML","AMPAS","ANTLR-PD","ANTLR-PD-fallback","APAFML","APL-1.0","APSL-1.0","APSL-1.1","APSL-1.2","APSL-2.0","Abstyles","Adobe-2006","Adobe-Glyph","Afmparse","Aladdin","Apache-1.0","Apache-1.1","Apache-2.0","Artistic-1.0","Artistic-1.0-Perl","Artistic-1.0-cl8","Artistic-2.0","BSD-1-Clause","BSD-2-Clause","BSD-2-Clause-Patent","BSD-2-Clause-Views","BSD-3-Clause","BSD-3-Clause-Attribution","BSD-3-Clause-Clear","BSD-3-Clause-LBNL","BSD-3-Clause-No-Nuclear-License","BSD-3-Clause-No-Nuclear-License-2014","BSD-3-Clause-No-Nuclear-Warranty","BSD-3-Clause-Open-MPI","BSD-4-Clause","BSD-4-Clause-UC","BSD-Protection","BSD-Source-Code","BSL-1.0","BUSL-1.1","Bahyph","Barr","Beerware","BitTorrent-1.0","BitTorrent-1.1","BlueOak-1.0.0","Borceux","CAL-1.0","CAL-1.0-Combined-Work-Exception","CATOSL-1.1","CC-BY-1.0","CC-BY-2.0","CC-BY-2.5","CC-BY-3.0","CC-BY-3.0-AT","CC-BY-3.0-US","CC-BY-4.0","CC-BY-NC-1.0","CC-BY-NC-2.0","CC-BY-NC-2.5","CC-BY-NC-3.0","CC-BY-NC-4.0","CC-BY-NC-ND-1.0","CC-BY-NC-ND-2.0","CC-BY-NC-ND-2.5","CC-BY-NC-ND-3.0","CC-BY-NC-ND-3.0-IGO","CC-BY-NC-ND-4.0","CC-BY-NC-SA-1.0","CC-BY-NC-SA-2.0","CC-BY-NC-SA-2.5","CC-BY-NC-SA-3.0","CC-BY-NC-SA-4.0","CC-BY-ND-1.0","CC-BY-ND-2.0","CC-BY-ND-2.5","CC-BY-ND-3.0","CC-BY-ND-4.0","CC-BY-SA-1.0","CC-BY-SA-2.0","CC-BY-SA-2.0-UK","CC-BY-SA-2.5","CC-BY-SA-3.0","CC-BY-SA-3.0-AT","CC-BY-SA-4.0","CC-PDDC","CC0-1.0","CDDL-1.0","CDDL-1.1","CDLA-Permissive-1.0","CDLA-Sharing-1.0","CECILL-1.0","CECILL-1.1","CECILL-2.0","CECILL-2.1","CECILL-B","CECILL-C","CERN-OHL-1.1","CERN-OHL-1.2","CERN-OHL-P-2.0","CERN-OHL-S-2.0","CERN-OHL-W-2.0","CNRI-Jython","CNRI-Python","CNRI-Python-GPL-Compatible","CPAL-1.0","CPL-1.0","CPOL-1.02","CUA-OPL-1.0","Caldera","ClArtistic","Condor-1.1","Crossword","CrystalStacker","Cube","D-FSL-1.0","DOC","DSDP","Dotseqn","ECL-1.0","ECL-2.0","EFL-1.0","EFL-2.0","EPICS","EPL-1.0","EPL-2.0","EUDatagrid","EUPL-1.0","EUPL-1.1","EUPL-1.2","Entessa","ErlPL-1.1","Eurosym","FSFAP","FSFUL","FSFULLR","FTL","Fair","Frameworx-1.0","FreeImage","GFDL-1.1-invariants-only","GFDL-1.1-invariants-or-later","GFDL-1.1-no-invariants-only","GFDL-1.1-no-invariants-or-later","GFDL-1.1-only","GFDL-1.1-or-later","GFDL-1.2-invariants-only","GFDL-1.2-invariants-or-later","GFDL-1.2-no-invariants-only","GFDL-1.2-no-invariants-or-later","GFDL-1.2-only","GFDL-1.2-or-later","GFDL-1.3-invariants-only","GFDL-1.3-invariants-or-later","GFDL-1.3-no-invariants-only","GFDL-1.3-no-invariants-or-later","GFDL-1.3-only","GFDL-1.3-or-later","GL2PS","GLWTPL","GPL-1.0-only","GPL-1.0-or-later","GPL-2.0-only","GPL-2.0-or-later","GPL-3.0-only","GPL-3.0-or-later","Giftware","Glide","Glulxe","HPND","HPND-sell-variant","HTMLTIDY","HaskellReport","Hippocratic-2.1","IBM-pibs","ICU","IJG","IPA","IPL-1.0","ISC","ImageMagick","Imlib2","Info-ZIP","Intel","Intel-ACPI","Interbase-1.0","JPNIC","JSON","JasPer-2.0","LAL-1.2","LAL-1.3","LGPL-2.0-only","LGPL-2.0-or-later","LGPL-2.1-only","LGPL-2.1-or-later","LGPL-3.0-only","LGPL-3.0-or-later","LGPLLR","LPL-1.0","LPL-1.02","LPPL-1.0","LPPL-1.1","LPPL-1.2","LPPL-1.3a","LPPL-1.3c","Latex2e","Leptonica","LiLiQ-P-1.1","LiLiQ-R-1.1","LiLiQ-Rplus-1.1","Libpng","Linux-OpenIB","MIT","MIT-0","MIT-CMU","MIT-advertising","MIT-enna","MIT-feh","MIT-open-group","MITNFA","MPL-1.0","MPL-1.1","MPL-2.0","MPL-2.0-no-copyleft-exception","MS-PL","MS-RL","MTLL","MakeIndex","MirOS","Motosoto","MulanPSL-1.0","MulanPSL-2.0","Multics","Mup","NASA-1.3","NBPL-1.0","NCGL-UK-2.0","NCSA","NGPL","NIST-PD","NIST-PD-fallback","NLOD-1.0","NLPL","NOSL","NPL-1.0","NPL-1.1","NPOSL-3.0","NRL","NTP","NTP-0","Naumen","Net-SNMP","NetCDF","Newsletr","Nokia","Noweb","O-UDA-1.0","OCCT-PL","OCLC-2.0","ODC-By-1.0","ODbL-1.0","OFL-1.0","OFL-1.0-RFN","OFL-1.0-no-RFN","OFL-1.1","OFL-1.1-RFN","OFL-1.1-no-RFN","OGC-1.0","OGL-Canada-2.0","OGL-UK-1.0","OGL-UK-2.0","OGL-UK-3.0","OGTSL","OLDAP-1.1","OLDAP-1.2","OLDAP-1.3","OLDAP-1.4","OLDAP-2.0","OLDAP-2.0.1","OLDAP-2.1","OLDAP-2.2","OLDAP-2.2.1","OLDAP-2.2.2","OLDAP-2.3","OLDAP-2.4","OLDAP-2.5","OLDAP-2.6","OLDAP-2.7","OLDAP-2.8","OML","OPL-1.0","OSET-PL-2.1","OSL-1.0","OSL-1.1","OSL-2.0","OSL-2.1","OSL-3.0","OpenSSL","PDDL-1.0","PHP-3.0","PHP-3.01","PSF-2.0","Parity-6.0.0","Parity-7.0.0","Plexus","PolyForm-Noncommercial-1.0.0","PolyForm-Small-Business-1.0.0","PostgreSQL","Python-2.0","QPL-1.0","Qhull","RHeCos-1.1","RPL-1.1","RPL-1.5","RPSL-1.0","RSA-MD","RSCPL","Rdisc","Ruby","SAX-PD","SCEA","SGI-B-1.0","SGI-B-1.1","SGI-B-2.0","SHL-0.5","SHL-0.51","SISSL","SISSL-1.2","SMLNJ","SMPPL","SNIA","SPL-1.0","SSH-OpenSSH","SSH-short","SSPL-1.0","SWL","Saxpath","Sendmail","Sendmail-8.23","SimPL-2.0","Sleepycat","Spencer-86","Spencer-94","Spencer-99","SugarCRM-1.1.3","TAPR-OHL-1.0","TCL","TCP-wrappers","TMate","TORQUE-1.1","TOSL","TU-Berlin-1.0","TU-Berlin-2.0","UCL-1.0","UPL-1.0","Unicode-DFS-2015","Unicode-DFS-2016","Unicode-TOU","Unlicense","VOSTROM","VSL-1.0","Vim","W3C","W3C-19980720","W3C-20150513","WTFPL","Watcom-1.0","Wsuipa","X11","XFree86-1.1","XSkat","Xerox","Xnet","YPL-1.0","YPL-1.1","ZPL-1.1","ZPL-2.0","ZPL-2.1","Zed","Zend-2.0","Zimbra-1.3","Zimbra-1.4","Zlib","blessing","bzip2-1.0.5","bzip2-1.0.6","copyleft-next-0.3.0","copyleft-next-0.3.1","curl","diffmark","dvipdfm","eGenix","etalab-2.0","gSOAP-1.3b","gnuplot","iMatix","libpng-2.0","libselinux-1.0","libtiff","mpich2","psfrag","psutils","xinetd","xpp","zlib-acknowledgement"]});var Nm=d((SF,xm)=>{xm.exports=["AGPL-1.0","AGPL-3.0","BSD-2-Clause-FreeBSD","BSD-2-Clause-NetBSD","GFDL-1.1","GFDL-1.2","GFDL-1.3","GPL-1.0","GPL-2.0","GPL-2.0-with-GCC-exception","GPL-2.0-with-autoconf-exception","GPL-2.0-with-bison-exception","GPL-2.0-with-classpath-exception","GPL-2.0-with-font-exception","GPL-3.0","GPL-3.0-with-GCC-exception","GPL-3.0-with-autoconf-exception","LGPL-2.0","LGPL-2.1","LGPL-3.0","Nunit","StandardML-NJ","eCos-2.0","wxWindows"]});var Pm=d((OF,Im)=>{Im.exports=["389-exception","Autoconf-exception-2.0","Autoconf-exception-3.0","Bison-exception-2.2","Bootloader-exception","Classpath-exception-2.0","CLISP-exception-2.0","DigiRule-FOSS-exception","eCos-exception-2.0","Fawkes-Runtime-exception","FLTK-exception","Font-exception-2.0","freertos-exception-2.0","GCC-exception-2.0","GCC-exception-3.1","gnu-javamail-exception","GPL-3.0-linking-exception","GPL-3.0-linking-source-exception","GPL-CC-1.0","i2p-gpl-java-exception","Libtool-exception","Linux-syscall-note","LLVM-exception","LZMA-exception","mif-exception","Nokia-Qt-exception-1.1","OCaml-LGPL-linking-exception","OCCT-exception-1.0","OpenJDK-assembly-exception-1.0","openvpn-openssl-exception","PS-or-PDF-font-exception-20170817","Qt-GPL-exception-1.0","Qt-LGPL-exception-1.1","Qwt-exception-1.0","Swift-exception","u-boot-exception-2.0","Universal-FOSS-exception-1.0","WxWindows-exception-3.1"]});var Fm=d((RF,Dm)=>{"use strict";var i_=[].concat(ku()).concat(Nm()),s_=Pm();Dm.exports=function(t){var e=0;function r(){return e1&&t[e-2]===" ")throw new Error("Space before `+`");return m&&{type:"OPERATOR",string:m}}function o(){return n(/[A-Za-z0-9-.]+/)}function a(){var m=o();if(!m)throw new Error("Expected idstring at offset "+e);return m}function u(){if(n("DocumentRef-")){var m=a();return{type:"DOCUMENTREF",string:m}}}function c(){if(n("LicenseRef-")){var m=a();return{type:"LICENSEREF",string:m}}}function l(){var m=e,h=o();if(i_.indexOf(h)!==-1)return{type:"LICENSE",string:h};if(s_.indexOf(h)!==-1)return{type:"EXCEPTION",string:h};e=m}function f(){return s()||u()||c()||l()}for(var p=[];r()&&(i(),!!r());){var y=f();if(!y)throw new Error("Unexpected `"+t[e]+"` at offset "+e);p.push(y)}return p}});var jm=d((CF,km)=>{"use strict";km.exports=function(t){var e=0;function r(){return e{"use strict";var o_=Fm(),a_=jm();qm.exports=function(t){return a_(o_(t))}});var Wm=d((AF,$m)=>{var u_=ju(),c_=ku();function ro(t){try{return u_(t),!0}catch(e){return!1}}var Mm=[["APGL","AGPL"],["Gpl","GPL"],["GLP","GPL"],["APL","Apache"],["ISD","ISC"],["GLP","GPL"],["IST","ISC"],["Claude","Clause"],[" or later","+"],[" International",""],["GNU","GPL"],["GUN","GPL"],["+",""],["GNU GPL","GPL"],["GNU/GPL","GPL"],["GNU GLP","GPL"],["GNU General Public License","GPL"],["Gnu public license","GPL"],["GNU Public License","GPL"],["GNU GENERAL PUBLIC LICENSE","GPL"],["MTI","MIT"],["Mozilla Public License","MPL"],["Universal Permissive License","UPL"],["WTH","WTF"],["-License",""]],l_=0,f_=1,Bm=[function(t){return t.toUpperCase()},function(t){return t.trim()},function(t){return t.replace(/\./g,"")},function(t){return t.replace(/\s+/g,"")},function(t){return t.replace(/\s+/g,"-")},function(t){return t.replace("v","-")},function(t){return t.replace(/,?\s*(\d)/,"-$1")},function(t){return t.replace(/,?\s*(\d)/,"-$1.0")},function(t){return t.replace(/,?\s*(V\.|v\.|V|v|Version|version)\s*(\d)/,"-$2")},function(t){return t.replace(/,?\s*(V\.|v\.|V|v|Version|version)\s*(\d)/,"-$2.0")},function(t){return t[0].toUpperCase()+t.slice(1)},function(t){return t.replace("/","-")},function(t){return t.replace(/\s*V\s*(\d)/,"-$1").replace(/(\d)$/,"$1.0")},function(t){return t.indexOf("3.0")!==-1?t+"-or-later":t+"-only"},function(t){return t+"only"},function(t){return t.replace(/(\d)$/,"-$1.0")},function(t){return t.replace(/(-| )?(\d)$/,"-$2-Clause")},function(t){return t.replace(/(-| )clause(-| )(\d)/,"-$3-Clause")},function(t){return t.replace(/\b(Modified|New|Revised)(-| )?BSD((-| )License)?/i,"BSD-3-Clause")},function(t){return t.replace(/\bSimplified(-| )?BSD((-| )License)?/i,"BSD-2-Clause")},function(t){return t.replace(/\b(Free|Net)(-| )?BSD((-| )License)?/i,"BSD-2-Clause-$1BSD")},function(t){return t.replace(/\bClear(-| )?BSD((-| )License)?/i,"BSD-3-Clause-Clear")},function(t){return t.replace(/\b(Old|Original)(-| )?BSD((-| )License)?/i,"BSD-4-Clause")},function(t){return"CC-"+t},function(t){return"CC-"+t+"-4.0"},function(t){return t.replace("Attribution","BY").replace("NonCommercial","NC").replace("NoDerivatives","ND").replace(/ (\d)/,"-$1").replace(/ ?International/,"")},function(t){return"CC-"+t.replace("Attribution","BY").replace("NonCommercial","NC").replace("NoDerivatives","ND").replace(/ (\d)/,"-$1").replace(/ ?International/,"")+"-4.0"}],qu=c_.map(function(t){var e=/^(.*)-\d+\.\d+$/.exec(t);return e?[e[0],e[1]]:[t,null]}).reduce(function(t,e){var r=e[1];return t[r]=t[r]||[],t[r].push(e[0]),t},{}),h_=Object.keys(qu).map(function(e){return[e,qu[e]]}).filter(function(e){return e[1].length===1&&e[0]!==null&&e[0]!=="APL"}).map(function(e){return[e[0],e[1][0]]});qu=void 0;var Um=[["UNLI","Unlicense"],["WTF","WTFPL"],["2 CLAUSE","BSD-2-Clause"],["2-CLAUSE","BSD-2-Clause"],["3 CLAUSE","BSD-3-Clause"],["3-CLAUSE","BSD-3-Clause"],["AFFERO","AGPL-3.0-or-later"],["AGPL","AGPL-3.0-or-later"],["APACHE","Apache-2.0"],["ARTISTIC","Artistic-2.0"],["Affero","AGPL-3.0-or-later"],["BEER","Beerware"],["BOOST","BSL-1.0"],["BSD","BSD-2-Clause"],["CDDL","CDDL-1.1"],["ECLIPSE","EPL-1.0"],["FUCK","WTFPL"],["GNU","GPL-3.0-or-later"],["LGPL","LGPL-3.0-or-later"],["GPLV1","GPL-1.0-only"],["GPL-1","GPL-1.0-only"],["GPLV2","GPL-2.0-only"],["GPL-2","GPL-2.0-only"],["GPL","GPL-3.0-or-later"],["MIT +NO-FALSE-ATTRIBS","MITNFA"],["MIT","MIT"],["MPL","MPL-2.0"],["X11","X11"],["ZLIB","Zlib"]].concat(h_),p_=0,d_=1,Gm=function(t){for(var e=0;e-1)return n[d_]}return null},Hm=function(t,e){for(var r=0;r-1){var s=t.replace(i,n[f_]),o=e(s);if(o!==null)return o}}return null};$m.exports=function(t,e){e=e||{};var r=e.upgrade===void 0?!0:!!e.upgrade;function n(a){return r?m_(a):a}var i=typeof t=="string"&&t.trim().length!==0;if(!i)throw Error("Invalid argument. Expected non-empty string.");if(t=t.trim(),ro(t))return n(t);var s=t.replace(/\+$/,"").trim();if(ro(s))return n(s);var o=Gm(t);return o!==null||(o=Hm(t,function(a){return ro(a)?a:Gm(a)}),o!==null)||(o=zm(t),o!==null)||(o=Hm(t,zm),o!==null)?n(o):null};function m_(t){return["GPL-1.0","LGPL-1.0","AGPL-1.0","GPL-2.0","LGPL-2.0","AGPL-2.0","LGPL-2.1"].indexOf(t)!==-1?t+"-only":["GPL-1.0+","GPL-2.0+","GPL-3.0+","LGPL-2.0+","LGPL-2.1+","LGPL-3.0+","AGPL-1.0+","AGPL-3.0+"].indexOf(t)!==-1?t.replace(/\+$/,"-or-later"):["GPL-3.0","LGPL-3.0","AGPL-3.0"].indexOf(t)!==-1?t+"-or-later":t}});var Mu=d((TF,Vm)=>{var g_=ju(),y_=Wm(),Ym='license should be a valid SPDX license expression (without "LicenseRef"), "UNLICENSED", or "SEE LICENSE IN "',v_=/^SEE LICEN[CS]E IN (.+)$/;function Xm(t,e){return e.slice(0,t.length)===t}function $u(t){if(t.hasOwnProperty("license")){var e=t.license;return Xm("LicenseRef",e)||Xm("DocumentRef",e)}else return $u(t.left)||$u(t.right)}Vm.exports=function(t){var e;try{e=g_(t)}catch(s){var r;if(t==="UNLICENSED"||t==="UNLICENCED")return{validForOldPackages:!0,validForNewPackages:!0,unlicensed:!0};if(r=v_.exec(t))return{validForOldPackages:!0,validForNewPackages:!0,inFile:r[1]};var n={validForOldPackages:!1,validForNewPackages:!1,warnings:[Ym]};if(t.trim().length!==0){var i=y_(t);i&&n.warnings.push('license is similar to the valid expression "'+i+'"')}return n}return $u(e)?{validForNewPackages:!1,validForOldPackages:!1,spdx:!0,warnings:[Ym]}:{validForNewPackages:!0,validForOldPackages:!0,spdx:!0}}});var Bu=d((LF,Km)=>{"use strict";var Ni=Km.exports={github:{protocols:["git","http","git+ssh","git+https","ssh","https"],domain:"github.com",treepath:"tree",filetemplate:"https://{auth@}raw.githubusercontent.com/{user}/{project}/{committish}/{path}",bugstemplate:"https://{domain}/{user}/{project}/issues",gittemplate:"git://{auth@}{domain}/{user}/{project}.git{#committish}",tarballtemplate:"https://codeload.{domain}/{user}/{project}/tar.gz/{committish}"},bitbucket:{protocols:["git+ssh","git+https","ssh","https"],domain:"bitbucket.org",treepath:"src",tarballtemplate:"https://{domain}/{user}/{project}/get/{committish}.tar.gz"},gitlab:{protocols:["git+ssh","git+https","ssh","https"],domain:"gitlab.com",treepath:"tree",bugstemplate:"https://{domain}/{user}/{project}/issues",httpstemplate:"git+https://{auth@}{domain}/{user}/{projectPath}.git{#committish}",tarballtemplate:"https://{domain}/{user}/{project}/repository/archive.tar.gz?ref={committish}",pathmatch:/^[/]([^/]+)[/]((?!.*(\/-\/|\/repository\/archive\.tar\.gz\?=.*|\/repository\/[^/]+\/archive.tar.gz$)).*?)(?:[.]git|[/])?$/},gist:{protocols:["git","git+ssh","git+https","ssh","https"],domain:"gist.github.com",pathmatch:/^[/](?:([^/]+)[/])?([a-z0-9]{32,})(?:[.]git)?$/,filetemplate:"https://gist.githubusercontent.com/{user}/{project}/raw{/committish}/{path}",bugstemplate:"https://{domain}/{project}",gittemplate:"git://{domain}/{project}.git{#committish}",sshtemplate:"git@{domain}:/{project}.git{#committish}",sshurltemplate:"git+ssh://git@{domain}/{project}.git{#committish}",browsetemplate:"https://{domain}/{project}{/committish}",browsefiletemplate:"https://{domain}/{project}{/committish}{#path}",docstemplate:"https://{domain}/{project}{/committish}",httpstemplate:"git+https://{domain}/{project}.git{#committish}",shortcuttemplate:"{type}:{project}{#committish}",pathtemplate:"{project}{#committish}",tarballtemplate:"https://codeload.github.com/gist/{project}/tar.gz/{committish}",hashformat:function(t){return"file-"+Zm(t)}}},Jm={sshtemplate:"git@{domain}:{user}/{project}.git{#committish}",sshurltemplate:"git+ssh://git@{domain}/{user}/{project}.git{#committish}",browsetemplate:"https://{domain}/{user}/{project}{/tree/committish}",browsefiletemplate:"https://{domain}/{user}/{project}/{treepath}/{committish}/{path}{#fragment}",docstemplate:"https://{domain}/{user}/{project}{/tree/committish}#readme",httpstemplate:"git+https://{auth@}{domain}/{user}/{project}.git{#committish}",filetemplate:"https://{domain}/{user}/{project}/raw/{committish}/{path}",shortcuttemplate:"{type}:{user}/{project}{#committish}",pathtemplate:"{user}/{project}{#committish}",pathmatch:/^[/]([^/]+)[/]([^/]+?)(?:[.]git|[/])?$/,hashformat:Zm};Object.keys(Ni).forEach(function(t){Object.keys(Jm).forEach(function(e){Ni[t][e]||(Ni[t][e]=Jm[e])}),Ni[t].protocols_re=RegExp("^("+Ni[t].protocols.map(function(e){return e.replace(/([\\+*{}()[\]$^|])/g,"\\$1")}).join("|")+"):$")});function Zm(t){return t.toLowerCase().replace(/^\W+|\/|\W+$/g,"").replace(/\W+/g,"-")}});var t0=d((xF,Qm)=>{"use strict";var e0=Bu(),Ln=Object.assign||function(e,r){if(r===null||typeof r!="object")return e;for(var n=Object.keys(r),i=n.length;i--;)e[n[i]]=r[n[i]];return e};Qm.exports=Ie;function Ie(t,e,r,n,i,s,o){var a=this;a.type=t,Object.keys(e0[t]).forEach(function(u){a[u]=e0[t][u]}),a.user=e,a.auth=r,a.project=n,a.committish=i,a.default=s,a.opts=o||{}}Ie.prototype.hash=function(){return this.committish?"#"+this.committish:""};Ie.prototype._fill=function(t,e){if(!!t){var r=Ln({},e);r.path=r.path?r.path.replace(/^[/]+/g,""):"",e=Ln(Ln({},this.opts),e);var n=this;Object.keys(this).forEach(function(l){n[l]!=null&&r[l]==null&&(r[l]=n[l])});var i=r.auth,s=r.committish,o=r.fragment,a=r.path,u=r.project;Object.keys(r).forEach(function(l){var f=r[l];(l==="path"||l==="project")&&typeof f=="string"?r[l]=f.split("/").map(function(p){return encodeURIComponent(p)}).join("/"):r[l]=encodeURIComponent(f)}),r["auth@"]=i?i+"@":"",r["#fragment"]=o?"#"+this.hashformat(o):"",r.fragment=r.fragment?r.fragment:"",r["#path"]=a?"#"+this.hashformat(a):"",r["/path"]=r.path?"/"+r.path:"",r.projectPath=u.split("/").map(encodeURIComponent).join("/"),e.noCommittish?(r["#committish"]="",r["/tree/committish"]="",r["/committish"]="",r.committish=""):(r["#committish"]=s?"#"+s:"",r["/tree/committish"]=r.committish?"/"+r.treepath+"/"+r.committish:"",r["/committish"]=r.committish?"/"+r.committish:"",r.committish=r.committish||"master");var c=t;return Object.keys(r).forEach(function(l){c=c.replace(new RegExp("[{]"+l+"[}]","g"),r[l])}),e.noGitPlus?c.replace(/^git[+]/,""):c}};Ie.prototype.ssh=function(t){return this._fill(this.sshtemplate,t)};Ie.prototype.sshurl=function(t){return this._fill(this.sshurltemplate,t)};Ie.prototype.browse=function(t,e,r){return typeof t=="string"?(typeof e!="string"&&(r=e,e=null),this._fill(this.browsefiletemplate,Ln({fragment:e,path:t},r))):this._fill(this.browsetemplate,t)};Ie.prototype.docs=function(t){return this._fill(this.docstemplate,t)};Ie.prototype.bugs=function(t){return this._fill(this.bugstemplate,t)};Ie.prototype.https=function(t){return this._fill(this.httpstemplate,t)};Ie.prototype.git=function(t){return this._fill(this.gittemplate,t)};Ie.prototype.shortcut=function(t){return this._fill(this.shortcuttemplate,t)};Ie.prototype.path=function(t){return this._fill(this.pathtemplate,t)};Ie.prototype.tarball=function(t){var e=Ln({},t,{noCommittish:!1});return this._fill(this.tarballtemplate,e)};Ie.prototype.file=function(t,e){return this._fill(this.filetemplate,Ln({path:t},e))};Ie.prototype.getDefaultRepresentation=function(){return this.default};Ie.prototype.toString=function(t){return this.default&&typeof this[this.default]=="function"?this[this.default](t):this.sshurl(t)}});var n0=d((NF,Uu)=>{"use strict";var no=require("url"),r0=Bu(),b_=Uu.exports=t0(),E_={"git+ssh:":"sshurl","git+https:":"https","ssh:":"sshurl","git:":"git"};function w_(t){return E_[t]||t.slice(0,-1)}var S_={"git:":!0,"https:":!0,"git+https:":!0,"http:":!0,"git+http:":!0},Gu={};Uu.exports.fromUrl=function(t,e){if(typeof t=="string"){var r=t+JSON.stringify(e||{});return r in Gu||(Gu[r]=O_(t,e)),Gu[r]}};function O_(t,e){if(!(t==null||t==="")){var r=C_(R_(t)?"github:"+t:t),n=__(r),i=r.match(new RegExp("^([^:]+):(?:(?:[^@:]+(?:[^@]+)?@)?([^/]*))[/](.+?)(?:[.]git)?($|#)")),s=Object.keys(r0).map(function(o){try{var a=r0[o],u=null;n.auth&&S_[n.protocol]&&(u=n.auth);var c=n.hash?decodeURIComponent(n.hash.substr(1)):null,l=null,f=null,p=null;if(i&&i[1]===o)l=i[2]&&decodeURIComponent(i[2]),f=decodeURIComponent(i[3]),p="shortcut";else{if(n.host&&n.host!==a.domain&&n.host.replace(/^www[.]/,"")!==a.domain||!a.protocols_re.test(n.protocol)||!n.path)return;var y=a.pathmatch,m=n.path.match(y);if(!m)return;m[1]!==null&&m[1]!==void 0&&(l=decodeURIComponent(m[1].replace(/^:/,""))),f=decodeURIComponent(m[2]),p=w_(n.protocol)}return new b_(o,l,u,f,c,p,e)}catch(h){if(!(h instanceof URIError))throw h}}).filter(function(o){return o});if(s.length===1)return s[0]}}function R_(t){return/^[^:@%/\s.-][^:@%/\s]*[/][^:@\s/%]+(?:#.*)?$/.test(t)}function C_(t){var e=no.parse(t);return e.protocol==="gist:"&&e.host&&!e.path?e.protocol+"/"+e.host:t}function __(t){var e=t.match(/^([^@]+)@([^:/]+):[/]?((?:[^/]+[/])?[^/]+?)(?:[.]git)?(#.*)?$/);if(!e){var r=no.parse(t);if(r.auth&&typeof no.URL=="function"){var n=t.match(/[^@]+@[^:/]+/);if(n){var i=new no.URL(n[0]);r.auth=i.username||"",i.password&&(r.auth+=":"+i.password)}}return r}return{protocol:"git+ssh:",slashes:!0,auth:e[1],host:e[2],port:null,hostname:e[2],hash:e[4],search:null,query:null,pathname:"/"+e[3],path:"/"+e[3],href:"git+ssh://"+e[1]+"@"+e[2]+"/"+e[3]+(e[4]||"")}}});var zu=d((IF,i0)=>{i0.exports=function(){var t=Error.prepareStackTrace;Error.prepareStackTrace=function(r,n){return n};var e=new Error().stack;return Error.prepareStackTrace=t,e[2].getFileName()}});var s0=d((PF,Ii)=>{"use strict";var A_=process.platform==="win32",T_=/^([a-zA-Z]:|[\\\/]{2}[^\\\/]+[\\\/]+[^\\\/]+)?([\\\/])?([\s\S]*?)$/,L_=/^([\s\S]*?)((?:\.{1,2}|[^\\\/]+?|)(\.[^.\/\\]*|))(?:[\\\/]*)$/,Hu={};function x_(t){var e=T_.exec(t),r=(e[1]||"")+(e[2]||""),n=e[3]||"",i=L_.exec(n),s=i[1],o=i[2],a=i[3];return[r,s,o,a]}Hu.parse=function(t){if(typeof t!="string")throw new TypeError("Parameter 'pathString' must be a string, not "+typeof t);var e=x_(t);if(!e||e.length!==4)throw new TypeError("Invalid path '"+t+"'");return{root:e[0],dir:e[0]+e[1].slice(0,-1),base:e[2],ext:e[3],name:e[2].slice(0,e[2].length-e[3].length)}};var N_=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/,Wu={};function I_(t){return N_.exec(t).slice(1)}Wu.parse=function(t){if(typeof t!="string")throw new TypeError("Parameter 'pathString' must be a string, not "+typeof t);var e=I_(t);if(!e||e.length!==4)throw new TypeError("Invalid path '"+t+"'");return e[1]=e[1]||"",e[2]=e[2]||"",e[3]=e[3]||"",{root:e[0],dir:e[0]+e[1].slice(0,-1),base:e[2],ext:e[3],name:e[2].slice(0,e[2].length-e[3].length)}};A_?Ii.exports=Hu.parse:Ii.exports=Wu.parse;Ii.exports.posix=Wu.parse;Ii.exports.win32=Hu.parse});var Vu=d((DF,o0)=>{var a0=require("path"),u0=a0.parse||s0(),c0=function(e,r){var n="/";/^([A-Za-z]:)/.test(e)?n="":/^\\\\/.test(e)&&(n="\\\\");for(var i=[e],s=u0(e);s.dir!==i[i.length-1];)i.push(s.dir),s=u0(s.dir);return i.reduce(function(o,a){return o.concat(r.map(function(u){return a0.resolve(n,a,u)}))},[])};o0.exports=function(e,r,n){var i=r&&r.moduleDirectory?[].concat(r.moduleDirectory):["node_modules"];if(r&&typeof r.paths=="function")return r.paths(n,e,function(){return c0(e,i)},r);var s=c0(e,i);return r&&r.paths?s.concat(r.paths):s}});var Yu=d((FF,l0)=>{l0.exports=function(t,e){return e||{}}});var h0=d((kF,f0)=>{"use strict";var P_="Function.prototype.bind called on incompatible ",Xu=Array.prototype.slice,D_=Object.prototype.toString,F_="[object Function]";f0.exports=function(e){var r=this;if(typeof r!="function"||D_.call(r)!==F_)throw new TypeError(P_+r);for(var n=Xu.call(arguments,1),i,s=function(){if(this instanceof i){var l=r.apply(this,n.concat(Xu.call(arguments)));return Object(l)===l?l:this}else return r.apply(e,n.concat(Xu.call(arguments)))},o=Math.max(0,r.length-n.length),a=[],u=0;u{"use strict";var k_=h0();p0.exports=Function.prototype.bind||k_});var g0=d((qF,m0)=>{"use strict";var j_=d0();m0.exports=j_.call(Function.call,Object.prototype.hasOwnProperty)});var v0=d(($F,y0)=>{y0.exports={assert:!0,"assert/strict":">= 15",async_hooks:">= 8",buffer_ieee754:"< 0.9.7",buffer:!0,child_process:!0,cluster:!0,console:!0,constants:!0,crypto:!0,_debug_agent:">= 1 && < 8",_debugger:"< 8",dgram:!0,diagnostics_channel:">= 15.1",dns:!0,"dns/promises":">= 15",domain:">= 0.7.12",events:!0,freelist:"< 6",fs:!0,"fs/promises":[">= 10 && < 10.1",">= 14"],_http_agent:">= 0.11.1",_http_client:">= 0.11.1",_http_common:">= 0.11.1",_http_incoming:">= 0.11.1",_http_outgoing:">= 0.11.1",_http_server:">= 0.11.1",http:!0,http2:">= 8.8",https:!0,inspector:">= 8.0.0",_linklist:"< 8",module:!0,net:!0,"node-inspect/lib/_inspect":">= 7.6.0 && < 12","node-inspect/lib/internal/inspect_client":">= 7.6.0 && < 12","node-inspect/lib/internal/inspect_repl":">= 7.6.0 && < 12",os:!0,path:!0,"path/posix":">= 15.3","path/win32":">= 15.3",perf_hooks:">= 8.5",process:">= 1",punycode:!0,querystring:!0,readline:!0,repl:!0,smalloc:">= 0.11.5 && < 3",_stream_duplex:">= 0.9.4",_stream_transform:">= 0.9.4",_stream_wrap:">= 1.4.1",_stream_passthrough:">= 0.9.4",_stream_readable:">= 0.9.4",_stream_writable:">= 0.9.4",stream:!0,"stream/promises":">= 15",string_decoder:!0,sys:[">= 0.6 && < 0.7",">= 0.8"],timers:!0,"timers/promises":">= 15",_tls_common:">= 0.11.13",_tls_legacy:">= 0.11.3 && < 10",_tls_wrap:">= 0.11.3",tls:!0,trace_events:">= 10",tty:!0,url:!0,util:!0,"util/types":">= 15.3","v8/tools/arguments":">= 10 && < 12","v8/tools/codemap":[">= 4.4.0 && < 5",">= 5.2.0 && < 12"],"v8/tools/consarray":[">= 4.4.0 && < 5",">= 5.2.0 && < 12"],"v8/tools/csvparser":[">= 4.4.0 && < 5",">= 5.2.0 && < 12"],"v8/tools/logreader":[">= 4.4.0 && < 5",">= 5.2.0 && < 12"],"v8/tools/profile_view":[">= 4.4.0 && < 5",">= 5.2.0 && < 12"],"v8/tools/splaytree":[">= 4.4.0 && < 5",">= 5.2.0 && < 12"],v8:">= 1",vm:!0,wasi:">= 13.4 && < 13.5",worker_threads:">= 11.7",zlib:!0}});var io=d((MF,b0)=>{"use strict";var q_=g0();function $_(t,e){for(var r=t.split("."),n=e.split(" "),i=n.length>1?n[0]:"=",s=(n.length>1?n[1]:n[0]).split("."),o=0;o<3;++o){var a=parseInt(r[o]||0,10),u=parseInt(s[o]||0,10);if(a!==u)return i==="<"?a="?a>=u:!1}return i===">="}function E0(t,e){var r=e.split(/ ?&& ?/);if(r.length===0)return!1;for(var n=0;n{var Br=require("fs"),we=require("path"),B_=zu(),U_=Vu(),G_=Yu(),z_=io(),H_=Br.realpath&&typeof Br.realpath.native=="function"?Br.realpath.native:Br.realpath,W_=function(e,r){Br.stat(e,function(n,i){return n?n.code==="ENOENT"||n.code==="ENOTDIR"?r(null,!1):r(n):r(null,i.isFile()||i.isFIFO())})},V_=function(e,r){Br.stat(e,function(n,i){return n?n.code==="ENOENT"||n.code==="ENOTDIR"?r(null,!1):r(n):r(null,i.isDirectory())})},Y_=function(e,r){H_(e,function(n,i){n&&n.code!=="ENOENT"?r(n):r(null,n?e:i)})},Pi=function(e,r,n,i){n&&n.preserveSymlinks===!1?e(r,i):i(null,r)},X_=function(e,r,n){for(var i=U_(r,n,e),s=0;s{R0.exports={assert:!0,"assert/strict":">= 15",async_hooks:">= 8",buffer_ieee754:"< 0.9.7",buffer:!0,child_process:!0,cluster:!0,console:!0,constants:!0,crypto:!0,_debug_agent:">= 1 && < 8",_debugger:"< 8",dgram:!0,diagnostics_channel:">= 15.1",dns:!0,"dns/promises":">= 15",domain:">= 0.7.12",events:!0,freelist:"< 6",fs:!0,"fs/promises":[">= 10 && < 10.1",">= 14"],_http_agent:">= 0.11.1",_http_client:">= 0.11.1",_http_common:">= 0.11.1",_http_incoming:">= 0.11.1",_http_outgoing:">= 0.11.1",_http_server:">= 0.11.1",http:!0,http2:">= 8.8",https:!0,inspector:">= 8.0.0",_linklist:"< 8",module:!0,net:!0,"node-inspect/lib/_inspect":">= 7.6.0 && < 12","node-inspect/lib/internal/inspect_client":">= 7.6.0 && < 12","node-inspect/lib/internal/inspect_repl":">= 7.6.0 && < 12",os:!0,path:!0,perf_hooks:">= 8.5",process:">= 1",punycode:!0,querystring:!0,readline:!0,repl:!0,smalloc:">= 0.11.5 && < 3",_stream_duplex:">= 0.9.4",_stream_transform:">= 0.9.4",_stream_wrap:">= 1.4.1",_stream_passthrough:">= 0.9.4",_stream_readable:">= 0.9.4",_stream_writable:">= 0.9.4",stream:!0,"stream/promises":">= 15",string_decoder:!0,sys:[">= 0.6 && < 0.7",">= 0.8"],timers:!0,"timers/promises":">= 15",_tls_common:">= 0.11.13",_tls_legacy:">= 0.11.3 && < 10",_tls_wrap:">= 0.11.3",tls:!0,trace_events:">= 10",tty:!0,url:!0,util:!0,"v8/tools/arguments":">= 10 && < 12","v8/tools/codemap":[">= 4.4.0 && < 5",">= 5.2.0 && < 12"],"v8/tools/consarray":[">= 4.4.0 && < 5",">= 5.2.0 && < 12"],"v8/tools/csvparser":[">= 4.4.0 && < 5",">= 5.2.0 && < 12"],"v8/tools/logreader":[">= 4.4.0 && < 5",">= 5.2.0 && < 12"],"v8/tools/profile_view":[">= 4.4.0 && < 5",">= 5.2.0 && < 12"],"v8/tools/splaytree":[">= 4.4.0 && < 5",">= 5.2.0 && < 12"],v8:">= 1",vm:!0,wasi:">= 13.4 && < 13.5",worker_threads:">= 11.7",zlib:!0}});var L0=d((GF,_0)=>{var K_=process.versions&&process.versions.node&&process.versions.node.split(".")||[];function Z_(t){for(var e=t.split(" "),r=e.length>1?e[0]:"=",n=(e.length>1?e[1]:e[0]).split("."),i=0;i<3;++i){var s=parseInt(K_[i]||0,10),o=parseInt(n[i]||0,10);if(s!==o)return r==="<"?s="?s>=o:!1}return r===">="}function A0(t){var e=t.split(/ ?&& ?/);if(e.length===0)return!1;for(var r=0;r{var Q_=io();x0.exports=function(e){return Q_(e)}});var P0=d((HF,I0)=>{var eA=io(),Ur=require("fs"),Ze=require("path"),tA=zu(),rA=Vu(),nA=Yu(),iA=Ur.realpathSync&&typeof Ur.realpathSync.native=="function"?Ur.realpathSync.native:Ur.realpathSync,sA=function(e){try{var r=Ur.statSync(e)}catch(n){if(n&&(n.code==="ENOENT"||n.code==="ENOTDIR"))return!1;throw n}return r.isFile()||r.isFIFO()},oA=function(e){try{var r=Ur.statSync(e)}catch(n){if(n&&(n.code==="ENOENT"||n.code==="ENOTDIR"))return!1;throw n}return r.isDirectory()},aA=function(e){try{return iA(e)}catch(r){if(r.code!=="ENOENT")throw r}return e},Di=function(e,r,n){return n&&n.preserveSymlinks===!1?e(r):r},uA=function(e,r,n){for(var i=rA(r,n,e),s=0;s{var so=O0();so.core=L0();so.isCore=N0();so.sync=P0();D0.exports=so});var k0=d((VF,F0)=>{F0.exports=cA;function cA(t){if(!!t&&t!=="ERROR: No README data found!"){t=t.trim().split(` -`);for(var e=0;t[e]&&t[e].trim().match(/^(#|$)/);e++);for(var r=t.length,n=e+1;n{j0.exports={topLevel:{dependancies:"dependencies",dependecies:"dependencies",depdenencies:"dependencies",devEependencies:"devDependencies",depends:"dependencies","dev-dependencies":"devDependencies",devDependences:"devDependencies",devDepenencies:"devDependencies",devdependencies:"devDependencies",repostitory:"repository",repo:"repository",prefereGlobal:"preferGlobal",hompage:"homepage",hampage:"homepage",autohr:"author",autor:"author",contributers:"contributors",publicationConfig:"publishConfig",script:"scripts"},bugs:{web:"url",name:"url"},script:{server:"start",tests:"test"}}});var U0=d((KF,$0)=>{var M0=Tm(),lA=Mu(),oo=n0(),fA=Ju().isCore,hA=["dependencies","devDependencies","optionalDependencies"],pA=k0(),Qu=require("url"),hr=q0(),XF=$0.exports={warn:function(){},fixRepositoryField:function(t){if(t.repositories&&(this.warn("repositories"),t.repository=t.repositories[0]),!t.repository)return this.warn("missingRepository");typeof t.repository=="string"&&(t.repository={type:"git",url:t.repository});var e=t.repository.url||"";if(e){var r=oo.fromUrl(e);r&&(e=t.repository.url=r.getDefaultRepresentation()=="shortcut"?r.https():r.toString())}e.match(/github.com\/[^\/]+\/[^\/]+\.git\.git$/)&&this.warn("brokenGitUrl",e)},fixTypos:function(t){Object.keys(hr.topLevel).forEach(function(e){t.hasOwnProperty(e)&&this.warn("typo",e,hr.topLevel[e])},this)},fixScriptsField:function(t){if(!!t.scripts){if(typeof t.scripts!="object"){this.warn("nonObjectScripts"),delete t.scripts;return}Object.keys(t.scripts).forEach(function(e){typeof t.scripts[e]!="string"?(this.warn("nonStringScript"),delete t.scripts[e]):hr.script[e]&&!t.scripts[hr.script[e]]&&this.warn("typo",e,hr.script[e],"scripts")},this)}},fixFilesField:function(t){var e=t.files;e&&!Array.isArray(e)?(this.warn("nonArrayFiles"),delete t.files):t.files&&(t.files=t.files.filter(function(r){return!r||typeof r!="string"?(this.warn("invalidFilename",r),!1):!0},this))},fixBinField:function(t){if(!!t.bin&&typeof t.bin=="string"){var e={},r;(r=t.name.match(/^@[^/]+[/](.*)$/))?e[r[1]]=t.bin:e[t.name]=t.bin,t.bin=e}},fixManField:function(t){!t.man||typeof t.man=="string"&&(t.man=[t.man])},fixBundleDependenciesField:function(t){var e="bundledDependencies",r="bundleDependencies";t[e]&&!t[r]&&(t[r]=t[e],delete t[e]),t[r]&&!Array.isArray(t[r])?(this.warn("nonArrayBundleDependencies"),delete t[r]):t[r]&&(t[r]=t[r].filter(function(n){return!n||typeof n!="string"?(this.warn("nonStringBundleDependency",n),!1):(t.dependencies||(t.dependencies={}),t.dependencies.hasOwnProperty(n)||(this.warn("nonDependencyBundleDependency",n),t.dependencies[n]="*"),!0)},this))},fixDependencies:function(t,e){var r=!e;vA(t,this.warn),yA(t,this.warn),this.fixBundleDependenciesField(t),["dependencies","devDependencies"].forEach(function(n){if(n in t){if(!t[n]||typeof t[n]!="object"){this.warn("nonObjectDependencies",n),delete t[n];return}Object.keys(t[n]).forEach(function(i){var s=t[n][i];typeof s!="string"&&(this.warn("nonStringDependency",i,JSON.stringify(s)),delete t[n][i]);var o=oo.fromUrl(t[n][i]);o&&(t[n][i]=o.toString())},this)}},this)},fixModulesField:function(t){t.modules&&(this.warn("deprecatedModules"),delete t.modules)},fixKeywordsField:function(t){typeof t.keywords=="string"&&(t.keywords=t.keywords.split(/,\s+/)),t.keywords&&!Array.isArray(t.keywords)?(delete t.keywords,this.warn("nonArrayKeywords")):t.keywords&&(t.keywords=t.keywords.filter(function(e){return typeof e!="string"||!e?(this.warn("nonStringKeyword"),!1):!0},this))},fixVersionField:function(t,e){var r=!e;if(!t.version)return t.version="",!0;if(!M0.valid(t.version,r))throw new Error('Invalid version: "'+t.version+'"');return t.version=M0.clean(t.version,r),!0},fixPeople:function(t){B0(t,mA),B0(t,gA)},fixNameField:function(t,e){typeof e=="boolean"?e={strict:e}:typeof e=="undefined"&&(e={});var r=e.strict;if(!t.name&&!r){t.name="";return}if(typeof t.name!="string")throw new Error("name field must be a string.");r||(t.name=t.name.trim()),dA(t.name,r,e.allowLegacyCase),fA(t.name)&&this.warn("conflictingName",t.name)},fixDescriptionField:function(t){t.description&&typeof t.description!="string"&&(this.warn("nonStringDescription"),delete t.description),t.readme&&!t.description&&(t.description=pA(t.readme)),t.description===void 0&&delete t.description,t.description||this.warn("missingDescription")},fixReadmeField:function(t){t.readme||(this.warn("missingReadme"),t.readme="ERROR: No README data found!")},fixBugsField:function(t){if(!t.bugs&&t.repository&&t.repository.url){var e=oo.fromUrl(t.repository.url);e&&e.bugs()&&(t.bugs={url:e.bugs()})}else if(t.bugs){var r=/^.+@.*\..+$/;if(typeof t.bugs=="string")r.test(t.bugs)?t.bugs={email:t.bugs}:Qu.parse(t.bugs).protocol?t.bugs={url:t.bugs}:this.warn("nonEmailUrlBugsString");else{bA(t.bugs,this.warn);var n=t.bugs;t.bugs={},n.url&&(typeof n.url=="string"&&Qu.parse(n.url).protocol?t.bugs.url=n.url:this.warn("nonUrlBugsUrlField")),n.email&&(typeof n.email=="string"&&r.test(n.email)?t.bugs.email=n.email:this.warn("nonEmailBugsEmailField"))}!t.bugs.email&&!t.bugs.url&&(delete t.bugs,this.warn("emptyNormalizedBugs"))}},fixHomepageField:function(t){if(!t.homepage&&t.repository&&t.repository.url){var e=oo.fromUrl(t.repository.url);e&&e.docs()&&(t.homepage=e.docs())}if(!!t.homepage){if(typeof t.homepage!="string")return this.warn("nonUrlHomepage"),delete t.homepage;Qu.parse(t.homepage).protocol||(t.homepage="http://"+t.homepage)}},fixLicenseField:function(t){if(t.license)typeof t.license!="string"||t.license.length<1||t.license.trim()===""?this.warn("invalidLicense"):lA(t.license).validForNewPackages||this.warn("invalidLicense");else return this.warn("missingLicense")}};function EA(t){if(t.charAt(0)!=="@")return!1;var e=t.slice(1).split("/");return e.length!==2?!1:e[0]&&e[1]&&e[0]===encodeURIComponent(e[0])&&e[1]===encodeURIComponent(e[1])}function wA(t){return!t.match(/[\/@\s\+%:]/)&&t===encodeURIComponent(t)}function dA(t,e,r){if(t.charAt(0)==="."||!(EA(t)||wA(t))||e&&!r&&t!==t.toLowerCase()||t.toLowerCase()==="node_modules"||t.toLowerCase()==="favicon.ico")throw new Error("Invalid name: "+JSON.stringify(t))}function B0(t,e){return t.author&&(t.author=e(t.author)),["maintainers","contributors"].forEach(function(r){!Array.isArray(t[r])||(t[r]=t[r].map(e))}),t}function mA(t){if(typeof t=="string")return t;var e=t.name||"",r=t.url||t.web,n=r?" ("+r+")":"",i=t.email||t.mail,s=i?" <"+i+">":"";return e+s+n}function gA(t){if(typeof t!="string")return t;var e=t.match(/^([^\(<]+)/),r=t.match(/\(([^\)]+)\)/),n=t.match(/<([^>]+)>/),i={};return e&&e[0].trim()&&(i.name=e[0].trim()),n&&(i.email=n[1]),r&&(i.url=r[1]),i}function yA(t,e){var r=t.optionalDependencies;if(!!r){var n=t.dependencies||{};Object.keys(r).forEach(function(i){n[i]=r[i]}),t.dependencies=n}}function SA(t,e,r){if(!t)return{};if(typeof t=="string"&&(t=t.trim().split(/[\n\r\s\t ,]+/)),!Array.isArray(t))return t;r("deprecatedArrayDependencies",e);var n={};return t.filter(function(i){return typeof i=="string"}).forEach(function(i){i=i.trim().split(/(:?[@\s><=])/);var s=i.shift(),o=i.join("");o=o.trim(),o=o.replace(/^@/,""),n[s]=o}),n}function vA(t,e){hA.forEach(function(r){!t[r]||(t[r]=SA(t[r],r,e))})}function bA(t,e){!t||Object.keys(t).forEach(function(r){hr.bugs[r]&&(e("typo",r,hr.bugs[r],"bugs"),t[hr.bugs[r]]=t[r],delete t[r])})}});var z0=d((ZF,G0)=>{G0.exports={repositories:"'repositories' (plural) Not supported. Please pick one as the 'repository' field",missingRepository:"No repository field.",brokenGitUrl:"Probably broken git url: %s",nonObjectScripts:"scripts must be an object",nonStringScript:"script values must be string commands",nonArrayFiles:"Invalid 'files' member",invalidFilename:"Invalid filename in 'files' list: %s",nonArrayBundleDependencies:"Invalid 'bundleDependencies' list. Must be array of package names",nonStringBundleDependency:"Invalid bundleDependencies member: %s",nonDependencyBundleDependency:"Non-dependency in bundleDependencies: %s",nonObjectDependencies:"%s field must be an object",nonStringDependency:"Invalid dependency: %s %s",deprecatedArrayDependencies:"specifying %s as array is deprecated",deprecatedModules:"modules field is deprecated",nonArrayKeywords:"keywords should be an array of strings",nonStringKeyword:"keywords should be an array of strings",conflictingName:"%s is also the name of a node core module.",nonStringDescription:"'description' field should be a string",missingDescription:"No description",missingReadme:"No README data",missingLicense:"No license field.",nonEmailUrlBugsString:"Bug string field must be url, email, or {email,url}",nonUrlBugsUrlField:"bugs.url field must be a string url. Deleted.",nonEmailBugsEmailField:"bugs.email field must be a string email. Deleted.",emptyNormalizedBugs:"Normalized value of bugs field is an empty object. Deleted.",nonUrlHomepage:"homepage field must be a string url. Deleted.",invalidLicense:"license should be a valid SPDX license expression",typo:"%s should probably be %s."}});var V0=d((JF,H0)=>{var W0=require("util"),ec=z0();H0.exports=function(){var t=Array.prototype.slice.call(arguments,0),e=t.shift();if(e=="typo")return OA.apply(null,t);var r=ec[e]?ec[e]:e+": '%s'";return t.unshift(r),W0.format.apply(null,t)};function OA(t,e,r){return r&&(t=r+"['"+t+"']",e=r+"['"+e+"']"),W0.format(ec.typo,t,e)}});var nc=d((QF,Y0)=>{Y0.exports=X0;var tc=U0();X0.fixer=tc;var RA=V0(),CA=["name","version","description","repository","modules","scripts","files","bin","man","bugs","keywords","readme","homepage","license"],_A=["dependencies","people","typos"],rc=CA.map(function(t){return K0(t)+"Field"});rc=rc.concat(_A);function X0(t,e,r){e===!0&&(e=null,r=!0),r||(r=!1),(!e||t.private)&&(e=function(n){}),t.scripts&&t.scripts.install==="node-gyp rebuild"&&!t.scripts.preinstall&&(t.gypfile=!0),tc.warn=function(){e(RA.apply(null,arguments))},rc.forEach(function(n){tc["fix"+K0(n)](t,r)}),t._id=t.name+"@"+t.version}function K0(t){return t.charAt(0).toUpperCase()+t.slice(1)}});var eg=d((ek,ic)=>{"use strict";var{promisify:AA}=require("util"),Z0=require("fs"),J0=require("path"),Q0=fm(),TA=AA(Z0.readFile);ic.exports=async t=>{t={cwd:process.cwd(),normalize:!0,...t};let e=J0.resolve(t.cwd,"package.json"),r=Q0(await TA(e,"utf8"));return t.normalize&&nc()(r),r};ic.exports.sync=t=>{t={cwd:process.cwd(),normalize:!0,...t};let e=J0.resolve(t.cwd,"package.json"),r=Q0(Z0.readFileSync(e,"utf8"));return t.normalize&&nc()(r),r}});var ig=d((tk,sc)=>{"use strict";var tg=require("path"),rg=td(),ng=eg();sc.exports=async t=>{let e=await rg("package.json",t);if(!!e)return{packageJson:await ng({...t,cwd:tg.dirname(e)}),path:e}};sc.exports.sync=t=>{let e=rg.sync("package.json",t);if(!!e)return{packageJson:ng.sync({...t,cwd:tg.dirname(e)}),path:e}}});var ag=d((rk,oc)=>{"use strict";var LA=require("util"),sg=!1,og=(t=console.error)=>{sg||(sg=!0,process.on("unhandledRejection",e=>{e instanceof Error||(e=new Error(`Promise rejected with value: ${LA.inspect(e)}`)),t(e.stack),process.exit(1)}))};oc.exports=og;oc.exports.default=og});var Fi=d((nk,ug)=>{var xA="2.0.0",NA=256,IA=Number.MAX_SAFE_INTEGER||9007199254740991,PA=16;ug.exports={SEMVER_SPEC_VERSION:xA,MAX_LENGTH:NA,MAX_SAFE_INTEGER:IA,MAX_SAFE_COMPONENT_LENGTH:PA}});var ki=d((ik,cg)=>{var DA=typeof process=="object"&&process.env&&process.env.NODE_DEBUG&&/\bsemver\b/i.test(process.env.NODE_DEBUG)?(...t)=>console.error("SEMVER",...t):()=>{};cg.exports=DA});var Gr=d((pr,lg)=>{var{MAX_SAFE_COMPONENT_LENGTH:ac}=Fi(),FA=ki();pr=lg.exports={};var kA=pr.re=[],T=pr.src=[],L=pr.t={},jA=0,B=(t,e,r)=>{let n=jA++;FA(n,e),L[t]=n,T[n]=e,kA[n]=new RegExp(e,r?"g":void 0)};B("NUMERICIDENTIFIER","0|[1-9]\\d*");B("NUMERICIDENTIFIERLOOSE","[0-9]+");B("NONNUMERICIDENTIFIER","\\d*[a-zA-Z-][a-zA-Z0-9-]*");B("MAINVERSION",`(${T[L.NUMERICIDENTIFIER]})\\.(${T[L.NUMERICIDENTIFIER]})\\.(${T[L.NUMERICIDENTIFIER]})`);B("MAINVERSIONLOOSE",`(${T[L.NUMERICIDENTIFIERLOOSE]})\\.(${T[L.NUMERICIDENTIFIERLOOSE]})\\.(${T[L.NUMERICIDENTIFIERLOOSE]})`);B("PRERELEASEIDENTIFIER",`(?:${T[L.NUMERICIDENTIFIER]}|${T[L.NONNUMERICIDENTIFIER]})`);B("PRERELEASEIDENTIFIERLOOSE",`(?:${T[L.NUMERICIDENTIFIERLOOSE]}|${T[L.NONNUMERICIDENTIFIER]})`);B("PRERELEASE",`(?:-(${T[L.PRERELEASEIDENTIFIER]}(?:\\.${T[L.PRERELEASEIDENTIFIER]})*))`);B("PRERELEASELOOSE",`(?:-?(${T[L.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${T[L.PRERELEASEIDENTIFIERLOOSE]})*))`);B("BUILDIDENTIFIER","[0-9A-Za-z-]+");B("BUILD",`(?:\\+(${T[L.BUILDIDENTIFIER]}(?:\\.${T[L.BUILDIDENTIFIER]})*))`);B("FULLPLAIN",`v?${T[L.MAINVERSION]}${T[L.PRERELEASE]}?${T[L.BUILD]}?`);B("FULL",`^${T[L.FULLPLAIN]}$`);B("LOOSEPLAIN",`[v=\\s]*${T[L.MAINVERSIONLOOSE]}${T[L.PRERELEASELOOSE]}?${T[L.BUILD]}?`);B("LOOSE",`^${T[L.LOOSEPLAIN]}$`);B("GTLT","((?:<|>)?=?)");B("XRANGEIDENTIFIERLOOSE",`${T[L.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`);B("XRANGEIDENTIFIER",`${T[L.NUMERICIDENTIFIER]}|x|X|\\*`);B("XRANGEPLAIN",`[v=\\s]*(${T[L.XRANGEIDENTIFIER]})(?:\\.(${T[L.XRANGEIDENTIFIER]})(?:\\.(${T[L.XRANGEIDENTIFIER]})(?:${T[L.PRERELEASE]})?${T[L.BUILD]}?)?)?`);B("XRANGEPLAINLOOSE",`[v=\\s]*(${T[L.XRANGEIDENTIFIERLOOSE]})(?:\\.(${T[L.XRANGEIDENTIFIERLOOSE]})(?:\\.(${T[L.XRANGEIDENTIFIERLOOSE]})(?:${T[L.PRERELEASELOOSE]})?${T[L.BUILD]}?)?)?`);B("XRANGE",`^${T[L.GTLT]}\\s*${T[L.XRANGEPLAIN]}$`);B("XRANGELOOSE",`^${T[L.GTLT]}\\s*${T[L.XRANGEPLAINLOOSE]}$`);B("COERCE",`(^|[^\\d])(\\d{1,${ac}})(?:\\.(\\d{1,${ac}}))?(?:\\.(\\d{1,${ac}}))?(?:$|[^\\d])`);B("COERCERTL",T[L.COERCE],!0);B("LONETILDE","(?:~>?)");B("TILDETRIM",`(\\s*)${T[L.LONETILDE]}\\s+`,!0);pr.tildeTrimReplace="$1~";B("TILDE",`^${T[L.LONETILDE]}${T[L.XRANGEPLAIN]}$`);B("TILDELOOSE",`^${T[L.LONETILDE]}${T[L.XRANGEPLAINLOOSE]}$`);B("LONECARET","(?:\\^)");B("CARETTRIM",`(\\s*)${T[L.LONECARET]}\\s+`,!0);pr.caretTrimReplace="$1^";B("CARET",`^${T[L.LONECARET]}${T[L.XRANGEPLAIN]}$`);B("CARETLOOSE",`^${T[L.LONECARET]}${T[L.XRANGEPLAINLOOSE]}$`);B("COMPARATORLOOSE",`^${T[L.GTLT]}\\s*(${T[L.LOOSEPLAIN]})$|^$`);B("COMPARATOR",`^${T[L.GTLT]}\\s*(${T[L.FULLPLAIN]})$|^$`);B("COMPARATORTRIM",`(\\s*)${T[L.GTLT]}\\s*(${T[L.LOOSEPLAIN]}|${T[L.XRANGEPLAIN]})`,!0);pr.comparatorTrimReplace="$1$2$3";B("HYPHENRANGE",`^\\s*(${T[L.XRANGEPLAIN]})\\s+-\\s+(${T[L.XRANGEPLAIN]})\\s*$`);B("HYPHENRANGELOOSE",`^\\s*(${T[L.XRANGEPLAINLOOSE]})\\s+-\\s+(${T[L.XRANGEPLAINLOOSE]})\\s*$`);B("STAR","(<|>)?=?\\s*\\*");B("GTE0","^\\s*>=\\s*0.0.0\\s*$");B("GTE0PRE","^\\s*>=\\s*0.0.0-0\\s*$")});var ji=d((sk,fg)=>{var qA=["includePrerelease","loose","rtl"],$A=t=>t?typeof t!="object"?{loose:!0}:qA.filter(e=>t[e]).reduce((e,r)=>(e[r]=!0,e),{}):{};fg.exports=$A});var ao=d((ok,hg)=>{var pg=/^[0-9]+$/,dg=(t,e)=>{let r=pg.test(t),n=pg.test(e);return r&&n&&(t=+t,e=+e),t===e?0:r&&!n?-1:n&&!r?1:tdg(e,t);hg.exports={compareIdentifiers:dg,rcompareIdentifiers:MA}});var Pe=d((ak,mg)=>{var uo=ki(),{MAX_LENGTH:gg,MAX_SAFE_INTEGER:co}=Fi(),{re:yg,t:vg}=Gr(),BA=ji(),{compareIdentifiers:qi}=ao(),lt=class{constructor(e,r){if(r=BA(r),e instanceof lt){if(e.loose===!!r.loose&&e.includePrerelease===!!r.includePrerelease)return e;e=e.version}else if(typeof e!="string")throw new TypeError(`Invalid Version: ${e}`);if(e.length>gg)throw new TypeError(`version is longer than ${gg} characters`);uo("SemVer",e,r),this.options=r,this.loose=!!r.loose,this.includePrerelease=!!r.includePrerelease;let n=e.trim().match(r.loose?yg[vg.LOOSE]:yg[vg.FULL]);if(!n)throw new TypeError(`Invalid Version: ${e}`);if(this.raw=e,this.major=+n[1],this.minor=+n[2],this.patch=+n[3],this.major>co||this.major<0)throw new TypeError("Invalid major version");if(this.minor>co||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>co||this.patch<0)throw new TypeError("Invalid patch version");n[4]?this.prerelease=n[4].split(".").map(i=>{if(/^[0-9]+$/.test(i)){let s=+i;if(s>=0&&s=0;)typeof this.prerelease[n]=="number"&&(this.prerelease[n]++,n=-2);n===-1&&this.prerelease.push(0)}r&&(this.prerelease[0]===r?isNaN(this.prerelease[1])&&(this.prerelease=[r,0]):this.prerelease=[r,0]);break;default:throw new Error(`invalid increment argument: ${e}`)}return this.format(),this.raw=this.version,this}};mg.exports=lt});var zr=d((uk,bg)=>{var{MAX_LENGTH:UA}=Fi(),{re:Eg,t:wg}=Gr(),Sg=Pe(),GA=ji(),zA=(t,e)=>{if(e=GA(e),t instanceof Sg)return t;if(typeof t!="string"||t.length>UA||!(e.loose?Eg[wg.LOOSE]:Eg[wg.FULL]).test(t))return null;try{return new Sg(t,e)}catch(n){return null}};bg.exports=zA});var Rg=d((ck,Og)=>{var HA=zr(),WA=(t,e)=>{let r=HA(t,e);return r?r.version:null};Og.exports=WA});var _g=d((lk,Cg)=>{var VA=zr(),YA=(t,e)=>{let r=VA(t.trim().replace(/^[=v]+/,""),e);return r?r.version:null};Cg.exports=YA});var Tg=d((fk,Ag)=>{var XA=Pe(),KA=(t,e,r,n)=>{typeof r=="string"&&(n=r,r=void 0);try{return new XA(t,r).inc(e,n).version}catch(i){return null}};Ag.exports=KA});var ft=d((hk,Lg)=>{var xg=Pe(),ZA=(t,e,r)=>new xg(t,r).compare(new xg(e,r));Lg.exports=ZA});var lo=d((pk,Ng)=>{var JA=ft(),QA=(t,e,r)=>JA(t,e,r)===0;Ng.exports=QA});var Dg=d((dk,Ig)=>{var Pg=zr(),eT=lo(),tT=(t,e)=>{if(eT(t,e))return null;{let r=Pg(t),n=Pg(e),i=r.prerelease.length||n.prerelease.length,s=i?"pre":"",o=i?"prerelease":"";for(let a in r)if((a==="major"||a==="minor"||a==="patch")&&r[a]!==n[a])return s+a;return o}};Ig.exports=tT});var kg=d((mk,Fg)=>{var rT=Pe(),nT=(t,e)=>new rT(t,e).major;Fg.exports=nT});var qg=d((gk,jg)=>{var iT=Pe(),sT=(t,e)=>new iT(t,e).minor;jg.exports=sT});var Mg=d((yk,$g)=>{var oT=Pe(),aT=(t,e)=>new oT(t,e).patch;$g.exports=aT});var Ug=d((vk,Bg)=>{var uT=zr(),cT=(t,e)=>{let r=uT(t,e);return r&&r.prerelease.length?r.prerelease:null};Bg.exports=cT});var zg=d((bk,Gg)=>{var lT=ft(),fT=(t,e,r)=>lT(e,t,r);Gg.exports=fT});var Wg=d((Ek,Hg)=>{var hT=ft(),pT=(t,e)=>hT(t,e,!0);Hg.exports=pT});var fo=d((wk,Vg)=>{var Yg=Pe(),dT=(t,e,r)=>{let n=new Yg(t,r),i=new Yg(e,r);return n.compare(i)||n.compareBuild(i)};Vg.exports=dT});var Kg=d((Sk,Xg)=>{var mT=fo(),gT=(t,e)=>t.sort((r,n)=>mT(r,n,e));Xg.exports=gT});var Jg=d((Ok,Zg)=>{var yT=fo(),vT=(t,e)=>t.sort((r,n)=>yT(n,r,e));Zg.exports=vT});var $i=d((Rk,Qg)=>{var bT=ft(),ET=(t,e,r)=>bT(t,e,r)>0;Qg.exports=ET});var ho=d((Ck,ey)=>{var wT=ft(),ST=(t,e,r)=>wT(t,e,r)<0;ey.exports=ST});var uc=d((_k,ty)=>{var OT=ft(),RT=(t,e,r)=>OT(t,e,r)!==0;ty.exports=RT});var po=d((Ak,ry)=>{var CT=ft(),_T=(t,e,r)=>CT(t,e,r)>=0;ry.exports=_T});var mo=d((Tk,ny)=>{var AT=ft(),TT=(t,e,r)=>AT(t,e,r)<=0;ny.exports=TT});var cc=d((Lk,iy)=>{var LT=lo(),xT=uc(),NT=$i(),IT=po(),PT=ho(),DT=mo(),FT=(t,e,r,n)=>{switch(e){case"===":return typeof t=="object"&&(t=t.version),typeof r=="object"&&(r=r.version),t===r;case"!==":return typeof t=="object"&&(t=t.version),typeof r=="object"&&(r=r.version),t!==r;case"":case"=":case"==":return LT(t,r,n);case"!=":return xT(t,r,n);case">":return NT(t,r,n);case">=":return IT(t,r,n);case"<":return PT(t,r,n);case"<=":return DT(t,r,n);default:throw new TypeError(`Invalid operator: ${e}`)}};iy.exports=FT});var oy=d((xk,sy)=>{var kT=Pe(),jT=zr(),{re:go,t:yo}=Gr(),qT=(t,e)=>{if(t instanceof kT)return t;if(typeof t=="number"&&(t=String(t)),typeof t!="string")return null;e=e||{};let r=null;if(!e.rtl)r=t.match(go[yo.COERCE]);else{let n;for(;(n=go[yo.COERCERTL].exec(t))&&(!r||r.index+r[0].length!==t.length);)(!r||n.index+n[0].length!==r.index+r[0].length)&&(r=n),go[yo.COERCERTL].lastIndex=n.index+n[1].length+n[2].length;go[yo.COERCERTL].lastIndex=-1}return r===null?null:jT(`${r[2]}.${r[3]||"0"}.${r[4]||"0"}`,e)};sy.exports=qT});var uy=d((Nk,ay)=>{"use strict";ay.exports=function(t){t.prototype[Symbol.iterator]=function*(){for(let e=this.head;e;e=e.next)yield e.value}}});var Mi=d((Ik,cy)=>{"use strict";cy.exports=Y;Y.Node=Hr;Y.create=Y;function Y(t){var e=this;if(e instanceof Y||(e=new Y),e.tail=null,e.head=null,e.length=0,t&&typeof t.forEach=="function")t.forEach(function(i){e.push(i)});else if(arguments.length>0)for(var r=0,n=arguments.length;r1)r=e;else if(this.head)n=this.head.next,r=this.head.value;else throw new TypeError("Reduce of empty list with no initial value");for(var i=0;n!==null;i++)r=t(r,n.value,i),n=n.next;return r};Y.prototype.reduceReverse=function(t,e){var r,n=this.tail;if(arguments.length>1)r=e;else if(this.tail)n=this.tail.prev,r=this.tail.value;else throw new TypeError("Reduce of empty list with no initial value");for(var i=this.length-1;n!==null;i--)r=t(r,n.value,i),n=n.prev;return r};Y.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};Y.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};Y.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 Y;if(ethis.length&&(e=this.length);for(var n=0,i=this.head;i!==null&&nthis.length&&(e=this.length);for(var n=this.length,i=this.tail;i!==null&&n>e;n--)i=i.prev;for(;i!==null&&n>t;n--,i=i.prev)r.push(i.value);return r};Y.prototype.splice=function(t,e,...r){t>this.length&&(t=this.length-1),t<0&&(t=this.length+t);for(var n=0,i=this.head;i!==null&&n{"use strict";var UT=Mi(),Wr=Symbol("max"),zt=Symbol("length"),xn=Symbol("lengthCalculator"),Bi=Symbol("allowStale"),Vr=Symbol("maxAge"),Ht=Symbol("dispose"),fy=Symbol("noDisposeOnSet"),Se=Symbol("lruList"),Ct=Symbol("cache"),hy=Symbol("updateAgeOnGet"),lc=()=>1,py=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[Wr]=e.max||Infinity,n=e.length||lc;if(this[xn]=typeof n!="function"?lc:n,this[Bi]=e.stale||!1,e.maxAge&&typeof e.maxAge!="number")throw new TypeError("maxAge must be a number");this[Vr]=e.maxAge||0,this[Ht]=e.dispose,this[fy]=e.noDisposeOnSet||!1,this[hy]=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[Wr]=e||Infinity,Ui(this)}get max(){return this[Wr]}set allowStale(e){this[Bi]=!!e}get allowStale(){return this[Bi]}set maxAge(e){if(typeof e!="number")throw new TypeError("maxAge must be a non-negative number");this[Vr]=e,Ui(this)}get maxAge(){return this[Vr]}set lengthCalculator(e){typeof e!="function"&&(e=lc),e!==this[xn]&&(this[xn]=e,this[zt]=0,this[Se].forEach(r=>{r.length=this[xn](r.value,r.key),this[zt]+=r.length})),Ui(this)}get lengthCalculator(){return this[xn]}get length(){return this[zt]}get itemCount(){return this[Se].length}rforEach(e,r){r=r||this;for(let n=this[Se].tail;n!==null;){let i=n.prev;my(this,e,n,r),n=i}}forEach(e,r){r=r||this;for(let n=this[Se].head;n!==null;){let i=n.next;my(this,e,n,r),n=i}}keys(){return this[Se].toArray().map(e=>e.key)}values(){return this[Se].toArray().map(e=>e.value)}reset(){this[Ht]&&this[Se]&&this[Se].length&&this[Se].forEach(e=>this[Ht](e.key,e.value)),this[Ct]=new Map,this[Se]=new UT,this[zt]=0}dump(){return this[Se].map(e=>vo(this,e)?!1:{k:e.key,v:e.value,e:e.now+(e.maxAge||0)}).toArray().filter(e=>e)}dumpLru(){return this[Se]}set(e,r,n){if(n=n||this[Vr],n&&typeof n!="number")throw new TypeError("maxAge must be a number");let i=n?Date.now():0,s=this[xn](r,e);if(this[Ct].has(e)){if(s>this[Wr])return Nn(this,this[Ct].get(e)),!1;let u=this[Ct].get(e).value;return this[Ht]&&(this[fy]||this[Ht](e,u.value)),u.now=i,u.maxAge=n,u.value=r,this[zt]+=s-u.length,u.length=s,this.get(e),Ui(this),!0}let o=new dy(e,r,s,i,n);return o.length>this[Wr]?(this[Ht]&&this[Ht](e,r),!1):(this[zt]+=o.length,this[Se].unshift(o),this[Ct].set(e,this[Se].head),Ui(this),!0)}has(e){if(!this[Ct].has(e))return!1;let r=this[Ct].get(e).value;return!vo(this,r)}get(e){return fc(this,e,!0)}peek(e){return fc(this,e,!1)}pop(){let e=this[Se].tail;return e?(Nn(this,e),e.value):null}del(e){Nn(this,this[Ct].get(e))}load(e){this.reset();let r=Date.now();for(let n=e.length-1;n>=0;n--){let i=e[n],s=i.e||0;if(s===0)this.set(i.k,i.v);else{let o=s-r;o>0&&this.set(i.k,i.v,o)}}}prune(){this[Ct].forEach((e,r)=>fc(this,r,!1))}},fc=(t,e,r)=>{let n=t[Ct].get(e);if(n){let i=n.value;if(vo(t,i)){if(Nn(t,n),!t[Bi])return}else r&&(t[hy]&&(n.value.now=Date.now()),t[Se].unshiftNode(n));return i.value}},vo=(t,e)=>{if(!e||!e.maxAge&&!t[Vr])return!1;let r=Date.now()-e.now;return e.maxAge?r>e.maxAge:t[Vr]&&r>t[Vr]},Ui=t=>{if(t[zt]>t[Wr])for(let e=t[Se].tail;t[zt]>t[Wr]&&e!==null;){let r=e.prev;Nn(t,e),e=r}},Nn=(t,e)=>{if(e){let r=e.value;t[Ht]&&t[Ht](r.key,r.value),t[zt]-=r.length,t[Ct].delete(r.key),t[Se].removeNode(e)}},dy=class{constructor(e,r,n,i,s){this.key=e,this.value=r,this.length=n,this.now=i,this.maxAge=s||0}},my=(t,e,r,n)=>{let i=r.value;vo(t,i)&&(Nn(t,r),t[Bi]||(i=void 0)),i&&e.call(n,i.value,i.key,t)};ly.exports=py});var ht=d((Dk,gy)=>{var In=class{constructor(e,r){if(r=GT(r),e instanceof In)return e.loose===!!r.loose&&e.includePrerelease===!!r.includePrerelease?e:new In(e.raw,r);if(e instanceof pc)return this.raw=e.value,this.set=[[e]],this.format(),this;if(this.options=r,this.loose=!!r.loose,this.includePrerelease=!!r.includePrerelease,this.raw=e,this.set=e.split(/\s*\|\|\s*/).map(n=>this.parseRange(n.trim())).filter(n=>n.length),!this.set.length)throw new TypeError(`Invalid SemVer Range: ${e}`);if(this.set.length>1){let n=this.set[0];if(this.set=this.set.filter(i=>!vy(i[0])),this.set.length===0)this.set=[n];else if(this.set.length>1){for(let i of this.set)if(i.length===1&&YT(i[0])){this.set=[i];break}}}this.format()}format(){return this.range=this.set.map(e=>e.join(" ").trim()).join("||").trim(),this.range}toString(){return this.range}parseRange(e){e=e.trim();let n=`parseRange:${Object.keys(this.options).join(",")}:${e}`,i=yy.get(n);if(i)return i;let s=this.options.loose,o=s?De[xe.HYPHENRANGELOOSE]:De[xe.HYPHENRANGE];e=e.replace(o,ZT(this.options.includePrerelease)),pe("hyphen replace",e),e=e.replace(De[xe.COMPARATORTRIM],HT),pe("comparator trim",e,De[xe.COMPARATORTRIM]),e=e.replace(De[xe.TILDETRIM],WT),e=e.replace(De[xe.CARETTRIM],VT),e=e.split(/\s+/).join(" ");let a=s?De[xe.COMPARATORLOOSE]:De[xe.COMPARATOR],u=e.split(" ").map(p=>XT(p,this.options)).join(" ").split(/\s+/).map(p=>KT(p,this.options)).filter(this.options.loose?p=>!!p.match(a):()=>!0).map(p=>new pc(p,this.options)),c=u.length,l=new Map;for(let p of u){if(vy(p))return[p];l.set(p.value,p)}l.size>1&&l.has("")&&l.delete("");let f=[...l.values()];return yy.set(n,f),f}intersects(e,r){if(!(e instanceof In))throw new TypeError("a Range is required");return this.set.some(n=>by(n,r)&&e.set.some(i=>by(i,r)&&n.every(s=>i.every(o=>s.intersects(o,r)))))}test(e){if(!e)return!1;if(typeof e=="string")try{e=new zT(e,this.options)}catch(r){return!1}for(let r=0;rt.value==="<0.0.0-0",YT=t=>t.value==="",by=(t,e)=>{let r=!0,n=t.slice(),i=n.pop();for(;r&&n.length;)r=n.every(s=>i.intersects(s,e)),i=n.pop();return r},XT=(t,e)=>(pe("comp",t,e),t=tL(t,e),pe("caret",t),t=eL(t,e),pe("tildes",t),t=rL(t,e),pe("xrange",t),t=nL(t,e),pe("stars",t),t),Ue=t=>!t||t.toLowerCase()==="x"||t==="*",eL=(t,e)=>t.trim().split(/\s+/).map(r=>iL(r,e)).join(" "),iL=(t,e)=>{let r=e.loose?De[xe.TILDELOOSE]:De[xe.TILDE];return t.replace(r,(n,i,s,o,a)=>{pe("tilde",t,n,i,s,o,a);let u;return Ue(i)?u="":Ue(s)?u=`>=${i}.0.0 <${+i+1}.0.0-0`:Ue(o)?u=`>=${i}.${s}.0 <${i}.${+s+1}.0-0`:a?(pe("replaceTilde pr",a),u=`>=${i}.${s}.${o}-${a} <${i}.${+s+1}.0-0`):u=`>=${i}.${s}.${o} <${i}.${+s+1}.0-0`,pe("tilde return",u),u})},tL=(t,e)=>t.trim().split(/\s+/).map(r=>sL(r,e)).join(" "),sL=(t,e)=>{pe("caret",t,e);let r=e.loose?De[xe.CARETLOOSE]:De[xe.CARET],n=e.includePrerelease?"-0":"";return t.replace(r,(i,s,o,a,u)=>{pe("caret",t,i,s,o,a,u);let c;return Ue(s)?c="":Ue(o)?c=`>=${s}.0.0${n} <${+s+1}.0.0-0`:Ue(a)?s==="0"?c=`>=${s}.${o}.0${n} <${s}.${+o+1}.0-0`:c=`>=${s}.${o}.0${n} <${+s+1}.0.0-0`:u?(pe("replaceCaret pr",u),s==="0"?o==="0"?c=`>=${s}.${o}.${a}-${u} <${s}.${o}.${+a+1}-0`:c=`>=${s}.${o}.${a}-${u} <${s}.${+o+1}.0-0`:c=`>=${s}.${o}.${a}-${u} <${+s+1}.0.0-0`):(pe("no pr"),s==="0"?o==="0"?c=`>=${s}.${o}.${a}${n} <${s}.${o}.${+a+1}-0`:c=`>=${s}.${o}.${a}${n} <${s}.${+o+1}.0-0`:c=`>=${s}.${o}.${a} <${+s+1}.0.0-0`),pe("caret return",c),c})},rL=(t,e)=>(pe("replaceXRanges",t,e),t.split(/\s+/).map(r=>oL(r,e)).join(" ")),oL=(t,e)=>{t=t.trim();let r=e.loose?De[xe.XRANGELOOSE]:De[xe.XRANGE];return t.replace(r,(n,i,s,o,a,u)=>{pe("xRange",t,n,i,s,o,a,u);let c=Ue(s),l=c||Ue(o),f=l||Ue(a),p=f;return i==="="&&p&&(i=""),u=e.includePrerelease?"-0":"",c?i===">"||i==="<"?n="<0.0.0-0":n="*":i&&p?(l&&(o=0),a=0,i===">"?(i=">=",l?(s=+s+1,o=0,a=0):(o=+o+1,a=0)):i==="<="&&(i="<",l?s=+s+1:o=+o+1),i==="<"&&(u="-0"),n=`${i+s}.${o}.${a}${u}`):l?n=`>=${s}.0.0${u} <${+s+1}.0.0-0`:f&&(n=`>=${s}.${o}.0${u} <${s}.${+o+1}.0-0`),pe("xRange return",n),n})},nL=(t,e)=>(pe("replaceStars",t,e),t.trim().replace(De[xe.STAR],"")),KT=(t,e)=>(pe("replaceGTE0",t,e),t.trim().replace(De[e.includePrerelease?xe.GTE0PRE:xe.GTE0],"")),ZT=t=>(e,r,n,i,s,o,a,u,c,l,f,p,y)=>(Ue(n)?r="":Ue(i)?r=`>=${n}.0.0${t?"-0":""}`:Ue(s)?r=`>=${n}.${i}.0${t?"-0":""}`:o?r=`>=${r}`:r=`>=${r}${t?"-0":""}`,Ue(c)?u="":Ue(l)?u=`<${+c+1}.0.0-0`:Ue(f)?u=`<${c}.${+l+1}.0-0`:p?u=`<=${c}.${l}.${f}-${p}`:t?u=`<${c}.${l}.${+f+1}-0`:u=`<=${u}`,`${r} ${u}`.trim()),JT=(t,e,r)=>{for(let n=0;n0){let i=t[n].semver;if(i.major===e.major&&i.minor===e.minor&&i.patch===e.patch)return!0}return!1}return!0}});var Gi=d((Fk,Ey)=>{var zi=Symbol("SemVer ANY"),Hi=class{static get ANY(){return zi}constructor(e,r){if(r=aL(r),e instanceof Hi){if(e.loose===!!r.loose)return e;e=e.value}mc("comparator",e,r),this.options=r,this.loose=!!r.loose,this.parse(e),this.semver===zi?this.value="":this.value=this.operator+this.semver.version,mc("comp",this)}parse(e){let r=this.options.loose?wy[Sy.COMPARATORLOOSE]:wy[Sy.COMPARATOR],n=e.match(r);if(!n)throw new TypeError(`Invalid comparator: ${e}`);this.operator=n[1]!==void 0?n[1]:"",this.operator==="="&&(this.operator=""),n[2]?this.semver=new Oy(n[2],this.options.loose):this.semver=zi}toString(){return this.value}test(e){if(mc("Comparator.test",e,this.options.loose),this.semver===zi||e===zi)return!0;if(typeof e=="string")try{e=new Oy(e,this.options)}catch(r){return!1}return dc(e,this.operator,this.semver,this.options)}intersects(e,r){if(!(e instanceof Hi))throw new TypeError("a Comparator is required");if((!r||typeof r!="object")&&(r={loose:!!r,includePrerelease:!1}),this.operator==="")return this.value===""?!0:new Ry(e.value,r).test(this.value);if(e.operator==="")return e.value===""?!0:new Ry(this.value,r).test(e.semver);let n=(this.operator===">="||this.operator===">")&&(e.operator===">="||e.operator===">"),i=(this.operator==="<="||this.operator==="<")&&(e.operator==="<="||e.operator==="<"),s=this.semver.version===e.semver.version,o=(this.operator===">="||this.operator==="<=")&&(e.operator===">="||e.operator==="<="),a=dc(this.semver,"<",e.semver,r)&&(this.operator===">="||this.operator===">")&&(e.operator==="<="||e.operator==="<"),u=dc(this.semver,">",e.semver,r)&&(this.operator==="<="||this.operator==="<")&&(e.operator===">="||e.operator===">");return n||i||s&&o||a||u}};Ey.exports=Hi;var aL=ji(),{re:wy,t:Sy}=Gr(),dc=cc(),mc=ki(),Oy=Pe(),Ry=ht()});var Wi=d((kk,Cy)=>{var uL=ht(),cL=(t,e,r)=>{try{e=new uL(e,r)}catch(n){return!1}return e.test(t)};Cy.exports=cL});var Ay=d((jk,_y)=>{var lL=ht(),fL=(t,e)=>new lL(t,e).set.map(r=>r.map(n=>n.value).join(" ").trim().split(" "));_y.exports=fL});var Ly=d((qk,Ty)=>{var hL=Pe(),pL=ht(),dL=(t,e,r)=>{let n=null,i=null,s=null;try{s=new pL(e,r)}catch(o){return null}return t.forEach(o=>{s.test(o)&&(!n||i.compare(o)===-1)&&(n=o,i=new hL(n,r))}),n};Ty.exports=dL});var Ny=d(($k,xy)=>{var mL=Pe(),gL=ht(),yL=(t,e,r)=>{let n=null,i=null,s=null;try{s=new gL(e,r)}catch(o){return null}return t.forEach(o=>{s.test(o)&&(!n||i.compare(o)===1)&&(n=o,i=new mL(n,r))}),n};xy.exports=yL});var Dy=d((Mk,Iy)=>{var gc=Pe(),vL=ht(),Py=$i(),bL=(t,e)=>{t=new vL(t,e);let r=new gc("0.0.0");if(t.test(r)||(r=new gc("0.0.0-0"),t.test(r)))return r;r=null;for(let n=0;n{let a=new gc(o.semver.version);switch(o.operator){case">":a.prerelease.length===0?a.patch++:a.prerelease.push(0),a.raw=a.format();case"":case">=":(!s||Py(a,s))&&(s=a);break;case"<":case"<=":break;default:throw new Error(`Unexpected operation: ${o.operator}`)}}),s&&(!r||Py(r,s))&&(r=s)}return r&&t.test(r)?r:null};Iy.exports=bL});var ky=d((Bk,Fy)=>{var EL=ht(),wL=(t,e)=>{try{return new EL(t,e).range||"*"}catch(r){return null}};Fy.exports=wL});var bo=d((Uk,jy)=>{var SL=Pe(),qy=Gi(),{ANY:OL}=qy,RL=ht(),CL=Wi(),$y=$i(),My=ho(),_L=mo(),AL=po(),TL=(t,e,r,n)=>{t=new SL(t,n),e=new RL(e,n);let i,s,o,a,u;switch(r){case">":i=$y,s=_L,o=My,a=">",u=">=";break;case"<":i=My,s=AL,o=$y,a="<",u="<=";break;default:throw new TypeError('Must provide a hilo val of "<" or ">"')}if(CL(t,e,n))return!1;for(let c=0;c{y.semver===OL&&(y=new qy(">=0.0.0")),f=f||y,p=p||y,i(y.semver,f.semver,n)?f=y:o(y.semver,p.semver,n)&&(p=y)}),f.operator===a||f.operator===u||(!p.operator||p.operator===a)&&s(t,p.semver))return!1;if(p.operator===u&&o(t,p.semver))return!1}return!0};jy.exports=TL});var Uy=d((Gk,By)=>{var LL=bo(),xL=(t,e,r)=>LL(t,e,">",r);By.exports=xL});var zy=d((zk,Gy)=>{var NL=bo(),IL=(t,e,r)=>NL(t,e,"<",r);Gy.exports=IL});var Vy=d((Hk,Hy)=>{var Wy=ht(),PL=(t,e,r)=>(t=new Wy(t,r),e=new Wy(e,r),t.intersects(e));Hy.exports=PL});var Xy=d((Wk,Yy)=>{var DL=Wi(),FL=ft();Yy.exports=(t,e,r)=>{let n=[],i=null,s=null,o=t.sort((l,f)=>FL(l,f,r));for(let l of o)DL(l,e,r)?(s=l,i||(i=l)):(s&&n.push([i,s]),s=null,i=null);i&&n.push([i,null]);let a=[];for(let[l,f]of n)l===f?a.push(l):!f&&l===o[0]?a.push("*"):f?l===o[0]?a.push(`<=${f}`):a.push(`${l} - ${f}`):a.push(`>=${l}`);let u=a.join(" || "),c=typeof e.raw=="string"?e.raw:String(e);return u.length{var Zy=ht(),{ANY:Jy}=Gi(),Vi=Wi(),yc=ft(),jL=(t,e,r)=>{if(t===e)return!0;t=new Zy(t,r),e=new Zy(e,r);let n=!1;e:for(let i of t.set){for(let s of e.set){let o=kL(i,s,r);if(n=n||o!==null,o)continue e}if(n)return!1}return!0},kL=(t,e,r)=>{if(t===e)return!0;if(t.length===1&&t[0].semver===Jy)return e.length===1&&e[0].semver===Jy;let n=new Set,i,s;for(let f of t)f.operator===">"||f.operator===">="?i=Qy(i,f,r):f.operator==="<"||f.operator==="<="?s=ev(s,f,r):n.add(f.semver);if(n.size>1)return null;let o;if(i&&s){if(o=yc(i.semver,s.semver,r),o>0)return null;if(o===0&&(i.operator!==">="||s.operator!=="<="))return null}for(let f of n){if(i&&!Vi(f,String(i),r)||s&&!Vi(f,String(s),r))return null;for(let p of e)if(!Vi(f,String(p),r))return!1;return!0}let a,u,c,l;for(let f of e){if(l=l||f.operator===">"||f.operator===">=",c=c||f.operator==="<"||f.operator==="<=",i){if(f.operator===">"||f.operator===">="){if(a=Qy(i,f,r),a===f&&a!==i)return!1}else if(i.operator===">="&&!Vi(i.semver,String(f),r))return!1}if(s){if(f.operator==="<"||f.operator==="<="){if(u=ev(s,f,r),u===f&&u!==s)return!1}else if(s.operator==="<="&&!Vi(s.semver,String(f),r))return!1}if(!f.operator&&(s||i)&&o!==0)return!1}return!(i&&c&&!s&&o!==0||s&&l&&!i&&o!==0)},Qy=(t,e,r)=>{if(!t)return e;let n=yc(t.semver,e.semver,r);return n>0?t:n<0||e.operator===">"&&t.operator===">="?e:t},ev=(t,e,r)=>{if(!t)return e;let n=yc(t.semver,e.semver,r);return n<0?t:n>0||e.operator==="<"&&t.operator==="<="?e:t};Ky.exports=jL});var nv=d((Yk,rv)=>{var vc=Gr();rv.exports={re:vc.re,src:vc.src,tokens:vc.t,SEMVER_SPEC_VERSION:Fi().SEMVER_SPEC_VERSION,SemVer:Pe(),compareIdentifiers:ao().compareIdentifiers,rcompareIdentifiers:ao().rcompareIdentifiers,parse:zr(),valid:Rg(),clean:_g(),inc:Tg(),diff:Dg(),major:kg(),minor:qg(),patch:Mg(),prerelease:Ug(),compare:ft(),rcompare:zg(),compareLoose:Wg(),compareBuild:fo(),sort:Kg(),rsort:Jg(),gt:$i(),lt:ho(),eq:lo(),neq:uc(),gte:po(),lte:mo(),cmp:cc(),coerce:oy(),Comparator:Gi(),Range:ht(),satisfies:Wi(),toComparators:Ay(),maxSatisfying:Ly(),minSatisfying:Ny(),minVersion:Dy(),validRange:ky(),outside:bo(),gtr:Uy(),ltr:zy(),intersects:Vy(),simplifyRange:Xy(),subset:tv()}});var bc=d((Xk,iv)=>{"use strict";var Yi=iv.exports={github:{protocols:["git","http","git+ssh","git+https","ssh","https"],domain:"github.com",treepath:"tree",filetemplate:"https://{auth@}raw.githubusercontent.com/{user}/{project}/{committish}/{path}",bugstemplate:"https://{domain}/{user}/{project}/issues",gittemplate:"git://{auth@}{domain}/{user}/{project}.git{#committish}",tarballtemplate:"https://codeload.{domain}/{user}/{project}/tar.gz/{committish}"},bitbucket:{protocols:["git+ssh","git+https","ssh","https"],domain:"bitbucket.org",treepath:"src",tarballtemplate:"https://{domain}/{user}/{project}/get/{committish}.tar.gz"},gitlab:{protocols:["git+ssh","git+https","ssh","https"],domain:"gitlab.com",treepath:"tree",bugstemplate:"https://{domain}/{user}/{project}/issues",httpstemplate:"git+https://{auth@}{domain}/{user}/{projectPath}.git{#committish}",tarballtemplate:"https://{domain}/{user}/{project}/repository/archive.tar.gz?ref={committish}",pathmatch:/^\/([^/]+)\/((?!.*(\/-\/|\/repository(\/[^/]+)?\/archive\.tar\.gz)).*?)(?:\.git|\/)?$/},gist:{protocols:["git","git+ssh","git+https","ssh","https"],domain:"gist.github.com",pathmatch:/^[/](?:([^/]+)[/])?([a-z0-9]{7,})(?:[.]git)?$/,filetemplate:"https://gist.githubusercontent.com/{user}/{project}/raw{/committish}/{path}",bugstemplate:"https://{domain}/{project}",gittemplate:"git://{domain}/{project}.git{#committish}",sshtemplate:"git@{domain}:/{project}.git{#committish}",sshurltemplate:"git+ssh://git@{domain}/{project}.git{#committish}",browsetemplate:"https://{domain}/{project}{/committish}",browsefiletemplate:"https://{domain}/{project}{/committish}{#path}",docstemplate:"https://{domain}/{project}{/committish}",httpstemplate:"git+https://{domain}/{project}.git{#committish}",shortcuttemplate:"{type}:{project}{#committish}",pathtemplate:"{project}{#committish}",tarballtemplate:"https://codeload.github.com/gist/{project}/tar.gz/{committish}",hashformat:function(t){return"file-"+sv(t)}}},ov={sshtemplate:"git@{domain}:{user}/{project}.git{#committish}",sshurltemplate:"git+ssh://git@{domain}/{user}/{project}.git{#committish}",browsetemplate:"https://{domain}/{user}/{project}{/tree/committish}",browsefiletemplate:"https://{domain}/{user}/{project}/{treepath}/{committish}/{path}{#fragment}",docstemplate:"https://{domain}/{user}/{project}{/tree/committish}#readme",httpstemplate:"git+https://{auth@}{domain}/{user}/{project}.git{#committish}",filetemplate:"https://{domain}/{user}/{project}/raw/{committish}/{path}",shortcuttemplate:"{type}:{user}/{project}{#committish}",pathtemplate:"{user}/{project}{#committish}",pathmatch:/^[/]([^/]+)[/]([^/]+?)(?:[.]git|[/])?$/,hashformat:sv};Object.keys(Yi).forEach(function(t){Object.keys(ov).forEach(function(e){Yi[t][e]||(Yi[t][e]=ov[e])}),Yi[t].protocols_re=RegExp("^("+Yi[t].protocols.map(function(e){return e.replace(/([\\+*{}()[\]$^|])/g,"\\$1")}).join("|")+"):$")});function sv(t){return t.toLowerCase().replace(/^\W+|\/|\W+$/g,"").replace(/\W+/g,"-")}});var cv=d((Kk,av)=>{"use strict";var uv=bc(),Pn=Object.assign||function(e,r){if(r===null||typeof r!="object")return e;let n=Object.keys(r),i=n.length;for(;i--;)e[n[i]]=r[n[i]];return e};av.exports=Fe;function Fe(t,e,r,n,i,s,o){var a=this;a.type=t,Object.keys(uv[t]).forEach(function(u){a[u]=uv[t][u]}),a.user=e,a.auth=r,a.project=n,a.committish=i,a.default=s,a.opts=o||{}}Fe.prototype.hash=function(){return this.committish?"#"+this.committish:""};Fe.prototype._fill=function(t,e){if(!!t){var r=Pn({},e);r.path=r.path?r.path.replace(/^[/]+/g,""):"",e=Pn(Pn({},this.opts),e);var n=this;Object.keys(this).forEach(function(l){n[l]!=null&&r[l]==null&&(r[l]=n[l])});var i=r.auth,s=r.committish,o=r.fragment,a=r.path,u=r.project;Object.keys(r).forEach(function(l){var f=r[l];(l==="path"||l==="project")&&typeof f=="string"?r[l]=f.split("/").map(function(p){return encodeURIComponent(p)}).join("/"):l!=="domain"&&(r[l]=encodeURIComponent(f))}),r["auth@"]=i?i+"@":"",r["#fragment"]=o?"#"+this.hashformat(o):"",r.fragment=r.fragment?r.fragment:"",r["#path"]=a?"#"+this.hashformat(a):"",r["/path"]=r.path?"/"+r.path:"",r.projectPath=u.split("/").map(encodeURIComponent).join("/"),e.noCommittish?(r["#committish"]="",r["/tree/committish"]="",r["/committish"]="",r.committish=""):(r["#committish"]=s?"#"+s:"",r["/tree/committish"]=r.committish?"/"+r.treepath+"/"+r.committish:"",r["/committish"]=r.committish?"/"+r.committish:"",r.committish=r.committish||"master");var c=t;return Object.keys(r).forEach(function(l){c=c.replace(new RegExp("[{]"+l+"[}]","g"),r[l])}),e.noGitPlus?c.replace(/^git[+]/,""):c}};Fe.prototype.ssh=function(t){return this._fill(this.sshtemplate,t)};Fe.prototype.sshurl=function(t){return this._fill(this.sshurltemplate,t)};Fe.prototype.browse=function(t,e,r){return typeof t=="string"?(typeof e!="string"&&(r=e,e=null),this._fill(this.browsefiletemplate,Pn({fragment:e,path:t},r))):this._fill(this.browsetemplate,t)};Fe.prototype.docs=function(t){return this._fill(this.docstemplate,t)};Fe.prototype.bugs=function(t){return this._fill(this.bugstemplate,t)};Fe.prototype.https=function(t){return this._fill(this.httpstemplate,t)};Fe.prototype.git=function(t){return this._fill(this.gittemplate,t)};Fe.prototype.shortcut=function(t){return this._fill(this.shortcuttemplate,t)};Fe.prototype.path=function(t){return this._fill(this.pathtemplate,t)};Fe.prototype.tarball=function(t){var e=Pn({},t,{noCommittish:!1});return this._fill(this.tarballtemplate,e)};Fe.prototype.file=function(t,e){return this._fill(this.filetemplate,Pn({path:t},e))};Fe.prototype.getDefaultRepresentation=function(){return this.default};Fe.prototype.toString=function(t){return this.default&&typeof this[this.default]=="function"?this[this.default](t):this.sshurl(t)}});var fv=d((Zk,Ec)=>{"use strict";var wc=require("url"),lv=bc(),qL=Ec.exports=cv(),$L=hc(),Sc=new $L({max:1e3}),ML={"git+ssh:":"sshurl","git+https:":"https","ssh:":"sshurl","git:":"git"};function BL(t){return ML[t]||t.slice(0,-1)}var UL={"git:":!0,"https:":!0,"git+https:":!0,"http:":!0,"git+http:":!0};Ec.exports.fromUrl=function(t,e){if(typeof t=="string"){var r=t+JSON.stringify(e||{});return Sc.has(r)||Sc.set(r,GL(t,e)),Sc.get(r)}};function GL(t,e){if(!(t==null||t==="")){var r=HL(zL(t)?"github:"+t:t),n=WL(r),i=r.match(/^([^:]+):(?:[^@]+@)?(?:([^/]*)\/)?([^#]+)/),s=Object.keys(lv).map(function(o){try{var a=lv[o],u=null;n.auth&&UL[n.protocol]&&(u=n.auth);var c=n.hash?decodeURIComponent(n.hash.substr(1)):null,l=null,f=null,p=null;if(i&&i[1]===o)l=i[2]&&decodeURIComponent(i[2]),f=decodeURIComponent(i[3].replace(/\.git$/,"")),p="shortcut";else{if(n.host&&n.host!==a.domain&&n.host.replace(/^www[.]/,"")!==a.domain||!a.protocols_re.test(n.protocol)||!n.path)return;var y=a.pathmatch,m=n.path.match(y);if(!m)return;m[1]!==null&&m[1]!==void 0&&(l=decodeURIComponent(m[1].replace(/^:/,""))),f=decodeURIComponent(m[2]),p=BL(n.protocol)}return new qL(o,l,u,f,c,p,e)}catch(h){if(!(h instanceof URIError))throw h}}).filter(function(o){return o});if(s.length===1)return s[0]}}function zL(t){return/^[^:@%/\s.-][^:@%/\s]*[/][^:@\s/%]+(?:#.*)?$/.test(t)}function HL(t){var e=wc.parse(t);return e.protocol==="gist:"&&e.host&&!e.path?e.protocol+"/"+e.host:t}function WL(t){var e=t.match(/^([^@]+)@([^:/]+):[/]?((?:[^/]+[/])?[^/]+?)(?:[.]git)?(#.*)?$/);if(!e){var r=wc.parse(t);if(r.auth){let i=t.match(/[^@]+@[^:/]+/);if(i){var n=new wc.URL(i[0]);r.auth=n.username||"",n.password&&(r.auth+=":"+n.password)}}return r}return{protocol:"git+ssh:",slashes:!0,auth:e[1],host:e[2],port:null,hostname:e[2],hash:e[4],search:null,query:null,pathname:"/"+e[3],path:"/"+e[3],href:"git+ssh://"+e[1]+"@"+e[2]+"/"+e[3]+(e[4]||"")}}});var pv=d((Jk,hv)=>{hv.exports=VL;function VL(t){if(!!t&&t!=="ERROR: No README data found!"){t=t.trim().split(` -`);for(var e=0;t[e]&&t[e].trim().match(/^(#|$)/);e++);for(var r=t.length,n=e+1;n{dv.exports={topLevel:{dependancies:"dependencies",dependecies:"dependencies",depdenencies:"dependencies",devEependencies:"devDependencies",depends:"dependencies","dev-dependencies":"devDependencies",devDependences:"devDependencies",devDepenencies:"devDependencies",devdependencies:"devDependencies",repostitory:"repository",repo:"repository",prefereGlobal:"preferGlobal",hompage:"homepage",hampage:"homepage",autohr:"author",autor:"author",contributers:"contributors",publicationConfig:"publishConfig",script:"scripts"},bugs:{web:"url",name:"url"},script:{server:"start",tests:"test"}}});var bv=d((tj,gv)=>{var yv=nv(),YL=Mu(),Eo=fv(),XL=Ju().isCore,KL=["dependencies","devDependencies","optionalDependencies"],ZL=pv(),Oc=require("url"),dr=mv(),ej=gv.exports={warn:function(){},fixRepositoryField:function(t){if(t.repositories&&(this.warn("repositories"),t.repository=t.repositories[0]),!t.repository)return this.warn("missingRepository");typeof t.repository=="string"&&(t.repository={type:"git",url:t.repository});var e=t.repository.url||"";if(e){var r=Eo.fromUrl(e);r&&(e=t.repository.url=r.getDefaultRepresentation()=="shortcut"?r.https():r.toString())}e.match(/github.com\/[^\/]+\/[^\/]+\.git\.git$/)&&this.warn("brokenGitUrl",e)},fixTypos:function(t){Object.keys(dr.topLevel).forEach(function(e){t.hasOwnProperty(e)&&this.warn("typo",e,dr.topLevel[e])},this)},fixScriptsField:function(t){if(!!t.scripts){if(typeof t.scripts!="object"){this.warn("nonObjectScripts"),delete t.scripts;return}Object.keys(t.scripts).forEach(function(e){typeof t.scripts[e]!="string"?(this.warn("nonStringScript"),delete t.scripts[e]):dr.script[e]&&!t.scripts[dr.script[e]]&&this.warn("typo",e,dr.script[e],"scripts")},this)}},fixFilesField:function(t){var e=t.files;e&&!Array.isArray(e)?(this.warn("nonArrayFiles"),delete t.files):t.files&&(t.files=t.files.filter(function(r){return!r||typeof r!="string"?(this.warn("invalidFilename",r),!1):!0},this))},fixBinField:function(t){if(!!t.bin&&typeof t.bin=="string"){var e={},r;(r=t.name.match(/^@[^/]+[/](.*)$/))?e[r[1]]=t.bin:e[t.name]=t.bin,t.bin=e}},fixManField:function(t){!t.man||typeof t.man=="string"&&(t.man=[t.man])},fixBundleDependenciesField:function(t){var e="bundledDependencies",r="bundleDependencies";t[e]&&!t[r]&&(t[r]=t[e],delete t[e]),t[r]&&!Array.isArray(t[r])?(this.warn("nonArrayBundleDependencies"),delete t[r]):t[r]&&(t[r]=t[r].filter(function(n){return!n||typeof n!="string"?(this.warn("nonStringBundleDependency",n),!1):(t.dependencies||(t.dependencies={}),t.dependencies.hasOwnProperty(n)||(this.warn("nonDependencyBundleDependency",n),t.dependencies[n]="*"),!0)},this))},fixDependencies:function(t,e){var r=!e;rx(t,this.warn),tx(t,this.warn),this.fixBundleDependenciesField(t),["dependencies","devDependencies"].forEach(function(n){if(n in t){if(!t[n]||typeof t[n]!="object"){this.warn("nonObjectDependencies",n),delete t[n];return}Object.keys(t[n]).forEach(function(i){var s=t[n][i];typeof s!="string"&&(this.warn("nonStringDependency",i,JSON.stringify(s)),delete t[n][i]);var o=Eo.fromUrl(t[n][i]);o&&(t[n][i]=o.toString())},this)}},this)},fixModulesField:function(t){t.modules&&(this.warn("deprecatedModules"),delete t.modules)},fixKeywordsField:function(t){typeof t.keywords=="string"&&(t.keywords=t.keywords.split(/,\s+/)),t.keywords&&!Array.isArray(t.keywords)?(delete t.keywords,this.warn("nonArrayKeywords")):t.keywords&&(t.keywords=t.keywords.filter(function(e){return typeof e!="string"||!e?(this.warn("nonStringKeyword"),!1):!0},this))},fixVersionField:function(t,e){var r=!e;if(!t.version)return t.version="",!0;if(!yv.valid(t.version,r))throw new Error('Invalid version: "'+t.version+'"');return t.version=yv.clean(t.version,r),!0},fixPeople:function(t){vv(t,QL),vv(t,ex)},fixNameField:function(t,e){typeof e=="boolean"?e={strict:e}:typeof e=="undefined"&&(e={});var r=e.strict;if(!t.name&&!r){t.name="";return}if(typeof t.name!="string")throw new Error("name field must be a string.");r||(t.name=t.name.trim()),JL(t.name,r,e.allowLegacyCase),XL(t.name)&&this.warn("conflictingName",t.name)},fixDescriptionField:function(t){t.description&&typeof t.description!="string"&&(this.warn("nonStringDescription"),delete t.description),t.readme&&!t.description&&(t.description=ZL(t.readme)),t.description===void 0&&delete t.description,t.description||this.warn("missingDescription")},fixReadmeField:function(t){t.readme||(this.warn("missingReadme"),t.readme="ERROR: No README data found!")},fixBugsField:function(t){if(!t.bugs&&t.repository&&t.repository.url){var e=Eo.fromUrl(t.repository.url);e&&e.bugs()&&(t.bugs={url:e.bugs()})}else if(t.bugs){var r=/^.+@.*\..+$/;if(typeof t.bugs=="string")r.test(t.bugs)?t.bugs={email:t.bugs}:Oc.parse(t.bugs).protocol?t.bugs={url:t.bugs}:this.warn("nonEmailUrlBugsString");else{nx(t.bugs,this.warn);var n=t.bugs;t.bugs={},n.url&&(typeof n.url=="string"&&Oc.parse(n.url).protocol?t.bugs.url=n.url:this.warn("nonUrlBugsUrlField")),n.email&&(typeof n.email=="string"&&r.test(n.email)?t.bugs.email=n.email:this.warn("nonEmailBugsEmailField"))}!t.bugs.email&&!t.bugs.url&&(delete t.bugs,this.warn("emptyNormalizedBugs"))}},fixHomepageField:function(t){if(!t.homepage&&t.repository&&t.repository.url){var e=Eo.fromUrl(t.repository.url);e&&e.docs()&&(t.homepage=e.docs())}if(!!t.homepage){if(typeof t.homepage!="string")return this.warn("nonUrlHomepage"),delete t.homepage;Oc.parse(t.homepage).protocol||(t.homepage="http://"+t.homepage)}},fixLicenseField:function(t){if(t.license)typeof t.license!="string"||t.license.length<1||t.license.trim()===""?this.warn("invalidLicense"):YL(t.license).validForNewPackages||this.warn("invalidLicense");else return this.warn("missingLicense")}};function ix(t){if(t.charAt(0)!=="@")return!1;var e=t.slice(1).split("/");return e.length!==2?!1:e[0]&&e[1]&&e[0]===encodeURIComponent(e[0])&&e[1]===encodeURIComponent(e[1])}function sx(t){return!t.match(/[\/@\s\+%:]/)&&t===encodeURIComponent(t)}function JL(t,e,r){if(t.charAt(0)==="."||!(ix(t)||sx(t))||e&&!r&&t!==t.toLowerCase()||t.toLowerCase()==="node_modules"||t.toLowerCase()==="favicon.ico")throw new Error("Invalid name: "+JSON.stringify(t))}function vv(t,e){return t.author&&(t.author=e(t.author)),["maintainers","contributors"].forEach(function(r){!Array.isArray(t[r])||(t[r]=t[r].map(e))}),t}function QL(t){if(typeof t=="string")return t;var e=t.name||"",r=t.url||t.web,n=r?" ("+r+")":"",i=t.email||t.mail,s=i?" <"+i+">":"";return e+s+n}function ex(t){if(typeof t!="string")return t;var e=t.match(/^([^\(<]+)/),r=t.match(/\(([^\)]+)\)/),n=t.match(/<([^>]+)>/),i={};return e&&e[0].trim()&&(i.name=e[0].trim()),n&&(i.email=n[1]),r&&(i.url=r[1]),i}function tx(t,e){var r=t.optionalDependencies;if(!!r){var n=t.dependencies||{};Object.keys(r).forEach(function(i){n[i]=r[i]}),t.dependencies=n}}function ox(t,e,r){if(!t)return{};if(typeof t=="string"&&(t=t.trim().split(/[\n\r\s\t ,]+/)),!Array.isArray(t))return t;r("deprecatedArrayDependencies",e);var n={};return t.filter(function(i){return typeof i=="string"}).forEach(function(i){i=i.trim().split(/(:?[@\s><=])/);var s=i.shift(),o=i.join("");o=o.trim(),o=o.replace(/^@/,""),n[s]=o}),n}function rx(t,e){KL.forEach(function(r){!t[r]||(t[r]=ox(t[r],r,e))})}function nx(t,e){!t||Object.keys(t).forEach(function(r){dr.bugs[r]&&(e("typo",r,dr.bugs[r],"bugs"),t[dr.bugs[r]]=t[r],delete t[r])})}});var wv=d((rj,Ev)=>{Ev.exports={repositories:"'repositories' (plural) Not supported. Please pick one as the 'repository' field",missingRepository:"No repository field.",brokenGitUrl:"Probably broken git url: %s",nonObjectScripts:"scripts must be an object",nonStringScript:"script values must be string commands",nonArrayFiles:"Invalid 'files' member",invalidFilename:"Invalid filename in 'files' list: %s",nonArrayBundleDependencies:"Invalid 'bundleDependencies' list. Must be array of package names",nonStringBundleDependency:"Invalid bundleDependencies member: %s",nonDependencyBundleDependency:"Non-dependency in bundleDependencies: %s",nonObjectDependencies:"%s field must be an object",nonStringDependency:"Invalid dependency: %s %s",deprecatedArrayDependencies:"specifying %s as array is deprecated",deprecatedModules:"modules field is deprecated",nonArrayKeywords:"keywords should be an array of strings",nonStringKeyword:"keywords should be an array of strings",conflictingName:"%s is also the name of a node core module.",nonStringDescription:"'description' field should be a string",missingDescription:"No description",missingReadme:"No README data",missingLicense:"No license field.",nonEmailUrlBugsString:"Bug string field must be url, email, or {email,url}",nonUrlBugsUrlField:"bugs.url field must be a string url. Deleted.",nonEmailBugsEmailField:"bugs.email field must be a string email. Deleted.",emptyNormalizedBugs:"Normalized value of bugs field is an empty object. Deleted.",nonUrlHomepage:"homepage field must be a string url. Deleted.",invalidLicense:"license should be a valid SPDX license expression",typo:"%s should probably be %s."}});var Rv=d((nj,Sv)=>{var Ov=require("util"),Rc=wv();Sv.exports=function(){var t=Array.prototype.slice.call(arguments,0),e=t.shift();if(e=="typo")return ax.apply(null,t);var r=Rc[e]?Rc[e]:e+": '%s'";return t.unshift(r),Ov.format.apply(null,t)};function ax(t,e,r){return r&&(t=r+"['"+t+"']",e=r+"['"+e+"']"),Ov.format(Rc.typo,t,e)}});var Tv=d((ij,Cv)=>{Cv.exports=_v;var Cc=bv();_v.fixer=Cc;var ux=Rv(),cx=["name","version","description","repository","modules","scripts","files","bin","man","bugs","keywords","readme","homepage","license"],lx=["dependencies","people","typos"],_c=cx.map(function(t){return Av(t)+"Field"});_c=_c.concat(lx);function _v(t,e,r){e===!0&&(e=null,r=!0),r||(r=!1),(!e||t.private)&&(e=function(n){}),t.scripts&&t.scripts.install==="node-gyp rebuild"&&!t.scripts.preinstall&&(t.gypfile=!0),Cc.warn=function(){e(ux.apply(null,arguments))},_c.forEach(function(n){Cc["fix"+Av(n)](t,r)}),t._id=t.name+"@"+t.version}function Av(t){return t.charAt(0).toUpperCase()+t.slice(1)}});var Lv=d((sj,Xi)=>{"use strict";var fx=require("path"),hx=tp(),px=lp(),dx=Rp(),mx=Xa(),gx=Lp(),yx=xp(),vx=qp(),bx=ig(),Ex=ag(),wx=Tv();delete require.cache[__filename];var Sx=fx.dirname(Xi.parent&&Xi.parent.filename?Xi.parent.filename:"."),Ox=(t,e,r,n)=>{let i=e[t],s=!0;if(typeof i.isRequired=="function"&&(s=i.isRequired(r,n),typeof s!="boolean"))throw new TypeError(`Return value for isRequired callback should be of type boolean, but ${typeof s} was returned.`);return typeof r[t]=="undefined"?s:i.isMultiple&&r[t].length===0},Rx=(t,e,r)=>{let n=[];if(typeof t=="undefined")return[];for(let i of Object.keys(t))t[i].isRequired&&Ox(i,t,e,r)&&n.push({key:i,...t[i]});return n},Cx=t=>{console.error(`Missing required flag${t.length>1?"s":""}`);for(let e of t)console.error(` --${mx(e.key,"-")}${e.alias?`, -${e.alias}`:""}`)},_x=({flags:t})=>{let e=Object.keys(t).filter(r=>r.includes("-")&&r!=="--");if(e.length>0)throw new Error(`Flag keys may not contain '-': ${e.join(", ")}`)},Ax=t=>{console.error([`Unknown flag${t.length>1?"s":""}`,...t].join(` -`))},Tx=({flags:t,booleanDefault:e})=>{let r={};for(let[n,i]of Object.entries(t)){let s={...i};typeof e!="undefined"&&s.type==="boolean"&&!Object.prototype.hasOwnProperty.call(s,"default")&&(s.default=s.isMultiple?[e]:e),s.isMultiple&&(s.type=s.type?`${s.type}-array`:"array",s.default=s.default||[],delete s.isMultiple),r[n]=s}return r},Lx=(t,e)=>{for(let[r,n]of Object.entries(e.flags))if(r!=="--"&&!n.isMultiple&&Array.isArray(t[r]))throw new Error(`The flag --${r} can only be set once.`)},xx=(t,e)=>{typeof t!="string"&&(e=t,t="");let r=bx.sync({cwd:Sx,normalize:!1});e={pkg:r?r.packageJson:{},argv:process.argv.slice(2),flags:{},inferType:!1,input:"string",help:t,autoHelp:!0,autoVersion:!0,booleanDefault:!1,hardRejection:!0,allowUnknownFlags:!0,...e},e.hardRejection&&Ex(),_x(e);let n={arguments:e.input,...Tx(e)};n=gx(n,"-",{exclude:["stopEarly","--"]}),e.inferType&&delete n.arguments,n=hx(n),n.configuration={...n.configuration,"greedy-arrays":!1},n["--"]&&(n.configuration["populate--"]=!0),e.allowUnknownFlags||(n.configuration["unknown-options-as-args"]=!0);let{pkg:i}=e,s=px(e.argv,n),o=vx(yx((e.help||"").replace(/\t+\n*$/,"")),2);wx(i),process.title=i.bin?Object.keys(i.bin)[0]:i.name;let{description:a}=e;!a&&a!==!1&&({description:a}=i),o=(a?` +`)}),em=(t,e,r)=>{typeof e=="string"&&(r=e,e=null);try{try{return JSON.parse(t,e)}catch(n){throw i_(t,e),n}}catch(n){n.message=n.message.replace(/\n/g,"");let i=n.message.match(/in JSON at position (\d+) while parsing/),s=new Qd(n);if(r&&(s.fileName=r),i&&i.length>0){let o=new s_(t),a=Number(i[1]),u=o.locationForIndex(a),c=o_(t,{start:{line:u.line+1,column:u.column+1}},{highlightCode:!0});s.codeFrame=c}throw s}};em.JSONError=Qd;Jd.exports=em});var vm=d((U,rm)=>{U=rm.exports=K;var ne;typeof process=="object"&&process.env&&process.env.NODE_DEBUG&&/\bsemver\b/i.test(process.env.NODE_DEBUG)?ne=function(){var t=Array.prototype.slice.call(arguments,0);t.unshift("SEMVER"),console.log.apply(console,t)}:ne=function(){};U.SEMVER_SPEC_VERSION="2.0.0";var lu=256,Bs=Number.MAX_SAFE_INTEGER||9007199254740991,fu=16,oe=U.re=[],C=U.src=[],Y=0,Rn=Y++;C[Rn]="0|[1-9]\\d*";var _n=Y++;C[_n]="[0-9]+";var hu=Y++;C[hu]="\\d*[a-zA-Z-][a-zA-Z0-9-]*";var nm=Y++;C[nm]="("+C[Rn]+")\\.("+C[Rn]+")\\.("+C[Rn]+")";var im=Y++;C[im]="("+C[_n]+")\\.("+C[_n]+")\\.("+C[_n]+")";var pu=Y++;C[pu]="(?:"+C[Rn]+"|"+C[hu]+")";var du=Y++;C[du]="(?:"+C[_n]+"|"+C[hu]+")";var mu=Y++;C[mu]="(?:-("+C[pu]+"(?:\\."+C[pu]+")*))";var gu=Y++;C[gu]="(?:-?("+C[du]+"(?:\\."+C[du]+")*))";var yu=Y++;C[yu]="[0-9A-Za-z-]+";var Ci=Y++;C[Ci]="(?:\\+("+C[yu]+"(?:\\."+C[yu]+")*))";var vu=Y++,sm="v?"+C[nm]+C[mu]+"?"+C[Ci]+"?";C[vu]="^"+sm+"$";var bu="[v=\\s]*"+C[im]+C[gu]+"?"+C[Ci]+"?",Eu=Y++;C[Eu]="^"+bu+"$";var Cn=Y++;C[Cn]="((?:<|>)?=?)";var Us=Y++;C[Us]=C[_n]+"|x|X|\\*";var Gs=Y++;C[Gs]=C[Rn]+"|x|X|\\*";var qr=Y++;C[qr]="[v=\\s]*("+C[Gs]+")(?:\\.("+C[Gs]+")(?:\\.("+C[Gs]+")(?:"+C[mu]+")?"+C[Ci]+"?)?)?";var An=Y++;C[An]="[v=\\s]*("+C[Us]+")(?:\\.("+C[Us]+")(?:\\.("+C[Us]+")(?:"+C[gu]+")?"+C[Ci]+"?)?)?";var om=Y++;C[om]="^"+C[Cn]+"\\s*"+C[qr]+"$";var am=Y++;C[am]="^"+C[Cn]+"\\s*"+C[An]+"$";var um=Y++;C[um]="(?:^|[^\\d])(\\d{1,"+fu+"})(?:\\.(\\d{1,"+fu+"}))?(?:\\.(\\d{1,"+fu+"}))?(?:$|[^\\d])";var zs=Y++;C[zs]="(?:~>?)";var Hs=Y++;C[Hs]="(\\s*)"+C[zs]+"\\s+";oe[Hs]=new RegExp(C[Hs],"g");var a_="$1~",cm=Y++;C[cm]="^"+C[zs]+C[qr]+"$";var lm=Y++;C[lm]="^"+C[zs]+C[An]+"$";var Ws=Y++;C[Ws]="(?:\\^)";var Ys=Y++;C[Ys]="(\\s*)"+C[Ws]+"\\s+";oe[Ys]=new RegExp(C[Ys],"g");var u_="$1^",fm=Y++;C[fm]="^"+C[Ws]+C[qr]+"$";var hm=Y++;C[hm]="^"+C[Ws]+C[An]+"$";var wu=Y++;C[wu]="^"+C[Cn]+"\\s*("+bu+")$|^$";var Su=Y++;C[Su]="^"+C[Cn]+"\\s*("+sm+")$|^$";var Ai=Y++;C[Ai]="(\\s*)"+C[Cn]+"\\s*("+bu+"|"+C[qr]+")";oe[Ai]=new RegExp(C[Ai],"g");var c_="$1$2$3",pm=Y++;C[pm]="^\\s*("+C[qr]+")\\s+-\\s+("+C[qr]+")\\s*$";var dm=Y++;C[dm]="^\\s*("+C[An]+")\\s+-\\s+("+C[An]+")\\s*$";var mm=Y++;C[mm]="(<|>)?=?\\s*\\*";for(var jr=0;jrlu)return null;var r=e.loose?oe[Eu]:oe[vu];if(!r.test(t))return null;try{return new K(t,e)}catch(n){return null}}U.valid=l_;function l_(t,e){var r=$r(t,e);return r?r.version:null}U.clean=f_;function f_(t,e){var r=$r(t.trim().replace(/^[=v]+/,""),e);return r?r.version:null}U.SemVer=K;function K(t,e){if((!e||typeof e!="object")&&(e={loose:!!e,includePrerelease:!1}),t instanceof K){if(t.loose===e.loose)return t;t=t.version}else if(typeof t!="string")throw new TypeError("Invalid Version: "+t);if(t.length>lu)throw new TypeError("version is longer than "+lu+" characters");if(!(this instanceof K))return new K(t,e);ne("SemVer",t,e),this.options=e,this.loose=!!e.loose;var r=t.trim().match(e.loose?oe[Eu]:oe[vu]);if(!r)throw new TypeError("Invalid Version: "+t);if(this.raw=t,this.major=+r[1],this.minor=+r[2],this.patch=+r[3],this.major>Bs||this.major<0)throw new TypeError("Invalid major version");if(this.minor>Bs||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>Bs||this.patch<0)throw new TypeError("Invalid patch version");r[4]?this.prerelease=r[4].split(".").map(function(n){if(/^[0-9]+$/.test(n)){var i=+n;if(i>=0&&i=0;)typeof this.prerelease[r]=="number"&&(this.prerelease[r]++,r=-2);r===-1&&this.prerelease.push(0)}e&&(this.prerelease[0]===e?isNaN(this.prerelease[1])&&(this.prerelease=[e,0]):this.prerelease=[e,0]);break;default:throw new Error("invalid increment argument: "+t)}return this.format(),this.raw=this.version,this};U.inc=h_;function h_(t,e,r,n){typeof r=="string"&&(n=r,r=void 0);try{return new K(t,r).inc(e,n).version}catch(i){return null}}U.diff=p_;function p_(t,e){if(Ou(t,e))return null;var r=$r(t),n=$r(e),i="";if(r.prerelease.length||n.prerelease.length){i="pre";var s="prerelease"}for(var o in r)if((o==="major"||o==="minor"||o==="patch")&&r[o]!==n[o])return i+o;return s}U.compareIdentifiers=Ln;var gm=/^[0-9]+$/;function Ln(t,e){var r=gm.test(t),n=gm.test(e);return r&&n&&(t=+t,e=+e),t===e?0:r&&!n?-1:n&&!r?1:t0}U.lt=Vs;function Vs(t,e,r){return Ut(t,e,r)<0}U.eq=Ou;function Ou(t,e,r){return Ut(t,e,r)===0}U.neq=ym;function ym(t,e,r){return Ut(t,e,r)!==0}U.gte=Ru;function Ru(t,e,r){return Ut(t,e,r)>=0}U.lte=_u;function _u(t,e,r){return Ut(t,e,r)<=0}U.cmp=Xs;function Xs(t,e,r,n){switch(e){case"===":return typeof t=="object"&&(t=t.version),typeof r=="object"&&(r=r.version),t===r;case"!==":return typeof t=="object"&&(t=t.version),typeof r=="object"&&(r=r.version),t!==r;case"":case"=":case"==":return Ou(t,r,n);case"!=":return ym(t,r,n);case">":return Li(t,r,n);case">=":return Ru(t,r,n);case"<":return Vs(t,r,n);case"<=":return _u(t,r,n);default:throw new TypeError("Invalid operator: "+e)}}U.Comparator=ct;function ct(t,e){if((!e||typeof e!="object")&&(e={loose:!!e,includePrerelease:!1}),t instanceof ct){if(t.loose===!!e.loose)return t;t=t.value}if(!(this instanceof ct))return new ct(t,e);ne("comparator",t,e),this.options=e,this.loose=!!e.loose,this.parse(t),this.semver===Ti?this.value="":this.value=this.operator+this.semver.version,ne("comp",this)}var Ti={};ct.prototype.parse=function(t){var e=this.options.loose?oe[wu]:oe[Su],r=t.match(e);if(!r)throw new TypeError("Invalid comparator: "+t);this.operator=r[1],this.operator==="="&&(this.operator=""),r[2]?this.semver=new K(r[2],this.options.loose):this.semver=Ti};ct.prototype.toString=function(){return this.value};ct.prototype.test=function(t){return ne("Comparator.test",t,this.options.loose),this.semver===Ti?!0:(typeof t=="string"&&(t=new K(t,this.options)),Xs(t,this.operator,this.semver,this.options))};ct.prototype.intersects=function(t,e){if(!(t instanceof ct))throw new TypeError("a Comparator is required");(!e||typeof e!="object")&&(e={loose:!!e,includePrerelease:!1});var r;if(this.operator==="")return r=new he(t.value,e),Ks(this.value,r,e);if(t.operator==="")return r=new he(this.value,e),Ks(t.semver,r,e);var n=(this.operator===">="||this.operator===">")&&(t.operator===">="||t.operator===">"),i=(this.operator==="<="||this.operator==="<")&&(t.operator==="<="||t.operator==="<"),s=this.semver.version===t.semver.version,o=(this.operator===">="||this.operator==="<=")&&(t.operator===">="||t.operator==="<="),a=Xs(this.semver,"<",t.semver,e)&&(this.operator===">="||this.operator===">")&&(t.operator==="<="||t.operator==="<"),u=Xs(this.semver,">",t.semver,e)&&(this.operator==="<="||this.operator==="<")&&(t.operator===">="||t.operator===">");return n||i||s&&o||a||u};U.Range=he;function he(t,e){if((!e||typeof e!="object")&&(e={loose:!!e,includePrerelease:!1}),t instanceof he)return t.loose===!!e.loose&&t.includePrerelease===!!e.includePrerelease?t:new he(t.raw,e);if(t instanceof ct)return new he(t.value,e);if(!(this instanceof he))return new he(t,e);if(this.options=e,this.loose=!!e.loose,this.includePrerelease=!!e.includePrerelease,this.raw=t,this.set=t.split(/\s*\|\|\s*/).map(function(r){return this.parseRange(r.trim())},this).filter(function(r){return r.length}),!this.set.length)throw new TypeError("Invalid SemVer Range: "+t);this.format()}he.prototype.format=function(){return this.range=this.set.map(function(t){return t.join(" ").trim()}).join("||").trim(),this.range};he.prototype.toString=function(){return this.range};he.prototype.parseRange=function(t){var e=this.options.loose;t=t.trim();var r=e?oe[dm]:oe[pm];t=t.replace(r,O_),ne("hyphen replace",t),t=t.replace(oe[Ai],c_),ne("comparator trim",t,oe[Ai]),t=t.replace(oe[Hs],a_),t=t.replace(oe[Ys],u_),t=t.split(/\s+/).join(" ");var n=e?oe[wu]:oe[Su],i=t.split(" ").map(function(s){return S_(s,this.options)},this).join(" ").split(/\s+/);return this.options.loose&&(i=i.filter(function(s){return!!s.match(n)})),i=i.map(function(s){return new ct(s,this.options)},this),i};he.prototype.intersects=function(t,e){if(!(t instanceof he))throw new TypeError("a Range is required");return this.set.some(function(r){return r.every(function(n){return t.set.some(function(i){return i.every(function(s){return n.intersects(s,e)})})})})};U.toComparators=R_;function R_(t,e){return new he(t,e).set.map(function(r){return r.map(function(n){return n.value}).join(" ").trim().split(" ")})}function S_(t,e){return ne("comp",t,e),t=C_(t,e),ne("caret",t),t=__(t,e),ne("tildes",t),t=A_(t,e),ne("xrange",t),t=L_(t,e),ne("stars",t),t}function Ue(t){return!t||t.toLowerCase()==="x"||t==="*"}function __(t,e){return t.trim().split(/\s+/).map(function(r){return T_(r,e)}).join(" ")}function T_(t,e){var r=e.loose?oe[lm]:oe[cm];return t.replace(r,function(n,i,s,o,a){ne("tilde",t,n,i,s,o,a);var u;return Ue(i)?u="":Ue(s)?u=">="+i+".0.0 <"+(+i+1)+".0.0":Ue(o)?u=">="+i+"."+s+".0 <"+i+"."+(+s+1)+".0":a?(ne("replaceTilde pr",a),u=">="+i+"."+s+"."+o+"-"+a+" <"+i+"."+(+s+1)+".0"):u=">="+i+"."+s+"."+o+" <"+i+"."+(+s+1)+".0",ne("tilde return",u),u})}function C_(t,e){return t.trim().split(/\s+/).map(function(r){return x_(r,e)}).join(" ")}function x_(t,e){ne("caret",t,e);var r=e.loose?oe[hm]:oe[fm];return t.replace(r,function(n,i,s,o,a){ne("caret",t,n,i,s,o,a);var u;return Ue(i)?u="":Ue(s)?u=">="+i+".0.0 <"+(+i+1)+".0.0":Ue(o)?i==="0"?u=">="+i+"."+s+".0 <"+i+"."+(+s+1)+".0":u=">="+i+"."+s+".0 <"+(+i+1)+".0.0":a?(ne("replaceCaret pr",a),i==="0"?s==="0"?u=">="+i+"."+s+"."+o+"-"+a+" <"+i+"."+s+"."+(+o+1):u=">="+i+"."+s+"."+o+"-"+a+" <"+i+"."+(+s+1)+".0":u=">="+i+"."+s+"."+o+"-"+a+" <"+(+i+1)+".0.0"):(ne("no pr"),i==="0"?s==="0"?u=">="+i+"."+s+"."+o+" <"+i+"."+s+"."+(+o+1):u=">="+i+"."+s+"."+o+" <"+i+"."+(+s+1)+".0":u=">="+i+"."+s+"."+o+" <"+(+i+1)+".0.0"),ne("caret return",u),u})}function A_(t,e){return ne("replaceXRanges",t,e),t.split(/\s+/).map(function(r){return N_(r,e)}).join(" ")}function N_(t,e){t=t.trim();var r=e.loose?oe[am]:oe[om];return t.replace(r,function(n,i,s,o,a,u){ne("xRange",t,n,i,s,o,a,u);var c=Ue(s),l=c||Ue(o),f=l||Ue(a),p=f;return i==="="&&p&&(i=""),c?i===">"||i==="<"?n="<0.0.0":n="*":i&&p?(l&&(o=0),a=0,i===">"?(i=">=",l?(s=+s+1,o=0,a=0):(o=+o+1,a=0)):i==="<="&&(i="<",l?s=+s+1:o=+o+1),n=i+s+"."+o+"."+a):l?n=">="+s+".0.0 <"+(+s+1)+".0.0":f&&(n=">="+s+"."+o+".0 <"+s+"."+(+o+1)+".0"),ne("xRange return",n),n})}function L_(t,e){return ne("replaceStars",t,e),t.trim().replace(oe[mm],"")}function O_(t,e,r,n,i,s,o,a,u,c,l,f,p){return Ue(r)?e="":Ue(n)?e=">="+r+".0.0":Ue(i)?e=">="+r+"."+n+".0":e=">="+e,Ue(u)?a="":Ue(c)?a="<"+(+u+1)+".0.0":Ue(l)?a="<"+u+"."+(+c+1)+".0":f?a="<="+u+"."+c+"."+l+"-"+f:a="<="+a,(e+" "+a).trim()}he.prototype.test=function(t){if(!t)return!1;typeof t=="string"&&(t=new K(t,this.options));for(var e=0;e0){var i=t[n].semver;if(i.major===e.major&&i.minor===e.minor&&i.patch===e.patch)return!0}return!1}return!0}U.satisfies=Ks;function Ks(t,e,r){try{e=new he(e,r)}catch(n){return!1}return e.test(t)}U.maxSatisfying=P_;function P_(t,e,r){var n=null,i=null;try{var s=new he(e,r)}catch(o){return null}return t.forEach(function(o){s.test(o)&&(!n||i.compare(o)===-1)&&(n=o,i=new K(n,r))}),n}U.minSatisfying=D_;function D_(t,e,r){var n=null,i=null;try{var s=new he(e,r)}catch(o){return null}return t.forEach(function(o){s.test(o)&&(!n||i.compare(o)===1)&&(n=o,i=new K(n,r))}),n}U.minVersion=F_;function F_(t,e){t=new he(t,e);var r=new K("0.0.0");if(t.test(r)||(r=new K("0.0.0-0"),t.test(r)))return r;r=null;for(var n=0;n":o.prerelease.length===0?o.patch++:o.prerelease.push(0),o.raw=o.format();case"":case">=":(!r||Li(r,o))&&(r=o);break;case"<":case"<=":break;default:throw new Error("Unexpected operation: "+s.operator)}})}return r&&t.test(r)?r:null}U.validRange=k_;function k_(t,e){try{return new he(t,e).range||"*"}catch(r){return null}}U.ltr=q_;function q_(t,e,r){return Cu(t,e,"<",r)}U.gtr=j_;function j_(t,e,r){return Cu(t,e,">",r)}U.outside=Cu;function Cu(t,e,r,n){t=new K(t,n),e=new he(e,n);var i,s,o,a,u;switch(r){case">":i=Li,s=_u,o=Vs,a=">",u=">=";break;case"<":i=Vs,s=Ru,o=Li,a="<",u="<=";break;default:throw new TypeError('Must provide a hilo val of "<" or ">"')}if(Ks(t,e,n))return!1;for(var c=0;c=0.0.0")),f=f||y,p=p||y,i(y.semver,f.semver,n)?f=y:o(y.semver,p.semver,n)&&(p=y)}),f.operator===a||f.operator===u||(!p.operator||p.operator===a)&&s(t,p.semver))return!1;if(p.operator===u&&o(t,p.semver))return!1}return!0}U.prerelease=$_;function $_(t,e){var r=$r(t,e);return r&&r.prerelease.length?r.prerelease:null}U.intersects=M_;function M_(t,e,r){return t=new he(t,r),e=new he(e,r),t.intersects(e)}U.coerce=B_;function B_(t){if(t instanceof K)return t;if(typeof t!="string")return null;var e=t.match(oe[um]);return e==null?null:$r(e[1]+"."+(e[2]||"0")+"."+(e[3]||"0"))}});var Au=d((Z5,bm)=>{bm.exports=["0BSD","AAL","ADSL","AFL-1.1","AFL-1.2","AFL-2.0","AFL-2.1","AFL-3.0","AGPL-1.0-only","AGPL-1.0-or-later","AGPL-3.0-only","AGPL-3.0-or-later","AMDPLPA","AML","AMPAS","ANTLR-PD","ANTLR-PD-fallback","APAFML","APL-1.0","APSL-1.0","APSL-1.1","APSL-1.2","APSL-2.0","Abstyles","Adobe-2006","Adobe-Glyph","Afmparse","Aladdin","Apache-1.0","Apache-1.1","Apache-2.0","Artistic-1.0","Artistic-1.0-Perl","Artistic-1.0-cl8","Artistic-2.0","BSD-1-Clause","BSD-2-Clause","BSD-2-Clause-Patent","BSD-2-Clause-Views","BSD-3-Clause","BSD-3-Clause-Attribution","BSD-3-Clause-Clear","BSD-3-Clause-LBNL","BSD-3-Clause-No-Nuclear-License","BSD-3-Clause-No-Nuclear-License-2014","BSD-3-Clause-No-Nuclear-Warranty","BSD-3-Clause-Open-MPI","BSD-4-Clause","BSD-4-Clause-UC","BSD-Protection","BSD-Source-Code","BSL-1.0","BUSL-1.1","Bahyph","Barr","Beerware","BitTorrent-1.0","BitTorrent-1.1","BlueOak-1.0.0","Borceux","CAL-1.0","CAL-1.0-Combined-Work-Exception","CATOSL-1.1","CC-BY-1.0","CC-BY-2.0","CC-BY-2.5","CC-BY-3.0","CC-BY-3.0-AT","CC-BY-3.0-US","CC-BY-4.0","CC-BY-NC-1.0","CC-BY-NC-2.0","CC-BY-NC-2.5","CC-BY-NC-3.0","CC-BY-NC-4.0","CC-BY-NC-ND-1.0","CC-BY-NC-ND-2.0","CC-BY-NC-ND-2.5","CC-BY-NC-ND-3.0","CC-BY-NC-ND-3.0-IGO","CC-BY-NC-ND-4.0","CC-BY-NC-SA-1.0","CC-BY-NC-SA-2.0","CC-BY-NC-SA-2.5","CC-BY-NC-SA-3.0","CC-BY-NC-SA-4.0","CC-BY-ND-1.0","CC-BY-ND-2.0","CC-BY-ND-2.5","CC-BY-ND-3.0","CC-BY-ND-4.0","CC-BY-SA-1.0","CC-BY-SA-2.0","CC-BY-SA-2.0-UK","CC-BY-SA-2.5","CC-BY-SA-3.0","CC-BY-SA-3.0-AT","CC-BY-SA-4.0","CC-PDDC","CC0-1.0","CDDL-1.0","CDDL-1.1","CDLA-Permissive-1.0","CDLA-Sharing-1.0","CECILL-1.0","CECILL-1.1","CECILL-2.0","CECILL-2.1","CECILL-B","CECILL-C","CERN-OHL-1.1","CERN-OHL-1.2","CERN-OHL-P-2.0","CERN-OHL-S-2.0","CERN-OHL-W-2.0","CNRI-Jython","CNRI-Python","CNRI-Python-GPL-Compatible","CPAL-1.0","CPL-1.0","CPOL-1.02","CUA-OPL-1.0","Caldera","ClArtistic","Condor-1.1","Crossword","CrystalStacker","Cube","D-FSL-1.0","DOC","DSDP","Dotseqn","ECL-1.0","ECL-2.0","EFL-1.0","EFL-2.0","EPICS","EPL-1.0","EPL-2.0","EUDatagrid","EUPL-1.0","EUPL-1.1","EUPL-1.2","Entessa","ErlPL-1.1","Eurosym","FSFAP","FSFUL","FSFULLR","FTL","Fair","Frameworx-1.0","FreeImage","GFDL-1.1-invariants-only","GFDL-1.1-invariants-or-later","GFDL-1.1-no-invariants-only","GFDL-1.1-no-invariants-or-later","GFDL-1.1-only","GFDL-1.1-or-later","GFDL-1.2-invariants-only","GFDL-1.2-invariants-or-later","GFDL-1.2-no-invariants-only","GFDL-1.2-no-invariants-or-later","GFDL-1.2-only","GFDL-1.2-or-later","GFDL-1.3-invariants-only","GFDL-1.3-invariants-or-later","GFDL-1.3-no-invariants-only","GFDL-1.3-no-invariants-or-later","GFDL-1.3-only","GFDL-1.3-or-later","GL2PS","GLWTPL","GPL-1.0-only","GPL-1.0-or-later","GPL-2.0-only","GPL-2.0-or-later","GPL-3.0-only","GPL-3.0-or-later","Giftware","Glide","Glulxe","HPND","HPND-sell-variant","HTMLTIDY","HaskellReport","Hippocratic-2.1","IBM-pibs","ICU","IJG","IPA","IPL-1.0","ISC","ImageMagick","Imlib2","Info-ZIP","Intel","Intel-ACPI","Interbase-1.0","JPNIC","JSON","JasPer-2.0","LAL-1.2","LAL-1.3","LGPL-2.0-only","LGPL-2.0-or-later","LGPL-2.1-only","LGPL-2.1-or-later","LGPL-3.0-only","LGPL-3.0-or-later","LGPLLR","LPL-1.0","LPL-1.02","LPPL-1.0","LPPL-1.1","LPPL-1.2","LPPL-1.3a","LPPL-1.3c","Latex2e","Leptonica","LiLiQ-P-1.1","LiLiQ-R-1.1","LiLiQ-Rplus-1.1","Libpng","Linux-OpenIB","MIT","MIT-0","MIT-CMU","MIT-advertising","MIT-enna","MIT-feh","MIT-open-group","MITNFA","MPL-1.0","MPL-1.1","MPL-2.0","MPL-2.0-no-copyleft-exception","MS-PL","MS-RL","MTLL","MakeIndex","MirOS","Motosoto","MulanPSL-1.0","MulanPSL-2.0","Multics","Mup","NASA-1.3","NBPL-1.0","NCGL-UK-2.0","NCSA","NGPL","NIST-PD","NIST-PD-fallback","NLOD-1.0","NLPL","NOSL","NPL-1.0","NPL-1.1","NPOSL-3.0","NRL","NTP","NTP-0","Naumen","Net-SNMP","NetCDF","Newsletr","Nokia","Noweb","O-UDA-1.0","OCCT-PL","OCLC-2.0","ODC-By-1.0","ODbL-1.0","OFL-1.0","OFL-1.0-RFN","OFL-1.0-no-RFN","OFL-1.1","OFL-1.1-RFN","OFL-1.1-no-RFN","OGC-1.0","OGL-Canada-2.0","OGL-UK-1.0","OGL-UK-2.0","OGL-UK-3.0","OGTSL","OLDAP-1.1","OLDAP-1.2","OLDAP-1.3","OLDAP-1.4","OLDAP-2.0","OLDAP-2.0.1","OLDAP-2.1","OLDAP-2.2","OLDAP-2.2.1","OLDAP-2.2.2","OLDAP-2.3","OLDAP-2.4","OLDAP-2.5","OLDAP-2.6","OLDAP-2.7","OLDAP-2.8","OML","OPL-1.0","OSET-PL-2.1","OSL-1.0","OSL-1.1","OSL-2.0","OSL-2.1","OSL-3.0","OpenSSL","PDDL-1.0","PHP-3.0","PHP-3.01","PSF-2.0","Parity-6.0.0","Parity-7.0.0","Plexus","PolyForm-Noncommercial-1.0.0","PolyForm-Small-Business-1.0.0","PostgreSQL","Python-2.0","QPL-1.0","Qhull","RHeCos-1.1","RPL-1.1","RPL-1.5","RPSL-1.0","RSA-MD","RSCPL","Rdisc","Ruby","SAX-PD","SCEA","SGI-B-1.0","SGI-B-1.1","SGI-B-2.0","SHL-0.5","SHL-0.51","SISSL","SISSL-1.2","SMLNJ","SMPPL","SNIA","SPL-1.0","SSH-OpenSSH","SSH-short","SSPL-1.0","SWL","Saxpath","Sendmail","Sendmail-8.23","SimPL-2.0","Sleepycat","Spencer-86","Spencer-94","Spencer-99","SugarCRM-1.1.3","TAPR-OHL-1.0","TCL","TCP-wrappers","TMate","TORQUE-1.1","TOSL","TU-Berlin-1.0","TU-Berlin-2.0","UCL-1.0","UPL-1.0","Unicode-DFS-2015","Unicode-DFS-2016","Unicode-TOU","Unlicense","VOSTROM","VSL-1.0","Vim","W3C","W3C-19980720","W3C-20150513","WTFPL","Watcom-1.0","Wsuipa","X11","XFree86-1.1","XSkat","Xerox","Xnet","YPL-1.0","YPL-1.1","ZPL-1.1","ZPL-2.0","ZPL-2.1","Zed","Zend-2.0","Zimbra-1.3","Zimbra-1.4","Zlib","blessing","bzip2-1.0.5","bzip2-1.0.6","copyleft-next-0.3.0","copyleft-next-0.3.1","curl","diffmark","dvipdfm","eGenix","etalab-2.0","gSOAP-1.3b","gnuplot","iMatix","libpng-2.0","libselinux-1.0","libtiff","mpich2","psfrag","psutils","xinetd","xpp","zlib-acknowledgement"]});var wm=d((J5,Em)=>{Em.exports=["AGPL-1.0","AGPL-3.0","BSD-2-Clause-FreeBSD","BSD-2-Clause-NetBSD","GFDL-1.1","GFDL-1.2","GFDL-1.3","GPL-1.0","GPL-2.0","GPL-2.0-with-GCC-exception","GPL-2.0-with-autoconf-exception","GPL-2.0-with-bison-exception","GPL-2.0-with-classpath-exception","GPL-2.0-with-font-exception","GPL-3.0","GPL-3.0-with-GCC-exception","GPL-3.0-with-autoconf-exception","LGPL-2.0","LGPL-2.1","LGPL-3.0","Nunit","StandardML-NJ","eCos-2.0","wxWindows"]});var Om=d((Q5,Sm)=>{Sm.exports=["389-exception","Autoconf-exception-2.0","Autoconf-exception-3.0","Bison-exception-2.2","Bootloader-exception","Classpath-exception-2.0","CLISP-exception-2.0","DigiRule-FOSS-exception","eCos-exception-2.0","Fawkes-Runtime-exception","FLTK-exception","Font-exception-2.0","freertos-exception-2.0","GCC-exception-2.0","GCC-exception-3.1","gnu-javamail-exception","GPL-3.0-linking-exception","GPL-3.0-linking-source-exception","GPL-CC-1.0","i2p-gpl-java-exception","Libtool-exception","Linux-syscall-note","LLVM-exception","LZMA-exception","mif-exception","Nokia-Qt-exception-1.1","OCaml-LGPL-linking-exception","OCCT-exception-1.0","OpenJDK-assembly-exception-1.0","openvpn-openssl-exception","PS-or-PDF-font-exception-20170817","Qt-GPL-exception-1.0","Qt-LGPL-exception-1.1","Qwt-exception-1.0","Swift-exception","u-boot-exception-2.0","Universal-FOSS-exception-1.0","WxWindows-exception-3.1"]});var _m=d((eF,Rm)=>{"use strict";var U_=[].concat(Au()).concat(wm()),G_=Om();Rm.exports=function(t){var e=0;function r(){return e1&&t[e-2]===" ")throw new Error("Space before `+`");return m&&{type:"OPERATOR",string:m}}function o(){return n(/[A-Za-z0-9-.]+/)}function a(){var m=o();if(!m)throw new Error("Expected idstring at offset "+e);return m}function u(){if(n("DocumentRef-")){var m=a();return{type:"DOCUMENTREF",string:m}}}function c(){if(n("LicenseRef-")){var m=a();return{type:"LICENSEREF",string:m}}}function l(){var m=e,h=o();if(U_.indexOf(h)!==-1)return{type:"LICENSE",string:h};if(G_.indexOf(h)!==-1)return{type:"EXCEPTION",string:h};e=m}function f(){return s()||u()||c()||l()}for(var p=[];r()&&(i(),!!r());){var y=f();if(!y)throw new Error("Unexpected `"+t[e]+"` at offset "+e);p.push(y)}return p}});var Am=d((tF,Cm)=>{"use strict";Cm.exports=function(t){var e=0;function r(){return e{"use strict";var z_=_m(),H_=Am();Lm.exports=function(t){return H_(z_(t))}});var km=d((nF,Tm)=>{var W_=Lu(),Y_=Au();function Zs(t){try{return W_(t),!0}catch(e){return!1}}var xm=[["APGL","AGPL"],["Gpl","GPL"],["GLP","GPL"],["APL","Apache"],["ISD","ISC"],["GLP","GPL"],["IST","ISC"],["Claude","Clause"],[" or later","+"],[" International",""],["GNU","GPL"],["GUN","GPL"],["+",""],["GNU GPL","GPL"],["GNU/GPL","GPL"],["GNU GLP","GPL"],["GNU General Public License","GPL"],["Gnu public license","GPL"],["GNU Public License","GPL"],["GNU GENERAL PUBLIC LICENSE","GPL"],["MTI","MIT"],["Mozilla Public License","MPL"],["Universal Permissive License","UPL"],["WTH","WTF"],["-License",""]],V_=0,X_=1,Nm=[function(t){return t.toUpperCase()},function(t){return t.trim()},function(t){return t.replace(/\./g,"")},function(t){return t.replace(/\s+/g,"")},function(t){return t.replace(/\s+/g,"-")},function(t){return t.replace("v","-")},function(t){return t.replace(/,?\s*(\d)/,"-$1")},function(t){return t.replace(/,?\s*(\d)/,"-$1.0")},function(t){return t.replace(/,?\s*(V\.|v\.|V|v|Version|version)\s*(\d)/,"-$2")},function(t){return t.replace(/,?\s*(V\.|v\.|V|v|Version|version)\s*(\d)/,"-$2.0")},function(t){return t[0].toUpperCase()+t.slice(1)},function(t){return t.replace("/","-")},function(t){return t.replace(/\s*V\s*(\d)/,"-$1").replace(/(\d)$/,"$1.0")},function(t){return t.indexOf("3.0")!==-1?t+"-or-later":t+"-only"},function(t){return t+"only"},function(t){return t.replace(/(\d)$/,"-$1.0")},function(t){return t.replace(/(-| )?(\d)$/,"-$2-Clause")},function(t){return t.replace(/(-| )clause(-| )(\d)/,"-$3-Clause")},function(t){return t.replace(/\b(Modified|New|Revised)(-| )?BSD((-| )License)?/i,"BSD-3-Clause")},function(t){return t.replace(/\bSimplified(-| )?BSD((-| )License)?/i,"BSD-2-Clause")},function(t){return t.replace(/\b(Free|Net)(-| )?BSD((-| )License)?/i,"BSD-2-Clause-$1BSD")},function(t){return t.replace(/\bClear(-| )?BSD((-| )License)?/i,"BSD-3-Clause-Clear")},function(t){return t.replace(/\b(Old|Original)(-| )?BSD((-| )License)?/i,"BSD-4-Clause")},function(t){return"CC-"+t},function(t){return"CC-"+t+"-4.0"},function(t){return t.replace("Attribution","BY").replace("NonCommercial","NC").replace("NoDerivatives","ND").replace(/ (\d)/,"-$1").replace(/ ?International/,"")},function(t){return"CC-"+t.replace("Attribution","BY").replace("NonCommercial","NC").replace("NoDerivatives","ND").replace(/ (\d)/,"-$1").replace(/ ?International/,"")+"-4.0"}],Tu=Y_.map(function(t){var e=/^(.*)-\d+\.\d+$/.exec(t);return e?[e[0],e[1]]:[t,null]}).reduce(function(t,e){var r=e[1];return t[r]=t[r]||[],t[r].push(e[0]),t},{}),K_=Object.keys(Tu).map(function(e){return[e,Tu[e]]}).filter(function(e){return e[1].length===1&&e[0]!==null&&e[0]!=="APL"}).map(function(e){return[e[0],e[1][0]]});Tu=void 0;var Im=[["UNLI","Unlicense"],["WTF","WTFPL"],["2 CLAUSE","BSD-2-Clause"],["2-CLAUSE","BSD-2-Clause"],["3 CLAUSE","BSD-3-Clause"],["3-CLAUSE","BSD-3-Clause"],["AFFERO","AGPL-3.0-or-later"],["AGPL","AGPL-3.0-or-later"],["APACHE","Apache-2.0"],["ARTISTIC","Artistic-2.0"],["Affero","AGPL-3.0-or-later"],["BEER","Beerware"],["BOOST","BSL-1.0"],["BSD","BSD-2-Clause"],["CDDL","CDDL-1.1"],["ECLIPSE","EPL-1.0"],["FUCK","WTFPL"],["GNU","GPL-3.0-or-later"],["LGPL","LGPL-3.0-or-later"],["GPLV1","GPL-1.0-only"],["GPL-1","GPL-1.0-only"],["GPLV2","GPL-2.0-only"],["GPL-2","GPL-2.0-only"],["GPL","GPL-3.0-or-later"],["MIT +NO-FALSE-ATTRIBS","MITNFA"],["MIT","MIT"],["MPL","MPL-2.0"],["X11","X11"],["ZLIB","Zlib"]].concat(K_),Z_=0,J_=1,Pm=function(t){for(var e=0;e-1)return n[J_]}return null},Fm=function(t,e){for(var r=0;r-1){var s=t.replace(i,n[X_]),o=e(s);if(o!==null)return o}}return null};Tm.exports=function(t,e){e=e||{};var r=e.upgrade===void 0?!0:!!e.upgrade;function n(a){return r?Q_(a):a}var i=typeof t=="string"&&t.trim().length!==0;if(!i)throw Error("Invalid argument. Expected non-empty string.");if(t=t.trim(),Zs(t))return n(t);var s=t.replace(/\+$/,"").trim();if(Zs(s))return n(s);var o=Pm(t);return o!==null||(o=Fm(t,function(a){return Zs(a)?a:Pm(a)}),o!==null)||(o=Dm(t),o!==null)||(o=Fm(t,Dm),o!==null)?n(o):null};function Q_(t){return["GPL-1.0","LGPL-1.0","AGPL-1.0","GPL-2.0","LGPL-2.0","AGPL-2.0","LGPL-2.1"].indexOf(t)!==-1?t+"-only":["GPL-1.0+","GPL-2.0+","GPL-3.0+","LGPL-2.0+","LGPL-2.1+","LGPL-3.0+","AGPL-1.0+","AGPL-3.0+"].indexOf(t)!==-1?t.replace(/\+$/,"-or-later"):["GPL-3.0","LGPL-3.0","AGPL-3.0"].indexOf(t)!==-1?t+"-or-later":t}});var Nu=d((iF,qm)=>{var eC=Lu(),tC=km(),jm='license should be a valid SPDX license expression (without "LicenseRef"), "UNLICENSED", or "SEE LICENSE IN "',rC=/^SEE LICEN[CS]E IN (.+)$/;function $m(t,e){return e.slice(0,t.length)===t}function xu(t){if(t.hasOwnProperty("license")){var e=t.license;return $m("LicenseRef",e)||$m("DocumentRef",e)}else return xu(t.left)||xu(t.right)}qm.exports=function(t){var e;try{e=eC(t)}catch(s){var r;if(t==="UNLICENSED"||t==="UNLICENCED")return{validForOldPackages:!0,validForNewPackages:!0,unlicensed:!0};if(r=rC.exec(t))return{validForOldPackages:!0,validForNewPackages:!0,inFile:r[1]};var n={validForOldPackages:!1,validForNewPackages:!1,warnings:[jm]};if(t.trim().length!==0){var i=tC(t);i&&n.warnings.push('license is similar to the valid expression "'+i+'"')}return n}return xu(e)?{validForNewPackages:!1,validForOldPackages:!1,spdx:!0,warnings:[jm]}:{validForNewPackages:!0,validForOldPackages:!0,spdx:!0}}});var Iu=d((sF,Mm)=>{"use strict";var xi=Mm.exports={github:{protocols:["git","http","git+ssh","git+https","ssh","https"],domain:"github.com",treepath:"tree",filetemplate:"https://{auth@}raw.githubusercontent.com/{user}/{project}/{committish}/{path}",bugstemplate:"https://{domain}/{user}/{project}/issues",gittemplate:"git://{auth@}{domain}/{user}/{project}.git{#committish}",tarballtemplate:"https://codeload.{domain}/{user}/{project}/tar.gz/{committish}"},bitbucket:{protocols:["git+ssh","git+https","ssh","https"],domain:"bitbucket.org",treepath:"src",tarballtemplate:"https://{domain}/{user}/{project}/get/{committish}.tar.gz"},gitlab:{protocols:["git+ssh","git+https","ssh","https"],domain:"gitlab.com",treepath:"tree",bugstemplate:"https://{domain}/{user}/{project}/issues",httpstemplate:"git+https://{auth@}{domain}/{user}/{projectPath}.git{#committish}",tarballtemplate:"https://{domain}/{user}/{project}/repository/archive.tar.gz?ref={committish}",pathmatch:/^[/]([^/]+)[/]((?!.*(\/-\/|\/repository\/archive\.tar\.gz\?=.*|\/repository\/[^/]+\/archive.tar.gz$)).*?)(?:[.]git|[/])?$/},gist:{protocols:["git","git+ssh","git+https","ssh","https"],domain:"gist.github.com",pathmatch:/^[/](?:([^/]+)[/])?([a-z0-9]{32,})(?:[.]git)?$/,filetemplate:"https://gist.githubusercontent.com/{user}/{project}/raw{/committish}/{path}",bugstemplate:"https://{domain}/{project}",gittemplate:"git://{domain}/{project}.git{#committish}",sshtemplate:"git@{domain}:/{project}.git{#committish}",sshurltemplate:"git+ssh://git@{domain}/{project}.git{#committish}",browsetemplate:"https://{domain}/{project}{/committish}",browsefiletemplate:"https://{domain}/{project}{/committish}{#path}",docstemplate:"https://{domain}/{project}{/committish}",httpstemplate:"git+https://{domain}/{project}.git{#committish}",shortcuttemplate:"{type}:{project}{#committish}",pathtemplate:"{project}{#committish}",tarballtemplate:"https://codeload.github.com/gist/{project}/tar.gz/{committish}",hashformat:function(t){return"file-"+Bm(t)}}},Um={sshtemplate:"git@{domain}:{user}/{project}.git{#committish}",sshurltemplate:"git+ssh://git@{domain}/{user}/{project}.git{#committish}",browsetemplate:"https://{domain}/{user}/{project}{/tree/committish}",browsefiletemplate:"https://{domain}/{user}/{project}/{treepath}/{committish}/{path}{#fragment}",docstemplate:"https://{domain}/{user}/{project}{/tree/committish}#readme",httpstemplate:"git+https://{auth@}{domain}/{user}/{project}.git{#committish}",filetemplate:"https://{domain}/{user}/{project}/raw/{committish}/{path}",shortcuttemplate:"{type}:{user}/{project}{#committish}",pathtemplate:"{user}/{project}{#committish}",pathmatch:/^[/]([^/]+)[/]([^/]+?)(?:[.]git|[/])?$/,hashformat:Bm};Object.keys(xi).forEach(function(t){Object.keys(Um).forEach(function(e){xi[t][e]||(xi[t][e]=Um[e])}),xi[t].protocols_re=RegExp("^("+xi[t].protocols.map(function(e){return e.replace(/([\\+*{}()[\]$^|])/g,"\\$1")}).join("|")+"):$")});function Bm(t){return t.toLowerCase().replace(/^\W+|\/|\W+$/g,"").replace(/\W+/g,"-")}});var Hm=d((oF,Gm)=>{"use strict";var zm=Iu(),Tn=Object.assign||function(e,r){if(r===null||typeof r!="object")return e;for(var n=Object.keys(r),i=n.length;i--;)e[n[i]]=r[n[i]];return e};Gm.exports=Pe;function Pe(t,e,r,n,i,s,o){var a=this;a.type=t,Object.keys(zm[t]).forEach(function(u){a[u]=zm[t][u]}),a.user=e,a.auth=r,a.project=n,a.committish=i,a.default=s,a.opts=o||{}}Pe.prototype.hash=function(){return this.committish?"#"+this.committish:""};Pe.prototype._fill=function(t,e){if(!!t){var r=Tn({},e);r.path=r.path?r.path.replace(/^[/]+/g,""):"",e=Tn(Tn({},this.opts),e);var n=this;Object.keys(this).forEach(function(l){n[l]!=null&&r[l]==null&&(r[l]=n[l])});var i=r.auth,s=r.committish,o=r.fragment,a=r.path,u=r.project;Object.keys(r).forEach(function(l){var f=r[l];(l==="path"||l==="project")&&typeof f=="string"?r[l]=f.split("/").map(function(p){return encodeURIComponent(p)}).join("/"):r[l]=encodeURIComponent(f)}),r["auth@"]=i?i+"@":"",r["#fragment"]=o?"#"+this.hashformat(o):"",r.fragment=r.fragment?r.fragment:"",r["#path"]=a?"#"+this.hashformat(a):"",r["/path"]=r.path?"/"+r.path:"",r.projectPath=u.split("/").map(encodeURIComponent).join("/"),e.noCommittish?(r["#committish"]="",r["/tree/committish"]="",r["/committish"]="",r.committish=""):(r["#committish"]=s?"#"+s:"",r["/tree/committish"]=r.committish?"/"+r.treepath+"/"+r.committish:"",r["/committish"]=r.committish?"/"+r.committish:"",r.committish=r.committish||"master");var c=t;return Object.keys(r).forEach(function(l){c=c.replace(new RegExp("[{]"+l+"[}]","g"),r[l])}),e.noGitPlus?c.replace(/^git[+]/,""):c}};Pe.prototype.ssh=function(t){return this._fill(this.sshtemplate,t)};Pe.prototype.sshurl=function(t){return this._fill(this.sshurltemplate,t)};Pe.prototype.browse=function(t,e,r){return typeof t=="string"?(typeof e!="string"&&(r=e,e=null),this._fill(this.browsefiletemplate,Tn({fragment:e,path:t},r))):this._fill(this.browsetemplate,t)};Pe.prototype.docs=function(t){return this._fill(this.docstemplate,t)};Pe.prototype.bugs=function(t){return this._fill(this.bugstemplate,t)};Pe.prototype.https=function(t){return this._fill(this.httpstemplate,t)};Pe.prototype.git=function(t){return this._fill(this.gittemplate,t)};Pe.prototype.shortcut=function(t){return this._fill(this.shortcuttemplate,t)};Pe.prototype.path=function(t){return this._fill(this.pathtemplate,t)};Pe.prototype.tarball=function(t){var e=Tn({},t,{noCommittish:!1});return this._fill(this.tarballtemplate,e)};Pe.prototype.file=function(t,e){return this._fill(this.filetemplate,Tn({path:t},e))};Pe.prototype.getDefaultRepresentation=function(){return this.default};Pe.prototype.toString=function(t){return this.default&&typeof this[this.default]=="function"?this[this.default](t):this.sshurl(t)}});var Ym=d((aF,Pu)=>{"use strict";var Js=require("url"),Wm=Iu(),nC=Pu.exports=Hm(),iC={"git+ssh:":"sshurl","git+https:":"https","ssh:":"sshurl","git:":"git"};function sC(t){return iC[t]||t.slice(0,-1)}var oC={"git:":!0,"https:":!0,"git+https:":!0,"http:":!0,"git+http:":!0},Du={};Pu.exports.fromUrl=function(t,e){if(typeof t=="string"){var r=t+JSON.stringify(e||{});return r in Du||(Du[r]=aC(t,e)),Du[r]}};function aC(t,e){if(!(t==null||t==="")){var r=cC(uC(t)?"github:"+t:t),n=lC(r),i=r.match(new RegExp("^([^:]+):(?:(?:[^@:]+(?:[^@]+)?@)?([^/]*))[/](.+?)(?:[.]git)?($|#)")),s=Object.keys(Wm).map(function(o){try{var a=Wm[o],u=null;n.auth&&oC[n.protocol]&&(u=n.auth);var c=n.hash?decodeURIComponent(n.hash.substr(1)):null,l=null,f=null,p=null;if(i&&i[1]===o)l=i[2]&&decodeURIComponent(i[2]),f=decodeURIComponent(i[3]),p="shortcut";else{if(n.host&&n.host!==a.domain&&n.host.replace(/^www[.]/,"")!==a.domain||!a.protocols_re.test(n.protocol)||!n.path)return;var y=a.pathmatch,m=n.path.match(y);if(!m)return;m[1]!==null&&m[1]!==void 0&&(l=decodeURIComponent(m[1].replace(/^:/,""))),f=decodeURIComponent(m[2]),p=sC(n.protocol)}return new nC(o,l,u,f,c,p,e)}catch(h){if(!(h instanceof URIError))throw h}}).filter(function(o){return o});if(s.length===1)return s[0]}}function uC(t){return/^[^:@%/\s.-][^:@%/\s]*[/][^:@\s/%]+(?:#.*)?$/.test(t)}function cC(t){var e=Js.parse(t);return e.protocol==="gist:"&&e.host&&!e.path?e.protocol+"/"+e.host:t}function lC(t){var e=t.match(/^([^@]+)@([^:/]+):[/]?((?:[^/]+[/])?[^/]+?)(?:[.]git)?(#.*)?$/);if(!e){var r=Js.parse(t);if(r.auth&&typeof Js.URL=="function"){var n=t.match(/[^@]+@[^:/]+/);if(n){var i=new Js.URL(n[0]);r.auth=i.username||"",i.password&&(r.auth+=":"+i.password)}}return r}return{protocol:"git+ssh:",slashes:!0,auth:e[1],host:e[2],port:null,hostname:e[2],hash:e[4],search:null,query:null,pathname:"/"+e[3],path:"/"+e[3],href:"git+ssh://"+e[1]+"@"+e[2]+"/"+e[3]+(e[4]||"")}}});var Fu=d((uF,Vm)=>{Vm.exports=function(){var t=Error.prepareStackTrace;Error.prepareStackTrace=function(r,n){return n};var e=new Error().stack;return Error.prepareStackTrace=t,e[2].getFileName()}});var Xm=d((cF,Ni)=>{"use strict";var fC=process.platform==="win32",hC=/^([a-zA-Z]:|[\\\/]{2}[^\\\/]+[\\\/]+[^\\\/]+)?([\\\/])?([\s\S]*?)$/,pC=/^([\s\S]*?)((?:\.{1,2}|[^\\\/]+?|)(\.[^.\/\\]*|))(?:[\\\/]*)$/,ku={};function dC(t){var e=hC.exec(t),r=(e[1]||"")+(e[2]||""),n=e[3]||"",i=pC.exec(n),s=i[1],o=i[2],a=i[3];return[r,s,o,a]}ku.parse=function(t){if(typeof t!="string")throw new TypeError("Parameter 'pathString' must be a string, not "+typeof t);var e=dC(t);if(!e||e.length!==4)throw new TypeError("Invalid path '"+t+"'");return{root:e[0],dir:e[0]+e[1].slice(0,-1),base:e[2],ext:e[3],name:e[2].slice(0,e[2].length-e[3].length)}};var mC=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/,qu={};function gC(t){return mC.exec(t).slice(1)}qu.parse=function(t){if(typeof t!="string")throw new TypeError("Parameter 'pathString' must be a string, not "+typeof t);var e=gC(t);if(!e||e.length!==4)throw new TypeError("Invalid path '"+t+"'");return e[1]=e[1]||"",e[2]=e[2]||"",e[3]=e[3]||"",{root:e[0],dir:e[0]+e[1].slice(0,-1),base:e[2],ext:e[3],name:e[2].slice(0,e[2].length-e[3].length)}};fC?Ni.exports=ku.parse:Ni.exports=qu.parse;Ni.exports.posix=qu.parse;Ni.exports.win32=ku.parse});var ju=d((lF,Km)=>{var Zm=require("path"),Jm=Zm.parse||Xm(),Qm=function(e,r){var n="/";/^([A-Za-z]:)/.test(e)?n="":/^\\\\/.test(e)&&(n="\\\\");for(var i=[e],s=Jm(e);s.dir!==i[i.length-1];)i.push(s.dir),s=Jm(s.dir);return i.reduce(function(o,a){return o.concat(r.map(function(u){return Zm.resolve(n,a,u)}))},[])};Km.exports=function(e,r,n){var i=r&&r.moduleDirectory?[].concat(r.moduleDirectory):["node_modules"];if(r&&typeof r.paths=="function")return r.paths(n,e,function(){return Qm(e,i)},r);var s=Qm(e,i);return r&&r.paths?s.concat(r.paths):s}});var $u=d((fF,e0)=>{e0.exports=function(t,e){return e||{}}});var r0=d((hF,t0)=>{"use strict";var yC="Function.prototype.bind called on incompatible ",Mu=Array.prototype.slice,vC=Object.prototype.toString,bC="[object Function]";t0.exports=function(e){var r=this;if(typeof r!="function"||vC.call(r)!==bC)throw new TypeError(yC+r);for(var n=Mu.call(arguments,1),i,s=function(){if(this instanceof i){var l=r.apply(this,n.concat(Mu.call(arguments)));return Object(l)===l?l:this}else return r.apply(e,n.concat(Mu.call(arguments)))},o=Math.max(0,r.length-n.length),a=[],u=0;u{"use strict";var EC=r0();n0.exports=Function.prototype.bind||EC});var o0=d((dF,s0)=>{"use strict";var wC=i0();s0.exports=wC.call(Function.call,Object.prototype.hasOwnProperty)});var u0=d((mF,a0)=>{a0.exports={assert:!0,"assert/strict":">= 15",async_hooks:">= 8",buffer_ieee754:"< 0.9.7",buffer:!0,child_process:!0,cluster:!0,console:!0,constants:!0,crypto:!0,_debug_agent:">= 1 && < 8",_debugger:"< 8",dgram:!0,diagnostics_channel:">= 15.1",dns:!0,"dns/promises":">= 15",domain:">= 0.7.12",events:!0,freelist:"< 6",fs:!0,"fs/promises":[">= 10 && < 10.1",">= 14"],_http_agent:">= 0.11.1",_http_client:">= 0.11.1",_http_common:">= 0.11.1",_http_incoming:">= 0.11.1",_http_outgoing:">= 0.11.1",_http_server:">= 0.11.1",http:!0,http2:">= 8.8",https:!0,inspector:">= 8.0.0",_linklist:"< 8",module:!0,net:!0,"node-inspect/lib/_inspect":">= 7.6.0 && < 12","node-inspect/lib/internal/inspect_client":">= 7.6.0 && < 12","node-inspect/lib/internal/inspect_repl":">= 7.6.0 && < 12",os:!0,path:!0,"path/posix":">= 15.3","path/win32":">= 15.3",perf_hooks:">= 8.5",process:">= 1",punycode:!0,querystring:!0,readline:!0,repl:!0,smalloc:">= 0.11.5 && < 3",_stream_duplex:">= 0.9.4",_stream_transform:">= 0.9.4",_stream_wrap:">= 1.4.1",_stream_passthrough:">= 0.9.4",_stream_readable:">= 0.9.4",_stream_writable:">= 0.9.4",stream:!0,"stream/promises":">= 15",string_decoder:!0,sys:[">= 0.6 && < 0.7",">= 0.8"],timers:!0,"timers/promises":">= 15",_tls_common:">= 0.11.13",_tls_legacy:">= 0.11.3 && < 10",_tls_wrap:">= 0.11.3",tls:!0,trace_events:">= 10",tty:!0,url:!0,util:!0,"util/types":">= 15.3","v8/tools/arguments":">= 10 && < 12","v8/tools/codemap":[">= 4.4.0 && < 5",">= 5.2.0 && < 12"],"v8/tools/consarray":[">= 4.4.0 && < 5",">= 5.2.0 && < 12"],"v8/tools/csvparser":[">= 4.4.0 && < 5",">= 5.2.0 && < 12"],"v8/tools/logreader":[">= 4.4.0 && < 5",">= 5.2.0 && < 12"],"v8/tools/profile_view":[">= 4.4.0 && < 5",">= 5.2.0 && < 12"],"v8/tools/splaytree":[">= 4.4.0 && < 5",">= 5.2.0 && < 12"],v8:">= 1",vm:!0,wasi:">= 13.4 && < 13.5",worker_threads:">= 11.7",zlib:!0}});var Qs=d((gF,c0)=>{"use strict";var SC=o0();function OC(t,e){for(var r=t.split("."),n=e.split(" "),i=n.length>1?n[0]:"=",s=(n.length>1?n[1]:n[0]).split("."),o=0;o<3;++o){var a=parseInt(r[o]||0,10),u=parseInt(s[o]||0,10);if(a!==u)return i==="<"?a="?a>=u:!1}return i===">="}function l0(t,e){var r=e.split(/ ?&& ?/);if(r.length===0)return!1;for(var n=0;n{var Mr=require("fs"),we=require("path"),_C=Fu(),CC=ju(),AC=$u(),LC=Qs(),TC=Mr.realpath&&typeof Mr.realpath.native=="function"?Mr.realpath.native:Mr.realpath,xC=function(e,r){Mr.stat(e,function(n,i){return n?n.code==="ENOENT"||n.code==="ENOTDIR"?r(null,!1):r(n):r(null,i.isFile()||i.isFIFO())})},NC=function(e,r){Mr.stat(e,function(n,i){return n?n.code==="ENOENT"||n.code==="ENOTDIR"?r(null,!1):r(n):r(null,i.isDirectory())})},IC=function(e,r){TC(e,function(n,i){n&&n.code!=="ENOENT"?r(n):r(null,n?e:i)})},Ii=function(e,r,n,i){n&&n.preserveSymlinks===!1?e(r,i):i(null,r)},PC=function(e,r,n){for(var i=CC(r,n,e),s=0;s{d0.exports={assert:!0,"assert/strict":">= 15",async_hooks:">= 8",buffer_ieee754:"< 0.9.7",buffer:!0,child_process:!0,cluster:!0,console:!0,constants:!0,crypto:!0,_debug_agent:">= 1 && < 8",_debugger:"< 8",dgram:!0,diagnostics_channel:">= 15.1",dns:!0,"dns/promises":">= 15",domain:">= 0.7.12",events:!0,freelist:"< 6",fs:!0,"fs/promises":[">= 10 && < 10.1",">= 14"],_http_agent:">= 0.11.1",_http_client:">= 0.11.1",_http_common:">= 0.11.1",_http_incoming:">= 0.11.1",_http_outgoing:">= 0.11.1",_http_server:">= 0.11.1",http:!0,http2:">= 8.8",https:!0,inspector:">= 8.0.0",_linklist:"< 8",module:!0,net:!0,"node-inspect/lib/_inspect":">= 7.6.0 && < 12","node-inspect/lib/internal/inspect_client":">= 7.6.0 && < 12","node-inspect/lib/internal/inspect_repl":">= 7.6.0 && < 12",os:!0,path:!0,perf_hooks:">= 8.5",process:">= 1",punycode:!0,querystring:!0,readline:!0,repl:!0,smalloc:">= 0.11.5 && < 3",_stream_duplex:">= 0.9.4",_stream_transform:">= 0.9.4",_stream_wrap:">= 1.4.1",_stream_passthrough:">= 0.9.4",_stream_readable:">= 0.9.4",_stream_writable:">= 0.9.4",stream:!0,"stream/promises":">= 15",string_decoder:!0,sys:[">= 0.6 && < 0.7",">= 0.8"],timers:!0,"timers/promises":">= 15",_tls_common:">= 0.11.13",_tls_legacy:">= 0.11.3 && < 10",_tls_wrap:">= 0.11.3",tls:!0,trace_events:">= 10",tty:!0,url:!0,util:!0,"v8/tools/arguments":">= 10 && < 12","v8/tools/codemap":[">= 4.4.0 && < 5",">= 5.2.0 && < 12"],"v8/tools/consarray":[">= 4.4.0 && < 5",">= 5.2.0 && < 12"],"v8/tools/csvparser":[">= 4.4.0 && < 5",">= 5.2.0 && < 12"],"v8/tools/logreader":[">= 4.4.0 && < 5",">= 5.2.0 && < 12"],"v8/tools/profile_view":[">= 4.4.0 && < 5",">= 5.2.0 && < 12"],"v8/tools/splaytree":[">= 4.4.0 && < 5",">= 5.2.0 && < 12"],v8:">= 1",vm:!0,wasi:">= 13.4 && < 13.5",worker_threads:">= 11.7",zlib:!0}});var b0=d((bF,g0)=>{var DC=process.versions&&process.versions.node&&process.versions.node.split(".")||[];function FC(t){for(var e=t.split(" "),r=e.length>1?e[0]:"=",n=(e.length>1?e[1]:e[0]).split("."),i=0;i<3;++i){var s=parseInt(DC[i]||0,10),o=parseInt(n[i]||0,10);if(s!==o)return r==="<"?s="?s>=o:!1}return r===">="}function y0(t){var e=t.split(/ ?&& ?/);if(e.length===0)return!1;for(var r=0;r{var qC=Qs();E0.exports=function(e){return qC(e)}});var O0=d((wF,S0)=>{var jC=Qs(),Br=require("fs"),Je=require("path"),$C=Fu(),MC=ju(),BC=$u(),UC=Br.realpathSync&&typeof Br.realpathSync.native=="function"?Br.realpathSync.native:Br.realpathSync,GC=function(e){try{var r=Br.statSync(e)}catch(n){if(n&&(n.code==="ENOENT"||n.code==="ENOTDIR"))return!1;throw n}return r.isFile()||r.isFIFO()},zC=function(e){try{var r=Br.statSync(e)}catch(n){if(n&&(n.code==="ENOENT"||n.code==="ENOTDIR"))return!1;throw n}return r.isDirectory()},HC=function(e){try{return UC(e)}catch(r){if(r.code!=="ENOENT")throw r}return e},Pi=function(e,r,n){return n&&n.preserveSymlinks===!1?e(r):r},WC=function(e,r,n){for(var i=MC(r,n,e),s=0;s{var eo=p0();eo.core=b0();eo.isCore=w0();eo.sync=O0();R0.exports=eo});var C0=d((OF,_0)=>{_0.exports=YC;function YC(t){if(!!t&&t!=="ERROR: No README data found!"){t=t.trim().split(` +`);for(var e=0;t[e]&&t[e].trim().match(/^(#|$)/);e++);for(var r=t.length,n=e+1;n{A0.exports={topLevel:{dependancies:"dependencies",dependecies:"dependencies",depdenencies:"dependencies",devEependencies:"devDependencies",depends:"dependencies","dev-dependencies":"devDependencies",devDependences:"devDependencies",devDepenencies:"devDependencies",devdependencies:"devDependencies",repostitory:"repository",repo:"repository",prefereGlobal:"preferGlobal",hompage:"homepage",hampage:"homepage",autohr:"author",autor:"author",contributers:"contributors",publicationConfig:"publishConfig",script:"scripts"},bugs:{web:"url",name:"url"},script:{server:"start",tests:"test"}}});var I0=d((CF,T0)=>{var x0=vm(),VC=Nu(),to=Ym(),XC=Gu().isCore,KC=["dependencies","devDependencies","optionalDependencies"],ZC=C0(),zu=require("url"),fr=L0(),_F=T0.exports={warn:function(){},fixRepositoryField:function(t){if(t.repositories&&(this.warn("repositories"),t.repository=t.repositories[0]),!t.repository)return this.warn("missingRepository");typeof t.repository=="string"&&(t.repository={type:"git",url:t.repository});var e=t.repository.url||"";if(e){var r=to.fromUrl(e);r&&(e=t.repository.url=r.getDefaultRepresentation()=="shortcut"?r.https():r.toString())}e.match(/github.com\/[^\/]+\/[^\/]+\.git\.git$/)&&this.warn("brokenGitUrl",e)},fixTypos:function(t){Object.keys(fr.topLevel).forEach(function(e){t.hasOwnProperty(e)&&this.warn("typo",e,fr.topLevel[e])},this)},fixScriptsField:function(t){if(!!t.scripts){if(typeof t.scripts!="object"){this.warn("nonObjectScripts"),delete t.scripts;return}Object.keys(t.scripts).forEach(function(e){typeof t.scripts[e]!="string"?(this.warn("nonStringScript"),delete t.scripts[e]):fr.script[e]&&!t.scripts[fr.script[e]]&&this.warn("typo",e,fr.script[e],"scripts")},this)}},fixFilesField:function(t){var e=t.files;e&&!Array.isArray(e)?(this.warn("nonArrayFiles"),delete t.files):t.files&&(t.files=t.files.filter(function(r){return!r||typeof r!="string"?(this.warn("invalidFilename",r),!1):!0},this))},fixBinField:function(t){if(!!t.bin&&typeof t.bin=="string"){var e={},r;(r=t.name.match(/^@[^/]+[/](.*)$/))?e[r[1]]=t.bin:e[t.name]=t.bin,t.bin=e}},fixManField:function(t){!t.man||typeof t.man=="string"&&(t.man=[t.man])},fixBundleDependenciesField:function(t){var e="bundledDependencies",r="bundleDependencies";t[e]&&!t[r]&&(t[r]=t[e],delete t[e]),t[r]&&!Array.isArray(t[r])?(this.warn("nonArrayBundleDependencies"),delete t[r]):t[r]&&(t[r]=t[r].filter(function(n){return!n||typeof n!="string"?(this.warn("nonStringBundleDependency",n),!1):(t.dependencies||(t.dependencies={}),t.dependencies.hasOwnProperty(n)||(this.warn("nonDependencyBundleDependency",n),t.dependencies[n]="*"),!0)},this))},fixDependencies:function(t,e){var r=!e;rA(t,this.warn),tA(t,this.warn),this.fixBundleDependenciesField(t),["dependencies","devDependencies"].forEach(function(n){if(n in t){if(!t[n]||typeof t[n]!="object"){this.warn("nonObjectDependencies",n),delete t[n];return}Object.keys(t[n]).forEach(function(i){var s=t[n][i];typeof s!="string"&&(this.warn("nonStringDependency",i,JSON.stringify(s)),delete t[n][i]);var o=to.fromUrl(t[n][i]);o&&(t[n][i]=o.toString())},this)}},this)},fixModulesField:function(t){t.modules&&(this.warn("deprecatedModules"),delete t.modules)},fixKeywordsField:function(t){typeof t.keywords=="string"&&(t.keywords=t.keywords.split(/,\s+/)),t.keywords&&!Array.isArray(t.keywords)?(delete t.keywords,this.warn("nonArrayKeywords")):t.keywords&&(t.keywords=t.keywords.filter(function(e){return typeof e!="string"||!e?(this.warn("nonStringKeyword"),!1):!0},this))},fixVersionField:function(t,e){var r=!e;if(!t.version)return t.version="",!0;if(!x0.valid(t.version,r))throw new Error('Invalid version: "'+t.version+'"');return t.version=x0.clean(t.version,r),!0},fixPeople:function(t){N0(t,QC),N0(t,eA)},fixNameField:function(t,e){typeof e=="boolean"?e={strict:e}:typeof e=="undefined"&&(e={});var r=e.strict;if(!t.name&&!r){t.name="";return}if(typeof t.name!="string")throw new Error("name field must be a string.");r||(t.name=t.name.trim()),JC(t.name,r,e.allowLegacyCase),XC(t.name)&&this.warn("conflictingName",t.name)},fixDescriptionField:function(t){t.description&&typeof t.description!="string"&&(this.warn("nonStringDescription"),delete t.description),t.readme&&!t.description&&(t.description=ZC(t.readme)),t.description===void 0&&delete t.description,t.description||this.warn("missingDescription")},fixReadmeField:function(t){t.readme||(this.warn("missingReadme"),t.readme="ERROR: No README data found!")},fixBugsField:function(t){if(!t.bugs&&t.repository&&t.repository.url){var e=to.fromUrl(t.repository.url);e&&e.bugs()&&(t.bugs={url:e.bugs()})}else if(t.bugs){var r=/^.+@.*\..+$/;if(typeof t.bugs=="string")r.test(t.bugs)?t.bugs={email:t.bugs}:zu.parse(t.bugs).protocol?t.bugs={url:t.bugs}:this.warn("nonEmailUrlBugsString");else{nA(t.bugs,this.warn);var n=t.bugs;t.bugs={},n.url&&(typeof n.url=="string"&&zu.parse(n.url).protocol?t.bugs.url=n.url:this.warn("nonUrlBugsUrlField")),n.email&&(typeof n.email=="string"&&r.test(n.email)?t.bugs.email=n.email:this.warn("nonEmailBugsEmailField"))}!t.bugs.email&&!t.bugs.url&&(delete t.bugs,this.warn("emptyNormalizedBugs"))}},fixHomepageField:function(t){if(!t.homepage&&t.repository&&t.repository.url){var e=to.fromUrl(t.repository.url);e&&e.docs()&&(t.homepage=e.docs())}if(!!t.homepage){if(typeof t.homepage!="string")return this.warn("nonUrlHomepage"),delete t.homepage;zu.parse(t.homepage).protocol||(t.homepage="http://"+t.homepage)}},fixLicenseField:function(t){if(t.license)typeof t.license!="string"||t.license.length<1||t.license.trim()===""?this.warn("invalidLicense"):VC(t.license).validForNewPackages||this.warn("invalidLicense");else return this.warn("missingLicense")}};function iA(t){if(t.charAt(0)!=="@")return!1;var e=t.slice(1).split("/");return e.length!==2?!1:e[0]&&e[1]&&e[0]===encodeURIComponent(e[0])&&e[1]===encodeURIComponent(e[1])}function sA(t){return!t.match(/[\/@\s\+%:]/)&&t===encodeURIComponent(t)}function JC(t,e,r){if(t.charAt(0)==="."||!(iA(t)||sA(t))||e&&!r&&t!==t.toLowerCase()||t.toLowerCase()==="node_modules"||t.toLowerCase()==="favicon.ico")throw new Error("Invalid name: "+JSON.stringify(t))}function N0(t,e){return t.author&&(t.author=e(t.author)),["maintainers","contributors"].forEach(function(r){!Array.isArray(t[r])||(t[r]=t[r].map(e))}),t}function QC(t){if(typeof t=="string")return t;var e=t.name||"",r=t.url||t.web,n=r?" ("+r+")":"",i=t.email||t.mail,s=i?" <"+i+">":"";return e+s+n}function eA(t){if(typeof t!="string")return t;var e=t.match(/^([^\(<]+)/),r=t.match(/\(([^\)]+)\)/),n=t.match(/<([^>]+)>/),i={};return e&&e[0].trim()&&(i.name=e[0].trim()),n&&(i.email=n[1]),r&&(i.url=r[1]),i}function tA(t,e){var r=t.optionalDependencies;if(!!r){var n=t.dependencies||{};Object.keys(r).forEach(function(i){n[i]=r[i]}),t.dependencies=n}}function oA(t,e,r){if(!t)return{};if(typeof t=="string"&&(t=t.trim().split(/[\n\r\s\t ,]+/)),!Array.isArray(t))return t;r("deprecatedArrayDependencies",e);var n={};return t.filter(function(i){return typeof i=="string"}).forEach(function(i){i=i.trim().split(/(:?[@\s><=])/);var s=i.shift(),o=i.join("");o=o.trim(),o=o.replace(/^@/,""),n[s]=o}),n}function rA(t,e){KC.forEach(function(r){!t[r]||(t[r]=oA(t[r],r,e))})}function nA(t,e){!t||Object.keys(t).forEach(function(r){fr.bugs[r]&&(e("typo",r,fr.bugs[r],"bugs"),t[fr.bugs[r]]=t[r],delete t[r])})}});var D0=d((AF,P0)=>{P0.exports={repositories:"'repositories' (plural) Not supported. Please pick one as the 'repository' field",missingRepository:"No repository field.",brokenGitUrl:"Probably broken git url: %s",nonObjectScripts:"scripts must be an object",nonStringScript:"script values must be string commands",nonArrayFiles:"Invalid 'files' member",invalidFilename:"Invalid filename in 'files' list: %s",nonArrayBundleDependencies:"Invalid 'bundleDependencies' list. Must be array of package names",nonStringBundleDependency:"Invalid bundleDependencies member: %s",nonDependencyBundleDependency:"Non-dependency in bundleDependencies: %s",nonObjectDependencies:"%s field must be an object",nonStringDependency:"Invalid dependency: %s %s",deprecatedArrayDependencies:"specifying %s as array is deprecated",deprecatedModules:"modules field is deprecated",nonArrayKeywords:"keywords should be an array of strings",nonStringKeyword:"keywords should be an array of strings",conflictingName:"%s is also the name of a node core module.",nonStringDescription:"'description' field should be a string",missingDescription:"No description",missingReadme:"No README data",missingLicense:"No license field.",nonEmailUrlBugsString:"Bug string field must be url, email, or {email,url}",nonUrlBugsUrlField:"bugs.url field must be a string url. Deleted.",nonEmailBugsEmailField:"bugs.email field must be a string email. Deleted.",emptyNormalizedBugs:"Normalized value of bugs field is an empty object. Deleted.",nonUrlHomepage:"homepage field must be a string url. Deleted.",invalidLicense:"license should be a valid SPDX license expression",typo:"%s should probably be %s."}});var q0=d((LF,F0)=>{var k0=require("util"),Hu=D0();F0.exports=function(){var t=Array.prototype.slice.call(arguments,0),e=t.shift();if(e=="typo")return aA.apply(null,t);var r=Hu[e]?Hu[e]:e+": '%s'";return t.unshift(r),k0.format.apply(null,t)};function aA(t,e,r){return r&&(t=r+"['"+t+"']",e=r+"['"+e+"']"),k0.format(Hu.typo,t,e)}});var Vu=d((TF,j0)=>{j0.exports=$0;var Wu=I0();$0.fixer=Wu;var uA=q0(),cA=["name","version","description","repository","modules","scripts","files","bin","man","bugs","keywords","readme","homepage","license"],lA=["dependencies","people","typos"],Yu=cA.map(function(t){return M0(t)+"Field"});Yu=Yu.concat(lA);function $0(t,e,r){e===!0&&(e=null,r=!0),r||(r=!1),(!e||t.private)&&(e=function(n){}),t.scripts&&t.scripts.install==="node-gyp rebuild"&&!t.scripts.preinstall&&(t.gypfile=!0),Wu.warn=function(){e(uA.apply(null,arguments))},Yu.forEach(function(n){Wu["fix"+M0(n)](t,r)}),t._id=t.name+"@"+t.version}function M0(t){return t.charAt(0).toUpperCase()+t.slice(1)}});var z0=d((xF,Xu)=>{"use strict";var{promisify:fA}=require("util"),B0=require("fs"),U0=require("path"),G0=tm(),hA=fA(B0.readFile);Xu.exports=async t=>{t={cwd:process.cwd(),normalize:!0,...t};let e=U0.resolve(t.cwd,"package.json"),r=G0(await hA(e,"utf8"));return t.normalize&&Vu()(r),r};Xu.exports.sync=t=>{t={cwd:process.cwd(),normalize:!0,...t};let e=U0.resolve(t.cwd,"package.json"),r=G0(B0.readFileSync(e,"utf8"));return t.normalize&&Vu()(r),r}});var V0=d((NF,Ku)=>{"use strict";var H0=require("path"),W0=Hp(),Y0=z0();Ku.exports=async t=>{let e=await W0("package.json",t);if(!!e)return{packageJson:await Y0({...t,cwd:H0.dirname(e)}),path:e}};Ku.exports.sync=t=>{let e=W0.sync("package.json",t);if(!!e)return{packageJson:Y0.sync({...t,cwd:H0.dirname(e)}),path:e}}});var Z0=d((IF,Zu)=>{"use strict";var pA=require("util"),X0=!1,K0=(t=console.error)=>{X0||(X0=!0,process.on("unhandledRejection",e=>{e instanceof Error||(e=new Error(`Promise rejected with value: ${pA.inspect(e)}`)),t(e.stack),process.exit(1)}))};Zu.exports=K0;Zu.exports.default=K0});var Di=d((PF,J0)=>{var dA="2.0.0",mA=256,gA=Number.MAX_SAFE_INTEGER||9007199254740991,yA=16;J0.exports={SEMVER_SPEC_VERSION:dA,MAX_LENGTH:mA,MAX_SAFE_INTEGER:gA,MAX_SAFE_COMPONENT_LENGTH:yA}});var Fi=d((DF,Q0)=>{var vA=typeof process=="object"&&process.env&&process.env.NODE_DEBUG&&/\bsemver\b/i.test(process.env.NODE_DEBUG)?(...t)=>console.error("SEMVER",...t):()=>{};Q0.exports=vA});var Ur=d((hr,eg)=>{var{MAX_SAFE_COMPONENT_LENGTH:Ju}=Di(),bA=Fi();hr=eg.exports={};var EA=hr.re=[],I=hr.src=[],P=hr.t={},wA=0,z=(t,e,r)=>{let n=wA++;bA(n,e),P[t]=n,I[n]=e,EA[n]=new RegExp(e,r?"g":void 0)};z("NUMERICIDENTIFIER","0|[1-9]\\d*");z("NUMERICIDENTIFIERLOOSE","[0-9]+");z("NONNUMERICIDENTIFIER","\\d*[a-zA-Z-][a-zA-Z0-9-]*");z("MAINVERSION",`(${I[P.NUMERICIDENTIFIER]})\\.(${I[P.NUMERICIDENTIFIER]})\\.(${I[P.NUMERICIDENTIFIER]})`);z("MAINVERSIONLOOSE",`(${I[P.NUMERICIDENTIFIERLOOSE]})\\.(${I[P.NUMERICIDENTIFIERLOOSE]})\\.(${I[P.NUMERICIDENTIFIERLOOSE]})`);z("PRERELEASEIDENTIFIER",`(?:${I[P.NUMERICIDENTIFIER]}|${I[P.NONNUMERICIDENTIFIER]})`);z("PRERELEASEIDENTIFIERLOOSE",`(?:${I[P.NUMERICIDENTIFIERLOOSE]}|${I[P.NONNUMERICIDENTIFIER]})`);z("PRERELEASE",`(?:-(${I[P.PRERELEASEIDENTIFIER]}(?:\\.${I[P.PRERELEASEIDENTIFIER]})*))`);z("PRERELEASELOOSE",`(?:-?(${I[P.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${I[P.PRERELEASEIDENTIFIERLOOSE]})*))`);z("BUILDIDENTIFIER","[0-9A-Za-z-]+");z("BUILD",`(?:\\+(${I[P.BUILDIDENTIFIER]}(?:\\.${I[P.BUILDIDENTIFIER]})*))`);z("FULLPLAIN",`v?${I[P.MAINVERSION]}${I[P.PRERELEASE]}?${I[P.BUILD]}?`);z("FULL",`^${I[P.FULLPLAIN]}$`);z("LOOSEPLAIN",`[v=\\s]*${I[P.MAINVERSIONLOOSE]}${I[P.PRERELEASELOOSE]}?${I[P.BUILD]}?`);z("LOOSE",`^${I[P.LOOSEPLAIN]}$`);z("GTLT","((?:<|>)?=?)");z("XRANGEIDENTIFIERLOOSE",`${I[P.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`);z("XRANGEIDENTIFIER",`${I[P.NUMERICIDENTIFIER]}|x|X|\\*`);z("XRANGEPLAIN",`[v=\\s]*(${I[P.XRANGEIDENTIFIER]})(?:\\.(${I[P.XRANGEIDENTIFIER]})(?:\\.(${I[P.XRANGEIDENTIFIER]})(?:${I[P.PRERELEASE]})?${I[P.BUILD]}?)?)?`);z("XRANGEPLAINLOOSE",`[v=\\s]*(${I[P.XRANGEIDENTIFIERLOOSE]})(?:\\.(${I[P.XRANGEIDENTIFIERLOOSE]})(?:\\.(${I[P.XRANGEIDENTIFIERLOOSE]})(?:${I[P.PRERELEASELOOSE]})?${I[P.BUILD]}?)?)?`);z("XRANGE",`^${I[P.GTLT]}\\s*${I[P.XRANGEPLAIN]}$`);z("XRANGELOOSE",`^${I[P.GTLT]}\\s*${I[P.XRANGEPLAINLOOSE]}$`);z("COERCE",`(^|[^\\d])(\\d{1,${Ju}})(?:\\.(\\d{1,${Ju}}))?(?:\\.(\\d{1,${Ju}}))?(?:$|[^\\d])`);z("COERCERTL",I[P.COERCE],!0);z("LONETILDE","(?:~>?)");z("TILDETRIM",`(\\s*)${I[P.LONETILDE]}\\s+`,!0);hr.tildeTrimReplace="$1~";z("TILDE",`^${I[P.LONETILDE]}${I[P.XRANGEPLAIN]}$`);z("TILDELOOSE",`^${I[P.LONETILDE]}${I[P.XRANGEPLAINLOOSE]}$`);z("LONECARET","(?:\\^)");z("CARETTRIM",`(\\s*)${I[P.LONECARET]}\\s+`,!0);hr.caretTrimReplace="$1^";z("CARET",`^${I[P.LONECARET]}${I[P.XRANGEPLAIN]}$`);z("CARETLOOSE",`^${I[P.LONECARET]}${I[P.XRANGEPLAINLOOSE]}$`);z("COMPARATORLOOSE",`^${I[P.GTLT]}\\s*(${I[P.LOOSEPLAIN]})$|^$`);z("COMPARATOR",`^${I[P.GTLT]}\\s*(${I[P.FULLPLAIN]})$|^$`);z("COMPARATORTRIM",`(\\s*)${I[P.GTLT]}\\s*(${I[P.LOOSEPLAIN]}|${I[P.XRANGEPLAIN]})`,!0);hr.comparatorTrimReplace="$1$2$3";z("HYPHENRANGE",`^\\s*(${I[P.XRANGEPLAIN]})\\s+-\\s+(${I[P.XRANGEPLAIN]})\\s*$`);z("HYPHENRANGELOOSE",`^\\s*(${I[P.XRANGEPLAINLOOSE]})\\s+-\\s+(${I[P.XRANGEPLAINLOOSE]})\\s*$`);z("STAR","(<|>)?=?\\s*\\*");z("GTE0","^\\s*>=\\s*0.0.0\\s*$");z("GTE0PRE","^\\s*>=\\s*0.0.0-0\\s*$")});var ki=d((FF,tg)=>{var SA=["includePrerelease","loose","rtl"],OA=t=>t?typeof t!="object"?{loose:!0}:SA.filter(e=>t[e]).reduce((e,r)=>(e[r]=!0,e),{}):{};tg.exports=OA});var ro=d((kF,rg)=>{var ng=/^[0-9]+$/,ig=(t,e)=>{let r=ng.test(t),n=ng.test(e);return r&&n&&(t=+t,e=+e),t===e?0:r&&!n?-1:n&&!r?1:tig(e,t);rg.exports={compareIdentifiers:ig,rcompareIdentifiers:RA}});var De=d((qF,sg)=>{var no=Fi(),{MAX_LENGTH:og,MAX_SAFE_INTEGER:io}=Di(),{re:ag,t:ug}=Ur(),_A=ki(),{compareIdentifiers:qi}=ro(),lt=class{constructor(e,r){if(r=_A(r),e instanceof lt){if(e.loose===!!r.loose&&e.includePrerelease===!!r.includePrerelease)return e;e=e.version}else if(typeof e!="string")throw new TypeError(`Invalid Version: ${e}`);if(e.length>og)throw new TypeError(`version is longer than ${og} characters`);no("SemVer",e,r),this.options=r,this.loose=!!r.loose,this.includePrerelease=!!r.includePrerelease;let n=e.trim().match(r.loose?ag[ug.LOOSE]:ag[ug.FULL]);if(!n)throw new TypeError(`Invalid Version: ${e}`);if(this.raw=e,this.major=+n[1],this.minor=+n[2],this.patch=+n[3],this.major>io||this.major<0)throw new TypeError("Invalid major version");if(this.minor>io||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>io||this.patch<0)throw new TypeError("Invalid patch version");n[4]?this.prerelease=n[4].split(".").map(i=>{if(/^[0-9]+$/.test(i)){let s=+i;if(s>=0&&s=0;)typeof this.prerelease[n]=="number"&&(this.prerelease[n]++,n=-2);n===-1&&this.prerelease.push(0)}r&&(this.prerelease[0]===r?isNaN(this.prerelease[1])&&(this.prerelease=[r,0]):this.prerelease=[r,0]);break;default:throw new Error(`invalid increment argument: ${e}`)}return this.format(),this.raw=this.version,this}};sg.exports=lt});var Gr=d((jF,cg)=>{var{MAX_LENGTH:CA}=Di(),{re:lg,t:fg}=Ur(),hg=De(),AA=ki(),LA=(t,e)=>{if(e=AA(e),t instanceof hg)return t;if(typeof t!="string"||t.length>CA||!(e.loose?lg[fg.LOOSE]:lg[fg.FULL]).test(t))return null;try{return new hg(t,e)}catch(n){return null}};cg.exports=LA});var dg=d(($F,pg)=>{var TA=Gr(),xA=(t,e)=>{let r=TA(t,e);return r?r.version:null};pg.exports=xA});var gg=d((MF,mg)=>{var NA=Gr(),IA=(t,e)=>{let r=NA(t.trim().replace(/^[=v]+/,""),e);return r?r.version:null};mg.exports=IA});var vg=d((BF,yg)=>{var PA=De(),DA=(t,e,r,n)=>{typeof r=="string"&&(n=r,r=void 0);try{return new PA(t,r).inc(e,n).version}catch(i){return null}};yg.exports=DA});var ft=d((UF,bg)=>{var Eg=De(),FA=(t,e,r)=>new Eg(t,r).compare(new Eg(e,r));bg.exports=FA});var so=d((GF,wg)=>{var kA=ft(),qA=(t,e,r)=>kA(t,e,r)===0;wg.exports=qA});var Rg=d((zF,Sg)=>{var Og=Gr(),jA=so(),$A=(t,e)=>{if(jA(t,e))return null;{let r=Og(t),n=Og(e),i=r.prerelease.length||n.prerelease.length,s=i?"pre":"",o=i?"prerelease":"";for(let a in r)if((a==="major"||a==="minor"||a==="patch")&&r[a]!==n[a])return s+a;return o}};Sg.exports=$A});var Cg=d((HF,_g)=>{var MA=De(),BA=(t,e)=>new MA(t,e).major;_g.exports=BA});var Lg=d((WF,Ag)=>{var UA=De(),GA=(t,e)=>new UA(t,e).minor;Ag.exports=GA});var xg=d((YF,Tg)=>{var zA=De(),HA=(t,e)=>new zA(t,e).patch;Tg.exports=HA});var Ig=d((VF,Ng)=>{var WA=Gr(),YA=(t,e)=>{let r=WA(t,e);return r&&r.prerelease.length?r.prerelease:null};Ng.exports=YA});var Dg=d((XF,Pg)=>{var VA=ft(),XA=(t,e,r)=>VA(e,t,r);Pg.exports=XA});var kg=d((KF,Fg)=>{var KA=ft(),ZA=(t,e)=>KA(t,e,!0);Fg.exports=ZA});var oo=d((ZF,qg)=>{var jg=De(),JA=(t,e,r)=>{let n=new jg(t,r),i=new jg(e,r);return n.compare(i)||n.compareBuild(i)};qg.exports=JA});var Mg=d((JF,$g)=>{var QA=oo(),eL=(t,e)=>t.sort((r,n)=>QA(r,n,e));$g.exports=eL});var Ug=d((QF,Bg)=>{var tL=oo(),rL=(t,e)=>t.sort((r,n)=>tL(n,r,e));Bg.exports=rL});var ji=d((ek,Gg)=>{var nL=ft(),iL=(t,e,r)=>nL(t,e,r)>0;Gg.exports=iL});var ao=d((tk,zg)=>{var sL=ft(),oL=(t,e,r)=>sL(t,e,r)<0;zg.exports=oL});var Qu=d((rk,Hg)=>{var aL=ft(),uL=(t,e,r)=>aL(t,e,r)!==0;Hg.exports=uL});var uo=d((nk,Wg)=>{var cL=ft(),lL=(t,e,r)=>cL(t,e,r)>=0;Wg.exports=lL});var co=d((ik,Yg)=>{var fL=ft(),hL=(t,e,r)=>fL(t,e,r)<=0;Yg.exports=hL});var ec=d((sk,Vg)=>{var pL=so(),dL=Qu(),mL=ji(),gL=uo(),yL=ao(),vL=co(),bL=(t,e,r,n)=>{switch(e){case"===":return typeof t=="object"&&(t=t.version),typeof r=="object"&&(r=r.version),t===r;case"!==":return typeof t=="object"&&(t=t.version),typeof r=="object"&&(r=r.version),t!==r;case"":case"=":case"==":return pL(t,r,n);case"!=":return dL(t,r,n);case">":return mL(t,r,n);case">=":return gL(t,r,n);case"<":return yL(t,r,n);case"<=":return vL(t,r,n);default:throw new TypeError(`Invalid operator: ${e}`)}};Vg.exports=bL});var Kg=d((ok,Xg)=>{var EL=De(),wL=Gr(),{re:lo,t:fo}=Ur(),SL=(t,e)=>{if(t instanceof EL)return t;if(typeof t=="number"&&(t=String(t)),typeof t!="string")return null;e=e||{};let r=null;if(!e.rtl)r=t.match(lo[fo.COERCE]);else{let n;for(;(n=lo[fo.COERCERTL].exec(t))&&(!r||r.index+r[0].length!==t.length);)(!r||n.index+n[0].length!==r.index+r[0].length)&&(r=n),lo[fo.COERCERTL].lastIndex=n.index+n[1].length+n[2].length;lo[fo.COERCERTL].lastIndex=-1}return r===null?null:wL(`${r[2]}.${r[3]||"0"}.${r[4]||"0"}`,e)};Xg.exports=SL});var Jg=d((ak,Zg)=>{"use strict";Zg.exports=function(t){t.prototype[Symbol.iterator]=function*(){for(let e=this.head;e;e=e.next)yield e.value}}});var tc=d((uk,Qg)=>{"use strict";Qg.exports=Z;Z.Node=zr;Z.create=Z;function Z(t){var e=this;if(e instanceof Z||(e=new Z),e.tail=null,e.head=null,e.length=0,t&&typeof t.forEach=="function")t.forEach(function(i){e.push(i)});else if(arguments.length>0)for(var r=0,n=arguments.length;r1)r=e;else if(this.head)n=this.head.next,r=this.head.value;else throw new TypeError("Reduce of empty list with no initial value");for(var i=0;n!==null;i++)r=t(r,n.value,i),n=n.next;return r};Z.prototype.reduceReverse=function(t,e){var r,n=this.tail;if(arguments.length>1)r=e;else if(this.tail)n=this.tail.prev,r=this.tail.value;else throw new TypeError("Reduce of empty list with no initial value");for(var i=this.length-1;n!==null;i--)r=t(r,n.value,i),n=n.prev;return r};Z.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};Z.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};Z.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 Z;if(ethis.length&&(e=this.length);for(var n=0,i=this.head;i!==null&&nthis.length&&(e=this.length);for(var n=this.length,i=this.tail;i!==null&&n>e;n--)i=i.prev;for(;i!==null&&n>t;n--,i=i.prev)r.push(i.value);return r};Z.prototype.splice=function(t,e,...r){t>this.length&&(t=this.length-1),t<0&&(t=this.length+t);for(var n=0,i=this.head;i!==null&&n{"use strict";var CL=tc(),Hr=Symbol("max"),Gt=Symbol("length"),xn=Symbol("lengthCalculator"),$i=Symbol("allowStale"),Wr=Symbol("maxAge"),zt=Symbol("dispose"),ty=Symbol("noDisposeOnSet"),Se=Symbol("lruList"),_t=Symbol("cache"),ry=Symbol("updateAgeOnGet"),rc=()=>1,ny=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[Hr]=e.max||Infinity,n=e.length||rc;if(this[xn]=typeof n!="function"?rc:n,this[$i]=e.stale||!1,e.maxAge&&typeof e.maxAge!="number")throw new TypeError("maxAge must be a number");this[Wr]=e.maxAge||0,this[zt]=e.dispose,this[ty]=e.noDisposeOnSet||!1,this[ry]=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[Hr]=e||Infinity,Mi(this)}get max(){return this[Hr]}set allowStale(e){this[$i]=!!e}get allowStale(){return this[$i]}set maxAge(e){if(typeof e!="number")throw new TypeError("maxAge must be a non-negative number");this[Wr]=e,Mi(this)}get maxAge(){return this[Wr]}set lengthCalculator(e){typeof e!="function"&&(e=rc),e!==this[xn]&&(this[xn]=e,this[Gt]=0,this[Se].forEach(r=>{r.length=this[xn](r.value,r.key),this[Gt]+=r.length})),Mi(this)}get lengthCalculator(){return this[xn]}get length(){return this[Gt]}get itemCount(){return this[Se].length}rforEach(e,r){r=r||this;for(let n=this[Se].tail;n!==null;){let i=n.prev;sy(this,e,n,r),n=i}}forEach(e,r){r=r||this;for(let n=this[Se].head;n!==null;){let i=n.next;sy(this,e,n,r),n=i}}keys(){return this[Se].toArray().map(e=>e.key)}values(){return this[Se].toArray().map(e=>e.value)}reset(){this[zt]&&this[Se]&&this[Se].length&&this[Se].forEach(e=>this[zt](e.key,e.value)),this[_t]=new Map,this[Se]=new CL,this[Gt]=0}dump(){return this[Se].map(e=>ho(this,e)?!1:{k:e.key,v:e.value,e:e.now+(e.maxAge||0)}).toArray().filter(e=>e)}dumpLru(){return this[Se]}set(e,r,n){if(n=n||this[Wr],n&&typeof n!="number")throw new TypeError("maxAge must be a number");let i=n?Date.now():0,s=this[xn](r,e);if(this[_t].has(e)){if(s>this[Hr])return Nn(this,this[_t].get(e)),!1;let u=this[_t].get(e).value;return this[zt]&&(this[ty]||this[zt](e,u.value)),u.now=i,u.maxAge=n,u.value=r,this[Gt]+=s-u.length,u.length=s,this.get(e),Mi(this),!0}let o=new iy(e,r,s,i,n);return o.length>this[Hr]?(this[zt]&&this[zt](e,r),!1):(this[Gt]+=o.length,this[Se].unshift(o),this[_t].set(e,this[Se].head),Mi(this),!0)}has(e){if(!this[_t].has(e))return!1;let r=this[_t].get(e).value;return!ho(this,r)}get(e){return nc(this,e,!0)}peek(e){return nc(this,e,!1)}pop(){let e=this[Se].tail;return e?(Nn(this,e),e.value):null}del(e){Nn(this,this[_t].get(e))}load(e){this.reset();let r=Date.now();for(let n=e.length-1;n>=0;n--){let i=e[n],s=i.e||0;if(s===0)this.set(i.k,i.v);else{let o=s-r;o>0&&this.set(i.k,i.v,o)}}}prune(){this[_t].forEach((e,r)=>nc(this,r,!1))}},nc=(t,e,r)=>{let n=t[_t].get(e);if(n){let i=n.value;if(ho(t,i)){if(Nn(t,n),!t[$i])return}else r&&(t[ry]&&(n.value.now=Date.now()),t[Se].unshiftNode(n));return i.value}},ho=(t,e)=>{if(!e||!e.maxAge&&!t[Wr])return!1;let r=Date.now()-e.now;return e.maxAge?r>e.maxAge:t[Wr]&&r>t[Wr]},Mi=t=>{if(t[Gt]>t[Hr])for(let e=t[Se].tail;t[Gt]>t[Hr]&&e!==null;){let r=e.prev;Nn(t,e),e=r}},Nn=(t,e)=>{if(e){let r=e.value;t[zt]&&t[zt](r.key,r.value),t[Gt]-=r.length,t[_t].delete(r.key),t[Se].removeNode(e)}},iy=class{constructor(e,r,n,i,s){this.key=e,this.value=r,this.length=n,this.now=i,this.maxAge=s||0}},sy=(t,e,r,n)=>{let i=r.value;ho(t,i)&&(Nn(t,r),t[$i]||(i=void 0)),i&&e.call(n,i.value,i.key,t)};ey.exports=ny});var ht=d((lk,oy)=>{var In=class{constructor(e,r){if(r=AL(r),e instanceof In)return e.loose===!!r.loose&&e.includePrerelease===!!r.includePrerelease?e:new In(e.raw,r);if(e instanceof sc)return this.raw=e.value,this.set=[[e]],this.format(),this;if(this.options=r,this.loose=!!r.loose,this.includePrerelease=!!r.includePrerelease,this.raw=e,this.set=e.split(/\s*\|\|\s*/).map(n=>this.parseRange(n.trim())).filter(n=>n.length),!this.set.length)throw new TypeError(`Invalid SemVer Range: ${e}`);if(this.set.length>1){let n=this.set[0];if(this.set=this.set.filter(i=>!uy(i[0])),this.set.length===0)this.set=[n];else if(this.set.length>1){for(let i of this.set)if(i.length===1&&IL(i[0])){this.set=[i];break}}}this.format()}format(){return this.range=this.set.map(e=>e.join(" ").trim()).join("||").trim(),this.range}toString(){return this.range}parseRange(e){e=e.trim();let n=`parseRange:${Object.keys(this.options).join(",")}:${e}`,i=ay.get(n);if(i)return i;let s=this.options.loose,o=s?Fe[Ne.HYPHENRANGELOOSE]:Fe[Ne.HYPHENRANGE];e=e.replace(o,FL(this.options.includePrerelease)),pe("hyphen replace",e),e=e.replace(Fe[Ne.COMPARATORTRIM],TL),pe("comparator trim",e,Fe[Ne.COMPARATORTRIM]),e=e.replace(Fe[Ne.TILDETRIM],xL),e=e.replace(Fe[Ne.CARETTRIM],NL),e=e.split(/\s+/).join(" ");let a=s?Fe[Ne.COMPARATORLOOSE]:Fe[Ne.COMPARATOR],u=e.split(" ").map(p=>PL(p,this.options)).join(" ").split(/\s+/).map(p=>DL(p,this.options)).filter(this.options.loose?p=>!!p.match(a):()=>!0).map(p=>new sc(p,this.options)),c=u.length,l=new Map;for(let p of u){if(uy(p))return[p];l.set(p.value,p)}l.size>1&&l.has("")&&l.delete("");let f=[...l.values()];return ay.set(n,f),f}intersects(e,r){if(!(e instanceof In))throw new TypeError("a Range is required");return this.set.some(n=>cy(n,r)&&e.set.some(i=>cy(i,r)&&n.every(s=>i.every(o=>s.intersects(o,r)))))}test(e){if(!e)return!1;if(typeof e=="string")try{e=new LL(e,this.options)}catch(r){return!1}for(let r=0;rt.value==="<0.0.0-0",IL=t=>t.value==="",cy=(t,e)=>{let r=!0,n=t.slice(),i=n.pop();for(;r&&n.length;)r=n.every(s=>i.intersects(s,e)),i=n.pop();return r},PL=(t,e)=>(pe("comp",t,e),t=$L(t,e),pe("caret",t),t=jL(t,e),pe("tildes",t),t=ML(t,e),pe("xrange",t),t=BL(t,e),pe("stars",t),t),Ge=t=>!t||t.toLowerCase()==="x"||t==="*",jL=(t,e)=>t.trim().split(/\s+/).map(r=>UL(r,e)).join(" "),UL=(t,e)=>{let r=e.loose?Fe[Ne.TILDELOOSE]:Fe[Ne.TILDE];return t.replace(r,(n,i,s,o,a)=>{pe("tilde",t,n,i,s,o,a);let u;return Ge(i)?u="":Ge(s)?u=`>=${i}.0.0 <${+i+1}.0.0-0`:Ge(o)?u=`>=${i}.${s}.0 <${i}.${+s+1}.0-0`:a?(pe("replaceTilde pr",a),u=`>=${i}.${s}.${o}-${a} <${i}.${+s+1}.0-0`):u=`>=${i}.${s}.${o} <${i}.${+s+1}.0-0`,pe("tilde return",u),u})},$L=(t,e)=>t.trim().split(/\s+/).map(r=>GL(r,e)).join(" "),GL=(t,e)=>{pe("caret",t,e);let r=e.loose?Fe[Ne.CARETLOOSE]:Fe[Ne.CARET],n=e.includePrerelease?"-0":"";return t.replace(r,(i,s,o,a,u)=>{pe("caret",t,i,s,o,a,u);let c;return Ge(s)?c="":Ge(o)?c=`>=${s}.0.0${n} <${+s+1}.0.0-0`:Ge(a)?s==="0"?c=`>=${s}.${o}.0${n} <${s}.${+o+1}.0-0`:c=`>=${s}.${o}.0${n} <${+s+1}.0.0-0`:u?(pe("replaceCaret pr",u),s==="0"?o==="0"?c=`>=${s}.${o}.${a}-${u} <${s}.${o}.${+a+1}-0`:c=`>=${s}.${o}.${a}-${u} <${s}.${+o+1}.0-0`:c=`>=${s}.${o}.${a}-${u} <${+s+1}.0.0-0`):(pe("no pr"),s==="0"?o==="0"?c=`>=${s}.${o}.${a}${n} <${s}.${o}.${+a+1}-0`:c=`>=${s}.${o}.${a}${n} <${s}.${+o+1}.0-0`:c=`>=${s}.${o}.${a} <${+s+1}.0.0-0`),pe("caret return",c),c})},ML=(t,e)=>(pe("replaceXRanges",t,e),t.split(/\s+/).map(r=>zL(r,e)).join(" ")),zL=(t,e)=>{t=t.trim();let r=e.loose?Fe[Ne.XRANGELOOSE]:Fe[Ne.XRANGE];return t.replace(r,(n,i,s,o,a,u)=>{pe("xRange",t,n,i,s,o,a,u);let c=Ge(s),l=c||Ge(o),f=l||Ge(a),p=f;return i==="="&&p&&(i=""),u=e.includePrerelease?"-0":"",c?i===">"||i==="<"?n="<0.0.0-0":n="*":i&&p?(l&&(o=0),a=0,i===">"?(i=">=",l?(s=+s+1,o=0,a=0):(o=+o+1,a=0)):i==="<="&&(i="<",l?s=+s+1:o=+o+1),i==="<"&&(u="-0"),n=`${i+s}.${o}.${a}${u}`):l?n=`>=${s}.0.0${u} <${+s+1}.0.0-0`:f&&(n=`>=${s}.${o}.0${u} <${s}.${+o+1}.0-0`),pe("xRange return",n),n})},BL=(t,e)=>(pe("replaceStars",t,e),t.trim().replace(Fe[Ne.STAR],"")),DL=(t,e)=>(pe("replaceGTE0",t,e),t.trim().replace(Fe[e.includePrerelease?Ne.GTE0PRE:Ne.GTE0],"")),FL=t=>(e,r,n,i,s,o,a,u,c,l,f,p,y)=>(Ge(n)?r="":Ge(i)?r=`>=${n}.0.0${t?"-0":""}`:Ge(s)?r=`>=${n}.${i}.0${t?"-0":""}`:o?r=`>=${r}`:r=`>=${r}${t?"-0":""}`,Ge(c)?u="":Ge(l)?u=`<${+c+1}.0.0-0`:Ge(f)?u=`<${c}.${+l+1}.0-0`:p?u=`<=${c}.${l}.${f}-${p}`:t?u=`<${c}.${l}.${+f+1}-0`:u=`<=${u}`,`${r} ${u}`.trim()),kL=(t,e,r)=>{for(let n=0;n0){let i=t[n].semver;if(i.major===e.major&&i.minor===e.minor&&i.patch===e.patch)return!0}return!1}return!0}});var Bi=d((fk,ly)=>{var Ui=Symbol("SemVer ANY"),Gi=class{static get ANY(){return Ui}constructor(e,r){if(r=HL(r),e instanceof Gi){if(e.loose===!!r.loose)return e;e=e.value}ac("comparator",e,r),this.options=r,this.loose=!!r.loose,this.parse(e),this.semver===Ui?this.value="":this.value=this.operator+this.semver.version,ac("comp",this)}parse(e){let r=this.options.loose?fy[hy.COMPARATORLOOSE]:fy[hy.COMPARATOR],n=e.match(r);if(!n)throw new TypeError(`Invalid comparator: ${e}`);this.operator=n[1]!==void 0?n[1]:"",this.operator==="="&&(this.operator=""),n[2]?this.semver=new py(n[2],this.options.loose):this.semver=Ui}toString(){return this.value}test(e){if(ac("Comparator.test",e,this.options.loose),this.semver===Ui||e===Ui)return!0;if(typeof e=="string")try{e=new py(e,this.options)}catch(r){return!1}return oc(e,this.operator,this.semver,this.options)}intersects(e,r){if(!(e instanceof Gi))throw new TypeError("a Comparator is required");if((!r||typeof r!="object")&&(r={loose:!!r,includePrerelease:!1}),this.operator==="")return this.value===""?!0:new dy(e.value,r).test(this.value);if(e.operator==="")return e.value===""?!0:new dy(this.value,r).test(e.semver);let n=(this.operator===">="||this.operator===">")&&(e.operator===">="||e.operator===">"),i=(this.operator==="<="||this.operator==="<")&&(e.operator==="<="||e.operator==="<"),s=this.semver.version===e.semver.version,o=(this.operator===">="||this.operator==="<=")&&(e.operator===">="||e.operator==="<="),a=oc(this.semver,"<",e.semver,r)&&(this.operator===">="||this.operator===">")&&(e.operator==="<="||e.operator==="<"),u=oc(this.semver,">",e.semver,r)&&(this.operator==="<="||this.operator==="<")&&(e.operator===">="||e.operator===">");return n||i||s&&o||a||u}};ly.exports=Gi;var HL=ki(),{re:fy,t:hy}=Ur(),oc=ec(),ac=Fi(),py=De(),dy=ht()});var zi=d((hk,my)=>{var WL=ht(),YL=(t,e,r)=>{try{e=new WL(e,r)}catch(n){return!1}return e.test(t)};my.exports=YL});var yy=d((pk,gy)=>{var VL=ht(),XL=(t,e)=>new VL(t,e).set.map(r=>r.map(n=>n.value).join(" ").trim().split(" "));gy.exports=XL});var by=d((dk,vy)=>{var KL=De(),ZL=ht(),JL=(t,e,r)=>{let n=null,i=null,s=null;try{s=new ZL(e,r)}catch(o){return null}return t.forEach(o=>{s.test(o)&&(!n||i.compare(o)===-1)&&(n=o,i=new KL(n,r))}),n};vy.exports=JL});var wy=d((mk,Ey)=>{var QL=De(),eT=ht(),tT=(t,e,r)=>{let n=null,i=null,s=null;try{s=new eT(e,r)}catch(o){return null}return t.forEach(o=>{s.test(o)&&(!n||i.compare(o)===1)&&(n=o,i=new QL(n,r))}),n};Ey.exports=tT});var Ry=d((gk,Sy)=>{var uc=De(),rT=ht(),Oy=ji(),nT=(t,e)=>{t=new rT(t,e);let r=new uc("0.0.0");if(t.test(r)||(r=new uc("0.0.0-0"),t.test(r)))return r;r=null;for(let n=0;n{let a=new uc(o.semver.version);switch(o.operator){case">":a.prerelease.length===0?a.patch++:a.prerelease.push(0),a.raw=a.format();case"":case">=":(!s||Oy(a,s))&&(s=a);break;case"<":case"<=":break;default:throw new Error(`Unexpected operation: ${o.operator}`)}}),s&&(!r||Oy(r,s))&&(r=s)}return r&&t.test(r)?r:null};Sy.exports=nT});var Cy=d((yk,_y)=>{var iT=ht(),sT=(t,e)=>{try{return new iT(t,e).range||"*"}catch(r){return null}};_y.exports=sT});var po=d((vk,Ay)=>{var oT=De(),Ly=Bi(),{ANY:aT}=Ly,uT=ht(),cT=zi(),Ty=ji(),xy=ao(),lT=co(),fT=uo(),hT=(t,e,r,n)=>{t=new oT(t,n),e=new uT(e,n);let i,s,o,a,u;switch(r){case">":i=Ty,s=lT,o=xy,a=">",u=">=";break;case"<":i=xy,s=fT,o=Ty,a="<",u="<=";break;default:throw new TypeError('Must provide a hilo val of "<" or ">"')}if(cT(t,e,n))return!1;for(let c=0;c{y.semver===aT&&(y=new Ly(">=0.0.0")),f=f||y,p=p||y,i(y.semver,f.semver,n)?f=y:o(y.semver,p.semver,n)&&(p=y)}),f.operator===a||f.operator===u||(!p.operator||p.operator===a)&&s(t,p.semver))return!1;if(p.operator===u&&o(t,p.semver))return!1}return!0};Ay.exports=hT});var Iy=d((bk,Ny)=>{var pT=po(),dT=(t,e,r)=>pT(t,e,">",r);Ny.exports=dT});var Dy=d((Ek,Py)=>{var mT=po(),gT=(t,e,r)=>mT(t,e,"<",r);Py.exports=gT});var qy=d((wk,Fy)=>{var ky=ht(),yT=(t,e,r)=>(t=new ky(t,r),e=new ky(e,r),t.intersects(e));Fy.exports=yT});var $y=d((Sk,jy)=>{var vT=zi(),bT=ft();jy.exports=(t,e,r)=>{let n=[],i=null,s=null,o=t.sort((l,f)=>bT(l,f,r));for(let l of o)vT(l,e,r)?(s=l,i||(i=l)):(s&&n.push([i,s]),s=null,i=null);i&&n.push([i,null]);let a=[];for(let[l,f]of n)l===f?a.push(l):!f&&l===o[0]?a.push("*"):f?l===o[0]?a.push(`<=${f}`):a.push(`${l} - ${f}`):a.push(`>=${l}`);let u=a.join(" || "),c=typeof e.raw=="string"?e.raw:String(e);return u.length{var By=ht(),{ANY:Uy}=Bi(),Hi=zi(),cc=ft(),wT=(t,e,r)=>{if(t===e)return!0;t=new By(t,r),e=new By(e,r);let n=!1;e:for(let i of t.set){for(let s of e.set){let o=ET(i,s,r);if(n=n||o!==null,o)continue e}if(n)return!1}return!0},ET=(t,e,r)=>{if(t===e)return!0;if(t.length===1&&t[0].semver===Uy)return e.length===1&&e[0].semver===Uy;let n=new Set,i,s;for(let f of t)f.operator===">"||f.operator===">="?i=Gy(i,f,r):f.operator==="<"||f.operator==="<="?s=zy(s,f,r):n.add(f.semver);if(n.size>1)return null;let o;if(i&&s){if(o=cc(i.semver,s.semver,r),o>0)return null;if(o===0&&(i.operator!==">="||s.operator!=="<="))return null}for(let f of n){if(i&&!Hi(f,String(i),r)||s&&!Hi(f,String(s),r))return null;for(let p of e)if(!Hi(f,String(p),r))return!1;return!0}let a,u,c,l;for(let f of e){if(l=l||f.operator===">"||f.operator===">=",c=c||f.operator==="<"||f.operator==="<=",i){if(f.operator===">"||f.operator===">="){if(a=Gy(i,f,r),a===f&&a!==i)return!1}else if(i.operator===">="&&!Hi(i.semver,String(f),r))return!1}if(s){if(f.operator==="<"||f.operator==="<="){if(u=zy(s,f,r),u===f&&u!==s)return!1}else if(s.operator==="<="&&!Hi(s.semver,String(f),r))return!1}if(!f.operator&&(s||i)&&o!==0)return!1}return!(i&&c&&!s&&o!==0||s&&l&&!i&&o!==0)},Gy=(t,e,r)=>{if(!t)return e;let n=cc(t.semver,e.semver,r);return n>0?t:n<0||e.operator===">"&&t.operator===">="?e:t},zy=(t,e,r)=>{if(!t)return e;let n=cc(t.semver,e.semver,r);return n<0?t:n>0||e.operator==="<"&&t.operator==="<="?e:t};My.exports=wT});var Yy=d((Rk,Wy)=>{var lc=Ur();Wy.exports={re:lc.re,src:lc.src,tokens:lc.t,SEMVER_SPEC_VERSION:Di().SEMVER_SPEC_VERSION,SemVer:De(),compareIdentifiers:ro().compareIdentifiers,rcompareIdentifiers:ro().rcompareIdentifiers,parse:Gr(),valid:dg(),clean:gg(),inc:vg(),diff:Rg(),major:Cg(),minor:Lg(),patch:xg(),prerelease:Ig(),compare:ft(),rcompare:Dg(),compareLoose:kg(),compareBuild:oo(),sort:Mg(),rsort:Ug(),gt:ji(),lt:ao(),eq:so(),neq:Qu(),gte:uo(),lte:co(),cmp:ec(),coerce:Kg(),Comparator:Bi(),Range:ht(),satisfies:zi(),toComparators:yy(),maxSatisfying:by(),minSatisfying:wy(),minVersion:Ry(),validRange:Cy(),outside:po(),gtr:Iy(),ltr:Dy(),intersects:qy(),simplifyRange:$y(),subset:Hy()}});var fc=d((_k,Vy)=>{"use strict";var Wi=Vy.exports={github:{protocols:["git","http","git+ssh","git+https","ssh","https"],domain:"github.com",treepath:"tree",filetemplate:"https://{auth@}raw.githubusercontent.com/{user}/{project}/{committish}/{path}",bugstemplate:"https://{domain}/{user}/{project}/issues",gittemplate:"git://{auth@}{domain}/{user}/{project}.git{#committish}",tarballtemplate:"https://codeload.{domain}/{user}/{project}/tar.gz/{committish}"},bitbucket:{protocols:["git+ssh","git+https","ssh","https"],domain:"bitbucket.org",treepath:"src",tarballtemplate:"https://{domain}/{user}/{project}/get/{committish}.tar.gz"},gitlab:{protocols:["git+ssh","git+https","ssh","https"],domain:"gitlab.com",treepath:"tree",bugstemplate:"https://{domain}/{user}/{project}/issues",httpstemplate:"git+https://{auth@}{domain}/{user}/{projectPath}.git{#committish}",tarballtemplate:"https://{domain}/{user}/{project}/repository/archive.tar.gz?ref={committish}",pathmatch:/^\/([^/]+)\/((?!.*(\/-\/|\/repository(\/[^/]+)?\/archive\.tar\.gz)).*?)(?:\.git|\/)?$/},gist:{protocols:["git","git+ssh","git+https","ssh","https"],domain:"gist.github.com",pathmatch:/^[/](?:([^/]+)[/])?([a-z0-9]{7,})(?:[.]git)?$/,filetemplate:"https://gist.githubusercontent.com/{user}/{project}/raw{/committish}/{path}",bugstemplate:"https://{domain}/{project}",gittemplate:"git://{domain}/{project}.git{#committish}",sshtemplate:"git@{domain}:/{project}.git{#committish}",sshurltemplate:"git+ssh://git@{domain}/{project}.git{#committish}",browsetemplate:"https://{domain}/{project}{/committish}",browsefiletemplate:"https://{domain}/{project}{/committish}{#path}",docstemplate:"https://{domain}/{project}{/committish}",httpstemplate:"git+https://{domain}/{project}.git{#committish}",shortcuttemplate:"{type}:{project}{#committish}",pathtemplate:"{project}{#committish}",tarballtemplate:"https://codeload.github.com/gist/{project}/tar.gz/{committish}",hashformat:function(t){return"file-"+Xy(t)}}},Ky={sshtemplate:"git@{domain}:{user}/{project}.git{#committish}",sshurltemplate:"git+ssh://git@{domain}/{user}/{project}.git{#committish}",browsetemplate:"https://{domain}/{user}/{project}{/tree/committish}",browsefiletemplate:"https://{domain}/{user}/{project}/{treepath}/{committish}/{path}{#fragment}",docstemplate:"https://{domain}/{user}/{project}{/tree/committish}#readme",httpstemplate:"git+https://{auth@}{domain}/{user}/{project}.git{#committish}",filetemplate:"https://{domain}/{user}/{project}/raw/{committish}/{path}",shortcuttemplate:"{type}:{user}/{project}{#committish}",pathtemplate:"{user}/{project}{#committish}",pathmatch:/^[/]([^/]+)[/]([^/]+?)(?:[.]git|[/])?$/,hashformat:Xy};Object.keys(Wi).forEach(function(t){Object.keys(Ky).forEach(function(e){Wi[t][e]||(Wi[t][e]=Ky[e])}),Wi[t].protocols_re=RegExp("^("+Wi[t].protocols.map(function(e){return e.replace(/([\\+*{}()[\]$^|])/g,"\\$1")}).join("|")+"):$")});function Xy(t){return t.toLowerCase().replace(/^\W+|\/|\W+$/g,"").replace(/\W+/g,"-")}});var Qy=d((Ck,Zy)=>{"use strict";var Jy=fc(),Pn=Object.assign||function(e,r){if(r===null||typeof r!="object")return e;let n=Object.keys(r),i=n.length;for(;i--;)e[n[i]]=r[n[i]];return e};Zy.exports=ke;function ke(t,e,r,n,i,s,o){var a=this;a.type=t,Object.keys(Jy[t]).forEach(function(u){a[u]=Jy[t][u]}),a.user=e,a.auth=r,a.project=n,a.committish=i,a.default=s,a.opts=o||{}}ke.prototype.hash=function(){return this.committish?"#"+this.committish:""};ke.prototype._fill=function(t,e){if(!!t){var r=Pn({},e);r.path=r.path?r.path.replace(/^[/]+/g,""):"",e=Pn(Pn({},this.opts),e);var n=this;Object.keys(this).forEach(function(l){n[l]!=null&&r[l]==null&&(r[l]=n[l])});var i=r.auth,s=r.committish,o=r.fragment,a=r.path,u=r.project;Object.keys(r).forEach(function(l){var f=r[l];(l==="path"||l==="project")&&typeof f=="string"?r[l]=f.split("/").map(function(p){return encodeURIComponent(p)}).join("/"):l!=="domain"&&(r[l]=encodeURIComponent(f))}),r["auth@"]=i?i+"@":"",r["#fragment"]=o?"#"+this.hashformat(o):"",r.fragment=r.fragment?r.fragment:"",r["#path"]=a?"#"+this.hashformat(a):"",r["/path"]=r.path?"/"+r.path:"",r.projectPath=u.split("/").map(encodeURIComponent).join("/"),e.noCommittish?(r["#committish"]="",r["/tree/committish"]="",r["/committish"]="",r.committish=""):(r["#committish"]=s?"#"+s:"",r["/tree/committish"]=r.committish?"/"+r.treepath+"/"+r.committish:"",r["/committish"]=r.committish?"/"+r.committish:"",r.committish=r.committish||"master");var c=t;return Object.keys(r).forEach(function(l){c=c.replace(new RegExp("[{]"+l+"[}]","g"),r[l])}),e.noGitPlus?c.replace(/^git[+]/,""):c}};ke.prototype.ssh=function(t){return this._fill(this.sshtemplate,t)};ke.prototype.sshurl=function(t){return this._fill(this.sshurltemplate,t)};ke.prototype.browse=function(t,e,r){return typeof t=="string"?(typeof e!="string"&&(r=e,e=null),this._fill(this.browsefiletemplate,Pn({fragment:e,path:t},r))):this._fill(this.browsetemplate,t)};ke.prototype.docs=function(t){return this._fill(this.docstemplate,t)};ke.prototype.bugs=function(t){return this._fill(this.bugstemplate,t)};ke.prototype.https=function(t){return this._fill(this.httpstemplate,t)};ke.prototype.git=function(t){return this._fill(this.gittemplate,t)};ke.prototype.shortcut=function(t){return this._fill(this.shortcuttemplate,t)};ke.prototype.path=function(t){return this._fill(this.pathtemplate,t)};ke.prototype.tarball=function(t){var e=Pn({},t,{noCommittish:!1});return this._fill(this.tarballtemplate,e)};ke.prototype.file=function(t,e){return this._fill(this.filetemplate,Pn({path:t},e))};ke.prototype.getDefaultRepresentation=function(){return this.default};ke.prototype.toString=function(t){return this.default&&typeof this[this.default]=="function"?this[this.default](t):this.sshurl(t)}});var tv=d((Ak,hc)=>{"use strict";var pc=require("url"),ev=fc(),ST=hc.exports=Qy(),OT=ic(),dc=new OT({max:1e3}),RT={"git+ssh:":"sshurl","git+https:":"https","ssh:":"sshurl","git:":"git"};function _T(t){return RT[t]||t.slice(0,-1)}var CT={"git:":!0,"https:":!0,"git+https:":!0,"http:":!0,"git+http:":!0};hc.exports.fromUrl=function(t,e){if(typeof t=="string"){var r=t+JSON.stringify(e||{});return dc.has(r)||dc.set(r,AT(t,e)),dc.get(r)}};function AT(t,e){if(!(t==null||t==="")){var r=TT(LT(t)?"github:"+t:t),n=xT(r),i=r.match(/^([^:]+):(?:[^@]+@)?(?:([^/]*)\/)?([^#]+)/),s=Object.keys(ev).map(function(o){try{var a=ev[o],u=null;n.auth&&CT[n.protocol]&&(u=n.auth);var c=n.hash?decodeURIComponent(n.hash.substr(1)):null,l=null,f=null,p=null;if(i&&i[1]===o)l=i[2]&&decodeURIComponent(i[2]),f=decodeURIComponent(i[3].replace(/\.git$/,"")),p="shortcut";else{if(n.host&&n.host!==a.domain&&n.host.replace(/^www[.]/,"")!==a.domain||!a.protocols_re.test(n.protocol)||!n.path)return;var y=a.pathmatch,m=n.path.match(y);if(!m)return;m[1]!==null&&m[1]!==void 0&&(l=decodeURIComponent(m[1].replace(/^:/,""))),f=decodeURIComponent(m[2]),p=_T(n.protocol)}return new ST(o,l,u,f,c,p,e)}catch(h){if(!(h instanceof URIError))throw h}}).filter(function(o){return o});if(s.length===1)return s[0]}}function LT(t){return/^[^:@%/\s.-][^:@%/\s]*[/][^:@\s/%]+(?:#.*)?$/.test(t)}function TT(t){var e=pc.parse(t);return e.protocol==="gist:"&&e.host&&!e.path?e.protocol+"/"+e.host:t}function xT(t){var e=t.match(/^([^@]+)@([^:/]+):[/]?((?:[^/]+[/])?[^/]+?)(?:[.]git)?(#.*)?$/);if(!e){var r=pc.parse(t);if(r.auth){let i=t.match(/[^@]+@[^:/]+/);if(i){var n=new pc.URL(i[0]);r.auth=n.username||"",n.password&&(r.auth+=":"+n.password)}}return r}return{protocol:"git+ssh:",slashes:!0,auth:e[1],host:e[2],port:null,hostname:e[2],hash:e[4],search:null,query:null,pathname:"/"+e[3],path:"/"+e[3],href:"git+ssh://"+e[1]+"@"+e[2]+"/"+e[3]+(e[4]||"")}}});var nv=d((Lk,rv)=>{rv.exports=NT;function NT(t){if(!!t&&t!=="ERROR: No README data found!"){t=t.trim().split(` +`);for(var e=0;t[e]&&t[e].trim().match(/^(#|$)/);e++);for(var r=t.length,n=e+1;n{iv.exports={topLevel:{dependancies:"dependencies",dependecies:"dependencies",depdenencies:"dependencies",devEependencies:"devDependencies",depends:"dependencies","dev-dependencies":"devDependencies",devDependences:"devDependencies",devDepenencies:"devDependencies",devdependencies:"devDependencies",repostitory:"repository",repo:"repository",prefereGlobal:"preferGlobal",hompage:"homepage",hampage:"homepage",autohr:"author",autor:"author",contributers:"contributors",publicationConfig:"publishConfig",script:"scripts"},bugs:{web:"url",name:"url"},script:{server:"start",tests:"test"}}});var cv=d((Nk,ov)=>{var av=Yy(),IT=Nu(),mo=tv(),PT=Gu().isCore,DT=["dependencies","devDependencies","optionalDependencies"],FT=nv(),mc=require("url"),pr=sv(),xk=ov.exports={warn:function(){},fixRepositoryField:function(t){if(t.repositories&&(this.warn("repositories"),t.repository=t.repositories[0]),!t.repository)return this.warn("missingRepository");typeof t.repository=="string"&&(t.repository={type:"git",url:t.repository});var e=t.repository.url||"";if(e){var r=mo.fromUrl(e);r&&(e=t.repository.url=r.getDefaultRepresentation()=="shortcut"?r.https():r.toString())}e.match(/github.com\/[^\/]+\/[^\/]+\.git\.git$/)&&this.warn("brokenGitUrl",e)},fixTypos:function(t){Object.keys(pr.topLevel).forEach(function(e){t.hasOwnProperty(e)&&this.warn("typo",e,pr.topLevel[e])},this)},fixScriptsField:function(t){if(!!t.scripts){if(typeof t.scripts!="object"){this.warn("nonObjectScripts"),delete t.scripts;return}Object.keys(t.scripts).forEach(function(e){typeof t.scripts[e]!="string"?(this.warn("nonStringScript"),delete t.scripts[e]):pr.script[e]&&!t.scripts[pr.script[e]]&&this.warn("typo",e,pr.script[e],"scripts")},this)}},fixFilesField:function(t){var e=t.files;e&&!Array.isArray(e)?(this.warn("nonArrayFiles"),delete t.files):t.files&&(t.files=t.files.filter(function(r){return!r||typeof r!="string"?(this.warn("invalidFilename",r),!1):!0},this))},fixBinField:function(t){if(!!t.bin&&typeof t.bin=="string"){var e={},r;(r=t.name.match(/^@[^/]+[/](.*)$/))?e[r[1]]=t.bin:e[t.name]=t.bin,t.bin=e}},fixManField:function(t){!t.man||typeof t.man=="string"&&(t.man=[t.man])},fixBundleDependenciesField:function(t){var e="bundledDependencies",r="bundleDependencies";t[e]&&!t[r]&&(t[r]=t[e],delete t[e]),t[r]&&!Array.isArray(t[r])?(this.warn("nonArrayBundleDependencies"),delete t[r]):t[r]&&(t[r]=t[r].filter(function(n){return!n||typeof n!="string"?(this.warn("nonStringBundleDependency",n),!1):(t.dependencies||(t.dependencies={}),t.dependencies.hasOwnProperty(n)||(this.warn("nonDependencyBundleDependency",n),t.dependencies[n]="*"),!0)},this))},fixDependencies:function(t,e){var r=!e;MT(t,this.warn),$T(t,this.warn),this.fixBundleDependenciesField(t),["dependencies","devDependencies"].forEach(function(n){if(n in t){if(!t[n]||typeof t[n]!="object"){this.warn("nonObjectDependencies",n),delete t[n];return}Object.keys(t[n]).forEach(function(i){var s=t[n][i];typeof s!="string"&&(this.warn("nonStringDependency",i,JSON.stringify(s)),delete t[n][i]);var o=mo.fromUrl(t[n][i]);o&&(t[n][i]=o.toString())},this)}},this)},fixModulesField:function(t){t.modules&&(this.warn("deprecatedModules"),delete t.modules)},fixKeywordsField:function(t){typeof t.keywords=="string"&&(t.keywords=t.keywords.split(/,\s+/)),t.keywords&&!Array.isArray(t.keywords)?(delete t.keywords,this.warn("nonArrayKeywords")):t.keywords&&(t.keywords=t.keywords.filter(function(e){return typeof e!="string"||!e?(this.warn("nonStringKeyword"),!1):!0},this))},fixVersionField:function(t,e){var r=!e;if(!t.version)return t.version="",!0;if(!av.valid(t.version,r))throw new Error('Invalid version: "'+t.version+'"');return t.version=av.clean(t.version,r),!0},fixPeople:function(t){uv(t,qT),uv(t,jT)},fixNameField:function(t,e){typeof e=="boolean"?e={strict:e}:typeof e=="undefined"&&(e={});var r=e.strict;if(!t.name&&!r){t.name="";return}if(typeof t.name!="string")throw new Error("name field must be a string.");r||(t.name=t.name.trim()),kT(t.name,r,e.allowLegacyCase),PT(t.name)&&this.warn("conflictingName",t.name)},fixDescriptionField:function(t){t.description&&typeof t.description!="string"&&(this.warn("nonStringDescription"),delete t.description),t.readme&&!t.description&&(t.description=FT(t.readme)),t.description===void 0&&delete t.description,t.description||this.warn("missingDescription")},fixReadmeField:function(t){t.readme||(this.warn("missingReadme"),t.readme="ERROR: No README data found!")},fixBugsField:function(t){if(!t.bugs&&t.repository&&t.repository.url){var e=mo.fromUrl(t.repository.url);e&&e.bugs()&&(t.bugs={url:e.bugs()})}else if(t.bugs){var r=/^.+@.*\..+$/;if(typeof t.bugs=="string")r.test(t.bugs)?t.bugs={email:t.bugs}:mc.parse(t.bugs).protocol?t.bugs={url:t.bugs}:this.warn("nonEmailUrlBugsString");else{BT(t.bugs,this.warn);var n=t.bugs;t.bugs={},n.url&&(typeof n.url=="string"&&mc.parse(n.url).protocol?t.bugs.url=n.url:this.warn("nonUrlBugsUrlField")),n.email&&(typeof n.email=="string"&&r.test(n.email)?t.bugs.email=n.email:this.warn("nonEmailBugsEmailField"))}!t.bugs.email&&!t.bugs.url&&(delete t.bugs,this.warn("emptyNormalizedBugs"))}},fixHomepageField:function(t){if(!t.homepage&&t.repository&&t.repository.url){var e=mo.fromUrl(t.repository.url);e&&e.docs()&&(t.homepage=e.docs())}if(!!t.homepage){if(typeof t.homepage!="string")return this.warn("nonUrlHomepage"),delete t.homepage;mc.parse(t.homepage).protocol||(t.homepage="http://"+t.homepage)}},fixLicenseField:function(t){if(t.license)typeof t.license!="string"||t.license.length<1||t.license.trim()===""?this.warn("invalidLicense"):IT(t.license).validForNewPackages||this.warn("invalidLicense");else return this.warn("missingLicense")}};function UT(t){if(t.charAt(0)!=="@")return!1;var e=t.slice(1).split("/");return e.length!==2?!1:e[0]&&e[1]&&e[0]===encodeURIComponent(e[0])&&e[1]===encodeURIComponent(e[1])}function GT(t){return!t.match(/[\/@\s\+%:]/)&&t===encodeURIComponent(t)}function kT(t,e,r){if(t.charAt(0)==="."||!(UT(t)||GT(t))||e&&!r&&t!==t.toLowerCase()||t.toLowerCase()==="node_modules"||t.toLowerCase()==="favicon.ico")throw new Error("Invalid name: "+JSON.stringify(t))}function uv(t,e){return t.author&&(t.author=e(t.author)),["maintainers","contributors"].forEach(function(r){!Array.isArray(t[r])||(t[r]=t[r].map(e))}),t}function qT(t){if(typeof t=="string")return t;var e=t.name||"",r=t.url||t.web,n=r?" ("+r+")":"",i=t.email||t.mail,s=i?" <"+i+">":"";return e+s+n}function jT(t){if(typeof t!="string")return t;var e=t.match(/^([^\(<]+)/),r=t.match(/\(([^\)]+)\)/),n=t.match(/<([^>]+)>/),i={};return e&&e[0].trim()&&(i.name=e[0].trim()),n&&(i.email=n[1]),r&&(i.url=r[1]),i}function $T(t,e){var r=t.optionalDependencies;if(!!r){var n=t.dependencies||{};Object.keys(r).forEach(function(i){n[i]=r[i]}),t.dependencies=n}}function zT(t,e,r){if(!t)return{};if(typeof t=="string"&&(t=t.trim().split(/[\n\r\s\t ,]+/)),!Array.isArray(t))return t;r("deprecatedArrayDependencies",e);var n={};return t.filter(function(i){return typeof i=="string"}).forEach(function(i){i=i.trim().split(/(:?[@\s><=])/);var s=i.shift(),o=i.join("");o=o.trim(),o=o.replace(/^@/,""),n[s]=o}),n}function MT(t,e){DT.forEach(function(r){!t[r]||(t[r]=zT(t[r],r,e))})}function BT(t,e){!t||Object.keys(t).forEach(function(r){pr.bugs[r]&&(e("typo",r,pr.bugs[r],"bugs"),t[pr.bugs[r]]=t[r],delete t[r])})}});var fv=d((Ik,lv)=>{lv.exports={repositories:"'repositories' (plural) Not supported. Please pick one as the 'repository' field",missingRepository:"No repository field.",brokenGitUrl:"Probably broken git url: %s",nonObjectScripts:"scripts must be an object",nonStringScript:"script values must be string commands",nonArrayFiles:"Invalid 'files' member",invalidFilename:"Invalid filename in 'files' list: %s",nonArrayBundleDependencies:"Invalid 'bundleDependencies' list. Must be array of package names",nonStringBundleDependency:"Invalid bundleDependencies member: %s",nonDependencyBundleDependency:"Non-dependency in bundleDependencies: %s",nonObjectDependencies:"%s field must be an object",nonStringDependency:"Invalid dependency: %s %s",deprecatedArrayDependencies:"specifying %s as array is deprecated",deprecatedModules:"modules field is deprecated",nonArrayKeywords:"keywords should be an array of strings",nonStringKeyword:"keywords should be an array of strings",conflictingName:"%s is also the name of a node core module.",nonStringDescription:"'description' field should be a string",missingDescription:"No description",missingReadme:"No README data",missingLicense:"No license field.",nonEmailUrlBugsString:"Bug string field must be url, email, or {email,url}",nonUrlBugsUrlField:"bugs.url field must be a string url. Deleted.",nonEmailBugsEmailField:"bugs.email field must be a string email. Deleted.",emptyNormalizedBugs:"Normalized value of bugs field is an empty object. Deleted.",nonUrlHomepage:"homepage field must be a string url. Deleted.",invalidLicense:"license should be a valid SPDX license expression",typo:"%s should probably be %s."}});var dv=d((Pk,hv)=>{var pv=require("util"),gc=fv();hv.exports=function(){var t=Array.prototype.slice.call(arguments,0),e=t.shift();if(e=="typo")return HT.apply(null,t);var r=gc[e]?gc[e]:e+": '%s'";return t.unshift(r),pv.format.apply(null,t)};function HT(t,e,r){return r&&(t=r+"['"+t+"']",e=r+"['"+e+"']"),pv.format(gc.typo,t,e)}});var vv=d((Dk,mv)=>{mv.exports=gv;var yc=cv();gv.fixer=yc;var WT=dv(),YT=["name","version","description","repository","modules","scripts","files","bin","man","bugs","keywords","readme","homepage","license"],VT=["dependencies","people","typos"],vc=YT.map(function(t){return yv(t)+"Field"});vc=vc.concat(VT);function gv(t,e,r){e===!0&&(e=null,r=!0),r||(r=!1),(!e||t.private)&&(e=function(n){}),t.scripts&&t.scripts.install==="node-gyp rebuild"&&!t.scripts.preinstall&&(t.gypfile=!0),yc.warn=function(){e(WT.apply(null,arguments))},vc.forEach(function(n){yc["fix"+yv(n)](t,r)}),t._id=t.name+"@"+t.version}function yv(t){return t.charAt(0).toUpperCase()+t.slice(1)}});var bv=d((Fk,Yi)=>{"use strict";var XT=require("path"),KT=Hh(),ZT=ep(),JT=dp(),QT=Ma(),ex=bp(),tx=Ep(),rx=Lp(),nx=V0(),ix=Z0(),sx=vv();delete require.cache[__filename];var ox=XT.dirname(Yi.parent&&Yi.parent.filename?Yi.parent.filename:"."),ax=(t,e,r,n)=>{let i=e[t],s=!0;if(typeof i.isRequired=="function"&&(s=i.isRequired(r,n),typeof s!="boolean"))throw new TypeError(`Return value for isRequired callback should be of type boolean, but ${typeof s} was returned.`);return typeof r[t]=="undefined"?s:i.isMultiple&&r[t].length===0},ux=(t,e,r)=>{let n=[];if(typeof t=="undefined")return[];for(let i of Object.keys(t))t[i].isRequired&&ax(i,t,e,r)&&n.push({key:i,...t[i]});return n},cx=t=>{console.error(`Missing required flag${t.length>1?"s":""}`);for(let e of t)console.error(` --${QT(e.key,"-")}${e.alias?`, -${e.alias}`:""}`)},lx=({flags:t})=>{let e=Object.keys(t).filter(r=>r.includes("-")&&r!=="--");if(e.length>0)throw new Error(`Flag keys may not contain '-': ${e.join(", ")}`)},fx=t=>{console.error([`Unknown flag${t.length>1?"s":""}`,...t].join(` +`))},hx=({flags:t,booleanDefault:e})=>{let r={};for(let[n,i]of Object.entries(t)){let s={...i};typeof e!="undefined"&&s.type==="boolean"&&!Object.prototype.hasOwnProperty.call(s,"default")&&(s.default=s.isMultiple?[e]:e),s.isMultiple&&(s.type=s.type?`${s.type}-array`:"array",s.default=s.default||[],delete s.isMultiple),r[n]=s}return r},px=(t,e)=>{for(let[r,n]of Object.entries(e.flags))if(r!=="--"&&!n.isMultiple&&Array.isArray(t[r]))throw new Error(`The flag --${r} can only be set once.`)},dx=(t,e)=>{typeof t!="string"&&(e=t,t="");let r=nx.sync({cwd:ox,normalize:!1});e={pkg:r?r.packageJson:{},argv:process.argv.slice(2),flags:{},inferType:!1,input:"string",help:t,autoHelp:!0,autoVersion:!0,booleanDefault:!1,hardRejection:!0,allowUnknownFlags:!0,...e},e.hardRejection&&ix(),lx(e);let n={arguments:e.input,...hx(e)};n=ex(n,"-",{exclude:["stopEarly","--"]}),e.inferType&&delete n.arguments,n=KT(n),n.configuration={...n.configuration,"greedy-arrays":!1},n["--"]&&(n.configuration["populate--"]=!0),e.allowUnknownFlags||(n.configuration["unknown-options-as-args"]=!0);let{pkg:i}=e,s=ZT(e.argv,n),o=rx(tx((e.help||"").replace(/\t+\n*$/,"")),2);sx(i),process.title=i.bin?Object.keys(i.bin)[0]:i.name;let{description:a}=e;!a&&a!==!1&&({description:a}=i),o=(a?` ${a} `:"")+(o?` ${o} `:` -`);let u=m=>{console.log(o),process.exit(typeof m=="number"?m:2)},c=()=>{console.log(typeof e.version=="string"?e.version:i.version),process.exit(0)};s._.length===0&&e.argv.length===1&&(s.version===!0&&e.autoVersion&&c(),s.help===!0&&e.autoHelp&&u(0));let l=s._;if(delete s._,!e.allowUnknownFlags){let m=l.filter(h=>typeof h=="string"&&h.startsWith("-"));m.length>0&&(Ax(m),process.exit(2))}let f=dx(s,{exclude:["--",/^\w$/]}),p={...f};Lx(f,e);for(let m of Object.values(e.flags))delete f[m.alias];let y=Rx(e.flags,f,l);return y.length>0&&(Cx(y),process.exit(2)),{input:l,flags:f,unnormalizedFlags:p,pkg:i,help:o,showHelp:u,showVersion:c}};Xi.exports=xx});var Dn=d((aj,Nv)=>{"use strict";var Iv=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"]]);Nv.exports=t=>t?Object.keys(t).map(e=>[Iv.has(e)?Iv.get(e):e,t[e]]).reduce((e,r)=>(e[r[0]]=r[1],e),Object.create(null)):{}});var Fn=d((uj,Pv)=>{"use strict";var Ix=require("events"),Dv=require("stream"),Ki=Mi(),Fv=require("string_decoder").StringDecoder,Wt=Symbol("EOF"),Zi=Symbol("maybeEmitEnd"),mr=Symbol("emittedEnd"),wo=Symbol("emittingEnd"),So=Symbol("closed"),kv=Symbol("read"),Tc=Symbol("flush"),jv=Symbol("flushChunk"),Je=Symbol("encoding"),Vt=Symbol("decoder"),Oo=Symbol("flowing"),Ji=Symbol("paused"),Qi=Symbol("resume"),Ge=Symbol("bufferLength"),qv=Symbol("bufferPush"),Lc=Symbol("bufferShift"),ke=Symbol("objectMode"),je=Symbol("destroyed"),$v=global._MP_NO_ITERATOR_SYMBOLS_!=="1",Px=$v&&Symbol.asyncIterator||Symbol("asyncIterator not implemented"),Dx=$v&&Symbol.iterator||Symbol("iterator not implemented"),Mv=t=>t==="end"||t==="finish"||t==="prefinish",Fx=t=>t instanceof ArrayBuffer||typeof t=="object"&&t.constructor&&t.constructor.name==="ArrayBuffer"&&t.byteLength>=0,kx=t=>!Buffer.isBuffer(t)&&ArrayBuffer.isView(t);Pv.exports=class Bv extends Dv{constructor(e){super();this[Oo]=!1,this[Ji]=!1,this.pipes=new Ki,this.buffer=new Ki,this[ke]=e&&e.objectMode||!1,this[ke]?this[Je]=null:this[Je]=e&&e.encoding||null,this[Je]==="buffer"&&(this[Je]=null),this[Vt]=this[Je]?new Fv(this[Je]):null,this[Wt]=!1,this[mr]=!1,this[wo]=!1,this[So]=!1,this.writable=!0,this.readable=!0,this[Ge]=0,this[je]=!1}get bufferLength(){return this[Ge]}get encoding(){return this[Je]}set encoding(e){if(this[ke])throw new Error("cannot set encoding in objectMode");if(this[Je]&&e!==this[Je]&&(this[Vt]&&this[Vt].lastNeed||this[Ge]))throw new Error("cannot change encoding");this[Je]!==e&&(this[Vt]=e?new Fv(e):null,this.buffer.length&&(this.buffer=this.buffer.map(r=>this[Vt].write(r)))),this[Je]=e}setEncoding(e){this.encoding=e}get objectMode(){return this[ke]}set objectMode(e){this[ke]=this[ke]||!!e}write(e,r,n){if(this[Wt])throw new Error("write after end");return this[je]?(this.emit("error",Object.assign(new Error("Cannot call write after a stream was destroyed"),{code:"ERR_STREAM_DESTROYED"})),!0):(typeof r=="function"&&(n=r,r="utf8"),r||(r="utf8"),!this[ke]&&!Buffer.isBuffer(e)&&(kx(e)?e=Buffer.from(e.buffer,e.byteOffset,e.byteLength):Fx(e)?e=Buffer.from(e):typeof e!="string"&&(this.objectMode=!0)),!this.objectMode&&!e.length?(this[Ge]!==0&&this.emit("readable"),n&&n(),this.flowing):(typeof e=="string"&&!this[ke]&&!(r===this[Je]&&!this[Vt].lastNeed)&&(e=Buffer.from(e,r)),Buffer.isBuffer(e)&&this[Je]&&(e=this[Vt].write(e)),this.flowing?(this[Ge]!==0&&this[Tc](!0),this.emit("data",e)):this[qv](e),this[Ge]!==0&&this.emit("readable"),n&&n(),this.flowing))}read(e){if(this[je])return null;try{return this[Ge]===0||e===0||e>this[Ge]?null:(this[ke]&&(e=null),this.buffer.length>1&&!this[ke]&&(this.encoding?this.buffer=new Ki([Array.from(this.buffer).join("")]):this.buffer=new Ki([Buffer.concat(Array.from(this.buffer),this[Ge])])),this[kv](e||null,this.buffer.head.value))}finally{this[Zi]()}}[kv](e,r){return e===r.length||e===null?this[Lc]():(this.buffer.head.value=r.slice(e),r=r.slice(0,e),this[Ge]-=e),this.emit("data",r),!this.buffer.length&&!this[Wt]&&this.emit("drain"),r}end(e,r,n){return typeof e=="function"&&(n=e,e=null),typeof r=="function"&&(n=r,r="utf8"),e&&this.write(e,r),n&&this.once("end",n),this[Wt]=!0,this.writable=!1,(this.flowing||!this[Ji])&&this[Zi](),this}[Qi](){this[je]||(this[Ji]=!1,this[Oo]=!0,this.emit("resume"),this.buffer.length?this[Tc]():this[Wt]?this[Zi]():this.emit("drain"))}resume(){return this[Qi]()}pause(){this[Oo]=!1,this[Ji]=!0}get destroyed(){return this[je]}get flowing(){return this[Oo]}get paused(){return this[Ji]}[qv](e){return this[ke]?this[Ge]+=1:this[Ge]+=e.length,this.buffer.push(e)}[Lc](){return this.buffer.length&&(this[ke]?this[Ge]-=1:this[Ge]-=this.buffer.head.value.length),this.buffer.shift()}[Tc](e){do;while(this[jv](this[Lc]()));!e&&!this.buffer.length&&!this[Wt]&&this.emit("drain")}[jv](e){return e?(this.emit("data",e),this.flowing):!1}pipe(e,r){if(this[je])return;let n=this[mr];r=r||{},e===process.stdout||e===process.stderr?r.end=!1:r.end=r.end!==!1;let i={dest:e,opts:r,ondrain:s=>this[Qi]()};return this.pipes.push(i),e.on("drain",i.ondrain),this[Qi](),n&&i.opts.end&&i.dest.end(),e}addListener(e,r){return this.on(e,r)}on(e,r){try{return super.on(e,r)}finally{e==="data"&&!this.pipes.length&&!this.flowing?this[Qi]():Mv(e)&&this[mr]&&(super.emit(e),this.removeAllListeners(e))}}get emittedEnd(){return this[mr]}[Zi](){!this[wo]&&!this[mr]&&!this[je]&&this.buffer.length===0&&this[Wt]&&(this[wo]=!0,this.emit("end"),this.emit("prefinish"),this.emit("finish"),this[So]&&this.emit("close"),this[wo]=!1)}emit(e,r){if(e!=="error"&&e!=="close"&&e!==je&&this[je])return;if(e==="data"){if(!r)return;this.pipes.length&&this.pipes.forEach(i=>i.dest.write(r)===!1&&this.pause())}else if(e==="end"){if(this[mr]===!0)return;this[mr]=!0,this.readable=!1,this[Vt]&&(r=this[Vt].end(),r&&(this.pipes.forEach(i=>i.dest.write(r)),super.emit("data",r))),this.pipes.forEach(i=>{i.dest.removeListener("drain",i.ondrain),i.opts.end&&i.dest.end()})}else if(e==="close"&&(this[So]=!0,!this[mr]&&!this[je]))return;let n=new Array(arguments.length);if(n[0]=e,n[1]=r,arguments.length>2)for(let i=2;i{e.push(n),this[ke]||(e.dataLength+=n.length)}),r.then(()=>e)}concat(){return this[ke]?Promise.reject(new Error("cannot concat in objectMode")):this.collect().then(e=>this[ke]?Promise.reject(new Error("cannot concat in objectMode")):this[Je]?e.join(""):Buffer.concat(e,e.dataLength))}promise(){return new Promise((e,r)=>{this.on(je,()=>r(new Error("stream destroyed"))),this.on("end",()=>e()),this.on("error",n=>r(n))})}[Px](){return{next:()=>{let r=this.read();if(r!==null)return Promise.resolve({done:!1,value:r});if(this[Wt])return Promise.resolve({done:!0});let n=null,i=null,s=c=>{this.removeListener("data",o),this.removeListener("end",a),i(c)},o=c=>{this.removeListener("error",s),this.removeListener("end",a),this.pause(),n({value:c,done:!!this[Wt]})},a=()=>{this.removeListener("error",s),this.removeListener("data",o),n({done:!0})},u=()=>s(new Error("stream destroyed"));return new Promise((c,l)=>{i=l,n=c,this.once(je,u),this.once("error",s),this.once("end",a),this.once("data",o)})}}}[Dx](){return{next:()=>{let r=this.read();return{value:r,done:r===null}}}}destroy(e){return this[je]?(e?this.emit("error",e):this.emit(je),this):(this[je]=!0,this.buffer=new Ki,this[Ge]=0,typeof this.close=="function"&&!this[So]&&this.close(),e?this.emit("error",e):this.emit(je),this)}static isStream(e){return!!e&&(e instanceof Bv||e instanceof Dv||e instanceof Ix&&(typeof e.pipe=="function"||typeof e.write=="function"&&typeof e.end=="function"))}}});var Gv=d((cj,Uv)=>{var jx=require("zlib").constants||{ZLIB_VERNUM:4736};Uv.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},jx))});var qc=d(nt=>{"use strict";var xc=require("assert"),gr=require("buffer").Buffer,zv=require("zlib"),Yr=nt.constants=Gv(),qx=Fn(),Hv=gr.concat,Xr=Symbol("_superWrite"),es=class extends Error{constructor(e){super("zlib: "+e.message);this.code=e.code,this.errno=e.errno,this.code||(this.code="ZLIB_ERROR"),this.message="zlib: "+e.message,Error.captureStackTrace(this,this.constructor)}get name(){return"ZlibError"}},$x=Symbol("opts"),ts=Symbol("flushFlag"),Wv=Symbol("finishFlushFlag"),Nc=Symbol("fullFlushFlag"),ae=Symbol("handle"),Ro=Symbol("onError"),kn=Symbol("sawError"),Ic=Symbol("level"),Pc=Symbol("strategy"),Dc=Symbol("ended"),lj=Symbol("_defaultFullFlush"),Fc=class extends qx{constructor(e,r){if(!e||typeof e!="object")throw new TypeError("invalid options for ZlibBase constructor");super(e);this[kn]=!1,this[Dc]=!1,this[$x]=e,this[ts]=e.flush,this[Wv]=e.finishFlush;try{this[ae]=new zv[r](e)}catch(n){throw new es(n)}this[Ro]=n=>{this[kn]||(this[kn]=!0,this.close(),this.emit("error",n))},this[ae].on("error",n=>this[Ro](new es(n))),this.once("end",()=>this.close)}close(){this[ae]&&(this[ae].close(),this[ae]=null,this.emit("close"))}reset(){if(!this[kn])return xc(this[ae],"zlib binding closed"),this[ae].reset()}flush(e){this.ended||(typeof e!="number"&&(e=this[Nc]),this.write(Object.assign(gr.alloc(0),{[ts]:e})))}end(e,r,n){return e&&this.write(e,r),this.flush(this[Wv]),this[Dc]=!0,super.end(null,null,n)}get ended(){return this[Dc]}write(e,r,n){if(typeof r=="function"&&(n=r,r="utf8"),typeof e=="string"&&(e=gr.from(e,r)),this[kn])return;xc(this[ae],"zlib binding closed");let i=this[ae]._handle,s=i.close;i.close=()=>{};let o=this[ae].close;this[ae].close=()=>{},gr.concat=c=>c;let a;try{let c=typeof e[ts]=="number"?e[ts]:this[ts];a=this[ae]._processChunk(e,c),gr.concat=Hv}catch(c){gr.concat=Hv,this[Ro](new es(c))}finally{this[ae]&&(this[ae]._handle=i,i.close=s,this[ae].close=o,this[ae].removeAllListeners("error"))}this[ae]&&this[ae].on("error",c=>this[Ro](new es(c)));let u;if(a)if(Array.isArray(a)&&a.length>0){u=this[Xr](gr.from(a[0]));for(let c=1;c{this.flush(i),s()};try{this[ae].params(e,r)}finally{this[ae].flush=n}this[ae]&&(this[Ic]=e,this[Pc]=r)}}}},Vv=class extends yr{constructor(e){super(e,"Deflate")}},Yv=class extends yr{constructor(e){super(e,"Inflate")}},kc=Symbol("_portable"),Xv=class extends yr{constructor(e){super(e,"Gzip");this[kc]=e&&!!e.portable}[Xr](e){return this[kc]?(this[kc]=!1,e[9]=255,super[Xr](e)):super[Xr](e)}},Kv=class extends yr{constructor(e){super(e,"Gunzip")}},Zv=class extends yr{constructor(e){super(e,"DeflateRaw")}},Jv=class extends yr{constructor(e){super(e,"InflateRaw")}},Qv=class extends yr{constructor(e){super(e,"Unzip")}},jc=class extends Fc{constructor(e,r){e=e||{},e.flush=e.flush||Yr.BROTLI_OPERATION_PROCESS,e.finishFlush=e.finishFlush||Yr.BROTLI_OPERATION_FINISH,super(e,r),this[Nc]=Yr.BROTLI_OPERATION_FLUSH}},e1=class extends jc{constructor(e){super(e,"BrotliCompress")}},t1=class extends jc{constructor(e){super(e,"BrotliDecompress")}};nt.Deflate=Vv;nt.Inflate=Yv;nt.Gzip=Xv;nt.Gunzip=Kv;nt.DeflateRaw=Zv;nt.InflateRaw=Jv;nt.Unzip=Qv;typeof zv.BrotliCompress=="function"?(nt.BrotliCompress=e1,nt.BrotliDecompress=t1):nt.BrotliCompress=nt.BrotliDecompress=class{constructor(){throw new Error("Brotli is not supported in this version of Node.js")}}});var Co=d((pj,r1)=>{"use strict";var Mx=Fn(),$c=Symbol("slurp");r1.exports=class extends Mx{constructor(e,r,n){super();switch(this.pause(),this.extended=r,this.globalExtended=n,this.header=e,this.startBlockSize=512*Math.ceil(e.size/512),this.blockRemain=this.startBlockSize,this.remain=e.size,this.type=e.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=e.path,this.mode=e.mode,this.mode&&(this.mode=this.mode&4095),this.uid=e.uid,this.gid=e.gid,this.uname=e.uname,this.gname=e.gname,this.size=e.size,this.mtime=e.mtime,this.atime=e.atime,this.ctime=e.ctime,this.linkpath=e.linkpath,this.uname=e.uname,this.gname=e.gname,r&&this[$c](r),n&&this[$c](n,!0)}write(e){let r=e.length;if(r>this.blockRemain)throw new Error("writing more to entry than is appropriate");let n=this.remain,i=this.blockRemain;return this.remain=Math.max(0,n-r),this.blockRemain=Math.max(0,i-r),this.ignore?!0:n>=r?super.write(e):super.write(e.slice(0,n))}[$c](e,r){for(let n in e)e[n]!==null&&e[n]!==void 0&&!(r&&n==="path")&&(this[n]=e[n])}}});var Mc=d(_o=>{"use strict";_o.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"]]);_o.code=new Map(Array.from(_o.name).map(t=>[t[1],t[0]]))});var o1=d((mj,n1)=>{"use strict";var Gx=(t,e)=>{if(Number.isSafeInteger(t))t<0?Ux(t,e):Bx(t,e);else throw Error("cannot encode number outside of javascript safe integer range");return e},Bx=(t,e)=>{e[0]=128;for(var r=e.length;r>1;r--)e[r-1]=t&255,t=Math.floor(t/256)},Ux=(t,e)=>{e[0]=255;var r=!1;t=t*-1;for(var n=e.length;n>1;n--){var i=t&255;t=Math.floor(t/256),r?e[n-1]=i1(i):i===0?e[n-1]=0:(r=!0,e[n-1]=s1(i))}},Wx=t=>{let e=t[0],r=e===128?Hx(t.slice(1,t.length)):e===255?zx(t):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},zx=t=>{for(var e=t.length,r=0,n=!1,i=e-1;i>-1;i--){var s=t[i],o;n?o=i1(s):s===0?o=s:(n=!0,o=s1(s)),o!==0&&(r-=o*Math.pow(256,e-i-1))}return r},Hx=t=>{for(var e=t.length,r=0,n=e-1;n>-1;n--){var i=t[n];i!==0&&(r+=i*Math.pow(256,e-n-1))}return r},i1=t=>(255^t)&255,s1=t=>(255^t)+1&255;n1.exports={encode:Gx,parse:Wx}});var qn=d((gj,a1)=>{"use strict";var Bc=Mc(),jn=require("path").posix,u1=o1(),Uc=Symbol("slurp"),it=Symbol("type"),c1=class{constructor(e,r,n,i){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[it]="0",this.linkpath=null,this.uname=null,this.gname=null,this.devmaj=0,this.devmin=0,this.atime=null,this.ctime=null,Buffer.isBuffer(e)?this.decode(e,r||0,n,i):e&&this.set(e)}decode(e,r,n,i){if(r||(r=0),!e||!(e.length>=r+512))throw new Error("need 512 bytes for header");if(this.path=Kr(e,r,100),this.mode=vr(e,r+100,8),this.uid=vr(e,r+108,8),this.gid=vr(e,r+116,8),this.size=vr(e,r+124,12),this.mtime=Gc(e,r+136,12),this.cksum=vr(e,r+148,12),this[Uc](n),this[Uc](i,!0),this[it]=Kr(e,r+156,1),this[it]===""&&(this[it]="0"),this[it]==="0"&&this.path.substr(-1)==="/"&&(this[it]="5"),this[it]==="5"&&(this.size=0),this.linkpath=Kr(e,r+157,100),e.slice(r+257,r+265).toString()==="ustar\x0000")if(this.uname=Kr(e,r+265,32),this.gname=Kr(e,r+297,32),this.devmaj=vr(e,r+329,8),this.devmin=vr(e,r+337,8),e[r+475]!==0){let o=Kr(e,r+345,155);this.path=o+"/"+this.path}else{let o=Kr(e,r+345,130);o&&(this.path=o+"/"+this.path),this.atime=Gc(e,r+476,12),this.ctime=Gc(e,r+488,12)}let s=8*32;for(let o=r;o=r+512))throw new Error("need 512 bytes for header");let n=this.ctime||this.atime?130:155,i=Vx(this.path||"",n),s=i[0],o=i[1];this.needPax=i[2],this.needPax=Zr(e,r,100,s)||this.needPax,this.needPax=br(e,r+100,8,this.mode)||this.needPax,this.needPax=br(e,r+108,8,this.uid)||this.needPax,this.needPax=br(e,r+116,8,this.gid)||this.needPax,this.needPax=br(e,r+124,12,this.size)||this.needPax,this.needPax=zc(e,r+136,12,this.mtime)||this.needPax,e[r+156]=this[it].charCodeAt(0),this.needPax=Zr(e,r+157,100,this.linkpath)||this.needPax,e.write("ustar\x0000",r+257,8),this.needPax=Zr(e,r+265,32,this.uname)||this.needPax,this.needPax=Zr(e,r+297,32,this.gname)||this.needPax,this.needPax=br(e,r+329,8,this.devmaj)||this.needPax,this.needPax=br(e,r+337,8,this.devmin)||this.needPax,this.needPax=Zr(e,r+345,n,o)||this.needPax,e[r+475]!==0?this.needPax=Zr(e,r+345,155,o)||this.needPax:(this.needPax=Zr(e,r+345,130,o)||this.needPax,this.needPax=zc(e,r+476,12,this.atime)||this.needPax,this.needPax=zc(e,r+488,12,this.ctime)||this.needPax);let a=8*32;for(let u=r;u{let r=100,n=t,i="",s,o=jn.parse(t).root||".";if(Buffer.byteLength(n)r&&Buffer.byteLength(i)<=e?s=[n.substr(0,r-1),i,!0]:(n=jn.join(jn.basename(i),n),i=jn.dirname(i));while(i!==o&&!s);s||(s=[t.substr(0,r-1),"",!0])}return s},Kr=(t,e,r)=>t.slice(e,e+r).toString("utf8").replace(/\0.*/,""),Gc=(t,e,r)=>Yx(vr(t,e,r)),Yx=t=>t===null?null:new Date(t*1e3),vr=(t,e,r)=>t[e]&128?u1.parse(t.slice(e,e+r)):Xx(t,e,r),Kx=t=>isNaN(t)?null:t,Xx=(t,e,r)=>Kx(parseInt(t.slice(e,e+r).toString("utf8").replace(/\0.*$/,"").trim(),8)),Zx={12:8589934591,8:2097151},br=(t,e,r,n)=>n===null?!1:n>Zx[r]||n<0?(u1.encode(n,t.slice(e,e+r)),!0):(Jx(t,e,r,n),!1),Jx=(t,e,r,n)=>t.write(Qx(n,r),e,r,"ascii"),Qx=(t,e)=>eN(Math.floor(t).toString(8),e),eN=(t,e)=>(t.length===e-1?t:new Array(e-t.length-1).join("0")+t+" ")+"\0",zc=(t,e,r,n)=>n===null?!1:br(t,e,r,n.getTime()/1e3),tN=new Array(156).join("\0"),Zr=(t,e,r,n)=>n===null?!1:(t.write(n+tN,e,r,"utf8"),n.length!==Buffer.byteLength(n)||n.length>r);a1.exports=c1});var To=d((yj,l1)=>{"use strict";var rN=qn(),nN=require("path"),Ao=class{constructor(e,r){this.atime=e.atime||null,this.charset=e.charset||null,this.comment=e.comment||null,this.ctime=e.ctime||null,this.gid=e.gid||null,this.gname=e.gname||null,this.linkpath=e.linkpath||null,this.mtime=e.mtime||null,this.path=e.path||null,this.size=e.size||null,this.uid=e.uid||null,this.uname=e.uname||null,this.dev=e.dev||null,this.ino=e.ino||null,this.nlink=e.nlink||null,this.global=r||!1}encode(){let e=this.encodeBody();if(e==="")return null;let r=Buffer.byteLength(e),n=512*Math.ceil(1+r/512),i=Buffer.allocUnsafe(n);for(let s=0;s<512;s++)i[s]=0;new rN({path:("PaxHeader/"+nN.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(i),i.write(e,512,r,"utf8");for(let s=r+512;s=Math.pow(10,s)&&(s+=1),s+i+n}};Ao.parse=(t,e,r)=>new Ao(iN(sN(t),e),r);var iN=(t,e)=>e?Object.keys(t).reduce((r,n)=>(r[n]=t[n],r),e):t,sN=t=>t.replace(/\n$/,"").split(` -`).reduce(oN,Object.create(null)),oN=(t,e)=>{let r=parseInt(e,10);if(r!==Buffer.byteLength(e)+1)return t;e=e.substr((r+" ").length);let n=e.split("="),i=n.shift().replace(/^SCHILY\.(dev|ino|nlink)/,"$1");if(!i)return t;let s=n.join("=");return t[i]=/^([A-Z]+\.)?([mac]|birth|creation)time$/.test(i)?new Date(s*1e3):/^[0-9]+$/.test(s)?+s:s,t};l1.exports=Ao});var Lo=d((vj,f1)=>{"use strict";f1.exports=t=>class extends t{warn(e,r,n={}){this.file&&(n.file=this.file),this.cwd&&(n.cwd=this.cwd),n.code=r instanceof Error&&r.code||e,n.tarCode=e,!this.strict&&n.recoverable!==!1?(r instanceof Error&&(n=Object.assign(r,n),r=r.message),this.emit("warn",n.tarCode,r,n)):r instanceof Error?this.emit("error",Object.assign(r,n)):this.emit("error",Object.assign(new Error(`${e}: ${r}`),n))}}});var Wc=d((bj,h1)=>{"use strict";var xo=["|","<",">","?",":"],Hc=xo.map(t=>String.fromCharCode(61440+t.charCodeAt(0))),aN=new Map(xo.map((t,e)=>[t,Hc[e]])),uN=new Map(Hc.map((t,e)=>[t,xo[e]]));h1.exports={encode:t=>xo.reduce((e,r)=>e.split(r).join(aN.get(r)),t),decode:t=>Hc.reduce((e,r)=>e.split(r).join(uN.get(r)),t)}});var d1=d((Ej,p1)=>{"use strict";p1.exports=(t,e,r)=>(t&=4095,r&&(t=(t|384)&~18),e&&(t&256&&(t|=64),t&32&&(t|=8),t&4&&(t|=1)),t)});var Qc=d((Oj,m1)=>{"use strict";var g1=Fn(),y1=To(),v1=qn(),xt=require("fs"),$n=require("path"),cN=16*1024*1024,b1=Symbol("process"),E1=Symbol("file"),w1=Symbol("directory"),Vc=Symbol("symlink"),S1=Symbol("hardlink"),rs=Symbol("header"),No=Symbol("read"),Yc=Symbol("lstat"),Io=Symbol("onlstat"),Xc=Symbol("onread"),Kc=Symbol("onreadlink"),Zc=Symbol("openfile"),Jc=Symbol("onopenfile"),Jr=Symbol("close"),Po=Symbol("mode"),O1=Lo(),lN=Wc(),R1=d1(),Do=O1(class extends g1{constructor(e,r){if(r=r||{},super(r),typeof e!="string")throw new TypeError("path is required");this.path=e,this.portable=!!r.portable,this.myuid=process.getuid&&process.getuid(),this.myuser=process.env.USER||"",this.maxReadSize=r.maxReadSize||cN,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 n=!1;if(!this.preservePaths&&$n.win32.isAbsolute(e)){let i=$n.win32.parse(e);this.path=e.substr(i.root.length),n=i.root}this.win32=!!r.win32||process.platform==="win32",this.win32&&(this.path=lN.decode(this.path.replace(/\\/g,"/")),e=e.replace(/\\/g,"/")),this.absolute=r.absolute||$n.resolve(this.cwd,e),this.path===""&&(this.path="./"),n&&this.warn("TAR_ENTRY_INFO",`stripping ${n} from absolute path`,{entry:this,path:n+this.path}),this.statCache.has(this.absolute)?this[Io](this.statCache.get(this.absolute)):this[Yc]()}[Yc](){xt.lstat(this.absolute,(e,r)=>{if(e)return this.emit("error",e);this[Io](r)})}[Io](e){this.statCache.set(this.absolute,e),this.stat=e,e.isFile()||(e.size=0),this.type=fN(e),this.emit("stat",e),this[b1]()}[b1](){switch(this.type){case"File":return this[E1]();case"Directory":return this[w1]();case"SymbolicLink":return this[Vc]();default:return this.end()}}[Po](e){return R1(e,this.type==="Directory",this.portable)}[rs](){this.type==="Directory"&&this.portable&&(this.noMtime=!0),this.header=new v1({path:this.path,linkpath:this.linkpath,mode:this[Po](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 y1({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)}[w1](){this.path.substr(-1)!=="/"&&(this.path+="/"),this.stat.size=0,this[rs](),this.end()}[Vc](){xt.readlink(this.absolute,(e,r)=>{if(e)return this.emit("error",e);this[Kc](r)})}[Kc](e){this.linkpath=e.replace(/\\/g,"/"),this[rs](),this.end()}[S1](e){this.type="Link",this.linkpath=$n.relative(this.cwd,e).replace(/\\/g,"/"),this.stat.size=0,this[rs](),this.end()}[E1](){if(this.stat.nlink>1){let e=this.stat.dev+":"+this.stat.ino;if(this.linkCache.has(e)){let r=this.linkCache.get(e);if(r.indexOf(this.cwd)===0)return this[S1](r)}this.linkCache.set(e,this.absolute)}if(this[rs](),this.stat.size===0)return this.end();this[Zc]()}[Zc](){xt.open(this.absolute,"r",(e,r)=>{if(e)return this.emit("error",e);this[Jc](r)})}[Jc](e){let r=512*Math.ceil(this.stat.size/512),n=Math.min(r,this.maxReadSize),i=Buffer.allocUnsafe(n);this[No](e,i,0,i.length,0,this.stat.size,r)}[No](e,r,n,i,s,o,a){xt.read(e,r,n,i,s,(u,c)=>{if(u)return this[Jr](e,()=>this.emit("error",u));this[Xc](e,r,n,i,s,o,a,c)})}[Jr](e,r){xt.close(e,r)}[Xc](e,r,n,i,s,o,a,u){if(u<=0&&o>0){let l=new Error("encountered unexpected EOF");return l.path=this.absolute,l.syscall="read",l.code="EOF",this[Jr](e,()=>this.emit("error",l))}if(u>o){let l=new Error("did not encounter expected EOF");return l.path=this.absolute,l.syscall="read",l.code="EOF",this[Jr](e,()=>this.emit("error",l))}if(u===o)for(let l=u;ll?this.emit("error",l):this.end());n>=i&&(r=Buffer.allocUnsafe(i),n=0),i=r.length-n,this[No](e,r,n,i,s,o,a)}}),C1=class extends Do{[Yc](){this[Io](xt.lstatSync(this.absolute))}[Vc](){this[Kc](xt.readlinkSync(this.absolute))}[Zc](){this[Jc](xt.openSync(this.absolute,"r"))}[No](e,r,n,i,s,o,a){let u=!0;try{let c=xt.readSync(e,r,n,i,s);this[Xc](e,r,n,i,s,o,a,c),u=!1}finally{if(u)try{this[Jr](e,()=>{})}catch(c){}}}[Jr](e,r){xt.closeSync(e),r()}},hN=O1(class extends g1{constructor(e,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=e,this.type=e.type,this.type==="Directory"&&this.portable&&(this.noMtime=!0),this.path=e.path,this.mode=this[Po](e.mode),this.uid=this.portable?null:e.uid,this.gid=this.portable?null:e.gid,this.uname=this.portable?null:e.uname,this.gname=this.portable?null:e.gname,this.size=e.size,this.mtime=this.noMtime?null:r.mtime||e.mtime,this.atime=this.portable?null:e.atime,this.ctime=this.portable?null:e.ctime,this.linkpath=e.linkpath,typeof r.onwarn=="function"&&this.on("warn",r.onwarn);let n=!1;if($n.isAbsolute(this.path)&&!this.preservePaths){let i=$n.parse(this.path);n=i.root,this.path=this.path.substr(i.root.length)}this.remain=e.size,this.blockRemain=e.startBlockSize,this.header=new v1({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}),n&&this.warn("TAR_ENTRY_INFO",`stripping ${n} from absolute path`,{entry:this,path:n+this.path}),this.header.encode()&&!this.noPax&&super.write(new y1({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),e.pipe(this)}[Po](e){return R1(e,this.type==="Directory",this.portable)}write(e){let r=e.length;if(r>this.blockRemain)throw new Error("writing more to entry than is appropriate");return this.blockRemain-=r,super.write(e)}end(){return this.blockRemain&&this.write(Buffer.alloc(this.blockRemain)),super.end()}});Do.Sync=C1;Do.Tar=hN;var fN=t=>t.isFile()?"File":t.isDirectory()?"Directory":t.isSymbolicLink()?"SymbolicLink":"Unsupported";m1.exports=Do});var Uo=d((Cj,_1)=>{"use strict";var el=class{constructor(e,r){this.path=e||"./",this.absolute=r,this.entry=null,this.stat=null,this.readdir=null,this.pending=!1,this.ignore=!1,this.piped=!1}},pN=Fn(),dN=qc(),mN=Co(),tl=Qc(),gN=tl.Sync,yN=tl.Tar,vN=Mi(),A1=Buffer.alloc(1024),Fo=Symbol("onStat"),ko=Symbol("ended"),Nt=Symbol("queue"),Mn=Symbol("current"),Qr=Symbol("process"),jo=Symbol("processing"),T1=Symbol("processJob"),It=Symbol("jobs"),rl=Symbol("jobDone"),qo=Symbol("addFSEntry"),L1=Symbol("addTarEntry"),nl=Symbol("stat"),il=Symbol("readdir"),$o=Symbol("onreaddir"),Mo=Symbol("pipe"),x1=Symbol("entry"),sl=Symbol("entryOpt"),ol=Symbol("writeEntryClass"),N1=Symbol("write"),al=Symbol("ondrain"),Bo=require("fs"),I1=require("path"),bN=Lo(),ul=bN(class extends pN{constructor(e){super(e);e=e||Object.create(null),this.opt=e,this.file=e.file||"",this.cwd=e.cwd||process.cwd(),this.maxReadSize=e.maxReadSize,this.preservePaths=!!e.preservePaths,this.strict=!!e.strict,this.noPax=!!e.noPax,this.prefix=(e.prefix||"").replace(/(\\|\/)+$/,""),this.linkCache=e.linkCache||new Map,this.statCache=e.statCache||new Map,this.readdirCache=e.readdirCache||new Map,this[ol]=tl,typeof e.onwarn=="function"&&this.on("warn",e.onwarn),this.portable=!!e.portable,this.zip=null,e.gzip?(typeof e.gzip!="object"&&(e.gzip={}),this.portable&&(e.gzip.portable=!0),this.zip=new dN.Gzip(e.gzip),this.zip.on("data",r=>super.write(r)),this.zip.on("end",r=>super.end()),this.zip.on("drain",r=>this[al]()),this.on("resume",r=>this.zip.resume())):this.on("drain",this[al]),this.noDirRecurse=!!e.noDirRecurse,this.follow=!!e.follow,this.noMtime=!!e.noMtime,this.mtime=e.mtime||null,this.filter=typeof e.filter=="function"?e.filter:r=>!0,this[Nt]=new vN,this[It]=0,this.jobs=+e.jobs||4,this[jo]=!1,this[ko]=!1}[N1](e){return super.write(e)}add(e){return this.write(e),this}end(e){return e&&this.write(e),this[ko]=!0,this[Qr](),this}write(e){if(this[ko])throw new Error("write after end");return e instanceof mN?this[L1](e):this[qo](e),this.flowing}[L1](e){let r=I1.resolve(this.cwd,e.path);if(this.prefix&&(e.path=this.prefix+"/"+e.path.replace(/^\.(\/+|$)/,"")),!this.filter(e.path,e))e.resume();else{let n=new el(e.path,r,!1);n.entry=new yN(e,this[sl](n)),n.entry.on("end",i=>this[rl](n)),this[It]+=1,this[Nt].push(n)}this[Qr]()}[qo](e){let r=I1.resolve(this.cwd,e);this.prefix&&(e=this.prefix+"/"+e.replace(/^\.(\/+|$)/,"")),this[Nt].push(new el(e,r)),this[Qr]()}[nl](e){e.pending=!0,this[It]+=1;let r=this.follow?"stat":"lstat";Bo[r](e.absolute,(n,i)=>{e.pending=!1,this[It]-=1,n?this.emit("error",n):this[Fo](e,i)})}[Fo](e,r){this.statCache.set(e.absolute,r),e.stat=r,this.filter(e.path,r)||(e.ignore=!0),this[Qr]()}[il](e){e.pending=!0,this[It]+=1,Bo.readdir(e.absolute,(r,n)=>{if(e.pending=!1,this[It]-=1,r)return this.emit("error",r);this[$o](e,n)})}[$o](e,r){this.readdirCache.set(e.absolute,r),e.readdir=r,this[Qr]()}[Qr](){if(!this[jo]){this[jo]=!0;for(let e=this[Nt].head;e!==null&&this[It]this.warn(r,n,i),noPax:this.noPax,cwd:this.cwd,absolute:e.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}}[x1](e){this[It]+=1;try{return new this[ol](e.path,this[sl](e)).on("end",()=>this[rl](e)).on("error",r=>this.emit("error",r))}catch(r){this.emit("error",r)}}[al](){this[Mn]&&this[Mn].entry&&this[Mn].entry.resume()}[Mo](e){e.piped=!0,e.readdir&&e.readdir.forEach(i=>{let s=this.prefix?e.path.slice(this.prefix.length+1)||"./":e.path,o=s==="./"?"":s.replace(/\/*$/,"/");this[qo](o+i)});let r=e.entry,n=this.zip;n?r.on("data",i=>{n.write(i)||r.pause()}):r.on("data",i=>{super.write(i)||r.pause()})}pause(){return this.zip&&this.zip.pause(),super.pause()}}),P1=class extends ul{constructor(e){super(e);this[ol]=gN}pause(){}resume(){}[nl](e){let r=this.follow?"statSync":"lstatSync";this[Fo](e,Bo[r](e.absolute))}[il](e,r){this[$o](e,Bo.readdirSync(e.absolute))}[Mo](e){let r=e.entry,n=this.zip;e.readdir&&e.readdir.forEach(i=>{let s=this.prefix?e.path.slice(this.prefix.length+1)||"./":e.path,o=s==="./"?"":s.replace(/\/*$/,"/");this[qo](o+i)}),n?r.on("data",i=>{n.write(i)}):r.on("data",i=>{super[N1](i)})}};ul.Sync=P1;_1.exports=ul});var Yn=d(ns=>{"use strict";var EN=Fn(),wN=require("events").EventEmitter,Qe=require("fs"),cl=Qe.writev;if(!cl){let t=process.binding("fs"),e=t.FSReqWrap||t.FSReqCallback;cl=(r,n,i,s)=>{let o=(u,c)=>s(u,c,n),a=new e;a.oncomplete=o,t.writeBuffers(r,n,i,a)}}var Bn=Symbol("_autoClose"),_t=Symbol("_close"),is=Symbol("_ended"),re=Symbol("_fd"),D1=Symbol("_finished"),Er=Symbol("_flags"),ll=Symbol("_flush"),fl=Symbol("_handleChunk"),hl=Symbol("_makeBuf"),Go=Symbol("_mode"),zo=Symbol("_needDrain"),Un=Symbol("_onerror"),Gn=Symbol("_onopen"),pl=Symbol("_onread"),zn=Symbol("_onwrite"),wr=Symbol("_open"),Yt=Symbol("_path"),en=Symbol("_pos"),Pt=Symbol("_queue"),Hn=Symbol("_read"),F1=Symbol("_readSize"),Sr=Symbol("_reading"),Ho=Symbol("_remain"),k1=Symbol("_size"),Wo=Symbol("_write"),Wn=Symbol("_writing"),Vo=Symbol("_defaultFlag"),Vn=Symbol("_errored"),dl=class extends EN{constructor(e,r){if(r=r||{},super(r),this.readable=!0,this.writable=!1,typeof e!="string")throw new TypeError("path must be a string");this[Vn]=!1,this[re]=typeof r.fd=="number"?r.fd:null,this[Yt]=e,this[F1]=r.readSize||16*1024*1024,this[Sr]=!1,this[k1]=typeof r.size=="number"?r.size:Infinity,this[Ho]=this[k1],this[Bn]=typeof r.autoClose=="boolean"?r.autoClose:!0,typeof this[re]=="number"?this[Hn]():this[wr]()}get fd(){return this[re]}get path(){return this[Yt]}write(){throw new TypeError("this is a readable stream")}end(){throw new TypeError("this is a readable stream")}[wr](){Qe.open(this[Yt],"r",(e,r)=>this[Gn](e,r))}[Gn](e,r){e?this[Un](e):(this[re]=r,this.emit("open",r),this[Hn]())}[hl](){return Buffer.allocUnsafe(Math.min(this[F1],this[Ho]))}[Hn](){if(!this[Sr]){this[Sr]=!0;let e=this[hl]();if(e.length===0)return process.nextTick(()=>this[pl](null,0,e));Qe.read(this[re],e,0,e.length,null,(r,n,i)=>this[pl](r,n,i))}}[pl](e,r,n){this[Sr]=!1,e?this[Un](e):this[fl](r,n)&&this[Hn]()}[_t](){if(this[Bn]&&typeof this[re]=="number"){let e=this[re];this[re]=null,Qe.close(e,r=>r?this.emit("error",r):this.emit("close"))}}[Un](e){this[Sr]=!0,this[_t](),this.emit("error",e)}[fl](e,r){let n=!1;return this[Ho]-=e,e>0&&(n=super.write(ethis[Gn](e,r))}[Gn](e,r){this[Vo]&&this[Er]==="r+"&&e&&e.code==="ENOENT"?(this[Er]="w",this[wr]()):e?this[Un](e):(this[re]=r,this.emit("open",r),this[ll]())}end(e,r){return e&&this.write(e,r),this[is]=!0,!this[Wn]&&!this[Pt].length&&typeof this[re]=="number"&&this[zn](null,0),this}write(e,r){return typeof e=="string"&&(e=Buffer.from(e,r)),this[is]?(this.emit("error",new Error("write() after end()")),!1):this[re]===null||this[Wn]||this[Pt].length?(this[Pt].push(e),this[zo]=!0,!1):(this[Wn]=!0,this[Wo](e),!0)}[Wo](e){Qe.write(this[re],e,0,e.length,this[en],(r,n)=>this[zn](r,n))}[zn](e,r){e?this[Un](e):(this[en]!==null&&(this[en]+=r),this[Pt].length?this[ll]():(this[Wn]=!1,this[is]&&!this[D1]?(this[D1]=!0,this[_t](),this.emit("finish")):this[zo]&&(this[zo]=!1,this.emit("drain"))))}[ll](){if(this[Pt].length===0)this[is]&&this[zn](null,0);else if(this[Pt].length===1)this[Wo](this[Pt].pop());else{let e=this[Pt];this[Pt]=[],cl(this[re],e,this[en],(r,n)=>this[zn](r,n))}}[_t](){if(this[Bn]&&typeof this[re]=="number"){let e=this[re];this[re]=null,Qe.close(e,r=>r?this.emit("error",r):this.emit("close"))}}},q1=class extends ml{[wr](){let e;if(this[Vo]&&this[Er]==="r+")try{e=Qe.openSync(this[Yt],this[Er],this[Go])}catch(r){if(r.code==="ENOENT")return this[Er]="w",this[wr]();throw r}else e=Qe.openSync(this[Yt],this[Er],this[Go]);this[Gn](null,e)}[_t](){if(this[Bn]&&typeof this[re]=="number"){let e=this[re];this[re]=null,Qe.closeSync(e),this.emit("close")}}[Wo](e){let r=!0;try{this[zn](null,Qe.writeSync(this[re],e,0,e.length,this[en])),r=!1}finally{if(r)try{this[_t]()}catch(n){}}}};ns.ReadStream=dl;ns.ReadStreamSync=j1;ns.WriteStream=ml;ns.WriteStreamSync=q1});var ea=d((Tj,$1)=>{"use strict";var SN=Lo(),ON=qn(),RN=require("events"),CN=Mi(),_N=1024*1024,AN=Co(),M1=To(),TN=qc(),gl=Buffer.from([31,139]),pt=Symbol("state"),tn=Symbol("writeEntry"),Xt=Symbol("readEntry"),yl=Symbol("nextEntry"),B1=Symbol("processEntry"),dt=Symbol("extendedHeader"),ss=Symbol("globalExtendedHeader"),Or=Symbol("meta"),U1=Symbol("emitMeta"),ce=Symbol("buffer"),Kt=Symbol("queue"),rn=Symbol("ended"),G1=Symbol("emittedEnd"),nn=Symbol("emit"),et=Symbol("unzip"),Yo=Symbol("consumeChunk"),Xo=Symbol("consumeChunkSub"),vl=Symbol("consumeBody"),z1=Symbol("consumeMeta"),H1=Symbol("consumeHeader"),Ko=Symbol("consuming"),bl=Symbol("bufferConcat"),El=Symbol("maybeEnd"),os=Symbol("writing"),Rr=Symbol("aborted"),Zo=Symbol("onDone"),sn=Symbol("sawValidEntry"),Jo=Symbol("sawNullBlock"),Qo=Symbol("sawEOF"),LN=t=>!0;$1.exports=SN(class extends RN{constructor(e){e=e||{},super(e),this.file=e.file||"",this[sn]=null,this.on(Zo,r=>{(this[pt]==="begin"||this[sn]===!1)&&this.warn("TAR_BAD_ARCHIVE","Unrecognized archive format")}),e.ondone?this.on(Zo,e.ondone):this.on(Zo,r=>{this.emit("prefinish"),this.emit("finish"),this.emit("end"),this.emit("close")}),this.strict=!!e.strict,this.maxMetaEntrySize=e.maxMetaEntrySize||_N,this.filter=typeof e.filter=="function"?e.filter:LN,this.writable=!0,this.readable=!1,this[Kt]=new CN,this[ce]=null,this[Xt]=null,this[tn]=null,this[pt]="begin",this[Or]="",this[dt]=null,this[ss]=null,this[rn]=!1,this[et]=null,this[Rr]=!1,this[Jo]=!1,this[Qo]=!1,typeof e.onwarn=="function"&&this.on("warn",e.onwarn),typeof e.onentry=="function"&&this.on("entry",e.onentry)}[H1](e,r){this[sn]===null&&(this[sn]=!1);let n;try{n=new ON(e,r,this[dt],this[ss])}catch(i){return this.warn("TAR_ENTRY_INVALID",i)}if(n.nullBlock)this[Jo]?(this[Qo]=!0,this[pt]==="begin"&&(this[pt]="header"),this[nn]("eof")):(this[Jo]=!0,this[nn]("nullBlock"));else if(this[Jo]=!1,!n.cksumValid)this.warn("TAR_ENTRY_INVALID","checksum failure",{header:n});else if(!n.path)this.warn("TAR_ENTRY_INVALID","path is required",{header:n});else{let i=n.type;if(/^(Symbolic)?Link$/.test(i)&&!n.linkpath)this.warn("TAR_ENTRY_INVALID","linkpath required",{header:n});else if(!/^(Symbolic)?Link$/.test(i)&&n.linkpath)this.warn("TAR_ENTRY_INVALID","linkpath forbidden",{header:n});else{let s=this[tn]=new AN(n,this[dt],this[ss]);if(!this[sn])if(s.remain){let o=()=>{s.invalid||(this[sn]=!0)};s.on("end",o)}else this[sn]=!0;s.meta?s.size>this.maxMetaEntrySize?(s.ignore=!0,this[nn]("ignoredEntry",s),this[pt]="ignore",s.resume()):s.size>0&&(this[Or]="",s.on("data",o=>this[Or]+=o),this[pt]="meta"):(this[dt]=null,s.ignore=s.ignore||!this.filter(s.path,s),s.ignore?(this[nn]("ignoredEntry",s),this[pt]=s.remain?"ignore":"header",s.resume()):(s.remain?this[pt]="body":(this[pt]="header",s.end()),this[Xt]?this[Kt].push(s):(this[Kt].push(s),this[yl]())))}}}[B1](e){let r=!0;return e?Array.isArray(e)?this.emit.apply(this,e):(this[Xt]=e,this.emit("entry",e),e.emittedEnd||(e.on("end",n=>this[yl]()),r=!1)):(this[Xt]=null,r=!1),r}[yl](){do;while(this[B1](this[Kt].shift()));if(!this[Kt].length){let e=this[Xt];!e||e.flowing||e.size===e.remain?this[os]||this.emit("drain"):e.once("drain",n=>this.emit("drain"))}}[vl](e,r){let n=this[tn],i=n.blockRemain,s=i>=e.length&&r===0?e:e.slice(r,r+i);return n.write(s),n.blockRemain||(this[pt]="header",this[tn]=null,n.end()),s.length}[z1](e,r){let n=this[tn],i=this[vl](e,r);return this[tn]||this[U1](n),i}[nn](e,r,n){!this[Kt].length&&!this[Xt]?this.emit(e,r,n):this[Kt].push([e,r,n])}[U1](e){switch(this[nn]("meta",this[Or]),e.type){case"ExtendedHeader":case"OldExtendedHeader":this[dt]=M1.parse(this[Or],this[dt],!1);break;case"GlobalExtendedHeader":this[ss]=M1.parse(this[Or],this[ss],!0);break;case"NextFileHasLongPath":case"OldGnuLongPath":this[dt]=this[dt]||Object.create(null),this[dt].path=this[Or].replace(/\0.*/,"");break;case"NextFileHasLongLinkpath":this[dt]=this[dt]||Object.create(null),this[dt].linkpath=this[Or].replace(/\0.*/,"");break;default:throw new Error("unknown meta: "+e.type)}}abort(e){this[Rr]=!0,this.emit("abort",e),this.warn("TAR_ABORT",e,{recoverable:!1})}write(e){if(this[Rr])return;if(this[et]===null&&e){if(this[ce]&&(e=Buffer.concat([this[ce],e]),this[ce]=null),e.lengththis[Yo](s)),this[et].on("error",s=>this.abort(s)),this[et].on("end",s=>{this[rn]=!0,this[Yo]()}),this[os]=!0;let i=this[et][n?"end":"write"](e);return this[os]=!1,i}}this[os]=!0,this[et]?this[et].write(e):this[Yo](e),this[os]=!1;let r=this[Kt].length?!1:this[Xt]?this[Xt].flowing:!0;return!r&&!this[Kt].length&&this[Xt].once("drain",n=>this.emit("drain")),r}[bl](e){e&&!this[Rr]&&(this[ce]=this[ce]?Buffer.concat([this[ce],e]):e)}[El](){if(this[rn]&&!this[G1]&&!this[Rr]&&!this[Ko]){this[G1]=!0;let e=this[tn];if(e&&e.blockRemain){let r=this[ce]?this[ce].length:0;this.warn("TAR_BAD_ARCHIVE",`Truncated input (needed ${e.blockRemain} more bytes, only ${r} available)`,{entry:e}),this[ce]&&e.write(this[ce]),e.end()}this[nn](Zo)}}[Yo](e){if(this[Ko])this[bl](e);else if(!e&&!this[ce])this[El]();else{if(this[Ko]=!0,this[ce]){this[bl](e);let r=this[ce];this[ce]=null,this[Xo](r)}else this[Xo](e);for(;this[ce]&&this[ce].length>=512&&!this[Rr]&&!this[Qo];){let r=this[ce];this[ce]=null,this[Xo](r)}this[Ko]=!1}(!this[ce]||this[rn])&&this[El]()}[Xo](e){let r=0,n=e.length;for(;r+512<=n&&!this[Rr]&&!this[Qo];)switch(this[pt]){case"begin":case"header":this[H1](e,r),r+=512;break;case"ignore":case"body":r+=this[vl](e,r);break;case"meta":r+=this[z1](e,r);break;default:throw new Error("invalid state: "+this[pt])}r{"use strict";var xN=Dn(),V1=ea(),Xn=require("fs"),NN=Yn(),Y1=require("path");W1.exports=(t,e,r)=>{typeof t=="function"?(r=t,e=null,t={}):Array.isArray(t)&&(e=t,t={}),typeof e=="function"&&(r=e,e=null),e?e=Array.from(e):e=[];let n=xN(t);if(n.sync&&typeof r=="function")throw new TypeError("callback not supported for sync tar functions");if(!n.file&&typeof r=="function")throw new TypeError("callback only supported with file option");return e.length&&PN(n,e),n.noResume||IN(n),n.file&&n.sync?DN(n):n.file?FN(n,r):X1(n)};var IN=t=>{let e=t.onentry;t.onentry=e?r=>{e(r),r.resume()}:r=>r.resume()},PN=(t,e)=>{let r=new Map(e.map(s=>[s.replace(/\/+$/,""),!0])),n=t.filter,i=(s,o)=>{let a=o||Y1.parse(s).root||".",u=s===a?!1:r.has(s)?r.get(s):i(Y1.dirname(s),a);return r.set(s,u),u};t.filter=n?(s,o)=>n(s,o)&&i(s.replace(/\/+$/,"")):s=>i(s.replace(/\/+$/,""))},DN=t=>{let e=X1(t),r=t.file,n=!0,i;try{let s=Xn.statSync(r),o=t.maxReadSize||16*1024*1024;if(s.size{let r=new V1(t),n=t.maxReadSize||16*1024*1024,i=t.file,s=new Promise((o,a)=>{r.on("error",a),r.on("end",o),Xn.stat(i,(u,c)=>{if(u)a(u);else{let l=new NN.ReadStream(i,{readSize:n,size:c.size});l.on("error",a),l.pipe(r)}})});return e?s.then(e,e):s},X1=t=>new V1(t)});var tb=d((xj,K1)=>{"use strict";var kN=Dn(),ra=Uo(),Z1=Yn(),J1=ta(),Q1=require("path");K1.exports=(t,e,r)=>{if(typeof e=="function"&&(r=e),Array.isArray(t)&&(e=t,t={}),!e||!Array.isArray(e)||!e.length)throw new TypeError("no files or directories specified");e=Array.from(e);let n=kN(t);if(n.sync&&typeof r=="function")throw new TypeError("callback not supported for sync tar functions");if(!n.file&&typeof r=="function")throw new TypeError("callback only supported with file option");return n.file&&n.sync?jN(n,e):n.file?qN(n,e,r):n.sync?$N(n,e):MN(n,e)};var jN=(t,e)=>{let r=new ra.Sync(t),n=new Z1.WriteStreamSync(t.file,{mode:t.mode||438});r.pipe(n),eb(r,e)},qN=(t,e,r)=>{let n=new ra(t),i=new Z1.WriteStream(t.file,{mode:t.mode||438});n.pipe(i);let s=new Promise((o,a)=>{i.on("error",a),i.on("close",o),n.on("error",a)});return wl(n,e),r?s.then(r,r):s},eb=(t,e)=>{e.forEach(r=>{r.charAt(0)==="@"?J1({file:Q1.resolve(t.cwd,r.substr(1)),sync:!0,noResume:!0,onentry:n=>t.add(n)}):t.add(r)}),t.end()},wl=(t,e)=>{for(;e.length;){let r=e.shift();if(r.charAt(0)==="@")return J1({file:Q1.resolve(t.cwd,r.substr(1)),noResume:!0,onentry:n=>t.add(n)}).then(n=>wl(t,e));t.add(r)}t.end()},$N=(t,e)=>{let r=new ra.Sync(t);return eb(r,e),r},MN=(t,e)=>{let r=new ra(t);return wl(r,e),r}});var Sl=d((Nj,rb)=>{"use strict";var BN=Dn(),nb=Uo(),mt=require("fs"),ib=Yn(),sb=ta(),ob=require("path"),ab=qn();rb.exports=(t,e,r)=>{let n=BN(t);if(!n.file)throw new TypeError("file is required");if(n.gzip)throw new TypeError("cannot append to compressed archives");if(!e||!Array.isArray(e)||!e.length)throw new TypeError("no files or directories specified");return e=Array.from(e),n.sync?UN(n,e):GN(n,e,r)};var UN=(t,e)=>{let r=new nb.Sync(t),n=!0,i,s;try{try{i=mt.openSync(t.file,"r+")}catch(u){if(u.code==="ENOENT")i=mt.openSync(t.file,"w+");else throw u}let o=mt.fstatSync(i),a=Buffer.alloc(512);e:for(s=0;so.size)break;s+=c,t.mtimeCache&&t.mtimeCache.set(u.path,u.mtime)}n=!1,zN(t,r,s,i,e)}finally{if(n)try{mt.closeSync(i)}catch(o){}}},zN=(t,e,r,n,i)=>{let s=new ib.WriteStreamSync(t.file,{fd:n,start:r});e.pipe(s),HN(e,i)},GN=(t,e,r)=>{e=Array.from(e);let n=new nb(t),i=(o,a,u)=>{let c=(m,h)=>{m?mt.close(o,E=>u(m)):u(null,h)},l=0;if(a===0)return c(null,0);let f=0,p=Buffer.alloc(512),y=(m,h)=>{if(m)return c(m);if(f+=h,f<512&&h)return mt.read(o,p,f,p.length-f,l+f,y);if(l===0&&p[0]===31&&p[1]===139)return c(new Error("cannot append to compressed archives"));if(f<512)return c(null,l);let E=new ab(p);if(!E.cksumValid)return c(null,l);let O=512*Math.ceil(E.size/512);if(l+O+512>a||(l+=O+512,l>=a))return c(null,l);t.mtimeCache&&t.mtimeCache.set(E.path,E.mtime),f=0,mt.read(o,p,0,512,l,y)};mt.read(o,p,0,512,l,y)},s=new Promise((o,a)=>{n.on("error",a);let u="r+",c=(l,f)=>{if(l&&l.code==="ENOENT"&&u==="r+")return u="w+",mt.open(t.file,u,c);if(l)return a(l);mt.fstat(f,(p,y)=>{if(p)return a(p);i(f,y.size,(m,h)=>{if(m)return a(m);let E=new ib.WriteStream(t.file,{fd:f,start:h});n.pipe(E),E.on("error",a),E.on("close",o),ub(n,e)})})};mt.open(t.file,u,c)});return r?s.then(r,r):s},HN=(t,e)=>{e.forEach(r=>{r.charAt(0)==="@"?sb({file:ob.resolve(t.cwd,r.substr(1)),sync:!0,noResume:!0,onentry:n=>t.add(n)}):t.add(r)}),t.end()},ub=(t,e)=>{for(;e.length;){let r=e.shift();if(r.charAt(0)==="@")return sb({file:ob.resolve(t.cwd,r.substr(1)),noResume:!0,onentry:n=>t.add(n)}).then(n=>ub(t,e));t.add(r)}t.end()}});var lb=d((Ij,cb)=>{"use strict";var WN=Dn(),VN=Sl();cb.exports=(t,e,r)=>{let n=WN(t);if(!n.file)throw new TypeError("file is required");if(n.gzip)throw new TypeError("cannot append to compressed archives");if(!e||!Array.isArray(e)||!e.length)throw new TypeError("no files or directories specified");return e=Array.from(e),YN(n),VN(n,e,r)};var YN=t=>{let e=t.filter;t.mtimeCache||(t.mtimeCache=new Map),t.filter=e?(r,n)=>e(r,n)&&!(t.mtimeCache.get(r)>n.mtime):(r,n)=>!(t.mtimeCache.get(r)>n.mtime)}});var pb=d((Pj,fb)=>{var{promisify:hb}=require("util"),Cr=require("fs"),XN=t=>{if(!t)t={mode:511,fs:Cr};else if(typeof t=="object")t={mode:511,fs:Cr,...t};else if(typeof t=="number")t={mode:t,fs:Cr};else if(typeof t=="string")t={mode:parseInt(t,8),fs:Cr};else throw new TypeError("invalid options argument");return t.mkdir=t.mkdir||t.fs.mkdir||Cr.mkdir,t.mkdirAsync=hb(t.mkdir),t.stat=t.stat||t.fs.stat||Cr.stat,t.statAsync=hb(t.stat),t.statSync=t.statSync||t.fs.statSync||Cr.statSync,t.mkdirSync=t.mkdirSync||t.fs.mkdirSync||Cr.mkdirSync,t};fb.exports=XN});var mb=d((Dj,db)=>{var KN=process.env.__TESTING_MKDIRP_PLATFORM__||process.platform,{resolve:ZN,parse:JN}=require("path"),QN=t=>{if(/\0/.test(t))throw Object.assign(new TypeError("path must be a string without null bytes"),{path:t,code:"ERR_INVALID_ARG_VALUE"});if(t=ZN(t),KN==="win32"){let e=/[*|"<>?:]/,{root:r}=JN(t);if(e.test(t.substr(r.length)))throw Object.assign(new Error("Illegal characters in path."),{path:t,code:"EINVAL"})}return t};db.exports=QN});var Eb=d((Fj,gb)=>{var{dirname:yb}=require("path"),vb=(t,e,r=void 0)=>r===e?Promise.resolve():t.statAsync(e).then(n=>n.isDirectory()?r:void 0,n=>n.code==="ENOENT"?vb(t,yb(e),e):void 0),bb=(t,e,r=void 0)=>{if(r!==e)try{return t.statSync(e).isDirectory()?r:void 0}catch(n){return n.code==="ENOENT"?bb(t,yb(e),e):void 0}};gb.exports={findMade:vb,findMadeSync:bb}});var Cl=d((kj,wb)=>{var{dirname:Sb}=require("path"),Ol=(t,e,r)=>{e.recursive=!1;let n=Sb(t);return n===t?e.mkdirAsync(t,e).catch(i=>{if(i.code!=="EISDIR")throw i}):e.mkdirAsync(t,e).then(()=>r||t,i=>{if(i.code==="ENOENT")return Ol(n,e).then(s=>Ol(t,e,s));if(i.code!=="EEXIST"&&i.code!=="EROFS")throw i;return e.statAsync(t).then(s=>{if(s.isDirectory())return r;throw i},()=>{throw i})})},Rl=(t,e,r)=>{let n=Sb(t);if(e.recursive=!1,n===t)try{return e.mkdirSync(t,e)}catch(i){if(i.code!=="EISDIR")throw i;return}try{return e.mkdirSync(t,e),r||t}catch(i){if(i.code==="ENOENT")return Rl(t,e,Rl(n,e,r));if(i.code!=="EEXIST"&&i.code!=="EROFS")throw i;try{if(!e.statSync(t).isDirectory())throw i}catch(s){throw i}}};wb.exports={mkdirpManual:Ol,mkdirpManualSync:Rl}});var Cb=d((jj,Ob)=>{var{dirname:Rb}=require("path"),{findMade:eI,findMadeSync:tI}=Eb(),{mkdirpManual:rI,mkdirpManualSync:nI}=Cl(),iI=(t,e)=>(e.recursive=!0,Rb(t)===t?e.mkdirAsync(t,e):eI(e,t).then(n=>e.mkdirAsync(t,e).then(()=>n).catch(i=>{if(i.code==="ENOENT")return rI(t,e);throw i}))),sI=(t,e)=>{if(e.recursive=!0,Rb(t)===t)return e.mkdirSync(t,e);let n=tI(e,t);try{return e.mkdirSync(t,e),n}catch(i){if(i.code==="ENOENT")return nI(t,e);throw i}};Ob.exports={mkdirpNative:iI,mkdirpNativeSync:sI}});var Lb=d((qj,_b)=>{var Ab=require("fs"),oI=process.env.__TESTING_MKDIRP_NODE_VERSION__||process.version,_l=oI.replace(/^v/,"").split("."),Tb=+_l[0]>10||+_l[0]==10&&+_l[1]>=12,aI=Tb?t=>t.mkdir===Ab.mkdir:()=>!1,uI=Tb?t=>t.mkdirSync===Ab.mkdirSync:()=>!1;_b.exports={useNative:aI,useNativeSync:uI}});var Fb=d(($j,xb)=>{var Kn=pb(),Zn=mb(),{mkdirpNative:Nb,mkdirpNativeSync:Ib}=Cb(),{mkdirpManual:Pb,mkdirpManualSync:Db}=Cl(),{useNative:cI,useNativeSync:lI}=Lb(),Jn=(t,e)=>(t=Zn(t),e=Kn(e),cI(e)?Nb(t,e):Pb(t,e)),fI=(t,e)=>(t=Zn(t),e=Kn(e),lI(e)?Ib(t,e):Db(t,e));Jn.sync=fI;Jn.native=(t,e)=>Nb(Zn(t),Kn(e));Jn.manual=(t,e)=>Pb(Zn(t),Kn(e));Jn.nativeSync=(t,e)=>Ib(Zn(t),Kn(e));Jn.manualSync=(t,e)=>Db(Zn(t),Kn(e));xb.exports=Jn});var Ub=d((Mj,kb)=>{"use strict";var gt=require("fs"),on=require("path"),hI=gt.lchown?"lchown":"chown",pI=gt.lchownSync?"lchownSync":"chownSync",jb=gt.lchown&&!process.version.match(/v1[1-9]+\./)&&!process.version.match(/v10\.[6-9]/),qb=(t,e,r)=>{try{return gt[pI](t,e,r)}catch(n){if(n.code!=="ENOENT")throw n}},dI=(t,e,r)=>{try{return gt.chownSync(t,e,r)}catch(n){if(n.code!=="ENOENT")throw n}},mI=jb?(t,e,r,n)=>i=>{!i||i.code!=="EISDIR"?n(i):gt.chown(t,e,r,n)}:(t,e,r,n)=>n,Al=jb?(t,e,r)=>{try{return qb(t,e,r)}catch(n){if(n.code!=="EISDIR")throw n;dI(t,e,r)}}:(t,e,r)=>qb(t,e,r),gI=process.version,$b=(t,e,r)=>gt.readdir(t,e,r),yI=(t,e)=>gt.readdirSync(t,e);/^v4\./.test(gI)&&($b=(t,e,r)=>gt.readdir(t,r));var na=(t,e,r,n)=>{gt[hI](t,e,r,mI(t,e,r,i=>{n(i&&i.code!=="ENOENT"?i:null)}))},Mb=(t,e,r,n,i)=>{if(typeof e=="string")return gt.lstat(on.resolve(t,e),(s,o)=>{if(s)return i(s.code!=="ENOENT"?s:null);o.name=e,Mb(t,o,r,n,i)});if(e.isDirectory())Tl(on.resolve(t,e.name),r,n,s=>{if(s)return i(s);let o=on.resolve(t,e.name);na(o,r,n,i)});else{let s=on.resolve(t,e.name);na(s,r,n,i)}},Tl=(t,e,r,n)=>{$b(t,{withFileTypes:!0},(i,s)=>{if(i){if(i.code==="ENOENT")return n();if(i.code!=="ENOTDIR"&&i.code!=="ENOTSUP")return n(i)}if(i||!s.length)return na(t,e,r,n);let o=s.length,a=null,u=c=>{if(!a){if(c)return n(a=c);if(--o==0)return na(t,e,r,n)}};s.forEach(c=>Mb(t,c,e,r,u))})},vI=(t,e,r,n)=>{if(typeof e=="string")try{let i=gt.lstatSync(on.resolve(t,e));i.name=e,e=i}catch(i){if(i.code==="ENOENT")return;throw i}e.isDirectory()&&Bb(on.resolve(t,e.name),r,n),Al(on.resolve(t,e.name),r,n)},Bb=(t,e,r)=>{let n;try{n=yI(t,{withFileTypes:!0})}catch(i){if(i.code==="ENOENT")return;if(i.code==="ENOTDIR"||i.code==="ENOTSUP")return Al(t,e,r);throw i}return n&&n.length&&n.forEach(i=>vI(t,i,e,r)),Al(t,e,r)};kb.exports=Tl;Tl.sync=Bb});var Wb=d((Bj,Ll)=>{"use strict";var Gb=Fb(),yt=require("fs"),ia=require("path"),zb=Ub(),xl=class extends Error{constructor(e,r){super("Cannot extract through symbolic link");this.path=r,this.symlink=e}get name(){return"SylinkError"}},as=class extends Error{constructor(e,r){super(r+": Cannot cd into '"+e+"'");this.path=e,this.code=r}get name(){return"CwdError"}};Ll.exports=(t,e,r)=>{let n=e.umask,i=e.mode|448,s=(i&n)!=0,o=e.uid,a=e.gid,u=typeof o=="number"&&typeof a=="number"&&(o!==e.processUid||a!==e.processGid),c=e.preserve,l=e.unlink,f=e.cache,p=e.cwd,y=(E,O)=>{E?r(E):(f.set(t,!0),O&&u?zb(O,o,a,A=>y(A)):s?yt.chmod(t,i,r):r())};if(f&&f.get(t)===!0)return y();if(t===p)return yt.stat(t,(E,O)=>{(E||!O.isDirectory())&&(E=new as(t,E&&E.code||"ENOTDIR")),y(E)});if(c)return Gb(t,{mode:i}).then(E=>y(null,E),y);let h=ia.relative(p,t).split(/\/|\\/);sa(p,h,i,f,l,p,null,y)};var sa=(t,e,r,n,i,s,o,a)=>{if(!e.length)return a(null,o);let u=e.shift(),c=t+"/"+u;if(n.get(c))return sa(c,e,r,n,i,s,o,a);yt.mkdir(c,r,Hb(c,e,r,n,i,s,o,a))},Hb=(t,e,r,n,i,s,o,a)=>u=>{if(u){if(u.path&&ia.dirname(u.path)===s&&(u.code==="ENOTDIR"||u.code==="ENOENT"))return a(new as(s,u.code));yt.lstat(t,(c,l)=>{if(c)a(c);else if(l.isDirectory())sa(t,e,r,n,i,s,o,a);else if(i)yt.unlink(t,f=>{if(f)return a(f);yt.mkdir(t,r,Hb(t,e,r,n,i,s,o,a))});else{if(l.isSymbolicLink())return a(new xl(t,t+"/"+e.join("/")));a(u)}})}else o=o||t,sa(t,e,r,n,i,s,o,a)};Ll.exports.sync=(t,e)=>{let r=e.umask,n=e.mode|448,i=(n&r)!=0,s=e.uid,o=e.gid,a=typeof s=="number"&&typeof o=="number"&&(s!==e.processUid||o!==e.processGid),u=e.preserve,c=e.unlink,l=e.cache,f=e.cwd,p=E=>{l.set(t,!0),E&&a&&zb.sync(E,s,o),i&&yt.chmodSync(t,n)};if(l&&l.get(t)===!0)return p();if(t===f){let E=!1,O="ENOTDIR";try{E=yt.statSync(t).isDirectory()}catch(A){O=A.code}finally{if(!E)throw new as(t,O)}p();return}if(u)return p(Gb.sync(t,n));let m=ia.relative(f,t).split(/\/|\\/),h=null;for(let E=m.shift(),O=f;E&&(O+="/"+E);E=m.shift())if(!l.get(O))try{yt.mkdirSync(O,n),h=h||O,l.set(O,!0)}catch(A){if(A.path&&ia.dirname(A.path)===f&&(A.code==="ENOTDIR"||A.code==="ENOENT"))return new as(f,A.code);let q=yt.lstatSync(O);if(q.isDirectory()){l.set(O,!0);continue}else if(c){yt.unlinkSync(O),yt.mkdirSync(O,n),h=h||O,l.set(O,!0);continue}else if(q.isSymbolicLink())return new xl(O,O+"/"+m.join("/"))}return p(h)}});var Xb=d((Uj,Vb)=>{var Yb=require("assert");Vb.exports=()=>{let t=new Map,e=new Map,{join:r}=require("path"),n=l=>r(l).split(/[\\/]/).slice(0,-1).reduce((f,p)=>f.length?f.concat(r(f[f.length-1],p)):[p],[]),i=new Set,s=l=>{let f=e.get(l);if(!f)throw new Error("function does not have any path reservations");return{paths:f.paths.map(p=>t.get(p)),dirs:[...f.dirs].map(p=>t.get(p))}},o=l=>{let{paths:f,dirs:p}=s(l);return f.every(y=>y[0]===l)&&p.every(y=>y[0]instanceof Set&&y[0].has(l))},a=l=>i.has(l)||!o(l)?!1:(i.add(l),l(()=>u(l)),!0),u=l=>{if(!i.has(l))return!1;let{paths:f,dirs:p}=e.get(l),y=new Set;return f.forEach(m=>{let h=t.get(m);Yb.equal(h[0],l),h.length===1?t.delete(m):(h.shift(),typeof h[0]=="function"?y.add(h[0]):h[0].forEach(E=>y.add(E)))}),p.forEach(m=>{let h=t.get(m);Yb(h[0]instanceof Set),h[0].size===1&&h.length===1?t.delete(m):h[0].size===1?(h.shift(),y.add(h[0])):h[0].delete(l)}),i.delete(l),y.forEach(m=>a(m)),!0};return{check:o,reserve:(l,f)=>{let p=new Set(l.map(y=>n(y)).reduce((y,m)=>y.concat(m)));return e.set(f,{dirs:p,paths:l}),l.forEach(y=>{let m=t.get(y);m?m.push(f):t.set(y,[f])}),p.forEach(y=>{let m=t.get(y);m?m[m.length-1]instanceof Set?m[m.length-1].add(f):m.push(new Set([f])):t.set(y,[new Set([f])])}),a(f)}}}});var Jb=d((Gj,Kb)=>{var bI=process.env.__FAKE_PLATFORM__||process.platform,EI=bI==="win32",wI=global.__FAKE_TESTING_FS__||require("fs"),{O_CREAT:SI,O_TRUNC:OI,O_WRONLY:RI,UV_FS_O_FILEMAP:Zb=0}=wI.constants,CI=EI&&!!Zb,_I=512*1024,AI=Zb|OI|SI|RI;Kb.exports=CI?t=>t<_I?AI:"w":()=>"w"});var ql=d((zj,Qb)=>{"use strict";var TI=require("assert"),LI=ea(),K=require("fs"),xI=Yn(),Zt=require("path"),eE=Wb(),tE=Wc(),NI=Xb(),rE=Symbol("onEntry"),Nl=Symbol("checkFs"),nE=Symbol("checkFs2"),Il=Symbol("isReusable"),Jt=Symbol("makeFs"),Pl=Symbol("file"),Dl=Symbol("directory"),oa=Symbol("link"),iE=Symbol("symlink"),sE=Symbol("hardlink"),oE=Symbol("unsupported"),aE=Symbol("checkPath"),Qn=Symbol("mkdir"),ze=Symbol("onError"),aa=Symbol("pending"),uE=Symbol("pend"),ei=Symbol("unpend"),Fl=Symbol("ended"),kl=Symbol("maybeClose"),jl=Symbol("skip"),us=Symbol("doChown"),cs=Symbol("uid"),ls=Symbol("gid"),cE=require("crypto"),lE=Jb(),ua=()=>{throw new Error("sync function called cb somehow?!?")},II=(t,e)=>{if(process.platform!=="win32")return K.unlink(t,e);let r=t+".DELETE."+cE.randomBytes(16).toString("hex");K.rename(t,r,n=>{if(n)return e(n);K.unlink(r,e)})},PI=t=>{if(process.platform!=="win32")return K.unlinkSync(t);let e=t+".DELETE."+cE.randomBytes(16).toString("hex");K.renameSync(t,e),K.unlinkSync(e)},fE=(t,e,r)=>t===t>>>0?t:e===e>>>0?e:r,ca=class extends LI{constructor(e){if(e||(e={}),e.ondone=r=>{this[Fl]=!0,this[kl]()},super(e),this.reservations=NI(),this.transform=typeof e.transform=="function"?e.transform:null,this.writable=!0,this.readable=!1,this[aa]=0,this[Fl]=!1,this.dirCache=e.dirCache||new Map,typeof e.uid=="number"||typeof e.gid=="number"){if(typeof e.uid!="number"||typeof e.gid!="number")throw new TypeError("cannot set owner without number uid and gid");if(e.preserveOwner)throw new TypeError("cannot preserve owner in archive and also set owner explicitly");this.uid=e.uid,this.gid=e.gid,this.setOwner=!0}else this.uid=null,this.gid=null,this.setOwner=!1;e.preserveOwner===void 0&&typeof e.uid!="number"?this.preserveOwner=process.getuid&&process.getuid()===0:this.preserveOwner=!!e.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=e.forceChown===!0,this.win32=!!e.win32||process.platform==="win32",this.newer=!!e.newer,this.keep=!!e.keep,this.noMtime=!!e.noMtime,this.preservePaths=!!e.preservePaths,this.unlink=!!e.unlink,this.cwd=Zt.resolve(e.cwd||process.cwd()),this.strip=+e.strip||0,this.processUmask=e.noChmod?0:process.umask(),this.umask=typeof e.umask=="number"?e.umask:this.processUmask,this.dmode=e.dmode||511&~this.umask,this.fmode=e.fmode||438&~this.umask,this.on("entry",r=>this[rE](r))}warn(e,r,n={}){return(e==="TAR_BAD_ARCHIVE"||e==="TAR_ABORT")&&(n.recoverable=!1),super.warn(e,r,n)}[kl](){this[Fl]&&this[aa]===0&&(this.emit("prefinish"),this.emit("finish"),this.emit("end"),this.emit("close"))}[aE](e){if(this.strip){let r=e.path.split(/\/|\\/);if(r.length=this.strip&&(e.linkpath=n.slice(this.strip).join("/"))}}if(!this.preservePaths){let r=e.path;if(r.match(/(^|\/|\\)\.\.(\\|\/|$)/))return this.warn("TAR_ENTRY_ERROR","path contains '..'",{entry:e,path:r}),!1;if(Zt.win32.isAbsolute(r)){let n=Zt.win32.parse(r);e.path=r.substr(n.root.length);let i=n.root;this.warn("TAR_ENTRY_INFO",`stripping ${i} from absolute path`,{entry:e,path:r})}}if(this.win32){let r=Zt.win32.parse(e.path);e.path=r.root===""?tE.encode(e.path):r.root+tE.encode(e.path.substr(r.root.length))}return Zt.isAbsolute(e.path)?e.absolute=e.path:e.absolute=Zt.resolve(this.cwd,e.path),!0}[rE](e){if(!this[aE](e))return e.resume();switch(TI.equal(typeof e.absolute,"string"),e.type){case"Directory":case"GNUDumpDir":e.mode&&(e.mode=e.mode|448);case"File":case"OldFile":case"ContiguousFile":case"Link":case"SymbolicLink":return this[Nl](e);case"CharacterDevice":case"BlockDevice":case"FIFO":default:return this[oE](e)}}[ze](e,r){e.name==="CwdError"?this.emit("error",e):(this.warn("TAR_ENTRY_ERROR",e,{entry:r}),this[ei](),r.resume())}[Qn](e,r,n){eE(e,{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},n)}[us](e){return this.forceChown||this.preserveOwner&&(typeof e.uid=="number"&&e.uid!==this.processUid||typeof e.gid=="number"&&e.gid!==this.processGid)||typeof this.uid=="number"&&this.uid!==this.processUid||typeof this.gid=="number"&&this.gid!==this.processGid}[cs](e){return fE(this.uid,e.uid,this.processUid)}[ls](e){return fE(this.gid,e.gid,this.processGid)}[Pl](e,r){let n=e.mode&4095||this.fmode,i=new xI.WriteStream(e.absolute,{flags:lE(e.size),mode:n,autoClose:!1});i.on("error",u=>this[ze](u,e));let s=1,o=u=>{if(u)return this[ze](u,e);--s==0&&K.close(i.fd,c=>{r(),c?this[ze](c,e):this[ei]()})};i.on("finish",u=>{let c=e.absolute,l=i.fd;if(e.mtime&&!this.noMtime){s++;let f=e.atime||new Date,p=e.mtime;K.futimes(l,f,p,y=>y?K.utimes(c,f,p,m=>o(m&&y)):o())}if(this[us](e)){s++;let f=this[cs](e),p=this[ls](e);K.fchown(l,f,p,y=>y?K.chown(c,f,p,m=>o(m&&y)):o())}o()});let a=this.transform&&this.transform(e)||e;a!==e&&(a.on("error",u=>this[ze](u,e)),e.pipe(a)),a.pipe(i)}[Dl](e,r){let n=e.mode&4095||this.dmode;this[Qn](e.absolute,n,i=>{if(i)return r(),this[ze](i,e);let s=1,o=a=>{--s==0&&(r(),this[ei](),e.resume())};e.mtime&&!this.noMtime&&(s++,K.utimes(e.absolute,e.atime||new Date,e.mtime,o)),this[us](e)&&(s++,K.chown(e.absolute,this[cs](e),this[ls](e),o)),o()})}[oE](e){e.unsupported=!0,this.warn("TAR_ENTRY_UNSUPPORTED",`unsupported entry type: ${e.type}`,{entry:e}),e.resume()}[iE](e,r){this[oa](e,e.linkpath,"symlink",r)}[sE](e,r){this[oa](e,Zt.resolve(this.cwd,e.linkpath),"link",r)}[uE](){this[aa]++}[ei](){this[aa]--,this[kl]()}[jl](e){this[ei](),e.resume()}[Il](e,r){return e.type==="File"&&!this.unlink&&r.isFile()&&r.nlink<=1&&process.platform!=="win32"}[Nl](e){this[uE]();let r=[e.path];e.linkpath&&r.push(e.linkpath),this.reservations.reserve(r,n=>this[nE](e,n))}[nE](e,r){this[Qn](Zt.dirname(e.absolute),this.dmode,n=>{if(n)return r(),this[ze](n,e);K.lstat(e.absolute,(i,s)=>{s&&(this.keep||this.newer&&s.mtime>e.mtime)?(this[jl](e),r()):i||this[Il](e,s)?this[Jt](null,e,r):s.isDirectory()?e.type==="Directory"?!this.noChmod&&(!e.mode||(s.mode&4095)===e.mode)?this[Jt](null,e,r):K.chmod(e.absolute,e.mode,o=>this[Jt](o,e,r)):K.rmdir(e.absolute,o=>this[Jt](o,e,r)):II(e.absolute,o=>this[Jt](o,e,r))})})}[Jt](e,r,n){if(e)return this[ze](e,r);switch(r.type){case"File":case"OldFile":case"ContiguousFile":return this[Pl](r,n);case"Link":return this[sE](r,n);case"SymbolicLink":return this[iE](r,n);case"Directory":case"GNUDumpDir":return this[Dl](r,n)}}[oa](e,r,n,i){K[n](r,e.absolute,s=>{if(s)return this[ze](s,e);i(),this[ei](),e.resume()})}},hE=class extends ca{[Nl](e){let r=this[Qn](Zt.dirname(e.absolute),this.dmode,ua);if(r)return this[ze](r,e);try{let n=K.lstatSync(e.absolute);if(this.keep||this.newer&&n.mtime>e.mtime)return this[jl](e);if(this[Il](e,n))return this[Jt](null,e,ua);try{return n.isDirectory()?e.type==="Directory"?!this.noChmod&&e.mode&&(n.mode&4095)!==e.mode&&K.chmodSync(e.absolute,e.mode):K.rmdirSync(e.absolute):PI(e.absolute),this[Jt](null,e,ua)}catch(i){return this[ze](i,e)}}catch(n){return this[Jt](null,e,ua)}}[Pl](e,r){let n=e.mode&4095||this.fmode,i=a=>{let u;try{K.closeSync(s)}catch(c){u=c}(a||u)&&this[ze](a||u,e)},s;try{s=K.openSync(e.absolute,lE(e.size),n)}catch(a){return i(a)}let o=this.transform&&this.transform(e)||e;o!==e&&(o.on("error",a=>this[ze](a,e)),e.pipe(o)),o.on("data",a=>{try{K.writeSync(s,a,0,a.length)}catch(u){i(u)}}),o.on("end",a=>{let u=null;if(e.mtime&&!this.noMtime){let c=e.atime||new Date,l=e.mtime;try{K.futimesSync(s,c,l)}catch(f){try{K.utimesSync(e.absolute,c,l)}catch(p){u=f}}}if(this[us](e)){let c=this[cs](e),l=this[ls](e);try{K.fchownSync(s,c,l)}catch(f){try{K.chownSync(e.absolute,c,l)}catch(p){u=u||f}}}i(u)})}[Dl](e,r){let n=e.mode&4095||this.dmode,i=this[Qn](e.absolute,n);if(i)return this[ze](i,e);if(e.mtime&&!this.noMtime)try{K.utimesSync(e.absolute,e.atime||new Date,e.mtime)}catch(s){}if(this[us](e))try{K.chownSync(e.absolute,this[cs](e),this[ls](e))}catch(s){}e.resume()}[Qn](e,r){try{return eE.sync(e,{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(n){return n}}[oa](e,r,n,i){try{K[n+"Sync"](r,e.absolute),e.resume()}catch(s){return this[ze](s,e)}}};ca.Sync=hE;Qb.exports=ca});var yE=d((Hj,pE)=>{"use strict";var DI=Dn(),la=ql(),dE=require("fs"),mE=Yn(),gE=require("path");pE.exports=(t,e,r)=>{typeof t=="function"?(r=t,e=null,t={}):Array.isArray(t)&&(e=t,t={}),typeof e=="function"&&(r=e,e=null),e?e=Array.from(e):e=[];let n=DI(t);if(n.sync&&typeof r=="function")throw new TypeError("callback not supported for sync tar functions");if(!n.file&&typeof r=="function")throw new TypeError("callback only supported with file option");return e.length&&FI(n,e),n.file&&n.sync?kI(n):n.file?jI(n,r):n.sync?qI(n):$I(n)};var FI=(t,e)=>{let r=new Map(e.map(s=>[s.replace(/\/+$/,""),!0])),n=t.filter,i=(s,o)=>{let a=o||gE.parse(s).root||".",u=s===a?!1:r.has(s)?r.get(s):i(gE.dirname(s),a);return r.set(s,u),u};t.filter=n?(s,o)=>n(s,o)&&i(s.replace(/\/+$/,"")):s=>i(s.replace(/\/+$/,""))},kI=t=>{let e=new la.Sync(t),r=t.file,n=dE.statSync(r),i=t.maxReadSize||16*1024*1024;new mE.ReadStreamSync(r,{readSize:i,size:n.size}).pipe(e)},jI=(t,e)=>{let r=new la(t),n=t.maxReadSize||16*1024*1024,i=t.file,s=new Promise((o,a)=>{r.on("error",a),r.on("close",o),dE.stat(i,(u,c)=>{if(u)a(u);else{let l=new mE.ReadStream(i,{readSize:n,size:c.size});l.on("error",a),l.pipe(r)}})});return e?s.then(e,e):s},qI=t=>new la.Sync(t),$I=t=>new la(t)});var vE=d(ve=>{"use strict";ve.c=ve.create=tb();ve.r=ve.replace=Sl();ve.t=ve.list=ta();ve.u=ve.update=lb();ve.x=ve.extract=yE();ve.Pack=Uo();ve.Unpack=ql();ve.Parse=ea();ve.ReadEntry=Co();ve.WriteEntry=Qc();ve.Header=qn();ve.Pax=To();ve.types=Mc()});var bE=d($l=>{var an=require("path"),_r=process.platform==="win32",Ar=require("fs"),MI=process.env.NODE_DEBUG&&/fs/.test(process.env.NODE_DEBUG);function BI(){var t;if(MI){var e=new Error;t=r}else t=n;return t;function r(i){i&&(e.message=i.message,i=e,n(i))}function n(i){if(i){if(process.throwDeprecation)throw i;if(!process.noDeprecation){var s="fs: missing callback "+(i.stack||i.message);process.traceDeprecation?console.trace(s):console.error(s)}}}}function UI(t){return typeof t=="function"?t:BI()}var Vj=an.normalize;_r?Qt=/(.*?)(?:[\/\\]+|$)/g:Qt=/(.*?)(?:[\/]+|$)/g;var Qt;_r?fs=/^(?:[a-zA-Z]:|[\\\/]{2}[^\\\/]+[\\\/][^\\\/]+)?[\\\/]*/:fs=/^[\/]*/;var fs;$l.realpathSync=function(e,r){if(e=an.resolve(e),r&&Object.prototype.hasOwnProperty.call(r,e))return r[e];var n=e,i={},s={},o,a,u,c;l();function l(){var E=fs.exec(e);o=E[0].length,a=E[0],u=E[0],c="",_r&&!s[u]&&(Ar.lstatSync(u),s[u]=!0)}for(;o=e.length)return r&&(r[i]=e),n(null,e);Qt.lastIndex=a;var E=Qt.exec(e);return l=u,u+=E[0],c=l+E[1],a=Qt.lastIndex,o[c]||r&&r[c]===c?process.nextTick(p):r&&Object.prototype.hasOwnProperty.call(r,c)?h(r[c]):Ar.lstat(c,y)}function y(E,O){if(E)return n(E);if(!O.isSymbolicLink())return o[c]=!0,r&&(r[c]=c),process.nextTick(p);if(!_r){var A=O.dev.toString(32)+":"+O.ino.toString(32);if(s.hasOwnProperty(A))return m(null,s[A],c)}Ar.stat(c,function(q){if(q)return n(q);Ar.readlink(c,function(x,V){_r||(s[A]=V),m(x,V)})})}function m(E,O,A){if(E)return n(E);var q=an.resolve(l,O);r&&(r[A]=q),h(q)}function h(E){e=an.resolve(E,e.slice(a)),f()}}});var Gl=d((Xj,EE)=>{EE.exports=Tr;Tr.realpath=Tr;Tr.sync=Ml;Tr.realpathSync=Ml;Tr.monkeypatch=GI;Tr.unmonkeypatch=zI;var ti=require("fs"),Bl=ti.realpath,Ul=ti.realpathSync,HI=process.version,wE=/^v[0-5]\./.test(HI),SE=bE();function OE(t){return t&&t.syscall==="realpath"&&(t.code==="ELOOP"||t.code==="ENOMEM"||t.code==="ENAMETOOLONG")}function Tr(t,e,r){if(wE)return Bl(t,e,r);typeof e=="function"&&(r=e,e=null),Bl(t,e,function(n,i){OE(n)?SE.realpath(t,e,r):r(n,i)})}function Ml(t,e){if(wE)return Ul(t,e);try{return Ul(t,e)}catch(r){if(OE(r))return SE.realpathSync(t,e);throw r}}function GI(){ti.realpath=Tr,ti.realpathSync=Ml}function zI(){ti.realpath=Bl,ti.realpathSync=Ul}});var CE=d((Kj,RE)=>{RE.exports=function(t,e){for(var r=[],n=0;n{"use strict";_E.exports=AE;function AE(t,e,r){t instanceof RegExp&&(t=TE(t,r)),e instanceof RegExp&&(e=TE(e,r));var n=LE(t,e,r);return n&&{start:n[0],end:n[1],pre:r.slice(0,n[0]),body:r.slice(n[0]+t.length,n[1]),post:r.slice(n[1]+e.length)}}function TE(t,e){var r=e.match(t);return r?r[0]:null}AE.range=LE;function LE(t,e,r){var n,i,s,o,a,u=r.indexOf(t),c=r.indexOf(e,u+1),l=u;if(u>=0&&c>0){for(n=[],s=r.length;l>=0&&!a;)l==u?(n.push(l),u=r.indexOf(t,l+1)):n.length==1?a=[n.pop(),c]:(i=n.pop(),i=0?u:c;n.length&&(a=[s,o])}return a}});var qE=d((Jj,NE)=>{var VI=CE(),IE=xE();NE.exports=YI;var PE="\0SLASH"+Math.random()+"\0",DE="\0OPEN"+Math.random()+"\0",zl="\0CLOSE"+Math.random()+"\0",FE="\0COMMA"+Math.random()+"\0",kE="\0PERIOD"+Math.random()+"\0";function Hl(t){return parseInt(t,10)==t?parseInt(t,10):t.charCodeAt(0)}function XI(t){return t.split("\\\\").join(PE).split("\\{").join(DE).split("\\}").join(zl).split("\\,").join(FE).split("\\.").join(kE)}function KI(t){return t.split(PE).join("\\").split(DE).join("{").split(zl).join("}").split(FE).join(",").split(kE).join(".")}function jE(t){if(!t)return[""];var e=[],r=IE("{","}",t);if(!r)return t.split(",");var n=r.pre,i=r.body,s=r.post,o=n.split(",");o[o.length-1]+="{"+i+"}";var a=jE(s);return s.length&&(o[o.length-1]+=a.shift(),o.push.apply(o,a)),e.push.apply(e,o),e}function YI(t){return t?(t.substr(0,2)==="{}"&&(t="\\{\\}"+t.substr(2)),ri(XI(t),!0).map(KI)):[]}function ZI(t){return"{"+t+"}"}function JI(t){return/^-?0\d/.test(t)}function QI(t,e){return t<=e}function eP(t,e){return t>=e}function ri(t,e){var r=[],n=IE("{","}",t);if(!n||/\$$/.test(n.pre))return[t];var i=/^-?\d+\.\.-?\d+(?:\.\.-?\d+)?$/.test(n.body),s=/^[a-zA-Z]\.\.[a-zA-Z](?:\.\.-?\d+)?$/.test(n.body),o=i||s,a=n.body.indexOf(",")>=0;if(!o&&!a)return n.post.match(/,.*\}/)?(t=n.pre+"{"+n.body+zl+n.post,ri(t)):[t];var u;if(o)u=n.body.split(/\.\./);else if(u=jE(n.body),u.length===1&&(u=ri(u[0],!1).map(ZI),u.length===1)){var l=n.post.length?ri(n.post,!1):[""];return l.map(function(M){return n.pre+u[0]+M})}var c=n.pre,l=n.post.length?ri(n.post,!1):[""],f;if(o){var p=Hl(u[0]),y=Hl(u[1]),m=Math.max(u[0].length,u[1].length),h=u.length==3?Math.abs(Hl(u[2])):1,E=QI,O=y0){var j=new Array(V+1).join("0");q<0?x="-"+j+x.slice(1):x=j+x}}f.push(x)}}else f=VI(u,function(F){return ri(F,!1)});for(var P=0;P{$E.exports=vt;vt.Minimatch=Oe;var hs={sep:"/"};try{hs=require("path")}catch(t){}var Wl=vt.GLOBSTAR=Oe.GLOBSTAR={},tP=qE(),ME={"!":{open:"(?:(?!(?:",close:"))[^/]*?)"},"?":{open:"(?:",close:")?"},"+":{open:"(?:",close:")+"},"*":{open:"(?:",close:")*"},"@":{open:"(?:",close:")"}},Vl="[^/]",Yl=Vl+"*?",rP="(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?",nP="(?:(?!(?:\\/|^)\\.).)*?",BE=iP("().*{}+?[]^$\\!");function iP(t){return t.split("").reduce(function(e,r){return e[r]=!0,e},{})}var UE=/\/+/;vt.filter=sP;function sP(t,e){return e=e||{},function(r,n,i){return vt(r,t,e)}}function GE(t,e){t=t||{},e=e||{};var r={};return Object.keys(e).forEach(function(n){r[n]=e[n]}),Object.keys(t).forEach(function(n){r[n]=t[n]}),r}vt.defaults=function(t){if(!t||!Object.keys(t).length)return vt;var e=vt,r=function(i,s,o){return e.minimatch(i,s,GE(t,o))};return r.Minimatch=function(i,s){return new e.Minimatch(i,GE(t,s))},r};Oe.defaults=function(t){return!t||!Object.keys(t).length?Oe:vt.defaults(t).Minimatch};function vt(t,e,r){if(typeof e!="string")throw new TypeError("glob pattern string required");return r||(r={}),!r.nocomment&&e.charAt(0)==="#"?!1:e.trim()===""?t==="":new Oe(e,r).match(t)}function Oe(t,e){if(!(this instanceof Oe))return new Oe(t,e);if(typeof t!="string")throw new TypeError("glob pattern string required");e||(e={}),t=t.trim(),hs.sep!=="/"&&(t=t.split(hs.sep).join("/")),this.options=e,this.set=[],this.pattern=t,this.regexp=null,this.negate=!1,this.comment=!1,this.empty=!1,this.make()}Oe.prototype.debug=function(){};Oe.prototype.make=oP;function oP(){if(!this._made){var t=this.pattern,e=this.options;if(!e.nocomment&&t.charAt(0)==="#"){this.comment=!0;return}if(!t){this.empty=!0;return}this.parseNegate();var r=this.globSet=this.braceExpand();e.debug&&(this.debug=console.error),this.debug(this.pattern,r),r=this.globParts=r.map(function(n){return n.split(UE)}),this.debug(this.pattern,r),r=r.map(function(n,i,s){return n.map(this.parse,this)},this),this.debug(this.pattern,r),r=r.filter(function(n){return n.indexOf(!1)===-1}),this.debug(this.pattern,r),this.set=r}}Oe.prototype.parseNegate=aP;function aP(){var t=this.pattern,e=!1,r=this.options,n=0;if(!r.nonegate){for(var i=0,s=t.length;i1024*64)throw new TypeError("pattern is too long");var r=this.options;if(!r.noglobstar&&t==="**")return Wl;if(t==="")return"";var n="",i=!!r.nocase,s=!1,o=[],a=[],u,c=!1,l=-1,f=-1,p=t.charAt(0)==="."?"":r.dot?"(?!(?:^|\\/)\\.{1,2}(?:$|\\/))":"(?!\\.)",y=this;function m(){if(u){switch(u){case"*":n+=Yl,i=!0;break;case"?":n+=Vl,i=!0;break;default:n+="\\"+u;break}y.debug("clearStateChar %j %j",u,n),u=!1}}for(var h=0,E=t.length,O;h-1;z--){var S=a[z],F=n.slice(0,S.reStart),M=n.slice(S.reStart,S.reEnd-8),k=n.slice(S.reEnd-8,S.reEnd),U=n.slice(S.reEnd);k+=U;var he=F.split("(").length-1,ne=U;for(h=0;h=0&&(i=t[s],!i);s--);for(s=0;s{console.log(o),process.exit(typeof m=="number"?m:2)},c=()=>{console.log(typeof e.version=="string"?e.version:i.version),process.exit(0)};s._.length===0&&e.argv.length===1&&(s.version===!0&&e.autoVersion&&c(),s.help===!0&&e.autoHelp&&u(0));let l=s._;if(delete s._,!e.allowUnknownFlags){let m=l.filter(h=>typeof h=="string"&&h.startsWith("-"));m.length>0&&(fx(m),process.exit(2))}let f=JT(s,{exclude:["--",/^\w$/]}),p={...f};px(f,e);for(let m of Object.values(e.flags))delete f[m.alias];let y=ux(e.flags,f,l);return y.length>0&&(cx(y),process.exit(2)),{input:l,flags:f,unnormalizedFlags:p,pkg:i,help:o,showHelp:u,showVersion:c}};Yi.exports=dx});var Dn=d((qk,wv)=>{"use strict";var Sv=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"]]);wv.exports=t=>t?Object.keys(t).map(e=>[Sv.has(e)?Sv.get(e):e,t[e]]).reduce((e,r)=>(e[r[0]]=r[1],e),Object.create(null)):{}});var Fn=d((jk,Ov)=>{"use strict";var gx=require("events"),Rv=require("stream"),Vi=tc(),_v=require("string_decoder").StringDecoder,Ht=Symbol("EOF"),Xi=Symbol("maybeEmitEnd"),dr=Symbol("emittedEnd"),go=Symbol("emittingEnd"),yo=Symbol("closed"),Cv=Symbol("read"),Ec=Symbol("flush"),Av=Symbol("flushChunk"),Qe=Symbol("encoding"),Wt=Symbol("decoder"),vo=Symbol("flowing"),Ki=Symbol("paused"),Zi=Symbol("resume"),ze=Symbol("bufferLength"),Lv=Symbol("bufferPush"),wc=Symbol("bufferShift"),qe=Symbol("objectMode"),je=Symbol("destroyed"),Tv=global._MP_NO_ITERATOR_SYMBOLS_!=="1",yx=Tv&&Symbol.asyncIterator||Symbol("asyncIterator not implemented"),vx=Tv&&Symbol.iterator||Symbol("iterator not implemented"),xv=t=>t==="end"||t==="finish"||t==="prefinish",bx=t=>t instanceof ArrayBuffer||typeof t=="object"&&t.constructor&&t.constructor.name==="ArrayBuffer"&&t.byteLength>=0,Ex=t=>!Buffer.isBuffer(t)&&ArrayBuffer.isView(t);Ov.exports=class Nv extends Rv{constructor(e){super();this[vo]=!1,this[Ki]=!1,this.pipes=new Vi,this.buffer=new Vi,this[qe]=e&&e.objectMode||!1,this[qe]?this[Qe]=null:this[Qe]=e&&e.encoding||null,this[Qe]==="buffer"&&(this[Qe]=null),this[Wt]=this[Qe]?new _v(this[Qe]):null,this[Ht]=!1,this[dr]=!1,this[go]=!1,this[yo]=!1,this.writable=!0,this.readable=!0,this[ze]=0,this[je]=!1}get bufferLength(){return this[ze]}get encoding(){return this[Qe]}set encoding(e){if(this[qe])throw new Error("cannot set encoding in objectMode");if(this[Qe]&&e!==this[Qe]&&(this[Wt]&&this[Wt].lastNeed||this[ze]))throw new Error("cannot change encoding");this[Qe]!==e&&(this[Wt]=e?new _v(e):null,this.buffer.length&&(this.buffer=this.buffer.map(r=>this[Wt].write(r)))),this[Qe]=e}setEncoding(e){this.encoding=e}get objectMode(){return this[qe]}set objectMode(e){this[qe]=this[qe]||!!e}write(e,r,n){if(this[Ht])throw new Error("write after end");return this[je]?(this.emit("error",Object.assign(new Error("Cannot call write after a stream was destroyed"),{code:"ERR_STREAM_DESTROYED"})),!0):(typeof r=="function"&&(n=r,r="utf8"),r||(r="utf8"),!this[qe]&&!Buffer.isBuffer(e)&&(Ex(e)?e=Buffer.from(e.buffer,e.byteOffset,e.byteLength):bx(e)?e=Buffer.from(e):typeof e!="string"&&(this.objectMode=!0)),!this.objectMode&&!e.length?(this[ze]!==0&&this.emit("readable"),n&&n(),this.flowing):(typeof e=="string"&&!this[qe]&&!(r===this[Qe]&&!this[Wt].lastNeed)&&(e=Buffer.from(e,r)),Buffer.isBuffer(e)&&this[Qe]&&(e=this[Wt].write(e)),this.flowing?(this[ze]!==0&&this[Ec](!0),this.emit("data",e)):this[Lv](e),this[ze]!==0&&this.emit("readable"),n&&n(),this.flowing))}read(e){if(this[je])return null;try{return this[ze]===0||e===0||e>this[ze]?null:(this[qe]&&(e=null),this.buffer.length>1&&!this[qe]&&(this.encoding?this.buffer=new Vi([Array.from(this.buffer).join("")]):this.buffer=new Vi([Buffer.concat(Array.from(this.buffer),this[ze])])),this[Cv](e||null,this.buffer.head.value))}finally{this[Xi]()}}[Cv](e,r){return e===r.length||e===null?this[wc]():(this.buffer.head.value=r.slice(e),r=r.slice(0,e),this[ze]-=e),this.emit("data",r),!this.buffer.length&&!this[Ht]&&this.emit("drain"),r}end(e,r,n){return typeof e=="function"&&(n=e,e=null),typeof r=="function"&&(n=r,r="utf8"),e&&this.write(e,r),n&&this.once("end",n),this[Ht]=!0,this.writable=!1,(this.flowing||!this[Ki])&&this[Xi](),this}[Zi](){this[je]||(this[Ki]=!1,this[vo]=!0,this.emit("resume"),this.buffer.length?this[Ec]():this[Ht]?this[Xi]():this.emit("drain"))}resume(){return this[Zi]()}pause(){this[vo]=!1,this[Ki]=!0}get destroyed(){return this[je]}get flowing(){return this[vo]}get paused(){return this[Ki]}[Lv](e){return this[qe]?this[ze]+=1:this[ze]+=e.length,this.buffer.push(e)}[wc](){return this.buffer.length&&(this[qe]?this[ze]-=1:this[ze]-=this.buffer.head.value.length),this.buffer.shift()}[Ec](e){do;while(this[Av](this[wc]()));!e&&!this.buffer.length&&!this[Ht]&&this.emit("drain")}[Av](e){return e?(this.emit("data",e),this.flowing):!1}pipe(e,r){if(this[je])return;let n=this[dr];r=r||{},e===process.stdout||e===process.stderr?r.end=!1:r.end=r.end!==!1;let i={dest:e,opts:r,ondrain:s=>this[Zi]()};return this.pipes.push(i),e.on("drain",i.ondrain),this[Zi](),n&&i.opts.end&&i.dest.end(),e}addListener(e,r){return this.on(e,r)}on(e,r){try{return super.on(e,r)}finally{e==="data"&&!this.pipes.length&&!this.flowing?this[Zi]():xv(e)&&this[dr]&&(super.emit(e),this.removeAllListeners(e))}}get emittedEnd(){return this[dr]}[Xi](){!this[go]&&!this[dr]&&!this[je]&&this.buffer.length===0&&this[Ht]&&(this[go]=!0,this.emit("end"),this.emit("prefinish"),this.emit("finish"),this[yo]&&this.emit("close"),this[go]=!1)}emit(e,r){if(e!=="error"&&e!=="close"&&e!==je&&this[je])return;if(e==="data"){if(!r)return;this.pipes.length&&this.pipes.forEach(i=>i.dest.write(r)===!1&&this.pause())}else if(e==="end"){if(this[dr]===!0)return;this[dr]=!0,this.readable=!1,this[Wt]&&(r=this[Wt].end(),r&&(this.pipes.forEach(i=>i.dest.write(r)),super.emit("data",r))),this.pipes.forEach(i=>{i.dest.removeListener("drain",i.ondrain),i.opts.end&&i.dest.end()})}else if(e==="close"&&(this[yo]=!0,!this[dr]&&!this[je]))return;let n=new Array(arguments.length);if(n[0]=e,n[1]=r,arguments.length>2)for(let i=2;i{e.push(n),this[qe]||(e.dataLength+=n.length)}),r.then(()=>e)}concat(){return this[qe]?Promise.reject(new Error("cannot concat in objectMode")):this.collect().then(e=>this[qe]?Promise.reject(new Error("cannot concat in objectMode")):this[Qe]?e.join(""):Buffer.concat(e,e.dataLength))}promise(){return new Promise((e,r)=>{this.on(je,()=>r(new Error("stream destroyed"))),this.on("end",()=>e()),this.on("error",n=>r(n))})}[yx](){return{next:()=>{let r=this.read();if(r!==null)return Promise.resolve({done:!1,value:r});if(this[Ht])return Promise.resolve({done:!0});let n=null,i=null,s=c=>{this.removeListener("data",o),this.removeListener("end",a),i(c)},o=c=>{this.removeListener("error",s),this.removeListener("end",a),this.pause(),n({value:c,done:!!this[Ht]})},a=()=>{this.removeListener("error",s),this.removeListener("data",o),n({done:!0})},u=()=>s(new Error("stream destroyed"));return new Promise((c,l)=>{i=l,n=c,this.once(je,u),this.once("error",s),this.once("end",a),this.once("data",o)})}}}[vx](){return{next:()=>{let r=this.read();return{value:r,done:r===null}}}}destroy(e){return this[je]?(e?this.emit("error",e):this.emit(je),this):(this[je]=!0,this.buffer=new Vi,this[ze]=0,typeof this.close=="function"&&!this[yo]&&this.close(),e?this.emit("error",e):this.emit(je),this)}static isStream(e){return!!e&&(e instanceof Nv||e instanceof Rv||e instanceof gx&&(typeof e.pipe=="function"||typeof e.write=="function"&&typeof e.end=="function"))}}});var Pv=d(($k,Iv)=>{var wx=require("zlib").constants||{ZLIB_VERNUM:4736};Iv.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},wx))});var xc=d(nt=>{"use strict";var Sc=require("assert"),mr=require("buffer").Buffer,Dv=require("zlib"),Yr=nt.constants=Pv(),Sx=Fn(),Fv=mr.concat,Vr=Symbol("_superWrite"),Ji=class extends Error{constructor(e){super("zlib: "+e.message);this.code=e.code,this.errno=e.errno,this.code||(this.code="ZLIB_ERROR"),this.message="zlib: "+e.message,Error.captureStackTrace(this,this.constructor)}get name(){return"ZlibError"}},Ox=Symbol("opts"),Qi=Symbol("flushFlag"),kv=Symbol("finishFlushFlag"),Oc=Symbol("fullFlushFlag"),ce=Symbol("handle"),bo=Symbol("onError"),kn=Symbol("sawError"),Rc=Symbol("level"),_c=Symbol("strategy"),Cc=Symbol("ended"),Mk=Symbol("_defaultFullFlush"),Ac=class extends Sx{constructor(e,r){if(!e||typeof e!="object")throw new TypeError("invalid options for ZlibBase constructor");super(e);this[kn]=!1,this[Cc]=!1,this[Ox]=e,this[Qi]=e.flush,this[kv]=e.finishFlush;try{this[ce]=new Dv[r](e)}catch(n){throw new Ji(n)}this[bo]=n=>{this[kn]||(this[kn]=!0,this.close(),this.emit("error",n))},this[ce].on("error",n=>this[bo](new Ji(n))),this.once("end",()=>this.close)}close(){this[ce]&&(this[ce].close(),this[ce]=null,this.emit("close"))}reset(){if(!this[kn])return Sc(this[ce],"zlib binding closed"),this[ce].reset()}flush(e){this.ended||(typeof e!="number"&&(e=this[Oc]),this.write(Object.assign(mr.alloc(0),{[Qi]:e})))}end(e,r,n){return e&&this.write(e,r),this.flush(this[kv]),this[Cc]=!0,super.end(null,null,n)}get ended(){return this[Cc]}write(e,r,n){if(typeof r=="function"&&(n=r,r="utf8"),typeof e=="string"&&(e=mr.from(e,r)),this[kn])return;Sc(this[ce],"zlib binding closed");let i=this[ce]._handle,s=i.close;i.close=()=>{};let o=this[ce].close;this[ce].close=()=>{},mr.concat=c=>c;let a;try{let c=typeof e[Qi]=="number"?e[Qi]:this[Qi];a=this[ce]._processChunk(e,c),mr.concat=Fv}catch(c){mr.concat=Fv,this[bo](new Ji(c))}finally{this[ce]&&(this[ce]._handle=i,i.close=s,this[ce].close=o,this[ce].removeAllListeners("error"))}this[ce]&&this[ce].on("error",c=>this[bo](new Ji(c)));let u;if(a)if(Array.isArray(a)&&a.length>0){u=this[Vr](mr.from(a[0]));for(let c=1;c{this.flush(i),s()};try{this[ce].params(e,r)}finally{this[ce].flush=n}this[ce]&&(this[Rc]=e,this[_c]=r)}}}},qv=class extends gr{constructor(e){super(e,"Deflate")}},jv=class extends gr{constructor(e){super(e,"Inflate")}},Lc=Symbol("_portable"),$v=class extends gr{constructor(e){super(e,"Gzip");this[Lc]=e&&!!e.portable}[Vr](e){return this[Lc]?(this[Lc]=!1,e[9]=255,super[Vr](e)):super[Vr](e)}},Mv=class extends gr{constructor(e){super(e,"Gunzip")}},Bv=class extends gr{constructor(e){super(e,"DeflateRaw")}},Uv=class extends gr{constructor(e){super(e,"InflateRaw")}},Gv=class extends gr{constructor(e){super(e,"Unzip")}},Tc=class extends Ac{constructor(e,r){e=e||{},e.flush=e.flush||Yr.BROTLI_OPERATION_PROCESS,e.finishFlush=e.finishFlush||Yr.BROTLI_OPERATION_FINISH,super(e,r),this[Oc]=Yr.BROTLI_OPERATION_FLUSH}},zv=class extends Tc{constructor(e){super(e,"BrotliCompress")}},Hv=class extends Tc{constructor(e){super(e,"BrotliDecompress")}};nt.Deflate=qv;nt.Inflate=jv;nt.Gzip=$v;nt.Gunzip=Mv;nt.DeflateRaw=Bv;nt.InflateRaw=Uv;nt.Unzip=Gv;typeof Dv.BrotliCompress=="function"?(nt.BrotliCompress=zv,nt.BrotliDecompress=Hv):nt.BrotliCompress=nt.BrotliDecompress=class{constructor(){throw new Error("Brotli is not supported in this version of Node.js")}}});var Eo=d((Gk,Wv)=>{"use strict";var Rx=Fn(),Nc=Symbol("slurp");Wv.exports=class extends Rx{constructor(e,r,n){super();switch(this.pause(),this.extended=r,this.globalExtended=n,this.header=e,this.startBlockSize=512*Math.ceil(e.size/512),this.blockRemain=this.startBlockSize,this.remain=e.size,this.type=e.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=e.path,this.mode=e.mode,this.mode&&(this.mode=this.mode&4095),this.uid=e.uid,this.gid=e.gid,this.uname=e.uname,this.gname=e.gname,this.size=e.size,this.mtime=e.mtime,this.atime=e.atime,this.ctime=e.ctime,this.linkpath=e.linkpath,this.uname=e.uname,this.gname=e.gname,r&&this[Nc](r),n&&this[Nc](n,!0)}write(e){let r=e.length;if(r>this.blockRemain)throw new Error("writing more to entry than is appropriate");let n=this.remain,i=this.blockRemain;return this.remain=Math.max(0,n-r),this.blockRemain=Math.max(0,i-r),this.ignore?!0:n>=r?super.write(e):super.write(e.slice(0,n))}[Nc](e,r){for(let n in e)e[n]!==null&&e[n]!==void 0&&!(r&&n==="path")&&(this[n]=e[n])}}});var Ic=d(wo=>{"use strict";wo.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"]]);wo.code=new Map(Array.from(wo.name).map(t=>[t[1],t[0]]))});var Kv=d((Hk,Yv)=>{"use strict";var Ax=(t,e)=>{if(Number.isSafeInteger(t))t<0?Cx(t,e):_x(t,e);else throw Error("cannot encode number outside of javascript safe integer range");return e},_x=(t,e)=>{e[0]=128;for(var r=e.length;r>1;r--)e[r-1]=t&255,t=Math.floor(t/256)},Cx=(t,e)=>{e[0]=255;var r=!1;t=t*-1;for(var n=e.length;n>1;n--){var i=t&255;t=Math.floor(t/256),r?e[n-1]=Vv(i):i===0?e[n-1]=0:(r=!0,e[n-1]=Xv(i))}},xx=t=>{let e=t[0],r=e===128?Tx(t.slice(1,t.length)):e===255?Lx(t):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},Lx=t=>{for(var e=t.length,r=0,n=!1,i=e-1;i>-1;i--){var s=t[i],o;n?o=Vv(s):s===0?o=s:(n=!0,o=Xv(s)),o!==0&&(r-=o*Math.pow(256,e-i-1))}return r},Tx=t=>{for(var e=t.length,r=0,n=e-1;n>-1;n--){var i=t[n];i!==0&&(r+=i*Math.pow(256,e-n-1))}return r},Vv=t=>(255^t)&255,Xv=t=>(255^t)+1&255;Yv.exports={encode:Ax,parse:xx}});var jn=d((Wk,Zv)=>{"use strict";var Pc=Ic(),qn=require("path").posix,Jv=Kv(),Dc=Symbol("slurp"),it=Symbol("type"),Qv=class{constructor(e,r,n,i){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[it]="0",this.linkpath=null,this.uname=null,this.gname=null,this.devmaj=0,this.devmin=0,this.atime=null,this.ctime=null,Buffer.isBuffer(e)?this.decode(e,r||0,n,i):e&&this.set(e)}decode(e,r,n,i){if(r||(r=0),!e||!(e.length>=r+512))throw new Error("need 512 bytes for header");if(this.path=Xr(e,r,100),this.mode=yr(e,r+100,8),this.uid=yr(e,r+108,8),this.gid=yr(e,r+116,8),this.size=yr(e,r+124,12),this.mtime=Fc(e,r+136,12),this.cksum=yr(e,r+148,12),this[Dc](n),this[Dc](i,!0),this[it]=Xr(e,r+156,1),this[it]===""&&(this[it]="0"),this[it]==="0"&&this.path.substr(-1)==="/"&&(this[it]="5"),this[it]==="5"&&(this.size=0),this.linkpath=Xr(e,r+157,100),e.slice(r+257,r+265).toString()==="ustar\x0000")if(this.uname=Xr(e,r+265,32),this.gname=Xr(e,r+297,32),this.devmaj=yr(e,r+329,8),this.devmin=yr(e,r+337,8),e[r+475]!==0){let o=Xr(e,r+345,155);this.path=o+"/"+this.path}else{let o=Xr(e,r+345,130);o&&(this.path=o+"/"+this.path),this.atime=Fc(e,r+476,12),this.ctime=Fc(e,r+488,12)}let s=8*32;for(let o=r;o=r+512))throw new Error("need 512 bytes for header");let n=this.ctime||this.atime?130:155,i=Nx(this.path||"",n),s=i[0],o=i[1];this.needPax=i[2],this.needPax=Kr(e,r,100,s)||this.needPax,this.needPax=vr(e,r+100,8,this.mode)||this.needPax,this.needPax=vr(e,r+108,8,this.uid)||this.needPax,this.needPax=vr(e,r+116,8,this.gid)||this.needPax,this.needPax=vr(e,r+124,12,this.size)||this.needPax,this.needPax=kc(e,r+136,12,this.mtime)||this.needPax,e[r+156]=this[it].charCodeAt(0),this.needPax=Kr(e,r+157,100,this.linkpath)||this.needPax,e.write("ustar\x0000",r+257,8),this.needPax=Kr(e,r+265,32,this.uname)||this.needPax,this.needPax=Kr(e,r+297,32,this.gname)||this.needPax,this.needPax=vr(e,r+329,8,this.devmaj)||this.needPax,this.needPax=vr(e,r+337,8,this.devmin)||this.needPax,this.needPax=Kr(e,r+345,n,o)||this.needPax,e[r+475]!==0?this.needPax=Kr(e,r+345,155,o)||this.needPax:(this.needPax=Kr(e,r+345,130,o)||this.needPax,this.needPax=kc(e,r+476,12,this.atime)||this.needPax,this.needPax=kc(e,r+488,12,this.ctime)||this.needPax);let a=8*32;for(let u=r;u{let r=100,n=t,i="",s,o=qn.parse(t).root||".";if(Buffer.byteLength(n)r&&Buffer.byteLength(i)<=e?s=[n.substr(0,r-1),i,!0]:(n=qn.join(qn.basename(i),n),i=qn.dirname(i));while(i!==o&&!s);s||(s=[t.substr(0,r-1),"",!0])}return s},Xr=(t,e,r)=>t.slice(e,e+r).toString("utf8").replace(/\0.*/,""),Fc=(t,e,r)=>Ix(yr(t,e,r)),Ix=t=>t===null?null:new Date(t*1e3),yr=(t,e,r)=>t[e]&128?Jv.parse(t.slice(e,e+r)):Px(t,e,r),Dx=t=>isNaN(t)?null:t,Px=(t,e,r)=>Dx(parseInt(t.slice(e,e+r).toString("utf8").replace(/\0.*$/,"").trim(),8)),Fx={12:8589934591,8:2097151},vr=(t,e,r,n)=>n===null?!1:n>Fx[r]||n<0?(Jv.encode(n,t.slice(e,e+r)),!0):(kx(t,e,r,n),!1),kx=(t,e,r,n)=>t.write(qx(n,r),e,r,"ascii"),qx=(t,e)=>jx(Math.floor(t).toString(8),e),jx=(t,e)=>(t.length===e-1?t:new Array(e-t.length-1).join("0")+t+" ")+"\0",kc=(t,e,r,n)=>n===null?!1:vr(t,e,r,n.getTime()/1e3),$x=new Array(156).join("\0"),Kr=(t,e,r,n)=>n===null?!1:(t.write(n+$x,e,r,"utf8"),n.length!==Buffer.byteLength(n)||n.length>r);Zv.exports=Qv});var Oo=d((Yk,e1)=>{"use strict";var Mx=jn(),Bx=require("path"),So=class{constructor(e,r){this.atime=e.atime||null,this.charset=e.charset||null,this.comment=e.comment||null,this.ctime=e.ctime||null,this.gid=e.gid||null,this.gname=e.gname||null,this.linkpath=e.linkpath||null,this.mtime=e.mtime||null,this.path=e.path||null,this.size=e.size||null,this.uid=e.uid||null,this.uname=e.uname||null,this.dev=e.dev||null,this.ino=e.ino||null,this.nlink=e.nlink||null,this.global=r||!1}encode(){let e=this.encodeBody();if(e==="")return null;let r=Buffer.byteLength(e),n=512*Math.ceil(1+r/512),i=Buffer.allocUnsafe(n);for(let s=0;s<512;s++)i[s]=0;new Mx({path:("PaxHeader/"+Bx.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(i),i.write(e,512,r,"utf8");for(let s=r+512;s=Math.pow(10,s)&&(s+=1),s+i+n}};So.parse=(t,e,r)=>new So(Ux(Gx(t),e),r);var Ux=(t,e)=>e?Object.keys(t).reduce((r,n)=>(r[n]=t[n],r),e):t,Gx=t=>t.replace(/\n$/,"").split(` +`).reduce(zx,Object.create(null)),zx=(t,e)=>{let r=parseInt(e,10);if(r!==Buffer.byteLength(e)+1)return t;e=e.substr((r+" ").length);let n=e.split("="),i=n.shift().replace(/^SCHILY\.(dev|ino|nlink)/,"$1");if(!i)return t;let s=n.join("=");return t[i]=/^([A-Z]+\.)?([mac]|birth|creation)time$/.test(i)?new Date(s*1e3):/^[0-9]+$/.test(s)?+s:s,t};e1.exports=So});var Ro=d((Vk,t1)=>{"use strict";t1.exports=t=>class extends t{warn(e,r,n={}){this.file&&(n.file=this.file),this.cwd&&(n.cwd=this.cwd),n.code=r instanceof Error&&r.code||e,n.tarCode=e,!this.strict&&n.recoverable!==!1?(r instanceof Error&&(n=Object.assign(r,n),r=r.message),this.emit("warn",n.tarCode,r,n)):r instanceof Error?this.emit("error",Object.assign(r,n)):this.emit("error",Object.assign(new Error(`${e}: ${r}`),n))}}});var jc=d((Xk,r1)=>{"use strict";var _o=["|","<",">","?",":"],qc=_o.map(t=>String.fromCharCode(61440+t.charCodeAt(0))),Hx=new Map(_o.map((t,e)=>[t,qc[e]])),Wx=new Map(qc.map((t,e)=>[t,_o[e]]));r1.exports={encode:t=>_o.reduce((e,r)=>e.split(r).join(Hx.get(r)),t),decode:t=>qc.reduce((e,r)=>e.split(r).join(Wx.get(r)),t)}});var i1=d((Kk,n1)=>{"use strict";n1.exports=(t,e,r)=>(t&=4095,r&&(t=(t|384)&~18),e&&(t&256&&(t|=64),t&32&&(t|=8),t&4&&(t|=1)),t)});var Hc=d((Qk,s1)=>{"use strict";var o1=Fn(),a1=Oo(),u1=jn(),xt=require("fs"),$n=require("path"),Yx=16*1024*1024,c1=Symbol("process"),l1=Symbol("file"),f1=Symbol("directory"),$c=Symbol("symlink"),h1=Symbol("hardlink"),es=Symbol("header"),Co=Symbol("read"),Mc=Symbol("lstat"),Ao=Symbol("onlstat"),Bc=Symbol("onread"),Uc=Symbol("onreadlink"),Gc=Symbol("openfile"),zc=Symbol("onopenfile"),Zr=Symbol("close"),Lo=Symbol("mode"),p1=Ro(),Vx=jc(),d1=i1(),To=p1(class extends o1{constructor(e,r){if(r=r||{},super(r),typeof e!="string")throw new TypeError("path is required");this.path=e,this.portable=!!r.portable,this.myuid=process.getuid&&process.getuid(),this.myuser=process.env.USER||"",this.maxReadSize=r.maxReadSize||Yx,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 n=!1;if(!this.preservePaths&&$n.win32.isAbsolute(e)){let i=$n.win32.parse(e);this.path=e.substr(i.root.length),n=i.root}this.win32=!!r.win32||process.platform==="win32",this.win32&&(this.path=Vx.decode(this.path.replace(/\\/g,"/")),e=e.replace(/\\/g,"/")),this.absolute=r.absolute||$n.resolve(this.cwd,e),this.path===""&&(this.path="./"),n&&this.warn("TAR_ENTRY_INFO",`stripping ${n} from absolute path`,{entry:this,path:n+this.path}),this.statCache.has(this.absolute)?this[Ao](this.statCache.get(this.absolute)):this[Mc]()}[Mc](){xt.lstat(this.absolute,(e,r)=>{if(e)return this.emit("error",e);this[Ao](r)})}[Ao](e){this.statCache.set(this.absolute,e),this.stat=e,e.isFile()||(e.size=0),this.type=Xx(e),this.emit("stat",e),this[c1]()}[c1](){switch(this.type){case"File":return this[l1]();case"Directory":return this[f1]();case"SymbolicLink":return this[$c]();default:return this.end()}}[Lo](e){return d1(e,this.type==="Directory",this.portable)}[es](){this.type==="Directory"&&this.portable&&(this.noMtime=!0),this.header=new u1({path:this.path,linkpath:this.linkpath,mode:this[Lo](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 a1({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)}[f1](){this.path.substr(-1)!=="/"&&(this.path+="/"),this.stat.size=0,this[es](),this.end()}[$c](){xt.readlink(this.absolute,(e,r)=>{if(e)return this.emit("error",e);this[Uc](r)})}[Uc](e){this.linkpath=e.replace(/\\/g,"/"),this[es](),this.end()}[h1](e){this.type="Link",this.linkpath=$n.relative(this.cwd,e).replace(/\\/g,"/"),this.stat.size=0,this[es](),this.end()}[l1](){if(this.stat.nlink>1){let e=this.stat.dev+":"+this.stat.ino;if(this.linkCache.has(e)){let r=this.linkCache.get(e);if(r.indexOf(this.cwd)===0)return this[h1](r)}this.linkCache.set(e,this.absolute)}if(this[es](),this.stat.size===0)return this.end();this[Gc]()}[Gc](){xt.open(this.absolute,"r",(e,r)=>{if(e)return this.emit("error",e);this[zc](r)})}[zc](e){let r=512*Math.ceil(this.stat.size/512),n=Math.min(r,this.maxReadSize),i=Buffer.allocUnsafe(n);this[Co](e,i,0,i.length,0,this.stat.size,r)}[Co](e,r,n,i,s,o,a){xt.read(e,r,n,i,s,(u,c)=>{if(u)return this[Zr](e,()=>this.emit("error",u));this[Bc](e,r,n,i,s,o,a,c)})}[Zr](e,r){xt.close(e,r)}[Bc](e,r,n,i,s,o,a,u){if(u<=0&&o>0){let l=new Error("encountered unexpected EOF");return l.path=this.absolute,l.syscall="read",l.code="EOF",this[Zr](e,()=>this.emit("error",l))}if(u>o){let l=new Error("did not encounter expected EOF");return l.path=this.absolute,l.syscall="read",l.code="EOF",this[Zr](e,()=>this.emit("error",l))}if(u===o)for(let l=u;ll?this.emit("error",l):this.end());n>=i&&(r=Buffer.allocUnsafe(i),n=0),i=r.length-n,this[Co](e,r,n,i,s,o,a)}}),m1=class extends To{[Mc](){this[Ao](xt.lstatSync(this.absolute))}[$c](){this[Uc](xt.readlinkSync(this.absolute))}[Gc](){this[zc](xt.openSync(this.absolute,"r"))}[Co](e,r,n,i,s,o,a){let u=!0;try{let c=xt.readSync(e,r,n,i,s);this[Bc](e,r,n,i,s,o,a,c),u=!1}finally{if(u)try{this[Zr](e,()=>{})}catch(c){}}}[Zr](e,r){xt.closeSync(e),r()}},Kx=p1(class extends o1{constructor(e,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=e,this.type=e.type,this.type==="Directory"&&this.portable&&(this.noMtime=!0),this.path=e.path,this.mode=this[Lo](e.mode),this.uid=this.portable?null:e.uid,this.gid=this.portable?null:e.gid,this.uname=this.portable?null:e.uname,this.gname=this.portable?null:e.gname,this.size=e.size,this.mtime=this.noMtime?null:r.mtime||e.mtime,this.atime=this.portable?null:e.atime,this.ctime=this.portable?null:e.ctime,this.linkpath=e.linkpath,typeof r.onwarn=="function"&&this.on("warn",r.onwarn);let n=!1;if($n.isAbsolute(this.path)&&!this.preservePaths){let i=$n.parse(this.path);n=i.root,this.path=this.path.substr(i.root.length)}this.remain=e.size,this.blockRemain=e.startBlockSize,this.header=new u1({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}),n&&this.warn("TAR_ENTRY_INFO",`stripping ${n} from absolute path`,{entry:this,path:n+this.path}),this.header.encode()&&!this.noPax&&super.write(new a1({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),e.pipe(this)}[Lo](e){return d1(e,this.type==="Directory",this.portable)}write(e){let r=e.length;if(r>this.blockRemain)throw new Error("writing more to entry than is appropriate");return this.blockRemain-=r,super.write(e)}end(){return this.blockRemain&&this.write(Buffer.alloc(this.blockRemain)),super.end()}});To.Sync=m1;To.Tar=Kx;var Xx=t=>t.isFile()?"File":t.isDirectory()?"Directory":t.isSymbolicLink()?"SymbolicLink":"Unsupported";s1.exports=To});var y1=d((eq,g1)=>{"use strict";g1.exports=function(t){t.prototype[Symbol.iterator]=function*(){for(let e=this.head;e;e=e.next)yield e.value}}});var Wc=d((tq,v1)=>{"use strict";v1.exports=J;J.Node=Jr;J.create=J;function J(t){var e=this;if(e instanceof J||(e=new J),e.tail=null,e.head=null,e.length=0,t&&typeof t.forEach=="function")t.forEach(function(i){e.push(i)});else if(arguments.length>0)for(var r=0,n=arguments.length;r1)r=e;else if(this.head)n=this.head.next,r=this.head.value;else throw new TypeError("Reduce of empty list with no initial value");for(var i=0;n!==null;i++)r=t(r,n.value,i),n=n.next;return r};J.prototype.reduceReverse=function(t,e){var r,n=this.tail;if(arguments.length>1)r=e;else if(this.tail)n=this.tail.prev,r=this.tail.value;else throw new TypeError("Reduce of empty list with no initial value");for(var i=this.length-1;n!==null;i--)r=t(r,n.value,i),n=n.prev;return r};J.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};J.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};J.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 J;if(ethis.length&&(e=this.length);for(var n=0,i=this.head;i!==null&&nthis.length&&(e=this.length);for(var n=this.length,i=this.tail;i!==null&&n>e;n--)i=i.prev;for(;i!==null&&n>t;n--,i=i.prev)r.push(i.value);return r};J.prototype.splice=function(t,e,...r){t>this.length&&(t=this.length-1),t<0&&(t=this.length+t);for(var n=0,i=this.head;i!==null&&n{"use strict";var Yc=class{constructor(e,r){this.path=e||"./",this.absolute=r,this.entry=null,this.stat=null,this.readdir=null,this.pending=!1,this.ignore=!1,this.piped=!1}},eN=Fn(),tN=xc(),rN=Eo(),Vc=Hc(),nN=Vc.Sync,iN=Vc.Tar,sN=Wc(),E1=Buffer.alloc(1024),xo=Symbol("onStat"),No=Symbol("ended"),Nt=Symbol("queue"),Mn=Symbol("current"),Qr=Symbol("process"),Io=Symbol("processing"),w1=Symbol("processJob"),It=Symbol("jobs"),Xc=Symbol("jobDone"),Po=Symbol("addFSEntry"),S1=Symbol("addTarEntry"),Kc=Symbol("stat"),Zc=Symbol("readdir"),Do=Symbol("onreaddir"),Fo=Symbol("pipe"),O1=Symbol("entry"),Jc=Symbol("entryOpt"),Qc=Symbol("writeEntryClass"),R1=Symbol("write"),el=Symbol("ondrain"),ko=require("fs"),_1=require("path"),oN=Ro(),tl=oN(class extends eN{constructor(e){super(e);e=e||Object.create(null),this.opt=e,this.file=e.file||"",this.cwd=e.cwd||process.cwd(),this.maxReadSize=e.maxReadSize,this.preservePaths=!!e.preservePaths,this.strict=!!e.strict,this.noPax=!!e.noPax,this.prefix=(e.prefix||"").replace(/(\\|\/)+$/,""),this.linkCache=e.linkCache||new Map,this.statCache=e.statCache||new Map,this.readdirCache=e.readdirCache||new Map,this[Qc]=Vc,typeof e.onwarn=="function"&&this.on("warn",e.onwarn),this.portable=!!e.portable,this.zip=null,e.gzip?(typeof e.gzip!="object"&&(e.gzip={}),this.portable&&(e.gzip.portable=!0),this.zip=new tN.Gzip(e.gzip),this.zip.on("data",r=>super.write(r)),this.zip.on("end",r=>super.end()),this.zip.on("drain",r=>this[el]()),this.on("resume",r=>this.zip.resume())):this.on("drain",this[el]),this.noDirRecurse=!!e.noDirRecurse,this.follow=!!e.follow,this.noMtime=!!e.noMtime,this.mtime=e.mtime||null,this.filter=typeof e.filter=="function"?e.filter:r=>!0,this[Nt]=new sN,this[It]=0,this.jobs=+e.jobs||4,this[Io]=!1,this[No]=!1}[R1](e){return super.write(e)}add(e){return this.write(e),this}end(e){return e&&this.write(e),this[No]=!0,this[Qr](),this}write(e){if(this[No])throw new Error("write after end");return e instanceof rN?this[S1](e):this[Po](e),this.flowing}[S1](e){let r=_1.resolve(this.cwd,e.path);if(this.prefix&&(e.path=this.prefix+"/"+e.path.replace(/^\.(\/+|$)/,"")),!this.filter(e.path,e))e.resume();else{let n=new Yc(e.path,r,!1);n.entry=new iN(e,this[Jc](n)),n.entry.on("end",i=>this[Xc](n)),this[It]+=1,this[Nt].push(n)}this[Qr]()}[Po](e){let r=_1.resolve(this.cwd,e);this.prefix&&(e=this.prefix+"/"+e.replace(/^\.(\/+|$)/,"")),this[Nt].push(new Yc(e,r)),this[Qr]()}[Kc](e){e.pending=!0,this[It]+=1;let r=this.follow?"stat":"lstat";ko[r](e.absolute,(n,i)=>{e.pending=!1,this[It]-=1,n?this.emit("error",n):this[xo](e,i)})}[xo](e,r){this.statCache.set(e.absolute,r),e.stat=r,this.filter(e.path,r)||(e.ignore=!0),this[Qr]()}[Zc](e){e.pending=!0,this[It]+=1,ko.readdir(e.absolute,(r,n)=>{if(e.pending=!1,this[It]-=1,r)return this.emit("error",r);this[Do](e,n)})}[Do](e,r){this.readdirCache.set(e.absolute,r),e.readdir=r,this[Qr]()}[Qr](){if(!this[Io]){this[Io]=!0;for(let e=this[Nt].head;e!==null&&this[It]this.warn(r,n,i),noPax:this.noPax,cwd:this.cwd,absolute:e.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}}[O1](e){this[It]+=1;try{return new this[Qc](e.path,this[Jc](e)).on("end",()=>this[Xc](e)).on("error",r=>this.emit("error",r))}catch(r){this.emit("error",r)}}[el](){this[Mn]&&this[Mn].entry&&this[Mn].entry.resume()}[Fo](e){e.piped=!0,e.readdir&&e.readdir.forEach(i=>{let s=this.prefix?e.path.slice(this.prefix.length+1)||"./":e.path,o=s==="./"?"":s.replace(/\/*$/,"/");this[Po](o+i)});let r=e.entry,n=this.zip;n?r.on("data",i=>{n.write(i)||r.pause()}):r.on("data",i=>{super.write(i)||r.pause()})}pause(){return this.zip&&this.zip.pause(),super.pause()}}),C1=class extends tl{constructor(e){super(e);this[Qc]=nN}pause(){}resume(){}[Kc](e){let r=this.follow?"statSync":"lstatSync";this[xo](e,ko[r](e.absolute))}[Zc](e,r){this[Do](e,ko.readdirSync(e.absolute))}[Fo](e){let r=e.entry,n=this.zip;e.readdir&&e.readdir.forEach(i=>{let s=this.prefix?e.path.slice(this.prefix.length+1)||"./":e.path,o=s==="./"?"":s.replace(/\/*$/,"/");this[Po](o+i)}),n?r.on("data",i=>{n.write(i)}):r.on("data",i=>{super[R1](i)})}};tl.Sync=C1;b1.exports=tl});var Vn=d(ts=>{"use strict";var aN=Fn(),uN=require("events").EventEmitter,et=require("fs"),rl=et.writev;if(!rl){let t=process.binding("fs"),e=t.FSReqWrap||t.FSReqCallback;rl=(r,n,i,s)=>{let o=(u,c)=>s(u,c,n),a=new e;a.oncomplete=o,t.writeBuffers(r,n,i,a)}}var Bn=Symbol("_autoClose"),Ct=Symbol("_close"),rs=Symbol("_ended"),se=Symbol("_fd"),A1=Symbol("_finished"),br=Symbol("_flags"),nl=Symbol("_flush"),il=Symbol("_handleChunk"),sl=Symbol("_makeBuf"),jo=Symbol("_mode"),$o=Symbol("_needDrain"),Un=Symbol("_onerror"),Gn=Symbol("_onopen"),ol=Symbol("_onread"),zn=Symbol("_onwrite"),Er=Symbol("_open"),Yt=Symbol("_path"),en=Symbol("_pos"),Pt=Symbol("_queue"),Hn=Symbol("_read"),L1=Symbol("_readSize"),wr=Symbol("_reading"),Mo=Symbol("_remain"),T1=Symbol("_size"),Bo=Symbol("_write"),Wn=Symbol("_writing"),Uo=Symbol("_defaultFlag"),Yn=Symbol("_errored"),al=class extends aN{constructor(e,r){if(r=r||{},super(r),this.readable=!0,this.writable=!1,typeof e!="string")throw new TypeError("path must be a string");this[Yn]=!1,this[se]=typeof r.fd=="number"?r.fd:null,this[Yt]=e,this[L1]=r.readSize||16*1024*1024,this[wr]=!1,this[T1]=typeof r.size=="number"?r.size:Infinity,this[Mo]=this[T1],this[Bn]=typeof r.autoClose=="boolean"?r.autoClose:!0,typeof this[se]=="number"?this[Hn]():this[Er]()}get fd(){return this[se]}get path(){return this[Yt]}write(){throw new TypeError("this is a readable stream")}end(){throw new TypeError("this is a readable stream")}[Er](){et.open(this[Yt],"r",(e,r)=>this[Gn](e,r))}[Gn](e,r){e?this[Un](e):(this[se]=r,this.emit("open",r),this[Hn]())}[sl](){return Buffer.allocUnsafe(Math.min(this[L1],this[Mo]))}[Hn](){if(!this[wr]){this[wr]=!0;let e=this[sl]();if(e.length===0)return process.nextTick(()=>this[ol](null,0,e));et.read(this[se],e,0,e.length,null,(r,n,i)=>this[ol](r,n,i))}}[ol](e,r,n){this[wr]=!1,e?this[Un](e):this[il](r,n)&&this[Hn]()}[Ct](){if(this[Bn]&&typeof this[se]=="number"){let e=this[se];this[se]=null,et.close(e,r=>r?this.emit("error",r):this.emit("close"))}}[Un](e){this[wr]=!0,this[Ct](),this.emit("error",e)}[il](e,r){let n=!1;return this[Mo]-=e,e>0&&(n=super.write(ethis[Gn](e,r))}[Gn](e,r){this[Uo]&&this[br]==="r+"&&e&&e.code==="ENOENT"?(this[br]="w",this[Er]()):e?this[Un](e):(this[se]=r,this.emit("open",r),this[nl]())}end(e,r){return e&&this.write(e,r),this[rs]=!0,!this[Wn]&&!this[Pt].length&&typeof this[se]=="number"&&this[zn](null,0),this}write(e,r){return typeof e=="string"&&(e=Buffer.from(e,r)),this[rs]?(this.emit("error",new Error("write() after end()")),!1):this[se]===null||this[Wn]||this[Pt].length?(this[Pt].push(e),this[$o]=!0,!1):(this[Wn]=!0,this[Bo](e),!0)}[Bo](e){et.write(this[se],e,0,e.length,this[en],(r,n)=>this[zn](r,n))}[zn](e,r){e?this[Un](e):(this[en]!==null&&(this[en]+=r),this[Pt].length?this[nl]():(this[Wn]=!1,this[rs]&&!this[A1]?(this[A1]=!0,this[Ct](),this.emit("finish")):this[$o]&&(this[$o]=!1,this.emit("drain"))))}[nl](){if(this[Pt].length===0)this[rs]&&this[zn](null,0);else if(this[Pt].length===1)this[Bo](this[Pt].pop());else{let e=this[Pt];this[Pt]=[],rl(this[se],e,this[en],(r,n)=>this[zn](r,n))}}[Ct](){if(this[Bn]&&typeof this[se]=="number"){let e=this[se];this[se]=null,et.close(e,r=>r?this.emit("error",r):this.emit("close"))}}},N1=class extends ul{[Er](){let e;if(this[Uo]&&this[br]==="r+")try{e=et.openSync(this[Yt],this[br],this[jo])}catch(r){if(r.code==="ENOENT")return this[br]="w",this[Er]();throw r}else e=et.openSync(this[Yt],this[br],this[jo]);this[Gn](null,e)}[Ct](){if(this[Bn]&&typeof this[se]=="number"){let e=this[se];this[se]=null,et.closeSync(e),this.emit("close")}}[Bo](e){let r=!0;try{this[zn](null,et.writeSync(this[se],e,0,e.length,this[en])),r=!1}finally{if(r)try{this[Ct]()}catch(n){}}}};ts.ReadStream=al;ts.ReadStreamSync=x1;ts.WriteStream=ul;ts.WriteStreamSync=N1});var Xo=d((oq,I1)=>{"use strict";var cN=Ro(),lN=jn(),fN=require("events"),hN=Wc(),pN=1024*1024,dN=Eo(),P1=Oo(),mN=xc(),cl=Buffer.from([31,139]),pt=Symbol("state"),tn=Symbol("writeEntry"),Vt=Symbol("readEntry"),ll=Symbol("nextEntry"),D1=Symbol("processEntry"),dt=Symbol("extendedHeader"),ns=Symbol("globalExtendedHeader"),Sr=Symbol("meta"),F1=Symbol("emitMeta"),fe=Symbol("buffer"),Xt=Symbol("queue"),rn=Symbol("ended"),k1=Symbol("emittedEnd"),nn=Symbol("emit"),tt=Symbol("unzip"),Go=Symbol("consumeChunk"),zo=Symbol("consumeChunkSub"),fl=Symbol("consumeBody"),q1=Symbol("consumeMeta"),j1=Symbol("consumeHeader"),Ho=Symbol("consuming"),hl=Symbol("bufferConcat"),pl=Symbol("maybeEnd"),is=Symbol("writing"),Or=Symbol("aborted"),Wo=Symbol("onDone"),sn=Symbol("sawValidEntry"),Yo=Symbol("sawNullBlock"),Vo=Symbol("sawEOF"),gN=t=>!0;I1.exports=cN(class extends fN{constructor(e){e=e||{},super(e),this.file=e.file||"",this[sn]=null,this.on(Wo,r=>{(this[pt]==="begin"||this[sn]===!1)&&this.warn("TAR_BAD_ARCHIVE","Unrecognized archive format")}),e.ondone?this.on(Wo,e.ondone):this.on(Wo,r=>{this.emit("prefinish"),this.emit("finish"),this.emit("end"),this.emit("close")}),this.strict=!!e.strict,this.maxMetaEntrySize=e.maxMetaEntrySize||pN,this.filter=typeof e.filter=="function"?e.filter:gN,this.writable=!0,this.readable=!1,this[Xt]=new hN,this[fe]=null,this[Vt]=null,this[tn]=null,this[pt]="begin",this[Sr]="",this[dt]=null,this[ns]=null,this[rn]=!1,this[tt]=null,this[Or]=!1,this[Yo]=!1,this[Vo]=!1,typeof e.onwarn=="function"&&this.on("warn",e.onwarn),typeof e.onentry=="function"&&this.on("entry",e.onentry)}[j1](e,r){this[sn]===null&&(this[sn]=!1);let n;try{n=new lN(e,r,this[dt],this[ns])}catch(i){return this.warn("TAR_ENTRY_INVALID",i)}if(n.nullBlock)this[Yo]?(this[Vo]=!0,this[pt]==="begin"&&(this[pt]="header"),this[nn]("eof")):(this[Yo]=!0,this[nn]("nullBlock"));else if(this[Yo]=!1,!n.cksumValid)this.warn("TAR_ENTRY_INVALID","checksum failure",{header:n});else if(!n.path)this.warn("TAR_ENTRY_INVALID","path is required",{header:n});else{let i=n.type;if(/^(Symbolic)?Link$/.test(i)&&!n.linkpath)this.warn("TAR_ENTRY_INVALID","linkpath required",{header:n});else if(!/^(Symbolic)?Link$/.test(i)&&n.linkpath)this.warn("TAR_ENTRY_INVALID","linkpath forbidden",{header:n});else{let s=this[tn]=new dN(n,this[dt],this[ns]);if(!this[sn])if(s.remain){let o=()=>{s.invalid||(this[sn]=!0)};s.on("end",o)}else this[sn]=!0;s.meta?s.size>this.maxMetaEntrySize?(s.ignore=!0,this[nn]("ignoredEntry",s),this[pt]="ignore",s.resume()):s.size>0&&(this[Sr]="",s.on("data",o=>this[Sr]+=o),this[pt]="meta"):(this[dt]=null,s.ignore=s.ignore||!this.filter(s.path,s),s.ignore?(this[nn]("ignoredEntry",s),this[pt]=s.remain?"ignore":"header",s.resume()):(s.remain?this[pt]="body":(this[pt]="header",s.end()),this[Vt]?this[Xt].push(s):(this[Xt].push(s),this[ll]())))}}}[D1](e){let r=!0;return e?Array.isArray(e)?this.emit.apply(this,e):(this[Vt]=e,this.emit("entry",e),e.emittedEnd||(e.on("end",n=>this[ll]()),r=!1)):(this[Vt]=null,r=!1),r}[ll](){do;while(this[D1](this[Xt].shift()));if(!this[Xt].length){let e=this[Vt];!e||e.flowing||e.size===e.remain?this[is]||this.emit("drain"):e.once("drain",n=>this.emit("drain"))}}[fl](e,r){let n=this[tn],i=n.blockRemain,s=i>=e.length&&r===0?e:e.slice(r,r+i);return n.write(s),n.blockRemain||(this[pt]="header",this[tn]=null,n.end()),s.length}[q1](e,r){let n=this[tn],i=this[fl](e,r);return this[tn]||this[F1](n),i}[nn](e,r,n){!this[Xt].length&&!this[Vt]?this.emit(e,r,n):this[Xt].push([e,r,n])}[F1](e){switch(this[nn]("meta",this[Sr]),e.type){case"ExtendedHeader":case"OldExtendedHeader":this[dt]=P1.parse(this[Sr],this[dt],!1);break;case"GlobalExtendedHeader":this[ns]=P1.parse(this[Sr],this[ns],!0);break;case"NextFileHasLongPath":case"OldGnuLongPath":this[dt]=this[dt]||Object.create(null),this[dt].path=this[Sr].replace(/\0.*/,"");break;case"NextFileHasLongLinkpath":this[dt]=this[dt]||Object.create(null),this[dt].linkpath=this[Sr].replace(/\0.*/,"");break;default:throw new Error("unknown meta: "+e.type)}}abort(e){this[Or]=!0,this.emit("abort",e),this.warn("TAR_ABORT",e,{recoverable:!1})}write(e){if(this[Or])return;if(this[tt]===null&&e){if(this[fe]&&(e=Buffer.concat([this[fe],e]),this[fe]=null),e.lengththis[Go](s)),this[tt].on("error",s=>this.abort(s)),this[tt].on("end",s=>{this[rn]=!0,this[Go]()}),this[is]=!0;let i=this[tt][n?"end":"write"](e);return this[is]=!1,i}}this[is]=!0,this[tt]?this[tt].write(e):this[Go](e),this[is]=!1;let r=this[Xt].length?!1:this[Vt]?this[Vt].flowing:!0;return!r&&!this[Xt].length&&this[Vt].once("drain",n=>this.emit("drain")),r}[hl](e){e&&!this[Or]&&(this[fe]=this[fe]?Buffer.concat([this[fe],e]):e)}[pl](){if(this[rn]&&!this[k1]&&!this[Or]&&!this[Ho]){this[k1]=!0;let e=this[tn];if(e&&e.blockRemain){let r=this[fe]?this[fe].length:0;this.warn("TAR_BAD_ARCHIVE",`Truncated input (needed ${e.blockRemain} more bytes, only ${r} available)`,{entry:e}),this[fe]&&e.write(this[fe]),e.end()}this[nn](Wo)}}[Go](e){if(this[Ho])this[hl](e);else if(!e&&!this[fe])this[pl]();else{if(this[Ho]=!0,this[fe]){this[hl](e);let r=this[fe];this[fe]=null,this[zo](r)}else this[zo](e);for(;this[fe]&&this[fe].length>=512&&!this[Or]&&!this[Vo];){let r=this[fe];this[fe]=null,this[zo](r)}this[Ho]=!1}(!this[fe]||this[rn])&&this[pl]()}[zo](e){let r=0,n=e.length;for(;r+512<=n&&!this[Or]&&!this[Vo];)switch(this[pt]){case"begin":case"header":this[j1](e,r),r+=512;break;case"ignore":case"body":r+=this[fl](e,r);break;case"meta":r+=this[q1](e,r);break;default:throw new Error("invalid state: "+this[pt])}r{"use strict";var yN=Dn(),M1=Xo(),Xn=require("fs"),vN=Vn(),B1=require("path");$1.exports=(t,e,r)=>{typeof t=="function"?(r=t,e=null,t={}):Array.isArray(t)&&(e=t,t={}),typeof e=="function"&&(r=e,e=null),e?e=Array.from(e):e=[];let n=yN(t);if(n.sync&&typeof r=="function")throw new TypeError("callback not supported for sync tar functions");if(!n.file&&typeof r=="function")throw new TypeError("callback only supported with file option");return e.length&&EN(n,e),n.noResume||bN(n),n.file&&n.sync?wN(n):n.file?SN(n,r):U1(n)};var bN=t=>{let e=t.onentry;t.onentry=e?r=>{e(r),r.resume()}:r=>r.resume()},EN=(t,e)=>{let r=new Map(e.map(s=>[s.replace(/\/+$/,""),!0])),n=t.filter,i=(s,o)=>{let a=o||B1.parse(s).root||".",u=s===a?!1:r.has(s)?r.get(s):i(B1.dirname(s),a);return r.set(s,u),u};t.filter=n?(s,o)=>n(s,o)&&i(s.replace(/\/+$/,"")):s=>i(s.replace(/\/+$/,""))},wN=t=>{let e=U1(t),r=t.file,n=!0,i;try{let s=Xn.statSync(r),o=t.maxReadSize||16*1024*1024;if(s.size{let r=new M1(t),n=t.maxReadSize||16*1024*1024,i=t.file,s=new Promise((o,a)=>{r.on("error",a),r.on("end",o),Xn.stat(i,(u,c)=>{if(u)a(u);else{let l=new vN.ReadStream(i,{readSize:n,size:c.size});l.on("error",a),l.pipe(r)}})});return e?s.then(e,e):s},U1=t=>new M1(t)});var V1=d((uq,G1)=>{"use strict";var ON=Dn(),Zo=qo(),z1=Vn(),H1=Ko(),W1=require("path");G1.exports=(t,e,r)=>{if(typeof e=="function"&&(r=e),Array.isArray(t)&&(e=t,t={}),!e||!Array.isArray(e)||!e.length)throw new TypeError("no files or directories specified");e=Array.from(e);let n=ON(t);if(n.sync&&typeof r=="function")throw new TypeError("callback not supported for sync tar functions");if(!n.file&&typeof r=="function")throw new TypeError("callback only supported with file option");return n.file&&n.sync?RN(n,e):n.file?_N(n,e,r):n.sync?CN(n,e):AN(n,e)};var RN=(t,e)=>{let r=new Zo.Sync(t),n=new z1.WriteStreamSync(t.file,{mode:t.mode||438});r.pipe(n),Y1(r,e)},_N=(t,e,r)=>{let n=new Zo(t),i=new z1.WriteStream(t.file,{mode:t.mode||438});n.pipe(i);let s=new Promise((o,a)=>{i.on("error",a),i.on("close",o),n.on("error",a)});return dl(n,e),r?s.then(r,r):s},Y1=(t,e)=>{e.forEach(r=>{r.charAt(0)==="@"?H1({file:W1.resolve(t.cwd,r.substr(1)),sync:!0,noResume:!0,onentry:n=>t.add(n)}):t.add(r)}),t.end()},dl=(t,e)=>{for(;e.length;){let r=e.shift();if(r.charAt(0)==="@")return H1({file:W1.resolve(t.cwd,r.substr(1)),noResume:!0,onentry:n=>t.add(n)}).then(n=>dl(t,e));t.add(r)}t.end()},CN=(t,e)=>{let r=new Zo.Sync(t);return Y1(r,e),r},AN=(t,e)=>{let r=new Zo(t);return dl(r,e),r}});var ml=d((cq,X1)=>{"use strict";var LN=Dn(),K1=qo(),mt=require("fs"),Z1=Vn(),J1=Ko(),Q1=require("path"),eb=jn();X1.exports=(t,e,r)=>{let n=LN(t);if(!n.file)throw new TypeError("file is required");if(n.gzip)throw new TypeError("cannot append to compressed archives");if(!e||!Array.isArray(e)||!e.length)throw new TypeError("no files or directories specified");return e=Array.from(e),n.sync?TN(n,e):xN(n,e,r)};var TN=(t,e)=>{let r=new K1.Sync(t),n=!0,i,s;try{try{i=mt.openSync(t.file,"r+")}catch(u){if(u.code==="ENOENT")i=mt.openSync(t.file,"w+");else throw u}let o=mt.fstatSync(i),a=Buffer.alloc(512);e:for(s=0;so.size)break;s+=c,t.mtimeCache&&t.mtimeCache.set(u.path,u.mtime)}n=!1,NN(t,r,s,i,e)}finally{if(n)try{mt.closeSync(i)}catch(o){}}},NN=(t,e,r,n,i)=>{let s=new Z1.WriteStreamSync(t.file,{fd:n,start:r});e.pipe(s),IN(e,i)},xN=(t,e,r)=>{e=Array.from(e);let n=new K1(t),i=(o,a,u)=>{let c=(m,h)=>{m?mt.close(o,w=>u(m)):u(null,h)},l=0;if(a===0)return c(null,0);let f=0,p=Buffer.alloc(512),y=(m,h)=>{if(m)return c(m);if(f+=h,f<512&&h)return mt.read(o,p,f,p.length-f,l+f,y);if(l===0&&p[0]===31&&p[1]===139)return c(new Error("cannot append to compressed archives"));if(f<512)return c(null,l);let w=new eb(p);if(!w.cksumValid)return c(null,l);let v=512*Math.ceil(w.size/512);if(l+v+512>a||(l+=v+512,l>=a))return c(null,l);t.mtimeCache&&t.mtimeCache.set(w.path,w.mtime),f=0,mt.read(o,p,0,512,l,y)};mt.read(o,p,0,512,l,y)},s=new Promise((o,a)=>{n.on("error",a);let u="r+",c=(l,f)=>{if(l&&l.code==="ENOENT"&&u==="r+")return u="w+",mt.open(t.file,u,c);if(l)return a(l);mt.fstat(f,(p,y)=>{if(p)return a(p);i(f,y.size,(m,h)=>{if(m)return a(m);let w=new Z1.WriteStream(t.file,{fd:f,start:h});n.pipe(w),w.on("error",a),w.on("close",o),tb(n,e)})})};mt.open(t.file,u,c)});return r?s.then(r,r):s},IN=(t,e)=>{e.forEach(r=>{r.charAt(0)==="@"?J1({file:Q1.resolve(t.cwd,r.substr(1)),sync:!0,noResume:!0,onentry:n=>t.add(n)}):t.add(r)}),t.end()},tb=(t,e)=>{for(;e.length;){let r=e.shift();if(r.charAt(0)==="@")return J1({file:Q1.resolve(t.cwd,r.substr(1)),noResume:!0,onentry:n=>t.add(n)}).then(n=>tb(t,e));t.add(r)}t.end()}});var nb=d((lq,rb)=>{"use strict";var PN=Dn(),DN=ml();rb.exports=(t,e,r)=>{let n=PN(t);if(!n.file)throw new TypeError("file is required");if(n.gzip)throw new TypeError("cannot append to compressed archives");if(!e||!Array.isArray(e)||!e.length)throw new TypeError("no files or directories specified");return e=Array.from(e),FN(n),DN(n,e,r)};var FN=t=>{let e=t.filter;t.mtimeCache||(t.mtimeCache=new Map),t.filter=e?(r,n)=>e(r,n)&&!(t.mtimeCache.get(r)>n.mtime):(r,n)=>!(t.mtimeCache.get(r)>n.mtime)}});var ob=d((fq,ib)=>{var{promisify:sb}=require("util"),Rr=require("fs"),kN=t=>{if(!t)t={mode:511,fs:Rr};else if(typeof t=="object")t={mode:511,fs:Rr,...t};else if(typeof t=="number")t={mode:t,fs:Rr};else if(typeof t=="string")t={mode:parseInt(t,8),fs:Rr};else throw new TypeError("invalid options argument");return t.mkdir=t.mkdir||t.fs.mkdir||Rr.mkdir,t.mkdirAsync=sb(t.mkdir),t.stat=t.stat||t.fs.stat||Rr.stat,t.statAsync=sb(t.stat),t.statSync=t.statSync||t.fs.statSync||Rr.statSync,t.mkdirSync=t.mkdirSync||t.fs.mkdirSync||Rr.mkdirSync,t};ib.exports=kN});var ub=d((hq,ab)=>{var qN=process.env.__TESTING_MKDIRP_PLATFORM__||process.platform,{resolve:jN,parse:$N}=require("path"),MN=t=>{if(/\0/.test(t))throw Object.assign(new TypeError("path must be a string without null bytes"),{path:t,code:"ERR_INVALID_ARG_VALUE"});if(t=jN(t),qN==="win32"){let e=/[*|"<>?:]/,{root:r}=$N(t);if(e.test(t.substr(r.length)))throw Object.assign(new Error("Illegal characters in path."),{path:t,code:"EINVAL"})}return t};ab.exports=MN});var pb=d((pq,cb)=>{var{dirname:lb}=require("path"),fb=(t,e,r=void 0)=>r===e?Promise.resolve():t.statAsync(e).then(n=>n.isDirectory()?r:void 0,n=>n.code==="ENOENT"?fb(t,lb(e),e):void 0),hb=(t,e,r=void 0)=>{if(r!==e)try{return t.statSync(e).isDirectory()?r:void 0}catch(n){return n.code==="ENOENT"?hb(t,lb(e),e):void 0}};cb.exports={findMade:fb,findMadeSync:hb}});var vl=d((dq,db)=>{var{dirname:mb}=require("path"),gl=(t,e,r)=>{e.recursive=!1;let n=mb(t);return n===t?e.mkdirAsync(t,e).catch(i=>{if(i.code!=="EISDIR")throw i}):e.mkdirAsync(t,e).then(()=>r||t,i=>{if(i.code==="ENOENT")return gl(n,e).then(s=>gl(t,e,s));if(i.code!=="EEXIST"&&i.code!=="EROFS")throw i;return e.statAsync(t).then(s=>{if(s.isDirectory())return r;throw i},()=>{throw i})})},yl=(t,e,r)=>{let n=mb(t);if(e.recursive=!1,n===t)try{return e.mkdirSync(t,e)}catch(i){if(i.code!=="EISDIR")throw i;return}try{return e.mkdirSync(t,e),r||t}catch(i){if(i.code==="ENOENT")return yl(t,e,yl(n,e,r));if(i.code!=="EEXIST"&&i.code!=="EROFS")throw i;try{if(!e.statSync(t).isDirectory())throw i}catch(s){throw i}}};db.exports={mkdirpManual:gl,mkdirpManualSync:yl}});var vb=d((mq,gb)=>{var{dirname:yb}=require("path"),{findMade:BN,findMadeSync:UN}=pb(),{mkdirpManual:GN,mkdirpManualSync:zN}=vl(),HN=(t,e)=>(e.recursive=!0,yb(t)===t?e.mkdirAsync(t,e):BN(e,t).then(n=>e.mkdirAsync(t,e).then(()=>n).catch(i=>{if(i.code==="ENOENT")return GN(t,e);throw i}))),WN=(t,e)=>{if(e.recursive=!0,yb(t)===t)return e.mkdirSync(t,e);let n=UN(e,t);try{return e.mkdirSync(t,e),n}catch(i){if(i.code==="ENOENT")return zN(t,e);throw i}};gb.exports={mkdirpNative:HN,mkdirpNativeSync:WN}});var Sb=d((gq,bb)=>{var Eb=require("fs"),YN=process.env.__TESTING_MKDIRP_NODE_VERSION__||process.version,bl=YN.replace(/^v/,"").split("."),wb=+bl[0]>10||+bl[0]==10&&+bl[1]>=12,VN=wb?t=>t.mkdir===Eb.mkdir:()=>!1,XN=wb?t=>t.mkdirSync===Eb.mkdirSync:()=>!1;bb.exports={useNative:VN,useNativeSync:XN}});var Lb=d((yq,Ob)=>{var Kn=ob(),Zn=ub(),{mkdirpNative:Rb,mkdirpNativeSync:_b}=vb(),{mkdirpManual:Cb,mkdirpManualSync:Ab}=vl(),{useNative:KN,useNativeSync:ZN}=Sb(),Jn=(t,e)=>(t=Zn(t),e=Kn(e),KN(e)?Rb(t,e):Cb(t,e)),JN=(t,e)=>(t=Zn(t),e=Kn(e),ZN(e)?_b(t,e):Ab(t,e));Jn.sync=JN;Jn.native=(t,e)=>Rb(Zn(t),Kn(e));Jn.manual=(t,e)=>Cb(Zn(t),Kn(e));Jn.nativeSync=(t,e)=>_b(Zn(t),Kn(e));Jn.manualSync=(t,e)=>Ab(Zn(t),Kn(e));Ob.exports=Jn});var Fb=d((vq,Tb)=>{"use strict";var gt=require("fs"),on=require("path"),QN=gt.lchown?"lchown":"chown",eI=gt.lchownSync?"lchownSync":"chownSync",xb=gt.lchown&&!process.version.match(/v1[1-9]+\./)&&!process.version.match(/v10\.[6-9]/),Nb=(t,e,r)=>{try{return gt[eI](t,e,r)}catch(n){if(n.code!=="ENOENT")throw n}},tI=(t,e,r)=>{try{return gt.chownSync(t,e,r)}catch(n){if(n.code!=="ENOENT")throw n}},rI=xb?(t,e,r,n)=>i=>{!i||i.code!=="EISDIR"?n(i):gt.chown(t,e,r,n)}:(t,e,r,n)=>n,El=xb?(t,e,r)=>{try{return Nb(t,e,r)}catch(n){if(n.code!=="EISDIR")throw n;tI(t,e,r)}}:(t,e,r)=>Nb(t,e,r),nI=process.version,Ib=(t,e,r)=>gt.readdir(t,e,r),iI=(t,e)=>gt.readdirSync(t,e);/^v4\./.test(nI)&&(Ib=(t,e,r)=>gt.readdir(t,r));var Jo=(t,e,r,n)=>{gt[QN](t,e,r,rI(t,e,r,i=>{n(i&&i.code!=="ENOENT"?i:null)}))},Pb=(t,e,r,n,i)=>{if(typeof e=="string")return gt.lstat(on.resolve(t,e),(s,o)=>{if(s)return i(s.code!=="ENOENT"?s:null);o.name=e,Pb(t,o,r,n,i)});if(e.isDirectory())wl(on.resolve(t,e.name),r,n,s=>{if(s)return i(s);let o=on.resolve(t,e.name);Jo(o,r,n,i)});else{let s=on.resolve(t,e.name);Jo(s,r,n,i)}},wl=(t,e,r,n)=>{Ib(t,{withFileTypes:!0},(i,s)=>{if(i){if(i.code==="ENOENT")return n();if(i.code!=="ENOTDIR"&&i.code!=="ENOTSUP")return n(i)}if(i||!s.length)return Jo(t,e,r,n);let o=s.length,a=null,u=c=>{if(!a){if(c)return n(a=c);if(--o==0)return Jo(t,e,r,n)}};s.forEach(c=>Pb(t,c,e,r,u))})},sI=(t,e,r,n)=>{if(typeof e=="string")try{let i=gt.lstatSync(on.resolve(t,e));i.name=e,e=i}catch(i){if(i.code==="ENOENT")return;throw i}e.isDirectory()&&Db(on.resolve(t,e.name),r,n),El(on.resolve(t,e.name),r,n)},Db=(t,e,r)=>{let n;try{n=iI(t,{withFileTypes:!0})}catch(i){if(i.code==="ENOENT")return;if(i.code==="ENOTDIR"||i.code==="ENOTSUP")return El(t,e,r);throw i}return n&&n.length&&n.forEach(i=>sI(t,i,e,r)),El(t,e,r)};Tb.exports=wl;wl.sync=Db});var $b=d((bq,Sl)=>{"use strict";var kb=Lb(),yt=require("fs"),Qo=require("path"),qb=Fb(),Ol=class extends Error{constructor(e,r){super("Cannot extract through symbolic link");this.path=r,this.symlink=e}get name(){return"SylinkError"}},ss=class extends Error{constructor(e,r){super(r+": Cannot cd into '"+e+"'");this.path=e,this.code=r}get name(){return"CwdError"}};Sl.exports=(t,e,r)=>{let n=e.umask,i=e.mode|448,s=(i&n)!=0,o=e.uid,a=e.gid,u=typeof o=="number"&&typeof a=="number"&&(o!==e.processUid||a!==e.processGid),c=e.preserve,l=e.unlink,f=e.cache,p=e.cwd,y=(w,v)=>{w?r(w):(f.set(t,!0),v&&u?qb(v,o,a,R=>y(R)):s?yt.chmod(t,i,r):r())};if(f&&f.get(t)===!0)return y();if(t===p)return yt.stat(t,(w,v)=>{(w||!v.isDirectory())&&(w=new ss(t,w&&w.code||"ENOTDIR")),y(w)});if(c)return kb(t,{mode:i}).then(w=>y(null,w),y);let h=Qo.relative(p,t).split(/\/|\\/);ea(p,h,i,f,l,p,null,y)};var ea=(t,e,r,n,i,s,o,a)=>{if(!e.length)return a(null,o);let u=e.shift(),c=t+"/"+u;if(n.get(c))return ea(c,e,r,n,i,s,o,a);yt.mkdir(c,r,jb(c,e,r,n,i,s,o,a))},jb=(t,e,r,n,i,s,o,a)=>u=>{if(u){if(u.path&&Qo.dirname(u.path)===s&&(u.code==="ENOTDIR"||u.code==="ENOENT"))return a(new ss(s,u.code));yt.lstat(t,(c,l)=>{if(c)a(c);else if(l.isDirectory())ea(t,e,r,n,i,s,o,a);else if(i)yt.unlink(t,f=>{if(f)return a(f);yt.mkdir(t,r,jb(t,e,r,n,i,s,o,a))});else{if(l.isSymbolicLink())return a(new Ol(t,t+"/"+e.join("/")));a(u)}})}else o=o||t,ea(t,e,r,n,i,s,o,a)};Sl.exports.sync=(t,e)=>{let r=e.umask,n=e.mode|448,i=(n&r)!=0,s=e.uid,o=e.gid,a=typeof s=="number"&&typeof o=="number"&&(s!==e.processUid||o!==e.processGid),u=e.preserve,c=e.unlink,l=e.cache,f=e.cwd,p=w=>{l.set(t,!0),w&&a&&qb.sync(w,s,o),i&&yt.chmodSync(t,n)};if(l&&l.get(t)===!0)return p();if(t===f){let w=!1,v="ENOTDIR";try{w=yt.statSync(t).isDirectory()}catch(R){v=R.code}finally{if(!w)throw new ss(t,v)}p();return}if(u)return p(kb.sync(t,n));let m=Qo.relative(f,t).split(/\/|\\/),h=null;for(let w=m.shift(),v=f;w&&(v+="/"+w);w=m.shift())if(!l.get(v))try{yt.mkdirSync(v,n),h=h||v,l.set(v,!0)}catch(R){if(R.path&&Qo.dirname(R.path)===f&&(R.code==="ENOTDIR"||R.code==="ENOENT"))return new ss(f,R.code);let A=yt.lstatSync(v);if(A.isDirectory()){l.set(v,!0);continue}else if(c){yt.unlinkSync(v),yt.mkdirSync(v,n),h=h||v,l.set(v,!0);continue}else if(A.isSymbolicLink())return new Ol(v,v+"/"+m.join("/"))}return p(h)}});var Ub=d((Eq,Mb)=>{var Bb=require("assert");Mb.exports=()=>{let t=new Map,e=new Map,{join:r}=require("path"),n=l=>r(l).split(/[\\/]/).slice(0,-1).reduce((f,p)=>f.length?f.concat(r(f[f.length-1],p)):[p],[]),i=new Set,s=l=>{let f=e.get(l);if(!f)throw new Error("function does not have any path reservations");return{paths:f.paths.map(p=>t.get(p)),dirs:[...f.dirs].map(p=>t.get(p))}},o=l=>{let{paths:f,dirs:p}=s(l);return f.every(y=>y[0]===l)&&p.every(y=>y[0]instanceof Set&&y[0].has(l))},a=l=>i.has(l)||!o(l)?!1:(i.add(l),l(()=>u(l)),!0),u=l=>{if(!i.has(l))return!1;let{paths:f,dirs:p}=e.get(l),y=new Set;return f.forEach(m=>{let h=t.get(m);Bb.equal(h[0],l),h.length===1?t.delete(m):(h.shift(),typeof h[0]=="function"?y.add(h[0]):h[0].forEach(w=>y.add(w)))}),p.forEach(m=>{let h=t.get(m);Bb(h[0]instanceof Set),h[0].size===1&&h.length===1?t.delete(m):h[0].size===1?(h.shift(),y.add(h[0])):h[0].delete(l)}),i.delete(l),y.forEach(m=>a(m)),!0};return{check:o,reserve:(l,f)=>{let p=new Set(l.map(y=>n(y)).reduce((y,m)=>y.concat(m)));return e.set(f,{dirs:p,paths:l}),l.forEach(y=>{let m=t.get(y);m?m.push(f):t.set(y,[f])}),p.forEach(y=>{let m=t.get(y);m?m[m.length-1]instanceof Set?m[m.length-1].add(f):m.push(new Set([f])):t.set(y,[new Set([f])])}),a(f)}}}});var Hb=d((wq,Gb)=>{var oI=process.env.__FAKE_PLATFORM__||process.platform,aI=oI==="win32",uI=global.__FAKE_TESTING_FS__||require("fs"),{O_CREAT:cI,O_TRUNC:lI,O_WRONLY:fI,UV_FS_O_FILEMAP:zb=0}=uI.constants,hI=aI&&!!zb,pI=512*1024,dI=zb|lI|cI|fI;Gb.exports=hI?t=>t"w"});var Nl=d((Sq,Wb)=>{"use strict";var mI=require("assert"),gI=Xo(),ee=require("fs"),yI=Vn(),Kt=require("path"),Yb=$b(),Vb=jc(),vI=Ub(),Xb=Symbol("onEntry"),Rl=Symbol("checkFs"),Kb=Symbol("checkFs2"),_l=Symbol("isReusable"),Zt=Symbol("makeFs"),Cl=Symbol("file"),Al=Symbol("directory"),ta=Symbol("link"),Zb=Symbol("symlink"),Jb=Symbol("hardlink"),Qb=Symbol("unsupported"),eE=Symbol("checkPath"),Qn=Symbol("mkdir"),He=Symbol("onError"),ra=Symbol("pending"),tE=Symbol("pend"),ei=Symbol("unpend"),Ll=Symbol("ended"),Tl=Symbol("maybeClose"),xl=Symbol("skip"),os=Symbol("doChown"),as=Symbol("uid"),us=Symbol("gid"),rE=require("crypto"),nE=Hb(),na=()=>{throw new Error("sync function called cb somehow?!?")},bI=(t,e)=>{if(process.platform!=="win32")return ee.unlink(t,e);let r=t+".DELETE."+rE.randomBytes(16).toString("hex");ee.rename(t,r,n=>{if(n)return e(n);ee.unlink(r,e)})},EI=t=>{if(process.platform!=="win32")return ee.unlinkSync(t);let e=t+".DELETE."+rE.randomBytes(16).toString("hex");ee.renameSync(t,e),ee.unlinkSync(e)},iE=(t,e,r)=>t===t>>>0?t:e===e>>>0?e:r,ia=class extends gI{constructor(e){if(e||(e={}),e.ondone=r=>{this[Ll]=!0,this[Tl]()},super(e),this.reservations=vI(),this.transform=typeof e.transform=="function"?e.transform:null,this.writable=!0,this.readable=!1,this[ra]=0,this[Ll]=!1,this.dirCache=e.dirCache||new Map,typeof e.uid=="number"||typeof e.gid=="number"){if(typeof e.uid!="number"||typeof e.gid!="number")throw new TypeError("cannot set owner without number uid and gid");if(e.preserveOwner)throw new TypeError("cannot preserve owner in archive and also set owner explicitly");this.uid=e.uid,this.gid=e.gid,this.setOwner=!0}else this.uid=null,this.gid=null,this.setOwner=!1;e.preserveOwner===void 0&&typeof e.uid!="number"?this.preserveOwner=process.getuid&&process.getuid()===0:this.preserveOwner=!!e.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=e.forceChown===!0,this.win32=!!e.win32||process.platform==="win32",this.newer=!!e.newer,this.keep=!!e.keep,this.noMtime=!!e.noMtime,this.preservePaths=!!e.preservePaths,this.unlink=!!e.unlink,this.cwd=Kt.resolve(e.cwd||process.cwd()),this.strip=+e.strip||0,this.processUmask=e.noChmod?0:process.umask(),this.umask=typeof e.umask=="number"?e.umask:this.processUmask,this.dmode=e.dmode||511&~this.umask,this.fmode=e.fmode||438&~this.umask,this.on("entry",r=>this[Xb](r))}warn(e,r,n={}){return(e==="TAR_BAD_ARCHIVE"||e==="TAR_ABORT")&&(n.recoverable=!1),super.warn(e,r,n)}[Tl](){this[Ll]&&this[ra]===0&&(this.emit("prefinish"),this.emit("finish"),this.emit("end"),this.emit("close"))}[eE](e){if(this.strip){let r=e.path.split(/\/|\\/);if(r.length=this.strip&&(e.linkpath=n.slice(this.strip).join("/"))}}if(!this.preservePaths){let r=e.path;if(r.match(/(^|\/|\\)\.\.(\\|\/|$)/))return this.warn("TAR_ENTRY_ERROR","path contains '..'",{entry:e,path:r}),!1;if(Kt.win32.isAbsolute(r)){let n=Kt.win32.parse(r);e.path=r.substr(n.root.length);let i=n.root;this.warn("TAR_ENTRY_INFO",`stripping ${i} from absolute path`,{entry:e,path:r})}}if(this.win32){let r=Kt.win32.parse(e.path);e.path=r.root===""?Vb.encode(e.path):r.root+Vb.encode(e.path.substr(r.root.length))}return Kt.isAbsolute(e.path)?e.absolute=e.path:e.absolute=Kt.resolve(this.cwd,e.path),!0}[Xb](e){if(!this[eE](e))return e.resume();switch(mI.equal(typeof e.absolute,"string"),e.type){case"Directory":case"GNUDumpDir":e.mode&&(e.mode=e.mode|448);case"File":case"OldFile":case"ContiguousFile":case"Link":case"SymbolicLink":return this[Rl](e);case"CharacterDevice":case"BlockDevice":case"FIFO":default:return this[Qb](e)}}[He](e,r){e.name==="CwdError"?this.emit("error",e):(this.warn("TAR_ENTRY_ERROR",e,{entry:r}),this[ei](),r.resume())}[Qn](e,r,n){Yb(e,{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},n)}[os](e){return this.forceChown||this.preserveOwner&&(typeof e.uid=="number"&&e.uid!==this.processUid||typeof e.gid=="number"&&e.gid!==this.processGid)||typeof this.uid=="number"&&this.uid!==this.processUid||typeof this.gid=="number"&&this.gid!==this.processGid}[as](e){return iE(this.uid,e.uid,this.processUid)}[us](e){return iE(this.gid,e.gid,this.processGid)}[Cl](e,r){let n=e.mode&4095||this.fmode,i=new yI.WriteStream(e.absolute,{flags:nE(e.size),mode:n,autoClose:!1});i.on("error",u=>this[He](u,e));let s=1,o=u=>{if(u)return this[He](u,e);--s==0&&ee.close(i.fd,c=>{r(),c?this[He](c,e):this[ei]()})};i.on("finish",u=>{let c=e.absolute,l=i.fd;if(e.mtime&&!this.noMtime){s++;let f=e.atime||new Date,p=e.mtime;ee.futimes(l,f,p,y=>y?ee.utimes(c,f,p,m=>o(m&&y)):o())}if(this[os](e)){s++;let f=this[as](e),p=this[us](e);ee.fchown(l,f,p,y=>y?ee.chown(c,f,p,m=>o(m&&y)):o())}o()});let a=this.transform&&this.transform(e)||e;a!==e&&(a.on("error",u=>this[He](u,e)),e.pipe(a)),a.pipe(i)}[Al](e,r){let n=e.mode&4095||this.dmode;this[Qn](e.absolute,n,i=>{if(i)return r(),this[He](i,e);let s=1,o=a=>{--s==0&&(r(),this[ei](),e.resume())};e.mtime&&!this.noMtime&&(s++,ee.utimes(e.absolute,e.atime||new Date,e.mtime,o)),this[os](e)&&(s++,ee.chown(e.absolute,this[as](e),this[us](e),o)),o()})}[Qb](e){e.unsupported=!0,this.warn("TAR_ENTRY_UNSUPPORTED",`unsupported entry type: ${e.type}`,{entry:e}),e.resume()}[Zb](e,r){this[ta](e,e.linkpath,"symlink",r)}[Jb](e,r){this[ta](e,Kt.resolve(this.cwd,e.linkpath),"link",r)}[tE](){this[ra]++}[ei](){this[ra]--,this[Tl]()}[xl](e){this[ei](),e.resume()}[_l](e,r){return e.type==="File"&&!this.unlink&&r.isFile()&&r.nlink<=1&&process.platform!=="win32"}[Rl](e){this[tE]();let r=[e.path];e.linkpath&&r.push(e.linkpath),this.reservations.reserve(r,n=>this[Kb](e,n))}[Kb](e,r){this[Qn](Kt.dirname(e.absolute),this.dmode,n=>{if(n)return r(),this[He](n,e);ee.lstat(e.absolute,(i,s)=>{s&&(this.keep||this.newer&&s.mtime>e.mtime)?(this[xl](e),r()):i||this[_l](e,s)?this[Zt](null,e,r):s.isDirectory()?e.type==="Directory"?!this.noChmod&&(!e.mode||(s.mode&4095)===e.mode)?this[Zt](null,e,r):ee.chmod(e.absolute,e.mode,o=>this[Zt](o,e,r)):ee.rmdir(e.absolute,o=>this[Zt](o,e,r)):bI(e.absolute,o=>this[Zt](o,e,r))})})}[Zt](e,r,n){if(e)return this[He](e,r);switch(r.type){case"File":case"OldFile":case"ContiguousFile":return this[Cl](r,n);case"Link":return this[Jb](r,n);case"SymbolicLink":return this[Zb](r,n);case"Directory":case"GNUDumpDir":return this[Al](r,n)}}[ta](e,r,n,i){ee[n](r,e.absolute,s=>{if(s)return this[He](s,e);i(),this[ei](),e.resume()})}},sE=class extends ia{[Rl](e){let r=this[Qn](Kt.dirname(e.absolute),this.dmode,na);if(r)return this[He](r,e);try{let n=ee.lstatSync(e.absolute);if(this.keep||this.newer&&n.mtime>e.mtime)return this[xl](e);if(this[_l](e,n))return this[Zt](null,e,na);try{return n.isDirectory()?e.type==="Directory"?!this.noChmod&&e.mode&&(n.mode&4095)!==e.mode&&ee.chmodSync(e.absolute,e.mode):ee.rmdirSync(e.absolute):EI(e.absolute),this[Zt](null,e,na)}catch(i){return this[He](i,e)}}catch(n){return this[Zt](null,e,na)}}[Cl](e,r){let n=e.mode&4095||this.fmode,i=a=>{let u;try{ee.closeSync(s)}catch(c){u=c}(a||u)&&this[He](a||u,e)},s;try{s=ee.openSync(e.absolute,nE(e.size),n)}catch(a){return i(a)}let o=this.transform&&this.transform(e)||e;o!==e&&(o.on("error",a=>this[He](a,e)),e.pipe(o)),o.on("data",a=>{try{ee.writeSync(s,a,0,a.length)}catch(u){i(u)}}),o.on("end",a=>{let u=null;if(e.mtime&&!this.noMtime){let c=e.atime||new Date,l=e.mtime;try{ee.futimesSync(s,c,l)}catch(f){try{ee.utimesSync(e.absolute,c,l)}catch(p){u=f}}}if(this[os](e)){let c=this[as](e),l=this[us](e);try{ee.fchownSync(s,c,l)}catch(f){try{ee.chownSync(e.absolute,c,l)}catch(p){u=u||f}}}i(u)})}[Al](e,r){let n=e.mode&4095||this.dmode,i=this[Qn](e.absolute,n);if(i)return this[He](i,e);if(e.mtime&&!this.noMtime)try{ee.utimesSync(e.absolute,e.atime||new Date,e.mtime)}catch(s){}if(this[os](e))try{ee.chownSync(e.absolute,this[as](e),this[us](e))}catch(s){}e.resume()}[Qn](e,r){try{return Yb.sync(e,{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(n){return n}}[ta](e,r,n,i){try{ee[n+"Sync"](r,e.absolute),e.resume()}catch(s){return this[He](s,e)}}};ia.Sync=sE;Wb.exports=ia});var lE=d((Oq,oE)=>{"use strict";var wI=Dn(),sa=Nl(),aE=require("fs"),uE=Vn(),cE=require("path");oE.exports=(t,e,r)=>{typeof t=="function"?(r=t,e=null,t={}):Array.isArray(t)&&(e=t,t={}),typeof e=="function"&&(r=e,e=null),e?e=Array.from(e):e=[];let n=wI(t);if(n.sync&&typeof r=="function")throw new TypeError("callback not supported for sync tar functions");if(!n.file&&typeof r=="function")throw new TypeError("callback only supported with file option");return e.length&&SI(n,e),n.file&&n.sync?OI(n):n.file?RI(n,r):n.sync?_I(n):CI(n)};var SI=(t,e)=>{let r=new Map(e.map(s=>[s.replace(/\/+$/,""),!0])),n=t.filter,i=(s,o)=>{let a=o||cE.parse(s).root||".",u=s===a?!1:r.has(s)?r.get(s):i(cE.dirname(s),a);return r.set(s,u),u};t.filter=n?(s,o)=>n(s,o)&&i(s.replace(/\/+$/,"")):s=>i(s.replace(/\/+$/,""))},OI=t=>{let e=new sa.Sync(t),r=t.file,n=aE.statSync(r),i=t.maxReadSize||16*1024*1024;new uE.ReadStreamSync(r,{readSize:i,size:n.size}).pipe(e)},RI=(t,e)=>{let r=new sa(t),n=t.maxReadSize||16*1024*1024,i=t.file,s=new Promise((o,a)=>{r.on("error",a),r.on("close",o),aE.stat(i,(u,c)=>{if(u)a(u);else{let l=new uE.ReadStream(i,{readSize:n,size:c.size});l.on("error",a),l.pipe(r)}})});return e?s.then(e,e):s},_I=t=>new sa.Sync(t),CI=t=>new sa(t)});var fE=d(be=>{"use strict";be.c=be.create=V1();be.r=be.replace=ml();be.t=be.list=Ko();be.u=be.update=nb();be.x=be.extract=lE();be.Pack=qo();be.Unpack=Nl();be.Parse=Xo();be.ReadEntry=Eo();be.WriteEntry=Hc();be.Header=jn();be.Pax=Oo();be.types=Ic()});var hE=d(Il=>{var an=require("path"),_r=process.platform==="win32",Cr=require("fs"),AI=process.env.NODE_DEBUG&&/fs/.test(process.env.NODE_DEBUG);function LI(){var t;if(AI){var e=new Error;t=r}else t=n;return t;function r(i){i&&(e.message=i.message,i=e,n(i))}function n(i){if(i){if(process.throwDeprecation)throw i;if(!process.noDeprecation){var s="fs: missing callback "+(i.stack||i.message);process.traceDeprecation?console.trace(s):console.error(s)}}}}function TI(t){return typeof t=="function"?t:LI()}var _q=an.normalize;_r?Jt=/(.*?)(?:[\/\\]+|$)/g:Jt=/(.*?)(?:[\/]+|$)/g;var Jt;_r?cs=/^(?:[a-zA-Z]:|[\\\/]{2}[^\\\/]+[\\\/][^\\\/]+)?[\\\/]*/:cs=/^[\/]*/;var cs;Il.realpathSync=function(e,r){if(e=an.resolve(e),r&&Object.prototype.hasOwnProperty.call(r,e))return r[e];var n=e,i={},s={},o,a,u,c;l();function l(){var w=cs.exec(e);o=w[0].length,a=w[0],u=w[0],c="",_r&&!s[u]&&(Cr.lstatSync(u),s[u]=!0)}for(;o=e.length)return r&&(r[i]=e),n(null,e);Jt.lastIndex=a;var w=Jt.exec(e);return l=u,u+=w[0],c=l+w[1],a=Jt.lastIndex,o[c]||r&&r[c]===c?process.nextTick(p):r&&Object.prototype.hasOwnProperty.call(r,c)?h(r[c]):Cr.lstat(c,y)}function y(w,v){if(w)return n(w);if(!v.isSymbolicLink())return o[c]=!0,r&&(r[c]=c),process.nextTick(p);if(!_r){var R=v.dev.toString(32)+":"+v.ino.toString(32);if(s.hasOwnProperty(R))return m(null,s[R],c)}Cr.stat(c,function(A){if(A)return n(A);Cr.readlink(c,function(_,F){_r||(s[R]=F),m(_,F)})})}function m(w,v,R){if(w)return n(w);var A=an.resolve(l,v);r&&(r[R]=A),h(A)}function h(w){e=an.resolve(w,e.slice(a)),f()}}});var kl=d((Aq,pE)=>{pE.exports=Ar;Ar.realpath=Ar;Ar.sync=Pl;Ar.realpathSync=Pl;Ar.monkeypatch=xI;Ar.unmonkeypatch=NI;var ti=require("fs"),Dl=ti.realpath,Fl=ti.realpathSync,II=process.version,dE=/^v[0-5]\./.test(II),mE=hE();function gE(t){return t&&t.syscall==="realpath"&&(t.code==="ELOOP"||t.code==="ENOMEM"||t.code==="ENAMETOOLONG")}function Ar(t,e,r){if(dE)return Dl(t,e,r);typeof e=="function"&&(r=e,e=null),Dl(t,e,function(n,i){gE(n)?mE.realpath(t,e,r):r(n,i)})}function Pl(t,e){if(dE)return Fl(t,e);try{return Fl(t,e)}catch(r){if(gE(r))return mE.realpathSync(t,e);throw r}}function xI(){ti.realpath=Ar,ti.realpathSync=Pl}function NI(){ti.realpath=Dl,ti.realpathSync=Fl}});var vE=d((Lq,yE)=>{yE.exports=function(t,e){for(var r=[],n=0;n{"use strict";bE.exports=EE;function EE(t,e,r){t instanceof RegExp&&(t=wE(t,r)),e instanceof RegExp&&(e=wE(e,r));var n=SE(t,e,r);return n&&{start:n[0],end:n[1],pre:r.slice(0,n[0]),body:r.slice(n[0]+t.length,n[1]),post:r.slice(n[1]+e.length)}}function wE(t,e){var r=e.match(t);return r?r[0]:null}EE.range=SE;function SE(t,e,r){var n,i,s,o,a,u=r.indexOf(t),c=r.indexOf(e,u+1),l=u;if(u>=0&&c>0){for(n=[],s=r.length;l>=0&&!a;)l==u?(n.push(l),u=r.indexOf(t,l+1)):n.length==1?a=[n.pop(),c]:(i=n.pop(),i=0?u:c;n.length&&(a=[s,o])}return a}});var NE=d((xq,RE)=>{var DI=vE(),_E=OE();RE.exports=FI;var CE="\0SLASH"+Math.random()+"\0",AE="\0OPEN"+Math.random()+"\0",ql="\0CLOSE"+Math.random()+"\0",LE="\0COMMA"+Math.random()+"\0",TE="\0PERIOD"+Math.random()+"\0";function jl(t){return parseInt(t,10)==t?parseInt(t,10):t.charCodeAt(0)}function kI(t){return t.split("\\\\").join(CE).split("\\{").join(AE).split("\\}").join(ql).split("\\,").join(LE).split("\\.").join(TE)}function qI(t){return t.split(CE).join("\\").split(AE).join("{").split(ql).join("}").split(LE).join(",").split(TE).join(".")}function xE(t){if(!t)return[""];var e=[],r=_E("{","}",t);if(!r)return t.split(",");var n=r.pre,i=r.body,s=r.post,o=n.split(",");o[o.length-1]+="{"+i+"}";var a=xE(s);return s.length&&(o[o.length-1]+=a.shift(),o.push.apply(o,a)),e.push.apply(e,o),e}function FI(t){return t?(t.substr(0,2)==="{}"&&(t="\\{\\}"+t.substr(2)),ri(kI(t),!0).map(qI)):[]}function jI(t){return"{"+t+"}"}function $I(t){return/^-?0\d/.test(t)}function MI(t,e){return t<=e}function BI(t,e){return t>=e}function ri(t,e){var r=[],n=_E("{","}",t);if(!n||/\$$/.test(n.pre))return[t];var i=/^-?\d+\.\.-?\d+(?:\.\.-?\d+)?$/.test(n.body),s=/^[a-zA-Z]\.\.[a-zA-Z](?:\.\.-?\d+)?$/.test(n.body),o=i||s,a=n.body.indexOf(",")>=0;if(!o&&!a)return n.post.match(/,.*\}/)?(t=n.pre+"{"+n.body+ql+n.post,ri(t)):[t];var u;if(o)u=n.body.split(/\.\./);else if(u=xE(n.body),u.length===1&&(u=ri(u[0],!1).map(jI),u.length===1)){var l=n.post.length?ri(n.post,!1):[""];return l.map(function(G){return n.pre+u[0]+G})}var c=n.pre,l=n.post.length?ri(n.post,!1):[""],f;if(o){var p=jl(u[0]),y=jl(u[1]),m=Math.max(u[0].length,u[1].length),h=u.length==3?Math.abs(jl(u[2])):1,w=MI,v=y0){var x=new Array(F+1).join("0");A<0?_="-"+x+_.slice(1):_=x+_}}f.push(_)}}else f=DI(u,function(q){return ri(q,!1)});for(var N=0;N{IE.exports=vt;vt.Minimatch=Oe;var ls={sep:"/"};try{ls=require("path")}catch(t){}var $l=vt.GLOBSTAR=Oe.GLOBSTAR={},UI=NE(),PE={"!":{open:"(?:(?!(?:",close:"))[^/]*?)"},"?":{open:"(?:",close:")?"},"+":{open:"(?:",close:")+"},"*":{open:"(?:",close:")*"},"@":{open:"(?:",close:")"}},Ml="[^/]",Bl=Ml+"*?",GI="(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?",zI="(?:(?!(?:\\/|^)\\.).)*?",DE=HI("().*{}+?[]^$\\!");function HI(t){return t.split("").reduce(function(e,r){return e[r]=!0,e},{})}var FE=/\/+/;vt.filter=WI;function WI(t,e){return e=e||{},function(r,n,i){return vt(r,t,e)}}function kE(t,e){t=t||{},e=e||{};var r={};return Object.keys(e).forEach(function(n){r[n]=e[n]}),Object.keys(t).forEach(function(n){r[n]=t[n]}),r}vt.defaults=function(t){if(!t||!Object.keys(t).length)return vt;var e=vt,r=function(i,s,o){return e.minimatch(i,s,kE(t,o))};return r.Minimatch=function(i,s){return new e.Minimatch(i,kE(t,s))},r};Oe.defaults=function(t){return!t||!Object.keys(t).length?Oe:vt.defaults(t).Minimatch};function vt(t,e,r){if(typeof e!="string")throw new TypeError("glob pattern string required");return r||(r={}),!r.nocomment&&e.charAt(0)==="#"?!1:e.trim()===""?t==="":new Oe(e,r).match(t)}function Oe(t,e){if(!(this instanceof Oe))return new Oe(t,e);if(typeof t!="string")throw new TypeError("glob pattern string required");e||(e={}),t=t.trim(),ls.sep!=="/"&&(t=t.split(ls.sep).join("/")),this.options=e,this.set=[],this.pattern=t,this.regexp=null,this.negate=!1,this.comment=!1,this.empty=!1,this.make()}Oe.prototype.debug=function(){};Oe.prototype.make=YI;function YI(){if(!this._made){var t=this.pattern,e=this.options;if(!e.nocomment&&t.charAt(0)==="#"){this.comment=!0;return}if(!t){this.empty=!0;return}this.parseNegate();var r=this.globSet=this.braceExpand();e.debug&&(this.debug=console.error),this.debug(this.pattern,r),r=this.globParts=r.map(function(n){return n.split(FE)}),this.debug(this.pattern,r),r=r.map(function(n,i,s){return n.map(this.parse,this)},this),this.debug(this.pattern,r),r=r.filter(function(n){return n.indexOf(!1)===-1}),this.debug(this.pattern,r),this.set=r}}Oe.prototype.parseNegate=VI;function VI(){var t=this.pattern,e=!1,r=this.options,n=0;if(!r.nonegate){for(var i=0,s=t.length;i1024*64)throw new TypeError("pattern is too long");var r=this.options;if(!r.noglobstar&&t==="**")return $l;if(t==="")return"";var n="",i=!!r.nocase,s=!1,o=[],a=[],u,c=!1,l=-1,f=-1,p=t.charAt(0)==="."?"":r.dot?"(?!(?:^|\\/)\\.{1,2}(?:$|\\/))":"(?!\\.)",y=this;function m(){if(u){switch(u){case"*":n+=Bl,i=!0;break;case"?":n+=Ml,i=!0;break;default:n+="\\"+u;break}y.debug("clearStateChar %j %j",u,n),u=!1}}for(var h=0,w=t.length,v;h-1;M--){var O=a[M],q=n.slice(0,O.reStart),G=n.slice(O.reStart,O.reEnd-8),$=n.slice(O.reEnd-8,O.reEnd),B=n.slice(O.reEnd);$+=B;var V=q.split("(").length-1,X=B;for(h=0;h=0&&(i=t[s],!i);s--);for(s=0;s>> no match, partial?`,t,l,e,f),l===o))}var y;if(typeof u=="string"?(n.nocase?y=c.toLowerCase()===u.toLowerCase():y=c===u,this.debug("string match",u,c,y)):(y=c.match(u),this.debug("pattern match",u,c,y)),!y)return!1}if(i===o&&s===a)return!0;if(i===o)return r;if(s===a){var m=i===o-1&&t[i]==="";return m}throw new Error("wtf?")};function cP(t){return t.replace(/\\(.)/g,"$1")}function fP(t){return t.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&")}});var HE=d((eq,Xl)=>{typeof Object.create=="function"?Xl.exports=function(e,r){r&&(e.super_=r,e.prototype=Object.create(r.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}))}:Xl.exports=function(e,r){if(r){e.super_=r;var n=function(){};n.prototype=r.prototype,e.prototype=new n,e.prototype.constructor=e}}});var WE=d((tq,Kl)=>{try{if(Zl=require("util"),typeof Zl.inherits!="function")throw"";Kl.exports=Zl.inherits}catch(t){Kl.exports=HE()}var Zl});var da=d((rq,pa)=>{"use strict";function VE(t){return t.charAt(0)==="/"}function YE(t){var e=/^([a-zA-Z]:|[\\\/]{2}[^\\\/]+[\\\/]+[^\\\/]+)?([\\\/])?([\s\S]*?)$/,r=e.exec(t),n=r[1]||"",i=Boolean(n&&n.charAt(1)!==":");return Boolean(r[2]||i)}pa.exports=process.platform==="win32"?YE:VE;pa.exports.posix=VE;pa.exports.win32=YE});var Ql=d(Dt=>{Dt.alphasort=XE;Dt.alphasorti=KE;Dt.setopts=pP;Dt.ownProp=ZE;Dt.makeAbs=ps;Dt.finish=dP;Dt.mark=mP;Dt.isIgnored=JE;Dt.childrenIgnored=gP;function ZE(t,e){return Object.prototype.hasOwnProperty.call(t,e)}var ni=require("path"),yP=ha(),QE=da(),Jl=yP.Minimatch;function KE(t,e){return t.toLowerCase().localeCompare(e.toLowerCase())}function XE(t,e){return t.localeCompare(e)}function bP(t,e){t.ignore=e.ignore||[],Array.isArray(t.ignore)||(t.ignore=[t.ignore]),t.ignore.length&&(t.ignore=t.ignore.map(vP))}function vP(t){var e=null;if(t.slice(-3)==="/**"){var r=t.replace(/(\/\*\*)+$/,"");e=new Jl(r,{dot:!0})}return{matcher:new Jl(t,{dot:!0}),gmatcher:e}}function pP(t,e,r){if(r||(r={}),r.matchBase&&e.indexOf("/")===-1){if(r.noglobstar)throw new Error("base matching requires globstar");e="**/"+e}t.silent=!!r.silent,t.pattern=e,t.strict=r.strict!==!1,t.realpath=!!r.realpath,t.realpathCache=r.realpathCache||Object.create(null),t.follow=!!r.follow,t.dot=!!r.dot,t.mark=!!r.mark,t.nodir=!!r.nodir,t.nodir&&(t.mark=!0),t.sync=!!r.sync,t.nounique=!!r.nounique,t.nonull=!!r.nonull,t.nosort=!!r.nosort,t.nocase=!!r.nocase,t.stat=!!r.stat,t.noprocess=!!r.noprocess,t.absolute=!!r.absolute,t.maxLength=r.maxLength||Infinity,t.cache=r.cache||Object.create(null),t.statCache=r.statCache||Object.create(null),t.symlinks=r.symlinks||Object.create(null),bP(t,r),t.changedCwd=!1;var n=process.cwd();ZE(r,"cwd")?(t.cwd=ni.resolve(r.cwd),t.changedCwd=t.cwd!==n):t.cwd=n,t.root=r.root||ni.resolve(t.cwd,"/"),t.root=ni.resolve(t.root),process.platform==="win32"&&(t.root=t.root.replace(/\\/g,"/")),t.cwdAbs=QE(t.cwd)?t.cwd:ps(t,t.cwd),process.platform==="win32"&&(t.cwdAbs=t.cwdAbs.replace(/\\/g,"/")),t.nomount=!!r.nomount,r.nonegate=!0,r.nocomment=!0,t.minimatch=new Jl(e,r),t.options=t.minimatch.options}function dP(t){for(var e=t.nounique,r=e?[]:Object.create(null),n=0,i=t.matches.length;n{ew.exports=tw;tw.GlobSync=be;var ma=require("fs"),EP=Gl(),rw=ha(),iq=rw.Minimatch,sq=ef().Glob,oq=require("util"),tf=require("path"),nw=require("assert"),ga=da(),er=Ql(),aq=er.alphasort,uq=er.alphasorti,wP=er.setopts,rf=er.ownProp,SP=er.childrenIgnored,OP=er.isIgnored;function tw(t,e){if(typeof e=="function"||arguments.length===3)throw new TypeError(`callback provided to sync glob -See: https://github.com/isaacs/node-glob/issues/167`);return new be(t,e).found}function be(t,e){if(!t)throw new Error("must provide pattern");if(typeof e=="function"||arguments.length===3)throw new TypeError(`callback provided to sync glob -See: https://github.com/isaacs/node-glob/issues/167`);if(!(this instanceof be))return new be(t,e);if(wP(this,t,e),this.noprocess)return this;var r=this.minimatch.set.length;this.matches=new Array(r);for(var n=0;nthis.maxLength)return!1;if(!this.stat&&rf(this.cache,e)){var o=this.cache[e];if(Array.isArray(o)&&(o="DIR"),!r||o==="DIR")return o;if(r&&o==="FILE")return!1}var n,i=this.statCache[e];if(!i){var s;try{s=ma.lstatSync(e)}catch(a){if(a&&(a.code==="ENOENT"||a.code==="ENOTDIR"))return this.statCache[e]=!1,!1}if(s&&s.isSymbolicLink())try{i=ma.statSync(e)}catch(a){i=s}else i=s}this.statCache[e]=i;var o=!0;return i&&(o=i.isDirectory()?"DIR":"FILE"),this.cache[e]=this.cache[e]||o,r&&o==="FILE"?!1:o};be.prototype._mark=function(t){return er.mark(this,t)};be.prototype._makeAbs=function(t){return er.makeAbs(this,t)}});var nf=d((lq,sw)=>{sw.exports=ow;function ow(t,e){if(t&&e)return ow(t)(e);if(typeof t!="function")throw new TypeError("need wrapper function");return Object.keys(t).forEach(function(n){r[n]=t[n]}),r;function r(){for(var n=new Array(arguments.length),i=0;i{var aw=nf();sf.exports=aw(ya);sf.exports.strict=aw(uw);ya.proto=ya(function(){Object.defineProperty(Function.prototype,"once",{value:function(){return ya(this)},configurable:!0}),Object.defineProperty(Function.prototype,"onceStrict",{value:function(){return uw(this)},configurable:!0})});function ya(t){var e=function(){return e.called?e.value:(e.called=!0,e.value=t.apply(this,arguments))};return e.called=!1,e}function uw(t){var e=function(){if(e.called)throw new Error(e.onceError);return e.called=!0,e.value=t.apply(this,arguments)},r=t.name||"Function wrapped with `once`";return e.onceError=r+" shouldn't be called more than once",e.called=!1,e}});var lw=d((hq,cw)=>{var RP=nf(),ds=Object.create(null),CP=of();cw.exports=RP(_P);function _P(t,e){return ds[t]?(ds[t].push(e),null):(ds[t]=[e],AP(t))}function AP(t){return CP(function e(){var r=ds[t],n=r.length,i=TP(arguments);try{for(var s=0;sn?(r.splice(0,n),process.nextTick(function(){e.apply(null,i)})):delete ds[t]}})}function TP(t){for(var e=t.length,r=[],n=0;n{fw.exports=un;var va=require("fs"),LP=Gl(),hw=ha(),pq=hw.Minimatch,xP=WE(),NP=require("events").EventEmitter,af=require("path"),uf=require("assert"),ms=da(),cf=iw(),tr=Ql(),dq=tr.alphasort,mq=tr.alphasorti,IP=tr.setopts,lf=tr.ownProp,ff=lw(),gq=require("util"),PP=tr.childrenIgnored,DP=tr.isIgnored,FP=of();function un(t,e,r){if(typeof e=="function"&&(r=e,e={}),e||(e={}),e.sync){if(r)throw new TypeError("callback provided to sync glob");return cf(t,e)}return new Z(t,e,r)}un.sync=cf;var kP=un.GlobSync=cf.GlobSync;un.glob=un;function jP(t,e){if(e===null||typeof e!="object")return t;for(var r=Object.keys(e),n=r.length;n--;)t[r[n]]=e[r[n]];return t}un.hasMagic=function(t,e){var r=jP({},e);r.noprocess=!0;var n=new Z(t,r),i=n.minimatch.set;if(!t)return!1;if(i.length>1)return!0;for(var s=0;sthis.maxLength)return e();if(!this.stat&&lf(this.cache,r)){var i=this.cache[r];if(Array.isArray(i)&&(i="DIR"),!n||i==="DIR")return e(null,i);if(n&&i==="FILE")return e()}var s,o=this.statCache[r];if(o!==void 0){if(o===!1)return e(null,o);var a=o.isDirectory()?"DIR":"FILE";return n&&a==="FILE"?e():e(null,a,o)}var u=this,c=ff("stat\0"+r,l);c&&va.lstat(r,c);function l(f,p){if(p&&p.isSymbolicLink())return va.stat(r,function(y,m){y?u._stat2(t,r,null,p,e):u._stat2(t,r,y,m,e)});u._stat2(t,r,f,p,e)}};Z.prototype._stat2=function(t,e,r,n,i){if(r&&(r.code==="ENOENT"||r.code==="ENOTDIR"))return this.statCache[e]=!1,i();var s=t.slice(-1)==="/";if(this.statCache[e]=n,e.slice(-1)==="/"&&n&&!n.isDirectory())return i(null,!1,n);var o=!0;return n&&(o=n.isDirectory()?"DIR":"FILE"),this.cache[e]=this.cache[e]||o,s&&o==="FILE"?i():i(null,o,n)}});var wa=d((vq,pw)=>{var se=require("assert"),dw=require("path"),mw=require("fs"),ii;try{ii=ef()}catch(t){}var $P={nosort:!0,silent:!0},hf=0,gs=process.platform==="win32",gw=t=>{if(["unlink","chmod","stat","lstat","rmdir","readdir"].forEach(r=>{t[r]=t[r]||mw[r],r=r+"Sync",t[r]=t[r]||mw[r]}),t.maxBusyTries=t.maxBusyTries||3,t.emfileWait=t.emfileWait||1e3,t.glob===!1&&(t.disableGlob=!0),t.disableGlob!==!0&&ii===void 0)throw Error("glob dependency not found, set `options.disableGlob = true` if intentional");t.disableGlob=t.disableGlob||!1,t.glob=t.glob||$P},df=(t,e,r)=>{typeof e=="function"&&(r=e,e={}),se(t,"rimraf: missing path"),se.equal(typeof t,"string","rimraf: path should be a string"),se.equal(typeof r,"function","rimraf: callback function required"),se(e,"rimraf: invalid options argument provided"),se.equal(typeof e,"object","rimraf: options should be object"),gw(e);let n=0,i=null,s=0,o=u=>{i=i||u,--s==0&&r(i)},a=(u,c)=>{if(u)return r(u);if(s=c.length,s===0)return r();c.forEach(l=>{let f=p=>{if(p){if((p.code==="EBUSY"||p.code==="ENOTEMPTY"||p.code==="EPERM")&&npf(l,e,f),n*100);if(p.code==="EMFILE"&&hfpf(l,e,f),hf++);p.code==="ENOENT"&&(p=null)}hf=0,o(p)};pf(l,e,f)})};if(e.disableGlob||!ii.hasMagic(t))return a(null,[t]);e.lstat(t,(u,c)=>{if(!u)return a(null,[t]);ii(t,e.glob,a)})},pf=(t,e,r)=>{se(t),se(e),se(typeof r=="function"),e.lstat(t,(n,i)=>{if(n&&n.code==="ENOENT")return r(null);if(n&&n.code==="EPERM"&&gs&&yw(t,e,n,r),i&&i.isDirectory())return ba(t,e,n,r);e.unlink(t,s=>{if(s){if(s.code==="ENOENT")return r(null);if(s.code==="EPERM")return gs?yw(t,e,s,r):ba(t,e,s,r);if(s.code==="EISDIR")return ba(t,e,s,r)}return r(s)})})},yw=(t,e,r,n)=>{se(t),se(e),se(typeof n=="function"),e.chmod(t,438,i=>{i?n(i.code==="ENOENT"?null:r):e.stat(t,(s,o)=>{s?n(s.code==="ENOENT"?null:r):o.isDirectory()?ba(t,e,r,n):e.unlink(t,n)})})},vw=(t,e,r)=>{se(t),se(e);try{e.chmodSync(t,438)}catch(i){if(i.code==="ENOENT")return;throw r}let n;try{n=e.statSync(t)}catch(i){if(i.code==="ENOENT")return;throw r}n.isDirectory()?Ea(t,e,r):e.unlinkSync(t)},ba=(t,e,r,n)=>{se(t),se(e),se(typeof n=="function"),e.rmdir(t,i=>{i&&(i.code==="ENOTEMPTY"||i.code==="EEXIST"||i.code==="EPERM")?MP(t,e,n):i&&i.code==="ENOTDIR"?n(r):n(i)})},MP=(t,e,r)=>{se(t),se(e),se(typeof r=="function"),e.readdir(t,(n,i)=>{if(n)return r(n);let s=i.length;if(s===0)return e.rmdir(t,r);let o;i.forEach(a=>{df(dw.join(t,a),e,u=>{if(!o){if(u)return r(o=u);--s==0&&e.rmdir(t,r)}})})})},bw=(t,e)=>{e=e||{},gw(e),se(t,"rimraf: missing path"),se.equal(typeof t,"string","rimraf: path should be a string"),se(e,"rimraf: missing options"),se.equal(typeof e,"object","rimraf: options should be object");let r;if(e.disableGlob||!ii.hasMagic(t))r=[t];else try{e.lstatSync(t),r=[t]}catch(n){r=ii.sync(t,e.glob)}if(!!r.length)for(let n=0;n{se(t),se(e);try{e.rmdirSync(t)}catch(n){if(n.code==="ENOENT")return;if(n.code==="ENOTDIR")throw r;(n.code==="ENOTEMPTY"||n.code==="EEXIST"||n.code==="EPERM")&&BP(t,e)}},BP=(t,e)=>{se(t),se(e),e.readdirSync(t).forEach(i=>bw(dw.join(t,i),e));let r=gs?100:1,n=0;do{let i=!0;try{let s=e.rmdirSync(t,e);return i=!1,s}finally{if(++n{var Re=require("fs"),mf=require("os"),st=require("path"),Ew=require("crypto"),Ft={fs:Re.constants,os:mf.constants},ww=wa(),Sw="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",Ow=/XXXXXX/,UP=3,Rw=(Ft.O_CREAT||Ft.fs.O_CREAT)|(Ft.O_EXCL||Ft.fs.O_EXCL)|(Ft.O_RDWR||Ft.fs.O_RDWR),GP=mf.platform()==="win32",zP=Ft.EBADF||Ft.os.errno.EBADF,HP=Ft.ENOENT||Ft.os.errno.ENOENT,Cw=448,_w=384,WP="exit",si=[],Aw=Re.rmdirSync.bind(Re),Tw=ww.sync,Lw=!1;function gf(t,e){let r=oi(t,e),n=r[0],i=r[1];try{Nw(n)}catch(o){return i(o)}let s=n.tries;(function o(){try{let a=xw(n);Re.stat(a,function(u){if(!u)return s-- >0?o():i(new Error("Could not get a unique tmp filename, max tries reached "+a));i(null,a)})}catch(a){i(a)}})()}function yf(t){let e=oi(t),r=e[0];Nw(r);let n=r.tries;do{let i=xw(r);try{Re.statSync(i)}catch(s){return i}}while(n-- >0);throw new Error("Could not get a unique tmp filename, max tries reached")}function VP(t,e){let r=oi(t,e),n=r[0],i=r[1];gf(n,function(o,a){if(o)return i(o);Re.open(a,Rw,n.mode||_w,function(c,l){if(c)return i(c);if(n.discardDescriptor)return Re.close(l,function(p){return i(p,a,void 0,vf(a,-1,n,!1))});{let f=n.discardDescriptor||n.detachDescriptor;i(null,a,l,vf(a,f?-1:l,n,!1))}})})}function YP(t){let e=oi(t),r=e[0],n=r.discardDescriptor||r.detachDescriptor,i=yf(r);var s=Re.openSync(i,Rw,r.mode||_w);return r.discardDescriptor&&(Re.closeSync(s),s=void 0),{name:i,fd:s,removeCallback:vf(i,n?-1:s,r,!0)}}function XP(t,e){let r=oi(t,e),n=r[0],i=r[1];gf(n,function(o,a){if(o)return i(o);Re.mkdir(a,n.mode||Cw,function(c){if(c)return i(c);i(null,a,Iw(a,n,!1))})})}function KP(t){let e=oi(t),r=e[0],n=yf(r);return Re.mkdirSync(n,r.mode||Cw),{name:n,removeCallback:Iw(n,r,!0)}}function ZP(t,e){let r=function(n){if(n&&!bf(n))return e(n);e()};0<=t[0]?Re.close(t[0],function(){Re.unlink(t[1],r)}):Re.unlink(t[1],r)}function QP(t){let e=null;try{0<=t[0]&&Re.closeSync(t[0])}catch(r){if(!JP(r)&&!bf(r))throw r}finally{try{Re.unlinkSync(t[1])}catch(r){bf(r)||(e=r)}}if(e!==null)throw e}function vf(t,e,r,n){let i=Sa(QP,[e,t],n),s=Sa(ZP,[e,t],n,i);return r.keep||si.unshift(i),n?i:s}function Iw(t,e,r){let n=e.unsafeCleanup?ww:Re.rmdir.bind(Re),i=e.unsafeCleanup?Tw:Aw,s=Sa(i,t,r),o=Sa(n,t,r,s);return e.keep||si.unshift(s),r?s:o}function Sa(t,e,r,n){let i=!1;return function s(o){if(!i){let a=n||s,u=si.indexOf(a);return u>=0&&si.splice(u,1),i=!0,r||t===Aw||t===Tw?t(e):t(e,o||function(){})}}}function e3(){if(!!Lw)for(;si.length;)try{si[0]()}catch(t){}}function Pw(t){let e=[],r=null;try{r=Ew.randomBytes(t)}catch(i){r=Ew.pseudoRandomBytes(t)}for(var n=0;n{ja(r3);uh(r3,{FetchError:()=>qe,Headers:()=>ot,Request:()=>or,Response:()=>Et,default:()=>d3});var bt=Te(require("stream")),Of=Te(require("http")),Oa=Te(require("url")),qw=Te(require("https")),Lr=Te(require("zlib")),n3=bt.default.Readable,nr=Symbol("buffer"),Rf=Symbol("type"),cn=class{constructor(){this[Rf]="";let e=arguments[0],r=arguments[1],n=[],i=0;if(e){let o=e,a=Number(o.length);for(let u=0;u1&&arguments[1]!==void 0?arguments[1]:{},n=r.size;let i=n===void 0?0:n;var s=r.timeout;let o=s===void 0?0:s;t==null?t=null:Mw(t)?t=Buffer.from(t.toString()):ys(t)||Buffer.isBuffer(t)||(Object.prototype.toString.call(t)==="[object ArrayBuffer]"?t=Buffer.from(t):ArrayBuffer.isView(t)?t=Buffer.from(t.buffer,t.byteOffset,t.byteLength):t instanceof bt.default||(t=Buffer.from(String(t)))),this[ir]={body:t,disturbed:!1,error:null},this.size=i,this.timeout=o,t instanceof bt.default&&t.on("error",function(a){let u=a.name==="AbortError"?a:new qe(`Invalid response body while trying to fetch ${e.url}: ${a.message}`,"system",a);e[ir].error=u})}Ce.prototype={get body(){return this[ir].body},get bodyUsed(){return this[ir].disturbed},arrayBuffer(){return ai.call(this).then(function(t){return t.buffer.slice(t.byteOffset,t.byteOffset+t.byteLength)})},blob(){let t=this.headers&&this.headers.get("content-type")||"";return ai.call(this).then(function(e){return Object.assign(new cn([],{type:t.toLowerCase()}),{[nr]:e})})},json(){var t=this;return ai.call(this).then(function(e){try{return JSON.parse(e.toString())}catch(r){return Ce.Promise.reject(new qe(`invalid json response body at ${t.url} reason: ${r.message}`,"invalid-json"))}})},text(){return ai.call(this).then(function(t){return t.toString()})},buffer(){return ai.call(this)},textConverted(){var t=this;return ai.call(this).then(function(e){return i3(e,t.headers)})}};Object.defineProperties(Ce.prototype,{body:{enumerable:!0},bodyUsed:{enumerable:!0},arrayBuffer:{enumerable:!0},blob:{enumerable:!0},json:{enumerable:!0},text:{enumerable:!0}});Ce.mixIn=function(t){for(let e of Object.getOwnPropertyNames(Ce.prototype))if(!(e in t)){let r=Object.getOwnPropertyDescriptor(Ce.prototype,e);Object.defineProperty(t,e,r)}};function ai(){var t=this;if(this[ir].disturbed)return Ce.Promise.reject(new TypeError(`body used already for: ${this.url}`));if(this[ir].disturbed=!0,this[ir].error)return Ce.Promise.reject(this[ir].error);let e=this.body;if(e===null)return Ce.Promise.resolve(Buffer.alloc(0));if(ys(e)&&(e=e.stream()),Buffer.isBuffer(e))return Ce.Promise.resolve(e);if(!(e instanceof bt.default))return Ce.Promise.resolve(Buffer.alloc(0));let r=[],n=0,i=!1;return new Ce.Promise(function(s,o){let a;t.timeout&&(a=setTimeout(function(){i=!0,o(new qe(`Response timeout while trying to fetch ${t.url} (over ${t.timeout}ms)`,"body-timeout"))},t.timeout)),e.on("error",function(u){u.name==="AbortError"?(i=!0,o(u)):o(new qe(`Invalid response body while trying to fetch ${t.url}: ${u.message}`,"system",u))}),e.on("data",function(u){if(!(i||u===null)){if(t.size&&n+u.length>t.size){i=!0,o(new qe(`content size at ${t.url} over limit: ${t.size}`,"max-size"));return}n+=u.length,r.push(u)}}),e.on("end",function(){if(!i){clearTimeout(a);try{s(Buffer.concat(r,n))}catch(u){o(new qe(`Could not create Buffer from response body for ${t.url}: ${u.message}`,"system",u))}}})})}function i3(t,e){if(typeof Cf!="function")throw new Error("The package `encoding` must be installed to use the textConverted() function");let r=e.get("content-type"),n="utf-8",i,s;return r&&(i=/charset=([^;]*)/i.exec(r)),s=t.slice(0,1024).toString(),!i&&s&&(i=/0&&arguments[0]!==void 0?arguments[0]:void 0;if(this[de]=Object.create(null),e instanceof ot){let r=e.raw(),n=Object.keys(r);for(let i of n)for(let s of r[i])this.append(i,s);return}if(e!=null)if(typeof e=="object"){let r=e[Symbol.iterator];if(r!=null){if(typeof r!="function")throw new TypeError("Header pairs must be iterable");let n=[];for(let i of e){if(typeof i!="object"||typeof i[Symbol.iterator]!="function")throw new TypeError("Each header pair must be iterable");n.push(Array.from(i))}for(let i of n){if(i.length!==2)throw new TypeError("Each header pair must be a name/value tuple");this.append(i[0],i[1])}}else for(let n of Object.keys(e)){let i=e[n];this.append(n,i)}}else throw new TypeError("Provided initializer must be an object")}get(e){e=`${e}`,vs(e);let r=ui(this[de],e);return r===void 0?null:this[de][r].join(", ")}forEach(e){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:void 0,n=Af(this),i=0;for(;i1&&arguments[1]!==void 0?arguments[1]:"key+value";return Object.keys(t[de]).sort().map(e==="key"?function(n){return n.toLowerCase()}:e==="value"?function(n){return t[de][n].join(", ")}:function(n){return[n.toLowerCase(),t[de][n].join(", ")]})}var Lf=Symbol("internal");function Tf(t,e){let r=Object.create(xf);return r[Lf]={target:t,kind:e,index:0},r}var xf=Object.setPrototypeOf({next(){if(!this||Object.getPrototypeOf(this)!==xf)throw new TypeError("Value of `this` is not a HeadersIterator");var t=this[Lf];let e=t.target,r=t.kind,n=t.index,i=Af(e,r),s=i.length;return n>=s?{value:void 0,done:!0}:(this[Lf].index=n+1,{value:i[n],done:!1})}},Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]())));Object.defineProperty(xf,Symbol.toStringTag,{value:"HeadersIterator",writable:!1,enumerable:!1,configurable:!0});function o3(t){let e=Object.assign({__proto__:null},t[de]),r=ui(t[de],"Host");return r!==void 0&&(e[r]=e[r][0]),e}function a3(t){let e=new ot;for(let r of Object.keys(t))if(!zw.test(r))if(Array.isArray(t[r]))for(let n of t[r])_f.test(n)||(e[de][r]===void 0?e[de][r]=[n]:e[de][r].push(n));else _f.test(t[r])||(e[de][r]=[t[r]]);return e}var xr=Symbol("Response internals"),u3=Of.default.STATUS_CODES,Et=class{constructor(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:null,r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};Ce.call(this,e,r);let n=r.status||200,i=new ot(r.headers);if(e!=null&&!i.has("Content-Type")){let s=Uw(e);s&&i.append("Content-Type",s)}this[xr]={url:r.url,status:n,statusText:r.statusText||u3[n],headers:i,counter:r.counter}}get url(){return this[xr].url||""}get status(){return this[xr].status}get ok(){return this[xr].status>=200&&this[xr].status<300}get redirected(){return this[xr].counter>0}get statusText(){return this[xr].statusText}get headers(){return this[xr].headers}clone(){return new Et(Bw(this),{url:this.url,status:this.status,statusText:this.statusText,headers:this.headers,ok:this.ok,redirected:this.redirected})}};Ce.mixIn(Et.prototype);Object.defineProperties(Et.prototype,{url:{enumerable:!0},status:{enumerable:!0},ok:{enumerable:!0},redirected:{enumerable:!0},statusText:{enumerable:!0},headers:{enumerable:!0},clone:{enumerable:!0}});Object.defineProperty(Et.prototype,Symbol.toStringTag,{value:"Response",writable:!1,enumerable:!1,configurable:!0});var sr=Symbol("Request internals"),Nf=Oa.default.parse,c3=Oa.default.format,l3="destroy"in bt.default.Readable.prototype;function Ra(t){return typeof t=="object"&&typeof t[sr]=="object"}function f3(t){let e=t&&typeof t=="object"&&Object.getPrototypeOf(t);return!!(e&&e.constructor.name==="AbortSignal")}var or=class{constructor(e){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},n;Ra(e)?n=Nf(e.url):(e&&e.href?n=Nf(e.href):n=Nf(`${e}`),e={});let i=r.method||e.method||"GET";if(i=i.toUpperCase(),(r.body!=null||Ra(e)&&e.body!==null)&&(i==="GET"||i==="HEAD"))throw new TypeError("Request with GET/HEAD method cannot have body");let s=r.body!=null?r.body:Ra(e)&&e.body!==null?Bw(e):null;Ce.call(this,s,{timeout:r.timeout||e.timeout||0,size:r.size||e.size||0});let o=new ot(r.headers||e.headers||{});if(s!=null&&!o.has("Content-Type")){let u=Uw(s);u&&o.append("Content-Type",u)}let a=Ra(e)?e.signal:null;if("signal"in r&&(a=r.signal),a!=null&&!f3(a))throw new TypeError("Expected signal to be an instanceof AbortSignal");this[sr]={method:i,redirect:r.redirect||e.redirect||"follow",headers:o,parsedURL:n,signal:a},this.follow=r.follow!==void 0?r.follow:e.follow!==void 0?e.follow:20,this.compress=r.compress!==void 0?r.compress:e.compress!==void 0?e.compress:!0,this.counter=r.counter||e.counter||0,this.agent=r.agent||e.agent}get method(){return this[sr].method}get url(){return c3(this[sr].parsedURL)}get headers(){return this[sr].headers}get redirect(){return this[sr].redirect}get signal(){return this[sr].signal}clone(){return new or(this)}};Ce.mixIn(or.prototype);Object.defineProperty(or.prototype,Symbol.toStringTag,{value:"Request",writable:!1,enumerable:!1,configurable:!0});Object.defineProperties(or.prototype,{method:{enumerable:!0},url:{enumerable:!0},headers:{enumerable:!0},redirect:{enumerable:!0},clone:{enumerable:!0},signal:{enumerable:!0}});function h3(t){let e=t[sr].parsedURL,r=new ot(t[sr].headers);if(r.has("Accept")||r.set("Accept","*/*"),!e.protocol||!e.hostname)throw new TypeError("Only absolute URLs are supported");if(!/^https?:$/.test(e.protocol))throw new TypeError("Only HTTP(S) protocols are supported");if(t.signal&&t.body instanceof bt.default.Readable&&!l3)throw new Error("Cancellation of streamed requests with AbortSignal is not supported in node < 8");let n=null;if(t.body==null&&/^(POST|PUT)$/i.test(t.method)&&(n="0"),t.body!=null){let s=Gw(t);typeof s=="number"&&(n=String(s))}n&&r.set("Content-Length",n),r.has("User-Agent")||r.set("User-Agent","node-fetch/1.0 (+https://github.com/bitinn/node-fetch)"),t.compress&&!r.has("Accept-Encoding")&&r.set("Accept-Encoding","gzip,deflate");let i=t.agent;return typeof i=="function"&&(i=i(e)),!r.has("Connection")&&!i&&r.set("Connection","close"),Object.assign({},e,{method:t.method,headers:o3(r),agent:i})}function bs(t){Error.call(this,t),this.type="aborted",this.message=t,Error.captureStackTrace(this,this.constructor)}bs.prototype=Object.create(Error.prototype);bs.prototype.constructor=bs;bs.prototype.name="AbortError";var Ww=bt.default.PassThrough,p3=Oa.default.resolve;function Nr(t,e){if(!Nr.Promise)throw new Error("native promise missing, set fetch.Promise to your favorite alternative");return Ce.Promise=Nr.Promise,new Nr.Promise(function(r,n){let i=new or(t,e),s=h3(i),o=(s.protocol==="https:"?qw.default:Of.default).request,a=i.signal,u=null,c=function(){let h=new bs("The user aborted a request.");n(h),i.body&&i.body instanceof bt.default.Readable&&i.body.destroy(h),!(!u||!u.body)&&u.body.emit("error",h)};if(a&&a.aborted){c();return}let l=function(){c(),y()},f=o(s),p;a&&a.addEventListener("abort",l);function y(){f.abort(),a&&a.removeEventListener("abort",l),clearTimeout(p)}i.timeout&&f.once("socket",function(m){p=setTimeout(function(){n(new qe(`network timeout at: ${i.url}`,"request-timeout")),y()},i.timeout)}),f.on("error",function(m){n(new qe(`request to ${i.url} failed, reason: ${m.message}`,"system",m)),y()}),f.on("response",function(m){clearTimeout(p);let h=a3(m.headers);if(Nr.isRedirect(m.statusCode)){let x=h.get("Location"),V=x===null?null:p3(i.url,x);switch(i.redirect){case"error":n(new qe(`uri requested responds with a redirect, redirect mode is set to error: ${i.url}`,"no-redirect")),y();return;case"manual":if(V!==null)try{h.set("Location",V)}catch(P){n(P)}break;case"follow":if(V===null)break;if(i.counter>=i.follow){n(new qe(`maximum redirect reached at: ${i.url}`,"max-redirect")),y();return}let j={headers:new ot(i.headers),follow:i.follow,counter:i.counter+1,agent:i.agent,compress:i.compress,method:i.method,body:i.body,signal:i.signal,timeout:i.timeout,size:i.size};if(m.statusCode!==303&&i.body&&Gw(i)===null){n(new qe("Cannot follow redirect with body being a readable stream","unsupported-redirect")),y();return}(m.statusCode===303||(m.statusCode===301||m.statusCode===302)&&i.method==="POST")&&(j.method="GET",j.body=void 0,j.headers.delete("content-length")),r(Nr(new or(V,j))),y();return}}m.once("end",function(){a&&a.removeEventListener("abort",l)});let E=m.pipe(new Ww),O={url:i.url,status:m.statusCode,statusText:m.statusMessage,headers:h,size:i.size,timeout:i.timeout,counter:i.counter},A=h.get("Content-Encoding");if(!i.compress||i.method==="HEAD"||A===null||m.statusCode===204||m.statusCode===304){u=new Et(E,O),r(u);return}let q={flush:Lr.default.Z_SYNC_FLUSH,finishFlush:Lr.default.Z_SYNC_FLUSH};if(A=="gzip"||A=="x-gzip"){E=E.pipe(Lr.default.createGunzip(q)),u=new Et(E,O),r(u);return}if(A=="deflate"||A=="x-deflate"){m.pipe(new Ww).once("data",function(V){(V[0]&15)==8?E=E.pipe(Lr.default.createInflate()):E=E.pipe(Lr.default.createInflateRaw()),u=new Et(E,O),r(u)});return}if(A=="br"&&typeof Lr.default.createBrotliDecompress=="function"){E=E.pipe(Lr.default.createBrotliDecompress()),u=new Et(E,O),r(u);return}u=new Et(E,O),r(u)}),s3(f,i)})}Nr.isRedirect=function(t){return t===301||t===302||t===303||t===307||t===308};Nr.Promise=global.Promise;var d3=Nr});var Zw=d(If=>{"use strict";var m3=require("net"),ln=require("util"),Vw=require("events"),He=ln.debuglog("http");function at(t){if(!(this instanceof at))return new at(t);Vw.call(this);var e=this;e.defaultPort=80,e.protocol="http:",e.options=ln._extend({},t),e.options.path=null,e.requests={},e.sockets={},e.freeSockets={},e.keepAliveMsecs=e.options.keepAliveMsecs||1e3,e.keepAlive=e.options.keepAlive||!1,e.maxSockets=e.options.maxSockets||at.defaultMaxSockets,e.maxFreeSockets=e.options.maxFreeSockets||256,e.freeSocketKeepAliveTimeout=e.options.freeSocketKeepAliveTimeout||0,e.timeout=e.options.timeout||0,this.socketActiveTTL=this.options.socketActiveTTL||null,e.on("free",function(r,n){var i=e.getName(n);if(He("agent.on(free)",i),r.writable&&e.requests[i]&&e.requests[i].length)He("continue handle next request"),e.requests[i].shift().onSocket(r),e.requests[i].length===0&&delete e.requests[i];else{var s=r._httpMessage;if(s&&s.shouldKeepAlive&&r.writable&&e.keepAlive){var o=e.freeSockets[i],a=o?o.length:0,u=a;if(e.sockets[i]&&(u+=e.sockets[i].length),u>e.maxSockets||a>=e.maxFreeSockets)r.destroy();else{o=o||[],e.freeSockets[i]=o,r.setKeepAlive(!0,e.keepAliveMsecs),r.unref(),r._httpMessage=null,e.removeSocket(r,n),o.push(r),r.listeners("error").length===0&&r.once("error",Yw);let c=r.freeSocketKeepAliveTimeout||e.freeSocketKeepAliveTimeout;r.setTimeout(c),He(`push to free socket queue and wait for ${c}ms`)}}else r.destroy()}})}ln.inherits(at,Vw);If.Agent=at;function Yw(t){var e=this;He("SOCKET ERROR on FREE socket:",t.message,t.stack),e.destroy(),e.emit("agentRemove")}at.defaultMaxSockets=Infinity;at.prototype.createConnection=m3.createConnection;at.prototype.getName=function(e){var r=e.host||"localhost";return r+=":",e.port&&(r+=e.port),r+=":",e.localAddress&&(r+=e.localAddress),(e.family===4||e.family===6)&&(r+=":"+e.family),r};function Xw(t){return function(e,r){if(e){process.nextTick(function(){t.emit("error",e)});return}t.onSocket(r)}}at.prototype.addRequest=function(e,r,n,i){typeof r=="string"&&(r={host:r,port:n,localAddress:i}),r=ln._extend({},r),r=ln._extend(r,this.options),r.servername||(r.servername=Kw(r,e));var s=this.getName(r);this.sockets[s]||(this.sockets[s]=[]);var o=this.freeSockets[s]?this.freeSockets[s].length:0,a=o+this.sockets[s].length;if(o){var u=this.freeSockets[s].shift();if(He("have free socket"),u.removeListener("error",Yw),u.setTimeout(this.timeout),this.socketActiveTTL&&Date.now()-u.createdTime>this.socketActiveTTL)return He(`socket ${u.createdTime} expired`),u.destroy(),this.createSocket(e,r,Xw(e));this.freeSockets[s].length||delete this.freeSockets[s],u.ref(),e.onSocket(u),this.sockets[s].push(u)}else a{var ci=1e3,li=ci*60,fi=li*60,fn=fi*24,g3=fn*7,y3=fn*365.25;Jw.exports=function(t,e){e=e||{};var r=typeof t;if(r==="string"&&t.length>0)return v3(t);if(r==="number"&&isFinite(t))return e.long?E3(t):b3(t);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(t))};function v3(t){if(t=String(t),!(t.length>100)){var e=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(t);if(!!e){var r=parseFloat(e[1]),n=(e[2]||"ms").toLowerCase();switch(n){case"years":case"year":case"yrs":case"yr":case"y":return r*y3;case"weeks":case"week":case"w":return r*g3;case"days":case"day":case"d":return r*fn;case"hours":case"hour":case"hrs":case"hr":case"h":return r*fi;case"minutes":case"minute":case"mins":case"min":case"m":return r*li;case"seconds":case"second":case"secs":case"sec":case"s":return r*ci;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return r;default:return}}}}function b3(t){var e=Math.abs(t);return e>=fn?Math.round(t/fn)+"d":e>=fi?Math.round(t/fi)+"h":e>=li?Math.round(t/li)+"m":e>=ci?Math.round(t/ci)+"s":t+"ms"}function E3(t){var e=Math.abs(t);return e>=fn?Ca(t,e,fn,"day"):e>=fi?Ca(t,e,fi,"hour"):e>=li?Ca(t,e,li,"minute"):e>=ci?Ca(t,e,ci,"second"):t+" ms"}function Ca(t,e,r,n){var i=e>=r*1.5;return Math.round(t/r)+" "+n+(i?"s":"")}});var tS=d((Oq,eS)=>{"use strict";var w3=require("util"),S3=Qw();eS.exports=function(t){if(typeof t=="number")return t;var e=S3(t);if(e===void 0){var r=new Error(w3.format("humanize-ms(%j) result undefined",t));console.warn(r.stack)}return e}});var Df=d((Rq,rS)=>{"use strict";var O3=Zw().Agent,nS=tS(),iS=class extends O3{constructor(e){e=e||{},e.keepAlive=e.keepAlive!==!1,e.freeSocketKeepAliveTimeout===void 0&&(e.freeSocketKeepAliveTimeout=15e3),e.keepAliveTimeout&&(e.freeSocketKeepAliveTimeout=e.keepAliveTimeout),e.freeSocketKeepAliveTimeout=nS(e.freeSocketKeepAliveTimeout),e.timeout===void 0&&(e.timeout=e.freeSocketKeepAliveTimeout*2,e.timeout<3e4&&(e.timeout=3e4)),e.timeout=nS(e.timeout),super(e),this.createSocketCount=0,this.createSocketCountLastCheck=0,this.createSocketErrorCount=0,this.createSocketErrorCountLastCheck=0,this.closeSocketCount=0,this.closeSocketCountLastCheck=0,this.errorSocketCount=0,this.errorSocketCountLastCheck=0,this.requestCount=0,this.requestCountLastCheck=0,this.timeoutSocketCount=0,this.timeoutSocketCountLastCheck=0,this.on("free",r=>{this.requestCount++,r.lastFreeTime=Date.now()}),this.on("timeout",()=>{this.timeoutSocketCount++}),this.on("close",()=>{this.closeSocketCount++}),this.on("error",()=>{this.errorSocketCount++})}createSocket(e,r,n){super.createSocket(e,r,(i,s)=>{if(i)return this.createSocketErrorCount++,n(i);this.keepAlive&&s.setNoDelay(!0),this.createSocketCount++,n(null,s)})}get statusChanged(){let e=this.createSocketCount!==this.createSocketCountLastCheck||this.createSocketErrorCount!==this.createSocketErrorCountLastCheck||this.closeSocketCount!==this.closeSocketCountLastCheck||this.errorSocketCount!==this.errorSocketCountLastCheck||this.timeoutSocketCount!==this.timeoutSocketCountLastCheck||this.requestCount!==this.requestCountLastCheck;return e&&(this.createSocketCountLastCheck=this.createSocketCount,this.createSocketErrorCountLastCheck=this.createSocketErrorCount,this.closeSocketCountLastCheck=this.closeSocketCount,this.errorSocketCountLastCheck=this.errorSocketCount,this.timeoutSocketCountLastCheck=this.timeoutSocketCount,this.requestCountLastCheck=this.requestCount),e}getCurrentStatus(){return{createSocketCount:this.createSocketCount,createSocketErrorCount:this.createSocketErrorCount,closeSocketCount:this.closeSocketCount,errorSocketCount:this.errorSocketCount,timeoutSocketCount:this.timeoutSocketCount,requestCount:this.requestCount,freeSockets:Pf(this.freeSockets),sockets:Pf(this.sockets),requests:Pf(this.requests)}}};rS.exports=iS;function Pf(t){let e={};for(let r in t)e[r]=t[r].length;return e}});var aS=d((Cq,sS)=>{"use strict";var R3=require("https"),C3=Df(),oS=R3.Agent,Ff=class extends C3{constructor(e){super(e);this.defaultPort=443,this.protocol="https:",this.maxCachedSessions=this.options.maxCachedSessions,this.maxCachedSessions===void 0&&(this.maxCachedSessions=100),this._sessionCache={map:{},list:[]}}};["createConnection","getName","_getSession","_cacheSession","_evictSession"].forEach(function(t){typeof oS.prototype[t]=="function"&&(Ff.prototype[t]=oS.prototype[t])});sS.exports=Ff});var uS=d((_q,kf)=>{"use strict";kf.exports=Df();kf.exports.HttpsAgent=aS()});var lS=d((Aq,cS)=>{var ws=1e3,Ss=ws*60,Os=Ss*60,Rs=Os*24,_3=Rs*365.25;cS.exports=function(t,e){e=e||{};var r=typeof t;if(r==="string"&&t.length>0)return A3(t);if(r==="number"&&isNaN(t)===!1)return e.long?L3(t):T3(t);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(t))};function A3(t){if(t=String(t),!(t.length>100)){var e=/^((?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(t);if(!!e){var r=parseFloat(e[1]),n=(e[2]||"ms").toLowerCase();switch(n){case"years":case"year":case"yrs":case"yr":case"y":return r*_3;case"days":case"day":case"d":return r*Rs;case"hours":case"hour":case"hrs":case"hr":case"h":return r*Os;case"minutes":case"minute":case"mins":case"min":case"m":return r*Ss;case"seconds":case"second":case"secs":case"sec":case"s":return r*ws;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return r;default:return}}}}function T3(t){return t>=Rs?Math.round(t/Rs)+"d":t>=Os?Math.round(t/Os)+"h":t>=Ss?Math.round(t/Ss)+"m":t>=ws?Math.round(t/ws)+"s":t+"ms"}function L3(t){return _a(t,Rs,"day")||_a(t,Os,"hour")||_a(t,Ss,"minute")||_a(t,ws,"second")||t+" ms"}function _a(t,e,r){if(!(t{G=fS.exports=jf.debug=jf.default=jf;G.coerce=x3;G.disable=N3;G.enable=I3;G.enabled=P3;G.humanize=lS();G.instances=[];G.names=[];G.skips=[];G.formatters={};function D3(t){var e=0,r;for(r in t)e=(e<<5)-e+t.charCodeAt(r),e|=0;return G.colors[Math.abs(e)%G.colors.length]}function jf(t){var e;function r(){if(!!r.enabled){var n=r,i=+new Date,s=i-(e||i);n.diff=s,n.prev=e,n.curr=i,e=i;for(var o=new Array(arguments.length),a=0;a{We=hS.exports=qf();We.log=k3;We.formatArgs=j3;We.save=q3;We.load=pS;We.useColors=$3;We.storage=typeof chrome!="undefined"&&typeof chrome.storage!="undefined"?chrome.storage.local:M3();We.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"];function $3(){return typeof window!="undefined"&&window.process&&window.process.type==="renderer"?!0:typeof navigator!="undefined"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)?!1:typeof document!="undefined"&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||typeof window!="undefined"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator!="undefined"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||typeof navigator!="undefined"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)}We.formatters.j=function(t){try{return JSON.stringify(t)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}};function j3(t){var e=this.useColors;if(t[0]=(e?"%c":"")+this.namespace+(e?" %c":" ")+t[0]+(e?"%c ":" ")+"+"+We.humanize(this.diff),!!e){var r="color: "+this.color;t.splice(1,0,r,"color: inherit");var n=0,i=0;t[0].replace(/%[a-zA-Z%]/g,function(s){s!=="%%"&&(n++,s==="%c"&&(i=n))}),t.splice(i,0,r)}}function k3(){return typeof console=="object"&&console.log&&Function.prototype.apply.call(console.log,console,arguments)}function q3(t){try{t==null?We.storage.removeItem("debug"):We.storage.debug=t}catch(e){}}function pS(){var t;try{t=We.storage.debug}catch(e){}return!t&&typeof process!="undefined"&&"env"in process&&(t=process.env.DEBUG),t}We.enable(pS());function M3(){try{return window.localStorage}catch(t){}}});var gS=d((Tq,mS)=>{"use strict";mS.exports=(t,e=process.argv)=>{let r=t.startsWith("-")?"":t.length===1?"-":"--",n=e.indexOf(r+t),i=e.indexOf("--");return n!==-1&&(i===-1||n{"use strict";var B3=require("os"),vS=require("tty"),wt=gS(),{env:_e}=process,Ir;wt("no-color")||wt("no-colors")||wt("color=false")||wt("color=never")?Ir=0:(wt("color")||wt("colors")||wt("color=true")||wt("color=always"))&&(Ir=1);"FORCE_COLOR"in _e&&(_e.FORCE_COLOR==="true"?Ir=1:_e.FORCE_COLOR==="false"?Ir=0:Ir=_e.FORCE_COLOR.length===0?1:Math.min(parseInt(_e.FORCE_COLOR,10),3));function $f(t){return t===0?!1:{level:t,hasBasic:!0,has256:t>=2,has16m:t>=3}}function Mf(t,e){if(Ir===0)return 0;if(wt("color=16m")||wt("color=full")||wt("color=truecolor"))return 3;if(wt("color=256"))return 2;if(t&&!e&&Ir===void 0)return 0;let r=Ir||0;if(_e.TERM==="dumb")return r;if(process.platform==="win32"){let n=B3.release().split(".");return Number(n[0])>=10&&Number(n[2])>=10586?Number(n[2])>=14931?3:2:1}if("CI"in _e)return["TRAVIS","CIRCLECI","APPVEYOR","GITLAB_CI","GITHUB_ACTIONS","BUILDKITE"].some(n=>n in _e)||_e.CI_NAME==="codeship"?1:r;if("TEAMCITY_VERSION"in _e)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(_e.TEAMCITY_VERSION)?1:0;if(_e.COLORTERM==="truecolor")return 3;if("TERM_PROGRAM"in _e){let n=parseInt((_e.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(_e.TERM_PROGRAM){case"iTerm.app":return n>=3?3:2;case"Apple_Terminal":return 2}}return/-256(color)?$/i.test(_e.TERM)?2:/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(_e.TERM)||"COLORTERM"in _e?1:r}function U3(t){let e=Mf(t,t&&t.isTTY);return $f(e)}yS.exports={supportsColor:U3,stdout:$f(Mf(!0,vS.isatty(1))),stderr:$f(Mf(!0,vS.isatty(2)))}});var SS=d((ge,ES)=>{var G3=require("tty"),Aa=require("util");ge=ES.exports=qf();ge.init=z3;ge.log=H3;ge.formatArgs=W3;ge.save=V3;ge.load=wS;ge.useColors=Y3;ge.colors=[6,2,3,4,5,1];try{Bf=bS(),Bf&&Bf.level>=2&&(ge.colors=[20,21,26,27,32,33,38,39,40,41,42,43,44,45,56,57,62,63,68,69,74,75,76,77,78,79,80,81,92,93,98,99,112,113,128,129,134,135,148,149,160,161,162,163,164,165,166,167,168,169,170,171,172,173,178,179,184,185,196,197,198,199,200,201,202,203,204,205,206,207,208,209,214,215,220,221])}catch(t){}var Bf;ge.inspectOpts=Object.keys(process.env).filter(function(t){return/^debug_/i.test(t)}).reduce(function(t,e){var r=e.substring(6).toLowerCase().replace(/_([a-z])/g,function(i,s){return s.toUpperCase()}),n=process.env[e];return/^(yes|on|true|enabled)$/i.test(n)?n=!0:/^(no|off|false|disabled)$/i.test(n)?n=!1:n==="null"?n=null:n=Number(n),t[r]=n,t},{});function Y3(){return"colors"in ge.inspectOpts?Boolean(ge.inspectOpts.colors):G3.isatty(process.stderr.fd)}ge.formatters.o=function(t){return this.inspectOpts.colors=this.useColors,Aa.inspect(t,this.inspectOpts).split(` -`).map(function(e){return e.trim()}).join(" ")};ge.formatters.O=function(t){return this.inspectOpts.colors=this.useColors,Aa.inspect(t,this.inspectOpts)};function W3(t){var e=this.namespace,r=this.useColors;if(r){var n=this.color,i="[3"+(n<8?n:"8;5;"+n),s=" "+i+";1m"+e+" ";t[0]=s+t[0].split(` +>>> no match, partial?`,t,l,e,f),l===o))}var y;if(typeof u=="string"?(n.nocase?y=c.toLowerCase()===u.toLowerCase():y=c===u,this.debug("string match",u,c,y)):(y=c.match(u),this.debug("pattern match",u,c,y)),!y)return!1}if(i===o&&s===a)return!0;if(i===o)return r;if(s===a){var m=i===o-1&&t[i]==="";return m}throw new Error("wtf?")};function KI(t){return t.replace(/\\(.)/g,"$1")}function JI(t){return t.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&")}});var jE=d((Iq,Ul)=>{typeof Object.create=="function"?Ul.exports=function(e,r){r&&(e.super_=r,e.prototype=Object.create(r.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}))}:Ul.exports=function(e,r){if(r){e.super_=r;var n=function(){};n.prototype=r.prototype,e.prototype=new n,e.prototype.constructor=e}}});var $E=d((Pq,Gl)=>{try{if(zl=require("util"),typeof zl.inherits!="function")throw"";Gl.exports=zl.inherits}catch(t){Gl.exports=jE()}var zl});var ca=d((Dq,ua)=>{"use strict";function ME(t){return t.charAt(0)==="/"}function BE(t){var e=/^([a-zA-Z]:|[\\\/]{2}[^\\\/]+[\\\/]+[^\\\/]+)?([\\\/])?([\s\S]*?)$/,r=e.exec(t),n=r[1]||"",i=Boolean(n&&n.charAt(1)!==":");return Boolean(r[2]||i)}ua.exports=process.platform==="win32"?BE:ME;ua.exports.posix=ME;ua.exports.win32=BE});var Wl=d(Dt=>{Dt.alphasort=UE;Dt.alphasorti=GE;Dt.setopts=eP;Dt.ownProp=zE;Dt.makeAbs=fs;Dt.finish=tP;Dt.mark=rP;Dt.isIgnored=HE;Dt.childrenIgnored=nP;function zE(t,e){return Object.prototype.hasOwnProperty.call(t,e)}var ni=require("path"),iP=aa(),WE=ca(),Hl=iP.Minimatch;function GE(t,e){return t.toLowerCase().localeCompare(e.toLowerCase())}function UE(t,e){return t.localeCompare(e)}function oP(t,e){t.ignore=e.ignore||[],Array.isArray(t.ignore)||(t.ignore=[t.ignore]),t.ignore.length&&(t.ignore=t.ignore.map(sP))}function sP(t){var e=null;if(t.slice(-3)==="/**"){var r=t.replace(/(\/\*\*)+$/,"");e=new Hl(r,{dot:!0})}return{matcher:new Hl(t,{dot:!0}),gmatcher:e}}function eP(t,e,r){if(r||(r={}),r.matchBase&&e.indexOf("/")===-1){if(r.noglobstar)throw new Error("base matching requires globstar");e="**/"+e}t.silent=!!r.silent,t.pattern=e,t.strict=r.strict!==!1,t.realpath=!!r.realpath,t.realpathCache=r.realpathCache||Object.create(null),t.follow=!!r.follow,t.dot=!!r.dot,t.mark=!!r.mark,t.nodir=!!r.nodir,t.nodir&&(t.mark=!0),t.sync=!!r.sync,t.nounique=!!r.nounique,t.nonull=!!r.nonull,t.nosort=!!r.nosort,t.nocase=!!r.nocase,t.stat=!!r.stat,t.noprocess=!!r.noprocess,t.absolute=!!r.absolute,t.maxLength=r.maxLength||Infinity,t.cache=r.cache||Object.create(null),t.statCache=r.statCache||Object.create(null),t.symlinks=r.symlinks||Object.create(null),oP(t,r),t.changedCwd=!1;var n=process.cwd();zE(r,"cwd")?(t.cwd=ni.resolve(r.cwd),t.changedCwd=t.cwd!==n):t.cwd=n,t.root=r.root||ni.resolve(t.cwd,"/"),t.root=ni.resolve(t.root),process.platform==="win32"&&(t.root=t.root.replace(/\\/g,"/")),t.cwdAbs=WE(t.cwd)?t.cwd:fs(t,t.cwd),process.platform==="win32"&&(t.cwdAbs=t.cwdAbs.replace(/\\/g,"/")),t.nomount=!!r.nomount,r.nonegate=!0,r.nocomment=!0,t.minimatch=new Hl(e,r),t.options=t.minimatch.options}function tP(t){for(var e=t.nounique,r=e?[]:Object.create(null),n=0,i=t.matches.length;n{YE.exports=VE;VE.GlobSync=Ee;var la=require("fs"),aP=kl(),XE=aa(),kq=XE.Minimatch,qq=Yl().Glob,jq=require("util"),Vl=require("path"),KE=require("assert"),fa=ca(),Qt=Wl(),$q=Qt.alphasort,Mq=Qt.alphasorti,uP=Qt.setopts,Xl=Qt.ownProp,cP=Qt.childrenIgnored,lP=Qt.isIgnored;function VE(t,e){if(typeof e=="function"||arguments.length===3)throw new TypeError(`callback provided to sync glob +See: https://github.com/isaacs/node-glob/issues/167`);return new Ee(t,e).found}function Ee(t,e){if(!t)throw new Error("must provide pattern");if(typeof e=="function"||arguments.length===3)throw new TypeError(`callback provided to sync glob +See: https://github.com/isaacs/node-glob/issues/167`);if(!(this instanceof Ee))return new Ee(t,e);if(uP(this,t,e),this.noprocess)return this;var r=this.minimatch.set.length;this.matches=new Array(r);for(var n=0;nthis.maxLength)return!1;if(!this.stat&&Xl(this.cache,e)){var o=this.cache[e];if(Array.isArray(o)&&(o="DIR"),!r||o==="DIR")return o;if(r&&o==="FILE")return!1}var n,i=this.statCache[e];if(!i){var s;try{s=la.lstatSync(e)}catch(a){if(a&&(a.code==="ENOENT"||a.code==="ENOTDIR"))return this.statCache[e]=!1,!1}if(s&&s.isSymbolicLink())try{i=la.statSync(e)}catch(a){i=s}else i=s}this.statCache[e]=i;var o=!0;return i&&(o=i.isDirectory()?"DIR":"FILE"),this.cache[e]=this.cache[e]||o,r&&o==="FILE"?!1:o};Ee.prototype._mark=function(t){return Qt.mark(this,t)};Ee.prototype._makeAbs=function(t){return Qt.makeAbs(this,t)}});var Kl=d((Uq,JE)=>{JE.exports=QE;function QE(t,e){if(t&&e)return QE(t)(e);if(typeof t!="function")throw new TypeError("need wrapper function");return Object.keys(t).forEach(function(n){r[n]=t[n]}),r;function r(){for(var n=new Array(arguments.length),i=0;i{var ew=Kl();Zl.exports=ew(ha);Zl.exports.strict=ew(tw);ha.proto=ha(function(){Object.defineProperty(Function.prototype,"once",{value:function(){return ha(this)},configurable:!0}),Object.defineProperty(Function.prototype,"onceStrict",{value:function(){return tw(this)},configurable:!0})});function ha(t){var e=function(){return e.called?e.value:(e.called=!0,e.value=t.apply(this,arguments))};return e.called=!1,e}function tw(t){var e=function(){if(e.called)throw new Error(e.onceError);return e.called=!0,e.value=t.apply(this,arguments)},r=t.name||"Function wrapped with `once`";return e.onceError=r+" shouldn't be called more than once",e.called=!1,e}});var nw=d((zq,rw)=>{var fP=Kl(),hs=Object.create(null),hP=Jl();rw.exports=fP(pP);function pP(t,e){return hs[t]?(hs[t].push(e),null):(hs[t]=[e],dP(t))}function dP(t){return hP(function e(){var r=hs[t],n=r.length,i=mP(arguments);try{for(var s=0;sn?(r.splice(0,n),process.nextTick(function(){e.apply(null,i)})):delete hs[t]}})}function mP(t){for(var e=t.length,r=[],n=0;n{iw.exports=un;var pa=require("fs"),gP=kl(),sw=aa(),Hq=sw.Minimatch,yP=$E(),vP=require("events").EventEmitter,Ql=require("path"),ef=require("assert"),ps=ca(),tf=ZE(),er=Wl(),Wq=er.alphasort,Yq=er.alphasorti,bP=er.setopts,rf=er.ownProp,nf=nw(),Vq=require("util"),EP=er.childrenIgnored,wP=er.isIgnored,SP=Jl();function un(t,e,r){if(typeof e=="function"&&(r=e,e={}),e||(e={}),e.sync){if(r)throw new TypeError("callback provided to sync glob");return tf(t,e)}return new te(t,e,r)}un.sync=tf;var OP=un.GlobSync=tf.GlobSync;un.glob=un;function RP(t,e){if(e===null||typeof e!="object")return t;for(var r=Object.keys(e),n=r.length;n--;)t[r[n]]=e[r[n]];return t}un.hasMagic=function(t,e){var r=RP({},e);r.noprocess=!0;var n=new te(t,r),i=n.minimatch.set;if(!t)return!1;if(i.length>1)return!0;for(var s=0;sthis.maxLength)return e();if(!this.stat&&rf(this.cache,r)){var i=this.cache[r];if(Array.isArray(i)&&(i="DIR"),!n||i==="DIR")return e(null,i);if(n&&i==="FILE")return e()}var s,o=this.statCache[r];if(o!==void 0){if(o===!1)return e(null,o);var a=o.isDirectory()?"DIR":"FILE";return n&&a==="FILE"?e():e(null,a,o)}var u=this,c=nf("stat\0"+r,l);c&&pa.lstat(r,c);function l(f,p){if(p&&p.isSymbolicLink())return pa.stat(r,function(y,m){y?u._stat2(t,r,null,p,e):u._stat2(t,r,y,m,e)});u._stat2(t,r,f,p,e)}};te.prototype._stat2=function(t,e,r,n,i){if(r&&(r.code==="ENOENT"||r.code==="ENOTDIR"))return this.statCache[e]=!1,i();var s=t.slice(-1)==="/";if(this.statCache[e]=n,e.slice(-1)==="/"&&n&&!n.isDirectory())return i(null,!1,n);var o=!0;return n&&(o=n.isDirectory()?"DIR":"FILE"),this.cache[e]=this.cache[e]||o,s&&o==="FILE"?i():i(null,o,n)}});var ga=d((Kq,ow)=>{var ae=require("assert"),aw=require("path"),uw=require("fs"),ii;try{ii=Yl()}catch(t){}var CP={nosort:!0,silent:!0},sf=0,ds=process.platform==="win32",cw=t=>{if(["unlink","chmod","stat","lstat","rmdir","readdir"].forEach(r=>{t[r]=t[r]||uw[r],r=r+"Sync",t[r]=t[r]||uw[r]}),t.maxBusyTries=t.maxBusyTries||3,t.emfileWait=t.emfileWait||1e3,t.glob===!1&&(t.disableGlob=!0),t.disableGlob!==!0&&ii===void 0)throw Error("glob dependency not found, set `options.disableGlob = true` if intentional");t.disableGlob=t.disableGlob||!1,t.glob=t.glob||CP},af=(t,e,r)=>{typeof e=="function"&&(r=e,e={}),ae(t,"rimraf: missing path"),ae.equal(typeof t,"string","rimraf: path should be a string"),ae.equal(typeof r,"function","rimraf: callback function required"),ae(e,"rimraf: invalid options argument provided"),ae.equal(typeof e,"object","rimraf: options should be object"),cw(e);let n=0,i=null,s=0,o=u=>{i=i||u,--s==0&&r(i)},a=(u,c)=>{if(u)return r(u);if(s=c.length,s===0)return r();c.forEach(l=>{let f=p=>{if(p){if((p.code==="EBUSY"||p.code==="ENOTEMPTY"||p.code==="EPERM")&&nof(l,e,f),n*100);if(p.code==="EMFILE"&&sfof(l,e,f),sf++);p.code==="ENOENT"&&(p=null)}sf=0,o(p)};of(l,e,f)})};if(e.disableGlob||!ii.hasMagic(t))return a(null,[t]);e.lstat(t,(u,c)=>{if(!u)return a(null,[t]);ii(t,e.glob,a)})},of=(t,e,r)=>{ae(t),ae(e),ae(typeof r=="function"),e.lstat(t,(n,i)=>{if(n&&n.code==="ENOENT")return r(null);if(n&&n.code==="EPERM"&&ds&&lw(t,e,n,r),i&&i.isDirectory())return da(t,e,n,r);e.unlink(t,s=>{if(s){if(s.code==="ENOENT")return r(null);if(s.code==="EPERM")return ds?lw(t,e,s,r):da(t,e,s,r);if(s.code==="EISDIR")return da(t,e,s,r)}return r(s)})})},lw=(t,e,r,n)=>{ae(t),ae(e),ae(typeof n=="function"),e.chmod(t,438,i=>{i?n(i.code==="ENOENT"?null:r):e.stat(t,(s,o)=>{s?n(s.code==="ENOENT"?null:r):o.isDirectory()?da(t,e,r,n):e.unlink(t,n)})})},fw=(t,e,r)=>{ae(t),ae(e);try{e.chmodSync(t,438)}catch(i){if(i.code==="ENOENT")return;throw r}let n;try{n=e.statSync(t)}catch(i){if(i.code==="ENOENT")return;throw r}n.isDirectory()?ma(t,e,r):e.unlinkSync(t)},da=(t,e,r,n)=>{ae(t),ae(e),ae(typeof n=="function"),e.rmdir(t,i=>{i&&(i.code==="ENOTEMPTY"||i.code==="EEXIST"||i.code==="EPERM")?AP(t,e,n):i&&i.code==="ENOTDIR"?n(r):n(i)})},AP=(t,e,r)=>{ae(t),ae(e),ae(typeof r=="function"),e.readdir(t,(n,i)=>{if(n)return r(n);let s=i.length;if(s===0)return e.rmdir(t,r);let o;i.forEach(a=>{af(aw.join(t,a),e,u=>{if(!o){if(u)return r(o=u);--s==0&&e.rmdir(t,r)}})})})},hw=(t,e)=>{e=e||{},cw(e),ae(t,"rimraf: missing path"),ae.equal(typeof t,"string","rimraf: path should be a string"),ae(e,"rimraf: missing options"),ae.equal(typeof e,"object","rimraf: options should be object");let r;if(e.disableGlob||!ii.hasMagic(t))r=[t];else try{e.lstatSync(t),r=[t]}catch(n){r=ii.sync(t,e.glob)}if(!!r.length)for(let n=0;n{ae(t),ae(e);try{e.rmdirSync(t)}catch(n){if(n.code==="ENOENT")return;if(n.code==="ENOTDIR")throw r;(n.code==="ENOTEMPTY"||n.code==="EEXIST"||n.code==="EPERM")&&LP(t,e)}},LP=(t,e)=>{ae(t),ae(e),e.readdirSync(t).forEach(i=>hw(aw.join(t,i),e));let r=ds?100:1,n=0;do{let i=!0;try{let s=e.rmdirSync(t,e);return i=!1,s}finally{if(++n{var Re=require("fs"),uf=require("os"),st=require("path"),pw=require("crypto"),Ft={fs:Re.constants,os:uf.constants},dw=ga(),mw="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",gw=/XXXXXX/,TP=3,yw=(Ft.O_CREAT||Ft.fs.O_CREAT)|(Ft.O_EXCL||Ft.fs.O_EXCL)|(Ft.O_RDWR||Ft.fs.O_RDWR),xP=uf.platform()==="win32",NP=Ft.EBADF||Ft.os.errno.EBADF,IP=Ft.ENOENT||Ft.os.errno.ENOENT,vw=448,bw=384,PP="exit",si=[],Ew=Re.rmdirSync.bind(Re),ww=dw.sync,Sw=!1;function cf(t,e){let r=oi(t,e),n=r[0],i=r[1];try{Rw(n)}catch(o){return i(o)}let s=n.tries;(function o(){try{let a=Ow(n);Re.stat(a,function(u){if(!u)return s-- >0?o():i(new Error("Could not get a unique tmp filename, max tries reached "+a));i(null,a)})}catch(a){i(a)}})()}function lf(t){let e=oi(t),r=e[0];Rw(r);let n=r.tries;do{let i=Ow(r);try{Re.statSync(i)}catch(s){return i}}while(n-- >0);throw new Error("Could not get a unique tmp filename, max tries reached")}function DP(t,e){let r=oi(t,e),n=r[0],i=r[1];cf(n,function(o,a){if(o)return i(o);Re.open(a,yw,n.mode||bw,function(c,l){if(c)return i(c);if(n.discardDescriptor)return Re.close(l,function(p){return i(p,a,void 0,ff(a,-1,n,!1))});{let f=n.discardDescriptor||n.detachDescriptor;i(null,a,l,ff(a,f?-1:l,n,!1))}})})}function FP(t){let e=oi(t),r=e[0],n=r.discardDescriptor||r.detachDescriptor,i=lf(r);var s=Re.openSync(i,yw,r.mode||bw);return r.discardDescriptor&&(Re.closeSync(s),s=void 0),{name:i,fd:s,removeCallback:ff(i,n?-1:s,r,!0)}}function kP(t,e){let r=oi(t,e),n=r[0],i=r[1];cf(n,function(o,a){if(o)return i(o);Re.mkdir(a,n.mode||vw,function(c){if(c)return i(c);i(null,a,_w(a,n,!1))})})}function qP(t){let e=oi(t),r=e[0],n=lf(r);return Re.mkdirSync(n,r.mode||vw),{name:n,removeCallback:_w(n,r,!0)}}function jP(t,e){let r=function(n){if(n&&!hf(n))return e(n);e()};0<=t[0]?Re.close(t[0],function(){Re.unlink(t[1],r)}):Re.unlink(t[1],r)}function MP(t){let e=null;try{0<=t[0]&&Re.closeSync(t[0])}catch(r){if(!$P(r)&&!hf(r))throw r}finally{try{Re.unlinkSync(t[1])}catch(r){hf(r)||(e=r)}}if(e!==null)throw e}function ff(t,e,r,n){let i=ya(MP,[e,t],n),s=ya(jP,[e,t],n,i);return r.keep||si.unshift(i),n?i:s}function _w(t,e,r){let n=e.unsafeCleanup?dw:Re.rmdir.bind(Re),i=e.unsafeCleanup?ww:Ew,s=ya(i,t,r),o=ya(n,t,r,s);return e.keep||si.unshift(s),r?s:o}function ya(t,e,r,n){let i=!1;return function s(o){if(!i){let a=n||s,u=si.indexOf(a);return u>=0&&si.splice(u,1),i=!0,r||t===Ew||t===ww?t(e):t(e,o||function(){})}}}function BP(){if(!!Sw)for(;si.length;)try{si[0]()}catch(t){}}function Cw(t){let e=[],r=null;try{r=pw.randomBytes(t)}catch(i){r=pw.pseudoRandomBytes(t)}for(var n=0;n{Jf(GP);K2(GP,{FetchError:()=>$e,Headers:()=>ot,Request:()=>sr,Response:()=>Et,default:()=>t3});var bt=Te(require("stream")),gf=Te(require("http")),va=Te(require("url")),Nw=Te(require("https")),Lr=Te(require("zlib")),zP=bt.default.Readable,rr=Symbol("buffer"),yf=Symbol("type"),cn=class{constructor(){this[yf]="";let e=arguments[0],r=arguments[1],n=[],i=0;if(e){let o=e,a=Number(o.length);for(let u=0;u1&&arguments[1]!==void 0?arguments[1]:{},n=r.size;let i=n===void 0?0:n;var s=r.timeout;let o=s===void 0?0:s;t==null?t=null:Pw(t)?t=Buffer.from(t.toString()):ms(t)||Buffer.isBuffer(t)||(Object.prototype.toString.call(t)==="[object ArrayBuffer]"?t=Buffer.from(t):ArrayBuffer.isView(t)?t=Buffer.from(t.buffer,t.byteOffset,t.byteLength):t instanceof bt.default||(t=Buffer.from(String(t)))),this[nr]={body:t,disturbed:!1,error:null},this.size=i,this.timeout=o,t instanceof bt.default&&t.on("error",function(a){let u=a.name==="AbortError"?a:new $e(`Invalid response body while trying to fetch ${e.url}: ${a.message}`,"system",a);e[nr].error=u})}_e.prototype={get body(){return this[nr].body},get bodyUsed(){return this[nr].disturbed},arrayBuffer(){return ai.call(this).then(function(t){return t.buffer.slice(t.byteOffset,t.byteOffset+t.byteLength)})},blob(){let t=this.headers&&this.headers.get("content-type")||"";return ai.call(this).then(function(e){return Object.assign(new cn([],{type:t.toLowerCase()}),{[rr]:e})})},json(){var t=this;return ai.call(this).then(function(e){try{return JSON.parse(e.toString())}catch(r){return _e.Promise.reject(new $e(`invalid json response body at ${t.url} reason: ${r.message}`,"invalid-json"))}})},text(){return ai.call(this).then(function(t){return t.toString()})},buffer(){return ai.call(this)},textConverted(){var t=this;return ai.call(this).then(function(e){return HP(e,t.headers)})}};Object.defineProperties(_e.prototype,{body:{enumerable:!0},bodyUsed:{enumerable:!0},arrayBuffer:{enumerable:!0},blob:{enumerable:!0},json:{enumerable:!0},text:{enumerable:!0}});_e.mixIn=function(t){for(let e of Object.getOwnPropertyNames(_e.prototype))if(!(e in t)){let r=Object.getOwnPropertyDescriptor(_e.prototype,e);Object.defineProperty(t,e,r)}};function ai(){var t=this;if(this[nr].disturbed)return _e.Promise.reject(new TypeError(`body used already for: ${this.url}`));if(this[nr].disturbed=!0,this[nr].error)return _e.Promise.reject(this[nr].error);let e=this.body;if(e===null)return _e.Promise.resolve(Buffer.alloc(0));if(ms(e)&&(e=e.stream()),Buffer.isBuffer(e))return _e.Promise.resolve(e);if(!(e instanceof bt.default))return _e.Promise.resolve(Buffer.alloc(0));let r=[],n=0,i=!1;return new _e.Promise(function(s,o){let a;t.timeout&&(a=setTimeout(function(){i=!0,o(new $e(`Response timeout while trying to fetch ${t.url} (over ${t.timeout}ms)`,"body-timeout"))},t.timeout)),e.on("error",function(u){u.name==="AbortError"?(i=!0,o(u)):o(new $e(`Invalid response body while trying to fetch ${t.url}: ${u.message}`,"system",u))}),e.on("data",function(u){if(!(i||u===null)){if(t.size&&n+u.length>t.size){i=!0,o(new $e(`content size at ${t.url} over limit: ${t.size}`,"max-size"));return}n+=u.length,r.push(u)}}),e.on("end",function(){if(!i){clearTimeout(a);try{s(Buffer.concat(r,n))}catch(u){o(new $e(`Could not create Buffer from response body for ${t.url}: ${u.message}`,"system",u))}}})})}function HP(t,e){if(typeof vf!="function")throw new Error("The package `encoding` must be installed to use the textConverted() function");let r=e.get("content-type"),n="utf-8",i,s;return r&&(i=/charset=([^;]*)/i.exec(r)),s=t.slice(0,1024).toString(),!i&&s&&(i=/0&&arguments[0]!==void 0?arguments[0]:void 0;if(this[de]=Object.create(null),e instanceof ot){let r=e.raw(),n=Object.keys(r);for(let i of n)for(let s of r[i])this.append(i,s);return}if(e!=null)if(typeof e=="object"){let r=e[Symbol.iterator];if(r!=null){if(typeof r!="function")throw new TypeError("Header pairs must be iterable");let n=[];for(let i of e){if(typeof i!="object"||typeof i[Symbol.iterator]!="function")throw new TypeError("Each header pair must be iterable");n.push(Array.from(i))}for(let i of n){if(i.length!==2)throw new TypeError("Each header pair must be a name/value tuple");this.append(i[0],i[1])}}else for(let n of Object.keys(e)){let i=e[n];this.append(n,i)}}else throw new TypeError("Provided initializer must be an object")}get(e){e=`${e}`,gs(e);let r=ui(this[de],e);return r===void 0?null:this[de][r].join(", ")}forEach(e){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:void 0,n=Ef(this),i=0;for(;i1&&arguments[1]!==void 0?arguments[1]:"key+value";return Object.keys(t[de]).sort().map(e==="key"?function(n){return n.toLowerCase()}:e==="value"?function(n){return t[de][n].join(", ")}:function(n){return[n.toLowerCase(),t[de][n].join(", ")]})}var Sf=Symbol("internal");function wf(t,e){let r=Object.create(Of);return r[Sf]={target:t,kind:e,index:0},r}var Of=Object.setPrototypeOf({next(){if(!this||Object.getPrototypeOf(this)!==Of)throw new TypeError("Value of `this` is not a HeadersIterator");var t=this[Sf];let e=t.target,r=t.kind,n=t.index,i=Ef(e,r),s=i.length;return n>=s?{value:void 0,done:!0}:(this[Sf].index=n+1,{value:i[n],done:!1})}},Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]())));Object.defineProperty(Of,Symbol.toStringTag,{value:"HeadersIterator",writable:!1,enumerable:!1,configurable:!0});function YP(t){let e=Object.assign({__proto__:null},t[de]),r=ui(t[de],"Host");return r!==void 0&&(e[r]=e[r][0]),e}function VP(t){let e=new ot;for(let r of Object.keys(t))if(!qw.test(r))if(Array.isArray(t[r]))for(let n of t[r])bf.test(n)||(e[de][r]===void 0?e[de][r]=[n]:e[de][r].push(n));else bf.test(t[r])||(e[de][r]=[t[r]]);return e}var Tr=Symbol("Response internals"),XP=gf.default.STATUS_CODES,Et=class{constructor(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:null,r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};_e.call(this,e,r);let n=r.status||200,i=new ot(r.headers);if(e!=null&&!i.has("Content-Type")){let s=Fw(e);s&&i.append("Content-Type",s)}this[Tr]={url:r.url,status:n,statusText:r.statusText||XP[n],headers:i,counter:r.counter}}get url(){return this[Tr].url||""}get status(){return this[Tr].status}get ok(){return this[Tr].status>=200&&this[Tr].status<300}get redirected(){return this[Tr].counter>0}get statusText(){return this[Tr].statusText}get headers(){return this[Tr].headers}clone(){return new Et(Dw(this),{url:this.url,status:this.status,statusText:this.statusText,headers:this.headers,ok:this.ok,redirected:this.redirected})}};_e.mixIn(Et.prototype);Object.defineProperties(Et.prototype,{url:{enumerable:!0},status:{enumerable:!0},ok:{enumerable:!0},redirected:{enumerable:!0},statusText:{enumerable:!0},headers:{enumerable:!0},clone:{enumerable:!0}});Object.defineProperty(Et.prototype,Symbol.toStringTag,{value:"Response",writable:!1,enumerable:!1,configurable:!0});var ir=Symbol("Request internals"),Rf=va.default.parse,KP=va.default.format,ZP="destroy"in bt.default.Readable.prototype;function ba(t){return typeof t=="object"&&typeof t[ir]=="object"}function JP(t){let e=t&&typeof t=="object"&&Object.getPrototypeOf(t);return!!(e&&e.constructor.name==="AbortSignal")}var sr=class{constructor(e){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},n;ba(e)?n=Rf(e.url):(e&&e.href?n=Rf(e.href):n=Rf(`${e}`),e={});let i=r.method||e.method||"GET";if(i=i.toUpperCase(),(r.body!=null||ba(e)&&e.body!==null)&&(i==="GET"||i==="HEAD"))throw new TypeError("Request with GET/HEAD method cannot have body");let s=r.body!=null?r.body:ba(e)&&e.body!==null?Dw(e):null;_e.call(this,s,{timeout:r.timeout||e.timeout||0,size:r.size||e.size||0});let o=new ot(r.headers||e.headers||{});if(s!=null&&!o.has("Content-Type")){let u=Fw(s);u&&o.append("Content-Type",u)}let a=ba(e)?e.signal:null;if("signal"in r&&(a=r.signal),a!=null&&!JP(a))throw new TypeError("Expected signal to be an instanceof AbortSignal");this[ir]={method:i,redirect:r.redirect||e.redirect||"follow",headers:o,parsedURL:n,signal:a},this.follow=r.follow!==void 0?r.follow:e.follow!==void 0?e.follow:20,this.compress=r.compress!==void 0?r.compress:e.compress!==void 0?e.compress:!0,this.counter=r.counter||e.counter||0,this.agent=r.agent||e.agent}get method(){return this[ir].method}get url(){return KP(this[ir].parsedURL)}get headers(){return this[ir].headers}get redirect(){return this[ir].redirect}get signal(){return this[ir].signal}clone(){return new sr(this)}};_e.mixIn(sr.prototype);Object.defineProperty(sr.prototype,Symbol.toStringTag,{value:"Request",writable:!1,enumerable:!1,configurable:!0});Object.defineProperties(sr.prototype,{method:{enumerable:!0},url:{enumerable:!0},headers:{enumerable:!0},redirect:{enumerable:!0},clone:{enumerable:!0},signal:{enumerable:!0}});function QP(t){let e=t[ir].parsedURL,r=new ot(t[ir].headers);if(r.has("Accept")||r.set("Accept","*/*"),!e.protocol||!e.hostname)throw new TypeError("Only absolute URLs are supported");if(!/^https?:$/.test(e.protocol))throw new TypeError("Only HTTP(S) protocols are supported");if(t.signal&&t.body instanceof bt.default.Readable&&!ZP)throw new Error("Cancellation of streamed requests with AbortSignal is not supported in node < 8");let n=null;if(t.body==null&&/^(POST|PUT)$/i.test(t.method)&&(n="0"),t.body!=null){let s=kw(t);typeof s=="number"&&(n=String(s))}n&&r.set("Content-Length",n),r.has("User-Agent")||r.set("User-Agent","node-fetch/1.0 (+https://github.com/bitinn/node-fetch)"),t.compress&&!r.has("Accept-Encoding")&&r.set("Accept-Encoding","gzip,deflate");let i=t.agent;return typeof i=="function"&&(i=i(e)),!r.has("Connection")&&!i&&r.set("Connection","close"),Object.assign({},e,{method:t.method,headers:YP(r),agent:i})}function ys(t){Error.call(this,t),this.type="aborted",this.message=t,Error.captureStackTrace(this,this.constructor)}ys.prototype=Object.create(Error.prototype);ys.prototype.constructor=ys;ys.prototype.name="AbortError";var $w=bt.default.PassThrough,e3=va.default.resolve;function xr(t,e){if(!xr.Promise)throw new Error("native promise missing, set fetch.Promise to your favorite alternative");return _e.Promise=xr.Promise,new xr.Promise(function(r,n){let i=new sr(t,e),s=QP(i),o=(s.protocol==="https:"?Nw.default:gf.default).request,a=i.signal,u=null,c=function(){let h=new ys("The user aborted a request.");n(h),i.body&&i.body instanceof bt.default.Readable&&i.body.destroy(h),!(!u||!u.body)&&u.body.emit("error",h)};if(a&&a.aborted){c();return}let l=function(){c(),y()},f=o(s),p;a&&a.addEventListener("abort",l);function y(){f.abort(),a&&a.removeEventListener("abort",l),clearTimeout(p)}i.timeout&&f.once("socket",function(m){p=setTimeout(function(){n(new $e(`network timeout at: ${i.url}`,"request-timeout")),y()},i.timeout)}),f.on("error",function(m){n(new $e(`request to ${i.url} failed, reason: ${m.message}`,"system",m)),y()}),f.on("response",function(m){clearTimeout(p);let h=VP(m.headers);if(xr.isRedirect(m.statusCode)){let _=h.get("Location"),F=_===null?null:e3(i.url,_);switch(i.redirect){case"error":n(new $e(`uri requested responds with a redirect, redirect mode is set to error: ${i.url}`,"no-redirect")),y();return;case"manual":if(F!==null)try{h.set("Location",F)}catch(N){n(N)}break;case"follow":if(F===null)break;if(i.counter>=i.follow){n(new $e(`maximum redirect reached at: ${i.url}`,"max-redirect")),y();return}let x={headers:new ot(i.headers),follow:i.follow,counter:i.counter+1,agent:i.agent,compress:i.compress,method:i.method,body:i.body,signal:i.signal,timeout:i.timeout,size:i.size};if(m.statusCode!==303&&i.body&&kw(i)===null){n(new $e("Cannot follow redirect with body being a readable stream","unsupported-redirect")),y();return}(m.statusCode===303||(m.statusCode===301||m.statusCode===302)&&i.method==="POST")&&(x.method="GET",x.body=void 0,x.headers.delete("content-length")),r(xr(new sr(F,x))),y();return}}m.once("end",function(){a&&a.removeEventListener("abort",l)});let w=m.pipe(new $w),v={url:i.url,status:m.statusCode,statusText:m.statusMessage,headers:h,size:i.size,timeout:i.timeout,counter:i.counter},R=h.get("Content-Encoding");if(!i.compress||i.method==="HEAD"||R===null||m.statusCode===204||m.statusCode===304){u=new Et(w,v),r(u);return}let A={flush:Lr.default.Z_SYNC_FLUSH,finishFlush:Lr.default.Z_SYNC_FLUSH};if(R=="gzip"||R=="x-gzip"){w=w.pipe(Lr.default.createGunzip(A)),u=new Et(w,v),r(u);return}if(R=="deflate"||R=="x-deflate"){m.pipe(new $w).once("data",function(F){(F[0]&15)==8?w=w.pipe(Lr.default.createInflate()):w=w.pipe(Lr.default.createInflateRaw()),u=new Et(w,v),r(u)});return}if(R=="br"&&typeof Lr.default.createBrotliDecompress=="function"){w=w.pipe(Lr.default.createBrotliDecompress()),u=new Et(w,v),r(u);return}u=new Et(w,v),r(u)}),WP(f,i)})}xr.isRedirect=function(t){return t===301||t===302||t===303||t===307||t===308};xr.Promise=global.Promise;var t3=xr});var zw=d(_f=>{"use strict";var r3=require("net"),ln=require("util"),Mw=require("events"),We=ln.debuglog("http");function at(t){if(!(this instanceof at))return new at(t);Mw.call(this);var e=this;e.defaultPort=80,e.protocol="http:",e.options=ln._extend({},t),e.options.path=null,e.requests={},e.sockets={},e.freeSockets={},e.keepAliveMsecs=e.options.keepAliveMsecs||1e3,e.keepAlive=e.options.keepAlive||!1,e.maxSockets=e.options.maxSockets||at.defaultMaxSockets,e.maxFreeSockets=e.options.maxFreeSockets||256,e.freeSocketKeepAliveTimeout=e.options.freeSocketKeepAliveTimeout||0,e.timeout=e.options.timeout||0,this.socketActiveTTL=this.options.socketActiveTTL||null,e.on("free",function(r,n){var i=e.getName(n);if(We("agent.on(free)",i),r.writable&&e.requests[i]&&e.requests[i].length)We("continue handle next request"),e.requests[i].shift().onSocket(r),e.requests[i].length===0&&delete e.requests[i];else{var s=r._httpMessage;if(s&&s.shouldKeepAlive&&r.writable&&e.keepAlive){var o=e.freeSockets[i],a=o?o.length:0,u=a;if(e.sockets[i]&&(u+=e.sockets[i].length),u>e.maxSockets||a>=e.maxFreeSockets)r.destroy();else{o=o||[],e.freeSockets[i]=o,r.setKeepAlive(!0,e.keepAliveMsecs),r.unref(),r._httpMessage=null,e.removeSocket(r,n),o.push(r),r.listeners("error").length===0&&r.once("error",Bw);let c=r.freeSocketKeepAliveTimeout||e.freeSocketKeepAliveTimeout;r.setTimeout(c),We(`push to free socket queue and wait for ${c}ms`)}}else r.destroy()}})}ln.inherits(at,Mw);_f.Agent=at;function Bw(t){var e=this;We("SOCKET ERROR on FREE socket:",t.message,t.stack),e.destroy(),e.emit("agentRemove")}at.defaultMaxSockets=Infinity;at.prototype.createConnection=r3.createConnection;at.prototype.getName=function(e){var r=e.host||"localhost";return r+=":",e.port&&(r+=e.port),r+=":",e.localAddress&&(r+=e.localAddress),(e.family===4||e.family===6)&&(r+=":"+e.family),r};function Uw(t){return function(e,r){if(e){process.nextTick(function(){t.emit("error",e)});return}t.onSocket(r)}}at.prototype.addRequest=function(e,r,n,i){typeof r=="string"&&(r={host:r,port:n,localAddress:i}),r=ln._extend({},r),r=ln._extend(r,this.options),r.servername||(r.servername=Gw(r,e));var s=this.getName(r);this.sockets[s]||(this.sockets[s]=[]);var o=this.freeSockets[s]?this.freeSockets[s].length:0,a=o+this.sockets[s].length;if(o){var u=this.freeSockets[s].shift();if(We("have free socket"),u.removeListener("error",Bw),u.setTimeout(this.timeout),this.socketActiveTTL&&Date.now()-u.createdTime>this.socketActiveTTL)return We(`socket ${u.createdTime} expired`),u.destroy(),this.createSocket(e,r,Uw(e));this.freeSockets[s].length||delete this.freeSockets[s],u.ref(),e.onSocket(u),this.sockets[s].push(u)}else a{var li=1e3,fi=li*60,hi=fi*60,fn=hi*24,n3=fn*7,i3=fn*365.25;Hw.exports=function(t,e){e=e||{};var r=typeof t;if(r==="string"&&t.length>0)return s3(t);if(r==="number"&&isFinite(t))return e.long?a3(t):o3(t);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(t))};function s3(t){if(t=String(t),!(t.length>100)){var e=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(t);if(!!e){var r=parseFloat(e[1]),n=(e[2]||"ms").toLowerCase();switch(n){case"years":case"year":case"yrs":case"yr":case"y":return r*i3;case"weeks":case"week":case"w":return r*n3;case"days":case"day":case"d":return r*fn;case"hours":case"hour":case"hrs":case"hr":case"h":return r*hi;case"minutes":case"minute":case"mins":case"min":case"m":return r*fi;case"seconds":case"second":case"secs":case"sec":case"s":return r*li;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return r;default:return}}}}function o3(t){var e=Math.abs(t);return e>=fn?Math.round(t/fn)+"d":e>=hi?Math.round(t/hi)+"h":e>=fi?Math.round(t/fi)+"m":e>=li?Math.round(t/li)+"s":t+"ms"}function a3(t){var e=Math.abs(t);return e>=fn?Ea(t,e,fn,"day"):e>=hi?Ea(t,e,hi,"hour"):e>=fi?Ea(t,e,fi,"minute"):e>=li?Ea(t,e,li,"second"):t+" ms"}function Ea(t,e,r,n){var i=e>=r*1.5;return Math.round(t/r)+" "+n+(i?"s":"")}});var Vw=d((tj,Yw)=>{"use strict";var u3=require("util"),c3=Ww();Yw.exports=function(t){if(typeof t=="number")return t;var e=c3(t);if(e===void 0){var r=new Error(u3.format("humanize-ms(%j) result undefined",t));console.warn(r.stack)}return e}});var Af=d((rj,Xw)=>{"use strict";var l3=zw().Agent,Kw=Vw(),Zw=class extends l3{constructor(e){e=e||{},e.keepAlive=e.keepAlive!==!1,e.freeSocketKeepAliveTimeout===void 0&&(e.freeSocketKeepAliveTimeout=15e3),e.keepAliveTimeout&&(e.freeSocketKeepAliveTimeout=e.keepAliveTimeout),e.freeSocketKeepAliveTimeout=Kw(e.freeSocketKeepAliveTimeout),e.timeout===void 0&&(e.timeout=e.freeSocketKeepAliveTimeout*2,e.timeout<3e4&&(e.timeout=3e4)),e.timeout=Kw(e.timeout),super(e),this.createSocketCount=0,this.createSocketCountLastCheck=0,this.createSocketErrorCount=0,this.createSocketErrorCountLastCheck=0,this.closeSocketCount=0,this.closeSocketCountLastCheck=0,this.errorSocketCount=0,this.errorSocketCountLastCheck=0,this.requestCount=0,this.requestCountLastCheck=0,this.timeoutSocketCount=0,this.timeoutSocketCountLastCheck=0,this.on("free",r=>{this.requestCount++,r.lastFreeTime=Date.now()}),this.on("timeout",()=>{this.timeoutSocketCount++}),this.on("close",()=>{this.closeSocketCount++}),this.on("error",()=>{this.errorSocketCount++})}createSocket(e,r,n){super.createSocket(e,r,(i,s)=>{if(i)return this.createSocketErrorCount++,n(i);this.keepAlive&&s.setNoDelay(!0),this.createSocketCount++,n(null,s)})}get statusChanged(){let e=this.createSocketCount!==this.createSocketCountLastCheck||this.createSocketErrorCount!==this.createSocketErrorCountLastCheck||this.closeSocketCount!==this.closeSocketCountLastCheck||this.errorSocketCount!==this.errorSocketCountLastCheck||this.timeoutSocketCount!==this.timeoutSocketCountLastCheck||this.requestCount!==this.requestCountLastCheck;return e&&(this.createSocketCountLastCheck=this.createSocketCount,this.createSocketErrorCountLastCheck=this.createSocketErrorCount,this.closeSocketCountLastCheck=this.closeSocketCount,this.errorSocketCountLastCheck=this.errorSocketCount,this.timeoutSocketCountLastCheck=this.timeoutSocketCount,this.requestCountLastCheck=this.requestCount),e}getCurrentStatus(){return{createSocketCount:this.createSocketCount,createSocketErrorCount:this.createSocketErrorCount,closeSocketCount:this.closeSocketCount,errorSocketCount:this.errorSocketCount,timeoutSocketCount:this.timeoutSocketCount,requestCount:this.requestCount,freeSockets:Cf(this.freeSockets),sockets:Cf(this.sockets),requests:Cf(this.requests)}}};Xw.exports=Zw;function Cf(t){let e={};for(let r in t)e[r]=t[r].length;return e}});var eS=d((nj,Jw)=>{"use strict";var f3=require("https"),h3=Af(),Qw=f3.Agent,Lf=class extends h3{constructor(e){super(e);this.defaultPort=443,this.protocol="https:",this.maxCachedSessions=this.options.maxCachedSessions,this.maxCachedSessions===void 0&&(this.maxCachedSessions=100),this._sessionCache={map:{},list:[]}}};["createConnection","getName","_getSession","_cacheSession","_evictSession"].forEach(function(t){typeof Qw.prototype[t]=="function"&&(Lf.prototype[t]=Qw.prototype[t])});Jw.exports=Lf});var tS=d((ij,Tf)=>{"use strict";Tf.exports=Af();Tf.exports.HttpsAgent=eS()});var nS=d((sj,rS)=>{var vs=1e3,bs=vs*60,Es=bs*60,ws=Es*24,p3=ws*365.25;rS.exports=function(t,e){e=e||{};var r=typeof t;if(r==="string"&&t.length>0)return d3(t);if(r==="number"&&isNaN(t)===!1)return e.long?g3(t):m3(t);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(t))};function d3(t){if(t=String(t),!(t.length>100)){var e=/^((?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(t);if(!!e){var r=parseFloat(e[1]),n=(e[2]||"ms").toLowerCase();switch(n){case"years":case"year":case"yrs":case"yr":case"y":return r*p3;case"days":case"day":case"d":return r*ws;case"hours":case"hour":case"hrs":case"hr":case"h":return r*Es;case"minutes":case"minute":case"mins":case"min":case"m":return r*bs;case"seconds":case"second":case"secs":case"sec":case"s":return r*vs;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return r;default:return}}}}function m3(t){return t>=ws?Math.round(t/ws)+"d":t>=Es?Math.round(t/Es)+"h":t>=bs?Math.round(t/bs)+"m":t>=vs?Math.round(t/vs)+"s":t+"ms"}function g3(t){return wa(t,ws,"day")||wa(t,Es,"hour")||wa(t,bs,"minute")||wa(t,vs,"second")||t+" ms"}function wa(t,e,r){if(!(t{W=iS.exports=xf.debug=xf.default=xf;W.coerce=y3;W.disable=v3;W.enable=b3;W.enabled=E3;W.humanize=nS();W.instances=[];W.names=[];W.skips=[];W.formatters={};function w3(t){var e=0,r;for(r in t)e=(e<<5)-e+t.charCodeAt(r),e|=0;return W.colors[Math.abs(e)%W.colors.length]}function xf(t){var e;function r(){if(!!r.enabled){var n=r,i=+new Date,s=i-(e||i);n.diff=s,n.prev=e,n.curr=i,e=i;for(var o=new Array(arguments.length),a=0;a{Ye=sS.exports=Nf();Ye.log=O3;Ye.formatArgs=R3;Ye.save=_3;Ye.load=oS;Ye.useColors=C3;Ye.storage=typeof chrome!="undefined"&&typeof chrome.storage!="undefined"?chrome.storage.local:A3();Ye.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"];function C3(){return typeof window!="undefined"&&window.process&&window.process.type==="renderer"?!0:typeof navigator!="undefined"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)?!1:typeof document!="undefined"&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||typeof window!="undefined"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator!="undefined"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||typeof navigator!="undefined"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)}Ye.formatters.j=function(t){try{return JSON.stringify(t)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}};function R3(t){var e=this.useColors;if(t[0]=(e?"%c":"")+this.namespace+(e?" %c":" ")+t[0]+(e?"%c ":" ")+"+"+Ye.humanize(this.diff),!!e){var r="color: "+this.color;t.splice(1,0,r,"color: inherit");var n=0,i=0;t[0].replace(/%[a-zA-Z%]/g,function(s){s!=="%%"&&(n++,s==="%c"&&(i=n))}),t.splice(i,0,r)}}function O3(){return typeof console=="object"&&console.log&&Function.prototype.apply.call(console.log,console,arguments)}function _3(t){try{t==null?Ye.storage.removeItem("debug"):Ye.storage.debug=t}catch(e){}}function oS(){var t;try{t=Ye.storage.debug}catch(e){}return!t&&typeof process!="undefined"&&"env"in process&&(t=process.env.DEBUG),t}Ye.enable(oS());function A3(){try{return window.localStorage}catch(t){}}});var cS=d((oj,uS)=>{"use strict";uS.exports=(t,e=process.argv)=>{let r=t.startsWith("-")?"":t.length===1?"-":"--",n=e.indexOf(r+t),i=e.indexOf("--");return n!==-1&&(i===-1||n{"use strict";var L3=require("os"),fS=require("tty"),wt=cS(),{env:Ce}=process,Nr;wt("no-color")||wt("no-colors")||wt("color=false")||wt("color=never")?Nr=0:(wt("color")||wt("colors")||wt("color=true")||wt("color=always"))&&(Nr=1);"FORCE_COLOR"in Ce&&(Ce.FORCE_COLOR==="true"?Nr=1:Ce.FORCE_COLOR==="false"?Nr=0:Nr=Ce.FORCE_COLOR.length===0?1:Math.min(parseInt(Ce.FORCE_COLOR,10),3));function If(t){return t===0?!1:{level:t,hasBasic:!0,has256:t>=2,has16m:t>=3}}function Pf(t,e){if(Nr===0)return 0;if(wt("color=16m")||wt("color=full")||wt("color=truecolor"))return 3;if(wt("color=256"))return 2;if(t&&!e&&Nr===void 0)return 0;let r=Nr||0;if(Ce.TERM==="dumb")return r;if(process.platform==="win32"){let n=L3.release().split(".");return Number(n[0])>=10&&Number(n[2])>=10586?Number(n[2])>=14931?3:2:1}if("CI"in Ce)return["TRAVIS","CIRCLECI","APPVEYOR","GITLAB_CI","GITHUB_ACTIONS","BUILDKITE"].some(n=>n in Ce)||Ce.CI_NAME==="codeship"?1:r;if("TEAMCITY_VERSION"in Ce)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(Ce.TEAMCITY_VERSION)?1:0;if(Ce.COLORTERM==="truecolor")return 3;if("TERM_PROGRAM"in Ce){let n=parseInt((Ce.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(Ce.TERM_PROGRAM){case"iTerm.app":return n>=3?3:2;case"Apple_Terminal":return 2}}return/-256(color)?$/i.test(Ce.TERM)?2:/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(Ce.TERM)||"COLORTERM"in Ce?1:r}function T3(t){let e=Pf(t,t&&t.isTTY);return If(e)}lS.exports={supportsColor:T3,stdout:If(Pf(!0,fS.isatty(1))),stderr:If(Pf(!0,fS.isatty(2)))}});var mS=d((ye,pS)=>{var x3=require("tty"),Sa=require("util");ye=pS.exports=Nf();ye.init=N3;ye.log=I3;ye.formatArgs=P3;ye.save=D3;ye.load=dS;ye.useColors=F3;ye.colors=[6,2,3,4,5,1];try{Df=hS(),Df&&Df.level>=2&&(ye.colors=[20,21,26,27,32,33,38,39,40,41,42,43,44,45,56,57,62,63,68,69,74,75,76,77,78,79,80,81,92,93,98,99,112,113,128,129,134,135,148,149,160,161,162,163,164,165,166,167,168,169,170,171,172,173,178,179,184,185,196,197,198,199,200,201,202,203,204,205,206,207,208,209,214,215,220,221])}catch(t){}var Df;ye.inspectOpts=Object.keys(process.env).filter(function(t){return/^debug_/i.test(t)}).reduce(function(t,e){var r=e.substring(6).toLowerCase().replace(/_([a-z])/g,function(i,s){return s.toUpperCase()}),n=process.env[e];return/^(yes|on|true|enabled)$/i.test(n)?n=!0:/^(no|off|false|disabled)$/i.test(n)?n=!1:n==="null"?n=null:n=Number(n),t[r]=n,t},{});function F3(){return"colors"in ye.inspectOpts?Boolean(ye.inspectOpts.colors):x3.isatty(process.stderr.fd)}ye.formatters.o=function(t){return this.inspectOpts.colors=this.useColors,Sa.inspect(t,this.inspectOpts).split(` +`).map(function(e){return e.trim()}).join(" ")};ye.formatters.O=function(t){return this.inspectOpts.colors=this.useColors,Sa.inspect(t,this.inspectOpts)};function P3(t){var e=this.namespace,r=this.useColors;if(r){var n=this.color,i="[3"+(n<8?n:"8;5;"+n),s=" "+i+";1m"+e+" ";t[0]=s+t[0].split(` `).join(` -`+s),t.push(i+"m+"+ge.humanize(this.diff)+"")}else t[0]=X3()+e+" "+t[0]}function X3(){return ge.inspectOpts.hideDate?"":new Date().toISOString()+" "}function H3(){return process.stderr.write(Aa.format.apply(Aa,arguments)+` -`)}function V3(t){t==null?delete process.env.DEBUG:process.env.DEBUG=t}function wS(){return process.env.DEBUG}function z3(t){t.inspectOpts={};for(var e=Object.keys(ge.inspectOpts),r=0;r{typeof process=="undefined"||process.type==="renderer"?Uf.exports=dS():Uf.exports=SS()});var RS=d((Nq,OS)=>{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))}OS.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 n=this,i=setTimeout(function(){n._attempts++,n._operationTimeoutCb&&(n._timeout=setTimeout(function(){n._operationTimeoutCb(n._attempts)},n._operationTimeout),n._options.unref&&n._timeout.unref()),n._fn(n._attempts)},r);return this._options.unref&&i.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,n=0;n=r&&(e=i,r=o)}return e}});var CS=d(hn=>{var K3=RS();hn.operation=function(t){var e=hn.timeouts(t);return new K3(e,{forever:t&&t.forever,unref:t&&t.unref,maxRetryTime:t&&t.maxRetryTime})};hn.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 n=[],i=0;i{_S.exports=CS()});var TS=d((Dq,AS)=>{var Z3=zf();function J3(t,e){function r(n,i){var s=e||{};"randomize"in s||(s.randomize=!0);var o=Z3.operation(s);function a(l){i(l||new Error("Aborted"))}function u(l,f){if(l.bail){a(l);return}o.retry(l)?s.onRetry&&s.onRetry(l,f):i(o.mainError())}function c(l){var f;try{f=t(a,l)}catch(p){u(p,l);return}Promise.resolve(f).then(n).catch(function(y){u(y,l)})}o.attempt(c)}return new Promise(r)}AS.exports=J3});var NS=d((Hf,LS)=>{var Q3=TS(),xS=Gf()("fetch-retry"),eD=10,tD=5,rD=20,nD=6;LS.exports=Hf=iD;function sD(t){return t?t.code==="ERR_UNESCAPED_CHARACTERS"||t.message==="Request path contains unescaped characters":!1}function iD(t){t||(t=Es());async function e(r,n={}){let i=Object.assign({minTimeout:eD,retries:tD,factor:nD,maxRetryAfter:rD},n.retry);n.onRetry&&(i.onRetry=s=>{n.onRetry(s,n),n.retry&&n.retry.onRetry&&n.retry.onRetry(s)});try{return await Q3(async(s,o)=>{let{method:a="GET"}=n;try{let u=await t(r,n);if(xS("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>i.maxRetryAfter)return u;await new Promise(l=>setTimeout(l,c*1e3))}throw new hi(u)}else return u}catch(u){let c=sD(u),l=!c&&o<=i.retries;if(xS(`${a} ${r} error (status = ${u.status}). ${l?"retrying":""}`,u),c)return s(u);throw u}},i)}catch(s){if(s instanceof hi)return s.res;throw s}}for(let r of Object.keys(t))e[r]=t[r];return e.default=e,e}var hi=class extends Error{constructor(e){super(e.statusText);Error.captureStackTrace&&Error.captureStackTrace(this,hi),this.name=this.constructor.name,this.res=e,this.code=this.status=this.statusCode=e.status,this.url=e.url}};Hf.ResponseError=hi});var PS=d((Fq,IS)=>{"use strict";IS.exports=function(t){t.prototype[Symbol.iterator]=function*(){for(let e=this.head;e;e=e.next)yield e.value}}});var FS=d((kq,DS)=>{"use strict";DS.exports=X;X.Node=pn;X.create=X;function X(t){var e=this;if(e instanceof X||(e=new X),e.tail=null,e.head=null,e.length=0,t&&typeof t.forEach=="function")t.forEach(function(i){e.push(i)});else if(arguments.length>0)for(var r=0,n=arguments.length;r1)r=e;else if(this.head)n=this.head.next,r=this.head.value;else throw new TypeError("Reduce of empty list with no initial value");for(var i=0;n!==null;i++)r=t(r,n.value,i),n=n.next;return r};X.prototype.reduceReverse=function(t,e){var r,n=this.tail;if(arguments.length>1)r=e;else if(this.tail)n=this.tail.prev,r=this.tail.value;else throw new TypeError("Reduce of empty list with no initial value");for(var i=this.length-1;n!==null;i--)r=t(r,n.value,i),n=n.prev;return r};X.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};X.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};X.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 X;if(ethis.length&&(e=this.length);for(var n=0,i=this.head;i!==null&&nthis.length&&(e=this.length);for(var n=this.length,i=this.tail;i!==null&&n>e;n--)i=i.prev;for(;i!==null&&n>t;n--,i=i.prev)r.push(i.value);return r};X.prototype.splice=function(t,e){t>this.length&&(t=this.length-1),t<0&&(t=this.length+t);for(var r=0,n=this.head;n!==null&&r{"use strict";var cD=FS(),dn=Symbol("max"),ar=Symbol("length"),pi=Symbol("lengthCalculator"),Cs=Symbol("allowStale"),mn=Symbol("maxAge"),ur=Symbol("dispose"),jS=Symbol("noDisposeOnSet"),Ae=Symbol("lruList"),At=Symbol("cache"),qS=Symbol("updateAgeOnGet"),Wf=()=>1,$S=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[dn]=e.max||Infinity,n=e.length||Wf;if(this[pi]=typeof n!="function"?Wf:n,this[Cs]=e.stale||!1,e.maxAge&&typeof e.maxAge!="number")throw new TypeError("maxAge must be a number");this[mn]=e.maxAge||0,this[ur]=e.dispose,this[jS]=e.noDisposeOnSet||!1,this[qS]=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[dn]=e||Infinity,_s(this)}get max(){return this[dn]}set allowStale(e){this[Cs]=!!e}get allowStale(){return this[Cs]}set maxAge(e){if(typeof e!="number")throw new TypeError("maxAge must be a non-negative number");this[mn]=e,_s(this)}get maxAge(){return this[mn]}set lengthCalculator(e){typeof e!="function"&&(e=Wf),e!==this[pi]&&(this[pi]=e,this[ar]=0,this[Ae].forEach(r=>{r.length=this[pi](r.value,r.key),this[ar]+=r.length})),_s(this)}get lengthCalculator(){return this[pi]}get length(){return this[ar]}get itemCount(){return this[Ae].length}rforEach(e,r){r=r||this;for(let n=this[Ae].tail;n!==null;){let i=n.prev;BS(this,e,n,r),n=i}}forEach(e,r){r=r||this;for(let n=this[Ae].head;n!==null;){let i=n.next;BS(this,e,n,r),n=i}}keys(){return this[Ae].toArray().map(e=>e.key)}values(){return this[Ae].toArray().map(e=>e.value)}reset(){this[ur]&&this[Ae]&&this[Ae].length&&this[Ae].forEach(e=>this[ur](e.key,e.value)),this[At]=new Map,this[Ae]=new cD,this[ar]=0}dump(){return this[Ae].map(e=>Ta(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,n){if(n=n||this[mn],n&&typeof n!="number")throw new TypeError("maxAge must be a number");let i=n?Date.now():0,s=this[pi](r,e);if(this[At].has(e)){if(s>this[dn])return di(this,this[At].get(e)),!1;let u=this[At].get(e).value;return this[ur]&&(this[jS]||this[ur](e,u.value)),u.now=i,u.maxAge=n,u.value=r,this[ar]+=s-u.length,u.length=s,this.get(e),_s(this),!0}let o=new MS(e,r,s,i,n);return o.length>this[dn]?(this[ur]&&this[ur](e,r),!1):(this[ar]+=o.length,this[Ae].unshift(o),this[At].set(e,this[Ae].head),_s(this),!0)}has(e){if(!this[At].has(e))return!1;let r=this[At].get(e).value;return!Ta(this,r)}get(e){return Vf(this,e,!0)}peek(e){return Vf(this,e,!1)}pop(){let e=this[Ae].tail;return e?(di(this,e),e.value):null}del(e){di(this,this[At].get(e))}load(e){this.reset();let r=Date.now();for(let n=e.length-1;n>=0;n--){let i=e[n],s=i.e||0;if(s===0)this.set(i.k,i.v);else{let o=s-r;o>0&&this.set(i.k,i.v,o)}}}prune(){this[At].forEach((e,r)=>Vf(this,r,!1))}},Vf=(t,e,r)=>{let n=t[At].get(e);if(n){let i=n.value;if(Ta(t,i)){if(di(t,n),!t[Cs])return}else r&&(t[qS]&&(n.value.now=Date.now()),t[Ae].unshiftNode(n));return i.value}},Ta=(t,e)=>{if(!e||!e.maxAge&&!t[mn])return!1;let r=Date.now()-e.now;return e.maxAge?r>e.maxAge:t[mn]&&r>t[mn]},_s=t=>{if(t[ar]>t[dn])for(let e=t[Ae].tail;t[ar]>t[dn]&&e!==null;){let r=e.prev;di(t,e),e=r}},di=(t,e)=>{if(e){let r=e.value;t[ur]&&t[ur](r.key,r.value),t[ar]-=r.length,t[At].delete(r.key),t[Ae].removeNode(e)}},MS=class{constructor(e,r,n,i,s){this.key=e,this.value=r,this.length=n,this.now=i,this.maxAge=s||0}},BS=(t,e,r,n)=>{let i=r.value;Ta(t,i)&&(di(t,r),t[Cs]||(i=void 0)),i&&e.call(n,i.value,i.key,t)};kS.exports=$S});var zS=d((qq,GS)=>{var lD=zf();function fD(t,e){function r(n,i){var s=e||{},o=lD.operation(s);function a(l){i(l||new Error("Aborted"))}function u(l,f){if(l.bail){a(l);return}o.retry(l)?s.onRetry&&s.onRetry(l,f):i(o.mainError())}function c(l){var f;try{f=t(a,l)}catch(p){u(p,l);return}Promise.resolve(f).then(n).catch(function(y){u(y,l)})}o.attempt(c)}return new Promise(r)}GS.exports=fD});var HS=d(Yf=>{"use strict";Object.defineProperty(Yf,"__esModule",{value:!0});function hD(t,e){return new Promise((r,n)=>{e.resolve4(t,{ttl:!0},(i,s)=>{if(i)return n(i);r(s)})})}Yf.default=hD});var WS=d(Xf=>{"use strict";Object.defineProperty(Xf,"__esModule",{value:!0});function pD(t,e){return new Promise((r,n)=>{e.resolve6(t,{ttl:!0},(i,s)=>{if(i)return n(i);r(s)})})}Xf.default=pD});var JS=d(mi=>{"use strict";var As=mi&&mi.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(mi,"__esModule",{value:!0});var dD=As(require("dns")),VS=As(US()),mD=As(zS()),gD=As(HS()),yD=As(WS()),YS={max:500},XS,KS;ZS();async function vD(t,e={}){let{ipv6:r=!1,minimumCacheTime:n=300,refreshCache:i=!1,retryOpts:s={minTimeout:10,retries:3,factor:5},resolver:o=dD.default}=e,{cache:a,resolve:u}=r?{cache:KS,resolve:yD.default}:{cache:XS,resolve:gD.default};if(i)a.del(t);else{let l=a.get(t);if(l)return await l}let c=(async()=>{let l=await mD.default(()=>u(t,o),s),f=l[Math.floor(Math.random()*l.length)],p=Math.max(f.ttl,n);return a.set(t,f.address,p*1e3),f.address})();return a.set(t,c,5e3),c}mi.default=vD;function ZS(){XS=new VS.default(YS),KS=new VS.default(YS)}mi.setupCache=ZS});var QS=d(Kf=>{"use strict";Object.defineProperty(Kf,"__esModule",{value:!0});var bD=JS();Kf.default=bD.default});var t2=d(e2=>{e2.dnsCachedUrl=Symbol("dnsCachedUrl")});var s2=d((zq,r2)=>{var{isIP:ED}=require("net"),{format:n2,parse:i2}=require("url"),wD=QS().default,{dnsCachedUrl:SD}=t2();r2.exports=OD;var RD=t=>(t/100|0)==3;function OD(t){t||(t=Es());let{Headers:e}=t;async function r(n,i){let s=i2(n),o=s.host;ED(s.hostname)===0&&(i||(i={}),i.headers=new e(i.headers),i.headers.has("Host")||i.headers.set("Host",s.host),i.redirect="manual",s.host=await wD(s.hostname),s.port&&(s.host+=`:${s.port}`),n=n2(s));let u=await t(n,i);if(u[SD]=n,Object.defineProperty(u,"url",{get(){return s.href}}),RD(u.status)){let c=Object.assign({},i);c.headers=new e(i.headers),(u.status===303||(u.status===301||u.status===302)&&i.method==="POST")&&(c.method="GET",c.body=null,c.headers.delete("content-length"));let l=u.headers.get("Location"),f=i2(l);return f.host===s.host&&(f.host=o),c.headers.set("Host",f.host),i.onRedirect&&i.onRedirect(u,c),r(n2(f),c)}return u}for(let n of Object.keys(t))r[n]=t[n];return r.default=r,r}});var f2=d((Hq,o2)=>{var{parse:CD}=require("url"),a2=uS(),Zf=Gf()("@vercel/fetch"),_D=NS(),AD=s2(),TD=require("url"),{HttpsAgent:LD}=a2,{URLSearchParams:xD}=TD,ND={maxSockets:200,maxFreeSockets:20,timeout:6e4,freeSocketTimeout:3e4,freeSocketKeepAliveTimeout:3e4},u2,c2;function ID(t){return u2=u2||(Zf("init http agent"),new a2(t))}function PD(t){return c2=c2||(Zf("init https agent"),new LD(t))}function l2(t,e){return/^https/.test(t)?PD(e):ID(e)}function DD(t,e={}){return async function(n,i={}){i.agent||(i.agent=l2(n,{AGENT_OPTIONS:ND,...e})),i.redirect="manual",i.headers=new t.Headers(i.headers),i.headers.set("host",i.headers.get("host")||CD(n).host),i.body&&!(i.body instanceof xD)&&typeof i.body=="object"&&!Buffer.isBuffer(i.body)&&(i.body=JSON.stringify(i.body),i.headers.set("Content-Type","application/json"),i.headers.set("Content-Length",Buffer.byteLength(i.body))),i.onRedirect=(s,o)=>{o.agent=l2(s.headers.get("Location"))};try{return Zf("%s %s",i.method||"GET",n),await t(n,i)}catch(s){throw s.url=n,s.opts=i,s}}}function FD(t,e){t||(t=Es());let r=t.default;if(r&&(t=Object.assign((...n)=>r(...n),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=AD(t),t=_D(t),t=DD(t,e),t}o2.exports=FD});var y2=d((Vq,p2)=>{p2.exports=d2;d2.sync=jD;var m2=require("fs");function qD(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 n=0;n{v2.exports=b2;b2.sync=$D;var E2=require("fs");function b2(t,e,r){E2.stat(t,function(n,i){r(n,n?!1:w2(i,e))})}function $D(t,e){return w2(E2.statSync(t),e)}function w2(t,e){return t.isFile()&&MD(t,e)}function MD(t,e){var r=t.mode,n=t.uid,i=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&&i===o||r&a&&n===s||r&l&&s===0;return f}});var R2=d((Kq,O2)=>{var Xq=require("fs"),La;process.platform==="win32"||global.TESTING_WINDOWS?La=y2():La=S2();O2.exports=Qf;Qf.sync=BD;function Qf(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(n,i){Qf(t,e||{},function(s,o){s?i(s):n(o)})})}La(t,e||{},function(n,i){n&&(n.code==="EACCES"||e&&e.ignoreErrors)&&(n=null,i=!1),r(n,i)})}function BD(t,e){try{return La.sync(t,e||{})}catch(r){if(e&&e.ignoreErrors||r.code==="EACCES")return!1;throw r}}});var N2=d((Zq,C2)=>{var gi=process.platform==="win32"||process.env.OSTYPE==="cygwin"||process.env.OSTYPE==="msys",_2=require("path"),UD=gi?";":":",A2=R2(),T2=t=>Object.assign(new Error(`not found: ${t}`),{code:"ENOENT"}),L2=(t,e)=>{let r=e.colon||UD,n=t.match(/\//)||gi&&t.match(/\\/)?[""]:[...gi?[process.cwd()]:[],...(e.path||process.env.PATH||"").split(r)],i=gi?e.pathExt||process.env.PATHEXT||".EXE;.CMD;.BAT;.COM":"",s=gi?i.split(r):[""];return gi&&t.indexOf(".")!==-1&&s[0]!==""&&s.unshift(""),{pathEnv:n,pathExt:s,pathExtExe:i}},x2=(t,e,r)=>{typeof e=="function"&&(r=e,e={}),e||(e={});let{pathEnv:n,pathExt:i,pathExtExe:s}=L2(t,e),o=[],a=c=>new Promise((l,f)=>{if(c===n.length)return e.all&&o.length?l(o):f(T2(t));let p=n[c],y=/^".*"$/.test(p)?p.slice(1,-1):p,m=_2.join(y,t),h=!y&&/^\.[\\\/]/.test(t)?t.slice(0,2)+m:m;l(u(h,c,0))}),u=(c,l,f)=>new Promise((p,y)=>{if(f===i.length)return p(a(l+1));let m=i[f];A2(c+m,{pathExt:s},(h,E)=>{if(!h&&E)if(e.all)o.push(c+m);else return p(c+m);return p(u(c,l,f+1))})});return r?a(0).then(c=>r(null,c),r):a(0)},GD=(t,e)=>{e=e||{};let{pathEnv:r,pathExt:n,pathExtExe:i}=L2(t,e),s=[];for(let o=0;o{var zD=require("fs"),HD=require("path");function I2(t){console.log(`[dotenv][DEBUG] ${t}`)}var WD=` -`,VD=/^\s*([\w.-]+)\s*=\s*(.*)?\s*$/,YD=/\\n/g,XD=/\n|\r|\r\n/;function P2(t,e){let r=Boolean(e&&e.debug),n={};return t.toString().split(XD).forEach(function(i,s){let o=i.match(VD);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(YD,WD))):u=u.trim(),n[a]=u}else r&&I2(`did not match key and value when parsing line ${s+1}: ${i}`)}),n}function KD(t){let e=HD.resolve(process.cwd(),".env"),r="utf8",n=!1;t&&(t.path!=null&&(e=t.path),t.encoding!=null&&(r=t.encoding),t.debug!=null&&(n=!0));try{let i=P2(zD.readFileSync(e,{encoding:r}),{debug:n});return Object.keys(i).forEach(function(s){Object.prototype.hasOwnProperty.call(process.env,s)?n&&I2(`"${s}" is already defined in \`process.env\` and will not be overwritten`):process.env[s]=i[s]}),{parsed:i}}catch(i){return{error:i}}}eh.exports.config=KD;eh.exports.parse=P2});var nh=d(i5=>{ja(i5);uh(i5,{AbortController:()=>Ls,AbortSignal:()=>vi,default:()=>a5});var vi=class extends kt{constructor(){throw super(),new TypeError("AbortSignal cannot be constructed directly")}get aborted(){let e=Ia.get(this);if(typeof e!="boolean")throw new TypeError(`Expected 'this' to be an 'AbortSignal' object, but got ${this===null?"null":typeof this}`);return e}};rh(vi.prototype,"abort");function s5(){let t=Object.create(vi.prototype);return kt.call(t),Ia.set(t,!1),t}function o5(t){Ia.get(t)===!1&&(Ia.set(t,!0),t.dispatchEvent({type:"abort"}))}var Ia=new WeakMap;Object.defineProperties(vi.prototype,{aborted:{enumerable:!0}});typeof Symbol=="function"&&typeof Symbol.toStringTag=="symbol"&&Object.defineProperty(vi.prototype,Symbol.toStringTag,{configurable:!0,value:"AbortSignal"});var Ls=class{constructor(){z2.set(this,s5())}get signal(){return H2(this)}abort(){o5(H2(this))}},z2=new WeakMap;function H2(t){let e=z2.get(t);if(e==null)throw new TypeError(`Expected 'this' to be an 'AbortController' object, but got ${t===null?"null":typeof t}`);return e}Object.defineProperties(Ls.prototype,{signal:{enumerable:!0},abort:{enumerable:!0}});typeof Symbol=="function"&&typeof Symbol.toStringTag=="symbol"&&Object.defineProperty(Ls.prototype,Symbol.toStringTag,{configurable:!0,value:"AbortController"});var a5=Ls});var W2=d(Pa=>{"use strict";var u5=Pa&&Pa.__awaiter||function(t,e,r,n){return new(r||(r=Promise))(function(i,s){function o(c){try{u(n.next(c))}catch(l){s(l)}}function a(c){try{u(n.throw(c))}catch(l){s(l)}}function u(c){var l;c.done?i(c.value):(l=c.value,l instanceof r?l:new r(function(f){f(l)})).then(o,a)}u((n=n.apply(t,e||[])).next())})};Object.defineProperty(Pa,"__esModule",{value:!0}),Promise.any=t=>u5(void 0,void 0,void 0,function*(){return new Promise((e,r)=>{let n=!1,i=0,s=[],o=u=>{n||(n=!0,e(u))},a=u=>{s.push(u),s.length>=i&&r(s)};for(let u of t)if(i++,u.then!==void 0){let c=u;c.then(l=>o(l)),u.catch!==void 0&&c.catch(l=>a(l))}})})});var gn=Te(require("child_process")),Pr=Te(require("fs")),V2=Te(Uh()),Y2=Te(Lv()),ut=Te(require("path"));function Nx(){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 Ac;function xv(){return typeof Ac=="undefined"&&(Ac=Nx()),Ac}var X2=Te(vE()),K2=Te(jw());var kD=Te(Es()),h2=Te(f2()),Jf=h2.default(kD);var Z2=Te(N2()),J2=Te(D2()),Da=Te(wa());var F2=new WeakMap,th=new WeakMap;function le(t){let e=F2.get(t);return console.assert(e!=null,"'this' is expected an Event object, but got",t),e}function k2(t){if(t.passiveListener!=null){typeof console!="undefined"&&typeof console.error=="function"&&console.error("Unable to preventDefault inside passive event listener invocation.",t.passiveListener);return}!t.event.cancelable||(t.canceled=!0,typeof t.event.preventDefault=="function"&&t.event.preventDefault())}function yi(t,e){F2.set(this,{eventTarget:t,event:e,eventPhase:2,currentTarget:t,canceled:!1,stopped:!1,immediateStopped:!1,passiveListener:null,timeStamp:e.timeStamp||Date.now()}),Object.defineProperty(this,"isTrusted",{value:!1,enumerable:!0});let r=Object.keys(e);for(let n=0;n0){let t=new Array(arguments.length);for(let e=0;e{cr||console.error(...t)};if(!Pr.default.rmSync){let t=wa();Pr.default.rmSync=(e,r)=>{if(e!=="/"&&e!=="/Applications")return t.sync(e)}}async function tO(t,e){var n;let r=!t||t==="auto"?process.env.EDITOR:t;if(!(r==null?void 0:r.trim().length))for(let i of Q2)try{r=await Z2.default(i),(r.includes("code")||r.includes("subl"))&&(r='"'+r+'"');break}catch(s){}return(!r||!((n=r==null?void 0:r.trim())==null?void 0:n.length))&&(e||console.warn("No editor detected, defaulting to Visual Studio Code. Set an editor with the -e flag"),r="code"),r}var rO=Pr.default.existsSync(ih);typeof Promise.any!="function"&&W2();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 d5(t){return!(!t.includes(xs)||!t.includes("/pull/"))}async function m5(t){let e=t.replace(`https://${xs}`,""),[r,n,i,s,o]=e.split("/"),a=`https://${Fa}/repos/${n}/${i}/pulls/${o}`,u=await sh(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],i,f]}async function g5(t,e){var s;let r=`https://${Fa}/repos/${t}/${e}`,n=await sh(r);return n.ok||(console.error("Failed to load github url: HTTP ",n.status,` -`,await n.text()),process.exit()),(s=(await n.json()).default_branch)!=null?s:"main"}var bi=!1,Ye;var oe,ka={redirect:"follow"},jt;(function(t){t[t.unknown=0]="unknown",t[t.vscode=1]="vscode",t[t.sublime=2]="sublime",t[t.vim=3]="vim"})(jt||(jt={}));var oh=new h5;function sh(t,e=null){let r=xv();return r&&!ka.headers&&(ka.headers={authorization:`Bearer ${r}`}),Jf(t,e?{...ka,signal:e.signal}:ka)}function nO(){}var ah=0,iO=!1;function yn(){var e,r;let t=cr;if(cr=!0,!bi&&!lr&&Ye)try{Ye==null||Ye.removeCallback(),Ye=null,bi=!1}catch(n){}if((oe==null?void 0:oe._tar)&&!oe._tar.writableEnded)try{oe._tar.warn=nO,oe._tar.abort()}catch(n){}if((oe==null?void 0:oe.slowTask)&&$e.waitFor!==1&&oe.slowTask.connected)try{oe.slowTask.kill(),oe.slowTask.disconnect()}catch(n){}if(t||oh.abort(),!lr&&((e=oe==null?void 0:oe.destination)==null?void 0:e.length)&&ah<10){if(process.platform==="win32")try{Da.default.sync(oe.destination+"/*/**"),Da.default.sync(oe.destination)}catch(n){process.env.VERBOSE&&console.error(n)}else try{Da.default.sync(oe.destination)}catch(n){process.env.VERBOSE&&console.error(n)}if(Pr.default.existsSync(oe.destination)){setTimeout(yn,32),process.env.VERBOSE&&console.log(`Failed to delete, retry attempt #${ah}/10`),ah++;return}}!lr&&((r=oe==null?void 0:oe.destination)==null?void 0:r.length)&&!Pr.default.existsSync(oe.destination)&&!iO&&(oe.slowTask=null,oe.log("\u{1F5D1} Deleted repository"),iO=!0),process.emitWarning=nO,process.exit()}process.once("SIGINT",yn);var Ns=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,n,i,s){let o=`https://cdn.jsdelivr.net/gh/${r}/${e}@${i}/${n||"README.md"}`,a=await Jf(o,{redirect:"follow",signal:oh.signal});if(!a.ok||a.status===404)return!1;if(cr)return;let u=await a.text();if(u.trim().length)return cr||(await Pr.default.promises.mkdir(ut.default.dirname(s),{recursive:!0}),cr)?void 0:(await Pr.default.promises.writeFile(s,u,"utf8"),!0);throw"nope"}prefetchGithub(e,r,n,i,s,o){return Promise.any([this._prefetchGithub(e,r,n,i,o),this._prefetchGithub(e,r,n,s,o)])}search(e){let r=process.emitWarning;process.emitWarning=()=>{};let{renderInk:n}=require(c5);return process.emitWarning=r,n(e)}async _unzip(e){let r=await sh(e,oh);if(r.ok)return r.body;if(r.status===403||r.status===401){let n=`Failed to load git repo: HTTP ${r.status} +`+s),t.push(i+"m+"+ye.humanize(this.diff)+"")}else t[0]=k3()+e+" "+t[0]}function k3(){return ye.inspectOpts.hideDate?"":new Date().toISOString()+" "}function I3(){return process.stderr.write(Sa.format.apply(Sa,arguments)+` +`)}function D3(t){t==null?delete process.env.DEBUG:process.env.DEBUG=t}function dS(){return process.env.DEBUG}function N3(t){t.inspectOpts={};for(var e=Object.keys(ye.inspectOpts),r=0;r{typeof process=="undefined"||process.type==="renderer"?Ff.exports=aS():Ff.exports=mS()});var yS=d((cj,gS)=>{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))}gS.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 n=this,i=setTimeout(function(){n._attempts++,n._operationTimeoutCb&&(n._timeout=setTimeout(function(){n._operationTimeoutCb(n._attempts)},n._operationTimeout),n._options.unref&&n._timeout.unref()),n._fn(n._attempts)},r);return this._options.unref&&i.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,n=0;n=r&&(e=i,r=o)}return e}});var vS=d(hn=>{var q3=yS();hn.operation=function(t){var e=hn.timeouts(t);return new q3(e,{forever:t&&t.forever,unref:t&&t.unref,maxRetryTime:t&&t.maxRetryTime})};hn.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 n=[],i=0;i{bS.exports=vS()});var wS=d((hj,ES)=>{var j3=qf();function $3(t,e){function r(n,i){var s=e||{};"randomize"in s||(s.randomize=!0);var o=j3.operation(s);function a(l){i(l||new Error("Aborted"))}function u(l,f){if(l.bail){a(l);return}o.retry(l)?s.onRetry&&s.onRetry(l,f):i(o.mainError())}function c(l){var f;try{f=t(a,l)}catch(p){u(p,l);return}Promise.resolve(f).then(n).catch(function(y){u(y,l)})}o.attempt(c)}return new Promise(r)}ES.exports=$3});var RS=d((jf,SS)=>{var M3=wS(),OS=kf()("fetch-retry"),B3=10,U3=5,G3=20,z3=6;SS.exports=jf=H3;function W3(t){return t?t.code==="ERR_UNESCAPED_CHARACTERS"||t.message==="Request path contains unescaped characters":!1}function H3(t){t||(t=ci());async function e(r,n={}){let i=Object.assign({minTimeout:B3,retries:U3,factor:z3,maxRetryAfter:G3},n.retry);n.onRetry&&(i.onRetry=s=>{n.onRetry(s,n),n.retry&&n.retry.onRetry&&n.retry.onRetry(s)});try{return await M3(async(s,o)=>{let{method:a="GET"}=n;try{let u=await t(r,n);if(OS("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>i.maxRetryAfter)return u;await new Promise(l=>setTimeout(l,c*1e3))}throw new pi(u)}else return u}catch(u){let c=W3(u),l=!c&&o<=i.retries;if(OS(`${a} ${r} error (status = ${u.status}). ${l?"retrying":""}`,u),c)return s(u);throw u}},i)}catch(s){if(s instanceof pi)return s.res;throw s}}for(let r of Object.keys(t))e[r]=t[r];return e.default=e,e}var pi=class extends Error{constructor(e){super(e.statusText);Error.captureStackTrace&&Error.captureStackTrace(this,pi),this.name=this.constructor.name,this.res=e,this.code=this.status=this.statusCode=e.status,this.url=e.url}};jf.ResponseError=pi});var CS=d((pj,_S)=>{"use strict";_S.exports=function(t){t.prototype[Symbol.iterator]=function*(){for(let e=this.head;e;e=e.next)yield e.value}}});var LS=d((dj,AS)=>{"use strict";AS.exports=Q;Q.Node=pn;Q.create=Q;function Q(t){var e=this;if(e instanceof Q||(e=new Q),e.tail=null,e.head=null,e.length=0,t&&typeof t.forEach=="function")t.forEach(function(i){e.push(i)});else if(arguments.length>0)for(var r=0,n=arguments.length;r1)r=e;else if(this.head)n=this.head.next,r=this.head.value;else throw new TypeError("Reduce of empty list with no initial value");for(var i=0;n!==null;i++)r=t(r,n.value,i),n=n.next;return r};Q.prototype.reduceReverse=function(t,e){var r,n=this.tail;if(arguments.length>1)r=e;else if(this.tail)n=this.tail.prev,r=this.tail.value;else throw new TypeError("Reduce of empty list with no initial value");for(var i=this.length-1;n!==null;i--)r=t(r,n.value,i),n=n.prev;return r};Q.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};Q.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};Q.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 Q;if(ethis.length&&(e=this.length);for(var n=0,i=this.head;i!==null&&nthis.length&&(e=this.length);for(var n=this.length,i=this.tail;i!==null&&n>e;n--)i=i.prev;for(;i!==null&&n>t;n--,i=i.prev)r.push(i.value);return r};Q.prototype.splice=function(t,e){t>this.length&&(t=this.length-1),t<0&&(t=this.length+t);for(var r=0,n=this.head;n!==null&&r{"use strict";var K3=LS(),dn=Symbol("max"),or=Symbol("length"),di=Symbol("lengthCalculator"),Ss=Symbol("allowStale"),mn=Symbol("maxAge"),ar=Symbol("dispose"),xS=Symbol("noDisposeOnSet"),Ae=Symbol("lruList"),At=Symbol("cache"),NS=Symbol("updateAgeOnGet"),$f=()=>1,IS=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[dn]=e.max||Infinity,n=e.length||$f;if(this[di]=typeof n!="function"?$f:n,this[Ss]=e.stale||!1,e.maxAge&&typeof e.maxAge!="number")throw new TypeError("maxAge must be a number");this[mn]=e.maxAge||0,this[ar]=e.dispose,this[xS]=e.noDisposeOnSet||!1,this[NS]=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[dn]=e||Infinity,Os(this)}get max(){return this[dn]}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[mn]=e,Os(this)}get maxAge(){return this[mn]}set lengthCalculator(e){typeof e!="function"&&(e=$f),e!==this[di]&&(this[di]=e,this[or]=0,this[Ae].forEach(r=>{r.length=this[di](r.value,r.key),this[or]+=r.length})),Os(this)}get lengthCalculator(){return this[di]}get length(){return this[or]}get itemCount(){return this[Ae].length}rforEach(e,r){r=r||this;for(let n=this[Ae].tail;n!==null;){let i=n.prev;DS(this,e,n,r),n=i}}forEach(e,r){r=r||this;for(let n=this[Ae].head;n!==null;){let i=n.next;DS(this,e,n,r),n=i}}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 K3,this[or]=0}dump(){return this[Ae].map(e=>Oa(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,n){if(n=n||this[mn],n&&typeof n!="number")throw new TypeError("maxAge must be a number");let i=n?Date.now():0,s=this[di](r,e);if(this[At].has(e)){if(s>this[dn])return mi(this,this[At].get(e)),!1;let u=this[At].get(e).value;return this[ar]&&(this[xS]||this[ar](e,u.value)),u.now=i,u.maxAge=n,u.value=r,this[or]+=s-u.length,u.length=s,this.get(e),Os(this),!0}let o=new PS(e,r,s,i,n);return o.length>this[dn]?(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!Oa(this,r)}get(e){return Mf(this,e,!0)}peek(e){return Mf(this,e,!1)}pop(){let e=this[Ae].tail;return e?(mi(this,e),e.value):null}del(e){mi(this,this[At].get(e))}load(e){this.reset();let r=Date.now();for(let n=e.length-1;n>=0;n--){let i=e[n],s=i.e||0;if(s===0)this.set(i.k,i.v);else{let o=s-r;o>0&&this.set(i.k,i.v,o)}}}prune(){this[At].forEach((e,r)=>Mf(this,r,!1))}},Mf=(t,e,r)=>{let n=t[At].get(e);if(n){let i=n.value;if(Oa(t,i)){if(mi(t,n),!t[Ss])return}else r&&(t[NS]&&(n.value.now=Date.now()),t[Ae].unshiftNode(n));return i.value}},Oa=(t,e)=>{if(!e||!e.maxAge&&!t[mn])return!1;let r=Date.now()-e.now;return e.maxAge?r>e.maxAge:t[mn]&&r>t[mn]},Os=t=>{if(t[or]>t[dn])for(let e=t[Ae].tail;t[or]>t[dn]&&e!==null;){let r=e.prev;mi(t,e),e=r}},mi=(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)}},PS=class{constructor(e,r,n,i,s){this.key=e,this.value=r,this.length=n,this.now=i,this.maxAge=s||0}},DS=(t,e,r,n)=>{let i=r.value;Oa(t,i)&&(mi(t,r),t[Ss]||(i=void 0)),i&&e.call(n,i.value,i.key,t)};TS.exports=IS});var qS=d((gj,kS)=>{var Z3=qf();function J3(t,e){function r(n,i){var s=e||{},o=Z3.operation(s);function a(l){i(l||new Error("Aborted"))}function u(l,f){if(l.bail){a(l);return}o.retry(l)?s.onRetry&&s.onRetry(l,f):i(o.mainError())}function c(l){var f;try{f=t(a,l)}catch(p){u(p,l);return}Promise.resolve(f).then(n).catch(function(y){u(y,l)})}o.attempt(c)}return new Promise(r)}kS.exports=J3});var jS=d(Bf=>{"use strict";Object.defineProperty(Bf,"__esModule",{value:!0});function Q3(t,e){return new Promise((r,n)=>{e.resolve4(t,{ttl:!0},(i,s)=>{if(i)return n(i);r(s)})})}Bf.default=Q3});var $S=d(Uf=>{"use strict";Object.defineProperty(Uf,"__esModule",{value:!0});function eD(t,e){return new Promise((r,n)=>{e.resolve6(t,{ttl:!0},(i,s)=>{if(i)return n(i);r(s)})})}Uf.default=eD});var HS=d(gi=>{"use strict";var Rs=gi&&gi.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(gi,"__esModule",{value:!0});var tD=Rs(require("dns")),MS=Rs(FS()),rD=Rs(qS()),nD=Rs(jS()),iD=Rs($S()),BS={max:500},US,GS;zS();async function sD(t,e={}){let{ipv6:r=!1,minimumCacheTime:n=300,refreshCache:i=!1,retryOpts:s={minTimeout:10,retries:3,factor:5},resolver:o=tD.default}=e,{cache:a,resolve:u}=r?{cache:GS,resolve:iD.default}:{cache:US,resolve:nD.default};if(i)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)],p=Math.max(f.ttl,n);return a.set(t,f.address,p*1e3),f.address})();return a.set(t,c,5e3),c}gi.default=sD;function zS(){US=new MS.default(BS),GS=new MS.default(BS)}gi.setupCache=zS});var WS=d(Gf=>{"use strict";Object.defineProperty(Gf,"__esModule",{value:!0});var oD=HS();Gf.default=oD.default});var VS=d(YS=>{YS.dnsCachedUrl=Symbol("dnsCachedUrl")});var JS=d((Sj,XS)=>{var{isIP:aD}=require("net"),{format:KS,parse:ZS}=require("url"),uD=WS().default,{dnsCachedUrl:cD}=VS();XS.exports=lD;var fD=t=>(t/100|0)==3;function lD(t){t||(t=ci());let{Headers:e}=t;async function r(n,i){let s=ZS(n),o=s.host;aD(s.hostname)===0&&(i||(i={}),i.headers=new e(i.headers),i.headers.has("Host")||i.headers.set("Host",s.host),i.redirect="manual",s.host=await uD(s.hostname),s.port&&(s.host+=`:${s.port}`),n=KS(s));let u=await t(n,i);if(u[cD]=n,Object.defineProperty(u,"url",{get(){return s.href}}),fD(u.status)){let c=Object.assign({},i);c.headers=new e(i.headers),(u.status===303||(u.status===301||u.status===302)&&i.method==="POST")&&(c.method="GET",c.body=null,c.headers.delete("content-length"));let l=u.headers.get("Location"),f=ZS(l);return f.host===s.host&&(f.host=o),c.headers.set("Host",f.host),i.onRedirect&&i.onRedirect(u,c),r(KS(f),c)}return u}for(let n of Object.keys(t))r[n]=t[n];return r.default=r,r}});var i2=d((Oj,QS)=>{var{parse:hD}=require("url"),e2=tS(),zf=kf()("@vercel/fetch"),pD=RS(),dD=JS(),mD=require("url"),{HttpsAgent:gD}=e2,{URLSearchParams:yD}=mD,vD={maxSockets:200,maxFreeSockets:20,timeout:6e4,freeSocketTimeout:3e4,freeSocketKeepAliveTimeout:3e4},t2,r2;function bD(t){return t2=t2||(zf("init http agent"),new e2(t))}function ED(t){return r2=r2||(zf("init https agent"),new gD(t))}function n2(t,e){return/^https/.test(t)?ED(e):bD(e)}function wD(t,e={}){return async function(n,i={}){i.agent||(i.agent=n2(n,{AGENT_OPTIONS:vD,...e})),i.redirect="manual",i.headers=new t.Headers(i.headers),i.headers.set("host",i.headers.get("host")||hD(n).host),i.body&&!(i.body instanceof yD)&&typeof i.body=="object"&&!Buffer.isBuffer(i.body)&&(i.body=JSON.stringify(i.body),i.headers.set("Content-Type","application/json"),i.headers.set("Content-Length",Buffer.byteLength(i.body))),i.onRedirect=(s,o)=>{o.agent=n2(s.headers.get("Location"))};try{return zf("%s %s",i.method||"GET",n),await t(n,i)}catch(s){throw s.url=n,s.opts=i,s}}}function SD(t,e){t||(t=ci());let r=t.default;if(r&&(t=Object.assign((...n)=>r(...n),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}QS.exports=SD});var l2=d((_j,o2)=>{o2.exports=a2;a2.sync=RD;var u2=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 n=0;n{f2.exports=h2;h2.sync=CD;var p2=require("fs");function h2(t,e,r){p2.stat(t,function(n,i){r(n,n?!1:d2(i,e))})}function CD(t,e){return d2(p2.statSync(t),e)}function d2(t,e){return t.isFile()&&AD(t,e)}function AD(t,e){var r=t.mode,n=t.uid,i=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&&i===o||r&a&&n===s||r&l&&s===0;return f}});var y2=d((Lj,g2)=>{var Aj=require("fs"),Ra;process.platform==="win32"||global.TESTING_WINDOWS?Ra=l2():Ra=m2();g2.exports=Wf;Wf.sync=LD;function Wf(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(n,i){Wf(t,e||{},function(s,o){s?i(s):n(o)})})}Ra(t,e||{},function(n,i){n&&(n.code==="EACCES"||e&&e.ignoreErrors)&&(n=null,i=!1),r(n,i)})}function LD(t,e){try{return Ra.sync(t,e||{})}catch(r){if(e&&e.ignoreErrors||r.code==="EACCES")return!1;throw r}}});var R2=d((Tj,v2)=>{var yi=process.platform==="win32"||process.env.OSTYPE==="cygwin"||process.env.OSTYPE==="msys",b2=require("path"),TD=yi?";":":",E2=y2(),w2=t=>Object.assign(new Error(`not found: ${t}`),{code:"ENOENT"}),S2=(t,e)=>{let r=e.colon||TD,n=t.match(/\//)||yi&&t.match(/\\/)?[""]:[...yi?[process.cwd()]:[],...(e.path||process.env.PATH||"").split(r)],i=yi?e.pathExt||process.env.PATHEXT||".EXE;.CMD;.BAT;.COM":"",s=yi?i.split(r):[""];return yi&&t.indexOf(".")!==-1&&s[0]!==""&&s.unshift(""),{pathEnv:n,pathExt:s,pathExtExe:i}},O2=(t,e,r)=>{typeof e=="function"&&(r=e,e={}),e||(e={});let{pathEnv:n,pathExt:i,pathExtExe:s}=S2(t,e),o=[],a=c=>new Promise((l,f)=>{if(c===n.length)return e.all&&o.length?l(o):f(w2(t));let p=n[c],y=/^".*"$/.test(p)?p.slice(1,-1):p,m=b2.join(y,t),h=!y&&/^\.[\\\/]/.test(t)?t.slice(0,2)+m:m;l(u(h,c,0))}),u=(c,l,f)=>new Promise((p,y)=>{if(f===i.length)return p(a(l+1));let m=i[f];E2(c+m,{pathExt:s},(h,w)=>{if(!h&&w)if(e.all)o.push(c+m);else return p(c+m);return p(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:n,pathExtExe:i}=S2(t,e),s=[];for(let o=0;o{var ND=require("fs"),ID=require("path");function _2(t){console.log(`[dotenv][DEBUG] ${t}`)}var PD=` +`,DD=/^\s*([\w.-]+)\s*=\s*(.*)?\s*$/,FD=/\\n/g,kD=/\n|\r|\r\n/;function C2(t,e){let r=Boolean(e&&e.debug),n={};return t.toString().split(kD).forEach(function(i,s){let o=i.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(),n[a]=u}else r&&_2(`did not match key and value when parsing line ${s+1}: ${i}`)}),n}function qD(t){let e=ID.resolve(process.cwd(),".env"),r="utf8",n=!1;t&&(t.path!=null&&(e=t.path),t.encoding!=null&&(r=t.encoding),t.debug!=null&&(n=!0));try{let i=C2(ND.readFileSync(e,{encoding:r}),{debug:n});return Object.keys(i).forEach(function(s){Object.prototype.hasOwnProperty.call(process.env,s)?n&&_2(`"${s}" is already defined in \`process.env\` and will not be overwritten`):process.env[s]=i[s]}),{parsed:i}}catch(i){return{error:i}}}Yf.exports.config=qD;Yf.exports.parse=C2});var L2=d(()=>{(function(t){typeof define=="function"&&define.amd?define(t):t()})(function(){"use strict";function t(v,R){if(!(v instanceof R))throw new TypeError("Cannot call a class as a function")}function e(v,R){for(var A=0;A{"use strict";var jD=_a&&_a.__awaiter||function(t,e,r,n){return new(r||(r=Promise))(function(i,s){function o(c){try{u(n.next(c))}catch(l){s(l)}}function a(c){try{u(n.throw(c))}catch(l){s(l)}}function u(c){var l;c.done?i(c.value):(l=c.value,l instanceof r?l:new r(function(f){f(l)})).then(o,a)}u((n=n.apply(t,e||[])).next())})};Object.defineProperty(_a,"__esModule",{value:!0}),Promise.any=t=>jD(void 0,void 0,void 0,function*(){return new Promise((e,r)=>{let n=!1,i=0,s=[],o=u=>{n||(n=!0,e(u))},a=u=>{s.push(u),s.length>=i&&r(s)};for(let u of t)if(i++,u.then!==void 0){let c=u;c.then(l=>o(l)),u.catch!==void 0&&c.catch(l=>a(l))}})})});var gn=Te(require("child_process")),Ir=Te(require("fs")),x2=Te(Ih()),N2=Te(bv()),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 bc;function Ev(){return typeof bc=="undefined"&&(bc=mx()),bc}var I2=Te(fE()),P2=Te(xw());var OD=Te(ci()),s2=Te(i2()),Hf=s2.default(OD);var D2=Te(R2()),F2=Te(A2()),Ca=Te(ga());global.fetch=ci();typeof global.AbortController=="undefined"&&L2();var $D=ut.default.join(__dirname,"Search.js"),MD=ut.default.join(__dirname,"registerProtocol.js"),BD=ut.default.join(__dirname,"confirmPrompt.js"),UD=global.AbortController,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,kj=console.log,q2=(...t)=>{ur||console.error(...t)};if(!Ir.default.rmSync){let t=ga();Ir.default.rmSync=(e,r)=>{if(e!=="/"&&e!=="/Applications")return t.sync(e)}}async function j2(t,e){var n;let r=!t||t==="auto"?process.env.EDITOR:t;if(!(r==null?void 0:r.trim().length))for(let i of k2)try{r=await D2.default(i),(r.includes("code")||r.includes("subl"))&&(r='"'+r+'"');break}catch(s){}return(!r||!((n=r==null?void 0:r.trim())==null?void 0:n.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"&&T2();var Ve;(function(t){t[t.childProcessExit=0]="childProcessExit",t[t.downloadComplete=1]="downloadComplete",t[t.confirm=2]="confirm"})(Ve||(Ve={}));var Me={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,n,i,s,o]=e.split("/"),a=`https://${Aa}/repos/${n}/${i}/pulls/${o}`,u=await Xf(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],i,f]}async function WD(t,e){var s;let r=`https://${Aa}/repos/${t}/${e}`,n=await Xf(r);return n.ok||(console.error("Failed to load github url: HTTP ",n.status,` +`,await n.text()),process.exit()),(s=(await n.json()).default_branch)!=null?s:"main"}var vi=!1,Xe;var ue,La={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={}));var Kf=new UD;function Xf(t,e=null){let r=Ev();return r&&!La.headers&&(La.headers={authorization:`Bearer ${r}`}),Hf(t,e?{...La,signal:e.signal}:La)}function M2(){}var Zf=0,B2=!1;function yn(){var e,r;let t=ur;if(ur=!0,!vi&&!cr&&Xe)try{Xe==null||Xe.removeCallback(),Xe=null,vi=!1}catch(n){}if((ue==null?void 0:ue._tar)&&!ue._tar.writableEnded)try{ue._tar.warn=M2,ue._tar.abort()}catch(n){}if((ue==null?void 0:ue.slowTask)&&Me.waitFor!==1&&ue.slowTask.connected)try{ue.slowTask.kill(),ue.slowTask.disconnect()}catch(n){}if(t||Kf.abort(),!cr&&((e=ue==null?void 0:ue.destination)==null?void 0:e.length)&&Zf<10){if(process.platform==="win32")try{Ca.default.sync(ue.destination+"/*/**"),Ca.default.sync(ue.destination)}catch(n){process.env.VERBOSE&&console.error(n)}else try{Ca.default.sync(ue.destination)}catch(n){process.env.VERBOSE&&console.error(n)}if(Ir.default.existsSync(ue.destination)){setTimeout(yn,32),process.env.VERBOSE&&console.log(`Failed to delete, retry attempt #${Zf}/10`),Zf++;return}}!cr&&((r=ue==null?void 0:ue.destination)==null?void 0:r.length)&&!Ir.default.existsSync(ue.destination)&&!B2&&(ue.slowTask=null,ue.log("\u{1F5D1} Deleted repository"),B2=!0),process.emitWarning=M2,process.exit()}process.once("SIGINT",yn);var Cs=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,n,i,s){let o=`https://cdn.jsdelivr.net/gh/${r}/${e}@${i}/${n||"README.md"}`,a=await Hf(o,{redirect:"follow",signal:Kf.signal});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,n,i,s,o){return Promise.any([this._prefetchGithub(e,r,n,i,o),this._prefetchGithub(e,r,n,s,o)])}search(e){let r=process.emitWarning;process.emitWarning=()=>{};let{renderInk:n}=require($D);return process.emitWarning=r,n(e)}async _unzip(e){let r=await Xf(e,Kf);if(r.ok)return r.body;if(r.status===403||r.status===401){let n=`Failed to load git repo: HTTP ${r.status} ${await r.text()} - -If this is a private repo, consider setting $GITHUB_TOKEN. To save $GITHUB_TOKEN, store it in $HOME/.git-peek (a .env file)`;throw console.error(n),n}else throw await r.text()}unzip(e,r,n,i,s){return new Promise((o,a)=>{this.unzipPromise=new Promise(async(u,c)=>{let l=await this.getArchive(`https://${Fa}/repos/${e}/${r}/tarball/${n}`,`https://${Fa}/repos/${e}/${r}/tarball/${i}`);this.log("\u23F3 Extracting repository to temp folder..."),l.pipe(this._tar=X2.default.x({cwd:s,strip:1,"keep-newer-files":!0,noMtime:!0})),l.on("end",()=>{cr||(this.log("\u{1F4BF} Finished downloading repository!"),u(),o())}),l.on("error",f=>{bi||cr||(this.log("\u{1F4BF} Failed to download repository!"),c(f),a(f))})})})}clone(e,r){let n=`git clone --filter=tree:0 --single-branch --depth=1 ${e} ${r}`;return this.log(`Cloning ${e} to temp folder...`),new Promise((i,s)=>{let o=gn.default.exec(n,{});o.stderr.pipe(process.stderr),o.once("close",()=>{i()}),o.once("exit",()=>{i()}),o.once("error",a=>{s(a)})})}parse(){var r,n,i,s,o;return Y2.default(` +If this is a private repo, consider setting $GITHUB_TOKEN. To save $GITHUB_TOKEN, store it in $HOME/.git-peek (a .env file)`;throw console.error(n),n}else throw await r.text()}unzip(e,r,n,i,s){return new Promise((o,a)=>{this.unzipPromise=new Promise(async(u,c)=>{let l=await this.getArchive(`https://${Aa}/repos/${e}/${r}/tarball/${n}`,`https://${Aa}/repos/${e}/${r}/tarball/${i}`);this.log("\u23F3 Extracting repository to temp folder..."),l.pipe(this._tar=I2.default.x({cwd:s,strip:1,"keep-newer-files":!0,noMtime:!0})),l.on("end",()=>{ur||(this.log("\u{1F4BF} Finished downloading repository!"),u(),o())}),l.on("error",f=>{vi||ur||(this.log("\u{1F4BF} Failed to download repository!"),c(f),a(f))})})})}clone(e,r){let n=`git clone --filter=tree:0 --single-branch --depth=1 ${e} ${r}`;return this.log(`Cloning ${e} to temp folder...`),new Promise((i,s)=>{let o=gn.default.exec(n,{});o.stderr.pipe(process.stderr),o.once("close",()=>{i()}),o.once("exit",()=>{i()}),o.once("error",a=>{s(a)})})}parse(){var r,n,i,s,o;return N2.default(` USAGE $ git-peek [git link or github link or search query or repository file path] @@ -50,7 +50,7 @@ EXAMPLES OPTIONS -e, --editor=editor [default: ${((r=process.env.EDITOR)==null?void 0:r.length)?process.env.EDITOR:"auto"}] editor to open with, possible values: - auto, ${Q2.join(", ")}. + auto, ${k2.join(", ")}. By default, it will search $EDITOR. If not found, it will try code, then subl, then vim. @@ -84,16 +84,16 @@ ENVIRONMENT VARIABLES: $GITHUB_TOKEN: ${((i=process.env.GITHUB_TOKEN)==null?void 0:i.length)?new Array(process.env.GITHUB_TOKEN.length).fill("*").join(""):"not set"} $GITHUB_BASE_DOMAIN: ${((s=process.env.GITHUB_BASE_DOMAIN)==null?void 0:s.length)?process.env.GITHUB_BASE_DOMAIN:"not set"} $GITHUB_API_DOMAIN: ${((o=process.env.GITHUB_API_DOMAIN)==null?void 0:o.length)?process.env.GITHUB_API_DOMAIN:"not set"} - .env: ${rO?"\u2705":"\u274C"} ${ih} + .env: ${$2?"\u2705":"\u274C"} ${Vf} For use with private GitHub repositories, set $GITHUB_TOKEN to a personal access token. To persist it, store it in your shell or the .env shown above. For use with GitHub Enterprise, set $GITHUB_BASE_DOMAIN and $GITHUB_API_DOMAIN to the appropriate URLs. -`.trim(),{flags:{fromscript:{type:"boolean",default:!1},register:{type:"boolean",default:!1,alias:"r",description:"Register protocol handler"},confirm:{type:"boolean",default:!1,alias:"c",description:"Confirm before deleting"},out:{type:"string",default:"",alias:"o",description:"Parent directory to store the repository in. Defaults to system temp folder."},branch:{type:"string",default:"",alias:"b",description:"branch/ref to use when fetching"},defaultBranch:{type:"boolean",default:!1,alias:"d",description:"Check default branch"},keep:{type:"boolean",default:!1,alias:"k",description:"Don't delete the repository on exit."},wait:{type:"boolean",default:!1,alias:"w",description:"Wait for the repository to completely download before opening. Defaults to false, unless its vim. Then its always true."},help:{type:"boolean",default:!1,alias:"h",isRequired:!1},version:{type:"boolean",default:!1,alias:"v",isRequired:!1},editor:{type:"string",isMultiple:!1,isRequired:!1,default:"auto",alias:"e",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."}}})}async getArchive(e,r){let n;try{n=await this._unzip(e)}catch(i){try{this.didUseFallback=!0,n=await this._unzip(r)}catch(s){if(cr)return;console.error(`Invalid repository link. Tried: +`.trim(),{flags:{fromscript:{type:"boolean",default:!1},register:{type:"boolean",default:!1,alias:"r",description:"Register protocol handler"},confirm:{type:"boolean",default:!1,alias:"c",description:"Confirm before deleting"},out:{type:"string",default:"",alias:"o",description:"Parent directory to store the repository in. Defaults to system temp folder."},branch:{type:"string",default:"",alias:"b",description:"branch/ref to use when fetching"},defaultBranch:{type:"boolean",default:!1,alias:"d",description:"Check default branch"},keep:{type:"boolean",default:!1,alias:"k",description:"Don't delete the repository on exit."},wait:{type:"boolean",default:!1,alias:"w",description:"Wait for the repository to completely download before opening. Defaults to false, unless its vim. Then its always true."},help:{type:"boolean",default:!1,alias:"h",isRequired:!1},version:{type:"boolean",default:!1,alias:"v",isRequired:!1},editor:{type:"string",isMultiple:!1,isRequired:!1,default:"auto",alias:"e",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."}}})}async getArchive(e,r){let n;try{n=await this._unzip(e)}catch(i){try{this.didUseFallback=!0,n=await this._unzip(r)}catch(s){if(ur)return;console.error(`Invalid repository link. Tried: - ${e} -- ${r}`),yn(),process.exit()}}return this.archive=n,n}async run(){var x,V,j;let e=this.parse(),{help:r,version:n,out:i,branch:s,defaultBranch:o,register:a}=e.flags;lr=e.flags.keep,e.flags.fromscript&&((x=process.env.SAY_DEBUG)==null?void 0:x.length)&&process.platform==="darwin"&&(console.log=(...P)=>gn.default.exec(`say -v "Samantha" "${P.join(" ")}"`)),r&&(e.showHelp(0),process.exit(0)),n&&(e.showVersion(),process.exit(0));let{flags:{editor:u="auto"}}=e;if(a){await require(l5).register(await tO(u,!1));return}let c=(j=(V=e.input[0])==null?void 0:V.trim())!=null?j:"";c.includes("git-peek://")&&(c=c.replace("git-peek://","").trim());let l,f=!1;if(!c.includes("://")&&c.split("/").length===2){let[P,z]=c.split("/");z.trim().length?c=`https://${xs}/${P}/${z}`:f=!0}for(f||(f=!c||!c.includes("/")||c.includes(" "));!l;){f&&(c=await this.search(c),f=!c||!c.includes("/")||c.includes(" "));try{l=V2.default(c)}catch(P){try{c=await this.search(c),f=!c||!c.includes("/")||c.includes(" ")}catch(z){this.log(z)}}}let p=l.ref;if(l.resource===xs&&(s==="default"||o||s===""&&e.flags.fromscript)?p=await g5(l.owner,l.name):s!==""?p=s:p||(p="master"),c&&c.length&&d5(c)){let[P,z,S]=await m5(c);l.name=z,l.owner=P,p=S}let y=new Date().getTime(),m=l.name+"@"+p;Ye=K2.default.dirSync((i==null?void 0:i.length)?{unsafeCleanup:!0,keep:lr,prefix:m,postfix:e.flags.keep?"":"-peekautodelete",tmpdir:ut.default.resolve(process.cwd(),i)}:{unsafeCleanup:!0,keep:lr,prefix:m,postfix:e.flags.keep?"":"-peekautodelete"}),this.destination=Ye.name,bi=!1,process.once("beforeExit",yn),process.once("SIGABRT",yn),process.once("SIGQUIT",yn);let h=l.filepath,E=!h;E&&(h="README.md");let O=ut.default.join(Ye.name,h);if(l.resource===xs){let P=p==="main"?"master":"main";await Promise.any([this.prefetchGithub(l.name,l.owner,h,p,P,O),this.unzip(l.owner,l.name,p,P,Ye.name)])}else await this.clone(l.href,Ye.name);let A=await tO(u,!1),q=[];if(this.editorMode=0,A.includes("code")?($e.confirm=e.flags.confirm,$e.waitFor=0,A=A.replace("--wait","","-w","").trim(),this.editorMode=1,q.push("-w","-n"),h&&q.push(`-g "${ut.default.resolve(O)}":0:0`)):A.includes("subl")?(e.flags.fromscript?$e.waitFor=1:$e.waitFor=2,lr=!0,this.editorMode=2,A=A.replace("--wait","","-w","").trim(),q.push("-n"),h&&q.push(`"${ut.default.resolve(O)}":0:0`)):A.includes("vi")?(this.editorMode=3,$e.confirm=e.flags.confirm,$e.waitFor=0):e.flags.fromscript?($e.waitFor=1,$e.confirm=e.flags.confirm):($e.waitFor=2,$e.confirm=e.flags.confirm),(this.editorMode===3&&E||e.flags.wait)&&this.unzipPromise&&(await this.unzipPromise,this.unzipPromise=Promise.resolve(!0)),await new Promise((P,z)=>{if(this.editorMode===3){let F=function(){var M,k;S||(((M=process==null?void 0:process.stdin)==null?void 0:M.setRawMode)&&process.stdin.setRawMode(!1),((k=process==null?void 0:process.stdin)==null?void 0:k.resume)&&process.stdin.resume(),P(),S=!0)};process.stdin.setRawMode(!0),process.stdin.pause(),this.slowTask=gn.default.spawn(A,[E?Ye.name:h,...q],{env:process.env,stdio:"inherit",detached:!1,cwd:Ye.name});let S=!1;this.slowTask.once("close",F),this.slowTask.once("exit",F),this.slowTask.once("error",F)}else{this.log(`\u{1F4BB} Launched editor in ${((new Date().getTime()-y)/1e3).toFixed(2)}s`);let S=`${A} "${ut.default.join(Ye.name)}" ${q.join(" ")}`.trim(),F=!1,M=process.platform==="win32"?ut.default.join(Ye.name,"../"):Ye.anme;if(e.flags.fromscript&&process.platform==="win32"?this.slowTask=gn.default.spawn(S,{env:process.env,shell:!0,windowsHide:!0,stdio:"ignore",detached:!1,cwd:M}):e.flags.fromscript&&process.platform==="darwin"?this.slowTask=gn.default.spawn(S,{env:process.env,shell:!0,windowsHide:!0,stdio:"pipe",detached:!0,cwd:M}):this.slowTask=gn.default.spawn(S,{env:process.env,shell:!0,windowsHide:!0,stdio:$e.waitFor!==0?"ignore":"inherit",detached:$e.waitFor===0,cwd:M}),$e.waitFor===1)e.flags.fromscript&&process.platform==="win32"?(this.slowTask.unref(),this.slowTask=null,this.unzipPromise.then(()=>P(),()=>P())):this.unzipPromise.then(()=>P(),()=>P());else{let k=function(){var U,he;F||(((U=process==null?void 0:process.stdin)==null?void 0:U.setRawMode)&&process.stdin.setRawMode(!1),((he=process==null?void 0:process.stdin)==null?void 0:he.resume)&&process.stdin.resume(),P())};this.slowTask.once("exit",k),this.slowTask.once("error",z),this.slowTask.once("close",k),this.slowTask.once("disconnect",k)}}}),(lr||$e.waitFor===1)&&(bi=!0),!e.flags.keep&&$e.waitFor===2){let P=process.emitWarning;process.emitWarning=()=>{};let{renderConfirm:z}=require(f5);process.emitWarning=P,lr=bi=!await z()}yn()}};Ns.description="Quickly open a remote Git repository with your local text editor into a temporary folder.",Ns.usage="[git link or github link]",Ns.args=[{name:"url"}];process.on("unhandledRejection",eO);process.on("unhandledException",eO);rO&&J2.default.config({path:ih});var xs=process.env.GITHUB_BASE_DOMAIN||"github.com",Fa=process.env.GITHUB_API_DOMAIN||"api.github.com";oe=new Ns;oe.run(); +- ${r}`),yn(),process.exit()}}return this.archive=n,n}async run(){var _,F,x;let e=this.parse(),{help:r,version:n,out:i,branch:s,defaultBranch:o,register:a}=e.flags;cr=e.flags.keep,e.flags.fromscript&&((_=process.env.SAY_DEBUG)==null?void 0:_.length)&&process.platform==="darwin"&&(console.log=(...N)=>gn.default.exec(`say -v "Samantha" "${N.join(" ")}"`)),r&&(e.showHelp(0),process.exit(0)),n&&(e.showVersion(),process.exit(0));let{flags:{editor:u="auto"}}=e;if(a){await require(MD).register(await j2(u,!1));return}let c=(x=(F=e.input[0])==null?void 0:F.trim())!=null?x:"";c.includes("git-peek://")&&(c=c.replace("git-peek://","").trim());let l,f=!1;if(!c.includes("://")&&c.split("/").length===2){let[N,M]=c.split("/");M.trim().length?c=`https://${_s}/${N}/${M}`:f=!0}for(f||(f=!c||!c.includes("/")||c.includes(" "));!l;){f&&(c=await this.search(c),f=!c||!c.includes("/")||c.includes(" "));try{l=x2.default(c)}catch(N){try{c=await this.search(c),f=!c||!c.includes("/")||c.includes(" ")}catch(M){this.log(M)}}}let p=l.ref;if(l.resource===_s&&(s==="default"||o||s===""&&e.flags.fromscript)?p=await WD(l.owner,l.name):s!==""?p=s:p||(p="master"),c&&c.length&&zD(c)){let[N,M,O]=await HD(c);l.name=M,l.owner=N,p=O}let y=new Date().getTime(),m=l.name+"@"+p;Xe=P2.default.dirSync((i==null?void 0:i.length)?{unsafeCleanup:!0,keep:cr,prefix:m,postfix:e.flags.keep?"":"-peekautodelete",tmpdir:ut.default.resolve(process.cwd(),i)}:{unsafeCleanup:!0,keep:cr,prefix:m,postfix:e.flags.keep?"":"-peekautodelete"}),this.destination=Xe.name,vi=!1,process.once("beforeExit",yn),process.once("SIGABRT",yn),process.once("SIGQUIT",yn);let h=l.filepath,w=!h;w&&(h="README.md");let v=ut.default.join(Xe.name,h);if(l.resource===_s){let N=p==="main"?"master":"main";await Promise.any([this.prefetchGithub(l.name,l.owner,h,p,N,v),this.unzip(l.owner,l.name,p,N,Xe.name)])}else await this.clone(l.href,Xe.name);let R=await j2(u,!1),A=[];if(this.editorMode=0,R.includes("code")?(Me.confirm=e.flags.confirm,Me.waitFor=0,R=R.replace("--wait","","-w","").trim(),this.editorMode=1,A.push("-w","-n"),h&&A.push(`-g "${ut.default.resolve(v)}":0:0`)):R.includes("subl")?(e.flags.fromscript?Me.waitFor=1:Me.waitFor=2,cr=!0,this.editorMode=2,R=R.replace("--wait","","-w","").trim(),A.push("-n"),h&&A.push(`"${ut.default.resolve(v)}":0:0`)):R.includes("vi")?(this.editorMode=3,Me.confirm=e.flags.confirm,Me.waitFor=0):e.flags.fromscript?(Me.waitFor=1,Me.confirm=e.flags.confirm):(Me.waitFor=2,Me.confirm=e.flags.confirm),(this.editorMode===3&&w||e.flags.wait)&&this.unzipPromise&&(await this.unzipPromise,this.unzipPromise=Promise.resolve(!0)),await new Promise((N,M)=>{if(this.editorMode===3){let q=function(){var G,$;O||(((G=process==null?void 0:process.stdin)==null?void 0:G.setRawMode)&&process.stdin.setRawMode(!1),(($=process==null?void 0:process.stdin)==null?void 0:$.resume)&&process.stdin.resume(),N(),O=!0)};process.stdin.setRawMode(!0),process.stdin.pause(),this.slowTask=gn.default.spawn(R,[w?Xe.name:h,...A],{env:process.env,stdio:"inherit",detached:!1,cwd:Xe.name});let O=!1;this.slowTask.once("close",q),this.slowTask.once("exit",q),this.slowTask.once("error",q)}else{this.log(`\u{1F4BB} Launched editor in ${((new Date().getTime()-y)/1e3).toFixed(2)}s`);let O=`${R} "${ut.default.join(Xe.name)}" ${A.join(" ")}`.trim(),q=!1,G=process.platform==="win32"?ut.default.join(Xe.name,"../"):Xe.anme;if(e.flags.fromscript&&process.platform==="win32"?this.slowTask=gn.default.spawn(O,{env:process.env,shell:!0,windowsHide:!0,stdio:"ignore",detached:!1,cwd:G}):e.flags.fromscript&&process.platform==="darwin"?this.slowTask=gn.default.spawn(O,{env:process.env,shell:!0,windowsHide:!0,stdio:"pipe",detached:!0,cwd:G}):this.slowTask=gn.default.spawn(O,{env:process.env,shell:!0,windowsHide:!0,stdio:Me.waitFor!==0?"ignore":"inherit",detached:Me.waitFor===0,cwd:G}),Me.waitFor===1)e.flags.fromscript&&process.platform==="win32"?(this.slowTask.unref(),this.slowTask=null,this.unzipPromise.then(()=>N(),()=>N())):this.unzipPromise.then(()=>N(),()=>N());else{let $=function(){var B,V;q||(((B=process==null?void 0:process.stdin)==null?void 0:B.setRawMode)&&process.stdin.setRawMode(!1),((V=process==null?void 0:process.stdin)==null?void 0:V.resume)&&process.stdin.resume(),N())};this.slowTask.once("exit",$),this.slowTask.once("error",M),this.slowTask.once("close",$),this.slowTask.once("disconnect",$)}}}),(cr||Me.waitFor===1)&&(vi=!0),!e.flags.keep&&Me.waitFor===2){let N=process.emitWarning;process.emitWarning=()=>{};let{renderConfirm:M}=require(BD);process.emitWarning=N,cr=vi=!await M()}yn()}};Cs.description="Quickly open a remote Git repository with your local text editor into a temporary folder.",Cs.usage="[git link or github link]",Cs.args=[{name:"url"}];process.on("unhandledRejection",q2);process.on("unhandledException",q2);$2&&F2.default.config({path:Vf});var _s=process.env.GITHUB_BASE_DOMAIN||"github.com",Aa=process.env.GITHUB_API_DOMAIN||"api.github.com";ue=new Cs;ue.run(); /*! * Tmp * diff --git a/bin/git-peek.map b/bin/git-peek.map index 3041bfc..508c2b9 100644 --- a/bin/git-peek.map +++ b/bin/git-peek.map @@ -1,7 +1,7 @@ { "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/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/mkdirp@1.0.4/node_modules/mkdirp/lib/opts-arg.js", "../node_modules/.pnpm/mkdirp@1.0.4/node_modules/mkdirp/lib/path-arg.js", "../node_modules/.pnpm/mkdirp@1.0.4/node_modules/mkdirp/lib/find-made.js", "../node_modules/.pnpm/mkdirp@1.0.4/node_modules/mkdirp/lib/mkdirp-manual.js", "../node_modules/.pnpm/mkdirp@1.0.4/node_modules/mkdirp/lib/mkdirp-native.js", "../node_modules/.pnpm/mkdirp@1.0.4/node_modules/mkdirp/lib/use-native.js", "../node_modules/.pnpm/mkdirp@1.0.4/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/abort-controller@3.0.0/node_modules/abort-controller/src/abort-signal.ts", "../node_modules/.pnpm/abort-controller@3.0.0/node_modules/abort-controller/src/abort-controller.ts", "../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", "../node_modules/.pnpm/event-target-shim@5.0.1/node_modules/event-target-shim/src/event.mjs", "../node_modules/.pnpm/event-target-shim@5.0.1/node_modules/event-target-shim/src/event-target.mjs"], - "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'\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", "import {\n // Event,\n EventTarget,\n // Type,\n defineEventAttribute,\n} from \"event-target-shim\"\n\n// Known Limitation\n// Use `any` because the type of `AbortSignal` in `lib.dom.d.ts` is wrong and\n// to make assignable our `AbortSignal` into that.\n// https://github.com/Microsoft/TSJS-lib-generator/pull/623\ntype Events = {\n abort: any // Event & Type<\"abort\">\n}\ntype EventAttributes = {\n onabort: any // Event & Type<\"abort\">\n}\n\n/**\n * The signal class.\n * @see https://dom.spec.whatwg.org/#abortsignal\n */\nexport default class AbortSignal extends EventTarget {\n /**\n * AbortSignal cannot be constructed directly.\n */\n public constructor() {\n super()\n throw new TypeError(\"AbortSignal cannot be constructed directly\")\n }\n\n /**\n * Returns `true` if this `AbortSignal`'s `AbortController` has signaled to abort, and `false` otherwise.\n */\n public get aborted(): boolean {\n const aborted = abortedFlags.get(this)\n if (typeof aborted !== \"boolean\") {\n throw new TypeError(\n `Expected 'this' to be an 'AbortSignal' object, but got ${\n this === null ? \"null\" : typeof this\n }`,\n )\n }\n return aborted\n }\n}\ndefineEventAttribute(AbortSignal.prototype, \"abort\")\n\n/**\n * Create an AbortSignal object.\n */\nexport function createAbortSignal(): AbortSignal {\n const signal = Object.create(AbortSignal.prototype)\n EventTarget.call(signal)\n abortedFlags.set(signal, false)\n return signal\n}\n\n/**\n * Abort a given signal.\n */\nexport function abortSignal(signal: AbortSignal): void {\n if (abortedFlags.get(signal) !== false) {\n return\n }\n\n abortedFlags.set(signal, true)\n signal.dispatchEvent<\"abort\">({ type: \"abort\" })\n}\n\n/**\n * Aborted flag for each instances.\n */\nconst abortedFlags = new WeakMap()\n\n// Properties should be enumerable.\nObject.defineProperties(AbortSignal.prototype, {\n aborted: { enumerable: true },\n})\n\n// `toString()` should return `\"[object AbortSignal]\"`\nif (typeof Symbol === \"function\" && typeof Symbol.toStringTag === \"symbol\") {\n Object.defineProperty(AbortSignal.prototype, Symbol.toStringTag, {\n configurable: true,\n value: \"AbortSignal\",\n })\n}\n", "import AbortSignal, { abortSignal, createAbortSignal } from \"./abort-signal\"\n\n/**\n * The AbortController.\n * @see https://dom.spec.whatwg.org/#abortcontroller\n */\nexport default class AbortController {\n /**\n * Initialize this controller.\n */\n public constructor() {\n signals.set(this, createAbortSignal())\n }\n\n /**\n * Returns the `AbortSignal` object associated with this object.\n */\n public get signal(): AbortSignal {\n return getSignal(this)\n }\n\n /**\n * Abort and signal to any observers that the associated activity is to be aborted.\n */\n public abort(): void {\n abortSignal(getSignal(this))\n }\n}\n\n/**\n * Associated signals.\n */\nconst signals = new WeakMap()\n\n/**\n * Get the associated signal of a given controller.\n */\nfunction getSignal(controller: AbortController): AbortSignal {\n const signal = signals.get(controller)\n if (signal == null) {\n throw new TypeError(\n `Expected 'this' to be an 'AbortController' object, but got ${\n controller === null ? \"null\" : typeof controller\n }`,\n )\n }\n return signal\n}\n\n// Properties should be enumerable.\nObject.defineProperties(AbortController.prototype, {\n signal: { enumerable: true },\n abort: { enumerable: true },\n})\n\nif (typeof Symbol === \"function\" && typeof Symbol.toStringTag === \"symbol\") {\n Object.defineProperty(AbortController.prototype, Symbol.toStringTag, {\n configurable: true,\n value: \"AbortController\",\n })\n}\n\nexport { AbortController, AbortSignal }\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\nif (typeof global.AbortController === \"undefined\") {\n global.AbortController = require(\"abort-controller\").AbortController;\n global.AbortSignal = require(\"abort-controller\").AbortSignal;\n}\n\n// This is to trick esbuild into code splitting these files\nconst SEARCH_PATH = path.join(__dirname, \"Search.js\");\nconst REGISTER_PROTOCOL_PATH = path.join(__dirname, \"registerProtocol.js\");\nconst CONFIRM_PROMPT_PATH = path.join(__dirname, \"confirmPrompt.js\");\n\nconst 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\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\nlet aborter = new AbortController();\n\nfunction githubFetch(url, _aborter: AbortController = null) {\n const token = findGitHubToken();\n if (token && !followRedirect.headers) {\n followRedirect.headers = { authorization: `Bearer ${token}` };\n }\n return fetch(\n url,\n _aborter\n ? {\n ...followRedirect,\n signal: _aborter.signal,\n }\n : followRedirect\n );\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 (!wasExiting) aborter.abort();\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, aborter);\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 unzip(owner, name, ref, fallback, to: string) {\n return new Promise((resolve2, reject2) => {\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\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 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 cli.showVersion();\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 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 (branch === \"\" && 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 const [newOwner, newName, newRef] = await resolveRefFromPullRequest(url);\n link.name = newName;\n link.owner = newOwner;\n ref = newRef;\n }\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\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 await Promise.any([\n this.prefetchGithub(\n link.name,\n link.owner,\n specificFile,\n ref,\n fallback,\n openPath\n ),\n this.unzip(link.owner, link.name, ref, fallback, tmpobj.name),\n ]);\n } else {\n await this.clone(link.href, tmpobj.name);\n }\n\n let chosenEditor = await fetchEditor(_editor, false);\n\n let editorSpecificCommands = [];\n\n // console.log(path.join(tmpobj.name, specificFile));\n\n this.editorMode = EditorMode.unknown;\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\";\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", "/**\n * @typedef {object} PrivateData\n * @property {EventTarget} eventTarget The event target.\n * @property {{type:string}} event The original event object.\n * @property {number} eventPhase The current event phase.\n * @property {EventTarget|null} currentTarget The current event target.\n * @property {boolean} canceled The flag to prevent default.\n * @property {boolean} stopped The flag to stop propagation.\n * @property {boolean} immediateStopped The flag to stop propagation immediately.\n * @property {Function|null} passiveListener The listener if the current listener is passive. Otherwise this is null.\n * @property {number} timeStamp The unix time.\n * @private\n */\n\n/**\n * Private data for event wrappers.\n * @type {WeakMap}\n * @private\n */\nconst privateData = new WeakMap()\n\n/**\n * Cache for wrapper classes.\n * @type {WeakMap}\n * @private\n */\nconst wrappers = new WeakMap()\n\n/**\n * Get private data.\n * @param {Event} event The event object to get private data.\n * @returns {PrivateData} The private data of the event.\n * @private\n */\nfunction pd(event) {\n const retv = privateData.get(event)\n console.assert(\n retv != null,\n \"'this' is expected an Event object, but got\",\n event\n )\n return retv\n}\n\n/**\n * https://dom.spec.whatwg.org/#set-the-canceled-flag\n * @param data {PrivateData} private data.\n */\nfunction setCancelFlag(data) {\n if (data.passiveListener != null) {\n if (\n typeof console !== \"undefined\" &&\n typeof console.error === \"function\"\n ) {\n console.error(\n \"Unable to preventDefault inside passive event listener invocation.\",\n data.passiveListener\n )\n }\n return\n }\n if (!data.event.cancelable) {\n return\n }\n\n data.canceled = true\n if (typeof data.event.preventDefault === \"function\") {\n data.event.preventDefault()\n }\n}\n\n/**\n * @see https://dom.spec.whatwg.org/#interface-event\n * @private\n */\n/**\n * The event wrapper.\n * @constructor\n * @param {EventTarget} eventTarget The event target of this dispatching.\n * @param {Event|{type:string}} event The original event to wrap.\n */\nfunction Event(eventTarget, event) {\n privateData.set(this, {\n eventTarget,\n event,\n eventPhase: 2,\n currentTarget: eventTarget,\n canceled: false,\n stopped: false,\n immediateStopped: false,\n passiveListener: null,\n timeStamp: event.timeStamp || Date.now(),\n })\n\n // https://heycam.github.io/webidl/#Unforgeable\n Object.defineProperty(this, \"isTrusted\", { value: false, enumerable: true })\n\n // Define accessors\n const keys = Object.keys(event)\n for (let i = 0; i < keys.length; ++i) {\n const key = keys[i]\n if (!(key in this)) {\n Object.defineProperty(this, key, defineRedirectDescriptor(key))\n }\n }\n}\n\n// Should be enumerable, but class methods are not enumerable.\nEvent.prototype = {\n /**\n * The type of this event.\n * @type {string}\n */\n get type() {\n return pd(this).event.type\n },\n\n /**\n * The target of this event.\n * @type {EventTarget}\n */\n get target() {\n return pd(this).eventTarget\n },\n\n /**\n * The target of this event.\n * @type {EventTarget}\n */\n get currentTarget() {\n return pd(this).currentTarget\n },\n\n /**\n * @returns {EventTarget[]} The composed path of this event.\n */\n composedPath() {\n const currentTarget = pd(this).currentTarget\n if (currentTarget == null) {\n return []\n }\n return [currentTarget]\n },\n\n /**\n * Constant of NONE.\n * @type {number}\n */\n get NONE() {\n return 0\n },\n\n /**\n * Constant of CAPTURING_PHASE.\n * @type {number}\n */\n get CAPTURING_PHASE() {\n return 1\n },\n\n /**\n * Constant of AT_TARGET.\n * @type {number}\n */\n get AT_TARGET() {\n return 2\n },\n\n /**\n * Constant of BUBBLING_PHASE.\n * @type {number}\n */\n get BUBBLING_PHASE() {\n return 3\n },\n\n /**\n * The target of this event.\n * @type {number}\n */\n get eventPhase() {\n return pd(this).eventPhase\n },\n\n /**\n * Stop event bubbling.\n * @returns {void}\n */\n stopPropagation() {\n const data = pd(this)\n\n data.stopped = true\n if (typeof data.event.stopPropagation === \"function\") {\n data.event.stopPropagation()\n }\n },\n\n /**\n * Stop event bubbling.\n * @returns {void}\n */\n stopImmediatePropagation() {\n const data = pd(this)\n\n data.stopped = true\n data.immediateStopped = true\n if (typeof data.event.stopImmediatePropagation === \"function\") {\n data.event.stopImmediatePropagation()\n }\n },\n\n /**\n * The flag to be bubbling.\n * @type {boolean}\n */\n get bubbles() {\n return Boolean(pd(this).event.bubbles)\n },\n\n /**\n * The flag to be cancelable.\n * @type {boolean}\n */\n get cancelable() {\n return Boolean(pd(this).event.cancelable)\n },\n\n /**\n * Cancel this event.\n * @returns {void}\n */\n preventDefault() {\n setCancelFlag(pd(this))\n },\n\n /**\n * The flag to indicate cancellation state.\n * @type {boolean}\n */\n get defaultPrevented() {\n return pd(this).canceled\n },\n\n /**\n * The flag to be composed.\n * @type {boolean}\n */\n get composed() {\n return Boolean(pd(this).event.composed)\n },\n\n /**\n * The unix time of this event.\n * @type {number}\n */\n get timeStamp() {\n return pd(this).timeStamp\n },\n\n /**\n * The target of this event.\n * @type {EventTarget}\n * @deprecated\n */\n get srcElement() {\n return pd(this).eventTarget\n },\n\n /**\n * The flag to stop event bubbling.\n * @type {boolean}\n * @deprecated\n */\n get cancelBubble() {\n return pd(this).stopped\n },\n set cancelBubble(value) {\n if (!value) {\n return\n }\n const data = pd(this)\n\n data.stopped = true\n if (typeof data.event.cancelBubble === \"boolean\") {\n data.event.cancelBubble = true\n }\n },\n\n /**\n * The flag to indicate cancellation state.\n * @type {boolean}\n * @deprecated\n */\n get returnValue() {\n return !pd(this).canceled\n },\n set returnValue(value) {\n if (!value) {\n setCancelFlag(pd(this))\n }\n },\n\n /**\n * Initialize this event object. But do nothing under event dispatching.\n * @param {string} type The event type.\n * @param {boolean} [bubbles=false] The flag to be possible to bubble up.\n * @param {boolean} [cancelable=false] The flag to be possible to cancel.\n * @deprecated\n */\n initEvent() {\n // Do nothing.\n },\n}\n\n// `constructor` is not enumerable.\nObject.defineProperty(Event.prototype, \"constructor\", {\n value: Event,\n configurable: true,\n writable: true,\n})\n\n// Ensure `event instanceof window.Event` is `true`.\nif (typeof window !== \"undefined\" && typeof window.Event !== \"undefined\") {\n Object.setPrototypeOf(Event.prototype, window.Event.prototype)\n\n // Make association for wrappers.\n wrappers.set(window.Event.prototype, Event)\n}\n\n/**\n * Get the property descriptor to redirect a given property.\n * @param {string} key Property name to define property descriptor.\n * @returns {PropertyDescriptor} The property descriptor to redirect the property.\n * @private\n */\nfunction defineRedirectDescriptor(key) {\n return {\n get() {\n return pd(this).event[key]\n },\n set(value) {\n pd(this).event[key] = value\n },\n configurable: true,\n enumerable: true,\n }\n}\n\n/**\n * Get the property descriptor to call a given method property.\n * @param {string} key Property name to define property descriptor.\n * @returns {PropertyDescriptor} The property descriptor to call the method property.\n * @private\n */\nfunction defineCallDescriptor(key) {\n return {\n value() {\n const event = pd(this).event\n return event[key].apply(event, arguments)\n },\n configurable: true,\n enumerable: true,\n }\n}\n\n/**\n * Define new wrapper class.\n * @param {Function} BaseEvent The base wrapper class.\n * @param {Object} proto The prototype of the original event.\n * @returns {Function} The defined wrapper class.\n * @private\n */\nfunction defineWrapper(BaseEvent, proto) {\n const keys = Object.keys(proto)\n if (keys.length === 0) {\n return BaseEvent\n }\n\n /** CustomEvent */\n function CustomEvent(eventTarget, event) {\n BaseEvent.call(this, eventTarget, event)\n }\n\n CustomEvent.prototype = Object.create(BaseEvent.prototype, {\n constructor: { value: CustomEvent, configurable: true, writable: true },\n })\n\n // Define accessors.\n for (let i = 0; i < keys.length; ++i) {\n const key = keys[i]\n if (!(key in BaseEvent.prototype)) {\n const descriptor = Object.getOwnPropertyDescriptor(proto, key)\n const isFunc = typeof descriptor.value === \"function\"\n Object.defineProperty(\n CustomEvent.prototype,\n key,\n isFunc\n ? defineCallDescriptor(key)\n : defineRedirectDescriptor(key)\n )\n }\n }\n\n return CustomEvent\n}\n\n/**\n * Get the wrapper class of a given prototype.\n * @param {Object} proto The prototype of the original event to get its wrapper.\n * @returns {Function} The wrapper class.\n * @private\n */\nfunction getWrapper(proto) {\n if (proto == null || proto === Object.prototype) {\n return Event\n }\n\n let wrapper = wrappers.get(proto)\n if (wrapper == null) {\n wrapper = defineWrapper(getWrapper(Object.getPrototypeOf(proto)), proto)\n wrappers.set(proto, wrapper)\n }\n return wrapper\n}\n\n/**\n * Wrap a given event to management a dispatching.\n * @param {EventTarget} eventTarget The event target of this dispatching.\n * @param {Object} event The event to wrap.\n * @returns {Event} The wrapper instance.\n * @private\n */\nexport function wrapEvent(eventTarget, event) {\n const Wrapper = getWrapper(Object.getPrototypeOf(event))\n return new Wrapper(eventTarget, event)\n}\n\n/**\n * Get the immediateStopped flag of a given event.\n * @param {Event} event The event to get.\n * @returns {boolean} The flag to stop propagation immediately.\n * @private\n */\nexport function isStopped(event) {\n return pd(event).immediateStopped\n}\n\n/**\n * Set the current event phase of a given event.\n * @param {Event} event The event to set current target.\n * @param {number} eventPhase New event phase.\n * @returns {void}\n * @private\n */\nexport function setEventPhase(event, eventPhase) {\n pd(event).eventPhase = eventPhase\n}\n\n/**\n * Set the current target of a given event.\n * @param {Event} event The event to set current target.\n * @param {EventTarget|null} currentTarget New current target.\n * @returns {void}\n * @private\n */\nexport function setCurrentTarget(event, currentTarget) {\n pd(event).currentTarget = currentTarget\n}\n\n/**\n * Set a passive listener of a given event.\n * @param {Event} event The event to set current target.\n * @param {Function|null} passiveListener New passive listener.\n * @returns {void}\n * @private\n */\nexport function setPassiveListener(event, passiveListener) {\n pd(event).passiveListener = passiveListener\n}\n", "import {\n isStopped,\n setCurrentTarget,\n setEventPhase,\n setPassiveListener,\n wrapEvent,\n} from \"./event.mjs\"\n\n/**\n * @typedef {object} ListenerNode\n * @property {Function} listener\n * @property {1|2|3} listenerType\n * @property {boolean} passive\n * @property {boolean} once\n * @property {ListenerNode|null} next\n * @private\n */\n\n/**\n * @type {WeakMap>}\n * @private\n */\nconst listenersMap = new WeakMap()\n\n// Listener types\nconst CAPTURE = 1\nconst BUBBLE = 2\nconst ATTRIBUTE = 3\n\n/**\n * Check whether a given value is an object or not.\n * @param {any} x The value to check.\n * @returns {boolean} `true` if the value is an object.\n */\nfunction isObject(x) {\n return x !== null && typeof x === \"object\" //eslint-disable-line no-restricted-syntax\n}\n\n/**\n * Get listeners.\n * @param {EventTarget} eventTarget The event target to get.\n * @returns {Map} The listeners.\n * @private\n */\nfunction getListeners(eventTarget) {\n const listeners = listenersMap.get(eventTarget)\n if (listeners == null) {\n throw new TypeError(\n \"'this' is expected an EventTarget object, but got another value.\"\n )\n }\n return listeners\n}\n\n/**\n * Get the property descriptor for the event attribute of a given event.\n * @param {string} eventName The event name to get property descriptor.\n * @returns {PropertyDescriptor} The property descriptor.\n * @private\n */\nfunction defineEventAttributeDescriptor(eventName) {\n return {\n get() {\n const listeners = getListeners(this)\n let node = listeners.get(eventName)\n while (node != null) {\n if (node.listenerType === ATTRIBUTE) {\n return node.listener\n }\n node = node.next\n }\n return null\n },\n\n set(listener) {\n if (typeof listener !== \"function\" && !isObject(listener)) {\n listener = null // eslint-disable-line no-param-reassign\n }\n const listeners = getListeners(this)\n\n // Traverse to the tail while removing old value.\n let prev = null\n let node = listeners.get(eventName)\n while (node != null) {\n if (node.listenerType === ATTRIBUTE) {\n // Remove old value.\n if (prev !== null) {\n prev.next = node.next\n } else if (node.next !== null) {\n listeners.set(eventName, node.next)\n } else {\n listeners.delete(eventName)\n }\n } else {\n prev = node\n }\n\n node = node.next\n }\n\n // Add new value.\n if (listener !== null) {\n const newNode = {\n listener,\n listenerType: ATTRIBUTE,\n passive: false,\n once: false,\n next: null,\n }\n if (prev === null) {\n listeners.set(eventName, newNode)\n } else {\n prev.next = newNode\n }\n }\n },\n configurable: true,\n enumerable: true,\n }\n}\n\n/**\n * Define an event attribute (e.g. `eventTarget.onclick`).\n * @param {Object} eventTargetPrototype The event target prototype to define an event attrbite.\n * @param {string} eventName The event name to define.\n * @returns {void}\n */\nfunction defineEventAttribute(eventTargetPrototype, eventName) {\n Object.defineProperty(\n eventTargetPrototype,\n `on${eventName}`,\n defineEventAttributeDescriptor(eventName)\n )\n}\n\n/**\n * Define a custom EventTarget with event attributes.\n * @param {string[]} eventNames Event names for event attributes.\n * @returns {EventTarget} The custom EventTarget.\n * @private\n */\nfunction defineCustomEventTarget(eventNames) {\n /** CustomEventTarget */\n function CustomEventTarget() {\n EventTarget.call(this)\n }\n\n CustomEventTarget.prototype = Object.create(EventTarget.prototype, {\n constructor: {\n value: CustomEventTarget,\n configurable: true,\n writable: true,\n },\n })\n\n for (let i = 0; i < eventNames.length; ++i) {\n defineEventAttribute(CustomEventTarget.prototype, eventNames[i])\n }\n\n return CustomEventTarget\n}\n\n/**\n * EventTarget.\n *\n * - This is constructor if no arguments.\n * - This is a function which returns a CustomEventTarget constructor if there are arguments.\n *\n * For example:\n *\n * class A extends EventTarget {}\n * class B extends EventTarget(\"message\") {}\n * class C extends EventTarget(\"message\", \"error\") {}\n * class D extends EventTarget([\"message\", \"error\"]) {}\n */\nfunction EventTarget() {\n /*eslint-disable consistent-return */\n if (this instanceof EventTarget) {\n listenersMap.set(this, new Map())\n return\n }\n if (arguments.length === 1 && Array.isArray(arguments[0])) {\n return defineCustomEventTarget(arguments[0])\n }\n if (arguments.length > 0) {\n const types = new Array(arguments.length)\n for (let i = 0; i < arguments.length; ++i) {\n types[i] = arguments[i]\n }\n return defineCustomEventTarget(types)\n }\n throw new TypeError(\"Cannot call a class as a function\")\n /*eslint-enable consistent-return */\n}\n\n// Should be enumerable, but class methods are not enumerable.\nEventTarget.prototype = {\n /**\n * Add a given listener to this event target.\n * @param {string} eventName The event name to add.\n * @param {Function} listener The listener to add.\n * @param {boolean|{capture?:boolean,passive?:boolean,once?:boolean}} [options] The options for this listener.\n * @returns {void}\n */\n addEventListener(eventName, listener, options) {\n if (listener == null) {\n return\n }\n if (typeof listener !== \"function\" && !isObject(listener)) {\n throw new TypeError(\"'listener' should be a function or an object.\")\n }\n\n const listeners = getListeners(this)\n const optionsIsObj = isObject(options)\n const capture = optionsIsObj\n ? Boolean(options.capture)\n : Boolean(options)\n const listenerType = capture ? CAPTURE : BUBBLE\n const newNode = {\n listener,\n listenerType,\n passive: optionsIsObj && Boolean(options.passive),\n once: optionsIsObj && Boolean(options.once),\n next: null,\n }\n\n // Set it as the first node if the first node is null.\n let node = listeners.get(eventName)\n if (node === undefined) {\n listeners.set(eventName, newNode)\n return\n }\n\n // Traverse to the tail while checking duplication..\n let prev = null\n while (node != null) {\n if (\n node.listener === listener &&\n node.listenerType === listenerType\n ) {\n // Should ignore duplication.\n return\n }\n prev = node\n node = node.next\n }\n\n // Add it.\n prev.next = newNode\n },\n\n /**\n * Remove a given listener from this event target.\n * @param {string} eventName The event name to remove.\n * @param {Function} listener The listener to remove.\n * @param {boolean|{capture?:boolean,passive?:boolean,once?:boolean}} [options] The options for this listener.\n * @returns {void}\n */\n removeEventListener(eventName, listener, options) {\n if (listener == null) {\n return\n }\n\n const listeners = getListeners(this)\n const capture = isObject(options)\n ? Boolean(options.capture)\n : Boolean(options)\n const listenerType = capture ? CAPTURE : BUBBLE\n\n let prev = null\n let node = listeners.get(eventName)\n while (node != null) {\n if (\n node.listener === listener &&\n node.listenerType === listenerType\n ) {\n if (prev !== null) {\n prev.next = node.next\n } else if (node.next !== null) {\n listeners.set(eventName, node.next)\n } else {\n listeners.delete(eventName)\n }\n return\n }\n\n prev = node\n node = node.next\n }\n },\n\n /**\n * Dispatch a given event.\n * @param {Event|{type:string}} event The event to dispatch.\n * @returns {boolean} `false` if canceled.\n */\n dispatchEvent(event) {\n if (event == null || typeof event.type !== \"string\") {\n throw new TypeError('\"event.type\" should be a string.')\n }\n\n // If listeners aren't registered, terminate.\n const listeners = getListeners(this)\n const eventName = event.type\n let node = listeners.get(eventName)\n if (node == null) {\n return true\n }\n\n // Since we cannot rewrite several properties, so wrap object.\n const wrappedEvent = wrapEvent(this, event)\n\n // This doesn't process capturing phase and bubbling phase.\n // This isn't participating in a tree.\n let prev = null\n while (node != null) {\n // Remove this listener if it's once\n if (node.once) {\n if (prev !== null) {\n prev.next = node.next\n } else if (node.next !== null) {\n listeners.set(eventName, node.next)\n } else {\n listeners.delete(eventName)\n }\n } else {\n prev = node\n }\n\n // Call this listener\n setPassiveListener(\n wrappedEvent,\n node.passive ? node.listener : null\n )\n if (typeof node.listener === \"function\") {\n try {\n node.listener.call(this, wrappedEvent)\n } catch (err) {\n if (\n typeof console !== \"undefined\" &&\n typeof console.error === \"function\"\n ) {\n console.error(err)\n }\n }\n } else if (\n node.listenerType !== ATTRIBUTE &&\n typeof node.listener.handleEvent === \"function\"\n ) {\n node.listener.handleEvent(wrappedEvent)\n }\n\n // Break if `event.stopImmediatePropagation` was called.\n if (isStopped(wrappedEvent)) {\n break\n }\n\n node = node.next\n }\n setPassiveListener(wrappedEvent, null)\n setEventPhase(wrappedEvent, 0)\n setCurrentTarget(wrappedEvent, null)\n\n return !wrappedEvent.defaultPrevented\n },\n}\n\n// `constructor` is not enumerable.\nObject.defineProperty(EventTarget.prototype, \"constructor\", {\n value: EventTarget,\n configurable: true,\n writable: true,\n})\n\n// Ensure `eventTarget instanceof window.EventTarget` is `true`.\nif (\n typeof window !== \"undefined\" &&\n typeof window.EventTarget !== \"undefined\"\n) {\n Object.setPrototypeOf(EventTarget.prototype, window.EventTarget.prototype)\n}\n\nexport { defineEventAttribute, EventTarget }\nexport default EventTarget\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,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,IAAK,GAAI,IAAK,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,MAAO,EAAG,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,KAAM,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,MAAO,EAAG,KAAM,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,EAAG,KAAM,GAAI,IAAK,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,KAAM,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,GAAI,EAAG,IAAK,GAAI,KAAM,EAAG,IAAK,EAAG,EAAG,EAAG,KAAM,EAAG,OAAQ,KAE55B,YAAuB,EAAM,GAC3B,GAAI,GAAM,MAEV,OAAS,GAAI,EAAG,EAAS,EAAI,OAAQ,EAAI,EAAQ,GAAK,GAEpD,GADA,GAAO,EAAI,GACP,EAAM,EAAM,MAAO,GAEvB,GADA,GAAO,EAAI,EAAI,GACX,GAAO,EAAM,MAAO,GAG1B,MAAO,GAGT,YAA2B,GACzB,MAAI,GAAO,GAAW,IAAS,GAC3B,GAAQ,GAAW,GACnB,EAAO,GAAW,IAAS,GAC3B,GAAQ,IAAY,GAEpB,GAAQ,MACH,GAAQ,KAAQ,GAAwB,KAAK,OAAO,aAAa,IAGnE,GAAc,EAAM,IAG7B,YAA0B,GACxB,MAAI,GAAO,GAAW,IAAS,GAC3B,EAAO,GAAW,GAClB,EAAO,GAAW,GAClB,GAAQ,GAAW,GACnB,EAAO,GAAW,IAAS,GAC3B,GAAQ,IAAY,GAEpB,GAAQ,MACH,GAAQ,KAAQ,GAAmB,KAAK,OAAO,aAAa,IAG9D,GAAc,EAAM,KAA+B,GAAc,EAAM,IAGhF,YAA0B,GACxB,GAAI,GAAU,GAEd,OAAS,GAAK,EAAG,EAAc,MAAM,KAAK,GAAO,EAAK,EAAY,OAAQ,KAExE,GAAM,GAAK,AADE,EAAY,GACT,YAAY,GAE5B,GAAI,GACF,GAAI,CAAC,GAAkB,GACrB,MAAO,GAGT,EAAU,WACD,CAAC,GAAiB,GAC3B,MAAO,GAIX,MAAO,CAAC,KC3EV,2BAEA,OAAO,eAAe,GAAS,aAAc,CAC3C,MAAO,KAET,GAAQ,eAAiB,GACzB,GAAQ,qBAAuB,GAC/B,GAAQ,6BAA+B,GACvC,GAAQ,yBAA2B,GACnC,GAAQ,UAAY,GACpB,GAAM,IAAgB,CACpB,QAAS,CAAC,QAAS,OAAQ,QAAS,WAAY,WAAY,UAAW,KAAM,OAAQ,UAAW,MAAO,WAAY,KAAM,SAAU,SAAU,QAAS,MAAO,MAAO,QAAS,QAAS,OAAQ,MAAO,OAAQ,QAAS,QAAS,UAAW,SAAU,SAAU,OAAQ,OAAQ,QAAS,KAAM,aAAc,SAAU,OAAQ,UAC7T,OAAQ,CAAC,aAAc,YAAa,MAAO,UAAW,UAAW,YAAa,SAAU,SAAU,SAClG,WAAY,CAAC,OAAQ,cAEjB,GAAW,GAAI,KAAI,GAAc,SACjC,GAAyB,GAAI,KAAI,GAAc,QAC/C,GAA6B,GAAI,KAAI,GAAc,YAEzD,YAAwB,EAAM,GAC5B,MAAO,IAAY,IAAS,SAAW,IAAS,OAGlD,YAA8B,EAAM,GAClC,MAAO,IAAe,EAAM,IAAa,GAAuB,IAAI,GAGtE,YAAsC,GACpC,MAAO,IAA2B,IAAI,GAGxC,YAAkC,EAAM,GACtC,MAAO,IAAqB,EAAM,IAAa,GAA6B,GAG9E,YAAmB,GACjB,MAAO,IAAS,IAAI,MCpCtB,2BAEA,OAAO,eAAe,GAAS,aAAc,CAC3C,MAAO,KAET,OAAO,eAAe,GAAS,mBAAoB,CACjD,WAAY,GACZ,IAAK,WACH,MAAO,IAAY,oBAGvB,OAAO,eAAe,GAAS,mBAAoB,CACjD,WAAY,GACZ,IAAK,WACH,MAAO,IAAY,oBAGvB,OAAO,eAAe,GAAS,oBAAqB,CAClD,WAAY,GACZ,IAAK,WACH,MAAO,IAAY,qBAGvB,OAAO,eAAe,GAAS,iBAAkB,CAC/C,WAAY,GACZ,IAAK,WACH,MAAO,IAAS,kBAGpB,OAAO,eAAe,GAAS,+BAAgC,CAC7D,WAAY,GACZ,IAAK,WACH,MAAO,IAAS,gCAGpB,OAAO,eAAe,GAAS,2BAA4B,CACzD,WAAY,GACZ,IAAK,WACH,MAAO,IAAS,4BAGpB,OAAO,eAAe,GAAS,uBAAwB,CACrD,WAAY,GACZ,IAAK,WACH,MAAO,IAAS,wBAGpB,OAAO,eAAe,GAAS,YAAa,CAC1C,WAAY,GACZ,IAAK,WACH,MAAO,IAAS,aAIpB,GAAI,IAAsB,KAEtB,GAAmB,OCxDvB,gCAEA,GAAI,IAAmB,sBAEvB,GAAO,QAAU,SAAU,GAC1B,GAAI,MAAO,IAAQ,SAClB,KAAM,IAAI,WAAU,qBAGrB,MAAO,GAAI,QAAQ,GAAkB,WCTtC,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,mBACA,GAAI,IAAsB,KAMtB,GAAkB,GACtB,OAAS,MAAO,IACf,AAAI,GAAY,eAAe,KAC9B,IAAgB,GAAY,KAAQ,IAItC,GAAI,GAAU,GAAO,QAAU,CAC9B,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,UAI9B,OAAS,MAAS,GACjB,GAAI,EAAQ,eAAe,KAC1B,GAAI,CAAE,aAAc,GAAQ,KAC3B,KAAM,IAAI,OAAM,8BAAgC,IAGjD,GAAI,CAAE,WAAY,GAAQ,KACzB,KAAM,IAAI,OAAM,oCAAsC,IAGvD,GAAI,EAAQ,IAAO,OAAO,SAAW,EAAQ,IAAO,SACnD,KAAM,IAAI,OAAM,sCAAwC,IAGzD,AAAI,GAAW,EAAQ,IAAO,SAC1B,GAAS,EAAQ,IAAO,OAC5B,MAAO,GAAQ,IAAO,SACtB,MAAO,GAAQ,IAAO,OACtB,OAAO,eAAe,EAAQ,IAAQ,WAAY,CAAC,MAAO,KAC1D,OAAO,eAAe,EAAQ,IAAQ,SAAU,CAAC,MAAO,KALpD,OACA,GAQN,EAAQ,IAAI,IAAM,SAAU,GAC3B,GAAI,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,EACd,EACA,EACA,EAEJ,MAAI,KAAQ,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,EAAK,GAAM,GAAO,EAElB,AAAI,IAAQ,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,EAEA,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,GACrB,MAAQ,GAAI,GAAK,EAAI,EAAO,EAAI,GAGjC,MAAI,KAAS,EACZ,EAAI,EAAI,EAER,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,GAEtB,AAAI,EAAI,EACP,GAAK,EACK,EAAI,GACd,IAAK,IAIA,CACN,EAAI,IACJ,EAAI,IACJ,EAAI,MAIN,EAAQ,IAAI,IAAM,SAAU,GAC3B,GAAI,GAAI,EAAI,GACR,EAAI,EAAI,GACR,EAAI,EAAI,GACR,EAAI,EAAQ,IAAI,IAAI,GAAK,GACzB,EAAI,EAAI,IAAM,KAAK,IAAI,EAAG,KAAK,IAAI,EAAG,IAE1C,SAAI,EAAI,EAAI,IAAM,KAAK,IAAI,EAAG,KAAK,IAAI,EAAG,IAEnC,CAAC,EAAG,EAAI,IAAK,EAAI,MAGzB,EAAQ,IAAI,KAAO,SAAU,GAC5B,GAAI,GAAI,EAAI,GAAK,IACb,EAAI,EAAI,GAAK,IACb,EAAI,EAAI,GAAK,IACb,EACA,EACA,EACA,EAEJ,SAAI,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,EAEtB,CAAC,EAAI,IAAK,EAAI,IAAK,EAAI,IAAK,EAAI,MAMxC,YAA6B,EAAG,GAC/B,MACC,MAAK,IAAI,EAAE,GAAK,EAAE,GAAI,GACtB,KAAK,IAAI,EAAE,GAAK,EAAE,GAAI,GACtB,KAAK,IAAI,EAAE,GAAK,EAAE,GAAI,GAIxB,EAAQ,IAAI,QAAU,SAAU,GAC/B,GAAI,GAAW,GAAgB,GAC/B,GAAI,EACH,MAAO,GAGR,GAAI,GAAyB,SACzB,EAEJ,OAAS,KAAW,IACnB,GAAI,GAAY,eAAe,IAC9B,GAAI,GAAQ,GAAY,GAGpB,EAAW,GAAoB,EAAK,GAGxC,AAAI,EAAW,GACd,GAAyB,EACzB,EAAwB,GAK3B,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,OAAU,KAAK,IAAM,GAAI,MAAS,MAAQ,KAAQ,EAAI,MAC9D,EAAI,EAAI,OAAU,KAAK,IAAM,GAAI,MAAS,MAAQ,KAAQ,EAAI,MAC9D,EAAI,EAAI,OAAU,KAAK,IAAM,GAAI,MAAS,MAAQ,KAAQ,EAAI,MAE9D,GAAI,GAAK,EAAI,MAAW,EAAI,MAAW,EAAI,MACvC,EAAK,EAAI,MAAW,EAAI,MAAW,EAAI,MACvC,EAAK,EAAI,MAAW,EAAI,MAAW,EAAI,MAE3C,MAAO,CAAC,EAAI,IAAK,EAAI,IAAK,EAAI,MAG/B,EAAQ,IAAI,IAAM,SAAU,GAC3B,GAAI,GAAM,EAAQ,IAAI,IAAI,GACtB,EAAI,EAAI,GACR,EAAI,EAAI,GACR,EAAI,EAAI,GACR,EACA,EACA,EAEJ,UAAK,OACL,GAAK,IACL,GAAK,QAEL,EAAI,EAAI,QAAW,KAAK,IAAI,EAAG,EAAI,GAAM,MAAQ,EAAM,GAAK,IAC5D,EAAI,EAAI,QAAW,KAAK,IAAI,EAAG,EAAI,GAAM,MAAQ,EAAM,GAAK,IAC5D,EAAI,EAAI,QAAW,KAAK,IAAI,EAAG,EAAI,GAAM,MAAQ,EAAM,GAAK,IAE5D,EAAK,IAAM,EAAK,GAChB,EAAI,IAAO,GAAI,GACf,EAAI,IAAO,GAAI,GAER,CAAC,EAAG,EAAG,IAGf,EAAQ,IAAI,IAAM,SAAU,GAC3B,GAAI,GAAI,EAAI,GAAK,IACb,EAAI,EAAI,GAAK,IACb,EAAI,EAAI,GAAK,IACb,EACA,EACA,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,EAAK,EAAI,EAAI,EAEb,EAAM,CAAC,EAAG,EAAG,GACb,OAAS,GAAI,EAAG,EAAI,EAAG,IACtB,EAAK,EAAI,EAAI,EAAI,CAAE,GAAI,GACnB,EAAK,GACR,IAEG,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,GAAI,GAAI,EAAI,GACR,EAAI,EAAI,GAAK,IACb,EAAI,EAAI,GAAK,IACb,EAAO,EACP,EAAO,KAAK,IAAI,EAAG,KACnB,EACA,EAEJ,UAAK,EACL,GAAM,GAAK,EAAK,EAAI,EAAI,EACxB,GAAQ,GAAQ,EAAI,EAAO,EAAI,EAC/B,EAAK,GAAI,GAAK,EACd,EAAK,IAAM,EAAK,EAAI,EAAS,GAAO,GAAS,EAAI,EAAM,GAAI,GAEpD,CAAC,EAAG,EAAK,IAAK,EAAI,MAG1B,EAAQ,IAAI,IAAM,SAAU,GAC3B,GAAI,GAAI,EAAI,GAAK,GACb,EAAI,EAAI,GAAK,IACb,EAAI,EAAI,GAAK,IACb,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,IAGjC,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,GAAI,GAAI,EAAI,GACR,EAAI,EAAI,GAAK,IACb,EAAI,EAAI,GAAK,IACb,EAAO,KAAK,IAAI,EAAG,KACnB,EACA,EACA,EAEJ,SAAK,GAAI,GAAK,EACd,EAAQ,GAAI,GAAK,EACjB,EAAK,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,GAAI,GAAI,EAAI,GAAK,IACb,EAAK,EAAI,GAAK,IACd,EAAK,EAAI,GAAK,IACd,EAAQ,EAAK,EACb,EACA,EACA,EACA,EAGJ,AAAI,EAAQ,GACX,IAAM,EACN,GAAM,GAGP,EAAI,KAAK,MAAM,EAAI,GACnB,EAAI,EAAI,EACR,EAAI,EAAI,EAAI,EAEP,GAAI,IAAU,GAClB,GAAI,EAAI,GAGT,EAAI,EAAK,EAAK,GAAI,GAElB,GAAI,GACA,EACA,EACJ,OAAQ,eAEF,OACA,GAAG,EAAI,EAAG,EAAI,EAAG,EAAI,EAAI,UACzB,GAAG,EAAI,EAAG,EAAI,EAAG,EAAI,EAAI,UACzB,GAAG,EAAI,EAAI,EAAI,EAAG,EAAI,EAAG,UACzB,GAAG,EAAI,EAAI,EAAI,EAAG,EAAI,EAAG,UACzB,GAAG,EAAI,EAAG,EAAI,EAAI,EAAI,EAAG,UACzB,GAAG,EAAI,EAAG,EAAI,EAAI,EAAI,EAAG,MAG/B,MAAO,CAAC,EAAI,IAAK,EAAI,IAAK,EAAI,MAG/B,EAAQ,KAAK,IAAM,SAAU,GAC5B,GAAI,GAAI,EAAK,GAAK,IACd,EAAI,EAAK,GAAK,IACd,EAAI,EAAK,GAAK,IACd,EAAI,EAAK,GAAK,IACd,EACA,EACA,EAEJ,SAAI,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,GAE3B,CAAC,EAAI,IAAK,EAAI,IAAK,EAAI,MAG/B,EAAQ,IAAI,IAAM,SAAU,GAC3B,GAAI,GAAI,EAAI,GAAK,IACb,EAAI,EAAI,GAAK,IACb,EAAI,EAAI,GAAK,IACb,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,MAAQ,KAAK,IAAI,EAAG,EAAM,KAAQ,KACpC,EAAI,MAEP,EAAI,EAAI,SACH,MAAQ,KAAK,IAAI,EAAG,EAAM,KAAQ,KACpC,EAAI,MAEP,EAAI,EAAI,SACH,MAAQ,KAAK,IAAI,EAAG,EAAM,KAAQ,KACpC,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,GACR,EACA,EACA,EAEJ,UAAK,OACL,GAAK,IACL,GAAK,QAEL,EAAI,EAAI,QAAW,KAAK,IAAI,EAAG,EAAI,GAAM,MAAQ,EAAM,GAAK,IAC5D,EAAI,EAAI,QAAW,KAAK,IAAI,EAAG,EAAI,GAAM,MAAQ,EAAM,GAAK,IAC5D,EAAI,EAAI,QAAW,KAAK,IAAI,EAAG,EAAI,GAAM,MAAQ,EAAM,GAAK,IAE5D,EAAK,IAAM,EAAK,GAChB,EAAI,IAAO,GAAI,GACf,EAAI,IAAO,GAAI,GAER,CAAC,EAAG,EAAG,IAGf,EAAQ,IAAI,IAAM,SAAU,GAC3B,GAAI,GAAI,EAAI,GACR,EAAI,EAAI,GACR,EAAI,EAAI,GACR,EACA,EACA,EAEJ,EAAK,GAAI,IAAM,IACf,EAAI,EAAI,IAAM,EACd,EAAI,EAAI,EAAI,IAEZ,GAAI,GAAK,KAAK,IAAI,EAAG,GACjB,EAAK,KAAK,IAAI,EAAG,GACjB,EAAK,KAAK,IAAI,EAAG,GACrB,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,GAAI,GAAI,EAAI,GACR,EAAI,EAAI,GACR,EAAI,EAAI,GACR,EACA,EACA,EAEJ,SAAK,KAAK,MAAM,EAAG,GACnB,EAAI,EAAK,IAAM,EAAI,KAAK,GAEpB,EAAI,GACP,IAAK,KAGN,EAAI,KAAK,KAAK,EAAI,EAAI,EAAI,GAEnB,CAAC,EAAG,EAAG,IAGf,EAAQ,IAAI,IAAM,SAAU,GAC3B,GAAI,GAAI,EAAI,GACR,EAAI,EAAI,GACR,EAAI,EAAI,GACR,EACA,EACA,EAEJ,SAAK,EAAI,IAAM,EAAI,KAAK,GACxB,EAAI,EAAI,KAAK,IAAI,GACjB,EAAI,EAAI,KAAK,IAAI,GAEV,CAAC,EAAG,EAAG,IAGf,EAAQ,IAAI,OAAS,SAAU,GAC9B,GAAI,GAAI,EAAK,GACT,EAAI,EAAK,GACT,EAAI,EAAK,GACT,EAAQ,IAAK,WAAY,UAAU,GAAK,EAAQ,IAAI,IAAI,GAAM,GAIlE,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,GAAI,GAAI,EAAK,GACT,EAAI,EAAK,GACT,EAAI,EAAK,GAIb,GAAI,IAAM,GAAK,IAAM,EACpB,MAAI,GAAI,EACA,GAGJ,EAAI,IACA,IAGD,KAAK,MAAQ,GAAI,GAAK,IAAO,IAAM,IAG3C,GAAI,GAAO,GACP,GAAK,KAAK,MAAM,EAAI,IAAM,GAC1B,EAAI,KAAK,MAAM,EAAI,IAAM,GAC1B,KAAK,MAAM,EAAI,IAAM,GAExB,MAAO,IAGR,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,GAAI,GAAQ,EAAC,CAAE,GAAO,IAAM,GAAK,GAC7B,EAAM,GAAQ,GAAK,EAAQ,IAC3B,EAAO,IAAS,EAAK,GAAK,EAAQ,IAClC,EAAO,IAAS,EAAK,GAAK,EAAQ,IAEtC,MAAO,CAAC,EAAG,EAAG,IAGf,EAAQ,QAAQ,IAAM,SAAU,GAE/B,GAAI,GAAQ,KACX,GAAI,GAAK,GAAO,KAAO,GAAK,EAC5B,MAAO,CAAC,EAAG,EAAG,GAGf,GAAQ,GAER,GAAI,GACA,EAAI,KAAK,MAAM,EAAO,IAAM,EAAI,IAChC,EAAI,KAAK,MAAO,GAAM,EAAO,IAAM,GAAK,EAAI,IAC5C,EAAK,EAAM,EAAK,EAAI,IAExB,MAAO,CAAC,EAAG,EAAG,IAGf,EAAQ,IAAI,IAAM,SAAU,GAC3B,GAAI,GAAY,OAAK,MAAM,EAAK,IAAM,MAAS,IAC1C,OAAK,MAAM,EAAK,IAAM,MAAS,GAChC,MAAK,MAAM,EAAK,IAAM,KAEtB,EAAS,EAAQ,SAAS,IAAI,cAClC,MAAO,SAAS,UAAU,EAAO,QAAU,GAG5C,EAAQ,IAAI,IAAM,SAAU,GAC3B,GAAI,GAAQ,EAAK,SAAS,IAAI,MAAM,4BACpC,GAAI,CAAC,EACJ,MAAO,CAAC,EAAG,EAAG,GAGf,GAAI,GAAc,EAAM,GAExB,AAAI,EAAM,GAAG,SAAW,GACvB,GAAc,EAAY,MAAM,IAAI,IAAI,SAAU,GACjD,MAAO,GAAO,IACZ,KAAK,KAGT,GAAI,GAAU,SAAS,EAAa,IAChC,EAAK,GAAW,GAAM,IACtB,EAAK,GAAW,EAAK,IACrB,EAAI,EAAU,IAElB,MAAO,CAAC,EAAG,EAAG,IAGf,EAAQ,IAAI,IAAM,SAAU,GAC3B,GAAI,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,EAChB,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,EAAS,EAG9B,GAAO,EACP,GAAO,EAEA,CAAC,EAAM,IAAK,EAAS,IAAK,EAAY,MAG9C,EAAQ,IAAI,IAAM,SAAU,GAC3B,GAAI,GAAI,EAAI,GAAK,IACb,EAAI,EAAI,GAAK,IACb,EAAI,EACJ,EAAI,EAER,MAAI,GAAI,GACP,EAAI,EAAM,EAAI,EAEd,EAAI,EAAM,EAAK,GAAM,GAGlB,EAAI,GACP,GAAK,GAAI,GAAM,GAAM,GAAM,IAGrB,CAAC,EAAI,GAAI,EAAI,IAAK,EAAI,MAG9B,EAAQ,IAAI,IAAM,SAAU,GAC3B,GAAI,GAAI,EAAI,GAAK,IACb,EAAI,EAAI,GAAK,IAEb,EAAI,EAAI,EACR,EAAI,EAER,MAAI,GAAI,GACP,GAAK,GAAI,GAAM,GAAI,IAGb,CAAC,EAAI,GAAI,EAAI,IAAK,EAAI,MAG9B,EAAQ,IAAI,IAAM,SAAU,GAC3B,GAAI,GAAI,EAAI,GAAK,IACb,EAAI,EAAI,GAAK,IACb,EAAI,EAAI,GAAK,IAEjB,GAAI,IAAM,EACT,MAAO,CAAC,EAAI,IAAK,EAAI,IAAK,EAAI,KAG/B,GAAI,GAAO,CAAC,EAAG,EAAG,GACd,EAAM,EAAI,EAAK,EACf,EAAI,EAAK,EACT,EAAI,EAAI,EACR,EAAK,EAET,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,EAGtC,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,GAAI,GAAI,EAAI,GAAK,IACb,EAAI,EAAI,GAAK,IAEb,EAAI,EAAI,EAAK,GAAM,GACnB,EAAI,EAER,MAAI,GAAI,GACP,GAAI,EAAI,GAGF,CAAC,EAAI,GAAI,EAAI,IAAK,EAAI,MAG9B,EAAQ,IAAI,IAAM,SAAU,GAC3B,GAAI,GAAI,EAAI,GAAK,IACb,EAAI,EAAI,GAAK,IAEb,EAAI,EAAK,GAAM,GAAK,GAAM,EAC1B,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,GAAI,GAAI,EAAI,GAAK,IACb,EAAI,EAAI,GAAK,IACb,EAAI,EAAI,EAAK,GAAM,GACvB,MAAO,CAAC,EAAI,GAAK,GAAI,GAAK,IAAM,GAAI,GAAK,MAG1C,EAAQ,IAAI,IAAM,SAAU,GAC3B,GAAI,GAAI,EAAI,GAAK,IACb,EAAI,EAAI,GAAK,IACb,EAAI,EAAI,EACR,EAAI,EAAI,EACR,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,EAAQ,KAAK,IAAM,SAAU,GAC/C,MAAO,CAAC,EAAG,EAAG,EAAK,KAGpB,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,GAAI,GAAM,KAAK,MAAM,EAAK,GAAK,IAAM,KAAO,IACxC,EAAW,IAAO,IAAO,IAAO,GAAK,EAErC,EAAS,EAAQ,SAAS,IAAI,cAClC,MAAO,SAAS,UAAU,EAAO,QAAU,GAG5C,EAAQ,IAAI,KAAO,SAAU,GAC5B,GAAI,GAAO,GAAI,GAAK,EAAI,GAAK,EAAI,IAAM,EACvC,MAAO,CAAC,EAAM,IAAM,QCl2BrB,sBAAI,IAAsB,KAa1B,cAKC,OAJI,GAAQ,GAER,EAAS,OAAO,KAAK,IAEhB,EAAM,EAAO,OAAQ,EAAI,EAAG,EAAI,EAAK,IAC7C,EAAM,EAAO,IAAM,CAGlB,SAAU,GACV,OAAQ,MAIV,MAAO,GAIR,YAAmB,GAClB,GAAI,GAAQ,KACR,EAAQ,CAAC,GAIb,IAFA,EAAM,GAAW,SAAW,EAErB,EAAM,QAIZ,OAHI,GAAU,EAAM,MAChB,EAAY,OAAO,KAAK,GAAY,IAE/B,EAAM,EAAU,OAAQ,EAAI,EAAG,EAAI,EAAK,KAChD,GAAI,GAAW,EAAU,GACrB,EAAO,EAAM,GAEjB,AAAI,EAAK,WAAa,IACrB,GAAK,SAAW,EAAM,GAAS,SAAW,EAC1C,EAAK,OAAS,EACd,EAAM,QAAQ,IAKjB,MAAO,GAGR,YAAc,EAAM,GACnB,MAAO,UAAU,GAChB,MAAO,GAAG,EAAK,KAIjB,YAAwB,EAAS,GAKhC,OAJI,GAAO,CAAC,EAAM,GAAS,OAAQ,GAC/B,EAAK,GAAY,EAAM,GAAS,QAAQ,GAExC,EAAM,EAAM,GAAS,OAClB,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,GAK1B,OAJI,GAAQ,GAAU,GAClB,EAAa,GAEb,EAAS,OAAO,KAAK,GAChB,EAAM,EAAO,OAAQ,EAAI,EAAG,EAAI,EAAK,KAC7C,GAAI,GAAU,EAAO,GACjB,EAAO,EAAM,GAEjB,AAAI,EAAK,SAAW,MAKpB,GAAW,GAAW,GAAe,EAAS,IAG/C,MAAO,MC9FR,sBAAI,IAAsB,KACtB,GAAgB,KAEhB,GAAU,GAEV,GAAS,OAAO,KAAK,IAEzB,YAAiB,GAChB,GAAI,GAAY,SAAU,GACzB,MAAI,AAAsB,IAAS,KAC3B,EAGJ,WAAU,OAAS,GACtB,GAAO,MAAM,UAAU,MAAM,KAAK,YAG5B,EAAG,KAIX,MAAI,cAAgB,IACnB,GAAU,WAAa,EAAG,YAGpB,EAGR,YAAqB,GACpB,GAAI,GAAY,SAAU,GACzB,GAAI,AAAsB,GAAS,KAClC,MAAO,GAGR,AAAI,UAAU,OAAS,GACtB,GAAO,MAAM,UAAU,MAAM,KAAK,YAGnC,GAAI,GAAS,EAAG,GAKhB,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,SAAU,GACxB,GAAQ,GAAa,GAErB,OAAO,eAAe,GAAQ,GAAY,WAAY,CAAC,MAAO,GAAY,GAAW,WACrF,OAAO,eAAe,GAAQ,GAAY,SAAU,CAAC,MAAO,GAAY,GAAW,SAEnF,GAAI,GAAS,GAAM,GACf,EAAc,OAAO,KAAK,GAE9B,EAAY,QAAQ,SAAU,GAC7B,GAAI,GAAK,EAAO,GAEhB,GAAQ,GAAW,GAAW,GAAY,GAC1C,GAAQ,GAAW,GAAS,IAAM,GAAQ,OAI5C,GAAO,QAAU,KC7EjB,gCACA,GAAM,IAAuB,KAEvB,GAAa,CAAC,EAAI,IAAW,WAElC,MAAO,KAAU,AADJ,EAAG,MAAM,GAAc,WACZ,MAGnB,GAAc,CAAC,EAAI,IAAW,WACnC,GAAM,GAAO,EAAG,MAAM,GAAc,WACpC,MAAO,KAAU,GAAK,OAAY,MAG7B,GAAc,CAAC,EAAI,IAAW,WACnC,GAAM,GAAM,EAAG,MAAM,GAAc,WACnC,MAAO,KAAU,GAAK,OAAY,EAAI,MAAM,EAAI,MAAM,EAAI,OAG3D,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,IACZ,KAAM,CAAC,GAAI,IAGX,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,KAEjC,OAAW,KAAa,QAAO,KAAK,IACnC,GAAM,GAAQ,EAAO,GAErB,OAAW,KAAa,QAAO,KAAK,IACnC,GAAM,GAAQ,EAAM,GAEpB,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,KAGb,OAAO,eAAe,EAAQ,QAAS,CACtC,MAAO,EACP,WAAY,KAId,GAAM,GAAY,GAAK,EACjB,EAAU,CAAC,EAAG,EAAG,IAAM,CAAC,EAAG,EAAG,GAEpC,EAAO,MAAM,MAAQ,QACrB,EAAO,QAAQ,MAAQ,QAEvB,EAAO,MAAM,KAAO,CACnB,KAAM,GAAW,EAAW,IAE7B,EAAO,MAAM,QAAU,CACtB,QAAS,GAAY,EAAW,IAEjC,EAAO,MAAM,QAAU,CACtB,IAAK,GAAY,EAAS,IAG3B,EAAO,QAAQ,KAAO,CACrB,KAAM,GAAW,EAAW,KAE7B,EAAO,QAAQ,QAAU,CACxB,QAAS,GAAY,EAAW,KAEjC,EAAO,QAAQ,QAAU,CACxB,IAAK,GAAY,EAAS,KAG3B,OAAS,KAAO,QAAO,KAAK,KAC3B,GAAI,MAAO,IAAa,IAAS,SAChC,SAGD,GAAM,GAAQ,GAAa,GAE3B,AAAI,IAAQ,UACX,GAAM,QAGH,UAAY,IACf,GAAO,MAAM,KAAK,GAAO,GAAW,EAAM,OAAQ,GAClD,EAAO,QAAQ,KAAK,GAAO,GAAW,EAAM,OAAQ,KAGjD,WAAa,IAChB,GAAO,MAAM,QAAQ,GAAO,GAAY,EAAM,QAAS,GACvD,EAAO,QAAQ,QAAQ,GAAO,GAAY,EAAM,QAAS,KAGtD,OAAS,IACZ,GAAO,MAAM,QAAQ,GAAO,GAAY,EAAM,IAAK,GACnD,EAAO,QAAQ,QAAQ,GAAO,GAAY,EAAM,IAAK,KAIvD,MAAO,GAIR,OAAO,eAAe,GAAQ,UAAW,CACxC,WAAY,GACZ,IAAK,OCnKN,gCACA,GAAO,QAAU,CAAC,EAAM,KACvB,EAAO,GAAQ,QAAQ,KACvB,GAAM,GAAS,EAAK,WAAW,KAAO,GAAM,EAAK,SAAW,EAAI,IAAM,KAChE,EAAM,EAAK,QAAQ,EAAS,GAC5B,EAAgB,EAAK,QAAQ,MACnC,MAAO,KAAQ,IAAO,KAAkB,GAAK,GAAO,EAAM,MCN3D,gCACA,GAAM,IAAa,cACb,GAAkB,KAElB,GAAM,QAAQ,IAEhB,GACJ,AAAI,GAAQ,aACX,GAAQ,cACR,GAAQ,eACR,GAAa,GACH,IAAQ,UAClB,GAAQ,WACR,GAAQ,eACR,GAAQ,kBACR,IAAa,IAEd,AAAI,eAAiB,KACpB,IAAa,GAAI,YAAY,SAAW,GAAK,SAAS,GAAI,YAAa,MAAQ,GAGhF,YAAwB,GACvB,MAAI,KAAU,EACN,GAGD,CACN,QACA,SAAU,GACV,OAAQ,GAAS,EACjB,OAAQ,GAAS,GAInB,YAAuB,GACtB,GAAI,KAAe,GAClB,MAAO,GAGR,GAAI,GAAQ,cACX,GAAQ,eACR,GAAQ,mBACR,MAAO,GAGR,GAAI,GAAQ,aACX,MAAO,GAGR,GAAI,GAAU,CAAC,EAAO,OAAS,KAAe,GAC7C,MAAO,GAGR,GAAM,GAAM,GAAa,EAAI,EAE7B,GAAI,QAAQ,WAAa,SAOxB,GAAM,GAAY,GAAG,UAAU,MAAM,KACrC,MACC,QAAO,QAAQ,SAAS,KAAK,MAAM,KAAK,KAAO,GAC/C,OAAO,EAAU,KAAO,IACxB,OAAO,EAAU,KAAO,MAEjB,OAAO,EAAU,KAAO,MAAQ,EAAI,EAGrC,EAGR,GAAI,MAAQ,IACX,MAAI,CAAC,SAAU,WAAY,WAAY,aAAa,KAAK,GAAQ,IAAQ,MAAQ,GAAI,UAAY,WACzF,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,EAGJ,IAAI,OAAS,OACT,GAMT,YAAyB,GACxB,GAAM,GAAQ,GAAc,GAC5B,MAAO,IAAe,GAGvB,GAAO,QAAU,CAChB,cAAe,GACf,OAAQ,GAAgB,QAAQ,QAChC,OAAQ,GAAgB,QAAQ,WCjIjC,gCACA,GAAM,IAAiB,uIACjB,GAAc,iCACd,GAAe,mCACf,GAAe,0CAEf,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,MAAK,GAAE,KAAO,KAAO,EAAE,SAAW,GAAO,EAAE,KAAO,KAAO,EAAE,SAAW,EAC9D,OAAO,aAAa,SAAS,EAAE,MAAM,GAAI,KAG1C,GAAQ,IAAI,IAAM,EAG1B,YAAwB,EAAM,GAC7B,GAAM,GAAU,GACV,EAAS,EAAK,OAAO,MAAM,YAC7B,EAEJ,OAAW,KAAS,GACnB,GAAI,CAAC,MAAM,GACV,EAAQ,KAAK,OAAO,YACT,EAAU,EAAM,MAAM,IACjC,EAAQ,KAAK,EAAQ,GAAG,QAAQ,GAAc,CAAC,EAAG,EAAQ,IAAQ,EAAS,GAAS,GAAU,QAE9F,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,KAAa,QAAO,KAAK,GACnC,GAAI,MAAM,QAAQ,EAAQ,KACzB,GAAI,CAAE,KAAa,IAClB,KAAM,IAAI,OAAM,wBAAwB,KAGzC,AAAI,EAAQ,GAAW,OAAS,EAC/B,EAAU,EAAQ,GAAW,MAAM,EAAS,EAAQ,IAEpD,EAAU,EAAQ,GAKrB,MAAO,GAGR,GAAO,QAAU,CAAC,EAAO,KACxB,GAAM,GAAS,GACT,EAAS,GACX,EAAQ,GA0BZ,GAvBA,EAAI,QAAQ,GAAgB,CAAC,EAAG,EAAY,EAAS,EAAO,EAAO,KAClE,GAAI,EACH,EAAM,KAAK,GAAS,YACV,GACV,GAAM,GAAM,EAAM,KAAK,IACvB,EAAQ,GACR,EAAO,KAAK,EAAO,SAAW,EAAI,EAAM,GAAW,EAAO,GAAQ,IAClE,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,GAAS,qCAAqC,EAAO,yBAAyB,EAAO,SAAW,EAAI,GAAK,cAC/G,KAAM,IAAI,OAAM,GAGjB,MAAO,GAAO,KAAK,OC9HpB,gCACA,GAAM,IAA6B,KAC7B,GAAqB,KACrB,GAAc,AAAQ,KAAkB,OAExC,GAAmB,KAEnB,GAAsB,QAAQ,WAAa,SAAW,CAAE,SAAQ,IAAI,MAAQ,IAAI,cAAc,WAAW,SAGzG,GAAe,CAAC,OAAQ,OAAQ,UAAW,WAG3C,GAAa,GAAI,KAAI,CAAC,SAEtB,GAAS,OAAO,OAAO,MAE7B,YAAsB,EAAK,GAC1B,EAAU,GAAW,GAGrB,GAAM,GAAU,GAAc,GAAY,MAAQ,EAClD,EAAI,MAAQ,EAAQ,QAAU,OAAY,EAAU,EAAQ,MAC5D,EAAI,QAAU,WAAa,GAAU,EAAQ,QAAU,EAAI,MAAQ,EAGpE,YAAe,GAGd,GAAI,CAAC,MAAQ,CAAE,gBAAgB,MAAU,KAAK,UAC7C,GAAM,GAAQ,GACd,UAAa,EAAO,GAEpB,EAAM,SAAW,WAChB,GAAM,GAAO,GAAG,MAAM,KAAK,WAC3B,MAAO,IAAS,MAAM,KAAM,CAAC,EAAM,UAAU,OAAO,KAGrD,OAAO,eAAe,EAAO,GAAM,WACnC,OAAO,eAAe,EAAM,SAAU,GAEtC,EAAM,SAAS,YAAc,GAEtB,EAAM,SAGd,GAAa,KAAM,GAIpB,AAAI,IACH,IAAW,KAAK,KAAO,SAGxB,OAAW,KAAO,QAAO,KAAK,IAC7B,GAAW,GAAK,QAAU,GAAI,QAAO,GAAmB,GAAW,GAAK,OAAQ,KAEhF,GAAO,GAAO,CACb,MACC,GAAM,GAAQ,GAAW,GACzB,MAAO,IAAM,KAAK,KAAM,KAAK,QAAU,KAAK,QAAQ,OAAO,GAAS,CAAC,GAAQ,KAAK,OAAQ,KAK7F,GAAO,QAAU,CAChB,MACC,MAAO,IAAM,KAAK,KAAM,KAAK,SAAW,GAAI,GAAM,aAIpD,GAAW,MAAM,QAAU,GAAI,QAAO,GAAmB,GAAW,MAAM,OAAQ,KAClF,OAAW,KAAS,QAAO,KAAK,GAAW,MAAM,MAChD,AAAI,GAAW,IAAI,IAInB,IAAO,GAAS,CACf,MACC,GAAM,GAAQ,KAAK,MACnB,MAAO,YAEN,GAAM,GAAQ,CACb,KAFY,GAAW,MAAM,GAAa,IAAQ,GAAO,MAAM,KAAM,WAGrE,MAAO,GAAW,MAAM,MACxB,QAAS,GAAW,MAAM,SAE3B,MAAO,IAAM,KAAK,KAAM,KAAK,QAAU,KAAK,QAAQ,OAAO,GAAS,CAAC,GAAQ,KAAK,OAAQ,OAM9F,GAAW,QAAQ,QAAU,GAAI,QAAO,GAAmB,GAAW,QAAQ,OAAQ,KACtF,OAAW,KAAS,QAAO,KAAK,GAAW,QAAQ,OAClD,GAAI,GAAW,IAAI,GAClB,SAGD,GAAM,GAAU,KAAO,EAAM,GAAG,cAAgB,EAAM,MAAM,GAC5D,GAAO,GAAW,CACjB,MACC,GAAM,GAAQ,KAAK,MACnB,MAAO,YAEN,GAAM,GAAQ,CACb,KAFY,GAAW,QAAQ,GAAa,IAAQ,GAAO,MAAM,KAAM,WAGvE,MAAO,GAAW,QAAQ,MAC1B,QAAS,GAAW,QAAQ,SAE7B,MAAO,IAAM,KAAK,KAAM,KAAK,QAAU,KAAK,QAAQ,OAAO,GAAS,CAAC,GAAQ,KAAK,OAAQ,MAM9F,GAAM,IAAQ,OAAO,iBAAiB,OAAU,IAEhD,YAAe,EAAS,EAAQ,GAC/B,GAAM,GAAU,WACf,MAAO,IAAW,MAAM,EAAS,YAGlC,EAAQ,QAAU,EAClB,EAAQ,OAAS,EAEjB,GAAM,GAAO,KAEb,cAAO,eAAe,EAAS,QAAS,CACvC,WAAY,GACZ,MACC,MAAO,GAAK,OAEb,IAAI,GACH,EAAK,MAAQ,KAIf,OAAO,eAAe,EAAS,UAAW,CACzC,WAAY,GACZ,MACC,MAAO,GAAK,SAEb,IAAI,GACH,EAAK,QAAU,KAKjB,EAAQ,QAAU,KAAK,SAAW,IAAQ,QAAU,IAAQ,OAI5D,EAAQ,UAAY,GAEb,EAGR,cAEC,GAAM,GAAO,UACP,EAAU,EAAK,OACjB,EAAM,OAAO,UAAU,IAE3B,GAAI,IAAY,EACf,MAAO,GAGR,GAAI,EAAU,EAEb,OAAS,GAAI,EAAG,EAAI,EAAS,IAC5B,GAAO,IAAM,EAAK,GAIpB,GAAI,CAAC,KAAK,SAAW,KAAK,OAAS,GAAK,CAAC,EACxC,MAAO,MAAK,OAAS,GAAK,EAM3B,GAAM,GAAc,GAAW,IAAI,KACnC,AAAI,IAAuB,KAAK,SAC/B,IAAW,IAAI,KAAO,IAGvB,OAAW,KAAQ,MAAK,QAAQ,QAAQ,UAIvC,EAAM,EAAK,KAAO,EAAI,QAAQ,EAAK,QAAS,EAAK,MAAQ,EAAK,MAK9D,EAAM,EAAI,QAAQ,SAAU,GAAG,EAAK,UAAU,EAAK,QAIpD,UAAW,IAAI,KAAO,EAEf,EAGR,YAAkB,EAAO,GACxB,GAAI,CAAC,MAAM,QAAQ,GAGlB,MAAO,GAAG,MAAM,KAAK,UAAW,GAAG,KAAK,KAGzC,GAAM,GAAO,GAAG,MAAM,KAAK,UAAW,GAChC,EAAQ,CAAC,EAAQ,IAAI,IAE3B,OAAS,GAAI,EAAG,EAAI,EAAQ,OAAQ,IACnC,EAAM,KAAK,OAAO,EAAK,EAAI,IAAI,QAAQ,UAAW,SAClD,EAAM,KAAK,OAAO,EAAQ,IAAI,KAG/B,MAAO,IAAS,EAAO,EAAM,KAAK,KAGnC,OAAO,iBAAiB,GAAM,UAAW,IAEzC,GAAO,QAAU,KACjB,GAAO,QAAQ,cAAgB,GAC/B,GAAO,QAAQ,QAAU,GAAO,UCnOhC,2BAEA,OAAO,eAAe,GAAS,aAAc,CAC3C,MAAO,KAET,GAAQ,gBAAkB,GAC1B,GAAQ,SAAW,GACnB,GAAQ,QAAU,GAElB,GAAI,IAAa,GAAgC,MAE7C,GAAqC,KAErC,GAAS,GAA+B,MAE5C,YAAgC,GAAO,MAAO,IAAO,EAAI,WAAa,EAAM,CAAE,QAAS,GAEvF,cAAsC,GAAI,MAAO,UAAY,WAAY,MAAO,MAAM,GAAI,GAAQ,GAAI,SAAW,UAA2B,WAAc,MAAO,IAAiB,EAElL,YAAiC,GAAO,GAAI,GAAO,EAAI,WAAc,MAAO,GAAO,GAAI,IAAQ,MAAQ,MAAO,IAAQ,UAAY,MAAO,IAAQ,WAAc,MAAO,CAAE,QAAS,GAAS,GAAI,GAAQ,KAA4B,GAAI,GAAS,EAAM,IAAI,GAAQ,MAAO,GAAM,IAAI,GAAQ,GAAI,GAAS,GAAQ,EAAwB,OAAO,gBAAkB,OAAO,yBAA0B,OAAS,KAAO,GAAO,GAAI,OAAO,UAAU,eAAe,KAAK,EAAK,IAAQ,GAAI,GAAO,EAAwB,OAAO,yBAAyB,EAAK,GAAO,KAAM,AAAI,GAAS,GAAK,KAAO,EAAK,KAAQ,OAAO,eAAe,EAAQ,EAAK,GAAgB,EAAO,GAAO,EAAI,GAAY,SAAO,QAAU,EAAS,GAAS,EAAM,IAAI,EAAK,GAAkB,EAE9tB,GAAM,IAAoB,GAAI,KAAI,CAAC,KAAM,QAAS,OAAQ,MAAO,KAAM,QAEvE,YAAiB,GACf,MAAO,CACL,QAAS,EAAM,KACf,YAAa,EAAM,OACnB,cAAe,EAAM,OACrB,WAAY,EAAM,OAClB,OAAQ,EAAM,QACd,OAAQ,EAAM,MACd,MAAO,EAAM,QACb,QAAS,EAAM,KACf,QAAS,EAAM,MAAM,MAAM,MAI/B,GAAM,IAAU,0BACV,GAAU,cACZ,GACJ,CACE,GAAM,CACJ,gBACE,GACE,EAAU,iBAEV,EAAe,SAAU,EAAO,EAAQ,GAC5C,GAAI,EAAM,OAAS,QACjB,GAAK,AAhDX,GAgDc,GAA2B,WAAW,EAAM,QAAW,AAhDrE,GAgDwE,GAA2B,sBAAsB,EAAM,MAAO,KAAS,GAAkB,IAAI,EAAM,OACnK,MAAO,UAGT,GAAI,EAAQ,KAAK,EAAM,QAAW,GAAK,EAAS,KAAO,KAAO,EAAK,OAAO,EAAS,EAAG,IAAM,MAC1F,MAAO,gBAGT,GAAI,EAAM,MAAM,KAAO,EAAM,MAAM,GAAG,cACpC,MAAO,cAIX,MAAI,GAAM,OAAS,cAAgB,GAAQ,KAAK,EAAM,OAC7C,UAGL,EAAM,OAAS,WAAc,GAAM,QAAU,KAAO,EAAM,QAAU,KAC/D,aAGF,EAAM,MAGf,GAAW,UAAW,GACpB,GAAI,GAEJ,KAAO,EAAQ,GAAW,QAAQ,KAAK,KACrC,GAAM,GAAQ,EAAa,GAC3B,KAAM,CACJ,KAAM,EAAa,EAAO,EAAM,MAAO,GACvC,MAAO,EAAM,SAMrB,YAAyB,EAAM,GAC7B,GAAI,GAAc,GAElB,OAAW,CACT,OACA,UACG,IAAS,IACZ,GAAM,GAAW,EAAK,GAEtB,AAAI,EACF,GAAe,EAAM,MAAM,IAAS,IAAI,GAAO,EAAS,IAAM,KAAK;AAAA,GAEnE,GAAe,EAInB,MAAO,GAGT,YAAyB,GACvB,MAAO,IAAO,QAAQ,eAAiB,EAAQ,WAGjD,YAAkB,GAChB,GAAI,GAAQ,GAAO,QAEnB,MAAI,GAAQ,YACV,GAAQ,GAAI,IAAO,QAAQ,YAAY,CACrC,QAAS,GACT,MAAO,KAIJ,EAGT,YAAmB,EAAM,EAAU,IACjC,GAAI,GAAgB,IAClB,GAAM,GAAQ,GAAS,GACjB,EAAO,GAAQ,GACrB,MAAO,IAAgB,EAAM,OAE7B,OAAO,MC/HX,2BAEA,OAAO,eAAe,GAAS,aAAc,CAC3C,MAAO,KAET,GAAQ,iBAAmB,GAC3B,GAAQ,QAAU,GAElB,GAAI,IAAa,GAAgC,MAEjD,cAAsC,GAAI,MAAO,UAAY,WAAY,MAAO,MAAM,GAAI,GAAQ,GAAI,SAAW,UAA2B,WAAc,MAAO,IAAiB,EAElL,YAAiC,GAAO,GAAI,GAAO,EAAI,WAAc,MAAO,GAAO,GAAI,IAAQ,MAAQ,MAAO,IAAQ,UAAY,MAAO,IAAQ,WAAc,MAAO,CAAE,QAAS,GAAS,GAAI,GAAQ,KAA4B,GAAI,GAAS,EAAM,IAAI,GAAQ,MAAO,GAAM,IAAI,GAAQ,GAAI,GAAS,GAAQ,EAAwB,OAAO,gBAAkB,OAAO,yBAA0B,OAAS,KAAO,GAAO,GAAI,OAAO,UAAU,eAAe,KAAK,EAAK,IAAQ,GAAI,GAAO,EAAwB,OAAO,yBAAyB,EAAK,GAAO,KAAM,AAAI,GAAS,GAAK,KAAO,EAAK,KAAQ,OAAO,eAAe,EAAQ,EAAK,GAAgB,EAAO,GAAO,EAAI,GAAY,SAAO,QAAU,EAAS,GAAS,EAAM,IAAI,EAAK,GAAkB,EAE9tB,GAAI,IAA0B,GAE9B,YAAiB,GACf,MAAO,CACL,OAAQ,EAAM,KACd,OAAQ,EAAM,IAAI,KAClB,QAAS,EAAM,IAAI,MAIvB,GAAM,IAAU,0BAEhB,YAAwB,EAAK,EAAQ,GACnC,GAAM,GAAW,OAAO,OAAO,CAC7B,OAAQ,EACR,KAAM,IACL,EAAI,OACD,EAAS,OAAO,OAAO,GAAI,EAAU,EAAI,KACzC,CACJ,aAAa,EACb,aAAa,GACX,GAAQ,GACN,EAAY,EAAS,KACrB,EAAc,EAAS,OACvB,EAAU,EAAO,KACjB,EAAY,EAAO,OACrB,EAAQ,KAAK,IAAI,EAAa,GAAa,GAAI,GAC/C,EAAM,KAAK,IAAI,EAAO,OAAQ,EAAU,GAE5C,AAAI,IAAc,IAChB,GAAQ,GAGN,IAAY,IACd,GAAM,EAAO,QAGf,GAAM,GAAW,EAAU,EACrB,EAAc,GAEpB,GAAI,EACF,OAAS,GAAI,EAAG,GAAK,EAAU,KAC7B,GAAM,GAAa,EAAI,EAEvB,GAAI,CAAC,EACH,EAAY,GAAc,WACjB,IAAM,GACf,GAAM,GAAe,EAAO,EAAa,GAAG,OAC5C,EAAY,GAAc,CAAC,EAAa,EAAe,EAAc,WAC5D,IAAM,EACf,EAAY,GAAc,CAAC,EAAG,QAE9B,GAAM,GAAe,EAAO,EAAa,GAAG,OAC5C,EAAY,GAAc,CAAC,EAAG,QAIlC,AAAI,KAAgB,EAClB,AAAI,EACF,EAAY,GAAa,CAAC,EAAa,GAEvC,EAAY,GAAa,GAG3B,EAAY,GAAa,CAAC,EAAa,EAAY,GAIvD,MAAO,CACL,QACA,MACA,eAIJ,YAA0B,EAAU,EAAK,EAAO,IAC9C,GAAM,GAAe,GAAK,eAAiB,EAAK,aAAgB,AA1FlE,GA0FqE,GAAW,iBAAiB,GACzF,EAAS,AA3FjB,GA2FoB,GAAW,UAAU,GACjC,EAAO,GAAQ,GAEf,EAAiB,CAAC,EAAS,IACxB,EAAc,EAAQ,GAAU,EAGnC,EAAQ,EAAS,MAAM,IACvB,CACJ,QACA,MACA,eACE,GAAe,EAAK,EAAO,GACzB,EAAa,EAAI,OAAS,MAAO,GAAI,MAAM,QAAW,SACtD,EAAiB,OAAO,GAAK,OAE/B,EAAQ,AADa,GAAe,AA1G1C,GA0G6C,GAAW,SAAS,EAAU,GAAQ,GACpD,MAAM,IAAS,MAAM,EAAO,GAAK,IAAI,CAAC,EAAM,KACvE,GAAM,GAAS,EAAQ,EAAI,EAErB,EAAS,IADM,IAAI,IAAS,MAAM,CAAC,OAEnC,EAAY,EAAY,GACxB,EAAiB,CAAC,EAAY,EAAS,GAE7C,GAAI,GACF,GAAI,GAAa,GAEjB,GAAI,MAAM,QAAQ,IAChB,GAAM,GAAgB,EAAK,MAAM,EAAG,KAAK,IAAI,EAAU,GAAK,EAAG,IAAI,QAAQ,SAAU,KAC/E,EAAkB,EAAU,IAAM,EACxC,EAAa,CAAC;AAAA,GAAO,EAAe,EAAK,OAAQ,EAAO,QAAQ,MAAO,MAAO,IAAK,EAAe,EAAe,EAAK,OAAQ,KAAK,OAAO,IAAkB,KAAK,IAE7J,GAAkB,EAAK,SACzB,IAAc,IAAM,EAAe,EAAK,QAAS,EAAK,UAI1D,MAAO,CAAC,EAAe,EAAK,OAAQ,KAAM,EAAe,EAAK,OAAQ,GAAS,EAAK,OAAS,EAAI,IAAI,IAAS,GAAI,GAAY,KAAK,QAEnI,OAAO,IAAI,EAAe,EAAK,OAAQ,KAAU,EAAK,OAAS,EAAI,IAAI,IAAS,OAEjF,KAAK;AAAA,GAMR,MAJI,GAAK,SAAW,CAAC,GACnB,GAAQ,GAAG,IAAI,OAAO,EAAiB,KAAK,EAAK;AAAA,EAAY,KAG3D,EACK,EAAM,MAAM,GAEZ,EAIX,YAAkB,EAAU,EAAY,EAAW,EAAO,IACxD,GAAI,CAAC,IACH,GAA0B,GAC1B,GAAM,GAAU,sGAEhB,GAAI,QAAQ,YACV,QAAQ,YAAY,EAAS,2BAE7B,GAAM,GAAmB,GAAI,OAAM,GACnC,EAAiB,KAAO,qBACxB,QAAQ,KAAK,GAAI,OAAM,KAI3B,SAAY,KAAK,IAAI,EAAW,GAOzB,GAAiB,EANP,CACf,MAAO,CACL,OAAQ,EACR,KAAM,IAGkC,MCrK9C,gCACA,GAAM,IAAkB,KAClB,GAAmB,KACnB,CAAC,QAAS,IAA2B,KACrC,CAAC,qBAA4B,KAE7B,GAAY,GAAQ,YAAa,CACtC,SAAU,GAAQ,OAAO,SACzB,UAAW,GAAQ,OAAO;AAAA;AAAA;AAAA,KAGrB,GAAY,CAAC,EAAQ,EAAS,KACnC,AAAI,MAAO,IAAY,UACtB,GAAW,EACX,EAAU,MAGX,IACC,IACC,MAAO,MAAK,MAAM,EAAQ,SAClB,GACR,SAAS,EAAQ,GACX,SAEC,GACR,EAAM,QAAU,EAAM,QAAQ,QAAQ,MAAO,IAC7C,GAAM,GAAa,EAAM,QAAQ,MAAM,2CAEjC,EAAY,GAAI,IAAU,GAKhC,GAJI,GACH,GAAU,SAAW,GAGlB,GAAc,EAAW,OAAS,GACrC,GAAM,GAAQ,GAAI,IAAgB,GAC5B,EAAQ,OAAO,EAAW,IAC1B,EAAW,EAAM,iBAAiB,GAElC,EAAY,GACjB,EACA,CAAC,MAAO,CAAC,KAAM,EAAS,KAAO,EAAG,OAAQ,EAAS,OAAS,IAC5D,CAAC,cAAe,KAGjB,EAAU,UAAY,EAGvB,KAAM,KAIR,GAAU,UAAY,GAEtB,GAAO,QAAU,KCrDjB,oBAAU,GAAO,QAAU,EAE3B,GAAI,GAEJ,AAAI,MAAO,UAAY,UACnB,QAAQ,KACR,QAAQ,IAAI,YACZ,cAAc,KAAK,QAAQ,IAAI,YACjC,EAAQ,WACN,GAAI,GAAO,MAAM,UAAU,MAAM,KAAK,UAAW,GACjD,EAAK,QAAQ,UACb,QAAQ,IAAI,MAAM,QAAS,IAG7B,EAAQ,aAKV,EAAQ,oBAAsB,QAE9B,GAAI,IAAa,IACb,GAAmB,OAAO,kBACD,iBAGzB,GAA4B,GAG5B,GAAK,EAAQ,GAAK,GAClB,EAAM,EAAQ,IAAM,GACpB,EAAI,EAQJ,GAAoB,IACxB,EAAI,IAAqB,cACzB,GAAI,IAAyB,IAC7B,EAAI,IAA0B,SAM9B,GAAI,IAAuB,IAC3B,EAAI,IAAwB,6BAK5B,GAAI,IAAc,IAClB,EAAI,IAAe,IAAM,EAAI,IAAqB,QACzB,EAAI,IAAqB,QACzB,EAAI,IAAqB,IAElD,GAAI,IAAmB,IACvB,EAAI,IAAoB,IAAM,EAAI,IAA0B,QAC9B,EAAI,IAA0B,QAC9B,EAAI,IAA0B,IAK5D,GAAI,IAAuB,IAC3B,EAAI,IAAwB,MAAQ,EAAI,IACZ,IAAM,EAAI,IAAwB,IAE9D,GAAI,IAA4B,IAChC,EAAI,IAA6B,MAAQ,EAAI,IACZ,IAAM,EAAI,IAAwB,IAMnE,GAAI,IAAa,IACjB,EAAI,IAAc,QAAU,EAAI,IACd,SAAW,EAAI,IAAwB,OAEzD,GAAI,IAAkB,IACtB,EAAI,IAAmB,SAAW,EAAI,IACf,SAAW,EAAI,IAA6B,OAKnE,GAAI,IAAkB,IACtB,EAAI,IAAmB,gBAMvB,GAAI,IAAQ,IACZ,EAAI,IAAS,UAAY,EAAI,IAChB,SAAW,EAAI,IAAmB,OAW/C,GAAI,IAAO,IACP,GAAY,KAAO,EAAI,IACX,EAAI,IAAc,IAClB,EAAI,IAAS,IAE7B,EAAI,IAAQ,IAAM,GAAY,IAK9B,GAAI,IAAa,WAAa,EAAI,IACjB,EAAI,IAAmB,IACvB,EAAI,IAAS,IAE1B,GAAQ,IACZ,EAAI,IAAS,IAAM,GAAa,IAEhC,GAAI,IAAO,IACX,EAAI,IAAQ,eAKZ,GAAI,IAAwB,IAC5B,EAAI,IAAyB,EAAI,IAA0B,WAC3D,GAAI,IAAmB,IACvB,EAAI,IAAoB,EAAI,IAAqB,WAEjD,GAAI,IAAc,IAClB,EAAI,IAAe,YAAc,EAAI,IAAoB,WAC1B,EAAI,IAAoB,WACxB,EAAI,IAAoB,OAC5B,EAAI,IAAc,KAC1B,EAAI,IAAS,QAGhC,GAAI,IAAmB,IACvB,EAAI,IAAoB,YAAc,EAAI,IAAyB,WAC/B,EAAI,IAAyB,WAC7B,EAAI,IAAyB,OACjC,EAAI,IAAmB,KAC/B,EAAI,IAAS,QAGrC,GAAI,IAAS,IACb,EAAI,IAAU,IAAM,EAAI,IAAQ,OAAS,EAAI,IAAe,IAC5D,GAAI,IAAc,IAClB,EAAI,IAAe,IAAM,EAAI,IAAQ,OAAS,EAAI,IAAoB,IAItE,GAAI,IAAS,IACb,EAAI,IAAU,sBACY,GAA4B,kBACtB,GAA4B,oBAC5B,GAA4B,mBAK5D,GAAI,IAAY,IAChB,EAAI,IAAa,UAEjB,GAAI,IAAY,IAChB,EAAI,IAAa,SAAW,EAAI,IAAa,OAC7C,GAAG,IAAa,GAAI,QAAO,EAAI,IAAY,KAC3C,GAAI,IAAmB,MAEnB,GAAQ,IACZ,EAAI,IAAS,IAAM,EAAI,IAAa,EAAI,IAAe,IACvD,GAAI,IAAa,IACjB,EAAI,IAAc,IAAM,EAAI,IAAa,EAAI,IAAoB,IAIjE,GAAI,IAAY,IAChB,EAAI,IAAa,UAEjB,GAAI,IAAY,IAChB,EAAI,IAAa,SAAW,EAAI,IAAa,OAC7C,GAAG,IAAa,GAAI,QAAO,EAAI,IAAY,KAC3C,GAAI,IAAmB,MAEnB,GAAQ,IACZ,EAAI,IAAS,IAAM,EAAI,IAAa,EAAI,IAAe,IACvD,GAAI,IAAa,IACjB,EAAI,IAAc,IAAM,EAAI,IAAa,EAAI,IAAoB,IAGjE,GAAI,IAAkB,IACtB,EAAI,IAAmB,IAAM,EAAI,IAAQ,QAAU,GAAa,QAChE,GAAI,IAAa,IACjB,EAAI,IAAc,IAAM,EAAI,IAAQ,QAAU,GAAY,QAI1D,GAAI,IAAiB,IACrB,EAAI,IAAkB,SAAW,EAAI,IACf,QAAU,GAAa,IAAM,EAAI,IAAe,IAGtE,GAAG,IAAkB,GAAI,QAAO,EAAI,IAAiB,KACrD,GAAI,IAAwB,SAMxB,GAAc,IAClB,EAAI,IAAe,SAAW,EAAI,IAAe,cAExB,EAAI,IAAe,SAG5C,GAAI,IAAmB,IACvB,EAAI,IAAoB,SAAW,EAAI,IAAoB,cAE7B,EAAI,IAAoB,SAItD,GAAI,IAAO,IACX,EAAI,IAAQ,kBAIZ,OAAS,IAAI,EAAG,GAAI,EAAG,KACrB,EAAM,GAAG,EAAI,KACR,GAAG,KACN,IAAG,IAAK,GAAI,QAAO,EAAI,MAI3B,EAAQ,MAAQ,GAChB,YAAgB,EAAS,GAQvB,GAPI,EAAC,GAAW,MAAO,IAAY,WACjC,GAAU,CACR,MAAO,CAAC,CAAC,EACT,kBAAmB,KAInB,YAAmB,GACrB,MAAO,GAOT,GAJI,MAAO,IAAY,UAInB,EAAQ,OAAS,GACnB,MAAO,MAGT,GAAI,GAAI,EAAQ,MAAQ,GAAG,IAAS,GAAG,IACvC,GAAI,CAAC,EAAE,KAAK,GACV,MAAO,MAGT,IACE,MAAO,IAAI,GAAO,EAAS,SACpB,GACP,MAAO,OAIX,EAAQ,MAAQ,GAChB,YAAgB,EAAS,GACvB,GAAI,GAAI,GAAM,EAAS,GACvB,MAAO,GAAI,EAAE,QAAU,KAGzB,EAAQ,MAAQ,GAChB,YAAgB,EAAS,GACvB,GAAI,GAAI,GAAM,EAAQ,OAAO,QAAQ,SAAU,IAAK,GACpD,MAAO,GAAI,EAAE,QAAU,KAGzB,EAAQ,OAAS,EAEjB,WAAiB,EAAS,GAOxB,GANI,EAAC,GAAW,MAAO,IAAY,WACjC,GAAU,CACR,MAAO,CAAC,CAAC,EACT,kBAAmB,KAGnB,YAAmB,IACrB,GAAI,EAAQ,QAAU,EAAQ,MAC5B,MAAO,GAEP,EAAU,EAAQ,gBAEX,MAAO,IAAY,SAC5B,KAAM,IAAI,WAAU,oBAAsB,GAG5C,GAAI,EAAQ,OAAS,GACnB,KAAM,IAAI,WAAU,0BAA4B,GAAa,eAG/D,GAAI,CAAE,gBAAgB,IACpB,MAAO,IAAI,GAAO,EAAS,GAG7B,EAAM,SAAU,EAAS,GACzB,KAAK,QAAU,EACf,KAAK,MAAQ,CAAC,CAAC,EAAQ,MAEvB,GAAI,GAAI,EAAQ,OAAO,MAAM,EAAQ,MAAQ,GAAG,IAAS,GAAG,KAE5D,GAAI,CAAC,EACH,KAAM,IAAI,WAAU,oBAAsB,GAU5C,GAPA,KAAK,IAAM,EAGX,KAAK,MAAQ,CAAC,EAAE,GAChB,KAAK,MAAQ,CAAC,EAAE,GAChB,KAAK,MAAQ,CAAC,EAAE,GAEZ,KAAK,MAAQ,IAAoB,KAAK,MAAQ,EAChD,KAAM,IAAI,WAAU,yBAGtB,GAAI,KAAK,MAAQ,IAAoB,KAAK,MAAQ,EAChD,KAAM,IAAI,WAAU,yBAGtB,GAAI,KAAK,MAAQ,IAAoB,KAAK,MAAQ,EAChD,KAAM,IAAI,WAAU,yBAItB,AAAK,EAAE,GAGL,KAAK,WAAa,EAAE,GAAG,MAAM,KAAK,IAAI,SAAU,GAC9C,GAAI,WAAW,KAAK,IAClB,GAAI,GAAM,CAAC,EACX,GAAI,GAAO,GAAK,EAAM,GACpB,MAAO,GAGX,MAAO,KATT,KAAK,WAAa,GAapB,KAAK,MAAQ,EAAE,GAAK,EAAE,GAAG,MAAM,KAAO,GACtC,KAAK,SAGP,EAAO,UAAU,OAAS,WACxB,YAAK,QAAU,KAAK,MAAQ,IAAM,KAAK,MAAQ,IAAM,KAAK,MACtD,KAAK,WAAW,QAClB,MAAK,SAAW,IAAM,KAAK,WAAW,KAAK,MAEtC,KAAK,SAGd,EAAO,UAAU,SAAW,WAC1B,MAAO,MAAK,SAGd,EAAO,UAAU,QAAU,SAAU,GACnC,SAAM,iBAAkB,KAAK,QAAS,KAAK,QAAS,GAC9C,YAAiB,IACrB,GAAQ,GAAI,GAAO,EAAO,KAAK,UAG1B,KAAK,YAAY,IAAU,KAAK,WAAW,IAGpD,EAAO,UAAU,YAAc,SAAU,GACvC,MAAM,aAAiB,IACrB,GAAQ,GAAI,GAAO,EAAO,KAAK,UAG1B,GAAmB,KAAK,MAAO,EAAM,QACrC,GAAmB,KAAK,MAAO,EAAM,QACrC,GAAmB,KAAK,MAAO,EAAM,QAG9C,EAAO,UAAU,WAAa,SAAU,GAMtC,GALM,YAAiB,IACrB,GAAQ,GAAI,GAAO,EAAO,KAAK,UAI7B,KAAK,WAAW,QAAU,CAAC,EAAM,WAAW,OAC9C,MAAO,GACF,GAAI,CAAC,KAAK,WAAW,QAAU,EAAM,WAAW,OACrD,MAAO,GACF,GAAI,CAAC,KAAK,WAAW,QAAU,CAAC,EAAM,WAAW,OACtD,MAAO,GAGT,GAAI,GAAI,EACR,GACE,GAAI,GAAI,KAAK,WAAW,GACpB,EAAI,EAAM,WAAW,GAEzB,GADA,EAAM,qBAAsB,EAAG,EAAG,GAC9B,IAAM,QAAa,IAAM,OAC3B,MAAO,GACF,GAAI,IAAM,OACf,MAAO,GACF,GAAI,IAAM,OACf,MAAO,GACF,GAAI,IAAM,EACf,SAEA,MAAO,IAAmB,EAAG,SAExB,EAAE,IAKb,EAAO,UAAU,IAAM,SAAU,EAAS,GACxC,OAAQ,OACD,WACH,KAAK,WAAW,OAAS,EACzB,KAAK,MAAQ,EACb,KAAK,MAAQ,EACb,KAAK,QACL,KAAK,IAAI,MAAO,GAChB,UACG,WACH,KAAK,WAAW,OAAS,EACzB,KAAK,MAAQ,EACb,KAAK,QACL,KAAK,IAAI,MAAO,GAChB,UACG,WAIH,KAAK,WAAW,OAAS,EACzB,KAAK,IAAI,QAAS,GAClB,KAAK,IAAI,MAAO,GAChB,UAGG,aACH,AAAI,KAAK,WAAW,SAAW,GAC7B,KAAK,IAAI,QAAS,GAEpB,KAAK,IAAI,MAAO,GAChB,UAEG,QAKH,AAAI,MAAK,QAAU,GACf,KAAK,QAAU,GACf,KAAK,WAAW,SAAW,IAC7B,KAAK,QAEP,KAAK,MAAQ,EACb,KAAK,MAAQ,EACb,KAAK,WAAa,GAClB,UACG,QAKH,AAAI,MAAK,QAAU,GAAK,KAAK,WAAW,SAAW,IACjD,KAAK,QAEP,KAAK,MAAQ,EACb,KAAK,WAAa,GAClB,UACG,QAKH,AAAI,KAAK,WAAW,SAAW,GAC7B,KAAK,QAEP,KAAK,WAAa,GAClB,UAGG,MACH,GAAI,KAAK,WAAW,SAAW,EAC7B,KAAK,WAAa,CAAC,QAGnB,OADI,GAAI,KAAK,WAAW,OACjB,EAAE,GAAK,GACZ,AAAI,MAAO,MAAK,WAAW,IAAO,UAChC,MAAK,WAAW,KAChB,EAAI,IAGR,AAAI,IAAM,IAER,KAAK,WAAW,KAAK,GAGzB,AAAI,GAGF,CAAI,KAAK,WAAW,KAAO,EACrB,MAAM,KAAK,WAAW,KACxB,MAAK,WAAa,CAAC,EAAY,IAGjC,KAAK,WAAa,CAAC,EAAY,IAGnC,cAGA,KAAM,IAAI,OAAM,+BAAiC,GAErD,YAAK,SACL,KAAK,IAAM,KAAK,QACT,MAGT,EAAQ,IAAM,GACd,YAAc,EAAS,EAAS,EAAO,GACrC,AAAI,MAAQ,IAAW,UACrB,GAAa,EACb,EAAQ,QAGV,IACE,MAAO,IAAI,GAAO,EAAS,GAAO,IAAI,EAAS,GAAY,cACpD,GACP,MAAO,OAIX,EAAQ,KAAO,GACf,YAAe,EAAU,GACvB,GAAI,GAAG,EAAU,GACf,MAAO,MAEP,GAAI,GAAK,GAAM,GACX,EAAK,GAAM,GACX,EAAS,GACb,GAAI,EAAG,WAAW,QAAU,EAAG,WAAW,QACxC,EAAS,MACT,GAAI,GAAgB,aAEtB,OAAS,KAAO,GACd,GAAI,KAAQ,SAAW,IAAQ,SAAW,IAAQ,UAC5C,EAAG,KAAS,EAAG,GACjB,MAAO,GAAS,EAItB,MAAO,GAIX,EAAQ,mBAAqB,GAE7B,GAAI,IAAU,WACd,YAA6B,EAAG,GAC9B,GAAI,GAAO,GAAQ,KAAK,GACpB,EAAO,GAAQ,KAAK,GAExB,MAAI,IAAQ,GACV,GAAI,CAAC,EACL,EAAI,CAAC,GAGA,IAAM,EAAI,EACZ,GAAQ,CAAC,EAAQ,GACjB,GAAQ,CAAC,EAAQ,EAClB,EAAI,EAAI,GACR,EAGN,EAAQ,oBAAsB,GAC9B,YAA8B,EAAG,GAC/B,MAAO,IAAmB,EAAG,GAG/B,EAAQ,MAAQ,GAChB,YAAgB,EAAG,GACjB,MAAO,IAAI,GAAO,EAAG,GAAO,MAG9B,EAAQ,MAAQ,GAChB,YAAgB,EAAG,GACjB,MAAO,IAAI,GAAO,EAAG,GAAO,MAG9B,EAAQ,MAAQ,GAChB,YAAgB,EAAG,GACjB,MAAO,IAAI,GAAO,EAAG,GAAO,MAG9B,EAAQ,QAAU,GAClB,YAAkB,EAAG,EAAG,GACtB,MAAO,IAAI,GAAO,EAAG,GAAO,QAAQ,GAAI,GAAO,EAAG,IAGpD,EAAQ,aAAe,GACvB,YAAuB,EAAG,GACxB,MAAO,IAAQ,EAAG,EAAG,IAGvB,EAAQ,SAAW,GACnB,YAAmB,EAAG,EAAG,GACvB,MAAO,IAAQ,EAAG,EAAG,GAGvB,EAAQ,KAAO,GACf,YAAe,EAAM,GACnB,MAAO,GAAK,KAAK,SAAU,EAAG,GAC5B,MAAO,GAAQ,QAAQ,EAAG,EAAG,KAIjC,EAAQ,MAAQ,GAChB,YAAgB,EAAM,GACpB,MAAO,GAAK,KAAK,SAAU,EAAG,GAC5B,MAAO,GAAQ,SAAS,EAAG,EAAG,KAIlC,EAAQ,GAAK,GACb,YAAa,EAAG,EAAG,GACjB,MAAO,IAAQ,EAAG,EAAG,GAAS,EAGhC,EAAQ,GAAK,GACb,YAAa,EAAG,EAAG,GACjB,MAAO,IAAQ,EAAG,EAAG,GAAS,EAGhC,EAAQ,GAAK,GACb,YAAa,EAAG,EAAG,GACjB,MAAO,IAAQ,EAAG,EAAG,KAAW,EAGlC,EAAQ,IAAM,GACd,YAAc,EAAG,EAAG,GAClB,MAAO,IAAQ,EAAG,EAAG,KAAW,EAGlC,EAAQ,IAAM,GACd,YAAc,EAAG,EAAG,GAClB,MAAO,IAAQ,EAAG,EAAG,IAAU,EAGjC,EAAQ,IAAM,GACd,YAAc,EAAG,EAAG,GAClB,MAAO,IAAQ,EAAG,EAAG,IAAU,EAGjC,EAAQ,IAAM,GACd,YAAc,EAAG,EAAI,EAAG,GACtB,OAAQ,OACD,MACH,MAAI,OAAO,IAAM,UACf,GAAI,EAAE,SACJ,MAAO,IAAM,UACf,GAAI,EAAE,SACD,IAAM,MAEV,MACH,MAAI,OAAO,IAAM,UACf,GAAI,EAAE,SACJ,MAAO,IAAM,UACf,GAAI,EAAE,SACD,IAAM,MAEV,OACA,QACA,KACH,MAAO,IAAG,EAAG,EAAG,OAEb,KACH,MAAO,IAAI,EAAG,EAAG,OAEd,IACH,MAAO,IAAG,EAAG,EAAG,OAEb,KACH,MAAO,IAAI,EAAG,EAAG,OAEd,IACH,MAAO,IAAG,EAAG,EAAG,OAEb,KACH,MAAO,IAAI,EAAG,EAAG,WAGjB,KAAM,IAAI,WAAU,qBAAuB,IAIjD,EAAQ,WAAa,GACrB,YAAqB,EAAM,GAQzB,GAPI,EAAC,GAAW,MAAO,IAAY,WACjC,GAAU,CACR,MAAO,CAAC,CAAC,EACT,kBAAmB,KAInB,YAAgB,KAClB,GAAI,EAAK,QAAU,CAAC,CAAC,EAAQ,MAC3B,MAAO,GAEP,EAAO,EAAK,MAIhB,GAAI,CAAE,gBAAgB,KACpB,MAAO,IAAI,IAAW,EAAM,GAG9B,EAAM,aAAc,EAAM,GAC1B,KAAK,QAAU,EACf,KAAK,MAAQ,CAAC,CAAC,EAAQ,MACvB,KAAK,MAAM,GAEX,AAAI,KAAK,SAAW,GAClB,KAAK,MAAQ,GAEb,KAAK,MAAQ,KAAK,SAAW,KAAK,OAAO,QAG3C,EAAM,OAAQ,MAGhB,GAAI,IAAM,GACV,GAAW,UAAU,MAAQ,SAAU,GACrC,GAAI,GAAI,KAAK,QAAQ,MAAQ,GAAG,IAAmB,GAAG,IAClD,EAAI,EAAK,MAAM,GAEnB,GAAI,CAAC,EACH,KAAM,IAAI,WAAU,uBAAyB,GAG/C,KAAK,SAAW,EAAE,GACd,KAAK,WAAa,KACpB,MAAK,SAAW,IAIlB,AAAK,EAAE,GAGL,KAAK,OAAS,GAAI,GAAO,EAAE,GAAI,KAAK,QAAQ,OAF5C,KAAK,OAAS,IAMlB,GAAW,UAAU,SAAW,WAC9B,MAAO,MAAK,OAGd,GAAW,UAAU,KAAO,SAAU,GAGpC,MAFA,GAAM,kBAAmB,EAAS,KAAK,QAAQ,OAE3C,KAAK,SAAW,GACX,GAGL,OAAO,IAAY,UACrB,GAAU,GAAI,GAAO,EAAS,KAAK,UAG9B,GAAI,EAAS,KAAK,SAAU,KAAK,OAAQ,KAAK,WAGvD,GAAW,UAAU,WAAa,SAAU,EAAM,GAChD,GAAI,CAAE,aAAgB,KACpB,KAAM,IAAI,WAAU,4BAGtB,AAAI,EAAC,GAAW,MAAO,IAAY,WACjC,GAAU,CACR,MAAO,CAAC,CAAC,EACT,kBAAmB,KAIvB,GAAI,GAEJ,GAAI,KAAK,WAAa,GACpB,SAAW,GAAI,IAAM,EAAK,MAAO,GAC1B,GAAU,KAAK,MAAO,EAAU,GAClC,GAAI,EAAK,WAAa,GAC3B,SAAW,GAAI,IAAM,KAAK,MAAO,GAC1B,GAAU,EAAK,OAAQ,EAAU,GAG1C,GAAI,GACD,MAAK,WAAa,MAAQ,KAAK,WAAa,MAC5C,GAAK,WAAa,MAAQ,EAAK,WAAa,KAC3C,EACD,MAAK,WAAa,MAAQ,KAAK,WAAa,MAC5C,GAAK,WAAa,MAAQ,EAAK,WAAa,KAC3C,EAAa,KAAK,OAAO,UAAY,EAAK,OAAO,QACjD,EACD,MAAK,WAAa,MAAQ,KAAK,WAAa,OAC5C,GAAK,WAAa,MAAQ,EAAK,WAAa,MAC3C,EACF,GAAI,KAAK,OAAQ,IAAK,EAAK,OAAQ,IACjC,MAAK,WAAa,MAAQ,KAAK,WAAa,MAC7C,GAAK,WAAa,MAAQ,EAAK,WAAa,KAC3C,EACF,GAAI,KAAK,OAAQ,IAAK,EAAK,OAAQ,IACjC,MAAK,WAAa,MAAQ,KAAK,WAAa,MAC7C,GAAK,WAAa,MAAQ,EAAK,WAAa,KAE/C,MAAO,IAA2B,GAC/B,GAAc,GACf,GAA8B,GAGlC,EAAQ,MAAQ,GAChB,YAAgB,EAAO,GAQrB,GAPI,EAAC,GAAW,MAAO,IAAY,WACjC,GAAU,CACR,MAAO,CAAC,CAAC,EACT,kBAAmB,KAInB,YAAiB,IACnB,MAAI,GAAM,QAAU,CAAC,CAAC,EAAQ,OAC1B,EAAM,oBAAsB,CAAC,CAAC,EAAQ,kBACjC,EAEA,GAAI,IAAM,EAAM,IAAK,GAIhC,GAAI,YAAiB,IACnB,MAAO,IAAI,IAAM,EAAM,MAAO,GAGhC,GAAI,CAAE,gBAAgB,KACpB,MAAO,IAAI,IAAM,EAAO,GAgB1B,GAbA,KAAK,QAAU,EACf,KAAK,MAAQ,CAAC,CAAC,EAAQ,MACvB,KAAK,kBAAoB,CAAC,CAAC,EAAQ,kBAGnC,KAAK,IAAM,EACX,KAAK,IAAM,EAAM,MAAM,cAAc,IAAI,SAAU,GACjD,MAAO,MAAK,WAAW,EAAM,SAC5B,MAAM,OAAO,SAAU,GAExB,MAAO,GAAE,SAGP,CAAC,KAAK,IAAI,OACZ,KAAM,IAAI,WAAU,yBAA2B,GAGjD,KAAK,SAGP,GAAM,UAAU,OAAS,WACvB,YAAK,MAAQ,KAAK,IAAI,IAAI,SAAU,GAClC,MAAO,GAAM,KAAK,KAAK,SACtB,KAAK,MAAM,OACP,KAAK,OAGd,GAAM,UAAU,SAAW,WACzB,MAAO,MAAK,OAGd,GAAM,UAAU,WAAa,SAAU,GACrC,GAAI,GAAQ,KAAK,QAAQ,MACzB,EAAQ,EAAM,OAEd,GAAI,GAAK,EAAQ,GAAG,IAAoB,GAAG,IAC3C,EAAQ,EAAM,QAAQ,EAAI,IAC1B,EAAM,iBAAkB,GAExB,EAAQ,EAAM,QAAQ,GAAG,IAAiB,IAC1C,EAAM,kBAAmB,EAAO,GAAG,KAGnC,EAAQ,EAAM,QAAQ,GAAG,IAAY,IAGrC,EAAQ,EAAM,QAAQ,GAAG,IAAY,IAGrC,EAAQ,EAAM,MAAM,OAAO,KAAK,KAKhC,GAAI,GAAS,EAAQ,GAAG,IAAmB,GAAG,IAC1C,EAAM,EAAM,MAAM,KAAK,IAAI,SAAU,GACvC,MAAO,IAAgB,EAAM,KAAK,UACjC,MAAM,KAAK,KAAK,MAAM,OACzB,MAAI,MAAK,QAAQ,OAEf,GAAM,EAAI,OAAO,SAAU,GACzB,MAAO,CAAC,CAAC,EAAK,MAAM,MAGxB,EAAM,EAAI,IAAI,SAAU,GACtB,MAAO,IAAI,IAAW,EAAM,KAAK,UAChC,MAEI,GAGT,GAAM,UAAU,WAAa,SAAU,EAAO,GAC5C,GAAI,CAAE,aAAiB,KACrB,KAAM,IAAI,WAAU,uBAGtB,MAAO,MAAK,IAAI,KAAK,SAAU,GAC7B,MAAO,GAAgB,MAAM,SAAU,GACrC,MAAO,GAAM,IAAI,KAAK,SAAU,GAC9B,MAAO,GAAiB,MAAM,SAAU,GACtC,MAAO,GAAe,WAAW,EAAiB,YAQ5D,EAAQ,cAAgB,GACxB,YAAwB,EAAO,GAC7B,MAAO,IAAI,IAAM,EAAO,GAAS,IAAI,IAAI,SAAU,GACjD,MAAO,GAAK,IAAI,SAAU,GACxB,MAAO,GAAE,QACR,KAAK,KAAK,OAAO,MAAM,OAO9B,YAA0B,EAAM,GAC9B,SAAM,OAAQ,EAAM,GACpB,EAAO,GAAc,EAAM,GAC3B,EAAM,QAAS,GACf,EAAO,GAAc,EAAM,GAC3B,EAAM,SAAU,GAChB,EAAO,GAAe,EAAM,GAC5B,EAAM,SAAU,GAChB,EAAO,GAAa,EAAM,GAC1B,EAAM,QAAS,GACR,EAGT,YAAc,GACZ,MAAO,CAAC,GAAM,EAAG,gBAAkB,KAAO,IAAO,IASnD,YAAwB,EAAM,GAC5B,MAAO,GAAK,OAAO,MAAM,OAAO,IAAI,SAAU,GAC5C,MAAO,IAAa,EAAM,KACzB,KAAK,KAGV,YAAuB,EAAM,GAC3B,GAAI,GAAI,EAAQ,MAAQ,GAAG,IAAc,GAAG,IAC5C,MAAO,GAAK,QAAQ,EAAG,SAAU,EAAG,EAAG,EAAG,EAAG,GAC3C,EAAM,QAAS,EAAM,EAAG,EAAG,EAAG,EAAG,GACjC,GAAI,GAEJ,MAAI,IAAI,GACN,EAAM,GACD,AAAI,GAAI,GACb,EAAM,KAAO,EAAI,SAAY,EAAC,EAAI,GAAK,OAClC,AAAI,GAAI,GAEb,EAAM,KAAO,EAAI,IAAM,EAAI,OAAS,EAAI,IAAO,EAAC,EAAI,GAAK,KACpD,AAAI,EACT,GAAM,kBAAmB,GACzB,EAAM,KAAO,EAAI,IAAM,EAAI,IAAM,EAAI,IAAM,EACrC,KAAO,EAAI,IAAO,EAAC,EAAI,GAAK,MAGlC,EAAM,KAAO,EAAI,IAAM,EAAI,IAAM,EAC3B,KAAO,EAAI,IAAO,EAAC,EAAI,GAAK,KAGpC,EAAM,eAAgB,GACf,IAUX,YAAwB,EAAM,GAC5B,MAAO,GAAK,OAAO,MAAM,OAAO,IAAI,SAAU,GAC5C,MAAO,IAAa,EAAM,KACzB,KAAK,KAGV,YAAuB,EAAM,GAC3B,EAAM,QAAS,EAAM,GACrB,GAAI,GAAI,EAAQ,MAAQ,GAAG,IAAc,GAAG,IAC5C,MAAO,GAAK,QAAQ,EAAG,SAAU,EAAG,EAAG,EAAG,EAAG,GAC3C,EAAM,QAAS,EAAM,EAAG,EAAG,EAAG,EAAG,GACjC,GAAI,GAEJ,MAAI,IAAI,GACN,EAAM,GACD,AAAI,GAAI,GACb,EAAM,KAAO,EAAI,SAAY,EAAC,EAAI,GAAK,OAClC,AAAI,GAAI,GACb,AAAI,IAAM,IACR,EAAM,KAAO,EAAI,IAAM,EAAI,OAAS,EAAI,IAAO,EAAC,EAAI,GAAK,KAEzD,EAAM,KAAO,EAAI,IAAM,EAAI,OAAU,EAAC,EAAI,GAAK,OAE5C,AAAI,EACT,GAAM,kBAAmB,GACzB,AAAI,IAAM,IACR,AAAI,IAAM,IACR,EAAM,KAAO,EAAI,IAAM,EAAI,IAAM,EAAI,IAAM,EACrC,KAAO,EAAI,IAAM,EAAI,IAAO,EAAC,EAAI,GAEvC,EAAM,KAAO,EAAI,IAAM,EAAI,IAAM,EAAI,IAAM,EACrC,KAAO,EAAI,IAAO,EAAC,EAAI,GAAK,KAGpC,EAAM,KAAO,EAAI,IAAM,EAAI,IAAM,EAAI,IAAM,EACrC,KAAQ,EAAC,EAAI,GAAK,QAG1B,GAAM,SACN,AAAI,IAAM,IACR,AAAI,IAAM,IACR,EAAM,KAAO,EAAI,IAAM,EAAI,IAAM,EAC3B,KAAO,EAAI,IAAM,EAAI,IAAO,EAAC,EAAI,GAEvC,EAAM,KAAO,EAAI,IAAM,EAAI,IAAM,EAC3B,KAAO,EAAI,IAAO,EAAC,EAAI,GAAK,KAGpC,EAAM,KAAO,EAAI,IAAM,EAAI,IAAM,EAC3B,KAAQ,EAAC,EAAI,GAAK,QAI5B,EAAM,eAAgB,GACf,IAIX,YAAyB,EAAM,GAC7B,SAAM,iBAAkB,EAAM,GACvB,EAAK,MAAM,OAAO,IAAI,SAAU,GACrC,MAAO,IAAc,EAAM,KAC1B,KAAK,KAGV,YAAwB,EAAM,GAC5B,EAAO,EAAK,OACZ,GAAI,GAAI,EAAQ,MAAQ,GAAG,IAAe,GAAG,IAC7C,MAAO,GAAK,QAAQ,EAAG,SAAU,EAAK,EAAM,EAAG,EAAG,EAAG,GACnD,EAAM,SAAU,EAAM,EAAK,EAAM,EAAG,EAAG,EAAG,GAC1C,GAAI,GAAK,GAAI,GACT,EAAK,GAAM,GAAI,GACf,EAAK,GAAM,GAAI,GACf,EAAO,EAEX,MAAI,KAAS,KAAO,GAClB,GAAO,IAGT,AAAI,EACF,AAAI,IAAS,KAAO,IAAS,IAE3B,EAAM,SAGN,EAAM,IAEH,AAAI,GAAQ,EAGb,IACF,GAAI,GAEN,EAAI,EAEJ,AAAI,IAAS,IAIX,GAAO,KACP,AAAI,EACF,GAAI,CAAC,EAAI,EACT,EAAI,EACJ,EAAI,GAEJ,GAAI,CAAC,EAAI,EACT,EAAI,IAEG,IAAS,MAGlB,GAAO,IACP,AAAI,EACF,EAAI,CAAC,EAAI,EAET,EAAI,CAAC,EAAI,GAIb,EAAM,EAAO,EAAI,IAAM,EAAI,IAAM,GAC5B,AAAI,EACT,EAAM,KAAO,EAAI,SAAY,EAAC,EAAI,GAAK,OAC9B,GACT,GAAM,KAAO,EAAI,IAAM,EAAI,OAAS,EAAI,IAAO,EAAC,EAAI,GAAK,MAG3D,EAAM,gBAAiB,GAEhB,IAMX,YAAuB,EAAM,GAC3B,SAAM,eAAgB,EAAM,GAErB,EAAK,OAAO,QAAQ,GAAG,IAAO,IAQvC,YAAwB,EACtB,EAAM,EAAI,EAAI,EAAI,EAAK,EACvB,EAAI,EAAI,EAAI,EAAI,EAAK,GACrB,MAAI,IAAI,GACN,EAAO,GACF,AAAI,GAAI,GACb,EAAO,KAAO,EAAK,OACd,AAAI,GAAI,GACb,EAAO,KAAO,EAAK,IAAM,EAAK,KAE9B,EAAO,KAAO,EAGhB,AAAI,GAAI,GACN,EAAK,GACA,AAAI,GAAI,GACb,EAAK,IAAO,EAAC,EAAK,GAAK,OAClB,AAAI,GAAI,GACb,EAAK,IAAM,EAAK,IAAO,EAAC,EAAK,GAAK,KAC7B,AAAI,EACT,EAAK,KAAO,EAAK,IAAM,EAAK,IAAM,EAAK,IAAM,EAE7C,EAAK,KAAO,EAGN,GAAO,IAAM,GAAI,OAI3B,GAAM,UAAU,KAAO,SAAU,GAC/B,GAAI,CAAC,EACH,MAAO,GAGT,AAAI,MAAO,IAAY,UACrB,GAAU,GAAI,GAAO,EAAS,KAAK,UAGrC,OAAS,GAAI,EAAG,EAAI,KAAK,IAAI,OAAQ,IACnC,GAAI,GAAQ,KAAK,IAAI,GAAI,EAAS,KAAK,SACrC,MAAO,GAGX,MAAO,IAGT,YAAkB,EAAK,EAAS,GAC9B,OAAS,GAAI,EAAG,EAAI,EAAI,OAAQ,IAC9B,GAAI,CAAC,EAAI,GAAG,KAAK,GACf,MAAO,GAIX,GAAI,EAAQ,WAAW,QAAU,CAAC,EAAQ,mBAMxC,IAAK,EAAI,EAAG,EAAI,EAAI,OAAQ,IAE1B,GADA,EAAM,EAAI,GAAG,QACT,EAAI,GAAG,SAAW,IAIlB,EAAI,GAAG,OAAO,WAAW,OAAS,GACpC,GAAI,GAAU,EAAI,GAAG,OACrB,GAAI,EAAQ,QAAU,EAAQ,OAC1B,EAAQ,QAAU,EAAQ,OAC1B,EAAQ,QAAU,EAAQ,MAC5B,MAAO,GAMb,MAAO,GAGT,MAAO,GAGT,EAAQ,UAAY,GACpB,YAAoB,EAAS,EAAO,GAClC,IACE,EAAQ,GAAI,IAAM,EAAO,SAClB,GACP,MAAO,GAET,MAAO,GAAM,KAAK,GAGpB,EAAQ,cAAgB,GACxB,YAAwB,EAAU,EAAO,GACvC,GAAI,GAAM,KACN,EAAQ,KACZ,IACE,GAAI,GAAW,GAAI,IAAM,EAAO,SACzB,GACP,MAAO,MAET,SAAS,QAAQ,SAAU,GACzB,AAAI,EAAS,KAAK,IAEZ,EAAC,GAAO,EAAM,QAAQ,KAAO,KAE/B,GAAM,EACN,EAAQ,GAAI,GAAO,EAAK,MAIvB,EAGT,EAAQ,cAAgB,GACxB,YAAwB,EAAU,EAAO,GACvC,GAAI,GAAM,KACN,EAAQ,KACZ,IACE,GAAI,GAAW,GAAI,IAAM,EAAO,SACzB,GACP,MAAO,MAET,SAAS,QAAQ,SAAU,GACzB,AAAI,EAAS,KAAK,IAEZ,EAAC,GAAO,EAAM,QAAQ,KAAO,IAE/B,GAAM,EACN,EAAQ,GAAI,GAAO,EAAK,MAIvB,EAGT,EAAQ,WAAa,GACrB,YAAqB,EAAO,GAC1B,EAAQ,GAAI,IAAM,EAAO,GAEzB,GAAI,GAAS,GAAI,GAAO,SAMxB,GALI,EAAM,KAAK,IAIf,GAAS,GAAI,GAAO,WAChB,EAAM,KAAK,IACb,MAAO,GAGT,EAAS,KACT,OAAS,GAAI,EAAG,EAAI,EAAM,IAAI,OAAQ,EAAE,GACtC,GAAI,GAAc,EAAM,IAAI,GAE5B,EAAY,QAAQ,SAAU,GAE5B,GAAI,GAAU,GAAI,GAAO,EAAW,OAAO,SAC3C,OAAQ,EAAW,cACZ,IACH,AAAI,EAAQ,WAAW,SAAW,EAChC,EAAQ,QAER,EAAQ,WAAW,KAAK,GAE1B,EAAQ,IAAM,EAAQ,aAEnB,OACA,KACH,AAAI,EAAC,GAAU,GAAG,EAAQ,KACxB,GAAS,GAEX,UACG,QACA,KAEH,cAGA,KAAM,IAAI,OAAM,yBAA2B,EAAW,aAK9D,MAAI,IAAU,EAAM,KAAK,GAChB,EAGF,KAGT,EAAQ,WAAa,GACrB,YAAqB,EAAO,GAC1B,IAGE,MAAO,IAAI,IAAM,EAAO,GAAS,OAAS,UACnC,GACP,MAAO,OAKX,EAAQ,IAAM,GACd,YAAc,EAAS,EAAO,GAC5B,MAAO,IAAQ,EAAS,EAAO,IAAK,GAItC,EAAQ,IAAM,GACd,YAAc,EAAS,EAAO,GAC5B,MAAO,IAAQ,EAAS,EAAO,IAAK,GAGtC,EAAQ,QAAU,GAClB,YAAkB,EAAS,EAAO,EAAM,GACtC,EAAU,GAAI,GAAO,EAAS,GAC9B,EAAQ,GAAI,IAAM,EAAO,GAEzB,GAAI,GAAM,EAAO,EAAM,EAAM,EAC7B,OAAQ,OACD,IACH,EAAO,GACP,EAAQ,GACR,EAAO,GACP,EAAO,IACP,EAAQ,KACR,UACG,IACH,EAAO,GACP,EAAQ,GACR,EAAO,GACP,EAAO,IACP,EAAQ,KACR,cAEA,KAAM,IAAI,WAAU,yCAIxB,GAAI,GAAU,EAAS,EAAO,GAC5B,MAAO,GAMT,OAAS,GAAI,EAAG,EAAI,EAAM,IAAI,OAAQ,EAAE,GACtC,GAAI,GAAc,EAAM,IAAI,GAExB,EAAO,KACP,EAAM,KAuBV,GArBA,EAAY,QAAQ,SAAU,GAC5B,AAAI,EAAW,SAAW,IACxB,GAAa,GAAI,IAAW,YAE9B,EAAO,GAAQ,EACf,EAAM,GAAO,EACb,AAAI,EAAK,EAAW,OAAQ,EAAK,OAAQ,GACvC,EAAO,EACE,EAAK,EAAW,OAAQ,EAAI,OAAQ,IAC7C,GAAM,KAMN,EAAK,WAAa,GAAQ,EAAK,WAAa,GAM3C,EAAC,EAAI,UAAY,EAAI,WAAa,IACnC,EAAM,EAAS,EAAI,QACrB,MAAO,GACF,GAAI,EAAI,WAAa,GAAS,EAAK,EAAS,EAAI,QACrD,MAAO,GAGX,MAAO,GAGT,EAAQ,WAAa,GACrB,YAAqB,EAAS,GAC5B,GAAI,GAAS,GAAM,EAAS,GAC5B,MAAQ,IAAU,EAAO,WAAW,OAAU,EAAO,WAAa,KAGpE,EAAQ,WAAa,GACrB,YAAqB,EAAI,EAAI,GAC3B,SAAK,GAAI,IAAM,EAAI,GACnB,EAAK,GAAI,IAAM,EAAI,GACZ,EAAG,WAAW,GAGvB,EAAQ,OAAS,GACjB,YAAiB,GACf,GAAI,YAAmB,GACrB,MAAO,GAGT,GAAI,MAAO,IAAY,SACrB,MAAO,MAGT,GAAI,GAAQ,EAAQ,MAAM,GAAG,KAE7B,MAAI,IAAS,KACJ,KAGF,GAAM,EAAM,GACjB,IAAO,GAAM,IAAM,KACnB,IAAO,GAAM,IAAM,8xNCz8CvB,gCAEA,GAAI,IAAW,GACZ,OAAe,MACf,OAAe,MACd,GAAqB,KAEzB,GAAO,QAAU,SAAU,GACzB,GAAI,GAAQ,EAEZ,aACE,MAAO,GAAQ,EAAO,OAMxB,WAAe,GACb,GAAI,YAAiB,SACnB,GAAI,GAAQ,EAAO,MAAM,GACrB,EAAQ,EAAM,MAAM,GACxB,GAAI,EACF,UAAS,EAAM,GAAG,OACX,EAAM,WAGX,EAAO,QAAQ,EAAO,KAAW,EACnC,UAAS,EAAM,OACR,EAKb,aACE,EAAK,QAGP,aAGE,OAFI,GACA,EAAgB,CAAC,OAAQ,MAAO,KAAM,IAAK,IAAK,IAAK,KAChD,EAAI,EAAG,EAAI,EAAc,QAChC,GAAS,EAAK,EAAc,IACxB,IAFoC,IAExC,CAKF,GAAI,IAAW,KAAO,EAAQ,GAAK,EAAO,EAAQ,KAAO,IACvD,KAAM,IAAI,OAAM,oBAGlB,MAAO,IAAU,CACf,KAAM,WACN,OAAQ,GAIZ,aACE,MAAO,GAAK,kBAGd,aACE,GAAI,GAAS,IACb,GAAI,CAAC,EACH,KAAM,IAAI,OAAM,+BAAiC,GAEnD,MAAO,GAGT,aACE,GAAI,EAAK,iBACP,GAAI,GAAS,IACb,MAAO,CAAE,KAAM,cAAe,OAAQ,IAI1C,aACE,GAAI,EAAK,gBACP,GAAI,GAAS,IACb,MAAO,CAAE,KAAM,aAAc,OAAQ,IAIzC,aACE,GAAI,GAAQ,EACR,EAAS,IAEb,GAAI,GAAS,QAAQ,KAAY,GAC/B,MAAO,CACL,KAAM,UACN,OAAQ,GAEL,GAAI,GAAW,QAAQ,KAAY,GACxC,MAAO,CACL,KAAM,YACN,OAAQ,GAIZ,EAAQ,EAKV,aAEE,MACE,MACA,KACA,KACA,IAKJ,OADI,GAAS,GACN,KACL,KACI,EAAC,OAIL,GAAI,GAAQ,IACZ,GAAI,CAAC,EACH,KAAM,IAAI,OAAM,eAAiB,EAAO,GACxB,eAAiB,GAGnC,EAAO,KAAK,GAEd,MAAO,MCjIT,gCAOA,GAAO,QAAU,SAAU,GACzB,GAAI,GAAQ,EAEZ,aACE,MAAO,GAAQ,EAAO,OAGxB,aACE,MAAO,KAAY,EAAO,GAAS,KAGrC,aACE,GAAI,CAAC,IACH,KAAM,IAAI,OAEZ,IAGF,WAAwB,GACtB,GAAI,GAAI,IACR,GAAI,GAAK,EAAE,OAAS,YAAc,IAAa,EAAE,OAC/C,WACO,EAAE,OAIb,aACE,GAAI,EAAc,SAChB,GAAI,GAAI,IACR,GAAI,GAAK,EAAE,OAAS,YAClB,WACO,EAAE,OAEX,KAAM,IAAI,OAAM,oCAIpB,aAIE,GAAI,GAAQ,EACR,EAAS,GACT,EAAI,IACR,GAAI,EAAE,OAAS,eACb,KACA,GAAU,eAAiB,EAAE,OAAS,IAClC,CAAC,EAAc,MACjB,KAAM,IAAI,OAAM,wCAIpB,GADA,EAAI,IACA,EAAE,OAAS,aACb,WACA,GAAU,cAAgB,EAAE,OACrB,CAAE,QAAS,GAEpB,EAAQ,EAGV,aACE,GAAI,GAAI,IACR,GAAI,GAAK,EAAE,OAAS,WAClB,IACA,GAAI,GAAO,CAAE,QAAS,EAAE,QACxB,AAAI,EAAc,MAChB,GAAK,KAAO,IAEd,GAAI,GAAY,IAChB,MAAI,IACF,GAAK,UAAY,GAEZ,GAIX,aACE,GAAI,GAAO,EAAc,KACzB,GAAI,EAAC,GAIL,GAAI,GAAO,IAEX,GAAI,CAAC,EAAc,KACjB,KAAM,IAAI,OAAM,gBAGlB,MAAO,IAGT,aACE,MACE,MACA,KACA,IAIJ,WAA6B,EAAU,GACrC,MAAO,cACL,GAAI,GAAO,IACX,GAAI,EAAC,GAIL,GAAI,CAAC,EAAc,GACjB,MAAO,GAGT,GAAI,GAAQ,IACZ,GAAI,CAAC,EACH,KAAM,IAAI,OAAM,uBAElB,MAAO,CACL,KAAM,EACN,YAAa,EAAS,cACtB,MAAO,KAKb,GAAI,GAAW,EAAmB,MAAO,GACrC,EAAkB,EAAmB,KAAM,GAE3C,EAAO,IACX,GAAI,CAAC,GAAQ,IACX,KAAM,IAAI,OAAM,gBAElB,MAAO,MCxIT,gCAEA,GAAI,IAAe,KACf,GAAgB,KAEpB,GAAO,QAAU,SAAU,GACzB,MAAO,IAAM,GAAK,OCNpB,mBAeA,GAAI,IAAgB,KAChB,GAAyB,KAE7B,YAAgB,GACd,IACE,UAAM,GACC,SACA,GACP,MAAO,IAKX,GAAI,IAAiB,CACnB,CAAC,OAAQ,QACT,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,UACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,SAAU,UACX,CAAC,YAAa,KACd,CAAC,iBAAkB,IACnB,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,IAAK,IACN,CAAC,UAAW,OACZ,CAAC,UAAW,OACZ,CAAC,UAAW,OACZ,CAAC,6BAA8B,OAC/B,CAAC,qBAAsB,OACvB,CAAC,qBAAsB,OACvB,CAAC,6BAA8B,OAC/B,CAAC,MAAO,OACR,CAAC,yBAA0B,OAC3B,CAAC,+BAAgC,OACjC,CAAC,MAAO,OACR,CAAC,WAAY,KAGX,GAAa,EACb,GAAU,EAGV,GAAa,CAEf,SAAU,GACR,MAAO,GAAS,eAGlB,SAAU,GACR,MAAO,GAAS,QAGlB,SAAU,GACR,MAAO,GAAS,QAAQ,MAAO,KAGjC,SAAU,GACR,MAAO,GAAS,QAAQ,OAAQ,KAGlC,SAAU,GACR,MAAO,GAAS,QAAQ,OAAQ,MAGlC,SAAU,GACR,MAAO,GAAS,QAAQ,IAAK,MAG/B,SAAU,GACR,MAAO,GAAS,QAAQ,YAAa,QAGvC,SAAU,GACR,MAAO,GAAS,QAAQ,YAAa,UAGvC,SAAU,GACR,MAAO,GACJ,QAAQ,4CAA6C,QAG1D,SAAU,GACR,MAAO,GACJ,QAAQ,4CAA6C,UAG1D,SAAU,GACR,MAAO,GAAS,GAAG,cAAgB,EAAS,MAAM,IAGpD,SAAU,GACR,MAAO,GAAS,QAAQ,IAAK,MAG/B,SAAU,GACR,MAAO,GACJ,QAAQ,cAAe,OACvB,QAAQ,QAAS,SAGtB,SAAU,GACR,MAAI,GAAS,QAAQ,SAAW,GACvB,EAAW,YAEX,EAAW,SAItB,SAAU,GACR,MAAO,GAAW,QAGpB,SAAU,GACR,MAAO,GAAS,QAAQ,QAAS,UAGnC,SAAU,GACR,MAAO,GAAS,QAAQ,cAAe,eAGzC,SAAU,GACR,MAAO,GAAS,QAAQ,uBAAwB,eAGlD,SAAU,GACR,MAAO,GAAS,QAAQ,oDAAqD,iBAG/E,SAAU,GACR,MAAO,GAAS,QAAQ,wCAAyC,iBAGnE,SAAU,GACR,MAAO,GAAS,QAAQ,wCAAyC,uBAGnE,SAAU,GACR,MAAO,GAAS,QAAQ,mCAAoC,uBAG9D,SAAU,GACR,MAAO,GAAS,QAAQ,4CAA6C,iBAGvE,SAAU,GACR,MAAO,MAAQ,GAGjB,SAAU,GACR,MAAO,MAAQ,EAAW,QAG5B,SAAU,GACR,MAAO,GACJ,QAAQ,cAAe,MACvB,QAAQ,gBAAiB,MACzB,QAAQ,gBAAiB,MACzB,QAAQ,QAAS,OACjB,QAAQ,kBAAmB,KAGhC,SAAU,GACR,MAAO,MACL,EACG,QAAQ,cAAe,MACvB,QAAQ,gBAAiB,MACzB,QAAQ,gBAAiB,MACzB,QAAQ,QAAS,OACjB,QAAQ,kBAAmB,IAC9B,SAIF,GAAuB,GACxB,IAAI,SAAU,GACb,GAAI,GAAQ,kBAAkB,KAAK,GACnC,MAAO,GACH,CAAC,EAAM,GAAI,EAAM,IACjB,CAAC,EAAI,QAEV,OAAO,SAAU,EAAW,GAC3B,GAAI,GAAM,EAAK,GACf,SAAU,GAAO,EAAU,IAAQ,GACnC,EAAU,GAAK,KAAK,EAAK,IAClB,GACN,IAED,GAAyB,OAAO,KAAK,IACtC,IAAI,SAAsB,GACzB,MAAO,CAAC,EAAK,GAAqB,MAEnC,OAAO,SAA+B,GACrC,MAEE,GAAK,GAAG,SAAW,GACnB,EAAK,KAAO,MAEZ,EAAK,KAAO,QAGf,IAAI,SAA4B,GAC/B,MAAO,CAAC,EAAK,GAAI,EAAK,GAAG,MAG7B,GAAuB,OAIvB,GAAI,IAAc,CAChB,CAAC,OAAQ,aACT,CAAC,MAAO,SACR,CAAC,WAAY,gBACb,CAAC,WAAY,gBACb,CAAC,WAAY,gBACb,CAAC,WAAY,gBACb,CAAC,SAAU,qBACX,CAAC,OAAQ,qBACT,CAAC,SAAU,cACX,CAAC,WAAY,gBACb,CAAC,SAAU,qBACX,CAAC,OAAQ,YACT,CAAC,QAAS,WACV,CAAC,MAAO,gBACR,CAAC,OAAQ,YACT,CAAC,UAAW,WACZ,CAAC,OAAQ,SACT,CAAC,MAAO,oBACR,CAAC,OAAQ,qBACT,CAAC,QAAS,gBACV,CAAC,QAAS,gBACV,CAAC,QAAS,gBACV,CAAC,QAAS,gBACV,CAAC,MAAO,oBACR,CAAC,wBAAyB,UAC1B,CAAC,MAAO,OACR,CAAC,MAAO,WACR,CAAC,MAAO,OACR,CAAC,OAAQ,SACT,OAAO,IAEL,GAAY,EACZ,GAAa,EAEb,GAAsB,SAAU,GAClC,OAAS,GAAI,EAAG,EAAI,GAAW,OAAQ,KACrC,GAAI,GAAc,GAAW,GAAG,GAAY,OAC5C,GAAI,IAAgB,GAAc,GAAM,GACtC,MAAO,GAGX,MAAO,OAGL,GAAkB,SAAU,GAE9B,OADI,GAAa,EAAW,cACnB,EAAI,EAAG,EAAI,GAAY,OAAQ,KACtC,GAAI,GAAa,GAAY,GAC7B,GAAI,EAAW,QAAQ,EAAW,KAAc,GAC9C,MAAO,GAAW,IAGtB,MAAO,OAGL,GAAgB,SAAU,EAAY,GACxC,OAAS,GAAI,EAAG,EAAI,GAAe,OAAQ,KACzC,GAAI,GAAgB,GAAe,GAC/B,EAAa,EAAc,IAC/B,GAAI,EAAW,QAAQ,GAAc,IACnC,GAAI,GAAY,EAAW,QACzB,EACA,EAAc,KAEZ,EAAU,EAAM,GACpB,GAAI,IAAY,KACd,MAAO,IAIb,MAAO,OAGT,GAAO,QAAU,SAAU,EAAY,GACrC,EAAU,GAAW,GACrB,GAAI,GAAU,EAAQ,UAAY,OAAY,GAAO,CAAC,CAAC,EAAQ,QAC/D,WAAsB,GACpB,MAAO,GAAU,GAAY,GAAS,EAExC,GAAI,GACF,MAAO,IAAe,UACtB,EAAW,OAAO,SAAW,EAE/B,GAAI,CAAC,EACH,KAAM,OAAM,gDAGd,GADA,EAAa,EAAW,OACpB,GAAM,GACR,MAAO,GAAY,GAErB,GAAI,GAAS,EAAW,QAAQ,MAAO,IAAI,OAC3C,GAAI,GAAM,GACR,MAAO,GAAY,GAErB,GAAI,GAAc,GAAoB,GAkBtC,MAjBI,KAAgB,MAGpB,GAAc,GAAc,EAAY,SAAU,GAChD,MAAI,IAAM,GACD,EAEF,GAAoB,KAEzB,IAAgB,OAGpB,GAAc,GAAgB,GAC1B,IAAgB,OAGpB,GAAc,GAAc,EAAY,IACpC,IAAgB,MACX,EAAY,GAEd,MAGT,YAAsB,GACpB,MAAI,CACF,UAAW,WAAY,WACvB,UAAW,WAAY,WACvB,YACA,QAAQ,KAAW,GACZ,EAAQ,QACN,CACT,WAAY,WAAY,WACxB,YAAa,YAAa,YAC1B,YAAa,aACb,QAAQ,KAAW,GACZ,EAAM,QAAQ,MAAO,aACnB,CAAC,UAAW,WAAY,YAAY,QAAQ,KAAW,GACzD,EAAQ,YAER,KCzWX,sBAAI,IAAgB,KAChB,GAAkB,KAElB,GACF,yHAME,GAAkB,2BAEtB,YAAoB,EAAQ,GAC1B,MAAO,GAAO,MAAM,EAAG,EAAO,UAAY,EAG5C,YAAwB,GACtB,GAAI,EAAI,eAAe,YACrB,GAAI,GAAU,EAAI,QAClB,MACE,IAAW,aAAc,IACzB,GAAW,cAAe,OAG5B,OACE,IAAe,EAAI,OACnB,GAAe,EAAI,OAKzB,GAAO,QAAU,SAAS,GACxB,GAAI,GAEJ,IACE,EAAM,GAAM,SACL,GACP,GAAI,GACJ,GACE,IAAa,cACb,IAAa,aAEb,MAAO,CACL,oBAAqB,GACrB,oBAAqB,GACrB,WAAY,IAET,GAAI,EAAQ,GAAgB,KAAK,GACtC,MAAO,CACL,oBAAqB,GACrB,oBAAqB,GACrB,OAAQ,EAAM,IAGhB,GAAI,GAAS,CACX,oBAAqB,GACrB,oBAAqB,GACrB,SAAU,CAAC,KAEb,GAAI,EAAS,OAAO,SAAW,GAC7B,GAAI,GAAY,GAAQ,GACxB,AAAI,GACF,EAAO,SAAS,KACd,+CAAiD,EAAY,KAInE,MAAO,GAIX,MAAI,IAAe,GACV,CACL,oBAAqB,GACrB,oBAAqB,GACrB,KAAM,GACN,SAAU,CAAC,KAGN,CACL,oBAAqB,GACrB,oBAAqB,GACrB,KAAM,OClFZ,gCAEA,GAAI,IAAW,GAAO,QAAU,CAC9B,OAAQ,CAGN,UAAa,CAAE,MAAO,OAAQ,UAAW,YAAa,MAAO,SAC7D,OAAU,aACV,SAAY,OACZ,aAAgB,gFAChB,aAAgB,2CAChB,YAAe,0DACf,gBAAmB,kEAErB,UAAW,CACT,UAAa,CAAE,UAAW,YAAa,MAAO,SAC9C,OAAU,gBACV,SAAY,MACZ,gBAAmB,6DAErB,OAAQ,CACN,UAAa,CAAE,UAAW,YAAa,MAAO,SAC9C,OAAU,aACV,SAAY,OACZ,aAAgB,2CAChB,cAAiB,oEACjB,gBAAmB,+EACnB,UAAa,6HAEf,KAAM,CACJ,UAAa,CAAE,MAAO,UAAW,YAAa,MAAO,SACrD,OAAU,kBACV,UAAa,iDACb,aAAgB,8EAChB,aAAgB,6BAChB,YAAe,4CACf,YAAe,2CACf,eAAkB,oDAClB,eAAkB,0CAClB,mBAAsB,iDACtB,aAAgB,0CAChB,cAAiB,kDACjB,iBAAoB,gCACpB,aAAgB,yBAChB,gBAAmB,iEACnB,WAAc,SAAU,GACtB,MAAO,QAAU,GAAmB,MAKtC,GAAkB,CACpB,YAAe,iDACf,eAAkB,2DAClB,eAAkB,sDAClB,mBAAsB,8EACtB,aAAgB,6DAChB,cAAiB,gEACjB,aAAgB,4DAChB,iBAAoB,uCACpB,aAAgB,gCAChB,UAAa,yCACb,WAAc,IAGhB,OAAO,KAAK,IAAU,QAAQ,SAAU,GACtC,OAAO,KAAK,IAAiB,QAAQ,SAAU,GAC7C,AAAI,GAAS,GAAM,IACnB,IAAS,GAAM,GAAO,GAAgB,MAExC,GAAS,GAAM,aAAe,OAAO,KACnC,GAAS,GAAM,UAAU,IAAI,SAAU,GACrC,MAAO,GAAS,QAAQ,sBAAuB,UAC9C,KAAK,KAAO,SAGnB,YAA6B,GAC3B,MAAO,GAAS,cAAc,QAAQ,gBAAiB,IAAI,QAAQ,OAAQ,QC7E7E,gCACA,GAAI,IAAmB,KAMnB,GAAS,OAAO,QAAU,SAAkB,EAAQ,GAEtD,GAAI,IAAW,MAAQ,MAAO,IAAW,SAAU,MAAO,GAI1D,OAFI,GAAO,OAAO,KAAK,GACnB,EAAI,EAAK,OACN,KACL,EAAO,EAAK,IAAM,EAAO,EAAK,IAEhC,MAAO,IAGT,GAAO,QAAU,GACjB,YAAkB,EAAM,EAAM,EAAM,EAAS,EAAY,EAAuB,GAC9E,GAAI,GAAc,KAClB,EAAY,KAAO,EACnB,OAAO,KAAK,GAAS,IAAO,QAAQ,SAAU,GAC5C,EAAY,GAAO,GAAS,GAAM,KAEpC,EAAY,KAAO,EACnB,EAAY,KAAO,EACnB,EAAY,QAAU,EACtB,EAAY,WAAa,EACzB,EAAY,QAAU,EACtB,EAAY,KAAO,GAAQ,GAG7B,GAAQ,UAAU,KAAO,WACvB,MAAO,MAAK,WAAa,IAAM,KAAK,WAAa,IAGnD,GAAQ,UAAU,MAAQ,SAAU,EAAU,GAC5C,GAAI,EAAC,GACL,GAAI,GAAO,GAAO,GAAI,GACtB,EAAK,KAAO,EAAK,KAAO,EAAK,KAAK,QAAQ,SAAU,IAAM,GAC1D,EAAO,GAAO,GAAO,GAAI,KAAK,MAAO,GACrC,GAAI,GAAO,KACX,OAAO,KAAK,MAAM,QAAQ,SAAU,GAClC,AAAI,EAAK,IAAQ,MAAQ,EAAK,IAAQ,MAAM,GAAK,GAAO,EAAK,MAE/D,GAAI,GAAU,EAAK,KACf,EAAgB,EAAK,WACrB,EAAc,EAAK,SACnB,EAAU,EAAK,KACf,EAAa,EAAK,QACtB,OAAO,KAAK,GAAM,QAAQ,SAAU,GAClC,GAAI,GAAQ,EAAK,GACjB,AAAK,KAAQ,QAAU,IAAQ,YAAc,MAAO,IAAU,SAC5D,EAAK,GAAO,EAAM,MAAM,KAAK,IAAI,SAAU,GACzC,MAAO,oBAAmB,KACzB,KAAK,KAER,EAAK,GAAO,mBAAmB,KAGnC,EAAK,SAAW,EAAU,EAAU,IAAM,GAC1C,EAAK,aAAe,EAAc,IAAM,KAAK,WAAW,GAAe,GACvE,EAAK,SAAW,EAAK,SAAW,EAAK,SAAW,GAChD,EAAK,SAAW,EAAU,IAAM,KAAK,WAAW,GAAW,GAC3D,EAAK,SAAW,EAAK,KAAO,IAAM,EAAK,KAAO,GAC9C,EAAK,YAAc,EAAW,MAAM,KAAK,IAAI,oBAAoB,KAAK,KACtE,AAAI,EAAK,aACP,GAAK,eAAiB,GACtB,EAAK,oBAAsB,GAC3B,EAAK,eAAiB,GACtB,EAAK,WAAa,IAElB,GAAK,eAAiB,EAAgB,IAAM,EAAgB,GAC5D,EAAK,oBAAsB,EAAK,WAC5B,IAAM,EAAK,SAAW,IAAM,EAAK,WACjC,GACJ,EAAK,eAAiB,EAAK,WAAa,IAAM,EAAK,WAAa,GAChE,EAAK,WAAa,EAAK,YAAc,UAEvC,GAAI,GAAM,EAIV,MAHA,QAAO,KAAK,GAAM,QAAQ,SAAU,GAClC,EAAM,EAAI,QAAQ,GAAI,QAAO,MAAQ,EAAM,MAAO,KAAM,EAAK,MAE3D,EAAK,UACA,EAAI,QAAQ,UAAW,IAEvB,IAIX,GAAQ,UAAU,IAAM,SAAU,GAChC,MAAO,MAAK,MAAM,KAAK,YAAa,IAGtC,GAAQ,UAAU,OAAS,SAAU,GACnC,MAAO,MAAK,MAAM,KAAK,eAAgB,IAGzC,GAAQ,UAAU,OAAS,SAAU,EAAG,EAAG,GACzC,MAAI,OAAO,IAAM,SACX,OAAO,IAAM,UACf,GAAO,EACP,EAAI,MAEC,KAAK,MAAM,KAAK,mBAAoB,GAAO,CAChD,SAAU,EACV,KAAM,GACL,KAEI,KAAK,MAAM,KAAK,eAAgB,IAI3C,GAAQ,UAAU,KAAO,SAAU,GACjC,MAAO,MAAK,MAAM,KAAK,aAAc,IAGvC,GAAQ,UAAU,KAAO,SAAU,GACjC,MAAO,MAAK,MAAM,KAAK,aAAc,IAGvC,GAAQ,UAAU,MAAQ,SAAU,GAClC,MAAO,MAAK,MAAM,KAAK,cAAe,IAGxC,GAAQ,UAAU,IAAM,SAAU,GAChC,MAAO,MAAK,MAAM,KAAK,YAAa,IAGtC,GAAQ,UAAU,SAAW,SAAU,GACrC,MAAO,MAAK,MAAM,KAAK,iBAAkB,IAG3C,GAAQ,UAAU,KAAO,SAAU,GACjC,MAAO,MAAK,MAAM,KAAK,aAAc,IAGvC,GAAQ,UAAU,QAAU,SAAU,GACpC,GAAI,GAAO,GAAO,GAAI,EAAO,CAAE,aAAc,KAC7C,MAAO,MAAK,MAAM,KAAK,gBAAiB,IAG1C,GAAQ,UAAU,KAAO,SAAU,EAAG,GACpC,MAAO,MAAK,MAAM,KAAK,aAAc,GAAO,CAAE,KAAM,GAAK,KAG3D,GAAQ,UAAU,yBAA2B,WAC3C,MAAO,MAAK,SAGd,GAAQ,UAAU,SAAW,SAAU,GACrC,MAAI,MAAK,SAAW,MAAO,MAAK,KAAK,UAAa,WAAmB,KAAK,KAAK,SAAS,GACjF,KAAK,OAAO,MC1JrB,gCACA,GAAI,IAAc,eACd,GAAmB,KACnB,GAAU,GAAO,QAAkB,KAEnC,GAA8B,CAChC,WAAY,SACZ,aAAc,QACd,OAAQ,SACR,OAAQ,OAGV,YAAmC,GACjC,MAAO,IAA4B,IAAa,EAAS,MAAM,EAAG,IAGpE,GAAI,IAAgB,CAClB,OAAQ,GACR,SAAU,GACV,aAAc,GACd,QAAS,GACT,YAAa,IAGX,GAAQ,GAEZ,GAAO,QAAQ,QAAU,SAAU,EAAQ,GACzC,GAAI,MAAO,IAAW,UACtB,GAAI,GAAM,EAAS,KAAK,UAAU,GAAQ,IAE1C,MAAM,KAAO,KACX,IAAM,GAAO,GAAQ,EAAQ,IAGxB,GAAM,KAGf,YAAkB,EAAQ,GACxB,GAAI,KAAU,MAAQ,IAAW,KACjC,GAAI,GAAM,GACR,GAAkB,GAAU,UAAY,EAAS,GAE/C,EAAS,GAAY,GACrB,EAAgB,EAAI,MAAM,GAAI,QAAO,uEACrC,EAAU,OAAO,KAAK,IAAU,IAAI,SAAU,GAChD,IACE,GAAI,GAAc,GAAS,GACvB,EAAO,KACX,AAAI,EAAO,MAAQ,GAAc,EAAO,WACtC,GAAO,EAAO,MAEhB,GAAI,GAAa,EAAO,KAAO,mBAAmB,EAAO,KAAK,OAAO,IAAM,KACvE,EAAO,KACP,EAAU,KACV,EAAwB,KAC5B,GAAI,GAAiB,EAAc,KAAO,EACxC,EAAO,EAAc,IAAM,mBAAmB,EAAc,IAC5D,EAAU,mBAAmB,EAAc,IAC3C,EAAwB,gBAIxB,GAFI,EAAO,MAAQ,EAAO,OAAS,EAAY,QAAU,EAAO,KAAK,QAAQ,UAAW,MAAQ,EAAY,QACxG,CAAC,EAAY,aAAa,KAAK,EAAO,WACtC,CAAC,EAAO,KAAM,OAClB,GAAI,GAAY,EAAY,UACxB,EAAU,EAAO,KAAK,MAAM,GAChC,GAAI,CAAC,EAAS,OAEd,AAAI,EAAQ,KAAO,MAAQ,EAAQ,KAAO,QACxC,GAAO,mBAAmB,EAAQ,GAAG,QAAQ,KAAM,MAErD,EAAU,mBAAmB,EAAQ,IACrC,EAAwB,GAAyB,EAAO,UAE1D,MAAO,IAAI,IAAQ,EAAa,EAAM,EAAM,EAAS,EAAY,EAAuB,SACjF,GAEP,GAAI,cAAc,WACX,KAAM,MAEd,OAAO,SAAU,GAAe,MAAO,KAC1C,GAAI,EAAQ,SAAW,EACvB,MAAO,GAAQ,IAGjB,YAA4B,GAS1B,MAAO,+CAA+C,KAAK,GAG7D,YAA+B,GAE7B,GAAI,GAAS,GAAI,MAAM,GACvB,MAAI,GAAO,WAAa,SAAW,EAAO,MAAQ,CAAC,EAAO,KACjD,EAAO,SAAW,IAAM,EAAO,KAE/B,EAIX,YAAsB,GACpB,GAAI,GAAU,EAAO,MAAM,iEAC3B,GAAI,CAAC,GACH,GAAI,GAAS,GAAI,MAAM,GAGvB,GAAI,EAAO,MAAQ,MAAO,IAAI,KAAQ,YAUpC,GAAI,GAAY,EAAO,MAAM,gBAE7B,GAAI,GACF,GAAI,GAAS,GAAI,IAAI,IAAI,EAAU,IACnC,EAAO,KAAO,EAAO,UAAY,GAC7B,EAAO,UAAU,GAAO,MAAQ,IAAM,EAAO,WAGrD,MAAO,GAET,MAAO,CACL,SAAU,WACV,QAAS,GACT,KAAM,EAAQ,GACd,KAAM,EAAQ,GACd,KAAM,KACN,SAAU,EAAQ,GAClB,KAAM,EAAQ,GACd,OAAQ,KACR,MAAO,KACP,SAAU,IAAM,EAAQ,GACxB,KAAM,IAAM,EAAQ,GACpB,KAAM,aAAe,EAAQ,GAAK,IAAM,EAAQ,GAC1C,IAAM,EAAQ,GAAM,GAAQ,IAAM,QCjJ5C,sBAAO,QAAU,WAEb,GAAI,GAAwB,MAAM,kBAClC,MAAM,kBAAoB,SAAU,EAAG,GAAS,MAAO,IACvD,GAAI,GAAS,GAAI,SAAS,MAC1B,aAAM,kBAAoB,EACnB,EAAM,GAAG,iBCNpB,gCAEA,GAAI,IAAY,QAAQ,WAAa,QAIjC,GACA,qEAGA,GACA,gEAEA,GAAQ,GAGZ,YAAwB,GAEtB,GAAI,GAAS,GAAc,KAAK,GAC5B,EAAU,GAAO,IAAM,IAAO,GAAO,IAAM,IAC3C,EAAO,EAAO,IAAM,GAEpB,EAAU,GAAY,KAAK,GAC3B,EAAM,EAAQ,GACd,EAAW,EAAQ,GACnB,EAAM,EAAQ,GAClB,MAAO,CAAC,EAAQ,EAAK,EAAU,GAGjC,GAAM,MAAQ,SAAS,GACrB,GAAI,MAAO,IAAe,SACxB,KAAM,IAAI,WACN,gDAAkD,MAAO,IAG/D,GAAI,GAAW,GAAe,GAC9B,GAAI,CAAC,GAAY,EAAS,SAAW,EACnC,KAAM,IAAI,WAAU,iBAAmB,EAAa,KAEtD,MAAO,CACL,KAAM,EAAS,GACf,IAAK,EAAS,GAAK,EAAS,GAAG,MAAM,EAAG,IACxC,KAAM,EAAS,GACf,IAAK,EAAS,GACd,KAAM,EAAS,GAAG,MAAM,EAAG,EAAS,GAAG,OAAS,EAAS,GAAG,UAQhE,GAAI,IACA,gEACA,GAAQ,GAGZ,YAAwB,GACtB,MAAO,IAAY,KAAK,GAAU,MAAM,GAI1C,GAAM,MAAQ,SAAS,GACrB,GAAI,MAAO,IAAe,SACxB,KAAM,IAAI,WACN,gDAAkD,MAAO,IAG/D,GAAI,GAAW,GAAe,GAC9B,GAAI,CAAC,GAAY,EAAS,SAAW,EACnC,KAAM,IAAI,WAAU,iBAAmB,EAAa,KAEtD,SAAS,GAAK,EAAS,IAAM,GAC7B,EAAS,GAAK,EAAS,IAAM,GAC7B,EAAS,GAAK,EAAS,IAAM,GAEtB,CACL,KAAM,EAAS,GACf,IAAK,EAAS,GAAK,EAAS,GAAG,MAAM,EAAG,IACxC,KAAM,EAAS,GACf,IAAK,EAAS,GACd,KAAM,EAAS,GAAG,MAAM,EAAG,EAAS,GAAG,OAAS,EAAS,GAAG,UAKhE,AAAI,GACF,GAAO,QAAU,GAAM,MAEvB,GAAO,QAAU,GAAM,MAEzB,GAAO,QAAQ,MAAQ,GAAM,MAC7B,GAAO,QAAQ,MAAQ,GAAM,QC5F7B,sBAAI,IAAe,gBACf,GAAQ,GAAK,OAAiB,KAE9B,GAAqB,SAA4B,EAAe,GAChE,GAAI,GAAS,IACb,AAAK,eAAgB,KAAK,GACtB,EAAS,GACD,QAAS,KAAK,IACtB,GAAS,QAKb,OAFI,GAAQ,CAAC,GACT,EAAS,GAAM,GACZ,EAAO,MAAQ,EAAM,EAAM,OAAS,IACvC,EAAM,KAAK,EAAO,KAClB,EAAS,GAAM,EAAO,KAG1B,MAAO,GAAM,OAAO,SAAU,EAAM,GAChC,MAAO,GAAK,OAAO,EAAQ,IAAI,SAAU,GACrC,MAAO,IAAK,QAAQ,EAAQ,EAAO,OAExC,KAGP,GAAO,QAAU,SAA0B,EAAO,EAAM,GACpD,GAAI,GAAU,GAAQ,EAAK,gBACrB,GAAG,OAAO,EAAK,iBACf,CAAC,gBAEP,GAAI,GAAQ,MAAO,GAAK,OAAU,WAC9B,MAAO,GAAK,MACR,EACA,EACA,WAAc,MAAO,IAAmB,EAAO,IAC/C,GAIR,GAAI,GAAO,GAAmB,EAAO,GACrC,MAAO,IAAQ,EAAK,MAAQ,EAAK,OAAO,EAAK,OAAS,KCxC1D,sBAAO,QAAU,SAAU,EAAG,GAQ1B,MAAO,IAAQ,MCRnB,gCAIA,GAAI,IAAgB,kDAChB,GAAQ,MAAM,UAAU,MACxB,GAAQ,OAAO,UAAU,SACzB,GAAW,oBAEf,GAAO,QAAU,SAAc,GAC3B,GAAI,GAAS,KACb,GAAI,MAAO,IAAW,YAAc,GAAM,KAAK,KAAY,GACvD,KAAM,IAAI,WAAU,GAAgB,GAyBxC,OAvBI,GAAO,GAAM,KAAK,UAAW,GAE7B,EACA,EAAS,WACT,GAAI,eAAgB,IAChB,GAAI,GAAS,EAAO,MAChB,KACA,EAAK,OAAO,GAAM,KAAK,aAE3B,MAAI,QAAO,KAAY,EACZ,EAEJ,SAEP,OAAO,GAAO,MACV,EACA,EAAK,OAAO,GAAM,KAAK,cAK/B,EAAc,KAAK,IAAI,EAAG,EAAO,OAAS,EAAK,QAC/C,EAAY,GACP,EAAI,EAAG,EAAI,EAAa,IAC7B,EAAU,KAAK,IAAM,GAKzB,GAFA,EAAQ,SAAS,SAAU,oBAAsB,EAAU,KAAK,KAAO,6CAA6C,GAEhH,EAAO,WACP,GAAI,GAAQ,aACZ,EAAM,UAAY,EAAO,UACzB,EAAM,UAAY,GAAI,GACtB,EAAM,UAAY,KAGtB,MAAO,MClDX,gCAEA,GAAI,IAAyB,KAE7B,GAAO,QAAU,SAAS,UAAU,MAAQ,KCJ5C,gCAEA,GAAI,IAAe,KAEnB,GAAO,QAAU,GAAK,KAAK,SAAS,KAAM,OAAO,UAAU,w2DCJ3D,gCAEA,GAAI,IAAc,KAElB,YAA2B,EAAS,GAMnC,OALI,GAAY,EAAQ,MAAM,KAC1B,EAAQ,EAAU,MAAM,KACxB,EAAK,EAAM,OAAS,EAAI,EAAM,GAAK,IACnC,EAAgB,GAAM,OAAS,EAAI,EAAM,GAAK,EAAM,IAAI,MAAM,KAEzD,EAAI,EAAG,EAAI,EAAG,EAAE,GACxB,GAAI,GAAM,SAAS,EAAU,IAAM,EAAG,IAClC,EAAM,SAAS,EAAa,IAAM,EAAG,IACzC,GAAI,IAAQ,EAGZ,MAAI,KAAO,IACH,EAAM,EAEV,IAAO,KACH,GAAO,EAER,GAER,MAAO,KAAO,KAGf,YAAsB,EAAS,GAC9B,GAAI,GAAa,EAAM,MAAM,UAC7B,GAAI,EAAW,SAAW,EACzB,MAAO,GAER,OAAS,GAAI,EAAG,EAAI,EAAW,OAAQ,EAAE,EACxC,GAAI,CAAC,GAAkB,EAAS,EAAW,IAC1C,MAAO,GAGT,MAAO,GAGR,YAAyB,EAAa,GACrC,GAAI,MAAO,IAAmB,UAC7B,MAAO,GAGR,GAAI,GAAU,MAAO,IAAgB,YAClC,QAAQ,UAAY,QAAQ,SAAS,MAAQ,QAAQ,SAAS,KAC9D,EAEH,GAAI,MAAO,IAAY,SACtB,KAAM,IAAI,WAAU,MAAO,IAAgB,YAAc,2CAA6C,iDAGvG,GAAI,GAAkB,MAAO,IAAmB,UAC/C,OAAS,GAAI,EAAG,EAAI,EAAe,OAAQ,EAAE,EAC5C,GAAI,GAAa,EAAS,EAAe,IACxC,MAAO,GAGT,MAAO,GAER,MAAO,IAAa,EAAS,GAG9B,GAAI,IAAe,KAEnB,GAAO,QAAU,SAAgB,EAAG,GACnC,MAAO,IAAI,GAAM,IAAM,GAAgB,EAAa,GAAK,OCnE1D,sBAAI,IAAa,cACb,GAAe,gBACf,GAAiB,KACjB,GAA2B,KAC3B,GAA2B,KAC3B,GAAiB,KAEjB,GAAa,GAAG,UAAY,MAAO,IAAG,SAAS,QAAW,WAAa,GAAG,SAAS,OAAS,GAAG,SAE/F,GAAgB,SAAgB,EAAM,GACtC,GAAG,KAAK,EAAM,SAAU,EAAK,GACzB,MAAK,GAGD,EAAI,OAAS,UAAY,EAAI,OAAS,UAAkB,EAAG,KAAM,IAC9D,EAAG,GAHC,EAAG,KAAM,EAAK,UAAY,EAAK,aAO9C,GAAe,SAAqB,EAAK,GACzC,GAAG,KAAK,EAAK,SAAU,EAAK,GACxB,MAAK,GAGD,EAAI,OAAS,UAAY,EAAI,OAAS,UAAkB,EAAG,KAAM,IAC9D,EAAG,GAHC,EAAG,KAAM,EAAK,kBAO7B,GAAkB,SAAkB,EAAG,GACvC,GAAW,EAAG,SAAU,EAAa,GACjC,AAAI,GAAe,EAAY,OAAS,SAAU,EAAG,GAChD,EAAG,KAAM,EAAc,EAAI,MAIpC,GAAgB,SAAuB,EAAU,EAAG,EAAM,GAC1D,AAAI,GAAQ,EAAK,mBAAqB,GAClC,EAAS,EAAG,GAEZ,EAAG,KAAM,IAIb,GAAuB,SAA8B,EAAG,EAAO,GAE/D,OADI,GAAO,GAAiB,EAAO,EAAM,GAChC,EAAI,EAAG,EAAI,EAAK,OAAQ,IAC7B,EAAK,GAAK,GAAK,KAAK,EAAK,GAAI,GAEjC,MAAO,IAGX,GAAO,QAAU,SAAiB,EAAG,EAAS,GAC1C,GAAI,GAAK,EACL,EAAO,EAKX,GAJI,MAAO,IAAY,YACnB,GAAK,EACL,EAAO,IAEP,MAAO,IAAM,UACb,GAAI,GAAM,GAAI,WAAU,0BACxB,MAAO,SAAQ,SAAS,WACpB,EAAG,KAIX,EAAO,GAAiB,EAAG,GAE3B,GAAI,GAAS,EAAK,QAAU,GACxB,EAAc,EAAK,aAAe,GAClC,EAAW,EAAK,UAAY,GAAG,SAC/B,EAAW,EAAK,UAAY,GAC5B,EAAkB,EAAK,gBAEvB,EAAa,EAAK,YAAc,CAAC,OACjC,EAAqB,EAAK,qBAAuB,GACjD,EAAU,EAAK,SAAW,GAAK,QAAQ,MACvC,EAAS,EAAK,UAAY,EAE9B,EAAK,MAAQ,EAAK,OAAS,GAG3B,GAAI,GAAgB,GAAK,QAAQ,GAEjC,GACI,EACA,EACA,EACA,SAAU,EAAK,GACX,AAAI,EAAK,EAAG,GACP,EAAK,KAIlB,GAAI,GACJ,WAAc,GACV,GAAK,0CAA2C,KAAK,GACjD,EAAM,GAAK,QAAQ,EAAS,GACxB,KAAM,KAAO,IAAM,MAAQ,EAAE,MAAM,MAAQ,MAAK,IAAO,KAC3D,AAAK,MAAO,KAAK,IAAM,IAAQ,EAC3B,EAAgB,EAAK,EAAK,QAAS,GAChC,EAAW,EAAK,EAAK,QAAS,QAClC,GAAI,GAAsB,GAAO,GACpC,MAAO,GAAG,KAAM,GACb,EAAgB,EAAG,EAAS,SAAU,EAAK,EAAG,GACjD,GAAI,EAAK,EAAG,QACP,GAAI,EACL,MAAO,IAAc,EAAU,EAAG,EAAM,SAAU,GAAK,IACnD,AAAI,GACA,EAAG,IAEH,EAAG,KAAM,GAAO,KAIxB,GAAI,GAAc,GAAI,OAAM,uBAAyB,EAAI,WAAa,EAAS,KAC/E,EAAY,KAAO,mBACnB,EAAG,OAKf,WAAgB,EAAK,EAAG,GACpB,AAAI,EAAK,EAAG,GACP,AAAI,EAAG,EAAG,KAAM,EAAG,GACnB,EAAgB,EAAK,SAAU,EAAK,EAAG,IACxC,GAAI,EAAK,EAAG,WACH,EACL,GAAc,EAAU,EAAG,EAAM,SAAU,GAAK,IAC5C,AAAI,GACA,EAAG,IAEH,EAAG,KAAM,GAAO,WAIxB,GAAI,IAAc,GAAI,OAAM,uBAAyB,EAAI,WAAa,EAAS,KAC/E,GAAY,KAAO,mBACnB,EAAG,OAKf,WAAoB,EAAG,EAAY,GAC/B,GAAI,GAAoB,EACpB,EAAK,EACT,AAAI,MAAO,IAAsB,YAC7B,GAAK,EACL,EAAoB,QAGxB,GAAI,IAAO,CAAC,IAAI,OAAO,GACvB,GAAK,GAAM,EAAG,GAEd,YAAc,GAAM,GAAG,IACnB,GAAI,GAAK,SAAW,EAAG,MAAO,GAAG,KAAM,OAAW,IAClD,GAAI,IAAO,GAAI,GAAK,GAEhB,GAAM,GACV,AAAI,GAAK,GAAM,KAAM,IAChB,EAAQ,GAAK,QAAQ,IAAO,IAEjC,YAAe,EAAK,GAAM,IAEtB,GADA,GAAM,GACF,EAAK,MAAO,GAAG,GACnB,GAAI,IAAO,IAAO,EAAK,YACnB,GAAI,IAAQ,GAAK,SAAS,GAAK,IAC3B,GAAM,GAAM,MAAM,EAAG,GAAM,OAAS,GAAK,GAAG,QAC5C,GAAI,EAAK,WAAW,GAAK,GAAG,IAChC,GAAI,GAAG,MAAO,IACV,CAAC,IAAI,OAAO,EAAW,SACvB,GAAK,QAAQ,GAAK,IAClB,IAGR,EAAO,GAAM,IAEjB,YAAc,EAAK,IACf,GAAI,EAAK,MAAO,GAAG,GACnB,GAAI,GAAI,MAAO,GAAG,KAAM,GAAM,IAC9B,GAAK,GAAK,MAAM,GAAI,GAAG,MAKnC,WAAiB,EAAK,GAKlB,GAJI,IAAQ,IAAM,IAAQ,KACtB,QAAQ,WAAa,SAAY,cAAe,KAAK,IAGpD,2BAA4B,KAAK,GAAM,MAAO,GAAG,MAEtD,GAAc,EAAU,EAAK,EAAM,SAAU,EAAW,GACpD,GAAI,EAAW,MAAO,GAAQ,GAAK,QAAQ,GAAM,GACjD,GAAI,GAAU,GAAK,KAAK,EAAQ,gBAChC,EAAO,EAAS,SAAU,GAAK,IAE3B,GAAI,CAAC,GAAI,MAAO,GAAQ,GAAK,QAAQ,GAAM,GAE3C,EAAS,EAAS,SAAU,GAAK,IAC7B,AAAI,IAAK,EAAG,IACZ,IAAM,GAAI,IAAM,KAAK,MAAM,UAAgB,KAE3C,AAAI,IAAO,EAAK,eACZ,IAAM,EAAK,cAAc,GAAK,IAElC,EAAG,KAAM,GAAK,SAM9B,WAAyB,EAAG,EAAwB,GAChD,GAAI,GAAK,EACL,EAAO,EACX,AAAI,MAAO,IAAS,YAChB,GAAK,EACL,EAAO,EAAK,SAGhB,GAAc,EAAU,EAAG,EAAM,SAAU,GAAW,IAClD,GAAI,GAAW,MAAO,GAAG,IACzB,GAAI,IAAU,GAAK,KAAK,GAAQ,gBAChC,EAAO,GAAS,SAAU,GAAK,IAC3B,GAAI,GAAK,MAAO,GAAG,IACnB,GAAI,CAAC,GAAI,MAAO,GAAW,GAAK,KAAK,EAAG,SAAU,EAAM,GAExD,EAAS,GAAS,SAAU,GAAK,IAC7B,GAAI,GAAK,MAAO,GAAG,IACnB,IACI,GAAI,IAAM,KAAK,MAAM,UAChB,IAMT,GAJI,IAAO,EAAK,eACZ,IAAM,EAAK,cAAc,GAAK,KAG9B,IAAO,GAAI,MACX,GAAI,MAAO,IAAI,MAAS,UACpB,GAAI,IAAY,GAAI,WAAU,iBAAc,GAAI,KAAO,kCACvD,UAAU,KAAO,uBACV,EAAG,IAEd,AAAI,IAAI,OAAS,KAAO,GAAI,OAAS,OACjC,IAAI,KAAO,SAEf,EAAW,GAAK,QAAQ,EAAG,GAAI,MAAO,GAAK,SAAU,EAAK,GAAG,IACzD,GAAI,EAAK,MAAO,GAAG,GACnB,GAAI,GAAG,MAAO,GAAG,KAAM,GAAG,IAC1B,GAAI,CAAC,GAAK,MAAO,GAAW,GAAK,KAAK,EAAG,SAAU,GAAK,GAExD,GAAI,IAAM,GAAK,QAAQ,EAAG,GAAI,MAC9B,EAAgB,GAAK,GAAK,SAAU,GAAK,GAAG,IACxC,GAAI,GAAK,MAAO,GAAG,IACnB,GAAI,GAAG,MAAO,GAAG,KAAM,GAAG,IAC1B,EAAW,GAAK,KAAK,EAAG,SAAU,GAAK,OAG/C,OAGJ,EAAW,GAAK,KAAK,EAAG,UAAW,GAAK,SAMxD,WAAqB,EAAI,GACrB,GAAI,EAAK,SAAW,EAAG,MAAO,GAAG,KAAM,QACvC,GAAI,GAAM,EAAK,GAEf,EAAY,GAAK,QAAQ,GAAM,GAE/B,WAAe,GAAK,IAChB,GAAI,GAAK,MAAO,GAAG,IACnB,GAAI,CAAC,GAAO,MAAO,GAAY,EAAI,EAAK,MAAM,IAC9C,EAAW,EAAK,EAAK,QAAS,GAGlC,WAAgB,GAAK,GAAG,IACpB,GAAI,GAAK,MAAO,GAAG,IACnB,GAAI,GAAG,MAAO,GAAG,KAAM,GAAG,IAC1B,EAAgB,EAAK,EAAK,QAAS,IAGvC,YAAe,GAAK,GAAG,IACnB,GAAI,GAAK,MAAO,GAAG,IACnB,GAAI,GAAG,MAAO,GAAG,KAAM,GAAG,IAC1B,EAAY,EAAI,EAAK,MAAM,KAGnC,WAAyB,EAAG,EAAO,GAC/B,GAAI,GAAQ,WAAc,MAAO,IAAqB,EAAG,EAAO,IAChE,EACI,EACA,EAAkB,EAAgB,EAAG,EAAO,EAAO,GAAQ,0xDCvSvE,sBAAI,IAAW,QAAQ,UAAY,QAAQ,SAAS,MAAQ,QAAQ,SAAS,KAAK,MAAM,MAAS,GAEjG,YAA2B,GAKvB,OAJI,GAAQ,EAAU,MAAM,KACxB,EAAK,EAAM,OAAS,EAAI,EAAM,GAAK,IACnC,EAAgB,GAAM,OAAS,EAAI,EAAM,GAAK,EAAM,IAAI,MAAM,KAEzD,EAAI,EAAG,EAAI,EAAG,EAAE,GACrB,GAAI,GAAM,SAAS,GAAQ,IAAM,EAAG,IAChC,EAAM,SAAS,EAAa,IAAM,EAAG,IACzC,GAAI,IAAQ,EAGZ,MAAI,KAAO,IACA,EAAM,EACN,IAAO,KACP,GAAO,EAEP,GAGf,MAAO,KAAO,KAGlB,YAAsB,GAClB,GAAI,GAAa,EAAM,MAAM,UAC7B,GAAI,EAAW,SAAW,EAAK,MAAO,GACtC,OAAS,GAAI,EAAG,EAAI,EAAW,OAAQ,EAAE,EACrC,GAAI,CAAC,GAAkB,EAAW,IAAO,MAAO,GAEpD,MAAO,GAGX,YAAyB,GACrB,GAAI,MAAO,IAAmB,UAAa,MAAO,GAClD,GAAI,GAAkB,MAAO,IAAmB,UAC5C,OAAS,GAAI,EAAG,EAAI,EAAe,OAAQ,EAAE,EACzC,GAAI,GAAa,EAAe,IAAO,MAAO,GAElD,MAAO,GAEX,MAAO,IAAa,GAGxB,GAAI,IAAe,KAEf,GAAO,GACX,OAAS,MAAO,IACZ,AAAI,OAAO,UAAU,eAAe,KAAK,GAAM,KAC3C,IAAK,IAAO,GAAgB,GAAK,MAGzC,GAAO,QAAU,KCpDjB,sBAAI,IAAuB,KAE3B,GAAO,QAAU,SAAgB,GAC7B,MAAO,IAAa,MCHxB,sBAAI,IAAiB,KACjB,GAAa,cACb,GAAe,gBACf,GAAiB,KACjB,GAA2B,KAC3B,GAA2B,KAE3B,GAAa,GAAG,cAAgB,MAAO,IAAG,aAAa,QAAW,WAAa,GAAG,aAAa,OAAS,GAAG,aAE3G,GAAgB,SAAgB,GAChC,IACI,GAAI,GAAO,GAAG,SAAS,SAClB,GACL,GAAI,GAAM,GAAE,OAAS,UAAY,EAAE,OAAS,WAAY,MAAO,GAC/D,KAAM,GAEV,MAAO,GAAK,UAAY,EAAK,UAG7B,GAAe,SAAqB,GACpC,IACI,GAAI,GAAO,GAAG,SAAS,SAClB,GACL,GAAI,GAAM,GAAE,OAAS,UAAY,EAAE,OAAS,WAAY,MAAO,GAC/D,KAAM,GAEV,MAAO,GAAK,eAGZ,GAAsB,SAAsB,GAC5C,IACI,MAAO,IAAW,SACb,GACL,GAAI,EAAY,OAAS,SACrB,KAAM,GAGd,MAAO,IAGP,GAAoB,SAA2B,EAAc,EAAG,GAChE,MAAI,IAAQ,EAAK,mBAAqB,GAC3B,EAAa,GAEjB,GAGP,GAAuB,SAA8B,EAAG,EAAO,GAE/D,OADI,GAAO,GAAiB,EAAO,EAAM,GAChC,EAAI,EAAG,EAAI,EAAK,OAAQ,IAC7B,EAAK,GAAK,GAAK,KAAK,EAAK,GAAI,GAEjC,MAAO,IAGX,GAAO,QAAU,SAAqB,EAAG,GACrC,GAAI,MAAO,IAAM,SACb,KAAM,IAAI,WAAU,0BAExB,GAAI,GAAO,GAAiB,EAAG,GAE3B,EAAS,EAAK,QAAU,GACxB,EAAe,EAAK,cAAgB,GAAG,aACvC,EAAc,EAAK,aAAe,GAClC,EAAe,EAAK,cAAgB,GACpC,EAAkB,EAAK,gBAEvB,EAAa,EAAK,YAAc,CAAC,OACjC,EAAqB,EAAK,qBAAuB,GACjD,EAAU,EAAK,SAAW,GAAK,QAAQ,MACvC,EAAS,EAAK,UAAY,EAE9B,EAAK,MAAQ,EAAK,OAAS,GAG3B,GAAI,GAAgB,GAAkB,EAAc,GAAK,QAAQ,GAAU,GAE3E,GAAK,0CAA2C,KAAK,IACjD,GAAI,GAAM,GAAK,QAAQ,EAAe,GACtC,AAAI,KAAM,KAAO,IAAM,MAAQ,EAAE,MAAM,MAAQ,MAAK,IAAO,KAC3D,GAAI,GAAI,EAAe,IAAQ,EAAoB,GACnD,GAAI,EAAG,MAAO,IAAkB,EAAc,EAAG,QAC9C,GAAI,GAAsB,GAAO,GACpC,MAAO,GAEP,GAAI,GAAI,EAAoB,EAAG,GAC/B,GAAI,EAAG,MAAO,IAAkB,EAAc,EAAG,GAGrD,GAAI,GAAM,GAAI,OAAM,uBAAyB,EAAI,WAAa,EAAS,KACvE,QAAI,KAAO,mBACL,EAEN,WAAwB,GACpB,GAAI,GAAM,EAAQ,GAAK,QAAQ,IAE/B,GAAI,GAAO,EAAI,KAAO,EAAI,KAAO,EAAK,YAClC,GAAI,GAAQ,GAAK,SAAS,EAAI,IAAK,GAC/B,EAAI,EAAK,WAAW,EAAI,IAAK,EAAG,GACpC,AAAI,GACA,GAAI,GAAK,QAAQ,EAAI,IAAK,IAIlC,GAAI,EAAO,GACP,MAAO,GAGX,OAAS,GAAI,EAAG,EAAI,EAAW,OAAQ,KACnC,GAAI,GAAO,EAAI,EAAW,GAC1B,GAAI,EAAO,GACP,MAAO,IAKnB,WAAiB,GACb,GAAI,MAAQ,IAAM,IAAQ,MACtB,UAAQ,WAAa,SAAY,cAAe,KAAK,KAGpD,4BAA4B,KAAK,IAEtC,GAAI,GAAU,GAAK,KAAK,GAAkB,EAAc,EAAK,GAAO,gBAEpE,GAAI,CAAC,EAAO,GACR,MAAO,GAAQ,GAAK,QAAQ,IAGhC,GAAI,GAAO,EAAa,GAExB,IACI,GAAI,GAAM,KAAK,MAAM,SAChB,IAET,MAAI,IAAO,EAAK,eAEZ,GAAM,EAAK,cAAc,EAAkB,IAGxC,CAAE,IAAK,EAAK,IAAK,IAG5B,WAA6B,GACzB,GAAI,GAAU,GAAK,KAAK,GAAkB,EAAc,EAAG,GAAO,iBAClE,GAAI,EAAO,IACP,IACI,GAAI,GAAO,EAAa,EAAS,QAC7B,EAAM,KAAK,MAAM,SAChB,IAOT,GALI,GAAO,EAAK,eAEZ,GAAM,EAAK,cAAc,EAAkB,IAG3C,GAAO,EAAI,MACX,GAAI,MAAO,GAAI,MAAS,UACpB,GAAI,GAAY,GAAI,WAAU,iBAAc,EAAI,KAAO,kCACvD,QAAU,KAAO,uBACX,EAEV,AAAI,GAAI,OAAS,KAAO,EAAI,OAAS,OACjC,GAAI,KAAO,SAEf,IACI,GAAI,GAAI,EAAe,GAAK,QAAQ,EAAG,EAAI,OAC3C,GAAI,EAAG,MAAO,GACd,GAAI,GAAI,EAAoB,GAAK,QAAQ,EAAG,EAAI,OAChD,GAAI,EAAG,MAAO,SACT,MAIjB,MAAO,GAAe,GAAK,KAAK,EAAG,WAGvC,WAA6B,EAAG,GAI5B,OAHI,GAAQ,WAAc,MAAO,IAAqB,EAAG,EAAO,IAC5D,EAAO,EAAkB,EAAgB,EAAG,EAAO,EAAO,GAAQ,IAE7D,EAAI,EAAG,EAAI,EAAK,OAAQ,KAC7B,GAAI,GAAM,EAAK,GACf,GAAI,EAAY,GAAK,QAAQ,KACzB,GAAI,GAAI,EAAe,GACvB,GAAI,EAAG,MAAO,GACd,GAAI,GAAI,EAAoB,GAC5B,GAAI,EAAG,MAAO,SC3L9B,sBAAI,IAAgB,KACpB,GAAM,KAAe,KACrB,GAAM,OAAiB,KACvB,GAAM,KAAe,KAErB,GAAO,QAAU,KCLjB,sBAAO,QAAU,GAGjB,YAA6B,GAC3B,GAAI,EAAC,GACD,IAAM,gCAGV,EAAI,EAAE,OAAO,MAAM;AAAA,GACnB,OAAS,GAAI,EAAG,EAAE,IAAM,EAAE,GAAG,OAAO,MAAM,UAAW,IAAK,CAE1D,OADI,GAAI,EAAE,OACD,EAAI,EAAI,EAAG,EAAI,GAAK,EAAE,GAAG,OAAQ,IAAK,CAC/C,MAAO,GAAE,MAAM,EAAG,GAAG,KAAK,KAAK,0mBCZjC,sBAAI,IAAiB,KACjB,GAA0B,KAC1B,GAAwB,KACxB,GAAkB,AAAQ,KAAW,OACrC,GAAW,CAAC,eAAe,kBAAkB,wBAC7C,GAA6B,KAC7B,GAAc,eACd,GAAgB,KAEhB,GAAQ,GAAO,QAAU,CAE3B,KAAM,aAEN,mBAAoB,SAAS,GAK3B,GAJI,EAAK,cACP,MAAK,KAAK,gBACV,EAAK,WAAa,EAAK,aAAa,IAElC,CAAC,EAAK,WAAY,MAAO,MAAK,KAAK,qBACvC,AAAI,MAAO,GAAK,YAAe,UAC7B,GAAK,WAAa,CAChB,KAAM,MACN,IAAK,EAAK,aAGd,GAAI,GAAI,EAAK,WAAW,KAAO,GAC/B,GAAI,GACF,GAAI,GAAS,GAAc,QAAQ,GACnC,AAAI,GACF,GAAI,EAAK,WAAW,IAChB,EAAO,4BAA8B,WAAa,EAAO,QAAU,EAAO,YAIlF,AAAI,EAAE,MAAM,0CACV,KAAK,KAAK,eAAgB,IAI9B,SAAU,SAAS,GACjB,OAAO,KAAK,GAAM,UAAU,QAAQ,SAAU,GAC5C,AAAI,EAAK,eAAe,IACtB,KAAK,KAAK,OAAQ,EAAG,GAAM,SAAS,KAErC,OAGL,gBAAiB,SAAS,GACxB,GAAI,EAAC,EAAK,SACV,GAAI,MAAO,GAAK,SAAY,UAC1B,KAAK,KAAK,oBACV,MAAO,GAAK,QACZ,OAEF,OAAO,KAAK,EAAK,SAAS,QAAQ,SAAU,GAC1C,AAAI,MAAO,GAAK,QAAQ,IAAO,SAC7B,MAAK,KAAK,mBACV,MAAO,GAAK,QAAQ,IACX,GAAM,OAAO,IAAM,CAAC,EAAK,QAAQ,GAAM,OAAO,KACvD,KAAK,KAAK,OAAQ,EAAG,GAAM,OAAO,GAAI,YAEvC,QAGL,cAAe,SAAS,GACtB,GAAI,GAAQ,EAAK,MACjB,AAAI,GAAS,CAAC,MAAM,QAAQ,GAC1B,MAAK,KAAK,iBACV,MAAO,GAAK,OACH,EAAK,OACd,GAAK,MAAQ,EAAK,MAAM,OAAO,SAAS,GACtC,MAAI,CAAC,GAAQ,MAAO,IAAS,SAC3B,MAAK,KAAK,kBAAmB,GACtB,IAEA,IAER,QAIP,YAAa,SAAS,GACpB,GAAI,EAAC,EAAK,KACN,MAAO,GAAK,KAAQ,UACtB,GAAI,GAAI,GACJ,EACJ,AAAI,GAAQ,EAAK,KAAK,MAAM,oBAC1B,EAAE,EAAM,IAAM,EAAK,IAEnB,EAAE,EAAK,MAAQ,EAAK,IAEtB,EAAK,IAAM,IAIf,YAAa,SAAS,GACpB,AAAI,CAAC,EAAK,KACN,MAAO,GAAK,KAAQ,UACtB,GAAK,IAAM,CAAE,EAAK,OAGtB,2BAA4B,SAAS,GACnC,GAAI,GAAM,sBACN,EAAK,qBACT,AAAI,EAAK,IAAQ,CAAC,EAAK,IACrB,GAAK,GAAM,EAAK,GAChB,MAAO,GAAK,IAEd,AAAI,EAAK,IAAO,CAAC,MAAM,QAAQ,EAAK,IAClC,MAAK,KAAK,8BACV,MAAO,GAAK,IACH,EAAK,IACd,GAAK,GAAM,EAAK,GAAI,OAAO,SAAS,GAClC,MAAI,CAAC,GAAM,MAAO,IAAO,SACvB,MAAK,KAAK,4BAA6B,GAChC,IAEF,GAAK,cACR,GAAK,aAAe,IAEjB,EAAK,aAAa,eAAe,IACpC,MAAK,KAAK,gCAAiC,GAC3C,EAAK,aAAa,GAAM,KAEnB,KAER,QAIP,gBAAiB,SAAS,EAAM,GAC9B,GAAI,GAAQ,CAAC,EACb,GAAc,EAAM,KAAK,MACzB,GAAsB,EAAM,KAAK,MACjC,KAAK,2BAA2B,GAE/B,CAAC,eAAe,mBAAmB,QAAQ,SAAS,GACnD,GAAM,IAAQ,IACd,GAAI,CAAC,EAAK,IAAS,MAAO,GAAK,IAAU,UACvC,KAAK,KAAK,wBAAyB,GACnC,MAAO,GAAK,GACZ,OAEF,OAAO,KAAK,EAAK,IAAO,QAAQ,SAAU,GACxC,GAAI,GAAI,EAAK,GAAM,GACnB,AAAI,MAAO,IAAM,UACf,MAAK,KAAK,sBAAuB,EAAG,KAAK,UAAU,IACnD,MAAO,GAAK,GAAM,IAEpB,GAAI,GAAS,GAAc,QAAQ,EAAK,GAAM,IAC9C,AAAI,GAAQ,GAAK,GAAM,GAAK,EAAO,aAClC,QACF,OAGL,gBAAiB,SAAU,GACzB,AAAI,EAAK,SACP,MAAK,KAAK,qBACV,MAAO,GAAK,UAIhB,iBAAkB,SAAU,GAC1B,AAAI,MAAO,GAAK,UAAa,UAC3B,GAAK,SAAW,EAAK,SAAS,MAAM,SAEtC,AAAI,EAAK,UAAY,CAAC,MAAM,QAAQ,EAAK,UACvC,OAAO,GAAK,SACZ,KAAK,KAAK,qBACD,EAAK,UACd,GAAK,SAAW,EAAK,SAAS,OAAO,SAAS,GAC5C,MAAI,OAAO,IAAO,UAAY,CAAC,EAC7B,MAAK,KAAK,oBACH,IAEA,IAER,QAIP,gBAAiB,SAAS,EAAM,GAG9B,GAAI,GAAQ,CAAC,EACb,GAAI,CAAC,EAAK,QACR,SAAK,QAAU,GACR,GAET,GAAI,CAAC,GAAO,MAAM,EAAK,QAAS,GAC9B,KAAM,IAAI,OAAM,qBAAsB,EAAK,QAAU,KAEvD,SAAK,QAAU,GAAO,MAAM,EAAK,QAAS,GACnC,IAGT,UAAW,SAAS,GAClB,GAAa,EAAM,IACnB,GAAa,EAAM,KAGrB,aAAc,SAAS,EAAM,GAC3B,AAAI,MAAO,IAAY,UAAW,EAAU,CAAC,OAAQ,GAC5C,MAAO,IAAY,aAAa,GAAU,IACnD,GAAI,GAAS,EAAQ,OACrB,GAAI,CAAC,EAAK,MAAQ,CAAC,GACjB,EAAK,KAAO,GACZ,OAEF,GAAI,MAAO,GAAK,MAAS,SACvB,KAAM,IAAI,OAAM,gCAElB,AAAK,GACH,GAAK,KAAO,EAAK,KAAK,QACxB,GAAgB,EAAK,KAAM,EAAQ,EAAQ,iBACvC,GAAgB,EAAK,OACvB,KAAK,KAAK,kBAAmB,EAAK,OAItC,oBAAqB,SAAU,GAC7B,AAAI,EAAK,aAAe,MAAO,GAAK,aAAgB,UAClD,MAAK,KAAK,wBACV,MAAO,GAAK,aAEV,EAAK,QAAU,CAAC,EAAK,aACvB,GAAK,YAAc,GAAmB,EAAK,SACxC,EAAK,cAAgB,QAAW,MAAO,GAAK,YAC5C,EAAK,aAAa,KAAK,KAAK,uBAGnC,eAAgB,SAAU,GACxB,AAAK,EAAK,QACR,MAAK,KAAK,iBACV,EAAK,OAAS,iCAIlB,aAAc,SAAS,GACrB,GAAI,CAAC,EAAK,MAAQ,EAAK,YAAc,EAAK,WAAW,KACnD,GAAI,GAAS,GAAc,QAAQ,EAAK,WAAW,KACnD,AAAG,GAAU,EAAO,QAClB,GAAK,KAAO,CAAC,IAAK,EAAO,iBAGrB,EAAK,MACX,GAAI,GAAU,cACd,GAAG,MAAO,GAAK,MAAQ,SACrB,AAAG,EAAQ,KAAK,EAAK,MACnB,EAAK,KAAO,CAAC,MAAM,EAAK,MACrB,AAAG,GAAI,MAAM,EAAK,MAAM,SAC3B,EAAK,KAAO,CAAC,IAAK,EAAK,MAEvB,KAAK,KAAK,8BAGZ,GAAU,EAAK,KAAM,KAAK,MAC1B,GAAI,GAAU,EAAK,KACnB,EAAK,KAAO,GACT,EAAQ,KACT,CAAG,MAAO,GAAQ,KAAQ,UAAY,GAAI,MAAM,EAAQ,KAAK,SAC3D,EAAK,KAAK,IAAM,EAAQ,IAExB,KAAK,KAAK,uBAEX,EAAQ,OACT,CAAG,MAAO,GAAQ,OAAU,UAAY,EAAQ,KAAK,EAAQ,OAC3D,EAAK,KAAK,MAAQ,EAAQ,MAE1B,KAAK,KAAK,2BAGhB,AAAG,CAAC,EAAK,KAAK,OAAS,CAAC,EAAK,KAAK,KAChC,OAAO,GAAK,KACZ,KAAK,KAAK,0BAKhB,iBAAkB,SAAS,GACzB,GAAI,CAAC,EAAK,UAAY,EAAK,YAAc,EAAK,WAAW,KACvD,GAAI,GAAS,GAAc,QAAQ,EAAK,WAAW,KACnD,AAAI,GAAU,EAAO,QAAQ,GAAK,SAAW,EAAO,QAEtD,GAAI,EAAC,EAAK,UAEV,GAAG,MAAO,GAAK,UAAa,SAC1B,YAAK,KAAK,kBACH,MAAO,GAAK,SAErB,AAAI,GAAI,MAAM,EAAK,UAAU,UAC3B,GAAK,SAAW,UAAY,EAAK,YAIrC,gBAAiB,SAAS,GACxB,GAAK,EAAK,QAGR,AACE,MAAO,GAAK,SAAa,UACzB,EAAK,QAAQ,OAAS,GACtB,EAAK,QAAQ,SAAW,GAExB,KAAK,KAAK,kBAEL,GAAgB,EAAK,SAAS,qBACjC,KAAK,KAAK,sBAVd,OAAO,MAAK,KAAK,oBAgBvB,YAAkC,GAChC,GAAI,EAAK,OAAO,KAAO,IAAK,MAAO,GAEnC,GAAI,GAAO,EAAK,MAAM,GAAG,MAAM,KAC/B,MAAI,GAAK,SAAW,EAAU,GAEvB,EAAK,IAAM,EAAK,IACrB,EAAK,KAAO,mBAAmB,EAAK,KACpC,EAAK,KAAO,mBAAmB,EAAK,IAGxC,YAAgC,GAC9B,MAAO,CAAC,EAAK,MAAM,gBACjB,IAAS,mBAAmB,GAGhC,YAA0B,EAAM,EAAQ,GACtC,GAAI,EAAK,OAAO,KAAO,KACnB,CAAE,IAAyB,IAAS,GAAuB,KAC1D,GAAW,CAAC,GAAoB,IAAS,EAAK,eAC/C,EAAK,gBAAkB,gBACvB,EAAK,gBAAkB,cACrB,KAAM,IAAI,OAAM,iBAAmB,KAAK,UAAU,IAI1D,YAAuB,EAAM,GAC3B,MAAI,GAAK,QAAQ,GAAK,OAAS,EAAG,EAAK,SACtC,CAAC,cAAe,gBAAgB,QAAQ,SAAU,GACjD,AAAI,CAAC,MAAM,QAAQ,EAAK,KACxB,GAAK,GAAO,EAAK,GAAK,IAAI,MAErB,EAGT,YAAwB,GACtB,GAAI,MAAO,IAAW,SAAU,MAAO,GACvC,GAAI,GAAO,EAAO,MAAQ,GACtB,EAAI,EAAO,KAAO,EAAO,IACzB,EAAM,EAAK,KAAK,EAAE,IAAO,GACzB,EAAI,EAAO,OAAS,EAAO,KAC3B,EAAQ,EAAK,KAAK,EAAE,IAAO,GAC/B,MAAO,GAAK,EAAM,EAGpB,YAAsB,GACpB,GAAI,MAAO,IAAW,SAAU,MAAO,GACvC,GAAI,GAAO,EAAO,MAAM,cACpB,EAAM,EAAO,MAAM,gBACnB,EAAQ,EAAO,MAAM,aACrB,EAAM,GACV,MAAI,IAAQ,EAAK,GAAG,QAAQ,GAAI,KAAO,EAAK,GAAG,QAC3C,GAAO,GAAI,MAAQ,EAAM,IACzB,GAAK,GAAI,IAAM,EAAI,IAChB,EAGT,YAAgC,EAAM,GACpC,GAAI,GAAI,EAAK,qBACb,GAAI,EAAC,GACL,GAAI,GAAI,EAAK,cAAgB,GAC7B,OAAO,KAAK,GAAG,QAAQ,SAAU,GAC/B,EAAE,GAAK,EAAE,KAEX,EAAK,aAAe,GAGtB,YAAuB,EAAM,EAAM,GACjC,GAAI,CAAC,EAAM,MAAO,GAIlB,GAHI,MAAO,IAAS,UAClB,GAAO,EAAK,OAAO,MAAM,kBAEvB,CAAC,MAAM,QAAQ,GAAO,MAAO,GACjC,EAAK,8BAA+B,GACpC,GAAI,GAAI,GACR,SAAK,OAAO,SAAU,GACpB,MAAO,OAAO,IAAM,WACnB,QAAQ,SAAS,GAClB,EAAI,EAAE,OAAO,MAAM,gBACnB,GAAI,GAAK,EAAE,QACP,EAAK,EAAE,KAAK,IAChB,EAAK,EAAG,OACR,EAAK,EAAG,QAAQ,KAAM,IACtB,EAAE,GAAM,IAEH,EAGT,YAAwB,EAAM,GAC5B,GAAS,QAAQ,SAAU,GACzB,AAAI,CAAC,EAAK,IACV,GAAK,GAAQ,GAAa,EAAK,GAAO,EAAM,MAIhD,YAAmB,EAAM,GACvB,AAAI,CAAC,GACL,OAAO,KAAK,GAAM,QAAQ,SAAU,GAClC,AAAI,GAAM,KAAK,IACb,GAAK,OAAQ,EAAG,GAAM,KAAK,GAAI,QAC/B,EAAK,GAAM,KAAK,IAAM,EAAK,GAC3B,MAAO,GAAK,soDC9ZlB,sBAAI,IAAe,gBACf,GAAmB,KAEvB,GAAO,QAAU,WACf,GAAI,GAAO,MAAM,UAAU,MAAM,KAAK,UAAW,GAC7C,EAAc,EAAK,QACvB,GAAI,GAAe,OACjB,MAAO,IAAgB,MAAM,KAAK,GAGlC,GAAI,GAAc,GAAS,GAAe,GAAS,GAAe,EAAc,SAChF,SAAK,QAAQ,GACN,GAAK,OAAO,MAAM,KAAM,IAInC,YAA0B,EAAc,EAAc,GACpD,MAAI,IACF,GAAe,EAAQ,KAAO,EAAe,KAC7C,EAAe,EAAQ,KAAO,EAAe,MAExC,GAAK,OAAO,GAAS,KAAM,EAAc,MCrBlD,sBAAO,QAAU,GAEjB,GAAI,IAAgB,KACpB,GAAU,MAAQ,GAElB,GAAI,IAAsB,KAEtB,GAAc,CAAC,OAAO,UAAU,cAAc,aAAa,UAAU,UACtD,QAAQ,MAAM,MAAM,OAAO,WAAW,SAAS,WAAW,WACzE,GAAmB,CAAC,eAAe,SAAU,SAE7C,GAAc,GAAY,IAAI,SAAS,GACzC,MAAO,IAAQ,GAAa,UAK9B,GAAc,GAAY,OAAO,IAEjC,YAAoB,EAAM,EAAM,GAC9B,AAAG,IAAS,IAAM,GAAO,KAAM,EAAS,IACpC,GAAQ,GAAS,IAClB,EAAC,GAAQ,EAAK,UAAS,GAAO,SAAS,MAEtC,EAAK,SACL,EAAK,QAAQ,UAAY,oBACzB,CAAC,EAAK,QAAQ,YAChB,GAAK,QAAU,IAEjB,GAAM,KAAO,WAAa,EAAK,GAAY,MAAM,KAAM,aACvD,GAAY,QAAQ,SAAS,GAC3B,GAAM,MAAQ,GAAQ,IAAY,EAAM,KAE1C,EAAK,IAAM,EAAK,KAAO,IAAM,EAAK,QAGpC,YAAkB,GAChB,MAAO,GAAO,OAAO,GAAG,cAAgB,EAAO,MAAM,MCrCvD,gCACA,GAAM,CAAC,cAAqB,gBACtB,GAAa,cACb,GAAe,gBACf,GAAoB,KAEpB,GAAgB,GAAU,GAAG,UAEnC,GAAO,QAAU,KAAM,KACtB,EAAU,CACT,IAAK,QAAQ,MACb,UAAW,MACR,GAGJ,GAAM,GAAW,GAAK,QAAQ,EAAQ,IAAK,gBACrC,EAAO,GAAU,KAAM,IAAc,EAAU,SAErD,MAAI,GAAQ,WACX,AAAQ,KAA0B,GAG5B,GAGR,GAAO,QAAQ,KAAO,IACrB,EAAU,CACT,IAAK,QAAQ,MACb,UAAW,MACR,GAGJ,GAAM,GAAW,GAAK,QAAQ,EAAQ,IAAK,gBACrC,EAAO,GAAU,GAAG,aAAa,EAAU,SAEjD,MAAI,GAAQ,WACX,AAAQ,KAA0B,GAG5B,KCvCR,gCACA,GAAM,IAAe,gBACf,GAAiB,KACjB,GAAkB,KAExB,GAAO,QAAU,KAAM,KACtB,GAAM,GAAW,KAAM,IAAO,eAAgB,GAE9C,GAAI,EAAC,EAIL,MAAO,CACN,YAAa,KAAM,IAAQ,IAAI,EAAS,IAAK,GAAK,QAAQ,KAC1D,KAAM,IAIR,GAAO,QAAQ,KAAO,IACrB,GAAM,GAAW,GAAO,KAAK,eAAgB,GAE7C,GAAI,EAAC,EAIL,MAAO,CACN,YAAa,GAAQ,KAAK,IAAI,EAAS,IAAK,GAAK,QAAQ,KACzD,KAAM,MC3BR,gCACA,GAAM,IAAe,gBAEjB,GAAY,GAEV,GAAgB,CAAC,EAAM,QAAQ,SACpC,AAAI,IAIJ,IAAY,GAEZ,QAAQ,GAAG,qBAAsB,IAChC,AAAM,YAAiB,QACtB,GAAQ,GAAI,OAAM,gCAAgC,GAAK,QAAQ,OAGhE,EAAI,EAAM,OACV,QAAQ,KAAK,OAIf,GAAO,QAAU,GAEjB,GAAO,QAAQ,QAAU,KCxBzB,mBAEA,GAAM,IAAsB,QAEtB,GAAa,IACb,GAAmB,OAAO,kBACH,iBAGvB,GAA4B,GAElC,GAAO,QAAU,CACf,uBACA,cACA,oBACA,gCCfF,sBAAM,IACJ,MAAO,UAAY,UACnB,QAAQ,KACR,QAAQ,IAAI,YACZ,cAAc,KAAK,QAAQ,IAAI,YAC7B,IAAI,IAAS,QAAQ,MAAM,SAAU,GAAG,GACxC,OAEJ,GAAO,QAAU,KCRjB,sBAAM,CAAE,8BAAsC,KACxC,GAAgB,KACtB,GAAU,GAAO,QAAU,GAG3B,GAAM,IAAK,GAAQ,GAAK,GAClB,EAAM,GAAQ,IAAM,GACpB,EAAI,GAAQ,EAAI,GAClB,GAAI,EAEF,EAAc,CAAC,EAAM,EAAO,KAChC,GAAM,GAAQ,KACd,GAAM,EAAO,GACb,EAAE,GAAQ,EACV,EAAI,GAAS,EACb,GAAG,GAAS,GAAI,QAAO,EAAO,EAAW,IAAM,SASjD,EAAY,oBAAqB,eACjC,EAAY,yBAA0B,UAMtC,EAAY,uBAAwB,8BAKpC,EAAY,cAAe,IAAI,EAAI,EAAE,0BACd,EAAI,EAAE,0BACN,EAAI,EAAE,uBAE7B,EAAY,mBAAoB,IAAI,EAAI,EAAE,+BACd,EAAI,EAAE,+BACN,EAAI,EAAE,4BAKlC,EAAY,uBAAwB,MAAM,EAAI,EAAE,sBAC5C,EAAI,EAAE,0BAEV,EAAY,4BAA6B,MAAM,EAAI,EAAE,2BACjD,EAAI,EAAE,0BAMV,EAAY,aAAc,QAAQ,EAAI,EAAE,8BAC/B,EAAI,EAAE,6BAEf,EAAY,kBAAmB,SAAS,EAAI,EAAE,mCACrC,EAAI,EAAE,kCAKf,EAAY,kBAAmB,iBAM/B,EAAY,QAAS,UAAU,EAAI,EAAE,yBAC5B,EAAI,EAAE,wBAWf,EAAY,YAAa,KAAK,EAAI,EAAE,eACjC,EAAI,EAAE,eACP,EAAI,EAAE,WAER,EAAY,OAAQ,IAAI,EAAI,EAAE,eAK9B,EAAY,aAAc,WAAW,EAAI,EAAE,oBACxC,EAAI,EAAE,oBACP,EAAI,EAAE,WAER,EAAY,QAAS,IAAI,EAAI,EAAE,gBAE/B,EAAY,OAAQ,gBAKpB,EAAY,wBAAyB,GAAG,EAAI,EAAE,mCAC9C,EAAY,mBAAoB,GAAG,EAAI,EAAE,8BAEzC,EAAY,cAAe,YAAY,EAAI,EAAE,4BAChB,EAAI,EAAE,4BACN,EAAI,EAAE,wBACV,EAAI,EAAE,gBACV,EAAI,EAAE,eAG3B,EAAY,mBAAoB,YAAY,EAAI,EAAE,iCAChB,EAAI,EAAE,iCACN,EAAI,EAAE,6BACV,EAAI,EAAE,qBACV,EAAI,EAAE,eAGhC,EAAY,SAAU,IAAI,EAAI,EAAE,YAAY,EAAI,EAAE,iBAClD,EAAY,cAAe,IAAI,EAAI,EAAE,YAAY,EAAI,EAAE,sBAIvD,EAAY,SAAU,oBACI,oBACI,sBACA,sBAE9B,EAAY,YAAa,EAAI,EAAE,QAAS,IAIxC,EAAY,YAAa,WAEzB,EAAY,YAAa,SAAS,EAAI,EAAE,iBAAkB,IAC1D,GAAQ,iBAAmB,MAE3B,EAAY,QAAS,IAAI,EAAI,EAAE,aAAa,EAAI,EAAE,iBAClD,EAAY,aAAc,IAAI,EAAI,EAAE,aAAa,EAAI,EAAE,sBAIvD,EAAY,YAAa,WAEzB,EAAY,YAAa,SAAS,EAAI,EAAE,iBAAkB,IAC1D,GAAQ,iBAAmB,MAE3B,EAAY,QAAS,IAAI,EAAI,EAAE,aAAa,EAAI,EAAE,iBAClD,EAAY,aAAc,IAAI,EAAI,EAAE,aAAa,EAAI,EAAE,sBAGvD,EAAY,kBAAmB,IAAI,EAAI,EAAE,aAAa,EAAI,EAAE,oBAC5D,EAAY,aAAc,IAAI,EAAI,EAAE,aAAa,EAAI,EAAE,mBAIvD,EAAY,iBAAkB,SAAS,EAAI,EAAE,aACrC,EAAI,EAAE,eAAe,EAAI,EAAE,gBAAiB,IACpD,GAAQ,sBAAwB,SAMhC,EAAY,cAAe,SAAS,EAAI,EAAE,0BAEnB,EAAI,EAAE,sBAG7B,EAAY,mBAAoB,SAAS,EAAI,EAAE,+BAEnB,EAAI,EAAE,2BAIlC,EAAY,OAAQ,mBAEpB,EAAY,OAAQ,yBACpB,EAAY,UAAW,6BCrLvB,mBAEA,GAAM,IAAO,CAAC,oBAAqB,QAAS,OACtC,GAAe,GACnB,AAAC,EACC,MAAO,IAAY,SAAW,CAAE,MAAO,IACvC,GAAK,OAAO,GAAK,EAAQ,IAAI,OAAO,CAAC,EAAS,IAC9C,GAAQ,GAAK,GACN,GACN,IALQ,GAMb,GAAO,QAAU,KCVjB,sBAAM,IAAU,WACV,GAAqB,CAAC,EAAG,KAC7B,GAAM,GAAO,GAAQ,KAAK,GACpB,EAAO,GAAQ,KAAK,GAE1B,MAAI,IAAQ,GACV,GAAI,CAAC,EACL,EAAI,CAAC,GAGA,IAAM,EAAI,EACZ,GAAQ,CAAC,EAAQ,GACjB,GAAQ,CAAC,EAAQ,EAClB,EAAI,EAAI,GACR,GAGA,GAAsB,CAAC,EAAG,IAAM,GAAmB,EAAG,GAE5D,GAAO,QAAU,CACf,sBACA,0BCrBF,sBAAM,IAAgB,KAChB,CAAE,cAAY,qBAA6B,KAC3C,CAAE,MAAI,MAAc,KAEpB,GAAuB,KACvB,CAAE,uBAA+B,KALvC,SAOE,YAAa,EAAS,GAGpB,GAFA,EAAU,GAAa,GAEnB,YAAmB,KACrB,GAAI,EAAQ,QAAU,CAAC,CAAC,EAAQ,OAC5B,EAAQ,oBAAsB,CAAC,CAAC,EAAQ,kBAC1C,MAAO,GAEP,EAAU,EAAQ,gBAEX,MAAO,IAAY,SAC5B,KAAM,IAAI,WAAU,oBAAoB,KAG1C,GAAI,EAAQ,OAAS,GACnB,KAAM,IAAI,WACR,0BAA0B,iBAI9B,GAAM,SAAU,EAAS,GACzB,KAAK,QAAU,EACf,KAAK,MAAQ,CAAC,CAAC,EAAQ,MAGvB,KAAK,kBAAoB,CAAC,CAAC,EAAQ,kBAEnC,GAAM,GAAI,EAAQ,OAAO,MAAM,EAAQ,MAAQ,GAAG,GAAE,OAAS,GAAG,GAAE,OAElE,GAAI,CAAC,EACH,KAAM,IAAI,WAAU,oBAAoB,KAU1C,GAPA,KAAK,IAAM,EAGX,KAAK,MAAQ,CAAC,EAAE,GAChB,KAAK,MAAQ,CAAC,EAAE,GAChB,KAAK,MAAQ,CAAC,EAAE,GAEZ,KAAK,MAAQ,IAAoB,KAAK,MAAQ,EAChD,KAAM,IAAI,WAAU,yBAGtB,GAAI,KAAK,MAAQ,IAAoB,KAAK,MAAQ,EAChD,KAAM,IAAI,WAAU,yBAGtB,GAAI,KAAK,MAAQ,IAAoB,KAAK,MAAQ,EAChD,KAAM,IAAI,WAAU,yBAItB,AAAK,EAAE,GAGL,KAAK,WAAa,EAAE,GAAG,MAAM,KAAK,IAAI,AAAC,IACrC,GAAI,WAAW,KAAK,IAClB,GAAM,GAAM,CAAC,EACb,GAAI,GAAO,GAAK,EAAM,GACpB,MAAO,GAGX,MAAO,KATT,KAAK,WAAa,GAapB,KAAK,MAAQ,EAAE,GAAK,EAAE,GAAG,MAAM,KAAO,GACtC,KAAK,SAGP,SACE,YAAK,QAAU,GAAG,KAAK,SAAS,KAAK,SAAS,KAAK,QAC/C,KAAK,WAAW,QAClB,MAAK,SAAW,IAAI,KAAK,WAAW,KAAK,QAEpC,KAAK,QAGd,WACE,MAAO,MAAK,QAGd,QAAS,GAEP,GADA,GAAM,iBAAkB,KAAK,QAAS,KAAK,QAAS,GAChD,CAAE,aAAiB,MACrB,GAAI,MAAO,IAAU,UAAY,IAAU,KAAK,QAC9C,MAAO,GAET,EAAQ,GAAI,IAAO,EAAO,KAAK,SAGjC,MAAI,GAAM,UAAY,KAAK,QAClB,EAGF,KAAK,YAAY,IAAU,KAAK,WAAW,GAGpD,YAAa,GACX,MAAM,aAAiB,KACrB,GAAQ,GAAI,IAAO,EAAO,KAAK,UAI/B,GAAmB,KAAK,MAAO,EAAM,QACrC,GAAmB,KAAK,MAAO,EAAM,QACrC,GAAmB,KAAK,MAAO,EAAM,OAIzC,WAAY,GAMV,GALM,YAAiB,KACrB,GAAQ,GAAI,IAAO,EAAO,KAAK,UAI7B,KAAK,WAAW,QAAU,CAAC,EAAM,WAAW,OAC9C,MAAO,GACF,GAAI,CAAC,KAAK,WAAW,QAAU,EAAM,WAAW,OACrD,MAAO,GACF,GAAI,CAAC,KAAK,WAAW,QAAU,CAAC,EAAM,WAAW,OACtD,MAAO,GAGT,GAAI,GAAI,EACR,GACE,GAAM,GAAI,KAAK,WAAW,GACpB,EAAI,EAAM,WAAW,GAE3B,GADA,GAAM,qBAAsB,EAAG,EAAG,GAC9B,IAAM,QAAa,IAAM,OAC3B,MAAO,GACF,GAAI,IAAM,OACf,MAAO,GACF,GAAI,IAAM,OACf,MAAO,GACF,GAAI,IAAM,EACf,SAEA,MAAO,IAAmB,EAAG,SAExB,EAAE,GAGb,aAAc,GACZ,AAAM,YAAiB,KACrB,GAAQ,GAAI,IAAO,EAAO,KAAK,UAGjC,GAAI,GAAI,EACR,GACE,GAAM,GAAI,KAAK,MAAM,GACf,EAAI,EAAM,MAAM,GAEtB,GADA,GAAM,qBAAsB,EAAG,EAAG,GAC9B,IAAM,QAAa,IAAM,OAC3B,MAAO,GACF,GAAI,IAAM,OACf,MAAO,GACF,GAAI,IAAM,OACf,MAAO,GACF,GAAI,IAAM,EACf,SAEA,MAAO,IAAmB,EAAG,SAExB,EAAE,GAKb,IAAK,EAAS,GACZ,OAAQ,OACD,WACH,KAAK,WAAW,OAAS,EACzB,KAAK,MAAQ,EACb,KAAK,MAAQ,EACb,KAAK,QACL,KAAK,IAAI,MAAO,GAChB,UACG,WACH,KAAK,WAAW,OAAS,EACzB,KAAK,MAAQ,EACb,KAAK,QACL,KAAK,IAAI,MAAO,GAChB,UACG,WAIH,KAAK,WAAW,OAAS,EACzB,KAAK,IAAI,QAAS,GAClB,KAAK,IAAI,MAAO,GAChB,UAGG,aACH,AAAI,KAAK,WAAW,SAAW,GAC7B,KAAK,IAAI,QAAS,GAEpB,KAAK,IAAI,MAAO,GAChB,UAEG,QAKH,AACE,MAAK,QAAU,GACf,KAAK,QAAU,GACf,KAAK,WAAW,SAAW,IAE3B,KAAK,QAEP,KAAK,MAAQ,EACb,KAAK,MAAQ,EACb,KAAK,WAAa,GAClB,UACG,QAKH,AAAI,MAAK,QAAU,GAAK,KAAK,WAAW,SAAW,IACjD,KAAK,QAEP,KAAK,MAAQ,EACb,KAAK,WAAa,GAClB,UACG,QAKH,AAAI,KAAK,WAAW,SAAW,GAC7B,KAAK,QAEP,KAAK,WAAa,GAClB,UAGG,MACH,GAAI,KAAK,WAAW,SAAW,EAC7B,KAAK,WAAa,CAAC,QAEnB,GAAI,GAAI,KAAK,WAAW,OACxB,KAAO,EAAE,GAAK,GACZ,AAAI,MAAO,MAAK,WAAW,IAAO,UAChC,MAAK,WAAW,KAChB,EAAI,IAGR,AAAI,IAAM,IAER,KAAK,WAAW,KAAK,GAGzB,AAAI,GAGF,CAAI,KAAK,WAAW,KAAO,EACrB,MAAM,KAAK,WAAW,KACxB,MAAK,WAAa,CAAC,EAAY,IAGjC,KAAK,WAAa,CAAC,EAAY,IAGnC,cAGA,KAAM,IAAI,OAAM,+BAA+B,KAEnD,YAAK,SACL,KAAK,IAAM,KAAK,QACT,OAIX,GAAO,QAAU,KC9RjB,sBAAM,CAAC,eAAsB,KACvB,CAAE,MAAI,MAAc,KACpB,GAAiB,KAEjB,GAAuB,KACvB,GAAQ,CAAC,EAAS,KAGtB,GAFA,EAAU,GAAa,GAEnB,YAAmB,IACrB,MAAO,GAYT,GATI,MAAO,IAAY,UAInB,EAAQ,OAAS,IAKjB,CAAC,AADK,GAAQ,MAAQ,GAAG,GAAE,OAAS,GAAG,GAAE,OACtC,KAAK,GACV,MAAO,MAGT,IACE,MAAO,IAAI,IAAO,EAAS,SACpB,GACP,MAAO,QAIX,GAAO,QAAU,KChCjB,sBAAM,IAAgB,KAChB,GAAQ,CAAC,EAAS,KACtB,GAAM,GAAI,GAAM,EAAS,GACzB,MAAO,GAAI,EAAE,QAAU,MAEzB,GAAO,QAAU,KCLjB,sBAAM,IAAgB,KAChB,GAAQ,CAAC,EAAS,KACtB,GAAM,GAAI,GAAM,EAAQ,OAAO,QAAQ,SAAU,IAAK,GACtD,MAAO,GAAI,EAAE,QAAU,MAEzB,GAAO,QAAU,KCLjB,sBAAM,IAAiB,KAEjB,GAAM,CAAC,EAAS,EAAS,EAAS,KACtC,AAAI,MAAQ,IAAa,UACvB,GAAa,EACb,EAAU,QAGZ,IACE,MAAO,IAAI,IAAO,EAAS,GAAS,IAAI,EAAS,GAAY,cACtD,GACP,MAAO,QAGX,GAAO,QAAU,KCdjB,sBAAM,IAAiB,KACjB,GAAU,CAAC,EAAG,EAAG,IACrB,GAAI,IAAO,EAAG,GAAO,QAAQ,GAAI,IAAO,EAAG,IAE7C,GAAO,QAAU,KCJjB,sBAAM,IAAkB,KAClB,GAAK,CAAC,EAAG,EAAG,IAAU,GAAQ,EAAG,EAAG,KAAW,EACrD,GAAO,QAAU,KCFjB,sBAAM,IAAgB,KAChB,GAAa,KAEb,GAAO,CAAC,EAAU,KACtB,GAAI,GAAG,EAAU,GACf,MAAO,MACF,CACL,GAAM,GAAK,GAAM,GACX,EAAK,GAAM,GACX,EAAS,EAAG,WAAW,QAAU,EAAG,WAAW,OAC/C,EAAS,EAAS,MAAQ,GAC1B,EAAgB,EAAS,aAAe,GAC9C,OAAW,KAAO,GAChB,GAAI,KAAQ,SAAW,IAAQ,SAAW,IAAQ,UAC5C,EAAG,KAAS,EAAG,GACjB,MAAO,GAAS,EAItB,MAAO,KAGX,GAAO,QAAU,KCtBjB,sBAAM,IAAiB,KACjB,GAAQ,CAAC,EAAG,IAAU,GAAI,IAAO,EAAG,GAAO,MACjD,GAAO,QAAU,KCFjB,sBAAM,IAAiB,KACjB,GAAQ,CAAC,EAAG,IAAU,GAAI,IAAO,EAAG,GAAO,MACjD,GAAO,QAAU,KCFjB,sBAAM,IAAiB,KACjB,GAAQ,CAAC,EAAG,IAAU,GAAI,IAAO,EAAG,GAAO,MACjD,GAAO,QAAU,KCFjB,sBAAM,IAAgB,KAChB,GAAa,CAAC,EAAS,KAC3B,GAAM,GAAS,GAAM,EAAS,GAC9B,MAAQ,IAAU,EAAO,WAAW,OAAU,EAAO,WAAa,MAEpE,GAAO,QAAU,KCLjB,sBAAM,IAAkB,KAClB,GAAW,CAAC,EAAG,EAAG,IAAU,GAAQ,EAAG,EAAG,GAChD,GAAO,QAAU,KCFjB,sBAAM,IAAkB,KAClB,GAAe,CAAC,EAAG,IAAM,GAAQ,EAAG,EAAG,IAC7C,GAAO,QAAU,KCFjB,sBAAM,IAAiB,KACjB,GAAe,CAAC,EAAG,EAAG,KAC1B,GAAM,GAAW,GAAI,IAAO,EAAG,GACzB,EAAW,GAAI,IAAO,EAAG,GAC/B,MAAO,GAAS,QAAQ,IAAa,EAAS,aAAa,IAE7D,GAAO,QAAU,KCNjB,sBAAM,IAAuB,KACvB,GAAO,CAAC,EAAM,IAAU,EAAK,KAAK,CAAC,EAAG,IAAM,GAAa,EAAG,EAAG,IACrE,GAAO,QAAU,KCFjB,sBAAM,IAAuB,KACvB,GAAQ,CAAC,EAAM,IAAU,EAAK,KAAK,CAAC,EAAG,IAAM,GAAa,EAAG,EAAG,IACtE,GAAO,QAAU,KCFjB,sBAAM,IAAkB,KAClB,GAAK,CAAC,EAAG,EAAG,IAAU,GAAQ,EAAG,EAAG,GAAS,EACnD,GAAO,QAAU,KCFjB,sBAAM,IAAkB,KAClB,GAAK,CAAC,EAAG,EAAG,IAAU,GAAQ,EAAG,EAAG,GAAS,EACnD,GAAO,QAAU,KCFjB,sBAAM,IAAkB,KAClB,GAAM,CAAC,EAAG,EAAG,IAAU,GAAQ,EAAG,EAAG,KAAW,EACtD,GAAO,QAAU,KCFjB,sBAAM,IAAkB,KAClB,GAAM,CAAC,EAAG,EAAG,IAAU,GAAQ,EAAG,EAAG,IAAU,EACrD,GAAO,QAAU,KCFjB,sBAAM,IAAkB,KAClB,GAAM,CAAC,EAAG,EAAG,IAAU,GAAQ,EAAG,EAAG,IAAU,EACrD,GAAO,QAAU,KCFjB,sBAAM,IAAa,KACb,GAAc,KACd,GAAa,KACb,GAAc,KACd,GAAa,KACb,GAAc,KAEd,GAAM,CAAC,EAAG,EAAI,EAAG,KACrB,OAAQ,OACD,MACH,MAAI,OAAO,IAAM,UACf,GAAI,EAAE,SACJ,MAAO,IAAM,UACf,GAAI,EAAE,SACD,IAAM,MAEV,MACH,MAAI,OAAO,IAAM,UACf,GAAI,EAAE,SACJ,MAAO,IAAM,UACf,GAAI,EAAE,SACD,IAAM,MAEV,OACA,QACA,KACH,MAAO,IAAG,EAAG,EAAG,OAEb,KACH,MAAO,IAAI,EAAG,EAAG,OAEd,IACH,MAAO,IAAG,EAAG,EAAG,OAEb,KACH,MAAO,IAAI,EAAG,EAAG,OAEd,IACH,MAAO,IAAG,EAAG,EAAG,OAEb,KACH,MAAO,IAAI,EAAG,EAAG,WAGjB,KAAM,IAAI,WAAU,qBAAqB,OAG/C,GAAO,QAAU,KC/CjB,sBAAM,IAAiB,KACjB,GAAgB,KAChB,CAAC,MAAI,MAAa,KAElB,GAAS,CAAC,EAAS,KACvB,GAAI,YAAmB,IACrB,MAAO,GAOT,GAJI,MAAO,IAAY,UACrB,GAAU,OAAO,IAGf,MAAO,IAAY,SACrB,MAAO,MAGT,EAAU,GAAW,GAErB,GAAI,GAAQ,KACZ,GAAI,CAAC,EAAQ,IACX,EAAQ,EAAQ,MAAM,GAAG,GAAE,cAU3B,GAAI,GACJ,KAAQ,GAAO,GAAG,GAAE,WAAW,KAAK,KAC/B,EAAC,GAAS,EAAM,MAAQ,EAAM,GAAG,SAAW,EAAQ,SAEvD,AAAI,EAAC,GACC,EAAK,MAAQ,EAAK,GAAG,SAAW,EAAM,MAAQ,EAAM,GAAG,SAC3D,GAAQ,GAEV,GAAG,GAAE,WAAW,UAAY,EAAK,MAAQ,EAAK,GAAG,OAAS,EAAK,GAAG,OAGpE,GAAG,GAAE,WAAW,UAAY,GAG9B,MAAI,KAAU,KACL,KAEF,GAAM,GAAG,EAAM,MAAM,EAAM,IAAM,OAAO,EAAM,IAAM,MAAO,IAEpE,GAAO,QAAU,KClDjB,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,gCAGA,GAAM,IAAkB,KAElB,GAAM,OAAO,OACb,GAAS,OAAO,UAChB,GAAoB,OAAO,oBAC3B,GAAc,OAAO,cACrB,GAAU,OAAO,UACjB,GAAU,OAAO,WACjB,GAAoB,OAAO,kBAC3B,GAAW,OAAO,WAClB,GAAQ,OAAO,SACf,GAAoB,OAAO,kBAE3B,GAAc,IAAM,EAhB1B,SA2BE,YAAa,GAOX,GANI,MAAO,IAAY,UACrB,GAAU,CAAE,IAAK,IAEd,GACH,GAAU,IAER,EAAQ,KAAQ,OAAO,GAAQ,KAAQ,UAAY,EAAQ,IAAM,GACnE,KAAM,IAAI,WAAU,qCAEtB,GAAM,GAAM,KAAK,IAAO,EAAQ,KAAO,SAEjC,EAAK,EAAQ,QAAU,GAG7B,GAFA,KAAK,IAAsB,MAAO,IAAO,WAAc,GAAc,EACrE,KAAK,IAAe,EAAQ,OAAS,GACjC,EAAQ,QAAU,MAAO,GAAQ,QAAW,SAC9C,KAAM,IAAI,WAAU,2BACtB,KAAK,IAAW,EAAQ,QAAU,EAClC,KAAK,IAAW,EAAQ,QACxB,KAAK,IAAqB,EAAQ,gBAAkB,GACpD,KAAK,IAAqB,EAAQ,gBAAkB,GACpD,KAAK,WAIH,KAAK,GACP,GAAI,MAAO,IAAO,UAAY,EAAK,EACjC,KAAM,IAAI,WAAU,qCAEtB,KAAK,IAAO,GAAM,SAClB,GAAK,SAEH,OACF,MAAO,MAAK,OAGV,YAAY,GACd,KAAK,IAAe,CAAC,CAAC,KAEpB,cACF,MAAO,MAAK,OAGV,QAAQ,GACV,GAAI,MAAO,IAAO,SAChB,KAAM,IAAI,WAAU,wCAEtB,KAAK,IAAW,EAChB,GAAK,SAEH,UACF,MAAO,MAAK,OAIV,kBAAkB,GACpB,AAAI,MAAO,IAAO,YAChB,GAAK,IAEH,IAAO,KAAK,KACd,MAAK,IAAqB,EAC1B,KAAK,IAAU,EACf,KAAK,IAAU,QAAQ,IACrB,EAAI,OAAS,KAAK,IAAmB,EAAI,MAAO,EAAI,KACpD,KAAK,KAAW,EAAI,UAGxB,GAAK,SAEH,oBAAsB,MAAO,MAAK,OAElC,UAAY,MAAO,MAAK,OACxB,aAAe,MAAO,MAAK,IAAU,OAEzC,SAAU,EAAI,GACZ,EAAQ,GAAS,KACjB,OAAS,GAAS,KAAK,IAAU,KAAM,IAAW,OAChD,GAAM,GAAO,EAAO,KACpB,GAAY,KAAM,EAAI,EAAQ,GAC9B,EAAS,GAIb,QAAS,EAAI,GACX,EAAQ,GAAS,KACjB,OAAS,GAAS,KAAK,IAAU,KAAM,IAAW,OAChD,GAAM,GAAO,EAAO,KACpB,GAAY,KAAM,EAAI,EAAQ,GAC9B,EAAS,GAIb,OACE,MAAO,MAAK,IAAU,UAAU,IAAI,GAAK,EAAE,KAG7C,SACE,MAAO,MAAK,IAAU,UAAU,IAAI,GAAK,EAAE,OAG7C,QACE,AAAI,KAAK,KACL,KAAK,KACL,KAAK,IAAU,QACjB,KAAK,IAAU,QAAQ,GAAO,KAAK,IAAS,EAAI,IAAK,EAAI,QAG3D,KAAK,IAAS,GAAI,KAClB,KAAK,IAAY,GAAI,IACrB,KAAK,IAAU,EAGjB,OACE,MAAO,MAAK,IAAU,IAAI,GACxB,GAAQ,KAAM,GAAO,GAAQ,CAC3B,EAAG,EAAI,IACP,EAAG,EAAI,MACP,EAAG,EAAI,IAAO,GAAI,QAAU,KAC3B,UAAU,OAAO,GAAK,GAG7B,UACE,MAAO,MAAK,IAGd,IAAK,EAAK,EAAO,GAGf,GAFA,EAAS,GAAU,KAAK,IAEpB,GAAU,MAAO,IAAW,SAC9B,KAAM,IAAI,WAAU,2BAEtB,GAAM,GAAM,EAAS,KAAK,MAAQ,EAC5B,EAAM,KAAK,IAAmB,EAAO,GAE3C,GAAI,KAAK,IAAO,IAAI,IAClB,GAAI,EAAM,KAAK,IACb,UAAI,KAAM,KAAK,IAAO,IAAI,IACnB,GAIT,GAAM,GAAO,AADA,KAAK,IAAO,IAAI,GACX,MAIlB,MAAI,MAAK,KACF,MAAK,KACR,KAAK,IAAS,EAAK,EAAK,QAG5B,EAAK,IAAM,EACX,EAAK,OAAS,EACd,EAAK,MAAQ,EACb,KAAK,KAAW,EAAM,EAAK,OAC3B,EAAK,OAAS,EACd,KAAK,IAAI,GACT,GAAK,MACE,GAGT,GAAM,GAAM,GAAI,IAAM,EAAK,EAAO,EAAK,EAAK,GAG5C,MAAI,GAAI,OAAS,KAAK,IAChB,MAAK,KACP,KAAK,IAAS,EAAK,GAEd,IAGT,MAAK,KAAW,EAAI,OACpB,KAAK,IAAU,QAAQ,GACvB,KAAK,IAAO,IAAI,EAAK,KAAK,IAAU,MACpC,GAAK,MACE,IAGT,IAAK,GACH,GAAI,CAAC,KAAK,IAAO,IAAI,GAAM,MAAO,GAClC,GAAM,GAAM,KAAK,IAAO,IAAI,GAAK,MACjC,MAAO,CAAC,GAAQ,KAAM,GAGxB,IAAK,GACH,MAAO,IAAI,KAAM,EAAK,IAGxB,KAAM,GACJ,MAAO,IAAI,KAAM,EAAK,IAGxB,MACE,GAAM,GAAO,KAAK,IAAU,KAC5B,MAAK,GAGL,IAAI,KAAM,GACH,EAAK,OAHH,KAMX,IAAK,GACH,GAAI,KAAM,KAAK,IAAO,IAAI,IAG5B,KAAM,GAEJ,KAAK,QAEL,GAAM,GAAM,KAAK,MAEjB,OAAS,GAAI,EAAI,OAAS,EAAG,GAAK,EAAG,KACnC,GAAM,GAAM,EAAI,GACV,EAAY,EAAI,GAAK,EAC3B,GAAI,IAAc,EAEhB,KAAK,IAAI,EAAI,EAAG,EAAI,QAEpB,GAAM,GAAS,EAAY,EAE3B,AAAI,EAAS,GACX,KAAK,IAAI,EAAI,EAAG,EAAI,EAAG,KAM/B,QACE,KAAK,IAAO,QAAQ,CAAC,EAAO,IAAQ,GAAI,KAAM,EAAK,OAIjD,GAAM,CAAC,EAAM,EAAK,KACtB,GAAM,GAAO,EAAK,IAAO,IAAI,GAC7B,GAAI,GACF,GAAM,GAAM,EAAK,MACjB,GAAI,GAAQ,EAAM,IAEhB,GADA,GAAI,EAAM,GACN,CAAC,EAAK,IACR,WAEF,AAAI,IACE,GAAK,KACP,GAAK,MAAM,IAAM,KAAK,OACxB,EAAK,IAAU,YAAY,IAG/B,MAAO,GAAI,QAIT,GAAU,CAAC,EAAM,KACrB,GAAI,CAAC,GAAQ,CAAC,EAAI,QAAU,CAAC,EAAK,IAChC,MAAO,GAET,GAAM,GAAO,KAAK,MAAQ,EAAI,IAC9B,MAAO,GAAI,OAAS,EAAO,EAAI,OAC3B,EAAK,KAAa,EAAO,EAAK,KAG9B,GAAO,IACX,GAAI,EAAK,IAAU,EAAK,IACtB,OAAS,GAAS,EAAK,IAAU,KAC/B,EAAK,IAAU,EAAK,KAAQ,IAAW,OAIvC,GAAM,GAAO,EAAO,KACpB,GAAI,EAAM,GACV,EAAS,IAKT,GAAM,CAAC,EAAM,KACjB,GAAI,GACF,GAAM,GAAM,EAAK,MACjB,AAAI,EAAK,KACP,EAAK,IAAS,EAAI,IAAK,EAAI,OAE7B,EAAK,KAAW,EAAI,OACpB,EAAK,IAAO,OAAO,EAAI,KACvB,EAAK,IAAU,WAAW,KApT9B,SAyTE,YAAa,EAAK,EAAO,EAAQ,EAAK,GACpC,KAAK,IAAM,EACX,KAAK,MAAQ,EACb,KAAK,OAAS,EACd,KAAK,IAAM,EACX,KAAK,OAAS,GAAU,IAItB,GAAc,CAAC,EAAM,EAAI,EAAM,KACnC,GAAI,GAAM,EAAK,MACf,AAAI,GAAQ,EAAM,IAChB,IAAI,EAAM,GACL,EAAK,KACR,GAAM,SAEN,GACF,EAAG,KAAK,EAAO,EAAI,MAAO,EAAI,IAAK,IAGvC,GAAO,QAAU,KC7UjB,gCAEE,YAAa,EAAO,GAGlB,GAFA,EAAU,GAAa,GAEnB,YAAiB,IACnB,MACE,GAAM,QAAU,CAAC,CAAC,EAAQ,OAC1B,EAAM,oBAAsB,CAAC,CAAC,EAAQ,kBAE/B,EAEA,GAAI,IAAM,EAAM,IAAK,GAIhC,GAAI,YAAiB,IAEnB,YAAK,IAAM,EAAM,MACjB,KAAK,IAAM,CAAC,CAAC,IACb,KAAK,SACE,KAkBT,GAfA,KAAK,QAAU,EACf,KAAK,MAAQ,CAAC,CAAC,EAAQ,MACvB,KAAK,kBAAoB,CAAC,CAAC,EAAQ,kBAGnC,KAAK,IAAM,EACX,KAAK,IAAM,EACR,MAAM,cAEN,IAAI,GAAS,KAAK,WAAW,EAAM,SAInC,OAAO,GAAK,EAAE,QAEb,CAAC,KAAK,IAAI,OACZ,KAAM,IAAI,WAAU,yBAAyB,KAI/C,GAAI,KAAK,IAAI,OAAS,GAEpB,GAAM,GAAQ,KAAK,IAAI,GAEvB,GADA,KAAK,IAAM,KAAK,IAAI,OAAO,GAAK,CAAC,GAAU,EAAE,KACzC,KAAK,IAAI,SAAW,EACtB,KAAK,IAAM,CAAC,WACL,KAAK,IAAI,OAAS,GAEzB,OAAW,KAAK,MAAK,IACnB,GAAI,EAAE,SAAW,GAAK,GAAM,EAAE,KAC5B,KAAK,IAAM,CAAC,GACZ,QAMR,KAAK,SAGP,SACE,YAAK,MAAQ,KAAK,IACf,IAAI,AAAC,GACG,EAAM,KAAK,KAAK,QAExB,KAAK,MACL,OACI,KAAK,MAGd,WACE,MAAO,MAAK,MAGd,WAAY,GACV,EAAQ,EAAM,OAKd,GAAM,GAAU,cADC,OAAO,KAAK,KAAK,SAAS,KAAK,QACN,IACpC,EAAS,GAAM,IAAI,GACzB,GAAI,EACF,MAAO,GAET,GAAM,GAAQ,KAAK,QAAQ,MAErB,EAAK,EAAQ,GAAG,GAAE,kBAAoB,GAAG,GAAE,aACjD,EAAQ,EAAM,QAAQ,EAAI,GAAc,KAAK,QAAQ,oBACrD,GAAM,iBAAkB,GAExB,EAAQ,EAAM,QAAQ,GAAG,GAAE,gBAAiB,IAC5C,GAAM,kBAAmB,EAAO,GAAG,GAAE,iBAGrC,EAAQ,EAAM,QAAQ,GAAG,GAAE,WAAY,IAGvC,EAAQ,EAAM,QAAQ,GAAG,GAAE,WAAY,IAGvC,EAAQ,EAAM,MAAM,OAAO,KAAK,KAKhC,GAAM,GAAS,EAAQ,GAAG,GAAE,iBAAmB,GAAG,GAAE,YAC9C,EAAY,EACf,MAAM,KACN,IAAI,GAAQ,GAAgB,EAAM,KAAK,UACvC,KAAK,KACL,MAAM,OAEN,IAAI,GAAQ,GAAY,EAAM,KAAK,UAEnC,OAAO,KAAK,QAAQ,MAAQ,GAAQ,CAAC,CAAC,EAAK,MAAM,GAAU,IAAM,IACjE,IAAI,GAAQ,GAAI,IAAW,EAAM,KAAK,UAKnC,EAAI,EAAU,OACd,EAAW,GAAI,KACrB,OAAW,KAAQ,IACjB,GAAI,GAAU,GACZ,MAAO,CAAC,GACV,EAAS,IAAI,EAAK,MAAO,GAE3B,AAAI,EAAS,KAAO,GAAK,EAAS,IAAI,KACpC,EAAS,OAAO,IAElB,GAAM,GAAS,CAAC,GAAG,EAAS,UAC5B,UAAM,IAAI,EAAS,GACZ,EAGT,WAAY,EAAO,GACjB,GAAI,CAAE,aAAiB,KACrB,KAAM,IAAI,WAAU,uBAGtB,MAAO,MAAK,IAAI,KAAK,AAAC,GAElB,GAAc,EAAiB,IAC/B,EAAM,IAAI,KAAK,AAAC,GAEZ,GAAc,EAAkB,IAChC,EAAgB,MAAM,AAAC,GACd,EAAiB,MAAM,AAAC,GACtB,EAAe,WAAW,EAAiB,OAUhE,KAAM,GACJ,GAAI,CAAC,EACH,MAAO,GAGT,GAAI,MAAO,IAAY,SACrB,IACE,EAAU,GAAI,IAAO,EAAS,KAAK,eAC5B,GACP,MAAO,GAIX,OAAS,GAAI,EAAG,EAAI,KAAK,IAAI,OAAQ,IACnC,GAAI,GAAQ,KAAK,IAAI,GAAI,EAAS,KAAK,SACrC,MAAO,GAGX,MAAO,KAGX,GAAO,QAAU,GAEjB,GAAM,IAAc,KACd,GAAQ,GAAI,IAAI,CAAE,IAAK,MAEvB,GAAuB,KACvB,GAAqB,KACrB,GAAgB,KAChB,GAAiB,KACjB,CACJ,MACA,KACA,yBACA,oBACA,qBACU,KAEN,GAAY,GAAK,EAAE,QAAU,WAC7B,GAAQ,GAAK,EAAE,QAAU,GAIzB,GAAgB,CAAC,EAAa,KAClC,GAAI,GAAS,GACP,EAAuB,EAAY,QACrC,EAAiB,EAAqB,MAE1C,KAAO,GAAU,EAAqB,QACpC,EAAS,EAAqB,MAAM,AAAC,GAC5B,EAAe,WAAW,EAAiB,IAGpD,EAAiB,EAAqB,MAGxC,MAAO,IAMH,GAAkB,CAAC,EAAM,IAC7B,IAAM,OAAQ,EAAM,GACpB,EAAO,GAAc,EAAM,GAC3B,GAAM,QAAS,GACf,EAAO,GAAc,EAAM,GAC3B,GAAM,SAAU,GAChB,EAAO,GAAe,EAAM,GAC5B,GAAM,SAAU,GAChB,EAAO,GAAa,EAAM,GAC1B,GAAM,QAAS,GACR,GAGH,GAAM,GAAM,CAAC,GAAM,EAAG,gBAAkB,KAAO,IAAO,IAQtD,GAAgB,CAAC,EAAM,IAC3B,EAAK,OAAO,MAAM,OAAO,IAAI,AAAC,GACrB,GAAa,EAAM,IACzB,KAAK,KAEJ,GAAe,CAAC,EAAM,KAC1B,GAAM,GAAI,EAAQ,MAAQ,GAAG,GAAE,YAAc,GAAG,GAAE,OAClD,MAAO,GAAK,QAAQ,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,KAClC,GAAM,QAAS,EAAM,EAAG,EAAG,EAAG,EAAG,GACjC,GAAI,GAEJ,MAAI,IAAI,GACN,EAAM,GACD,AAAI,GAAI,GACb,EAAM,KAAK,UAAU,CAAC,EAAI,UACrB,AAAI,GAAI,GAEb,EAAM,KAAK,KAAK,QAAQ,KAAK,CAAC,EAAI,QAC7B,AAAI,EACT,IAAM,kBAAmB,GACzB,EAAM,KAAK,KAAK,KAAK,KAAK,MACrB,KAAK,CAAC,EAAI,SAGf,EAAM,KAAK,KAAK,KAAK,MAChB,KAAK,CAAC,EAAI,QAGjB,GAAM,eAAgB,GACf,KAUL,GAAgB,CAAC,EAAM,IAC3B,EAAK,OAAO,MAAM,OAAO,IAAI,AAAC,GACrB,GAAa,EAAM,IACzB,KAAK,KAEJ,GAAe,CAAC,EAAM,KAC1B,GAAM,QAAS,EAAM,GACrB,GAAM,GAAI,EAAQ,MAAQ,GAAG,GAAE,YAAc,GAAG,GAAE,OAC5C,EAAI,EAAQ,kBAAoB,KAAO,GAC7C,MAAO,GAAK,QAAQ,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,KAClC,GAAM,QAAS,EAAM,EAAG,EAAG,EAAG,EAAG,GACjC,GAAI,GAEJ,MAAI,IAAI,GACN,EAAM,GACD,AAAI,GAAI,GACb,EAAM,KAAK,QAAQ,MAAM,CAAC,EAAI,UACzB,AAAI,GAAI,GACb,AAAI,IAAM,IACR,EAAM,KAAK,KAAK,MAAM,MAAM,KAAK,CAAC,EAAI,QAEtC,EAAM,KAAK,KAAK,MAAM,MAAM,CAAC,EAAI,UAE9B,AAAI,EACT,IAAM,kBAAmB,GACzB,AAAI,IAAM,IACR,AAAI,IAAM,IACR,EAAM,KAAK,KAAK,KAAK,KAAK,MACrB,KAAK,KAAK,CAAC,EAAI,MAEpB,EAAM,KAAK,KAAK,KAAK,KAAK,MACrB,KAAK,CAAC,EAAI,QAGjB,EAAM,KAAK,KAAK,KAAK,KAAK,MACrB,CAAC,EAAI,WAGZ,IAAM,SACN,AAAI,IAAM,IACR,AAAI,IAAM,IACR,EAAM,KAAK,KAAK,KAAK,IAClB,MAAM,KAAK,KAAK,CAAC,EAAI,MAExB,EAAM,KAAK,KAAK,KAAK,IAClB,MAAM,KAAK,CAAC,EAAI,QAGrB,EAAM,KAAK,KAAK,KAAK,MAChB,CAAC,EAAI,WAId,GAAM,eAAgB,GACf,KAIL,GAAiB,CAAC,EAAM,IAC5B,IAAM,iBAAkB,EAAM,GACvB,EAAK,MAAM,OAAO,IAAI,AAAC,GACrB,GAAc,EAAM,IAC1B,KAAK,MAGJ,GAAgB,CAAC,EAAM,KAC3B,EAAO,EAAK,OACZ,GAAM,GAAI,EAAQ,MAAQ,GAAG,GAAE,aAAe,GAAG,GAAE,QACnD,MAAO,GAAK,QAAQ,EAAG,CAAC,EAAK,EAAM,EAAG,EAAG,EAAG,KAC1C,GAAM,SAAU,EAAM,EAAK,EAAM,EAAG,EAAG,EAAG,GAC1C,GAAM,GAAK,GAAI,GACT,EAAK,GAAM,GAAI,GACf,EAAK,GAAM,GAAI,GACf,EAAO,EAEb,MAAI,KAAS,KAAO,GAClB,GAAO,IAKT,EAAK,EAAQ,kBAAoB,KAAO,GAExC,AAAI,EACF,AAAI,IAAS,KAAO,IAAS,IAE3B,EAAM,WAGN,EAAM,IAEH,AAAI,GAAQ,EAGb,IACF,GAAI,GAEN,EAAI,EAEJ,AAAI,IAAS,IAGX,GAAO,KACP,AAAI,EACF,GAAI,CAAC,EAAI,EACT,EAAI,EACJ,EAAI,GAEJ,GAAI,CAAC,EAAI,EACT,EAAI,IAEG,IAAS,MAGlB,GAAO,IACP,AAAI,EACF,EAAI,CAAC,EAAI,EAET,EAAI,CAAC,EAAI,GAIT,IAAS,KACX,GAAK,MAEP,EAAM,GAAG,EAAO,KAAK,KAAK,IAAI,KACzB,AAAI,EACT,EAAM,KAAK,QAAQ,MAAO,CAAC,EAAI,UACtB,GACT,GAAM,KAAK,KAAK,MAAM,MACjB,KAAK,CAAC,EAAI,SAGjB,GAAM,gBAAiB,GAEhB,KAML,GAAe,CAAC,EAAM,IAC1B,IAAM,eAAgB,EAAM,GAErB,EAAK,OAAO,QAAQ,GAAG,GAAE,MAAO,KAGnC,GAAc,CAAC,EAAM,IACzB,IAAM,cAAe,EAAM,GACpB,EAAK,OACT,QAAQ,GAAG,EAAQ,kBAAoB,GAAE,QAAU,GAAE,MAAO,KAQ3D,GAAgB,GAAS,CAAC,EAC9B,EAAM,EAAI,EAAI,EAAI,EAAK,EACvB,EAAI,EAAI,EAAI,EAAI,EAAK,IACrB,CAAI,GAAI,GACN,EAAO,GACF,AAAI,GAAI,GACb,EAAO,KAAK,QAAS,EAAQ,KAAO,KAC/B,AAAI,GAAI,GACb,EAAO,KAAK,KAAM,MAAO,EAAQ,KAAO,KACnC,AAAI,EACT,EAAO,KAAK,IAEZ,EAAO,KAAK,IAAO,EAAQ,KAAO,KAGpC,AAAI,GAAI,GACN,EAAK,GACA,AAAI,GAAI,GACb,EAAK,IAAI,CAAC,EAAK,UACV,AAAI,GAAI,GACb,EAAK,IAAI,KAAM,CAAC,EAAK,QAChB,AAAI,EACT,EAAK,KAAK,KAAM,KAAM,KAAM,IACvB,AAAI,EACT,EAAK,IAAI,KAAM,KAAM,CAAC,EAAK,MAE3B,EAAK,KAAK,IAGJ,GAAG,KAAQ,IAAM,QAGrB,GAAU,CAAC,EAAK,EAAS,KAC7B,OAAS,GAAI,EAAG,EAAI,EAAI,OAAQ,IAC9B,GAAI,CAAC,EAAI,GAAG,KAAK,GACf,MAAO,GAIX,GAAI,EAAQ,WAAW,QAAU,CAAC,EAAQ,mBAMxC,OAAS,GAAI,EAAG,EAAI,EAAI,OAAQ,IAE9B,GADA,GAAM,EAAI,GAAG,QACT,EAAI,GAAG,SAAW,GAAW,KAI7B,EAAI,GAAG,OAAO,WAAW,OAAS,GACpC,GAAM,GAAU,EAAI,GAAG,OACvB,GAAI,EAAQ,QAAU,EAAQ,OAC1B,EAAQ,QAAU,EAAQ,OAC1B,EAAQ,QAAU,EAAQ,MAC5B,MAAO,GAMb,MAAO,GAGT,MAAO,MC5fT,sBAAM,IAAM,OAAO,cAAnB,mBAGa,OACT,MAAO,IAET,YAAa,EAAM,GAGjB,GAFA,EAAU,GAAa,GAEnB,YAAgB,KAClB,GAAI,EAAK,QAAU,CAAC,CAAC,EAAQ,MAC3B,MAAO,GAEP,EAAO,EAAK,MAIhB,GAAM,aAAc,EAAM,GAC1B,KAAK,QAAU,EACf,KAAK,MAAQ,CAAC,CAAC,EAAQ,MACvB,KAAK,MAAM,GAEX,AAAI,KAAK,SAAW,GAClB,KAAK,MAAQ,GAEb,KAAK,MAAQ,KAAK,SAAW,KAAK,OAAO,QAG3C,GAAM,OAAQ,MAGhB,MAAO,GACL,GAAM,GAAI,KAAK,QAAQ,MAAQ,GAAG,GAAE,iBAAmB,GAAG,GAAE,YACtD,EAAI,EAAK,MAAM,GAErB,GAAI,CAAC,EACH,KAAM,IAAI,WAAU,uBAAuB,KAG7C,KAAK,SAAW,EAAE,KAAO,OAAY,EAAE,GAAK,GACxC,KAAK,WAAa,KACpB,MAAK,SAAW,IAIlB,AAAK,EAAE,GAGL,KAAK,OAAS,GAAI,IAAO,EAAE,GAAI,KAAK,QAAQ,OAF5C,KAAK,OAAS,GAMlB,WACE,MAAO,MAAK,MAGd,KAAM,GAGJ,GAFA,GAAM,kBAAmB,EAAS,KAAK,QAAQ,OAE3C,KAAK,SAAW,IAAO,IAAY,GACrC,MAAO,GAGT,GAAI,MAAO,IAAY,SACrB,IACE,EAAU,GAAI,IAAO,EAAS,KAAK,eAC5B,GACP,MAAO,GAIX,MAAO,IAAI,EAAS,KAAK,SAAU,KAAK,OAAQ,KAAK,SAGvD,WAAY,EAAM,GAChB,GAAI,CAAE,aAAgB,KACpB,KAAM,IAAI,WAAU,4BAUtB,GAPI,EAAC,GAAW,MAAO,IAAY,WACjC,GAAU,CACR,MAAO,CAAC,CAAC,EACT,kBAAmB,KAInB,KAAK,WAAa,GACpB,MAAI,MAAK,QAAU,GACV,GAEF,GAAI,IAAM,EAAK,MAAO,GAAS,KAAK,KAAK,OAC3C,GAAI,EAAK,WAAa,GAC3B,MAAI,GAAK,QAAU,GACV,GAEF,GAAI,IAAM,KAAK,MAAO,GAAS,KAAK,EAAK,QAGlD,GAAM,GACH,MAAK,WAAa,MAAQ,KAAK,WAAa,MAC5C,GAAK,WAAa,MAAQ,EAAK,WAAa,KACzC,EACH,MAAK,WAAa,MAAQ,KAAK,WAAa,MAC5C,GAAK,WAAa,MAAQ,EAAK,WAAa,KACzC,EAAa,KAAK,OAAO,UAAY,EAAK,OAAO,QACjD,EACH,MAAK,WAAa,MAAQ,KAAK,WAAa,OAC5C,GAAK,WAAa,MAAQ,EAAK,WAAa,MACzC,EACJ,GAAI,KAAK,OAAQ,IAAK,EAAK,OAAQ,IAClC,MAAK,WAAa,MAAQ,KAAK,WAAa,MAC1C,GAAK,WAAa,MAAQ,EAAK,WAAa,KAC3C,EACJ,GAAI,KAAK,OAAQ,IAAK,EAAK,OAAQ,IAClC,MAAK,WAAa,MAAQ,KAAK,WAAa,MAC1C,GAAK,WAAa,MAAQ,EAAK,WAAa,KAEjD,MACE,IACA,GACC,GAAc,GACf,GACA,IAKN,GAAO,QAAU,GAEjB,GAAM,IAAuB,KACvB,CAAC,MAAI,MAAa,KAClB,GAAc,KACd,GAAgB,KAChB,GAAiB,KACjB,GAAgB,OCtItB,sBAAM,IAAgB,KAChB,GAAY,CAAC,EAAS,EAAO,KACjC,IACE,EAAQ,GAAI,IAAM,EAAO,SAClB,GACP,MAAO,GAET,MAAO,GAAM,KAAK,IAEpB,GAAO,QAAU,KCTjB,sBAAM,IAAgB,KAGhB,GAAgB,CAAC,EAAO,IAC5B,GAAI,IAAM,EAAO,GAAS,IACvB,IAAI,GAAQ,EAAK,IAAI,GAAK,EAAE,OAAO,KAAK,KAAK,OAAO,MAAM,MAE/D,GAAO,QAAU,KCPjB,sBAAM,IAAiB,KACjB,GAAgB,KAEhB,GAAgB,CAAC,EAAU,EAAO,KACtC,GAAI,GAAM,KACN,EAAQ,KACR,EAAW,KACf,IACE,EAAW,GAAI,IAAM,EAAO,SACrB,GACP,MAAO,MAET,SAAS,QAAQ,AAAC,IAChB,AAAI,EAAS,KAAK,IAEZ,EAAC,GAAO,EAAM,QAAQ,KAAO,KAE/B,GAAM,EACN,EAAQ,GAAI,IAAO,EAAK,MAIvB,GAET,GAAO,QAAU,KCxBjB,sBAAM,IAAiB,KACjB,GAAgB,KAChB,GAAgB,CAAC,EAAU,EAAO,KACtC,GAAI,GAAM,KACN,EAAQ,KACR,EAAW,KACf,IACE,EAAW,GAAI,IAAM,EAAO,SACrB,GACP,MAAO,MAET,SAAS,QAAQ,AAAC,IAChB,AAAI,EAAS,KAAK,IAEZ,EAAC,GAAO,EAAM,QAAQ,KAAO,IAE/B,GAAM,EACN,EAAQ,GAAI,IAAO,EAAK,MAIvB,GAET,GAAO,QAAU,KCvBjB,sBAAM,IAAiB,KACjB,GAAgB,KAChB,GAAa,KAEb,GAAa,CAAC,EAAO,KACzB,EAAQ,GAAI,IAAM,EAAO,GAEzB,GAAI,GAAS,GAAI,IAAO,SAMxB,GALI,EAAM,KAAK,IAIf,GAAS,GAAI,IAAO,WAChB,EAAM,KAAK,IACb,MAAO,GAGT,EAAS,KACT,OAAS,GAAI,EAAG,EAAI,EAAM,IAAI,OAAQ,EAAE,GACtC,GAAM,GAAc,EAAM,IAAI,GAE1B,EAAS,KACb,EAAY,QAAQ,AAAC,IAEnB,GAAM,GAAU,GAAI,IAAO,EAAW,OAAO,SAC7C,OAAQ,EAAW,cACZ,IACH,AAAI,EAAQ,WAAW,SAAW,EAChC,EAAQ,QAER,EAAQ,WAAW,KAAK,GAE1B,EAAQ,IAAM,EAAQ,aAEnB,OACA,KACH,AAAI,EAAC,GAAU,GAAG,EAAS,KACzB,GAAS,GAEX,UACG,QACA,KAEH,cAGA,KAAM,IAAI,OAAM,yBAAyB,EAAW,eAGtD,GAAW,EAAC,GAAU,GAAG,EAAQ,KACnC,GAAS,GAGb,MAAI,IAAU,EAAM,KAAK,GAChB,EAGF,MAET,GAAO,QAAU,KC3DjB,sBAAM,IAAgB,KAChB,GAAa,CAAC,EAAO,KACzB,IAGE,MAAO,IAAI,IAAM,EAAO,GAAS,OAAS,UACnC,GACP,MAAO,QAGX,GAAO,QAAU,KCVjB,sBAAM,IAAiB,KACjB,GAAqB,KACrB,CAAC,QAAO,GACR,GAAgB,KAChB,GAAoB,KACpB,GAAa,KACb,GAAa,KACb,GAAc,KACd,GAAc,KAEd,GAAU,CAAC,EAAS,EAAO,EAAM,KACrC,EAAU,GAAI,IAAO,EAAS,GAC9B,EAAQ,GAAI,IAAM,EAAO,GAEzB,GAAI,GAAM,EAAO,EAAM,EAAM,EAC7B,OAAQ,OACD,IACH,EAAO,GACP,EAAQ,GACR,EAAO,GACP,EAAO,IACP,EAAQ,KACR,UACG,IACH,EAAO,GACP,EAAQ,GACR,EAAO,GACP,EAAO,IACP,EAAQ,KACR,cAEA,KAAM,IAAI,WAAU,yCAIxB,GAAI,GAAU,EAAS,EAAO,GAC5B,MAAO,GAMT,OAAS,GAAI,EAAG,EAAI,EAAM,IAAI,OAAQ,EAAE,GACtC,GAAM,GAAc,EAAM,IAAI,GAE1B,EAAO,KACP,EAAM,KAuBV,GArBA,EAAY,QAAQ,AAAC,IACnB,AAAI,EAAW,SAAW,IACxB,GAAa,GAAI,IAAW,YAE9B,EAAO,GAAQ,EACf,EAAM,GAAO,EACb,AAAI,EAAK,EAAW,OAAQ,EAAK,OAAQ,GACvC,EAAO,EACE,EAAK,EAAW,OAAQ,EAAI,OAAQ,IAC7C,GAAM,KAMN,EAAK,WAAa,GAAQ,EAAK,WAAa,GAM3C,EAAC,EAAI,UAAY,EAAI,WAAa,IACnC,EAAM,EAAS,EAAI,QACrB,MAAO,GACF,GAAI,EAAI,WAAa,GAAS,EAAK,EAAS,EAAI,QACrD,MAAO,GAGX,MAAO,IAGT,GAAO,QAAU,KC/EjB,mBACA,GAAM,IAAkB,KAClB,GAAM,CAAC,EAAS,EAAO,IAAY,GAAQ,EAAS,EAAO,IAAK,GACtE,GAAO,QAAU,KCHjB,sBAAM,IAAkB,KAElB,GAAM,CAAC,EAAS,EAAO,IAAY,GAAQ,EAAS,EAAO,IAAK,GACtE,GAAO,QAAU,KCHjB,sBAAM,IAAgB,KAChB,GAAa,CAAC,EAAI,EAAI,IAC1B,GAAK,GAAI,IAAM,EAAI,GACnB,EAAK,GAAI,IAAM,EAAI,GACZ,EAAG,WAAW,IAEvB,GAAO,QAAU,KCNjB,mBAGA,GAAM,IAAoB,KACpB,GAAkB,KACxB,GAAO,QAAU,CAAC,EAAU,EAAO,KACjC,GAAM,GAAM,GACR,EAAM,KACN,EAAO,KACL,EAAI,EAAS,KAAK,CAAC,EAAG,IAAM,GAAQ,EAAG,EAAG,IAChD,OAAW,KAAW,GAEpB,AADiB,GAAU,EAAS,EAAO,GAEzC,GAAO,EACF,GACH,GAAM,IAEJ,IACF,EAAI,KAAK,CAAC,EAAK,IAEjB,EAAO,KACP,EAAM,MAGV,AAAI,GACF,EAAI,KAAK,CAAC,EAAK,OAEjB,GAAM,GAAS,GACf,OAAW,CAAC,EAAK,IAAQ,GACvB,AAAI,IAAQ,EACV,EAAO,KAAK,GACT,AAAI,CAAC,GAAO,IAAQ,EAAE,GACzB,EAAO,KAAK,KACT,AAAK,EAEL,AAAI,IAAQ,EAAE,GACjB,EAAO,KAAK,KAAK,KAEjB,EAAO,KAAK,GAAG,OAAS,KAJxB,EAAO,KAAK,KAAK,KAMrB,GAAM,GAAa,EAAO,KAAK,QACzB,EAAW,MAAO,GAAM,KAAQ,SAAW,EAAM,IAAM,OAAO,GACpE,MAAO,GAAW,OAAS,EAAS,OAAS,EAAa,KC1C5D,sBAAM,IAAgB,KAChB,CAAE,QAAgB,KAClB,GAAoB,KACpB,GAAkB,KA4BlB,GAAS,CAAC,EAAK,EAAK,KACxB,GAAI,IAAQ,EACV,MAAO,GAET,EAAM,GAAI,IAAM,EAAK,GACrB,EAAM,GAAI,IAAM,EAAK,GACrB,GAAI,GAAa,GAEjB,EAAO,OAAW,KAAa,GAAI,KACjC,OAAW,KAAa,GAAI,KAC1B,GAAM,GAAQ,GAAa,EAAW,EAAW,GAEjD,GADA,EAAa,GAAc,IAAU,KACjC,EACF,WAMJ,GAAI,EACF,MAAO,GAEX,MAAO,IAGH,GAAe,CAAC,EAAK,EAAK,KAC9B,GAAI,IAAQ,EACV,MAAO,GAET,GAAI,EAAI,SAAW,GAAK,EAAI,GAAG,SAAW,GACxC,MAAO,GAAI,SAAW,GAAK,EAAI,GAAG,SAAW,GAE/C,GAAM,GAAQ,GAAI,KACd,EAAI,EACR,OAAW,KAAK,GACd,AAAI,EAAE,WAAa,KAAO,EAAE,WAAa,KACvC,EAAK,GAAS,EAAI,EAAG,GAClB,AAAI,EAAE,WAAa,KAAO,EAAE,WAAa,KAC5C,EAAK,GAAQ,EAAI,EAAG,GAEpB,EAAM,IAAI,EAAE,QAGhB,GAAI,EAAM,KAAO,EACf,MAAO,MAET,GAAI,GACJ,GAAI,GAAM,GAER,GADA,EAAW,GAAQ,EAAG,OAAQ,EAAG,OAAQ,GACrC,EAAW,EACb,MAAO,MACJ,GAAI,IAAa,GAAM,GAAG,WAAa,MAAQ,EAAG,WAAa,MAClE,MAAO,MAIX,OAAW,KAAM,IAIf,GAHI,GAAM,CAAC,GAAU,EAAI,OAAO,GAAK,IAGjC,GAAM,CAAC,GAAU,EAAI,OAAO,GAAK,GACnC,MAAO,MAET,OAAW,KAAK,GACd,GAAI,CAAC,GAAU,EAAI,OAAO,GAAI,GAC5B,MAAO,GAGX,MAAO,GAGT,GAAI,GAAQ,EACR,EAAU,EACd,OAAW,KAAK,IAGd,GAFA,EAAW,GAAY,EAAE,WAAa,KAAO,EAAE,WAAa,KAC5D,EAAW,GAAY,EAAE,WAAa,KAAO,EAAE,WAAa,KACxD,GACF,GAAI,EAAE,WAAa,KAAO,EAAE,WAAa,MAEvC,GADA,EAAS,GAAS,EAAI,EAAG,GACrB,IAAW,GAAK,IAAW,EAC7B,MAAO,WACA,EAAG,WAAa,MAAQ,CAAC,GAAU,EAAG,OAAQ,OAAO,GAAI,GAClE,MAAO,GAEX,GAAI,GACF,GAAI,EAAE,WAAa,KAAO,EAAE,WAAa,MAEvC,GADA,EAAQ,GAAQ,EAAI,EAAG,GACnB,IAAU,GAAK,IAAU,EAC3B,MAAO,WACA,EAAG,WAAa,MAAQ,CAAC,GAAU,EAAG,OAAQ,OAAO,GAAI,GAClE,MAAO,GAEX,GAAI,CAAC,EAAE,UAAa,IAAM,IAAO,IAAa,EAC5C,MAAO,GASX,MAHI,KAAM,GAAY,CAAC,GAAM,IAAa,GAGtC,GAAM,GAAY,CAAC,GAAM,IAAa,IAOtC,GAAW,CAAC,EAAG,EAAG,KACtB,GAAI,CAAC,EACH,MAAO,GACT,GAAM,GAAO,GAAQ,EAAE,OAAQ,EAAE,OAAQ,GACzC,MAAO,GAAO,EAAI,EACd,EAAO,GACP,EAAE,WAAa,KAAO,EAAE,WAAa,KAD1B,EAEX,GAIA,GAAU,CAAC,EAAG,EAAG,KACrB,GAAI,CAAC,EACH,MAAO,GACT,GAAM,GAAO,GAAQ,EAAE,OAAQ,EAAE,OAAQ,GACzC,MAAO,GAAO,EAAI,EACd,EAAO,GACP,EAAE,WAAa,KAAO,EAAE,WAAa,KAD1B,EAEX,GAGN,GAAO,QAAU,KCjKjB,mBACA,GAAM,IAAqB,KAC3B,GAAO,QAAU,CACf,GAAI,GAAW,GACf,IAAK,GAAW,IAChB,OAAQ,GAAW,EACnB,oBAAqB,AAAQ,KAAwB,oBACrD,OAAgB,KAChB,mBAAoB,AAAQ,KAA0B,mBACtD,oBAAqB,AAAQ,KAA0B,oBACvD,MAAe,KACf,MAAe,KACf,MAAe,KACf,IAAa,KACb,KAAc,KACd,MAAe,KACf,MAAe,KACf,MAAe,KACf,WAAoB,KACpB,QAAiB,KACjB,SAAkB,KAClB,aAAsB,KACtB,aAAsB,KACtB,KAAc,KACd,MAAe,KACf,GAAY,KACZ,GAAY,KACZ,GAAY,KACZ,IAAa,KACb,IAAa,KACb,IAAa,KACb,IAAa,KACb,OAAgB,KAChB,WAAoB,KACpB,MAAe,KACf,UAAmB,KACnB,cAAuB,KACvB,cAAuB,KACvB,cAAuB,KACvB,WAAoB,KACpB,WAAoB,KACpB,QAAiB,KACjB,IAAa,KACb,IAAa,KACb,WAAoB,KACpB,cAAuB,KACvB,OAAgB,QC9ClB,gCAEA,GAAI,IAAW,GAAO,QAAU,CAC9B,OAAQ,CAGN,UAAa,CAAE,MAAO,OAAQ,UAAW,YAAa,MAAO,SAC7D,OAAU,aACV,SAAY,OACZ,aAAgB,gFAChB,aAAgB,2CAChB,YAAe,0DACf,gBAAmB,kEAErB,UAAW,CACT,UAAa,CAAE,UAAW,YAAa,MAAO,SAC9C,OAAU,gBACV,SAAY,MACZ,gBAAmB,6DAErB,OAAQ,CACN,UAAa,CAAE,UAAW,YAAa,MAAO,SAC9C,OAAU,aACV,SAAY,OACZ,aAAgB,2CAChB,cAAiB,oEACjB,gBAAmB,+EACnB,UAAa,yFAEf,KAAM,CACJ,UAAa,CAAE,MAAO,UAAW,YAAa,MAAO,SACrD,OAAU,kBACV,UAAa,gDACb,aAAgB,8EAChB,aAAgB,6BAChB,YAAe,4CACf,YAAe,2CACf,eAAkB,oDAClB,eAAkB,0CAClB,mBAAsB,iDACtB,aAAgB,0CAChB,cAAiB,kDACjB,iBAAoB,gCACpB,aAAgB,yBAChB,gBAAmB,iEACnB,WAAc,SAAU,GACtB,MAAO,QAAU,GAAmB,MAKtC,GAAkB,CACpB,YAAe,iDACf,eAAkB,2DAClB,eAAkB,sDAClB,mBAAsB,8EACtB,aAAgB,6DAChB,cAAiB,gEACjB,aAAgB,4DAChB,iBAAoB,uCACpB,aAAgB,gCAChB,UAAa,yCACb,WAAc,IAGhB,OAAO,KAAK,IAAU,QAAQ,SAAU,GACtC,OAAO,KAAK,IAAiB,QAAQ,SAAU,GAC7C,AAAI,GAAS,GAAM,IACnB,IAAS,GAAM,GAAO,GAAgB,MAExC,GAAS,GAAM,aAAe,OAAO,KACnC,GAAS,GAAM,UAAU,IAAI,SAAU,GACrC,MAAO,GAAS,QAAQ,sBAAuB,UAC9C,KAAK,KAAO,SAGnB,YAA6B,GAC3B,MAAO,GAAS,cAAc,QAAQ,gBAAiB,IAAI,QAAQ,OAAQ,QC7E7E,gCACA,GAAI,IAAmB,KAMnB,GAAS,OAAO,QAAU,SAAkB,EAAQ,GAEtD,GAAI,IAAW,MAAQ,MAAO,IAAW,SAAU,MAAO,GAE1D,GAAM,GAAO,OAAO,KAAK,GACrB,EAAI,EAAK,OACb,KAAO,KACL,EAAO,EAAK,IAAM,EAAO,EAAK,IAEhC,MAAO,IAGT,GAAO,QAAU,GACjB,YAAkB,EAAM,EAAM,EAAM,EAAS,EAAY,EAAuB,GAC9E,GAAI,GAAc,KAClB,EAAY,KAAO,EACnB,OAAO,KAAK,GAAS,IAAO,QAAQ,SAAU,GAC5C,EAAY,GAAO,GAAS,GAAM,KAEpC,EAAY,KAAO,EACnB,EAAY,KAAO,EACnB,EAAY,QAAU,EACtB,EAAY,WAAa,EACzB,EAAY,QAAU,EACtB,EAAY,KAAO,GAAQ,GAG7B,GAAQ,UAAU,KAAO,WACvB,MAAO,MAAK,WAAa,IAAM,KAAK,WAAa,IAGnD,GAAQ,UAAU,MAAQ,SAAU,EAAU,GAC5C,GAAI,EAAC,GACL,GAAI,GAAO,GAAO,GAAI,GACtB,EAAK,KAAO,EAAK,KAAO,EAAK,KAAK,QAAQ,SAAU,IAAM,GAC1D,EAAO,GAAO,GAAO,GAAI,KAAK,MAAO,GACrC,GAAI,GAAO,KACX,OAAO,KAAK,MAAM,QAAQ,SAAU,GAClC,AAAI,EAAK,IAAQ,MAAQ,EAAK,IAAQ,MAAM,GAAK,GAAO,EAAK,MAE/D,GAAI,GAAU,EAAK,KACf,EAAgB,EAAK,WACrB,EAAc,EAAK,SACnB,EAAU,EAAK,KACf,EAAa,EAAK,QACtB,OAAO,KAAK,GAAM,QAAQ,SAAU,GAClC,GAAI,GAAQ,EAAK,GACjB,AAAK,KAAQ,QAAU,IAAQ,YAAc,MAAO,IAAU,SAC5D,EAAK,GAAO,EAAM,MAAM,KAAK,IAAI,SAAU,GACzC,MAAO,oBAAmB,KACzB,KAAK,KACC,IAAQ,UACjB,GAAK,GAAO,mBAAmB,MAGnC,EAAK,SAAW,EAAU,EAAU,IAAM,GAC1C,EAAK,aAAe,EAAc,IAAM,KAAK,WAAW,GAAe,GACvE,EAAK,SAAW,EAAK,SAAW,EAAK,SAAW,GAChD,EAAK,SAAW,EAAU,IAAM,KAAK,WAAW,GAAW,GAC3D,EAAK,SAAW,EAAK,KAAO,IAAM,EAAK,KAAO,GAC9C,EAAK,YAAc,EAAW,MAAM,KAAK,IAAI,oBAAoB,KAAK,KACtE,AAAI,EAAK,aACP,GAAK,eAAiB,GACtB,EAAK,oBAAsB,GAC3B,EAAK,eAAiB,GACtB,EAAK,WAAa,IAElB,GAAK,eAAiB,EAAgB,IAAM,EAAgB,GAC5D,EAAK,oBAAsB,EAAK,WAC5B,IAAM,EAAK,SAAW,IAAM,EAAK,WACjC,GACJ,EAAK,eAAiB,EAAK,WAAa,IAAM,EAAK,WAAa,GAChE,EAAK,WAAa,EAAK,YAAc,UAEvC,GAAI,GAAM,EAIV,MAHA,QAAO,KAAK,GAAM,QAAQ,SAAU,GAClC,EAAM,EAAI,QAAQ,GAAI,QAAO,MAAQ,EAAM,MAAO,KAAM,EAAK,MAE3D,EAAK,UACA,EAAI,QAAQ,UAAW,IAEvB,IAIX,GAAQ,UAAU,IAAM,SAAU,GAChC,MAAO,MAAK,MAAM,KAAK,YAAa,IAGtC,GAAQ,UAAU,OAAS,SAAU,GACnC,MAAO,MAAK,MAAM,KAAK,eAAgB,IAGzC,GAAQ,UAAU,OAAS,SAAU,EAAG,EAAG,GACzC,MAAI,OAAO,IAAM,SACX,OAAO,IAAM,UACf,GAAO,EACP,EAAI,MAEC,KAAK,MAAM,KAAK,mBAAoB,GAAO,CAChD,SAAU,EACV,KAAM,GACL,KAEI,KAAK,MAAM,KAAK,eAAgB,IAI3C,GAAQ,UAAU,KAAO,SAAU,GACjC,MAAO,MAAK,MAAM,KAAK,aAAc,IAGvC,GAAQ,UAAU,KAAO,SAAU,GACjC,MAAO,MAAK,MAAM,KAAK,aAAc,IAGvC,GAAQ,UAAU,MAAQ,SAAU,GAClC,MAAO,MAAK,MAAM,KAAK,cAAe,IAGxC,GAAQ,UAAU,IAAM,SAAU,GAChC,MAAO,MAAK,MAAM,KAAK,YAAa,IAGtC,GAAQ,UAAU,SAAW,SAAU,GACrC,MAAO,MAAK,MAAM,KAAK,iBAAkB,IAG3C,GAAQ,UAAU,KAAO,SAAU,GACjC,MAAO,MAAK,MAAM,KAAK,aAAc,IAGvC,GAAQ,UAAU,QAAU,SAAU,GACpC,GAAI,GAAO,GAAO,GAAI,EAAO,CAAE,aAAc,KAC7C,MAAO,MAAK,MAAM,KAAK,gBAAiB,IAG1C,GAAQ,UAAU,KAAO,SAAU,EAAG,GACpC,MAAO,MAAK,MAAM,KAAK,aAAc,GAAO,CAAE,KAAM,GAAK,KAG3D,GAAQ,UAAU,yBAA2B,WAC3C,MAAO,MAAK,SAGd,GAAQ,UAAU,SAAW,SAAU,GACrC,MAAI,MAAK,SAAW,MAAO,MAAK,KAAK,UAAa,WAAmB,KAAK,KAAK,SAAS,GACjF,KAAK,OAAO,MC1JrB,gCACA,GAAI,IAAc,eACd,GAAmB,KACnB,GAAU,GAAO,QAAkB,KACnC,GAAc,KACd,GAAQ,GAAI,IAAI,CAAC,IAAK,MAEtB,GAA8B,CAChC,WAAY,SACZ,aAAc,QACd,OAAQ,SACR,OAAQ,OAGV,YAAmC,GACjC,MAAO,IAA4B,IAAa,EAAS,MAAM,EAAG,IAGpE,GAAI,IAAgB,CAClB,OAAQ,GACR,SAAU,GACV,aAAc,GACd,QAAS,GACT,YAAa,IAGf,GAAO,QAAQ,QAAU,SAAU,EAAQ,GACzC,GAAI,MAAO,IAAW,UACtB,GAAI,GAAM,EAAS,KAAK,UAAU,GAAQ,IAE1C,MAAK,IAAM,IAAI,IACb,GAAM,IAAI,EAAK,GAAQ,EAAQ,IAG1B,GAAM,IAAI,KAGnB,YAAkB,EAAQ,GACxB,GAAI,KAAU,MAAQ,IAAW,KACjC,GAAI,GAAM,GACR,GAAkB,GAAU,UAAY,EAAS,GAE/C,EAAS,GAAY,GACrB,EAAgB,EAAI,MAAM,6CAC1B,EAAU,OAAO,KAAK,IAAU,IAAI,SAAU,GAChD,IACE,GAAI,GAAc,GAAS,GACvB,EAAO,KACX,AAAI,EAAO,MAAQ,GAAc,EAAO,WACtC,GAAO,EAAO,MAEhB,GAAI,GAAa,EAAO,KAAO,mBAAmB,EAAO,KAAK,OAAO,IAAM,KACvE,EAAO,KACP,EAAU,KACV,EAAwB,KAC5B,GAAI,GAAiB,EAAc,KAAO,EACxC,EAAO,EAAc,IAAM,mBAAmB,EAAc,IAC5D,EAAU,mBAAmB,EAAc,GAAG,QAAQ,SAAU,KAChE,EAAwB,gBAIxB,GAFI,EAAO,MAAQ,EAAO,OAAS,EAAY,QAAU,EAAO,KAAK,QAAQ,UAAW,MAAQ,EAAY,QACxG,CAAC,EAAY,aAAa,KAAK,EAAO,WACtC,CAAC,EAAO,KAAM,OAClB,GAAI,GAAY,EAAY,UACxB,EAAU,EAAO,KAAK,MAAM,GAChC,GAAI,CAAC,EAAS,OAEd,AAAI,EAAQ,KAAO,MAAQ,EAAQ,KAAO,QACxC,GAAO,mBAAmB,EAAQ,GAAG,QAAQ,KAAM,MAErD,EAAU,mBAAmB,EAAQ,IACrC,EAAwB,GAAyB,EAAO,UAE1D,MAAO,IAAI,IAAQ,EAAa,EAAM,EAAM,EAAS,EAAY,EAAuB,SACjF,GAEP,GAAI,cAAc,WACX,KAAM,MAEd,OAAO,SAAU,GAAe,MAAO,KAC1C,GAAI,EAAQ,SAAW,EACvB,MAAO,GAAQ,IAGjB,YAA4B,GAS1B,MAAO,+CAA+C,KAAK,GAG7D,YAA+B,GAE7B,GAAI,GAAS,GAAI,MAAM,GACvB,MAAI,GAAO,WAAa,SAAW,EAAO,MAAQ,CAAC,EAAO,KACjD,EAAO,SAAW,IAAM,EAAO,KAE/B,EAIX,YAAsB,GACpB,GAAI,GAAU,EAAO,MAAM,iEAC3B,GAAI,CAAC,GACH,GAAI,GAAS,GAAI,MAAM,GACvB,GAAI,EAAO,MAUT,GAAM,GAAY,EAAO,MAAM,gBAE/B,GAAI,GACF,GAAI,GAAS,GAAI,IAAI,IAAI,EAAU,IACnC,EAAO,KAAO,EAAO,UAAY,GAC7B,EAAO,UAAU,GAAO,MAAQ,IAAM,EAAO,WAGrD,MAAO,GAET,MAAO,CACL,SAAU,WACV,QAAS,GACT,KAAM,EAAQ,GACd,KAAM,EAAQ,GACd,KAAM,KACN,SAAU,EAAQ,GAClB,KAAM,EAAQ,GACd,OAAQ,KACR,MAAO,KACP,SAAU,IAAM,EAAQ,GACxB,KAAM,IAAM,EAAQ,GACpB,KAAM,aAAe,EAAQ,GAAK,IAAM,EAAQ,GAC1C,IAAM,EAAQ,GAAM,GAAQ,IAAM,QC/I5C,sBAAO,QAAU,GAGjB,YAA6B,GAC3B,GAAI,EAAC,GACD,IAAM,gCAGV,EAAI,EAAE,OAAO,MAAM;AAAA,GACnB,OAAS,GAAI,EAAG,EAAE,IAAM,EAAE,GAAG,OAAO,MAAM,UAAW,IAAK,CAE1D,OADI,GAAI,EAAE,OACD,EAAI,EAAI,EAAG,EAAI,GAAK,EAAE,GAAG,OAAQ,IAAK,CAC/C,MAAO,GAAE,MAAM,EAAG,GAAG,KAAK,KAAK,0mBCZjC,sBAAI,IAAiB,KACjB,GAA0B,KAC1B,GAAwB,KACxB,GAAkB,AAAQ,KAAW,OACrC,GAAW,CAAC,eAAe,kBAAkB,wBAC7C,GAA6B,KAC7B,GAAc,eACd,GAAgB,KAEhB,GAAQ,GAAO,QAAU,CAE3B,KAAM,aAEN,mBAAoB,SAAS,GAK3B,GAJI,EAAK,cACP,MAAK,KAAK,gBACV,EAAK,WAAa,EAAK,aAAa,IAElC,CAAC,EAAK,WAAY,MAAO,MAAK,KAAK,qBACvC,AAAI,MAAO,GAAK,YAAe,UAC7B,GAAK,WAAa,CAChB,KAAM,MACN,IAAK,EAAK,aAGd,GAAI,GAAI,EAAK,WAAW,KAAO,GAC/B,GAAI,GACF,GAAI,GAAS,GAAc,QAAQ,GACnC,AAAI,GACF,GAAI,EAAK,WAAW,IAChB,EAAO,4BAA8B,WAAa,EAAO,QAAU,EAAO,YAIlF,AAAI,EAAE,MAAM,0CACV,KAAK,KAAK,eAAgB,IAI9B,SAAU,SAAS,GACjB,OAAO,KAAK,GAAM,UAAU,QAAQ,SAAU,GAC5C,AAAI,EAAK,eAAe,IACtB,KAAK,KAAK,OAAQ,EAAG,GAAM,SAAS,KAErC,OAGL,gBAAiB,SAAS,GACxB,GAAI,EAAC,EAAK,SACV,GAAI,MAAO,GAAK,SAAY,UAC1B,KAAK,KAAK,oBACV,MAAO,GAAK,QACZ,OAEF,OAAO,KAAK,EAAK,SAAS,QAAQ,SAAU,GAC1C,AAAI,MAAO,GAAK,QAAQ,IAAO,SAC7B,MAAK,KAAK,mBACV,MAAO,GAAK,QAAQ,IACX,GAAM,OAAO,IAAM,CAAC,EAAK,QAAQ,GAAM,OAAO,KACvD,KAAK,KAAK,OAAQ,EAAG,GAAM,OAAO,GAAI,YAEvC,QAGL,cAAe,SAAS,GACtB,GAAI,GAAQ,EAAK,MACjB,AAAI,GAAS,CAAC,MAAM,QAAQ,GAC1B,MAAK,KAAK,iBACV,MAAO,GAAK,OACH,EAAK,OACd,GAAK,MAAQ,EAAK,MAAM,OAAO,SAAS,GACtC,MAAI,CAAC,GAAQ,MAAO,IAAS,SAC3B,MAAK,KAAK,kBAAmB,GACtB,IAEA,IAER,QAIP,YAAa,SAAS,GACpB,GAAI,EAAC,EAAK,KACN,MAAO,GAAK,KAAQ,UACtB,GAAI,GAAI,GACJ,EACJ,AAAI,GAAQ,EAAK,KAAK,MAAM,oBAC1B,EAAE,EAAM,IAAM,EAAK,IAEnB,EAAE,EAAK,MAAQ,EAAK,IAEtB,EAAK,IAAM,IAIf,YAAa,SAAS,GACpB,AAAI,CAAC,EAAK,KACN,MAAO,GAAK,KAAQ,UACtB,GAAK,IAAM,CAAE,EAAK,OAGtB,2BAA4B,SAAS,GACnC,GAAI,GAAM,sBACN,EAAK,qBACT,AAAI,EAAK,IAAQ,CAAC,EAAK,IACrB,GAAK,GAAM,EAAK,GAChB,MAAO,GAAK,IAEd,AAAI,EAAK,IAAO,CAAC,MAAM,QAAQ,EAAK,IAClC,MAAK,KAAK,8BACV,MAAO,GAAK,IACH,EAAK,IACd,GAAK,GAAM,EAAK,GAAI,OAAO,SAAS,GAClC,MAAI,CAAC,GAAM,MAAO,IAAO,SACvB,MAAK,KAAK,4BAA6B,GAChC,IAEF,GAAK,cACR,GAAK,aAAe,IAEjB,EAAK,aAAa,eAAe,IACpC,MAAK,KAAK,gCAAiC,GAC3C,EAAK,aAAa,GAAM,KAEnB,KAER,QAIP,gBAAiB,SAAS,EAAM,GAC9B,GAAI,GAAQ,CAAC,EACb,GAAc,EAAM,KAAK,MACzB,GAAsB,EAAM,KAAK,MACjC,KAAK,2BAA2B,GAE/B,CAAC,eAAe,mBAAmB,QAAQ,SAAS,GACnD,GAAM,IAAQ,IACd,GAAI,CAAC,EAAK,IAAS,MAAO,GAAK,IAAU,UACvC,KAAK,KAAK,wBAAyB,GACnC,MAAO,GAAK,GACZ,OAEF,OAAO,KAAK,EAAK,IAAO,QAAQ,SAAU,GACxC,GAAI,GAAI,EAAK,GAAM,GACnB,AAAI,MAAO,IAAM,UACf,MAAK,KAAK,sBAAuB,EAAG,KAAK,UAAU,IACnD,MAAO,GAAK,GAAM,IAEpB,GAAI,GAAS,GAAc,QAAQ,EAAK,GAAM,IAC9C,AAAI,GAAQ,GAAK,GAAM,GAAK,EAAO,aAClC,QACF,OAGL,gBAAiB,SAAU,GACzB,AAAI,EAAK,SACP,MAAK,KAAK,qBACV,MAAO,GAAK,UAIhB,iBAAkB,SAAU,GAC1B,AAAI,MAAO,GAAK,UAAa,UAC3B,GAAK,SAAW,EAAK,SAAS,MAAM,SAEtC,AAAI,EAAK,UAAY,CAAC,MAAM,QAAQ,EAAK,UACvC,OAAO,GAAK,SACZ,KAAK,KAAK,qBACD,EAAK,UACd,GAAK,SAAW,EAAK,SAAS,OAAO,SAAS,GAC5C,MAAI,OAAO,IAAO,UAAY,CAAC,EAC7B,MAAK,KAAK,oBACH,IAEA,IAER,QAIP,gBAAiB,SAAS,EAAM,GAG9B,GAAI,GAAQ,CAAC,EACb,GAAI,CAAC,EAAK,QACR,SAAK,QAAU,GACR,GAET,GAAI,CAAC,GAAO,MAAM,EAAK,QAAS,GAC9B,KAAM,IAAI,OAAM,qBAAsB,EAAK,QAAU,KAEvD,SAAK,QAAU,GAAO,MAAM,EAAK,QAAS,GACnC,IAGT,UAAW,SAAS,GAClB,GAAa,EAAM,IACnB,GAAa,EAAM,KAGrB,aAAc,SAAS,EAAM,GAC3B,AAAI,MAAO,IAAY,UAAW,EAAU,CAAC,OAAQ,GAC5C,MAAO,IAAY,aAAa,GAAU,IACnD,GAAI,GAAS,EAAQ,OACrB,GAAI,CAAC,EAAK,MAAQ,CAAC,GACjB,EAAK,KAAO,GACZ,OAEF,GAAI,MAAO,GAAK,MAAS,SACvB,KAAM,IAAI,OAAM,gCAElB,AAAK,GACH,GAAK,KAAO,EAAK,KAAK,QACxB,GAAgB,EAAK,KAAM,EAAQ,EAAQ,iBACvC,GAAgB,EAAK,OACvB,KAAK,KAAK,kBAAmB,EAAK,OAItC,oBAAqB,SAAU,GAC7B,AAAI,EAAK,aAAe,MAAO,GAAK,aAAgB,UAClD,MAAK,KAAK,wBACV,MAAO,GAAK,aAEV,EAAK,QAAU,CAAC,EAAK,aACvB,GAAK,YAAc,GAAmB,EAAK,SACxC,EAAK,cAAgB,QAAW,MAAO,GAAK,YAC5C,EAAK,aAAa,KAAK,KAAK,uBAGnC,eAAgB,SAAU,GACxB,AAAK,EAAK,QACR,MAAK,KAAK,iBACV,EAAK,OAAS,iCAIlB,aAAc,SAAS,GACrB,GAAI,CAAC,EAAK,MAAQ,EAAK,YAAc,EAAK,WAAW,KACnD,GAAI,GAAS,GAAc,QAAQ,EAAK,WAAW,KACnD,AAAG,GAAU,EAAO,QAClB,GAAK,KAAO,CAAC,IAAK,EAAO,iBAGrB,EAAK,MACX,GAAI,GAAU,cACd,GAAG,MAAO,GAAK,MAAQ,SACrB,AAAG,EAAQ,KAAK,EAAK,MACnB,EAAK,KAAO,CAAC,MAAM,EAAK,MACrB,AAAG,GAAI,MAAM,EAAK,MAAM,SAC3B,EAAK,KAAO,CAAC,IAAK,EAAK,MAEvB,KAAK,KAAK,8BAGZ,GAAU,EAAK,KAAM,KAAK,MAC1B,GAAI,GAAU,EAAK,KACnB,EAAK,KAAO,GACT,EAAQ,KACT,CAAG,MAAO,GAAQ,KAAQ,UAAY,GAAI,MAAM,EAAQ,KAAK,SAC3D,EAAK,KAAK,IAAM,EAAQ,IAExB,KAAK,KAAK,uBAEX,EAAQ,OACT,CAAG,MAAO,GAAQ,OAAU,UAAY,EAAQ,KAAK,EAAQ,OAC3D,EAAK,KAAK,MAAQ,EAAQ,MAE1B,KAAK,KAAK,2BAGhB,AAAG,CAAC,EAAK,KAAK,OAAS,CAAC,EAAK,KAAK,KAChC,OAAO,GAAK,KACZ,KAAK,KAAK,0BAKhB,iBAAkB,SAAS,GACzB,GAAI,CAAC,EAAK,UAAY,EAAK,YAAc,EAAK,WAAW,KACvD,GAAI,GAAS,GAAc,QAAQ,EAAK,WAAW,KACnD,AAAI,GAAU,EAAO,QAAQ,GAAK,SAAW,EAAO,QAEtD,GAAI,EAAC,EAAK,UAEV,GAAG,MAAO,GAAK,UAAa,SAC1B,YAAK,KAAK,kBACH,MAAO,GAAK,SAErB,AAAI,GAAI,MAAM,EAAK,UAAU,UAC3B,GAAK,SAAW,UAAY,EAAK,YAIrC,gBAAiB,SAAS,GACxB,GAAK,EAAK,QAGR,AACE,MAAO,GAAK,SAAa,UACzB,EAAK,QAAQ,OAAS,GACtB,EAAK,QAAQ,SAAW,GAExB,KAAK,KAAK,kBAEL,GAAgB,EAAK,SAAS,qBACjC,KAAK,KAAK,sBAVd,OAAO,MAAK,KAAK,oBAgBvB,YAAkC,GAChC,GAAI,EAAK,OAAO,KAAO,IAAK,MAAO,GAEnC,GAAI,GAAO,EAAK,MAAM,GAAG,MAAM,KAC/B,MAAI,GAAK,SAAW,EAAU,GAEvB,EAAK,IAAM,EAAK,IACrB,EAAK,KAAO,mBAAmB,EAAK,KACpC,EAAK,KAAO,mBAAmB,EAAK,IAGxC,YAAgC,GAC9B,MAAO,CAAC,EAAK,MAAM,gBACjB,IAAS,mBAAmB,GAGhC,YAA0B,EAAM,EAAQ,GACtC,GAAI,EAAK,OAAO,KAAO,KACnB,CAAE,IAAyB,IAAS,GAAuB,KAC1D,GAAW,CAAC,GAAoB,IAAS,EAAK,eAC/C,EAAK,gBAAkB,gBACvB,EAAK,gBAAkB,cACrB,KAAM,IAAI,OAAM,iBAAmB,KAAK,UAAU,IAI1D,YAAuB,EAAM,GAC3B,MAAI,GAAK,QAAQ,GAAK,OAAS,EAAG,EAAK,SACtC,CAAC,cAAe,gBAAgB,QAAQ,SAAU,GACjD,AAAI,CAAC,MAAM,QAAQ,EAAK,KACxB,GAAK,GAAO,EAAK,GAAK,IAAI,MAErB,EAGT,YAAwB,GACtB,GAAI,MAAO,IAAW,SAAU,MAAO,GACvC,GAAI,GAAO,EAAO,MAAQ,GACtB,EAAI,EAAO,KAAO,EAAO,IACzB,EAAM,EAAK,KAAK,EAAE,IAAO,GACzB,EAAI,EAAO,OAAS,EAAO,KAC3B,EAAQ,EAAK,KAAK,EAAE,IAAO,GAC/B,MAAO,GAAK,EAAM,EAGpB,YAAsB,GACpB,GAAI,MAAO,IAAW,SAAU,MAAO,GACvC,GAAI,GAAO,EAAO,MAAM,cACpB,EAAM,EAAO,MAAM,gBACnB,EAAQ,EAAO,MAAM,aACrB,EAAM,GACV,MAAI,IAAQ,EAAK,GAAG,QAAQ,GAAI,KAAO,EAAK,GAAG,QAC3C,GAAO,GAAI,MAAQ,EAAM,IACzB,GAAK,GAAI,IAAM,EAAI,IAChB,EAGT,YAAgC,EAAM,GACpC,GAAI,GAAI,EAAK,qBACb,GAAI,EAAC,GACL,GAAI,GAAI,EAAK,cAAgB,GAC7B,OAAO,KAAK,GAAG,QAAQ,SAAU,GAC/B,EAAE,GAAK,EAAE,KAEX,EAAK,aAAe,GAGtB,YAAuB,EAAM,EAAM,GACjC,GAAI,CAAC,EAAM,MAAO,GAIlB,GAHI,MAAO,IAAS,UAClB,GAAO,EAAK,OAAO,MAAM,kBAEvB,CAAC,MAAM,QAAQ,GAAO,MAAO,GACjC,EAAK,8BAA+B,GACpC,GAAI,GAAI,GACR,SAAK,OAAO,SAAU,GACpB,MAAO,OAAO,IAAM,WACnB,QAAQ,SAAS,GAClB,EAAI,EAAE,OAAO,MAAM,gBACnB,GAAI,GAAK,EAAE,QACP,EAAK,EAAE,KAAK,IAChB,EAAK,EAAG,OACR,EAAK,EAAG,QAAQ,KAAM,IACtB,EAAE,GAAM,IAEH,EAGT,YAAwB,EAAM,GAC5B,GAAS,QAAQ,SAAU,GACzB,AAAI,CAAC,EAAK,IACV,GAAK,GAAQ,GAAa,EAAK,GAAO,EAAM,MAIhD,YAAmB,EAAM,GACvB,AAAI,CAAC,GACL,OAAO,KAAK,GAAM,QAAQ,SAAU,GAClC,AAAI,GAAM,KAAK,IACb,GAAK,OAAQ,EAAG,GAAM,KAAK,GAAI,QAC/B,EAAK,GAAM,KAAK,IAAM,EAAK,GAC3B,MAAO,GAAK,soDC9ZlB,sBAAI,IAAe,gBACf,GAAmB,KAEvB,GAAO,QAAU,WACf,GAAI,GAAO,MAAM,UAAU,MAAM,KAAK,UAAW,GAC7C,EAAc,EAAK,QACvB,GAAI,GAAe,OACjB,MAAO,IAAgB,MAAM,KAAK,GAGlC,GAAI,GAAc,GAAS,GAAe,GAAS,GAAe,EAAc,SAChF,SAAK,QAAQ,GACN,GAAK,OAAO,MAAM,KAAM,IAInC,YAA0B,EAAc,EAAc,GACpD,MAAI,IACF,GAAe,EAAQ,KAAO,EAAe,KAC7C,EAAe,EAAQ,KAAO,EAAe,MAExC,GAAK,OAAO,GAAS,KAAM,EAAc,MCrBlD,sBAAO,QAAU,GAEjB,GAAI,IAAgB,KACpB,GAAU,MAAQ,GAElB,GAAI,IAAsB,KAEtB,GAAc,CAAC,OAAO,UAAU,cAAc,aAAa,UAAU,UACtD,QAAQ,MAAM,MAAM,OAAO,WAAW,SAAS,WAAW,WACzE,GAAmB,CAAC,eAAe,SAAU,SAE7C,GAAc,GAAY,IAAI,SAAS,GACzC,MAAO,IAAQ,GAAa,UAK9B,GAAc,GAAY,OAAO,IAEjC,YAAoB,EAAM,EAAM,GAC9B,AAAG,IAAS,IAAM,GAAO,KAAM,EAAS,IACpC,GAAQ,GAAS,IAClB,EAAC,GAAQ,EAAK,UAAS,GAAO,SAAS,MAEtC,EAAK,SACL,EAAK,QAAQ,UAAY,oBACzB,CAAC,EAAK,QAAQ,YAChB,GAAK,QAAU,IAEjB,GAAM,KAAO,WAAa,EAAK,GAAY,MAAM,KAAM,aACvD,GAAY,QAAQ,SAAS,GAC3B,GAAM,MAAQ,GAAQ,IAAY,EAAM,KAE1C,EAAK,IAAM,EAAK,KAAO,IAAM,EAAK,QAGpC,YAAkB,GAChB,MAAO,GAAO,OAAO,GAAG,cAAgB,EAAO,MAAM,MCrCvD,gCACA,GAAM,IAAe,gBACf,GAA6B,KAC7B,GAAyB,KACzB,GAAwB,KACxB,GAAqB,KACrB,GAAyB,KACzB,GAAuB,KACvB,GAAiB,KACjB,GAAoB,KACpB,GAAwB,KACxB,GAA+B,KAGrC,MAAO,SAAQ,MAAM,YACrB,GAAM,IAAY,GAAK,QAAQ,GAAO,QAAU,GAAO,OAAO,SAAW,GAAO,OAAO,SAAW,KAE5F,GAAgB,CAAC,EAAU,EAAc,EAAe,KAC7D,GAAM,GAAO,EAAa,GACtB,EAAiB,GAErB,GAAI,MAAO,GAAK,YAAe,YAC9B,GAAiB,EAAK,WAAW,EAAe,GAC5C,MAAO,IAAmB,WAC7B,KAAM,IAAI,WAAU,uEAAuE,MAAO,oBAIpG,MAAI,OAAO,GAAc,IAAc,YAC/B,EAGD,EAAK,YAAc,EAAc,GAAU,SAAW,GAGxD,GAA0B,CAAC,EAAO,EAAe,KACtD,GAAM,GAAuB,GAC7B,GAAI,MAAO,IAAU,YACpB,MAAO,GAGR,OAAW,KAAY,QAAO,KAAK,GAClC,AAAI,EAAM,GAAU,YAAc,GAAc,EAAU,EAAO,EAAe,IAC/E,EAAqB,KAAK,CAAC,IAAK,KAAa,EAAM,KAIrD,MAAO,IAGF,GAA6B,IAClC,QAAQ,MAAM,wBAAwB,EAAqB,OAAS,EAAI,IAAM,MAC9E,OAAW,KAAQ,GAClB,QAAQ,MAAM,MAAO,GAAW,EAAK,IAAK,OAAO,EAAK,MAAQ,MAAM,EAAK,QAAU,OAI/E,GAAkB,CAAC,CAAC,YACzB,GAAM,GAAe,OAAO,KAAK,GAAO,OAAO,GAAW,EAAQ,SAAS,MAAQ,IAAY,MAC/F,GAAI,EAAa,OAAS,EACzB,KAAM,IAAI,OAAM,kCAAkC,EAAa,KAAK,UAIhE,GAAqB,IAC1B,QAAQ,MAAM,CACb,eAAe,EAAa,OAAS,EAAI,IAAM,KAC/C,GAAG,GACF,KAAK;AAAA,KAGF,GAAmB,CAAC,CAAC,QAAO,qBACjC,GAAM,GAAc,GAEpB,OAAW,CAAC,EAAS,IAAc,QAAO,QAAQ,IACjD,GAAM,GAAO,IAAI,GAEjB,AACC,MAAO,IAAmB,aAC1B,EAAK,OAAS,WACd,CAAC,OAAO,UAAU,eAAe,KAAK,EAAM,YAE5C,GAAK,QAAU,EAAK,WAAa,CAAC,GAAkB,GAGjD,EAAK,YACR,GAAK,KAAO,EAAK,KAAO,GAAG,EAAK,aAAe,QAC/C,EAAK,QAAU,EAAK,SAAW,GAC/B,MAAO,GAAK,YAGb,EAAY,GAAW,EAGxB,MAAO,IAGF,GAAgB,CAAC,EAAO,KAC7B,OAAW,CAAC,EAAS,IAAc,QAAO,QAAQ,EAAQ,OACzD,GAAI,IAAY,MAAQ,CAAC,EAAU,YAAc,MAAM,QAAQ,EAAM,IACpE,KAAM,IAAI,OAAM,cAAc,4BAK3B,GAAO,CAAC,EAAU,KACvB,AAAI,MAAO,IAAa,UACvB,GAAU,EACV,EAAW,IAGZ,GAAM,GAAW,GAAU,KAAK,CAC/B,IAAK,GACL,UAAW,KAGZ,EAAU,CACT,IAAK,EAAW,EAAS,YAAc,GACvC,KAAM,QAAQ,KAAK,MAAM,GACzB,MAAO,GACP,UAAW,GACX,MAAO,SACP,KAAM,EACN,SAAU,GACV,YAAa,GACb,eAAgB,GAChB,cAAe,GACf,kBAAmB,MAChB,GAGA,EAAQ,eACX,KAGD,GAAgB,GAChB,GAAI,GAAgB,CACnB,UAAW,EAAQ,SAChB,GAAiB,IAGrB,EAAgB,GAAe,EAAe,IAAK,CAAC,QAAS,CAAC,YAAa,QAEvE,EAAQ,WACX,MAAO,GAAc,UAGtB,EAAgB,GAAmB,GAEnC,EAAc,cAAgB,IAC1B,EAAc,cACjB,gBAAiB,IAGd,EAAc,OACjB,GAAc,cAAc,cAAgB,IAGxC,EAAQ,mBAEZ,GAAc,cAAc,2BAA6B,IAG1D,GAAM,CAAC,OAAO,EACR,EAAO,GAAe,EAAQ,KAAM,GACtC,EAAO,GAAO,GAAc,GAAQ,MAAQ,IAAI,QAAQ,UAAW,KAAM,GAE7E,GAAqB,GAErB,QAAQ,MAAQ,EAAI,IAAM,OAAO,KAAK,EAAI,KAAK,GAAK,EAAI,KAExD,GAAI,CAAC,eAAe,EACpB,AAAI,CAAC,GAAe,IAAgB,IAClC,EAAC,eAAe,GAGlB,EAAQ,GAAc;AAAA,IAAO;AAAA,EAAkB,IAAO,GAAO;AAAA,EAAK;AAAA,EAAW;AAAA,GAE7E,GAAM,GAAW,IAChB,QAAQ,IAAI,GACZ,QAAQ,KAAK,MAAO,IAAS,SAAW,EAAO,IAG1C,EAAc,KACnB,QAAQ,IAAI,MAAO,GAAQ,SAAY,SAAW,EAAQ,QAAU,EAAI,SACxE,QAAQ,KAAK,IAGd,AAAI,EAAK,EAAE,SAAW,GAAK,EAAQ,KAAK,SAAW,GAC9C,GAAK,UAAY,IAAQ,EAAQ,aACpC,IAGG,EAAK,OAAS,IAAQ,EAAQ,UACjC,EAAS,IAIX,GAAM,GAAQ,EAAK,EAGnB,GAFA,MAAO,GAAK,EAER,CAAC,EAAQ,mBACZ,GAAM,GAAe,EAAM,OAAO,GAAQ,MAAO,IAAS,UAAY,EAAK,WAAW,MACtF,AAAI,EAAa,OAAS,GACzB,IAAmB,GACnB,QAAQ,KAAK,IAIf,GAAM,GAAQ,GAAc,EAAM,CAAC,QAAS,CAAC,KAAM,UAC7C,EAAoB,IAAI,GAE9B,GAAc,EAAO,GAErB,OAAW,KAAa,QAAO,OAAO,EAAQ,OAC7C,MAAO,GAAM,EAAU,OAGxB,GAAM,GAAuB,GAAwB,EAAQ,MAAO,EAAO,GAC3E,MAAI,GAAqB,OAAS,GACjC,IAA2B,GAC3B,QAAQ,KAAK,IAGP,CACN,QACA,QACA,oBACA,MACA,OACA,WACA,gBAIF,GAAO,QAAU,KC3OjB,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,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,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,GAAM,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,IAAO,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,KAAS,SACvB,KAAK,MAEL,KAAK,SAGL,MAAQ,MAAO,MAAK,OACpB,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,IAAO,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,IAAM,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,KAAS,UAC3C,GAAM,GAAK,KAAK,IAChB,KAAK,IAAO,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,KAAS,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,IAAM,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,KAAS,UAC3C,GAAM,GAAK,KAAK,IAChB,KAAK,IAAO,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,IAAO,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,MAAS,MAChB,KAAK,MAGT,KAAM,EAAI,GACR,GAAI,IAAO,SACT,GAAI,KAAK,IACP,OACF,KAAK,IAAY,GAEnB,MAAO,OAAM,KAAK,EAAI,MAIpB,MAAQ,MAAO,MAAK,OACpB,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,IAAO,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,KAAS,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,MAAS,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,IAAM,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,IAAM,EAAO,KAAK,IAC5B,CAAC,EAAI,IAAO,KAAK,IAAU,EAAI,MAIpC,MACC,GAAI,KAAK,KAAe,MAAO,MAAK,KAAS,UAC3C,GAAM,GAAK,KAAK,IAChB,KAAK,IAAO,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,KAAS,UAC3C,GAAM,GAAK,KAAK,IAChB,KAAK,IAAO,KACZ,GAAG,UAAU,GACb,KAAK,KAAK,WAIb,IAAS,GAER,GAAI,GAAQ,GACZ,IACE,KAAK,IAAU,KACb,GAAG,UAAU,KAAK,IAAM,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,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,IAAmB,EAAS,MAAM,KAAK,OAAS,EAChD,GAAa,EACjB,IAAK,EAAI,EAAG,EAAI,GAAkB,IAChC,GAAa,GAAW,QAAQ,WAAY,IAE9C,EAAU,GAEV,GAAI,IAAS,GACb,AAAI,IAAY,IAAM,IAAU,IAC9B,IAAS,KAEX,GAAI,IAAQ,EAAW,EAAU,EAAU,GAAS,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,oHAAmB,sBACnB,GAAiB,oBACjB,GAAgB,mBAChB,GAAkB,qBAClB,GAAiB,oBAKX,GAAW,WAAO,SAElB,GAAS,OAAO,UAChB,GAAO,OAAO,QAZpB,SAeC,cACC,KAAK,IAAQ,GAEb,GAAM,GAAY,UAAU,GACtB,EAAU,UAAU,GAEpB,EAAU,GACZ,EAAO,EAEX,GAAI,GACH,GAAM,GAAI,EACJ,EAAS,OAAO,EAAE,QACxB,OAAS,GAAI,EAAG,EAAI,EAAQ,KAC3B,GAAM,GAAU,EAAE,GACd,EACJ,AAAI,YAAmB,QACtB,EAAS,EACH,AAAI,YAAY,OAAO,GAC7B,EAAS,OAAO,KAAK,EAAQ,OAAQ,EAAQ,WAAY,EAAQ,YAC3D,AAAI,YAAmB,aAC7B,EAAS,OAAO,KAAK,GACf,AAAI,YAAmB,IAC7B,EAAS,EAAQ,IAEjB,EAAS,OAAO,KAAK,MAAO,IAAY,SAAW,EAAU,OAAO,IAErE,GAAQ,EAAO,OACf,EAAQ,KAAK,IAIf,KAAK,IAAU,OAAO,OAAO,GAE7B,GAAI,GAAO,GAAW,EAAQ,OAAS,QAAa,OAAO,EAAQ,MAAM,cACzE,AAAI,GAAQ,CAAC,mBAAmB,KAAK,IACpC,MAAK,IAAQ,MAGX,QACH,MAAO,MAAK,IAAQ,UAEjB,QACH,MAAO,MAAK,IAEb,OACC,MAAO,SAAQ,QAAQ,KAAK,IAAQ,YAErC,cACC,GAAM,GAAM,KAAK,IACX,EAAK,EAAI,OAAO,MAAM,EAAI,WAAY,EAAI,WAAa,EAAI,YACjE,MAAO,SAAQ,QAAQ,GAExB,SACC,GAAM,GAAW,GAAI,IACrB,SAAS,MAAQ,aACjB,EAAS,KAAK,KAAK,KACnB,EAAS,KAAK,MACP,EAER,WACC,MAAO,gBAER,QACC,GAAM,GAAO,KAAK,KAEZ,EAAQ,UAAU,GAClB,EAAM,UAAU,GAClB,EAAe,EACnB,AAAI,IAAU,OACb,EAAgB,EACV,AAAI,EAAQ,EAClB,EAAgB,KAAK,IAAI,EAAO,EAAO,GAEvC,EAAgB,KAAK,IAAI,EAAO,GAEjC,AAAI,IAAQ,OACX,EAAc,EACR,AAAI,EAAM,EAChB,EAAc,KAAK,IAAI,EAAO,EAAK,GAEnC,EAAc,KAAK,IAAI,EAAK,GAE7B,GAAM,GAAO,KAAK,IAAI,EAAc,EAAe,GAG7C,EAAe,AADN,KAAK,IACQ,MAAM,EAAe,EAAgB,GAC3D,EAAO,GAAI,IAAK,GAAI,CAAE,KAAM,UAAU,KAC5C,SAAK,IAAU,EACR,IAIT,OAAO,iBAAiB,GAAK,UAAW,CACvC,KAAM,CAAE,WAAY,IACpB,KAAM,CAAE,WAAY,IACpB,MAAO,CAAE,WAAY,MAGtB,OAAO,eAAe,GAAK,UAAW,OAAO,YAAa,CACzD,MAAO,OACP,SAAU,GACV,WAAY,GACZ,aAAc,KAiBf,YAAoB,EAAS,EAAM,GACjC,MAAM,KAAK,KAAM,GAEjB,KAAK,QAAU,EACf,KAAK,KAAO,EAGR,GACF,MAAK,KAAO,KAAK,MAAQ,EAAY,MAIvC,MAAM,kBAAkB,KAAM,KAAK,aAGrC,GAAW,UAAY,OAAO,OAAO,MAAM,WAC3C,GAAW,UAAU,YAAc,GACnC,GAAW,UAAU,KAAO,aAE5B,GAAI,IACJ,IACC,GAAU,AAAQ,oBAAY,cACtB,IAET,GAAM,IAAY,OAAO,kBAGnB,GAAc,WAAO,YAW3B,YAAc,GACb,GAAI,GAAQ,KAER,EAAO,UAAU,OAAS,GAAK,UAAU,KAAO,OAAY,UAAU,GAAK,GAC3E,EAAY,EAAK,KAErB,GAAI,GAAO,IAAc,OAAY,EAAI,EACzC,GAAI,GAAe,EAAK,QACxB,GAAI,GAAU,IAAiB,OAAY,EAAI,EAE/C,AAAI,GAAQ,KAEX,EAAO,KACD,AAAI,GAAkB,GAE5B,EAAO,OAAO,KAAK,EAAK,YACd,GAAO,IAAkB,OAAO,SAAS,IAAc,CAAI,OAAO,UAAU,SAAS,KAAK,KAAU,uBAE9G,EAAO,OAAO,KAAK,GACb,AAAI,YAAY,OAAO,GAE7B,EAAO,OAAO,KAAK,EAAK,OAAQ,EAAK,WAAY,EAAK,YAC5C,YAAgB,aAG1B,GAAO,OAAO,KAAK,OAAO,MAE3B,KAAK,IAAa,CACjB,OACA,UAAW,GACX,MAAO,MAER,KAAK,KAAO,EACZ,KAAK,QAAU,EAEX,YAAgB,aACnB,EAAK,GAAG,QAAS,SAAU,GAC1B,GAAM,GAAQ,EAAI,OAAS,aAAe,EAAM,GAAI,IAAW,+CAA+C,EAAM,QAAQ,EAAI,UAAW,SAAU,GACrJ,EAAM,IAAW,MAAQ,IAK5B,GAAK,UAAY,IACZ,QACH,MAAO,MAAK,IAAW,SAGpB,YACH,MAAO,MAAK,IAAW,WAQxB,cACC,MAAO,IAAY,KAAK,MAAM,KAAK,SAAU,GAC5C,MAAO,GAAI,OAAO,MAAM,EAAI,WAAY,EAAI,WAAa,EAAI,eAS/D,OACC,GAAI,GAAK,KAAK,SAAW,KAAK,QAAQ,IAAI,iBAAmB,GAC7D,MAAO,IAAY,KAAK,MAAM,KAAK,SAAU,GAC5C,MAAO,QAAO,OAEd,GAAI,IAAK,GAAI,CACZ,KAAM,EAAG,gBACN,EACF,IAAS,OAUb,OACC,GAAI,GAAS,KAEb,MAAO,IAAY,KAAK,MAAM,KAAK,SAAU,GAC5C,IACC,MAAO,MAAK,MAAM,EAAO,kBACjB,GACR,MAAO,IAAK,QAAQ,OAAO,GAAI,IAAW,iCAAiC,EAAO,eAAe,EAAI,UAAW,qBAUnH,OACC,MAAO,IAAY,KAAK,MAAM,KAAK,SAAU,GAC5C,MAAO,GAAO,cAShB,SACC,MAAO,IAAY,KAAK,OASzB,gBACC,GAAI,GAAS,KAEb,MAAO,IAAY,KAAK,MAAM,KAAK,SAAU,GAC5C,MAAO,IAAY,EAAQ,EAAO,aAMrC,OAAO,iBAAiB,GAAK,UAAW,CACvC,KAAM,CAAE,WAAY,IACpB,SAAU,CAAE,WAAY,IACxB,YAAa,CAAE,WAAY,IAC3B,KAAM,CAAE,WAAY,IACpB,KAAM,CAAE,WAAY,IACpB,KAAM,CAAE,WAAY,MAGrB,GAAK,MAAQ,SAAU,GACtB,OAAW,KAAQ,QAAO,oBAAoB,GAAK,WAElD,GAAI,CAAE,KAAQ,KACb,GAAM,GAAO,OAAO,yBAAyB,GAAK,UAAW,GAC7D,OAAO,eAAe,EAAO,EAAM,KAYtC,cACC,GAAI,GAAS,KAEb,GAAI,KAAK,IAAW,UACnB,MAAO,IAAK,QAAQ,OAAO,GAAI,WAAU,0BAA0B,KAAK,QAKzE,GAFA,KAAK,IAAW,UAAY,GAExB,KAAK,IAAW,MACnB,MAAO,IAAK,QAAQ,OAAO,KAAK,IAAW,OAG5C,GAAI,GAAO,KAAK,KAGhB,GAAI,IAAS,KACZ,MAAO,IAAK,QAAQ,QAAQ,OAAO,MAAM,IAS1C,GALI,GAAO,IACV,GAAO,EAAK,UAIT,OAAO,SAAS,GACnB,MAAO,IAAK,QAAQ,QAAQ,GAI7B,GAAI,CAAE,aAAgB,aACrB,MAAO,IAAK,QAAQ,QAAQ,OAAO,MAAM,IAK1C,GAAI,GAAQ,GACR,EAAa,EACb,EAAQ,GAEZ,MAAO,IAAI,IAAK,QAAQ,SAAU,EAAS,GAC1C,GAAI,GAGJ,AAAI,EAAO,SACV,GAAa,WAAW,WACvB,EAAQ,GACR,EAAO,GAAI,IAAW,0CAA0C,EAAO,aAAa,EAAO,aAAc,kBACvG,EAAO,UAIX,EAAK,GAAG,QAAS,SAAU,GAC1B,AAAI,EAAI,OAAS,aAEhB,GAAQ,GACR,EAAO,IAGP,EAAO,GAAI,IAAW,+CAA+C,EAAO,QAAQ,EAAI,UAAW,SAAU,MAI/G,EAAK,GAAG,OAAQ,SAAU,GACzB,GAAI,KAAS,IAAU,OAIvB,GAAI,EAAO,MAAQ,EAAa,EAAM,OAAS,EAAO,MACrD,EAAQ,GACR,EAAO,GAAI,IAAW,mBAAmB,EAAO,mBAAmB,EAAO,OAAQ,aAClF,OAGD,GAAc,EAAM,OACpB,EAAM,KAAK,MAGZ,EAAK,GAAG,MAAO,WACd,GAAI,IAIJ,aAAa,GAEb,IACC,EAAQ,OAAO,OAAO,EAAO,UACrB,GAER,EAAO,GAAI,IAAW,kDAAkD,EAAO,QAAQ,EAAI,UAAW,SAAU,UAcpH,YAAqB,EAAQ,GAC5B,GAAI,MAAO,KAAY,WACtB,KAAM,IAAI,OAAM,gFAGjB,GAAM,GAAK,EAAQ,IAAI,gBACnB,EAAU,QACV,EAAK,EAGT,MAAI,IACH,GAAM,mBAAmB,KAAK,IAI/B,EAAM,EAAO,MAAM,EAAG,MAAM,WAGxB,CAAC,GAAO,GACX,GAAM,iCAAiC,KAAK,IAIzC,CAAC,GAAO,GACX,GAAM,yEAAyE,KAAK,GAC/E,GACJ,GAAM,yEAAyE,KAAK,GAChF,GACH,EAAI,OAIF,GACH,GAAM,gBAAgB,KAAK,EAAI,SAK7B,CAAC,GAAO,GACX,GAAM,mCAAmC,KAAK,IAI3C,GACH,GAAU,EAAI,MAIV,KAAY,UAAY,IAAY,QACvC,GAAU,YAKL,GAAQ,EAAQ,QAAS,GAAS,WAU1C,YAA2B,GAE1B,MAAI,OAAO,IAAQ,UAAY,MAAO,GAAI,QAAW,YAAc,MAAO,GAAI,QAAW,YAAc,MAAO,GAAI,KAAQ,YAAc,MAAO,GAAI,QAAW,YAAc,MAAO,GAAI,KAAQ,YAAc,MAAO,GAAI,KAAQ,WACxN,GAID,EAAI,YAAY,OAAS,mBAAqB,OAAO,UAAU,SAAS,KAAK,KAAS,4BAA8B,MAAO,GAAI,MAAS,WAQhJ,YAAgB,GACf,MAAO,OAAO,IAAQ,UAAY,MAAO,GAAI,aAAgB,YAAc,MAAO,GAAI,MAAS,UAAY,MAAO,GAAI,QAAW,YAAc,MAAO,GAAI,aAAgB,YAAc,MAAO,GAAI,YAAY,MAAS,UAAY,gBAAgB,KAAK,EAAI,YAAY,OAAS,gBAAgB,KAAK,EAAI,OAAO,cASnT,YAAe,GACd,GAAI,GAAI,EACJ,EAAO,EAAS,KAGpB,GAAI,EAAS,SACZ,KAAM,IAAI,OAAM,sCAKjB,MAAI,aAAgB,aAAU,MAAO,GAAK,aAAgB,YAEzD,GAAK,GAAI,IACT,EAAK,GAAI,IACT,EAAK,KAAK,GACV,EAAK,KAAK,GAEV,EAAS,IAAW,KAAO,EAC3B,EAAO,GAGD,EAYR,YAA4B,GAC3B,MAAI,KAAS,KAEL,KACG,MAAO,IAAS,SAEnB,2BACG,GAAkB,GAErB,kDACG,GAAO,GAEV,EAAK,MAAQ,KACV,OAAO,SAAS,IAGhB,OAAO,UAAU,SAAS,KAAK,KAAU,wBAGzC,YAAY,OAAO,GAJtB,KAOG,MAAO,GAAK,aAAgB,WAE/B,gCAAgC,EAAK,gBAClC,YAAgB,YAGnB,KAGA,2BAaT,YAAuB,GACtB,GAAM,GAAO,EAAS,KAGtB,MAAI,KAAS,KAEL,EACG,GAAO,GACV,EAAK,KACF,OAAO,SAAS,GAEnB,EAAK,OACF,GAAQ,MAAO,GAAK,eAAkB,YAE5C,GAAK,mBAAqB,EAAK,kBAAkB,QAAU,GAC/D,EAAK,gBAAkB,EAAK,kBAEpB,EAAK,gBAKN,KAUT,YAAuB,EAAM,GAC5B,GAAM,GAAO,EAAS,KAGtB,AAAI,IAAS,KAEZ,EAAK,MACC,AAAI,GAAO,GACjB,EAAK,SAAS,KAAK,GACb,AAAI,OAAO,SAAS,GAE1B,GAAK,MAAM,GACX,EAAK,OAGL,EAAK,KAAK,GAKZ,GAAK,QAAU,OAAO,QAQtB,GAAM,IAAoB,gCACpB,GAAyB,0BAE/B,YAAsB,GAErB,GADA,EAAO,GAAG,IACN,GAAkB,KAAK,IAAS,IAAS,GAC5C,KAAM,IAAI,WAAU,GAAG,qCAIzB,YAAuB,GAEtB,GADA,EAAQ,GAAG,IACP,GAAuB,KAAK,GAC/B,KAAM,IAAI,WAAU,GAAG,sCAYzB,YAAc,EAAK,GAClB,EAAO,EAAK,cACZ,OAAW,KAAO,GACjB,GAAI,EAAI,gBAAkB,EACzB,MAAO,GAMV,GAAM,IAAM,OAAO,OA1rBnB,SAksBC,cACC,GAAI,GAAO,UAAU,OAAS,GAAK,UAAU,KAAO,OAAY,UAAU,GAAK,OAI/E,GAFA,KAAK,IAAO,OAAO,OAAO,MAEtB,YAAgB,KACnB,GAAM,GAAa,EAAK,MAClB,EAAc,OAAO,KAAK,GAEhC,OAAW,KAAc,GACxB,OAAW,KAAS,GAAW,GAC9B,KAAK,OAAO,EAAY,GAI1B,OAKD,GAAI,GAAQ,KAAa,GAAI,MAAO,IAAS,UAC5C,GAAM,GAAS,EAAK,OAAO,UAC3B,GAAI,GAAU,MACb,GAAI,MAAO,IAAW,WACrB,KAAM,IAAI,WAAU,iCAKrB,GAAM,GAAQ,GACd,OAAW,KAAQ,IAClB,GAAI,MAAO,IAAS,UAAY,MAAO,GAAK,OAAO,WAAc,WAChE,KAAM,IAAI,WAAU,qCAErB,EAAM,KAAK,MAAM,KAAK,IAGvB,OAAW,KAAQ,IAClB,GAAI,EAAK,SAAW,EACnB,KAAM,IAAI,WAAU,+CAErB,KAAK,OAAO,EAAK,GAAI,EAAK,SAI3B,QAAW,KAAO,QAAO,KAAK,IAC7B,GAAM,GAAQ,EAAK,GACnB,KAAK,OAAO,EAAK,QAInB,MAAM,IAAI,WAAU,0CAUtB,IAAI,GACH,EAAO,GAAG,IACV,GAAa,GACb,GAAM,GAAM,GAAK,KAAK,IAAM,GAC5B,MAAI,KAAQ,OACJ,KAGD,KAAK,IAAK,GAAK,KAAK,MAU5B,QAAQ,GACP,GAAI,GAAU,UAAU,OAAS,GAAK,UAAU,KAAO,OAAY,UAAU,GAAK,OAE9E,EAAQ,GAAW,MACnB,EAAI,EACR,KAAO,EAAI,EAAM,SAChB,GAAI,GAAW,EAAM,GACrB,GAAM,GAAO,EAAS,GAChB,EAAQ,EAAS,GAEvB,EAAS,KAAK,EAAS,EAAO,EAAM,MACpC,EAAQ,GAAW,MACnB,KAWF,IAAI,EAAM,GACT,EAAO,GAAG,IACV,EAAQ,GAAG,IACX,GAAa,GACb,GAAc,GACd,GAAM,GAAM,GAAK,KAAK,IAAM,GAC5B,KAAK,IAAK,IAAQ,OAAY,EAAM,GAAQ,CAAC,GAU9C,OAAO,EAAM,GACZ,EAAO,GAAG,IACV,EAAQ,GAAG,IACX,GAAa,GACb,GAAc,GACd,GAAM,GAAM,GAAK,KAAK,IAAM,GAC5B,AAAI,IAAQ,OACX,KAAK,IAAK,GAAK,KAAK,GAEpB,KAAK,IAAK,GAAQ,CAAC,GAUrB,IAAI,GACH,SAAO,GAAG,IACV,GAAa,GACN,GAAK,KAAK,IAAM,KAAU,OASlC,OAAO,GACN,EAAO,GAAG,IACV,GAAa,GACb,GAAM,GAAM,GAAK,KAAK,IAAM,GAC5B,AAAI,IAAQ,QACX,MAAO,MAAK,IAAK,GASnB,MACC,MAAO,MAAK,IAQb,OACC,MAAO,IAAsB,KAAM,OAQpC,SACC,MAAO,IAAsB,KAAM,UAUnC,OAAO,YACP,MAAO,IAAsB,KAAM,eAGrC,GAAQ,UAAU,QAAU,GAAQ,UAAU,OAAO,UAErD,OAAO,eAAe,GAAQ,UAAW,OAAO,YAAa,CAC5D,MAAO,UACP,SAAU,GACV,WAAY,GACZ,aAAc,KAGf,OAAO,iBAAiB,GAAQ,UAAW,CAC1C,IAAK,CAAE,WAAY,IACnB,QAAS,CAAE,WAAY,IACvB,IAAK,CAAE,WAAY,IACnB,OAAQ,CAAE,WAAY,IACtB,IAAK,CAAE,WAAY,IACnB,OAAQ,CAAE,WAAY,IACtB,KAAM,CAAE,WAAY,IACpB,OAAQ,CAAE,WAAY,IACtB,QAAS,CAAE,WAAY,MAGxB,YAAoB,GACnB,GAAI,GAAO,UAAU,OAAS,GAAK,UAAU,KAAO,OAAY,UAAU,GAAK,YAG/E,MAAO,AADM,QAAO,KAAK,EAAQ,KAAM,OAC3B,IAAI,IAAS,MAAQ,SAAU,GAC1C,MAAO,GAAE,eACN,IAAS,QAAU,SAAU,GAChC,MAAO,GAAQ,IAAK,GAAG,KAAK,OACzB,SAAU,GACb,MAAO,CAAC,EAAE,cAAe,EAAQ,IAAK,GAAG,KAAK,SAIhD,GAAM,IAAW,OAAO,YAExB,YAA+B,EAAQ,GACtC,GAAM,GAAW,OAAO,OAAO,IAC/B,SAAS,IAAY,CACpB,SACA,OACA,MAAO,GAED,EAGR,GAAM,IAA2B,OAAO,eAAe,CACtD,OAEC,GAAI,CAAC,MAAQ,OAAO,eAAe,QAAU,GAC5C,KAAM,IAAI,WAAU,4CAGrB,GAAI,GAAY,KAAK,IACrB,GAAM,GAAS,EAAU,OACnB,EAAO,EAAU,KACjB,EAAQ,EAAU,MAElB,EAAS,GAAW,EAAQ,GAC5B,EAAM,EAAO,OACnB,MAAI,IAAS,EACL,CACN,MAAO,OACP,KAAM,IAIR,MAAK,IAAU,MAAQ,EAAQ,EAExB,CACN,MAAO,EAAO,GACd,KAAM,OAGN,OAAO,eAAe,OAAO,eAAe,GAAG,OAAO,eAEzD,OAAO,eAAe,GAA0B,OAAO,YAAa,CACnE,MAAO,kBACP,SAAU,GACV,WAAY,GACZ,aAAc,KASf,YAAqC,GACpC,GAAM,GAAM,OAAO,OAAO,CAAE,UAAW,MAAQ,EAAQ,KAIjD,EAAgB,GAAK,EAAQ,IAAM,QACzC,MAAI,KAAkB,QACrB,GAAI,GAAiB,EAAI,GAAe,IAGlC,EAUR,YAA8B,GAC7B,GAAM,GAAU,GAAI,IACpB,OAAW,KAAQ,QAAO,KAAK,GAC9B,GAAI,IAAkB,KAAK,GAG3B,GAAI,MAAM,QAAQ,EAAI,IACrB,OAAW,KAAO,GAAI,GACrB,AAAI,GAAuB,KAAK,IAGhC,CAAI,EAAQ,IAAK,KAAU,OAC1B,EAAQ,IAAK,GAAQ,CAAC,GAEtB,EAAQ,IAAK,GAAM,KAAK,QAGpB,AAAK,IAAuB,KAAK,EAAI,KAC3C,GAAQ,IAAK,GAAQ,CAAC,EAAI,KAG5B,MAAO,GAGR,GAAM,IAAc,OAAO,sBAGrB,GAAe,WAAK,aA9gC1B,SAwhCC,cACC,GAAI,GAAO,UAAU,OAAS,GAAK,UAAU,KAAO,OAAY,UAAU,GAAK,KAC3E,EAAO,UAAU,OAAS,GAAK,UAAU,KAAO,OAAY,UAAU,GAAK,GAE/E,GAAK,KAAK,KAAM,EAAM,GAEtB,GAAM,GAAS,EAAK,QAAU,IACxB,EAAU,GAAI,IAAQ,EAAK,SAEjC,GAAI,GAAQ,MAAQ,CAAC,EAAQ,IAAI,iBAChC,GAAM,GAAc,GAAmB,GACvC,AAAI,GACH,EAAQ,OAAO,eAAgB,GAIjC,KAAK,IAAe,CACnB,IAAK,EAAK,IACV,SACA,WAAY,EAAK,YAAc,GAAa,GAC5C,UACA,QAAS,EAAK,YAIZ,OACH,MAAO,MAAK,IAAa,KAAO,MAG7B,UACH,MAAO,MAAK,IAAa,UAMtB,MACH,MAAO,MAAK,IAAa,QAAU,KAAO,KAAK,IAAa,OAAS,OAGlE,cACH,MAAO,MAAK,IAAa,QAAU,KAGhC,cACH,MAAO,MAAK,IAAa,cAGtB,WACH,MAAO,MAAK,IAAa,QAQ1B,QACC,MAAO,IAAI,IAAS,GAAM,MAAO,CAChC,IAAK,KAAK,IACV,OAAQ,KAAK,OACb,WAAY,KAAK,WACjB,QAAS,KAAK,QACd,GAAI,KAAK,GACT,WAAY,KAAK,eAKpB,GAAK,MAAM,GAAS,WAEpB,OAAO,iBAAiB,GAAS,UAAW,CAC3C,IAAK,CAAE,WAAY,IACnB,OAAQ,CAAE,WAAY,IACtB,GAAI,CAAE,WAAY,IAClB,WAAY,CAAE,WAAY,IAC1B,WAAY,CAAE,WAAY,IAC1B,QAAS,CAAE,WAAY,IACvB,MAAO,CAAE,WAAY,MAGtB,OAAO,eAAe,GAAS,UAAW,OAAO,YAAa,CAC7D,MAAO,WACP,SAAU,GACV,WAAY,GACZ,aAAc,KAGf,GAAM,IAAc,OAAO,qBAGrB,GAAY,WAAI,MAChB,GAAa,WAAI,OAEjB,GAA6B,WAAa,YAAO,SAAS,UAQhE,YAAmB,GAClB,MAAO,OAAO,IAAU,UAAY,MAAO,GAAM,KAAiB,SAGnE,YAAuB,GACtB,GAAM,GAAQ,GAAU,MAAO,IAAW,UAAY,OAAO,eAAe,GAC5E,MAAO,CAAC,CAAE,IAAS,EAAM,YAAY,OAAS,eApoC/C,aA+oCC,YAAY,GACX,GAAI,GAAO,UAAU,OAAS,GAAK,UAAU,KAAO,OAAY,UAAU,GAAK,GAE3E,EAGJ,AAAK,GAAU,GAYd,EAAY,GAAU,EAAM,KAX5B,CAAI,GAAS,EAAM,KAIlB,EAAY,GAAU,EAAM,MAG5B,EAAY,GAAU,GAAG,KAE1B,EAAQ,IAKT,GAAI,GAAS,EAAK,QAAU,EAAM,QAAU,MAG5C,GAFA,EAAS,EAAO,cAEX,GAAK,MAAQ,MAAQ,GAAU,IAAU,EAAM,OAAS,OAAU,KAAW,OAAS,IAAW,QACrG,KAAM,IAAI,WAAU,iDAGrB,GAAI,GAAY,EAAK,MAAQ,KAAO,EAAK,KAAO,GAAU,IAAU,EAAM,OAAS,KAAO,GAAM,GAAS,KAEzG,GAAK,KAAK,KAAM,EAAW,CAC1B,QAAS,EAAK,SAAW,EAAM,SAAW,EAC1C,KAAM,EAAK,MAAQ,EAAM,MAAQ,IAGlC,GAAM,GAAU,GAAI,IAAQ,EAAK,SAAW,EAAM,SAAW,IAE7D,GAAI,GAAa,MAAQ,CAAC,EAAQ,IAAI,iBACrC,GAAM,GAAc,GAAmB,GACvC,AAAI,GACH,EAAQ,OAAO,eAAgB,GAIjC,GAAI,GAAS,GAAU,GAAS,EAAM,OAAS,KAG/C,GAFI,UAAY,IAAM,GAAS,EAAK,QAEhC,GAAU,MAAQ,CAAC,GAAc,GACpC,KAAM,IAAI,WAAU,mDAGrB,KAAK,IAAe,CACnB,SACA,SAAU,EAAK,UAAY,EAAM,UAAY,SAC7C,UACA,YACA,UAID,KAAK,OAAS,EAAK,SAAW,OAAY,EAAK,OAAS,EAAM,SAAW,OAAY,EAAM,OAAS,GACpG,KAAK,SAAW,EAAK,WAAa,OAAY,EAAK,SAAW,EAAM,WAAa,OAAY,EAAM,SAAW,GAC9G,KAAK,QAAU,EAAK,SAAW,EAAM,SAAW,EAChD,KAAK,MAAQ,EAAK,OAAS,EAAM,SAG9B,UACH,MAAO,MAAK,IAAa,UAGtB,OACH,MAAO,IAAW,KAAK,IAAa,cAGjC,WACH,MAAO,MAAK,IAAa,WAGtB,YACH,MAAO,MAAK,IAAa,YAGtB,UACH,MAAO,MAAK,IAAa,OAQ1B,QACC,MAAO,IAAI,IAAQ,QAIrB,GAAK,MAAM,GAAQ,WAEnB,OAAO,eAAe,GAAQ,UAAW,OAAO,YAAa,CAC5D,MAAO,UACP,SAAU,GACV,WAAY,GACZ,aAAc,KAGf,OAAO,iBAAiB,GAAQ,UAAW,CAC1C,OAAQ,CAAE,WAAY,IACtB,IAAK,CAAE,WAAY,IACnB,QAAS,CAAE,WAAY,IACvB,SAAU,CAAE,WAAY,IACxB,MAAO,CAAE,WAAY,IACrB,OAAQ,CAAE,WAAY,MASvB,YAA+B,GAC9B,GAAM,GAAY,EAAQ,IAAa,UACjC,EAAU,GAAI,IAAQ,EAAQ,IAAa,SAQjD,GALK,EAAQ,IAAI,WAChB,EAAQ,IAAI,SAAU,OAInB,CAAC,EAAU,UAAY,CAAC,EAAU,SACrC,KAAM,IAAI,WAAU,oCAGrB,GAAI,CAAC,YAAY,KAAK,EAAU,UAC/B,KAAM,IAAI,WAAU,wCAGrB,GAAI,EAAQ,QAAU,EAAQ,eAAgB,YAAO,UAAY,CAAC,GACjE,KAAM,IAAI,OAAM,mFAIjB,GAAI,GAAqB,KAIzB,GAHI,EAAQ,MAAQ,MAAQ,gBAAgB,KAAK,EAAQ,SACxD,GAAqB,KAElB,EAAQ,MAAQ,MACnB,GAAM,GAAa,GAAc,GACjC,AAAI,MAAO,IAAe,UACzB,GAAqB,OAAO,IAG9B,AAAI,GACH,EAAQ,IAAI,iBAAkB,GAI1B,EAAQ,IAAI,eAChB,EAAQ,IAAI,aAAc,0DAIvB,EAAQ,UAAY,CAAC,EAAQ,IAAI,oBACpC,EAAQ,IAAI,kBAAmB,gBAGhC,GAAI,GAAQ,EAAQ,MACpB,MAAI,OAAO,IAAU,YACpB,GAAQ,EAAM,IAGX,CAAC,EAAQ,IAAI,eAAiB,CAAC,GAClC,EAAQ,IAAI,aAAc,SAMpB,OAAO,OAAO,GAAI,EAAW,CACnC,OAAQ,EAAQ,OAChB,QAAS,GAA4B,GACrC,UAgBF,YAAoB,GAClB,MAAM,KAAK,KAAM,GAEjB,KAAK,KAAO,UACZ,KAAK,QAAU,EAGf,MAAM,kBAAkB,KAAM,KAAK,aAGrC,GAAW,UAAY,OAAO,OAAO,MAAM,WAC3C,GAAW,UAAU,YAAc,GACnC,GAAW,UAAU,KAAO,aAG5B,GAAM,IAAgB,WAAO,YACvB,GAAc,WAAI,QASxB,YAAe,EAAK,GAGnB,GAAI,CAAC,GAAM,QACV,KAAM,IAAI,OAAM,0EAGjB,UAAK,QAAU,GAAM,QAGd,GAAI,IAAM,QAAQ,SAAU,EAAS,GAE3C,GAAM,GAAU,GAAI,IAAQ,EAAK,GAC3B,EAAU,GAAsB,GAEhC,EAAQ,GAAQ,WAAa,SAAW,WAAQ,YAAM,QACtD,EAAS,EAAQ,OAEnB,EAAW,KAET,EAAQ,WACb,GAAI,GAAQ,GAAI,IAAW,+BAK3B,AAJA,EAAO,GACH,EAAQ,MAAQ,EAAQ,eAAgB,YAAO,UAClD,EAAQ,KAAK,QAAQ,GAElB,GAAC,GAAY,CAAC,EAAS,OAC3B,EAAS,KAAK,KAAK,QAAS,IAG7B,GAAI,GAAU,EAAO,SACpB,IACA,OAGD,GAAM,GAAmB,WACxB,IACA,KAIK,EAAM,EAAK,GACb,EAEJ,AAAI,GACH,EAAO,iBAAiB,QAAS,GAGlC,aACC,EAAI,QACA,GAAQ,EAAO,oBAAoB,QAAS,GAChD,aAAa,GAGd,AAAI,EAAQ,SACX,EAAI,KAAK,SAAU,SAAU,GAC5B,EAAa,WAAW,WACvB,EAAO,GAAI,IAAW,uBAAuB,EAAQ,MAAO,oBAC5D,KACE,EAAQ,WAIb,EAAI,GAAG,QAAS,SAAU,GACzB,EAAO,GAAI,IAAW,cAAc,EAAQ,uBAAuB,EAAI,UAAW,SAAU,IAC5F,MAGD,EAAI,GAAG,WAAY,SAAU,GAC5B,aAAa,GAEb,GAAM,GAAU,GAAqB,EAAI,SAGzC,GAAI,GAAM,WAAW,EAAI,aAExB,GAAM,GAAW,EAAQ,IAAI,YAGvB,EAAc,IAAa,KAAO,KAAO,GAAY,EAAQ,IAAK,GAGxE,OAAQ,EAAQ,cACV,QACJ,EAAO,GAAI,IAAW,0EAA0E,EAAQ,MAAO,gBAC/G,IACA,WACI,SAEJ,GAAI,IAAgB,KAEnB,IACC,EAAQ,IAAI,WAAY,SAChB,GAER,EAAO,GAGT,UACI,SAEJ,GAAI,IAAgB,KACnB,MAID,GAAI,EAAQ,SAAW,EAAQ,QAC9B,EAAO,GAAI,IAAW,gCAAgC,EAAQ,MAAO,iBACrE,IACA,OAKD,GAAM,GAAc,CACnB,QAAS,GAAI,IAAQ,EAAQ,SAC7B,OAAQ,EAAQ,OAChB,QAAS,EAAQ,QAAU,EAC3B,MAAO,EAAQ,MACf,SAAU,EAAQ,SAClB,OAAQ,EAAQ,OAChB,KAAM,EAAQ,KACd,OAAQ,EAAQ,OAChB,QAAS,EAAQ,QACjB,KAAM,EAAQ,MAIf,GAAI,EAAI,aAAe,KAAO,EAAQ,MAAQ,GAAc,KAAa,MACxE,EAAO,GAAI,IAAW,2DAA4D,yBAClF,IACA,OAID,AAAI,GAAI,aAAe,KAAQ,GAAI,aAAe,KAAO,EAAI,aAAe,MAAQ,EAAQ,SAAW,SACtG,GAAY,OAAS,MACrB,EAAY,KAAO,OACnB,EAAY,QAAQ,OAAO,mBAI5B,EAAQ,GAAM,GAAI,IAAQ,EAAa,KACvC,IACA,QAKH,EAAI,KAAK,MAAO,WACf,AAAI,GAAQ,EAAO,oBAAoB,QAAS,KAEjD,GAAI,GAAO,EAAI,KAAK,GAAI,KAElB,EAAmB,CACxB,IAAK,EAAQ,IACb,OAAQ,EAAI,WACZ,WAAY,EAAI,cAChB,QAAS,EACT,KAAM,EAAQ,KACd,QAAS,EAAQ,QACjB,QAAS,EAAQ,SAIZ,EAAU,EAAQ,IAAI,oBAU5B,GAAI,CAAC,EAAQ,UAAY,EAAQ,SAAW,QAAU,IAAY,MAAQ,EAAI,aAAe,KAAO,EAAI,aAAe,KACtH,EAAW,GAAI,IAAS,EAAM,GAC9B,EAAQ,GACR,OAQD,GAAM,GAAc,CACnB,MAAO,WAAK,aACZ,YAAa,WAAK,cAInB,GAAI,GAAW,QAAU,GAAW,UACnC,EAAO,EAAK,KAAK,WAAK,aAAa,IACnC,EAAW,GAAI,IAAS,EAAM,GAC9B,EAAQ,GACR,OAID,GAAI,GAAW,WAAa,GAAW,aAItC,AADY,EAAI,KAAK,GAAI,KACrB,KAAK,OAAQ,SAAU,GAE1B,AAAK,GAAM,GAAK,KAAU,EACzB,EAAO,EAAK,KAAK,WAAK,iBAEtB,EAAO,EAAK,KAAK,WAAK,oBAEvB,EAAW,GAAI,IAAS,EAAM,GAC9B,EAAQ,KAET,OAID,GAAI,GAAW,MAAQ,MAAO,YAAK,wBAA2B,YAC7D,EAAO,EAAK,KAAK,WAAK,0BACtB,EAAW,GAAI,IAAS,EAAM,GAC9B,EAAQ,GACR,OAID,EAAW,GAAI,IAAS,EAAM,GAC9B,EAAQ,KAGT,GAAc,EAAK,KASrB,GAAM,WAAa,SAAU,GAC5B,MAAO,KAAS,KAAO,IAAS,KAAO,IAAS,KAAO,IAAS,KAAO,IAAS,KAIjF,GAAM,QAAU,OAAO,QAEvB,GAAO,IAAQ,KCpmDf,cAuBA,aAEA,GAAM,IAAc,eACd,GAAe,gBACf,GAAuB,kBACvB,GAAQ,GAAK,SAAS,QAc5B,YAAe,GACb,GAAI,CAAE,gBAAgB,KACpB,MAAO,IAAI,IAAM,GAEnB,GAAa,KAAK,MAElB,GAAI,GAAO,KAEX,EAAK,YAAc,GACnB,EAAK,SAAW,QAEhB,EAAK,QAAU,GAAK,QAAQ,GAAI,GAGhC,EAAK,QAAQ,KAAO,KACpB,EAAK,SAAW,GAChB,EAAK,QAAU,GACf,EAAK,YAAc,GACnB,EAAK,eAAiB,EAAK,QAAQ,gBAAkB,IACrD,EAAK,UAAY,EAAK,QAAQ,WAAa,GAC3C,EAAK,WAAa,EAAK,QAAQ,YAAc,GAAM,kBACnD,EAAK,eAAiB,EAAK,QAAQ,gBAAkB,IAIrD,EAAK,2BAA6B,EAAK,QAAQ,4BAA8B,EAE7E,EAAK,QAAU,EAAK,QAAQ,SAAW,EAEvC,KAAK,gBAAkB,KAAK,QAAQ,iBAAmB,KAGvD,EAAK,GAAG,OAAQ,SAAS,EAAQ,GAC/B,GAAI,GAAO,EAAK,QAAQ,GAGxB,GAFA,GAAM,iBAAkB,GAEpB,EAAO,UACP,EAAK,SAAS,IAAS,EAAK,SAAS,GAAM,OAE7C,GAAM,gCAEN,EAAK,SAAS,GAAM,QAAQ,SAAS,GACjC,EAAK,SAAS,GAAM,SAAW,GAEjC,MAAO,GAAK,SAAS,QAKvB,GAAI,GAAM,EAAO,aACjB,GAAI,GACA,EAAI,iBACJ,EAAO,UACP,EAAK,WACP,GAAI,GAAc,EAAK,YAAY,GAC/B,EAAU,EAAc,EAAY,OAAS,EAC7C,EAAQ,EAIZ,GAHI,EAAK,QAAQ,IACf,IAAS,EAAK,QAAQ,GAAM,QAE1B,EAAQ,EAAK,YAAc,GAAW,EAAK,eAC7C,EAAO,eAEP,EAAc,GAAe,GAC7B,EAAK,YAAY,GAAQ,EACzB,EAAO,aAAa,GAAM,EAAK,gBAC/B,EAAO,QACP,EAAO,aAAe,KACtB,EAAK,aAAa,EAAQ,GAC1B,EAAY,KAAK,GAMb,EAAO,UAAU,SAAS,SAAW,GACvC,EAAO,KAAK,QAAS,IAIvB,GAAM,GAA6B,EAAO,4BAA8B,EAAK,2BAC7E,EAAO,WAAW,GAClB,GAAM,0CAA0C,YAIlD,GAAO,aAMf,GAAK,SAAS,GAAO,IACrB,GAAQ,MAAQ,GAGhB,YAAiC,GAC/B,GAAI,GAAS,KACb,GAAM,+BAAgC,EAAI,QAAS,EAAI,OACvD,EAAO,UACP,EAAO,KAAK,eAId,GAAM,kBAAoB,SAE1B,GAAM,UAAU,iBAAmB,GAAI,iBAGvC,GAAM,UAAU,QAAU,SAAiB,GACzC,GAAI,GAAO,EAAQ,MAAQ,YAE3B,UAAQ,IACJ,EAAQ,MACV,IAAQ,EAAQ,MAElB,GAAQ,IACJ,EAAQ,cACV,IAAQ,EAAQ,cAId,GAAQ,SAAW,GAAK,EAAQ,SAAW,IAC7C,IAAQ,IAAM,EAAQ,QAEjB,GAIT,YAA8B,GAC5B,MAAO,UAAS,EAAK,GACnB,GAAI,GACF,QAAQ,SAAS,WACf,EAAI,KAAK,QAAS,KAEpB,OAEF,EAAI,SAAS,IAKjB,GAAM,UAAU,WAAa,SAAoB,EAAK,EAAS,EACd,GAE/C,AAAI,MAAO,IAAY,UACrB,GAAU,CACR,KAAM,EACN,OACA,iBAIJ,EAAU,GAAK,QAAQ,GAAI,GAC3B,EAAU,GAAK,QAAQ,EAAS,KAAK,SAEhC,EAAQ,YACX,GAAQ,WAAa,GAAoB,EAAS,IAEpD,GAAI,GAAO,KAAK,QAAQ,GACxB,AAAK,KAAK,QAAQ,IAChB,MAAK,QAAQ,GAAQ,IAGvB,GAAI,GAAU,KAAK,YAAY,GAAQ,KAAK,YAAY,GAAM,OAAS,EACnE,EAAU,EAAU,KAAK,QAAQ,GAAM,OAE3C,GAAI,GAEF,GAAI,GAAS,KAAK,YAAY,GAAM,QASpC,GARA,GAAM,oBAIN,EAAO,eAAe,QAAS,IAE/B,EAAO,WAAW,KAAK,SAEnB,KAAK,iBAAmB,KAAK,MAAQ,EAAO,YAAc,KAAK,gBACjE,UAAM,UAAU,EAAO,uBACvB,EAAO,UACA,KAAK,aAAa,EAAK,EAAS,GAAqB,IAK9D,AAAK,KAAK,YAAY,GAAM,QAC1B,MAAO,MAAK,YAAY,GAE1B,EAAO,MACP,EAAI,SAAS,GACb,KAAK,QAAQ,GAAM,KAAK,OACnB,AAAI,GAAU,KAAK,WACxB,IAAM,gBAAiB,EAAS,GAGhC,KAAK,aAAa,EAAK,EAAS,GAAqB,KAGrD,IAAM,mBAED,KAAK,SAAS,IACjB,MAAK,SAAS,GAAQ,IAExB,KAAK,SAAS,GAAM,KAAK,KAI7B,GAAM,UAAU,aAAe,SAAsB,EAAK,EAAS,GACjE,GAAI,GAAO,KACX,EAAU,GAAK,QAAQ,GAAI,GAC3B,EAAU,GAAK,QAAQ,EAAS,EAAK,SAEhC,EAAQ,YACX,GAAQ,WAAa,GAAoB,EAAS,IAEpD,GAAI,GAAO,EAAK,QAAQ,GACxB,EAAQ,UAAY,EAEpB,GAAM,mBAAoB,EAAM,GAChC,EAAQ,SAAW,KACnB,GAAI,GAAS,GACb,GAAM,GAAY,EAAK,iBAAiB,EAAS,GAEjD,AAAI,GACF,EAAS,KAAM,OAAO,OAAO,EAAW,CAAE,YAAa,KAAK,SAG9D,WAAkB,EAAK,GACrB,GAAI,EACF,OAEF,GADA,EAAS,GACL,EACF,MAAO,GAAG,GACZ,AAAK,EAAK,QAAQ,IAChB,GAAK,QAAQ,GAAQ,IAEvB,EAAK,QAAQ,GAAM,KAAK,GACxB,GAAM,UAAW,EAAM,EAAK,QAAQ,GAAM,QAE1C,aACE,EAAK,KAAK,OAAQ,EAAG,GAEvB,EAAE,GAAG,OAAQ,GAEb,WAAiB,GACf,GAAM,yBAIN,EAAK,aAAa,EAAG,GAGrB,EAAK,KAAK,SAGZ,EAAE,GAAG,QAAS,GAId,aACE,GAAM,2BACN,EAAE,UAEF,EAAK,aAAa,EAAG,GACrB,EAAK,KAAK,WAEZ,EAAE,GAAG,UAAW,GAEhB,EAAE,WAAW,EAAK,SAGlB,aAIE,GAAM,0BACN,EAAK,aAAa,EAAG,GACrB,EAAE,eAAe,QAAS,GAC1B,EAAE,eAAe,OAAQ,GACzB,EAAE,eAAe,cAAe,GAIhC,EAAE,WAAW,EAAG,GAGlB,EAAE,GAAG,cAAe,GACpB,EAAG,KAAM,KAIb,YAA6B,EAAS,GACpC,GAAI,GAAa,EAAQ,KACnB,EAAa,EAAI,UAAU,QACjC,GAAI,EAKF,GAAI,EAAW,WAAW,MACxB,GAAM,GAAQ,EAAW,QAAQ,KACjC,AAAI,IAAU,GAEZ,EAAa,EAEb,EAAa,EAAW,OAAO,EAAG,EAAQ,OAG5C,GAAa,EAAW,MAAM,IAAK,GAAG,GAG1C,MAAO,GAGT,GAAM,UAAU,aAAe,SAAsB,EAAG,GACtD,GAAI,GAAO,KAAK,QAAQ,GACxB,GAAM,eAAgB,EAAM,YAAa,EAAE,UAC3C,GAAI,GAAO,CAAC,KAAK,SAGjB,AAAK,EAAE,UACL,EAAK,KAAK,KAAK,aAEjB,OAAS,GAAK,EAAG,EAAK,EAAK,OAAQ,KACjC,GAAI,GAAU,EAAK,GAEnB,GAAI,EAAQ,IACV,GAAI,GAAQ,EAAQ,GAAM,QAAQ,GAClC,AAAI,IAAU,IACZ,GAAQ,GAAM,OAAO,EAAO,GAExB,EAAQ,GAAM,SAAW,GAC3B,MAAO,GAAQ,KAMvB,GAAI,GAAU,KAAK,YAAY,GAAQ,KAAK,YAAY,GAAM,OAAS,EACnE,EAAU,EAAU,KAAK,QAAQ,GAAQ,KAAK,QAAQ,GAAM,OAAS,EAGzE,GAAI,KAAK,SAAS,IAAS,KAAK,SAAS,GAAM,QAAU,EAAU,KAAK,YACtE,GAAM,+CACN,GAAI,GAAM,KAAK,SAAS,GAAM,GAE9B,KAAK,aAAa,EAAK,EAAS,SAAS,EAAK,GAC5C,GAAI,GACF,QAAQ,SAAS,WACf,EAAI,KAAK,QAAS,KAEpB,OAEF,EAAU,KAAK,YAKrB,GAAM,UAAU,QAAU,WAExB,OADI,GAAO,CAAC,KAAK,YAAa,KAAK,SAC1B,EAAI,EAAG,EAAI,EAAK,OAAQ,IAG/B,OAFI,GAAM,EAAK,GACX,EAAO,OAAO,KAAK,GACd,EAAI,EAAG,EAAI,EAAK,OAAQ,IAE/B,OADI,GAAU,EAAI,EAAK,IACd,EAAI,EAAG,EAAI,EAAQ,OAAQ,IAClC,EAAQ,GAAG,WAMnB,GAAQ,YAAc,GAAI,MC/Z1B,mBAIA,GAAI,IAAI,IACJ,GAAI,GAAI,GACR,GAAI,GAAI,GACR,GAAI,GAAI,GACR,GAAI,GAAI,EACR,GAAI,GAAI,OAgBZ,GAAO,QAAU,SAAU,EAAK,GAC9B,EAAU,GAAW,GACrB,GAAI,GAAO,MAAO,GAClB,GAAI,IAAS,UAAY,EAAI,OAAS,EACpC,MAAO,IAAM,GACR,GAAI,IAAS,UAAY,SAAS,GACvC,MAAO,GAAQ,KAAO,GAAQ,GAAO,GAAS,GAEhD,KAAM,IAAI,OACR,wDACE,KAAK,UAAU,KAYrB,YAAe,GAEb,GADA,EAAM,OAAO,GACT,IAAI,OAAS,MAGjB,GAAI,GAAQ,mIAAmI,KAC7I,GAEF,GAAI,EAAC,GAGL,GAAI,GAAI,WAAW,EAAM,IACrB,EAAQ,GAAM,IAAM,MAAM,cAC9B,OAAQ,OACD,YACA,WACA,UACA,SACA,IACH,MAAO,GAAI,OACR,YACA,WACA,IACH,MAAO,GAAI,OACR,WACA,UACA,IACH,MAAO,GAAI,OACR,YACA,WACA,UACA,SACA,IACH,MAAO,GAAI,OACR,cACA,aACA,WACA,UACA,IACH,MAAO,GAAI,OACR,cACA,aACA,WACA,UACA,IACH,MAAO,GAAI,OACR,mBACA,kBACA,YACA,WACA,KACH,MAAO,WAEP,UAYN,YAAkB,GAChB,GAAI,GAAQ,KAAK,IAAI,GACrB,MAAI,IAAS,GACJ,KAAK,MAAM,EAAK,IAAK,IAE1B,GAAS,GACJ,KAAK,MAAM,EAAK,IAAK,IAE1B,GAAS,GACJ,KAAK,MAAM,EAAK,IAAK,IAE1B,GAAS,GACJ,KAAK,MAAM,EAAK,IAAK,IAEvB,EAAK,KAWd,YAAiB,GACf,GAAI,GAAQ,KAAK,IAAI,GACrB,MAAI,IAAS,GACJ,GAAO,EAAI,EAAO,GAAG,OAE1B,GAAS,GACJ,GAAO,EAAI,EAAO,GAAG,QAE1B,GAAS,GACJ,GAAO,EAAI,EAAO,GAAG,UAE1B,GAAS,GACJ,GAAO,EAAI,EAAO,GAAG,UAEvB,EAAK,MAOd,YAAgB,EAAI,EAAO,EAAG,GAC5B,GAAI,GAAW,GAAS,EAAI,IAC5B,MAAO,MAAK,MAAM,EAAK,GAAK,IAAM,EAAQ,GAAW,IAAM,OChK7D,mBAMA,aAMA,GAAI,IAAe,gBACf,GAAa,KAEjB,GAAO,QAAU,SAAU,GACzB,GAAI,MAAO,IAAM,SAAU,MAAO,GAClC,GAAI,GAAI,GAAG,GACX,GAAI,IAAM,QACR,GAAI,GAAM,GAAI,OAAM,GAAK,OAAO,mCAAoC,IACpE,QAAQ,KAAK,EAAI,OAEnB,MAAO,MCtBT,mBAQA,aAEA,GAAM,IAAgB,AAAQ,KAAiB,MACzC,GAAa,KAXnB,gBAaoB,IAClB,YAAY,GACV,EAAU,GAAW,GACrB,EAAQ,UAAY,EAAQ,YAAc,GAEtC,EAAQ,6BAA+B,QACzC,GAAQ,2BAA6B,MAGnC,EAAQ,kBACV,GAAQ,2BAA6B,EAAQ,kBAE/C,EAAQ,2BAA6B,GAAG,EAAQ,4BAI5C,EAAQ,UAAY,QACtB,GAAQ,QAAU,EAAQ,2BAA6B,EAEnD,EAAQ,QAAU,KACpB,GAAQ,QAAU,MAGtB,EAAQ,QAAU,GAAG,EAAQ,SAE7B,MAAM,GAEN,KAAK,kBAAoB,EACzB,KAAK,2BAA6B,EAElC,KAAK,uBAAyB,EAC9B,KAAK,gCAAkC,EAEvC,KAAK,iBAAmB,EACxB,KAAK,0BAA4B,EAGjC,KAAK,iBAAmB,EACxB,KAAK,0BAA4B,EAEjC,KAAK,aAAe,EACpB,KAAK,sBAAwB,EAE7B,KAAK,mBAAqB,EAC1B,KAAK,4BAA8B,EAEnC,KAAK,GAAG,OAAQ,IACd,KAAK,eAEL,EAAE,aAAe,KAAK,QAExB,KAAK,GAAG,UAAW,KACjB,KAAK,uBAEP,KAAK,GAAG,QAAS,KACf,KAAK,qBAEP,KAAK,GAAG,QAAS,KACf,KAAK,qBAIT,aAAa,EAAK,EAAS,GACzB,MAAM,aAAa,EAAK,EAAS,CAAC,EAAK,KACrC,GAAI,EACF,YAAK,yBACE,EAAG,GAEZ,AAAI,KAAK,WAGP,EAAO,WAAW,IAEpB,KAAK,oBACL,EAAG,KAAM,QAIT,iBACF,GAAM,GAAU,KAAK,oBAAsB,KAAK,4BAC9C,KAAK,yBAA2B,KAAK,iCACrC,KAAK,mBAAqB,KAAK,2BAC/B,KAAK,mBAAqB,KAAK,2BAC/B,KAAK,qBAAuB,KAAK,6BACjC,KAAK,eAAiB,KAAK,sBAC7B,MAAI,IACF,MAAK,2BAA6B,KAAK,kBACvC,KAAK,gCAAkC,KAAK,uBAC5C,KAAK,0BAA4B,KAAK,iBACtC,KAAK,0BAA4B,KAAK,iBACtC,KAAK,4BAA8B,KAAK,mBACxC,KAAK,sBAAwB,KAAK,cAE7B,EAGT,mBACE,MAAO,CACL,kBAAmB,KAAK,kBACxB,uBAAwB,KAAK,uBAC7B,iBAAkB,KAAK,iBACvB,iBAAkB,KAAK,iBACvB,mBAAoB,KAAK,mBACzB,aAAc,KAAK,aACnB,YAAa,GAAQ,KAAK,aAC1B,QAAS,GAAQ,KAAK,SACtB,SAAU,GAAQ,KAAK,aAK7B,GAAO,QAAU,GAEjB,YAAiB,GACf,GAAM,GAAM,GACZ,OAAW,KAAO,GAChB,EAAI,GAAO,EAAI,GAAK,OAEtB,MAAO,MCnIT,mBAIA,aAEA,GAAM,IAAgB,iBAChB,GAAoB,KACpB,GAAqB,GAAM,MARjC,gBAUyB,IACvB,YAAY,GACV,MAAM,GAEN,KAAK,YAAc,IACnB,KAAK,SAAW,SAChB,KAAK,kBAAoB,KAAK,QAAQ,kBAClC,KAAK,oBAAsB,QAC7B,MAAK,kBAAoB,KAG3B,KAAK,cAAgB,CACnB,IAAK,GACL,KAAM,MAKZ,CACE,mBACA,UACA,cACA,gBAEA,iBACA,QAAQ,SAAS,GACjB,AAAI,MAAO,IAAmB,UAAU,IAAY,YAClD,IAAW,UAAU,GAAU,GAAmB,UAAU,MAIhE,GAAO,QAAU,KCzCjB,gCAEA,GAAO,QAAkB,KACzB,GAAO,QAAQ,WAAqB,OCHpC,mBAIA,GAAI,IAAI,IACJ,GAAI,GAAI,GACR,GAAI,GAAI,GACR,GAAI,GAAI,GACR,GAAI,GAAI,OAgBZ,GAAO,QAAU,SAAS,EAAK,GAC7B,EAAU,GAAW,GACrB,GAAI,GAAO,MAAO,GAClB,GAAI,IAAS,UAAY,EAAI,OAAS,EACpC,MAAO,IAAM,GACR,GAAI,IAAS,UAAY,MAAM,KAAS,GAC7C,MAAO,GAAQ,KAAO,GAAQ,GAAO,GAAS,GAEhD,KAAM,IAAI,OACR,wDACE,KAAK,UAAU,KAYrB,YAAe,GAEb,GADA,EAAM,OAAO,GACT,IAAI,OAAS,MAGjB,GAAI,GAAQ,wHAAwH,KAClI,GAEF,GAAI,EAAC,GAGL,GAAI,GAAI,WAAW,EAAM,IACrB,EAAQ,GAAM,IAAM,MAAM,cAC9B,OAAQ,OACD,YACA,WACA,UACA,SACA,IACH,MAAO,GAAI,OACR,WACA,UACA,IACH,MAAO,GAAI,OACR,YACA,WACA,UACA,SACA,IACH,MAAO,GAAI,OACR,cACA,aACA,WACA,UACA,IACH,MAAO,GAAI,OACR,cACA,aACA,WACA,UACA,IACH,MAAO,GAAI,OACR,mBACA,kBACA,YACA,WACA,KACH,MAAO,WAEP,UAYN,YAAkB,GAChB,MAAI,IAAM,GACD,KAAK,MAAM,EAAK,IAAK,IAE1B,GAAM,GACD,KAAK,MAAM,EAAK,IAAK,IAE1B,GAAM,GACD,KAAK,MAAM,EAAK,IAAK,IAE1B,GAAM,GACD,KAAK,MAAM,EAAK,IAAK,IAEvB,EAAK,KAWd,YAAiB,GACf,MAAO,IAAO,EAAI,GAAG,QACnB,GAAO,EAAI,GAAG,SACd,GAAO,EAAI,GAAG,WACd,GAAO,EAAI,GAAG,WACd,EAAK,MAOT,YAAgB,EAAI,EAAG,GACrB,GAAI,IAAK,GAGT,MAAI,GAAK,EAAI,IACJ,KAAK,MAAM,EAAK,GAAK,IAAM,EAE7B,KAAK,KAAK,EAAK,GAAK,IAAM,EAAO,OCtJ1C,kBAQA,EAAU,GAAO,QAAU,GAAY,MAAQ,GAAY,QAAa,GACxE,EAAQ,OAAS,GACjB,EAAQ,QAAU,GAClB,EAAQ,OAAS,GACjB,EAAQ,QAAU,GAClB,EAAQ,SAAmB,KAK3B,EAAQ,UAAY,GAMpB,EAAQ,MAAQ,GAChB,EAAQ,MAAQ,GAQhB,EAAQ,WAAa,GASrB,YAAqB,GACnB,GAAI,GAAO,EAAG,EAEd,IAAK,IAAK,GACR,EAAU,IAAQ,GAAK,EAAQ,EAAU,WAAW,GACpD,GAAQ,EAGV,MAAO,GAAQ,OAAO,KAAK,IAAI,GAAQ,EAAQ,OAAO,QAWxD,YAAqB,GAEnB,GAAI,GAEJ,aAEE,GAAI,EAAC,EAAM,SAEX,GAAI,GAAO,EAGP,EAAO,CAAC,GAAI,MACZ,EAAK,EAAQ,IAAY,GAC7B,EAAK,KAAO,EACZ,EAAK,KAAO,EACZ,EAAK,KAAO,EACZ,EAAW,EAIX,OADI,GAAO,GAAI,OAAM,UAAU,QACtB,EAAI,EAAG,EAAI,EAAK,OAAQ,IAC/B,EAAK,GAAK,UAAU,GAGtB,EAAK,GAAK,EAAQ,OAAO,EAAK,IAE1B,AAAa,MAAO,GAAK,IAAzB,UAEF,EAAK,QAAQ,MAIf,GAAI,GAAQ,EACZ,EAAK,GAAK,EAAK,GAAG,QAAQ,gBAAiB,SAAS,EAAO,GAEzD,GAAI,IAAU,KAAM,MAAO,GAC3B,IACA,GAAI,GAAY,EAAQ,WAAW,GACnC,GAAI,AAAe,MAAO,IAAtB,YACF,GAAI,GAAM,EAAK,GACf,EAAQ,EAAU,KAAK,EAAM,GAG7B,EAAK,OAAO,EAAO,GACnB,IAEF,MAAO,KAIT,EAAQ,WAAW,KAAK,EAAM,GAE9B,GAAI,GAAQ,EAAM,KAAO,EAAQ,KAAO,QAAQ,IAAI,KAAK,SACzD,EAAM,MAAM,EAAM,IAGpB,SAAM,UAAY,EAClB,EAAM,QAAU,EAAQ,QAAQ,GAChC,EAAM,UAAY,EAAQ,YAC1B,EAAM,MAAQ,GAAY,GAC1B,EAAM,QAAU,GAGZ,AAAe,MAAO,GAAQ,MAA9B,YACF,EAAQ,KAAK,GAGf,EAAQ,UAAU,KAAK,GAEhB,EAGT,cACE,GAAI,GAAQ,EAAQ,UAAU,QAAQ,MACtC,MAAI,KAAU,GACZ,GAAQ,UAAU,OAAO,EAAO,GACzB,IAEA,GAYX,YAAgB,GACd,EAAQ,KAAK,GAEb,EAAQ,MAAQ,GAChB,EAAQ,MAAQ,GAEhB,GAAI,GACA,EAAS,OAAO,IAAe,SAAW,EAAa,IAAI,MAAM,UACjE,EAAM,EAAM,OAEhB,IAAK,EAAI,EAAG,EAAI,EAAK,IACnB,AAAI,CAAC,EAAM,IACX,GAAa,EAAM,GAAG,QAAQ,MAAO,OACrC,AAAI,EAAW,KAAO,IACpB,EAAQ,MAAM,KAAK,GAAI,QAAO,IAAM,EAAW,OAAO,GAAK,MAE3D,EAAQ,MAAM,KAAK,GAAI,QAAO,IAAM,EAAa,OAIrD,IAAK,EAAI,EAAG,EAAI,EAAQ,UAAU,OAAQ,KACxC,GAAI,GAAW,EAAQ,UAAU,GACjC,EAAS,QAAU,EAAQ,QAAQ,EAAS,YAUhD,cACE,EAAQ,OAAO,IAWjB,YAAiB,GACf,GAAI,EAAK,EAAK,OAAS,KAAO,IAC5B,MAAO,GAET,GAAI,GAAG,EACP,IAAK,EAAI,EAAG,EAAM,EAAQ,MAAM,OAAQ,EAAI,EAAK,IAC/C,GAAI,EAAQ,MAAM,GAAG,KAAK,GACxB,MAAO,GAGX,IAAK,EAAI,EAAG,EAAM,EAAQ,MAAM,OAAQ,EAAI,EAAK,IAC/C,GAAI,EAAQ,MAAM,GAAG,KAAK,GACxB,MAAO,GAGX,MAAO,GAWT,YAAgB,GACd,MAAI,aAAe,OAAc,EAAI,OAAS,EAAI,QAC3C,KC/NT,mBAMA,GAAU,GAAO,QAAkB,KACnC,GAAQ,IAAM,GACd,GAAQ,WAAa,GACrB,GAAQ,KAAO,GACf,GAAQ,KAAO,GACf,GAAQ,UAAY,GACpB,GAAQ,QAAU,AAAe,MAAO,SAAtB,aACA,AAAe,MAAO,QAAO,SAA7B,YACE,OAAO,QAAQ,MACf,KAMpB,GAAQ,OAAS,CACf,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAClE,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAClE,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAClE,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAClE,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAClE,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAClE,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAClE,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAClE,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAClE,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAClE,UAAW,UAAW,UAAW,UAAW,UAAW,WAWzD,cAIE,MAAI,OAAO,SAAW,aAAe,OAAO,SAAW,OAAO,QAAQ,OAAS,WACtE,GAIL,MAAO,YAAc,aAAe,UAAU,WAAa,UAAU,UAAU,cAAc,MAAM,yBAC9F,GAKD,MAAO,WAAa,aAAe,SAAS,iBAAmB,SAAS,gBAAgB,OAAS,SAAS,gBAAgB,MAAM,kBAErI,MAAO,SAAW,aAAe,OAAO,SAAY,QAAO,QAAQ,SAAY,OAAO,QAAQ,WAAa,OAAO,QAAQ,QAG1H,MAAO,YAAc,aAAe,UAAU,WAAa,UAAU,UAAU,cAAc,MAAM,mBAAqB,SAAS,OAAO,GAAI,KAAO,IAEnJ,MAAO,YAAc,aAAe,UAAU,WAAa,UAAU,UAAU,cAAc,MAAM,sBAOxG,GAAQ,WAAW,EAAI,SAAS,GAC9B,IACE,MAAO,MAAK,UAAU,SACf,GACP,MAAO,+BAAiC,EAAI,UAWhD,YAAoB,GAClB,GAAI,GAAY,KAAK,UASrB,GAPA,EAAK,GAAM,GAAY,KAAO,IAC1B,KAAK,UACJ,GAAY,MAAQ,KACrB,EAAK,GACJ,GAAY,MAAQ,KACrB,IAAM,GAAQ,SAAS,KAAK,MAE5B,EAAC,GAEL,GAAI,GAAI,UAAY,KAAK,MACzB,EAAK,OAAO,EAAG,EAAG,EAAG,kBAKrB,GAAI,GAAQ,EACR,EAAQ,EACZ,EAAK,GAAG,QAAQ,cAAe,SAAS,GACtC,AAAI,AAAS,IAAT,MACJ,KACI,AAAS,IAAT,MAGF,GAAQ,MAIZ,EAAK,OAAO,EAAO,EAAG,IAUxB,cAGE,MAAO,AAAa,OAAO,UAApB,UACF,QAAQ,KACR,SAAS,UAAU,MAAM,KAAK,QAAQ,IAAK,QAAS,WAU3D,YAAc,GACZ,IACE,AAAI,AAAQ,GAAR,KACF,GAAQ,QAAQ,WAAW,SAE3B,GAAQ,QAAQ,MAAQ,QAEpB,KAUV,cACE,GAAI,GACJ,IACE,EAAI,GAAQ,QAAQ,YACd,IAGR,MAAI,CAAC,GAAK,MAAO,UAAY,aAAe,OAAS,UACnD,GAAI,QAAQ,IAAI,OAGX,EAOT,GAAQ,OAAO,MAaf,cACE,IACE,MAAO,QAAO,mBACP,QCjMX,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,mBAIA,GAAI,IAAc,eACd,GAAe,gBAQnB,GAAU,GAAO,QAAkB,KACnC,GAAQ,KAAO,GACf,GAAQ,IAAM,GACd,GAAQ,WAAa,GACrB,GAAQ,KAAO,GACf,GAAQ,KAAO,GACf,GAAQ,UAAY,GAMpB,GAAQ,OAAS,CAAE,EAAG,EAAG,EAAG,EAAG,EAAG,GAElC,IACE,AAAI,GAAwB,KACxB,IAAiB,GAAc,OAAS,GAC1C,IAAQ,OAAS,CACf,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACxE,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IACxE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACtE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACtE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,YAGrC,IAVH,OAoBN,GAAQ,YAAc,OAAO,KAAK,QAAQ,KAAK,OAAO,SAAU,GAC9D,MAAO,WAAW,KAAK,KACtB,OAAO,SAAU,EAAK,GAEvB,GAAI,GAAO,EACR,UAAU,GACV,cACA,QAAQ,YAAa,SAAU,EAAG,GAAK,MAAO,GAAE,gBAG/C,EAAM,QAAQ,IAAI,GACtB,MAAI,2BAA2B,KAAK,GAAM,EAAM,GAC3C,AAAI,6BAA6B,KAAK,GAAM,EAAM,GAClD,AAAI,IAAQ,OAAQ,EAAM,KAC1B,EAAM,OAAO,GAElB,EAAI,GAAQ,EACL,GACN,IAMH,cACE,MAAO,UAAY,IAAQ,YACvB,QAAQ,GAAQ,YAAY,QAC5B,GAAI,OAAO,QAAQ,OAAO,IAOhC,GAAQ,WAAW,EAAI,SAAS,GAC9B,YAAK,YAAY,OAAS,KAAK,UACxB,GAAK,QAAQ,EAAG,KAAK,aACzB,MAAM;AAAA,GAAM,IAAI,SAAS,GACxB,MAAO,GAAI,SACV,KAAK,MAOZ,GAAQ,WAAW,EAAI,SAAS,GAC9B,YAAK,YAAY,OAAS,KAAK,UACxB,GAAK,QAAQ,EAAG,KAAK,cAS9B,YAAoB,GAClB,GAAI,GAAO,KAAK,UACZ,EAAY,KAAK,UAErB,GAAI,GACF,GAAI,GAAI,KAAK,MACT,EAAY,MAAc,GAAI,EAAI,EAAI,OAAS,GAC/C,EAAS,KAAO,EAAY,MAAQ,EAAO,QAE/C,EAAK,GAAK,EAAS,EAAK,GAAG,MAAM;AAAA,GAAM,KAAK;AAAA,EAAO,GACnD,EAAK,KAAK,EAAY,KAAO,GAAQ,SAAS,KAAK,MAAQ,YAE3D,GAAK,GAAK,KAAY,EAAO,IAAM,EAAK,GAI5C,cACE,MAAI,IAAQ,YAAY,SACf,GAEA,GAAI,QAAO,cAAgB,IAQtC,cACE,MAAO,SAAQ,OAAO,MAAM,GAAK,OAAO,MAAM,GAAM,WAAa;AAAA,GAUnE,YAAc,GACZ,AAAI,AAAQ,GAAR,KAGF,MAAO,SAAQ,IAAI,MAEnB,QAAQ,IAAI,MAAQ,EAWxB,cACE,MAAO,SAAQ,IAAI,MAUrB,YAAe,GACb,EAAM,YAAc,GAGpB,OADI,GAAO,OAAO,KAAK,GAAQ,aACtB,EAAI,EAAG,EAAI,EAAK,OAAQ,IAC/B,EAAM,YAAY,EAAK,IAAM,GAAQ,YAAY,EAAK,IAQ1D,GAAQ,OAAO,QCzLf,mBAKA,AAAI,MAAO,UAAY,aAAe,QAAQ,OAAS,WACrD,GAAO,QAAkB,KAEzB,GAAO,QAAkB,OCR3B,+BAAwB,EAAU,GAEhC,AAAI,MAAO,IAAY,WACrB,GAAU,CAAE,QAAS,IAGvB,KAAK,kBAAoB,KAAK,MAAM,KAAK,UAAU,IACnD,KAAK,UAAY,EACjB,KAAK,SAAW,GAAW,GAC3B,KAAK,cAAgB,GAAW,EAAQ,cAAgB,SACxD,KAAK,IAAM,KACX,KAAK,QAAU,GACf,KAAK,UAAY,EACjB,KAAK,kBAAoB,KACzB,KAAK,oBAAsB,KAC3B,KAAK,SAAW,KAChB,KAAK,gBAAkB,KAEnB,KAAK,SAAS,SAChB,MAAK,gBAAkB,KAAK,UAAU,MAAM,IAGhD,GAAO,QAAU,GAEjB,GAAe,UAAU,MAAQ,WAC/B,KAAK,UAAY,EACjB,KAAK,UAAY,KAAK,mBAGxB,GAAe,UAAU,KAAO,WAC9B,AAAI,KAAK,UACP,aAAa,KAAK,UAGpB,KAAK,UAAkB,GACvB,KAAK,gBAAkB,MAGzB,GAAe,UAAU,MAAQ,SAAS,GAKxC,GAJI,KAAK,UACP,aAAa,KAAK,UAGhB,CAAC,EACH,MAAO,GAET,GAAI,GAAc,GAAI,QAAO,UAC7B,GAAI,GAAO,EAAc,KAAK,iBAAmB,KAAK,cACpD,YAAK,QAAQ,QAAQ,GAAI,OAAM,oCACxB,GAGT,KAAK,QAAQ,KAAK,GAElB,GAAI,GAAU,KAAK,UAAU,QAC7B,GAAI,IAAY,OACd,GAAI,KAAK,gBAEP,KAAK,QAAQ,OAAO,KAAK,QAAQ,OAAS,EAAG,KAAK,QAAQ,QAC1D,KAAK,UAAY,KAAK,gBAAgB,MAAM,GAC5C,EAAU,KAAK,UAAU,YAEzB,OAAO,GAIX,GAAI,GAAO,KACP,EAAQ,WAAW,WACrB,EAAK,YAED,EAAK,qBACP,GAAK,SAAW,WAAW,WACzB,EAAK,oBAAoB,EAAK,YAC7B,EAAK,mBAEJ,EAAK,SAAS,OACd,EAAK,SAAS,SAIpB,EAAK,IAAI,EAAK,YACb,GAEH,MAAI,MAAK,SAAS,OACd,EAAM,QAGH,IAGT,GAAe,UAAU,QAAU,SAAS,EAAI,GAC9C,KAAK,IAAM,EAEP,GACE,GAAW,SACb,MAAK,kBAAoB,EAAW,SAElC,EAAW,IACb,MAAK,oBAAsB,EAAW,KAI1C,GAAI,GAAO,KACX,AAAI,KAAK,qBACP,MAAK,SAAW,WAAW,WACzB,EAAK,uBACJ,EAAK,oBAGV,KAAK,gBAAkB,GAAI,QAAO,UAElC,KAAK,IAAI,KAAK,YAGhB,GAAe,UAAU,IAAM,SAAS,GACtC,QAAQ,IAAI,4CACZ,KAAK,QAAQ,IAGf,GAAe,UAAU,MAAQ,SAAS,GACxC,QAAQ,IAAI,8CACZ,KAAK,QAAQ,IAGf,GAAe,UAAU,MAAQ,GAAe,UAAU,IAE1D,GAAe,UAAU,OAAS,WAChC,MAAO,MAAK,SAGd,GAAe,UAAU,SAAW,WAClC,MAAO,MAAK,WAGd,GAAe,UAAU,UAAY,WACnC,GAAI,KAAK,QAAQ,SAAW,EAC1B,MAAO,MAOT,OAJI,GAAS,GACT,EAAY,KACZ,EAAiB,EAEZ,EAAI,EAAG,EAAI,KAAK,QAAQ,OAAQ,KACvC,GAAI,GAAQ,KAAK,QAAQ,GACrB,EAAU,EAAM,QAChB,EAAS,GAAO,IAAY,GAAK,EAErC,EAAO,GAAW,EAEd,GAAS,GACX,GAAY,EACZ,EAAiB,GAIrB,MAAO,MC5JT,iBAAI,IAAyB,KAE7B,GAAQ,UAAY,SAAS,GAC3B,GAAI,GAAW,GAAQ,SAAS,GAChC,MAAO,IAAI,IAAe,EAAU,CAChC,QAAS,GAAW,EAAQ,QAC5B,MAAO,GAAW,EAAQ,MAC1B,aAAc,GAAW,EAAQ,gBAIvC,GAAQ,SAAW,SAAS,GAC1B,GAAI,YAAmB,OACrB,MAAO,GAAG,OAAO,GAGnB,GAAI,GAAO,CACT,QAAS,GACT,OAAQ,EACR,WAAY,EAAI,IAChB,WAAY,SACZ,UAAW,IAEb,OAAS,KAAO,GACd,EAAK,GAAO,EAAQ,GAGtB,GAAI,EAAK,WAAa,EAAK,WACzB,KAAM,IAAI,OAAM,yCAIlB,OADI,GAAW,GACN,EAAI,EAAG,EAAI,EAAK,QAAS,IAChC,EAAS,KAAK,KAAK,cAAc,EAAG,IAGtC,MAAI,IAAW,EAAQ,SAAW,CAAC,EAAS,QAC1C,EAAS,KAAK,KAAK,cAAc,EAAG,IAItC,EAAS,KAAK,SAAS,EAAE,GACvB,MAAO,GAAI,IAGN,GAGT,GAAQ,cAAgB,SAAS,EAAS,GACxC,GAAI,GAAU,EAAK,UACd,KAAK,SAAW,EACjB,EAEA,EAAU,KAAK,MAAM,EAAS,EAAK,WAAa,KAAK,IAAI,EAAK,OAAQ,IAC1E,SAAU,KAAK,IAAI,EAAS,EAAK,YAE1B,GAGT,GAAQ,KAAO,SAAS,EAAK,EAAS,GAMpC,GALI,YAAmB,QACrB,GAAU,EACV,EAAU,MAGR,CAAC,GACH,EAAU,GACV,OAAS,KAAO,GACd,AAAI,MAAO,GAAI,IAAS,YACtB,EAAQ,KAAK,GAKnB,OAAS,GAAI,EAAG,EAAI,EAAQ,OAAQ,KAClC,GAAI,GAAW,EAAQ,GACnB,EAAW,EAAI,GAEnB,EAAI,GAAU,SAAsB,GAClC,GAAI,GAAW,GAAQ,UAAU,GAC7B,EAAW,MAAM,UAAU,MAAM,KAAK,UAAW,GACjD,EAAW,EAAK,MAEpB,EAAK,KAAK,SAAS,GACjB,AAAI,EAAG,MAAM,IAGT,IACF,WAAU,GAAK,EAAG,aAEpB,EAAS,MAAM,KAAM,cAGvB,EAAG,QAAQ,WACT,EAAS,MAAM,EAAK,MAEtB,KAAK,EAAK,GACZ,EAAI,GAAQ,QAAU,MCjG1B,sBAAO,QAAkB,OCAzB,mBACA,GAAI,IAAkB,KAEtB,YAAe,EAAI,GACjB,WAAa,EAAS,GACpB,GAAI,GAAU,GAAQ,GAGtB,AAAM,aAAe,IACnB,GAAQ,UAAY,IAGtB,GAAI,GAAK,GAAQ,UAAU,GAO3B,WAAc,GACZ,EAAO,GAAO,GAAI,OAAM,YAG1B,WAAiB,EAAK,GACpB,GAAI,EAAI,MACN,EAAK,GACL,OAGF,AAAK,EAAG,MAAM,GAEH,EAAQ,SACjB,EAAQ,QAAQ,EAAK,GAFrB,EAAO,EAAG,aAMd,WAAoB,GAClB,GAAI,GAEJ,IACE,EAAM,EAAG,EAAM,SACR,GACP,EAAQ,EAAK,GACb,OAGF,QAAQ,QAAQ,GACb,KAAK,GACL,MAAM,SAAiB,GACtB,EAAQ,EAAK,KAInB,EAAG,QAAQ,GAGb,MAAO,IAAI,SAAQ,GAGrB,GAAO,QAAU,KC3DjB,sBAAM,IAAgB,KAChB,GAAQ,AAAQ,KAAS,eAGzB,GAAc,GACd,GAAc,EACd,GAAkB,GAClB,GAAS,EAEf,GAAO,QAAU,GAAU,GAE3B,YAAuB,GACrB,MAAK,GAEH,EAAI,OAAS,4BACb,EAAI,UAAY,6CAHD,GAOnB,YAAe,GACb,AAAK,GACH,GAAgB,MAGlB,iBAA0B,EAAK,EAAO,IACpC,GAAM,GAAY,OAAO,OACvB,CAGE,WAAY,GACZ,QAAS,GACT,OAAQ,GACR,cAAe,IAEjB,EAAK,OAGP,AAAI,EAAK,SACP,GAAU,QAAU,AAAC,IACnB,EAAK,QAAQ,EAAO,GAChB,EAAK,OAAS,EAAK,MAAM,SAC3B,EAAK,MAAM,QAAQ,KAKzB,IACE,MAAO,MAAM,IAAM,MAAO,EAAM,KAC9B,GAAM,CAAE,SAAS,OAAU,EAC3B,IAEE,GAAM,GAAM,KAAM,GAAM,EAAK,GAE7B,GADA,GAAM,YAAa,EAAI,QAClB,EAAI,QAAU,KAAO,EAAI,OAAS,KAAQ,EAAI,SAAW,KAE5D,GAAM,GAAa,SAAS,EAAI,QAAQ,IAAI,eAAgB,IAC5D,GAAI,GACF,GAAI,EAAa,EAAU,cACzB,MAAO,GAEP,KAAM,IAAI,SAAQ,AAAC,GAAM,WAAW,EAAG,EAAa,MAGxD,KAAM,IAAI,IAAc,OAExB,OAAO,SAEF,GACP,GAAM,GAAc,GAAc,GAC5B,EAAU,CAAC,GAAe,GAAW,EAAU,QAOrD,GANA,GACE,GAAG,KAAU,qBAAuB,EAAI,YACtC,EAAU,WAAa,KAEzB,GAEE,EACF,MAAO,GAAK,GAEd,KAAM,KAEP,SACI,GACP,GAAI,YAAe,IACjB,MAAO,GAAI,IAEb,KAAM,IAIV,OAAW,KAAO,QAAO,KAAK,GAC5B,EAAW,GAAO,EAAM,GAE1B,SAAW,QAAU,EAEd,EA/FT,oBAkG4B,OAC1B,YAAY,GACV,MAAM,EAAI,YAEV,AAAI,MAAM,mBACR,MAAM,kBAAkB,KAAM,IAGhC,KAAK,KAAO,KAAK,YAAY,KAC7B,KAAK,IAAM,EAGX,KAAK,KAAO,KAAK,OAAS,KAAK,WAAa,EAAI,OAChD,KAAK,IAAM,EAAI,MAInB,GAAQ,cAAgB,KCnHxB,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,GAC1C,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,UAAU,OAAQ,IACpC,EAAS,GAAO,KAAM,EAAQ,UAAU,IAE1C,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,gCAGA,GAAM,IAAkB,KAElB,GAAM,OAAO,OACb,GAAS,OAAO,UAChB,GAAoB,OAAO,oBAC3B,GAAc,OAAO,cACrB,GAAU,OAAO,UACjB,GAAU,OAAO,WACjB,GAAoB,OAAO,kBAC3B,GAAW,OAAO,WAClB,GAAQ,OAAO,SACf,GAAoB,OAAO,kBAE3B,GAAc,IAAM,EAhB1B,SA2BE,YAAa,GAOX,GANI,MAAO,IAAY,UACrB,GAAU,CAAE,IAAK,IAEd,GACH,GAAU,IAER,EAAQ,KAAQ,OAAO,GAAQ,KAAQ,UAAY,EAAQ,IAAM,GACnE,KAAM,IAAI,WAAU,qCAEtB,GAAM,GAAM,KAAK,IAAO,EAAQ,KAAO,SAEjC,EAAK,EAAQ,QAAU,GAG7B,GAFA,KAAK,IAAsB,MAAO,IAAO,WAAc,GAAc,EACrE,KAAK,IAAe,EAAQ,OAAS,GACjC,EAAQ,QAAU,MAAO,GAAQ,QAAW,SAC9C,KAAM,IAAI,WAAU,2BACtB,KAAK,IAAW,EAAQ,QAAU,EAClC,KAAK,IAAW,EAAQ,QACxB,KAAK,IAAqB,EAAQ,gBAAkB,GACpD,KAAK,IAAqB,EAAQ,gBAAkB,GACpD,KAAK,WAIH,KAAK,GACP,GAAI,MAAO,IAAO,UAAY,EAAK,EACjC,KAAM,IAAI,WAAU,qCAEtB,KAAK,IAAO,GAAM,SAClB,GAAK,SAEH,OACF,MAAO,MAAK,OAGV,YAAY,GACd,KAAK,IAAe,CAAC,CAAC,KAEpB,cACF,MAAO,MAAK,OAGV,QAAQ,GACV,GAAI,MAAO,IAAO,SAChB,KAAM,IAAI,WAAU,wCAEtB,KAAK,IAAW,EAChB,GAAK,SAEH,UACF,MAAO,MAAK,OAIV,kBAAkB,GACpB,AAAI,MAAO,IAAO,YAChB,GAAK,IAEH,IAAO,KAAK,KACd,MAAK,IAAqB,EAC1B,KAAK,IAAU,EACf,KAAK,IAAU,QAAQ,IACrB,EAAI,OAAS,KAAK,IAAmB,EAAI,MAAO,EAAI,KACpD,KAAK,KAAW,EAAI,UAGxB,GAAK,SAEH,oBAAsB,MAAO,MAAK,OAElC,UAAY,MAAO,MAAK,OACxB,aAAe,MAAO,MAAK,IAAU,OAEzC,SAAU,EAAI,GACZ,EAAQ,GAAS,KACjB,OAAS,GAAS,KAAK,IAAU,KAAM,IAAW,OAChD,GAAM,GAAO,EAAO,KACpB,GAAY,KAAM,EAAI,EAAQ,GAC9B,EAAS,GAIb,QAAS,EAAI,GACX,EAAQ,GAAS,KACjB,OAAS,GAAS,KAAK,IAAU,KAAM,IAAW,OAChD,GAAM,GAAO,EAAO,KACpB,GAAY,KAAM,EAAI,EAAQ,GAC9B,EAAS,GAIb,OACE,MAAO,MAAK,IAAU,UAAU,IAAI,GAAK,EAAE,KAG7C,SACE,MAAO,MAAK,IAAU,UAAU,IAAI,GAAK,EAAE,OAG7C,QACE,AAAI,KAAK,KACL,KAAK,KACL,KAAK,IAAU,QACjB,KAAK,IAAU,QAAQ,GAAO,KAAK,IAAS,EAAI,IAAK,EAAI,QAG3D,KAAK,IAAS,GAAI,KAClB,KAAK,IAAY,GAAI,IACrB,KAAK,IAAU,EAGjB,OACE,MAAO,MAAK,IAAU,IAAI,GACxB,GAAQ,KAAM,GAAO,GAAQ,CAC3B,EAAG,EAAI,IACP,EAAG,EAAI,MACP,EAAG,EAAI,IAAO,GAAI,QAAU,KAC3B,UAAU,OAAO,GAAK,GAG7B,UACE,MAAO,MAAK,IAGd,IAAK,EAAK,EAAO,GAGf,GAFA,EAAS,GAAU,KAAK,IAEpB,GAAU,MAAO,IAAW,SAC9B,KAAM,IAAI,WAAU,2BAEtB,GAAM,GAAM,EAAS,KAAK,MAAQ,EAC5B,EAAM,KAAK,IAAmB,EAAO,GAE3C,GAAI,KAAK,IAAO,IAAI,IAClB,GAAI,EAAM,KAAK,IACb,UAAI,KAAM,KAAK,IAAO,IAAI,IACnB,GAIT,GAAM,GAAO,AADA,KAAK,IAAO,IAAI,GACX,MAIlB,MAAI,MAAK,KACF,MAAK,KACR,KAAK,IAAS,EAAK,EAAK,QAG5B,EAAK,IAAM,EACX,EAAK,OAAS,EACd,EAAK,MAAQ,EACb,KAAK,KAAW,EAAM,EAAK,OAC3B,EAAK,OAAS,EACd,KAAK,IAAI,GACT,GAAK,MACE,GAGT,GAAM,GAAM,GAAI,IAAM,EAAK,EAAO,EAAK,EAAK,GAG5C,MAAI,GAAI,OAAS,KAAK,IAChB,MAAK,KACP,KAAK,IAAS,EAAK,GAEd,IAGT,MAAK,KAAW,EAAI,OACpB,KAAK,IAAU,QAAQ,GACvB,KAAK,IAAO,IAAI,EAAK,KAAK,IAAU,MACpC,GAAK,MACE,IAGT,IAAK,GACH,GAAI,CAAC,KAAK,IAAO,IAAI,GAAM,MAAO,GAClC,GAAM,GAAM,KAAK,IAAO,IAAI,GAAK,MACjC,MAAO,CAAC,GAAQ,KAAM,GAGxB,IAAK,GACH,MAAO,IAAI,KAAM,EAAK,IAGxB,KAAM,GACJ,MAAO,IAAI,KAAM,EAAK,IAGxB,MACE,GAAM,GAAO,KAAK,IAAU,KAC5B,MAAK,GAGL,IAAI,KAAM,GACH,EAAK,OAHH,KAMX,IAAK,GACH,GAAI,KAAM,KAAK,IAAO,IAAI,IAG5B,KAAM,GAEJ,KAAK,QAEL,GAAM,GAAM,KAAK,MAEjB,OAAS,GAAI,EAAI,OAAS,EAAG,GAAK,EAAG,KACnC,GAAM,GAAM,EAAI,GACV,EAAY,EAAI,GAAK,EAC3B,GAAI,IAAc,EAEhB,KAAK,IAAI,EAAI,EAAG,EAAI,QAEpB,GAAM,GAAS,EAAY,EAE3B,AAAI,EAAS,GACX,KAAK,IAAI,EAAI,EAAG,EAAI,EAAG,KAM/B,QACE,KAAK,IAAO,QAAQ,CAAC,EAAO,IAAQ,GAAI,KAAM,EAAK,OAIjD,GAAM,CAAC,EAAM,EAAK,KACtB,GAAM,GAAO,EAAK,IAAO,IAAI,GAC7B,GAAI,GACF,GAAM,GAAM,EAAK,MACjB,GAAI,GAAQ,EAAM,IAEhB,GADA,GAAI,EAAM,GACN,CAAC,EAAK,IACR,WAEF,AAAI,IACE,GAAK,KACP,GAAK,MAAM,IAAM,KAAK,OACxB,EAAK,IAAU,YAAY,IAG/B,MAAO,GAAI,QAIT,GAAU,CAAC,EAAM,KACrB,GAAI,CAAC,GAAQ,CAAC,EAAI,QAAU,CAAC,EAAK,IAChC,MAAO,GAET,GAAM,GAAO,KAAK,MAAQ,EAAI,IAC9B,MAAO,GAAI,OAAS,EAAO,EAAI,OAC3B,EAAK,KAAa,EAAO,EAAK,KAG9B,GAAO,IACX,GAAI,EAAK,IAAU,EAAK,IACtB,OAAS,GAAS,EAAK,IAAU,KAC/B,EAAK,IAAU,EAAK,KAAQ,IAAW,OAIvC,GAAM,GAAO,EAAO,KACpB,GAAI,EAAM,GACV,EAAS,IAKT,GAAM,CAAC,EAAM,KACjB,GAAI,GACF,GAAM,GAAM,EAAK,MACjB,AAAI,EAAK,KACP,EAAK,IAAS,EAAI,IAAK,EAAI,OAE7B,EAAK,KAAW,EAAI,OACpB,EAAK,IAAO,OAAO,EAAI,KACvB,EAAK,IAAU,WAAW,KApT9B,SAyTE,YAAa,EAAK,EAAO,EAAQ,EAAK,GACpC,KAAK,IAAM,EACX,KAAK,MAAQ,EACb,KAAK,OAAS,EACd,KAAK,IAAM,EACX,KAAK,OAAS,GAAU,IAItB,GAAc,CAAC,EAAM,EAAI,EAAM,KACnC,GAAI,GAAM,EAAK,MACf,AAAI,GAAQ,EAAM,IAChB,IAAI,EAAM,GACL,EAAK,KACR,GAAM,SAEN,GACF,EAAG,KAAK,EAAO,EAAI,MAAO,EAAI,IAAK,IAGvC,GAAO,QAAU,KC7UjB,mBACA,GAAI,IAAkB,KAEtB,YAAe,EAAI,GACjB,WAAa,EAAS,GACpB,GAAI,GAAU,GAAQ,GAClB,EAAK,GAAQ,UAAU,GAO3B,WAAc,GACZ,EAAO,GAAO,GAAI,OAAM,YAG1B,WAAiB,EAAK,GACpB,GAAI,EAAI,MACN,EAAK,GACL,OAGF,AAAK,EAAG,MAAM,GAEH,EAAQ,SACjB,EAAQ,QAAQ,EAAK,GAFrB,EAAO,EAAG,aAMd,WAAoB,GAClB,GAAI,GAEJ,IACE,EAAM,EAAG,EAAM,SACR,GACP,EAAQ,EAAK,GACb,OAGF,QAAQ,QAAQ,GACb,KAAK,GACL,MAAM,SAAiB,GACtB,EAAQ,EAAK,KAInB,EAAG,QAAQ,GAGb,MAAO,IAAI,SAAQ,GAGrB,GAAO,QAAU,KCrDjB,2BACA,OAAO,eAAe,GAAS,aAAc,CAAE,MAAO,KACtD,YAAkB,EAAM,GACpB,MAAO,IAAI,SAAQ,CAAC,EAAS,KACzB,EAAS,SAAS,EAAM,CAAE,IAAK,IAAQ,CAAC,EAAK,KACzC,GAAI,EACA,MAAO,GAAO,GAClB,EAAQ,OAIpB,GAAQ,QAAU,KCXlB,2BACA,OAAO,eAAe,GAAS,aAAc,CAAE,MAAO,KACtD,YAAkB,EAAM,GACpB,MAAO,IAAI,SAAQ,CAAC,EAAS,KACzB,EAAS,SAAS,EAAM,CAAE,IAAK,IAAQ,CAAC,EAAK,KACzC,GAAI,EACA,MAAO,GAAO,GAClB,EAAQ,OAIpB,GAAQ,QAAU,KCXlB,2BACA,GAAI,IAAmB,IAAQ,GAAK,iBAAoB,SAAU,GAC9D,MAAQ,IAAO,EAAI,WAAc,EAAM,CAAE,QAAW,IAExD,OAAO,eAAe,GAAS,aAAc,CAAE,MAAO,KACtD,GAAM,IAAQ,GAAwB,gBAChC,GAAc,GAAwB,MACtC,GAAgB,GAAwB,MACxC,GAAa,GAAwB,MACrC,GAAa,GAAwB,MACrC,GAAa,CAAE,IAAK,KACtB,GACA,GACJ,KACA,kBAA0B,EAAM,EAAU,IACtC,GAAM,CAAE,OAAO,GAAO,mBAAmB,IAAK,eAAe,GAAO,YAAY,CAAE,WAAY,GAAI,QAAS,EAAG,OAAQ,GAAK,WAAW,GAAM,SAAY,EAClJ,CAAE,QAAO,WAAY,EACrB,CAAE,MAAO,GAAQ,QAAS,GAAW,SACrC,CAAE,MAAO,GAAQ,QAAS,GAAW,SAC3C,GAAI,EACA,EAAM,IAAI,QAGV,GAAM,GAAK,EAAM,IAAI,GACrB,GAAI,EACA,MAAO,MAAM,GAErB,GAAM,GAAK,WACP,GAAM,GAAM,KAAM,IAAc,QAAQ,IAAM,EAAQ,EAAM,GAAW,GACjE,EAAM,EAAI,KAAK,MAAM,KAAK,SAAW,EAAI,SACzC,EAAM,KAAK,IAAI,EAAI,IAAK,GAC9B,SAAM,IAAI,EAAM,EAAI,QAAS,EAAM,KAC5B,EAAI,YAEf,SAAM,IAAI,EAAM,EAAG,KACZ,EAEX,GAAQ,QAAU,GAClB,cACI,GAAS,GAAI,IAAY,QAAQ,IACjC,GAAS,GAAI,IAAY,QAAQ,IAErC,GAAQ,WAAa,KC1CrB,2BACA,OAAO,eAAe,GAAS,aAAc,CAAE,MAAO,KACtD,GAAI,IAAwB,KAC5B,GAAQ,QAAU,GAAc,UCHhC,cACA,GAAQ,aAAe,OAAO,kBCD9B,sBAAM,CAAE,SAAiB,eACnB,CAAE,UAAQ,UAAkB,eAC5B,GAAU,AAAQ,KAA4B,QAC9C,CAAE,iBAAyB,KAEjC,GAAO,QAAU,GAEjB,GAAM,IAAa,GAAO,GAAI,IAAO,IAAO,EAE5C,YAAe,GACb,AAAK,GACH,GAAgB,MAElB,GAAM,CAAE,WAAY,EAEpB,iBAA8B,EAAK,GACjC,GAAM,GAAS,GAAM,GACf,EAAe,EAAO,KAE5B,AAAI,AADO,GAAK,EAAO,YACZ,GACJ,IAAM,GAAO,IAClB,EAAK,QAAU,GAAI,GAAQ,EAAK,SAC3B,EAAK,QAAQ,IAAI,SACpB,EAAK,QAAQ,IAAI,OAAQ,EAAO,MAElC,EAAK,SAAW,SAChB,EAAO,KAAO,KAAM,IAAQ,EAAO,UAC/B,EAAO,MACT,GAAO,MAAQ,IAAI,EAAO,QAE5B,EAAM,GAAO,IAEf,GAAM,GAAM,KAAM,GAAM,EAAK,GAU7B,GAPA,EAAI,IAAgB,EACpB,OAAO,eAAe,EAAK,MAAO,CAChC,MACE,MAAO,GAAO,QAId,GAAW,EAAI,SACjB,GAAM,GAAe,OAAO,OAAO,GAAI,GACvC,EAAa,QAAU,GAAI,GAAQ,EAAK,SAKtC,GAAI,SAAW,KACb,GAAI,SAAW,KAAO,EAAI,SAAW,MAAQ,EAAK,SAAW,SAE/D,GAAa,OAAS,MACtB,EAAa,KAAO,KACpB,EAAa,QAAQ,OAAO,mBAM9B,GAAM,GAAW,EAAI,QAAQ,IAAI,YAC3B,EAAiB,GAAM,GAC7B,MAAI,GAAe,OAAS,EAAO,MACjC,GAAe,KAAO,GAExB,EAAa,QAAQ,IAAI,OAAQ,EAAe,MAE5C,EAAK,YACP,EAAK,WAAW,EAAK,GAGhB,EAAe,GAAO,GAAiB,GAEhD,MAAO,GAGT,OAAW,KAAO,QAAO,KAAK,GAC5B,EAAe,GAAO,EAAM,GAG9B,SAAe,QAAU,EAElB,KClFT,sBAAM,CAAC,MAAO,IAAoB,eAC5B,GAAoB,KACpB,GAAQ,AAAQ,KAAS,iBACzB,GAA0B,KAC1B,GAA8B,KAC9B,GAAoB,eAEpB,CAAC,eAAc,GACf,CAAC,oBAAmB,GAEpB,GAAgB,CACrB,WAAY,IACZ,eAAgB,GAChB,QAAS,IACT,kBAAmB,IACnB,2BAA4B,KAGzB,GACA,GAEJ,YAAmC,GAClC,MAAQ,IACP,IACC,IAAM,mBAAoB,GAAI,IAAU,IAG3C,YAAoC,GACnC,MAAQ,IACP,IACC,IAAM,oBAAqB,GAAI,IAAW,IAG7C,YAAkB,EAAK,GACtB,MAAO,SAAS,KAAK,GAClB,GAA2B,GAC3B,GAA0B,GAG9B,YAA0B,EAAO,EAAY,IAC5C,MAAO,gBAA2B,EAAK,EAAO,IAC7C,AAAK,EAAK,OAET,GAAK,MAAQ,GAAS,EAAK,CAAC,oBAAkB,KAG/C,EAAK,SAAW,SAChB,EAAK,QAAU,GAAI,GAAM,QAAQ,EAAK,SAEtC,EAAK,QAAQ,IACZ,OACA,EAAK,QAAQ,IAAI,SAAW,GAAS,GAAK,MAK1C,EAAK,MACL,CAAE,GAAK,eAAgB,MACvB,MAAO,GAAK,MAAS,UACrB,CAAC,OAAO,SAAS,EAAK,OAEtB,GAAK,KAAO,KAAK,UAAU,EAAK,MAChC,EAAK,QAAQ,IAAI,eAAgB,oBACjC,EAAK,QAAQ,IAAI,iBAAkB,OAAO,WAAW,EAAK,QAI3D,EAAK,WAAa,CAAC,EAAK,KACvB,EAAa,MAAQ,GAAS,EAAI,QAAQ,IAAI,cAG/C,IACC,UAAM,QAAS,EAAK,QAAU,MAAO,GAC9B,KAAM,GAAM,EAAK,SAChB,GACR,QAAI,IAAM,EACV,EAAI,KAAO,EACL,IAKT,YAAe,EAAO,GACrB,AAAK,GACJ,GAAgB,MAGjB,GAAM,GAAK,EAAM,QAOjB,GANI,GAGH,GAAQ,OAAO,OAAO,IAAI,IAAS,EAAG,GAAG,GAAO,EAAI,IAGjD,MAAO,IAAU,WACpB,KAAM,IAAI,OACT,gGAIF,SAAQ,GAAoB,GAC5B,EAAQ,GAAgB,GACxB,EAAQ,GAAiB,EAAO,GACzB,EAGR,GAAO,QAAU,KC1GjB,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,mBAuBA,GAAM,IAAa,cACb,GAAe,gBAErB,YAAc,GACZ,QAAQ,IAAI,mBAAmB,KAGjC,GAAM,IAAU;AAAA,EACV,GAAiB,gCACjB,GAAc,OACd,GAAiB,aAGvB,YAAgB,EAA4B,GAC1C,GAAM,GAAQ,QAAQ,GAAW,EAAQ,OACnC,EAAM,GAGZ,SAAI,WAAW,MAAM,IAAgB,QAAQ,SAAU,EAAM,GAE3D,GAAM,GAAc,EAAK,MAAM,IAE/B,GAAI,GAAe,MACjB,GAAM,GAAM,EAAY,GAEpB,EAAO,EAAY,IAAM,GACvB,EAAM,EAAI,OAAS,EACnB,EAAiB,EAAI,KAAO,KAAO,EAAI,KAAS,IAItD,AAAI,AAHmB,EAAI,KAAO,KAAO,EAAI,KAAS,KAGhC,EACpB,GAAM,EAAI,UAAU,EAAG,GAGnB,GACF,GAAM,EAAI,QAAQ,GAAa,MAIjC,EAAM,EAAI,OAGZ,EAAI,GAAO,MACN,AAAI,IACT,GAAI,iDAAiD,EAAM,MAAM,OAI9D,EAIT,YAAiB,GACf,GAAI,GAAa,GAAK,QAAQ,QAAQ,MAAO,QACzC,EAAyB,OACzB,EAAQ,GAEZ,AAAI,GACE,GAAQ,MAAQ,MAClB,GAAa,EAAQ,MAEnB,EAAQ,UAAY,MACtB,GAAW,EAAQ,UAEjB,EAAQ,OAAS,MACnB,GAAQ,KAIZ,IAEE,GAAM,GAAS,GAAM,GAAG,aAAa,EAAY,CAAE,aAAa,CAAE,UAElE,cAAO,KAAK,GAAQ,QAAQ,SAAU,GACpC,AAAK,OAAO,UAAU,eAAe,KAAK,QAAQ,IAAK,GAE5C,GACT,GAAI,IAAI,wEAFR,QAAQ,IAAI,GAAO,EAAO,KAMvB,CAAE,gBACF,GACP,MAAO,CAAE,MAAO,IAIpB,GAAO,QAAQ,OAAS,GACxB,GAAO,QAAQ,MAAQ,gHC1FkB,IAIrC,cACI,cACM,GAAI,WAAU,iDAMb,WACP,GAAM,GAAU,GAAa,IAAI,MACjC,GAAI,MAAO,IAAY,UACnB,KAAM,IAAI,WACN,0DACI,OAAS,KAAO,OAAS,MAAO,SAI5C,MAAO,KAGf,GAAqB,GAAY,UAAW,SAK5C,cACI,GAAM,GAAS,OAAO,OAAO,GAAY,WACzC,UAAY,KAAK,GACjB,GAAa,IAAI,EAAQ,IAClB,EAMX,YAA4B,GACxB,AAAI,GAAa,IAAI,KAAY,IAIjC,IAAa,IAAI,EAAQ,IACzB,EAAO,cAAuB,CAAE,KAAM,WAM1C,GAAM,IAAe,GAAI,SAGzB,OAAO,iBAAiB,GAAY,UAAW,CAC3C,QAAS,CAAE,WAAY,MAI3B,AAAI,MAAO,SAAW,YAAc,MAAO,QAAO,aAAgB,UAC9D,OAAO,eAAe,GAAY,UAAW,OAAO,YAAa,CAC7D,aAAc,GACd,MAAO,6BC1EX,cACI,GAAQ,IAAI,KAAM,SAMX,UACP,MAAO,IAAU,MAMd,QACH,GAAY,GAAU,SAOxB,GAAU,GAAI,SAKpB,YAAmB,GACf,GAAM,GAAS,GAAQ,IAAI,GAC3B,GAAI,GAAU,KACV,KAAM,IAAI,WACN,8DACI,IAAe,KAAO,OAAS,MAAO,MAIlD,MAAO,GAIX,OAAO,iBAAiB,GAAgB,UAAW,CAC/C,OAAQ,CAAE,WAAY,IACtB,MAAO,CAAE,WAAY,MAGzB,AAAI,MAAO,SAAW,YAAc,MAAO,QAAO,aAAgB,UAC9D,OAAO,eAAe,GAAgB,UAAW,OAAO,YAAa,CACjE,aAAc,GACd,MAAO,saC3Cf,QAAQ,IAEgE,GAC1D,GAAA,OAAA,OAAA,OAAA,YAEb,MAAO,IAAI,SAAW,CAAC,EAAmD,KAEzE,GAAI,GAAA,GACA,EAAwB,EACxB,EAA0B,GAExB,EAAyD,IAEzD,GAEJ,GAAA,GACA,EAAQ,KAMJ,EAAyC,IAE9C,EAAiB,KAAK,GAElB,EAAiB,QAAU,GAAe,EAAO,IAItD,OAAS,KAAS,GAIjB,GAFA,IAAA,AAEK,EAAc,OAFnB,QAIC,GAAI,GACH,EAID,AAFA,EAAiB,KAAM,GAAuC,EAAY,IAAA,AAErE,EAAc,QAFuD,QAIvB,EAErC,MAAO,GAAsB,EAAe,WC1D9D,OAAyB,6BACzB,GAAe,kBACf,GAAkB,SAClB,GAAiB,SACjB,GAAiB,oBCNjB,wBACE,MAAI,kBAAQ,IAAI,eAAZ,cAA0B,SAA1B,cAAkC,SAAlC,OAA4C,GACvC,QAAQ,IAAI,aAAa,OAezB,KAGX,GAAI,IACG,cACL,MAAI,OAAO,KAAiB,aAC1B,IAAe,MAGV,GDlBT,OAAgB,SAChB,GAAgB,SEThB,OAAwB,SACxB,GAA0B,SAEb,GAAQ,WAAc,IFQnC,OAAkB,SAClB,GAAmB,SAGnB,GAAmB,SGInB,GAAM,IAAc,GAAI,SAOlB,GAAW,GAAI,SAQrB,YAAY,GACR,GAAM,GAAO,GAAY,IAAI,GAC7B,eAAQ,OACJ,GAAQ,KACR,8CACA,GAEG,EAOX,YAAuB,GACnB,GAAI,EAAK,iBAAmB,MACxB,AACI,MAAO,UAAY,aACnB,MAAO,SAAQ,OAAU,YAEzB,QAAQ,MACJ,qEACA,EAAK,iBAGb,OAEJ,AAAI,CAAC,EAAK,MAAM,YAIhB,GAAK,SAAW,GACZ,MAAO,GAAK,MAAM,gBAAmB,YACrC,EAAK,MAAM,kBAcnB,YAAe,EAAa,GACxB,GAAY,IAAI,KAAM,CAClB,cACA,QACA,WAAY,EACZ,cAAe,EACf,SAAU,GACV,QAAS,GACT,iBAAkB,GAClB,gBAAiB,KACjB,UAAW,EAAM,WAAa,KAAK,QAIvC,OAAO,eAAe,KAAM,YAAa,CAAE,MAAO,GAAO,WAAY,KAGrE,GAAM,GAAO,OAAO,KAAK,GACzB,OAAS,GAAI,EAAG,EAAI,EAAK,OAAQ,EAAE,GAC/B,GAAM,GAAM,EAAK,GACjB,AAAM,IAAO,OACT,OAAO,eAAe,KAAM,EAAK,GAAyB,KAMtE,GAAM,UAAY,IAKV,QACA,MAAO,IAAG,MAAM,MAAM,SAOtB,UACA,MAAO,IAAG,MAAM,gBAOhB,iBACA,MAAO,IAAG,MAAM,eAMpB,eACI,GAAM,GAAgB,GAAG,MAAM,cAC/B,MAAI,IAAiB,KACV,GAEJ,CAAC,OAOR,QACA,MAAO,OAOP,mBACA,MAAO,OAOP,aACA,MAAO,OAOP,kBACA,MAAO,OAOP,cACA,MAAO,IAAG,MAAM,YAOpB,kBACI,GAAM,GAAO,GAAG,MAEhB,EAAK,QAAU,GACX,MAAO,GAAK,MAAM,iBAAoB,YACtC,EAAK,MAAM,mBAQnB,2BACI,GAAM,GAAO,GAAG,MAEhB,EAAK,QAAU,GACf,EAAK,iBAAmB,GACpB,MAAO,GAAK,MAAM,0BAA6B,YAC/C,EAAK,MAAM,+BAQf,WACA,MAAO,SAAQ,GAAG,MAAM,MAAM,aAO9B,cACA,MAAO,SAAQ,GAAG,MAAM,MAAM,aAOlC,iBACI,GAAc,GAAG,WAOjB,oBACA,MAAO,IAAG,MAAM,aAOhB,YACA,MAAO,SAAQ,GAAG,MAAM,MAAM,cAO9B,aACA,MAAO,IAAG,MAAM,cAQhB,cACA,MAAO,IAAG,MAAM,gBAQhB,gBACA,MAAO,IAAG,MAAM,YAEhB,cAAa,GACb,GAAI,CAAC,EACD,OAEJ,GAAM,GAAO,GAAG,MAEhB,EAAK,QAAU,GACX,MAAO,GAAK,MAAM,cAAiB,WACnC,GAAK,MAAM,aAAe,QAS9B,eACA,MAAO,CAAC,GAAG,MAAM,aAEjB,aAAY,GACZ,AAAK,GACD,GAAc,GAAG,QAWzB,eAMJ,OAAO,eAAe,GAAM,UAAW,cAAe,CAClD,MAAO,GACP,aAAc,GACd,SAAU,KAId,AAAI,MAAO,SAAW,aAAe,MAAO,QAAO,OAAU,aACzD,QAAO,eAAe,GAAM,UAAW,OAAO,MAAM,WAGpD,GAAS,IAAI,OAAO,MAAM,UAAW,KASzC,YAAkC,GAC9B,MAAO,CACH,MACI,MAAO,IAAG,MAAM,MAAM,IAE1B,IAAI,GACA,GAAG,MAAM,MAAM,GAAO,GAE1B,aAAc,GACd,WAAY,IAUpB,YAA8B,GAC1B,MAAO,CACH,QACI,GAAM,GAAQ,GAAG,MAAM,MACvB,MAAO,GAAM,GAAK,MAAM,EAAO,YAEnC,aAAc,GACd,WAAY,IAWpB,YAAuB,EAAW,GAC9B,GAAM,GAAO,OAAO,KAAK,GACzB,GAAI,EAAK,SAAW,EAChB,MAAO,GAIX,WAAqB,EAAa,GAC9B,EAAU,KAAK,KAAM,EAAa,GAGtC,EAAY,UAAY,OAAO,OAAO,EAAU,UAAW,CACvD,YAAa,CAAE,MAAO,EAAa,aAAc,GAAM,SAAU,MAIrE,OAAS,GAAI,EAAG,EAAI,EAAK,OAAQ,EAAE,GAC/B,GAAM,GAAM,EAAK,GACjB,GAAI,CAAE,KAAO,GAAU,YAEnB,GAAM,GAAS,MAAO,AADH,QAAO,yBAAyB,EAAO,GACzB,OAAU,WAC3C,OAAO,eACH,EAAY,UACZ,EACA,EACM,GAAqB,GACrB,GAAyB,KAK3C,MAAO,GASX,YAAoB,GAChB,GAAI,GAAS,MAAQ,IAAU,OAAO,UAClC,MAAO,IAGX,GAAI,GAAU,GAAS,IAAI,GAC3B,MAAI,IAAW,MACX,GAAU,GAAc,GAAW,OAAO,eAAe,IAAS,GAClE,GAAS,IAAI,EAAO,IAEjB,EAUJ,YAAmB,EAAa,GACnC,GAAM,GAAU,GAAW,OAAO,eAAe,IACjD,MAAO,IAAI,GAAQ,EAAa,GAS7B,YAAmB,GACtB,MAAO,IAAG,GAAO,iBAUd,YAAuB,EAAO,GACjC,GAAG,GAAO,WAAa,EAUpB,YAA0B,EAAO,GACpC,GAAG,GAAO,cAAgB,EAUvB,YAA4B,EAAO,GACtC,GAAG,GAAO,gBAAkB,ECvchC,GAAM,IAAe,GAAI,SAGnB,GAAU,EACV,GAAS,EACT,GAAY,EAOlB,YAAkB,GACd,MAAO,KAAM,MAAQ,MAAO,IAAM,SAStC,YAAsB,GAClB,GAAM,GAAY,GAAa,IAAI,GACnC,GAAI,GAAa,KACb,KAAM,IAAI,WACN,oEAGR,MAAO,GASX,YAAwC,GACpC,MAAO,CACH,MAEI,GAAI,GAAO,AADO,GAAa,MACV,IAAI,GACzB,KAAO,GAAQ,OACX,GAAI,EAAK,eAAiB,GACtB,MAAO,GAAK,SAEhB,EAAO,EAAK,KAEhB,MAAO,OAGX,IAAI,GACA,AAAI,MAAO,IAAa,YAAc,CAAC,GAAS,IAC5C,GAAW,MAEf,GAAM,GAAY,GAAa,MAG3B,EAAO,KACP,EAAO,EAAU,IAAI,GACzB,KAAO,GAAQ,MACX,AAAI,EAAK,eAAiB,GAEtB,AAAI,IAAS,KACT,EAAK,KAAO,EAAK,KACd,AAAI,EAAK,OAAS,KACrB,EAAU,IAAI,EAAW,EAAK,MAE9B,EAAU,OAAO,GAGrB,EAAO,EAGX,EAAO,EAAK,KAIhB,GAAI,IAAa,MACb,GAAM,GAAU,CACZ,WACA,aAAc,GACd,QAAS,GACT,KAAM,GACN,KAAM,MAEV,AAAI,IAAS,KACT,EAAU,IAAI,EAAW,GAEzB,EAAK,KAAO,IAIxB,aAAc,GACd,WAAY,IAUpB,YAA8B,EAAsB,GAChD,OAAO,eACH,EACA,KAAK,IACL,GAA+B,IAUvC,YAAiC,GAE7B,aACI,GAAY,KAAK,MAGrB,EAAkB,UAAY,OAAO,OAAO,GAAY,UAAW,CAC/D,YAAa,CACT,MAAO,EACP,aAAc,GACd,SAAU,MAIlB,OAAS,GAAI,EAAG,EAAI,EAAW,OAAQ,EAAE,EACrC,GAAqB,EAAkB,UAAW,EAAW,IAGjE,MAAO,GAgBX,cAEI,GAAI,eAAgB,KAChB,GAAa,IAAI,KAAM,GAAI,MAC3B,OAEJ,GAAI,UAAU,SAAW,GAAK,MAAM,QAAQ,UAAU,IAClD,MAAO,IAAwB,UAAU,IAE7C,GAAI,UAAU,OAAS,GACnB,GAAM,GAAQ,GAAI,OAAM,UAAU,QAClC,OAAS,GAAI,EAAG,EAAI,UAAU,OAAQ,EAAE,EACpC,EAAM,GAAK,UAAU,GAEzB,MAAO,IAAwB,GAEnC,KAAM,IAAI,WAAU,qCAKxB,GAAY,UAAY,CAQpB,iBAAiB,EAAW,EAAU,GAClC,GAAI,GAAY,KACZ,OAEJ,GAAI,MAAO,IAAa,YAAc,CAAC,GAAS,GAC5C,KAAM,IAAI,WAAU,iDAGxB,GAAM,GAAY,GAAa,MACzB,EAAe,GAAS,GAIxB,EAAe,AAHL,AACV,QADU,EACF,EAAQ,QACR,GACiB,GAAU,GACnC,EAAU,CACZ,WACA,eACA,QAAS,GAAgB,QAAQ,EAAQ,SACzC,KAAM,GAAgB,QAAQ,EAAQ,MACtC,KAAM,MAIN,EAAO,EAAU,IAAI,GACzB,GAAI,IAAS,QACT,EAAU,IAAI,EAAW,GACzB,OAIJ,GAAI,GAAO,KACX,KAAO,GAAQ,OACX,GACI,EAAK,WAAa,GAClB,EAAK,eAAiB,EAGtB,OAEJ,EAAO,EACP,EAAO,EAAK,KAIhB,EAAK,KAAO,GAUhB,oBAAoB,EAAW,EAAU,GACrC,GAAI,GAAY,KACZ,OAGJ,GAAM,GAAY,GAAa,MAIzB,EAAe,AAHL,IAAS,GACnB,QAAQ,EAAQ,SAChB,QAAQ,IACiB,GAAU,GAErC,EAAO,KACP,EAAO,EAAU,IAAI,GACzB,KAAO,GAAQ,OACX,GACI,EAAK,WAAa,GAClB,EAAK,eAAiB,GAEtB,AAAI,IAAS,KACT,EAAK,KAAO,EAAK,KACd,AAAI,EAAK,OAAS,KACrB,EAAU,IAAI,EAAW,EAAK,MAE9B,EAAU,OAAO,GAErB,OAGJ,EAAO,EACP,EAAO,EAAK,OASpB,cAAc,GACV,GAAI,GAAS,MAAQ,MAAO,GAAM,MAAS,SACvC,KAAM,IAAI,WAAU,oCAIxB,GAAM,GAAY,GAAa,MACzB,EAAY,EAAM,KACpB,EAAO,EAAU,IAAI,GACzB,GAAI,GAAQ,KACR,MAAO,GAIX,GAAM,GAAe,GAAU,KAAM,GAIjC,EAAO,KACX,KAAO,GAAQ,OAmBX,GAjBA,AAAI,EAAK,KACL,AAAI,IAAS,KACT,EAAK,KAAO,EAAK,KACd,AAAI,EAAK,OAAS,KACrB,EAAU,IAAI,EAAW,EAAK,MAE9B,EAAU,OAAO,GAGrB,EAAO,EAIX,GACI,EACA,EAAK,QAAU,EAAK,SAAW,MAE/B,MAAO,GAAK,UAAa,WACzB,IACI,EAAK,SAAS,KAAK,KAAM,SACpB,GACL,AACI,MAAO,UAAY,aACnB,MAAO,SAAQ,OAAU,YAEzB,QAAQ,MAAM,OAGnB,AACH,GAAK,eAAiB,IACtB,MAAO,GAAK,SAAS,aAAgB,YAErC,EAAK,SAAS,YAAY,GAI9B,GAAI,GAAU,GACV,MAGJ,EAAO,EAAK,KAEhB,UAAmB,EAAc,MACjC,GAAc,EAAc,GAC5B,GAAiB,EAAc,MAExB,CAAC,EAAa,mBAK7B,OAAO,eAAe,GAAY,UAAW,cAAe,CACxD,MAAO,GACP,aAAc,GACd,SAAU,KAId,AACI,MAAO,SAAW,aAClB,MAAO,QAAO,aAAgB,aAE9B,OAAO,eAAe,GAAY,UAAW,OAAO,YAAY,WJ1WpE,AAAI,MAAO,QAAO,iBAAoB,aACpC,QAAO,gBAAkB,AAAQ,KAAoB,gBACrD,OAAO,YAAc,AAAQ,KAAoB,aAInD,GAAM,IAAc,WAAK,KAAK,UAAW,aACnC,GAAyB,WAAK,KAAK,UAAW,uBAC9C,GAAsB,WAAK,KAAK,UAAW,oBAE3C,GAAkB,OAAO,gBAE3B,GAAU,GAER,GACJ,QAAQ,WAAa,QACjB,WAAK,KAAK,QAAQ,IAAI,UAAW,QAAQ,IAAI,UAC7C,QAAQ,IAAI,KAEZ,GAAoB,WAAK,KAAK,GAAM,aAEtC,GAAe,CAAC,OAAQ,OAAQ,gBAAiB,MAAO,MAExD,GAAa,GAEb,GAAc,QAAQ,IACtB,GAAkB,IAAI,KACxB,AAAI,IACJ,QAAQ,MAAM,GAAG,IAKnB,GAAI,CAAC,WAAG,QACN,GAAM,GAAiB,KACvB,WAAG,OAAS,CAAC,EAAc,KAEzB,GAAI,IAAS,KACT,IAAS,gBACb,MAAO,GAAO,KAAK,IAIvB,kBAA2B,EAAS,GA5DpC,MA6DE,GAAI,GACF,CAAC,GAAW,IAAY,OAAS,QAAQ,IAAI,OAAS,EAExD,GAAI,CAAC,kBAAc,OAAO,QACxB,OAAS,KAAU,IACjB,IACE,EAAe,KAAM,YAAM,GACvB,GAAa,SAAS,SAAW,EAAa,SAAS,UACzD,GAAe,IAAM,EAAe,KAEtC,YACO,IAIb,MAAI,EAAC,GAAgB,CAAC,qBAAc,SAAd,cAAsB,UACrC,IACH,QAAQ,KACN,wFAEJ,EAAe,QAGV,EAGT,GAAM,IAAgB,WAAG,WAAW,IAEpC,AAAI,MAAO,SAAQ,KAAQ,YACjB,KAGV,GAAK,IAAL,UAAK,GACH,2CACA,2CACA,2BAHG,aAML,GAAM,IAAe,CACnB,QAAS,GACT,QAAS,GAIX,YAAuB,GACrB,MAAI,GAAC,EAAI,SAAS,KAAuB,CAAC,EAAI,SAAS,WAOzD,kBAAyC,GACvC,GAAI,GAAO,EAAI,QAAQ,WAAW,KAAsB,IAClD,CAAC,EAAI,EAAO,EAAM,EAAG,GAAiB,EAAK,MAAM,KAEjD,EAAS,WAAW,YAA2B,KAAS,WAAc,IAEtE,EAAS,KAAM,IAAY,GACjC,AAAK,EAAO,IACV,SAAQ,MACN,yCACA,EAAO,OACP;AAAA,EACA,KAAM,GAAO,QAEf,QAAQ,QAGV,GAAM,GAAO,KAAM,GAAO,OAEpB,CAAE,QAAO,OAAQ,EAAK,KAC5B,MAAO,CAAC,EAAM,MAAM,KAAK,GAAI,EAAM,GAGrC,kBAAiC,EAAe,GAxIhD,MAyIE,GAAM,GAAS,WAAW,YAA2B,KAAS,IAExD,EAAS,KAAM,IAAY,GACjC,MAAK,GAAO,IACV,SAAQ,MACN,mCACA,EAAO,OACP;AAAA,EACA,KAAM,GAAO,QAEf,QAAQ,QAKH,GAFM,MAAM,GAAO,QAEd,iBAAL,OAAuB,OAGhC,GAAI,IAAY,GAEZ,GAGJ,GAAI,IAEE,GAAiB,CACrB,SAAU,UAEP,GAAL,UAAK,GACH,YAAU,GAAV,UACA,WAAS,GAAT,SACA,YAAU,GAAV,UACA,QAAM,GAAN,QAJG,aAOL,GAAI,IAAU,GAAI,IAElB,YAAqB,EAAK,EAA4B,MACpD,GAAM,GAAQ,KACd,MAAI,IAAS,CAAC,GAAe,SAC3B,IAAe,QAAU,CAAE,cAAe,UAAU,MAE/C,GACL,EACA,EACI,IACK,GACH,OAAQ,EAAS,QAEnB,IAIR,eACA,GAAI,IAAa,EACb,GAAkB,GACtB,cAjMA,QAkME,GAAI,GAAa,GAGjB,GAFA,GAAU,GAEN,CAAC,IAAa,CAAC,IAAc,GAC/B,IACE,aAAQ,iBACR,GAAS,KACT,GAAY,SACL,IAGX,GAAI,oBAAU,OACR,CAAC,GAAS,KAAK,cACjB,IACE,GAAS,KAAK,KAAO,GACrB,GAAS,KAAK,cACP,IAIb,GAAI,oBAAU,WAAY,GAAa,UAAY,GAC7C,GAAS,SAAS,UACpB,IACE,GAAS,SAAS,OAClB,GAAS,SAAS,mBACX,IAMb,GAFK,GAAY,GAAQ,QAErB,CAAC,IAAc,uBAAU,cAAV,cAAuB,SAAU,GAAa,IAE/D,GAAI,QAAQ,WAAa,QACvB,IACE,WAAO,KAAK,GAAS,YAAc,SACnC,WAAO,KAAK,GAAS,mBACd,GACP,AAAI,QAAQ,IAAI,SAAS,QAAQ,MAAM,OAGzC,KACE,WAAO,KAAK,GAAS,mBACd,GACP,AAAI,QAAQ,IAAI,SAAS,QAAQ,MAAM,GAI3C,GAAI,WAAG,WAAW,GAAS,cACzB,WAAW,GAAQ,IACf,QAAQ,IAAI,SACd,QAAQ,IAAI,oCAAoC,SAElD,KACA,QAIJ,AACE,CAAC,IACD,uBAAU,cAAV,cAAuB,SACvB,CAAC,WAAG,WAAW,GAAS,cACxB,CAAC,IAED,IAAS,SAAW,KACpB,GAAS,IAAI,iCACb,GAAkB,IAGpB,QAAQ,YAAc,GACtB,QAAQ,OAGV,QAAQ,KAAK,SAAU,IA3QvB,2BAmRE,gBAAyB,EAQzB,eAAY,GAiDZ,cAAsC,KA2BtC,oBAAiB,GAzFjB,IAAI,GACF,AAAI,KAAK,aAAe,GAAkB,KAAK,UAC/C,QAAQ,IAAI,QAYR,iBACJ,EACA,EACA,EACA,EACA,GAEA,GAAM,GAAM,+BAA+B,KAAS,KAAQ,KAC1D,GAAY,cAGR,EAAO,KAAM,IAAM,EAAK,CAC5B,SAAU,SACV,OAAQ,GAAQ,SAGlB,GAAI,CAAC,EAAK,IAAM,EAAK,SAAW,IAC9B,MAAO,GAGT,GAAI,GAAS,OAEb,GAAM,GAAO,KAAM,GAAK,OAExB,GAAI,EAAK,OAAO,OAGd,MAFI,KACJ,MAAM,YAAG,SAAS,MAAM,WAAK,QAAQ,GAAc,CAAE,UAAW,KAC5D,IAAS,OACb,MAAM,YAAG,SAAS,UAAU,EAAa,EAAM,QACxC,IAGT,KAAM,OAER,eACE,EACA,EACA,EACA,EACA,EACA,GAEA,MAAO,SAAQ,IAAI,CACjB,KAAK,gBAAgB,EAAM,EAAO,EAAU,EAAK,GACjD,KAAK,gBAAgB,EAAM,EAAO,EAAU,EAAU,KAM1D,OAAO,GAEL,GAAM,GAAkB,QAAQ,YAChC,QAAQ,YAAc,OACtB,GAAM,CAAE,aAAsB,AAAR,QAAQ,IAC9B,eAAQ,YAAc,EAEf,EAAU,QAGb,QAAO,GACX,GAAM,GAAW,KAAM,IAAY,EAAQ,IAC3C,GAAI,EAAS,GACX,MAAO,GAAS,KACX,GAAI,EAAS,SAAW,KAAO,EAAS,SAAW,KACxD,GAAM,GAAQ,iCAAiC,EAAS;AAAA,EAC5D,KAAM,GAAS;AAAA;AAAA,6HAGX,cAAQ,MAAM,GACR,MAEN,MAAM,MAAM,GAAS,OAMzB,MAAM,EAAO,EAAM,EAAK,EAAU,GAChC,MAAO,IAAI,SAAQ,CAAC,EAAU,KAC5B,KAAK,aAAe,GAAI,SAAQ,MAAO,EAAS,KAC9C,GAAM,GAAU,KAAM,MAAK,WACzB,WAAW,YAA2B,KAAS,aAAgB,IAC/D,WAAW,YAA2B,KAAS,aAAgB,KAGjE,KAAK,IAAI,kDACT,EAAQ,KACL,KAAK,KAAO,WAAI,EAAE,CACjB,IAAK,EACL,MAAO,EACP,mBAAoB,GACpB,QAAS,MAMb,EAAQ,GAAG,MAAO,KAChB,AAAI,IACJ,MAAK,IAAI,8CACT,IACA,OAEF,EAAQ,GAAG,QAAS,AAAC,IACnB,AAAI,IAAa,IAEjB,MAAK,IAAI,4CACT,EAAO,GACP,EAAQ,UAMhB,MAAM,EAAgB,GACpB,GAAM,GAAM,uDAAuD,KAAU,IAC7E,YAAK,IAAI,WAAW,uBACb,GAAI,SAAQ,CAAC,EAAS,KAC3B,GAAM,GAAQ,WAAa,KAAK,EAAK,IACrC,EAAM,OAAO,KAAK,QAAQ,QAC1B,EAAM,KAAK,QAAS,KAClB,MAGF,EAAM,KAAK,OAAQ,KACjB,MAGF,EAAM,KAAK,QAAS,AAAC,IACnB,EAAO,OAKb,QAnaF,cAqjBI,MAjJY,YACV;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mCAcF,YAAQ,IAAI,SAAZ,cAAoB,QAAS,QAAQ,IAAI,OAAS;AAAA,gCAEtB,GAAa,KAAK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,aA8BrC,YAAQ,IAAI,SAAZ,cAAoB,QAAS,QAAQ,IAAI,OAAS;AAAA,mBAE3D,YAAQ,IAAI,eAAZ,cAA0B,QACtB,GAAI,OAAM,QAAQ,IAAI,aAAa,QAAQ,KAAK,KAAK,KAAK,IAC1D;AAAA,yBAGJ,YAAQ,IAAI,qBAAZ,cAAgC,QAC5B,QAAQ,IAAI,mBACZ;AAAA,wBAGJ,YAAQ,IAAI,oBAAZ,cAA+B,QAC3B,QAAQ,IAAI,kBACZ;AAAA,UAEE,GAAgB,SAAM,YAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOrC,OACI,CACE,MAAO,CACL,WAAY,CACV,KAAM,UACN,QAAS,IAEX,SAAU,CACR,KAAM,UACN,QAAS,GACT,MAAO,IACP,YAAa,6BAEf,QAAS,CACP,KAAM,UACN,QAAS,GACT,MAAO,IACP,YAAa,2BAEf,IAAK,CACH,KAAM,SACN,QAAS,GACT,MAAO,IACP,YACE,gFAEJ,OAAQ,CACN,KAAM,SACN,QAAS,GACT,MAAO,IACP,YAAa,mCAEf,cAAe,CACb,KAAM,UACN,QAAS,GACT,MAAO,IACP,YAAa,wBAEf,KAAM,CACJ,KAAM,UACN,QAAS,GACT,MAAO,IACP,YAAa,wCAEf,KAAM,CACJ,KAAM,UACN,QAAS,GACT,MAAO,IACP,YACE,2HAEJ,KAAM,CACJ,KAAM,UACN,QAAS,GACT,MAAO,IACP,WAAY,IAEd,QAAS,CACP,KAAM,UACN,QAAS,GACT,MAAO,IACP,WAAY,IAEd,OAAQ,CACN,KAAM,SACN,WAAY,GACZ,WAAY,GACZ,QAAS,OACT,MAAO,IACP,YAAa,iKASjB,YAAW,EAAgB,GAC/B,GAAI,GACJ,IACE,EAAU,KAAM,MAAK,OAAO,SACrB,GACP,IACE,KAAK,eAAiB,GACtB,EAAU,KAAM,MAAK,OAAO,SACrB,GACP,GAAI,GAAS,OACb,QAAQ,MACN;AAAA,KAAuC;AAAA,KAAc,KAEvD,KACA,QAAQ,QAIZ,YAAK,QAAU,EACR,OAGH,OA9kBR,UA+kBI,GAAM,GAAM,KAAK,QACX,CACJ,OACA,UACA,IAAK,EACL,SACA,gBACA,YACE,EAAI,MAER,GAAa,EAAI,MAAM,KAGrB,EAAI,MAAM,YACV,YAAQ,IAAI,YAAZ,cAAuB,SACvB,QAAQ,WAAa,UAErB,SAAQ,IAAM,IAAI,IAChB,WAAa,KAAK,sBAAsB,EAAK,KAAK,UAElD,GACF,GAAI,SAAS,GACb,QAAQ,KAAK,IAGX,GACF,GAAI,cACJ,QAAQ,KAAK,IAGf,GAAM,CACJ,MAAO,CAAE,OAAQ,EAAU,SACzB,EAEJ,GAAI,GACF,KAAM,AAAQ,AAAR,SAAQ,IAAwB,SACpC,KAAM,IAAY,EAAS,KAE7B,OAGF,GAAI,GAAM,QAAI,MAAM,KAAV,cAAc,SAAd,OAAwB,GAElC,AAAI,EAAI,SAAS,gBACf,GAAM,EAAI,QAAQ,cAAe,IAAI,QAGvC,GAAI,GAEA,EAAc,GAClB,GAAI,CAAC,EAAI,SAAS,QAAU,EAAI,MAAM,KAAK,SAAW,GACpD,GAAM,CAAC,EAAO,GAAQ,EAAI,MAAM,KAEhC,AAAI,EAAK,OAAO,OACd,EAAM,WAAW,MAAsB,KAAS,IAEhD,EAAc,GAQlB,IAJK,GACH,GAAc,CAAC,GAAO,CAAC,EAAI,SAAS,MAAQ,EAAI,SAAS,MAGpD,CAAC,IACN,AAAI,GACF,GAAM,KAAM,MAAK,OAAO,GACxB,EAAc,CAAC,GAAO,CAAC,EAAI,SAAS,MAAQ,EAAI,SAAS,MAG3D,IACE,EAAO,WAAM,SACN,GACP,IACE,EAAM,KAAM,MAAK,OAAO,GACxB,EAAc,CAAC,GAAO,CAAC,EAAI,SAAS,MAAQ,EAAI,SAAS,WAClD,GACP,KAAK,IAAI,KAKf,GAAI,GAAM,EAAK,IAef,GAbA,AACE,EAAK,WAAa,IACjB,KAAW,WACV,GACC,IAAW,IAAM,EAAI,MAAM,YAE9B,EAAM,KAAM,IAAkB,EAAK,MAAO,EAAK,MAC1C,AAAI,IAAW,GACpB,EAAM,EACI,GACV,GAAM,UAGJ,GAAO,EAAI,QAAU,GAAc,IACrC,GAAM,CAAC,EAAU,EAAS,GAAU,KAAM,IAA0B,GACpE,EAAK,KAAO,EACZ,EAAK,MAAQ,EACb,EAAM,EAGR,GAAM,GAAQ,GAAI,QAAO,UAErB,EAAS,EAAK,KAAO,IAAM,EAE/B,GAAS,WAAI,QACX,kBAAa,QACT,CACE,cAAe,GACf,KAAM,GACN,SACA,QAAS,AAAC,EAAI,MAAM,KAA2B,GAApB,kBAC3B,OAAQ,WAAK,QAAQ,QAAQ,MAAO,IAEtC,CACE,cAAe,GACf,KAAM,GACN,OAAQ,EACR,QAAS,AAAC,EAAI,MAAM,KAA2B,GAApB,oBAGnC,KAAK,YAAc,GAAO,KAE1B,GAAY,GACZ,QAAQ,KAAK,aAAc,IAC3B,QAAQ,KAAK,UAAW,IACxB,QAAQ,KAAK,UAAW,IAExB,GAAI,GAAe,EAAK,SACpB,EAAmB,CAAC,EAExB,AAAI,GACF,GAAe,aAGjB,GAAI,GAAW,WAAK,KAAK,GAAO,KAAM,GAGtC,GAAI,EAAK,WAAa,IACpB,GAAI,GAAW,IAAQ,OAAS,SAAW,OAE3C,KAAM,SAAQ,IAAI,CAChB,KAAK,eACH,EAAK,KACL,EAAK,MACL,EACA,EACA,EACA,GAEF,KAAK,MAAM,EAAK,MAAO,EAAK,KAAM,EAAK,EAAU,GAAO,YAG1D,MAAM,MAAK,MAAM,EAAK,KAAM,GAAO,MAGrC,GAAI,GAAe,KAAM,IAAY,EAAS,IAE1C,EAAyB,GA4L7B,GAxLA,KAAK,WAAa,EAKlB,AAAI,EAAa,SAAS,QACxB,IAAa,QAAU,EAAI,MAAM,QACjC,GAAa,QAAU,EACvB,EAAe,EAAa,QAAQ,SAAU,GAAI,KAAM,IAAI,OAE5D,KAAK,WAAa,EAClB,EAAuB,KAAK,KAAM,MAE9B,GACF,EAAuB,KAAK,OAAO,WAAK,QAAQ,YAO7C,AAAI,EAAa,SAAS,QAC/B,CAAI,EAAI,MAAM,WACZ,GAAa,QAAU,EAEvB,GAAa,QAAU,EAGzB,GAAa,GACb,KAAK,WAAa,EAClB,EAAe,EAAa,QAAQ,SAAU,GAAI,KAAM,IAAI,OAC5D,EAAuB,KAAK,MAExB,GACF,EAAuB,KAAK,IAAI,WAAK,QAAQ,YAG1C,AAAI,EAAa,SAAS,MAC/B,MAAK,WAAa,EAClB,GAAa,QAAU,EAAI,MAAM,QACjC,GAAa,QAAU,GAIlB,AAAI,EAAI,MAAM,WACnB,IAAa,QAAU,EACvB,GAAa,QAAU,EAAI,MAAM,SAEjC,IAAa,QAAU,EACvB,GAAa,QAAU,EAAI,MAAM,SAI/B,MAAK,aAAe,GAAkB,GACtC,EAAI,MAAM,OACZ,KAAK,cAEL,MAAM,MAAK,aACX,KAAK,aAAe,QAAQ,QAAQ,KAGtC,KAAM,IAAI,SAAQ,CAAC,EAAS,KAC1B,GAAI,KAAK,aAAe,GAkBtB,GAAS,GAAT,WAp0BR,QAq0BU,AAAK,GACC,kCAAS,QAAT,cAAgB,aAAY,QAAQ,MAAM,WAAW,IACrD,iCAAS,QAAT,cAAgB,SAAQ,QAAQ,MAAM,SAE1C,IACA,EAAa,KAvBjB,QAAQ,MAAM,WAAW,IACzB,QAAQ,MAAM,QAEd,KAAK,SAAW,WAAa,MAC3B,EACA,CACE,EAAmB,GAAO,KAAO,EACjC,GAAG,GAEL,CACE,IAAK,QAAQ,IACb,MAAO,UACP,SAAU,GACV,IAAK,GAAO,OAGhB,GAAI,GAAa,GAWjB,KAAK,SAAS,KAAK,QAAS,GAC5B,KAAK,SAAS,KAAK,OAAQ,GAC3B,KAAK,SAAS,KAAK,QAAS,QAE5B,KAAK,IACH,gCACG,KAAI,QAAO,UAAY,GACxB,KACA,QAAQ,OAGZ,GAAM,GAAM,GAAG,MAAiB,WAAK,KACnC,GAAO,UACH,EAAuB,KAAK,OAAO,OAErC,EAAa,GAEX,EACJ,QAAQ,WAAa,QACjB,WAAK,KAAK,GAAO,KAAM,OACvB,GAAO,KAoCb,GAnCA,AAAI,EAAI,MAAM,YAAc,QAAQ,WAAa,QAC/C,KAAK,SAAW,WAAa,MAAM,EAAK,CACtC,IAAK,QAAQ,IACb,MAAO,GACP,YAAa,GACb,MAAO,SAEP,SAAU,GAEV,QAEG,AAAI,EAAI,MAAM,YAAc,QAAQ,WAAa,SACtD,KAAK,SAAW,WAAa,MAAM,EAAK,CACtC,IAAK,QAAQ,IACb,MAAO,GACP,YAAa,GACb,MAAO,OAEP,SAAU,GACV,QAGF,KAAK,SAAW,WAAa,MAAM,EAAK,CACtC,IAAK,QAAQ,IACb,MAAO,GACP,YAAa,GACb,MACE,GAAa,UAAY,EACrB,SACA,UACN,SAAU,GAAa,UAAY,EACnC,QAIA,GAAa,UAAY,EAC3B,AAAI,EAAI,MAAM,YAAc,QAAQ,WAAa,QAC/C,MAAK,SAAS,QACd,KAAK,SAAW,KAEhB,KAAK,aAAa,KAChB,IAAM,IACN,IAAM,MAGR,KAAK,aAAa,KAChB,IAAM,IACN,IAAM,UAKV,GAAS,GAAT,WAv5BV,SAw5BY,AAAK,GACC,kCAAS,QAAT,cAAgB,aAAY,QAAQ,MAAM,WAAW,IACrD,kCAAS,QAAT,eAAgB,SAAQ,QAAQ,MAAM,SAE1C,MAIJ,KAAK,SAAS,KAAK,OAAQ,GAC3B,KAAK,SAAS,KAAK,QAAS,GAC5B,KAAK,SAAS,KAAK,QAAS,GAC5B,KAAK,SAAS,KAAK,aAAc,OAKnC,KAAc,GAAa,UAAY,IACzC,IAAY,IAGV,CAAC,EAAI,MAAM,MAAQ,GAAa,UAAY,GAE9C,GAAM,GAAkB,QAAQ,YAChC,QAAQ,YAAc,OACtB,GAAM,CAAE,iBAA0B,AAAR,QAAQ,IAClC,QAAQ,YAAc,EAEtB,GAAa,GAAY,CADJ,KAAM,KAI7B,OAjqBK,AArRT,GAqRS,YACL,4FACK,AAvRT,GAuRS,MAAQ,4BAER,AAzRT,GAyRS,KAAO,CAAC,CAAE,KAAM,QAuqBzB,QAAQ,GAAG,qBAAsB,IACjC,QAAQ,GAAG,qBAAsB,IAEjC,AAAI,IACF,WAAO,OAAO,CAAE,KAAM,KAGxB,GAAM,IAAqB,QAAQ,IAAI,oBAAsB,aACvD,GAAoB,QAAQ,IAAI,mBAAqB,iBAC3D,GAAW,GAAI,IACf,GAAS", + "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/abortcontroller-polyfill@1.7.1/node_modules/abortcontroller-polyfill/dist/polyfill-patch-fetch.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", "(function (factory) {\n typeof define === 'function' && define.amd ? define(factory) :\n factory();\n}((function () { 'use strict';\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n }\n\n function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n }\n\n function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n }\n\n function _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n }\n\n function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n }\n\n function _possibleConstructorReturn(self, call) {\n if (call && (typeof call === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return _assertThisInitialized(self);\n }\n\n function _createSuper(Derived) {\n var hasNativeReflectConstruct = _isNativeReflectConstruct();\n\n return function _createSuperInternal() {\n var Super = _getPrototypeOf(Derived),\n result;\n\n if (hasNativeReflectConstruct) {\n var NewTarget = _getPrototypeOf(this).constructor;\n\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n\n return _possibleConstructorReturn(this, result);\n };\n }\n\n function _superPropBase(object, property) {\n while (!Object.prototype.hasOwnProperty.call(object, property)) {\n object = _getPrototypeOf(object);\n if (object === null) break;\n }\n\n return object;\n }\n\n function _get(target, property, receiver) {\n if (typeof Reflect !== \"undefined\" && Reflect.get) {\n _get = Reflect.get;\n } else {\n _get = function _get(target, property, receiver) {\n var base = _superPropBase(target, property);\n\n if (!base) return;\n var desc = Object.getOwnPropertyDescriptor(base, property);\n\n if (desc.get) {\n return desc.get.call(receiver);\n }\n\n return desc.value;\n };\n }\n\n return _get(target, property, receiver || target);\n }\n\n var Emitter = /*#__PURE__*/function () {\n function Emitter() {\n _classCallCheck(this, Emitter);\n\n Object.defineProperty(this, 'listeners', {\n value: {},\n writable: true,\n configurable: true\n });\n }\n\n _createClass(Emitter, [{\n key: \"addEventListener\",\n value: function addEventListener(type, callback, options) {\n if (!(type in this.listeners)) {\n this.listeners[type] = [];\n }\n\n this.listeners[type].push({\n callback: callback,\n options: options\n });\n }\n }, {\n key: \"removeEventListener\",\n value: function removeEventListener(type, callback) {\n if (!(type in this.listeners)) {\n return;\n }\n\n var stack = this.listeners[type];\n\n for (var i = 0, l = stack.length; i < l; i++) {\n if (stack[i].callback === callback) {\n stack.splice(i, 1);\n return;\n }\n }\n }\n }, {\n key: \"dispatchEvent\",\n value: function dispatchEvent(event) {\n if (!(event.type in this.listeners)) {\n return;\n }\n\n var stack = this.listeners[event.type];\n var stackToCall = stack.slice();\n\n for (var i = 0, l = stackToCall.length; i < l; i++) {\n var listener = stackToCall[i];\n\n try {\n listener.callback.call(this, event);\n } catch (e) {\n Promise.resolve().then(function () {\n throw e;\n });\n }\n\n if (listener.options && listener.options.once) {\n this.removeEventListener(event.type, listener.callback);\n }\n }\n\n return !event.defaultPrevented;\n }\n }]);\n\n return Emitter;\n }();\n\n var AbortSignal = /*#__PURE__*/function (_Emitter) {\n _inherits(AbortSignal, _Emitter);\n\n var _super = _createSuper(AbortSignal);\n\n function AbortSignal() {\n var _this;\n\n _classCallCheck(this, AbortSignal);\n\n _this = _super.call(this); // Some versions of babel does not transpile super() correctly for IE <= 10, if the parent\n // constructor has failed to run, then \"this.listeners\" will still be undefined and then we call\n // the parent constructor directly instead as a workaround. For general details, see babel bug:\n // https://github.com/babel/babel/issues/3041\n // This hack was added as a fix for the issue described here:\n // https://github.com/Financial-Times/polyfill-library/pull/59#issuecomment-477558042\n\n if (!_this.listeners) {\n Emitter.call(_assertThisInitialized(_this));\n } // Compared to assignment, Object.defineProperty makes properties non-enumerable by default and\n // we want Object.keys(new AbortController().signal) to be [] for compat with the native impl\n\n\n Object.defineProperty(_assertThisInitialized(_this), 'aborted', {\n value: false,\n writable: true,\n configurable: true\n });\n Object.defineProperty(_assertThisInitialized(_this), 'onabort', {\n value: null,\n writable: true,\n configurable: true\n });\n return _this;\n }\n\n _createClass(AbortSignal, [{\n key: \"toString\",\n value: function toString() {\n return '[object AbortSignal]';\n }\n }, {\n key: \"dispatchEvent\",\n value: function dispatchEvent(event) {\n if (event.type === 'abort') {\n this.aborted = true;\n\n if (typeof this.onabort === 'function') {\n this.onabort.call(this, event);\n }\n }\n\n _get(_getPrototypeOf(AbortSignal.prototype), \"dispatchEvent\", this).call(this, event);\n }\n }]);\n\n return AbortSignal;\n }(Emitter);\n var AbortController = /*#__PURE__*/function () {\n function AbortController() {\n _classCallCheck(this, AbortController);\n\n // Compared to assignment, Object.defineProperty makes properties non-enumerable by default and\n // we want Object.keys(new AbortController()) to be [] for compat with the native impl\n Object.defineProperty(this, 'signal', {\n value: new AbortSignal(),\n writable: true,\n configurable: true\n });\n }\n\n _createClass(AbortController, [{\n key: \"abort\",\n value: function abort() {\n var event;\n\n try {\n event = new Event('abort');\n } catch (e) {\n if (typeof document !== 'undefined') {\n if (!document.createEvent) {\n // For Internet Explorer 8:\n event = document.createEventObject();\n event.type = 'abort';\n } else {\n // For Internet Explorer 11:\n event = document.createEvent('Event');\n event.initEvent('abort', false, false);\n }\n } else {\n // Fallback where document isn't available:\n event = {\n type: 'abort',\n bubbles: false,\n cancelable: false\n };\n }\n }\n\n this.signal.dispatchEvent(event);\n }\n }, {\n key: \"toString\",\n value: function toString() {\n return '[object AbortController]';\n }\n }]);\n\n return AbortController;\n }();\n\n if (typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n // These are necessary to make sure that we get correct output for:\n // Object.prototype.toString.call(new AbortController())\n AbortController.prototype[Symbol.toStringTag] = 'AbortController';\n AbortSignal.prototype[Symbol.toStringTag] = 'AbortSignal';\n }\n\n function polyfillNeeded(self) {\n if (self.__FORCE_INSTALL_ABORTCONTROLLER_POLYFILL) {\n console.log('__FORCE_INSTALL_ABORTCONTROLLER_POLYFILL=true is set, will force install polyfill');\n return true;\n } // Note that the \"unfetch\" minimal fetch polyfill defines fetch() without\n // defining window.Request, and this polyfill need to work on top of unfetch\n // so the below feature detection needs the !self.AbortController part.\n // The Request.prototype check is also needed because Safari versions 11.1.2\n // up to and including 12.1.x has a window.AbortController present but still\n // does NOT correctly implement abortable fetch:\n // https://bugs.webkit.org/show_bug.cgi?id=174980#c2\n\n\n return typeof self.Request === 'function' && !self.Request.prototype.hasOwnProperty('signal') || !self.AbortController;\n }\n\n /**\n * Note: the \"fetch.Request\" default value is available for fetch imported from\n * the \"node-fetch\" package and not in browsers. This is OK since browsers\n * will be importing umd-polyfill.js from that path \"self\" is passed the\n * decorator so the default value will not be used (because browsers that define\n * fetch also has Request). One quirky setup where self.fetch exists but\n * self.Request does not is when the \"unfetch\" minimal fetch polyfill is used\n * on top of IE11; for this case the browser will try to use the fetch.Request\n * default value which in turn will be undefined but then then \"if (Request)\"\n * will ensure that you get a patched fetch but still no Request (as expected).\n * @param {fetch, Request = fetch.Request}\n * @returns {fetch: abortableFetch, Request: AbortableRequest}\n */\n\n function abortableFetchDecorator(patchTargets) {\n if ('function' === typeof patchTargets) {\n patchTargets = {\n fetch: patchTargets\n };\n }\n\n var _patchTargets = patchTargets,\n fetch = _patchTargets.fetch,\n _patchTargets$Request = _patchTargets.Request,\n NativeRequest = _patchTargets$Request === void 0 ? fetch.Request : _patchTargets$Request,\n NativeAbortController = _patchTargets.AbortController,\n _patchTargets$__FORCE = _patchTargets.__FORCE_INSTALL_ABORTCONTROLLER_POLYFILL,\n __FORCE_INSTALL_ABORTCONTROLLER_POLYFILL = _patchTargets$__FORCE === void 0 ? false : _patchTargets$__FORCE;\n\n if (!polyfillNeeded({\n fetch: fetch,\n Request: NativeRequest,\n AbortController: NativeAbortController,\n __FORCE_INSTALL_ABORTCONTROLLER_POLYFILL: __FORCE_INSTALL_ABORTCONTROLLER_POLYFILL\n })) {\n return {\n fetch: fetch,\n Request: Request\n };\n }\n\n var Request = NativeRequest; // Note that the \"unfetch\" minimal fetch polyfill defines fetch() without\n // defining window.Request, and this polyfill need to work on top of unfetch\n // hence we only patch it if it's available. Also we don't patch it if signal\n // is already available on the Request prototype because in this case support\n // is present and the patching below can cause a crash since it assigns to\n // request.signal which is technically a read-only property. This latter error\n // happens when you run the main5.js node-fetch example in the repo\n // \"abortcontroller-polyfill-examples\". The exact error is:\n // request.signal = init.signal;\n // ^\n // TypeError: Cannot set property signal of # which has only a getter\n\n if (Request && !Request.prototype.hasOwnProperty('signal') || __FORCE_INSTALL_ABORTCONTROLLER_POLYFILL) {\n Request = function Request(input, init) {\n var signal;\n\n if (init && init.signal) {\n signal = init.signal; // Never pass init.signal to the native Request implementation when the polyfill has\n // been installed because if we're running on top of a browser with a\n // working native AbortController (i.e. the polyfill was installed due to\n // __FORCE_INSTALL_ABORTCONTROLLER_POLYFILL being set), then passing our\n // fake AbortSignal to the native fetch will trigger:\n // TypeError: Failed to construct 'Request': member signal is not of type AbortSignal.\n\n delete init.signal;\n }\n\n var request = new NativeRequest(input, init);\n\n if (signal) {\n Object.defineProperty(request, 'signal', {\n writable: false,\n enumerable: false,\n configurable: true,\n value: signal\n });\n }\n\n return request;\n };\n\n Request.prototype = NativeRequest.prototype;\n }\n\n var realFetch = fetch;\n\n var abortableFetch = function abortableFetch(input, init) {\n var signal = Request && Request.prototype.isPrototypeOf(input) ? input.signal : init ? init.signal : undefined;\n\n if (signal) {\n var abortError;\n\n try {\n abortError = new DOMException('Aborted', 'AbortError');\n } catch (err) {\n // IE 11 does not support calling the DOMException constructor, use a\n // regular error object on it instead.\n abortError = new Error('Aborted');\n abortError.name = 'AbortError';\n } // Return early if already aborted, thus avoiding making an HTTP request\n\n\n if (signal.aborted) {\n return Promise.reject(abortError);\n } // Turn an event into a promise, reject it once `abort` is dispatched\n\n\n var cancellation = new Promise(function (_, reject) {\n signal.addEventListener('abort', function () {\n return reject(abortError);\n }, {\n once: true\n });\n });\n\n if (init && init.signal) {\n // Never pass .signal to the native implementation when the polyfill has\n // been installed because if we're running on top of a browser with a\n // working native AbortController (i.e. the polyfill was installed due to\n // __FORCE_INSTALL_ABORTCONTROLLER_POLYFILL being set), then passing our\n // fake AbortSignal to the native fetch will trigger:\n // TypeError: Failed to execute 'fetch' on 'Window': member signal is not of type AbortSignal.\n delete init.signal;\n } // Return the fastest promise (don't need to wait for request to finish)\n\n\n return Promise.race([cancellation, realFetch(input, init)]);\n }\n\n return realFetch(input, init);\n };\n\n return {\n fetch: abortableFetch,\n Request: Request\n };\n }\n\n (function (self) {\n\n if (!polyfillNeeded(self)) {\n return;\n }\n\n if (!self.fetch) {\n console.warn('fetch() is not available, cannot install abortcontroller-polyfill');\n return;\n }\n\n var _abortableFetch = abortableFetchDecorator(self),\n fetch = _abortableFetch.fetch,\n Request = _abortableFetch.Request;\n\n self.fetch = fetch;\n self.Request = Request;\n Object.defineProperty(self, 'AbortController', {\n writable: true,\n enumerable: false,\n configurable: true,\n value: AbortController\n });\n Object.defineProperty(self, 'AbortSignal', {\n writable: true,\n enumerable: false,\n configurable: true,\n value: AbortSignal\n });\n })(typeof self !== 'undefined' ? self : global);\n\n})));\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\nglobal.fetch = require(\"node-fetch\");\n\nif (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\nconst SEARCH_PATH = path.join(__dirname, \"Search.js\");\nconst REGISTER_PROTOCOL_PATH = path.join(__dirname, \"registerProtocol.js\");\nconst CONFIRM_PROMPT_PATH = path.join(__dirname, \"confirmPrompt.js\");\n\nconst 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\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\nlet aborter = new AbortController();\n\nfunction githubFetch(url, _aborter: AbortController = null) {\n const token = findGitHubToken();\n if (token && !followRedirect.headers) {\n followRedirect.headers = { authorization: `Bearer ${token}` };\n }\n return fetch(\n url,\n _aborter\n ? {\n ...followRedirect,\n signal: _aborter.signal,\n }\n : followRedirect\n );\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 (!wasExiting) aborter.abort();\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, aborter);\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 unzip(owner, name, ref, fallback, to: string) {\n return new Promise((resolve2, reject2) => {\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\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 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 cli.showVersion();\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 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 (branch === \"\" && 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 const [newOwner, newName, newRef] = await resolveRefFromPullRequest(url);\n link.name = newName;\n link.owner = newOwner;\n ref = newRef;\n }\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\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 await Promise.any([\n this.prefetchGithub(\n link.name,\n link.owner,\n specificFile,\n ref,\n fallback,\n openPath\n ),\n this.unzip(link.owner, link.name, ref, fallback, tmpobj.name),\n ]);\n } else {\n await this.clone(link.href, tmpobj.name);\n }\n\n let chosenEditor = await fetchEditor(_editor, false);\n\n let editorSpecificCommands = [];\n\n // console.log(path.join(tmpobj.name, specificFile));\n\n this.editorMode = EditorMode.unknown;\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\";\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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", "names": [] } diff --git a/bin/registerProtocol.js b/bin/registerProtocol.js index 93c1572..7e8fff6 100644 --- a/bin/registerProtocol.js +++ b/bin/registerProtocol.js @@ -1,12 +1,12 @@ -var vy=Object.create,Wi=Object.defineProperty,wy=Object.getPrototypeOf,Ey=Object.prototype.hasOwnProperty,by=Object.getOwnPropertyNames,_y=Object.getOwnPropertyDescriptor;var Hi=e=>Wi(e,"__esModule",{value:!0});var L=(e,t)=>()=>(t||(t={exports:{}},e(t.exports,t)),t.exports),Cs=(e,t)=>{for(var r in t)Wi(e,r,{get:t[r],enumerable:!0})},Sy=(e,t,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of by(t))!Ey.call(e,i)&&i!=="default"&&Wi(e,i,{get:()=>t[i],enumerable:!(r=_y(t,i))||r.enumerable});return e},Rt=e=>e&&e.__esModule?e:Sy(Hi(Wi(e!=null?vy(wy(e)):{},"default",{value:e,enumerable:!0})),e);var Lc=L((a1,Tc)=>{Tc.exports=Rc;Rc.sync=Oy;var Ac=require("fs");function Ny(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{xc.exports=Mc;Mc.sync=Dy;var Cc=require("fs");function Mc(e,t,r){Cc.stat(e,function(i,n){r(i,i?!1:kc(n,t))})}function Dy(e,t){return kc(Cc.statSync(e),t)}function kc(e,t){return e.isFile()&&Ty(e,t)}function Ty(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(),c=parseInt("100",8),a=parseInt("010",8),l=parseInt("001",8),u=c|a,f=r&l||r&a&&n===o||r&c&&i===s||r&u&&s===0;return f}});var Fc=L((u1,Bc)=>{var l1=require("fs"),Vi;process.platform==="win32"||global.TESTING_WINDOWS?Vi=Lc():Vi=Pc();Bc.exports=ks;ks.sync=Ry;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)})})}Vi(e,t||{},function(i,n){i&&(i.code==="EACCES"||t&&t.ignoreErrors)&&(i=null,n=!1),r(i,n)})}function Ry(e,t){try{return Vi.sync(e,t||{})}catch(r){if(t&&t.ignoreErrors||r.code==="EACCES")return!1;throw r}}});var Ps=L((h1,qc)=>{var sr=process.platform==="win32"||process.env.OSTYPE==="cygwin"||process.env.OSTYPE==="msys",Uc=require("path"),Ay=sr?";":":",jc=Fc(),Xc=e=>Object.assign(new Error(`not found: ${e}`),{code:"ENOENT"}),zc=(e,t)=>{let r=t.colon||Ay,i=e.match(/\//)||sr&&e.match(/\\/)?[""]:[...sr?[process.cwd()]:[],...(t.path||process.env.PATH||"").split(r)],n=sr?t.pathExt||process.env.PATHEXT||".EXE;.CMD;.BAT;.COM":"",s=sr?n.split(r):[""];return sr&&e.indexOf(".")!==-1&&s[0]!==""&&s.unshift(""),{pathEnv:i,pathExt:s,pathExtExe:n}},Gc=(e,t,r)=>{typeof t=="function"&&(r=t,t={}),t||(t={});let{pathEnv:i,pathExt:n,pathExtExe:s}=zc(e,t),o=[],c=l=>new Promise((u,f)=>{if(l===i.length)return t.all&&o.length?u(o):f(Xc(e));let y=i[l],b=/^".*"$/.test(y)?y.slice(1,-1):y,E=Uc.join(b,e),m=!b&&/^\.[\\\/]/.test(e)?e.slice(0,2)+E:E;u(a(m,l,0))}),a=(l,u,f)=>new Promise((y,b)=>{if(f===n.length)return y(c(u+1));let E=n[f];jc(l+E,{pathExt:s},(m,w)=>{if(!m&&w)if(t.all)o.push(l+E);else return y(l+E);return y(a(l,u,f+1))})});return r?c(0).then(l=>r(null,l),r):c(0)},Iy=(e,t)=>{t=t||{};let{pathEnv:r,pathExt:i,pathExtExe:n}=zc(e,t),s=[];for(let o=0;o{var it=function(e){"use strict";var t=1e7,r=7,i=9007199254740992,n=y(i),s="0123456789abcdefghijklmnopqrstuvwxyz",o=typeof BigInt=="function";function c(h,p,v,S){return typeof h=="undefined"?c[0]:typeof p!="undefined"?+p==10&&!v?j(h):my(h,p,v,S):j(h)}function a(h,p){this.value=h,this.sign=p,this.isSmall=!1}a.prototype=Object.create(c.prototype);function l(h){this.value=h,this.sign=h<0,this.isSmall=!0}l.prototype=Object.create(c.prototype);function u(h){this.value=h}u.prototype=Object.create(c.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,P;for(P=0;P=M?1:0,I[P]=C-T*M;for(;P0&&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,l.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 l(v+S);S=y(Math.abs(S))}return new a(g(S,Math.abs(v)),v<0)},l.prototype.plus=l.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,P;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 l(S)):new a(S,v)}function _(h,p,v){var S=h.length,I=new Array(S),T=-p,M=t,C,P;for(C=0;C=0)},l.prototype.minus=l.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)},l.prototype.negate=function(){var h=this.sign,p=new l(-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)},l.prototype.abs=function(){return new l(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,P,X,W,z;for(X=0;X0;)S[C++]=T%I,T=Math.floor(T/I);return S}function k(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),P=D(S,T),X=D(d(I,S),d(M,T)),W=d(d(C,k(N(N(X,C),P),v)),k(P,2*v));return E(W),W}function x(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 c[0];if(S===1)return this;if(S===-1)return this.negate();if(T=Math.abs(S),T=0;z--){for(W=I-1,P[z+S]!==M&&(W=Math.floor((P[z+S]*I+P[z+S-1])/M)),Y=0,Tt=0,xs=X.length,vt=0;vtS&&(X=(X+1)*M),C=Math.ceil(X/W);do{if(z=B(p,C),Xt(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,P;for(C=0,T=v-1;T>=0;--T)P=C*I+h[T],M=w(P/p),C=P-M*p,S[T]=M|0;return[S,C|0]}function rt(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 l(w(I/T)),new l(I%T)]:[c[0],h];if(S.isSmall){if(T===1)return[h,c[0]];if(T==-1)return[h.negate(),c[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:Xt(v,S)},l.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:Xt(v,S)*(this.sign?-1:1)},a.prototype.compareTo=a.prototype.compare,l.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},l.prototype.compareTo=l.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=l.prototype.eq=l.prototype.equals=a.prototype.eq=a.prototype.equals,a.prototype.notEquals=function(h){return this.compare(h)!==0},u.prototype.neq=u.prototype.notEquals=l.prototype.neq=l.prototype.notEquals=a.prototype.neq=a.prototype.notEquals,a.prototype.greater=function(h){return this.compare(h)>0},u.prototype.gt=u.prototype.greater=l.prototype.gt=l.prototype.greater=a.prototype.gt=a.prototype.greater,a.prototype.lesser=function(h){return this.compare(h)<0},u.prototype.lt=u.prototype.lesser=l.prototype.lt=l.prototype.lesser=a.prototype.lt=a.prototype.lesser,a.prototype.greaterOrEquals=function(h){return this.compare(h)>=0},u.prototype.geq=u.prototype.greaterOrEquals=l.prototype.geq=l.prototype.greaterOrEquals=a.prototype.geq=a.prototype.greaterOrEquals,a.prototype.lesserOrEquals=function(h){return this.compare(h)<=0},u.prototype.leq=u.prototype.lesserOrEquals=l.prototype.leq=l.prototype.lesserOrEquals=a.prototype.leq=a.prototype.lesserOrEquals,a.prototype.isEven=function(){return(this.value[0]&1)==0},l.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},l.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},l.prototype.isPositive=function(){return this.value>0},u.prototype.isPositive=l.prototype.isPositive,a.prototype.isNegative=function(){return this.sign},l.prototype.isNegative=function(){return this.value<0},u.prototype.isNegative=l.prototype.isNegative,a.prototype.isUnit=function(){return!1},l.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},l.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=l.prototype.isDivisibleBy=a.prototype.isDivisibleBy;function ir(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 nr(h,p){for(var v=h.prev(),S=v,I=0,T,M,C,P;S.isEven();)S=S.divide(2),I++;t:for(C=0;C-i?new l(h-1):new a(n,!0)},u.prototype.prev=function(){return new u(this.value-BigInt(1))};for(var Mt=[1];2*Mt[Mt.length-1]<=t;)Mt.push(2*Mt[Mt.length-1]);var Qt=Mt.length,Pe=Mt[Qt-1];function Ec(h){return Math.abs(h)<=t}a.prototype.shiftLeft=function(h){var p=j(h).toJSNumber();if(!Ec(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>=Qt;)v=v.multiply(Pe),p-=Qt-1;return v.multiply(Mt[p])},u.prototype.shiftLeft=l.prototype.shiftLeft=a.prototype.shiftLeft,a.prototype.shiftRight=function(h){var p,v=j(h).toJSNumber();if(!Ec(v))throw new Error(String(v)+" is too large for shifting.");if(v<0)return this.shiftLeft(-v);for(var S=this;v>=Qt;){if(S.isZero()||S.isNegative()&&S.isUnit())return S;p=rt(S,Pe),S=p[1].isNegative()?p[0].prev():p[0],v-=Qt-1}return p=rt(S,Mt[v]),p[1].isNegative()?p[0].prev():p[0]},u.prototype.shiftRight=l.prototype.shiftRight=a.prototype.shiftRight;function As(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,P=0,X=null,W=null,z=[];!T.isZero()||!M.isZero();)X=rt(T,Pe),C=X[1].toJSNumber(),S&&(C=Pe-1-C),W=rt(M,Pe),P=W[1].toJSNumber(),I&&(P=Pe-1-P),T=X[0],M=W[0],z.push(v(C,P));for(var Y=v(S?1:0,I?1:0)!==0?it(-1):it(0),Tt=z.length-1;Tt>=0;Tt-=1)Y=Y.multiply(Pe).add(it(z[Tt]));return Y}a.prototype.not=function(){return this.negate().prev()},u.prototype.not=l.prototype.not=a.prototype.not,a.prototype.and=function(h){return As(this,h,function(p,v){return p&v})},u.prototype.and=l.prototype.and=a.prototype.and,a.prototype.or=function(h){return As(this,h,function(p,v){return p|v})},u.prototype.or=l.prototype.or=a.prototype.or,a.prototype.xor=function(h){return As(this,h,function(p,v){return p^v})},u.prototype.xor=l.prototype.xor=a.prototype.xor;var Is=1<<30,fy=(t&-t)*(t&-t)|Is;function $i(h){var p=h.value,v=typeof p=="number"?p|Is:typeof p=="bigint"?p|BigInt(Is):p[0]+p[1]*t|fy;return v&-v}function bc(h,p){if(p.compareTo(h)<=0){var v=bc(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:it(1),e:0}}a.prototype.bitLength=function(){var h=this;return h.compareTo(it(0))<0&&(h=h.negate().subtract(it(1))),h.compareTo(it(0))===0?it(0):it(bc(h,it(2)).e).add(it(1))},u.prototype.bitLength=l.prototype.bitLength=a.prototype.bitLength;function _c(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 Sc(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=c[1],S,I;h.isEven()&&p.isEven();)S=Ls($i(h),$i(p)),h=h.divide(S),p=p.divide(S),v=v.multiply(S);for(;h.isEven();)h=h.divide($i(h));do{for(;p.isEven();)p=p.divide($i(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 py(h,p){return h=j(h).abs(),p=j(p).abs(),h.divide(Sc(h,p)).multiply(p)}function dy(h,p,v){h=j(h),p=j(p);var S=v||Math.random,I=Ls(h,p),T=_c(h,p),M=T.subtract(I).add(1);if(M.isSmall)return I.add(Math.floor(S()*M));for(var C=Kr(M,t).value,P=[],X=!0,W=0;W=M){if(P==="1"&&M===1)continue;throw new Error(P+" 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 yy(h,p){return p=p||s,h"}function Kr(h,p){if(p=it(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 Nc(h,p,v){var S=Kr(h,p);return(S.isNegative?"-":"")+S.value.map(function(I){return yy(I,v)}).join("")}a.prototype.toArray=function(h){return Kr(this,h)},l.prototype.toArray=function(h){return Kr(this,h)},u.prototype.toArray=function(h){return Kr(this,h)},a.prototype.toString=function(h,p){if(h===e&&(h=10),h!==10)return Nc(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},l.prototype.toString=function(h,p){return h===e&&(h=10),h!=10?Nc(this,h,p):String(this.value)},u.prototype.toString=l.prototype.toString,u.prototype.toJSON=a.prototype.toJSON=l.prototype.toJSON=function(){return this.toString()},a.prototype.valueOf=function(){return parseInt(this.toString(),10)},a.prototype.toJSNumber=a.prototype.valueOf,l.prototype.valueOf=function(){return this.value},l.prototype.toJSNumber=l.prototype.valueOf,u.prototype.valueOf=u.prototype.toJSNumber=function(){return parseInt(this.toString(),10)};function Dc(h){if(f(+h)){var p=+h;if(p===w(p))return o?new u(BigInt(p)):new l(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 P=[],X=h.length,W=r,z=X-W;X>0;)P.push(+h.slice(z,X)),z-=W,z<0&&(z=0),X-=W;return E(P),new a(P,v)}function gy(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 l(h)}return Dc(h.toString())}function j(h){return typeof h=="number"?gy(h):typeof h=="string"?Dc(h):typeof h=="bigint"?new u(h):h}for(var Be=0;Be<1e3;Be++)c[Be]=j(Be),Be>0&&(c[-Be]=j(-Be));return c.one=c[1],c.zero=c[0],c.minusOne=c[-1],c.max=_c,c.min=Ls,c.gcd=Sc,c.lcm=py,c.isInstance=function(h){return h instanceof a||h instanceof l||h instanceof u},c.randBetween=dy,c.fromArray=function(h,p,v){return Oc(h.map(j),j(p||10),v)},c}();typeof Yi!="undefined"&&Yi.hasOwnProperty("exports")&&(Yi.exports=it);typeof define=="function"&&define.amd&&define(function(){return it})});var Wc=L(nt=>{"use strict";var Ly=require("fs"),xy=$c(),de=!1;nt.maxObjectSize=100*1e3*1e3;nt.maxObjectCount=32768;var My=9783072e5,Cy=nt.UID=function(e){this.UID=e},p1=nt.parseFile=function(e,t){return new Promise(function(r,i){function n(s){let o=null,c;try{c=ky(s),r(c)}catch(a){o=a,i(o)}finally{t&&t(o,c)}}if(Buffer.isBuffer(e))return n(e);Ly.readFile(e,function(s,o){if(s)return i(s),t(s);n(o)})})},ky=nt.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);de&&console.log("offsetSize: "+i);let n=r.readUInt8(7);de&&console.log("objectRefSize: "+n);let s=Bs(r,8);de&&console.log("numObjects: "+s);let o=Bs(r,16);de&&console.log("topObject: "+o);let c=Bs(r,24);if(de&&console.log("offsetTableOffset: "+c),s>nt.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(k){let D="",x;for(x=0;xnt.maxObjectSize)throw new Error("To little heap space available!");let x=[];for(let F=0;Fnt.maxObjectSize)throw new Error("To little heap space available!");de&&console.log("Parsing dictionary #"+u);let x={};for(let F=0;F{Hc.exports={DEFAULT_INITIAL_SIZE:8*1024,DEFAULT_INCREMENT_AMOUNT:8*1024,DEFAULT_FREQUENCY:1,DEFAULT_CHUNK_SIZE:1024}});var Zc=L((y1,Vc)=>{var Yc=require("stream"),Ki=Zi(),By=require("util"),Fy=Vc.exports=function(e){var t=this;Yc.Stream.call(this),e=e||{};var r=e.hasOwnProperty("frequency")?e.frequency:Ki.DEFAULT_FREQUENCY,i=e.chunkSize||Ki.DEFAULT_CHUNK_SIZE,n=e.initialSize||Ki.DEFAULT_INITIAL_SIZE,s=e.incrementAmount||Ki.DEFAULT_INCREMENT_AMOUNT,o=0,c=new Buffer(n),a=null;this.readable=!0,this.writable=!1;var l=function(){var f=Math.min(i,o);if(f>0){var y=null;a?y=c.toString(a,0,f):(y=new Buffer(f),c.copy(y,0,0,f)),t.emit("data",y),f0&&this.emit("readable"),!this.isPaused&&!r)for(;o>0;)l()}},this.pause=function(){this.isPaused=!0,l&&l.interval&&(clearInterval(l.interval),delete l.interval)},this.resume=function(){this.isPaused=!1,l&&!l.interval&&r>0&&(l.interval=setInterval(l,r))},this.destroy=function(){t.emit("end"),l.interval&&clearInterval(l.interval),l=null,t.readable=!1,t.emit("close")},this.destroySoon=function(){t.readable=!1,l.interval||(t.emit("end"),t.emit("close"))},this.setEncoding=function(f){a=f},this.resume()};By.inherits(Fy,Yc.Stream)});var tl=L((g1,Kc)=>{var qy=require("util"),Jc=require("stream"),Qc=Zi(),Uy=Kc.exports=function(e){var t=this;Jc.Stream.call(this),e=e||{};var r=e.initialSize||Qc.DEFAULT_INITIAL_SIZE,i=e.incrementAmount||Qc.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(c){if(!s)return!1;var a=new Buffer(Math.min(c||s,s));return n.copy(a,0,0,a.length),a.length{Ji.exports=Zi();Ji.exports.ReadableStreamBuffer=Zc();Ji.exports.WritableStreamBuffer=tl()});var il=L((w1,Fs)=>{"use strict";var jy=el(),at=!1;function rl(e){this.value=e}Fs.exports=function(e){var t=new jy.WritableStreamBuffer;t.write(new Buffer("bplist00")),at&&console.log("create",require("util").inspect(e,!1,10)),e instanceof Array&&e.length===1&&(e=e[0]);var r=Qi(e);at&&console.log("entries",r);var i=zy(r.length),n=[],s,o;return c(),r.forEach(function(D,x){n[x]=t.size(),D?u(D):t.write(0)}),l(),a(),t.getContents();function c(){var D={},x=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=x++:F.id=x++)}),r=r.filter(function(F){return F.type!=="stringref"})}function a(){at&&console.log("0x"+t.size().toString(16),"writeTrailer"),t.write(new Buffer([0,0,0,0,0,0])),at&&console.log("0x"+t.size().toString(16),"writeTrailer(offsetSizeInBytes):",s),N(s),at&&console.log("0x"+t.size().toString(16),"writeTrailer(offsetSizeInBytes):",i),N(i),at&&console.log("0x"+t.size().toString(16),"writeTrailer(number of objects):",r.length),g(r.length),at&&console.log("0x"+t.size().toString(16),"writeTrailer(top object)"),g(0),at&&console.log("0x"+t.size().toString(16),"writeTrailer(offset table offset):",o),g(o)}function l(){at&&console.log("0x"+t.size().toString(16),"writeOffsetTable"),o=t.size(),s=Xy(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 x=Date.parse(D.value)/1e3-978307200;A(x)}function y(D){if(at){var x=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: "+x+")","(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){at&&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){at&&console.log("0x"+t.size().toString(16),"writeUID",D.value," (type: "+D.type+")","(id: "+D.id+")"),_(8,0),R(D.value)}function m(D){at&&console.log("0x"+t.size().toString(16),"writeArray (length: "+D.entries.length+")","(id: "+D.id+")"),_(10,D.entries.length),D.entries.forEach(function(x){R(x.id)})}function w(D){at&&console.log("0x"+t.size().toString(16),"writeBoolean",D.value,"(id: "+D.id+")"),N(D.value?9:8)}function O(D){if(at&&console.log("0x"+t.size().toString(16),"writeString",D.value,"(id: "+D.id+")"),D.type==="string-utf16"||k(D.value)){var x=new Buffer(D.value,"ucs2");_(6,x.length/2);for(var F=0;F4;)U[V++]=0,x--;for(var $=x-1;$>=0;$--)U[V++]=D>>8*$;t.write(U)}function k(D){return Buffer.byteLength(D,"utf8")!=D.length}};function Qi(e){if(e.bplistOverride)return[e];if(e instanceof Array)return Gy(e);if(e instanceof Buffer)return[{type:"data",value:e}];if(e instanceof rl)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}]:$y(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 Gy(e){at&&console.log("toEntriesArray");var t=[{type:"array",entries:[]}];return e.forEach(function(r){var i=Qi(r);t[0].entries.push(i[0]),t=t.concat(i)}),t}function $y(e){at&&console.log("toEntriesObject");var t=[{type:"dict",entryKeys:[],entryValues:[]}];return Object.keys(e).forEach(function(r){var i=Qi(r);t[0].entryKeys.push(i[0]),t=t.concat(i[0])}),Object.keys(e).forEach(function(r){var i=Qi(e[r]);t[0].entryValues.push(i[0]),t=t.concat(i)}),t}function Xy(e){return e<256?1:e<65536?2:e<4294967296?4:8}function zy(e){return e<256?1:e<65536?2:4}Fs.exports.Real=rl});var fl=L(nl=>{var qs=/[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]/,sl=new RegExp("[\\-\\.0-9"+qs.source.slice(1,-1)+"\\u00B7\\u0300-\\u036F\\u203F-\\u2040]"),ol=new RegExp("^"+qs.source+sl.source+"*(?::"+qs.source+sl.source+"*)?$"),Jr=0,me=1,or=2,Qr=3,ar=4,cr=5,ti=6,tn=7;function al(){}al.prototype={parse:function(e,t,r){var i=this.domBuilder;i.startDocument(),cl(t,t={}),Wy(e,t,r,i,this.errorHandler),i.endDocument()}};function Wy(e,t,r,i,n){function s(G){if(G>65535){G-=65536;var rt=55296+(G>>10),Xt=56320+(G&1023);return String.fromCharCode(rt,Xt)}else return String.fromCharCode(G)}function o(G){var rt=G.slice(1,-1);return rt in r?r[rt]:rt.charAt(0)==="#"?s(parseInt(rt.substr(1).replace("x","0x"))):(n.error("entity not found:"+G),G)}function c(G){if(G>m){var rt=e.substring(m,G).replace(/&#?\w+;/g,o);y&&a(m),i.characters(rt,0,G-m),m=G}}function a(G,rt){for(;G>=u&&(rt=f.exec(e));)l=rt.index,u=l+rt[0].length,y.lineNumber++;y.columnNumber=G-l+1}for(var l=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&&c(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:c(Math.max(w,m)+1)}}function ll(e,t){return t.lineNumber=e.lineNumber,t.columnNumber=e.columnNumber,t}function Hy(e,t,r,i,n,s){for(var o,c,a=++t,l=Jr;;){var u=e.charAt(a);switch(u){case"=":if(l===me)o=e.slice(t,a),l=Qr;else if(l===or)l=Qr;else throw new Error("attribute equal must after attrName");break;case"'":case'"':if(l===Qr||l===me)if(l===me&&(s.warning('attribute value must after "="'),o=e.slice(t,a)),t=a+1,a=e.indexOf(u,t),a>0)c=e.slice(t,a).replace(/&#?\w+;/g,n),r.add(o,c,t-1),l=cr;else throw new Error("attribute value no end '"+u+"' match");else if(l==ar)c=e.slice(t,a).replace(/&#?\w+;/g,n),r.add(o,c,t),s.warning('attribute "'+o+'" missed start quot('+u+")!!"),t=a+1,l=cr;else throw new Error('attribute value must after "="');break;case"/":switch(l){case Jr:r.setTagName(e.slice(t,a));case cr:case ti:case tn:l=tn,r.closed=!0;case ar:case me:case or:break;default:throw new Error("attribute invalid close char('/')")}break;case"":return s.error("unexpected end of input"),l==Jr&&r.setTagName(e.slice(t,a)),a;case">":switch(l){case Jr:r.setTagName(e.slice(t,a));case cr:case ti:case tn:break;case ar:case me:c=e.slice(t,a),c.slice(-1)==="/"&&(r.closed=!0,c=c.slice(0,-1));case or:l===or&&(c=o),l==ar?(s.warning('attribute "'+c+'" missed quot(")!!'),r.add(o,c.replace(/&#?\w+;/g,n),t)):((i[""]!=="http://www.w3.org/1999/xhtml"||!c.match(/^(?:disabled|checked|selected)$/i))&&s.warning('attribute "'+c+'" missed value!! "'+c+'" instead!!'),r.add(c,c,t));break;case Qr:throw new Error("attribute value missed!!")}return a;case"\x80":u=" ";default:if(u<=" ")switch(l){case Jr:r.setTagName(e.slice(t,a)),l=ti;break;case me:o=e.slice(t,a),l=or;break;case ar:var c=e.slice(t,a).replace(/&#?\w+;/g,n);s.warning('attribute "'+c+'" missed quot(")!!'),r.add(o,c,t);case cr:l=ti;break}else switch(l){case or: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,l=me;break;case cr:s.warning('attribute space is required"'+o+'"!!');case ti:l=me,t=a;break;case Qr:l=ar,t=a;break;case tn:throw new Error("elements closed character '/' and '>' must be connected to")}}a++}}function ul(e,t,r){for(var i=e.tagName,n=null,s=e.length;s--;){var o=e[s],c=o.qName,a=o.value,y=c.indexOf(":");if(y>0)var l=o.prefix=c.slice(0,y),u=c.slice(y+1),f=l==="xmlns"&&u;else u=c,l=null,f=c==="xmlns"&&"";o.localName=u,f!==!1&&(n==null&&(n={},cl(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 l=o.prefix;l&&(l==="xml"&&(o.uri="http://www.w3.org/XML/1998/namespace"),l!=="xmlns"&&(o.uri=r[l||""]))}var y=i.indexOf(":");y>0?(l=e.prefix=i.slice(0,y),u=e.localName=i.slice(y+1)):(l=null,u=e.localName=i);var b=e.uri=r[l||""];if(t.startElement(b,u,i,e),e.closed){if(t.endElement(b,u,i),n)for(l in n)t.endPrefixMapping(l)}else return e.currentNSMap=r,e.localNSMap=n,!0}function Vy(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 Yy(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=Jy(e,t),c=o.length;if(c>1&&/!doctype/i.test(o[0][0])){var a=o[1][0],l=c>3&&/^public$/i.test(o[2][0])&&o[3][0],u=c>4&&o[4][0],f=o[c-1];return r.startDTD(a,l&&l.replace(/^(['"])(.*?)\1$/,"$2"),u&&u.replace(/^(['"])(.*?)\1$/,"$2")),r.endDTD(),f.index+f[0].length}}return-1}function Ky(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 hl(e){}hl.prototype={setTagName:function(e){if(!ol.test(e))throw new Error("invalid tagName:"+e);this.tagName=e},add:function(e,t,r){if(!ol.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 en(e,t){return e.__proto__=t,e}en({},en.prototype)instanceof en||(en=function(e,t){function r(){}r.prototype=t,r=new r;for(t in e)r[t]=e[t];return r});function Jy(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}nl.XMLReader=al});var Zs=L(Us=>{function ei(e,t){for(var r in e)t[r]=e[r]}function Et(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,ei(r,s),e.prototype=r=s}r.constructor!=e&&(typeof e!="function"&&console.error("unknow Class:"+e),r.constructor=e)}var Qy="http://www.w3.org/1999/xhtml",bt={},$t=bt.ELEMENT_NODE=1,lr=bt.ATTRIBUTE_NODE=2,rn=bt.TEXT_NODE=3,pl=bt.CDATA_SECTION_NODE=4,dl=bt.ENTITY_REFERENCE_NODE=5,tg=bt.ENTITY_NODE=6,ml=bt.PROCESSING_INSTRUCTION_NODE=7,yl=bt.COMMENT_NODE=8,gl=bt.DOCUMENT_NODE=9,vl=bt.DOCUMENT_TYPE_NODE=10,te=bt.DOCUMENT_FRAGMENT_NODE=11,eg=bt.NOTATION_NODE=12,ft={},ct={},b1=ft.INDEX_SIZE_ERR=(ct[1]="Index size error",1),_1=ft.DOMSTRING_SIZE_ERR=(ct[2]="DOMString size error",2),rg=ft.HIERARCHY_REQUEST_ERR=(ct[3]="Hierarchy request error",3),S1=ft.WRONG_DOCUMENT_ERR=(ct[4]="Wrong document",4),O1=ft.INVALID_CHARACTER_ERR=(ct[5]="Invalid character",5),N1=ft.NO_DATA_ALLOWED_ERR=(ct[6]="No data allowed",6),D1=ft.NO_MODIFICATION_ALLOWED_ERR=(ct[7]="No modification allowed",7),ig=ft.NOT_FOUND_ERR=(ct[8]="Not found",8),T1=ft.NOT_SUPPORTED_ERR=(ct[9]="Not supported",9),wl=ft.INUSE_ATTRIBUTE_ERR=(ct[10]="Attribute in use",10),R1=ft.INVALID_STATE_ERR=(ct[11]="Invalid state",11),A1=ft.SYNTAX_ERR=(ct[12]="Syntax error",12),I1=ft.INVALID_MODIFICATION_ERR=(ct[13]="Invalid modification",13),L1=ft.NAMESPACE_ERR=(ct[14]="Invalid namespace",14),x1=ft.INVALID_ACCESS_ERR=(ct[15]="Invalid access",15);function ur(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,ur);return r.code=e,t&&(this.message=this.message+": "+t),r}ur.prototype=Error.prototype;ei(ft,ur);function ye(){}ye.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==lr?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==lr?t.ownerDocument:t.parentNode}return null},isDefaultNamespace:function(e){var t=this.lookupPrefix(e);return t==null}};function Rl(e){return e=="<"&&"<"||e==">"&&">"||e=="&"&&"&"||e=='"'&&"""||"&#"+e.charCodeAt()+";"}ei(bt,mt);ei(bt,mt.prototype);function sn(e,t){if(t(e))return!0;if(e=e.firstChild)do if(sn(e,t))return!0;while(e=e.nextSibling)}function ii(){}function ng(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 _l(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 Gs(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 Dl(e,t){var r=t.previousSibling,i=t.nextSibling;return r?r.nextSibling=i:e.firstChild=i,i?i.previousSibling=r:e.lastChild=r,Gs(e.ownerDocument,e),t}function Tl(e,t,r){var i=t.parentNode;if(i&&i.removeChild(t),t.nodeType===te){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 Gs(e.ownerDocument||e,e),t.nodeType==te&&(t.firstChild=t.lastChild=null),t}function sg(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,Gs(e.ownerDocument,e,t),t}ii.prototype={nodeName:"#document",nodeType:gl,doctype:null,documentElement:null,_inc:1,insertBefore:function(e,t){if(e.nodeType==te){for(var r=e.firstChild;r;){var i=r.nextSibling;this.insertBefore(r,t),r=i}return e}return this.documentElement==null&&e.nodeType==$t&&(this.documentElement=e),Tl(this,e,t),e.ownerDocument=this,e},removeChild:function(e){return this.documentElement==e&&(this.documentElement=null),Dl(this,e)},importNode:function(e,t){return Al(this,e,t)},getElementById:function(e){var t=null;return sn(this.documentElement,function(r){if(r.nodeType==$t&&r.getAttribute("id")==e)return t=r,!0}),t},createElement:function(e){var t=new fr;t.ownerDocument=this,t.nodeName=e,t.tagName=e,t.childNodes=new ye;var r=t.attributes=new nn;return r._ownerElement=t,t},createDocumentFragment:function(){var e=new an;return e.ownerDocument=this,e.childNodes=new ye,e},createTextNode:function(e){var t=new $s;return t.ownerDocument=this,t.appendData(e),t},createComment:function(e){var t=new Ws;return t.ownerDocument=this,t.appendData(e),t},createCDATASection:function(e){var t=new Hs;return t.ownerDocument=this,t.appendData(e),t},createProcessingInstruction:function(e,t){var r=new Ys;return r.ownerDocument=this,r.tagName=r.target=e,r.nodeValue=r.data=t,r},createAttribute:function(e){var t=new on;return t.ownerDocument=this,t.name=e,t.nodeName=e,t.localName=e,t.specified=!0,t},createEntityReference:function(e){var t=new Vs;return t.ownerDocument=this,t.nodeName=e,t},createElementNS:function(e,t){var r=new fr,i=t.split(":"),n=r.attributes=new nn;return r.childNodes=new ye,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 on,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}};Et(ii,mt);function fr(){this._nsMap={}}fr.prototype={nodeType:$t,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===te?this.insertBefore(e,null):sg(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 ri(this,function(t){var r=[];return sn(t,function(i){i!==t&&i.nodeType==$t&&(e==="*"||i.tagName==e)&&r.push(i)}),r})},getElementsByTagNameNS:function(e,t){return new ri(this,function(r){var i=[];return sn(r,function(n){n!==r&&n.nodeType===$t&&(e==="*"||n.namespaceURI===e)&&(t==="*"||n.localName==t)&&i.push(n)}),i})}};ii.prototype.getElementsByTagName=fr.prototype.getElementsByTagName;ii.prototype.getElementsByTagNameNS=fr.prototype.getElementsByTagNameNS;Et(fr,mt);function on(){}on.prototype.nodeType=lr;Et(on,mt);function ni(){}ni.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[rg])},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}};Et(ni,mt);function $s(){}$s.prototype={nodeName:"#text",nodeType:rn,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}};Et($s,ni);function Ws(){}Ws.prototype={nodeName:"#comment",nodeType:yl};Et(Ws,ni);function Hs(){}Hs.prototype={nodeName:"#cdata-section",nodeType:pl};Et(Hs,ni);function Xs(){}Xs.prototype.nodeType=vl;Et(Xs,mt);function Il(){}Il.prototype.nodeType=eg;Et(Il,mt);function Ll(){}Ll.prototype.nodeType=tg;Et(Ll,mt);function Vs(){}Vs.prototype.nodeType=dl;Et(Vs,mt);function an(){}an.prototype.nodeName="#document-fragment";an.prototype.nodeType=te;Et(an,mt);function Ys(){}Ys.prototype.nodeType=ml;Et(Ys,mt);function xl(){}xl.prototype.serializeToString=function(e,t,r){return Ml.call(e,t,r)};mt.prototype.toString=Ml;function Ml(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 hr(this,r,e,t,o),r.join("")}function Cl(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 hr(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 $t:n||(n=[]);var s=n.length,o=e.attributes,c=o.length,a=e.firstChild,l=e.tagName;r=Qy===e.namespaceURI||r,t.push("<",l);for(var u=0;u"),r&&/^script$/i.test(l))for(;a;)a.data?t.push(a.data):hr(a,t,r,i,n),a=a.nextSibling;else for(;a;)hr(a,t,r,i,n),a=a.nextSibling;t.push("")}else t.push("/>");return;case gl:case te:for(var a=e.firstChild;a;)hr(a,t,r,i,n),a=a.nextSibling;return;case lr:return t.push(" ",e.name,'="',e.value.replace(/[<&"]/g,Rl),'"');case rn:return t.push(e.data.replace(/[<&]/g,Rl));case pl:return t.push("");case yl:return t.push("");case vl: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 ml:return t.push("");case dl:return t.push("&",e.nodeName,";");default:t.push("??",e.nodeName)}}function Al(e,t,r){var i;switch(t.nodeType){case $t:i=t.cloneNode(!1),i.ownerDocument=e;case te:break;case lr:r=!0;break}if(i||(i=t.cloneNode(!1)),i.ownerDocument=e,i.parentNode=null,r)for(var n=t.firstChild;n;)i.appendChild(Al(e,n,r)),n=n.nextSibling;return i}function zs(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 ye),i.ownerDocument=e,i.nodeType){case $t:var o=t.attributes,c=i.attributes=new nn,a=o.length;c._ownerElement=i;for(var l=0;l{function kl(e){this.options=e||{locator:{}}}kl.prototype.parseFromString=function(e,t){var r=this.options,i=new ag,n=r.domBuilder||new ln,s=r.errorHandler,o=r.locator,c=r.xmlns||{},a={lt:"<",gt:">",amp:"&",quot:'"',apos:"'"};return o&&n.setDocumentLocator(o),i.errorHandler=og(s,n,o),i.domBuilder=r.domBuilder||n,/\/x?html?$/.test(t)&&(a.nbsp="\xA0",a.copy="\xA9",c[""]="http://www.w3.org/1999/xhtml"),c.xml=c.xml||"http://www.w3.org/XML/1998/namespace",e?i.parse(e,c,a):i.errorHandler.error("invalid doc source"),n.doc};function og(e,t,r){if(!e){if(t instanceof ln)return t;e=t}var i={},n=e instanceof Function;r=r||{};function s(o){var c=e[o];!c&&n&&(c=e.length==2?function(a){e(o,a)}:e),i[o]=c&&function(a){c("[xmldom "+o+"] "+a+un(r))}||function(){}}return s("warning"),s("error"),s("fatalError"),i}function ln(){this.cdata=!1}function pr(e,t){t.lineNumber=e.lineNumber,t.columnNumber=e.columnNumber}ln.prototype={startDocument:function(){this.doc=new cg().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;hn(this,s),this.currentElement=s,this.locator&&pr(this.locator,s);for(var c=0;c=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){ln.prototype[e]=function(){return null}});function hn(e,t){e.currentElement?e.currentElement.appendChild(t):e.doc.appendChild(t)}var ag=fl().XMLReader,cg=cn.DOMImplementation=Zs().DOMImplementation;cn.XMLSerializer=Zs().XMLSerializer;cn.DOMParser=kl});var Ul=L(Fl=>{var lg=Bl().DOMParser;Fl.parse=ug;var fn=3,ql=4,hg=8;function Ks(e){return e.nodeType===fn||e.nodeType===hg||e.nodeType===ql}function ee(e){return!e.childNodes||e.childNodes.length===0}function dr(e,t){if(!e)throw new Error(t)}function ug(e){var t=new lg().parseFromString(e);dr(t.documentElement.nodeName==="plist","malformed document. First element should be ");var r=mr(t.documentElement);return r.length==1&&(r=r[0]),r}function mr(e){var t,r,i,n,s,o,c,a;if(!e)return null;if(e.nodeName==="plist"){if(s=[],ee(e))return s;for(t=0;t."),i=mr(e.childNodes[t])):(dr(e.childNodes[t].nodeName!=="key",'Unexpected key "'+mr(e.childNodes[t])+'" while parsing .'),r[i]=mr(e.childNodes[t])),c+=1);if(c%2==1)throw new Error('Missing value for "'+i+'" while parsing ');return r}else if(e.nodeName==="array"){if(s=[],ee(e))return s;for(t=0;t{"use strict";pn.byteLength=fg;pn.toByteArray=pg;pn.fromByteArray=dg;var Wt=[],Ct=[],mg=typeof Uint8Array!="undefined"?Uint8Array:Array,Js="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";for(var yr=0,yg=Js.length;yr0)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 fg(e){var t=jl(e),r=t[0],i=t[1];return(r+i)*3/4-i}function gg(e,t,r){return(t+r)*3/4-r}function pg(e){var t,r=jl(e),i=r[0],n=r[1],s=new mg(gg(e,i,n)),o=0,c=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=Ct[e.charCodeAt(a)]<<2|Ct[e.charCodeAt(a+1)]>>4,s[o++]=t&255),n===1&&(t=Ct[e.charCodeAt(a)]<<10|Ct[e.charCodeAt(a+1)]<<4|Ct[e.charCodeAt(a+2)]>>2,s[o++]=t>>8&255,s[o++]=t&255),s}function vg(e){return Wt[e>>18&63]+Wt[e>>12&63]+Wt[e>>6&63]+Wt[e&63]}function wg(e,t,r){for(var i,n=[],s=t;sc?c:o+s));return i===1?(t=e[r-1],n.push(Wt[t>>2]+Wt[t<<4&63]+"==")):i===2&&(t=(e[r-2]<<8)+e[r-1],n.push(Wt[t>>10]+Wt[t>>4&63]+Wt[t<<2&63]+"=")),n.join("")}});var re=L((zl,Fe)=>{(function(){var e,t,r,i,n,s,o=[].slice,c={}.hasOwnProperty;e=function(){var a,l,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;$l.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(Gl)});var si=L((Wl,Hl)=>{(function(){var e,t,r,i,n,s,o=function(a,l){for(var u in l)c.call(l,u)&&(a[u]=l[u]);function f(){this.constructor=a}return f.prototype=l.prototype,a.prototype=new f,a.__super__=l.prototype,a},c={}.hasOwnProperty;s=re(),n=s.isObject,i=s.isFunction,r=_t(),e=Qs(),Hl.exports=t=function(a){o(l,a);function l(u,f,y){if(l.__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 l.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)!c.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},l.prototype.attribute=function(u,f){var y,b;if(u!=null&&(u=u.valueOf()),n(u))for(y in u)!c.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},l.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 c(){this.constructor=n}return c.prototype=s.prototype,n.prototype=new c,n.__super__=s.prototype,n},i={}.hasOwnProperty;t=_t(),Yl.exports=e=function(n){r(s,n);function s(o,c){if(s.__super__.constructor.call(this,o),c==null)throw new Error("Missing CDATA text");this.text=this.stringify.cdata(c)}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(Vl)});var ai=L((Zl,Kl)=>{(function(){var e,t,r=function(n,s){for(var o in s)i.call(s,o)&&(n[o]=s[o]);function c(){this.constructor=n}return c.prototype=s.prototype,n.prototype=new c,n.__super__=s.prototype,n},i={}.hasOwnProperty;t=_t(),Kl.exports=e=function(n){r(s,n);function s(o,c){if(s.__super__.constructor.call(this,o),c==null)throw new Error("Missing comment text");this.text=this.stringify.comment(c)}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(Zl)});var ci=L((Jl,Ql)=>{(function(){var e,t,r,i=function(s,o){for(var c in o)n.call(o,c)&&(s[c]=o[c]);function a(){this.constructor=s}return a.prototype=o.prototype,s.prototype=new a,s.__super__=o.prototype,s},n={}.hasOwnProperty;r=re().isObject,t=_t(),Ql.exports=e=function(s){i(o,s);function o(c,a,l,u){var f;o.__super__.constructor.call(this,c),r(a)&&(f=a,a=f.version,l=f.encoding,u=f.standalone),a||(a="1.0"),this.version=this.stringify.xmlVersion(a),l!=null&&(this.encoding=this.stringify.xmlEncoding(l)),u!=null&&(this.standalone=this.stringify.xmlStandalone(u))}return o.prototype.toString=function(c){return this.options.writer.set(c).declaration(this)},o}(t)}).call(Jl)});var li=L((tu,eu)=>{(function(){var e,t,r=function(n,s){for(var o in s)i.call(s,o)&&(n[o]=s[o]);function c(){this.constructor=n}return c.prototype=s.prototype,n.prototype=new c,n.__super__=s.prototype,n},i={}.hasOwnProperty;t=_t(),eu.exports=e=function(n){r(s,n);function s(o,c,a,l,u,f){if(s.__super__.constructor.call(this,o),c==null)throw new Error("Missing DTD element name");if(a==null)throw new Error("Missing DTD attribute name");if(!l)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(c),this.attributeName=this.stringify.attName(a),this.attributeType=this.stringify.dtdAttType(l),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(tu)});var ui=L((ru,iu)=>{(function(){var e,t,r,i=function(s,o){for(var c in o)n.call(o,c)&&(s[c]=o[c]);function a(){this.constructor=s}return a.prototype=o.prototype,s.prototype=new a,s.__super__=o.prototype,s},n={}.hasOwnProperty;r=re().isObject,t=_t(),iu.exports=e=function(s){i(o,s);function o(c,a,l,u){if(o.__super__.constructor.call(this,c),l==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(l),!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(c){return this.options.writer.set(c).dtdEntity(this)},o}(t)}).call(ru)});var hi=L((nu,su)=>{(function(){var e,t,r=function(n,s){for(var o in s)i.call(s,o)&&(n[o]=s[o]);function c(){this.constructor=n}return c.prototype=s.prototype,n.prototype=new c,n.__super__=s.prototype,n},i={}.hasOwnProperty;t=_t(),su.exports=e=function(n){r(s,n);function s(o,c,a){if(s.__super__.constructor.call(this,o),c==null)throw new Error("Missing DTD element name");a||(a="(#PCDATA)"),Array.isArray(a)&&(a="("+a.join(",")+")"),this.name=this.stringify.eleName(c),this.value=this.stringify.dtdElementValue(a)}return s.prototype.toString=function(o){return this.options.writer.set(o).dtdElement(this)},s}(t)}).call(nu)});var fi=L((ou,au)=>{(function(){var e,t,r=function(n,s){for(var o in s)i.call(s,o)&&(n[o]=s[o]);function c(){this.constructor=n}return c.prototype=s.prototype,n.prototype=new c,n.__super__=s.prototype,n},i={}.hasOwnProperty;t=_t(),au.exports=e=function(n){r(s,n);function s(o,c,a){if(s.__super__.constructor.call(this,o),c==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(c),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(ou)});var pi=L((cu,lu)=>{(function(){var e,t,r,i,n,s,o,c=function(l,u){for(var f in u)a.call(u,f)&&(l[f]=u[f]);function y(){this.constructor=l}return y.prototype=u.prototype,l.prototype=new y,l.__super__=u.prototype,l},a={}.hasOwnProperty;o=re().isObject,s=_t(),e=li(),r=ui(),t=hi(),i=fi(),lu.exports=n=function(l){c(u,l);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(cu)});var di=L((uu,hu)=>{(function(){var e,t,r=function(n,s){for(var o in s)i.call(s,o)&&(n[o]=s[o]);function c(){this.constructor=n}return c.prototype=s.prototype,n.prototype=new c,n.__super__=s.prototype,n},i={}.hasOwnProperty;e=_t(),hu.exports=t=function(n){r(s,n);function s(o,c){if(s.__super__.constructor.call(this,o),c==null)throw new Error("Missing raw text");this.value=this.stringify.raw(c)}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(uu)});var mi=L((fu,pu)=>{(function(){var e,t,r=function(n,s){for(var o in s)i.call(s,o)&&(n[o]=s[o]);function c(){this.constructor=n}return c.prototype=s.prototype,n.prototype=new c,n.__super__=s.prototype,n},i={}.hasOwnProperty;e=_t(),pu.exports=t=function(n){r(s,n);function s(o,c){if(s.__super__.constructor.call(this,o),c==null)throw new Error("Missing element text");this.value=this.stringify.eleText(c)}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(fu)});var yi=L((du,mu)=>{(function(){var e,t,r=function(n,s){for(var o in s)i.call(s,o)&&(n[o]=s[o]);function c(){this.constructor=n}return c.prototype=s.prototype,n.prototype=new c,n.__super__=s.prototype,n},i={}.hasOwnProperty;e=_t(),mu.exports=t=function(n){r(s,n);function s(o,c,a){if(s.__super__.constructor.call(this,o),c==null)throw new Error("Missing instruction target");this.target=this.stringify.insTarget(c),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(du)});var _t=L((yu,gu)=>{(function(){var e,t,r,i,n,s,o,c,a,l,u,f,y,b={}.hasOwnProperty;y=re(),f=y.isObject,u=y.isFunction,l=y.isEmpty,n=null,e=null,t=null,r=null,i=null,c=null,a=null,o=null,gu.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=si(),e=oi(),t=ai(),r=ci(),i=pi(),c=di(),a=mi(),o=yi())}return E.prototype.element=function(m,w,O){var d,g,N,A,_,R,B,k,D,x;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;wu.exports=e=function(){function i(n){this.assertLegalChar=t(this.assertLegalChar,this);var s,o,c;n||(n={}),this.noDoubleEncoding=n.noDoubleEncoding,o=n.stringify||{};for(s in o)!r.call(o,s)||(c=o[s],this[s]=c)}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;bu.exports=e=function(){function r(i){var n,s,o,c,a,l,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=(c=i.newline)!=null?c:` -`,this.offset=(a=i.offset)!=null?a:0,this.dontprettytextnodes=(l=i.dontprettytextnodes)!=null?l: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(Eu)});var dn=L((_u,Su)=>{(function(){var e,t,r,i,n,s,o,c,a,l,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=ci(),c=pi(),e=oi(),t=ai(),a=si(),u=di(),y=mi(),l=yi(),r=li(),i=hi(),n=ui(),s=fi(),b=eo(),Su.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 l):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,k,D,x,F,U,V,$,G;g||(g=0),G=!1,this.textispresent?(this.newline="",this.pretty=!1):(this.newline=this.newlinedefault,this.pretty=this.prettydefault),$=this.space(g),x="",x+=$+"<"+d.name,F=d.attributes;for(D in F)!m.call(F,D)||(N=F[D],x+=this.attribute(N));if(d.children.length===0||d.children.every(function(rt){return rt.value===""}))this.allowEmpty?x+=">"+this.newline:x+=this.spacebeforeslash+"/>"+this.newline;else if(this.pretty&&d.children.length===1&&d.children[0].value!=null)x+=">",x+=d.children[0].value,x+=""+this.newline;else{if(this.dontprettytextnodes){for(U=d.children,_=0,B=U.length;_"+this.newline,V=d.children,R=0,k=V.length;R"+this.newline}return x},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 c):return this.space(g)+"]>"+this.newline}},O}(b)}).call(_u)});var Du=L((Ou,Nu)=>{(function(){var e,t,r,i,n,s=function(c,a){for(var l in a)o.call(a,l)&&(c[l]=a[l]);function u(){this.constructor=c}return u.prototype=a.prototype,c.prototype=new u,c.__super__=a.prototype,c},o={}.hasOwnProperty;n=re().isPlainObject,t=_t(),i=to(),r=dn(),Nu.exports=e=function(c){s(a,c);function a(l){a.__super__.constructor.call(this,null),l||(l={}),l.writer||(l.writer=new r),this.options=l,this.stringify=new i(l),this.isDocument=!0}return a.prototype.end=function(l){var u;return l?n(l)&&(u=l,l=this.options.writer.set(u)):l=this.options.writer,l.document(this)},a.prototype.toString=function(l){return this.options.writer.set(l).document(this)},a}(t)}).call(Ou)});var Au=L((Tu,Ru)=>{(function(){var e,t,r,i,n,s,o,c,a,l,u,f,y,b,E,m,w,O,d,g,N={}.hasOwnProperty;g=re(),O=g.isObject,w=g.isFunction,d=g.isPlainObject,u=si(),t=oi(),r=ai(),y=di(),m=mi(),f=yi(),c=ci(),a=pi(),i=li(),s=ui(),n=hi(),o=fi(),e=Qs(),E=to(),b=dn(),Ru.exports=l=function(){function A(_,R,B){var k;_||(_={}),_.writer?d(_.writer)&&(k=_.writer,_.writer=new b(k)):_.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 k;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)||(k=[R,B],B=k[0],R=k[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,k;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)||(k=_[B],this.attribute(B,k));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,k,D,x,F;if(this.openCurrent(),_!=null&&(_=_.valueOf()),R!=null&&(R=R.valueOf()),Array.isArray(_))for(B=0,x=_.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(Tu)});var xu=L((Iu,Lu)=>{(function(){var e,t,r,i,n,s,o,c,a,l,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=ci(),c=pi(),e=oi(),t=ai(),a=si(),u=di(),y=mi(),l=yi(),r=li(),i=hi(),n=ui(),s=fi(),b=eo(),Lu.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,k,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,k=d.children,D=[],A=0,R=k.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 l):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,k,D,x;g||(g=0),x=this.space(g),this.stream.write(x+"<"+d.name),k=d.attributes;for(B in k)!m.call(k,B)||(N=k[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(Iu)});var Cu=L((Mu,gi)=>{(function(){var e,t,r,i,n,s,o;o=re(),n=o.assign,s=o.isFunction,e=Du(),t=Au(),i=dn(),r=xu(),gi.exports.create=function(c,a,l,u){var f,y;if(c==null)throw new Error("Root element needs a name");return u=n({},a,l,u),f=new e(u),y=f.element(c),u.headless||(f.declaration(u),(u.pubID!=null||u.sysID!=null)&&f.doctype(u)),y},gi.exports.begin=function(c,a,l){var u;return s(c)&&(u=[c,a],a=u[0],l=u[1],c={}),a?new t(c,a,l):new e(c)},gi.exports.stringWriter=function(c){return new i(c)},gi.exports.streamWriter=function(c,a){return new r(c,a)}}).call(Mu)});var Fu=L(ku=>{var Pu=Xl(),Eg=Cu();ku.build=bg;function _g(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 Sg=Object.prototype.toString;function Bu(e){var t=Sg.call(e).match(/\[object (.*)\]/);return t&&t[1]}function bg(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=Eg.create("plist");return n.dec(r.version,r.encoding,r.standalone),n.dtd(i.pubid,i.sysid),n.att("version","1.0"),ro(e,n),t||(t={}),t.pretty=t.pretty!==!1,n.end(t)}function ro(e,t){var r,i,n,s=Bu(e);if(s!="Undefined")if(Array.isArray(e))for(t=t.ele("array"),i=0;i{var qu=Ul();Object.keys(qu).forEach(function(e){io[e]=qu[e]});var Uu=Fu();Object.keys(Uu).forEach(function(e){io[e]=Uu[e]})});var Gu=L((q1,Xu)=>{var zu=Wc(),mn=il(),gr=ju(),ge=require("fs");function no(e,t){let r=e[0],i;try{if(r===60||r==="<")i=gr.parse(e.toString());else if(r===98)[i]=zu.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 Og(e){let t=ge.readFileSync(e);return t.length===0?{}:no(t,e)}function Ng(e,t){ge.readFile(e,(r,i)=>{if(r)return t(r);let n;try{n=no(i,e)}catch(s){return t(s)}return t(null,n)})}function Dg(e,t,r){let i=gr.build(t);return ge.writeFileSync(e,i,r)}function Tg(e,t,r,i){arguments.length===3&&typeof r=="function"?ge.writeFile(e,gr.build(t),r):ge.writeFile(e,gr.build(t),r,i)}function Rg(e,t,r){return ge.writeFileSync(e,mn(t),r)}function Ag(e,t,r,i){arguments.length===3&&typeof r=="function"?ge.writeFile(e,mn(t),r):ge.writeFile(e,mn(t),r,i)}function Ig(e){return gr.build(e)}Xu.exports={bplistCreator:mn,bplistParser:zu,parse:no,plist:gr,readFile:Ng,readFileSync:Og,stringify:Ig,writeBinaryFile:Ag,writeBinaryFileSync:Rg,writeFile:Tg,writeFileSync:Dg}});var Wu=L((U1,$u)=>{"use strict";$u.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 so=L((j1,Hu)=>{var vi=Wu(),Vu={};for(let e of Object.keys(vi))Vu[vi[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"]}};Hu.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,c,a;s===n?c=0:t===s?c=(r-i)/o:r===s?c=2+(i-t)/o:i===s&&(c=4+(t-r)/o),c=Math.min(c*60,360),c<0&&(c+=360);let l=(n+s)/2;return s===n?a=0:l<=.5?a=o/(s+n):a=o/(2-s-n),[c,a*100,l*100]};q.rgb.hsv=function(e){let t,r,i,n,s,o=e[0]/255,c=e[1]/255,a=e[2]/255,l=Math.max(o,c,a),u=l-Math.min(o,c,a),f=function(y){return(l-y)/6/u+1/2};return u===0?(n=0,s=0):(s=u/l,t=f(o),r=f(c),i=f(a),o===l?n=i-r:c===l?n=1/3+t-i:a===l&&(n=2/3+r-t),n<0?n+=1:n>1&&(n-=1)),[n*360,s*100,l*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,c=(1-i-n)/(1-n)||0;return[s*100,o*100,c*100,n*100]};function Lg(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=Vu[e];if(t)return t;let r=Infinity,i;for(let n of Object.keys(vi)){let s=vi[n],o=Lg(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),c=200*(i-n);return[s,o,c]};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 c=2*i-n,a=[0,0,0];for(let l=0;l<3;l++)s=t+1/3*-(l-1),s<0&&s++,s>1&&s--,6*s<1?o=c+(n-c)*6*s:2*s<1?o=n:3*s<2?o=c+(n-c)*(2/3-s)*6:o=c,a[l]=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,c=i===0?2*n/(s+n):2*r/(i+r);return[t,c*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),c=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[c,i,o];case 2:return[o,i,a];case 3:return[o,c,i];case 4:return[a,o,i];case 5:return[i,o,c]}};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 c=(2-r)*n;return s=r*n,s/=c<=1?c:2-c,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),c=1-i;s=6*t-o,(o&1)!=0&&(s=1-s);let a=r+s*(c-r),l,u,f;switch(o){default:case 6:case 0:l=c,u=a,f=r;break;case 1:l=a,u=c,f=r;break;case 2:l=r,u=c,f=a;break;case 3:l=r,u=a,f=c;break;case 4:l=a,u=r,f=c;break;case 5:l=c,u=r,f=a;break}return[l*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),c=1-Math.min(1,i*(1-n)+n);return[s*255,o*255,c*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 c=s**3,a=n**3,l=o**3;return s=c>.008856?c:(s-16/116)/7.787,n=a>.008856?a:(n-16/116)/7.787,o=l>.008856?l:(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(c=>c+c).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,c,a;return o<1?c=s/(1-o):c=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,c*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,c=1-o,a=0;switch(Math.floor(s)){case 0:n[0]=1,n[1]=o,n[2]=0;break;case 1:n[0]=c,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]=c,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]=c}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 Zu=L((X1,Yu)=>{var yn=so();function xg(){let e={},t=Object.keys(yn);for(let r=t.length,i=0;i{var oo=so(),Pg=Zu(),vr={},Bg=Object.keys(oo);function Fg(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 qg(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{vr[e]={},Object.defineProperty(vr[e],"channels",{value:oo[e].channels}),Object.defineProperty(vr[e],"labels",{value:oo[e].labels});let t=Pg(e);Object.keys(t).forEach(i=>{let n=t[i];vr[e][i]=qg(n),vr[e][i].raw=Fg(n)})});Ku.exports=vr});var nh=L((G1,Qu)=>{"use strict";var th=(e,t)=>(...r)=>`[${e(...r)+t}m`,eh=(e,t)=>(...r)=>{let i=e(...r);return`[${38+t};5;${i}m`},rh=(e,t)=>(...r)=>{let i=e(...r);return`[${38+t};2;${i[0]};${i[1]};${i[2]}m`},gn=e=>e,ih=(e,t,r)=>[e,t,r],wr=(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})},ao,Er=(e,t,r,i)=>{ao===void 0&&(ao=Ju());let n=i?10:0,s={};for(let[o,c]of Object.entries(ao)){let a=o==="ansi16"?"ansi":o;o===t?s[a]=e(r,n):typeof c=="object"&&(s[a]=e(c[t],n))}return s};function Ug(){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="",wr(t.color,"ansi",()=>Er(th,"ansi16",gn,!1)),wr(t.color,"ansi256",()=>Er(eh,"ansi256",gn,!1)),wr(t.color,"ansi16m",()=>Er(rh,"rgb",ih,!1)),wr(t.bgColor,"ansi",()=>Er(th,"ansi16",gn,!0)),wr(t.bgColor,"ansi256",()=>Er(eh,"ansi256",gn,!0)),wr(t.bgColor,"ansi16m",()=>Er(rh,"rgb",ih,!0)),t}Object.defineProperty(Qu,"exports",{enumerable:!0,get:Ug})});var oh=L(($1,sh)=>{"use strict";sh.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 jg=require("os"),ch=require("tty"),kt=oh(),{env:lt}=process,ve;kt("no-color")||kt("no-colors")||kt("color=false")||kt("color=never")?ve=0:(kt("color")||kt("colors")||kt("color=true")||kt("color=always"))&&(ve=1);"FORCE_COLOR"in lt&&(lt.FORCE_COLOR==="true"?ve=1:lt.FORCE_COLOR==="false"?ve=0:ve=lt.FORCE_COLOR.length===0?1:Math.min(parseInt(lt.FORCE_COLOR,10),3));function co(e){return e===0?!1:{level:e,hasBasic:!0,has256:e>=2,has16m:e>=3}}function lo(e,t){if(ve===0)return 0;if(kt("color=16m")||kt("color=full")||kt("color=truecolor"))return 3;if(kt("color=256"))return 2;if(e&&!t&&ve===void 0)return 0;let r=ve||0;if(lt.TERM==="dumb")return r;if(process.platform==="win32"){let i=jg.release().split(".");return Number(i[0])>=10&&Number(i[2])>=10586?Number(i[2])>=14931?3:2:1}if("CI"in lt)return["TRAVIS","CIRCLECI","APPVEYOR","GITLAB_CI","GITHUB_ACTIONS","BUILDKITE"].some(i=>i in lt)||lt.CI_NAME==="codeship"?1:r;if("TEAMCITY_VERSION"in lt)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(lt.TEAMCITY_VERSION)?1:0;if(lt.COLORTERM==="truecolor")return 3;if("TERM_PROGRAM"in lt){let i=parseInt((lt.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(lt.TERM_PROGRAM){case"iTerm.app":return i>=3?3:2;case"Apple_Terminal":return 2}}return/-256(color)?$/i.test(lt.TERM)?2:/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(lt.TERM)||"COLORTERM"in lt?1:r}function Xg(e){let t=lo(e,e&&e.isTTY);return co(t)}ah.exports={supportsColor:Xg,stdout:co(lo(!0,ch.isatty(1))),stderr:co(lo(!0,ch.isatty(2)))}});var hh=L((H1,uh)=>{"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},Gg=(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 +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:` +`,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 `:` `)+r,n=i+1,i=e.indexOf(` -`,n)}while(i!==-1);return s+=e.substr(n),s};uh.exports={stringReplaceAll:zg,stringEncaseCRLFWithFirstIndex:Gg}});var yh=L((V1,fh)=>{"use strict";var $g=/(?:\\(u(?:[a-f\d]{4}|\{[a-f\d]{1,6}\})|x[a-f\d]{2}|.))|(?:\{(~)?(\w+(?:\([^)]*\))?(?:\.\w+(?:\([^)]*\))?)*)(?:[ \t]|(?=\r?\n)))|(\})|((?:.|[\r\n\f])+?)/gi,ph=/(?:^|\.)(\w+)(?:\(([^)]*)\))?/g,Wg=/^(['"])((?:\\.|(?!\1)[^\\])*)\1$/,Hg=/\\(u(?:[a-f\d]{4}|{[a-f\d]{1,6}})|x[a-f\d]{2}|.)|([^\\])/gi,Vg=new Map([["n",` -`],["r","\r"],["t"," "],["b","\b"],["f","\f"],["v","\v"],["0","\0"],["\\","\\"],["e",""],["a","\x07"]]);function dh(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)):Vg.get(e)||e}function Yg(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(Wg))r.push(n[2].replace(Hg,(c,a,l)=>a?dh(a):l));else throw new Error(`Invalid Chalk template style argument: ${s} (in style '${e}')`)}return r}function Zg(e){ph.lastIndex=0;let t=[],r;for(;(r=ph.exec(e))!==null;){let i=r[1];if(r[2]){let n=Yg(i,r[2]);t.push([i].concat(n))}else t.push([i])}return t}function mh(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}fh.exports=(e,t)=>{let r=[],i=[],n=[];if(t.replace($g,(s,o,c,a,l,u)=>{if(o)n.push(dh(o));else if(a){let f=n.join("");n=[],i.push(r.length===0?f:mh(e,r)(f)),r.push({inverse:c,styles:Zg(a)})}else if(l){if(r.length===0)throw new Error("Found extraneous } in Chalk template literal");i.push(mh(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 mo=L((Y1,gh)=>{"use strict";var wi=nh(),{stdout:uo,stderr:ho}=lh(),{stringReplaceAll:Kg,stringEncaseCRLFWithFirstIndex:Jg}=hh(),{isArray:vn}=Array,vh=["ansi","ansi","ansi256","ansi16m"],br=Object.create(null),Qg=(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=uo?uo.level:0;e.level=t.level===void 0?r:t.level},wh=class{constructor(t){return Eh(t)}},Eh=e=>{let t={};return Qg(t,e),t.template=(...r)=>bh(t.template,...r),Object.setPrototypeOf(t,wn.prototype),Object.setPrototypeOf(t.template,t),t.template.constructor=()=>{throw new Error("`chalk.constructor()` is deprecated. Use `new chalk.Instance()` instead.")},t.template.Instance=wh,t.template};function wn(e){return Eh(e)}for(let[e,t]of Object.entries(wi))br[e]={get(){let r=En(this,fo(t.open,t.close,this._styler),this._isEmpty);return Object.defineProperty(this,e,{value:r}),r}};br.visible={get(){let e=En(this,this._styler,!0);return Object.defineProperty(this,"visible",{value:e}),e}};var _h=["rgb","hex","keyword","hsl","hsv","hwb","ansi","ansi256"];for(let e of _h)br[e]={get(){let{level:t}=this;return function(...r){let i=fo(wi.color[vh[t]][e](...r),wi.color.close,this._styler);return En(this,i,this._isEmpty)}}};for(let e of _h){let t="bg"+e[0].toUpperCase()+e.slice(1);br[t]={get(){let{level:r}=this;return function(...i){let n=fo(wi.bgColor[vh[r]][e](...i),wi.bgColor.close,this._styler);return En(this,n,this._isEmpty)}}}}var t0=Object.defineProperties(()=>{},{...br,level:{enumerable:!0,get(){return this._generator.level},set(e){this._generator.level=e}}}),fo=(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}},En=(e,t,r)=>{let i=(...n)=>vn(n[0])&&vn(n[0].raw)?Sh(i,bh(i,...n)):Sh(i,n.length===1?""+n[0]:n.join(" "));return Object.setPrototypeOf(i,t0),i._generator=e,i._styler=t,i._isEmpty=r,i},Sh=(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=Kg(t,r.close,r.open),r=r.parent;let s=t.indexOf(` -`);return s!==-1&&(t=Jg(t,n,i,s)),i+t+n},po,bh=(e,...t)=>{let[r]=t;if(!vn(r)||!vn(r.raw))return t.join(" ");let i=t.slice(1),n=[r.raw[0]];for(let s=1;s{Hi(e0);Cs(e0,{execSync:()=>_r,generateAppleScript:()=>Nh,register:()=>r0});var yo=Rt(Ps()),go=Rt(Gu()),Oh=Rt(require("child_process")),zt=Rt(require("fs")),Ei=Rt(require("path")),we=Rt(mo()),vo="/Applications/git-peek.app/Contents/temp";function _r(e){return console.log("$ ",we.default.gray(e)),Oh.default.execSync(e,{cwd:process.cwd(),stdio:"inherit"})}async function r0(e){try{await yo.default("duti")}catch(a){let l="HOMEBREW_NO_AUTO_UPDATE=1 HOMEBREW_NO_INSTALL_CLEANUP=1 brew install duti";console.log("duti not installed. Installing with homebrew."),_r(l)}let t=Ei.default.join("/Applications/git-peek.app/Contents/","git-peek-shim");console.log("Generating AppleScript handler.");let r=await Nh(t,vo),i=Ei.default.join(process.cwd(),"git-peek.applescript"),n=Ei.default.join(process.cwd(),"git-peek.app");await zt.default.promises.writeFile(i,r,"utf8"),console.log(we.default.gray(r)),console.log("Compiling .applescript to .app"),_r(`osacompile -o git-peek.app ${i}`),console.log("Updating Info.plist to support URL handler");let s=Ei.default.join(n,"contents/Info.plist"),o=go.default.readFileSync(s);o.CFBundleIdentifier="com.apple.ScriptEditor.id.git-peek",o.CFBundleURLTypes=[{CFBundleURLName:"HTTP URL",CFBundleURLSchemes:["http","https",qe]}],o.LSBackgroundOnly=!0,go.default.writeFileSync(s,o),console.log("Updated Info.plist"),console.log("Moving application to /Applications/git-peek.app"),zt.default.existsSync("/Applications/git-peek.app")&&zt.default.rmSync("/Applications/git-peek.app",{recursive:!0,force:!0}),zt.default.existsSync("/Applications/git-peek.app")&&zt.default.rmSync("/Applications/git-peek.app",{force:!0,recursive:!0}),zt.default.renameSync(n,"/Applications/git-peek.app"),console.log(we.default.gray(`mkdir ${vo}`)),zt.default.mkdirSync(vo);let c=`#!/bin/bash +`,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 # AppleScript might run as a different user/environment variables. # So we have to inline some environment variables! @@ -15,10 +15,10 @@ export EDITOR=${JSON.stringify(e)} export HOME=${JSON.stringify(process.env.HOME)||""} export USER=${JSON.stringify(process.env.USER)||""} -.${JSON.stringify(await yo.default("git-peek"))} --fromscript $1 $2 $3 $4 & disown +.${JSON.stringify(await go.default("git-peek"))} --fromscript $1 $2 $3 $4 & disown `;if(console.log(`// --- BEGIN SHIM FILE --- -`+we.default.gray(c)+` -// --- END SHIM FILE ---`),console.log(`Wrote shim file (${we.default.gray(t)})`),zt.default.writeFileSync(t,c,"utf8"),_r("chmod +x "+t),console.log("Registering URL handler..."),_r(`duti -s com.apple.ScriptEditor.id.git-peek ${qe}`),zt.default.rmSync(i),zt.default.existsSync("/Applications/Google Chrome.app")){console.log(`Adding ${qe}:// to Google Chrome`);try{_r(`defaults write com.google.Chrome URLWhitelist -array '${qe}://*'`)}catch(a){console.warn("Failed to add protocol to Google Chrome. Its okay.")}}console.log(we.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(" "+we.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 Nh(e,t){return` +`+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` on open location this_URL try @@ -28,15 +28,15 @@ on open location this_URL display dialog errMsg end try end open location -`.trim()}});var Ih=L((Q1,Th)=>{var Rh=class{constructor(t){this.value=t,this.next=void 0}},Ah=class{constructor(){this.clear()}enqueue(t){let r=new Rh(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}};Th.exports=Ah});var xh=L((tb,Lh)=>{"use strict";var i0=Ih(),n0=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 i0,r=0,i=()=>{r--,t.size>0&&t.dequeue()()},n=async(c,a,...l)=>{r++;let u=(async()=>c(...l))();a(u);try{await u}catch{}i()},s=(c,a,...l)=>{t.enqueue(n.bind(null,c,a,...l)),(async()=>{await Promise.resolve(),r0&&t.dequeue()()})()},o=(c,...a)=>new Promise(l=>{s(c,l,...a)});return Object.defineProperties(o,{activeCount:{get:()=>r},pendingCount:{get:()=>t.size},clearQueue:{value:()=>{t.clear()}}}),o};Lh.exports=n0});var kh=L((eb,Mh)=>{"use strict";var Ch=xh(),wo=class extends Error{constructor(t){super();this.value=t}},s0=async(e,t)=>t(await e),o0=async e=>{let t=await Promise.all(e);if(t[1]===!0)throw new wo(t[0]);return!1},a0=async(e,t,r)=>{r={concurrency:Infinity,preserveOrder:!0,...r};let i=Ch(r.concurrency),n=[...e].map(o=>[o,i(s0,o,t)]),s=Ch(r.preserveOrder?1:Infinity);try{await Promise.all(n.map(o=>s(o0,o)))}catch(o){if(o instanceof wo)return o.value;throw o}};Mh.exports=a0});var jh=L((rb,Eo)=>{"use strict";var Ph=require("path"),_n=require("fs"),{promisify:Bh}=require("util"),c0=kh(),l0=Bh(_n.stat),u0=Bh(_n.lstat),Fh={directory:"isDirectory",file:"isFile"};function qh({type:e}){if(!(e in Fh))throw new Error(`Invalid type specified: ${e}`)}var Uh=(e,t)=>e===void 0||t[Fh[e]]();Eo.exports=async(e,t)=>{t={cwd:process.cwd(),type:"file",allowSymlinks:!0,...t},qh(t);let r=t.allowSymlinks?l0:u0;return c0(e,async i=>{try{let n=await r(Ph.resolve(t.cwd,i));return Uh(t.type,n)}catch{return!1}},t)};Eo.exports.sync=(e,t)=>{t={cwd:process.cwd(),allowSymlinks:!0,type:"file",...t},qh(t);let r=t.allowSymlinks?_n.statSync:_n.lstatSync;for(let i of e)try{let n=r(Ph.resolve(t.cwd,i));if(Uh(t.type,n))return i}catch{}}});var zh=L((ib,bo)=>{"use strict";var Xh=require("fs"),{promisify:h0}=require("util"),f0=h0(Xh.access);bo.exports=async e=>{try{return await f0(e),!0}catch(t){return!1}};bo.exports.sync=e=>{try{return Xh.accessSync(e),!0}catch(t){return!1}}});var $h=L((nb,Sr)=>{"use strict";var Ee=require("path"),Sn=jh(),Gh=zh(),_o=Symbol("findUp.stop");Sr.exports=async(e,t={})=>{let r=Ee.resolve(t.cwd||""),{root:i}=Ee.parse(r),n=[].concat(e),s=async o=>{if(typeof e!="function")return Sn(n,o);let c=await e(o.cwd);return typeof c=="string"?Sn([c],o):c};for(;;){let o=await s({...t,cwd:r});if(o===_o)return;if(o)return Ee.resolve(r,o);if(r===i)return;r=Ee.dirname(r)}};Sr.exports.sync=(e,t={})=>{let r=Ee.resolve(t.cwd||""),{root:i}=Ee.parse(r),n=[].concat(e),s=o=>{if(typeof e!="function")return Sn.sync(n,o);let c=e(o.cwd);return typeof c=="string"?Sn.sync([c],o):c};for(;;){let o=s({...t,cwd:r});if(o===_o)return;if(o)return Ee.resolve(r,o);if(r===i)return;r=Ee.dirname(r)}};Sr.exports.exists=Gh;Sr.exports.sync.exists=Gh.sync;Sr.exports.stop=_o});var Wh=L(So=>{var Ue=require("path"),be=process.platform==="win32",_e=require("fs"),p0=process.env.NODE_DEBUG&&/fs/.test(process.env.NODE_DEBUG);function d0(){var e;if(p0){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 m0(e){return typeof e=="function"?e:d0()}var sb=Ue.normalize;be?ie=/(.*?)(?:[\/\\]+|$)/g:ie=/(.*?)(?:[\/]+|$)/g;var ie;be?bi=/^(?:[a-zA-Z]:|[\\\/]{2}[^\\\/]+[\\\/][^\\\/]+)?[\\\/]*/:bi=/^[\/]*/;var bi;So.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,c,a,l;u();function u(){var w=bi.exec(t);o=w[0].length,c=w[0],a=w[0],l="",be&&!s[a]&&(_e.lstatSync(a),s[a]=!0)}for(;o=t.length)return r&&(r[n]=t),i(null,t);ie.lastIndex=c;var w=ie.exec(t);return u=a,a+=w[0],l=u+w[1],c=ie.lastIndex,o[l]||r&&r[l]===l?process.nextTick(y):r&&Object.prototype.hasOwnProperty.call(r,l)?m(r[l]):_e.lstat(l,b)}function b(w,O){if(w)return i(w);if(!O.isSymbolicLink())return o[l]=!0,r&&(r[l]=l),process.nextTick(y);if(!be){var d=O.dev.toString(32)+":"+O.ino.toString(32);if(s.hasOwnProperty(d))return E(null,s[d],l)}_e.stat(l,function(g){if(g)return i(g);_e.readlink(l,function(N,A){be||(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(c)),f()}}});var To=L((ab,Hh)=>{Hh.exports=Se;Se.realpath=Se;Se.sync=Oo;Se.realpathSync=Oo;Se.monkeypatch=y0;Se.unmonkeypatch=g0;var Or=require("fs"),No=Or.realpath,Do=Or.realpathSync,v0=process.version,Vh=/^v[0-5]\./.test(v0),Yh=Wh();function Zh(e){return e&&e.syscall==="realpath"&&(e.code==="ELOOP"||e.code==="ENOMEM"||e.code==="ENAMETOOLONG")}function Se(e,t,r){if(Vh)return No(e,t,r);typeof t=="function"&&(r=t,t=null),No(e,t,function(i,n){Zh(i)?Yh.realpath(e,t,r):r(i,n)})}function Oo(e,t){if(Vh)return Do(e,t);try{return Do(e,t)}catch(r){if(Zh(r))return Yh.realpathSync(e,t);throw r}}function y0(){Or.realpath=Se,Or.realpathSync=Oo}function g0(){Or.realpath=No,Or.realpathSync=Do}});var Jh=L((cb,Kh)=>{Kh.exports=function(e,t){for(var r=[],i=0;i{"use strict";Qh.exports=tf;function tf(e,t,r){e instanceof RegExp&&(e=ef(e,r)),t instanceof RegExp&&(t=ef(t,r));var i=rf(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 ef(e,t){var r=t.match(e);return r?r[0]:null}tf.range=rf;function rf(e,t,r){var i,n,s,o,c,a=r.indexOf(e),l=r.indexOf(t,a+1),u=a;if(a>=0&&l>0){for(i=[],s=r.length;u>=0&&!c;)u==a?(i.push(u),a=r.indexOf(e,u+1)):i.length==1?c=[i.pop(),l]:(n=i.pop(),n=0?a:l;i.length&&(c=[s,o])}return c}});var ff=L((ub,sf)=>{var E0=Jh(),of=nf();sf.exports=b0;var af="\0SLASH"+Math.random()+"\0",cf="\0OPEN"+Math.random()+"\0",Ro="\0CLOSE"+Math.random()+"\0",lf="\0COMMA"+Math.random()+"\0",uf="\0PERIOD"+Math.random()+"\0";function Ao(e){return parseInt(e,10)==e?parseInt(e,10):e.charCodeAt(0)}function _0(e){return e.split("\\\\").join(af).split("\\{").join(cf).split("\\}").join(Ro).split("\\,").join(lf).split("\\.").join(uf)}function S0(e){return e.split(af).join("\\").split(cf).join("{").split(Ro).join("}").split(lf).join(",").split(uf).join(".")}function hf(e){if(!e)return[""];var t=[],r=of("{","}",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 c=hf(s);return s.length&&(o[o.length-1]+=c.shift(),o.push.apply(o,c)),t.push.apply(t,o),t}function b0(e){return e?(e.substr(0,2)==="{}"&&(e="\\{\\}"+e.substr(2)),Nr(_0(e),!0).map(S0)):[]}function O0(e){return"{"+e+"}"}function N0(e){return/^-?0\d/.test(e)}function D0(e,t){return e<=t}function T0(e,t){return e>=t}function Nr(e,t){var r=[],i=of("{","}",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,c=i.body.indexOf(",")>=0;if(!o&&!c)return i.post.match(/,.*\}/)?(e=i.pre+"{"+i.body+Ro+i.post,Nr(e)):[e];var a;if(o)a=i.body.split(/\.\./);else if(a=hf(i.body),a.length===1&&(a=Nr(a[0],!1).map(O0),a.length===1)){var u=i.post.length?Nr(i.post,!1):[""];return u.map(function(x){return i.pre+a[0]+x})}var l=i.pre,u=i.post.length?Nr(i.post,!1):[""],f;if(o){var y=Ao(a[0]),b=Ao(a[1]),E=Math.max(a[0].length,a[1].length),m=a.length==3?Math.abs(Ao(a[2])):1,w=D0,O=b0){var _=new Array(A+1).join("0");g<0?N="-"+_+N.slice(1):N=_+N}}f.push(N)}}else f=E0(a,function(D){return Nr(D,!1)});for(var R=0;R{pf.exports=Pt;Pt.Minimatch=ut;var _i={sep:"/"};try{_i=require("path")}catch(e){}var Io=Pt.GLOBSTAR=ut.GLOBSTAR={},R0=ff(),df={"!":{open:"(?:(?!(?:",close:"))[^/]*?)"},"?":{open:"(?:",close:")?"},"+":{open:"(?:",close:")+"},"*":{open:"(?:",close:")*"},"@":{open:"(?:",close:")"}},Lo="[^/]",xo=Lo+"*?",A0="(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?",I0="(?:(?!(?:\\/|^)\\.).)*?",mf=L0("().*{}+?[]^$\\!");function L0(e){return e.split("").reduce(function(t,r){return t[r]=!0,t},{})}var yf=/\/+/;Pt.filter=x0;function x0(e,t){return t=t||{},function(r,i,n){return Pt(r,e,t)}}function gf(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}Pt.defaults=function(e){if(!e||!Object.keys(e).length)return Pt;var t=Pt,r=function(n,s,o){return t.minimatch(n,s,gf(e,o))};return r.Minimatch=function(n,s){return new t.Minimatch(n,gf(e,s))},r};ut.defaults=function(e){return!e||!Object.keys(e).length?ut:Pt.defaults(e).Minimatch};function Pt(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 ut(t,r).match(e)}function ut(e,t){if(!(this instanceof ut))return new ut(e,t);if(typeof e!="string")throw new TypeError("glob pattern string required");t||(t={}),e=e.trim(),_i.sep!=="/"&&(e=e.split(_i.sep).join("/")),this.options=t,this.set=[],this.pattern=e,this.regexp=null,this.negate=!1,this.comment=!1,this.empty=!1,this.make()}ut.prototype.debug=function(){};ut.prototype.make=M0;function M0(){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(yf)}),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}}ut.prototype.parseNegate=C0;function C0(){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 Io;if(e==="")return"";var i="",n=!!r.nocase,s=!1,o=[],c=[],a,l=!1,u=-1,f=-1,y=e.charAt(0)==="."?"":r.dot?"(?!(?:^|\\/)\\.{1,2}(?:$|\\/))":"(?!\\.)",b=this;function E(){if(a){switch(a){case"*":i+=xo,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 k=c[B],D=i.slice(0,k.reStart),x=i.slice(k.reStart,k.reEnd-8),F=i.slice(k.reEnd-8,k.reEnd),U=i.slice(k.reEnd);F+=U;var V=D.split("(").length-1,$=U;for(m=0;m=0&&(n=e[s],!n);s--);for(s=0;s{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=l.toLowerCase()===a.toLowerCase():b=l===a,this.debug("string match",a,l,b)):(b=l.match(a),this.debug("pattern match",a,l,b)),!b)return!1}if(n===o&&s===c)return!0;if(n===o)return r;if(s===c){var E=n===o-1&&e[n]==="";return E}throw new Error("wtf?")};function P0(e){return e.replace(/\\(.)/g,"$1")}function F0(e){return e.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&")}});var wf=L((fb,Mo)=>{typeof Object.create=="function"?Mo.exports=function(t,r){r&&(t.super_=r,t.prototype=Object.create(r.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}))}:Mo.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 Ef=L((pb,Co)=>{try{if(ko=require("util"),typeof ko.inherits!="function")throw"";Co.exports=ko.inherits}catch(e){Co.exports=wf()}var ko});var Tn=L((db,Dn)=>{"use strict";function bf(e){return e.charAt(0)==="/"}function _f(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"?_f:bf;Dn.exports.posix=bf;Dn.exports.win32=_f});var Bo=L(Ht=>{Ht.alphasort=Sf;Ht.alphasorti=Of;Ht.setopts=U0;Ht.ownProp=Nf;Ht.makeAbs=Si;Ht.finish=j0;Ht.mark=X0;Ht.isIgnored=Df;Ht.childrenIgnored=z0;function Nf(e,t){return Object.prototype.hasOwnProperty.call(e,t)}var Dr=require("path"),G0=Nn(),Tf=Tn(),Po=G0.Minimatch;function Of(e,t){return e.toLowerCase().localeCompare(t.toLowerCase())}function Sf(e,t){return e.localeCompare(t)}function W0(e,t){e.ignore=t.ignore||[],Array.isArray(e.ignore)||(e.ignore=[e.ignore]),e.ignore.length&&(e.ignore=e.ignore.map($0))}function $0(e){var t=null;if(e.slice(-3)==="/**"){var r=e.replace(/(\/\*\*)+$/,"");t=new Po(r,{dot:!0})}return{matcher:new Po(e,{dot:!0}),gmatcher:t}}function U0(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),W0(e,r),e.changedCwd=!1;var i=process.cwd();Nf(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=Tf(e.cwd)?e.cwd:Si(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 Po(t,r),e.options=e.minimatch.options}function j0(e){for(var t=e.nounique,r=t?[]:Object.create(null),i=0,n=e.matches.length;i{Rf.exports=Af;Af.GlobSync=st;var Rn=require("fs"),H0=To(),If=Nn(),yb=If.Minimatch,gb=Fo().Glob,vb=require("util"),qo=require("path"),Lf=require("assert"),An=Tn(),ne=Bo(),wb=ne.alphasort,Eb=ne.alphasorti,V0=ne.setopts,Uo=ne.ownProp,Y0=ne.childrenIgnored,Z0=ne.isIgnored;function Af(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 st(e,t).found}function st(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 st))return new st(e,t);if(V0(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&&Uo(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(c){if(c&&(c.code==="ENOENT"||c.code==="ENOTDIR"))return this.statCache[t]=!1,!1}if(s&&s.isSymbolicLink())try{n=Rn.statSync(t)}catch(c){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};st.prototype._mark=function(e){return ne.mark(this,e)};st.prototype._makeAbs=function(e){return ne.makeAbs(this,e)}});var jo=L((_b,Mf)=>{Mf.exports=Cf;function Cf(e,t){if(e&&t)return Cf(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 kf=jo();Xo.exports=kf(In);Xo.exports.strict=kf(Pf);In.proto=In(function(){Object.defineProperty(Function.prototype,"once",{value:function(){return In(this)},configurable:!0}),Object.defineProperty(Function.prototype,"onceStrict",{value:function(){return Pf(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 Pf(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 Ff=L((Ob,Bf)=>{var K0=jo(),Oi=Object.create(null),J0=zo();Bf.exports=K0(Q0);function Q0(e,t){return Oi[e]?(Oi[e].push(t),null):(Oi[e]=[t],tv(e))}function tv(e){return J0(function t(){var r=Oi[e],i=r.length,n=ev(arguments);try{for(var s=0;si?(r.splice(0,i),process.nextTick(function(){t.apply(null,n)})):delete Oi[e]}})}function ev(e){for(var t=e.length,r=[],i=0;i{qf.exports=je;var Ln=require("fs"),rv=To(),Uf=Nn(),Nb=Uf.Minimatch,iv=Ef(),nv=require("events").EventEmitter,Go=require("path"),$o=require("assert"),Ni=Tn(),Wo=xf(),se=Bo(),Db=se.alphasort,Tb=se.alphasorti,sv=se.setopts,Ho=se.ownProp,Vo=Ff(),Rb=require("util"),ov=se.childrenIgnored,av=se.isIgnored,cv=zo();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 Wo(e,t)}return new Z(e,t,r)}je.sync=Wo;var lv=je.GlobSync=Wo.GlobSync;je.glob=je;function uv(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=uv({},t);r.noprocess=!0;var i=new Z(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&&Ho(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 c=o.isDirectory()?"DIR":"FILE";return i&&c==="FILE"?t():t(null,c,o)}var a=this,l=Vo("stat\0"+r,u);l&&Ln.lstat(r,l);function u(f,y){if(y&&y.isSymbolicLink())return Ln.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)}};Z.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 Vf=L((Ib,jf)=>{var Q=require("assert"),Xf=require("path"),zf=require("fs"),Tr;try{Tr=Fo()}catch(e){}var fv={nosort:!0,silent:!0},Yo=0,Di=process.platform==="win32",Gf=e=>{if(["unlink","chmod","stat","lstat","rmdir","readdir"].forEach(r=>{e[r]=e[r]||zf[r],r=r+"Sync",e[r]=e[r]||zf[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||fv},Ko=(e,t,r)=>{typeof t=="function"&&(r=t,t={}),Q(e,"rimraf: missing path"),Q.equal(typeof e,"string","rimraf: path should be a string"),Q.equal(typeof r,"function","rimraf: callback function required"),Q(t,"rimraf: invalid options argument provided"),Q.equal(typeof t,"object","rimraf: options should be object"),Gf(t);let i=0,n=null,s=0,o=a=>{n=n||a,--s==0&&r(n)},c=(a,l)=>{if(a)return r(a);if(s=l.length,s===0)return r();l.forEach(u=>{let f=y=>{if(y){if((y.code==="EBUSY"||y.code==="ENOTEMPTY"||y.code==="EPERM")&&iZo(u,t,f),i*100);if(y.code==="EMFILE"&&YoZo(u,t,f),Yo++);y.code==="ENOENT"&&(y=null)}Yo=0,o(y)};Zo(u,t,f)})};if(t.disableGlob||!Tr.hasMagic(e))return c(null,[e]);t.lstat(e,(a,l)=>{if(!a)return c(null,[e]);Tr(e,t.glob,c)})},Zo=(e,t,r)=>{Q(e),Q(t),Q(typeof r=="function"),t.lstat(e,(i,n)=>{if(i&&i.code==="ENOENT")return r(null);if(i&&i.code==="EPERM"&&Di&&$f(e,t,i,r),n&&n.isDirectory())return xn(e,t,i,r);t.unlink(e,s=>{if(s){if(s.code==="ENOENT")return r(null);if(s.code==="EPERM")return Di?$f(e,t,s,r):xn(e,t,s,r);if(s.code==="EISDIR")return xn(e,t,s,r)}return r(s)})})},$f=(e,t,r,i)=>{Q(e),Q(t),Q(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()?xn(e,t,r,i):t.unlink(e,i)})})},Wf=(e,t,r)=>{Q(e),Q(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)},xn=(e,t,r,i)=>{Q(e),Q(t),Q(typeof i=="function"),t.rmdir(e,n=>{n&&(n.code==="ENOTEMPTY"||n.code==="EEXIST"||n.code==="EPERM")?pv(e,t,i):n&&n.code==="ENOTDIR"?i(r):i(n)})},pv=(e,t,r)=>{Q(e),Q(t),Q(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(c=>{Ko(Xf.join(e,c),t,a=>{if(!o){if(a)return r(o=a);--s==0&&t.rmdir(e,r)}})})})},Hf=(e,t)=>{t=t||{},Gf(t),Q(e,"rimraf: missing path"),Q.equal(typeof e,"string","rimraf: path should be a string"),Q(t,"rimraf: missing options"),Q.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{Q(e),Q(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")&&dv(e,t)}},dv=(e,t)=>{Q(e),Q(t),t.readdirSync(e).forEach(n=>Hf(Xf.join(e,n),t));let r=Di?100:1,i=0;do{let n=!0;try{let s=t.rmdirSync(e,t);return n=!1,s}finally{if(++i{var ht=require("fs"),Jo=require("os"),At=require("path"),Yf=require("crypto"),Vt={fs:ht.constants,os:Jo.constants},Zf=Vf(),Kf="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",Jf=/XXXXXX/,mv=3,Qf=(Vt.O_CREAT||Vt.fs.O_CREAT)|(Vt.O_EXCL||Vt.fs.O_EXCL)|(Vt.O_RDWR||Vt.fs.O_RDWR),yv=Jo.platform()==="win32",gv=Vt.EBADF||Vt.os.errno.EBADF,vv=Vt.ENOENT||Vt.os.errno.ENOENT,tp=448,ep=384,wv="exit",Rr=[],rp=ht.rmdirSync.bind(ht),ip=Zf.sync,np=!1;function Qo(e,t){let r=Ar(e,t),i=r[0],n=r[1];try{op(i)}catch(o){return n(o)}let s=i.tries;(function o(){try{let c=sp(i);ht.stat(c,function(a){if(!a)return s-- >0?o():n(new Error("Could not get a unique tmp filename, max tries reached "+c));n(null,c)})}catch(c){n(c)}})()}function ta(e){let t=Ar(e),r=t[0];op(r);let i=r.tries;do{let n=sp(r);try{ht.statSync(n)}catch(s){return n}}while(i-- >0);throw new Error("Could not get a unique tmp filename, max tries reached")}function Ev(e,t){let r=Ar(e,t),i=r[0],n=r[1];Qo(i,function(o,c){if(o)return n(o);ht.open(c,Qf,i.mode||ep,function(l,u){if(l)return n(l);if(i.discardDescriptor)return ht.close(u,function(y){return n(y,c,void 0,ea(c,-1,i,!1))});{let f=i.discardDescriptor||i.detachDescriptor;n(null,c,u,ea(c,f?-1:u,i,!1))}})})}function bv(e){let t=Ar(e),r=t[0],i=r.discardDescriptor||r.detachDescriptor,n=ta(r);var s=ht.openSync(n,Qf,r.mode||ep);return r.discardDescriptor&&(ht.closeSync(s),s=void 0),{name:n,fd:s,removeCallback:ea(n,i?-1:s,r,!0)}}function _v(e,t){let r=Ar(e,t),i=r[0],n=r[1];Qo(i,function(o,c){if(o)return n(o);ht.mkdir(c,i.mode||tp,function(l){if(l)return n(l);n(null,c,ap(c,i,!1))})})}function Sv(e){let t=Ar(e),r=t[0],i=ta(r);return ht.mkdirSync(i,r.mode||tp),{name:i,removeCallback:ap(i,r,!0)}}function Ov(e,t){let r=function(i){if(i&&!ra(i))return t(i);t()};0<=e[0]?ht.close(e[0],function(){ht.unlink(e[1],r)}):ht.unlink(e[1],r)}function Dv(e){let t=null;try{0<=e[0]&&ht.closeSync(e[0])}catch(r){if(!Nv(r)&&!ra(r))throw r}finally{try{ht.unlinkSync(e[1])}catch(r){ra(r)||(t=r)}}if(t!==null)throw t}function ea(e,t,r,i){let n=Cn(Dv,[t,e],i),s=Cn(Ov,[t,e],i,n);return r.keep||Rr.unshift(n),i?n:s}function ap(e,t,r){let i=t.unsafeCleanup?Zf:ht.rmdir.bind(ht),n=t.unsafeCleanup?ip:rp,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 c=i||s,a=Rr.indexOf(c);return a>=0&&Rr.splice(a,1),n=!0,r||e===rp||e===ip?e(t):e(t,o||function(){})}}}function Tv(){if(!!np)for(;Rr.length;)try{Rr[0]()}catch(e){}}function cp(e){let t=[],r=null;try{r=Yf.randomBytes(e)}catch(n){r=Yf.pseudoRandomBytes(e)}for(var i=0;i{"use strict";var{promisify:Ti}=require("util"),Oe=oa();It.exports.fileSync=Oe.fileSync;var Av=Ti((e,t)=>Oe.file(e,(r,i,n,s)=>r?t(r):t(void 0,{path:i,fd:n,cleanup:Ti(s)})));It.exports.file=async e=>Av(e);It.exports.withFile=async function(t,r){let{path:i,fd:n,cleanup:s}=await It.exports.file(r);try{return await t({path:i,fd:n})}finally{await s()}};It.exports.dirSync=Oe.dirSync;var Iv=Ti((e,t)=>Oe.dir(e,(r,i,n)=>r?t(r):t(void 0,{path:i,cleanup:Ti(n)})));It.exports.dir=async e=>Iv(e);It.exports.withDir=async function(t,r){let{path:i,cleanup:n}=await It.exports.dir(r);try{return await t({path:i})}finally{await n()}};It.exports.tmpNameSync=Oe.tmpNameSync;It.exports.tmpName=Ti(Oe.tmpName);It.exports.tmpdir=Oe.tmpdir;It.exports.setGracefulCleanup=Oe.setGracefulCleanup});var mp=L(aa=>{var Lv=Object.create,kn=Object.defineProperty,xv=Object.getPrototypeOf,Mv=Object.prototype.hasOwnProperty,Cv=Object.getOwnPropertyNames,kv=Object.getOwnPropertyDescriptor,pp=e=>kn(e,"__esModule",{value:!0}),Pv=(e,t)=>{for(var r in t)kn(e,r,{get:t[r],enumerable:!0})},Bv=(e,t,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of Cv(t))!Mv.call(e,i)&&i!=="default"&&kn(e,i,{get:()=>t[i],enumerable:!(r=kv(t,i))||r.enumerable});return e},Ri=e=>e&&e.__esModule?e:Bv(pp(kn(e!=null?Lv(xv(e)):{},"default",{value:e,enumerable:!0})),e);pp(aa);Pv(aa,{BINARY_VERSION:()=>Fv,PACKAGE_NAMES:()=>qv,installBin:()=>Uv,register:()=>jv});var dp=Ri(require("child_process")),Xv=Ri($h()),Pn=Ri(require("fs")),Ai=Ri(require("path")),zv=Ri(fp());async function Gv(e){return Ai.resolve(await Xv.default("node_modules",{type:"directory",cwd:e}),"../")}var Fv="1.0.7",qv={win64:"register-url-win64-bin","win64-uac":"register-url-win64-bin-uac"};async function Uv(e=!0){let t=e?"register-url-win64-bin-uac":"register-url-win64-bin",r=await Gv(Ai.resolve(__dirname));return new Promise((i,n)=>{let s=dp.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 jv(e,t=null){var r,i;let n=t;if(!t){let c=((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(Ai.resolve(__dirname,"node_modules",c))}catch(a){return Promise.reject(`Please install "${c}" into ${Ai.resolve(__dirname)} before running this function. For convienience, you can call installBin()`)}}if(await Pn.promises.access(n,Pn.constants.F_OK),typeof e.register=="undefined"&&(e.register=!0),!e.output){let{path:o}=await zv.default.file({discardDescriptor:!0,postfix:".json"});e.output=o}let s=Ai.resolve(e.output);return delete e.output,await Pn.promises.writeFile(s,JSON.stringify(e),"utf-8"),await new Promise(async(o,c)=>{dp.default.spawn(n,[s],{env:process.env,windowsHide:!0,detached:!1,shell:!0,stdio:"inherit"}).once("exit",async()=>{let l;try{if(l=JSON.parse((await Pn.promises.readFile(s,"utf-8")).trim()),typeof l!="object")throw"Empty response"}catch(u){l={error:u.message,exception:u,chrome:!1,protocol:!1,edge:!1}}o(l)})}).catch(o=>Promise.resolve({error:o.message,exception:o,chrome:!1,edge:!1,protocol:!1}))}});var Ir=L((Cb,yp)=>{"use strict";var gp=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"]]);yp.exports=e=>e?Object.keys(e).map(t=>[gp.has(t)?gp.get(t):t,e[t]]).reduce((t,r)=>(t[r[0]]=r[1],t),Object.create(null)):{}});var wp=L((kb,vp)=>{"use strict";vp.exports=function(e){e.prototype[Symbol.iterator]=function*(){for(let t=this.head;t;t=t.next)yield t.value}}});var Bn=L((Pb,Ep)=>{"use strict";Ep.exports=H;H.Node=Xe;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 Vv=require("events"),_p=require("stream"),Ii=Bn(),Sp=require("string_decoder").StringDecoder,ae=Symbol("EOF"),Li=Symbol("maybeEmitEnd"),Ne=Symbol("emittedEnd"),Fn=Symbol("emittingEnd"),qn=Symbol("closed"),Op=Symbol("read"),ca=Symbol("flush"),Np=Symbol("flushChunk"),Ot=Symbol("encoding"),ce=Symbol("decoder"),Un=Symbol("flowing"),xi=Symbol("paused"),Mi=Symbol("resume"),yt=Symbol("bufferLength"),Dp=Symbol("bufferPush"),la=Symbol("bufferShift"),pt=Symbol("objectMode"),dt=Symbol("destroyed"),Tp=global._MP_NO_ITERATOR_SYMBOLS_!=="1",Yv=Tp&&Symbol.asyncIterator||Symbol("asyncIterator not implemented"),Zv=Tp&&Symbol.iterator||Symbol("iterator not implemented"),Rp=e=>e==="end"||e==="finish"||e==="prefinish",Kv=e=>e instanceof ArrayBuffer||typeof e=="object"&&e.constructor&&e.constructor.name==="ArrayBuffer"&&e.byteLength>=0,Jv=e=>!Buffer.isBuffer(e)&&ArrayBuffer.isView(e);bp.exports=class Ap extends _p{constructor(t){super();this[Un]=!1,this[xi]=!1,this.pipes=new Ii,this.buffer=new Ii,this[pt]=t&&t.objectMode||!1,this[pt]?this[Ot]=null:this[Ot]=t&&t.encoding||null,this[Ot]==="buffer"&&(this[Ot]=null),this[ce]=this[Ot]?new Sp(this[Ot]):null,this[ae]=!1,this[Ne]=!1,this[Fn]=!1,this[qn]=!1,this.writable=!0,this.readable=!0,this[yt]=0,this[dt]=!1}get bufferLength(){return this[yt]}get encoding(){return this[Ot]}set encoding(t){if(this[pt])throw new Error("cannot set encoding in objectMode");if(this[Ot]&&t!==this[Ot]&&(this[ce]&&this[ce].lastNeed||this[yt]))throw new Error("cannot change encoding");this[Ot]!==t&&(this[ce]=t?new Sp(t):null,this.buffer.length&&(this.buffer=this.buffer.map(r=>this[ce].write(r)))),this[Ot]=t}setEncoding(t){this.encoding=t}get objectMode(){return this[pt]}set objectMode(t){this[pt]=this[pt]||!!t}write(t,r,i){if(this[ae])throw new Error("write after end");return this[dt]?(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[pt]&&!Buffer.isBuffer(t)&&(Jv(t)?t=Buffer.from(t.buffer,t.byteOffset,t.byteLength):Kv(t)?t=Buffer.from(t):typeof t!="string"&&(this.objectMode=!0)),!this.objectMode&&!t.length?(this[yt]!==0&&this.emit("readable"),i&&i(),this.flowing):(typeof t=="string"&&!this[pt]&&!(r===this[Ot]&&!this[ce].lastNeed)&&(t=Buffer.from(t,r)),Buffer.isBuffer(t)&&this[Ot]&&(t=this[ce].write(t)),this.flowing?(this[yt]!==0&&this[ca](!0),this.emit("data",t)):this[Dp](t),this[yt]!==0&&this.emit("readable"),i&&i(),this.flowing))}read(t){if(this[dt])return null;try{return this[yt]===0||t===0||t>this[yt]?null:(this[pt]&&(t=null),this.buffer.length>1&&!this[pt]&&(this.encoding?this.buffer=new Ii([Array.from(this.buffer).join("")]):this.buffer=new Ii([Buffer.concat(Array.from(this.buffer),this[yt])])),this[Op](t||null,this.buffer.head.value))}finally{this[Li]()}}[Op](t,r){return t===r.length||t===null?this[la]():(this.buffer.head.value=r.slice(t),r=r.slice(0,t),this[yt]-=t),this.emit("data",r),!this.buffer.length&&!this[ae]&&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[ae]=!0,this.writable=!1,(this.flowing||!this[xi])&&this[Li](),this}[Mi](){this[dt]||(this[xi]=!1,this[Un]=!0,this.emit("resume"),this.buffer.length?this[ca]():this[ae]?this[Li]():this.emit("drain"))}resume(){return this[Mi]()}pause(){this[Un]=!1,this[xi]=!0}get destroyed(){return this[dt]}get flowing(){return this[Un]}get paused(){return this[xi]}[Dp](t){return this[pt]?this[yt]+=1:this[yt]+=t.length,this.buffer.push(t)}[la](){return this.buffer.length&&(this[pt]?this[yt]-=1:this[yt]-=this.buffer.head.value.length),this.buffer.shift()}[ca](t){do;while(this[Np](this[la]()));!t&&!this.buffer.length&&!this[ae]&&this.emit("drain")}[Np](t){return t?(this.emit("data",t),this.flowing):!1}pipe(t,r){if(this[dt])return;let i=this[Ne];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[Mi]()};return this.pipes.push(n),t.on("drain",n.ondrain),this[Mi](),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[Mi]():Rp(t)&&this[Ne]&&(super.emit(t),this.removeAllListeners(t))}}get emittedEnd(){return this[Ne]}[Li](){!this[Fn]&&!this[Ne]&&!this[dt]&&this.buffer.length===0&&this[ae]&&(this[Fn]=!0,this.emit("end"),this.emit("prefinish"),this.emit("finish"),this[qn]&&this.emit("close"),this[Fn]=!1)}emit(t,r){if(t!=="error"&&t!=="close"&&t!==dt&&this[dt])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[Ne]===!0)return;this[Ne]=!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[qn]=!0,!this[Ne]&&!this[dt]))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[pt]||(t.dataLength+=i.length)}),r.then(()=>t)}concat(){return this[pt]?Promise.reject(new Error("cannot concat in objectMode")):this.collect().then(t=>this[pt]?Promise.reject(new Error("cannot concat in objectMode")):this[Ot]?t.join(""):Buffer.concat(t,t.dataLength))}promise(){return new Promise((t,r)=>{this.on(dt,()=>r(new Error("stream destroyed"))),this.on("end",()=>t()),this.on("error",i=>r(i))})}[Yv](){return{next:()=>{let r=this.read();if(r!==null)return Promise.resolve({done:!1,value:r});if(this[ae])return Promise.resolve({done:!0});let i=null,n=null,s=l=>{this.removeListener("data",o),this.removeListener("end",c),n(l)},o=l=>{this.removeListener("error",s),this.removeListener("end",c),this.pause(),i({value:l,done:!!this[ae]})},c=()=>{this.removeListener("error",s),this.removeListener("data",o),i({done:!0})},a=()=>s(new Error("stream destroyed"));return new Promise((l,u)=>{n=u,i=l,this.once(dt,a),this.once("error",s),this.once("end",c),this.once("data",o)})}}}[Zv](){return{next:()=>{let r=this.read();return{value:r,done:r===null}}}}destroy(t){return this[dt]?(t?this.emit("error",t):this.emit(dt),this):(this[dt]=!0,this.buffer=new Ii,this[yt]=0,typeof this.close=="function"&&!this[qn]&&this.close(),t?this.emit("error",t):this.emit(dt),this)}static isStream(t){return!!t&&(t instanceof Ap||t instanceof _p||t instanceof Vv&&(typeof t.pipe=="function"||typeof t.write=="function"&&typeof t.end=="function"))}}});var Lp=L((Fb,Ip)=>{var Qv=require("zlib").constants||{ZLIB_VERNUM:4736};Ip.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},Qv))});var va=L(Lt=>{"use strict";var ua=require("assert"),De=require("buffer").Buffer,xp=require("zlib"),ze=Lt.constants=Lp(),tw=Lr(),Mp=De.concat,Ge=Symbol("_superWrite"),Ci=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"}},ew=Symbol("opts"),ki=Symbol("flushFlag"),Cp=Symbol("finishFlushFlag"),ha=Symbol("fullFlushFlag"),tt=Symbol("handle"),jn=Symbol("onError"),xr=Symbol("sawError"),fa=Symbol("level"),pa=Symbol("strategy"),da=Symbol("ended"),qb=Symbol("_defaultFullFlush"),ma=class extends tw{constructor(t,r){if(!t||typeof t!="object")throw new TypeError("invalid options for ZlibBase constructor");super(t);this[xr]=!1,this[da]=!1,this[ew]=t,this[ki]=t.flush,this[Cp]=t.finishFlush;try{this[tt]=new xp[r](t)}catch(i){throw new Ci(i)}this[jn]=i=>{this[xr]||(this[xr]=!0,this.close(),this.emit("error",i))},this[tt].on("error",i=>this[jn](new Ci(i))),this.once("end",()=>this.close)}close(){this[tt]&&(this[tt].close(),this[tt]=null,this.emit("close"))}reset(){if(!this[xr])return ua(this[tt],"zlib binding closed"),this[tt].reset()}flush(t){this.ended||(typeof t!="number"&&(t=this[ha]),this.write(Object.assign(De.alloc(0),{[ki]:t})))}end(t,r,i){return t&&this.write(t,r),this.flush(this[Cp]),this[da]=!0,super.end(null,null,i)}get ended(){return this[da]}write(t,r,i){if(typeof r=="function"&&(i=r,r="utf8"),typeof t=="string"&&(t=De.from(t,r)),this[xr])return;ua(this[tt],"zlib binding closed");let n=this[tt]._handle,s=n.close;n.close=()=>{};let o=this[tt].close;this[tt].close=()=>{},De.concat=l=>l;let c;try{let l=typeof t[ki]=="number"?t[ki]:this[ki];c=this[tt]._processChunk(t,l),De.concat=Mp}catch(l){De.concat=Mp,this[jn](new Ci(l))}finally{this[tt]&&(this[tt]._handle=n,n.close=s,this[tt].close=o,this[tt].removeAllListeners("error"))}this[tt]&&this[tt].on("error",l=>this[jn](new Ci(l)));let a;if(c)if(Array.isArray(c)&&c.length>0){a=this[Ge](De.from(c[0]));for(let l=1;l{this.flush(n),s()};try{this[tt].params(t,r)}finally{this[tt].flush=i}this[tt]&&(this[fa]=t,this[pa]=r)}}}},kp=class extends Te{constructor(t){super(t,"Deflate")}},Pp=class extends Te{constructor(t){super(t,"Inflate")}},ya=Symbol("_portable"),Bp=class extends Te{constructor(t){super(t,"Gzip");this[ya]=t&&!!t.portable}[Ge](t){return this[ya]?(this[ya]=!1,t[9]=255,super[Ge](t)):super[Ge](t)}},Fp=class extends Te{constructor(t){super(t,"Gunzip")}},qp=class extends Te{constructor(t){super(t,"DeflateRaw")}},Up=class extends Te{constructor(t){super(t,"InflateRaw")}},jp=class extends Te{constructor(t){super(t,"Unzip")}},ga=class extends ma{constructor(t,r){t=t||{},t.flush=t.flush||ze.BROTLI_OPERATION_PROCESS,t.finishFlush=t.finishFlush||ze.BROTLI_OPERATION_FINISH,super(t,r),this[ha]=ze.BROTLI_OPERATION_FLUSH}},Xp=class extends ga{constructor(t){super(t,"BrotliCompress")}},zp=class extends ga{constructor(t){super(t,"BrotliDecompress")}};Lt.Deflate=kp;Lt.Inflate=Pp;Lt.Gzip=Bp;Lt.Gunzip=Fp;Lt.DeflateRaw=qp;Lt.InflateRaw=Up;Lt.Unzip=jp;typeof xp.BrotliCompress=="function"?(Lt.BrotliCompress=Xp,Lt.BrotliDecompress=zp):Lt.BrotliCompress=Lt.BrotliDecompress=class{constructor(){throw new Error("Brotli is not supported in this version of Node.js")}}});var Xn=L((Xb,Gp)=>{"use strict";var rw=Lr(),wa=Symbol("slurp");Gp.exports=class extends rw{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[wa](r),i&&this[wa](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))}[wa](t,r){for(let i in t)t[i]!==null&&t[i]!==void 0&&!(r&&i==="path")&&(this[i]=t[i])}}});var Ea=L(zn=>{"use strict";zn.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"]]);zn.code=new Map(Array.from(zn.name).map(e=>[e[1],e[0]]))});var Vp=L((Gb,$p)=>{"use strict";var sw=(e,t)=>{if(Number.isSafeInteger(e))e<0?nw(e,t):iw(e,t);else throw Error("cannot encode number outside of javascript safe integer range");return t},iw=(e,t)=>{t[0]=128;for(var r=t.length;r>1;r--)t[r-1]=e&255,e=Math.floor(e/256)},nw=(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]=Wp(n):n===0?t[i-1]=0:(r=!0,t[i-1]=Hp(n))}},cw=e=>{let t=e[0],r=t===128?aw(e.slice(1,e.length)):t===255?ow(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},ow=e=>{for(var t=e.length,r=0,i=!1,n=t-1;n>-1;n--){var s=e[n],o;i?o=Wp(s):s===0?o=s:(i=!0,o=Hp(s)),o!==0&&(r-=o*Math.pow(256,t-n-1))}return r},aw=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},Wp=e=>(255^e)&255,Hp=e=>(255^e)+1&255;$p.exports={encode:sw,parse:cw}});var Cr=L(($b,Yp)=>{"use strict";var ba=Ea(),Mr=require("path").posix,Zp=Vp(),_a=Symbol("slurp"),xt=Symbol("type"),Kp=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[xt]="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=$e(t,r,100),this.mode=Re(t,r+100,8),this.uid=Re(t,r+108,8),this.gid=Re(t,r+116,8),this.size=Re(t,r+124,12),this.mtime=Sa(t,r+136,12),this.cksum=Re(t,r+148,12),this[_a](i),this[_a](n,!0),this[xt]=$e(t,r+156,1),this[xt]===""&&(this[xt]="0"),this[xt]==="0"&&this.path.substr(-1)==="/"&&(this[xt]="5"),this[xt]==="5"&&(this.size=0),this.linkpath=$e(t,r+157,100),t.slice(r+257,r+265).toString()==="ustar\x0000")if(this.uname=$e(t,r+265,32),this.gname=$e(t,r+297,32),this.devmaj=Re(t,r+329,8),this.devmin=Re(t,r+337,8),t[r+475]!==0){let o=$e(t,r+345,155);this.path=o+"/"+this.path}else{let o=$e(t,r+345,130);o&&(this.path=o+"/"+this.path),this.atime=Sa(t,r+476,12),this.ctime=Sa(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=lw(this.path||"",i),s=n[0],o=n[1];this.needPax=n[2],this.needPax=We(t,r,100,s)||this.needPax,this.needPax=Ae(t,r+100,8,this.mode)||this.needPax,this.needPax=Ae(t,r+108,8,this.uid)||this.needPax,this.needPax=Ae(t,r+116,8,this.gid)||this.needPax,this.needPax=Ae(t,r+124,12,this.size)||this.needPax,this.needPax=Oa(t,r+136,12,this.mtime)||this.needPax,t[r+156]=this[xt].charCodeAt(0),this.needPax=We(t,r+157,100,this.linkpath)||this.needPax,t.write("ustar\x0000",r+257,8),this.needPax=We(t,r+265,32,this.uname)||this.needPax,this.needPax=We(t,r+297,32,this.gname)||this.needPax,this.needPax=Ae(t,r+329,8,this.devmaj)||this.needPax,this.needPax=Ae(t,r+337,8,this.devmin)||this.needPax,this.needPax=We(t,r+345,i,o)||this.needPax,t[r+475]!==0?this.needPax=We(t,r+345,155,o)||this.needPax:(this.needPax=We(t,r+345,130,o)||this.needPax,this.needPax=Oa(t,r+476,12,this.atime)||this.needPax,this.needPax=Oa(t,r+488,12,this.ctime)||this.needPax);let c=8*32;for(let a=r;a{let r=100,i=e,n="",s,o=Mr.parse(e).root||".";if(Buffer.byteLength(i)r&&Buffer.byteLength(n)<=t?s=[i.substr(0,r-1),n,!0]:(i=Mr.join(Mr.basename(n),i),n=Mr.dirname(n));while(n!==o&&!s);s||(s=[e.substr(0,r-1),"",!0])}return s},$e=(e,t,r)=>e.slice(t,t+r).toString("utf8").replace(/\0.*/,""),Sa=(e,t,r)=>uw(Re(e,t,r)),uw=e=>e===null?null:new Date(e*1e3),Re=(e,t,r)=>e[t]&128?Zp.parse(e.slice(t,t+r)):hw(e,t,r),fw=e=>isNaN(e)?null:e,hw=(e,t,r)=>fw(parseInt(e.slice(t,t+r).toString("utf8").replace(/\0.*$/,"").trim(),8)),pw={12:8589934591,8:2097151},Ae=(e,t,r,i)=>i===null?!1:i>pw[r]||i<0?(Zp.encode(i,e.slice(t,t+r)),!0):(dw(e,t,r,i),!1),dw=(e,t,r,i)=>e.write(mw(i,r),t,r,"ascii"),mw=(e,t)=>yw(Math.floor(e).toString(8),t),yw=(e,t)=>(e.length===t-1?e:new Array(t-e.length-1).join("0")+e+" ")+"\0",Oa=(e,t,r,i)=>i===null?!1:Ae(e,t,r,i.getTime()/1e3),gw=new Array(156).join("\0"),We=(e,t,r,i)=>i===null?!1:(e.write(i+gw,t,r,"utf8"),i.length!==Buffer.byteLength(i)||i.length>r);Yp.exports=Kp});var $n=L((Wb,Jp)=>{"use strict";var vw=Cr(),ww=require("path"),Gn=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 vw({path:("PaxHeader/"+ww.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}};Gn.parse=(e,t,r)=>new Gn(Ew(bw(e),t),r);var Ew=(e,t)=>t?Object.keys(e).reduce((r,i)=>(r[i]=e[i],r),t):e,bw=e=>e.replace(/\n$/,"").split(` -`).reduce(_w,Object.create(null)),_w=(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};Jp.exports=Gn});var Wn=L((Hb,Qp)=>{"use strict";Qp.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 Da=L((Vb,td)=>{"use strict";var Hn=["|","<",">","?",":"],Na=Hn.map(e=>String.fromCharCode(61440+e.charCodeAt(0))),Sw=new Map(Hn.map((e,t)=>[e,Na[t]])),Ow=new Map(Na.map((e,t)=>[e,Hn[t]]));td.exports={encode:e=>Hn.reduce((t,r)=>t.split(r).join(Sw.get(r)),e),decode:e=>Na.reduce((t,r)=>t.split(r).join(Ow.get(r)),e)}});var rd=L((Yb,ed)=>{"use strict";ed.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 Ma=L((Jb,id)=>{"use strict";var nd=Lr(),sd=$n(),od=Cr(),Yt=require("fs"),kr=require("path"),Nw=16*1024*1024,ad=Symbol("process"),cd=Symbol("file"),ld=Symbol("directory"),Ta=Symbol("symlink"),ud=Symbol("hardlink"),Pi=Symbol("header"),Vn=Symbol("read"),Ra=Symbol("lstat"),Yn=Symbol("onlstat"),Aa=Symbol("onread"),Ia=Symbol("onreadlink"),La=Symbol("openfile"),xa=Symbol("onopenfile"),He=Symbol("close"),Zn=Symbol("mode"),hd=Wn(),Dw=Da(),fd=rd(),Kn=hd(class extends nd{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||Nw,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&&kr.win32.isAbsolute(t)){let n=kr.win32.parse(t);this.path=t.substr(n.root.length),i=n.root}this.win32=!!r.win32||process.platform==="win32",this.win32&&(this.path=Dw.decode(this.path.replace(/\\/g,"/")),t=t.replace(/\\/g,"/")),this.absolute=r.absolute||kr.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[Yn](this.statCache.get(this.absolute)):this[Ra]()}[Ra](){Yt.lstat(this.absolute,(t,r)=>{if(t)return this.emit("error",t);this[Yn](r)})}[Yn](t){this.statCache.set(this.absolute,t),this.stat=t,t.isFile()||(t.size=0),this.type=Tw(t),this.emit("stat",t),this[ad]()}[ad](){switch(this.type){case"File":return this[cd]();case"Directory":return this[ld]();case"SymbolicLink":return this[Ta]();default:return this.end()}}[Zn](t){return fd(t,this.type==="Directory",this.portable)}[Pi](){this.type==="Directory"&&this.portable&&(this.noMtime=!0),this.header=new od({path:this.path,linkpath:this.linkpath,mode:this[Zn](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 sd({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)}[ld](){this.path.substr(-1)!=="/"&&(this.path+="/"),this.stat.size=0,this[Pi](),this.end()}[Ta](){Yt.readlink(this.absolute,(t,r)=>{if(t)return this.emit("error",t);this[Ia](r)})}[Ia](t){this.linkpath=t.replace(/\\/g,"/"),this[Pi](),this.end()}[ud](t){this.type="Link",this.linkpath=kr.relative(this.cwd,t).replace(/\\/g,"/"),this.stat.size=0,this[Pi](),this.end()}[cd](){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[ud](r)}this.linkCache.set(t,this.absolute)}if(this[Pi](),this.stat.size===0)return this.end();this[La]()}[La](){Yt.open(this.absolute,"r",(t,r)=>{if(t)return this.emit("error",t);this[xa](r)})}[xa](t){let r=512*Math.ceil(this.stat.size/512),i=Math.min(r,this.maxReadSize),n=Buffer.allocUnsafe(i);this[Vn](t,n,0,n.length,0,this.stat.size,r)}[Vn](t,r,i,n,s,o,c){Yt.read(t,r,i,n,s,(a,l)=>{if(a)return this[He](t,()=>this.emit("error",a));this[Aa](t,r,i,n,s,o,c,l)})}[He](t,r){Yt.close(t,r)}[Aa](t,r,i,n,s,o,c,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[He](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[He](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[Vn](t,r,i,n,s,o,c)}}),pd=class extends Kn{[Ra](){this[Yn](Yt.lstatSync(this.absolute))}[Ta](){this[Ia](Yt.readlinkSync(this.absolute))}[La](){this[xa](Yt.openSync(this.absolute,"r"))}[Vn](t,r,i,n,s,o,c){let a=!0;try{let l=Yt.readSync(t,r,i,n,s);this[Aa](t,r,i,n,s,o,c,l),a=!1}finally{if(a)try{this[He](t,()=>{})}catch(l){}}}[He](t,r){Yt.closeSync(t),r()}},Rw=hd(class extends nd{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[Zn](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(kr.isAbsolute(this.path)&&!this.preservePaths){let n=kr.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 od({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 sd({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)}[Zn](t){return fd(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()}});Kn.Sync=pd;Kn.Tar=Rw;var Tw=e=>e.isFile()?"File":e.isDirectory()?"Directory":e.isSymbolicLink()?"SymbolicLink":"Unsupported";id.exports=Kn});var ss=L((t_,dd)=>{"use strict";var Ca=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}},Aw=Lr(),Iw=va(),Lw=Xn(),ka=Ma(),xw=ka.Sync,Mw=ka.Tar,Cw=Bn(),md=Buffer.alloc(1024),Jn=Symbol("onStat"),Qn=Symbol("ended"),Zt=Symbol("queue"),Pr=Symbol("current"),Ve=Symbol("process"),ts=Symbol("processing"),yd=Symbol("processJob"),Kt=Symbol("jobs"),Pa=Symbol("jobDone"),es=Symbol("addFSEntry"),gd=Symbol("addTarEntry"),Ba=Symbol("stat"),Fa=Symbol("readdir"),rs=Symbol("onreaddir"),is=Symbol("pipe"),vd=Symbol("entry"),qa=Symbol("entryOpt"),Ua=Symbol("writeEntryClass"),wd=Symbol("write"),ja=Symbol("ondrain"),ns=require("fs"),Ed=require("path"),kw=Wn(),Xa=kw(class extends Aw{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[Ua]=ka,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 Iw.Gzip(t.gzip),this.zip.on("data",r=>super.write(r)),this.zip.on("end",r=>super.end()),this.zip.on("drain",r=>this[ja]()),this.on("resume",r=>this.zip.resume())):this.on("drain",this[ja]),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[Zt]=new Cw,this[Kt]=0,this.jobs=+t.jobs||4,this[ts]=!1,this[Qn]=!1}[wd](t){return super.write(t)}add(t){return this.write(t),this}end(t){return t&&this.write(t),this[Qn]=!0,this[Ve](),this}write(t){if(this[Qn])throw new Error("write after end");return t instanceof Lw?this[gd](t):this[es](t),this.flowing}[gd](t){let r=Ed.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 Ca(t.path,r,!1);i.entry=new Mw(t,this[qa](i)),i.entry.on("end",n=>this[Pa](i)),this[Kt]+=1,this[Zt].push(i)}this[Ve]()}[es](t){let r=Ed.resolve(this.cwd,t);this.prefix&&(t=this.prefix+"/"+t.replace(/^\.(\/+|$)/,"")),this[Zt].push(new Ca(t,r)),this[Ve]()}[Ba](t){t.pending=!0,this[Kt]+=1;let r=this.follow?"stat":"lstat";ns[r](t.absolute,(i,n)=>{t.pending=!1,this[Kt]-=1,i?this.emit("error",i):this[Jn](t,n)})}[Jn](t,r){this.statCache.set(t.absolute,r),t.stat=r,this.filter(t.path,r)||(t.ignore=!0),this[Ve]()}[Fa](t){t.pending=!0,this[Kt]+=1,ns.readdir(t.absolute,(r,i)=>{if(t.pending=!1,this[Kt]-=1,r)return this.emit("error",r);this[rs](t,i)})}[rs](t,r){this.readdirCache.set(t.absolute,r),t.readdir=r,this[Ve]()}[Ve](){if(!this[ts]){this[ts]=!0;for(let t=this[Zt].head;t!==null&&this[Kt]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}}[vd](t){this[Kt]+=1;try{return new this[Ua](t.path,this[qa](t)).on("end",()=>this[Pa](t)).on("error",r=>this.emit("error",r))}catch(r){this.emit("error",r)}}[ja](){this[Pr]&&this[Pr].entry&&this[Pr].entry.resume()}[is](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[es](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()}}),bd=class extends Xa{constructor(t){super(t);this[Ua]=xw}pause(){}resume(){}[Ba](t){let r=this.follow?"statSync":"lstatSync";this[Jn](t,ns[r](t.absolute))}[Fa](t,r){this[rs](t,ns.readdirSync(t.absolute))}[is](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[es](o+n)}),i?r.on("data",n=>{i.write(n)}):r.on("data",n=>{super[wd](n)})}};Xa.Sync=bd;dd.exports=Xa});var Gr=L(Bi=>{"use strict";var Pw=Lr(),Bw=require("events").EventEmitter,Nt=require("fs"),za=Nt.writev;if(!za){let e=process.binding("fs"),t=e.FSReqWrap||e.FSReqCallback;za=(r,i,n,s)=>{let o=(a,l)=>s(a,l,i),c=new t;c.oncomplete=o,e.writeBuffers(r,i,n,c)}}var Br=Symbol("_autoClose"),Gt=Symbol("_close"),Fi=Symbol("_ended"),J=Symbol("_fd"),_d=Symbol("_finished"),Ie=Symbol("_flags"),Ga=Symbol("_flush"),$a=Symbol("_handleChunk"),Wa=Symbol("_makeBuf"),os=Symbol("_mode"),as=Symbol("_needDrain"),Fr=Symbol("_onerror"),qr=Symbol("_onopen"),Ha=Symbol("_onread"),Ur=Symbol("_onwrite"),Le=Symbol("_open"),le=Symbol("_path"),Ye=Symbol("_pos"),Jt=Symbol("_queue"),jr=Symbol("_read"),Sd=Symbol("_readSize"),xe=Symbol("_reading"),cs=Symbol("_remain"),Od=Symbol("_size"),ls=Symbol("_write"),Xr=Symbol("_writing"),us=Symbol("_defaultFlag"),zr=Symbol("_errored"),Va=class extends Pw{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[zr]=!1,this[J]=typeof r.fd=="number"?r.fd:null,this[le]=t,this[Sd]=r.readSize||16*1024*1024,this[xe]=!1,this[Od]=typeof r.size=="number"?r.size:Infinity,this[cs]=this[Od],this[Br]=typeof r.autoClose=="boolean"?r.autoClose:!0,typeof this[J]=="number"?this[jr]():this[Le]()}get fd(){return this[J]}get path(){return this[le]}write(){throw new TypeError("this is a readable stream")}end(){throw new TypeError("this is a readable stream")}[Le](){Nt.open(this[le],"r",(t,r)=>this[qr](t,r))}[qr](t,r){t?this[Fr](t):(this[J]=r,this.emit("open",r),this[jr]())}[Wa](){return Buffer.allocUnsafe(Math.min(this[Sd],this[cs]))}[jr](){if(!this[xe]){this[xe]=!0;let t=this[Wa]();if(t.length===0)return process.nextTick(()=>this[Ha](null,0,t));Nt.read(this[J],t,0,t.length,null,(r,i,n)=>this[Ha](r,i,n))}}[Ha](t,r,i){this[xe]=!1,t?this[Fr](t):this[$a](r,i)&&this[jr]()}[Gt](){if(this[Br]&&typeof this[J]=="number"){let t=this[J];this[J]=null,Nt.close(t,r=>r?this.emit("error",r):this.emit("close"))}}[Fr](t){this[xe]=!0,this[Gt](),this.emit("error",t)}[$a](t,r){let i=!1;return this[cs]-=t,t>0&&(i=super.write(tthis[qr](t,r))}[qr](t,r){this[us]&&this[Ie]==="r+"&&t&&t.code==="ENOENT"?(this[Ie]="w",this[Le]()):t?this[Fr](t):(this[J]=r,this.emit("open",r),this[Ga]())}end(t,r){return t&&this.write(t,r),this[Fi]=!0,!this[Xr]&&!this[Jt].length&&typeof this[J]=="number"&&this[Ur](null,0),this}write(t,r){return typeof t=="string"&&(t=Buffer.from(t,r)),this[Fi]?(this.emit("error",new Error("write() after end()")),!1):this[J]===null||this[Xr]||this[Jt].length?(this[Jt].push(t),this[as]=!0,!1):(this[Xr]=!0,this[ls](t),!0)}[ls](t){Nt.write(this[J],t,0,t.length,this[Ye],(r,i)=>this[Ur](r,i))}[Ur](t,r){t?this[Fr](t):(this[Ye]!==null&&(this[Ye]+=r),this[Jt].length?this[Ga]():(this[Xr]=!1,this[Fi]&&!this[_d]?(this[_d]=!0,this[Gt](),this.emit("finish")):this[as]&&(this[as]=!1,this.emit("drain"))))}[Ga](){if(this[Jt].length===0)this[Fi]&&this[Ur](null,0);else if(this[Jt].length===1)this[ls](this[Jt].pop());else{let t=this[Jt];this[Jt]=[],za(this[J],t,this[Ye],(r,i)=>this[Ur](r,i))}}[Gt](){if(this[Br]&&typeof this[J]=="number"){let t=this[J];this[J]=null,Nt.close(t,r=>r?this.emit("error",r):this.emit("close"))}}},Dd=class extends Ya{[Le](){let t;if(this[us]&&this[Ie]==="r+")try{t=Nt.openSync(this[le],this[Ie],this[os])}catch(r){if(r.code==="ENOENT")return this[Ie]="w",this[Le]();throw r}else t=Nt.openSync(this[le],this[Ie],this[os]);this[qr](null,t)}[Gt](){if(this[Br]&&typeof this[J]=="number"){let t=this[J];this[J]=null,Nt.closeSync(t),this.emit("close")}}[ls](t){let r=!0;try{this[Ur](null,Nt.writeSync(this[J],t,0,t.length,this[Ye])),r=!1}finally{if(r)try{this[Gt]()}catch(i){}}}};Bi.ReadStream=Va;Bi.ReadStreamSync=Nd;Bi.WriteStream=Ya;Bi.WriteStreamSync=Dd});var gs=L((i_,Td)=>{"use strict";var Fw=Wn(),qw=Cr(),Uw=require("events"),jw=Bn(),Xw=1024*1024,zw=Xn(),Rd=$n(),Gw=va(),Za=Buffer.from([31,139]),Bt=Symbol("state"),Ze=Symbol("writeEntry"),ue=Symbol("readEntry"),Ka=Symbol("nextEntry"),Ad=Symbol("processEntry"),Ft=Symbol("extendedHeader"),qi=Symbol("globalExtendedHeader"),Me=Symbol("meta"),Id=Symbol("emitMeta"),et=Symbol("buffer"),he=Symbol("queue"),Ke=Symbol("ended"),Ld=Symbol("emittedEnd"),Je=Symbol("emit"),Dt=Symbol("unzip"),hs=Symbol("consumeChunk"),fs=Symbol("consumeChunkSub"),Ja=Symbol("consumeBody"),xd=Symbol("consumeMeta"),Md=Symbol("consumeHeader"),ps=Symbol("consuming"),Qa=Symbol("bufferConcat"),tc=Symbol("maybeEnd"),Ui=Symbol("writing"),Ce=Symbol("aborted"),ds=Symbol("onDone"),Qe=Symbol("sawValidEntry"),ms=Symbol("sawNullBlock"),ys=Symbol("sawEOF"),$w=e=>!0;Td.exports=Fw(class extends Uw{constructor(t){t=t||{},super(t),this.file=t.file||"",this[Qe]=null,this.on(ds,r=>{(this[Bt]==="begin"||this[Qe]===!1)&&this.warn("TAR_BAD_ARCHIVE","Unrecognized archive format")}),t.ondone?this.on(ds,t.ondone):this.on(ds,r=>{this.emit("prefinish"),this.emit("finish"),this.emit("end"),this.emit("close")}),this.strict=!!t.strict,this.maxMetaEntrySize=t.maxMetaEntrySize||Xw,this.filter=typeof t.filter=="function"?t.filter:$w,this.writable=!0,this.readable=!1,this[he]=new jw,this[et]=null,this[ue]=null,this[Ze]=null,this[Bt]="begin",this[Me]="",this[Ft]=null,this[qi]=null,this[Ke]=!1,this[Dt]=null,this[Ce]=!1,this[ms]=!1,this[ys]=!1,typeof t.onwarn=="function"&&this.on("warn",t.onwarn),typeof t.onentry=="function"&&this.on("entry",t.onentry)}[Md](t,r){this[Qe]===null&&(this[Qe]=!1);let i;try{i=new qw(t,r,this[Ft],this[qi])}catch(n){return this.warn("TAR_ENTRY_INVALID",n)}if(i.nullBlock)this[ms]?(this[ys]=!0,this[Bt]==="begin"&&(this[Bt]="header"),this[Je]("eof")):(this[ms]=!0,this[Je]("nullBlock"));else if(this[ms]=!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[Ze]=new zw(i,this[Ft],this[qi]);if(!this[Qe])if(s.remain){let o=()=>{s.invalid||(this[Qe]=!0)};s.on("end",o)}else this[Qe]=!0;s.meta?s.size>this.maxMetaEntrySize?(s.ignore=!0,this[Je]("ignoredEntry",s),this[Bt]="ignore",s.resume()):s.size>0&&(this[Me]="",s.on("data",o=>this[Me]+=o),this[Bt]="meta"):(this[Ft]=null,s.ignore=s.ignore||!this.filter(s.path,s),s.ignore?(this[Je]("ignoredEntry",s),this[Bt]=s.remain?"ignore":"header",s.resume()):(s.remain?this[Bt]="body":(this[Bt]="header",s.end()),this[ue]?this[he].push(s):(this[he].push(s),this[Ka]())))}}}[Ad](t){let r=!0;return t?Array.isArray(t)?this.emit.apply(this,t):(this[ue]=t,this.emit("entry",t),t.emittedEnd||(t.on("end",i=>this[Ka]()),r=!1)):(this[ue]=null,r=!1),r}[Ka](){do;while(this[Ad](this[he].shift()));if(!this[he].length){let t=this[ue];!t||t.flowing||t.size===t.remain?this[Ui]||this.emit("drain"):t.once("drain",i=>this.emit("drain"))}}[Ja](t,r){let i=this[Ze],n=i.blockRemain,s=n>=t.length&&r===0?t:t.slice(r,r+n);return i.write(s),i.blockRemain||(this[Bt]="header",this[Ze]=null,i.end()),s.length}[xd](t,r){let i=this[Ze],n=this[Ja](t,r);return this[Ze]||this[Id](i),n}[Je](t,r,i){!this[he].length&&!this[ue]?this.emit(t,r,i):this[he].push([t,r,i])}[Id](t){switch(this[Je]("meta",this[Me]),t.type){case"ExtendedHeader":case"OldExtendedHeader":this[Ft]=Rd.parse(this[Me],this[Ft],!1);break;case"GlobalExtendedHeader":this[qi]=Rd.parse(this[Me],this[qi],!0);break;case"NextFileHasLongPath":case"OldGnuLongPath":this[Ft]=this[Ft]||Object.create(null),this[Ft].path=this[Me].replace(/\0.*/,"");break;case"NextFileHasLongLinkpath":this[Ft]=this[Ft]||Object.create(null),this[Ft].linkpath=this[Me].replace(/\0.*/,"");break;default:throw new Error("unknown meta: "+t.type)}}abort(t){this[Ce]=!0,this.emit("abort",t),this.warn("TAR_ABORT",t,{recoverable:!1})}write(t){if(this[Ce])return;if(this[Dt]===null&&t){if(this[et]&&(t=Buffer.concat([this[et],t]),this[et]=null),t.lengththis[hs](s)),this[Dt].on("error",s=>this.abort(s)),this[Dt].on("end",s=>{this[Ke]=!0,this[hs]()}),this[Ui]=!0;let n=this[Dt][i?"end":"write"](t);return this[Ui]=!1,n}}this[Ui]=!0,this[Dt]?this[Dt].write(t):this[hs](t),this[Ui]=!1;let r=this[he].length?!1:this[ue]?this[ue].flowing:!0;return!r&&!this[he].length&&this[ue].once("drain",i=>this.emit("drain")),r}[Qa](t){t&&!this[Ce]&&(this[et]=this[et]?Buffer.concat([this[et],t]):t)}[tc](){if(this[Ke]&&!this[Ld]&&!this[Ce]&&!this[ps]){this[Ld]=!0;let t=this[Ze];if(t&&t.blockRemain){let r=this[et]?this[et].length:0;this.warn("TAR_BAD_ARCHIVE",`Truncated input (needed ${t.blockRemain} more bytes, only ${r} available)`,{entry:t}),this[et]&&t.write(this[et]),t.end()}this[Je](ds)}}[hs](t){if(this[ps])this[Qa](t);else if(!t&&!this[et])this[tc]();else{if(this[ps]=!0,this[et]){this[Qa](t);let r=this[et];this[et]=null,this[fs](r)}else this[fs](t);for(;this[et]&&this[et].length>=512&&!this[Ce]&&!this[ys];){let r=this[et];this[et]=null,this[fs](r)}this[ps]=!1}(!this[et]||this[Ke])&&this[tc]()}[fs](t){let r=0,i=t.length;for(;r+512<=i&&!this[Ce]&&!this[ys];)switch(this[Bt]){case"begin":case"header":this[Md](t,r),r+=512;break;case"ignore":case"body":r+=this[Ja](t,r);break;case"meta":r+=this[xd](t,r);break;default:throw new Error("invalid state: "+this[Bt])}r{"use strict";var Ww=Ir(),kd=gs(),$r=require("fs"),Hw=Gr(),Pd=require("path");Cd.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=Ww(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&&Yw(i,t),i.noResume||Vw(i),i.file&&i.sync?Zw(i):i.file?Kw(i,r):Bd(i)};var Vw=e=>{let t=e.onentry;e.onentry=t?r=>{t(r),r.resume()}:r=>r.resume()},Yw=(e,t)=>{let r=new Map(t.map(s=>[s.replace(/\/+$/,""),!0])),i=e.filter,n=(s,o)=>{let c=o||Pd.parse(s).root||".",a=s===c?!1:r.has(s)?r.get(s):n(Pd.dirname(s),c);return r.set(s,a),a};e.filter=i?(s,o)=>i(s,o)&&n(s.replace(/\/+$/,"")):s=>n(s.replace(/\/+$/,""))},Zw=e=>{let t=Bd(e),r=e.file,i=!0,n;try{let s=$r.statSync(r),o=e.maxReadSize||16*1024*1024;if(s.size{let r=new kd(e),i=e.maxReadSize||16*1024*1024,n=e.file,s=new Promise((o,c)=>{r.on("error",c),r.on("end",o),$r.stat(n,(a,l)=>{if(a)c(a);else{let u=new Hw.ReadStream(n,{readSize:i,size:l.size});u.on("error",c),u.pipe(r)}})});return t?s.then(t,t):s},Bd=e=>new kd(e)});var zd=L((s_,Fd)=>{"use strict";var Jw=Ir(),ws=ss(),qd=Gr(),Ud=vs(),jd=require("path");Fd.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=Jw(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?Qw(i,t):i.file?tE(i,t,r):i.sync?eE(i,t):rE(i,t)};var Qw=(e,t)=>{let r=new ws.Sync(e),i=new qd.WriteStreamSync(e.file,{mode:e.mode||438});r.pipe(i),Xd(r,t)},tE=(e,t,r)=>{let i=new ws(e),n=new qd.WriteStream(e.file,{mode:e.mode||438});i.pipe(n);let s=new Promise((o,c)=>{n.on("error",c),n.on("close",o),i.on("error",c)});return ec(i,t),r?s.then(r,r):s},Xd=(e,t)=>{t.forEach(r=>{r.charAt(0)==="@"?Ud({file:jd.resolve(e.cwd,r.substr(1)),sync:!0,noResume:!0,onentry:i=>e.add(i)}):e.add(r)}),e.end()},ec=(e,t)=>{for(;t.length;){let r=t.shift();if(r.charAt(0)==="@")return Ud({file:jd.resolve(e.cwd,r.substr(1)),noResume:!0,onentry:i=>e.add(i)}).then(i=>ec(e,t));e.add(r)}e.end()},eE=(e,t)=>{let r=new ws.Sync(e);return Xd(r,t),r},rE=(e,t)=>{let r=new ws(e);return ec(r,t),r}});var rc=L((o_,Gd)=>{"use strict";var iE=Ir(),$d=ss(),qt=require("fs"),Wd=Gr(),Hd=vs(),Vd=require("path"),Yd=Cr();Gd.exports=(e,t,r)=>{let i=iE(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?nE(i,t):sE(i,t,r)};var nE=(e,t)=>{let r=new $d.Sync(e),i=!0,n,s;try{try{n=qt.openSync(e.file,"r+")}catch(a){if(a.code==="ENOENT")n=qt.openSync(e.file,"w+");else throw a}let o=qt.fstatSync(n),c=Buffer.alloc(512);t:for(s=0;so.size)break;s+=l,e.mtimeCache&&e.mtimeCache.set(a.path,a.mtime)}i=!1,oE(e,r,s,n,t)}finally{if(i)try{qt.closeSync(n)}catch(o){}}},oE=(e,t,r,i,n)=>{let s=new Wd.WriteStreamSync(e.file,{fd:i,start:r});t.pipe(s),aE(t,n)},sE=(e,t,r)=>{t=Array.from(t);let i=new $d(e),n=(o,c,a)=>{let l=(E,m)=>{E?qt.close(o,w=>a(E)):a(null,m)},u=0;if(c===0)return l(null,0);let f=0,y=Buffer.alloc(512),b=(E,m)=>{if(E)return l(E);if(f+=m,f<512&&m)return qt.read(o,y,f,y.length-f,u+f,b);if(u===0&&y[0]===31&&y[1]===139)return l(new Error("cannot append to compressed archives"));if(f<512)return l(null,u);let w=new Yd(y);if(!w.cksumValid)return l(null,u);let O=512*Math.ceil(w.size/512);if(u+O+512>c||(u+=O+512,u>=c))return l(null,u);e.mtimeCache&&e.mtimeCache.set(w.path,w.mtime),f=0,qt.read(o,y,0,512,u,b)};qt.read(o,y,0,512,u,b)},s=new Promise((o,c)=>{i.on("error",c);let a="r+",l=(u,f)=>{if(u&&u.code==="ENOENT"&&a==="r+")return a="w+",qt.open(e.file,a,l);if(u)return c(u);qt.fstat(f,(y,b)=>{if(y)return c(y);n(f,b.size,(E,m)=>{if(E)return c(E);let w=new Wd.WriteStream(e.file,{fd:f,start:m});i.pipe(w),w.on("error",c),w.on("close",o),Zd(i,t)})})};qt.open(e.file,a,l)});return r?s.then(r,r):s},aE=(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()},Zd=(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=>Zd(e,t));e.add(r)}e.end()}});var Jd=L((a_,Kd)=>{"use strict";var cE=Ir(),lE=rc();Kd.exports=(e,t,r)=>{let i=cE(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),uE(i),lE(i,t,r)};var uE=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 em=L((c_,Qd)=>{var{promisify:tm}=require("util"),ke=require("fs"),hE=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=tm(e.mkdir),e.stat=e.stat||e.fs.stat||ke.stat,e.statAsync=tm(e.stat),e.statSync=e.statSync||e.fs.statSync||ke.statSync,e.mkdirSync=e.mkdirSync||e.fs.mkdirSync||ke.mkdirSync,e};Qd.exports=hE});var im=L((l_,rm)=>{var fE=process.env.__TESTING_MKDIRP_PLATFORM__||process.platform,{resolve:pE,parse:dE}=require("path"),mE=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=pE(e),fE==="win32"){let t=/[*|"<>?:]/,{root:r}=dE(e);if(t.test(e.substr(r.length)))throw Object.assign(new Error("Illegal characters in path."),{path:e,code:"EINVAL"})}return e};rm.exports=mE});var cm=L((u_,nm)=>{var{dirname:sm}=require("path"),om=(e,t,r=void 0)=>r===t?Promise.resolve():e.statAsync(t).then(i=>i.isDirectory()?r:void 0,i=>i.code==="ENOENT"?om(e,sm(t),t):void 0),am=(e,t,r=void 0)=>{if(r!==t)try{return e.statSync(t).isDirectory()?r:void 0}catch(i){return i.code==="ENOENT"?am(e,sm(t),t):void 0}};nm.exports={findMade:om,findMadeSync:am}});var sc=L((h_,lm)=>{var{dirname:um}=require("path"),ic=(e,t,r)=>{t.recursive=!1;let i=um(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 ic(i,t).then(s=>ic(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})})},nc=(e,t,r)=>{let i=um(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 nc(e,t,nc(i,t,r));if(n.code!=="EEXIST"&&n.code!=="EROFS")throw n;try{if(!t.statSync(e).isDirectory())throw n}catch(s){throw n}}};lm.exports={mkdirpManual:ic,mkdirpManualSync:nc}});var pm=L((f_,hm)=>{var{dirname:fm}=require("path"),{findMade:yE,findMadeSync:gE}=cm(),{mkdirpManual:vE,mkdirpManualSync:wE}=sc(),EE=(e,t)=>(t.recursive=!0,fm(e)===e?t.mkdirAsync(e,t):yE(t,e).then(i=>t.mkdirAsync(e,t).then(()=>i).catch(n=>{if(n.code==="ENOENT")return vE(e,t);throw n}))),bE=(e,t)=>{if(t.recursive=!0,fm(e)===e)return t.mkdirSync(e,t);let i=gE(t,e);try{return t.mkdirSync(e,t),i}catch(n){if(n.code==="ENOENT")return wE(e,t);throw n}};hm.exports={mkdirpNative:EE,mkdirpNativeSync:bE}});var gm=L((p_,dm)=>{var mm=require("fs"),_E=process.env.__TESTING_MKDIRP_NODE_VERSION__||process.version,oc=_E.replace(/^v/,"").split("."),ym=+oc[0]>10||+oc[0]==10&&+oc[1]>=12,SE=ym?e=>e.mkdir===mm.mkdir:()=>!1,OE=ym?e=>e.mkdirSync===mm.mkdirSync:()=>!1;dm.exports={useNative:SE,useNativeSync:OE}});var Sm=L((d_,vm)=>{var Wr=em(),Hr=im(),{mkdirpNative:wm,mkdirpNativeSync:Em}=pm(),{mkdirpManual:bm,mkdirpManualSync:_m}=sc(),{useNative:NE,useNativeSync:DE}=gm(),Vr=(e,t)=>(e=Hr(e),t=Wr(t),NE(t)?wm(e,t):bm(e,t)),TE=(e,t)=>(e=Hr(e),t=Wr(t),DE(t)?Em(e,t):_m(e,t));Vr.sync=TE;Vr.native=(e,t)=>wm(Hr(e),Wr(t));Vr.manual=(e,t)=>bm(Hr(e),Wr(t));Vr.nativeSync=(e,t)=>Em(Hr(e),Wr(t));Vr.manualSync=(e,t)=>_m(Hr(e),Wr(t));vm.exports=Vr});var Im=L((m_,Om)=>{"use strict";var Ut=require("fs"),tr=require("path"),RE=Ut.lchown?"lchown":"chown",AE=Ut.lchownSync?"lchownSync":"chownSync",Nm=Ut.lchown&&!process.version.match(/v1[1-9]+\./)&&!process.version.match(/v10\.[6-9]/),Dm=(e,t,r)=>{try{return Ut[AE](e,t,r)}catch(i){if(i.code!=="ENOENT")throw i}},IE=(e,t,r)=>{try{return Ut.chownSync(e,t,r)}catch(i){if(i.code!=="ENOENT")throw i}},LE=Nm?(e,t,r,i)=>n=>{!n||n.code!=="EISDIR"?i(n):Ut.chown(e,t,r,i)}:(e,t,r,i)=>i,ac=Nm?(e,t,r)=>{try{return Dm(e,t,r)}catch(i){if(i.code!=="EISDIR")throw i;IE(e,t,r)}}:(e,t,r)=>Dm(e,t,r),xE=process.version,Tm=(e,t,r)=>Ut.readdir(e,t,r),ME=(e,t)=>Ut.readdirSync(e,t);/^v4\./.test(xE)&&(Tm=(e,t,r)=>Ut.readdir(e,r));var Es=(e,t,r,i)=>{Ut[RE](e,t,r,LE(e,t,r,n=>{i(n&&n.code!=="ENOENT"?n:null)}))},Rm=(e,t,r,i,n)=>{if(typeof t=="string")return Ut.lstat(tr.resolve(e,t),(s,o)=>{if(s)return n(s.code!=="ENOENT"?s:null);o.name=t,Rm(e,o,r,i,n)});if(t.isDirectory())cc(tr.resolve(e,t.name),r,i,s=>{if(s)return n(s);let o=tr.resolve(e,t.name);Es(o,r,i,n)});else{let s=tr.resolve(e,t.name);Es(s,r,i,n)}},cc=(e,t,r,i)=>{Tm(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 Es(e,t,r,i);let o=s.length,c=null,a=l=>{if(!c){if(l)return i(c=l);if(--o==0)return Es(e,t,r,i)}};s.forEach(l=>Rm(e,l,t,r,a))})},CE=(e,t,r,i)=>{if(typeof t=="string")try{let n=Ut.lstatSync(tr.resolve(e,t));n.name=t,t=n}catch(n){if(n.code==="ENOENT")return;throw n}t.isDirectory()&&Am(tr.resolve(e,t.name),r,i),ac(tr.resolve(e,t.name),r,i)},Am=(e,t,r)=>{let i;try{i=ME(e,{withFileTypes:!0})}catch(n){if(n.code==="ENOENT")return;if(n.code==="ENOTDIR"||n.code==="ENOTSUP")return ac(e,t,r);throw n}return i&&i.length&&i.forEach(n=>CE(e,n,t,r)),ac(e,t,r)};Om.exports=cc;cc.sync=Am});var Cm=L((y_,lc)=>{"use strict";var Lm=Sm(),jt=require("fs"),bs=require("path"),xm=Im(),uc=class extends Error{constructor(t,r){super("Cannot extract through symbolic link");this.path=r,this.symlink=t}get name(){return"SylinkError"}},ji=class extends Error{constructor(t,r){super(r+": Cannot cd into '"+t+"'");this.path=t,this.code=r}get name(){return"CwdError"}};lc.exports=(e,t,r)=>{let i=t.umask,n=t.mode|448,s=(n&i)!=0,o=t.uid,c=t.gid,a=typeof o=="number"&&typeof c=="number"&&(o!==t.processUid||c!==t.processGid),l=t.preserve,u=t.unlink,f=t.cache,y=t.cwd,b=(w,O)=>{w?r(w):(f.set(e,!0),O&&a?xm(O,o,c,d=>b(d)):s?jt.chmod(e,n,r):r())};if(f&&f.get(e)===!0)return b();if(e===y)return jt.stat(e,(w,O)=>{(w||!O.isDirectory())&&(w=new ji(e,w&&w.code||"ENOTDIR")),b(w)});if(l)return Lm(e,{mode:n}).then(w=>b(null,w),b);let m=bs.relative(y,e).split(/\/|\\/);_s(y,m,n,f,u,y,null,b)};var _s=(e,t,r,i,n,s,o,c)=>{if(!t.length)return c(null,o);let a=t.shift(),l=e+"/"+a;if(i.get(l))return _s(l,t,r,i,n,s,o,c);jt.mkdir(l,r,Mm(l,t,r,i,n,s,o,c))},Mm=(e,t,r,i,n,s,o,c)=>a=>{if(a){if(a.path&&bs.dirname(a.path)===s&&(a.code==="ENOTDIR"||a.code==="ENOENT"))return c(new ji(s,a.code));jt.lstat(e,(l,u)=>{if(l)c(l);else if(u.isDirectory())_s(e,t,r,i,n,s,o,c);else if(n)jt.unlink(e,f=>{if(f)return c(f);jt.mkdir(e,r,Mm(e,t,r,i,n,s,o,c))});else{if(u.isSymbolicLink())return c(new uc(e,e+"/"+t.join("/")));c(a)}})}else o=o||e,_s(e,t,r,i,n,s,o,c)};lc.exports.sync=(e,t)=>{let r=t.umask,i=t.mode|448,n=(i&r)!=0,s=t.uid,o=t.gid,c=typeof s=="number"&&typeof o=="number"&&(s!==t.processUid||o!==t.processGid),a=t.preserve,l=t.unlink,u=t.cache,f=t.cwd,y=w=>{u.set(e,!0),w&&c&&xm.sync(w,s,o),n&&jt.chmodSync(e,i)};if(u&&u.get(e)===!0)return y();if(e===f){let w=!1,O="ENOTDIR";try{w=jt.statSync(e).isDirectory()}catch(d){O=d.code}finally{if(!w)throw new ji(e,O)}y();return}if(a)return y(Lm.sync(e,i));let E=bs.relative(f,e).split(/\/|\\/),m=null;for(let w=E.shift(),O=f;w&&(O+="/"+w);w=E.shift())if(!u.get(O))try{jt.mkdirSync(O,i),m=m||O,u.set(O,!0)}catch(d){if(d.path&&bs.dirname(d.path)===f&&(d.code==="ENOTDIR"||d.code==="ENOENT"))return new ji(f,d.code);let g=jt.lstatSync(O);if(g.isDirectory()){u.set(O,!0);continue}else if(l){jt.unlinkSync(O),jt.mkdirSync(O,i),m=m||O,u.set(O,!0);continue}else if(g.isSymbolicLink())return new uc(O,O+"/"+E.join("/"))}return y(m)}});var Bm=L((g_,km)=>{var Pm=require("assert");km.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))},c=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);Pm.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);Pm(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=>c(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])])}),c(f)}}}});var Um=L((v_,Fm)=>{var kE=process.env.__FAKE_PLATFORM__||process.platform,PE=kE==="win32",BE=global.__FAKE_TESTING_FS__||require("fs"),{O_CREAT:FE,O_TRUNC:qE,O_WRONLY:UE,UV_FS_O_FILEMAP:qm=0}=BE.constants,jE=PE&&!!qm,XE=512*1024,zE=qm|qE|FE|UE;Fm.exports=jE?e=>e"w"});var vc=L((w_,jm)=>{"use strict";var GE=require("assert"),$E=gs(),K=require("fs"),WE=Gr(),fe=require("path"),Xm=Cm(),zm=Da(),HE=Bm(),Gm=Symbol("onEntry"),hc=Symbol("checkFs"),$m=Symbol("checkFs2"),fc=Symbol("isReusable"),pe=Symbol("makeFs"),pc=Symbol("file"),dc=Symbol("directory"),Ss=Symbol("link"),Wm=Symbol("symlink"),Hm=Symbol("hardlink"),Vm=Symbol("unsupported"),Ym=Symbol("checkPath"),Yr=Symbol("mkdir"),gt=Symbol("onError"),Os=Symbol("pending"),Zm=Symbol("pend"),Zr=Symbol("unpend"),mc=Symbol("ended"),yc=Symbol("maybeClose"),gc=Symbol("skip"),Xi=Symbol("doChown"),zi=Symbol("uid"),Gi=Symbol("gid"),Km=require("crypto"),Jm=Um(),Ns=()=>{throw new Error("sync function called cb somehow?!?")},VE=(e,t)=>{if(process.platform!=="win32")return K.unlink(e,t);let r=e+".DELETE."+Km.randomBytes(16).toString("hex");K.rename(e,r,i=>{if(i)return t(i);K.unlink(r,t)})},YE=e=>{if(process.platform!=="win32")return K.unlinkSync(e);let t=e+".DELETE."+Km.randomBytes(16).toString("hex");K.renameSync(e,t),K.unlinkSync(t)},Qm=(e,t,r)=>e===e>>>0?e:t===t>>>0?t:r,Ds=class extends $E{constructor(t){if(t||(t={}),t.ondone=r=>{this[mc]=!0,this[yc]()},super(t),this.reservations=HE(),this.transform=typeof t.transform=="function"?t.transform:null,this.writable=!0,this.readable=!1,this[Os]=0,this[mc]=!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=fe.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[Gm](r))}warn(t,r,i={}){return(t==="TAR_BAD_ARCHIVE"||t==="TAR_ABORT")&&(i.recoverable=!1),super.warn(t,r,i)}[yc](){this[mc]&&this[Os]===0&&(this.emit("prefinish"),this.emit("finish"),this.emit("end"),this.emit("close"))}[Ym](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(fe.win32.isAbsolute(r)){let i=fe.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=fe.win32.parse(t.path);t.path=r.root===""?zm.encode(t.path):r.root+zm.encode(t.path.substr(r.root.length))}return fe.isAbsolute(t.path)?t.absolute=t.path:t.absolute=fe.resolve(this.cwd,t.path),!0}[Gm](t){if(!this[Ym](t))return t.resume();switch(GE.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[hc](t);case"CharacterDevice":case"BlockDevice":case"FIFO":default:return this[Vm](t)}}[gt](t,r){t.name==="CwdError"?this.emit("error",t):(this.warn("TAR_ENTRY_ERROR",t,{entry:r}),this[Zr](),r.resume())}[Yr](t,r,i){Xm(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)}[Xi](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}[zi](t){return Qm(this.uid,t.uid,this.processUid)}[Gi](t){return Qm(this.gid,t.gid,this.processGid)}[pc](t,r){let i=t.mode&4095||this.fmode,n=new WE.WriteStream(t.absolute,{flags:Jm(t.size),mode:i,autoClose:!1});n.on("error",a=>this[gt](a,t));let s=1,o=a=>{if(a)return this[gt](a,t);--s==0&&K.close(n.fd,l=>{r(),l?this[gt](l,t):this[Zr]()})};n.on("finish",a=>{let l=t.absolute,u=n.fd;if(t.mtime&&!this.noMtime){s++;let f=t.atime||new Date,y=t.mtime;K.futimes(u,f,y,b=>b?K.utimes(l,f,y,E=>o(E&&b)):o())}if(this[Xi](t)){s++;let f=this[zi](t),y=this[Gi](t);K.fchown(u,f,y,b=>b?K.chown(l,f,y,E=>o(E&&b)):o())}o()});let c=this.transform&&this.transform(t)||t;c!==t&&(c.on("error",a=>this[gt](a,t)),t.pipe(c)),c.pipe(n)}[dc](t,r){let i=t.mode&4095||this.dmode;this[Yr](t.absolute,i,n=>{if(n)return r(),this[gt](n,t);let s=1,o=c=>{--s==0&&(r(),this[Zr](),t.resume())};t.mtime&&!this.noMtime&&(s++,K.utimes(t.absolute,t.atime||new Date,t.mtime,o)),this[Xi](t)&&(s++,K.chown(t.absolute,this[zi](t),this[Gi](t),o)),o()})}[Vm](t){t.unsupported=!0,this.warn("TAR_ENTRY_UNSUPPORTED",`unsupported entry type: ${t.type}`,{entry:t}),t.resume()}[Wm](t,r){this[Ss](t,t.linkpath,"symlink",r)}[Hm](t,r){this[Ss](t,fe.resolve(this.cwd,t.linkpath),"link",r)}[Zm](){this[Os]++}[Zr](){this[Os]--,this[yc]()}[gc](t){this[Zr](),t.resume()}[fc](t,r){return t.type==="File"&&!this.unlink&&r.isFile()&&r.nlink<=1&&process.platform!=="win32"}[hc](t){this[Zm]();let r=[t.path];t.linkpath&&r.push(t.linkpath),this.reservations.reserve(r,i=>this[$m](t,i))}[$m](t,r){this[Yr](fe.dirname(t.absolute),this.dmode,i=>{if(i)return r(),this[gt](i,t);K.lstat(t.absolute,(n,s)=>{s&&(this.keep||this.newer&&s.mtime>t.mtime)?(this[gc](t),r()):n||this[fc](t,s)?this[pe](null,t,r):s.isDirectory()?t.type==="Directory"?!this.noChmod&&(!t.mode||(s.mode&4095)===t.mode)?this[pe](null,t,r):K.chmod(t.absolute,t.mode,o=>this[pe](o,t,r)):K.rmdir(t.absolute,o=>this[pe](o,t,r)):VE(t.absolute,o=>this[pe](o,t,r))})})}[pe](t,r,i){if(t)return this[gt](t,r);switch(r.type){case"File":case"OldFile":case"ContiguousFile":return this[pc](r,i);case"Link":return this[Hm](r,i);case"SymbolicLink":return this[Wm](r,i);case"Directory":case"GNUDumpDir":return this[dc](r,i)}}[Ss](t,r,i,n){K[i](r,t.absolute,s=>{if(s)return this[gt](s,t);n(),this[Zr](),t.resume()})}},ty=class extends Ds{[hc](t){let r=this[Yr](fe.dirname(t.absolute),this.dmode,Ns);if(r)return this[gt](r,t);try{let i=K.lstatSync(t.absolute);if(this.keep||this.newer&&i.mtime>t.mtime)return this[gc](t);if(this[fc](t,i))return this[pe](null,t,Ns);try{return i.isDirectory()?t.type==="Directory"?!this.noChmod&&t.mode&&(i.mode&4095)!==t.mode&&K.chmodSync(t.absolute,t.mode):K.rmdirSync(t.absolute):YE(t.absolute),this[pe](null,t,Ns)}catch(n){return this[gt](n,t)}}catch(i){return this[pe](null,t,Ns)}}[pc](t,r){let i=t.mode&4095||this.fmode,n=c=>{let a;try{K.closeSync(s)}catch(l){a=l}(c||a)&&this[gt](c||a,t)},s;try{s=K.openSync(t.absolute,Jm(t.size),i)}catch(c){return n(c)}let o=this.transform&&this.transform(t)||t;o!==t&&(o.on("error",c=>this[gt](c,t)),t.pipe(o)),o.on("data",c=>{try{K.writeSync(s,c,0,c.length)}catch(a){n(a)}}),o.on("end",c=>{let a=null;if(t.mtime&&!this.noMtime){let l=t.atime||new Date,u=t.mtime;try{K.futimesSync(s,l,u)}catch(f){try{K.utimesSync(t.absolute,l,u)}catch(y){a=f}}}if(this[Xi](t)){let l=this[zi](t),u=this[Gi](t);try{K.fchownSync(s,l,u)}catch(f){try{K.chownSync(t.absolute,l,u)}catch(y){a=a||f}}}n(a)})}[dc](t,r){let i=t.mode&4095||this.dmode,n=this[Yr](t.absolute,i);if(n)return this[gt](n,t);if(t.mtime&&!this.noMtime)try{K.utimesSync(t.absolute,t.atime||new Date,t.mtime)}catch(s){}if(this[Xi](t))try{K.chownSync(t.absolute,this[zi](t),this[Gi](t))}catch(s){}t.resume()}[Yr](t,r){try{return Xm.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}}[Ss](t,r,i,n){try{K[i+"Sync"](r,t.absolute),t.resume()}catch(s){return this[gt](s,t)}}};Ds.Sync=ty;jm.exports=Ds});var sy=L((E_,ey)=>{"use strict";var ZE=Ir(),Ts=vc(),ry=require("fs"),iy=Gr(),ny=require("path");ey.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=ZE(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&&KE(i,t),i.file&&i.sync?JE(i):i.file?QE(i,r):i.sync?t1(i):e1(i)};var KE=(e,t)=>{let r=new Map(t.map(s=>[s.replace(/\/+$/,""),!0])),i=e.filter,n=(s,o)=>{let c=o||ny.parse(s).root||".",a=s===c?!1:r.has(s)?r.get(s):n(ny.dirname(s),c);return r.set(s,a),a};e.filter=i?(s,o)=>i(s,o)&&n(s.replace(/\/+$/,"")):s=>n(s.replace(/\/+$/,""))},JE=e=>{let t=new Ts.Sync(e),r=e.file,i=ry.statSync(r),n=e.maxReadSize||16*1024*1024;new iy.ReadStreamSync(r,{readSize:n,size:i.size}).pipe(t)},QE=(e,t)=>{let r=new Ts(e),i=e.maxReadSize||16*1024*1024,n=e.file,s=new Promise((o,c)=>{r.on("error",c),r.on("close",o),ry.stat(n,(a,l)=>{if(a)c(a);else{let u=new iy.ReadStream(n,{readSize:i,size:l.size});u.on("error",c),u.pipe(r)}})});return t?s.then(t,t):s},t1=e=>new Ts.Sync(e),e1=e=>new Ts(e)});var oy=L(ot=>{"use strict";ot.c=ot.create=zd();ot.r=ot.replace=rc();ot.t=ot.list=vs();ot.u=ot.update=Jd();ot.x=ot.extract=sy();ot.Pack=ss();ot.Unpack=vc();ot.Parse=gs();ot.ReadEntry=Xn();ot.WriteEntry=Ma();ot.Header=Cr();ot.Pax=$n();ot.types=Ea()});var hy=L(r1=>{Hi(r1);Cs(r1,{register:()=>s1});var er=Rt(mo()),rr=Rt(mp()),ay=Rt(Ps()),cy=Rt(require("http")),ly=Rt(oa()),wc=Rt(require("path")),uy=Rt(oy()),i1=`http://registry.npmjs.org/${rr.PACKAGE_NAMES["win64-uac"]}/-/${rr.PACKAGE_NAMES["win64-uac"]}-${rr.BINARY_VERSION}.tgz`;function n1(){let{name:e}=ly.default.dirSync({postfix:"git-peek",unsafeCleanup:!0});return new Promise((t,r)=>{cy.default.get(i1,function(i){i.pipe(uy.default.x({cwd:e,strip:1,onentry(n){},onwarn(n,s){console.warn(n)}}).on("finish",()=>{t(wc.default.resolve(e,"register-url.exe"))}).on("error",n=>{r(n)}))})})}async function s1(e){console.log("Downloading register-url-windows!");let t=await n1();console.log("Downloaded register-url-windows"),console.log(`${er.default.whiteBright("git-peek uses Administrator privileges to enable 1-click in Chrome & Edge")}. Source code: -${er.default.gray(" https://github.com/Jarred-Sumner/register-url-windows/blob/main/dotnet/RegisterURLHandler/Program.cs")}`);let r=await rr.register({path:wc.default.resolve(await ay.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:qe},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(`${er.default.green("Registered git-peek:// successfully")}`):r.protocol?(console.log(er.default.whiteBright("Registered git-peek://, but 1-click is disabled")),console.log(`${er.default.cyan("To enable 1-click, re-run `git-peek -r` with Administrator privileges.")}`)):console.log(`${er.default.red("Register failed")}`),process.exit()}});Hi(exports);Cs(exports,{register:()=>Rs});var Rs;var qe="git-peek";process.platform==="darwin"?Rs=Dh().register:process.platform==="win32"?Rs=hy().register:Rs=()=>{throw"Unsupported Platform"}; +>>> 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"}; /*! * Tmp * diff --git a/bin/registerProtocol.js.map b/bin/registerProtocol.js.map index 16e2285..ad60288 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/p-limit@3.1.0/node_modules/p-limit/index.js", "../node_modules/.pnpm/p-locate@5.0.0/node_modules/p-locate/index.js", "../node_modules/.pnpm/locate-path@6.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@5.0.0/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/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/mkdirp@1.0.4/node_modules/mkdirp/lib/opts-arg.js", "../node_modules/.pnpm/mkdirp@1.0.4/node_modules/mkdirp/lib/path-arg.js", "../node_modules/.pnpm/mkdirp@1.0.4/node_modules/mkdirp/lib/find-made.js", "../node_modules/.pnpm/mkdirp@1.0.4/node_modules/mkdirp/lib/mkdirp-manual.js", "../node_modules/.pnpm/mkdirp@1.0.4/node_modules/mkdirp/lib/mkdirp-native.js", "../node_modules/.pnpm/mkdirp@1.0.4/node_modules/mkdirp/lib/use-native.js", "../node_modules/.pnpm/mkdirp@1.0.4/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'\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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", + "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": "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", "names": [] } diff --git a/package.json b/package.json index 707acf9..e4e8663 100644 --- a/package.json +++ b/package.json @@ -16,10 +16,11 @@ "@types/tar": "^4.0.4", "@types/tmp": "^0.2.0", "@vercel/fetch": "^6.1.0", - "abort-controller": "^3.0.0", + "abortcontroller-polyfill": "^1.7.1", "chalk": "^4.1.0", "dotenv": "^8.2.0", "dotenv-cli": "^4.0.0", + "pnpm": "^5.17.2", "esbuild": "^0.8.43", "git-url-parse": "^11.4.4", "ink": "^3.0.8", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 27355bb..aed5349 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,3 +1,5 @@ +dependencies: + pnpm: 5.17.2 devDependencies: '@types/js-yaml': 4.0.0 '@types/lodash': 4.14.168 @@ -8,6 +10,7 @@ devDependencies: '@types/tmp': 0.2.0 '@vercel/fetch': 6.1.0_node-fetch@2.6.1 abort-controller: 3.0.0 + abortcontroller-polyfill: 1.7.1 chalk: 4.1.0 dotenv: 8.2.0 dotenv-cli: 4.0.0 @@ -22,7 +25,6 @@ devDependencies: node-fetch: 2.6.1 normalize-git-url: 3.0.2 open-editor: 3.0.0 - ora: 5.3.0 pkg: 4.4.9 promise-any-polyfill: 0.1.2 qs: 6.9.6 @@ -402,6 +404,10 @@ packages: node: '>=6.5' resolution: integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg== + /abortcontroller-polyfill/1.7.1: + dev: true + resolution: + integrity: sha512-yml9NiDEH4M4p0G4AcPkg8AAa4mF3nfYF28VQxaokpO67j9H7gWgmsVWJ/f1Rn+PzsnDYvzJzWIQzCqDKRvWlA== /agentkeepalive/3.4.1: dependencies: humanize-ms: 1.2.1 @@ -2533,6 +2539,13 @@ packages: node: '>=6' resolution: integrity: sha512-GpgvHHocGRyQm74b6FWEZZVRroHKE1I0/BTjAmySaohK+cUn+hZpbqXkc3KWgW3gQYkqcQej35FohcT0FRlkRQ== + /pnpm/5.17.2: + dev: false + engines: + node: '>=10.16' + hasBin: true + resolution: + integrity: sha512-X0WEumozKhlYZObL1E+Nmi67f+ZMS+fbpE6vAymlazT2lx0B+Agw9iJsdd//tjAqIzxcsxxgZScx0EIPc42Ulw== /prelude-ls/1.1.2: dev: true engines: @@ -3606,6 +3619,7 @@ specifiers: '@types/tmp': ^0.2.0 '@vercel/fetch': ^6.1.0 abort-controller: ^3.0.0 + abortcontroller-polyfill: ^1.7.1 chalk: ^4.1.0 dotenv: ^8.2.0 dotenv-cli: ^4.0.0 @@ -3620,8 +3634,8 @@ specifiers: node-fetch: ^2.6.1 normalize-git-url: ^3.0.2 open-editor: ^3.0.0 - ora: ^5.3.0 pkg: ^4.4.9 + pnpm: ^5.17.2 promise-any-polyfill: ^0.1.2 qs: ^6.9.6 react: ^17.0.1 diff --git a/src/index.ts b/src/index.ts index 2b5d6b0..0226b35 100644 --- a/src/index.ts +++ b/src/index.ts @@ -15,9 +15,10 @@ import type { Writable } from "stream"; import zlib from "zlib"; import rimraf from "rimraf"; +global.fetch = require("node-fetch"); + if (typeof global.AbortController === "undefined") { - global.AbortController = require("abort-controller").AbortController; - global.AbortSignal = require("abort-controller").AbortSignal; + require("abortcontroller-polyfill/dist/polyfill-patch-fetch"); } // This is to trick esbuild into code splitting these files