diff --git a/dist/main.js b/dist/main.js index 58474686c..c58c3b338 100644 --- a/dist/main.js +++ b/dist/main.js @@ -1,2 +1,18 @@ -var t,e,n=require("crypto"),r=require("module"),i=require("events"),o=require("timers"),s=require("stream"),a=s,c=s.Transform,u=x(require("typescript")),l=require("atom"),f=(t={},e=l,Object.keys(e).forEach((function(n){"default"!==n&&"__esModule"!==n&&Object.defineProperty(t,n,{enumerable:!0,get:function(){return e[n]}})})),t),p=l.CompositeDisposable,h=l.Emitter,d=l.BufferedNodeProcess,m=(l.BufferedProcess,l.Disposable),g=require("path"),v=g,y=g.dirname,w=require("util"),b=require("fs"),E=b,_=x(b),S=require("assert");function x(t){return t&&t.__esModule?t.default:t}var k,T="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:"undefined"!=typeof global?global:{},I={};Object.defineProperty(I,"__esModule",{value:!0});var A,C,O={};function P(t){return t&&"object"==typeof t&&"default"in t?t.default:t}var N=P(S),L=P(E),R=P(w),j=P(v);function D(t,e,n){return t(n={path:e,exports:{},require:function(t,e){return function(){throw new Error("Dynamic requires are not currently supported by @rollup/plugin-commonjs")}(null==e&&n.path)}},n.exports),n.exports}var F,M=D((function(t,e){t.exports=function(t){for(var e=0;e{if(!Buffer.isBuffer(t))throw new TypeError("Expected a Buffer, got "+typeof t);return 239===t[0]&&187===t[1]&&191===t[2]&&M(t)?t.slice(3):t},B=(F=D((function(t){var e=r(L),n=r($);function r(t){return t&&t.__esModule?t:{default:t}}const i={},o=["Stats","_toUnixTimestamp","watch","watchFile","unwatchFile"];Object.keys(e.default).forEach((function(t){const n=e.default[t];"function"!=typeof n||t.includes("Sync")||t.includes("Stream")||o.includes(t)?i[t]=n:i[t]=(0,R.promisify)(n)})),i.exists=function(t){return new Promise((function(n){e.default.access(t,e.default.R_OK,(function(t){n(null===t)}))}))},i.readFile=function(t,r){return new Promise((function(i,o){e.default.readFile(t,(function(t,e){if(t)return void o(t);let s=(0,n.default)(e);r&&(s=s.toString(r)),i(s)}))}))},t.exports=i})))&&F.__esModule&&Object.prototype.hasOwnProperty.call(F,"default")?F.default:F,z={SEMVER_SPEC_VERSION:"2.0.0",MAX_LENGTH:256,MAX_SAFE_INTEGER:Number.MAX_SAFE_INTEGER||9007199254740991,MAX_SAFE_COMPONENT_LENGTH:16},U="object"==typeof process&&process.env&&process.env.NODE_DEBUG&&/\bsemver\b/i.test(process.env.NODE_DEBUG)?(...t)=>{}:()=>{},H=D((function(t,e){const{MAX_SAFE_COMPONENT_LENGTH:n}=z,r=(e=t.exports={}).re=[],i=e.src=[],o=e.t={};let s=0;const a=(t,e,n)=>{const a=s++;U(a,e),o[t]=a,i[a]=e,r[a]=new RegExp(e,n?"g":void 0)};a("NUMERICIDENTIFIER","0|[1-9]\\d*"),a("NUMERICIDENTIFIERLOOSE","[0-9]+"),a("NONNUMERICIDENTIFIER","\\d*[a-zA-Z-][a-zA-Z0-9-]*"),a("MAINVERSION",`(${i[o.NUMERICIDENTIFIER]})\\.(${i[o.NUMERICIDENTIFIER]})\\.(${i[o.NUMERICIDENTIFIER]})`),a("MAINVERSIONLOOSE",`(${i[o.NUMERICIDENTIFIERLOOSE]})\\.(${i[o.NUMERICIDENTIFIERLOOSE]})\\.(${i[o.NUMERICIDENTIFIERLOOSE]})`),a("PRERELEASEIDENTIFIER",`(?:${i[o.NUMERICIDENTIFIER]}|${i[o.NONNUMERICIDENTIFIER]})`),a("PRERELEASEIDENTIFIERLOOSE",`(?:${i[o.NUMERICIDENTIFIERLOOSE]}|${i[o.NONNUMERICIDENTIFIER]})`),a("PRERELEASE",`(?:-(${i[o.PRERELEASEIDENTIFIER]}(?:\\.${i[o.PRERELEASEIDENTIFIER]})*))`),a("PRERELEASELOOSE",`(?:-?(${i[o.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${i[o.PRERELEASEIDENTIFIERLOOSE]})*))`),a("BUILDIDENTIFIER","[0-9A-Za-z-]+"),a("BUILD",`(?:\\+(${i[o.BUILDIDENTIFIER]}(?:\\.${i[o.BUILDIDENTIFIER]})*))`),a("FULLPLAIN",`v?${i[o.MAINVERSION]}${i[o.PRERELEASE]}?${i[o.BUILD]}?`),a("FULL",`^${i[o.FULLPLAIN]}$`),a("LOOSEPLAIN",`[v=\\s]*${i[o.MAINVERSIONLOOSE]}${i[o.PRERELEASELOOSE]}?${i[o.BUILD]}?`),a("LOOSE",`^${i[o.LOOSEPLAIN]}$`),a("GTLT","((?:<|>)?=?)"),a("XRANGEIDENTIFIERLOOSE",i[o.NUMERICIDENTIFIERLOOSE]+"|x|X|\\*"),a("XRANGEIDENTIFIER",i[o.NUMERICIDENTIFIER]+"|x|X|\\*"),a("XRANGEPLAIN",`[v=\\s]*(${i[o.XRANGEIDENTIFIER]})(?:\\.(${i[o.XRANGEIDENTIFIER]})(?:\\.(${i[o.XRANGEIDENTIFIER]})(?:${i[o.PRERELEASE]})?${i[o.BUILD]}?)?)?`),a("XRANGEPLAINLOOSE",`[v=\\s]*(${i[o.XRANGEIDENTIFIERLOOSE]})(?:\\.(${i[o.XRANGEIDENTIFIERLOOSE]})(?:\\.(${i[o.XRANGEIDENTIFIERLOOSE]})(?:${i[o.PRERELEASELOOSE]})?${i[o.BUILD]}?)?)?`),a("XRANGE",`^${i[o.GTLT]}\\s*${i[o.XRANGEPLAIN]}$`),a("XRANGELOOSE",`^${i[o.GTLT]}\\s*${i[o.XRANGEPLAINLOOSE]}$`),a("COERCE",`(^|[^\\d])(\\d{1,${n}})(?:\\.(\\d{1,${n}}))?(?:\\.(\\d{1,${n}}))?(?:$|[^\\d])`),a("COERCERTL",i[o.COERCE],!0),a("LONETILDE","(?:~>?)"),a("TILDETRIM",`(\\s*)${i[o.LONETILDE]}\\s+`,!0),e.tildeTrimReplace="$1~",a("TILDE",`^${i[o.LONETILDE]}${i[o.XRANGEPLAIN]}$`),a("TILDELOOSE",`^${i[o.LONETILDE]}${i[o.XRANGEPLAINLOOSE]}$`),a("LONECARET","(?:\\^)"),a("CARETTRIM",`(\\s*)${i[o.LONECARET]}\\s+`,!0),e.caretTrimReplace="$1^",a("CARET",`^${i[o.LONECARET]}${i[o.XRANGEPLAIN]}$`),a("CARETLOOSE",`^${i[o.LONECARET]}${i[o.XRANGEPLAINLOOSE]}$`),a("COMPARATORLOOSE",`^${i[o.GTLT]}\\s*(${i[o.LOOSEPLAIN]})$|^$`),a("COMPARATOR",`^${i[o.GTLT]}\\s*(${i[o.FULLPLAIN]})$|^$`),a("COMPARATORTRIM",`(\\s*)${i[o.GTLT]}\\s*(${i[o.LOOSEPLAIN]}|${i[o.XRANGEPLAIN]})`,!0),e.comparatorTrimReplace="$1$2$3",a("HYPHENRANGE",`^\\s*(${i[o.XRANGEPLAIN]})\\s+-\\s+(${i[o.XRANGEPLAIN]})\\s*$`),a("HYPHENRANGELOOSE",`^\\s*(${i[o.XRANGEPLAINLOOSE]})\\s+-\\s+(${i[o.XRANGEPLAINLOOSE]})\\s*$`),a("STAR","(<|>)?=?\\s*\\*"),a("GTE0","^\\s*>=\\s*0.0.0\\s*$"),a("GTE0PRE","^\\s*>=\\s*0.0.0-0\\s*$")}));const q=/^[0-9]+$/,G=(t,e)=>{const n=q.test(t),r=q.test(e);return n&&r&&(t=+t,e=+e),t===e?0:n&&!r?-1:r&&!n?1:tG(e,t)};const{MAX_LENGTH:W,MAX_SAFE_INTEGER:X}=z,{re:K,t:Q}=H,{compareIdentifiers:Z}=V;class Y{constructor(t,e){if(e&&"object"==typeof e||(e={loose:!!e,includePrerelease:!1}),t instanceof Y){if(t.loose===!!e.loose&&t.includePrerelease===!!e.includePrerelease)return t;t=t.version}else if("string"!=typeof t)throw new TypeError("Invalid Version: "+t);if(t.length>W)throw new TypeError(`version is longer than ${W} characters`);U("SemVer",t,e),this.options=e,this.loose=!!e.loose,this.includePrerelease=!!e.includePrerelease;const n=t.trim().match(e.loose?K[Q.LOOSE]:K[Q.FULL]);if(!n)throw new TypeError("Invalid Version: "+t);if(this.raw=t,this.major=+n[1],this.minor=+n[2],this.patch=+n[3],this.major>X||this.major<0)throw new TypeError("Invalid major version");if(this.minor>X||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>X||this.patch<0)throw new TypeError("Invalid patch version");n[4]?this.prerelease=n[4].split(".").map((t=>{if(/^[0-9]+$/.test(t)){const e=+t;if(e>=0&&e=0;)"number"==typeof this.prerelease[t]&&(this.prerelease[t]++,t=-2);-1===t&&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}}var J=Y,tt=(t,e,n)=>new J(t,n).compare(new J(e,n)),et=(t,e,n,r)=>{switch(e){case"===":return"object"==typeof t&&(t=t.version),"object"==typeof n&&(n=n.version),t===n;case"!==":return"object"==typeof t&&(t=t.version),"object"==typeof n&&(n=n.version),t!==n;case"":case"=":case"==":return((t,e,n)=>0===tt(t,e,n))(t,n,r);case"!=":return((t,e,n)=>0!==tt(t,e,n))(t,n,r);case">":return((t,e,n)=>tt(t,e,n)>0)(t,n,r);case">=":return((t,e,n)=>tt(t,e,n)>=0)(t,n,r);case"<":return((t,e,n)=>tt(t,e,n)<0)(t,n,r);case"<=":return((t,e,n)=>tt(t,e,n)<=0)(t,n,r);default:throw new TypeError("Invalid operator: "+e)}};const nt=Symbol("SemVer ANY");class rt{static get ANY(){return nt}constructor(t,e){if(e&&"object"==typeof e||(e={loose:!!e,includePrerelease:!1}),t instanceof rt){if(t.loose===!!e.loose)return t;t=t.value}U("comparator",t,e),this.options=e,this.loose=!!e.loose,this.parse(t),this.semver===nt?this.value="":this.value=this.operator+this.semver.version,U("comp",this)}parse(t){const e=this.options.loose?ot[st.COMPARATORLOOSE]:ot[st.COMPARATOR],n=t.match(e);if(!n)throw new TypeError("Invalid comparator: "+t);this.operator=void 0!==n[1]?n[1]:"","="===this.operator&&(this.operator=""),n[2]?this.semver=new J(n[2],this.options.loose):this.semver=nt}toString(){return this.value}test(t){if(U("Comparator.test",t,this.options.loose),this.semver===nt||t===nt)return!0;if("string"==typeof t)try{t=new J(t,this.options)}catch(t){return!1}return et(t,this.operator,this.semver,this.options)}intersects(t,e){if(!(t instanceof rt))throw new TypeError("a Comparator is required");if(e&&"object"==typeof e||(e={loose:!!e,includePrerelease:!1}),""===this.operator)return""===this.value||new ct(t.value,e).test(this.value);if(""===t.operator)return""===t.value||new ct(this.value,e).test(t.semver);const n=!(">="!==this.operator&&">"!==this.operator||">="!==t.operator&&">"!==t.operator),r=!("<="!==this.operator&&"<"!==this.operator||"<="!==t.operator&&"<"!==t.operator),i=this.semver.version===t.semver.version,o=!(">="!==this.operator&&"<="!==this.operator||">="!==t.operator&&"<="!==t.operator),s=et(this.semver,"<",t.semver,e)&&(">="===this.operator||">"===this.operator)&&("<="===t.operator||"<"===t.operator),a=et(this.semver,">",t.semver,e)&&("<="===this.operator||"<"===this.operator)&&(">="===t.operator||">"===t.operator);return n||r||i&&o||s||a}}var it=rt;const{re:ot,t:st}=H;class at{constructor(t,e){if(e&&"object"==typeof e||(e={loose:!!e,includePrerelease:!1}),t instanceof at)return t.loose===!!e.loose&&t.includePrerelease===!!e.includePrerelease?t:new at(t.raw,e);if(t instanceof it)return this.raw=t.value,this.set=[[t]],this.format(),this;if(this.options=e,this.loose=!!e.loose,this.includePrerelease=!!e.includePrerelease,this.raw=t,this.set=t.split(/\s*\|\|\s*/).map((t=>this.parseRange(t.trim()))).filter((t=>t.length)),!this.set.length)throw new TypeError("Invalid SemVer Range: "+t);this.format()}format(){return this.range=this.set.map((t=>t.join(" ").trim())).join("||").trim(),this.range}toString(){return this.range}parseRange(t){const e=this.options.loose;t=t.trim();const n=e?ut[lt.HYPHENRANGELOOSE]:ut[lt.HYPHENRANGE];t=t.replace(n,kt(this.options.includePrerelease)),U("hyphen replace",t),t=t.replace(ut[lt.COMPARATORTRIM],ft),U("comparator trim",t,ut[lt.COMPARATORTRIM]),t=(t=(t=t.replace(ut[lt.TILDETRIM],pt)).replace(ut[lt.CARETTRIM],ht)).split(/\s+/).join(" ");const r=e?ut[lt.COMPARATORLOOSE]:ut[lt.COMPARATOR];return t.split(" ").map((t=>mt(t,this.options))).join(" ").split(/\s+/).map((t=>xt(t,this.options))).filter(this.options.loose?t=>!!t.match(r):()=>!0).map((t=>new it(t,this.options)))}intersects(t,e){if(!(t instanceof at))throw new TypeError("a Range is required");return this.set.some((n=>dt(n,e)&&t.set.some((t=>dt(t,e)&&n.every((n=>t.every((t=>n.intersects(t,e)))))))))}test(t){if(!t)return!1;if("string"==typeof t)try{t=new J(t,this.options)}catch(t){return!1}for(let e=0;e{let n=!0;const r=t.slice();let i=r.pop();for(;n&&r.length;)n=r.every((t=>i.intersects(t,e))),i=r.pop();return n},mt=(t,e)=>(U("comp",t,e),t=wt(t,e),U("caret",t),t=vt(t,e),U("tildes",t),t=Et(t,e),U("xrange",t),t=St(t,e),U("stars",t),t),gt=t=>!t||"x"===t.toLowerCase()||"*"===t,vt=(t,e)=>t.trim().split(/\s+/).map((t=>yt(t,e))).join(" "),yt=(t,e)=>{const n=e.loose?ut[lt.TILDELOOSE]:ut[lt.TILDE];return t.replace(n,((e,n,r,i,o)=>{let s;return U("tilde",t,e,n,r,i,o),gt(n)?s="":gt(r)?s=`>=${n}.0.0 <${+n+1}.0.0-0`:gt(i)?s=`>=${n}.${r}.0 <${n}.${+r+1}.0-0`:o?(U("replaceTilde pr",o),s=`>=${n}.${r}.${i}-${o} <${n}.${+r+1}.0-0`):s=`>=${n}.${r}.${i} <${n}.${+r+1}.0-0`,U("tilde return",s),s}))},wt=(t,e)=>t.trim().split(/\s+/).map((t=>bt(t,e))).join(" "),bt=(t,e)=>{U("caret",t,e);const n=e.loose?ut[lt.CARETLOOSE]:ut[lt.CARET],r=e.includePrerelease?"-0":"";return t.replace(n,((e,n,i,o,s)=>{let a;return U("caret",t,e,n,i,o,s),gt(n)?a="":gt(i)?a=`>=${n}.0.0${r} <${+n+1}.0.0-0`:gt(o)?a="0"===n?`>=${n}.${i}.0${r} <${n}.${+i+1}.0-0`:`>=${n}.${i}.0${r} <${+n+1}.0.0-0`:s?(U("replaceCaret pr",s),a="0"===n?"0"===i?`>=${n}.${i}.${o}-${s} <${n}.${i}.${+o+1}-0`:`>=${n}.${i}.${o}-${s} <${n}.${+i+1}.0-0`:`>=${n}.${i}.${o}-${s} <${+n+1}.0.0-0`):(U("no pr"),a="0"===n?"0"===i?`>=${n}.${i}.${o}${r} <${n}.${i}.${+o+1}-0`:`>=${n}.${i}.${o}${r} <${n}.${+i+1}.0-0`:`>=${n}.${i}.${o} <${+n+1}.0.0-0`),U("caret return",a),a}))},Et=(t,e)=>(U("replaceXRanges",t,e),t.split(/\s+/).map((t=>_t(t,e))).join(" ")),_t=(t,e)=>{t=t.trim();const n=e.loose?ut[lt.XRANGELOOSE]:ut[lt.XRANGE];return t.replace(n,((n,r,i,o,s,a)=>{U("xRange",t,n,r,i,o,s,a);const c=gt(i),u=c||gt(o),l=u||gt(s),f=l;return"="===r&&f&&(r=""),a=e.includePrerelease?"-0":"",c?n=">"===r||"<"===r?"<0.0.0-0":"*":r&&f?(u&&(o=0),s=0,">"===r?(r=">=",u?(i=+i+1,o=0,s=0):(o=+o+1,s=0)):"<="===r&&(r="<",u?i=+i+1:o=+o+1),"<"===r&&(a="-0"),n=`${r+i}.${o}.${s}${a}`):u?n=`>=${i}.0.0${a} <${+i+1}.0.0-0`:l&&(n=`>=${i}.${o}.0${a} <${i}.${+o+1}.0-0`),U("xRange return",n),n}))},St=(t,e)=>(U("replaceStars",t,e),t.trim().replace(ut[lt.STAR],"")),xt=(t,e)=>(U("replaceGTE0",t,e),t.trim().replace(ut[e.includePrerelease?lt.GTE0PRE:lt.GTE0],"")),kt=t=>(e,n,r,i,o,s,a,c,u,l,f,p,h)=>`${n=gt(r)?"":gt(i)?`>=${r}.0.0${t?"-0":""}`:gt(o)?`>=${r}.${i}.0${t?"-0":""}`:s?">="+n:`>=${n}${t?"-0":""}`} ${c=gt(u)?"":gt(l)?`<${+u+1}.0.0-0`:gt(f)?`<${u}.${+l+1}.0-0`:p?`<=${u}.${l}.${f}-${p}`:t?`<${u}.${l}.${+f+1}-0`:"<="+c}`.trim(),Tt=(t,e,n)=>{for(let n=0;n0){const r=t[n].semver;if(r.major===e.major&&r.minor===e.minor&&r.patch===e.patch)return!0}return!1}return!0};const It=/(.*?):.*/,At=/(.*?)#.*/;var Ct,Ot=!1;function Pt(){return Ot||(Ot=!0,Ct={},Ct=Promise.resolve(require("./prompt-afef23e0.85b28e82.js"))),Ct}var Nt,Lt=!1;function Rt(){return Lt||(Lt=!0,Nt={},Nt=Promise.resolve(require("./install-03586186.e5009dba.js"))),Nt}void 0===window.__steelbrain_package_deps&&(window.__steelbrain_package_deps=new Set),A=B,O.fs=A,C=async function(t,e=!0){N(t,"[Package-Deps] Package name is required");const n=await async function(t){const e=atom.packages.getLoadedPackage(t),n=e&&e.metadata["package-deps"];return Array.isArray(n)?(await Promise.all(n.map((async function(t){let e=null,n=t,r=null;const i=It.exec(t),o=At.exec(t);if(i?[,n,r]=i:o?[,n,e]=o:n=t,__steelbrain_package_deps.has(n))return null;const s=atom.packages.resolvePackagePath(n);if(s){if(!r)return null;const t=JSON.parse(await B.readFile(j.join(s,"package.json")));if(null!=t&&null!=t.version&&((t,e,n)=>{try{e=new ct(e,n)}catch(t){return!1}return e.test(t)})(t.version,">="+r))return null}return __steelbrain_package_deps.add(n),{name:n,url:e}})))).filter(Boolean):[]}(t);if(n.length){if(e){let e="Yes";if(await Promise.resolve().then((function(){return Pt()})).then((async({promptUser:r})=>{e=await r(t,n)})),"Yes"!==e)return}await Promise.resolve().then((function(){return Rt()})).then((async({performInstall:e})=>e(t,n)))}},O.installDependencies=C,k=C,I.install=k;var jt,Dt,Ft={};Dt={onCopy:"copy",onCut:"cut",onPaste:"paste",onCompositionEnd:"compositionend",onCompositionStart:"compositionstart",onCompositionUpdate:"compositionupdate",onKeyDown:"keydown",onKeyPress:"keypress",onKeyUp:"keyup",onFocus:"focus",onBlur:"blur",onChange:"change",onInput:"input",onSubmit:"submit",onClick:"click",onContextMenu:"contextmenu",onDoubleClick:"dblclick",onDrag:"drag",onDragEnd:"dragend",onDragEnter:"dragenter",onDragExit:"dragexit",onDragLeave:"dragleave",onDragOver:"dragover",onDragStart:"dragstart",onDrop:"drop",onMouseDown:"mousedown",onMouseEnter:"mouseenter",onMouseLeave:"mouseleave",onMouseMove:"mousemove",onMouseOut:"mouseout",onMouseOver:"mouseover",onMouseUp:"mouseup",onSelect:"select",onTouchCancel:"touchcancel",onTouchEnd:"touchend",onTouchMove:"touchmove",onTouchStart:"touchstart",onScroll:"scroll",onWheel:"wheel",onAbort:"abort",onCanPlay:"canplay",onCanPlayThrough:"canplaythrough",onDurationChange:"durationchange",onEmptied:"emptied",onEncrypted:"encrypted",onEnded:"ended",onError:"error",onLoadedData:"loadeddata",onLoadedMetadata:"loadedmetadata",onLoadStart:"loadstart",onPause:"pause",onPlay:"play",onPlaying:"playing",onProgress:"progress",onRateChange:"ratechange",onSeeked:"seeked",onSeeking:"seeking",onStalled:"stalled",onSuspend:"suspend",onTimeUpdate:"timeupdate",onVolumeChange:"volumechange",onWaiting:"waiting",onLoad:"load",onAnimationStart:"animationstart",onAnimationEnd:"animationend",onAnimationIteration:"animationiteration",onTransitionEnd:"transitionend"};var Mt={};function $t(t,e,...n){let r=[];for(let t=0;t$t(t,e,...n);for(const t of Mt)$t[t]=(e,...n)=>$t(t,e,...n);jt=$t;var zt,Ut={},Ht={};Ht=new Map([["accentHeight","accent-height"],["alignmentBaseline","alignment-baseline"],["arabicForm","arabic-form"],["baselineShift","baseline-shift"],["capHeight","cap-height"],["className","class"],["clipPath","clip-path"],["clipRule","clip-rule"],["colorInterpolation","color-interpolation"],["colorInterpolationFilters","color-interpolation-filters"],["colorProfile","color-profile"],["colorRendering","color-rendering"],["dominantBaseline","dominant-baseline"],["enableBackground","enable-background"],["fillOpacity","fill-opacity"],["fillRule","fill-rule"],["floodColor","flood-color"],["floodOpacity","flood-opacity"],["fontFamily","font-family"],["fontSize","font-size"],["fontSizeAdjust","font-size-adjust"],["fontStretch","font-stretch"],["fontStyle","font-style"],["fontVariant","font-variant"],["fontWeight","font-weight"],["glyphName","glyph-name"],["glyphOrientationHorizontal","glyph-orientation-horizontal"],["glyphOrientationVertical","glyph-orientation-vertical"],["horizAdvX","horiz-adv-x"],["horizOriginX","horiz-origin-x"],["letterSpacing","letter-spacing"],["lightingColor","lighting-color"],["markerEnd","marker-end"],["markerMid","marker-mid"],["markerStart","marker-start"],["overlinePosition","overline-position"],["overlineThickness","overline-thickness"],["panose1","panose-1"],["paintOrder","paint-order"],["pointerEvents","pointer-events"],["renderingIntent","rendering-intent"],["shapeRendering","shape-rendering"],["stopColor","stop-color"],["stopOpacity","stop-opacity"],["strikethroughPosition","strikethrough-position"],["strikethroughThickness","strikethrough-thickness"],["strokeDasharray","stroke-dasharray"],["strokeDashoffset","stroke-dashoffset"],["strokeLinecap","stroke-linecap"],["strokeLinejoin","stroke-linejoin"],["strokeMiterlimit","stroke-miterlimit"],["strokeOpacity","stroke-opacity"],["strokeWidth","stroke-width"],["textAnchor","text-anchor"],["textDecoration","text-decoration"],["textRendering","text-rendering"],["underlinePosition","underline-position"],["underlineThickness","underline-thickness"],["unicodeBidi","unicode-bidi"],["unicodeRange","unicode-range"],["unitsPerEm","units-per-em"],["vAlphabetic","v-alphabetic"],["vHanging","v-hanging"],["vIdeographic","v-ideographic"],["vMathematical","v-mathematical"],["vertAdvY","vert-adv-y"],["vertOriginX","vert-origin-x"],["vertOriginY","vert-origin-y"],["wordSpacing","word-spacing"],["writingMode","writing-mode"],["xHeight","x-height"]]);var qt;function Gt(t,e,n,r,i){if(n)for(var o in n)"ref"!==o&&"on"!==o&&(o in Dt||i&&o in i||("dataset"===o?Gt(t.dataset,null,n&&n.dataset,null,null):"innerHTML"!==o&&e&&Mt.has(e.tag)?t.removeAttribute(Ht.get(o)||o):(t[o]="",delete t[o])));if(i)for(var o in i)if("ref"!==o&&"on"!==o&&!(o in Dt)){var s=n&&n[o],a=i[o];"dataset"===o?Vt(t.dataset,s,a,!1):"style"===o&&"string"!=typeof a?("string"==typeof s&&(t.style="",s=null),Vt(t.style,s,a,!0)):"attributes"===o?Wt(t,s,a):a!==s&&("innerHTML"!==o&&r&&Mt.has(r.tag)?t.setAttribute(Ht.get(o)||o,a):r&&"input"===r.tag&&"value"===o&&t[o]===a||(t[o]=a))}}function Vt(t,e,n,r){if(e)for(var i in e)n&&i in n||(r?t[i]="":delete t[i]);if(n)for(var i in n){const r=e&&e[i],o=n[i];o!==r&&(t[i]=o)}}function Wt(t,e,n){if(e)for(var r in e)n&&r in n||t.removeAttribute(r);if(n)for(var r in n){const i=e&&e[r],o=n[r];o!==i&&t.setAttribute(r,o)}}function Xt(t,e){let n;if(null!=t.text)n=document.createTextNode(t.text);else{const{tag:r,children:i}=t;let{props:o,context:s}=t;if(s&&(e={refs:s.refs,listenerContext:s}),"function"==typeof r){let s;o&&o.ref&&(s=o.ref);const a=new r(o||{},i);t.component=a,n=a.element,"function"==typeof s?s(a):e&&e.refs&&s&&(e.refs[s]=a)}else Mt.has(r)?(n=document.createElementNS("http://www.w3.org/2000/svg",r),i&&Kt(n,i,e),o&&zt(n,null,t,e)):(n=document.createElement(r),i&&Kt(n,i,e),o&&zt(n,null,t,e))}return t.domNode=n,n}function Kt(t,e,n){for(let r=0;r0?(i=Jt.pop()).clear():i=new Map,re(i,e,o,s));var h=ne(f),d=h?i.get(h):null;if(null==d)t.insertBefore(Ut(f,r),a.domNode),f=n[++u];else{var m=e[d];Yt(m,f,r),e[d]=void 0,t.insertBefore(m.domNode,a.domNode),f=n[++u]}}else c=e[--s];else a=e[++o];if(o>s){var g=n[l+1]?n[l+1].domNode:null;for(let e=u;e<=l;e++)t.insertBefore(Ut(n[e],r),g)}else if(u>l)for(let t=o;t<=s;t++){var v=e[t];v&&te(v,r&&r.refs)}i&&Jt.push(i)}(r,t.children,e.children,n),zt(r,t,e,n),i=r),e.domNode=i,i!==r&&r.parentNode&&r.parentNode.replaceChild(i,r),i}{const i=r.parentNode,o=r.nextSibling;te(t,n&&n.refs);const s=Ut(e,n);return i&&i.insertBefore(s,o),e.domNode=s,s}}let Jt=[new Map,new Map,new Map,new Map];function te(t,e,n=!0){const{domNode:r,props:i,children:o,component:s}=t,a=i&&i.ref;if(s)"function"==typeof a?a(null):e&&a&&e[a]===s&&delete e[a],s.destroy&&s.destroy();else if("function"==typeof a?a(null):e&&a&&e[a]===r&&delete e[a],o)for(let t=0;t{this.resolveNextUpdatePromise=t}))),this.nextUpdatePromise}performUpdates(){for(;this.updateRequests.length>0;)this.updateRequests.shift()();for(this.pendingAnimationFrame=null;this.readRequests.length>0;)this.readRequests.shift()();if(this.nextUpdatePromise){let t=this.resolveNextUpdatePromise;this.nextUpdatePromise=null,this.resolveNextUpdatePromise=null,t()}}};let oe=null;var se=function(){return oe||(oe=new ie),oe};const ae=new WeakSet;let ce=0,ue=0;function le(t){return null!=t&&!1!==t}function fe(t,e){e.context=t,e.ambiguous&&(e.ambiguous.forEach((e=>{e.context=t})),delete e.ambiguous)}function pe(t,e=!0){if(!le(t.virtualNode))throw new Error((t.constructor?t.constructor.name+" instance":t)+" is not associated with a valid virtualNode. Perhaps this component was never initialized?");if(null==t.element)throw new Error((t.constructor?t.constructor.name+" instance":t)+" is not associated with a DOM element. Perhaps this component was never initialized?");let n=t.render();if(!le(n)){const e=t.constructor&&t.constructor.name?" in "+t.constructor.name:"";throw new Error("invalid falsy value "+n+" returned from render()"+e)}fe(t,n),ce++;let r=t.virtualNode,i=t.element,o=Zt(r,n,{refs:t.refs,listenerContext:t});if(t.virtualNode=n,o!==i&&!e)throw new Error("The root node type changed on update, but the update was performed with the replaceNode option set to false");t.element=o,"function"==typeof t.writeAfterUpdate&&t.writeAfterUpdate(),"function"==typeof t.readAfterUpdate&&se().readDocument((function(){t.readAfterUpdate()})),ce--}function he(t,e=!0){ue++,de(t.virtualNode),1===ue&&e&&t.element.remove(),ue--}function de(t){t.component&&"function"==typeof t.component.destroy?t.component.destroy():t.children&&t.children.forEach(de)}Qt={initialize:function(t){if("function"!=typeof t.update)throw new Error("Etch components must implement `update(props, children)`.");let e=t.render();if(!le(e)){let n=t.constructor&&t.constructor.name?" in "+t.constructor.name:"";throw new Error("invalid falsy value "+e+" returned from render()"+n)}fe(t,e),t.refs={},t.virtualNode=e,t.element=Ut(t.virtualNode,{refs:t.refs,listenerContext:t})},update:function(t,e=!0){if(ce>0)return pe(t,e),Promise.resolve();let n=se();return ae.has(t)||(ae.add(t),n.updateDocument((function(){ae.delete(t),pe(t,e)}))),n.getNextUpdatePromise()},updateSync:pe,destroy:function(t,e=!0){if(ce>0||ue>0)return he(t,e),Promise.resolve();let n=se();return n.updateDocument((function(){he(t,e)})),n.getNextUpdatePromise()},destroySync:he};const{initialize:me,update:ge,updateSync:ve,destroy:ye,destroySync:we}=Qt;function be(t){void 0!==t&&("function"==typeof t.catch?t.catch((t=>{atom.notifications.addFatalError("Atom-Typescript error: "+t.message,{detail:t.toString(),stack:t.stack,dismissable:!0})})):atom.notifications.addFatalError("Atom-Typescript: non-promise passed to handlePromise. Please report this.",{stack:(new Error).stack,dismissable:!0}))}Ft={dom:jt,render:Ut,initialize:me,update:ge,updateSync:ve,destroy:ye,destroySync:we,setScheduler:function(t){oe=t},getScheduler:se};var Ee=function(){var t=this,e={exports:this};return function(){var n,r="Expected a function",i="__lodash_hash_undefined__",o="__lodash_placeholder__",s=16,a=32,c=64,u=128,l=256,f=1/0,p=9007199254740991,h=NaN,d=4294967295,m=[["ary",u],["bind",1],["bindKey",2],["curry",8],["curryRight",s],["flip",512],["partial",a],["partialRight",c],["rearg",l]],g="[object Arguments]",v="[object Array]",y="[object Boolean]",w="[object Date]",b="[object Error]",E="[object Function]",_="[object GeneratorFunction]",S="[object Map]",x="[object Number]",k="[object Object]",I="[object Promise]",A="[object RegExp]",C="[object Set]",O="[object String]",P="[object Symbol]",N="[object WeakMap]",L="[object ArrayBuffer]",R="[object DataView]",j="[object Float32Array]",D="[object Float64Array]",F="[object Int8Array]",M="[object Int16Array]",$="[object Int32Array]",B="[object Uint8Array]",z="[object Uint8ClampedArray]",U="[object Uint16Array]",H="[object Uint32Array]",q=/\b__p \+= '';/g,G=/\b(__p \+=) '' \+/g,V=/(__e\(.*?\)|\b__t\)) \+\n'';/g,W=/&(?:amp|lt|gt|quot|#39);/g,X=/[&<>"']/g,K=RegExp(W.source),Q=RegExp(X.source),Z=/<%-([\s\S]+?)%>/g,Y=/<%([\s\S]+?)%>/g,J=/<%=([\s\S]+?)%>/g,tt=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,et=/^\w*$/,nt=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,rt=/[\\^$.*+?()[\]{}|]/g,it=RegExp(rt.source),ot=/^\s+|\s+$/g,st=/^\s+/,at=/\s+$/,ct=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,ut=/\{\n\/\* \[wrapped with (.+)\] \*/,lt=/,? & /,ft=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,pt=/\\(\\)?/g,ht=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,dt=/\w*$/,mt=/^[-+]0x[0-9a-f]+$/i,gt=/^0b[01]+$/i,vt=/^\[object .+?Constructor\]$/,yt=/^0o[0-7]+$/i,wt=/^(?:0|[1-9]\d*)$/,bt=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,Et=/($^)/,_t=/['\n\r\u2028\u2029\\]/g,St="\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff",xt="\\u2700-\\u27bf",kt="a-z\\xdf-\\xf6\\xf8-\\xff",Tt="A-Z\\xc0-\\xd6\\xd8-\\xde",It="\\ufe0e\\ufe0f",At="\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",Ct="['’]",Ot="[\\ud800-\\udfff]",Pt="["+At+"]",Nt="["+St+"]",Lt="\\d+",Rt="[\\u2700-\\u27bf]",jt="["+kt+"]",Dt="[^\\ud800-\\udfff"+At+Lt+xt+kt+Tt+"]",Ft="\\ud83c[\\udffb-\\udfff]",Mt="[^\\ud800-\\udfff]",$t="(?:\\ud83c[\\udde6-\\uddff]){2}",Bt="[\\ud800-\\udbff][\\udc00-\\udfff]",zt="["+Tt+"]",Ut="(?:"+jt+"|"+Dt+")",Ht="(?:"+zt+"|"+Dt+")",qt="(?:['’](?:d|ll|m|re|s|t|ve))?",Gt="(?:['’](?:D|LL|M|RE|S|T|VE))?",Vt="(?:"+Nt+"|"+Ft+")"+"?",Wt="[\\ufe0e\\ufe0f]?",Xt=Wt+Vt+("(?:\\u200d(?:"+[Mt,$t,Bt].join("|")+")"+Wt+Vt+")*"),Kt="(?:"+[Rt,$t,Bt].join("|")+")"+Xt,Qt="(?:"+[Mt+Nt+"?",Nt,$t,Bt,Ot].join("|")+")",Zt=RegExp(Ct,"g"),Yt=RegExp(Nt,"g"),Jt=RegExp(Ft+"(?="+Ft+")|"+Qt+Xt,"g"),te=RegExp([zt+"?"+jt+"+"+qt+"(?="+[Pt,zt,"$"].join("|")+")",Ht+"+"+Gt+"(?="+[Pt,zt+Ut,"$"].join("|")+")",zt+"?"+Ut+"+"+qt,zt+"+"+Gt,"\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])","\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",Lt,Kt].join("|"),"g"),ee=RegExp("[\\u200d\\ud800-\\udfff"+St+It+"]"),ne=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,re=["Array","Buffer","DataView","Date","Error","Float32Array","Float64Array","Function","Int8Array","Int16Array","Int32Array","Map","Math","Object","Promise","RegExp","Set","String","Symbol","TypeError","Uint8Array","Uint8ClampedArray","Uint16Array","Uint32Array","WeakMap","_","clearTimeout","isFinite","parseInt","setTimeout"],ie=-1,oe={};oe[j]=oe[D]=oe[F]=oe[M]=oe[$]=oe[B]=oe[z]=oe[U]=oe[H]=!0,oe[g]=oe[v]=oe[L]=oe[y]=oe[R]=oe[w]=oe[b]=oe[E]=oe[S]=oe[x]=oe[k]=oe[A]=oe[C]=oe[O]=oe[N]=!1;var se={};se[g]=se[v]=se[L]=se[R]=se[y]=se[w]=se[j]=se[D]=se[F]=se[M]=se[$]=se[S]=se[x]=se[k]=se[A]=se[C]=se[O]=se[P]=se[B]=se[z]=se[U]=se[H]=!0,se[b]=se[E]=se[N]=!1;var ae={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},ce=parseFloat,ue=parseInt,le="object"==typeof T&&T&&T.Object===Object&&T,fe="object"==typeof self&&self&&self.Object===Object&&self,pe=le||fe||Function("return this")(),he="object"==typeof t&&t&&!t.nodeType&&t,de=he&&"object"==typeof e&&e&&!e.nodeType&&e,me=de&&de.exports===he,ge=me&&le.process,ve=function(){try{var t=de&&de.require&&de.require("util").types;return t||ge&&ge.binding&&ge.binding("util")}catch(t){}}(),ye=ve&&ve.isArrayBuffer,we=ve&&ve.isDate,be=ve&&ve.isMap,Ee=ve&&ve.isRegExp,_e=ve&&ve.isSet,Se=ve&&ve.isTypedArray;function xe(t,e,n){switch(n.length){case 0:return t.call(e);case 1:return t.call(e,n[0]);case 2:return t.call(e,n[0],n[1]);case 3:return t.call(e,n[0],n[1],n[2])}return t.apply(e,n)}function ke(t,e,n,r){for(var i=-1,o=null==t?0:t.length;++i-1}function Pe(t,e,n){for(var r=-1,i=null==t?0:t.length;++r-1;);return n}function Je(t,e){for(var n=t.length;n--&&Be(e,t[n],0)>-1;);return n}function tn(t,e){for(var n=t.length,r=0;n--;)t[n]===e&&++r;return r}var en=Ge({"À":"A","Á":"A","Â":"A","Ã":"A","Ä":"A","Å":"A","à":"a","á":"a","â":"a","ã":"a","ä":"a","å":"a","Ç":"C","ç":"c","Ð":"D","ð":"d","È":"E","É":"E","Ê":"E","Ë":"E","è":"e","é":"e","ê":"e","ë":"e","Ì":"I","Í":"I","Î":"I","Ï":"I","ì":"i","í":"i","î":"i","ï":"i","Ñ":"N","ñ":"n","Ò":"O","Ó":"O","Ô":"O","Õ":"O","Ö":"O","Ø":"O","ò":"o","ó":"o","ô":"o","õ":"o","ö":"o","ø":"o","Ù":"U","Ú":"U","Û":"U","Ü":"U","ù":"u","ú":"u","û":"u","ü":"u","Ý":"Y","ý":"y","ÿ":"y","Æ":"Ae","æ":"ae","Þ":"Th","þ":"th","ß":"ss","Ā":"A","Ă":"A","Ą":"A","ā":"a","ă":"a","ą":"a","Ć":"C","Ĉ":"C","Ċ":"C","Č":"C","ć":"c","ĉ":"c","ċ":"c","č":"c","Ď":"D","Đ":"D","ď":"d","đ":"d","Ē":"E","Ĕ":"E","Ė":"E","Ę":"E","Ě":"E","ē":"e","ĕ":"e","ė":"e","ę":"e","ě":"e","Ĝ":"G","Ğ":"G","Ġ":"G","Ģ":"G","ĝ":"g","ğ":"g","ġ":"g","ģ":"g","Ĥ":"H","Ħ":"H","ĥ":"h","ħ":"h","Ĩ":"I","Ī":"I","Ĭ":"I","Į":"I","İ":"I","ĩ":"i","ī":"i","ĭ":"i","į":"i","ı":"i","Ĵ":"J","ĵ":"j","Ķ":"K","ķ":"k","ĸ":"k","Ĺ":"L","Ļ":"L","Ľ":"L","Ŀ":"L","Ł":"L","ĺ":"l","ļ":"l","ľ":"l","ŀ":"l","ł":"l","Ń":"N","Ņ":"N","Ň":"N","Ŋ":"N","ń":"n","ņ":"n","ň":"n","ŋ":"n","Ō":"O","Ŏ":"O","Ő":"O","ō":"o","ŏ":"o","ő":"o","Ŕ":"R","Ŗ":"R","Ř":"R","ŕ":"r","ŗ":"r","ř":"r","Ś":"S","Ŝ":"S","Ş":"S","Š":"S","ś":"s","ŝ":"s","ş":"s","š":"s","Ţ":"T","Ť":"T","Ŧ":"T","ţ":"t","ť":"t","ŧ":"t","Ũ":"U","Ū":"U","Ŭ":"U","Ů":"U","Ű":"U","Ų":"U","ũ":"u","ū":"u","ŭ":"u","ů":"u","ű":"u","ų":"u","Ŵ":"W","ŵ":"w","Ŷ":"Y","ŷ":"y","Ÿ":"Y","Ź":"Z","Ż":"Z","Ž":"Z","ź":"z","ż":"z","ž":"z","IJ":"IJ","ij":"ij","Œ":"Oe","œ":"oe","ʼn":"'n","ſ":"s"}),nn=Ge({"&":"&","<":"<",">":">",'"':""","'":"'"});function rn(t){return"\\"+ae[t]}function on(t){return ee.test(t)}function sn(t){var e=-1,n=Array(t.size);return t.forEach((function(t,r){n[++e]=[r,t]})),n}function an(t,e){return function(n){return t(e(n))}}function cn(t,e){for(var n=-1,r=t.length,i=0,s=[];++n",""":'"',"'":"'"});var dn=function t(e){var T,St=(e=null==e?pe:dn.defaults(pe.Object(),e,dn.pick(pe,re))).Array,xt=e.Date,kt=e.Error,Tt=e.Function,It=e.Math,At=e.Object,Ct=e.RegExp,Ot=e.String,Pt=e.TypeError,Nt=St.prototype,Lt=Tt.prototype,Rt=At.prototype,jt=e["__core-js_shared__"],Dt=Lt.toString,Ft=Rt.hasOwnProperty,Mt=0,$t=(T=/[^.]+$/.exec(jt&&jt.keys&&jt.keys.IE_PROTO||""))?"Symbol(src)_1."+T:"",Bt=Rt.toString,zt=Dt.call(At),Ut=pe._,Ht=Ct("^"+Dt.call(Ft).replace(rt,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),qt=me?e.Buffer:n,Gt=e.Symbol,Vt=e.Uint8Array,Wt=qt?qt.allocUnsafe:n,Xt=an(At.getPrototypeOf,At),Kt=At.create,Qt=Rt.propertyIsEnumerable,Jt=Nt.splice,ee=Gt?Gt.isConcatSpreadable:n,ae=Gt?Gt.iterator:n,le=Gt?Gt.toStringTag:n,fe=function(){try{var t=po(At,"defineProperty");return t({},"",{}),t}catch(t){}}(),he=e.clearTimeout!==pe.clearTimeout&&e.clearTimeout,de=xt&&xt.now!==pe.Date.now&&xt.now,ge=e.setTimeout!==pe.setTimeout&&e.setTimeout,ve=It.ceil,Fe=It.floor,Ge=At.getOwnPropertySymbols,mn=qt?qt.isBuffer:n,gn=e.isFinite,vn=Nt.join,yn=an(At.keys,At),wn=It.max,bn=It.min,En=xt.now,_n=e.parseInt,Sn=It.random,xn=Nt.reverse,kn=po(e,"DataView"),Tn=po(e,"Map"),In=po(e,"Promise"),An=po(e,"Set"),Cn=po(e,"WeakMap"),On=po(At,"create"),Pn=Cn&&new Cn,Nn={},Ln=Bo(kn),Rn=Bo(Tn),jn=Bo(In),Dn=Bo(An),Fn=Bo(Cn),Mn=Gt?Gt.prototype:n,$n=Mn?Mn.valueOf:n,Bn=Mn?Mn.toString:n;function zn(t){if(ra(t)&&!Vs(t)&&!(t instanceof Gn)){if(t instanceof qn)return t;if(Ft.call(t,"__wrapped__"))return zo(t)}return new qn(t)}var Un=function(){function t(){}return function(e){if(!na(e))return{};if(Kt)return Kt(e);t.prototype=e;var r=new t;return t.prototype=n,r}}();function Hn(){}function qn(t,e){this.__wrapped__=t,this.__actions__=[],this.__chain__=!!e,this.__index__=0,this.__values__=n}function Gn(t){this.__wrapped__=t,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=d,this.__views__=[]}function Vn(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e=e?t:e)),t}function ur(t,e,r,i,o,s){var a,c=1&e,u=2&e,l=4&e;if(r&&(a=o?r(t,i,o,s):r(t)),a!==n)return a;if(!na(t))return t;var f=Vs(t);if(f){if(a=function(t){var e=t.length,n=new t.constructor(e);e&&"string"==typeof t[0]&&Ft.call(t,"index")&&(n.index=t.index,n.input=t.input);return n}(t),!c)return Oi(t,a)}else{var p=go(t),h=p==E||p==_;if(Qs(t))return xi(t,c);if(p==k||p==g||h&&!o){if(a=u||h?{}:yo(t),!c)return u?function(t,e){return Pi(t,mo(t),e)}(t,function(t,e){return t&&Pi(e,Ra(e),t)}(a,t)):function(t,e){return Pi(t,ho(t),e)}(t,or(a,t))}else{if(!se[p])return o?t:{};a=function(t,e,n){var r=t.constructor;switch(e){case L:return ki(t);case y:case w:return new r(+t);case R:return function(t,e){var n=e?ki(t.buffer):t.buffer;return new t.constructor(n,t.byteOffset,t.byteLength)}(t,n);case j:case D:case F:case M:case $:case B:case z:case U:case H:return Ti(t,n);case S:return new r;case x:case O:return new r(t);case A:return function(t){var e=new t.constructor(t.source,dt.exec(t));return e.lastIndex=t.lastIndex,e}(t);case C:return new r;case P:return i=t,$n?At($n.call(i)):{}}var i}(t,p,c)}}s||(s=new Qn);var d=s.get(t);if(d)return d;s.set(t,a),ca(t)?t.forEach((function(n){a.add(ur(n,e,r,n,t,s))})):ia(t)&&t.forEach((function(n,i){a.set(i,ur(n,e,r,i,t,s))}));var m=f?n:(l?u?oo:io:u?Ra:La)(t);return Te(m||t,(function(n,i){m&&(n=t[i=n]),nr(a,i,ur(n,e,r,i,t,s))})),a}function lr(t,e,r){var i=r.length;if(null==t)return!i;for(t=At(t);i--;){var o=r[i],s=e[o],a=t[o];if(a===n&&!(o in t)||!s(a))return!1}return!0}function fr(t,e,i){if("function"!=typeof t)throw new Pt(r);return Lo((function(){t.apply(n,i)}),e)}function pr(t,e,n,r){var i=-1,o=Oe,s=!0,a=t.length,c=[],u=e.length;if(!a)return c;n&&(e=Ne(e,Ke(n))),r?(o=Pe,s=!1):e.length>=200&&(o=Ze,s=!1,e=new Kn(e));t:for(;++i-1},Wn.prototype.set=function(t,e){var n=this.__data__,r=rr(n,t);return r<0?(++this.size,n.push([t,e])):n[r][1]=e,this},Xn.prototype.clear=function(){this.size=0,this.__data__={hash:new Vn,map:new(Tn||Wn),string:new Vn}},Xn.prototype.delete=function(t){var e=lo(this,t).delete(t);return this.size-=e?1:0,e},Xn.prototype.get=function(t){return lo(this,t).get(t)},Xn.prototype.has=function(t){return lo(this,t).has(t)},Xn.prototype.set=function(t,e){var n=lo(this,t),r=n.size;return n.set(t,e),this.size+=n.size==r?0:1,this},Kn.prototype.add=Kn.prototype.push=function(t){return this.__data__.set(t,i),this},Kn.prototype.has=function(t){return this.__data__.has(t)},Qn.prototype.clear=function(){this.__data__=new Wn,this.size=0},Qn.prototype.delete=function(t){var e=this.__data__,n=e.delete(t);return this.size=e.size,n},Qn.prototype.get=function(t){return this.__data__.get(t)},Qn.prototype.has=function(t){return this.__data__.has(t)},Qn.prototype.set=function(t,e){var n=this.__data__;if(n instanceof Wn){var r=n.__data__;if(!Tn||r.length<199)return r.push([t,e]),this.size=++n.size,this;n=this.__data__=new Xn(r)}return n.set(t,e),this.size=n.size,this};var hr=Ri(Er),dr=Ri(_r,!0);function mr(t,e){var n=!0;return hr(t,(function(t,r,i){return n=!!e(t,r,i)})),n}function gr(t,e,r){for(var i=-1,o=t.length;++i0&&n(a)?e>1?yr(a,e-1,n,r,i):Le(i,a):r||(i[i.length]=a)}return i}var wr=ji(),br=ji(!0);function Er(t,e){return t&&wr(t,e,La)}function _r(t,e){return t&&br(t,e,La)}function Sr(t,e){return Ce(e,(function(e){return Js(t[e])}))}function xr(t,e){for(var r=0,i=(e=bi(e,t)).length;null!=t&&re}function Ar(t,e){return null!=t&&Ft.call(t,e)}function Cr(t,e){return null!=t&&e in At(t)}function Or(t,e,r){for(var i=r?Pe:Oe,o=t[0].length,s=t.length,a=s,c=St(s),u=1/0,l=[];a--;){var f=t[a];a&&e&&(f=Ne(f,Ke(e))),u=bn(f.length,u),c[a]=!r&&(e||o>=120&&f.length>=120)?new Kn(a&&f):n}f=t[0];var p=-1,h=c[0];t:for(;++p=a?c:c*("desc"==n[r]?-1:1)}return t.index-e.index}(t,e,n)}))}function Vr(t,e,n){for(var r=-1,i=e.length,o={};++r-1;)a!==t&&Jt.call(a,c,1),Jt.call(t,c,1);return t}function Xr(t,e){for(var n=t?e.length:0,r=n-1;n--;){var i=e[n];if(n==r||i!==o){var o=i;bo(i)?Jt.call(t,i,1):pi(t,i)}}return t}function Kr(t,e){return t+Fe(Sn()*(e-t+1))}function Qr(t,e){var n="";if(!t||e<1||e>p)return n;do{e%2&&(n+=t),(e=Fe(e/2))&&(t+=t)}while(e);return n}function Zr(t,e){return Ro(Ao(t,e,oc),t+"")}function Yr(t){return Yn(Ua(t))}function Jr(t,e){var n=Ua(t);return Fo(n,cr(e,0,n.length))}function ti(t,e,r,i){if(!na(t))return t;for(var o=-1,s=(e=bi(e,t)).length,a=s-1,c=t;null!=c&&++oi?0:i+e),(n=n>i?i:n)<0&&(n+=i),i=e>n?0:n-e>>>0,e>>>=0;for(var o=St(i);++r>>1,s=t[o];null!==s&&!la(s)&&(n?s<=e:s=200){var u=e?null:Qi(t);if(u)return un(u);s=!1,i=Ze,c=new Kn}else c=e?[]:a;t:for(;++r=i?t:ii(t,e,r)}var Si=he||function(t){return pe.clearTimeout(t)};function xi(t,e){if(e)return t.slice();var n=t.length,r=Wt?Wt(n):new t.constructor(n);return t.copy(r),r}function ki(t){var e=new t.constructor(t.byteLength);return new Vt(e).set(new Vt(t)),e}function Ti(t,e){var n=e?ki(t.buffer):t.buffer;return new t.constructor(n,t.byteOffset,t.length)}function Ii(t,e){if(t!==e){var r=t!==n,i=null===t,o=t==t,s=la(t),a=e!==n,c=null===e,u=e==e,l=la(e);if(!c&&!l&&!s&&t>e||s&&a&&u&&!c&&!l||i&&a&&u||!r&&u||!o)return 1;if(!i&&!s&&!l&&t1?r[o-1]:n,a=o>2?r[2]:n;for(s=t.length>3&&"function"==typeof s?(o--,s):n,a&&Eo(r[0],r[1],a)&&(s=o<3?n:s,o=1),e=At(e);++i-1?o[s?e[a]:a]:n}}function Bi(t){return ro((function(e){var i=e.length,o=i,s=qn.prototype.thru;for(t&&e.reverse();o--;){var a=e[o];if("function"!=typeof a)throw new Pt(r);if(s&&!c&&"wrapper"==ao(a))var c=new qn([],!0)}for(o=c?o:i;++o1&&y.reverse(),p&&lc))return!1;var l=s.get(t),f=s.get(e);if(l&&f)return l==e&&f==t;var p=-1,h=!0,d=2&r?new Kn:n;for(s.set(t,e),s.set(e,t);++p-1&&t%1==0&&t1?"& ":"")+e[r],e=e.join(n>2?", ":" "),t.replace(ct,"{\n/* [wrapped with "+e+"] */\n")}(r,function(t,e){return Te(m,(function(n){var r="_."+n[0];e&n[1]&&!Oe(t,r)&&t.push(r)})),t.sort()}(function(t){var e=t.match(ut);return e?e[1].split(lt):[]}(r),n)))}function Do(t){var e=0,r=0;return function(){var i=En(),o=16-(i-r);if(r=i,o>0){if(++e>=800)return arguments[0]}else e=0;return t.apply(n,arguments)}}function Fo(t,e){var r=-1,i=t.length,o=i-1;for(e=e===n?i:e;++r1?t[e-1]:n;return r="function"==typeof r?(t.pop(),r):n,as(t,r)}));function ds(t){var e=zn(t);return e.__chain__=!0,e}function ms(t,e){return e(t)}var gs=ro((function(t){var e=t.length,r=e?t[0]:0,i=this.__wrapped__,o=function(e){return ar(e,t)};return!(e>1||this.__actions__.length)&&i instanceof Gn&&bo(r)?((i=i.slice(r,+r+(e?1:0))).__actions__.push({func:ms,args:[o],thisArg:n}),new qn(i,this.__chain__).thru((function(t){return e&&!t.length&&t.push(n),t}))):this.thru(o)}));var vs=Ni((function(t,e,n){Ft.call(t,n)?++t[n]:sr(t,n,1)}));var ys=$i(Go),ws=$i(Vo);function bs(t,e){return(Vs(t)?Te:hr)(t,uo(e,3))}function Es(t,e){return(Vs(t)?Ie:dr)(t,uo(e,3))}var _s=Ni((function(t,e,n){Ft.call(t,n)?t[n].push(e):sr(t,n,[e])}));var Ss=Zr((function(t,e,n){var r=-1,i="function"==typeof e,o=Xs(t)?St(t.length):[];return hr(t,(function(t){o[++r]=i?xe(e,t,n):Pr(t,e,n)})),o})),xs=Ni((function(t,e,n){sr(t,n,e)}));function ks(t,e){return(Vs(t)?Ne:Br)(t,uo(e,3))}var Ts=Ni((function(t,e,n){t[n?0:1].push(e)}),(function(){return[[],[]]}));var Is=Zr((function(t,e){if(null==t)return[];var n=e.length;return n>1&&Eo(t,e[0],e[1])?e=[]:n>2&&Eo(e[0],e[1],e[2])&&(e=[e[0]]),Gr(t,yr(e,1),[])})),As=de||function(){return pe.Date.now()};function Cs(t,e,r){return e=r?n:e,e=t&&null==e?t.length:e,Yi(t,u,n,n,n,n,e)}function Os(t,e){var i;if("function"!=typeof e)throw new Pt(r);return t=ga(t),function(){return--t>0&&(i=e.apply(this,arguments)),t<=1&&(e=n),i}}var Ps=Zr((function(t,e,n){var r=1;if(n.length){var i=cn(n,co(Ps));r|=a}return Yi(t,r,e,n,i)})),Ns=Zr((function(t,e,n){var r=3;if(n.length){var i=cn(n,co(Ns));r|=a}return Yi(e,r,t,n,i)}));function Ls(t,e,i){var o,s,a,c,u,l,f=0,p=!1,h=!1,d=!0;if("function"!=typeof t)throw new Pt(r);function m(e){var r=o,i=s;return o=s=n,f=e,c=t.apply(i,r)}function g(t){return f=t,u=Lo(y,e),p?m(t):c}function v(t){var r=t-l;return l===n||r>=e||r<0||h&&t-f>=a}function y(){var t=As();if(v(t))return w(t);u=Lo(y,function(t){var n=e-(t-l);return h?bn(n,a-(t-f)):n}(t))}function w(t){return u=n,d&&o?m(t):(o=s=n,c)}function b(){var t=As(),r=v(t);if(o=arguments,s=this,l=t,r){if(u===n)return g(l);if(h)return Si(u),u=Lo(y,e),m(l)}return u===n&&(u=Lo(y,e)),c}return e=ya(e)||0,na(i)&&(p=!!i.leading,a=(h="maxWait"in i)?wn(ya(i.maxWait)||0,e):a,d="trailing"in i?!!i.trailing:d),b.cancel=function(){u!==n&&Si(u),f=0,o=l=s=u=n},b.flush=function(){return u===n?c:w(As())},b}var Rs=Zr((function(t,e){return fr(t,1,e)})),js=Zr((function(t,e,n){return fr(t,ya(e)||0,n)}));function Ds(t,e){if("function"!=typeof t||null!=e&&"function"!=typeof e)throw new Pt(r);var n=function(){var r=arguments,i=e?e.apply(this,r):r[0],o=n.cache;if(o.has(i))return o.get(i);var s=t.apply(this,r);return n.cache=o.set(i,s)||o,s};return n.cache=new(Ds.Cache||Xn),n}function Fs(t){if("function"!=typeof t)throw new Pt(r);return function(){var e=arguments;switch(e.length){case 0:return!t.call(this);case 1:return!t.call(this,e[0]);case 2:return!t.call(this,e[0],e[1]);case 3:return!t.call(this,e[0],e[1],e[2])}return!t.apply(this,e)}}Ds.Cache=Xn;var Ms=Ei((function(t,e){var n=(e=1==e.length&&Vs(e[0])?Ne(e[0],Ke(uo())):Ne(yr(e,1),Ke(uo()))).length;return Zr((function(r){for(var i=-1,o=bn(r.length,n);++i=e})),Gs=Nr(function(){return arguments}())?Nr:function(t){return ra(t)&&Ft.call(t,"callee")&&!Qt.call(t,"callee")},Vs=St.isArray,Ws=ye?Ke(ye):function(t){return ra(t)&&Tr(t)==L};function Xs(t){return null!=t&&ea(t.length)&&!Js(t)}function Ks(t){return ra(t)&&Xs(t)}var Qs=mn||yc,Zs=we?Ke(we):function(t){return ra(t)&&Tr(t)==w};function Ys(t){if(!ra(t))return!1;var e=Tr(t);return e==b||"[object DOMException]"==e||"string"==typeof t.message&&"string"==typeof t.name&&!sa(t)}function Js(t){if(!na(t))return!1;var e=Tr(t);return e==E||e==_||"[object AsyncFunction]"==e||"[object Proxy]"==e}function ta(t){return"number"==typeof t&&t==ga(t)}function ea(t){return"number"==typeof t&&t>-1&&t%1==0&&t<=p}function na(t){var e=typeof t;return null!=t&&("object"==e||"function"==e)}function ra(t){return null!=t&&"object"==typeof t}var ia=be?Ke(be):function(t){return ra(t)&&go(t)==S};function oa(t){return"number"==typeof t||ra(t)&&Tr(t)==x}function sa(t){if(!ra(t)||Tr(t)!=k)return!1;var e=Xt(t);if(null===e)return!0;var n=Ft.call(e,"constructor")&&e.constructor;return"function"==typeof n&&n instanceof n&&Dt.call(n)==zt}var aa=Ee?Ke(Ee):function(t){return ra(t)&&Tr(t)==A};var ca=_e?Ke(_e):function(t){return ra(t)&&go(t)==C};function ua(t){return"string"==typeof t||!Vs(t)&&ra(t)&&Tr(t)==O}function la(t){return"symbol"==typeof t||ra(t)&&Tr(t)==P}var fa=Se?Ke(Se):function(t){return ra(t)&&ea(t.length)&&!!oe[Tr(t)]};var pa=Wi($r),ha=Wi((function(t,e){return t<=e}));function da(t){if(!t)return[];if(Xs(t))return ua(t)?pn(t):Oi(t);if(ae&&t[ae])return function(t){for(var e,n=[];!(e=t.next()).done;)n.push(e.value);return n}(t[ae]());var e=go(t);return(e==S?sn:e==C?un:Ua)(t)}function ma(t){return t?(t=ya(t))===f||t===-1/0?17976931348623157e292*(t<0?-1:1):t==t?t:0:0===t?t:0}function ga(t){var e=ma(t),n=e%1;return e==e?n?e-n:e:0}function va(t){return t?cr(ga(t),0,d):0}function ya(t){if("number"==typeof t)return t;if(la(t))return h;if(na(t)){var e="function"==typeof t.valueOf?t.valueOf():t;t=na(e)?e+"":e}if("string"!=typeof t)return 0===t?t:+t;t=t.replace(ot,"");var n=gt.test(t);return n||yt.test(t)?ue(t.slice(2),n?2:8):mt.test(t)?h:+t}function wa(t){return Pi(t,Ra(t))}function ba(t){return null==t?"":li(t)}var Ea=Li((function(t,e){if(ko(e)||Xs(e))Pi(e,La(e),t);else for(var n in e)Ft.call(e,n)&&nr(t,n,e[n])})),_a=Li((function(t,e){Pi(e,Ra(e),t)})),Sa=Li((function(t,e,n,r){Pi(e,Ra(e),t,r)})),xa=Li((function(t,e,n,r){Pi(e,La(e),t,r)})),ka=ro(ar);var Ta=Zr((function(t,e){t=At(t);var r=-1,i=e.length,o=i>2?e[2]:n;for(o&&Eo(e[0],e[1],o)&&(i=1);++r1),e})),Pi(t,oo(t),n),r&&(n=ur(n,7,eo));for(var i=e.length;i--;)pi(n,e[i]);return n}));var Ma=ro((function(t,e){return null==t?{}:function(t,e){return Vr(t,e,(function(e,n){return Ca(t,n)}))}(t,e)}));function $a(t,e){if(null==t)return{};var n=Ne(oo(t),(function(t){return[t]}));return e=uo(e),Vr(t,n,(function(t,n){return e(t,n[0])}))}var Ba=Zi(La),za=Zi(Ra);function Ua(t){return null==t?[]:Qe(t,La(t))}var Ha=Fi((function(t,e,n){return e=e.toLowerCase(),t+(n?qa(e):e)}));function qa(t){return Ya(ba(t).toLowerCase())}function Ga(t){return(t=ba(t))&&t.replace(bt,en).replace(Yt,"")}var Va=Fi((function(t,e,n){return t+(n?"-":"")+e.toLowerCase()})),Wa=Fi((function(t,e,n){return t+(n?" ":"")+e.toLowerCase()})),Xa=Di("toLowerCase");var Ka=Fi((function(t,e,n){return t+(n?"_":"")+e.toLowerCase()}));var Qa=Fi((function(t,e,n){return t+(n?" ":"")+Ya(e)}));var Za=Fi((function(t,e,n){return t+(n?" ":"")+e.toUpperCase()})),Ya=Di("toUpperCase");function Ja(t,e,r){return t=ba(t),(e=r?n:e)===n?function(t){return ne.test(t)}(t)?function(t){return t.match(te)||[]}(t):function(t){return t.match(ft)||[]}(t):t.match(e)||[]}var tc=Zr((function(t,e){try{return xe(t,n,e)}catch(t){return Ys(t)?t:new kt(t)}})),ec=ro((function(t,e){return Te(e,(function(e){e=$o(e),sr(t,e,Ps(t[e],t))})),t}));function nc(t){return function(){return t}}var rc=Bi(),ic=Bi(!0);function oc(t){return t}function sc(t){return Dr("function"==typeof t?t:ur(t,1))}var ac=Zr((function(t,e){return function(n){return Pr(n,t,e)}})),cc=Zr((function(t,e){return function(n){return Pr(t,n,e)}}));function uc(t,e,n){var r=La(e),i=Sr(e,r);null!=n||na(e)&&(i.length||!r.length)||(n=e,e=t,t=this,i=Sr(e,La(e)));var o=!(na(n)&&"chain"in n&&!n.chain),s=Js(t);return Te(i,(function(n){var r=e[n];t[n]=r,s&&(t.prototype[n]=function(){var e=this.__chain__;if(o||e){var n=t(this.__wrapped__),i=n.__actions__=Oi(this.__actions__);return i.push({func:r,args:arguments,thisArg:t}),n.__chain__=e,n}return r.apply(t,Le([this.value()],arguments))})})),t}function lc(){}var fc=qi(Ne),pc=qi(Ae),hc=qi(De);function dc(t){return _o(t)?qe($o(t)):function(t){return function(e){return xr(e,t)}}(t)}var mc=Vi(),gc=Vi(!0);function vc(){return[]}function yc(){return!1}var wc=Hi((function(t,e){return t+e}),0),bc=Ki("ceil"),Ec=Hi((function(t,e){return t/e}),1),_c=Ki("floor");var Sc=Hi((function(t,e){return t*e}),1),xc=Ki("round"),kc=Hi((function(t,e){return t-e}),0);return zn.after=function(t,e){if("function"!=typeof e)throw new Pt(r);return t=ga(t),function(){if(--t<1)return e.apply(this,arguments)}},zn.ary=Cs,zn.assign=Ea,zn.assignIn=_a,zn.assignInWith=Sa,zn.assignWith=xa,zn.at=ka,zn.before=Os,zn.bind=Ps,zn.bindAll=ec,zn.bindKey=Ns,zn.castArray=function(){if(!arguments.length)return[];var t=arguments[0];return Vs(t)?t:[t]},zn.chain=ds,zn.chunk=function(t,e,r){e=(r?Eo(t,e,r):e===n)?1:wn(ga(e),0);var i=null==t?0:t.length;if(!i||e<1)return[];for(var o=0,s=0,a=St(ve(i/e));oo?0:o+r),(i=i===n||i>o?o:ga(i))<0&&(i+=o),i=r>i?0:va(i);r>>0)?(t=ba(t))&&("string"==typeof e||null!=e&&!aa(e))&&!(e=li(e))&&on(t)?_i(pn(t),0,r):t.split(e,r):[]},zn.spread=function(t,e){if("function"!=typeof t)throw new Pt(r);return e=null==e?0:wn(ga(e),0),Zr((function(n){var r=n[e],i=_i(n,0,e);return r&&Le(i,r),xe(t,this,i)}))},zn.tail=function(t){var e=null==t?0:t.length;return e?ii(t,1,e):[]},zn.take=function(t,e,r){return t&&t.length?ii(t,0,(e=r||e===n?1:ga(e))<0?0:e):[]},zn.takeRight=function(t,e,r){var i=null==t?0:t.length;return i?ii(t,(e=i-(e=r||e===n?1:ga(e)))<0?0:e,i):[]},zn.takeRightWhile=function(t,e){return t&&t.length?di(t,uo(e,3),!1,!0):[]},zn.takeWhile=function(t,e){return t&&t.length?di(t,uo(e,3)):[]},zn.tap=function(t,e){return e(t),t},zn.throttle=function(t,e,n){var i=!0,o=!0;if("function"!=typeof t)throw new Pt(r);return na(n)&&(i="leading"in n?!!n.leading:i,o="trailing"in n?!!n.trailing:o),Ls(t,e,{leading:i,maxWait:e,trailing:o})},zn.thru=ms,zn.toArray=da,zn.toPairs=Ba,zn.toPairsIn=za,zn.toPath=function(t){return Vs(t)?Ne(t,$o):la(t)?[t]:Oi(Mo(ba(t)))},zn.toPlainObject=wa,zn.transform=function(t,e,n){var r=Vs(t),i=r||Qs(t)||fa(t);if(e=uo(e,4),null==n){var o=t&&t.constructor;n=i?r?new o:[]:na(t)&&Js(o)?Un(Xt(t)):{}}return(i?Te:Er)(t,(function(t,r,i){return e(n,t,r,i)})),n},zn.unary=function(t){return Cs(t,1)},zn.union=rs,zn.unionBy=is,zn.unionWith=os,zn.uniq=function(t){return t&&t.length?fi(t):[]},zn.uniqBy=function(t,e){return t&&t.length?fi(t,uo(e,2)):[]},zn.uniqWith=function(t,e){return e="function"==typeof e?e:n,t&&t.length?fi(t,n,e):[]},zn.unset=function(t,e){return null==t||pi(t,e)},zn.unzip=ss,zn.unzipWith=as,zn.update=function(t,e,n){return null==t?t:hi(t,e,wi(n))},zn.updateWith=function(t,e,r,i){return i="function"==typeof i?i:n,null==t?t:hi(t,e,wi(r),i)},zn.values=Ua,zn.valuesIn=function(t){return null==t?[]:Qe(t,Ra(t))},zn.without=cs,zn.words=Ja,zn.wrap=function(t,e){return $s(wi(e),t)},zn.xor=us,zn.xorBy=ls,zn.xorWith=fs,zn.zip=ps,zn.zipObject=function(t,e){return vi(t||[],e||[],nr)},zn.zipObjectDeep=function(t,e){return vi(t||[],e||[],ti)},zn.zipWith=hs,zn.entries=Ba,zn.entriesIn=za,zn.extend=_a,zn.extendWith=Sa,uc(zn,zn),zn.add=wc,zn.attempt=tc,zn.camelCase=Ha,zn.capitalize=qa,zn.ceil=bc,zn.clamp=function(t,e,r){return r===n&&(r=e,e=n),r!==n&&(r=(r=ya(r))==r?r:0),e!==n&&(e=(e=ya(e))==e?e:0),cr(ya(t),e,r)},zn.clone=function(t){return ur(t,4)},zn.cloneDeep=function(t){return ur(t,5)},zn.cloneDeepWith=function(t,e){return ur(t,5,e="function"==typeof e?e:n)},zn.cloneWith=function(t,e){return ur(t,4,e="function"==typeof e?e:n)},zn.conformsTo=function(t,e){return null==e||lr(t,e,La(e))},zn.deburr=Ga,zn.defaultTo=function(t,e){return null==t||t!=t?e:t},zn.divide=Ec,zn.endsWith=function(t,e,r){t=ba(t),e=li(e);var i=t.length,o=r=r===n?i:cr(ga(r),0,i);return(r-=e.length)>=0&&t.slice(r,o)==e},zn.eq=Us,zn.escape=function(t){return(t=ba(t))&&Q.test(t)?t.replace(X,nn):t},zn.escapeRegExp=function(t){return(t=ba(t))&&it.test(t)?t.replace(rt,"\\$&"):t},zn.every=function(t,e,r){var i=Vs(t)?Ae:mr;return r&&Eo(t,e,r)&&(e=n),i(t,uo(e,3))},zn.find=ys,zn.findIndex=Go,zn.findKey=function(t,e){return Me(t,uo(e,3),Er)},zn.findLast=ws,zn.findLastIndex=Vo,zn.findLastKey=function(t,e){return Me(t,uo(e,3),_r)},zn.floor=_c,zn.forEach=bs,zn.forEachRight=Es,zn.forIn=function(t,e){return null==t?t:wr(t,uo(e,3),Ra)},zn.forInRight=function(t,e){return null==t?t:br(t,uo(e,3),Ra)},zn.forOwn=function(t,e){return t&&Er(t,uo(e,3))},zn.forOwnRight=function(t,e){return t&&_r(t,uo(e,3))},zn.get=Aa,zn.gt=Hs,zn.gte=qs,zn.has=function(t,e){return null!=t&&vo(t,e,Ar)},zn.hasIn=Ca,zn.head=Xo,zn.identity=oc,zn.includes=function(t,e,n,r){t=Xs(t)?t:Ua(t),n=n&&!r?ga(n):0;var i=t.length;return n<0&&(n=wn(i+n,0)),ua(t)?n<=i&&t.indexOf(e,n)>-1:!!i&&Be(t,e,n)>-1},zn.indexOf=function(t,e,n){var r=null==t?0:t.length;if(!r)return-1;var i=null==n?0:ga(n);return i<0&&(i=wn(r+i,0)),Be(t,e,i)},zn.inRange=function(t,e,r){return e=ma(e),r===n?(r=e,e=0):r=ma(r),function(t,e,n){return t>=bn(e,n)&&t=-9007199254740991&&t<=p},zn.isSet=ca,zn.isString=ua,zn.isSymbol=la,zn.isTypedArray=fa,zn.isUndefined=function(t){return t===n},zn.isWeakMap=function(t){return ra(t)&&go(t)==N},zn.isWeakSet=function(t){return ra(t)&&"[object WeakSet]"==Tr(t)},zn.join=function(t,e){return null==t?"":vn.call(t,e)},zn.kebabCase=Va,zn.last=Yo,zn.lastIndexOf=function(t,e,r){var i=null==t?0:t.length;if(!i)return-1;var o=i;return r!==n&&(o=(o=ga(r))<0?wn(i+o,0):bn(o,i-1)),e==e?function(t,e,n){for(var r=n+1;r--;)if(t[r]===e)return r;return r}(t,e,o):$e(t,Ue,o,!0)},zn.lowerCase=Wa,zn.lowerFirst=Xa,zn.lt=pa,zn.lte=ha,zn.max=function(t){return t&&t.length?gr(t,oc,Ir):n},zn.maxBy=function(t,e){return t&&t.length?gr(t,uo(e,2),Ir):n},zn.mean=function(t){return He(t,oc)},zn.meanBy=function(t,e){return He(t,uo(e,2))},zn.min=function(t){return t&&t.length?gr(t,oc,$r):n},zn.minBy=function(t,e){return t&&t.length?gr(t,uo(e,2),$r):n},zn.stubArray=vc,zn.stubFalse=yc,zn.stubObject=function(){return{}},zn.stubString=function(){return""},zn.stubTrue=function(){return!0},zn.multiply=Sc,zn.nth=function(t,e){return t&&t.length?qr(t,ga(e)):n},zn.noConflict=function(){return pe._===this&&(pe._=Ut),this},zn.noop=lc,zn.now=As,zn.pad=function(t,e,n){t=ba(t);var r=(e=ga(e))?fn(t):0;if(!e||r>=e)return t;var i=(e-r)/2;return Gi(Fe(i),n)+t+Gi(ve(i),n)},zn.padEnd=function(t,e,n){t=ba(t);var r=(e=ga(e))?fn(t):0;return e&&re){var i=t;t=e,e=i}if(r||t%1||e%1){var o=Sn();return bn(t+o*(e-t+ce("1e-"+((o+"").length-1))),e)}return Kr(t,e)},zn.reduce=function(t,e,n){var r=Vs(t)?Re:Ve,i=arguments.length<3;return r(t,uo(e,4),n,i,hr)},zn.reduceRight=function(t,e,n){var r=Vs(t)?je:Ve,i=arguments.length<3;return r(t,uo(e,4),n,i,dr)},zn.repeat=function(t,e,r){return e=(r?Eo(t,e,r):e===n)?1:ga(e),Qr(ba(t),e)},zn.replace=function(){var t=arguments,e=ba(t[0]);return t.length<3?e:e.replace(t[1],t[2])},zn.result=function(t,e,r){var i=-1,o=(e=bi(e,t)).length;for(o||(o=1,t=n);++ip)return[];var n=d,r=bn(t,d);e=uo(e),t-=d;for(var i=Xe(r,e);++n=s)return t;var c=r-fn(i);if(c<1)return i;var u=a?_i(a,0,c).join(""):t.slice(0,c);if(o===n)return u+i;if(a&&(c+=u.length-c),aa(o)){if(t.slice(c).search(o)){var l,f=u;for(o.global||(o=Ct(o.source,ba(dt.exec(o))+"g")),o.lastIndex=0;l=o.exec(f);)var p=l.index;u=u.slice(0,p===n?c:p)}}else if(t.indexOf(li(o),c)!=c){var h=u.lastIndexOf(o);h>-1&&(u=u.slice(0,h))}return u+i},zn.unescape=function(t){return(t=ba(t))&&K.test(t)?t.replace(W,hn):t},zn.uniqueId=function(t){var e=++Mt;return ba(t)+e},zn.upperCase=Za,zn.upperFirst=Ya,zn.each=bs,zn.eachRight=Es,zn.first=Xo,uc(zn,function(){var t={};return Er(zn,(function(e,n){Ft.call(zn.prototype,n)||(t[n]=e)})),t}(),{chain:!1}),zn.VERSION="4.17.20",Te(["bind","bindKey","curry","curryRight","partial","partialRight"],(function(t){zn[t].placeholder=zn})),Te(["drop","take"],(function(t,e){Gn.prototype[t]=function(r){r=r===n?1:wn(ga(r),0);var i=this.__filtered__&&!e?new Gn(this):this.clone();return i.__filtered__?i.__takeCount__=bn(r,i.__takeCount__):i.__views__.push({size:bn(r,d),type:t+(i.__dir__<0?"Right":"")}),i},Gn.prototype[t+"Right"]=function(e){return this.reverse()[t](e).reverse()}})),Te(["filter","map","takeWhile"],(function(t,e){var n=e+1,r=1==n||3==n;Gn.prototype[t]=function(t){var e=this.clone();return e.__iteratees__.push({iteratee:uo(t,3),type:n}),e.__filtered__=e.__filtered__||r,e}})),Te(["head","last"],(function(t,e){var n="take"+(e?"Right":"");Gn.prototype[t]=function(){return this[n](1).value()[0]}})),Te(["initial","tail"],(function(t,e){var n="drop"+(e?"":"Right");Gn.prototype[t]=function(){return this.__filtered__?new Gn(this):this[n](1)}})),Gn.prototype.compact=function(){return this.filter(oc)},Gn.prototype.find=function(t){return this.filter(t).head()},Gn.prototype.findLast=function(t){return this.reverse().find(t)},Gn.prototype.invokeMap=Zr((function(t,e){return"function"==typeof t?new Gn(this):this.map((function(n){return Pr(n,t,e)}))})),Gn.prototype.reject=function(t){return this.filter(Fs(uo(t)))},Gn.prototype.slice=function(t,e){t=ga(t);var r=this;return r.__filtered__&&(t>0||e<0)?new Gn(r):(t<0?r=r.takeRight(-t):t&&(r=r.drop(t)),e!==n&&(r=(e=ga(e))<0?r.dropRight(-e):r.take(e-t)),r)},Gn.prototype.takeRightWhile=function(t){return this.reverse().takeWhile(t).reverse()},Gn.prototype.toArray=function(){return this.take(d)},Er(Gn.prototype,(function(t,e){var r=/^(?:filter|find|map|reject)|While$/.test(e),i=/^(?:head|last)$/.test(e),o=zn[i?"take"+("last"==e?"Right":""):e],s=i||/^find/.test(e);o&&(zn.prototype[e]=function(){var e=this.__wrapped__,a=i?[1]:arguments,c=e instanceof Gn,u=a[0],l=c||Vs(e),f=function(t){var e=o.apply(zn,Le([t],a));return i&&p?e[0]:e};l&&r&&"function"==typeof u&&1!=u.length&&(c=l=!1);var p=this.__chain__,h=!!this.__actions__.length,d=s&&!p,m=c&&!h;if(!s&&l){e=m?e:new Gn(this);var g=t.apply(e,a);return g.__actions__.push({func:ms,args:[f],thisArg:n}),new qn(g,p)}return d&&m?t.apply(this,a):(g=this.thru(f),d?i?g.value()[0]:g.value():g)})})),Te(["pop","push","shift","sort","splice","unshift"],(function(t){var e=Nt[t],n=/^(?:push|sort|unshift)$/.test(t)?"tap":"thru",r=/^(?:pop|shift)$/.test(t);zn.prototype[t]=function(){var t=arguments;if(r&&!this.__chain__){var i=this.value();return e.apply(Vs(i)?i:[],t)}return this[n]((function(n){return e.apply(Vs(n)?n:[],t)}))}})),Er(Gn.prototype,(function(t,e){var n=zn[e];if(n){var r=n.name+"";Ft.call(Nn,r)||(Nn[r]=[]),Nn[r].push({name:e,func:n})}})),Nn[zi(n,2).name]=[{name:"wrapper",func:n}],Gn.prototype.clone=function(){var t=new Gn(this.__wrapped__);return t.__actions__=Oi(this.__actions__),t.__dir__=this.__dir__,t.__filtered__=this.__filtered__,t.__iteratees__=Oi(this.__iteratees__),t.__takeCount__=this.__takeCount__,t.__views__=Oi(this.__views__),t},Gn.prototype.reverse=function(){if(this.__filtered__){var t=new Gn(this);t.__dir__=-1,t.__filtered__=!0}else(t=this.clone()).__dir__*=-1;return t},Gn.prototype.value=function(){var t=this.__wrapped__.value(),e=this.__dir__,n=Vs(t),r=e<0,i=n?t.length:0,o=function(t,e,n){var r=-1,i=n.length;for(;++r=this.__values__.length;return{done:t,value:t?n:this.__values__[this.__index__++]}},zn.prototype.plant=function(t){for(var e,r=this;r instanceof Hn;){var i=zo(r);i.__index__=0,i.__values__=n,e?o.__wrapped__=i:e=i;var o=i;r=r.__wrapped__}return o.__wrapped__=t,e},zn.prototype.reverse=function(){var t=this.__wrapped__;if(t instanceof Gn){var e=t;return this.__actions__.length&&(e=new Gn(this)),(e=e.reverse()).__actions__.push({func:ms,args:[ns],thisArg:n}),new qn(e,this.__chain__)}return this.thru(ns)},zn.prototype.toJSON=zn.prototype.valueOf=zn.prototype.value=function(){return mi(this.__wrapped__,this.__actions__)},zn.prototype.first=zn.prototype.head,ae&&(zn.prototype[ae]=function(){return this}),zn}();"function"==typeof define&&"object"==typeof define.amd&&define.amd?(pe._=dn,define((function(){return dn}))):de?((de.exports=dn)._=dn,he._=dn):pe._=dn}.call(this),e.exports}.call({});const _e=u.DiagnosticCategory;function Se(t){return{line:t.row+1,offset:t.column+1}}function xe(t){return new f.Point(t.line-1,t.offset-1)}function ke(t){return Te(t.start,t.end)}function Te(t,e){return new f.Range(xe(t),xe(e))}function Ie(t){const e=Ae(t),n=e.formatCodeOptions;return{formatCodeOptions:{indentSize:atom.config.get("editor.tabLength"),tabSize:atom.config.get("editor.tabLength"),...n},compileOnSave:!!e.compileOnSave,preferences:e.preferences?e.preferences:{}}}function Ae(t){".json"!==v.extname(t)&&(t+=".json");let{config:e}=u.readConfigFile(t,(t=>u.sys.readFile(t)));if(void 0===e)return{};if("string"==typeof e.extends){const n=Ae(v.join(v.dirname(t),e.extends));e=Object.assign({},n,e)}return e}function Ce(t){return{label:Pe(t.prefixDisplayParts)+t.parameters.map((t=>Pe(t.displayParts))).join(Pe(t.separatorDisplayParts))+Pe(t.suffixDisplayParts),documentation:Pe(t.documentation),parameters:t.parameters.map(Oe)}}function Oe(t){return{label:Pe(t.displayParts),documentation:Pe(t.documentation)}}function Pe(t){return t.map((t=>t.text)).join("")}const Ne=function(){let t;return function(e,n){if(void 0===e)return!0;void 0===t&&(t=new Map(Object.values(u.Diagnostics).map((t=>[t.code,t.category]))));const r=t.get(e);return void 0===r||r===n}}();function Le(t){return void 0!==t&&function(t){const e=atom.config.get("atom-typescript").tsFileExtensions;atom.config.get("atom-typescript").allowJS&&e.push(...atom.config.get("atom-typescript").jsFileExtensions);return e.includes(t)}(v.extname(t))}function Re(){const t=atom.config.get("atom-typescript").tsSyntaxScopes;return atom.config.get("atom-typescript").allowJS&&t.push(...atom.config.get("atom-typescript").jsSyntaxScopes),t}function je(t){return Le(t.getPath())&&De(t)}function De(t){const[e]=t.getRootScopeDescriptor().getScopesArray();return Re().includes(e)}function Fe(t,e){const n=t.getPath();if(void 0!==n){return{file:n,...e?Se(e):function(t){const e=t.getCursorBufferPosition();return{line:e.row+1,offset:e.column+1}}(t)}}}async function Me(t,e){const n=new f.TextEditor({readonly:!0,keyboardInputEnabled:!1,showInvisibles:!1,tabLength:atom.config.get("editor.tabLength")}),r=atom.views.getView(n);try{return r.setUpdatedSynchronously(!0),r.style.pointerEvents="none",r.style.position="absolute",r.style.top="100vh",r.style.width="100vw",atom.grammars.assignLanguageMode(n.getBuffer(),e),n.setText(t),n.scrollToBufferPosition(n.getBuffer().getEndPosition()),atom.views.getView(atom.workspace).appendChild(r),await async function(t){return new Promise((e=>{const n=t.getBuffer().getLanguageMode(),r=t.component.getNextUpdatePromise();if(n.fullyTokenized||n.tree)e(r);else{const n=t.onDidTokenize((()=>{n.dispose(),e(r)}))}}))}(n),Array.from(r.querySelectorAll(".line:not(.dummy)")).map((t=>t.innerHTML))}finally{r.remove()}}function $e(t,e,n){if(!n.childItems)return;for(const r of n.childItems){const n=Be(r),i=ze(r);if(isFinite(n)&&isFinite(i)){if(t>=n&&e<=i){const n=$e(t,e,r);return n||r}if(isFinite(i)&&e=r&&e<=i?n:void 0}function Be(t){return t.spans.length>0?t.spans[0].start.line-1:0}function ze(t){const e=t.spans;return e.length>0?e[e.length-1].end.line-1:0}function Ue(t,e){if(!t||!e)return t===e;if(t.text===e.text){if(e.collapsed&&(t.collapsed=!0),t.childItems&&e.childItems){let n,r;for(let i=0,o=t.childItems.length;iBe(t)-Be(e)));for(const e of t.childItems)He(e)}}class qe{constructor(t){this.props=t,Ft.initialize(this)}async update(t){this.props={...this.props,...t},await Ft.update(this)}async destroy(){await Ft.destroy(this)}render(){const t=this.props.navTree,{ctrl:e}=this.props,n=e.getSelectedNode(),r=n&&(o=n,(i=t).text===o.text&&Ee.isEqual(i.spans,o.spans));var i,o;const s=(t.childItems?"nested-":"")+"item"+(t.collapsed?" collapsed":" expanded")+(r?" selected":""),a=this.getStyles();return Ft.dom("li",{className:"node entry exanded list-"+s},Ft.dom("div",{className:"header list-item",on:{click:e=>this.entryClicked(e,t)}},Ft.dom("span",{className:a},t.text)),Ft.dom("ol",{className:"entries list-tree"},t.childItems?t.childItems.map((t=>Ft.dom(qe,{navTree:t,ctrl:e}))):null))}getStyles(){const{kind:t}=this.props.navTree;let e="icon icon-"+t;const{kindModifiers:n}=this.props.navTree;return n&&(e+=" "+n.split(/[, ]/).map((t=>"modifier-"+t.trim())).join(" ")),e}entryClicked(t,e){t.stopPropagation();(function(t,e){return!!t.childItems&&e.target===e.currentTarget})(e,t)?(e.collapsed=!e.collapsed,be(Ft.update(this))):this.props.ctrl.gotoNode(e)}}class Ge{constructor(t){this.props=t,this.subscriptions=new p,this.loadNavTree=async()=>{if(!this.editor)return;if(!this.getClient)return;const t=this.editor.getPath();if(void 0!==t)try{const e=await this.getClient(t),n=(await e.execute("navtree",{file:t})).body;n&&(this.setNavTree(n),await Ft.update(this))}catch(e){console.error(e,t)}},this.selectAtCursorLine=({newBufferPosition:t})=>{if(!this.props.navTree)return;const e=t.row,n=$e(e,e,this.props.navTree);n!==this.selectedNode&&(this.selectedNode=n,be(Ft.update(this)))},this.subscribeToEditor=async t=>{if(this.editorScrolling&&this.editorScrolling.dispose(),this.editorChanging&&this.editorChanging.dispose(),!t||!je(t))return this.update({navTree:null});this.editor=t,await this.loadNavTree(),this.editorScrolling=t.onDidChangeCursorPosition(this.selectAtCursorLine),this.editorChanging=t.onDidStopChanging(this.loadNavTree)},He(t.navTree),Ft.initialize(this),this.subscriptions.add(atom.workspace.observeActiveTextEditor(this.subscribeToEditor))}async update(t){void 0!==t.navTree&&this.setNavTree(t.navTree),this.props={...this.props,...t},await Ft.update(this)}async destroy(){this.editorScrolling&&this.editorScrolling.dispose(),this.editorChanging&&this.editorChanging.dispose(),this.editorScrolling=void 0,this.editorChanging=void 0,this.selectedNode=void 0,this.subscriptions.dispose(),await Ft.destroy(this)}async setGetClient(t){this.getClient=t,await this.loadNavTree()}getSelectedNode(){return this.selectedNode}render(){const t=this.props.navTree?Ft.dom(qe,{navTree:this.props.navTree,ctrl:this}):null;return Ft.dom("div",{className:"atomts atomts-semantic-view native-key-bindings"},Ft.dom("ol",{className:"list-tree has-collapsable-children focusable-panel"},t))}readAfterUpdate(){const t=this.element.querySelector(".selected");t&&this.scrollTo(t)}gotoNode(t){if(!this.editor)return;const e=Be(t),n=function(t){return t.spans.length>0?t.spans[0].start.offset-1:0}(t);this.editor.setCursorBufferPosition([e,n])}getCursorLine(){return this.editor?this.editor.getLastCursor().getBufferRow():void 0}setNavTree(t){if(He(t),Ee.isEqual(t,this.props.navTree))return;let e;if(Ue(t,this.props.navTree),this.props.navTree=t,t){const n=this.getCursorLine();void 0!==n&&(e=$e(n,n,t))}this.selectedNode=e}scrollTo(t){const e=t;"function"==typeof e.scrollIntoViewIfNeeded?e.scrollIntoViewIfNeeded():e.scrollIntoView()}}class Ve{constructor(t){this.comp=new Ge({navTree:t.navTree})}static create(t){return Ve.instance||(Ve.instance=new Ve(t)),Ve.instance}get element(){return this.comp.element}async setGetClient(t){await this.comp.setGetClient(t),await this.comp.update({})}getTitle(){return"TypeScript"}getURI(){return"atom-typescript://semantic-view"}async destroy(){Ve.instance=null,await this.comp.destroy()}getDefaultLocation(){return"right"}getAllowedLocations(){return["left","right"]}serialize(){return{deserializer:"atomts-semantic-view/SemanticView",data:{navTree:this.comp.props.navTree}}}}Ve.instance=null;var We,Xe=a,Ke=w,Qe=o;We=function(t,e){return Ze(t,e)};var Ze=function(t,e){return t?Ye(t,e):new Je(e)};We.createStream=Ze;function Ye(t,e){if(!t)throw new Error("expected readStream");if(!t.readable)throw new Error("readStream must be readable");var n=new Je(e);return t.pipe(n),n}function Je(t){Xe.Transform.call(this,t),t=t||{},this._readableState.objectMode=!0,this._lineBuffer=[],this._keepEmptyLines=t.keepEmptyLines||!1,this._lastChunkEndedWithCR=!1;var e=this;this.on("pipe",(function(t){e.encoding||t instanceof Xe.Readable&&(e.encoding=t._readableState.encoding)}))}We.createLineStream=function(t){return console.log("WARNING: byline#createLineStream is deprecated and will be removed soon"),Ye(t)},We.LineStream=Je,Ke.inherits(Je,Xe.Transform),Je.prototype._transform=function(t,e,n){e=e||"utf8",Buffer.isBuffer(t)&&("buffer"==e?(t=t.toString(),e="utf8"):t=t.toString(e)),this._chunkEncoding=e;var r=t.split(/\r\n|[\n\v\f\r\x85\u2028\u2029]/g);this._lastChunkEndedWithCR&&"\n"==t[0]&&r.shift(),this._lineBuffer.length>0&&(this._lineBuffer[this._lineBuffer.length-1]+=r[0],r.shift()),this._lastChunkEndedWithCR="\r"==t[t.length-1],this._lineBuffer=this._lineBuffer.concat(r),this._pushBuffer(e,1,n)},Je.prototype._pushBuffer=function(t,e,n){for(;this._lineBuffer.length>e;){var r=this._lineBuffer.shift();if((this._keepEmptyLines||r.length>0)&&!this.push(this._reencode(r,t))){var i=this;return void Qe.setImmediate((function(){i._pushBuffer(t,e,n)}))}}n()},Je.prototype._flush=function(t){this._pushBuffer(this._chunkEncoding,0,t)},Je.prototype._reencode=function(t,e){return this.encoding&&this.encoding!=e?new Buffer(t,e).toString(this.encoding):this.encoding?t:new Buffer(t,e)};class tn{constructor(t){this.reportBusyWhile=t,this.callbacks=new Map,this.interval=0}async add(t,e){try{const n=new Promise(((n,r)=>{this.callbacks.set(t,{command:e,resolve:n,reject:r,started:Date.now()})}));return 0===this.interval&&(this.interval=window.setInterval((()=>{process.activateUvLoop()}),100)),await this.reportBusyWhile(e,(()=>n))}finally{this.callbacks.delete(t),0!==this.interval&&0===this.callbacks.size&&(clearInterval(this.interval),this.interval=0)}}rejectAll(t){for(const{reject:e}of this.callbacks.values())e(t);this.callbacks.clear()}resolve(t){const e=this.callbacks.get(t.request_seq);e?(window.atom_typescript_debug&&console.log("received response for",t.command,"in",Date.now()-e.started,"ms","with data",t.body),t.success?e.resolve(t):e.reject(new Error(t.message))):console.warn("unexpected response:",t)}resolveMS(t){const e=this.callbacks.get(t.request_seq);e?(window.atom_typescript_debug&&console.log(`received requestCompleted event for multistep command ${e.command} in ${Date.now()-e.started} ms`),e.resolve(void 0)):console.warn("unexpected requestCompleted event:",t)}error(t,e){const n=this.callbacks.get(t);n?n.reject(e):console.error(e)}}const en=new Set(Object.keys({compileOnSaveAffectedFileList:!0,compileOnSaveEmitFile:!0,completionEntryDetails:!0,completions:!0,completionInfo:!0,configure:!0,definition:!0,format:!0,getCodeFixes:!0,getSupportedCodeFixes:!0,documentHighlights:!0,projectInfo:!0,quickinfo:!0,references:!0,reload:!0,rename:!0,navtree:!0,navto:!0,getApplicableRefactors:!0,getEditsForRefactor:!0,organizeImports:!0,signatureHelp:!0,getEditsForFileRename:!0,applyCodeActionCommand:!0})),nn=new Set(Object.keys({geterr:!0,geterrForProject:!0})),rn=new Set(Object.keys({configFileDiag:!0,semanticDiag:!0,suggestionDiag:!0,syntaxDiag:!0}));class on{constructor(t,e,n){this.tsServerPath=t,this.version=e,this.reportBusyWhile=n,this.emitter=new h,this.seq=0,this.lastStderrOutput="",this.on=this.emitter.on.bind(this.emitter),this.exitHandler=(t,e=!0)=>{if(this.callbacks.rejectAll(t),e&&console.error("tsserver: ",t),this.server=void 0,this.emitter.emit("terminated"),e){let e=t.message;this.lastStderrOutput&&(e=`Last output from tsserver:\n${this.lastStderrOutput}\n\n${e}`),atom.notifications.addError("TypeScript server quit unexpectedly",{detail:e,stack:t.stack,dismissable:!0})}},this.onMessage=t=>{"response"===t.type?this.callbacks.resolve(t):this.onEvent(t)};const[r,i]=e.split(".").slice(0,2).map((t=>parseInt(t,10)));this.multistepSupported=r>2||2===r&&i>=2,this.callbacks=new tn(this.reportBusyWhile),this.server=this.startServer()}async execute(t,...e){this.server||(this.server=this.startServer(),this.emitter.emit("restarted"));const n={seq:this.seq++,command:t,arguments:e[0]};window.atom_typescript_debug&&console.log("sending request",n);let r=void 0;(function(t){return en.has(t)}(t)||this.multistepSupported&&function(t){return nn.has(t)}(t))&&(r=this.callbacks.add(n.seq,t));try{if(!this.server.stdin)throw new Error("Server stdin is missing");this.server.stdin.write(JSON.stringify(n)+"\n")}catch(t){this.callbacks.error(n.seq,t)}return r}async restartServer(){if(this.server){const t=this.server,e=setTimeout((()=>t.kill()),1e4);await Promise.all([this.execute("exit"),new Promise((t=>{const e=this.emitter.once("terminated",(()=>{e.dispose(),t()}))}))]),clearTimeout(e)}this.server||(this.server=this.startServer(),this.emitter.emit("restarted"))}startServer(){window.atom_typescript_debug&&console.log("starting",this.tsServerPath);const t=function(t){const e=atom.config.get("atom-typescript").locale,n=e?["--locale",e]:[];return new d({command:t,args:n}).process}(this.tsServerPath);if(!t)throw new Error("ChildProcess failed to start");const e=this.exitHandler;if(t.once("error",e),t.once("exit",((t,n)=>{0===t?e(new Error("Server stopped normally"),!1):null!==t?e(new Error("exited with code: "+t)):null!==n&&e(new Error("terminated on signal: "+n))})),!t.stdout)throw new Error("ChildProcess stdout missing");if(!t.stderr)throw new Error("ChildProcess stderr missing");var n;return(n=t.stdout,n.pipe(an()).pipe(new cn)).on("data",this.onMessage),t.stderr.on("data",(t=>{console.warn("tsserver stderr:",this.lastStderrOutput=t.toString())})),t}onEvent(t){var e;window.atom_typescript_debug&&console.log("received event",t),t.body&&(e=t.event,rn.has(e)?this.emitter.emit(t.event,t.body):"requestCompleted"===t.event&&this.callbacks.resolveMS(t.body))}}var sn,an=x(We);class cn extends c{constructor(){super({objectMode:!0})}_transform(t,e,n){const r=t.toString();try{r.startsWith("{")?this.push(JSON.parse(r)):r.startsWith("Content-Length:")||console.warn(r)}catch(t){console.error("client: failed to parse: ",r)}finally{n(void 0)}}}function un(t,e){void 0===e&&(e=!1);var n=t.length,r=0,i="",o=0,s=16,a=0,c=0,u=0,l=0,f=0;function p(e,n){for(var i=0,o=0;i=48&&s<=57)o=16*o+s-48;else if(s>=65&&s<=70)o=16*o+s-65+10;else{if(!(s>=97&&s<=102))break;o=16*o+s-97+10}r++,i++}return i=n)return o=n,s=17;var e=t.charCodeAt(r);if(ln(e)){do{r++,i+=String.fromCharCode(e),e=t.charCodeAt(r)}while(ln(e));return s=15}if(fn(e))return r++,i+=String.fromCharCode(e),13===e&&10===t.charCodeAt(r)&&(r++,i+="\n"),a++,u=r,s=14;switch(e){case 123:return r++,s=1;case 125:return r++,s=2;case 91:return r++,s=3;case 93:return r++,s=4;case 58:return r++,s=6;case 44:return r++,s=5;case 34:return r++,i=function(){for(var e="",i=r;;){if(r>=n){e+=t.substring(i,r),f=2;break}var o=t.charCodeAt(r);if(34===o){e+=t.substring(i,r),r++;break}if(92!==o){if(o>=0&&o<=31){if(fn(o)){e+=t.substring(i,r),f=2;break}f=6}r++}else{if(e+=t.substring(i,r),++r>=n){f=2;break}switch(t.charCodeAt(r++)){case 34:e+='"';break;case 92:e+="\\";break;case 47:e+="/";break;case 98:e+="\b";break;case 102:e+="\f";break;case 110:e+="\n";break;case 114:e+="\r";break;case 116:e+="\t";break;case 117:var s=p(4,!0);s>=0?e+=String.fromCharCode(s):f=4;break;default:f=5}i=r}}return e}(),s=10;case 47:var h=r-1;if(47===t.charCodeAt(r+1)){for(r+=2;r=12&&t<=15);return t}:h,getToken:function(){return s},getTokenValue:function(){return i},getTokenOffset:function(){return o},getTokenLength:function(){return r-o},getTokenStartLine:function(){return c},getTokenStartCharacter:function(){return o-l},getTokenError:function(){return f}}}function ln(t){return 32===t||9===t||11===t||12===t||160===t||5760===t||t>=8192&&t<=8203||8239===t||8287===t||12288===t||65279===t}function fn(t){return 10===t||13===t||8232===t||8233===t}function pn(t){return t>=48&&t<=57}(sn||(sn={})).DEFAULT={allowTrailingComma:!1};var hn,dn,mn=function(t,e,n){void 0===e&&(e=[]),void 0===n&&(n=sn.DEFAULT);var r=null,i=[],o=[];function s(t){Array.isArray(i)?i.push(t):null!==r&&(i[r]=t)}return function(t,e,n){void 0===n&&(n=sn.DEFAULT);var r=un(t,!1);function i(t){return t?function(){return t(r.getTokenOffset(),r.getTokenLength(),r.getTokenStartLine(),r.getTokenStartCharacter())}:function(){return!0}}function o(t){return t?function(e){return t(e,r.getTokenOffset(),r.getTokenLength(),r.getTokenStartLine(),r.getTokenStartCharacter())}:function(){return!0}}var s=i(e.onObjectBegin),a=o(e.onObjectProperty),c=i(e.onObjectEnd),u=i(e.onArrayBegin),l=i(e.onArrayEnd),f=o(e.onLiteralValue),p=o(e.onSeparator),h=i(e.onComment),d=o(e.onError),m=n&&n.disallowComments,g=n&&n.allowTrailingComma;function v(){for(;;){var t=r.scan();switch(r.getTokenError()){case 4:y(14);break;case 5:y(15);break;case 3:y(13);break;case 1:m||y(11);break;case 2:y(12);break;case 6:y(16)}switch(t){case 12:case 13:m?y(10):h();break;case 16:y(1);break;case 15:case 14:break;default:return t}}}function y(t,e,n){if(void 0===e&&(e=[]),void 0===n&&(n=[]),d(t),e.length+n.length>0)for(var i=r.getToken();17!==i;){if(-1!==e.indexOf(i)){v();break}if(-1!==n.indexOf(i))break;i=v()}}function w(t){var e=r.getTokenValue();return t?f(e):a(e),v(),!0}function b(){switch(r.getToken()){case 11:var t=r.getTokenValue(),e=Number(t);isNaN(e)&&(y(2),e=0),f(e);break;case 7:f(null);break;case 8:f(!0);break;case 9:f(!1);break;default:return!1}return v(),!0}function E(){return 10!==r.getToken()?(y(3,[],[2,5]),!1):(w(!1),6===r.getToken()?(p(":"),v(),x()||y(4,[],[2,5])):y(5,[],[2,5]),!0)}function _(){s(),v();for(var t=!1;2!==r.getToken()&&17!==r.getToken();){if(5===r.getToken()){if(t||y(4,[],[]),p(","),v(),2===r.getToken()&&g)break}else t&&y(6,[],[]);E()||y(4,[],[2,5]),t=!0}return c(),2!==r.getToken()?y(7,[2],[]):v(),!0}function S(){u(),v();for(var t=!1;4!==r.getToken()&&17!==r.getToken();){if(5===r.getToken()){if(t||y(4,[],[]),p(","),v(),4===r.getToken()&&g)break}else t&&y(6,[],[]);x()||y(4,[],[4,5]),t=!0}return l(),4!==r.getToken()?y(8,[4],[]):v(),!0}function x(){switch(r.getToken()){case 3:return S();case 1:return _();case 10:return w(!0);default:return b()}}if(v(),17===r.getToken())return!!n.allowEmptyContent||(y(4,[],[]),!1);if(!x())return y(4,[],[]),!1;17!==r.getToken()&&y(9,[],[])}(t,{onObjectBegin:function(){var t={};s(t),o.push(i),i=t,r=null},onObjectProperty:function(t){r=t},onObjectEnd:function(){i=o.pop()},onArrayBegin:function(){var t=[];s(t),o.push(i),i=t,r=null},onArrayEnd:function(){i=o.pop()},onLiteralValue:s,onError:function(t,n,r){e.push({error:t,offset:n,length:r})}},n),i[0]},gn=E,vn=v;dn=function(){var t=Error.prepareStackTrace;Error.prepareStackTrace=function(t,e){return e};var e=(new Error).stack;return Error.prepareStackTrace=t,e[2].getFileName()};var yn,wn,bn,En,_n,Sn,xn,kn,Tn,In,An=v,Cn=!1;function On(){wn={},bn="win32"===process.platform,En=/^([a-zA-Z]:|[\\\/]{2}[^\\\/]+[\\\/]+[^\\\/]+)?([\\\/])?([\s\S]*?)$/,_n=/^([\s\S]*?)((?:\.{1,2}|[^\\\/]+?|)(\.[^.\/\\]*|))(?:[\\\/]*)$/,(Sn={}).parse=function(t){if("string"!=typeof t)throw new TypeError("Parameter 'pathString' must be a string, not "+typeof t);var e,n,r,i,o,s=(e=t,n=En.exec(e),r=(n[1]||"")+(n[2]||""),i=n[3]||"",o=_n.exec(i),[r,o[1],o[2],o[3]]);if(!s||4!==s.length)throw new TypeError("Invalid path '"+t+"'");return{root:s[0],dir:s[0]+s[1].slice(0,-1),base:s[2],ext:s[3],name:s[2].slice(0,s[2].length-s[3].length)}},xn=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/,(kn={}).parse=function(t){if("string"!=typeof t)throw new TypeError("Parameter 'pathString' must be a string, not "+typeof t);var e,n=(e=t,xn.exec(e).slice(1));if(!n||4!==n.length)throw new TypeError("Invalid path '"+t+"'");return n[1]=n[1]||"",n[2]=n[2]||"",n[3]=n[3]||"",{root:n[0],dir:n[0]+n[1].slice(0,-1),base:n[2],ext:n[3],name:n[2].slice(0,n[2].length-n[3].length)}},wn=bn?Sn.parse:kn.parse,Tn=kn.parse,wn.posix=Tn,In=Sn.parse,wn.win32=In}var Pn=An.parse||(Cn||(Cn=!0,On()),wn),Nn=function(t,e){var n="/";/^([A-Za-z]:)/.test(t)?n="":/^\\\\/.test(t)&&(n="\\\\");for(var r=[t],i=Pn(t);i.dir!==r[r.length-1];)r.push(i.dir),i=Pn(i.dir);return r.reduce((function(t,r){return t.concat(e.map((function(t){return An.resolve(n,r,t)})))}),[])};yn=function(t,e,n){var r=e&&e.moduleDirectory?[].concat(e.moduleDirectory):["node_modules"];if(e&&"function"==typeof e.paths)return e.paths(n,t,(function(){return Nn(t,r)}),e);var i=Nn(t,r);return e&&e.paths?i.concat(e.paths):i};var Ln;Ln=function(t,e){return e||{}};var Rn,jn,Dn=process.versions&&process.versions.node&&process.versions.node.split(".")||[];function Fn(t){for(var e=t.split(" "),n=e.length>1?e[0]:"=",r=(e.length>1?e[1]:e[0]).split("."),i=0;i<3;++i){var o=Number(Dn[i]||0),s=Number(r[i]||0);if(o!==s)return"<"===n?o="===n&&o>=s}return">="===n}function Mn(t){var e=t.split(/ ?&& ?/);if(0===e.length)return!1;for(var n=0;n= 8","buffer_ieee754":"< 0.9.7","buffer":true,"child_process":true,"cluster":true,"console":true,"constants":true,"crypto":true,"_debug_agent":">= 1 && < 8","_debugger":"< 8","dgram":true,"dns":true,"domain":true,"events":true,"freelist":"< 6","fs":true,"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":true,"http2":">= 8.8","https":true,"inspector":">= 8.0.0","_linklist":"< 8","module":true,"net":true,"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":true,"path":true,"perf_hooks":">= 8.5","process":">= 1","punycode":true,"querystring":true,"readline":true,"repl":true,"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":true,"string_decoder":true,"sys":true,"timers":true,"_tls_common":">= 0.11.13","_tls_legacy":">= 0.11.3 && < 10","_tls_wrap":">= 0.11.3","tls":true,"trace_events":">= 10","tty":true,"url":true,"util":true,"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":true,"wasi":">= 13.4 && < 13.5","worker_threads":">= 11.7","zlib":true}');var zn={};for(var Un in Bn)Object.prototype.hasOwnProperty.call(Bn,Un)&&(zn[Un]=$n(Bn[Un]));jn=zn,Rn=function(t){return Object.prototype.hasOwnProperty.call(jn,t)};var Hn=gn.realpath&&"function"==typeof gn.realpath.native?gn.realpath.native:gn.realpath,qn=function(t,e){gn.stat(t,(function(t,n){return t?"ENOENT"===t.code||"ENOTDIR"===t.code?e(null,!1):e(t):e(null,n.isFile()||n.isFIFO())}))},Gn=function(t,e){gn.stat(t,(function(t,n){return t?"ENOENT"===t.code||"ENOTDIR"===t.code?e(null,!1):e(t):e(null,n.isDirectory())}))},Vn=function(t,e){Hn(t,(function(n,r){n&&"ENOENT"!==n.code?e(n):e(null,n?t:r)}))},Wn=function(t,e,n,r){n&&!1===n.preserveSymlinks?t(e,r):r(null,e)};(hn=function(t,e,n){var r=n,i=e;if("function"==typeof e&&(r=i,i={}),"string"!=typeof t){var o=new TypeError("Path must be a string.");return process.nextTick((function(){r(o)}))}var s=(i=Ln(0,i)).isFile||qn,a=i.isDirectory||Gn,c=i.readFile||gn.readFile,u=i.realpath||Vn,l=i.packageIterator,f=i.extensions||[".js"],p=i.basedir||vn.dirname(dn()),h=i.filename||p;i.paths=i.paths||[];var d,m=vn.resolve(p);function g(e,n,o){e?r(e):n?r(null,n,o):w(d,(function(e,n,o){if(e)r(e);else if(n)Wn(u,n,i,(function(t,e){t?r(t):r(null,e,o)}));else{var s=new Error("Cannot find module '"+t+"' from '"+h+"'");s.code="MODULE_NOT_FOUND",r(s)}}))}function v(t,e,n){var r=e,o=n;"function"==typeof r&&(o=r,r=void 0),function t(e,n,r){if(0===e.length)return o(null,void 0,r);var a=n+e[0],c=r;c?u(null,c):y(vn.dirname(a),u);function u(r,u,p){if(c=u,r)return o(r);if(p&&c&&i.pathFilter){var h=vn.relative(p,a),d=h.slice(0,h.length-e[0].length),m=i.pathFilter(c,n,d);if(m)return t([""].concat(f.slice()),vn.resolve(p,m),c)}s(a,l)}function l(r,i){return r?o(r):i?o(null,a,c):void t(e.slice(1),n,c)}}([""].concat(f),t,r)}function y(t,e){return""===t||"/"===t||"win32"===process.platform&&/^\w:[/\\]*$/.test(t)||/[/\\]node_modules[/\\]*$/.test(t)?e(null):void Wn(u,t,i,(function(n,r){if(n)return y(vn.dirname(t),e);var o=vn.join(r,"package.json");s(o,(function(n,r){if(!r)return y(vn.dirname(t),e);c(o,(function(n,r){n&&e(n);try{var s=JSON.parse(r)}catch(t){}s&&i.packageFilter&&(s=i.packageFilter(s,o)),e(null,s,t)}))}))}))}function w(t,e,n){var r=n,o=e;"function"==typeof o&&(r=o,o=i.package),Wn(u,t,i,(function(e,n){if(e)return r(e);var a=vn.join(n,"package.json");s(a,(function(e,n){return e?r(e):n?void c(a,(function(e,n){if(e)return r(e);try{var o=JSON.parse(n)}catch(t){}if(o&&i.packageFilter&&(o=i.packageFilter(o,a)),o&&o.main){if("string"!=typeof o.main){var s=new TypeError("package “"+o.name+"” `main` must be a string");return s.code="INVALID_PACKAGE_MAIN",r(s)}return"."!==o.main&&"./"!==o.main||(o.main="index"),void v(vn.resolve(t,o.main),o,(function(e,n,i){return e?r(e):n?r(null,n,i):i?void w(vn.resolve(t,i.main),i,(function(e,n,i){return e?r(e):n?r(null,n,i):void v(vn.join(t,"index"),i,r)})):v(vn.join(t,"index"),i,r)}))}v(vn.join(t,"/index"),o,r)})):v(vn.join(t,"index"),o,r)}))}))}function b(t,e){if(0===e.length)return t(null,void 0);var n=e[0];function r(e,r,s){return e?t(e):r?t(null,r,s):void w(n,i.package,o)}function o(n,r,i){return n?t(n):r?t(null,r,i):void b(t,e.slice(1))}a(vn.dirname(n),(function(o,s){if(o)return t(o);if(!s)return b(t,e.slice(1));v(n,i.package,r)}))}Wn(u,m,i,(function(e,n){e?r(e):function(e){if(/^(?:\.\.?(?:\/|$)|\/|([A-Za-z]:)?[/\\])/.test(t))d=vn.resolve(e,t),"."!==t&&".."!==t&&"/"!==t.slice(-1)||(d+="/"),/\/$/.test(t)&&d===e?w(d,i.package,g):v(d,i.package,g);else{if(Rn(t))return r(null,t);!function(t,e,n){var r=function(){return function(t,e,n){for(var r=yn(e,n,t),i=0;inr(t,e,((t,e)=>{t?r(t):n(e)}))))}("typescript/lib/"+r,{basedir:v.dirname(t),paths:void 0!==n?n.split(v.delimiter):void 0}).catch((async()=>{const e=await async function(t){const e=await async function(t){let e=t,n=v.dirname(e);for(;e!==n;){const t=await ir(e,[[".atom-typescript.json"],[".atom","atom-typescript.json"],[".vscode","settings.json"]]);if(void 0!==t)return{basedir:e,configFile:t};e=n,n=v.dirname(e)}}(t);if(e)try{const t=mn(await async function(t){return new Promise(((e,n)=>E.readFile(t,((t,r)=>{t?n(t):e(r.toString("utf-8"))}))))}(e.configFile));let r;if("object"==typeof(n=t)&&null!==n&&"string"==typeof n.tsdkPath)r=t.tsdkPath;else{if(!function(t){return"object"==typeof t&&null!==t&&"string"==typeof t["typescript.tsdk"]}(t))return;r=v.dirname(t["typescript.tsdk"])}return v.isAbsolute(r)?r:v.join(e.basedir,r)}catch(t){console.warn(t)}var n}(v.dirname(t));if(void 0!==e){const t=v.join(e,"lib",r);if(await rr(t))return t}const n=atom.config.get("atom-typescript.tsdkPath");if(n){const t=v.join(n,"lib",r);if(await rr(t))return t}return require.resolve("typescript/lib/"+r)})),o=v.resolve(i,"../../package.json");return{version:require(o).version,pathToBin:i}}hn.sync=function(t,e){if("string"!=typeof t)throw new TypeError("Path must be a string.");var n=Ln(0,e),r=n.isFile||Zn,i=n.readFileSync||Xn.readFileSync,o=n.isDirectory||Yn,s=n.realpathSync||Jn,a=n.packageIterator,c=n.extensions||[".js"],u=n.basedir||Kn.dirname(dn()),l=n.filename||u;n.paths=n.paths||[];var f=tr(s,Kn.resolve(u),n);if(/^(?:\.\.?(?:\/|$)|\/|([A-Za-z]:)?[/\\])/.test(t)){var p=Kn.resolve(f,t);"."!==t&&".."!==t&&"/"!==t.slice(-1)||(p+="/");var h=g(p)||y(p);if(h)return tr(s,h,n)}else{if(Rn(t))return t;var d=function(t,e){for(var r=function(){return function(t,e,n){for(var r=yn(e,n,t),i=0;iE.access(t,E.constants.F_OK,(t=>{e(!t)}))))}async function ir(t,e){for(const n of e){const e=v.join(t,...n);if(await rr(e))return e}}class or{constructor(t){this.reportBusyWhile=t,this.clients=new Map,this.memoizedClients=new Map,this.emitter=new h,this.subscriptions=new p,this.tsserverInstancePerTsconfig=atom.config.get("atom-typescript").tsserverInstancePerTsconfig,this.on=this.emitter.on.bind(this.emitter),this.diagnosticHandler=(t,e)=>n=>{const r=(i=n)&&i.triggerFile&&i.configFile?n.configFile:n.file;var i;r&&this.emitter.emit("diagnostics",{type:e,serverPath:t,filePath:r,diagnostics:n.diagnostics})}}async restartAllServers(){await this.reportBusyWhile("Restarting servers",(()=>Promise.all(Array.from(this.getAllClients()).map((t=>t.restartServer())))))}async get(t){const e=this.memoizedClients.get(t);if(e)return e;const n=this._get(t);this.memoizedClients.set(t,n);try{return await n}catch(e){throw this.memoizedClients.delete(t),e}}dispose(){this.emitter.dispose(),this.subscriptions.dispose(),this.memoizedClients.clear(),this.clients.clear()}async _get(t){const{pathToBin:e,version:n}=await er(t,"tsserver"),r=this.tsserverInstancePerTsconfig?u.findConfigFile(t,(t=>u.sys.fileExists(t))):void 0;let i=this.clients.get(e);i||(i=new Map,this.clients.set(e,i));const o=i.get(r);if(o)return o;const s=new on(e,n,this.reportBusyWhile);return i.set(r,s),this.subscriptions.add(s.on("configFileDiag",this.diagnosticHandler(e,"configFileDiag")),s.on("semanticDiag",this.diagnosticHandler(e,"semanticDiag")),s.on("syntaxDiag",this.diagnosticHandler(e,"syntaxDiag")),s.on("suggestionDiag",this.diagnosticHandler(e,"suggestionDiag"))),s}*getAllClients(){for(const t of this.clients.values())yield*t.values()}}function sr(t){return{grammarScopes:Re(),priority:100,async highlight(e,n){if(!je(e))return;const r=Fe(e,n);if(!r)return;const i=await t(r.file),o=await i.execute("documentHighlights",{...r,filesToSearch:[r.file]});return o.body?Array.from(function*(t,e){for(const n of e)n.file===t&&(yield*n.highlightSpans.map(ke))}(r.file,o.body)):void 0}}}async function ar(t,e,n){if(void 0===t)return null;const r=e.dom("div",{className:"atom-typescript-datatip-tooltip-kind"},t.kind,function(t,e){return void 0===e?null:t.dom("span",{className:"atom-typescript-datatip-tooltip-kind-modifiers"},e)}(t.kindModifiers)),i=t.tags?t.tags.map((t=>{const n="atom-typescript-datatip-tooltip-doc-tag atom-typescript-datatip-tooltip-doc-tag-name-"+t.name;return e.dom("div",{className:n},e.dom("span",{className:"atom-typescript-datatip-tooltip-doc-tag-name"},t.name),function(t,e){if(void 0===e)return null;const[,n,r]=/^\s*(\S*)([^]*)$/.exec(e);return t.dom("span",{className:"atom-typescript-datatip-tooltip-doc-tag-text"},t.dom("span",{className:"atom-typescript-datatip-tooltip-doc-tag-text-first-word"},n),r)}(e,t.text))})):null,o=e.dom("div",{className:"atom-typescript-datatip-tooltip-doc"},t.documentation,i),s=t.displayString.replace(/^\(.+?\)\s+/,"");return[await n(s),r,o]}const cr=Symbol.for("react.element"),ur={dom:(t,e,...n)=>n.length>0?{$$typeof:cr,type:t,ref:null,props:{...e,children:n}}:{$$typeof:cr,type:t,ref:null,props:{...e}}};class lr{constructor(t){this.getClient=t,this.providerName="TypeScript type tooltips",this.priority=100,this.grammarScopes=Re()}async datatip(t,e){try{const n=t.getPath();if(void 0===n)return;const r=await this.getClient(n),i=(await r.execute("quickinfo",{file:n,line:e.row+1,offset:e.column+1})).body,o=await ar(i,ur,fr);return{component:()=>ur.dom("div",{className:"atom-typescript-datatip-tooltip"},o),range:f.Range.fromObject([xe(i.start),xe(i.end)])}}catch(t){return}}}async function fr(t){const e=atom.config.get("editor.fontFamily"),n=await Me(t.replace(/\r?\n$/,""),"source.ts");return ur.dom("div",{style:{fontFamily:e},className:"atom-typescript-datatip-tooltip-code",dangerouslySetInnerHTML:{__html:n.join("\n")}})}function pr(t){const e=ke(t);return{path:t.file,position:e.start,range:e,language:"TypeScript"}}function hr(t){return{uri:t.file,range:Te(t.start,t.end),name:void 0}}class dr{constructor(t){this.props=t,Ft.initialize(this)}async update(t){return this.props={...this.props,...t},Ft.update(this)}render(){const t={fontFamily:atom.config.get("editor.fontFamily")};return Ft.dom("div",{className:"editor editor-colors",style:t,innerHTML:this.props.highlightedText})}}var mr,gr,vr,yr={},wr=!1;function br(){return wr||(wr=!0,function(){var t,e;t=v.sep,mr=function(e,n,r){var i,o,s,a,c;for(o=e.length-1;e[o]===t;)o--;for(c=0,s=o,i=null;o>=0;)e[o]===t?(c++,null==i&&(i=e.substring(o+1,s+1))):0===o&&(s0&&f.push({candidate:a,score:l}));f.sort(n),r=f.map(t)}return null!=u&&(r=r.slice(0,u)),r}}.call(Er={})),Er}var xr,kr,Tr,Ir=!1;function Ar(){return Ir||(Ir=!0,function(){var t;t=v.sep,xr=function(e,n){var r,i,o;for(i=e.length-1;e[i]===t;)i--;for(o=i,r=null;i>=0;)e[i]===t?null==r&&(r=e.substring(i+1,o+1)):0===i&&(or;n<=r?e++:e--)p.push(e);return p}.apply(this);for(u=e.length,l=t.length,i=0,o=0,a=[];ie;0<=e?t++:t--)l.push(t);return l}.apply(this);if(c=-1!==i.indexOf(t),i=i.replace(e,""),a=r.match(n,i),!c)for(o=r.basenameMatch(n,i),a=a.concat(o).sort((function(t,e){return t-e})),u=null,s=0;sFt.dom("span",{className:t.type},t.text))))}match(t){return t.query?function(t,e){let n=0,r=[];const i=[],o=yr.match(t,e);let s;for(s of o){if(s<0)continue;const e=t.substring(n,s);e&&(r.length>0&&i.push({text:r.join(""),type:"character-match"}),r=[],i.push({text:e})),r.push(t[s]),n=s+1}r.length>0&&i.push({text:r.join(""),type:"character-match"});return i.push({text:t.substring(n)}),i}(t.label,t.query):[{text:t.label}]}}var Or;const{Disposable:Pr,CompositeDisposable:Nr,TextEditor:Lr}=f;var Rr,jr,Dr={};jr={onCopy:"copy",onCut:"cut",onPaste:"paste",onCompositionEnd:"compositionend",onCompositionStart:"compositionstart",onCompositionUpdate:"compositionupdate",onKeyDown:"keydown",onKeyPress:"keypress",onKeyUp:"keyup",onFocus:"focus",onBlur:"blur",onChange:"change",onInput:"input",onSubmit:"submit",onClick:"click",onContextMenu:"contextmenu",onDoubleClick:"dblclick",onDrag:"drag",onDragEnd:"dragend",onDragEnter:"dragenter",onDragExit:"dragexit",onDragLeave:"dragleave",onDragOver:"dragover",onDragStart:"dragstart",onDrop:"drop",onMouseDown:"mousedown",onMouseEnter:"mouseenter",onMouseLeave:"mouseleave",onMouseMove:"mousemove",onMouseOut:"mouseout",onMouseOver:"mouseover",onMouseUp:"mouseup",onSelect:"select",onTouchCancel:"touchcancel",onTouchEnd:"touchend",onTouchMove:"touchmove",onTouchStart:"touchstart",onScroll:"scroll",onWheel:"wheel",onAbort:"abort",onCanPlay:"canplay",onCanPlayThrough:"canplaythrough",onDurationChange:"durationchange",onEmptied:"emptied",onEncrypted:"encrypted",onEnded:"ended",onError:"error",onLoadedData:"loadeddata",onLoadedMetadata:"loadedmetadata",onLoadStart:"loadstart",onPause:"pause",onPlay:"play",onPlaying:"playing",onProgress:"progress",onRateChange:"ratechange",onSeeked:"seeked",onSeeking:"seeking",onStalled:"stalled",onSuspend:"suspend",onTimeUpdate:"timeupdate",onVolumeChange:"volumechange",onWaiting:"waiting",onLoad:"load",onAnimationStart:"animationstart",onAnimationEnd:"animationend",onAnimationIteration:"animationiteration",onTransitionEnd:"transitionend"};var Fr={};function Mr(t,e,...n){for(let t=0;tMr(t,e,...n);for(const t of Fr)Mr[t]=(e,...n)=>Mr(t,e,...n);Rr=Mr;var Br,zr={},Ur={};Ur=new Map([["accentHeight","accent-height"],["alignmentBaseline","alignment-baseline"],["arabicForm","arabic-form"],["baselineShift","baseline-shift"],["capHeight","cap-height"],["className","class"],["clipPath","clip-path"],["clipRule","clip-rule"],["colorInterpolation","color-interpolation"],["colorInterpolationFilters","color-interpolation-filters"],["colorProfile","color-profile"],["colorRendering","color-rendering"],["dominantBaseline","dominant-baseline"],["enableBackground","enable-background"],["fillOpacity","fill-opacity"],["fillRule","fill-rule"],["floodColor","flood-color"],["floodOpacity","flood-opacity"],["fontFamily","font-family"],["fontSize","font-size"],["fontSizeAdjust","font-size-adjust"],["fontStretch","font-stretch"],["fontStyle","font-style"],["fontVariant","font-variant"],["fontWeight","font-weight"],["glyphName","glyph-name"],["glyphOrientationHorizontal","glyph-orientation-horizontal"],["glyphOrientationVertical","glyph-orientation-vertical"],["horizAdvX","horiz-adv-x"],["horizOriginX","horiz-origin-x"],["letterSpacing","letter-spacing"],["lightingColor","lighting-color"],["markerEnd","marker-end"],["markerMid","marker-mid"],["markerStart","marker-start"],["overlinePosition","overline-position"],["overlineThickness","overline-thickness"],["panose1","panose-1"],["paintOrder","paint-order"],["pointerEvents","pointer-events"],["renderingIntent","rendering-intent"],["shapeRendering","shape-rendering"],["stopColor","stop-color"],["stopOpacity","stop-opacity"],["strikethroughPosition","strikethrough-position"],["strikethroughThickness","strikethrough-thickness"],["strokeDasharray","stroke-dasharray"],["strokeDashoffset","stroke-dashoffset"],["strokeLinecap","stroke-linecap"],["strokeLinejoin","stroke-linejoin"],["strokeMiterlimit","stroke-miterlimit"],["strokeOpacity","stroke-opacity"],["strokeWidth","stroke-width"],["textAnchor","text-anchor"],["textDecoration","text-decoration"],["textRendering","text-rendering"],["underlinePosition","underline-position"],["underlineThickness","underline-thickness"],["unicodeBidi","unicode-bidi"],["unicodeRange","unicode-range"],["unitsPerEm","units-per-em"],["vAlphabetic","v-alphabetic"],["vHanging","v-hanging"],["vIdeographic","v-ideographic"],["vMathematical","v-mathematical"],["vertAdvY","vert-adv-y"],["vertOriginX","vert-origin-x"],["vertOriginY","vert-origin-y"],["wordSpacing","word-spacing"],["writingMode","writing-mode"],["xHeight","x-height"]]);function Hr(t,e,n,r,i){if(n)for(var o in n)"ref"!==o&&"on"!==o&&(o in jr||i&&o in i||("dataset"===o?Hr(t.dataset,null,n&&n.dataset,null,null):"innerHTML"!==o&&e&&Fr.has(e.tag)?t.removeAttribute(Ur.get(o)||o):(t[o]="",delete t[o])));if(i)for(var o in i)if("ref"!==o&&"on"!==o&&!(o in jr)){var s=n&&n[o],a=i[o];"dataset"===o?qr(t.dataset,s,a,!1):"style"===o&&"string"!=typeof a?("string"==typeof s&&(t.style="",s=null),qr(t.style,s,a,!0)):"attributes"===o?Gr(t,s,a):a!==s&&("innerHTML"!==o&&r&&Fr.has(r.tag)?t.setAttribute(Ur.get(o)||o,a):r&&"input"===r.tag&&"value"===o&&t[o]===a||(t[o]=a))}}function qr(t,e,n,r){if(e)for(var i in e)n&&i in n||(r?t[i]="":delete t[i]);if(n)for(var i in n){const r=e&&e[i],o=n[i];o!==r&&(t[i]=o)}}function Gr(t,e,n){if(e)for(var r in e)n&&r in n||t.removeAttribute(r);if(n)for(var r in n){const i=e&&e[r],o=n[r];o!==i&&t.setAttribute(r,o)}}function Vr(t,e){let n;if(null!=t.text)n=document.createTextNode(t.text);else{const{tag:r,children:i}=t;let{props:o}=t;if("function"==typeof r){let s;o&&o.ref&&(s=o.ref);const a=new r(o||{},i);t.component=a,n=a.element,e&&e.refs&&s&&(e.refs[s]=a)}else Fr.has(r)?(n=document.createElementNS("http://www.w3.org/2000/svg",r),i&&Wr(n,i,e),o&&Br(n,null,t,e)):(n=document.createElement(r),i&&Wr(n,i,e),o&&Br(n,null,t,e))}return t.domNode=n,n}function Wr(t,e,n){for(let r=0;r0?(i=Zr.pop()).clear():i=new Map,ei(i,e,o,s));var h=ti(f),d=h?i.get(h):null;if(null==d)t.insertBefore(zr(f,r),a.domNode),f=n[++u];else{var m=e[d];Qr(m,f,r),e[d]=void 0,t.insertBefore(m.domNode,a.domNode),f=n[++u]}}else c=e[--s];else a=e[++o];if(o>s){var g=n[l+1]?n[l+1].domNode:null;for(let e=u;e<=l;e++)t.insertBefore(zr(n[e],r),g)}else if(u>l)for(let t=o;t<=s;t++){var v=e[t];v&&Yr(v,r&&r.refs)}i&&Zr.push(i)}(r,t.children,e.children,n),Br(r,t,e,n),i=r),e.domNode=i,i!==r&&r.parentNode&&r.parentNode.replaceChild(i,r),i}{const i=r.parentNode,o=r.nextSibling;Yr(t,n&&n.refs);const s=zr(e,n);return i&&i.insertBefore(s,o),e.domNode=s,s}}let Zr=[new Map,new Map,new Map,new Map];function Yr(t,e,n=!0){const{domNode:r,props:i,children:o,component:s}=t,a=i&&i.ref;if(s)e&&a&&e[a]===s&&delete e[a],s.destroy&&s.destroy();else if(e&&a&&e[a]===r&&delete e[a],o)for(let t=0;t{this.resolveNextUpdatePromise=t}))),this.nextUpdatePromise}performUpdates(){for(;this.updateRequests.length>0;)this.updateRequests.shift()();for(this.pendingAnimationFrame=null;this.readRequests.length>0;)this.readRequests.shift()();if(this.nextUpdatePromise){let t=this.resolveNextUpdatePromise;this.nextUpdatePromise=null,this.resolveNextUpdatePromise=null,t()}}};let ri=null;var ii=function(){return ri||(ri=new ni),ri};const oi=new WeakSet;let si=0,ai=0;function ci(t){return null!=t&&!1!==t}function ui(t,e=!0){if(!ci(t.virtualNode))throw new Error((t.constructor?t.constructor.name+" instance":t)+" is not associated with a valid virtualNode. Perhaps this component was never initialized?");if(null==t.element)throw new Error((t.constructor?t.constructor.name+" instance":t)+" is not associated with a DOM element. Perhaps this component was never initialized?");let n=t.render();if(!ci(n)){const e=t.constructor&&t.constructor.name?" in "+t.constructor.name:"";throw new Error("invalid falsy value "+n+" returned from render()"+e)}si++;let r=t.virtualNode,i=t.element,o=Kr(r,n,{refs:t.refs,listenerContext:t});if(t.virtualNode=n,o!==i&&!e)throw new Error("The root node type changed on update, but the update was performed with the replaceNode option set to false");t.element=o,"function"==typeof t.writeAfterUpdate&&t.writeAfterUpdate(),"function"==typeof t.readAfterUpdate&&ii().readDocument((function(){t.readAfterUpdate()})),si--}function li(t,e=!0){ai++,fi(t.virtualNode),1===ai&&e&&t.element.remove(),ai--}function fi(t){t.component&&"function"==typeof t.component.destroy?t.component.destroy():t.children&&t.children.forEach(fi)}Xr={initialize:function(t){if("function"!=typeof t.update)throw new Error("Etch components must implement `update(props, children)`.");let e=t.render();if(!ci(e)){let n=t.constructor&&t.constructor.name?" in "+t.constructor.name:"";throw new Error("invalid falsy value "+e+" returned from render()"+n)}t.refs={},t.virtualNode=e,t.element=zr(t.virtualNode,{refs:t.refs,listenerContext:t})},update:function(t,e=!0){if(si>0)return ui(t,e),Promise.resolve();let n=ii();return oi.has(t)||(oi.add(t),n.updateDocument((function(){oi.delete(t),ui(t,e)}))),n.getNextUpdatePromise()},updateSync:ui,destroy:function(t,e=!0){if(si>0||ai>0)return li(t,e),Promise.resolve();let n=ii();return n.updateDocument((function(){li(t,e)})),n.getNextUpdatePromise()},destroySync:li};const{initialize:pi,update:hi,updateSync:di,destroy:mi,destroySync:gi}=Xr,vi=(Dr={dom:Rr,render:zr,initialize:pi,update:hi,updateSync:di,destroy:mi,destroySync:gi,setScheduler:function(t){ri=t},getScheduler:ii}).dom;Or=class{static setScheduler(t){Dr.setScheduler(t)}static getScheduler(t){return Dr.getScheduler()}constructor(t){this.props=t,this.props.hasOwnProperty("initialSelectionIndex")||(this.props.initialSelectionIndex=0),t.initiallyVisibleItemCount&&this.initializeVisibilityObserver(),this.computeItems(!1),this.disposables=new Nr,Dr.initialize(this),this.element.classList.add("select-list"),this.disposables.add(this.refs.queryEditor.onDidChange(this.didChangeQuery.bind(this))),t.skipCommandsRegistration||this.disposables.add(this.registerAtomCommands());const e=this.refs.queryEditor.element,n=this.didLoseFocus.bind(this);e.addEventListener("blur",n),this.didClickItemsList=!1,this.element.addEventListener("mousedown",(t=>{t.target===this.refs.items&&(this.didClickItemsList=!0)})),this.disposables.add(new Pr((()=>{e.removeEventListener("blur",n)})))}initializeVisibilityObserver(){this.visibilityObserver=new IntersectionObserver((t=>{for(const e of t)if(e.intersectionRatio>0){const t=e.target;this.visibilityObserver.unobserve(t);const n=Array.from(this.refs.items.children).indexOf(t);n>=0&&this.renderItemAtIndex(n)}}))}focus(){this.refs.queryEditor.element.focus()}didLoseFocus(t){this.didClickItemsList||this.element.contains(t.relatedTarget)?(this.didClickItemsList=!1,this.refs.queryEditor.element.focus()):document.hasFocus()&&this.cancelSelection()}reset(){this.refs.queryEditor.setText("")}destroy(){return this.disposables.dispose(),this.visibilityObserver&&this.visibilityObserver.disconnect(),Dr.destroy(this)}registerAtomCommands(){return T.atom.commands.add(this.element,{"core:move-up":t=>{this.selectPrevious(),t.stopPropagation()},"core:move-down":t=>{this.selectNext(),t.stopPropagation()},"core:move-to-top":t=>{this.selectFirst(),t.stopPropagation()},"core:move-to-bottom":t=>{this.selectLast(),t.stopPropagation()},"core:confirm":t=>{this.confirmSelection(),t.stopPropagation()},"core:cancel":t=>{this.cancelSelection(),t.stopPropagation()}})}update(t={}){let e=!1;return t.hasOwnProperty("items")&&(this.props.items=t.items,e=!0),t.hasOwnProperty("maxResults")&&(this.props.maxResults=t.maxResults,e=!0),t.hasOwnProperty("filter")&&(this.props.filter=t.filter,e=!0),t.hasOwnProperty("filterQuery")&&(this.props.filterQuery=t.filterQuery,e=!0),t.hasOwnProperty("query")&&(this.refs.queryEditor.setText(t.query),e=!1),t.hasOwnProperty("selectQuery")&&(t.selectQuery?this.refs.queryEditor.selectAll():this.refs.queryEditor.clearSelections()),t.hasOwnProperty("order")&&(this.props.order=t.order),t.hasOwnProperty("emptyMessage")&&(this.props.emptyMessage=t.emptyMessage),t.hasOwnProperty("errorMessage")&&(this.props.errorMessage=t.errorMessage),t.hasOwnProperty("infoMessage")&&(this.props.infoMessage=t.infoMessage),t.hasOwnProperty("loadingMessage")&&(this.props.loadingMessage=t.loadingMessage),t.hasOwnProperty("loadingBadge")&&(this.props.loadingBadge=t.loadingBadge),t.hasOwnProperty("itemsClassList")&&(this.props.itemsClassList=t.itemsClassList),t.hasOwnProperty("initialSelectionIndex")&&(this.props.initialSelectionIndex=t.initialSelectionIndex),e&&this.computeItems(),Dr.update(this)}render(){return vi.div({},vi(Lr,{ref:"queryEditor",mini:!0}),this.renderLoadingMessage(),this.renderInfoMessage(),this.renderErrorMessage(),this.renderItems())}renderItems(){if(this.items.length>0){const t=["list-group"].concat(this.props.itemsClassList||[]).join(" ");return this.visibilityObserver&&Dr.getScheduler().updateDocument((()=>{Array.from(this.refs.items.children).slice(this.props.initiallyVisibleItemCount).forEach((t=>{this.visibilityObserver.observe(t)}))})),this.listItems=this.items.map(((t,e)=>{const n=this.getSelectedItem()===t,r=!this.props.initiallyVisibleItemCount||ethis.didClickItem(e)})})),vi.ol({className:t,ref:"items"},...this.listItems)}return!this.props.loadingMessage&&this.props.emptyMessage?vi.span({ref:"emptyMessage"},this.props.emptyMessage):""}renderErrorMessage(){return this.props.errorMessage?vi.span({ref:"errorMessage"},this.props.errorMessage):""}renderInfoMessage(){return this.props.infoMessage?vi.span({ref:"infoMessage"},this.props.infoMessage):""}renderLoadingMessage(){return this.props.loadingMessage?vi.div({className:"loading"},vi.span({ref:"loadingMessage",className:"loading-message"},this.props.loadingMessage),this.props.loadingBadge?vi.span({ref:"loadingBadge",className:"badge"},this.props.loadingBadge):""):""}getQuery(){return this.refs&&this.refs.queryEditor?this.refs.queryEditor.getText():""}getFilterQuery(){return this.props.filterQuery?this.props.filterQuery(this.getQuery()):this.getQuery()}didChangeQuery(){this.props.didChangeQuery&&this.props.didChangeQuery(this.getFilterQuery()),this.computeItems()}didClickItem(t){this.selectIndex(t),this.confirmSelection()}computeItems(t){this.listItems=null,this.visibilityObserver&&this.visibilityObserver.disconnect();const e=this.props.filter||this.fuzzyFilter.bind(this);this.items=e(this.props.items.slice(),this.getFilterQuery()),this.props.order&&this.items.sort(this.props.order),this.props.maxResults&&(this.items=this.items.slice(0,this.props.maxResults)),this.selectIndex(this.props.initialSelectionIndex,t)}fuzzyFilter(t,e){if(0===e.length)return t;{const n=[];for(const r of t){const t=this.props.filterKeyForItem?this.props.filterKeyForItem(r):r;let i=yr.score(t,e);i>0&&n.push({item:r,score:i})}return n.sort(((t,e)=>e.score-t.score)),n.map((t=>t.item))}}getSelectedItem(){return void 0===this.selectionIndex?null:this.items[this.selectionIndex]}renderItemAtIndex(t){const e=this.items[t],n=this.getSelectedItem()===e,r=this.listItems[t].component;this.visibilityObserver&&this.visibilityObserver.unobserve(r.element),r.update({element:this.props.elementForItem(e,{selected:n,index:t,visible:!0}),selected:n,onclick:()=>this.didClickItem(t)})}selectPrevious(){return void 0===this.selectionIndex?this.selectLast():this.selectIndex(this.selectionIndex-1)}selectNext(){return void 0===this.selectionIndex?this.selectFirst():this.selectIndex(this.selectionIndex+1)}selectFirst(){return this.selectIndex(0)}selectLast(){return this.selectIndex(this.items.length-1)}selectNone(){return this.selectIndex(void 0)}selectIndex(t,e=!0){t>=this.items.length?t=0:t<0&&(t=this.items.length-1);const n=this.selectionIndex;return this.selectionIndex=t,void 0!==t&&this.props.didChangeSelection&&this.props.didChangeSelection(this.getSelectedItem()),e?this.listItems?(n>=0&&this.renderItemAtIndex(n),t>=0&&this.renderItemAtIndex(t),Dr.getScheduler().getNextUpdatePromise()):Dr.update(this):Promise.resolve()}selectItem(t){const e=this.items.indexOf(t);if(-1===e)throw new Error("Cannot select the specified item because it does not exist.");return this.selectIndex(e)}confirmSelection(){const t=this.getSelectedItem();null!=t?this.props.didConfirmSelection&&this.props.didConfirmSelection(t):this.props.didConfirmEmptySelection&&this.props.didConfirmEmptySelection()}cancelSelection(){this.props.didCancelSelection&&this.props.didCancelSelection()}};class yi{constructor(t){this.mouseDown=this.mouseDown.bind(this),this.mouseUp=this.mouseUp.bind(this),this.didClick=this.didClick.bind(this),this.selected=t.selected,this.onclick=t.onclick,this.element=t.element,this.element.addEventListener("mousedown",this.mouseDown),this.element.addEventListener("mouseup",this.mouseUp),this.element.addEventListener("click",this.didClick),this.selected&&this.element.classList.add("selected"),this.domEventsDisposable=new Pr((()=>{this.element.removeEventListener("mousedown",this.mouseDown),this.element.removeEventListener("mouseup",this.mouseUp),this.element.removeEventListener("click",this.didClick)})),Dr.getScheduler().updateDocument(this.scrollIntoViewIfNeeded.bind(this))}mouseDown(t){t.preventDefault()}mouseUp(t){t.preventDefault()}didClick(t){t.preventDefault(),this.onclick()}destroy(){this.element.remove(),this.domEventsDisposable.dispose()}update(t){this.element.removeEventListener("mousedown",this.mouseDown),this.element.removeEventListener("mouseup",this.mouseUp),this.element.removeEventListener("click",this.didClick),this.element.parentNode.replaceChild(t.element,this.element),this.element=t.element,this.element.addEventListener("mousedown",this.mouseDown),this.element.addEventListener("mouseup",this.mouseUp),this.element.addEventListener("click",this.didClick),t.selected&&this.element.classList.add("selected"),this.selected=t.selected,this.onclick=t.onclick,Dr.getScheduler().updateDocument(this.scrollIntoViewIfNeeded.bind(this))}scrollIntoViewIfNeeded(){this.selected&&this.element.scrollIntoViewIfNeeded(!1)}}var wi=x(Or);async function bi({items:t,itemTemplate:e,itemFilterKey:n,didChangeSelection:r}){let i;const o=document.activeElement;try{return await new Promise((o=>{let s,a,c="Loading...",u=!1;const l=t=>{u||be(f.update(t))};"function"==typeof t&&(s=async e=>{const n=setTimeout((()=>l({loadingMessage:"Loading..."})),300),r=await t(e);clearTimeout(n),l({items:r,emptyMessage:"Nothing matches the search value",loadingMessage:void 0})},c=void 0,a="Please enter a search value");const f=new wi({items:[],elementForItem:t=>Ft.render(e(t,f)),filterKeyForItem:t=>""+t[n],didChangeSelection:r,didCancelSelection:()=>{u=!0,o()},didConfirmSelection:t=>{u=!0,o(t)},loadingMessage:c,didChangeQuery:s,emptyMessage:a,itemsClassList:["atom-typescript"]});"function"!=typeof t&&be(Promise.resolve(t).then((t=>{l({items:t,loadingMessage:void 0})}))),i=atom.workspace.addModalPanel({item:f,visible:!0}),f.focus()}))}finally{i&&i.destroy(),o&&o.focus()}}const Ei=[];function _i(t,e,n){Ei.push({selector:t,command:e,desc:n})}async function Si(t,e,n){const r=Promise.all(t.body.refs.map((async t=>{var e;const n=(await new Promise(((e,n)=>E.readFile(t.file,((t,r)=>{t?n(t):e(r.toString("utf-8"))}))))).split(/\r?\n/g),r=void 0!==t.contextStart&&void 0!==t.contextEnd?n.slice(t.contextStart.line-1,t.contextEnd.line):n,i=(await Me(r.join("\n"),"source.tsx"))[t.start.line-((null===(e=t.contextStart)||void 0===e?void 0:e.line)||1)];return{...t,hlText:i}}))),i=await bi({items:r,itemTemplate:(t,e)=>Ft.dom("li",null,Ft.dom(Cr,{label:atom.project.relativize(t.file),query:e.getFilterQuery()}),Ft.dom("div",{className:"pull-right"},"line: ",t.start.line),Ft.dom(dr,{highlightedText:t.hlText})),itemFilterKey:"file"});i&&await n(e,i)}async function xi(t,e,n){if(t.body)if(t.body.length>1){const r=await bi({items:t.body,itemTemplate:(t,e)=>Ft.dom("li",null,Ft.dom(Cr,{label:t.file,query:e.getFilterQuery()}),Ft.dom("div",{className:"pull-right"},"line: ",t.start.line)),itemFilterKey:"file"});r&&await n(e,r)}else t.body.length>0&&await n(e,t.body[0])}function ki(t){const e=t.spans.map(ke).reduce(((t,e)=>e.union(t)));return{kind:Ii[t.kind],plainText:t.text,startPosition:e.start,endPosition:e.end,landingPosition:t.nameSpan?ke(t.nameSpan).start:void 0,children:t.childItems?t.childItems.map(ki).sort(Ti):[]}}function Ti(t,e){const n=t.landingPosition?t.landingPosition:t.startPosition,r=e.landingPosition?e.landingPosition:e.startPosition;return n.compare(r)}_i("atom-text-editor","typescript:find-references",(t=>({description:"Find where symbol under text cursor is referenced",async didDispatch(e){const n=Fe(e);if(!n)return;const r=await t.getClient(n.file),i=await r.execute("references",n);await Si(i,e,t.histGoForward)}}))),_i("atom-text-editor","typescript:go-to-declaration",(t=>({description:"Go to declaration of symbol under text cursor",async didDispatch(e){const n=Fe(e);if(!n)return;const r=await t.getClient(n.file),i=await r.execute("definition",n);await xi(i,e,t.histGoForward)}})));const Ii={directory:"file",module:"module","external module name":"module",class:"class","local class":"class",method:"method",property:"property",getter:"property",setter:"property","JSX attribute":"field",constructor:"constructor",enum:"enum",interface:"interface",type:"interface",function:"function","local function":"function",label:"variable",alias:"variable",var:"variable",let:"variable","local var":"variable",parameter:"variable","enum member":"constant",const:"constant",string:"string","":void 0,warning:void 0,keyword:void 0,script:void 0,call:void 0,index:void 0,construct:void 0,"type parameter":void 0,"primitive type":void 0};class Ai{constructor(t){this.getClient=t,this.triggerCharacters=new Set([]),this.grammarScopes=Re(),this.priority=100,this.disposables=new p;const e=new Set(["<","(",","]),n=new Set([]);this.disposables.add(atom.config.observe("atom-typescript.sigHelpDisplayOnChange",(t=>{this.triggerCharacters=t?e:n})))}dispose(){this.disposables.dispose()}async getSignatureHelp(t,e){try{const n=t.getPath();if(void 0===n)return;const r=await this.getClient(n),i=(await r.execute("signatureHelp",{file:n,line:e.row+1,offset:e.column+1})).body;return{signatures:i.items.map(Ce),activeParameter:i.argumentIndex,activeSignature:i.selectedItemIndex}}catch(t){return}}}function Ci(t){return Ft.dom("li",null,t.description)}class Oi{constructor(t,e){this.getClient=t,this.applyEdits=e,this.selector=Re().map((t=>t.includes(".")?"."+t:t)).join(", "),this.disableForSelector=".comment",this.inclusionPriority=3,this.suggestionPriority=atom.config.get("atom-typescript").autocompletionSuggestionPriority,this.excludeLowerPriority=!1}async getSuggestions(t){const e=function(t){const e=t.editor.getPath();if(void 0===e)return;return{file:e,line:t.bufferPosition.row+1,offset:t.bufferPosition.column+1}}(t),n=function(t){const e=t.editor.getBuffer().getTextInRange([[t.bufferPosition.row,0],t.bufferPosition]).match(Pi);return e?e[0]:""}(t);if(!e)return[];const r=function(t){if(void 0===t)return;if(!t)return;const e=t.slice(-1);if(Fi.has(e))return e;return}(function(t,e){let n;const r=new f.Range([0,0],e);return t.backwardsScanInRange(/\S/,r,(({matchText:t,stop:e})=>{n=t,e()})),n}(t.editor.getBuffer(),t.bufferPosition));if(!n&&!t.activatedManually&&!r)return[];if(Li(t.scopeDescriptor.getScopesArray(),"string.template.")&&!Li(t.scopeDescriptor.getScopesArray(),"template.expression."))return[];try{let i=await this.getSuggestionsWithCache({prefix:n,location:e,triggerCharacter:r,activatedManually:t.activatedManually});return i=yr.filter(i,n,{key:"displayText"}),i.map((r=>({replacementPrefix:r.replacementRange?t.editor.getTextInBufferRange(r.replacementRange):n,location:e,...this.getDetailsFromCache(r),...ji(t,r)})))}catch(t){return[]}}async getSuggestionDetailsOnSelect(t){return"text"in t&&!("rightLabel"in t)?this.getAdditionalDetails(t):null}onDidInsertSuggestion(t){const e=t.suggestion;if(!e.hasAction)return;if(!this.lastSuggestions)return;const n=this.lastSuggestions.client;let r=this.getDetailsFromCache(e);be((async()=>{var t;if(r||(r=await this.getAdditionalDetails(e)),!(null===(t=r)||void 0===t?void 0:t.details.codeActions))return;let i;i=1===r.details.codeActions.length?r.details.codeActions[0]:await bi({items:r.details.codeActions,itemTemplate:Ci,itemFilterKey:"description"}),i&&(await this.applyEdits(i.changes),i.commands&&await Promise.all(i.commands.map((t=>n.execute("applyCodeActionCommand",{command:t})))))})())}async getAdditionalDetails(t){var e;if(void 0===t.identifier)return null;if(!this.lastSuggestions)return null;const n=await this.lastSuggestions.client.execute("completionEntryDetails",{entryNames:[t.identifier],...this.lastSuggestions.location});if(!n.body)return null;const[r]=n.body;if(!r)return null;let i=r.displayParts;i.length>=3&&"("===i[0].text&&i[1].text===t.leftLabel&&")"===i[2].text&&(i=i.slice(3));let o=i.map((t=>t.text)).join("");const s=t.hasAction&&1===(null===(e=r.codeActions)||void 0===e?void 0:e.length)?r.codeActions[0].description+"\n\n":"";s&&(o=s);const a=s+r.displayParts.map((t=>t.text)).join("")+(r.documentation?"\n\n"+r.documentation.map((t=>t.text)).join(" "):"");return this.lastSuggestions.details.set(t.displayText,{details:r,rightLabel:o,description:a}),{...t,details:r,rightLabel:o,description:a}}getDetailsFromCache(t){if(!this.lastSuggestions)return null;const e=this.lastSuggestions.details.get(t.displayText);return e||null}async getSuggestionsWithCache({prefix:t,location:e,triggerCharacter:n,activatedManually:r}){if(this.lastSuggestions&&!r){const n=this.lastSuggestions.location,r=Ni(this.lastSuggestions.prefix,n.offset),i=Ni(t,e.offset);if(n.file===e.file&&n.line===e.line&&r===i&&0!==this.lastSuggestions.suggestions.length)return this.lastSuggestions.suggestions}const i=await this.getClient(e.file),o=await async function({client:t,location:e,triggerCharacter:n}){if(parseInt(t.version.split(".")[0],10)>=3){var r;const i=await t.execute("completionInfo",{includeExternalModuleExports:!1,includeInsertTextCompletions:!0,triggerCharacter:n,...e});return i.body.entries.map(Ri.bind(null,null===(r=i.body)||void 0===r?void 0:r.isMemberCompletion))}return(await t.execute("completions",{includeExternalModuleExports:!1,includeInsertTextCompletions:!0,...e})).body.map(Ri.bind(null,void 0))}({client:i,location:e,triggerCharacter:r?void 0:n});return this.lastSuggestions={client:i,location:e,prefix:t,suggestions:o,details:new Map},o}}const Pi=/(?:(?![\u{10000}-\u{10FFFF}])[\$_\p{Lu}\p{Ll}\p{Lt}\p{Lm}\p{Lo}\p{Nl}])(?:(?![\u{10000}-\u{10FFFF}])[\$_\p{Lu}\p{Ll}\p{Lt}\p{Lm}\p{Lo}\p{Nl}\u200C\u200D\p{Mn}\p{Mc}\p{Nd}\p{Pc}])*$/u;function Ni(t,e){return e-("."===t?0:t.length)}function Li(t,e){for(const n of t)if(n.includes(e))return!0;return!1}function Ri(t,e){return{displayText:e.name,text:void 0!==e.insertText?e.insertText:e.name,leftLabel:e.kind,replacementRange:e.replacementSpan?ke(e.replacementSpan):void 0,type:Di[e.kind],isMemberCompletion:t,identifier:void 0!==e.source?{name:e.name,source:e.source}:e.name,hasAction:e.hasAction}}function ji(t,e){return atom.config.get("atom-typescript.autocompleteParens")&&["function","method"].includes(e.leftLabel)&&!function(t){const e=t.editor.getBuffer(),n=t.bufferPosition;return!!e.getTextInRange([n,[n.row,e.lineLengthForRow(n.row)]]).match(/\s*\(/)}(t)?{...e,snippet:e.text+"($1)",text:void 0}:e}const Di={directory:"require",module:"import","external module name":"import",class:"class","local class":"class",method:"method",property:"property",getter:"property",setter:"property","JSX attribute":"property",constructor:"method",enum:"type",interface:"type",type:"type","type parameter":"type","primitive type":"type",function:"function","local function":"function",label:"variable",alias:"import",var:"variable",let:"variable","local var":"variable",parameter:"variable","enum member":"constant",const:"constant",string:"value",keyword:"keyword","":void 0,warning:void 0,script:void 0,call:void 0,index:void 0,construct:void 0},Fi=new Set(Object.keys({".":null,'"':null,"'":null,"`":null,"/":null,"@":null,"<":null,"#":null}));async function Mi(t,e){const n=await async function(t,e){try{return await t.execute("getApplicableRefactors",{triggerReason:"invoked",...e})}catch{return}}(t,e);if(!n)return[];if(void 0===n.body||0===n.body.length)return[];const r=[];for(const t of n.body)for(const n of t.actions)r.push({refactorName:t.name,refactorDescription:t.description,refactorRange:e,actionName:n.name,actionDescription:n.description,inlineable:void 0===t.inlineable||t.inlineable});return r}async function $i(t,e,n){const r=await e.execute("getEditsForRefactor",{...t.refactorRange,refactor:t.refactorName,action:t.actionName});if(void 0===r.body)return;const{edits:i,renameFilename:o,renameLocation:s}=r.body;if(await n.applyEdits(i),void 0===o||void 0===s)return;const a=await atom.workspace.open(o,{searchAllPanes:!0,initialLine:s.line-1,initialColumn:s.offset-1});await atom.commands.dispatch(atom.views.getView(a),"typescript:rename-refactor")}_i("atom-text-editor","typescript:refactor-selection",(t=>({description:"Get a list of applicable refactors to selected code",async didDispatch(e){const n=Fe(e);if(!n)return;const r=e.getSelectedBufferRange(),i=await t.getClient(n.file),o=r.isEmpty()?n:{file:n.file,startLine:r.start.row+1,startOffset:r.start.column+1,endLine:r.end.row+1,endOffset:r.end.column+1},s=await Mi(i,o);if(0===s.length)return void atom.notifications.addInfo("AtomTS: No applicable refactors for the selection");const a=await bi({items:s,itemTemplate:(t,e)=>Ft.dom("li",null,Ft.dom(Cr,{label:`${t.refactorDescription}: ${t.actionDescription}`,query:e.getFilterQuery()})),itemFilterKey:"actionDescription"});void 0!==a&&await $i(a,i,t)}})));class Bi{constructor(t,e,n){this.clientResolver=t,this.errorPusher=e,this.applyEdits=n,this.supportedFixes=new WeakMap}async getFixableRanges(t,e){const n=t.getPath();if(void 0===n)return[];const r=this.errorPusher.getErrorsInRange(n,e),i=await this.clientResolver.get(n),o=await this.getSupportedFixes(i);return Array.from(r).filter((t=>void 0!==t.code&&o.has(t.code))).map((t=>ke(t)))}async runCodeFix(t,e){const n=t.getPath();if(void 0===n)return[];const r=await this.clientResolver.get(n),i=await this.getSupportedFixes(r),o=Array.from(this.errorPusher.getErrorsAt(n,e)).filter((t=>void 0!==t.code&&i.has(t.code))).map((t=>r.execute("getCodeFixes",{file:n,startLine:t.start.line,startOffset:t.start.offset,endLine:t.end.line,endOffset:t.end.offset,errorCodes:[t.code]}))),s=await Promise.all(o),a=[];for(const t of s)if(t.body)for(const e of t.body)a.push(e);const c=await Mi(r,{file:n,...Se(e)});return a.push(...c),a}async applyFix(t){if("changes"in t)return this.applyEdits(t.changes);return $i(t,await this.clientResolver.get(t.refactorRange.file),{applyEdits:this.applyEdits})}dispose(){}async getSupportedFixes(t){let e=this.supportedFixes.get(t);if(e)return e;const n=await t.execute("getSupportedCodeFixes");if(!n.body)throw new Error("No code fixes are supported");return e=new Set(n.body.map((t=>parseInt(t,10)))),this.supportedFixes.set(t,e),e}}async function zi(t,e){let n;try{return await new Promise(((r,i)=>{try{const o=new d({command:t,args:["--init"],options:{cwd:e},exit:t=>{0===t?r():i(new Error("Tsc ended with nonzero exit code "+t))}});n=o.onWillThrowError(i)}catch(t){i(t)}}))}finally{n&&n.dispose()}}_i("atom-text-editor","typescript:build",(t=>({description:"Compile all files in project related to current active text editor",async didDispatch(e){const n=e.getPath();if(void 0===n)return;const r=await t.getClient(n);t.reportBuildStatus(void 0);const i=await r.execute("projectInfo",{file:n,needFileNameList:!0}),o=new Set(i.body.fileNames);o.delete(i.body.configFileName);let s=0;const a=[...o.values()].map((e=>{return n=r.execute("compileOnSaveEmitFile",{file:e,forced:!0}),i=()=>{s+=1,t.reportProgress({max:o.size,value:s})},n.then(i,i),n;var n,i}));try{if((await Promise.all(a)).some((t=>!1===t.body)))throw new Error("Emit failed");t.reportBuildStatus({success:!0})}catch(e){const n=e;console.error(n),t.reportBuildStatus({success:!1,message:n.message})}}}))),_i("atom-text-editor","typescript:check-all-files",(t=>({description:"Typecheck all files in project related to current active text editor",async didDispatch(e){var n;const r=e.getPath();if(void 0===r)return;const i=await t.getClient(r),o=await i.execute("projectInfo",{file:r,needFileNameList:!0}),s=new Set(null===(n=o.body.fileNames)||void 0===n?void 0:n.filter((t=>!t.endsWith("tsconfig.json")&&!t.includes(`${v.sep}node_modules${v.sep}`)))),a=s.size;if(i.multistepSupported){const e=i.on("syntaxDiag",(e=>{"file"in e&&s.delete(e.file),t.reportProgress({max:a,value:a-s.size})}));t.reportProgress({max:a,value:0}),await i.execute("geterrForProject",{file:r,delay:0}),e.dispose()}else{let e;const n=i.on("syntaxDiag",(r=>{void 0!==e&&window.clearTimeout(e),e=window.setTimeout((()=>{s.clear(),n.dispose(),t.reportProgress({max:a,value:a})}),2e3),"file"in r&&s.delete(r.file),0===s.size&&(n.dispose(),window.clearTimeout(e)),t.reportProgress({max:a,value:a-s.size})}));t.reportProgress({max:a,value:0}),await i.execute("geterrForProject",{file:r,delay:0})}}}))),_i("atom-workspace","typescript:clear-errors",(t=>({description:"Clear error messages",didDispatch(){t.clearErrors()}}))),_i("atom-text-editor","typescript:format-code",(t=>({description:"Format code in currently active text editor",async didDispatch(e){const n=e.getPath();if(void 0===n)return;const r=[];for(const t of e.getSelectedBufferRanges())t.isEmpty()||r.push({line:(i=t).start.row+1,offset:i.start.column+1,endLine:i.end.row+1,endOffset:i.end.column+1});var i;if(0===r.length){const t=e.getBuffer().getEndPosition();r.push({line:1,offset:1,endLine:t.row+1,endOffset:t.column+1})}const o=await t.getClient(n),s=[];for(const t of r){const e=await o.execute("format",{...t,file:n});e.body&&s.push(...e.body)}s.length>0&&e.transact((()=>{!function(t,e){for(let n=e.length-1;n>=0;n--)t.setTextInBufferRange(ke(e[n]),e[n].newText)}(e,s)}))}}))),_i("atom-text-editor","typescript:initialize-config",(()=>({description:"Create tsconfig.json in the project related to currently-active text edtior",async didDispatch(t,e){const n=atom.project.getDirectories();if(0===n.length)return e();const r=t.getPath();if(void 0===r)return;const i=(await er(r,"tsc")).pathToBin;for(const t of n)t.contains(r)&&(await zi(i,t.getPath()),atom.notifications.addSuccess("Successfully created tsconfig.json in "+t.getPath()))}}))),_i("atom-text-editor","typescript:organize-imports",(t=>({description:"Organize module imports",async didDispatch(e){const n=e.getPath();if(void 0===n)return;const r=await t.getClient(n),i=await r.execute("organizeImports",{scope:{type:"file",args:{file:n}}});i.body.length>0&&await t.applyEdits(i.body)}}))),_i("atom-text-editor","typescript:reload-projects",(t=>({description:"Reload projects",async didDispatch(e){const n=e.getPath();if(void 0===n)return;const r=await t.getClient(n);await r.execute("reloadProjects")}})));var Ui,Hi,qi={},Gi=!1;function Vi(){return Gi||(Gi=!0,Ui={},function(){var t="object"==typeof self&&self.self===self&&self||"object"==typeof T&&T.global===T&&T||this||{},e=t._,n=Array.prototype,r=Object.prototype,i="undefined"!=typeof Symbol?Symbol.prototype:null,o=n.push,s=n.slice,a=r.toString,c=r.hasOwnProperty,u=Array.isArray,l=Object.keys,f=Object.create,p=function(){},h=function(t){return t instanceof h?t:this instanceof h?void(this._wrapped=t):new h(t)};void 0===Ui||Ui.nodeType?t._=h:(!module.nodeType&&Ui&&(Ui=h),Hi=h,Ui._=Hi),h.VERSION="1.9.1";var d,m=function(t,e,n){if(void 0===e)return t;switch(null==n?3:n){case 1:return function(n){return t.call(e,n)};case 3:return function(n,r,i){return t.call(e,n,r,i)};case 4:return function(n,r,i,o){return t.call(e,n,r,i,o)}}return function(){return t.apply(e,arguments)}},g=function(t,e,n){return h.iteratee!==d?h.iteratee(t,e):null==t?h.identity:h.isFunction(t)?m(t,e,n):h.isObject(t)&&!h.isArray(t)?h.matcher(t):h.property(t)};h.iteratee=d=function(t,e){return g(t,e,1/0)};var v=function(t,e){return e=null==e?t.length-1:+e,function(){for(var n=Math.max(arguments.length-e,0),r=Array(n),i=0;i=0&&e<=_};h.each=h.forEach=function(t,e,n){var r,i;if(e=m(e,n),x(t))for(r=0,i=t.length;r0?0:s-1;for(i||(r=e[o?o[a]:a],a+=t);a>=0&&a=3;return e(t,m(n,i,4),r,o)}};h.reduce=h.foldl=h.inject=k(1),h.reduceRight=h.foldr=k(-1),h.find=h.detect=function(t,e,n){var r=(x(t)?h.findIndex:h.findKey)(t,e,n);if(void 0!==r&&-1!==r)return t[r]},h.filter=h.select=function(t,e,n){var r=[];return e=g(e,n),h.each(t,(function(t,n,i){e(t,n,i)&&r.push(t)})),r},h.reject=function(t,e,n){return h.filter(t,h.negate(g(e)),n)},h.every=h.all=function(t,e,n){e=g(e,n);for(var r=!x(t)&&h.keys(t),i=(r||t).length,o=0;o=0},h.invoke=v((function(t,e,n){var r,i;return h.isFunction(e)?i=e:h.isArray(e)&&(r=e.slice(0,-1),e=e[e.length-1]),h.map(t,(function(t){var o=i;if(!o){if(r&&r.length&&(t=E(t,r)),null==t)return;o=t[e]}return null==o?o:o.apply(t,n)}))})),h.pluck=function(t,e){return h.map(t,h.property(e))},h.where=function(t,e){return h.filter(t,h.matcher(e))},h.findWhere=function(t,e){return h.find(t,h.matcher(e))},h.max=function(t,e,n){var r,i,o=-1/0,s=-1/0;if(null==e||"number"==typeof e&&"object"!=typeof t[0]&&null!=t)for(var a=0,c=(t=x(t)?t:h.values(t)).length;ao&&(o=r);else e=g(e,n),h.each(t,(function(t,n,r){((i=e(t,n,r))>s||i===-1/0&&o===-1/0)&&(o=t,s=i)}));return o},h.min=function(t,e,n){var r,i,o=1/0,s=1/0;if(null==e||"number"==typeof e&&"object"!=typeof t[0]&&null!=t)for(var a=0,c=(t=x(t)?t:h.values(t)).length;ar||void 0===n)return 1;if(n0?0:i-1;o>=0&&o0?a=o>=0?o:Math.max(o+c,a):c=o>=0?Math.min(o+1,c):o+c+1;else if(n&&o&&c)return r[o=n(r,i)]===i?o:-1;if(i!=i)return(o=e(s.call(r,a,c),h.isNaN))>=0?o+a:-1;for(o=t>0?a:c-1;o>=0&&oe?(r&&(clearTimeout(r),r=null),a=u,s=t.apply(i,o),r||(i=o=null)):r||!1===n.trailing||(r=setTimeout(c,l)),s};return u.cancel=function(){clearTimeout(r),a=0,r=i=o=null},u},h.debounce=function(t,e,n){var r,i,o=function(e,n){r=null,n&&(i=t.apply(e,n))},s=v((function(s){if(r&&clearTimeout(r),n){var a=!r;r=setTimeout(o,e),a&&(i=t.apply(this,s))}else r=h.delay(o,e,this,s);return i}));return s.cancel=function(){clearTimeout(r),r=null},s},h.wrap=function(t,e){return h.partial(e,t)},h.negate=function(t){return function(){return!t.apply(this,arguments)}},h.compose=function(){var t=arguments,e=t.length-1;return function(){for(var n=e,r=t[e].apply(this,arguments);n--;)r=t[n].call(this,r);return r}},h.after=function(t,e){return function(){if(--t<1)return e.apply(this,arguments)}},h.before=function(t,e){var n;return function(){return--t>0&&(n=e.apply(this,arguments)),t<=1&&(e=null),n}},h.once=h.partial(h.before,2),h.restArguments=v;var L=!{toString:null}.propertyIsEnumerable("toString"),R=["valueOf","isPrototypeOf","toString","propertyIsEnumerable","hasOwnProperty","toLocaleString"],j=function(t,e){var n=R.length,i=t.constructor,o=h.isFunction(i)&&i.prototype||r,s="constructor";for(b(t,s)&&!h.contains(e,s)&&e.push(s);n--;)(s=R[n])in t&&t[s]!==o[s]&&!h.contains(e,s)&&e.push(s)};h.keys=function(t){if(!h.isObject(t))return[];if(l)return l(t);var e=[];for(var n in t)b(t,n)&&e.push(n);return L&&j(t,e),e},h.allKeys=function(t){if(!h.isObject(t))return[];var e=[];for(var n in t)e.push(n);return L&&j(t,e),e},h.values=function(t){for(var e=h.keys(t),n=e.length,r=Array(n),i=0;i1&&(r=m(r,e[1])),e=h.allKeys(t)):(r=$,e=C(e,!1,!1),t=Object(t));for(var i=0,o=e.length;i1&&(n=e[1])):(e=h.map(C(e,!1,!1),String),r=function(t,n){return!h.contains(e,n)}),h.pick(t,r,n)})),h.defaults=D(h.allKeys,!0),h.create=function(t,e){var n=y(t);return e&&h.extendOwn(n,e),n},h.clone=function(t){return h.isObject(t)?h.isArray(t)?t.slice():h.extend({},t):t},h.tap=function(t,e){return e(t),t},h.isMatch=function(t,e){var n=h.keys(e),r=n.length;if(null==t)return!r;for(var i=Object(t),o=0;o":">",'"':""","'":"'","`":"`"},U=h.invert(z),H=function(t){var e=function(e){return t[e]},n="(?:"+h.keys(t).join("|")+")",r=RegExp(n),i=RegExp(n,"g");return function(t){return t=null==t?"":""+t,r.test(t)?t.replace(i,e):t}};h.escape=H(z),h.unescape=H(U),h.result=function(t,e,n){h.isArray(e)||(e=[e]);var r=e.length;if(!r)return h.isFunction(n)?n.call(t):n;for(var i=0;i/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g};var G=/(.)^/,V={"'":"'","\\":"\\","\r":"r","\n":"n","\u2028":"u2028","\u2029":"u2029"},W=/\\|'|\r|\n|\u2028|\u2029/g,X=function(t){return"\\"+V[t]};h.template=function(t,e,n){!e&&n&&(e=n),e=h.defaults({},e,h.templateSettings);var r,i=RegExp([(e.escape||G).source,(e.interpolate||G).source,(e.evaluate||G).source].join("|")+"|$","g"),o=0,s="__p+='";t.replace(i,(function(e,n,r,i,a){return s+=t.slice(o,a).replace(W,X),o=a+e.length,n?s+="'+\n((__t=("+n+"))==null?'':_.escape(__t))+\n'":r?s+="'+\n((__t=("+r+"))==null?'':__t)+\n'":i&&(s+="';\n"+i+"\n__p+='"),e})),s+="';\n",e.variable||(s="with(obj||{}){\n"+s+"}\n"),s="var __t,__p='',__j=Array.prototype.join,print=function(){__p+=__j.call(arguments,'');};\n"+s+"return __p;\n";try{r=new Function(e.variable||"obj","_",s)}catch(t){throw t.source=s,t}var a=function(t){return r.call(this,t,h)},c=e.variable||"obj";return a.source="function("+c+"){\n"+s+"}",a},h.chain=function(t){var e=h(t);return e._chain=!0,e};var K=function(t,e){return t._chain?h(e).chain():e};h.mixin=function(t){return h.each(h.functions(t),(function(e){var n=h[e]=t[e];h.prototype[e]=function(){var t=[this._wrapped];return o.apply(t,arguments),K(this,n.apply(h,t))}})),h},h.mixin(h),h.each(["pop","push","reverse","shift","sort","splice","unshift"],(function(t){var e=n[t];h.prototype[t]=function(){var n=this._wrapped;return e.apply(n,arguments),"shift"!==t&&"splice"!==t||0!==n.length||delete n[0],K(this,n)}})),h.each(["concat","join","slice"],(function(t){var e=n[t];h.prototype[t]=function(){return K(this,e.apply(this._wrapped,arguments))}})),h.prototype.value=function(){return this._wrapped},h.prototype.valueOf=h.prototype.toJSON=h.prototype.value,h.prototype.toString=function(){return String(this._wrapped)},"function"==typeof define&&define.amd&&define("underscore",[],(function(){return h}))}()),Ui}var Wi,Xi=!1;function Ki(){return Xi||(Xi=!0,function(){var t,e,n,r,i,o,s,a,c=[].slice;a=Vi(),n={cmd:"⌘",ctrl:"⌃",alt:"⌥",option:"⌥",shift:"⇧",enter:"⏎",left:"←",right:"→",up:"↑",down:"↓"},r={cmd:"Cmd",ctrl:"Ctrl",alt:"Alt",option:"Alt",shift:"Shift",enter:"Enter",left:"Left",right:"Right",up:"Up",down:"Down"},o={"~":"`",_:"-","+":"=","|":"\\","{":"[","}":"]",":":";",'"':"'","<":",",">":".","?":"/"},s=function(t){var e,n,r,i,o;if(r=0,n=[],null==t)return n;for(e=i=0,o=t.length;i=0&&t.splice(n,1),t},setValueForKeyPath:function(t,e,n){var r,i;for(i=s(e);i.length>1;)null==t[r=i.shift()]&&(t[r]={}),t=t[r];return null!=n?t[i.shift()]=n:delete t[i.shift()]},hasKeyPath:function(t,e){var n,r,i,o;for(i=0,o=(r=s(e)).length;i0?s<=a:s>=a;o=s+=i)u.push(t.splice.apply(t,[e+o,0].concat(c.call(r.slice(o,o+i)))));return u},sum:function(t){var e,n,r;for(e=0,n=0,r=t.length;n=0&&t.length%1==0}function p(t,e){for(var n=-1,r=t.length;++n3?t(r,i,c,a):(s=o,o=i,t(r,c,a))}}function L(t,e){return e}function R(t,e,r){r=r||n;var i=f(e)?[]:{};t(e,(function(t,e,n){t(b((function(t,r){r.length<=1&&(r=r[0]),i[e]=r,n(t)})))}),(function(t){r(t,i)}))}function j(t,e,n,r){var i=[];t(e,(function(t,e,r){n(t,(function(t,e){i=i.concat(e||[]),r(t)}))}),(function(t){r(t,i)}))}function D(t,r,i){if(null==r)r=1;else if(0===r)throw new Error("Concurrency must not be zero");function o(t,r,i,o){if(null!=o&&"function"!=typeof o)throw new Error("task callback must be a function");if(t.started=!0,l(r)||(r=[r]),0===r.length&&t.idle())return e.setImmediate((function(){t.drain()}));p(r,(function(e){var r={data:e,callback:o||n};i?t.tasks.unshift(r):t.tasks.push(r),t.tasks.length===t.concurrency&&t.saturated()})),e.setImmediate(t.process)}function s(t,e){return function(){c-=1;var n=!1,r=arguments;p(e,(function(t){p(u,(function(e,r){e!==t||n||(u.splice(r,1),n=!0)})),t.callback.apply(t,r)})),t.tasks.length+c===0&&t.drain(),t.process()}}var c=0,u=[],f={tasks:[],concurrency:r,payload:i,saturated:n,empty:n,drain:n,started:!1,paused:!1,push:function(t,e){o(f,t,!1,e)},kill:function(){f.drain=n,f.tasks=[]},unshift:function(t,e){o(f,t,!0,e)},process:function(){for(;!f.paused&&cr?1:0}e.map(t,(function(t,e){n(t,(function(n,r){n?e(n):e(null,{value:t,criteria:r})}))}),(function(t,e){if(t)return r(t);r(null,h(e.sort(i),(function(t){return t.value})))}))},e.auto=function(t,r,i){"function"==typeof arguments[1]&&(i=r,r=null),i=c(i||n);var o=y(t),s=o.length;if(!s)return i(null);r||(r=s);var a={},u=0,f=!1,h=[];function d(t){h.unshift(t)}function w(t){var e=v(h,t);e>=0&&h.splice(e,1)}function E(){s--,p(h.slice(0),(function(t){t()}))}d((function(){s||i(null,a)})),p(o,(function(n){if(!f){for(var o,s=l(t[n])?t[n]:[t[n]],c=b((function(t,r){if(u--,r.length<=1&&(r=r[0]),t){var o={};g(a,(function(t,e){o[e]=t})),o[n]=r,f=!0,i(t,o)}else a[n]=r,e.setImmediate(E)})),p=s.slice(0,s.length-1),h=p.length;h--;){if(!(o=t[p[h]]))throw new Error("Has nonexistent dependency in "+p.join(", "));if(l(o)&&v(o,n)>=0)throw new Error("Has cyclic dependencies")}y()?(u++,s[s.length-1](c,a)):d((function t(){y()&&(u++,w(t),s[s.length-1](c,a))}))}function y(){return u3)throw new Error("Invalid arguments - must be either (task), (task, callback), (times, task) or (times, task, callback)");function l(t,n){function r(t,e){return function(r){t((function(t,n){r(!t||e,{err:t,result:n})}),n)}}function i(t){return function(e){setTimeout((function(){e(null)}),t)}}for(;a.times;){var o=!(a.times-=1);s.push(r(a.task,o)),!o&&a.interval>0&&s.push(i(a.interval))}e.series(s,(function(e,n){n=n[n.length-1],(t||a.callback)(n.err,n.result)}))}return u<=2&&"function"==typeof t&&(r=n,n=t),"function"!=typeof t&&c(a,t),a.callback=r,a.task=n,a.callback?l():l},e.waterfall=function(t,r){if(r=c(r||n),!l(t)){var i=new Error("First argument to waterfall must be an array of functions");return r(i)}if(!t.length)return r();!function t(e){return b((function(n,i){if(n)r.apply(null,[n].concat(i));else{var o=e.next();o?i.push(t(o)):i.push(r),B(e).apply(null,i)}}))}(e.iterator(t))()},e.parallel=function(t,n){R(e.eachOf,t,n)},e.parallelLimit=function(t,e,n){R(x(e),t,n)},e.series=function(t,n){R(e.eachOfSeries,t,n)},e.iterator=function(t){return function e(n){function r(){return t.length&&t[n].apply(null,arguments),r.next()}return r.next=function(){return n>>1);n(e,t[o])>=0?r=o:i=o-1}return r}(t.tasks,a,i)+1,0,a),t.tasks.length===t.concurrency&&t.saturated(),e.setImmediate(t.process)}))}(o,t,r,s)},delete o.unshift,o},e.cargo=function(t,e){return D(t,1,e)},e.log=F("log"),e.dir=F("dir"),e.memoize=function(t,n){var i={},o={},s=Object.prototype.hasOwnProperty;n=n||r;var a=b((function(r){var a=r.pop(),c=n.apply(null,r);s.call(i,c)?e.setImmediate((function(){a.apply(null,i[c])})):s.call(o,c)?o[c].push(a):(o[c]=[a],t.apply(null,r.concat([b((function(t){i[c]=t;var e=o[c];delete o[c];for(var n=0,r=e.length;n=t.length)return e&&(e[a]=t),n(null,t);fo.lastIndex=r;var c=fo.exec(t);return s=i,i+=c[0],o=s+c[1],r=fo.lastIndex,u[o]||e&&e[o]===o?process.nextTick(f):e&&Object.prototype.hasOwnProperty.call(e,o)?d(e[o]):uo.lstat(o,p)}function p(t,r){if(t)return n(t);if(!r.isSymbolicLink())return u[o]=!0,e&&(e[o]=o),process.nextTick(f);if(!co){var i=r.dev.toString(32)+":"+r.ino.toString(32);if(c.hasOwnProperty(i))return h(null,c[i],o)}uo.stat(o,(function(t){if(t)return n(t);uo.readlink(o,(function(t,e){co||(c[i]=e),h(t,e)}))}))}function h(t,r,i){if(t)return n(t);var o=ao.resolve(s,r);e&&(e[i]=o),d(o)}function d(e){t=ao.resolve(e,t.slice(r)),l()}l()},so.realpath=mo),so}var wo,bo,Eo,_o,So,xo,ko,To=!1;function Io(t){return t&&"realpath"===t.syscall&&("ELOOP"===t.code||"ENOMEM"===t.code||"ENAMETOOLONG"===t.code)}function Ao(t,e,n){if(xo)return Eo(t,e,n);"function"==typeof e&&(n=e,e=null),Eo(t,e,(function(r,i){Io(r)?ko.realpath(t,e,n):n(r,i)}))}function Co(t,e){if(xo)return _o(t,e);try{return _o(t,e)}catch(n){if(Io(n))return ko.realpathSync(t,e);throw n}}function Oo(){bo.realpath=Ao,bo.realpathSync=Co}function Po(){bo.realpath=Eo,bo.realpathSync=_o}function No(){return To||(To=!0,wo={},wo=Ao,Ao.realpath=Ao,Ao.sync=Co,Ao.realpathSync=Co,Ao.monkeypatch=Oo,Ao.unmonkeypatch=Po,Eo=(bo=E).realpath,_o=bo.realpathSync,So=process.version,xo=/^v[0-5]\./.test(So),ko=yo()),wo}var Lo,Ro,jo=!1;function Do(){return jo||(jo=!0,Lo={},Lo=function(t,e){for(var n=[],r=0;r=0&&u>0){for(r=[],o=n.length;l>=0&&!a;)l==c?(r.push(l),c=n.indexOf(t,l+1)):1==r.length?a=[r.pop(),u]:((i=r.pop())=0?c:u;r.length&&(a=[o,s])}return a}function Uo(){return Mo||(Mo=!0,Fo={},Fo=$o,$o.range=zo),Fo}var Ho,qo,Go,Vo,Wo,Xo,Ko,Qo,Zo=!1;function Yo(t){return parseInt(t,10)==t?parseInt(t,10):t.charCodeAt(0)}function Jo(t){return t.split(Vo).join("\\").split(Wo).join("{").split(Xo).join("}").split(Ko).join(",").split(Qo).join(".")}function ts(t){if(!t)return[""];var e=[],n=Go("{","}",t);if(!n)return t.split(",");var r=n.pre,i=n.body,o=n.post,s=r.split(",");s[s.length-1]+="{"+i+"}";var a=ts(o);return o.length&&(s[s.length-1]+=a.shift(),s.push.apply(s,a)),e.push.apply(e,s),e}function es(t){return t?("{}"===t.substr(0,2)&&(t="\\{\\}"+t.substr(2)),ss(function(t){return t.split("\\\\").join(Vo).split("\\{").join(Wo).split("\\}").join(Xo).split("\\,").join(Ko).split("\\.").join(Qo)}(t),!0).map(Jo)):[]}function ns(t){return"{"+t+"}"}function rs(t){return/^-?0\d/.test(t)}function is(t,e){return t<=e}function os(t,e){return t>=e}function ss(t,e){var n=[],r=Go("{","}",t);if(!r||/\$$/.test(r.pre))return[t];var i,o=/^-?\d+\.\.-?\d+(?:\.\.-?\d+)?$/.test(r.body),s=/^[a-zA-Z]\.\.[a-zA-Z](?:\.\.-?\d+)?$/.test(r.body),a=o||s,c=r.body.indexOf(",")>=0;if(!a&&!c)return r.post.match(/,.*\}/)?ss(t=r.pre+"{"+r.body+Xo+r.post):[t];if(a)i=r.body.split(/\.\./);else if(1===(i=ts(r.body)).length&&1===(i=ss(i[0],!1).map(ns)).length)return(f=r.post.length?ss(r.post,!1):[""]).map((function(t){return r.pre+i[0]+t}));var u,l=r.pre,f=r.post.length?ss(r.post,!1):[""];if(a){var p=Yo(i[0]),h=Yo(i[1]),d=Math.max(i[0].length,i[1].length),m=3==i.length?Math.abs(Yo(i[2])):1,g=is;h0){var E=new Array(b+1).join("0");w=y<0?"-"+E+w.slice(1):E+w}}u.push(w)}}else u=qo(i,(function(t){return ss(t,!1)}));for(var _=0;_65536)throw new TypeError("pattern is too long");var n=this.options;if(!n.noglobstar&&"**"===t)return ls;if(""===t)return"";var r,i="",o=!!n.nocase,s=!1,a=[],c=[],u=!1,l=-1,f=-1,p="."===t.charAt(0)?"":n.dot?"(?!(?:^|\\/)\\.{1,2}(?:$|\\/))":"(?!\\.)",h=this;function d(){if(r){switch(r){case"*":i+=ds,o=!0;break;case"?":i+=hs,o=!0;break;default:i+="\\"+r}h.debug("clearStateChar %j %j",r,i),r=!1}}for(var m,g=0,v=t.length;g-1;x--){var k=c[x],T=i.slice(0,k.reStart),I=i.slice(k.reStart,k.reEnd-8),A=i.slice(k.reEnd-8,k.reEnd),C=i.slice(k.reEnd);A+=C;var O=T.split("(").length-1,P=C;for(g=0;g=0&&!(r=t[i]);i--);for(i=0;i>> no match, partial?",t,f,e,p),f!==s))}if("string"==typeof u?(c=r.nocase?l.toLowerCase()===u.toLowerCase():l===u,this.debug("string match",u,l,c)):(c=l.match(u),this.debug("pattern match",u,l,c)),!c)return!1}if(i===s&&o===a)return!0;if(i===s)return n;if(o===a)return i===s-1&&""===t[i];throw new Error("wtf?")}}function Ns(){return bs||(bs=!0,Ps()),cs}var Ls,Rs=!1;function js(){return Rs||(Rs=!0,Ls={},Ls="function"==typeof Object.create?function(t,e){t.super_=e,t.prototype=Object.create(e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}})}:function(t,e){t.super_=e;var n=function(){};n.prototype=e.prototype,t.prototype=new n,t.prototype.constructor=t}),Ls}var Ds,Fs,Ms,$s=!1;function Bs(t){return"/"===t.charAt(0)}function zs(t){var e=/^([a-zA-Z]:|[\\\/]{2}[^\\\/]+[\\\/]+[^\\\/]+)?([\\\/])?([\s\S]*?)$/.exec(t),n=e[1]||"",r=Boolean(n&&":"!==n.charAt(1));return Boolean(e[2]||r)}function Us(){return $s||($s=!0,Ds={},Ds="win32"===process.platform?zs:Bs,Fs=Bs,Ds.posix=Fs,Ms=zs,Ds.win32=Ms),Ds}var Hs,qs,Gs,Vs,Ws,Xs,Ks,Qs,Zs,Ys,Js,ta,ea,na=!1;function ra(t,e){return Object.prototype.hasOwnProperty.call(t,e)}function ia(t,e){return t.toLowerCase().localeCompare(e.toLowerCase())}function oa(t,e){return t.localeCompare(e)}function sa(t){var e=null;if("/**"===t.slice(-3)){var n=t.replace(/(\/\*\*)+$/,"");e=new ea(n,{dot:!0})}return{matcher:new ea(t,{dot:!0}),gmatcher:e}}function aa(t,e,n){if(n||(n={}),n.matchBase&&-1===e.indexOf("/")){if(n.noglobstar)throw new Error("base matching requires globstar");e="**/"+e}t.silent=!!n.silent,t.pattern=e,t.strict=!1!==n.strict,t.realpath=!!n.realpath,t.realpathCache=n.realpathCache||Object.create(null),t.follow=!!n.follow,t.dot=!!n.dot,t.mark=!!n.mark,t.nodir=!!n.nodir,t.nodir&&(t.mark=!0),t.sync=!!n.sync,t.nounique=!!n.nounique,t.nonull=!!n.nonull,t.nosort=!!n.nosort,t.nocase=!!n.nocase,t.stat=!!n.stat,t.noprocess=!!n.noprocess,t.absolute=!!n.absolute,t.maxLength=n.maxLength||1/0,t.cache=n.cache||Object.create(null),t.statCache=n.statCache||Object.create(null),t.symlinks=n.symlinks||Object.create(null),function(t,e){t.ignore=e.ignore||[],Array.isArray(t.ignore)||(t.ignore=[t.ignore]),t.ignore.length&&(t.ignore=t.ignore.map(sa))}(t,n),t.changedCwd=!1;var r=process.cwd();ra(n,"cwd")?(t.cwd=Ys.resolve(n.cwd),t.changedCwd=t.cwd!==r):t.cwd=r,t.root=n.root||Ys.resolve(t.cwd,"/"),t.root=Ys.resolve(t.root),"win32"===process.platform&&(t.root=t.root.replace(/\\/g,"/")),t.cwdAbs=ta(t.cwd)?t.cwd:la(t,t.cwd),"win32"===process.platform&&(t.cwdAbs=t.cwdAbs.replace(/\\/g,"/")),t.nomount=!!n.nomount,n.nonegate=!0,n.nocomment=!0,t.minimatch=new ea(e,n),t.options=t.minimatch.options}function ca(t){for(var e=t.nounique,n=e?[]:Object.create(null),r=0,i=t.matches.length;rthis.maxLength)return!1;if(!this.stat&&Sa(this.cache,e)){var r=this.cache[e];if(Array.isArray(r)&&(r="DIR"),!n||"DIR"===r)return r;if(n&&"FILE"===r)return!1}var i=this.statCache[e];if(!i){var o;try{o=ma.lstatSync(e)}catch(t){if(t&&("ENOENT"===t.code||"ENOTDIR"===t.code))return this.statCache[e]=!1,!1}if(o&&o.isSymbolicLink())try{i=ma.statSync(e)}catch(t){i=o}else i=o}return this.statCache[e]=i,r=!0,i&&(r=i.isDirectory()?"DIR":"FILE"),this.cache[e]=this.cache[e]||r,(!n||"FILE"!==r)&&r},Aa.prototype._mark=function(t){return Ea.mark(this,t)},Aa.prototype._makeAbs=function(t){return Ea.makeAbs(this,t)}),da}var Oa,Pa=!1;function Na(t,e){if(t&&e)return Na(t)(e);if("function"!=typeof t)throw new TypeError("need wrapper function");return Object.keys(t).forEach((function(e){n[e]=t[e]})),n;function n(){for(var e=new Array(arguments.length),n=0;nr?(n.splice(0,r),process.nextTick((function(){e.apply(null,i)}))):delete Ha[t]}}))}(t))}function Wa(t){for(var e=t.length,n=[],r=0;r1)return!0;for(var i=0;ithis.maxLength)return e();if(!this.stat&&ac(this.cache,n)){var i=this.cache[n];if(Array.isArray(i)&&(i="DIR"),!r||"DIR"===i)return e(null,i);if(r&&"FILE"===i)return e()}var o=this.statCache[n];if(void 0!==o){if(!1===o)return e(null,o);var s=o.isDirectory()?"DIR":"FILE";return r&&"FILE"===s?e():e(null,s,o)}var a=this,c=cc("stat\0"+n,(function(r,i){if(i&&i.isSymbolicLink())return Qa.stat(n,(function(r,o){r?a._stat2(t,n,null,i,e):a._stat2(t,n,r,o,e)}));a._stat2(t,n,r,i,e)}));c&&Qa.lstat(n,c)},mc.prototype._stat2=function(t,e,n,r,i){if(n&&("ENOENT"===n.code||"ENOTDIR"===n.code))return this.statCache[e]=!1,i();var o="/"===t.slice(-1);if(this.statCache[e]=r,"/"===e.slice(-1)&&r&&!r.isDirectory())return i(null,!1,r);var s=!0;return r&&(s=r.isDirectory()?"DIR":"FILE"),this.cache[e]=this.cache[e]||s,o&&"FILE"===s?i():i(null,s,r)}}function vc(){return hc||(hc=!0,gc()),Ka}var yc,wc,bc,Ec,_c,Sc,xc,kc,Tc,Ic=!1;function Ac(t){["unlink","chmod","stat","lstat","rmdir","readdir"].forEach((function(e){t[e]=t[e]||Ec[e],t[e+="Sync"]=t[e]||Ec[e]})),t.maxBusyTries=t.maxBusyTries||3,t.emfileWait=t.emfileWait||1e3,!1===t.glob&&(t.disableGlob=!0),t.disableGlob=t.disableGlob||!1,t.glob=t.glob||xc}function Cc(t,e,n){"function"==typeof e&&(n=e,e={}),wc(t,"rimraf: missing path"),wc.equal(typeof t,"string","rimraf: path should be a string"),wc.equal(typeof n,"function","rimraf: callback function required"),wc(e,"rimraf: invalid options argument provided"),wc.equal(typeof e,"object","rimraf: options should be object"),Ac(e);var r=0,i=null,o=0;if(e.disableGlob||!_c.hasMagic(t))return s(null,[t]);function s(t,s){return t?n(t):0===(o=s.length)?n():void s.forEach((function(t){Oc(t,e,(function s(a){if(a){if(("EBUSY"===a.code||"ENOTEMPTY"===a.code||"EPERM"===a.code)&&r1&&(e=n.shift()),t=n.shift(),u.readdir(r,(function(n,i){return null!=n?t(n):(e&&(i=l.filterExtensions(i,e)),i=(i=i.sort((function(t,e){return t.toLowerCase().localeCompare(e.toLowerCase())}))).map((function(t){return y.join(r,t)})),t(null,i))}))},filterExtensions:function(t,e){return e=e.map((function(t){return""===t?t:"."+t.replace(/^\./,"")})),t.filter((function(t){return _.include(e,y.extname(t))}))},listTreeSync:function(t){var e,n;return n=[],e=function(t){return n.push(t),!0},l.traverseTreeSync(t,e,e),n},move:function(t,e,n){return p(t,e,(function(r,i){var o,s;if(!r)return i?(s=y.dirname(e),u.exists(s,(function(r){if(!r)return l.makeTree(s,(function(r){if(!r)return u.rename(t,e,n);n(r)}));u.rename(t,e,n)}))):((o=new Error("'"+e+"' already exists.")).code="EEXIST",void n(o));n(r)}))},moveSync:function(t,e){var n,r;if(!h(t,e))throw(n=new Error("'"+e+"' already exists.")).code="EEXIST",n;return r=y.dirname(e),u.existsSync(r)||l.makeTreeSync(r),u.renameSync(t,e)},removeSync:function(t){return w.sync(t)},remove:function(t,e){return w(t,e)},writeFileSync:function(t,e,n){return g.sync(y.dirname(t)),u.writeFileSync(t,e,n)},writeFile:function(t,e,n,r){return r=_.last(arguments),g(y.dirname(t),(function(i){return null!=i?"function"==typeof r?r(i):void 0:u.writeFile(t,e,n,r)}))},copy:function(t,e,n){return g(y.dirname(e),(function(r){var i,o;if(null==r)return(o=u.createReadStream(t)).on("error",(function(t){return"function"==typeof n&&n(t),n=null})),(i=u.createWriteStream(e)).on("error",(function(t){return"function"==typeof n&&n(t),n=null})),i.on("close",(function(){return"function"==typeof n&&n(),n=null})),o.pipe(i);"function"==typeof n&&n(r)}))},copySync:function(t,e){var n,r,i,o,s,a,c;for(o=u.readdirSync(t),g.sync(e),c=[],s=0,a=o.length;s0;)r=new Buffer(n),i=u.readSync(s,r,0,r.length,o),u.writeSync(a,r,0,i,o),c.push(o+=i);return c}finally{null!=s&&u.closeSync(s),null!=a&&u.closeSync(a)}},makeTreeSync:function(t){if(!l.isDirectorySync(t))return g.sync(t)},makeTree:function(t,e){return l.isDirectory(t,(function(n){return n?"function"==typeof e?e():void 0:g(t,(function(t){return"function"==typeof e?e(t):void 0}))}))},traverseTreeSync:function(t,e,n){var r;if(null==n&&(n=e),l.isDirectorySync(t))return(r=function(t,e,n){var i,o,s,a,c,l,f;for(c=0,l=(f=u.readdirSync(t)).length;c0},p=function(t,e,n){return u.stat(t,(function(r,i){if(!r)return u.stat(e,(function(r,o){if(!r||"ENOENT"!==r.code)return n(void 0,t.toLowerCase()===e.toLowerCase()&&i.dev===o.dev&&i.ino===o.ino);n(void 0,!0)}));n(r)}))},h=function(t,e){var n,r;return r=b(t),n=b(e),!r||!n||t.toLowerCase()===e.toLowerCase()&&r.dev===n.dev&&r.ino===n.ino},qi=new Proxy({},{get:function(t,e){var n;return null!=(n=l[e])?n:u[e]},set:function(t,e,n){return l[e]=n}})}).call(qi);class Fc{constructor(t){this.props=t,this.model=atom.workspace.buildTextEditor({mini:!0,softWrapped:!0,lineNumberGutterVisible:!1}),this.element=atom.views.getView(this.model),this.model.setText(t.initialText),t.selectAll?this.model.selectAll():this.model.getLastCursor().moveToEndOfScreenLine(),this.setReadOnly(),this.setGrammar(),this.model.scrollToBufferPosition([0,0])}async update(t){this.element=atom.views.getView(this.model),this.props={...this.props,...t},this.setReadOnly(),this.setGrammar()}focus(){this.element.focus()}getModel(){return this.model}setReadOnly(){this.model.setReadOnly(!!this.props.readOnly)}setGrammar(){void 0!==this.props.grammar?atom.textEditors.setGrammarOverride(this.model,this.props.grammar):atom.textEditors.clearGrammarOverride(this.model)}}class Mc{constructor(t){this.props=t,Ft.initialize(this)}async update(t){this.props={...this.props,...t},await Ft.update(this)}render(){return Ft.dom("div",{className:"atomts-rename-view",ref:"main"},Ft.dom("div",{className:"block"},Ft.dom("div",null,Ft.dom("span",{ref:"title"},this.props.title),Ft.dom("span",{className:"subtle-info-message"},Ft.dom("span",null,"Close this panel with "),Ft.dom("span",{className:"highlight"},"esc"),Ft.dom("span",null," key. And commit with the "),Ft.dom("span",{className:"highlight"},"enter"),Ft.dom("span",null," key."))),Ft.dom("div",{className:"find-container block"},Ft.dom("div",{className:"editor-container"},Ft.dom(Fc,{ref:"editor",initialText:this.props.initialText,selectAll:this.props.selectAll}))),this.renderValidationMessage()))}async destroy(){await Ft.destroy(this)}focus(){return this.refs.editor.focus()}getText(){return this.refs.editor.getModel().getText()}renderValidationMessage(){return void 0!==this.props.validationMessage?Ft.dom("div",{className:"highlight-error"},this.props.validationMessage):null}}async function $c(t){const e=new Mc({title:t.title,initialText:t.text,selectAll:t.autoSelect}),n=atom.workspace.addModalPanel({item:e,priority:1e3}),r=document.activeElement;e.focus();const i=new p;try{return await new Promise((n=>{i.add(atom.commands.add(e.refs.main,{"core:cancel":()=>{n(void 0)},"core:confirm":()=>{const r=e.getText(),i=t.onValidate(r);i?be(e.update({validationMessage:i})):n(r)}}))}))}finally{n.destroy(),i.dispose(),r&&r.focus()}}function Bc(t){const e=new p;for(const n of Ei)if("atom-text-editor"===n.selector){const r=n.desc(t);e.add(atom.commands.add(n.selector,n.command,{...r,async didDispatch(t){try{const e=t.currentTarget.getModel();je(e)?await r.didDispatch(e,(()=>t.abortKeyBinding())):(t.abortKeyBinding(),De(e)&&atom.notifications.addWarning("Atom-TypeScript cancelled last command: Current editor has no file path",{description:`Atom-TypeScript needs to determine the file path of the current editor to execute \`${n.command}\`, which it failed to do. You probably just need to save the current file somewhere.`,dismissable:!0}))}catch(t){zc(t)}}}))}else{const r=n.desc(t);e.add(atom.commands.add(n.selector,n.command,{...r,async didDispatch(){try{await r.didDispatch()}catch(t){zc(t)}}}))}return e}function zc(t){atom.notifications.addFatalError("Something went wrong, see details below.",{detail:t.message,dismissable:!0,stack:t.stack})}_i("atom-text-editor","typescript:rename-file",(t=>({description:"Rename current file",async didDispatch(e){const n=e.getPath();if(!n)return;const r=await $c({autoSelect:!0,title:"Rename File",text:n,onValidate:t=>t.trim()?"":"If you want to abort : Press esc to exit"});if(!r)return;const i=await t.getClient(n),o=await i.execute("getEditsForFileRename",{oldFilePath:n,newFilePath:r});await t.applyEdits(o.body),await new Promise(((t,i)=>{qi.move(n,r,(n=>{n?i(n):(e.getBuffer().setPath(r),t())}))}))}}))),_i("atom-text-editor","typescript:rename-refactor",(t=>({description:"Rename symbol under text cursor everywhere it is used",async didDispatch(e){const n=Fe(e);if(!n)return;const r=await t.getClient(n.file),i=await r.execute("rename",n),{info:o,locs:s}=i.body;if(!o.canRename)return void atom.notifications.addInfo("AtomTS: Rename not available at cursor location");const a=await $c({autoSelect:!0,title:"Rename Variable",text:o.displayName,onValidate:t=>t.replace(/\s/g,"")!==t.trim()?"The new variable must not contain a space":t.trim()?"":"If you want to abort : Press esc to exit"});void 0!==a&&await t.applyEdits(s.map((t=>({fileName:t.file,textChanges:t.locs.map((t=>({...t,newText:a})))}))))}}))),_i("atom-workspace","typescript:restart-all-servers",(t=>({description:"Kill all tsserver instances. They will be auto-restarted",async didDispatch(){t.killAllServers()}}))),_i("atom-workspace","typescript:return-from-declaration",(t=>({description:"If used `go-to-declaration`, return to previous text cursor position",async didDispatch(){await t.histGoBack()}}))),_i("atom-workspace","typescript:show-editor-position-history",(t=>({description:"If used `go-to-declaration`, return to previous text cursor position",async didDispatch(){await t.histShowHistory()}}))),_i("atom-text-editor","typescript:toggle-semantic-view",(t=>({description:"Toggle semantic view outline",didDispatch(){t.toggleSemanticViewController()}}))),_i("atom-text-editor","typescript:show-tooltip",(t=>({description:"Show type tooltip at current text cursor position",didDispatch:async e=>t.showTooltipAt(e)}))),_i("atom-text-editor","typescript:show-signature-help",(t=>({description:"Show signature help tooltip at current text cursor position",didDispatch:async e=>t.showSigHelpAt(e)}))),_i("atom-text-editor","typescript:hide-signature-help",(t=>({description:"Hide the currently visible signature help",async didDispatch(e,n){t.hideSigHelpAt(e)||n()}}))),_i("atom-text-editor","typescript:signature-help-next",(t=>({description:"Show next signature help if available",async didDispatch(e,n){t.rotateSigHelp(e,1)||n()}}))),_i("atom-text-editor","typescript:signature-help-prev",(t=>({description:"Show previous signature help if available",async didDispatch(e,n){t.rotateSigHelp(e,-1)||n()}}))),_i("atom-text-editor","typescript:toggle-file-symbols",(t=>({description:"Toggle view for finding file symbols",async didDispatch(e){t.toggleFileSymbolsView(e)}}))),_i("atom-text-editor","typescript:toggle-project-symbols",(t=>({description:"Toggle view for finding file symbols",async didDispatch(e){t.toggleProjectSymbolsView(e)}})));class Uc{constructor(t,e){this.children=e,this.props={...t,delay:{show:0,hide:0}},Ft.initialize(this),this.tooltipDisposable=atom.tooltips.add(this.element,this.props)}async update(t,e){this.props={...this.props,...t},this.children=e,await Ft.update(this),this.tooltipDisposable.dispose(),this.tooltipDisposable=atom.tooltips.add(this.element,this.props)}render(){return Ft.dom("div",{className:"inline-block"},this.children?this.children:null)}async destroy(){await Ft.destroy(this),this.tooltipDisposable.dispose()}}class Hc{constructor(t){this.hiddenBuildStatus=!1,this.disposables=new p,this.buildStatusClicked=()=>{this.props.buildStatus.success||atom.notifications.addError("Build failed",{detail:this.props.buildStatus.message,dismissable:!0})},this.props={...t},this.setHideBuildStatus(atom.config.get("atom-typescript").buildStatusTimeout),this.resetBuildStatusTimeout(),Ft.initialize(this),this.disposables.add(atom.config.onDidChange("atom-typescript.buildStatusTimeout",(({newValue:t})=>{this.setHideBuildStatus(t),be(this.update({}))})))}async update(t){const e=void 0!==t.buildStatus&&t.buildStatus.success!==this.props.buildStatus.success;this.props={...this.props,...t},e&&this.resetBuildStatusTimeout(),await Ft.update(this)}render(){if(this.hiddenBuildStatus)return Ft.dom("span",null);let t,e;return this.props.buildStatus.success?(t="highlight-success",e="Emit Success"):(t="highlight-error",e="Emit Failed"),Ft.dom(Uc,{title:this.props.buildStatus.success?"Build was successful":"Build failed; click to show error message"},Ft.dom("span",{className:t,on:{click:this.buildStatusClicked}},e))}async destroy(){await Ft.destroy(this)}resetBuildStatusTimeout(){this.hiddenBuildStatus=!1,this.props.buildStatus.success&&this.hideBuildStatus()}setHideBuildStatus(t){this.hideBuildStatus=t>0?Ee.debounce((()=>{this.hiddenBuildStatus=!0,be(Ft.update(this))}),1e3*t):0===t?()=>{this.hiddenBuildStatus=!0}:()=>{}}}class qc{constructor(t){this.props={...t},Ft.initialize(this)}async update(t){this.props={...this.props,...t},await Ft.update(this)}render(){return Ft.dom(Uc,{title:()=>this.props.tsConfigPath.startsWith("/dev/null")?"No tsconfig.json":"Click to open "+atom.project.relativize(this.props.tsConfigPath)},Ft.dom("a",{className:"inline-block",href:"",on:{click:t=>{t.preventDefault(),this.openConfigPath()}}},this.props.tsConfigPath.startsWith("/dev/null")?"No project":y((t=this.props.tsConfigPath,"~"+atom.project.relativize(t)))));var t}async destroy(){await Ft.destroy(this)}openConfigPath(){this.props.tsConfigPath.startsWith("/dev/null")?atom.notifications.addInfo("No tsconfig for current file"):be(atom.workspace.open(this.props.tsConfigPath))}}class Gc{constructor(t={}){this.props={visible:!0,pending:[],progress:{max:0,value:0},...t},Ft.initialize(this)}async update(t){this.props={...this.props,...t},await Ft.update(this)}render(){return Ft.dom("ts-status-panel",{className:this.props.visible?"":"hide"},this.renderVersion(),this.renderPending(),this.renderConfigPath(),this.renderStatus(),this.renderProgress())}async destroy(){await Ft.destroy(this)}dispose(){be(this.destroy())}async show(){await this.update({visible:!0})}async hide(){await this.update({visible:!1})}renderVersion(){return void 0!==this.props.clientVersion?Ft.dom(Uc,{title:"Active TypeScript version"},this.props.clientVersion):null}renderPending(){return this.props.pending.length>0?Ft.dom(Uc,{title:`Pending Requests:
    ${this.props.pending.map((({title:t})=>`
  • ${t}
  • `)).join("")}
`,html:!0},Ft.dom("span",{ref:"pendingCounter"},this.props.pending.length.toString()),Ft.dom("span",{ref:"pendingSpinner",className:"loading loading-spinner-tiny inline-block",style:{marginLeft:"5px",opacity:"0.5",verticalAlign:"sub"}})):null}renderConfigPath(){return void 0!==this.props.tsConfigPath?Ft.dom(qc,{tsConfigPath:this.props.tsConfigPath}):null}renderStatus(){return this.props.buildStatus?Ft.dom(Hc,{buildStatus:this.props.buildStatus}):null}renderProgress(){return this.props.progress.value0;)e=this.prevCursorPositions.pop();if(e)return this.open({file:e.file,start:{line:e.line,offset:e.offset}});atom.notifications.addInfo("AtomTS: Previous position not found.")}async goForward(t,e){const n=Fe(t);if(n){this.prevCursorPositions.push(n);const t=100;this.prevCursorPositions.length>t&&this.prevCursorPositions.splice(0,this.prevCursorPositions.length-t)}return this.open(e)}async showHistory(){const t=await bi({items:this.getHistory().slice().reverse().map(((t,e)=>({...t,idx:e}))),itemTemplate:(t,e)=>Ft.dom("li",{className:"two-lines"},Ft.dom("div",{className:"primary-line"},Ft.dom(Cr,{label:t.file,query:e.getFilterQuery()})),Ft.dom("div",{className:"secondary-line"},"Line: ",t.line,", column: ",t.offset)),itemFilterKey:"file"});t&&await this.goHistory(t.idx+1)}getHistory(){return this.prevCursorPositions}dispose(){}serialize(){return this.prevCursorPositions}async open(t){const e=await atom.workspace.open(t.file,{initialLine:t.start.line-1,initialColumn:t.start.offset-1,searchAllPanes:!0});return atom.workspace.isTextEditor(e)&&e.scrollToCursorPosition({center:!0}),e}}class Wc{constructor(t,e){let n,r,i;this.getClient=t,this.editor=e,this.disposables=new p,this.occurrenceMarkers=[],this.disposed=!1;let o=!1;this.disposables.add(atom.config.observe("atom-typescript.occurrenceHighlightDebounceTimeout",(t=>{n=Ee.debounce((()=>{be(this.update())}),t),i=3.5*t})),e.onDidChangeCursorPosition((()=>{void 0===r?n():o=!0})),e.onDidChangePath((()=>n())),e.onDidChangeGrammar((()=>n())),e.onDidChange((()=>{void 0!==r&&clearTimeout(r),r=window.setTimeout((()=>{o&&(n(),o=!1),r=void 0}),i)})))}dispose(){this.disposed||(this.disposed=!0,this.disposables.dispose(),this.clearMarkers())}clearMarkers(){for(const t of this.occurrenceMarkers)t.destroy();this.occurrenceMarkers=[]}async update(){if(this.disposed)return;if(!je(this.editor))return void this.clearMarkers();const t=this.editor.getPath();if(void 0===t)return;const e=await this.getClient(t);if(this.disposed)return;const n=this.editor.getLastCursor().getBufferPosition();try{const r=await e.execute("documentHighlights",{file:t,line:n.row+1,offset:n.column+1,filesToSearch:[t]});if(this.disposed)return;const i=Array.from(this.getNewOccurrenceMarkers(r.body));for(const t of this.occurrenceMarkers)i.includes(t)||t.destroy();this.occurrenceMarkers=i}catch(t){window.atom_typescript_debug&&console.error(t)}}*getNewOccurrenceMarkers(t){for(const e of t)if(e.file===this.editor.getPath())for(const t of e.highlightSpans){const e=ke(t),n=this.occurrenceMarkers.find((t=>t.getBufferRange().isEqual(e)));if(n)yield n;else{const t=this.editor.markBufferRange(e);this.editor.decorateMarker(t,{type:"highlight",class:"atom-typescript-occurrence"}),yield t}}}}class Xc{constructor(t){this.disposables=new p,this.disposables.add(atom.workspace.observeTextEditors((e=>{const n=new Wc(t,e);this.disposables.add(n,e.onDidDestroy((()=>{this.disposables.remove(n),n.dispose()})))})))}dispose(){this.disposables.dispose()}}function Kc(t,e,n,r){let i,o=n.right,s=!1,a="";t.style.left="",t.style.top="",t.style.right="",t.style.bottom="";const c=e.clientWidth,u=getComputedStyle(t),l=parseInt(u.width,10),f=parseInt(u.height,10);if(o+l>=c&&(o=c-l-10),o<0&&(a="pre-wrap",o=10,s=10),"bottom"===r){const t=e.clientHeight;i=n.bottom,i+f>=t&&(i=n.top-f)}else"top"===r&&(i=n.top-f,i<0&&(i=n.bottom));t.style.left=o+"px",t.style.top=i+"px",!1!==s&&(t.style.right=s+"px"),a&&(t.style.whiteSpace=a)}class Qc{constructor(t){this.parent=t,this.props={left:0,right:0,top:0,bottom:0},Ft.initialize(this)}async destroy(){return Ft.destroy(this)}async update(t){var e,n,r;void 0!==(null===(e=t.sigHelp)||void 0===e?void 0:e.selectedItemIndex)&&(null===(n=t.sigHelp)||void 0===n?void 0:n.selectedItemIndex)!==(null===(r=this.props.sigHelp)||void 0===r?void 0:r.selectedItemIndex)&&(this.props.visibleItem=void 0),this.props={...this.props,...t},void 0===this.props.sigHelp?this.props.visibleItem=void 0:void 0!==this.props.visibleItem&&(this.props.visibleItem=this.props.visibleItem%this.props.sigHelp.items.length,this.props.visibleItem<0&&(this.props.visibleItem+=this.props.sigHelp.items.length)),await Ft.update(this)}writeAfterUpdate(){Kc(this.element,this.parent,this.props,atom.config.get("atom-typescript").sigHelpPosition)}render(){return Ft.dom("div",{className:"atom-typescript-tooltip tooltip",key:this.sigHelpHash()},Ft.dom("div",{className:"tooltip-inner"},this.tooltipContents()))}sigHelpHash(){if(!this.props.sigHelp)return;const{start:t,end:e}=this.props.sigHelp.applicableSpan;return`${t.line}:${t.offset}-${e.line}:${e.offset}`}tooltipContents(){if(!this.props.sigHelp)return"…";const{sigHelp:t}=this.props,e=void 0!==this.props.visibleItem?this.props.visibleItem:t.selectedItemIndex,n=t.items.length,r=["atom-typescript-tooltip-signature-help"];function i(n){const i=[];return n===t.selectedItemIndex&&i.push("atom-typescript-tooltip-signature-help-selected"),n===e&&i.push("atom-typescript-tooltip-signature-help-visible"),[...r,...i].join(" ")}return n>1&&r.push("atom-typescript-tooltip-signature-help-changable"),t.items.map(((e,n)=>Ft.dom("div",{className:i(n)},Ft.dom("div",null,Pe(e.prefixDisplayParts),this.renderSigHelpParams(e.parameters,t.argumentIndex),Pe(e.suffixDisplayParts),Ft.dom("div",{className:"atom-typescript-tooltip-signature-help-documentation"},Pe(e.documentation))))))}renderSigHelpParams(t,e){return t.map(((t,n)=>Ft.dom("span",{className:"atom-typescript-tooltip-signature-help-parameter"},n>0?", ":null,Ft.dom("span",{className:n===e?"atom-typescript-tooltip-signature-help-selected":void 0},Pe(t.displayParts)))))}}class Zc{constructor(t,e,n){this.deps=t,this.editor=e,this.cancelled=!1,this.disposables=new f.CompositeDisposable;const r=atom.views.getView(this.editor);this.view=new Qc(r),r.appendChild(this.view.element);const i=Ee.debounce(this.updateTooltip.bind(this),100,{leading:!0});this.disposables.add(this.editor.onDidChangeCursorPosition((t=>{n=t.newBufferPosition,be(i(n))})),r.onDidChangeScrollTop((()=>{setImmediate((()=>this.updateTooltipPosition(n)))})),r.onDidChangeScrollLeft((()=>{setImmediate((()=>this.updateTooltipPosition(n)))}))),be(this.updateTooltip(n))}isDisposed(){return this.cancelled}dispose(){this.cancelled||(this.cancelled=!0,this.disposables.dispose(),be(this.view.destroy()))}async rotateSigHelp(t){const{visibleItem:e,sigHelp:n}=this.view.props,r=void 0!==e?e:void 0!==(null==n?void 0:n.selectedItemIndex)?null==n?void 0:n.selectedItemIndex:0;await this.view.update({visibleItem:r+t})}async updateTooltip(t){if(this.cancelled)return;let e;try{e=this.computeTooltipPosition(t)}catch(t){return void console.warn(t)}const n=await this.getMessage(t);this.cancelled||(n?await this.view.update({...e,sigHelp:n}):this.dispose())}updateTooltipPosition(t){if(this.cancelled)return;const e=this.computeTooltipPosition(t);be(this.view.update({...e}))}computeTooltipPosition(t){const e=atom.views.getView(this.editor),n=e.pixelPositionForBufferPosition(t),r=e.querySelector(".lines").getBoundingClientRect(),i=this.editor.getLineHeightInPixels(),o=e.getBoundingClientRect(),s=n.top+r.top-o.top+i/2,a=n.left+r.left-o.left,c=.7*i;return{left:a,right:a,top:s-c,bottom:s+c}}async getMessage(t){if(!je(this.editor))return;const e=this.editor.getPath();if(void 0===e)return;const n=await this.deps.getClient(e);try{return(await n.execute("signatureHelp",{file:e,line:t.row+1,offset:t.column+1})).body}catch(t){return}}}class Yc{constructor(t){this.deps=t,this.subscriptions=new f.CompositeDisposable,this.editorMap=new WeakMap,this.stoppedChanging=t=>e=>{if(!atom.config.get("atom-typescript.sigHelpDisplayOnChange"))return;if(void 0===t.getPath())return;const n=t.getLastCursor().getBufferPosition(),[r]=e.changes.filter((t=>t.newRange.containsPoint(n)));r&&null!==r.newText.match(/[<(,]/)&&be(this.showTooltip(t,n))},this.subscriptions.add(atom.workspace.observeTextEditors((t=>{const e=new f.CompositeDisposable;e.add(t.onDidDestroy((()=>{e.dispose(),this.subscriptions.remove(e);const n=this.editorMap.get(t);n&&n.dispose()})),t.onDidStopChanging(this.stoppedChanging(t))),this.subscriptions.add(e)})))}dispose(){this.subscriptions.dispose();for(const t of atom.workspace.getTextEditors()){const e=this.editorMap.get(t);e&&e.dispose()}}async showTooltipAt(t){const e=t.getLastCursor().getBufferPosition();return this.showTooltip(t,e)}rotateSigHelp(t,e){const n=this.editorMap.get(t);return!(!n||n.isDisposed())&&(be(n.rotateSigHelp(e)),!0)}hideTooltipAt(t){const e=this.editorMap.get(t);return!(!e||e.isDisposed())&&(e.dispose(),!0)}async showTooltip(t,e){const n=this.editorMap.get(t);n&&!n.isDisposed()||this.editorMap.set(t,new Zc(this.deps,t,e))}}function Jc(t,e,n,r){const i=e=>{const i=e.target.closest(n);i&&t.contains(i)&&r(e)};return t.addEventListener(e,i),new m((()=>{t.removeEventListener(e,i)}))}class tu{constructor(){this.tooltip=null,this.props={left:0,right:0,top:0,bottom:0},Ft.initialize(this)}async destroy(){return Ft.destroy(this)}async update(t){this.props={...this.props,...t},this.tooltip=await ar(this.props.info,Ft,(t=>Ft.dom("div",{className:"atom-typescript-tooltip-tooltip-code"},t))),await Ft.update(this)}writeAfterUpdate(){Kc(this.element,document.body,this.props,atom.config.get("atom-typescript").tooltipPosition)}render(){return Ft.dom("div",{className:"atom-typescript-tooltip tooltip"},Ft.dom("div",{className:"tooltip-inner"},this.tooltip))}}class eu{constructor(t,e,n,r){this.getClient=t,this.cancelled=!1,be(this.initialize(e,n,r))}dispose(){this.cancelled=!0,this.view&&(be(this.view.destroy()),this.view=void 0)}async initialize(t,e,n){const r=atom.views.getView(t);let i,o;try{i=r.pixelPositionForBufferPosition(n),o=r.pixelPositionForBufferPosition(n.traverse([0,1]))}catch(e){return void console.warn(e)}if(i.left>=o.left)return;const s=.7*t.getLineHeightInPixels(),a={left:e.clientX,right:e.clientX,top:e.clientY-s,bottom:e.clientY+s},c=await this.getMessage(t,n);this.cancelled||void 0!==c&&await this.showTooltip(a,c)}async getMessage(t,e){let n;const r=await this.getClient(t);if(!r)return;const i=t.getPath();try{if(void 0===i)return;n=await r.execute("quickinfo",{file:i,line:e.row+1,offset:e.column+1})}catch(t){return}return n.body}async showTooltip(t,e){this.view=new tu,document.body.appendChild(this.view.element),await this.view.update({...t,info:e})}}class nu{constructor(t){this.getClientInternal=t,this.subscriptions=new f.CompositeDisposable,this.editorMap=new WeakMap,this.getClient=async t=>{const e=t.getPath();if(void 0!==e&&je(t)&&_.existsSync(e))return this.getClientInternal(e)},this.clearExprTypeTimeout=()=>{void 0!==this.exprTypeTimeout&&(clearTimeout(this.exprTypeTimeout),this.exprTypeTimeout=void 0),this.hideExpressionType()},this.trackMouseMovement=t=>{let e;return n=>{const r=function(t,e){const n=atom.views.getView(t).getComponent().screenPositionForMouseEvent(e);if(!isNaN(n.row)&&!isNaN(n.column))return t.bufferPositionForScreenPosition(n)}(t,n);r&&(e&&e.isEqual(r)&&this.pendingTooltip||(e=r,this.clearExprTypeTimeout(),this.exprTypeTimeout=window.setTimeout((()=>this.showExpressionType(t,n,r)),atom.config.get("atom-typescript").tooltipDelay)))}},this.subscriptions.add(atom.workspace.observeTextEditors((t=>{const e=atom.views.getView(t),n=e.querySelector(".lines");this.editorMap.set(t,{rawView:e,lines:n});const r=new f.CompositeDisposable;r.add(Jc(e,"mousemove",".scroll-view",this.trackMouseMovement(t)),Jc(e,"mouseout",".scroll-view",this.clearExprTypeTimeout),Jc(e,"keydown",".scroll-view",this.clearExprTypeTimeout),e.onDidChangeScrollTop(this.clearExprTypeTimeout),e.onDidChangeScrollLeft(this.clearExprTypeTimeout),t.onDidDestroy((()=>{r.dispose(),this.subscriptions.remove(r),this.clearExprTypeTimeout()}))),this.subscriptions.add(r)})))}dispose(){this.subscriptions.dispose(),this.clearExprTypeTimeout()}showExpressionAt(t){const e=t.getLastCursor().getBufferPosition(),n=atom.views.getView(t);let r;try{r=n.pixelPositionForBufferPosition(e)}catch(t){return void console.warn(t)}this.showExpressionType(t,this.mousePositionForPixelPosition(t,r),e)}mousePositionForPixelPosition(t,e){const n=atom.views.getView(t).querySelector(".lines").getBoundingClientRect();return{clientY:e.top+n.top+t.getLineHeightInPixels()/2,clientX:e.left+n.left}}showExpressionType(t,e,n){this.pendingTooltip&&this.pendingTooltip.dispose(),this.pendingTooltip=new eu(this.getClient,t,e,n)}hideExpressionType(){this.pendingTooltip&&(this.pendingTooltip.dispose(),this.pendingTooltip=void 0)}}class ru{constructor(t){this.getClient=t,this.subscriptions=new p;const e=atom.workspace.paneForURI("atom-typescript://semantic-view");e&&(this.view=e.itemForURI("atom-typescript://semantic-view")),this.view&&be(this.view.setGetClient(this.getClient)),this.subscriptions.add(new m((()=>{this.view&&(atom.workspace.hide(this.view),be(this.view.destroy()))})),atom.config.observe("atom-typescript.showSemanticView",(t=>{t?be(this.show()):this.hide()})))}dispose(){this.subscriptions.dispose()}async toggle(){this.view?await atom.workspace.toggle(this.view):await this.show()}async show(){this.view||(this.view=Ve.create({navTree:null}),await this.view.setGetClient(this.getClient)),await atom.workspace.open(this.view,{searchAllPanes:!0})}hide(){return!!this.view&&atom.workspace.hide(this.view)}}class iu{constructor(t){this.position=t.position,this.name=t.name,this.type=t.type,this.parent=t.parent,this.file=t.file}static fromNavTree(t,e){const n=t.spans[0].start;return new iu({name:t.text,type:t.kind,position:{row:n.line-1,column:n.offset-1},parent:null!=e?e:null})}static fromNavto(t,e){const n=t.start;return new iu({name:t.name,type:t.kind,position:{row:n.line-1,column:n.offset-1},parent:null!=e?e:null,file:t.file})}}async function ou(t,e){const n=await async function(t,e){try{const n=await e.getClient(t);return(await n.execute("navtree",{file:t})).body}catch(e){console.error(t,e)}}(t,e);return n&&n.childItems?Array.from(au(n.childItems)):[]}async function su(t,e,n){const r=await async function(t,e,n){try{const r=await n.getClient(t);return(await r.execute("navto",{file:t,currentFileOnly:!1,searchValue:e,maxResultCount:1e3})).body}catch(e){console.error(t,e)}}(t,e,n);return r?Array.from(function*(t,e){for(const n of t)yield iu.fromNavto(n,e)}(r)):[]}function*au(t,e){t.sort(((t,e)=>t.spans[0].start.line-e.spans[0].start.line));for(const n of t){const t=iu.fromNavTree(n,e);yield t,n.childItems&&(yield*au(n.childItems,t))}}async function cu(t,e,n){if(void 0!==t.file)return n(e,{file:t.file,start:{line:t.position.row+1,offset:t.position.column+1}})}async function uu(t,e){const n=t.getPath();if(void 0!==n){let r;atom.config.get("symbols-view.quickJumpToFileSymbol")&&(r=function(t){const e=atom.views.getView(t).getScrollTop();return{bufferRanges:t.getSelectedBufferRanges(),scrollTop:e}}(t));const i=await bi({items:ou(n,e),itemTemplate:({name:t,position:e},n)=>Ft.dom("li",{className:"two-lines"},Ft.dom("div",{className:"primary-line"},Ft.dom(Cr,{label:t,query:n.getFilterQuery()})),Ft.dom("div",{className:"secondary-line"},"Line "+(e.row+1))),didChangeSelection(e){atom.config.get("symbols-view.quickJumpToFileSymbol")&&e&&t.setCursorBufferPosition(e.position)},itemFilterKey:"name"});i?await cu(i,t,e.histGoForward):r&&function(t,{bufferRanges:e,scrollTop:n}){const r=atom.views.getView(t);t.setSelectedBufferRanges(e),r.setScrollTop(n)}(t,r)}}class lu{constructor(t){this.deps=t}toggleFileView(t){be(uu(t,this.deps))}toggleProjectView(t){be(async function(t,e){const n=t.getPath();if(void 0!==n){const r=await bi({items:t=>su(n,t,e),itemTemplate({name:t,position:e,file:n},r){const i=atom.project.relativize(n);return Ft.dom("li",{className:"two-lines"},Ft.dom("div",{className:"primary-line"},Ft.dom(Cr,{label:t,query:r.getFilterQuery()})),Ft.dom("div",{className:"secondary-line"},`File ${i} line ${e.row+1}`))},itemFilterKey:"name"});r&&await cu(r,t,e.histGoForward)}}(t,this.deps))}dispose(){}}class fu{constructor(){this.errors=new Map,this.fileGrammars=new Map,this.pushErrors=Ee.debounce(this.pushErrors.bind(this),100)}*getErrorsInRange(t,e){for(const n of this.errors.values()){const r=n.get(v.normalize(t));r&&(yield*r.filter((t=>ke(t).intersectsWith(e))))}}*getErrorsAt(t,e){for(const n of this.errors.values()){const r=n.get(v.normalize(t));r&&(yield*r.filter((t=>ke(t).containsPoint(e))))}}setErrors(t,e,n){let r=this.errors.get(t);r||(r=new Map,this.errors.set(t,r)),r.set(v.normalize(e),n),this.pushErrors()}clearFileErrors(t){for(const e of this.errors.values())e.delete(t);this.pushErrors()}clear(){this.linter&&this.linter.clearMessages()}setLinter(t){this.linter=t,this.pushErrors()}dispose(){this.clear(),this.linter&&this.linter.dispose(),this.linter=void 0}pushErrors(){this.linter&&this.linter.setAllMessages(this.getLinterErrors())}getLinterErrors(){if(atom.config.get("atom-typescript.suppressAllDiagnostics"))return[];const t=[];for(const e of this.errors.values())for(const[n,r]of e){const e=atom.workspace.getTextEditors().find((t=>t.getPath()===n)),i=e?e.getGrammar().scopeName:this.selectGrammar(n);if(!pu("suppressAllDiagnostics",i))for(const e of r){if(pu("ignoredDiagnosticCodes",i).includes(""+e.code))continue;if(pu("ignoreUnusedSuggestionDiagnostics",i)&&e.reportsUnnecessary)continue;if("suggestion"===e.category&&pu("ignoredSuggestionDiagnostics",i).includes(""+e.code))continue;if(pu("ignoreNonSuggestionSuggestionDiagnostics",i)&&"suggestion"===e.category&&!Ne(e.code,_e.Suggestion))continue;let{start:r,end:o}=e;r&&o||(r=o={line:1,offset:1}),t.push({severity:this.getSeverity(pu("unusedAsInfo",i),e),excerpt:e.text,location:{file:n,position:Te(r,o)}})}}return t}selectGrammar(t){const e=this.fileGrammars.get(t);if(void 0!==e)return e;const n=atom.grammars.selectGrammar(t,"").scopeName;return this.fileGrammars.set(t,n),n}getSeverity(t,e){if(t&&6133===e.code)return"info";switch(e.category){case"error":return"error";case"warning":return"warning";default:return"info"}}}function pu(t,e){return atom.config.get("atom-typescript."+t,{scope:[e]})}class hu{constructor(t,e){let n;this.buffer=t,this.deps=e,this.events=new f.Emitter,this.compileOnSave=!1,this.subscriptions=new f.CompositeDisposable,this.on=this.events.on.bind(this.events),this.dispose=()=>{this.subscriptions.dispose(),be(this.close())},this.init=async()=>{this.state&&(await this.state.client.execute("open",{file:this.state.filePath,fileContent:this.buffer.getText()}),be(this.getErr({allFiles:!1,delay:0})))},this.close=async()=>{if(await this.openPromise,this.state){const t=this.state.client,e=this.state.filePath;this.deps.clearFileErrors(e),this.state.subscriptions.dispose(),this.state=void 0,await t.execute("close",{file:e})}},this.onDidChangePath=t=>{be(this.close().then((()=>{this.openPromise=this.open(t)})))},this.onDidSave=async()=>{await Promise.all([this.getErr({allFiles:!0,delay:100}),this.doCompileOnSave()])},this.onDidChangeText=async({changes:t})=>{if(0===t.length||!this.state)return;const{client:e,filePath:n}=this.state;await Promise.all(t.reduceRight(((t,{oldRange:r,newText:i})=>(t.push(e.execute("change",{file:n,line:r.start.row+1,offset:r.start.column+1,endLine:r.end.row+1,endOffset:r.end.column+1,insertString:i})),t)),[]))},this.subscriptions.add(atom.config.observe("atom-typescript.getErrDebounceTimeout",(t=>{n=Ee.debounce((()=>{be(this.getErr({allFiles:!1,delay:0}))}),t)})),t.onDidChangePath(this.onDidChangePath),t.onDidDestroy(this.dispose),t.onDidSave((()=>{be(this.onDidSave())})),t.onDidStopChanging((({changes:t})=>{t.length>0&&this.deps.reportBuildStatus(void 0)})),t.onDidChangeText((t=>{be(this.onDidChangeText(t)),n()}))),this.openPromise=this.open(this.buffer.getPath())}static create(t,e){const n=hu.bufferMap.get(t);if(n)return n;{const n=new hu(t,e);return hu.bufferMap.set(t,n),n}}getPath(){return this.state&&this.state.filePath}getInfo(){if(this.state)return{clientVersion:this.state.client.version,tsConfigPath:this.state.configFile&&this.state.configFile.getPath()}}async getErr(t){if(!this.state)return;const e=t.allFiles?Array.from(function*(){for(const t of atom.workspace.getTextEditors())je(t)&&(yield t.getPath())}()):[this.state.filePath];await this.state.client.execute("geterr",{files:e,delay:t.delay})}async compile(){if(!this.state)return;const{client:t,filePath:e}=this.state,n=await t.execute("compileOnSaveAffectedFileList",{file:e}),r=Ee.flatten(n.body.map((t=>t.fileNames)));if(0===r.length)return;const i=r.map((e=>t.execute("compileOnSaveEmitFile",{file:e})));if(!(await Promise.all(i)).every((t=>!!t.body)))throw new Error("Some files failed to emit")}async doCompileOnSave(){if(this.compileOnSave){this.deps.reportBuildStatus(void 0);try{await this.compile(),this.deps.reportBuildStatus({success:!0})}catch(t){const e=t;console.error("Save failed with error",e),this.deps.reportBuildStatus({success:!1,message:e.message})}}}async open(t){if(void 0===t||!Le(t))return this.close();{const e=await this.deps.getClient(t);this.state={client:e,filePath:t,configFile:void 0,subscriptions:new f.CompositeDisposable},this.state.subscriptions.add(e.on("restarted",(()=>be(this.init())))),await this.init();const n=await e.execute("projectInfo",{needFileNameList:!1,file:t});void 0!==n.body.configFileName&&(this.state.configFile=new f.File(n.body.configFileName),await this.readConfigFile(),this.state.subscriptions.add(this.state.configFile.onDidChange((()=>be(this.readConfigFile()))))),this.events.emit("opened")}}async readConfigFile(){if(!this.state||!this.state.configFile)return;const t=Ie(this.state.configFile.getPath());this.compileOnSave=t.compileOnSave;const e=atom.config.get("atom-typescript");await this.state.client.execute("configure",{file:this.state.filePath,formatOptions:t.formatCodeOptions,preferences:{includeCompletionsWithInsertText:!0,includeCompletionsForModuleExports:e.includeCompletionsForModuleExports,quotePreference:e.quotePreference,importModuleSpecifierEnding:e.importModuleSpecifierEnding,importModuleSpecifierPreference:e.importModuleSpecifierPreference,...t.preferences}})}}hu.bufferMap=new WeakMap;class du{constructor(t,e){this.editor=t,this.opts=e,this.subscriptions=new p,this.isTypescript=!1,this.destroy=()=>{atom.views.getView(this.editor).classList.remove("typescript-editor"),this.subscriptions.dispose()},this.didActivate=()=>{this.isTypescript&&this.reportInfo()},this.onOpened=()=>{atom.workspace.getActiveTextEditor()===this.editor&&this.reportInfo()},this.checkIfTypescript=()=>{this.isTypescript=je(this.editor),this.isTypescript?atom.views.getView(this.editor).classList.add("typescript-editor"):atom.views.getView(this.editor).classList.remove("typescript-editor")},this.buffer=hu.create(t.getBuffer(),e),this.subscriptions.add(this.buffer.on("opened",this.onOpened)),this.checkIfTypescript(),this.subscriptions.add(t.onDidChangePath(this.checkIfTypescript),t.onDidChangeGrammar(this.checkIfTypescript),t.onDidDestroy(this.destroy),t.onDidSave((()=>{atom.config.get("atom-typescript.checkAllFilesOnSave")&&atom.commands.dispatch(atom.views.getView(t),"typescript:check-all-files")})))}static createFactory(t){return e=>{let n=du.editorMap.get(e);return n||(n=new du(e,t),du.editorMap.set(e,n)),n}}static lookupPane(t){return du.editorMap.get(t)}reportInfo(){const t=this.buffer.getInfo();t&&this.opts.reportClientInfo(t)}}du.editorMap=new WeakMap;class mu{constructor(t){this.usingBuiltinTooltipManager=!0,this.usingBuiltinSigHelpManager=!0,this.pending=new Set,this.clearErrors=()=>{this.errorPusher.clear()},this.clearFileErrors=t=>{this.errorPusher.clearFileErrors(t)},this.getClient=async t=>this.clientResolver.get(t),this.killAllServers=()=>{be(this.clientResolver.restartAllServers())},this.withBuffer=async(t,e)=>{const n=v.normalize(t),r=atom.workspace.getTextEditors().find((t=>t.getPath()===n));if(r)return e(r.getBuffer());const i=await f.TextBuffer.load(n);try{return await e(i)}finally{i.isModified()&&await i.save(),i.destroy()}},this.reportBusyWhile=async(t,e)=>{if(this.busySignalService)return this.busySignalService.reportBusyWhile(t,e);{const n={title:t};try{return this.pending.add(n),this.drawPending(Array.from(this.pending)),await e()}finally{this.pending.delete(n),this.drawPending(Array.from(this.pending))}}},this.reportProgress=t=>{be(this.statusPanel.update({progress:t}))},this.reportBuildStatus=t=>{be(this.statusPanel.update({buildStatus:t}))},this.reportClientInfo=t=>{be(this.statusPanel.update(t))},this.applyEdits=async t=>{Promise.all(t.map((t=>this.withBuffer(t.fileName,(async e=>{e.transact((()=>{const n=t.textChanges.map((t=>({range:ke(t),newText:t.newText}))).reverse().sort(((t,e)=>e.range.compare(t.range)));for(const t of n)e.setTextInRange(t.range,t.newText)}))})))))},this.showTooltipAt=async t=>{this.usingBuiltinTooltipManager?this.tooltipManager.showExpressionAt(t):await atom.commands.dispatch(atom.views.getView(t),"datatip:toggle")},this.showSigHelpAt=async t=>{this.usingBuiltinSigHelpManager?await this.sigHelpManager.showTooltipAt(t):await atom.commands.dispatch(atom.views.getView(t),"signature-help:show")},this.hideSigHelpAt=t=>!!this.usingBuiltinSigHelpManager&&this.sigHelpManager.hideTooltipAt(t),this.rotateSigHelp=(t,e)=>!!this.usingBuiltinSigHelpManager&&this.sigHelpManager.rotateSigHelp(t,e),this.histGoForward=(t,e)=>this.editorPosHist.goForward(t,e),this.drawPending=Ee.throttle((t=>be(this.statusPanel.update({pending:t}))),100,{leading:!1}),this.subscriptions=new p,this.clientResolver=new or(this.reportBusyWhile),this.subscriptions.add(this.clientResolver),this.statusPanel=new Gc,this.subscriptions.add(this.statusPanel),this.errorPusher=new fu,this.subscriptions.add(this.errorPusher),this.codefixProvider=new Bi(this.clientResolver,this.errorPusher,this.applyEdits),this.subscriptions.add(this.codefixProvider),this.semanticViewController=new ru(this.getClient),this.subscriptions.add(this.semanticViewController),this.editorPosHist=new Vc(t&&t.editorPosHistState),this.subscriptions.add(this.editorPosHist),this.symbolsViewController=new lu({histGoForward:this.histGoForward,getClient:this.getClient}),this.subscriptions.add(this.symbolsViewController),this.tooltipManager=new nu(this.getClient),this.subscriptions.add(this.tooltipManager),this.sigHelpManager=new Yc({getClient:this.getClient}),this.subscriptions.add(this.sigHelpManager),this.occurrenceManager=new Xc(this.getClient),this.subscriptions.add(this.occurrenceManager),this.typescriptPaneFactory=du.createFactory({clearFileErrors:this.clearFileErrors,getClient:this.getClient,reportBuildStatus:this.reportBuildStatus,reportClientInfo:this.reportClientInfo}),this.subscribeEditors(),this.subscriptions.add(Bc({getClient:this.getClient,applyEdits:this.applyEdits,clearErrors:this.clearErrors,killAllServers:this.killAllServers,reportProgress:this.reportProgress,reportBuildStatus:this.reportBuildStatus,toggleSemanticViewController:()=>{be(this.semanticViewController.toggle())},toggleFileSymbolsView:t=>{this.symbolsViewController.toggleFileView(t)},toggleProjectSymbolsView:t=>{this.symbolsViewController.toggleProjectView(t)},histGoForward:this.histGoForward,histGoBack:()=>this.editorPosHist.goBack(),histShowHistory:()=>this.editorPosHist.showHistory(),showTooltipAt:this.showTooltipAt,showSigHelpAt:this.showSigHelpAt,hideSigHelpAt:this.hideSigHelpAt,rotateSigHelp:this.rotateSigHelp}))}destroy(){this.subscriptions.dispose();for(const t of atom.workspace.getTextEditors()){const e=du.lookupPane(t);e&&e.destroy()}}serialize(){return{version:"0.1",editorPosHistState:this.editorPosHist.serialize()}}consumeLinter(t){const e=t({name:"TypeScript"});this.errorPusher.setLinter(e),this.subscriptions.add(this.clientResolver.on("diagnostics",(({type:t,filePath:e,diagnostics:n})=>{this.errorPusher.setErrors(t,e,n)})))}consumeStatusBar(t){let e=100;for(const n of t.getRightTiles())"GRAMMAR-SELECTOR-STATUS"===atom.views.getView(n.getItem()).tagName&&(e=n.getPriority()-1);const n=t.addRightTile({item:this.statusPanel,priority:e}),r=new f.Disposable((()=>{n.destroy()}));return this.subscriptions.add(r),r}consumeDatatipService(t){if(atom.config.get("atom-typescript").preferBuiltinTooltips)return;const e=t.addProvider(new lr(this.getClient));return this.subscriptions.add(e),this.tooltipManager.dispose(),this.usingBuiltinTooltipManager=!1,e}consumeSigHelpService(t){if(atom.config.get("atom-typescript").preferBuiltinSigHelp)return;const e=new Ai(this.getClient),n=t(e);return this.subscriptions.add(n,e),this.sigHelpManager.dispose(),this.usingBuiltinSigHelpManager=!1,n}consumeBusySignal(t){if(atom.config.get("atom-typescript").preferBuiltinBusySignal)return;this.busySignalService=t;const e={dispose:()=>{this.busySignalService&&this.busySignalService.dispose(),this.busySignalService=void 0}};return this.subscriptions.add(e),e}provideAutocomplete(){return[new Oi(this.getClient,this.applyEdits)]}provideIntentions(){return t=this.codefixProvider,{grammarScopes:["*"],getIntentions:async({bufferPosition:e,textEditor:n})=>(await t.runCodeFix(n,e)).map((e=>({priority:100,title:"description"in e?e.description:e.actionDescription,selected:()=>{be(t.applyFix(e))}})))};var t}provideIntentionsHighlight(){return t=this.codefixProvider,{grammarScopes:["*"],getIntentions:async({visibleRange:e,textEditor:n})=>(await t.getFixableRanges(n,e)).map((t=>({range:t,created:t=>{}})))};var t}provideCodeActions(){return t=this.codefixProvider,{grammarScopes:Re(),priority:0,getCodeActions:async(e,n,r)=>(await t.runCodeFix(e,n.start)).map((e=>({getTitle:async()=>"description"in e?e.description:e.actionDescription,dispose:()=>{},apply:async()=>{await t.applyFix(e)}})))};var t}provideHyperclick(){return t=this.getClient,e=this.histGoForward,{priority:0,providerName:"typescript-hyperclick-provider",wordRegExp:/([A-Za-z0-9_])+|['"`](\\.|[^'"`\\\\])*['"`]/g,async getSuggestionForWord(n,r,i){if(!je(n))return;const o=n.getPath();return void 0!==o?{range:i,callback:async()=>{var r;const s={file:o,line:i.start.row+1,offset:i.start.column+1},a=await t(s.file),c=await a.execute("definition",s),u=c.body?c.body[0]:void 0;if(1===(null===(r=c.body)||void 0===r?void 0:r.length)&&(null==u?void 0:u.start.line)===s.line&&(null==u?void 0:u.start.offset)===s.offset){const t=await a.execute("references",s);await Si(t,n,e)}else await xi(c,n,e)}}:void 0}};var t,e}provideReferences(){return t=this.getClient,{isEditorSupported:async t=>je(t),async findReferences(e,n){const r=Fe(e,n);if(!r)return;const i=await t(r.file),o=await i.execute("references",r);return o.body?{type:"data",baseUri:r.file,referencedSymbolName:o.body.symbolDisplayString,references:o.body.refs.map(hr)}:void 0}};var t}provideOutlines(){return t=this.getClient,{name:"Atom-TypeScript",grammarScopes:Re(),priority:100,updateOnEdit:!0,async getOutline(e){const n=e.getPath();if(void 0===n)return;const r=await t(n),i=(await r.execute("navtree",{file:n})).body;return i?{outlineTrees:[ki(i)]}:void 0}};var t}provideDefinitions(){var t;if(!atom.config.get("atom-typescript").disableAtomIdeDefinitions)return t=this.getClient,{priority:0,grammarScopes:Re(),wordRegExp:/([A-Za-z0-9_])+|['"`](\\.|[^'"`\\\\])*['"`]/g,async getDefinition(e,n){if(!je(e))return;const r=Fe(e,n);if(!r)return;const i=await t(r.file),o=await i.execute("definition",r);return o.body&&0!==o.body.length?{queryRange:void 0,definitions:o.body.map(pr)}:void 0}}}provideCodeHighlight(){if(!atom.config.get("atom-typescript").preferBuiltinOccurrenceHighlight)return this.occurrenceManager.dispose(),sr(this.getClient)}subscribeEditors(){this.subscriptions.add(atom.workspace.observeTextEditors((t=>{this.typescriptPaneFactory(t)})),atom.workspace.onDidChangeActiveTextEditor((t=>{if(t&&je(t)){be(this.statusPanel.show());const e=du.lookupPane(t);e&&e.didActivate()}else be(this.statusPanel.hide())})))}}let gu;var vu=x(Ft);exports.activate=function(t){vu.setScheduler(atom.views),gu=new mu(t),setImmediate((()=>be(async function(){["atom-ide-ui","linter","nuclide"].some((t=>atom.packages.isPackageLoaded(t)))||await I.install("atom-typescript",!0)}())))},exports.deactivate=function(){gu&&gu.destroy(),gu=void 0},exports.serialize=function(){return gu?gu.serialize():void 0},exports.deserializeSemanticView=function(t){return Ve.create(t.data)},exports.consumeLinter=function(t){if(gu)return gu.consumeLinter(t)},exports.consumeStatusBar=function(t){if(gu)return gu.consumeStatusBar(t)},exports.consumeDatatipService=function(t){if(gu)return gu.consumeDatatipService(t)},exports.consumeSignatureHelp=function(t){if(gu)return gu.consumeSigHelpService(t)},exports.consumeBusySignal=function(t){if(gu)return gu.consumeBusySignal(t)},exports.provideAutocomplete=function(){if(gu)return gu.provideAutocomplete()},exports.provideIntentions=function(){if(gu)return gu.provideIntentions()},exports.provideIntentionsHighlight=function(){if(gu)return gu.provideIntentionsHighlight()},exports.provideCodeActions=function(){if(gu)return gu.provideCodeActions()},exports.provideHyperclick=function(){if(gu)return gu.provideHyperclick()},exports.provideReferences=function(){if(gu)return gu.provideReferences()},exports.provideOutlines=function(){if(gu)return gu.provideOutlines()},exports.provideDefinitions=function(){if(gu)return gu.provideDefinitions()},exports.provideCodeHighlight=function(){if(gu)return gu.provideCodeHighlight()},exports.$f9b0166ef7b5e7f5ad26e9362409c1dc$init=function(){return O}; +var t="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:"undefined"!=typeof global?global:{};function e(t){return t&&t.__esModule?t.default:t}function n(t,e,n){Object.defineProperty(t,e,{get:n,enumerable:!0})}function r(t,e){return Object.keys(e).forEach((function(n){"default"!==n&&"__esModule"!==n&&Object.defineProperty(t,n,{enumerable:!0,get:function(){return e[n]}})})),t}require("crypto").createHash;var i=require("module"),o=(require("events").EventEmitter,require("assert")),s=require("timers").setImmediate,a=require("util"),u=r({},a),c=a.inherits,l=require("stream"),f=l.Transform,d=l.Readable,p=e(require("typescript")),h=require("atom"),g=h.CompositeDisposable,m=h.TextEditor,v=h.Point,y=h.Range,w=h.TextBuffer,b=h.Disposable,_=h.Emitter,x=h.BufferedNodeProcess,S=(h.BufferedProcess,h.File),k=require("path"),E=k,C=k.extname,P=k.join,A=k.dirname,T=k.normalize,O=k.delimiter,I=k.resolve,j=k.isAbsolute,N=k.relative,D=k.parse,M=k.sep,L=require("fs"),F=L,R=e(L),B=L.access,$=L.constants,z=L.readFile,q=L.realpath,H=L.stat,U=L.realpathSync,V=L.statSync,W=(L.readFileSync,L.lstatSync),G=L.readlinkSync,K=L.lstat,Q=L.readlink,Z=L.readdirSync,X=L.readdir,Y=require("child_process").spawn,J=require("os"),tt={};Object.defineProperty(tt,"__esModule",{value:!0});var et=F,nt=E;function rt(t){return t&&"object"==typeof t&&"default"in t?t:{default:t}}var it=rt(J),ot=rt(et),st=rt(nt);const at=/\s+at.*(?:\(|\s)(.*)\)?/,ut=/^(?:(?:(?:node|(?:internal\/[\w/]*|.*node_modules\/(?:babel-polyfill|pirates)\/.*)?\w+)\.js:\d+:\d+)|native)/,ct=void 0===it.default.homedir?"":it.default.homedir();class lt extends Error{constructor(t){if(!Array.isArray(t))throw new TypeError("Expected input to be an Array, got "+typeof t);let e=(t=[...t].map((t=>t instanceof Error?t:null!==t&&"object"==typeof t?Object.assign(new Error(t.message),t):new Error(t)))).map((t=>{return"string"==typeof t.stack?(t=>t.replace(/\s+at .*aggregate-error\/index.js:\d+:\d+\)?/g,""))((e=t.stack,n=Object.assign({pretty:!1},n),e.replace(/\\/g,"/").split("\n").filter((t=>{const e=t.match(at);if(null===e||!e[1])return!0;const n=e[1];return!n.includes(".app/Contents/Resources/electron.asar")&&!n.includes(".app/Contents/Resources/default_app.asar")&&!ut.test(n)})).filter((t=>""!==t.trim())).map((t=>n.pretty?t.replace(at,((t,e)=>t.replace(e,e.replace(ct,"~")))):t)).join("\n"))):String(t);var e,n})).join("\n");e="\n"+((t,e=1,n)=>{if(n={indent:" ",includeEmptyLines:!1,...n},"string"!=typeof t)throw new TypeError(`Expected \`input\` to be a \`string\`, got \`${typeof t}\``);if("number"!=typeof e)throw new TypeError(`Expected \`count\` to be a \`number\`, got \`${typeof e}\``);if("string"!=typeof n.indent)throw new TypeError(`Expected \`options.indent\` to be a \`string\`, got \`${typeof n.indent}\``);if(0===e)return t;const r=n.includeEmptyLines?/^/gm:/^(?!\s*$)/gm;return t.replace(r,n.indent.repeat(e))})(e,4),super(e),this.name="AggregateError",Object.defineProperty(this,"_errors",{value:t})}*[Symbol.iterator](){for(const t of this._errors)yield t}}var ft=lt;const dt=(t,e,n)=>new Promise(((r,i)=>{if(n=Object.assign({concurrency:1/0},n),"function"!=typeof e)throw new TypeError("Mapper function is required");const{concurrency:o}=n;if(!("number"==typeof o&&o>=1))throw new TypeError(`Expected \`concurrency\` to be a number from 1 and up, got \`${o}\` (${typeof o})`);const s=[],a=t[Symbol.iterator]();let u=!1,c=!1,l=0,f=0;const d=()=>{if(u)return;const t=a.next(),n=f;if(f++,t.done)return c=!0,void(0===l&&r(s));l++,Promise.resolve(t.value).then((t=>e(t,n))).then((t=>{s[n]=t,l--,d()}),(t=>{u=!0,i(t)}))};for(let t=0;t(await pt(t,((t,n)=>Promise.all([e(t,n),t])),n)).filter((t=>Boolean(t[0]))).map((t=>t[1]));var mt=gt,vt=gt;mt.default=vt;const yt="undefined"!=typeof atom,wt="undefined"!=typeof atom&&(atom.inDevMode()||atom.inSpecMode()); +/*! +* escape-html +* Copyright(c) 2012-2013 TJ Holowaychuk +* Copyright(c) 2015 Andreas Lubbe +* Copyright(c) 2015 Tiancheng "Timothy" Gu +* MIT Licensed +*/ +var bt=/["'&<>]/,_t=function(t){var e,n=""+t,r=bt.exec(n);if(!r)return n;var i="",o=0,s=0;for(o=r.index;o{const i={stdout:r.stdout?[]:null,stderr:r.stderr?[]:null};r.on("error",e),r.stdout&&r.stdout.on("data",(function(t){i.stdout.push(t),n.handleStdout&&n.handleStdout(t)})),r.stderr&&r.stderr.on("data",(function(t){i.stderr.push(t),n.handleStderr&&n.handleStderr(t)})),r.on("close",(e=>{let r=null;null!=i.stdout&&(r=null===n.encoding||"buffer"===n.encoding?Buffer.concat(i.stdout):i.stdout.join(""));let o=null;null!=i.stderr&&(o=null===n.encoding||"buffer"===n.encoding?Buffer.concat(i.stderr):i.stderr.join("")),t({exitCode:e,stdout:r,stderr:o})}))}));return n.handleChildProcess(r),i}(t,e,{...n,handleChildProcess:function(t){r=t}});return i.kill=function(t){return r.kill(t)},i}async function St(t){if(yt){const e=await async function(t){var e;const n=atom.packages.getLoadedPackage(t.name);return null==n?null:null!==(e=n.metadata.version)&&void 0!==e?e:null}(t);if(e)return e}return async function(t){var e,n;const{directory:r}=t;if(null==r)return null;let i=null;try{i=JSON.parse(await ot.default.promises.readFile(st.default.join(r,"package.json"),"utf8"))}catch(t){return null}return null!==(e=null===(n=i)||void 0===n?void 0:n.version)&&void 0!==e?e:null}(t)}const kt=yt?async function(t){return atom.packages.resolvePackagePath(t)}:async function(t){var e;const n=st.default.join(null!==(e=process.env.ATOM_HOME)&&void 0!==e?e:st.default.join(it.default.homedir(),".atom"),"packages",t);try{return await ot.default.promises.access(n,ot.default.constants.R_OK),n}catch(t){return null}};function Et(t,e){if(!t)throw new Error(null!=e?e:"Invariant violation")}async function Ct(t){const e=await(yt?async function(t){const e=atom.packages.getLoadedPackage(t),n=e&&e.metadata["package-deps"];return Array.isArray(n)?n:[]}(t):async function(t){let e=null;try{e=await ot.default.promises.stat(t)}catch(t){}if(null==e||!e.isDirectory())throw new Error("[Package-Deps] Expected packageName to be a readable directory in Node.js invocation");let n=null;try{const e=await ot.default.promises.readFile(st.default.join(t,"package.json"),"utf8");n=JSON.parse(e)}catch(t){}const r=null==n||"object"!=typeof n?[]:n["package-deps"];return Array.isArray(r)?r:[]}(t));return wt&&(Et(Array.isArray(e),`Dependencies for ${t} are not a valid array`),e.forEach(((e,n)=>{if(Array.isArray(e))e.forEach(((e,r)=>{const i=`Dependency#${n}#${r} for ${t} is invalid`;Et("string"==typeof e.name&&e.name.length>0,i),Et(null==e.minimumVersion||"string"==typeof e.minimumVersion&&e.minimumVersion.length>0,i)})),Et(e.length>0,`Dependency#${n} for ${t} has no group items`);else{const r=`Dependency#${n} for ${t} is invalid`;Et("string"==typeof e.name&&e.name.length>0,r),Et(null==e.minimumVersion||"string"==typeof e.minimumVersion&&e.minimumVersion.length>0,r)}}))),e}async function Pt(t){if(null==t.directory)return!0;if(null==t.minimumVersion)return!1;const e=await St(t);return null==e||1===function(t,e){for(var n=t.split("."),r=e.split("."),i=0;i<3;i++){var o=Number(n[i]),s=Number(r[i]);if(o>s)return 1;if(s>o)return-1;if(!isNaN(o)&&isNaN(s))return 1;if(isNaN(o)&&!isNaN(s))return-1}return 0}(t.minimumVersion,e)}const At=new Set(["✓","done"]),Tt=/(?:Installing|Moving) (.*?) to .* (.*)/;async function Ot(t){if("string"==typeof t)return{name:t,directory:await kt(t)};if("name"in t)return{...t,directory:await kt(t.name)};throw console.error("This package-deps entry is not valid. Please see https://github.com/steelbrain/package-deps#how-it-works",{entry:t}),Error("The package-deps entry is not valid. Please see https://github.com/steelbrain/package-deps#how-it-works")}let It=!0;const jt=yt?function({packageName:t,dependencies:e}){const n=[],r=atom.notifications.addInfo(`Installing ${t} dependencies`,{detail:`Installing ${e.map((t=>t.name)).join(", ")}`,dismissable:!0}),i=document.createElement("progress");i.max=e.length,i.style.width="100%";try{var o;const t=atom.views.getView(r),e=null!==(o=null==t?void 0:t.element)&&void 0!==o?o:null;if(null==e)throw new Error("Unable to get notification element from view");const n=e.querySelector(".detail-content");if(null==n)throw new Error("Content detail container not found inside the notification");n.appendChild(i)}catch(t){console.error("[Package-Deps] Error during showing installation progress to user",t)}return{handleFailure:function({dependency:t,error:e}){var r;n.push(t.name),i.value+=1,console.error(`[Package-Deps] Unable to install ${t.name}, Error:`,null!==(r=null==e?void 0:e.stack)&&void 0!==r?r:e)},handleDependencyInstalled:function(t){i.value+=1},handleComplete:function(){r.dismiss(),n.length>0?atom.notifications.addWarning(`Failed to install ${t} dependencies`,{detail:`These packages were not installed, check your console\nfor more info.\n${n.join("\n")}`,dismissable:!0}):atom.notifications.addSuccess(`Installed ${t} dependencies`,{detail:`Installed ${e.map((t=>t.name)).join(", ")}`}),Promise.all(e.map((t=>n.includes(t.name)?null:atom.packages.activatePackage(t.name)))).catch((e=>{console.error(`[Package-Deps] Error activating installed packages for ${t}`,e)}))}}}:function({dependencies:t}){let e=!1;return console.log(`Installing dependencies:\n${t.map((t=>` - ${t.name}`)).join("\n")}`),{handleFailure:function({dependency:t,error:n}){var r;e=!0,console.error(`Unable to install ${t.name}, Error:`,null!==(r=null==n?void 0:n.stack)&&void 0!==r?r:n)},handleDependencyInstalled:function(t){console.log("Successfully installed",t.name)},handleComplete:function(){console.log("Installation complete"),e&&(process.exitCode=1)}}},Nt=yt?function({packageName:t,dependencies:e}){return new Promise((n=>{const r=e.filter((t=>!Array.isArray(t))),i=e.filter((t=>Array.isArray(t))),o=0===i.length,s=o?r.map((t=>t.name)).join(", "):"Something went wrong. Check your developer console",a=i.map((t=>t[0]));atom.packages.isPackageDisabled("notifications")&&console.warn(`Enable notifications to install dependencies for ${t}`);const u=atom.notifications.addInfo(`${t} needs to install dependencies`,{dismissable:!0,icon:"cloud-download",detail:s,description:`Install dependenc${1===e.length?"y":"ies"}?`,buttons:[{text:"Yes",onDidClick:()=>{n(o?[]:r.concat(a)),u.dismiss()}},{text:"No Thanks",onDidClick:()=>{u.dismiss()}},{text:"Never",onDidClick:()=>{!function(t){var e;if(!yt)return;const n=new Set(null!==(e=atom.config.get("atom-package-deps.ignored"))&&void 0!==e?e:[]);n.add(t),atom.config.set("atom-package-deps.ignored",Array.from(n))}(t),It&&(It=!1,atom.notifications.addInfo("How to reset package-deps memory",{dismissable:!0,description:"To modify the list of ignored files invoke 'Application: Open Your Config' and change the 'atom-package-deps' section"})),u.dismiss()}}]});if(u.onDidDismiss((()=>n([]))),!o)try{var c;const t=atom.views.getView(u),e=null!==(c=null==t?void 0:t.element)&&void 0!==c?c:null;if(null==e)throw new Error("Unable to get notification element from view");const n=e.querySelector(".detail-content");if(null==n)throw new Error("Content detail container not found inside the notification");if(n.innerHTML="",r.length>0){const t=document.createElement("div");t.innerHTML=`Packages without choices:
  • ${r.map((t=>_t(t.name))).join("
  • ")}
`,n.appendChild(t)}const o=document.createElement("div");o.innerHTML="Packages with choices:",n.appendChild(o);const s=document.createElement("ul");i.forEach(((t,e)=>{const n=document.createElement("li"),r=document.createElement("select");r.innerHTML=t.map((t=>``)).join("\n"),r.addEventListener("change",(()=>{const n=t.find((t=>t.name===r.value));null!=n&&(a[e]=n)})),n.style.marginTop="5px",n.appendChild(r),s.appendChild(n)})),n.appendChild(s)}catch(t){console.error("[Package-Deps] Error during showing package choices to user",t)}}))}:async function({dependencies:t}){return t.map((t=>Array.isArray(t)?t[0]:t))};var Dt=async function(t,e=!1){if(Et("string"==typeof t&&t.length>0,"[Package-Deps] Package name is required"),n=t,yt&&(null!==(r=atom.config.get("atom-package-deps.ignored"))&&void 0!==r?r:[]).includes(n))return;var n,r;const i=await Ct(t);if(0===i.length)return;const o=await Promise.all(i.map((async t=>Array.isArray(t)?Promise.all(t.map(Ot)):Ot(t)))),s=await mt(o,(async function(t){return Array.isArray(t)?(await Promise.all(t.map((t=>Pt(t))))).every(Boolean):Pt(t)}));if(0===s.length)return;let a;if(a=e?s.map((t=>Array.isArray(t)?t[0]:t)):await Nt({packageName:t,dependencies:s}),0===a.length)return;const u=jt({packageName:t,dependencies:a});await(async(t,e,{concurrency:n=1/0,stopOnError:r=!0}={})=>new Promise(((i,o)=>{if("function"!=typeof e)throw new TypeError("Mapper function is required");if(!Number.isSafeInteger(n)&&n!==1/0||!(n>=1))throw new TypeError(`Expected \`concurrency\` to be an integer from 1 and up or \`Infinity\`, got \`${n}\` (${typeof n})`);const s=[],a=[],u=t[Symbol.iterator]();let c=!1,l=!1,f=0,d=0;const p=()=>{if(c)return;const t=u.next(),n=d;if(d++,t.done)return l=!0,void(0===f&&(r||0===a.length?i(s):o(new ft(a))));f++,(async()=>{try{const r=await t.value;s[n]=await e(r,n),f--,p()}catch(t){r?(c=!0,o(t)):(a.push(t),f--,p())}})()};for(let t=0;t$t(t,e,...n);for(const t of Bt)$t[t]=(e,...n)=>$t(t,e,...n);const qt=$t;var Ht,Ut;const Vt=Mt;var Wt={};Wt=new Map([["accentHeight","accent-height"],["alignmentBaseline","alignment-baseline"],["arabicForm","arabic-form"],["baselineShift","baseline-shift"],["capHeight","cap-height"],["className","class"],["clipPath","clip-path"],["clipRule","clip-rule"],["colorInterpolation","color-interpolation"],["colorInterpolationFilters","color-interpolation-filters"],["colorProfile","color-profile"],["colorRendering","color-rendering"],["dominantBaseline","dominant-baseline"],["enableBackground","enable-background"],["fillOpacity","fill-opacity"],["fillRule","fill-rule"],["floodColor","flood-color"],["floodOpacity","flood-opacity"],["fontFamily","font-family"],["fontSize","font-size"],["fontSizeAdjust","font-size-adjust"],["fontStretch","font-stretch"],["fontStyle","font-style"],["fontVariant","font-variant"],["fontWeight","font-weight"],["glyphName","glyph-name"],["glyphOrientationHorizontal","glyph-orientation-horizontal"],["glyphOrientationVertical","glyph-orientation-vertical"],["horizAdvX","horiz-adv-x"],["horizOriginX","horiz-origin-x"],["letterSpacing","letter-spacing"],["lightingColor","lighting-color"],["markerEnd","marker-end"],["markerMid","marker-mid"],["markerStart","marker-start"],["overlinePosition","overline-position"],["overlineThickness","overline-thickness"],["panose1","panose-1"],["paintOrder","paint-order"],["pointerEvents","pointer-events"],["renderingIntent","rendering-intent"],["shapeRendering","shape-rendering"],["stopColor","stop-color"],["stopOpacity","stop-opacity"],["strikethroughPosition","strikethrough-position"],["strikethroughThickness","strikethrough-thickness"],["strokeDasharray","stroke-dasharray"],["strokeDashoffset","stroke-dashoffset"],["strokeLinecap","stroke-linecap"],["strokeLinejoin","stroke-linejoin"],["strokeMiterlimit","stroke-miterlimit"],["strokeOpacity","stroke-opacity"],["strokeWidth","stroke-width"],["textAnchor","text-anchor"],["textDecoration","text-decoration"],["textRendering","text-rendering"],["underlinePosition","underline-position"],["underlineThickness","underline-thickness"],["unicodeBidi","unicode-bidi"],["unicodeRange","unicode-range"],["unitsPerEm","units-per-em"],["vAlphabetic","v-alphabetic"],["vHanging","v-hanging"],["vIdeographic","v-ideographic"],["vMathematical","v-mathematical"],["vertAdvY","vert-adv-y"],["vertOriginX","vert-origin-x"],["vertOriginY","vert-origin-y"],["wordSpacing","word-spacing"],["writingMode","writing-mode"],["xHeight","x-height"]]);var Gt;const Kt=Gt=function(t,e,n,r){n!==e&&("function"==typeof e?e(null):e&&r[e]===t&&delete r[e],"function"==typeof n?n(t):n&&(r[n]=t))};function Qt(t,e,n,r,i){if(n)for(var o in n)"ref"!==o&&"on"!==o&&(o in Vt||i&&o in i||("dataset"===o?Qt(t.dataset,null,n&&n.dataset,null,null):"innerHTML"!==o&&e&&Rt.has(e.tag)?t.removeAttribute(Wt.get(o)||o):(t[o]="",delete t[o])));if(i)for(var o in i)if("ref"!==o&&"on"!==o&&!(o in Vt)){var s=n&&n[o],a=i[o];"dataset"===o?Zt(t.dataset,s,a,!1):"style"===o&&"string"!=typeof a?("string"==typeof s&&(t.style="",s=null),Zt(t.style,s,a,!0)):"attributes"===o?Xt(t,s,a):a!==s&&("innerHTML"!==o&&r&&Rt.has(r.tag)?t.setAttribute(Wt.get(o)||o,a):r&&"input"===r.tag&&"value"===o&&t[o]===a||(t[o]=a))}}function Zt(t,e,n,r){if(e)for(var i in e)n&&i in n||(r?t[i]="":delete t[i]);if(n)for(var i in n){const r=e&&e[i],o=n[i];o!==r&&(t[i]=o)}}function Xt(t,e,n){if(e)for(var r in e)n&&r in n||t.removeAttribute(r);if(n)for(var r in n){const i=e&&e[r],o=n[r];o!==i&&t.setAttribute(r,o)}}const Yt=Ut=function(t,e,n,r){const i=e&&e.props,o=n.props;let s,a;r&&(s=r.refs,a=r.listenerContext),Qt(t,e,i,n,o),s&&Kt(t,i&&i.ref,o&&o.ref,s),function(t,e,n,r){const i=e&&e.props&&e.props.on,o=n.props&&n.props.on;for(const n in i)if(!o||!(n in o)){let r;r=e&&e.boundListeners&&e.boundListeners[n]?e.boundListeners[n]:i[n],t.removeEventListener(n,r)}for(const s in o){const a=i&&i[s],u=o[s];if(u!==a){if(a){let n;n=e&&e.boundListeners&&e.boundListeners[s]?e.boundListeners[s]:a,t.removeEventListener(s,n)}if(u){let e;r?(e=u.bind(r),n.boundListeners||(n.boundListeners={}),n.boundListeners[s]=e):e=u,t.addEventListener(s,e)}}}}(t,e,n,a)};function Jt(t,e){let n;if(null!=t.text)n=document.createTextNode(t.text);else{const{tag:r,children:i}=t;let{props:o,context:s}=t;if(s&&(e={refs:s.refs,listenerContext:s}),"function"==typeof r){let s;o&&o.ref&&(s=o.ref);const a=new r(o||{},i);t.component=a,n=a.element,"function"==typeof s?s(a):e&&e.refs&&s&&(e.refs[s]=a)}else Rt.has(r)?(n=document.createElementNS("http://www.w3.org/2000/svg",r),i&&te(n,i,e),o&&Yt(n,null,t,e)):(n=document.createElement(r),i&&te(n,i,e),o&&Yt(n,null,t,e))}return t.domNode=n,n}function te(t,e,n){for(let r=0;r0?(i=ue.pop()).clear():i=new Map,de(i,e,o,s));var p=fe(f),h=p?i.get(p):null;if(null==h)t.insertBefore(ie(f,r),a.domNode),f=n[++c];else{var g=e[h];ae(g,f,r),e[h]=void 0,t.insertBefore(g.domNode,a.domNode),f=n[++c]}}else u=e[--s];else a=e[++o];if(o>s){var m=n[l+1]?n[l+1].domNode:null;for(let e=c;e<=l;e++)t.insertBefore(ie(n[e],r),m)}else if(c>l)for(let t=o;t<=s;t++){var v=e[t];v&&ce(v,r&&r.refs)}i&&ue.push(i)}(r,t.children,e.children,n),oe(r,t,e,n),i=r),e.domNode=i,i!==r&&r.parentNode&&r.parentNode.replaceChild(i,r),i}{const i=r.parentNode,o=r.nextSibling;ce(t,n&&n.refs);const s=ie(e,n);return i&&i.insertBefore(s,o),e.domNode=s,s}}let ue=[new Map,new Map,new Map,new Map];function ce(t,e,n=!0){const{domNode:r,props:i,children:o,component:s}=t,a=i&&i.ref;if(s)"function"==typeof a?a(null):e&&a&&e[a]===s&&delete e[a],s.destroy&&s.destroy();else if("function"==typeof a?a(null):e&&a&&e[a]===r&&delete e[a],o)for(let t=0;t{this.resolveNextUpdatePromise=t}))),this.nextUpdatePromise}performUpdates(){for(;this.updateRequests.length>0;)this.updateRequests.shift()();for(this.pendingAnimationFrame=null;this.readRequests.length>0;)this.readRequests.shift()();if(this.nextUpdatePromise){let t=this.resolveNextUpdatePromise;this.nextUpdatePromise=null,this.resolveNextUpdatePromise=null,t()}}};let ge=null;var me=function(){return ge||(ge=new he),ge};const ve=new WeakSet;let ye=0,we=0;function be(t){return null!=t&&!1!==t}function _e(t,e){e.context=t,e.ambiguous&&(e.ambiguous.forEach((e=>{e.context=t})),delete e.ambiguous)}function xe(t,e=!0){if(!be(t.virtualNode))throw new Error(`${t.constructor?t.constructor.name+" instance":t} is not associated with a valid virtualNode. Perhaps this component was never initialized?`);if(null==t.element)throw new Error(`${t.constructor?t.constructor.name+" instance":t} is not associated with a DOM element. Perhaps this component was never initialized?`);let n=t.render();if(!be(n)){const e=t.constructor&&t.constructor.name?" in "+t.constructor.name:"";throw new Error("invalid falsy value "+n+" returned from render()"+e)}_e(t,n),ye++;let r=t.virtualNode,i=t.element,o=pe(r,n,{refs:t.refs,listenerContext:t});if(t.virtualNode=n,o!==i&&!e)throw new Error("The root node type changed on update, but the update was performed with the replaceNode option set to false");t.element=o,"function"==typeof t.writeAfterUpdate&&t.writeAfterUpdate(),"function"==typeof t.readAfterUpdate&&me().readDocument((function(){t.readAfterUpdate()})),ye--}function Se(t,e=!0){we++,ke(t.virtualNode),1===we&&e&&t.element.remove(),we--}function ke(t){t.component&&"function"==typeof t.component.destroy?t.component.destroy():t.children&&t.children.forEach(ke)}var Ee=e(Lt={dom:qt,render:ee,initialize:(ne={initialize:function(t){if("function"!=typeof t.update)throw new Error("Etch components must implement `update(props, children)`.");let e=t.render();if(!be(e)){let n=t.constructor&&t.constructor.name?" in "+t.constructor.name:"";throw new Error("invalid falsy value "+e+" returned from render()"+n)}_e(t,e),t.refs={},t.virtualNode=e,t.element=re(t.virtualNode,{refs:t.refs,listenerContext:t})},update:function(t,e=!0){if(ye>0)return xe(t,e),Promise.resolve();let n=me();return ve.has(t)||(ve.add(t),n.updateDocument((function(){ve.delete(t),xe(t,e)}))),n.getNextUpdatePromise()},updateSync:xe,destroy:function(t,e=!0){if(ye>0||we>0)return Se(t,e),Promise.resolve();let n=me();return n.updateDocument((function(){Se(t,e)})),n.getNextUpdatePromise()},destroySync:Se}).initialize,update:ne.update,updateSync:ne.updateSync,destroy:ne.destroy,destroySync:ne.destroySync,setScheduler:function(t){ge=t},getScheduler:me});function Ce(t){void 0!==t&&("function"==typeof t.catch?t.catch((t=>{atom.notifications.addFatalError(`Atom-Typescript error: ${t.message}`,{detail:t.toString(),stack:t.stack,dismissable:!0})})):atom.notifications.addFatalError("Atom-Typescript: non-promise passed to handlePromise. Please report this.",{stack:(new Error).stack,dismissable:!0}))}var Pe=function(){var e=this,n={exports:this};return function(){var r,i="Expected a function",o="__lodash_hash_undefined__",s="__lodash_placeholder__",a=16,u=32,c=64,l=128,f=256,d=1/0,p=9007199254740991,h=NaN,g=4294967295,m=[["ary",l],["bind",1],["bindKey",2],["curry",8],["curryRight",a],["flip",512],["partial",u],["partialRight",c],["rearg",f]],v="[object Arguments]",y="[object Array]",w="[object Boolean]",b="[object Date]",_="[object Error]",x="[object Function]",S="[object GeneratorFunction]",k="[object Map]",E="[object Number]",C="[object Object]",P="[object Promise]",A="[object RegExp]",T="[object Set]",O="[object String]",I="[object Symbol]",j="[object WeakMap]",N="[object ArrayBuffer]",D="[object DataView]",M="[object Float32Array]",L="[object Float64Array]",F="[object Int8Array]",R="[object Int16Array]",B="[object Int32Array]",$="[object Uint8Array]",z="[object Uint8ClampedArray]",q="[object Uint16Array]",H="[object Uint32Array]",U=/\b__p \+= '';/g,V=/\b(__p \+=) '' \+/g,W=/(__e\(.*?\)|\b__t\)) \+\n'';/g,G=/&(?:amp|lt|gt|quot|#39);/g,K=/[&<>"']/g,Q=RegExp(G.source),Z=RegExp(K.source),X=/<%-([\s\S]+?)%>/g,Y=/<%([\s\S]+?)%>/g,J=/<%=([\s\S]+?)%>/g,tt=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,et=/^\w*$/,nt=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,rt=/[\\^$.*+?()[\]{}|]/g,it=RegExp(rt.source),ot=/^\s+/,st=/\s/,at=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,ut=/\{\n\/\* \[wrapped with (.+)\] \*/,ct=/,? & /,lt=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,ft=/[()=,{}\[\]\/\s]/,dt=/\\(\\)?/g,pt=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,ht=/\w*$/,gt=/^[-+]0x[0-9a-f]+$/i,mt=/^0b[01]+$/i,vt=/^\[object .+?Constructor\]$/,yt=/^0o[0-7]+$/i,wt=/^(?:0|[1-9]\d*)$/,bt=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,_t=/($^)/,xt=/['\n\r\u2028\u2029\\]/g,St="\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff",kt="\\u2700-\\u27bf",Et="a-z\\xdf-\\xf6\\xf8-\\xff",Ct="A-Z\\xc0-\\xd6\\xd8-\\xde",Pt="\\ufe0e\\ufe0f",At="\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",Tt="['’]",Ot="[\\ud800-\\udfff]",It="["+At+"]",jt="["+St+"]",Nt="\\d+",Dt="[\\u2700-\\u27bf]",Mt="["+Et+"]",Lt="[^\\ud800-\\udfff"+At+Nt+kt+Et+Ct+"]",Ft="\\ud83c[\\udffb-\\udfff]",Rt="[^\\ud800-\\udfff]",Bt="(?:\\ud83c[\\udde6-\\uddff]){2}",$t="[\\ud800-\\udbff][\\udc00-\\udfff]",zt="["+Ct+"]",qt="(?:"+Mt+"|"+Lt+")",Ht="(?:"+zt+"|"+Lt+")",Ut="(?:['’](?:d|ll|m|re|s|t|ve))?",Vt="(?:['’](?:D|LL|M|RE|S|T|VE))?",Wt="(?:"+jt+"|"+Ft+")"+"?",Gt="[\\ufe0e\\ufe0f]?",Kt=Gt+Wt+("(?:\\u200d(?:"+[Rt,Bt,$t].join("|")+")"+Gt+Wt+")*"),Qt="(?:"+[Dt,Bt,$t].join("|")+")"+Kt,Zt="(?:"+[Rt+jt+"?",jt,Bt,$t,Ot].join("|")+")",Xt=RegExp(Tt,"g"),Yt=RegExp(jt,"g"),Jt=RegExp(Ft+"(?="+Ft+")|"+Zt+Kt,"g"),te=RegExp([zt+"?"+Mt+"+"+Ut+"(?="+[It,zt,"$"].join("|")+")",Ht+"+"+Vt+"(?="+[It,zt+qt,"$"].join("|")+")",zt+"?"+qt+"+"+Ut,zt+"+"+Vt,"\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])","\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",Nt,Qt].join("|"),"g"),ee=RegExp("[\\u200d\\ud800-\\udfff"+St+Pt+"]"),ne=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,re=["Array","Buffer","DataView","Date","Error","Float32Array","Float64Array","Function","Int8Array","Int16Array","Int32Array","Map","Math","Object","Promise","RegExp","Set","String","Symbol","TypeError","Uint8Array","Uint8ClampedArray","Uint16Array","Uint32Array","WeakMap","_","clearTimeout","isFinite","parseInt","setTimeout"],ie=-1,oe={};oe[M]=oe[L]=oe[F]=oe[R]=oe[B]=oe[$]=oe[z]=oe[q]=oe[H]=!0,oe[v]=oe[y]=oe[N]=oe[w]=oe[D]=oe[b]=oe[_]=oe[x]=oe[k]=oe[E]=oe[C]=oe[A]=oe[T]=oe[O]=oe[j]=!1;var se={};se[v]=se[y]=se[N]=se[D]=se[w]=se[b]=se[M]=se[L]=se[F]=se[R]=se[B]=se[k]=se[E]=se[C]=se[A]=se[T]=se[O]=se[I]=se[$]=se[z]=se[q]=se[H]=!0,se[_]=se[x]=se[j]=!1;var ae={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},ue=parseFloat,ce=parseInt,le="object"==typeof t&&t&&t.Object===Object&&t,fe="object"==typeof self&&self&&self.Object===Object&&self,de=le||fe||Function("return this")(),pe="object"==typeof e&&e&&!e.nodeType&&e,he=pe&&"object"==typeof n&&n&&!n.nodeType&&n,ge=he&&he.exports===pe,me=ge&&le.process,ve=function(){try{var t=he&&he.require&&he.require("util").types;return t||me&&me.binding&&me.binding("util")}catch(t){}}(),ye=ve&&ve.isArrayBuffer,we=ve&&ve.isDate,be=ve&&ve.isMap,_e=ve&&ve.isRegExp,xe=ve&&ve.isSet,Se=ve&&ve.isTypedArray;function ke(t,e,n){switch(n.length){case 0:return t.call(e);case 1:return t.call(e,n[0]);case 2:return t.call(e,n[0],n[1]);case 3:return t.call(e,n[0],n[1],n[2])}return t.apply(e,n)}function Ee(t,e,n,r){for(var i=-1,o=null==t?0:t.length;++i-1}function Ie(t,e,n){for(var r=-1,i=null==t?0:t.length;++r-1;);return n}function tn(t,e){for(var n=t.length;n--&&$e(e,t[n],0)>-1;);return n}function en(t,e){for(var n=t.length,r=0;n--;)t[n]===e&&++r;return r}var nn=Ve({"À":"A","Á":"A","Â":"A","Ã":"A","Ä":"A","Å":"A","à":"a","á":"a","â":"a","ã":"a","ä":"a","å":"a","Ç":"C","ç":"c","Ð":"D","ð":"d","È":"E","É":"E","Ê":"E","Ë":"E","è":"e","é":"e","ê":"e","ë":"e","Ì":"I","Í":"I","Î":"I","Ï":"I","ì":"i","í":"i","î":"i","ï":"i","Ñ":"N","ñ":"n","Ò":"O","Ó":"O","Ô":"O","Õ":"O","Ö":"O","Ø":"O","ò":"o","ó":"o","ô":"o","õ":"o","ö":"o","ø":"o","Ù":"U","Ú":"U","Û":"U","Ü":"U","ù":"u","ú":"u","û":"u","ü":"u","Ý":"Y","ý":"y","ÿ":"y","Æ":"Ae","æ":"ae","Þ":"Th","þ":"th","ß":"ss","Ā":"A","Ă":"A","Ą":"A","ā":"a","ă":"a","ą":"a","Ć":"C","Ĉ":"C","Ċ":"C","Č":"C","ć":"c","ĉ":"c","ċ":"c","č":"c","Ď":"D","Đ":"D","ď":"d","đ":"d","Ē":"E","Ĕ":"E","Ė":"E","Ę":"E","Ě":"E","ē":"e","ĕ":"e","ė":"e","ę":"e","ě":"e","Ĝ":"G","Ğ":"G","Ġ":"G","Ģ":"G","ĝ":"g","ğ":"g","ġ":"g","ģ":"g","Ĥ":"H","Ħ":"H","ĥ":"h","ħ":"h","Ĩ":"I","Ī":"I","Ĭ":"I","Į":"I","İ":"I","ĩ":"i","ī":"i","ĭ":"i","į":"i","ı":"i","Ĵ":"J","ĵ":"j","Ķ":"K","ķ":"k","ĸ":"k","Ĺ":"L","Ļ":"L","Ľ":"L","Ŀ":"L","Ł":"L","ĺ":"l","ļ":"l","ľ":"l","ŀ":"l","ł":"l","Ń":"N","Ņ":"N","Ň":"N","Ŋ":"N","ń":"n","ņ":"n","ň":"n","ŋ":"n","Ō":"O","Ŏ":"O","Ő":"O","ō":"o","ŏ":"o","ő":"o","Ŕ":"R","Ŗ":"R","Ř":"R","ŕ":"r","ŗ":"r","ř":"r","Ś":"S","Ŝ":"S","Ş":"S","Š":"S","ś":"s","ŝ":"s","ş":"s","š":"s","Ţ":"T","Ť":"T","Ŧ":"T","ţ":"t","ť":"t","ŧ":"t","Ũ":"U","Ū":"U","Ŭ":"U","Ů":"U","Ű":"U","Ų":"U","ũ":"u","ū":"u","ŭ":"u","ů":"u","ű":"u","ų":"u","Ŵ":"W","ŵ":"w","Ŷ":"Y","ŷ":"y","Ÿ":"Y","Ź":"Z","Ż":"Z","Ž":"Z","ź":"z","ż":"z","ž":"z","IJ":"IJ","ij":"ij","Œ":"Oe","œ":"oe","ʼn":"'n","ſ":"s"}),rn=Ve({"&":"&","<":"<",">":">",'"':""","'":"'"});function on(t){return"\\"+ae[t]}function sn(t){return ee.test(t)}function an(t){var e=-1,n=Array(t.size);return t.forEach((function(t,r){n[++e]=[r,t]})),n}function un(t,e){return function(n){return t(e(n))}}function cn(t,e){for(var n=-1,r=t.length,i=0,o=[];++n",""":'"',"'":"'"});var mn=function t(e){var n,st=(e=null==e?de:mn.defaults(de.Object(),e,mn.pick(de,re))).Array,St=e.Date,kt=e.Error,Et=e.Function,Ct=e.Math,Pt=e.Object,At=e.RegExp,Tt=e.String,Ot=e.TypeError,It=st.prototype,jt=Et.prototype,Nt=Pt.prototype,Dt=e["__core-js_shared__"],Mt=jt.toString,Lt=Nt.hasOwnProperty,Ft=0,Rt=(n=/[^.]+$/.exec(Dt&&Dt.keys&&Dt.keys.IE_PROTO||""))?"Symbol(src)_1."+n:"",Bt=Nt.toString,$t=Mt.call(Pt),zt=de._,qt=At("^"+Mt.call(Lt).replace(rt,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),Ht=ge?e.Buffer:r,Ut=e.Symbol,Vt=e.Uint8Array,Wt=Ht?Ht.allocUnsafe:r,Gt=un(Pt.getPrototypeOf,Pt),Kt=Pt.create,Qt=Nt.propertyIsEnumerable,Zt=It.splice,Jt=Ut?Ut.isConcatSpreadable:r,ee=Ut?Ut.iterator:r,ae=Ut?Ut.toStringTag:r,le=function(){try{var t=ho(Pt,"defineProperty");return t({},"",{}),t}catch(t){}}(),fe=e.clearTimeout!==de.clearTimeout&&e.clearTimeout,pe=St&&St.now!==de.Date.now&&St.now,he=e.setTimeout!==de.setTimeout&&e.setTimeout,me=Ct.ceil,ve=Ct.floor,Fe=Pt.getOwnPropertySymbols,Ve=Ht?Ht.isBuffer:r,vn=e.isFinite,yn=It.join,wn=un(Pt.keys,Pt),bn=Ct.max,_n=Ct.min,xn=St.now,Sn=e.parseInt,kn=Ct.random,En=It.reverse,Cn=ho(e,"DataView"),Pn=ho(e,"Map"),An=ho(e,"Promise"),Tn=ho(e,"Set"),On=ho(e,"WeakMap"),In=ho(Pt,"create"),jn=On&&new On,Nn={},Dn=zo(Cn),Mn=zo(Pn),Ln=zo(An),Fn=zo(Tn),Rn=zo(On),Bn=Ut?Ut.prototype:r,$n=Bn?Bn.valueOf:r,zn=Bn?Bn.toString:r;function qn(t){if(ia(t)&&!Gs(t)&&!(t instanceof Wn)){if(t instanceof Vn)return t;if(Lt.call(t,"__wrapped__"))return qo(t)}return new Vn(t)}var Hn=function(){function t(){}return function(e){if(!ra(e))return{};if(Kt)return Kt(e);t.prototype=e;var n=new t;return t.prototype=r,n}}();function Un(){}function Vn(t,e){this.__wrapped__=t,this.__actions__=[],this.__chain__=!!e,this.__index__=0,this.__values__=r}function Wn(t){this.__wrapped__=t,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=g,this.__views__=[]}function Gn(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e=e?t:e)),t}function lr(t,e,n,i,o,s){var a,u=1&e,c=2&e,l=4&e;if(n&&(a=o?n(t,i,o,s):n(t)),a!==r)return a;if(!ra(t))return t;var f=Gs(t);if(f){if(a=function(t){var e=t.length,n=new t.constructor(e);e&&"string"==typeof t[0]&&Lt.call(t,"index")&&(n.index=t.index,n.input=t.input);return n}(t),!u)return Ii(t,a)}else{var d=vo(t),p=d==x||d==S;if(Xs(t))return Ei(t,u);if(d==C||d==v||p&&!o){if(a=c||p?{}:wo(t),!u)return c?function(t,e){return ji(t,mo(t),e)}(t,function(t,e){return t&&ji(e,Ma(e),t)}(a,t)):function(t,e){return ji(t,go(t),e)}(t,sr(a,t))}else{if(!se[d])return o?t:{};a=function(t,e,n){var r=t.constructor;switch(e){case N:return Ci(t);case w:case b:return new r(+t);case D:return function(t,e){var n=e?Ci(t.buffer):t.buffer;return new t.constructor(n,t.byteOffset,t.byteLength)}(t,n);case M:case L:case F:case R:case B:case $:case z:case q:case H:return Pi(t,n);case k:return new r;case E:case O:return new r(t);case A:return function(t){var e=new t.constructor(t.source,ht.exec(t));return e.lastIndex=t.lastIndex,e}(t);case T:return new r;case I:return i=t,$n?Pt($n.call(i)):{}}var i}(t,d,u)}}s||(s=new Xn);var h=s.get(t);if(h)return h;s.set(t,a),ca(t)?t.forEach((function(r){a.add(lr(r,e,n,r,t,s))})):oa(t)&&t.forEach((function(r,i){a.set(i,lr(r,e,n,i,t,s))}));var g=f?r:(l?c?so:oo:c?Ma:Da)(t);return Ce(g||t,(function(r,i){g&&(r=t[i=r]),rr(a,i,lr(r,e,n,i,t,s))})),a}function fr(t,e,n){var i=n.length;if(null==t)return!i;for(t=Pt(t);i--;){var o=n[i],s=e[o],a=t[o];if(a===r&&!(o in t)||!s(a))return!1}return!0}function dr(t,e,n){if("function"!=typeof t)throw new Ot(i);return Do((function(){t.apply(r,n)}),e)}function pr(t,e,n,r){var i=-1,o=Oe,s=!0,a=t.length,u=[],c=e.length;if(!a)return u;n&&(e=je(e,Ze(n))),r?(o=Ie,s=!1):e.length>=200&&(o=Ye,s=!1,e=new Zn(e));t:for(;++i-1},Kn.prototype.set=function(t,e){var n=this.__data__,r=ir(n,t);return r<0?(++this.size,n.push([t,e])):n[r][1]=e,this},Qn.prototype.clear=function(){this.size=0,this.__data__={hash:new Gn,map:new(Pn||Kn),string:new Gn}},Qn.prototype.delete=function(t){var e=fo(this,t).delete(t);return this.size-=e?1:0,e},Qn.prototype.get=function(t){return fo(this,t).get(t)},Qn.prototype.has=function(t){return fo(this,t).has(t)},Qn.prototype.set=function(t,e){var n=fo(this,t),r=n.size;return n.set(t,e),this.size+=n.size==r?0:1,this},Zn.prototype.add=Zn.prototype.push=function(t){return this.__data__.set(t,o),this},Zn.prototype.has=function(t){return this.__data__.has(t)},Xn.prototype.clear=function(){this.__data__=new Kn,this.size=0},Xn.prototype.delete=function(t){var e=this.__data__,n=e.delete(t);return this.size=e.size,n},Xn.prototype.get=function(t){return this.__data__.get(t)},Xn.prototype.has=function(t){return this.__data__.has(t)},Xn.prototype.set=function(t,e){var n=this.__data__;if(n instanceof Kn){var r=n.__data__;if(!Pn||r.length<199)return r.push([t,e]),this.size=++n.size,this;n=this.__data__=new Qn(r)}return n.set(t,e),this.size=n.size,this};var hr=Mi(xr),gr=Mi(Sr,!0);function mr(t,e){var n=!0;return hr(t,(function(t,r,i){return n=!!e(t,r,i)})),n}function vr(t,e,n){for(var i=-1,o=t.length;++i0&&n(a)?e>1?wr(a,e-1,n,r,i):Ne(i,a):r||(i[i.length]=a)}return i}var br=Li(),_r=Li(!0);function xr(t,e){return t&&br(t,e,Da)}function Sr(t,e){return t&&_r(t,e,Da)}function kr(t,e){return Te(e,(function(e){return ta(t[e])}))}function Er(t,e){for(var n=0,i=(e=_i(e,t)).length;null!=t&&ne}function Tr(t,e){return null!=t&&Lt.call(t,e)}function Or(t,e){return null!=t&&e in Pt(t)}function Ir(t,e,n){for(var i=n?Ie:Oe,o=t[0].length,s=t.length,a=s,u=st(s),c=1/0,l=[];a--;){var f=t[a];a&&e&&(f=je(f,Ze(e))),c=_n(f.length,c),u[a]=!n&&(e||o>=120&&f.length>=120)?new Zn(a&&f):r}f=t[0];var d=-1,p=u[0];t:for(;++d=a?u:u*("desc"==n[r]?-1:1)}return t.index-e.index}(t,e,n)}))}function Gr(t,e,n){for(var r=-1,i=e.length,o={};++r-1;)a!==t&&Zt.call(a,u,1),Zt.call(t,u,1);return t}function Qr(t,e){for(var n=t?e.length:0,r=n-1;n--;){var i=e[n];if(n==r||i!==o){var o=i;_o(i)?Zt.call(t,i,1):pi(t,i)}}return t}function Zr(t,e){return t+ve(kn()*(e-t+1))}function Xr(t,e){var n="";if(!t||e<1||e>p)return n;do{e%2&&(n+=t),(e=ve(e/2))&&(t+=t)}while(e);return n}function Yr(t,e){return Mo(To(t,e,su),t+"")}function Jr(t){return Jn(Ha(t))}function ti(t,e){var n=Ha(t);return Ro(n,cr(e,0,n.length))}function ei(t,e,n,i){if(!ra(t))return t;for(var o=-1,s=(e=_i(e,t)).length,a=s-1,u=t;null!=u&&++oi?0:i+e),(n=n>i?i:n)<0&&(n+=i),i=e>n?0:n-e>>>0,e>>>=0;for(var o=st(i);++r>>1,s=t[o];null!==s&&!fa(s)&&(n?s<=e:s=200){var c=e?null:Xi(t);if(c)return ln(c);s=!1,i=Ye,u=new Zn}else u=e?[]:a;t:for(;++r=i?t:oi(t,e,n)}var ki=fe||function(t){return de.clearTimeout(t)};function Ei(t,e){if(e)return t.slice();var n=t.length,r=Wt?Wt(n):new t.constructor(n);return t.copy(r),r}function Ci(t){var e=new t.constructor(t.byteLength);return new Vt(e).set(new Vt(t)),e}function Pi(t,e){var n=e?Ci(t.buffer):t.buffer;return new t.constructor(n,t.byteOffset,t.length)}function Ai(t,e){if(t!==e){var n=t!==r,i=null===t,o=t==t,s=fa(t),a=e!==r,u=null===e,c=e==e,l=fa(e);if(!u&&!l&&!s&&t>e||s&&a&&c&&!u&&!l||i&&a&&c||!n&&c||!o)return 1;if(!i&&!s&&!l&&t1?n[o-1]:r,a=o>2?n[2]:r;for(s=t.length>3&&"function"==typeof s?(o--,s):r,a&&xo(n[0],n[1],a)&&(s=o<3?r:s,o=1),e=Pt(e);++i-1?o[s?e[a]:a]:r}}function zi(t){return io((function(e){var n=e.length,o=n,s=Vn.prototype.thru;for(t&&e.reverse();o--;){var a=e[o];if("function"!=typeof a)throw new Ot(i);if(s&&!u&&"wrapper"==uo(a))var u=new Vn([],!0)}for(o=u?o:n;++o1&&y.reverse(),d&&cu))return!1;var l=s.get(t),f=s.get(e);if(l&&f)return l==e&&f==t;var d=-1,p=!0,h=2&n?new Zn:r;for(s.set(t,e),s.set(e,t);++d-1&&t%1==0&&t1?"& ":"")+e[r],e=e.join(n>2?", ":" "),t.replace(at,"{\n/* [wrapped with "+e+"] */\n")}(r,function(t,e){return Ce(m,(function(n){var r="_."+n[0];e&n[1]&&!Oe(t,r)&&t.push(r)})),t.sort()}(function(t){var e=t.match(ut);return e?e[1].split(ct):[]}(r),n)))}function Fo(t){var e=0,n=0;return function(){var i=xn(),o=16-(i-n);if(n=i,o>0){if(++e>=800)return arguments[0]}else e=0;return t.apply(r,arguments)}}function Ro(t,e){var n=-1,i=t.length,o=i-1;for(e=e===r?i:e;++n1?t[e-1]:r;return n="function"==typeof n?(t.pop(),n):r,us(t,n)}));function gs(t){var e=qn(t);return e.__chain__=!0,e}function ms(t,e){return e(t)}var vs=io((function(t){var e=t.length,n=e?t[0]:0,i=this.__wrapped__,o=function(e){return ur(e,t)};return!(e>1||this.__actions__.length)&&i instanceof Wn&&_o(n)?((i=i.slice(n,+n+(e?1:0))).__actions__.push({func:ms,args:[o],thisArg:r}),new Vn(i,this.__chain__).thru((function(t){return e&&!t.length&&t.push(r),t}))):this.thru(o)}));var ys=Ni((function(t,e,n){Lt.call(t,n)?++t[n]:ar(t,n,1)}));var ws=$i(Wo),bs=$i(Go);function _s(t,e){return(Gs(t)?Ce:hr)(t,lo(e,3))}function xs(t,e){return(Gs(t)?Pe:gr)(t,lo(e,3))}var Ss=Ni((function(t,e,n){Lt.call(t,n)?t[n].push(e):ar(t,n,[e])}));var ks=Yr((function(t,e,n){var r=-1,i="function"==typeof e,o=Qs(t)?st(t.length):[];return hr(t,(function(t){o[++r]=i?ke(e,t,n):jr(t,e,n)})),o})),Es=Ni((function(t,e,n){ar(t,n,e)}));function Cs(t,e){return(Gs(t)?je:zr)(t,lo(e,3))}var Ps=Ni((function(t,e,n){t[n?0:1].push(e)}),(function(){return[[],[]]}));var As=Yr((function(t,e){if(null==t)return[];var n=e.length;return n>1&&xo(t,e[0],e[1])?e=[]:n>2&&xo(e[0],e[1],e[2])&&(e=[e[0]]),Wr(t,wr(e,1),[])})),Ts=pe||function(){return de.Date.now()};function Os(t,e,n){return e=n?r:e,e=t&&null==e?t.length:e,Ji(t,l,r,r,r,r,e)}function Is(t,e){var n;if("function"!=typeof e)throw new Ot(i);return t=va(t),function(){return--t>0&&(n=e.apply(this,arguments)),t<=1&&(e=r),n}}var js=Yr((function(t,e,n){var r=1;if(n.length){var i=cn(n,co(js));r|=u}return Ji(t,r,e,n,i)})),Ns=Yr((function(t,e,n){var r=3;if(n.length){var i=cn(n,co(Ns));r|=u}return Ji(e,r,t,n,i)}));function Ds(t,e,n){var o,s,a,u,c,l,f=0,d=!1,p=!1,h=!0;if("function"!=typeof t)throw new Ot(i);function g(e){var n=o,i=s;return o=s=r,f=e,u=t.apply(i,n)}function m(t){return f=t,c=Do(y,e),d?g(t):u}function v(t){var n=t-l;return l===r||n>=e||n<0||p&&t-f>=a}function y(){var t=Ts();if(v(t))return w(t);c=Do(y,function(t){var n=e-(t-l);return p?_n(n,a-(t-f)):n}(t))}function w(t){return c=r,h&&o?g(t):(o=s=r,u)}function b(){var t=Ts(),n=v(t);if(o=arguments,s=this,l=t,n){if(c===r)return m(l);if(p)return ki(c),c=Do(y,e),g(l)}return c===r&&(c=Do(y,e)),u}return e=wa(e)||0,ra(n)&&(d=!!n.leading,a=(p="maxWait"in n)?bn(wa(n.maxWait)||0,e):a,h="trailing"in n?!!n.trailing:h),b.cancel=function(){c!==r&&ki(c),f=0,o=l=s=c=r},b.flush=function(){return c===r?u:w(Ts())},b}var Ms=Yr((function(t,e){return dr(t,1,e)})),Ls=Yr((function(t,e,n){return dr(t,wa(e)||0,n)}));function Fs(t,e){if("function"!=typeof t||null!=e&&"function"!=typeof e)throw new Ot(i);var n=function(){var r=arguments,i=e?e.apply(this,r):r[0],o=n.cache;if(o.has(i))return o.get(i);var s=t.apply(this,r);return n.cache=o.set(i,s)||o,s};return n.cache=new(Fs.Cache||Qn),n}function Rs(t){if("function"!=typeof t)throw new Ot(i);return function(){var e=arguments;switch(e.length){case 0:return!t.call(this);case 1:return!t.call(this,e[0]);case 2:return!t.call(this,e[0],e[1]);case 3:return!t.call(this,e[0],e[1],e[2])}return!t.apply(this,e)}}Fs.Cache=Qn;var Bs=xi((function(t,e){var n=(e=1==e.length&&Gs(e[0])?je(e[0],Ze(lo())):je(wr(e,1),Ze(lo()))).length;return Yr((function(r){for(var i=-1,o=_n(r.length,n);++i=e})),Ws=Nr(function(){return arguments}())?Nr:function(t){return ia(t)&&Lt.call(t,"callee")&&!Qt.call(t,"callee")},Gs=st.isArray,Ks=ye?Ze(ye):function(t){return ia(t)&&Pr(t)==N};function Qs(t){return null!=t&&na(t.length)&&!ta(t)}function Zs(t){return ia(t)&&Qs(t)}var Xs=Ve||wu,Ys=we?Ze(we):function(t){return ia(t)&&Pr(t)==b};function Js(t){if(!ia(t))return!1;var e=Pr(t);return e==_||"[object DOMException]"==e||"string"==typeof t.message&&"string"==typeof t.name&&!aa(t)}function ta(t){if(!ra(t))return!1;var e=Pr(t);return e==x||e==S||"[object AsyncFunction]"==e||"[object Proxy]"==e}function ea(t){return"number"==typeof t&&t==va(t)}function na(t){return"number"==typeof t&&t>-1&&t%1==0&&t<=p}function ra(t){var e=typeof t;return null!=t&&("object"==e||"function"==e)}function ia(t){return null!=t&&"object"==typeof t}var oa=be?Ze(be):function(t){return ia(t)&&vo(t)==k};function sa(t){return"number"==typeof t||ia(t)&&Pr(t)==E}function aa(t){if(!ia(t)||Pr(t)!=C)return!1;var e=Gt(t);if(null===e)return!0;var n=Lt.call(e,"constructor")&&e.constructor;return"function"==typeof n&&n instanceof n&&Mt.call(n)==$t}var ua=_e?Ze(_e):function(t){return ia(t)&&Pr(t)==A};var ca=xe?Ze(xe):function(t){return ia(t)&&vo(t)==T};function la(t){return"string"==typeof t||!Gs(t)&&ia(t)&&Pr(t)==O}function fa(t){return"symbol"==typeof t||ia(t)&&Pr(t)==I}var da=Se?Ze(Se):function(t){return ia(t)&&na(t.length)&&!!oe[Pr(t)]};var pa=Ki($r),ha=Ki((function(t,e){return t<=e}));function ga(t){if(!t)return[];if(Qs(t))return la(t)?pn(t):Ii(t);if(ee&&t[ee])return function(t){for(var e,n=[];!(e=t.next()).done;)n.push(e.value);return n}(t[ee]());var e=vo(t);return(e==k?an:e==T?ln:Ha)(t)}function ma(t){return t?(t=wa(t))===d||t===-1/0?17976931348623157e292*(t<0?-1:1):t==t?t:0:0===t?t:0}function va(t){var e=ma(t),n=e%1;return e==e?n?e-n:e:0}function ya(t){return t?cr(va(t),0,g):0}function wa(t){if("number"==typeof t)return t;if(fa(t))return h;if(ra(t)){var e="function"==typeof t.valueOf?t.valueOf():t;t=ra(e)?e+"":e}if("string"!=typeof t)return 0===t?t:+t;t=Qe(t);var n=mt.test(t);return n||yt.test(t)?ce(t.slice(2),n?2:8):gt.test(t)?h:+t}function ba(t){return ji(t,Ma(t))}function _a(t){return null==t?"":fi(t)}var xa=Di((function(t,e){if(Co(e)||Qs(e))ji(e,Da(e),t);else for(var n in e)Lt.call(e,n)&&rr(t,n,e[n])})),Sa=Di((function(t,e){ji(e,Ma(e),t)})),ka=Di((function(t,e,n,r){ji(e,Ma(e),t,r)})),Ea=Di((function(t,e,n,r){ji(e,Da(e),t,r)})),Ca=io(ur);var Pa=Yr((function(t,e){t=Pt(t);var n=-1,i=e.length,o=i>2?e[2]:r;for(o&&xo(e[0],e[1],o)&&(i=1);++n1),e})),ji(t,so(t),n),r&&(n=lr(n,7,no));for(var i=e.length;i--;)pi(n,e[i]);return n}));var Ba=io((function(t,e){return null==t?{}:function(t,e){return Gr(t,e,(function(e,n){return Oa(t,n)}))}(t,e)}));function $a(t,e){if(null==t)return{};var n=je(so(t),(function(t){return[t]}));return e=lo(e),Gr(t,n,(function(t,n){return e(t,n[0])}))}var za=Yi(Da),qa=Yi(Ma);function Ha(t){return null==t?[]:Xe(t,Da(t))}var Ua=Ri((function(t,e,n){return e=e.toLowerCase(),t+(n?Va(e):e)}));function Va(t){return Ja(_a(t).toLowerCase())}function Wa(t){return(t=_a(t))&&t.replace(bt,nn).replace(Yt,"")}var Ga=Ri((function(t,e,n){return t+(n?"-":"")+e.toLowerCase()})),Ka=Ri((function(t,e,n){return t+(n?" ":"")+e.toLowerCase()})),Qa=Fi("toLowerCase");var Za=Ri((function(t,e,n){return t+(n?"_":"")+e.toLowerCase()}));var Xa=Ri((function(t,e,n){return t+(n?" ":"")+Ja(e)}));var Ya=Ri((function(t,e,n){return t+(n?" ":"")+e.toUpperCase()})),Ja=Fi("toUpperCase");function tu(t,e,n){return t=_a(t),(e=n?r:e)===r?function(t){return ne.test(t)}(t)?function(t){return t.match(te)||[]}(t):function(t){return t.match(lt)||[]}(t):t.match(e)||[]}var eu=Yr((function(t,e){try{return ke(t,r,e)}catch(t){return Js(t)?t:new kt(t)}})),nu=io((function(t,e){return Ce(e,(function(e){e=$o(e),ar(t,e,js(t[e],t))})),t}));function ru(t){return function(){return t}}var iu=zi(),ou=zi(!0);function su(t){return t}function au(t){return Fr("function"==typeof t?t:lr(t,1))}var uu=Yr((function(t,e){return function(n){return jr(n,t,e)}})),cu=Yr((function(t,e){return function(n){return jr(t,n,e)}}));function lu(t,e,n){var r=Da(e),i=kr(e,r);null!=n||ra(e)&&(i.length||!r.length)||(n=e,e=t,t=this,i=kr(e,Da(e)));var o=!(ra(n)&&"chain"in n&&!n.chain),s=ta(t);return Ce(i,(function(n){var r=e[n];t[n]=r,s&&(t.prototype[n]=function(){var e=this.__chain__;if(o||e){var n=t(this.__wrapped__),i=n.__actions__=Ii(this.__actions__);return i.push({func:r,args:arguments,thisArg:t}),n.__chain__=e,n}return r.apply(t,Ne([this.value()],arguments))})})),t}function fu(){}var du=Vi(je),pu=Vi(Ae),hu=Vi(Le);function gu(t){return So(t)?Ue($o(t)):function(t){return function(e){return Er(e,t)}}(t)}var mu=Gi(),vu=Gi(!0);function yu(){return[]}function wu(){return!1}var bu=Ui((function(t,e){return t+e}),0),_u=Zi("ceil"),xu=Ui((function(t,e){return t/e}),1),Su=Zi("floor");var ku,Eu=Ui((function(t,e){return t*e}),1),Cu=Zi("round"),Pu=Ui((function(t,e){return t-e}),0);return qn.after=function(t,e){if("function"!=typeof e)throw new Ot(i);return t=va(t),function(){if(--t<1)return e.apply(this,arguments)}},qn.ary=Os,qn.assign=xa,qn.assignIn=Sa,qn.assignInWith=ka,qn.assignWith=Ea,qn.at=Ca,qn.before=Is,qn.bind=js,qn.bindAll=nu,qn.bindKey=Ns,qn.castArray=function(){if(!arguments.length)return[];var t=arguments[0];return Gs(t)?t:[t]},qn.chain=gs,qn.chunk=function(t,e,n){e=(n?xo(t,e,n):e===r)?1:bn(va(e),0);var i=null==t?0:t.length;if(!i||e<1)return[];for(var o=0,s=0,a=st(me(i/e));oo?0:o+n),(i=i===r||i>o?o:va(i))<0&&(i+=o),i=n>i?0:ya(i);n>>0)?(t=_a(t))&&("string"==typeof e||null!=e&&!ua(e))&&!(e=fi(e))&&sn(t)?Si(pn(t),0,n):t.split(e,n):[]},qn.spread=function(t,e){if("function"!=typeof t)throw new Ot(i);return e=null==e?0:bn(va(e),0),Yr((function(n){var r=n[e],i=Si(n,0,e);return r&&Ne(i,r),ke(t,this,i)}))},qn.tail=function(t){var e=null==t?0:t.length;return e?oi(t,1,e):[]},qn.take=function(t,e,n){return t&&t.length?oi(t,0,(e=n||e===r?1:va(e))<0?0:e):[]},qn.takeRight=function(t,e,n){var i=null==t?0:t.length;return i?oi(t,(e=i-(e=n||e===r?1:va(e)))<0?0:e,i):[]},qn.takeRightWhile=function(t,e){return t&&t.length?gi(t,lo(e,3),!1,!0):[]},qn.takeWhile=function(t,e){return t&&t.length?gi(t,lo(e,3)):[]},qn.tap=function(t,e){return e(t),t},qn.throttle=function(t,e,n){var r=!0,o=!0;if("function"!=typeof t)throw new Ot(i);return ra(n)&&(r="leading"in n?!!n.leading:r,o="trailing"in n?!!n.trailing:o),Ds(t,e,{leading:r,maxWait:e,trailing:o})},qn.thru=ms,qn.toArray=ga,qn.toPairs=za,qn.toPairsIn=qa,qn.toPath=function(t){return Gs(t)?je(t,$o):fa(t)?[t]:Ii(Bo(_a(t)))},qn.toPlainObject=ba,qn.transform=function(t,e,n){var r=Gs(t),i=r||Xs(t)||da(t);if(e=lo(e,4),null==n){var o=t&&t.constructor;n=i?r?new o:[]:ra(t)&&ta(o)?Hn(Gt(t)):{}}return(i?Ce:xr)(t,(function(t,r,i){return e(n,t,r,i)})),n},qn.unary=function(t){return Os(t,1)},qn.union=is,qn.unionBy=os,qn.unionWith=ss,qn.uniq=function(t){return t&&t.length?di(t):[]},qn.uniqBy=function(t,e){return t&&t.length?di(t,lo(e,2)):[]},qn.uniqWith=function(t,e){return e="function"==typeof e?e:r,t&&t.length?di(t,r,e):[]},qn.unset=function(t,e){return null==t||pi(t,e)},qn.unzip=as,qn.unzipWith=us,qn.update=function(t,e,n){return null==t?t:hi(t,e,bi(n))},qn.updateWith=function(t,e,n,i){return i="function"==typeof i?i:r,null==t?t:hi(t,e,bi(n),i)},qn.values=Ha,qn.valuesIn=function(t){return null==t?[]:Xe(t,Ma(t))},qn.without=cs,qn.words=tu,qn.wrap=function(t,e){return $s(bi(e),t)},qn.xor=ls,qn.xorBy=fs,qn.xorWith=ds,qn.zip=ps,qn.zipObject=function(t,e){return yi(t||[],e||[],rr)},qn.zipObjectDeep=function(t,e){return yi(t||[],e||[],ei)},qn.zipWith=hs,qn.entries=za,qn.entriesIn=qa,qn.extend=Sa,qn.extendWith=ka,lu(qn,qn),qn.add=bu,qn.attempt=eu,qn.camelCase=Ua,qn.capitalize=Va,qn.ceil=_u,qn.clamp=function(t,e,n){return n===r&&(n=e,e=r),n!==r&&(n=(n=wa(n))==n?n:0),e!==r&&(e=(e=wa(e))==e?e:0),cr(wa(t),e,n)},qn.clone=function(t){return lr(t,4)},qn.cloneDeep=function(t){return lr(t,5)},qn.cloneDeepWith=function(t,e){return lr(t,5,e="function"==typeof e?e:r)},qn.cloneWith=function(t,e){return lr(t,4,e="function"==typeof e?e:r)},qn.conformsTo=function(t,e){return null==e||fr(t,e,Da(e))},qn.deburr=Wa,qn.defaultTo=function(t,e){return null==t||t!=t?e:t},qn.divide=xu,qn.endsWith=function(t,e,n){t=_a(t),e=fi(e);var i=t.length,o=n=n===r?i:cr(va(n),0,i);return(n-=e.length)>=0&&t.slice(n,o)==e},qn.eq=Hs,qn.escape=function(t){return(t=_a(t))&&Z.test(t)?t.replace(K,rn):t},qn.escapeRegExp=function(t){return(t=_a(t))&&it.test(t)?t.replace(rt,"\\$&"):t},qn.every=function(t,e,n){var i=Gs(t)?Ae:mr;return n&&xo(t,e,n)&&(e=r),i(t,lo(e,3))},qn.find=ws,qn.findIndex=Wo,qn.findKey=function(t,e){return Re(t,lo(e,3),xr)},qn.findLast=bs,qn.findLastIndex=Go,qn.findLastKey=function(t,e){return Re(t,lo(e,3),Sr)},qn.floor=Su,qn.forEach=_s,qn.forEachRight=xs,qn.forIn=function(t,e){return null==t?t:br(t,lo(e,3),Ma)},qn.forInRight=function(t,e){return null==t?t:_r(t,lo(e,3),Ma)},qn.forOwn=function(t,e){return t&&xr(t,lo(e,3))},qn.forOwnRight=function(t,e){return t&&Sr(t,lo(e,3))},qn.get=Ta,qn.gt=Us,qn.gte=Vs,qn.has=function(t,e){return null!=t&&yo(t,e,Tr)},qn.hasIn=Oa,qn.head=Qo,qn.identity=su,qn.includes=function(t,e,n,r){t=Qs(t)?t:Ha(t),n=n&&!r?va(n):0;var i=t.length;return n<0&&(n=bn(i+n,0)),la(t)?n<=i&&t.indexOf(e,n)>-1:!!i&&$e(t,e,n)>-1},qn.indexOf=function(t,e,n){var r=null==t?0:t.length;if(!r)return-1;var i=null==n?0:va(n);return i<0&&(i=bn(r+i,0)),$e(t,e,i)},qn.inRange=function(t,e,n){return e=ma(e),n===r?(n=e,e=0):n=ma(n),function(t,e,n){return t>=_n(e,n)&&t=-9007199254740991&&t<=p},qn.isSet=ca,qn.isString=la,qn.isSymbol=fa,qn.isTypedArray=da,qn.isUndefined=function(t){return t===r},qn.isWeakMap=function(t){return ia(t)&&vo(t)==j},qn.isWeakSet=function(t){return ia(t)&&"[object WeakSet]"==Pr(t)},qn.join=function(t,e){return null==t?"":yn.call(t,e)},qn.kebabCase=Ga,qn.last=Jo,qn.lastIndexOf=function(t,e,n){var i=null==t?0:t.length;if(!i)return-1;var o=i;return n!==r&&(o=(o=va(n))<0?bn(i+o,0):_n(o,i-1)),e==e?function(t,e,n){for(var r=n+1;r--;)if(t[r]===e)return r;return r}(t,e,o):Be(t,qe,o,!0)},qn.lowerCase=Ka,qn.lowerFirst=Qa,qn.lt=pa,qn.lte=ha,qn.max=function(t){return t&&t.length?vr(t,su,Ar):r},qn.maxBy=function(t,e){return t&&t.length?vr(t,lo(e,2),Ar):r},qn.mean=function(t){return He(t,su)},qn.meanBy=function(t,e){return He(t,lo(e,2))},qn.min=function(t){return t&&t.length?vr(t,su,$r):r},qn.minBy=function(t,e){return t&&t.length?vr(t,lo(e,2),$r):r},qn.stubArray=yu,qn.stubFalse=wu,qn.stubObject=function(){return{}},qn.stubString=function(){return""},qn.stubTrue=function(){return!0},qn.multiply=Eu,qn.nth=function(t,e){return t&&t.length?Vr(t,va(e)):r},qn.noConflict=function(){return de._===this&&(de._=zt),this},qn.noop=fu,qn.now=Ts,qn.pad=function(t,e,n){t=_a(t);var r=(e=va(e))?dn(t):0;if(!e||r>=e)return t;var i=(e-r)/2;return Wi(ve(i),n)+t+Wi(me(i),n)},qn.padEnd=function(t,e,n){t=_a(t);var r=(e=va(e))?dn(t):0;return e&&re){var i=t;t=e,e=i}if(n||t%1||e%1){var o=kn();return _n(t+o*(e-t+ue("1e-"+((o+"").length-1))),e)}return Zr(t,e)},qn.reduce=function(t,e,n){var r=Gs(t)?De:We,i=arguments.length<3;return r(t,lo(e,4),n,i,hr)},qn.reduceRight=function(t,e,n){var r=Gs(t)?Me:We,i=arguments.length<3;return r(t,lo(e,4),n,i,gr)},qn.repeat=function(t,e,n){return e=(n?xo(t,e,n):e===r)?1:va(e),Xr(_a(t),e)},qn.replace=function(){var t=arguments,e=_a(t[0]);return t.length<3?e:e.replace(t[1],t[2])},qn.result=function(t,e,n){var i=-1,o=(e=_i(e,t)).length;for(o||(o=1,t=r);++ip)return[];var n=g,r=_n(t,g);e=lo(e),t-=g;for(var i=Ke(r,e);++n=s)return t;var u=n-dn(i);if(u<1)return i;var c=a?Si(a,0,u).join(""):t.slice(0,u);if(o===r)return c+i;if(a&&(u+=c.length-u),ua(o)){if(t.slice(u).search(o)){var l,f=c;for(o.global||(o=At(o.source,_a(ht.exec(o))+"g")),o.lastIndex=0;l=o.exec(f);)var d=l.index;c=c.slice(0,d===r?u:d)}}else if(t.indexOf(fi(o),u)!=u){var p=c.lastIndexOf(o);p>-1&&(c=c.slice(0,p))}return c+i},qn.unescape=function(t){return(t=_a(t))&&Q.test(t)?t.replace(G,gn):t},qn.uniqueId=function(t){var e=++Ft;return _a(t)+e},qn.upperCase=Ya,qn.upperFirst=Ja,qn.each=_s,qn.eachRight=xs,qn.first=Qo,lu(qn,(ku={},xr(qn,(function(t,e){Lt.call(qn.prototype,e)||(ku[e]=t)})),ku),{chain:!1}),qn.VERSION="4.17.21",Ce(["bind","bindKey","curry","curryRight","partial","partialRight"],(function(t){qn[t].placeholder=qn})),Ce(["drop","take"],(function(t,e){Wn.prototype[t]=function(n){n=n===r?1:bn(va(n),0);var i=this.__filtered__&&!e?new Wn(this):this.clone();return i.__filtered__?i.__takeCount__=_n(n,i.__takeCount__):i.__views__.push({size:_n(n,g),type:t+(i.__dir__<0?"Right":"")}),i},Wn.prototype[t+"Right"]=function(e){return this.reverse()[t](e).reverse()}})),Ce(["filter","map","takeWhile"],(function(t,e){var n=e+1,r=1==n||3==n;Wn.prototype[t]=function(t){var e=this.clone();return e.__iteratees__.push({iteratee:lo(t,3),type:n}),e.__filtered__=e.__filtered__||r,e}})),Ce(["head","last"],(function(t,e){var n="take"+(e?"Right":"");Wn.prototype[t]=function(){return this[n](1).value()[0]}})),Ce(["initial","tail"],(function(t,e){var n="drop"+(e?"":"Right");Wn.prototype[t]=function(){return this.__filtered__?new Wn(this):this[n](1)}})),Wn.prototype.compact=function(){return this.filter(su)},Wn.prototype.find=function(t){return this.filter(t).head()},Wn.prototype.findLast=function(t){return this.reverse().find(t)},Wn.prototype.invokeMap=Yr((function(t,e){return"function"==typeof t?new Wn(this):this.map((function(n){return jr(n,t,e)}))})),Wn.prototype.reject=function(t){return this.filter(Rs(lo(t)))},Wn.prototype.slice=function(t,e){t=va(t);var n=this;return n.__filtered__&&(t>0||e<0)?new Wn(n):(t<0?n=n.takeRight(-t):t&&(n=n.drop(t)),e!==r&&(n=(e=va(e))<0?n.dropRight(-e):n.take(e-t)),n)},Wn.prototype.takeRightWhile=function(t){return this.reverse().takeWhile(t).reverse()},Wn.prototype.toArray=function(){return this.take(g)},xr(Wn.prototype,(function(t,e){var n=/^(?:filter|find|map|reject)|While$/.test(e),i=/^(?:head|last)$/.test(e),o=qn[i?"take"+("last"==e?"Right":""):e],s=i||/^find/.test(e);o&&(qn.prototype[e]=function(){var e=this.__wrapped__,a=i?[1]:arguments,u=e instanceof Wn,c=a[0],l=u||Gs(e),f=function(t){var e=o.apply(qn,Ne([t],a));return i&&d?e[0]:e};l&&n&&"function"==typeof c&&1!=c.length&&(u=l=!1);var d=this.__chain__,p=!!this.__actions__.length,h=s&&!d,g=u&&!p;if(!s&&l){e=g?e:new Wn(this);var m=t.apply(e,a);return m.__actions__.push({func:ms,args:[f],thisArg:r}),new Vn(m,d)}return h&&g?t.apply(this,a):(m=this.thru(f),h?i?m.value()[0]:m.value():m)})})),Ce(["pop","push","shift","sort","splice","unshift"],(function(t){var e=It[t],n=/^(?:push|sort|unshift)$/.test(t)?"tap":"thru",r=/^(?:pop|shift)$/.test(t);qn.prototype[t]=function(){var t=arguments;if(r&&!this.__chain__){var i=this.value();return e.apply(Gs(i)?i:[],t)}return this[n]((function(n){return e.apply(Gs(n)?n:[],t)}))}})),xr(Wn.prototype,(function(t,e){var n=qn[e];if(n){var r=n.name+"";Lt.call(Nn,r)||(Nn[r]=[]),Nn[r].push({name:e,func:n})}})),Nn[qi(r,2).name]=[{name:"wrapper",func:r}],Wn.prototype.clone=function(){var t=new Wn(this.__wrapped__);return t.__actions__=Ii(this.__actions__),t.__dir__=this.__dir__,t.__filtered__=this.__filtered__,t.__iteratees__=Ii(this.__iteratees__),t.__takeCount__=this.__takeCount__,t.__views__=Ii(this.__views__),t},Wn.prototype.reverse=function(){if(this.__filtered__){var t=new Wn(this);t.__dir__=-1,t.__filtered__=!0}else(t=this.clone()).__dir__*=-1;return t},Wn.prototype.value=function(){var t=this.__wrapped__.value(),e=this.__dir__,n=Gs(t),r=e<0,i=n?t.length:0,o=function(t,e,n){var r=-1,i=n.length;for(;++r=this.__values__.length;return{done:t,value:t?r:this.__values__[this.__index__++]}},qn.prototype.plant=function(t){for(var e,n=this;n instanceof Un;){var i=qo(n);i.__index__=0,i.__values__=r,e?o.__wrapped__=i:e=i;var o=i;n=n.__wrapped__}return o.__wrapped__=t,e},qn.prototype.reverse=function(){var t=this.__wrapped__;if(t instanceof Wn){var e=t;return this.__actions__.length&&(e=new Wn(this)),(e=e.reverse()).__actions__.push({func:ms,args:[rs],thisArg:r}),new Vn(e,this.__chain__)}return this.thru(rs)},qn.prototype.toJSON=qn.prototype.valueOf=qn.prototype.value=function(){return mi(this.__wrapped__,this.__actions__)},qn.prototype.first=qn.prototype.head,ee&&(qn.prototype[ee]=function(){return this}),qn}();"function"==typeof define&&"object"==typeof define.amd&&define.amd?(de._=mn,define((function(){return mn}))):he?((he.exports=mn)._=mn,pe._=mn):de._=mn}.call(this),n.exports}.call({});const Ae=p.DiagnosticCategory;function Te(t){return{line:t.row+1,offset:t.column+1}}function Oe(t){return new v(t.line-1,t.offset-1)}function Ie(t){return je(t.start,t.end)}function je(t,e){return new y(Oe(t),Oe(e))}function Ne(t){const e=De(t),n=e.formatCodeOptions;return{formatCodeOptions:{indentSize:atom.config.get("editor.tabLength"),tabSize:atom.config.get("editor.tabLength"),...n},compileOnSave:!!e.compileOnSave,preferences:e.preferences?e.preferences:{}}}function De(t){".json"!==C(t)&&(t=`${t}.json`);let{config:e}=p.readConfigFile(t,(t=>p.sys.readFile(t)));if(void 0===e)return{};if("string"==typeof e.extends){const n=De(P(A(t),e.extends));e=Object.assign({},n,e)}return e}function Me(t){return{label:Fe(t.prefixDisplayParts)+t.parameters.map((t=>Fe(t.displayParts))).join(Fe(t.separatorDisplayParts))+Fe(t.suffixDisplayParts),documentation:Fe(t.documentation),parameters:t.parameters.map(Le)}}function Le(t){return{label:Fe(t.displayParts),documentation:Fe(t.documentation)}}function Fe(t){return t.map((t=>t.text)).join("")}const Re=function(){let t;return function(e,n){if(void 0===e)return!0;void 0===t&&(t=new Map(Object.values(p.Diagnostics).map((t=>[t.code,t.category]))));const r=t.get(e);return void 0===r||r===n}}();function Be(t){return void 0!==t&&function(t){const e=atom.config.get("atom-typescript").tsFileExtensions;atom.config.get("atom-typescript").allowJS&&e.push(...atom.config.get("atom-typescript").jsFileExtensions);return e.includes(t)}(C(t))}function $e(){const t=atom.config.get("atom-typescript").tsSyntaxScopes;return atom.config.get("atom-typescript").allowJS&&t.push(...atom.config.get("atom-typescript").jsSyntaxScopes),t}function ze(t){return Be(t.getPath())&&qe(t)}function qe(t){const[e]=t.getRootScopeDescriptor().getScopesArray();return $e().includes(e)}function He(t,e){const n=t.getPath();if(void 0!==n){return{file:n,...e?Te(e):function(t){const e=t.getCursorBufferPosition();return{line:e.row+1,offset:e.column+1}}(t)}}}async function Ue(t,e){const n=new m({readonly:!0,keyboardInputEnabled:!1,showInvisibles:!1,tabLength:atom.config.get("editor.tabLength")}),r=atom.views.getView(n);try{return r.setUpdatedSynchronously(!0),r.style.pointerEvents="none",r.style.position="absolute",r.style.top="100vh",r.style.width="100vw",atom.grammars.assignLanguageMode(n.getBuffer(),e),n.setText(t),n.scrollToBufferPosition(n.getBuffer().getEndPosition()),atom.views.getView(atom.workspace).appendChild(r),await async function(t){return new Promise((e=>{const n=t.getBuffer().getLanguageMode(),r=t.component.getNextUpdatePromise();if(n.fullyTokenized||n.tree)e(r);else{const n=t.onDidTokenize((()=>{n.dispose(),e(r)}))}}))}(n),Array.from(r.querySelectorAll(".line:not(.dummy)")).map((t=>t.innerHTML))}finally{r.remove()}}function Ve(t,e,n){if(!n.childItems)return;for(const r of n.childItems){const n=We(r),i=Ge(r);if(isFinite(n)&&isFinite(i)){if(t>=n&&e<=i){const n=Ve(t,e,r);return n||r}if(isFinite(i)&&e=r&&e<=i?n:void 0}function We(t){return t.spans.length>0?t.spans[0].start.line-1:0}function Ge(t){const e=t.spans;return e.length>0?e[e.length-1].end.line-1:0}function Ke(t,e){if(!t||!e)return t===e;if(t.text===e.text){if(e.collapsed&&(t.collapsed=!0),t.childItems&&e.childItems){let n,r;for(let i=0,o=t.childItems.length;iWe(t)-We(e)));for(const e of t.childItems)Qe(e)}}class Ze{constructor(t){this.props=t,Lt.initialize(this)}async update(t){this.props={...this.props,...t},await Lt.update(this)}async destroy(){await Lt.destroy(this)}render(){const t=this.props.navTree,{ctrl:e}=this.props,n=e.getSelectedNode(),r=n&&(o=n,(i=t).text===o.text&&Pe.isEqual(i.spans,o.spans));var i,o;const s=(t.childItems?"nested-":"")+"item"+(t.collapsed?" collapsed":" expanded")+(r?" selected":""),a=this.getStyles();return Lt.dom("li",{className:"node entry exanded list-"+s},Lt.dom("div",{className:"header list-item",on:{click:e=>this.entryClicked(e,t)}},Lt.dom("span",{className:a},t.text)),Lt.dom("ol",{className:"entries list-tree"},t.childItems?t.childItems.map((t=>Lt.dom(Ze,{navTree:t,ctrl:e}))):null))}getStyles(){const{kind:t}=this.props.navTree;let e=`icon icon-${t}`;const{kindModifiers:n}=this.props.navTree;return n&&(e+=" "+n.split(/[, ]/).map((t=>`modifier-${t.trim()}`)).join(" ")),e}entryClicked(t,e){t.stopPropagation();(function(t,e){return!!t.childItems&&e.target===e.currentTarget})(e,t)?(e.collapsed=!e.collapsed,Ce(Lt.update(this))):this.props.ctrl.gotoNode(e)}}class Xe{constructor(t){this.props=t,this.subscriptions=new g,this.loadNavTree=async()=>{if(!this.editor)return;if(!this.getClient)return;const t=this.editor.getPath();if(void 0!==t)try{const e=await this.getClient(t),n=(await e.execute("navtree",{file:t})).body;n&&(this.setNavTree(n),await Lt.update(this))}catch(e){console.error(e,t)}},this.selectAtCursorLine=()=>{const t=atom.workspace.getActiveTextEditor();if(void 0===t)return;if(!this.props.navTree)return;const e=t.getCursorBufferPosition().row,n=Ve(e,e,this.props.navTree);n!==this.selectedNode&&(this.selectedNode=n,Ce(Lt.update(this)))},this.subscribeToEditor=async t=>{if(this.editorScrolling&&this.editorScrolling.dispose(),this.editorChanging&&this.editorChanging.dispose(),!t||!ze(t))return this.update({navTree:null});this.editor=t,await this.loadNavTree(),this.editorChanging=t.onDidStopChanging(this.loadNavTree)},Qe(t.navTree),Lt.initialize(this),this.subscriptions.add(atom.workspace.observeActiveTextEditor(this.subscribeToEditor),atom.commands.add("atom-workspace","typescript:reveal-cursor",this.selectAtCursorLine))}async update(t){void 0!==t.navTree&&this.setNavTree(t.navTree),this.props={...this.props,...t},await Lt.update(this)}async destroy(){this.editorScrolling&&this.editorScrolling.dispose(),this.editorChanging&&this.editorChanging.dispose(),this.editorScrolling=void 0,this.editorChanging=void 0,this.selectedNode=void 0,this.subscriptions.dispose(),await Lt.destroy(this)}async setGetClient(t){this.getClient=t,await this.loadNavTree()}getSelectedNode(){return this.selectedNode}render(){const t=this.props.navTree?Lt.dom(Ze,{navTree:this.props.navTree,ctrl:this}):null;return Lt.dom("div",{className:"atomts atomts-semantic-view native-key-bindings"},Lt.dom("ol",{className:"list-tree has-collapsable-children focusable-panel"},t))}readAfterUpdate(){const t=this.element.querySelector(".selected");t&&this.scrollTo(t)}gotoNode(t){if(!this.editor)return;const e=We(t),n=function(t){return t.spans.length>0?t.spans[0].start.offset-1:0}(t);this.editor.setCursorBufferPosition([e,n])}getCursorLine(){return this.editor?this.editor.getLastCursor().getBufferRow():void 0}setNavTree(t){if(Qe(t),Pe.isEqual(t,this.props.navTree))return;let e;if(Ke(t,this.props.navTree),this.props.navTree=t,t){const n=this.getCursorLine();void 0!==n&&(e=Ve(n,n,t))}this.selectedNode=e}scrollTo(t){const e=t;"function"==typeof e.scrollIntoViewIfNeeded?e.scrollIntoViewIfNeeded():e.scrollIntoView()}}class Ye{constructor(t){this.comp=new Xe({navTree:t.navTree})}static create(t){return Ye.instance||(Ye.instance=new Ye(t)),Ye.instance}get element(){return this.comp.element}async setGetClient(t){await this.comp.setGetClient(t),await this.comp.update({})}getTitle(){return"TypeScript"}getURI(){return"atom-typescript://semantic-view"}async destroy(){Ye.instance=null,await this.comp.destroy()}getDefaultLocation(){return"right"}getAllowedLocations(){return["left","right"]}serialize(){return{deserializer:"atomts-semantic-view/SemanticView",data:{navTree:this.comp.props.navTree}}}}Ye.instance=null;var Je;Je=function(t,e){return tn(t,e)};var tn=function(t,e){return t?en(t,e):new nn(e)};Je.createStream=tn;function en(t,e){if(!t)throw new Error("expected readStream");if(!t.readable)throw new Error("readStream must be readable");var n=new nn(e);return t.pipe(n),n}function nn(t){f.call(this,t),t=t||{},this._readableState.objectMode=!0,this._lineBuffer=[],this._keepEmptyLines=t.keepEmptyLines||!1,this._lastChunkEndedWithCR=!1;var e=this;this.on("pipe",(function(t){e.encoding||t instanceof d&&(e.encoding=t._readableState.encoding)}))}Je.createLineStream=function(t){return console.log("WARNING: byline#createLineStream is deprecated and will be removed soon"),en(t)},Je.LineStream=nn,c(nn,f),nn.prototype._transform=function(t,e,n){e=e||"utf8",Buffer.isBuffer(t)&&("buffer"==e?(t=t.toString(),e="utf8"):t=t.toString(e)),this._chunkEncoding=e;var r=t.split(/\r\n|[\n\v\f\r\x85\u2028\u2029]/g);this._lastChunkEndedWithCR&&"\n"==t[0]&&r.shift(),this._lineBuffer.length>0&&(this._lineBuffer[this._lineBuffer.length-1]+=r[0],r.shift()),this._lastChunkEndedWithCR="\r"==t[t.length-1],this._lineBuffer=this._lineBuffer.concat(r),this._pushBuffer(e,1,n)},nn.prototype._pushBuffer=function(t,e,n){for(;this._lineBuffer.length>e;){var r=this._lineBuffer.shift();if((this._keepEmptyLines||r.length>0)&&!this.push(this._reencode(r,t))){var i=this;return void s((function(){i._pushBuffer(t,e,n)}))}}n()},nn.prototype._flush=function(t){this._pushBuffer(this._chunkEncoding,0,t)},nn.prototype._reencode=function(t,e){return this.encoding&&this.encoding!=e?new Buffer(t,e).toString(this.encoding):this.encoding?t:new Buffer(t,e)};var rn=e(Je);class on{constructor(t){this.reportBusyWhile=t,this.callbacks=new Map,this.interval=0}async add(t,e){try{const n=new Promise(((n,r)=>{this.callbacks.set(t,{command:e,resolve:n,reject:r,started:Date.now()})}));return 0===this.interval&&(this.interval=window.setInterval((()=>{process.activateUvLoop()}),100)),await this.reportBusyWhile(e,(()=>n))}finally{this.callbacks.delete(t),0!==this.interval&&0===this.callbacks.size&&(clearInterval(this.interval),this.interval=0)}}rejectAll(t){for(const{reject:e}of this.callbacks.values())e(t);this.callbacks.clear()}resolve(t){const e=this.callbacks.get(t.request_seq);e?(window.atom_typescript_debug&&console.log("received response for",t.command,"in",Date.now()-e.started,"ms","with data",t.body),t.success?e.resolve(t):e.reject(new Error(t.message))):console.warn("unexpected response:",t)}resolveMS(t){const e=this.callbacks.get(t.request_seq);e?(window.atom_typescript_debug&&console.log(`received requestCompleted event for multistep command ${e.command} in ${Date.now()-e.started} ms`),e.resolve(void 0)):console.warn("unexpected requestCompleted event:",t)}error(t,e){const n=this.callbacks.get(t);n?n.reject(e):console.error(e)}}const sn=new Set(Object.keys({compileOnSaveAffectedFileList:!0,compileOnSaveEmitFile:!0,completionEntryDetails:!0,completions:!0,completionInfo:!0,configure:!0,definition:!0,format:!0,getCodeFixes:!0,getSupportedCodeFixes:!0,documentHighlights:!0,projectInfo:!0,quickinfo:!0,references:!0,reload:!0,rename:!0,navtree:!0,navto:!0,getApplicableRefactors:!0,getEditsForRefactor:!0,organizeImports:!0,signatureHelp:!0,getEditsForFileRename:!0,applyCodeActionCommand:!0})),an=new Set(Object.keys({geterr:!0,geterrForProject:!0})),un=new Set(Object.keys({configFileDiag:!0,semanticDiag:!0,suggestionDiag:!0,syntaxDiag:!0}));class cn{constructor(t,e,n){this.tsServerPath=t,this.version=e,this.reportBusyWhile=n,this.emitter=new _,this.seq=0,this.lastStderrOutput="",this.on=this.emitter.on.bind(this.emitter),this.exitHandler=(t,e=!0)=>{if(this.callbacks.rejectAll(t),e&&console.error("tsserver: ",t),this.server=void 0,this.emitter.emit("terminated"),e){let e=t.message;this.lastStderrOutput&&(e=`Last output from tsserver:\n${this.lastStderrOutput}\n\n${e}`),atom.notifications.addError("TypeScript server quit unexpectedly",{detail:e,stack:t.stack,dismissable:!0})}},this.onMessage=t=>{"response"===t.type?this.callbacks.resolve(t):this.onEvent(t)};const[r,i]=e.split(".").slice(0,2).map((t=>parseInt(t,10)));this.multistepSupported=r>2||2===r&&i>=2,this.callbacks=new on(this.reportBusyWhile),this.server=this.startServer()}async execute(t,...e){this.server||(this.server=this.startServer(),this.emitter.emit("restarted"));const n={seq:this.seq++,command:t,arguments:e[0]};let r;window.atom_typescript_debug&&console.log("sending request",n),(function(t){return sn.has(t)}(t)||this.multistepSupported&&function(t){return an.has(t)}(t))&&(r=this.callbacks.add(n.seq,t));try{if(!this.server.stdin)throw new Error("Server stdin is missing");this.server.stdin.write(JSON.stringify(n)+"\n")}catch(t){this.callbacks.error(n.seq,t)}return r}async restartServer(){if(this.server){const t=this.server,e=setTimeout((()=>t.kill()),1e4);await Promise.all([this.execute("exit"),new Promise((t=>{const e=this.emitter.once("terminated",(()=>{e.dispose(),t()}))}))]),clearTimeout(e)}this.server||(this.server=this.startServer(),this.emitter.emit("restarted"))}startServer(){window.atom_typescript_debug&&console.log("starting",this.tsServerPath);const t=function(t){const e=atom.config.get("atom-typescript").locale,n=e?["--locale",e]:[];return new x({command:t,args:n}).process}(this.tsServerPath);if(!t)throw new Error("ChildProcess failed to start");const e=this.exitHandler;if(t.once("error",e),t.once("exit",((t,n)=>{0===t?e(new Error("Server stopped normally"),!1):null!==t?e(new Error(`exited with code: ${t}`)):null!==n&&e(new Error(`terminated on signal: ${n}`))})),!t.stdout)throw new Error("ChildProcess stdout missing");if(!t.stderr)throw new Error("ChildProcess stderr missing");var n;return(n=t.stdout,n.pipe(rn()).pipe(new ln)).on("data",this.onMessage),t.stderr.on("data",(t=>{console.warn("tsserver stderr:",this.lastStderrOutput=t.toString())})),t}onEvent(t){var e;window.atom_typescript_debug&&console.log("received event",t),t.body&&(e=t.event,un.has(e)?this.emitter.emit(t.event,t.body):"requestCompleted"===t.event&&this.callbacks.resolveMS(t.body))}}class ln extends f{constructor(){super({objectMode:!0})}_transform(t,e,n){const r=t.toString();try{r.startsWith("{")?this.push(JSON.parse(r)):r.startsWith("Content-Length:")||console.warn(r)}catch(t){console.error("client: failed to parse: ",r)}finally{n(void 0)}}}function fn(t,e){void 0===e&&(e=!1);var n=t.length,r=0,i="",o=0,s=16,a=0,u=0,c=0,l=0,f=0;function d(e,n){for(var i=0,o=0;i=48&&s<=57)o=16*o+s-48;else if(s>=65&&s<=70)o=16*o+s-65+10;else{if(!(s>=97&&s<=102))break;o=16*o+s-97+10}r++,i++}return i=n)return o=n,s=17;var e=t.charCodeAt(r);if(dn(e)){do{r++,i+=String.fromCharCode(e),e=t.charCodeAt(r)}while(dn(e));return s=15}if(pn(e))return r++,i+=String.fromCharCode(e),13===e&&10===t.charCodeAt(r)&&(r++,i+="\n"),a++,c=r,s=14;switch(e){case 123:return r++,s=1;case 125:return r++,s=2;case 91:return r++,s=3;case 93:return r++,s=4;case 58:return r++,s=6;case 44:return r++,s=5;case 34:return r++,i=function(){for(var e="",i=r;;){if(r>=n){e+=t.substring(i,r),f=2;break}var o=t.charCodeAt(r);if(34===o){e+=t.substring(i,r),r++;break}if(92!==o){if(o>=0&&o<=31){if(pn(o)){e+=t.substring(i,r),f=2;break}f=6}r++}else{if(e+=t.substring(i,r),++r>=n){f=2;break}switch(t.charCodeAt(r++)){case 34:e+='"';break;case 92:e+="\\";break;case 47:e+="/";break;case 98:e+="\b";break;case 102:e+="\f";break;case 110:e+="\n";break;case 114:e+="\r";break;case 116:e+="\t";break;case 117:var s=d(4,!0);s>=0?e+=String.fromCharCode(s):f=4;break;default:f=5}i=r}}return e}(),s=10;case 47:var p=r-1;if(47===t.charCodeAt(r+1)){for(r+=2;r=12&&t<=15);return t}:p,getToken:function(){return s},getTokenValue:function(){return i},getTokenOffset:function(){return o},getTokenLength:function(){return r-o},getTokenStartLine:function(){return u},getTokenStartCharacter:function(){return o-l},getTokenError:function(){return f}}}function dn(t){return 32===t||9===t||11===t||12===t||160===t||5760===t||t>=8192&&t<=8203||8239===t||8287===t||12288===t||65279===t}function pn(t){return 10===t||13===t||8232===t||8233===t}function hn(t){return t>=48&&t<=57}var gn;function mn(t,e,n){void 0===n&&(n=gn.DEFAULT);var r=fn(t,!1);function i(t){return t?function(){return t(r.getTokenOffset(),r.getTokenLength(),r.getTokenStartLine(),r.getTokenStartCharacter())}:function(){return!0}}function o(t){return t?function(e){return t(e,r.getTokenOffset(),r.getTokenLength(),r.getTokenStartLine(),r.getTokenStartCharacter())}:function(){return!0}}var s=i(e.onObjectBegin),a=o(e.onObjectProperty),u=i(e.onObjectEnd),c=i(e.onArrayBegin),l=i(e.onArrayEnd),f=o(e.onLiteralValue),d=o(e.onSeparator),p=i(e.onComment),h=o(e.onError),g=n&&n.disallowComments,m=n&&n.allowTrailingComma;function v(){for(;;){var t=r.scan();switch(r.getTokenError()){case 4:y(14);break;case 5:y(15);break;case 3:y(13);break;case 1:g||y(11);break;case 2:y(12);break;case 6:y(16)}switch(t){case 12:case 13:g?y(10):p();break;case 16:y(1);break;case 15:case 14:break;default:return t}}}function y(t,e,n){if(void 0===e&&(e=[]),void 0===n&&(n=[]),h(t),e.length+n.length>0)for(var i=r.getToken();17!==i;){if(-1!==e.indexOf(i)){v();break}if(-1!==n.indexOf(i))break;i=v()}}function w(t){var e=r.getTokenValue();return t?f(e):a(e),v(),!0}function b(){switch(r.getToken()){case 3:return function(){c(),v();for(var t=!1;4!==r.getToken()&&17!==r.getToken();){if(5===r.getToken()){if(t||y(4,[],[]),d(","),v(),4===r.getToken()&&m)break}else t&&y(6,[],[]);b()||y(4,[],[4,5]),t=!0}return l(),4!==r.getToken()?y(8,[4],[]):v(),!0}();case 1:return function(){s(),v();for(var t=!1;2!==r.getToken()&&17!==r.getToken();){if(5===r.getToken()){if(t||y(4,[],[]),d(","),v(),2===r.getToken()&&m)break}else t&&y(6,[],[]);(10!==r.getToken()?(y(3,[],[2,5]),0):(w(!1),6===r.getToken()?(d(":"),v(),b()||y(4,[],[2,5])):y(5,[],[2,5]),1))||y(4,[],[2,5]),t=!0}return u(),2!==r.getToken()?y(7,[2],[]):v(),!0}();case 10:return w(!0);default:return function(){switch(r.getToken()){case 11:var t=r.getTokenValue(),e=Number(t);isNaN(e)&&(y(2),e=0),f(e);break;case 7:f(null);break;case 8:f(!0);break;case 9:f(!1);break;default:return!1}return v(),!0}()}}return v(),17===r.getToken()?!!n.allowEmptyContent||(y(4,[],[]),!1):b()?(17!==r.getToken()&&y(9,[],[]),!0):(y(4,[],[]),!1)}(gn||(gn={})).DEFAULT={allowTrailingComma:!1};var vn,yn,wn,bn,_n,xn,Sn,kn,En,Cn,Pn,An=function(t,e,n){void 0===e&&(e=[]),void 0===n&&(n=gn.DEFAULT);var r=null,i=[],o=[];function s(t){Array.isArray(i)?i.push(t):null!==r&&(i[r]=t)}return mn(t,{onObjectBegin:function(){var t={};s(t),o.push(i),i=t,r=null},onObjectProperty:function(t){r=t},onObjectEnd:function(){i=o.pop()},onArrayBegin:function(){var t=[];s(t),o.push(i),i=t,r=null},onArrayEnd:function(){i=o.pop()},onLiteralValue:s,onError:function(t,n,r){e.push({error:t,offset:n,length:r})}},n),i[0]},Tn=vn=function(){var t=Error.prepareStackTrace;Error.prepareStackTrace=function(t,e){return e};var e=(new Error).stack;return Error.prepareStackTrace=t,e[2].getFileName()},On=!1;function In(){wn={},bn="win32"===process.platform,_n=/^([a-zA-Z]:|[\\\/]{2}[^\\\/]+[\\\/]+[^\\\/]+)?([\\\/])?([\s\S]*?)$/,xn=/^([\s\S]*?)((?:\.{1,2}|[^\\\/]+?|)(\.[^.\/\\]*|))(?:[\\\/]*)$/,(Sn={}).parse=function(t){if("string"!=typeof t)throw new TypeError("Parameter 'pathString' must be a string, not "+typeof t);var e,n,r,i,o,s=(e=t,n=_n.exec(e),r=(n[1]||"")+(n[2]||""),i=n[3]||"",o=xn.exec(i),[r,o[1],o[2],o[3]]);if(!s||4!==s.length)throw new TypeError("Invalid path '"+t+"'");return{root:s[0],dir:s[0]+s[1].slice(0,-1),base:s[2],ext:s[3],name:s[2].slice(0,s[2].length-s[3].length)}},kn=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/,(En={}).parse=function(t){if("string"!=typeof t)throw new TypeError("Parameter 'pathString' must be a string, not "+typeof t);var e,n=(e=t,kn.exec(e).slice(1));if(!n||4!==n.length)throw new TypeError("Invalid path '"+t+"'");return n[1]=n[1]||"",n[2]=n[2]||"",n[3]=n[3]||"",{root:n[0],dir:n[0]+n[1].slice(0,-1),base:n[2],ext:n[3],name:n[2].slice(0,n[2].length-n[3].length)}},wn=bn?Sn.parse:En.parse,Cn=En.parse,wn.posix=Cn,Pn=Sn.parse,wn.win32=Pn}var jn,Nn,Dn=D||(On||(On=!0,In()),wn),Mn=function(t,e){var n="/";/^([A-Za-z]:)/.test(t)?n="":/^\\\\/.test(t)&&(n="\\\\");for(var r=[t],i=Dn(t);i.dir!==r[r.length-1];)r.push(i.dir),i=Dn(i.dir);return r.reduce((function(t,r){return t.concat(e.map((function(t){return I(n,r,t)})))}),[])},Ln=yn=function(t,e,n){var r=e&&e.moduleDirectory?[].concat(e.moduleDirectory):["node_modules"];if(e&&"function"==typeof e.paths)return e.paths(n,t,(function(){return Mn(t,r)}),e);var i=Mn(t,r);return e&&e.paths?i.concat(e.paths):i},Fn=jn=function(t,e){return e||{}},Rn=Array.prototype.slice,Bn=Object.prototype.toString,$n=function(t){var e=this;if("function"!=typeof e||"[object Function]"!==Bn.call(e))throw new TypeError("Function.prototype.bind called on incompatible "+e);for(var n,r=Rn.call(arguments,1),i=function(){if(this instanceof n){var i=e.apply(this,r.concat(Rn.call(arguments)));return Object(i)===i?i:this}return e.apply(t,r.concat(Rn.call(arguments)))},o=Math.max(0,e.length-r.length),s=[],a=0;a1?r[0]:"=",o=(r.length>1?r[1]:r[0]).split("."),s=0;s<3;++s){var a=parseInt(n[s]||0,10),u=parseInt(o[s]||0,10);if(a!==u)return"<"===i?a="===i&&a>=u}return">="===i}function Hn(t,e){var n=e.split(/ ?&& ?/);if(0===n.length)return!1;for(var r=0;r= 15","async_hooks":">= 8","buffer_ieee754":"< 0.9.7","buffer":true,"child_process":true,"cluster":true,"console":true,"constants":true,"crypto":true,"_debug_agent":">= 1 && < 8","_debugger":"< 8","dgram":true,"diagnostics_channel":">= 15.1","dns":true,"dns/promises":">= 15","domain":">= 0.7.12","events":true,"freelist":"< 6","fs":true,"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":true,"http2":">= 8.8","https":true,"inspector":">= 8.0.0","_linklist":"< 8","module":true,"net":true,"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":true,"path":true,"path/posix":">= 15.3","path/win32":">= 15.3","perf_hooks":">= 8.5","process":">= 1","punycode":true,"querystring":true,"readline":true,"repl":true,"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":true,"stream/promises":">= 15","string_decoder":true,"sys":[">= 0.6 && < 0.7",">= 0.8"],"timers":true,"timers/promises":">= 15","_tls_common":">= 0.11.13","_tls_legacy":">= 0.11.3 && < 10","_tls_wrap":">= 0.11.3","tls":true,"trace_events":">= 10","tty":true,"url":true,"util":true,"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":true,"wasi":">= 13.4 && < 13.5","worker_threads":">= 11.7","zlib":true}'),Wn=Nn=function(t,e){return zn(Vn,t)&&function(t,e){if("boolean"==typeof e)return e;var n=void 0===t?process.versions&&process.versions.node&&process.versions.node:t;if("string"!=typeof n)throw new TypeError(void 0===t?"Unable to determine current node version":"If provided, a valid node version is required");if(e&&"object"==typeof e){for(var r=0;r1?e[0]:"=",r=(e.length>1?e[1]:e[0]).split("."),i=0;i<3;++i){var o=parseInt(tr[i]||0,10),s=parseInt(r[i]||0,10);if(o!==s)return"<"===n?o="===n&&o>=s}return">="===n}function nr(t){var e=t.split(/ ?&& ?/);if(0===e.length)return!1;for(var n=0;n= 15","async_hooks":">= 8","buffer_ieee754":"< 0.9.7","buffer":true,"child_process":true,"cluster":true,"console":true,"constants":true,"crypto":true,"_debug_agent":">= 1 && < 8","_debugger":"< 8","dgram":true,"diagnostics_channel":">= 15.1","dns":true,"dns/promises":">= 15","domain":">= 0.7.12","events":true,"freelist":"< 6","fs":true,"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":true,"http2":">= 8.8","https":true,"inspector":">= 8.0.0","_linklist":"< 8","module":true,"net":true,"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":true,"path":true,"path/posix":">= 15.3","path/win32":">= 15.3","perf_hooks":">= 8.5","process":">= 1","punycode":true,"querystring":true,"readline":true,"repl":true,"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":true,"stream/promises":">= 15","string_decoder":true,"sys":[">= 0.6 && < 0.7",">= 0.8"],"timers":true,"timers/promises":">= 15","_tls_common":">= 0.11.13","_tls_legacy":">= 0.11.3 && < 10","_tls_wrap":">= 0.11.3","tls":true,"trace_events":">= 10","tty":true,"url":true,"util":true,"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":true,"wasi":">= 13.4 && < 13.5","worker_threads":">= 11.7","zlib":true}'),or={};for(var sr in ir)Object.prototype.hasOwnProperty.call(ir,sr)&&(or[sr]=rr(ir[sr]));Un=or,Jn.core=Un;var ar,ur=Nn;ar=function(t){return ur(t)},Jn.isCore=ar;var cr,lr=Nn,fr=vn,dr=yn,pr=jn,hr=U&&"function"==typeof U.native?U.native:U,gr=function(t){try{var e=V(t)}catch(t){if(t&&("ENOENT"===t.code||"ENOTDIR"===t.code))return!1;throw t}return e.isFile()||e.isFIFO()},mr=function(t){try{var e=V(t)}catch(t){if(t&&("ENOENT"===t.code||"ENOTDIR"===t.code))return!1;throw t}return e.isDirectory()},vr=function(t){try{return hr(t)}catch(t){if("ENOENT"!==t.code)throw t}return t},yr=function(t,e,n){return n&&!1===n.preserveSymlinks?t(e):e},wr=function(t,e){var n=t(e);try{return JSON.parse(n)}catch(t){}};cr=function(t,e){if("string"!=typeof t)throw new TypeError("Path must be a string.");var n=pr(t,e),r=n.isFile||gr,i=n.readFileSync||i,o=n.isDirectory||mr,s=n.realpathSync||vr,a=n.readPackageSync||wr;if(n.readFileSync&&n.readPackageSync)throw new TypeError("`readFileSync` and `readPackageSync` are mutually exclusive.");var u=n.packageIterator,c=n.extensions||[".js"],l=!1!==n.includeCoreModules,f=n.basedir||A(fr()),d=n.filename||f;n.paths=n.paths||[];var p=yr(s,I(f),n);if(/^(?:\.\.?(?:\/|$)|\/|([A-Za-z]:)?[/\\])/.test(t)){var h=I(p,t);"."!==t&&".."!==t&&"/"!==t.slice(-1)||(h+="/");var g=y(h)||b(h);if(g)return yr(s,g,n)}else{if(l&&lr(t))return t;var m=function(t,e){for(var r=function(){return function(t,e,n){for(var r=dr(e,n,t),i=0;ibr(t,e,((t,e)=>{t?r(t):void 0===e?r(new Error("Module path is undefined")):n(e)}))))}(`typescript/lib/${r}`,{basedir:A(t),paths:void 0!==n?n.split(O):void 0}).catch((async()=>{const e=await async function(t){const e=await kr(t);if(e)try{const r=An(await async function(t){return new Promise(((e,n)=>z(t,((t,r)=>{t?n(t):e(r.toString("utf-8"))}))))}(e.configFile));let i;if("object"==typeof(n=r)&&null!==n&&"string"==typeof n.tsdkPath)i=r.tsdkPath;else{if(!function(t){return"object"==typeof t&&null!==t&&"string"==typeof t["typescript.tsdk"]}(r))return;i=t(r["typescript.tsdk"])}return j(i)?i:P(e.basedir,i)}catch(t){console.warn(t)}var n}(A(t));if(void 0!==e){const t=P(e,"lib",r);if(await xr(t))return t}const n=atom.config.get("atom-typescript.tsdkPath");if(n){const t=P(n,"lib",r);if(await xr(t))return t}return require.resolve(`typescript/lib/${r}`)})),o=I(i,"../../package.json");return{version:require(o).version,pathToBin:i}}async function xr(t){return new Promise((e=>B(t,$.F_OK,(t=>{e(!t)}))))}async function Sr(t,e){for(const n of e){const e=P(t,...n);if(await xr(e))return e}}async function kr(t){let e=t,n=A(e);for(;e!==n;){const t=await Sr(e,[[".atom-typescript.json"],[".atom","atom-typescript.json"],[".vscode","settings.json"]]);if(void 0!==t)return{basedir:e,configFile:t};e=n,n=A(e)}}class Er{constructor(t){this.reportBusyWhile=t,this.clients=new Map,this.memoizedClients=new Map,this.emitter=new _,this.subscriptions=new g,this.tsserverInstancePerTsconfig=atom.config.get("atom-typescript").tsserverInstancePerTsconfig,this.on=this.emitter.on.bind(this.emitter),this.diagnosticHandler=(t,e)=>n=>{const r=(i=n)&&i.triggerFile&&i.configFile?n.configFile:n.file;var i;r&&this.emitter.emit("diagnostics",{type:e,serverPath:t,filePath:r,diagnostics:n.diagnostics})}}async restartAllServers(){await this.reportBusyWhile("Restarting servers",(()=>Promise.all(Array.from(this.getAllClients()).map((t=>t.restartServer())))))}async get(t){const e=this.memoizedClients.get(t);if(e)return e;const n=this._get(t);this.memoizedClients.set(t,n);try{return await n}catch(e){throw this.memoizedClients.delete(t),e}}dispose(){this.emitter.dispose(),this.subscriptions.dispose(),this.memoizedClients.clear(),this.clients.clear()}async _get(t){const{pathToBin:e,version:n}=await _r(t,"tsserver"),r=this.tsserverInstancePerTsconfig?p.findConfigFile(t,(t=>p.sys.fileExists(t))):void 0;let i=this.clients.get(e);i||(i=new Map,this.clients.set(e,i));const o=i.get(r);if(o)return o;const s=new cn(e,n,this.reportBusyWhile);return i.set(r,s),this.subscriptions.add(s.on("configFileDiag",this.diagnosticHandler(e,"configFileDiag")),s.on("semanticDiag",this.diagnosticHandler(e,"semanticDiag")),s.on("syntaxDiag",this.diagnosticHandler(e,"syntaxDiag")),s.on("suggestionDiag",this.diagnosticHandler(e,"suggestionDiag"))),s}*getAllClients(){for(const t of this.clients.values())yield*t.values()}}function Cr(t){return{grammarScopes:$e(),priority:100,highlight:async function(e,n){if(!ze(e))return;const r=He(e,n);if(!r)return;const i=await t(r.file),o=await i.execute("documentHighlights",{...r,filesToSearch:[r.file]});return o.body?Array.from(function*(t,e){for(const n of e)n.file===t&&(yield*n.highlightSpans.map(Ie))}(r.file,o.body)):void 0}}}async function Pr(t,e,n){if(void 0===t)return null;const r=e.dom("div",{className:"atom-typescript-datatip-tooltip-kind"},t.kind,function(t,e){return void 0===e?null:t.dom("span",{className:"atom-typescript-datatip-tooltip-kind-modifiers"},e)}(t.kindModifiers)),i=t.tags?t.tags.map((t=>{const n=`atom-typescript-datatip-tooltip-doc-tag atom-typescript-datatip-tooltip-doc-tag-name-${t.name}`;return e.dom("div",{className:n},e.dom("span",{className:"atom-typescript-datatip-tooltip-doc-tag-name"},t.name),function(t,e){if(void 0===e)return null;const[,n,r]=/^\s*(\S*)([^]*)$/.exec(e);return t.dom("span",{className:"atom-typescript-datatip-tooltip-doc-tag-text"},t.dom("span",{className:"atom-typescript-datatip-tooltip-doc-tag-text-first-word"},n),r)}(e,t.text))})):null,o=e.dom("div",{className:"atom-typescript-datatip-tooltip-doc"},t.documentation,i),s=t.displayString.replace(/^\(.+?\)\s+/,"");return[await n(s),r,o]}const Ar=Symbol.for("react.element"),Tr={dom:function(t,e,...n){return n.length>0?{$$typeof:Ar,type:t,ref:null,props:{...e,children:n}}:{$$typeof:Ar,type:t,ref:null,props:{...e}}}};class Or{constructor(t){this.getClient=t,this.providerName="TypeScript type tooltips",this.priority=100,this.grammarScopes=$e()}async datatip(t,e){try{const n=t.getPath();if(void 0===n)return;const r=await this.getClient(n),i=(await r.execute("quickinfo",{file:n,line:e.row+1,offset:e.column+1})).body,o=await Pr(i,Tr,Ir);return{component:()=>Tr.dom("div",{className:"atom-typescript-datatip-tooltip"},o),range:y.fromObject([Oe(i.start),Oe(i.end)])}}catch(t){return}}}async function Ir(t){const e=atom.config.get("editor.fontFamily"),n=await Ue(t.replace(/\r?\n$/,""),"source.ts");return Tr.dom("div",{style:{fontFamily:e},className:"atom-typescript-datatip-tooltip-code",dangerouslySetInnerHTML:{__html:n.join("\n")}})}function jr(t){const e=Ie(t);return{path:t.file,position:e.start,range:e,language:"TypeScript"}}function Nr(t){return{uri:t.file,range:je(t.start,t.end),name:void 0}}class Dr{constructor(t){this.props=t,Lt.initialize(this)}async update(t){return this.props={...this.props,...t},Lt.update(this)}render(){const t={fontFamily:atom.config.get("editor.fontFamily")};return Lt.dom("div",{className:"editor editor-colors",style:t,innerHTML:this.props.highlightedText})}}var Mr,Lr,Fr,Rr={},Br=!1;function $r(){return Br||(Br=!0,function(){var t,e;t=E,Mr=function(e,n,r){var i,o,s,a,u;for(o=e.length-1;e[o]===t;)o--;for(u=0,s=o,i=null;o>=0;)e[o]===t?(u++,null==i&&(i=e.substring(o+1,s+1))):0===o&&(s0&&f.push({candidate:a,score:l}));f.sort(n),r=f.map(t)}return null!=c&&(r=r.slice(0,c)),r}}.call(zr={})),zr}var Ur,Vr,Wr,Gr=!1;function Kr(){return Gr||(Gr=!0,function(){var t;t=E,Ur=function(e,n){var r,i,o;for(i=e.length-1;e[i]===t;)i--;for(o=i,r=null;i>=0;)e[i]===t?null==r&&(r=e.substring(i+1,o+1)):0===i&&(or;n<=r?e++:e--)d.push(e);return d}.apply(this);for(c=e.length,l=t.length,i=0,o=0,a=[];ie;0<=e?t++:t--)l.push(t);return l}.apply(this);if(u=-1!==i.indexOf(t),i=i.replace(e,""),a=r.match(n,i),!u)for(o=r.basenameMatch(n,i),a=a.concat(o).sort((function(t,e){return t-e})),c=null,s=0;sLt.dom("span",{className:t.type},t.text))))}match(t){return t.query?function(t,e){let n=0,r=[];const i=[],o=Rr.match(t,e);let s;for(s of o){if(s<0)continue;const e=t.substring(n,s);e&&(r.length>0&&i.push({text:r.join(""),type:"character-match"}),r=[],i.push({text:e})),r.push(t[s]),n=s+1}r.length>0&&i.push({text:r.join(""),type:"character-match"});return i.push({text:t.substring(n)}),i}(t.label,t.query):[{text:t.label}]}}var Zr,Xr,Yr={};const Jr=Xr={onCopy:"copy",onCut:"cut",onPaste:"paste",onCompositionEnd:"compositionend",onCompositionStart:"compositionstart",onCompositionUpdate:"compositionupdate",onKeyDown:"keydown",onKeyPress:"keypress",onKeyUp:"keyup",onFocus:"focus",onBlur:"blur",onChange:"change",onInput:"input",onSubmit:"submit",onClick:"click",onContextMenu:"contextmenu",onDoubleClick:"dblclick",onDrag:"drag",onDragEnd:"dragend",onDragEnter:"dragenter",onDragExit:"dragexit",onDragLeave:"dragleave",onDragOver:"dragover",onDragStart:"dragstart",onDrop:"drop",onMouseDown:"mousedown",onMouseEnter:"mouseenter",onMouseLeave:"mouseleave",onMouseMove:"mousemove",onMouseOut:"mouseout",onMouseOver:"mouseover",onMouseUp:"mouseup",onSelect:"select",onTouchCancel:"touchcancel",onTouchEnd:"touchend",onTouchMove:"touchmove",onTouchStart:"touchstart",onScroll:"scroll",onWheel:"wheel",onAbort:"abort",onCanPlay:"canplay",onCanPlayThrough:"canplaythrough",onDurationChange:"durationchange",onEmptied:"emptied",onEncrypted:"encrypted",onEnded:"ended",onError:"error",onLoadedData:"loadeddata",onLoadedMetadata:"loadedmetadata",onLoadStart:"loadstart",onPause:"pause",onPlay:"play",onPlaying:"playing",onProgress:"progress",onRateChange:"ratechange",onSeeked:"seeked",onSeeking:"seeking",onStalled:"stalled",onSuspend:"suspend",onTimeUpdate:"timeupdate",onVolumeChange:"volumechange",onWaiting:"waiting",onLoad:"load",onAnimationStart:"animationstart",onAnimationEnd:"animationend",onAnimationIteration:"animationiteration",onTransitionEnd:"transitionend"};var ti={};const ei=ti=new Set(["circle","clipPath","defs","ellipse","g","image","line","linearGradient","mask","path","pattern","polygon","polyline","radialGradient","rect","stop","svg","text","tspan"]);function ni(t,e,...n){for(let t=0;tni(t,e,...n);for(const t of ei)ni[t]=(e,...n)=>ni(t,e,...n);const ii=ni;var oi,si;const ai=Xr;var ui={};ui=new Map([["accentHeight","accent-height"],["alignmentBaseline","alignment-baseline"],["arabicForm","arabic-form"],["baselineShift","baseline-shift"],["capHeight","cap-height"],["className","class"],["clipPath","clip-path"],["clipRule","clip-rule"],["colorInterpolation","color-interpolation"],["colorInterpolationFilters","color-interpolation-filters"],["colorProfile","color-profile"],["colorRendering","color-rendering"],["dominantBaseline","dominant-baseline"],["enableBackground","enable-background"],["fillOpacity","fill-opacity"],["fillRule","fill-rule"],["floodColor","flood-color"],["floodOpacity","flood-opacity"],["fontFamily","font-family"],["fontSize","font-size"],["fontSizeAdjust","font-size-adjust"],["fontStretch","font-stretch"],["fontStyle","font-style"],["fontVariant","font-variant"],["fontWeight","font-weight"],["glyphName","glyph-name"],["glyphOrientationHorizontal","glyph-orientation-horizontal"],["glyphOrientationVertical","glyph-orientation-vertical"],["horizAdvX","horiz-adv-x"],["horizOriginX","horiz-origin-x"],["letterSpacing","letter-spacing"],["lightingColor","lighting-color"],["markerEnd","marker-end"],["markerMid","marker-mid"],["markerStart","marker-start"],["overlinePosition","overline-position"],["overlineThickness","overline-thickness"],["panose1","panose-1"],["paintOrder","paint-order"],["pointerEvents","pointer-events"],["renderingIntent","rendering-intent"],["shapeRendering","shape-rendering"],["stopColor","stop-color"],["stopOpacity","stop-opacity"],["strikethroughPosition","strikethrough-position"],["strikethroughThickness","strikethrough-thickness"],["strokeDasharray","stroke-dasharray"],["strokeDashoffset","stroke-dashoffset"],["strokeLinecap","stroke-linecap"],["strokeLinejoin","stroke-linejoin"],["strokeMiterlimit","stroke-miterlimit"],["strokeOpacity","stroke-opacity"],["strokeWidth","stroke-width"],["textAnchor","text-anchor"],["textDecoration","text-decoration"],["textRendering","text-rendering"],["underlinePosition","underline-position"],["underlineThickness","underline-thickness"],["unicodeBidi","unicode-bidi"],["unicodeRange","unicode-range"],["unitsPerEm","units-per-em"],["vAlphabetic","v-alphabetic"],["vHanging","v-hanging"],["vIdeographic","v-ideographic"],["vMathematical","v-mathematical"],["vertAdvY","vert-adv-y"],["vertOriginX","vert-origin-x"],["vertOriginY","vert-origin-y"],["wordSpacing","word-spacing"],["writingMode","writing-mode"],["xHeight","x-height"]]);function ci(t,e,n,r,i){if(n)for(var o in n)"ref"!==o&&"on"!==o&&(o in ai||i&&o in i||("dataset"===o?ci(t.dataset,null,n&&n.dataset,null,null):"innerHTML"!==o&&e&&ti.has(e.tag)?t.removeAttribute(ui.get(o)||o):(t[o]="",delete t[o])));if(i)for(var o in i)if("ref"!==o&&"on"!==o&&!(o in ai)){var s=n&&n[o],a=i[o];"dataset"===o?li(t.dataset,s,a,!1):"style"===o&&"string"!=typeof a?("string"==typeof s&&(t.style="",s=null),li(t.style,s,a,!0)):"attributes"===o?fi(t,s,a):a!==s&&("innerHTML"!==o&&r&&ti.has(r.tag)?t.setAttribute(ui.get(o)||o,a):r&&"input"===r.tag&&"value"===o&&t[o]===a||(t[o]=a))}}function li(t,e,n,r){if(e)for(var i in e)n&&i in n||(r?t[i]="":delete t[i]);if(n)for(var i in n){const r=e&&e[i],o=n[i];o!==r&&(t[i]=o)}}function fi(t,e,n){if(e)for(var r in e)n&&r in n||t.removeAttribute(r);if(n)for(var r in n){const i=e&&e[r],o=n[r];o!==i&&t.setAttribute(r,o)}}const di=si=function(t,e,n,r){const i=e&&e.props,o=n.props;let s,a;r&&(s=r.refs,a=r.listenerContext),ci(t,e,i,n,o),s&&function(t,e,n,r){n!==e&&(e&&r[e]===t&&delete r[e],n&&(r[n]=t))}(t,i&&i.ref,o&&o.ref,s),function(t,e,n,r){const i=e&&e.props&&e.props.on,o=n.props&&n.props.on;for(const n in i)if(!o||!(n in o)){let r;r=e&&e.boundListeners&&e.boundListeners[n]?e.boundListeners[n]:i[n],t.removeEventListener(n,r)}for(const s in o){const a=i&&i[s],u=o[s];if(u!==a){if(a){let n;n=e&&e.boundListeners&&e.boundListeners[s]?e.boundListeners[s]:a,t.removeEventListener(s,n)}if(u){let e;r?(e=u.bind(r),n.boundListeners||(n.boundListeners={}),n.boundListeners[s]=e):e=u,t.addEventListener(s,e)}}}}(t,e,n,a)};function pi(t,e){let n;if(null!=t.text)n=document.createTextNode(t.text);else{const{tag:r,children:i}=t;let{props:o}=t;if("function"==typeof r){let s;o&&o.ref&&(s=o.ref);const a=new r(o||{},i);t.component=a,n=a.element,e&&e.refs&&s&&(e.refs[s]=a)}else ti.has(r)?(n=document.createElementNS("http://www.w3.org/2000/svg",r),i&&hi(n,i,e),o&&di(n,null,t,e)):(n=document.createElement(r),i&&hi(n,i,e),o&&di(n,null,t,e))}return t.domNode=n,n}function hi(t,e,n){for(let r=0;r0?(i=_i.pop()).clear():i=new Map,Ei(i,e,o,s));var p=ki(f),h=p?i.get(p):null;if(null==h)t.insertBefore(yi(f,r),a.domNode),f=n[++c];else{var g=e[h];bi(g,f,r),e[h]=void 0,t.insertBefore(g.domNode,a.domNode),f=n[++c]}}else u=e[--s];else a=e[++o];if(o>s){var m=n[l+1]?n[l+1].domNode:null;for(let e=c;e<=l;e++)t.insertBefore(yi(n[e],r),m)}else if(c>l)for(let t=o;t<=s;t++){var v=e[t];v&&xi(v,r&&r.refs)}i&&_i.push(i)}(r,t.children,e.children,n),wi(r,t,e,n),i=r),e.domNode=i,i!==r&&r.parentNode&&r.parentNode.replaceChild(i,r),i}{const i=r.parentNode,o=r.nextSibling;xi(t,n&&n.refs);const s=yi(e,n);return i&&i.insertBefore(s,o),e.domNode=s,s}}let _i=[new Map,new Map,new Map,new Map];function xi(t,e,n=!0){const{domNode:r,props:i,children:o,component:s}=t,a=i&&i.ref;if(s)e&&a&&e[a]===s&&delete e[a],s.destroy&&s.destroy();else if(e&&a&&e[a]===r&&delete e[a],o)for(let t=0;t{this.resolveNextUpdatePromise=t}))),this.nextUpdatePromise}performUpdates(){for(;this.updateRequests.length>0;)this.updateRequests.shift()();for(this.pendingAnimationFrame=null;this.readRequests.length>0;)this.readRequests.shift()();if(this.nextUpdatePromise){let t=this.resolveNextUpdatePromise;this.nextUpdatePromise=null,this.resolveNextUpdatePromise=null,t()}}};let Ai=null;var Ti=function(){return Ai||(Ai=new Pi),Ai};const Oi=new WeakSet;let Ii=0,ji=0;function Ni(t){return null!=t&&!1!==t}function Di(t,e=!0){if(!Ni(t.virtualNode))throw new Error(`${t.constructor?t.constructor.name+" instance":t} is not associated with a valid virtualNode. Perhaps this component was never initialized?`);if(null==t.element)throw new Error(`${t.constructor?t.constructor.name+" instance":t} is not associated with a DOM element. Perhaps this component was never initialized?`);let n=t.render();if(!Ni(n)){const e=t.constructor&&t.constructor.name?" in "+t.constructor.name:"";throw new Error("invalid falsy value "+n+" returned from render()"+e)}Ii++;let r=t.virtualNode,i=t.element,o=Ci(r,n,{refs:t.refs,listenerContext:t});if(t.virtualNode=n,o!==i&&!e)throw new Error("The root node type changed on update, but the update was performed with the replaceNode option set to false");t.element=o,"function"==typeof t.writeAfterUpdate&&t.writeAfterUpdate(),"function"==typeof t.readAfterUpdate&&Ti().readDocument((function(){t.readAfterUpdate()})),Ii--}function Mi(t,e=!0){ji++,Li(t.virtualNode),1===ji&&e&&t.element.remove(),ji--}function Li(t){t.component&&"function"==typeof t.component.destroy?t.component.destroy():t.children&&t.children.forEach(Li)}const Fi=(Yr={dom:ii,render:gi,initialize:(mi={initialize:function(t){if("function"!=typeof t.update)throw new Error("Etch components must implement `update(props, children)`.");let e=t.render();if(!Ni(e)){let n=t.constructor&&t.constructor.name?" in "+t.constructor.name:"";throw new Error("invalid falsy value "+e+" returned from render()"+n)}t.refs={},t.virtualNode=e,t.element=vi(t.virtualNode,{refs:t.refs,listenerContext:t})},update:function(t,e=!0){if(Ii>0)return Di(t,e),Promise.resolve();let n=Ti();return Oi.has(t)||(Oi.add(t),n.updateDocument((function(){Oi.delete(t),Di(t,e)}))),n.getNextUpdatePromise()},updateSync:Di,destroy:function(t,e=!0){if(Ii>0||ji>0)return Mi(t,e),Promise.resolve();let n=Ti();return n.updateDocument((function(){Mi(t,e)})),n.getNextUpdatePromise()},destroySync:Mi}).initialize,update:mi.update,updateSync:mi.updateSync,destroy:mi.destroy,destroySync:mi.destroySync,setScheduler:function(t){Ai=t},getScheduler:Ti}).dom;Zr=class{static setScheduler(t){Yr.setScheduler(t)}static getScheduler(t){return Yr.getScheduler()}constructor(t){this.props=t,this.props.hasOwnProperty("initialSelectionIndex")||(this.props.initialSelectionIndex=0),t.initiallyVisibleItemCount&&this.initializeVisibilityObserver(),this.computeItems(!1),this.disposables=new g,Yr.initialize(this),this.element.classList.add("select-list"),this.disposables.add(this.refs.queryEditor.onDidChange(this.didChangeQuery.bind(this))),t.skipCommandsRegistration||this.disposables.add(this.registerAtomCommands());const e=this.refs.queryEditor.element,n=this.didLoseFocus.bind(this);e.addEventListener("blur",n),this.didClickItemsList=!1,this.element.addEventListener("mousedown",(t=>{t.target===this.refs.items&&(this.didClickItemsList=!0)})),this.disposables.add(new b((()=>{e.removeEventListener("blur",n)})))}initializeVisibilityObserver(){this.visibilityObserver=new IntersectionObserver((t=>{for(const e of t)if(e.intersectionRatio>0){const t=e.target;this.visibilityObserver.unobserve(t);const n=Array.from(this.refs.items.children).indexOf(t);n>=0&&this.renderItemAtIndex(n)}}))}focus(){this.refs.queryEditor.element.focus()}didLoseFocus(t){this.didClickItemsList||this.element.contains(t.relatedTarget)?(this.didClickItemsList=!1,this.refs.queryEditor.element.focus()):document.hasFocus()&&this.cancelSelection()}reset(){this.refs.queryEditor.setText("")}destroy(){return this.disposables.dispose(),this.visibilityObserver&&this.visibilityObserver.disconnect(),Yr.destroy(this)}registerAtomCommands(){return t.atom.commands.add(this.element,{"core:move-up":t=>{this.selectPrevious(),t.stopPropagation()},"core:move-down":t=>{this.selectNext(),t.stopPropagation()},"core:move-to-top":t=>{this.selectFirst(),t.stopPropagation()},"core:move-to-bottom":t=>{this.selectLast(),t.stopPropagation()},"core:confirm":t=>{this.confirmSelection(),t.stopPropagation()},"core:cancel":t=>{this.cancelSelection(),t.stopPropagation()}})}update(t={}){let e=!1;return t.hasOwnProperty("items")&&(this.props.items=t.items,e=!0),t.hasOwnProperty("maxResults")&&(this.props.maxResults=t.maxResults,e=!0),t.hasOwnProperty("filter")&&(this.props.filter=t.filter,e=!0),t.hasOwnProperty("filterQuery")&&(this.props.filterQuery=t.filterQuery,e=!0),t.hasOwnProperty("query")&&(this.refs.queryEditor.setText(t.query),e=!1),t.hasOwnProperty("selectQuery")&&(t.selectQuery?this.refs.queryEditor.selectAll():this.refs.queryEditor.clearSelections()),t.hasOwnProperty("order")&&(this.props.order=t.order),t.hasOwnProperty("emptyMessage")&&(this.props.emptyMessage=t.emptyMessage),t.hasOwnProperty("errorMessage")&&(this.props.errorMessage=t.errorMessage),t.hasOwnProperty("infoMessage")&&(this.props.infoMessage=t.infoMessage),t.hasOwnProperty("loadingMessage")&&(this.props.loadingMessage=t.loadingMessage),t.hasOwnProperty("loadingBadge")&&(this.props.loadingBadge=t.loadingBadge),t.hasOwnProperty("itemsClassList")&&(this.props.itemsClassList=t.itemsClassList),t.hasOwnProperty("initialSelectionIndex")&&(this.props.initialSelectionIndex=t.initialSelectionIndex),e&&this.computeItems(),Yr.update(this)}render(){return Fi.div({},Fi(m,{ref:"queryEditor",mini:!0}),this.renderLoadingMessage(),this.renderInfoMessage(),this.renderErrorMessage(),this.renderItems())}renderItems(){if(this.items.length>0){const t=["list-group"].concat(this.props.itemsClassList||[]).join(" ");return this.visibilityObserver&&Yr.getScheduler().updateDocument((()=>{Array.from(this.refs.items.children).slice(this.props.initiallyVisibleItemCount).forEach((t=>{this.visibilityObserver.observe(t)}))})),this.listItems=this.items.map(((t,e)=>{const n=this.getSelectedItem()===t,r=!this.props.initiallyVisibleItemCount||ethis.didClickItem(e)})})),Fi.ol({className:t,ref:"items"},...this.listItems)}return!this.props.loadingMessage&&this.props.emptyMessage?Fi.span({ref:"emptyMessage"},this.props.emptyMessage):""}renderErrorMessage(){return this.props.errorMessage?Fi.span({ref:"errorMessage"},this.props.errorMessage):""}renderInfoMessage(){return this.props.infoMessage?Fi.span({ref:"infoMessage"},this.props.infoMessage):""}renderLoadingMessage(){return this.props.loadingMessage?Fi.div({className:"loading"},Fi.span({ref:"loadingMessage",className:"loading-message"},this.props.loadingMessage),this.props.loadingBadge?Fi.span({ref:"loadingBadge",className:"badge"},this.props.loadingBadge):""):""}getQuery(){return this.refs&&this.refs.queryEditor?this.refs.queryEditor.getText():""}getFilterQuery(){return this.props.filterQuery?this.props.filterQuery(this.getQuery()):this.getQuery()}didChangeQuery(){this.props.didChangeQuery&&this.props.didChangeQuery(this.getFilterQuery()),this.computeItems()}didClickItem(t){this.selectIndex(t),this.confirmSelection()}computeItems(t){this.listItems=null,this.visibilityObserver&&this.visibilityObserver.disconnect();const e=this.props.filter||this.fuzzyFilter.bind(this);this.items=e(this.props.items.slice(),this.getFilterQuery()),this.props.order&&this.items.sort(this.props.order),this.props.maxResults&&(this.items=this.items.slice(0,this.props.maxResults)),this.selectIndex(this.props.initialSelectionIndex,t)}fuzzyFilter(t,e){if(0===e.length)return t;{const n=[];for(const r of t){const t=this.props.filterKeyForItem?this.props.filterKeyForItem(r):r;let i=Rr.score(t,e);i>0&&n.push({item:r,score:i})}return n.sort(((t,e)=>e.score-t.score)),n.map((t=>t.item))}}getSelectedItem(){return void 0===this.selectionIndex?null:this.items[this.selectionIndex]}renderItemAtIndex(t){const e=this.items[t],n=this.getSelectedItem()===e,r=this.listItems[t].component;this.visibilityObserver&&this.visibilityObserver.unobserve(r.element),r.update({element:this.props.elementForItem(e,{selected:n,index:t,visible:!0}),selected:n,onclick:()=>this.didClickItem(t)})}selectPrevious(){return void 0===this.selectionIndex?this.selectLast():this.selectIndex(this.selectionIndex-1)}selectNext(){return void 0===this.selectionIndex?this.selectFirst():this.selectIndex(this.selectionIndex+1)}selectFirst(){return this.selectIndex(0)}selectLast(){return this.selectIndex(this.items.length-1)}selectNone(){return this.selectIndex(void 0)}selectIndex(t,e=!0){t>=this.items.length?t=0:t<0&&(t=this.items.length-1);const n=this.selectionIndex;return this.selectionIndex=t,void 0!==t&&this.props.didChangeSelection&&this.props.didChangeSelection(this.getSelectedItem()),e?this.listItems?(n>=0&&this.renderItemAtIndex(n),t>=0&&this.renderItemAtIndex(t),Yr.getScheduler().getNextUpdatePromise()):Yr.update(this):Promise.resolve()}selectItem(t){const e=this.items.indexOf(t);if(-1===e)throw new Error("Cannot select the specified item because it does not exist.");return this.selectIndex(e)}confirmSelection(){const t=this.getSelectedItem();null!=t?this.props.didConfirmSelection&&this.props.didConfirmSelection(t):this.props.didConfirmEmptySelection&&this.props.didConfirmEmptySelection()}cancelSelection(){this.props.didCancelSelection&&this.props.didCancelSelection()}};class Ri{constructor(t){this.mouseDown=this.mouseDown.bind(this),this.mouseUp=this.mouseUp.bind(this),this.didClick=this.didClick.bind(this),this.selected=t.selected,this.onclick=t.onclick,this.element=t.element,this.element.addEventListener("mousedown",this.mouseDown),this.element.addEventListener("mouseup",this.mouseUp),this.element.addEventListener("click",this.didClick),this.selected&&this.element.classList.add("selected"),this.domEventsDisposable=new b((()=>{this.element.removeEventListener("mousedown",this.mouseDown),this.element.removeEventListener("mouseup",this.mouseUp),this.element.removeEventListener("click",this.didClick)})),Yr.getScheduler().updateDocument(this.scrollIntoViewIfNeeded.bind(this))}mouseDown(t){t.preventDefault()}mouseUp(t){t.preventDefault()}didClick(t){t.preventDefault(),this.onclick()}destroy(){this.element.remove(),this.domEventsDisposable.dispose()}update(t){this.element.removeEventListener("mousedown",this.mouseDown),this.element.removeEventListener("mouseup",this.mouseUp),this.element.removeEventListener("click",this.didClick),this.element.parentNode.replaceChild(t.element,this.element),this.element=t.element,this.element.addEventListener("mousedown",this.mouseDown),this.element.addEventListener("mouseup",this.mouseUp),this.element.addEventListener("click",this.didClick),t.selected&&this.element.classList.add("selected"),this.selected=t.selected,this.onclick=t.onclick,Yr.getScheduler().updateDocument(this.scrollIntoViewIfNeeded.bind(this))}scrollIntoViewIfNeeded(){this.selected&&this.element.scrollIntoViewIfNeeded(!1)}}var Bi=e(Zr);async function $i({items:t,itemTemplate:e,itemFilterKey:n,didChangeSelection:r}){let i;const o=document.activeElement;try{return await new Promise((o=>{let s,a,u="Loading...",c=!1;const l=t=>{c||Ce(f.update(t))};"function"==typeof t&&(s=async e=>{const n=setTimeout((()=>l({loadingMessage:"Loading..."})),300),r=await t(e);clearTimeout(n),l({items:r,emptyMessage:"Nothing matches the search value",loadingMessage:void 0})},u=void 0,a="Please enter a search value");const f=new Bi({items:[],elementForItem:t=>Lt.render(e(t,f)),filterKeyForItem:t=>`${t[n]}`,didChangeSelection:r,didCancelSelection:()=>{c=!0,o(void 0)},didConfirmSelection:t=>{c=!0,o(t)},loadingMessage:u,didChangeQuery:s,emptyMessage:a,itemsClassList:["atom-typescript"]});"function"!=typeof t&&Ce(Promise.resolve(t).then((t=>{l({items:t,loadingMessage:void 0})}))),i=atom.workspace.addModalPanel({item:f,visible:!0}),f.focus()}))}finally{i&&i.destroy(),o&&o.focus()}}const zi=[];function qi(t,e,n){zi.push({selector:t,command:e,desc:n})}async function Hi(t,e,n){const r=Promise.all(t.body.refs.map((async t=>{var e;const n=(await new Promise(((e,n)=>z(t.file,((t,r)=>{t?n(t):e(r.toString("utf-8"))}))))).split(/\r?\n/g),r=void 0!==t.contextStart&&void 0!==t.contextEnd?n.slice(t.contextStart.line-1,t.contextEnd.line):n,i=(await Ue(r.join("\n"),"source.tsx"))[t.start.line-((null===(e=t.contextStart)||void 0===e?void 0:e.line)||1)];return{...t,hlText:i}}))),i=await $i({items:r,itemTemplate:(t,e)=>Lt.dom("li",null,Lt.dom(Qr,{label:atom.project.relativize(t.file),query:e.getFilterQuery()}),Lt.dom("div",{className:"pull-right"},"line: ",t.start.line),Lt.dom(Dr,{highlightedText:t.hlText})),itemFilterKey:"file"});i&&await n(e,i)}async function Ui(t,e,n){if(t.body)if(t.body.length>1){const r=await $i({items:t.body,itemTemplate:(t,e)=>Lt.dom("li",null,Lt.dom(Qr,{label:t.file,query:e.getFilterQuery()}),Lt.dom("div",{className:"pull-right"},"line: ",t.start.line)),itemFilterKey:"file"});r&&await n(e,r)}else t.body.length>0&&await n(e,t.body[0])}function Vi(t){const e=t.spans.map(Ie).reduce(((t,e)=>e.union(t)));return{kind:Gi[t.kind],plainText:t.text,startPosition:e.start,endPosition:e.end,landingPosition:t.nameSpan?Ie(t.nameSpan).start:void 0,children:t.childItems?t.childItems.map(Vi).sort(Wi):[]}}function Wi(t,e){const n=t.landingPosition?t.landingPosition:t.startPosition,r=e.landingPosition?e.landingPosition:e.startPosition;return n.compare(r)}qi("atom-text-editor","typescript:find-references",(t=>({description:"Find where symbol under text cursor is referenced",didDispatch:async function(e){const n=He(e);if(!n)return;const r=await t.getClient(n.file),i=await r.execute("references",n);await Hi(i,e,t.histGoForward)}}))),qi("atom-text-editor","typescript:go-to-declaration",(t=>({description:"Go to declaration of symbol under text cursor",didDispatch:async function(e){const n=He(e);if(!n)return;const r=await t.getClient(n.file),i=await r.execute("definition",n);await Ui(i,e,t.histGoForward)}})));const Gi={directory:"file",module:"module","external module name":"module",class:"class","local class":"class",method:"method",property:"property",getter:"property",setter:"property","JSX attribute":"field",constructor:"constructor",enum:"enum",interface:"interface",type:"interface",function:"function","local function":"function",label:"variable",alias:"variable",var:"variable",let:"variable","local var":"variable",parameter:"variable","enum member":"constant",const:"constant",string:"string","":void 0,warning:void 0,keyword:void 0,script:void 0,call:void 0,index:void 0,construct:void 0,"type parameter":void 0,"primitive type":void 0};class Ki{constructor(t){this.getClient=t,this.triggerCharacters=new Set([]),this.grammarScopes=$e(),this.priority=100,this.disposables=new g;const e=new Set(["<","(",","]),n=new Set([]);this.disposables.add(atom.config.observe("atom-typescript.sigHelpDisplayOnChange",(t=>{this.triggerCharacters=t?e:n})))}dispose(){this.disposables.dispose()}async getSignatureHelp(t,e){try{const n=t.getPath();if(void 0===n)return;const r=await this.getClient(n),i=(await r.execute("signatureHelp",{file:n,line:e.row+1,offset:e.column+1})).body;return{signatures:i.items.map(Me),activeParameter:i.argumentIndex,activeSignature:i.selectedItemIndex}}catch(t){return}}}function Qi(t){return Lt.dom("li",null,t.description)}class Zi{constructor(t,e){this.getClient=t,this.applyEdits=e,this.selector=$e().map((t=>t.includes(".")?`.${t}`:t)).join(", "),this.disableForSelector=".comment",this.inclusionPriority=3,this.suggestionPriority=atom.config.get("atom-typescript").autocompletionSuggestionPriority,this.excludeLowerPriority=!1}async getSuggestions(t){const e=function(t){const e=t.editor.getPath();if(void 0===e)return;return{file:e,line:t.bufferPosition.row+1,offset:t.bufferPosition.column+1}}(t),n=function(t){const e=t.editor.getBuffer().getTextInRange([[t.bufferPosition.row,0],t.bufferPosition]).match(Xi);return e?e[0]:""}(t);if(!e)return[];const r=function(t){if(void 0===t)return;if(!t)return;const e=t.slice(-1);if(ro.has(e))return e;return}(function(t,e){let n;const r=new y([0,0],e);return t.backwardsScanInRange(/\S/,r,(({matchText:t,stop:e})=>{n=t,e()})),n}(t.editor.getBuffer(),t.bufferPosition));if(!n&&!t.activatedManually&&!r)return[];if(Ji(t.scopeDescriptor.getScopesArray(),"string.template.")&&!Ji(t.scopeDescriptor.getScopesArray(),"template.expression."))return[];try{let i=await this.getSuggestionsWithCache({prefix:n,location:e,triggerCharacter:r,activatedManually:t.activatedManually});return i=Rr.filter(i,n,{key:"displayText"}),i.map((r=>({replacementPrefix:r.replacementRange?t.editor.getTextInBufferRange(r.replacementRange):n,location:e,...this.getDetailsFromCache(r),...eo(t,r)})))}catch(t){return[]}}async getSuggestionDetailsOnSelect(t){return"text"in t&&!("rightLabel"in t)?this.getAdditionalDetails(t):null}onDidInsertSuggestion(t){const e=t.suggestion;if(!e.hasAction)return;if(!this.lastSuggestions)return;const n=this.lastSuggestions.client;let r=this.getDetailsFromCache(e);Ce((async()=>{var t;if(r||(r=await this.getAdditionalDetails(e)),null===(t=r)||void 0===t||!t.details.codeActions)return;let i;i=1===r.details.codeActions.length?r.details.codeActions[0]:await $i({items:r.details.codeActions,itemTemplate:Qi,itemFilterKey:"description"}),i&&(await this.applyEdits(i.changes),i.commands&&await Promise.all(i.commands.map((t=>n.execute("applyCodeActionCommand",{command:t})))))})())}async getAdditionalDetails(t){var e;if(void 0===t.identifier)return null;if(!this.lastSuggestions)return null;const n=await this.lastSuggestions.client.execute("completionEntryDetails",{entryNames:[t.identifier],...this.lastSuggestions.location});if(!n.body)return null;const[r]=n.body;if(!r)return null;let i=r.displayParts;i.length>=3&&"("===i[0].text&&i[1].text===t.leftLabel&&")"===i[2].text&&(i=i.slice(3));let o=i.map((t=>t.text)).join("");const s=t.hasAction&&1===(null===(e=r.codeActions)||void 0===e?void 0:e.length)?`${r.codeActions[0].description}\n\n`:"";s&&(o=s);const a=s+r.displayParts.map((t=>t.text)).join("")+(r.documentation?"\n\n"+r.documentation.map((t=>t.text)).join(" "):"");return this.lastSuggestions.details.set(t.displayText,{details:r,rightLabel:o,description:a}),{...t,details:r,rightLabel:o,description:a}}getDetailsFromCache(t){if(!this.lastSuggestions)return null;const e=this.lastSuggestions.details.get(t.displayText);return e||null}async getSuggestionsWithCache({prefix:t,location:e,triggerCharacter:n,activatedManually:r}){if(this.lastSuggestions&&!r){const n=this.lastSuggestions.location,r=Yi(this.lastSuggestions.prefix,n.offset),i=Yi(t,e.offset);if(n.file===e.file&&n.line===e.line&&r===i&&0!==this.lastSuggestions.suggestions.length)return this.lastSuggestions.suggestions}const i=await this.getClient(e.file),o=await async function({client:t,location:e,triggerCharacter:n}){if(parseInt(t.version.split(".")[0],10)>=3){var r;const i=await t.execute("completionInfo",{includeExternalModuleExports:!1,includeInsertTextCompletions:!0,triggerCharacter:n,...e});return i.body.entries.map(to.bind(null,null===(r=i.body)||void 0===r?void 0:r.isMemberCompletion))}return(await t.execute("completions",{includeExternalModuleExports:!1,includeInsertTextCompletions:!0,...e})).body.map(to.bind(null,void 0))}({client:i,location:e,triggerCharacter:r?void 0:n});return this.lastSuggestions={client:i,location:e,prefix:t,suggestions:o,details:new Map},o}}const Xi=/(?:(?![\u{10000}-\u{10FFFF}])[\$_\p{Lu}\p{Ll}\p{Lt}\p{Lm}\p{Lo}\p{Nl}])(?:(?![\u{10000}-\u{10FFFF}])[\$_\p{Lu}\p{Ll}\p{Lt}\p{Lm}\p{Lo}\p{Nl}\u200C\u200D\p{Mn}\p{Mc}\p{Nd}\p{Pc}])*$/u;function Yi(t,e){return e-("."===t?0:t.length)}function Ji(t,e){for(const n of t)if(n.includes(e))return!0;return!1}function to(t,e){return{displayText:e.name,text:void 0!==e.insertText?e.insertText:e.name,leftLabel:e.kind,replacementRange:e.replacementSpan?Ie(e.replacementSpan):void 0,type:no[e.kind],isMemberCompletion:t,identifier:void 0!==e.source?{name:e.name,source:e.source}:e.name,hasAction:e.hasAction}}function eo(t,e){return atom.config.get("atom-typescript.autocompleteParens")&&["function","method"].includes(e.leftLabel)&&!function(t){const e=t.editor.getBuffer(),n=t.bufferPosition;return!!e.getTextInRange([n,[n.row,e.lineLengthForRow(n.row)]]).match(/\s*\(/)}(t)?{...e,snippet:`${e.text}($1)`,text:void 0}:e}const no={directory:"require",module:"import","external module name":"import",class:"class","local class":"class",method:"method",property:"property",getter:"property",setter:"property","JSX attribute":"property",constructor:"method",enum:"type",interface:"type",type:"type","type parameter":"type","primitive type":"type",function:"function","local function":"function",label:"variable",alias:"import",var:"variable",let:"variable","local var":"variable",parameter:"variable","enum member":"constant",const:"constant",string:"value",keyword:"keyword","":void 0,warning:void 0,script:void 0,call:void 0,index:void 0,construct:void 0},ro=new Set(Object.keys({".":null,'"':null,"'":null,"`":null,"/":null,"@":null,"<":null,"#":null}));async function io(t,e){const n=await async function(t,e){try{return await t.execute("getApplicableRefactors",{triggerReason:"invoked",...e})}catch{return}}(t,e);if(!n)return[];if(void 0===n.body||0===n.body.length)return[];const r=[];for(const t of n.body)for(const n of t.actions)r.push({refactorName:t.name,refactorDescription:t.description,refactorRange:e,actionName:n.name,actionDescription:n.description,inlineable:void 0===t.inlineable||t.inlineable});return r}async function oo(t,e,n){const r=await e.execute("getEditsForRefactor",{...t.refactorRange,refactor:t.refactorName,action:t.actionName});if(void 0===r.body)return;const{edits:i,renameFilename:o,renameLocation:s}=r.body;if(await n.applyEdits(i),void 0===o||void 0===s)return;const a=await atom.workspace.open(o,{searchAllPanes:!0,initialLine:s.line-1,initialColumn:s.offset-1});await atom.commands.dispatch(atom.views.getView(a),"typescript:rename-refactor")}qi("atom-text-editor","typescript:refactor-selection",(t=>({description:"Get a list of applicable refactors to selected code",didDispatch:async function(e){const n=He(e);if(!n)return;const r=e.getSelectedBufferRange(),i=await t.getClient(n.file),o=r.isEmpty()?n:{file:n.file,startLine:r.start.row+1,startOffset:r.start.column+1,endLine:r.end.row+1,endOffset:r.end.column+1},s=await io(i,o);if(0===s.length)return void atom.notifications.addInfo("AtomTS: No applicable refactors for the selection");const a=await $i({items:s,itemTemplate:(t,e)=>Lt.dom("li",null,Lt.dom(Qr,{label:`${t.refactorDescription}: ${t.actionDescription}`,query:e.getFilterQuery()})),itemFilterKey:"actionDescription"});void 0!==a&&await oo(a,i,t)}})));class so{constructor(t,e,n){this.clientResolver=t,this.errorPusher=e,this.applyEdits=n,this.supportedFixes=new WeakMap}async getFixableRanges(t,e){const n=t.getPath();if(void 0===n)return[];const r=this.errorPusher.getErrorsInRange(n,e),i=await this.clientResolver.get(n),o=await this.getSupportedFixes(i);return Array.from(r).filter((t=>void 0!==t.code&&o.has(t.code))).map((t=>Ie(t)))}async runCodeFix(t,e){const n=t.getPath();if(void 0===n)return[];const r=await this.clientResolver.get(n),i=await this.getSupportedFixes(r),o=Array.from(this.errorPusher.getErrorsAt(n,e)).filter((t=>void 0!==t.code&&i.has(t.code))).map((t=>r.execute("getCodeFixes",{file:n,startLine:t.start.line,startOffset:t.start.offset,endLine:t.end.line,endOffset:t.end.offset,errorCodes:[t.code]}))),s=await Promise.all(o),a=[];for(const t of s)if(t.body)for(const e of t.body)a.push(e);const u=await io(r,{file:n,...Te(e)});return a.push(...u),a}async applyFix(t){if("changes"in t)return this.applyEdits(t.changes);return oo(t,await this.clientResolver.get(t.refactorRange.file),{applyEdits:this.applyEdits})}dispose(){}async getSupportedFixes(t){let e=this.supportedFixes.get(t);if(e)return e;const n=await t.execute("getSupportedCodeFixes");if(!n.body)throw new Error("No code fixes are supported");return e=new Set(n.body.map((t=>parseInt(t,10)))),this.supportedFixes.set(t,e),e}}async function ao(t,e){let n;try{return await new Promise(((r,i)=>{try{const o=new x({command:t,args:["--init"],options:{cwd:e},exit:t=>{0===t?r():i(new Error(`Tsc ended with nonzero exit code ${t}`))}});n=o.onWillThrowError(i)}catch(t){i(t)}}))}finally{n&&n.dispose()}}qi("atom-text-editor","typescript:build",(t=>({description:"Compile all files in project related to current active text editor",didDispatch:async function(e){const n=e.getPath();if(void 0===n)return;const r=await t.getClient(n);t.reportBuildStatus(void 0);const i=await r.execute("projectInfo",{file:n,needFileNameList:!0}),o=new Set(i.body.fileNames);o.delete(i.body.configFileName);let s=0;const a=[...o.values()].map((e=>{return n=r.execute("compileOnSaveEmitFile",{file:e,forced:!0}),i=()=>{s+=1,t.reportProgress({max:o.size,value:s})},n.then(i,i),n;var n,i}));try{if((await Promise.all(a)).some((t=>!1===t.body)))throw new Error("Emit failed");t.reportBuildStatus({success:!0})}catch(e){const n=e;console.error(n),t.reportBuildStatus({success:!1,message:n.message})}}}))),qi("atom-text-editor","typescript:check-all-files",(t=>({description:"Typecheck all files in project related to current active text editor",didDispatch:async function(e){var n;const r=e.getPath();if(void 0===r)return;const i=await t.getClient(r),o=await i.execute("projectInfo",{file:r,needFileNameList:!0}),s=new Set(null===(n=o.body.fileNames)||void 0===n?void 0:n.filter((t=>!t.endsWith("tsconfig.json")&&!t.includes(`${M}node_modules${M}`)))),a=s.size;if(i.multistepSupported){const e=i.on("syntaxDiag",(e=>{"file"in e&&s.delete(e.file),t.reportProgress({max:a,value:a-s.size})}));t.reportProgress({max:a,value:0}),await i.execute("geterrForProject",{file:r,delay:0}),e.dispose()}else{let e;const n=i.on("syntaxDiag",(r=>{void 0!==e&&window.clearTimeout(e),e=window.setTimeout((()=>{s.clear(),n.dispose(),t.reportProgress({max:a,value:a})}),2e3),"file"in r&&s.delete(r.file),0===s.size&&(n.dispose(),window.clearTimeout(e)),t.reportProgress({max:a,value:a-s.size})}));t.reportProgress({max:a,value:0}),await i.execute("geterrForProject",{file:r,delay:0})}}}))),qi("atom-workspace","typescript:clear-errors",(t=>({description:"Clear error messages",didDispatch:function(){t.clearErrors()}}))),qi("atom-text-editor","typescript:format-code",(t=>({description:"Format code in currently active text editor",didDispatch:async function(e){const n=e.getPath();if(void 0===n)return;const r=[];for(const t of e.getSelectedBufferRanges())t.isEmpty()||r.push({line:(i=t).start.row+1,offset:i.start.column+1,endLine:i.end.row+1,endOffset:i.end.column+1});var i;if(0===r.length){const t=e.getBuffer().getEndPosition();r.push({line:1,offset:1,endLine:t.row+1,endOffset:t.column+1})}const o=await t.getClient(n),s=[];for(const t of r){const e=await o.execute("format",{...t,file:n});e.body&&s.push(...e.body)}s.length>0&&e.transact((()=>{!function(t,e){for(let n=e.length-1;n>=0;n--)t.setTextInBufferRange(Ie(e[n]),e[n].newText)}(e,s)}))}}))),qi("atom-text-editor","typescript:initialize-config",(()=>({description:"Create tsconfig.json in the project related to currently-active text edtior",didDispatch:async function(t,e){const n=atom.project.getDirectories();if(0===n.length)return e();const r=t.getPath();if(void 0===r)return;const i=(await _r(r,"tsc")).pathToBin;for(const t of n)t.contains(r)&&(await ao(i,t.getPath()),atom.notifications.addSuccess(`Successfully created tsconfig.json in ${t.getPath()}`))}}))),qi("atom-text-editor","typescript:organize-imports",(t=>({description:"Organize module imports",didDispatch:async function(e){const n=e.getPath();if(void 0===n)return;const r=await t.getClient(n),i=await r.execute("organizeImports",{scope:{type:"file",args:{file:n}}});i.body.length>0&&await t.applyEdits(i.body)}}))),qi("atom-text-editor","typescript:reload-projects",(t=>({description:"Reload projects",didDispatch:async function(e){const n=e.getPath();if(void 0===n)return;const r=await t.getClient(n);await r.execute("reloadProjects")}})));var uo,co,lo,fo,po,ho,go,mo,vo,yo,wo,bo,_o,xo,So,ko,Eo,Co,Po,Ao,To={},Oo=!1;function Io(){return Oo||(Oo=!0,"1.12.0",n(uo={},"VERSION",(function(){return"1.12.0"})),co="object"==typeof self&&self.self===self&&self||"object"==typeof t&&t.global===t&&t||Function("return this")()||{},n(uo,"root",(function(){return co})),lo=Array.prototype,fo=Object.prototype,n(uo,"ObjProto",(function(){return fo})),n(uo,"ArrayProto",(function(){return lo})),po="undefined"!=typeof Symbol?Symbol.prototype:null,n(uo,"SymbolProto",(function(){return po})),ho=lo.push,go=lo.slice,mo=fo.toString,vo=fo.hasOwnProperty,n(uo,"hasOwnProperty",(function(){return vo})),n(uo,"toString",(function(){return mo})),n(uo,"slice",(function(){return go})),n(uo,"push",(function(){return ho})),yo="undefined"!=typeof ArrayBuffer,wo="undefined"!=typeof DataView,n(uo,"supportsDataView",(function(){return wo})),n(uo,"supportsArrayBuffer",(function(){return yo})),bo=Array.isArray,_o=Object.keys,xo=Object.create,So=yo&&ArrayBuffer.isView,n(uo,"nativeIsView",(function(){return So})),n(uo,"nativeCreate",(function(){return xo})),n(uo,"nativeKeys",(function(){return _o})),n(uo,"nativeIsArray",(function(){return bo})),ko=isNaN,Eo=isFinite,n(uo,"_isFinite",(function(){return Eo})),n(uo,"_isNaN",(function(){return ko})),Co=!{toString:null}.propertyIsEnumerable("toString"),n(uo,"hasEnumBug",(function(){return Co})),Po=["valueOf","isPrototypeOf","toString","propertyIsEnumerable","hasOwnProperty","toLocaleString"],n(uo,"nonEnumerableProps",(function(){return Po})),Ao=Math.pow(2,53)-1,n(uo,"MAX_ARRAY_INDEX",(function(){return Ao}))),uo}var jo,No=!1;function Do(t,e){return e=null==e?t.length-1:+e,function(){for(var n=Math.max(arguments.length-e,0),r=Array(n),i=0;i=0&&n<=Io().MAX_ARRAY_INDEX}}function Ta(){return Pa||(Pa=!0,Ca={},Io(),n(Ca,"default",(function(){return Aa}))),Ca}var Oa,Ia=!1;function ja(t){return function(e){return null==e?void 0:e[t]}}function Na(){return Ia||(Ia=!0,n(Oa={},"default",(function(){return ja}))),Oa}var Da,Ma,La=!1;function Fa(){return La||(La=!0,Da={},Na(),Ma=Na().default("byteLength"),n(Da,"default",(function(){return Ma}))),Da}var Ra,Ba,$a=!1;function za(){return $a||($a=!0,Ra={},Ta(),Fa(),Ba=Ta().default(Fa().default),n(Ra,"default",(function(){return Ba}))),Ra}var qa,Ha,Ua,Va=!1;function Wa(t){return Io().nativeIsView?Io().nativeIsView(t)&&!ta().default(t):za().default(t)&&Ha.test(Io().toString.call(t))}function Ga(){return Va||(Va=!0,qa={},Io(),ta(),Ea(),za(),Ha=/\[object ((I|Ui)nt(8|16|32)|Float(32|64)|Uint8Clamped|Big(I|Ui)nt64)Array\]/,Ua=Io().supportsArrayBuffer?Wa:Ea().default(!1),n(qa,"default",(function(){return Ua}))),qa}var Ka,Qa,Za=!1;function Xa(){return Za||(Za=!0,Ka={},Na(),Qa=Na().default("length"),n(Ka,"default",(function(){return Qa}))),Ka}var Ya,Ja=!1;function tu(t,e){e=function(t){for(var e={},n=t.length,r=0;r":">",'"':""","'":"'","`":"`"},n(xf={},"default",(function(){return Sf}))),xf}var Cf,Pf,Af=!1;function Tf(){return Af||(Af=!0,Cf={},_f(),Ef(),Pf=_f().default(Ef().default),n(Cf,"default",(function(){return Pf}))),Cf}var Of,If,jf=!1;function Nf(){return jf||(jf=!0,Of={},mc(),Ef(),If=mc().default(Ef().default),n(Of,"default",(function(){return If}))),Of}var Df,Mf,Lf=!1;function Ff(){return Lf||(Lf=!0,Df={},_f(),Nf(),Mf=_f().default(Nf().default),n(Df,"default",(function(){return Mf}))),Df}var Rf,Bf,$f=!1;function zf(){return $f||($f=!0,Rf={},vu(),Bf=vu().default.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g},n(Rf,"default",(function(){return Bf}))),Rf}var qf,Hf,Uf,Vf,Wf=!1;function Gf(t){return"\\"+Uf[t]}function Kf(t,e,n){!e&&n&&(e=n),e=Lc().default({},e,vu().default.templateSettings);var r,i=RegExp([(e.escape||Hf).source,(e.interpolate||Hf).source,(e.evaluate||Hf).source].join("|")+"|$","g"),o=0,s="__p+='";t.replace(i,(function(e,n,r,i,a){return s+=t.slice(o,a).replace(Vf,Gf),o=a+e.length,n?s+="'+\n((__t=("+n+"))==null?'':_.escape(__t))+\n'":r?s+="'+\n((__t=("+r+"))==null?'':__t)+\n'":i&&(s+="';\n"+i+"\n__p+='"),e})),s+="';\n",e.variable||(s="with(obj||{}){\n"+s+"}\n"),s="var __t,__p='',__j=Array.prototype.join,print=function(){__p+=__j.call(arguments,'');};\n"+s+"return __p;\n";try{r=new Function(e.variable||"obj","_",s)}catch(t){throw t.source=s,t}var a=function(t){return r.call(this,t,vu().default)},u=e.variable||"obj";return a.source="function("+u+"){\n"+s+"}",a}function Qf(){return Wf||(Wf=!0,qf={},Lc(),vu(),zf(),Hf=/(.)^/,Uf={"'":"'","\\":"\\","\r":"r","\n":"n","\u2028":"u2028","\u2029":"u2029"},Vf=/\\|'|\r|\n|\u2028|\u2029/g,n(qf,"default",(function(){return Kf}))),qf}var Zf,Xf=!1;function Yf(t,e,n){var r=(e=sl().default(e)).length;if(!r)return Bs().default(n)?n.call(t):n;for(var i=0;i1)Pd(a,e-1,n,r),i=r.length;else for(var u=0,c=a.length;ue?(r&&(clearTimeout(r),r=null),a=c,s=t.apply(i,o),r||(i=o=null)):r||!1===n.trailing||(r=setTimeout(u,l)),s};return c.cancel=function(){clearTimeout(r),a=0,r=i=o=null},c}function Kd(){return Wd||(Wd=!0,Vd={},vf(),n(Vd,"default",(function(){return Gd}))),Vd}var Qd,Zd=!1;function Xd(t,e,n){var r,i,o=function(e,n){r=null,n&&(i=t.apply(e,n))},s=Mo().default((function(s){if(r&&clearTimeout(r),n){var a=!r;r=setTimeout(o,e),a&&(i=t.apply(this,s))}else r=$d().default(o,e,this,s);return i}));return s.cancel=function(){clearTimeout(r),r=null},s}function Yd(){return Zd||(Zd=!0,Qd={},Mo(),$d(),n(Qd,"default",(function(){return Xd}))),Qd}var Jd,tp=!1;function ep(t,e){return md().default(e,t)}function np(){return tp||(tp=!0,Jd={},md(),n(Jd,"default",(function(){return ep}))),Jd}var rp,ip=!1;function op(t){return function(){return!t.apply(this,arguments)}}function sp(){return ip||(ip=!0,n(rp={},"default",(function(){return op}))),rp}var ap,up=!1;function cp(){var t=arguments,e=t.length-1;return function(){for(var n=e,r=t[e].apply(this,arguments);n--;)r=t[n].call(this,r);return r}}function lp(){return up||(up=!0,n(ap={},"default",(function(){return cp}))),ap}var fp,dp=!1;function pp(t,e){return function(){if(--t<1)return e.apply(this,arguments)}}function hp(){return dp||(dp=!0,n(fp={},"default",(function(){return pp}))),fp}var gp,mp=!1;function vp(t,e){var n;return function(){return--t>0&&(n=e.apply(this,arguments)),t<=1&&(e=null),n}}function yp(){return mp||(mp=!0,n(gp={},"default",(function(){return vp}))),gp}var wp,bp,_p=!1;function xp(){return _p||(_p=!0,wp={},md(),yp(),bp=md().default(yp().default,2),n(wp,"default",(function(){return bp}))),wp}var Sp,kp=!1;function Ep(t,e,n){e=Wl().default(e,n);for(var r,i=ou().default(t),o=0,s=i.length;o0?0:i-1;o>=0&&o0?s=o>=0?o:Math.max(o+a,s):a=o>=0?Math.min(o+1,a):o+a+1;else if(n&&o&&a)return r[o=n(r,i)]===i?o:-1;if(i!=i)return(o=e(Io().slice.call(r,s,a),_a().default))>=0?o+s:-1;for(o=t>0?s:a-1;o>=0&&o0?0:s-1;for(i||(r=e[o?o[a]:a],a+=t);a>=0&&a=3;return e(t,Dl().default(n,i,4),r,o)}}function bh(){return yh||(yh=!0,vh={},kd(),ou(),Dl(),n(vh,"default",(function(){return wh}))),vh}var _h,xh,Sh=!1;function kh(){return Sh||(Sh=!0,_h={},bh(),xh=bh().default(1),n(_h,"default",(function(){return xh}))),_h}var Eh,Ch,Ph=!1;function Ah(){return Ph||(Ph=!0,Eh={},bh(),Ch=bh().default(-1),n(Eh,"default",(function(){return Ch}))),Eh}var Th,Oh=!1;function Ih(t,e,n){var r=[];return e=Wl().default(e,n),dh().default(t,(function(t,n,i){e(t,n,i)&&r.push(t)})),r}function jh(){return Oh||(Oh=!0,Th={},Wl(),dh(),n(Th,"default",(function(){return Ih}))),Th}var Nh,Dh=!1;function Mh(t,e,n){return jh().default(t,sp().default(Wl().default(e)),n)}function Lh(){return Dh||(Dh=!0,Nh={},jh(),sp(),Wl(),n(Nh,"default",(function(){return Mh}))),Nh}var Fh,Rh=!1;function Bh(t,e,n){e=Wl().default(e,n);for(var r=!kd().default(t)&&ou().default(t),i=(r||t).length,o=0;o=0}function Kh(){return Wh||(Wh=!0,Vh={},kd(),uc(),Zp(),n(Vh,"default",(function(){return Gh}))),Vh}var Qh,Zh,Xh=!1;function Yh(){return Xh||(Xh=!0,Qh={},Mo(),Bs(),mh(),ll(),sl(),Zh=Mo().default((function(t,e,n){var r,i;return Bs().default(e)?i=e:(e=sl().default(e),r=e.slice(0,-1),e=e[e.length-1]),mh().default(t,(function(t){var o=i;if(!o){if(r&&r.length&&(t=ll().default(t,r)),null==t)return;o=t[e]}return null==o?o:o.apply(t,n)}))})),n(Qh,"default",(function(){return Zh}))),Qh}var Jh,tg=!1;function eg(t,e){return mh().default(t,Ol().default(e))}function ng(){return tg||(tg=!0,Jh={},mh(),Ol(),n(Jh,"default",(function(){return eg}))),Jh}var rg,ig=!1;function og(t,e){return jh().default(t,Cl().default(e))}function sg(){return ig||(ig=!0,rg={},jh(),Cl(),n(rg,"default",(function(){return og}))),rg}var ag,ug=!1;function cg(t,e,n){var r,i,o=-1/0,s=-1/0;if(null==e||"number"==typeof e&&"object"!=typeof t[0]&&null!=t)for(var a=0,u=(t=kd().default(t)?t:uc().default(t)).length;ao&&(o=r);else e=Wl().default(e,n),dh().default(t,(function(t,n,r){((i=e(t,n,r))>s||i===-1/0&&o===-1/0)&&(o=t,s=i)}));return o}function lg(){return ug||(ug=!0,ag={},kd(),uc(),Wl(),dh(),n(ag,"default",(function(){return cg}))),ag}var fg,dg=!1;function pg(t,e,n){var r,i,o=1/0,s=1/0;if(null==e||"number"==typeof e&&"object"!=typeof t[0]&&null!=t)for(var a=0,u=(t=kd().default(t)?t:uc().default(t)).length;ar||void 0===n)return 1;if(n1&&(r=Dl().default(r,e[1])),e=ju().default(t)):(r=om().default,e=Ad().default(e,!1,!1),t=Object(t));for(var i=0,o=e.length;i1&&(n=e[1])):(e=mh().default(Ad().default(e,!1,!1),String),r=function(t,n){return!Kh().default(e,n)}),cm().default(t,r,n)})),n(lm,"default",(function(){return fm}))),lm}var hm,gm=!1;function mm(t,e,n){return Io().slice.call(t,0,Math.max(0,t.length-(null==e||n?1:e)))}function vm(){return gm||(gm=!0,hm={},Io(),n(hm,"default",(function(){return mm}))),hm}var ym,wm=!1;function bm(t,e,n){return null==t||t.length<1?null==e||n?void 0:[]:null==e||n?t[0]:vm().default(t,t.length-e)}function _m(){return wm||(wm=!0,ym={},vm(),n(ym,"default",(function(){return bm}))),ym}var xm,Sm=!1;function km(t,e,n){return Io().slice.call(t,null==e||n?1:e)}function Em(){return Sm||(Sm=!0,xm={},Io(),n(xm,"default",(function(){return km}))),xm}var Cm,Pm=!1;function Am(t,e,n){return null==t||t.length<1?null==e||n?void 0:[]:null==e||n?t[t.length-1]:Em().default(t,Math.max(0,t.length-e))}function Tm(){return Pm||(Pm=!0,Cm={},Em(),n(Cm,"default",(function(){return Am}))),Cm}var Om,Im=!1;function jm(t){return jh().default(t,Boolean)}function Nm(){return Im||(Im=!0,Om={},jh(),n(Om,"default",(function(){return jm}))),Om}var Dm,Mm=!1;function Lm(t,e){return Ad().default(t,e,!1)}function Fm(){return Mm||(Mm=!0,Dm={},Ad(),n(Dm,"default",(function(){return Lm}))),Dm}var Rm,Bm,$m=!1;function zm(){return $m||($m=!0,Rm={},Mo(),Ad(),jh(),Kh(),Bm=Mo().default((function(t,e){return e=Ad().default(e,!0,!0),jh().default(t,(function(t){return!Kh().default(e,t)}))})),n(Rm,"default",(function(){return Bm}))),Rm}var qm,Hm,Um=!1;function Vm(){return Um||(Um=!0,qm={},Mo(),zm(),Hm=Mo().default((function(t,e){return zm().default(t,e)})),n(qm,"default",(function(){return Hm}))),qm}var Wm,Gm=!1;function Km(t,e,n,r){Xo().default(e)||(r=n,n=e,e=!1),null!=n&&(n=Wl().default(n,r));for(var i=[],o=[],s=0,a=Xa().default(t);s":".","?":"/"},s=function(t){var e,n,r,i,o;if(r=0,n=[],null==t)return n;for(e=i=0,o=t.length;i=0&&t.splice(n,1),t},setValueForKeyPath:function(t,e,n){var r,i;for(i=s(e);i.length>1;)null==t[r=i.shift()]&&(t[r]={}),t=t[r];return null!=n?t[i.shift()]=n:delete t[i.shift()]},hasKeyPath:function(t,e){var n,r,i,o;for(i=0,o=(r=s(e)).length;i0?s<=a:s>=a;o=s+=i)c.push(t.splice.apply(t,[e+o,0].concat(u.call(r.slice(o,o+i)))));return c},sum:function(t){var e,n,r;for(e=0,n=0,r=t.length;n=0&&t.length%1==0}function h(t,e){for(var n=-1,r=t.length;++n3?t(r,i,u,a):(s=o,o=i,t(r,u,a))}}function D(t,e){return e}function M(t,e,n){n=n||r;var i=p(e)?[]:{};t(e,(function(t,e,n){t(x((function(t,r){r.length<=1&&(r=r[0]),i[e]=r,n(t)})))}),(function(t){n(t,i)}))}function L(t,e,n,r){var i=[];t(e,(function(t,e,r){n(t,(function(t,e){i=i.concat(e||[]),r(t)}))}),(function(t){r(t,i)}))}function F(t,e,i){if(null==e)e=1;else if(0===e)throw new Error("Concurrency must not be zero");function o(t,e,i,o){if(null!=o&&"function"!=typeof o)throw new Error("task callback must be a function");if(t.started=!0,d(e)||(e=[e]),0===e.length&&t.idle())return n.setImmediate((function(){t.drain()}));h(e,(function(e){var n={data:e,callback:o||r};i?t.tasks.unshift(n):t.tasks.push(n),t.tasks.length===t.concurrency&&t.saturated()})),n.setImmediate(t.process)}function s(t,e){return function(){a-=1;var n=!1,r=arguments;h(e,(function(t){h(u,(function(e,r){e!==t||n||(u.splice(r,1),n=!0)})),t.callback.apply(t,r)})),t.tasks.length+a===0&&t.drain(),t.process()}}var a=0,u=[],l={tasks:[],concurrency:e,payload:i,saturated:r,empty:r,drain:r,started:!1,paused:!1,push:function(t,e){o(l,t,!1,e)},kill:function(){l.drain=r,l.tasks=[]},unshift:function(t,e){o(l,t,!0,e)},process:function(){for(;!l.paused&&ar?1:0}n.map(t,(function(t,n){e(t,(function(e,r){e?n(e):n(null,{value:t,criteria:r})}))}),(function(t,e){if(t)return r(t);r(null,g(e.sort(i),(function(t){return t.value})))}))},n.auto=function(t,e,i){"function"==typeof arguments[1]&&(i=e,e=null),i=l(i||r);var o=b(t),s=o.length;if(!s)return i(null);e||(e=s);var a={},u=0,c=!1,f=[];function p(t){f.unshift(t)}function g(t){var e=w(f,t);e>=0&&f.splice(e,1)}function m(){s--,h(f.slice(0),(function(t){t()}))}p((function(){s||i(null,a)})),h(o,(function(r){if(!c){for(var o,s=d(t[r])?t[r]:[t[r]],l=x((function(t,e){if(u--,e.length<=1&&(e=e[0]),t){var o={};y(a,(function(t,e){o[e]=t})),o[r]=e,c=!0,i(t,o)}else a[r]=e,n.setImmediate(m)})),f=s.slice(0,s.length-1),h=f.length;h--;){if(!(o=t[f[h]]))throw new Error("Has nonexistent dependency in "+f.join(", "));if(d(o)&&w(o,r)>=0)throw new Error("Has cyclic dependencies")}b()?(u++,s[s.length-1](l,a)):p((function t(){b()&&(u++,g(t),s[s.length-1](l,a))}))}function b(){return u3)throw new Error("Invalid arguments - must be either (task), (task, callback), (times, task) or (times, task, callback)");function l(t,e){function r(t,n){return function(r){t((function(t,e){r(!t||n,{err:t,result:e})}),e)}}function i(t){return function(e){setTimeout((function(){e(null)}),t)}}for(;a.times;){var o=!(a.times-=1);s.push(r(a.task,o)),!o&&a.interval>0&&s.push(i(a.interval))}n.series(s,(function(e,n){n=n[n.length-1],(t||a.callback)(n.err,n.result)}))}return c<=2&&"function"==typeof t&&(r=e,e=t),"function"!=typeof t&&u(a,t),a.callback=r,a.task=e,a.callback?l():l},n.waterfall=function(t,e){if(e=l(e||r),!d(t)){var i=new Error("First argument to waterfall must be an array of functions");return e(i)}if(!t.length)return e();!function t(n){return x((function(r,i){if(r)e.apply(null,[r].concat(i));else{var o=n.next();o?i.push(t(o)):i.push(e),z(n).apply(null,i)}}))}(n.iterator(t))()},n.parallel=function(t,e){M(n.eachOf,t,e)},n.parallelLimit=function(t,e,n){M(C(e),t,n)},n.series=function(t,e){M(n.eachOfSeries,t,e)},n.iterator=function(t){return function e(n){function r(){return t.length&&t[n].apply(null,arguments),r.next()}return r.next=function(){return n>>1);n(e,t[o])>=0?r=o:i=o-1}return r}(t.tasks,a,i)+1,0,a),t.tasks.length===t.concurrency&&t.saturated(),n.setImmediate(t.process)}))}(o,t,e,s)},delete o.unshift,o},n.cargo=function(t,e){return F(t,1,e)},n.log=R("log"),n.dir=R("dir"),n.memoize=function(t,e){var r={},o={},s=Object.prototype.hasOwnProperty;e=e||i;var a=x((function(i){var a=i.pop(),u=e.apply(null,i);s.call(r,u)?n.setImmediate((function(){a.apply(null,r[u])})):s.call(o,u)?o[u].push(a):(o[u]=[a],t.apply(null,i.concat([x((function(t){r[u]=t;var e=o[u];delete o[u];for(var n=0,i=e.length;n=t.length)return e&&(e[a]=t),n(null,t);ay.lastIndex=r;var u=ay.exec(t);return s=i,i+=u[0],o=s+u[1],r=ay.lastIndex,c[o]||e&&e[o]===o?process.nextTick(f):e&&Object.prototype.hasOwnProperty.call(e,o)?h(e[o]):K(o,d)}function d(t,r){if(t)return n(t);if(!r.isSymbolicLink())return c[o]=!0,e&&(e[o]=o),process.nextTick(f);if(!oy){var i=r.dev.toString(32)+":"+r.ino.toString(32);if(u.hasOwnProperty(i))return p(null,u[i],o)}r(o,(function(t){if(t)return n(t);Q(o,(function(t,e){oy||(u[i]=e),p(t,e)}))}))}function p(t,r,i){if(t)return n(t);var o=I(s,r);e&&(e[i]=o),h(o)}function h(e){t=I(e,t.slice(r)),l()}l()},iy.realpath=ly),iy}var hy,gy,my,vy,yy,wy=!1;function by(t){return t&&"realpath"===t.syscall&&("ELOOP"===t.code||"ENOMEM"===t.code||"ENAMETOOLONG"===t.code)}function _y(t,e,n){if(yy)return gy(t,e,n);"function"==typeof e&&(n=e,e=null),gy(t,e,(function(r,i){by(r)?py().realpath(t,e,n):n(r,i)}))}function xy(t,e){if(yy)return my(t,e);try{return my(t,e)}catch(n){if(by(n))return py().realpathSync(t,e);throw n}}function Sy(){$1065d5c31471fb626b9b46bfdceb692b$importAsync$fd25186793608e1cb164321ba1a2159e$realpath=_y,$1065d5c31471fb626b9b46bfdceb692b$importAsync$fd25186793608e1cb164321ba1a2159e$realpathSync=xy}function ky(){$1065d5c31471fb626b9b46bfdceb692b$importAsync$fd25186793608e1cb164321ba1a2159e$realpath=gy,$1065d5c31471fb626b9b46bfdceb692b$importAsync$fd25186793608e1cb164321ba1a2159e$realpathSync=my}function Ey(){return wy||(wy=!0,hy={},hy=_y,_y.realpath=_y,_y.sync=xy,_y.realpathSync=xy,_y.monkeypatch=Sy,_y.unmonkeypatch=ky,gy=q,my=U,vy=process.version,yy=/^v[0-5]\./.test(vy),py()),hy}var Cy,Py,Ay=!1;function Ty(){return Ay||(Ay=!0,Cy={},Cy=function(t,e){for(var n=[],r=0;r=0&&c>0){for(r=[],o=n.length;l>=0&&!a;)l==u?(r.push(l),u=n.indexOf(t,l+1)):1==r.length?a=[r.pop(),c]:((i=r.pop())=0?u:c;r.length&&(a=[o,s])}return a}function My(){return Iy||(Iy=!0,Oy={},Oy=jy,jy.range=Dy),Oy}var Ly,Fy,Ry,By,$y,zy,qy,Hy,Uy=!1;function Vy(t){return parseInt(t,10)==t?parseInt(t,10):t.charCodeAt(0)}function Wy(t){return t.split(By).join("\\").split($y).join("{").split(zy).join("}").split(qy).join(",").split(Hy).join(".")}function Gy(t){if(!t)return[""];var e=[],n=Ry("{","}",t);if(!n)return t.split(",");var r=n.pre,i=n.body,o=n.post,s=r.split(",");s[s.length-1]+="{"+i+"}";var a=Gy(o);return o.length&&(s[s.length-1]+=a.shift(),s.push.apply(s,a)),e.push.apply(e,s),e}function Ky(t){return t?("{}"===t.substr(0,2)&&(t="\\{\\}"+t.substr(2)),Jy(function(t){return t.split("\\\\").join(By).split("\\{").join($y).split("\\}").join(zy).split("\\,").join(qy).split("\\.").join(Hy)}(t),!0).map(Wy)):[]}function Qy(t){return"{"+t+"}"}function Zy(t){return/^-?0\d/.test(t)}function Xy(t,e){return t<=e}function Yy(t,e){return t>=e}function Jy(t,e){var n=[],r=Ry("{","}",t);if(!r||/\$$/.test(r.pre))return[t];var i,o=/^-?\d+\.\.-?\d+(?:\.\.-?\d+)?$/.test(r.body),s=/^[a-zA-Z]\.\.[a-zA-Z](?:\.\.-?\d+)?$/.test(r.body),a=o||s,u=r.body.indexOf(",")>=0;if(!a&&!u)return r.post.match(/,.*\}/)?Jy(t=r.pre+"{"+r.body+zy+r.post):[t];if(a)i=r.body.split(/\.\./);else if(1===(i=Gy(r.body)).length&&1===(i=Jy(i[0],!1).map(Qy)).length)return(f=r.post.length?Jy(r.post,!1):[""]).map((function(t){return r.pre+i[0]+t}));var c,l=r.pre,f=r.post.length?Jy(r.post,!1):[""];if(a){var d=Vy(i[0]),p=Vy(i[1]),h=Math.max(i[0].length,i[1].length),g=3==i.length?Math.abs(Vy(i[2])):1,m=Xy;p0){var _=new Array(b+1).join("0");w=y<0?"-"+_+w.slice(1):_+w}}c.push(w)}}else c=Fy(i,(function(t){return Jy(t,!1)}));for(var x=0;x65536)throw new TypeError("pattern is too long");var n=this.options;if(!n.noglobstar&&"**"===t)return rw;if(""===t)return"";var r,i="",o=!!n.nocase,s=!1,a=[],u=[],c=!1,l=-1,f=-1,d="."===t.charAt(0)?"":n.dot?"(?!(?:^|\\/)\\.{1,2}(?:$|\\/))":"(?!\\.)",p=this;function h(){if(r){switch(r){case"*":i+=aw,o=!0;break;case"?":i+=sw,o=!0;break;default:i+="\\"+r}p.debug("clearStateChar %j %j",r,i),r=!1}}for(var g,m=0,v=t.length;m-1;k--){var E=u[k],C=i.slice(0,E.reStart),P=i.slice(E.reStart,E.reEnd-8),A=i.slice(E.reEnd-8,E.reEnd),T=i.slice(E.reEnd);A+=T;var O=C.split("(").length-1,I=T;for(m=0;m=0&&!(r=t[i]);i--);for(i=0;i>> no match, partial?",t,f,e,d),f!==s))}if("string"==typeof c?(u=r.nocase?l.toLowerCase()===c.toLowerCase():l===c,this.debug("string match",c,l,u)):(u=l.match(c),this.debug("pattern match",c,l,u)),!u)return!1}if(i===s&&o===a)return!0;if(i===s)return n;if(o===a)return i===s-1&&""===t[i];throw new Error("wtf?")}}function Ew(){return pw||(pw=!0,kw()),ew}var Cw,Pw=!1;function Aw(){return Pw||(Pw=!0,Cw={},Cw="function"==typeof Object.create?function(t,e){e&&(t.super_=e,t.prototype=Object.create(e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}))}:function(t,e){if(e){t.super_=e;var n=function(){};n.prototype=e.prototype,t.prototype=new n,t.prototype.constructor=t}}),Cw}var Tw,Ow,Iw,jw=!1;function Nw(t){return"/"===t.charAt(0)}function Dw(t){var e=/^([a-zA-Z]:|[\\\/]{2}[^\\\/]+[\\\/]+[^\\\/]+)?([\\\/])?([\s\S]*?)$/.exec(t),n=e[1]||"",r=Boolean(n&&":"!==n.charAt(1));return Boolean(e[2]||r)}function Mw(){return jw||(jw=!0,Tw={},Tw="win32"===process.platform?Dw:Nw,Ow=Nw,Tw.posix=Ow,Iw=Dw,Tw.win32=Iw),Tw}var Lw,Fw,Rw,Bw,$w,zw,qw,Hw,Uw,Vw,Ww,Gw=!1;function Kw(t,e){return Object.prototype.hasOwnProperty.call(t,e)}function Qw(t,e){return t.toLowerCase().localeCompare(e.toLowerCase())}function Zw(t,e){return t.localeCompare(e)}function Xw(t){var e=null;if("/**"===t.slice(-3)){var n=t.replace(/(\/\*\*)+$/,"");e=new Ww(n,{dot:!0})}return{matcher:new Ww(t,{dot:!0}),gmatcher:e}}function Yw(t,e,n){if(n||(n={}),n.matchBase&&-1===e.indexOf("/")){if(n.noglobstar)throw new Error("base matching requires globstar");e="**/"+e}t.silent=!!n.silent,t.pattern=e,t.strict=!1!==n.strict,t.realpath=!!n.realpath,t.realpathCache=n.realpathCache||Object.create(null),t.follow=!!n.follow,t.dot=!!n.dot,t.mark=!!n.mark,t.nodir=!!n.nodir,t.nodir&&(t.mark=!0),t.sync=!!n.sync,t.nounique=!!n.nounique,t.nonull=!!n.nonull,t.nosort=!!n.nosort,t.nocase=!!n.nocase,t.stat=!!n.stat,t.noprocess=!!n.noprocess,t.absolute=!!n.absolute,t.maxLength=n.maxLength||1/0,t.cache=n.cache||Object.create(null),t.statCache=n.statCache||Object.create(null),t.symlinks=n.symlinks||Object.create(null),function(t,e){t.ignore=e.ignore||[],Array.isArray(t.ignore)||(t.ignore=[t.ignore]),t.ignore.length&&(t.ignore=t.ignore.map(Xw))}(t,n),t.changedCwd=!1;var r=process.cwd();Kw(n,"cwd")?(t.cwd=$b5c2469da0313a6433a29f51bff1e284$importAsync$05bba0ffa9a007655052ba489d0ecdc7$resolve(n.cwd),t.changedCwd=t.cwd!==r):t.cwd=r,t.root=n.root||$b5c2469da0313a6433a29f51bff1e284$importAsync$05bba0ffa9a007655052ba489d0ecdc7$resolve(t.cwd,"/"),t.root=$b5c2469da0313a6433a29f51bff1e284$importAsync$05bba0ffa9a007655052ba489d0ecdc7$resolve(t.root),"win32"===process.platform&&(t.root=t.root.replace(/\\/g,"/")),t.cwdAbs=Vw(t.cwd)?t.cwd:eb(t,t.cwd),"win32"===process.platform&&(t.cwdAbs=t.cwdAbs.replace(/\\/g,"/")),t.nomount=!!n.nomount,n.nonegate=!0,n.nocomment=!0,t.minimatch=new Ww(e,n),t.options=t.minimatch.options}function Jw(t){for(var e=t.nounique,n=e?[]:Object.create(null),r=0,i=t.matches.length;rthis.maxLength)return!1;if(!this.stat&&cb(this.cache,e)){var r=this.cache[e];if(Array.isArray(r)&&(r="DIR"),!n||"DIR"===r)return r;if(n&&"FILE"===r)return!1}var i=this.statCache[e];if(!i){var o;try{o=W(e)}catch(t){if(t&&("ENOENT"===t.code||"ENOTDIR"===t.code))return this.statCache[e]=!1,!1}if(o&&o.isSymbolicLink())try{i=V(e)}catch(t){i=o}else i=o}return this.statCache[e]=i,r=!0,i&&(r=i.isDirectory()?"DIR":"FILE"),this.cache[e]=this.cache[e]||r,(!n||"FILE"!==r)&&r},hb.prototype._mark=function(t){return ib().mark(this,t)},hb.prototype._makeAbs=function(t){return ib().makeAbs(this,t)}),ob}var mb,vb=!1;function yb(t,e){if(t&&e)return yb(t)(e);if("function"!=typeof t)throw new TypeError("need wrapper function");return Object.keys(t).forEach((function(e){n[e]=t[e]})),n;function n(){for(var e=new Array(arguments.length),n=0;nr?(n.splice(0,r),process.nextTick((function(){e.apply(null,i)}))):delete Tb[t]}}))}(t))}function Nb(t){for(var e=t.length,n=[],r=0;r1)return!0;for(var i=0;ithis.maxLength)return e();if(!this.stat&&qb(this.cache,n)){var i=this.cache[n];if(Array.isArray(i)&&(i="DIR"),!r||"DIR"===i)return e(null,i);if(r&&"FILE"===i)return e()}var o=this.statCache[n];if(void 0!==o){if(!1===o)return e(null,o);var s=o.isDirectory()?"DIR":"FILE";return r&&"FILE"===s?e():e(null,s,o)}var a=this,u=Hb("stat\0"+n,(function(r,i){if(i&&i.isSymbolicLink())return o(n,(function(r,o){r?a._stat2(t,n,null,i,e):a._stat2(t,n,r,o,e)}));a._stat2(t,n,r,i,e)}));u&&K(n,u)},Zb.prototype._stat2=function(t,e,n,r,i){if(n&&("ENOENT"===n.code||"ENOTDIR"===n.code))return this.statCache[e]=!1,i();var o="/"===t.slice(-1);if(this.statCache[e]=r,"/"===e.slice(-1)&&r&&!r.isDirectory())return i(null,!1,r);var s=!0;return r&&(s=r.isDirectory()?"DIR":"FILE"),this.cache[e]=this.cache[e]||s,o&&"FILE"===s?i():i(null,s,r)}}function Yb(){return Kb||(Kb=!0,Xb()),Mb}var Jb,t_,e_,n_,r_,i_,o_,s_,a_=!1;function u_(t){if(["unlink","chmod","stat","lstat","rmdir","readdir"].forEach((function(e){t[e]=t[e]||e_[e],t[e+="Sync"]=t[e]||e_[e]})),t.maxBusyTries=t.maxBusyTries||3,t.emfileWait=t.emfileWait||1e3,!1===t.glob&&(t.disableGlob=!0),!0!==t.disableGlob&&void 0===n_)throw Error("glob dependency not found, set `options.disableGlob = true` if intentional");t.disableGlob=t.disableGlob||!1,t.glob=t.glob||i_}function c_(t,e,n){"function"==typeof e&&(n=e,e={}),t_(t,"rimraf: missing path"),t_.equal(typeof t,"string","rimraf: path should be a string"),t_.equal(typeof n,"function","rimraf: callback function required"),t_(e,"rimraf: invalid options argument provided"),t_.equal(typeof e,"object","rimraf: options should be object"),u_(e);var r=0,i=null,o=0;if(e.disableGlob||!n_.hasMagic(t))return s(null,[t]);function s(t,s){return t?n(t):0===(o=s.length)?n():void s.forEach((function(t){l_(t,e,(function s(a){if(a){if(("EBUSY"===a.code||"ENOTEMPTY"===a.code||"EPERM"===a.code)&&r1&&(e=n.shift()),t=n.shift(),u.readdir(r,(function(n,i){return null!=n?t(n):(e&&(i=c.filterExtensions(i,e)),i=(i=i.sort((function(t,e){return t.toLowerCase().localeCompare(e.toLowerCase())}))).map((function(t){return m.join(r,t)})),t(null,i))}))},filterExtensions:function(t,e){return e=e.map((function(t){return""===t?t:"."+t.replace(/^\./,"")})),t.filter((function(t){return w.include(e,m.extname(t))}))},listTreeSync:function(t){var e,n;return n=[],e=function(t){return n.push(t),!0},c.traverseTreeSync(t,e,e),n},move:function(t,e,n){return f(t,e,(function(r,i){var o,s;if(!r)return i?(s=m.dirname(e),u.exists(s,(function(r){if(!r)return c.makeTree(s,(function(r){if(!r)return u.rename(t,e,n);n(r)}));u.rename(t,e,n)}))):((o=new Error("'"+e+"' already exists.")).code="EEXIST",void n(o));n(r)}))},moveSync:function(t,e){var n,r;if(!d(t,e))throw(n=new Error("'"+e+"' already exists.")).code="EEXIST",n;return r=m.dirname(e),u.existsSync(r)||c.makeTreeSync(r),u.renameSync(t,e)},removeSync:function(t){return v.sync(t)},remove:function(t,e){return v(t,e)},writeFileSync:function(t,e,n){return g.sync(m.dirname(t)),u.writeFileSync(t,e,n)},writeFile:function(t,e,n,r){return r=w.last(arguments),g(m.dirname(t),(function(i){return null!=i?"function"==typeof r?r(i):void 0:u.writeFile(t,e,n,r)}))},copy:function(t,e,n){return g(m.dirname(e),(function(r){var i,o;if(null==r)return(o=u.createReadStream(t)).on("error",(function(t){return"function"==typeof n&&n(t),n=null})),(i=u.createWriteStream(e)).on("error",(function(t){return"function"==typeof n&&n(t),n=null})),i.on("close",(function(){return"function"==typeof n&&n(),n=null})),o.pipe(i);"function"==typeof n&&n(r)}))},copySync:function(t,e){var n,r,i,o,s,a,l;for(o=u.readdirSync(t),g.sync(e),l=[],s=0,a=o.length;s0;)r=new Buffer(n),i=u.readSync(s,r,0,r.length,o),u.writeSync(a,r,0,i,o),c.push(o+=i);return c}finally{null!=s&&u.closeSync(s),null!=a&&u.closeSync(a)}},makeTreeSync:function(t){if(!c.isDirectorySync(t))return g.sync(t)},makeTree:function(t,e){return c.isDirectory(t,(function(n){return n?"function"==typeof e?e():void 0:g(t,(function(t){return"function"==typeof e?e(t):void 0}))}))},traverseTreeSync:function(t,e,n){var r;if(null==n&&(n=e),c.isDirectorySync(t))return(r=function(t,e,n){var i,o,s,a,c,l,f;for(c=0,l=(f=u.readdirSync(t)).length;c0},f=function(t,e,n){return u.stat(t,(function(r,i){if(!r)return u.stat(e,(function(r,o){if(!r||"ENOENT"!==r.code)return n(void 0,t.toLowerCase()===e.toLowerCase()&&i.dev===o.dev&&i.ino===o.ino);n(void 0,!0)}));n(r)}))},d=function(t,e){var n,r;return r=y(t),n=y(e),!r||!n||t.toLowerCase()===e.toLowerCase()&&r.dev===n.dev&&r.ino===n.ino},To=new Proxy({},{get:function(t,e){var n;return null!=(n=c[e])?n:u[e]},set:function(t,e,n){return c[e]=n}})}).call(To);class v_{constructor(t){this.props=t,this.model=atom.workspace.buildTextEditor({mini:!0,softWrapped:!0,lineNumberGutterVisible:!1}),this.element=atom.views.getView(this.model),this.model.setText(t.initialText),t.selectAll?this.model.selectAll():this.model.getLastCursor().moveToEndOfScreenLine(),this.setReadOnly(),this.setGrammar(),this.model.scrollToBufferPosition([0,0])}async update(t){this.element=atom.views.getView(this.model),this.props={...this.props,...t},this.setReadOnly(),this.setGrammar()}focus(){this.element.focus()}getModel(){return this.model}setReadOnly(){this.model.setReadOnly(!!this.props.readOnly)}setGrammar(){void 0!==this.props.grammar?atom.textEditors.setGrammarOverride(this.model,this.props.grammar):atom.textEditors.clearGrammarOverride(this.model)}}class y_{constructor(t){this.props=t,Lt.initialize(this)}async update(t){this.props={...this.props,...t},await Lt.update(this)}render(){return Lt.dom("div",{className:"atomts-rename-view",ref:"main"},Lt.dom("div",{className:"block"},Lt.dom("div",null,Lt.dom("span",{ref:"title"},this.props.title),Lt.dom("span",{className:"subtle-info-message"},Lt.dom("span",null,"Close this panel with "),Lt.dom("span",{className:"highlight"},"esc"),Lt.dom("span",null," key. And commit with the "),Lt.dom("span",{className:"highlight"},"enter"),Lt.dom("span",null," key."))),Lt.dom("div",{className:"find-container block"},Lt.dom("div",{className:"editor-container"},Lt.dom(v_,{ref:"editor",initialText:this.props.initialText,selectAll:this.props.selectAll}))),this.renderValidationMessage()))}async destroy(){await Lt.destroy(this)}focus(){return this.refs.editor.focus()}getText(){return this.refs.editor.getModel().getText()}renderValidationMessage(){return void 0!==this.props.validationMessage?Lt.dom("div",{className:"highlight-error"},this.props.validationMessage):null}}async function w_(t){const e=new y_({title:t.title,initialText:t.text,selectAll:t.autoSelect}),n=atom.workspace.addModalPanel({item:e,priority:1e3}),r=document.activeElement;e.focus();const i=new g;try{return await new Promise((n=>{i.add(atom.commands.add(e.refs.main,{"core:cancel":()=>{n(void 0)},"core:confirm":()=>{const r=e.getText(),i=t.onValidate(r);i?Ce(e.update({validationMessage:i})):n(r)}}))}))}finally{n.destroy(),i.dispose(),r&&r.focus()}}function b_(t){const e=new g;for(const n of zi)if("atom-text-editor"===n.selector){const r=n.desc(t);e.add(atom.commands.add(n.selector,n.command,{...r,didDispatch:async function(t){try{const e=t.currentTarget.getModel();ze(e)?await r.didDispatch(e,(()=>t.abortKeyBinding())):(t.abortKeyBinding(),qe(e)&&atom.notifications.addWarning("Atom-TypeScript cancelled last command: Current editor has no file path",{description:`Atom-TypeScript needs to determine the file path of the current editor to execute \`${n.command}\`, which it failed to do. You probably just need to save the current file somewhere.`,dismissable:!0}))}catch(t){__(t)}}}))}else{const r=n.desc(t);e.add(atom.commands.add(n.selector,n.command,{...r,didDispatch:async function(){try{await r.didDispatch()}catch(t){__(t)}}}))}return e}function __(t){atom.notifications.addFatalError("Something went wrong, see details below.",{detail:t.message,dismissable:!0,stack:t.stack})}qi("atom-text-editor","typescript:rename-file",(t=>({description:"Rename current file",didDispatch:async function(e){const n=e.getPath();if(!n)return;const r=await w_({autoSelect:!0,title:"Rename File",text:n,onValidate:t=>t.trim()?"":"If you want to abort : Press esc to exit"});if(!r)return;const i=await t.getClient(n),o=await i.execute("getEditsForFileRename",{oldFilePath:n,newFilePath:r});await t.applyEdits(o.body),await new Promise(((t,i)=>{To.move(n,r,(n=>{n?i(n):(e.getBuffer().setPath(r),t())}))}))}}))),qi("atom-text-editor","typescript:rename-refactor",(t=>({description:"Rename symbol under text cursor everywhere it is used",didDispatch:async function(e){const n=He(e);if(!n)return;const r=await t.getClient(n.file),i=await r.execute("rename",n),{info:o,locs:s}=i.body;if(!o.canRename)return void atom.notifications.addInfo("AtomTS: Rename not available at cursor location");const a=await w_({autoSelect:!0,title:"Rename Variable",text:o.displayName,onValidate:t=>t.replace(/\s/g,"")!==t.trim()?"The new variable must not contain a space":t.trim()?"":"If you want to abort : Press esc to exit"});void 0!==a&&await t.applyEdits(s.map((t=>({fileName:t.file,textChanges:t.locs.map((t=>({...t,newText:a})))}))))}}))),qi("atom-workspace","typescript:restart-all-servers",(t=>({description:"Kill all tsserver instances. They will be auto-restarted",didDispatch:async function(){t.killAllServers()}}))),qi("atom-workspace","typescript:return-from-declaration",(t=>({description:"If used `go-to-declaration`, return to previous text cursor position",didDispatch:async function(){await t.histGoBack()}}))),qi("atom-workspace","typescript:show-editor-position-history",(t=>({description:"If used `go-to-declaration`, return to previous text cursor position",didDispatch:async function(){await t.histShowHistory()}}))),qi("atom-text-editor","typescript:toggle-semantic-view",(t=>({description:"Toggle semantic view outline",didDispatch:function(){t.toggleSemanticViewController()}}))),qi("atom-text-editor","typescript:show-tooltip",(t=>({description:"Show type tooltip at current text cursor position",didDispatch:async function(e){return t.showTooltipAt(e)}}))),qi("atom-text-editor","typescript:show-signature-help",(t=>({description:"Show signature help tooltip at current text cursor position",didDispatch:async function(e){return t.showSigHelpAt(e)}}))),qi("atom-text-editor","typescript:hide-signature-help",(t=>({description:"Hide the currently visible signature help",didDispatch:async function(e,n){t.hideSigHelpAt(e)||n()}}))),qi("atom-text-editor","typescript:signature-help-next",(t=>({description:"Show next signature help if available",didDispatch:async function(e,n){t.rotateSigHelp(e,1)||n()}}))),qi("atom-text-editor","typescript:signature-help-prev",(t=>({description:"Show previous signature help if available",didDispatch:async function(e,n){t.rotateSigHelp(e,-1)||n()}}))),qi("atom-text-editor","typescript:toggle-file-symbols",(t=>({description:"Toggle view for finding file symbols",didDispatch:async function(e){t.toggleFileSymbolsView(e)}}))),qi("atom-text-editor","typescript:toggle-project-symbols",(t=>({description:"Toggle view for finding file symbols",didDispatch:async function(e){t.toggleProjectSymbolsView(e)}})));class x_{constructor(t,e){this.children=e,this.props={...t,delay:{show:0,hide:0}},Lt.initialize(this),this.tooltipDisposable=atom.tooltips.add(this.element,this.props)}async update(t,e){this.props={...this.props,...t},this.children=e,await Lt.update(this),this.tooltipDisposable.dispose(),this.tooltipDisposable=atom.tooltips.add(this.element,this.props)}render(){return Lt.dom("div",{className:"inline-block"},this.children?this.children:null)}async destroy(){await Lt.destroy(this),this.tooltipDisposable.dispose()}}class S_{constructor(t){this.hiddenBuildStatus=!1,this.disposables=new g,this.buildStatusClicked=()=>{this.props.buildStatus.success||atom.notifications.addError("Build failed",{detail:this.props.buildStatus.message,dismissable:!0})},this.props={...t},this.setHideBuildStatus(atom.config.get("atom-typescript").buildStatusTimeout),this.resetBuildStatusTimeout(),Lt.initialize(this),this.disposables.add(atom.config.onDidChange("atom-typescript.buildStatusTimeout",(({newValue:t})=>{this.setHideBuildStatus(t),Ce(this.update({}))})))}async update(t){const e=void 0!==t.buildStatus&&t.buildStatus.success!==this.props.buildStatus.success;this.props={...this.props,...t},e&&this.resetBuildStatusTimeout(),await Lt.update(this)}render(){if(this.hiddenBuildStatus)return Lt.dom("span",null);let t,e;return this.props.buildStatus.success?(t="highlight-success",e="Emit Success"):(t="highlight-error",e="Emit Failed"),Lt.dom(x_,{title:this.props.buildStatus.success?"Build was successful":"Build failed; click to show error message"},Lt.dom("span",{className:t,on:{click:this.buildStatusClicked}},e))}async destroy(){await Lt.destroy(this)}resetBuildStatusTimeout(){this.hiddenBuildStatus=!1,this.props.buildStatus.success&&this.hideBuildStatus()}setHideBuildStatus(t){this.hideBuildStatus=t>0?Pe.debounce((()=>{this.hiddenBuildStatus=!0,Ce(Lt.update(this))}),1e3*t):0===t?()=>{this.hiddenBuildStatus=!0}:()=>{}}}class k_{constructor(t){this.props={...t},Lt.initialize(this)}async update(t){this.props={...this.props,...t},await Lt.update(this)}render(){return Lt.dom(x_,{title:()=>this.props.tsConfigPath.startsWith("/dev/null")?"No tsconfig.json":`Click to open ${atom.project.relativize(this.props.tsConfigPath)}`},Lt.dom("a",{className:"inline-block",href:"",on:{click:t=>{t.preventDefault(),this.openConfigPath()}}},this.props.tsConfigPath.startsWith("/dev/null")?"No project":A((t=this.props.tsConfigPath,"~"+atom.project.relativize(t)))));var t}async destroy(){await Lt.destroy(this)}openConfigPath(){this.props.tsConfigPath.startsWith("/dev/null")?atom.notifications.addInfo("No tsconfig for current file"):Ce(atom.workspace.open(this.props.tsConfigPath))}}class E_{constructor(t={}){this.props={visible:!0,pending:[],progress:{max:0,value:0},...t},Lt.initialize(this)}async update(t){this.props={...this.props,...t},await Lt.update(this)}render(){return Lt.dom("ts-status-panel",{className:this.props.visible?"":"hide"},this.renderVersion(),this.renderPending(),this.renderConfigPath(),this.renderStatus(),this.renderProgress())}async destroy(){await Lt.destroy(this)}dispose(){Ce(this.destroy())}async show(){await this.update({visible:!0})}async hide(){await this.update({visible:!1})}renderVersion(){return void 0!==this.props.clientVersion?Lt.dom(x_,{title:"Active TypeScript version"},this.props.clientVersion):null}renderPending(){return this.props.pending.length>0?Lt.dom(x_,{title:`Pending Requests:
    ${this.props.pending.map((({title:t})=>`
  • ${t}
  • `)).join("")}
`,html:!0},Lt.dom("span",{ref:"pendingCounter"},this.props.pending.length.toString()),Lt.dom("span",{ref:"pendingSpinner",className:"loading loading-spinner-tiny inline-block",style:{marginLeft:"5px",opacity:"0.5",verticalAlign:"sub"}})):null}renderConfigPath(){return void 0!==this.props.tsConfigPath?Lt.dom(k_,{tsConfigPath:this.props.tsConfigPath}):null}renderStatus(){return this.props.buildStatus?Lt.dom(S_,{buildStatus:this.props.buildStatus}):null}renderProgress(){return this.props.progress.value0;)e=this.prevCursorPositions.pop();if(e)return this.open({file:e.file,start:{line:e.line,offset:e.offset}});atom.notifications.addInfo("AtomTS: Previous position not found.")}async goForward(t,e){const n=He(t);if(n){this.prevCursorPositions.push(n);const t=100;this.prevCursorPositions.length>t&&this.prevCursorPositions.splice(0,this.prevCursorPositions.length-t)}return this.open(e)}async showHistory(){const t=await $i({items:this.getHistory().slice().reverse().map(((t,e)=>({...t,idx:e}))),itemTemplate:(t,e)=>Lt.dom("li",{className:"two-lines"},Lt.dom("div",{className:"primary-line"},Lt.dom(Qr,{label:t.file,query:e.getFilterQuery()})),Lt.dom("div",{className:"secondary-line"},"Line: ",t.line,", column: ",t.offset)),itemFilterKey:"file"});t&&await this.goHistory(t.idx+1)}getHistory(){return this.prevCursorPositions}dispose(){}serialize(){return this.prevCursorPositions}async open(t){const e=await atom.workspace.open(t.file,{initialLine:t.start.line-1,initialColumn:t.start.offset-1,searchAllPanes:!0});return atom.workspace.isTextEditor(e)&&e.scrollToCursorPosition({center:!0}),e}}class P_{constructor(t,e){let n,r,i;this.getClient=t,this.editor=e,this.disposables=new g,this.occurrenceMarkers=[],this.disposed=!1;let o=!1;this.disposables.add(atom.config.observe("atom-typescript.occurrenceHighlightDebounceTimeout",(t=>{n=Pe.debounce((()=>{Ce(this.update())}),t),i=3.5*t})),e.onDidChangeCursorPosition((()=>{void 0===r?n():o=!0})),e.onDidChangePath((()=>n())),e.onDidChangeGrammar((()=>n())),e.onDidChange((()=>{void 0!==r&&clearTimeout(r),r=window.setTimeout((()=>{o&&(n(),o=!1),r=void 0}),i)})))}dispose(){this.disposed||(this.disposed=!0,this.disposables.dispose(),this.clearMarkers())}clearMarkers(){for(const t of this.occurrenceMarkers)t.destroy();this.occurrenceMarkers=[]}async update(){if(this.disposed)return;if(!ze(this.editor))return void this.clearMarkers();const t=this.editor.getPath();if(void 0===t)return;const e=await this.getClient(t);if(this.disposed)return;const n=this.editor.getLastCursor().getBufferPosition();try{const r=await e.execute("documentHighlights",{file:t,line:n.row+1,offset:n.column+1,filesToSearch:[t]});if(this.disposed)return;const i=Array.from(this.getNewOccurrenceMarkers(r.body));for(const t of this.occurrenceMarkers)i.includes(t)||t.destroy();this.occurrenceMarkers=i}catch(t){window.atom_typescript_debug&&console.error(t)}}*getNewOccurrenceMarkers(t){for(const e of t)if(e.file===this.editor.getPath())for(const t of e.highlightSpans){const e=Ie(t),n=this.occurrenceMarkers.find((t=>t.getBufferRange().isEqual(e)));if(n)yield n;else{const t=this.editor.markBufferRange(e);this.editor.decorateMarker(t,{type:"highlight",class:"atom-typescript-occurrence"}),yield t}}}}class A_{constructor(t){this.disposables=new g,this.disposables.add(atom.workspace.observeTextEditors((e=>{const n=new P_(t,e);this.disposables.add(n,e.onDidDestroy((()=>{this.disposables.remove(n),n.dispose()})))})))}dispose(){this.disposables.dispose()}}function T_(t,e,n,r){let i,o=n.right,s=!1,a="";t.style.left="",t.style.top="",t.style.right="",t.style.bottom="";const u=e.clientWidth,c=getComputedStyle(t),l=parseInt(c.width,10),f=parseInt(c.height,10);if(o+l>=u&&(o=u-l-10),o<0&&(a="pre-wrap",o=10,s=10),"bottom"===r){const t=e.clientHeight;i=n.bottom,i+f>=t&&(i=n.top-f)}else"top"===r&&(i=n.top-f,i<0&&(i=n.bottom));t.style.left=`${o}px`,t.style.top=`${i}px`,!1!==s&&(t.style.right=`${s}px`),a&&(t.style.whiteSpace=a)}class O_{constructor(t){this.parent=t,this.props={left:0,right:0,top:0,bottom:0},Lt.initialize(this)}async destroy(){return Lt.destroy(this)}async update(t){var e,n,r;void 0!==(null===(e=t.sigHelp)||void 0===e?void 0:e.selectedItemIndex)&&(null===(n=t.sigHelp)||void 0===n?void 0:n.selectedItemIndex)!==(null===(r=this.props.sigHelp)||void 0===r?void 0:r.selectedItemIndex)&&(this.props.visibleItem=void 0),this.props={...this.props,...t},void 0===this.props.sigHelp?this.props.visibleItem=void 0:void 0!==this.props.visibleItem&&(this.props.visibleItem=this.props.visibleItem%this.props.sigHelp.items.length,this.props.visibleItem<0&&(this.props.visibleItem+=this.props.sigHelp.items.length)),await Lt.update(this)}writeAfterUpdate(){T_(this.element,this.parent,this.props,atom.config.get("atom-typescript").sigHelpPosition)}render(){return Lt.dom("div",{className:"atom-typescript-tooltip tooltip",key:this.sigHelpHash()},Lt.dom("div",{className:"tooltip-inner"},this.tooltipContents()))}sigHelpHash(){if(!this.props.sigHelp)return;const{start:t,end:e}=this.props.sigHelp.applicableSpan;return`${t.line}:${t.offset}-${e.line}:${e.offset}`}tooltipContents(){if(!this.props.sigHelp)return"…";const{sigHelp:t}=this.props,e=void 0!==this.props.visibleItem?this.props.visibleItem:t.selectedItemIndex,n=t.items.length,r=["atom-typescript-tooltip-signature-help"];function i(n){const i=[];return n===t.selectedItemIndex&&i.push("atom-typescript-tooltip-signature-help-selected"),n===e&&i.push("atom-typescript-tooltip-signature-help-visible"),[...r,...i].join(" ")}return n>1&&r.push("atom-typescript-tooltip-signature-help-changable"),t.items.map(((e,n)=>Lt.dom("div",{className:i(n)},Lt.dom("div",null,Fe(e.prefixDisplayParts),this.renderSigHelpParams(e.parameters,t.argumentIndex),Fe(e.suffixDisplayParts),Lt.dom("div",{className:"atom-typescript-tooltip-signature-help-documentation"},Fe(e.documentation))))))}renderSigHelpParams(t,e){return t.map(((t,n)=>Lt.dom("span",{className:"atom-typescript-tooltip-signature-help-parameter"},n>0?", ":null,Lt.dom("span",{className:n===e?"atom-typescript-tooltip-signature-help-selected":void 0},Fe(t.displayParts)))))}}class I_{constructor(t,e,n){this.deps=t,this.editor=e,this.cancelled=!1,this.disposables=new g;const r=atom.views.getView(this.editor);this.view=new O_(r),r.appendChild(this.view.element);const i=Pe.debounce(this.updateTooltip.bind(this),100,{leading:!0});this.disposables.add(this.editor.onDidChangeCursorPosition((t=>{n=t.newBufferPosition,Ce(i(n))})),r.onDidChangeScrollTop((()=>{s((()=>this.updateTooltipPosition(n)))})),r.onDidChangeScrollLeft((()=>{s((()=>this.updateTooltipPosition(n)))}))),Ce(this.updateTooltip(n))}isDisposed(){return this.cancelled}dispose(){this.cancelled||(this.cancelled=!0,this.disposables.dispose(),Ce(this.view.destroy()))}async rotateSigHelp(t){const{visibleItem:e,sigHelp:n}=this.view.props,r=void 0!==e?e:void 0!==(null==n?void 0:n.selectedItemIndex)?null==n?void 0:n.selectedItemIndex:0;await this.view.update({visibleItem:r+t})}async updateTooltip(t){if(this.cancelled)return;let e;try{e=this.computeTooltipPosition(t)}catch(t){return void console.warn(t)}const n=await this.getMessage(t);this.cancelled||(n?await this.view.update({...e,sigHelp:n}):this.dispose())}updateTooltipPosition(t){if(this.cancelled)return;const e=this.computeTooltipPosition(t);Ce(this.view.update({...e}))}computeTooltipPosition(t){const e=atom.views.getView(this.editor),n=e.pixelPositionForBufferPosition(t),r=e.querySelector(".lines").getBoundingClientRect(),i=this.editor.getLineHeightInPixels(),o=e.getBoundingClientRect(),s=n.top+r.top-o.top+i/2,a=n.left+r.left-o.left,u=.7*i;return{left:a,right:a,top:s-u,bottom:s+u}}async getMessage(t){if(!ze(this.editor))return;const e=this.editor.getPath();if(void 0===e)return;const n=await this.deps.getClient(e);try{return(await n.execute("signatureHelp",{file:e,line:t.row+1,offset:t.column+1})).body}catch(t){return}}}class j_{constructor(t){this.deps=t,this.subscriptions=new g,this.editorMap=new WeakMap,this.stoppedChanging=t=>e=>{if(!atom.config.get("atom-typescript.sigHelpDisplayOnChange"))return;if(void 0===t.getPath())return;const n=t.getLastCursor().getBufferPosition(),[r]=e.changes.filter((t=>t.newRange.containsPoint(n)));r&&null!==r.newText.match(/[<(,]/)&&Ce(this.showTooltip(t,n))},this.subscriptions.add(atom.workspace.observeTextEditors((t=>{const e=new g;e.add(t.onDidDestroy((()=>{e.dispose(),this.subscriptions.remove(e);const n=this.editorMap.get(t);n&&n.dispose()})),t.onDidStopChanging(this.stoppedChanging(t))),this.subscriptions.add(e)})))}dispose(){this.subscriptions.dispose();for(const t of atom.workspace.getTextEditors()){const e=this.editorMap.get(t);e&&e.dispose()}}async showTooltipAt(t){const e=t.getLastCursor().getBufferPosition();return this.showTooltip(t,e)}rotateSigHelp(t,e){const n=this.editorMap.get(t);return!(!n||n.isDisposed())&&(Ce(n.rotateSigHelp(e)),!0)}hideTooltipAt(t){const e=this.editorMap.get(t);return!(!e||e.isDisposed())&&(e.dispose(),!0)}async showTooltip(t,e){const n=this.editorMap.get(t);n&&!n.isDisposed()||this.editorMap.set(t,new I_(this.deps,t,e))}}function N_(t,e,n,r){const i=e=>{const i=e.target.closest(n);i&&t.contains(i)&&r(e)};return t.addEventListener(e,i),new b((()=>{t.removeEventListener(e,i)}))}class D_{constructor(){this.tooltip=null,this.props={left:0,right:0,top:0,bottom:0},Lt.initialize(this)}async destroy(){return Lt.destroy(this)}async update(t){this.props={...this.props,...t},this.tooltip=await Pr(this.props.info,Lt,(t=>Lt.dom("div",{className:"atom-typescript-tooltip-tooltip-code"},t))),await Lt.update(this)}writeAfterUpdate(){T_(this.element,document.body,this.props,atom.config.get("atom-typescript").tooltipPosition)}render(){return Lt.dom("div",{className:"atom-typescript-tooltip tooltip"},Lt.dom("div",{className:"tooltip-inner"},this.tooltip))}}class M_{constructor(t,e,n,r){this.getClient=t,this.cancelled=!1,Ce(this.initialize(e,n,r))}dispose(){this.cancelled=!0,this.view&&(Ce(this.view.destroy()),this.view=void 0)}async initialize(t,e,n){const r=atom.views.getView(t);let i,o;try{i=r.pixelPositionForBufferPosition(n),o=r.pixelPositionForBufferPosition(n.traverse([0,1]))}catch(e){return void console.warn(e)}if(i.left>=o.left)return;const s=.7*t.getLineHeightInPixels(),a={left:e.clientX,right:e.clientX,top:e.clientY-s,bottom:e.clientY+s},u=await this.getMessage(t,n);this.cancelled||void 0!==u&&await this.showTooltip(a,u)}async getMessage(t,e){let n;const r=await this.getClient(t);if(!r)return;const i=t.getPath();try{if(void 0===i)return;n=await r.execute("quickinfo",{file:i,line:e.row+1,offset:e.column+1})}catch(t){return}return n.body}async showTooltip(t,e){this.view=new D_,document.body.appendChild(this.view.element),await this.view.update({...t,info:e})}}class L_{constructor(t){this.getClientInternal=t,this.subscriptions=new g,this.editorMap=new WeakMap,this.getClient=async t=>{const e=t.getPath();if(void 0!==e&&ze(t)&&R.existsSync(e))return this.getClientInternal(e)},this.clearExprTypeTimeout=()=>{void 0!==this.exprTypeTimeout&&(clearTimeout(this.exprTypeTimeout),this.exprTypeTimeout=void 0),this.hideExpressionType()},this.trackMouseMovement=t=>{let e;return n=>{const r=function(t,e){const n=atom.views.getView(t).getComponent().screenPositionForMouseEvent(e);if(!isNaN(n.row)&&!isNaN(n.column))return t.bufferPositionForScreenPosition(n)}(t,n);r&&(e&&e.isEqual(r)&&this.pendingTooltip||(e=r,this.clearExprTypeTimeout(),this.exprTypeTimeout=window.setTimeout((()=>this.showExpressionType(t,n,r)),atom.config.get("atom-typescript").tooltipDelay)))}},this.subscriptions.add(atom.workspace.observeTextEditors((t=>{const e=atom.views.getView(t),n=e.querySelector(".lines");this.editorMap.set(t,{rawView:e,lines:n});const r=new g;r.add(N_(e,"mousemove",".scroll-view",this.trackMouseMovement(t)),N_(e,"mouseout",".scroll-view",this.clearExprTypeTimeout),N_(e,"keydown",".scroll-view",this.clearExprTypeTimeout),e.onDidChangeScrollTop(this.clearExprTypeTimeout),e.onDidChangeScrollLeft(this.clearExprTypeTimeout),t.onDidDestroy((()=>{r.dispose(),this.subscriptions.remove(r),this.clearExprTypeTimeout()}))),this.subscriptions.add(r)})))}dispose(){this.subscriptions.dispose(),this.clearExprTypeTimeout()}showExpressionAt(t){const e=t.getLastCursor().getBufferPosition(),n=atom.views.getView(t);let r;try{r=n.pixelPositionForBufferPosition(e)}catch(t){return void console.warn(t)}this.showExpressionType(t,this.mousePositionForPixelPosition(t,r),e)}mousePositionForPixelPosition(t,e){const n=atom.views.getView(t).querySelector(".lines").getBoundingClientRect();return{clientY:e.top+n.top+t.getLineHeightInPixels()/2,clientX:e.left+n.left}}showExpressionType(t,e,n){this.pendingTooltip&&this.pendingTooltip.dispose(),this.pendingTooltip=new M_(this.getClient,t,e,n)}hideExpressionType(){this.pendingTooltip&&(this.pendingTooltip.dispose(),this.pendingTooltip=void 0)}}class F_{constructor(t){this.getClient=t,this.subscriptions=new g;const e=atom.workspace.paneForURI("atom-typescript://semantic-view");e&&(this.view=e.itemForURI("atom-typescript://semantic-view")),this.view&&Ce(this.view.setGetClient(this.getClient)),this.subscriptions.add(new b((()=>{this.view&&(atom.workspace.hide(this.view),Ce(this.view.destroy()))})),atom.config.observe("atom-typescript.showSemanticView",(t=>{t?Ce(this.show()):this.hide()})))}dispose(){this.subscriptions.dispose()}async toggle(){this.view?await atom.workspace.toggle(this.view):await this.show()}async show(){this.view||(this.view=Ye.create({navTree:null}),await this.view.setGetClient(this.getClient)),await atom.workspace.open(this.view,{searchAllPanes:!0})}hide(){return!!this.view&&atom.workspace.hide(this.view)}}class R_{constructor(t){this.position=t.position,this.name=t.name,this.type=t.type,this.parent=t.parent,this.file=t.file}static fromNavTree(t,e){const n=t.spans[0].start;return new R_({name:t.text,type:t.kind,position:{row:n.line-1,column:n.offset-1},parent:null!=e?e:null})}static fromNavto(t,e){const n=t.start;return new R_({name:t.name,type:t.kind,position:{row:n.line-1,column:n.offset-1},parent:null!=e?e:null,file:t.file})}}async function B_(t,e){const n=await async function(t,e){try{const n=await e.getClient(t);return(await n.execute("navtree",{file:t})).body}catch(e){console.error(t,e)}}(t,e);return n&&n.childItems?Array.from(z_(n.childItems)):[]}async function $_(t,e,n){const r=await async function(t,e,n){try{const r=await n.getClient(t);return(await r.execute("navto",{file:t,currentFileOnly:!1,searchValue:e,maxResultCount:1e3})).body}catch(e){console.error(t,e)}}(t,e,n);return r?Array.from(function*(t,e){for(const n of t)yield R_.fromNavto(n,e)}(r)):[]}function*z_(t,e){t.sort(((t,e)=>t.spans[0].start.line-e.spans[0].start.line));for(const n of t){const t=R_.fromNavTree(n,e);yield t,n.childItems&&(yield*z_(n.childItems,t))}}async function q_(t,e,n){if(void 0!==t.file)return n(e,{file:t.file,start:{line:t.position.row+1,offset:t.position.column+1}})}async function H_(t,e){const n=t.getPath();if(void 0!==n){let r;atom.config.get("symbols-view.quickJumpToFileSymbol")&&(r=function(t){const e=atom.views.getView(t).getScrollTop();return{bufferRanges:t.getSelectedBufferRanges(),scrollTop:e}}(t));const i=await $i({items:B_(n,e),itemTemplate:({name:t,position:e},n)=>Lt.dom("li",{className:"two-lines"},Lt.dom("div",{className:"primary-line"},Lt.dom(Qr,{label:t,query:n.getFilterQuery()})),Lt.dom("div",{className:"secondary-line"},`Line ${e.row+1}`)),didChangeSelection:function(e){atom.config.get("symbols-view.quickJumpToFileSymbol")&&e&&t.setCursorBufferPosition(e.position)},itemFilterKey:"name"});i?await q_(i,t,e.histGoForward):r&&function(t,{bufferRanges:e,scrollTop:n}){const r=atom.views.getView(t);t.setSelectedBufferRanges(e),r.setScrollTop(n)}(t,r)}}class U_{constructor(t){this.deps=t}toggleFileView(t){Ce(H_(t,this.deps))}toggleProjectView(t){Ce(async function(t,e){const n=t.getPath();if(void 0!==n){const r=await $i({items:t=>$_(n,t,e),itemTemplate:function({name:t,position:e,file:n},r){const i=atom.project.relativize(n);return Lt.dom("li",{className:"two-lines"},Lt.dom("div",{className:"primary-line"},Lt.dom(Qr,{label:t,query:r.getFilterQuery()})),Lt.dom("div",{className:"secondary-line"},`File ${i} line ${e.row+1}`))},itemFilterKey:"name"});r&&await q_(r,t,e.histGoForward)}}(t,this.deps))}dispose(){}}class V_{constructor(){this.errors=new Map,this.fileGrammars=new Map,this.pushErrors=Pe.debounce(this.pushErrors.bind(this),100)}*getErrorsInRange(t,e){for(const n of this.errors.values()){const r=n.get(T(t));r&&(yield*r.filter((t=>Ie(t).intersectsWith(e))))}}*getErrorsAt(t,e){for(const n of this.errors.values()){const r=n.get(T(t));r&&(yield*r.filter((t=>Ie(t).containsPoint(e))))}}setErrors(t,e,n){let r=this.errors.get(t);r||(r=new Map,this.errors.set(t,r)),r.set(T(e),n),this.pushErrors()}clearFileErrors(t){for(const e of this.errors.values())e.delete(t);this.pushErrors()}clear(){this.linter&&this.linter.clearMessages()}setLinter(t){this.linter=t,this.pushErrors()}dispose(){this.clear(),this.linter&&this.linter.dispose(),this.linter=void 0}pushErrors(){this.linter&&this.linter.setAllMessages(this.getLinterErrors())}getLinterErrors(){if(atom.config.get("atom-typescript.suppressAllDiagnostics"))return[];const t=[];for(const e of this.errors.values())for(const[n,r]of e){const e=atom.workspace.getTextEditors().find((t=>t.getPath()===n)),i=e?e.getGrammar().scopeName:this.selectGrammar(n);if(!W_("suppressAllDiagnostics",i))for(const e of r){if(W_("ignoredDiagnosticCodes",i).includes(`${e.code}`))continue;if(W_("ignoreUnusedSuggestionDiagnostics",i)&&e.reportsUnnecessary)continue;if("suggestion"===e.category&&W_("ignoredSuggestionDiagnostics",i).includes(`${e.code}`))continue;if(W_("ignoreNonSuggestionSuggestionDiagnostics",i)&&"suggestion"===e.category&&!Re(e.code,Ae.Suggestion))continue;let{start:r,end:o}=e;r&&o||(r=o={line:1,offset:1}),t.push({severity:this.getSeverity(W_("unusedAsInfo",i),e),excerpt:e.text,location:{file:n,position:je(r,o)}})}}return t}selectGrammar(t){const e=this.fileGrammars.get(t);if(void 0!==e)return e;const n=atom.grammars.selectGrammar(t,"").scopeName;return this.fileGrammars.set(t,n),n}getSeverity(t,e){if(t&&6133===e.code)return"info";switch(e.category){case"error":return"error";case"warning":return"warning";default:return"info"}}}function W_(t,e){return atom.config.get(`atom-typescript.${t}`,{scope:[e]})}class G_{constructor(t,e){let n;this.buffer=t,this.deps=e,this.events=new _,this.compileOnSave=!1,this.subscriptions=new g,this.on=this.events.on.bind(this.events),this.dispose=()=>{this.subscriptions.dispose(),Ce(this.close())},this.init=async()=>{this.state&&(await this.state.client.execute("open",{file:this.state.filePath,fileContent:this.buffer.getText()}),Ce(this.getErr({allFiles:!1,delay:0})))},this.close=async()=>{if(await this.openPromise,this.state){const t=this.state.client,e=this.state.filePath;this.deps.clearFileErrors(e),this.state.subscriptions.dispose(),this.state=void 0,await t.execute("close",{file:e})}},this.onDidChangePath=t=>{Ce(this.close().then((()=>{this.openPromise=this.open(t)})))},this.onDidSave=async()=>{await Promise.all([this.getErr({allFiles:!0,delay:100}),this.doCompileOnSave()])},this.onDidChangeText=async({changes:t})=>{if(0===t.length||!this.state)return;const{client:e,filePath:n}=this.state;await Promise.all(t.reduceRight(((t,{oldRange:r,newText:i})=>(t.push(e.execute("change",{file:n,line:r.start.row+1,offset:r.start.column+1,endLine:r.end.row+1,endOffset:r.end.column+1,insertString:i})),t)),[]))},this.subscriptions.add(atom.config.observe("atom-typescript.getErrDebounceTimeout",(t=>{n=Pe.debounce((()=>{Ce(this.getErr({allFiles:!1,delay:0}))}),t)})),t.onDidChangePath(this.onDidChangePath),t.onDidDestroy(this.dispose),t.onDidSave((()=>{Ce(this.onDidSave())})),t.onDidStopChanging((({changes:t})=>{t.length>0&&this.deps.reportBuildStatus(void 0)})),t.onDidChangeText((t=>{Ce(this.onDidChangeText(t)),n()}))),this.openPromise=this.open(this.buffer.getPath())}static create(t,e){const n=G_.bufferMap.get(t);if(n)return n;{const n=new G_(t,e);return G_.bufferMap.set(t,n),n}}getPath(){return this.state&&this.state.filePath}getInfo(){if(this.state)return{clientVersion:this.state.client.version,tsConfigPath:this.state.configFile&&this.state.configFile.getPath()}}async getErr(t){if(!this.state)return;const e=t.allFiles?Array.from(function*(){for(const t of atom.workspace.getTextEditors())ze(t)&&(yield t.getPath())}()):[this.state.filePath];await this.state.client.execute("geterr",{files:e,delay:t.delay})}async compile(){if(!this.state)return;const{client:t,filePath:e}=this.state,n=await t.execute("compileOnSaveAffectedFileList",{file:e}),r=Pe.flatten(n.body.map((t=>t.fileNames)));if(0===r.length)return;const i=r.map((e=>t.execute("compileOnSaveEmitFile",{file:e})));if(!(await Promise.all(i)).every((t=>!!t.body)))throw new Error("Some files failed to emit")}async doCompileOnSave(){if(this.compileOnSave){this.deps.reportBuildStatus(void 0);try{await this.compile(),this.deps.reportBuildStatus({success:!0})}catch(t){const e=t;console.error("Save failed with error",e),this.deps.reportBuildStatus({success:!1,message:e.message})}}}async open(t){if(void 0===t||!Be(t))return this.close();{const e=await this.deps.getClient(t);this.state={client:e,filePath:t,configFile:void 0,subscriptions:new g},this.state.subscriptions.add(e.on("restarted",(()=>Ce(this.init())))),await this.init();const n=await e.execute("projectInfo",{needFileNameList:!1,file:t});void 0!==n.body.configFileName&&(this.state.configFile=new S(n.body.configFileName),await this.readConfigFile(),this.state.subscriptions.add(this.state.configFile.onDidChange((()=>Ce(this.readConfigFile()))))),this.events.emit("opened")}}async readConfigFile(){if(!this.state||!this.state.configFile)return;const t=Ne(this.state.configFile.getPath());this.compileOnSave=t.compileOnSave;const e=atom.config.get("atom-typescript");await this.state.client.execute("configure",{file:this.state.filePath,formatOptions:t.formatCodeOptions,preferences:{includeCompletionsWithInsertText:!0,includeCompletionsForModuleExports:e.includeCompletionsForModuleExports,quotePreference:e.quotePreference,importModuleSpecifierEnding:e.importModuleSpecifierEnding,importModuleSpecifierPreference:e.importModuleSpecifierPreference,...t.preferences}})}}G_.bufferMap=new WeakMap;class K_{constructor(t,e){this.editor=t,this.opts=e,this.subscriptions=new g,this.isTypescript=!1,this.destroy=()=>{atom.views.getView(this.editor).classList.remove("typescript-editor"),this.subscriptions.dispose()},this.didActivate=()=>{this.isTypescript&&this.reportInfo()},this.onOpened=()=>{atom.workspace.getActiveTextEditor()===this.editor&&this.reportInfo()},this.checkIfTypescript=()=>{this.isTypescript=ze(this.editor),this.isTypescript?atom.views.getView(this.editor).classList.add("typescript-editor"):atom.views.getView(this.editor).classList.remove("typescript-editor")},this.buffer=G_.create(t.getBuffer(),e),this.subscriptions.add(this.buffer.on("opened",this.onOpened)),this.checkIfTypescript(),this.subscriptions.add(t.onDidChangePath(this.checkIfTypescript),t.onDidChangeGrammar(this.checkIfTypescript),t.onDidDestroy(this.destroy),t.onDidSave((()=>{atom.config.get("atom-typescript.checkAllFilesOnSave")&&atom.commands.dispatch(atom.views.getView(t),"typescript:check-all-files")})))}static createFactory(t){return e=>{let n=K_.editorMap.get(e);return n||(n=new K_(e,t),K_.editorMap.set(e,n)),n}}static lookupPane(t){return K_.editorMap.get(t)}reportInfo(){const t=this.buffer.getInfo();t&&this.opts.reportClientInfo(t)}}K_.editorMap=new WeakMap;class Q_{constructor(t){this.usingBuiltinTooltipManager=!0,this.usingBuiltinSigHelpManager=!0,this.pending=new Set,this.clearErrors=()=>{this.errorPusher.clear()},this.clearFileErrors=t=>{this.errorPusher.clearFileErrors(t)},this.getClient=async t=>this.clientResolver.get(t),this.killAllServers=()=>{Ce(this.clientResolver.restartAllServers())},this.withBuffer=async(t,e)=>{const n=T(t),r=atom.workspace.getTextEditors().find((t=>t.getPath()===n));if(r)return e(r.getBuffer());const i=await w.load(n);try{return await e(i)}finally{i.isModified()&&await i.save(),i.destroy()}},this.reportBusyWhile=async(t,e)=>{if(this.busySignalService)return this.busySignalService.reportBusyWhile(t,e);{const n={title:t};try{return this.pending.add(n),this.drawPending(Array.from(this.pending)),await e()}finally{this.pending.delete(n),this.drawPending(Array.from(this.pending))}}},this.reportProgress=t=>{Ce(this.statusPanel.update({progress:t}))},this.reportBuildStatus=t=>{Ce(this.statusPanel.update({buildStatus:t}))},this.reportClientInfo=t=>{Ce(this.statusPanel.update(t))},this.applyEdits=async t=>{Promise.all(t.map((t=>this.withBuffer(t.fileName,(async e=>{e.transact((()=>{const n=t.textChanges.map((t=>({range:Ie(t),newText:t.newText}))).reverse().sort(((t,e)=>e.range.compare(t.range)));for(const t of n)e.setTextInRange(t.range,t.newText)}))})))))},this.showTooltipAt=async t=>{this.usingBuiltinTooltipManager?this.tooltipManager.showExpressionAt(t):await atom.commands.dispatch(atom.views.getView(t),"datatip:toggle")},this.showSigHelpAt=async t=>{this.usingBuiltinSigHelpManager?await this.sigHelpManager.showTooltipAt(t):await atom.commands.dispatch(atom.views.getView(t),"signature-help:show")},this.hideSigHelpAt=t=>!!this.usingBuiltinSigHelpManager&&this.sigHelpManager.hideTooltipAt(t),this.rotateSigHelp=(t,e)=>!!this.usingBuiltinSigHelpManager&&this.sigHelpManager.rotateSigHelp(t,e),this.histGoForward=(t,e)=>this.editorPosHist.goForward(t,e),this.drawPending=Pe.throttle((t=>Ce(this.statusPanel.update({pending:t}))),100,{leading:!1}),this.subscriptions=new g,this.clientResolver=new Er(this.reportBusyWhile),this.subscriptions.add(this.clientResolver),this.statusPanel=new E_,this.subscriptions.add(this.statusPanel),this.errorPusher=new V_,this.subscriptions.add(this.errorPusher),this.codefixProvider=new so(this.clientResolver,this.errorPusher,this.applyEdits),this.subscriptions.add(this.codefixProvider),this.semanticViewController=new F_(this.getClient),this.subscriptions.add(this.semanticViewController),this.editorPosHist=new C_(t&&t.editorPosHistState),this.subscriptions.add(this.editorPosHist),this.symbolsViewController=new U_({histGoForward:this.histGoForward,getClient:this.getClient}),this.subscriptions.add(this.symbolsViewController),this.tooltipManager=new L_(this.getClient),this.subscriptions.add(this.tooltipManager),this.sigHelpManager=new j_({getClient:this.getClient}),this.subscriptions.add(this.sigHelpManager),this.occurrenceManager=new A_(this.getClient),this.subscriptions.add(this.occurrenceManager),this.typescriptPaneFactory=K_.createFactory({clearFileErrors:this.clearFileErrors,getClient:this.getClient,reportBuildStatus:this.reportBuildStatus,reportClientInfo:this.reportClientInfo}),this.subscribeEditors(),this.subscriptions.add(b_({getClient:this.getClient,applyEdits:this.applyEdits,clearErrors:this.clearErrors,killAllServers:this.killAllServers,reportProgress:this.reportProgress,reportBuildStatus:this.reportBuildStatus,toggleSemanticViewController:()=>{Ce(this.semanticViewController.toggle())},toggleFileSymbolsView:t=>{this.symbolsViewController.toggleFileView(t)},toggleProjectSymbolsView:t=>{this.symbolsViewController.toggleProjectView(t)},histGoForward:this.histGoForward,histGoBack:()=>this.editorPosHist.goBack(),histShowHistory:()=>this.editorPosHist.showHistory(),showTooltipAt:this.showTooltipAt,showSigHelpAt:this.showSigHelpAt,hideSigHelpAt:this.hideSigHelpAt,rotateSigHelp:this.rotateSigHelp}))}destroy(){this.subscriptions.dispose();for(const t of atom.workspace.getTextEditors()){const e=K_.lookupPane(t);e&&e.destroy()}}serialize(){return{version:"0.1",editorPosHistState:this.editorPosHist.serialize()}}consumeLinter(t){const e=t({name:"TypeScript"});this.errorPusher.setLinter(e),this.subscriptions.add(this.clientResolver.on("diagnostics",(({type:t,filePath:e,diagnostics:n})=>{this.errorPusher.setErrors(t,e,n)})))}consumeStatusBar(t){let e=100;for(const n of t.getRightTiles())"GRAMMAR-SELECTOR-STATUS"===atom.views.getView(n.getItem()).tagName&&(e=n.getPriority()-1);const n=t.addRightTile({item:this.statusPanel,priority:e}),r=new b((()=>{n.destroy()}));return this.subscriptions.add(r),r}consumeDatatipService(t){if(atom.config.get("atom-typescript").preferBuiltinTooltips)return;const e=t.addProvider(new Or(this.getClient));return this.subscriptions.add(e),this.tooltipManager.dispose(),this.usingBuiltinTooltipManager=!1,e}consumeSigHelpService(t){if(atom.config.get("atom-typescript").preferBuiltinSigHelp)return;const e=new Ki(this.getClient),n=t(e);return this.subscriptions.add(n,e),this.sigHelpManager.dispose(),this.usingBuiltinSigHelpManager=!1,n}consumeBusySignal(t){if(atom.config.get("atom-typescript").preferBuiltinBusySignal)return;this.busySignalService=t;const e={dispose:()=>{this.busySignalService&&this.busySignalService.dispose(),this.busySignalService=void 0}};return this.subscriptions.add(e),e}provideAutocomplete(){return[new Zi(this.getClient,this.applyEdits)]}provideIntentions(){return t=this.codefixProvider,{grammarScopes:["*"],getIntentions:async function({bufferPosition:e,textEditor:n}){return(await t.runCodeFix(n,e)).map((e=>({priority:100,title:"description"in e?e.description:e.actionDescription,selected:()=>{Ce(t.applyFix(e))}})))}};var t}provideIntentionsHighlight(){return t=this.codefixProvider,{grammarScopes:["*"],getIntentions:async function({visibleRange:e,textEditor:n}){return(await t.getFixableRanges(n,e)).map((t=>({range:t,created:t=>{}})))}};var t}provideCodeActions(){return t=this.codefixProvider,{grammarScopes:$e(),priority:0,getCodeActions:async function(e,n,r){return(await t.runCodeFix(e,n.start)).map((e=>({getTitle:async()=>"description"in e?e.description:e.actionDescription,dispose:()=>{},apply:async()=>{await t.applyFix(e)}})))}};var t}provideHyperclick(){return t=this.getClient,e=this.histGoForward,{priority:0,providerName:"typescript-hyperclick-provider",wordRegExp:/([A-Za-z0-9_])+|['"`](\\.|[^'"`\\\\])*['"`]/g,getSuggestionForWord:async function(n,r,i){if(!ze(n))return;const o=n.getPath();return void 0!==o?{range:i,callback:async()=>{var r;const s={file:o,line:i.start.row+1,offset:i.start.column+1},a=await t(s.file),u=await a.execute("definition",s),c=u.body?u.body[0]:void 0;if(1===(null===(r=u.body)||void 0===r?void 0:r.length)&&(null==c?void 0:c.start.line)===s.line&&(null==c?void 0:c.start.offset)===s.offset){const t=await a.execute("references",s);await Hi(t,n,e)}else await Ui(u,n,e)}}:void 0}};var t,e}provideReferences(){return t=this.getClient,{isEditorSupported:async function(t){return ze(t)},findReferences:async function(e,n){const r=He(e,n);if(!r)return;const i=await t(r.file),o=await i.execute("references",r);return o.body?{type:"data",baseUri:r.file,referencedSymbolName:o.body.symbolDisplayString,references:o.body.refs.map(Nr)}:void 0}};var t}provideOutlines(){return t=this.getClient,{name:"Atom-TypeScript",grammarScopes:$e(),priority:100,updateOnEdit:!0,getOutline:async function(e){const n=e.getPath();if(void 0===n)return;const r=await t(n),i=(await r.execute("navtree",{file:n})).body;return i?{outlineTrees:[Vi(i)]}:void 0}};var t}provideDefinitions(){var t;if(!atom.config.get("atom-typescript").disableAtomIdeDefinitions)return t=this.getClient,{priority:0,grammarScopes:$e(),wordRegExp:/([A-Za-z0-9_])+|['"`](\\.|[^'"`\\\\])*['"`]/g,getDefinition:async function(e,n){if(!ze(e))return;const r=He(e,n);if(!r)return;const i=await t(r.file),o=await i.execute("definition",r);return o.body&&0!==o.body.length?{queryRange:void 0,definitions:o.body.map(jr)}:void 0}}}provideCodeHighlight(){if(!atom.config.get("atom-typescript").preferBuiltinOccurrenceHighlight)return this.occurrenceManager.dispose(),Cr(this.getClient)}subscribeEditors(){this.subscriptions.add(atom.workspace.observeTextEditors((t=>{this.typescriptPaneFactory(t)})),atom.workspace.onDidChangeActiveTextEditor((t=>{if(t&&ze(t)){Ce(this.statusPanel.show());const e=K_.lookupPane(t);e&&e.didActivate()}else Ce(this.statusPanel.hide())})))}}let Z_;exports.activate=function(t){Ee.setScheduler(atom.views),Z_=new Q_(t),s((()=>Ce(async function(){["atom-ide-ui","linter","nuclide"].some((t=>atom.packages.isPackageLoaded(t)))||await tt.install("atom-typescript",!0)}())))},exports.deactivate=function(){Z_&&Z_.destroy(),Z_=void 0},exports.serialize=function(){return Z_?Z_.serialize():void 0},exports.deserializeSemanticView=function(t){return Ye.create(t.data)},exports.consumeLinter=function(t){if(Z_)return Z_.consumeLinter(t)},exports.consumeStatusBar=function(t){if(Z_)return Z_.consumeStatusBar(t)},exports.consumeDatatipService=function(t){if(Z_)return Z_.consumeDatatipService(t)},exports.consumeSignatureHelp=function(t){if(Z_)return Z_.consumeSigHelpService(t)},exports.consumeBusySignal=function(t){if(Z_)return Z_.consumeBusySignal(t)},exports.provideAutocomplete=function(){if(Z_)return Z_.provideAutocomplete()},exports.provideIntentions=function(){if(Z_)return Z_.provideIntentions()},exports.provideIntentionsHighlight=function(){if(Z_)return Z_.provideIntentionsHighlight()},exports.provideCodeActions=function(){if(Z_)return Z_.provideCodeActions()},exports.provideHyperclick=function(){if(Z_)return Z_.provideHyperclick()},exports.provideReferences=function(){if(Z_)return Z_.provideReferences()},exports.provideOutlines=function(){if(Z_)return Z_.provideOutlines()},exports.provideDefinitions=function(){if(Z_)return Z_.provideDefinitions()},exports.provideCodeHighlight=function(){if(Z_)return Z_.provideCodeHighlight()}; //# sourceMappingURL=main.js.map diff --git a/dist/main.js.map b/dist/main.js.map index a28f8c164..f3f796312 100644 --- a/dist/main.js.map +++ b/dist/main.js.map @@ -1 +1 @@ -{"mappings":"IAQgCA,EAAMC,wKAAND,KAAMC,IACpCC,OAAOC,KAAKF,GAAQG,SAAQ,SAASC,GACvB,YAARA,GAA6B,eAARA,GAIzBH,OAAOI,eAAeN,EAAMK,EAAK,CAC/BE,YAAY,EACZC,IAAK,WACH,OAAOP,EAAOI,SAKbL,qMAtBT,SAASS,EAAuBC,GAC9B,OAAOA,GAAKA,EAAEC,WAAaD,EAAEE,QAAUF,EA8BzC,MAAIG,EACoB,oBAAfC,WACHA,WACgB,oBAATC,KACPA,KACkB,oBAAXC,OACPA,OACkB,oBAAXC,OACPA,OACA,QCxCOf,OAAOI,eAAPY,EAA8B,aAAa,CAACC,OAAM,iBCAlD,SAASC,EAAEA,GAAG,OAAOA,GAAG,iBAAiBA,GAAG,YAAYA,EAAEA,EAAER,QAAQQ,EAAE,IAAIC,EAAED,EAACE,GAAoBC,EAAEH,EAACI,GAAgBC,EAAEL,EAACM,GAAkBC,EAAEP,EAACQ,GAAsH,SAASC,EAAET,EAAEC,EAAEE,GAAG,OAAOH,EAAEG,EAAE,CAACO,KAAKT,EAAEU,QAAQ,GAAGC,QAAQ,SAASZ,EAAEC,GAAG,OAAO,WAAW,MAAM,IAAIY,MAAM,2EAA3B,CAAuG,MAAMZ,GAAGE,EAAEO,QAAQP,EAAEQ,SAASR,EAAEQ,QAAQ,IAArTX,EAAyTV,EAAEmB,GAAG,SAAST,EAAEC,GAAGD,EAAEW,QAAQ,SAASX,GAAG,IAAI,IAAIC,EAAE,EAAEA,EAAED,EAAEc,QAAQ,GAAG,GAAGd,EAAEC,IAAI,IAAID,EAAEC,IAAI,IAAID,EAAEC,IAAI,IAAID,EAAEC,IAAID,EAAEC,IAAI,IAAIA,GAAG,OAAO,GAAG,KAAKD,EAAEC,IAAID,EAAEC,IAAI,KAAK,KAAKD,EAAEC,EAAE,IAAID,EAAEC,EAAE,IAAI,IAAIA,GAAG,OAAO,GAAG,KAAKD,EAAEC,IAAI,KAAKD,EAAEC,EAAE,IAAID,EAAEC,EAAE,IAAI,KAAK,KAAKD,EAAEC,EAAE,IAAID,EAAEC,EAAE,IAAI,MAAM,KAAKD,EAAEC,IAAID,EAAEC,IAAI,KAAK,KAAKD,EAAEC,IAAI,KAAKD,EAAEC,KAAK,KAAKD,EAAEC,EAAE,IAAID,EAAEC,EAAE,IAAI,KAAK,KAAKD,EAAEC,EAAE,IAAID,EAAEC,EAAE,IAAI,KAAK,KAAKD,EAAEC,IAAI,KAAKD,EAAEC,EAAE,IAAID,EAAEC,EAAE,IAAI,KAAK,KAAKD,EAAEC,EAAE,IAAID,EAAEC,EAAE,IAAI,IAAIA,GAAG,MAAM,CAAC,KAAK,KAAKD,EAAEC,IAAI,KAAKD,EAAEC,EAAE,IAAID,EAAEC,EAAE,IAAI,KAAK,KAAKD,EAAEC,EAAE,IAAID,EAAEC,EAAE,IAAI,KAAK,KAAKD,EAAEC,EAAE,IAAID,EAAEC,EAAE,IAAI,KAAK,KAAKD,EAAEC,IAAID,EAAEC,IAAI,KAAK,KAAKD,EAAEC,EAAE,IAAID,EAAEC,EAAE,IAAI,KAAK,KAAKD,EAAEC,EAAE,IAAID,EAAEC,EAAE,IAAI,KAAK,KAAKD,EAAEC,EAAE,IAAID,EAAEC,EAAE,IAAI,KAAK,KAAKD,EAAEC,IAAI,KAAKD,EAAEC,EAAE,IAAID,EAAEC,EAAE,IAAI,KAAK,KAAKD,EAAEC,EAAE,IAAID,EAAEC,EAAE,IAAI,KAAK,KAAKD,EAAEC,EAAE,IAAID,EAAEC,EAAE,IAAI,KAAK,OAAM,EAAGA,GAAG,EAAE,OAAM,MAAOc,EAAEf,IAAI,IAAIgB,OAAOC,SAASjB,GAAG,MAAM,IAAIkB,UAAU,iCAAiClB,GAAG,OAAO,MAAMA,EAAE,IAAI,MAAMA,EAAE,IAAI,MAAMA,EAAE,IAAIV,EAAEU,GAAGA,EAAEmB,MAAM,GAAGnB,GAAGoB,GAAzqCpB,EAA6qCS,GAAG,SAAST,GAAG,IAAIC,EAAEoB,EAAElB,GAAGI,EAAEc,EAAEN,GAAG,SAASM,EAAErB,GAAG,OAAOA,GAAGA,EAAET,WAAWS,EAAE,CAACR,QAAQQ,GAAG,MAAMS,EAAE,GAAGnB,EAAE,CAAC,QAAQ,mBAAmB,QAAQ,YAAY,eAAeR,OAAOC,KAAKkB,EAAET,SAASR,SAAS,SAASgB,GAAG,MAAMG,EAAEF,EAAET,QAAQQ,GAAG,mBAAmBG,GAAGH,EAAEsB,SAAS,SAAStB,EAAEsB,SAAS,WAAWhC,EAAEgC,SAAStB,GAAGS,EAAET,GAAGG,EAAEM,EAAET,IAAG,EAAGK,EAAEkB,WAAWpB,MAAMM,EAAEe,OAAO,SAASxB,GAAG,OAAO,IAAIyB,SAAS,SAAStB,GAAGF,EAAET,QAAQkC,OAAO1B,EAAEC,EAAET,QAAQmC,MAAM,SAAS3B,GAAGG,EAAE,OAAOH,UAAUS,EAAEmB,SAAS,SAAS5B,EAAEG,GAAG,OAAO,IAAIsB,SAAS,SAASpB,EAAEgB,GAAGpB,EAAET,QAAQoC,SAAS5B,GAAG,SAASA,EAAEC,GAAG,GAAGD,EAAE,YAAYqB,EAAErB,GAAG,IAAIS,GAAE,EAAGF,EAAEf,SAASS,GAAGE,IAAIM,EAAEA,EAAEoB,SAAS1B,IAAIE,EAAEI,UAAUT,EAAEW,QAAQF,OAA/xDT,EAAET,YAAYT,OAAOgD,UAAUC,eAAeC,KAAKhC,EAAE,WAAWA,EAAER,QAAQQ,EAA+tDiC,EAAE,CAACC,oBAAoB,QAAQC,WAAW,IAAIC,iBAAiBC,OAAOD,kBAAkB,iBAAiBE,0BAA0B,IAAQC,EAAE,iBAAiBC,SAASA,QAAQC,KAAKD,QAAQC,IAAIC,YAAY,cAAcC,KAAKH,QAAQC,IAAIC,YAAY,IAAI1C,OAAO,OAAO4C,EAAEnC,GAAG,SAAST,EAAEC,GAAG,MAAMqC,0BAA0BnC,GAAG8B,EAAE5B,GAAGJ,EAAED,EAAEW,QAAQ,IAAIkC,GAAG,GAAGtC,EAAEN,EAAE6C,IAAI,GAAGzB,EAAEpB,EAAEE,EAAE,GAAG,IAAIM,EAAE,EAAE,MAAMnB,EAAE,CAACU,EAAEC,EAAEE,KAAK,MAAMb,EAAEmB,IAAI8B,EAAEjD,EAAEW,GAAGoB,EAAErB,GAAGV,EAAEiB,EAAEjB,GAAGW,EAAEI,EAAEf,GAAG,IAAIyD,OAAO9C,EAAEE,EAAE,SAAI,IAASb,EAAE,oBAAoB,eAAeA,EAAE,yBAAyB,UAAUA,EAAE,uBAAuB,8BAA8BA,EAAE,cAAe,IAAGiB,EAAEc,EAAE2B,0BAA0BzC,EAAEc,EAAE2B,0BAA0BzC,EAAEc,EAAE2B,uBAAuB1D,EAAE,mBAAoB,IAAGiB,EAAEc,EAAE4B,+BAA+B1C,EAAEc,EAAE4B,+BAA+B1C,EAAEc,EAAE4B,4BAA4B3D,EAAE,uBAAwB,MAAKiB,EAAEc,EAAE2B,sBAAsBzC,EAAEc,EAAE6B,0BAA0B5D,EAAE,4BAA6B,MAAKiB,EAAEc,EAAE4B,2BAA2B1C,EAAEc,EAAE6B,0BAA0B5D,EAAE,aAAc,QAAOiB,EAAEc,EAAE8B,8BAA8B5C,EAAEc,EAAE8B,6BAA6B7D,EAAE,kBAAmB,SAAQiB,EAAEc,EAAE+B,mCAAmC7C,EAAEc,EAAE+B,kCAAkC9D,EAAE,kBAAkB,iBAAiBA,EAAE,QAAS,UAASiB,EAAEc,EAAEgC,yBAAyB9C,EAAEc,EAAEgC,wBAAwB/D,EAAE,YAAa,KAAIiB,EAAEc,EAAEiC,eAAe/C,EAAEc,EAAEkC,eAAehD,EAAEc,EAAEmC,WAAWlE,EAAE,OAAQ,IAAGiB,EAAEc,EAAEoC,eAAenE,EAAE,aAAc,WAAUiB,EAAEc,EAAEqC,oBAAoBnD,EAAEc,EAAEsC,oBAAoBpD,EAAEc,EAAEmC,WAAWlE,EAAE,QAAS,IAAGiB,EAAEc,EAAEuC,gBAAgBtE,EAAE,OAAO,gBAAgBA,EAAE,wBAAwBiB,EAAEc,EAAE4B,wBAAwB,YAAY3D,EAAE,mBAAmBiB,EAAEc,EAAE2B,mBAAmB,YAAY1D,EAAE,cAAe,YAAWiB,EAAEc,EAAEwC,4BAA4BtD,EAAEc,EAAEwC,4BAA4BtD,EAAEc,EAAEwC,wBAAwBtD,EAAEc,EAAEkC,gBAAgBhD,EAAEc,EAAEmC,eAAelE,EAAE,mBAAoB,YAAWiB,EAAEc,EAAEyC,iCAAiCvD,EAAEc,EAAEyC,iCAAiCvD,EAAEc,EAAEyC,6BAA6BvD,EAAEc,EAAEsC,qBAAqBpD,EAAEc,EAAEmC,eAAelE,EAAE,SAAU,IAAGiB,EAAEc,EAAE0C,YAAYxD,EAAEc,EAAE2C,iBAAiB1E,EAAE,cAAe,IAAGiB,EAAEc,EAAE0C,YAAYxD,EAAEc,EAAE4C,sBAAsB3E,EAAE,SAAU,oBAAmBa,mBAAmBA,qBAAqBA,qBAAqBb,EAAE,YAAYiB,EAAEc,EAAE6C,SAAQ,GAAI5E,EAAE,YAAY,WAAWA,EAAE,YAAa,SAAQiB,EAAEc,EAAE8C,kBAAiB,GAAIlE,EAAEmE,iBAAiB,MAAM9E,EAAE,QAAS,IAAGiB,EAAEc,EAAE8C,aAAa5D,EAAEc,EAAE2C,iBAAiB1E,EAAE,aAAc,IAAGiB,EAAEc,EAAE8C,aAAa5D,EAAEc,EAAE4C,sBAAsB3E,EAAE,YAAY,WAAWA,EAAE,YAAa,SAAQiB,EAAEc,EAAEgD,kBAAiB,GAAIpE,EAAEqE,iBAAiB,MAAMhF,EAAE,QAAS,IAAGiB,EAAEc,EAAEgD,aAAa9D,EAAEc,EAAE2C,iBAAiB1E,EAAE,aAAc,IAAGiB,EAAEc,EAAEgD,aAAa9D,EAAEc,EAAE4C,sBAAsB3E,EAAE,kBAAmB,IAAGiB,EAAEc,EAAE0C,aAAaxD,EAAEc,EAAEuC,oBAAoBtE,EAAE,aAAc,IAAGiB,EAAEc,EAAE0C,aAAaxD,EAAEc,EAAEoC,mBAAmBnE,EAAE,iBAAkB,SAAQiB,EAAEc,EAAE0C,aAAaxD,EAAEc,EAAEuC,eAAerD,EAAEc,EAAE2C,iBAAgB,GAAI/D,EAAEsE,sBAAsB,SAASjF,EAAE,cAAe,SAAQiB,EAAEc,EAAE2C,0BAA0BzD,EAAEc,EAAE2C,sBAAsB1E,EAAE,mBAAoB,SAAQiB,EAAEc,EAAE4C,+BAA+B1D,EAAEc,EAAE4C,2BAA2B3E,EAAE,OAAO,mBAAmBA,EAAE,OAAO,yBAAyBA,EAAE,UAAU,8BAA8B,MAAMkF,EAAE,WAAWC,EAAE,CAACzE,EAAEC,KAAK,MAAME,EAAEqE,EAAE7B,KAAK3C,GAAGK,EAAEmE,EAAE7B,KAAK1C,GAAG,OAAOE,GAAGE,IAAIL,GAAGA,EAAEC,GAAGA,GAAGD,IAAIC,EAAE,EAAEE,IAAIE,GAAG,EAAEA,IAAIF,EAAE,EAAEH,EAAEC,GAAG,EAAE,GAAG,IAAIyE,EAAE,CAACC,mBAAmBF,EAAEG,oBAAoB,CAAC5E,EAAEC,IAAIwE,EAAExE,EAAED,IAAI,MAAMmC,WAAW0C,EAAEzC,iBAAiB0C,GAAG7C,GAAGY,GAAGkC,EAAE5E,EAAE6E,GAAGpC,GAAG+B,mBAAmBM,GAAGP,EAAE,MAAMQ,EAAEC,YAAYnF,EAAEC,GAAG,GAAGA,GAAG,iBAAiBA,IAAIA,EAAE,CAACmF,QAAQnF,EAAEoF,mBAAkB,IAAKrF,aAAakF,EAAE,CAAC,GAAGlF,EAAEoF,UAAUnF,EAAEmF,OAAOpF,EAAEqF,sBAAsBpF,EAAEoF,kBAAkB,OAAOrF,EAAEA,EAAEA,EAAEsF,aAAa,GAAG,iBAAiBtF,EAAE,MAAM,IAAIkB,UAAU,oBAAoBlB,GAAG,GAAGA,EAAEc,OAAO+D,EAAE,MAAM,IAAI3D,UAAW,0BAAyB2D,gBAAgBtC,EAAE,SAASvC,EAAEC,GAAGsF,KAAKC,QAAQvF,EAAEsF,KAAKH,QAAQnF,EAAEmF,MAAMG,KAAKF,oBAAoBpF,EAAEoF,kBAAkB,MAAMlF,EAAEH,EAAEyF,OAAOC,MAAMzF,EAAEmF,MAAML,EAAEC,EAAEW,OAAOZ,EAAEC,EAAEY,OAAO,IAAIzF,EAAE,MAAM,IAAIe,UAAU,oBAAoBlB,GAAG,GAAGuF,KAAKM,IAAI7F,EAAEuF,KAAKO,OAAO3F,EAAE,GAAGoF,KAAKQ,OAAO5F,EAAE,GAAGoF,KAAKS,OAAO7F,EAAE,GAAGoF,KAAKO,MAAMhB,GAAGS,KAAKO,MAAM,EAAE,MAAM,IAAI5E,UAAU,yBAAyB,GAAGqE,KAAKQ,MAAMjB,GAAGS,KAAKQ,MAAM,EAAE,MAAM,IAAI7E,UAAU,yBAAyB,GAAGqE,KAAKS,MAAMlB,GAAGS,KAAKS,MAAM,EAAE,MAAM,IAAI9E,UAAU,yBAAyBf,EAAE,GAAGoF,KAAKU,WAAW9F,EAAE,GAAG+F,MAAM,KAAKC,KAAInG,IAAI,GAAG,WAAW2C,KAAK3C,GAAG,CAAC,MAAMC,GAAGD,EAAE,GAAGC,GAAG,GAAGA,EAAE6E,EAAE,OAAO7E,EAAE,OAAOD,KAAIuF,KAAKU,WAAW,GAAGV,KAAKa,MAAMjG,EAAE,GAAGA,EAAE,GAAG+F,MAAM,KAAK,GAAGX,KAAKc,SAASA,SAAS,OAAOd,KAAKD,QAAS,GAAEC,KAAKO,SAASP,KAAKQ,SAASR,KAAKS,QAAQT,KAAKU,WAAWnF,SAASyE,KAAKD,SAAS,IAAIC,KAAKU,WAAWK,KAAK,MAAMf,KAAKD,QAAQzD,WAAW,OAAO0D,KAAKD,QAAQiB,QAAQvG,GAAG,GAAGuC,EAAE,iBAAiBgD,KAAKD,QAAQC,KAAKC,QAAQxF,KAAKA,aAAakF,GAAG,CAAC,GAAG,iBAAiBlF,GAAGA,IAAIuF,KAAKD,QAAQ,OAAO,EAAEtF,EAAE,IAAIkF,EAAElF,EAAEuF,KAAKC,SAAS,OAAOxF,EAAEsF,UAAUC,KAAKD,QAAQ,EAAEC,KAAKiB,YAAYxG,IAAIuF,KAAKkB,WAAWzG,GAAGwG,YAAYxG,GAAG,OAAOA,aAAakF,IAAIlF,EAAE,IAAIkF,EAAElF,EAAEuF,KAAKC,UAAUP,EAAEM,KAAKO,MAAM9F,EAAE8F,QAAQb,EAAEM,KAAKQ,MAAM/F,EAAE+F,QAAQd,EAAEM,KAAKS,MAAMhG,EAAEgG,OAAOS,WAAWzG,GAAG,GAAGA,aAAakF,IAAIlF,EAAE,IAAIkF,EAAElF,EAAEuF,KAAKC,UAAUD,KAAKU,WAAWnF,SAASd,EAAEiG,WAAWnF,OAAO,OAAO,EAAE,IAAIyE,KAAKU,WAAWnF,QAAQd,EAAEiG,WAAWnF,OAAO,OAAO,EAAE,IAAIyE,KAAKU,WAAWnF,SAASd,EAAEiG,WAAWnF,OAAO,OAAO,EAAE,IAAIb,EAAE,EAAE,EAAE,CAAC,MAAME,EAAEoF,KAAKU,WAAWhG,GAAGI,EAAEL,EAAEiG,WAAWhG,GAAG,GAAGsC,EAAE,qBAAqBtC,EAAEE,EAAEE,QAAG,IAASF,QAAG,IAASE,EAAE,OAAO,EAAE,QAAG,IAASA,EAAE,OAAO,EAAE,QAAG,IAASF,EAAE,OAAO,EAAE,GAAGA,IAAIE,EAAE,OAAO4E,EAAE9E,EAAEE,WAAWJ,GAAGyG,aAAa1G,GAAGA,aAAakF,IAAIlF,EAAE,IAAIkF,EAAElF,EAAEuF,KAAKC,UAAU,IAAIvF,EAAE,EAAE,EAAE,CAAC,MAAME,EAAEoF,KAAKa,MAAMnG,GAAGI,EAAEL,EAAEoG,MAAMnG,GAAG,GAAGsC,EAAE,qBAAqBtC,EAAEE,EAAEE,QAAG,IAASF,QAAG,IAASE,EAAE,OAAO,EAAE,QAAG,IAASA,EAAE,OAAO,EAAE,QAAG,IAASF,EAAE,OAAO,EAAE,GAAGA,IAAIE,EAAE,OAAO4E,EAAE9E,EAAEE,WAAWJ,GAAG0G,IAAI3G,EAAEC,GAAG,OAAOD,GAAG,IAAI,WAAWuF,KAAKU,WAAWnF,OAAO,EAAEyE,KAAKS,MAAM,EAAET,KAAKQ,MAAM,EAAER,KAAKO,QAAQP,KAAKoB,IAAI,MAAM1G,GAAG,MAAM,IAAI,WAAWsF,KAAKU,WAAWnF,OAAO,EAAEyE,KAAKS,MAAM,EAAET,KAAKQ,QAAQR,KAAKoB,IAAI,MAAM1G,GAAG,MAAM,IAAI,WAAWsF,KAAKU,WAAWnF,OAAO,EAAEyE,KAAKoB,IAAI,QAAQ1G,GAAGsF,KAAKoB,IAAI,MAAM1G,GAAG,MAAM,IAAI,aAAa,IAAIsF,KAAKU,WAAWnF,QAAQyE,KAAKoB,IAAI,QAAQ1G,GAAGsF,KAAKoB,IAAI,MAAM1G,GAAG,MAAM,IAAI,QAAQ,IAAIsF,KAAKQ,OAAO,IAAIR,KAAKS,OAAO,IAAIT,KAAKU,WAAWnF,QAAQyE,KAAKO,QAAQP,KAAKQ,MAAM,EAAER,KAAKS,MAAM,EAAET,KAAKU,WAAW,GAAG,MAAM,IAAI,QAAQ,IAAIV,KAAKS,OAAO,IAAIT,KAAKU,WAAWnF,QAAQyE,KAAKQ,QAAQR,KAAKS,MAAM,EAAET,KAAKU,WAAW,GAAG,MAAM,IAAI,QAAQ,IAAIV,KAAKU,WAAWnF,QAAQyE,KAAKS,QAAQT,KAAKU,WAAW,GAAG,MAAM,IAAI,MAAM,GAAG,IAAIV,KAAKU,WAAWnF,OAAOyE,KAAKU,WAAW,CAAC,OAAO,CAAC,IAAIjG,EAAEuF,KAAKU,WAAWnF,OAAO,OAAOd,GAAG,GAAG,iBAAiBuF,KAAKU,WAAWjG,KAAKuF,KAAKU,WAAWjG,KAAKA,GAAG,IAAI,IAAIA,GAAGuF,KAAKU,WAAWW,KAAK,GAAG3G,IAAIsF,KAAKU,WAAW,KAAKhG,EAAE4G,MAAMtB,KAAKU,WAAW,MAAMV,KAAKU,WAAW,CAAChG,EAAE,IAAIsF,KAAKU,WAAW,CAAChG,EAAE,IAAI,MAAM,QAAQ,MAAM,IAAIY,MAAM,+BAA+Bb,GAAG,OAAOuF,KAAKc,SAASd,KAAKM,IAAIN,KAAKD,QAAQC,MAAM,IAAIuB,EAAE5B,EAAM6B,GAAE,CAAC/G,EAAEC,EAAEE,IAAI,IAAI2G,EAAE9G,EAAEG,GAAGoG,QAAQ,IAAIO,EAAE7G,EAAEE,IAA0K6G,GAAE,CAAChH,EAAEC,EAAEE,EAAEE,KAAK,OAAOJ,GAAG,IAAI,MAAM,MAAM,iBAAiBD,IAAIA,EAAEA,EAAEsF,SAAS,iBAAiBnF,IAAIA,EAAEA,EAAEmF,SAAStF,IAAIG,EAAE,IAAI,MAAM,MAAM,iBAAiBH,IAAIA,EAAEA,EAAEsF,SAAS,iBAAiBnF,IAAIA,EAAEA,EAAEmF,SAAStF,IAAIG,EAAE,IAAI,GAAG,IAAI,IAAI,IAAI,KAAK,MAApY,EAACH,EAAEC,EAAEE,IAAI,IAAI4G,GAAE/G,EAAEC,EAAEE,GAAwX8G,CAAEjH,EAAEG,EAAEE,GAAG,IAAI,KAAK,MAAjY,EAACL,EAAEC,EAAEE,IAAI,IAAI4G,GAAE/G,EAAEC,EAAEE,GAAqX+G,CAAElH,EAAEG,EAAEE,GAAG,IAAI,IAAI,MAA7X,EAACL,EAAEC,EAAEE,IAAI4G,GAAE/G,EAAEC,EAAEE,GAAG,EAAkXgH,CAAEnH,EAAEG,EAAEE,GAAG,IAAI,KAAK,MAA5X,EAACL,EAAEC,EAAEE,IAAI4G,GAAE/G,EAAEC,EAAEE,IAAI,EAAgXiH,CAAEpH,EAAEG,EAAEE,GAAG,IAAI,IAAI,MAAzX,EAACL,EAAEC,EAAEE,IAAI4G,GAAE/G,EAAEC,EAAEE,GAAG,EAA8WkH,CAAErH,EAAEG,EAAEE,GAAG,IAAI,KAAK,MAAxX,EAACL,EAAEC,EAAEE,IAAI4G,GAAE/G,EAAEC,EAAEE,IAAI,EAA4WmH,CAAEtH,EAAEG,EAAEE,GAAG,QAAQ,MAAM,IAAIa,UAAU,qBAAqBjB,KAAK,MAAMsH,GAAEC,OAAO,cAAc,MAAMC,GAAEC,iBAAiB,OAAOH,GAAEpC,YAAYnF,EAAEC,GAAG,GAAGA,GAAG,iBAAiBA,IAAIA,EAAE,CAACmF,QAAQnF,EAAEoF,mBAAkB,IAAKrF,aAAayH,GAAE,CAAC,GAAGzH,EAAEoF,UAAUnF,EAAEmF,MAAM,OAAOpF,EAAEA,EAAEA,EAAED,MAAMwC,EAAE,aAAavC,EAAEC,GAAGsF,KAAKC,QAAQvF,EAAEsF,KAAKH,QAAQnF,EAAEmF,MAAMG,KAAKoC,MAAM3H,GAAGuF,KAAKqC,SAASL,GAAEhC,KAAKxF,MAAM,GAAGwF,KAAKxF,MAAMwF,KAAKsC,SAAStC,KAAKqC,OAAOtC,QAAQ/C,EAAE,OAAOgD,MAAMoC,MAAM3H,GAAG,MAAMC,EAAEsF,KAAKC,QAAQJ,MAAM0C,GAAEC,GAAEC,iBAAiBF,GAAEC,GAAEE,YAAY9H,EAAEH,EAAE0F,MAAMzF,GAAG,IAAIE,EAAE,MAAM,IAAIe,UAAU,uBAAuBlB,GAAGuF,KAAKsC,cAAS,IAAS1H,EAAE,GAAGA,EAAE,GAAG,GAAG,MAAMoF,KAAKsC,WAAWtC,KAAKsC,SAAS,IAAI1H,EAAE,GAAGoF,KAAKqC,OAAO,IAAId,EAAE3G,EAAE,GAAGoF,KAAKC,QAAQJ,OAAOG,KAAKqC,OAAOL,GAAE1F,WAAW,OAAO0D,KAAKxF,MAAM4C,KAAK3C,GAAG,GAAGuC,EAAE,kBAAkBvC,EAAEuF,KAAKC,QAAQJ,OAAOG,KAAKqC,SAASL,IAAGvH,IAAIuH,GAAE,OAAM,EAAG,GAAG,iBAAiBvH,EAAE,IAAIA,EAAE,IAAI8G,EAAE9G,EAAEuF,KAAKC,SAAS,MAAMxF,GAAG,OAAM,EAAG,OAAOgH,GAAEhH,EAAEuF,KAAKsC,SAAStC,KAAKqC,OAAOrC,KAAKC,SAAS0C,WAAWlI,EAAEC,GAAG,KAAKD,aAAayH,IAAG,MAAM,IAAIvG,UAAU,4BAA4B,GAAGjB,GAAG,iBAAiBA,IAAIA,EAAE,CAACmF,QAAQnF,EAAEoF,mBAAkB,IAAK,KAAKE,KAAKsC,SAAS,MAAM,KAAKtC,KAAKxF,OAAO,IAAIoI,GAAEnI,EAAED,MAAME,GAAG0C,KAAK4C,KAAKxF,OAAO,GAAG,KAAKC,EAAE6H,SAAS,MAAM,KAAK7H,EAAED,OAAO,IAAIoI,GAAE5C,KAAKxF,MAAME,GAAG0C,KAAK3C,EAAE4H,QAAQ,MAAMzH,IAAI,OAAOoF,KAAKsC,UAAU,MAAMtC,KAAKsC,UAAU,OAAO7H,EAAE6H,UAAU,MAAM7H,EAAE6H,UAAUxH,IAAI,OAAOkF,KAAKsC,UAAU,MAAMtC,KAAKsC,UAAU,OAAO7H,EAAE6H,UAAU,MAAM7H,EAAE6H,UAAUtH,EAAEgF,KAAKqC,OAAOtC,UAAUtF,EAAE4H,OAAOtC,QAAQjE,IAAI,OAAOkE,KAAKsC,UAAU,OAAOtC,KAAKsC,UAAU,OAAO7H,EAAE6H,UAAU,OAAO7H,EAAE6H,UAAUpH,EAAEuG,GAAEzB,KAAKqC,OAAO,IAAI5H,EAAE4H,OAAO3H,KAAK,OAAOsF,KAAKsC,UAAU,MAAMtC,KAAKsC,YAAY,OAAO7H,EAAE6H,UAAU,MAAM7H,EAAE6H,UAAUvI,EAAE0H,GAAEzB,KAAKqC,OAAO,IAAI5H,EAAE4H,OAAO3H,KAAK,OAAOsF,KAAKsC,UAAU,MAAMtC,KAAKsC,YAAY,OAAO7H,EAAE6H,UAAU,MAAM7H,EAAE6H,UAAU,OAAO1H,GAAGE,GAAGE,GAAGc,GAAGZ,GAAGnB,GAAG,IAAI8I,GAAEX,GAAE,MAAM5E,GAAGiF,GAAE3H,EAAE4H,IAAGnF,EAAE,MAAMyF,GAAElD,YAAYnF,EAAEC,GAAG,GAAGA,GAAG,iBAAiBA,IAAIA,EAAE,CAACmF,QAAQnF,EAAEoF,mBAAkB,IAAKrF,aAAaqI,GAAE,OAAOrI,EAAEoF,UAAUnF,EAAEmF,OAAOpF,EAAEqF,sBAAsBpF,EAAEoF,kBAAkBrF,EAAE,IAAIqI,GAAErI,EAAE6F,IAAI5F,GAAG,GAAGD,aAAaoI,GAAE,OAAO7C,KAAKM,IAAI7F,EAAED,MAAMwF,KAAK+C,IAAI,CAAC,CAACtI,IAAIuF,KAAKc,SAASd,KAAK,GAAGA,KAAKC,QAAQvF,EAAEsF,KAAKH,QAAQnF,EAAEmF,MAAMG,KAAKF,oBAAoBpF,EAAEoF,kBAAkBE,KAAKM,IAAI7F,EAAEuF,KAAK+C,IAAItI,EAAEkG,MAAM,cAAcC,KAAInG,GAAGuF,KAAKgD,WAAWvI,EAAEyF,UAAS+C,QAAOxI,GAAGA,EAAEc,UAASyE,KAAK+C,IAAIxH,OAAO,MAAM,IAAII,UAAU,yBAAyBlB,GAAGuF,KAAKc,SAASA,SAAS,OAAOd,KAAKkD,MAAMlD,KAAK+C,IAAInC,KAAInG,GAAGA,EAAEsG,KAAK,KAAKb,SAAQa,KAAK,MAAMb,OAAOF,KAAKkD,MAAM5G,WAAW,OAAO0D,KAAKkD,MAAMF,WAAWvI,GAAG,MAAMC,EAAEsF,KAAKC,QAAQJ,MAAMpF,EAAEA,EAAEyF,OAAO,MAAMtF,EAAEF,EAAEyI,GAAEC,GAAEC,kBAAkBF,GAAEC,GAAEE,aAAa7I,EAAEA,EAAE8I,QAAQ3I,EAAE4I,GAAGxD,KAAKC,QAAQH,oBAAoB9C,EAAE,iBAAiBvC,GAAGA,EAAEA,EAAE8I,QAAQJ,GAAEC,GAAEK,gBAAgBC,IAAG1G,EAAE,kBAAkBvC,EAAE0I,GAAEC,GAAEK,iBAAiBhJ,GAAGA,GAAGA,EAAEA,EAAE8I,QAAQJ,GAAEC,GAAEO,WAAWC,KAAIL,QAAQJ,GAAEC,GAAES,WAAWC,KAAInD,MAAM,OAAOI,KAAK,KAAK,MAAMjG,EAAEJ,EAAEyI,GAAEC,GAAEX,iBAAiBU,GAAEC,GAAEV,YAAY,OAAOjI,EAAEkG,MAAM,KAAKC,KAAInG,GAAGsJ,GAAEtJ,EAAEuF,KAAKC,WAAUc,KAAK,KAAKJ,MAAM,OAAOC,KAAInG,GAAGuJ,GAAEvJ,EAAEuF,KAAKC,WAAUgD,OAAOjD,KAAKC,QAAQJ,MAAMpF,KAAKA,EAAE0F,MAAMrF,GAAG,KAAI,GAAI8F,KAAInG,GAAG,IAAIoI,GAAEpI,EAAEuF,KAAKC,WAAU0C,WAAWlI,EAAEC,GAAG,KAAKD,aAAaqI,IAAG,MAAM,IAAInH,UAAU,uBAAuB,OAAOqE,KAAK+C,IAAIkB,MAAKrJ,GAAGsJ,GAAEtJ,EAAEF,IAAID,EAAEsI,IAAIkB,MAAKxJ,GAAGyJ,GAAEzJ,EAAEC,IAAIE,EAAEuJ,OAAMvJ,GAAGH,EAAE0J,OAAM1J,GAAGG,EAAE+H,WAAWlI,EAAEC,WAAO0C,KAAK3C,GAAG,IAAIA,EAAE,OAAM,EAAG,GAAG,iBAAiBA,EAAE,IAAIA,EAAE,IAAI8G,EAAE9G,EAAEuF,KAAKC,SAAS,MAAMxF,GAAG,OAAM,EAAG,IAAI,IAAIC,EAAE,EAAEA,EAAEsF,KAAK+C,IAAIxH,OAAOb,IAAI,GAAG4C,GAAG0C,KAAK+C,IAAIrI,GAAGD,EAAEuF,KAAKC,SAAS,OAAM,EAAG,OAAM,GAAI,IAAI2C,GAAEE,GAAE,MAAMxF,GAAG6F,GAAEvI,EAAEwI,GAAEpE,sBAAsB0E,GAAE7E,iBAAiB+E,GAAE7E,iBAAiB+E,IAAGzG,EAAE6G,GAAE,CAACzJ,EAAEC,KAAK,IAAIE,GAAE,EAAG,MAAME,EAAEL,EAAEmB,QAAQ,IAAIZ,EAAEF,EAAEsJ,MAAM,KAAKxJ,GAAGE,EAAES,QAAQX,EAAEE,EAAEqJ,OAAM1J,GAAGO,EAAE2H,WAAWlI,EAAEC,KAAIM,EAAEF,EAAEsJ,MAAM,OAAOxJ,GAAGmJ,GAAE,CAACtJ,EAAEC,KAAKsC,EAAE,OAAOvC,EAAEC,GAAGD,EAAE4J,GAAE5J,EAAEC,GAAGsC,EAAE,QAAQvC,GAAGA,EAAE6J,GAAE7J,EAAEC,GAAGsC,EAAE,SAASvC,GAAGA,EAAE8J,GAAE9J,EAAEC,GAAGsC,EAAE,SAASvC,GAAGA,EAAE+J,GAAE/J,EAAEC,GAAGsC,EAAE,QAAQvC,GAAGA,GAAGgK,GAAEhK,IAAIA,GAAG,MAAMA,EAAEiK,eAAe,MAAMjK,EAAE6J,GAAE,CAAC7J,EAAEC,IAAID,EAAEyF,OAAOS,MAAM,OAAOC,KAAInG,GAAGkK,GAAElK,EAAEC,KAAIqG,KAAK,KAAK4D,GAAE,CAAClK,EAAEC,KAAK,MAAME,EAAEF,EAAEmF,MAAMsD,GAAEC,GAAEwB,YAAYzB,GAAEC,GAAEyB,OAAO,OAAOpK,EAAE8I,QAAQ3I,GAAE,CAACF,EAAEE,EAAEE,EAAEE,EAAEc,KAAK,IAAIZ,EAAE,OAAO8B,EAAE,QAAQvC,EAAEC,EAAEE,EAAEE,EAAEE,EAAEc,GAAG2I,GAAE7J,GAAGM,EAAE,GAAGuJ,GAAE3J,GAAGI,EAAG,KAAIN,WAAWA,EAAE,UAAU6J,GAAEzJ,GAAGE,EAAG,KAAIN,KAAKE,QAAQF,MAAME,EAAE,QAAQgB,GAAGkB,EAAE,kBAAkBlB,GAAGZ,EAAG,KAAIN,KAAKE,KAAKE,KAAKc,MAAMlB,MAAME,EAAE,SAASI,EAAG,KAAIN,KAAKE,KAAKE,MAAMJ,MAAME,EAAE,QAAQkC,EAAE,eAAe9B,GAAGA,MAAKmJ,GAAE,CAAC5J,EAAEC,IAAID,EAAEyF,OAAOS,MAAM,OAAOC,KAAInG,GAAGqK,GAAErK,EAAEC,KAAIqG,KAAK,KAAK+D,GAAE,CAACrK,EAAEC,KAAKsC,EAAE,QAAQvC,EAAEC,GAAG,MAAME,EAAEF,EAAEmF,MAAMsD,GAAEC,GAAE2B,YAAY5B,GAAEC,GAAE4B,OAAOlK,EAAEJ,EAAEoF,kBAAkB,KAAK,GAAG,OAAOrF,EAAE8I,QAAQ3I,GAAE,CAACF,EAAEE,EAAEI,EAAEc,EAAEZ,KAAK,IAAInB,EAAE,OAAOiD,EAAE,QAAQvC,EAAEC,EAAEE,EAAEI,EAAEc,EAAEZ,GAAGuJ,GAAE7J,GAAGb,EAAE,GAAG0K,GAAEzJ,GAAGjB,EAAG,KAAIa,QAAQE,OAAOF,EAAE,UAAU6J,GAAE3I,GAAG/B,EAAE,MAAMa,EAAG,KAAIA,KAAKI,MAAMF,MAAMF,MAAMI,EAAE,QAAS,KAAIJ,KAAKI,MAAMF,OAAOF,EAAE,UAAUM,GAAG8B,EAAE,kBAAkB9B,GAAGnB,EAAE,MAAMa,EAAE,MAAMI,EAAG,KAAIJ,KAAKI,KAAKc,KAAKZ,MAAMN,KAAKI,MAAMc,EAAE,MAAO,KAAIlB,KAAKI,KAAKc,KAAKZ,MAAMN,MAAMI,EAAE,QAAS,KAAIJ,KAAKI,KAAKc,KAAKZ,OAAON,EAAE,YAAYoC,EAAE,SAASjD,EAAE,MAAMa,EAAE,MAAMI,EAAG,KAAIJ,KAAKI,KAAKc,IAAIhB,MAAMF,KAAKI,MAAMc,EAAE,MAAO,KAAIlB,KAAKI,KAAKc,IAAIhB,MAAMF,MAAMI,EAAE,QAAS,KAAIJ,KAAKI,KAAKc,OAAOlB,EAAE,WAAWoC,EAAE,eAAejD,GAAGA,MAAKwK,GAAE,CAAC9J,EAAEC,KAAKsC,EAAE,iBAAiBvC,EAAEC,GAAGD,EAAEkG,MAAM,OAAOC,KAAInG,GAAGwK,GAAExK,EAAEC,KAAIqG,KAAK,MAAMkE,GAAE,CAACxK,EAAEC,KAAKD,EAAEA,EAAEyF,OAAO,MAAMtF,EAAEF,EAAEmF,MAAMsD,GAAEC,GAAE8B,aAAa/B,GAAEC,GAAE+B,QAAQ,OAAO1K,EAAE8I,QAAQ3I,GAAE,CAACA,EAAEE,EAAEE,EAAEc,EAAEZ,EAAEnB,KAAKiD,EAAE,SAASvC,EAAEG,EAAEE,EAAEE,EAAEc,EAAEZ,EAAEnB,GAAG,MAAMyB,EAAEiJ,GAAEzJ,GAAGa,EAAEL,GAAGiJ,GAAE3I,GAAGY,EAAEb,GAAG4I,GAAEvJ,GAAGmC,EAAEX,EAAE,MAAM,MAAM5B,GAAGuC,IAAIvC,EAAE,IAAIf,EAAEW,EAAEoF,kBAAkB,KAAK,GAAGtE,EAAEZ,EAAE,MAAME,GAAG,MAAMA,EAAE,WAAW,IAAIA,GAAGuC,GAAGxB,IAAIC,EAAE,GAAGZ,EAAE,EAAE,MAAMJ,GAAGA,EAAE,KAAKe,GAAGb,GAAGA,EAAE,EAAEc,EAAE,EAAEZ,EAAE,IAAIY,GAAGA,EAAE,EAAEZ,EAAE,IAAI,OAAOJ,IAAIA,EAAE,IAAIe,EAAEb,GAAGA,EAAE,EAAEc,GAAGA,EAAE,GAAG,MAAMhB,IAAIf,EAAE,MAAMa,EAAG,GAAEE,EAAEE,KAAKc,KAAKZ,IAAInB,KAAK8B,EAAEjB,EAAG,KAAII,QAAQjB,OAAOiB,EAAE,UAAU0B,IAAI9B,EAAG,KAAII,KAAKc,MAAM/B,MAAMiB,MAAMc,EAAE,SAASkB,EAAE,gBAAgBpC,GAAGA,MAAK4J,GAAE,CAAC/J,EAAEC,KAAKsC,EAAE,eAAevC,EAAEC,GAAGD,EAAEyF,OAAOqD,QAAQJ,GAAEC,GAAEgC,MAAM,KAAKpB,GAAE,CAACvJ,EAAEC,KAAKsC,EAAE,cAAcvC,EAAEC,GAAGD,EAAEyF,OAAOqD,QAAQJ,GAAEzI,EAAEoF,kBAAkBsD,GAAEiC,QAAQjC,GAAEkC,MAAM,KAAK9B,GAAG/I,GAAG,CAACC,EAAEE,EAAEE,EAAEE,EAAEc,EAAEZ,EAAEnB,EAAEyB,EAAEK,EAAEa,EAAEM,EAAEK,EAAE4B,IAAK,GAAErE,EAAE6J,GAAE3J,GAAG,GAAG2J,GAAEzJ,GAAI,KAAIF,QAAQL,EAAE,KAAK,KAAKgK,GAAE3I,GAAI,KAAIhB,KAAKE,MAAMP,EAAE,KAAK,KAAKS,EAAE,KAAKN,EAAG,KAAIA,IAAIH,EAAE,KAAK,QAAQe,EAAEiJ,GAAE5I,GAAG,GAAG4I,GAAE/H,GAAI,KAAIb,EAAE,UAAU4I,GAAEzH,GAAI,IAAGnB,MAAMa,EAAE,QAAQW,EAAG,KAAIxB,KAAKa,KAAKM,KAAKK,IAAI5C,EAAG,IAAGoB,KAAKa,MAAMM,EAAE,MAAM,KAAKxB,IAAI0E,OAAO5C,GAAG,CAAC7C,EAAEC,EAAEE,KAAK,IAAI,IAAIA,EAAE,EAAEA,EAAEH,EAAEc,OAAOX,IAAI,IAAIH,EAAEG,GAAGwC,KAAK1C,GAAG,OAAM,EAAG,GAAGA,EAAEgG,WAAWnF,SAASX,EAAEkF,kBAAkB,CAAC,IAAI,IAAIlF,EAAE,EAAEA,EAAEH,EAAEc,OAAOX,IAAI,GAAGoC,EAAEvC,EAAEG,GAAGyH,QAAQ5H,EAAEG,GAAGyH,SAASQ,GAAEV,KAAK1H,EAAEG,GAAGyH,OAAO3B,WAAWnF,OAAO,EAAE,CAAC,MAAMT,EAAEL,EAAEG,GAAGyH,OAAO,GAAGvH,EAAEyF,QAAQ7F,EAAE6F,OAAOzF,EAAE0F,QAAQ9F,EAAE8F,OAAO1F,EAAE2F,QAAQ/F,EAAE+F,MAAM,OAAM,EAAG,OAAM,EAAG,OAAM,GAA0E,MAAM8E,GAAG,WAAWC,GAAG,8DCA51eC,GAAkBvJ,QAAQwJ,QAAQrK,QAAQ,0HAA1CsK,GAAkBzJ,QAAQwJ,QAAQrK,QAAQ,6EDA6ze,IAAShB,OAAOuL,4BAA4BvL,OAAOuL,0BAA0B,IAAIC,KAAjFC,EAAiGjK,EAAXkK,EAAQC,GAARF,EAAtFG,EAA+HC,eAAezL,EAAEG,GAAE,GAAIF,EAAED,EAAE,2CAA2C,MAAMK,QAAQoL,eAAezL,GAAG,MAAMC,EAAEyL,KAAKC,SAASC,iBAAiB5L,GAAGG,EAAEF,GAAGA,EAAE4L,SAAS,gBAAgB,OAAOC,MAAMC,QAAQ5L,UAAUsB,QAAQuK,IAAI7L,EAAEgG,KAAKsF,eAAezL,GAAG,IAAIC,EAAE,KAAKE,EAAEH,EAAEK,EAAE,KAAK,MAAMgB,EAAEyJ,GAAGmB,KAAKjM,GAAGS,EAAEsK,GAAGkB,KAAKjM,GAAG,GAAGqB,GAAE,CAAElB,EAAEE,GAAGgB,EAAEZ,GAAE,CAAEN,EAAEF,GAAGQ,EAAEN,EAAEH,EAAEmL,0BAA0Be,IAAI/L,GAAG,OAAO,KAAK,MAAMb,EAAEoM,KAAKC,SAASQ,mBAAmBhM,GAAG,GAAGb,EAAE,CAAC,IAAIe,EAAE,OAAO,KAAK,MAAML,EAAEoM,KAAKzE,YAAYvG,EAAEQ,SAASrB,EAAE+F,KAAKhH,EAAE,kBAAkB,GAAG,MAAMU,GAAG,MAAMA,EAAEsF,SAA3uB,EAACtF,EAAEC,EAAEE,KAAK,IAAIF,EAAE,IAAIkI,GAAElI,EAAEE,GAAG,MAAMH,GAAG,OAAM,EAAG,OAAOC,EAAE0C,KAAK3C,IAAyrBqM,CAAGrM,EAAEsF,QAAQ,KAAKjF,GAAG,OAAO,KAAK,OAAO8K,0BAA0BmB,IAAInM,GAAG,CAACoM,KAAKpM,EAAEqM,IAAIvM,QAAQuI,OAAOiE,SAAS,GAA7iBhB,CAAijBzL,GAAG,GAAGK,EAAES,OAAO,CAAC,GAAGX,EAAE,CAAC,IAAIF,EAAE,MAAM,SAASwB,QAAQwJ,UAAUyB,MAAM,WAAW,OAAAC,QAA0CD,MAAKjB,OAAOmB,WAAWzM,MAAMF,QAAQE,EAAEH,EAAEK,MAAK,QAAQJ,EAAE,aAAawB,QAAQwJ,UAAUyB,MAAM,WAAW,OAAAG,QAA2CH,MAAKjB,OAAOqB,eAAe7M,KAAKA,EAAED,EAAEK,OAAh9BiL,EAAQyB,oBAARvB,EDA/0ewB,EAAAxB,EAA8C1L,EAAQmN,QAARD,kBGAzKE,GAAiB,CACfC,OAAQ,OACRC,MAAO,MACPC,QAAS,QACTC,iBAAkB,iBAClBC,mBAAoB,mBACpBC,oBAAqB,oBACrBC,UAAW,UACXC,WAAY,WACZC,QAAS,QACTC,QAAS,QACTC,OAAQ,OACRC,SAAU,SACVC,QAAS,QACTC,SAAU,SACVC,QAAS,QACTC,cAAe,cACfC,cAAe,WACfC,OAAQ,OACRC,UAAW,UACXC,YAAa,YACbC,WAAY,WACZC,YAAa,YACbC,WAAY,WACZC,YAAa,YACbC,OAAQ,OACRC,YAAa,YACbC,aAAc,aACdC,aAAc,aACdC,YAAa,YACbC,WAAY,WACZC,YAAa,YACbC,UAAW,UACXC,SAAU,SACVC,cAAe,cACfC,WAAY,WACZC,YAAa,YACbC,aAAc,aACdC,SAAU,SACVC,QAAS,QACTC,QAAS,QACTC,UAAW,UACXC,iBAAkB,iBAClBC,iBAAkB,iBAClBC,UAAW,UACXC,YAAa,YACbC,QAAS,QACTC,QAAS,QACTC,aAAc,aACdC,iBAAkB,iBAClBC,YAAa,YACbC,QAAS,QACTC,OAAQ,OACRC,UAAW,UACXC,WAAY,WACZC,aAAc,aACdC,SAAU,SACVC,UAAW,UACXC,UAAW,UACXC,UAAW,UACXC,aAAc,aACdC,eAAgB,eAChBC,UAAW,UACXC,OAAQ,OACRC,iBAAkB,iBAClBC,eAAgB,eAChBC,qBAAsB,qBACtBC,gBAAiB,2BChEnB,SAASC,GAAKC,EAAKC,KAAUC,GAC3B,IAAIC,EAAY,GAEhB,IAAK,IAAInR,EAAI,EAAGA,EAAIkR,EAAS3Q,QAAS,CACpC,MAAM6Q,EAAQF,EAASlR,GACvB,cAAeoR,GACb,IAAK,SACL,IAAK,SACHF,EAASlR,GAAK,CAACqR,KAAMD,GACrBpR,IACA,MAEF,IAAK,SACCuL,MAAMC,QAAQ4F,GAChBF,EAASI,OAAOtR,EAAG,KAAMoR,GACfA,GAGLA,EAAMG,UACTJ,EAAU9K,KAAK+K,GACXA,EAAMD,WAAaC,EAAMD,UAAU5Q,SACrC4Q,EAAYA,EAAUK,OAAOJ,EAAMD,aAGvCnR,KARAkR,EAASI,OAAOtR,EAAG,GAUrB,MAEF,QACE,MAAM,IAAIM,MAAO,uBAAsB8Q,IAI7C,GAAIH,EAAO,CACT,IAAK,MAAMQ,KAAYR,EAAO,CAC5B,MAAMS,EAAY/E,GAAqB8E,GACnCC,IACGT,EAAMU,KAAIV,EAAMU,GAAK,IAC1BV,EAAMU,GAAGD,GAAaT,EAAMQ,IAI5BR,EAAMW,QACRX,EAAMY,UAAYZ,EAAMW,OAI5B,MAAO,CAACZ,IAAAA,EAAKC,MAAAA,EAAOC,SAAAA,EAAUC,UAAAA,GCjDhCW,GAAiB,IAAIjH,IAAI,CACvB,SACA,WACA,OACA,UACA,IACA,QACA,OACA,iBACA,OACA,OACA,UACA,UACA,WACA,iBACA,OACA,OACA,MACA,OACA,UDiCF,MAAMkH,GAAY,CAChB,IAAK,OAAQ,UAAW,UAAW,QAAS,QAAS,IAAK,MAAO,MACjE,aAAc,OAAQ,SAAU,SAAU,UAAW,OAAQ,OAC7D,WAAY,WAAY,KAAM,MAAO,UAAW,MAAO,SAAU,MAAO,KACxE,KAAM,KAAM,WAAY,aAAc,SAAU,SAAU,OAAQ,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,OAAQ,SAAU,OAAQ,IAAK,SAAU,MAAO,MACxE,QAAS,SAAU,KAAM,OAAQ,MAAO,OAAQ,OAAQ,QAAS,MACjE,WAAY,SAAU,KAAM,WAAY,SAAU,SAAU,IAAK,MACjE,WAAY,IAAK,KAAM,KAAM,OAAQ,IAAK,OAAQ,SAAU,UAC5D,SAAU,QAAS,OAAQ,SAAU,QAAS,MAAO,UAAW,MAChE,QAAS,QAAS,KAAM,WAAY,QAAS,KAAM,QAAS,OAAQ,QACpE,KAAM,IAAK,KAAM,MAAO,QAAS,OAAQ,OAAQ,KAAM,MAAO,UAC9D,QAAS,KAAM,MAAO,QAAS,SAAU,OAAQ,OAAQ,QAAS,SAClE,QAAS,OAGX,IAAK,MAAMC,KAAWD,GACpBhB,GAAIiB,GAAW,CAACf,KAAUC,IACjBH,GAAIiB,EAASf,KAAUC,GAIlC,IAAK,MAAMc,KAAXF,GACEf,GAAIiB,GAAW,CAACf,KAAUC,IACjBH,GAAIiB,EAASf,KAAUC,GAKlCe,GAAiBlB,sBEjFjBmB,GAAiB,IAAIC,IAAI,CACvB,CAAC,eAAgB,iBACjB,CAAC,oBAAqB,sBACtB,CAAC,aAAc,eACf,CAAC,gBAAiB,kBAClB,CAAC,YAAa,cACd,CAAC,YAAa,SACd,CAAC,WAAY,aACb,CAAC,WAAY,aACb,CAAC,qBAAsB,uBACvB,CAAC,4BAA6B,+BAC9B,CAAC,eAAgB,iBACjB,CAAC,iBAAkB,mBACnB,CAAC,mBAAoB,qBACrB,CAAC,mBAAoB,qBACrB,CAAC,cAAe,gBAChB,CAAC,WAAY,aACb,CAAC,aAAc,eACf,CAAC,eAAgB,iBACjB,CAAC,aAAc,eACf,CAAC,WAAY,aACb,CAAC,iBAAkB,oBACnB,CAAC,cAAe,gBAChB,CAAC,YAAa,cACd,CAAC,cAAe,gBAChB,CAAC,aAAc,eACf,CAAC,YAAa,cACd,CAAC,6BAA8B,gCAC/B,CAAC,2BAA4B,8BAC7B,CAAC,YAAa,eACd,CAAC,eAAgB,kBACjB,CAAC,gBAAiB,kBAClB,CAAC,gBAAiB,kBAClB,CAAC,YAAa,cACd,CAAC,YAAa,cACd,CAAC,cAAe,gBAChB,CAAC,mBAAoB,qBACrB,CAAC,oBAAqB,sBACtB,CAAC,UAAW,YACZ,CAAC,aAAc,eACf,CAAC,gBAAiB,kBAClB,CAAC,kBAAmB,oBACpB,CAAC,iBAAkB,mBACnB,CAAC,YAAa,cACd,CAAC,cAAe,gBAChB,CAAC,wBAAyB,0BAC1B,CAAC,yBAA0B,2BAC3B,CAAC,kBAAmB,oBACpB,CAAC,mBAAoB,qBACrB,CAAC,gBAAiB,kBAClB,CAAC,iBAAkB,mBACnB,CAAC,mBAAoB,qBACrB,CAAC,gBAAiB,kBAClB,CAAC,cAAe,gBAChB,CAAC,aAAc,eACf,CAAC,iBAAkB,mBACnB,CAAC,gBAAiB,kBAClB,CAAC,oBAAqB,sBACtB,CAAC,qBAAsB,uBACvB,CAAC,cAAe,gBAChB,CAAC,eAAgB,iBACjB,CAAC,aAAc,gBACf,CAAC,cAAe,gBAChB,CAAC,WAAY,aACb,CAAC,eAAgB,iBACjB,CAAC,gBAAiB,kBAClB,CAAC,WAAY,cACb,CAAC,cAAe,iBAChB,CAAC,cAAe,iBAChB,CAAC,cAAe,gBAChB,CAAC,cAAe,gBAChB,CAAC,UAAW,qBClDd,SAASC,GAAaC,EAASC,EAAgBC,EAAUC,EAAgBC,GACvE,GAAIF,EACF,IAAK,IAAIvG,KAAQuG,EACF,QAATvG,GAA2B,OAATA,IAClBA,KAAIW,IACH8F,GAAczG,KAAQyG,IACZ,YAATzG,EACFoG,GAAYC,EAAQK,QAAS,KAAMH,GAAYA,EAASG,QAAS,KAAM,MACrD,cAAT1G,GAAwBsG,GAAkBR,GAASnG,IAAI2G,EAAetB,KAC/EqB,EAAQM,gBAAgBT,GAA2BrT,IAAImN,IAASA,IAKhEqG,EAAQrG,GAjCJ,UAkCGqG,EAAQrG,MAMvB,GAAIyG,EACF,IAAK,IAAIzG,KAAQyG,EACf,GAAa,QAATzG,GAA2B,OAATA,KAClBA,KAAIW,IAAR,CACA,IAAIiG,EAAWL,GAAYA,EAASvG,GAChC6G,EAAWJ,EAASzG,GACX,YAATA,EACF8G,GAAkBT,EAAQK,QAASE,EAAUC,GAAU,GACrC,UAAT7G,GAAwC,iBAAb6G,GACZ,iBAAbD,IACTP,EAAQU,MAAQ,GAChBH,EAAW,MAEbE,GAAkBT,EAAQU,MAAOH,EAAUC,GAAU,IACnC,eAAT7G,EACTgH,GAAiBX,EAASO,EAAUC,GAEhCA,IAAaD,IACF,cAAT5G,GAAwBwG,GAAkBV,GAASnG,IAAI6G,EAAexB,KACxEqB,EAAQY,aAAaf,GAA2BrT,IAAImN,IAASA,EAAM6G,GAC1DL,GAAyC,UAAvBA,EAAexB,KAC9B,UAAThF,GAAoBqG,EAAQrG,KAAU6G,IAIzCR,EAAQrG,GAAQ6G,KAQ5B,SAASC,GAAmBI,EAAUX,EAAUE,EAAUU,GACxD,GAAIZ,EACF,IAAK,IAAIvG,KAAQuG,EACVE,GAAczG,KAAQyG,IACrBU,EACFD,EAASlH,GA9EL,UAgFGkH,EAASlH,IAMxB,GAAIyG,EACF,IAAK,IAAIzG,KAAQyG,EAAU,CACzB,MAAMG,EAAWL,GAAYA,EAASvG,GAChC6G,EAAWJ,EAASzG,GACtB6G,IAAaD,IACfM,EAASlH,GAAQ6G,IAMzB,SAASG,GAAkBX,EAASe,EAAeC,GACjD,GAAID,EACF,IAAK,IAAIpH,KAAQoH,EACVC,GAAmBrH,KAAQqH,GAC9BhB,EAAQM,gBAAgB3G,GAK9B,GAAIqH,EACF,IAAK,IAAIrH,KAAQqH,EAAe,CAC9B,MAAMT,EAAWQ,GAAiBA,EAAcpH,GAC1C6G,EAAWQ,EAAcrH,GAC3B6G,IAAaD,GACfP,EAAQY,aAAajH,EAAM6G,IC/GnC,SAASS,GAAQC,EAAatO,GAC5B,IAAIoN,EACJ,GAAwB,MAApBkB,EAAYlC,KACdgB,EAAUmB,SAASC,eAAeF,EAAYlC,UACzC,CACL,MAAML,IAACA,EAADE,SAAMA,GAAYqC,EACxB,IAAItC,MAACA,EAADM,QAAQA,GAAWgC,EAMvB,GAJIhC,IACFtM,EAAU,CAACyO,KAAMnC,EAAQmC,KAAMC,gBAAiBpC,IAG/B,mBAARP,EAAoB,CAC7B,IAAI4C,EACA3C,GAASA,EAAM2C,MACjBA,EAAM3C,EAAM2C,KAEd,MAAMC,EAAY,IAAI7C,EAAIC,GAAS,GAAIC,GACvCqC,EAAYM,UAAYA,EACxBxB,EAAUwB,EAAUC,QACD,mBAARF,EACTA,EAAIC,GACK5O,GAAWA,EAAQyO,MAAQE,IACpC3O,EAAQyO,KAAKE,GAAOC,QAEb/B,GAASnG,IAAIqF,IACtBqB,EAAUmB,SAASO,gBAAgB,6BAA8B/C,GAC7DE,GAAU8C,GAAY3B,EAASnB,EAAUjM,GACzCgM,GAAOgD,GAAY5B,EAAS,KAAMkB,EAAatO,KAEnDoN,EAAUmB,SAASU,cAAclD,GAC7BE,GAAU8C,GAAY3B,EAASnB,EAAUjM,GACzCgM,GAAOgD,GAAY5B,EAAS,KAAMkB,EAAatO,IAIvD,OADAsO,EAAYlB,QAAUA,EACfA,EAGT,SAAS2B,GAAaG,EAAQjD,EAAUjM,GACtC,IAAK,IAAIjF,EAAI,EAAGA,EAAIkR,EAAS3Q,OAAQP,IACnCmU,EAAOC,YAAYd,GAAOpC,EAASlR,GAAIiF,IC5C3CoP,GAAiB,SAAoBhC,EAASiC,EAAYC,EAAYb,GAChEa,IAAeD,IACS,mBAAfA,EAA2BA,EAAW,MACxCA,GAAcZ,EAAKY,KAAgBjC,UAAgBqB,EAAKY,GACvC,mBAAfC,EAA2BA,EAAWlC,GACxCkC,IAAYb,EAAKa,GAAclC,KFE5C4B,GAAiB,SAAU5B,EAASC,EAAgBE,EAAgBvN,GAClE,MAAMsN,EAAWD,GAAkBA,EAAerB,MAC5CwB,EAAWD,EAAevB,MAEhC,IAAIyC,EAAMC,EACN1O,IACFyO,EAAOzO,EAAQyO,KACfC,EAAkB1O,EAAQ0O,iBAE5BvB,GAAYC,EAASC,EAAgBC,EAAUC,EAAgBC,GAC3DiB,GAAMW,GAAUhC,EAASE,GAAYA,EAASqB,IAAKnB,GAAYA,EAASmB,IAAKF,GAuGnF,SAA+BrB,EAASC,EAAgBE,EAAgBmB,GACtE,MAAMa,EAAelC,GAAkBA,EAAerB,OAASqB,EAAerB,MAAMU,GAC9E8C,EAAejC,EAAevB,OAASuB,EAAevB,MAAMU,GAElE,IAAK,MAAMD,KAAa8C,EACtB,IAAMC,KAAgB/C,KAAa+C,GAAe,CAChD,IAAIC,EAEFA,EADEpC,GAAkBA,EAAeqC,gBAAkBrC,EAAeqC,eAAejD,GAChEY,EAAeqC,eAAejD,GAE9B8C,EAAa9C,GAElCW,EAAQuC,oBAAoBlD,EAAWgD,GAI3C,IAAK,MAAMhD,KAAa+C,EAAc,CACpC,MAAMI,EAAcL,GAAgBA,EAAa9C,GAC3CoD,EAAcL,EAAa/C,GAEjC,GAAIoD,IAAgBD,EAAa,CAC/B,GAAIA,EAAa,CACf,IAAIH,EAEFA,EADEpC,GAAkBA,EAAeqC,gBAAkBrC,EAAeqC,eAAejD,GAChEY,EAAeqC,eAAejD,GAE9BmD,EAErBxC,EAAQuC,oBAAoBlD,EAAWgD,GAEzC,GAAII,EAAa,CACf,IAAIC,EACApB,GACFoB,EAAgBD,EAAYE,KAAKrB,GAC5BnB,EAAemC,iBAAgBnC,EAAemC,eAAiB,IACpEnC,EAAemC,eAAejD,GAAaqD,GAE3CA,EAAgBD,EAElBzC,EAAQ4C,iBAAiBvD,EAAWqD,MA7I1CG,CAAqB7C,EAASC,EAAgBE,EAAgBmB,IC8BhEwB,GAAiB7B,gBE5CjB,SAAS7N,GAAO6M,EAAgBE,EAAgBvN,GAC9C,MAAMmQ,EAAU9C,EAAeD,QAE/B,GAAIG,IAAmBF,EAAgB,OAAO8C,EAE9C,GAAIC,GAAqB/C,EAAgBE,GAAiB,CACxD,IAAI8C,EAiBJ,OAhB2B,MAAvB9C,EAAenB,MACjB+D,EAAQG,UAAY/C,EAAenB,KACnCiE,EAAUF,GAEwB,mBAAvB5C,EAAexB,IACxBsE,EAuBR,SAA0BhD,EAAgBE,EAAgBvN,GACxD,MAAM4O,UAACA,EAAW5C,MAAOsB,GAAYD,EACrC,IAAKrB,MAAOwB,EAAUvB,SAAUsE,GAAehD,EAC/CA,EAAeqB,UAAYA,EAC3B,MAAMH,EAAOzO,GAAWA,EAAQyO,KAC5BA,GAAMW,GAAUR,EAAWtB,GAAYA,EAASqB,IAAKnB,GAAYA,EAASmB,IAAKF,GAEnF,OADAG,EAAU4B,OAAOhD,GAAY,GAAI+C,GAC1B3B,EAAUC,QA9BD4B,CAAgBpD,EAAgBE,EAAgBvN,KAmClE,SAAyB0Q,EAAeC,EAAaJ,EAAavQ,GAChE,IAUI4Q,EAVAC,EAAgB,EAChBC,EAAcH,EAAYrV,OAAS,EACnCyV,EAAgBJ,EAAY,GAC5BK,EAAcL,EAAYG,GAE1BG,EAAgB,EAChBC,EAAcX,EAAYjV,OAAS,EACnC6V,EAAgBZ,EAAY,GAC5Ba,EAAcb,EAAYW,GAI9B,KAAOL,GAAiBC,GAAeG,GAAiBC,GACtD,GAAKH,EAEE,GAAKC,EAEL,GAAIZ,GAAqBW,EAAeI,GAC7C3Q,GAAMuQ,EAAeI,EAAenR,GACpC+Q,EAAgBJ,IAAcE,GAC9BM,EAAgBZ,IAAcU,QACzB,GAAIb,GAAqBY,EAAaI,GAC3C5Q,GAAMwQ,EAAaI,EAAapR,GAChCgR,EAAcL,IAAcG,GAC5BM,EAAcb,IAAcW,QACvB,GAAId,GAAqBW,EAAeK,GAC7C5Q,GAAMuQ,EAAeK,EAAapR,GAClC0Q,EAAcW,aAAaN,EAAc3D,QAAS4D,EAAY5D,QAAQkE,aACtEP,EAAgBJ,IAAcE,GAC9BO,EAAcb,IAAcW,QACvB,GAAId,GAAqBY,EAAaG,GAC3C3Q,GAAMwQ,EAAaG,EAAenR,GAClC0Q,EAAcW,aAAaL,EAAY5D,QAAS2D,EAAc3D,SAC9D4D,EAAcL,IAAcG,GAC5BK,EAAgBZ,IAAcU,OACzB,CACAL,IACCW,GAAQjW,OAAS,GACnBsV,EAAkBW,GAAQpN,OACVqN,QAEhBZ,EAAkB,IAAI1D,IAExBuE,GAAoBb,EAAiBD,EAAaE,EAAeC,IAGnE,IAAIrX,EAAMiY,GAAOP,GACbQ,EAAWlY,EAAMmX,EAAgBhX,IAAIH,GAAO,KAChD,GAAgB,MAAZkY,EACFjB,EAAcW,aAAanB,GAAOiB,EAAenR,GAAU+Q,EAAc3D,SACzE+D,EAAgBZ,IAAcU,OACzB,CACL,IAAIW,EAAiBjB,EAAYgB,GACjCnR,GAAMoR,EAAgBT,EAAenR,GACrC2Q,EAAYgB,QAAYE,EACxBnB,EAAcW,aAAaO,EAAexE,QAAS2D,EAAc3D,SACjE+D,EAAgBZ,IAAcU,SAxChCD,EAAcL,IAAcG,QAF5BC,EAAgBJ,IAAcE,GA+ClC,GAAIA,EAAgBC,EAAa,CAC/B,IAAIgB,EAAoBvB,EAAYW,EAAc,GAAKX,EAAYW,EAAc,GAAG9D,QAAU,KAC9F,IAAK,IAAIrS,EAAIkW,EAAelW,GAAKmW,EAAanW,IAC5C2V,EAAcW,aAAanB,GAAOK,EAAYxV,GAAIiF,GAAU8R,QAEzD,GAAIb,EAAgBC,EACzB,IAAK,IAAInW,EAAI8V,EAAe9V,GAAK+V,EAAa/V,IAAK,CACjD,IAAIoR,EAAQwE,EAAY5V,GACpBoR,GAAO4F,GAAkB5F,EAAOnM,GAAWA,EAAQyO,MAIvDmC,GAAiBW,GAAQnQ,KAAKwP,GA3G5BoB,CAAe7B,EAAS9C,EAAepB,SAAUsB,EAAetB,SAAUjM,GAC1EgP,GAAYmB,EAAS9C,EAAgBE,EAAgBvN,GACrDqQ,EAAUF,GAGd5C,EAAeH,QAAUiD,EACrBA,IAAYF,GAAWA,EAAQ8B,YACjC9B,EAAQ8B,WAAWC,aAAa7B,EAASF,GAEpCE,EACF,CACL,MAAM4B,EAAa9B,EAAQ8B,WACrBX,EAAcnB,EAAQmB,YAC5BS,GAAkB1E,EAAgBrN,GAAWA,EAAQyO,MACrD,MAAM4B,EAAUH,GAAO3C,EAAgBvN,GAGvC,OAFIiS,GAAYA,EAAWZ,aAAahB,EAASiB,GACjD/D,EAAeH,QAAUiD,EAClBA,GAcX,IAAIkB,GAAU,CAAC,IAAIrE,IAAO,IAAIA,IAAO,IAAIA,IAAO,IAAIA,KA+EpD,SAAS6E,GAAmBzD,EAAaG,EAAM0D,GAAgB,GAC7D,MAAM/E,QAACA,EAADpB,MAAUA,EAAVC,SAAiBA,EAAjB2C,UAA2BA,GAAaN,EACxCK,EAAM3C,GAASA,EAAM2C,IAC3B,GAAIC,EACiB,mBAARD,EAAoBA,EAAI,MAC1BF,GAAQE,GAAOF,EAAKE,KAASC,UAAkBH,EAAKE,GACzDC,EAAUwD,SAASxD,EAAUwD,eAIjC,GAFmB,mBAARzD,EAAoBA,EAAI,MAC1BF,GAAQE,GAAOF,EAAKE,KAASvB,UAAgBqB,EAAKE,GACvD1C,EACF,IAAK,IAAIlR,EAAI,EAAGA,EAAIkR,EAAS3Q,OAAQP,IACnCgX,GAAkB9F,EAASlR,GAAI0T,GAAM,GAKvC0D,GAAe/E,EAAQiF,SAG7B,SAASjC,GAAsB/C,EAAgBE,GAC7C,OACEmE,GAAOrE,KAAoBqE,GAAOnE,IAC7BF,EAAetB,MAAQwB,EAAexB,IAI/C,SAAS2F,GAAQpD,GACf,OAAOA,EAAYtC,MAAQsC,EAAYtC,MAAMvS,SAAMoY,EAGrD,SAASJ,GAAqBb,EAAiB3E,EAAUqG,EAAYC,GACnE,IAAK,IAAIxX,EAAIuX,EAAYvX,GAAKwX,EAAUxX,IAAK,CAC3C,MAAMtB,EAAMiY,GAAOzF,EAASlR,IACxBtB,GAAKmX,EAAgB9N,IAAIrJ,EAAKsB,GAEpC,OAAO6V,EAGT4B,GAAiBhS,UCnKjBiS,GAAiB,MACf9S,cACEI,KAAK2S,eAAiB,GACtB3S,KAAK4S,aAAe,GACpB5S,KAAK6S,sBAAwB,KAC7B7S,KAAK8S,eAAiB9S,KAAK8S,eAAe9C,KAAKhQ,MAC/CA,KAAK+S,mBAAoB,EAM3BC,eAAgBC,GACdjT,KAAK2S,eAAetR,KAAK4R,GACpBjT,KAAK6S,wBACR7S,KAAK6S,sBAAwBxY,OAAO6Y,sBAAsBlT,KAAK8S,iBAInEK,aAAcF,GACZjT,KAAK4S,aAAavR,KAAK4R,GAClBjT,KAAK6S,wBACR7S,KAAK6S,sBAAwBxY,OAAO6Y,sBAAsBlT,KAAK8S,iBAOnEM,uBAME,OALKpT,KAAKqT,oBACRrT,KAAKqT,kBAAoB,IAAInX,SAAQwJ,IACnC1F,KAAKsT,yBAA2B5N,MAG7B1F,KAAKqT,kBAMdP,iBACE,KAAO9S,KAAK2S,eAAepX,OAAS,GAClCyE,KAAK2S,eAAeY,OAApBvT,GAWF,IALAA,KAAK6S,sBAAwB,KAKtB7S,KAAK4S,aAAarX,OAAS,GAChCyE,KAAK4S,aAAaW,OAAlBvT,GAGF,GAAIA,KAAKqT,kBAAmB,CAC1B,IAAIC,EAA2BtT,KAAKsT,yBACpCtT,KAAKqT,kBAAoB,KACzBrT,KAAKsT,yBAA2B,KAChCA,OCxCN,IAAIE,GAAY,YAMc,WAI5B,OAHKA,KACHA,GAAY,IAAAd,IAEPc,IChCT,MAAMC,GAA+B,IAAIC,QACzC,IAAIC,GAA+B,EAC/BC,GAAoC,EAExC,SAASC,GAAoBtF,GAC3B,OAAsB,MAAfA,IAAuC,IAAhBA,EAGhC,SAASuF,GAAcvH,EAASgC,GAC9BA,EAAYhC,QAAUA,EAClBgC,EAAYpC,YACdoC,EAAYpC,UAAU1S,SAAQsa,IAC5BA,EAAKxH,QAAUA,YAEVgC,EAAYpC,WA2FvB,SAAS6H,GAAYnF,EAAWoF,GAAY,GAC1C,IAAKJ,GAAmBhF,EAAUN,aAChC,MAAM,IAAIjT,OAASuT,EAAUjP,YAAciP,EAAUjP,YAAYoH,KAAO,YAAc6H,GAArE,8FAGnB,GAAyB,MAArBA,EAAUC,QACZ,MAAM,IAAIxT,OAASuT,EAAUjP,YAAciP,EAAUjP,YAAYoH,KAAO,YAAc6H,GAArE,wFAGnB,IAAIrB,EAAiBqB,EAAUP,SAC/B,IAAKuF,GAAmBrG,GAAiB,CACvC,MAAM0G,EAAWrF,EAAUjP,aAAeiP,EAAUjP,YAAYoH,KAAO,OAAS6H,EAAUjP,YAAYoH,KAAO,GAC7G,MAAM,IAAI1L,MAAM,uBAAyBkS,EAAiB,0BAA4B0G,GAGxFJ,GAAajF,EAAWrB,GAExBmG,KACA,IAAIrG,EAAiBuB,EAAUN,YAC3B4F,EAAatF,EAAUC,QACvBsF,EAAa3B,GAAMnF,EAAgBE,EAAgB,CACrDkB,KAAMG,EAAUH,KAChBC,gBAAiBE,IAGnB,GADAA,EAAUN,YAAcf,EACpB4G,IAAeD,IAAeF,EAChC,MAAM,IAAI3Y,MAAM,+GAEhBuT,EAAUC,QAAUsF,EASoB,mBAA/BvF,EAAUwF,kBACnBxF,EAAUwF,mBAE6B,mBAA9BxF,EAAUyF,iBACnBC,KAAepB,cAAa,WAC1BtE,EAAUyF,qBAIdX,KA2BF,SAASa,GAAa3F,EAAW4F,GAAW,GAC1Cb,KACAc,GAAuB7F,EAAUN,aACS,IAAtCqF,IAA2Ca,GAAY5F,EAAUC,QAAQwD,SAC7EsB,KAGF,SAASc,GAAuBnG,GAC1BA,EAAYM,WAAsD,mBAAlCN,EAAYM,UAAUwD,QACxD9D,EAAYM,UAAUwD,UACb9D,EAAYrC,UACrBqC,EAAYrC,SAASzS,QAAQib,IAIjCC,GAAiB,CACfC,WAlKF,SAAoB/F,GAClB,GAAgC,mBAArBA,EAAU4B,OACnB,MAAM,IAAInV,MAAM,6DAGlB,IAAIiT,EAAcM,EAAUP,SAC5B,IAAKuF,GAAmBtF,GAAc,CACpC,IAAI2F,EAAWrF,EAAUjP,aAAeiP,EAAUjP,YAAYoH,KAAO,OAAS6H,EAAUjP,YAAYoH,KAAO,GAC3G,MAAM,IAAI1L,MAAM,uBAAyBiT,EAAc,0BAA4B2F,GAGrFJ,GAAajF,EAAWN,GAExBM,EAAUH,KAAO,GACjBG,EAAUN,YAAcA,EACxBM,EAAUC,QAAUqB,GAAOtB,EAAUN,YAAa,CAChDG,KAAMG,EAAUH,KAAMC,gBAAiBE,KAmJzC4B,OAhIF,SAAiB5B,EAAWoF,GAAY,GACtC,GAAIN,GAA+B,EAEjC,OADAK,GAAWnF,EAAWoF,GACf/X,QAAQwJ,UAGjB,IAAI8N,EAAYe,KAUhB,OARKd,GAA6B9M,IAAIkI,KACpC4E,GAA6B1M,IAAI8H,GACjC2E,EAAUR,gBAAe,WACvBS,GAA6BoB,OAAOhG,GACpCmF,GAAWnF,EAAWoF,OAInBT,EAAUJ,wBAgHTY,WAAAA,GACR3B,QAnCF,SAAkBxD,EAAW4F,GAAW,GACtC,GAAId,GAA+B,GAAKC,GAAoC,EAE1E,OADAY,GAAY3F,EAAW4F,GAChBvY,QAAQwJ,UAGjB,IAAI8N,EAAYe,KAIhB,OAHAf,EAAUR,gBAAe,WACvBwB,GAAY3F,EAAW4F,MAElBjB,EAAUJ,wBAyBRoB,YAAAA,ICtMX,MAAOI,WAAAA,GAAYnE,OAAAA,GAAQuD,WAAAA,GAAY3B,QAAAA,GAASmC,YAAAA,IAA1CG,GCFC,SAASG,GAAcC,QACVjD,IAAZiD,IAGyB,mBAAlBA,EAAQC,MAOnBD,EAAQC,OAAOC,IACX9O,KAAK+O,cAAcC,cAAe,0BAAyBF,EAAIG,QAAW,CACtEC,OAAQJ,EAAI3Y,WACZgZ,MAAOL,EAAIK,MACXC,aAAa,OAVjBpP,KAAK+O,cAAcC,cAAc,4EAA6E,CAC1GG,OAAO,IAAIha,OAAQga,MACnBC,aAAa,KDFzBC,GAAiB,CACfzJ,IAAGkB,GAAEqB,OAAM6B,GACXyE,WAAAA,GAAYnE,OAAAA,GAAQuD,WAAAA,GAAY3B,QAAAA,GAASmC,YAAAA,GACzCiB,aFoB4B,SAAuBC,GACnDlC,GAAYkC,GErBEC,aAAYpB,yDEA1B,WAGA,IAAIzC,EAUA8D,EAAkB,sBAGlBC,EAAiB,4BAMjBC,EAAc,yBAgBdC,EAAwB,GACxBC,EAAoB,GACpBC,EAA0B,GAC1BC,EAAgB,IAChBC,EAAkB,IAiBlBC,EAAW,EAAA,EACXvZ,EAAmB,iBAEnBwZ,EAAM,IAGNC,EAAmB,WAKnBC,EAAY,CACd,CAAC,MAAOL,GACR,CAAC,OAtCkB,GAuCnB,CAAC,UAtCsB,GAuCvB,CAAC,QArCmB,GAsCpB,CAAC,aAAcH,GACf,CAAC,OAjCkB,KAkCnB,CAAC,UAAWC,GACZ,CAAC,eAAgBC,GACjB,CAAC,QAASE,IAIRK,EAAU,qBACVC,EAAW,iBAEXC,EAAU,mBACVC,EAAU,gBAEVC,EAAW,iBACXC,EAAU,oBACVC,EAAS,6BACTC,EAAS,eACTC,EAAY,kBAEZC,EAAY,kBACZC,EAAa,mBAEbC,EAAY,kBACZC,EAAS,eACTC,EAAY,kBACZC,EAAY,kBAEZC,EAAa,mBAGbC,EAAiB,uBACjBC,EAAc,oBACdC,EAAa,wBACbC,EAAa,wBACbC,EAAU,qBACVC,EAAW,sBACXC,EAAW,sBACXC,EAAW,sBACXC,EAAkB,6BAClBC,EAAY,uBACZC,EAAY,uBAGZC,EAAuB,iBACvBC,EAAsB,qBACtBC,EAAwB,gCAGxBC,EAAgB,4BAChBC,EAAkB,WAClBC,EAAmBhb,OAAO8a,EAAchf,QACxCmf,EAAqBjb,OAAO+a,EAAgBjf,QAG5Cof,EAAW,mBACXC,EAAa,kBACbC,EAAgB,mBAGhBC,GAAe,mDACfC,GAAgB,QAChBC,GAAa,mGAMbC,GAAe,sBACfC,GAAkBzb,OAAOwb,GAAa1f,QAGtC4f,GAAS,aACTC,GAAc,OACdC,GAAY,OAGZC,GAAgB,4CAChBC,GAAgB,oCAChBC,GAAiB,QAGjBC,GAAc,4CAGdC,GAAe,WAMfC,GAAe,kCAGfC,GAAU,OAGVC,GAAa,qBAGbC,GAAa,aAGbC,GAAe,8BAGfC,GAAY,cAGZC,GAAW,mBAGXC,GAAU,8CAGVC,GAAY,OAGZC,GAAoB,yBAOpBC,GAAeC,gDACfC,GAAiB,kBACjBC,GAAe,4BAKfC,GAAe,4BACfC,GAAa,iBACbC,GAAeC,8OAGfC,GAAS,OACTC,GAAW,oBACXC,GAAU,IAAMJ,GAAe,IAC/BK,GAAU,IAAMX,GAAe,IAC/BY,GAAW,OACXC,GAAY,oBACZC,GAAU,IAAMX,GAAe,IAC/BY,GAAS,oBAAuBT,GAAeM,GAAWV,GAAiBC,GAAeC,GAAe,IACzGY,GAAS,2BAETC,GAAc,qBACdC,GAAa,kCACbC,GAAa,qCACbC,GAAU,IAAMhB,GAAe,IAI/BiB,GAAc,MAAQP,GAAU,IAAMC,GAAS,IAC/CO,GAAc,MAAQF,GAAU,IAAML,GAAS,IAC/CQ,GAAkB,gCAClBC,GAAkB,gCAClBC,GAZa,MAAQd,GAAU,IAAMK,GAAS,IAYtB,IACxBU,GAAW,oBAIXC,GAAQD,GAAWD,IAHP,gBAAwB,CAACR,GAAaC,GAAYC,IAAYxa,KAAK,KAAO,IAAM+a,GAAWD,GAAW,MAIlHG,GAAU,MAAQ,CAACf,GAAWK,GAAYC,IAAYxa,KAAK,KAAO,IAAMgb,GACxEE,GAAW,MAAQ,CAACZ,GAAcN,GAAU,IAAKA,GAASO,GAAYC,GAAYV,IAAU9Z,KAAK,KAAO,IAGxGmb,GAAS1e,OAAOod,GAAQ,KAMxBuB,GAAc3e,OAAOud,GAAS,KAG9BqB,GAAY5e,OAAO4d,GAAS,MAAQA,GAAS,KAAOa,GAAWF,GAAO,KAGtEM,GAAgB7e,OAAO,CACzBge,GAAU,IAAMN,GAAU,IAAMS,GAAkB,MAAQ,CAACb,GAASU,GAAS,KAAKza,KAAK,KAAO,IAC9F2a,GAAc,IAAME,GAAkB,MAAQ,CAACd,GAASU,GAAUC,GAAa,KAAK1a,KAAK,KAAO,IAChGya,GAAU,IAAMC,GAAc,IAAME,GACpCH,GAAU,IAAMI,GAtBD,mDADA,mDA0BfZ,GACAgB,IACAjb,KAAK,KAAM,KAGTub,GAAe9e,OAAO,0BAA+B4c,GAAeK,GAAa,KAGjF8B,GAAmB,qEAGnBC,GAAe,CACjB,QAAS,SAAU,WAAY,OAAQ,QAAS,eAAgB,eAChE,WAAY,YAAa,aAAc,aAAc,MAAO,OAAQ,SACpE,UAAW,SAAU,MAAO,SAAU,SAAU,YAAa,aAC7D,oBAAqB,cAAe,cAAe,UACnD,IAAK,eAAgB,WAAY,WAAY,cAI3CC,IAAmB,EAGnBC,GAAiB,GACrBA,GAAehF,GAAcgF,GAAe/E,GAC5C+E,GAAe9E,GAAW8E,GAAe7E,GACzC6E,GAAe5E,GAAY4E,GAAe3E,GAC1C2E,GAAe1E,GAAmB0E,GAAezE,GACjDyE,GAAexE,IAAa,EAC5BwE,GAAelG,GAAWkG,GAAejG,GACzCiG,GAAelF,GAAkBkF,GAAehG,GAChDgG,GAAejF,GAAeiF,GAAe/F,GAC7C+F,GAAe9F,GAAY8F,GAAe7F,GAC1C6F,GAAe3F,GAAU2F,GAAe1F,GACxC0F,GAAezF,GAAayF,GAAevF,GAC3CuF,GAAetF,GAAUsF,GAAerF,GACxCqF,GAAenF,IAAc,EAG7B,IAAIoF,GAAgB,GACpBA,GAAcnG,GAAWmG,GAAclG,GACvCkG,GAAcnF,GAAkBmF,GAAclF,GAC9CkF,GAAcjG,GAAWiG,GAAchG,GACvCgG,GAAcjF,GAAciF,GAAchF,GAC1CgF,GAAc/E,GAAW+E,GAAc9E,GACvC8E,GAAc7E,GAAY6E,GAAc5F,GACxC4F,GAAc3F,GAAa2F,GAAc1F,GACzC0F,GAAcxF,GAAawF,GAAcvF,GACzCuF,GAActF,GAAasF,GAAcrF,GACzCqF,GAAc5E,GAAY4E,GAAc3E,GACxC2E,GAAc1E,GAAa0E,GAAczE,IAAa,EACtDyE,GAAc/F,GAAY+F,GAAc9F,GACxC8F,GAAcpF,IAAc,EAG5B,IA4EIqF,GAAgB,CAClBC,KAAM,KACNC,IAAK,IACLC,KAAM,IACNC,KAAM,IACNC,SAAU,QACVC,SAAU,SAIRC,GAAiBC,WACjBC,GAAeC,SAGfC,GAA8B,iBAAjBrjB,GAAAA,GAAuCA,EAAOX,SAAWA,QAAzDW,EAGbsjB,GAA0B,iBAARpjB,MAAoBA,MAAQA,KAAKb,SAAWA,QAAUa,KAGxEqjB,GAAOF,IAAcC,IAAYE,SAAS,cAATA,GAGjCC,GAAgC,iBAAXviB,GAAuBA,IAAYA,EAAQwiB,UAAYxiB,EAG5EyiB,GAAaF,IAAgC,iBAAVG,GAAsBA,IAAWA,EAAOF,UAAYE,EAGvFC,GAAgBF,IAAcA,GAAWziB,UAAYuiB,GAGrDK,GAAcD,IAAiBR,GAAWtgB,QAG1CghB,GAAY,WACd,IAEE,IAAIC,EAAQL,IAAcA,GAAWxiB,SAAWwiB,GAAWxiB,QAAQ,QAAQ6iB,MAE3E,OAAIA,GAKGF,IAAeA,GAAYG,SAAWH,GAAYG,QAAQ,QACjE,MAAO1jB,KAXK,GAeZ2jB,GAAoBH,IAAYA,GAASI,cACzCC,GAAaL,IAAYA,GAASM,OAClCC,GAAYP,IAAYA,GAASQ,MACjCC,GAAeT,IAAYA,GAASU,SACpCC,GAAYX,IAAYA,GAASY,MACjCC,GAAmBb,IAAYA,GAASc,aAc5C,SAASC,GAAMC,EAAMC,EAASC,GAC5B,OAAQA,EAAK5jB,QACX,KAAK,EAAG,OAAO0jB,EAAKxiB,KAAKyiB,GACzB,KAAK,EAAG,OAAOD,EAAKxiB,KAAKyiB,EAASC,EAAK,IACvC,KAAK,EAAG,OAAOF,EAAKxiB,KAAKyiB,EAASC,EAAK,GAAIA,EAAK,IAChD,KAAK,EAAG,OAAOF,EAAKxiB,KAAKyiB,EAASC,EAAK,GAAIA,EAAK,GAAIA,EAAK,IAE3D,OAAOF,EAAKD,MAAME,EAASC,GAa7B,SAASC,GAAgBC,EAAOC,EAAQC,EAAUC,GAIhD,IAHA,IAAIC,GAAS,EACTlkB,EAAkB,MAAT8jB,EAAgB,EAAIA,EAAM9jB,SAE9BkkB,EAAQlkB,GAAQ,CACvB,IAAIf,EAAQ6kB,EAAMI,GAClBH,EAAOE,EAAahlB,EAAO+kB,EAAS/kB,GAAQ6kB,GAE9C,OAAOG,EAYT,SAASE,GAAUL,EAAOE,GAIxB,IAHA,IAAIE,GAAS,EACTlkB,EAAkB,MAAT8jB,EAAgB,EAAIA,EAAM9jB,SAE9BkkB,EAAQlkB,IAC8B,IAAzCgkB,EAASF,EAAMI,GAAQA,EAAOJ,KAIpC,OAAOA,EAYT,SAASM,GAAeN,EAAOE,GAG7B,IAFA,IAAIhkB,EAAkB,MAAT8jB,EAAgB,EAAIA,EAAM9jB,OAEhCA,MAC0C,IAA3CgkB,EAASF,EAAM9jB,GAASA,EAAQ8jB,KAItC,OAAOA,EAaT,SAASO,GAAWP,EAAOQ,GAIzB,IAHA,IAAIJ,GAAS,EACTlkB,EAAkB,MAAT8jB,EAAgB,EAAIA,EAAM9jB,SAE9BkkB,EAAQlkB,GACf,IAAKskB,EAAUR,EAAMI,GAAQA,EAAOJ,GAClC,OAAO,EAGX,OAAO,EAYT,SAASS,GAAYT,EAAOQ,GAM1B,IALA,IAAIJ,GAAS,EACTlkB,EAAkB,MAAT8jB,EAAgB,EAAIA,EAAM9jB,OACnCwkB,EAAW,EACXC,EAAS,KAEJP,EAAQlkB,GAAQ,CACvB,IAAIf,EAAQ6kB,EAAMI,GACdI,EAAUrlB,EAAOilB,EAAOJ,KAC1BW,EAAOD,KAAcvlB,GAGzB,OAAOwlB,EAYT,SAASC,GAAcZ,EAAO7kB,GAE5B,SADsB,MAAT6kB,EAAgB,EAAIA,EAAM9jB,SACpB2kB,GAAYb,EAAO7kB,EAAO,IAAM,EAYrD,SAAS2lB,GAAkBd,EAAO7kB,EAAO4lB,GAIvC,IAHA,IAAIX,GAAS,EACTlkB,EAAkB,MAAT8jB,EAAgB,EAAIA,EAAM9jB,SAE9BkkB,EAAQlkB,GACf,GAAI6kB,EAAW5lB,EAAO6kB,EAAMI,IAC1B,OAAO,EAGX,OAAO,EAYT,SAASY,GAAShB,EAAOE,GAKvB,IAJA,IAAIE,GAAS,EACTlkB,EAAkB,MAAT8jB,EAAgB,EAAIA,EAAM9jB,OACnCykB,EAASzZ,MAAMhL,KAEVkkB,EAAQlkB,GACfykB,EAAOP,GAASF,EAASF,EAAMI,GAAQA,EAAOJ,GAEhD,OAAOW,EAWT,SAASM,GAAUjB,EAAOkB,GAKxB,IAJA,IAAId,GAAS,EACTlkB,EAASglB,EAAOhlB,OAChBilB,EAASnB,EAAM9jB,SAEVkkB,EAAQlkB,GACf8jB,EAAMmB,EAASf,GAASc,EAAOd,GAEjC,OAAOJ,EAeT,SAASoB,GAAYpB,EAAOE,EAAUC,EAAakB,GACjD,IAAIjB,GAAS,EACTlkB,EAAkB,MAAT8jB,EAAgB,EAAIA,EAAM9jB,OAKvC,IAHImlB,GAAanlB,IACfikB,EAAcH,IAAQI,MAEfA,EAAQlkB,GACfikB,EAAcD,EAASC,EAAaH,EAAMI,GAAQA,EAAOJ,GAE3D,OAAOG,EAeT,SAASmB,GAAiBtB,EAAOE,EAAUC,EAAakB,GACtD,IAAInlB,EAAkB,MAAT8jB,EAAgB,EAAIA,EAAM9jB,OAIvC,IAHImlB,GAAanlB,IACfikB,EAAcH,IAAQ9jB,IAEjBA,KACLikB,EAAcD,EAASC,EAAaH,EAAM9jB,GAASA,EAAQ8jB,GAE7D,OAAOG,EAaT,SAASoB,GAAUvB,EAAOQ,GAIxB,IAHA,IAAIJ,GAAS,EACTlkB,EAAkB,MAAT8jB,EAAgB,EAAIA,EAAM9jB,SAE9BkkB,EAAQlkB,GACf,GAAIskB,EAAUR,EAAMI,GAAQA,EAAOJ,GACjC,OAAO,EAGX,OAAO,EAUT,IAAIwB,GAAYC,GAAa,UAmC7B,SAASC,GAAYC,EAAYnB,EAAWoB,GAC1C,IAAIjB,EAOJ,OANAiB,EAASD,GAAY,SAASxmB,EAAOd,EAAKsnB,GACxC,GAAInB,EAAUrlB,EAAOd,EAAKsnB,GAExB,OADAhB,EAAStmB,GACF,KAGJsmB,EAcT,SAASkB,GAAc7B,EAAOQ,EAAWsB,EAAWC,GAIlD,IAHA,IAAI7lB,EAAS8jB,EAAM9jB,OACfkkB,EAAQ0B,GAAaC,EAAY,GAAK,GAElCA,EAAY3B,MAAYA,EAAQlkB,GACtC,GAAIskB,EAAUR,EAAMI,GAAQA,EAAOJ,GACjC,OAAOI,EAGX,OAAQ,EAYV,SAASS,GAAYb,EAAO7kB,EAAO2mB,GACjC,OAAO3mB,GAAUA,EAocnB,SAAuB6kB,EAAO7kB,EAAO2mB,GACnC,IAAI1B,EAAQ0B,EAAY,EACpB5lB,EAAS8jB,EAAM9jB,OAEnB,OAASkkB,EAAQlkB,GACf,GAAI8jB,EAAMI,KAAWjlB,EACnB,OAAOilB,EAGX,OAAQ,EA5cJ4B,CAAchC,EAAO7kB,EAAO2mB,GAC5BD,GAAc7B,EAAOiC,GAAWH,GAatC,SAASI,GAAgBlC,EAAO7kB,EAAO2mB,EAAWf,GAIhD,IAHA,IAAIX,EAAQ0B,EAAY,EACpB5lB,EAAS8jB,EAAM9jB,SAEVkkB,EAAQlkB,GACf,GAAI6kB,EAAWf,EAAMI,GAAQjlB,GAC3B,OAAOilB,EAGX,OAAQ,EAUV,SAAS6B,GAAU9mB,GACjB,OAAOA,GAAUA,EAYnB,SAASgnB,GAASnC,EAAOE,GACvB,IAAIhkB,EAAkB,MAAT8jB,EAAgB,EAAIA,EAAM9jB,OACvC,OAAOA,EAAUkmB,GAAQpC,EAAOE,GAAYhkB,EAAU8a,EAUxD,SAASyK,GAAapnB,GACpB,OAAO,SAASgoB,GACd,OAAiB,MAAVA,EAAiB5P,EAAY4P,EAAOhoB,IAW/C,SAASioB,GAAeD,GACtB,OAAO,SAAShoB,GACd,OAAiB,MAAVgoB,EAAiB5P,EAAY4P,EAAOhoB,IAiB/C,SAASkoB,GAAWZ,EAAYzB,EAAUC,EAAakB,EAAWO,GAMhE,OALAA,EAASD,GAAY,SAASxmB,EAAOilB,EAAOuB,GAC1CxB,EAAckB,GACTA,GAAY,EAAOlmB,GACpB+kB,EAASC,EAAahlB,EAAOilB,EAAOuB,MAEnCxB,EAgCT,SAASiC,GAAQpC,EAAOE,GAKtB,IAJA,IAAIS,EACAP,GAAS,EACTlkB,EAAS8jB,EAAM9jB,SAEVkkB,EAAQlkB,GAAQ,CACvB,IAAIsmB,EAAUtC,EAASF,EAAMI,IACzBoC,IAAY/P,IACdkO,EAASA,IAAWlO,EAAY+P,EAAW7B,EAAS6B,GAGxD,OAAO7B,EAYT,SAAS8B,GAAU5mB,EAAGqkB,GAIpB,IAHA,IAAIE,GAAS,EACTO,EAASzZ,MAAMrL,KAEVukB,EAAQvkB,GACf8kB,EAAOP,GAASF,EAASE,GAE3B,OAAOO,EAyBT,SAAS+B,GAAU9C,GACjB,OAAO,SAASzkB,GACd,OAAOykB,EAAKzkB,IAchB,SAASwnB,GAAWN,EAAQzV,GAC1B,OAAOoU,GAASpU,GAAO,SAASvS,GAC9B,OAAOgoB,EAAOhoB,MAYlB,SAASuoB,GAASC,EAAOxoB,GACvB,OAAOwoB,EAAMvb,IAAIjN,GAYnB,SAASyoB,GAAgBC,EAAYC,GAInC,IAHA,IAAI5C,GAAS,EACTlkB,EAAS6mB,EAAW7mB,SAEfkkB,EAAQlkB,GAAU2kB,GAAYmC,EAAYD,EAAW3C,GAAQ,IAAM,IAC5E,OAAOA,EAYT,SAAS6C,GAAcF,EAAYC,GAGjC,IAFA,IAAI5C,EAAQ2C,EAAW7mB,OAEhBkkB,KAAWS,GAAYmC,EAAYD,EAAW3C,GAAQ,IAAM,IACnE,OAAOA,EAWT,SAAS8C,GAAalD,EAAOmD,GAI3B,IAHA,IAAIjnB,EAAS8jB,EAAM9jB,OACfykB,EAAS,EAENzkB,KACD8jB,EAAM9jB,KAAYinB,KAClBxC,EAGN,OAAOA,EAWT,IAAIyC,GAAed,GApwBG,CAEpBe,IAAQ,IAAMC,IAAQ,IAAKC,IAAQ,IAAKC,IAAQ,IAAKC,IAAQ,IAAKC,IAAQ,IAC1EC,IAAQ,IAAMC,IAAQ,IAAKC,IAAQ,IAAKC,IAAQ,IAAKC,IAAQ,IAAKC,IAAQ,IAC1EC,IAAQ,IAAMC,IAAQ,IACtBC,IAAQ,IAAMC,IAAQ,IACtBC,IAAQ,IAAMC,IAAQ,IAAKC,IAAQ,IAAKC,IAAQ,IAChDC,IAAQ,IAAMC,IAAQ,IAAKC,IAAQ,IAAKC,IAAQ,IAChDC,IAAQ,IAAMC,IAAQ,IAAKC,IAAQ,IAAKC,IAAQ,IAChDC,IAAQ,IAAMC,IAAQ,IAAKC,IAAQ,IAAKC,IAAQ,IAChDC,IAAQ,IAAMC,IAAQ,IACtBC,IAAQ,IAAMC,IAAQ,IAAKC,IAAQ,IAAKC,IAAQ,IAAKC,IAAQ,IAAKC,IAAQ,IAC1EC,IAAQ,IAAMC,IAAQ,IAAKC,IAAQ,IAAKC,IAAQ,IAAKC,IAAQ,IAAKC,IAAQ,IAC1EC,IAAQ,IAAMC,IAAQ,IAAKC,IAAQ,IAAKC,IAAQ,IAChDC,IAAQ,IAAMC,IAAQ,IAAKC,IAAQ,IAAKC,IAAQ,IAChDC,IAAQ,IAAMC,IAAQ,IAAKC,IAAQ,IACnCC,IAAQ,KAAMC,IAAQ,KACtBC,IAAQ,KAAMC,IAAQ,KACtBC,IAAQ,KAERC,IAAU,IAAMC,IAAU,IAAKC,IAAU,IACzCC,IAAU,IAAMC,IAAU,IAAKC,IAAU,IACzCC,IAAU,IAAMC,IAAU,IAAKC,IAAU,IAAKC,IAAU,IACxDC,IAAU,IAAMC,IAAU,IAAKC,IAAU,IAAKC,IAAU,IACxDC,IAAU,IAAMC,IAAU,IAAKC,IAAU,IAAKC,IAAU,IACxDC,IAAU,IAAMC,IAAU,IAAKC,IAAU,IAAKC,IAAU,IAAKC,IAAU,IACvEC,IAAU,IAAMC,IAAU,IAAKC,IAAU,IAAKC,IAAU,IAAKC,IAAU,IACvEC,IAAU,IAAMC,IAAU,IAAKC,IAAU,IAAKC,IAAU,IACxDC,IAAU,IAAMC,IAAU,IAAKC,IAAU,IAAKC,IAAU,IACxDC,IAAU,IAAMC,IAAU,IAAKC,IAAU,IAAKC,IAAU,IACxDC,IAAU,IAAMC,IAAU,IAAKC,IAAU,IAAKC,IAAU,IAAKC,IAAU,IACvEC,IAAU,IAAMC,IAAU,IAAKC,IAAU,IAAKC,IAAU,IAAKC,IAAU,IACvEC,IAAU,IAAMC,IAAU,IAC1BC,IAAU,IAAMC,IAAU,IAAKC,IAAU,IACzCC,IAAU,IAAMC,IAAU,IAAKC,IAAU,IAAKC,IAAU,IAAKC,IAAU,IACvEC,IAAU,IAAMC,IAAU,IAAKC,IAAU,IAAKC,IAAU,IAAKC,IAAU,IACvEC,IAAU,IAAMC,IAAU,IAAKC,IAAU,IAAKC,IAAU,IACxDC,IAAU,IAAMC,IAAU,IAAKC,IAAU,IAAKC,IAAU,IACxDC,IAAU,IAAMC,IAAU,IAAKC,IAAU,IACzCC,IAAU,IAAMC,IAAU,IAAKC,IAAU,IACzCC,IAAU,IAAMC,IAAU,IAAKC,IAAU,IACzCC,IAAU,IAAMC,IAAU,IAAKC,IAAU,IACzCC,IAAU,IAAMC,IAAU,IAAKC,IAAU,IAAKC,IAAU,IACxDC,IAAU,IAAMC,IAAU,IAAKC,IAAU,IAAKC,IAAU,IACxDC,IAAU,IAAMC,IAAU,IAAKC,IAAU,IACzCC,IAAU,IAAMC,IAAU,IAAKC,IAAU,IACzCC,IAAU,IAAMC,IAAU,IAAKC,IAAU,IAAKC,IAAU,IAAKC,IAAU,IAAKC,IAAU,IACtFC,IAAU,IAAMC,IAAU,IAAKC,IAAU,IAAKC,IAAU,IAAKC,IAAU,IAAKC,IAAU,IACtFC,IAAU,IAAMC,IAAU,IAC1BC,IAAU,IAAMC,IAAU,IAAKC,IAAU,IACzCC,IAAU,IAAMC,IAAU,IAAKC,IAAU,IACzCC,IAAU,IAAMC,IAAU,IAAKC,IAAU,IACzCC,IAAU,KAAMC,IAAU,KAC1BC,IAAU,KAAMC,IAAU,KAC1BC,IAAU,KAAMC,IAAU,MAutBxBC,GAAiB7M,GAntBH,CAChB8M,IAAK,QACLC,IAAK,OACLC,IAAK,OACLC,IAAK,SACL9R,IAAK,UAutBP,SAAS+R,GAAiBC,GACxB,MAAO,KAAOlS,GAAckS,GAsB9B,SAASC,GAAWC,GAClB,OAAO1S,GAAalf,KAAK4xB,GAsC3B,SAASC,GAAWruB,GAClB,IAAI6e,GAAS,EACTO,EAASzZ,MAAM3F,EAAIsuB,MAKvB,OAHAtuB,EAAInH,SAAQ,SAASe,EAAOd,GAC1BsmB,IAASP,GAAS,CAAC/lB,EAAKc,MAEnBwlB,EAWT,SAASmP,GAAQlQ,EAAMmQ,GACrB,OAAO,SAASC,GACd,OAAOpQ,EAAKmQ,EAAUC,KAa1B,SAASC,GAAejQ,EAAOmD,GAM7B,IALA,IAAI/C,GAAS,EACTlkB,EAAS8jB,EAAM9jB,OACfwkB,EAAW,EACXC,EAAS,KAEJP,EAAQlkB,GAAQ,CACvB,IAAIf,EAAQ6kB,EAAMI,GACdjlB,IAAUgoB,GAAehoB,IAAUsb,IACrCuJ,EAAMI,GAAS3J,EACfkK,EAAOD,KAAcN,GAGzB,OAAOO,EAUT,SAASuP,GAAWxsB,GAClB,IAAI0c,GAAS,EACTO,EAASzZ,MAAMxD,EAAImsB,MAKvB,OAHAnsB,EAAItJ,SAAQ,SAASe,GACnBwlB,IAASP,GAASjlB,KAEbwlB,EAUT,SAASwP,GAAWzsB,GAClB,IAAI0c,GAAS,EACTO,EAASzZ,MAAMxD,EAAImsB,MAKvB,OAHAnsB,EAAItJ,SAAQ,SAASe,GACnBwlB,IAASP,GAAS,CAACjlB,EAAOA,MAErBwlB,EAoDT,SAASyP,GAAWT,GAClB,OAAOD,GAAWC,GAkCpB,SAAqBA,GACnB,IAAIhP,EAAS5D,GAAUsT,UAAY,EACnC,KAAOtT,GAAUhf,KAAK4xB,MAClBhP,EAEJ,OAAOA,EAtCH2P,CAAYX,GACZnO,GAAUmO,GAUhB,SAASY,GAAcZ,GACrB,OAAOD,GAAWC,GAoCpB,SAAwBA,GACtB,OAAOA,EAAO7uB,MAAMic,KAAc,GApC9ByT,CAAeb,GAhkBrB,SAAsBA,GACpB,OAAOA,EAAOruB,MAAM,IAgkBhBmvB,CAAad,GAUnB,IAAIe,GAAmBpO,GA/6BH,CAClBqO,QAAS,IACTC,OAAQ,IACRC,OAAQ,IACRC,SAAU,IACVC,QAAS,MAg/BX,IAg3eIttB,GAh3egB,SAASutB,EAAa9jB,GAIxC,IA6BM+jB,EA7BF/pB,IAHJgG,EAAqB,MAAXA,EAAkBkR,GAAO3a,GAAEytB,SAAS9S,GAAKlkB,SAAUgT,EAASzJ,GAAE0tB,KAAK/S,GAAMjB,MAG/DjW,MAChBkqB,GAAOlkB,EAAQkkB,KACfn1B,GAAQiR,EAAQjR,MAChBoiB,GAAWnR,EAAQmR,SACnBgT,GAAOnkB,EAAQmkB,KACfn3B,GAASgT,EAAQhT,OACjBiE,GAAS+O,EAAQ/O,OACjBmzB,GAASpkB,EAAQokB,OACjBh1B,GAAY4Q,EAAQ5Q,UAGpBi1B,GAAarqB,GAAMhK,UACnBs0B,GAAYnT,GAASnhB,UACrBu0B,GAAcv3B,GAAOgD,UAGrBw0B,GAAaxkB,EAAQ,sBAGrBykB,GAAeH,GAAUv0B,SAGzBE,GAAiBs0B,GAAYt0B,eAG7By0B,GAAY,EAGZC,IACEZ,EAAM,SAAS5pB,KAAKqqB,IAAcA,GAAWv3B,MAAQu3B,GAAWv3B,KAAK23B,UAAY,KACvE,iBAAmBb,EAAO,GAQtCc,GAAuBN,GAAYx0B,SAGnC+0B,GAAmBL,GAAav0B,KAAKlD,IAGrC+3B,GAAU7T,GAAK3a,EAGfyuB,GAAa/zB,GAAO,IACtBwzB,GAAav0B,KAAKD,IAAgB+G,QAAQyV,GAAc,QACvDzV,QAAQ,yDAA0D,SAAW,KAI5E9H,GAASsiB,GAAgBxR,EAAQ9Q,OAASqW,EAC1C7P,GAASsK,EAAQtK,OACjBuvB,GAAajlB,EAAQilB,WACrBC,GAAch2B,GAASA,GAAOg2B,YAAc3f,EAC5C4f,GAAevC,GAAQ51B,GAAOo4B,eAAgBp4B,IAC9Cq4B,GAAer4B,GAAOs4B,OACtBC,GAAuBhB,GAAYgB,qBACnCxlB,GAASskB,GAAWtkB,OACpBylB,GAAmB9vB,GAASA,GAAO+vB,mBAAqBlgB,EACxDmgB,GAAchwB,GAASA,GAAOiwB,SAAWpgB,EACzCqgB,GAAiBlwB,GAASA,GAAOmwB,YAActgB,EAE/CnY,GAAkB,WACpB,IACE,IAAIslB,EAAOoT,GAAU94B,GAAQ,kBAE7B,OADA0lB,EAAK,GAAI,GAAI,IACNA,EACP,MAAOxkB,KALW,GASlB63B,GAAkB/lB,EAAQgmB,eAAiB9U,GAAK8U,cAAgBhmB,EAAQgmB,aACxEC,GAAS/B,IAAQA,GAAKgC,MAAQhV,GAAKgT,KAAKgC,KAAOhC,GAAKgC,IACpDC,GAAgBnmB,EAAQomB,aAAelV,GAAKkV,YAAcpmB,EAAQomB,WAGlEC,GAAalC,GAAKmC,KAClBC,GAAcpC,GAAKqC,MACnBC,GAAmBz5B,GAAO05B,sBAC1BC,GAAiBz3B,GAASA,GAAOC,SAAWoW,EAC5CqhB,GAAiB5mB,EAAQ6mB,SACzBC,GAAazC,GAAW7vB,KACxBuyB,GAAanE,GAAQ51B,GAAOC,KAAMD,IAClCg6B,GAAY7C,GAAK8C,IACjBC,GAAY/C,GAAKgD,IACjBC,GAAYlD,GAAKgC,IACjBmB,GAAiBrnB,EAAQ+Q,SACzBuW,GAAenD,GAAKoD,OACpBC,GAAgBnD,GAAWoD,QAG3BC,GAAW5B,GAAU9lB,EAAS,YAC9BY,GAAMklB,GAAU9lB,EAAS,OACzBrQ,GAAUm2B,GAAU9lB,EAAS,WAC7B1G,GAAMwsB,GAAU9lB,EAAS,OACzB2nB,GAAU7B,GAAU9lB,EAAS,WAC7B4nB,GAAe9B,GAAU94B,GAAQ,UAGjC66B,GAAUF,IAAW,IAAIA,GAGzBG,GAAY,GAGZC,GAAqBC,GAASN,IAC9BO,GAAgBD,GAASpnB,IACzBsnB,GAAoBF,GAASr4B,IAC7Bw4B,GAAgBH,GAAS1uB,IACzB8uB,GAAoBJ,GAASL,IAG7BU,GAAc3yB,GAASA,GAAO1F,UAAYuV,EAC1C+iB,GAAgBD,GAAcA,GAAYE,QAAUhjB,EACpDijB,GAAiBH,GAAcA,GAAYt4B,SAAWwV,EAyH1D,SAASkjB,GAAOx6B,GACd,GAAIy6B,GAAaz6B,KAAWgM,GAAQhM,MAAYA,aAAiB06B,IAAc,CAC7E,GAAI16B,aAAiB26B,GACnB,OAAO36B,EAET,GAAIgC,GAAeC,KAAKjC,EAAO,eAC7B,OAAO46B,GAAa56B,GAGxB,OAAO,IAAI26B,GAAc36B,GAW3B,IAAI66B,GAAc,WAChB,SAAS3T,KACT,OAAO,SAAS4T,GACd,IAAKC,GAASD,GACZ,MAAO,GAET,GAAI1D,GACF,OAAOA,GAAa0D,GAEtB5T,EAAOnlB,UAAY+4B,EACnB,IAAItV,EAAS,IAAI0B,EAEjB,OADAA,EAAOnlB,UAAYuV,EACZkO,GAZO,GAqBlB,SAASwV,MAWT,SAASL,GAAc36B,EAAOi7B,GAC5Bz1B,KAAK01B,YAAcl7B,EACnBwF,KAAK21B,YAAc,GACnB31B,KAAK41B,YAAcH,EACnBz1B,KAAK61B,UAAY,EACjB71B,KAAK81B,WAAahkB,EAgFpB,SAASojB,GAAY16B,GACnBwF,KAAK01B,YAAcl7B,EACnBwF,KAAK21B,YAAc,GACnB31B,KAAK+1B,QAAU,EACf/1B,KAAKg2B,cAAe,EACpBh2B,KAAKi2B,cAAgB,GACrBj2B,KAAKk2B,cAAgB5f,EACrBtW,KAAKm2B,UAAY,GAgHnB,SAASC,GAAKC,GACZ,IAAI5W,GAAS,EACTlkB,EAAoB,MAAX86B,EAAkB,EAAIA,EAAQ96B,OAG3C,IADAyE,KAAKyR,UACIgO,EAAQlkB,GAAQ,CACvB,IAAI+6B,EAAQD,EAAQ5W,GACpBzf,KAAK+C,IAAIuzB,EAAM,GAAIA,EAAM,KAiG7B,SAASC,GAAUF,GACjB,IAAI5W,GAAS,EACTlkB,EAAoB,MAAX86B,EAAkB,EAAIA,EAAQ96B,OAG3C,IADAyE,KAAKyR,UACIgO,EAAQlkB,GAAQ,CACvB,IAAI+6B,EAAQD,EAAQ5W,GACpBzf,KAAK+C,IAAIuzB,EAAM,GAAIA,EAAM,KA8G7B,SAASE,GAASH,GAChB,IAAI5W,GAAS,EACTlkB,EAAoB,MAAX86B,EAAkB,EAAIA,EAAQ96B,OAG3C,IADAyE,KAAKyR,UACIgO,EAAQlkB,GAAQ,CACvB,IAAI+6B,EAAQD,EAAQ5W,GACpBzf,KAAK+C,IAAIuzB,EAAM,GAAIA,EAAM,KAiG7B,SAASG,GAASlW,GAChB,IAAId,GAAS,EACTlkB,EAAmB,MAAVglB,EAAiB,EAAIA,EAAOhlB,OAGzC,IADAyE,KAAK02B,SAAW,IAAIF,KACX/W,EAAQlkB,GACfyE,KAAK+G,IAAIwZ,EAAOd,IA6CpB,SAASkX,GAAMN,GACb,IAAIO,EAAO52B,KAAK02B,SAAW,IAAIH,GAAUF,GACzCr2B,KAAKkvB,KAAO0H,EAAK1H,KAqGnB,SAAS2H,GAAcr8B,EAAOs8B,GAC5B,IAAIC,EAAQvwB,GAAQhM,GAChBw8B,GAASD,GAASE,GAAYz8B,GAC9B08B,GAAUH,IAAUC,GAASt7B,GAASlB,GACtC28B,GAAUJ,IAAUC,IAAUE,GAAUnY,GAAavkB,GACrD48B,EAAcL,GAASC,GAASE,GAAUC,EAC1CnX,EAASoX,EAActV,GAAUtnB,EAAMe,OAAQo1B,IAAU,GACzDp1B,EAASykB,EAAOzkB,OAEpB,IAAK,IAAI7B,KAAOc,GACTs8B,IAAat6B,GAAeC,KAAKjC,EAAOd,IACvC09B,IAEQ,UAAP19B,GAECw9B,IAAkB,UAAPx9B,GAA0B,UAAPA,IAE9By9B,IAAkB,UAAPz9B,GAA0B,cAAPA,GAA8B,cAAPA,IAEtD29B,GAAQ39B,EAAK6B,KAElBykB,EAAO3e,KAAK3H,GAGhB,OAAOsmB,EAUT,SAASsX,GAAYjY,GACnB,IAAI9jB,EAAS8jB,EAAM9jB,OACnB,OAAOA,EAAS8jB,EAAMkY,GAAW,EAAGh8B,EAAS,IAAMuW,EAWrD,SAAS0lB,GAAgBnY,EAAOnkB,GAC9B,OAAOu8B,GAAYC,GAAUrY,GAAQsY,GAAUz8B,EAAG,EAAGmkB,EAAM9jB,SAU7D,SAASq8B,GAAavY,GACpB,OAAOoY,GAAYC,GAAUrY,IAY/B,SAASwY,GAAiBnW,EAAQhoB,EAAKc,IAChCA,IAAUsX,IAAcgmB,GAAGpW,EAAOhoB,GAAMc,IACxCA,IAAUsX,KAAepY,KAAOgoB,KACnCqW,GAAgBrW,EAAQhoB,EAAKc,GAcjC,SAASw9B,GAAYtW,EAAQhoB,EAAKc,GAChC,IAAIy9B,EAAWvW,EAAOhoB,GAChB8C,GAAeC,KAAKilB,EAAQhoB,IAAQo+B,GAAGG,EAAUz9B,KAClDA,IAAUsX,GAAepY,KAAOgoB,IACnCqW,GAAgBrW,EAAQhoB,EAAKc,GAYjC,SAAS09B,GAAa7Y,EAAO3lB,GAE3B,IADA,IAAI6B,EAAS8jB,EAAM9jB,OACZA,KACL,GAAIu8B,GAAGzY,EAAM9jB,GAAQ,GAAI7B,GACvB,OAAO6B,EAGX,OAAQ,EAcV,SAAS48B,GAAenX,EAAY1B,EAAQC,EAAUC,GAIpD,OAHA4Y,GAASpX,GAAY,SAASxmB,EAAOd,EAAKsnB,GACxC1B,EAAOE,EAAahlB,EAAO+kB,EAAS/kB,GAAQwmB,MAEvCxB,EAYT,SAAS6Y,GAAW3W,EAAQpoB,GAC1B,OAAOooB,GAAU4W,GAAWh/B,EAAQE,GAAKF,GAASooB,GAyBpD,SAASqW,GAAgBrW,EAAQhoB,EAAKc,GACzB,aAAPd,GAAsBC,GACxBA,GAAe+nB,EAAQhoB,EAAK,CAC1B6+B,cAAgB,EAChB3+B,YAAc,EACdY,MAASA,EACTg+B,UAAY,IAGd9W,EAAOhoB,GAAOc,EAYlB,SAASi+B,GAAO/W,EAAQgX,GAMtB,IALA,IAAIjZ,GAAS,EACTlkB,EAASm9B,EAAMn9B,OACfykB,EAASzZ,GAAMhL,GACfo9B,EAAiB,MAAVjX,IAEFjC,EAAQlkB,GACfykB,EAAOP,GAASkZ,EAAO7mB,EAAYjY,GAAI6nB,EAAQgX,EAAMjZ,IAEvD,OAAOO,EAYT,SAAS2X,GAAUiB,EAAQC,EAAOC,GAShC,OARIF,GAAWA,IACTE,IAAUhnB,IACZ8mB,EAASA,GAAUE,EAAQF,EAASE,GAElCD,IAAU/mB,IACZ8mB,EAASA,GAAUC,EAAQD,EAASC,IAGjCD,EAmBT,SAASG,GAAUv+B,EAAOw+B,EAASC,EAAYv/B,EAAKgoB,EAAQpM,GAC1D,IAAI0K,EACAkZ,EA5hFc,EA4hFLF,EACTG,EA5hFc,EA4hFLH,EACTI,EA5hFiB,EA4hFRJ,EAKb,GAHIC,IACFjZ,EAAS0B,EAASuX,EAAWz+B,EAAOd,EAAKgoB,EAAQpM,GAAS2jB,EAAWz+B,IAEnEwlB,IAAWlO,EACb,OAAOkO,EAET,IAAKuV,GAAS/6B,GACZ,OAAOA,EAET,IAAIu8B,EAAQvwB,GAAQhM,GACpB,GAAIu8B,GAEF,GADA/W,EA68GJ,SAAwBX,GACtB,IAAI9jB,EAAS8jB,EAAM9jB,OACfykB,EAAS,IAAIX,EAAMzf,YAAYrE,GAG/BA,GAA6B,iBAAZ8jB,EAAM,IAAkB7iB,GAAeC,KAAK4iB,EAAO,WACtEW,EAAOP,MAAQJ,EAAMI,MACrBO,EAAOqZ,MAAQha,EAAMga,OAEvB,OAAOrZ,EAt9GIsZ,CAAe9+B,IACnB0+B,EACH,OAAOxB,GAAUl9B,EAAOwlB,OAErB,CACL,IAAIhU,EAAMutB,GAAO/+B,GACbg/B,EAASxtB,GAAO6K,GAAW7K,GAAO8K,EAEtC,GAAIpb,GAASlB,GACX,OAAOi/B,GAAYj/B,EAAO0+B,GAE5B,GAAIltB,GAAOiL,GAAajL,GAAOwK,GAAYgjB,IAAW9X,GAEpD,GADA1B,EAAUmZ,GAAUK,EAAU,GAAKE,GAAgBl/B,IAC9C0+B,EACH,OAAOC,EA+nEf,SAAuB7/B,EAAQooB,GAC7B,OAAO4W,GAAWh/B,EAAQqgC,GAAargC,GAASooB,GA/nEtCkY,CAAcp/B,EAnH1B,SAAsBknB,EAAQpoB,GAC5B,OAAOooB,GAAU4W,GAAWh/B,EAAQugC,GAAOvgC,GAASooB,GAkHrBoY,CAAa9Z,EAAQxlB,IAknEtD,SAAqBlB,EAAQooB,GAC3B,OAAO4W,GAAWh/B,EAAQygC,GAAWzgC,GAASooB,GAlnEpCsY,CAAYx/B,EAAO69B,GAAWrY,EAAQxlB,QAEvC,CACL,IAAKmiB,GAAc3Q,GACjB,OAAO0V,EAASlnB,EAAQ,GAE1BwlB,EA49GN,SAAwB0B,EAAQ1V,EAAKktB,GACnC,IAAIe,EAAOvY,EAAO9hB,YAClB,OAAQoM,GACN,KAAKwL,EACH,OAAO0iB,GAAiBxY,GAE1B,KAAKhL,EACL,KAAKC,EACH,OAAO,IAAIsjB,GAAMvY,GAEnB,KAAKjK,EACH,OA5nDN,SAAuB0iB,EAAUjB,GAC/B,IAAIkB,EAASlB,EAASgB,GAAiBC,EAASC,QAAUD,EAASC,OACnE,OAAO,IAAID,EAASv6B,YAAYw6B,EAAQD,EAASE,WAAYF,EAASG,YA0nD3DC,CAAc7Y,EAAQwX,GAE/B,KAAKxhB,EAAY,KAAKC,EACtB,KAAKC,EAAS,KAAKC,EAAU,KAAKC,EAClC,KAAKC,EAAU,KAAKC,EAAiB,KAAKC,EAAW,KAAKC,EACxD,OAAOsiB,GAAgB9Y,EAAQwX,GAEjC,KAAKniB,EACH,OAAO,IAAIkjB,EAEb,KAAKjjB,EACL,KAAKK,EACH,OAAO,IAAI4iB,EAAKvY,GAElB,KAAKvK,EACH,OA/nDN,SAAqBsjB,GACnB,IAAIza,EAAS,IAAIya,EAAO76B,YAAY66B,EAAOnhC,OAAQqgB,GAAQjT,KAAK+zB,IAEhE,OADAza,EAAO0P,UAAY+K,EAAO/K,UACnB1P,EA4nDI0a,CAAYhZ,GAErB,KAAKtK,EACH,OAAO,IAAI6iB,EAEb,KAAK3iB,EACH,OAxnDeqjB,EAwnDIjZ,EAvnDhBmT,GAAgBt7B,GAAOs7B,GAAcp4B,KAAKk+B,IAAW,GAD9D,IAAqBA,EAp4DNC,CAAepgC,EAAOwR,EAAKktB,IAIxC5jB,IAAUA,EAAQ,IAAIqhB,IACtB,IAAIkE,EAAUvlB,EAAMzb,IAAIW,GACxB,GAAIqgC,EACF,OAAOA,EAETvlB,EAAMvS,IAAIvI,EAAOwlB,GAEbnB,GAAMrkB,GACRA,EAAMf,SAAQ,SAASqhC,GACrB9a,EAAOjZ,IAAIgyB,GAAU+B,EAAU9B,EAASC,EAAY6B,EAAUtgC,EAAO8a,OAE9DmJ,GAAMjkB,IACfA,EAAMf,SAAQ,SAASqhC,EAAUphC,GAC/BsmB,EAAOjd,IAAIrJ,EAAKq/B,GAAU+B,EAAU9B,EAASC,EAAYv/B,EAAKc,EAAO8a,OAIzE,IAIIrJ,EAAQ8qB,EAAQjlB,GAJLsnB,EACVD,EAAS4B,GAAeC,GACxB7B,EAASU,GAASrgC,IAEkBgB,GASzC,OARAklB,GAAUzT,GAASzR,GAAO,SAASsgC,EAAUphC,GACvCuS,IAEF6uB,EAAWtgC,EADXd,EAAMohC,IAIR9C,GAAYhY,EAAQtmB,EAAKq/B,GAAU+B,EAAU9B,EAASC,EAAYv/B,EAAKc,EAAO8a,OAEzE0K,EAyBT,SAASib,GAAevZ,EAAQpoB,EAAQ2S,GACtC,IAAI1Q,EAAS0Q,EAAM1Q,OACnB,GAAc,MAAVmmB,EACF,OAAQnmB,EAGV,IADAmmB,EAASnoB,GAAOmoB,GACTnmB,KAAU,CACf,IAAI7B,EAAMuS,EAAM1Q,GACZskB,EAAYvmB,EAAOI,GACnBc,EAAQknB,EAAOhoB,GAEnB,GAAKc,IAAUsX,KAAepY,KAAOgoB,KAAa7B,EAAUrlB,GAC1D,OAAO,EAGX,OAAO,EAaT,SAAS0gC,GAAUjc,EAAMkc,EAAMhc,GAC7B,GAAmB,mBAARF,EACT,MAAM,IAAItjB,GAAUia,GAEtB,OAAO+c,IAAW,WAAa1T,EAAKD,MAAMlN,EAAWqN,KAAUgc,GAcjE,SAASC,GAAe/b,EAAOkB,EAAQhB,EAAUa,GAC/C,IAAIX,GAAS,EACT1jB,EAAWkkB,GACXob,GAAW,EACX9/B,EAAS8jB,EAAM9jB,OACfykB,EAAS,GACTsb,EAAe/a,EAAOhlB,OAE1B,IAAKA,EACH,OAAOykB,EAELT,IACFgB,EAASF,GAASE,EAAQwB,GAAUxC,KAElCa,GACFrkB,EAAWokB,GACXkb,GAAW,GAEJ9a,EAAOhlB,QA5sFG,MA6sFjBQ,EAAWkmB,GACXoZ,GAAW,EACX9a,EAAS,IAAIkW,GAASlW,IAExBgb,EACA,OAAS9b,EAAQlkB,GAAQ,CACvB,IAAIf,EAAQ6kB,EAAMI,GACd+b,EAAuB,MAAZjc,EAAmB/kB,EAAQ+kB,EAAS/kB,GAGnD,GADAA,EAAS4lB,GAAwB,IAAV5lB,EAAeA,EAAQ,EAC1C6gC,GAAYG,GAAaA,EAAU,CAErC,IADA,IAAIC,EAAcH,EACXG,KACL,GAAIlb,EAAOkb,KAAiBD,EAC1B,SAASD,EAGbvb,EAAO3e,KAAK7G,QAEJuB,EAASwkB,EAAQib,EAAUpb,IACnCJ,EAAO3e,KAAK7G,GAGhB,OAAOwlB,EAjkCTgV,GAAO0G,iBAAmB,CAQxBC,OAAUjjB,EAQVkjB,SAAYjjB,EAQZkjB,YAAejjB,EAQfkjB,SAAY,GAQZC,QAAW,CAQTj5B,EAAKkyB,KAKTA,GAAOz4B,UAAYi5B,GAAWj5B,UAC9By4B,GAAOz4B,UAAUqD,YAAco1B,GAE/BG,GAAc54B,UAAY84B,GAAWG,GAAWj5B,WAChD44B,GAAc54B,UAAUqD,YAAcu1B,GAsHtCD,GAAY34B,UAAY84B,GAAWG,GAAWj5B,WAC9C24B,GAAY34B,UAAUqD,YAAcs1B,GAoGpCkB,GAAK75B,UAAUkV,MAvEf,WACEzR,KAAK02B,SAAWvC,GAAeA,GAAa,MAAQ,GACpDn0B,KAAKkvB,KAAO,GAsEdkH,GAAK75B,UAAL,OAzDA,SAAoB7C,GAClB,IAAIsmB,EAAShgB,KAAK2G,IAAIjN,WAAesG,KAAK02B,SAASh9B,GAEnD,OADAsG,KAAKkvB,MAAQlP,EAAS,EAAI,EACnBA,GAuDToW,GAAK75B,UAAU1C,IA3Cf,SAAiBH,GACf,IAAIk9B,EAAO52B,KAAK02B,SAChB,GAAIvC,GAAc,CAChB,IAAInU,EAAS4W,EAAKl9B,GAClB,OAAOsmB,IAAWnK,EAAiB/D,EAAYkO,EAEjD,OAAOxjB,GAAeC,KAAKm6B,EAAMl9B,GAAOk9B,EAAKl9B,GAAOoY,GAsCtDskB,GAAK75B,UAAUoK,IA1Bf,SAAiBjN,GACf,IAAIk9B,EAAO52B,KAAK02B,SAChB,OAAOvC,GAAgByC,EAAKl9B,KAASoY,EAAatV,GAAeC,KAAKm6B,EAAMl9B,IAyB9E08B,GAAK75B,UAAUwG,IAZf,SAAiBrJ,EAAKc,GACpB,IAAIo8B,EAAO52B,KAAK02B,SAGhB,OAFA12B,KAAKkvB,MAAQlvB,KAAK2G,IAAIjN,GAAO,EAAI,EACjCk9B,EAAKl9B,GAAQy6B,IAAgB35B,IAAUsX,EAAa+D,EAAiBrb,EAC9DwF,MAyHTu2B,GAAUh6B,UAAUkV,MApFpB,WACEzR,KAAK02B,SAAW,GAChB12B,KAAKkvB,KAAO,GAmFdqH,GAAUh6B,UAAV,OAvEA,SAAyB7C,GACvB,IAAIk9B,EAAO52B,KAAK02B,SACZjX,EAAQyY,GAAatB,EAAMl9B,GAE/B,QAAI+lB,EAAQ,KAIRA,GADYmX,EAAKr7B,OAAS,EAE5Bq7B,EAAKxyB,MAELkI,GAAO7P,KAAKm6B,EAAMnX,EAAO,KAEzBzf,KAAKkvB,MACA,IA0DTqH,GAAUh6B,UAAU1C,IA9CpB,SAAsBH,GACpB,IAAIk9B,EAAO52B,KAAK02B,SACZjX,EAAQyY,GAAatB,EAAMl9B,GAE/B,OAAO+lB,EAAQ,EAAI3N,EAAY8kB,EAAKnX,GAAO,IA2C7C8W,GAAUh6B,UAAUoK,IA/BpB,SAAsBjN,GACpB,OAAOw+B,GAAal4B,KAAK02B,SAAUh9B,IAAQ,GA+B7C68B,GAAUh6B,UAAUwG,IAlBpB,SAAsBrJ,EAAKc,GACzB,IAAIo8B,EAAO52B,KAAK02B,SACZjX,EAAQyY,GAAatB,EAAMl9B,GAQ/B,OANI+lB,EAAQ,KACRzf,KAAKkvB,KACP0H,EAAKv1B,KAAK,CAAC3H,EAAKc,KAEhBo8B,EAAKnX,GAAO,GAAKjlB,EAEZwF,MA2GTw2B,GAASj6B,UAAUkV,MAtEnB,WACEzR,KAAKkvB,KAAO,EACZlvB,KAAK02B,SAAW,CACdsF,KAAQ,IAAI5F,GACZx1B,IAAO,IAAKuM,IAAOopB,IACnBvH,OAAU,IAAIoH,KAkElBI,GAASj6B,UAAT,OArDA,SAAwB7C,GACtB,IAAIsmB,EAASic,GAAWj8B,KAAMtG,GAAjB,OAAgCA,GAE7C,OADAsG,KAAKkvB,MAAQlP,EAAS,EAAI,EACnBA,GAmDTwW,GAASj6B,UAAU1C,IAvCnB,SAAqBH,GACnB,OAAOuiC,GAAWj8B,KAAMtG,GAAKG,IAAIH,IAuCnC88B,GAASj6B,UAAUoK,IA3BnB,SAAqBjN,GACnB,OAAOuiC,GAAWj8B,KAAMtG,GAAKiN,IAAIjN,IA2BnC88B,GAASj6B,UAAUwG,IAdnB,SAAqBrJ,EAAKc,GACxB,IAAIo8B,EAAOqF,GAAWj8B,KAAMtG,GACxBw1B,EAAO0H,EAAK1H,KAIhB,OAFA0H,EAAK7zB,IAAIrJ,EAAKc,GACdwF,KAAKkvB,MAAQ0H,EAAK1H,MAAQA,EAAO,EAAI,EAC9BlvB,MA2DTy2B,GAASl6B,UAAUwK,IAAM0vB,GAASl6B,UAAU8E,KAnB5C,SAAqB7G,GAEnB,OADAwF,KAAK02B,SAAS3zB,IAAIvI,EAAOqb,GAClB7V,MAkBTy2B,GAASl6B,UAAUoK,IANnB,SAAqBnM,GACnB,OAAOwF,KAAK02B,SAAS/vB,IAAInM,IAuG3Bm8B,GAAMp6B,UAAUkV,MA3EhB,WACEzR,KAAK02B,SAAW,IAAIH,GACpBv2B,KAAKkvB,KAAO,GA0EdyH,GAAMp6B,UAAN,OA9DA,SAAqB7C,GACnB,IAAIk9B,EAAO52B,KAAK02B,SACZ1W,EAAS4W,EAAI,OAAWl9B,GAG5B,OADAsG,KAAKkvB,KAAO0H,EAAK1H,KACVlP,GA0DT2W,GAAMp6B,UAAU1C,IA9ChB,SAAkBH,GAChB,OAAOsG,KAAK02B,SAAS78B,IAAIH,IA8C3Bi9B,GAAMp6B,UAAUoK,IAlChB,SAAkBjN,GAChB,OAAOsG,KAAK02B,SAAS/vB,IAAIjN,IAkC3Bi9B,GAAMp6B,UAAUwG,IArBhB,SAAkBrJ,EAAKc,GACrB,IAAIo8B,EAAO52B,KAAK02B,SAChB,GAAIE,aAAgBL,GAAW,CAC7B,IAAI2F,EAAQtF,EAAKF,SACjB,IAAKvpB,IAAQ+uB,EAAM3gC,OAAS4gC,IAG1B,OAFAD,EAAM76B,KAAK,CAAC3H,EAAKc,IACjBwF,KAAKkvB,OAAS0H,EAAK1H,KACZlvB,KAET42B,EAAO52B,KAAK02B,SAAW,IAAIF,GAAS0F,GAItC,OAFAtF,EAAK7zB,IAAIrJ,EAAKc,GACdwF,KAAKkvB,KAAO0H,EAAK1H,KACVlvB,MAscT,IAAIo4B,GAAWgE,GAAeC,IAU1BC,GAAgBF,GAAeG,IAAiB,GAWpD,SAASC,GAAUxb,EAAYnB,GAC7B,IAAIG,GAAS,EAKb,OAJAoY,GAASpX,GAAY,SAASxmB,EAAOilB,EAAOuB,GAE1C,OADAhB,IAAWH,EAAUrlB,EAAOilB,EAAOuB,MAG9BhB,EAaT,SAASyc,GAAapd,EAAOE,EAAUa,GAIrC,IAHA,IAAIX,GAAS,EACTlkB,EAAS8jB,EAAM9jB,SAEVkkB,EAAQlkB,GAAQ,CACvB,IAAIf,EAAQ6kB,EAAMI,GACdoC,EAAUtC,EAAS/kB,GAEvB,GAAe,MAAXqnB,IAAoB2Z,IAAa1pB,EAC5B+P,GAAYA,IAAY6a,GAAS7a,GAClCzB,EAAWyB,EAAS2Z,IAE1B,IAAIA,EAAW3Z,EACX7B,EAASxlB,EAGjB,OAAOwlB,EAuCT,SAAS2c,GAAW3b,EAAYnB,GAC9B,IAAIG,EAAS,GAMb,OALAoY,GAASpX,GAAY,SAASxmB,EAAOilB,EAAOuB,GACtCnB,EAAUrlB,EAAOilB,EAAOuB,IAC1BhB,EAAO3e,KAAK7G,MAGTwlB,EAcT,SAAS4c,GAAYvd,EAAOwd,EAAOhd,EAAWid,EAAU9c,GACtD,IAAIP,GAAS,EACTlkB,EAAS8jB,EAAM9jB,OAKnB,IAHAskB,IAAcA,EAAYkd,IAC1B/c,IAAWA,EAAS,MAEXP,EAAQlkB,GAAQ,CACvB,IAAIf,EAAQ6kB,EAAMI,GACdod,EAAQ,GAAKhd,EAAUrlB,GACrBqiC,EAAQ,EAEVD,GAAYpiC,EAAOqiC,EAAQ,EAAGhd,EAAWid,EAAU9c,GAEnDM,GAAUN,EAAQxlB,GAEVsiC,IACV9c,EAAOA,EAAOzkB,QAAUf,GAG5B,OAAOwlB,EAcT,IAAIgd,GAAUC,KAYVC,GAAeD,IAAc,GAUjC,SAASZ,GAAW3a,EAAQnC,GAC1B,OAAOmC,GAAUsb,GAAQtb,EAAQnC,EAAU/lB,IAW7C,SAAS+iC,GAAgB7a,EAAQnC,GAC/B,OAAOmC,GAAUwb,GAAaxb,EAAQnC,EAAU/lB,IAYlD,SAAS2jC,GAAczb,EAAQzV,GAC7B,OAAO6T,GAAY7T,GAAO,SAASvS,GACjC,OAAO0jC,GAAW1b,EAAOhoB,OAY7B,SAAS2jC,GAAQ3b,EAAQvmB,GAMvB,IAHA,IAAIskB,EAAQ,EACRlkB,GAHJJ,EAAOmiC,GAASniC,EAAMumB,IAGJnmB,OAED,MAAVmmB,GAAkBjC,EAAQlkB,GAC/BmmB,EAASA,EAAO6b,GAAMpiC,EAAKskB,OAE7B,OAAQA,GAASA,GAASlkB,EAAUmmB,EAAS5P,EAc/C,SAAS0rB,GAAe9b,EAAQ+b,EAAUC,GACxC,IAAI1d,EAASyd,EAAS/b,GACtB,OAAOlb,GAAQkb,GAAU1B,EAASM,GAAUN,EAAQ0d,EAAYhc,IAUlE,SAASic,GAAWnjC,GAClB,OAAa,MAATA,EACKA,IAAUsX,EA14FJ,qBARL,gBAo5FFqgB,IAAkBA,MAAkB54B,GAAOiB,GA23FrD,SAAmBA,GACjB,IAAIojC,EAAQphC,GAAeC,KAAKjC,EAAO23B,IACnCnmB,EAAMxR,EAAM23B,IAEhB,IACE33B,EAAM23B,IAAkBrgB,EACxB,IAAI+rB,GAAW,EACf,MAAOpjC,IAET,IAAIulB,EAASoR,GAAqB30B,KAAKjC,GACnCqjC,IACED,EACFpjC,EAAM23B,IAAkBnmB,SAEjBxR,EAAM23B,KAGjB,OAAOnS,EA34FH8d,CAAUtjC,GA+5GhB,SAAwBA,GACtB,OAAO42B,GAAqB30B,KAAKjC,GA/5G7BujC,CAAevjC,GAYrB,SAASwjC,GAAOxjC,EAAOyjC,GACrB,OAAOzjC,EAAQyjC,EAWjB,SAASC,GAAQxc,EAAQhoB,GACvB,OAAiB,MAAVgoB,GAAkBllB,GAAeC,KAAKilB,EAAQhoB,GAWvD,SAASykC,GAAUzc,EAAQhoB,GACzB,OAAiB,MAAVgoB,GAAkBhoB,KAAOH,GAAOmoB,GA0BzC,SAAS0c,GAAiBC,EAAQ9e,EAAUa,GAS1C,IARA,IAAIrkB,EAAWqkB,EAAaD,GAAoBF,GAC5C1kB,EAAS8iC,EAAO,GAAG9iC,OACnB+iC,EAAYD,EAAO9iC,OACnBgjC,EAAWD,EACXE,EAASj4B,GAAM+3B,GACfG,EAAYC,EAAAA,EACZ1e,EAAS,GAENue,KAAY,CACjB,IAAIlf,EAAQgf,EAAOE,GACfA,GAAYhf,IACdF,EAAQgB,GAAShB,EAAO0C,GAAUxC,KAEpCkf,EAAYhL,GAAUpU,EAAM9jB,OAAQkjC,GACpCD,EAAOD,IAAane,IAAeb,GAAahkB,GAAU,KAAO8jB,EAAM9jB,QAAU,KAC7E,IAAIk7B,GAAS8H,GAAYlf,GACzBvN,EAENuN,EAAQgf,EAAO,GAEf,IAAI5e,GAAS,EACTkf,EAAOH,EAAO,GAElBjD,EACA,OAAS9b,EAAQlkB,GAAUykB,EAAOzkB,OAASkjC,GAAW,CACpD,IAAIjkC,EAAQ6kB,EAAMI,GACd+b,EAAWjc,EAAWA,EAAS/kB,GAASA,EAG5C,GADAA,EAAS4lB,GAAwB,IAAV5lB,EAAeA,EAAQ,IACxCmkC,EACE1c,GAAS0c,EAAMnD,GACfz/B,EAASikB,EAAQwb,EAAUpb,IAC5B,CAEL,IADAme,EAAWD,IACFC,GAAU,CACjB,IAAIrc,EAAQsc,EAAOD,GACnB,KAAMrc,EACED,GAASC,EAAOsZ,GAChBz/B,EAASsiC,EAAOE,GAAW/C,EAAUpb,IAE3C,SAASmb,EAGToD,GACFA,EAAKt9B,KAAKm6B,GAEZxb,EAAO3e,KAAK7G,IAGhB,OAAOwlB,EA+BT,SAAS4e,GAAWld,EAAQvmB,EAAMgkB,GAGhC,IAAIF,EAAiB,OADrByC,EAASvS,GAAOuS,EADhBvmB,EAAOmiC,GAASniC,EAAMumB,KAEMA,EAASA,EAAO6b,GAAMsB,GAAK1jC,KACvD,OAAe,MAAR8jB,EAAenN,EAAYkN,GAAMC,EAAMyC,EAAQvC,GAUxD,SAAS2f,GAAgBtkC,GACvB,OAAOy6B,GAAaz6B,IAAUmjC,GAAWnjC,IAAUgc,EAuCrD,SAASuoB,GAAYvkC,EAAOyjC,EAAOjF,EAASC,EAAY3jB,GACtD,OAAI9a,IAAUyjC,IAGD,MAATzjC,GAA0B,MAATyjC,IAAmBhJ,GAAaz6B,KAAWy6B,GAAagJ,GACpEzjC,GAAUA,GAASyjC,GAAUA,EAmBxC,SAAyBvc,EAAQuc,EAAOjF,EAASC,EAAY+F,EAAW1pB,GACtE,IAAI2pB,EAAWz4B,GAAQkb,GACnBwd,EAAW14B,GAAQy3B,GACnBkB,EAASF,EAAWxoB,EAAW8iB,GAAO7X,GACtC0d,EAASF,EAAWzoB,EAAW8iB,GAAO0E,GAKtCoB,GAHJF,EAASA,GAAU3oB,EAAUS,EAAYkoB,IAGhBloB,EACrBqoB,GAHJF,EAASA,GAAU5oB,EAAUS,EAAYmoB,IAGhBnoB,EACrBsoB,EAAYJ,GAAUC,EAE1B,GAAIG,GAAa7jC,GAASgmB,GAAS,CACjC,IAAKhmB,GAASuiC,GACZ,OAAO,EAETgB,GAAW,EACXI,GAAW,EAEb,GAAIE,IAAcF,EAEhB,OADA/pB,IAAUA,EAAQ,IAAIqhB,IACdsI,GAAYlgB,GAAa2C,GAC7B8d,GAAY9d,EAAQuc,EAAOjF,EAASC,EAAY+F,EAAW1pB,GA81EnE,SAAoBoM,EAAQuc,EAAOjyB,EAAKgtB,EAASC,EAAY+F,EAAW1pB,GACtE,OAAQtJ,GACN,KAAKyL,EACH,GAAKiK,EAAO4Y,YAAc2D,EAAM3D,YAC3B5Y,EAAO2Y,YAAc4D,EAAM5D,WAC9B,OAAO,EAET3Y,EAASA,EAAO0Y,OAChB6D,EAAQA,EAAM7D,OAEhB,KAAK5iB,EACH,QAAKkK,EAAO4Y,YAAc2D,EAAM3D,aAC3B0E,EAAU,IAAIxN,GAAW9P,GAAS,IAAI8P,GAAWyM,KAKxD,KAAKvnB,EACL,KAAKC,EACL,KAAKK,EAGH,OAAO8gB,IAAIpW,GAASuc,GAEtB,KAAKrnB,EACH,OAAO8K,EAAO1a,MAAQi3B,EAAMj3B,MAAQ0a,EAAOtM,SAAW6oB,EAAM7oB,QAE9D,KAAK+B,EACL,KAAKE,EAIH,OAAOqK,GAAWuc,EAAQ,GAE5B,KAAKlnB,EACH,IAAI0oB,EAAUxQ,GAEhB,KAAK7X,EACH,IAAIsoB,EA/kLe,EA+kLH1G,EAGhB,GAFAyG,IAAYA,EAAUlQ,IAElB7N,EAAOwN,MAAQ+O,EAAM/O,OAASwQ,EAChC,OAAO,EAGT,IAAI7E,EAAUvlB,EAAMzb,IAAI6nB,GACxB,GAAImZ,EACF,OAAOA,GAAWoD,EAEpBjF,GAzlLqB,EA4lLrB1jB,EAAMvS,IAAI2e,EAAQuc,GAClB,IAAIje,EAASwf,GAAYC,EAAQ/d,GAAS+d,EAAQxB,GAAQjF,EAASC,EAAY+F,EAAW1pB,GAE1F,OADAA,EAAK,OAAWoM,GACT1B,EAET,KAAK1I,EACH,GAAIud,GACF,OAAOA,GAAcp4B,KAAKilB,IAAWmT,GAAcp4B,KAAKwhC,GAG9D,OAAO,EA35ED0B,CAAWje,EAAQuc,EAAOkB,EAAQnG,EAASC,EAAY+F,EAAW1pB,GAExE,KA9sGuB,EA8sGjB0jB,GAAiC,CACrC,IAAI4G,EAAeP,GAAY7iC,GAAeC,KAAKilB,EAAQ,eACvDme,EAAeP,GAAY9iC,GAAeC,KAAKwhC,EAAO,eAE1D,GAAI2B,GAAgBC,EAAc,CAChC,IAAIC,EAAeF,EAAele,EAAOlnB,QAAUknB,EAC/Cqe,EAAeF,EAAe5B,EAAMzjC,QAAUyjC,EAGlD,OADA3oB,IAAUA,EAAQ,IAAIqhB,IACfqI,EAAUc,EAAcC,EAAc/G,EAASC,EAAY3jB,IAGtE,IAAKiqB,EACH,OAAO,EAGT,OADAjqB,IAAUA,EAAQ,IAAIqhB,IA05ExB,SAAsBjV,EAAQuc,EAAOjF,EAASC,EAAY+F,EAAW1pB,GACnE,IAAIoqB,EAxnLmB,EAwnLP1G,EACZgH,EAAWhF,GAAWtZ,GACtBue,EAAYD,EAASzkC,OAErB+iC,EADWtD,GAAWiD,GACD1iC,OAEzB,GAAI0kC,GAAa3B,IAAcoB,EAC7B,OAAO,EAET,IAAIjgB,EAAQwgB,EACZ,KAAOxgB,KAAS,CACd,IAAI/lB,EAAMsmC,EAASvgB,GACnB,KAAMigB,EAAYhmC,KAAOukC,EAAQzhC,GAAeC,KAAKwhC,EAAOvkC,IAC1D,OAAO,EAIX,IAAIwmC,EAAa5qB,EAAMzb,IAAI6nB,GACvBye,EAAa7qB,EAAMzb,IAAIokC,GAC3B,GAAIiC,GAAcC,EAChB,OAAOD,GAAcjC,GAASkC,GAAcze,EAE9C,IAAI1B,GAAS,EACb1K,EAAMvS,IAAI2e,EAAQuc,GAClB3oB,EAAMvS,IAAIk7B,EAAOvc,GAEjB,IAAI0e,EAAWV,EACf,OAASjgB,EAAQwgB,GAAW,CAE1B,IAAIhI,EAAWvW,EADfhoB,EAAMsmC,EAASvgB,IAEX4gB,EAAWpC,EAAMvkC,GAErB,GAAIu/B,EACF,IAAIqH,EAAWZ,EACXzG,EAAWoH,EAAUpI,EAAUv+B,EAAKukC,EAAOvc,EAAQpM,GACnD2jB,EAAWhB,EAAUoI,EAAU3mC,EAAKgoB,EAAQuc,EAAO3oB,GAGzD,KAAMgrB,IAAaxuB,EACVmmB,IAAaoI,GAAYrB,EAAU/G,EAAUoI,EAAUrH,EAASC,EAAY3jB,GAC7EgrB,GACD,CACLtgB,GAAS,EACT,MAEFogB,IAAaA,EAAkB,eAAP1mC,GAE1B,GAAIsmB,IAAWogB,EAAU,CACvB,IAAIG,EAAU7e,EAAO9hB,YACjB4gC,EAAUvC,EAAMr+B,YAGhB2gC,GAAWC,KACV,gBAAiB9e,MAAU,gBAAiBuc,IACzB,mBAAXsC,GAAyBA,aAAmBA,GACjC,mBAAXC,GAAyBA,aAAmBA,IACvDxgB,GAAS,GAKb,OAFA1K,EAAK,OAAWoM,GAChBpM,EAAK,OAAW2oB,GACTje,EAv9EAygB,CAAa/e,EAAQuc,EAAOjF,EAASC,EAAY+F,EAAW1pB,GA3D5DorB,CAAgBlmC,EAAOyjC,EAAOjF,EAASC,EAAY8F,GAAazpB,IAmFzE,SAASqrB,GAAYjf,EAAQpoB,EAAQsnC,EAAW3H,GAC9C,IAAIxZ,EAAQmhB,EAAUrlC,OAClBA,EAASkkB,EACTohB,GAAgB5H,EAEpB,GAAc,MAAVvX,EACF,OAAQnmB,EAGV,IADAmmB,EAASnoB,GAAOmoB,GACTjC,KAAS,CACd,IAAImX,EAAOgK,EAAUnhB,GACrB,GAAKohB,GAAgBjK,EAAK,GAClBA,EAAK,KAAOlV,EAAOkV,EAAK,MACtBA,EAAK,KAAMlV,GAEnB,OAAO,EAGX,OAASjC,EAAQlkB,GAAQ,CAEvB,IAAI7B,GADJk9B,EAAOgK,EAAUnhB,IACF,GACXwY,EAAWvW,EAAOhoB,GAClBonC,EAAWlK,EAAK,GAEpB,GAAIiK,GAAgBjK,EAAK,IACvB,GAAIqB,IAAanmB,KAAepY,KAAOgoB,GACrC,OAAO,MAEJ,CACL,IAAIpM,EAAQ,IAAIqhB,GAChB,GAAIsC,EACF,IAAIjZ,EAASiZ,EAAWhB,EAAU6I,EAAUpnC,EAAKgoB,EAAQpoB,EAAQgc,GAEnE,KAAM0K,IAAWlO,EACTitB,GAAY+B,EAAU7I,EAAU8I,EAA+C9H,EAAY3jB,GAC3F0K,GAEN,OAAO,GAIb,OAAO,EAWT,SAASghB,GAAaxmC,GACpB,SAAK+6B,GAAS/6B,KA05FEykB,EA15FiBzkB,EA25FxB02B,IAAeA,MAAcjS,MAx5FxBme,GAAW5iC,GAAS+2B,GAAazX,IAChC1c,KAAKm3B,GAAS/5B,IAs5F/B,IAAkBykB,EA12FlB,SAASgiB,GAAazmC,GAGpB,MAAoB,mBAATA,EACFA,EAEI,MAATA,EACK0mC,GAEW,iBAAT1mC,EACFgM,GAAQhM,GACX2mC,GAAoB3mC,EAAM,GAAIA,EAAM,IACpC4mC,GAAY5mC,GAEX6mC,GAAS7mC,GAUlB,SAAS8mC,GAAS5f,GAChB,IAAK6f,GAAY7f,GACf,OAAO4R,GAAW5R,GAEpB,IAAI1B,EAAS,GACb,IAAK,IAAItmB,KAAOH,GAAOmoB,GACjBllB,GAAeC,KAAKilB,EAAQhoB,IAAe,eAAPA,GACtCsmB,EAAO3e,KAAK3H,GAGhB,OAAOsmB,EAUT,SAASwhB,GAAW9f,GAClB,IAAK6T,GAAS7T,GACZ,OA09FJ,SAAsBA,GACpB,IAAI1B,EAAS,GACb,GAAc,MAAV0B,EACF,IAAK,IAAIhoB,KAAOH,GAAOmoB,GACrB1B,EAAO3e,KAAK3H,GAGhB,OAAOsmB,EAj+FEyhB,CAAa/f,GAEtB,IAAIggB,EAAUH,GAAY7f,GACtB1B,EAAS,GAEb,IAAK,IAAItmB,KAAOgoB,GACD,eAAPhoB,IAAyBgoC,GAAYllC,GAAeC,KAAKilB,EAAQhoB,KACrEsmB,EAAO3e,KAAK3H,GAGhB,OAAOsmB,EAYT,SAAS2hB,GAAOnnC,EAAOyjC,GACrB,OAAOzjC,EAAQyjC,EAWjB,SAAS2D,GAAQ5gB,EAAYzB,GAC3B,IAAIE,GAAS,EACTO,EAAS6hB,GAAY7gB,GAAcza,GAAMya,EAAWzlB,QAAU,GAKlE,OAHA68B,GAASpX,GAAY,SAASxmB,EAAOd,EAAKsnB,GACxChB,IAASP,GAASF,EAAS/kB,EAAOd,EAAKsnB,MAElChB,EAUT,SAASohB,GAAY9nC,GACnB,IAAIsnC,EAAYkB,GAAaxoC,GAC7B,OAAwB,GAApBsnC,EAAUrlC,QAAeqlC,EAAU,GAAG,GACjCmB,GAAwBnB,EAAU,GAAG,GAAIA,EAAU,GAAG,IAExD,SAASlf,GACd,OAAOA,IAAWpoB,GAAUqnC,GAAYjf,EAAQpoB,EAAQsnC,IAY5D,SAASO,GAAoBhmC,EAAM2lC,GACjC,OAAIkB,GAAM7mC,IAAS8mC,GAAmBnB,GAC7BiB,GAAwBxE,GAAMpiC,GAAO2lC,GAEvC,SAASpf,GACd,IAAIuW,EAAWp+B,GAAI6nB,EAAQvmB,GAC3B,OAAQ88B,IAAanmB,GAAammB,IAAa6I,EAC3CoB,GAAMxgB,EAAQvmB,GACd4jC,GAAY+B,EAAU7I,EAAU8I,IAexC,SAASoB,GAAUzgB,EAAQpoB,EAAQ8oC,EAAUnJ,EAAY3jB,GACnDoM,IAAWpoB,GAGf0jC,GAAQ1jC,GAAQ,SAASwnC,EAAUpnC,GAEjC,GADA4b,IAAUA,EAAQ,IAAIqhB,IAClBpB,GAASuL,IA+BjB,SAAuBpf,EAAQpoB,EAAQI,EAAK0oC,EAAUC,EAAWpJ,EAAY3jB,GAC3E,IAAI2iB,EAAWqK,GAAQ5gB,EAAQhoB,GAC3BonC,EAAWwB,GAAQhpC,EAAQI,GAC3BmhC,EAAUvlB,EAAMzb,IAAIinC,GAExB,GAAIjG,EAEF,YADAhD,GAAiBnW,EAAQhoB,EAAKmhC,GAGhC,IAAIhtB,EAAWorB,EACXA,EAAWhB,EAAU6I,EAAWpnC,EAAM,GAAKgoB,EAAQpoB,EAAQgc,GAC3DxD,EAEAupB,EAAWxtB,IAAaiE,EAE5B,GAAIupB,EAAU,CACZ,IAAItE,EAAQvwB,GAAQs6B,GAChB5J,GAAUH,GAASr7B,GAASolC,GAC5ByB,GAAWxL,IAAUG,GAAUnY,GAAa+hB,GAEhDjzB,EAAWizB,EACP/J,GAASG,GAAUqL,EACjB/7B,GAAQyxB,GACVpqB,EAAWoqB,EAEJuK,GAAkBvK,GACzBpqB,EAAW6pB,GAAUO,GAEdf,GACPmE,GAAW,EACXxtB,EAAW4rB,GAAYqH,GAAU,IAE1ByB,GACPlH,GAAW,EACXxtB,EAAW2sB,GAAgBsG,GAAU,IAGrCjzB,EAAW,GAGN40B,GAAc3B,IAAa7J,GAAY6J,IAC9CjzB,EAAWoqB,EACPhB,GAAYgB,GACdpqB,EAAW60B,GAAczK,GAEjB1C,GAAS0C,KAAamF,GAAWnF,KACzCpqB,EAAW6rB,GAAgBoH,KAI7BzF,GAAW,EAGXA,IAEF/lB,EAAMvS,IAAI+9B,EAAUjzB,GACpBw0B,EAAUx0B,EAAUizB,EAAUsB,EAAUnJ,EAAY3jB,GACpDA,EAAK,OAAWwrB,IAElBjJ,GAAiBnW,EAAQhoB,EAAKmU,GAzF1B80B,CAAcjhB,EAAQpoB,EAAQI,EAAK0oC,EAAUD,GAAWlJ,EAAY3jB,OAEjE,CACH,IAAIzH,EAAWorB,EACXA,EAAWqJ,GAAQ5gB,EAAQhoB,GAAMonC,EAAWpnC,EAAM,GAAKgoB,EAAQpoB,EAAQgc,GACvExD,EAEAjE,IAAaiE,IACfjE,EAAWizB,GAEbjJ,GAAiBnW,EAAQhoB,EAAKmU,MAE/BgsB,IAwFL,SAAS+I,GAAQvjB,EAAOnkB,GACtB,IAAIK,EAAS8jB,EAAM9jB,OACnB,GAAKA,EAIL,OAAO87B,GADPn8B,GAAKA,EAAI,EAAIK,EAAS,EACJA,GAAU8jB,EAAMnkB,GAAK4W,EAYzC,SAAS+wB,GAAY7hB,EAAY8hB,EAAWC,GAExCD,EADEA,EAAUvnC,OACA8kB,GAASyiB,GAAW,SAASvjB,GACvC,OAAI/Y,GAAQ+Y,GACH,SAAS/kB,GACd,OAAO6iC,GAAQ7iC,EAA2B,IAApB+kB,EAAShkB,OAAegkB,EAAS,GAAKA,IAGzDA,KAGG,CAAC2hB,IAGf,IAAIzhB,GAAS,EAUb,OATAqjB,EAAYziB,GAASyiB,EAAW/gB,GAAUihB,OAvvF9C,SAAoB3jB,EAAO4jB,GACzB,IAAI1nC,EAAS8jB,EAAM9jB,OAGnB,IADA8jB,EAAM6jB,KAAKD,GACJ1nC,KACL8jB,EAAM9jB,GAAU8jB,EAAM9jB,GAAQf,MAEhC,OAAO6kB,EAyvFE8jB,CAPMvB,GAAQ5gB,GAAY,SAASxmB,EAAOd,EAAKsnB,GAIpD,MAAO,CAAEoiB,SAHM/iB,GAASyiB,GAAW,SAASvjB,GAC1C,OAAOA,EAAS/kB,MAEailB,QAAWA,EAAOjlB,MAASA,OAGlC,SAASknB,EAAQuc,GACzC,OA04BJ,SAAyBvc,EAAQuc,EAAO8E,GACtC,IAAItjB,GAAS,EACT4jB,EAAc3hB,EAAO0hB,SACrBE,EAAcrF,EAAMmF,SACpB7nC,EAAS8nC,EAAY9nC,OACrBgoC,EAAeR,EAAOxnC,OAE1B,OAASkkB,EAAQlkB,GAAQ,CACvB,IAAIykB,EAASwjB,GAAiBH,EAAY5jB,GAAQ6jB,EAAY7jB,IAC9D,GAAIO,EACF,OAAIP,GAAS8jB,EACJvjB,EAGFA,GAAmB,QADd+iB,EAAOtjB,IACiB,EAAI,GAU5C,OAAOiC,EAAOjC,MAAQwe,EAAMxe,MAl6BnBgkB,CAAgB/hB,EAAQuc,EAAO8E,MA4B1C,SAASW,GAAWhiB,EAAQgX,EAAO7Y,GAKjC,IAJA,IAAIJ,GAAS,EACTlkB,EAASm9B,EAAMn9B,OACfykB,EAAS,KAEJP,EAAQlkB,GAAQ,CACvB,IAAIJ,EAAOu9B,EAAMjZ,GACbjlB,EAAQ6iC,GAAQ3b,EAAQvmB,GAExB0kB,EAAUrlB,EAAOW,IACnBwoC,GAAQ3jB,EAAQsd,GAASniC,EAAMumB,GAASlnB,GAG5C,OAAOwlB,EA2BT,SAAS4jB,GAAYvkB,EAAOkB,EAAQhB,EAAUa,GAC5C,IAAIyjB,EAAUzjB,EAAamB,GAAkBrB,GACzCT,GAAS,EACTlkB,EAASglB,EAAOhlB,OAChBojC,EAAOtf,EAQX,IANIA,IAAUkB,IACZA,EAASmX,GAAUnX,IAEjBhB,IACFof,EAAOte,GAAShB,EAAO0C,GAAUxC,OAE1BE,EAAQlkB,GAKf,IAJA,IAAI4lB,EAAY,EACZ3mB,EAAQ+lB,EAAOd,GACf+b,EAAWjc,EAAWA,EAAS/kB,GAASA,GAEpC2mB,EAAY0iB,EAAQlF,EAAMnD,EAAUra,EAAWf,KAAgB,GACjEue,IAAStf,GACX/S,GAAO7P,KAAKkiC,EAAMxd,EAAW,GAE/B7U,GAAO7P,KAAK4iB,EAAO8B,EAAW,GAGlC,OAAO9B,EAYT,SAASykB,GAAWzkB,EAAO0kB,GAIzB,IAHA,IAAIxoC,EAAS8jB,EAAQ0kB,EAAQxoC,OAAS,EAClCm0B,EAAYn0B,EAAS,EAElBA,KAAU,CACf,IAAIkkB,EAAQskB,EAAQxoC,GACpB,GAAIA,GAAUm0B,GAAajQ,IAAUukB,EAAU,CAC7C,IAAIA,EAAWvkB,EACX4X,GAAQ5X,GACVnT,GAAO7P,KAAK4iB,EAAOI,EAAO,GAE1BwkB,GAAU5kB,EAAOI,IAIvB,OAAOJ,EAYT,SAASkY,GAAWsB,EAAOC,GACzB,OAAOD,EAAQ/F,GAAYe,MAAkBiF,EAAQD,EAAQ,IAkC/D,SAASqL,GAAWlV,EAAQ9zB,GAC1B,IAAI8kB,EAAS,GACb,IAAKgP,GAAU9zB,EAAI,GAAKA,EAAI2B,EAC1B,OAAOmjB,EAIT,GACM9kB,EAAI,IACN8kB,GAAUgP,IAEZ9zB,EAAI43B,GAAY53B,EAAI,MAElB8zB,GAAUA,SAEL9zB,GAET,OAAO8kB,EAWT,SAASmkB,GAASllB,EAAMmlB,GACtB,OAAOC,GAAYC,GAASrlB,EAAMmlB,EAAOlD,IAAWjiB,EAAO,IAU7D,SAASslB,GAAWvjB,GAClB,OAAOsW,GAAY/W,GAAOS,IAW5B,SAASwjB,GAAexjB,EAAY9lB,GAClC,IAAImkB,EAAQkB,GAAOS,GACnB,OAAOyW,GAAYpY,EAAOsY,GAAUz8B,EAAG,EAAGmkB,EAAM9jB,SAalD,SAASooC,GAAQjiB,EAAQvmB,EAAMX,EAAOy+B,GACpC,IAAK1D,GAAS7T,GACZ,OAAOA,EAST,IALA,IAAIjC,GAAS,EACTlkB,GAHJJ,EAAOmiC,GAASniC,EAAMumB,IAGJnmB,OACdm0B,EAAYn0B,EAAS,EACrBkpC,EAAS/iB,EAEI,MAAV+iB,KAAoBhlB,EAAQlkB,GAAQ,CACzC,IAAI7B,EAAM6jC,GAAMpiC,EAAKskB,IACjB5R,EAAWrT,EAEf,GAAY,cAARd,GAA+B,gBAARA,GAAiC,cAARA,EAClD,OAAOgoB,EAGT,GAAIjC,GAASiQ,EAAW,CACtB,IAAIuI,EAAWwM,EAAO/qC,IACtBmU,EAAWorB,EAAaA,EAAWhB,EAAUv+B,EAAK+qC,GAAU3yB,KAC3CA,IACfjE,EAAW0nB,GAAS0C,GAChBA,EACCZ,GAAQl8B,EAAKskB,EAAQ,IAAM,GAAK,IAGzCuY,GAAYyM,EAAQ/qC,EAAKmU,GACzB42B,EAASA,EAAO/qC,GAElB,OAAOgoB,EAWT,IAAIgjB,GAAetQ,GAAqB,SAASnV,EAAM2X,GAErD,OADAxC,GAAQrxB,IAAIkc,EAAM2X,GACX3X,GAFoBiiB,GAazByD,GAAmBhrC,GAA4B,SAASslB,EAAM+P,GAChE,OAAOr1B,GAAeslB,EAAM,WAAY,CACtCsZ,cAAgB,EAChB3+B,YAAc,EACdY,MAASoqC,GAAS5V,GAClBwJ,UAAY,KALwB0I,GAgBxC,SAAS2D,GAAY7jB,GACnB,OAAOyW,GAAYlX,GAAOS,IAY5B,SAAS8jB,GAAUzlB,EAAO+kB,EAAOW,GAC/B,IAAItlB,GAAS,EACTlkB,EAAS8jB,EAAM9jB,OAEf6oC,EAAQ,IACVA,GAASA,EAAQ7oC,EAAS,EAAKA,EAAS6oC,IAE1CW,EAAMA,EAAMxpC,EAASA,EAASwpC,GACpB,IACRA,GAAOxpC,GAETA,EAAS6oC,EAAQW,EAAM,EAAMA,EAAMX,IAAW,EAC9CA,KAAW,EAGX,IADA,IAAIpkB,EAASzZ,GAAMhL,KACVkkB,EAAQlkB,GACfykB,EAAOP,GAASJ,EAAMI,EAAQ2kB,GAEhC,OAAOpkB,EAYT,SAASglB,GAAShkB,EAAYnB,GAC5B,IAAIG,EAMJ,OAJAoY,GAASpX,GAAY,SAASxmB,EAAOilB,EAAOuB,GAE1C,QADAhB,EAASH,EAAUrlB,EAAOilB,EAAOuB,SAG1BhB,EAeX,SAASilB,GAAgB5lB,EAAO7kB,EAAO0qC,GACrC,IAAIC,EAAM,EACNC,EAAgB,MAAT/lB,EAAgB8lB,EAAM9lB,EAAM9jB,OAEvC,GAAoB,iBAATf,GAAqBA,GAAUA,GAAS4qC,GA18H3B9uB,WA08H0D,CAChF,KAAO6uB,EAAMC,GAAM,CACjB,IAAIC,EAAOF,EAAMC,IAAU,EACvB5J,EAAWnc,EAAMgmB,GAEJ,OAAb7J,IAAsBkB,GAASlB,KAC9B0J,EAAc1J,GAAYhhC,EAAUghC,EAAWhhC,GAClD2qC,EAAME,EAAM,EAEZD,EAAOC,EAGX,OAAOD,EAET,OAAOE,GAAkBjmB,EAAO7kB,EAAO0mC,GAAUgE,GAgBnD,SAASI,GAAkBjmB,EAAO7kB,EAAO+kB,EAAU2lB,GACjD,IAAIC,EAAM,EACNC,EAAgB,MAAT/lB,EAAgB,EAAIA,EAAM9jB,OACrC,GAAa,IAAT6pC,EACF,OAAO,EAST,IALA,IAAIG,GADJ/qC,EAAQ+kB,EAAS/kB,KACQA,EACrBgrC,EAAsB,OAAVhrC,EACZirC,EAAc/I,GAASliC,GACvBkrC,EAAiBlrC,IAAUsX,EAExBqzB,EAAMC,GAAM,CACjB,IAAIC,EAAMvS,IAAaqS,EAAMC,GAAQ,GACjC5J,EAAWjc,EAASF,EAAMgmB,IAC1BM,EAAenK,IAAa1pB,EAC5B8zB,EAAyB,OAAbpK,EACZqK,EAAiBrK,GAAaA,EAC9BsK,EAAcpJ,GAASlB,GAE3B,GAAI+J,EACF,IAAIQ,EAASb,GAAcW,OAE3BE,EADSL,EACAG,IAAmBX,GAAcS,GACjCH,EACAK,GAAkBF,IAAiBT,IAAeU,GAClDH,EACAI,GAAkBF,IAAiBC,IAAcV,IAAeY,IAChEF,IAAaE,IAGbZ,EAAc1J,GAAYhhC,EAAUghC,EAAWhhC,GAEtDurC,EACFZ,EAAME,EAAM,EAEZD,EAAOC,EAGX,OAAO5R,GAAU2R,EAjhIC9uB,YA6hIpB,SAAS0vB,GAAe3mB,EAAOE,GAM7B,IALA,IAAIE,GAAS,EACTlkB,EAAS8jB,EAAM9jB,OACfwkB,EAAW,EACXC,EAAS,KAEJP,EAAQlkB,GAAQ,CACvB,IAAIf,EAAQ6kB,EAAMI,GACd+b,EAAWjc,EAAWA,EAAS/kB,GAASA,EAE5C,IAAKilB,IAAUqY,GAAG0D,EAAUmD,GAAO,CACjC,IAAIA,EAAOnD,EACXxb,EAAOD,KAAwB,IAAVvlB,EAAc,EAAIA,GAG3C,OAAOwlB,EAWT,SAASimB,GAAazrC,GACpB,MAAoB,iBAATA,EACFA,EAELkiC,GAASliC,GACJ6b,GAED7b,EAWV,SAAS0rC,GAAa1rC,GAEpB,GAAoB,iBAATA,EACT,OAAOA,EAET,GAAIgM,GAAQhM,GAEV,OAAO6lB,GAAS7lB,EAAO0rC,IAAgB,GAEzC,GAAIxJ,GAASliC,GACX,OAAOu6B,GAAiBA,GAAet4B,KAAKjC,GAAS,GAEvD,IAAIwlB,EAAUxlB,EAAQ,GACtB,MAAkB,KAAVwlB,GAAkB,EAAIxlB,IAAU,EAAA,EAAa,KAAOwlB,EAY9D,SAASmmB,GAAS9mB,EAAOE,EAAUa,GACjC,IAAIX,GAAS,EACT1jB,EAAWkkB,GACX1kB,EAAS8jB,EAAM9jB,OACf8/B,GAAW,EACXrb,EAAS,GACT2e,EAAO3e,EAEX,GAAII,EACFib,GAAW,EACXt/B,EAAWokB,QAER,GAAI5kB,GAvqIU,IAuqIkB,CACnC,IAAIwH,EAAMwc,EAAW,KAAO6mB,GAAU/mB,GACtC,GAAItc,EACF,OAAOwsB,GAAWxsB,GAEpBs4B,GAAW,EACXt/B,EAAWkmB,GACX0c,EAAO,IAAIlI,QAGXkI,EAAOpf,EAAW,GAAKS,EAEzBub,EACA,OAAS9b,EAAQlkB,GAAQ,CACvB,IAAIf,EAAQ6kB,EAAMI,GACd+b,EAAWjc,EAAWA,EAAS/kB,GAASA,EAG5C,GADAA,EAAS4lB,GAAwB,IAAV5lB,EAAeA,EAAQ,EAC1C6gC,GAAYG,GAAaA,EAAU,CAErC,IADA,IAAI6K,EAAY1H,EAAKpjC,OACd8qC,KACL,GAAI1H,EAAK0H,KAAe7K,EACtB,SAASD,EAGThc,GACFof,EAAKt9B,KAAKm6B,GAEZxb,EAAO3e,KAAK7G,QAEJuB,EAAS4iC,EAAMnD,EAAUpb,KAC7Bue,IAAS3e,GACX2e,EAAKt9B,KAAKm6B,GAEZxb,EAAO3e,KAAK7G,IAGhB,OAAOwlB,EAWT,SAASikB,GAAUviB,EAAQvmB,GAGzB,OAAiB,OADjBumB,EAASvS,GAAOuS,EADhBvmB,EAAOmiC,GAASniC,EAAMumB,aAEUA,EAAO6b,GAAMsB,GAAK1jC,KAapD,SAASmrC,GAAW5kB,EAAQvmB,EAAMorC,EAAStN,GACzC,OAAO0K,GAAQjiB,EAAQvmB,EAAMorC,EAAQlJ,GAAQ3b,EAAQvmB,IAAQ89B,GAc/D,SAASuN,GAAUnnB,EAAOQ,EAAW4mB,EAAQrlB,GAI3C,IAHA,IAAI7lB,EAAS8jB,EAAM9jB,OACfkkB,EAAQ2B,EAAY7lB,GAAU,GAE1B6lB,EAAY3B,MAAYA,EAAQlkB,IACtCskB,EAAUR,EAAMI,GAAQA,EAAOJ,KAEjC,OAAOonB,EACH3B,GAAUzlB,EAAQ+B,EAAY,EAAI3B,EAAS2B,EAAY3B,EAAQ,EAAIlkB,GACnEupC,GAAUzlB,EAAQ+B,EAAY3B,EAAQ,EAAI,EAAK2B,EAAY7lB,EAASkkB,GAa1E,SAASinB,GAAiBlsC,EAAOmsC,GAC/B,IAAI3mB,EAASxlB,EAIb,OAHIwlB,aAAkBkV,KACpBlV,EAASA,EAAOxlB,SAEXimB,GAAYkmB,GAAS,SAAS3mB,EAAQ4mB,GAC3C,OAAOA,EAAO3nB,KAAKD,MAAM4nB,EAAO1nB,QAASoB,GAAU,CAACN,GAAS4mB,EAAOznB,SACnEa,GAaL,SAAS6mB,GAAQxI,EAAQ9e,EAAUa,GACjC,IAAI7kB,EAAS8iC,EAAO9iC,OACpB,GAAIA,EAAS,EACX,OAAOA,EAAS4qC,GAAS9H,EAAO,IAAM,GAKxC,IAHA,IAAI5e,GAAS,EACTO,EAASzZ,GAAMhL,KAEVkkB,EAAQlkB,GAIf,IAHA,IAAI8jB,EAAQgf,EAAO5e,GACf8e,GAAY,IAEPA,EAAWhjC,GACdgjC,GAAY9e,IACdO,EAAOP,GAAS2b,GAAepb,EAAOP,IAAUJ,EAAOgf,EAAOE,GAAWhf,EAAUa,IAIzF,OAAO+lB,GAASvJ,GAAY5c,EAAQ,GAAIT,EAAUa,GAYpD,SAAS0mB,GAAc76B,EAAOsU,EAAQwmB,GAMpC,IALA,IAAItnB,GAAS,EACTlkB,EAAS0Q,EAAM1Q,OACfyrC,EAAazmB,EAAOhlB,OACpBykB,EAAS,KAEJP,EAAQlkB,GAAQ,CACvB,IAAIf,EAAQilB,EAAQunB,EAAazmB,EAAOd,GAAS3N,EACjDi1B,EAAW/mB,EAAQ/T,EAAMwT,GAAQjlB,GAEnC,OAAOwlB,EAUT,SAASinB,GAAoBzsC,GAC3B,OAAOgoC,GAAkBhoC,GAASA,EAAQ,GAU5C,SAAS0sC,GAAa1sC,GACpB,MAAuB,mBAATA,EAAsBA,EAAQ0mC,GAW9C,SAAS5D,GAAS9iC,EAAOknB,GACvB,OAAIlb,GAAQhM,GACHA,EAEFwnC,GAAMxnC,EAAOknB,GAAU,CAAClnB,GAAS2sC,GAAa7qC,GAAS9B,IAYhE,IAAI4sC,GAAWjD,GAWf,SAASkD,GAAUhoB,EAAO+kB,EAAOW,GAC/B,IAAIxpC,EAAS8jB,EAAM9jB,OAEnB,OADAwpC,EAAMA,IAAQjzB,EAAYvW,EAASwpC,GAC1BX,GAASW,GAAOxpC,EAAU8jB,EAAQylB,GAAUzlB,EAAO+kB,EAAOW,GASrE,IAAIxS,GAAeD,IAAmB,SAASgV,GAC7C,OAAO7pB,GAAK8U,aAAa+U,IAW3B,SAAS7N,GAAYW,EAAQlB,GAC3B,GAAIA,EACF,OAAOkB,EAAOx+B,QAEhB,IAAIL,EAAS6+B,EAAO7+B,OAChBykB,EAASyR,GAAcA,GAAYl2B,GAAU,IAAI6+B,EAAOx6B,YAAYrE,GAGxE,OADA6+B,EAAOmN,KAAKvnB,GACLA,EAUT,SAASka,GAAiBsN,GACxB,IAAIxnB,EAAS,IAAIwnB,EAAY5nC,YAAY4nC,EAAYlN,YAErD,OADA,IAAI9I,GAAWxR,GAAQjd,IAAI,IAAIyuB,GAAWgW,IACnCxnB,EAgDT,SAASwa,GAAgBiN,EAAYvO,GACnC,IAAIkB,EAASlB,EAASgB,GAAiBuN,EAAWrN,QAAUqN,EAAWrN,OACvE,OAAO,IAAIqN,EAAW7nC,YAAYw6B,EAAQqN,EAAWpN,WAAYoN,EAAWlsC,QAW9E,SAASioC,GAAiBhpC,EAAOyjC,GAC/B,GAAIzjC,IAAUyjC,EAAO,CACnB,IAAIyJ,EAAeltC,IAAUsX,EACzB0zB,EAAsB,OAAVhrC,EACZmtC,EAAiBntC,GAAUA,EAC3BirC,EAAc/I,GAASliC,GAEvBmrC,EAAe1H,IAAUnsB,EACzB8zB,EAAsB,OAAV3H,EACZ4H,EAAiB5H,GAAUA,EAC3B6H,EAAcpJ,GAASuB,GAE3B,IAAM2H,IAAcE,IAAgBL,GAAejrC,EAAQyjC,GACtDwH,GAAeE,GAAgBE,IAAmBD,IAAcE,GAChEN,GAAaG,GAAgBE,IAC5B6B,GAAgB7B,IACjB8B,EACH,OAAO,EAET,IAAMnC,IAAcC,IAAgBK,GAAetrC,EAAQyjC,GACtD6H,GAAe4B,GAAgBC,IAAmBnC,IAAcC,GAChEG,GAAa8B,GAAgBC,IAC5BhC,GAAgBgC,IACjB9B,EACH,OAAQ,EAGZ,OAAO,EAuDT,SAAS+B,GAAYzoB,EAAM0oB,EAAUC,EAASC,GAU5C,IATA,IAAIC,GAAa,EACbC,EAAa9oB,EAAK5jB,OAClB2sC,EAAgBJ,EAAQvsC,OACxB4sC,GAAa,EACbC,EAAaP,EAAStsC,OACtB8sC,EAAc9U,GAAU0U,EAAaC,EAAe,GACpDloB,EAASzZ,GAAM6hC,EAAaC,GAC5BC,GAAeP,IAEVI,EAAYC,GACnBpoB,EAAOmoB,GAAaN,EAASM,GAE/B,OAASH,EAAYE,IACfI,GAAeN,EAAYC,KAC7BjoB,EAAO8nB,EAAQE,IAAc7oB,EAAK6oB,IAGtC,KAAOK,KACLroB,EAAOmoB,KAAehpB,EAAK6oB,KAE7B,OAAOhoB,EAcT,SAASuoB,GAAiBppB,EAAM0oB,EAAUC,EAASC,GAWjD,IAVA,IAAIC,GAAa,EACbC,EAAa9oB,EAAK5jB,OAClBitC,GAAgB,EAChBN,EAAgBJ,EAAQvsC,OACxBktC,GAAc,EACdC,EAAcb,EAAStsC,OACvB8sC,EAAc9U,GAAU0U,EAAaC,EAAe,GACpDloB,EAASzZ,GAAM8hC,EAAcK,GAC7BJ,GAAeP,IAEVC,EAAYK,GACnBroB,EAAOgoB,GAAa7oB,EAAK6oB,GAG3B,IADA,IAAIxnB,EAASwnB,IACJS,EAAaC,GACpB1oB,EAAOQ,EAASioB,GAAcZ,EAASY,GAEzC,OAASD,EAAeN,IAClBI,GAAeN,EAAYC,KAC7BjoB,EAAOQ,EAASsnB,EAAQU,IAAiBrpB,EAAK6oB,MAGlD,OAAOhoB,EAWT,SAAS0X,GAAUp+B,EAAQ+lB,GACzB,IAAII,GAAS,EACTlkB,EAASjC,EAAOiC,OAGpB,IADA8jB,IAAUA,EAAQ9Y,GAAMhL,MACfkkB,EAAQlkB,GACf8jB,EAAMI,GAASnmB,EAAOmmB,GAExB,OAAOJ,EAaT,SAASiZ,GAAWh/B,EAAQ2S,EAAOyV,EAAQuX,GACzC,IAAI0P,GAASjnB,EACbA,IAAWA,EAAS,IAKpB,IAHA,IAAIjC,GAAS,EACTlkB,EAAS0Q,EAAM1Q,SAEVkkB,EAAQlkB,GAAQ,CACvB,IAAI7B,EAAMuS,EAAMwT,GAEZ5R,EAAWorB,EACXA,EAAWvX,EAAOhoB,GAAMJ,EAAOI,GAAMA,EAAKgoB,EAAQpoB,GAClDwY,EAEAjE,IAAaiE,IACfjE,EAAWvU,EAAOI,IAEhBivC,EACF5Q,GAAgBrW,EAAQhoB,EAAKmU,GAE7BmqB,GAAYtW,EAAQhoB,EAAKmU,GAG7B,OAAO6T,EAmCT,SAASknB,GAAiBtpB,EAAQupB,GAChC,OAAO,SAAS7nB,EAAYzB,GAC1B,IAAIN,EAAOzY,GAAQwa,GAAc5B,GAAkB+Y,GAC/C3Y,EAAcqpB,EAAcA,IAAgB,GAEhD,OAAO5pB,EAAK+B,EAAY1B,EAAQ0jB,GAAYzjB,EAAU,GAAIC,IAW9D,SAASspB,GAAeC,GACtB,OAAO5E,IAAS,SAASziB,EAAQsnB,GAC/B,IAAIvpB,GAAS,EACTlkB,EAASytC,EAAQztC,OACjB09B,EAAa19B,EAAS,EAAIytC,EAAQztC,EAAS,GAAKuW,EAChDm3B,EAAQ1tC,EAAS,EAAIytC,EAAQ,GAAKl3B,EAWtC,IATAmnB,EAAc8P,EAASxtC,OAAS,GAA0B,mBAAd09B,GACvC19B,IAAU09B,GACXnnB,EAEAm3B,GAASC,GAAeF,EAAQ,GAAIA,EAAQ,GAAIC,KAClDhQ,EAAa19B,EAAS,EAAIuW,EAAYmnB,EACtC19B,EAAS,GAEXmmB,EAASnoB,GAAOmoB,KACPjC,EAAQlkB,GAAQ,CACvB,IAAIjC,EAAS0vC,EAAQvpB,GACjBnmB,GACFyvC,EAASrnB,EAAQpoB,EAAQmmB,EAAOwZ,GAGpC,OAAOvX,KAYX,SAAS0a,GAAenb,EAAUG,GAChC,OAAO,SAASJ,EAAYzB,GAC1B,GAAkB,MAAdyB,EACF,OAAOA,EAET,IAAK6gB,GAAY7gB,GACf,OAAOC,EAASD,EAAYzB,GAM9B,IAJA,IAAIhkB,EAASylB,EAAWzlB,OACpBkkB,EAAQ2B,EAAY7lB,GAAU,EAC9B4tC,EAAW5vC,GAAOynB,IAEdI,EAAY3B,MAAYA,EAAQlkB,KACa,IAA/CgkB,EAAS4pB,EAAS1pB,GAAQA,EAAO0pB,KAIvC,OAAOnoB,GAWX,SAASic,GAAc7b,GACrB,OAAO,SAASM,EAAQnC,EAAUke,GAMhC,IALA,IAAIhe,GAAS,EACT0pB,EAAW5vC,GAAOmoB,GAClBzV,EAAQwxB,EAAS/b,GACjBnmB,EAAS0Q,EAAM1Q,OAEZA,KAAU,CACf,IAAI7B,EAAMuS,EAAMmV,EAAY7lB,IAAWkkB,GACvC,IAA+C,IAA3CF,EAAS4pB,EAASzvC,GAAMA,EAAKyvC,GAC/B,MAGJ,OAAOznB,GAgCX,SAAS0nB,GAAgBC,GACvB,OAAO,SAASra,GAGd,IAAI5M,EAAa2M,GAFjBC,EAAS1yB,GAAS0yB,IAGdY,GAAcZ,GACdld,EAEAgd,EAAM1M,EACNA,EAAW,GACX4M,EAAOsa,OAAO,GAEdC,EAAWnnB,EACXilB,GAAUjlB,EAAY,GAAGrhB,KAAK,IAC9BiuB,EAAOpzB,MAAM,GAEjB,OAAOkzB,EAAIua,KAAgBE,GAW/B,SAASC,GAAiBC,GACxB,OAAO,SAASza,GACd,OAAOvO,GAAYipB,GAAMC,GAAO3a,GAAQzrB,QAAQ2Y,GAAQ,KAAMutB,EAAU,KAY5E,SAASG,GAAW3P,GAClB,OAAO,WAIL,IAAI9a,EAAO0qB,UACX,OAAQ1qB,EAAK5jB,QACX,KAAK,EAAG,OAAO,IAAI0+B,EACnB,KAAK,EAAG,OAAO,IAAIA,EAAK9a,EAAK,IAC7B,KAAK,EAAG,OAAO,IAAI8a,EAAK9a,EAAK,GAAIA,EAAK,IACtC,KAAK,EAAG,OAAO,IAAI8a,EAAK9a,EAAK,GAAIA,EAAK,GAAIA,EAAK,IAC/C,KAAK,EAAG,OAAO,IAAI8a,EAAK9a,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,IACxD,KAAK,EAAG,OAAO,IAAI8a,EAAK9a,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,IACjE,KAAK,EAAG,OAAO,IAAI8a,EAAK9a,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,IAC1E,KAAK,EAAG,OAAO,IAAI8a,EAAK9a,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,IAErF,IAAI2qB,EAAczU,GAAW4E,EAAK19B,WAC9ByjB,EAASia,EAAKjb,MAAM8qB,EAAa3qB,GAIrC,OAAOoW,GAASvV,GAAUA,EAAS8pB,GAgDvC,SAASC,GAAWC,GAClB,OAAO,SAAShpB,EAAYnB,EAAWsB,GACrC,IAAIgoB,EAAW5vC,GAAOynB,GACtB,IAAK6gB,GAAY7gB,GAAa,CAC5B,IAAIzB,EAAWyjB,GAAYnjB,EAAW,GACtCmB,EAAaxnB,GAAKwnB,GAClBnB,EAAY,SAASnmB,GAAO,OAAO6lB,EAAS4pB,EAASzvC,GAAMA,EAAKyvC,IAElE,IAAI1pB,EAAQuqB,EAAchpB,EAAYnB,EAAWsB,GACjD,OAAO1B,GAAS,EAAI0pB,EAAS5pB,EAAWyB,EAAWvB,GAASA,GAAS3N,GAWzE,SAASm4B,GAAW7oB,GAClB,OAAO8oB,IAAS,SAASC,GACvB,IAAI5uC,EAAS4uC,EAAM5uC,OACfkkB,EAAQlkB,EACR6uC,EAASjV,GAAc54B,UAAU8tC,KAKrC,IAHIjpB,GACF+oB,EAAMnW,UAEDvU,KAAS,CACd,IAAIR,EAAOkrB,EAAM1qB,GACjB,GAAmB,mBAARR,EACT,MAAM,IAAItjB,GAAUia,GAEtB,GAAIw0B,IAAWE,GAAgC,WAArBC,GAAYtrB,GACpC,IAAIqrB,EAAU,IAAInV,GAAc,IAAI,GAIxC,IADA1V,EAAQ6qB,EAAU7qB,EAAQlkB,IACjBkkB,EAAQlkB,GAAQ,CAGvB,IAAIivC,EAAWD,GAFftrB,EAAOkrB,EAAM1qB,IAGTmX,EAAmB,WAAZ4T,EAAwBC,GAAQxrB,GAAQnN,EAMjDw4B,EAJE1T,GAAQ8T,GAAW9T,EAAK,KACtB,KAAAA,EAAK,KACJA,EAAK,GAAGr7B,QAAqB,GAAXq7B,EAAK,GAElB0T,EAAQC,GAAY3T,EAAK,KAAK5X,MAAMsrB,EAAS1T,EAAK,IAElC,GAAf3X,EAAK1jB,QAAemvC,GAAWzrB,GACtCqrB,EAAQE,KACRF,EAAQD,KAAKprB,GAGrB,OAAO,WACL,IAAIE,EAAO0qB,UACPrvC,EAAQ2kB,EAAK,GAEjB,GAAImrB,GAA0B,GAAfnrB,EAAK5jB,QAAeiL,GAAQhM,GACzC,OAAO8vC,EAAQK,MAAMnwC,GAAOA,QAK9B,IAHA,IAAIilB,EAAQ,EACRO,EAASzkB,EAAS4uC,EAAM1qB,GAAOT,MAAMhf,KAAMmf,GAAQ3kB,IAE9CilB,EAAQlkB,GACfykB,EAASmqB,EAAM1qB,GAAOhjB,KAAKuD,KAAMggB,GAEnC,OAAOA,MAwBb,SAAS4qB,GAAa3rB,EAAM+Z,EAAS9Z,EAAS2oB,EAAUC,EAAS+C,EAAeC,EAAcC,EAAQC,EAAKC,GACzG,IAAIC,EAAQlS,EAAU9iB,EAClBi1B,EAngKa,EAmgKJnS,EACToS,EAngKiB,EAmgKLpS,EACZ+O,EAAmB,GAAP/O,EACZqS,EA7/Ja,IA6/JJrS,EACTiB,EAAOmR,EAAYt5B,EAAY83B,GAAW3qB,GA6C9C,OA3CA,SAASqrB,IAKP,IAJA,IAAI/uC,EAASsuC,UAAUtuC,OACnB4jB,EAAO5Y,GAAMhL,GACbkkB,EAAQlkB,EAELkkB,KACLN,EAAKM,GAASoqB,UAAUpqB,GAE1B,GAAIsoB,EACF,IAAIvlB,EAAc8oB,GAAUhB,GACxBiB,EAAehpB,GAAapD,EAAMqD,GASxC,GAPIqlB,IACF1oB,EAAOyoB,GAAYzoB,EAAM0oB,EAAUC,EAASC,IAE1C8C,IACF1rB,EAAOopB,GAAiBppB,EAAM0rB,EAAeC,EAAc/C,IAE7DxsC,GAAUgwC,EACNxD,GAAaxsC,EAAS0vC,EAAO,CAC/B,IAAIO,EAAalc,GAAenQ,EAAMqD,GACtC,OAAOipB,GACLxsB,EAAM+Z,EAAS4R,GAAcN,EAAQ9nB,YAAatD,EAClDC,EAAMqsB,EAAYT,EAAQC,EAAKC,EAAQ1vC,GAG3C,IAAIuuC,EAAcqB,EAASjsB,EAAUlf,KACjCiT,EAAKm4B,EAAYtB,EAAY7qB,GAAQA,EAczC,OAZA1jB,EAAS4jB,EAAK5jB,OACVwvC,EACF5rB,EAAOusB,GAAQvsB,EAAM4rB,GACZM,GAAU9vC,EAAS,GAC5B4jB,EAAK6U,UAEHkX,GAASF,EAAMzvC,IACjB4jB,EAAK5jB,OAASyvC,GAEZhrC,MAAQA,OAASyd,IAAQzd,gBAAgBsqC,IAC3Cr3B,EAAKgnB,GAAQ2P,GAAW32B,IAEnBA,EAAG+L,MAAM8qB,EAAa3qB,IAajC,SAASwsB,GAAersB,EAAQssB,GAC9B,OAAO,SAASlqB,EAAQnC,GACtB,OAh/DJ,SAAsBmC,EAAQpC,EAAQC,EAAUC,GAI9C,OAHA6c,GAAW3a,GAAQ,SAASlnB,EAAOd,EAAKgoB,GACtCpC,EAAOE,EAAaD,EAAS/kB,GAAQd,EAAKgoB,MAErClC,EA4+DEqsB,CAAanqB,EAAQpC,EAAQssB,EAAWrsB,GAAW,KAY9D,SAASusB,GAAoBxpC,EAAUypC,GACrC,OAAO,SAASvxC,EAAOyjC,GACrB,IAAIje,EACJ,GAAIxlB,IAAUsX,GAAamsB,IAAUnsB,EACnC,OAAOi6B,EAKT,GAHIvxC,IAAUsX,IACZkO,EAASxlB,GAEPyjC,IAAUnsB,EAAW,CACvB,GAAIkO,IAAWlO,EACb,OAAOmsB,EAEW,iBAATzjC,GAAqC,iBAATyjC,GACrCzjC,EAAQ0rC,GAAa1rC,GACrByjC,EAAQiI,GAAajI,KAErBzjC,EAAQyrC,GAAazrC,GACrByjC,EAAQgI,GAAahI,IAEvBje,EAAS1d,EAAS9H,EAAOyjC,GAE3B,OAAOje,GAWX,SAASgsB,GAAWC,GAClB,OAAO/B,IAAS,SAASpH,GAEvB,OADAA,EAAYziB,GAASyiB,EAAW/gB,GAAUihB,OACnCmB,IAAS,SAAShlB,GACvB,IAAID,EAAUlf,KACd,OAAOisC,EAAUnJ,GAAW,SAASvjB,GACnC,OAAOP,GAAMO,EAAUL,EAASC,YAexC,SAAS+sB,GAAc3wC,EAAQ4wC,GAG7B,IAAIC,GAFJD,EAAQA,IAAUr6B,EAAY,IAAMo0B,GAAaiG,IAEzB5wC,OACxB,GAAI6wC,EAAc,EAChB,OAAOA,EAAclI,GAAWiI,EAAO5wC,GAAU4wC,EAEnD,IAAInsB,EAASkkB,GAAWiI,EAAOvZ,GAAWr3B,EAASk0B,GAAW0c,KAC9D,OAAOpd,GAAWod,GACd9E,GAAUzX,GAAc5P,GAAS,EAAGzkB,GAAQwF,KAAK,IACjDif,EAAOpkB,MAAM,EAAGL,GA6CtB,SAAS8wC,GAAYjrB,GACnB,OAAO,SAASgjB,EAAOW,EAAKuH,GAa1B,OAZIA,GAAuB,iBAARA,GAAoBpD,GAAe9E,EAAOW,EAAKuH,KAChEvH,EAAMuH,EAAOx6B,GAGfsyB,EAAQmI,GAASnI,GACbW,IAAQjzB,GACVizB,EAAMX,EACNA,EAAQ,GAERW,EAAMwH,GAASxH,GA57CrB,SAAmBX,EAAOW,EAAKuH,EAAMlrB,GAKnC,IAJA,IAAI3B,GAAS,EACTlkB,EAASg4B,GAAUX,IAAYmS,EAAMX,IAAUkI,GAAQ,IAAK,GAC5DtsB,EAASzZ,GAAMhL,GAEZA,KACLykB,EAAOoB,EAAY7lB,IAAWkkB,GAAS2kB,EACvCA,GAASkI,EAEX,OAAOtsB,EAs7CEwsB,CAAUpI,EAAOW,EADxBuH,EAAOA,IAASx6B,EAAasyB,EAAQW,EAAM,GAAK,EAAKwH,GAASD,GAC3BlrB,IAWvC,SAASqrB,GAA0BnqC,GACjC,OAAO,SAAS9H,EAAOyjC,GAKrB,MAJsB,iBAATzjC,GAAqC,iBAATyjC,IACvCzjC,EAAQkyC,GAASlyC,GACjByjC,EAAQyO,GAASzO,IAEZ37B,EAAS9H,EAAOyjC,IAqB3B,SAASwN,GAAcxsB,EAAM+Z,EAAS2T,EAAUnqB,EAAatD,EAAS2oB,EAAUC,EAASiD,EAAQC,EAAKC,GACpG,IAAI2B,EA5uKc,EA4uKJ5T,EAMdA,GAAY4T,EAAU52B,EAAoBC,EAnvKlB,GAovKxB+iB,KAAa4T,EAAU32B,EAA0BD,MAG/CgjB,IAAW,GAEb,IAAI6T,EAAU,CACZ5tB,EAAM+Z,EAAS9Z,EAVC0tB,EAAU/E,EAAW/1B,EAFtB86B,EAAU9E,EAAUh2B,EAGd86B,EAAU96B,EAAY+1B,EAFvB+E,EAAU96B,EAAYg2B,EAYzBiD,EAAQC,EAAKC,GAG5BjrB,EAAS2sB,EAAS3tB,MAAMlN,EAAW+6B,GAKvC,OAJInC,GAAWzrB,IACb6tB,GAAQ9sB,EAAQ6sB,GAElB7sB,EAAOwC,YAAcA,EACduqB,GAAgB/sB,EAAQf,EAAM+Z,GAUvC,SAASgU,GAAY3D,GACnB,IAAIpqB,EAAOyR,GAAK2Y,GAChB,OAAO,SAASzQ,EAAQqU,GAGtB,GAFArU,EAAS8T,GAAS9T,IAClBqU,EAAyB,MAAbA,EAAoB,EAAIxZ,GAAUyZ,GAAUD,GAAY,OACnD9Z,GAAeyF,GAAS,CAGvC,IAAIuU,GAAQ7wC,GAASs8B,GAAU,KAAKj4B,MAAM,KAI1C,SADAwsC,GAAQ7wC,GAFI2iB,EAAKkuB,EAAK,GAAK,MAAQA,EAAK,GAAKF,KAEnB,KAAKtsC,MAAM,MACvB,GAAK,MAAQwsC,EAAK,GAAKF,IAEvC,OAAOhuB,EAAK2Z,IAWhB,IAAIwN,GAAcvgC,IAAQ,EAAI0pB,GAAW,IAAI1pB,GAAI,CAAA,EAAG,KAAK,IAAOuQ,EAAmB,SAASmK,GAC1F,OAAO,IAAI1a,GAAI0a,IAD2D6sB,GAW5E,SAASC,GAAc5P,GACrB,OAAO,SAAS/b,GACd,IAAI1V,EAAMutB,GAAO7X,GACjB,OAAI1V,GAAO+K,EACFkY,GAAWvN,GAEhB1V,GAAOoL,EACFoY,GAAW9N,GAv4I1B,SAAqBA,EAAQzV,GAC3B,OAAOoU,GAASpU,GAAO,SAASvS,GAC9B,MAAO,CAACA,EAAKgoB,EAAOhoB,OAu4IX4zC,CAAY5rB,EAAQ+b,EAAS/b,KA6BxC,SAAS6rB,GAAWtuB,EAAM+Z,EAAS9Z,EAAS2oB,EAAUC,EAASiD,EAAQC,EAAKC,GAC1E,IAAIG,EAz1KiB,EAy1KLpS,EAChB,IAAKoS,GAA4B,mBAARnsB,EACvB,MAAM,IAAItjB,GAAUia,GAEtB,IAAIra,EAASssC,EAAWA,EAAStsC,OAAS,EAS1C,GARKA,IACHy9B,IAAW,GACX6O,EAAWC,EAAUh2B,GAEvBk5B,EAAMA,IAAQl5B,EAAYk5B,EAAMzX,GAAU2Z,GAAUlC,GAAM,GAC1DC,EAAQA,IAAUn5B,EAAYm5B,EAAQiC,GAAUjC,GAChD1vC,GAAUusC,EAAUA,EAAQvsC,OAAS,EAEjCy9B,EAAU/iB,EAAyB,CACrC,IAAI40B,EAAgBhD,EAChBiD,EAAehD,EAEnBD,EAAWC,EAAUh2B,EAEvB,IAAI8kB,EAAOwU,EAAYt5B,EAAY24B,GAAQxrB,GAEvC4tB,EAAU,CACZ5tB,EAAM+Z,EAAS9Z,EAAS2oB,EAAUC,EAAS+C,EAAeC,EAC1DC,EAAQC,EAAKC,GAkBf,GAfIrU,GA26BN,SAAmBA,EAAMt9B,GACvB,IAAI0/B,EAAUpC,EAAK,GACf4W,EAAal0C,EAAO,GACpBm0C,EAAazU,EAAUwU,EACvBnS,EAAWoS,EAAU,IAErBC,EACAF,GAAct3B,GAnyMA,GAmyMmB8iB,GACjCwU,GAAct3B,GAAmB8iB,GAAW7iB,GAAqBygB,EAAK,GAAGr7B,QAAUjC,EAAO,IAChF,KAAVk0C,GAAqDl0C,EAAO,GAAGiC,QAAUjC,EAAO,IAryMlE,GAqyM0E0/B,EAG5F,IAAMqC,IAAYqS,EAChB,OAAO9W,EA5yMQ,EA+yMb4W,IACF5W,EAAK,GAAKt9B,EAAO,GAEjBm0C,GAlzMe,EAkzMDzU,EAA2B,EAhzMnB,GAmzMxB,IAAIx+B,EAAQlB,EAAO,GACnB,GAAIkB,EAAO,CACT,IAAIqtC,EAAWjR,EAAK,GACpBA,EAAK,GAAKiR,EAAWD,GAAYC,EAAUrtC,EAAOlB,EAAO,IAAMkB,EAC/Do8B,EAAK,GAAKiR,EAAWvY,GAAesH,EAAK,GAAI9gB,GAAexc,EAAO,IAGrEkB,EAAQlB,EAAO,MAEbuuC,EAAWjR,EAAK,GAChBA,EAAK,GAAKiR,EAAWU,GAAiBV,EAAUrtC,EAAOlB,EAAO,IAAMkB,EACpEo8B,EAAK,GAAKiR,EAAWvY,GAAesH,EAAK,GAAI9gB,GAAexc,EAAO,KAGrEkB,EAAQlB,EAAO,MAEbs9B,EAAK,GAAKp8B,GAGRgzC,EAAat3B,IACf0gB,EAAK,GAAgB,MAAXA,EAAK,GAAat9B,EAAO,GAAKm6B,GAAUmD,EAAK,GAAIt9B,EAAO,KAGrD,MAAXs9B,EAAK,KACPA,EAAK,GAAKt9B,EAAO,IAGnBs9B,EAAK,GAAKt9B,EAAO,GACjBs9B,EAAK,GAAK6W,EA59BRE,CAAUd,EAASjW,GAErB3X,EAAO4tB,EAAQ,GACf7T,EAAU6T,EAAQ,GAClB3tB,EAAU2tB,EAAQ,GAClBhF,EAAWgF,EAAQ,GACnB/E,EAAU+E,EAAQ,KAClB5B,EAAQ4B,EAAQ,GAAKA,EAAQ,KAAO/6B,EAC/Bs5B,EAAY,EAAInsB,EAAK1jB,OACtBg4B,GAAUsZ,EAAQ,GAAKtxC,EAAQ,KAEd,GAAPy9B,IACZA,IAAW,IAERA,GAn4KY,GAm4KDA,EAGdhZ,EAn4KgB,GAk4KPgZ,GAA8BA,GAAWjjB,EApgBtD,SAAqBkJ,EAAM+Z,EAASiS,GAClC,IAAIhR,EAAO2P,GAAW3qB,GAwBtB,OAtBA,SAASqrB,IAMP,IALA,IAAI/uC,EAASsuC,UAAUtuC,OACnB4jB,EAAO5Y,GAAMhL,GACbkkB,EAAQlkB,EACRinB,EAAc8oB,GAAUhB,GAErB7qB,KACLN,EAAKM,GAASoqB,UAAUpqB,GAE1B,IAAIqoB,EAAWvsC,EAAS,GAAK4jB,EAAK,KAAOqD,GAAerD,EAAK5jB,EAAS,KAAOinB,EACzE,GACA8M,GAAenQ,EAAMqD,GAGzB,OADAjnB,GAAUusC,EAAQvsC,QACL0vC,EACJQ,GACLxsB,EAAM+Z,EAAS4R,GAAcN,EAAQ9nB,YAAa1Q,EAClDqN,EAAM2oB,EAASh2B,EAAWA,EAAWm5B,EAAQ1vC,GAG1CyjB,GADGhf,MAAQA,OAASyd,IAAQzd,gBAAgBsqC,EAAWrQ,EAAOhb,EACpDjf,KAAMmf,IA8edyuB,CAAY3uB,EAAM+Z,EAASiS,GAC1BjS,GAAWhjB,GAA4B,IAAPgjB,GAAqD8O,EAAQvsC,OAG9FqvC,GAAa5rB,MAAMlN,EAAW+6B,GA9O3C,SAAuB5tB,EAAM+Z,EAAS9Z,EAAS2oB,GAC7C,IAAIsD,EA7pKa,EA6pKJnS,EACTiB,EAAO2P,GAAW3qB,GAkBtB,OAhBA,SAASqrB,IAQP,IAPA,IAAItC,GAAa,EACbC,EAAa4B,UAAUtuC,OACvB4sC,GAAa,EACbC,EAAaP,EAAStsC,OACtB4jB,EAAO5Y,GAAM6hC,EAAaH,GAC1Bh1B,EAAMjT,MAAQA,OAASyd,IAAQzd,gBAAgBsqC,EAAWrQ,EAAOhb,IAE5DkpB,EAAYC,GACnBjpB,EAAKgpB,GAAaN,EAASM,GAE7B,KAAOF,KACL9oB,EAAKgpB,KAAe0B,YAAY7B,GAElC,OAAOhpB,GAAM/L,EAAIk4B,EAASjsB,EAAUlf,KAAMmf,IA0NjC0uB,CAAc5uB,EAAM+Z,EAAS9Z,EAAS2oB,QAJ/C,IAAI7nB,EAhmBR,SAAoBf,EAAM+Z,EAAS9Z,GACjC,IAAIisB,EAryJa,EAqyJJnS,EACTiB,EAAO2P,GAAW3qB,GAMtB,OAJA,SAASqrB,IAEP,OADUtqC,MAAQA,OAASyd,IAAQzd,gBAAgBsqC,EAAWrQ,EAAOhb,GAC3DD,MAAMmsB,EAASjsB,EAAUlf,KAAM6pC,YA0lB5BiE,CAAW7uB,EAAM+Z,EAAS9Z,GASzC,OAAO6tB,IADMnW,EAAO8N,GAAcoI,IACJ9sB,EAAQ6sB,GAAU5tB,EAAM+Z,GAexD,SAAS+U,GAAuB9V,EAAU6I,EAAUpnC,EAAKgoB,GACvD,OAAIuW,IAAanmB,GACZgmB,GAAGG,EAAUnH,GAAYp3B,MAAU8C,GAAeC,KAAKilB,EAAQhoB,GAC3DonC,EAEF7I,EAiBT,SAAS+V,GAAoB/V,EAAU6I,EAAUpnC,EAAKgoB,EAAQpoB,EAAQgc,GAOpE,OANIigB,GAAS0C,IAAa1C,GAASuL,KAEjCxrB,EAAMvS,IAAI+9B,EAAU7I,GACpBkK,GAAUlK,EAAU6I,EAAUhvB,EAAWk8B,GAAqB14B,GAC9DA,EAAK,OAAWwrB,IAEX7I,EAYT,SAASgW,GAAgBzzC,GACvB,OAAOioC,GAAcjoC,GAASsX,EAAYtX,EAgB5C,SAASglC,GAAYngB,EAAO4e,EAAOjF,EAASC,EAAY+F,EAAW1pB,GACjE,IAAIoqB,EA39KmB,EA29KP1G,EACZkV,EAAY7uB,EAAM9jB,OAClB+iC,EAAYL,EAAM1iC,OAEtB,GAAI2yC,GAAa5P,KAAeoB,GAAapB,EAAY4P,GACvD,OAAO,EAGT,IAAIC,EAAa74B,EAAMzb,IAAIwlB,GACvB8gB,EAAa7qB,EAAMzb,IAAIokC,GAC3B,GAAIkQ,GAAchO,EAChB,OAAOgO,GAAclQ,GAASkC,GAAc9gB,EAE9C,IAAII,GAAS,EACTO,GAAS,EACT2e,EAz+KqB,EAy+Kb3F,EAAoC,IAAIvC,GAAW3kB,EAM/D,IAJAwD,EAAMvS,IAAIsc,EAAO4e,GACjB3oB,EAAMvS,IAAIk7B,EAAO5e,KAGRI,EAAQyuB,GAAW,CAC1B,IAAIE,EAAW/uB,EAAMI,GACjB4gB,EAAWpC,EAAMxe,GAErB,GAAIwZ,EACF,IAAIqH,EAAWZ,EACXzG,EAAWoH,EAAU+N,EAAU3uB,EAAOwe,EAAO5e,EAAO/J,GACpD2jB,EAAWmV,EAAU/N,EAAU5gB,EAAOJ,EAAO4e,EAAO3oB,GAE1D,GAAIgrB,IAAaxuB,EAAW,CAC1B,GAAIwuB,EACF,SAEFtgB,GAAS,EACT,MAGF,GAAI2e,GACF,IAAK/d,GAAUqd,GAAO,SAASoC,EAAU9B,GACnC,IAAKtc,GAAS0c,EAAMJ,KACf6P,IAAa/N,GAAYrB,EAAUoP,EAAU/N,EAAUrH,EAASC,EAAY3jB,IAC/E,OAAOqpB,EAAKt9B,KAAKk9B,MAEjB,CACNve,GAAS,EACT,YAEG,GACDouB,IAAa/N,IACXrB,EAAUoP,EAAU/N,EAAUrH,EAASC,EAAY3jB,GACpD,CACL0K,GAAS,EACT,OAKJ,OAFA1K,EAAK,OAAW+J,GAChB/J,EAAK,OAAW2oB,GACTje,EA0KT,SAASkqB,GAASjrB,GAChB,OAAOolB,GAAYC,GAASrlB,EAAMnN,EAAWu8B,IAAUpvB,EAAO,IAUhE,SAAS+b,GAAWtZ,GAClB,OAAO8b,GAAe9b,EAAQloB,GAAMugC,IAWtC,SAASgB,GAAarZ,GACpB,OAAO8b,GAAe9b,EAAQmY,GAAQF,IAUxC,IAAI8Q,GAAWrW,GAAiB,SAASnV,GACvC,OAAOmV,GAAQv6B,IAAIolB,IADImuB,GAWzB,SAAS7C,GAAYtrB,GAKnB,IAJA,IAAIe,EAAUf,EAAKjY,KAAO,GACtBqY,EAAQgV,GAAUrU,GAClBzkB,EAASiB,GAAeC,KAAK43B,GAAWrU,GAAUX,EAAM9jB,OAAS,EAE9DA,KAAU,CACf,IAAIq7B,EAAOvX,EAAM9jB,GACb+yC,EAAY1X,EAAK3X,KACrB,GAAiB,MAAbqvB,GAAqBA,GAAarvB,EACpC,OAAO2X,EAAK5vB,KAGhB,OAAOgZ,EAUT,SAASsrB,GAAUrsB,GAEjB,OADaziB,GAAeC,KAAKu4B,GAAQ,eAAiBA,GAAS/V,GACrDuD,YAchB,SAASwgB,KACP,IAAIhjB,EAASgV,GAAOzV,UAAYA,GAEhC,OADAS,EAASA,IAAWT,GAAW0hB,GAAejhB,EACvC6pB,UAAUtuC,OAASykB,EAAO6pB,UAAU,GAAIA,UAAU,IAAM7pB,EAWjE,SAASic,GAAWr7B,EAAKlH,GACvB,IAgYiBc,EACb+zC,EAjYA3X,EAAOh2B,EAAI81B,SACf,OAiYgB,WADZ6X,SADa/zC,EA/XAd,KAiYmB,UAAR60C,GAA4B,UAARA,GAA4B,WAARA,EACrD,cAAV/zC,EACU,OAAVA,GAlYDo8B,EAAmB,iBAAPl9B,EAAkB,SAAW,QACzCk9B,EAAKh2B,IAUX,SAASkhC,GAAapgB,GAIpB,IAHA,IAAI1B,EAASxmB,GAAKkoB,GACdnmB,EAASykB,EAAOzkB,OAEbA,KAAU,CACf,IAAI7B,EAAMsmB,EAAOzkB,GACbf,EAAQknB,EAAOhoB,GAEnBsmB,EAAOzkB,GAAU,CAAC7B,EAAKc,EAAOynC,GAAmBznC,IAEnD,OAAOwlB,EAWT,SAASqS,GAAU3Q,EAAQhoB,GACzB,IAAIc,EAnwJR,SAAkBknB,EAAQhoB,GACxB,OAAiB,MAAVgoB,EAAiB5P,EAAY4P,EAAOhoB,GAkwJ7B80C,CAAS9sB,EAAQhoB,GAC7B,OAAOsnC,GAAaxmC,GAASA,EAAQsX,EAqCvC,IAAIioB,GAAc/G,GAA+B,SAAStR,GACxD,OAAc,MAAVA,EACK,IAETA,EAASnoB,GAAOmoB,GACT5B,GAAYkT,GAAiBtR,IAAS,SAASiZ,GACpD,OAAO7I,GAAqBr1B,KAAKilB,EAAQiZ,QANR8T,GAiBjC9U,GAAgB3G,GAA+B,SAAStR,GAE1D,IADA,IAAI1B,EAAS,GACN0B,GACLpB,GAAUN,EAAQ+Z,GAAWrY,IAC7BA,EAASgQ,GAAahQ,GAExB,OAAO1B,GAN8ByuB,GAgBnClV,GAASoE,GA2Eb,SAAS+Q,GAAQhtB,EAAQvmB,EAAMwzC,GAO7B,IAJA,IAAIlvB,GAAS,EACTlkB,GAHJJ,EAAOmiC,GAASniC,EAAMumB,IAGJnmB,OACdykB,GAAS,IAEJP,EAAQlkB,GAAQ,CACvB,IAAI7B,EAAM6jC,GAAMpiC,EAAKskB,IACrB,KAAMO,EAAmB,MAAV0B,GAAkBitB,EAAQjtB,EAAQhoB,IAC/C,MAEFgoB,EAASA,EAAOhoB,GAElB,OAAIsmB,KAAYP,GAASlkB,EAChBykB,KAETzkB,EAAmB,MAAVmmB,EAAiB,EAAIA,EAAOnmB,SAClBqzC,GAASrzC,IAAW87B,GAAQ39B,EAAK6B,KACjDiL,GAAQkb,IAAWuV,GAAYvV,IA6BpC,SAASgY,GAAgBhY,GACvB,MAAqC,mBAAtBA,EAAO9hB,aAA8B2hC,GAAY7f,GAE5D,GADA2T,GAAW3D,GAAahQ,IA8E9B,SAASqb,GAAcviC,GACrB,OAAOgM,GAAQhM,IAAUy8B,GAAYz8B,OAChCu3B,IAAoBv3B,GAASA,EAAMu3B,KAW1C,SAASsF,GAAQ78B,EAAOe,GACtB,IAAIgzC,SAAc/zC,EAGlB,SAFAe,EAAmB,MAAVA,EAAiBsB,EAAmBtB,KAGlC,UAARgzC,GACU,UAARA,GAAoBv0B,GAAS5c,KAAK5C,KAChCA,GAAS,GAAKA,EAAQ,GAAK,GAAKA,EAAQe,EAajD,SAAS2tC,GAAe1uC,EAAOilB,EAAOiC,GACpC,IAAK6T,GAAS7T,GACZ,OAAO,EAET,IAAI6sB,SAAc9uB,EAClB,SAAY,UAAR8uB,EACK1M,GAAYngB,IAAW2V,GAAQ5X,EAAOiC,EAAOnmB,QACrC,UAARgzC,GAAoB9uB,KAASiC,IAE7BoW,GAAGpW,EAAOjC,GAAQjlB,GAa7B,SAASwnC,GAAMxnC,EAAOknB,GACpB,GAAIlb,GAAQhM,GACV,OAAO,EAET,IAAI+zC,SAAc/zC,EAClB,QAAY,UAAR+zC,GAA4B,UAARA,GAA4B,WAARA,GAC/B,MAAT/zC,IAAiBkiC,GAASliC,MAGvBse,GAAc1b,KAAK5C,KAAWqe,GAAazb,KAAK5C,IAC1C,MAAVknB,GAAkBlnB,KAASjB,GAAOmoB,IAyBvC,SAASgpB,GAAWzrB,GAClB,IAAIurB,EAAWD,GAAYtrB,GACvBgf,EAAQjJ,GAAOwV,GAEnB,GAAoB,mBAATvM,KAAyBuM,KAAYtV,GAAY34B,WAC1D,OAAO,EAET,GAAI0iB,IAASgf,EACX,OAAO,EAET,IAAIrH,EAAO6T,GAAQxM,GACnB,QAASrH,GAAQ3X,IAAS2X,EAAK,IA7S5B3C,IAAYsF,GAAO,IAAItF,GAAS,IAAI4a,YAAY,MAAQp3B,GACxDtK,IAAOosB,GAAO,IAAIpsB,KAAQ4J,GAC1B7a,IAAWq9B,GAAOr9B,GAAQwJ,YAAcwR,GACxCrR,IAAO0zB,GAAO,IAAI1zB,KAAQuR,GAC1B8c,IAAWqF,GAAO,IAAIrF,KAAY3c,KACrCgiB,GAAS,SAAS/+B,GAChB,IAAIwlB,EAAS2d,GAAWnjC,GACpBy/B,EAAOja,GAAU/I,EAAYzc,EAAMoF,YAAckS,EACjDg9B,EAAa7U,EAAO1F,GAAS0F,GAAQ,GAEzC,GAAI6U,EACF,OAAQA,GACN,KAAKxa,GAAoB,OAAO7c,EAChC,KAAK+c,GAAe,OAAOzd,EAC3B,KAAK0d,GAAmB,OAAOvd,EAC/B,KAAKwd,GAAe,OAAOtd,EAC3B,KAAKud,GAAmB,OAAOpd,EAGnC,OAAOyI,IA+SX,IAAI+uB,GAAahe,GAAaqM,GAAa4R,GAS3C,SAASzN,GAAY/mC,GACnB,IAAIy/B,EAAOz/B,GAASA,EAAMoF,YAG1B,OAAOpF,KAFqB,mBAARy/B,GAAsBA,EAAK19B,WAAcu0B,IAa/D,SAASmR,GAAmBznC,GAC1B,OAAOA,GAAUA,IAAU+6B,GAAS/6B,GAYtC,SAASunC,GAAwBroC,EAAKonC,GACpC,OAAO,SAASpf,GACd,OAAc,MAAVA,IAGGA,EAAOhoB,KAASonC,IACpBA,IAAahvB,GAAcpY,KAAOH,GAAOmoB,MAsIhD,SAAS4iB,GAASrlB,EAAMmlB,EAAOhV,GAE7B,OADAgV,EAAQ7Q,GAAU6Q,IAAUtyB,EAAamN,EAAK1jB,OAAS,EAAK6oC,EAAO,GAC5D,WAML,IALA,IAAIjlB,EAAO0qB,UACPpqB,GAAS,EACTlkB,EAASg4B,GAAUpU,EAAK5jB,OAAS6oC,EAAO,GACxC/kB,EAAQ9Y,GAAMhL,KAETkkB,EAAQlkB,GACf8jB,EAAMI,GAASN,EAAKilB,EAAQ3kB,GAE9BA,GAAS,EAET,IADA,IAAIwvB,EAAY1oC,GAAM69B,EAAQ,KACrB3kB,EAAQ2kB,GACf6K,EAAUxvB,GAASN,EAAKM,GAG1B,OADAwvB,EAAU7K,GAAShV,EAAU/P,GACtBL,GAAMC,EAAMjf,KAAMivC,IAY7B,SAAS9/B,GAAOuS,EAAQvmB,GACtB,OAAOA,EAAKI,OAAS,EAAImmB,EAAS2b,GAAQ3b,EAAQojB,GAAU3pC,EAAM,GAAI,IAaxE,SAASuwC,GAAQrsB,EAAO0kB,GAKtB,IAJA,IAAImK,EAAY7uB,EAAM9jB,OAClBA,EAASk4B,GAAUsQ,EAAQxoC,OAAQ2yC,GACnCgB,EAAWxX,GAAUrY,GAElB9jB,KAAU,CACf,IAAIkkB,EAAQskB,EAAQxoC,GACpB8jB,EAAM9jB,GAAU87B,GAAQ5X,EAAOyuB,GAAagB,EAASzvB,GAAS3N,EAEhE,OAAOuN,EAWT,SAASijB,GAAQ5gB,EAAQhoB,GACvB,IAAY,gBAARA,GAAgD,mBAAhBgoB,EAAOhoB,KAIhC,aAAPA,EAIJ,OAAOgoB,EAAOhoB,GAiBhB,IAAIozC,GAAUqC,GAASzK,IAUnB/R,GAAaD,IAAiB,SAASzT,EAAMkc,GAC/C,OAAO1d,GAAKkV,WAAW1T,EAAMkc,IAW3BkJ,GAAc8K,GAASxK,IAY3B,SAASoI,GAAgBzC,EAAS8E,EAAWpW,GAC3C,IAAI1/B,EAAU81C,EAAY,GAC1B,OAAO/K,GAAYiG,EA1brB,SAA2BhxC,EAAQ+1C,GACjC,IAAI9zC,EAAS8zC,EAAQ9zC,OACrB,IAAKA,EACH,OAAOjC,EAET,IAAIo2B,EAAYn0B,EAAS,EAGzB,OAFA8zC,EAAQ3f,IAAcn0B,EAAS,EAAI,KAAO,IAAM8zC,EAAQ3f,GACxD2f,EAAUA,EAAQtuC,KAAKxF,EAAS,EAAI,KAAO,KACpCjC,EAAOiK,QAAQ8V,GAAe,uBAAyBg2B,EAAU,UAkb5CC,CAAkBh2C,EAqHhD,SAA2B+1C,EAASrW,GAOlC,OANAtZ,GAAUnJ,GAAW,SAAS42B,GAC5B,IAAI3yC,EAAQ,KAAO2yC,EAAK,GACnBnU,EAAUmU,EAAK,KAAQltB,GAAcovB,EAAS70C,IACjD60C,EAAQhuC,KAAK7G,MAGV60C,EAAQnM,OA5HuCqM,CAtjBxD,SAAwBj2C,GACtB,IAAI6G,EAAQ7G,EAAO6G,MAAMmZ,IACzB,OAAOnZ,EAAQA,EAAM,GAAGQ,MAAM4Y,IAAkB,GAojBwBi2B,CAAel2C,GAAS0/B,KAYlG,SAASmW,GAASlwB,GAChB,IAAIwwB,EAAQ,EACRC,EAAa,EAEjB,OAAO,WACL,IAAIC,EAAQhc,KACRic,EA3/MK,IA2/MmBD,EAAQD,GAGpC,GADAA,EAAaC,EACTC,EAAY,GACd,KAAMH,GAhgNE,IAigNN,OAAO5F,UAAU,QAGnB4F,EAAQ,EAEV,OAAOxwB,EAAKD,MAAMlN,EAAW+3B,YAYjC,SAASpS,GAAYpY,EAAO6P,GAC1B,IAAIzP,GAAS,EACTlkB,EAAS8jB,EAAM9jB,OACfm0B,EAAYn0B,EAAS,EAGzB,IADA2zB,EAAOA,IAASpd,EAAYvW,EAAS2zB,IAC5BzP,EAAQyP,GAAM,CACrB,IAAI2gB,EAAOtY,GAAW9X,EAAOiQ,GACzBl1B,EAAQ6kB,EAAMwwB,GAElBxwB,EAAMwwB,GAAQxwB,EAAMI,GACpBJ,EAAMI,GAASjlB,EAGjB,OADA6kB,EAAM9jB,OAAS2zB,EACR7P,EAUT,IAAI8nB,GAvTJ,SAAuBloB,GACrB,IAAIe,EAAS8vB,GAAQ7wB,GAAM,SAASvlB,GAIlC,OAvxMiB,MAoxMbwoB,EAAMgN,MACRhN,EAAMzQ,QAED/X,KAGLwoB,EAAQlC,EAAOkC,MACnB,OAAOlC,EA8SU+vB,EAAc,SAAS/gB,GACxC,IAAIhP,EAAS,GAOb,OAN6B,KAAzBgP,EAAOghB,WAAW,IACpBhwB,EAAO3e,KAAK,IAEd2tB,EAAOzrB,QAAQwV,IAAY,SAAS5Y,EAAOy4B,EAAQqX,EAAOC,GACxDlwB,EAAO3e,KAAK4uC,EAAQC,EAAU3sC,QAAQkW,GAAc,MAASmf,GAAUz4B,MAElE6f,KAUT,SAASud,GAAM/iC,GACb,GAAoB,iBAATA,GAAqBkiC,GAASliC,GACvC,OAAOA,EAET,IAAIwlB,EAAUxlB,EAAQ,GACtB,MAAkB,KAAVwlB,GAAkB,EAAIxlB,IAAU,EAAA,EAAa,KAAOwlB,EAU9D,SAASuU,GAAStV,GAChB,GAAY,MAARA,EAAc,CAChB,IACE,OAAO+R,GAAav0B,KAAKwiB,GACzB,MAAOxkB,IACT,IACE,OAAQwkB,EAAO,GACf,MAAOxkB,KAEX,MAAO,GA4BT,SAAS26B,GAAakV,GACpB,GAAIA,aAAmBpV,GACrB,OAAOoV,EAAQ6F,QAEjB,IAAInwB,EAAS,IAAImV,GAAcmV,EAAQ5U,YAAa4U,EAAQ1U,WAI5D,OAHA5V,EAAO2V,YAAc+B,GAAU4S,EAAQ3U,aACvC3V,EAAO6V,UAAayU,EAAQzU,UAC5B7V,EAAO8V,WAAawU,EAAQxU,WACrB9V,EAsIT,IAAIowB,GAAajM,IAAS,SAAS9kB,EAAOkB,GACxC,OAAOiiB,GAAkBnjB,GACrB+b,GAAe/b,EAAOud,GAAYrc,EAAQ,EAAGiiB,IAAmB,IAChE,MA6BF6N,GAAelM,IAAS,SAAS9kB,EAAOkB,GAC1C,IAAIhB,EAAWsf,GAAKte,GAIpB,OAHIiiB,GAAkBjjB,KACpBA,EAAWzN,GAEN0wB,GAAkBnjB,GACrB+b,GAAe/b,EAAOud,GAAYrc,EAAQ,EAAGiiB,IAAmB,GAAOQ,GAAYzjB,EAAU,IAC7F,MA0BF+wB,GAAiBnM,IAAS,SAAS9kB,EAAOkB,GAC5C,IAAIH,EAAaye,GAAKte,GAItB,OAHIiiB,GAAkBpiB,KACpBA,EAAatO,GAER0wB,GAAkBnjB,GACrB+b,GAAe/b,EAAOud,GAAYrc,EAAQ,EAAGiiB,IAAmB,GAAO1wB,EAAWsO,GAClF,MAsON,SAASmwB,GAAUlxB,EAAOQ,EAAWsB,GACnC,IAAI5lB,EAAkB,MAAT8jB,EAAgB,EAAIA,EAAM9jB,OACvC,IAAKA,EACH,OAAQ,EAEV,IAAIkkB,EAAqB,MAAb0B,EAAoB,EAAI+rB,GAAU/rB,GAI9C,OAHI1B,EAAQ,IACVA,EAAQ8T,GAAUh4B,EAASkkB,EAAO,IAE7ByB,GAAc7B,EAAO2jB,GAAYnjB,EAAW,GAAIJ,GAsCzD,SAAS+wB,GAAcnxB,EAAOQ,EAAWsB,GACvC,IAAI5lB,EAAkB,MAAT8jB,EAAgB,EAAIA,EAAM9jB,OACvC,IAAKA,EACH,OAAQ,EAEV,IAAIkkB,EAAQlkB,EAAS,EAOrB,OANI4lB,IAAcrP,IAChB2N,EAAQytB,GAAU/rB,GAClB1B,EAAQ0B,EAAY,EAChBoS,GAAUh4B,EAASkkB,EAAO,GAC1BgU,GAAUhU,EAAOlkB,EAAS,IAEzB2lB,GAAc7B,EAAO2jB,GAAYnjB,EAAW,GAAIJ,GAAO,GAiBhE,SAAS4uB,GAAQhvB,GAEf,OADsB,MAATA,EAAgB,EAAIA,EAAM9jB,QACvBqhC,GAAYvd,EAAO,GAAK,GAgG1C,SAASoxB,GAAKpxB,GACZ,OAAQA,GAASA,EAAM9jB,OAAU8jB,EAAM,GAAKvN,EA0E9C,IAAI4+B,GAAevM,IAAS,SAAS9F,GACnC,IAAIsS,EAAStwB,GAASge,EAAQ4I,IAC9B,OAAQ0J,EAAOp1C,QAAUo1C,EAAO,KAAOtS,EAAO,GAC1CD,GAAiBuS,GACjB,MA0BFC,GAAiBzM,IAAS,SAAS9F,GACrC,IAAI9e,EAAWsf,GAAKR,GAChBsS,EAAStwB,GAASge,EAAQ4I,IAO9B,OALI1nB,IAAasf,GAAK8R,GACpBpxB,EAAWzN,EAEX6+B,EAAOvsC,MAEDusC,EAAOp1C,QAAUo1C,EAAO,KAAOtS,EAAO,GAC1CD,GAAiBuS,EAAQ3N,GAAYzjB,EAAU,IAC/C,MAwBFsxB,GAAmB1M,IAAS,SAAS9F,GACvC,IAAIje,EAAaye,GAAKR,GAClBsS,EAAStwB,GAASge,EAAQ4I,IAM9B,OAJA7mB,EAAkC,mBAAdA,EAA2BA,EAAatO,IAE1D6+B,EAAOvsC,MAEDusC,EAAOp1C,QAAUo1C,EAAO,KAAOtS,EAAO,GAC1CD,GAAiBuS,EAAQ7+B,EAAWsO,GACpC,MAoCN,SAASye,GAAKxf,GACZ,IAAI9jB,EAAkB,MAAT8jB,EAAgB,EAAIA,EAAM9jB,OACvC,OAAOA,EAAS8jB,EAAM9jB,EAAS,GAAKuW,EAuFtC,IAAIg/B,GAAO3M,GAAS4M,IAsBpB,SAASA,GAAQ1xB,EAAOkB,GACtB,OAAQlB,GAASA,EAAM9jB,QAAUglB,GAAUA,EAAOhlB,OAC9CqoC,GAAYvkB,EAAOkB,GACnBlB,EAqFN,IAAI2xB,GAAS9G,IAAS,SAAS7qB,EAAO0kB,GACpC,IAAIxoC,EAAkB,MAAT8jB,EAAgB,EAAIA,EAAM9jB,OACnCykB,EAASyY,GAAOpZ,EAAO0kB,GAM3B,OAJAD,GAAWzkB,EAAOgB,GAAS0jB,GAAS,SAAStkB,GAC3C,OAAO4X,GAAQ5X,EAAOlkB,IAAWkkB,EAAQA,KACxCyjB,KAAKM,KAEDxjB,KA2ET,SAASgU,GAAQ3U,GACf,OAAgB,MAATA,EAAgBA,EAAQ0U,GAAct3B,KAAK4iB,GAkapD,IAAI4xB,GAAQ9M,IAAS,SAAS9F,GAC5B,OAAO8H,GAASvJ,GAAYyB,EAAQ,EAAGmE,IAAmB,OA0BxD0O,GAAU/M,IAAS,SAAS9F,GAC9B,IAAI9e,EAAWsf,GAAKR,GAIpB,OAHImE,GAAkBjjB,KACpBA,EAAWzN,GAENq0B,GAASvJ,GAAYyB,EAAQ,EAAGmE,IAAmB,GAAOQ,GAAYzjB,EAAU,OAwBrF4xB,GAAYhN,IAAS,SAAS9F,GAChC,IAAIje,EAAaye,GAAKR,GAEtB,OADAje,EAAkC,mBAAdA,EAA2BA,EAAatO,EACrDq0B,GAASvJ,GAAYyB,EAAQ,EAAGmE,IAAmB,GAAO1wB,EAAWsO,MAgG9E,SAASgxB,GAAM/xB,GACb,IAAMA,IAASA,EAAM9jB,OACnB,MAAO,GAET,IAAIA,EAAS,EAOb,OANA8jB,EAAQS,GAAYT,GAAO,SAASgyB,GAClC,GAAI7O,GAAkB6O,GAEpB,OADA91C,EAASg4B,GAAU8d,EAAM91C,OAAQA,IAC1B,KAGJumB,GAAUvmB,GAAQ,SAASkkB,GAChC,OAAOY,GAAShB,EAAOyB,GAAarB,OAyBxC,SAAS6xB,GAAUjyB,EAAOE,GACxB,IAAMF,IAASA,EAAM9jB,OACnB,MAAO,GAET,IAAIykB,EAASoxB,GAAM/xB,GACnB,OAAgB,MAAZE,EACKS,EAEFK,GAASL,GAAQ,SAASqxB,GAC/B,OAAOryB,GAAMO,EAAUzN,EAAWu/B,MAwBtC,IAAIE,GAAUpN,IAAS,SAAS9kB,EAAOkB,GACrC,OAAOiiB,GAAkBnjB,GACrB+b,GAAe/b,EAAOkB,GACtB,MAqBFixB,GAAMrN,IAAS,SAAS9F,GAC1B,OAAOwI,GAAQ/mB,GAAYue,EAAQmE,QA0BjCiP,GAAQtN,IAAS,SAAS9F,GAC5B,IAAI9e,EAAWsf,GAAKR,GAIpB,OAHImE,GAAkBjjB,KACpBA,EAAWzN,GAEN+0B,GAAQ/mB,GAAYue,EAAQmE,IAAoBQ,GAAYzjB,EAAU,OAwB3EmyB,GAAUvN,IAAS,SAAS9F,GAC9B,IAAIje,EAAaye,GAAKR,GAEtB,OADAje,EAAkC,mBAAdA,EAA2BA,EAAatO,EACrD+0B,GAAQ/mB,GAAYue,EAAQmE,IAAoB1wB,EAAWsO,MAmBhEuxB,GAAMxN,GAASiN,IA6DnB,IAAIQ,GAAUzN,IAAS,SAAS9F,GAC9B,IAAI9iC,EAAS8iC,EAAO9iC,OAChBgkB,EAAWhkB,EAAS,EAAI8iC,EAAO9iC,EAAS,GAAKuW,EAGjD,OADAyN,EAA8B,mBAAZA,GAA0B8e,EAAOj6B,MAAOmb,GAAYzN,EAC/Dw/B,GAAUjT,EAAQ9e,MAkC3B,SAASsyB,GAAMr3C,GACb,IAAIwlB,EAASgV,GAAOx6B,GAEpB,OADAwlB,EAAO4V,WAAY,EACZ5V,EAsDT,SAASqqB,GAAK7vC,EAAOs3C,GACnB,OAAOA,EAAYt3C,GAmBrB,IAAIu3C,GAAY7H,IAAS,SAASxR,GAChC,IAAIn9B,EAASm9B,EAAMn9B,OACf6oC,EAAQ7oC,EAASm9B,EAAM,GAAK,EAC5Bl+B,EAAQwF,KAAK01B,YACboc,EAAc,SAASpwB,GAAU,OAAO+W,GAAO/W,EAAQgX,IAE3D,QAAIn9B,EAAS,GAAKyE,KAAK21B,YAAYp6B,SAC7Bf,aAAiB06B,IAAiBmC,GAAQ+M,KAGhD5pC,EAAQA,EAAMoB,MAAMwoC,GAAQA,GAAS7oC,EAAS,EAAI,KAC5Co6B,YAAYt0B,KAAK,CACrB4d,KAAQorB,GACRlrB,KAAQ,CAAC2yB,GACT5yB,QAAWpN,IAEN,IAAIqjB,GAAc36B,EAAOwF,KAAK41B,WAAWyU,MAAK,SAAShrB,GAI5D,OAHI9jB,IAAW8jB,EAAM9jB,QACnB8jB,EAAMhe,KAAKyQ,GAENuN,MAZArf,KAAKqqC,KAAKyH,MA+PrB,IAAIE,GAAUpJ,IAAiB,SAAS5oB,EAAQxlB,EAAOd,GACjD8C,GAAeC,KAAKujB,EAAQtmB,KAC5BsmB,EAAOtmB,GAETq+B,GAAgB/X,EAAQtmB,EAAK,MAuIjC,IAAIu4C,GAAOlI,GAAWwG,IAqBlB2B,GAAWnI,GAAWyG,IA2G1B,SAAS/2C,GAAQunB,EAAYzB,GAE3B,OADW/Y,GAAQwa,GAActB,GAAY0Y,IACjCpX,EAAYgiB,GAAYzjB,EAAU,IAuBhD,SAAS4yB,GAAanxB,EAAYzB,GAEhC,OADW/Y,GAAQwa,GAAcrB,GAAiB2c,IACtCtb,EAAYgiB,GAAYzjB,EAAU,IA0BhD,IAAI6yB,GAAUxJ,IAAiB,SAAS5oB,EAAQxlB,EAAOd,GACjD8C,GAAeC,KAAKujB,EAAQtmB,GAC9BsmB,EAAOtmB,GAAK2H,KAAK7G,GAEjBu9B,GAAgB/X,EAAQtmB,EAAK,CAACc,OAsElC,IAAI63C,GAAYlO,IAAS,SAASnjB,EAAY7lB,EAAMgkB,GAClD,IAAIM,GAAS,EACT+Z,EAAwB,mBAARr+B,EAChB6kB,EAAS6hB,GAAY7gB,GAAcza,GAAMya,EAAWzlB,QAAU,GAKlE,OAHA68B,GAASpX,GAAY,SAASxmB,GAC5BwlB,IAASP,GAAS+Z,EAASxa,GAAM7jB,EAAMX,EAAO2kB,GAAQyf,GAAWpkC,EAAOW,EAAMgkB,MAEzEa,KA+BLsyB,GAAQ1J,IAAiB,SAAS5oB,EAAQxlB,EAAOd,GACnDq+B,GAAgB/X,EAAQtmB,EAAKc,MA6C/B,SAASoG,GAAIogB,EAAYzB,GAEvB,OADW/Y,GAAQwa,GAAcX,GAAWuhB,IAChC5gB,EAAYgiB,GAAYzjB,EAAU,IAkFhD,IAAIgzB,GAAY3J,IAAiB,SAAS5oB,EAAQxlB,EAAOd,GACvDsmB,EAAOtmB,EAAM,EAAI,GAAG2H,KAAK7G,MACxB,WAAa,MAAO,CAAC,GAAI,OAmS5B,IAAIg4C,GAASrO,IAAS,SAASnjB,EAAY8hB,GACzC,GAAkB,MAAd9hB,EACF,MAAO,GAET,IAAIzlB,EAASunC,EAAUvnC,OAMvB,OALIA,EAAS,GAAK2tC,GAAeloB,EAAY8hB,EAAU,GAAIA,EAAU,IACnEA,EAAY,GACHvnC,EAAS,GAAK2tC,GAAepG,EAAU,GAAIA,EAAU,GAAIA,EAAU,MAC5EA,EAAY,CAACA,EAAU,KAElBD,GAAY7hB,EAAY4b,GAAYkG,EAAW,GAAI,OAqBxDrQ,GAAMD,IAAU,WAClB,OAAO/U,GAAKgT,KAAKgC,OA0DnB,SAASuY,GAAI/rB,EAAM/jB,EAAG+tC,GAGpB,OAFA/tC,EAAI+tC,EAAQn3B,EAAY5W,EACxBA,EAAK+jB,GAAa,MAAL/jB,EAAa+jB,EAAK1jB,OAASL,EACjCqyC,GAAWtuB,EAAM/I,EAAepE,EAAWA,EAAWA,EAAWA,EAAW5W,GAoBrF,SAASu3C,GAAOv3C,EAAG+jB,GACjB,IAAIe,EACJ,GAAmB,mBAARf,EACT,MAAM,IAAItjB,GAAUia,GAGtB,OADA1a,EAAIgyC,GAAUhyC,GACP,WAOL,QANMA,EAAI,IACR8kB,EAASf,EAAKD,MAAMhf,KAAM6pC,YAExB3uC,GAAK,IACP+jB,EAAOnN,GAEFkO,GAuCX,IAAIhQ,GAAOm0B,IAAS,SAASllB,EAAMC,EAAS2oB,GAC1C,IAAI7O,EA91Ta,EA+1TjB,GAAI6O,EAAStsC,OAAQ,CACnB,IAAIusC,EAAUxY,GAAeuY,EAAUyD,GAAUt7B,KACjDgpB,GAAWhjB,EAEb,OAAOu3B,GAAWtuB,EAAM+Z,EAAS9Z,EAAS2oB,EAAUC,MAgDlD4K,GAAUvO,IAAS,SAASziB,EAAQhoB,EAAKmuC,GAC3C,IAAI7O,EAAU2Z,EACd,GAAI9K,EAAStsC,OAAQ,CACnB,IAAIusC,EAAUxY,GAAeuY,EAAUyD,GAAUoH,KACjD1Z,GAAWhjB,EAEb,OAAOu3B,GAAW7zC,EAAKs/B,EAAStX,EAAQmmB,EAAUC,MAsJpD,SAAS8K,GAAS3zB,EAAMkc,EAAMl7B,GAC5B,IAAI4yC,EACAC,EACAC,EACA/yB,EACAgzB,EACAC,EACAC,EAAiB,EACjBC,GAAU,EACVC,GAAS,EACT7J,GAAW,EAEf,GAAmB,mBAARtqB,EACT,MAAM,IAAItjB,GAAUia,GAUtB,SAASy9B,EAAWC,GAClB,IAAIn0B,EAAO0zB,EACP3zB,EAAU4zB,EAKd,OAHAD,EAAWC,EAAWhhC,EACtBohC,EAAiBI,EACjBtzB,EAASf,EAAKD,MAAME,EAASC,GAI/B,SAASo0B,EAAYD,GAMnB,OAJAJ,EAAiBI,EAEjBN,EAAUrgB,GAAW6gB,EAAcrY,GAE5BgY,EAAUE,EAAWC,GAAQtzB,EAatC,SAASyzB,EAAaH,GACpB,IAAII,EAAoBJ,EAAOL,EAM/B,OAAQA,IAAiBnhC,GAAc4hC,GAAqBvY,GACzDuY,EAAoB,GAAON,GANJE,EAAOJ,GAM8BH,EAGjE,SAASS,IACP,IAAIF,EAAO7gB,KACX,GAAIghB,EAAaH,GACf,OAAOK,EAAaL,GAGtBN,EAAUrgB,GAAW6gB,EA3BvB,SAAuBF,GACrB,IAEIM,EAAczY,GAFMmY,EAAOL,GAI/B,OAAOG,EACH3f,GAAUmgB,EAAab,GAJDO,EAAOJ,IAK7BU,EAoB+BC,CAAcP,IAGnD,SAASK,EAAaL,GAKpB,OAJAN,EAAUlhC,EAINy3B,GAAYsJ,EACPQ,EAAWC,IAEpBT,EAAWC,EAAWhhC,EACfkO,GAeT,SAAS8zB,IACP,IAAIR,EAAO7gB,KACPshB,EAAaN,EAAaH,GAM9B,GAJAT,EAAWhJ,UACXiJ,EAAW9yC,KACXizC,EAAeK,EAEXS,EAAY,CACd,GAAIf,IAAYlhC,EACd,OAAOyhC,EAAYN,GAErB,GAAIG,EAIF,OAFA7gB,GAAaygB,GACbA,EAAUrgB,GAAW6gB,EAAcrY,GAC5BkY,EAAWJ,GAMtB,OAHID,IAAYlhC,IACdkhC,EAAUrgB,GAAW6gB,EAAcrY,IAE9Bnb,EAIT,OA3GAmb,EAAOuR,GAASvR,IAAS,EACrB5F,GAASt1B,KACXkzC,IAAYlzC,EAAQkzC,QAEpBJ,GADAK,EAAS,YAAanzC,GACHszB,GAAUmZ,GAASzsC,EAAQ8yC,UAAY,EAAG5X,GAAQ4X,EACrExJ,EAAW,aAActpC,IAAYA,EAAQspC,SAAWA,GAoG1DuK,EAAUE,OApCV,WACMhB,IAAYlhC,GACdygB,GAAaygB,GAEfE,EAAiB,EACjBL,EAAWI,EAAeH,EAAWE,EAAUlhC,GAgCjDgiC,EAAUG,MA7BV,WACE,OAAOjB,IAAYlhC,EAAYkO,EAAS2zB,EAAalhB,OA6BhDqhB,EAqBT,IAAII,GAAQ/P,IAAS,SAASllB,EAAME,GAClC,OAAO+b,GAAUjc,EAAM,EAAGE,MAsBxBg1B,GAAQhQ,IAAS,SAASllB,EAAMkc,EAAMhc,GACxC,OAAO+b,GAAUjc,EAAMytB,GAASvR,IAAS,EAAGhc,MAqE9C,SAAS2wB,GAAQ7wB,EAAMm1B,GACrB,GAAmB,mBAARn1B,GAAmC,MAAZm1B,GAAuC,mBAAZA,EAC3D,MAAM,IAAIz4C,GAAUia,GAEtB,IAAIy+B,EAAW,WACb,IAAIl1B,EAAO0qB,UACPnwC,EAAM06C,EAAWA,EAASp1B,MAAMhf,KAAMmf,GAAQA,EAAK,GACnD+C,EAAQmyB,EAASnyB,MAErB,GAAIA,EAAMvb,IAAIjN,GACZ,OAAOwoB,EAAMroB,IAAIH,GAEnB,IAAIsmB,EAASf,EAAKD,MAAMhf,KAAMmf,GAE9B,OADAk1B,EAASnyB,MAAQA,EAAMnf,IAAIrJ,EAAKsmB,IAAWkC,EACpClC,GAGT,OADAq0B,EAASnyB,MAAQ,IAAK4tB,GAAQwE,OAAS9d,IAChC6d,EA0BT,SAASE,GAAO10B,GACd,GAAwB,mBAAbA,EACT,MAAM,IAAIlkB,GAAUia,GAEtB,OAAO,WACL,IAAIuJ,EAAO0qB,UACX,OAAQ1qB,EAAK5jB,QACX,KAAK,EAAG,OAAQskB,EAAUpjB,KAAKuD,MAC/B,KAAK,EAAG,OAAQ6f,EAAUpjB,KAAKuD,KAAMmf,EAAK,IAC1C,KAAK,EAAG,OAAQU,EAAUpjB,KAAKuD,KAAMmf,EAAK,GAAIA,EAAK,IACnD,KAAK,EAAG,OAAQU,EAAUpjB,KAAKuD,KAAMmf,EAAK,GAAIA,EAAK,GAAIA,EAAK,IAE9D,OAAQU,EAAUb,MAAMhf,KAAMmf,IAlClC2wB,GAAQwE,MAAQ9d,GA2FhB,IAAIge,GAAWpN,IAAS,SAASnoB,EAAMw1B,GAKrC,IAAIC,GAJJD,EAAmC,GAArBA,EAAWl5C,QAAeiL,GAAQiuC,EAAW,IACvDp0B,GAASo0B,EAAW,GAAI1yB,GAAUihB,OAClC3iB,GAASuc,GAAY6X,EAAY,GAAI1yB,GAAUihB,QAEtBznC,OAC7B,OAAO4oC,IAAS,SAAShlB,GAIvB,IAHA,IAAIM,GAAS,EACTlkB,EAASk4B,GAAUtU,EAAK5jB,OAAQm5C,KAE3Bj1B,EAAQlkB,GACf4jB,EAAKM,GAASg1B,EAAWh1B,GAAOhjB,KAAKuD,KAAMmf,EAAKM,IAElD,OAAOT,GAAMC,EAAMjf,KAAMmf,SAqCzBw1B,GAAUxQ,IAAS,SAASllB,EAAM4oB,GACpC,IAAIC,EAAUxY,GAAeuY,EAAUyD,GAAUqJ,KACjD,OAAOpH,GAAWtuB,EAAMjJ,EAAmBlE,EAAW+1B,EAAUC,MAmC9D8M,GAAezQ,IAAS,SAASllB,EAAM4oB,GACzC,IAAIC,EAAUxY,GAAeuY,EAAUyD,GAAUsJ,KACjD,OAAOrH,GAAWtuB,EAAMhJ,EAAyBnE,EAAW+1B,EAAUC,MAyBpE+M,GAAQ3K,IAAS,SAASjrB,EAAM8kB,GAClC,OAAOwJ,GAAWtuB,EAAM9I,EAAiBrE,EAAWA,EAAWA,EAAWiyB,MAia5E,SAASjM,GAAGt9B,EAAOyjC,GACjB,OAAOzjC,IAAUyjC,GAAUzjC,GAAUA,GAASyjC,GAAUA,EA0B1D,IAAI6W,GAAKrI,GAA0BzO,IAyB/B+W,GAAMtI,IAA0B,SAASjyC,EAAOyjC,GAClD,OAAOzjC,GAASyjC,KAqBdhH,GAAc6H,GAAgB,WAAa,OAAO+K,UAApB,IAAsC/K,GAAkB,SAAStkC,GACjG,OAAOy6B,GAAaz6B,IAAUgC,GAAeC,KAAKjC,EAAO,YACtDs3B,GAAqBr1B,KAAKjC,EAAO,WA0BlCgM,GAAUD,GAAMC,QAmBhB6X,GAAgBD,GAAoB2D,GAAU3D,IA75PlD,SAA2B5jB,GACzB,OAAOy6B,GAAaz6B,IAAUmjC,GAAWnjC,IAAUgd,GAu7PrD,SAASqqB,GAAYrnC,GACnB,OAAgB,MAATA,GAAiBo0C,GAASp0C,EAAMe,UAAY6hC,GAAW5iC,GA4BhE,SAASgoC,GAAkBhoC,GACzB,OAAOy6B,GAAaz6B,IAAUqnC,GAAYrnC,GA0C5C,IAAIkB,GAAWw3B,IAAkB8b,GAmB7BzwB,GAASD,GAAayD,GAAUzD,IAxgQpC,SAAoB9jB,GAClB,OAAOy6B,GAAaz6B,IAAUmjC,GAAWnjC,IAAUmc,GA+qQrD,SAASq+B,GAAQx6C,GACf,IAAKy6B,GAAaz6B,GAChB,OAAO,EAET,IAAIwR,EAAM2xB,GAAWnjC,GACrB,OAAOwR,GAAO4K,GArwWF,yBAqwWc5K,GACC,iBAAjBxR,EAAM4a,SAA4C,iBAAd5a,EAAMwM,OAAqBy7B,GAAcjoC,GAkDzF,SAAS4iC,GAAW5iC,GAClB,IAAK+6B,GAAS/6B,GACZ,OAAO,EAIT,IAAIwR,EAAM2xB,GAAWnjC,GACrB,OAAOwR,GAAO6K,GAAW7K,GAAO8K,GAl0WrB,0BAk0W+B9K,GAtzW/B,kBAszWkDA,EA6B/D,SAASipC,GAAUz6C,GACjB,MAAuB,iBAATA,GAAqBA,GAAS0yC,GAAU1yC,GA6BxD,SAASo0C,GAASp0C,GAChB,MAAuB,iBAATA,GACZA,GAAS,GAAKA,EAAQ,GAAK,GAAKA,GAASqC,EA4B7C,SAAS04B,GAAS/6B,GAChB,IAAI+zC,SAAc/zC,EAClB,OAAgB,MAATA,IAA0B,UAAR+zC,GAA4B,YAARA,GA2B/C,SAAStZ,GAAaz6B,GACpB,OAAgB,MAATA,GAAiC,iBAATA,EAoBjC,IAAIikB,GAAQD,GAAYuD,GAAUvD,IA5xQlC,SAAmBhkB,GACjB,OAAOy6B,GAAaz6B,IAAU++B,GAAO/+B,IAAUuc,GA6+QjD,SAASm+B,GAAS16C,GAChB,MAAuB,iBAATA,GACXy6B,GAAaz6B,IAAUmjC,GAAWnjC,IAAUwc,EA+BjD,SAASyrB,GAAcjoC,GACrB,IAAKy6B,GAAaz6B,IAAUmjC,GAAWnjC,IAAUyc,EAC/C,OAAO,EAET,IAAIqe,EAAQ5D,GAAal3B,GACzB,GAAc,OAAV86B,EACF,OAAO,EAET,IAAI2E,EAAOz9B,GAAeC,KAAK64B,EAAO,gBAAkBA,EAAM11B,YAC9D,MAAsB,mBAARq6B,GAAsBA,aAAgBA,GAClDjJ,GAAav0B,KAAKw9B,IAAS5I,GAoB/B,IAAI1S,GAAWD,GAAeqD,GAAUrD,IA59QxC,SAAsBlkB,GACpB,OAAOy6B,GAAaz6B,IAAUmjC,GAAWnjC,IAAU2c,GA6gRrD,IAAI0H,GAAQD,GAAYmD,GAAUnD,IAngRlC,SAAmBpkB,GACjB,OAAOy6B,GAAaz6B,IAAU++B,GAAO/+B,IAAU4c,GAqhRjD,SAAS+9B,GAAS36C,GAChB,MAAuB,iBAATA,IACVgM,GAAQhM,IAAUy6B,GAAaz6B,IAAUmjC,GAAWnjC,IAAU6c,EAoBpE,SAASqlB,GAASliC,GAChB,MAAuB,iBAATA,GACXy6B,GAAaz6B,IAAUmjC,GAAWnjC,IAAU8c,EAoBjD,IAAIyH,GAAeD,GAAmBiD,GAAUjD,IAvjRhD,SAA0BtkB,GACxB,OAAOy6B,GAAaz6B,IAClBo0C,GAASp0C,EAAMe,WAAamhB,GAAeihB,GAAWnjC,KA6oR1D,IAAI46C,GAAK3I,GAA0B9K,IAyB/B0T,GAAM5I,IAA0B,SAASjyC,EAAOyjC,GAClD,OAAOzjC,GAASyjC,KA0BlB,SAASqX,GAAQ96C,GACf,IAAKA,EACH,MAAO,GAET,GAAIqnC,GAAYrnC,GACd,OAAO26C,GAAS36C,GAASo1B,GAAcp1B,GAASk9B,GAAUl9B,GAE5D,GAAIy3B,IAAez3B,EAAMy3B,IACvB,OAx7VN,SAAyBC,GAIvB,IAHA,IAAI0E,EACA5W,EAAS,KAEJ4W,EAAO1E,EAASqjB,QAAQC,MAC/Bx1B,EAAO3e,KAAKu1B,EAAKp8B,OAEnB,OAAOwlB,EAi7VIy1B,CAAgBj7C,EAAMy3B,OAE/B,IAAIjmB,EAAMutB,GAAO/+B,GAGjB,OAFWwR,GAAO+K,EAASkY,GAAcjjB,GAAOoL,EAASmY,GAAahP,IAE1D/lB,GA0Bd,SAAS+xC,GAAS/xC,GAChB,OAAKA,GAGLA,EAAQkyC,GAASlyC,MACH4b,GAAY5b,KAAU,EAAA,EA/hYtB,uBAgiYAA,EAAQ,GAAK,EAAI,GAGxBA,GAAUA,EAAQA,EAAQ,EAPd,IAAVA,EAAcA,EAAQ,EAoCjC,SAAS0yC,GAAU1yC,GACjB,IAAIwlB,EAASusB,GAAS/xC,GAClBk7C,EAAY11B,EAAS,EAEzB,OAAOA,GAAWA,EAAU01B,EAAY11B,EAAS01B,EAAY11B,EAAU,EA8BzE,SAAS21B,GAASn7C,GAChB,OAAOA,EAAQm9B,GAAUuV,GAAU1yC,GAAQ,EAAG8b,GAAoB,EA0BpE,SAASo2B,GAASlyC,GAChB,GAAoB,iBAATA,EACT,OAAOA,EAET,GAAIkiC,GAASliC,GACX,OAAO6b,EAET,GAAIkf,GAAS/6B,GAAQ,CACnB,IAAIyjC,EAAgC,mBAAjBzjC,EAAMs6B,QAAwBt6B,EAAMs6B,UAAYt6B,EACnEA,EAAQ+6B,GAAS0I,GAAUA,EAAQ,GAAMA,EAE3C,GAAoB,iBAATzjC,EACT,OAAiB,IAAVA,EAAcA,GAASA,EAEhCA,EAAQA,EAAM+I,QAAQ2V,GAAQ,IAC9B,IAAI08B,EAAW/7B,GAAWzc,KAAK5C,GAC/B,OAAQo7C,GAAY77B,GAAU3c,KAAK5C,GAC/B6iB,GAAa7iB,EAAMoB,MAAM,GAAIg6C,EAAW,EAAI,GAC3Ch8B,GAAWxc,KAAK5C,GAAS6b,GAAO7b,EA2BvC,SAASkoC,GAAcloC,GACrB,OAAO89B,GAAW99B,EAAOq/B,GAAOr/B,IAsDlC,SAAS8B,GAAS9B,GAChB,OAAgB,MAATA,EAAgB,GAAK0rC,GAAa1rC,GAqC3C,IAAIq7C,GAAS/M,IAAe,SAASpnB,EAAQpoB,GAC3C,GAAIioC,GAAYjoC,IAAWuoC,GAAYvoC,GACrCg/B,GAAWh/B,EAAQE,GAAKF,GAASooB,QAGnC,IAAK,IAAIhoB,KAAOJ,EACVkD,GAAeC,KAAKnD,EAAQI,IAC9Bs+B,GAAYtW,EAAQhoB,EAAKJ,EAAOI,OAoClCo8C,GAAWhN,IAAe,SAASpnB,EAAQpoB,GAC7Cg/B,GAAWh/B,EAAQugC,GAAOvgC,GAASooB,MAgCjCq0B,GAAejN,IAAe,SAASpnB,EAAQpoB,EAAQ8oC,EAAUnJ,GACnEX,GAAWh/B,EAAQugC,GAAOvgC,GAASooB,EAAQuX,MA+BzC+c,GAAalN,IAAe,SAASpnB,EAAQpoB,EAAQ8oC,EAAUnJ,GACjEX,GAAWh/B,EAAQE,GAAKF,GAASooB,EAAQuX,MAoBvCgd,GAAK/L,GAASzR,IA8DlB,IAAIlI,GAAW4T,IAAS,SAASziB,EAAQsnB,GACvCtnB,EAASnoB,GAAOmoB,GAEhB,IAAIjC,GAAS,EACTlkB,EAASytC,EAAQztC,OACjB0tC,EAAQ1tC,EAAS,EAAIytC,EAAQ,GAAKl3B,EAMtC,IAJIm3B,GAASC,GAAeF,EAAQ,GAAIA,EAAQ,GAAIC,KAClD1tC,EAAS,KAGFkkB,EAAQlkB,GAMf,IALA,IAAIjC,EAAS0vC,EAAQvpB,GACjBxT,EAAQ4tB,GAAOvgC,GACf48C,GAAc,EACdC,EAAclqC,EAAM1Q,SAEf26C,EAAaC,GAAa,CACjC,IAAIz8C,EAAMuS,EAAMiqC,GACZ17C,EAAQknB,EAAOhoB,IAEfc,IAAUsX,GACTgmB,GAAGt9B,EAAOs2B,GAAYp3B,MAAU8C,GAAeC,KAAKilB,EAAQhoB,MAC/DgoB,EAAOhoB,GAAOJ,EAAOI,IAK3B,OAAOgoB,KAsBL00B,GAAejS,IAAS,SAAShlB,GAEnC,OADAA,EAAK9d,KAAKyQ,EAAWk8B,IACdhvB,GAAMq3B,GAAWvkC,EAAWqN,MAgSrC,SAAStlB,GAAI6nB,EAAQvmB,EAAM4wC,GACzB,IAAI/rB,EAAmB,MAAV0B,EAAiB5P,EAAYurB,GAAQ3b,EAAQvmB,GAC1D,OAAO6kB,IAAWlO,EAAYi6B,EAAe/rB,EA4D/C,SAASkiB,GAAMxgB,EAAQvmB,GACrB,OAAiB,MAAVumB,GAAkBgtB,GAAQhtB,EAAQvmB,EAAMgjC,IAqBjD,IAAImY,GAAS3K,IAAe,SAAS3rB,EAAQxlB,EAAOd,GACrC,MAATc,GACyB,mBAAlBA,EAAM8B,WACf9B,EAAQ42B,GAAqB30B,KAAKjC,IAGpCwlB,EAAOxlB,GAASd,IACfkrC,GAAS1D,KA4BRqV,GAAW5K,IAAe,SAAS3rB,EAAQxlB,EAAOd,GACvC,MAATc,GACyB,mBAAlBA,EAAM8B,WACf9B,EAAQ42B,GAAqB30B,KAAKjC,IAGhCgC,GAAeC,KAAKujB,EAAQxlB,GAC9BwlB,EAAOxlB,GAAO6G,KAAK3H,GAEnBsmB,EAAOxlB,GAAS,CAACd,KAElBspC,IAoBCwT,GAASrS,GAASvF,IA8BtB,SAASplC,GAAKkoB,GACZ,OAAOmgB,GAAYngB,GAAUmV,GAAcnV,GAAU4f,GAAS5f,GA0BhE,SAASmY,GAAOnY,GACd,OAAOmgB,GAAYngB,GAAUmV,GAAcnV,GAAQ,GAAQ8f,GAAW9f,GAuGxE,IAAI+0B,GAAQ3N,IAAe,SAASpnB,EAAQpoB,EAAQ8oC,GAClDD,GAAUzgB,EAAQpoB,EAAQ8oC,MAkCxBiU,GAAYvN,IAAe,SAASpnB,EAAQpoB,EAAQ8oC,EAAUnJ,GAChEkJ,GAAUzgB,EAAQpoB,EAAQ8oC,EAAUnJ,MAuBlCyd,GAAOxM,IAAS,SAASxoB,EAAQgX,GACnC,IAAI1Y,EAAS,GACb,GAAc,MAAV0B,EACF,OAAO1B,EAET,IAAIkZ,GAAS,EACbR,EAAQrY,GAASqY,GAAO,SAASv9B,GAG/B,OAFAA,EAAOmiC,GAASniC,EAAMumB,GACtBwX,IAAWA,EAAS/9B,EAAKI,OAAS,GAC3BJ,KAETm9B,GAAW5W,EAAQqZ,GAAarZ,GAAS1B,GACrCkZ,IACFlZ,EAAS+Y,GAAU/Y,EAAQ22B,EAAwD1I,KAGrF,IADA,IAAI1yC,EAASm9B,EAAMn9B,OACZA,KACL0oC,GAAUjkB,EAAQ0Y,EAAMn9B,IAE1B,OAAOykB,KA4CT,IAAIwQ,GAAO0Z,IAAS,SAASxoB,EAAQgX,GACnC,OAAiB,MAAVhX,EAAiB,GAnmT1B,SAAkBA,EAAQgX,GACxB,OAAOgL,GAAWhiB,EAAQgX,GAAO,SAASl+B,EAAOW,GAC/C,OAAO+mC,GAAMxgB,EAAQvmB,MAimTMy7C,CAASl1B,EAAQgX,MAqBhD,SAASme,GAAOn1B,EAAQ7B,GACtB,GAAc,MAAV6B,EACF,MAAO,GAET,IAAIzV,EAAQoU,GAAS0a,GAAarZ,IAAS,SAASo1B,GAClD,MAAO,CAACA,MAGV,OADAj3B,EAAYmjB,GAAYnjB,GACjB6jB,GAAWhiB,EAAQzV,GAAO,SAASzR,EAAOW,GAC/C,OAAO0kB,EAAUrlB,EAAOW,EAAK,OA4IjC,IAAI47C,GAAU1J,GAAc7zC,IA0BxBw9C,GAAY3J,GAAcxT,IA4K9B,SAAStZ,GAAOmB,GACd,OAAiB,MAAVA,EAAiB,GAAKM,GAAWN,EAAQloB,GAAKkoB,IAkNvD,IAAIu1B,GAAYzN,IAAiB,SAASxpB,EAAQk3B,EAAMz3B,GAEtD,OADAy3B,EAAOA,EAAKxyC,cACLsb,GAAUP,EAAQ03B,GAAWD,GAAQA,MAkB9C,SAASC,GAAWnoB,GAClB,OAAOooB,GAAW96C,GAAS0yB,GAAQtqB,eAqBrC,SAASilC,GAAO3a,GAEd,OADAA,EAAS1yB,GAAS0yB,KACDA,EAAOzrB,QAAQ0W,GAASwI,IAAclf,QAAQ4Y,GAAa,IAsH9E,IAAIk7B,GAAY7N,IAAiB,SAASxpB,EAAQk3B,EAAMz3B,GACtD,OAAOO,GAAUP,EAAQ,IAAM,IAAMy3B,EAAKxyC,iBAuBxC4yC,GAAY9N,IAAiB,SAASxpB,EAAQk3B,EAAMz3B,GACtD,OAAOO,GAAUP,EAAQ,IAAM,IAAMy3B,EAAKxyC,iBAoBxC6yC,GAAanO,GAAgB,eA0NjC,IAAIoO,GAAYhO,IAAiB,SAASxpB,EAAQk3B,EAAMz3B,GACtD,OAAOO,GAAUP,EAAQ,IAAM,IAAMy3B,EAAKxyC,iBAgE5C,IAAI+yC,GAAYjO,IAAiB,SAASxpB,EAAQk3B,EAAMz3B,GACtD,OAAOO,GAAUP,EAAQ,IAAM,IAAM23B,GAAWF,MAgiBlD,IAAIQ,GAAYlO,IAAiB,SAASxpB,EAAQk3B,EAAMz3B,GACtD,OAAOO,GAAUP,EAAQ,IAAM,IAAMy3B,EAAKS,iBAoBxCP,GAAahO,GAAgB,eAqBjC,SAASM,GAAM1a,EAAQ4oB,EAAS3O,GAI9B,OAHAja,EAAS1yB,GAAS0yB,IAClB4oB,EAAU3O,EAAQn3B,EAAY8lC,KAEd9lC,EAhxbpB,SAAwBkd,GACtB,OAAOzS,GAAiBnf,KAAK4xB,GAgxblB6oB,CAAe7oB,GApjb5B,SAAsBA,GACpB,OAAOA,EAAO7uB,MAAMkc,KAAkB,GAmjbFy7B,CAAa9oB,GAvpcnD,SAAoBA,GAClB,OAAOA,EAAO7uB,MAAMqZ,KAAgB,GAspcuBu+B,CAAW/oB,GAE7DA,EAAO7uB,MAAMy3C,IAAY,GA2BlC,IAAII,GAAU7T,IAAS,SAASllB,EAAME,GACpC,IACE,OAAOH,GAAMC,EAAMnN,EAAWqN,GAC9B,MAAO1kB,GACP,OAAOu6C,GAAQv6C,GAAKA,EAAI,IAAIa,GAAMb,OA8BlCw9C,GAAU/N,IAAS,SAASxoB,EAAQw2B,GAKtC,OAJAx4B,GAAUw4B,GAAa,SAASx+C,GAC9BA,EAAM6jC,GAAM7jC,GACZq+B,GAAgBrW,EAAQhoB,EAAKsW,GAAK0R,EAAOhoB,GAAMgoB,OAE1CA,KAqGT,SAASkjB,GAASpqC,GAChB,OAAO,WACL,OAAOA,GAkDX,IAAI29C,GAAOlO,KAuBPmO,GAAYnO,IAAW,GAkB3B,SAAS/I,GAAS1mC,GAChB,OAAOA,EA6CT,SAAS+kB,GAASN,GAChB,OAAOgiB,GAA4B,mBAARhiB,EAAqBA,EAAO8Z,GAAU9Z,EAlqe/C,IAywepB,IAAIo5B,GAASlU,IAAS,SAAShpC,EAAMgkB,GACnC,OAAO,SAASuC,GACd,OAAOkd,GAAWld,EAAQvmB,EAAMgkB,OA2BhCm5B,GAAWnU,IAAS,SAASziB,EAAQvC,GACvC,OAAO,SAAShkB,GACd,OAAOyjC,GAAWld,EAAQvmB,EAAMgkB,OAwCpC,SAASo5B,GAAM72B,EAAQpoB,EAAQ2G,GAC7B,IAAIgM,EAAQzS,GAAKF,GACb4+C,EAAc/a,GAAc7jC,EAAQ2S,GAEzB,MAAXhM,GACEs1B,GAASj8B,KAAY4+C,EAAY38C,SAAW0Q,EAAM1Q,UACtD0E,EAAU3G,EACVA,EAASooB,EACTA,EAAS1hB,KACTk4C,EAAc/a,GAAc7jC,EAAQE,GAAKF,KAE3C,IAAIu4C,IAAUtc,GAASt1B,IAAY,UAAWA,IAAcA,EAAQ4xC,OAChErY,EAAS4D,GAAW1b,GAqBxB,OAnBAhC,GAAUw4B,GAAa,SAAS7O,GAC9B,IAAIpqB,EAAO3lB,EAAO+vC,GAClB3nB,EAAO2nB,GAAcpqB,EACjBua,IACF9X,EAAOnlB,UAAU8sC,GAAc,WAC7B,IAAI5T,EAAWz1B,KAAK41B,UACpB,GAAIic,GAASpc,EAAU,CACrB,IAAIzV,EAAS0B,EAAO1hB,KAAK01B,aACrBiR,EAAU3mB,EAAO2V,YAAc+B,GAAU13B,KAAK21B,aAIlD,OAFAgR,EAAQtlC,KAAK,CAAE4d,KAAQA,EAAME,KAAQ0qB,UAAW3qB,QAAWwC,IAC3D1B,EAAO4V,UAAYH,EACZzV,EAET,OAAOf,EAAKD,MAAM0C,EAAQpB,GAAU,CAACtgB,KAAKxF,SAAUqvC,iBAKnDnoB,EAmCT,SAAS0rB,MAiDT,IAAIoL,GAAOxM,GAAW3rB,IA8BlBo4B,GAAYzM,GAAWpsB,IAiCvB84B,GAAW1M,GAAWprB,IAwB1B,SAASygB,GAASlmC,GAChB,OAAO6mC,GAAM7mC,GAAQ2lB,GAAayc,GAAMpiC,IA12X1C,SAA0BA,GACxB,OAAO,SAASumB,GACd,OAAO2b,GAAQ3b,EAAQvmB,IAw2XwBw9C,CAAiBx9C,GAuEpE,IAAI+H,GAAQmpC,KAsCRuM,GAAavM,IAAY,GAoB7B,SAASoC,KACP,MAAO,GAgBT,SAASO,KACP,OAAO,EA+JT,IAAIjoC,GAAM+kC,IAAoB,SAAS+M,EAAQC,GAC7C,OAAOD,EAASC,IACf,GAuBCjmB,GAAOma,GAAY,QAiBnB+L,GAASjN,IAAoB,SAASkN,EAAUC,GAClD,OAAOD,EAAWC,IACjB,GAuBClmB,GAAQia,GAAY,SAwKxB,IAAIkM,GAAWpN,IAAoB,SAASqN,EAAYC,GACtD,OAAOD,EAAaC,IACnB,GAuBCC,GAAQrM,GAAY,SAiBpBsM,GAAWxN,IAAoB,SAASyN,EAASC,GACnD,OAAOD,EAAUC,IAChB,GAgmBH,OA1iBAxkB,GAAOykB,MA95MP,SAAev+C,EAAG+jB,GAChB,GAAmB,mBAARA,EACT,MAAM,IAAItjB,GAAUia,GAGtB,OADA1a,EAAIgyC,GAAUhyC,GACP,WACL,KAAMA,EAAI,EACR,OAAO+jB,EAAKD,MAAMhf,KAAM6pC,aAw5M9B7U,GAAOgW,IAAMA,GACbhW,GAAO6gB,OAASA,GAChB7gB,GAAO8gB,SAAWA,GAClB9gB,GAAO+gB,aAAeA,GACtB/gB,GAAOghB,WAAaA,GACpBhhB,GAAOihB,GAAKA,GACZjhB,GAAOyd,OAASA,GAChBzd,GAAOhlB,KAAOA,GACdglB,GAAOijB,QAAUA,GACjBjjB,GAAO0d,QAAUA,GACjB1d,GAAO0kB,UA57KP,WACE,IAAK7P,UAAUtuC,OACb,MAAO,GAET,IAAIf,EAAQqvC,UAAU,GACtB,OAAOrjC,GAAQhM,GAASA,EAAQ,CAACA,IAw7KnCw6B,GAAO6c,MAAQA,GACf7c,GAAO2kB,MA9/SP,SAAet6B,EAAO6P,EAAM+Z,GAExB/Z,GADG+Z,EAAQC,GAAe7pB,EAAO6P,EAAM+Z,GAAS/Z,IAASpd,GAClD,EAEAyhB,GAAU2Z,GAAUhe,GAAO,GAEpC,IAAI3zB,EAAkB,MAAT8jB,EAAgB,EAAIA,EAAM9jB,OACvC,IAAKA,GAAU2zB,EAAO,EACpB,MAAO,GAMT,IAJA,IAAIzP,EAAQ,EACRM,EAAW,EACXC,EAASzZ,GAAMqsB,GAAWr3B,EAAS2zB,IAEhCzP,EAAQlkB,GACbykB,EAAOD,KAAc+kB,GAAUzlB,EAAOI,EAAQA,GAASyP,GAEzD,OAAOlP,GA8+STgV,GAAO4kB,QA59SP,SAAiBv6B,GAMf,IALA,IAAII,GAAS,EACTlkB,EAAkB,MAAT8jB,EAAgB,EAAIA,EAAM9jB,OACnCwkB,EAAW,EACXC,EAAS,KAEJP,EAAQlkB,GAAQ,CACvB,IAAIf,EAAQ6kB,EAAMI,GACdjlB,IACFwlB,EAAOD,KAAcvlB,GAGzB,OAAOwlB,GAi9STgV,GAAOxoB,OAx7SP,WACE,IAAIjR,EAASsuC,UAAUtuC,OACvB,IAAKA,EACH,MAAO,GAMT,IAJA,IAAI4jB,EAAO5Y,GAAMhL,EAAS,GACtB8jB,EAAQwqB,UAAU,GAClBpqB,EAAQlkB,EAELkkB,KACLN,EAAKM,EAAQ,GAAKoqB,UAAUpqB,GAE9B,OAAOa,GAAU9Z,GAAQ6Y,GAASqY,GAAUrY,GAAS,CAACA,GAAQud,GAAYzd,EAAM,KA66SlF6V,GAAO6kB,KA3tCP,SAAc3d,GACZ,IAAI3gC,EAAkB,MAAT2gC,EAAgB,EAAIA,EAAM3gC,OACnCqwC,EAAa5I,KASjB,OAPA9G,EAAS3gC,EAAc8kB,GAAS6b,GAAO,SAASiR,GAC9C,GAAsB,mBAAXA,EAAK,GACd,MAAM,IAAIxxC,GAAUia,GAEtB,MAAO,CAACg2B,EAAWuB,EAAK,IAAKA,EAAK,OAJlB,GAOXhJ,IAAS,SAAShlB,GAEvB,IADA,IAAIM,GAAS,IACJA,EAAQlkB,GAAQ,CACvB,IAAI4xC,EAAOjR,EAAMzc,GACjB,GAAIT,GAAMmuB,EAAK,GAAIntC,KAAMmf,GACvB,OAAOH,GAAMmuB,EAAK,GAAIntC,KAAMmf,QA4sCpC6V,GAAO8kB,SA9qCP,SAAkBxgD,GAChB,OAn5YF,SAAsBA,GACpB,IAAI2S,EAAQzS,GAAKF,GACjB,OAAO,SAASooB,GACd,OAAOuZ,GAAevZ,EAAQpoB,EAAQ2S,IAg5YjC8tC,CAAahhB,GAAUz/B,EAhgeZ,KA8qgBpB07B,GAAO4P,SAAWA,GAClB5P,GAAOgd,QAAUA,GACjBhd,GAAOnD,OAhuHP,SAAgBt1B,EAAWy9C,GACzB,IAAIh6B,EAASqV,GAAW94B,GACxB,OAAqB,MAAdy9C,EAAqBh6B,EAASqY,GAAWrY,EAAQg6B,IA+tH1DhlB,GAAOilB,MAnuMP,SAASA,EAAMh7B,EAAMgsB,EAAOhC,GAE1B,IAAIjpB,EAASutB,GAAWtuB,EAp8TN,EAo8T6BnN,EAAWA,EAAWA,EAAWA,EAAWA,EAD3Fm5B,EAAQhC,EAAQn3B,EAAYm5B,GAG5B,OADAjrB,EAAOwC,YAAcy3B,EAAMz3B,YACpBxC,GAguMTgV,GAAOklB,WAvrMP,SAASA,EAAWj7B,EAAMgsB,EAAOhC,GAE/B,IAAIjpB,EAASutB,GAAWtuB,EAAMlJ,EAAuBjE,EAAWA,EAAWA,EAAWA,EAAWA,EADjGm5B,EAAQhC,EAAQn3B,EAAYm5B,GAG5B,OADAjrB,EAAOwC,YAAc03B,EAAW13B,YACzBxC,GAorMTgV,GAAO4d,SAAWA,GAClB5d,GAAOzE,SAAWA,GAClByE,GAAOohB,aAAeA,GACtBphB,GAAOkf,MAAQA,GACflf,GAAOmf,MAAQA,GACfnf,GAAOob,WAAaA,GACpBpb,GAAOqb,aAAeA,GACtBrb,GAAOsb,eAAiBA,GACxBtb,GAAOmlB,KAh0SP,SAAc96B,EAAOnkB,EAAG+tC,GACtB,IAAI1tC,EAAkB,MAAT8jB,EAAgB,EAAIA,EAAM9jB,OACvC,OAAKA,EAIEupC,GAAUzlB,GADjBnkB,EAAK+tC,GAAS/tC,IAAM4W,EAAa,EAAIo7B,GAAUhyC,IACnB,EAAI,EAAIA,EAAGK,GAH9B,IA8zSXy5B,GAAOolB,UA/xSP,SAAmB/6B,EAAOnkB,EAAG+tC,GAC3B,IAAI1tC,EAAkB,MAAT8jB,EAAgB,EAAIA,EAAM9jB,OACvC,OAAKA,EAKEupC,GAAUzlB,EAAO,GADxBnkB,EAAIK,GADJL,EAAK+tC,GAAS/tC,IAAM4W,EAAa,EAAIo7B,GAAUhyC,KAEhB,EAAI,EAAIA,GAJ9B,IA6xSX85B,GAAOqlB,eAnvSP,SAAwBh7B,EAAOQ,GAC7B,OAAQR,GAASA,EAAM9jB,OACnBirC,GAAUnnB,EAAO2jB,GAAYnjB,EAAW,IAAI,GAAM,GAClD,IAivSNmV,GAAOslB,UA3sSP,SAAmBj7B,EAAOQ,GACxB,OAAQR,GAASA,EAAM9jB,OACnBirC,GAAUnnB,EAAO2jB,GAAYnjB,EAAW,IAAI,GAC5C,IAysSNmV,GAAOulB,KAzqSP,SAAcl7B,EAAO7kB,EAAO4pC,EAAOW,GACjC,IAAIxpC,EAAkB,MAAT8jB,EAAgB,EAAIA,EAAM9jB,OACvC,OAAKA,GAGD6oC,GAAyB,iBAATA,GAAqB8E,GAAe7pB,EAAO7kB,EAAO4pC,KACpEA,EAAQ,EACRW,EAAMxpC,GAzvIV,SAAkB8jB,EAAO7kB,EAAO4pC,EAAOW,GACrC,IAAIxpC,EAAS8jB,EAAM9jB,OAWnB,KATA6oC,EAAQ8I,GAAU9I,IACN,IACVA,GAASA,EAAQ7oC,EAAS,EAAKA,EAAS6oC,IAE1CW,EAAOA,IAAQjzB,GAAaizB,EAAMxpC,EAAUA,EAAS2xC,GAAUnI,IACrD,IACRA,GAAOxpC,GAETwpC,EAAMX,EAAQW,EAAM,EAAI4Q,GAAS5Q,GAC1BX,EAAQW,GACb1lB,EAAM+kB,KAAW5pC,EAEnB,OAAO6kB,EA4uIAm7B,CAASn7B,EAAO7kB,EAAO4pC,EAAOW,IAN5B,IAuqSX/P,GAAO/xB,OArvOP,SAAgB+d,EAAYnB,GAE1B,OADWrZ,GAAQwa,GAAclB,GAAc6c,IACnC3b,EAAYgiB,GAAYnjB,EAAW,KAovOjDmV,GAAOylB,QAjqOP,SAAiBz5B,EAAYzB,GAC3B,OAAOqd,GAAYh8B,GAAIogB,EAAYzB,GAAW,IAiqOhDyV,GAAO0lB,YA1oOP,SAAqB15B,EAAYzB,GAC/B,OAAOqd,GAAYh8B,GAAIogB,EAAYzB,GAAWnJ,IA0oOhD4e,GAAO2lB,aAlnOP,SAAsB35B,EAAYzB,EAAUsd,GAE1C,OADAA,EAAQA,IAAU/qB,EAAY,EAAIo7B,GAAUrQ,GACrCD,GAAYh8B,GAAIogB,EAAYzB,GAAWsd,IAinOhD7H,GAAOqZ,QAAUA,GACjBrZ,GAAO4lB,YAjiSP,SAAqBv7B,GAEnB,OADsB,MAATA,EAAgB,EAAIA,EAAM9jB,QACvBqhC,GAAYvd,EAAOjJ,GAAY,IAgiSjD4e,GAAO6lB,aAzgSP,SAAsBx7B,EAAOwd,GAE3B,OADsB,MAATxd,EAAgB,EAAIA,EAAM9jB,QAKhCqhC,GAAYvd,EADnBwd,EAAQA,IAAU/qB,EAAY,EAAIo7B,GAAUrQ,IAFnC,IAugSX7H,GAAO8lB,KAn9LP,SAAc77B,GACZ,OAAOsuB,GAAWtuB,EAnuUD,MAsrgBnB+V,GAAOmjB,KAAOA,GACdnjB,GAAOojB,UAAYA,GACnBpjB,GAAO+lB,UAr/RP,SAAmB7e,GAKjB,IAJA,IAAIzc,GAAS,EACTlkB,EAAkB,MAAT2gC,EAAgB,EAAIA,EAAM3gC,OACnCykB,EAAS,KAEJP,EAAQlkB,GAAQ,CACvB,IAAI4xC,EAAOjR,EAAMzc,GACjBO,EAAOmtB,EAAK,IAAMA,EAAK,GAEzB,OAAOntB,GA6+RTgV,GAAOgmB,UAr8GP,SAAmBt5B,GACjB,OAAiB,MAAVA,EAAiB,GAAKyb,GAAczb,EAAQloB,GAAKkoB,KAq8G1DsT,GAAOimB,YA36GP,SAAqBv5B,GACnB,OAAiB,MAAVA,EAAiB,GAAKyb,GAAczb,EAAQmY,GAAOnY,KA26G5DsT,GAAOod,QAAUA,GACjBpd,GAAOkmB,QAt6RP,SAAiB77B,GAEf,OADsB,MAATA,EAAgB,EAAIA,EAAM9jB,QACvBupC,GAAUzlB,EAAO,GAAI,GAAK,IAq6R5C2V,GAAO0b,aAAeA,GACtB1b,GAAO4b,eAAiBA,GACxB5b,GAAO6b,iBAAmBA,GAC1B7b,GAAOshB,OAASA,GAChBthB,GAAOuhB,SAAWA,GAClBvhB,GAAOqd,UAAYA,GACnBrd,GAAOzV,SAAWA,GAClByV,GAAOsd,MAAQA,GACftd,GAAOx7B,KAAOA,GACdw7B,GAAO6E,OAASA,GAChB7E,GAAOp0B,IAAMA,GACbo0B,GAAOmmB,QAprGP,SAAiBz5B,EAAQnC,GACvB,IAAIS,EAAS,GAMb,OALAT,EAAWyjB,GAAYzjB,EAAU,GAEjC8c,GAAW3a,GAAQ,SAASlnB,EAAOd,EAAKgoB,GACtCqW,GAAgB/X,EAAQT,EAAS/kB,EAAOd,EAAKgoB,GAASlnB,MAEjDwlB,GA8qGTgV,GAAOomB,UA/oGP,SAAmB15B,EAAQnC,GACzB,IAAIS,EAAS,GAMb,OALAT,EAAWyjB,GAAYzjB,EAAU,GAEjC8c,GAAW3a,GAAQ,SAASlnB,EAAOd,EAAKgoB,GACtCqW,GAAgB/X,EAAQtmB,EAAK6lB,EAAS/kB,EAAOd,EAAKgoB,OAE7C1B,GAyoGTgV,GAAOqmB,QAphCP,SAAiB/hD,GACf,OAAO8nC,GAAYrI,GAAUz/B,EAzseX,KA6tgBpB07B,GAAOsmB,gBAh/BP,SAAyBngD,EAAM2lC,GAC7B,OAAOK,GAAoBhmC,EAAM49B,GAAU+H,EA9uezB,KA8tgBpB9L,GAAO8a,QAAUA,GACjB9a,GAAOyhB,MAAQA,GACfzhB,GAAOqhB,UAAYA,GACnBrhB,GAAOqjB,OAASA,GAChBrjB,GAAOsjB,SAAWA,GAClBtjB,GAAOujB,MAAQA,GACfvjB,GAAOuf,OAASA,GAChBvf,GAAOumB,OAzzBP,SAAgBrgD,GAEd,OADAA,EAAIgyC,GAAUhyC,GACPipC,IAAS,SAAShlB,GACvB,OAAOyjB,GAAQzjB,EAAMjkB,OAuzBzB85B,GAAO0hB,KAAOA,GACd1hB,GAAOwmB,OA7gGP,SAAgB95B,EAAQ7B,GACtB,OAAOg3B,GAAOn1B,EAAQ6yB,GAAOvR,GAAYnjB,MA6gG3CmV,GAAOymB,KAv3LP,SAAcx8B,GACZ,OAAOwzB,GAAO,EAAGxzB,IAu3LnB+V,GAAO0mB,QA/3NP,SAAiB16B,EAAY8hB,EAAWC,EAAQkG,GAC9C,OAAkB,MAAdjoB,EACK,IAEJxa,GAAQs8B,KACXA,EAAyB,MAAbA,EAAoB,GAAK,CAACA,IAGnCt8B,GADLu8B,EAASkG,EAAQn3B,EAAYixB,KAE3BA,EAAmB,MAAVA,EAAiB,GAAK,CAACA,IAE3BF,GAAY7hB,EAAY8hB,EAAWC,KAq3N5C/N,GAAOwjB,KAAOA,GACdxjB,GAAOwf,SAAWA,GAClBxf,GAAOyjB,UAAYA,GACnBzjB,GAAO0jB,SAAWA,GAClB1jB,GAAO2f,QAAUA,GACjB3f,GAAO4f,aAAeA,GACtB5f,GAAOud,UAAYA,GACnBvd,GAAOxE,KAAOA,GACdwE,GAAO6hB,OAASA,GAChB7hB,GAAOqM,SAAWA,GAClBrM,GAAO2mB,WA/rBP,SAAoBj6B,GAClB,OAAO,SAASvmB,GACd,OAAiB,MAAVumB,EAAiB5P,EAAYurB,GAAQ3b,EAAQvmB,KA8rBxD65B,GAAO8b,KAAOA,GACd9b,GAAO+b,QAAUA,GACjB/b,GAAO4mB,UA9rRP,SAAmBv8B,EAAOkB,EAAQhB,GAChC,OAAQF,GAASA,EAAM9jB,QAAUglB,GAAUA,EAAOhlB,OAC9CqoC,GAAYvkB,EAAOkB,EAAQyiB,GAAYzjB,EAAU,IACjDF,GA4rRN2V,GAAO6mB,YAlqRP,SAAqBx8B,EAAOkB,EAAQH,GAClC,OAAQf,GAASA,EAAM9jB,QAAUglB,GAAUA,EAAOhlB,OAC9CqoC,GAAYvkB,EAAOkB,EAAQzO,EAAWsO,GACtCf,GAgqRN2V,GAAOgc,OAASA,GAChBhc,GAAO9xB,MAAQA,GACf8xB,GAAO4jB,WAAaA,GACpB5jB,GAAO6f,MAAQA,GACf7f,GAAO8mB,OAlvNP,SAAgB96B,EAAYnB,GAE1B,OADWrZ,GAAQwa,GAAclB,GAAc6c,IACnC3b,EAAYuzB,GAAOvR,GAAYnjB,EAAW,MAivNxDmV,GAAO1iB,OAnmRP,SAAgB+M,EAAOQ,GACrB,IAAIG,EAAS,GACb,IAAMX,IAASA,EAAM9jB,OACnB,OAAOykB,EAET,IAAIP,GAAS,EACTskB,EAAU,GACVxoC,EAAS8jB,EAAM9jB,OAGnB,IADAskB,EAAYmjB,GAAYnjB,EAAW,KAC1BJ,EAAQlkB,GAAQ,CACvB,IAAIf,EAAQ6kB,EAAMI,GACdI,EAAUrlB,EAAOilB,EAAOJ,KAC1BW,EAAO3e,KAAK7G,GACZupC,EAAQ1iC,KAAKoe,IAIjB,OADAqkB,GAAWzkB,EAAO0kB,GACX/jB,GAklRTgV,GAAO+mB,KA5tLP,SAAc98B,EAAMmlB,GAClB,GAAmB,mBAARnlB,EACT,MAAM,IAAItjB,GAAUia,GAGtB,OAAOuuB,GAASllB,EADhBmlB,EAAQA,IAAUtyB,EAAYsyB,EAAQ8I,GAAU9I,KAytLlDpP,GAAOhB,QAAUA,GACjBgB,GAAOgnB,WA1sNP,SAAoBh7B,EAAY9lB,EAAG+tC,GAOjC,OALE/tC,GADG+tC,EAAQC,GAAeloB,EAAY9lB,EAAG+tC,GAAS/tC,IAAM4W,GACpD,EAEAo7B,GAAUhyC,IAELsL,GAAQwa,GAAcwW,GAAkBgN,IACvCxjB,EAAY9lB,IAosN1B85B,GAAOjyB,IAj6FP,SAAa2e,EAAQvmB,EAAMX,GACzB,OAAiB,MAAVknB,EAAiBA,EAASiiB,GAAQjiB,EAAQvmB,EAAMX,IAi6FzDw6B,GAAOinB,QAt4FP,SAAiBv6B,EAAQvmB,EAAMX,EAAOy+B,GAEpC,OADAA,EAAkC,mBAAdA,EAA2BA,EAAannB,EAC3C,MAAV4P,EAAiBA,EAASiiB,GAAQjiB,EAAQvmB,EAAMX,EAAOy+B,IAq4FhEjE,GAAOknB,QAprNP,SAAiBl7B,GAEf,OADWxa,GAAQwa,GAAc4W,GAAeiN,IACpC7jB,IAmrNdgU,GAAOp5B,MA1iRP,SAAeyjB,EAAO+kB,EAAOW,GAC3B,IAAIxpC,EAAkB,MAAT8jB,EAAgB,EAAIA,EAAM9jB,OACvC,OAAKA,GAGDwpC,GAAqB,iBAAPA,GAAmBmE,GAAe7pB,EAAO+kB,EAAOW,IAChEX,EAAQ,EACRW,EAAMxpC,IAGN6oC,EAAiB,MAATA,EAAgB,EAAI8I,GAAU9I,GACtCW,EAAMA,IAAQjzB,EAAYvW,EAAS2xC,GAAUnI,IAExCD,GAAUzlB,EAAO+kB,EAAOW,IAVtB,IAwiRX/P,GAAOwd,OAASA,GAChBxd,GAAOmnB,WAl3QP,SAAoB98B,GAClB,OAAQA,GAASA,EAAM9jB,OACnByqC,GAAe3mB,GACf,IAg3QN2V,GAAOonB,aA71QP,SAAsB/8B,EAAOE,GAC3B,OAAQF,GAASA,EAAM9jB,OACnByqC,GAAe3mB,EAAO2jB,GAAYzjB,EAAU,IAC5C,IA21QNyV,GAAOr0B,MAthEP,SAAequB,EAAQqtB,EAAWC,GAKhC,OAJIA,GAAyB,iBAATA,GAAqBpT,GAAela,EAAQqtB,EAAWC,KACzED,EAAYC,EAAQxqC,IAEtBwqC,EAAQA,IAAUxqC,EAAYwE,EAAmBgmC,IAAU,IAI3DttB,EAAS1yB,GAAS0yB,MAEQ,iBAAbqtB,GACO,MAAbA,IAAsB19B,GAAS09B,OAEpCA,EAAYnW,GAAamW,KACPttB,GAAWC,GACpBqY,GAAUzX,GAAcZ,GAAS,EAAGstB,GAGxCttB,EAAOruB,MAAM07C,EAAWC,GAZtB,IAihEXtnB,GAAOunB,OA7rLP,SAAgBt9B,EAAMmlB,GACpB,GAAmB,mBAARnlB,EACT,MAAM,IAAItjB,GAAUia,GAGtB,OADAwuB,EAAiB,MAATA,EAAgB,EAAI7Q,GAAU2Z,GAAU9I,GAAQ,GACjDD,IAAS,SAAShlB,GACvB,IAAIE,EAAQF,EAAKilB,GACb6K,EAAY5H,GAAUloB,EAAM,EAAGilB,GAKnC,OAHI/kB,GACFiB,GAAU2uB,EAAW5vB,GAEhBL,GAAMC,EAAMjf,KAAMivC,OAkrL7Bja,GAAOwnB,KA50QP,SAAcn9B,GACZ,IAAI9jB,EAAkB,MAAT8jB,EAAgB,EAAIA,EAAM9jB,OACvC,OAAOA,EAASupC,GAAUzlB,EAAO,EAAG9jB,GAAU,IA20QhDy5B,GAAOynB,KA/yQP,SAAcp9B,EAAOnkB,EAAG+tC,GACtB,OAAM5pB,GAASA,EAAM9jB,OAIdupC,GAAUzlB,EAAO,GADxBnkB,EAAK+tC,GAAS/tC,IAAM4W,EAAa,EAAIo7B,GAAUhyC,IAChB,EAAI,EAAIA,GAH9B,IA8yQX85B,GAAO0nB,UA/wQP,SAAmBr9B,EAAOnkB,EAAG+tC,GAC3B,IAAI1tC,EAAkB,MAAT8jB,EAAgB,EAAIA,EAAM9jB,OACvC,OAAKA,EAKEupC,GAAUzlB,GADjBnkB,EAAIK,GADJL,EAAK+tC,GAAS/tC,IAAM4W,EAAa,EAAIo7B,GAAUhyC,KAEnB,EAAI,EAAIA,EAAGK,GAJ9B,IA6wQXy5B,GAAO2nB,eAnuQP,SAAwBt9B,EAAOQ,GAC7B,OAAQR,GAASA,EAAM9jB,OACnBirC,GAAUnnB,EAAO2jB,GAAYnjB,EAAW,IAAI,GAAO,GACnD,IAiuQNmV,GAAO4nB,UA3rQP,SAAmBv9B,EAAOQ,GACxB,OAAQR,GAASA,EAAM9jB,OACnBirC,GAAUnnB,EAAO2jB,GAAYnjB,EAAW,IACxC,IAyrQNmV,GAAO6nB,IA9tPP,SAAariD,EAAOs3C,GAElB,OADAA,EAAYt3C,GACLA,GA6tPTw6B,GAAO8nB,SAxoLP,SAAkB79B,EAAMkc,EAAMl7B,GAC5B,IAAIkzC,GAAU,EACV5J,GAAW,EAEf,GAAmB,mBAARtqB,EACT,MAAM,IAAItjB,GAAUia,GAMtB,OAJI2f,GAASt1B,KACXkzC,EAAU,YAAalzC,IAAYA,EAAQkzC,QAAUA,EACrD5J,EAAW,aAActpC,IAAYA,EAAQspC,SAAWA,GAEnDqJ,GAAS3zB,EAAMkc,EAAM,CAC1BgY,QAAWA,EACXJ,QAAW5X,EACXoO,SAAYA,KA2nLhBvU,GAAOqV,KAAOA,GACdrV,GAAOsgB,QAAUA,GACjBtgB,GAAO+hB,QAAUA,GACjB/hB,GAAOgiB,UAAYA,GACnBhiB,GAAO+nB,OArfP,SAAgBviD,GACd,OAAIgM,GAAQhM,GACH6lB,GAAS7lB,EAAO+iC,IAElBb,GAASliC,GAAS,CAACA,GAASk9B,GAAUyP,GAAa7qC,GAAS9B,MAkfrEw6B,GAAO0N,cAAgBA,GACvB1N,GAAO5F,UAp0FP,SAAmB1N,EAAQnC,EAAUC,GACnC,IAAIuX,EAAQvwB,GAAQkb,GAChBs7B,EAAYjmB,GAASr7B,GAASgmB,IAAW3C,GAAa2C,GAG1D,GADAnC,EAAWyjB,GAAYzjB,EAAU,GACd,MAAfC,EAAqB,CACvB,IAAIya,EAAOvY,GAAUA,EAAO9hB,YAE1B4f,EADEw9B,EACYjmB,EAAQ,IAAIkD,EAAO,GAE1B1E,GAAS7T,IACF0b,GAAWnD,GAAQ5E,GAAW3D,GAAahQ,IAG3C,GAMlB,OAHCs7B,EAAYt9B,GAAY2c,IAAY3a,GAAQ,SAASlnB,EAAOilB,EAAOiC,GAClE,OAAOnC,EAASC,EAAahlB,EAAOilB,EAAOiC,MAEtClC,GAizFTwV,GAAOioB,MA/mLP,SAAeh+B,GACb,OAAO+rB,GAAI/rB,EAAM,IA+mLnB+V,GAAOic,MAAQA,GACfjc,GAAOkc,QAAUA,GACjBlc,GAAOmc,UAAYA,GACnBnc,GAAOkoB,KAnmQP,SAAc79B,GACZ,OAAQA,GAASA,EAAM9jB,OAAU4qC,GAAS9mB,GAAS,IAmmQrD2V,GAAOmoB,OAzkQP,SAAgB99B,EAAOE,GACrB,OAAQF,GAASA,EAAM9jB,OAAU4qC,GAAS9mB,EAAO2jB,GAAYzjB,EAAU,IAAM,IAykQ/EyV,GAAOooB,SAljQP,SAAkB/9B,EAAOe,GAEvB,OADAA,EAAkC,mBAAdA,EAA2BA,EAAatO,EACpDuN,GAASA,EAAM9jB,OAAU4qC,GAAS9mB,EAAOvN,EAAWsO,GAAc,IAijQ5E4U,GAAOqoB,MA1xFP,SAAe37B,EAAQvmB,GACrB,OAAiB,MAAVumB,GAAwBuiB,GAAUviB,EAAQvmB,IA0xFnD65B,GAAOoc,MAAQA,GACfpc,GAAOsc,UAAYA,GACnBtc,GAAOvkB,OA9vFP,SAAgBiR,EAAQvmB,EAAMorC,GAC5B,OAAiB,MAAV7kB,EAAiBA,EAAS4kB,GAAW5kB,EAAQvmB,EAAM+rC,GAAaX,KA8vFzEvR,GAAOsoB,WAnuFP,SAAoB57B,EAAQvmB,EAAMorC,EAAStN,GAEzC,OADAA,EAAkC,mBAAdA,EAA2BA,EAAannB,EAC3C,MAAV4P,EAAiBA,EAAS4kB,GAAW5kB,EAAQvmB,EAAM+rC,GAAaX,GAAUtN,IAkuFnFjE,GAAOzU,OAASA,GAChByU,GAAOuoB,SA1qFP,SAAkB77B,GAChB,OAAiB,MAAVA,EAAiB,GAAKM,GAAWN,EAAQmY,GAAOnY,KA0qFzDsT,GAAOuc,QAAUA,GACjBvc,GAAO0U,MAAQA,GACf1U,GAAOwoB,KArmLP,SAAchjD,EAAO8vC,GACnB,OAAOqK,GAAQzN,GAAaoD,GAAU9vC,IAqmLxCw6B,GAAOwc,IAAMA,GACbxc,GAAOyc,MAAQA,GACfzc,GAAO0c,QAAUA,GACjB1c,GAAO2c,IAAMA,GACb3c,GAAOyoB,UA32PP,SAAmBxxC,EAAOsU,GACxB,OAAOumB,GAAc76B,GAAS,GAAIsU,GAAU,GAAIyX,KA22PlDhD,GAAO0oB,cAz1PP,SAAuBzxC,EAAOsU,GAC5B,OAAOumB,GAAc76B,GAAS,GAAIsU,GAAU,GAAIojB,KAy1PlD3O,GAAO4c,QAAUA,GAGjB5c,GAAOqB,QAAU0gB,GACjB/hB,GAAO2oB,UAAY3G,GACnBhiB,GAAO4oB,OAAS9H,GAChB9gB,GAAO6oB,WAAa9H,GAGpBwC,GAAMvjB,GAAQA,IAKdA,GAAOjuB,IAAMA,GACbiuB,GAAOgjB,QAAUA,GACjBhjB,GAAOiiB,UAAYA,GACnBjiB,GAAOmiB,WAAaA,GACpBniB,GAAOnC,KAAOA,GACdmC,GAAO8oB,MA9qFP,SAAellB,EAAQC,EAAOC,GAa5B,OAZIA,IAAUhnB,IACZgnB,EAAQD,EACRA,EAAQ/mB,GAENgnB,IAAUhnB,IAEZgnB,GADAA,EAAQ4T,GAAS5T,KACCA,EAAQA,EAAQ,GAEhCD,IAAU/mB,IAEZ+mB,GADAA,EAAQ6T,GAAS7T,KACCA,EAAQA,EAAQ,GAE7BlB,GAAU+U,GAAS9T,GAASC,EAAOC,IAkqF5C9D,GAAOmb,MAvjLP,SAAe31C,GACb,OAAOu+B,GAAUv+B,EA5wVI,IAm0gBvBw6B,GAAO+oB,UA9/KP,SAAmBvjD,GACjB,OAAOu+B,GAAUv+B,EAAOm8C,IA8/K1B3hB,GAAOgpB,cA/9KP,SAAuBxjD,EAAOy+B,GAE5B,OAAOF,GAAUv+B,EAAOm8C,EADxB1d,EAAkC,mBAAdA,EAA2BA,EAAannB,IA+9K9DkjB,GAAOipB,UAvhLP,SAAmBzjD,EAAOy+B,GAExB,OAAOF,GAAUv+B,EAhzVI,EA+yVrBy+B,EAAkC,mBAAdA,EAA2BA,EAAannB,IAuhL9DkjB,GAAOkpB,WAp8KP,SAAoBx8B,EAAQpoB,GAC1B,OAAiB,MAAVA,GAAkB2hC,GAAevZ,EAAQpoB,EAAQE,GAAKF,KAo8K/D07B,GAAO2U,OAASA,GAChB3U,GAAOmpB,UA1xCP,SAAmB3jD,EAAOuxC,GACxB,OAAiB,MAATvxC,GAAiBA,GAAUA,EAASuxC,EAAevxC,GA0xC7Dw6B,GAAO+jB,OAASA,GAChB/jB,GAAOopB,SAn9EP,SAAkBpvB,EAAQqvB,EAAQC,GAChCtvB,EAAS1yB,GAAS0yB,GAClBqvB,EAASnY,GAAamY,GAEtB,IAAI9iD,EAASyzB,EAAOzzB,OAKhBwpC,EAJJuZ,EAAWA,IAAaxsC,EACpBvW,EACAo8B,GAAUuV,GAAUoR,GAAW,EAAG/iD,GAItC,OADA+iD,GAAYD,EAAO9iD,SACA,GAAKyzB,EAAOpzB,MAAM0iD,EAAUvZ,IAAQsZ,GAy8EzDrpB,GAAO8C,GAAKA,GACZ9C,GAAO2G,OA36EP,SAAgB3M,GAEd,OADAA,EAAS1yB,GAAS0yB,KACAvW,EAAmBrb,KAAK4xB,GACtCA,EAAOzrB,QAAQgV,EAAiBiW,IAChCQ,GAw6ENgG,GAAOupB,aAt5EP,SAAsBvvB,GAEpB,OADAA,EAAS1yB,GAAS0yB,KACA/V,GAAgB7b,KAAK4xB,GACnCA,EAAOzrB,QAAQyV,GAAc,QAC7BgW,GAm5ENgG,GAAO7wB,MAt7OP,SAAe6c,EAAYnB,EAAWopB,GACpC,IAAIhqB,EAAOzY,GAAQwa,GAAcpB,GAAa4c,GAI9C,OAHIyM,GAASC,GAAeloB,EAAYnB,EAAWopB,KACjDppB,EAAY/N,GAEPmN,EAAK+B,EAAYgiB,GAAYnjB,EAAW,KAk7OjDmV,GAAOid,KAAOA,GACdjd,GAAOub,UAAYA,GACnBvb,GAAOwpB,QA/wHP,SAAiB98B,EAAQ7B,GACvB,OAAOkB,GAAYW,EAAQshB,GAAYnjB,EAAW,GAAIwc,KA+wHxDrH,GAAOkd,SAAWA,GAClBld,GAAOwb,cAAgBA,GACvBxb,GAAOypB,YA3uHP,SAAqB/8B,EAAQ7B,GAC3B,OAAOkB,GAAYW,EAAQshB,GAAYnjB,EAAW,GAAI0c,KA2uHxDvH,GAAOjC,MAAQA,GACfiC,GAAOv7B,QAAUA,GACjBu7B,GAAOmd,aAAeA,GACtBnd,GAAO0pB,MA/sHP,SAAeh9B,EAAQnC,GACrB,OAAiB,MAAVmC,EACHA,EACAsb,GAAQtb,EAAQshB,GAAYzjB,EAAU,GAAIsa,KA6sHhD7E,GAAO2pB,WAhrHP,SAAoBj9B,EAAQnC,GAC1B,OAAiB,MAAVmC,EACHA,EACAwb,GAAaxb,EAAQshB,GAAYzjB,EAAU,GAAIsa,KA8qHrD7E,GAAO4pB,OA/oHP,SAAgBl9B,EAAQnC,GACtB,OAAOmC,GAAU2a,GAAW3a,EAAQshB,GAAYzjB,EAAU,KA+oH5DyV,GAAO6pB,YAlnHP,SAAqBn9B,EAAQnC,GAC3B,OAAOmC,GAAU6a,GAAgB7a,EAAQshB,GAAYzjB,EAAU,KAknHjEyV,GAAOn7B,IAAMA,GACbm7B,GAAO8f,GAAKA,GACZ9f,GAAO+f,IAAMA,GACb/f,GAAOruB,IAngHP,SAAa+a,EAAQvmB,GACnB,OAAiB,MAAVumB,GAAkBgtB,GAAQhtB,EAAQvmB,EAAM+iC,KAmgHjDlJ,GAAOkN,MAAQA,GACflN,GAAOyb,KAAOA,GACdzb,GAAOkM,SAAWA,GAClBlM,GAAOj5B,SAtpOP,SAAkBilB,EAAYxmB,EAAO2mB,EAAW8nB,GAC9CjoB,EAAa6gB,GAAY7gB,GAAcA,EAAaT,GAAOS,GAC3DG,EAAaA,IAAc8nB,EAASiE,GAAU/rB,GAAa,EAE3D,IAAI5lB,EAASylB,EAAWzlB,OAIxB,OAHI4lB,EAAY,IACdA,EAAYoS,GAAUh4B,EAAS4lB,EAAW,IAErCg0B,GAASn0B,GACXG,GAAa5lB,GAAUylB,EAAW6iB,QAAQrpC,EAAO2mB,IAAc,IAC7D5lB,GAAU2kB,GAAYc,EAAYxmB,EAAO2mB,IAAc,GA6oOhE6T,GAAO6O,QAxlSP,SAAiBxkB,EAAO7kB,EAAO2mB,GAC7B,IAAI5lB,EAAkB,MAAT8jB,EAAgB,EAAIA,EAAM9jB,OACvC,IAAKA,EACH,OAAQ,EAEV,IAAIkkB,EAAqB,MAAb0B,EAAoB,EAAI+rB,GAAU/rB,GAI9C,OAHI1B,EAAQ,IACVA,EAAQ8T,GAAUh4B,EAASkkB,EAAO,IAE7BS,GAAYb,EAAO7kB,EAAOilB,IAglSnCuV,GAAO8pB,QA5pFP,SAAiBlmB,EAAQwL,EAAOW,GAS9B,OARAX,EAAQmI,GAASnI,GACbW,IAAQjzB,GACVizB,EAAMX,EACNA,EAAQ,GAERW,EAAMwH,GAASxH,GArsVnB,SAAqBnM,EAAQwL,EAAOW,GAClC,OAAOnM,GAAUnF,GAAU2Q,EAAOW,IAAQnM,EAASrF,GAAU6Q,EAAOW,GAusV7Dga,CADPnmB,EAAS8T,GAAS9T,GACSwL,EAAOW,IAopFpC/P,GAAOwhB,OAASA,GAChBxhB,GAAOiC,YAAcA,GACrBjC,GAAOxuB,QAAUA,GACjBwuB,GAAO3W,cAAgBA,GACvB2W,GAAO6M,YAAcA,GACrB7M,GAAOwN,kBAAoBA,GAC3BxN,GAAOgqB,UAhwKP,SAAmBxkD,GACjB,OAAiB,IAAVA,IAA4B,IAAVA,GACtBy6B,GAAaz6B,IAAUmjC,GAAWnjC,IAAUkc,GA+vKjDse,GAAOt5B,SAAWA,GAClBs5B,GAAOzW,OAASA,GAChByW,GAAOiqB,UAvsKP,SAAmBzkD,GACjB,OAAOy6B,GAAaz6B,IAA6B,IAAnBA,EAAMojB,WAAmB6kB,GAAcjoC,IAusKvEw6B,GAAOkqB,QAnqKP,SAAiB1kD,GACf,GAAa,MAATA,EACF,OAAO,EAET,GAAIqnC,GAAYrnC,KACXgM,GAAQhM,IAA0B,iBAATA,GAA4C,mBAAhBA,EAAM8R,QAC1D5Q,GAASlB,IAAUukB,GAAavkB,IAAUy8B,GAAYz8B,IAC1D,OAAQA,EAAMe,OAEhB,IAAIyQ,EAAMutB,GAAO/+B,GACjB,GAAIwR,GAAO+K,GAAU/K,GAAOoL,EAC1B,OAAQ5c,EAAM00B,KAEhB,GAAIqS,GAAY/mC,GACd,OAAQ8mC,GAAS9mC,GAAOe,OAE1B,IAAK,IAAI7B,KAAOc,EACd,GAAIgC,GAAeC,KAAKjC,EAAOd,GAC7B,OAAO,EAGX,OAAO,GA+oKTs7B,GAAOmqB,QAhnKP,SAAiB3kD,EAAOyjC,GACtB,OAAOc,GAAYvkC,EAAOyjC,IAgnK5BjJ,GAAOoqB,YA7kKP,SAAqB5kD,EAAOyjC,EAAOhF,GAEjC,IAAIjZ,GADJiZ,EAAkC,mBAAdA,EAA2BA,EAAannB,GAClCmnB,EAAWz+B,EAAOyjC,GAASnsB,EACrD,OAAOkO,IAAWlO,EAAYitB,GAAYvkC,EAAOyjC,EAAOnsB,EAAWmnB,KAAgBjZ,GA2kKrFgV,GAAOggB,QAAUA,GACjBhgB,GAAO5B,SAphKP,SAAkB54B,GAChB,MAAuB,iBAATA,GAAqB24B,GAAe34B,IAohKpDw6B,GAAOoI,WAAaA,GACpBpI,GAAOigB,UAAYA,GACnBjgB,GAAO4Z,SAAWA,GAClB5Z,GAAOvW,MAAQA,GACfuW,GAAOqqB,QAp1JP,SAAiB39B,EAAQpoB,GACvB,OAAOooB,IAAWpoB,GAAUqnC,GAAYjf,EAAQpoB,EAAQwoC,GAAaxoC,KAo1JvE07B,GAAOsqB,YAjzJP,SAAqB59B,EAAQpoB,EAAQ2/B,GAEnC,OADAA,EAAkC,mBAAdA,EAA2BA,EAAannB,EACrD6uB,GAAYjf,EAAQpoB,EAAQwoC,GAAaxoC,GAAS2/B,IAgzJ3DjE,GAAO1zB,MAjxJP,SAAe9G,GAIb,OAAO06C,GAAS16C,IAAUA,IAAUA,GA8wJtCw6B,GAAOuqB,SAjvJP,SAAkB/kD,GAChB,GAAIu0C,GAAWv0C,GACb,MAAM,IAAIc,GA5pXM,mEA8pXlB,OAAO0lC,GAAaxmC,IA8uJtBw6B,GAAOwqB,MAlsJP,SAAehlD,GACb,OAAgB,MAATA,GAksJTw6B,GAAOyqB,OA3tJP,SAAgBjlD,GACd,OAAiB,OAAVA,GA2tJTw6B,GAAOkgB,SAAWA,GAClBlgB,GAAOO,SAAWA,GAClBP,GAAOC,aAAeA,GACtBD,GAAOyN,cAAgBA,GACvBzN,GAAOrW,SAAWA,GAClBqW,GAAO0qB,cA/kJP,SAAuBllD,GACrB,OAAOy6C,GAAUz6C,IAAUA,IAAS,kBAAqBA,GAASqC,GA+kJpEm4B,GAAOnW,MAAQA,GACfmW,GAAOmgB,SAAWA,GAClBngB,GAAO0H,SAAWA,GAClB1H,GAAOjW,aAAeA,GACtBiW,GAAO2qB,YA7+IP,SAAqBnlD,GACnB,OAAOA,IAAUsX,GA6+InBkjB,GAAO4qB,UAz9IP,SAAmBplD,GACjB,OAAOy6B,GAAaz6B,IAAU++B,GAAO/+B,IAAU+c,GAy9IjDyd,GAAO6qB,UAr8IP,SAAmBrlD,GACjB,OAAOy6B,GAAaz6B,IA13XP,oBA03XiBmjC,GAAWnjC,IAq8I3Cw6B,GAAOj0B,KAn/RP,SAAcse,EAAOg9B,GACnB,OAAgB,MAATh9B,EAAgB,GAAKgU,GAAW52B,KAAK4iB,EAAOg9B,IAm/RrDrnB,GAAOqiB,UAAYA,GACnBriB,GAAO6J,KAAOA,GACd7J,GAAO8qB,YA18RP,SAAqBzgC,EAAO7kB,EAAO2mB,GACjC,IAAI5lB,EAAkB,MAAT8jB,EAAgB,EAAIA,EAAM9jB,OACvC,IAAKA,EACH,OAAQ,EAEV,IAAIkkB,EAAQlkB,EAKZ,OAJI4lB,IAAcrP,IAEhB2N,GADAA,EAAQytB,GAAU/rB,IACF,EAAIoS,GAAUh4B,EAASkkB,EAAO,GAAKgU,GAAUhU,EAAOlkB,EAAS,IAExEf,GAAUA,EAtuMrB,SAA2B6kB,EAAO7kB,EAAO2mB,GAEvC,IADA,IAAI1B,EAAQ0B,EAAY,EACjB1B,KACL,GAAIJ,EAAMI,KAAWjlB,EACnB,OAAOilB,EAGX,OAAOA,EAguMDsgC,CAAkB1gC,EAAO7kB,EAAOilB,GAChCyB,GAAc7B,EAAOiC,GAAW7B,GAAO,IA+7R7CuV,GAAOsiB,UAAYA,GACnBtiB,GAAOuiB,WAAaA,GACpBviB,GAAOogB,GAAKA,GACZpgB,GAAOqgB,IAAMA,GACbrgB,GAAOxB,IAhfP,SAAanU,GACX,OAAQA,GAASA,EAAM9jB,OACnBkhC,GAAapd,EAAO6hB,GAAUlD,IAC9BlsB,GA8eNkjB,GAAOgrB,MApdP,SAAe3gC,EAAOE,GACpB,OAAQF,GAASA,EAAM9jB,OACnBkhC,GAAapd,EAAO2jB,GAAYzjB,EAAU,GAAIye,IAC9ClsB,GAkdNkjB,GAAOirB,KAjcP,SAAc5gC,GACZ,OAAOmC,GAASnC,EAAO6hB,KAiczBlM,GAAOkrB,OAvaP,SAAgB7gC,EAAOE,GACrB,OAAOiC,GAASnC,EAAO2jB,GAAYzjB,EAAU,KAua/CyV,GAAOtB,IAlZP,SAAarU,GACX,OAAQA,GAASA,EAAM9jB,OACnBkhC,GAAapd,EAAO6hB,GAAUS,IAC9B7vB,GAgZNkjB,GAAOmrB,MAtXP,SAAe9gC,EAAOE,GACpB,OAAQF,GAASA,EAAM9jB,OACnBkhC,GAAapd,EAAO2jB,GAAYzjB,EAAU,GAAIoiB,IAC9C7vB,GAoXNkjB,GAAOyZ,UAAYA,GACnBzZ,GAAOga,UAAYA,GACnBha,GAAOorB,WAztBP,WACE,MAAO,IAytBTprB,GAAOqrB,WAzsBP,WACE,MAAO,IAysBTrrB,GAAOsrB,SAzrBP,WACE,OAAO,GAyrBTtrB,GAAOkkB,SAAWA,GAClBlkB,GAAOurB,IAv7RP,SAAalhC,EAAOnkB,GAClB,OAAQmkB,GAASA,EAAM9jB,OAAUqnC,GAAQvjB,EAAO6tB,GAAUhyC,IAAM4W,GAu7RlEkjB,GAAOwrB,WAliCP,WAIE,OAHI/iC,GAAK3a,IAAM9C,OACbyd,GAAK3a,EAAIwuB,IAEJtxB,MA+hCTg1B,GAAOoY,KAAOA,GACdpY,GAAOvC,IAAMA,GACbuC,GAAOyrB,IA34EP,SAAazxB,EAAQzzB,EAAQ4wC,GAC3Bnd,EAAS1yB,GAAS0yB,GAGlB,IAAI0xB,GAFJnlD,EAAS2xC,GAAU3xC,IAEMk0B,GAAWT,GAAU,EAC9C,IAAKzzB,GAAUmlD,GAAanlD,EAC1B,OAAOyzB,EAET,IAAIqW,GAAO9pC,EAASmlD,GAAa,EACjC,OACExU,GAAcpZ,GAAYuS,GAAM8G,GAChCnd,EACAkd,GAActZ,GAAWyS,GAAM8G,IAg4EnCnX,GAAO2rB,OAr2EP,SAAgB3xB,EAAQzzB,EAAQ4wC,GAC9Bnd,EAAS1yB,GAAS0yB,GAGlB,IAAI0xB,GAFJnlD,EAAS2xC,GAAU3xC,IAEMk0B,GAAWT,GAAU,EAC9C,OAAQzzB,GAAUmlD,EAAYnlD,EACzByzB,EAASkd,GAAc3wC,EAASmlD,EAAWvU,GAC5Cnd,GA+1ENgG,GAAO4rB,SAr0EP,SAAkB5xB,EAAQzzB,EAAQ4wC,GAChCnd,EAAS1yB,GAAS0yB,GAGlB,IAAI0xB,GAFJnlD,EAAS2xC,GAAU3xC,IAEMk0B,GAAWT,GAAU,EAC9C,OAAQzzB,GAAUmlD,EAAYnlD,EACzB2wC,GAAc3wC,EAASmlD,EAAWvU,GAASnd,EAC5CA,GA+zENgG,GAAO1X,SApyEP,SAAkB0R,EAAQ6xB,EAAO5X,GAM/B,OALIA,GAAkB,MAAT4X,EACXA,EAAQ,EACCA,IACTA,GAASA,GAEJjtB,GAAet3B,GAAS0yB,GAAQzrB,QAAQ4V,GAAa,IAAK0nC,GAAS,IA+xE5E7rB,GAAOlB,OAprFP,SAAgB+E,EAAOC,EAAOgoB,GA2B5B,GA1BIA,GAA+B,kBAAZA,GAAyB5X,GAAerQ,EAAOC,EAAOgoB,KAC3EhoB,EAAQgoB,EAAWhvC,GAEjBgvC,IAAahvC,IACK,kBAATgnB,GACTgoB,EAAWhoB,EACXA,EAAQhnB,GAEe,kBAAT+mB,IACdioB,EAAWjoB,EACXA,EAAQ/mB,IAGR+mB,IAAU/mB,GAAagnB,IAAUhnB,GACnC+mB,EAAQ,EACRC,EAAQ,IAGRD,EAAQ0T,GAAS1T,GACbC,IAAUhnB,GACZgnB,EAAQD,EACRA,EAAQ,GAERC,EAAQyT,GAASzT,IAGjBD,EAAQC,EAAO,CACjB,IAAIioB,EAAOloB,EACXA,EAAQC,EACRA,EAAQioB,EAEV,GAAID,GAAYjoB,EAAQ,GAAKC,EAAQ,EAAG,CACtC,IAAI+W,EAAOhc,KACX,OAAOJ,GAAUoF,EAASgX,GAAQ/W,EAAQD,EAAQ1b,GAAe,QAAU0yB,EAAO,IAAIt0C,OAAS,KAAOu9B,GAExG,OAAOvB,GAAWsB,EAAOC,IAipF3B9D,GAAOgsB,OAt+NP,SAAgBhgC,EAAYzB,EAAUC,GACpC,IAAIP,EAAOzY,GAAQwa,GAAcP,GAAcmB,GAC3ClB,EAAYmpB,UAAUtuC,OAAS,EAEnC,OAAO0jB,EAAK+B,EAAYgiB,GAAYzjB,EAAU,GAAIC,EAAakB,EAAW0X,KAm+N5EpD,GAAOisB,YA18NP,SAAqBjgC,EAAYzB,EAAUC,GACzC,IAAIP,EAAOzY,GAAQwa,GAAcL,GAAmBiB,GAChDlB,EAAYmpB,UAAUtuC,OAAS,EAEnC,OAAO0jB,EAAK+B,EAAYgiB,GAAYzjB,EAAU,GAAIC,EAAakB,EAAW4b,KAu8N5EtH,GAAOksB,OAzwEP,SAAgBlyB,EAAQ9zB,EAAG+tC,GAMzB,OAJE/tC,GADG+tC,EAAQC,GAAela,EAAQ9zB,EAAG+tC,GAAS/tC,IAAM4W,GAChD,EAEAo7B,GAAUhyC,GAETgpC,GAAW5nC,GAAS0yB,GAAS9zB,IAowEtC85B,GAAOzxB,QA9uEP,WACE,IAAI4b,EAAO0qB,UACP7a,EAAS1yB,GAAS6iB,EAAK,IAE3B,OAAOA,EAAK5jB,OAAS,EAAIyzB,EAASA,EAAOzrB,QAAQ4b,EAAK,GAAIA,EAAK,KA2uEjE6V,GAAOhV,OAhoGP,SAAgB0B,EAAQvmB,EAAM4wC,GAG5B,IAAItsB,GAAS,EACTlkB,GAHJJ,EAAOmiC,GAASniC,EAAMumB,IAGJnmB,OAOlB,IAJKA,IACHA,EAAS,EACTmmB,EAAS5P,KAEF2N,EAAQlkB,GAAQ,CACvB,IAAIf,EAAkB,MAAVknB,EAAiB5P,EAAY4P,EAAO6b,GAAMpiC,EAAKskB,KACvDjlB,IAAUsX,IACZ2N,EAAQlkB,EACRf,EAAQuxC,GAEVrqB,EAAS0b,GAAW5iC,GAASA,EAAMiC,KAAKilB,GAAUlnB,EAEpD,OAAOknB,GA8mGTsT,GAAOqkB,MAAQA,GACfrkB,GAAO3E,aAAeA,EACtB2E,GAAOmsB,OAp5NP,SAAgBngC,GAEd,OADWxa,GAAQwa,GAAcsW,GAAciN,IACnCvjB,IAm5NdgU,GAAO9F,KAz0NP,SAAclO,GACZ,GAAkB,MAAdA,EACF,OAAO,EAET,GAAI6gB,GAAY7gB,GACd,OAAOm0B,GAASn0B,GAAcyO,GAAWzO,GAAcA,EAAWzlB,OAEpE,IAAIyQ,EAAMutB,GAAOvY,GACjB,OAAIhV,GAAO+K,GAAU/K,GAAOoL,EACnB4J,EAAWkO,KAEboS,GAAStgB,GAAYzlB,QA+zN9By5B,GAAOwiB,UAAYA,GACnBxiB,GAAO/wB,KAzxNP,SAAc+c,EAAYnB,EAAWopB,GACnC,IAAIhqB,EAAOzY,GAAQwa,GAAcJ,GAAYokB,GAI7C,OAHIiE,GAASC,GAAeloB,EAAYnB,EAAWopB,KACjDppB,EAAY/N,GAEPmN,EAAK+B,EAAYgiB,GAAYnjB,EAAW,KAqxNjDmV,GAAOosB,YA1rRP,SAAqB/hC,EAAO7kB,GAC1B,OAAOyqC,GAAgB5lB,EAAO7kB,IA0rRhCw6B,GAAOqsB,cA9pRP,SAAuBhiC,EAAO7kB,EAAO+kB,GACnC,OAAO+lB,GAAkBjmB,EAAO7kB,EAAOwoC,GAAYzjB,EAAU,KA8pR/DyV,GAAOssB,cA3oRP,SAAuBjiC,EAAO7kB,GAC5B,IAAIe,EAAkB,MAAT8jB,EAAgB,EAAIA,EAAM9jB,OACvC,GAAIA,EAAQ,CACV,IAAIkkB,EAAQwlB,GAAgB5lB,EAAO7kB,GACnC,GAAIilB,EAAQlkB,GAAUu8B,GAAGzY,EAAMI,GAAQjlB,GACrC,OAAOilB,EAGX,OAAQ,GAooRVuV,GAAOusB,gBA/mRP,SAAyBliC,EAAO7kB,GAC9B,OAAOyqC,GAAgB5lB,EAAO7kB,GAAO,IA+mRvCw6B,GAAOwsB,kBAnlRP,SAA2BniC,EAAO7kB,EAAO+kB,GACvC,OAAO+lB,GAAkBjmB,EAAO7kB,EAAOwoC,GAAYzjB,EAAU,IAAI,IAmlRnEyV,GAAOysB,kBAhkRP,SAA2BpiC,EAAO7kB,GAEhC,GADsB,MAAT6kB,EAAgB,EAAIA,EAAM9jB,OAC3B,CACV,IAAIkkB,EAAQwlB,GAAgB5lB,EAAO7kB,GAAO,GAAQ,EAClD,GAAIs9B,GAAGzY,EAAMI,GAAQjlB,GACnB,OAAOilB,EAGX,OAAQ,GAyjRVuV,GAAOyiB,UAAYA,GACnBziB,GAAO0sB,WAroEP,SAAoB1yB,EAAQqvB,EAAQC,GAOlC,OANAtvB,EAAS1yB,GAAS0yB,GAClBsvB,EAAuB,MAAZA,EACP,EACA3mB,GAAUuV,GAAUoR,GAAW,EAAGtvB,EAAOzzB,QAE7C8iD,EAASnY,GAAamY,GACfrvB,EAAOpzB,MAAM0iD,EAAUA,EAAWD,EAAO9iD,SAAW8iD,GA+nE7DrpB,GAAOskB,SAAWA,GAClBtkB,GAAO2sB,IAzUP,SAAatiC,GACX,OAAQA,GAASA,EAAM9jB,OACnBkmB,GAAQpC,EAAO6hB,IACf,GAuUNlM,GAAO4sB,MA7SP,SAAeviC,EAAOE,GACpB,OAAQF,GAASA,EAAM9jB,OACnBkmB,GAAQpC,EAAO2jB,GAAYzjB,EAAU,IACrC,GA2SNyV,GAAO6sB,SAvhEP,SAAkB7yB,EAAQ/uB,EAASgpC,GAIjC,IAAI6Y,EAAW9sB,GAAO0G,iBAElBuN,GAASC,GAAela,EAAQ/uB,EAASgpC,KAC3ChpC,EAAU6R,GAEZkd,EAAS1yB,GAAS0yB,GAClB/uB,EAAU81C,GAAa,GAAI91C,EAAS6hD,EAAU/T,IAE9C,IAIIgU,EACAC,EALAjmB,EAAUga,GAAa,GAAI91C,EAAQ87B,QAAS+lB,EAAS/lB,QAASgS,IAC9DkU,EAAczoD,GAAKuiC,GACnBmmB,EAAgBlgC,GAAW+Z,EAASkmB,GAIpCxiC,EAAQ,EACRoc,EAAc57B,EAAQ47B,aAAe3hB,GACrC5gB,EAAS,WAGT6oD,EAAe3kD,IAChByC,EAAQ07B,QAAUzhB,IAAW5gB,OAAS,IACvCuiC,EAAYviC,OAAS,KACpBuiC,IAAgBjjB,EAAgBc,GAAeQ,IAAW5gB,OAAS,KACnE2G,EAAQ27B,UAAY1hB,IAAW5gB,OAAS,KACzC,KAME8oD,EAAY,kBACb5lD,GAAeC,KAAKwD,EAAS,cACzBA,EAAQmiD,UAAY,IAAI7+C,QAAQ,MAAO,KACvC,6BAA+BkZ,GAAmB,KACnD,KAENuS,EAAOzrB,QAAQ4+C,GAAc,SAAShiD,EAAOkiD,EAAaC,EAAkBC,EAAiBC,EAAehiC,GAsB1G,OArBA8hC,IAAqBA,EAAmBC,GAGxCjpD,GAAU01B,EAAOpzB,MAAM6jB,EAAOe,GAAQjd,QAAQ4W,GAAmB0U,IAG7DwzB,IACFN,GAAa,EACbzoD,GAAU,YAAc+oD,EAAc,UAEpCG,IACFR,GAAe,EACf1oD,GAAU,OAASkpD,EAAgB,eAEjCF,IACFhpD,GAAU,iBAAmBgpD,EAAmB,+BAElD7iC,EAAQe,EAASrgB,EAAM5E,OAIhB4E,KAGT7G,GAAU,OAIV,IAAIwiC,EAAWt/B,GAAeC,KAAKwD,EAAS,aAAeA,EAAQ67B,SAC9DA,IACHxiC,EAAS,iBAAmBA,EAAS,SAGvCA,GAAU0oD,EAAe1oD,EAAOiK,QAAQ4U,EAAsB,IAAM7e,GACjEiK,QAAQ6U,EAAqB,MAC7B7U,QAAQ8U,EAAuB,OAGlC/e,EAAS,aAAewiC,GAAY,OAAS,SAC1CA,EACG,GACA,wBAEJ,qBACCimB,EACI,mBACA,KAEJC,EACG,uFAEA,OAEJ1oD,EACA,gBAEF,IAAI0mB,EAASg4B,IAAQ,WACnB,OAAOt6B,GAASukC,EAAaG,EAAY,UAAY9oD,GAClD0lB,MAAMlN,EAAWowC,MAMtB,GADAliC,EAAO1mB,OAASA,EACZ07C,GAAQh1B,GACV,MAAMA,EAER,OAAOA,GA46DTgV,GAAOytB,MApsBP,SAAevnD,EAAGqkB,GAEhB,IADArkB,EAAIgyC,GAAUhyC,IACN,GAAKA,EAAI2B,EACf,MAAO,GAET,IAAI4iB,EAAQnJ,EACR/a,EAASk4B,GAAUv4B,EAAGob,GAE1BiJ,EAAWyjB,GAAYzjB,GACvBrkB,GAAKob,EAGL,IADA,IAAI0J,EAAS8B,GAAUvmB,EAAQgkB,KACtBE,EAAQvkB,GACfqkB,EAASE,GAEX,OAAOO,GAsrBTgV,GAAOuX,SAAWA,GAClBvX,GAAOkY,UAAYA,GACnBlY,GAAO2gB,SAAWA,GAClB3gB,GAAO0tB,QAx5DP,SAAiBloD,GACf,OAAO8B,GAAS9B,GAAOkK,eAw5DzBswB,GAAO0X,SAAWA,GAClB1X,GAAO2tB,cA9tIP,SAAuBnoD,GACrB,OAAOA,EACHm9B,GAAUuV,GAAU1yC,IAAQ,iBAAmBqC,GACpC,IAAVrC,EAAcA,EAAQ,GA4tI7Bw6B,GAAO14B,SAAWA,GAClB04B,GAAO4tB,QAn4DP,SAAiBpoD,GACf,OAAO8B,GAAS9B,GAAOm9C,eAm4DzB3iB,GAAO90B,KA12DP,SAAc8uB,EAAQmd,EAAOlD,GAE3B,IADAja,EAAS1yB,GAAS0yB,MACHia,GAASkD,IAAUr6B,GAChC,OAAOkd,EAAOzrB,QAAQ2V,GAAQ,IAEhC,IAAK8V,KAAYmd,EAAQjG,GAAaiG,IACpC,OAAOnd,EAET,IAAI5M,EAAawN,GAAcZ,GAC3B3M,EAAauN,GAAcuc,GAI/B,OAAO9E,GAAUjlB,EAHLD,GAAgBC,EAAYC,GAC9BC,GAAcF,EAAYC,GAAc,GAETthB,KAAK,KA81DhDi0B,GAAO6tB,QAx0DP,SAAiB7zB,EAAQmd,EAAOlD,GAE9B,IADAja,EAAS1yB,GAAS0yB,MACHia,GAASkD,IAAUr6B,GAChC,OAAOkd,EAAOzrB,QAAQ6V,GAAW,IAEnC,IAAK4V,KAAYmd,EAAQjG,GAAaiG,IACpC,OAAOnd,EAET,IAAI5M,EAAawN,GAAcZ,GAG/B,OAAOqY,GAAUjlB,EAAY,EAFnBE,GAAcF,EAAYwN,GAAcuc,IAAU,GAEvBprC,KAAK,KA8zD5Ci0B,GAAO8tB,UAxyDP,SAAmB9zB,EAAQmd,EAAOlD,GAEhC,IADAja,EAAS1yB,GAAS0yB,MACHia,GAASkD,IAAUr6B,GAChC,OAAOkd,EAAOzrB,QAAQ4V,GAAa,IAErC,IAAK6V,KAAYmd,EAAQjG,GAAaiG,IACpC,OAAOnd,EAET,IAAI5M,EAAawN,GAAcZ,GAG/B,OAAOqY,GAAUjlB,EAFLD,GAAgBC,EAAYwN,GAAcuc,KAElBprC,KAAK,KA8xD3Ci0B,GAAO+tB,SAtvDP,SAAkB/zB,EAAQ/uB,GACxB,IAAI1E,EApsdmB,GAqsdnBynD,EApsdqB,MAssdzB,GAAIztB,GAASt1B,GAAU,CACrB,IAAIo8C,EAAY,cAAep8C,EAAUA,EAAQo8C,UAAYA,EAC7D9gD,EAAS,WAAY0E,EAAUitC,GAAUjtC,EAAQ1E,QAAUA,EAC3DynD,EAAW,aAAc/iD,EAAUimC,GAAajmC,EAAQ+iD,UAAYA,EAItE,IAAItC,GAFJ1xB,EAAS1yB,GAAS0yB,IAEKzzB,OACvB,GAAIwzB,GAAWC,GAAS,CACtB,IAAI5M,EAAawN,GAAcZ,GAC/B0xB,EAAYt+B,EAAW7mB,OAEzB,GAAIA,GAAUmlD,EACZ,OAAO1xB,EAET,IAAI+V,EAAMxpC,EAASk0B,GAAWuzB,GAC9B,GAAIje,EAAM,EACR,OAAOie,EAET,IAAIhjC,EAASoC,EACTilB,GAAUjlB,EAAY,EAAG2iB,GAAKhkC,KAAK,IACnCiuB,EAAOpzB,MAAM,EAAGmpC,GAEpB,GAAIsX,IAAcvqC,EAChB,OAAOkO,EAASgjC,EAKlB,GAHI5gC,IACF2iB,GAAQ/kB,EAAOzkB,OAASwpC,GAEtBpmB,GAAS09B,IACX,GAAIrtB,EAAOpzB,MAAMmpC,GAAKke,OAAO5G,GAAY,CACvC,IAAIl8C,EACA+iD,EAAYljC,EAMhB,IAJKq8B,EAAU/hD,SACb+hD,EAAY7+C,GAAO6+C,EAAU/iD,OAAQgD,GAASqd,GAAQjT,KAAK21C,IAAc,MAE3EA,EAAU3sB,UAAY,EACdvvB,EAAQk8C,EAAU31C,KAAKw8C,IAC7B,IAAIC,EAAShjD,EAAMsf,MAErBO,EAASA,EAAOpkB,MAAM,EAAGunD,IAAWrxC,EAAYizB,EAAMoe,SAEnD,GAAIn0B,EAAO6U,QAAQqC,GAAamW,GAAYtX,IAAQA,EAAK,CAC9D,IAAItlB,EAAQO,EAAO8/B,YAAYzD,GAC3B58B,GAAS,IACXO,EAASA,EAAOpkB,MAAM,EAAG6jB,IAG7B,OAAOO,EAASgjC,GAksDlBhuB,GAAOouB,SA5qDP,SAAkBp0B,GAEhB,OADAA,EAAS1yB,GAAS0yB,KACAxW,EAAiBpb,KAAK4xB,GACpCA,EAAOzrB,QAAQ+U,EAAeyX,IAC9Bf,GAyqDNgG,GAAOquB,SAvpBP,SAAkBC,GAChB,IAAIhc,IAAOrW,GACX,OAAO30B,GAASgnD,GAAUhc,GAspB5BtS,GAAO0iB,UAAYA,GACnB1iB,GAAOoiB,WAAaA,GAGpBpiB,GAAOuuB,KAAO9pD,GACdu7B,GAAOwuB,UAAYrR,GACnBnd,GAAOyuB,MAAQhT,GAEf8H,GAAMvjB,GAAS,WACb,IAAI17B,EAAS,GAMb,OALA+iC,GAAWrH,IAAQ,SAAS/V,EAAMoqB,GAC3B7sC,GAAeC,KAAKu4B,GAAOz4B,UAAW8sC,KACzC/vC,EAAO+vC,GAAcpqB,MAGlB3lB,EAPM,GAQT,CAAEu4C,OAAS,IAWjB7c,GAAO0uB,QA//gBK,UAkghBZhkC,GAAU,CAAC,OAAQ,UAAW,QAAS,aAAc,UAAW,iBAAiB,SAAS2pB,GACxFrU,GAAOqU,GAAY7mB,YAAcwS,MAInCtV,GAAU,CAAC,OAAQ,SAAS,SAAS2pB,EAAY5pB,GAC/CyV,GAAY34B,UAAU8sC,GAAc,SAASnuC,GAC3CA,EAAIA,IAAM4W,EAAY,EAAIyhB,GAAU2Z,GAAUhyC,GAAI,GAElD,IAAI8kB,EAAUhgB,KAAKg2B,eAAiBvW,EAChC,IAAIyV,GAAYl1B,MAChBA,KAAKmwC,QAUT,OARInwB,EAAOgW,aACThW,EAAOkW,cAAgBzC,GAAUv4B,EAAG8kB,EAAOkW,eAE3ClW,EAAOmW,UAAU90B,KAAK,CACpB6tB,KAAQuE,GAAUv4B,EAAGob,GACrBi4B,KAAQlF,GAAcrpB,EAAO+V,QAAU,EAAI,QAAU,MAGlD/V,GAGTkV,GAAY34B,UAAU8sC,EAAa,SAAW,SAASnuC,GACrD,OAAO8E,KAAKg0B,UAAUqV,GAAYnuC,GAAG84B,cAKzCtU,GAAU,CAAC,SAAU,MAAO,cAAc,SAAS2pB,EAAY5pB,GAC7D,IAAI8uB,EAAO9uB,EAAQ,EACfkkC,EAl/gBe,GAk/gBJpV,GAh/gBG,GAg/gByBA,EAE3CrZ,GAAY34B,UAAU8sC,GAAc,SAAS9pB,GAC3C,IAAIS,EAAShgB,KAAKmwC,QAMlB,OALAnwB,EAAOiW,cAAc50B,KAAK,CACxBke,SAAYyjB,GAAYzjB,EAAU,GAClCgvB,KAAQA,IAEVvuB,EAAOgW,aAAehW,EAAOgW,cAAgB2tB,EACtC3jC,MAKXN,GAAU,CAAC,OAAQ,SAAS,SAAS2pB,EAAY5pB,GAC/C,IAAImkC,EAAW,QAAUnkC,EAAQ,QAAU,IAE3CyV,GAAY34B,UAAU8sC,GAAc,WAClC,OAAOrpC,KAAK4jD,GAAU,GAAGppD,QAAQ,OAKrCklB,GAAU,CAAC,UAAW,SAAS,SAAS2pB,EAAY5pB,GAClD,IAAIokC,EAAW,QAAUpkC,EAAQ,GAAK,SAEtCyV,GAAY34B,UAAU8sC,GAAc,WAClC,OAAOrpC,KAAKg2B,aAAe,IAAId,GAAYl1B,MAAQA,KAAK6jD,GAAU,OAItE3uB,GAAY34B,UAAUq9C,QAAU,WAC9B,OAAO55C,KAAKiD,OAAOi+B,KAGrBhM,GAAY34B,UAAU01C,KAAO,SAASpyB,GACpC,OAAO7f,KAAKiD,OAAO4c,GAAW4wB,QAGhCvb,GAAY34B,UAAU21C,SAAW,SAASryB,GACxC,OAAO7f,KAAKg0B,UAAUie,KAAKpyB,IAG7BqV,GAAY34B,UAAU81C,UAAYlO,IAAS,SAAShpC,EAAMgkB,GACxD,MAAmB,mBAARhkB,EACF,IAAI+5B,GAAYl1B,MAElBA,KAAKY,KAAI,SAASpG,GACvB,OAAOokC,GAAWpkC,EAAOW,EAAMgkB,SAInC+V,GAAY34B,UAAUu/C,OAAS,SAASj8B,GACtC,OAAO7f,KAAKiD,OAAOsxC,GAAOvR,GAAYnjB,MAGxCqV,GAAY34B,UAAUX,MAAQ,SAASwoC,EAAOW,GAC5CX,EAAQ8I,GAAU9I,GAElB,IAAIpkB,EAAShgB,KACb,OAAIggB,EAAOgW,eAAiBoO,EAAQ,GAAKW,EAAM,GACtC,IAAI7P,GAAYlV,IAErBokB,EAAQ,EACVpkB,EAASA,EAAO08B,WAAWtY,GAClBA,IACTpkB,EAASA,EAAOm6B,KAAK/V,IAEnBW,IAAQjzB,IAEVkO,GADA+kB,EAAMmI,GAAUnI,IACD,EAAI/kB,EAAOo6B,WAAWrV,GAAO/kB,EAAOy8B,KAAK1X,EAAMX,IAEzDpkB,IAGTkV,GAAY34B,UAAUogD,eAAiB,SAAS98B,GAC9C,OAAO7f,KAAKg0B,UAAU4oB,UAAU/8B,GAAWmU,WAG7CkB,GAAY34B,UAAU+4C,QAAU,WAC9B,OAAOt1C,KAAKy8C,KAAKnmC,IAInB+lB,GAAWnH,GAAY34B,WAAW,SAAS0iB,EAAMoqB,GAC/C,IAAIya,EAAgB,qCAAqC1mD,KAAKisC,GAC1D0a,EAAU,kBAAkB3mD,KAAKisC,GACjC2a,EAAahvB,GAAO+uB,EAAW,QAAwB,QAAd1a,EAAuB,QAAU,IAAOA,GACjF4a,EAAeF,GAAW,QAAQ3mD,KAAKisC,GAEtC2a,IAGLhvB,GAAOz4B,UAAU8sC,GAAc,WAC7B,IAAI7uC,EAAQwF,KAAK01B,YACbvW,EAAO4kC,EAAU,CAAC,GAAKla,UACvBqa,EAAS1pD,aAAiB06B,GAC1B3V,EAAWJ,EAAK,GAChBglC,EAAUD,GAAU19C,GAAQhM,GAE5Bs3C,EAAc,SAASt3C,GACzB,IAAIwlB,EAASgkC,EAAWhlC,MAAMgW,GAAQ1U,GAAU,CAAC9lB,GAAQ2kB,IACzD,OAAQ4kC,GAAWtuB,EAAYzV,EAAO,GAAKA,GAGzCmkC,GAAWL,GAAoC,mBAAZvkC,GAA6C,GAAnBA,EAAShkB,SAExE2oD,EAASC,GAAU,GAErB,IAAI1uB,EAAWz1B,KAAK41B,UAChBwuB,IAAapkD,KAAK21B,YAAYp6B,OAC9B8oD,EAAcJ,IAAiBxuB,EAC/B6uB,EAAWJ,IAAWE,EAE1B,IAAKH,GAAgBE,EAAS,CAC5B3pD,EAAQ8pD,EAAW9pD,EAAQ,IAAI06B,GAAYl1B,MAC3C,IAAIggB,EAASf,EAAKD,MAAMxkB,EAAO2kB,GAE/B,OADAa,EAAO2V,YAAYt0B,KAAK,CAAE4d,KAAQorB,GAAMlrB,KAAQ,CAAC2yB,GAAc5yB,QAAWpN,IACnE,IAAIqjB,GAAcnV,EAAQyV,GAEnC,OAAI4uB,GAAeC,EACVrlC,EAAKD,MAAMhf,KAAMmf,IAE1Ba,EAAShgB,KAAKqqC,KAAKyH,GACZuS,EAAeN,EAAU/jC,EAAOxlB,QAAQ,GAAKwlB,EAAOxlB,QAAWwlB,QAK1EN,GAAU,CAAC,MAAO,OAAQ,QAAS,OAAQ,SAAU,YAAY,SAAS2pB,GACxE,IAAIpqB,EAAO2R,GAAWyY,GAClBkb,EAAY,0BAA0BnnD,KAAKisC,GAAc,MAAQ,OACjE4a,EAAe,kBAAkB7mD,KAAKisC,GAE1CrU,GAAOz4B,UAAU8sC,GAAc,WAC7B,IAAIlqB,EAAO0qB,UACX,GAAIoa,IAAiBjkD,KAAK41B,UAAW,CACnC,IAAIp7B,EAAQwF,KAAKxF,QACjB,OAAOykB,EAAKD,MAAMxY,GAAQhM,GAASA,EAAQ,GAAI2kB,GAEjD,OAAOnf,KAAKukD,IAAW,SAAS/pD,GAC9B,OAAOykB,EAAKD,MAAMxY,GAAQhM,GAASA,EAAQ,GAAI2kB,UAMrDkd,GAAWnH,GAAY34B,WAAW,SAAS0iB,EAAMoqB,GAC/C,IAAI2a,EAAahvB,GAAOqU,GACxB,GAAI2a,EAAY,CACd,IAAItqD,EAAMsqD,EAAWh9C,KAAO,GACvBxK,GAAeC,KAAK43B,GAAW36B,KAClC26B,GAAU36B,GAAO,IAEnB26B,GAAU36B,GAAK2H,KAAK,CAAE2F,KAAQqiC,EAAYpqB,KAAQ+kC,QAItD3vB,GAAUuW,GAAa94B,EAnqhBA,GAmqhB+B9K,MAAQ,CAAC,CAC7DA,KAAQ,UACRiY,KAAQnN,IAIVojB,GAAY34B,UAAU4zC,MA18dtB,WACE,IAAInwB,EAAS,IAAIkV,GAAYl1B,KAAK01B,aAOlC,OANA1V,EAAO2V,YAAc+B,GAAU13B,KAAK21B,aACpC3V,EAAO+V,QAAU/1B,KAAK+1B,QACtB/V,EAAOgW,aAAeh2B,KAAKg2B,aAC3BhW,EAAOiW,cAAgByB,GAAU13B,KAAKi2B,eACtCjW,EAAOkW,cAAgBl2B,KAAKk2B,cAC5BlW,EAAOmW,UAAYuB,GAAU13B,KAAKm2B,WAC3BnW,GAm8dTkV,GAAY34B,UAAUy3B,QAx7dtB,WACE,GAAIh0B,KAAKg2B,aAAc,CACrB,IAAIhW,EAAS,IAAIkV,GAAYl1B,MAC7BggB,EAAO+V,SAAW,EAClB/V,EAAOgW,cAAe,OAEtBhW,EAAShgB,KAAKmwC,SACPpa,UAAY,EAErB,OAAO/V,GAg7dTkV,GAAY34B,UAAU/B,MAr6dtB,WACE,IAAI6kB,EAAQrf,KAAK01B,YAAYl7B,QACzBgqD,EAAMxkD,KAAK+1B,QACXgB,EAAQvwB,GAAQ6Y,GAChBolC,EAAUD,EAAM,EAChBtW,EAAYnX,EAAQ1X,EAAM9jB,OAAS,EACnCmpD,EA8pIN,SAAiBtgB,EAAOW,EAAK0P,GAC3B,IAAIh1B,GAAS,EACTlkB,EAASk5C,EAAWl5C,OAExB,OAASkkB,EAAQlkB,GAAQ,CACvB,IAAIq7B,EAAO6d,EAAWh1B,GAClByP,EAAO0H,EAAK1H,KAEhB,OAAQ0H,EAAK2X,MACX,IAAK,OAAanK,GAASlV,EAAM,MACjC,IAAK,YAAa6V,GAAO7V,EAAM,MAC/B,IAAK,OAAa6V,EAAMtR,GAAUsR,EAAKX,EAAQlV,GAAO,MACtD,IAAK,YAAakV,EAAQ7Q,GAAU6Q,EAAOW,EAAM7V,IAGrD,MAAO,CAAEkV,MAASA,EAAOW,IAAOA,GA7qIrB4f,CAAQ,EAAGzW,EAAWluC,KAAKm2B,WAClCiO,EAAQsgB,EAAKtgB,MACbW,EAAM2f,EAAK3f,IACXxpC,EAASwpC,EAAMX,EACf3kB,EAAQglC,EAAU1f,EAAOX,EAAQ,EACjCtB,EAAY9iC,KAAKi2B,cACjB2uB,EAAa9hB,EAAUvnC,OACvBwkB,EAAW,EACX8kC,EAAYpxB,GAAUl4B,EAAQyE,KAAKk2B,eAEvC,IAAKa,IAAW0tB,GAAWvW,GAAa3yC,GAAUspD,GAAatpD,EAC7D,OAAOmrC,GAAiBrnB,EAAOrf,KAAK21B,aAEtC,IAAI3V,EAAS,GAEbub,EACA,KAAOhgC,KAAYwkB,EAAW8kC,GAAW,CAMvC,IAHA,IAAIC,GAAa,EACbtqD,EAAQ6kB,EAHZI,GAAS+kC,KAKAM,EAAYF,GAAY,CAC/B,IAAIhuB,EAAOkM,EAAUgiB,GACjBvlC,EAAWqX,EAAKrX,SAChBgvB,EAAO3X,EAAK2X,KACZ/S,EAAWjc,EAAS/kB,GAExB,GApxDY,GAoxDR+zC,EACF/zC,EAAQghC,OACH,IAAKA,EAAU,CACpB,GAxxDa,GAwxDT+S,EACF,SAAShT,EAET,MAAMA,GAIZvb,EAAOD,KAAcvlB,EAEvB,OAAOwlB,GA03dTgV,GAAOz4B,UAAU05C,GAAKlE,GACtB/c,GAAOz4B,UAAUs1C,MApiQjB,WACE,OAAOA,GAAM7xC,OAoiQfg1B,GAAOz4B,UAAUwoD,OAvgQjB,WACE,OAAO,IAAI5vB,GAAcn1B,KAAKxF,QAASwF,KAAK41B,YAugQ9CZ,GAAOz4B,UAAUg5C,KA9+PjB,WACMv1C,KAAK81B,aAAehkB,IACtB9R,KAAK81B,WAAawf,GAAQt1C,KAAKxF,UAEjC,IAAIg7C,EAAOx1C,KAAK61B,WAAa71B,KAAK81B,WAAWv6B,OAG7C,MAAO,CAAEi6C,KAAQA,EAAMh7C,MAFXg7C,EAAO1jC,EAAY9R,KAAK81B,WAAW91B,KAAK61B,eA0+PtDb,GAAOz4B,UAAUouC,MAv7PjB,SAAsBnwC,GAIpB,IAHA,IAAIwlB,EACA7Q,EAASnP,KAENmP,aAAkBqmB,IAAY,CACnC,IAAI2a,EAAQ/a,GAAajmB,GACzBghC,EAAMta,UAAY,EAClBsa,EAAMra,WAAahkB,EACfkO,EACFgkB,EAAStO,YAAcya,EAEvBnwB,EAASmwB,EAEX,IAAInM,EAAWmM,EACfhhC,EAASA,EAAOumB,YAGlB,OADAsO,EAAStO,YAAcl7B,EAChBwlB,GAu6PTgV,GAAOz4B,UAAUy3B,QAh5PjB,WACE,IAAIx5B,EAAQwF,KAAK01B,YACjB,GAAIl7B,aAAiB06B,GAAa,CAChC,IAAI8vB,EAAUxqD,EAUd,OATIwF,KAAK21B,YAAYp6B,SACnBypD,EAAU,IAAI9vB,GAAYl1B,QAE5BglD,EAAUA,EAAQhxB,WACV2B,YAAYt0B,KAAK,CACvB4d,KAAQorB,GACRlrB,KAAQ,CAAC6U,IACT9U,QAAWpN,IAEN,IAAIqjB,GAAc6vB,EAAShlD,KAAK41B,WAEzC,OAAO51B,KAAKqqC,KAAKrW,KAk4PnBgB,GAAOz4B,UAAU0oD,OAASjwB,GAAOz4B,UAAUu4B,QAAUE,GAAOz4B,UAAU/B,MAj3PtE,WACE,OAAOksC,GAAiB1mC,KAAK01B,YAAa11B,KAAK21B,cAm3PjDX,GAAOz4B,UAAUknD,MAAQzuB,GAAOz4B,UAAUk0C,KAEtCxe,KACF+C,GAAOz4B,UAAU01B,IA39PnB,WACE,OAAOjyB,OA49PFg1B,GAMD3E,GAGa,mBAAV60B,QAA6C,iBAAdA,OAAOC,KAAmBD,OAAOC,KAKzE1nC,GAAK3a,EAAIA,GAIToiD,QAAO,WACL,OAAOpiD,OAIF+a,KAENA,GAAWziB,QAAU0H,IAAGA,EAAIA,GAE7B6a,GAAY7a,EAAIA,IAIhB2a,GAAK3a,EAAIA,IAEXrG,KAAKuD,0BCrwhBA,MAAMolD,GAAqBC,EAAGD,mBAC9B,SAASE,GAAgBC,GAC5B,MAAO,CAAEC,KAAMD,EAAME,IAAM,EAAGjlC,OAAQ+kC,EAAMG,OAAS,GAElD,SAASC,GAAgBC,GAC5B,OAAO,IAAIC,EAAKC,MAAMF,EAAIJ,KAAO,EAAGI,EAAIplC,OAAS,GAE9C,SAASulC,GAAYC,GACxB,OAAOC,GAAiBD,EAAK5hB,MAAO4hB,EAAKjhB,KAEtC,SAASkhB,GAAiB7hB,EAAOW,GACpC,OAAO,IAAI8gB,EAAKK,MAAMP,GAAgBvhB,GAAQuhB,GAAgB5gB,IAU3D,SAASohB,GAAiBC,GAC7B,MAAMC,EAASC,GAAWF,GACpBnmD,EAAUomD,EAAOE,kBACvB,MAAO,CACHA,kBAAmB,CACfC,WAAYrgD,KAAKkgD,OAAOxsD,IAAI,oBAC5B4sD,QAAStgD,KAAKkgD,OAAOxsD,IAAI,uBACtBoG,GAEPymD,gBAAiBL,EAAOK,cACxBC,YAAaN,EAAOM,YAAcN,EAAOM,YAAc,IAG/D,SAASL,GAAWF,GACiB,UAA7BjrD,EAAKyrD,QAAQR,KACbA,GAAc,SAElB,IAAIC,OAAEA,GAAYhB,EAAGwB,eAAeT,GAAaU,GAASzB,EAAG0B,IAAI1qD,SAASyqD,KAC1E,QAAeh1C,IAAXu0C,EACA,MAAO,GACX,GAA8B,iBAAnBA,EAAOW,QAAsB,CACpC,MACMC,EAAgBX,GADFnrD,EAAK4F,KAAK5F,EAAK+rD,QAAQd,GAAaC,EAAOW,UAE/DX,EAAS9sD,OAAOs8C,OAAO,GAAIoR,EAAeZ,GAE9C,OAAOA,EAEJ,SAASc,GAA6BnsD,GACzC,MAAO,CACHosD,MAAOC,GAAWrsD,EAAEssD,oBAChBtsD,EAAEusD,WACG3mD,KAAKkD,GAAMujD,GAAWvjD,EAAE0jD,gBACxBzmD,KAAKsmD,GAAWrsD,EAAEysD,wBACvBJ,GAAWrsD,EAAE0sD,oBACjBC,cAAeN,GAAWrsD,EAAE2sD,eAC5BJ,WAAYvsD,EAAEusD,WAAW3mD,IAAIgnD,KAG9B,SAASA,GAA2ClrD,GACvD,MAAO,CACH0qD,MAAOC,GAAW3qD,EAAE8qD,cACpBG,cAAeN,GAAW3qD,EAAEirD,gBAG7B,SAASN,GAAWvjD,GACvB,OAAOA,EAAElD,KAAK5F,GAAMA,EAAEqR,OAAMtL,KAAK,IAG9B,MAAM8mD,GAA2B,WACpC,IAAIC,EAEJ,OAAO,SAAUC,EAAMC,GACnB,QAAal2C,IAATi2C,EACA,OAAO,OACYj2C,IAAnBg2C,IACAA,EAAiB,IAAI36C,IAAI5T,OAAOgnB,OAAO8kC,EAAG4C,aAAarnD,KAAKkD,GAAM,CAACA,EAAEikD,KAAMjkD,EAAEkkD,cAEjF,MAAME,EAAMJ,EAAejuD,IAAIkuD,GAC/B,YAAYj2C,IAARo2C,GAEGA,IAAQF,GAZiB,GC7DjC,SAASG,GAAiBC,GAC7B,YAAiBt2C,IAAbs2C,GAkBR,SAA4BC,GACxB,MAAMC,EAASniD,KAAKkgD,OAAOxsD,IAAI,mBAAmB0uD,iBAC9CpiD,KAAKkgD,OAAOxsD,IAAI,mBAAmB2uD,SACnCF,EAAOjnD,QAAQ8E,KAAKkgD,OAAOxsD,IAAI,mBAAmB4uD,kBAEtD,OAAOH,EAAOvsD,SAASssD,GArBhBK,CAAmBvtD,EAAKyrD,QAAQwB,IAEpC,SAASO,KACZ,MAAMC,EAAWziD,KAAKkgD,OAAOxsD,IAAI,mBAAmBgvD,eAIpD,OAHI1iD,KAAKkgD,OAAOxsD,IAAI,mBAAmB2uD,SACnCI,EAASvnD,QAAQ8E,KAAKkgD,OAAOxsD,IAAI,mBAAmBivD,gBAEjDF,EAEJ,SAASG,GAA2BC,GACvC,OAAOb,GAAiBa,EAAOC,YAAcC,GAAoBF,GAE9D,SAASE,GAAoBF,GAChC,MAAOG,GAAaH,EAAOI,yBAAyBC,iBACpD,OAAOV,KAAmB5sD,SAASotD,GAShC,SAASG,GAAoBN,EAAQ1K,GACxC,MAAMwI,EAAOkC,EAAOC,UACpB,QAAan3C,IAATg1C,EAAoB,CAEpB,MAAO,CAAEA,KAAAA,KADQxI,EAAWiL,GAAgBjL,GApCpD,SAA2B0K,GACvB,MAAMQ,EAAMR,EAAOS,0BACnB,MAAO,CACHjE,KAAMgE,EAAI/D,IAAM,EAChBjlC,OAAQgpC,EAAI9D,OAAS,GAgCmCgE,CAAkBV,KAU3E9iD,eAAeyjD,GAAU5B,EAAMoB,GAClC,MAAMS,EAAK,IAAI/D,EAAKgE,WAAW,CAC3BC,UAAU,EACVC,sBAAsB,EACtBC,gBAAgB,EAChBC,UAAW9jD,KAAKkgD,OAAOxsD,IAAI,sBAEzBqwD,EAAK/jD,KAAKgkD,MAAMxF,QAAQiF,GAC9B,IAWI,OAVAM,EAAGE,yBAAwB,GAC3BF,EAAGn8C,MAAMs8C,cAAgB,OACzBH,EAAGn8C,MAAMuwC,SAAW,WACpB4L,EAAGn8C,MAAMu8C,IAAM,QACfJ,EAAGn8C,MAAMw8C,MAAQ,QACjBpkD,KAAKqkD,SAASC,mBAAmBb,EAAGc,YAAavB,GACjDS,EAAGe,QAAQ5C,GACX6B,EAAGgB,uBAAuBhB,EAAGc,YAAYG,kBACzC1kD,KAAKgkD,MAAMxF,QAAQx+C,KAAK2kD,WAAW17C,YAAY86C,SAQvDhkD,eAA+B8iD,GAC3B,OAAO,IAAI9sD,SAASwJ,IAChB,MAAMqlD,EAAe/B,EAAO0B,YAAYM,kBAClC33C,EAAoB21C,EAAOn6C,UAAUuE,uBAC3C,GAAI23C,EAAaE,gBAAkBF,EAAaG,KAC5CxlD,EAAQ2N,OAEP,CACD,MAAM83C,EAAOnC,EAAOoC,eAAc,KAC9BD,EAAKE,UACL3lD,EAAQ2N,UAjBVi4C,CAAgB1B,GACfrjD,MAAMglD,KAAKrB,EAAGsB,iBAAiB,sBAAsB5qD,KAAKkD,GAAMA,EAAE2nD,YAX7E,QAcIvB,EAAG53C,UC3DJ,SAASo5C,GAAWC,EAAWC,EAAS73C,GAC3C,IAAKA,EAAK83C,WACN,OAEJ,IAAK,MAAMC,KAAQ/3C,EAAK83C,WAAY,CAChC,MAAMznB,EAAQ2nB,GAAiBD,GACzB/mB,EAAMinB,GAAeF,GAC3B,GAAI14B,SAASgR,IAAUhR,SAAS2R,GAAM,CAClC,GAAI4mB,GAAavnB,GAASwnB,GAAW7mB,EAAK,CACtC,MAAMknB,EAAWP,GAAWC,EAAWC,EAASE,GAChD,OAAIG,GAIOH,EAGV,GAAI14B,SAAS2R,IAAQ6mB,EAAU7mB,EAChC,MAGR,MAAMmnB,EAAgBR,GAAWC,EAAWC,EAASE,GACrD,GAAII,EACA,OAAOA,EAGf,MAAMC,EAASJ,GAAiBh4C,GAC1Bq4C,EAAOJ,GAAej4C,GAC5B,OAAIqf,SAAS+4B,IAAW/4B,SAASg5B,IAAST,GAAaQ,GAAUP,GAAWQ,EACjEr4C,OADX,EAUG,SAASg4C,GAAiBh4C,GAC7B,OAAOA,EAAKs4C,MAAM9wD,OAAS,EAAIwY,EAAKs4C,MAAM,GAAGjoB,MAAMohB,KAAO,EAAI,EAe3D,SAASwG,GAAej4C,GAC3B,MAAMjZ,EAAIiZ,EAAKs4C,MACf,OAAOvxD,EAAES,OAAS,EAAIT,EAAEA,EAAES,OAAS,GAAGwpC,IAAIygB,KAAO,EAAI,EAQlD,SAAS8G,GAAiBC,EAASC,GACtC,IAAKD,IAAYC,EACb,OAAOD,IAAYC,EAevB,GAAID,EAAQlgD,OAASmgD,EAAQngD,KAAM,CAI/B,GAHImgD,EAAQC,YACRF,EAAQE,WAAY,GAEpBF,EAAQV,YAAcW,EAAQX,WAAY,CAC1C,IAAIa,EACAC,EACJ,IAAK,IAAI3xD,EAAI,EAAGk0B,EAAOq9B,EAAQV,WAAWtwD,OAAQP,EAAIk0B,IAAQl0B,EAC1D0xD,EAAWH,EAAQV,WAAW7wD,GAC9B2xD,EAAWH,EAAQX,WAAW7wD,GAGzBsxD,GAAiBI,EAAUC,KAE5BA,EAAWH,EAAQX,WAAW7wD,EAAI,GAC7BsxD,GAAiBI,EAAUC,KAE5BA,EAAWH,EAAQX,WAAW7wD,EAAI,GAClCsxD,GAAiBI,EAAUC,KAK3C,OAAO,EAEX,OAAO,EAUJ,SAASC,GAAeC,GAC3B,GAAgB,OAAZA,GAEAA,EAAQhB,WAAY,CACpB,GAAIgB,EAAQhB,WAAWtwD,OAAS,EAG5B,YADAsxD,EAAQhB,gBAAa/5C,GAKzB+6C,EAAQhB,WAAW3oB,MAAK,CAACnpC,EAAGqJ,IAAM2oD,GAAiBhyD,GAAKgyD,GAAiB3oD,KACzE,IAAK,MAAMgJ,KAASygD,EAAQhB,WACxBe,GAAexgD,IC3IpB,MAAM0gD,GACTltD,YAAYqM,GACRjM,KAAKiM,MAAQA,EACbuJ,GAAKZ,WAAW5U,MAEpB+sD,aAAa9gD,GACTjM,KAAKiM,MAAQ,IAAKjM,KAAKiM,SAAUA,SAC3BuJ,GAAK/E,OAAOzQ,MAEtB+sD,sBACUv3C,GAAKnD,QAAQrS,MAEvBsO,SACI,MAAMyF,EAAO/T,KAAKiM,MAAM4gD,SAClBG,KAAEA,GAAShtD,KAAKiM,MAChBghD,EAAeD,EAAKE,kBACpBjB,EAAWgB,ID8JME,EC9J2BF,GD8J/BG,EC9JyBr5C,GD+JtC1H,OAAS8gD,EAAG9gD,MAAQghD,GAAAlO,QAAQiO,EAAGf,MAAOc,EAAGd,QADhD,IAAoBe,EAAID,EC7JvB,MAAMG,GAAWv5C,EAAK83C,WAAa,UAAY,IAC3C,QACC93C,EAAK04C,UAAY,aAAe,cAChCR,EAAW,YAAc,IACxBsB,EAAevtD,KAAKwtD,YAC1B,OAAQh4C,GAAKzJ,IAAI,KAAM,CAAEc,UAAW,2BAA6BygD,GAC7D93C,GAAKzJ,IAAI,MAAO,CAAEc,UAAW,mBAAoBF,GAAI,CAAE8gD,MAAQC,GAAU1tD,KAAK2tD,aAAaD,EAAO35C,KAC9FyB,GAAKzJ,IAAI,OAAQ,CAAEc,UAAW0gD,GAAgBx5C,EAAK1H,OACvDmJ,GAAKzJ,IAAI,KAAM,CAAEc,UAAW,qBAAuBkH,EAAK83C,WAClD93C,EAAK83C,WAAWjrD,KAAKgtD,GAAOp4C,GAAKzJ,IAAI+gD,GAAyB,CAAED,QAASe,EAAIZ,KAAMA,MACnF,OAEdQ,YACI,MAAMK,KAAEA,GAAS7tD,KAAKiM,MAAM4gD,QAC5B,IAAIiB,EAAU,aAAYD,EAC1B,MAAME,cAAEA,GAAkB/tD,KAAKiM,MAAM4gD,QASrC,OARIkB,IACAD,GACI,IACIC,EACKptD,MAAM,QACNC,KAAKotD,GAAc,YAAWA,EAAS9tD,SACvCa,KAAK,MAEf+sD,EAEXH,aAAaD,EAAO35C,GAChB25C,EAAMO,mBDgJP,SAAuBl6C,EAAM25C,GAChC,QAAS35C,EAAK83C,YAAc6B,EAAMrP,SAAWqP,EAAMQ,eChJ9BC,CAAcp6C,EAAM25C,IAKjC35C,EAAK04C,WAAa14C,EAAK04C,UACvB2B,GAAc54C,GAAK/E,OAAOzQ,QAJ1BA,KAAKiM,MAAM+gD,KAAKqB,SAASt6C,IC3C9B,MAAMu6C,GACT1uD,YAAYqM,GACRjM,KAAKiM,MAAQA,EACbjM,KAAKuuD,cAAgB,IAAIC,EACzBxuD,KAAKyuD,YAAcvoD,UACf,IAAKlG,KAAKgpD,OACN,OACJ,IAAKhpD,KAAK0uD,UACN,OACJ,MAAMtG,EAAWpoD,KAAKgpD,OAAOC,UAC7B,QAAiBn3C,IAAbs2C,EAEJ,IACI,MAAMuG,QAAe3uD,KAAK0uD,UAAUtG,GAE9ByE,SADsB8B,EAAOC,QAAQ,UAAW,CAAE9H,KAAMsB,KAChCyG,KAC1BhC,IACA7sD,KAAK8uD,WAAWjC,SACVr3C,GAAK/E,OAAOzQ,OAG1B,MAAOiV,GACH85C,QAAQC,MAAM/5C,EAAKmzC,KAO3BpoD,KAAKivD,mBAAqB,EAAGC,kBAAAA,MACzB,IAAKlvD,KAAKiM,MAAM4gD,QACZ,OAEJ,MAAMsC,EAAaD,EAAkBzJ,IAC/ByG,EAAgBkD,GAAWD,EAAYA,EAAYnvD,KAAKiM,MAAM4gD,SAChEX,IAAkBlsD,KAAKitD,eACvBjtD,KAAKitD,aAAef,EACpBkC,GAAc54C,GAAK/E,OAAOzQ,SAGlCA,KAAKqvD,kBAAoBnpD,MAAAA,IAKrB,GAJIlG,KAAKsvD,iBACLtvD,KAAKsvD,gBAAgBjE,UACrBrrD,KAAKuvD,gBACLvvD,KAAKuvD,eAAelE,WACnBrC,IAAWwG,GAAqCxG,GACjD,OAAOhpD,KAAKyQ,OAAO,CAAEo8C,QAAS,OAGlC7sD,KAAKgpD,OAASA,QAERhpD,KAAKyuD,cACXzuD,KAAKsvD,gBAAkBtG,EAAOyG,0BAA0BzvD,KAAKivD,oBAC7DjvD,KAAKuvD,eAAiBvG,EAAO0G,kBAAkB1vD,KAAKyuD,cAExDkB,GAAe1jD,EAAM4gD,SACrBr3C,GAAKZ,WAAW5U,MAChBA,KAAKuuD,cAAcxnD,IAAIZ,KAAK2kD,UAAU8E,wBAAwB5vD,KAAKqvD,oBAEvEtC,aAAa9gD,QACa6F,IAAlB7F,EAAM4gD,SACN7sD,KAAK8uD,WAAW7iD,EAAM4gD,SAE1B7sD,KAAKiM,MAAQ,IAAKjM,KAAKiM,SAAUA,SAC3BuJ,GAAK/E,OAAOzQ,MAEtB+sD,gBACQ/sD,KAAKsvD,iBACLtvD,KAAKsvD,gBAAgBjE,UACrBrrD,KAAKuvD,gBACLvvD,KAAKuvD,eAAelE,UACxBrrD,KAAKsvD,qBAAkBx9C,EACvB9R,KAAKuvD,oBAAiBz9C,EACtB9R,KAAKitD,kBAAen7C,EACpB9R,KAAKuuD,cAAclD,gBACb71C,GAAKnD,QAAQrS,MAEvB+sD,mBAAmB2B,GACf1uD,KAAK0uD,UAAYA,QACX1uD,KAAKyuD,cAEfvB,kBACI,OAAOltD,KAAKitD,aAEhB3+C,SACI,MAAMuhD,EAAmB7vD,KAAKiM,MAAM4gD,QAAWr3C,GAAKzJ,IAAL+jD,GAAkC,CAAEjD,QAAS7sD,KAAKiM,MAAM4gD,QAASG,KAAMhtD,OAAW,KACjI,OAAQwV,GAAKzJ,IAAI,MAAO,CAAEc,UAAW,mDACjC2I,GAAKzJ,IAAI,KAAM,CAAEc,UAAW,sDAAwDgjD,IAE5Fv7C,kBAEI,MAAMy7C,EAAkB/vD,KAAK8O,QAAQkhD,cAAc,aAC/CD,GACA/vD,KAAKiwD,SAASF,GAStB1B,SAASt6C,GACL,IAAK/T,KAAKgpD,OACN,OACJ,MAAMkH,EAAWC,GAAiBp8C,GAC5Bq8C,EFtDP,SAA4Br8C,GAC/B,OAAOA,EAAKs4C,MAAM9wD,OAAS,EAAIwY,EAAKs4C,MAAM,GAAGjoB,MAAM5jB,OAAS,EAAI,EEqDzC6vC,CAAmBt8C,GACtC/T,KAAKgpD,OAAOsH,wBAAwB,CAACJ,EAAUE,IAEnDG,gBACI,OAAIvwD,KAAKgpD,OACEhpD,KAAKgpD,OAAOwH,gBAAgBC,oBAEnC,EAER3B,WAAWjC,GAEP,GADA8C,GAAe9C,GACXQ,GAAAlO,QAAQ0N,EAAS7sD,KAAKiM,MAAM4gD,SAC5B,OAIJ,IAAII,EACJ,GAHAyD,GAAiB7D,EAAS7sD,KAAKiM,MAAM4gD,SACrC7sD,KAAKiM,MAAM4gD,QAAUA,EAEjBA,EAAS,CACT,MAAMsC,EAAanvD,KAAKuwD,qBACLz+C,IAAfq9C,IACAlC,EAAemC,GAAWD,EAAYA,EAAYtC,IAG1D7sD,KAAKitD,aAAeA,EAOxBgD,SAAS5iD,GACL,MAAMy+C,EAAOz+C,EAC8B,mBAAhCy+C,EAAK6E,uBACZ7E,EAAK6E,yBAGL7E,EAAK8E,kBCnJV,MAAMC,GACTjxD,YAAYymD,GACRrmD,KAAK8wD,KAAO,IAAAC,GAA4B,CAAElE,QAASxG,EAAOwG,UAE9DE,cAAc1G,GAGV,OAFKwK,GAAaG,WACdH,GAAaG,SAAW,IAAIH,GAAaxK,IACtCwK,GAAaG,SAExBliD,cACI,OAAO9O,KAAK8wD,KAAKhiD,QAErBi+C,mBAAmBkE,SACTjxD,KAAK8wD,KAAKI,aAAaD,SACvBjxD,KAAK8wD,KAAKrgD,OAAO,IAE3B0gD,WACI,MAAO,aAEXC,SACI,MArByB,kCAuB7BrE,gBACI8D,GAAaG,SAAW,WAClBhxD,KAAK8wD,KAAKz+C,UAEpBg/C,qBACI,MAAO,QAEXC,sBAEI,MAAO,CAAC,OAAQ,SAEpBC,YACI,MAAO,CACHC,aAAc,oCACd56B,KAAM,CAAEi2B,QAAS7sD,KAAK8wD,KAAK7kD,MAAM4gD,WAI7CgE,GAAaG,SAAW,YCtBpBS,GAAMC,EACNC,GAAI52D,EACJ62D,GAAMC,EAGVC,GAAiB,SAASC,EAAY9xD,GACpC,OAAO+xD,GAA4BD,EAAY9xD,WAInB,SAAS8xD,EAAY9xD,GACjD,OAAI8xD,EACKE,GAAiBF,EAAY9xD,GAE7B,IAAIiyD,GAAWjyD,IAJ1B6xD,GAAeK,aAAfH,GAcA,SAASC,GAAiBF,EAAY9xD,GACpC,IAAK8xD,EACH,MAAM,IAAIz2D,MAAM,uBAElB,IAAKy2D,EAAWK,SACd,MAAM,IAAI92D,MAAM,+BAElB,IAAI+2D,EAAK,IAAIH,GAAWjyD,GAExB,OADA8xD,EAAWO,KAAKD,GACTA,EAST,SAASH,GAAWjyD,GAClBwxD,GAAOc,UAAU91D,KAAKuD,KAAMC,GAC5BA,EAAUA,GAAW,GAIrBD,KAAKwyD,eAAeC,YAAa,EACjCzyD,KAAK0yD,YAAc,GACnB1yD,KAAK2yD,gBAAkB1yD,EAAQ2yD,iBAAkB,EACjD5yD,KAAK6yD,uBAAwB,EAG7B,IAAIz4D,EAAO4F,KACXA,KAAK2M,GAAG,QAAQ,SAASpP,GAClBnD,EAAK04D,UAEJv1D,aAAek0D,GAAOsB,WACxB34D,EAAK04D,SAAWv1D,EAAIi1D,eAAeM,aAxC3ChB,GAAeG,iBAAmB,SAASF,GAEzC,OADAhD,QAAQiE,IAAI,2EACLf,GAAiBF,IAmB1BD,GAAeI,WAAaA,GAwB5BP,GAAKsB,SAASf,GAAYT,GAAOc,WAEjCL,GAAW31D,UAAU22D,WAAa,SAASvZ,EAAOmZ,EAAUtd,GAE1Dsd,EAAWA,GAAY,OAEnBr3D,OAAOC,SAASi+C,KACF,UAAZmZ,GACFnZ,EAAQA,EAAMr9C,WACdw2D,EAAW,QAGZnZ,EAAQA,EAAMr9C,SAASw2D,IAG1B9yD,KAAKmzD,eAAiBL,EAGtB,IAAIM,EAAQzZ,EAAMh5C,MAAM,oCAGpBX,KAAK6yD,uBAAqC,MAAZlZ,EAAM,IACtCyZ,EAAM7/C,QAGJvT,KAAK0yD,YAAYn3D,OAAS,IAC5ByE,KAAK0yD,YAAY1yD,KAAK0yD,YAAYn3D,OAAS,IAAM63D,EAAM,GACvDA,EAAM7/C,SAGRvT,KAAK6yD,sBAAmD,MAA3BlZ,EAAMA,EAAMp+C,OAAS,GAClDyE,KAAK0yD,YAAc1yD,KAAK0yD,YAAYlmD,OAAO4mD,GAC3CpzD,KAAKqzD,YAAYP,EAAU,EAAGtd,IAGhC0c,GAAW31D,UAAU82D,YAAc,SAASP,EAAUQ,EAAM9d,GAE1D,KAAOx1C,KAAK0yD,YAAYn3D,OAAS+3D,GAAM,CACrC,IAAI9N,EAAOxlD,KAAK0yD,YAAYn/C,QAE5B,IAAIvT,KAAK2yD,iBAAmBnN,EAAKjqD,OAAS,KACnCyE,KAAKqB,KAAKrB,KAAKuzD,UAAU/N,EAAMsN,IAAY,CAE9C,IAAI14D,EAAO4F,KAIX,YAHA4xD,GAAO4B,cAAa,WAClBp5D,EAAKi5D,YAAYP,EAAUQ,EAAM9d,OAMzCA,KAGF0c,GAAW31D,UAAUk3D,OAAS,SAASje,GACrCx1C,KAAKqzD,YAAYrzD,KAAKmzD,eAAgB,EAAG3d,IAI3C0c,GAAW31D,UAAUg3D,UAAY,SAAS/N,EAAMkO,GAC9C,OAAI1zD,KAAK8yD,UAAY9yD,KAAK8yD,UAAYY,EAC7B,IAAIj4D,OAAO+pD,EAAMkO,GAAep3D,SAAS0D,KAAK8yD,UAE9C9yD,KAAK8yD,SAELtN,EAGA,IAAI/pD,OAAO+pD,EAAMkO,ICvJrB,MAAMC,GACT/zD,YAAYg0D,GACR5zD,KAAK4zD,gBAAkBA,EACvB5zD,KAAK6zD,UAAY,IAAI1mD,IACrBnN,KAAK8zD,SAAW,EAEpB/G,UAAUgH,EAAKC,GACX,IACI,MAAMj/C,EAAU,IAAI7Y,SAAQ,CAACwJ,EAASo2C,KAClC97C,KAAK6zD,UAAU9wD,IAAIgxD,EAAK,CACpBC,QAAAA,EACAtuD,QAAAA,EACAo2C,OAAAA,EACAmY,QAASxjC,KAAKgC,WAQtB,OALsB,IAAlBzyB,KAAK8zD,WACL9zD,KAAK8zD,SAAWz5D,OAAO65D,aAAY,KAC/Bj3D,QAAQk3D,mBACT,YAEMn0D,KAAK4zD,gBAAgBI,GAAS,IAAMj/C,IAdrD,QAiBI/U,KAAK6zD,UAAUh/C,OAAOk/C,GACA,IAAlB/zD,KAAK8zD,UAA0C,IAAxB9zD,KAAK6zD,UAAU3kC,OACtCklC,cAAcp0D,KAAK8zD,UACnB9zD,KAAK8zD,SAAW,IAI5BO,UAAUrF,GACN,IAAK,MAAMlT,OAAEA,KAAY97C,KAAK6zD,UAAUtzC,SACpCu7B,EAAOkT,GAEXhvD,KAAK6zD,UAAUpiD,QAEnB/L,QAAQ4uD,GACJ,MAAMC,EAAMv0D,KAAK6zD,UAAUh6D,IAAIy6D,EAAIE,aAC/BD,GACIl6D,OAAOo6D,uBACP1F,QAAQiE,IAAI,wBAAyBsB,EAAIN,QAAS,KAAMvjC,KAAKgC,MAAQ8hC,EAAIN,QAAS,KAAM,YAAaK,EAAIzF,MAEzGyF,EAAII,QACJH,EAAI7uD,QAAQ4uD,GAEZC,EAAIzY,OAAO,IAAIxgD,MAAMg5D,EAAIl/C,WAG7B25C,QAAQ4F,KAAK,uBAAwBL,GAE7CM,UAAU/F,GACN,MAAM0F,EAAMv0D,KAAK6zD,UAAUh6D,IAAIg1D,EAAK2F,aAChCD,GACIl6D,OAAOo6D,uBACP1F,QAAQiE,IAAK,yDAAwDuB,EAAIP,cAAcvjC,KAAKgC,MAAQ8hC,EAAIN,cAE5GM,EAAI7uD,aAAQoM,IAGZi9C,QAAQ4F,KAAM,qCAAqC9F,GAE3DG,MAAM+E,EAAK9+C,GACP,MAAMs/C,EAAMv0D,KAAK6zD,UAAUh6D,IAAIk6D,GAC3BQ,EACAA,EAAIzY,OAAO7mC,GAEX85C,QAAQC,MAAM/5C,IC9D1B,MAqCM4/C,GAAsB,IAAIhvD,IAAItM,OAAOC,KApCZ,CAC3Bs7D,+BAA+B,EAC/BC,uBAAuB,EACvBC,wBAAwB,EACxBC,aAAa,EACbC,gBAAgB,EAChBC,WAAW,EACXC,YAAY,EACZt0D,QAAQ,EACRu0D,cAAc,EACdC,uBAAuB,EACvBC,oBAAoB,EACpBC,aAAa,EACbC,WAAW,EACXC,YAAY,EACZC,QAAQ,EACRC,QAAQ,EACRC,SAAS,EACTC,OAAO,EACPC,wBAAwB,EACxBC,qBAAqB,EACrBC,iBAAiB,EACjBC,eAAe,EACfC,uBAAuB,EACvBC,wBAAwB,KAatBC,GAAuB,IAAIxwD,IAAItM,OAAOC,KAXX,CAC7B88D,QAAQ,EACRC,kBAAkB,KAUhBC,GAAa,IAAI3wD,IAAItM,OAAOC,KARZ,CAClBi9D,gBAAgB,EAChBC,cAAc,EACdC,gBAAgB,EAChBC,YAAY,KAcT,MAAMC,GACTj3D,YAAYk3D,EAAc/2D,EAAS6zD,GAC/B5zD,KAAK82D,aAAeA,EACpB92D,KAAKD,QAAUA,EACfC,KAAK4zD,gBAAkBA,EACvB5zD,KAAK+2D,QAAU,IAAIC,EACnBh3D,KAAK+zD,IAAM,EACX/zD,KAAKi3D,iBAAmB,GAExBj3D,KAAK2M,GAAK3M,KAAK+2D,QAAQpqD,GAAGqD,KAAKhQ,KAAK+2D,SACpC/2D,KAAKk3D,YAAc,CAACjiD,EAAKkiD,GAAS,KAM9B,GALAn3D,KAAK6zD,UAAUQ,UAAUp/C,GACrBkiD,GACApI,QAAQC,MAAM,aAAc/5C,GAChCjV,KAAKo3D,YAAStlD,EACd9R,KAAK+2D,QAAQM,KAAK,cACdF,EAAQ,CACR,IAAI9hD,EAASJ,EAAIG,QACbpV,KAAKi3D,mBACL5hD,EAAU,+BAA8BrV,KAAKi3D,uBAAuB5hD,KAExElP,KAAK+O,cAAcoiD,SAAS,sCAAuC,CAC/DjiD,OAAAA,EACAC,MAAOL,EAAIK,MACXC,aAAa,MAIzBvV,KAAKu3D,UAAajD,IACG,aAAbA,EAAI/lB,KACJvuC,KAAK6zD,UAAUnuD,QAAQ4uD,GAEvBt0D,KAAKw3D,QAAQlD,IAGrB,MAAO/zD,EAAOC,GAAST,EAClBY,MAAM,KACN/E,MAAM,EAAG,GACTgF,KAAKkD,GAAMwZ,SAASxZ,EAAG,MAC5B9D,KAAKy3D,mBAAqBl3D,EAAQ,GAAgB,IAAVA,GAAeC,GAAS,EAChER,KAAK6zD,UAAY,IAAA6D,GAAc13D,KAAK4zD,iBACpC5zD,KAAKo3D,OAASp3D,KAAK23D,cAEvB5K,cAAciH,KAAY70C,GACjBnf,KAAKo3D,SACNp3D,KAAKo3D,OAASp3D,KAAK23D,cACnB33D,KAAK+2D,QAAQM,KAAK,cAEtB,MAAM9C,EAAM,CACRR,IAAK/zD,KAAK+zD,MACVC,QAAAA,EACAnqB,UAAW1qB,EAAK,IAEhB9kB,OAAOo6D,uBACP1F,QAAQiE,IAAI,kBAAmBuB,GAEnC,IAAIv0C,OAASlO,GAjErB,SAA+BkiD,GAC3B,OAAOa,GAAoBluD,IAAIqtD,GAiEvB4D,CAAsB5D,IACrBh0D,KAAKy3D,oBAhElB,SAAgCzD,GAC5B,OAAOqC,GAAqB1vD,IAAIqtD,GA+DI6D,CAAuB7D,MACnDh0C,EAAShgB,KAAK6zD,UAAU9sD,IAAIwtD,EAAIR,IAAKC,IAEzC,IACI,IAAKh0D,KAAKo3D,OAAOU,MACb,MAAM,IAAIx8D,MAAM,2BACpB0E,KAAKo3D,OAAOU,MAAMC,MAAMlxD,KAAKmxD,UAAUzD,GAAO,MAElD,MAAOvF,GACHhvD,KAAK6zD,UAAU7E,MAAMuF,EAAIR,IAAK/E,GAElC,OAAOhvC,EAEX+sC,sBACI,GAAI/sD,KAAKo3D,OAAQ,CACb,MAAMA,EAASp3D,KAAKo3D,OACda,EAAatlC,YAAW,IAAMykC,EAAOc,QAAQ,WAC7Ch8D,QAAQuK,IAAI,CACdzG,KAAK4uD,QAAQ,QACb,IAAI1yD,SAASwJ,IACT,MAAMylD,EAAOnrD,KAAK+2D,QAAQtb,KAAK,cAAc,KACzC0P,EAAKE,UACL3lD,YAIZ6sB,aAAa0lC,GAIZj4D,KAAKo3D,SACNp3D,KAAKo3D,OAASp3D,KAAK23D,cACnB33D,KAAK+2D,QAAQM,KAAK,cAG1BM,cACQt9D,OAAOo6D,uBACP1F,QAAQiE,IAAI,WAAYhzD,KAAK82D,cAEjC,MAAMqB,EAsCd,SAAqBrB,GACjB,MAAMsB,EAASjyD,KAAKkgD,OAAOxsD,IAAI,mBAAmBu+D,OAC5CC,EAAeD,EAAS,CAAC,WAAYA,GAAU,GAQjD,OAAO,IAAIE,EAAoB,CAC3BtE,QAAS8C,EACT33C,KAAMk5C,IACPp7D,QAnDQ06D,CAAY33D,KAAK82D,cAC5B,IAAKqB,EACD,MAAM,IAAI78D,MAAM,gCACpB,MAAM+B,EAAI2C,KAAKk3D,YAWf,GAVAiB,EAAG1c,KAAK,QAASp+C,GACjB86D,EAAG1c,KAAK,QAAQ,CAACsM,EAAMwQ,KACN,IAATxQ,EACA1qD,EAAE,IAAI/B,MAAM,4BAA4B,GAC1B,OAATysD,EACL1qD,EAAE,IAAI/B,MAAO,qBAAoBysD,IACjB,OAAXwQ,GACLl7D,EAAE,IAAI/B,MAAO,yBAAwBi9D,QAGxCJ,EAAGK,OACJ,MAAM,IAAIl9D,MAAM,+BACpB,IAAK68D,EAAGM,OACJ,MAAM,IAAIn9D,MAAM,+BAqC5B,IAAuB+9B,EAhCf,OAgCeA,EApCD8+B,EAAGK,OAqCdn/B,EAAMi5B,KAAKoG,MAAUpG,KAAK,IAAIqG,KArCRhsD,GAAG,OAAQ3M,KAAKu3D,WACzCY,EAAGM,OAAO9rD,GAAG,QAASiqB,IAClBm4B,QAAQ4F,KAAK,mBAAqB30D,KAAKi3D,iBAAmBrgC,EAAKt6B,eAE5D67D,EAEXX,QAAQlD,GA5HZ,IAA8B5G,EA6HlBrzD,OAAOo6D,uBACP1F,QAAQiE,IAAI,iBAAkBsB,GAE9BA,EAAIzF,OAhIcnB,EAiIO4G,EAAI5G,MAhI9B8I,GAAW7vD,IAAI+mD,GAiIV1tD,KAAK+2D,QAAQM,KAAK/C,EAAI5G,MAAO4G,EAAIzF,MAEd,qBAAdyF,EAAI5G,OACT1tD,KAAK6zD,UAAUe,UAAUN,EAAIzF,YCnLzC+J,YD4MJ,MAAMD,WAAsBpG,EACxB3yD,cACIi5D,MAAM,CAAEpG,YAAY,IAExBS,WAAW4F,EAAKC,EAAWtvB,GACvB,MAAM+b,EAAOsT,EAAIx8D,WACjB,IACQkpD,EAAK9D,WAAW,KAChB1hD,KAAKqB,KAAKwF,KAAKzE,MAAMojD,IAEfA,EAAK9D,WAAW,oBACtBqN,QAAQ4F,KAAKnP,GAGrB,MAAOwJ,GACHD,QAAQC,MAAM,4BAA6BxJ,GAT/C,QAYI/b,OAAS33B,KE3Nd,SAASknD,GAAc3sD,EAAM4sD,QACX,IAAjBA,IAA2BA,GAAe,GAC9C,IAAIC,EAAM7sD,EAAK9Q,OACXiuD,EAAM,EAAGhvD,EAAQ,GAAI2+D,EAAc,EAAGC,EAAQ,GAAkBC,EAAa,EAAGC,EAAkB,EAAGC,EAAuB,EAAGC,EAA2B,EAAGC,EAAY,EAC7K,SAASC,EAAcjqB,EAAOkqB,GAG1B,IAFA,IAAIC,EAAS,EACTp/D,EAAQ,EACLo/D,EAASnqB,IAAUkqB,GAAO,CAC7B,IAAIE,EAAKxtD,EAAK2jC,WAAWwZ,GACzB,GAAIqQ,GAAM,IAAeA,GAAM,GAC3Br/D,EAAgB,GAARA,EAAaq/D,EAAK,QAEzB,GAAIA,GAAM,IAAcA,GAAM,GAC/Br/D,EAAgB,GAARA,EAAaq/D,EAAK,GAAa,OAEtC,CAAA,KAAIA,GAAM,IAAcA,GAAM,KAI/B,MAHAr/D,EAAgB,GAARA,EAAaq/D,EAAK,GAAa,GAK3CrQ,IACAoQ,IAKJ,OAHIA,EAASnqB,IACTj1C,GAAS,GAENA,EAiIX,SAASs/D,IAML,GALAt/D,EAAQ,GACRi/D,EAAY,EACZN,EAAc3P,EACd8P,EAAkBD,EAClBG,EAA2BD,EACvB/P,GAAO0P,EAGP,OADAC,EAAcD,EACPE,EAAQ,GAEnB,IAAIrR,EAAO17C,EAAK2jC,WAAWwZ,GAE3B,GAAIuQ,GAAahS,GAAO,CACpB,GACIyB,IACAhvD,GAASm2B,OAAOqpC,aAAajS,GAC7BA,EAAO17C,EAAK2jC,WAAWwZ,SAClBuQ,GAAahS,IACtB,OAAOqR,EAAQ,GAGnB,GAAIa,GAAYlS,GASZ,OARAyB,IACAhvD,GAASm2B,OAAOqpC,aAAajS,GAChB,KAATA,GAA6D,KAAzB17C,EAAK2jC,WAAWwZ,KACpDA,IACAhvD,GAAS,MAEb6+D,IACAE,EAAuB/P,EAChB4P,EAAQ,GAEnB,OAAQrR,GAEJ,KAAK,IAED,OADAyB,IACO4P,EAAQ,EACnB,KAAK,IAED,OADA5P,IACO4P,EAAQ,EACnB,KAAK,GAED,OADA5P,IACO4P,EAAQ,EACnB,KAAK,GAED,OADA5P,IACO4P,EAAQ,EACnB,KAAK,GAED,OADA5P,IACO4P,EAAQ,EACnB,KAAK,GAED,OADA5P,IACO4P,EAAQ,EAEnB,KAAK,GAGD,OAFA5P,IACAhvD,EArIZ,WAEI,IADA,IAAIwlB,EAAS,GAAIokB,EAAQolB,IACZ,CACT,GAAIA,GAAO0P,EAAK,CACZl5C,GAAU3T,EAAK62C,UAAU9e,EAAOolB,GAChCiQ,EAAY,EACZ,MAEJ,IAAII,EAAKxtD,EAAK2jC,WAAWwZ,GACzB,GAAW,KAAPqQ,EAA6B,CAC7B75C,GAAU3T,EAAK62C,UAAU9e,EAAOolB,GAChCA,IACA,MAEJ,GAAW,KAAPqQ,EAAJ,CAgDA,GAAIA,GAAM,GAAKA,GAAM,GAAM,CACvB,GAAII,GAAYJ,GAAK,CACjB75C,GAAU3T,EAAK62C,UAAU9e,EAAOolB,GAChCiQ,EAAY,EACZ,MAGAA,EAAY,EAIpBjQ,QA3DA,CAGI,GAFAxpC,GAAU3T,EAAK62C,UAAU9e,EAAOolB,KAChCA,GACW0P,EAAK,CACZO,EAAY,EACZ,MAGJ,OADUptD,EAAK2jC,WAAWwZ,MAEtB,KAAK,GACDxpC,GAAU,IACV,MACJ,KAAK,GACDA,GAAU,KACV,MACJ,KAAK,GACDA,GAAU,IACV,MACJ,KAAK,GACDA,GAAU,KACV,MACJ,KAAK,IACDA,GAAU,KACV,MACJ,KAAK,IACDA,GAAU,KACV,MACJ,KAAK,IACDA,GAAU,KACV,MACJ,KAAK,IACDA,GAAU,KACV,MACJ,KAAK,IACD,IAAIk6C,EAAMR,EAAc,GAAG,GACvBQ,GAAO,EACPl6C,GAAU2Q,OAAOqpC,aAAaE,GAG9BT,EAAY,EAEhB,MACJ,QACIA,EAAY,EAEpBr1B,EAAQolB,GAgBhB,OAAOxpC,EA0DSm6C,GACDf,EAAQ,GAEnB,KAAK,GACD,IAAIh1B,EAAQolB,EAAM,EAElB,GAAiC,KAA7Bn9C,EAAK2jC,WAAWwZ,EAAM,GAAuB,CAE7C,IADAA,GAAO,EACAA,EAAM0P,IACLe,GAAY5tD,EAAK2jC,WAAWwZ,KAGhCA,IAGJ,OADAhvD,EAAQ6R,EAAK62C,UAAU9e,EAAOolB,GACvB4P,EAAQ,GAGnB,GAAiC,KAA7B/sD,EAAK2jC,WAAWwZ,EAAM,GAA0B,CAChDA,GAAO,EAGP,IAFA,IAAI4Q,EAAalB,EAAM,EACnBmB,GAAgB,EACb7Q,EAAM4Q,GAAY,CACrB,IAAIP,EAAKxtD,EAAK2jC,WAAWwZ,GACzB,GAAW,KAAPqQ,GAAyD,KAA7BxtD,EAAK2jC,WAAWwZ,EAAM,GAAuB,CACzEA,GAAO,EACP6Q,GAAgB,EAChB,MAEJ7Q,IACIyQ,GAAYJ,KACD,KAAPA,GAA2D,KAAzBxtD,EAAK2jC,WAAWwZ,IAClDA,IAEJ6P,IACAE,EAAuB/P,GAQ/B,OALK6Q,IACD7Q,IACAiQ,EAAY,GAEhBj/D,EAAQ6R,EAAK62C,UAAU9e,EAAOolB,GACvB4P,EAAQ,GAKnB,OAFA5+D,GAASm2B,OAAOqpC,aAAajS,GAC7ByB,IACO4P,EAAQ,GAEnB,KAAK,GAGD,GAFA5+D,GAASm2B,OAAOqpC,aAAajS,KAC7ByB,IACY0P,IAAQoB,GAAQjuD,EAAK2jC,WAAWwZ,IACxC,OAAO4P,EAAQ,GAKvB,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GAED,OADA5+D,GArPZ,WACI,IAAI4pC,EAAQolB,EACZ,GAA6B,KAAzBn9C,EAAK2jC,WAAWwZ,GAChBA,SAIA,IADAA,IACOA,EAAMn9C,EAAK9Q,QAAU++D,GAAQjuD,EAAK2jC,WAAWwZ,KAChDA,IAGR,GAAIA,EAAMn9C,EAAK9Q,QAAmC,KAAzB8Q,EAAK2jC,WAAWwZ,GAAuB,CAE5D,OADAA,EACUn9C,EAAK9Q,QAAU++D,GAAQjuD,EAAK2jC,WAAWwZ,KAQ7C,OADAiQ,EAAY,EACLptD,EAAK62C,UAAU9e,EAAOolB,GAN7B,IADAA,IACOA,EAAMn9C,EAAK9Q,QAAU++D,GAAQjuD,EAAK2jC,WAAWwZ,KAChDA,IAQZ,IAAIzkB,EAAMykB,EACV,GAAIA,EAAMn9C,EAAK9Q,SAAoC,KAAzB8Q,EAAK2jC,WAAWwZ,IAAgD,MAAzBn9C,EAAK2jC,WAAWwZ,IAK7E,MAJAA,EACUn9C,EAAK9Q,QAAmC,KAAzB8Q,EAAK2jC,WAAWwZ,IAAmD,KAAzBn9C,EAAK2jC,WAAWwZ,KAC/EA,IAEAA,EAAMn9C,EAAK9Q,QAAU++D,GAAQjuD,EAAK2jC,WAAWwZ,IAAO,CAEpD,IADAA,IACOA,EAAMn9C,EAAK9Q,QAAU++D,GAAQjuD,EAAK2jC,WAAWwZ,KAChDA,IAEJzkB,EAAMykB,OAGNiQ,EAAY,EAGpB,OAAOptD,EAAK62C,UAAU9e,EAAOW,GA4MZw1B,GACFnB,EAAQ,GAEnB,QAEI,KAAO5P,EAAM0P,GAAOsB,EAA0BzS,IAC1CyB,IACAzB,EAAO17C,EAAK2jC,WAAWwZ,GAE3B,GAAI2P,IAAgB3P,EAAK,CAGrB,OAFAhvD,EAAQ6R,EAAK62C,UAAUiW,EAAa3P,IAGhC,IAAK,OAAQ,OAAO4P,EAAQ,EAC5B,IAAK,QAAS,OAAOA,EAAQ,EAC7B,IAAK,OAAQ,OAAOA,EAAQ,EAEhC,OAAOA,EAAQ,GAKnB,OAFA5+D,GAASm2B,OAAOqpC,aAAajS,GAC7ByB,IACO4P,EAAQ,IAG3B,SAASoB,EAA0BzS,GAC/B,GAAIgS,GAAahS,IAASkS,GAAYlS,GAClC,OAAO,EAEX,OAAQA,GACJ,KAAK,IACL,KAAK,GACL,KAAK,IACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACD,OAAO,EAEf,OAAO,EASX,MAAO,CACH0S,YA9SJ,SAAqBC,GACjBlR,EAAMkR,EACNlgE,EAAQ,GACR2+D,EAAc,EACdC,EAAQ,GACRK,EAAY,GA0SZkB,YAAa,WAAc,OAAOnR,GAClCoR,KAAM3B,EAVV,WACI,IAAIj5C,EACJ,GACIA,EAAS85C,UACJ95C,GAAU,IAA8BA,GAAU,IAC3D,OAAOA,GAKkC85C,EACzCe,SAAU,WAAc,OAAOzB,GAC/B0B,cAAe,WAAc,OAAOtgE,GACpCugE,eAAgB,WAAc,OAAO5B,GACrC6B,eAAgB,WAAc,OAAOxR,EAAM2P,GAC3C8B,kBAAmB,WAAc,OAAO3B,GACxC4B,uBAAwB,WAAc,OAAO/B,EAAcK,GAC3D2B,cAAe,WAAc,OAAO1B,IAG5C,SAASM,GAAaF,GAClB,OAAc,KAAPA,GAAgC,IAAPA,GAA6B,KAAPA,GAAsC,KAAPA,GAC1E,MAAPA,GAA4C,OAAPA,GAA2BA,GAAM,MAAqBA,GAAM,MAC1F,OAAPA,GAA+C,OAAPA,GAA8C,QAAPA,GAA8C,QAAPA,EAE9H,SAASI,GAAYJ,GACjB,OAAc,KAAPA,GAAmC,KAAPA,GAAyC,OAAPA,GAA0C,OAAPA,EAE5G,SAASS,GAAQT,GACb,OAAOA,GAAM,IAAeA,GAAM,ID9VnCjB,KAAiBA,GAAe,KAHlBwC,QAAU,CACnBC,oBAAoB,GEarB,UAAIj5D,GFiHJ,SAAeiK,EAAMivD,EAAQr7D,QACjB,IAAXq7D,IAAqBA,EAAS,SAClB,IAAZr7D,IAAsBA,EAAU24D,GAAawC,SACjD,IAAIG,EAAkB,KAClBC,EAAgB,GAChBC,EAAkB,GACtB,SAASC,EAAQlhE,GACT+L,MAAMC,QAAQg1D,GACdA,EAAcn6D,KAAK7G,GAEM,OAApB+gE,IACLC,EAAcD,GAAmB/gE,GAiCzC,OA+KG,SAAe6R,EAAMsvD,EAAS17D,QACjB,IAAZA,IAAsBA,EAAU24D,GAAawC,SACjD,IAAIQ,EAAWC,GAAcxvD,GAAM,GACnC,SAASyvD,EAAaC,GAClB,OAAOA,EAAgB,WAAc,OAAOA,EAAcH,EAASb,iBAAkBa,EAASZ,iBAAkBY,EAASX,oBAAqBW,EAASV,2BAA+B,WAAc,OAAO,GAE/M,SAASc,EAAcD,GACnB,OAAOA,EAAgB,SAAU1sC,GAAO,OAAO0sC,EAAc1sC,EAAKusC,EAASb,iBAAkBa,EAASZ,iBAAkBY,EAASX,oBAAqBW,EAASV,2BAA+B,WAAc,OAAO,GAEvN,IAAIe,EAAgBH,EAAaH,EAAQM,eAAgBC,EAAmBF,EAAcL,EAAQO,kBAAmBC,EAAcL,EAAaH,EAAQQ,aAAcC,EAAeN,EAAaH,EAAQS,cAAeC,EAAaP,EAAaH,EAAQU,YAAaC,EAAiBN,EAAcL,EAAQW,gBAAiBC,EAAcP,EAAcL,EAAQY,aAAcC,EAAYV,EAAaH,EAAQa,WAAY9xD,EAAUsxD,EAAcL,EAAQjxD,SAC3b+xD,EAAmBx8D,GAAWA,EAAQw8D,iBACtCpB,EAAqBp7D,GAAWA,EAAQo7D,mBAC5C,SAASvB,IACL,OAAa,CACT,IAAIV,EAAQwC,EAAShB,OACrB,OAAQgB,EAAST,iBACb,KAAK,EACDuB,EAAY,IACZ,MACJ,KAAK,EACDA,EAAY,IACZ,MACJ,KAAK,EACDA,EAAY,IACZ,MACJ,KAAK,EACID,GACDC,EAAY,IAEhB,MACJ,KAAK,EACDA,EAAY,IACZ,MACJ,KAAK,EACDA,EAAY,IAGpB,OAAQtD,GACJ,KAAK,GACL,KAAK,GACGqD,EACAC,EAAY,IAGZF,IAEJ,MACJ,KAAK,GACDE,EAAY,GACZ,MACJ,KAAK,GACL,KAAK,GACD,MACJ,QACI,OAAOtD,IAIvB,SAASsD,EAAY1N,EAAO2N,EAAgBC,GAIxC,QAHuB,IAAnBD,IAA6BA,EAAiB,SAChC,IAAdC,IAAwBA,EAAY,IACxClyD,EAAQskD,GACJ2N,EAAephE,OAASqhE,EAAUrhE,OAAS,EAE3C,IADA,IAAI69D,EAAQwC,EAASf,WACJ,KAAVzB,GAAwB,CAC3B,IAAuC,IAAnCuD,EAAe94B,QAAQu1B,GAAe,CACtCU,IACA,MAEC,IAAkC,IAA9B8C,EAAU/4B,QAAQu1B,GACvB,MAEJA,EAAQU,KAIpB,SAAS+C,EAAYC,GACjB,IAAItiE,EAAQohE,EAASd,gBAQrB,OAPIgC,EACAR,EAAe9hE,GAGf0hE,EAAiB1hE,GAErBs/D,KACO,EAEX,SAASiD,IACL,OAAQnB,EAASf,YACb,KAAK,GACD,IAAImC,EAAapB,EAASd,gBACtBtgE,EAAQsC,OAAOkgE,GACf17D,MAAM9G,KACNkiE,EAAY,GACZliE,EAAQ,GAEZ8hE,EAAe9hE,GACf,MACJ,KAAK,EACD8hE,EAAe,MACf,MACJ,KAAK,EACDA,GAAe,GACf,MACJ,KAAK,EACDA,GAAe,GACf,MACJ,QACI,OAAO,EAGf,OADAxC,KACO,EAEX,SAASmD,IACL,OAA4B,KAAxBrB,EAASf,YACT6B,EAAY,EAA8B,GAAI,CAAC,EAAyB,KACjE,IAEXG,GAAY,GACgB,IAAxBjB,EAASf,YACT0B,EAAY,KACZzC,IACKoD,KACDR,EAAY,EAAuB,GAAI,CAAC,EAAyB,KAIrEA,EAAY,EAAuB,GAAI,CAAC,EAAyB,KAE9D,GAEX,SAASS,IACLlB,IACAnC,IAEA,IADA,IAAIsD,GAAa,EACc,IAAxBxB,EAASf,YAAkE,KAAxBe,EAASf,YAA6B,CAC5F,GAA4B,IAAxBe,EAASf,YAMT,GALKuC,GACDV,EAAY,EAAuB,GAAI,IAE3CH,EAAY,KACZzC,IAC4B,IAAxB8B,EAASf,YAA0CQ,EACnD,WAGC+B,GACLV,EAAY,EAAuB,GAAI,IAEtCO,KACDP,EAAY,EAAuB,GAAI,CAAC,EAAyB,IAErEU,GAAa,EASjB,OAPAjB,IAC4B,IAAxBP,EAASf,WACT6B,EAAY,EAA4B,CAAC,GAA0B,IAGnE5C,KAEG,EAEX,SAASuD,IACLjB,IACAtC,IAEA,IADA,IAAIsD,GAAa,EACc,IAAxBxB,EAASf,YAAoE,KAAxBe,EAASf,YAA6B,CAC9F,GAA4B,IAAxBe,EAASf,YAMT,GALKuC,GACDV,EAAY,EAAuB,GAAI,IAE3CH,EAAY,KACZzC,IAC4B,IAAxB8B,EAASf,YAA4CQ,EACrD,WAGC+B,GACLV,EAAY,EAAuB,GAAI,IAEtCQ,KACDR,EAAY,EAAuB,GAAI,CAAC,EAA2B,IAEvEU,GAAa,EASjB,OAPAf,IAC4B,IAAxBT,EAASf,WACT6B,EAAY,EAA8B,CAAC,GAA4B,IAGvE5C,KAEG,EAEX,SAASoD,IACL,OAAQtB,EAASf,YACb,KAAK,EACD,OAAOwC,IACX,KAAK,EACD,OAAOF,IACX,KAAK,GACD,OAAON,GAAY,GACvB,QACI,OAAOE,KAInB,GADAjD,IAC4B,KAAxB8B,EAASf,WACT,QAAI56D,EAAQq9D,oBAGZZ,EAAY,EAAuB,GAAI,KAChC,GAEX,IAAKQ,IAED,OADAR,EAAY,EAAuB,GAAI,KAChC,EAEiB,KAAxBd,EAASf,YACT6B,EAAY,EAA2B,GAAI,IA5Y/Ca,CAAMlxD,EA7BQ,CACV4vD,cAAe,WACX,IAAIv6C,EAAS,GACbg6C,EAAQh6C,GACR+5C,EAAgBp6D,KAAKm6D,GACrBA,EAAgB95C,EAChB65C,EAAkB,MAEtBW,iBAAkB,SAAUl1D,GACxBu0D,EAAkBv0D,GAEtBm1D,YAAa,WACTX,EAAgBC,EAAgBr3D,OAEpCg4D,aAAc,WACV,IAAI/8C,EAAQ,GACZq8C,EAAQr8C,GACRo8C,EAAgBp6D,KAAKm6D,GACrBA,EAAgBn8C,EAChBk8C,EAAkB,MAEtBc,WAAY,WACRb,EAAgBC,EAAgBr3D,OAEpCk4D,eAAgBZ,EAChBhxD,QAAS,SAAUskD,EAAOxuC,EAAQjlB,GAC9B+/D,EAAOj6D,KAAK,CAAE2tD,MAAOA,EAAOxuC,OAAQA,EAAQjlB,OAAQA,MAGvC0E,GACdu7D,EAAc,IGnLrBx1D,GAAEnL,EACFM,GAAIF,ECDRuiE,GAAiB,WAEb,IAAIC,EAAwBniE,MAAMoiE,kBAClCpiE,MAAMoiE,kBAAoB,SAAU56D,EAAGwS,GAAS,OAAOA,GACvD,IAAIA,GAAS,IAAIha,OAASga,MAE1B,OADAha,MAAMoiE,kBAAoBD,EACnBnoD,EAAM,GAAGqoD,yBCJhBC,GAIAC,GAIAC,GAGAC,GAuCAC,GAEAC,SCtDA9iE,GAAIF,4BDEJ2iE,GAAiC,UAArB3gE,QAAQihE,SAIpBL,GACA,qEAGAC,GACA,iEAEAC,GAAQ,IAgBN37D,MAAQ,SAAS+7D,GACrB,GAA0B,iBAAfA,EACT,MAAM,IAAIxiE,UACN,uDAAyDwiE,GAG/D,IAnBsBC,EAElBp+C,EACAq+C,EACA7hB,EAEA8hB,EAaAC,GAnBkBH,EAmBQD,EAjB1Bn+C,EAAS69C,GAAcn3D,KAAK03D,GAC5BC,GAAUr+C,EAAO,IAAM,KAAOA,EAAO,IAAM,IAC3Cw8B,EAAOx8B,EAAO,IAAM,GAEpBs+C,EAAUR,GAAYp3D,KAAK81C,GAIxB,CAAC6hB,EAHEC,EAAQ,GACHA,EAAQ,GACbA,EAAQ,KAWlB,IAAKC,GAAgC,IAApBA,EAAShjE,OACxB,MAAM,IAAII,UAAU,iBAAmBwiE,EAAa,KAEtD,MAAO,CACL1gD,KAAM8gD,EAAS,GACf/Z,IAAK+Z,EAAS,GAAKA,EAAS,GAAG3iE,MAAM,GAAI,GACzC4iE,KAAMD,EAAS,GACflW,IAAKkW,EAAS,GACdv3D,KAAMu3D,EAAS,GAAG3iE,MAAM,EAAG2iE,EAAS,GAAGhjE,OAASgjE,EAAS,GAAGhjE,UAQ5DyiE,GACA,iEACAC,GAAQ,IAQN77D,MAAQ,SAAS+7D,GACrB,GAA0B,iBAAfA,EACT,MAAM,IAAIxiE,UACN,uDAAyDwiE,GAG/D,IAXsBC,EAWlBG,GAXkBH,EAWQD,EAVvBH,GAAYt3D,KAAK03D,GAAUxiE,MAAM,IAWxC,IAAK2iE,GAAgC,IAApBA,EAAShjE,OACxB,MAAM,IAAII,UAAU,iBAAmBwiE,EAAa,KAMtD,OAJAI,EAAS,GAAKA,EAAS,IAAM,GAC7BA,EAAS,GAAKA,EAAS,IAAM,GAC7BA,EAAS,GAAKA,EAAS,IAAM,GAEtB,CACL9gD,KAAM8gD,EAAS,GACf/Z,IAAK+Z,EAAS,GAAKA,EAAS,GAAG3iE,MAAM,GAAI,GACzC4iE,KAAMD,EAAS,GACflW,IAAKkW,EAAS,GACdv3D,KAAMu3D,EAAS,GAAG3iE,MAAM,EAAG2iE,EAAS,GAAGhjE,OAASgjE,EAAS,GAAGhjE,UAM9DkjE,GADEb,GACeG,GAAM37D,MAEN67D,GAAM77D,SAEF67D,GAAM77D,MAA7Bq8D,GAAeR,MAAfS,MACuBX,GAAM37D,MAA7Bq8D,GAAeV,MAAfY,GC3FA,IAAIv8D,GAAQjH,GAAKiH,6BAEbw8D,GAAqB,SAA4BC,EAAeC,GAChE,IAAIxb,EAAS,IACR,eAAgBlmD,KAAKyhE,GACtBvb,EAAS,GACD,QAASlmD,KAAKyhE,KACtBvb,EAAS,QAKb,IAFA,IAAI5qB,EAAQ,CAACmmC,GACTE,EAAS38D,GAAMy8D,GACZE,EAAOva,MAAQ9rB,EAAMA,EAAMn9B,OAAS,IACvCm9B,EAAMr3B,KAAK09D,EAAOva,KAClBua,EAAS38D,GAAM28D,EAAOva,KAG1B,OAAO9rB,EAAMsoB,QAAO,SAAUge,EAAMC,GAChC,OAAOD,EAAKxyD,OAAOsyD,EAAQl+D,KAAI,SAAUs+D,GACrC,OAAO/jE,GAAKuK,QAAQ49C,EAAQ2b,EAAOC,SAExC,KAGPC,GAAiB,SAA0B/6B,EAAOg7B,EAAMC,GACpD,IAAIP,EAAUM,GAAQA,EAAKE,gBACrB,GAAG9yD,OAAO4yD,EAAKE,iBACf,CAAC,gBAEP,GAAIF,GAA8B,mBAAfA,EAAK1mC,MACpB,OAAO0mC,EAAK1mC,MACR2mC,EACAj7B,GACA,WAAc,OAAOw6B,GAAmBx6B,EAAO06B,KAC/CM,GAIR,IAAIJ,EAAOJ,GAAmBx6B,EAAO06B,GACrC,OAAOM,GAAQA,EAAK1mC,MAAQsmC,EAAKxyD,OAAO4yD,EAAK1mC,OAASsmC,UCxC1DO,GAAiB,SAAUz7D,EAAGs7D,GAQ1B,OAAOA,GAAQ,cCRfv9C,GAAW5kB,QAAQuiE,UAAYviE,QAAQuiE,SAASzrD,MAAQ9W,QAAQuiE,SAASzrD,KAAKpT,MAAM,MAAS,GAEjG,SAAS8+D,GAAkBC,GAKvB,IAJA,IAAIC,EAAQD,EAAU/+D,MAAM,KACxBi/D,EAAKD,EAAMpkE,OAAS,EAAIokE,EAAM,GAAK,IACnCE,GAAgBF,EAAMpkE,OAAS,EAAIokE,EAAM,GAAKA,EAAM,IAAIh/D,MAAM,KAEzD3F,EAAI,EAAGA,EAAI,IAAKA,EAAG,CACxB,IAAI8kE,EAAMhjE,OAAO+kB,GAAQ7mB,IAAM,GAC3B+kE,EAAMjjE,OAAO+iE,EAAa7kE,IAAM,GACpC,GAAI8kE,IAAQC,EAGZ,MAAW,MAAPH,EACOE,EAAMC,EACC,OAAPH,GACAE,GAAOC,EAKtB,MAAc,OAAPH,EAGX,SAASI,GAAa98D,GAClB,IAAI+8D,EAAa/8D,EAAMvC,MAAM,UAC7B,GAA0B,IAAtBs/D,EAAW1kE,OAAgB,OAAO,EACtC,IAAK,IAAIP,EAAI,EAAGA,EAAIilE,EAAW1kE,SAAUP,EACrC,IAAKykE,GAAkBQ,EAAWjlE,IAAO,OAAO,EAEpD,OAAO,EAGX,SAASklE,GAAgBC,GACrB,GAA8B,kBAAnBA,EAAgC,OAAOA,EAClD,GAAIA,GAA4C,iBAAnBA,EAA6B,CACtD,IAAK,IAAInlE,EAAI,EAAGA,EAAImlE,EAAe5kE,SAAUP,EACzC,GAAIglE,GAAaG,EAAenlE,IAAO,OAAO,EAElD,OAAO,EAEX,OAAOglE,GAAaG,UCzCxBC,GAAiBv5D,KAAKzE,MAAM,4wDD8C5B,IAAIi+D,GAAO,GACX,IAAK,IAAIC,MAATF,GACQ7mE,OAAOgD,UAAUC,eAAeC,KAAhC2jE,GAA2CE,MAC3CD,GAAKC,IAAOJ,GAAgBE,GAAKE,MAGzCC,GAAiBF,GElDjBG,GAAiB,SAAgB18D,GAC7B,OAAOvK,OAAOgD,UAAUC,eAAeC,KAAhC8jE,GAA2Cz8D,IPItD,IAAI28D,GAAaz6D,GAAG06D,UAA0C,mBAAvB16D,GAAG06D,SAASC,OAAwB36D,GAAG06D,SAASC,OAAS36D,GAAG06D,SAE/FE,GAAgB,SAAgB9Z,EAAM+Z,GACtC76D,GAAG86D,KAAKha,GAAM,SAAU7xC,EAAK6rD,GACzB,OAAK7rD,EAGY,WAAbA,EAAI8yC,MAAkC,YAAb9yC,EAAI8yC,KAA2B8Y,EAAG,MAAM,GAC9DA,EAAG5rD,GAHC4rD,EAAG,KAAMC,EAAKC,UAAYD,EAAKE,cAO9CC,GAAe,SAAqBzc,EAAKqc,GACzC76D,GAAG86D,KAAKtc,GAAK,SAAUvvC,EAAK6rD,GACxB,OAAK7rD,EAGY,WAAbA,EAAI8yC,MAAkC,YAAb9yC,EAAI8yC,KAA2B8Y,EAAG,MAAM,GAC9DA,EAAG5rD,GAHC4rD,EAAG,KAAMC,EAAKI,mBAO7BC,GAAkB,SAAkBr9D,EAAG+8D,GACvCJ,GAAW38D,GAAG,SAAUs9D,EAAaC,GAC7BD,GAAoC,WAArBA,EAAYrZ,KAAmB8Y,EAAGO,GAChDP,EAAG,KAAMO,EAAct9D,EAAIu9D,OAIpCC,GAAgB,SAAuBZ,EAAU58D,EAAGs7D,EAAMyB,GACtDzB,IAAkC,IAA1BA,EAAKmC,iBACbb,EAAS58D,EAAG+8D,GAEZA,EAAG,KAAM/8D,KAYjB09D,GAAiB,SAAiB19D,EAAG7D,EAASwpC,GAC1C,IAAIo3B,EAAKp3B,EACL21B,EAAOn/D,EAKX,GAJuB,mBAAZA,IACP4gE,EAAKzB,EACLA,EAAO,IAEM,iBAANt7D,EAAgB,CACvB,IAAImR,EAAM,IAAItZ,UAAU,0BACxB,OAAOsB,QAAQwkE,UAAS,WACpBZ,EAAG5rD,MAMX,IAAI8rD,GAFJ3B,EAAOG,GAAiBz7D,EAAGs7D,IAET2B,QAAUH,GACxBM,EAAc9B,EAAK8B,aAAeD,GAClC5kE,EAAW+iE,EAAK/iE,UAAY2J,GAAG3J,SAC/BqkE,EAAWtB,EAAKsB,UAAYS,GAC5BO,EAAkBtC,EAAKsC,gBAEvBC,EAAavC,EAAKuC,YAAc,CAAC,OACjCC,EAAUxC,EAAKwC,SAAWzmE,GAAK+rD,QAAQsW,MACvCruD,EAASiwD,EAAKhB,UAAYwD,EAE9BxC,EAAK1mC,MAAQ0mC,EAAK1mC,OAAS,GAG3B,IAYI47B,EAZAuK,EAAgB1jE,GAAKuK,QAAQk8D,GAwCjC,SAASC,EAAO5sD,EAAKxV,EAAGqiE,GAChB7sD,EAAK4rD,EAAG5rD,GACHxV,EAAGohE,EAAG,KAAMphE,EAAGqiE,GACnBC,EAAgBzN,GAAK,SAAUr/C,EAAKtT,EAAGmgE,GACxC,GAAI7sD,EAAK4rD,EAAG5rD,QACP,GAAItT,EACL2/D,GAAcZ,EAAU/+D,EAAGy9D,GAAM,SAAUnqD,EAAK+sD,GACxC/sD,EACA4rD,EAAG5rD,GAEH4rD,EAAG,KAAMmB,EAAOF,UAGrB,CACH,IAAIG,EAAc,IAAI3mE,MAAM,uBAAyBwI,EAAI,WAAaqL,EAAS,KAC/E8yD,EAAYla,KAAO,mBACnB8Y,EAAGoB,OAKf,SAASC,EAAWp+D,EAAGq+D,EAAY14B,GAC/B,IAAI24B,EAAoBD,EACpBtB,EAAKp3B,EACwB,mBAAtB24B,IACPvB,EAAKuB,EACLA,OAAoBtwD,GAMxB,SAASuwD,EAAKC,EAAMx+D,EAAGy+D,GACnB,GAAoB,IAAhBD,EAAK/mE,OAAc,OAAOslE,EAAG,UAAM/uD,EAAWywD,GAClD,IAAIzb,EAAOhjD,EAAIw+D,EAAK,GAEhBR,EAAMS,EACNT,EAAKU,EAAM,KAAMV,GAChBW,EAAQtnE,GAAK+rD,QAAQJ,GAAO0b,GAEjC,SAASA,EAAMvtD,EAAKytD,EAAMle,GAEtB,GADAsd,EAAMY,EACFztD,EAAK,OAAO4rD,EAAG5rD,GACnB,GAAIuvC,GAAOsd,GAAO1C,EAAKuD,WAAY,CAC/B,IAAIC,EAAQznE,GAAK0nE,SAASre,EAAKsC,GAC3Bgc,EAAMF,EAAMhnE,MAAM,EAAGgnE,EAAMrnE,OAAS+mE,EAAK,GAAG/mE,QAC5Cb,EAAI0kE,EAAKuD,WAAWb,EAAKh+D,EAAGg/D,GAChC,GAAIpoE,EAAG,OAAO2nE,EACV,CAAC,IAAI71D,OAAOm1D,EAAW/lE,SACvBT,GAAKuK,QAAQ8+C,EAAK9pD,GAClBonE,GAGRf,EAAOja,EAAMic,GAEjB,SAASA,EAAK9tD,EAAK+tD,GACf,OAAI/tD,EAAY4rD,EAAG5rD,GACf+tD,EAAWnC,EAAG,KAAM/Z,EAAMgb,QAC9BO,EAAKC,EAAK1mE,MAAM,GAAIkI,EAAGg+D,IA5B/BO,CADW,CAAC,IAAI71D,OAAOm1D,GACZ79D,EAAGs+D,GAiClB,SAASK,EAAQje,EAAKqc,GAClB,MAAY,KAARrc,GAAsB,MAARA,GACO,UAArBvnD,QAAQihE,UAAyB,cAAe9gE,KAAKonD,IAGpD,2BAA4BpnD,KAAKonD,GAJAqc,EAAG,WAMzCS,GAAcZ,EAAUlc,EAAK4a,GAAM,SAAU6D,EAAWC,GACpD,GAAID,EAAW,OAAOR,EAAQtnE,GAAK+rD,QAAQ1C,GAAMqc,GACjD,IAAIsC,EAAUhoE,GAAK4F,KAAKmiE,EAAQ,gBAChCnC,EAAOoC,GAAS,SAAUluD,EAAK+tD,GAE3B,IAAKA,EAAI,OAAOP,EAAQtnE,GAAK+rD,QAAQ1C,GAAMqc,GAE3CxkE,EAAS8mE,GAAS,SAAUluD,EAAK45C,GACzB55C,GAAK4rD,EAAG5rD,GACZ,IAAM,IAAI6sD,EAAMj7D,KAAKzE,MAAMysD,GAAS,MAAOuU,IAEvCtB,GAAO1C,EAAKiE,gBACZvB,EAAM1C,EAAKiE,cAAcvB,EAAKqB,IAElCtC,EAAG,KAAMiB,EAAKtd,YAM9B,SAASud,EAAgBj+D,EAAGw/D,EAAwB75B,GAChD,IAAIo3B,EAAKp3B,EACL85B,EAAOD,EACS,mBAATC,IACP1C,EAAK0C,EACLA,EAAOnE,EAAKoE,SAGhBlC,GAAcZ,EAAU58D,EAAGs7D,GAAM,SAAU6D,EAAWC,GAClD,GAAID,EAAW,OAAOpC,EAAGoC,GACzB,IAAIE,EAAUhoE,GAAK4F,KAAKmiE,EAAQ,gBAChCnC,EAAOoC,GAAS,SAAUluD,EAAK+tD,GAC3B,OAAI/tD,EAAY4rD,EAAG5rD,GACd+tD,OAEL3mE,EAAS8mE,GAAS,SAAUluD,EAAK45C,GAC7B,GAAI55C,EAAK,OAAO4rD,EAAG5rD,GACnB,IACI,IAAI6sD,EAAMj7D,KAAKzE,MAAMysD,GACvB,MAAOuU,IAMT,GAJItB,GAAO1C,EAAKiE,gBACZvB,EAAM1C,EAAKiE,cAAcvB,EAAKqB,IAG9BrB,GAAOA,EAAI2B,KAAM,CACjB,GAAwB,iBAAb3B,EAAI2B,KAAmB,CAC9B,IAAIC,EAAY,IAAI/nE,UAAU,YAAcmmE,EAAI96D,KAAO,6BAEvD,OADA08D,EAAU3b,KAAO,uBACV8Y,EAAG6C,GAiBd,MAfiB,MAAb5B,EAAI2B,MAA6B,OAAb3B,EAAI2B,OACxB3B,EAAI2B,KAAO,cAEfvB,EAAW/mE,GAAKuK,QAAQ5B,EAAGg+D,EAAI2B,MAAO3B,GAAK,SAAU7sD,EAAKxV,EAAGqiE,GACzD,OAAI7sD,EAAY4rD,EAAG5rD,GACfxV,EAAUohE,EAAG,KAAMphE,EAAGqiE,GACrBA,OAGLC,EADU5mE,GAAKuK,QAAQ5B,EAAGg+D,EAAI2B,MACT3B,GAAK,SAAU7sD,EAAK/Z,EAAG4mE,GACxC,OAAI7sD,EAAY4rD,EAAG5rD,GACf/Z,EAAU2lE,EAAG,KAAM3lE,EAAG4mE,QAC1BI,EAAW/mE,GAAK4F,KAAK+C,EAAG,SAAUg+D,EAAKjB,MAN1BqB,EAAW/mE,GAAK4F,KAAK+C,EAAG,SAAUg+D,EAAKjB,MAYhEqB,EAAW/mE,GAAK4F,KAAK+C,EAAG,UAAWg+D,EAAKjB,MApC5BqB,EAAW/mE,GAAK4F,KAAK+C,EAAG,SAAUy/D,EAAM1C,SA0CpE,SAAS8C,EAAY9C,EAAI7B,GACrB,GAAoB,IAAhBA,EAAKzjE,OAAc,OAAOslE,EAAG,UAAM/uD,GACvC,IAAI0yC,EAAMwa,EAAK,GAUf,SAAS6C,EAAO5sD,EAAKxV,EAAGqiE,GACpB,OAAI7sD,EAAY4rD,EAAG5rD,GACfxV,EAAUohE,EAAG,KAAMphE,EAAGqiE,QAC1BC,EAAgBvd,EAAK4a,EAAKoE,QAASI,GAGvC,SAASA,EAAM3uD,EAAK/Z,EAAG4mE,GACnB,OAAI7sD,EAAY4rD,EAAG5rD,GACf/Z,EAAU2lE,EAAG,KAAM3lE,EAAG4mE,QAC1B6B,EAAY9C,EAAI7B,EAAKpjE,MAAM,IAjB/BslE,EAAY/lE,GAAK+rD,QAAQ1C,IAEzB,SAAevvC,EAAK4uD,GAChB,GAAI5uD,EAAK,OAAO4rD,EAAG5rD,GACnB,IAAK4uD,EAAO,OAAOF,EAAY9C,EAAI7B,EAAKpjE,MAAM,IAC9CsmE,EAAW1d,EAAK4a,EAAKoE,QAAS3B,MAhMtCP,GACIZ,EACA7B,EACAO,GACA,SAAUnqD,EAAK6uD,GACP7uD,EAAK4rD,EAAG5rD,GAMpB,SAAc2sD,GACV,GAAK,0CAA2CxkE,KAAK0G,GACjDwwD,EAAMn5D,GAAKuK,QAAQk8D,EAAS99D,GAClB,MAANA,GAAmB,OAANA,GAA8B,MAAhBA,EAAElI,OAAO,KAAY04D,GAAO,KACtD,MAAOl3D,KAAK0G,IAAMwwD,IAAQsN,EAC3BG,EAAgBzN,EAAK8K,EAAKoE,QAAS3B,GAChCK,EAAW5N,EAAK8K,EAAKoE,QAAS3B,OAClC,CAAA,GAAIrB,GAAO18D,GACd,OAAO+8D,EAAG,KAAM/8D,IA4LxB,SAAyBA,EAAGsgC,EAAOy8B,GAC/B,IAAIkD,EAAQ,WAAc,OAvPP,SAA8BjgE,EAAGsgC,EAAOg7B,GAE/D,IADA,IAAIJ,EAAOG,GAAiB/6B,EAAOg7B,EAAMt7D,GAChC9I,EAAI,EAAGA,EAAIgkE,EAAKzjE,OAAQP,IAC7BgkE,EAAKhkE,GAAKG,GAAK4F,KAAKi+D,EAAKhkE,GAAI8I,GAEjC,OAAOk7D,EAkP8BgF,CAAqBlgE,EAAGsgC,EAAOg7B,IAChEuE,EACI9C,EACAa,EAAkBA,EAAgB59D,EAAGsgC,EAAO2/B,EAAO3E,GAAQ2E,KA/LxDE,CAAgBngE,EAAG89D,GAAS,SAAU3sD,EAAK/Z,EAAG4mE,GACjD,GAAI7sD,EAAK4rD,EAAG5rD,OACP,CAAA,GAAI/Z,EACL,OAAOomE,GAAcZ,EAAUxlE,EAAGkkE,GAAM,SAAUnqD,EAAKivD,GAC/CjvD,EACA4rD,EAAG5rD,GAEH4rD,EAAG,KAAMqD,EAAOpC,MAIxB,IAAIG,EAAc,IAAI3mE,MAAM,uBAAyBwI,EAAI,WAAaqL,EAAS,KAC/E8yD,EAAYla,KAAO,mBACnB8Y,EAAGoB,QA3BFkC,CAAKL,QQxFhBzD,KAANE,GACAiB,GAAM4C,OAAN5D,OCDIx6D,GAAEnL,EACFM,GAAIF,EAKJwlE,GAAaz6D,GAAGq+D,cAAkD,mBAA3Br+D,GAAGq+D,aAAa1D,OAAwB36D,GAAGq+D,aAAa1D,OAAS36D,GAAGq+D,aAE3GzD,GAAgB,SAAgB9Z,GAChC,IACI,IAAIga,EAAO96D,GAAGs+D,SAASxd,GACzB,MAAOrsD,GACL,GAAIA,IAAiB,WAAXA,EAAEstD,MAAgC,YAAXttD,EAAEstD,MAAqB,OAAO,EAC/D,MAAMttD,EAEV,OAAOqmE,EAAKC,UAAYD,EAAKE,UAG7BC,GAAe,SAAqBzc,GACpC,IACI,IAAIsc,EAAO96D,GAAGs+D,SAAS9f,GACzB,MAAO/pD,GACL,GAAIA,IAAiB,WAAXA,EAAEstD,MAAgC,YAAXttD,EAAEstD,MAAqB,OAAO,EAC/D,MAAMttD,EAEV,OAAOqmE,EAAKI,eAGZqD,GAAsB,SAAsBzgE,GAC5C,IACI,OAAO28D,GAAW38D,GACpB,MAAOs9D,GACL,GAAyB,WAArBA,EAAYrZ,KACZ,MAAMqZ,EAGd,OAAOt9D,GAGP0gE,GAAoB,SAA2BH,EAAcvgE,EAAGs7D,GAChE,OAAIA,IAAkC,IAA1BA,EAAKmC,iBACN8C,EAAavgE,GAEjBA,GCxCJoC,eAAeu+D,GAAcC,EAAYC,GAC5C,MAAMC,UAAEA,GAAc3nE,QAAQC,IACxB2nE,EAAaF,EAAF,MACXG,QAiCV5+D,eAA6BohC,EAAI83B,GAC7B,OAAO,IAAIljE,SAAQ,CAACwJ,EAASo2C,IAAWipB,GAAQz9B,EAAI83B,GAAM,CAACnqD,EAAK+K,KACxD/K,EACA6mC,EAAO7mC,GAGPvP,EAAQsa,QAvCWglD,CAAe,kBAAiBH,EAAW,CAClEjD,QAASzmE,EAAK+rD,QAAQwd,GACtBhsC,WAAqB5mB,IAAd8yD,EAA0BA,EAAUjkE,MAAMxF,EAAK8pE,gBAAanzD,IACpEkD,OAAM9O,UAEL,MAAMg/D,QAoFdh/D,eAA0BghD,GACtB,MAAMd,QAxBVlgD,eAAiCi/D,GAC7B,IAAIvD,EAAUuD,EACVh2D,EAAShU,EAAK+rD,QAAQ0a,GAC1B,KAAOA,IAAYzyD,GAAQ,CACvB,MAAMi3C,QAAmBgf,GAAexD,EAAS,CAC7C,CAAC,yBACD,CAAC,QAAS,wBACV,CAAC,UAAW,mBAEhB,QAAmB9vD,IAAfs0C,EACA,MAAO,CAAEwb,QAAAA,EAASxb,WAAAA,GACtBwb,EAAUzyD,EACVA,EAAShU,EAAK+rD,QAAQ0a,IAYDyD,CAAkBne,GAC3C,GAAId,EACA,IACI,MAAMkf,EAAqBC,SA1CvCr/D,eAA0BxJ,GACtB,OAAO,IAAIR,SAAQ,CAACwJ,EAASo2C,IAAW91C,EAAG3J,SAASK,GAAG,CAACsyD,EAAOp4B,KACvDo4B,EACAlT,EAAOkT,GAEPtpD,EAAQkxB,EAAKt6B,SAAS,eAqCuBkpE,CAAWpf,EAAWA,aACnE,IAAIqf,EACJ,GAZY,iBAFA3hE,EAcOwhE,IAZW,OAANxhE,GAAoC,iBAAfA,EAAE2hE,SAa3CA,EAAWH,EAAmBG,aAE7B,CAAA,IAbjB,SAA8B3hE,GAE1B,MAAoB,iBAANA,GAAwB,OAANA,GAA8C,iBAAzBA,EAAE,mBAWtC4hE,CAAqBJ,GAM1B,OAHAG,EAAWtqE,EAAK+rD,QAAQoe,EAAmB,oBAK/C,OAAOnqE,EAAKwqE,WAAWF,GAAYA,EAAWtqE,EAAK4F,KAAKqlD,EAAWwb,QAAS6D,GAEhF,MAAOhrE,GACHs0D,QAAQ4F,KAAKl6D,GA5BzB,IAAwBqJ,EA5EU8hE,CAAWzqE,EAAK+rD,QAAQwd,IAClD,QAAoB5yD,IAAhBozD,EAA2B,CAC3B,MAAMW,EAAU1qE,EAAK4F,KAAKmkE,EAAa,MAAOL,GAE9C,SADqBiB,GAASD,GAE1B,OAAOA,EAGf,MAAMJ,EAAWt/D,KAAKkgD,OAAOxsD,IAAI,4BACjC,GAAI4rE,EAAU,CACV,MAAMI,EAAU1qE,EAAK4F,KAAK0kE,EAAU,MAAOZ,GAE3C,SADqBiB,GAASD,GAE1B,OAAOA,EAIf,OADoBxqE,QAAQqK,QAAS,kBAAiBm/D,MAGpDkB,EAAc5qE,EAAKuK,QAAQo/D,EAAc,sBAG/C,MAAO,CACH/kE,QAFY1E,QAAQ0qE,GAAahmE,QAGjCimE,UAAWlB,GFjCnBtD,GAAMyE,KCoDW,SAAqBniE,EAAG7D,GACrC,GAAiB,iBAAN6D,EACP,MAAM,IAAInI,UAAU,0BAExB,IAAIyjE,EAAOG,GAAiBz7D,EAAG7D,GAE3B8gE,EAAS3B,EAAK2B,QAAUH,GACxBsF,EAAe9G,EAAK8G,cAAgBlgE,GAAGkgE,aACvChF,EAAc9B,EAAK8B,aAAeD,GAClCoD,EAAejF,EAAKiF,cAAgBE,GACpC7C,EAAkBtC,EAAKsC,gBAEvBC,EAAavC,EAAKuC,YAAc,CAAC,OACjCC,EAAUxC,EAAKwC,SAAWzmE,GAAK+rD,QAAQsW,MACvCruD,EAASiwD,EAAKhB,UAAYwD,EAE9BxC,EAAK1mC,MAAQ0mC,EAAK1mC,OAAS,GAG3B,IAAImmC,EAAgB2F,GAAkBH,EAAclpE,GAAKuK,QAAQk8D,GAAUxC,GAE3E,GAAK,0CAA2ChiE,KAAK0G,GAAI,CACrD,IAAIwwD,EAAMn5D,GAAKuK,QAAQm5D,EAAe/6D,GAC5B,MAANA,GAAmB,OAANA,GAA8B,MAAhBA,EAAElI,OAAO,KAAY04D,GAAO,KAC3D,IAAI70D,EAAI0mE,EAAe7R,IAAQ8R,EAAoB9R,GACnD,GAAI70D,EAAG,OAAO+kE,GAAkBH,EAAc5kE,EAAG2/D,OAC9C,CAAA,GAAIoB,GAAO18D,GACd,OAAOA,EAEP,IAAI5I,EA4FR,SAA6B4I,EAAGsgC,GAI5B,IAHA,IAAI2/B,EAAQ,WAAc,OAlIP,SAA8BjgE,EAAGsgC,EAAOg7B,GAE/D,IADA,IAAIJ,EAAOG,GAAiB/6B,EAAOg7B,EAAMt7D,GAChC9I,EAAI,EAAGA,EAAIgkE,EAAKzjE,OAAQP,IAC7BgkE,EAAKhkE,GAAKG,GAAK4F,KAAKi+D,EAAKhkE,GAAI8I,GAEjC,OAAOk7D,EA6H8BgF,CAAqBlgE,EAAGsgC,EAAOg7B,IAC5DJ,EAAO0C,EAAkBA,EAAgB59D,EAAGsgC,EAAO2/B,EAAO3E,GAAQ2E,IAE7D/oE,EAAI,EAAGA,EAAIgkE,EAAKzjE,OAAQP,IAAK,CAClC,IAAIwpD,EAAMwa,EAAKhkE,GACf,GAAIkmE,EAAY/lE,GAAK+rD,QAAQ1C,IAAO,CAChC,IAAI/kD,EAAI0mE,EAAe3hB,GACvB,GAAI/kD,EAAG,OAAOA,EACd,IAAIvE,EAAIkrE,EAAoB5hB,GAC5B,GAAItpD,EAAG,OAAOA,IAtGdmrE,CAAoBviE,EAAG+6D,GAC/B,GAAI3jE,EAAG,OAAOspE,GAAkBH,EAAcnpE,EAAGkkE,GAGrD,IAAInqD,EAAM,IAAI3Z,MAAM,uBAAyBwI,EAAI,WAAaqL,EAAS,KAEvE,MADA8F,EAAI8yC,KAAO,mBACL9yC,EAEN,SAASkxD,EAAeriE,GACpB,IAAIg+D,EAAMW,EAAQtnE,GAAK+rD,QAAQpjD,IAE/B,GAAIg+D,GAAOA,EAAItd,KAAOsd,EAAIA,KAAO1C,EAAKuD,WAAY,CAC9C,IAAIC,EAAQznE,GAAK0nE,SAASf,EAAItd,IAAK1gD,GAC/BpJ,EAAI0kE,EAAKuD,WAAWb,EAAIA,IAAKh+D,EAAG8+D,GAChCloE,IACAoJ,EAAI3I,GAAKuK,QAAQo8D,EAAItd,IAAK9pD,IAIlC,GAAIqmE,EAAOj9D,GACP,OAAOA,EAGX,IAAK,IAAI9I,EAAI,EAAGA,EAAI2mE,EAAWpmE,OAAQP,IAAK,CACxC,IAAI8rD,EAAOhjD,EAAI69D,EAAW3mE,GAC1B,GAAI+lE,EAAOja,GACP,OAAOA,GAKnB,SAAS2b,EAAQje,GACb,GAAY,KAARA,GAAsB,MAARA,KACO,UAArBvnD,QAAQihE,UAAyB,cAAe9gE,KAAKonD,IAGpD,2BAA4BpnD,KAAKonD,IAAtC,CAEA,IAAI2e,EAAUhoE,GAAK4F,KAAKyjE,GAAkBH,EAAc7f,EAAK4a,GAAO,gBAEpE,IAAK2B,EAAOoC,GACR,OAAOV,EAAQtnE,GAAK+rD,QAAQ1C,IAGhC,IAAIqK,EAAOqX,EAAa/C,GAExB,IACI,IAAIrB,EAAMj7D,KAAKzE,MAAMysD,GACvB,MAAOuU,IAOT,OALItB,GAAO1C,EAAKiE,gBAEZvB,EAAM1C,EAAKiE,cAAcvB,EAAkBtd,IAGxC,CAAEsd,IAAKA,EAAKtd,IAAKA,IAG5B,SAAS4hB,EAAoBtiE,GACzB,IAAIq/D,EAAUhoE,GAAK4F,KAAKyjE,GAAkBH,EAAcvgE,EAAGs7D,GAAO,iBAClE,GAAI2B,EAAOoC,GAAU,CACjB,IACI,IAAItU,EAAOqX,EAAa/C,EAAS,QAC7BrB,EAAMj7D,KAAKzE,MAAMysD,GACvB,MAAOp0D,IAOT,GALIqnE,GAAO1C,EAAKiE,gBAEZvB,EAAM1C,EAAKiE,cAAcvB,EAAkBh+D,IAG3Cg+D,GAAOA,EAAI2B,KAAM,CACjB,GAAwB,iBAAb3B,EAAI2B,KAAmB,CAC9B,IAAIC,EAAY,IAAI/nE,UAAU,YAAcmmE,EAAI96D,KAAO,6BAEvD,MADA08D,EAAU3b,KAAO,uBACX2b,EAEO,MAAb5B,EAAI2B,MAA6B,OAAb3B,EAAI2B,OACxB3B,EAAI2B,KAAO,SAEf,IACI,IAAIhkE,EAAI0mE,EAAehrE,GAAKuK,QAAQ5B,EAAGg+D,EAAI2B,OAC3C,GAAIhkE,EAAG,OAAOA,EACd,IAAIvE,EAAIkrE,EAAoBjrE,GAAKuK,QAAQ5B,EAAGg+D,EAAI2B,OAChD,GAAIvoE,EAAG,OAAOA,EAChB,MAAOT,MAIjB,OAAO0rE,EAAehrE,GAAK4F,KAAK+C,EAAG,sBDxK3C09D,IE6CAt7D,eAAe4/D,GAASppE,GACpB,OAAO,IAAIR,SAASwJ,GAAYM,EAAG7J,OAAOO,EAAGsJ,EAAGsgE,UAAUC,MAAOtxD,IAEzDvP,GADAuP,QAcZ/O,eAAek/D,GAAexD,EAAS4E,GACnC,IAAK,MAAMC,KAAWD,EAAU,CAC5B,MAAMpgB,EAAajrD,EAAK4F,KAAK6gE,KAAY6E,GACzC,SAAUX,GAAS1f,GACf,OAAOA,GC9DZ,MAAMsgB,GACT9mE,YAAYg0D,GACR5zD,KAAK4zD,gBAAkBA,EACvB5zD,KAAK2mE,QAAU,IAAIx5D,IACnBnN,KAAK4mE,gBAAkB,IAAIz5D,IAC3BnN,KAAK+2D,QAAU,IAAIC,EACnBh3D,KAAKuuD,cAAgB,IAAIC,EACzBxuD,KAAK6mE,4BAA8B1gE,KAAKkgD,OAAOxsD,IAAI,mBAC9CgtE,4BAGL7mE,KAAK2M,GAAK3M,KAAK+2D,QAAQpqD,GAAGqD,KAAKhQ,KAAK+2D,SACpC/2D,KAAK8mE,kBAAoB,CAACC,EAAYx4B,IAAUvuB,IAC5C,MAAMooC,GA0DMyG,EA1DoB7uC,IA4DzB6uC,EAAKmY,aAAenY,EAAKzI,WA5DUpmC,EAAOomC,WAAapmC,EAAO8mC,KA0DjF,IAAwB+H,EAzDRzG,GACApoD,KAAK+2D,QAAQM,KAAK,cAAe,CAC7B9oB,KAAAA,EACAw4B,WAAAA,EACA3e,SAAAA,EACA6e,YAAajnD,EAAOinD,eAKpCla,gCACU/sD,KAAK4zD,gBAAgB,sBAAsB,IAAM13D,QAAQuK,IAAIF,MAAMglD,KAAKvrD,KAAKknE,iBAAiBtmE,KAAK+tD,GAAWA,EAAOwY,qBAE/Hpa,UAAUqa,GACN,MAAMC,EAAOrnE,KAAK4mE,gBAAgB/sE,IAAIutE,GACtC,GAAIC,EACA,OAAOA,EACX,MAAM1Y,EAAS3uD,KAAKsnE,KAAKF,GACzBpnE,KAAK4mE,gBAAgB7jE,IAAIqkE,EAAWzY,GACpC,IACI,aAAaA,EAEjB,MAAOl0D,GAEH,MADAuF,KAAK4mE,gBAAgB/xD,OAAOuyD,GACtB3sE,GAGd4wD,UACIrrD,KAAK+2D,QAAQ1L,UACbrrD,KAAKuuD,cAAclD,UACnBrrD,KAAK4mE,gBAAgBn1D,QACrBzR,KAAK2mE,QAAQl1D,QAEjBs7C,WAAWqa,GACP,MAAMpB,UAAEA,EAAFjmE,QAAaA,SAAkBwnE,GAAcH,EAAW,YACxDI,EAAexnE,KAAK6mE,4BACpBxhB,EAAGoiB,eAAeL,GAAY7nE,GAAM8lD,EAAG0B,IAAI2gB,WAAWnoE,UACtDuS,EACN,IAAI61D,EAAc3nE,KAAK2mE,QAAQ9sE,IAAImsE,GAC9B2B,IACDA,EAAc,IAAIx6D,IAClBnN,KAAK2mE,QAAQ5jE,IAAIijE,EAAW2B,IAEhC,MAAMhZ,EAASgZ,EAAY9tE,IAAI2tE,GAC/B,GAAI7Y,EACA,OAAOA,EACX,MAAMiZ,EAAY,IAAAC,GAAW7B,EAAWjmE,EAASC,KAAK4zD,iBAGtD,OAFA+T,EAAY5kE,IAAIykE,EAAcI,GAC9B5nE,KAAKuuD,cAAcxnD,IAAI6gE,EAAUj7D,GAAG,iBAAkB3M,KAAK8mE,kBAAkBd,EAAW,mBAAoB4B,EAAUj7D,GAAG,eAAgB3M,KAAK8mE,kBAAkBd,EAAW,iBAAkB4B,EAAUj7D,GAAG,aAAc3M,KAAK8mE,kBAAkBd,EAAW,eAAgB4B,EAAUj7D,GAAG,iBAAkB3M,KAAK8mE,kBAAkBd,EAAW,oBACpU4B,EAEX7a,iBACI,IAAK,MAAM4a,KAAe3nE,KAAK2mE,QAAQpmD,eAC5BonD,EAAYpnD,UC1ExB,SAASunD,GAAyBpZ,GACrC,MAAO,CACHqZ,cAAeC,KACfC,SAAU,IACVlb,gBAAgB/D,EAAQ1K,GACpB,IAAKkR,GAA2BxG,GAC5B,OACJ,MAAMkf,EAAWC,GAAoBnf,EAAQ1K,GAC7C,IAAK4pB,EACD,OACJ,MAAMvZ,QAAeD,EAAUwZ,EAASphB,MAClC9mC,QAAe2uC,EAAOC,QAAQ,qBAAsB,IACnDsZ,EACHE,cAAe,CAACF,EAASphB,QAE7B,OAAK9mC,EAAO6uC,KAELtoD,MAAMglD,KAIzB,UAAmBzE,EAAMlwB,GACrB,IAAK,MAAMyxC,KAAYzxC,EACfyxC,EAASvhB,OAASA,UAEfuhB,EAASC,eAAe1nE,IAAxB2nE,KAReC,CAASN,EAASphB,KAAM9mC,EAAO6uC,YAFjD,IChBL3oD,eAAeuiE,GAAc7xC,EAAM8xC,EAAMC,GAC5C,QAAa72D,IAAT8kB,EACA,OAAO,KACX,MAAMi3B,EAAQ6a,EAAK38D,IAAI,MAAO,CAAEc,UAAW,wCACvC+pB,EAAKi3B,KAkBb,SAA6B6a,EAAMr8D,GAC/B,YAAayF,IAATzF,EACO,KACJq8D,EAAK38D,IAAI,OAAQ,CAAEc,UAAW,kDAAoDR,GApBrFu8D,CAAoBhyC,EAAKm3B,gBAEvB8a,EAAOjyC,EAAKiyC,KACZjyC,EAAKiyC,KAAKjoE,KAAKoL,IACb,MAAM88D,EAAW,wFACmC98D,EAAIhF,KACxD,OAAQ0hE,EAAK38D,IAAI,MAAO,CAAEc,UAAWi8D,GACjCJ,EAAK38D,IAAI,OAAQ,CAAEc,UAAW,gDAAkDb,EAAIhF,MAepG,SAAuB0hE,EAAMK,GACzB,QAAgBj3D,IAAZi3D,EACA,OAAO,KACX,MAAM,CAAGC,EAAWC,GAAc,mBAAmBviE,KAAKqiE,GAC1D,OAAQL,EAAK38D,IAAI,OAAQ,CAAEc,UAAW,gDAClC67D,EAAK38D,IAAI,OAAQ,CAAEc,UAAW,2DAA6Dm8D,GAC3FC,GApBQC,CAAcR,EAAM18D,EAAIK,UAE9B,KACA88D,EAAQT,EAAK38D,IAAI,MAAO,CAAEc,UAAW,uCACvC+pB,EAAK+wB,cACLkhB,GACEO,EAAWxyC,EAAKyyC,cAAc9lE,QAAQ,cAAe,IAC3D,MAAO,OAAOolE,EAAaS,GAAWvb,EAAMsb,GChBhD,MAAMG,GAAuBrnE,OAAOsnE,IAAI,iBAClCb,GAAO,CACT38D,IAAG,CAACwiC,EAAMtiC,KAAUC,IACZA,EAAS3Q,OAAS,EACX,CACHiuE,SAAUF,GACV/6B,KAAAA,EACA3/B,IAAK,KACL3C,MAAO,IAAKA,EAAOC,SAAAA,IAIhB,CACHs9D,SAAUF,GACV/6B,KAAAA,EACA3/B,IAAK,KACL3C,MAAO,IAAKA,KAKrB,MAAMw9D,GACT7pE,YAAY8uD,GACR1uD,KAAK0uD,UAAYA,EACjB1uD,KAAK0pE,aAAe,2BACpB1pE,KAAKioE,SAAW,IAChBjoE,KAAK+nE,cAAgBC,KAEzBjb,cAAc/D,EAAQ2gB,GAClB,IACI,MAAMvhB,EAAWY,EAAOC,UACxB,QAAiBn3C,IAAbs2C,EACA,OACJ,MAAMuG,QAAe3uD,KAAK0uD,UAAUtG,GAM9BxxB,SALe+3B,EAAOC,QAAQ,YAAa,CAC7C9H,KAAMsB,EACN5C,KAAMmkB,EAASlkB,IAAM,EACrBjlC,OAAQmpD,EAASjkB,OAAS,KAEVmJ,KACd+a,QAAgBC,GAAcjzC,EAAM8xC,GAAMoB,IAChD,MAAO,CACHj7D,UAAW,IAAM65D,GAAK38D,IAAI,MAAO,CAAEc,UAAW,mCAAqC+8D,GACnF1mE,MAAO2iD,EAAKK,MAAM6jB,WAAW,CAACC,GAAgBpzC,EAAKwN,OAAQ4lC,GAAgBpzC,EAAKmO,QAGxF,MAAOtqC,GACH,SAIZyL,eAAe4jE,GAAc/hB,GACzB,MAAMkiB,EAAa9jE,KAAKkgD,OAAOxsD,IAAI,qBAC7BqwE,QAAaC,GAAUpiB,EAAKxkD,QAAQ,SAAU,IAAK,aACzD,OAAQmlE,GAAK38D,IAAI,MAAO,CAAEgC,MAAO,CAAEk8D,WAAAA,GAAcp9D,UAAW,uCAAwCu9D,wBAAyB,CAAEC,OAAQH,EAAKnpE,KAAK,SCjCrJ,SAASupE,GAAqBtkB,GAC1B,MAAM9iD,EAAQqlE,GAAYviB,GAC1B,MAAO,CACH7qD,KAAM6qD,EAAKc,KACXxI,SAAUp7C,EAAMkhC,MAChBlhC,MAAAA,EACAqnE,SAAU,cCRlB,SAASC,GAAW57D,GAChB,MAAO,CACH67D,IAAK77D,EAAIk4C,KACT5jD,MAAOwnE,GAAiB97D,EAAIw1B,MAAOx1B,EAAIm2B,KACvC/9B,UAAM8K,GC1BP,MAAM64D,GACT/qE,YAAYqM,GACRjM,KAAKiM,MAAQA,EACbuJ,GAAKZ,WAAW5U,MAEpB+sD,aAAa9gD,GAET,OADAjM,KAAKiM,MAAQ,IAAKjM,KAAKiM,SAAUA,GAC1BuJ,GAAK/E,OAAOzQ,MAEvBsO,SACI,MAAMP,EAAQ,CACVk8D,WAAY9jE,KAAKkgD,OAAOxsD,IAAI,sBAEhC,OAAQ2b,GAAKzJ,IAAI,MAAO,CAAEc,UAAW,uBAAwBkB,MAAOA,EAAO09C,UAAWzrD,KAAKiM,MAAM2+D,4ECdzG,WACE,IAAIC,EAAeC,EAEnBD,EAAgB5vE,EAAgB8vE,IAHtBC,GAKc,SAASh8C,EAAQi8C,EAAOC,GAC9C,IAAI1M,EAAa/+C,EAAO0rD,EAAeC,EAAcC,EAErD,IADA5rD,EAAQuP,EAAOzzB,OAAS,EACjByzB,EAAOvP,KAAWorD,GACvBprD,IAKF,IAHA4rD,EAAa,EACbF,EAAgB1rD,EAChB++C,EAAO,KACA/+C,GAAS,GACVuP,EAAOvP,KAAWorD,GACpBQ,IACY,MAAR7M,IACFA,EAAOxvC,EAAOk0B,UAAUzjC,EAAQ,EAAG0rD,EAAgB,KAElC,IAAV1rD,IACL0rD,EAAgBn8C,EAAOzzB,OAAS,EACtB,MAARijE,IACFA,EAAOxvC,EAAOk0B,UAAU,EAAGioB,EAAgB,IAGjC,MAAR3M,IACFA,EAAOxvC,IAIbvP,IAUF,OARI++C,IAASxvC,EACXk8C,GAAS,EACA1M,IACT0M,GAASI,GAAc9M,EAAMyM,IAE/BG,EAAeC,EAAa,EAE5BH,GAAiB,IADTx6C,KAAK8C,IAAI,EAAG,GAAK43C,KAlC3BG,GAAQC,cAARR,GALUM,GA4CM,SAASt8C,EAAQi8C,GAC/B,IAAIQ,EAAWC,EAAgBC,EAAcC,EAAeC,EAAgBC,EAAUC,EAAaC,EAAYC,EAAcC,EAAqBC,EAAgBC,EAClK,GAAIp9C,IAAWi8C,EACb,OAAO,EAET,GAAIH,EAAuB97C,EAAQi8C,GACjC,OAAO,EAOT,IALAiB,EAAsB,EACtBH,EAAcd,EAAM1vE,OACpB0wE,EAAej9C,EAAOzzB,OACtBowE,EAAe,EACfC,EAAgB,EACTD,EAAeI,GAAa,CASjC,GARAN,EAAYR,EAAMU,KAClBE,EAAiB78C,EAAO6U,QAAQ4nC,EAAU/mE,eAC1CynE,EAAiBn9C,EAAO6U,QAAQ4nC,EAAU9zB,gBAExB,KADlBm0B,EAAWp7C,KAAKgD,IAAIm4C,EAAgBM,MAElCL,EAAWp7C,KAAK8C,IAAIq4C,EAAgBM,KAGf,KADvBP,EAAgBE,GAEd,OAAO,EAETJ,EAAiB,GACb18C,EAAO48C,KAAmBH,IAC5BC,GAAkB,IAEE,IAAlBE,GAAuB58C,EAAO48C,EAAgB,KAAOf,EACvDa,GAAkB,GAC8B,OAAtCU,EAAOp9C,EAAO48C,EAAgB,KAAwB,MAATQ,GAAyB,MAATA,IACvEV,GAAkB,IAEpB18C,EAASA,EAAOk0B,UAAU0oB,EAAgB,EAAGK,GAC7CC,GAAuBR,EAGzB,QADAM,EAAaE,EAAsBH,IACZA,EAAcE,GAAiBD,GAAc,GAtCtET,GAAQL,MAARI,GAyCAR,EAAyB,SAAS97C,EAAQi8C,GACxC,GAAIj8C,EAAOA,EAAOzzB,OAAS0vE,EAAM1vE,OAAS,KAAOsvE,EAC/C,OAAO77C,EAAO8wB,YAAYmrB,KAAWj8C,EAAOzzB,OAAS0vE,EAAM1vE,SAI9DkB,6DC3FH,WACE,IAAI4vE,EAAiBC,EAAQC,EAE7BD,EAAME,KAENH,EAAkB,SAAStyE,GACzB,OAAOA,EAAE0yE,WAGXF,EAAiB,SAASxyE,EAAGqJ,GAC3B,OAAOA,EAAE8nE,MAAQnxE,EAAEmxE,OAGrBwB,GAAiB,SAASC,EAAY1B,EAAO2B,EAAiBC,GAC5D,IAAIJ,EAAW/yE,EAAKozE,EAAY5B,EAAO6B,EAAkB/9C,EAAQg+C,EAAIC,EAAMb,EAE3E,GADiC1yE,GAAjC0yE,EAAe,MAARS,EAAeA,EAAO,IAAenzE,IAAKozE,EAAaV,EAAKU,WAC/D7B,EAAO,CAET,IADA8B,EAAmB,GACdC,EAAK,EAAGC,EAAON,EAAWpxE,OAAQyxE,EAAKC,EAAMD,IAChDP,EAAYE,EAAWK,IACvBh+C,EAAgB,MAAPt1B,EAAc+yE,EAAU/yE,GAAO+yE,KAIxCvB,EAAQoB,EAAOpB,MAAMl8C,EAAQi8C,EAAO2B,GAC/BA,IACH1B,EAAQoB,EAAOd,cAAcx8C,EAAQi8C,EAAOC,IAE1CA,EAAQ,GACV6B,EAAiB1rE,KAAK,CACpBorE,UAAWA,EACXvB,MAAOA,KAIb6B,EAAiB7pC,KAAKqpC,GACtBI,EAAaI,EAAiBnsE,IAAIyrE,GAKpC,OAHkB,MAAdS,IACFH,EAAaA,EAAW/wE,MAAM,EAAGkxE,IAE5BH,IAGRlwE,mEC5CH,WACE,IAAIouE,EAEJA,EAAgB5vE,EAAgB8vE,IAHtBmC,GAKc,SAASl+C,EAAQi8C,GACvC,IAAIzM,EAAM/+C,EAAO0rD,EAEjB,IADA1rD,EAAQuP,EAAOzzB,OAAS,EACjByzB,EAAOvP,KAAWorD,GACvBprD,IAKF,IAFA0rD,EAAgB1rD,EAChB++C,EAAO,KACA/+C,GAAS,GACVuP,EAAOvP,KAAWorD,EAER,MAARrM,IACFA,EAAOxvC,EAAOk0B,UAAUzjC,EAAQ,EAAG0rD,EAAgB,IAElC,IAAV1rD,IACL0rD,EAAgBn8C,EAAOzzB,OAAS,EACtB,MAARijE,IACFA,EAAOxvC,EAAOk0B,UAAU,EAAGioB,EAAgB,IAGjC,MAAR3M,IACFA,EAAOxvC,IAIbvP,IAEF,OAAO0tD,GAAc3O,EAAMyM,EAAOj8C,EAAOzzB,OAASijE,EAAKjjE,SA5BzD6xE,GAAQC,cAARH,GALUC,GAoCM,SAASn+C,EAAQi8C,EAAOqC,GACtC,IAAI7B,EAAWE,EAAcC,EAAeC,EAAgBxwB,EAASywB,EAAUC,EAAaE,EAAcE,EAA0BoB,EAIpI,GAHoB,MAAhBD,IACFA,EAAe,GAEbt+C,IAAWi8C,EACb,OAAQ,WACNsC,EAAW,GACX,IAAK,IAAIP,EAAKM,EAAclB,EAAOkB,EAAet+C,EAAOzzB,OAAQ+xE,GAAgBlB,EAAOY,EAAKZ,EAAOY,EAAKZ,EAAMkB,GAAgBlB,EAAOY,IAAOA,IAAOO,EAASlsE,KAAK2rE,GAClK,OAAOO,GACNvuD,MAAMhf,MAOX,IALA+rE,EAAcd,EAAM1vE,OACpB0wE,EAAej9C,EAAOzzB,OACtBowE,EAAe,EACfC,EAAgB,EAChBvwB,EAAU,GACHswB,EAAeI,GAAa,CASjC,GARAN,EAAYR,EAAMU,KAClBE,EAAiB78C,EAAO6U,QAAQ4nC,EAAU/mE,eAC1CynE,EAAiBn9C,EAAO6U,QAAQ4nC,EAAU9zB,gBAExB,KADlBm0B,EAAWp7C,KAAKgD,IAAIm4C,EAAgBM,MAElCL,EAAWp7C,KAAK8C,IAAIq4C,EAAgBM,KAGf,KADvBP,EAAgBE,GAEd,MAAO,GAETzwB,EAAQh6C,KAAKisE,EAAe1B,GAC5B0B,GAAgB1B,EAAgB,EAChC58C,EAASA,EAAOk0B,UAAU0oB,EAAgB,EAAGK,GAE/C,OAAO5wB,GAjCT+xB,GAAQjtE,MAARgtE,IAoCC1wE,iBCxEH,WACE,IAAIouE,EAAe2C,EAAYvqE,EAAQwqE,EAASnB,EAEhDA,EAAME,KAENvpE,EAAMyqE,KAEND,EAAOE,KAEP9C,EAAgB5vE,EAAgB8vE,IAEhCyC,EAAa,MAEbI,GAAiB,CACf3qE,OAAQ,SAAS0pE,EAAY1B,EAAOhrE,GAClC,IAAI2sE,EAKJ,OAJI3B,IACF2B,GAAoD,IAAlC3B,EAAMpnC,QAAQgnC,GAChCI,EAAQA,EAAM1nE,QAAQiqE,EAAY,KAE7BvqE,EAAO0pE,EAAY1B,EAAO2B,EAAiB3sE,IAEpDirE,MAAO,SAASl8C,EAAQi8C,GACtB,IAAI2B,EAAiB1B,EACrB,OAAKl8C,GAGAi8C,EAGDj8C,IAAWi8C,EACN,GAET2B,GAAoD,IAAlC3B,EAAMpnC,QAAQgnC,GAChCI,EAAQA,EAAM1nE,QAAQiqE,EAAY,IAClCtC,EAAQoB,EAAOpB,MAAMl8C,EAAQi8C,GACxB2B,IACH1B,EAAQoB,EAAOd,cAAcx8C,EAAQi8C,EAAOC,IAEvCA,GAdE,GAgBX/qE,MAAO,SAAS6uB,EAAQi8C,GACtB,IAAI7pC,EAAa3hB,EAAO47B,EAASuxB,EAAiBjuC,EAAgB4uC,EAClE,IAAKv+C,EACH,MAAO,GAET,IAAKi8C,EACH,MAAO,GAET,GAAIj8C,IAAWi8C,EACb,OAAQ,WACNsC,EAAW,GACX,IAAK,IAAIP,EAAK,EAAGZ,EAAOp9C,EAAOzzB,OAAQ,GAAK6wE,EAAOY,EAAKZ,EAAOY,EAAKZ,EAAM,GAAKA,EAAOY,IAAOA,IAAOO,EAASlsE,KAAK2rE,GAClH,OAAOO,GACNvuD,MAAMhf,MAKX,GAHA4sE,GAAoD,IAAlC3B,EAAMpnC,QAAQgnC,GAChCI,EAAQA,EAAM1nE,QAAQiqE,EAAY,IAClCnyB,EAAUoyB,EAAQttE,MAAM6uB,EAAQi8C,IAC3B2B,EAOH,IANAxrC,EAAcqsC,EAAQJ,cAAcr+C,EAAQi8C,GAC5C5vB,EAAUA,EAAQ7uC,OAAO40B,GAAa8B,MAAK,SAASnpC,EAAGqJ,GACrD,OAAOrJ,EAAIqJ,KAEbu7B,EAAO,KACPlf,EAAQ,EACDA,EAAQ47B,EAAQ9/C,QACjBkkB,GAASkf,IAAS0c,EAAQ57B,GAC5B47B,EAAQ/uC,OAAOmT,EAAO,IAEtBkf,EAAO0c,EAAQ57B,GACfA,KAIN,OAAO47B,MAIV5+C,KA/EHmxE,ICEO,MAAMC,GACTjuE,YAAYqM,GACRjM,KAAKiM,MAAQA,EACbjM,KAAKq7C,QAAUr7C,KAAKG,MAAMH,KAAKiM,OAC/BuJ,GAAKZ,WAAW5U,MAEpB+sD,aAAa9gD,GACTjM,KAAKiM,MAAQ,IAAKjM,KAAKiM,SAAUA,GACjCjM,KAAKq7C,QAAUr7C,KAAKG,MAAMH,KAAKiM,aACzBuJ,GAAK/E,OAAOzQ,MAEtB+sD,sBACUv3C,GAAKnD,QAAQrS,MAEvBsO,SACI,OAAQkH,GAAKzJ,IAAI,OAAQ,KAAM/L,KAAKq7C,QAAQz6C,KAAKnB,GAAO+V,GAAKzJ,IAAI,OAAQ,CAAEc,UAAWpN,EAAE8uC,MAAQ9uC,EAAE4M,SAEtGlM,MAAM8L,GACF,OAAIA,EAAMg/D,MAOX,SAA0BjkE,EAAMikE,GACnC,IAAIv7C,EAAY,EACZo+C,EAAe,GACnB,MAAMC,EAAe,GACf1yB,EAAUuyB,GAAAztE,MAAM6G,EAAMikE,GAC5B,IAAI+C,EACJ,IAAKA,KAAc3yB,EAAS,CACxB,GAAI2yB,EAAa,EACb,SAEJ,MAAMC,EAAYjnE,EAAKk8C,UAAUxzB,EAAWs+C,GACxCC,IACIH,EAAavyE,OAAS,GACtBwyE,EAAa1sE,KAAK,CAAEgL,KAAMyhE,EAAa/sE,KAAK,IAAKwtC,KAAM,oBAE3Du/B,EAAe,GACfC,EAAa1sE,KAAK,CAAEgL,KAAM4hE,KAE9BH,EAAazsE,KAAK2F,EAAKgnE,IACvBt+C,EAAYs+C,EAAa,EAEzBF,EAAavyE,OAAS,GACtBwyE,EAAa1sE,KAAK,CAAEgL,KAAMyhE,EAAa/sE,KAAK,IAAKwtC,KAAM,oBAI3D,OADAw/B,EAAa1sE,KAAK,CAAEgL,KAAMrF,EAAKk8C,UAAUxzB,KAClCq+C,EAhCQG,CAAiBjiE,EAAMm7C,MAAOn7C,EAAMg/D,OAExC,CAAC,CAAE5+D,KAAMJ,EAAMm7C,gBCvB9B,MAAO+mB,WAAAA,GAAY3f,oBAAAA,GAAqB3E,WAAAA,IAAlCukB,kBCANC,GAAiB,CACfzmE,OAAQ,OACRC,MAAO,MACPC,QAAS,QACTC,iBAAkB,iBAClBC,mBAAoB,mBACpBC,oBAAqB,oBACrBC,UAAW,UACXC,WAAY,WACZC,QAAS,QACTC,QAAS,QACTC,OAAQ,OACRC,SAAU,SACVC,QAAS,QACTC,SAAU,SACVC,QAAS,QACTC,cAAe,cACfC,cAAe,WACfC,OAAQ,OACRC,UAAW,UACXC,YAAa,YACbC,WAAY,WACZC,YAAa,YACbC,WAAY,WACZC,YAAa,YACbC,OAAQ,OACRC,YAAa,YACbC,aAAc,aACdC,aAAc,aACdC,YAAa,YACbC,WAAY,WACZC,YAAa,YACbC,UAAW,UACXC,SAAU,SACVC,cAAe,cACfC,WAAY,WACZC,YAAa,YACbC,aAAc,aACdC,SAAU,SACVC,QAAS,QACTC,QAAS,QACTC,UAAW,UACXC,iBAAkB,iBAClBC,iBAAkB,iBAClBC,UAAW,UACXC,YAAa,YACbC,QAAS,QACTC,QAAS,QACTC,aAAc,aACdC,iBAAkB,iBAClBC,YAAa,YACbC,QAAS,QACTC,OAAQ,OACRC,UAAW,UACXC,WAAY,WACZC,aAAc,aACdC,SAAU,SACVC,UAAW,UACXC,UAAW,UACXC,UAAW,UACXC,aAAc,aACdC,eAAgB,eAChBC,UAAW,UACXC,OAAQ,OACRC,iBAAkB,iBAClBC,eAAgB,eAChBC,qBAAsB,qBACtBC,gBAAiB,2BChEnB,SAASC,GAAKC,EAAKC,KAAUC,GAC3B,IAAK,IAAIlR,EAAI,EAAGA,EAAIkR,EAAS3Q,QAAS,CACpC,MAAM6Q,EAAQF,EAASlR,GACvB,cAAeoR,GACb,IAAK,SACL,IAAK,SACHF,EAASlR,GAAK,CAACqR,KAAMD,GACrBpR,IACA,MAEF,IAAK,SACCuL,MAAMC,QAAQ4F,GAChBF,EAASI,OAAOtR,EAAG,KAAMoR,GACfA,EAGVpR,IAFAkR,EAASI,OAAOtR,EAAG,GAIrB,MAEF,QACE,MAAM,IAAIM,MAAO,uBAAsB8Q,IAI7C,GAAIH,EAAO,CACT,IAAK,MAAMQ,KAAYR,EAAO,CAC5B,MAAMS,EAAY2hE,GAAqB5hE,GACnCC,IACGT,EAAMU,KAAIV,EAAMU,GAAK,IAC1BV,EAAMU,GAAGD,GAAaT,EAAMQ,IAI5BR,EAAMW,QACRX,EAAMY,UAAYZ,EAAMW,OAI5B,MAAO,CAACZ,IAAAA,EAAKC,MAAAA,EAAOC,SAAAA,GCzCtBoiE,GAAiB,IAAIzoE,IAAI,CACvB,SACA,WACA,OACA,UACA,IACA,QACA,OACA,iBACA,OACA,OACA,UACA,UACA,WACA,iBACA,OACA,OACA,MACA,OACA,UDyBF,MAAMkH,GAAY,CAChB,IAAK,OAAQ,UAAW,UAAW,QAAS,QAAS,IAAK,MAAO,MACjE,aAAc,OAAQ,SAAU,SAAU,UAAW,OAAQ,OAC7D,WAAY,WAAY,KAAM,MAAO,UAAW,MAAO,SAAU,MAAO,KACxE,KAAM,KAAM,WAAY,aAAc,SAAU,SAAU,OAAQ,KAAM,KACxE,KAAM,KAAM,KAAM,KAAM,OAAQ,SAAU,OAAQ,IAAK,SAAU,MAAO,MACxE,QAAS,SAAU,KAAM,OAAQ,MAAO,OAAQ,OAAQ,QAAS,MACjE,WAAY,SAAU,KAAM,WAAY,SAAU,SAAU,IAAK,MACjE,WAAY,IAAK,KAAM,KAAM,OAAQ,IAAK,OAAQ,SAAU,UAC5D,SAAU,QAAS,OAAQ,SAAU,QAAS,MAAO,UAAW,MAChE,QAAS,QAAS,KAAM,WAAY,QAAS,KAAM,QAAS,OAAQ,QACpE,KAAM,IAAK,KAAM,MAAO,QAAS,OAAQ,OAAQ,KAAM,MAAO,UAC9D,QAAS,KAAM,MAAO,QAAS,SAAU,OAAQ,OAAQ,QAAS,SAClE,QAAS,OAGX,IAAK,MAAMC,KAAWD,GACpBhB,GAAIiB,GAAW,CAACf,KAAUC,IACjBH,GAAIiB,EAASf,KAAUC,GAIlC,IAAK,MAAMc,KAAXshE,GACEviE,GAAIiB,GAAW,CAACf,KAAUC,IACjBH,GAAIiB,EAASf,KAAUC,GAKlCqiE,GAAiBxiE,sBEzEjByiE,GAAiB,IAAIrhE,IAAI,CACvB,CAAC,eAAgB,iBACjB,CAAC,oBAAqB,sBACtB,CAAC,aAAc,eACf,CAAC,gBAAiB,kBAClB,CAAC,YAAa,cACd,CAAC,YAAa,SACd,CAAC,WAAY,aACb,CAAC,WAAY,aACb,CAAC,qBAAsB,uBACvB,CAAC,4BAA6B,+BAC9B,CAAC,eAAgB,iBACjB,CAAC,iBAAkB,mBACnB,CAAC,mBAAoB,qBACrB,CAAC,mBAAoB,qBACrB,CAAC,cAAe,gBAChB,CAAC,WAAY,aACb,CAAC,aAAc,eACf,CAAC,eAAgB,iBACjB,CAAC,aAAc,eACf,CAAC,WAAY,aACb,CAAC,iBAAkB,oBACnB,CAAC,cAAe,gBAChB,CAAC,YAAa,cACd,CAAC,cAAe,gBAChB,CAAC,aAAc,eACf,CAAC,YAAa,cACd,CAAC,6BAA8B,gCAC/B,CAAC,2BAA4B,8BAC7B,CAAC,YAAa,eACd,CAAC,eAAgB,kBACjB,CAAC,gBAAiB,kBAClB,CAAC,gBAAiB,kBAClB,CAAC,YAAa,cACd,CAAC,YAAa,cACd,CAAC,cAAe,gBAChB,CAAC,mBAAoB,qBACrB,CAAC,oBAAqB,sBACtB,CAAC,UAAW,YACZ,CAAC,aAAc,eACf,CAAC,gBAAiB,kBAClB,CAAC,kBAAmB,oBACpB,CAAC,iBAAkB,mBACnB,CAAC,YAAa,cACd,CAAC,cAAe,gBAChB,CAAC,wBAAyB,0BAC1B,CAAC,yBAA0B,2BAC3B,CAAC,kBAAmB,oBACpB,CAAC,mBAAoB,qBACrB,CAAC,gBAAiB,kBAClB,CAAC,iBAAkB,mBACnB,CAAC,mBAAoB,qBACrB,CAAC,gBAAiB,kBAClB,CAAC,cAAe,gBAChB,CAAC,aAAc,eACf,CAAC,iBAAkB,mBACnB,CAAC,gBAAiB,kBAClB,CAAC,oBAAqB,sBACtB,CAAC,qBAAsB,uBACvB,CAAC,cAAe,gBAChB,CAAC,eAAgB,iBACjB,CAAC,aAAc,gBACf,CAAC,cAAe,gBAChB,CAAC,WAAY,aACb,CAAC,eAAgB,iBACjB,CAAC,gBAAiB,kBAClB,CAAC,WAAY,cACb,CAAC,cAAe,iBAChB,CAAC,cAAe,iBAChB,CAAC,cAAe,gBAChB,CAAC,cAAe,gBAChB,CAAC,UAAW,cCpDd,SAASC,GAAaC,EAASC,EAAgBC,EAAUC,EAAgBC,GACvE,GAAIF,EACF,IAAK,IAAIvG,KAAQuG,EACF,QAATvG,GAA2B,OAATA,IAClBA,KAAIqnE,IACH5gE,GAAczG,KAAQyG,IACZ,YAATzG,EACFoG,GAAYC,EAAQK,QAAS,KAAMH,GAAYA,EAASG,QAAS,KAAM,MACrD,cAAT1G,GAAwBsG,GAAkBghE,GAAS3nE,IAAI2G,EAAetB,KAC/EqB,EAAQM,gBAAgB6gE,GAA2B30E,IAAImN,IAASA,IAKhEqG,EAAQrG,GA/BJ,UAgCGqG,EAAQrG,MAMvB,GAAIyG,EACF,IAAK,IAAIzG,KAAQyG,EACf,GAAa,QAATzG,GAA2B,OAATA,KAClBA,KAAIqnE,IAAR,CACA,IAAIzgE,EAAWL,GAAYA,EAASvG,GAChC6G,EAAWJ,EAASzG,GACX,YAATA,EACF8G,GAAkBT,EAAQK,QAASE,EAAUC,GAAU,GACrC,UAAT7G,GAAwC,iBAAb6G,GACZ,iBAAbD,IACTP,EAAQU,MAAQ,GAChBH,EAAW,MAEbE,GAAkBT,EAAQU,MAAOH,EAAUC,GAAU,IACnC,eAAT7G,EACTgH,GAAiBX,EAASO,EAAUC,GAEhCA,IAAaD,IACF,cAAT5G,GAAwBwG,GAAkB8gE,GAAS3nE,IAAI6G,EAAexB,KACxEqB,EAAQY,aAAaugE,GAA2B30E,IAAImN,IAASA,EAAM6G,GAC1DL,GAAyC,UAAvBA,EAAexB,KAC9B,UAAThF,GAAoBqG,EAAQrG,KAAU6G,IAIzCR,EAAQrG,GAAQ6G,KAQ5B,SAASC,GAAmBI,EAAUX,EAAUE,EAAUU,GACxD,GAAIZ,EACF,IAAK,IAAIvG,KAAQuG,EACVE,GAAczG,KAAQyG,IACrBU,EACFD,EAASlH,GA5EL,UA8EGkH,EAASlH,IAMxB,GAAIyG,EACF,IAAK,IAAIzG,KAAQyG,EAAU,CACzB,MAAMG,EAAWL,GAAYA,EAASvG,GAChC6G,EAAWJ,EAASzG,GACtB6G,IAAaD,IACfM,EAASlH,GAAQ6G,IAMzB,SAASG,GAAkBX,EAASe,EAAeC,GACjD,GAAID,EACF,IAAK,IAAIpH,KAAQoH,EACVC,GAAmBrH,KAAQqH,GAC9BhB,EAAQM,gBAAgB3G,GAK9B,GAAIqH,EACF,IAAK,IAAIrH,KAAQqH,EAAe,CAC9B,MAAMT,EAAWQ,GAAiBA,EAAcpH,GAC1C6G,EAAWQ,EAAcrH,GAC3B6G,IAAaD,GACfP,EAAQY,aAAajH,EAAM6G,IC7GnC,SAASS,GAAQC,EAAatO,GAC5B,IAAIoN,EACJ,GAAwB,MAApBkB,EAAYlC,KACdgB,EAAUmB,SAASC,eAAeF,EAAYlC,UACzC,CACL,MAAML,IAACA,EAADE,SAAMA,GAAYqC,EACxB,IAAItC,MAACA,GAASsC,EAEd,GAAmB,mBAARvC,EAAoB,CAC7B,IAAI4C,EACA3C,GAASA,EAAM2C,MACjBA,EAAM3C,EAAM2C,KAEd,MAAMC,EAAY,IAAI7C,EAAIC,GAAS,GAAIC,GACvCqC,EAAYM,UAAYA,EACxBxB,EAAUwB,EAAUC,QAChB7O,GAAWA,EAAQyO,MAAQE,IAC7B3O,EAAQyO,KAAKE,GAAOC,QAEby/D,GAAS3nE,IAAIqF,IACtBqB,EAAUmB,SAASO,gBAAgB,6BAA8B/C,GAC7DE,GAAU8C,GAAY3B,EAASnB,EAAUjM,GACzCgM,GAAOwiE,GAAYphE,EAAS,KAAMkB,EAAatO,KAEnDoN,EAAUmB,SAASU,cAAclD,GAC7BE,GAAU8C,GAAY3B,EAASnB,EAAUjM,GACzCgM,GAAOwiE,GAAYphE,EAAS,KAAMkB,EAAatO,IAIvD,OADAsO,EAAYlB,QAAUA,EACfA,EAGT,SAAS2B,GAAaG,EAAQjD,EAAUjM,GACtC,IAAK,IAAIjF,EAAI,EAAGA,EAAIkR,EAAS3Q,OAAQP,IACnCmU,EAAOC,YAAYd,GAAOpC,EAASlR,GAAIiF,IDjC3CwuE,GAAiB,SAAUphE,EAASC,EAAgBE,EAAgBvN,GAClE,MAAMsN,EAAWD,GAAkBA,EAAerB,MAC5CwB,EAAWD,EAAevB,MAEhC,IAAIyC,EAAMC,EACN1O,IACFyO,EAAOzO,EAAQyO,KACfC,EAAkB1O,EAAQ0O,iBAE5BvB,GAAYC,EAASC,EAAgBC,EAAUC,EAAgBC,GAC3DiB,GAuGN,SAAoBrB,EAASiC,EAAYC,EAAYb,GAC/Ca,IAAeD,IACbA,GAAcZ,EAAKY,KAAgBjC,UAAgBqB,EAAKY,GACxDC,IAAYb,EAAKa,GAAclC,IA1G3BqhE,CAAUrhE,EAASE,GAAYA,EAASqB,IAAKnB,GAAYA,EAASmB,IAAKF,GA8GnF,SAA+BrB,EAASC,EAAgBE,EAAgBmB,GACtE,MAAMa,EAAelC,GAAkBA,EAAerB,OAASqB,EAAerB,MAAMU,GAC9E8C,EAAejC,EAAevB,OAASuB,EAAevB,MAAMU,GAElE,IAAK,MAAMD,KAAa8C,EACtB,IAAMC,KAAgB/C,KAAa+C,GAAe,CAChD,IAAIC,EAEFA,EADEpC,GAAkBA,EAAeqC,gBAAkBrC,EAAeqC,eAAejD,GAChEY,EAAeqC,eAAejD,GAE9B8C,EAAa9C,GAElCW,EAAQuC,oBAAoBlD,EAAWgD,GAI3C,IAAK,MAAMhD,KAAa+C,EAAc,CACpC,MAAMI,EAAcL,GAAgBA,EAAa9C,GAC3CoD,EAAcL,EAAa/C,GAEjC,GAAIoD,IAAgBD,EAAa,CAC/B,GAAIA,EAAa,CACf,IAAIH,EAEFA,EADEpC,GAAkBA,EAAeqC,gBAAkBrC,EAAeqC,eAAejD,GAChEY,EAAeqC,eAAejD,GAE9BmD,EAErBxC,EAAQuC,oBAAoBlD,EAAWgD,GAEzC,GAAII,EAAa,CACf,IAAIC,EACApB,GACFoB,EAAgBD,EAAYE,KAAKrB,GAC5BnB,EAAemC,iBAAgBnC,EAAemC,eAAiB,IACpEnC,EAAemC,eAAejD,GAAaqD,GAE3CA,EAAgBD,EAElBzC,EAAQ4C,iBAAiBvD,EAAWqD,MApJ1CG,CAAqB7C,EAASC,EAAgBE,EAAgBmB,IC0BhEggE,GAAiBrgE,gBCvCjB,SAAS7N,GAAO6M,EAAgBE,EAAgBvN,GAC9C,MAAMmQ,EAAU9C,EAAeD,QAE/B,GAAIG,IAAmBF,EAAgB,OAAO8C,EAE9C,GAAIC,GAAqB/C,EAAgBE,GAAiB,CACxD,IAAI8C,EAiBJ,OAhB2B,MAAvB9C,EAAenB,MACjB+D,EAAQG,UAAY/C,EAAenB,KACnCiE,EAAUF,GAEwB,mBAAvB5C,EAAexB,IACxBsE,EAuBR,SAA0BhD,EAAgBE,EAAgBvN,GACxD,MAAM4O,UAACA,EAAW5C,MAAOsB,GAAYD,EACrC,IAAKrB,MAAOwB,EAAUvB,SAAUsE,GAAehD,EAE/C,GADAA,EAAeqB,UAAYA,EACvB5O,GAAWA,EAAQyO,KAAM,CAC3B,MAAMA,EAAOzO,EAAQyO,KACfY,EAAa/B,GAAYA,EAASqB,IAClCW,EAAa9B,GAAYA,EAASmB,IACpCW,IAAeD,IACbA,GAAcZ,EAAKY,KAAgBT,UAAkBH,EAAKY,GAC1DC,IAAYb,EAAKa,GAAcV,IAIvC,OADAA,EAAU4B,OAAOhD,GAAY,GAAI+C,GAC1B3B,EAAUC,QArCD4B,CAAgBpD,EAAgBE,EAAgBvN,KA0ClE,SAAyB0Q,EAAeC,EAAaJ,EAAavQ,GAChE,IAUI4Q,EAVAC,EAAgB,EAChBC,EAAcH,EAAYrV,OAAS,EACnCyV,EAAgBJ,EAAY,GAC5BK,EAAcL,EAAYG,GAE1BG,EAAgB,EAChBC,EAAcX,EAAYjV,OAAS,EACnC6V,EAAgBZ,EAAY,GAC5Ba,EAAcb,EAAYW,GAI9B,KAAOL,GAAiBC,GAAeG,GAAiBC,GACtD,GAAKH,EAEE,GAAKC,EAEL,GAAIZ,GAAqBW,EAAeI,GAC7C3Q,GAAMuQ,EAAeI,EAAenR,GACpC+Q,EAAgBJ,IAAcE,GAC9BM,EAAgBZ,IAAcU,QACzB,GAAIb,GAAqBY,EAAaI,GAC3C5Q,GAAMwQ,EAAaI,EAAapR,GAChCgR,EAAcL,IAAcG,GAC5BM,EAAcb,IAAcW,QACvB,GAAId,GAAqBW,EAAeK,GAC7C5Q,GAAMuQ,EAAeK,EAAapR,GAClC0Q,EAAcW,aAAaN,EAAc3D,QAAS4D,EAAY5D,QAAQkE,aACtEP,EAAgBJ,IAAcE,GAC9BO,EAAcb,IAAcW,QACvB,GAAId,GAAqBY,EAAaG,GAC3C3Q,GAAMwQ,EAAaG,EAAenR,GAClC0Q,EAAcW,aAAaL,EAAY5D,QAAS2D,EAAc3D,SAC9D4D,EAAcL,IAAcG,GAC5BK,EAAgBZ,IAAcU,OACzB,CACAL,IACCW,GAAQjW,OAAS,GACnBsV,EAAkBW,GAAQpN,OACVqN,QAEhBZ,EAAkB,IAAI1D,IAExBuE,GAAoBb,EAAiBD,EAAaE,EAAeC,IAGnE,IAAIrX,EAAMiY,GAAOP,GACbQ,EAAWlY,EAAMmX,EAAgBhX,IAAIH,GAAO,KAChD,GAAgB,MAAZkY,EACFjB,EAAcW,aAAaq9D,GAAOv9D,EAAenR,GAAU+Q,EAAc3D,SACzE+D,EAAgBZ,IAAcU,OACzB,CACL,IAAIW,EAAiBjB,EAAYgB,GACjCnR,GAAMoR,EAAgBT,EAAenR,GACrC2Q,EAAYgB,QAAYE,EACxBnB,EAAcW,aAAaO,EAAexE,QAAS2D,EAAc3D,SACjE+D,EAAgBZ,IAAcU,SAxChCD,EAAcL,IAAcG,QAF5BC,EAAgBJ,IAAcE,GA+ClC,GAAIA,EAAgBC,EAAa,CAC/B,IAAIgB,EAAoBvB,EAAYW,EAAc,GAAKX,EAAYW,EAAc,GAAG9D,QAAU,KAC9F,IAAK,IAAIrS,EAAIkW,EAAelW,GAAKmW,EAAanW,IAC5C2V,EAAcW,aAAaq9D,GAAOn+D,EAAYxV,GAAIiF,GAAU8R,QAEzD,GAAIb,EAAgBC,EACzB,IAAK,IAAInW,EAAI8V,EAAe9V,GAAK+V,EAAa/V,IAAK,CACjD,IAAIoR,EAAQwE,EAAY5V,GACpBoR,GAAO4F,GAAkB5F,EAAOnM,GAAWA,EAAQyO,MAIvDmC,GAAiBW,GAAQnQ,KAAKwP,GAlH5BoB,CAAe7B,EAAS9C,EAAepB,SAAUsB,EAAetB,SAAUjM,GAC1EwuE,GAAYr+D,EAAS9C,EAAgBE,EAAgBvN,GACrDqQ,EAAUF,GAGd5C,EAAeH,QAAUiD,EACrBA,IAAYF,GAAWA,EAAQ8B,YACjC9B,EAAQ8B,WAAWC,aAAa7B,EAASF,GAEpCE,EACF,CACL,MAAM4B,EAAa9B,EAAQ8B,WACrBX,EAAcnB,EAAQmB,YAC5BS,GAAkB1E,EAAgBrN,GAAWA,EAAQyO,MACrD,MAAM4B,EAAUq+D,GAAOnhE,EAAgBvN,GAGvC,OAFIiS,GAAYA,EAAWZ,aAAahB,EAASiB,GACjD/D,EAAeH,QAAUiD,EAClBA,GAqBX,IAAIkB,GAAU,CAAC,IAAIrE,IAAO,IAAIA,IAAO,IAAIA,IAAO,IAAIA,KA+EpD,SAAS6E,GAAmBzD,EAAaG,EAAM0D,GAAgB,GAC7D,MAAM/E,QAACA,EAADpB,MAAUA,EAAVC,SAAiBA,EAAjB2C,UAA2BA,GAAaN,EACxCK,EAAM3C,GAASA,EAAM2C,IAC3B,GAAIC,EACEH,GAAQE,GAAOF,EAAKE,KAASC,UAAkBH,EAAKE,GACpDC,EAAUwD,SAASxD,EAAUwD,eAGjC,GADI3D,GAAQE,GAAOF,EAAKE,KAASvB,UAAgBqB,EAAKE,GAClD1C,EACF,IAAK,IAAIlR,EAAI,EAAGA,EAAIkR,EAAS3Q,OAAQP,IACnCgX,GAAkB9F,EAASlR,GAAI0T,GAAM,GAKvC0D,GAAe/E,EAAQiF,SAG7B,SAASjC,GAAsB/C,EAAgBE,GAC7C,OACEmE,GAAOrE,KAAoBqE,GAAOnE,IAC7BF,EAAetB,MAAQwB,EAAexB,IAI/C,SAAS2F,GAAQpD,GACf,OAAOA,EAAYtC,MAAQsC,EAAYtC,MAAMvS,SAAMoY,EAGrD,SAASJ,GAAqBb,EAAiB3E,EAAUqG,EAAYC,GACnE,IAAK,IAAIxX,EAAIuX,EAAYvX,GAAKwX,EAAUxX,IAAK,CAC3C,MAAMtB,EAAMiY,GAAOzF,EAASlR,IACxBtB,GAAKmX,EAAgB9N,IAAIrJ,EAAKsB,GAEpC,OAAO6V,EAGT+9D,GAAiBnuE,UCvKjBouE,GAAiB,MACfjvE,cACEI,KAAK2S,eAAiB,GACtB3S,KAAK4S,aAAe,GACpB5S,KAAK6S,sBAAwB,KAC7B7S,KAAK8S,eAAiB9S,KAAK8S,eAAe9C,KAAKhQ,MAC/CA,KAAK+S,mBAAoB,EAM3BC,eAAgBC,GACdjT,KAAK2S,eAAetR,KAAK4R,GACpBjT,KAAK6S,wBACR7S,KAAK6S,sBAAwBxY,OAAO6Y,sBAAsBlT,KAAK8S,iBAInEK,aAAcF,GACZjT,KAAK4S,aAAavR,KAAK4R,GAClBjT,KAAK6S,wBACR7S,KAAK6S,sBAAwBxY,OAAO6Y,sBAAsBlT,KAAK8S,iBAOnEM,uBAME,OALKpT,KAAKqT,oBACRrT,KAAKqT,kBAAoB,IAAInX,SAAQwJ,IACnC1F,KAAKsT,yBAA2B5N,MAG7B1F,KAAKqT,kBAMdP,iBACE,KAAO9S,KAAK2S,eAAepX,OAAS,GAClCyE,KAAK2S,eAAeY,OAApBvT,GAWF,IALAA,KAAK6S,sBAAwB,KAKtB7S,KAAK4S,aAAarX,OAAS,GAChCyE,KAAK4S,aAAaW,OAAlBvT,GAGF,GAAIA,KAAKqT,kBAAmB,CAC1B,IAAIC,EAA2BtT,KAAKsT,yBACpCtT,KAAKqT,kBAAoB,KACzBrT,KAAKsT,yBAA2B,KAChCA,OCxCN,IAAIE,GAAY,YAMc,WAI5B,OAHKA,KACHA,GAAY,IAAAq7D,IAEPr7D,IChCT,MAAMC,GAA+B,IAAIC,QACzC,IAAIC,GAA+B,EAC/BC,GAAoC,EAExC,SAASC,GAAoBtF,GAC3B,OAAsB,MAAfA,IAAuC,IAAhBA,EAwFhC,SAASyF,GAAYnF,EAAWoF,GAAY,GAC1C,IAAKJ,GAAmBhF,EAAUN,aAChC,MAAM,IAAIjT,OAASuT,EAAUjP,YAAciP,EAAUjP,YAAYoH,KAAO,YAAc6H,GAArE,8FAGnB,GAAyB,MAArBA,EAAUC,QACZ,MAAM,IAAIxT,OAASuT,EAAUjP,YAAciP,EAAUjP,YAAYoH,KAAO,YAAc6H,GAArE,wFAGnB,IAAIrB,EAAiBqB,EAAUP,SAC/B,IAAKuF,GAAmBrG,GAAiB,CACvC,MAAM0G,EAAWrF,EAAUjP,aAAeiP,EAAUjP,YAAYoH,KAAO,OAAS6H,EAAUjP,YAAYoH,KAAO,GAC7G,MAAM,IAAI1L,MAAM,uBAAyBkS,EAAiB,0BAA4B0G,GAGxFP,KACA,IAAIrG,EAAiBuB,EAAUN,YAC3B4F,EAAatF,EAAUC,QACvBsF,EAAaw6D,GAAMthE,EAAgBE,EAAgB,CACrDkB,KAAMG,EAAUH,KAChBC,gBAAiBE,IAGnB,GADAA,EAAUN,YAAcf,EACpB4G,IAAeD,IAAeF,EAChC,MAAM,IAAI3Y,MAAM,+GAEhBuT,EAAUC,QAAUsF,EASoB,mBAA/BvF,EAAUwF,kBACnBxF,EAAUwF,mBAE6B,mBAA9BxF,EAAUyF,iBACnBw6D,KAAe37D,cAAa,WAC1BtE,EAAUyF,qBAIdX,KA2BF,SAASa,GAAa3F,EAAW4F,GAAW,GAC1Cb,KACAc,GAAuB7F,EAAUN,aACS,IAAtCqF,IAA2Ca,GAAY5F,EAAUC,QAAQwD,SAC7EsB,KAGF,SAASc,GAAuBnG,GAC1BA,EAAYM,WAAsD,mBAAlCN,EAAYM,UAAUwD,QACxD9D,EAAYM,UAAUwD,UACb9D,EAAYrC,UACrBqC,EAAYrC,SAASzS,QAAQib,IAIjCq6D,GAAiB,CACfn6D,WA9JF,SAAoB/F,GAClB,GAAgC,mBAArBA,EAAU4B,OACnB,MAAM,IAAInV,MAAM,6DAGlB,IAAIiT,EAAcM,EAAUP,SAC5B,IAAKuF,GAAmBtF,GAAc,CACpC,IAAI2F,EAAWrF,EAAUjP,aAAeiP,EAAUjP,YAAYoH,KAAO,OAAS6H,EAAUjP,YAAYoH,KAAO,GAC3G,MAAM,IAAI1L,MAAM,uBAAyBiT,EAAc,0BAA4B2F,GAGrFrF,EAAUH,KAAO,GACjBG,EAAUN,YAAcA,EACxBM,EAAUC,QAAU6/D,GAAO9/D,EAAUN,YAAa,CAChDG,KAAMG,EAAUH,KAAMC,gBAAiBE,KAiJzC4B,OA9HF,SAAiB5B,EAAWoF,GAAY,GACtC,GAAIN,GAA+B,EAEjC,OADAK,GAAWnF,EAAWoF,GACf/X,QAAQwJ,UAGjB,IAAI8N,EAAYs7D,KAUhB,OARKr7D,GAA6B9M,IAAIkI,KACpC4E,GAA6B1M,IAAI8H,GACjC2E,EAAUR,gBAAe,WACvBS,GAA6BoB,OAAOhG,GACpCmF,GAAWnF,EAAWoF,OAInBT,EAAUJ,wBA8GTY,WAAAA,GACR3B,QAnCF,SAAkBxD,EAAW4F,GAAW,GACtC,GAAId,GAA+B,GAAKC,GAAoC,EAE1E,OADAY,GAAY3F,EAAW4F,GAChBvY,QAAQwJ,UAGjB,IAAI8N,EAAYs7D,KAIhB,OAHAt7D,EAAUR,gBAAe,WACvBwB,GAAY3F,EAAW4F,MAElBjB,EAAUJ,wBAyBRoB,YAAAA,ICxLX,MAAOI,WAAAA,GAAYnE,OAAAA,GAAQuD,WAAAA,GAAY3B,QAAAA,GAASmC,YAAAA,IAA1Cu6D,GXAA7vE,IWGN8vE,GAAiB,CACfjjE,IAAGwiE,GAAEjgE,OAAMqgE,GACX/5D,WAAAA,GAAYnE,OAAAA,GAAQuD,WAAAA,GAAY3B,QAAAA,GAASmC,YAAAA,GACzCiB,aFoB4B,SAAuBC,GACnDlC,GAAYkC,GErBEC,aAAYm5D,KXNb/iE,IAGfkjE,GAAiB,MACfliB,oBAAqBv5C,GACnBw7D,GAAKv5D,aAAajC,GAGpBu5C,oBAAqBv5C,GACnB,OAAOw7D,GAAKr5D,eAGd/V,YAAaqM,GACXjM,KAAKiM,MAAQA,EACRjM,KAAKiM,MAAMzP,eAAe,2BAC7BwD,KAAKiM,MAAMijE,sBAAwB,GAEjCjjE,EAAMkjE,2BACRnvE,KAAKovE,+BAEPpvE,KAAKqvE,cAAa,GAClBrvE,KAAKsvE,YAAc,IAAI9gB,GACvBwgB,GAAKp6D,WAAW5U,MAChBA,KAAK8O,QAAQygE,UAAUxoE,IAAI,eAC3B/G,KAAKsvE,YAAYvoE,IAAI/G,KAAK0O,KAAK8gE,YAAYC,YAAYzvE,KAAK0vE,eAAe1/D,KAAKhQ,QAC3EiM,EAAM0jE,0BACT3vE,KAAKsvE,YAAYvoE,IAAI/G,KAAK4vE,wBAE5B,MAAMC,EAAgB7vE,KAAK0O,KAAK8gE,YAAY1gE,QACtCghE,EAAe9vE,KAAK8vE,aAAa9/D,KAAKhQ,MAC5C6vE,EAAc5/D,iBAAiB,OAAQ6/D,GAMvC9vE,KAAK+vE,mBAAoB,EACzB/vE,KAAK8O,QAAQmB,iBAAiB,aAAay9C,IACrCA,EAAMrP,SAAWr+C,KAAK0O,KAAKshE,QAC7BhwE,KAAK+vE,mBAAoB,MAG7B/vE,KAAKsvE,YAAYvoE,IAAI,IAAIonE,IAAW,KAAQ0B,EAAcjgE,oBAAoB,OAAQkgE,OAGxFV,+BACEpvE,KAAKiwE,mBAAqB,IAAIC,sBAAqBC,IACjD,IAAK,MAAMC,KAAUD,EACnB,GAAIC,EAAOC,kBAAoB,EAAG,CAChC,MAAMvhE,EAAUshE,EAAO/xB,OACvBr+C,KAAKiwE,mBAAmBK,UAAUxhE,GAClC,MAAM2Q,EAAQlZ,MAAMglD,KAAKvrD,KAAK0O,KAAKshE,MAAM9jE,UAAU23B,QAAQ/0B,GACvD2Q,GAAS,GACXzf,KAAKuwE,kBAAkB9wD,OAOjC+wD,QACExwE,KAAK0O,KAAK8gE,YAAY1gE,QAAQ0hE,QAGhCV,aAAcpiB,GACR1tD,KAAK+vE,mBAAqB/vE,KAAK8O,QAAQ2hE,SAAS/iB,EAAMgjB,gBACxD1wE,KAAK+vE,mBAAoB,EACzB/vE,KAAK0O,KAAK8gE,YAAY1gE,QAAQ0hE,SACrBhiE,SAASmiE,YAClB3wE,KAAK4wE,kBAITC,QACE7wE,KAAK0O,KAAK8gE,YAAY7kB,QAAQ,IAGhCt4C,UAGE,OAFArS,KAAKsvE,YAAYjkB,UACbrrD,KAAKiwE,oBAAoBjwE,KAAKiwE,mBAAmBa,aAC9C9B,GAAK38D,QAAQrS,MAGtB4vE,uBACE,OAAO11E,EAAOiM,KAAK4qE,SAAShqE,IAAI/G,KAAK8O,QAAS,CAC5CkiE,eAAiBtjB,IACf1tD,KAAKixE,iBACLvjB,EAAMO,mBAERijB,iBAAmBxjB,IACjB1tD,KAAKmxE,aACLzjB,EAAMO,mBAERmjB,mBAAqB1jB,IACnB1tD,KAAKqxE,cACL3jB,EAAMO,mBAERqjB,sBAAwB5jB,IACtB1tD,KAAKuxE,aACL7jB,EAAMO,mBAERujB,eAAiB9jB,IACf1tD,KAAKyxE,mBACL/jB,EAAMO,mBAERyjB,cAAgBhkB,IACd1tD,KAAK4wE,kBACLljB,EAAMO,qBAKZx9C,OAAQxE,EAAQ,IACd,IAAI0lE,GAAqB,EAyEzB,OAvEI1lE,EAAMzP,eAAe,WACvBwD,KAAKiM,MAAM+jE,MAAQ/jE,EAAM+jE,MACzB2B,GAAqB,GAGnB1lE,EAAMzP,eAAe,gBACvBwD,KAAKiM,MAAM6gE,WAAa7gE,EAAM6gE,WAC9B6E,GAAqB,GAGnB1lE,EAAMzP,eAAe,YACvBwD,KAAKiM,MAAMhJ,OAASgJ,EAAMhJ,OAC1B0uE,GAAqB,GAGnB1lE,EAAMzP,eAAe,iBACvBwD,KAAKiM,MAAM2lE,YAAc3lE,EAAM2lE,YAC/BD,GAAqB,GAGnB1lE,EAAMzP,eAAe,WAGvBwD,KAAK0O,KAAK8gE,YAAY7kB,QAAQ1+C,EAAMg/D,OACpC0G,GAAqB,GAGnB1lE,EAAMzP,eAAe,iBACnByP,EAAM4lE,YACR7xE,KAAK0O,KAAK8gE,YAAYsC,YAEtB9xE,KAAK0O,KAAK8gE,YAAYuC,mBAItB9lE,EAAMzP,eAAe,WACvBwD,KAAKiM,MAAM+lE,MAAQ/lE,EAAM+lE,OAGvB/lE,EAAMzP,eAAe,kBACvBwD,KAAKiM,MAAMgmE,aAAehmE,EAAMgmE,cAG9BhmE,EAAMzP,eAAe,kBACvBwD,KAAKiM,MAAMimE,aAAejmE,EAAMimE,cAG9BjmE,EAAMzP,eAAe,iBACvBwD,KAAKiM,MAAMkmE,YAAclmE,EAAMkmE,aAG7BlmE,EAAMzP,eAAe,oBACvBwD,KAAKiM,MAAMmmE,eAAiBnmE,EAAMmmE,gBAGhCnmE,EAAMzP,eAAe,kBACvBwD,KAAKiM,MAAMomE,aAAepmE,EAAMomE,cAG9BpmE,EAAMzP,eAAe,oBACvBwD,KAAKiM,MAAMqmE,eAAiBrmE,EAAMqmE,gBAGhCrmE,EAAMzP,eAAe,2BACvBwD,KAAKiM,MAAMijE,sBAAwBjjE,EAAMijE,uBAGvCyC,GACF3xE,KAAKqvE,eAGAL,GAAKv+D,OAAOzQ,MAGrBsO,SACE,OAAOpP,GAAEqzE,IACP,GACArzE,GAAE2qD,GAAY,CAACj7C,IAAK,cAAe4jE,MAAM,IACzCxyE,KAAKyyE,uBACLzyE,KAAK0yE,oBACL1yE,KAAK2yE,qBACL3yE,KAAK4yE,eAITA,cACE,GAAI5yE,KAAKgwE,MAAMz0E,OAAS,EAAG,CACzB,MAAMsR,EAAY,CAAC,cAAcL,OAAOxM,KAAKiM,MAAMqmE,gBAAkB,IAAIvxE,KAAK,KAoB9E,OAlBIf,KAAKiwE,oBACPjB,GAAKr5D,eAAe3C,gBAAe,KACjCzM,MAAMglD,KAAKvrD,KAAK0O,KAAKshE,MAAM9jE,UAAUtQ,MAAMoE,KAAKiM,MAAMkjE,2BAA2B11E,SAAQqV,IACvF9O,KAAKiwE,mBAAmB4C,QAAQ/jE,SAKtC9O,KAAK8yE,UAAY9yE,KAAKgwE,MAAMpvE,KAAI,CAACmyE,EAAMtzD,KACrC,MAAMwsC,EAAWjsD,KAAKgzE,oBAAsBD,EACtCE,GAAWjzE,KAAKiM,MAAMkjE,2BAA6B1vD,EAAQzf,KAAKiM,MAAMkjE,0BAC5E,OAAOjwE,GAAEg0E,GAAc,CACrBpkE,QAAS9O,KAAKiM,MAAMknE,eAAeJ,EAAM,CAAC9mB,SAAAA,EAAUxsC,MAAAA,EAAOwzD,QAAAA,IAC3DhnB,SAAUA,EACVmnB,QAAS,IAAMpzE,KAAKqzE,aAAa5zD,QAI9BvgB,GAAEo0E,GACP,CAACzmE,UAAAA,EAAW+B,IAAK,YACd5O,KAAK8yE,WAEL,OAAK9yE,KAAKiM,MAAMmmE,gBAAkBpyE,KAAKiM,MAAMgmE,aAC3C/yE,GAAE8mD,KAAK,CAACp3C,IAAK,gBAAiB5O,KAAKiM,MAAMgmE,cAEzC,GAIXU,qBACE,OAAI3yE,KAAKiM,MAAMimE,aACNhzE,GAAE8mD,KAAK,CAACp3C,IAAK,gBAAiB5O,KAAKiM,MAAMimE,cAEzC,GAIXQ,oBACE,OAAI1yE,KAAKiM,MAAMkmE,YACNjzE,GAAE8mD,KAAK,CAACp3C,IAAK,eAAgB5O,KAAKiM,MAAMkmE,aAExC,GAIXM,uBACE,OAAIzyE,KAAKiM,MAAMmmE,eACNlzE,GAAEqzE,IACP,CAAC1lE,UAAW,WACZ3N,GAAE8mD,KAAK,CAACp3C,IAAK,iBAAkB/B,UAAW,mBAAoB7M,KAAKiM,MAAMmmE,gBACzEpyE,KAAKiM,MAAMomE,aAAenzE,GAAE8mD,KAAK,CAACp3C,IAAK,eAAgB/B,UAAW,SAAU7M,KAAKiM,MAAMomE,cAAgB,IAGlG,GAIXkB,WACE,OAAIvzE,KAAK0O,MAAQ1O,KAAK0O,KAAK8gE,YAClBxvE,KAAK0O,KAAK8gE,YAAYgE,UAEtB,GAIXC,iBACE,OAAOzzE,KAAKiM,MAAM2lE,YAAc5xE,KAAKiM,MAAM2lE,YAAY5xE,KAAKuzE,YAAcvzE,KAAKuzE,WAGjF7D,iBACM1vE,KAAKiM,MAAMyjE,gBACb1vE,KAAKiM,MAAMyjE,eAAe1vE,KAAKyzE,kBAGjCzzE,KAAKqvE,eAGPgE,aAAcK,GACZ1zE,KAAK2zE,YAAYD,GACjB1zE,KAAKyxE,mBAGPpC,aAAc3+D,GACZ1Q,KAAK8yE,UAAY,KACb9yE,KAAKiwE,oBAAoBjwE,KAAKiwE,mBAAmBa,aACrD,MAAM8C,EAAW5zE,KAAKiM,MAAMhJ,QAAUjD,KAAK6zE,YAAY7jE,KAAKhQ,MAC5DA,KAAKgwE,MAAQ4D,EAAS5zE,KAAKiM,MAAM+jE,MAAMp0E,QAASoE,KAAKyzE,kBACjDzzE,KAAKiM,MAAM+lE,OACbhyE,KAAKgwE,MAAM9sC,KAAKljC,KAAKiM,MAAM+lE,OAEzBhyE,KAAKiM,MAAM6gE,aACb9sE,KAAKgwE,MAAQhwE,KAAKgwE,MAAMp0E,MAAM,EAAGoE,KAAKiM,MAAM6gE,aAG9C9sE,KAAK2zE,YAAY3zE,KAAKiM,MAAMijE,sBAAuBx+D,GAGrDmjE,YAAa7D,EAAO/E,GAClB,GAAqB,IAAjBA,EAAM1vE,OACR,OAAOy0E,EACF,CACL,MAAM8D,EAAc,GACpB,IAAK,MAAMf,KAAQ/C,EAAO,CACxB,MAAMhhD,EAAShvB,KAAKiM,MAAM8nE,iBAAmB/zE,KAAKiM,MAAM8nE,iBAAiBhB,GAAQA,EACjF,IAAI7H,EAAQ0C,GAAW1C,MAAMl8C,EAAQi8C,GACjCC,EAAQ,GACV4I,EAAYzyE,KAAK,CAAC0xE,KAAAA,EAAM7H,MAAAA,IAI5B,OADA4I,EAAY5wC,MAAK,CAACnpC,EAAGqJ,IAAMA,EAAE8nE,MAAQnxE,EAAEmxE,QAChC4I,EAAYlzE,KAAK5F,GAAMA,EAAE+3E,QAIpCC,kBACE,YAA4BlhE,IAAxB9R,KAAKg0E,eAAqC,KACvCh0E,KAAKgwE,MAAMhwE,KAAKg0E,gBAGzBzD,kBAAmB9wD,GACjB,MAAMszD,EAAO/yE,KAAKgwE,MAAMvwD,GAClBwsC,EAAWjsD,KAAKgzE,oBAAsBD,EACtClkE,EAAY7O,KAAK8yE,UAAUrzD,GAAO5Q,UACpC7O,KAAKiwE,oBAAoBjwE,KAAKiwE,mBAAmBK,UAAUzhE,EAAUC,SACzED,EAAU4B,OAAO,CACf3B,QAAS9O,KAAKiM,MAAMknE,eAAeJ,EAAM,CAAC9mB,SAAAA,EAAUxsC,MAAAA,EAAOwzD,SAAS,IACpEhnB,SAAUA,EACVmnB,QAAS,IAAMpzE,KAAKqzE,aAAa5zD,KAIrCwxD,iBACE,YAA4Bn/D,IAAxB9R,KAAKg0E,eAAqCh0E,KAAKuxE,aAC5CvxE,KAAK2zE,YAAY3zE,KAAKg0E,eAAiB,GAGhD7C,aACE,YAA4Br/D,IAAxB9R,KAAKg0E,eAAqCh0E,KAAKqxE,cAC5CrxE,KAAK2zE,YAAY3zE,KAAKg0E,eAAiB,GAGhD3C,cACE,OAAOrxE,KAAK2zE,YAAY,GAG1BpC,aACE,OAAOvxE,KAAK2zE,YAAY3zE,KAAKgwE,MAAMz0E,OAAS,GAG9C04E,aACE,OAAOj0E,KAAK2zE,iBAAY7hE,GAG1B6hE,YAAal0D,EAAO/O,GAAkB,GAChC+O,GAASzf,KAAKgwE,MAAMz0E,OACtBkkB,EAAQ,EACCA,EAAQ,IACjBA,EAAQzf,KAAKgwE,MAAMz0E,OAAS,GAG9B,MAAMqW,EAAW5R,KAAKg0E,eAOtB,OALAh0E,KAAKg0E,eAAiBv0D,OACR3N,IAAV2N,GAAuBzf,KAAKiM,MAAMioE,oBACpCl0E,KAAKiM,MAAMioE,mBAAmBl0E,KAAKgzE,mBAGjCtiE,EACE1Q,KAAK8yE,WACHlhE,GAAY,GAAG5R,KAAKuwE,kBAAkB3+D,GACtC6N,GAAS,GAAGzf,KAAKuwE,kBAAkB9wD,GAChCuvD,GAAKr5D,eAAevC,wBAEpB47D,GAAKv+D,OAAOzQ,MAGd9D,QAAQwJ,UAInByuE,WAAYpB,GACV,MAAMtzD,EAAQzf,KAAKgwE,MAAMnsC,QAAQkvC,GACjC,IAAe,IAAXtzD,EACF,MAAM,IAAInkB,MAAM,+DAEhB,OAAO0E,KAAK2zE,YAAYl0D,GAI5BgyD,mBACE,MAAM2C,EAAep0E,KAAKgzE,kBACN,MAAhBoB,EACEp0E,KAAKiM,MAAMooE,qBACbr0E,KAAKiM,MAAMooE,oBAAoBD,GAG7Bp0E,KAAKiM,MAAMqoE,0BACbt0E,KAAKiM,MAAMqoE,2BAKjB1D,kBACM5wE,KAAKiM,MAAMsoE,oBACbv0E,KAAKiM,MAAMsoE,uBAKjB,MAAMrB,GACJtzE,YAAaqM,GACXjM,KAAKw0E,UAAYx0E,KAAKw0E,UAAUxkE,KAAKhQ,MACrCA,KAAKy0E,QAAUz0E,KAAKy0E,QAAQzkE,KAAKhQ,MACjCA,KAAK00E,SAAW10E,KAAK00E,SAAS1kE,KAAKhQ,MACnCA,KAAKisD,SAAWhgD,EAAMggD,SACtBjsD,KAAKozE,QAAUnnE,EAAMmnE,QACrBpzE,KAAK8O,QAAU7C,EAAM6C,QACrB9O,KAAK8O,QAAQmB,iBAAiB,YAAajQ,KAAKw0E,WAChDx0E,KAAK8O,QAAQmB,iBAAiB,UAAWjQ,KAAKy0E,SAC9Cz0E,KAAK8O,QAAQmB,iBAAiB,QAASjQ,KAAK00E,UACxC10E,KAAKisD,UACPjsD,KAAK8O,QAAQygE,UAAUxoE,IAAI,YAE7B/G,KAAK20E,oBAAsB,IAAIxG,IAAW,KACxCnuE,KAAK8O,QAAQc,oBAAoB,YAAa5P,KAAKw0E,WACnDx0E,KAAK8O,QAAQc,oBAAoB,UAAW5P,KAAKy0E,SACjDz0E,KAAK8O,QAAQc,oBAAoB,QAAS5P,KAAK00E,aAEjD1F,GAAKr5D,eAAe3C,eAAehT,KAAK2wD,uBAAuB3gD,KAAKhQ,OAGtEw0E,UAAW9mB,GACTA,EAAMknB,iBAGRH,QAAS/mB,GACPA,EAAMknB,iBAGRF,SAAUhnB,GACRA,EAAMknB,iBACN50E,KAAKozE,UAGP/gE,UACErS,KAAK8O,QAAQwD,SACbtS,KAAK20E,oBAAoBtpB,UAG3B56C,OAAQxE,GACNjM,KAAK8O,QAAQc,oBAAoB,YAAa5P,KAAKw0E,WACnDx0E,KAAK8O,QAAQc,oBAAoB,UAAW5P,KAAKy0E,SACjDz0E,KAAK8O,QAAQc,oBAAoB,QAAS5P,KAAK00E,UAE/C10E,KAAK8O,QAAQoD,WAAWC,aAAalG,EAAM6C,QAAS9O,KAAK8O,SACzD9O,KAAK8O,QAAU7C,EAAM6C,QACrB9O,KAAK8O,QAAQmB,iBAAiB,YAAajQ,KAAKw0E,WAChDx0E,KAAK8O,QAAQmB,iBAAiB,UAAWjQ,KAAKy0E,SAC9Cz0E,KAAK8O,QAAQmB,iBAAiB,QAASjQ,KAAK00E,UACxCzoE,EAAMggD,UACRjsD,KAAK8O,QAAQygE,UAAUxoE,IAAI,YAG7B/G,KAAKisD,SAAWhgD,EAAMggD,SACtBjsD,KAAKozE,QAAUnnE,EAAMmnE,QACrBpE,GAAKr5D,eAAe3C,eAAehT,KAAK2wD,uBAAuB3gD,KAAKhQ,OAGtE2wD,yBACM3wD,KAAKisD,UACPjsD,KAAK8O,QAAQ6hD,wBAAuB,iBYzdnCzqD,eAAe2uE,IAAe7E,MAAEA,EAAF8E,aAASA,EAATC,cAAuBA,EAAvBb,mBAAsCA,IACvE,IAAIc,EACJ,MAAMC,EAAezmE,SAAS0mE,cAC9B,IACI,aAAa,IAAIh5E,SAASwJ,IACtB,IAAIgqE,EAEAuC,EADAG,EAAiB,aAEjB+C,GAAW,EACf,MAAM1kE,EAAUxE,IACRkpE,GAEJ/mB,GAAcgnB,EAAO3kE,OAAOxE,KAEX,mBAAV+jE,IACPN,EAAiBxpE,MAAAA,IACb,MAAMmvE,EAAU1iD,YAAW,IAAMliB,EAAO,CAAE2hE,eAAgB,gBAAiB,KACrEkD,QAAWtF,EAAM/E,GACvB14C,aAAa8iD,GACb5kE,EAAO,CACHu/D,MAAOsF,EACPrD,aAAc,mCACdG,oBAAgBtgE,KAGxBsgE,OAAiBtgE,EACjBmgE,EAAe,+BAEnB,MAAMmD,EAAS,IAAAG,GAAmB,CAC9BvF,MAAO,GACPmD,eAAiBJ,GAASv9D,GAAKlH,OAAOwmE,EAAa/B,EAAMqC,IACzDrB,iBAAmBhB,GAAU,GAAEA,EAAKgC,GACpCb,mBAAAA,EACAK,mBAAoB,KAChBY,GAAW,EACXzvE,KAEJ2uE,oBAAsBtB,IAClBoC,GAAW,EACXzvE,EAAQqtE,IAEZX,eAAAA,EACA1C,eAAAA,EACAuC,aAAAA,EACAK,eAAgB,CAAC,qBAEA,mBAAVtC,GACP5hB,GAAclyD,QAAQwJ,QAAQsqE,GAAO7oE,MAAMmuE,IACvC7kE,EAAO,CAAEu/D,MAAOsF,EAAIlD,oBAAgBtgE,QAG5CkjE,EAAQ7uE,KAAK2kD,UAAU0qB,cAAc,CACjCzC,KAAMqC,EACNnC,SAAS,IAEbmC,EAAO5E,WApDf,QAwDQwE,GACAA,EAAM3iE,UACN4iE,GACAA,EAAazE,SC9DzB,MAAMO,GAAW,GACV,SAAS0E,GAAWC,EAAU1hB,EAAS2hB,GAC1C5E,GAAS1vE,KAAK,CAAEq0E,SAAAA,EAAU1hB,QAAAA,EAAS2hB,KAAAA,ICahCzvE,eAAe0vE,GAA2B51D,EAAQgpC,EAAQ6sB,GAC7D,MAAMnnE,EAAOxS,QAAQuK,IAAIuZ,EAAO6uC,KAAKngD,KAAK9N,KAAIsF,MAAAA,IAAe,IAAA4vE,EACzD,MAAMC,SAAsB,IAAI75E,SAAQ,CAACwJ,EAASo2C,IAAW91C,EAAG3J,SAASuS,EAAIk4C,MAAM,CAACkI,EAAOp4B,KACnFo4B,EACAlT,EAAOkT,GAEPtpD,EAAQkxB,EAAKt6B,SAAS,gBACzBqE,MAAM,UACL4L,OAA+BuF,IAArBlD,EAAIonE,mBAAiDlkE,IAAnBlD,EAAIqnE,WAChDF,EAAan6E,MAAMgT,EAAIonE,aAAaxwB,KAAO,EAAG52C,EAAIqnE,WAAWzwB,MAC7DuwB,EAGAG,SAFmB/L,GAAU59D,EAAQxL,KAAK,MAAO,eAE3B6N,EAAIw1B,MAAMohB,OAAQ,QAAAswB,EAAAlnE,EAAIonE,oBAAJ,IAAAF,OAAA,EAAAA,EAAkBtwB,OAAQ,IACxE,MAAO,IAAK52C,EAAKunE,OAAQD,OAEvB5hB,QAAY8hB,GAAe,CAC7BpG,MAAOthE,EACPomE,aAAc,CAAC/B,EAAMsD,IACT7gE,GAAKzJ,IAAI,KAAM,KACnByJ,GAAKzJ,IAALuqE,GAA6B,CAAElvB,MAAOjhD,KAAKowE,QAAQC,WAAWzD,EAAKjsB,MAAOmkB,MAAOoL,EAAI5C,mBACrFj+D,GAAKzJ,IAAI,MAAO,CAAEc,UAAW,cACzB,SACAkmE,EAAK3uC,MAAMohB,MACfhwC,GAAKzJ,IAAL0qE,GAAiB,CAAE7L,gBAAiBmI,EAAKoD,UAEjDpB,cAAe,SAEfzgB,SACMuhB,EAAc7sB,EAAQsL,GC/B7BpuD,eAAewwE,GAAuB12D,EAAQgpC,EAAQ6sB,GACzD,GAAK71D,EAAO6uC,KAGP,GAAI7uC,EAAO6uC,KAAKtzD,OAAS,EAAG,CAC7B,MAAM+4D,QAAY8hB,GAAe,CAC7BpG,MAAOhwD,EAAO6uC,KACdimB,aAAc,CAAC/B,EAAMsD,IACT7gE,GAAKzJ,IAAI,KAAM,KACnByJ,GAAKzJ,IAALuqE,GAA6B,CAAElvB,MAAO2rB,EAAKjsB,KAAMmkB,MAAOoL,EAAI5C,mBAC5Dj+D,GAAKzJ,IAAI,MAAO,CAAEc,UAAW,cACzB,SACAkmE,EAAK3uC,MAAMohB,OAEvBuvB,cAAe,SAEfzgB,SACMuhB,EAAc7sB,EAAQsL,QAE3Bt0C,EAAO6uC,KAAKtzD,OAAS,SACpBs6E,EAAc7sB,EAAQhpC,EAAO6uC,KAAK,IChBhD,SAAS8nB,GAAiB9pB,GACtB,MACM3pD,EADS2pD,EAAQR,MAAMzrD,IAAd2nE,IACMvnB,QAAO,CAAC41B,EAAM9W,IAAQA,EAAI7uB,MAAM2lC,KACrD,MAAO,CACH/oB,KAAMgpB,GAAQhqB,EAAQgB,MACtBipB,UAAWjqB,EAAQxgD,KACnB0qE,cAAe7zE,EAAMkhC,MACrB4yC,YAAa9zE,EAAM6hC,IACnBkyC,gBAAiBpqB,EAAQqqB,SAAW3O,GAAY1b,EAAQqqB,UAAU9yC,WAAQtyB,EAC1E5F,SAAU2gD,EAAQhB,WAAagB,EAAQhB,WAAWjrD,IAAI+1E,IAAkBzzC,KAAKi0C,IAAgB,IAGrG,SAASA,GAAap9E,EAAGqJ,GACrB,MAAMg0E,EAAOr9E,EAAEk9E,gBAAkBl9E,EAAEk9E,gBAAkBl9E,EAAEg9E,cACjDM,EAAOj0E,EAAE6zE,gBAAkB7zE,EAAE6zE,gBAAkB7zE,EAAE2zE,cACvD,OAAOK,EAAKp2E,QAAQq2E,GF5BxBC,GAAW,mBAAoB,8BAA+BC,IAAD,CACzDC,YAAa,oDACbzqB,kBAAkB/D,GACd,MAAMkf,EAAWC,GAAoBnf,GACrC,IAAKkf,EACD,OACJ,MAAMvZ,QAAe4oB,EAAK7oB,UAAUwZ,EAASphB,MACvC9mC,QAAe2uC,EAAOC,QAAQ,aAAcsZ,SAC5C0N,GAA2B51D,EAAQgpC,EAAQuuB,EAAK1B,oBCV9DyB,GAAW,mBAAoB,gCAAiCC,IAAD,CAC3DC,YAAa,gDACbzqB,kBAAkB/D,GACd,MAAMkf,EAAWC,GAAoBnf,GACrC,IAAKkf,EACD,OACJ,MAAMvZ,QAAe4oB,EAAK7oB,UAAUwZ,EAASphB,MACvC9mC,QAAe2uC,EAAOC,QAAQ,aAAcsZ,SAC5CwO,GAAuB12D,EAAQgpC,EAAQuuB,EAAK1B,oBCwB1D,MAAMgB,GAAU,CAEZY,UAAW,OAEX35D,OAAQ,SACR45D,uBAAwB,SAIxB9qE,MAAO,QACP+qE,cAAe,QAEft/B,OAAQ,SAERhX,SAAU,WACVu2C,OAAQ,WACRt4D,OAAQ,WAERu4D,gBAAiB,QAEjBj4E,YAAa,cAEbk4E,KAAM,OAENC,UAAW,YACXxpC,KAAM,YAENypC,SAAU,WACVC,iBAAkB,WAElB7wB,MAAO,WACP8wB,MAAO,WACPC,IAAK,WACLC,IAAK,WACLC,YAAa,WACbC,UAAW,WAEXC,cAAe,WACfC,MAAO,WAEPxpD,OAAQ,SAKRypD,QAAI3mE,EACJ4mE,aAAS5mE,EACT6mE,aAAS7mE,EACT8mE,YAAQ9mE,EACRrV,UAAMqV,EACN2N,WAAO3N,EACP+mE,eAAW/mE,EACXgnE,sBAAkBhnE,EAClBinE,sBAAkBjnE,GCxFf,MAAMknE,GACTp5E,YAAY8uD,GACR1uD,KAAK0uD,UAAYA,EACjB1uD,KAAKi5E,kBAAoB,IAAIpzE,IAAI,IACjC7F,KAAK+nE,cAAgBC,KACrBhoE,KAAKioE,SAAW,IAChBjoE,KAAKsvE,YAAc,IAAI9gB,EACvB,MAAM0qB,EAAsB,IAAIrzE,IAAI,CAAC,IAAK,IAAK,MACzCszE,EAAuB,IAAItzE,IAAI,IACrC7F,KAAKsvE,YAAYvoE,IAAIZ,KAAKkgD,OAAOwsB,QAAQ,0CAA2CuG,IAChFp5E,KAAKi5E,kBAAoBG,EAASF,EAAsBC,MAGhE9tB,UACIrrD,KAAKsvE,YAAYjkB,UAErB0B,uBAAuB/D,EAAQQ,GAC3B,IACI,MAAMpB,EAAWY,EAAOC,UACxB,QAAiBn3C,IAAbs2C,EACA,OACJ,MAAMuG,QAAe3uD,KAAK0uD,UAAUtG,GAM9BxxB,SALe+3B,EAAOC,QAAQ,gBAAiB,CACjD9H,KAAMsB,EACN5C,KAAMgE,EAAI/D,IAAM,EAChBjlC,OAAQgpC,EAAI9D,OAAS,KAELmJ,KAEpB,MAAO,CACHwqB,WAFeziD,EAAKo5C,MAAMpvE,IAAX04E,IAGfC,gBAAiB3iD,EAAK4iD,cACtBC,gBAAiB7iD,EAAK8iD,mBAG9B,MAAOj/E,GACH,SCrCL,SAASk/E,GAAmBC,GAC/B,OAAOpkE,GAAKzJ,IAAI,KAAM,KAAM6tE,EAAWpC,aCKpC,MAAMqC,GACTj6E,YAAY8uD,EAAWorB,GACnB95E,KAAK0uD,UAAYA,EACjB1uD,KAAK85E,WAAaA,EAClB95E,KAAK01E,SAAW1N,KACXpnE,KAAKkD,GAAOA,EAAE/H,SAAS,KAAQ,IAAG+H,EAAMA,IACxC/C,KAAK,MACVf,KAAK+5E,mBAAqB,WAC1B/5E,KAAKg6E,kBAAoB,EACzBh6E,KAAKi6E,mBAAqB9zE,KAAKkgD,OAAOxsD,IAAI,mBAAmBqgF,iCAC7Dl6E,KAAKm6E,sBAAuB,EAEhCptB,qBAAqBqS,GACjB,MAAM8I,EAoMd,SAA0B9I,GACtB,MAAMjkE,EAAOikE,EAAKpW,OAAOC,UACzB,QAAan3C,IAAT3W,EACA,OAEJ,MAAO,CACH2rD,KAAM3rD,EACNqqD,KAAM4Z,EAAKgb,eAAe30B,IAAM,EAChCjlC,OAAQ4+C,EAAKgb,eAAe10B,OAAS,GA5MpB20B,CAAiBjb,GAC5B9b,EAiLd,SAAmB8b,GAGf,MAGMkb,EAHOlb,EAAKpW,OACb0B,YACA6vB,eAAe,CAAC,CAACnb,EAAKgb,eAAe30B,IAAK,GAAI2Z,EAAKgb,iBACnCj6E,MAAMq6E,IAC3B,OAAIF,EACOA,EAAQ,GAER,GA3LQG,CAAUrb,GACzB,IAAK8I,EACD,MAAO,GAEX,MAAMwS,EAsSd,SAAoBp3B,GAChB,QAAexxC,IAAXwxC,EACA,OACJ,IAAKA,EACD,OACJ,MAAMtmD,EAAIsmD,EAAO1nD,OAAO,GACxB,GAAIq9E,GAAkBtyE,IAAI3J,GACtB,OAAOA,EAEX,OA/S6B29E,CA0MjC,SAAkCvgD,EAAQovB,GACtC,IAAIoxB,EACJ,MAAM13E,EAAQ,IAAI2iD,EAAKK,MAAM,CAAC,EAAG,GAAIsD,GAKrC,OAJApvB,EAAOygD,qBAAqB,KAAM33E,GAAO,EAAG43E,UAAAA,EAAWC,KAAAA,MACnDH,EAAWE,EACXC,OAEGH,EAjNiCI,CAAyB5b,EAAKpW,OAAO0B,YAAa0U,EAAKgb,iBAC3F,IAAK92B,IAAW8b,EAAK6b,oBAAsBP,EACvC,MAAO,GAEX,GAAIQ,GAAc9b,EAAK+b,gBAAgB9xB,iBAAkB,sBACpD6xB,GAAc9b,EAAK+b,gBAAgB9xB,iBAAkB,wBACtD,MAAO,GAEX,IACI,IAAI+xB,QAAoBp7E,KAAKq7E,wBAAwB,CACjD/3B,OAAAA,EACA4kB,SAAAA,EACAwS,iBAAAA,EACAO,kBAAmB7b,EAAK6b,oBAK5B,OAHAG,EAAcxN,GAAW3qE,OAAOm4E,EAAa93B,EAAQ,CACjD5pD,IAAK,gBAEF0hF,EAAYx6E,KAAK06E,IAAD,CACnBC,kBAAmBD,EAAWE,iBACxBpc,EAAKpW,OAAOyyB,qBAAqBH,EAAWE,kBAC5Cl4B,EACN4kB,SAAAA,KACGloE,KAAK07E,oBAAoBJ,MACzBK,GAAkBvc,EAAMkc,OAGnC,MAAOtsB,GACH,MAAO,IAGfjC,mCAAmCuuB,GAC/B,MAAI,SAAUA,KAAgB,eAAgBA,GACnCt7E,KAAK47E,qBAAqBN,GAG1B,KAGfO,sBAAsBC,GAClB,MAAMhhF,EAAIghF,EAAIR,WACd,IAAKxgF,EAAEihF,UACH,OACJ,IAAK/7E,KAAKg8E,gBACN,OACJ,MAAMrtB,EAAS3uD,KAAKg8E,gBAAgBrtB,OACpC,IAAItf,EAAUrvC,KAAK07E,oBAAoB5gF,GACvCszD,GAAc,WAAa,IAAA6tB,EAGvB,GAFK5sC,IACDA,QAAgBrvC,KAAK47E,qBAAqB9gF,MAC1C,QAAAmhF,EAAC5sC,SAAD,IAAA4sC,OAAA,EAACA,EAAS5sC,QAAQ6sC,aAClB,OACJ,IAAIt1C,EAEAA,EADuC,IAAvCyI,EAAQA,QAAQ6sC,YAAY3gF,OACnB8zC,EAAQA,QAAQ6sC,YAAY,SAGtB9F,GAAe,CAC1BpG,MAAO3gC,EAAQA,QAAQ6sC,YACvBpH,aAAYqH,GACZpH,cAAe,gBAGlBnuC,UAEC5mC,KAAK85E,WAAWlzC,EAAOupC,SACxBvpC,EAAOmqC,gBAEN70E,QAAQuK,IAAImgC,EAAOmqC,SAASnwE,KAAKw7E,GAAQztB,EAAOC,QAAQ,yBAA0B,CACpFoF,QAASooB,SAtBH,IA0BlBrvB,2BAA2BuuB,GAAY,IAAAe,EACnC,QAA8BvqE,IAA1BwpE,EAAWgB,WACX,OAAO,KACX,IAAKt8E,KAAKg8E,gBACN,OAAO,KACX,MAAMO,QAAcv8E,KAAKg8E,gBAAgBrtB,OAAOC,QAAQ,yBAA0B,CAC9E4tB,WAAY,CAAClB,EAAWgB,eACrBt8E,KAAKg8E,gBAAgB9T,WAE5B,IAAKqU,EAAM1tB,KACP,OAAO,KACX,MAAOxf,GAAWktC,EAAM1tB,KAGxB,IAAKxf,EACD,OAAO,KACX,IAAIswB,EAAQtwB,EAAQmY,aAChBmY,EAAMpkE,QAAU,GACE,MAAlBokE,EAAM,GAAGtzD,MACTszD,EAAM,GAAGtzD,OAASivE,EAAWmB,WACX,MAAlB9c,EAAM,GAAGtzD,OACTszD,EAAQA,EAAM/jE,MAAM,IAExB,IAAI8gF,EAAa/c,EAAM/+D,KAAKe,GAAMA,EAAE0K,OAAMtL,KAAK,IAC/C,MAAM47E,EAAarB,EAAWS,WAA6C,KAAhC,QAAAM,EAAAhtC,EAAQ6sC,mBAAR,IAAAG,OAAA,EAAAA,EAAqB9gF,QACvD8zC,EAAQ6sC,YAAY,GAAG1E,YAAzB,OACD,GACFmF,IACAD,EAAaC,GACjB,MAAMnF,EAAcmF,EAChBttC,EAAQmY,aAAa5mD,KAAKe,GAAMA,EAAE0K,OAAMtL,KAAK,KAC5CsuC,EAAQsY,cAAgB,OAAStY,EAAQsY,cAAc/mD,KAAKe,GAAMA,EAAE0K,OAAMtL,KAAK,KAAO,IAE3F,OADAf,KAAKg8E,gBAAgB3sC,QAAQtsC,IAAIu4E,EAAWsB,YAAa,CAAEvtC,QAAAA,EAASqtC,WAAAA,EAAYlF,YAAAA,IACzE,IACA8D,EACHjsC,QAAAA,EACAqtC,WAAAA,EACAlF,YAAAA,GAGRkE,oBAAoBJ,GAChB,IAAKt7E,KAAKg8E,gBACN,OAAO,KACX,MAAMr6E,EAAI3B,KAAKg8E,gBAAgB3sC,QAAQx1C,IAAIyhF,EAAWsB,aACtD,OAAKj7E,GACM,KAIforD,+BAA8BzJ,OAAEA,EAAF4kB,SAAUA,EAAVwS,iBAAoBA,EAApBO,kBAAsCA,IAChE,GAAIj7E,KAAKg8E,kBAAoBf,EAAmB,CAC5C,MAAM4B,EAAU78E,KAAKg8E,gBAAgB9T,SAC/B4U,EAAUC,GAAiB/8E,KAAKg8E,gBAAgB14B,OAAQu5B,EAAQr8D,QAChEw8D,EAAUD,GAAiBz5B,EAAQ4kB,EAAS1nD,QAClD,GAAIq8D,EAAQ/1B,OAASohB,EAASphB,MAAQ+1B,EAAQr3B,OAAS0iB,EAAS1iB,MAAQs3B,IAAYE,GAChC,IAA5Ch9E,KAAKg8E,gBAAgBZ,YAAY7/E,OACjC,OAAOyE,KAAKg8E,gBAAgBZ,YAIxC,MAAMzsB,QAAe3uD,KAAK0uD,UAAUwZ,EAASphB,MACvCs0B,QAedl1E,gBAAsCyoD,OAAEA,EAAFuZ,SAAUA,EAAVwS,iBAAoBA,IACtD,GAAIp9D,SAASqxC,EAAO5uD,QAAQY,MAAM,KAAK,GAAI,KAAO,EAAG,CAAA,IAAAs8E,EAEjD,MAAMhoB,QAAoBtG,EAAOC,QAAQ,iBAAkB,CACvDsuB,8BAA8B,EAC9BC,8BAA8B,EAC9BzC,iBAAAA,KACGxS,IAEP,OAAOjT,EAAYpG,KAAKx4B,QAAQz1B,IAAIw8E,GAA4BptE,KAAK,KAAjC,QAAAitE,EAAuChoB,EAAYpG,YAAnD,IAAAouB,OAAA,EAAuCA,EAAkBI,qBAS7F,aAL0B1uB,EAAOC,QAAQ,cAAe,CACpDsuB,8BAA8B,EAC9BC,8BAA8B,KAC3BjV,KAEYrZ,KAAKjuD,IAAIw8E,GAA4BptE,KAAK,UAAM8B,IAjCzCwrE,CAAuB,CAC7C3uB,OAAAA,EACAuZ,SAAAA,EACAwS,iBAAkBO,OAAoBnpE,EAAY4oE,IAStD,OAPA16E,KAAKg8E,gBAAkB,CACnBrtB,OAAAA,EACAuZ,SAAAA,EACA5kB,OAAAA,EACA83B,YAAAA,EACA/rC,QAAS,IAAIliC,KAEViuE,GAyBf,MAAMZ,GAAkB,wLAgBxB,SAASuC,GAAiBz5B,EAAQi6B,GAE9B,OAAOA,GADmB,MAAXj6B,EAAiB,EAAIA,EAAO/nD,QAuB/C,SAAS2/E,GAAcsC,EAAQC,GAC3B,IAAK,MAAMC,KAASF,EAChB,GAAIE,EAAM3hF,SAAS0hF,GACf,OAAO,EAGf,OAAO,EAEX,SAASL,GAA4BC,EAAoB/mD,GACrD,MAAO,CACHsmD,YAAatmD,EAAMtvB,KACnBqF,UAA2ByF,IAArBwkB,EAAMqnD,WAA2BrnD,EAAMqnD,WAAarnD,EAAMtvB,KAChEy1E,UAAWnmD,EAAMu3B,KACjB2tB,iBAAkBllD,EAAMsnD,gBAAkBrV,GAAYjyC,EAAMsnD,sBAAmB9rE,EAC/Ey8B,KAAMsoC,GAAQvgD,EAAMu3B,MACpBwvB,mBAAAA,EACAf,gBAA6BxqE,IAAjBwkB,EAAMh9B,OAAuB,CAAE0N,KAAMsvB,EAAMtvB,KAAM1N,OAAQg9B,EAAMh9B,QAAWg9B,EAAMtvB,KAC5F+0E,UAAWzlD,EAAMylD,WASzB,SAASJ,GAAkBvc,EAAMtkE,GAC7B,OAAIqL,KAAKkgD,OAAOxsD,IAAI,uCAChB,CAAC,WAAY,UAAUkC,SAASjB,EAAE2hF,aAR1C,SAAgBrd,GACZ,MAAMhlC,EAASglC,EAAKpW,OAAO0B,YACrBmzB,EAAKze,EAAKgb,eAEhB,QADkBhgD,EAAOmgD,eAAe,CAACsD,EAAI,CAACA,EAAGp4B,IAAKrrB,EAAO0jD,iBAAiBD,EAAGp4B,QAC9DtlD,MAAM,SAKpB49E,CAAO3e,GACD,IAAKtkE,EAAGkjF,QAAYljF,EAAEuR,KAAJ,OAAgBA,UAAMyF,GAGxChX,EAEf,MAAM+7E,GAAU,CACZY,UAAW,UACX35D,OAAQ,SACR45D,uBAAwB,SACxB9qE,MAAO,QACP+qE,cAAe,QACft/B,OAAQ,SACRhX,SAAU,WACVu2C,OAAQ,WACRt4D,OAAQ,WACRu4D,gBAAiB,WACjBj4E,YAAa,SACbk4E,KAAM,OACNC,UAAW,OACXxpC,KAAM,OACNuqC,iBAAkB,OAClBC,iBAAkB,OAClBf,SAAU,WACVC,iBAAkB,WAClB7wB,MAAO,WACP8wB,MAAO,SACPC,IAAK,WACLC,IAAK,WACLC,YAAa,WACbC,UAAW,WACXC,cAAe,WACfC,MAAO,WACPxpD,OAAQ,QACR2pD,QAAS,UACTF,QAAI3mE,EACJ4mE,aAAS5mE,EACT8mE,YAAQ9mE,EACRrV,UAAMqV,EACN2N,WAAO3N,EACP+mE,eAAW/mE,GAaTmnE,GAAoB,IAAIpzE,IAAItM,OAAOC,KAVZ,CACzBykF,IAAK,KACLrvD,IAAK,KACL9R,IAAK,KACLohE,IAAK,KACLC,IAAK,KACLC,IAAK,KACL1vD,IAAK,KACL2vD,IAAK,QCpRFn4E,eAAeo4E,GAA8B3vB,EAAQ4vB,GACxD,MAAMC,QAqBVt4E,eAAqCyoD,EAAQ4vB,GACzC,IACI,aAAa5vB,EAAOC,QAAQ,yBAA0B,CAClD6vB,cAAe,aACZF,IAGX,MACI,QA7B6BG,CAAsB/vB,EAAQ4vB,GAC/D,IAAKC,EACD,MAAO,GACX,QAAgC1sE,IAA5B0sE,EAAmB3vB,MAAyD,IAAnC2vB,EAAmB3vB,KAAKtzD,OACjE,MAAO,GAEX,MAAMorC,EAAU,GAChB,IAAK,MAAMg4C,KAAYH,EAAmB3vB,KACtC,IAAK,MAAMjoB,KAAU+3C,EAASh4C,QAC1BA,EAAQtlC,KAAK,CACTu9E,aAAcD,EAAS33E,KACvB63E,oBAAqBF,EAASnH,YAC9BsH,cAAeP,EACfQ,WAAYn4C,EAAO5/B,KACnBg4E,kBAAmBp4C,EAAO4wC,YAC1ByH,gBAAoCntE,IAAxB6sE,EAASM,YAA2BN,EAASM,aAIrE,OAAOt4C,EAaJzgC,eAAeg5E,GAAeC,EAAgBxwB,EAAQ4oB,GACzD,MAAM6H,QAAsBzwB,EAAOC,QAAQ,sBAAuB,IAC3DuwB,EAAeL,cAClBH,SAAUQ,EAAeP,aACzBh4C,OAAQu4C,EAAeJ,aAE3B,QAA2BjtE,IAAvBstE,EAAcvwB,KACd,OACJ,MAAMwwB,MAAEA,EAAFC,eAASA,EAATC,eAAyBA,GAAmBH,EAAcvwB,KAEhE,SADM0oB,EAAKuC,WAAWuF,QACCvtE,IAAnBwtE,QAAmDxtE,IAAnBytE,EAChC,OACJ,MAAMv2B,QAAe7iD,KAAK2kD,UAAU00B,KAAKF,EAAgB,CACrDG,gBAAgB,EAChBC,YAAaH,EAAe/5B,KAAO,EACnCm6B,cAAeJ,EAAe/+D,OAAS,UAErCra,KAAK4qE,SAAS6O,SAASz5E,KAAKgkD,MAAMxF,QAAQqE,GAAS,8BArF7DsuB,GAAW,mBAAoB,iCAAkCC,IAAD,CAC5DC,YAAa,sDACbzqB,kBAAkB/D,GACd,MAAMkf,EAAWC,GAAoBnf,GACrC,IAAKkf,EACD,OACJ,MAAM2X,EAAY72B,EAAO82B,yBACnBnxB,QAAe4oB,EAAK7oB,UAAUwZ,EAASphB,MACvCi5B,EAAYF,EAAU3gC,UACtBgpB,EACA,CACEphB,KAAMohB,EAASphB,KACf6E,UAAWk0B,EAAUz7C,MAAMqhB,IAAM,EACjCu6B,YAAaH,EAAUz7C,MAAMshB,OAAS,EACtCkG,QAASi0B,EAAU96C,IAAI0gB,IAAM,EAC7Bw6B,UAAWJ,EAAU96C,IAAI2gB,OAAS,GAEpC/e,QAAgB23C,GAA8B3vB,EAAQoxB,GAC5D,GAAuB,IAAnBp5C,EAAQprC,OAER,YADA4K,KAAK+O,cAAcgrE,QAAQ,qDAG/B,MAAMf,QAAuB/I,GAAe,CACxCpG,MAAOrpC,EACPmuC,aAAc,CAAC/B,EAAMsD,IACT7gE,GAAKzJ,IAAI,KAAM,KACnByJ,GAAKzJ,IAALuqE,GAA6B,CAAElvB,MAAQ,GAAE2rB,EAAK8L,wBAAwB9L,EAAKiM,oBAAqB/T,MAAOoL,EAAI5C,oBAEnHsB,cAAe,2BAEIjjE,IAAnBqtE,SAEED,GAAeC,EAAgBxwB,EAAQ4oB,QCnC9C,MAAM4I,GACTvgF,YAAYwgF,EAAgBC,EAAavG,GACrC95E,KAAKogF,eAAiBA,EACtBpgF,KAAKqgF,YAAcA,EACnBrgF,KAAK85E,WAAaA,EAClB95E,KAAKsgF,eAAiB,IAAIpsD,QAE9B64B,uBAAuBwzB,EAAYr9E,GAC/B,MAAMklD,EAAWm4B,EAAWt3B,UAC5B,QAAiBn3C,IAAbs2C,EACA,MAAO,GACX,MAAMkT,EAASt7D,KAAKqgF,YAAYG,iBAAiBp4B,EAAUllD,GACrDyrD,QAAe3uD,KAAKogF,eAAevmF,IAAIuuD,GACvCq4B,QAAuBzgF,KAAK0gF,kBAAkB/xB,GAIpD,OAHepoD,MAAMglD,KAAK+P,GACrBr4D,QAAQ+rD,QAAyBl9C,IAAfk9C,EAAMjH,MAAsB04B,EAAe95E,IAAIqoD,EAAMjH,QACvEnnD,KAAKouD,GAAUuZ,GAAYvZ,KAGpCjC,iBAAiBwzB,EAAYnG,GACzB,MAAMhyB,EAAWm4B,EAAWt3B,UAC5B,QAAiBn3C,IAAbs2C,EACA,MAAO,GACX,MAAMuG,QAAe3uD,KAAKogF,eAAevmF,IAAIuuD,GACvCq4B,QAAuBzgF,KAAK0gF,kBAAkB/xB,GAC9CgyB,EAAWp6E,MAAMglD,KAAKvrD,KAAKqgF,YAAYO,YAAYx4B,EAAUgyB,IAC9Dn3E,QAAQ+rD,QAAyBl9C,IAAfk9C,EAAMjH,MAAsB04B,EAAe95E,IAAIqoD,EAAMjH,QACvEnnD,KAAKouD,GAAUL,EAAOC,QAAQ,eAAgB,CAC/C9H,KAAMsB,EACNuD,UAAWqD,EAAM5qB,MAAMohB,KACvBw6B,YAAahxB,EAAM5qB,MAAM5jB,OACzBorC,QAASoD,EAAMjqB,IAAIygB,KACnBy6B,UAAWjxB,EAAMjqB,IAAIvkB,OACrBqgE,WAAY,CAAC7xB,EAAMjH,UAEjB+4B,QAAc5kF,QAAQuK,IAAIk6E,GAC1BI,EAAU,GAChB,IAAK,MAAM/gE,KAAU8gE,EACjB,GAAI9gE,EAAO6uC,KACP,IAAK,MAAMmyB,KAAOhhE,EAAO6uC,KACrBkyB,EAAQ1/E,KAAK2/E,GAIzB,MAAMC,QAAkBC,GAA8BvyB,EAAQ,CAC1D7H,KAAMsB,KACHmB,GAAgB6wB,KAGvB,OADA2G,EAAQ1/E,QAAQ4/E,GACTF,EAEXh0B,eAAei0B,GACX,GAAI,YAAaA,EACb,OAAOhhF,KAAK85E,WAAWkH,EAAI7Q,SAG3B,OAAOgR,GAAeH,QADDhhF,KAAKogF,eAAevmF,IAAImnF,EAAIlC,cAAch4B,MAC5B,CAC/BgzB,WAAY95E,KAAK85E,aAI7BzuB,WAGA0B,wBAAwB4B,GACpB,IAAIyyB,EAAQphF,KAAKsgF,eAAezmF,IAAI80D,GACpC,GAAIyyB,EACA,OAAOA,EAEX,MAAMphE,QAAe2uC,EAAOC,QAAQ,yBACpC,IAAK5uC,EAAO6uC,KACR,MAAM,IAAIvzD,MAAM,+BAIpB,OAFA8lF,EAAQ,IAAIv7E,IAAIma,EAAO6uC,KAAKjuD,KAAKmnD,GAASzqC,SAASyqC,EAAM,OACzD/nD,KAAKsgF,eAAev9E,IAAI4rD,EAAQyyB,GACzBA,GCxDfl7E,eAAem7E,GAAWC,EAAKC,GAC3B,IAAIp2B,EACJ,IACI,aAAa,IAAIjvD,SAAQ,CAACwJ,EAASo2C,KAC/B,IACI,MAAM0lC,EAAM,IAAIlpB,EAAoB,CAChCtE,QAASstB,EACTniE,KAAM,CAAC,UACPlf,QAAS,CAAEwhF,IAAKF,GAChBG,KAAO35B,IACU,IAATA,EACAriD,IAEAo2C,EAAO,IAAIxgD,MAAO,oCAAmCysD,OAGjEoD,EAAOq2B,EAAIG,iBAAiB7lC,GAEhC,MAAOrhD,GACHqhD,EAAOrhD,OAjBnB,QAsBQ0wD,GACAA,EAAKE,WC7CjBisB,GAAW,mBAAoB,oBAAqBC,IAAD,CAC/CC,YAAa,qEACbzqB,kBAAkB/D,GACd,MAAMlC,EAAOkC,EAAOC,UACpB,QAAan3C,IAATg1C,EACA,OACJ,MAAM6H,QAAe4oB,EAAK7oB,UAAU5H,GACpCywB,EAAKqK,uBAAkB9vE,GACvB,MAAM0jD,QAAoB7G,EAAOC,QAAQ,cAAe,CACpD9H,KAAAA,EACA+6B,kBAAkB,IAEhBC,EAAQ,IAAIj8E,IAAI2vD,EAAY3G,KAAKkzB,WACvCD,EAAMjtE,OAAO2gD,EAAY3G,KAAKmzB,gBAC9B,IAAIC,EAAa,EACjB,MAAMC,EAAW,IAAIJ,EAAMvhE,UAAU3f,KAAKrB,IAAM4iF,OAkBtCptE,EAlB+C45C,EAAOC,QAAQ,wBAAyB,CAAE9H,KAAMvnD,EAAG6iF,QAAQ,IAkBjG34C,EAlB0G,KACzHw4C,GAAc,EACd1K,EAAK8K,eAAe,CAAE7uD,IAAKsuD,EAAM5yD,KAAM10B,MAAOynF,KAiBtDltE,EAAQ5N,KAAKsiC,EAAUA,GAChB10B,EAFX,IAAkBA,EAAS00B,KAdnB,IAEI,UADsBvtC,QAAQuK,IAAIy7E,IACtBj+E,MAAM+b,IAA2B,IAAhBA,EAAO6uC,OAChC,MAAM,IAAIvzD,MAAM,eAEpBi8E,EAAKqK,kBAAkB,CAAEltB,SAAS,IAEtC,MAAO1F,GACH,MAAM/5C,EAAM+5C,EACZD,QAAQC,MAAM/5C,GACdsiE,EAAKqK,kBAAkB,CAAEltB,SAAS,EAAOt/C,QAASH,EAAIG,gBC5BlEkiE,GAAW,mBAAoB,8BAA+BC,IAAD,CACzDC,YAAa,uEACbzqB,kBAAkB/D,GAAQ,IAAAs5B,EACtB,MAAMx7B,EAAOkC,EAAOC,UACpB,QAAan3C,IAATg1C,EACA,OACJ,MAAM6H,QAAe4oB,EAAK7oB,UAAU5H,GAC9B0O,QAAoB7G,EAAOC,QAAQ,cAAe,CACpD9H,KAAAA,EACA+6B,kBAAkB,IAEhBC,EAAQ,IAAIj8E,IAAJ,QAAAy8E,EAAQ9sB,EAAY3G,KAAKkzB,iBAAzB,IAAAO,OAAA,EAAQA,EAA4Br/E,QAAQgQ,IAEzDA,EAAGmrC,SAAS,mBAAqBnrC,EAAGlX,SAAU,GAAEZ,EAAK4vE,kBAAkB5vE,EAAK4vE,UACvEv3C,EAAMsuD,EAAM5yD,KAMlB,GAAIy/B,EAAO8I,mBAAoB,CAC3B,MAAMtM,EAAOwD,EAAOhiD,GAAG,cAAemvE,IAC9B,SAAUA,GACVgG,EAAMjtE,OAAOinE,EAAIh1B,MACrBywB,EAAK8K,eAAe,CAAE7uD,IAAAA,EAAKh5B,MAAOg5B,EAAMsuD,EAAM5yD,UAElDqoD,EAAK8K,eAAe,CAAE7uD,IAAAA,EAAKh5B,MAAO,UAC5Bm0D,EAAOC,QAAQ,mBAAoB,CAAE9H,KAAAA,EAAM3S,MAAO,IACxDgX,EAAKE,cAEJ,CACD,IAAIk3B,EACJ,MAAMp3B,EAAOwD,EAAOhiD,GAAG,cAAemvE,SACZhqE,IAAlBywE,GACAloF,OAAOk4B,aAAagwD,GACxBA,EAAgBloF,OAAOs4B,YAAW,KAC9BmvD,EAAMrwE,QACN05C,EAAKE,UACLksB,EAAK8K,eAAe,CAAE7uD,IAAAA,EAAKh5B,MAAOg5B,MACnC,KACC,SAAUsoD,GACVgG,EAAMjtE,OAAOinE,EAAIh1B,MACF,IAAfg7B,EAAM5yD,OACNi8B,EAAKE,UACLhxD,OAAOk4B,aAAagwD,IAExBhL,EAAK8K,eAAe,CAAE7uD,IAAAA,EAAKh5B,MAAOg5B,EAAMsuD,EAAM5yD,UAElDqoD,EAAK8K,eAAe,CAAE7uD,IAAAA,EAAKh5B,MAAO,UAC5Bm0D,EAAOC,QAAQ,mBAAoB,CAAE9H,KAAAA,EAAM3S,MAAO,UClDpEmjC,GAAW,iBAAkB,2BAA4BC,IAAD,CACpDC,YAAa,uBACbgL,cACIjL,EAAKkL,mBCFbnL,GAAW,mBAAoB,0BAA2BC,IAAD,CACrDC,YAAa,8CACbzqB,kBAAkB/D,GACd,MAAMZ,EAAWY,EAAOC,UACxB,QAAiBn3C,IAAbs2C,EACA,OACJ,MAAMs6B,EAAS,GACf,IAAK,MAAM7C,KAAa72B,EAAO25B,0BACtB9C,EAAU3gC,WACXwjC,EAAOrhF,K7DMZ,CACHmkD,MAF6BtiD,E6DLY28E,G7DO7Bz7C,MAAMqhB,IAAM,EACxBjlC,OAAQtd,EAAMkhC,MAAMshB,OAAS,EAC7BkG,QAAS1oD,EAAM6hC,IAAI0gB,IAAM,EACzBw6B,UAAW/8E,EAAM6hC,IAAI2gB,OAAS,IAL/B,IAA8BxiD,E6DD7B,GAAsB,IAAlBw/E,EAAOnnF,OAAc,CACrB,MAAMwpC,EAAMikB,EAAO0B,YAAYG,iBAC/B63B,EAAOrhF,KAAK,CACRmkD,KAAM,EACNhlC,OAAQ,EACRorC,QAAS7mB,EAAI0gB,IAAM,EACnBw6B,UAAWl7C,EAAI2gB,OAAS,IAGhC,MAAMiJ,QAAe4oB,EAAK7oB,UAAUtG,GAC9Bi3B,EAAQ,GAEd,IAAK,MAAMn8E,KAASw/E,EAAQ,CACxB,MAAM1iE,QAAe2uC,EAAOC,QAAQ,SAAU,IAAK1rD,EAAO4jD,KAAMsB,IAC5DpoC,EAAO6uC,MACPwwB,EAAMh+E,QAAQ2e,EAAO6uC,MAGzBwwB,EAAM9jF,OAAS,GACfytD,EAAO45B,UAAS,MAM5B,SAAoB55B,EAAQq2B,GAExB,IAAK,IAAIrkF,EAAIqkF,EAAM9jF,OAAS,EAAGP,GAAK,EAAGA,IACnCguD,EAAO65B,qBAAqBta,GAAY8W,EAAMrkF,IAAKqkF,EAAMrkF,GAAG8nF,SARpDC,CAAW/5B,EAAQq2B,WJhCnC/H,GAAW,mBAAoB,gCAAgC,KAAA,CAC3DE,YAAa,8EACbzqB,kBAAkB/D,EAAQg6B,GACtB,MAAMC,EAAc98E,KAAKowE,QAAQ2M,iBACjC,GAA2B,IAAvBD,EAAY1nF,OACZ,OAAOynF,IACX,MAAMG,EAAcn6B,EAAOC,UAC3B,QAAoBn3C,IAAhBqxE,EACA,OACJ,MAAMC,SAAmB7b,GAAc4b,EAAa,QAAQnd,UAC5D,IAAK,MAAMqd,KAAcJ,EACjBI,EAAW5S,SAAS0S,WACd9B,GAAW+B,EAAWC,EAAWp6B,WACvC9iD,KAAK+O,cAAcouE,WAAY,yCAAwCD,EAAWp6B,iBKflGquB,GAAW,mBAAoB,+BAAgCC,IAAD,CAC1DC,YAAa,0BACbzqB,kBAAkB/D,GACd,MAAMZ,EAAWY,EAAOC,UACxB,QAAiBn3C,IAAbs2C,EACA,OACJ,MAAMuG,QAAe4oB,EAAK7oB,UAAUtG,GAC9BpoC,QAAe2uC,EAAOC,QAAQ,kBAAmB,CACnD8uB,MAAO,CAAEnvC,KAAM,OAAQpvB,KAAM,CAAE2nC,KAAMsB,MAErCpoC,EAAO6uC,KAAKtzD,OAAS,SACfg8E,EAAKuC,WAAW95D,EAAO6uC,WAXzCyoB,GCAW,mBAAoB,8BAA+BC,IAAD,CACzDC,YAAa,kBACbzqB,kBAAkB/D,GACd,MAAM7tD,EAAO6tD,EAAOC,UACpB,QAAan3C,IAAT3W,EACA,OACJ,MAAMwzD,QAAe4oB,EAAK7oB,UAAUvzD,SAC9BwzD,EAAOC,QAAQ,mFCH5B,WAQC,IAAInxC,EAAsB,iBAARrjB,MAAoBA,KAAKA,OAASA,MAAQA,MACjC,iBAAjBF,GAA6BA,EAAOI,SAAPJ,GAA7BA,GACA8F,MACA,GAGNujF,EAAqB9lE,EAAK3a,EAG1B0gF,EAAaj9E,MAAMhK,UAAWknF,EAAWlqF,OAAOgD,UAChDmnF,EAAgC,oBAAXzhF,OAAyBA,OAAO1F,UAAY,KAGjE8E,EAAOmiF,EAAWniF,KAClBzF,EAAQ4nF,EAAW5nF,MACnBU,EAAWmnF,EAASnnF,SACpBE,EAAiBinF,EAASjnF,eAI1BmnF,EAAgBp9E,MAAMC,QACtB8sB,EAAa/5B,OAAOC,KACpB26B,EAAe56B,OAAOs4B,OAGtBoI,EAAO,aAGPn3B,EAAI,SAAS8gF,GACf,OAAIA,aAAe9gF,EAAU8gF,EACvB5jF,gBAAgB8C,OACtB9C,KAAK6jF,SAAWD,GADiB,IAAI9gF,EAAE8gF,SASnB,IAAlBE,IAAkCA,GAAQlmE,SAM5CH,EAAK3a,EAAIA,IAL4Bgb,OAAOF,UAAxCkmE,KACQA,GAAiBhhF,GAFyBihF,GAI1CjhF,EAAZghF,GAAQhhF,EAARihF,IAMFjhF,EAAE4gD,QAAU,QAKZ,IAmBIsgC,EAnBAC,EAAa,SAAShlE,EAAM1S,EAAS23E,GACvC,QAAgB,IAAZ33E,EAAoB,OAAO0S,EAC/B,OAAoB,MAAZilE,EAAmB,EAAIA,GAC7B,KAAK,EAAG,OAAO,SAAS1pF,GACtB,OAAOykB,EAAKxiB,KAAK8P,EAAS/R,IAG5B,KAAK,EAAG,OAAO,SAASA,EAAOilB,EAAOuB,GACpC,OAAO/B,EAAKxiB,KAAK8P,EAAS/R,EAAOilB,EAAOuB,IAE1C,KAAK,EAAG,OAAO,SAASxB,EAAahlB,EAAOilB,EAAOuB,GACjD,OAAO/B,EAAKxiB,KAAK8P,EAASiT,EAAahlB,EAAOilB,EAAOuB,IAGzD,OAAO,WACL,OAAO/B,EAAKD,MAAMzS,EAASs9B,aAS3Bg3B,EAAK,SAASrmE,EAAO+R,EAAS23E,GAChC,OAAIphF,EAAEyc,WAAaykE,EAAwBlhF,EAAEyc,SAAS/kB,EAAO+R,GAChD,MAAT/R,EAAsBsI,EAAEo+B,SACxBp+B,EAAEs6B,WAAW5iC,GAAeypF,EAAWzpF,EAAO+R,EAAS23E,GACvDphF,EAAEyyB,SAAS/6B,KAAWsI,EAAE0D,QAAQhM,GAAesI,EAAE2qE,QAAQjzE,GACtDsI,EAAEu+B,SAAS7mC,IAMpBsI,EAAEyc,SAAWykE,EAAkB,SAASxpF,EAAO+R,GAC7C,OAAOs0D,EAAGrmE,EAAO+R,EAASmyB,EAAAA,IAQ5B,IAAIylD,EAAgB,SAASllE,EAAM1M,GAEjC,OADAA,EAA2B,MAAdA,EAAqB0M,EAAK1jB,OAAS,GAAKgX,EAC9C,WAIL,IAHA,IAAIhX,EAASm1B,KAAK8C,IAAIqW,UAAUtuC,OAASgX,EAAY,GACjDwpC,EAAOx1C,MAAMhL,GACbkkB,EAAQ,EACLA,EAAQlkB,EAAQkkB,IACrBs8B,EAAKt8B,GAASoqB,UAAUpqB,EAAQlN,GAElC,OAAQA,GACN,KAAK,EAAG,OAAO0M,EAAKxiB,KAAKuD,KAAM+7C,GAC/B,KAAK,EAAG,OAAO98B,EAAKxiB,KAAKuD,KAAM6pC,UAAU,GAAIkS,GAC7C,KAAK,EAAG,OAAO98B,EAAKxiB,KAAKuD,KAAM6pC,UAAU,GAAIA,UAAU,GAAIkS,GAE7D,IAAI58B,EAAO5Y,MAAMgM,EAAa,GAC9B,IAAKkN,EAAQ,EAAGA,EAAQlN,EAAYkN,IAClCN,EAAKM,GAASoqB,UAAUpqB,GAG1B,OADAN,EAAK5M,GAAcwpC,EACZ98B,EAAKD,MAAMhf,KAAMmf,KAKxBkW,EAAa,SAAS94B,GACxB,IAAKuG,EAAEyyB,SAASh5B,GAAY,MAAO,GACnC,GAAI43B,EAAc,OAAOA,EAAa53B,GACtC09B,EAAK19B,UAAYA,EACjB,IAAIyjB,EAAS,IAAIia,EAEjB,OADAA,EAAK19B,UAAY,KACVyjB,GAGLokE,EAAkB,SAAS1qF,GAC7B,OAAO,SAASkqF,GACd,OAAc,MAAPA,OAAc,EAASA,EAAIlqF,KAIlCiN,EAAM,SAASi9E,EAAKzoF,GACtB,OAAc,MAAPyoF,GAAepnF,EAAeC,KAAKmnF,EAAKzoF,IAG7CkpF,EAAU,SAAST,EAAKzoF,GAE1B,IADA,IAAII,EAASJ,EAAKI,OACTP,EAAI,EAAGA,EAAIO,EAAQP,IAAK,CAC/B,GAAW,MAAP4oF,EAAa,OACjBA,EAAMA,EAAIzoF,EAAKH,IAEjB,OAAOO,EAASqoF,OAAM,GAOpBU,EAAkB5zD,KAAK6zD,IAAI,EAAG,IAAM,EACpCC,EAAYJ,EAAgB,UAC5BviD,EAAc,SAAS7gB,GACzB,IAAIzlB,EAASipF,EAAUxjE,GACvB,MAAwB,iBAAVzlB,GAAsBA,GAAU,GAAKA,GAAU+oF,GAS/DxhF,EAAEygD,KAAOzgD,EAAErJ,QAAU,SAASmqF,EAAKrkE,EAAUhT,GAE3C,IAAIvR,EAAGO,EACP,GAFAgkB,EAAW0kE,EAAW1kE,EAAUhT,GAE5Bs1B,EAAY+hD,GACd,IAAK5oF,EAAI,EAAGO,EAASqoF,EAAIroF,OAAQP,EAAIO,EAAQP,IAC3CukB,EAASqkE,EAAI5oF,GAAIA,EAAG4oF,OAEjB,CACL,IAAIpqF,EAAOsJ,EAAEtJ,KAAKoqF,GAClB,IAAK5oF,EAAI,EAAGO,EAAS/B,EAAK+B,OAAQP,EAAIO,EAAQP,IAC5CukB,EAASqkE,EAAIpqF,EAAKwB,IAAKxB,EAAKwB,GAAI4oF,GAGpC,OAAOA,GAIT9gF,EAAElC,IAAMkC,EAAE2hF,QAAU,SAASb,EAAKrkE,EAAUhT,GAC1CgT,EAAWshD,EAAGthD,EAAUhT,GAIxB,IAHA,IAAI/S,GAAQqoC,EAAY+hD,IAAQ9gF,EAAEtJ,KAAKoqF,GACnCroF,GAAU/B,GAAQoqF,GAAKroF,OACvBwlF,EAAUx6E,MAAMhL,GACXkkB,EAAQ,EAAGA,EAAQlkB,EAAQkkB,IAAS,CAC3C,IAAIilE,EAAalrF,EAAOA,EAAKimB,GAASA,EACtCshE,EAAQthE,GAASF,EAASqkE,EAAIc,GAAaA,EAAYd,GAEzD,OAAO7C,GAIT,IAAI4D,EAAe,SAASngC,GAG1B,IAAIogC,EAAU,SAAShB,EAAKrkE,EAAU8nD,EAAMnsB,GAC1C,IAAI1hD,GAAQqoC,EAAY+hD,IAAQ9gF,EAAEtJ,KAAKoqF,GACnCroF,GAAU/B,GAAQoqF,GAAKroF,OACvBkkB,EAAQ+kC,EAAM,EAAI,EAAIjpD,EAAS,EAKnC,IAJK2/C,IACHmsB,EAAOuc,EAAIpqF,EAAOA,EAAKimB,GAASA,GAChCA,GAAS+kC,GAEJ/kC,GAAS,GAAKA,EAAQlkB,EAAQkkB,GAAS+kC,EAAK,CACjD,IAAIkgC,EAAalrF,EAAOA,EAAKimB,GAASA,EACtC4nD,EAAO9nD,EAAS8nD,EAAMuc,EAAIc,GAAaA,EAAYd,GAErD,OAAOvc,GAGT,OAAO,SAASuc,EAAKrkE,EAAU8nD,EAAM96D,GACnC,IAAI2uC,EAAUrR,UAAUtuC,QAAU,EAClC,OAAOqpF,EAAQhB,EAAKK,EAAW1kE,EAAUhT,EAAS,GAAI86D,EAAMnsB,KAMhEp4C,EAAEk+C,OAASl+C,EAAE+hF,MAAQ/hF,EAAEgiF,OAASH,EAAa,GAG7C7hF,EAAEm+C,YAAcn+C,EAAEiiF,MAAQJ,GAAc,GAGxC7hF,EAAEmvC,KAAOnvC,EAAEkiF,OAAS,SAASpB,EAAK/jE,EAAWtT,GAC3C,IACI7S,GADYmoC,EAAY+hD,GAAO9gF,EAAEytC,UAAYztC,EAAE07C,SAC/BolC,EAAK/jE,EAAWtT,GACpC,QAAY,IAAR7S,IAA2B,IAATA,EAAY,OAAOkqF,EAAIlqF,IAK/CoJ,EAAEG,OAASH,EAAEsyE,OAAS,SAASwO,EAAK/jE,EAAWtT,GAC7C,IAAIw0E,EAAU,GAKd,OAJAlhE,EAAYghD,EAAGhhD,EAAWtT,GAC1BzJ,EAAEygD,KAAKqgC,GAAK,SAASppF,EAAOilB,EAAOwlE,GAC7BplE,EAAUrlB,EAAOilB,EAAOwlE,IAAOlE,EAAQ1/E,KAAK7G,MAE3CumF,GAITj+E,EAAEg5C,OAAS,SAAS8nC,EAAK/jE,EAAWtT,GAClC,OAAOzJ,EAAEG,OAAO2gF,EAAK9gF,EAAEyxC,OAAOssB,EAAGhhD,IAAatT,IAKhDzJ,EAAEqB,MAAQrB,EAAE2D,IAAM,SAASm9E,EAAK/jE,EAAWtT,GACzCsT,EAAYghD,EAAGhhD,EAAWtT,GAG1B,IAFA,IAAI/S,GAAQqoC,EAAY+hD,IAAQ9gF,EAAEtJ,KAAKoqF,GACnCroF,GAAU/B,GAAQoqF,GAAKroF,OAClBkkB,EAAQ,EAAGA,EAAQlkB,EAAQkkB,IAAS,CAC3C,IAAIilE,EAAalrF,EAAOA,EAAKimB,GAASA,EACtC,IAAKI,EAAU+jE,EAAIc,GAAaA,EAAYd,GAAM,OAAO,EAE3D,OAAO,GAKT9gF,EAAEmB,KAAOnB,EAAEoiF,IAAM,SAAStB,EAAK/jE,EAAWtT,GACxCsT,EAAYghD,EAAGhhD,EAAWtT,GAG1B,IAFA,IAAI/S,GAAQqoC,EAAY+hD,IAAQ9gF,EAAEtJ,KAAKoqF,GACnCroF,GAAU/B,GAAQoqF,GAAKroF,OAClBkkB,EAAQ,EAAGA,EAAQlkB,EAAQkkB,IAAS,CAC3C,IAAIilE,EAAalrF,EAAOA,EAAKimB,GAASA,EACtC,GAAII,EAAU+jE,EAAIc,GAAaA,EAAYd,GAAM,OAAO,EAE1D,OAAO,GAKT9gF,EAAE2tE,SAAW3tE,EAAE/G,SAAW+G,EAAEqiF,QAAU,SAASvB,EAAK7Q,EAAM5xD,EAAW8nB,GAGnE,OAFKpH,EAAY+hD,KAAMA,EAAM9gF,EAAEyd,OAAOqjE,KACd,iBAAbziE,GAAyB8nB,KAAO9nB,EAAY,GAChDre,EAAE+gC,QAAQ+/C,EAAK7Q,EAAM5xD,IAAc,GAI5Cre,EAAE0zC,OAAS2tC,GAAc,SAASP,EAAKzoF,EAAMgkB,GAC3C,IAAIimE,EAAanmE,EAOjB,OANInc,EAAEs6B,WAAWjiC,GACf8jB,EAAO9jB,EACE2H,EAAE0D,QAAQrL,KACnBiqF,EAAcjqF,EAAKS,MAAM,GAAI,GAC7BT,EAAOA,EAAKA,EAAKI,OAAS,IAErBuH,EAAElC,IAAIgjF,GAAK,SAASr3E,GACzB,IAAI8rC,EAASp5B,EACb,IAAKo5B,EAAQ,CAIX,GAHI+sC,GAAeA,EAAY7pF,SAC7BgR,EAAU83E,EAAQ93E,EAAS64E,IAEd,MAAX74E,EAAiB,OACrB8rC,EAAS9rC,EAAQpR,GAEnB,OAAiB,MAAVk9C,EAAiBA,EAASA,EAAOr5B,MAAMzS,EAAS4S,SAK3Drc,EAAEuiF,MAAQ,SAASzB,EAAKlqF,GACtB,OAAOoJ,EAAElC,IAAIgjF,EAAK9gF,EAAEu+B,SAAS3nC,KAK/BoJ,EAAEwiF,MAAQ,SAAS1B,EAAK2B,GACtB,OAAOziF,EAAEG,OAAO2gF,EAAK9gF,EAAE2qE,QAAQ8X,KAKjCziF,EAAE0iF,UAAY,SAAS5B,EAAK2B,GAC1B,OAAOziF,EAAEmvC,KAAK2xC,EAAK9gF,EAAE2qE,QAAQ8X,KAI/BziF,EAAE0wB,IAAM,SAASowD,EAAKrkE,EAAUhT,GAC9B,IACI/R,EAAOghC,EADPxb,GAAS,EAAA,EAAWylE,GAAe,EAAA,EAEvC,GAAgB,MAAZlmE,GAAuC,iBAAZA,GAAyC,iBAAVqkE,EAAI,IAAyB,MAAPA,EAElF,IAAK,IAAI5oF,EAAI,EAAGO,GADhBqoF,EAAM/hD,EAAY+hD,GAAOA,EAAM9gF,EAAEyd,OAAOqjE,IACXroF,OAAQP,EAAIO,EAAQP,IAElC,OADbR,EAAQopF,EAAI5oF,KACSR,EAAQwlB,IAC3BA,EAASxlB,QAIb+kB,EAAWshD,EAAGthD,EAAUhT,GACxBzJ,EAAEygD,KAAKqgC,GAAK,SAASliF,EAAG+d,EAAOwlE,KAC7BzpD,EAAWjc,EAAS7d,EAAG+d,EAAOwlE,IACfQ,GAAgBjqD,KAAa,EAAA,GAAaxb,KAAW,EAAA,KAClEA,EAASte,EACT+jF,EAAejqD,MAIrB,OAAOxb,GAITld,EAAE4wB,IAAM,SAASkwD,EAAKrkE,EAAUhT,GAC9B,IACI/R,EAAOghC,EADPxb,EAAS0e,EAAAA,EAAU+mD,EAAe/mD,EAAAA,EAEtC,GAAgB,MAAZnf,GAAuC,iBAAZA,GAAyC,iBAAVqkE,EAAI,IAAyB,MAAPA,EAElF,IAAK,IAAI5oF,EAAI,EAAGO,GADhBqoF,EAAM/hD,EAAY+hD,GAAOA,EAAM9gF,EAAEyd,OAAOqjE,IACXroF,OAAQP,EAAIO,EAAQP,IAElC,OADbR,EAAQopF,EAAI5oF,KACSR,EAAQwlB,IAC3BA,EAASxlB,QAIb+kB,EAAWshD,EAAGthD,EAAUhT,GACxBzJ,EAAEygD,KAAKqgC,GAAK,SAASliF,EAAG+d,EAAOwlE,KAC7BzpD,EAAWjc,EAAS7d,EAAG+d,EAAOwlE,IACfQ,GAAgBjqD,IAAakD,EAAAA,GAAY1e,IAAW0e,EAAAA,KACjE1e,EAASte,EACT+jF,EAAejqD,MAIrB,OAAOxb,GAITld,EAAEo5C,QAAU,SAAS0nC,GACnB,OAAO9gF,EAAEq+C,OAAOyiC,EAAKllD,EAAAA,IAOvB57B,EAAEq+C,OAAS,SAASyiC,EAAK1oF,EAAG+tC,GAC1B,GAAS,MAAL/tC,GAAa+tC,EAEf,OADKpH,EAAY+hD,KAAMA,EAAM9gF,EAAEyd,OAAOqjE,IAC/BA,EAAI9gF,EAAEgxB,OAAO8vD,EAAIroF,OAAS,IAEnC,IAAI4lD,EAAStf,EAAY+hD,GAAO9gF,EAAEqtC,MAAMyzC,GAAO9gF,EAAEyd,OAAOqjE,GACpDroF,EAASipF,EAAUrjC,GACvBjmD,EAAIw1B,KAAK8C,IAAI9C,KAAKgD,IAAIx4B,EAAGK,GAAS,GAElC,IADA,IAAIsjC,EAAOtjC,EAAS,EACXkkB,EAAQ,EAAGA,EAAQvkB,EAAGukB,IAAS,CACtC,IAAIowB,EAAO/sC,EAAEgxB,OAAOrU,EAAOof,GACvBkiB,EAAOI,EAAO1hC,GAClB0hC,EAAO1hC,GAAS0hC,EAAOtR,GACvBsR,EAAOtR,GAAQkR,EAEjB,OAAOI,EAAOvlD,MAAM,EAAGV,IAIzB4H,EAAE0vC,OAAS,SAASoxC,EAAKrkE,EAAUhT,GACjC,IAAIkT,EAAQ,EAEZ,OADAF,EAAWshD,EAAGthD,EAAUhT,GACjBzJ,EAAEuiF,MAAMviF,EAAElC,IAAIgjF,GAAK,SAASppF,EAAOd,EAAKurF,GAC7C,MAAO,CACLzqF,MAAOA,EACPilB,MAAOA,IACP2jB,SAAU7jB,EAAS/kB,EAAOd,EAAKurF,OAEhC/hD,MAAK,SAASwiD,EAAMC,GACrB,IAAI5rF,EAAI2rF,EAAKtiD,SACThgC,EAAIuiF,EAAMviD,SACd,GAAIrpC,IAAMqJ,EAAG,CACX,GAAIrJ,EAAIqJ,QAAW,IAANrJ,EAAc,OAAO,EAClC,GAAIA,EAAIqJ,QAAW,IAANA,EAAc,OAAQ,EAErC,OAAOsiF,EAAKjmE,MAAQkmE,EAAMlmE,SACxB,UAIN,IAAI4xB,EAAQ,SAASu0C,EAAUrzC,GAC7B,OAAO,SAASqxC,EAAKrkE,EAAUhT,GAC7B,IAAIyT,EAASuyB,EAAY,CAAC,GAAI,IAAM,GAMpC,OALAhzB,EAAWshD,EAAGthD,EAAUhT,GACxBzJ,EAAEygD,KAAKqgC,GAAK,SAASppF,EAAOilB,GAC1B,IAAI/lB,EAAM6lB,EAAS/kB,EAAOilB,EAAOmkE,GACjCgC,EAAS5lE,EAAQxlB,EAAOd,MAEnBsmB,IAMXld,EAAEsvC,QAAUf,GAAM,SAASrxB,EAAQxlB,EAAOd,GACpCiN,EAAIqZ,EAAQtmB,GAAMsmB,EAAOtmB,GAAK2H,KAAK7G,GAAawlB,EAAOtmB,GAAO,CAACc,MAKrEsI,EAAE+iF,QAAUx0C,GAAM,SAASrxB,EAAQxlB,EAAOd,GACxCsmB,EAAOtmB,GAAOc,KAMhBsI,EAAEkvC,QAAUX,GAAM,SAASrxB,EAAQxlB,EAAOd,GACpCiN,EAAIqZ,EAAQtmB,GAAMsmB,EAAOtmB,KAAasmB,EAAOtmB,GAAO,KAG1D,IAAIosF,EAAc,mEAElBhjF,EAAEwyC,QAAU,SAASsuC,GACnB,OAAKA,EACD9gF,EAAE0D,QAAQo9E,GAAahoF,EAAMa,KAAKmnF,GAClC9gF,EAAEqyC,SAASyuC,GAENA,EAAIzjF,MAAM2lF,GAEfjkD,EAAY+hD,GAAa9gF,EAAElC,IAAIgjF,EAAK9gF,EAAEo+B,UACnCp+B,EAAEyd,OAAOqjE,GAPC,IAWnB9gF,EAAEosB,KAAO,SAAS00D,GAChB,OAAW,MAAPA,EAAoB,EACjB/hD,EAAY+hD,GAAOA,EAAIroF,OAASuH,EAAEtJ,KAAKoqF,GAAKroF,QAKrDuH,EAAEyvC,UAAYlB,GAAM,SAASrxB,EAAQxlB,EAAOurF,GAC1C/lE,EAAO+lE,EAAO,EAAI,GAAG1kF,KAAK7G,MACzB,GAQHsI,EAAE2gD,MAAQ3gD,EAAE2tC,KAAO3tC,EAAE25C,KAAO,SAASp9B,EAAOnkB,EAAG+tC,GAC7C,OAAa,MAAT5pB,GAAiBA,EAAM9jB,OAAS,EAAe,MAALL,OAAY,EAAS,GAC1D,MAALA,GAAa+tC,EAAc5pB,EAAM,GAC9Bvc,EAAEo4C,QAAQ77B,EAAOA,EAAM9jB,OAASL,IAMzC4H,EAAEo4C,QAAU,SAAS77B,EAAOnkB,EAAG+tC,GAC7B,OAAOrtC,EAAMa,KAAK4iB,EAAO,EAAGqR,KAAK8C,IAAI,EAAGnU,EAAM9jB,QAAe,MAALL,GAAa+tC,EAAQ,EAAI/tC,MAKnF4H,EAAE+7B,KAAO,SAASxf,EAAOnkB,EAAG+tC,GAC1B,OAAa,MAAT5pB,GAAiBA,EAAM9jB,OAAS,EAAe,MAALL,OAAY,EAAS,GAC1D,MAALA,GAAa+tC,EAAc5pB,EAAMA,EAAM9jB,OAAS,GAC7CuH,EAAEi5C,KAAK18B,EAAOqR,KAAK8C,IAAI,EAAGnU,EAAM9jB,OAASL,KAMlD4H,EAAEi5C,KAAOj5C,EAAE05C,KAAO15C,EAAEq3C,KAAO,SAAS96B,EAAOnkB,EAAG+tC,GAC5C,OAAOrtC,EAAMa,KAAK4iB,EAAY,MAALnkB,GAAa+tC,EAAQ,EAAI/tC,IAIpD4H,EAAE82C,QAAU,SAASv6B,GACnB,OAAOvc,EAAEG,OAAOoc,EAAOnY,UAIzB,IAAImnC,EAAU,SAAShV,EAAO2sD,EAASC,EAAQC,GAG7C,IADA,IAAIC,GADJD,EAASA,GAAU,IACF3qF,OACRP,EAAI,EAAGO,EAASipF,EAAUnrD,GAAQr+B,EAAIO,EAAQP,IAAK,CAC1D,IAAIR,EAAQ6+B,EAAMr+B,GAClB,GAAI6mC,EAAYrnC,KAAWsI,EAAE0D,QAAQhM,IAAUsI,EAAEm0B,YAAYz8B,IAE3D,GAAIwrF,EAEF,IADA,IAAIpjF,EAAI,EAAGs2D,EAAM1+D,EAAMe,OAChBqH,EAAIs2D,GAAKgtB,EAAOC,KAAS3rF,EAAMoI,UAEtCyrC,EAAQ7zC,EAAOwrF,EAASC,EAAQC,GAChCC,EAAMD,EAAO3qF,YAEL0qF,IACVC,EAAOC,KAAS3rF,GAGpB,OAAO0rF,GAITpjF,EAAEurC,QAAU,SAAShvB,EAAO2mE,GAC1B,OAAO33C,EAAQhvB,EAAO2mE,GAAS,IAIjCljF,EAAEyuC,QAAU4yC,GAAc,SAAS9kE,EAAO+mE,GACxC,OAAOtjF,EAAEstC,WAAW/wB,EAAO+mE,MAS7BtjF,EAAEo6C,KAAOp6C,EAAEujF,OAAS,SAAShnE,EAAOinE,EAAU/mE,EAAUhT,GACjDzJ,EAAEk8C,UAAUsnC,KACf/5E,EAAUgT,EACVA,EAAW+mE,EACXA,GAAW,GAEG,MAAZ/mE,IAAkBA,EAAWshD,EAAGthD,EAAUhT,IAG9C,IAFA,IAAIyT,EAAS,GACT2e,EAAO,GACF3jC,EAAI,EAAGO,EAASipF,EAAUnlE,GAAQrkB,EAAIO,EAAQP,IAAK,CAC1D,IAAIR,EAAQ6kB,EAAMrkB,GACdwgC,EAAWjc,EAAWA,EAAS/kB,EAAOQ,EAAGqkB,GAAS7kB,EAClD8rF,IAAa/mE,GACVvkB,GAAK2jC,IAASnD,GAAUxb,EAAO3e,KAAK7G,GACzCmkC,EAAOnD,GACEjc,EACJzc,EAAE2tE,SAAS9xC,EAAMnD,KACpBmD,EAAKt9B,KAAKm6B,GACVxb,EAAO3e,KAAK7G,IAEJsI,EAAE2tE,SAASzwD,EAAQxlB,IAC7BwlB,EAAO3e,KAAK7G,GAGhB,OAAOwlB,GAKTld,EAAEmuC,MAAQkzC,GAAc,SAAS9lD,GAC/B,OAAOv7B,EAAEo6C,KAAK7O,EAAQhQ,GAAQ,GAAM,OAKtCv7B,EAAE4tC,aAAe,SAASrxB,GAGxB,IAFA,IAAIW,EAAS,GACTioB,EAAa4B,UAAUtuC,OAClBP,EAAI,EAAGO,EAASipF,EAAUnlE,GAAQrkB,EAAIO,EAAQP,IAAK,CAC1D,IAAI+3E,EAAO1zD,EAAMrkB,GACjB,IAAI8H,EAAE2tE,SAASzwD,EAAQ+yD,GAAvB,CACA,IAAInwE,EACJ,IAAKA,EAAI,EAAGA,EAAIqlC,GACTnlC,EAAE2tE,SAAS5mC,UAAUjnC,GAAImwE,GADJnwE,KAGxBA,IAAMqlC,GAAYjoB,EAAO3e,KAAK0xE,IAEpC,OAAO/yD,GAKTld,EAAEstC,WAAa+zC,GAAc,SAAS9kE,EAAO08B,GAE3C,OADAA,EAAO1N,EAAQ0N,GAAM,GAAM,GACpBj5C,EAAEG,OAAOoc,GAAO,SAAS7kB,GAC9B,OAAQsI,EAAE2tE,SAAS10B,EAAMvhD,SAM7BsI,EAAEsuC,MAAQ,SAAS/xB,GAIjB,IAHA,IAAI9jB,EAAS8jB,GAASvc,EAAE0wB,IAAInU,EAAOmlE,GAAWjpF,QAAU,EACpDykB,EAASzZ,MAAMhL,GAEVkkB,EAAQ,EAAGA,EAAQlkB,EAAQkkB,IAClCO,EAAOP,GAAS3c,EAAEuiF,MAAMhmE,EAAOI,GAEjC,OAAOO,GAKTld,EAAE6uC,IAAMwyC,EAAcrhF,EAAEsuC,OAKxBtuC,EAAE4e,OAAS,SAASujE,EAAM1kE,GAExB,IADA,IAAIP,EAAS,GACJhlB,EAAI,EAAGO,EAASipF,EAAUS,GAAOjqF,EAAIO,EAAQP,IAChDulB,EACFP,EAAOilE,EAAKjqF,IAAMulB,EAAOvlB,GAEzBglB,EAAOilE,EAAKjqF,GAAG,IAAMiqF,EAAKjqF,GAAG,GAGjC,OAAOglB,GAIT,IAAIumE,EAA6B,SAAS/hC,GACxC,OAAO,SAASnlC,EAAOQ,EAAWtT,GAChCsT,EAAYghD,EAAGhhD,EAAWtT,GAG1B,IAFA,IAAIhR,EAASipF,EAAUnlE,GACnBI,EAAQ+kC,EAAM,EAAI,EAAIjpD,EAAS,EAC5BkkB,GAAS,GAAKA,EAAQlkB,EAAQkkB,GAAS+kC,EAC5C,GAAI3kC,EAAUR,EAAMI,GAAQA,EAAOJ,GAAQ,OAAOI,EAEpD,OAAQ,IAKZ3c,EAAEytC,UAAYg2C,EAA2B,GACzCzjF,EAAE0tC,cAAgB+1C,GAA4B,GAI9CzjF,EAAEs+C,YAAc,SAAS/hC,EAAOukE,EAAKrkE,EAAUhT,GAI7C,IAFA,IAAI/R,GADJ+kB,EAAWshD,EAAGthD,EAAUhT,EAAS,IACZq3E,GACjBz+C,EAAM,EAAGC,EAAOo/C,EAAUnlE,GACvB8lB,EAAMC,GAAM,CACjB,IAAIC,EAAM3U,KAAKqC,OAAOoS,EAAMC,GAAQ,GAChC7lB,EAASF,EAAMgmB,IAAQ7qC,EAAO2qC,EAAME,EAAM,EAAQD,EAAOC,EAE/D,OAAOF,GAIT,IAAIqhD,EAAoB,SAAShiC,EAAKiiC,EAAerlC,GACnD,OAAO,SAAS/hC,EAAO0zD,EAAMoT,GAC3B,IAAInrF,EAAI,EAAGO,EAASipF,EAAUnlE,GAC9B,GAAkB,iBAAP8mE,EACL3hC,EAAM,EACRxpD,EAAImrF,GAAO,EAAIA,EAAMz1D,KAAK8C,IAAI2yD,EAAM5qF,EAAQP,GAE5CO,EAAS4qF,GAAO,EAAIz1D,KAAKgD,IAAIyyD,EAAM,EAAG5qF,GAAU4qF,EAAM5qF,EAAS,OAE5D,GAAI6lD,GAAe+kC,GAAO5qF,EAE/B,OAAO8jB,EADP8mE,EAAM/kC,EAAY/hC,EAAO0zD,MACHA,EAAOoT,GAAO,EAEtC,GAAIpT,GAASA,EAEX,OADAoT,EAAMM,EAAc7qF,EAAMa,KAAK4iB,EAAOrkB,EAAGO,GAASuH,EAAExB,SACtC,EAAI6kF,EAAMnrF,GAAK,EAE/B,IAAKmrF,EAAM3hC,EAAM,EAAIxpD,EAAIO,EAAS,EAAG4qF,GAAO,GAAKA,EAAM5qF,EAAQ4qF,GAAO3hC,EACpE,GAAInlC,EAAM8mE,KAASpT,EAAM,OAAOoT,EAElC,OAAQ,IAQZrjF,EAAE+gC,QAAU2iD,EAAkB,EAAG1jF,EAAEytC,UAAWztC,EAAEs+C,aAChDt+C,EAAEg9C,YAAc0mC,GAAmB,EAAG1jF,EAAE0tC,eAKxC1tC,EAAEI,MAAQ,SAASkhC,EAAO22C,EAAMzuC,GAClB,MAARyuC,IACFA,EAAO32C,GAAS,EAChBA,EAAQ,GAELkI,IACHA,EAAOyuC,EAAO32C,GAAS,EAAI,GAM7B,IAHA,IAAI7oC,EAASm1B,KAAK8C,IAAI9C,KAAKmC,MAAMkoD,EAAO32C,GAASkI,GAAO,GACpDppC,EAAQqD,MAAMhL,GAET4qF,EAAM,EAAGA,EAAM5qF,EAAQ4qF,IAAO/hD,GAASkI,EAC9CppC,EAAMijF,GAAO/hD,EAGf,OAAOlhC,GAKTJ,EAAE62C,MAAQ,SAASt6B,EAAOowB,GACxB,GAAa,MAATA,GAAiBA,EAAQ,EAAG,MAAO,GAGvC,IAFA,IAAIzvB,EAAS,GACThlB,EAAI,EAAGO,EAAS8jB,EAAM9jB,OACnBP,EAAIO,GACTykB,EAAO3e,KAAKzF,EAAMa,KAAK4iB,EAAOrkB,EAAGA,GAAKy0C,IAExC,OAAOzvB,GAQT,IAAI0mE,EAAe,SAASC,EAAYC,EAAWr6E,EAASs6E,EAAgB1nE,GAC1E,KAAM0nE,aAA0BD,GAAY,OAAOD,EAAW3nE,MAAMzS,EAAS4S,GAC7E,IAAI/kB,EAAOi7B,EAAWsxD,EAAWpqF,WAC7ByjB,EAAS2mE,EAAW3nE,MAAM5kB,EAAM+kB,GACpC,OAAIrc,EAAEyyB,SAASvV,GAAgBA,EACxB5lB,GAMT0I,EAAEkN,KAAOm0E,GAAc,SAASllE,EAAM1S,EAAS4S,GAC7C,IAAKrc,EAAEs6B,WAAWne,GAAO,MAAM,IAAItjB,UAAU,qCAC7C,IAAImrF,EAAQ3C,GAAc,SAAS4C,GACjC,OAAOL,EAAaznE,EAAM6nE,EAAOv6E,EAASvM,KAAMmf,EAAK3S,OAAOu6E,OAE9D,OAAOD,KAOThkF,EAAE6xC,QAAUwvC,GAAc,SAASllE,EAAM+nE,GACvC,IAAIxkE,EAAc1f,EAAE6xC,QAAQnyB,YACxBskE,EAAQ,WAGV,IAFA,IAAIxoC,EAAW,EAAG/iD,EAASyrF,EAAUzrF,OACjC4jB,EAAO5Y,MAAMhL,GACRP,EAAI,EAAGA,EAAIO,EAAQP,IAC1BmkB,EAAKnkB,GAAKgsF,EAAUhsF,KAAOwnB,EAAcqnB,UAAUyU,KAAc0oC,EAAUhsF,GAE7E,KAAOsjD,EAAWzU,UAAUtuC,QAAQ4jB,EAAK9d,KAAKwoC,UAAUyU,MACxD,OAAOooC,EAAaznE,EAAM6nE,EAAO9mF,KAAMA,KAAMmf,IAE/C,OAAO2nE,KAGThkF,EAAE6xC,QAAQnyB,YAAc1f,EAKxBA,EAAEm1C,QAAUksC,GAAc,SAASP,EAAKpqF,GAEtC,IAAIimB,GADJjmB,EAAO60C,EAAQ70C,GAAM,GAAO,IACX+B,OACjB,GAAIkkB,EAAQ,EAAG,MAAM,IAAInkB,MAAM,yCAC/B,KAAOmkB,KAAS,CACd,IAAI/lB,EAAMF,EAAKimB,GACfmkE,EAAIlqF,GAAOoJ,EAAEkN,KAAK4zE,EAAIlqF,GAAMkqF,OAKhC9gF,EAAEgtC,QAAU,SAAS7wB,EAAMgoE,GACzB,IAAIn3C,EAAU,SAASp2C,GACrB,IAAIwoB,EAAQ4tB,EAAQ5tB,MAChBglE,EAAU,IAAMD,EAASA,EAAOjoE,MAAMhf,KAAM6pC,WAAanwC,GAE7D,OADKiN,EAAIub,EAAOglE,KAAUhlE,EAAMglE,GAAWjoE,EAAKD,MAAMhf,KAAM6pC,YACrD3nB,EAAMglE,IAGf,OADAp3C,EAAQ5tB,MAAQ,GACT4tB,GAKThtC,EAAEqxC,MAAQgwC,GAAc,SAASllE,EAAMkc,EAAMhc,GAC3C,OAAOwT,YAAW,WAChB,OAAO1T,EAAKD,MAAM,KAAMG,KACvBgc,MAKLr4B,EAAEoxC,MAAQpxC,EAAE6xC,QAAQ7xC,EAAEqxC,MAAOrxC,EAAG,GAOhCA,EAAEg6C,SAAW,SAAS79B,EAAMkc,EAAMl7B,GAChC,IAAIo1E,EAAS9oE,EAAS4S,EAAMa,EACxBgkB,EAAW,EACV/jC,IAASA,EAAU,IAExB,IAAIknF,EAAQ,WACVnjD,GAA+B,IAApB/jC,EAAQkzC,QAAoB,EAAIrwC,EAAE2vB,MAC7C4iD,EAAU,KACVr1D,EAASf,EAAKD,MAAMzS,EAAS4S,GACxBk2D,IAAS9oE,EAAU4S,EAAO,OAG7BioE,EAAY,WACd,IAAI30D,EAAM3vB,EAAE2vB,MACPuR,IAAgC,IAApB/jC,EAAQkzC,UAAmBnP,EAAWvR,GACvD,IAAImd,EAAYzU,GAAQ1I,EAAMuR,GAc9B,OAbAz3B,EAAUvM,KACVmf,EAAO0qB,UACH+F,GAAa,GAAKA,EAAYzU,GAC5Bk6C,IACF9iD,aAAa8iD,GACbA,EAAU,MAEZrxC,EAAWvR,EACXzS,EAASf,EAAKD,MAAMzS,EAAS4S,GACxBk2D,IAAS9oE,EAAU4S,EAAO,OACrBk2D,IAAgC,IAArBp1E,EAAQspC,WAC7B8rC,EAAU1iD,WAAWw0D,EAAOv3C,IAEvB5vB,GAST,OANAonE,EAAUpzC,OAAS,WACjBzhB,aAAa8iD,GACbrxC,EAAW,EACXqxC,EAAU9oE,EAAU4S,EAAO,MAGtBioE,GAOTtkF,EAAE8vC,SAAW,SAAS3zB,EAAMkc,EAAMksD,GAChC,IAAIhS,EAASr1D,EAETmnE,EAAQ,SAAS56E,EAAS4S,GAC5Bk2D,EAAU,KACNl2D,IAAMa,EAASf,EAAKD,MAAMzS,EAAS4S,KAGrC20B,EAAYqwC,GAAc,SAAShlE,GAErC,GADIk2D,GAAS9iD,aAAa8iD,GACtBgS,EAAW,CACb,IAAIC,GAAWjS,EACfA,EAAU1iD,WAAWw0D,EAAOhsD,GACxBmsD,IAAStnE,EAASf,EAAKD,MAAMhf,KAAMmf,SAEvCk2D,EAAUvyE,EAAEqxC,MAAMgzC,EAAOhsD,EAAMn7B,KAAMmf,GAGvC,OAAOa,KAQT,OALA8zB,EAAUE,OAAS,WACjBzhB,aAAa8iD,GACbA,EAAU,MAGLvhC,GAMThxC,EAAE06C,KAAO,SAASv+B,EAAMqrB,GACtB,OAAOxnC,EAAE6xC,QAAQrK,EAASrrB,IAI5Bnc,EAAEyxC,OAAS,SAAS10B,GAClB,OAAO,WACL,OAAQA,EAAUb,MAAMhf,KAAM6pC,aAMlC/mC,EAAEykF,QAAU,WACV,IAAIpoE,EAAO0qB,UACPzF,EAAQjlB,EAAK5jB,OAAS,EAC1B,OAAO,WAGL,IAFA,IAAIP,EAAIopC,EACJpkB,EAASb,EAAKilB,GAAOplB,MAAMhf,KAAM6pC,WAC9B7uC,KAAKglB,EAASb,EAAKnkB,GAAGyB,KAAKuD,KAAMggB,GACxC,OAAOA,IAKXld,EAAE22C,MAAQ,SAASgJ,EAAOxjC,GACxB,OAAO,WACL,KAAMwjC,EAAQ,EACZ,OAAOxjC,EAAKD,MAAMhf,KAAM6pC,aAM9B/mC,EAAE2vC,OAAS,SAASgQ,EAAOxjC,GACzB,IAAIooD,EACJ,OAAO,WAKL,QAJM5kB,EAAQ,IACZ4kB,EAAOpoD,EAAKD,MAAMhf,KAAM6pC,YAEtB4Y,GAAS,IAAGxjC,EAAO,MAChBooD,IAMXvkE,EAAE24C,KAAO34C,EAAE6xC,QAAQ7xC,EAAE2vC,OAAQ,GAE7B3vC,EAAEqhF,cAAgBA,EAMlB,IAAIqD,GAAc,CAAClrF,SAAU,MAAMw1B,qBAAqB,YACpD21D,EAAqB,CAAC,UAAW,gBAAiB,WACpD,uBAAwB,iBAAkB,kBAExCC,EAAsB,SAAS9D,EAAKpqF,GACtC,IAAImuF,EAAaF,EAAmBlsF,OAChCqE,EAAcgkF,EAAIhkF,YAClB01B,EAAQxyB,EAAEs6B,WAAWx9B,IAAgBA,EAAYrD,WAAaknF,EAG9D3sC,EAAO,cAGX,IAFInwC,EAAIi9E,EAAK9sC,KAAUh0C,EAAE2tE,SAASj3E,EAAMs9C,IAAOt9C,EAAK6H,KAAKy1C,GAElD6wC,MACL7wC,EAAO2wC,EAAmBE,MACd/D,GAAOA,EAAI9sC,KAAUxhB,EAAMwhB,KAAUh0C,EAAE2tE,SAASj3E,EAAMs9C,IAChEt9C,EAAK6H,KAAKy1C,IAOhBh0C,EAAEtJ,KAAO,SAASoqF,GAChB,IAAK9gF,EAAEyyB,SAASquD,GAAM,MAAO,GAC7B,GAAItwD,EAAY,OAAOA,EAAWswD,GAClC,IAAIpqF,EAAO,GACX,IAAK,IAAIE,KAAOkqF,EAASj9E,EAAIi9E,EAAKlqF,IAAMF,EAAK6H,KAAK3H,GAGlD,OADI8tF,GAAYE,EAAoB9D,EAAKpqF,GAClCA,GAITsJ,EAAE8kF,QAAU,SAAShE,GACnB,IAAK9gF,EAAEyyB,SAASquD,GAAM,MAAO,GAC7B,IAAIpqF,EAAO,GACX,IAAK,IAAIE,KAAOkqF,EAAKpqF,EAAK6H,KAAK3H,GAG/B,OADI8tF,GAAYE,EAAoB9D,EAAKpqF,GAClCA,GAITsJ,EAAEyd,OAAS,SAASqjE,GAIlB,IAHA,IAAIpqF,EAAOsJ,EAAEtJ,KAAKoqF,GACdroF,EAAS/B,EAAK+B,OACdglB,EAASha,MAAMhL,GACVP,EAAI,EAAGA,EAAIO,EAAQP,IAC1BulB,EAAOvlB,GAAK4oF,EAAIpqF,EAAKwB,IAEvB,OAAOulB,GAKTzd,EAAE+kF,UAAY,SAASjE,EAAKrkE,EAAUhT,GACpCgT,EAAWshD,EAAGthD,EAAUhT,GAIxB,IAHA,IAAI/S,EAAOsJ,EAAEtJ,KAAKoqF,GACdroF,EAAS/B,EAAK+B,OACdwlF,EAAU,GACLthE,EAAQ,EAAGA,EAAQlkB,EAAQkkB,IAAS,CAC3C,IAAIilE,EAAalrF,EAAKimB,GACtBshE,EAAQ2D,GAAcnlE,EAASqkE,EAAIc,GAAaA,EAAYd,GAE9D,OAAO7C,GAKTj+E,EAAEo5B,MAAQ,SAAS0nD,GAIjB,IAHA,IAAIpqF,EAAOsJ,EAAEtJ,KAAKoqF,GACdroF,EAAS/B,EAAK+B,OACd2gC,EAAQ31B,MAAMhL,GACTP,EAAI,EAAGA,EAAIO,EAAQP,IAC1BkhC,EAAMlhC,GAAK,CAACxB,EAAKwB,GAAI4oF,EAAIpqF,EAAKwB,KAEhC,OAAOkhC,GAITp5B,EAAEwzC,OAAS,SAASstC,GAGlB,IAFA,IAAI5jE,EAAS,GACTxmB,EAAOsJ,EAAEtJ,KAAKoqF,GACT5oF,EAAI,EAAGO,EAAS/B,EAAK+B,OAAQP,EAAIO,EAAQP,IAChDglB,EAAO4jE,EAAIpqF,EAAKwB,KAAOxB,EAAKwB,GAE9B,OAAOglB,GAKTld,EAAEk4C,UAAYl4C,EAAEglF,QAAU,SAASlE,GACjC,IAAImE,EAAQ,GACZ,IAAK,IAAIruF,KAAOkqF,EACV9gF,EAAEs6B,WAAWwmD,EAAIlqF,KAAOquF,EAAM1mF,KAAK3H,GAEzC,OAAOquF,EAAM7kD,QAIf,IAAI4F,EAAiB,SAASrL,EAAUlN,GACtC,OAAO,SAASqzD,GACd,IAAIroF,EAASsuC,UAAUtuC,OAEvB,GADIg1B,IAAUqzD,EAAMrqF,OAAOqqF,IACvBroF,EAAS,GAAY,MAAPqoF,EAAa,OAAOA,EACtC,IAAK,IAAInkE,EAAQ,EAAGA,EAAQlkB,EAAQkkB,IAIlC,IAHA,IAAInmB,EAASuwC,UAAUpqB,GACnBjmB,EAAOikC,EAASnkC,GAChBuC,EAAIrC,EAAK+B,OACJP,EAAI,EAAGA,EAAIa,EAAGb,IAAK,CAC1B,IAAItB,EAAMF,EAAKwB,GACVu1B,QAAyB,IAAbqzD,EAAIlqF,KAAiBkqF,EAAIlqF,GAAOJ,EAAOI,IAG5D,OAAOkqF,IAKX9gF,EAAE86C,OAAS9U,EAAehmC,EAAE8kF,SAI5B9kF,EAAEklF,UAAYllF,EAAE+yC,OAAS/M,EAAehmC,EAAEtJ,MAG1CsJ,EAAE07C,QAAU,SAASolC,EAAK/jE,EAAWtT,GACnCsT,EAAYghD,EAAGhhD,EAAWtT,GAE1B,IADA,IAAwB7S,EAApBF,EAAOsJ,EAAEtJ,KAAKoqF,GACT5oF,EAAI,EAAGO,EAAS/B,EAAK+B,OAAQP,EAAIO,EAAQP,IAEhD,GAAI6kB,EAAU+jE,EADdlqF,EAAMF,EAAKwB,IACatB,EAAKkqF,GAAM,OAAOlqF,GAK9C,IA+EIo+B,EAAImwD,EA/EJC,EAAW,SAAS1tF,EAAOd,EAAKkqF,GAClC,OAAOlqF,KAAOkqF,GAIhB9gF,EAAE0tB,KAAO2zD,GAAc,SAASP,EAAKpqF,GACnC,IAAIwmB,EAAS,GAAIT,EAAW/lB,EAAK,GACjC,GAAW,MAAPoqF,EAAa,OAAO5jE,EACpBld,EAAEs6B,WAAW7d,IACX/lB,EAAK+B,OAAS,IAAGgkB,EAAW0kE,EAAW1kE,EAAU/lB,EAAK,KAC1DA,EAAOsJ,EAAE8kF,QAAQhE,KAEjBrkE,EAAW2oE,EACX1uF,EAAO60C,EAAQ70C,GAAM,GAAO,GAC5BoqF,EAAMrqF,OAAOqqF,IAEf,IAAK,IAAI5oF,EAAI,EAAGO,EAAS/B,EAAK+B,OAAQP,EAAIO,EAAQP,IAAK,CACrD,IAAItB,EAAMF,EAAKwB,GACXR,EAAQopF,EAAIlqF,GACZ6lB,EAAS/kB,EAAOd,EAAKkqF,KAAM5jE,EAAOtmB,GAAOc,GAE/C,OAAOwlB,KAITld,EAAE4zC,KAAOytC,GAAc,SAASP,EAAKpqF,GACnC,IAAwB+S,EAApBgT,EAAW/lB,EAAK,GAUpB,OATIsJ,EAAEs6B,WAAW7d,IACfA,EAAWzc,EAAEyxC,OAAOh1B,GAChB/lB,EAAK+B,OAAS,IAAGgR,EAAU/S,EAAK,MAEpCA,EAAOsJ,EAAElC,IAAIytC,EAAQ70C,GAAM,GAAO,GAAQm3B,QAC1CpR,EAAW,SAAS/kB,EAAOd,GACzB,OAAQoJ,EAAE2tE,SAASj3E,EAAME,KAGtBoJ,EAAE0tB,KAAKozD,EAAKrkE,EAAUhT,MAI/BzJ,EAAEytB,SAAWuY,EAAehmC,EAAE8kF,SAAS,GAKvC9kF,EAAE+uB,OAAS,SAASt1B,EAAW0P,GAC7B,IAAI+T,EAASqV,EAAW94B,GAExB,OADI0P,GAAOnJ,EAAEklF,UAAUhoE,EAAQ/T,GACxB+T,GAITld,EAAEqtC,MAAQ,SAASyzC,GACjB,OAAK9gF,EAAEyyB,SAASquD,GACT9gF,EAAE0D,QAAQo9E,GAAOA,EAAIhoF,QAAUkH,EAAE86C,OAAO,GAAIgmC,GADtBA,GAO/B9gF,EAAE+5C,IAAM,SAAS+mC,EAAK9xC,GAEpB,OADAA,EAAY8xC,GACLA,GAIT9gF,EAAEu8C,QAAU,SAAS39B,EAAQ6jE,GAC3B,IAAI/rF,EAAOsJ,EAAEtJ,KAAK+rF,GAAQhqF,EAAS/B,EAAK+B,OACxC,GAAc,MAAVmmB,EAAgB,OAAQnmB,EAE5B,IADA,IAAIqoF,EAAMrqF,OAAOmoB,GACR1mB,EAAI,EAAGA,EAAIO,EAAQP,IAAK,CAC/B,IAAItB,EAAMF,EAAKwB,GACf,GAAIuqF,EAAM7rF,KAASkqF,EAAIlqF,MAAUA,KAAOkqF,GAAM,OAAO,EAEvD,OAAO,GAMT9rD,EAAK,SAAS/9B,EAAGqJ,EAAG+kF,EAAQC,GAG1B,GAAIruF,IAAMqJ,EAAG,OAAa,IAANrJ,GAAW,EAAIA,GAAM,EAAIqJ,EAE7C,GAAS,MAALrJ,GAAkB,MAALqJ,EAAW,OAAO,EAEnC,GAAIrJ,GAAMA,EAAG,OAAOqJ,GAAMA,EAE1B,IAAImrC,SAAcx0C,EAClB,OAAa,aAATw0C,GAAgC,WAATA,GAAiC,iBAALnrC,IAChD6kF,EAAOluF,EAAGqJ,EAAG+kF,EAAQC,IAI9BH,EAAS,SAASluF,EAAGqJ,EAAG+kF,EAAQC,GAE1BruF,aAAa+I,IAAG/I,EAAIA,EAAE8pF,UACtBzgF,aAAaN,IAAGM,EAAIA,EAAEygF,UAE1B,IAAIh3E,EAAYvQ,EAASG,KAAK1C,GAC9B,GAAI8S,IAAcvQ,EAASG,KAAK2G,GAAI,OAAO,EAC3C,OAAQyJ,GAEN,IAAK,kBAEL,IAAK,kBAGH,MAAO,GAAK9S,GAAM,GAAKqJ,EACzB,IAAK,kBAGH,OAAKrJ,IAAOA,GAAWqJ,IAAOA,EAEhB,IAANrJ,EAAU,GAAKA,GAAM,EAAIqJ,GAAKrJ,IAAOqJ,EAC/C,IAAK,gBACL,IAAK,mBAIH,OAAQrJ,IAAOqJ,EACjB,IAAK,kBACH,OAAOsgF,EAAY5uD,QAAQr4B,KAAK1C,KAAO2pF,EAAY5uD,QAAQr4B,KAAK2G,GAGpE,IAAIilF,EAA0B,mBAAdx7E,EAChB,IAAKw7E,EAAW,CACd,GAAgB,iBAALtuF,GAA6B,iBAALqJ,EAAe,OAAO,EAIzD,IAAIklF,EAAQvuF,EAAE6F,YAAa2oF,EAAQnlF,EAAExD,YACrC,GAAI0oF,IAAUC,KAAWzlF,EAAEs6B,WAAWkrD,IAAUA,aAAiBA,GACxCxlF,EAAEs6B,WAAWmrD,IAAUA,aAAiBA,IACzC,gBAAiBxuF,GAAK,gBAAiBqJ,EAC7D,OAAO,EASXglF,EAASA,GAAU,GAEnB,IADA,IAAI7sF,GAFJ4sF,EAASA,GAAU,IAEC5sF,OACbA,KAGL,GAAI4sF,EAAO5sF,KAAYxB,EAAG,OAAOquF,EAAO7sF,KAAY6H,EAQtD,GAJA+kF,EAAO9mF,KAAKtH,GACZquF,EAAO/mF,KAAK+B,GAGRilF,EAAW,CAGb,IADA9sF,EAASxB,EAAEwB,UACI6H,EAAE7H,OAAQ,OAAO,EAEhC,KAAOA,KACL,IAAKu8B,EAAG/9B,EAAEwB,GAAS6H,EAAE7H,GAAS4sF,EAAQC,GAAS,OAAO,MAEnD,CAEL,IAAsB1uF,EAAlBF,EAAOsJ,EAAEtJ,KAAKO,GAGlB,GAFAwB,EAAS/B,EAAK+B,OAEVuH,EAAEtJ,KAAK4J,GAAG7H,SAAWA,EAAQ,OAAO,EACxC,KAAOA,KAGL,GADA7B,EAAMF,EAAK+B,IACLoL,EAAIvD,EAAG1J,KAAQo+B,EAAG/9B,EAAEL,GAAM0J,EAAE1J,GAAMyuF,EAAQC,GAAU,OAAO,EAMrE,OAFAD,EAAO/jF,MACPgkF,EAAOhkF,OACA,GAITtB,EAAEq8C,QAAU,SAASplD,EAAGqJ,GACtB,OAAO00B,EAAG/9B,EAAGqJ,IAKfN,EAAEo8C,QAAU,SAAS0kC,GACnB,OAAW,MAAPA,IACA/hD,EAAY+hD,KAAS9gF,EAAE0D,QAAQo9E,IAAQ9gF,EAAEqyC,SAASyuC,IAAQ9gF,EAAEm0B,YAAY2sD,IAA6B,IAAfA,EAAIroF,OAChE,IAAvBuH,EAAEtJ,KAAKoqF,GAAKroF,SAIrBuH,EAAEm8C,UAAY,SAAS2kC,GACrB,SAAUA,GAAwB,IAAjBA,EAAIhmE,WAKvB9a,EAAE0D,QAAUm9E,GAAiB,SAASC,GACpC,MAA8B,mBAAvBtnF,EAASG,KAAKmnF,IAIvB9gF,EAAEyyB,SAAW,SAASquD,GACpB,IAAIr1C,SAAcq1C,EAClB,MAAgB,aAATr1C,GAAgC,WAATA,KAAuBq1C,GAIvD9gF,EAAEygD,KAAK,CAAC,YAAa,WAAY,SAAU,SAAU,OAAQ,SAAU,QAAS,SAAU,MAAO,UAAW,MAAO,YAAY,SAASv8C,GACtIlE,EAAE,KAAOkE,GAAQ,SAAS48E,GACxB,OAAOtnF,EAASG,KAAKmnF,KAAS,WAAa58E,EAAO,QAMjDlE,EAAEm0B,YAAY4S,aACjB/mC,EAAEm0B,YAAc,SAAS2sD,GACvB,OAAOj9E,EAAIi9E,EAAK,YAMpB,IAAI4E,EAAW/qE,EAAKjP,UAAYiP,EAAKjP,SAASi6E,WAC5B,kBAAP,KAAyC,iBAAbC,WAA4C,mBAAZF,IACrE1lF,EAAEs6B,WAAa,SAASwmD,GACtB,MAAqB,mBAAPA,IAAqB,IAKvC9gF,EAAEswB,SAAW,SAASwwD,GACpB,OAAQ9gF,EAAE45B,SAASknD,IAAQxwD,SAASwwD,KAAStiF,MAAM8b,WAAWwmE,KAIhE9gF,EAAExB,MAAQ,SAASsiF,GACjB,OAAO9gF,EAAEoyC,SAAS0uC,IAAQtiF,MAAMsiF,IAIlC9gF,EAAEk8C,UAAY,SAAS4kC,GACrB,OAAe,IAARA,IAAwB,IAARA,GAAwC,qBAAvBtnF,EAASG,KAAKmnF,IAIxD9gF,EAAE28C,OAAS,SAASmkC,GAClB,OAAe,OAARA,GAIT9gF,EAAE68C,YAAc,SAASikC,GACvB,YAAe,IAARA,GAKT9gF,EAAE6D,IAAM,SAASi9E,EAAKzoF,GACpB,IAAK2H,EAAE0D,QAAQrL,GACb,OAAOwL,EAAIi9E,EAAKzoF,GAGlB,IADA,IAAII,EAASJ,EAAKI,OACTP,EAAI,EAAGA,EAAIO,EAAQP,IAAK,CAC/B,IAAItB,EAAMyB,EAAKH,GACf,GAAW,MAAP4oF,IAAgBpnF,EAAeC,KAAKmnF,EAAKlqF,GAC3C,OAAO,EAETkqF,EAAMA,EAAIlqF,GAEZ,QAAS6B,GAQXuH,EAAE09C,WAAa,WAEb,OADA/iC,EAAK3a,EAAIygF,EACFvjF,MAIT8C,EAAEo+B,SAAW,SAAS1mC,GACpB,OAAOA,GAITsI,EAAE8hC,SAAW,SAASpqC,GACpB,OAAO,WACL,OAAOA,IAIXsI,EAAEsqC,KAAO,aAITtqC,EAAEu+B,SAAW,SAASlmC,GACpB,OAAK2H,EAAE0D,QAAQrL,GAGR,SAASyoF,GACd,OAAOS,EAAQT,EAAKzoF,IAHbipF,EAAgBjpF,IAQ3B2H,EAAE64C,WAAa,SAASioC,GACtB,OAAW,MAAPA,EACK,aAEF,SAASzoF,GACd,OAAQ2H,EAAE0D,QAAQrL,GAAoBkpF,EAAQT,EAAKzoF,GAAzByoF,EAAIzoF,KAMlC2H,EAAE2qE,QAAU3qE,EAAEu4C,QAAU,SAASkqC,GAE/B,OADAA,EAAQziF,EAAEklF,UAAU,GAAIzC,GACjB,SAAS3B,GACd,OAAO9gF,EAAEu8C,QAAQukC,EAAK2B,KAK1BziF,EAAE2/C,MAAQ,SAASvnD,EAAGqkB,EAAUhT,GAC9B,IAAIo8E,EAAQpiF,MAAMmqB,KAAK8C,IAAI,EAAGt4B,IAC9BqkB,EAAW0kE,EAAW1kE,EAAUhT,EAAS,GACzC,IAAK,IAAIvR,EAAI,EAAGA,EAAIE,EAAGF,IAAK2tF,EAAM3tF,GAAKukB,EAASvkB,GAChD,OAAO2tF,GAIT7lF,EAAEgxB,OAAS,SAASJ,EAAKF,GAKvB,OAJW,MAAPA,IACFA,EAAME,EACNA,EAAM,GAEDA,EAAMhD,KAAKqC,MAAMrC,KAAKoD,UAAYN,EAAME,EAAM,KAIvD5wB,EAAE2vB,IAAMhC,KAAKgC,KAAO,WAClB,OAAO,IAAIhC,MAAOm4D,WAIpB,IAAIC,EAAY,CACdp6D,IAAK,QACLC,IAAK,OACLC,IAAK,OACLC,IAAK,SACL9R,IAAK,SACLohE,IAAK,UAEH4K,EAAchmF,EAAEwzC,OAAOuyC,GAGvBE,EAAgB,SAASnoF,GAC3B,IAAIooF,EAAU,SAAS7oF,GACrB,OAAOS,EAAIT,IAGT7G,EAAS,MAAQwJ,EAAEtJ,KAAKoH,GAAKG,KAAK,KAAO,IACzCkoF,EAAazrF,OAAOlE,GACpB4vF,EAAgB1rF,OAAOlE,EAAQ,KACnC,OAAO,SAAS01B,GAEd,OADAA,EAAmB,MAAVA,EAAiB,GAAK,GAAKA,EAC7Bi6D,EAAW7rF,KAAK4xB,GAAUA,EAAOzrB,QAAQ2lF,EAAeF,GAAWh6D,IAG9ElsB,EAAE64B,OAASotD,EAAcF,GACzB/lF,EAAEsgD,SAAW2lC,EAAcD,GAK3BhmF,EAAEkd,OAAS,SAAS4jE,EAAKzoF,EAAMguF,GACxBrmF,EAAE0D,QAAQrL,KAAOA,EAAO,CAACA,IAC9B,IAAII,EAASJ,EAAKI,OAClB,IAAKA,EACH,OAAOuH,EAAEs6B,WAAW+rD,GAAYA,EAAS1sF,KAAKmnF,GAAOuF,EAEvD,IAAK,IAAInuF,EAAI,EAAGA,EAAIO,EAAQP,IAAK,CAC/B,IAAI87C,EAAc,MAAP8sC,OAAc,EAASA,EAAIzoF,EAAKH,SAC9B,IAAT87C,IACFA,EAAOqyC,EACPnuF,EAAIO,GAENqoF,EAAM9gF,EAAEs6B,WAAW0Z,GAAQA,EAAKr6C,KAAKmnF,GAAO9sC,EAE9C,OAAO8sC,GAKT,IAAI3yD,EAAY,EAChBnuB,EAAEugD,SAAW,SAASC,GACpB,IAAIhc,IAAOrW,EAAY,GACvB,OAAOqyB,EAASA,EAAShc,EAAKA,GAKhCxkC,EAAE44B,iBAAmB,CACnBE,SAAU,kBACVC,YAAa,mBACbF,OAAQ,oBAMV,IAAIytD,EAAU,OAIVC,EAAU,CACZvsE,IAAK,IACLD,KAAM,KACNG,KAAM,IACND,KAAM,IACNE,SAAU,QACVC,SAAU,SAGRqhC,EAAe,4BAEf+qC,EAAa,SAASnpF,GACxB,MAAO,KAAOkpF,EAAQlpF,IAOxB2C,EAAE++C,SAAW,SAASx1C,EAAMy1C,EAAUynC,IAC/BznC,GAAYynC,IAAaznC,EAAWynC,GACzCznC,EAAWh/C,EAAEytB,SAAS,GAAIuxB,EAAUh/C,EAAE44B,kBAGtC,IAiCIptB,EAjCAm/D,EAAUjwE,OAAO,EAClBskD,EAASnmB,QAAUytD,GAAS9vF,QAC5BwoD,EAASjmB,aAAeutD,GAAS9vF,QACjCwoD,EAASlmB,UAAYwtD,GAAS9vF,QAC/ByH,KAAK,KAAO,KAAM,KAGhB0e,EAAQ,EACRnmB,EAAS,SACb+S,EAAK9I,QAAQkqE,GAAS,SAASttE,EAAOw7B,EAAQE,EAAaD,EAAUpb,GAanE,OAZAlnB,GAAU+S,EAAKzQ,MAAM6jB,EAAOe,GAAQjd,QAAQg7C,EAAc+qC,GAC1D7pE,EAAQe,EAASrgB,EAAM5E,OAEnBogC,EACFriC,GAAU,cAAgBqiC,EAAS,iCAC1BE,EACTviC,GAAU,cAAgBuiC,EAAc,uBAC/BD,IACTtiC,GAAU,OAASsiC,EAAW,YAIzBz7B,KAET7G,GAAU,OAGLwoD,EAAShmB,WAAUxiC,EAAS,mBAAqBA,EAAS,OAE/DA,EAAS,4FAEPA,EAAS,gBAGX,IACEgV,EAAS,IAAIoP,SAASokC,EAAShmB,UAAY,MAAO,IAAKxiC,GACvD,MAAOmB,GAEP,MADAA,EAAEnB,OAASA,EACLmB,EAGR,IAAIonD,EAAW,SAASjrB,GACtB,OAAOtoB,EAAO7R,KAAKuD,KAAM42B,EAAM9zB,IAI7B0mF,EAAW1nC,EAAShmB,UAAY,MAGpC,OAFA+lB,EAASvoD,OAAS,YAAckwF,EAAW,OAASlwF,EAAS,IAEtDuoD,GAIT/+C,EAAE+uC,MAAQ,SAAS+xC,GACjB,IAAI5yB,EAAWluD,EAAE8gF,GAEjB,OADA5yB,EAASy4B,QAAS,EACXz4B,GAUT,IAAI04B,EAAc,SAAS14B,EAAU4yB,GACnC,OAAO5yB,EAASy4B,OAAS3mF,EAAE8gF,GAAK/xC,QAAU+xC,GAI5C9gF,EAAEy1C,MAAQ,SAASqrC,GASjB,OARA9gF,EAAEygD,KAAKzgD,EAAEk4C,UAAU4oC,IAAM,SAAS58E,GAChC,IAAIiY,EAAOnc,EAAEkE,GAAQ48E,EAAI58E,GACzBlE,EAAEvG,UAAUyK,GAAQ,WAClB,IAAImY,EAAO,CAACnf,KAAK6jF,UAEjB,OADAxiF,EAAK2d,MAAMG,EAAM0qB,WACV6/C,EAAY1pF,KAAMif,EAAKD,MAAMlc,EAAGqc,QAGpCrc,GAITA,EAAEy1C,MAAMz1C,GAGRA,EAAEygD,KAAK,CAAC,MAAO,OAAQ,UAAW,QAAS,OAAQ,SAAU,YAAY,SAASv8C,GAChF,IAAIqxC,EAASmrC,EAAWx8E,GACxBlE,EAAEvG,UAAUyK,GAAQ,WAClB,IAAI48E,EAAM5jF,KAAK6jF,SAGf,OAFAxrC,EAAOr5B,MAAM4kE,EAAK/5C,WACJ,UAAT7iC,GAA6B,WAATA,GAAqC,IAAf48E,EAAIroF,eAAqBqoF,EAAI,GACrE8F,EAAY1pF,KAAM4jF,OAK7B9gF,EAAEygD,KAAK,CAAC,SAAU,OAAQ,UAAU,SAASv8C,GAC3C,IAAIqxC,EAASmrC,EAAWx8E,GACxBlE,EAAEvG,UAAUyK,GAAQ,WAClB,OAAO0iF,EAAY1pF,KAAMq4C,EAAOr5B,MAAMhf,KAAK6jF,SAAUh6C,gBAKzD/mC,EAAEvG,UAAU/B,MAAQ,WAClB,OAAOwF,KAAK6jF,UAKd/gF,EAAEvG,UAAUu4B,QAAUhyB,EAAEvG,UAAU0oD,OAASniD,EAAEvG,UAAU/B,MAEvDsI,EAAEvG,UAAUD,SAAW,WACrB,OAAOq0B,OAAO3wB,KAAK6jF,WAUA,mBAAV3+B,QAAwBA,OAAOC,KACxCD,OAAO,aAAc,IAAI,WACvB,OAAOpiD,KAnpDZ,oDCLD,WACE,IAAIq8C,EAAS1c,EAAeknD,EAAmBC,EAAsBC,EAAMC,EAAaC,EAAcjnF,EACpGknF,EAAU,GAAGpuF,MAEfkH,EAACmnF,KAEDN,EAAoB,CAClBvN,IAAK,IACLpvB,KAAM,IACNk9B,IAAK,IACLC,OAAQ,IACR52E,MAAO,IACP62E,MAAO,IACP1E,KAAM,IACNC,MAAO,IACP0E,GAAI,IACJC,KAAM,KAGRV,EAAuB,CACrBxN,IAAK,MACLpvB,KAAM,OACNk9B,IAAK,MACLC,OAAQ,MACR52E,MAAO,QACP62E,MAAO,QACP1E,KAAM,OACNC,MAAO,QACP0E,GAAI,KACJC,KAAM,QAGRR,EAAc,CACZS,IAAK,IACLznF,EAAK,IACL0nF,IAAK,IACLC,IAAK,KACLC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLh8D,IAAK,IACLF,IAAK,IACLC,IAAK,IACLk8D,IAAK,KAGPd,EAAe,SAASe,GACtB,IAAU9vF,EAAG+vF,EAAcx4E,EAAYy6D,EAAIC,EAG3C,GAFA16D,EAAa,EACbw4E,EAAe,GACA,MAAXD,EACF,OAAOC,EAET,IAAK/vF,EAAIgyE,EAAK,EAAGC,EAAO6d,EAAQvvF,OAAQyxE,EAAKC,EAAMjyE,IAAMgyE,EAE1C,MADN8d,EAAQ9vF,IACY,IAANA,GAA8B,OAAnB8vF,EAAQ9vF,EAAI,KAC1C+vF,EAAa1pF,KAAKypF,EAAQ5nC,UAAU3wC,EAAYvX,IAChDuX,EAAavX,EAAI,GAIrB,OADA+vF,EAAa1pF,KAAKypF,EAAQE,OAAOz4E,EAAYu4E,EAAQvvF,SAC9CwvF,GAGTtoD,EAAgB,SAASjoC,GACvB,OAAOsI,EAAEyyB,SAAS/6B,KAAWsI,EAAE0D,QAAQhM,IAGzCqvF,EAAO,CACLoB,aAAc,SAASvpE,EAAQ2nB,EAAY6hD,GACzC,IAAIC,EAEJ,OADAA,EAAWzpE,EAAO2nB,GACX3nB,EAAO2nB,GAAc,WAC1B,IAAIlqB,EAEJ,GADAA,EAAO,GAAK0qB,UAAUtuC,OAASyuF,EAAQvtF,KAAKotC,UAAW,GAAK,IAC3B,IAA7BqhD,EAAOlsE,MAAMhf,KAAMmf,GACrB,OAAOgsE,EAASnsE,MAAMhf,KAAMmf,KAIlCisE,SAAU,SAASp8D,GACjB,OAAIA,EACKA,EAAOzrB,QAAQ,cAAc,SAAS9D,GAC3C,OAAOA,EAAE,GAAGk4C,iBAGP,IAGXR,WAAY,SAASD,GACnB,OAAKA,EAGsB,WAAvBA,EAAKxyC,cACA,SAEAwyC,EAAK,GAAGS,cAAgBT,EAAKt7C,MAAM,GALnC,IAQXyvF,cAAe,SAAS3pE,GACtB,IAAIhoB,EAAK4xF,EAAW9wF,EAEpB,IAAKd,KADL4xF,EAAY,GACA5pE,EAEG,OADblnB,EAAQknB,EAAOhoB,MAEb4xF,EAAU5xF,GAAOc,GAGrB,OAAO8wF,GAETC,UAAW,SAASv8D,GAClB,OAAKA,GAGLA,EAASA,EAAO,GAAGtqB,cAAgBsqB,EAAOpzB,MAAM,IAClC2H,QAAQ,gBAAgB,SAAS9D,EAAG+rF,GAChD,OAAIA,EACK,IAAMA,EAAO9mF,cAEb,OAPF,IAWX+mF,UAAW,SAAS/pE,GAClB,OAAI5e,EAAE0D,QAAQkb,GACLA,EAAO9gB,KAAI,SAASpG,GACzB,OAAOqvF,EAAK4B,UAAUjxF,MAEfsI,EAAEyyB,SAAS7T,KAAY5e,EAAEs6B,WAAW1b,GACtCmoE,EAAKhC,UAAUnmE,GACb,SAAShoB,EAAKc,GACnB,MAAO,CAACd,EAAKmwF,EAAK4B,UAAUjxF,OAIzBknB,GAGXgqE,WAAY,SAASrtC,GACnB,IAAIrjD,EAAGtB,EAAKgoB,EAAQ1B,EAAQgtD,EAAIC,EAAMb,EAGtC,IAFApsD,EAASq+B,EACTrjD,EAAI,IACKA,EAAI6uC,UAAUtuC,QAErB,GADAmmB,EAASmoB,UAAU7uC,GACfynC,EAAcziB,IAAWyiB,EAAc/gB,GAEzC,IAAKsrD,EAAK,EAAGC,GADbb,EAAO7yE,OAAOC,KAAKkoB,IACMnmB,OAAQyxE,EAAKC,EAAMD,IAE1ChtD,EADAtmB,EAAM0yE,EAAKY,IACG6c,EAAK6B,WAAW1rE,EAAOtmB,GAAMgoB,EAAOhoB,SAGpDsmB,EAAS6pE,EAAK4B,UAAU/pE,GAG5B,OAAO1B,GAET2rE,aAAc,SAAStsE,EAAOg/B,GAC5B,IAAI38B,EAAQsrD,EAAIC,EAChB,GAAa,MAAT5tD,EACF,OAAO,EAET,IAAK2tD,EAAK,EAAGC,EAAO5tD,EAAM9jB,OAAQyxE,EAAKC,EAAMD,IAE3C,GADAtrD,EAASrC,EAAM2tD,GACXlqE,EAAEq8C,QAAQz9B,EAAQ28B,GACpB,OAAO,EAGX,OAAO,GAETD,SAAU,SAASpvB,EAAQ48D,GAIzB,OAHc,MAAVA,IACFA,EAAS,MAEP58D,IACgE,IAA3DA,EAAO6U,QAAQ+nD,EAAQ58D,EAAOzzB,OAASqwF,EAAOrwF,SAKzDswF,gBAAiB,SAAS78D,GACxB,OAAIA,EACKA,EAAOzrB,QAAQ,KAAM,UAAUA,QAAQ,MAAO,IAAIA,QAAQ,MAAO,KAEjE,IAGXg7C,aAAc,SAASvvB,GACrB,OAAIA,EACKA,EAAOzrB,QAAQ,yBAA0B,QAEzC,IAGXuoF,kBAAmB,SAASp/E,EAAWq/E,GACrC,IAAIr+B,EAAOs+B,EAAWC,EAAc7f,EAEpC,OAD6B4f,GAA7B5f,EAAO1/D,EAAU/L,MAAM,MAAuB,GACjC,OADqC+sD,EAAQ0e,EAAK,IAEtDyd,EAAKqC,YAAYF,IAE1BC,EAAepC,EAAKqC,YAAYF,GAChB,MAAZD,IACFA,EAAWlC,EAAKqC,YAAYx+B,IAElBu+B,EAAe,KAAOF,IAEpCI,YAAa,SAASzyF,EAAKwkE,GACzB,IAAIkuB,EAIJ,OAHgB,MAAZluB,IACFA,EAAWjhE,QAAQihE,UAEhBxkE,GAGL0yF,EAA8B,WAAbluB,EAAwByrB,EAAoBC,GAC1ClwF,GACV0yF,EAAe1yF,GACE,IAAfA,EAAI6B,QAAqC,MAApBuuF,EAAYpwF,GACnC,CAAC0yF,EAAe74E,MAAOu2E,EAAYpwF,IAClB,IAAfA,EAAI6B,QAAgB7B,IAAQA,EAAIi+C,eAAiBj+C,EAAIi+C,gBAAkBj+C,EAAIgL,cAC7E,CAAC0nF,EAAe74E,MAAO7Z,EAAIi+C,eACV,IAAfj+C,EAAI6B,QAAgB,cAAc6B,KAAK1D,GACzCA,EAAIi+C,cAEM,WAAbumB,EACKxkE,EAEAmwF,EAAK1yC,WAAWz9C,GAflBA,GAmBX2yF,kBAAmB,SAASC,EAAWpuB,GACrC,IAAIquB,EAAqB9sE,EAAO/lB,EAAKF,EAAMgzF,EAAYC,EAAgBzf,EAAI0f,EAAIzf,EAAM0f,EAIrF,GAHgB,MAAZzuB,IACFA,EAAWjhE,QAAQihE,WAEhBouB,EACH,OAAOA,EAIT,IADAC,EAAsB,GACjBvf,EAAK,EAAGC,GAFbuf,EAAaF,EAAU3rF,MAAM,MAEEpF,OAAQyxE,EAAKC,EAAMD,IAAM,CAItD,IAFAxzE,EAAO,GAEFimB,EAAQitE,EAAK,EAAGC,GADrBF,GAFAH,EAAYE,EAAWxf,IAEIrsE,MAAM,MACWpF,OAAQmxF,EAAKC,EAAOltE,IAAUitE,EAE5D,MADZhzF,EAAM+yF,EAAehtE,KAC2B,KAA9BgtE,EAAehtE,EAAQ,KACvC/lB,EAAM,KAEJA,GACFF,EAAK6H,KAAKwoF,EAAKsC,YAAYzyF,EAAKwkE,IAGpC1kE,EAAOsJ,EAAEo6C,KAAKp6C,EAAEurC,QAAQ70C,IAEtBA,EADe,WAAb0kE,EACK1kE,EAAKuH,KAAK,IAEVvH,EAAKuH,KAAK,KAEnBwrF,EAAoBlrF,KAAK7H,GAE3B,OAAO+yF,EAAoBxrF,KAAK,MAElC6rF,SAAU,SAASC,EAAiBC,GAClC,OAAOhqF,EAAEqB,MAAM0oF,GAAiB,SAAS/9E,GACvC,OAAOhM,EAAEqiF,QAAQ2H,EAAmBh+E,OAGxCi+E,eAAgB,SAAS/wD,GACvB,IAAIgxD,EAAUtzF,EAAKc,EAEnB,IAAKd,KADLszF,EAAW,GACChxD,EAEa,MAAnBgxD,EADJxyF,EAAQwhC,EAAKtiC,MAEXszF,EAASxyF,GAAS,IAEpBwyF,EAASxyF,GAAO6G,KAAK3H,GAEvB,OAAOszF,GAETnF,UAAW,SAASnmE,EAAQwQ,GAC1B,IAAIx4B,EAAK4xF,EAAW9wF,EAAOwyE,EAAIC,EAAMb,EAAM6gB,EAG3C,IAFA3B,EAAY,GAEPte,EAAK,EAAGC,GADbb,EAAO7yE,OAAOC,KAAKkoB,IACMnmB,OAAQyxE,EAAKC,EAAMD,IAENtzE,GAApCuzF,EAAQ/6D,EADRx4B,EAAM0yE,EAAKY,GACWtrD,EAAOhoB,KAAmB,GAAIc,EAAQyyF,EAAM,GAClE3B,EAAU5xF,GAAOc,EAEnB,OAAO8wF,GAET4B,eAAgB,SAASl+D,EAAQ9zB,GAC/B,IAAIiyF,EAAanyF,EAGjB,IAFAmyF,EAAc,GACdnyF,EAAI,EACGA,EAAIE,GACTiyF,GAAen+D,EACfh0B,IAEF,OAAOmyF,GAETC,UAAW,SAAS39C,EAAO49C,EAAUC,GAOnC,OANa,MAAT79C,IACFA,EAAQ,GAEI,MAAV69C,IACFA,EAASD,EAAW,KAER,IAAV59C,EACUA,EAAQ,IAAM49C,EAEd59C,EAAQ,IAAM69C,GAG9Bh7E,OAAQ,SAAS+M,EAAOvQ,GACtB,IAAI2Q,EAKJ,OAJAA,EAAQJ,EAAMwkB,QAAQ/0B,KACT,GACXuQ,EAAM/S,OAAOmT,EAAO,GAEfJ,GAETkuE,mBAAoB,SAAS7rE,EAAQopE,EAAStwF,GAC5C,IAAId,EAAKF,EAET,IADAA,EAAOuwF,EAAae,GACbtxF,EAAK+B,OAAS,GAEA,MAAfmmB,EADJhoB,EAAMF,EAAK+Z,WAETmO,EAAOhoB,GAAO,IAEhBgoB,EAASA,EAAOhoB,GAElB,OAAa,MAATc,EACKknB,EAAOloB,EAAK+Z,SAAW/Y,SAEhBknB,EAAOloB,EAAK+Z,UAG9Bi6E,WAAY,SAAS9rE,EAAQopE,GAC3B,IAAIpxF,EAAKF,EAAMwzE,EAAIC,EAEnB,IAAKD,EAAK,EAAGC,GADbzzE,EAAOuwF,EAAae,IACKvvF,OAAQyxE,EAAKC,EAAMD,IAAM,CAEhD,GADAtzE,EAAMF,EAAKwzE,IACNtrD,EAAOllB,eAAe9C,GACzB,OAAO,EAETgoB,EAASA,EAAOhoB,GAElB,OAAO,GAET+zF,gBAAiB,SAASC,EAAetpD,EAAO7oC,EAAQoyF,EAAeC,GACrE,IAAIC,EAAY7gB,EAAIZ,EAAMmB,EAI1B,GAHiB,MAAbqgB,IACFA,EAAY,KAEVD,EAAcpyF,OAASqyF,EACzB,OAAOF,EAAcphF,OAAO0S,MAAM0uE,EAAe,CAACtpD,EAAO7oC,GAAQiR,OAAOw9E,EAAQvtF,KAAKkxF,KAIrF,IAFAD,EAAcphF,OAAO83B,EAAO7oC,GAC5BgyE,EAAW,GACNsgB,EAAa7gB,EAAK,EAAGZ,EAAOuhB,EAAcpyF,OAAQqyF,EAAY,EAAI5gB,GAAMZ,EAAOY,GAAMZ,EAAMyhB,EAAa7gB,GAAM4gB,EACjHrgB,EAASlsE,KAAKqsF,EAAcphF,OAAO0S,MAAM0uE,EAAe,CAACtpD,EAAQypD,EAAY,GAAGrhF,OAAOw9E,EAAQvtF,KAAKkxF,EAAc/xF,MAAMiyF,EAAYA,EAAaD,OAEnJ,OAAOrgB,GAGX5rB,IAAK,SAAStiC,GACZ,IAASsiC,EAAKqrB,EAAIC,EAElB,IADAtrB,EAAM,EACDqrB,EAAK,EAAGC,EAAO5tD,EAAM9jB,OAAQyxE,EAAKC,EAAMD,IAE3CrrB,GADMtiC,EAAM2tD,GAGd,OAAOrrB,GAETmsC,YAAa,SAAS9+D,GACpB,IAAIhP,EACJ,OAAKgP,GAGLhP,EAASgP,EAAOzrB,QAAQ,eAAe,SAASpD,EAAOqrF,GAIrD,OAHc,MAAVA,IACFA,EAAS,IAEJ,IAAMA,KAER3B,EAAK1yC,WAAWn3B,EAAO9f,SARrB,IAUXgsF,YAAa,SAASl9D,GACpB,OAAIA,EACKA,EAAOruB,MAAM,KAAKC,IAAIipF,EAAK1yC,YAAYp2C,KAAK,KAE5C,IAGXgtF,WAAY,SAAS/+D,GACnB,OAAKA,GAGLA,EAASA,EAAO,GAAGtqB,cAAgBsqB,EAAOpzB,MAAM,IAClC2H,QAAQ,eAAe,SAASpD,EAAOqrF,GAInD,OAHc,MAAVA,IACFA,EAAS,IAEJ,IAAOA,EAAO9mF,iBAPd,IAUXspF,gBAAiB,SAAStsE,EAAQopE,GAChC,IAAStxF,EAAMwzE,EAAIC,EAEnB,IAAKD,EAAK,EAAGC,GADbzzE,EAAOuwF,EAAae,IACKvvF,OAAQyxE,EAAKC,EAAMD,IAG1C,GAAc,OADdtrD,EAASA,EADHloB,EAAKwzE,KAGT,OAGJ,OAAOtrD,GAETy9B,QAAS,SAASplD,EAAGqJ,EAAG+kF,EAAQC,GAC9B,OAAItlF,EAAE0D,QAAQ2hF,IAAWrlF,EAAE0D,QAAQ4hF,GAC1BjpC,EAAQplD,EAAGqJ,EAAG+kF,EAAQC,GAEtBjpC,EAAQplD,EAAGqJ,IAGtB6qF,qBAAsB,WACpB,IAAIl0F,EAAGqJ,EAAG42C,EAAY3Y,EAAU2rC,EAAIC,EAEpC,IADAlzE,EAAI8vC,UAAU,GAAIzmC,EAAIymC,UAAU,GAC3BmjC,EAAK,EAAGC,GADuBjzB,EAAa,GAAKnQ,UAAUtuC,OAASyuF,EAAQvtF,KAAKotC,UAAW,GAAK,IACvEtuC,OAAQyxE,EAAKC,EAAMD,IAEhD,GADA3rC,EAAW2Y,EAAWgzB,IACjBlqE,EAAEq8C,QAAQplD,EAAEsnC,GAAWj+B,EAAEi+B,IAC5B,OAAO,EAGX,OAAO,IAIX8d,EAAU,SAASplD,EAAGqJ,EAAG+kF,EAAQC,GAC/B,IAAIE,EAAO4F,EAAYC,EAAUC,EAAWC,EAAQ9F,EAAO+F,EAAYC,EAAmBC,EAAOxzF,EAAGtB,EAAK+0F,EAAYzhB,EAAIC,EAOzH,GANc,MAAVkb,IACFA,EAAS,IAEG,MAAVC,IACFA,EAAS,IAEPruF,IAAMqJ,EACR,OAAON,EAAEq8C,QAAQplD,EAAGqJ,GAEtB,GAAIN,EAAEs6B,WAAWrjC,IAAM+I,EAAEs6B,WAAWh6B,GAClC,OAAON,EAAEq8C,QAAQplD,EAAGqJ,GAGtB,IADAqrF,EAAatG,EAAO5sF,OACbkzF,KACL,GAAItG,EAAOsG,KAAgB10F,EACzB,OAAOquF,EAAOqG,KAAgBrrF,EAMlC,GAHA+kF,EAAO9mF,KAAKtH,GACZquF,EAAO/mF,KAAK+B,GACZorF,GAAQ,EACJ1rF,EAAEs6B,WAAgB,MAALrjC,EAAYA,EAAEolD,aAAU,GACvCqvC,EAAQz0F,EAAEolD,QAAQ/7C,EAAG+kF,EAAQC,QACxB,GAAItlF,EAAEs6B,WAAgB,MAALh6B,EAAYA,EAAE+7C,aAAU,GAC9CqvC,EAAQprF,EAAE+7C,QAAQplD,EAAGquF,EAAQD,QACxB,GAAIrlF,EAAE0D,QAAQzM,IAAM+I,EAAE0D,QAAQpD,IAAMrJ,EAAEwB,SAAW6H,EAAE7H,QAExD,IADAizF,GAAQ,EACHxzF,EAAIgyE,EAAK,EAAGC,EAAOlzE,EAAEwB,OAAQyxE,EAAKC,EAAMjyE,IAAMgyE,EAEjD,GADAmhB,EAAWp0F,EAAEiB,IACRmkD,EAAQgvC,EAAU/qF,EAAEpI,GAAImtF,EAAQC,GAAS,CAC5CoG,GAAQ,EACR,YAGC,GAAI1rF,EAAE6b,SAAS5kB,IAAM+I,EAAE6b,SAASvb,GACrCorF,EAAQ1rF,EAAEq8C,QAAQplD,EAAGqJ,QAChB,GAAIN,EAAEm8C,UAAUllD,IAAM+I,EAAEm8C,UAAU77C,GACvCorF,EAAQz0F,IAAMqJ,OACT,GAAIN,EAAEyyB,SAASx7B,IAAM+I,EAAEyyB,SAASnyB,GAKrC,GAJAklF,EAAQvuF,EAAE6F,YACV2oF,EAAQnlF,EAAExD,YACVsuF,EAAaprF,EAAEs6B,WAAWkrD,IAAUA,aAAiBA,EACrDgG,EAAaxrF,EAAEs6B,WAAWmrD,IAAUA,aAAiBA,EACjDD,IAAUC,GAAW2F,GAAcI,EAEhC,CAGL,IAAK50F,KAFL00F,EAAY,EACZI,GAAQ,EACIz0F,EAEV,GADAs0F,EAASt0F,EAAEL,GACNoJ,EAAE6D,IAAI5M,EAAGL,KAGd00F,KACMtrF,EAAE6D,IAAIvD,EAAG1J,KAAQylD,EAAQkvC,EAAQjrF,EAAE1J,GAAMyuF,EAAQC,IAAU,CAC/DoG,GAAQ,EACR,MAGJ,GAAIA,EAAO,CAET,IAAK90F,KADL60F,EAAY,EACAnrF,EACDA,EAAE1J,GACPoJ,EAAE6D,IAAIvD,EAAG1J,IACX60F,IAGJC,EAAQJ,IAAcG,QAvBxBC,GAAQ,OA2BVA,EAAQ1rF,EAAEq8C,QAAQplD,EAAGqJ,GAIvB,OAFA+kF,EAAO/jF,MACPgkF,EAAOhkF,MACAoqF,GAGTE,GAAiB5rF,EAAE86C,OAAO,GAAI96C,EAAG+mF,IAEhCptF,iDClgBF,WAEG,IAaIkyF,EAbAzoF,EAAQ,GACZ,SAASknC,KACT,SAASlM,EAASx/B,GACd,OAAOA,EAEX,SAASktF,EAAOltF,GACZ,QAASA,EAEb,SAASmtF,EAAMntF,GACX,OAAQA,EASZ,IAAI+b,EAAuB,iBAATrjB,MAAqBA,KAAKA,OAASA,MAAQA,MACnC,iBAAlBF,GAA8BA,EAAOI,SAAPJ,GAA9BA,GACA8F,KAWR,SAAS8uF,EAAU77E,GACf,OAAO,WACH,GAAW,OAAPA,EAAa,MAAM,IAAI3X,MAAM,gCACjC2X,EAAG+L,MAAMhf,KAAM6pC,WACf52B,EAAK,MAIb,SAAS87E,EAAM97E,GACX,OAAO,WACQ,OAAPA,IACJA,EAAG+L,MAAMhf,KAAM6pC,WACf52B,EAAK,OArBD,MAARwK,IACAkxE,EAAiBlxE,EAAKvX,OAG1BA,EAAMs6C,WAAa,WAEf,OADA/iC,EAAKvX,MAAQyoF,EACNzoF,GAqBX,IAAI8oF,EAAYz1F,OAAOgD,UAAUD,SAE7B2yF,EAAW1oF,MAAMC,SAAW,SAAUo9E,GACtC,MAA+B,mBAAxBoL,EAAUvyF,KAAKmnF,IAS1B,SAASsL,EAAaC,GAClB,OAAOF,EAASE,IAEU,iBAAfA,EAAI5zF,QACX4zF,EAAI5zF,QAAU,GACd4zF,EAAI5zF,OAAS,GAAM,EAI3B,SAAS6zF,EAAWD,EAAKj9D,GAIrB,IAHA,IAAIzS,GAAS,EACTlkB,EAAS4zF,EAAI5zF,SAERkkB,EAAQlkB,GACb22B,EAASi9D,EAAI1vE,GAAQA,EAAO0vE,GAIpC,SAASE,EAAKF,EAAKj9D,GAKf,IAJA,IAAIzS,GAAS,EACTlkB,EAAS4zF,EAAI5zF,OACbykB,EAASzZ,MAAMhL,KAEVkkB,EAAQlkB,GACbykB,EAAOP,GAASyS,EAASi9D,EAAI1vE,GAAQA,EAAO0vE,GAEhD,OAAOnvE,EAGX,SAASsvE,EAAO7/C,GACZ,OAAO4/C,EAAK9oF,MAAMkpC,IAAQ,SAAU/tC,EAAG1G,GAAK,OAAOA,KAGvD,SAASu0F,EAAQJ,EAAKj9D,EAAUm1C,GAI5B,OAHA+nB,EAAWD,GAAK,SAAUrrF,EAAG9I,EAAGjB,GAC5BstE,EAAOn1C,EAASm1C,EAAMvjE,EAAG9I,EAAGjB,MAEzBstE,EAGX,SAASmoB,EAAW9tE,EAAQwQ,GACxBk9D,EAAWK,EAAM/tE,IAAS,SAAUhoB,GAChCw4B,EAASxQ,EAAOhoB,GAAMA,MAI9B,SAASg2F,EAASP,EAAKpc,GACnB,IAAK,IAAI/3E,EAAI,EAAGA,EAAIm0F,EAAI5zF,OAAQP,IAC5B,GAAIm0F,EAAIn0F,KAAO+3E,EAAM,OAAO/3E,EAEhC,OAAQ,EAGZ,IAAIy0F,EAAQl2F,OAAOC,MAAQ,SAAUoqF,GACjC,IAAIpqF,EAAO,GACX,IAAK,IAAIoK,KAAKggF,EACNA,EAAIpnF,eAAeoH,IACnBpK,EAAK6H,KAAKuC,GAGlB,OAAOpK,GAGX,SAASm2F,EAAaC,GAClB,IACI12B,EACA1/D,EAFAwB,GAAK,EAGT,OAAIk0F,EAAaU,IACb12B,EAAM02B,EAAKr0F,OACJ,WAEH,QADAP,EACWk+D,EAAMl+D,EAAI,QAGzBxB,EAAOi2F,EAAMG,GACb12B,EAAM1/D,EAAK+B,OACJ,WAEH,QADAP,EACWk+D,EAAM1/D,EAAKwB,GAAK,OAQvC,SAAS60F,EAAW5wE,EAAM1M,GAEtB,OADAA,EAA2B,MAAdA,EAAqB0M,EAAK1jB,OAAS,GAAKgX,EAC9C,WAGH,IAFA,IAAIhX,EAASm1B,KAAK8C,IAAIqW,UAAUtuC,OAASgX,EAAY,GACjDwpC,EAAOx1C,MAAMhL,GACRkkB,EAAQ,EAAGA,EAAQlkB,EAAQkkB,IAChCs8B,EAAKt8B,GAASoqB,UAAUpqB,EAAQlN,GAEpC,OAAQA,GACJ,KAAK,EAAG,OAAO0M,EAAKxiB,KAAKuD,KAAM+7C,GAC/B,KAAK,EAAG,OAAO98B,EAAKxiB,KAAKuD,KAAM6pC,UAAU,GAAIkS,KAYzD,SAAS+zC,EAAc59D,GACnB,OAAO,SAAU13B,EAAOilB,EAAOgqB,GAC3B,OAAOvX,EAAS13B,EAAOivC,IAS/B,IAAIsmD,EAAwC,mBAAjBv8B,cAA+BA,aAEtDw8B,EAASD,EAAgB,SAAS98E,GAElC88E,EAAc98E,IACd,SAASA,GACT0f,WAAW1f,EAAI,IA+FnB,SAASg9E,EAAa3zC,GAElB,OAAO,SAAUsnC,EAAK1xD,EAAUuX,GAC5BA,EAAWslD,EAAMtlD,GAAY2D,GAE7B,IAAI8iD,EAAUP,EADd/L,EAAMA,GAAO,IAEb,GAAItnC,GAAS,EACT,OAAO7S,EAAS,MAEpB,IAAI+L,GAAO,EACP26C,EAAU,EACVC,GAAU,GAEd,SAAUC,IACN,GAAI76C,GAAQ26C,GAAW,EACnB,OAAO1mD,EAAS,MAGpB,KAAO0mD,EAAU7zC,IAAU8zC,GAAS,CAChC,IAAI12F,EAAMw2F,IACV,GAAY,OAARx2F,EAKA,OAJA87C,GAAO,OACH26C,GAAW,GACX1mD,EAAS,OAIjB0mD,GAAW,EACXj+D,EAAS0xD,EAAIlqF,GAAMA,EAAKo1F,GAAU,SAAU75E,GACxCk7E,GAAW,EACPl7E,GACAw0B,EAASx0B,GACTm7E,GAAU,GAGVC,SAtBhB,IA+BR,SAASC,EAAWr9E,GAChB,OAAO,SAAU2wE,EAAK1xD,EAAUuX,GAC5B,OAAOx2B,EAAG/M,EAAMqqF,OAAQ3M,EAAK1xD,EAAUuX,IAG/C,SAAS+mD,EAAgBv9E,GACrB,OAAO,SAAU2wE,EAAKtnC,EAAOpqB,EAAUuX,GACnC,OAAOx2B,EAAGg9E,EAAa3zC,GAAQsnC,EAAK1xD,EAAUuX,IAGtD,SAASgnD,EAASx9E,GACd,OAAO,SAAU2wE,EAAK1xD,EAAUuX,GAC5B,OAAOx2B,EAAG/M,EAAMwqF,aAAc9M,EAAK1xD,EAAUuX,IAIrD,SAASknD,EAAUC,EAAQzB,EAAKj9D,EAAUuX,GACtCA,EAAWslD,EAAMtlD,GAAY2D,GAE7B,IAAI2zC,EAAUmO,EADdC,EAAMA,GAAO,IACqB,GAAK,GACvCyB,EAAOzB,GAAK,SAAU30F,EAAOilB,EAAOgqB,GAChCvX,EAAS13B,GAAO,SAAUya,EAAKvT,GAC3Bq/E,EAAQthE,GAAS/d,EACjB+nC,EAASx0B,SAEd,SAAUA,GACTw0B,EAASx0B,EAAK8rE,MA2CtB,SAAS8P,EAAQD,EAAQzB,EAAKj9D,EAAUuX,GACpC,IAAIs3C,EAAU,GACd6P,EAAOzB,GAAK,SAAUrrF,EAAG2b,EAAOgqB,GAC5BvX,EAASpuB,GAAG,SAAUpC,GACdA,GACAq/E,EAAQ1/E,KAAK,CAACoe,MAAOA,EAAOjlB,MAAOsJ,IAEvC2lC,UAEL,WACCA,EAAS4lD,EAAKtO,EAAQ79C,MAAK,SAAUnpC,EAAGqJ,GACpC,OAAOrJ,EAAE0lB,MAAQrc,EAAEqc,UACnB,SAAU3b,GACV,OAAOA,EAAEtJ,aAcrB,SAASs2F,EAAQF,EAAQzB,EAAKj9D,EAAUuX,GACpConD,EAAQD,EAAQzB,GAAK,SAAS30F,EAAOqmE,GACjC3uC,EAAS13B,GAAO,SAASkH,GACrBm/D,GAAIn/D,QAET+nC,GAMP,SAASsnD,EAAcH,EAAQI,EAAOC,GAClC,OAAO,SAAS9B,EAAK7yC,EAAOpqB,EAAU2uC,GAClC,SAASrrB,IACDqrB,GAAIA,EAAGowB,GAAU,OAAO,IAEhC,SAAS1xE,EAASzb,EAAGhB,EAAG2mC,GACpB,IAAKo3B,EAAI,OAAOp3B,IAChBvX,EAASpuB,GAAG,SAAUpC,GACdm/D,GAAMmwB,EAAMtvF,KACZm/D,EAAGowB,GAAU,EAAMntF,IACnB+8D,EAAK3uC,GAAW,GAEpBuX,OAGJI,UAAUtuC,OAAS,EACnBq1F,EAAOzB,EAAK7yC,EAAO/8B,EAAUi2B,IAE7BqrB,EAAK3uC,EACLA,EAAWoqB,EACXs0C,EAAOzB,EAAK5vE,EAAUi2B,KAelC,SAAS07C,EAAexvF,EAAGoC,GACvB,OAAOA,EA2OX,SAASqtF,EAAUP,EAAQQ,EAAO3nD,GAC9BA,EAAWA,GAAY2D,EACvB,IAAI2zC,EAAUmO,EAAakC,GAAS,GAAK,GAEzCR,EAAOQ,GAAO,SAAUC,EAAM33F,EAAK+vC,GAC/B4nD,EAAKxB,GAAW,SAAU56E,EAAKkK,GACvBA,EAAK5jB,QAAU,IACf4jB,EAAOA,EAAK,IAEhB4hE,EAAQrnF,GAAOylB,EACfsqB,EAASx0B,UAEd,SAAUA,GACTw0B,EAASx0B,EAAK8rE,MAwCtB,SAASuQ,EAAQV,EAAQzB,EAAKl8E,EAAIw2B,GAC9B,IAAIzpB,EAAS,GACb4wE,EAAOzB,GAAK,SAAUrrF,EAAG2b,EAAOohD,GAC5B5tD,EAAGnP,GAAG,SAAUmR,EAAKjT,GACjBge,EAASA,EAAOxT,OAAOxK,GAAK,IAC5B6+D,EAAG5rD,SAER,SAAUA,GACTw0B,EAASx0B,EAAK+K,MA+EtB,SAASuxE,EAAOC,EAAQC,EAAaC,GACjC,GAAmB,MAAfD,EACAA,EAAc,OAEb,GAAmB,IAAhBA,EACJ,MAAM,IAAIn2F,MAAM,gCAEpB,SAASq2F,EAAQrtF,EAAGsyB,EAAM4yB,EAAK/f,GAC3B,GAAgB,MAAZA,GAAwC,mBAAbA,EAC3B,MAAM,IAAInuC,MAAM,oCAMpB,GAJAgJ,EAAE2vD,SAAU,EACPg7B,EAASr4D,KACVA,EAAO,CAACA,IAEO,IAAhBA,EAAKr7B,QAAgB+I,EAAEstF,OAEtB,OAAO1rF,EAAMstD,cAAa,WACtBlvD,EAAEutF,WAGVzC,EAAWx4D,GAAM,SAASy6D,GACtB,IAAIte,EAAO,CACPn8C,KAAMy6D,EACN5nD,SAAUA,GAAY2D,GAGtBoc,EACAllD,EAAE8sF,MAAMU,QAAQ/e,GAEhBzuE,EAAE8sF,MAAM/vF,KAAK0xE,GAGbzuE,EAAE8sF,MAAM71F,SAAW+I,EAAEmtF,aACrBntF,EAAEytF,eAGV7rF,EAAMstD,aAAalvD,EAAErH,SAEzB,SAAS+0F,EAAM1tF,EAAG8sF,GACd,OAAO,WACHa,GAAW,EAEX,IAAIC,GAAU,EACV/yE,EAAO0qB,UACXulD,EAAWgC,GAAO,SAAUC,GACxBjC,EAAW+C,GAAa,SAAUX,EAAQ/xE,GAClC+xE,IAAWH,GAASa,IACpBC,EAAY7lF,OAAOmT,EAAO,GAC1ByyE,GAAU,MAIlBb,EAAK5nD,SAASzqB,MAAMqyE,EAAMlyE,MAE1B7a,EAAE8sF,MAAM71F,OAAS02F,IAAY,GAC7B3tF,EAAEutF,QAENvtF,EAAErH,WAIV,IAAIg1F,EAAU,EACVE,EAAc,GACd7tF,EAAI,CACJ8sF,MAAO,GACPK,YAAaA,EACbC,QAASA,EACTK,UAAW3kD,EACXglD,MAAOhlD,EACPykD,MAAOzkD,EACP6mB,SAAS,EACTo+B,QAAQ,EACRhxF,KAAM,SAAUu1B,EAAM6S,GAClBkoD,EAAQrtF,EAAGsyB,GAAM,EAAO6S,IAE5ByuB,KAAM,WACF5zD,EAAEutF,MAAQzkD,EACV9oC,EAAE8sF,MAAQ,IAEdU,QAAS,SAAUl7D,EAAM6S,GACrBkoD,EAAQrtF,EAAGsyB,GAAM,EAAM6S,IAE3BxsC,QAAS,WACL,MAAOqH,EAAE+tF,QAAUJ,EAAU3tF,EAAEmtF,aAAentF,EAAE8sF,MAAM71F,QAAO,CAEzD,IAAI61F,EAAQ9sF,EAAEotF,QACVptF,EAAE8sF,MAAM9kF,OAAO,EAAGhI,EAAEotF,SACpBptF,EAAE8sF,MAAM9kF,OAAO,EAAGhI,EAAE8sF,MAAM71F,QAE1Bq7B,EAAOy4D,EAAK+B,GAAO,SAAUC,GAC7B,OAAOA,EAAKz6D,QAGO,IAAnBtyB,EAAE8sF,MAAM71F,QACR+I,EAAE8tF,QAENH,GAAW,EACXE,EAAY9wF,KAAK+vF,EAAM,IACvB,IAAIvwB,EAAKiuB,EAAUkD,EAAM1tF,EAAG8sF,IAC5BI,EAAO56D,EAAMiqC,KAGrBtlE,OAAQ,WACJ,OAAO+I,EAAE8sF,MAAM71F,QAEnB40F,QAAS,WACL,OAAO8B,GAEXE,YAAa,WACT,OAAOA,GAEXP,KAAM,WACF,OAAOttF,EAAE8sF,MAAM71F,OAAS02F,IAAY,GAExCK,MAAO,WACHhuF,EAAE+tF,QAAS,GAEfE,OAAQ,WACJ,IAAiB,IAAbjuF,EAAE+tF,OAAN,CACA/tF,EAAE+tF,QAAS,EAIX,IAHA,IAAIG,EAAc9hE,KAAKgD,IAAIpvB,EAAEmtF,YAAantF,EAAE8sF,MAAM71F,QAGzCuG,EAAI,EAAGA,GAAK0wF,EAAa1wF,IAC9BoE,EAAMstD,aAAalvD,EAAErH,YAIjC,OAAOqH,EA+EX,SAASmuF,EAAYzrF,GACjB,OAAO6oF,GAAW,SAAU58E,EAAIkM,GAC5BlM,EAAG+L,MAAM,KAAMG,EAAK3S,OAAO,CAACqjF,GAAW,SAAU56E,EAAKkK,GAC3B,iBAAZ4vC,UACH95C,EACI85C,QAAQC,OACRD,QAAQC,MAAM/5C,GAGb85C,QAAQ/nD,IACbooF,EAAWjwE,GAAM,SAAUrb,GACvBirD,QAAQ/nD,GAAMlD,gBAoDtC,SAAS4uF,EAAOC,GACZ,OAAO,SAAUljD,EAAOvd,EAAUuX,GAC9BkpD,EAAOrD,EAAO7/C,GAAQvd,EAAUuX,IAsCxC,SAASmpD,EAAWhC,GAChB,OAAOf,GAAW,SAASgD,EAAK1zE,GAC5B,IAAI2zE,EAAKjD,GAAW,SAAS1wE,GACzB,IAAI4zE,EAAO/yF,KACPypC,EAAWtqB,EAAK/a,MACpB,OAAOwsF,EAAOiC,GAAK,SAAU5/E,EAAInQ,EAAG+9D,GAChC5tD,EAAG+L,MAAM+zE,EAAM5zE,EAAK3S,OAAO,CAACq0D,OAEhCp3B,MAEJ,OAAItqB,EAAK5jB,OACEu3F,EAAG9zE,MAAMhf,KAAMmf,GAGf2zE,KAqBnB,SAASE,EAAY//E,GACjB,OAAO48E,GAAW,SAAU1wE,GACxB,IAAIsqB,EAAWtqB,EAAK/a,MACpB+a,EAAK9d,MAAK,WACN,IAAI4xF,EAAYppD,UACZo8B,EACA//D,EAAMstD,cAAa,WACf/pB,EAASzqB,MAAM,KAAMi0E,MAGzBxpD,EAASzqB,MAAM,KAAMi0E,MAG7B,IAAIhtB,GAAO,EACXhzD,EAAG+L,MAAMhf,KAAMmf,GACf8mD,GAAO,KAv/BQ,iBAAZhpE,SAAoD,mBAArBA,QAAQwkE,SAC9Cv7D,EAAMu7D,SAAWxkE,QAAQwkE,SAEzBv7D,EAAMu7D,SAAWuuB,EAErB9pF,EAAMstD,aAAeu8B,EAAgBC,EAAS9pF,EAAMu7D,SAGpDv7D,EAAMzM,QACNyM,EAAMq9C,KAAO,SAAU4rC,EAAKj9D,EAAUuX,GAClC,OAAOvjC,EAAMqqF,OAAOpB,EAAKW,EAAc59D,GAAWuX,IAGtDvjC,EAAMgtF,cACNhtF,EAAMitF,WAAa,SAAUhE,EAAKj9D,EAAUuX,GACxC,OAAOvjC,EAAMwqF,aAAavB,EAAKW,EAAc59D,GAAWuX,IAI5DvjC,EAAMktF,aACNltF,EAAMmtF,UAAY,SAAUlE,EAAK7yC,EAAOpqB,EAAUuX,GAC9C,OAAOwmD,EAAa3zC,EAAb2zC,CAAoBd,EAAKW,EAAc59D,GAAWuX,IAG7DvjC,EAAMotF,UACNptF,EAAMqqF,OAAS,SAAU7uE,EAAQwQ,EAAUuX,GACvCA,EAAWslD,EAAMtlD,GAAY2D,GAM7B,IAHA,IACI1zC,EADA65F,EAAO5D,EAFXjuE,EAASA,GAAU,IAGV8xE,EAAY,EAEI,OAAjB95F,EAAM65F,MACVC,GAAa,EACbthE,EAASxQ,EAAOhoB,GAAMA,EAAKo1F,EAAUt5C,IAKzC,SAASA,EAAKvgC,GACVu+E,IACIv+E,EACAw0B,EAASx0B,GAII,OAARvb,GAAgB85F,GAAa,GAClC/pD,EAAS,MAVC,IAAd+pD,GAAiB/pD,EAAS,OAelCvjC,EAAMutF,gBACNvtF,EAAMwqF,aAAe,SAAU9M,EAAK1xD,EAAUuX,GAC1CA,EAAWslD,EAAMtlD,GAAY2D,GAE7B,IAAI8iD,EAAUP,EADd/L,EAAMA,GAAO,IAETlqF,EAAMw2F,KACV,SAASwD,IACL,IAAIztB,GAAO,EACX,GAAY,OAARvsE,EACA,OAAO+vC,EAAS,MAEpBvX,EAAS0xD,EAAIlqF,GAAMA,EAAKo1F,GAAU,SAAU75E,GACxC,GAAIA,EACAw0B,EAASx0B,OAER,CAED,GAAY,QADZvb,EAAMw2F,KAEF,OAAOzmD,EAAS,MAEZw8B,EACA//D,EAAMstD,aAAakgC,GAEnBA,SAKhBztB,GAAO,EAEXytB,IAKJxtF,EAAMytF,eACNztF,EAAM0tF,YAAc,SAAUhQ,EAAKtnC,EAAOpqB,EAAUuX,GAChDwmD,EAAa3zC,EAAb2zC,CAAoBrM,EAAK1xD,EAAUuX,IA6EvCvjC,EAAMtF,IAAM0vF,EAAWK,GACvBzqF,EAAM2tF,UAAYpD,EAASE,GAC3BzqF,EAAM4tF,SAAWtD,EAAgBG,GAIjCzqF,EAAM4+E,OACN5+E,EAAM2+E,MACN3+E,EAAM86C,OAAS,SAAUmuC,EAAK9nB,EAAMn1C,EAAUuX,GAC1CvjC,EAAMwqF,aAAavB,GAAK,SAAUrrF,EAAG9I,EAAGyuC,GACpCvX,EAASm1C,EAAMvjE,GAAG,SAAUmR,EAAKvT,GAC7B2lE,EAAO3lE,EACP+nC,EAASx0B,SAEd,SAAUA,GACTw0B,EAASx0B,EAAKoyD,OAItBnhE,EAAM6+E,MACN7+E,EAAM+6C,YAAc,SAAUkuC,EAAK9nB,EAAMn1C,EAAUuX,GAC/C,IAAIsqD,EAAW1E,EAAKF,EAAKjuD,GAAUlN,UACnC9tB,EAAM86C,OAAO+yC,EAAU1sB,EAAMn1C,EAAUuX,IAG3CvjC,EAAMkpB,UAAY,SAAU+/D,EAAK9nB,EAAMn1C,EAAUuX,GACpB,IAArBI,UAAUtuC,SACVkuC,EAAWvX,EACXA,EAAWm1C,EACXA,EAAO4nB,EAASE,GAAO,GAAK,IAGhCjpF,EAAMqqF,OAAOpB,GAAK,SAASztF,EAAGkC,EAAGi9D,GAC7B3uC,EAASm1C,EAAM3lE,EAAGkC,EAAGi9D,MACtB,SAAS5rD,GACRw0B,EAASx0B,EAAKoyD,OAsBtBnhE,EAAMkvE,OACNlvE,EAAMjD,OAASqtF,EAAWO,GAE1B3qF,EAAM8tF,YACN9tF,EAAM+tF,YAAczD,EAAgBK,GAEpC3qF,EAAMguF,aACNhuF,EAAMiuF,aAAe1D,EAASI,GAS9B3qF,EAAM41C,OAASw0C,EAAWQ,GAC1B5qF,EAAMkuF,YAAc5D,EAAgBM,GACpC5qF,EAAMmuF,aAAe5D,EAASK,GA2B9B5qF,EAAMg/E,IACNh/E,EAAMjC,KAAO8sF,EAAc7qF,EAAMqqF,OAAQ3B,EAAQ1tD,GAEjDh7B,EAAMouF,UAAYvD,EAAc7qF,EAAM0tF,YAAahF,EAAQ1tD,GAE3Dh7B,EAAMO,IACNP,EAAM/B,MAAQ4sF,EAAc7qF,EAAMqqF,OAAQ1B,EAAOA,GAEjD3oF,EAAMquF,WAAaxD,EAAc7qF,EAAM0tF,YAAa/E,EAAOA,GAK3D3oF,EAAM8+E,OAAS+L,EAAc7qF,EAAMqqF,OAAQrvD,EAAUgwD,GACrDhrF,EAAMsuF,aAAezD,EAAc7qF,EAAMwqF,aAAcxvD,EAAUgwD,GACjEhrF,EAAMuuF,YAAc1D,EAAc7qF,EAAM0tF,YAAa1yD,EAAUgwD,GAE/DhrF,EAAMssC,OAAS,SAAU28C,EAAKj9D,EAAUuX,GAsBpC,SAASrpB,EAAWslE,EAAMC,GACtB,IAAI5rF,EAAI2rF,EAAKtiD,SAAUhgC,EAAIuiF,EAAMviD,SACjC,OAAOrpC,EAAIqJ,GAAK,EAAIrJ,EAAIqJ,EAAI,EAAI,EAvBpC8C,EAAMtF,IAAIuuF,GAAK,SAAUrrF,EAAG2lC,GACxBvX,EAASpuB,GAAG,SAAUmR,EAAKmuB,GACnBnuB,EACAw0B,EAASx0B,GAGTw0B,EAAS,KAAM,CAACjvC,MAAOsJ,EAAGs/B,SAAUA,UAG7C,SAAUnuB,EAAK8rE,GACd,GAAI9rE,EACA,OAAOw0B,EAASx0B,GAGhBw0B,EAAS,KAAM4lD,EAAKtO,EAAQ79C,KAAK9iB,IAAa,SAAUtc,GACpD,OAAOA,EAAEtJ,cAYzB0L,EAAMwuF,KAAO,SAAUtD,EAAOK,EAAahoD,GACX,mBAAjBI,UAAU,KAEjBJ,EAAWgoD,EACXA,EAAc,MAElBhoD,EAAWslD,EAAMtlD,GAAY2D,GAC7B,IAAI5zC,EAAOi2F,EAAM2B,GACbuD,EAAiBn7F,EAAK+B,OAC1B,IAAKo5F,EACD,OAAOlrD,EAAS,MAEfgoD,IACDA,EAAckD,GAGlB,IAAI5T,EAAU,GACV6T,EAAe,EAEfC,GAAW,EAEXC,EAAY,GAChB,SAASC,EAAY9hF,GACjB6hF,EAAUhD,QAAQ7+E,GAEtB,SAAS+hF,EAAe/hF,GACpB,IAAIkzE,EAAMuJ,EAASoF,EAAW7hF,GAC1BkzE,GAAO,GAAG2O,EAAUxoF,OAAO65E,EAAK,GAExC,SAAS8O,IACLN,IACAvF,EAAW0F,EAAUl5F,MAAM,IAAI,SAAUqX,GACrCA,OAIR8hF,GAAY,WACHJ,GACDlrD,EAAS,KAAMs3C,MAIvBqO,EAAW51F,GAAM,SAAUoK,GACvB,IAAIixF,EAAJ,CA0BA,IAzBA,IAwBIK,EAxBA7D,EAAOpC,EAASmC,EAAMxtF,IAAMwtF,EAAMxtF,GAAI,CAACwtF,EAAMxtF,IAC7CuxF,EAAetF,GAAW,SAAS56E,EAAKkK,GAKxC,GAJAy1E,IACIz1E,EAAK5jB,QAAU,IACf4jB,EAAOA,EAAK,IAEZlK,EAAK,CACL,IAAImgF,EAAc,GAClB5F,EAAWzO,GAAS,SAASsU,EAAKC,GAC9BF,EAAYE,GAAQD,KAExBD,EAAYxxF,GAAKub,EACjB01E,GAAW,EAEXprD,EAASx0B,EAAKmgF,QAGdrU,EAAQn9E,GAAKub,EACbjZ,EAAMstD,aAAayhC,MAGvBM,EAAWlE,EAAKz1F,MAAM,EAAGy1F,EAAK91F,OAAS,GAEvC29D,EAAMq8B,EAASh6F,OAEZ29D,KAAO,CACV,KAAMg8B,EAAM9D,EAAMmE,EAASr8B,KACvB,MAAM,IAAI59D,MAAM,iCAAmCi6F,EAASx0F,KAAK,OAErE,GAAIkuF,EAASiG,IAAQxF,EAASwF,EAAKtxF,IAAM,EACrC,MAAM,IAAItI,MAAM,2BAQpBk6F,KACAZ,IACAvD,EAAKA,EAAK91F,OAAS,GAAG45F,EAAcpU,IAGpCgU,GAEJ,SAASU,IACDD,MACAZ,IACAI,EAAeS,GACfpE,EAAKA,EAAK91F,OAAS,GAAG45F,EAAcpU,OAhB5C,SAASyU,IACL,OAAOZ,EAAenD,GAAelC,EAAQgG,GAAU,SAAUx7F,EAAG+J,GAChE,OAAQ/J,GAAKgnF,EAAQvkF,eAAesH,MACrC,KAAUi9E,EAAQvkF,eAAeoH,QAqBhDsC,EAAMwvF,MAAQ,SAASjzC,EAAO4uC,EAAM5nD,GAChC,IAAIksD,EAAgB,EAChBC,EAAmB,EAEnBC,EAAW,GAEXz2B,EAAO,CACP3c,MAAOkzC,EACP7hC,SAAU8hC,GAGd,SAASE,EAAWC,EAAKn7F,GACrB,GAAgB,iBAANA,EACNm7F,EAAItzC,MAAQnlC,SAAS1iB,EAAG,KAAO+6F,MAC5B,CAAA,GAAgB,iBAAN/6F,EAIb,MAAM,IAAIU,MAAM,iDAAqDV,GAHrEm7F,EAAItzC,MAAQnlC,SAAS1iB,EAAE6nD,MAAO,KAAOkzC,EACrCI,EAAIjiC,SAAWx2C,SAAS1iB,EAAEk5D,SAAU,KAAO8hC,GAMnD,IAAIr6F,EAASsuC,UAAUtuC,OACvB,GAAIA,EAAS,GAAKA,EAAS,EACvB,MAAM,IAAID,MAAM,yGAWpB,SAAS06F,EAAYC,EAAiBC,GAClC,SAASC,EAAa9E,EAAM+E,GACxB,OAAO,SAASC,GACZhF,GAAK,SAASp8E,EAAK+K,GACfq2E,GAAgBphF,GAAOmhF,EAAc,CAACnhF,IAAKA,EAAK+K,OAAQA,MACzDk2E,IAIX,SAASI,EAAcxiC,GACnB,OAAO,SAASuiC,GACZ1jE,YAAW,WACP0jE,EAAe,QAChBviC,IAIX,KAAOsL,EAAK3c,OAAO,CAEf,IAAI2zC,IAAiBh3B,EAAK3c,OAAO,GACjCozC,EAASx0F,KAAK80F,EAAa/2B,EAAKiyB,KAAM+E,KAClCA,GAAgBh3B,EAAKtL,SAAW,GAChC+hC,EAASx0F,KAAKi1F,EAAcl3B,EAAKtL,WAIzC5tD,EAAMqwF,OAAOV,GAAU,SAASrgD,EAAM5e,GAClCA,EAAOA,EAAKA,EAAKr7B,OAAS,IACzB06F,GAAmB72B,EAAK31B,UAAU7S,EAAK3hB,IAAK2hB,EAAK5W,WAK1D,OA3CWzkB,GAAU,GAAsB,mBAAVknD,IAC7BhZ,EAAW4nD,EACXA,EAAO5uC,GAEU,mBAAVA,GACPqzC,EAAW12B,EAAM3c,GAErB2c,EAAK31B,SAAWA,EAChB21B,EAAKiyB,KAAOA,EAmCLjyB,EAAK31B,SAAWusD,IAAgBA,GAG3C9vF,EAAMswF,UAAY,SAAUpF,EAAO3nD,GAE/B,GADAA,EAAWslD,EAAMtlD,GAAY2D,IACxB6hD,EAASmC,GAAQ,CAClB,IAAIn8E,EAAM,IAAI3Z,MAAM,6DACpB,OAAOmuC,EAASx0B,GAEpB,IAAKm8E,EAAM71F,OACP,OAAOkuC,KAEX,SAASgtD,EAAavkE,GAClB,OAAO29D,GAAW,SAAU56E,EAAKkK,GAC7B,GAAIlK,EACAw0B,EAASzqB,MAAM,KAAM,CAAC/J,GAAKzI,OAAO2S,QAEjC,CACD,IAAIo2B,EAAOrjB,EAASqjB,OAChBA,EACAp2B,EAAK9d,KAAKo1F,EAAalhD,IAGvBp2B,EAAK9d,KAAKooC,GAEdupD,EAAY9gE,GAAUlT,MAAM,KAAMG,OAI9Cs3E,CAAavwF,EAAMgsB,SAASk/D,GAA5BqF,IAoBJvwF,EAAMwwF,SAAW,SAAUtF,EAAO3nD,GAC9B0nD,EAAUjrF,EAAMqqF,OAAQa,EAAO3nD,IAGnCvjC,EAAMywF,cAAgB,SAASvF,EAAO90C,EAAO7S,GACzC0nD,EAAUlB,EAAa3zC,GAAQ80C,EAAO3nD,IAG1CvjC,EAAMqwF,OAAS,SAASnF,EAAO3nD,GAC3B0nD,EAAUjrF,EAAMwqF,aAAcU,EAAO3nD,IAGzCvjC,EAAMgsB,SAAW,SAAUk/D,GAavB,OAZA,SAASwF,EAAan3E,GAClB,SAASxM,IAIL,OAHIm+E,EAAM71F,QACN61F,EAAM3xE,GAAOT,MAAM,KAAM6qB,WAEtB52B,EAAGsiC,OAKd,OAHAtiC,EAAGsiC,KAAO,WACN,OAAQ91B,EAAQ2xE,EAAM71F,OAAS,EAAKq7F,EAAan3E,EAAQ,GAAI,MAE1DxM,EAEJ2jF,CAAa,IAGxB1wF,EAAM8Y,MAAQ6wE,GAAW,SAAU58E,EAAIkM,GACnC,OAAO0wE,GAAW,SAAU9I,GACxB,OAAO9zE,EAAG+L,MACN,KAAMG,EAAK3S,OAAOu6E,UAgB9B7gF,EAAMsG,OAAS8jF,EAAWgB,GAC1BprF,EAAM2wF,aAAepG,EAASa,GAE9BprF,EAAM4wF,OAAS,SAAU15F,EAAM80B,EAAUuX,GAErC,GADAA,EAAWA,GAAY2D,EACnBhwC,IAAQ,CACR,IAAIm4C,EAAOs6C,GAAW,SAAS56E,EAAKkK,GAC5BlK,EACAw0B,EAASx0B,GACF7X,EAAK4hB,MAAMhf,KAAMmf,GACxB+S,EAASqjB,GAET9L,EAASzqB,MAAM,KAAM,CAAC,MAAMxS,OAAO2S,OAG3C+S,EAASqjB,QAET9L,EAAS,OAIjBvjC,EAAM6wF,SAAW,SAAU7kE,EAAU90B,EAAMqsC,GACvC,IAAIutD,EAAQ,EACZ,OAAO9wF,EAAM4wF,QAAO,WAChB,QAASE,GAAS,GAAK55F,EAAK4hB,MAAMhf,KAAM6pC,aACzC3X,EAAUuX,IAGjBvjC,EAAM+wF,MAAQ,SAAU75F,EAAM80B,EAAUuX,GACpC,OAAOvjC,EAAM4wF,QAAO,WAChB,OAAQ15F,EAAK4hB,MAAMhf,KAAM6pC,aAC1B3X,EAAUuX,IAGjBvjC,EAAMgxF,QAAU,SAAUhlE,EAAU90B,EAAMqsC,GACtC,OAAOvjC,EAAM6wF,SAAS7kE,GAAU,WAC5B,OAAQ90B,EAAK4hB,MAAMhf,KAAM6pC,aAC1BJ,IAGPvjC,EAAMixF,OAAS,SAAU/5F,EAAM80B,EAAUuX,GACrCA,EAAWA,GAAY2D,EAEvB,IAAImI,EAAOs6C,GAAW,SAAS56E,EAAKkK,GAC5BlK,EACAw0B,EAASx0B,IAETkK,EAAK9d,KAAK2vF,GACV5zF,EAAK4hB,MAAMhf,KAAMmf,OAIrB6xE,EAAQ,SAAS/7E,EAAKmiF,GAClBniF,EACAw0B,EAASx0B,GACFmiF,EACPllE,EAASqjB,GAET9L,EAAS,OAIjBrsC,EAAK4zF,IAGT9qF,EAAMmxF,SAAW,SAAUnlE,EAAU90B,EAAMqsC,GACvC,IAAIutD,EAAQ,EACZ9wF,EAAMixF,QAAO,SAAS5hD,GACdyhD,IAAU,EACVzhD,EAAK,MAAM,GAEXn4C,EAAK4hB,MAAMhf,KAAM6pC,aAEtB3X,EAAUuX,IAuIjBvjC,EAAMoxF,MAAQ,SAAU9F,EAAQC,GAK5B,OAJQF,GAAO,SAAUvhB,EAAOnP,GAC5B2wB,EAAOxhB,EAAM,GAAInP,KAClB4wB,EAAa,IAKpBvrF,EAAMqxF,cAAgB,SAAU/F,EAAQC,GAEpC,SAAS+F,EAAcz9F,EAAGqJ,GACtB,OAAOrJ,EAAEkuE,SAAW7kE,EAAE6kE,SAgD1B,IAAI3jE,EAAI4B,EAAMoxF,MAAM9F,EAAQC,GAU5B,OAPAntF,EAAEjD,KAAO,SAAUu1B,EAAMqxC,EAAUx+B,IAlCnC,SAAiBnlC,EAAGsyB,EAAMqxC,EAAUx+B,GAChC,GAAgB,MAAZA,GAAwC,mBAAbA,EAC3B,MAAM,IAAInuC,MAAM,oCAMpB,GAJAgJ,EAAE2vD,SAAU,EACPg7B,EAASr4D,KACVA,EAAO,CAACA,IAEO,IAAhBA,EAAKr7B,OAEJ,OAAO2K,EAAMstD,cAAa,WACtBlvD,EAAEutF,WAGVzC,EAAWx4D,GAAM,SAASy6D,GACtB,IAAIte,EAAO,CACPn8C,KAAMy6D,EACNppB,SAAUA,EACVx+B,SAA8B,mBAAbA,EAA0BA,EAAW2D,GAG1D9oC,EAAE8sF,MAAM9kF,OAnChB,SAAuBmrF,EAAU1kB,EAAM/xE,GAGnC,IAFA,IAAI02F,GAAO,EACP3yD,EAAM0yD,EAASl8F,OAAS,EACrBm8F,EAAM3yD,GAAK,CACd,IAAIM,EAAMqyD,GAAQ3yD,EAAM2yD,EAAM,IAAO,GACjC12F,EAAQ+xE,EAAM0kB,EAASpyD,KAAS,EAChCqyD,EAAMryD,EAENN,EAAMM,EAAM,EAGpB,OAAOqyD,EAwBYC,CAAcrzF,EAAE8sF,MAAOre,EAAMykB,GAAiB,EAAG,EAAGzkB,GAE/DzuE,EAAE8sF,MAAM71F,SAAW+I,EAAEmtF,aACrBntF,EAAEytF,YAEN7rF,EAAMstD,aAAalvD,EAAErH,YASzB00F,CAAQrtF,EAAGsyB,EAAMqxC,EAAUx+B,WAIxBnlC,EAAEwtF,QAEFxtF,GAGX4B,EAAM0xF,MAAQ,SAAUpG,EAAQE,GAC5B,OAAOH,EAAOC,EAAQ,EAAGE,IAqB7BxrF,EAAM8sD,IAAMy/B,EAAY,OACxBvsF,EAAMs+C,IAAMiuC,EAAY,OAKxBvsF,EAAM4pC,QAAU,SAAU78B,EAAIg0E,GAC1B,IAAI5f,EAAO,GACPwwB,EAAS,GACTlxF,EAAMpN,OAAOgD,UAAUC,eAC3ByqF,EAASA,GAAU/lD,EACnB,IAAImT,EAAWw7C,GAAW,SAAkB1wE,GACxC,IAAIsqB,EAAWtqB,EAAK/a,MAChB1K,EAAMutF,EAAOjoE,MAAM,KAAMG,GACzBxY,EAAIlK,KAAK4qE,EAAM3tE,GACfwM,EAAMstD,cAAa,WACf/pB,EAASzqB,MAAM,KAAMqoD,EAAK3tE,OAGzBiN,EAAIlK,KAAKo7F,EAAQn+F,GACtBm+F,EAAOn+F,GAAK2H,KAAKooC,IAGjBouD,EAAOn+F,GAAO,CAAC+vC,GACfx2B,EAAG+L,MAAM,KAAMG,EAAK3S,OAAO,CAACqjF,GAAW,SAAU1wE,GAC7CkoD,EAAK3tE,GAAOylB,EACZ,IAAI7a,EAAIuzF,EAAOn+F,UACRm+F,EAAOn+F,GACd,IAAK,IAAIsB,EAAI,EAAGa,EAAIyI,EAAE/I,OAAQP,EAAIa,EAAGb,IACjCsJ,EAAEtJ,GAAGgkB,MAAM,KAAMG,aAOjC,OAFAk1B,EAASgzB,KAAOA,EAChBhzB,EAASyjD,WAAa7kF,EACfohC,GAGXnuC,EAAM6xF,UAAY,SAAU9kF,GACxB,OAAO,WACH,OAAQA,EAAG6kF,YAAc7kF,GAAI+L,MAAM,KAAM6qB,aAUjD3jC,EAAMu8C,MAAQiwC,EAAOxsF,EAAMtF,KAC3BsF,EAAM8xF,YAActF,EAAOxsF,EAAM2tF,WACjC3tF,EAAM+xF,WAAa,SAAUxoD,EAAO6M,EAAOpqB,EAAUuX,GACjD,OAAOvjC,EAAM4tF,SAASxE,EAAO7/C,GAAQ6M,EAAOpqB,EAAUuX,IAG1DvjC,EAAM6tD,IAAM,WACR,IAAI8+B,EAAMhpD,UACV,OAAOgmD,GAAW,SAAU1wE,GACxB,IAAI4zE,EAAO/yF,KAEPypC,EAAWtqB,EAAKA,EAAK5jB,OAAS,GACX,mBAAZkuC,EACPtqB,EAAK/a,MAELqlC,EAAW2D,EAGflnC,EAAM86C,OAAO6xC,EAAK1zE,GAAM,SAAU+4E,EAASjlF,EAAI4tD,GAC3C5tD,EAAG+L,MAAM+zE,EAAMmF,EAAQ1rF,OAAO,CAACqjF,GAAW,SAAU56E,EAAKkjF,GACrDt3B,EAAG5rD,EAAKkjF,YAGhB,SAAUljF,EAAK8rE,GACXt3C,EAASzqB,MAAM+zE,EAAM,CAAC99E,GAAKzI,OAAOu0E,WAK9C76E,EAAMqhF,QAAU,WACZ,OAAOrhF,EAAM6tD,IAAI/0C,MAAM,KAAMzY,MAAMhK,UAAUy3B,QAAQv3B,KAAKotC,aAuB9D3jC,EAAMkyF,UAAYxF,EAAW1sF,EAAMqqF,QACnCrqF,EAAMmyF,gBAAkBzF,EAAW1sF,EAAMwqF,cAGzCxqF,EAAMoyF,QAAU,SAAUrlF,EAAIw2B,GAC1B,IAAI+L,EAAOs5C,EAAUrlD,GAAY2D,GAC7BikD,EAAO2B,EAAY//E,IACvB,SAASsiC,EAAKtgC,GACV,GAAIA,EACA,OAAOugC,EAAKvgC,GAEhBo8E,EAAK97C,GAETA,IAsBJrvC,EAAM8sF,YAAcA,EAEpB9sF,EAAM0+B,SAAWirD,GAAW,SAAStvE,GACjC,IAAIpB,EAAO,CAAC,MAAM3S,OAAO+T,GACzB,OAAO,SAAUkpB,GACb,OAAOA,EAASzqB,MAAMhf,KAAMmf,OAIpCjZ,EAAMqyF,SACNryF,EAAMsyF,SAAW,SAAkBv5E,GAC/B,OAAO4wE,GAAW,SAAU1wE,GACxB,IACIa,EA7oCa4jE,EACjBr1C,EA2oCI9E,EAAWtqB,EAAK/a,MAEpB,IACI4b,EAASf,EAAKD,MAAMhf,KAAMmf,GAC5B,MAAO1kB,GACL,OAAOgvC,EAAShvC,IA/oCR,cADZ8zC,SADiBq1C,EAopCH5jE,KAlpCqB,WAATuuB,GAAuBq1C,IAkpCD,mBAAhB5jE,EAAO7Y,KACnC6Y,EAAO7Y,MAAK,SAAS3M,GACjBivC,EAAS,KAAMjvC,MADnB,OAEY,SAASya,GACjBw0B,EAASx0B,EAAIG,QAAUH,EAAM,IAAI3Z,MAAM2Z,OAG3Cw0B,EAAS,KAAMzpB,OAMvBy4E,GACAA,GAAiBvyF,EAGM,mBAAXg/C,QAAyBA,OAAOC,IAC5CD,OAAO,IAAI,WACP,OAAOh/C,KAKXuX,EAAKvX,MAAQA,EAtuCpB,UCPG/K,GACA6K,GACA0yF,SAIJ,SAASC,GAAQj8F,EAAG0iE,EAAM7/D,EAAGq5F,GACL,mBAATx5B,GACP7/D,EAAI6/D,EACJA,EAAO,IAEDA,GAAwB,iBAATA,IACrBA,EAAO,CAAEy5B,KAAMz5B,IAGnB,IAAIy5B,EAAOz5B,EAAKy5B,KACZC,EAAM15B,EAAKp5D,IAAMA,QAER8L,IAAT+mF,IACAA,EAAOH,IAAUz7F,QAAQ87F,SAExBH,IAAMA,EAAO,MAElB,IAAI/3B,EAAKthE,GAAK,aACd7C,EAAIvB,GAAKuK,QAAQhJ,GAEjBo8F,EAAIE,MAAMt8F,EAAGm8F,GAAM,SAAUI,GACzB,IAAKA,EAED,OAAOp4B,EAAG,KADV+3B,EAAOA,GAAQl8F,GAGnB,OAAQu8F,EAAGlxC,MACP,IAAK,SACD4wC,GAAOx9F,GAAK+rD,QAAQxqD,GAAI0iE,GAAM,SAAU65B,EAAIL,GACpCK,EAAIp4B,EAAGo4B,EAAIL,GACVD,GAAOj8F,EAAG0iE,EAAMyB,EAAI+3B,MAE7B,MAKJ,QACIE,EAAIh4B,KAAKpkE,GAAG,SAAUw8F,EAAKp4B,GAGnBo4B,IAAQp4B,EAAKI,cAAeL,EAAGo4B,EAAIL,GAClC/3B,EAAG,KAAM+3B,gDA/C9Bz9F,KACA6K,KACA0yF,GAAQp7E,SAAS,OAAQ,GAE7B67E,GAAiBR,GAAOS,OAAST,GAAOA,OAASA,GAkDjDA,GAAO1yB,KAAO,SAASA,EAAMvpE,EAAG0iE,EAAMw5B,GAC7Bx5B,GAAwB,iBAATA,IAChBA,EAAO,CAAEy5B,KAAMz5B,IAGnB,IAAIy5B,EAAOz5B,EAAKy5B,KACZC,EAAM15B,EAAKp5D,IAAMA,QAER8L,IAAT+mF,IACAA,EAAOH,IAAUz7F,QAAQ87F,SAExBH,IAAMA,EAAO,MAElBl8F,EAAIvB,GAAKuK,QAAQhJ,GAEjB,IACIo8F,EAAIO,UAAU38F,EAAGm8F,GACjBD,EAAOA,GAAQl8F,EAEnB,MAAO48F,GACH,OAAQA,EAAKvxC,MACT,IAAK,SACD6wC,EAAO3yB,EAAK9qE,GAAK+rD,QAAQxqD,GAAI0iE,EAAMw5B,GACnC3yB,EAAKvpE,EAAG0iE,EAAMw5B,GACd,MAKJ,QACI,IAAI93B,EACJ,IACIA,EAAOg4B,EAAIx0B,SAAS5nE,GAExB,MAAO68F,GACH,MAAMD,EAEV,IAAKx4B,EAAKI,cAAe,MAAMo4B,GAK3C,OAAOV,cC3EPY,GACA57B,GACA53D,GAIAyzF,GAgDEC,GAOAC,eAlBN,SAASC,GAAc/4B,GACrB,MAAqB,mBAAPA,EAAoBA,EApCpC,WAGE,IAAIp3B,EACJ,GAAIgwD,GAAO,CACT,IAAII,EAAY,IAAIv+F,MACpBmuC,EAMF,SAAuBx0B,GACjBA,IACF4kF,EAAUzkF,QAAUH,EAAIG,QAExB0kF,EADA7kF,EAAM4kF,UAPRpwD,EAAWqwD,EAEb,OAAOrwD,EAUP,SAASqwD,EAAgB7kF,GACvB,GAAIA,EAAK,CACP,GAAIhY,QAAQ88F,iBACV,MAAM9kF,EACH,IAAKhY,QAAQ+8F,cAAe,CAC/B,IAAIC,EAAM,yBAA2BhlF,EAAIK,OAASL,EAAIG,SAClDnY,QAAQi9F,iBACVnrC,QAAQorC,MAAMF,GAEdlrC,QAAQC,MAAMirC,MAOiBG,yCA5CrCZ,KACA57B,GAAiC,UAArB3gE,QAAQihE,SACpBl4D,KAIAyzF,GAAQx8F,QAAQC,IAAIC,YAAc,KAAKC,KAAKH,QAAQC,IAAIC,YAyC5Cq8F,GAAWa,UAKrBX,GADF97B,GACe,sBAEA,oBAKb+7B,GADF/7B,GACgB,yDAEA,YAGG,SAAsBlhE,EAAGwlB,GAI9C,GAFAxlB,EAAI88F,GAAW9zF,QAAQhJ,GAEnBwlB,GAAS3oB,OAAOgD,UAAUC,eAAeC,KAAKylB,EAAOxlB,GACvD,OAAOwlB,EAAMxlB,GAGf,IAKI8sD,EAEA3nC,EAEA28C,EAEAx6B,EAXAmnD,EAAWzuF,EACX49F,EAAY,GACZC,EAAY,GAahB,SAASn2D,IAEP,IAAI3kC,EAAIk6F,GAAYjzF,KAAKhK,GACzB8sD,EAAM/pD,EAAE,GAAGlE,OACXsmB,EAAUpiB,EAAE,GACZ++D,EAAO/+D,EAAE,GACTukC,EAAW,GAGP45B,KAAc28B,EAAU/7B,KAC1Bx4D,GAAGw0F,UAAUh8B,GACb+7B,EAAU/7B,IAAQ,GAOtB,IApBAp6B,IAoBOolB,EAAM9sD,EAAEnB,QAAQ,CAErBm+F,GAAWhqE,UAAY85B,EACvB,IAAIxpC,EAAS05E,GAAWhzF,KAAKhK,GAO7B,GANAsnC,EAAWniB,EACXA,GAAW7B,EAAO,GAClBw+C,EAAOx6B,EAAWhkB,EAAO,GACzBwpC,EAAMkwC,GAAWhqE,YAGb6qE,EAAU/7B,IAAUt8C,GAASA,EAAMs8C,KAAUA,GAAjD,CAIA,IAAIi8B,EACJ,GAAIv4E,GAAS3oB,OAAOgD,UAAUC,eAAeC,KAAKylB,EAAOs8C,GAEvDi8B,EAAev4E,EAAMs8C,OAChB,CACL,IAAIsC,EAAO96D,GAAGw0F,UAAUh8B,GACxB,IAAKsC,EAAK45B,iBAAkB,CAC1BH,EAAU/7B,IAAQ,EACdt8C,IAAOA,EAAMs8C,GAAQA,GACzB,SAKF,IAAIm8B,EAAa,KACjB,IAAK/8B,GAAW,CACd,IAAIt2B,EAAKw5B,EAAK85B,IAAIt+F,SAAS,IAAM,IAAMwkE,EAAK+5B,IAAIv+F,SAAS,IACrDg+F,EAAU99F,eAAe8qC,KAC3BqzD,EAAaL,EAAUhzD,IAGR,OAAfqzD,IACF30F,GAAGs+D,SAAS9F,GACZm8B,EAAa30F,GAAG80F,aAAat8B,IAE/Bi8B,EAAejB,GAAW9zF,QAAQs+B,EAAU22D,GAExCz4E,IAAOA,EAAMs8C,GAAQi8B,GACpB78B,KAAW08B,EAAUhzD,GAAMqzD,GAIlCj+F,EAAI88F,GAAW9zF,QAAQ+0F,EAAc/9F,EAAEd,MAAM4tD,IAC7CplB,KAKF,OAFIliB,IAAOA,EAAMipE,GAAYzuF,GAEtBA,GA7FTq+F,GAAQ12B,aAAR22B,MAiGmB,SAAkBt+F,EAAGwlB,EAAO2+C,GAS7C,GARkB,mBAAPA,IACTA,EAAK+4B,GAAc13E,GACnBA,EAAQ,MAIVxlB,EAAI88F,GAAW9zF,QAAQhJ,GAEnBwlB,GAAS3oB,OAAOgD,UAAUC,eAAeC,KAAKylB,EAAOxlB,GACvD,OAAOO,QAAQwkE,SAASZ,EAAG7wD,KAAK,KAAM,KAAMkS,EAAMxlB,KAGpD,IAKI8sD,EAEA3nC,EAEA28C,EAEAx6B,EAXAmnD,EAAWzuF,EACX49F,EAAY,GACZC,EAAY,GAahB,SAASn2D,IAEP,IAAI3kC,EAAIk6F,GAAYjzF,KAAKhK,GACzB8sD,EAAM/pD,EAAE,GAAGlE,OACXsmB,EAAUpiB,EAAE,GACZ++D,EAAO/+D,EAAE,GACTukC,EAAW,GAGP45B,KAAc28B,EAAU/7B,GAC1Bx4D,GAAGi1F,MAAMz8B,GAAM,SAASvpD,GACtB,GAAIA,EAAK,OAAO4rD,EAAG5rD,GACnBslF,EAAU/7B,IAAQ,EAClB08B,OAGFj+F,QAAQwkE,SAASy5B,GAMrB,SAASA,IAEP,GAAI1xC,GAAO9sD,EAAEnB,OAEX,OADI2mB,IAAOA,EAAMipE,GAAYzuF,GACtBmkE,EAAG,KAAMnkE,GAIlBg9F,GAAWhqE,UAAY85B,EACvB,IAAIxpC,EAAS05E,GAAWhzF,KAAKhK,GAO7B,OANAsnC,EAAWniB,EACXA,GAAW7B,EAAO,GAClBw+C,EAAOx6B,EAAWhkB,EAAO,GACzBwpC,EAAMkwC,GAAWhqE,UAGb6qE,EAAU/7B,IAAUt8C,GAASA,EAAMs8C,KAAUA,EACxCvhE,QAAQwkE,SAASy5B,GAGtBh5E,GAAS3oB,OAAOgD,UAAUC,eAAeC,KAAKylB,EAAOs8C,GAEhD28B,EAAgBj5E,EAAMs8C,IAGxBx4D,GAAGi1F,MAAMz8B,EAAM48B,GAGxB,SAASA,EAAQnmF,EAAK6rD,GACpB,GAAI7rD,EAAK,OAAO4rD,EAAG5rD,GAGnB,IAAK6rD,EAAK45B,iBAGR,OAFAH,EAAU/7B,IAAQ,EACdt8C,IAAOA,EAAMs8C,GAAQA,GAClBvhE,QAAQwkE,SAASy5B,GAM1B,IAAKt9B,GAAW,CACd,IAAIt2B,EAAKw5B,EAAK85B,IAAIt+F,SAAS,IAAM,IAAMwkE,EAAK+5B,IAAIv+F,SAAS,IACzD,GAAIg+F,EAAU99F,eAAe8qC,GAC3B,OAAO+zD,EAAU,KAAMf,EAAUhzD,GAAKk3B,GAG1Cx4D,GAAG86D,KAAKtC,GAAM,SAASvpD,GACrB,GAAIA,EAAK,OAAO4rD,EAAG5rD,GAEnBjP,GAAGs1F,SAAS98B,GAAM,SAASvpD,EAAKopC,GACzBuf,KAAW08B,EAAUhzD,GAAM+W,GAChCg9C,EAAUpmF,EAAKopC,SAKrB,SAASg9C,EAAUpmF,EAAKopC,EAAQmgB,GAC9B,GAAIvpD,EAAK,OAAO4rD,EAAG5rD,GAEnB,IAAIwlF,EAAejB,GAAW9zF,QAAQs+B,EAAUqa,GAC5Cn8B,IAAOA,EAAMs8C,GAAQi8B,GACzBU,EAAgBV,GAGlB,SAASU,EAAgBV,GAEvB/9F,EAAI88F,GAAW9zF,QAAQ+0F,EAAc/9F,EAAEd,MAAM4tD,IAC7CplB,IA5FFA,KA1BF22D,GAAQr6B,SAAR66B,cC/KIv1F,GACAw1F,GACAC,GAEA17F,GACA27F,GACAC,SAEJ,SAASC,GAAU3C,GACjB,OAAOA,GAAqB,aAAfA,EAAG4C,UACF,UAAZ5C,EAAGlxC,MACS,WAAZkxC,EAAGlxC,MACS,iBAAZkxC,EAAGlxC,MAIP,SAAS2Y,GAAUhkE,EAAGwlB,EAAO2+C,GAC3B,GAAI66B,GACF,OAAOF,GAAa9+F,EAAGwlB,EAAO2+C,GAGX,mBAAV3+C,IACT2+C,EAAK3+C,EACLA,EAAQ,MAEVs5E,GAAa9+F,EAAGwlB,GAAO,SAAU+2E,EAAIj5E,GAC/B47E,GAAS3C,GACX0C,GAAIj7B,SAAShkE,EAAGwlB,EAAO2+C,GAEvBA,EAAGo4B,EAAIj5E,MAKb,SAASqkD,GAAc3nE,EAAGwlB,GACxB,GAAIw5E,GACF,OAAOD,GAAiB/+F,EAAGwlB,GAG7B,IACE,OAAOu5E,GAAiB/+F,EAAGwlB,GAC3B,MAAO+2E,GACP,GAAI2C,GAAS3C,GACX,OAAO0C,GAAIt3B,aAAa3nE,EAAGwlB,GAE3B,MAAM+2E,GAKZ,SAAS6C,KACP91F,GAAG06D,SAAWA,GACd16D,GAAGq+D,aAAeA,GAGpB,SAAS03B,KACP/1F,GAAG06D,SAAW86B,GACdx1F,GAAGq+D,aAAeo3B,yCAhEpBO,GAAiBt7B,GACjBA,GAASA,SAAWA,GACpBA,GAASuF,KAAO5B,GAChB3D,GAAS2D,aAAeA,GACxB3D,GAASo7B,YAAcA,GACvBp7B,GAASq7B,cAAgBA,GAGrBP,IADAx1F,MACkB06D,SAClB+6B,GAAmBz1F,GAAGq+D,aAEtBtkE,GAAU9C,QAAQ8C,QAClB27F,GAAK,YAAYt+F,KAAK2C,IACtB47F,mBCHAn1F,+CAVJy1F,GAAiB,SAAUC,EAAIjpF,GAE3B,IADA,IAAIqhD,EAAM,GACDt5D,EAAI,EAAGA,EAAIkhG,EAAG3gG,OAAQP,IAAK,CAChC,IAAI8I,EAAImP,EAAGipF,EAAGlhG,GAAIA,GACdwL,GAAQ1C,GAAIwwD,EAAIjzD,KAAK2d,MAAMs1C,EAAKxwD,GAC/BwwD,EAAIjzD,KAAKyC,GAElB,OAAOwwD,GAGP9tD,GAAUD,MAAMC,SAAW,SAAU01F,GACrC,MAA8C,mBAAvC3iG,OAAOgD,UAAUD,SAASG,KAAKy/F,qBCT1C,SAASC,GAASpiG,EAAGqJ,EAAGg5F,GAClBriG,aAAayD,SAAQzD,EAAIsiG,GAAWtiG,EAAGqiG,IACvCh5F,aAAa5F,SAAQ4F,EAAIi5F,GAAWj5F,EAAGg5F,IAE3C,IAAI1hG,EAAIwI,GAAMnJ,EAAGqJ,EAAGg5F,GAEpB,OAAO1hG,GAAK,CACV0pC,MAAO1pC,EAAE,GACTqqC,IAAKrqC,EAAE,GACP4hG,IAAKF,EAAIxgG,MAAM,EAAGlB,EAAE,IACpBm0D,KAAMutC,EAAIxgG,MAAMlB,EAAE,GAAKX,EAAEwB,OAAQb,EAAE,IACnC6hG,KAAMH,EAAIxgG,MAAMlB,EAAE,GAAK0I,EAAE7H,SAI7B,SAAS8gG,GAAWG,EAAKJ,GACvB,IAAI38F,EAAI28F,EAAIj8F,MAAMq8F,GAClB,OAAO/8F,EAAIA,EAAE,GAAK,KAIpB,SAASyD,GAAMnJ,EAAGqJ,EAAGg5F,GACnB,IAAIK,EAAM/E,EAAKhS,EAAMC,EAAO3lE,EACxB08E,EAAKN,EAAIv4D,QAAQ9pC,GACjB4iG,EAAKP,EAAIv4D,QAAQzgC,EAAGs5F,EAAK,GACzB1hG,EAAI0hG,EAER,GAAIA,GAAM,GAAKC,EAAK,EAAG,CAIrB,IAHAF,EAAO,GACP/W,EAAO0W,EAAI7gG,OAEJP,GAAK,IAAMglB,GACZhlB,GAAK0hG,GACPD,EAAKp7F,KAAKrG,GACV0hG,EAAKN,EAAIv4D,QAAQ9pC,EAAGiB,EAAI,IACA,GAAfyhG,EAAKlhG,OACdykB,EAAS,CAAEy8E,EAAKr4F,MAAOu4F,KAEvBjF,EAAM+E,EAAKr4F,OACDshF,IACRA,EAAOgS,EACP/R,EAAQgX,GAGVA,EAAKP,EAAIv4D,QAAQzgC,EAAGpI,EAAI,IAG1BA,EAAI0hG,EAAKC,GAAMD,GAAM,EAAIA,EAAKC,EAG5BF,EAAKlhG,SACPykB,EAAS,CAAE0lE,EAAMC,IAIrB,OAAO3lE,wCAxDT48E,GAAiBT,GAqBjBA,GAASj5F,MAAQA,cCtBb25F,GACAV,GAIAW,GACAC,GACAC,GACAC,GACAC,SAEJ,SAASC,GAAQf,GACf,OAAO9+E,SAAS8+E,EAAK,KAAOA,EACxB9+E,SAAS8+E,EAAK,IACdA,EAAIpsD,WAAW,GAWrB,SAASotD,GAAehB,GACtB,OAAOA,EAAIz7F,MAAMm8F,IAAU/7F,KAAK,MACrBJ,MAAMo8F,IAASh8F,KAAK,KACpBJ,MAAMq8F,IAAUj8F,KAAK,KACrBJ,MAAMs8F,IAAUl8F,KAAK,KACrBJ,MAAMu8F,IAAWn8F,KAAK,KAOnC,SAASs8F,GAAgBjB,GACvB,IAAKA,EACH,MAAO,CAAC,IAEV,IAAIz8B,EAAQ,GACRlgE,EAAI08F,GAAS,IAAK,IAAKC,GAE3B,IAAK38F,EACH,OAAO28F,EAAIz7F,MAAM,KAEnB,IAAI27F,EAAM78F,EAAE68F,IACRztC,EAAOpvD,EAAEovD,KACT0tC,EAAO98F,EAAE88F,KACT7/F,EAAI4/F,EAAI37F,MAAM,KAElBjE,EAAEA,EAAEnB,OAAO,IAAM,IAAMszD,EAAO,IAC9B,IAAIyuC,EAAYD,GAAgBd,GAQhC,OAPIA,EAAKhhG,SACPmB,EAAEA,EAAEnB,OAAO,IAAM+hG,EAAU/pF,QAC3B7W,EAAE2E,KAAK2d,MAAMtiB,EAAG4gG,IAGlB39B,EAAMt+D,KAAK2d,MAAM2gD,EAAOjjE,GAEjBijE,EAGT,SAAS49B,GAAUnB,GACjB,OAAKA,GASoB,OAArBA,EAAIpR,OAAO,EAAG,KAChBoR,EAAM,SAAWA,EAAIpR,OAAO,IAGvBwS,GA7DT,SAAsBpB,GACpB,OAAOA,EAAIz7F,MAAM,QAAQI,KAAK+7F,IACnBn8F,MAAM,OAAOI,KAAKg8F,IAClBp8F,MAAM,OAAOI,KAAKi8F,IAClBr8F,MAAM,OAAOI,KAAKk8F,IAClBt8F,MAAM,OAAOI,KAAKm8F,IAwDfO,CAAarB,IAAM,GAAMx7F,IAAIw8F,KAZlC,GAmBX,SAASM,GAAQtB,GACf,MAAO,IAAMA,EAAM,IAErB,SAASuB,GAASzzC,GAChB,MAAO,SAAS9sD,KAAK8sD,GAGvB,SAAS7U,GAAIr6C,EAAGgH,GACd,OAAOhH,GAAKgH,EAEd,SAAS+yC,GAAI/5C,EAAGgH,GACd,OAAOhH,GAAKgH,EAGd,SAASw7F,GAAOpB,EAAKwB,GACnB,IAAIC,EAAa,GAEbp+F,EAAI08F,GAAS,IAAK,IAAKC,GAC3B,IAAK38F,GAAK,MAAMrC,KAAKqC,EAAE68F,KAAM,MAAO,CAACF,GAErC,IAaIlhG,EAbA4iG,EAAoB,iCAAiC1gG,KAAKqC,EAAEovD,MAC5DkvC,EAAkB,uCAAuC3gG,KAAKqC,EAAEovD,MAChEmvC,EAAaF,GAAqBC,EAClCE,EAAYx+F,EAAEovD,KAAKhrB,QAAQ,MAAQ,EACvC,IAAKm6D,IAAeC,EAElB,OAAIx+F,EAAE88F,KAAKp8F,MAAM,SAERq9F,GADPpB,EAAM38F,EAAE68F,IAAM,IAAM78F,EAAEovD,KAAOmuC,GAAWv9F,EAAE88F,MAGrC,CAACH,GAIV,GAAI4B,EACF9iG,EAAIuE,EAAEovD,KAAKluD,MAAM,aAGjB,GAAiB,KADjBzF,EAAImiG,GAAgB59F,EAAEovD,OAChBtzD,QAGa,KADjBL,EAAIsiG,GAAOtiG,EAAE,IAAI,GAAO0F,IAAI88F,KACtBniG,OAIJ,OAHIghG,EAAO98F,EAAE88F,KAAKhhG,OACdiiG,GAAO/9F,EAAE88F,MAAM,GACf,CAAC,KACO37F,KAAI,SAASlE,GACvB,OAAO+C,EAAE68F,IAAMphG,EAAE,GAAKwB,KAU9B,IAKI8C,EALA88F,EAAM78F,EAAE68F,IACRC,EAAO98F,EAAE88F,KAAKhhG,OACdiiG,GAAO/9F,EAAE88F,MAAM,GACf,CAAC,IAIL,GAAIyB,EAAY,CACd,IAAIl6F,EAAIq5F,GAAQjiG,EAAE,IACd8G,EAAIm7F,GAAQjiG,EAAE,IACdqvD,EAAQ75B,KAAK8C,IAAIt4B,EAAE,GAAGK,OAAQL,EAAE,GAAGK,QACnC2iG,EAAmB,GAAZhjG,EAAEK,OACTm1B,KAAKytE,IAAIhB,GAAQjiG,EAAE,KACnB,EACAkC,EAAOi4C,GACGrzC,EAAI8B,IAEhBo6F,IAAS,EACT9gG,EAAO23C,IAET,IAAI0L,EAAMvlD,EAAE+I,KAAK05F,IAEjBn+F,EAAI,GAEJ,IAAK,IAAIxE,EAAI8I,EAAG1G,EAAKpC,EAAGgH,GAAIhH,GAAKkjG,EAAM,CACrC,IAAIlhG,EACJ,GAAI+gG,EAEQ,QADV/gG,EAAI2zB,OAAOqpC,aAAah/D,MAEtBgC,EAAI,SAGN,GADAA,EAAI2zB,OAAO31B,GACPylD,EAAK,CACP,IAAI29C,EAAO7zC,EAAQvtD,EAAEzB,OACrB,GAAI6iG,EAAO,EAAG,CACZ,IAAI/5F,EAAI,IAAIkC,MAAM63F,EAAO,GAAGr9F,KAAK,KAE/B/D,EADEhC,EAAI,EACF,IAAMqJ,EAAIrH,EAAEpB,MAAM,GAElByI,EAAIrH,GAIhBwC,EAAE6B,KAAKrE,SAGTwC,EAAIq9F,GAAU3hG,GAAG,SAASgvD,GAAM,OAAOszC,GAAOtzC,GAAI,MAGpD,IAAK,IAAItnD,EAAI,EAAGA,EAAIpD,EAAEjE,OAAQqH,IAC5B,IAAK,IAAIgB,EAAI,EAAGA,EAAI24F,EAAKhhG,OAAQqI,IAAK,CACpC,IAAIy6F,EAAY/B,EAAM98F,EAAEoD,GAAK25F,EAAK34F,KAC7Bg6F,GAASI,GAAcK,IAC1BR,EAAWx8F,KAAKg9F,GAItB,OAAOR,wCAtMLhB,QACAV,QAEJmC,GAAiBf,GAEbT,GAAW,UAAUpsE,KAAKoD,SAAS,KACnCipE,GAAU,SAASrsE,KAAKoD,SAAS,KACjCkpE,GAAW,UAAUtsE,KAAKoD,SAAS,KACnCmpE,GAAW,UAAUvsE,KAAKoD,SAAS,KACnCopE,GAAY,WAAWxsE,KAAKoD,SAAS,gBCNrC34B,GAKAojG,GACAf,GAEAgB,GAUAC,GAGAC,GAKAC,GAIAC,GAGAC,GAWAC,GA8NAC,SA3NJ,SAAS97F,GAAQ20C,EAAS33C,GAExB,OADAA,EAAUA,GAAW,GACd,SAAUvD,EAAG1B,EAAGiqF,GACrB,OAAO+Z,GAAUtiG,EAAGk7C,EAAS33C,IAIjC,SAASooD,GAAKtuD,EAAGqJ,GACfrJ,EAAIA,GAAK,GACTqJ,EAAIA,GAAK,GACT,IAAIxI,EAAI,GAOR,OANArB,OAAOC,KAAK4J,GAAG3J,SAAQ,SAAUmK,GAC/BhJ,EAAEgJ,GAAKR,EAAEQ,MAEXrK,OAAOC,KAAKO,GAAGN,SAAQ,SAAUmK,GAC/BhJ,EAAEgJ,GAAK7J,EAAE6J,MAEJhJ,EAwBT,SAASokG,GAAWtiG,EAAGk7C,EAAS33C,GAC9B,GAAuB,iBAAZ23C,EACT,MAAM,IAAIj8C,UAAU,gCAMtB,OAHKsE,IAASA,EAAU,OAGnBA,EAAQg/F,WAAmC,MAAtBrnD,EAAQtO,OAAO,MAKlB,KAAnBsO,EAAQ13C,OAA4B,KAANxD,EAE3B,IAAIwiG,GAAUtnD,EAAS33C,GAASE,MAAMzD,IAG/C,SAASwiG,GAAWtnD,EAAS33C,GAC3B,KAAMD,gBAAgBk/F,IACpB,OAAO,IAAIA,GAAUtnD,EAAS33C,GAGhC,GAAuB,iBAAZ23C,EACT,MAAM,IAAIj8C,UAAU,gCAGjBsE,IAASA,EAAU,IACxB23C,EAAUA,EAAQ13C,OAGD,MAAb/E,GAAK4vE,MACPnzB,EAAUA,EAAQj3C,MAAMxF,GAAK4vE,KAAKhqE,KAAK,MAGzCf,KAAKC,QAAUA,EACfD,KAAK+C,IAAM,GACX/C,KAAK43C,QAAUA,EACf53C,KAAKy6B,OAAS,KACdz6B,KAAKu0C,QAAS,EACdv0C,KAAKm/F,SAAU,EACfn/F,KAAKoyF,OAAQ,EAGbpyF,KAAKo/F,OAMP,SAASA,KAEP,IAAIp/F,KAAKq/F,MAAT,CAEA,IAAIznD,EAAU53C,KAAK43C,QACf33C,EAAUD,KAAKC,QAGnB,GAAKA,EAAQg/F,WAAmC,MAAtBrnD,EAAQtO,OAAO,GAIzC,GAAKsO,EAAL,CAMA53C,KAAKs/F,cAGL,IAAIv8F,EAAM/C,KAAKu/F,QAAUv/F,KAAKw/F,cAE1Bv/F,EAAQw/F,QAAOz/F,KAAKy/F,MAAQ1wC,QAAQC,OAExChvD,KAAKy/F,MAAMz/F,KAAK43C,QAAS70C,GAOzBA,EAAM/C,KAAK0/F,UAAY38F,EAAInC,KAAI,SAAU9F,GACvC,OAAOA,EAAE6F,MAAMm+F,OAGjB9+F,KAAKy/F,MAAMz/F,KAAK43C,QAAS70C,GAGzBA,EAAMA,EAAInC,KAAI,SAAU9F,EAAG6kG,EAAI58F,GAC7B,OAAOjI,EAAE8F,IAAIZ,KAAKoC,MAAOpC,QACxBA,MAEHA,KAAKy/F,MAAMz/F,KAAK43C,QAAS70C,GAGzBA,EAAMA,EAAIE,QAAO,SAAUnI,GACzB,OAA6B,IAAtBA,EAAE+oC,SAAQ,MAGnB7jC,KAAKy/F,MAAMz/F,KAAK43C,QAAS70C,GAEzB/C,KAAK+C,IAAMA,OAvCT/C,KAAKoyF,OAAQ,OAJbpyF,KAAKm/F,SAAU,GA+CnB,SAASG,KACP,IAAI1nD,EAAU53C,KAAK43C,QACfrD,GAAS,EAETqrD,EAAe,EAEnB,IAHc5/F,KAAKC,QAGP4/F,SAAZ,CAEA,IAAK,IAAI7kG,EAAI,EAAGa,EAAI+7C,EAAQr8C,OACxBP,EAAIa,GAA2B,MAAtB+7C,EAAQtO,OAAOtuC,GACxBA,IACFu5C,GAAUA,EACVqrD,IAGEA,IAAc5/F,KAAK43C,QAAUA,EAAQozC,OAAO4U,IAChD5/F,KAAKu0C,OAASA,GAmBhB,SAASirD,GAAa5nD,EAAS33C,GAY7B,GAXKA,IAEDA,EADED,gBAAgBk/F,GACRl/F,KAAKC,QAEL,SAOS,KAHvB23C,OAA6B,IAAZA,EACb53C,KAAK43C,QAAUA,GAGjB,MAAM,IAAIj8C,UAAU,qBAGtB,OAAIsE,EAAQ6/F,UACTloD,EAAQz3C,MAAM,UAER,CAACy3C,GAGH4lD,GAAO5lD,GAgBhB,SAASx1C,GAAOw1C,EAASmoD,GACvB,GAAInoD,EAAQr8C,OAAS,MACnB,MAAM,IAAII,UAAU,uBAGtB,IAAIsE,EAAUD,KAAKC,QAGnB,IAAKA,EAAQ+/F,YAA0B,OAAZpoD,EAAkB,OAAO2mD,GACpD,GAAgB,KAAZ3mD,EAAgB,MAAO,GAE3B,IAMIqoD,EANA3iG,EAAK,GACL4iG,IAAajgG,EAAQkgG,OACrBC,GAAW,EAEXC,EAAmB,GACnBC,EAAgB,GAEhBC,GAAU,EACVC,GAAgB,EAChBC,GAAc,EAGdC,EAAqC,MAAtB9oD,EAAQtO,OAAO,GAAa,GAE7CrpC,EAAQ0gG,IAAM,iCACd,UACEvmG,EAAO4F,KAEX,SAAS4gG,IACP,GAAIX,EAAW,CAGb,OAAQA,GACN,IAAK,IACH3iG,GAAMohG,GACNwB,GAAW,EACb,MACA,IAAK,IACH5iG,GAAMmhG,GACNyB,GAAW,EACb,MACA,QACE5iG,GAAM,KAAO2iG,EAGjB7lG,EAAKqlG,MAAM,uBAAwBQ,EAAW3iG,GAC9C2iG,GAAY,GAIhB,IAAK,IAAiCjjG,EAA7BhC,EAAI,EAAGk+D,EAAMthB,EAAQr8C,OACzBP,EAAIk+D,IAASl8D,EAAI46C,EAAQtO,OAAOtuC,IACjCA,IAIF,GAHAgF,KAAKy/F,MAAM,eAAgB7nD,EAAS58C,EAAGsC,EAAIN,GAGvCojG,GAAYvB,GAAW7hG,GACzBM,GAAM,KAAON,EACbojG,GAAW,OAIb,OAAQpjG,GACN,IAAK,IAGH,OAAO,EAET,IAAK,KACH4jG,IACAR,GAAW,EACb,SAIA,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IAKH,GAJApgG,KAAKy/F,MAAM,6BAA8B7nD,EAAS58C,EAAGsC,EAAIN,GAIrDujG,EAAS,CACXvgG,KAAKy/F,MAAM,cACD,MAANziG,GAAahC,IAAMylG,EAAa,IAAGzjG,EAAI,KAC3CM,GAAMN,EACN,SAMF5C,EAAKqlG,MAAM,yBAA0BQ,GACrCW,IACAX,EAAYjjG,EAIRiD,EAAQ4gG,OAAOD,IACrB,SAEA,IAAK,IACH,GAAIL,EAAS,CACXjjG,GAAM,IACN,SAGF,IAAK2iG,EAAW,CACd3iG,GAAM,MACN,SAGF+iG,EAAiBh/F,KAAK,CACpBktC,KAAM0xD,EACN77D,MAAOppC,EAAI,EACX8lG,QAASxjG,EAAG/B,OACZikF,KAAMgf,GAAQyB,GAAWzgB,KACzBuhB,MAAOvC,GAAQyB,GAAWc,QAG5BzjG,GAAoB,MAAd2iG,EAAoB,YAAc,MACxCjgG,KAAKy/F,MAAM,eAAgBQ,EAAW3iG,GACtC2iG,GAAY,EACd,SAEA,IAAK,IACH,GAAIM,IAAYF,EAAiB9kG,OAAQ,CACvC+B,GAAM,MACN,SAGFsjG,IACAV,GAAW,EACX,IAAIc,EAAKX,EAAiBj8F,MAG1B9G,GAAM0jG,EAAGD,MACO,MAAZC,EAAGzyD,MACL+xD,EAAcj/F,KAAK2/F,GAErBA,EAAGC,MAAQ3jG,EAAG/B,OAChB,SAEA,IAAK,IACH,GAAIglG,IAAYF,EAAiB9kG,QAAU6kG,EAAU,CACnD9iG,GAAM,MACN8iG,GAAW,EACX,SAGFQ,IACAtjG,GAAM,IACR,SAGA,IAAK,IAIH,GAFAsjG,IAEIL,EAAS,CACXjjG,GAAM,KAAON,EACb,SAGFujG,GAAU,EACVE,EAAazlG,EACbwlG,EAAeljG,EAAG/B,OAClB+B,GAAMN,EACR,SAEA,IAAK,IAKH,GAAIhC,IAAMylG,EAAa,IAAMF,EAAS,CACpCjjG,GAAM,KAAON,EACbojG,GAAW,EACX,SAKF,GAAIG,EAAS,CAQX,IAAIW,EAAKtpD,EAAQsL,UAAUu9C,EAAa,EAAGzlG,GAC3C,IACEwC,OAAO,IAAM0jG,EAAK,KAClB,MAAOjI,GAEP,IAAIkI,EAAKnhG,KAAKoC,MAAM8+F,EAAInC,IACxBzhG,EAAKA,EAAG0tF,OAAO,EAAGwV,GAAgB,MAAQW,EAAG,GAAK,MAClDjB,EAAWA,GAAYiB,EAAG,GAC1BZ,GAAU,EACV,UAKJL,GAAW,EACXK,GAAU,EACVjjG,GAAMN,EACR,SAEA,QAEE4jG,IAEIR,EAEFA,GAAW,GACFvB,GAAW7hG,IACT,MAANA,GAAaujG,IAClBjjG,GAAM,MAGRA,GAAMN,EAwBZ,IAjBIujG,IAKFW,EAAKtpD,EAAQozC,OAAOyV,EAAa,GACjCU,EAAKnhG,KAAKoC,MAAM8+F,EAAInC,IACpBzhG,EAAKA,EAAG0tF,OAAO,EAAGwV,GAAgB,MAAQW,EAAG,GAC7CjB,EAAWA,GAAYiB,EAAG,IASvBH,EAAKX,EAAiBj8F,MAAO48F,EAAIA,EAAKX,EAAiBj8F,MAAO,CACjE,IAAIo4C,EAAOl/C,EAAG1B,MAAMolG,EAAGF,QAAUE,EAAGxhB,KAAKjkF,QACzCyE,KAAKy/F,MAAM,eAAgBniG,EAAI0jG,GAE/BxkD,EAAOA,EAAKj5C,QAAQ,6BAA6B,SAAUT,EAAGs+F,EAAIC,GAYhE,OAXKA,IAEHA,EAAK,MASAD,EAAKA,EAAKC,EAAK,OAGxBrhG,KAAKy/F,MAAM,iBAAkBjjD,EAAMA,EAAMwkD,EAAI1jG,GAC7C,IAAI1C,EAAgB,MAAZomG,EAAGzyD,KAAemwD,GACV,MAAZsC,EAAGzyD,KAAekwD,GAClB,KAAOuC,EAAGzyD,KAEd2xD,GAAW,EACX5iG,EAAKA,EAAG1B,MAAM,EAAGolG,EAAGF,SAAWlmG,EAAI,MAAQ4hD,EAI7CokD,IACIR,IAEF9iG,GAAM,QAKR,IAAIgkG,GAAkB,EACtB,OAAQhkG,EAAGgsC,OAAO,IAChB,IAAK,IACL,IAAK,IACL,IAAK,IAAKg4D,GAAkB,EAQ9B,IAAK,IAAIpmG,EAAIolG,EAAc/kG,OAAS,EAAGL,GAAK,EAAGA,IAAK,CAClD,IAAIqmG,EAAKjB,EAAcplG,GAEnBsmG,EAAWlkG,EAAG1B,MAAM,EAAG2lG,EAAGT,SAC1BW,EAAUnkG,EAAG1B,MAAM2lG,EAAGT,QAASS,EAAGN,MAAQ,GAC1CS,EAASpkG,EAAG1B,MAAM2lG,EAAGN,MAAQ,EAAGM,EAAGN,OACnCU,EAAUrkG,EAAG1B,MAAM2lG,EAAGN,OAE1BS,GAAUC,EAKV,IAAIC,EAAmBJ,EAAS7gG,MAAM,KAAKpF,OAAS,EAChDsmG,EAAaF,EACjB,IAAK3mG,EAAI,EAAGA,EAAI4mG,EAAkB5mG,IAChC6mG,EAAaA,EAAWt+F,QAAQ,WAAY,IAI9C,IAAIu+F,EAAS,GACG,MAHhBH,EAAUE,IAGY9B,IAAUhB,KAC9B+C,EAAS,KAGXxkG,EADYkkG,EAAWC,EAAUE,EAAUG,EAASJ,EAgBtD,GATW,KAAPpkG,GAAa4iG,IACf5iG,EAAK,QAAUA,GAGbgkG,IACFhkG,EAAKojG,EAAepjG,GAIlByiG,IAAUhB,GACZ,MAAO,CAACzhG,EAAI4iG,GAMd,IAAKA,EACH,OAAoBtoD,EA6Sbr0C,QAAQ,SAAU,MA1S3B,IAAIw+F,EAAQ9hG,EAAQkgG,OAAS,IAAM,GACnC,IACE,IAAI6B,EAAS,IAAIxkG,OAAO,IAAMF,EAAK,IAAKykG,GACxC,MAAO9I,GAKP,OAAO,IAAIz7F,OAAO,MAMpB,OAHAwkG,EAAOC,MAAQrqD,EACfoqD,EAAOE,KAAO5kG,EAEP0kG,EAQT,SAASG,KACP,GAAIniG,KAAKy6B,SAA0B,IAAhBz6B,KAAKy6B,OAAkB,OAAOz6B,KAAKy6B,OAQtD,IAAI13B,EAAM/C,KAAK+C,IAEf,IAAKA,EAAIxH,OAEP,OADAyE,KAAKy6B,QAAS,EACPz6B,KAAKy6B,OAEd,IAAIx6B,EAAUD,KAAKC,QAEfmiG,EAAUniG,EAAQ+/F,WAAatB,GAC/Bz+F,EAAQ0gG,IAAMhC,GACdC,GACAmD,EAAQ9hG,EAAQkgG,OAAS,IAAM,GAE/B7iG,EAAKyF,EAAInC,KAAI,SAAUg3C,GACzB,OAAOA,EAAQh3C,KAAI,SAAUlE,GAC3B,OAAQA,IAAM6hG,GAAY6D,EACV,iBAAN1lG,EAA+BA,EA+PpC6G,QAAQ,2BAA4B,QA9PvC7G,EAAEwlG,QACHnhG,KAAK,UACPA,KAAK,KAIRzD,EAAK,OAASA,EAAK,KAGf0C,KAAKu0C,SAAQj3C,EAAK,OAASA,EAAK,QAEpC,IACE0C,KAAKy6B,OAAS,IAAIj9B,OAAOF,EAAIykG,GAC7B,MAAO/+B,GACPhjE,KAAKy6B,QAAS,EAEhB,OAAOz6B,KAAKy6B,OAgBd,SAASt6B,GAAOZ,EAAGo1C,GAIjB,GAHA30C,KAAKy/F,MAAM,QAASlgG,EAAGS,KAAK43C,SAGxB53C,KAAKm/F,QAAS,OAAO,EACzB,GAAIn/F,KAAKoyF,MAAO,MAAa,KAAN7yF,EAEvB,GAAU,MAANA,GAAao1C,EAAS,OAAO,EAEjC,IAAI10C,EAAUD,KAAKC,QAGF,MAAb9E,GAAK4vE,MACPxrE,EAAIA,EAAEoB,MAAMxF,GAAK4vE,KAAKhqE,KAAK,MAI7BxB,EAAIA,EAAEoB,MAAMm+F,IACZ9+F,KAAKy/F,MAAMz/F,KAAK43C,QAAS,QAASr4C,GAOlC,IAII6+D,EACApjE,EALA+H,EAAM/C,KAAK+C,IAMf,IALA/C,KAAKy/F,MAAMz/F,KAAK43C,QAAS,MAAO70C,GAK3B/H,EAAIuE,EAAEhE,OAAS,EAAGP,GAAK,KAC1BojE,EAAW7+D,EAAEvE,IADgBA,KAK/B,IAAKA,EAAI,EAAGA,EAAI+H,EAAIxH,OAAQP,IAAK,CAC/B,IAAI48C,EAAU70C,EAAI/H,GACd8rD,EAAOvnD,EAKX,GAJIU,EAAQoiG,WAAgC,IAAnBzqD,EAAQr8C,SAC/BurD,EAAO,CAACsX,IAEAp+D,KAAKsiG,SAASx7C,EAAMlP,EAASjD,GAErC,QAAI10C,EAAQsiG,aACJviG,KAAKu0C,OAMjB,OAAIt0C,EAAQsiG,YACLviG,KAAKu0C,2BA/uBdiuD,GAAiBxD,GACjBA,GAAUE,UAAYA,GAElB/jG,GAAO,CAAE4vE,IAAK,KAClB,IACE5vE,G3FoBF,SAA+B6L,GAC7B,IAAIiO,EAAM,IAAI3Z,MAAM,uBAAyB0L,EAAO,KAEpD,MADAiO,EAAI8yC,KAAO,mBACL9yC,E2FvBFwtF,CAAA,QACJ,MAAOxJ,IAELsF,GAAWS,GAAUT,SAAWW,GAAUX,SAAW,GACrDf,QAEAgB,GAAU,CACZkE,IAAK,CAAEljB,KAAM,YAAauhB,MAAO,aACjClW,IAAK,CAAErL,KAAM,MAAOuhB,MAAO,MAC3BvW,IAAK,CAAEhL,KAAM,MAAOuhB,MAAO,MAC3B4B,IAAK,CAAEnjB,KAAM,MAAOuhB,MAAO,MAC3B3iB,IAAK,CAAEoB,KAAM,MAAOuhB,MAAO,MAQzBrC,IAHAD,GAAQ,QAGO,KAKfE,GAAa,0CAIbC,GAAe,0BAGfC,GAAqB,kBAIdl+F,MAAM,IAAIqgD,QAAO,SAAUj+C,EAAK/F,GAEvC,OADA+F,EAAI/F,IAAK,EACF+F,IACN,IAID+7F,GAAa,MAEjBE,GAAU/7F,OAASA,GAqBnB+7F,GAAUzuE,SAAW,SAAUqyE,GAC7B,IAAKA,IAAQrpG,OAAOC,KAAKopG,GAAKrnG,OAAQ,OAAOyjG,GAE7C,IAAI6D,EAAO7D,GAEPv/F,EAAI,SAAoB/C,EAAGk7C,EAAS33C,GACtC,OAAO4iG,EAAK7D,UAAUtiG,EAAGk7C,EAASyQ,GAAIu6C,EAAK3iG,KAO7C,OAJAR,EAAEy/F,UAAY,SAAoBtnD,EAAS33C,GACzC,OAAO,IAAI4iG,EAAK3D,UAAUtnD,EAASyQ,GAAIu6C,EAAK3iG,KAGvCR,GAGTy/F,GAAU3uE,SAAW,SAAUqyE,GAC7B,OAAKA,GAAQrpG,OAAOC,KAAKopG,GAAKrnG,OACvByjG,GAAUzuE,SAASqyE,GAAK1D,UADcA,IAmD/CA,GAAU3iG,UAAUkjG,MAAQ,aAE5BP,GAAU3iG,UAAU6iG,KAAOA,GAwD3BF,GAAU3iG,UAAU+iG,YAAcA,GA8BlCN,GAAUQ,YAAc,SAAU5nD,EAAS33C,GACzC,OAAOu/F,GAAY5nD,EAAS33C,IAG9Bi/F,GAAU3iG,UAAUijG,YAAcA,GAsClCN,GAAU3iG,UAAU6F,MAAQA,GACxB28F,GAAW,GA+WfC,GAAUmD,OAAS,SAAUvqD,EAAS33C,GACpC,OAAO,IAAIi/F,GAAUtnD,EAAS33C,GAAW,IAAIkiG,UAG/CjD,GAAU3iG,UAAU4lG,OAASA,GA8C7BnD,GAAU7+F,MAAQ,SAAU8kF,EAAMrtC,EAAS33C,GAEzC,IAAI6iG,EAAK,IAAI5D,GAAUtnD,EADvB33C,EAAUA,GAAW,IAQrB,OANAglF,EAAOA,EAAKhiF,QAAO,SAAU1D,GAC3B,OAAOujG,EAAG3iG,MAAMZ,MAEdujG,EAAG7iG,QAAQ8iG,SAAW9d,EAAK1pF,QAC7B0pF,EAAK5jF,KAAKu2C,GAELqtC,GAGTia,GAAU3iG,UAAU4D,MAAQA,GA6D5B++F,GAAU3iG,UAAU+lG,SAAW,SAAUx7C,EAAMlP,EAASjD,GACtD,IAAI10C,EAAUD,KAAKC,QAEnBD,KAAKy/F,MAAM,WACT,CAAEz/F,KAAQA,KAAM8mD,KAAMA,EAAMlP,QAASA,IAEvC53C,KAAKy/F,MAAM,WAAY34C,EAAKvrD,OAAQq8C,EAAQr8C,QAE5C,IAAK,IAAIynG,EAAK,EACVC,EAAK,EACLC,EAAKp8C,EAAKvrD,OACVylG,EAAKppD,EAAQr8C,OACVynG,EAAKE,GAAQD,EAAKjC,EACnBgC,IAAMC,IAAM,CAChBjjG,KAAKy/F,MAAM,iBACX,IA2FI0D,EA3FAzmG,EAAIk7C,EAAQqrD,GACZ1jG,EAAIunD,EAAKk8C,GAMb,GAJAhjG,KAAKy/F,MAAM7nD,EAASl7C,EAAG6C,IAIb,IAAN7C,EAAa,OAAO,EAExB,GAAIA,IAAM6hG,GAAU,CAClBv+F,KAAKy/F,MAAM,WAAY,CAAC7nD,EAASl7C,EAAG6C,IAwBpC,IAAI6jG,EAAKJ,EACLK,EAAKJ,EAAK,EACd,GAAII,IAAOrC,EAAI,CAQb,IAPAhhG,KAAKy/F,MAAM,iBAOJuD,EAAKE,EAAIF,IACd,GAAiB,MAAbl8C,EAAKk8C,IAA4B,OAAbl8C,EAAKk8C,KACzB/iG,EAAQ0gG,KAA8B,MAAvB75C,EAAKk8C,GAAI15D,OAAO,GAAa,OAAO,EAEzD,OAAO,EAIT,KAAO85D,EAAKF,GAAI,CACd,IAAII,EAAYx8C,EAAKs8C,GAKrB,GAHApjG,KAAKy/F,MAAM,mBAAoB34C,EAAMs8C,EAAIxrD,EAASyrD,EAAIC,GAGlDtjG,KAAKsiG,SAASx7C,EAAKlrD,MAAMwnG,GAAKxrD,EAAQh8C,MAAMynG,GAAK1uD,GAGnD,OAFA30C,KAAKy/F,MAAM,wBAAyB2D,EAAIF,EAAII,IAErC,EAIP,GAAkB,MAAdA,GAAmC,OAAdA,IACrBrjG,EAAQ0gG,KAA+B,MAAxB2C,EAAUh6D,OAAO,GAAa,CAC/CtpC,KAAKy/F,MAAM,gBAAiB34C,EAAMs8C,EAAIxrD,EAASyrD,GAC/C,MAIFrjG,KAAKy/F,MAAM,4CACX2D,IAOJ,SAAIzuD,IAEF30C,KAAKy/F,MAAM,2BAA4B34C,EAAMs8C,EAAIxrD,EAASyrD,GACtDD,IAAOF,IAqBf,GAZiB,iBAANxmG,GAEPymG,EADEljG,EAAQkgG,OACJ5gG,EAAEmF,gBAAkBhI,EAAEgI,cAEtBnF,IAAM7C,EAEdsD,KAAKy/F,MAAM,eAAgB/iG,EAAG6C,EAAG4jG,KAEjCA,EAAM5jG,EAAEY,MAAMzD,GACdsD,KAAKy/F,MAAM,gBAAiB/iG,EAAG6C,EAAG4jG,KAG/BA,EAAK,OAAO,EAenB,GAAIH,IAAOE,GAAMD,IAAOjC,EAGtB,OAAO,EACF,GAAIgC,IAAOE,EAIhB,OAAOvuD,EACF,GAAIsuD,IAAOjC,EAMhB,OADoBgC,IAAOE,EAAK,GAAoB,KAAbp8C,EAAKk8C,GAK9C,MAAM,IAAI1nG,MAAM,qGC94BhBioG,GAF2B,mBAAlBhqG,OAAOs4B,OAEC,SAAkB2xE,EAAMC,GACvCD,EAAKE,OAASD,EACdD,EAAKjnG,UAAYhD,OAAOs4B,OAAO4xE,EAAUlnG,UAAW,CAClDqD,YAAa,CACXpF,MAAOgpG,EACP5pG,YAAY,EACZ4+B,UAAU,EACVD,cAAc,MAMH,SAAkBirE,EAAMC,GACvCD,EAAKE,OAASD,EACd,IAAIE,EAAW,aACfA,EAASpnG,UAAYknG,EAAUlnG,UAC/BinG,EAAKjnG,UAAY,IAAIonG,EACrBH,EAAKjnG,UAAUqD,YAAc4jG,0BClBjC,SAASvlC,GAAM9iE,GACd,MAA0B,MAAnBA,EAAKmuC,OAAO,GAGpB,SAASy0B,GAAM5iE,GAEd,IACI6kB,EADgB,qEACOtZ,KAAKvL,GAC5BkjE,EAASr+C,EAAO,IAAM,GACtB4jF,EAAQ18F,QAAQm3D,GAA+B,MAArBA,EAAO/0B,OAAO,IAG5C,OAAOpiC,QAAQ8Y,EAAO,IAAM4jF,yCAG7BC,GAAsC,UAArB5mG,QAAQihE,SAAuBH,GAAQE,MACjCA,GAAvB4lC,GAAe5lC,MAAf6lC,MACuB/lC,GAAvB8lC,GAAe9lC,MAAfgmC,sCCLI5oG,GACA6jG,GACAr5B,GACAu5B,SAPJ,SAAS8E,GAASpgB,EAAKqgB,GACrB,OAAO1qG,OAAOgD,UAAUC,eAAeC,KAAKmnF,EAAKqgB,GAQnD,SAASC,GAAYnqG,EAAGqJ,GACtB,OAAOrJ,EAAE2K,cAAcy/F,cAAc/gG,EAAEsB,eAGzC,SAAS0/F,GAAWrqG,EAAGqJ,GACrB,OAAOrJ,EAAEoqG,cAAc/gG,GAezB,SAASihG,GAAWzsD,GAClB,IAAI0sD,EAAW,KACf,GAA0B,QAAtB1sD,EAAQh8C,OAAO,GAAc,CAC/B,IAAI2oG,EAAW3sD,EAAQr0C,QAAQ,aAAc,IAC7C+gG,EAAW,IAAIpF,GAAUqF,EAAU,CAAE5D,KAAK,IAG5C,MAAO,CACLlzB,QAAS,IAAIyxB,GAAUtnD,EAAS,CAAE+oD,KAAK,IACvC2D,SAAUA,GAId,SAASE,GAASpqG,EAAMw9C,EAAS33C,GAK/B,GAJKA,IACHA,EAAU,IAGRA,EAAQoiG,YAAc,IAAMzqD,EAAQ/T,QAAQ,KAAM,CACpD,GAAI5jC,EAAQ+/F,WACV,MAAM,IAAI1kG,MAAM,mCAElBs8C,EAAU,MAAQA,EAGpBx9C,EAAKqqG,SAAWxkG,EAAQwkG,OACxBrqG,EAAKw9C,QAAUA,EACfx9C,EAAK6rF,QAA4B,IAAnBhmF,EAAQgmF,OACtB7rF,EAAKsmE,WAAazgE,EAAQygE,SAC1BtmE,EAAKsqG,cAAgBzkG,EAAQykG,eAAiBnrG,OAAOs4B,OAAO,MAC5Dz3B,EAAKuqG,SAAW1kG,EAAQ0kG,OACxBvqG,EAAKumG,MAAQ1gG,EAAQ0gG,IACrBvmG,EAAKwqG,OAAS3kG,EAAQ2kG,KACtBxqG,EAAKyqG,QAAU5kG,EAAQ4kG,MACnBzqG,EAAKyqG,QACPzqG,EAAKwqG,MAAO,GACdxqG,EAAK6rE,OAAShmE,EAAQgmE,KACtB7rE,EAAK0qG,WAAa7kG,EAAQ6kG,SAC1B1qG,EAAK2oG,SAAW9iG,EAAQ8iG,OACxB3oG,EAAK2qG,SAAW9kG,EAAQ8kG,OACxB3qG,EAAK+lG,SAAWlgG,EAAQkgG,OACxB/lG,EAAK0mE,OAAS7gE,EAAQ6gE,KACtB1mE,EAAK4qG,YAAc/kG,EAAQ+kG,UAC3B5qG,EAAK6qG,WAAahlG,EAAQglG,SAE1B7qG,EAAKqkC,UAAYx+B,EAAQw+B,WAAaC,EAAAA,EACtCtkC,EAAK8nB,MAAQjiB,EAAQiiB,OAAS3oB,OAAOs4B,OAAO,MAC5Cz3B,EAAK8qG,UAAYjlG,EAAQilG,WAAa3rG,OAAOs4B,OAAO,MACpDz3B,EAAK+qG,SAAWllG,EAAQklG,UAAY5rG,OAAOs4B,OAAO,MA5DpD,SAAuBz3B,EAAM6F,GAC3B7F,EAAKgrG,OAASnlG,EAAQmlG,QAAU,GAE3B7+F,MAAMC,QAAQpM,EAAKgrG,UACtBhrG,EAAKgrG,OAAS,CAAChrG,EAAKgrG,SAElBhrG,EAAKgrG,OAAO7pG,SACdnB,EAAKgrG,OAAShrG,EAAKgrG,OAAOxkG,IAAIyjG,KAuDhCgB,CAAajrG,EAAM6F,GAEnB7F,EAAKkrG,YAAa,EAClB,IAAI7jB,EAAMxkF,QAAQwkF,MACbuiB,GAAQ/jG,EAAS,QAGpB7F,EAAKqnF,IAAMtmF,GAAKuK,QAAQzF,EAAQwhF,KAChCrnF,EAAKkrG,WAAalrG,EAAKqnF,MAAQA,GAH/BrnF,EAAKqnF,IAAMA,EAMbrnF,EAAKqjB,KAAOxd,EAAQwd,MAAQtiB,GAAKuK,QAAQtL,EAAKqnF,IAAK,KACnDrnF,EAAKqjB,KAAOtiB,GAAKuK,QAAQtL,EAAKqjB,MACL,UAArBxgB,QAAQihE,WACV9jE,EAAKqjB,KAAOrjB,EAAKqjB,KAAKla,QAAQ,MAAO,MAIvCnJ,EAAKmrG,OAAS5/B,GAAWvrE,EAAKqnF,KAAOrnF,EAAKqnF,IAAM+jB,GAAQprG,EAAMA,EAAKqnF,KAC1C,UAArBxkF,QAAQihE,WACV9jE,EAAKmrG,OAASnrG,EAAKmrG,OAAOhiG,QAAQ,MAAO,MAC3CnJ,EAAKqrG,UAAYxlG,EAAQwlG,QAIzBxlG,EAAQ4/F,UAAW,EACnB5/F,EAAQg/F,WAAY,EAEpB7kG,EAAK4kG,UAAY,IAAIE,GAAUtnD,EAAS33C,GACxC7F,EAAK6F,QAAU7F,EAAK4kG,UAAU/+F,QAGhC,SAASylG,GAAQtrG,GAIf,IAHA,IAAIurG,EAAMvrG,EAAK0qG,SACXr+F,EAAMk/F,EAAM,GAAKpsG,OAAOs4B,OAAO,MAE1B72B,EAAI,EAAGa,EAAIzB,EAAKihD,QAAQ9/C,OAAQP,EAAIa,EAAGb,IAAM,CACpD,IAAIqgD,EAAUjhD,EAAKihD,QAAQrgD,GAC3B,GAAKqgD,GAA2C,IAAhC9hD,OAAOC,KAAK6hD,GAAS9/C,OAS9B,CAEL,IAAIkE,EAAIlG,OAAOC,KAAK6hD,GAChBsqD,EACFl/F,EAAIpF,KAAK2d,MAAMvY,EAAKhH,GAEpBA,EAAEhG,SAAQ,SAAUgG,GAClBgH,EAAIhH,IAAK,UAfb,GAAIrF,EAAK2oG,OAAQ,CAEf,IAAI6C,EAAUxrG,EAAK4kG,UAAUO,QAAQvkG,GACjC2qG,EACFl/F,EAAIpF,KAAKukG,GAETn/F,EAAIm/F,IAAW,GAqBvB,GAPKD,IACHl/F,EAAMlN,OAAOC,KAAKiN,IAEfrM,EAAK2qG,SACRt+F,EAAMA,EAAIy8B,KAAK9oC,EAAK+lG,OAAS+D,GAAaE,KAGxChqG,EAAKwqG,KAAM,CACb,IAAS5pG,EAAI,EAAGA,EAAIyL,EAAIlL,OAAQP,IAC9ByL,EAAIzL,GAAKZ,EAAKyrG,MAAMp/F,EAAIzL,IAEtBZ,EAAKyqG,QACPp+F,EAAMA,EAAIxD,QAAO,SAAUxI,GACzB,IAAIqrG,GAAW,MAAM1oG,KAAK3C,GACtBuC,EAAI5C,EAAK8nB,MAAMznB,IAAML,EAAK8nB,MAAMsjF,GAAQprG,EAAMK,IAGlD,OAFIqrG,GAAU9oG,IACZ8oG,EAAe,QAAN9oG,IAAgBuJ,MAAMC,QAAQxJ,IAClC8oG,MAKT1rG,EAAKgrG,OAAO7pG,SACdkL,EAAMA,EAAIxD,QAAO,SAASxD,GACxB,OAAQsmG,GAAU3rG,EAAMqF,OAG5BrF,EAAK4rG,MAAQv/F,EAGf,SAASm+F,GAAMxqG,EAAMsC,GACnB,IAAIyhG,EAAMqH,GAAQprG,EAAMsC,GACpBM,EAAI5C,EAAK8nB,MAAMi8E,GACf1+F,EAAI/C,EACR,GAAIM,EAAG,CACL,IAAIipG,EAAc,QAANjpG,GAAeuJ,MAAMC,QAAQxJ,GACrCkpG,EAAwB,MAAhBxpG,EAAEd,OAAO,GAOrB,GALIqqG,IAAUC,EACZzmG,GAAK,KACGwmG,GAASC,IACjBzmG,EAAIA,EAAE7D,MAAM,GAAI,IAEd6D,IAAM/C,EAAG,CACX,IAAIypG,EAAOX,GAAQprG,EAAMqF,GACzBrF,EAAK8qG,UAAUiB,GAAQ/rG,EAAK8qG,UAAU/G,GACtC/jG,EAAK8nB,MAAMikF,GAAQ/rG,EAAK8nB,MAAMi8E,IAIlC,OAAO1+F,EAIT,SAAS+lG,GAASprG,EAAMmF,GACtB,IAAI4+F,EAAM5+F,EAcV,OAZE4+F,EADkB,MAAhB5+F,EAAE+pC,OAAO,GACLnuC,GAAK4F,KAAK3G,EAAKqjB,KAAMle,GAClBomE,GAAWpmE,IAAY,KAANA,EACpBA,EACGnF,EAAKkrG,WACRnqG,GAAKuK,QAAQtL,EAAKqnF,IAAKliF,GAEvBpE,GAAKuK,QAAQnG,GAGI,UAArBtC,QAAQihE,WACVigC,EAAMA,EAAI56F,QAAQ,MAAO,MAEpB46F,EAMT,SAAS4H,GAAW3rG,EAAMe,GACxB,QAAKf,EAAKgrG,OAAO7pG,QAGVnB,EAAKgrG,OAAOnhG,MAAK,SAAS8uE,GAC/B,OAAOA,EAAKtF,QAAQttE,MAAMhF,OAAY43E,EAAKuxB,WAAYvxB,EAAKuxB,SAASnkG,MAAMhF,OAI/E,SAASirG,GAAiBhsG,EAAMe,GAC9B,QAAKf,EAAKgrG,OAAO7pG,QAGVnB,EAAKgrG,OAAOnhG,MAAK,SAAS8uE,GAC/B,SAAUA,EAAKuxB,WAAYvxB,EAAKuxB,SAASnkG,MAAMhF,+CA7O3CipG,UAAYA,MACCF,GAArBmC,GAAQnC,WAARoC,MACkB9B,GAAlB6B,GAAQ7B,QAAR+B,MACkBvC,GAAlBqC,GAAQrC,QAARwC,MACkBhB,GAAlBa,GAAQb,QAARiB,MACiBf,GAAjBW,GAAQX,OAARgB,MACe9B,GAAfyB,GAAQzB,KAAR+B,MACoBZ,GAApBM,GAAQN,UAARa,MAC0BR,GAA1BC,GAAQD,gBAARS,GAMI1rG,KACA6jG,QACAr5B,QACAu5B,GAAYF,GAAUE,qBCdtBl5F,GACA8gG,GACA9H,GAIA7jG,GACA4rG,GACAphC,GACAqhC,GAGAxC,GACAR,GACAoC,GACAL,SAEJ,SAASkB,GAAUrvD,EAAS33C,GAC1B,GAAuB,mBAAZA,GAA+C,IAArB4pC,UAAUtuC,OAC7C,MAAM,IAAII,UAAU,uFAGtB,OAAO,IAAIurG,GAAStvD,EAAS33C,GAAS+lG,MAGxC,SAASkB,GAAUtvD,EAAS33C,GAC1B,IAAK23C,EACH,MAAM,IAAIt8C,MAAM,wBAElB,GAAuB,mBAAZ2E,GAA+C,IAArB4pC,UAAUtuC,OAC7C,MAAM,IAAII,UAAU,uFAGtB,KAAMqE,gBAAgBknG,IACpB,OAAO,IAAIA,GAAStvD,EAAS33C,GAI/B,GAFAukG,GAAQxkG,KAAM43C,EAAS33C,GAEnBD,KAAKglG,UACP,OAAOhlG,KAET,IAAI9E,EAAI8E,KAAKg/F,UAAUj8F,IAAIxH,OAC3ByE,KAAKq7C,QAAU,IAAI90C,MAAMrL,GACzB,IAAK,IAAIF,EAAI,EAAGA,EAAIE,EAAGF,IACrBgF,KAAKmnG,SAASnnG,KAAKg/F,UAAUj8F,IAAI/H,GAAIA,GAAG,GAE1CgF,KAAKonG,gDAjDPC,GAAiBJ,GACjBA,GAASC,SAAWA,GAEhBlhG,KACA8gG,QACA9H,QACYA,GAAUE,UACfoI,KAAqBC,OAE5BpsG,KACA4rG,KACAphC,QACAqhC,QACYA,GAAO5C,UACN4C,GAAO9C,WACpBM,GAAUwC,GAAOxC,QACjBR,GAAUgD,GAAOhD,QACjBoC,GAAkBY,GAAOZ,gBACzBL,GAAYiB,GAAOjB,UAkCvBmB,GAAS3qG,UAAU6qG,QAAU,WAE3B,GADAL,GAAO/mG,gBAAgBknG,IACnBlnG,KAAK0gE,SAAU,CACjB,IAAItmE,EAAO4F,KACXA,KAAKq7C,QAAQ5hD,SAAQ,SAAU+tG,EAAU/nF,GACvC,IAAI1c,EAAM3I,EAAKihD,QAAQ57B,GAASlmB,OAAOs4B,OAAO,MAC9C,IAAK,IAAIn1B,KAAK8qG,EACZ,IACE9qG,EAAItC,EAAKqtG,SAAS/qG,GAElBqG,EADW+jG,GAAGziC,aAAa3nE,EAAGtC,EAAKsqG,iBACvB,EACZ,MAAOzL,GACP,GAAmB,SAAfA,EAAG4C,QAGL,MAAM5C,EAFNl2F,EAAI3I,EAAKqtG,SAAS/qG,KAAM,MAOlCsqG,GAAOtB,OAAO1lG,OAIhBknG,GAAS3qG,UAAU4qG,SAAW,SAAUvvD,EAASn4B,EAAOioF,GACtDX,GAAO/mG,gBAAgBknG,IAIvB,IADA,IAOI5jD,EAPApoD,EAAI,EACqB,iBAAf08C,EAAQ18C,IACpBA,IAMF,OAAQA,GAEN,KAAK08C,EAAQr8C,OAEX,YADAyE,KAAK2nG,eAAe/vD,EAAQ72C,KAAK,KAAM0e,GAGzC,KAAK,EAGH6jC,EAAS,KACT,MAEF,QAIEA,EAAS1L,EAAQh8C,MAAM,EAAGV,GAAG6F,KAAK,KAItC,IAGI6mG,EAHAC,EAASjwD,EAAQh8C,MAAMV,GAIZ,OAAXooD,EACFskD,EAAO,IACAjiC,GAAWriB,IAAWqiB,GAAW/tB,EAAQ72C,KAAK,OAChDuiD,GAAWqiB,GAAWriB,KACzBA,EAAS,IAAMA,GACjBskD,EAAOtkD,GAEPskD,EAAOtkD,EAET,IAAI66C,EAAMn+F,KAAKynG,SAASG,GAGpBxB,GAAgBpmG,KAAM4nG,KAGTC,EAAO,KAAO7I,GAAUT,SAEvCv+F,KAAK8nG,iBAAiBxkD,EAAQskD,EAAMzJ,EAAK0J,EAAQpoF,EAAOioF,GAExD1nG,KAAK+nG,gBAAgBzkD,EAAQskD,EAAMzJ,EAAK0J,EAAQpoF,EAAOioF,KAI3DR,GAAS3qG,UAAUwrG,gBAAkB,SAAUzkD,EAAQskD,EAAMzJ,EAAK0J,EAAQpoF,EAAOioF,GAC/E,IAAIrxE,EAAUr2B,KAAKgoG,SAAS7J,EAAKuJ,GAGjC,GAAKrxE,EAAL,CAWA,IANA,IAAI4xE,EAAKJ,EAAO,GACZtzD,IAAWv0C,KAAKg/F,UAAUzqD,OAC1B2zD,EAAUD,EAAGhG,MACbkG,EAAQnoG,KAAK2gG,KAA6B,MAAtBuH,EAAQ5+D,OAAO,GAEnC8+D,EAAiB,GACZptG,EAAI,EAAGA,EAAIq7B,EAAQ96B,OAAQP,KAEd,OADhBP,EAAI47B,EAAQr7B,IACVsuC,OAAO,IAAc6+D,KAErB5zD,IAAW+O,GACR7oD,EAAE0F,MAAM8nG,GAETxtG,EAAE0F,MAAM8nG,KAGZG,EAAe/mG,KAAK5G,GAI1B,IAAIy+D,EAAMkvC,EAAe7sG,OAEzB,GAAY,IAAR29D,EAQJ,GAAsB,IAAlB2uC,EAAOtsG,QAAiByE,KAAK4kG,MAAS5kG,KAAK8gE,KAyB/C,IADA+mC,EAAOt0F,QACEvY,EAAI,EAAGA,EAAIk+D,EAAKl+D,IAAM,CAC7B,IACIqtG,EADA5tG,EAAI2tG,EAAeptG,GAGrBqtG,EADE/kD,EACW,CAACA,EAAQ7oD,GAET,CAACA,GAChBuF,KAAKmnG,SAASkB,EAAW77F,OAAOq7F,GAASpoF,EAAOioF,QA5BhD,IAHK1nG,KAAKq7C,QAAQ57B,KAChBzf,KAAKq7C,QAAQ57B,GAASlmB,OAAOs4B,OAAO,OAE7B72B,EAAI,EAAGA,EAAIk+D,EAAKl+D,IAAM,CAC7B,IAAIP,EAAI2tG,EAAeptG,GACnBsoD,IAEA7oD,EADuB,MAArB6oD,EAAO1nD,OAAO,GACZ0nD,EAAS,IAAM7oD,EAEf6oD,EAAS7oD,GAGG,MAAhBA,EAAE6uC,OAAO,IAAetpC,KAAKylG,UAC/BhrG,EAAIU,GAAK4F,KAAKf,KAAKyd,KAAMhjB,IAE3BuF,KAAKsoG,WAAW7oF,EAAOhlB,MAqB7BysG,GAAS3qG,UAAU+rG,WAAa,SAAU7oF,EAAOhlB,GAC/C,IAAIsrG,GAAU/lG,KAAMvF,GAApB,CAGA,IAAI0jG,EAAMn+F,KAAKynG,SAAShtG,GASxB,GAPIuF,KAAK4kG,OACPnqG,EAAIuF,KAAK6lG,MAAMprG,IAEbuF,KAAKilG,WACPxqG,EAAI0jG,IAGFn+F,KAAKq7C,QAAQ57B,GAAOhlB,GAAxB,CAGA,GAAIuF,KAAK6kG,MAAO,CACd,IAAI7nG,EAAIgD,KAAKkiB,MAAMi8E,GACnB,GAAU,QAANnhG,GAAeuJ,MAAMC,QAAQxJ,GAC/B,OAGJgD,KAAKq7C,QAAQ57B,GAAOhlB,IAAK,EAErBuF,KAAK8gE,MACP9gE,KAAKuoG,MAAM9tG,MAIfysG,GAAS3qG,UAAUisG,mBAAqB,SAAUrK,GAGhD,GAAIn+F,KAAK2kG,OACP,OAAO3kG,KAAKgoG,SAAS7J,GAAK,GAE5B,IAAI9nE,EACA4kE,EAEJ,IACEA,EAAQj1F,GAAGw0F,UAAU2D,GACrB,MAAOlF,GACP,GAAgB,WAAZA,EAAGlxC,KAEL,OAAO,KAIX,IAAI0gD,EAAQxN,GAASA,EAAMP,iBAU3B,OATA16F,KAAKmlG,SAAShH,GAAOsK,EAIhBA,IAASxN,GAAUA,EAAM/5B,cAG5B7qC,EAAUr2B,KAAKgoG,SAAS7J,GAAK,GAF7Bn+F,KAAKkiB,MAAMi8E,GAAO,OAIb9nE,GAGT6wE,GAAS3qG,UAAUyrG,SAAW,SAAU7J,EAAKuJ,GAG3C,GAAIA,IAAe1D,GAAQhkG,KAAKmlG,SAAUhH,GACxC,OAAOn+F,KAAKwoG,mBAAmBrK,GAEjC,GAAI6F,GAAQhkG,KAAKkiB,MAAOi8E,GAAM,CAC5B,IAAInhG,EAAIgD,KAAKkiB,MAAMi8E,GACnB,IAAKnhG,GAAW,SAANA,EACR,OAAO,KAET,GAAIuJ,MAAMC,QAAQxJ,GAChB,OAAOA,EAGX,IACE,OAAOgD,KAAK0oG,gBAAgBvK,EAAKn4F,GAAG2iG,YAAYxK,IAChD,MAAOlF,GAEP,OADAj5F,KAAK4oG,cAAczK,EAAKlF,GACjB,OAIXiO,GAAS3qG,UAAUmsG,gBAAkB,SAAUvK,EAAK9nE,GAIlD,IAAKr2B,KAAK4kG,OAAS5kG,KAAK8gE,KACtB,IAAK,IAAI9lE,EAAI,EAAGA,EAAIq7B,EAAQ96B,OAAQP,IAAM,CACxC,IAAIP,EAAI47B,EAAQr7B,GAEdP,EADU,MAAR0jG,EACEA,EAAM1jG,EAEN0jG,EAAM,IAAM1jG,EAClBuF,KAAKkiB,MAAMznB,IAAK,EAOpB,OAHAuF,KAAKkiB,MAAMi8E,GAAO9nE,EAGXA,GAGT6wE,GAAS3qG,UAAUqsG,cAAgB,SAAUrpG,EAAG05F,GAE9C,OAAQA,EAAGlxC,MACT,IAAK,UACL,IAAK,UACH,IAAIo2C,EAAMn+F,KAAKynG,SAASloG,GAExB,GADAS,KAAKkiB,MAAMi8E,GAAO,OACdA,IAAQn+F,KAAKulG,OAAQ,CACvB,IAAIv2C,EAAQ,IAAI1zD,MAAM29F,EAAGlxC,KAAO,gBAAkB/nD,KAAKyhF,KAGvD,MAFAzyB,EAAM7zD,KAAO6E,KAAKyhF,IAClBzyB,EAAMjH,KAAOkxC,EAAGlxC,KACViH,EAER,MAEF,IAAK,SACL,IAAK,QACL,IAAK,eACL,IAAK,UACHhvD,KAAKkiB,MAAMliB,KAAKynG,SAASloG,KAAM,EAC/B,MAEF,QAEE,GADAS,KAAKkiB,MAAMliB,KAAKynG,SAASloG,KAAM,EAC3BS,KAAKimF,OACP,MAAMgT,EACHj5F,KAAKykG,QACR11C,QAAQC,MAAM,aAAciqC,KAKpCiO,GAAS3qG,UAAUurG,iBAAmB,SAAUxkD,EAAQskD,EAAMzJ,EAAK0J,EAAQpoF,EAAOioF,GAEhF,IAAIrxE,EAAUr2B,KAAKgoG,SAAS7J,EAAKuJ,GAIjC,GAAKrxE,EAAL,CAKA,IAAIwyE,EAAwBhB,EAAOjsG,MAAM,GACrCktG,EAASxlD,EAAS,CAAEA,GAAW,GAC/BylD,EAAaD,EAAOt8F,OAAOq8F,GAG/B7oG,KAAKmnG,SAAS4B,EAAYtpF,GAAO,GAEjC,IAAIy5C,EAAM7iC,EAAQ96B,OAIlB,IAHYyE,KAAKmlG,SAAShH,KAGbuJ,EAGb,IAAK,IAAI1sG,EAAI,EAAGA,EAAIk+D,EAAKl+D,IAEvB,GAAoB,MADZq7B,EAAQr7B,GACVsuC,OAAO,IAAetpC,KAAK2gG,IAAjC,CAIA,IAAIqI,EAAUF,EAAOt8F,OAAO6pB,EAAQr7B,GAAI6tG,GACxC7oG,KAAKmnG,SAAS6B,EAASvpF,GAAO,GAE9B,IAAIwpF,EAAQH,EAAOt8F,OAAO6pB,EAAQr7B,GAAI6sG,GACtC7nG,KAAKmnG,SAAS8B,EAAOxpF,GAAO,MAIhCynF,GAAS3qG,UAAUorG,eAAiB,SAAUrkD,EAAQ7jC,GAGpD,IAAIxjB,EAAS+D,KAAKuoG,MAAMjlD,GAMxB,GAJKtjD,KAAKq7C,QAAQ57B,KAChBzf,KAAKq7C,QAAQ57B,GAASlmB,OAAOs4B,OAAO,OAGjC51B,EAAL,CAGA,GAAIqnD,GAAUqiB,GAAWriB,KAAYtjD,KAAKylG,QAAS,CACjD,IAAIyD,EAAQ,UAAU9rG,KAAKkmD,GACF,MAArBA,EAAOha,OAAO,GAChBga,EAASnoD,GAAK4F,KAAKf,KAAKyd,KAAM6lC,IAE9BA,EAASnoD,GAAKuK,QAAQ1F,KAAKyd,KAAM6lC,GAC7B4lD,IACF5lD,GAAU,MAIS,UAArBrmD,QAAQihE,WACV5a,EAASA,EAAO//C,QAAQ,MAAO,MAGjCvD,KAAKsoG,WAAW7oF,EAAO6jC,KAIzB4jD,GAAS3qG,UAAUgsG,MAAQ,SAAUhpG,GACnC,IAAI4+F,EAAMn+F,KAAKynG,SAASloG,GACpB4pG,EAA0B,MAAhB5pG,EAAE3D,OAAO,GAEvB,GAAI2D,EAAEhE,OAASyE,KAAKy+B,UAClB,OAAO,EAET,IAAKz+B,KAAK8gE,MAAQkjC,GAAQhkG,KAAKkiB,MAAOi8E,GAAM,CAC1C,IAAInhG,EAAIgD,KAAKkiB,MAAMi8E,GAMnB,GAJI53F,MAAMC,QAAQxJ,KAChBA,EAAI,QAGDmsG,GAAiB,QAANnsG,EACd,OAAOA,EAET,GAAImsG,GAAiB,SAANnsG,EACb,OAAO,EAOX,IAAI8jE,EAAO9gE,KAAKklG,UAAU/G,GAC1B,IAAKr9B,EAAM,CACT,IAAIm6B,EACJ,IACEA,EAAQj1F,GAAGw0F,UAAU2D,GACrB,MAAOlF,GACP,GAAIA,IAAmB,WAAZA,EAAGlxC,MAAiC,YAAZkxC,EAAGlxC,MAEpC,OADA/nD,KAAKklG,UAAU/G,IAAO,GACf,EAIX,GAAIlD,GAASA,EAAMP,iBACjB,IACE55B,EAAO96D,GAAGs+D,SAAS65B,GACnB,MAAOlF,GACPn4B,EAAOm6B,OAGTn6B,EAAOm6B,EAYX,OARAj7F,KAAKklG,UAAU/G,GAAOr9B,EAElB9jE,GAAI,EACJ8jE,IACF9jE,EAAI8jE,EAAKI,cAAgB,MAAQ,QAEnClhE,KAAKkiB,MAAMi8E,GAAOn+F,KAAKkiB,MAAMi8E,IAAQnhG,IAEjCmsG,GAAiB,SAANnsG,IAGRA,GAGTkqG,GAAS3qG,UAAUspG,MAAQ,SAAUnpG,GACnC,OAAOsqG,GAAOpC,KAAK5kG,KAAMtD,IAG3BwqG,GAAS3qG,UAAUkrG,SAAW,SAAUloG,GACtC,OAAOynG,GAAOxB,QAAQxlG,KAAMT,qBC9d9B,SAAS6pG,GAAQn2F,EAAI4tD,GACnB,GAAI5tD,GAAM4tD,EAAI,OAAOuoC,GAAOn2F,EAAPm2F,CAAWvoC,GAEhC,GAAkB,mBAAP5tD,EACT,MAAM,IAAItX,UAAU,yBAMtB,OAJApC,OAAOC,KAAKyZ,GAAIxZ,SAAQ,SAAUmK,GAChC0mC,EAAQ1mC,GAAKqP,EAAGrP,MAGX0mC,EAEP,SAASA,IAEP,IADA,IAAInrB,EAAO,IAAI5Y,MAAMsjC,UAAUtuC,QACtBP,EAAI,EAAGA,EAAImkB,EAAK5jB,OAAQP,IAC/BmkB,EAAKnkB,GAAK6uC,UAAU7uC,GAEtB,IAAIquG,EAAMp2F,EAAG+L,MAAMhf,KAAMmf,GACrB0hD,EAAK1hD,EAAKA,EAAK5jB,OAAO,GAM1B,MALmB,mBAAR8tG,GAAsBA,IAAQxoC,GACvCtnE,OAAOC,KAAKqnE,GAAIpnE,SAAQ,SAAUmK,GAChCylG,EAAIzlG,GAAKi9D,EAAGj9D,MAGTylG,yCAzBXC,GAAiBF,cCLbA,YAoBJ,SAAS3tD,GAAMxoC,GACb,IAAI1T,EAAI,WACN,OAAIA,EAAEgqG,OAAehqG,EAAE/E,OACvB+E,EAAEgqG,QAAS,EACJhqG,EAAE/E,MAAQyY,EAAG+L,MAAMhf,KAAM6pC,aAGlC,OADAtqC,EAAEgqG,QAAS,EACJhqG,EAGT,SAASiqG,GAAYv2F,GACnB,IAAI1T,EAAI,WACN,GAAIA,EAAEgqG,OACJ,MAAM,IAAIjuG,MAAMiE,EAAEkqG,WAEpB,OADAlqG,EAAEgqG,QAAS,EACJhqG,EAAE/E,MAAQyY,EAAG+L,MAAMhf,KAAM6pC,YAE9B7iC,EAAOiM,EAAGjM,MAAQ,+BAGtB,OAFAzH,EAAEkqG,UAAYziG,EAAO,sCACrBzH,EAAEgqG,QAAS,EACJhqG,wCAxCL6pG,QACJM,GAAiBN,GAAO3tD,OACA2tD,GAAOI,IAA/BE,GAAezjB,OAAf0jB,GAEAluD,GAAKnmB,MAAQmmB,IAAK,WAChBliD,OAAOI,eAAe+jB,SAASnhB,UAAW,OAAQ,CAChD/B,MAAO,WACL,OAAOihD,GAAKz7C,OAEdu4B,cAAc,IAGhBh/B,OAAOI,eAAe+jB,SAASnhB,UAAW,aAAc,CACtD/B,MAAO,WACL,OAAOgvG,GAAWxpG,OAEpBu4B,cAAc,kBChBd6wE,GACAQ,GACAnuD,SAIJ,SAASouD,GAAUnwG,EAAKmnE,GACtB,OAAI+oC,GAAKlwG,IACPkwG,GAAKlwG,GAAK2H,KAAKw/D,GACR,OAEP+oC,GAAKlwG,GAAO,CAACmnE,GAKjB,SAAkBnnE,GAChB,OAAO+hD,IAAK,SAASquD,IACnB,IAAIC,EAAMH,GAAKlwG,GACXw/D,EAAM6wC,EAAIxuG,OACV4jB,EAAOvjB,GAAMiuC,WAQjB,IACE,IAAK,IAAI7uC,EAAI,EAAGA,EAAIk+D,EAAKl+D,IACvB+uG,EAAI/uG,GAAGgkB,MAAM,KAAMG,GAFvB,QAKM4qF,EAAIxuG,OAAS29D,GAGf6wC,EAAIz9F,OAAO,EAAG4sD,GACdj8D,QAAQwkE,UAAS,WACfqoC,EAAI9qF,MAAM,KAAMG,cAGXyqF,GAAKlwG,OA7BTswG,CAAQtwG,IAmCnB,SAASkC,GAAOujB,GAId,IAHA,IAAI5jB,EAAS4jB,EAAK5jB,OACd8jB,EAAQ,GAEHrkB,EAAI,EAAGA,EAAIO,EAAQP,IAAKqkB,EAAMrkB,GAAKmkB,EAAKnkB,GACjD,OAAOqkB,wCApDL+pF,QACAQ,GAAOrwG,OAAOs4B,OAAO,MACrB4pB,QAEJwuD,GAAiBb,GAAOS,eCsCpB7jG,GACA8gG,GACA9H,GAEA/rC,GACAi3C,GACA/uG,GACA4rG,GACAphC,GACAshC,GACAD,GAGAxC,GACAR,GACA6F,GAEAzD,GACAL,GAEAtqD,GAgBAyrD,SAdJ,SAASiD,GAAMvyD,EAAS33C,EAAS4gE,GAI/B,GAHuB,mBAAZ5gE,IAAwB4gE,EAAK5gE,EAASA,EAAU,IACtDA,IAASA,EAAU,IAEpBA,EAAQgmE,KAAM,CAChB,GAAIpF,EACF,MAAM,IAAIllE,UAAU,kCACtB,OAAOsrG,GAASrvD,EAAS33C,GAG3B,OAAO,IAAIsnG,GAAK3vD,EAAS33C,EAAS4gE,GA6CpC,SAAS0mC,GAAM3vD,EAAS33C,EAAS4gE,GAM/B,GALuB,mBAAZ5gE,IACT4gE,EAAK5gE,EACLA,EAAU,MAGRA,GAAWA,EAAQgmE,KAAM,CAC3B,GAAIpF,EACF,MAAM,IAAIllE,UAAU,kCACtB,OAAO,IAAIurG,GAAStvD,EAAS33C,GAG/B,KAAMD,gBAAgBunG,IACpB,OAAO,IAAIA,GAAK3vD,EAAS33C,EAAS4gE,GAEpC2jC,GAAQxkG,KAAM43C,EAAS33C,GACvBD,KAAKoqG,cAAe,EAGpB,IAAIlvG,EAAI8E,KAAKg/F,UAAUj8F,IAAIxH,OAM3ByE,KAAKq7C,QAAU,IAAI90C,MAAMrL,GAEP,mBAAP2lE,IACTA,EAAKplB,GAAKolB,GACV7gE,KAAK2M,GAAG,QAASk0D,GACjB7gE,KAAK2M,GAAG,OAAO,SAAU0uC,GACvBwlB,EAAG,KAAMxlB,OAIb,IAAIjhD,EAAO4F,KAOX,GANAA,KAAKqqG,YAAc,EAEnBrqG,KAAKsqG,WAAa,GAClBtqG,KAAKuqG,cAAgB,GACrBvqG,KAAKqyF,QAAS,EAEVryF,KAAKglG,UACP,OAAOhlG,KAET,GAAU,IAAN9E,EACF,OAAOs6C,IAGT,IADA,IACSx6C,EAAI,EAAGA,EAAIE,EAAGF,IACrBgF,KAAKmnG,SAASnnG,KAAKg/F,UAAUj8F,IAAI/H,GAAIA,GAAG,EAAOw6C,GAIjD,SAASA,MACLp7C,EAAKiwG,YACHjwG,EAAKiwG,aAAe,GAMpBjwG,EAAKgtG,+BA7IboD,GAAiBL,GAEbnkG,KACA8gG,QACA9H,QACYA,GAAUE,UACtBjsC,QACAi3C,GAAKO,EAAkBC,aACvBvvG,KACA4rG,KACAphC,QACAshC,QACAD,QACYA,GAAO5C,UACN4C,GAAO9C,WACpBM,GAAUwC,GAAOxC,QACjBR,GAAUgD,GAAOhD,QACjB6F,UAEAzD,GAAkBY,GAAOZ,gBACzBL,GAAYiB,GAAOjB,UAEnBtqD,QAeJ0uD,GAAKlkC,KAAOghC,GACRC,GAAWiD,GAAKjD,SAAWD,GAASC,SAGxCiD,GAAKA,KAAOA,GAeZA,GAAKjK,SAAW,SAAUtoD,EAAS+yD,GACjC,IAAI1qG,EAdN,SAAiB2qG,EAAQ7jG,GACvB,GAAY,OAARA,GAA+B,iBAARA,EACzB,OAAO6jG,EAKT,IAFA,IAAIpxG,EAAOD,OAAOC,KAAKuN,GACnB/L,EAAIxB,EAAK+B,OACNP,KACL4vG,EAAOpxG,EAAKwB,IAAM+L,EAAIvN,EAAKwB,IAE7B,OAAO4vG,EAIOhtD,CAAO,GAAI+sD,GACzB1qG,EAAQ+kG,WAAY,EAEpB,IACIjiG,EADI,IAAIwkG,GAAK3vD,EAAS33C,GACd++F,UAAUj8F,IAEtB,IAAK60C,EACH,OAAO,EAET,GAAI70C,EAAIxH,OAAS,EACf,OAAO,EAET,IAAK,IAAIqH,EAAI,EAAGA,EAAIG,EAAI,GAAGxH,OAAQqH,IACjC,GAAyB,iBAAdG,EAAI,GAAGH,GAChB,OAAO,EAGX,OAAO,GAGTunG,GAAK5C,KAAOA,GACZt0C,GAASs0C,GAAM2C,IAqEf3C,GAAKhrG,UAAU6qG,QAAU,WAEvB,GADAL,GAAO/mG,gBAAgBunG,KACnBvnG,KAAK6qG,QAAT,CAGA,GAAI7qG,KAAK0gE,WAAa1gE,KAAK8qG,aACzB,OAAO9qG,KAAK+qG,YAEd/D,GAAOtB,OAAO1lG,MACdA,KAAKq3D,KAAK,MAAOr3D,KAAKgmG,SAGxBuB,GAAKhrG,UAAUwuG,UAAY,WACzB,IAAI/qG,KAAK8qG,aAAT,CAGA9qG,KAAK8qG,cAAe,EAEpB,IAAI5vG,EAAI8E,KAAKq7C,QAAQ9/C,OACrB,GAAU,IAANL,EACF,OAAO8E,KAAKonG,UAGd,IADA,IAAIhtG,EAAO4F,KACFhF,EAAI,EAAGA,EAAIgF,KAAKq7C,QAAQ9/C,OAAQP,IACvCgF,KAAKgrG,aAAahwG,EAAGu6C,GAEvB,SAASA,IACK,KAANr6C,GACJd,EAAKgtG,YAIXG,GAAKhrG,UAAUyuG,aAAe,SAAUvrF,EAAOohD,GAC7C,IAAI2mC,EAAWxnG,KAAKq7C,QAAQ57B,GAC5B,IAAK+nF,EACH,OAAO3mC,IAET,IAAImlC,EAAQzsG,OAAOC,KAAKguG,GACpBptG,EAAO4F,KACP9E,EAAI8qG,EAAMzqG,OAEd,GAAU,IAANL,EACF,OAAO2lE,IAET,IAAI99D,EAAM/C,KAAKq7C,QAAQ57B,GAASlmB,OAAOs4B,OAAO,MAC9Cm0E,EAAMvsG,SAAQ,SAAUiD,EAAG1B,GAIzB0B,EAAItC,EAAKqtG,SAAS/qG,GAClBoqG,GAAGpmC,SAAShkE,EAAGtC,EAAKsqG,eAAe,SAAUzL,EAAIgS,GAC1ChS,EAEmB,SAAfA,EAAG4C,QACV94F,EAAIrG,IAAK,EAETtC,EAAKi9D,KAAK,QAAS4hC,GAJnBl2F,EAAIkoG,IAAQ,EAMF,KAAN/vG,IACJd,EAAKihD,QAAQ57B,GAAS1c,EACtB89D,YAMR0mC,GAAKhrG,UAAUspG,MAAQ,SAAUnpG,GAC/B,OAAOsqG,GAAOpC,KAAK5kG,KAAMtD,IAG3B6qG,GAAKhrG,UAAUkrG,SAAW,SAAUloG,GAClC,OAAOynG,GAAOxB,QAAQxlG,KAAMT,IAG9BgoG,GAAKhrG,UAAUymF,MAAQ,WACrBhjF,KAAK6qG,SAAU,EACf7qG,KAAKq3D,KAAK,UAGZkwC,GAAKhrG,UAAU+1F,MAAQ,WAChBtyF,KAAKqyF,SACRryF,KAAKqyF,QAAS,EACdryF,KAAKq3D,KAAK,WAIdkwC,GAAKhrG,UAAUg2F,OAAS,WACtB,GAAIvyF,KAAKqyF,OAAQ,CAGf,GAFAryF,KAAKq3D,KAAK,UACVr3D,KAAKqyF,QAAS,EACVryF,KAAKsqG,WAAW/uG,OAAQ,CAC1B,IAAIu8B,EAAK93B,KAAKsqG,WAAW1uG,MAAM,GAC/BoE,KAAKsqG,WAAW/uG,OAAS,EACzB,IAAK,IAAIP,EAAI,EAAGA,EAAI88B,EAAGv8B,OAAQP,IAAM,CACnC,IAAIP,EAAIq9B,EAAG98B,GACXgF,KAAKsoG,WAAW7tG,EAAE,GAAIA,EAAE,KAG5B,GAAIuF,KAAKuqG,cAAchvG,OAAQ,CAC7B,IAAI2vG,EAAKlrG,KAAKuqG,cAAc3uG,MAAM,GAClCoE,KAAKuqG,cAAchvG,OAAS,EAC5B,IAASP,EAAI,EAAGA,EAAIkwG,EAAG3vG,OAAQP,IAAM,CACnC,IAAI0B,EAAIwuG,EAAGlwG,GACXgF,KAAKqqG,cACLrqG,KAAKmnG,SAASzqG,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAIA,EAAE,QAM1C6qG,GAAKhrG,UAAU4qG,SAAW,SAAUvvD,EAASn4B,EAAOioF,EAAY7mC,GAI9D,GAHAkmC,GAAO/mG,gBAAgBunG,IACvBR,GAAqB,mBAAPlmC,IAEV7gE,KAAK6qG,QAIT,GADA7qG,KAAKqqG,cACDrqG,KAAKqyF,OACPryF,KAAKuqG,cAAclpG,KAAK,CAACu2C,EAASn4B,EAAOioF,EAAY7mC,QADvD,CASA,IADA,IAOIvd,EAPApoD,EAAI,EACqB,iBAAf08C,EAAQ18C,IACpBA,IAMF,OAAQA,GAEN,KAAK08C,EAAQr8C,OAEX,YADAyE,KAAK2nG,eAAe/vD,EAAQ72C,KAAK,KAAM0e,EAAOohD,GAGhD,KAAK,EAGHvd,EAAS,KACT,MAEF,QAIEA,EAAS1L,EAAQh8C,MAAM,EAAGV,GAAG6F,KAAK,KAItC,IAGI6mG,EAHAC,EAASjwD,EAAQh8C,MAAMV,GAIZ,OAAXooD,EACFskD,EAAO,IACAjiC,GAAWriB,IAAWqiB,GAAW/tB,EAAQ72C,KAAK,OAChDuiD,GAAWqiB,GAAWriB,KACzBA,EAAS,IAAMA,GACjBskD,EAAOtkD,GAEPskD,EAAOtkD,EAET,IAAI66C,EAAMn+F,KAAKynG,SAASG,GAGxB,GAAIxB,GAAgBpmG,KAAM4nG,GACxB,OAAO/mC,IAEQgnC,EAAO,KAAO7I,GAAUT,SAEvCv+F,KAAK8nG,iBAAiBxkD,EAAQskD,EAAMzJ,EAAK0J,EAAQpoF,EAAOioF,EAAY7mC,GAEpE7gE,KAAK+nG,gBAAgBzkD,EAAQskD,EAAMzJ,EAAK0J,EAAQpoF,EAAOioF,EAAY7mC,KAGvE0mC,GAAKhrG,UAAUwrG,gBAAkB,SAAUzkD,EAAQskD,EAAMzJ,EAAK0J,EAAQpoF,EAAOioF,EAAY7mC,GACvF,IAAIzmE,EAAO4F,KACXA,KAAKgoG,SAAS7J,EAAKuJ,GAAY,SAAUzO,EAAI5iE,GAC3C,OAAOj8B,EAAK+wG,iBAAiB7nD,EAAQskD,EAAMzJ,EAAK0J,EAAQpoF,EAAOioF,EAAYrxE,EAASwqC,OAIxF0mC,GAAKhrG,UAAU4uG,iBAAmB,SAAU7nD,EAAQskD,EAAMzJ,EAAK0J,EAAQpoF,EAAOioF,EAAYrxE,EAASwqC,GAGjG,IAAKxqC,EACH,OAAOwqC,IAUT,IANA,IAAIonC,EAAKJ,EAAO,GACZtzD,IAAWv0C,KAAKg/F,UAAUzqD,OAC1B2zD,EAAUD,EAAGhG,MACbkG,EAAQnoG,KAAK2gG,KAA6B,MAAtBuH,EAAQ5+D,OAAO,GAEnC8+D,EAAiB,GACZptG,EAAI,EAAGA,EAAIq7B,EAAQ96B,OAAQP,IAAK,CAEvC,GAAoB,OADhBP,EAAI47B,EAAQr7B,IACVsuC,OAAO,IAAc6+D,GAErB5zD,IAAW+O,GACR7oD,EAAE0F,MAAM8nG,GAETxtG,EAAE0F,MAAM8nG,KAGZG,EAAe/mG,KAAK5G,GAM1B,IAAIy+D,EAAMkvC,EAAe7sG,OAEzB,GAAY,IAAR29D,EACF,OAAO2H,IAOT,GAAsB,IAAlBgnC,EAAOtsG,SAAiByE,KAAK4kG,OAAS5kG,KAAK8gE,KAAM,CAC9C9gE,KAAKq7C,QAAQ57B,KAChBzf,KAAKq7C,QAAQ57B,GAASlmB,OAAOs4B,OAAO,OAEtC,IAAS72B,EAAI,EAAGA,EAAIk+D,EAAKl+D,IAAM,CAC7B,IAAIP,EAAI2tG,EAAeptG,GACnBsoD,IAEA7oD,EADa,MAAX6oD,EACEA,EAAS,IAAM7oD,EAEf6oD,EAAS7oD,GAGG,MAAhBA,EAAE6uC,OAAO,IAAetpC,KAAKylG,UAC/BhrG,EAAIU,GAAK4F,KAAKf,KAAKyd,KAAMhjB,IAE3BuF,KAAKsoG,WAAW7oF,EAAOhlB,GAGzB,OAAOomE,IAKTgnC,EAAOt0F,QACP,IAASvY,EAAI,EAAGA,EAAIk+D,EAAKl+D,IAAM,CACzBP,EAAI2tG,EAAeptG,GAEnBsoD,IAEA7oD,EADa,MAAX6oD,EACEA,EAAS,IAAM7oD,EAEf6oD,EAAS7oD,GAEjBuF,KAAKmnG,SAAS,CAAC1sG,GAAG+R,OAAOq7F,GAASpoF,EAAOioF,EAAY7mC,GAEvDA,KAGF0mC,GAAKhrG,UAAU+rG,WAAa,SAAU7oF,EAAOhlB,GAC3C,IAAIuF,KAAK6qG,UAGL9E,GAAU/lG,KAAMvF,GAGpB,GAAIuF,KAAKqyF,OACPryF,KAAKsqG,WAAWjpG,KAAK,CAACoe,EAAOhlB,QAD/B,CAKA,IAAI0jG,EAAMx4B,GAAWlrE,GAAKA,EAAIuF,KAAKynG,SAAShtG,GAQ5C,GANIuF,KAAK4kG,OACPnqG,EAAIuF,KAAK6lG,MAAMprG,IAEbuF,KAAKilG,WACPxqG,EAAI0jG,IAEFn+F,KAAKq7C,QAAQ57B,GAAOhlB,GAAxB,CAGA,GAAIuF,KAAK6kG,MAAO,CACd,IAAI7nG,EAAIgD,KAAKkiB,MAAMi8E,GACnB,GAAU,QAANnhG,GAAeuJ,MAAMC,QAAQxJ,GAC/B,OAGJgD,KAAKq7C,QAAQ57B,GAAOhlB,IAAK,EAEzB,IAAI2wG,EAAKprG,KAAKklG,UAAU/G,GACpBiN,GACFprG,KAAKq3D,KAAK,OAAQ58D,EAAG2wG,GAEvBprG,KAAKq3D,KAAK,QAAS58D,MAGrB8sG,GAAKhrG,UAAUisG,mBAAqB,SAAUrK,EAAKt9B,GACjD,IAAI7gE,KAAK6qG,QAAT,CAKA,GAAI7qG,KAAK2kG,OACP,OAAO3kG,KAAKgoG,SAAS7J,GAAK,EAAOt9B,GAEnC,IACIzmE,EAAO4F,KACPqrG,EAAUxB,GAFC,UAAY1L,GAO3B,SAAmBlF,EAAIgC,GACrB,GAAIhC,GAAkB,WAAZA,EAAGlxC,KACX,OAAO8Y,IAET,IAAI4nC,EAAQxN,GAASA,EAAMP,iBAC3BtgG,EAAK+qG,SAAShH,GAAOsK,EAIhBA,IAASxN,GAAUA,EAAM/5B,cAI5B9mE,EAAK4tG,SAAS7J,GAAK,EAAOt9B,IAH1BzmE,EAAK8nB,MAAMi8E,GAAO,OAClBt9B,QAdAwqC,GACFrlG,GAAGi1F,MAAMkD,EAAKkN,KAmBlB9D,GAAKhrG,UAAUyrG,SAAW,SAAU7J,EAAKuJ,EAAY7mC,GACnD,IAAI7gE,KAAK6qG,UAGThqC,EAAKgpC,GAAS,YAAY1L,EAAI,KAAKuJ,EAAY7mC,IAC/C,CAIA,GAAI6mC,IAAe1D,GAAQhkG,KAAKmlG,SAAUhH,GACxC,OAAOn+F,KAAKwoG,mBAAmBrK,EAAKt9B,GAEtC,GAAImjC,GAAQhkG,KAAKkiB,MAAOi8E,GAAM,CAC5B,IAAInhG,EAAIgD,KAAKkiB,MAAMi8E,GACnB,IAAKnhG,GAAW,SAANA,EACR,OAAO6jE,IAET,GAAIt6D,MAAMC,QAAQxJ,GAChB,OAAO6jE,EAAG,KAAM7jE,GAIpBgJ,GAAGslG,QAAQnN,EAGb,SAAoB/jG,EAAM+jG,EAAKt9B,GAC7B,OAAO,SAAUo4B,EAAI5iE,GACf4iE,EACF7+F,EAAKwuG,cAAczK,EAAKlF,EAAIp4B,GAE5BzmE,EAAKsuG,gBAAgBvK,EAAK9nE,EAASwqC,IARvB0qC,CAAUvrG,KAAMm+F,EAAKt9B,MAYvC0mC,GAAKhrG,UAAUmsG,gBAAkB,SAAUvK,EAAK9nE,EAASwqC,GACvD,IAAI7gE,KAAK6qG,QAAT,CAMA,IAAK7qG,KAAK4kG,OAAS5kG,KAAK8gE,KACtB,IAAK,IAAI9lE,EAAI,EAAGA,EAAIq7B,EAAQ96B,OAAQP,IAAM,CACxC,IAAIP,EAAI47B,EAAQr7B,GAEdP,EADU,MAAR0jG,EACEA,EAAM1jG,EAEN0jG,EAAM,IAAM1jG,EAClBuF,KAAKkiB,MAAMznB,IAAK,EAKpB,OADAuF,KAAKkiB,MAAMi8E,GAAO9nE,EACXwqC,EAAG,KAAMxqC,KAGlBkxE,GAAKhrG,UAAUqsG,cAAgB,SAAUrpG,EAAG05F,EAAIp4B,GAC9C,IAAI7gE,KAAK6qG,QAAT,CAIA,OAAQ5R,EAAGlxC,MACT,IAAK,UACL,IAAK,UACH,IAAIo2C,EAAMn+F,KAAKynG,SAASloG,GAExB,GADAS,KAAKkiB,MAAMi8E,GAAO,OACdA,IAAQn+F,KAAKulG,OAAQ,CACvB,IAAIv2C,EAAQ,IAAI1zD,MAAM29F,EAAGlxC,KAAO,gBAAkB/nD,KAAKyhF,KACvDzyB,EAAM7zD,KAAO6E,KAAKyhF,IAClBzyB,EAAMjH,KAAOkxC,EAAGlxC,KAChB/nD,KAAKq3D,KAAK,QAASrI,GACnBhvD,KAAKgjF,QAEP,MAEF,IAAK,SACL,IAAK,QACL,IAAK,eACL,IAAK,UACHhjF,KAAKkiB,MAAMliB,KAAKynG,SAASloG,KAAM,EAC/B,MAEF,QACES,KAAKkiB,MAAMliB,KAAKynG,SAASloG,KAAM,EAC3BS,KAAKimF,SACPjmF,KAAKq3D,KAAK,QAAS4hC,GAGnBj5F,KAAKgjF,SAEFhjF,KAAKykG,QACR11C,QAAQC,MAAM,aAAciqC,GAIlC,OAAOp4B,MAGT0mC,GAAKhrG,UAAUurG,iBAAmB,SAAUxkD,EAAQskD,EAAMzJ,EAAK0J,EAAQpoF,EAAOioF,EAAY7mC,GACxF,IAAIzmE,EAAO4F,KACXA,KAAKgoG,SAAS7J,EAAKuJ,GAAY,SAAUzO,EAAI5iE,GAC3Cj8B,EAAKoxG,kBAAkBloD,EAAQskD,EAAMzJ,EAAK0J,EAAQpoF,EAAOioF,EAAYrxE,EAASwqC,OAKlF0mC,GAAKhrG,UAAUivG,kBAAoB,SAAUloD,EAAQskD,EAAMzJ,EAAK0J,EAAQpoF,EAAOioF,EAAYrxE,EAASwqC,GAKlG,IAAKxqC,EACH,OAAOwqC,IAIT,IAAIgoC,EAAwBhB,EAAOjsG,MAAM,GACrCktG,EAASxlD,EAAS,CAAEA,GAAW,GAC/BylD,EAAaD,EAAOt8F,OAAOq8F,GAG/B7oG,KAAKmnG,SAAS4B,EAAYtpF,GAAO,EAAOohD,GAExC,IAAI4nC,EAAQzoG,KAAKmlG,SAAShH,GACtBjlC,EAAM7iC,EAAQ96B,OAGlB,GAAIktG,GAASf,EACX,OAAO7mC,IAET,IAAK,IAAI7lE,EAAI,EAAGA,EAAIk+D,EAAKl+D,IAAK,CAE5B,GAAoB,MADZq7B,EAAQr7B,GACVsuC,OAAO,IAAetpC,KAAK2gG,IAAjC,CAIA,IAAIqI,EAAUF,EAAOt8F,OAAO6pB,EAAQr7B,GAAI6tG,GACxC7oG,KAAKmnG,SAAS6B,EAASvpF,GAAO,EAAMohD,GAEpC,IAAIooC,EAAQH,EAAOt8F,OAAO6pB,EAAQr7B,GAAI6sG,GACtC7nG,KAAKmnG,SAAS8B,EAAOxpF,GAAO,EAAMohD,IAGpCA,KAGF0mC,GAAKhrG,UAAUorG,eAAiB,SAAUrkD,EAAQ7jC,EAAOohD,GAGvD,IAAIzmE,EAAO4F,KACXA,KAAKuoG,MAAMjlD,GAAQ,SAAU21C,EAAIh9F,GAC/B7B,EAAKqxG,gBAAgBnoD,EAAQ7jC,EAAOw5E,EAAIh9F,EAAQ4kE,OAGpD0mC,GAAKhrG,UAAUkvG,gBAAkB,SAAUnoD,EAAQ7jC,EAAOw5E,EAAIh9F,EAAQ4kE,GAQpE,GAJK7gE,KAAKq7C,QAAQ57B,KAChBzf,KAAKq7C,QAAQ57B,GAASlmB,OAAOs4B,OAAO,QAGjC51B,EACH,OAAO4kE,IAET,GAAIvd,GAAUqiB,GAAWriB,KAAYtjD,KAAKylG,QAAS,CACjD,IAAIyD,EAAQ,UAAU9rG,KAAKkmD,GACF,MAArBA,EAAOha,OAAO,GAChBga,EAASnoD,GAAK4F,KAAKf,KAAKyd,KAAM6lC,IAE9BA,EAASnoD,GAAKuK,QAAQ1F,KAAKyd,KAAM6lC,GAC7B4lD,IACF5lD,GAAU,MAIS,UAArBrmD,QAAQihE,WACV5a,EAASA,EAAO//C,QAAQ,MAAO,MAGjCvD,KAAKsoG,WAAW7oF,EAAO6jC,GACvBud,KAIF0mC,GAAKhrG,UAAUgsG,MAAQ,SAAUhpG,EAAGshE,GAClC,IAAIs9B,EAAMn+F,KAAKynG,SAASloG,GACpB4pG,EAA0B,MAAhB5pG,EAAE3D,OAAO,GAEvB,GAAI2D,EAAEhE,OAASyE,KAAKy+B,UAClB,OAAOoiC,IAET,IAAK7gE,KAAK8gE,MAAQkjC,GAAQhkG,KAAKkiB,MAAOi8E,GAAM,CAC1C,IAAInhG,EAAIgD,KAAKkiB,MAAMi8E,GAMnB,GAJI53F,MAAMC,QAAQxJ,KAChBA,EAAI,QAGDmsG,GAAiB,QAANnsG,EACd,OAAO6jE,EAAG,KAAM7jE,GAElB,GAAImsG,GAAiB,SAANnsG,EACb,OAAO6jE,IAOX,IAAIC,EAAO9gE,KAAKklG,UAAU/G,GAC1B,QAAarsF,IAATgvD,EAAoB,CACtB,IAAa,IAATA,EACF,OAAOD,EAAG,KAAMC,GAEhB,IAAIvyB,EAAOuyB,EAAKI,cAAgB,MAAQ,OACxC,OAAIioC,GAAoB,SAAT56D,EACNsyB,IAEAA,EAAG,KAAMtyB,EAAMuyB,GAI5B,IAAI1mE,EAAO4F,KACP0rG,EAAS7B,GAAS,SAAW1L,GAIjC,SAAmBlF,EAAIgC,GACrB,GAAIA,GAASA,EAAMP,iBAGjB,OAAO10F,GAAG86D,KAAKq9B,GAAK,SAAUlF,EAAIn4B,GAC5Bm4B,EACF7+F,EAAKuxG,OAAOpsG,EAAG4+F,EAAK,KAAMlD,EAAOp6B,GAEjCzmE,EAAKuxG,OAAOpsG,EAAG4+F,EAAKlF,EAAIn4B,EAAMD,MAGlCzmE,EAAKuxG,OAAOpsG,EAAG4+F,EAAKlF,EAAIgC,EAAOp6B,MAd/B6qC,GACF1lG,GAAGi1F,MAAMkD,EAAKuN,IAkBlBnE,GAAKhrG,UAAUovG,OAAS,SAAUpsG,EAAG4+F,EAAKlF,EAAIn4B,EAAMD,GAClD,GAAIo4B,IAAmB,WAAZA,EAAGlxC,MAAiC,YAAZkxC,EAAGlxC,MAEpC,OADA/nD,KAAKklG,UAAU/G,IAAO,EACft9B,IAGT,IAAIsoC,EAA0B,MAAhB5pG,EAAE3D,OAAO,GAGvB,GAFAoE,KAAKklG,UAAU/G,GAAOr9B,EAEA,MAAlBq9B,EAAIviG,OAAO,IAAcklE,IAASA,EAAKI,cACzC,OAAOL,EAAG,MAAM,EAAOC,GAEzB,IAAI9jE,GAAI,EAKR,OAJI8jE,IACF9jE,EAAI8jE,EAAKI,cAAgB,MAAQ,QACnClhE,KAAKkiB,MAAMi8E,GAAOn+F,KAAKkiB,MAAMi8E,IAAQnhG,EAEjCmsG,GAAiB,SAANnsG,EACN6jE,IAEFA,EAAG,KAAM7jE,EAAG8jE,oDCjxBjBimC,GACA5rG,GACA6K,GACAmkG,GACAyB,GAEAC,GAMAx2B,GAEAzX,SAEJ,SAASrtC,GAAUtwB,GACH,CACZ,SACA,QACA,OACA,QACA,QACA,WAEMxG,SAAQ,SAASgG,GACvBQ,EAAQR,GAAKQ,EAAQR,IAAMuG,GAAGvG,GAE9BQ,EADAR,GAAQ,QACKQ,EAAQR,IAAMuG,GAAGvG,MAGhCQ,EAAQ6rG,aAAe7rG,EAAQ6rG,cAAgB,EAC/C7rG,EAAQ8rG,WAAa9rG,EAAQ8rG,YAAc,KACtB,IAAjB9rG,EAAQkqG,OACVlqG,EAAQ+rG,aAAc,GAExB/rG,EAAQ+rG,YAAc/rG,EAAQ+rG,cAAe,EAC7C/rG,EAAQkqG,KAAOlqG,EAAQkqG,MAAQ0B,GAGjC,SAASI,GAAQvvG,EAAGuD,EAAS4gE,GACJ,mBAAZ5gE,IACT4gE,EAAK5gE,EACLA,EAAU,IAGZ8mG,GAAOrqG,EAAG,wBACVqqG,GAAOvY,aAAa9xF,EAAG,SAAU,mCACjCqqG,GAAOvY,aAAa3tB,EAAI,WAAY,sCACpCkmC,GAAO9mG,EAAS,6CAChB8mG,GAAOvY,aAAavuF,EAAS,SAAU,oCAEvCswB,GAAStwB,GAET,IAAIisG,EAAY,EACZC,EAAW,KACXjxG,EAAI,EAER,GAAI+E,EAAQ+rG,cAAgB7B,GAAKjK,SAASxjG,GACxC,OAAO0vG,EAAU,KAAM,CAAC1vG,IAe1B,SAAS0vG,EAAWnT,EAAIlY,GACtB,OAAIkY,EACKp4B,EAAGo4B,GAGF,KADV/9F,EAAI6lF,EAAQxlF,QAEHslE,SAETkgB,EAAQtnF,SAAQ,SAAUiD,GACxB2vG,GAAQ3vG,EAAGuD,GAAS,SAASqsG,EAAIrT,GAC/B,GAAIA,EAAI,CACN,IAAiB,UAAZA,EAAGlxC,MAAgC,cAAZkxC,EAAGlxC,MAAoC,UAAZkxC,EAAGlxC,OACtDmkD,EAAYjsG,EAAQ6rG,aAItB,OAHAI,IAGOv5E,YAAW,WAChB05E,GAAQ3vG,EAAGuD,EAASqsG,KAHC,IAAZJ,GAQb,GAAgB,WAAZjT,EAAGlxC,MAAqBstB,GAAUp1E,EAAQ8rG,WAC5C,OAAOp5E,YAAW,WAChB05E,GAAQ3vG,EAAGuD,EAASqsG,KACnBj3B,MAIW,WAAZ4jB,EAAGlxC,OAAmBkxC,EAAK,MAGjC5jB,GAAU,EAtChB,SAAe4jB,GACbkT,EAAWA,GAAYlT,EACX,KAAN/9F,GACJ2lE,EAAGsrC,GAoCD52D,CAAK0jD,SA9CXh5F,EAAQg7F,MAAMv+F,GAAG,SAAUu8F,EAAIn4B,GAC7B,IAAKm4B,EACH,OAAOmT,EAAU,KAAM,CAAC1vG,IAE1BytG,GAAKztG,EAAGuD,EAAQkqG,KAAMiC,MA2D1B,SAASC,GAAS3vG,EAAGuD,EAAS4gE,GAC5BkmC,GAAOrqG,GACPqqG,GAAO9mG,GACP8mG,GAAqB,mBAAPlmC,GAId5gE,EAAQg7F,MAAMv+F,GAAG,SAAUu8F,EAAImS,GAC7B,OAAInS,GAAkB,WAAZA,EAAGlxC,KACJ8Y,EAAG,OAGRo4B,GAAkB,UAAZA,EAAGlxC,MAAoB6V,IAC/B2uC,GAAY7vG,EAAGuD,EAASg5F,EAAIp4B,GAE1BuqC,GAAMA,EAAGlqC,cACJsrC,GAAM9vG,EAAGuD,EAASg5F,EAAIp4B,QAE/B5gE,EAAQwsG,OAAO/vG,GAAG,SAAUu8F,GAC1B,GAAIA,EAAI,CACN,GAAgB,WAAZA,EAAGlxC,KACL,OAAO8Y,EAAG,MACZ,GAAgB,UAAZo4B,EAAGlxC,KACL,OAAQ6V,GACJ2uC,GAAY7vG,EAAGuD,EAASg5F,EAAIp4B,GAC5B2rC,GAAM9vG,EAAGuD,EAASg5F,EAAIp4B,GAC5B,GAAgB,WAAZo4B,EAAGlxC,KACL,OAAOykD,GAAM9vG,EAAGuD,EAASg5F,EAAIp4B,GAEjC,OAAOA,EAAGo4B,UAKhB,SAASsT,GAAa7vG,EAAGuD,EAASg5F,EAAIp4B,GACpCkmC,GAAOrqG,GACPqqG,GAAO9mG,GACP8mG,GAAqB,mBAAPlmC,GACVo4B,GACF8N,GAAO9N,aAAc39F,OAEvB2E,EAAQysG,MAAMhwG,EAAGkvG,IAAO,SAAU1S,GAC5BA,EACFr4B,EAAgB,WAAbq4B,EAAInxC,KAAoB,KAAOkxC,GAElCh5F,EAAQ6gE,KAAKpkE,GAAG,SAASiwG,EAAKC,GACxBD,EACF9rC,EAAgB,WAAb8rC,EAAI5kD,KAAoB,KAAOkxC,GAC3B2T,EAAM1rC,cACbsrC,GAAM9vG,EAAGuD,EAASg5F,EAAIp4B,GAEtB5gE,EAAQwsG,OAAO/vG,EAAGmkE,SAK5B,SAASgsC,GAAiBnwG,EAAGuD,EAASg5F,GACpC8N,GAAOrqG,GACPqqG,GAAO9mG,GACHg5F,GACF8N,GAAO9N,aAAc39F,OAEvB,IACE2E,EAAQ6sG,UAAUpwG,EAAGkvG,IACrB,MAAO1S,GACP,GAAiB,WAAbA,EAAInxC,KACN,OAEA,MAAMkxC,EAGV,IACE,IAAI2T,EAAQ3sG,EAAQqkE,SAAS5nE,GAC7B,MAAOiwG,GACP,GAAiB,WAAbA,EAAI5kD,KACN,OAEA,MAAMkxC,EAGN2T,EAAM1rC,cACR6rC,GAAUrwG,EAAGuD,EAASg5F,GAEtBh5F,EAAQ+sG,WAAWtwG,GAGvB,SAAS8vG,GAAO9vG,EAAGuD,EAASgtG,EAAYpsC,GACtCkmC,GAAOrqG,GACPqqG,GAAO9mG,GACHgtG,GACFlG,GAAOkG,aAAsB3xG,OAC/ByrG,GAAqB,mBAAPlmC,GAKd5gE,EAAQusG,MAAM9vG,GAAG,SAAUu8F,IACrBA,GAAmB,cAAZA,EAAGlxC,MAAoC,WAAZkxC,EAAGlxC,MAAiC,UAAZkxC,EAAGlxC,KAExDkxC,GAAkB,YAAZA,EAAGlxC,KAChB8Y,EAAGosC,GAEHpsC,EAAGo4B,GAIT,SAAgBv8F,EAAGuD,EAAS4gE,GAC1BkmC,GAAOrqG,GACPqqG,GAAO9mG,GACP8mG,GAAqB,mBAAPlmC,GAEd5gE,EAAQqrG,QAAQ5uG,GAAG,SAAUu8F,EAAInX,GAC/B,GAAImX,EACF,OAAOp4B,EAAGo4B,GACZ,IAGIkT,EAHAjxG,EAAI4mF,EAAMvmF,OACd,GAAU,IAANL,EACF,OAAO+E,EAAQusG,MAAM9vG,EAAGmkE,GAE1BihB,EAAMroF,SAAQ,SAAU8F,GACtB0sG,GAAO9wG,GAAK4F,KAAKrE,EAAG6C,GAAIU,GAAS,SAAUg5F,GACzC,IAAIkT,EAEJ,OAAIlT,EACKp4B,EAAGsrC,EAAWlT,QACX,KAAN/9F,GACJ+E,EAAQusG,MAAM9vG,EAAGmkE,aA3BrBqsC,CAAOxwG,EAAGuD,EAAS4gE,MAoCzB,SAASssC,GAAYzwG,EAAGuD,GAStB,IAAI8gF,EAEJ,GATAxwD,GADAtwB,EAAUA,GAAW,IAGrB8mG,GAAOrqG,EAAG,wBACVqqG,GAAOvY,aAAa9xF,EAAG,SAAU,mCACjCqqG,GAAO9mG,EAAS,2BAChB8mG,GAAOvY,aAAavuF,EAAS,SAAU,oCAInCA,EAAQ+rG,cAAgB7B,GAAKjK,SAASxjG,GACxCqkF,EAAU,CAACrkF,QAEX,IACEuD,EAAQu6F,UAAU99F,GAClBqkF,EAAU,CAACrkF,GACX,MAAOu8F,GACPlY,EAAUopB,GAAKlkC,KAAKvpE,EAAGuD,EAAQkqG,MAInC,GAAKppB,EAAQxlF,OAGb,IAAK,IAAIP,EAAI,EAAGA,EAAI+lF,EAAQxlF,OAAQP,IAAK,CACnC0B,EAAIqkF,EAAQ/lF,GAEhB,IACE,IAAIowG,EAAKnrG,EAAQu6F,UAAU99F,GAC3B,MAAOu8F,GACP,GAAgB,WAAZA,EAAGlxC,KACL,OAGc,UAAZkxC,EAAGlxC,MAAoB6V,IACzBivC,GAAgBnwG,EAAGuD,EAASg5F,GAGhC,IAEMmS,GAAMA,EAAGlqC,cACX6rC,GAAUrwG,EAAGuD,EAAS,MAEtBA,EAAQ+sG,WAAWtwG,GACrB,MAAOu8F,GACP,GAAgB,WAAZA,EAAGlxC,KACL,OACF,GAAgB,UAAZkxC,EAAGlxC,KACL,OAAO6V,GAAYivC,GAAgBnwG,EAAGuD,EAASg5F,GAAM8T,GAAUrwG,EAAGuD,EAASg5F,GAC7E,GAAgB,WAAZA,EAAGlxC,KACL,MAAMkxC,EAER8T,GAAUrwG,EAAGuD,EAASg5F,KAK5B,SAAS8T,GAAWrwG,EAAGuD,EAASgtG,GAC9BlG,GAAOrqG,GACPqqG,GAAO9mG,GACHgtG,GACFlG,GAAOkG,aAAsB3xG,OAE/B,IACE2E,EAAQ8sG,UAAUrwG,GAClB,MAAOu8F,GACP,GAAgB,WAAZA,EAAGlxC,KACL,OACF,GAAgB,YAAZkxC,EAAGlxC,KACL,MAAMklD,EACQ,cAAZhU,EAAGlxC,MAAoC,WAAZkxC,EAAGlxC,MAAiC,UAAZkxC,EAAGlxC,MAK9D,SAAqBrrD,EAAGuD,GACtB8mG,GAAOrqG,GACPqqG,GAAO9mG,GACPA,EAAQ0oG,YAAYjsG,GAAGjD,SAAQ,SAAU8F,GACvC4tG,GAAWhyG,GAAK4F,KAAKrE,EAAG6C,GAAIU,MAS9B,IAAImtG,EAAUxvC,GAAY,IAAM,EAC5B5iE,EAAI,EACR,OAAG,CACD,IAAIqyG,GAAQ,EACZ,IACE,IAAIhE,EAAMppG,EAAQ8sG,UAAUrwG,EAAGuD,GAE/B,OADAotG,GAAQ,EACDhE,EAHT,QAKE,KAAMruG,EAAIoyG,GAAWC,EACnB,WA3BFC,CAAW5wG,EAAGuD,0CA7UpBstG,GAAiBtB,GACjBA,GAAOhmC,KAAOknC,GAEVpG,KACA5rG,KACA6K,KACAmkG,QACAyB,GAAQtuF,SAAS,MAAO,GAExBuuF,GAAkB,CACpB9G,QAAQ,EACRN,QAAQ,GAINpvB,GAAU,EAEVzX,GAAkC,UAArB3gE,QAAQihE,cCjBzB,WACE,IAAIsvC,EAAmBC,EAAuBC,EAAkBC,EAAqBC,EAAQ1nG,EAAO2nG,EAAyB7nG,EAAI8nG,EAAQC,EAAoBC,EAAmBC,EAAuBC,EAAaC,EAAsB/U,EAAQj+F,EAAM8wG,EAAQmC,EAAqBtrG,EACnRknF,EAAU,GAAGpuF,MAEfoK,EAAEnL,EAEF+yG,EAAMS,EAENlzG,EAAIF,EAEJ6H,EAACwrG,sBAEDpoG,KAEAkzF,EAAMmV,KAENtC,EAAMuC,KAENV,EAAS,CACP9zG,YAAY,EACZy0G,iBAAkB,WAChB,MAAyB,UAArBxxG,QAAQihE,UAAyBjhE,QAAQC,IAAIwxG,KAGxCzxG,QAAQC,IAAIwxG,KAFZzxG,QAAQC,IAAIyxG,aAKvB1J,SAAU,SAAS2J,GAEjB,GAAoB,MAAhBA,EACF,OAAO,KAETA,EAAed,EAAOe,YAAYD,GAClC,IACE,OAAO5oG,EAAGq+D,aAAauqC,GACvB,MAAOE,GAEP,OADIA,EACGF,IAGXvU,UAAW,SAAS0U,GAClB,OAAuB,MAAnBA,EACK,KAEFjB,EAAOe,YAAY1zG,EAAKk/F,UAAU0U,EAAgBzyG,cAE3DuyG,YAAa,SAASD,GACpB,MAAqB,MAAjBA,EACKd,EAAOW,mBACoC,IAAzCG,EAAa/qE,QAAQ,IAAM1oC,EAAK4vE,KAClC,GAAM+iC,EAAOW,mBAAuBG,EAAa1rD,UAAU,GAE7D0rD,GAETI,QAAS,SAASC,GAChB,IAAIC,EAASC,EACb,MAAyB,UAArBlyG,QAAQihE,SACH+wC,GAETE,EAAarB,EAAOzT,UAAU4U,GAEf,OADfC,EAAUpB,EAAOW,oBAERQ,EAELE,IAAeD,EACV,IAEJC,EAAWztD,WAAWvmD,EAAK4F,KAAKmuG,EAAS/zG,EAAK4vE,MAG5C5vE,EAAK4F,KAAK,IAAK5F,EAAK4vE,IAAKokC,EAAWjsD,UAAUgsD,EAAQ3zG,OAAS,IAF7D0zG,IAIXG,oBAAqB,WACnB,OAAQnyG,QAAQihE,UACd,IAAK,SACH,OAAO4vC,EAAO7I,SAAS9pG,EAAK4F,KAAK,IAAK,UAAW,wBACnD,IAAK,QACH,MAAO,WACT,IAAK,QACH,OAAO9D,QAAQC,IAAImyG,QACrB,QACE,OAAO,OAGb1pC,WAAY,SAAS2pC,GAInB,OAHmB,MAAfA,IACFA,EAAc,IAES,UAArBryG,QAAQihE,SAQgB,MAAnBoxC,EAAY,GAPI,MAAnBA,EAAY,IAGO,OAAnBA,EAAY,IAAkC,OAAnBA,EAAY,IAQ/CC,WAAY,SAASD,GACnB,OAAOpB,EAAYoB,KAAsD,IAArClB,EAAoBkB,IAE1DE,gBAAiB,SAASC,GACxB,IAAI3uC,EACJ,QAAKotC,EAAYuB,QAGb3uC,EAAOstC,EAAoBqB,KACtB3uC,EAAKI,gBAKhBA,YAAa,SAASuuC,EAAej6D,GACnC,OAAK04D,EAAYuB,GAGVzpG,EAAG86D,KAAK2uC,GAAe,SAASzgD,EAAO8R,GAC5C,OACStrB,EADI,MAATwZ,GAGU8R,EAAKI,kBANZ1rB,GAAK,IAUhBk6D,WAAY,SAAStnD,GACnB,IAAI0Y,EACJ,QAAKotC,EAAY9lD,QAGb0Y,EAAOstC,EAAoBhmD,KACtB0Y,EAAKC,WAKhB4uC,mBAAoB,SAASC,GAC3B,IAAI9uC,EACJ,QAAKotC,EAAY0B,QAGb9uC,EAAOqtC,EAAqByB,KACvB9uC,EAAK45B,mBAKhBA,eAAgB,SAASkV,EAAanmE,GACpC,OAAIykE,EAAY0B,GACP5pG,EAAGi1F,MAAM2U,GAAa,SAAS5gD,EAAO8R,GAC3C,MAA2B,mBAAbr3B,EAA0BA,EAAkB,MAARq3B,GAAiBA,EAAK45B,uBAAoB,KAGvFz9F,QAAQwkE,UAAS,WACtB,MAA2B,mBAAbh4B,EAA0BA,GAAS,QAAS,MAIhEomE,iBAAkB,SAASP,GACzB,IAAIxuC,EACJ,QAAKotC,EAAYoB,QAGbxuC,EAAOstC,EAAoBkB,KACM,IAAf,EAAZxuC,EAAK+3B,QAKjBiX,YAAa,SAASR,GACpB,IAAIljC,EACJ,OAAI8hC,EAAYoB,IAC2C,OAAjDljC,EAAOgiC,EAAoBkB,GAAapgF,MAAgBk9C,GAExD,GAGZ2jC,SAAU,SAASC,EAAUruC,GAC3B,IAAIjpC,EACJ,OAAKo1E,EAAO0B,gBAAgBQ,IAG5Bt3E,EAAQ1yB,EAAG2iG,YAAYqH,GACnBruC,IACFjpC,EAAQo1E,EAAOmC,iBAAiBv3E,EAAOipC,IAKzCjpC,GAHAA,EAAQA,EAAMwK,MAAK,SAASnpC,EAAGqJ,GAC7B,OAAOrJ,EAAE2K,cAAcy/F,cAAc/gG,EAAEsB,mBAE3B9D,KAAI,SAASsvG,GACzB,OAAO/0G,EAAK4F,KAAKivG,EAAUE,OAVpB,IAcXjrB,KAAM,WACJ,IAAIzvC,EAAMmsB,EAAY5lB,EAAMi0D,EAM5B,OALAA,EAAWnmE,UAAU,IAAIkS,EAAO,GAAKlS,UAAUtuC,OAASyuF,EAAQvtF,KAAKotC,UAAW,GAAK,IAC5EtuC,OAAS,IAChBomE,EAAa5lB,EAAKxoC,SAEpBiiC,EAAOuG,EAAKxoC,QACLvN,EAAGslG,QAAQ0E,GAAU,SAAShhD,EAAOt2B,GAC1C,OAAa,MAATs2B,EACKxZ,EAAKwZ,IAER2S,IACFjpC,EAAQo1E,EAAOmC,iBAAiBv3E,EAAOipC,IAKzCjpC,GAHAA,EAAQA,EAAMwK,MAAK,SAASnpC,EAAGqJ,GAC7B,OAAOrJ,EAAE2K,cAAcy/F,cAAc/gG,EAAEsB,mBAE3B9D,KAAI,SAASsvG,GACzB,OAAO/0G,EAAK4F,KAAKivG,EAAUE,MAEtB16D,EAAK,KAAM9c,QAIxBu3E,iBAAkB,SAASv3E,EAAOipC,GAQhC,OAPAA,EAAaA,EAAW/gE,KAAI,SAASynD,GACnC,MAAY,KAARA,EACKA,EAEA,IAAMA,EAAI9kD,QAAQ,MAAO,OAG7Bm1B,EAAMz1B,QAAO,SAASqsG,GAC3B,OAAOxsG,EAAEqiF,QAAQxjB,EAAYxmE,EAAKyrD,QAAQ0oD,QAG9Ca,aAAc,SAASH,GACrB,IAAII,EAAQ13E,EAOZ,OANAA,EAAQ,GACR03E,EAAS,SAASF,GAEhB,OADAx3E,EAAMr3B,KAAK6uG,IACJ,GAETpC,EAAOuC,iBAAiBL,EAAUI,EAAQA,GACnC13E,GAET43E,KAAM,SAASh3G,EAAQ+kD,EAAQ5U,GAC7B,OAAOukE,EAAkB10G,EAAQ+kD,GAAQ,SAASkyD,EAAsBC,GACtE,IAAIxhD,EAAOyhD,EACX,IAAIF,EAIJ,OAAKC,GAMLC,EAAmBt1G,EAAK+rD,QAAQ7I,GACzBr4C,EAAG/J,OAAOw0G,GAAkB,SAASC,GAC1C,IAAIA,EAIJ,OAAO5C,EAAO6C,SAASF,GAAkB,SAASG,GAChD,IAAIA,EAIJ,OAAO5qG,EAAG4vD,OAAOt8D,EAAQ+kD,EAAQ5U,GAH/BA,EAASmnE,MALX5qG,EAAG4vD,OAAOt8D,EAAQ+kD,EAAQ5U,SAR5BulB,EAAQ,IAAI1zD,MAAM,IAAM+iD,EAAS,sBAC3B0J,KAAO,cACbte,EAASulB,IANTvlB,EAAS8mE,OAyBfM,SAAU,SAASv3G,EAAQ+kD,GACzB,IAAI2Q,EAAOyhD,EACX,IAAKxC,EAAsB30G,EAAQ+kD,GAGjC,MAFA2Q,EAAQ,IAAI1zD,MAAM,IAAM+iD,EAAS,sBAC3B0J,KAAO,SACPiH,EAMR,OAJAyhD,EAAmBt1G,EAAK+rD,QAAQ7I,GAC3Br4C,EAAGupG,WAAWkB,IACjB3C,EAAOgD,aAAaL,GAEfzqG,EAAG+qG,WAAWz3G,EAAQ+kD,IAE/B2yD,WAAY,SAASC,GACnB,OAAOhF,EAAOhmC,KAAKgrC,IAErB3+F,OAAQ,SAAS2+F,EAAcxnE,GAC7B,OAAOwiE,EAAOgF,EAAcxnE,IAE9BynE,cAAe,SAAS9oD,EAAU+oD,EAASlxG,GAEzC,OADAm5F,EAAOnzB,KAAK9qE,EAAK+rD,QAAQkB,IAClBpiD,EAAGkrG,cAAc9oD,EAAU+oD,EAASlxG,IAE7CmxG,UAAW,SAAShpD,EAAU+oD,EAASlxG,EAASwpC,GAE9C,OADAA,EAAW3mC,EAAE+7B,KAAKgL,WACXuvD,EAAOj+F,EAAK+rD,QAAQkB,IAAW,SAAS4G,GAC7C,OAAa,MAATA,EACyB,mBAAbvlB,EAA0BA,EAASulB,QAAS,EAEnDhpD,EAAGorG,UAAUhpD,EAAU+oD,EAASlxG,EAASwpC,OAItDlC,KAAM,SAASm9B,EAAY2sC,EAAiB77D,GAC1C,OAAO4jD,EAAOj+F,EAAK+rD,QAAQmqD,IAAkB,SAASriD,GACpD,IAAIsiD,EAAmBC,EACvB,GAAa,MAATviD,EA0BJ,OApBAuiD,EAAevrG,EAAGwrG,iBAAiB9sC,IACtB/3D,GAAG,SAAS,SAASqiD,GAIhC,MAHoB,mBAATxZ,GACTA,EAAKwZ,GAEAxZ,EAAO,SAEhB87D,EAAoBtrG,EAAGyrG,kBAAkBJ,IACvB1kG,GAAG,SAAS,SAASqiD,GAIrC,MAHoB,mBAATxZ,GACTA,EAAKwZ,GAEAxZ,EAAO,QAEhB87D,EAAkB3kG,GAAG,SAAS,WAI5B,MAHoB,mBAAT6oC,GACTA,IAEKA,EAAO,QAET+7D,EAAaj/C,KAAKg/C,GAzBH,mBAAT97D,GACTA,EAAKwZ,OA2Bb0iD,SAAU,SAAShtC,EAAY2sC,GAC7B,IAAIM,EAAqBr4G,EAAQs4G,EAAgB5oE,EAASgkC,EAAIC,EAAMM,EAIpE,IAHAvkC,EAAUhjC,EAAG2iG,YAAYjkC,GACzB00B,EAAOnzB,KAAKorC,GACZ9jC,EAAW,GACNP,EAAK,EAAGC,EAAOjkC,EAAQztC,OAAQyxE,EAAKC,EAAMD,IAC7C1zE,EAAS0vC,EAAQgkC,GACjB4kC,EAAiBz2G,EAAK4F,KAAK2jE,EAAYprE,GACvCq4G,EAAsBx2G,EAAK4F,KAAKswG,EAAiB/3G,GAC7Cw0G,EAAO0B,gBAAgBoC,GACzBrkC,EAASlsE,KAAKysG,EAAO4D,SAASE,EAAgBD,IAE9CpkC,EAASlsE,KAAKysG,EAAO+D,aAAaD,EAAgBD,IAGtD,OAAOpkC,GAETskC,aAAc,SAASD,EAAgBD,EAAqBG,GAC1D,IAAI13E,EAAQ23E,EAAWzzD,EAAU0zD,EAAQC,EAAS1kC,EAChC,MAAdukC,IACFA,EAAa,OAEf1Y,EAAOnzB,KAAK9qE,EAAK+rD,QAAQyqD,IACzBK,EAAS,KACTC,EAAU,KACV,IAME,IALAD,EAAShsG,EAAGksG,SAASN,EAAgB,KACrCK,EAAUjsG,EAAGksG,SAASP,EAAqB,KAC3CI,EAAY,EACZzzD,EAAW,EACXivB,EAAW,GACJwkC,EAAY,GACjB33E,EAAS,IAAI3+B,OAAOq2G,GACpBC,EAAY/rG,EAAGmsG,SAASH,EAAQ53E,EAAQ,EAAGA,EAAO7+B,OAAQ+iD,GAC1Dt4C,EAAGosG,UAAUH,EAAS73E,EAAQ,EAAG23E,EAAWzzD,GAC5CivB,EAASlsE,KAAKi9C,GAAYyzD,GAE5B,OAAOxkC,EAZT,QAcgB,MAAVykC,GACFhsG,EAAGqsG,UAAUL,GAEA,MAAXC,GACFjsG,EAAGqsG,UAAUJ,KAInBnB,aAAc,SAASrB,GACrB,IAAK3B,EAAO0B,gBAAgBC,GAC1B,OAAOrW,EAAOnzB,KAAKwpC,IAGvBkB,SAAU,SAASlB,EAAehmE,GAChC,OAAOqkE,EAAO5sC,YAAYuuC,GAAe,SAASxzG,GAChD,OAAIA,EACyB,mBAAbwtC,EAA0BA,SAAa,EAEhD2vD,EAAOqW,GAAe,SAASzgD,GACpC,MAA2B,mBAAbvlB,EAA0BA,EAASulB,QAAS,SAIhEqhD,iBAAkB,SAASL,EAAUsC,EAAQC,GAC3C,IAAIC,EAIJ,GAHmB,MAAfD,IACFA,EAAcD,GAEXxE,EAAO0B,gBAAgBQ,GAyB5B,OAtBAwC,EAAW,SAAS/C,EAAe6C,EAAQC,GACzC,IAAIrC,EAAWppD,EAAM2rD,EAAW7F,EAAO5/B,EAAIC,EAAMb,EAEjD,IAAKY,EAAK,EAAGC,GADbb,EAAOpmE,EAAG2iG,YAAY8G,IACGl0G,OAAQyxE,EAAKC,EAAMD,IAC1ClmB,EAAOslB,EAAKY,GACZkjC,EAAY/0G,EAAK4F,KAAK0uG,EAAe3oD,IACrC8lD,EAAQ5mG,EAAGw0F,UAAU0V,IACXxV,mBACJ+X,EAAYrE,EAAoB8B,MAClCtD,EAAQ6F,GAGR7F,EAAM1rC,cACJqxC,EAAYrC,IACdsC,EAAStC,EAAWoC,EAAQC,GAErB3F,EAAM7rC,UACfuxC,EAAOpC,KAKGF,EAAUsC,EAAQC,IAEpCG,aAAc,SAAS1C,EAAUsC,EAAQC,EAAaI,GACpD,OAAO3sG,EAAGslG,QAAQ0E,GAAU,SAAShhD,EAAO8yB,GAC1C,IAAIh7B,EAAMwwC,EAAOtqB,EAAIC,EAAMM,EAC3B,GAAIve,EACF,MAAyB,mBAAX2jD,EAAwBA,SAAW,EAkCjD,KAhCArb,EAAQpxF,EAAMoxF,OAAM,SAAS4Y,EAAWzmE,GACtC,OAAOzjC,EAAG86D,KAAKovC,GAAW,SAASlhD,EAAO49C,GACxC,OAAI59C,EACKvlB,EAASulB,GACP49C,EAAM7rC,UACfuxC,EAAOpC,GACAzmE,KACEmjE,EAAM1rC,eACXqxC,EAAYrC,GACPlqG,EAAGslG,QAAQ4E,GAAW,SAASlhD,EAAO8yB,GAC3C,IAAIh7B,EAAMkmB,EAAIC,EACd,GAAIje,EACF,OAAOvlB,EAASulB,GAEhB,IAAKge,EAAK,EAAGC,EAAO6U,EAAMvmF,OAAQyxE,EAAKC,EAAMD,IAC3ClmB,EAAOg7B,EAAM9U,GACbsqB,EAAMxF,QAAQ32F,EAAK4F,KAAKmvG,EAAWppD,IAErC,OAAOrd,OAONA,WAIPgoD,YAAc,EACpB6F,EAAMzF,MAAQ8gB,EACdplC,EAAW,GACNP,EAAK,EAAGC,EAAO6U,EAAMvmF,OAAQyxE,EAAKC,EAAMD,IAC3ClmB,EAAOg7B,EAAM9U,GACbO,EAASlsE,KAAKi2F,EAAMj2F,KAAKlG,EAAK4F,KAAKivG,EAAUlpD,KAE/C,OAAOymB,MAIbqlC,WAAY,SAASC,GACnB,IAAIC,EAEJ,OADAA,EAAW9sG,EAAGkgE,aAAa2sC,GACpBE,EAAkBC,WAAW,OAAOviG,OAAOqiG,GAAUG,OAAO,QAErEvtG,QAAS,WACP,IAAIyZ,EAAM+zF,EAAevxC,EAAYwxC,EAAUC,EAAWC,EAAevuC,EAAckI,EAAIC,EAAMb,EAOjG,GANAjtD,EAAO,GAAK0qB,UAAUtuC,OAASyuF,EAAQvtF,KAAKotC,UAAW,GAAK,GACxD/mC,EAAE0D,QAAQ1D,EAAE+7B,KAAK1f,MACnBwiD,EAAaxiD,EAAK/a,OAEpBivG,EAAuC,OAAtBjnC,EAAOjtD,EAAK/a,OAAiBgoE,EAAK9vE,gBAAa,EAChE82G,EAAYj0F,EACPk0F,EAAL,CAGA,GAAIvF,EAAOnoC,WAAW0tC,GAAgB,CACpC,GAAI1xC,IAAemD,EAAegpC,EAAOwF,iBAAiBD,EAAe1xC,IACvE,OAAOmD,EAEP,GAAIgpC,EAAOyB,WAAW8D,GACpB,OAAOA,EAIb,IAAKrmC,EAAK,EAAGC,EAAOmmC,EAAU73G,OAAQyxE,EAAKC,EAAMD,IAG/C,GAFAmmC,EAAWC,EAAUpmC,GACrBkmC,EAAgB/3G,EAAK4F,KAAKoyG,EAAUE,GAChC1xC,GACF,GAAImD,EAAegpC,EAAOwF,iBAAiBJ,EAAevxC,GACxD,OAAOmD,OAGT,GAAIgpC,EAAOyB,WAAW2D,GACpB,OAAOpF,EAAO7I,SAASiO,KAM/BK,kBAAmB,WACjB,IAAIp0F,EAAMi0F,EAAWI,EAWrB,OAVAr0F,EAAO,GAAK0qB,UAAUtuC,OAASyuF,EAAQvtF,KAAKotC,UAAW,GAAK,GAC5D2pE,EAAc,KAEZA,EADkB,MAAhB11F,OAAO4a,MACK5a,OAAO4a,MACZz7B,QAAQw2G,cACH,CAACt4G,EAAK4F,KAAK9D,QAAQw2G,cAAe,MAAO,iBAEzC,GAEhBL,EAAYxF,EAAO8F,YAAYlnG,OAAOgnG,GAC/B1F,EAAOpoG,QAAQsZ,MAAM8uF,EAAQ9jB,EAAQvtF,KAAK22G,GAAW5mG,OAAOw9E,EAAQvtF,KAAK0iB,MAElFm0F,iBAAkB,SAASD,EAAe1xC,GACxC,IAAIgyC,EAAWC,EAAmB5mC,EAAIC,EACtC,IAAKD,EAAK,EAAGC,EAAOtL,EAAWpmE,OAAQyxE,EAAKC,EAAMD,IAEhD,GAAkB,MADlB2mC,EAAYhyC,EAAWqL,KAErB,GAAI8gC,EAAOyB,WAAW8D,GACpB,OAAOvF,EAAO7I,SAASoO,QAIzB,GADAO,EAAoBP,EAAgB,IAAMM,EAAUpwG,QAAQ,MAAO,IAC/DuqG,EAAOyB,WAAWqE,GACpB,OAAO9F,EAAO7I,SAAS2O,IAM/BC,sBAAuB,SAASxrD,GAC9B,OAAW,MAAPA,GAGGolD,EAAsBjxG,eAAe6rD,EAAI3jD,gBAElDovG,iBAAkB,SAASzrD,GACzB,OAAW,MAAPA,GAGGqlD,EAAiBlxG,eAAe6rD,EAAI3jD,gBAE7CqvG,eAAgB,SAAS1rD,GACvB,MAAsD,UAAvC,MAAPA,EAAcA,EAAI3jD,mBAAgB,IAE5CsvG,kBAAmB,SAAS3rD,GAC1B,OAAW,MAAPA,GAGGmlD,EAAkBhxG,eAAe6rD,EAAI3jD,gBAE9CuvG,aAAc,SAASC,GACrB,IAAUP,EAGV,OAFAA,EAAYx4G,EAAKyrD,QAAQstD,GAET,WADT/4G,EAAKg5G,SAASD,EAAYP,GAAWjvG,gBACD,KAAdivG,GAAoB7F,EAAOsG,oBAAoBT,KAE9ES,oBAAqB,SAAS/rD,GAC5B,OAAW,MAAPA,GAGGslD,EAAoBnxG,eAAe6rD,EAAI3jD,gBAEhD2vG,kBAAmB,WACjB,IAAIC,EAAeC,EAUnB,OATgC,MAA5BzG,EAAO0G,oBACTF,EAAgBlG,EAAoBnxG,QAAQw3G,SAAS/vG,eACrD6vG,EAAgBnG,EAAoBnxG,QAAQw3G,SAAS98D,eAEnDm2D,EAAO0G,qBADLF,IAAiBC,KACQD,EAAc1Z,MAAQ2Z,EAAc3Z,KAAO0Z,EAAczZ,MAAQ0Z,EAAc1Z,MAKvGiT,EAAO0G,mBAEhBE,gBAAiB,WACf,OAAQ5G,EAAOuG,qBAEjBjG,oBAAqB,WACnB,IAAIjvF,EAEJ,OADAA,EAAO,GAAK0qB,UAAUtuC,OAASyuF,EAAQvtF,KAAKotC,UAAW,GAAK,GACrDukE,EAAoBpvF,MAAM,KAAMG,IAEzCgvF,qBAAsB,WACpB,IAAIhvF,EAEJ,OADAA,EAAO,GAAK0qB,UAAUtuC,OAASyuF,EAAQvtF,KAAKotC,UAAW,GAAK,GACrDskE,EAAqBnvF,MAAM,KAAMG,KAI5C4uF,EAAqB,KAErBF,EAA0B,WAIxB,OAH2B,OAAvBE,IACFA,EAAqB9wG,QAAQuiE,SAASm1C,UAAYr3F,SAASrgB,QAAQuiE,SAASm1C,SAASh0G,MAAM,KAAK,KAAO,GAElGotG,GAGTK,EAAsB,WACpB,IAAIjvF,EAEJ,GADAA,EAAO,GAAK0qB,UAAUtuC,OAASyuF,EAAQvtF,KAAKotC,UAAW,GAAK,GACxD7jC,EAAGooG,qBAAuBP,IAC5B,OAAO7nG,EAAGooG,oBAAoBpvF,MAAMhZ,EAAImZ,GAExC,IACE,OAAOnZ,EAAGs+D,SAAStlD,MAAMhZ,EAAImZ,GAC7B,MAAO2vF,GAEP,OADQA,GACD,IAKbX,EAAuB,WACrB,IAAIhvF,EAEJ,GADAA,EAAO,GAAK0qB,UAAUtuC,OAASyuF,EAAQvtF,KAAKotC,UAAW,GAAK,GACxD7jC,EAAGmoG,sBAAwBN,IAC7B,OAAO7nG,EAAGmoG,qBAAqBnvF,MAAMhZ,EAAImZ,GAEzC,IACE,OAAOnZ,EAAGw0F,UAAUx7E,MAAMhZ,EAAImZ,GAC9B,MAAO2vF,GAEP,OADQA,GACD,IAKbtB,EAAoB,CAClBoH,aAAa,EACbC,MAAM,EACNC,QAAQ,EACRC,MAAM,EACNC,QAAQ,EACRC,QAAQ,EACRC,OAAO,EACPC,SAAS,GAGX1H,EAAwB,CACtB2H,QAAQ,EACRC,QAAQ,EACRC,SAAS,EACTC,QAAQ,EACRC,OAAO,EACPC,QAAQ,EACRC,OAAO,EACPC,SAAS,EACTC,QAAQ,EACRC,QAAQ,EACRC,QAAQ,EACRC,QAAQ,EACRC,QAAQ,EACRC,QAAQ,EACRC,QAAQ,EACRC,OAAO,EACPC,MAAM,EACNC,QAAQ,GAGV3I,EAAmB,CACjB4I,QAAQ,EACRC,QAAQ,EACRC,SAAS,EACTC,QAAQ,EACRC,QAAQ,EACRC,QAAQ,EACRC,SAAS,EACTC,SAAS,GAGXlJ,EAAsB,CACpBmJ,aAAa,EACbC,OAAO,EACPC,UAAU,EACVC,QAAQ,EACRC,WAAW,EACXC,QAAQ,EACRC,QAAQ,GAGVlJ,EAAc,SAASoB,GACrB,OAAuB,MAAfA,GAA+C,iBAAhBA,GAA4BA,EAAY/zG,OAAS,GAG1FyyG,EAAoB,SAAS10G,EAAQ+kD,EAAQ5U,GAC3C,OAAOzjC,EAAG86D,KAAKxnE,GAAQ,SAAS+9G,EAAQC,GACtC,IAAID,EAIJ,OAAOrxG,EAAG86D,KAAKziB,GAAQ,SAASk5D,EAAQC,GACtC,IAAID,GAA0B,WAAhBA,EAAOxvD,KAIrB,OAAOte,OAAS,EAAQnwC,EAAOoL,gBAAkB25C,EAAO35C,eAAiB4yG,EAAQ1c,MAAQ4c,EAAQ5c,KAAO0c,EAAQzc,MAAQ2c,EAAQ3c,KAH9HpxD,OAAS,GAAQ,MALnBA,EAAS4tE,OAafpJ,EAAwB,SAAS30G,EAAQ+kD,GACvC,IAAIm5D,EAASF,EAGb,OAFAA,EAAUlJ,EAAoB90G,GAC9Bk+G,EAAUpJ,EAAoB/vD,IACxBi5D,IAAWE,GAGVl+G,EAAOoL,gBAAkB25C,EAAO35C,eAAiB4yG,EAAQ1c,MAAQ4c,EAAQ5c,KAAO0c,EAAQzc,MAAQ2c,EAAQ3c,KAGjH4c,GAAiB,IAAIC,MAAM,GAAI,CAC7B79G,IAAK,SAASwkD,EAAQ3kD,GACpB,IAAI0yE,EACJ,OAA+B,OAAvBA,EAAO0hC,EAAOp0G,IAAgB0yE,EAAOpmE,EAAGtM,IAElDqJ,IAAK,SAASs7C,EAAQ3kD,EAAKc,GACzB,OAAOszG,EAAOp0G,GAAOc,OAIxBiC,KAnuBHg7G,ICAO,MAAME,GACT/3G,YAAYqM,GACRjM,KAAKiM,MAAQA,EACbjM,KAAK43G,MAAQzxG,KAAK2kD,UAAU+sD,gBAAgB,CACxCrlC,MAAM,EACNslC,aAAa,EACbC,yBAAyB,IAE7B/3G,KAAK8O,QAAU3I,KAAKgkD,MAAMxF,QAAQ3kD,KAAK43G,OACvC53G,KAAK43G,MAAMjtD,QAAQ1+C,EAAM+rG,aACrB/rG,EAAM6lE,UACN9xE,KAAK43G,MAAM9lC,YAGX9xE,KAAK43G,MAAMpnD,gBAAgBynD,wBAE/Bj4G,KAAKk4G,cACLl4G,KAAKm4G,aACLn4G,KAAK43G,MAAMhtD,uBAAuB,CAAC,EAAG,IAE1CmC,aAAa9gD,GACTjM,KAAK8O,QAAU3I,KAAKgkD,MAAMxF,QAAQ3kD,KAAK43G,OACvC53G,KAAKiM,MAAQ,IAAKjM,KAAKiM,SAAUA,GACjCjM,KAAKk4G,cACLl4G,KAAKm4G,aAET3nC,QACIxwE,KAAK8O,QAAQ0hE,QAEjB4nC,WACI,OAAOp4G,KAAK43G,MAEhBM,cACIl4G,KAAK43G,MAAMM,cAAcl4G,KAAKiM,MAAMosG,UAExCF,kBAC+BrmG,IAAvB9R,KAAKiM,MAAMqsG,QACXnyG,KAAKoyG,YAAYC,mBAAmBx4G,KAAK43G,MAAO53G,KAAKiM,MAAMqsG,SAG3DnyG,KAAKoyG,YAAYE,qBAAqBz4G,KAAK43G,QCpCvD,MAAMc,GACF94G,YAAYqM,GACRjM,KAAKiM,MAAQA,EACbuJ,GAAKZ,WAAW5U,MAEpB+sD,aAAa9gD,GACTjM,KAAKiM,MAAQ,IAAKjM,KAAKiM,SAAUA,SAC3BuJ,GAAK/E,OAAOzQ,MAEtBsO,SACI,OAAQkH,GAAKzJ,IAAI,MAAO,CAAEc,UAAW,qBAAsB+B,IAAK,QAC5D4G,GAAKzJ,IAAI,MAAO,CAAEc,UAAW,SACzB2I,GAAKzJ,IAAI,MAAO,KACZyJ,GAAKzJ,IAAI,OAAQ,CAAE6C,IAAK,SAAW5O,KAAKiM,MAAM0sG,OAC9CnjG,GAAKzJ,IAAI,OAAQ,CAAEc,UAAW,uBAC1B2I,GAAKzJ,IAAI,OAAQ,KAAM,0BACvByJ,GAAKzJ,IAAI,OAAQ,CAAEc,UAAW,aAAe,OAC7C2I,GAAKzJ,IAAI,OAAQ,KAAM,8BACvByJ,GAAKzJ,IAAI,OAAQ,CAAEc,UAAW,aAAe,SAC7C2I,GAAKzJ,IAAI,OAAQ,KAAM,WAC/ByJ,GAAKzJ,IAAI,MAAO,CAAEc,UAAW,wBACzB2I,GAAKzJ,IAAI,MAAO,CAAEc,UAAW,oBACzB2I,GAAKzJ,IAAL6sG,GAAqB,CAAEhqG,IAAK,SAAUopG,YAAah4G,KAAKiM,MAAM+rG,YAAalmC,UAAW9xE,KAAKiM,MAAM6lE,cACzG9xE,KAAK64G,4BAEjB9rD,sBACUv3C,GAAKnD,QAAQrS,MAEvBwwE,QACI,OAAOxwE,KAAK0O,KAAKs6C,OAAOwnB,QAE5BgD,UACI,OAAOxzE,KAAK0O,KAAKs6C,OAAOovD,WAAW5kC,UAEvCqlC,0BACI,YAAqC/mG,IAAjC9R,KAAKiM,MAAM6sG,kBACJtjG,GAAKzJ,IAAI,MAAO,CAAEc,UAAW,mBAAqB7M,KAAKiM,MAAM6sG,mBAEjE,MAIR5yG,eAAe6yG,GAAiB94G,GACnC,MAAM8yE,EAAO,IAAI2lC,GAAW,CACxBC,MAAO14G,EAAQ04G,MACfX,YAAa/3G,EAAQoM,KACrBylE,UAAW7xE,EAAQ+4G,aAEjBhkC,EAAQ7uE,KAAK2kD,UAAU0qB,cAAc,CACvCzC,KAAAA,EACA9K,SAAU,MAERgN,EAAezmE,SAAS0mE,cAC9BnC,EAAKvC,QACL,MAAMlB,EAAc,IAAI9gB,EACxB,IACI,aAAa,IAAItyD,SAASwJ,IACtB4pE,EAAYvoE,IAAIZ,KAAK4qE,SAAShqE,IAAIgsE,EAAKrkE,KAAK+0D,KAAM,CAC9CiO,cAAe,KACXhsE,OAAQoM,IAEZ0/D,eAAgB,KACZ,MAAMsR,EAAU/P,EAAKS,UACfylC,EAAUh5G,EAAQi5G,WAAWp2B,GAC/Bm2B,EACA7qD,GAAc2kB,EAAKtiE,OAAO,CAAEqoG,kBAAmBG,KAGnDvzG,EAAQo9E,UAbxB,QAmBI9N,EAAM3iE,UACNi9D,EAAYjkB,UACR4pB,GACAA,EAAazE,SC3DlB,SAAS2oC,GAAiB5hC,GAC7B,MAAMpsB,EAAO,IAAIqD,EACjB,IAAK,MAAM4tB,KtChBJrL,GsCiBH,GAAqB,qBAAjBqL,EAAI1G,SAAiC,CACrC,MAAM/zE,EAAIy6E,EAAIzG,KAAK4B,GACnBpsB,EAAKpkD,IAAIZ,KAAK4qE,SAAShqE,IAAIq1E,EAAI1G,SAAU0G,EAAIpoB,QAAS,IAC/CryD,EACHorD,kBAAkBtyD,GACd,IACI,MAAMuuD,EAASvuD,EAAEyzD,cAAckqD,WAC3B5oD,GAA2BxG,SACrBrnD,EAAE6gF,YAAYx5B,GAAQ,IAAMvuD,EAAE2+G,qBAGpC3+G,EAAE2+G,kBACEC,GAAoBrwD,IACpB7iD,KAAK+O,cAAcokG,WAAW,0EAA2E,CACrG9hC,YACK,uFAA8B4E,EAAIpoB,+FAEvCz+C,aAAa,KAK7B,MAAOy5C,GACHuqD,GAAOvqD,YAKlB,CACD,MAAMrtD,EAAIy6E,EAAIzG,KAAK4B,GACnBpsB,EAAKpkD,IAAIZ,KAAK4qE,SAAShqE,IAAIq1E,EAAI1G,SAAU0G,EAAIpoB,QAAS,IAC/CryD,EACHorD,oBACI,UACUprD,EAAE6gF,cAEZ,MAAOxzB,GACHuqD,GAAOvqD,QAM3B,OAAO7D,EAEX,SAASouD,GAAOtkG,GACZ9O,KAAK+O,cAAcC,cAAc,2CAA4C,CACzEE,OAAQJ,EAAIG,QACZG,aAAa,EACbD,MAAOL,EAAIK,QCvEnBgiE,GAAW,mBAAoB,0BAA2BC,IAAD,CACrDC,YAAa,sBACbzqB,kBAAkB/D,GACd,MAAMkf,EAAWlf,EAAOC,UAExB,IAAKif,EACD,OACJ,MAAMsxC,QAAoBC,GAAiB,CACvCT,YAAY,EACZL,MAAO,cACPtsG,KAAM67D,EACNgxC,WAAap2B,GACJA,EAAQ5iF,OAGN,GAFI,6CAMnB,IAAKs5G,EACD,OACJ,MAAM7qD,QAAe4oB,EAAK7oB,UAAUwZ,GAC9BwxC,QAAiB/qD,EAAOC,QAAQ,wBAAyB,CAC3D+qD,YAAazxC,EACb0xC,YAAaJ,UAEXjiC,EAAKuC,WAAW4/B,EAAS7qD,YACzB,IAAI3yD,SAAQ,CAACwJ,EAASo2C,KACxB27D,GAAGnH,KAAKpoC,EAAUsxC,GAAcvkG,IACxBA,EACA6mC,EAAO7mC,IAEP+zC,EAAO0B,YAAYmvD,QAAQL,GAC3B9zG,gBAjCpB4xE,GCAW,mBAAoB,8BAA+BC,IAAD,CACzDC,YAAa,wDACbzqB,kBAAkB/D,GACd,MAAMkf,EAAWC,GAAoBnf,GACrC,IAAKkf,EACD,OACJ,MAAMvZ,QAAe4oB,EAAK7oB,UAAUwZ,EAASphB,MACvC4yD,QAAiB/qD,EAAOC,QAAQ,SAAUsZ,IAC1C4xC,KAAEA,EAAFC,KAAQA,GAASL,EAAS7qD,KAChC,IAAKirD,EAAKE,UAEN,YADA7zG,KAAK+O,cAAcgrE,QAAQ,mDAG/B,MAAM+5B,QAAgBR,GAAiB,CACnCT,YAAY,EACZL,MAAO,kBACPtsG,KAAMytG,EAAKI,YACXhB,WAAap2B,GACLA,EAAQv/E,QAAQ,MAAO,MAAQu/E,EAAQ5iF,OAChC,4CAEN4iF,EAAQ5iF,OAGN,GAFI,kDAKH4R,IAAZmoG,SACM1iC,EAAKuC,WAAWigC,EAAKn5G,KAAKolD,IAAD,CAC3Bm0D,SAAUn0D,EAAKc,KACfszD,YAAap0D,EAAK+zD,KAAKn5G,KAAKglD,IAAD,IAAeA,EAAKk9B,QAASm3B,gBChCxE3iC,GAAW,iBAAkB,kCAAmCC,IAAD,CAC3DC,YAAa,2DACbzqB,oBACIwqB,EAAK8iC,sBAHb/iC,GCAW,iBAAkB,sCAAuCC,IAAD,CAC/DC,YAAa,uEACbzqB,0BACUwqB,EAAK+iC,kBAGnBhjC,GAAW,iBAAkB,2CAA4CC,IAAD,CACpEC,YAAa,uEACbzqB,0BACUwqB,EAAKgjC,uBCTnBjjC,GAAW,mBAAoB,mCAAoCC,IAAD,CAC9DC,YAAa,+BACbgL,cACIjL,EAAKijC,oCAHbljC,GCAW,mBAAoB,2BAA4BC,IAAD,CACtDC,YAAa,oDACbgL,YAAA,MAAkB54B,GACP2tB,EAAKkjC,cAAc7wD,OAHlC0tB,GCAW,mBAAoB,kCAAmCC,IAAD,CAC7DC,YAAa,8DACbgL,YAAA,MAAkB54B,GACP2tB,EAAKmjC,cAAc9wD,OAGlC0tB,GAAW,mBAAoB,kCAAmCC,IAAD,CAC7DC,YAAa,4CACbzqB,kBAAkBnD,EAAIw7C,GACb7tB,EAAKojC,cAAc/wD,IACpBw7C,SAGZ9tB,GAAW,mBAAoB,kCAAmCC,IAAD,CAC7DC,YAAa,wCACbzqB,kBAAkBnD,EAAIw7C,GACb7tB,EAAKqjC,cAAchxD,EAAI,IACxBw7C,SAGZ9tB,GAAW,mBAAoB,kCAAmCC,IAAD,CAC7DC,YAAa,4CACbzqB,kBAAkBnD,EAAIw7C,GACb7tB,EAAKqjC,cAAchxD,GAAK,IACzBw7C,SCxBZ9tB,GAAW,mBAAoB,kCAAmCC,IAAD,CAC7DC,YAAa,uCACbzqB,kBAAkB/D,GACduuB,EAAKsjC,sBAAsB7xD,QAGnCsuB,GAAW,mBAAoB,qCAAsCC,IAAD,CAChEC,YAAa,uCACbzqB,kBAAkB/D,GACduuB,EAAKujC,yBAAyB9xD,QCT/B,MAAM+xD,GACTn7G,YAAYqM,EAAOC,GACflM,KAAKkM,SAAWA,EAChBlM,KAAKiM,MAAQ,IACNA,EACHkoC,MAAO,CAAE6mE,KAAM,EAAGC,KAAM,IAE5BzlG,GAAKZ,WAAW5U,MAChBA,KAAKk7G,kBAAoB/0G,KAAKg1G,SAASp0G,IAAI/G,KAAK8O,QAAS9O,KAAKiM,OAElE8gD,aAAa9gD,EAAOC,GAChBlM,KAAKiM,MAAQ,IAAKjM,KAAKiM,SAAUA,GACjCjM,KAAKkM,SAAWA,QACVsJ,GAAK/E,OAAOzQ,MAClBA,KAAKk7G,kBAAkB7vD,UACvBrrD,KAAKk7G,kBAAoB/0G,KAAKg1G,SAASp0G,IAAI/G,KAAK8O,QAAS9O,KAAKiM,OAElEqC,SACI,OAAOkH,GAAKzJ,IAAI,MAAO,CAAEc,UAAW,gBAAkB7M,KAAKkM,SAAWlM,KAAKkM,SAAW,MAE1F6gD,sBACUv3C,GAAKnD,QAAQrS,MACnBA,KAAKk7G,kBAAkB7vD,WClBxB,MAAM+vD,GACTx7G,YAAYqM,GACRjM,KAAKq7G,mBAAoB,EACzBr7G,KAAKsvE,YAAc,IAAI9gB,EACvBxuD,KAAKs7G,mBAAqB,KACjBt7G,KAAKiM,MAAMsvG,YAAY7mD,SACxBvuD,KAAK+O,cAAcoiD,SAAS,eAAgB,CACxCjiD,OAAQrV,KAAKiM,MAAMsvG,YAAYnmG,QAC/BG,aAAa,KAIzBvV,KAAKiM,MAAQ,IACNA,GAEPjM,KAAKw7G,mBAAmBr1G,KAAKkgD,OAAOxsD,IAAI,mBAAmB4hH,oBAC3Dz7G,KAAK07G,0BACLlmG,GAAKZ,WAAW5U,MAChBA,KAAKsvE,YAAYvoE,IAAIZ,KAAKkgD,OAAOopB,YAAY,sCAAsC,EAAG5hE,SAAAA,MAClF7N,KAAKw7G,mBAAmB3tG,GACxBugD,GAAcpuD,KAAKyQ,OAAO,SAGlCs8C,aAAa9gD,GACT,MAAM0vG,OAA4C7pG,IAAtB7F,EAAMsvG,aAC9BtvG,EAAMsvG,YAAY7mD,UAAY10D,KAAKiM,MAAMsvG,YAAY7mD,QACzD10D,KAAKiM,MAAQ,IAAKjM,KAAKiM,SAAUA,GAC7B0vG,GACA37G,KAAK07G,gCACHlmG,GAAK/E,OAAOzQ,MAEtBsO,SACI,GAAItO,KAAKq7G,kBACL,OAAO7lG,GAAKzJ,IAAI,OAAQ,MAC5B,IAAI6vG,EACAvvG,EASJ,OARIrM,KAAKiM,MAAMsvG,YAAY7mD,SACvBknD,EAAM,oBACNvvG,EAAO,iBAGPuvG,EAAM,kBACNvvG,EAAO,eAEHmJ,GAAKzJ,IAAL8vG,GAAkB,CAAElD,MAAO34G,KAAKiM,MAAMsvG,YAAY7mD,QAChD,uBACA,6CACNl/C,GAAKzJ,IAAI,OAAQ,CAAEc,UAAW+uG,EAAKjvG,GAAI,CAAE8gD,MAAOztD,KAAKs7G,qBAAwBjvG,IAErF0gD,sBACUv3C,GAAKnD,QAAQrS,MAEvB07G,0BACI17G,KAAKq7G,mBAAoB,EACrBr7G,KAAKiM,MAAMsvG,YAAY7mD,SACvB10D,KAAK87G,kBAGbN,mBAAmBhhH,GAEXwF,KAAK87G,gBADLthH,EAAQ,EACe6yD,GAAAza,UAAS,KAC5B5yC,KAAKq7G,mBAAoB,EACzBjtD,GAAc54C,GAAK/E,OAAOzQ,SACnB,IAARxF,GAEY,IAAVA,EACkB,KACnBwF,KAAKq7G,mBAAoB,GAIN,QCxE5B,MAAMU,GACTn8G,YAAYqM,GACRjM,KAAKiM,MAAQ,IACNA,GAEPuJ,GAAKZ,WAAW5U,MAEpB+sD,aAAa9gD,GACTjM,KAAKiM,MAAQ,IAAKjM,KAAKiM,SAAUA,SAC3BuJ,GAAK/E,OAAOzQ,MAEtBsO,SACI,OAAQkH,GAAKzJ,IAAL8vG,GAAkB,CAAElD,MAAO,IAAM34G,KAAKiM,MAAM+vG,aAAat6D,WAAW,aAClE,mBACC,iBAAgBv7C,KAAKowE,QAAQC,WAAWx2E,KAAKiM,MAAM+vG,eAC1DxmG,GAAKzJ,IAAI,IAAK,CAAEc,UAAW,eAAgBovG,KAAM,GAAItvG,GAAI,CACjD8gD,MAAQquB,IACJA,EAAIlH,iBACJ50E,KAAKk8G,oBAERl8G,KAAKiM,MAAM+vG,aAAat6D,WAAW,aACtC,aACAwF,GAiBwBkB,EAjBiBpoD,KAAKiM,MAAM+vG,aAkB3D,IAAM71G,KAAKowE,QAAQC,WAAWpuB,OADzC,IAA0CA,EAftC2E,sBACUv3C,GAAKnD,QAAQrS,MAEvBk8G,iBACSl8G,KAAKiM,MAAM+vG,aAAat6D,WAAW,aAIpCv7C,KAAK+O,cAAcgrE,QAAQ,gCAH3B9xB,GAAcjoD,KAAK2kD,UAAU00B,KAAKx/E,KAAKiM,MAAM+vG,gBC5BlD,MAAMG,GACTv8G,YAAYqM,EAAQ,IAChBjM,KAAKiM,MAAQ,CACTgnE,SAAS,EACTmpC,QAAS,GACTC,SAAU,CAAE7oF,IAAK,EAAGh5B,MAAO,MACxByR,GAEPuJ,GAAKZ,WAAW5U,MAEpB+sD,aAAa9gD,GACTjM,KAAKiM,MAAQ,IAAKjM,KAAKiM,SAAUA,SAC3BuJ,GAAK/E,OAAOzQ,MAEtBsO,SACI,OAAQkH,GAAKzJ,IAAI,kBAAmB,CAAEc,UAAW7M,KAAKiM,MAAMgnE,QAAU,GAAK,QACvEjzE,KAAKs8G,gBACLt8G,KAAKu8G,gBACLv8G,KAAKw8G,mBACLx8G,KAAKy8G,eACLz8G,KAAK08G,kBAEb3vD,sBACUv3C,GAAKnD,QAAQrS,MAEvBqrD,UACI+C,GAAcpuD,KAAKqS,WAEvB06C,mBACU/sD,KAAKyQ,OAAO,CAAEwiE,SAAS,IAEjClmB,mBACU/sD,KAAKyQ,OAAO,CAAEwiE,SAAS,IAEjCqpC,gBACI,YAAiCxqG,IAA7B9R,KAAKiM,MAAM0wG,cACJnnG,GAAKzJ,IAAL8vG,GAAkB,CAAElD,MAAO,6BAA+B34G,KAAKiM,MAAM0wG,eAEzE,KAEXJ,gBACI,OAAIv8G,KAAKiM,MAAMmwG,QAAQ7gH,OAAS,EACpBia,GAAKzJ,IAAL8vG,GAAkB,CAAElD,MAAQ,yBAAwB34G,KAAKiM,MAAMmwG,QAC9Dx7G,KAAI,EAAG+3G,MAAAA,KAAa,OAAMA,WAC1B53G,KAAK,WAAYmpE,MAAM,GAC5B10D,GAAKzJ,IAAI,OAAQ,CAAE6C,IAAK,kBAAoB5O,KAAKiM,MAAMmwG,QAAQ7gH,OAAOe,YACtEkZ,GAAKzJ,IAAI,OAAQ,CAAE6C,IAAK,iBAAkB/B,UAAW,4CAA6CkB,MAAO,CAAE6uG,WAAY,MAAOC,QAAS,MAAOC,cAAe,UAG1J,KAEfN,mBACI,YAAgC1qG,IAA5B9R,KAAKiM,MAAM+vG,aACJxmG,GAAKzJ,IAALgxG,GAAqB,CAAEf,aAAch8G,KAAKiM,MAAM+vG,eAEpD,KAEXS,eACI,OAAIz8G,KAAKiM,MAAMsvG,YACJ/lG,GAAKzJ,IAALixG,GAAsB,CAAEzB,YAAav7G,KAAKiM,MAAMsvG,cAEpD,KAEXmB,iBACI,OAAI18G,KAAKiM,MAAMowG,SAAS7hH,MAAQwF,KAAKiM,MAAMowG,SAAS7oF,IACxChe,GAAKzJ,IAAI,WAAY,CAAEgC,MAAO,CAAE+uG,cAAe,YAAcjwG,UAAW,eAAgB2mB,IAAKxzB,KAAKiM,MAAMowG,SAAS7oF,IAAKh5B,MAAOwF,KAAKiM,MAAMowG,SAAS7hH,QAEtJ,MCpER,MAAMyiH,GACTr9G,YAAYs9G,EAAsB,IAC9Bl9G,KAAKk9G,oBAAsBA,EAE/BnwD,eACI,OAAO/sD,KAAKm9G,UAAU,GAE1BpwD,gBAAgBlwB,GACZ,IAAIyhB,EACJ,KAAOzhB,KAAU,GACbyhB,EAAWt+C,KAAKk9G,oBAAoB94G,MACxC,GAAKk6C,EAIL,OAAOt+C,KAAKw/E,KAAK,CACb14B,KAAMxI,EAASwI,KACf1iB,MAAO,CAAEohB,KAAMlH,EAASkH,KAAMhlC,OAAQ89B,EAAS99B,UAL/Cra,KAAK+O,cAAcgrE,QAAQ,wCAQnCnzB,gBAAgBqwD,EAAerqC,GAC3B,MAAM7K,EAAWC,GAAoBi1C,GACrC,GAAIl1C,EAAU,CACVloE,KAAKk9G,oBAAoB77G,KAAK6mE,GAC9B,MAAMm1C,EAAW,IACbr9G,KAAKk9G,oBAAoB3hH,OAAS8hH,GAClCr9G,KAAKk9G,oBAAoB5wG,OAAO,EAAGtM,KAAKk9G,oBAAoB3hH,OAAS8hH,GAG7E,OAAOr9G,KAAKw/E,KAAKzM,GAErBhmB,oBACI,MAAMuH,QAAY8hB,GAAe,CAC7BpG,MAAOhwE,KAAKs9G,aACP1hH,QACAo4B,UACApzB,KAAI,CAACmyE,EAAMoT,KAAP,IAAqBpT,EAAMoT,IAAAA,MACpCrR,aAAc,CAAC/B,EAAMsD,IAAS7gE,GAAKzJ,IAAI,KAAM,CAAEc,UAAW,aACtD2I,GAAKzJ,IAAI,MAAO,CAAEc,UAAW,gBACzB2I,GAAKzJ,IAALuqE,GAA6B,CAAElvB,MAAO2rB,EAAKjsB,KAAMmkB,MAAOoL,EAAI5C,oBAChEj+D,GAAKzJ,IAAI,MAAO,CAAEc,UAAW,kBACzB,SACAkmE,EAAKvtB,KACL,aACAutB,EAAKvyD,SACbu0D,cAAe,SAEfzgB,SACMt0D,KAAKm9G,UAAU7oD,EAAI6xB,IAAM,GAEvCm3B,aACI,OAAOt9G,KAAKk9G,oBAEhB7xD,WAGAkG,YACI,OAAOvxD,KAAKk9G,oBAEhBnwD,WAAWgmB,GACP,MAAM/pB,QAAe7iD,KAAK2kD,UAAU00B,KAAKzM,EAAKjsB,KAAM,CAChD44B,YAAa3M,EAAK3uC,MAAMohB,KAAO,EAC/Bm6B,cAAe5M,EAAK3uC,MAAM5jB,OAAS,EACnCi/D,gBAAgB,IAKpB,OAHIt5E,KAAK2kD,UAAUyyD,aAAav0D,IAC5BA,EAAOw0D,uBAAuB,CAAEC,QAAQ,IAErCz0D,GCpER,MAAM00D,GACT99G,YAAY8uD,EAAW1F,GAMnB,IAAI20D,EACAC,EACAC,EAPJ79G,KAAK0uD,UAAYA,EACjB1uD,KAAKgpD,OAASA,EACdhpD,KAAKsvE,YAAc,IAAI9gB,EACvBxuD,KAAK89G,kBAAoB,GACzB99G,KAAK+9G,UAAW,EAIhB,IAAIC,GAAkB,EACtBh+G,KAAKsvE,YAAYvoE,IAAIZ,KAAKkgD,OAAOwsB,QAAQ,sDAAuDwiB,IAC5FsoB,EAAkBtwD,GAAAza,UAAS,KACvBwb,GAAcpuD,KAAKyQ,YACpB4kF,GACHwoB,EAAoB,IAANxoB,KACdrsC,EAAOyG,2BAA0B,UACR39C,IAArB8rG,EACAD,IAEAK,GAAkB,KACtBh1D,EAAOi1D,iBAAgB,IAAMN,MAAoB30D,EAAOk1D,oBAAmB,IAAMP,MAAoB30D,EAAOymB,aAAY,UAC/F39D,IAArB8rG,GACArrF,aAAaqrF,GACjBA,EAAmBvjH,OAAOs4B,YAAW,KAC7BqrF,IACAL,IACAK,GAAkB,GAEtBJ,OAAmB9rG,IACpB+rG,OAGXxyD,UACQrrD,KAAK+9G,WAET/9G,KAAK+9G,UAAW,EAChB/9G,KAAKsvE,YAAYjkB,UACjBrrD,KAAKm+G,gBAETA,eACI,IAAK,MAAMC,KAAUp+G,KAAK89G,kBACtBM,EAAO/rG,UAEXrS,KAAK89G,kBAAoB,GAE7B/wD,eACI,GAAI/sD,KAAK+9G,SACL,OACJ,IAAKvuD,GAA2BxvD,KAAKgpD,QAEjC,YADAhpD,KAAKm+G,eAGT,MAAM/1D,EAAWpoD,KAAKgpD,OAAOC,UAC7B,QAAiBn3C,IAAbs2C,EACA,OACJ,MAAMuG,QAAe3uD,KAAK0uD,UAAUtG,GACpC,GAAIpoD,KAAK+9G,SACL,OACJ,MAAMv0D,EAAMxpD,KAAKgpD,OAAOwH,gBAAgB6tD,oBACxC,IACI,MAAMr+F,QAAe2uC,EAAOC,QAAQ,qBAAsB,CACtD9H,KAAMsB,EACN5C,KAAMgE,EAAI/D,IAAM,EAChBjlC,OAAQgpC,EAAI9D,OAAS,EACrB0iB,cAAe,CAAChgB,KAEpB,GAAIpoD,KAAK+9G,SACL,OACJ,MAAMO,EAAuB/3G,MAAMglD,KAAKvrD,KAAKu+G,wBAAwBv+F,EAAO6uC,OAC5E,IAAK,MAAMpvD,KAAKO,KAAK89G,kBACZQ,EAAqBviH,SAAS0D,IAC/BA,EAAE4S,UAEVrS,KAAK89G,kBAAoBQ,EAE7B,MAAO7jH,GACCJ,OAAOo6D,uBACP1F,QAAQC,MAAMv0D,IAG1BsyD,yBAAyBn2B,GACrB,IAAK,MAAMyxC,KAAYzxC,EACnB,GAAIyxC,EAASvhB,OAAS9mD,KAAKgpD,OAAOC,UAElC,IAAK,MAAMjD,KAAQqiB,EAASC,eAAgB,CACxC,MAAMplE,EAAQqlE,GAAYviB,GACpBw4D,EAAYx+G,KAAK89G,kBAAkB7rE,MAAMxyC,GAAMA,EAAEg/G,iBAAiBt/D,QAAQj8C,KAChF,GAAIs7G,QACMA,MACL,CACD,MAAMJ,EAASp+G,KAAKgpD,OAAO01D,gBAAgBx7G,GAC3ClD,KAAKgpD,OAAO21D,eAAeP,EAAQ,CAC/B7vE,KAAM,YACN3hC,MAAO,qCAELwxG,KClGnB,MAAMQ,GACTh/G,YAAY8uD,GACR1uD,KAAKsvE,YAAc,IAAI9gB,EACvBxuD,KAAKsvE,YAAYvoE,IAAIZ,KAAK2kD,UAAU+zD,oBAAoB71D,IACpD,MAAM81D,EAAa,IAAAC,GAAwBrwD,EAAW1F,GACtDhpD,KAAKsvE,YAAYvoE,IAAI+3G,EAAY91D,EAAOg2D,cAAa,KACjDh/G,KAAKsvE,YAAYh9D,OAAOwsG,GACxBA,EAAWzzD,kBAIvBA,UACIrrD,KAAKsvE,YAAYjkB,WCNlB,SAAS4zD,GAAsBnwG,EAASK,EAAQ+vG,EAAK11D,GAExD,IAEIc,EAFAo7B,EAAOw5B,EAAIv5B,MACXA,GAAQ,EAERw5B,EAAa,GAEjBrwG,EAAQf,MAAM23E,KAAO,GACrB52E,EAAQf,MAAMu8C,IAAM,GACpBx7C,EAAQf,MAAM43E,MAAQ,GACtB72E,EAAQf,MAAMqxG,OAAS,GACvB,MAAMC,EAAclwG,EAAOkwG,YACrBC,EAAMC,iBAAiBzwG,GACvB0wG,EAAcliG,SAASgiG,EAAI/0D,MAAO,IAClCk1D,EAAeniG,SAASgiG,EAAII,OAAQ,IAU1C,GARIh6B,EAAO85B,GAAeH,IACtB35B,EAAO25B,EAAcG,EAhBV,IAkBX95B,EAAO,IACPy5B,EAAa,WACbz5B,EApBW,GAqBXC,EArBW,IAuBH,WAARn8B,EAAkB,CAClB,MAAMm2D,EAAexwG,EAAOwwG,aAC5Br1D,EAAM40D,EAAIE,OAEN90D,EAAMm1D,GAAgBE,IACtBr1D,EAAM40D,EAAI50D,IAAMm1D,OAGP,QAARj2D,IACLc,EAAM40D,EAAI50D,IAAMm1D,EAEZn1D,EAAM,IACNA,EAAM40D,EAAIE,SAGlBtwG,EAAQf,MAAM23E,KAAUA,EAAF,KACtB52E,EAAQf,MAAMu8C,IAASA,EAAF,MACP,IAAVq7B,IACA72E,EAAQf,MAAM43E,MAAWA,EAAF,MACvBw5B,IACArwG,EAAQf,MAAMoxG,WAAaA,GCjD5B,MAAMS,GACThgH,YAAYuP,GACRnP,KAAKmP,OAASA,EACdnP,KAAKiM,MAAQ,CACTy5E,KAAM,EACNC,MAAO,EACPr7B,IAAK,EACL80D,OAAQ,GAEZ5pG,GAAKZ,WAAW5U,MAEpB+sD,gBACI,OAAOv3C,GAAKnD,QAAQrS,MAExB+sD,aAAa9gD,GAAO,IAAA4zG,EAAAC,EAAAC,OACyBjuG,KAArC,QAAA+tG,EAAA5zG,EAAM+zG,eAAN,IAAAH,OAAA,EAAAA,EAAenmC,qBACf,QAAAomC,EAAA7zG,EAAM+zG,eAAN,IAAAF,OAAA,EAAAA,EAAepmC,sBAAf,QAAAqmC,EAAqC//G,KAAKiM,MAAM+zG,eAAhD,IAAAD,OAAA,EAAqCA,EAAoBrmC,qBACzD15E,KAAKiM,MAAMg0G,iBAAcnuG,GAE7B9R,KAAKiM,MAAQ,IAAKjM,KAAKiM,SAAUA,QACN6F,IAAvB9R,KAAKiM,MAAM+zG,QACXhgH,KAAKiM,MAAMg0G,iBAAcnuG,OAEOA,IAA3B9R,KAAKiM,MAAMg0G,cAChBjgH,KAAKiM,MAAMg0G,YAAcjgH,KAAKiM,MAAMg0G,YAAcjgH,KAAKiM,MAAM+zG,QAAQhwC,MAAMz0E,OACvEyE,KAAKiM,MAAMg0G,YAAc,IACzBjgH,KAAKiM,MAAMg0G,aAAejgH,KAAKiM,MAAM+zG,QAAQhwC,MAAMz0E,eAErDia,GAAK/E,OAAOzQ,MAEtBqU,mBACI6rG,GAAsBlgH,KAAK8O,QAAS9O,KAAKmP,OAAQnP,KAAKiM,MAAO9F,KAAKkgD,OAAOxsD,IAAI,mBAAmBsmH,iBAEpG7xG,SACI,OAAQkH,GAAKzJ,IAAI,MAAO,CAAEc,UAAW,kCAAmCnT,IAAKsG,KAAKogH,eAC9E5qG,GAAKzJ,IAAI,MAAO,CAAEc,UAAW,iBAAmB7M,KAAKqgH,oBAE7DD,cACI,IAAKpgH,KAAKiM,MAAM+zG,QACZ,OACJ,MAAM57E,MAAEA,EAAFW,IAASA,GAAQ/kC,KAAKiM,MAAM+zG,QAAQM,eAC1C,MAAQ,GAAEl8E,EAAMohB,QAAQphB,EAAM5jB,UAAUukB,EAAIygB,QAAQzgB,EAAIvkB,SAE5D6/F,kBACI,IAAKrgH,KAAKiM,MAAM+zG,QACZ,MAAO,IACX,MAAMA,QAAEA,GAAYhgH,KAAKiM,MACnBg0G,OAAyCnuG,IAA3B9R,KAAKiM,MAAMg0G,YAA4BjgH,KAAKiM,MAAMg0G,YAAcD,EAAQtmC,kBACtFjqC,EAAQuwE,EAAQhwC,MAAMz0E,OACtB+xD,EAAU,CAAC,0CAIjB,SAASzgD,EAAUs5E,GACf,MAAMo6B,EAAa,GAOnB,OANIp6B,IAAQ65B,EAAQtmC,mBAChB6mC,EAAWl/G,KAAK,mDAEhB8kF,IAAQ85B,GACRM,EAAWl/G,KAAK,kDAEb,IAAIisD,KAAYizD,GAAYx/G,KAAK,KAE5C,OAbI0uC,EAAQ,GACR6d,EAAQjsD,KAAK,oDAYV2+G,EAAQhwC,MAAMpvE,KAAI,CAAC4/G,EAAKr6B,IAAS3wE,GAAKzJ,IAAI,MAAO,CAAEc,UAAWA,EAAUs5E,IAC3E3wE,GAAKzJ,IAAI,MAAO,KACZ00G,GAAWD,EAAIl5D,oBACftnD,KAAK0gH,oBAAoBF,EAAIj5D,WAAYy4D,EAAQxmC,eACjDinC,GAAWD,EAAI94D,oBACflyC,GAAKzJ,IAAI,MAAO,CAAEc,UAAW,wDAA0D4zG,GAAWD,EAAI74D,oBAElH+4D,oBAAoBC,EAAQC,GACxB,OAAOD,EAAO//G,KAAI,CAAClE,EAAG1B,IAAOwa,GAAKzJ,IAAI,OAAQ,CAAEc,UAAY,oDACxD7R,EAAI,EAAI,KAAO,KACfwa,GAAKzJ,IAAI,OAAQ,CAAEc,UAAW7R,IAAM4lH,EAAS,uDAAoD9uG,GAAa2uG,GAAW/jH,EAAE8qD,mBCvEhI,MAAMq5D,GACTjhH,YAAY23E,EAAMvuB,EAAQ2gB,GACtB3pE,KAAKu3E,KAAOA,EACZv3E,KAAKgpD,OAASA,EACdhpD,KAAK8gH,WAAY,EACjB9gH,KAAKsvE,YAAc,IAAIzpB,EAAK2I,oBAC5B,MAAMuyD,EAAU56G,KAAKgkD,MAAMxF,QAAQ3kD,KAAKgpD,QACxChpD,KAAK0kD,KAAO,IAAAs8D,GAAgBD,GAC5BA,EAAQ3xG,YAAYpP,KAAK0kD,KAAK51C,SAC9B,MAAM6uG,EAAkBtwD,GAAAza,SAAS5yC,KAAKihH,cAAcjxG,KAAKhQ,MAAO,IAAK,CAAEmzC,SAAS,IAChFnzC,KAAKsvE,YAAYvoE,IAAI/G,KAAKgpD,OAAOyG,2BAA2BqsB,IACxDnS,EAAWmS,EAAI5sB,kBACfd,GAAcuvD,EAAgBh0C,OAC9Bo3C,EAAQG,sBAAqB,KAC7B1tD,cAAa,IAAMxzD,KAAKmhH,sBAAsBx3C,QAC9Co3C,EAAQK,uBAAsB,KAC9B5tD,cAAa,IAAMxzD,KAAKmhH,sBAAsBx3C,SAElDvb,GAAcpuD,KAAKihH,cAAct3C,IAErC03C,aACI,OAAOrhH,KAAK8gH,UAEhBz1D,UACQrrD,KAAK8gH,YAET9gH,KAAK8gH,WAAY,EACjB9gH,KAAKsvE,YAAYjkB,UACjB+C,GAAcpuD,KAAK0kD,KAAKryC,YAE5B06C,oBAAoBx5C,GAChB,MAAM0sG,YAAEA,EAAFD,QAAeA,GAAYhgH,KAAK0kD,KAAKz4C,MACrCq1G,OAA6BxvG,IAAhBmuG,EACbA,OAC+BnuG,KAA/BkuG,MAAAA,OAAA,EAAAA,EAAStmC,mBACLsmC,MAAAA,OADJ,EACIA,EAAStmC,kBACT,QACJ15E,KAAK0kD,KAAKj0C,OAAO,CAAEwvG,YAAaqB,EAAa/tG,IAEvDw5C,oBAAoB4c,GAChB,GAAI3pE,KAAK8gH,UACL,OACJ,IAAIS,EACJ,IACIA,EAAcvhH,KAAKwhH,uBAAuB73C,GAE9C,MAAOlvE,GAEH,YADAs0D,QAAQ4F,KAAKl6D,GAGjB,MAAMw/F,QAAYj6F,KAAKyhH,WAAW93C,GAC9B3pE,KAAK8gH,YAEJ7mB,QAICj6F,KAAK0kD,KAAKj0C,OAAO,IAAK8wG,EAAavB,QAAS/lB,IAH9Cj6F,KAAKqrD,WAKb81D,sBAAsBx3C,GAClB,GAAI3pE,KAAK8gH,UACL,OACJ,MAAMS,EAAcvhH,KAAKwhH,uBAAuB73C,GAChDvb,GAAcpuD,KAAK0kD,KAAKj0C,OAAO,IAAK8wG,KAExCC,uBAAuB73C,GACnB,MAAMo3C,EAAU56G,KAAKgkD,MAAMxF,QAAQ3kD,KAAKgpD,QAClC04D,EAAWX,EAAQY,+BAA+Bh4C,GAElDi4C,EADQb,EAAQ/wD,cAAc,UACZ6xD,wBAClBC,EAAQ9hH,KAAKgpD,OAAO+4D,wBACpBC,EAAajB,EAAQc,wBACrBl9G,EAAI+8G,EAASp3D,IAAMs3D,EAAUt3D,IAAM03D,EAAW13D,IAAMw3D,EAAQ,EAC5D3+G,EAAIu+G,EAASh8B,KAAOk8B,EAAUl8B,KAAOs8B,EAAWt8B,KAChDllE,EAAiB,GAARshG,EACf,MAAO,CACHp8B,KAAMviF,EACNwiF,MAAOxiF,EACPmnD,IAAK3lD,EAAI6b,EACT4+F,OAAQz6G,EAAI6b,GAGpBusC,iBAAiB4c,GACb,IAAKna,GAA2BxvD,KAAKgpD,QACjC,OACJ,MAAMZ,EAAWpoD,KAAKgpD,OAAOC,UAC7B,QAAiBn3C,IAAbs2C,EACA,OACJ,MAAMuG,QAAe3uD,KAAKu3E,KAAK7oB,UAAUtG,GACzC,IAMI,aALqBuG,EAAOC,QAAQ,gBAAiB,CACjD9H,KAAMsB,EACN5C,KAAMmkB,EAASlkB,IAAM,EACrBjlC,OAAQmpD,EAASjkB,OAAS,KAEhBmJ,KAElB,MAAOp0D,GACH,SClGL,MAAMwnH,GACTriH,YAAY23E,GACRv3E,KAAKu3E,KAAOA,EACZv3E,KAAKuuD,cAAgB,IAAI1I,EAAK2I,oBAC9BxuD,KAAKkiH,UAAY,IAAIhuF,QACrBl0B,KAAKmiH,gBAAmBn5D,GAAY0E,IAChC,IAAKvnD,KAAKkgD,OAAOxsD,IAAI,0CACjB,OAEJ,QAAiBiY,IADAk3C,EAAOC,UAEpB,OACJ,MAAMO,EAAMR,EAAOwH,gBAAgB6tD,qBAC5BxkD,GAAMnM,EAAMyiB,QAAQltE,QAAQa,GAAMA,EAAEs+G,SAASC,cAAc74D,KAC9DqQ,GAAoC,OAA9BA,EAAGipB,QAAQ3iF,MAAM,UACvBiuD,GAAcpuD,KAAKsiH,YAAYt5D,EAAQQ,KAG/CxpD,KAAKuuD,cAAcxnD,IAAIZ,KAAK2kD,UAAU+zD,oBAAoB71D,IACtD,MAAMmC,EAAO,IAAItF,EAAK2I,oBACtBrD,EAAKpkD,IAAIiiD,EAAOg2D,cAAa,KACzB7zD,EAAKE,UACLrrD,KAAKuuD,cAAcj8C,OAAO64C,GAC1B,MAAM2zD,EAAa9+G,KAAKkiH,UAAUroH,IAAImvD,GAClC81D,GACAA,EAAWzzD,aACfrC,EAAO0G,kBAAkB1vD,KAAKmiH,gBAAgBn5D,KAClDhpD,KAAKuuD,cAAcxnD,IAAIokD,OAG/BE,UACIrrD,KAAKuuD,cAAclD,UACnB,IAAK,MAAMrC,KAAU7iD,KAAK2kD,UAAUy3D,iBAAkB,CAClD,MAAMzD,EAAa9+G,KAAKkiH,UAAUroH,IAAImvD,GAClC81D,GACAA,EAAWzzD,WAGvB0B,oBAAoB/D,GAChB,MAAM60B,EAAK70B,EAAOwH,gBAAgB6tD,oBAClC,OAAOr+G,KAAKsiH,YAAYt5D,EAAQ60B,GAEpC+8B,cAAc5xD,EAAQz1C,GAClB,MAAMurG,EAAa9+G,KAAKkiH,UAAUroH,IAAImvD,GACtC,SAAI81D,GAAeA,EAAWuC,gBAC1BjzD,GAAc0wD,EAAWlE,cAAcrnG,KAChC,GAMfivG,cAAcx5D,GACV,MAAM81D,EAAa9+G,KAAKkiH,UAAUroH,IAAImvD,GACtC,SAAI81D,GAAeA,EAAWuC,gBAC1BvC,EAAWzzD,WACJ,GAMf0B,kBAAkB/D,EAAQQ,GACtB,MAAMs1D,EAAa9+G,KAAKkiH,UAAUroH,IAAImvD,GACjC81D,IAAcA,EAAWuC,cAC1BrhH,KAAKkiH,UAAUn/G,IAAIimD,EAAQ,IAAAy5D,GAAsBziH,KAAKu3E,KAAMvuB,EAAQQ,KCpEzE,SAASk5D,GAAO5zG,EAAS4+C,EAAOgoB,EAAUjsC,GAC7C,MAAMq9C,EAAShL,IACX,MAAM6mC,EAAM7mC,EAAIz9B,OAAOukE,QAAQltC,GAC3BitC,GAAO7zG,EAAQ2hE,SAASkyC,IACxBl5E,EAASqyC,IAIjB,OADAhtE,EAAQmB,iBAAiBy9C,EAAOo5B,GACzB,IAAI3Y,GAAW,KAClBr/D,EAAQc,oBAAoB89C,EAAOo5B,MCPpC,MAAM84B,GACThgH,cACII,KAAK4pE,QAAU,KACf5pE,KAAKiM,MAAQ,CACTy5E,KAAM,EACNC,MAAO,EACPr7B,IAAK,EACL80D,OAAQ,GAEZ5pG,GAAKZ,WAAW5U,MAEpB+sD,gBACI,OAAOv3C,GAAKnD,QAAQrS,MAExB+sD,aAAa9gD,GACTjM,KAAKiM,MAAQ,IAAKjM,KAAKiM,SAAUA,GACjCjM,KAAK4pE,cAAgBC,GAAc7pE,KAAKiM,MAAM6tG,KAAzBtkG,IAAsC1R,GAAO0R,GAAKzJ,IAAI,MAAO,CAAEc,UAAW,wCAA0C/I,WACnI0R,GAAK/E,OAAOzQ,MAEtBqU,mBACI6rG,GAAsBlgH,KAAK8O,QAASN,SAASqgD,KAAM7uD,KAAKiM,MAAO9F,KAAKkgD,OAAOxsD,IAAI,mBAAmBgpH,iBAEtGv0G,SACI,OAAQkH,GAAKzJ,IAAI,MAAO,CAAEc,UAAW,mCACjC2I,GAAKzJ,IAAI,MAAO,CAAEc,UAAW,iBAAmB7M,KAAK4pE,WCzB1D,MAAMi3C,GACTjhH,YAAY8uD,EAAW1F,EAAQvuD,EAAGkvE,GAC9B3pE,KAAK0uD,UAAYA,EACjB1uD,KAAK8gH,WAAY,EACjB1yD,GAAcpuD,KAAK4U,WAAWo0C,EAAQvuD,EAAGkvE,IAE7Cte,UACIrrD,KAAK8gH,WAAY,EACb9gH,KAAK0kD,OACL0J,GAAcpuD,KAAK0kD,KAAKryC,WACxBrS,KAAK0kD,UAAO5yC,GAGpBi7C,iBAAiB/D,EAAQvuD,EAAGkvE,GACxB,MAAMo3C,EAAU56G,KAAKgkD,MAAMxF,QAAQqE,GAEnC,IAAI85D,EAAgBC,EACpB,IACID,EAAiB/B,EAAQY,+BAA+Bh4C,GACxDo5C,EAAkBhC,EAAQY,+BAA+Bh4C,EAAS6oC,SAAS,CAAC,EAAG,KAEnF,MAAO/3G,GAEH,YADAs0D,QAAQ4F,KAAKl6D,GAGjB,GAAIqoH,EAAep9B,MAAQq9B,EAAgBr9B,KACvC,OAEJ,MAAMllE,EAA0C,GAAjCwoC,EAAO+4D,wBAChBR,EAAc,CAChB77B,KAAMjrF,EAAEuoH,QACRr9B,MAAOlrF,EAAEuoH,QACT14D,IAAK7vD,EAAEwoH,QAAUziG,EACjB4+F,OAAQ3kH,EAAEwoH,QAAUziG,GAElBy5E,QAAYj6F,KAAKyhH,WAAWz4D,EAAQ2gB,GACtC3pE,KAAK8gH,gBAEGhvG,IAARmoF,SACMj6F,KAAKsiH,YAAYf,EAAatnB,GAE5CltC,iBAAiB/D,EAAQ2gB,GACrB,IAAI3pD,EACJ,MAAM2uC,QAAe3uD,KAAK0uD,UAAU1F,GACpC,IAAK2F,EACD,OACJ,MAAMvG,EAAWY,EAAOC,UACxB,IACI,QAAiBn3C,IAAbs2C,EACA,OAEJpoC,QAAe2uC,EAAOC,QAAQ,YAAa,CACvC9H,KAAMsB,EACN5C,KAAMmkB,EAASlkB,IAAM,EACrBjlC,OAAQmpD,EAASjkB,OAAS,IAGlC,MAAOjrD,GACH,OAEJ,OAAOulB,EAAO6uC,KAElB9B,kBAAkBw0D,EAAazH,GAC3B95G,KAAK0kD,KAAO,IAAAw+D,GACZ10G,SAASqgD,KAAKz/C,YAAYpP,KAAK0kD,KAAK51C,eAC9B9O,KAAK0kD,KAAKj0C,OAAO,IAAK8wG,EAAazH,KAAAA,KC3D1C,MAAMqJ,GACTvjH,YAAYwjH,GACRpjH,KAAKojH,kBAAoBA,EACzBpjH,KAAKuuD,cAAgB,IAAI1I,EAAK2I,oBAC9BxuD,KAAKkiH,UAAY,IAAIhuF,QACrBl0B,KAAK0uD,UAAYxoD,MAAAA,IAEb,MAAMkiD,EAAWY,EAAOC,UACxB,QAAiBn3C,IAAbs2C,GAECoH,GAAqCxG,IAGrChjD,EAAGupG,WAAWnnD,GAEnB,OAAOpoD,KAAKojH,kBAAkBh7D,IAGlCpoD,KAAKqjH,qBAAuB,UACKvxG,IAAzB9R,KAAKsjH,kBACL/wF,aAAavyB,KAAKsjH,iBAClBtjH,KAAKsjH,qBAAkBxxG,GAE3B9R,KAAKujH,sBAETvjH,KAAKwjH,mBAAsBx6D,IACvB,IAAIy6D,EACJ,OAAQhpH,IACJ,MAAMkvE,EPnCf,SAAsC3gB,EAAQ0E,GACjD,MAAMyzC,EAAKh7F,KAAKgkD,MAAMxF,QAAQqE,GAAQ06D,eAAeC,4BAA4Bj2D,GACjF,IAAIpsD,MAAM6/F,EAAG17C,OAAQnkD,MAAM6/F,EAAGz7C,QAG9B,OAAOsD,EAAO46D,gCAAgCziB,GO8BjB0iB,CAA6B76D,EAAQvuD,GACjDkvE,IAED85C,GAAwBA,EAAqBtkE,QAAQwqB,IAAa3pE,KAAK8jH,iBAG3EL,EAAuB95C,EACvB3pE,KAAKqjH,uBACLrjH,KAAKsjH,gBAAkBjpH,OAAOs4B,YAAW,IAAM3yB,KAAK+jH,mBAAmB/6D,EAAQvuD,EAAGkvE,IAAWxjE,KAAKkgD,OAAOxsD,IAAI,mBAAmBmqH,kBAGxIhkH,KAAKuuD,cAAcxnD,IAAIZ,KAAK2kD,UAAU+zD,oBAAoB71D,IACtD,MAAM+3D,EAAU56G,KAAKgkD,MAAMxF,QAAQqE,GAC7BoK,EAAQ2tD,EAAQ/wD,cAAc,UACpChwD,KAAKkiH,UAAUn/G,IAAIimD,EAAQ,CACvB+3D,QAAAA,EACA3tD,MAAAA,IAEJ,MAAMjI,EAAO,IAAItF,EAAK2I,oBACtBrD,EAAKpkD,IAAIk9G,GAAOlD,EAAS,YAAa,eAAgB/gH,KAAKwjH,mBAAmBx6D,IAAUi7D,GAAOlD,EAAS,WAAY,eAAgB/gH,KAAKqjH,sBAAuBY,GAAOlD,EAAS,UAAW,eAAgB/gH,KAAKqjH,sBAAuBtC,EAAQG,qBAAqBlhH,KAAKqjH,sBAAuBtC,EAAQK,sBAAsBphH,KAAKqjH,sBAAuBr6D,EAAOg2D,cAAa,KAC1W7zD,EAAKE,UACLrrD,KAAKuuD,cAAcj8C,OAAO64C,GAC1BnrD,KAAKqjH,2BAETrjH,KAAKuuD,cAAcxnD,IAAIokD,OAG/BE,UACIrrD,KAAKuuD,cAAclD,UACnBrrD,KAAKqjH,uBAETa,iBAAiBl7D,GACb,MAAM60B,EAAK70B,EAAOwH,gBAAgB6tD,oBAC5B35D,EAAOv+C,KAAKgkD,MAAMxF,QAAQqE,GAChC,IAAIm7D,EACJ,IACIA,EAAKz/D,EAAKi9D,+BAA+B9jC,GAE7C,MAAOpjF,GAEH,YADAs0D,QAAQ4F,KAAKl6D,GAGjBuF,KAAK+jH,mBAAmB/6D,EAAQhpD,KAAKokH,8BAA8Bp7D,EAAQm7D,GAAKtmC,GAEpFumC,8BAA8Bp7D,EAAQtsD,GAClC,MAEMklH,EAFUz7G,KAAKgkD,MAAMxF,QAAQqE,GACbgH,cAAc,UACZ6xD,wBACxB,MAAO,CACHoB,QAASvmH,EAAE4tD,IAAMs3D,EAAUt3D,IAAMtB,EAAO+4D,wBAA0B,EAClEiB,QAAStmH,EAAEgpF,KAAOk8B,EAAUl8B,MAGpCq+B,mBAAmB/6D,EAAQvuD,EAAGkvE,GACtB3pE,KAAK8jH,gBACL9jH,KAAK8jH,eAAez4D,UACxBrrD,KAAK8jH,eAAiB,IAAAO,GAAsBrkH,KAAK0uD,UAAW1F,EAAQvuD,EAAGkvE,GAE3E45C,qBACSvjH,KAAK8jH,iBAEV9jH,KAAK8jH,eAAez4D,UACpBrrD,KAAK8jH,oBAAiBhyG,IC9FvB,MAAMwyG,GACT1kH,YAAY8uD,GACR1uD,KAAK0uD,UAAYA,EACjB1uD,KAAKuuD,cAAgB,IAAIC,EACzB,MAAM+1D,EAAOp+G,KAAK2kD,UAAU05D,WzGPH,mCyGQrBD,IACAvkH,KAAK0kD,KAAO6/D,EAAKE,WzGTI,oCyGUrBzkH,KAAK0kD,MACL0J,GAAcpuD,KAAK0kD,KAAKwM,aAAalxD,KAAK0uD,YAC9C1uD,KAAKuuD,cAAcxnD,IAAI,IAAIonE,GAAW,KAC9BnuE,KAAK0kD,OACLv+C,KAAK2kD,UAAUmwD,KAAKj7G,KAAK0kD,MACzB0J,GAAcpuD,KAAK0kD,KAAKryC,eAE5BlM,KAAKkgD,OAAOwsB,QAAQ,oCAAqCwiB,IACrDA,EACAjnC,GAAcpuD,KAAKg7G,QAEnBh7G,KAAKi7G,WAGjB5vD,UACIrrD,KAAKuuD,cAAclD,UAEvB0B,eACS/sD,KAAK0kD,WAGAv+C,KAAK2kD,UAAU45D,OAAO1kH,KAAK0kD,YAF3B1kD,KAAKg7G,OAInBjuD,aACS/sD,KAAK0kD,OACN1kD,KAAK0kD,KAAOigE,GAAa9yF,OAAO,CAAEg7B,QAAS,aACrC7sD,KAAK0kD,KAAKwM,aAAalxD,KAAK0uD,kBAEhCvoD,KAAK2kD,UAAU00B,KAAKx/E,KAAK0kD,KAAM,CAAE+6B,gBAAgB,IAE3Dw7B,OACI,QAAKj7G,KAAK0kD,MAGCv+C,KAAK2kD,UAAUmwD,KAAKj7G,KAAK0kD,OC7CrC,MAAMkgE,GACThlH,YAAYqM,GACRjM,KAAKs+C,SAAWryC,EAAMqyC,SACtBt+C,KAAKgH,KAAOiF,EAAMjF,KAClBhH,KAAKuuC,KAAOtiC,EAAMsiC,KAClBvuC,KAAKmP,OAASlD,EAAMkD,OACpBnP,KAAK8mD,KAAO76C,EAAM66C,KAEtBiG,mBAAmBF,EAAS19C,GACxB,MAAMi1B,EAAQyoB,EAAQR,MAAM,GAAGjoB,MAC/B,OAAO,IAAIwgF,GAAI,CACX59G,KAAM6lD,EAAQxgD,KACdkiC,KAAMse,EAAQgB,KACdvP,SAAU,CAAEmH,IAAKrhB,EAAMohB,KAAO,EAAGE,OAAQthB,EAAM5jB,OAAS,GACxDrR,OAAkB,MAAVA,EAAiBA,EAAS,OAG1C49C,iBAAiB83D,EAAO11G,GACpB,MAAMi1B,EAAQygF,EAAMzgF,MACpB,OAAO,IAAIwgF,GAAI,CACX59G,KAAM69G,EAAM79G,KACZunC,KAAMs2E,EAAMh3D,KACZvP,SAAU,CAAEmH,IAAKrhB,EAAMohB,KAAO,EAAGE,OAAQthB,EAAM5jB,OAAS,GACxDrR,OAAkB,MAAVA,EAAiBA,EAAS,KAClC23C,KAAM+9D,EAAM/9D,QCvBjB5gD,eAAe4+G,GAAa18D,EAAUmvB,GACzC,MAAM1hB,QA8BV3vD,eAA0BkiD,EAAUmvB,GAChC,IACI,MAAM5oB,QAAe4oB,EAAK7oB,UAAUtG,GAEpC,aAD4BuG,EAAOC,QAAQ,UAAW,CAAE9H,KAAMsB,KACzCyG,KAEzB,MAAOp0D,GACHs0D,QAAQC,MAAM5G,EAAU3tD,IArCNsqH,CAAW38D,EAAUmvB,GAC3C,OAAI1hB,GAAWA,EAAQhK,WAEZtlD,MAAMglD,KAAKy5D,GAAanvD,EAAQhK,aAGhC,GAER3lD,eAAe++G,GAAgB78D,EAAUnF,EAAQs0B,GACpD,MAAM1hB,QA+BV3vD,eAAwBkiD,EAAUnF,EAAQs0B,GACtC,IACI,MAAM5oB,QAAe4oB,EAAK7oB,UAAUtG,GAOpC,aAN0BuG,EAAOC,QAAQ,QAAS,CAC9C9H,KAAMsB,EACN88D,iBAAiB,EACjBC,YAAaliE,EACbmiE,eAAgB,OAEDv2D,KAEvB,MAAOp0D,GACHs0D,QAAQC,MAAM5G,EAAU3tD,IA3CN4qH,CAASj9D,EAAUnF,EAAQs0B,GACjD,OAAI1hB,EACOtvD,MAAMglD,KAcrB,UAAqBsB,EAAS19C,GAC1B,IAAK,MAAM4jE,KAAQlmB,QACTy4D,GAAIC,UAAUxyC,EAAM5jE,GAhBRq2G,CAAW3vD,IAGtB,GAEf,SAAUmvD,GAAan4D,EAAS19C,GAC5B09C,EAAQ3pB,MAAK,CAACnpC,EAAGqJ,IAAMrJ,EAAEsyD,MAAM,GAAGjoB,MAAMohB,KAAOpiD,EAAEipD,MAAM,GAAGjoB,MAAMohB,OAChE,IAAK,MAAMutB,KAAQlmB,EAAS,CACxB,MAAM7gD,EAAMs5G,GAAIG,YAAY1yC,EAAM5jE,SAC5BnD,EACF+mE,EAAKlnB,mBACEm5D,GAAajyC,EAAKlnB,WAAY7/C,KCxB1C9F,eAAew/G,GAAQ15G,EAAKg9C,EAAQ6sB,GACvC,QAAiB/jE,IAAb9F,EAAI86C,KACJ,OAAO+uB,EAAc7sB,EAAQ,CACzBlC,KAAM96C,EAAI86C,KACV1iB,MAAO,CACHohB,KAAMx5C,EAAIsyC,SAASmH,IAAM,EACzBjlC,OAAQxU,EAAIsyC,SAASoH,OAAS,KCDvCx/C,eAAew+G,GAAO17D,EAAQuuB,GACjC,MAAMnvB,EAAWY,EAAOC,UACxB,QAAiBn3C,IAAbs2C,EAAwB,CAExB,IAAIu9D,EACAx/G,KAAKkgD,OAAOxsD,IAAI,wCAChB8rH,EDAL,SAA8B38D,GACjC,MACM48D,EADgBz/G,KAAKgkD,MAAMxF,QAAQqE,GACT68D,eAChC,MAAO,CACHC,aAAc98D,EAAO25B,0BACrBijC,UAAAA,GCLmBG,CAA2B/8D,IAE9C,MAAMh9C,QAAYoqE,GAAe,CAC7BpG,MAAOg2C,GAAa59D,EAAUmvB,GAC9BzC,aAAc,EAAG9tE,KAAAA,EAAMs3C,SAAAA,GAAY+3B,IAAS7gE,GAAKzJ,IAAI,KAAM,CAAEc,UAAW,aACpE2I,GAAKzJ,IAAI,MAAO,CAAEc,UAAW,gBACzB2I,GAAKzJ,IAALuqE,GAA6B,CAAElvB,MAAOpgD,EAAMikE,MAAOoL,EAAI5C,oBAC3Dj+D,GAAKzJ,IAAI,MAAO,CAAEc,UAAW,kBAAqB,SAAOyxC,EAASmH,IAAM,KAC5EyuB,mBAAmBnB,GAEX5sE,KAAKkgD,OAAOxsD,IAAI,uCAAyCk5E,GACzD/pB,EAAOsH,wBAAwByiB,EAAKz0B,WAG5Cy2B,cAAe,SAEf/oE,QACMi6G,GAAcj6G,EAAKg9C,EAAQuuB,EAAK1B,eACjC8vC,GDVV,SAAgC38D,GAAQ88D,aAAEA,EAAFF,UAAgBA,IAC3D,MAAM/1C,EAAgB1pE,KAAKgkD,MAAMxF,QAAQqE,GACzCA,EAAOk9D,wBAAwBJ,GAC/Bj2C,EAAcs2C,aAAaP,GCQnBQ,CAA6Bp9D,EAAQ28D,IC3B1C,MAAMU,GACTzmH,YAAY23E,GACRv3E,KAAKu3E,KAAOA,EAEhB+uC,eAAet9D,GACXoF,GAAcm4D,GAAev9D,EAAQhpD,KAAKu3E,OAE9CivC,kBAAkBx9D,GACdoF,GCNDloD,eAAsB8iD,EAAQuuB,GACjC,MAAMnvB,EAAWY,EAAOC,UACxB,QAAiBn3C,IAAbs2C,EAAwB,CACxB,MAAMp8C,QAAYoqE,GAAe,CAC7BpG,MAAQ/sB,GAAWwjE,GAAgBr+D,EAAUnF,EAAQs0B,GACrDzC,cAAa9tE,KAAEA,EAAFs3C,SAAQA,EAARwI,KAAkBA,GAAQuvB,GACnC,MAAMqwC,EAAUvgH,KAAKowE,QAAQC,WAAW1vB,GACxC,OAAQtxC,GAAKzJ,IAAI,KAAM,CAAEc,UAAW,aAChC2I,GAAKzJ,IAAI,MAAO,CAAEc,UAAW,gBACzB2I,GAAKzJ,IAALuqE,GAA6B,CAAElvB,MAAOpgD,EAAMikE,MAAOoL,EAAI5C,oBAC3Dj+D,GAAKzJ,IAAI,MAAO,CAAEc,UAAW,kBAAqB,QAAO65G,UAAgBpoE,EAASmH,IAAM,OAEhGsvB,cAAe,SAEf/oE,SACMi6G,GAAcj6G,EAAKg9C,EAAQuuB,EAAK1B,gBDT5B8wC,CAAkB39D,EAAQhpD,KAAKu3E,OAEjDlsB,YETG,MAAMu7D,GACThnH,cACII,KAAKs7D,OAAS,IAAInuD,IAClBnN,KAAK6mH,aAAe,IAAI15G,IACxBnN,KAAK8mH,WAAaz5D,GAAAza,SAAS5yC,KAAK8mH,WAAW92G,KAAKhQ,MAAO,KAE3D+sD,kBAAkB3E,EAAUllD,GACxB,IAAK,MAAM6jH,KAAY/mH,KAAKs7D,OAAO/6C,SAAU,CACzC,MAAM+6C,EAASyrD,EAASltH,IAAIsB,EAAKk/F,UAAUjyC,IACvCkT,UACOA,EAAOr4D,QAAQgS,GAAQszD,GAAYtzD,GAAK+xG,eAAe9jH,OAI1E6pD,aAAa3E,EAAUxC,GACnB,IAAK,MAAMmhE,KAAY/mH,KAAKs7D,OAAO/6C,SAAU,CACzC,MAAM+6C,EAASyrD,EAASltH,IAAIsB,EAAKk/F,UAAUjyC,IACvCkT,UACOA,EAAOr4D,QAAQgS,GAAQszD,GAAYtzD,GAAKotG,cAAcz8D,OAIzEqhE,UAAU3jE,EAAQ8E,EAAUkT,GACxB,IAAIyrD,EAAW/mH,KAAKs7D,OAAOzhE,IAAIypD,GAC1ByjE,IACDA,EAAW,IAAI55G,IACfnN,KAAKs7D,OAAOv4D,IAAIugD,EAAQyjE,IAE5BA,EAAShkH,IAAI5H,EAAKk/F,UAAUjyC,GAAWkT,GACvCt7D,KAAK8mH,aAETI,gBAAgB9+D,GACZ,IAAK,MAAMxnD,KAAOZ,KAAKs7D,OAAO/6C,SAC1B3f,EAAIiU,OAAOuzC,GAEfpoD,KAAK8mH,aAETr1G,QACSzR,KAAKmnH,QAEVnnH,KAAKmnH,OAAOC,gBAEhBC,UAAUF,GACNnnH,KAAKmnH,OAASA,EACdnnH,KAAK8mH,aAETz7D,UACIrrD,KAAKyR,QACDzR,KAAKmnH,QACLnnH,KAAKmnH,OAAO97D,UAChBrrD,KAAKmnH,YAASr1G,EAElBg1G,aACQ9mH,KAAKmnH,QACLnnH,KAAKmnH,OAAOG,eAAetnH,KAAKunH,mBAExCA,kBACI,GAAIphH,KAAKkgD,OAAOxsD,IAAI,0CAChB,MAAO,GACX,MAAMmmB,EAAS,GACf,IAAK,MAAMwnG,KAAcxnH,KAAKs7D,OAAO/6C,SACjC,IAAK,MAAO6nC,EAAU6e,KAAgBugD,EAAY,CAC9C,MAAM59D,EAAKzjD,KAAK2kD,UAAUy3D,iBAAiBtwE,MAAMnuC,GAAMA,EAAEmlD,YAAcb,IACjEe,EAAYS,EAAKA,EAAG69D,aAAat+D,UAAYnpD,KAAK0nH,cAAct/D,GACtE,IAAI/B,GAAO,yBAA0B8C,GAErC,IAAK,MAAMw+D,KAAc1gD,EAAa,CAClC,GAAI5gB,GAAO,yBAA0B8C,GAAWptD,SAAU,GAAE4rH,EAAW5/D,MACnE,SACJ,GAAI1B,GAAO,oCAAqC8C,IAC5Cw+D,EAAWC,mBACX,SAEJ,GAA4B,eAAxBD,EAAW3/D,UACX3B,GAAO,+BAAgC8C,GAAWptD,SAAU,GAAE4rH,EAAW5/D,MACzE,SAEJ,GAAI1B,GAAO,2CAA4C8C,IAC3B,eAAxBw+D,EAAW3/D,WACV6/D,GAAwBF,EAAW5/D,KAAM+/D,GAAmBC,YAC7D,SAIJ,IAAI3jF,MAAEA,EAAFW,IAASA,GAAQ4iF,EAChBvjF,GAAUW,IACXX,EAAQW,EAAM,CAAEygB,KAAM,EAAGhlC,OAAQ,IAErCR,EAAO3e,KAAK,CACR2mH,SAAUhoH,KAAKioH,YAAY5hE,GAAO,eAAgB8C,GAAYw+D,GAC9DO,QAASP,EAAWt7G,KACpB67D,SAAU,CACNphB,KAAMsB,EACN9J,SAAUosB,GAAiBtmC,EAAOW,OAMtD,OAAO/kB,EAEX0nG,cAAct/D,GACV,MAAM+/D,EAAenoH,KAAK6mH,aAAahtH,IAAIuuD,GAC3C,QAAqBt2C,IAAjBq2G,EACA,OAAOA,EACX,MAAMC,EAAkBjiH,KAAKqkD,SAASk9D,cAAct/D,EAAU,IAAIe,UAElE,OADAnpD,KAAK6mH,aAAa9jH,IAAIqlD,EAAUggE,GACzBA,EAEXH,YAAYI,EAAcV,GACtB,GAAIU,GAAoC,OAApBV,EAAW5/D,KAC3B,MAAO,OACX,OAAQ4/D,EAAW3/D,UACf,IAAK,QACD,MAAO,QACX,IAAK,UACD,MAAO,UACX,QACI,MAAO,SAIvB,SAAS3B,GAAO8jC,EAAQzM,GACpB,OAAOv3E,KAAKkgD,OAAOxsD,IAAK,mBAAkBswF,EAAU,CAAEzM,MAAO,CAACA,KC3H3D,MAAM4qC,GACT1oH,YAAYw6B,EAAQm9C,GA8DhB,IAAIgxC,EA7DJvoH,KAAKo6B,OAASA,EACdp6B,KAAKu3E,KAAOA,EACZv3E,KAAKwoH,OAAS,IAAI3iE,EAAKmR,QACvBh3D,KAAK0mD,eAAgB,EACrB1mD,KAAKuuD,cAAgB,IAAI1I,EAAK2I,oBAE9BxuD,KAAK2M,GAAK3M,KAAKwoH,OAAO77G,GAAGqD,KAAKhQ,KAAKwoH,QACnCxoH,KAAKqrD,QAAU,KACXrrD,KAAKuuD,cAAclD,UACnB+C,GAAcpuD,KAAK+gG,UAEvB/gG,KAAKmkE,KAAOj+D,UACHlG,KAAKyoH,cAEJzoH,KAAKyoH,MAAM95D,OAAOC,QAAQ,OAAQ,CACpC9H,KAAM9mD,KAAKyoH,MAAMrgE,SACjBsgE,YAAa1oH,KAAKo6B,OAAOo5C,YAE7BplB,GAAcpuD,KAAK2oH,OAAO,CAAEC,UAAU,EAAOz0E,MAAO,OAExDn0C,KAAK+gG,MAAQ76F,UAET,SADMlG,KAAK6oH,YACP7oH,KAAKyoH,MAAO,CACZ,MAAM95D,EAAS3uD,KAAKyoH,MAAM95D,OACpB7H,EAAO9mD,KAAKyoH,MAAMrgE,SACxBpoD,KAAKu3E,KAAK2vC,gBAAgBpgE,GAC1B9mD,KAAKyoH,MAAMl6D,cAAclD,UACzBrrD,KAAKyoH,WAAQ32G,QACP68C,EAAOC,QAAQ,QAAS,CAAE9H,KAAAA,MAGxC9mD,KAAKi+G,gBAAmB6K,IACpB16D,GAAcpuD,KAAK+gG,QAAQ55F,MAAK,KAC5BnH,KAAK6oH,YAAc7oH,KAAKw/E,KAAKspC,QAGrC9oH,KAAK+oH,UAAY7iH,gBACPhK,QAAQuK,IAAI,CAACzG,KAAK2oH,OAAO,CAAEC,UAAU,EAAMz0E,MAAO,MAAQn0C,KAAKgpH,qBAEzEhpH,KAAKipH,gBAAkB/iH,OAASiqE,QAAAA,MAE5B,GAAuB,IAAnBA,EAAQ50E,SAAiByE,KAAKyoH,MAC9B,OACJ,MAAM95D,OAAEA,EAAFvG,SAAUA,GAAapoD,KAAKyoH,YAM5BvsH,QAAQuK,IAAI0pE,EAAQlvB,aAAY,CAAC80C,GAAOmzB,SAAAA,EAAUpmC,QAAAA,MACpDiT,EAAI10F,KAAKstD,EAAOC,QAAQ,SAAU,CAC9B9H,KAAMsB,EACN5C,KAAM0jE,EAAS9kF,MAAMqhB,IAAM,EAC3BjlC,OAAQ0oG,EAAS9kF,MAAMshB,OAAS,EAChCkG,QAASs9D,EAASnkF,IAAI0gB,IAAM,EAC5Bw6B,UAAWipC,EAASnkF,IAAI2gB,OAAS,EACjCyjE,aAAcrmC,KAEXiT,IACR,MAGP/1F,KAAKuuD,cAAcxnD,IAAIZ,KAAKkgD,OAAOwsB,QAAQ,yCAA0CwiB,IACjFkzB,EAAkBl7D,GAAAza,UAAS,KACvBwb,GAAcpuD,KAAK2oH,OAAO,CAAEC,UAAU,EAAOz0E,MAAO,OACrDkhD,MACHj7D,EAAO6jF,gBAAgBj+G,KAAKi+G,iBAAkB7jF,EAAO4kF,aAAah/G,KAAKqrD,SAAUjxB,EAAO2uF,WAAU,KAClG36D,GAAcpuD,KAAK+oH,gBACnB3uF,EAAOs1B,mBAAkB,EAAGygB,QAAAA,MACxBA,EAAQ50E,OAAS,GACjByE,KAAKu3E,KAAKqK,uBAAkB9vE,MAChCsoB,EAAO6uF,iBAAiB55F,IAGxB++B,GAAcpuD,KAAKipH,gBAAgB55F,IACnCk5F,QAEJvoH,KAAK6oH,YAAc7oH,KAAKw/E,KAAKx/E,KAAKo6B,OAAO6uB,WAE7C8D,cAAc3yB,EAAQm9C,GAClB,MAAMn0E,EAAIklH,GAAiBc,UAAUvvH,IAAIugC,GACzC,GAAIh3B,EACA,OAAOA,EACN,CACD,MAAMimH,EAAK,IAAIf,GAAiBluF,EAAQm9C,GAExC,OADA+wC,GAAiBc,UAAUrmH,IAAIq3B,EAAQivF,GAChCA,GAGfpgE,UACI,OAAOjpD,KAAKyoH,OAASzoH,KAAKyoH,MAAMrgE,SAEpCkhE,UACI,GAAKtpH,KAAKyoH,MAEV,MAAO,CACH9L,cAAe38G,KAAKyoH,MAAM95D,OAAO5uD,QACjCi8G,aAAch8G,KAAKyoH,MAAMriE,YAAcpmD,KAAKyoH,MAAMriE,WAAW6C,WAGrE8D,aAAaqS,GACT,IAAKp/D,KAAKyoH,MACN,OACJ,MAAM3mC,EAAQ1iB,EAAKwpD,SAAWriH,MAAMglD,KrHjErC,YACH,IAAK,MAAM3B,KAAMzjD,KAAK2kD,UAAUy3D,iBACxBx5D,GAA2Ba,WACrBA,EAAGX,WqH8D4BsgE,IAAyB,CAACvpH,KAAKyoH,MAAMrgE,gBACxEpoD,KAAKyoH,MAAM95D,OAAOC,QAAQ,SAAU,CACtCkzB,MAAAA,EACA3tC,MAAOirB,EAAKjrB,QAIpB4Y,gBACI,IAAK/sD,KAAKyoH,MACN,OACJ,MAAM95D,OAAEA,EAAFvG,SAAUA,GAAapoD,KAAKyoH,MAC5BzoG,QAAe2uC,EAAOC,QAAQ,gCAAiC,CACjE9H,KAAMsB,IAEJ25B,EAAY10B,GAAAhf,QAAQruB,EAAO6uC,KAAKjuD,KAAK21E,GAAYA,EAAQwL,aAC/D,GAAyB,IAArBA,EAAUxmF,OACV,OACJ,MAAM2mF,EAAWH,EAAUnhF,KAAKkmD,GAAS6H,EAAOC,QAAQ,wBAAyB,CAAE9H,KAAAA,MAEnF,WADoB5qD,QAAQuK,IAAIy7E,IACrB/9E,OAAOmwD,KAAUA,EAAIzF,OAC5B,MAAM,IAAIvzD,MAAM,6BAGxByxD,wBACI,GAAK/sD,KAAK0mD,cAAV,CAEA1mD,KAAKu3E,KAAKqK,uBAAkB9vE,GAC5B,UACU9R,KAAKwpH,UACXxpH,KAAKu3E,KAAKqK,kBAAkB,CAAEltB,SAAS,IAE3C,MAAO1F,GACH,MAAMv0D,EAAIu0D,EACVD,QAAQC,MAAM,yBAA0Bv0D,GACxCuF,KAAKu3E,KAAKqK,kBAAkB,CAAEltB,SAAS,EAAOt/C,QAAS3a,EAAE2a,YAGjE23C,WAAW3E,GACP,QAAiBt2C,IAAbs2C,IAA0BqhE,GAAiBrhE,GAuB3C,OAAOpoD,KAAK+gG,QAvB0C,CACtD,MAAMpyC,QAAe3uD,KAAKu3E,KAAK7oB,UAAUtG,GACzCpoD,KAAKyoH,MAAQ,CACT95D,OAAAA,EACAvG,SAAAA,EACAhC,gBAAYt0C,EACZy8C,cAAe,IAAI1I,EAAK2I,qBAE5BxuD,KAAKyoH,MAAMl6D,cAAcxnD,IAAI4nD,EAAOhiD,GAAG,aAAa,IAAMyhD,GAAcpuD,KAAKmkE,iBACvEnkE,KAAKmkE,OACX,MAAMnkD,QAAe2uC,EAAOC,QAAQ,cAAe,CAC/CizB,kBAAkB,EAClB/6B,KAAMsB,SAGyBt2C,IAA/BkO,EAAO6uC,KAAKmzB,iBACZhiF,KAAKyoH,MAAMriE,WAAa,IAAIP,EAAK6jE,KAAK1pG,EAAO6uC,KAAKmzB,sBAC5ChiF,KAAK6mD,iBACX7mD,KAAKyoH,MAAMl6D,cAAcxnD,IAAI/G,KAAKyoH,MAAMriE,WAAWqpB,aAAY,IAAMrhB,GAAcpuD,KAAK6mD,sBAE5F7mD,KAAKwoH,OAAOnxD,KAAK,WAMzBtK,uBACI,IAAK/sD,KAAKyoH,QAAUzoH,KAAKyoH,MAAMriE,WAC3B,OACJ,MAAMnmD,EAAU0pH,GAAiB3pH,KAAKyoH,MAAMriE,WAAW6C,WACvDjpD,KAAK0mD,cAAgBzmD,EAAQymD,cAC7B,MAAMkjE,EAAMzjH,KAAKkgD,OAAOxsD,IAAI,yBACtBmG,KAAKyoH,MAAM95D,OAAOC,QAAQ,YAAa,CACzC9H,KAAM9mD,KAAKyoH,MAAMrgE,SACjByhE,cAAe5pH,EAAQsmD,kBACvBI,YAAa,CACTmjE,kCAAkC,EAClCC,mCAAoCH,EAAIG,mCACxCC,gBAAiBJ,EAAII,gBACrBC,4BAA6BL,EAAIK,4BACjCC,gCAAiCN,EAAIM,mCAClCjqH,EAAQ0mD,gBAK3B2hE,GAAiBc,UAAY,IAAIl1F,QC9L1B,MAAMi2F,GACTvqH,YAAYopD,EAAQoW,GAChBp/D,KAAKgpD,OAASA,EACdhpD,KAAKo/D,KAAOA,EACZp/D,KAAKuuD,cAAgB,IAAIC,EACzBxuD,KAAKoqH,cAAe,EACpBpqH,KAAKqS,QAAU,KACXlM,KAAKgkD,MAAMxF,QAAQ3kD,KAAKgpD,QAAQumB,UAAUj9D,OAAO,qBACjDtS,KAAKuuD,cAAclD,WAMvBrrD,KAAKqqH,YAAc,KACXrqH,KAAKoqH,cACLpqH,KAAKsqH,cAEbtqH,KAAKuqH,SAAW,KACKpkH,KAAK2kD,UAAU0/D,wBAA0BxqH,KAAKgpD,QAE3DhpD,KAAKsqH,cAEbtqH,KAAKyqH,kBAAoB,KACrBzqH,KAAKoqH,aAAe56D,GAA2BxvD,KAAKgpD,QAChDhpD,KAAKoqH,aACLjkH,KAAKgkD,MAAMxF,QAAQ3kD,KAAKgpD,QAAQumB,UAAUxoE,IAAI,qBAG9CZ,KAAKgkD,MAAMxF,QAAQ3kD,KAAKgpD,QAAQumB,UAAUj9D,OAAO,sBAGzDtS,KAAKo6B,OAASswF,GAAiB74F,OAAOm3B,EAAO0B,YAAa0U,GAC1Dp/D,KAAKuuD,cAAcxnD,IAAI/G,KAAKo6B,OAAOztB,GAAG,SAAU3M,KAAKuqH,WACrDvqH,KAAKyqH,oBACLzqH,KAAKuuD,cAAcxnD,IAAIiiD,EAAOi1D,gBAAgBj+G,KAAKyqH,mBAAoBzhE,EAAOk1D,mBAAmBl+G,KAAKyqH,mBAAoBzhE,EAAOg2D,aAAah/G,KAAKqS,SAAU22C,EAAO+/D,WAAU,KACtK5iH,KAAKkgD,OAAOxsD,IAAI,wCAChBsM,KAAK4qE,SAAS6O,SAASz5E,KAAKgkD,MAAMxF,QAAQqE,GAAS,kCAK/D+D,qBAAqBqS,GACjB,OAAQpW,IACJ,IAAI2hE,EAAMR,GAAqBjI,UAAUroH,IAAImvD,GAK7C,OAJK2hE,IACDA,EAAM,IAAIR,GAAqBnhE,EAAQoW,GACvC+qD,GAAqBjI,UAAUn/G,IAAIimD,EAAQ2hE,IAExCA,GAIf59D,kBAAkB/D,GACd,OAAOmhE,GAAqBjI,UAAUroH,IAAImvD,GAE9CshE,aACI,MAAMxQ,EAAO95G,KAAKo6B,OAAOkvF,UACrBxP,GACA95G,KAAKo/D,KAAKwrD,iBAAiB9Q,IAGvCqQ,GAAqBjI,UAAY,IAAIhuF,QCrC9B,MAAM22F,GACTjrH,YAAY6oH,GACRzoH,KAAK8qH,4BAA6B,EAClC9qH,KAAK+qH,4BAA6B,EAClC/qH,KAAKo8G,QAAU,IAAIv2G,IACnB7F,KAAKyiF,YAAc,KACfziF,KAAKqgF,YAAY5uE,SAErBzR,KAAKknH,gBAAmB9+D,IACpBpoD,KAAKqgF,YAAY6mC,gBAAgB9+D,IAErCpoD,KAAK0uD,UAAYxoD,MAAAA,GACNlG,KAAKogF,eAAevmF,IAAIuuD,GAEnCpoD,KAAKq6G,eAAiB,KAClBjsD,GAAcpuD,KAAKogF,eAAe4qC,sBAEtChrH,KAAKirH,WAAa/kH,MAAOkiD,EAAUxhB,KAC/B,MAAMskF,EAAqB/vH,EAAKk/F,UAAUjyC,GACpCwB,EAAKzjD,KAAK2kD,UAAUy3D,iBAAiBtwE,MAAMv1C,GAAMA,EAAEusD,YAAciiE,IAEvE,GAAIthE,EACA,OAAOhjB,EAAOgjB,EAAGc,aAErB,MAAMtwB,QAAeyrB,EAAKslE,WAAW9oD,KAAK6oD,GAC1C,IACI,aAAatkF,EAAOxM,GADxB,QAIQA,EAAOgxF,oBACDhxF,EAAOixF,OACjBjxF,EAAO/nB,YAGfrS,KAAK4zD,gBAAkB1tD,MAAOyyG,EAAO2S,KACjC,GAAItrH,KAAKurH,kBACL,OAAOvrH,KAAKurH,kBAAkB33D,gBAAgB+kD,EAAO2S,GAEpD,CACD,MAAM59D,EAAQ,CAAEirD,MAAAA,GAChB,IAGI,OAFA34G,KAAKo8G,QAAQr1G,IAAI2mD,GACjB1tD,KAAKwrH,YAAYjlH,MAAMglD,KAAKvrD,KAAKo8G,gBACpBkP,IAHjB,QAMItrH,KAAKo8G,QAAQvnG,OAAO64C,GACpB1tD,KAAKwrH,YAAYjlH,MAAMglD,KAAKvrD,KAAKo8G,aAI7Cp8G,KAAKqiF,eAAkBg6B,IACnBjuD,GAAcpuD,KAAKyrH,YAAYh7G,OAAO,CAAE4rG,SAAAA,MAE5Cr8G,KAAK4hF,kBAAqB25B,IACtBntD,GAAcpuD,KAAKyrH,YAAYh7G,OAAO,CAAE8qG,YAAAA,MAE5Cv7G,KAAK4qH,iBAAoB9Q,IACrB1rD,GAAcpuD,KAAKyrH,YAAYh7G,OAAOqpG,KAE1C95G,KAAK85E,WAAa5zE,MAAAA,IAAsBhK,QAAQuK,IAAI44E,EAAMz+E,KAAK8qH,GAAS1rH,KAAKirH,WAAWS,EAAKvR,UAAUj0G,MAAAA,IACnGk0B,EAAOwoD,UAAS,KACZ,MAAMzS,EAAUu7C,EAAKtR,YAChBx5G,KAAKnG,IAAD,CAAUyI,MAAOqlE,GAAY9tE,GAAIqoF,QAASroF,EAAEqoF,YAChD9uD,UACAkP,MAAK,CAACnpC,EAAGqJ,IAAMA,EAAEF,MAAMlC,QAAQjH,EAAEmJ,SACtC,IAAK,MAAMktE,KAAUD,EACjB/1C,EAAOuxF,eAAev7C,EAAOltE,MAAOktE,EAAO0S,mBAIvD9iF,KAAKy6G,cAAgBv0G,MAAAA,IACblG,KAAK8qH,2BACL9qH,KAAK4rH,eAAe1H,iBAAiBt6D,SAE/BzjD,KAAK4qE,SAAS6O,SAASz5E,KAAKgkD,MAAMxF,QAAQiF,GAAK,mBAE7D5pD,KAAK06G,cAAgBx0G,MAAAA,IACblG,KAAK+qH,iCACC/qH,KAAK6rH,eAAepR,cAAc7wD,SAElCzjD,KAAK4qE,SAAS6O,SAASz5E,KAAKgkD,MAAMxF,QAAQiF,GAAK,wBAE7D5pD,KAAK26G,cAAiB/wD,KACd5pD,KAAK+qH,4BACE/qH,KAAK6rH,eAAerJ,cAAc54D,GAIjD5pD,KAAK46G,cAAgB,CAAChxD,EAAIr2C,MAClBvT,KAAK+qH,4BACE/qH,KAAK6rH,eAAejR,cAAchxD,EAAIr2C,GAIrDvT,KAAK61E,cAAgB,CAACjsB,EAAIwV,IACfp/D,KAAK8rH,cAAcC,UAAUniE,EAAIwV,GAG5Cp/D,KAAKwrH,YAAcn+D,GAAAvQ,UAAUs/D,GAAYhuD,GAAcpuD,KAAKyrH,YAAYh7G,OAAO,CAAE2rG,QAAAA,MAAa,IAAK,CAAEjpE,SAAS,IAC9GnzC,KAAKuuD,cAAgB,IAAIC,EACzBxuD,KAAKogF,eAAiB,IAAA4rC,GAAmBhsH,KAAK4zD,iBAC9C5zD,KAAKuuD,cAAcxnD,IAAI/G,KAAKogF,gBAC5BpgF,KAAKyrH,YAAc,IAAAQ,GACnBjsH,KAAKuuD,cAAcxnD,IAAI/G,KAAKyrH,aAC5BzrH,KAAKqgF,YAAc,IAAA6rC,GACnBlsH,KAAKuuD,cAAcxnD,IAAI/G,KAAKqgF,aAC5BrgF,KAAKmsH,gBAAkB,IAAAC,GAAoBpsH,KAAKogF,eAAgBpgF,KAAKqgF,YAAargF,KAAK85E,YACvF95E,KAAKuuD,cAAcxnD,IAAI/G,KAAKmsH,iBAC5BnsH,KAAKqsH,uBAAyB,IAAAC,GAA2BtsH,KAAK0uD,WAC9D1uD,KAAKuuD,cAAcxnD,IAAI/G,KAAKqsH,wBAC5BrsH,KAAK8rH,cAAgB,IAAAS,GAAiC9D,GAASA,EAAM+D,oBACrExsH,KAAKuuD,cAAcxnD,IAAI/G,KAAK8rH,eAC5B9rH,KAAKysH,sBAAwB,IAAAC,GAA0B,CACnD72C,cAAe71E,KAAK61E,cACpBnnB,UAAW1uD,KAAK0uD,YAEpB1uD,KAAKuuD,cAAcxnD,IAAI/G,KAAKysH,uBAC5BzsH,KAAK4rH,eAAiB,IAAAe,GAAmB3sH,KAAK0uD,WAC9C1uD,KAAKuuD,cAAcxnD,IAAI/G,KAAK4rH,gBAC5B5rH,KAAK6rH,eAAiB,IAAAe,GAAmB,CACrCl+D,UAAW1uD,KAAK0uD,YAEpB1uD,KAAKuuD,cAAcxnD,IAAI/G,KAAK6rH,gBAC5B7rH,KAAK6sH,kBAAoB,IAAAC,GAAsB9sH,KAAK0uD,WACpD1uD,KAAKuuD,cAAcxnD,IAAI/G,KAAK6sH,mBAC5B7sH,KAAK+sH,sBAAwBC,GAAqBC,cAAc,CAC5D/F,gBAAiBlnH,KAAKknH,gBACtBx4D,UAAW1uD,KAAK0uD,UAChBkzB,kBAAmB5hF,KAAK4hF,kBACxBgpC,iBAAkB5qH,KAAK4qH,mBAE3B5qH,KAAKktH,mBAELltH,KAAKuuD,cAAcxnD,IAAIomH,GAAiB,CACpCz+D,UAAW1uD,KAAK0uD,UAChBorB,WAAY95E,KAAK85E,WACjB2I,YAAaziF,KAAKyiF,YAClB43B,eAAgBr6G,KAAKq6G,eACrBh4B,eAAgBriF,KAAKqiF,eACrBT,kBAAmB5hF,KAAK4hF,kBACxB44B,6BAA8B,KAC1BpsD,GAAcpuD,KAAKqsH,uBAAuB3H,WAE9C7J,sBAAwBjxD,IACpB5pD,KAAKysH,sBAAsBnG,eAAe18D,IAE9CkxD,yBAA2BlxD,IACvB5pD,KAAKysH,sBAAsBjG,kBAAkB58D,IAEjDisB,cAAe71E,KAAK61E,cACpBykC,WAAY,IAAMt6G,KAAK8rH,cAAcsB,SACrC7S,gBAAiB,IAAMv6G,KAAK8rH,cAAcuB,cAC1C5S,cAAez6G,KAAKy6G,cACpBC,cAAe16G,KAAK06G,cACpBC,cAAe36G,KAAK26G,cACpBC,cAAe56G,KAAK46G,iBAG5BvoG,UACIrS,KAAKuuD,cAAclD,UACnB,IAAK,MAAMzB,KAAMzjD,KAAK2kD,UAAUy3D,iBAAkB,CAC9C,MAAMgC,EAAOyI,GAAqBM,WAAW1jE,GACzC26D,GACAA,EAAKlyG,WAGjBk/C,YACI,MAAO,CACHxxD,QAAS,MACTysH,mBAAoBxsH,KAAK8rH,cAAcv6D,aAG/Cg8D,cAAcC,GACV,MAAMrG,EAASqG,EAAS,CACpBxmH,KAAM,eAEVhH,KAAKqgF,YAAYgnC,UAAUF,GAC3BnnH,KAAKuuD,cAAcxnD,IAAI/G,KAAKogF,eAAezzE,GAAG,eAAe,EAAG4hC,KAAAA,EAAM6Z,SAAAA,EAAU6e,YAAAA,MAC5EjnE,KAAKqgF,YAAY4mC,UAAU14E,EAAM6Z,EAAU6e,OAGnDwmD,iBAAiBC,GACb,IAAIC,EAAiB,IACrB,IAAK,MAAM34C,KAAS04C,EAAUE,gBAC0B,4BAAhDznH,KAAKgkD,MAAMxF,QAAQqwB,EAAM64C,WAAW7gH,UACpC2gH,EAAiB34C,EAAM84C,cAAgB,GAG/C,MAAMC,EAAOL,EAAUM,aAAa,CAChCj7C,KAAM/yE,KAAKyrH,YACXxjD,SAAU0lD,IAERxiE,EAAO,IAAItF,EAAKsoB,YAAW,KAC7B4/C,EAAK17G,aAGT,OADArS,KAAKuuD,cAAcxnD,IAAIokD,GAChBA,EAEX8iE,sBAAsBC,GAClB,GAAI/nH,KAAKkgD,OAAOxsD,IAAI,mBAAmBs0H,sBACnC,OACJ,MAAMhjE,EAAO+iE,EAAQE,YAAY,IAAAC,GAAsBruH,KAAK0uD,YAI5D,OAHA1uD,KAAKuuD,cAAcxnD,IAAIokD,GACvBnrD,KAAK4rH,eAAevgE,UACpBrrD,KAAK8qH,4BAA6B,EAC3B3/D,EAEXmjE,sBAAsBC,GAClB,GAAIpoH,KAAKkgD,OAAOxsD,IAAI,mBAAmB20H,qBACnC,OACJ,MAAMC,EAAW,IAAAC,GAAsB1uH,KAAK0uD,WACtCvD,EAAOojE,EAASE,GAItB,OAHAzuH,KAAKuuD,cAAcxnD,IAAIokD,EAAMsjE,GAC7BzuH,KAAK6rH,eAAexgE,UACpBrrD,KAAK+qH,4BAA6B,EAC3B5/D,EAEXwjE,kBAAkBpD,GACd,GAAIplH,KAAKkgD,OAAOxsD,IAAI,mBAAmB+0H,wBACnC,OACJ5uH,KAAKurH,kBAAoBA,EACzB,MAAMpgE,EAAO,CACTE,QAAS,KACDrrD,KAAKurH,mBACLvrH,KAAKurH,kBAAkBlgE,UAC3BrrD,KAAKurH,uBAAoBz5G,IAIjC,OADA9R,KAAKuuD,cAAcxnD,IAAIokD,GAChBA,EAGX0jE,sBACI,MAAO,CAAC,IAAAC,GAAyB9uH,KAAK0uD,UAAW1uD,KAAK85E,aAE1Di1C,oBACI,OCxQ8B5C,EDwQDnsH,KAAKmsH,gBCvQ/B,CACHpkD,cAAe,CAAC,KAChBinD,cAAA,OAAoB50C,eAAEA,EAAFmG,WAAkBA,YACpB4rC,EAAgB8C,WAAW1uC,EAAYnG,IAAiBx5E,KAAKogF,IAAD,CACtE/Y,SAAU,IACV0wC,MAAO,gBAAiB33B,EAAMA,EAAIxJ,YAAcwJ,EAAIhC,kBACpD/yB,SAAU,KACNmC,GAAc+9D,EAAgB+C,SAASluC,UARpD,IAA+BmrC,ED0QlCgD,6BACI,OC7PwChD,ED6PDnsH,KAAKmsH,gBC5PzC,CACHpkD,cAAe,CAAC,KAChBinD,cAAA,OAAoBI,aAAEA,EAAF7uC,WAAgBA,YAClB4rC,EAAgBkD,iBAAiB9uC,EAAY6uC,IAAexuH,KAAKsC,IAAD,CAC1EA,MAAAA,EACAosH,QAAUC,WANnB,IAAyCpD,ED+P5CqD,qBACI,OE9Q+BrD,EF8QDnsH,KAAKmsH,gBE7QhC,CACHpkD,cAAeC,KACfC,SAAU,EACVwnD,eAAA,MAAqBlvC,EAAYr9E,EAAOwsH,WACtBvD,EAAgB8C,WAAW1uC,EAAYr9E,EAAMkhC,QAAQxjC,KAAKogF,IAAD,CACnE7vB,SAAUjrD,SAAa,gBAAiB86E,EAAMA,EAAIxJ,YAAcwJ,EAAIhC,kBACpE3zB,QAAS,OACTrsC,MAAO9Y,gBACGimH,EAAgB+C,SAASluC,SAT5C,IAAgCmrC,EFgRnCwD,oBACI,OG/Q8BjhE,EH+QD1uD,KAAK0uD,UG/QOmnB,EH+QI71E,KAAK61E,cG9Q/C,CACH5N,SAAU,EACVyB,aAAc,iCACdkmD,WAAY,+CACZ7iE,2BAA2B/D,EAAQ6mE,EAAO3sH,GACtC,IAAKssD,GAA2BxG,GAC5B,OACJ,MAAMZ,EAAWY,EAAOC,UACxB,YAAiBn3C,IAAbs2C,EAEG,CACHllD,MAAAA,EACAumC,SAAUvjC,UAAY,IAAA4pH,EAClB,MAAM5nD,EAAW,CACbphB,KAAMsB,EACN5C,KAAMtiD,EAAMkhC,MAAMqhB,IAAM,EACxBjlC,OAAQtd,EAAMkhC,MAAMshB,OAAS,GAE3BiJ,QAAeD,EAAUwZ,EAASphB,MAClC9mC,QAAe2uC,EAAOC,QAAQ,aAAcsZ,GAC5C6nD,EAAS/vG,EAAO6uC,KAAO7uC,EAAO6uC,KAAK,QAAK/8C,EAC9C,GAA4B,KAAxB,QAAAg+G,EAAA9vG,EAAO6uC,YAAP,IAAAihE,OAAA,EAAAA,EAAav0H,UACbw0H,MAAAA,OAAA,EAAAA,EAAQ3rF,MAAMohB,QAAS0iB,EAAS1iB,OAChCuqE,MAAAA,OAAA,EAAAA,EAAQ3rF,MAAM5jB,UAAW0nD,EAAS1nD,OAAQ,CAC1C,MAAMk1C,QAAmB/G,EAAOC,QAAQ,aAAcsZ,SAChD8nD,GAA2Bt6D,EAAY1M,EAAQ6sB,cAG/Co6C,GAAuBjwG,EAAQgpC,EAAQ6sB,UApBzD,IATL,IAA+BnnB,EAAWmnB,EHiR7Cq6C,oBACI,O5FpRkCxhE,E4FoRD1uD,KAAK0uD,U5FnRnC,CACHyhE,kBAAA,MAAwBnnE,GACbwG,GAA2BxG,GAEtC+D,qBAAqB/D,EAAQ1K,GACzB,MAAM4pB,EAAWC,GAAoBnf,EAAQ1K,GAC7C,IAAK4pB,EACD,OACJ,MAAMvZ,QAAeD,EAAUwZ,EAASphB,MAClC9mC,QAAe2uC,EAAOC,QAAQ,aAAcsZ,GAClD,OAAKloD,EAAO6uC,KAEL,CACHtgB,KAAM,OACN6hF,QAASloD,EAASphB,KAClBupE,qBAAsBrwG,EAAO6uC,KAAKyhE,oBAClC56D,WAAY11C,EAAO6uC,KAAKngD,KAAK9N,IAAI4pE,UANrC,IAXL,IAAmC9b,E4FsRtC6hE,kBACI,OrEvR2B7hE,EqEuRD1uD,KAAK0uD,UrEtR5B,CACH1nD,KAAM,kBACN+gE,cAAeC,KACfC,SAAU,IACVuoD,cAAc,EACdzjE,iBAAiB/D,GACb,MAAMZ,EAAWY,EAAOC,UACxB,QAAiBn3C,IAAbs2C,EACA,OACJ,MAAMuG,QAAeD,EAAUtG,GAEzByE,SADsB8B,EAAOC,QAAQ,UAAW,CAAE9H,KAAMsB,KAChCyG,KAC9B,OAAKhC,EAEE,CAAE4jE,aAAc,CAAC95C,GAAiB9pB,UAFzC,IAbL,IAA4B6B,EqEyR/BgiE,qB7FzRG,IAA+BhiE,E6F0R9B,IAAIvoD,KAAKkgD,OAAOxsD,IAAI,mBAAmB82H,0BAEvC,O7F5R8BjiE,E6F4RD1uD,KAAK0uD,U7F3R/B,CACHuZ,SAAU,EACVF,cAAeC,KACf4nD,WAAY,+CACZ7iE,oBAAoB/D,EAAQ1K,GACxB,IAAKkR,GAA2BxG,GAC5B,OACJ,MAAMkf,EAAWC,GAAoBnf,EAAQ1K,GAC7C,IAAK4pB,EACD,OACJ,MAAMvZ,QAAeD,EAAUwZ,EAASphB,MAClC9mC,QAAe2uC,EAAOC,QAAQ,aAAcsZ,GAClD,OAAKloD,EAAO6uC,MAEe,IAAvB7uC,EAAO6uC,KAAKtzD,OAET,CACHq1H,gBAAY9+G,EACZ++G,YAAa7wG,EAAO6uC,KAAKjuD,IAAI0pE,UANjC,I6FiRRwmD,uBACI,IAAI3qH,KAAKkgD,OAAOxsD,IAAI,mBAAmBk3H,iCAGvC,OADA/wH,KAAK6sH,kBAAkBxhE,UAChB2lE,GAAyBhxH,KAAK0uD,WAEzCw+D,mBACIltH,KAAKuuD,cAAcxnD,IAAIZ,KAAK2kD,UAAU+zD,oBAAoB71D,IACtDhpD,KAAK+sH,sBAAsB/jE,MAC3B7iD,KAAK2kD,UAAUmmE,6BAA6BrnE,IAC5C,GAAIA,GAAM4F,GAA2B5F,GAAK,CACtCwE,GAAcpuD,KAAKyrH,YAAYzQ,QAC/B,MAAM2P,EAAMqC,GAAqBM,WAAW1jE,GACxC+gE,GACAA,EAAIN,mBAGRj8D,GAAcpuD,KAAKyrH,YAAYxQ,aI3S/C,IAAIiW,iCACG,SAAkBzI,GACrB0I,GAAK17G,aAAatP,KAAKgkD,OACvB+mE,GAAgB,IAAAE,GAAkB3I,GAClCj1D,cAAa,IAAMpF,GAEvBloD,iBACwC,CAAC,cAAe,SAAU,WAC7BjC,MAAMvH,GAAMyJ,KAAKC,SAASirH,gBAAgB30H,YACjEnC,EAAYmN,QAAQ,mBAAmB,GALhB4pH,0BAQ9B,WACCJ,IACAA,GAAc7+G,UAClB6+G,QAAgBp/G,qBAEb,WACH,OAAIo/G,GACOA,GAAc3/D,iBAErB,mCAED,SAAiCggE,GACpC,OAAO5M,GAAa9yF,OAAO0/F,EAAW36F,6BAGnC,SAAuB42F,GAC1B,GAAI0D,GACA,OAAOA,GAAc3D,cAAcC,6BAEpC,SAA0BE,GAC7B,GAAIwD,GACA,OAAOA,GAAczD,iBAAiBC,kCAEvC,SAA+B8D,GAClC,GAAIN,GACA,OAAOA,GAAcjD,sBAAsBuD,iCAE5C,SAA8BjD,GACjC,GAAI2C,GACA,OAAOA,GAAc5C,sBAAsBC,8BAE5C,SAA2BhD,GAC9B,GAAI2F,GACA,OAAOA,GAAcvC,kBAAkBpD,gCAGxC,WACH,GAAI2F,GACA,OAAOA,GAAcrC,iDAEtB,WACH,GAAIqC,GACA,OAAOA,GAAcnC,wDAEtB,WACH,GAAImC,GACA,OAAOA,GAAc/B,yDAEtB,WACH,GAAI+B,GACA,OAAOA,GAAc1B,gDAEtB,WACH,GAAI0B,GACA,OAAOA,GAAcvB,+CAEtB,WACH,GAAIuB,GACA,OAAOA,GAAchB,6CAEtB,WACH,GAAIgB,GACA,OAAOA,GAAcX,8CAEtB,WACH,GAAIW,GACA,OAAOA,GAAcR,mDAEtB,WACH,GAAIQ,GACA,OAAOA,GAAcJ","sources":["./node_modules/@parcel/scope-hoisting/lib/helpers.js","./node_modules/atom-package-deps/lib/index.js","./node_modules/atom-package-deps/lib/index-6660c169.js","./node_modules/@parcel/runtime-js/lib/JSRuntime.js","./node_modules/etch/lib/event-listener-props.js","./node_modules/etch/lib/dom.js","./node_modules/etch/lib/svg-tags.js","./node_modules/etch/lib/svg-attribute-translations.js","./node_modules/etch/lib/update-props.js","./node_modules/etch/lib/render.js","./node_modules/etch/lib/update-ref.js","./node_modules/etch/lib/patch.js","./node_modules/etch/lib/default-scheduler.js","./node_modules/etch/lib/scheduler-assignment.js","./node_modules/etch/lib/component-helpers.js","./node_modules/etch/lib/index.js","./lib/utils.ts","./node_modules/lodash/lodash.js","./lib/main/atom/utils/ts.ts","./lib/main/atom/utils/atom.ts","./lib/main/atom/views/outline/navTreeUtils.ts","./lib/main/atom/views/outline/navigationNodeComponent.tsx","./lib/main/atom/views/outline/navigationTreeComponent.tsx","./lib/main/atom/views/outline/semanticView.ts","./node_modules/byline/lib/byline.js","./lib/client/callbacks.ts","./lib/client/client.ts","./node_modules/jsonc-parser/lib/esm/impl/parser.js","./node_modules/jsonc-parser/lib/esm/impl/scanner.js","./node_modules/jsonc-parser/lib/esm/main.js","./node_modules/resolve/lib/async.js","./node_modules/resolve/lib/caller.js","./node_modules/path-parse/index.js","./node_modules/resolve/lib/node-modules-paths.js","./node_modules/resolve/lib/normalize-options.js","./node_modules/resolve/lib/core.js","./node_modules/resolve/lib/core.json","./node_modules/resolve/lib/is-core.js","./node_modules/resolve/index.js","./node_modules/resolve/lib/sync.js","./lib/client/resolveBinary.ts","./lib/client/clientResolver.ts","./lib/main/atom-ide/codeHighlightProvider.ts","./lib/main/atom/tooltips/tooltipRenderer.tsx","./lib/main/atom-ide/datatipProvider.tsx","./lib/main/atom-ide/definitionsProvider.ts","./lib/main/atom-ide/findReferencesProvider.ts","./lib/main/atom/components/tsView.tsx","./node_modules/fuzzaldrin/lib/scorer.js","./node_modules/fuzzaldrin/lib/filter.js","./node_modules/fuzzaldrin/lib/matcher.js","./node_modules/fuzzaldrin/lib/fuzzaldrin.js","./lib/main/atom/views/highlightComponent.tsx","./node_modules/atom-select-list/src/select-list-view.js","./node_modules/atom-select-list/node_modules/etch/lib/event-listener-props.js","./node_modules/atom-select-list/node_modules/etch/lib/dom.js","./node_modules/atom-select-list/node_modules/etch/lib/svg-tags.js","./node_modules/atom-select-list/node_modules/etch/lib/svg-attribute-translations.js","./node_modules/atom-select-list/node_modules/etch/lib/update-props.js","./node_modules/atom-select-list/node_modules/etch/lib/render.js","./node_modules/atom-select-list/node_modules/etch/lib/patch.js","./node_modules/atom-select-list/node_modules/etch/lib/default-scheduler.js","./node_modules/atom-select-list/node_modules/etch/lib/scheduler-assignment.js","./node_modules/atom-select-list/node_modules/etch/lib/component-helpers.js","./node_modules/atom-select-list/node_modules/etch/lib/index.js","./lib/main/atom/views/simpleSelectionView.tsx","./lib/main/atom/commands/registry.ts","./lib/main/atom/commands/findReferences.tsx","./lib/main/atom/commands/goToDeclaration.tsx","./lib/main/atom-ide/outlineProvider.ts","./lib/main/atom-ide/sigHelpProvider.ts","./lib/main/atom/codeActionTemplate.tsx","./lib/main/atom/autoCompleteProvider.ts","./lib/main/atom/commands/refactorCode.tsx","./lib/main/atom/codefix/codefixProvider.ts","./lib/main/atom/commands/initializeConfig.ts","./lib/main/atom/commands/build.ts","./lib/main/atom/commands/checkAllFiles.ts","./lib/main/atom/commands/clearErrors.ts","./lib/main/atom/commands/formatCode.ts","./lib/main/atom/commands/organizeImports.ts","./lib/main/atom/commands/reloadProjects.ts","./node_modules/underscore-plus/node_modules/underscore/underscore.js","./node_modules/underscore-plus/lib/underscore-plus.js","./node_modules/async/lib/async.js","./node_modules/mkdirp/index.js","./node_modules/fs.realpath/old.js","./node_modules/fs.realpath/index.js","./node_modules/concat-map/index.js","./node_modules/balanced-match/index.js","./node_modules/brace-expansion/index.js","./node_modules/minimatch/minimatch.js","./node_modules/inherits/inherits_browser.js","./node_modules/path-is-absolute/index.js","./node_modules/rimraf/node_modules/glob/common.js","./node_modules/rimraf/node_modules/glob/sync.js","./node_modules/wrappy/wrappy.js","./node_modules/once/once.js","./node_modules/inflight/inflight.js","./node_modules/rimraf/node_modules/glob/glob.js","./node_modules/rimraf/rimraf.js","./node_modules/fs-plus/lib/fs-plus.js","./lib/main/atom/components/miniEditor.ts","./lib/main/atom/views/renameView.tsx","./lib/main/atom/commands/index.ts","./lib/main/atom/commands/renameFile.ts","./lib/main/atom/commands/renameRefactor.ts","./lib/main/atom/commands/restartAllServers.ts","./lib/main/atom/commands/returnFromDeclaration.tsx","./lib/main/atom/commands/semanticView.ts","./lib/main/atom/commands/showTooltip.ts","./lib/main/atom/commands/sigHelp.ts","./lib/main/atom/commands/symbolsView.ts","./lib/main/atom/components/statusPanel/tooltip.tsx","./lib/main/atom/components/statusPanel/buildStatus.tsx","./lib/main/atom/components/statusPanel/configPath.tsx","./lib/main/atom/components/statusPanel/index.tsx","./lib/main/atom/editorPositionHistoryManager.tsx","./lib/main/atom/occurrence/controller.ts","./lib/main/atom/occurrence/manager.ts","./lib/main/atom/tooltips/util.ts","./lib/main/atom/sigHelp/tooltipView.tsx","./lib/main/atom/sigHelp/controller.ts","./lib/main/atom/sigHelp/manager.ts","./lib/main/atom/utils/element-listener.ts","./lib/main/atom/tooltips/tooltipView.tsx","./lib/main/atom/tooltips/controller.ts","./lib/main/atom/tooltips/manager.ts","./lib/main/atom/views/outline/semanticViewController.ts","./lib/main/atom/views/symbols/symbolsTag.ts","./lib/main/atom/views/symbols/generator.ts","./lib/main/atom/views/symbols/utils.ts","./lib/main/atom/views/symbols/fileSymbolsView.tsx","./lib/main/atom/views/symbols/symbolsViewController.ts","./lib/main/atom/views/symbols/projectSymbolsView.tsx","./lib/main/errorPusher.ts","./lib/main/typescriptBuffer.ts","./lib/main/typescriptEditorPane.ts","./lib/main/pluginManager.ts","./lib/main/atom/codefix/intentionsProvider.ts","./lib/main/atom-ide/codeActionsProvider.ts","./lib/main/atom-ide/hyperclickProvider.ts","./lib/main/atomts.ts"],"sourcesContent":["function $parcel$interopDefault(a) {\n return a && a.__esModule ? a.default : a;\n}\n\nfunction $parcel$defineInteropFlag(a) {\n Object.defineProperty(a, '__esModule', {value: true});\n}\n\nfunction $parcel$exportWildcard(dest, source) {\n Object.keys(source).forEach(function(key) {\n if (key === 'default' || key === '__esModule') {\n return;\n }\n\n Object.defineProperty(dest, key, {\n enumerable: true,\n get: function get() {\n return source[key];\n },\n });\n });\n\n return dest;\n}\n\nfunction $parcel$missingModule(name) {\n var err = new Error(\"Cannot find module '\" + name + \"'\");\n err.code = 'MODULE_NOT_FOUND';\n throw err;\n}\n\nvar $parcel$global =\n typeof globalThis !== 'undefined'\n ? globalThis\n : typeof self !== 'undefined'\n ? self\n : typeof window !== 'undefined'\n ? window\n : typeof global !== 'undefined'\n ? global\n : {};\n","\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:!0}),require(\"assert\");var e=require(\"./index-6660c169.js\");require(\"fs\"),require(\"util\"),require(\"path\"),exports.install=e.installDependencies;\n//# sourceMappingURL=index.js.map\n","\"use strict\";function e(e){return e&&\"object\"==typeof e&&\"default\"in e?e.default:e}var r=e(require(\"assert\")),t=e(require(\"fs\")),s=e(require(\"util\")),i=e(require(\"path\"));function o(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,\"default\")?e.default:e}function n(e,r,t){return e(t={path:r,exports:{},require:function(e,r){return function(){throw new Error(\"Dynamic requires are not currently supported by @rollup/plugin-commonjs\")}(null==r&&t.path)}},t.exports),t.exports}var a=n((function(e,r){e.exports=function(e){for(var r=0;r{if(!Buffer.isBuffer(e))throw new TypeError(\"Expected a Buffer, got \"+typeof e);return 239===e[0]&&187===e[1]&&191===e[2]&&a(e)?e.slice(3):e},l=o(n((function(e){var r=o(t),i=o(E);function o(e){return e&&e.__esModule?e:{default:e}}const n={},a=[\"Stats\",\"_toUnixTimestamp\",\"watch\",\"watchFile\",\"unwatchFile\"];Object.keys(r.default).forEach((function(e){const t=r.default[e];\"function\"!=typeof t||e.includes(\"Sync\")||e.includes(\"Stream\")||a.includes(e)?n[e]=t:n[e]=(0,s.promisify)(t)})),n.exists=function(e){return new Promise((function(t){r.default.access(e,r.default.R_OK,(function(e){t(null===e)}))}))},n.readFile=function(e,t){return new Promise((function(s,o){r.default.readFile(e,(function(e,r){if(e)return void o(e);let n=(0,i.default)(r);t&&(n=n.toString(t)),s(n)}))}))},e.exports=n})));var p={SEMVER_SPEC_VERSION:\"2.0.0\",MAX_LENGTH:256,MAX_SAFE_INTEGER:Number.MAX_SAFE_INTEGER||9007199254740991,MAX_SAFE_COMPONENT_LENGTH:16};var c=\"object\"==typeof process&&process.env&&process.env.NODE_DEBUG&&/\\bsemver\\b/i.test(process.env.NODE_DEBUG)?(...e)=>{}:()=>{},h=n((function(e,r){const{MAX_SAFE_COMPONENT_LENGTH:t}=p,s=(r=e.exports={}).re=[],i=r.src=[],o=r.t={};let n=0;const a=(e,r,t)=>{const a=n++;c(a,r),o[e]=a,i[a]=r,s[a]=new RegExp(r,t?\"g\":void 0)};a(\"NUMERICIDENTIFIER\",\"0|[1-9]\\\\d*\"),a(\"NUMERICIDENTIFIERLOOSE\",\"[0-9]+\"),a(\"NONNUMERICIDENTIFIER\",\"\\\\d*[a-zA-Z-][a-zA-Z0-9-]*\"),a(\"MAINVERSION\",`(${i[o.NUMERICIDENTIFIER]})\\\\.(${i[o.NUMERICIDENTIFIER]})\\\\.(${i[o.NUMERICIDENTIFIER]})`),a(\"MAINVERSIONLOOSE\",`(${i[o.NUMERICIDENTIFIERLOOSE]})\\\\.(${i[o.NUMERICIDENTIFIERLOOSE]})\\\\.(${i[o.NUMERICIDENTIFIERLOOSE]})`),a(\"PRERELEASEIDENTIFIER\",`(?:${i[o.NUMERICIDENTIFIER]}|${i[o.NONNUMERICIDENTIFIER]})`),a(\"PRERELEASEIDENTIFIERLOOSE\",`(?:${i[o.NUMERICIDENTIFIERLOOSE]}|${i[o.NONNUMERICIDENTIFIER]})`),a(\"PRERELEASE\",`(?:-(${i[o.PRERELEASEIDENTIFIER]}(?:\\\\.${i[o.PRERELEASEIDENTIFIER]})*))`),a(\"PRERELEASELOOSE\",`(?:-?(${i[o.PRERELEASEIDENTIFIERLOOSE]}(?:\\\\.${i[o.PRERELEASEIDENTIFIERLOOSE]})*))`),a(\"BUILDIDENTIFIER\",\"[0-9A-Za-z-]+\"),a(\"BUILD\",`(?:\\\\+(${i[o.BUILDIDENTIFIER]}(?:\\\\.${i[o.BUILDIDENTIFIER]})*))`),a(\"FULLPLAIN\",`v?${i[o.MAINVERSION]}${i[o.PRERELEASE]}?${i[o.BUILD]}?`),a(\"FULL\",`^${i[o.FULLPLAIN]}$`),a(\"LOOSEPLAIN\",`[v=\\\\s]*${i[o.MAINVERSIONLOOSE]}${i[o.PRERELEASELOOSE]}?${i[o.BUILD]}?`),a(\"LOOSE\",`^${i[o.LOOSEPLAIN]}$`),a(\"GTLT\",\"((?:<|>)?=?)\"),a(\"XRANGEIDENTIFIERLOOSE\",i[o.NUMERICIDENTIFIERLOOSE]+\"|x|X|\\\\*\"),a(\"XRANGEIDENTIFIER\",i[o.NUMERICIDENTIFIER]+\"|x|X|\\\\*\"),a(\"XRANGEPLAIN\",`[v=\\\\s]*(${i[o.XRANGEIDENTIFIER]})(?:\\\\.(${i[o.XRANGEIDENTIFIER]})(?:\\\\.(${i[o.XRANGEIDENTIFIER]})(?:${i[o.PRERELEASE]})?${i[o.BUILD]}?)?)?`),a(\"XRANGEPLAINLOOSE\",`[v=\\\\s]*(${i[o.XRANGEIDENTIFIERLOOSE]})(?:\\\\.(${i[o.XRANGEIDENTIFIERLOOSE]})(?:\\\\.(${i[o.XRANGEIDENTIFIERLOOSE]})(?:${i[o.PRERELEASELOOSE]})?${i[o.BUILD]}?)?)?`),a(\"XRANGE\",`^${i[o.GTLT]}\\\\s*${i[o.XRANGEPLAIN]}$`),a(\"XRANGELOOSE\",`^${i[o.GTLT]}\\\\s*${i[o.XRANGEPLAINLOOSE]}$`),a(\"COERCE\",`(^|[^\\\\d])(\\\\d{1,${t}})(?:\\\\.(\\\\d{1,${t}}))?(?:\\\\.(\\\\d{1,${t}}))?(?:$|[^\\\\d])`),a(\"COERCERTL\",i[o.COERCE],!0),a(\"LONETILDE\",\"(?:~>?)\"),a(\"TILDETRIM\",`(\\\\s*)${i[o.LONETILDE]}\\\\s+`,!0),r.tildeTrimReplace=\"$1~\",a(\"TILDE\",`^${i[o.LONETILDE]}${i[o.XRANGEPLAIN]}$`),a(\"TILDELOOSE\",`^${i[o.LONETILDE]}${i[o.XRANGEPLAINLOOSE]}$`),a(\"LONECARET\",\"(?:\\\\^)\"),a(\"CARETTRIM\",`(\\\\s*)${i[o.LONECARET]}\\\\s+`,!0),r.caretTrimReplace=\"$1^\",a(\"CARET\",`^${i[o.LONECARET]}${i[o.XRANGEPLAIN]}$`),a(\"CARETLOOSE\",`^${i[o.LONECARET]}${i[o.XRANGEPLAINLOOSE]}$`),a(\"COMPARATORLOOSE\",`^${i[o.GTLT]}\\\\s*(${i[o.LOOSEPLAIN]})$|^$`),a(\"COMPARATOR\",`^${i[o.GTLT]}\\\\s*(${i[o.FULLPLAIN]})$|^$`),a(\"COMPARATORTRIM\",`(\\\\s*)${i[o.GTLT]}\\\\s*(${i[o.LOOSEPLAIN]}|${i[o.XRANGEPLAIN]})`,!0),r.comparatorTrimReplace=\"$1$2$3\",a(\"HYPHENRANGE\",`^\\\\s*(${i[o.XRANGEPLAIN]})\\\\s+-\\\\s+(${i[o.XRANGEPLAIN]})\\\\s*$`),a(\"HYPHENRANGELOOSE\",`^\\\\s*(${i[o.XRANGEPLAINLOOSE]})\\\\s+-\\\\s+(${i[o.XRANGEPLAINLOOSE]})\\\\s*$`),a(\"STAR\",\"(<|>)?=?\\\\s*\\\\*\"),a(\"GTE0\",\"^\\\\s*>=\\\\s*0.0.0\\\\s*$\"),a(\"GTE0PRE\",\"^\\\\s*>=\\\\s*0.0.0-0\\\\s*$\")}));const u=/^[0-9]+$/,$=(e,r)=>{const t=u.test(e),s=u.test(r);return t&&s&&(e=+e,r=+r),e===r?0:t&&!s?-1:s&&!t?1:e$(r,e)};const{MAX_LENGTH:R,MAX_SAFE_INTEGER:f}=p,{re:N,t:m}=h,{compareIdentifiers:O}=I;class L{constructor(e,r){if(r&&\"object\"==typeof r||(r={loose:!!r,includePrerelease:!1}),e instanceof L){if(e.loose===!!r.loose&&e.includePrerelease===!!r.includePrerelease)return e;e=e.version}else if(\"string\"!=typeof e)throw new TypeError(\"Invalid Version: \"+e);if(e.length>R)throw new TypeError(`version is longer than ${R} characters`);c(\"SemVer\",e,r),this.options=r,this.loose=!!r.loose,this.includePrerelease=!!r.includePrerelease;const t=e.trim().match(r.loose?N[m.LOOSE]:N[m.FULL]);if(!t)throw new TypeError(\"Invalid Version: \"+e);if(this.raw=e,this.major=+t[1],this.minor=+t[2],this.patch=+t[3],this.major>f||this.major<0)throw new TypeError(\"Invalid major version\");if(this.minor>f||this.minor<0)throw new TypeError(\"Invalid minor version\");if(this.patch>f||this.patch<0)throw new TypeError(\"Invalid patch version\");t[4]?this.prerelease=t[4].split(\".\").map(e=>{if(/^[0-9]+$/.test(e)){const r=+e;if(r>=0&&r=0;)\"number\"==typeof this.prerelease[e]&&(this.prerelease[e]++,e=-2);-1===e&&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}}var T=L;var A=(e,r,t)=>new T(e,t).compare(new T(r,t));var v=(e,r,t)=>0===A(e,r,t);var d=(e,r,t)=>0!==A(e,r,t);var S=(e,r,t)=>A(e,r,t)>0;var P=(e,r,t)=>A(e,r,t)>=0;var w=(e,r,t)=>A(e,r,t)<0;var g=(e,r,t)=>A(e,r,t)<=0;var D=(e,r,t,s)=>{switch(r){case\"===\":return\"object\"==typeof e&&(e=e.version),\"object\"==typeof t&&(t=t.version),e===t;case\"!==\":return\"object\"==typeof e&&(e=e.version),\"object\"==typeof t&&(t=t.version),e!==t;case\"\":case\"=\":case\"==\":return v(e,t,s);case\"!=\":return d(e,t,s);case\">\":return S(e,t,s);case\">=\":return P(e,t,s);case\"<\":return w(e,t,s);case\"<=\":return g(e,t,s);default:throw new TypeError(\"Invalid operator: \"+r)}};const y=Symbol(\"SemVer ANY\");class G{static get ANY(){return y}constructor(e,r){if(r&&\"object\"==typeof r||(r={loose:!!r,includePrerelease:!1}),e instanceof G){if(e.loose===!!r.loose)return e;e=e.value}c(\"comparator\",e,r),this.options=r,this.loose=!!r.loose,this.parse(e),this.semver===y?this.value=\"\":this.value=this.operator+this.semver.version,c(\"comp\",this)}parse(e){const r=this.options.loose?C[F.COMPARATORLOOSE]:C[F.COMPARATOR],t=e.match(r);if(!t)throw new TypeError(\"Invalid comparator: \"+e);this.operator=void 0!==t[1]?t[1]:\"\",\"=\"===this.operator&&(this.operator=\"\"),t[2]?this.semver=new T(t[2],this.options.loose):this.semver=y}toString(){return this.value}test(e){if(c(\"Comparator.test\",e,this.options.loose),this.semver===y||e===y)return!0;if(\"string\"==typeof e)try{e=new T(e,this.options)}catch(e){return!1}return D(e,this.operator,this.semver,this.options)}intersects(e,r){if(!(e instanceof G))throw new TypeError(\"a Comparator is required\");if(r&&\"object\"==typeof r||(r={loose:!!r,includePrerelease:!1}),\"\"===this.operator)return\"\"===this.value||new j(e.value,r).test(this.value);if(\"\"===e.operator)return\"\"===e.value||new j(this.value,r).test(e.semver);const t=!(\">=\"!==this.operator&&\">\"!==this.operator||\">=\"!==e.operator&&\">\"!==e.operator),s=!(\"<=\"!==this.operator&&\"<\"!==this.operator||\"<=\"!==e.operator&&\"<\"!==e.operator),i=this.semver.version===e.semver.version,o=!(\">=\"!==this.operator&&\"<=\"!==this.operator||\">=\"!==e.operator&&\"<=\"!==e.operator),n=D(this.semver,\"<\",e.semver,r)&&(\">=\"===this.operator||\">\"===this.operator)&&(\"<=\"===e.operator||\"<\"===e.operator),a=D(this.semver,\">\",e.semver,r)&&(\"<=\"===this.operator||\"<\"===this.operator)&&(\">=\"===e.operator||\">\"===e.operator);return t||s||i&&o||n||a}}var M=G;const{re:C,t:F}=h;class _{constructor(e,r){if(r&&\"object\"==typeof r||(r={loose:!!r,includePrerelease:!1}),e instanceof _)return e.loose===!!r.loose&&e.includePrerelease===!!r.includePrerelease?e:new _(e.raw,r);if(e instanceof M)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(e=>this.parseRange(e.trim())).filter(e=>e.length),!this.set.length)throw new TypeError(\"Invalid SemVer Range: \"+e);this.format()}format(){return this.range=this.set.map(e=>e.join(\" \").trim()).join(\"||\").trim(),this.range}toString(){return this.range}parseRange(e){const r=this.options.loose;e=e.trim();const t=r?X[b.HYPHENRANGELOOSE]:X[b.HYPHENRANGE];e=e.replace(t,ee(this.options.includePrerelease)),c(\"hyphen replace\",e),e=e.replace(X[b.COMPARATORTRIM],U),c(\"comparator trim\",e,X[b.COMPARATORTRIM]),e=(e=(e=e.replace(X[b.TILDETRIM],k)).replace(X[b.CARETTRIM],x)).split(/\\s+/).join(\" \");const s=r?X[b.COMPARATORLOOSE]:X[b.COMPARATOR];return e.split(\" \").map(e=>H(e,this.options)).join(\" \").split(/\\s+/).map(e=>W(e,this.options)).filter(this.options.loose?e=>!!e.match(s):()=>!0).map(e=>new M(e,this.options))}intersects(e,r){if(!(e instanceof _))throw new TypeError(\"a Range is required\");return this.set.some(t=>B(t,r)&&e.set.some(e=>B(e,r)&&t.every(t=>e.every(e=>t.intersects(e,r)))))}test(e){if(!e)return!1;if(\"string\"==typeof e)try{e=new T(e,this.options)}catch(e){return!1}for(let r=0;r{let t=!0;const s=e.slice();let i=s.pop();for(;t&&s.length;)t=s.every(e=>i.intersects(e,r)),i=s.pop();return t},H=(e,r)=>(c(\"comp\",e,r),e=z(e,r),c(\"caret\",e),e=q(e,r),c(\"tildes\",e),e=J(e,r),c(\"xrange\",e),e=Q(e,r),c(\"stars\",e),e),V=e=>!e||\"x\"===e.toLowerCase()||\"*\"===e,q=(e,r)=>e.trim().split(/\\s+/).map(e=>Y(e,r)).join(\" \"),Y=(e,r)=>{const t=r.loose?X[b.TILDELOOSE]:X[b.TILDE];return e.replace(t,(r,t,s,i,o)=>{let n;return c(\"tilde\",e,r,t,s,i,o),V(t)?n=\"\":V(s)?n=`>=${t}.0.0 <${+t+1}.0.0-0`:V(i)?n=`>=${t}.${s}.0 <${t}.${+s+1}.0-0`:o?(c(\"replaceTilde pr\",o),n=`>=${t}.${s}.${i}-${o} <${t}.${+s+1}.0-0`):n=`>=${t}.${s}.${i} <${t}.${+s+1}.0-0`,c(\"tilde return\",n),n})},z=(e,r)=>e.trim().split(/\\s+/).map(e=>Z(e,r)).join(\" \"),Z=(e,r)=>{c(\"caret\",e,r);const t=r.loose?X[b.CARETLOOSE]:X[b.CARET],s=r.includePrerelease?\"-0\":\"\";return e.replace(t,(r,t,i,o,n)=>{let a;return c(\"caret\",e,r,t,i,o,n),V(t)?a=\"\":V(i)?a=`>=${t}.0.0${s} <${+t+1}.0.0-0`:V(o)?a=\"0\"===t?`>=${t}.${i}.0${s} <${t}.${+i+1}.0-0`:`>=${t}.${i}.0${s} <${+t+1}.0.0-0`:n?(c(\"replaceCaret pr\",n),a=\"0\"===t?\"0\"===i?`>=${t}.${i}.${o}-${n} <${t}.${i}.${+o+1}-0`:`>=${t}.${i}.${o}-${n} <${t}.${+i+1}.0-0`:`>=${t}.${i}.${o}-${n} <${+t+1}.0.0-0`):(c(\"no pr\"),a=\"0\"===t?\"0\"===i?`>=${t}.${i}.${o}${s} <${t}.${i}.${+o+1}-0`:`>=${t}.${i}.${o}${s} <${t}.${+i+1}.0-0`:`>=${t}.${i}.${o} <${+t+1}.0.0-0`),c(\"caret return\",a),a})},J=(e,r)=>(c(\"replaceXRanges\",e,r),e.split(/\\s+/).map(e=>K(e,r)).join(\" \")),K=(e,r)=>{e=e.trim();const t=r.loose?X[b.XRANGELOOSE]:X[b.XRANGE];return e.replace(t,(t,s,i,o,n,a)=>{c(\"xRange\",e,t,s,i,o,n,a);const E=V(i),l=E||V(o),p=l||V(n),h=p;return\"=\"===s&&h&&(s=\"\"),a=r.includePrerelease?\"-0\":\"\",E?t=\">\"===s||\"<\"===s?\"<0.0.0-0\":\"*\":s&&h?(l&&(o=0),n=0,\">\"===s?(s=\">=\",l?(i=+i+1,o=0,n=0):(o=+o+1,n=0)):\"<=\"===s&&(s=\"<\",l?i=+i+1:o=+o+1),\"<\"===s&&(a=\"-0\"),t=`${s+i}.${o}.${n}${a}`):l?t=`>=${i}.0.0${a} <${+i+1}.0.0-0`:p&&(t=`>=${i}.${o}.0${a} <${i}.${+o+1}.0-0`),c(\"xRange return\",t),t})},Q=(e,r)=>(c(\"replaceStars\",e,r),e.trim().replace(X[b.STAR],\"\")),W=(e,r)=>(c(\"replaceGTE0\",e,r),e.trim().replace(X[r.includePrerelease?b.GTE0PRE:b.GTE0],\"\")),ee=e=>(r,t,s,i,o,n,a,E,l,p,c,h,u)=>`${t=V(s)?\"\":V(i)?`>=${s}.0.0${e?\"-0\":\"\"}`:V(o)?`>=${s}.${i}.0${e?\"-0\":\"\"}`:n?\">=\"+t:`>=${t}${e?\"-0\":\"\"}`} ${E=V(l)?\"\":V(p)?`<${+l+1}.0.0-0`:V(c)?`<${l}.${+p+1}.0-0`:h?`<=${l}.${p}.${c}-${h}`:e?`<${l}.${p}.${+c+1}-0`:\"<=\"+E}`.trim(),re=(e,r,t)=>{for(let t=0;t0){const s=e[t].semver;if(s.major===r.major&&s.minor===r.minor&&s.patch===r.patch)return!0}return!1}return!0};var te=(e,r,t)=>{try{r=new j(r,t)}catch(e){return!1}return r.test(e)};const se=/(.*?):.*/,ie=/(.*?)#.*/;void 0===window.__steelbrain_package_deps&&(window.__steelbrain_package_deps=new Set),exports.fs=l,exports.installDependencies=async function(e,t=!0){r(e,\"[Package-Deps] Package name is required\");const s=await async function(e){const r=atom.packages.getLoadedPackage(e),t=r&&r.metadata[\"package-deps\"];return Array.isArray(t)?(await Promise.all(t.map((async function(e){let r=null,t=e,s=null;const o=se.exec(e),n=ie.exec(e);if(o?[,t,s]=o:n?[,t,r]=n:t=e,__steelbrain_package_deps.has(t))return null;const a=atom.packages.resolvePackagePath(t);if(a){if(!s)return null;const e=JSON.parse(await l.readFile(i.join(a,\"package.json\")));if(null!=e&&null!=e.version&&te(e.version,\">=\"+s))return null}return __steelbrain_package_deps.add(t),{name:t,url:r}})))).filter(Boolean):[]}(e);if(s.length){if(t){let r=\"Yes\";if(await Promise.resolve().then((function(){return require(\"./prompt-afef23e0.js\")})).then(async({promptUser:t})=>{r=await t(e,s)}),\"Yes\"!==r)return}await Promise.resolve().then((function(){return require(\"./install-03586186.js\")})).then(async({performInstall:r})=>r(e,s))}};\n//# sourceMappingURL=index-6660c169.js.map\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nfunction _plugin() {\n const data = require(\"@parcel/plugin\");\n\n _plugin = function () {\n return data;\n };\n\n return data;\n}\n\nfunction _utils() {\n const data = require(\"@parcel/utils\");\n\n _utils = function () {\n return data;\n };\n\n return data;\n}\n\nfunction _path() {\n const data = _interopRequireDefault(require(\"path\"));\n\n _path = function () {\n return data;\n };\n\n return data;\n}\n\nfunction _nullthrows() {\n const data = _interopRequireDefault(require(\"nullthrows\"));\n\n _nullthrows = function () {\n return data;\n };\n\n return data;\n}\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// List of browsers that support dynamic import natively\n// https://caniuse.com/#feat=es6-module-dynamic-import\nconst DYNAMIC_IMPORT_BROWSERS = {\n edge: '76',\n firefox: '67',\n chrome: '63',\n safari: '11.1',\n opera: '50'\n}; // Used for as=\"\" in preload/prefetch\n\nconst TYPE_TO_RESOURCE_PRIORITY = {\n css: 'style',\n js: 'script'\n};\nconst BROWSER_PRELOAD_LOADER = './loaders/browser/preload-loader';\nconst BROWSER_PREFETCH_LOADER = './loaders/browser/prefetch-loader';\nconst LOADERS = {\n browser: {\n css: './loaders/browser/css-loader',\n html: './loaders/browser/html-loader',\n js: './loaders/browser/js-loader',\n wasm: './loaders/browser/wasm-loader',\n IMPORT_POLYFILL: './loaders/browser/import-polyfill'\n },\n worker: {\n js: './loaders/worker/js-loader',\n wasm: './loaders/worker/wasm-loader',\n IMPORT_POLYFILL: false\n },\n node: {\n css: './loaders/node/css-loader',\n html: './loaders/node/html-loader',\n js: './loaders/node/js-loader',\n wasm: './loaders/node/wasm-loader',\n IMPORT_POLYFILL: null\n }\n};\n\nfunction getLoaders(ctx) {\n if (ctx.isWorker()) return LOADERS.worker;\n if (ctx.isBrowser()) return LOADERS.browser;\n if (ctx.isNode()) return LOADERS.node;\n return null;\n}\n\nvar _default = new (_plugin().Runtime)({\n apply({\n bundle,\n bundleGraph,\n options\n }) {\n // Dependency ids in code replaced with referenced bundle names\n // Loader runtime added for bundle groups that don't have a native loader (e.g. HTML/CSS/Worker - isURL?),\n // and which are not loaded by a parent bundle.\n // Loaders also added for modules that were moved to a separate bundle because they are a different type\n // (e.g. WASM, HTML). These should be preloaded prior to the bundle being executed. Replace the entry asset(s)\n // with the preload module.\n if (bundle.type !== 'js') {\n return;\n }\n\n let asyncDependencies = [];\n let otherDependencies = [];\n bundle.traverse(node => {\n if (node.type !== 'dependency') {\n return;\n }\n\n let dependency = node.value;\n\n if (dependency.isAsync && !dependency.isURL) {\n asyncDependencies.push(dependency);\n } else {\n otherDependencies.push(dependency);\n }\n });\n let assets = [];\n\n for (let dependency of asyncDependencies) {\n let resolved = bundleGraph.resolveAsyncDependency(dependency, bundle);\n\n if (resolved == null) {\n continue;\n }\n\n if (resolved.type === 'asset') {\n // If this bundle already has the asset this dependency references,\n // return a simple runtime of `Promise.resolve(require(\"path/to/asset\"))`.\n assets.push({\n filePath: _path().default.join(options.projectRoot, 'JSRuntime.js'),\n // Using Promise['resolve'] to prevent Parcel from inferring this is an async dependency.\n // TODO: Find a better way of doing this.\n code: `module.exports = Promise['resolve'](require(${JSON.stringify('./' + _path().default.relative(options.projectRoot, resolved.value.filePath))}))`,\n dependency\n });\n } else {\n let loaderRuntime = getLoaderRuntime({\n bundle,\n dependency,\n bundleGraph,\n bundleGroup: resolved.value\n });\n\n if (loaderRuntime != null) {\n assets.push(loaderRuntime);\n }\n }\n }\n\n for (let dependency of otherDependencies) {\n // Resolve the dependency to a bundle. If inline, export the dependency id,\n // which will be replaced with the contents of that bundle later.\n let referencedBundle = bundleGraph.getReferencedBundle(dependency, bundle);\n\n if (referencedBundle === null || referencedBundle === void 0 ? void 0 : referencedBundle.isInline) {\n assets.push({\n filePath: _path().default.join(__dirname, `/bundles/${referencedBundle.id}.js`),\n code: `module.exports = ${JSON.stringify(dependency.id)};`,\n dependency\n });\n continue;\n } // Otherwise, try to resolve the dependency to an external bundle group\n // and insert a URL to that bundle.\n\n\n let resolved = bundleGraph.resolveAsyncDependency(dependency, bundle);\n\n if (dependency.isURL && resolved == null) {\n // If a URL dependency was not able to be resolved, add a runtime that\n // exports the original moduleSpecifier.\n assets.push({\n filePath: __filename,\n code: `module.exports = ${JSON.stringify(dependency.moduleSpecifier)}`,\n dependency\n });\n continue;\n }\n\n if (resolved == null || resolved.type !== 'bundle_group') {\n continue;\n }\n\n let bundleGroup = resolved.value;\n let mainBundle = (0, _nullthrows().default)(bundleGraph.getBundlesInBundleGroup(bundleGroup).find(b => {\n let entries = b.getEntryAssets();\n return entries.some(e => bundleGroup.entryAssetId === e.id);\n }));\n\n if (bundle.env.outputFormat === 'commonjs' && mainBundle.type === 'js') {\n assets.push({\n filePath: __filename,\n dependency,\n code: `module.exports = require(\"./\" + ${getRelativePathExpr(bundle, mainBundle)})`\n });\n continue;\n } // URL dependency or not, fall back to including a runtime that exports the url\n\n\n assets.push(getURLRuntime(dependency, bundle, mainBundle));\n }\n\n if (shouldUseRuntimeManifest(bundle) && bundleGraph.getChildBundles(bundle).length > 0 && isNewContext(bundle, bundleGraph)) {\n assets.push({\n filePath: __filename,\n code: getRegisterCode(bundle, bundleGraph),\n isEntry: true\n });\n }\n\n return assets;\n }\n\n});\n\nexports.default = _default;\n\nfunction getLoaderRuntime({\n bundle,\n dependency,\n bundleGroup,\n bundleGraph\n}) {\n let loaders = getLoaders(bundle.env);\n\n if (loaders == null) {\n return;\n } // Sort so the bundles containing the entry asset appear last\n\n\n let externalBundles = bundleGraph.getBundlesInBundleGroup(bundleGroup).filter(bundle => !bundle.isInline).sort(bundle => bundle.getEntryAssets().map(asset => asset.id).includes(bundleGroup.entryAssetId) ? 1 : -1); // CommonJS is a synchronous module system, so there is no need to load bundles in parallel.\n // Importing of the other bundles will be handled by the bundle group entry.\n // Do the same thing in library mode for ES modules, as we are building for another bundler\n // and the imports for sibling bundles will be in the target bundle.\n\n if (bundle.env.outputFormat === 'commonjs' || bundle.env.isLibrary) {\n externalBundles = externalBundles.slice(-1);\n } // Determine if we need to add a dynamic import() polyfill, or if all target browsers support it natively.\n\n\n let needsDynamicImportPolyfill = false;\n\n if (bundle.env.isBrowser() && bundle.env.outputFormat === 'esmodule') {\n needsDynamicImportPolyfill = !bundle.env.matchesEngines(DYNAMIC_IMPORT_BROWSERS);\n }\n\n let loaderModules = externalBundles.map(to => {\n let loader = loaders[to.type];\n\n if (!loader) {\n return;\n }\n\n let relativePathExpr = getRelativePathExpr(bundle, to); // Use esmodule loader if possible\n\n if (to.type === 'js' && to.env.outputFormat === 'esmodule') {\n if (!needsDynamicImportPolyfill) {\n return `import(\"./\" + ${relativePathExpr})`;\n }\n\n loader = (0, _nullthrows().default)(loaders.IMPORT_POLYFILL, `No import() polyfill available for context '${bundle.env.context}'`);\n } else if (to.type === 'js' && to.env.outputFormat === 'commonjs') {\n return `Promise.resolve(require(\"./\" + ${relativePathExpr}))`;\n }\n\n return `require(${JSON.stringify(loader)})(require('./bundle-url').getBundleURL() + ${relativePathExpr})`;\n }).filter(Boolean);\n\n if (bundle.env.context === 'browser') {\n loaderModules.push(...(0, _utils().flatMap)( // TODO: Allow css to preload resources as well\n externalBundles.filter(to => to.type === 'js'), from => {\n let {\n preload,\n prefetch\n } = getHintedBundleGroups(bundleGraph, from);\n return [...getHintLoaders(bundleGraph, bundle, preload, BROWSER_PRELOAD_LOADER), ...getHintLoaders(bundleGraph, bundle, prefetch, BROWSER_PREFETCH_LOADER)];\n }));\n }\n\n if (loaderModules.length === 0) {\n return;\n }\n\n let loaderCode = loaderModules.join(', ');\n\n if (loaderModules.length > 1 && (bundle.env.outputFormat === 'global' || !externalBundles.every(b => b.type === 'js'))) {\n loaderCode = `Promise.all([${loaderCode}])`;\n\n if (bundle.env.outputFormat !== 'global') {\n loaderCode += `.then(r => r[r.length - 1])`;\n }\n } else {\n loaderCode = `(${loaderCode})`;\n }\n\n if (bundle.env.outputFormat === 'global') {\n loaderCode += `.then(() => parcelRequire('${bundleGraph.getAssetPublicId(bundleGraph.getAssetById(bundleGroup.entryAssetId))}')${// In global output with scope hoisting, functions return exports are\n // always returned. Otherwise, the exports are returned.\n bundle.env.scopeHoist ? '()' : ''})`;\n }\n\n return {\n filePath: __filename,\n code: `module.exports = ${loaderCode};`,\n dependency\n };\n}\n\nfunction getHintedBundleGroups(bundleGraph, bundle) {\n let preload = [];\n let prefetch = [];\n bundle.traverse(node => {\n var _dependency$meta;\n\n if (node.type !== 'dependency') {\n return;\n }\n\n let dependency = node.value; // $FlowFixMe\n\n let attributes = (_dependency$meta = dependency.meta) === null || _dependency$meta === void 0 ? void 0 : _dependency$meta.importAttributes;\n\n if (dependency.isAsync && !dependency.isURL && typeof attributes === 'object' && attributes != null && ( // $FlowFixMe\n attributes.preload || attributes.prefetch)) {\n let resolved = bundleGraph.resolveAsyncDependency(dependency, bundle);\n\n if ((resolved === null || resolved === void 0 ? void 0 : resolved.type) === 'bundle_group') {\n // === true for flow\n if (attributes.preload === true) {\n preload.push(resolved.value);\n }\n\n if (attributes.prefetch === true) {\n prefetch.push(resolved.value);\n }\n }\n }\n });\n return {\n preload,\n prefetch\n };\n}\n\nfunction getHintLoaders(bundleGraph, from, bundleGroups, loader) {\n let hintLoaders = [];\n\n for (let bundleGroupToPreload of bundleGroups) {\n let bundlesToPreload = bundleGraph.getBundlesInBundleGroup(bundleGroupToPreload);\n\n for (let bundleToPreload of bundlesToPreload) {\n let relativePathExpr = getRelativePathExpr(from, bundleToPreload);\n let priority = TYPE_TO_RESOURCE_PRIORITY[bundleToPreload.type];\n hintLoaders.push(`require(${JSON.stringify(loader)})(require('./bundle-url').getBundleURL() + ${relativePathExpr}, ${priority ? JSON.stringify(priority) : 'null'}, ${JSON.stringify(bundleToPreload.target.env.outputFormat === 'esmodule')})`);\n }\n }\n\n return hintLoaders;\n}\n\nfunction isNewContext(bundle, bundleGraph) {\n let parents = bundleGraph.getParentBundles(bundle);\n return bundle.isEntry || parents.length === 0 || parents.some(parent => parent.env.context !== bundle.env.context || parent.type !== 'js');\n}\n\nfunction getURLRuntime(dependency, from, to) {\n let relativePathExpr = getRelativePathExpr(from, to);\n\n if (dependency.meta.webworker === true) {\n return {\n filePath: __filename,\n code: `module.exports = require('./get-worker-url')(${relativePathExpr});`,\n dependency\n };\n }\n\n return {\n filePath: __filename,\n code: `module.exports = require('./bundle-url').getBundleURL() + ${relativePathExpr}`,\n dependency\n };\n}\n\nfunction getRegisterCode(entryBundle, bundleGraph) {\n let idToName = {};\n bundleGraph.traverseBundles((bundle, _, actions) => {\n if (bundle.isInline) {\n return;\n }\n\n idToName[bundle.publicId] = (0, _nullthrows().default)(bundle.name);\n\n if (bundle !== entryBundle && isNewContext(bundle, bundleGraph)) {\n // New contexts have their own manifests, so there's no need to continue.\n actions.skipChildren();\n }\n }, entryBundle);\n return \"require('./bundle-manifest').register(JSON.parse(\" + JSON.stringify(JSON.stringify(idToName)) + '));';\n}\n\nfunction getRelativePathExpr(from, to) {\n if (shouldUseRuntimeManifest(from)) {\n return `require('./relative-path')(${JSON.stringify(from.publicId)}, ${JSON.stringify(to.publicId)})`;\n }\n\n return JSON.stringify((0, _utils().relativeBundlePath)(from, to, {\n leadingDotSlash: false\n }));\n}\n\nfunction shouldUseRuntimeManifest(bundle) {\n let env = bundle.env;\n return !env.isLibrary && env.outputFormat === 'global' && env.isBrowser();\n}","module.exports = {\n onCopy: 'copy',\n onCut: 'cut',\n onPaste: 'paste',\n onCompositionEnd: 'compositionend',\n onCompositionStart: 'compositionstart',\n onCompositionUpdate: 'compositionupdate',\n onKeyDown: 'keydown',\n onKeyPress: 'keypress',\n onKeyUp: 'keyup',\n onFocus: 'focus',\n onBlur: 'blur',\n onChange: 'change',\n onInput: 'input',\n onSubmit: 'submit',\n onClick: 'click',\n onContextMenu: 'contextmenu',\n onDoubleClick: 'dblclick',\n onDrag: 'drag',\n onDragEnd: 'dragend',\n onDragEnter: 'dragenter',\n onDragExit: 'dragexit',\n onDragLeave: 'dragleave',\n onDragOver: 'dragover',\n onDragStart: 'dragstart',\n onDrop: 'drop',\n onMouseDown: 'mousedown',\n onMouseEnter: 'mouseenter',\n onMouseLeave: 'mouseleave',\n onMouseMove: 'mousemove',\n onMouseOut: 'mouseout',\n onMouseOver: 'mouseover',\n onMouseUp: 'mouseup',\n onSelect: 'select',\n onTouchCancel: 'touchcancel',\n onTouchEnd: 'touchend',\n onTouchMove: 'touchmove',\n onTouchStart: 'touchstart',\n onScroll: 'scroll',\n onWheel: 'wheel',\n onAbort: 'abort',\n onCanPlay: 'canplay',\n onCanPlayThrough: 'canplaythrough',\n onDurationChange: 'durationchange',\n onEmptied: 'emptied',\n onEncrypted: 'encrypted',\n onEnded: 'ended',\n onError: 'error',\n onLoadedData: 'loadeddata',\n onLoadedMetadata: 'loadedmetadata',\n onLoadStart: 'loadstart',\n onPause: 'pause',\n onPlay: 'play',\n onPlaying: 'playing',\n onProgress: 'progress',\n onRateChange: 'ratechange',\n onSeeked: 'seeked',\n onSeeking: 'seeking',\n onStalled: 'stalled',\n onSuspend: 'suspend',\n onTimeUpdate: 'timeupdate',\n onVolumeChange: 'volumechange',\n onWaiting: 'waiting',\n onLoad: 'load',\n onAnimationStart: 'animationstart',\n onAnimationEnd: 'animationend',\n onAnimationIteration: 'animationiteration',\n onTransitionEnd: 'transitionend'\n}\n","const EVENT_LISTENER_PROPS = require('./event-listener-props')\nconst SVG_TAGS = require('./svg-tags')\n\nfunction dom (tag, props, ...children) {\n let ambiguous = []\n\n for (let i = 0; i < children.length;) {\n const child = children[i]\n switch (typeof child) {\n case 'string':\n case 'number':\n children[i] = {text: child}\n i++\n break;\n\n case 'object':\n if (Array.isArray(child)) {\n children.splice(i, 1, ...child)\n } else if (!child) {\n children.splice(i, 1)\n } else {\n if (!child.context) {\n ambiguous.push(child)\n if (child.ambiguous && child.ambiguous.length) {\n ambiguous = ambiguous.concat(child.ambiguous)\n }\n }\n i++\n }\n break;\n\n default:\n throw new Error(`Invalid child node: ${child}`)\n }\n }\n\n if (props) {\n for (const propName in props) {\n const eventName = EVENT_LISTENER_PROPS[propName]\n if (eventName) {\n if (!props.on) props.on = {}\n props.on[eventName] = props[propName]\n }\n }\n\n if (props.class) {\n props.className = props.class\n }\n }\n\n return {tag, props, children, ambiguous}\n}\n\nconst HTML_TAGS = [\n 'a', 'abbr', 'address', 'article', 'aside', 'audio', 'b', 'bdi', 'bdo',\n 'blockquote', 'body', 'button', 'canvas', 'caption', 'cite', 'code',\n 'colgroup', 'datalist', 'dd', 'del', 'details', 'dfn', 'dialog', 'div', 'dl',\n 'dt', 'em', 'fieldset', 'figcaption', 'figure', 'footer', 'form', 'h1', 'h2',\n 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'html', 'i', 'iframe', 'ins', 'kbd',\n 'label', 'legend', 'li', 'main', 'map', 'mark', 'menu', 'meter', 'nav',\n 'noscript', 'object', 'ol', 'optgroup', 'option', 'output', 'p', 'pre',\n 'progress', 'q', 'rp', 'rt', 'ruby', 's', 'samp', 'script', 'section',\n 'select', 'small', 'span', 'strong', 'style', 'sub', 'summary', 'sup',\n 'table', 'tbody', 'td', 'textarea', 'tfoot', 'th', 'thead', 'time', 'title',\n 'tr', 'u', 'ul', 'var', 'video', 'area', 'base', 'br', 'col', 'command',\n 'embed', 'hr', 'img', 'input', 'keygen', 'link', 'meta', 'param', 'source',\n 'track', 'wbr'\n]\n\nfor (const tagName of HTML_TAGS) {\n dom[tagName] = (props, ...children) => {\n return dom(tagName, props, ...children)\n }\n}\n\nfor (const tagName of SVG_TAGS) {\n dom[tagName] = (props, ...children) => {\n return dom(tagName, props, ...children)\n }\n}\n\n\nmodule.exports = dom\n","// taken from https://github.com/facebook/react/blob/67f8524e88abbf1ac0fd86d38a0477d11fbc7b3e/src/isomorphic/classic/element/ReactDOMFactories.js#L153\nmodule.exports = new Set([\n 'circle',\n 'clipPath',\n 'defs',\n 'ellipse',\n 'g',\n 'image',\n 'line',\n 'linearGradient',\n 'mask',\n 'path',\n 'pattern',\n 'polygon',\n 'polyline',\n 'radialGradient',\n 'rect',\n 'stop',\n 'svg',\n 'text',\n 'tspan'\n])\n","// Based on https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute\nmodule.exports = new Map([\n ['accentHeight', 'accent-height'],\n ['alignmentBaseline', 'alignment-baseline'],\n ['arabicForm', 'arabic-form'],\n ['baselineShift', 'baseline-shift'],\n ['capHeight', 'cap-height'],\n ['className', 'class'],\n ['clipPath', 'clip-path'],\n ['clipRule', 'clip-rule'],\n ['colorInterpolation', 'color-interpolation'],\n ['colorInterpolationFilters', 'color-interpolation-filters'],\n ['colorProfile', 'color-profile'],\n ['colorRendering', 'color-rendering'],\n ['dominantBaseline', 'dominant-baseline'],\n ['enableBackground', 'enable-background'],\n ['fillOpacity', 'fill-opacity'],\n ['fillRule', 'fill-rule'],\n ['floodColor', 'flood-color'],\n ['floodOpacity', 'flood-opacity'],\n ['fontFamily', 'font-family'],\n ['fontSize', 'font-size'],\n ['fontSizeAdjust', 'font-size-adjust'],\n ['fontStretch', 'font-stretch'],\n ['fontStyle', 'font-style'],\n ['fontVariant', 'font-variant'],\n ['fontWeight', 'font-weight'],\n ['glyphName', 'glyph-name'],\n ['glyphOrientationHorizontal', 'glyph-orientation-horizontal'],\n ['glyphOrientationVertical', 'glyph-orientation-vertical'],\n ['horizAdvX', 'horiz-adv-x'],\n ['horizOriginX', 'horiz-origin-x'],\n ['letterSpacing', 'letter-spacing'],\n ['lightingColor', 'lighting-color'],\n ['markerEnd', 'marker-end'],\n ['markerMid', 'marker-mid'],\n ['markerStart', 'marker-start'],\n ['overlinePosition', 'overline-position'],\n ['overlineThickness', 'overline-thickness'],\n ['panose1', 'panose-1'],\n ['paintOrder', 'paint-order'],\n ['pointerEvents', 'pointer-events'],\n ['renderingIntent', 'rendering-intent'],\n ['shapeRendering', 'shape-rendering'],\n ['stopColor', 'stop-color'],\n ['stopOpacity', 'stop-opacity'],\n ['strikethroughPosition', 'strikethrough-position'],\n ['strikethroughThickness', 'strikethrough-thickness'],\n ['strokeDasharray', 'stroke-dasharray'],\n ['strokeDashoffset', 'stroke-dashoffset'],\n ['strokeLinecap', 'stroke-linecap'],\n ['strokeLinejoin', 'stroke-linejoin'],\n ['strokeMiterlimit', 'stroke-miterlimit'],\n ['strokeOpacity', 'stroke-opacity'],\n ['strokeWidth', 'stroke-width'],\n ['textAnchor', 'text-anchor'],\n ['textDecoration', 'text-decoration'],\n ['textRendering', 'text-rendering'],\n ['underlinePosition', 'underline-position'],\n ['underlineThickness', 'underline-thickness'],\n ['unicodeBidi', 'unicode-bidi'],\n ['unicodeRange', 'unicode-range'],\n ['unitsPerEm', 'units-per-em'],\n ['vAlphabetic', 'v-alphabetic'],\n ['vHanging', 'v-hanging'],\n ['vIdeographic', 'v-ideographic'],\n ['vMathematical', 'v-mathematical'],\n ['vertAdvY', 'vert-adv-y'],\n ['vertOriginX', 'vert-origin-x'],\n ['vertOriginY', 'vert-origin-y'],\n ['wordSpacing', 'word-spacing'],\n ['writingMode', 'writing-mode'],\n ['xHeight', 'x-height'],\n])\n","const EVENT_LISTENER_PROPS = require('./event-listener-props')\nconst SVG_TAGS = require('./svg-tags')\nconst SVG_ATTRIBUTE_TRANSLATIONS = require('./svg-attribute-translations')\nconst EMPTY = ''\n\nconst updateRef = require('./update-ref')\n\nmodule.exports = function (domNode, oldVirtualNode, newVirtualNode, options) {\n const oldProps = oldVirtualNode && oldVirtualNode.props\n const newProps = newVirtualNode.props\n\n let refs, listenerContext\n if (options) {\n refs = options.refs\n listenerContext = options.listenerContext\n }\n updateProps(domNode, oldVirtualNode, oldProps, newVirtualNode, newProps)\n if (refs) updateRef(domNode, oldProps && oldProps.ref, newProps && newProps.ref, refs)\n updateEventListeners(domNode, oldVirtualNode, newVirtualNode, listenerContext)\n}\n\n// Using var to avoid \"Unsupported phi use of variable\" deoptimization in Chrome 56\nfunction updateProps (domNode, oldVirtualNode, oldProps, newVirtualNode, newProps) {\n if (oldProps) {\n for (var name in oldProps) {\n if (name === 'ref' || name === 'on') continue\n if (name in EVENT_LISTENER_PROPS) continue\n if (!newProps || !(name in newProps)) {\n if (name === 'dataset') {\n updateProps(domNode.dataset, null, oldProps && oldProps.dataset, null, null)\n } else if (name !== 'innerHTML' && oldVirtualNode && SVG_TAGS.has(oldVirtualNode.tag)) {\n domNode.removeAttribute(SVG_ATTRIBUTE_TRANSLATIONS.get(name) || name)\n } else {\n // Clear property for objects that don't support deletion (e.g. style\n // or className). If we used null instead of an empty string, the DOM\n // could sometimes stringify the value and mistakenly assign 'null'.\n domNode[name] = EMPTY\n delete domNode[name]\n }\n }\n }\n }\n\n if (newProps) {\n for (var name in newProps) {\n if (name === 'ref' || name === 'on') continue\n if (name in EVENT_LISTENER_PROPS) continue\n var oldValue = oldProps && oldProps[name]\n var newValue = newProps[name]\n if (name === 'dataset') {\n updateNestedProps(domNode.dataset, oldValue, newValue, false)\n } else if (name === 'style' && typeof newValue !== 'string') {\n if (typeof oldValue === 'string') {\n domNode.style = ''\n oldValue = null\n }\n updateNestedProps(domNode.style, oldValue, newValue, true)\n } else if (name === 'attributes') {\n updateAttributes(domNode, oldValue, newValue)\n } else {\n if (newValue !== oldValue) {\n if (name !== 'innerHTML' && newVirtualNode && SVG_TAGS.has(newVirtualNode.tag)) {\n domNode.setAttribute(SVG_ATTRIBUTE_TRANSLATIONS.get(name) || name, newValue)\n } else if (newVirtualNode && newVirtualNode.tag === 'input'\n && name === 'value' && domNode[name] === newValue) {\n // Do not update `value` of an `input` unless it differs.\n // Every change will reset the cursor position.\n } else {\n domNode[name] = newValue\n }\n }\n }\n }\n }\n}\n\nfunction updateNestedProps (domProps, oldProps, newProps, isStyleObject) {\n if (oldProps) {\n for (var name in oldProps) {\n if (!newProps || !(name in newProps)) {\n if (isStyleObject) {\n domProps[name] = EMPTY\n } else {\n delete domProps[name]\n }\n }\n }\n }\n\n if (newProps) {\n for (var name in newProps) {\n const oldValue = oldProps && oldProps[name]\n const newValue = newProps[name]\n if (newValue !== oldValue) {\n domProps[name] = newValue\n }\n }\n }\n}\n\nfunction updateAttributes (domNode, oldAttributes, newAttributes) {\n if (oldAttributes) {\n for (var name in oldAttributes) {\n if (!newAttributes || !(name in newAttributes)) {\n domNode.removeAttribute(name)\n }\n }\n }\n\n if (newAttributes) {\n for (var name in newAttributes) {\n const oldValue = oldAttributes && oldAttributes[name]\n const newValue = newAttributes[name]\n if (newValue !== oldValue) {\n domNode.setAttribute(name, newValue)\n }\n }\n }\n}\n\nfunction updateEventListeners (domNode, oldVirtualNode, newVirtualNode, listenerContext) {\n const oldListeners = oldVirtualNode && oldVirtualNode.props && oldVirtualNode.props.on\n const newListeners = newVirtualNode.props && newVirtualNode.props.on\n\n for (const eventName in oldListeners) {\n if (!(newListeners && eventName in newListeners)) {\n let listenerToRemove\n if (oldVirtualNode && oldVirtualNode.boundListeners && oldVirtualNode.boundListeners[eventName]) {\n listenerToRemove = oldVirtualNode.boundListeners[eventName]\n } else {\n listenerToRemove = oldListeners[eventName]\n }\n domNode.removeEventListener(eventName, listenerToRemove)\n }\n }\n\n for (const eventName in newListeners) {\n const oldListener = oldListeners && oldListeners[eventName]\n const newListener = newListeners[eventName]\n\n if (newListener !== oldListener) {\n if (oldListener) {\n let listenerToRemove\n if (oldVirtualNode && oldVirtualNode.boundListeners && oldVirtualNode.boundListeners[eventName]) {\n listenerToRemove = oldVirtualNode.boundListeners[eventName]\n } else {\n listenerToRemove = oldListener\n }\n domNode.removeEventListener(eventName, listenerToRemove)\n }\n if (newListener) {\n let listenerToAdd\n if (listenerContext) {\n listenerToAdd = newListener.bind(listenerContext)\n if (!newVirtualNode.boundListeners) newVirtualNode.boundListeners = {}\n newVirtualNode.boundListeners[eventName] = listenerToAdd\n } else {\n listenerToAdd = newListener\n }\n domNode.addEventListener(eventName, listenerToAdd)\n }\n }\n }\n}\n","const updateProps = require('./update-props')\nconst SVG_TAGS = require('./svg-tags')\n\nfunction render (virtualNode, options) {\n let domNode\n if (virtualNode.text != null) {\n domNode = document.createTextNode(virtualNode.text)\n } else {\n const {tag, children} = virtualNode\n let {props, context} = virtualNode\n\n if (context) {\n options = {refs: context.refs, listenerContext: context}\n }\n\n if (typeof tag === 'function') {\n let ref\n if (props && props.ref) {\n ref = props.ref\n }\n const component = new tag(props || {}, children)\n virtualNode.component = component\n domNode = component.element\n if (typeof ref === \"function\") {\n ref(component)\n } else if (options && options.refs && ref) {\n options.refs[ref] = component\n }\n } else if (SVG_TAGS.has(tag)) {\n domNode = document.createElementNS(\"http://www.w3.org/2000/svg\", tag);\n if (children) addChildren(domNode, children, options)\n if (props) updateProps(domNode, null, virtualNode, options)\n } else {\n domNode = document.createElement(tag)\n if (children) addChildren(domNode, children, options)\n if (props) updateProps(domNode, null, virtualNode, options)\n }\n }\n virtualNode.domNode = domNode\n return domNode\n}\n\nfunction addChildren (parent, children, options) {\n for (let i = 0; i < children.length; i++) {\n parent.appendChild(render(children[i], options))\n }\n}\n\nmodule.exports = render\n","module.exports = function updateRef (domNode, oldRefName, newRefName, refs) {\n if (newRefName !== oldRefName) {\n if (typeof oldRefName === 'function') oldRefName(null)\n else if (oldRefName && refs[oldRefName] === domNode) delete refs[oldRefName]\n if (typeof newRefName === 'function') newRefName(domNode)\n else if (newRefName) refs[newRefName] = domNode\n }\n}\n","const render = require('./render')\nconst updateProps = require('./update-props')\nconst updateRef = require('./update-ref')\n\nfunction patch (oldVirtualNode, newVirtualNode, options) {\n const oldNode = oldVirtualNode.domNode\n\n if (newVirtualNode === oldVirtualNode) return oldNode\n\n if (virtualNodesAreEqual(oldVirtualNode, newVirtualNode)) {\n let newNode\n if (newVirtualNode.text != null) {\n oldNode.nodeValue = newVirtualNode.text\n newNode = oldNode\n } else {\n if (typeof newVirtualNode.tag === 'function') {\n newNode = updateComponent(oldVirtualNode, newVirtualNode, options)\n } else {\n updateChildren(oldNode, oldVirtualNode.children, newVirtualNode.children, options)\n updateProps(oldNode, oldVirtualNode, newVirtualNode, options)\n newNode = oldNode\n }\n }\n newVirtualNode.domNode = newNode\n if (newNode !== oldNode && oldNode.parentNode) {\n oldNode.parentNode.replaceChild(newNode, oldNode)\n }\n return newNode\n } else {\n const parentNode = oldNode.parentNode\n const nextSibling = oldNode.nextSibling\n removeVirtualNode(oldVirtualNode, options && options.refs)\n const newNode = render(newVirtualNode, options)\n if (parentNode) parentNode.insertBefore(newNode, nextSibling)\n newVirtualNode.domNode = newNode\n return newNode\n }\n}\n\nfunction updateComponent (oldVirtualNode, newVirtualNode, options) {\n const {component, props: oldProps} = oldVirtualNode\n let {props: newProps, children: newChildren} = newVirtualNode\n newVirtualNode.component = component\n const refs = options && options.refs\n if (refs) updateRef(component, oldProps && oldProps.ref, newProps && newProps.ref, refs)\n component.update(newProps || {}, newChildren)\n return component.element\n}\n\nlet mapPool = [new Map(), new Map(), new Map(), new Map()]\n\nfunction updateChildren (parentElement, oldChildren, newChildren, options) {\n var oldStartIndex = 0\n var oldEndIndex = oldChildren.length - 1\n var oldStartChild = oldChildren[0]\n var oldEndChild = oldChildren[oldEndIndex]\n\n var newStartIndex = 0\n var newEndIndex = newChildren.length - 1\n var newStartChild = newChildren[0]\n var newEndChild = newChildren[newEndIndex]\n\n var oldIndicesByKey\n\n while (oldStartIndex <= oldEndIndex && newStartIndex <= newEndIndex) {\n if (!oldStartChild) {\n oldStartChild = oldChildren[++oldStartIndex]\n } else if (!oldEndChild) {\n oldEndChild = oldChildren[--oldEndIndex]\n } else if (virtualNodesAreEqual(oldStartChild, newStartChild)) {\n patch(oldStartChild, newStartChild, options)\n oldStartChild = oldChildren[++oldStartIndex]\n newStartChild = newChildren[++newStartIndex]\n } else if (virtualNodesAreEqual(oldEndChild, newEndChild)) {\n patch(oldEndChild, newEndChild, options)\n oldEndChild = oldChildren[--oldEndIndex]\n newEndChild = newChildren[--newEndIndex]\n } else if (virtualNodesAreEqual(oldStartChild, newEndChild)) {\n patch(oldStartChild, newEndChild, options)\n parentElement.insertBefore(oldStartChild.domNode, oldEndChild.domNode.nextSibling)\n oldStartChild = oldChildren[++oldStartIndex]\n newEndChild = newChildren[--newEndIndex]\n } else if (virtualNodesAreEqual(oldEndChild, newStartChild)) {\n patch(oldEndChild, newStartChild, options)\n parentElement.insertBefore(oldEndChild.domNode, oldStartChild.domNode);\n oldEndChild = oldChildren[--oldEndIndex]\n newStartChild = newChildren[++newStartIndex]\n } else {\n if (!oldIndicesByKey) {\n if (mapPool.length > 0) {\n oldIndicesByKey = mapPool.pop()\n oldIndicesByKey.clear()\n } else {\n oldIndicesByKey = new Map()\n }\n mapOldKeysToIndices(oldIndicesByKey, oldChildren, oldStartIndex, oldEndIndex)\n }\n\n var key = getKey(newStartChild)\n var oldIndex = key ? oldIndicesByKey.get(key) : null\n if (oldIndex == null) {\n parentElement.insertBefore(render(newStartChild, options), oldStartChild.domNode)\n newStartChild = newChildren[++newStartIndex]\n } else {\n var oldChildToMove = oldChildren[oldIndex]\n patch(oldChildToMove, newStartChild, options)\n oldChildren[oldIndex] = undefined\n parentElement.insertBefore(oldChildToMove.domNode, oldStartChild.domNode)\n newStartChild = newChildren[++newStartIndex]\n }\n }\n }\n\n if (oldStartIndex > oldEndIndex) {\n var subsequentElement = newChildren[newEndIndex + 1] ? newChildren[newEndIndex + 1].domNode : null\n for (let i = newStartIndex; i <= newEndIndex; i++) {\n parentElement.insertBefore(render(newChildren[i], options), subsequentElement)\n }\n } else if (newStartIndex > newEndIndex) {\n for (let i = oldStartIndex; i <= oldEndIndex; i++) {\n var child = oldChildren[i]\n if (child) removeVirtualNode(child, options && options.refs)\n }\n }\n\n if (oldIndicesByKey) mapPool.push(oldIndicesByKey)\n}\n\nfunction removeVirtualNode (virtualNode, refs, removeDOMNode = true) {\n const {domNode, props, children, component} = virtualNode\n const ref = props && props.ref\n if (component) {\n if (typeof ref === 'function') ref(null)\n else if (refs && ref && refs[ref] === component) delete refs[ref]\n if (component.destroy) component.destroy()\n } else {\n if (typeof ref === 'function') ref(null)\n else if (refs && ref && refs[ref] === domNode) delete refs[ref]\n if (children) {\n for (let i = 0; i < children.length; i++) {\n removeVirtualNode(children[i], refs, false)\n }\n }\n }\n\n if (removeDOMNode) domNode.remove()\n}\n\nfunction virtualNodesAreEqual (oldVirtualNode, newVirtualNode) {\n return (\n getKey(oldVirtualNode) === getKey(newVirtualNode)\n && oldVirtualNode.tag === newVirtualNode.tag\n )\n}\n\nfunction getKey (virtualNode) {\n return virtualNode.props ? virtualNode.props.key : undefined\n}\n\nfunction mapOldKeysToIndices (oldIndicesByKey, children, startIndex, endIndex) {\n for (let i = startIndex; i <= endIndex; i++) {\n const key = getKey(children[i])\n if (key) oldIndicesByKey.set(key, i)\n }\n return oldIndicesByKey\n}\n\nmodule.exports = patch\n","// If the scheduler is not customized via `etch.setScheduler`, an instance of\n// this class will be used to schedule updates to the document. The\n// `updateDocument` method accepts functions to be run at some point in the\n// future, then runs them on the next animation frame.\nmodule.exports = class DefaultScheduler {\n constructor () {\n this.updateRequests = []\n this.readRequests = []\n this.pendingAnimationFrame = null\n this.performUpdates = this.performUpdates.bind(this)\n this.performingUpdates = false\n }\n\n // Enqueues functions that write to the DOM to be performed on the next\n // animation frame. Functions passed to this method should *never* read from\n // the DOM, because that could cause synchronous reflows.\n updateDocument (fn) {\n this.updateRequests.push(fn)\n if (!this.pendingAnimationFrame) {\n this.pendingAnimationFrame = window.requestAnimationFrame(this.performUpdates)\n }\n }\n\n readDocument (fn) {\n this.readRequests.push(fn)\n if (!this.pendingAnimationFrame) {\n this.pendingAnimationFrame = window.requestAnimationFrame(this.performUpdates)\n }\n }\n\n // Returns a promise that will resolve at the end of the next update cycle,\n // after all the functions passed to `updateDocument` and `updateDocumentSync`\n // have been run.\n getNextUpdatePromise () {\n if (!this.nextUpdatePromise) {\n this.nextUpdatePromise = new Promise(resolve => {\n this.resolveNextUpdatePromise = resolve\n })\n }\n return this.nextUpdatePromise\n }\n\n // Performs all the pending document updates. If running these update\n // functions causes *more* updates to be enqueued, they are run synchronously\n // in this update cycle without waiting for another frame.\n performUpdates () {\n while (this.updateRequests.length > 0) {\n this.updateRequests.shift()()\n }\n\n // We don't clear the pending frame until all update requests are processed.\n // This ensures updates requested within other updates are processed in the\n // current frame.\n this.pendingAnimationFrame = null\n\n // Now that updates are processed, we can perform all pending document reads\n // without the risk of interleaving them with writes and causing layout\n // thrashing.\n while (this.readRequests.length > 0) {\n this.readRequests.shift()()\n }\n\n if (this.nextUpdatePromise) {\n let resolveNextUpdatePromise = this.resolveNextUpdatePromise\n this.nextUpdatePromise = null\n this.resolveNextUpdatePromise = null\n resolveNextUpdatePromise()\n }\n }\n}\n","// This file implements getter and setter functions for a scheduler to be used\n// by this library when updating the DOM. The scheduler's job is to ensure that\n// DOM interaction is performed efficiently. When using `etch` in Atom, you\n// should tell `etch` to use Atom's scheduler by calling\n// `setScheduler(atom.views)`.\n//\n// Schedulers should support the following interface:\n// * `updateDocument(fn)` This method is asynchronous. It enqueues functions to\n// be executed later.\n// * `getNextUpdatePromise()` This function should return a promise that\n// resolves after all pending document update functions have been invoked.\n//\n// Schedulers could support the following optional methods, which are supported\n// by Atom's scheduler.\n//\n// * `readDocument` This method can be invoked by clients other than `etch` when\n// it is necessary to read from the DOM. Functions enqueued via this method\n// should not be run until all document update functions have been executed.\n// Batching updates and reads in this way will prevent forced synchronous\n// reflows.\n// * `pollDocument` This method is similar to `readDocument`, but it runs the\n// associated functions repeatedly. Again, they should be scheduled in such a\n// way so as to avoid synchronous reflows.\n\nconst DefaultScheduler = require('./default-scheduler')\n\nlet scheduler = null\n\nmodule.exports.setScheduler = function setScheduler (customScheduler) {\n scheduler = customScheduler\n}\n\nmodule.exports.getScheduler = function getScheduler () {\n if (!scheduler) {\n scheduler = new DefaultScheduler()\n }\n return scheduler\n}\n","const render = require('./render')\nconst patch = require('./patch')\nconst {getScheduler} = require('./scheduler-assignment')\n\nconst componentsWithPendingUpdates = new WeakSet()\nlet syncUpdatesInProgressCounter = 0\nlet syncDestructionsInProgressCounter = 0\n\nfunction isValidVirtualNode (virtualNode) {\n return virtualNode != null && virtualNode !== false\n}\n\nfunction applyContext (context, virtualNode) {\n virtualNode.context = context\n if (virtualNode.ambiguous) {\n virtualNode.ambiguous.forEach(node => {\n node.context = context\n })\n delete virtualNode.ambiguous\n }\n}\n\n// This function associates a component object with a DOM element by calling\n// the components `render` method, assigning an `.element` property on the\n// object and also returning the element.\n//\n// It also assigns a `virtualNode` property based on the return value of the\n// `render` method. This will be used later by `performElementUpdate` to diff\n// the new results of `render` with the previous results when updating the\n// component's element.\n//\n// Finally, this function also associates the component with a `refs` object,\n// which is populated with references to elements based on `ref` properties on\n// nodes of the `virtual-dom` tree. Before calling into `virtual-dom` to create\n// the DOM tree, it pushes this `refs` object to a shared stack so it can be\n// accessed by hooks during the creation of individual elements.\nfunction initialize(component) {\n if (typeof component.update !== 'function') {\n throw new Error('Etch components must implement `update(props, children)`.')\n }\n\n let virtualNode = component.render()\n if (!isValidVirtualNode(virtualNode)) {\n let namePart = component.constructor && component.constructor.name ? ' in ' + component.constructor.name : ''\n throw new Error('invalid falsy value ' + virtualNode + ' returned from render()' + namePart)\n }\n\n applyContext(component, virtualNode)\n\n component.refs = {}\n component.virtualNode = virtualNode\n component.element = render(component.virtualNode, {\n refs: component.refs, listenerContext: component\n })\n}\n\n// This function receives a component that has already been associated with an\n// element via a previous call to `initialize` and updates this element by\n// calling `render` on the component.\n//\n// When called in normal circumstances, it uses the scheduler to defer this\n// update until the next animation frame, and will only perform one update of a\n// given component in a given frame. This means you can call `update`\n// repeatedly in a given tick without causing redundant updates.\n//\n// If this function called during another synchronous update (for example, as a\n// result of a call to `update` on a child component), the update is performed\n// synchronously.\n//\n// Returns a promise that will resolve when the requested update has been\n// completed.\nfunction update (component, replaceNode=true) {\n if (syncUpdatesInProgressCounter > 0) {\n updateSync(component, replaceNode)\n return Promise.resolve()\n }\n\n let scheduler = getScheduler()\n\n if (!componentsWithPendingUpdates.has(component)) {\n componentsWithPendingUpdates.add(component)\n scheduler.updateDocument(function () {\n componentsWithPendingUpdates.delete(component)\n updateSync(component, replaceNode)\n })\n }\n\n return scheduler.getNextUpdatePromise()\n}\n\n// Synchronsly updates the DOM element associated with a component object. .\n// This method assumes the presence of `.element` and `.virtualNode`\n// properties on the component, which are assigned in the `initialize`\n// function.\n//\n// It calls `render` on the component to obtain the desired state of the DOM,\n// then `diff`s it with the previous state and `patch`es the element based on\n// the resulting diff. During the patch operation, it pushes the component's\n// `refs` object to a shared stack so that references to DOM elements can be\n// updated.\n//\n// If `update` is called during the invocation of `updateSync`,\n// the requests are processed synchronously as well. We track whether this is\n// the case by incrementing and decrementing `syncUpdatesInProgressCounter`\n// around the call.\n//\n// For now, etch does not allow the root tag of the `render` method to change\n// between invocations, because we want to preserve a one-to-one relationship\n// between component objects and DOM elements for simplicity.\nfunction updateSync (component, replaceNode=true) {\n if (!isValidVirtualNode(component.virtualNode)) {\n throw new Error(`${component.constructor ? component.constructor.name + ' instance' : component} is not associated with a valid virtualNode. Perhaps this component was never initialized?`)\n }\n\n if (component.element == null) {\n throw new Error(`${component.constructor ? component.constructor.name + ' instance' : component} is not associated with a DOM element. Perhaps this component was never initialized?`)\n }\n\n let newVirtualNode = component.render()\n if (!isValidVirtualNode(newVirtualNode)) {\n const namePart = component.constructor && component.constructor.name ? ' in ' + component.constructor.name : ''\n throw new Error('invalid falsy value ' + newVirtualNode + ' returned from render()' + namePart)\n }\n\n applyContext(component, newVirtualNode)\n\n syncUpdatesInProgressCounter++\n let oldVirtualNode = component.virtualNode\n let oldDomNode = component.element\n let newDomNode = patch(oldVirtualNode, newVirtualNode, {\n refs: component.refs,\n listenerContext: component\n })\n component.virtualNode = newVirtualNode\n if (newDomNode !== oldDomNode && !replaceNode) {\n throw new Error('The root node type changed on update, but the update was performed with the replaceNode option set to false')\n } else {\n component.element = newDomNode\n }\n\n // We can safely perform additional writes after a DOM update synchronously,\n // but any reads need to be deferred until all writes are completed to avoid\n // DOM thrashing. Requested reads occur at the end of the the current frame\n // if this method was invoked via the scheduler. Otherwise, if `updateSync`\n // was invoked outside of the scheduler, the default scheduler will defer\n // reads until the next animation frame.\n if (typeof component.writeAfterUpdate === 'function') {\n component.writeAfterUpdate()\n }\n if (typeof component.readAfterUpdate === 'function') {\n getScheduler().readDocument(function () {\n component.readAfterUpdate()\n })\n }\n\n syncUpdatesInProgressCounter--\n}\n\n// Removes the component's associated element and calls `destroy` on any child\n// components. Normally, this function is asynchronous and will perform the\n// destruction on the next animation frame. If called as the result of another\n// update or destruction, it calls `destroy` on child components synchronously.\n// If called as the result of destroying a component higher in the DOM, the\n// element is not removed to avoid redundant DOM manipulation. Returns a promise\n// that resolves when the destruction is completed.\nfunction destroy (component, removeNode=true) {\n if (syncUpdatesInProgressCounter > 0 || syncDestructionsInProgressCounter > 0) {\n destroySync(component, removeNode)\n return Promise.resolve()\n }\n\n let scheduler = getScheduler()\n scheduler.updateDocument(function () {\n destroySync(component, removeNode)\n })\n return scheduler.getNextUpdatePromise()\n}\n\n// A synchronous version of `destroy`.\n//\n// Note that we track whether `destroy` calls are in progress and only remove\n// the element if we are not a nested call.\nfunction destroySync (component, removeNode=true) {\n syncDestructionsInProgressCounter++\n destroyChildComponents(component.virtualNode)\n if (syncDestructionsInProgressCounter === 1 && removeNode) component.element.remove()\n syncDestructionsInProgressCounter--\n}\n\nfunction destroyChildComponents(virtualNode) {\n if (virtualNode.component && typeof virtualNode.component.destroy === 'function') {\n virtualNode.component.destroy()\n } else if (virtualNode.children) {\n virtualNode.children.forEach(destroyChildComponents)\n }\n}\n\nmodule.exports = {\n initialize,\n update, updateSync,\n destroy, destroySync\n}\n","const dom = require('./dom')\nconst render = require('./render')\nconst {initialize, update, updateSync, destroy, destroySync} = require('./component-helpers')\nconst {setScheduler, getScheduler} = require('./scheduler-assignment')\n\nmodule.exports = {\n dom, render,\n initialize, update, updateSync, destroy, destroySync,\n setScheduler, getScheduler\n}\n","export function handlePromise(promise: Promise | undefined): void {\n if (promise === undefined) return\n // tslint:disable-next-line:strict-type-predicates no-unbound-method\n if (typeof promise.catch !== \"function\") {\n atom.notifications.addFatalError(\n \"Atom-Typescript: non-promise passed to handlePromise. Please report this.\",\n {\n stack: new Error().stack,\n dismissable: true,\n },\n )\n return\n }\n promise.catch((err: Error) => {\n atom.notifications.addFatalError(`Atom-Typescript error: ${err.message}`, {\n detail: err.toString(),\n stack: err.stack,\n dismissable: true,\n })\n })\n}\n","/**\n * @license\n * Lodash \n * Copyright OpenJS Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n;(function() {\n\n /** Used as a safe reference for `undefined` in pre-ES5 environments. */\n var undefined;\n\n /** Used as the semantic version number. */\n var VERSION = '4.17.20';\n\n /** Used as the size to enable large array optimizations. */\n var LARGE_ARRAY_SIZE = 200;\n\n /** Error message constants. */\n var CORE_ERROR_TEXT = 'Unsupported core-js use. Try https://npms.io/search?q=ponyfill.',\n FUNC_ERROR_TEXT = 'Expected a function';\n\n /** Used to stand-in for `undefined` hash values. */\n var HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n /** Used as the maximum memoize cache size. */\n var MAX_MEMOIZE_SIZE = 500;\n\n /** Used as the internal argument placeholder. */\n var PLACEHOLDER = '__lodash_placeholder__';\n\n /** Used to compose bitmasks for cloning. */\n var CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n /** Used to compose bitmasks for value comparisons. */\n var COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n /** Used to compose bitmasks for function metadata. */\n var WRAP_BIND_FLAG = 1,\n WRAP_BIND_KEY_FLAG = 2,\n WRAP_CURRY_BOUND_FLAG = 4,\n WRAP_CURRY_FLAG = 8,\n WRAP_CURRY_RIGHT_FLAG = 16,\n WRAP_PARTIAL_FLAG = 32,\n WRAP_PARTIAL_RIGHT_FLAG = 64,\n WRAP_ARY_FLAG = 128,\n WRAP_REARG_FLAG = 256,\n WRAP_FLIP_FLAG = 512;\n\n /** Used as default options for `_.truncate`. */\n var DEFAULT_TRUNC_LENGTH = 30,\n DEFAULT_TRUNC_OMISSION = '...';\n\n /** Used to detect hot functions by number of calls within a span of milliseconds. */\n var HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n /** Used to indicate the type of lazy iteratees. */\n var LAZY_FILTER_FLAG = 1,\n LAZY_MAP_FLAG = 2,\n LAZY_WHILE_FLAG = 3;\n\n /** Used as references for various `Number` constants. */\n var INFINITY = 1 / 0,\n MAX_SAFE_INTEGER = 9007199254740991,\n MAX_INTEGER = 1.7976931348623157e+308,\n NAN = 0 / 0;\n\n /** Used as references for the maximum length and index of an array. */\n var MAX_ARRAY_LENGTH = 4294967295,\n MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1,\n HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1;\n\n /** Used to associate wrap methods with their bit flags. */\n var wrapFlags = [\n ['ary', WRAP_ARY_FLAG],\n ['bind', WRAP_BIND_FLAG],\n ['bindKey', WRAP_BIND_KEY_FLAG],\n ['curry', WRAP_CURRY_FLAG],\n ['curryRight', WRAP_CURRY_RIGHT_FLAG],\n ['flip', WRAP_FLIP_FLAG],\n ['partial', WRAP_PARTIAL_FLAG],\n ['partialRight', WRAP_PARTIAL_RIGHT_FLAG],\n ['rearg', WRAP_REARG_FLAG]\n ];\n\n /** `Object#toString` result references. */\n var argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n asyncTag = '[object AsyncFunction]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n domExcTag = '[object DOMException]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n nullTag = '[object Null]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n proxyTag = '[object Proxy]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n undefinedTag = '[object Undefined]',\n weakMapTag = '[object WeakMap]',\n weakSetTag = '[object WeakSet]';\n\n var arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n /** Used to match empty string literals in compiled template source. */\n var reEmptyStringLeading = /\\b__p \\+= '';/g,\n reEmptyStringMiddle = /\\b(__p \\+=) '' \\+/g,\n reEmptyStringTrailing = /(__e\\(.*?\\)|\\b__t\\)) \\+\\n'';/g;\n\n /** Used to match HTML entities and HTML characters. */\n var reEscapedHtml = /&(?:amp|lt|gt|quot|#39);/g,\n reUnescapedHtml = /[&<>\"']/g,\n reHasEscapedHtml = RegExp(reEscapedHtml.source),\n reHasUnescapedHtml = RegExp(reUnescapedHtml.source);\n\n /** Used to match template delimiters. */\n var reEscape = /<%-([\\s\\S]+?)%>/g,\n reEvaluate = /<%([\\s\\S]+?)%>/g,\n reInterpolate = /<%=([\\s\\S]+?)%>/g;\n\n /** Used to match property names within property paths. */\n var reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/,\n rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n /**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\n var reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g,\n reHasRegExpChar = RegExp(reRegExpChar.source);\n\n /** Used to match leading and trailing whitespace. */\n var reTrim = /^\\s+|\\s+$/g,\n reTrimStart = /^\\s+/,\n reTrimEnd = /\\s+$/;\n\n /** Used to match wrap detail comments. */\n var reWrapComment = /\\{(?:\\n\\/\\* \\[wrapped with .+\\] \\*\\/)?\\n?/,\n reWrapDetails = /\\{\\n\\/\\* \\[wrapped with (.+)\\] \\*/,\n reSplitDetails = /,? & /;\n\n /** Used to match words composed of alphanumeric characters. */\n var reAsciiWord = /[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g;\n\n /** Used to match backslashes in property paths. */\n var reEscapeChar = /\\\\(\\\\)?/g;\n\n /**\n * Used to match\n * [ES template delimiters](http://ecma-international.org/ecma-262/7.0/#sec-template-literal-lexical-components).\n */\n var reEsTemplate = /\\$\\{([^\\\\}]*(?:\\\\.[^\\\\}]*)*)\\}/g;\n\n /** Used to match `RegExp` flags from their coerced string values. */\n var reFlags = /\\w*$/;\n\n /** Used to detect bad signed hexadecimal string values. */\n var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n /** Used to detect binary string values. */\n var reIsBinary = /^0b[01]+$/i;\n\n /** Used to detect host constructors (Safari). */\n var reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n /** Used to detect octal string values. */\n var reIsOctal = /^0o[0-7]+$/i;\n\n /** Used to detect unsigned integer values. */\n var reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n /** Used to match Latin Unicode letters (excluding mathematical operators). */\n var reLatin = /[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g;\n\n /** Used to ensure capturing order of template delimiters. */\n var reNoMatch = /($^)/;\n\n /** Used to match unescaped characters in compiled string literals. */\n var reUnescapedString = /['\\n\\r\\u2028\\u2029\\\\]/g;\n\n /** Used to compose unicode character classes. */\n var rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsDingbatRange = '\\\\u2700-\\\\u27bf',\n rsLowerRange = 'a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff',\n rsMathOpRange = '\\\\xac\\\\xb1\\\\xd7\\\\xf7',\n rsNonCharRange = '\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf',\n rsPunctuationRange = '\\\\u2000-\\\\u206f',\n rsSpaceRange = ' \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000',\n rsUpperRange = 'A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde',\n rsVarRange = '\\\\ufe0e\\\\ufe0f',\n rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;\n\n /** Used to compose unicode capture groups. */\n var rsApos = \"['\\u2019]\",\n rsAstral = '[' + rsAstralRange + ']',\n rsBreak = '[' + rsBreakRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsDigits = '\\\\d+',\n rsDingbat = '[' + rsDingbatRange + ']',\n rsLower = '[' + rsLowerRange + ']',\n rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsUpper = '[' + rsUpperRange + ']',\n rsZWJ = '\\\\u200d';\n\n /** Used to compose unicode regexes. */\n var rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')',\n rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')',\n rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',\n rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',\n reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsOrdLower = '\\\\d*(?:1st|2nd|3rd|(?![123])\\\\dth)(?=\\\\b|[A-Z_])',\n rsOrdUpper = '\\\\d*(?:1ST|2ND|3RD|(?![123])\\\\dTH)(?=\\\\b|[a-z_])',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n /** Used to match apostrophes. */\n var reApos = RegExp(rsApos, 'g');\n\n /**\n * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and\n * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).\n */\n var reComboMark = RegExp(rsCombo, 'g');\n\n /** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\n var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n /** Used to match complex or compound words. */\n var reUnicodeWord = RegExp([\n rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',\n rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')',\n rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower,\n rsUpper + '+' + rsOptContrUpper,\n rsOrdUpper,\n rsOrdLower,\n rsDigits,\n rsEmoji\n ].join('|'), 'g');\n\n /** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\n var reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']');\n\n /** Used to detect strings that need a more robust regexp to match words. */\n var reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;\n\n /** Used to assign default `context` object properties. */\n var contextProps = [\n 'Array', 'Buffer', 'DataView', 'Date', 'Error', 'Float32Array', 'Float64Array',\n 'Function', 'Int8Array', 'Int16Array', 'Int32Array', 'Map', 'Math', 'Object',\n 'Promise', 'RegExp', 'Set', 'String', 'Symbol', 'TypeError', 'Uint8Array',\n 'Uint8ClampedArray', 'Uint16Array', 'Uint32Array', 'WeakMap',\n '_', 'clearTimeout', 'isFinite', 'parseInt', 'setTimeout'\n ];\n\n /** Used to make template sourceURLs easier to identify. */\n var templateCounter = -1;\n\n /** Used to identify `toStringTag` values of typed arrays. */\n var typedArrayTags = {};\n typedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\n typedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\n typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\n typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\n typedArrayTags[uint32Tag] = true;\n typedArrayTags[argsTag] = typedArrayTags[arrayTag] =\n typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\n typedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\n typedArrayTags[errorTag] = typedArrayTags[funcTag] =\n typedArrayTags[mapTag] = typedArrayTags[numberTag] =\n typedArrayTags[objectTag] = typedArrayTags[regexpTag] =\n typedArrayTags[setTag] = typedArrayTags[stringTag] =\n typedArrayTags[weakMapTag] = false;\n\n /** Used to identify `toStringTag` values supported by `_.clone`. */\n var cloneableTags = {};\n cloneableTags[argsTag] = cloneableTags[arrayTag] =\n cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\n cloneableTags[boolTag] = cloneableTags[dateTag] =\n cloneableTags[float32Tag] = cloneableTags[float64Tag] =\n cloneableTags[int8Tag] = cloneableTags[int16Tag] =\n cloneableTags[int32Tag] = cloneableTags[mapTag] =\n cloneableTags[numberTag] = cloneableTags[objectTag] =\n cloneableTags[regexpTag] = cloneableTags[setTag] =\n cloneableTags[stringTag] = cloneableTags[symbolTag] =\n cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\n cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\n cloneableTags[errorTag] = cloneableTags[funcTag] =\n cloneableTags[weakMapTag] = false;\n\n /** Used to map Latin Unicode letters to basic Latin letters. */\n var deburredLetters = {\n // Latin-1 Supplement block.\n '\\xc0': 'A', '\\xc1': 'A', '\\xc2': 'A', '\\xc3': 'A', '\\xc4': 'A', '\\xc5': 'A',\n '\\xe0': 'a', '\\xe1': 'a', '\\xe2': 'a', '\\xe3': 'a', '\\xe4': 'a', '\\xe5': 'a',\n '\\xc7': 'C', '\\xe7': 'c',\n '\\xd0': 'D', '\\xf0': 'd',\n '\\xc8': 'E', '\\xc9': 'E', '\\xca': 'E', '\\xcb': 'E',\n '\\xe8': 'e', '\\xe9': 'e', '\\xea': 'e', '\\xeb': 'e',\n '\\xcc': 'I', '\\xcd': 'I', '\\xce': 'I', '\\xcf': 'I',\n '\\xec': 'i', '\\xed': 'i', '\\xee': 'i', '\\xef': 'i',\n '\\xd1': 'N', '\\xf1': 'n',\n '\\xd2': 'O', '\\xd3': 'O', '\\xd4': 'O', '\\xd5': 'O', '\\xd6': 'O', '\\xd8': 'O',\n '\\xf2': 'o', '\\xf3': 'o', '\\xf4': 'o', '\\xf5': 'o', '\\xf6': 'o', '\\xf8': 'o',\n '\\xd9': 'U', '\\xda': 'U', '\\xdb': 'U', '\\xdc': 'U',\n '\\xf9': 'u', '\\xfa': 'u', '\\xfb': 'u', '\\xfc': 'u',\n '\\xdd': 'Y', '\\xfd': 'y', '\\xff': 'y',\n '\\xc6': 'Ae', '\\xe6': 'ae',\n '\\xde': 'Th', '\\xfe': 'th',\n '\\xdf': 'ss',\n // Latin Extended-A block.\n '\\u0100': 'A', '\\u0102': 'A', '\\u0104': 'A',\n '\\u0101': 'a', '\\u0103': 'a', '\\u0105': 'a',\n '\\u0106': 'C', '\\u0108': 'C', '\\u010a': 'C', '\\u010c': 'C',\n '\\u0107': 'c', '\\u0109': 'c', '\\u010b': 'c', '\\u010d': 'c',\n '\\u010e': 'D', '\\u0110': 'D', '\\u010f': 'd', '\\u0111': 'd',\n '\\u0112': 'E', '\\u0114': 'E', '\\u0116': 'E', '\\u0118': 'E', '\\u011a': 'E',\n '\\u0113': 'e', '\\u0115': 'e', '\\u0117': 'e', '\\u0119': 'e', '\\u011b': 'e',\n '\\u011c': 'G', '\\u011e': 'G', '\\u0120': 'G', '\\u0122': 'G',\n '\\u011d': 'g', '\\u011f': 'g', '\\u0121': 'g', '\\u0123': 'g',\n '\\u0124': 'H', '\\u0126': 'H', '\\u0125': 'h', '\\u0127': 'h',\n '\\u0128': 'I', '\\u012a': 'I', '\\u012c': 'I', '\\u012e': 'I', '\\u0130': 'I',\n '\\u0129': 'i', '\\u012b': 'i', '\\u012d': 'i', '\\u012f': 'i', '\\u0131': 'i',\n '\\u0134': 'J', '\\u0135': 'j',\n '\\u0136': 'K', '\\u0137': 'k', '\\u0138': 'k',\n '\\u0139': 'L', '\\u013b': 'L', '\\u013d': 'L', '\\u013f': 'L', '\\u0141': 'L',\n '\\u013a': 'l', '\\u013c': 'l', '\\u013e': 'l', '\\u0140': 'l', '\\u0142': 'l',\n '\\u0143': 'N', '\\u0145': 'N', '\\u0147': 'N', '\\u014a': 'N',\n '\\u0144': 'n', '\\u0146': 'n', '\\u0148': 'n', '\\u014b': 'n',\n '\\u014c': 'O', '\\u014e': 'O', '\\u0150': 'O',\n '\\u014d': 'o', '\\u014f': 'o', '\\u0151': 'o',\n '\\u0154': 'R', '\\u0156': 'R', '\\u0158': 'R',\n '\\u0155': 'r', '\\u0157': 'r', '\\u0159': 'r',\n '\\u015a': 'S', '\\u015c': 'S', '\\u015e': 'S', '\\u0160': 'S',\n '\\u015b': 's', '\\u015d': 's', '\\u015f': 's', '\\u0161': 's',\n '\\u0162': 'T', '\\u0164': 'T', '\\u0166': 'T',\n '\\u0163': 't', '\\u0165': 't', '\\u0167': 't',\n '\\u0168': 'U', '\\u016a': 'U', '\\u016c': 'U', '\\u016e': 'U', '\\u0170': 'U', '\\u0172': 'U',\n '\\u0169': 'u', '\\u016b': 'u', '\\u016d': 'u', '\\u016f': 'u', '\\u0171': 'u', '\\u0173': 'u',\n '\\u0174': 'W', '\\u0175': 'w',\n '\\u0176': 'Y', '\\u0177': 'y', '\\u0178': 'Y',\n '\\u0179': 'Z', '\\u017b': 'Z', '\\u017d': 'Z',\n '\\u017a': 'z', '\\u017c': 'z', '\\u017e': 'z',\n '\\u0132': 'IJ', '\\u0133': 'ij',\n '\\u0152': 'Oe', '\\u0153': 'oe',\n '\\u0149': \"'n\", '\\u017f': 's'\n };\n\n /** Used to map characters to HTML entities. */\n var htmlEscapes = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n };\n\n /** Used to map HTML entities to characters. */\n var htmlUnescapes = {\n '&': '&',\n '<': '<',\n '>': '>',\n '"': '\"',\n ''': \"'\"\n };\n\n /** Used to escape characters for inclusion in compiled string literals. */\n var stringEscapes = {\n '\\\\': '\\\\',\n \"'\": \"'\",\n '\\n': 'n',\n '\\r': 'r',\n '\\u2028': 'u2028',\n '\\u2029': 'u2029'\n };\n\n /** Built-in method references without a dependency on `root`. */\n var freeParseFloat = parseFloat,\n freeParseInt = parseInt;\n\n /** Detect free variable `global` from Node.js. */\n var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n /** Detect free variable `self`. */\n var freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n /** Used as a reference to the global object. */\n var root = freeGlobal || freeSelf || Function('return this')();\n\n /** Detect free variable `exports`. */\n var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n /** Detect free variable `module`. */\n var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n /** Detect the popular CommonJS extension `module.exports`. */\n var moduleExports = freeModule && freeModule.exports === freeExports;\n\n /** Detect free variable `process` from Node.js. */\n var freeProcess = moduleExports && freeGlobal.process;\n\n /** Used to access faster Node.js helpers. */\n var nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n }());\n\n /* Node.js helper references. */\n var nodeIsArrayBuffer = nodeUtil && nodeUtil.isArrayBuffer,\n nodeIsDate = nodeUtil && nodeUtil.isDate,\n nodeIsMap = nodeUtil && nodeUtil.isMap,\n nodeIsRegExp = nodeUtil && nodeUtil.isRegExp,\n nodeIsSet = nodeUtil && nodeUtil.isSet,\n nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\n function apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n }\n\n /**\n * A specialized version of `baseAggregator` for arrays.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\n function arrayAggregator(array, setter, iteratee, accumulator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n var value = array[index];\n setter(accumulator, value, iteratee(value), array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\n function arrayEach(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n }\n\n /**\n * A specialized version of `_.forEachRight` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\n function arrayEachRight(array, iteratee) {\n var length = array == null ? 0 : array.length;\n\n while (length--) {\n if (iteratee(array[length], length, array) === false) {\n break;\n }\n }\n return array;\n }\n\n /**\n * A specialized version of `_.every` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`.\n */\n function arrayEvery(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (!predicate(array[index], index, array)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\n function arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\n function arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n }\n\n /**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\n function arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\n function arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n }\n\n /**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\n function arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n }\n\n /**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\n function arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.reduceRight` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the last element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\n function arrayReduceRight(array, iteratee, accumulator, initAccum) {\n var length = array == null ? 0 : array.length;\n if (initAccum && length) {\n accumulator = array[--length];\n }\n while (length--) {\n accumulator = iteratee(accumulator, array[length], length, array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\n function arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * Gets the size of an ASCII `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\n var asciiSize = baseProperty('length');\n\n /**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function asciiToArray(string) {\n return string.split('');\n }\n\n /**\n * Splits an ASCII `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\n function asciiWords(string) {\n return string.match(reAsciiWord) || [];\n }\n\n /**\n * The base implementation of methods like `_.findKey` and `_.findLastKey`,\n * without support for iteratee shorthands, which iterates over `collection`\n * using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the found element or its key, else `undefined`.\n */\n function baseFindKey(collection, predicate, eachFunc) {\n var result;\n eachFunc(collection, function(value, key, collection) {\n if (predicate(value, key, collection)) {\n result = key;\n return false;\n }\n });\n return result;\n }\n\n /**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseIndexOf(array, value, fromIndex) {\n return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n }\n\n /**\n * This function is like `baseIndexOf` except that it accepts a comparator.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseIndexOfWith(array, value, fromIndex, comparator) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (comparator(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\n function baseIsNaN(value) {\n return value !== value;\n }\n\n /**\n * The base implementation of `_.mean` and `_.meanBy` without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {number} Returns the mean.\n */\n function baseMean(array, iteratee) {\n var length = array == null ? 0 : array.length;\n return length ? (baseSum(array, iteratee) / length) : NAN;\n }\n\n /**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\n function baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n }\n\n /**\n * The base implementation of `_.propertyOf` without support for deep paths.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n */\n function basePropertyOf(object) {\n return function(key) {\n return object == null ? undefined : object[key];\n };\n }\n\n /**\n * The base implementation of `_.reduce` and `_.reduceRight`, without support\n * for iteratee shorthands, which iterates over `collection` using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} accumulator The initial value.\n * @param {boolean} initAccum Specify using the first or last element of\n * `collection` as the initial value.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the accumulated value.\n */\n function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) {\n eachFunc(collection, function(value, index, collection) {\n accumulator = initAccum\n ? (initAccum = false, value)\n : iteratee(accumulator, value, index, collection);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.sortBy` which uses `comparer` to define the\n * sort order of `array` and replaces criteria objects with their corresponding\n * values.\n *\n * @private\n * @param {Array} array The array to sort.\n * @param {Function} comparer The function to define sort order.\n * @returns {Array} Returns `array`.\n */\n function baseSortBy(array, comparer) {\n var length = array.length;\n\n array.sort(comparer);\n while (length--) {\n array[length] = array[length].value;\n }\n return array;\n }\n\n /**\n * The base implementation of `_.sum` and `_.sumBy` without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {number} Returns the sum.\n */\n function baseSum(array, iteratee) {\n var result,\n index = -1,\n length = array.length;\n\n while (++index < length) {\n var current = iteratee(array[index]);\n if (current !== undefined) {\n result = result === undefined ? current : (result + current);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\n function baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n }\n\n /**\n * The base implementation of `_.toPairs` and `_.toPairsIn` which creates an array\n * of key-value pairs for `object` corresponding to the property names of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the key-value pairs.\n */\n function baseToPairs(object, props) {\n return arrayMap(props, function(key) {\n return [key, object[key]];\n });\n }\n\n /**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\n function baseUnary(func) {\n return function(value) {\n return func(value);\n };\n }\n\n /**\n * The base implementation of `_.values` and `_.valuesIn` which creates an\n * array of `object` property values corresponding to the property names\n * of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the array of property values.\n */\n function baseValues(object, props) {\n return arrayMap(props, function(key) {\n return object[key];\n });\n }\n\n /**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function cacheHas(cache, key) {\n return cache.has(key);\n }\n\n /**\n * Used by `_.trim` and `_.trimStart` to get the index of the first string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the first unmatched string symbol.\n */\n function charsStartIndex(strSymbols, chrSymbols) {\n var index = -1,\n length = strSymbols.length;\n\n while (++index < length && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n return index;\n }\n\n /**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the last unmatched string symbol.\n */\n function charsEndIndex(strSymbols, chrSymbols) {\n var index = strSymbols.length;\n\n while (index-- && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n return index;\n }\n\n /**\n * Gets the number of `placeholder` occurrences in `array`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} placeholder The placeholder to search for.\n * @returns {number} Returns the placeholder count.\n */\n function countHolders(array, placeholder) {\n var length = array.length,\n result = 0;\n\n while (length--) {\n if (array[length] === placeholder) {\n ++result;\n }\n }\n return result;\n }\n\n /**\n * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A\n * letters to basic Latin letters.\n *\n * @private\n * @param {string} letter The matched letter to deburr.\n * @returns {string} Returns the deburred letter.\n */\n var deburrLetter = basePropertyOf(deburredLetters);\n\n /**\n * Used by `_.escape` to convert characters to HTML entities.\n *\n * @private\n * @param {string} chr The matched character to escape.\n * @returns {string} Returns the escaped character.\n */\n var escapeHtmlChar = basePropertyOf(htmlEscapes);\n\n /**\n * Used by `_.template` to escape characters for inclusion in compiled string literals.\n *\n * @private\n * @param {string} chr The matched character to escape.\n * @returns {string} Returns the escaped character.\n */\n function escapeStringChar(chr) {\n return '\\\\' + stringEscapes[chr];\n }\n\n /**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\n function getValue(object, key) {\n return object == null ? undefined : object[key];\n }\n\n /**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\n function hasUnicode(string) {\n return reHasUnicode.test(string);\n }\n\n /**\n * Checks if `string` contains a word composed of Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a word is found, else `false`.\n */\n function hasUnicodeWord(string) {\n return reHasUnicodeWord.test(string);\n }\n\n /**\n * Converts `iterator` to an array.\n *\n * @private\n * @param {Object} iterator The iterator to convert.\n * @returns {Array} Returns the converted array.\n */\n function iteratorToArray(iterator) {\n var data,\n result = [];\n\n while (!(data = iterator.next()).done) {\n result.push(data.value);\n }\n return result;\n }\n\n /**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\n function mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n }\n\n /**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\n function overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n }\n\n /**\n * Replaces all `placeholder` elements in `array` with an internal placeholder\n * and returns an array of their indexes.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {*} placeholder The placeholder to replace.\n * @returns {Array} Returns the new array of placeholder indexes.\n */\n function replaceHolders(array, placeholder) {\n var index = -1,\n length = array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (value === placeholder || value === PLACEHOLDER) {\n array[index] = PLACEHOLDER;\n result[resIndex++] = index;\n }\n }\n return result;\n }\n\n /**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\n function setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n }\n\n /**\n * Converts `set` to its value-value pairs.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the value-value pairs.\n */\n function setToPairs(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = [value, value];\n });\n return result;\n }\n\n /**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * A specialized version of `_.lastIndexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function strictLastIndexOf(array, value, fromIndex) {\n var index = fromIndex + 1;\n while (index--) {\n if (array[index] === value) {\n return index;\n }\n }\n return index;\n }\n\n /**\n * Gets the number of symbols in `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the string size.\n */\n function stringSize(string) {\n return hasUnicode(string)\n ? unicodeSize(string)\n : asciiSize(string);\n }\n\n /**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function stringToArray(string) {\n return hasUnicode(string)\n ? unicodeToArray(string)\n : asciiToArray(string);\n }\n\n /**\n * Used by `_.unescape` to convert HTML entities to characters.\n *\n * @private\n * @param {string} chr The matched character to unescape.\n * @returns {string} Returns the unescaped character.\n */\n var unescapeHtmlChar = basePropertyOf(htmlUnescapes);\n\n /**\n * Gets the size of a Unicode `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\n function unicodeSize(string) {\n var result = reUnicode.lastIndex = 0;\n while (reUnicode.test(string)) {\n ++result;\n }\n return result;\n }\n\n /**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function unicodeToArray(string) {\n return string.match(reUnicode) || [];\n }\n\n /**\n * Splits a Unicode `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\n function unicodeWords(string) {\n return string.match(reUnicodeWord) || [];\n }\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * Create a new pristine `lodash` function using the `context` object.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Util\n * @param {Object} [context=root] The context object.\n * @returns {Function} Returns a new `lodash` function.\n * @example\n *\n * _.mixin({ 'foo': _.constant('foo') });\n *\n * var lodash = _.runInContext();\n * lodash.mixin({ 'bar': lodash.constant('bar') });\n *\n * _.isFunction(_.foo);\n * // => true\n * _.isFunction(_.bar);\n * // => false\n *\n * lodash.isFunction(lodash.foo);\n * // => false\n * lodash.isFunction(lodash.bar);\n * // => true\n *\n * // Create a suped-up `defer` in Node.js.\n * var defer = _.runInContext({ 'setTimeout': setImmediate }).defer;\n */\n var runInContext = (function runInContext(context) {\n context = context == null ? root : _.defaults(root.Object(), context, _.pick(root, contextProps));\n\n /** Built-in constructor references. */\n var Array = context.Array,\n Date = context.Date,\n Error = context.Error,\n Function = context.Function,\n Math = context.Math,\n Object = context.Object,\n RegExp = context.RegExp,\n String = context.String,\n TypeError = context.TypeError;\n\n /** Used for built-in method references. */\n var arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n /** Used to detect overreaching core-js shims. */\n var coreJsData = context['__core-js_shared__'];\n\n /** Used to resolve the decompiled source of functions. */\n var funcToString = funcProto.toString;\n\n /** Used to check objects for own properties. */\n var hasOwnProperty = objectProto.hasOwnProperty;\n\n /** Used to generate unique IDs. */\n var idCounter = 0;\n\n /** Used to detect methods masquerading as native. */\n var maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n }());\n\n /**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\n var nativeObjectToString = objectProto.toString;\n\n /** Used to infer the `Object` constructor. */\n var objectCtorString = funcToString.call(Object);\n\n /** Used to restore the original `_` reference in `_.noConflict`. */\n var oldDash = root._;\n\n /** Used to detect if a method is native. */\n var reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n );\n\n /** Built-in value references. */\n var Buffer = moduleExports ? context.Buffer : undefined,\n Symbol = context.Symbol,\n Uint8Array = context.Uint8Array,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined,\n getPrototype = overArg(Object.getPrototypeOf, Object),\n objectCreate = Object.create,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice,\n spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined,\n symIterator = Symbol ? Symbol.iterator : undefined,\n symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n var defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n }());\n\n /** Mocked built-ins. */\n var ctxClearTimeout = context.clearTimeout !== root.clearTimeout && context.clearTimeout,\n ctxNow = Date && Date.now !== root.Date.now && Date.now,\n ctxSetTimeout = context.setTimeout !== root.setTimeout && context.setTimeout;\n\n /* Built-in method references for those with the same name as other `lodash` methods. */\n var nativeCeil = Math.ceil,\n nativeFloor = Math.floor,\n nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeIsFinite = context.isFinite,\n nativeJoin = arrayProto.join,\n nativeKeys = overArg(Object.keys, Object),\n nativeMax = Math.max,\n nativeMin = Math.min,\n nativeNow = Date.now,\n nativeParseInt = context.parseInt,\n nativeRandom = Math.random,\n nativeReverse = arrayProto.reverse;\n\n /* Built-in method references that are verified to be native. */\n var DataView = getNative(context, 'DataView'),\n Map = getNative(context, 'Map'),\n Promise = getNative(context, 'Promise'),\n Set = getNative(context, 'Set'),\n WeakMap = getNative(context, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n /** Used to store function metadata. */\n var metaMap = WeakMap && new WeakMap;\n\n /** Used to lookup unminified function names. */\n var realNames = {};\n\n /** Used to detect maps, sets, and weakmaps. */\n var dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n /** Used to convert symbols to primitives and strings. */\n var symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a `lodash` object which wraps `value` to enable implicit method\n * chain sequences. Methods that operate on and return arrays, collections,\n * and functions can be chained together. Methods that retrieve a single value\n * or may return a primitive value will automatically end the chain sequence\n * and return the unwrapped value. Otherwise, the value must be unwrapped\n * with `_#value`.\n *\n * Explicit chain sequences, which must be unwrapped with `_#value`, may be\n * enabled using `_.chain`.\n *\n * The execution of chained methods is lazy, that is, it's deferred until\n * `_#value` is implicitly or explicitly called.\n *\n * Lazy evaluation allows several methods to support shortcut fusion.\n * Shortcut fusion is an optimization to merge iteratee calls; this avoids\n * the creation of intermediate arrays and can greatly reduce the number of\n * iteratee executions. Sections of a chain sequence qualify for shortcut\n * fusion if the section is applied to an array and iteratees accept only\n * one argument. The heuristic for whether a section qualifies for shortcut\n * fusion is subject to change.\n *\n * Chaining is supported in custom builds as long as the `_#value` method is\n * directly or indirectly included in the build.\n *\n * In addition to lodash methods, wrappers have `Array` and `String` methods.\n *\n * The wrapper `Array` methods are:\n * `concat`, `join`, `pop`, `push`, `shift`, `sort`, `splice`, and `unshift`\n *\n * The wrapper `String` methods are:\n * `replace` and `split`\n *\n * The wrapper methods that support shortcut fusion are:\n * `at`, `compact`, `drop`, `dropRight`, `dropWhile`, `filter`, `find`,\n * `findLast`, `head`, `initial`, `last`, `map`, `reject`, `reverse`, `slice`,\n * `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, and `toArray`\n *\n * The chainable wrapper methods are:\n * `after`, `ary`, `assign`, `assignIn`, `assignInWith`, `assignWith`, `at`,\n * `before`, `bind`, `bindAll`, `bindKey`, `castArray`, `chain`, `chunk`,\n * `commit`, `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`,\n * `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`,\n * `difference`, `differenceBy`, `differenceWith`, `drop`, `dropRight`,\n * `dropRightWhile`, `dropWhile`, `extend`, `extendWith`, `fill`, `filter`,\n * `flatMap`, `flatMapDeep`, `flatMapDepth`, `flatten`, `flattenDeep`,\n * `flattenDepth`, `flip`, `flow`, `flowRight`, `fromPairs`, `functions`,\n * `functionsIn`, `groupBy`, `initial`, `intersection`, `intersectionBy`,\n * `intersectionWith`, `invert`, `invertBy`, `invokeMap`, `iteratee`, `keyBy`,\n * `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`,\n * `memoize`, `merge`, `mergeWith`, `method`, `methodOf`, `mixin`, `negate`,\n * `nthArg`, `omit`, `omitBy`, `once`, `orderBy`, `over`, `overArgs`,\n * `overEvery`, `overSome`, `partial`, `partialRight`, `partition`, `pick`,\n * `pickBy`, `plant`, `property`, `propertyOf`, `pull`, `pullAll`, `pullAllBy`,\n * `pullAllWith`, `pullAt`, `push`, `range`, `rangeRight`, `rearg`, `reject`,\n * `remove`, `rest`, `reverse`, `sampleSize`, `set`, `setWith`, `shuffle`,\n * `slice`, `sort`, `sortBy`, `splice`, `spread`, `tail`, `take`, `takeRight`,\n * `takeRightWhile`, `takeWhile`, `tap`, `throttle`, `thru`, `toArray`,\n * `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`, `transform`, `unary`,\n * `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`, `uniqWith`, `unset`,\n * `unshift`, `unzip`, `unzipWith`, `update`, `updateWith`, `values`,\n * `valuesIn`, `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`,\n * `zipObject`, `zipObjectDeep`, and `zipWith`\n *\n * The wrapper methods that are **not** chainable by default are:\n * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`,\n * `cloneDeep`, `cloneDeepWith`, `cloneWith`, `conformsTo`, `deburr`,\n * `defaultTo`, `divide`, `each`, `eachRight`, `endsWith`, `eq`, `escape`,\n * `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, `findLast`,\n * `findLastIndex`, `findLastKey`, `first`, `floor`, `forEach`, `forEachRight`,\n * `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`,\n * `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`,\n * `isArguments`, `isArray`, `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`,\n * `isBoolean`, `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`,\n * `isEqualWith`, `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`,\n * `isMap`, `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`,\n * `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`,\n * `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`,\n * `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`,\n * `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`,\n * `min`, `minBy`, `multiply`, `noConflict`, `noop`, `now`, `nth`, `pad`,\n * `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`,\n * `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`,\n * `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`,\n * `sortedLastIndexBy`, `startCase`, `startsWith`, `stubArray`, `stubFalse`,\n * `stubObject`, `stubString`, `stubTrue`, `subtract`, `sum`, `sumBy`,\n * `template`, `times`, `toFinite`, `toInteger`, `toJSON`, `toLength`,\n * `toLower`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`,\n * `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`,\n * `upperFirst`, `value`, and `words`\n *\n * @name _\n * @constructor\n * @category Seq\n * @param {*} value The value to wrap in a `lodash` instance.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var wrapped = _([1, 2, 3]);\n *\n * // Returns an unwrapped value.\n * wrapped.reduce(_.add);\n * // => 6\n *\n * // Returns a wrapped value.\n * var squares = wrapped.map(square);\n *\n * _.isArray(squares);\n * // => false\n *\n * _.isArray(squares.value());\n * // => true\n */\n function lodash(value) {\n if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) {\n if (value instanceof LodashWrapper) {\n return value;\n }\n if (hasOwnProperty.call(value, '__wrapped__')) {\n return wrapperClone(value);\n }\n }\n return new LodashWrapper(value);\n }\n\n /**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\n var baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n }());\n\n /**\n * The function whose prototype chain sequence wrappers inherit from.\n *\n * @private\n */\n function baseLodash() {\n // No operation performed.\n }\n\n /**\n * The base constructor for creating `lodash` wrapper objects.\n *\n * @private\n * @param {*} value The value to wrap.\n * @param {boolean} [chainAll] Enable explicit method chain sequences.\n */\n function LodashWrapper(value, chainAll) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__chain__ = !!chainAll;\n this.__index__ = 0;\n this.__values__ = undefined;\n }\n\n /**\n * By default, the template delimiters used by lodash are like those in\n * embedded Ruby (ERB) as well as ES2015 template strings. Change the\n * following template settings to use alternative delimiters.\n *\n * @static\n * @memberOf _\n * @type {Object}\n */\n lodash.templateSettings = {\n\n /**\n * Used to detect `data` property values to be HTML-escaped.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'escape': reEscape,\n\n /**\n * Used to detect code to be evaluated.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'evaluate': reEvaluate,\n\n /**\n * Used to detect `data` property values to inject.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'interpolate': reInterpolate,\n\n /**\n * Used to reference the data object in the template text.\n *\n * @memberOf _.templateSettings\n * @type {string}\n */\n 'variable': '',\n\n /**\n * Used to import variables into the compiled template.\n *\n * @memberOf _.templateSettings\n * @type {Object}\n */\n 'imports': {\n\n /**\n * A reference to the `lodash` function.\n *\n * @memberOf _.templateSettings.imports\n * @type {Function}\n */\n '_': lodash\n }\n };\n\n // Ensure wrappers are instances of `baseLodash`.\n lodash.prototype = baseLodash.prototype;\n lodash.prototype.constructor = lodash;\n\n LodashWrapper.prototype = baseCreate(baseLodash.prototype);\n LodashWrapper.prototype.constructor = LodashWrapper;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation.\n *\n * @private\n * @constructor\n * @param {*} value The value to wrap.\n */\n function LazyWrapper(value) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__dir__ = 1;\n this.__filtered__ = false;\n this.__iteratees__ = [];\n this.__takeCount__ = MAX_ARRAY_LENGTH;\n this.__views__ = [];\n }\n\n /**\n * Creates a clone of the lazy wrapper object.\n *\n * @private\n * @name clone\n * @memberOf LazyWrapper\n * @returns {Object} Returns the cloned `LazyWrapper` object.\n */\n function lazyClone() {\n var result = new LazyWrapper(this.__wrapped__);\n result.__actions__ = copyArray(this.__actions__);\n result.__dir__ = this.__dir__;\n result.__filtered__ = this.__filtered__;\n result.__iteratees__ = copyArray(this.__iteratees__);\n result.__takeCount__ = this.__takeCount__;\n result.__views__ = copyArray(this.__views__);\n return result;\n }\n\n /**\n * Reverses the direction of lazy iteration.\n *\n * @private\n * @name reverse\n * @memberOf LazyWrapper\n * @returns {Object} Returns the new reversed `LazyWrapper` object.\n */\n function lazyReverse() {\n if (this.__filtered__) {\n var result = new LazyWrapper(this);\n result.__dir__ = -1;\n result.__filtered__ = true;\n } else {\n result = this.clone();\n result.__dir__ *= -1;\n }\n return result;\n }\n\n /**\n * Extracts the unwrapped value from its lazy wrapper.\n *\n * @private\n * @name value\n * @memberOf LazyWrapper\n * @returns {*} Returns the unwrapped value.\n */\n function lazyValue() {\n var array = this.__wrapped__.value(),\n dir = this.__dir__,\n isArr = isArray(array),\n isRight = dir < 0,\n arrLength = isArr ? array.length : 0,\n view = getView(0, arrLength, this.__views__),\n start = view.start,\n end = view.end,\n length = end - start,\n index = isRight ? end : (start - 1),\n iteratees = this.__iteratees__,\n iterLength = iteratees.length,\n resIndex = 0,\n takeCount = nativeMin(length, this.__takeCount__);\n\n if (!isArr || (!isRight && arrLength == length && takeCount == length)) {\n return baseWrapperValue(array, this.__actions__);\n }\n var result = [];\n\n outer:\n while (length-- && resIndex < takeCount) {\n index += dir;\n\n var iterIndex = -1,\n value = array[index];\n\n while (++iterIndex < iterLength) {\n var data = iteratees[iterIndex],\n iteratee = data.iteratee,\n type = data.type,\n computed = iteratee(value);\n\n if (type == LAZY_MAP_FLAG) {\n value = computed;\n } else if (!computed) {\n if (type == LAZY_FILTER_FLAG) {\n continue outer;\n } else {\n break outer;\n }\n }\n }\n result[resIndex++] = value;\n }\n return result;\n }\n\n // Ensure `LazyWrapper` is an instance of `baseLodash`.\n LazyWrapper.prototype = baseCreate(baseLodash.prototype);\n LazyWrapper.prototype.constructor = LazyWrapper;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\n function hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n }\n\n /**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n }\n\n /**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n }\n\n /**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\n function hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n }\n\n // Add methods to `Hash`.\n Hash.prototype.clear = hashClear;\n Hash.prototype['delete'] = hashDelete;\n Hash.prototype.get = hashGet;\n Hash.prototype.has = hashHas;\n Hash.prototype.set = hashSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\n function listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n }\n\n /**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n }\n\n /**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n }\n\n /**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\n function listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n }\n\n // Add methods to `ListCache`.\n ListCache.prototype.clear = listCacheClear;\n ListCache.prototype['delete'] = listCacheDelete;\n ListCache.prototype.get = listCacheGet;\n ListCache.prototype.has = listCacheHas;\n ListCache.prototype.set = listCacheSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\n function mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n }\n\n /**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n }\n\n /**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function mapCacheGet(key) {\n return getMapData(this, key).get(key);\n }\n\n /**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function mapCacheHas(key) {\n return getMapData(this, key).has(key);\n }\n\n /**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\n function mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n }\n\n // Add methods to `MapCache`.\n MapCache.prototype.clear = mapCacheClear;\n MapCache.prototype['delete'] = mapCacheDelete;\n MapCache.prototype.get = mapCacheGet;\n MapCache.prototype.has = mapCacheHas;\n MapCache.prototype.set = mapCacheSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\n function SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n }\n\n /**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\n function setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n }\n\n /**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\n function setCacheHas(value) {\n return this.__data__.has(value);\n }\n\n // Add methods to `SetCache`.\n SetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\n SetCache.prototype.has = setCacheHas;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n }\n\n /**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\n function stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n }\n\n /**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function stackGet(key) {\n return this.__data__.get(key);\n }\n\n /**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function stackHas(key) {\n return this.__data__.has(key);\n }\n\n /**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\n function stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n }\n\n // Add methods to `Stack`.\n Stack.prototype.clear = stackClear;\n Stack.prototype['delete'] = stackDelete;\n Stack.prototype.get = stackGet;\n Stack.prototype.has = stackHas;\n Stack.prototype.set = stackSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\n function arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `_.sample` for arrays.\n *\n * @private\n * @param {Array} array The array to sample.\n * @returns {*} Returns the random element.\n */\n function arraySample(array) {\n var length = array.length;\n return length ? array[baseRandom(0, length - 1)] : undefined;\n }\n\n /**\n * A specialized version of `_.sampleSize` for arrays.\n *\n * @private\n * @param {Array} array The array to sample.\n * @param {number} n The number of elements to sample.\n * @returns {Array} Returns the random elements.\n */\n function arraySampleSize(array, n) {\n return shuffleSelf(copyArray(array), baseClamp(n, 0, array.length));\n }\n\n /**\n * A specialized version of `_.shuffle` for arrays.\n *\n * @private\n * @param {Array} array The array to shuffle.\n * @returns {Array} Returns the new shuffled array.\n */\n function arrayShuffle(array) {\n return shuffleSelf(copyArray(array));\n }\n\n /**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function assignMergeValue(object, key, value) {\n if ((value !== undefined && !eq(object[key], value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n }\n\n /**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n }\n\n /**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n }\n\n /**\n * Aggregates elements of `collection` on `accumulator` with keys transformed\n * by `iteratee` and values set by `setter`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\n function baseAggregator(collection, setter, iteratee, accumulator) {\n baseEach(collection, function(value, key, collection) {\n setter(accumulator, value, iteratee(value), collection);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\n function baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n }\n\n /**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\n function baseAssignIn(object, source) {\n return object && copyObject(source, keysIn(source), object);\n }\n\n /**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n }\n\n /**\n * The base implementation of `_.at` without support for individual paths.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {string[]} paths The property paths to pick.\n * @returns {Array} Returns the picked elements.\n */\n function baseAt(object, paths) {\n var index = -1,\n length = paths.length,\n result = Array(length),\n skip = object == null;\n\n while (++index < length) {\n result[index] = skip ? undefined : get(object, paths[index]);\n }\n return result;\n }\n\n /**\n * The base implementation of `_.clamp` which doesn't coerce arguments.\n *\n * @private\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n */\n function baseClamp(number, lower, upper) {\n if (number === number) {\n if (upper !== undefined) {\n number = number <= upper ? number : upper;\n }\n if (lower !== undefined) {\n number = number >= lower ? number : lower;\n }\n }\n return number;\n }\n\n /**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Deep clone\n * 2 - Flatten inherited properties\n * 4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\n function baseClone(value, bitmask, customizer, key, object, stack) {\n var result,\n isDeep = bitmask & CLONE_DEEP_FLAG,\n isFlat = bitmask & CLONE_FLAT_FLAG,\n isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n result = (isFlat || isFunc) ? {} : initCloneObject(value);\n if (!isDeep) {\n return isFlat\n ? copySymbolsIn(value, baseAssignIn(result, value))\n : copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (isSet(value)) {\n value.forEach(function(subValue) {\n result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n });\n } else if (isMap(value)) {\n value.forEach(function(subValue, key) {\n result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n }\n\n var keysFunc = isFull\n ? (isFlat ? getAllKeysIn : getAllKeys)\n : (isFlat ? keysIn : keys);\n\n var props = isArr ? undefined : keysFunc(value);\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n return result;\n }\n\n /**\n * The base implementation of `_.conforms` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property predicates to conform to.\n * @returns {Function} Returns the new spec function.\n */\n function baseConforms(source) {\n var props = keys(source);\n return function(object) {\n return baseConformsTo(object, source, props);\n };\n }\n\n /**\n * The base implementation of `_.conformsTo` which accepts `props` to check.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property predicates to conform to.\n * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n */\n function baseConformsTo(object, source, props) {\n var length = props.length;\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (length--) {\n var key = props[length],\n predicate = source[key],\n value = object[key];\n\n if ((value === undefined && !(key in object)) || !predicate(value)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * The base implementation of `_.delay` and `_.defer` which accepts `args`\n * to provide to `func`.\n *\n * @private\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {Array} args The arguments to provide to `func`.\n * @returns {number|Object} Returns the timer id or timeout object.\n */\n function baseDelay(func, wait, args) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return setTimeout(function() { func.apply(undefined, args); }, wait);\n }\n\n /**\n * The base implementation of methods like `_.difference` without support\n * for excluding multiple arrays or iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Array} values The values to exclude.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n */\n function baseDifference(array, values, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n isCommon = true,\n length = array.length,\n result = [],\n valuesLength = values.length;\n\n if (!length) {\n return result;\n }\n if (iteratee) {\n values = arrayMap(values, baseUnary(iteratee));\n }\n if (comparator) {\n includes = arrayIncludesWith;\n isCommon = false;\n }\n else if (values.length >= LARGE_ARRAY_SIZE) {\n includes = cacheHas;\n isCommon = false;\n values = new SetCache(values);\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee == null ? value : iteratee(value);\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var valuesIndex = valuesLength;\n while (valuesIndex--) {\n if (values[valuesIndex] === computed) {\n continue outer;\n }\n }\n result.push(value);\n }\n else if (!includes(values, computed, comparator)) {\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\n var baseEach = createBaseEach(baseForOwn);\n\n /**\n * The base implementation of `_.forEachRight` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\n var baseEachRight = createBaseEach(baseForOwnRight, true);\n\n /**\n * The base implementation of `_.every` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`\n */\n function baseEvery(collection, predicate) {\n var result = true;\n baseEach(collection, function(value, index, collection) {\n result = !!predicate(value, index, collection);\n return result;\n });\n return result;\n }\n\n /**\n * The base implementation of methods like `_.max` and `_.min` which accepts a\n * `comparator` to determine the extremum value.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The iteratee invoked per iteration.\n * @param {Function} comparator The comparator used to compare values.\n * @returns {*} Returns the extremum value.\n */\n function baseExtremum(array, iteratee, comparator) {\n var index = -1,\n length = array.length;\n\n while (++index < length) {\n var value = array[index],\n current = iteratee(value);\n\n if (current != null && (computed === undefined\n ? (current === current && !isSymbol(current))\n : comparator(current, computed)\n )) {\n var computed = current,\n result = value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.fill` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to fill.\n * @param {*} value The value to fill `array` with.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns `array`.\n */\n function baseFill(array, value, start, end) {\n var length = array.length;\n\n start = toInteger(start);\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = (end === undefined || end > length) ? length : toInteger(end);\n if (end < 0) {\n end += length;\n }\n end = start > end ? 0 : toLength(end);\n while (start < end) {\n array[start++] = value;\n }\n return array;\n }\n\n /**\n * The base implementation of `_.filter` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\n function baseFilter(collection, predicate) {\n var result = [];\n baseEach(collection, function(value, index, collection) {\n if (predicate(value, index, collection)) {\n result.push(value);\n }\n });\n return result;\n }\n\n /**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\n function baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\n var baseFor = createBaseFor();\n\n /**\n * This function is like `baseFor` except that it iterates over properties\n * in the opposite order.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\n var baseForRight = createBaseFor(true);\n\n /**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\n function baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n }\n\n /**\n * The base implementation of `_.forOwnRight` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\n function baseForOwnRight(object, iteratee) {\n return object && baseForRight(object, iteratee, keys);\n }\n\n /**\n * The base implementation of `_.functions` which creates an array of\n * `object` function property names filtered from `props`.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Array} props The property names to filter.\n * @returns {Array} Returns the function names.\n */\n function baseFunctions(object, props) {\n return arrayFilter(props, function(key) {\n return isFunction(object[key]);\n });\n }\n\n /**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\n function baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n }\n\n /**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n }\n\n /**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\n function baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n }\n\n /**\n * The base implementation of `_.gt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than `other`,\n * else `false`.\n */\n function baseGt(value, other) {\n return value > other;\n }\n\n /**\n * The base implementation of `_.has` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\n function baseHas(object, key) {\n return object != null && hasOwnProperty.call(object, key);\n }\n\n /**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\n function baseHasIn(object, key) {\n return object != null && key in Object(object);\n }\n\n /**\n * The base implementation of `_.inRange` which doesn't coerce arguments.\n *\n * @private\n * @param {number} number The number to check.\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n */\n function baseInRange(number, start, end) {\n return number >= nativeMin(start, end) && number < nativeMax(start, end);\n }\n\n /**\n * The base implementation of methods like `_.intersection`, without support\n * for iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of shared values.\n */\n function baseIntersection(arrays, iteratee, comparator) {\n var includes = comparator ? arrayIncludesWith : arrayIncludes,\n length = arrays[0].length,\n othLength = arrays.length,\n othIndex = othLength,\n caches = Array(othLength),\n maxLength = Infinity,\n result = [];\n\n while (othIndex--) {\n var array = arrays[othIndex];\n if (othIndex && iteratee) {\n array = arrayMap(array, baseUnary(iteratee));\n }\n maxLength = nativeMin(array.length, maxLength);\n caches[othIndex] = !comparator && (iteratee || (length >= 120 && array.length >= 120))\n ? new SetCache(othIndex && array)\n : undefined;\n }\n array = arrays[0];\n\n var index = -1,\n seen = caches[0];\n\n outer:\n while (++index < length && result.length < maxLength) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (!(seen\n ? cacheHas(seen, computed)\n : includes(result, computed, comparator)\n )) {\n othIndex = othLength;\n while (--othIndex) {\n var cache = caches[othIndex];\n if (!(cache\n ? cacheHas(cache, computed)\n : includes(arrays[othIndex], computed, comparator))\n ) {\n continue outer;\n }\n }\n if (seen) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.invert` and `_.invertBy` which inverts\n * `object` with values transformed by `iteratee` and set by `setter`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform values.\n * @param {Object} accumulator The initial inverted object.\n * @returns {Function} Returns `accumulator`.\n */\n function baseInverter(object, setter, iteratee, accumulator) {\n baseForOwn(object, function(value, key, object) {\n setter(accumulator, iteratee(value), key, object);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.invoke` without support for individual\n * method arguments.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the method to invoke.\n * @param {Array} args The arguments to invoke the method with.\n * @returns {*} Returns the result of the invoked method.\n */\n function baseInvoke(object, path, args) {\n path = castPath(path, object);\n object = parent(object, path);\n var func = object == null ? object : object[toKey(last(path))];\n return func == null ? undefined : apply(func, object, args);\n }\n\n /**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\n function baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n }\n\n /**\n * The base implementation of `_.isArrayBuffer` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n */\n function baseIsArrayBuffer(value) {\n return isObjectLike(value) && baseGetTag(value) == arrayBufferTag;\n }\n\n /**\n * The base implementation of `_.isDate` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n */\n function baseIsDate(value) {\n return isObjectLike(value) && baseGetTag(value) == dateTag;\n }\n\n /**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\n function baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n }\n\n /**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n }\n\n /**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\n function baseIsMap(value) {\n return isObjectLike(value) && getTag(value) == mapTag;\n }\n\n /**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\n function baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n }\n\n /**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\n function baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n }\n\n /**\n * The base implementation of `_.isRegExp` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n */\n function baseIsRegExp(value) {\n return isObjectLike(value) && baseGetTag(value) == regexpTag;\n }\n\n /**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\n function baseIsSet(value) {\n return isObjectLike(value) && getTag(value) == setTag;\n }\n\n /**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\n function baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n }\n\n /**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\n function baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n }\n\n /**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.lt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n * else `false`.\n */\n function baseLt(value, other) {\n return value < other;\n }\n\n /**\n * The base implementation of `_.map` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\n function baseMap(collection, iteratee) {\n var index = -1,\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value, key, collection) {\n result[++index] = iteratee(value, key, collection);\n });\n return result;\n }\n\n /**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\n function baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n }\n\n /**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\n function baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n }\n\n /**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\n function baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n baseFor(source, function(srcValue, key) {\n stack || (stack = new Stack);\n if (isObject(srcValue)) {\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n }\n else {\n var newValue = customizer\n ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n assignMergeValue(object, key, newValue);\n }\n }, keysIn);\n }\n\n /**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\n function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = safeGet(object, key),\n srcValue = safeGet(source, key),\n stacked = stack.get(srcValue);\n\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer\n ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n : undefined;\n\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n var isArr = isArray(srcValue),\n isBuff = !isArr && isBuffer(srcValue),\n isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n newValue = srcValue;\n if (isArr || isBuff || isTyped) {\n if (isArray(objValue)) {\n newValue = objValue;\n }\n else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n }\n else if (isBuff) {\n isCommon = false;\n newValue = cloneBuffer(srcValue, true);\n }\n else if (isTyped) {\n isCommon = false;\n newValue = cloneTypedArray(srcValue, true);\n }\n else {\n newValue = [];\n }\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n newValue = objValue;\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n }\n else if (!isObject(objValue) || isFunction(objValue)) {\n newValue = initCloneObject(srcValue);\n }\n }\n else {\n isCommon = false;\n }\n }\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack['delete'](srcValue);\n }\n assignMergeValue(object, key, newValue);\n }\n\n /**\n * The base implementation of `_.nth` which doesn't coerce arguments.\n *\n * @private\n * @param {Array} array The array to query.\n * @param {number} n The index of the element to return.\n * @returns {*} Returns the nth element of `array`.\n */\n function baseNth(array, n) {\n var length = array.length;\n if (!length) {\n return;\n }\n n += n < 0 ? length : 0;\n return isIndex(n, length) ? array[n] : undefined;\n }\n\n /**\n * The base implementation of `_.orderBy` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.\n * @param {string[]} orders The sort orders of `iteratees`.\n * @returns {Array} Returns the new sorted array.\n */\n function baseOrderBy(collection, iteratees, orders) {\n if (iteratees.length) {\n iteratees = arrayMap(iteratees, function(iteratee) {\n if (isArray(iteratee)) {\n return function(value) {\n return baseGet(value, iteratee.length === 1 ? iteratee[0] : iteratee);\n }\n }\n return iteratee;\n });\n } else {\n iteratees = [identity];\n }\n\n var index = -1;\n iteratees = arrayMap(iteratees, baseUnary(getIteratee()));\n\n var result = baseMap(collection, function(value, key, collection) {\n var criteria = arrayMap(iteratees, function(iteratee) {\n return iteratee(value);\n });\n return { 'criteria': criteria, 'index': ++index, 'value': value };\n });\n\n return baseSortBy(result, function(object, other) {\n return compareMultiple(object, other, orders);\n });\n }\n\n /**\n * The base implementation of `_.pick` without support for individual\n * property identifiers.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @returns {Object} Returns the new object.\n */\n function basePick(object, paths) {\n return basePickBy(object, paths, function(value, path) {\n return hasIn(object, path);\n });\n }\n\n /**\n * The base implementation of `_.pickBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @param {Function} predicate The function invoked per property.\n * @returns {Object} Returns the new object.\n */\n function basePickBy(object, paths, predicate) {\n var index = -1,\n length = paths.length,\n result = {};\n\n while (++index < length) {\n var path = paths[index],\n value = baseGet(object, path);\n\n if (predicate(value, path)) {\n baseSet(result, castPath(path, object), value);\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\n function basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n }\n\n /**\n * The base implementation of `_.pullAllBy` without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns `array`.\n */\n function basePullAll(array, values, iteratee, comparator) {\n var indexOf = comparator ? baseIndexOfWith : baseIndexOf,\n index = -1,\n length = values.length,\n seen = array;\n\n if (array === values) {\n values = copyArray(values);\n }\n if (iteratee) {\n seen = arrayMap(array, baseUnary(iteratee));\n }\n while (++index < length) {\n var fromIndex = 0,\n value = values[index],\n computed = iteratee ? iteratee(value) : value;\n\n while ((fromIndex = indexOf(seen, computed, fromIndex, comparator)) > -1) {\n if (seen !== array) {\n splice.call(seen, fromIndex, 1);\n }\n splice.call(array, fromIndex, 1);\n }\n }\n return array;\n }\n\n /**\n * The base implementation of `_.pullAt` without support for individual\n * indexes or capturing the removed elements.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {number[]} indexes The indexes of elements to remove.\n * @returns {Array} Returns `array`.\n */\n function basePullAt(array, indexes) {\n var length = array ? indexes.length : 0,\n lastIndex = length - 1;\n\n while (length--) {\n var index = indexes[length];\n if (length == lastIndex || index !== previous) {\n var previous = index;\n if (isIndex(index)) {\n splice.call(array, index, 1);\n } else {\n baseUnset(array, index);\n }\n }\n }\n return array;\n }\n\n /**\n * The base implementation of `_.random` without support for returning\n * floating-point numbers.\n *\n * @private\n * @param {number} lower The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the random number.\n */\n function baseRandom(lower, upper) {\n return lower + nativeFloor(nativeRandom() * (upper - lower + 1));\n }\n\n /**\n * The base implementation of `_.range` and `_.rangeRight` which doesn't\n * coerce arguments.\n *\n * @private\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @param {number} step The value to increment or decrement by.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the range of numbers.\n */\n function baseRange(start, end, step, fromRight) {\n var index = -1,\n length = nativeMax(nativeCeil((end - start) / (step || 1)), 0),\n result = Array(length);\n\n while (length--) {\n result[fromRight ? length : ++index] = start;\n start += step;\n }\n return result;\n }\n\n /**\n * The base implementation of `_.repeat` which doesn't coerce arguments.\n *\n * @private\n * @param {string} string The string to repeat.\n * @param {number} n The number of times to repeat the string.\n * @returns {string} Returns the repeated string.\n */\n function baseRepeat(string, n) {\n var result = '';\n if (!string || n < 1 || n > MAX_SAFE_INTEGER) {\n return result;\n }\n // Leverage the exponentiation by squaring algorithm for a faster repeat.\n // See https://en.wikipedia.org/wiki/Exponentiation_by_squaring for more details.\n do {\n if (n % 2) {\n result += string;\n }\n n = nativeFloor(n / 2);\n if (n) {\n string += string;\n }\n } while (n);\n\n return result;\n }\n\n /**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\n function baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n }\n\n /**\n * The base implementation of `_.sample`.\n *\n * @private\n * @param {Array|Object} collection The collection to sample.\n * @returns {*} Returns the random element.\n */\n function baseSample(collection) {\n return arraySample(values(collection));\n }\n\n /**\n * The base implementation of `_.sampleSize` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to sample.\n * @param {number} n The number of elements to sample.\n * @returns {Array} Returns the random elements.\n */\n function baseSampleSize(collection, n) {\n var array = values(collection);\n return shuffleSelf(array, baseClamp(n, 0, array.length));\n }\n\n /**\n * The base implementation of `_.set`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\n function baseSet(object, path, value, customizer) {\n if (!isObject(object)) {\n return object;\n }\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n lastIndex = length - 1,\n nested = object;\n\n while (nested != null && ++index < length) {\n var key = toKey(path[index]),\n newValue = value;\n\n if (key === '__proto__' || key === 'constructor' || key === 'prototype') {\n return object;\n }\n\n if (index != lastIndex) {\n var objValue = nested[key];\n newValue = customizer ? customizer(objValue, key, nested) : undefined;\n if (newValue === undefined) {\n newValue = isObject(objValue)\n ? objValue\n : (isIndex(path[index + 1]) ? [] : {});\n }\n }\n assignValue(nested, key, newValue);\n nested = nested[key];\n }\n return object;\n }\n\n /**\n * The base implementation of `setData` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\n var baseSetData = !metaMap ? identity : function(func, data) {\n metaMap.set(func, data);\n return func;\n };\n\n /**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\n var baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n };\n\n /**\n * The base implementation of `_.shuffle`.\n *\n * @private\n * @param {Array|Object} collection The collection to shuffle.\n * @returns {Array} Returns the new shuffled array.\n */\n function baseShuffle(collection) {\n return shuffleSelf(values(collection));\n }\n\n /**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\n function baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n }\n\n /**\n * The base implementation of `_.some` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\n function baseSome(collection, predicate) {\n var result;\n\n baseEach(collection, function(value, index, collection) {\n result = predicate(value, index, collection);\n return !result;\n });\n return !!result;\n }\n\n /**\n * The base implementation of `_.sortedIndex` and `_.sortedLastIndex` which\n * performs a binary search of `array` to determine the index at which `value`\n * should be inserted into `array` in order to maintain its sort order.\n *\n * @private\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {boolean} [retHighest] Specify returning the highest qualified index.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n */\n function baseSortedIndex(array, value, retHighest) {\n var low = 0,\n high = array == null ? low : array.length;\n\n if (typeof value == 'number' && value === value && high <= HALF_MAX_ARRAY_LENGTH) {\n while (low < high) {\n var mid = (low + high) >>> 1,\n computed = array[mid];\n\n if (computed !== null && !isSymbol(computed) &&\n (retHighest ? (computed <= value) : (computed < value))) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return high;\n }\n return baseSortedIndexBy(array, value, identity, retHighest);\n }\n\n /**\n * The base implementation of `_.sortedIndexBy` and `_.sortedLastIndexBy`\n * which invokes `iteratee` for `value` and each element of `array` to compute\n * their sort ranking. The iteratee is invoked with one argument; (value).\n *\n * @private\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} iteratee The iteratee invoked per element.\n * @param {boolean} [retHighest] Specify returning the highest qualified index.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n */\n function baseSortedIndexBy(array, value, iteratee, retHighest) {\n var low = 0,\n high = array == null ? 0 : array.length;\n if (high === 0) {\n return 0;\n }\n\n value = iteratee(value);\n var valIsNaN = value !== value,\n valIsNull = value === null,\n valIsSymbol = isSymbol(value),\n valIsUndefined = value === undefined;\n\n while (low < high) {\n var mid = nativeFloor((low + high) / 2),\n computed = iteratee(array[mid]),\n othIsDefined = computed !== undefined,\n othIsNull = computed === null,\n othIsReflexive = computed === computed,\n othIsSymbol = isSymbol(computed);\n\n if (valIsNaN) {\n var setLow = retHighest || othIsReflexive;\n } else if (valIsUndefined) {\n setLow = othIsReflexive && (retHighest || othIsDefined);\n } else if (valIsNull) {\n setLow = othIsReflexive && othIsDefined && (retHighest || !othIsNull);\n } else if (valIsSymbol) {\n setLow = othIsReflexive && othIsDefined && !othIsNull && (retHighest || !othIsSymbol);\n } else if (othIsNull || othIsSymbol) {\n setLow = false;\n } else {\n setLow = retHighest ? (computed <= value) : (computed < value);\n }\n if (setLow) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return nativeMin(high, MAX_ARRAY_INDEX);\n }\n\n /**\n * The base implementation of `_.sortedUniq` and `_.sortedUniqBy` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\n function baseSortedUniq(array, iteratee) {\n var index = -1,\n length = array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n if (!index || !eq(computed, seen)) {\n var seen = computed;\n result[resIndex++] = value === 0 ? 0 : value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.toNumber` which doesn't ensure correct\n * conversions of binary, hexadecimal, or octal string values.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n */\n function baseToNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n return +value;\n }\n\n /**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\n function baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n }\n\n /**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\n function baseUniq(array, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n length = array.length,\n isCommon = true,\n result = [],\n seen = result;\n\n if (comparator) {\n isCommon = false;\n includes = arrayIncludesWith;\n }\n else if (length >= LARGE_ARRAY_SIZE) {\n var set = iteratee ? null : createSet(array);\n if (set) {\n return setToArray(set);\n }\n isCommon = false;\n includes = cacheHas;\n seen = new SetCache;\n }\n else {\n seen = iteratee ? [] : result;\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var seenIndex = seen.length;\n while (seenIndex--) {\n if (seen[seenIndex] === computed) {\n continue outer;\n }\n }\n if (iteratee) {\n seen.push(computed);\n }\n result.push(value);\n }\n else if (!includes(seen, computed, comparator)) {\n if (seen !== result) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.unset`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The property path to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n */\n function baseUnset(object, path) {\n path = castPath(path, object);\n object = parent(object, path);\n return object == null || delete object[toKey(last(path))];\n }\n\n /**\n * The base implementation of `_.update`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to update.\n * @param {Function} updater The function to produce the updated value.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\n function baseUpdate(object, path, updater, customizer) {\n return baseSet(object, path, updater(baseGet(object, path)), customizer);\n }\n\n /**\n * The base implementation of methods like `_.dropWhile` and `_.takeWhile`\n * without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to query.\n * @param {Function} predicate The function invoked per iteration.\n * @param {boolean} [isDrop] Specify dropping elements instead of taking them.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the slice of `array`.\n */\n function baseWhile(array, predicate, isDrop, fromRight) {\n var length = array.length,\n index = fromRight ? length : -1;\n\n while ((fromRight ? index-- : ++index < length) &&\n predicate(array[index], index, array)) {}\n\n return isDrop\n ? baseSlice(array, (fromRight ? 0 : index), (fromRight ? index + 1 : length))\n : baseSlice(array, (fromRight ? index + 1 : 0), (fromRight ? length : index));\n }\n\n /**\n * The base implementation of `wrapperValue` which returns the result of\n * performing a sequence of actions on the unwrapped `value`, where each\n * successive action is supplied the return value of the previous.\n *\n * @private\n * @param {*} value The unwrapped value.\n * @param {Array} actions Actions to perform to resolve the unwrapped value.\n * @returns {*} Returns the resolved value.\n */\n function baseWrapperValue(value, actions) {\n var result = value;\n if (result instanceof LazyWrapper) {\n result = result.value();\n }\n return arrayReduce(actions, function(result, action) {\n return action.func.apply(action.thisArg, arrayPush([result], action.args));\n }, result);\n }\n\n /**\n * The base implementation of methods like `_.xor`, without support for\n * iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of values.\n */\n function baseXor(arrays, iteratee, comparator) {\n var length = arrays.length;\n if (length < 2) {\n return length ? baseUniq(arrays[0]) : [];\n }\n var index = -1,\n result = Array(length);\n\n while (++index < length) {\n var array = arrays[index],\n othIndex = -1;\n\n while (++othIndex < length) {\n if (othIndex != index) {\n result[index] = baseDifference(result[index] || array, arrays[othIndex], iteratee, comparator);\n }\n }\n }\n return baseUniq(baseFlatten(result, 1), iteratee, comparator);\n }\n\n /**\n * This base implementation of `_.zipObject` which assigns values using `assignFunc`.\n *\n * @private\n * @param {Array} props The property identifiers.\n * @param {Array} values The property values.\n * @param {Function} assignFunc The function to assign values.\n * @returns {Object} Returns the new object.\n */\n function baseZipObject(props, values, assignFunc) {\n var index = -1,\n length = props.length,\n valsLength = values.length,\n result = {};\n\n while (++index < length) {\n var value = index < valsLength ? values[index] : undefined;\n assignFunc(result, props[index], value);\n }\n return result;\n }\n\n /**\n * Casts `value` to an empty array if it's not an array like object.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Array|Object} Returns the cast array-like object.\n */\n function castArrayLikeObject(value) {\n return isArrayLikeObject(value) ? value : [];\n }\n\n /**\n * Casts `value` to `identity` if it's not a function.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Function} Returns cast function.\n */\n function castFunction(value) {\n return typeof value == 'function' ? value : identity;\n }\n\n /**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\n function castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n }\n\n /**\n * A `baseRest` alias which can be replaced with `identity` by module\n * replacement plugins.\n *\n * @private\n * @type {Function}\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\n var castRest = baseRest;\n\n /**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\n function castSlice(array, start, end) {\n var length = array.length;\n end = end === undefined ? length : end;\n return (!start && end >= length) ? array : baseSlice(array, start, end);\n }\n\n /**\n * A simple wrapper around the global [`clearTimeout`](https://mdn.io/clearTimeout).\n *\n * @private\n * @param {number|Object} id The timer id or timeout object of the timer to clear.\n */\n var clearTimeout = ctxClearTimeout || function(id) {\n return root.clearTimeout(id);\n };\n\n /**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\n function cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n }\n\n /**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\n function cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n }\n\n /**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\n function cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n }\n\n /**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\n function cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n }\n\n /**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\n function cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n }\n\n /**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\n function cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n }\n\n /**\n * Compares values to sort them in ascending order.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {number} Returns the sort order indicator for `value`.\n */\n function compareAscending(value, other) {\n if (value !== other) {\n var valIsDefined = value !== undefined,\n valIsNull = value === null,\n valIsReflexive = value === value,\n valIsSymbol = isSymbol(value);\n\n var othIsDefined = other !== undefined,\n othIsNull = other === null,\n othIsReflexive = other === other,\n othIsSymbol = isSymbol(other);\n\n if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||\n (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||\n (valIsNull && othIsDefined && othIsReflexive) ||\n (!valIsDefined && othIsReflexive) ||\n !valIsReflexive) {\n return 1;\n }\n if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||\n (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||\n (othIsNull && valIsDefined && valIsReflexive) ||\n (!othIsDefined && valIsReflexive) ||\n !othIsReflexive) {\n return -1;\n }\n }\n return 0;\n }\n\n /**\n * Used by `_.orderBy` to compare multiple properties of a value to another\n * and stable sort them.\n *\n * If `orders` is unspecified, all values are sorted in ascending order. Otherwise,\n * specify an order of \"desc\" for descending or \"asc\" for ascending sort order\n * of corresponding values.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {boolean[]|string[]} orders The order to sort by for each property.\n * @returns {number} Returns the sort order indicator for `object`.\n */\n function compareMultiple(object, other, orders) {\n var index = -1,\n objCriteria = object.criteria,\n othCriteria = other.criteria,\n length = objCriteria.length,\n ordersLength = orders.length;\n\n while (++index < length) {\n var result = compareAscending(objCriteria[index], othCriteria[index]);\n if (result) {\n if (index >= ordersLength) {\n return result;\n }\n var order = orders[index];\n return result * (order == 'desc' ? -1 : 1);\n }\n }\n // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications\n // that causes it, under certain circumstances, to provide the same value for\n // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247\n // for more details.\n //\n // This also ensures a stable sort in V8 and other engines.\n // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.\n return object.index - other.index;\n }\n\n /**\n * Creates an array that is the composition of partially applied arguments,\n * placeholders, and provided arguments into a single array of arguments.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to prepend to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\n function composeArgs(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersLength = holders.length,\n leftIndex = -1,\n leftLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(leftLength + rangeLength),\n isUncurried = !isCurried;\n\n while (++leftIndex < leftLength) {\n result[leftIndex] = partials[leftIndex];\n }\n while (++argsIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[holders[argsIndex]] = args[argsIndex];\n }\n }\n while (rangeLength--) {\n result[leftIndex++] = args[argsIndex++];\n }\n return result;\n }\n\n /**\n * This function is like `composeArgs` except that the arguments composition\n * is tailored for `_.partialRight`.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to append to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\n function composeArgsRight(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersIndex = -1,\n holdersLength = holders.length,\n rightIndex = -1,\n rightLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(rangeLength + rightLength),\n isUncurried = !isCurried;\n\n while (++argsIndex < rangeLength) {\n result[argsIndex] = args[argsIndex];\n }\n var offset = argsIndex;\n while (++rightIndex < rightLength) {\n result[offset + rightIndex] = partials[rightIndex];\n }\n while (++holdersIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[offset + holders[holdersIndex]] = args[argsIndex++];\n }\n }\n return result;\n }\n\n /**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\n function copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n }\n\n /**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\n function copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n }\n\n /**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\n function copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n }\n\n /**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\n function copySymbolsIn(source, object) {\n return copyObject(source, getSymbolsIn(source), object);\n }\n\n /**\n * Creates a function like `_.groupBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} [initializer] The accumulator object initializer.\n * @returns {Function} Returns the new aggregator function.\n */\n function createAggregator(setter, initializer) {\n return function(collection, iteratee) {\n var func = isArray(collection) ? arrayAggregator : baseAggregator,\n accumulator = initializer ? initializer() : {};\n\n return func(collection, setter, getIteratee(iteratee, 2), accumulator);\n };\n }\n\n /**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\n function createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n }\n\n /**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\n function createBaseEach(eachFunc, fromRight) {\n return function(collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!isArrayLike(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length,\n index = fromRight ? length : -1,\n iterable = Object(collection);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n }\n\n /**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\n function createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with the optional `this`\n * binding of `thisArg`.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createBind(func, bitmask, thisArg) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return fn.apply(isBind ? thisArg : this, arguments);\n }\n return wrapper;\n }\n\n /**\n * Creates a function like `_.lowerFirst`.\n *\n * @private\n * @param {string} methodName The name of the `String` case method to use.\n * @returns {Function} Returns the new case function.\n */\n function createCaseFirst(methodName) {\n return function(string) {\n string = toString(string);\n\n var strSymbols = hasUnicode(string)\n ? stringToArray(string)\n : undefined;\n\n var chr = strSymbols\n ? strSymbols[0]\n : string.charAt(0);\n\n var trailing = strSymbols\n ? castSlice(strSymbols, 1).join('')\n : string.slice(1);\n\n return chr[methodName]() + trailing;\n };\n }\n\n /**\n * Creates a function like `_.camelCase`.\n *\n * @private\n * @param {Function} callback The function to combine each word.\n * @returns {Function} Returns the new compounder function.\n */\n function createCompounder(callback) {\n return function(string) {\n return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');\n };\n }\n\n /**\n * Creates a function that produces an instance of `Ctor` regardless of\n * whether it was invoked as part of a `new` expression or by `call` or `apply`.\n *\n * @private\n * @param {Function} Ctor The constructor to wrap.\n * @returns {Function} Returns the new wrapped function.\n */\n function createCtor(Ctor) {\n return function() {\n // Use a `switch` statement to work with class constructors. See\n // http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist\n // for more details.\n var args = arguments;\n switch (args.length) {\n case 0: return new Ctor;\n case 1: return new Ctor(args[0]);\n case 2: return new Ctor(args[0], args[1]);\n case 3: return new Ctor(args[0], args[1], args[2]);\n case 4: return new Ctor(args[0], args[1], args[2], args[3]);\n case 5: return new Ctor(args[0], args[1], args[2], args[3], args[4]);\n case 6: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]);\n case 7: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]);\n }\n var thisBinding = baseCreate(Ctor.prototype),\n result = Ctor.apply(thisBinding, args);\n\n // Mimic the constructor's `return` behavior.\n // See https://es5.github.io/#x13.2.2 for more details.\n return isObject(result) ? result : thisBinding;\n };\n }\n\n /**\n * Creates a function that wraps `func` to enable currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {number} arity The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createCurry(func, bitmask, arity) {\n var Ctor = createCtor(func);\n\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length,\n placeholder = getHolder(wrapper);\n\n while (index--) {\n args[index] = arguments[index];\n }\n var holders = (length < 3 && args[0] !== placeholder && args[length - 1] !== placeholder)\n ? []\n : replaceHolders(args, placeholder);\n\n length -= holders.length;\n if (length < arity) {\n return createRecurry(\n func, bitmask, createHybrid, wrapper.placeholder, undefined,\n args, holders, undefined, undefined, arity - length);\n }\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return apply(fn, this, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a `_.find` or `_.findLast` function.\n *\n * @private\n * @param {Function} findIndexFunc The function to find the collection index.\n * @returns {Function} Returns the new find function.\n */\n function createFind(findIndexFunc) {\n return function(collection, predicate, fromIndex) {\n var iterable = Object(collection);\n if (!isArrayLike(collection)) {\n var iteratee = getIteratee(predicate, 3);\n collection = keys(collection);\n predicate = function(key) { return iteratee(iterable[key], key, iterable); };\n }\n var index = findIndexFunc(collection, predicate, fromIndex);\n return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;\n };\n }\n\n /**\n * Creates a `_.flow` or `_.flowRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new flow function.\n */\n function createFlow(fromRight) {\n return flatRest(function(funcs) {\n var length = funcs.length,\n index = length,\n prereq = LodashWrapper.prototype.thru;\n\n if (fromRight) {\n funcs.reverse();\n }\n while (index--) {\n var func = funcs[index];\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (prereq && !wrapper && getFuncName(func) == 'wrapper') {\n var wrapper = new LodashWrapper([], true);\n }\n }\n index = wrapper ? index : length;\n while (++index < length) {\n func = funcs[index];\n\n var funcName = getFuncName(func),\n data = funcName == 'wrapper' ? getData(func) : undefined;\n\n if (data && isLaziable(data[0]) &&\n data[1] == (WRAP_ARY_FLAG | WRAP_CURRY_FLAG | WRAP_PARTIAL_FLAG | WRAP_REARG_FLAG) &&\n !data[4].length && data[9] == 1\n ) {\n wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]);\n } else {\n wrapper = (func.length == 1 && isLaziable(func))\n ? wrapper[funcName]()\n : wrapper.thru(func);\n }\n }\n return function() {\n var args = arguments,\n value = args[0];\n\n if (wrapper && args.length == 1 && isArray(value)) {\n return wrapper.plant(value).value();\n }\n var index = 0,\n result = length ? funcs[index].apply(this, args) : value;\n\n while (++index < length) {\n result = funcs[index].call(this, result);\n }\n return result;\n };\n });\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with optional `this`\n * binding of `thisArg`, partial application, and currying.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [partialsRight] The arguments to append to those provided\n * to the new function.\n * @param {Array} [holdersRight] The `partialsRight` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) {\n var isAry = bitmask & WRAP_ARY_FLAG,\n isBind = bitmask & WRAP_BIND_FLAG,\n isBindKey = bitmask & WRAP_BIND_KEY_FLAG,\n isCurried = bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG),\n isFlip = bitmask & WRAP_FLIP_FLAG,\n Ctor = isBindKey ? undefined : createCtor(func);\n\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length;\n\n while (index--) {\n args[index] = arguments[index];\n }\n if (isCurried) {\n var placeholder = getHolder(wrapper),\n holdersCount = countHolders(args, placeholder);\n }\n if (partials) {\n args = composeArgs(args, partials, holders, isCurried);\n }\n if (partialsRight) {\n args = composeArgsRight(args, partialsRight, holdersRight, isCurried);\n }\n length -= holdersCount;\n if (isCurried && length < arity) {\n var newHolders = replaceHolders(args, placeholder);\n return createRecurry(\n func, bitmask, createHybrid, wrapper.placeholder, thisArg,\n args, newHolders, argPos, ary, arity - length\n );\n }\n var thisBinding = isBind ? thisArg : this,\n fn = isBindKey ? thisBinding[func] : func;\n\n length = args.length;\n if (argPos) {\n args = reorder(args, argPos);\n } else if (isFlip && length > 1) {\n args.reverse();\n }\n if (isAry && ary < length) {\n args.length = ary;\n }\n if (this && this !== root && this instanceof wrapper) {\n fn = Ctor || createCtor(fn);\n }\n return fn.apply(thisBinding, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a function like `_.invertBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} toIteratee The function to resolve iteratees.\n * @returns {Function} Returns the new inverter function.\n */\n function createInverter(setter, toIteratee) {\n return function(object, iteratee) {\n return baseInverter(object, setter, toIteratee(iteratee), {});\n };\n }\n\n /**\n * Creates a function that performs a mathematical operation on two values.\n *\n * @private\n * @param {Function} operator The function to perform the operation.\n * @param {number} [defaultValue] The value used for `undefined` arguments.\n * @returns {Function} Returns the new mathematical operation function.\n */\n function createMathOperation(operator, defaultValue) {\n return function(value, other) {\n var result;\n if (value === undefined && other === undefined) {\n return defaultValue;\n }\n if (value !== undefined) {\n result = value;\n }\n if (other !== undefined) {\n if (result === undefined) {\n return other;\n }\n if (typeof value == 'string' || typeof other == 'string') {\n value = baseToString(value);\n other = baseToString(other);\n } else {\n value = baseToNumber(value);\n other = baseToNumber(other);\n }\n result = operator(value, other);\n }\n return result;\n };\n }\n\n /**\n * Creates a function like `_.over`.\n *\n * @private\n * @param {Function} arrayFunc The function to iterate over iteratees.\n * @returns {Function} Returns the new over function.\n */\n function createOver(arrayFunc) {\n return flatRest(function(iteratees) {\n iteratees = arrayMap(iteratees, baseUnary(getIteratee()));\n return baseRest(function(args) {\n var thisArg = this;\n return arrayFunc(iteratees, function(iteratee) {\n return apply(iteratee, thisArg, args);\n });\n });\n });\n }\n\n /**\n * Creates the padding for `string` based on `length`. The `chars` string\n * is truncated if the number of characters exceeds `length`.\n *\n * @private\n * @param {number} length The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padding for `string`.\n */\n function createPadding(length, chars) {\n chars = chars === undefined ? ' ' : baseToString(chars);\n\n var charsLength = chars.length;\n if (charsLength < 2) {\n return charsLength ? baseRepeat(chars, length) : chars;\n }\n var result = baseRepeat(chars, nativeCeil(length / stringSize(chars)));\n return hasUnicode(chars)\n ? castSlice(stringToArray(result), 0, length).join('')\n : result.slice(0, length);\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with the `this` binding\n * of `thisArg` and `partials` prepended to the arguments it receives.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} partials The arguments to prepend to those provided to\n * the new function.\n * @returns {Function} Returns the new wrapped function.\n */\n function createPartial(func, bitmask, thisArg, partials) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var argsIndex = -1,\n argsLength = arguments.length,\n leftIndex = -1,\n leftLength = partials.length,\n args = Array(leftLength + argsLength),\n fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n\n while (++leftIndex < leftLength) {\n args[leftIndex] = partials[leftIndex];\n }\n while (argsLength--) {\n args[leftIndex++] = arguments[++argsIndex];\n }\n return apply(fn, isBind ? thisArg : this, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a `_.range` or `_.rangeRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new range function.\n */\n function createRange(fromRight) {\n return function(start, end, step) {\n if (step && typeof step != 'number' && isIterateeCall(start, end, step)) {\n end = step = undefined;\n }\n // Ensure the sign of `-0` is preserved.\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n step = step === undefined ? (start < end ? 1 : -1) : toFinite(step);\n return baseRange(start, end, step, fromRight);\n };\n }\n\n /**\n * Creates a function that performs a relational operation on two values.\n *\n * @private\n * @param {Function} operator The function to perform the operation.\n * @returns {Function} Returns the new relational operation function.\n */\n function createRelationalOperation(operator) {\n return function(value, other) {\n if (!(typeof value == 'string' && typeof other == 'string')) {\n value = toNumber(value);\n other = toNumber(other);\n }\n return operator(value, other);\n };\n }\n\n /**\n * Creates a function that wraps `func` to continue currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {Function} wrapFunc The function to create the `func` wrapper.\n * @param {*} placeholder The placeholder value.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary, arity) {\n var isCurry = bitmask & WRAP_CURRY_FLAG,\n newHolders = isCurry ? holders : undefined,\n newHoldersRight = isCurry ? undefined : holders,\n newPartials = isCurry ? partials : undefined,\n newPartialsRight = isCurry ? undefined : partials;\n\n bitmask |= (isCurry ? WRAP_PARTIAL_FLAG : WRAP_PARTIAL_RIGHT_FLAG);\n bitmask &= ~(isCurry ? WRAP_PARTIAL_RIGHT_FLAG : WRAP_PARTIAL_FLAG);\n\n if (!(bitmask & WRAP_CURRY_BOUND_FLAG)) {\n bitmask &= ~(WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG);\n }\n var newData = [\n func, bitmask, thisArg, newPartials, newHolders, newPartialsRight,\n newHoldersRight, argPos, ary, arity\n ];\n\n var result = wrapFunc.apply(undefined, newData);\n if (isLaziable(func)) {\n setData(result, newData);\n }\n result.placeholder = placeholder;\n return setWrapToString(result, func, bitmask);\n }\n\n /**\n * Creates a function like `_.round`.\n *\n * @private\n * @param {string} methodName The name of the `Math` method to use when rounding.\n * @returns {Function} Returns the new round function.\n */\n function createRound(methodName) {\n var func = Math[methodName];\n return function(number, precision) {\n number = toNumber(number);\n precision = precision == null ? 0 : nativeMin(toInteger(precision), 292);\n if (precision && nativeIsFinite(number)) {\n // Shift with exponential notation to avoid floating-point issues.\n // See [MDN](https://mdn.io/round#Examples) for more details.\n var pair = (toString(number) + 'e').split('e'),\n value = func(pair[0] + 'e' + (+pair[1] + precision));\n\n pair = (toString(value) + 'e').split('e');\n return +(pair[0] + 'e' + (+pair[1] - precision));\n }\n return func(number);\n };\n }\n\n /**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\n var createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n return new Set(values);\n };\n\n /**\n * Creates a `_.toPairs` or `_.toPairsIn` function.\n *\n * @private\n * @param {Function} keysFunc The function to get the keys of a given object.\n * @returns {Function} Returns the new pairs function.\n */\n function createToPairs(keysFunc) {\n return function(object) {\n var tag = getTag(object);\n if (tag == mapTag) {\n return mapToArray(object);\n }\n if (tag == setTag) {\n return setToPairs(object);\n }\n return baseToPairs(object, keysFunc(object));\n };\n }\n\n /**\n * Creates a function that either curries or invokes `func` with optional\n * `this` binding and partially applied arguments.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags.\n * 1 - `_.bind`\n * 2 - `_.bindKey`\n * 4 - `_.curry` or `_.curryRight` of a bound function\n * 8 - `_.curry`\n * 16 - `_.curryRight`\n * 32 - `_.partial`\n * 64 - `_.partialRight`\n * 128 - `_.rearg`\n * 256 - `_.ary`\n * 512 - `_.flip`\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to be partially applied.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createWrap(func, bitmask, thisArg, partials, holders, argPos, ary, arity) {\n var isBindKey = bitmask & WRAP_BIND_KEY_FLAG;\n if (!isBindKey && typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var length = partials ? partials.length : 0;\n if (!length) {\n bitmask &= ~(WRAP_PARTIAL_FLAG | WRAP_PARTIAL_RIGHT_FLAG);\n partials = holders = undefined;\n }\n ary = ary === undefined ? ary : nativeMax(toInteger(ary), 0);\n arity = arity === undefined ? arity : toInteger(arity);\n length -= holders ? holders.length : 0;\n\n if (bitmask & WRAP_PARTIAL_RIGHT_FLAG) {\n var partialsRight = partials,\n holdersRight = holders;\n\n partials = holders = undefined;\n }\n var data = isBindKey ? undefined : getData(func);\n\n var newData = [\n func, bitmask, thisArg, partials, holders, partialsRight, holdersRight,\n argPos, ary, arity\n ];\n\n if (data) {\n mergeData(newData, data);\n }\n func = newData[0];\n bitmask = newData[1];\n thisArg = newData[2];\n partials = newData[3];\n holders = newData[4];\n arity = newData[9] = newData[9] === undefined\n ? (isBindKey ? 0 : func.length)\n : nativeMax(newData[9] - length, 0);\n\n if (!arity && bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG)) {\n bitmask &= ~(WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG);\n }\n if (!bitmask || bitmask == WRAP_BIND_FLAG) {\n var result = createBind(func, bitmask, thisArg);\n } else if (bitmask == WRAP_CURRY_FLAG || bitmask == WRAP_CURRY_RIGHT_FLAG) {\n result = createCurry(func, bitmask, arity);\n } else if ((bitmask == WRAP_PARTIAL_FLAG || bitmask == (WRAP_BIND_FLAG | WRAP_PARTIAL_FLAG)) && !holders.length) {\n result = createPartial(func, bitmask, thisArg, partials);\n } else {\n result = createHybrid.apply(undefined, newData);\n }\n var setter = data ? baseSetData : setData;\n return setWrapToString(setter(result, newData), func, bitmask);\n }\n\n /**\n * Used by `_.defaults` to customize its `_.assignIn` use to assign properties\n * of source objects to the destination object for all destination properties\n * that resolve to `undefined`.\n *\n * @private\n * @param {*} objValue The destination value.\n * @param {*} srcValue The source value.\n * @param {string} key The key of the property to assign.\n * @param {Object} object The parent object of `objValue`.\n * @returns {*} Returns the value to assign.\n */\n function customDefaultsAssignIn(objValue, srcValue, key, object) {\n if (objValue === undefined ||\n (eq(objValue, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n return srcValue;\n }\n return objValue;\n }\n\n /**\n * Used by `_.defaultsDeep` to customize its `_.merge` use to merge source\n * objects into destination objects that are passed thru.\n *\n * @private\n * @param {*} objValue The destination value.\n * @param {*} srcValue The source value.\n * @param {string} key The key of the property to merge.\n * @param {Object} object The parent object of `objValue`.\n * @param {Object} source The parent object of `srcValue`.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n * @returns {*} Returns the value to assign.\n */\n function customDefaultsMerge(objValue, srcValue, key, object, source, stack) {\n if (isObject(objValue) && isObject(srcValue)) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, objValue);\n baseMerge(objValue, srcValue, undefined, customDefaultsMerge, stack);\n stack['delete'](srcValue);\n }\n return objValue;\n }\n\n /**\n * Used by `_.omit` to customize its `_.cloneDeep` use to only clone plain\n * objects.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {string} key The key of the property to inspect.\n * @returns {*} Returns the uncloned value or `undefined` to defer cloning to `_.cloneDeep`.\n */\n function customOmitClone(value) {\n return isPlainObject(value) ? undefined : value;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\n function equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Check that cyclic values are equal.\n var arrStacked = stack.get(array);\n var othStacked = stack.get(other);\n if (arrStacked && othStacked) {\n return arrStacked == other && othStacked == array;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Check that cyclic values are equal.\n var objStacked = stack.get(object);\n var othStacked = stack.get(other);\n if (objStacked && othStacked) {\n return objStacked == other && othStacked == object;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n }\n\n /**\n * A specialized version of `baseRest` which flattens the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\n function flatRest(func) {\n return setToString(overRest(func, undefined, flatten), func + '');\n }\n\n /**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n }\n\n /**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function getAllKeysIn(object) {\n return baseGetAllKeys(object, keysIn, getSymbolsIn);\n }\n\n /**\n * Gets metadata for `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {*} Returns the metadata for `func`.\n */\n var getData = !metaMap ? noop : function(func) {\n return metaMap.get(func);\n };\n\n /**\n * Gets the name of `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {string} Returns the function name.\n */\n function getFuncName(func) {\n var result = (func.name + ''),\n array = realNames[result],\n length = hasOwnProperty.call(realNames, result) ? array.length : 0;\n\n while (length--) {\n var data = array[length],\n otherFunc = data.func;\n if (otherFunc == null || otherFunc == func) {\n return data.name;\n }\n }\n return result;\n }\n\n /**\n * Gets the argument placeholder value for `func`.\n *\n * @private\n * @param {Function} func The function to inspect.\n * @returns {*} Returns the placeholder value.\n */\n function getHolder(func) {\n var object = hasOwnProperty.call(lodash, 'placeholder') ? lodash : func;\n return object.placeholder;\n }\n\n /**\n * Gets the appropriate \"iteratee\" function. If `_.iteratee` is customized,\n * this function returns the custom method, otherwise it returns `baseIteratee`.\n * If arguments are provided, the chosen function is invoked with them and\n * its result is returned.\n *\n * @private\n * @param {*} [value] The value to convert to an iteratee.\n * @param {number} [arity] The arity of the created iteratee.\n * @returns {Function} Returns the chosen function or its result.\n */\n function getIteratee() {\n var result = lodash.iteratee || iteratee;\n result = result === iteratee ? baseIteratee : result;\n return arguments.length ? result(arguments[0], arguments[1]) : result;\n }\n\n /**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\n function getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n }\n\n /**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\n function getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n }\n\n /**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\n function getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n }\n\n /**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\n function getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n }\n\n /**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\n var getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n };\n\n /**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\n var getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n var result = [];\n while (object) {\n arrayPush(result, getSymbols(object));\n object = getPrototype(object);\n }\n return result;\n };\n\n /**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\n var getTag = baseGetTag;\n\n // Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\n if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n }\n\n /**\n * Gets the view, applying any `transforms` to the `start` and `end` positions.\n *\n * @private\n * @param {number} start The start of the view.\n * @param {number} end The end of the view.\n * @param {Array} transforms The transformations to apply to the view.\n * @returns {Object} Returns an object containing the `start` and `end`\n * positions of the view.\n */\n function getView(start, end, transforms) {\n var index = -1,\n length = transforms.length;\n\n while (++index < length) {\n var data = transforms[index],\n size = data.size;\n\n switch (data.type) {\n case 'drop': start += size; break;\n case 'dropRight': end -= size; break;\n case 'take': end = nativeMin(end, start + size); break;\n case 'takeRight': start = nativeMax(start, end - size); break;\n }\n }\n return { 'start': start, 'end': end };\n }\n\n /**\n * Extracts wrapper details from the `source` body comment.\n *\n * @private\n * @param {string} source The source to inspect.\n * @returns {Array} Returns the wrapper details.\n */\n function getWrapDetails(source) {\n var match = source.match(reWrapDetails);\n return match ? match[1].split(reSplitDetails) : [];\n }\n\n /**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\n function hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n result = false;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n }\n\n /**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\n function initCloneArray(array) {\n var length = array.length,\n result = new array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n }\n\n /**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\n function initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n }\n\n /**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\n function initCloneByTag(object, tag, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return new Ctor;\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return new Ctor;\n\n case symbolTag:\n return cloneSymbol(object);\n }\n }\n\n /**\n * Inserts wrapper `details` in a comment at the top of the `source` body.\n *\n * @private\n * @param {string} source The source to modify.\n * @returns {Array} details The details to insert.\n * @returns {string} Returns the modified source.\n */\n function insertWrapDetails(source, details) {\n var length = details.length;\n if (!length) {\n return source;\n }\n var lastIndex = length - 1;\n details[lastIndex] = (length > 1 ? '& ' : '') + details[lastIndex];\n details = details.join(length > 2 ? ', ' : ' ');\n return source.replace(reWrapComment, '{\\n/* [wrapped with ' + details + '] */\\n');\n }\n\n /**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\n function isFlattenable(value) {\n return isArray(value) || isArguments(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\n }\n\n /**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\n function isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n }\n\n /**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\n function isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n }\n\n /**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\n function isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n }\n\n /**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\n function isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n }\n\n /**\n * Checks if `func` has a lazy counterpart.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` has a lazy counterpart,\n * else `false`.\n */\n function isLaziable(func) {\n var funcName = getFuncName(func),\n other = lodash[funcName];\n\n if (typeof other != 'function' || !(funcName in LazyWrapper.prototype)) {\n return false;\n }\n if (func === other) {\n return true;\n }\n var data = getData(other);\n return !!data && func === data[0];\n }\n\n /**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\n function isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n }\n\n /**\n * Checks if `func` is capable of being masked.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `func` is maskable, else `false`.\n */\n var isMaskable = coreJsData ? isFunction : stubFalse;\n\n /**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\n function isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n }\n\n /**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\n function isStrictComparable(value) {\n return value === value && !isObject(value);\n }\n\n /**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\n function matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n }\n\n /**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\n function memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n }\n\n /**\n * Merges the function metadata of `source` into `data`.\n *\n * Merging metadata reduces the number of wrappers used to invoke a function.\n * This is possible because methods like `_.bind`, `_.curry`, and `_.partial`\n * may be applied regardless of execution order. Methods like `_.ary` and\n * `_.rearg` modify function arguments, making the order in which they are\n * executed important, preventing the merging of metadata. However, we make\n * an exception for a safe combined case where curried functions have `_.ary`\n * and or `_.rearg` applied.\n *\n * @private\n * @param {Array} data The destination metadata.\n * @param {Array} source The source metadata.\n * @returns {Array} Returns `data`.\n */\n function mergeData(data, source) {\n var bitmask = data[1],\n srcBitmask = source[1],\n newBitmask = bitmask | srcBitmask,\n isCommon = newBitmask < (WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG | WRAP_ARY_FLAG);\n\n var isCombo =\n ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_CURRY_FLAG)) ||\n ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_REARG_FLAG) && (data[7].length <= source[8])) ||\n ((srcBitmask == (WRAP_ARY_FLAG | WRAP_REARG_FLAG)) && (source[7].length <= source[8]) && (bitmask == WRAP_CURRY_FLAG));\n\n // Exit early if metadata can't be merged.\n if (!(isCommon || isCombo)) {\n return data;\n }\n // Use source `thisArg` if available.\n if (srcBitmask & WRAP_BIND_FLAG) {\n data[2] = source[2];\n // Set when currying a bound function.\n newBitmask |= bitmask & WRAP_BIND_FLAG ? 0 : WRAP_CURRY_BOUND_FLAG;\n }\n // Compose partial arguments.\n var value = source[3];\n if (value) {\n var partials = data[3];\n data[3] = partials ? composeArgs(partials, value, source[4]) : value;\n data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : source[4];\n }\n // Compose partial right arguments.\n value = source[5];\n if (value) {\n partials = data[5];\n data[5] = partials ? composeArgsRight(partials, value, source[6]) : value;\n data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : source[6];\n }\n // Use source `argPos` if available.\n value = source[7];\n if (value) {\n data[7] = value;\n }\n // Use source `ary` if it's smaller.\n if (srcBitmask & WRAP_ARY_FLAG) {\n data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]);\n }\n // Use source `arity` if one is not provided.\n if (data[9] == null) {\n data[9] = source[9];\n }\n // Use source `func` and merge bitmasks.\n data[0] = source[0];\n data[1] = newBitmask;\n\n return data;\n }\n\n /**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\n function objectToString(value) {\n return nativeObjectToString.call(value);\n }\n\n /**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\n function overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n }\n\n /**\n * Gets the parent value at `path` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} path The path to get the parent value of.\n * @returns {*} Returns the parent value.\n */\n function parent(object, path) {\n return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1));\n }\n\n /**\n * Reorder `array` according to the specified indexes where the element at\n * the first index is assigned as the first element, the element at\n * the second index is assigned as the second element, and so on.\n *\n * @private\n * @param {Array} array The array to reorder.\n * @param {Array} indexes The arranged array indexes.\n * @returns {Array} Returns `array`.\n */\n function reorder(array, indexes) {\n var arrLength = array.length,\n length = nativeMin(indexes.length, arrLength),\n oldArray = copyArray(array);\n\n while (length--) {\n var index = indexes[length];\n array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined;\n }\n return array;\n }\n\n /**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\n function safeGet(object, key) {\n if (key === 'constructor' && typeof object[key] === 'function') {\n return;\n }\n\n if (key == '__proto__') {\n return;\n }\n\n return object[key];\n }\n\n /**\n * Sets metadata for `func`.\n *\n * **Note:** If this function becomes hot, i.e. is invoked a lot in a short\n * period of time, it will trip its breaker and transition to an identity\n * function to avoid garbage collection pauses in V8. See\n * [V8 issue 2070](https://bugs.chromium.org/p/v8/issues/detail?id=2070)\n * for more details.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\n var setData = shortOut(baseSetData);\n\n /**\n * A simple wrapper around the global [`setTimeout`](https://mdn.io/setTimeout).\n *\n * @private\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @returns {number|Object} Returns the timer id or timeout object.\n */\n var setTimeout = ctxSetTimeout || function(func, wait) {\n return root.setTimeout(func, wait);\n };\n\n /**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\n var setToString = shortOut(baseSetToString);\n\n /**\n * Sets the `toString` method of `wrapper` to mimic the source of `reference`\n * with wrapper details in a comment at the top of the source body.\n *\n * @private\n * @param {Function} wrapper The function to modify.\n * @param {Function} reference The reference function.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Function} Returns `wrapper`.\n */\n function setWrapToString(wrapper, reference, bitmask) {\n var source = (reference + '');\n return setToString(wrapper, insertWrapDetails(source, updateWrapDetails(getWrapDetails(source), bitmask)));\n }\n\n /**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\n function shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n }\n\n /**\n * A specialized version of `_.shuffle` which mutates and sets the size of `array`.\n *\n * @private\n * @param {Array} array The array to shuffle.\n * @param {number} [size=array.length] The size of `array`.\n * @returns {Array} Returns `array`.\n */\n function shuffleSelf(array, size) {\n var index = -1,\n length = array.length,\n lastIndex = length - 1;\n\n size = size === undefined ? length : size;\n while (++index < size) {\n var rand = baseRandom(index, lastIndex),\n value = array[rand];\n\n array[rand] = array[index];\n array[index] = value;\n }\n array.length = size;\n return array;\n }\n\n /**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\n var stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n });\n\n /**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\n function toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n }\n\n /**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\n function toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n }\n\n /**\n * Updates wrapper `details` based on `bitmask` flags.\n *\n * @private\n * @returns {Array} details The details to modify.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Array} Returns `details`.\n */\n function updateWrapDetails(details, bitmask) {\n arrayEach(wrapFlags, function(pair) {\n var value = '_.' + pair[0];\n if ((bitmask & pair[1]) && !arrayIncludes(details, value)) {\n details.push(value);\n }\n });\n return details.sort();\n }\n\n /**\n * Creates a clone of `wrapper`.\n *\n * @private\n * @param {Object} wrapper The wrapper to clone.\n * @returns {Object} Returns the cloned wrapper.\n */\n function wrapperClone(wrapper) {\n if (wrapper instanceof LazyWrapper) {\n return wrapper.clone();\n }\n var result = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__);\n result.__actions__ = copyArray(wrapper.__actions__);\n result.__index__ = wrapper.__index__;\n result.__values__ = wrapper.__values__;\n return result;\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an array of elements split into groups the length of `size`.\n * If `array` can't be split evenly, the final chunk will be the remaining\n * elements.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to process.\n * @param {number} [size=1] The length of each chunk\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the new array of chunks.\n * @example\n *\n * _.chunk(['a', 'b', 'c', 'd'], 2);\n * // => [['a', 'b'], ['c', 'd']]\n *\n * _.chunk(['a', 'b', 'c', 'd'], 3);\n * // => [['a', 'b', 'c'], ['d']]\n */\n function chunk(array, size, guard) {\n if ((guard ? isIterateeCall(array, size, guard) : size === undefined)) {\n size = 1;\n } else {\n size = nativeMax(toInteger(size), 0);\n }\n var length = array == null ? 0 : array.length;\n if (!length || size < 1) {\n return [];\n }\n var index = 0,\n resIndex = 0,\n result = Array(nativeCeil(length / size));\n\n while (index < length) {\n result[resIndex++] = baseSlice(array, index, (index += size));\n }\n return result;\n }\n\n /**\n * Creates an array with all falsey values removed. The values `false`, `null`,\n * `0`, `\"\"`, `undefined`, and `NaN` are falsey.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to compact.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.compact([0, 1, false, 2, '', 3]);\n * // => [1, 2, 3]\n */\n function compact(array) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (value) {\n result[resIndex++] = value;\n }\n }\n return result;\n }\n\n /**\n * Creates a new array concatenating `array` with any additional arrays\n * and/or values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to concatenate.\n * @param {...*} [values] The values to concatenate.\n * @returns {Array} Returns the new concatenated array.\n * @example\n *\n * var array = [1];\n * var other = _.concat(array, 2, [3], [[4]]);\n *\n * console.log(other);\n * // => [1, 2, 3, [4]]\n *\n * console.log(array);\n * // => [1]\n */\n function concat() {\n var length = arguments.length;\n if (!length) {\n return [];\n }\n var args = Array(length - 1),\n array = arguments[0],\n index = length;\n\n while (index--) {\n args[index - 1] = arguments[index];\n }\n return arrayPush(isArray(array) ? copyArray(array) : [array], baseFlatten(args, 1));\n }\n\n /**\n * Creates an array of `array` values not included in the other given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * **Note:** Unlike `_.pullAll`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.without, _.xor\n * @example\n *\n * _.difference([2, 1], [2, 3]);\n * // => [1]\n */\n var difference = baseRest(function(array, values) {\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true))\n : [];\n });\n\n /**\n * This method is like `_.difference` except that it accepts `iteratee` which\n * is invoked for each element of `array` and `values` to generate the criterion\n * by which they're compared. The order and references of result values are\n * determined by the first array. The iteratee is invoked with one argument:\n * (value).\n *\n * **Note:** Unlike `_.pullAllBy`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.differenceBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.differenceBy([{ 'x': 2 }, { 'x': 1 }], [{ 'x': 1 }], 'x');\n * // => [{ 'x': 2 }]\n */\n var differenceBy = baseRest(function(array, values) {\n var iteratee = last(values);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), getIteratee(iteratee, 2))\n : [];\n });\n\n /**\n * This method is like `_.difference` except that it accepts `comparator`\n * which is invoked to compare elements of `array` to `values`. The order and\n * references of result values are determined by the first array. The comparator\n * is invoked with two arguments: (arrVal, othVal).\n *\n * **Note:** Unlike `_.pullAllWith`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n *\n * _.differenceWith(objects, [{ 'x': 1, 'y': 2 }], _.isEqual);\n * // => [{ 'x': 2, 'y': 1 }]\n */\n var differenceWith = baseRest(function(array, values) {\n var comparator = last(values);\n if (isArrayLikeObject(comparator)) {\n comparator = undefined;\n }\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), undefined, comparator)\n : [];\n });\n\n /**\n * Creates a slice of `array` with `n` elements dropped from the beginning.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to drop.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.drop([1, 2, 3]);\n * // => [2, 3]\n *\n * _.drop([1, 2, 3], 2);\n * // => [3]\n *\n * _.drop([1, 2, 3], 5);\n * // => []\n *\n * _.drop([1, 2, 3], 0);\n * // => [1, 2, 3]\n */\n function drop(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n return baseSlice(array, n < 0 ? 0 : n, length);\n }\n\n /**\n * Creates a slice of `array` with `n` elements dropped from the end.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to drop.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.dropRight([1, 2, 3]);\n * // => [1, 2]\n *\n * _.dropRight([1, 2, 3], 2);\n * // => [1]\n *\n * _.dropRight([1, 2, 3], 5);\n * // => []\n *\n * _.dropRight([1, 2, 3], 0);\n * // => [1, 2, 3]\n */\n function dropRight(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n n = length - n;\n return baseSlice(array, 0, n < 0 ? 0 : n);\n }\n\n /**\n * Creates a slice of `array` excluding elements dropped from the end.\n * Elements are dropped until `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.dropRightWhile(users, function(o) { return !o.active; });\n * // => objects for ['barney']\n *\n * // The `_.matches` iteratee shorthand.\n * _.dropRightWhile(users, { 'user': 'pebbles', 'active': false });\n * // => objects for ['barney', 'fred']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.dropRightWhile(users, ['active', false]);\n * // => objects for ['barney']\n *\n * // The `_.property` iteratee shorthand.\n * _.dropRightWhile(users, 'active');\n * // => objects for ['barney', 'fred', 'pebbles']\n */\n function dropRightWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), true, true)\n : [];\n }\n\n /**\n * Creates a slice of `array` excluding elements dropped from the beginning.\n * Elements are dropped until `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.dropWhile(users, function(o) { return !o.active; });\n * // => objects for ['pebbles']\n *\n * // The `_.matches` iteratee shorthand.\n * _.dropWhile(users, { 'user': 'barney', 'active': false });\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.dropWhile(users, ['active', false]);\n * // => objects for ['pebbles']\n *\n * // The `_.property` iteratee shorthand.\n * _.dropWhile(users, 'active');\n * // => objects for ['barney', 'fred', 'pebbles']\n */\n function dropWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), true)\n : [];\n }\n\n /**\n * Fills elements of `array` with `value` from `start` up to, but not\n * including, `end`.\n *\n * **Note:** This method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Array\n * @param {Array} array The array to fill.\n * @param {*} value The value to fill `array` with.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _.fill(array, 'a');\n * console.log(array);\n * // => ['a', 'a', 'a']\n *\n * _.fill(Array(3), 2);\n * // => [2, 2, 2]\n *\n * _.fill([4, 6, 8, 10], '*', 1, 3);\n * // => [4, '*', '*', 10]\n */\n function fill(array, value, start, end) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n if (start && typeof start != 'number' && isIterateeCall(array, value, start)) {\n start = 0;\n end = length;\n }\n return baseFill(array, value, start, end);\n }\n\n /**\n * This method is like `_.find` except that it returns the index of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.findIndex(users, function(o) { return o.user == 'barney'; });\n * // => 0\n *\n * // The `_.matches` iteratee shorthand.\n * _.findIndex(users, { 'user': 'fred', 'active': false });\n * // => 1\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findIndex(users, ['active', false]);\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.findIndex(users, 'active');\n * // => 2\n */\n function findIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseFindIndex(array, getIteratee(predicate, 3), index);\n }\n\n /**\n * This method is like `_.findIndex` except that it iterates over elements\n * of `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=array.length-1] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.findLastIndex(users, function(o) { return o.user == 'pebbles'; });\n * // => 2\n *\n * // The `_.matches` iteratee shorthand.\n * _.findLastIndex(users, { 'user': 'barney', 'active': true });\n * // => 0\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findLastIndex(users, ['active', false]);\n * // => 2\n *\n * // The `_.property` iteratee shorthand.\n * _.findLastIndex(users, 'active');\n * // => 0\n */\n function findLastIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = length - 1;\n if (fromIndex !== undefined) {\n index = toInteger(fromIndex);\n index = fromIndex < 0\n ? nativeMax(length + index, 0)\n : nativeMin(index, length - 1);\n }\n return baseFindIndex(array, getIteratee(predicate, 3), index, true);\n }\n\n /**\n * Flattens `array` a single level deep.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flatten([1, [2, [3, [4]], 5]]);\n * // => [1, 2, [3, [4]], 5]\n */\n function flatten(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, 1) : [];\n }\n\n /**\n * Recursively flattens `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flattenDeep([1, [2, [3, [4]], 5]]);\n * // => [1, 2, 3, 4, 5]\n */\n function flattenDeep(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, INFINITY) : [];\n }\n\n /**\n * Recursively flatten `array` up to `depth` times.\n *\n * @static\n * @memberOf _\n * @since 4.4.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @param {number} [depth=1] The maximum recursion depth.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * var array = [1, [2, [3, [4]], 5]];\n *\n * _.flattenDepth(array, 1);\n * // => [1, 2, [3, [4]], 5]\n *\n * _.flattenDepth(array, 2);\n * // => [1, 2, 3, [4], 5]\n */\n function flattenDepth(array, depth) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n depth = depth === undefined ? 1 : toInteger(depth);\n return baseFlatten(array, depth);\n }\n\n /**\n * The inverse of `_.toPairs`; this method returns an object composed\n * from key-value `pairs`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} pairs The key-value pairs.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.fromPairs([['a', 1], ['b', 2]]);\n * // => { 'a': 1, 'b': 2 }\n */\n function fromPairs(pairs) {\n var index = -1,\n length = pairs == null ? 0 : pairs.length,\n result = {};\n\n while (++index < length) {\n var pair = pairs[index];\n result[pair[0]] = pair[1];\n }\n return result;\n }\n\n /**\n * Gets the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias first\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the first element of `array`.\n * @example\n *\n * _.head([1, 2, 3]);\n * // => 1\n *\n * _.head([]);\n * // => undefined\n */\n function head(array) {\n return (array && array.length) ? array[0] : undefined;\n }\n\n /**\n * Gets the index at which the first occurrence of `value` is found in `array`\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. If `fromIndex` is negative, it's used as the\n * offset from the end of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.indexOf([1, 2, 1, 2], 2);\n * // => 1\n *\n * // Search from the `fromIndex`.\n * _.indexOf([1, 2, 1, 2], 2, 2);\n * // => 3\n */\n function indexOf(array, value, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseIndexOf(array, value, index);\n }\n\n /**\n * Gets all but the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.initial([1, 2, 3]);\n * // => [1, 2]\n */\n function initial(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseSlice(array, 0, -1) : [];\n }\n\n /**\n * Creates an array of unique values that are included in all given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersection([2, 1], [2, 3]);\n * // => [2]\n */\n var intersection = baseRest(function(arrays) {\n var mapped = arrayMap(arrays, castArrayLikeObject);\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped)\n : [];\n });\n\n /**\n * This method is like `_.intersection` except that it accepts `iteratee`\n * which is invoked for each element of each `arrays` to generate the criterion\n * by which they're compared. The order and references of result values are\n * determined by the first array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersectionBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [2.1]\n *\n * // The `_.property` iteratee shorthand.\n * _.intersectionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }]\n */\n var intersectionBy = baseRest(function(arrays) {\n var iteratee = last(arrays),\n mapped = arrayMap(arrays, castArrayLikeObject);\n\n if (iteratee === last(mapped)) {\n iteratee = undefined;\n } else {\n mapped.pop();\n }\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped, getIteratee(iteratee, 2))\n : [];\n });\n\n /**\n * This method is like `_.intersection` except that it accepts `comparator`\n * which is invoked to compare elements of `arrays`. The order and references\n * of result values are determined by the first array. The comparator is\n * invoked with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.intersectionWith(objects, others, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }]\n */\n var intersectionWith = baseRest(function(arrays) {\n var comparator = last(arrays),\n mapped = arrayMap(arrays, castArrayLikeObject);\n\n comparator = typeof comparator == 'function' ? comparator : undefined;\n if (comparator) {\n mapped.pop();\n }\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped, undefined, comparator)\n : [];\n });\n\n /**\n * Converts all elements in `array` into a string separated by `separator`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to convert.\n * @param {string} [separator=','] The element separator.\n * @returns {string} Returns the joined string.\n * @example\n *\n * _.join(['a', 'b', 'c'], '~');\n * // => 'a~b~c'\n */\n function join(array, separator) {\n return array == null ? '' : nativeJoin.call(array, separator);\n }\n\n /**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\n function last(array) {\n var length = array == null ? 0 : array.length;\n return length ? array[length - 1] : undefined;\n }\n\n /**\n * This method is like `_.indexOf` except that it iterates over elements of\n * `array` from right to left.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=array.length-1] The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.lastIndexOf([1, 2, 1, 2], 2);\n * // => 3\n *\n * // Search from the `fromIndex`.\n * _.lastIndexOf([1, 2, 1, 2], 2, 2);\n * // => 1\n */\n function lastIndexOf(array, value, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = length;\n if (fromIndex !== undefined) {\n index = toInteger(fromIndex);\n index = index < 0 ? nativeMax(length + index, 0) : nativeMin(index, length - 1);\n }\n return value === value\n ? strictLastIndexOf(array, value, index)\n : baseFindIndex(array, baseIsNaN, index, true);\n }\n\n /**\n * Gets the element at index `n` of `array`. If `n` is negative, the nth\n * element from the end is returned.\n *\n * @static\n * @memberOf _\n * @since 4.11.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=0] The index of the element to return.\n * @returns {*} Returns the nth element of `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'd'];\n *\n * _.nth(array, 1);\n * // => 'b'\n *\n * _.nth(array, -2);\n * // => 'c';\n */\n function nth(array, n) {\n return (array && array.length) ? baseNth(array, toInteger(n)) : undefined;\n }\n\n /**\n * Removes all given values from `array` using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * **Note:** Unlike `_.without`, this method mutates `array`. Use `_.remove`\n * to remove elements from an array by predicate.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {...*} [values] The values to remove.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n *\n * _.pull(array, 'a', 'c');\n * console.log(array);\n * // => ['b', 'b']\n */\n var pull = baseRest(pullAll);\n\n /**\n * This method is like `_.pull` except that it accepts an array of values to remove.\n *\n * **Note:** Unlike `_.difference`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n *\n * _.pullAll(array, ['a', 'c']);\n * console.log(array);\n * // => ['b', 'b']\n */\n function pullAll(array, values) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values)\n : array;\n }\n\n /**\n * This method is like `_.pullAll` except that it accepts `iteratee` which is\n * invoked for each element of `array` and `values` to generate the criterion\n * by which they're compared. The iteratee is invoked with one argument: (value).\n *\n * **Note:** Unlike `_.differenceBy`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [{ 'x': 1 }, { 'x': 2 }, { 'x': 3 }, { 'x': 1 }];\n *\n * _.pullAllBy(array, [{ 'x': 1 }, { 'x': 3 }], 'x');\n * console.log(array);\n * // => [{ 'x': 2 }]\n */\n function pullAllBy(array, values, iteratee) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values, getIteratee(iteratee, 2))\n : array;\n }\n\n /**\n * This method is like `_.pullAll` except that it accepts `comparator` which\n * is invoked to compare elements of `array` to `values`. The comparator is\n * invoked with two arguments: (arrVal, othVal).\n *\n * **Note:** Unlike `_.differenceWith`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [{ 'x': 1, 'y': 2 }, { 'x': 3, 'y': 4 }, { 'x': 5, 'y': 6 }];\n *\n * _.pullAllWith(array, [{ 'x': 3, 'y': 4 }], _.isEqual);\n * console.log(array);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 5, 'y': 6 }]\n */\n function pullAllWith(array, values, comparator) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values, undefined, comparator)\n : array;\n }\n\n /**\n * Removes elements from `array` corresponding to `indexes` and returns an\n * array of removed elements.\n *\n * **Note:** Unlike `_.at`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {...(number|number[])} [indexes] The indexes of elements to remove.\n * @returns {Array} Returns the new array of removed elements.\n * @example\n *\n * var array = ['a', 'b', 'c', 'd'];\n * var pulled = _.pullAt(array, [1, 3]);\n *\n * console.log(array);\n * // => ['a', 'c']\n *\n * console.log(pulled);\n * // => ['b', 'd']\n */\n var pullAt = flatRest(function(array, indexes) {\n var length = array == null ? 0 : array.length,\n result = baseAt(array, indexes);\n\n basePullAt(array, arrayMap(indexes, function(index) {\n return isIndex(index, length) ? +index : index;\n }).sort(compareAscending));\n\n return result;\n });\n\n /**\n * Removes all elements from `array` that `predicate` returns truthy for\n * and returns an array of the removed elements. The predicate is invoked\n * with three arguments: (value, index, array).\n *\n * **Note:** Unlike `_.filter`, this method mutates `array`. Use `_.pull`\n * to pull elements from an array by value.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new array of removed elements.\n * @example\n *\n * var array = [1, 2, 3, 4];\n * var evens = _.remove(array, function(n) {\n * return n % 2 == 0;\n * });\n *\n * console.log(array);\n * // => [1, 3]\n *\n * console.log(evens);\n * // => [2, 4]\n */\n function remove(array, predicate) {\n var result = [];\n if (!(array && array.length)) {\n return result;\n }\n var index = -1,\n indexes = [],\n length = array.length;\n\n predicate = getIteratee(predicate, 3);\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result.push(value);\n indexes.push(index);\n }\n }\n basePullAt(array, indexes);\n return result;\n }\n\n /**\n * Reverses `array` so that the first element becomes the last, the second\n * element becomes the second to last, and so on.\n *\n * **Note:** This method mutates `array` and is based on\n * [`Array#reverse`](https://mdn.io/Array/reverse).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _.reverse(array);\n * // => [3, 2, 1]\n *\n * console.log(array);\n * // => [3, 2, 1]\n */\n function reverse(array) {\n return array == null ? array : nativeReverse.call(array);\n }\n\n /**\n * Creates a slice of `array` from `start` up to, but not including, `end`.\n *\n * **Note:** This method is used instead of\n * [`Array#slice`](https://mdn.io/Array/slice) to ensure dense arrays are\n * returned.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\n function slice(array, start, end) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n if (end && typeof end != 'number' && isIterateeCall(array, start, end)) {\n start = 0;\n end = length;\n }\n else {\n start = start == null ? 0 : toInteger(start);\n end = end === undefined ? length : toInteger(end);\n }\n return baseSlice(array, start, end);\n }\n\n /**\n * Uses a binary search to determine the lowest index at which `value`\n * should be inserted into `array` in order to maintain its sort order.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * _.sortedIndex([30, 50], 40);\n * // => 1\n */\n function sortedIndex(array, value) {\n return baseSortedIndex(array, value);\n }\n\n /**\n * This method is like `_.sortedIndex` except that it accepts `iteratee`\n * which is invoked for `value` and each element of `array` to compute their\n * sort ranking. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * var objects = [{ 'x': 4 }, { 'x': 5 }];\n *\n * _.sortedIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.sortedIndexBy(objects, { 'x': 4 }, 'x');\n * // => 0\n */\n function sortedIndexBy(array, value, iteratee) {\n return baseSortedIndexBy(array, value, getIteratee(iteratee, 2));\n }\n\n /**\n * This method is like `_.indexOf` except that it performs a binary\n * search on a sorted `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.sortedIndexOf([4, 5, 5, 5, 6], 5);\n * // => 1\n */\n function sortedIndexOf(array, value) {\n var length = array == null ? 0 : array.length;\n if (length) {\n var index = baseSortedIndex(array, value);\n if (index < length && eq(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * This method is like `_.sortedIndex` except that it returns the highest\n * index at which `value` should be inserted into `array` in order to\n * maintain its sort order.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * _.sortedLastIndex([4, 5, 5, 5, 6], 5);\n * // => 4\n */\n function sortedLastIndex(array, value) {\n return baseSortedIndex(array, value, true);\n }\n\n /**\n * This method is like `_.sortedLastIndex` except that it accepts `iteratee`\n * which is invoked for `value` and each element of `array` to compute their\n * sort ranking. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * var objects = [{ 'x': 4 }, { 'x': 5 }];\n *\n * _.sortedLastIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n * // => 1\n *\n * // The `_.property` iteratee shorthand.\n * _.sortedLastIndexBy(objects, { 'x': 4 }, 'x');\n * // => 1\n */\n function sortedLastIndexBy(array, value, iteratee) {\n return baseSortedIndexBy(array, value, getIteratee(iteratee, 2), true);\n }\n\n /**\n * This method is like `_.lastIndexOf` except that it performs a binary\n * search on a sorted `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.sortedLastIndexOf([4, 5, 5, 5, 6], 5);\n * // => 3\n */\n function sortedLastIndexOf(array, value) {\n var length = array == null ? 0 : array.length;\n if (length) {\n var index = baseSortedIndex(array, value, true) - 1;\n if (eq(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * This method is like `_.uniq` except that it's designed and optimized\n * for sorted arrays.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.sortedUniq([1, 1, 2]);\n * // => [1, 2]\n */\n function sortedUniq(array) {\n return (array && array.length)\n ? baseSortedUniq(array)\n : [];\n }\n\n /**\n * This method is like `_.uniqBy` except that it's designed and optimized\n * for sorted arrays.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.sortedUniqBy([1.1, 1.2, 2.3, 2.4], Math.floor);\n * // => [1.1, 2.3]\n */\n function sortedUniqBy(array, iteratee) {\n return (array && array.length)\n ? baseSortedUniq(array, getIteratee(iteratee, 2))\n : [];\n }\n\n /**\n * Gets all but the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.tail([1, 2, 3]);\n * // => [2, 3]\n */\n function tail(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseSlice(array, 1, length) : [];\n }\n\n /**\n * Creates a slice of `array` with `n` elements taken from the beginning.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to take.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.take([1, 2, 3]);\n * // => [1]\n *\n * _.take([1, 2, 3], 2);\n * // => [1, 2]\n *\n * _.take([1, 2, 3], 5);\n * // => [1, 2, 3]\n *\n * _.take([1, 2, 3], 0);\n * // => []\n */\n function take(array, n, guard) {\n if (!(array && array.length)) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n return baseSlice(array, 0, n < 0 ? 0 : n);\n }\n\n /**\n * Creates a slice of `array` with `n` elements taken from the end.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to take.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.takeRight([1, 2, 3]);\n * // => [3]\n *\n * _.takeRight([1, 2, 3], 2);\n * // => [2, 3]\n *\n * _.takeRight([1, 2, 3], 5);\n * // => [1, 2, 3]\n *\n * _.takeRight([1, 2, 3], 0);\n * // => []\n */\n function takeRight(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n n = length - n;\n return baseSlice(array, n < 0 ? 0 : n, length);\n }\n\n /**\n * Creates a slice of `array` with elements taken from the end. Elements are\n * taken until `predicate` returns falsey. The predicate is invoked with\n * three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.takeRightWhile(users, function(o) { return !o.active; });\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.matches` iteratee shorthand.\n * _.takeRightWhile(users, { 'user': 'pebbles', 'active': false });\n * // => objects for ['pebbles']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.takeRightWhile(users, ['active', false]);\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.property` iteratee shorthand.\n * _.takeRightWhile(users, 'active');\n * // => []\n */\n function takeRightWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), false, true)\n : [];\n }\n\n /**\n * Creates a slice of `array` with elements taken from the beginning. Elements\n * are taken until `predicate` returns falsey. The predicate is invoked with\n * three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.takeWhile(users, function(o) { return !o.active; });\n * // => objects for ['barney', 'fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.takeWhile(users, { 'user': 'barney', 'active': false });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.takeWhile(users, ['active', false]);\n * // => objects for ['barney', 'fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.takeWhile(users, 'active');\n * // => []\n */\n function takeWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3))\n : [];\n }\n\n /**\n * Creates an array of unique values, in order, from all given arrays using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.union([2], [1, 2]);\n * // => [2, 1]\n */\n var union = baseRest(function(arrays) {\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true));\n });\n\n /**\n * This method is like `_.union` except that it accepts `iteratee` which is\n * invoked for each element of each `arrays` to generate the criterion by\n * which uniqueness is computed. Result values are chosen from the first\n * array in which the value occurs. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.unionBy([2.1], [1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.unionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\n var unionBy = baseRest(function(arrays) {\n var iteratee = last(arrays);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), getIteratee(iteratee, 2));\n });\n\n /**\n * This method is like `_.union` except that it accepts `comparator` which\n * is invoked to compare elements of `arrays`. Result values are chosen from\n * the first array in which the value occurs. The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.unionWith(objects, others, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n */\n var unionWith = baseRest(function(arrays) {\n var comparator = last(arrays);\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), undefined, comparator);\n });\n\n /**\n * Creates a duplicate-free version of an array, using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons, in which only the first occurrence of each element\n * is kept. The order of result values is determined by the order they occur\n * in the array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniq([2, 1, 2]);\n * // => [2, 1]\n */\n function uniq(array) {\n return (array && array.length) ? baseUniq(array) : [];\n }\n\n /**\n * This method is like `_.uniq` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * uniqueness is computed. The order of result values is determined by the\n * order they occur in the array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniqBy([2.1, 1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\n function uniqBy(array, iteratee) {\n return (array && array.length) ? baseUniq(array, getIteratee(iteratee, 2)) : [];\n }\n\n /**\n * This method is like `_.uniq` except that it accepts `comparator` which\n * is invoked to compare elements of `array`. The order of result values is\n * determined by the order they occur in the array.The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.uniqWith(objects, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]\n */\n function uniqWith(array, comparator) {\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return (array && array.length) ? baseUniq(array, undefined, comparator) : [];\n }\n\n /**\n * This method is like `_.zip` except that it accepts an array of grouped\n * elements and creates an array regrouping the elements to their pre-zip\n * configuration.\n *\n * @static\n * @memberOf _\n * @since 1.2.0\n * @category Array\n * @param {Array} array The array of grouped elements to process.\n * @returns {Array} Returns the new array of regrouped elements.\n * @example\n *\n * var zipped = _.zip(['a', 'b'], [1, 2], [true, false]);\n * // => [['a', 1, true], ['b', 2, false]]\n *\n * _.unzip(zipped);\n * // => [['a', 'b'], [1, 2], [true, false]]\n */\n function unzip(array) {\n if (!(array && array.length)) {\n return [];\n }\n var length = 0;\n array = arrayFilter(array, function(group) {\n if (isArrayLikeObject(group)) {\n length = nativeMax(group.length, length);\n return true;\n }\n });\n return baseTimes(length, function(index) {\n return arrayMap(array, baseProperty(index));\n });\n }\n\n /**\n * This method is like `_.unzip` except that it accepts `iteratee` to specify\n * how regrouped values should be combined. The iteratee is invoked with the\n * elements of each group: (...group).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Array\n * @param {Array} array The array of grouped elements to process.\n * @param {Function} [iteratee=_.identity] The function to combine\n * regrouped values.\n * @returns {Array} Returns the new array of regrouped elements.\n * @example\n *\n * var zipped = _.zip([1, 2], [10, 20], [100, 200]);\n * // => [[1, 10, 100], [2, 20, 200]]\n *\n * _.unzipWith(zipped, _.add);\n * // => [3, 30, 300]\n */\n function unzipWith(array, iteratee) {\n if (!(array && array.length)) {\n return [];\n }\n var result = unzip(array);\n if (iteratee == null) {\n return result;\n }\n return arrayMap(result, function(group) {\n return apply(iteratee, undefined, group);\n });\n }\n\n /**\n * Creates an array excluding all given values using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * **Note:** Unlike `_.pull`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...*} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.xor\n * @example\n *\n * _.without([2, 1, 2, 3], 1, 2);\n * // => [3]\n */\n var without = baseRest(function(array, values) {\n return isArrayLikeObject(array)\n ? baseDifference(array, values)\n : [];\n });\n\n /**\n * Creates an array of unique values that is the\n * [symmetric difference](https://en.wikipedia.org/wiki/Symmetric_difference)\n * of the given arrays. The order of result values is determined by the order\n * they occur in the arrays.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.without\n * @example\n *\n * _.xor([2, 1], [2, 3]);\n * // => [1, 3]\n */\n var xor = baseRest(function(arrays) {\n return baseXor(arrayFilter(arrays, isArrayLikeObject));\n });\n\n /**\n * This method is like `_.xor` except that it accepts `iteratee` which is\n * invoked for each element of each `arrays` to generate the criterion by\n * which by which they're compared. The order of result values is determined\n * by the order they occur in the arrays. The iteratee is invoked with one\n * argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.xorBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [1.2, 3.4]\n *\n * // The `_.property` iteratee shorthand.\n * _.xorBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 2 }]\n */\n var xorBy = baseRest(function(arrays) {\n var iteratee = last(arrays);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return baseXor(arrayFilter(arrays, isArrayLikeObject), getIteratee(iteratee, 2));\n });\n\n /**\n * This method is like `_.xor` except that it accepts `comparator` which is\n * invoked to compare elements of `arrays`. The order of result values is\n * determined by the order they occur in the arrays. The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.xorWith(objects, others, _.isEqual);\n * // => [{ 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n */\n var xorWith = baseRest(function(arrays) {\n var comparator = last(arrays);\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return baseXor(arrayFilter(arrays, isArrayLikeObject), undefined, comparator);\n });\n\n /**\n * Creates an array of grouped elements, the first of which contains the\n * first elements of the given arrays, the second of which contains the\n * second elements of the given arrays, and so on.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to process.\n * @returns {Array} Returns the new array of grouped elements.\n * @example\n *\n * _.zip(['a', 'b'], [1, 2], [true, false]);\n * // => [['a', 1, true], ['b', 2, false]]\n */\n var zip = baseRest(unzip);\n\n /**\n * This method is like `_.fromPairs` except that it accepts two arrays,\n * one of property identifiers and one of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 0.4.0\n * @category Array\n * @param {Array} [props=[]] The property identifiers.\n * @param {Array} [values=[]] The property values.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.zipObject(['a', 'b'], [1, 2]);\n * // => { 'a': 1, 'b': 2 }\n */\n function zipObject(props, values) {\n return baseZipObject(props || [], values || [], assignValue);\n }\n\n /**\n * This method is like `_.zipObject` except that it supports property paths.\n *\n * @static\n * @memberOf _\n * @since 4.1.0\n * @category Array\n * @param {Array} [props=[]] The property identifiers.\n * @param {Array} [values=[]] The property values.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.zipObjectDeep(['a.b[0].c', 'a.b[1].d'], [1, 2]);\n * // => { 'a': { 'b': [{ 'c': 1 }, { 'd': 2 }] } }\n */\n function zipObjectDeep(props, values) {\n return baseZipObject(props || [], values || [], baseSet);\n }\n\n /**\n * This method is like `_.zip` except that it accepts `iteratee` to specify\n * how grouped values should be combined. The iteratee is invoked with the\n * elements of each group: (...group).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Array\n * @param {...Array} [arrays] The arrays to process.\n * @param {Function} [iteratee=_.identity] The function to combine\n * grouped values.\n * @returns {Array} Returns the new array of grouped elements.\n * @example\n *\n * _.zipWith([1, 2], [10, 20], [100, 200], function(a, b, c) {\n * return a + b + c;\n * });\n * // => [111, 222]\n */\n var zipWith = baseRest(function(arrays) {\n var length = arrays.length,\n iteratee = length > 1 ? arrays[length - 1] : undefined;\n\n iteratee = typeof iteratee == 'function' ? (arrays.pop(), iteratee) : undefined;\n return unzipWith(arrays, iteratee);\n });\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a `lodash` wrapper instance that wraps `value` with explicit method\n * chain sequences enabled. The result of such sequences must be unwrapped\n * with `_#value`.\n *\n * @static\n * @memberOf _\n * @since 1.3.0\n * @category Seq\n * @param {*} value The value to wrap.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'pebbles', 'age': 1 }\n * ];\n *\n * var youngest = _\n * .chain(users)\n * .sortBy('age')\n * .map(function(o) {\n * return o.user + ' is ' + o.age;\n * })\n * .head()\n * .value();\n * // => 'pebbles is 1'\n */\n function chain(value) {\n var result = lodash(value);\n result.__chain__ = true;\n return result;\n }\n\n /**\n * This method invokes `interceptor` and returns `value`. The interceptor\n * is invoked with one argument; (value). The purpose of this method is to\n * \"tap into\" a method chain sequence in order to modify intermediate results.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @param {*} value The value to provide to `interceptor`.\n * @param {Function} interceptor The function to invoke.\n * @returns {*} Returns `value`.\n * @example\n *\n * _([1, 2, 3])\n * .tap(function(array) {\n * // Mutate input array.\n * array.pop();\n * })\n * .reverse()\n * .value();\n * // => [2, 1]\n */\n function tap(value, interceptor) {\n interceptor(value);\n return value;\n }\n\n /**\n * This method is like `_.tap` except that it returns the result of `interceptor`.\n * The purpose of this method is to \"pass thru\" values replacing intermediate\n * results in a method chain sequence.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Seq\n * @param {*} value The value to provide to `interceptor`.\n * @param {Function} interceptor The function to invoke.\n * @returns {*} Returns the result of `interceptor`.\n * @example\n *\n * _(' abc ')\n * .chain()\n * .trim()\n * .thru(function(value) {\n * return [value];\n * })\n * .value();\n * // => ['abc']\n */\n function thru(value, interceptor) {\n return interceptor(value);\n }\n\n /**\n * This method is the wrapper version of `_.at`.\n *\n * @name at\n * @memberOf _\n * @since 1.0.0\n * @category Seq\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n *\n * _(object).at(['a[0].b.c', 'a[1]']).value();\n * // => [3, 4]\n */\n var wrapperAt = flatRest(function(paths) {\n var length = paths.length,\n start = length ? paths[0] : 0,\n value = this.__wrapped__,\n interceptor = function(object) { return baseAt(object, paths); };\n\n if (length > 1 || this.__actions__.length ||\n !(value instanceof LazyWrapper) || !isIndex(start)) {\n return this.thru(interceptor);\n }\n value = value.slice(start, +start + (length ? 1 : 0));\n value.__actions__.push({\n 'func': thru,\n 'args': [interceptor],\n 'thisArg': undefined\n });\n return new LodashWrapper(value, this.__chain__).thru(function(array) {\n if (length && !array.length) {\n array.push(undefined);\n }\n return array;\n });\n });\n\n /**\n * Creates a `lodash` wrapper instance with explicit method chain sequences enabled.\n *\n * @name chain\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 }\n * ];\n *\n * // A sequence without explicit chaining.\n * _(users).head();\n * // => { 'user': 'barney', 'age': 36 }\n *\n * // A sequence with explicit chaining.\n * _(users)\n * .chain()\n * .head()\n * .pick('user')\n * .value();\n * // => { 'user': 'barney' }\n */\n function wrapperChain() {\n return chain(this);\n }\n\n /**\n * Executes the chain sequence and returns the wrapped result.\n *\n * @name commit\n * @memberOf _\n * @since 3.2.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var array = [1, 2];\n * var wrapped = _(array).push(3);\n *\n * console.log(array);\n * // => [1, 2]\n *\n * wrapped = wrapped.commit();\n * console.log(array);\n * // => [1, 2, 3]\n *\n * wrapped.last();\n * // => 3\n *\n * console.log(array);\n * // => [1, 2, 3]\n */\n function wrapperCommit() {\n return new LodashWrapper(this.value(), this.__chain__);\n }\n\n /**\n * Gets the next value on a wrapped object following the\n * [iterator protocol](https://mdn.io/iteration_protocols#iterator).\n *\n * @name next\n * @memberOf _\n * @since 4.0.0\n * @category Seq\n * @returns {Object} Returns the next iterator value.\n * @example\n *\n * var wrapped = _([1, 2]);\n *\n * wrapped.next();\n * // => { 'done': false, 'value': 1 }\n *\n * wrapped.next();\n * // => { 'done': false, 'value': 2 }\n *\n * wrapped.next();\n * // => { 'done': true, 'value': undefined }\n */\n function wrapperNext() {\n if (this.__values__ === undefined) {\n this.__values__ = toArray(this.value());\n }\n var done = this.__index__ >= this.__values__.length,\n value = done ? undefined : this.__values__[this.__index__++];\n\n return { 'done': done, 'value': value };\n }\n\n /**\n * Enables the wrapper to be iterable.\n *\n * @name Symbol.iterator\n * @memberOf _\n * @since 4.0.0\n * @category Seq\n * @returns {Object} Returns the wrapper object.\n * @example\n *\n * var wrapped = _([1, 2]);\n *\n * wrapped[Symbol.iterator]() === wrapped;\n * // => true\n *\n * Array.from(wrapped);\n * // => [1, 2]\n */\n function wrapperToIterator() {\n return this;\n }\n\n /**\n * Creates a clone of the chain sequence planting `value` as the wrapped value.\n *\n * @name plant\n * @memberOf _\n * @since 3.2.0\n * @category Seq\n * @param {*} value The value to plant.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var wrapped = _([1, 2]).map(square);\n * var other = wrapped.plant([3, 4]);\n *\n * other.value();\n * // => [9, 16]\n *\n * wrapped.value();\n * // => [1, 4]\n */\n function wrapperPlant(value) {\n var result,\n parent = this;\n\n while (parent instanceof baseLodash) {\n var clone = wrapperClone(parent);\n clone.__index__ = 0;\n clone.__values__ = undefined;\n if (result) {\n previous.__wrapped__ = clone;\n } else {\n result = clone;\n }\n var previous = clone;\n parent = parent.__wrapped__;\n }\n previous.__wrapped__ = value;\n return result;\n }\n\n /**\n * This method is the wrapper version of `_.reverse`.\n *\n * **Note:** This method mutates the wrapped array.\n *\n * @name reverse\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _(array).reverse().value()\n * // => [3, 2, 1]\n *\n * console.log(array);\n * // => [3, 2, 1]\n */\n function wrapperReverse() {\n var value = this.__wrapped__;\n if (value instanceof LazyWrapper) {\n var wrapped = value;\n if (this.__actions__.length) {\n wrapped = new LazyWrapper(this);\n }\n wrapped = wrapped.reverse();\n wrapped.__actions__.push({\n 'func': thru,\n 'args': [reverse],\n 'thisArg': undefined\n });\n return new LodashWrapper(wrapped, this.__chain__);\n }\n return this.thru(reverse);\n }\n\n /**\n * Executes the chain sequence to resolve the unwrapped value.\n *\n * @name value\n * @memberOf _\n * @since 0.1.0\n * @alias toJSON, valueOf\n * @category Seq\n * @returns {*} Returns the resolved unwrapped value.\n * @example\n *\n * _([1, 2, 3]).value();\n * // => [1, 2, 3]\n */\n function wrapperValue() {\n return baseWrapperValue(this.__wrapped__, this.__actions__);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The corresponding value of\n * each key is the number of times the key was returned by `iteratee`. The\n * iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.countBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': 1, '6': 2 }\n *\n * // The `_.property` iteratee shorthand.\n * _.countBy(['one', 'two', 'three'], 'length');\n * // => { '3': 2, '5': 1 }\n */\n var countBy = createAggregator(function(result, value, key) {\n if (hasOwnProperty.call(result, key)) {\n ++result[key];\n } else {\n baseAssignValue(result, key, 1);\n }\n });\n\n /**\n * Checks if `predicate` returns truthy for **all** elements of `collection`.\n * Iteration is stopped once `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * **Note:** This method returns `true` for\n * [empty collections](https://en.wikipedia.org/wiki/Empty_set) because\n * [everything is true](https://en.wikipedia.org/wiki/Vacuous_truth) of\n * elements of empty collections.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`.\n * @example\n *\n * _.every([true, 1, null, 'yes'], Boolean);\n * // => false\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.every(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.every(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.every(users, 'active');\n * // => false\n */\n function every(collection, predicate, guard) {\n var func = isArray(collection) ? arrayEvery : baseEvery;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Iterates over elements of `collection`, returning an array of all elements\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * **Note:** Unlike `_.remove`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.reject\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * _.filter(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.filter(users, { 'age': 36, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.filter(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.filter(users, 'active');\n * // => objects for ['barney']\n *\n * // Combining several predicates using `_.overEvery` or `_.overSome`.\n * _.filter(users, _.overSome([{ 'age': 36 }, ['age', 40]]));\n * // => objects for ['fred', 'barney']\n */\n function filter(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Iterates over elements of `collection`, returning the first element\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false },\n * { 'user': 'pebbles', 'age': 1, 'active': true }\n * ];\n *\n * _.find(users, function(o) { return o.age < 40; });\n * // => object for 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.find(users, { 'age': 1, 'active': true });\n * // => object for 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.find(users, ['active', false]);\n * // => object for 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.find(users, 'active');\n * // => object for 'barney'\n */\n var find = createFind(findIndex);\n\n /**\n * This method is like `_.find` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=collection.length-1] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * _.findLast([1, 2, 3, 4], function(n) {\n * return n % 2 == 1;\n * });\n * // => 3\n */\n var findLast = createFind(findLastIndex);\n\n /**\n * Creates a flattened array of values by running each element in `collection`\n * thru `iteratee` and flattening the mapped results. The iteratee is invoked\n * with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [n, n];\n * }\n *\n * _.flatMap([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\n function flatMap(collection, iteratee) {\n return baseFlatten(map(collection, iteratee), 1);\n }\n\n /**\n * This method is like `_.flatMap` except that it recursively flattens the\n * mapped results.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [[[n, n]]];\n * }\n *\n * _.flatMapDeep([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\n function flatMapDeep(collection, iteratee) {\n return baseFlatten(map(collection, iteratee), INFINITY);\n }\n\n /**\n * This method is like `_.flatMap` except that it recursively flattens the\n * mapped results up to `depth` times.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {number} [depth=1] The maximum recursion depth.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [[[n, n]]];\n * }\n *\n * _.flatMapDepth([1, 2], duplicate, 2);\n * // => [[1, 1], [2, 2]]\n */\n function flatMapDepth(collection, iteratee, depth) {\n depth = depth === undefined ? 1 : toInteger(depth);\n return baseFlatten(map(collection, iteratee), depth);\n }\n\n /**\n * Iterates over elements of `collection` and invokes `iteratee` for each element.\n * The iteratee is invoked with three arguments: (value, index|key, collection).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * **Note:** As with other \"Collections\" methods, objects with a \"length\"\n * property are iterated like arrays. To avoid this behavior use `_.forIn`\n * or `_.forOwn` for object iteration.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias each\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEachRight\n * @example\n *\n * _.forEach([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `1` then `2`.\n *\n * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\n function forEach(collection, iteratee) {\n var func = isArray(collection) ? arrayEach : baseEach;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.forEach` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @alias eachRight\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEach\n * @example\n *\n * _.forEachRight([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `2` then `1`.\n */\n function forEachRight(collection, iteratee) {\n var func = isArray(collection) ? arrayEachRight : baseEachRight;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The order of grouped values\n * is determined by the order they occur in `collection`. The corresponding\n * value of each key is an array of elements responsible for generating the\n * key. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.groupBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': [4.2], '6': [6.1, 6.3] }\n *\n * // The `_.property` iteratee shorthand.\n * _.groupBy(['one', 'two', 'three'], 'length');\n * // => { '3': ['one', 'two'], '5': ['three'] }\n */\n var groupBy = createAggregator(function(result, value, key) {\n if (hasOwnProperty.call(result, key)) {\n result[key].push(value);\n } else {\n baseAssignValue(result, key, [value]);\n }\n });\n\n /**\n * Checks if `value` is in `collection`. If `collection` is a string, it's\n * checked for a substring of `value`, otherwise\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * is used for equality comparisons. If `fromIndex` is negative, it's used as\n * the offset from the end of `collection`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {boolean} Returns `true` if `value` is found, else `false`.\n * @example\n *\n * _.includes([1, 2, 3], 1);\n * // => true\n *\n * _.includes([1, 2, 3], 1, 2);\n * // => false\n *\n * _.includes({ 'a': 1, 'b': 2 }, 1);\n * // => true\n *\n * _.includes('abcd', 'bc');\n * // => true\n */\n function includes(collection, value, fromIndex, guard) {\n collection = isArrayLike(collection) ? collection : values(collection);\n fromIndex = (fromIndex && !guard) ? toInteger(fromIndex) : 0;\n\n var length = collection.length;\n if (fromIndex < 0) {\n fromIndex = nativeMax(length + fromIndex, 0);\n }\n return isString(collection)\n ? (fromIndex <= length && collection.indexOf(value, fromIndex) > -1)\n : (!!length && baseIndexOf(collection, value, fromIndex) > -1);\n }\n\n /**\n * Invokes the method at `path` of each element in `collection`, returning\n * an array of the results of each invoked method. Any additional arguments\n * are provided to each invoked method. If `path` is a function, it's invoked\n * for, and `this` bound to, each element in `collection`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Array|Function|string} path The path of the method to invoke or\n * the function invoked per iteration.\n * @param {...*} [args] The arguments to invoke each method with.\n * @returns {Array} Returns the array of results.\n * @example\n *\n * _.invokeMap([[5, 1, 7], [3, 2, 1]], 'sort');\n * // => [[1, 5, 7], [1, 2, 3]]\n *\n * _.invokeMap([123, 456], String.prototype.split, '');\n * // => [['1', '2', '3'], ['4', '5', '6']]\n */\n var invokeMap = baseRest(function(collection, path, args) {\n var index = -1,\n isFunc = typeof path == 'function',\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value) {\n result[++index] = isFunc ? apply(path, value, args) : baseInvoke(value, path, args);\n });\n return result;\n });\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The corresponding value of\n * each key is the last element responsible for generating the key. The\n * iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * var array = [\n * { 'dir': 'left', 'code': 97 },\n * { 'dir': 'right', 'code': 100 }\n * ];\n *\n * _.keyBy(array, function(o) {\n * return String.fromCharCode(o.code);\n * });\n * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } }\n *\n * _.keyBy(array, 'dir');\n * // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } }\n */\n var keyBy = createAggregator(function(result, value, key) {\n baseAssignValue(result, key, value);\n });\n\n /**\n * Creates an array of values by running each element in `collection` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.\n *\n * The guarded methods are:\n * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,\n * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,\n * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,\n * `template`, `trim`, `trimEnd`, `trimStart`, and `words`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * _.map([4, 8], square);\n * // => [16, 64]\n *\n * _.map({ 'a': 4, 'b': 8 }, square);\n * // => [16, 64] (iteration order is not guaranteed)\n *\n * var users = [\n * { 'user': 'barney' },\n * { 'user': 'fred' }\n * ];\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, 'user');\n * // => ['barney', 'fred']\n */\n function map(collection, iteratee) {\n var func = isArray(collection) ? arrayMap : baseMap;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.sortBy` except that it allows specifying the sort\n * orders of the iteratees to sort by. If `orders` is unspecified, all values\n * are sorted in ascending order. Otherwise, specify an order of \"desc\" for\n * descending or \"asc\" for ascending sort order of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Array[]|Function[]|Object[]|string[]} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @param {string[]} [orders] The sort orders of `iteratees`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 34 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'barney', 'age': 36 }\n * ];\n *\n * // Sort by `user` in ascending order and by `age` in descending order.\n * _.orderBy(users, ['user', 'age'], ['asc', 'desc']);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]\n */\n function orderBy(collection, iteratees, orders, guard) {\n if (collection == null) {\n return [];\n }\n if (!isArray(iteratees)) {\n iteratees = iteratees == null ? [] : [iteratees];\n }\n orders = guard ? undefined : orders;\n if (!isArray(orders)) {\n orders = orders == null ? [] : [orders];\n }\n return baseOrderBy(collection, iteratees, orders);\n }\n\n /**\n * Creates an array of elements split into two groups, the first of which\n * contains elements `predicate` returns truthy for, the second of which\n * contains elements `predicate` returns falsey for. The predicate is\n * invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the array of grouped elements.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': true },\n * { 'user': 'pebbles', 'age': 1, 'active': false }\n * ];\n *\n * _.partition(users, function(o) { return o.active; });\n * // => objects for [['fred'], ['barney', 'pebbles']]\n *\n * // The `_.matches` iteratee shorthand.\n * _.partition(users, { 'age': 1, 'active': false });\n * // => objects for [['pebbles'], ['barney', 'fred']]\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.partition(users, ['active', false]);\n * // => objects for [['barney', 'pebbles'], ['fred']]\n *\n * // The `_.property` iteratee shorthand.\n * _.partition(users, 'active');\n * // => objects for [['fred'], ['barney', 'pebbles']]\n */\n var partition = createAggregator(function(result, value, key) {\n result[key ? 0 : 1].push(value);\n }, function() { return [[], []]; });\n\n /**\n * Reduces `collection` to a value which is the accumulated result of running\n * each element in `collection` thru `iteratee`, where each successive\n * invocation is supplied the return value of the previous. If `accumulator`\n * is not given, the first element of `collection` is used as the initial\n * value. The iteratee is invoked with four arguments:\n * (accumulator, value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.reduce`, `_.reduceRight`, and `_.transform`.\n *\n * The guarded methods are:\n * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`,\n * and `sortBy`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduceRight\n * @example\n *\n * _.reduce([1, 2], function(sum, n) {\n * return sum + n;\n * }, 0);\n * // => 3\n *\n * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * return result;\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed)\n */\n function reduce(collection, iteratee, accumulator) {\n var func = isArray(collection) ? arrayReduce : baseReduce,\n initAccum = arguments.length < 3;\n\n return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEach);\n }\n\n /**\n * This method is like `_.reduce` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduce\n * @example\n *\n * var array = [[0, 1], [2, 3], [4, 5]];\n *\n * _.reduceRight(array, function(flattened, other) {\n * return flattened.concat(other);\n * }, []);\n * // => [4, 5, 2, 3, 0, 1]\n */\n function reduceRight(collection, iteratee, accumulator) {\n var func = isArray(collection) ? arrayReduceRight : baseReduce,\n initAccum = arguments.length < 3;\n\n return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEachRight);\n }\n\n /**\n * The opposite of `_.filter`; this method returns the elements of `collection`\n * that `predicate` does **not** return truthy for.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.filter\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': true }\n * ];\n *\n * _.reject(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.reject(users, { 'age': 40, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.reject(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.reject(users, 'active');\n * // => objects for ['barney']\n */\n function reject(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, negate(getIteratee(predicate, 3)));\n }\n\n /**\n * Gets a random element from `collection`.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to sample.\n * @returns {*} Returns the random element.\n * @example\n *\n * _.sample([1, 2, 3, 4]);\n * // => 2\n */\n function sample(collection) {\n var func = isArray(collection) ? arraySample : baseSample;\n return func(collection);\n }\n\n /**\n * Gets `n` random elements at unique keys from `collection` up to the\n * size of `collection`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to sample.\n * @param {number} [n=1] The number of elements to sample.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the random elements.\n * @example\n *\n * _.sampleSize([1, 2, 3], 2);\n * // => [3, 1]\n *\n * _.sampleSize([1, 2, 3], 4);\n * // => [2, 3, 1]\n */\n function sampleSize(collection, n, guard) {\n if ((guard ? isIterateeCall(collection, n, guard) : n === undefined)) {\n n = 1;\n } else {\n n = toInteger(n);\n }\n var func = isArray(collection) ? arraySampleSize : baseSampleSize;\n return func(collection, n);\n }\n\n /**\n * Creates an array of shuffled values, using a version of the\n * [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher-Yates_shuffle).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to shuffle.\n * @returns {Array} Returns the new shuffled array.\n * @example\n *\n * _.shuffle([1, 2, 3, 4]);\n * // => [4, 1, 3, 2]\n */\n function shuffle(collection) {\n var func = isArray(collection) ? arrayShuffle : baseShuffle;\n return func(collection);\n }\n\n /**\n * Gets the size of `collection` by returning its length for array-like\n * values or the number of own enumerable string keyed properties for objects.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @returns {number} Returns the collection size.\n * @example\n *\n * _.size([1, 2, 3]);\n * // => 3\n *\n * _.size({ 'a': 1, 'b': 2 });\n * // => 2\n *\n * _.size('pebbles');\n * // => 7\n */\n function size(collection) {\n if (collection == null) {\n return 0;\n }\n if (isArrayLike(collection)) {\n return isString(collection) ? stringSize(collection) : collection.length;\n }\n var tag = getTag(collection);\n if (tag == mapTag || tag == setTag) {\n return collection.size;\n }\n return baseKeys(collection).length;\n }\n\n /**\n * Checks if `predicate` returns truthy for **any** element of `collection`.\n * Iteration is stopped once `predicate` returns truthy. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n * @example\n *\n * _.some([null, 0, 'yes', false], Boolean);\n * // => true\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.some(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.some(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.some(users, 'active');\n * // => true\n */\n function some(collection, predicate, guard) {\n var func = isArray(collection) ? arraySome : baseSome;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Creates an array of elements, sorted in ascending order by the results of\n * running each element in a collection thru each iteratee. This method\n * performs a stable sort, that is, it preserves the original sort order of\n * equal elements. The iteratees are invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {...(Function|Function[])} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 30 },\n * { 'user': 'barney', 'age': 34 }\n * ];\n *\n * _.sortBy(users, [function(o) { return o.user; }]);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 30]]\n *\n * _.sortBy(users, ['user', 'age']);\n * // => objects for [['barney', 34], ['barney', 36], ['fred', 30], ['fred', 48]]\n */\n var sortBy = baseRest(function(collection, iteratees) {\n if (collection == null) {\n return [];\n }\n var length = iteratees.length;\n if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) {\n iteratees = [];\n } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) {\n iteratees = [iteratees[0]];\n }\n return baseOrderBy(collection, baseFlatten(iteratees, 1), []);\n });\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\n var now = ctxNow || function() {\n return root.Date.now();\n };\n\n /*------------------------------------------------------------------------*/\n\n /**\n * The opposite of `_.before`; this method creates a function that invokes\n * `func` once it's called `n` or more times.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {number} n The number of calls before `func` is invoked.\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * var saves = ['profile', 'settings'];\n *\n * var done = _.after(saves.length, function() {\n * console.log('done saving!');\n * });\n *\n * _.forEach(saves, function(type) {\n * asyncSave({ 'type': type, 'complete': done });\n * });\n * // => Logs 'done saving!' after the two async saves have completed.\n */\n function after(n, func) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n n = toInteger(n);\n return function() {\n if (--n < 1) {\n return func.apply(this, arguments);\n }\n };\n }\n\n /**\n * Creates a function that invokes `func`, with up to `n` arguments,\n * ignoring any additional arguments.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to cap arguments for.\n * @param {number} [n=func.length] The arity cap.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new capped function.\n * @example\n *\n * _.map(['6', '8', '10'], _.ary(parseInt, 1));\n * // => [6, 8, 10]\n */\n function ary(func, n, guard) {\n n = guard ? undefined : n;\n n = (func && n == null) ? func.length : n;\n return createWrap(func, WRAP_ARY_FLAG, undefined, undefined, undefined, undefined, n);\n }\n\n /**\n * Creates a function that invokes `func`, with the `this` binding and arguments\n * of the created function, while it's called less than `n` times. Subsequent\n * calls to the created function return the result of the last `func` invocation.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {number} n The number of calls at which `func` is no longer invoked.\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * jQuery(element).on('click', _.before(5, addContactToList));\n * // => Allows adding up to 4 contacts to the list.\n */\n function before(n, func) {\n var result;\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n n = toInteger(n);\n return function() {\n if (--n > 0) {\n result = func.apply(this, arguments);\n }\n if (n <= 1) {\n func = undefined;\n }\n return result;\n };\n }\n\n /**\n * Creates a function that invokes `func` with the `this` binding of `thisArg`\n * and `partials` prepended to the arguments it receives.\n *\n * The `_.bind.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for partially applied arguments.\n *\n * **Note:** Unlike native `Function#bind`, this method doesn't set the \"length\"\n * property of bound functions.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to bind.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new bound function.\n * @example\n *\n * function greet(greeting, punctuation) {\n * return greeting + ' ' + this.user + punctuation;\n * }\n *\n * var object = { 'user': 'fred' };\n *\n * var bound = _.bind(greet, object, 'hi');\n * bound('!');\n * // => 'hi fred!'\n *\n * // Bound with placeholders.\n * var bound = _.bind(greet, object, _, '!');\n * bound('hi');\n * // => 'hi fred!'\n */\n var bind = baseRest(function(func, thisArg, partials) {\n var bitmask = WRAP_BIND_FLAG;\n if (partials.length) {\n var holders = replaceHolders(partials, getHolder(bind));\n bitmask |= WRAP_PARTIAL_FLAG;\n }\n return createWrap(func, bitmask, thisArg, partials, holders);\n });\n\n /**\n * Creates a function that invokes the method at `object[key]` with `partials`\n * prepended to the arguments it receives.\n *\n * This method differs from `_.bind` by allowing bound functions to reference\n * methods that may be redefined or don't yet exist. See\n * [Peter Michaux's article](http://peter.michaux.ca/articles/lazy-function-definition-pattern)\n * for more details.\n *\n * The `_.bindKey.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Function\n * @param {Object} object The object to invoke the method on.\n * @param {string} key The key of the method.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new bound function.\n * @example\n *\n * var object = {\n * 'user': 'fred',\n * 'greet': function(greeting, punctuation) {\n * return greeting + ' ' + this.user + punctuation;\n * }\n * };\n *\n * var bound = _.bindKey(object, 'greet', 'hi');\n * bound('!');\n * // => 'hi fred!'\n *\n * object.greet = function(greeting, punctuation) {\n * return greeting + 'ya ' + this.user + punctuation;\n * };\n *\n * bound('!');\n * // => 'hiya fred!'\n *\n * // Bound with placeholders.\n * var bound = _.bindKey(object, 'greet', _, '!');\n * bound('hi');\n * // => 'hiya fred!'\n */\n var bindKey = baseRest(function(object, key, partials) {\n var bitmask = WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG;\n if (partials.length) {\n var holders = replaceHolders(partials, getHolder(bindKey));\n bitmask |= WRAP_PARTIAL_FLAG;\n }\n return createWrap(key, bitmask, object, partials, holders);\n });\n\n /**\n * Creates a function that accepts arguments of `func` and either invokes\n * `func` returning its result, if at least `arity` number of arguments have\n * been provided, or returns a function that accepts the remaining `func`\n * arguments, and so on. The arity of `func` may be specified if `func.length`\n * is not sufficient.\n *\n * The `_.curry.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for provided arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of curried functions.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Function\n * @param {Function} func The function to curry.\n * @param {number} [arity=func.length] The arity of `func`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new curried function.\n * @example\n *\n * var abc = function(a, b, c) {\n * return [a, b, c];\n * };\n *\n * var curried = _.curry(abc);\n *\n * curried(1)(2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2, 3);\n * // => [1, 2, 3]\n *\n * // Curried with placeholders.\n * curried(1)(_, 3)(2);\n * // => [1, 2, 3]\n */\n function curry(func, arity, guard) {\n arity = guard ? undefined : arity;\n var result = createWrap(func, WRAP_CURRY_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n result.placeholder = curry.placeholder;\n return result;\n }\n\n /**\n * This method is like `_.curry` except that arguments are applied to `func`\n * in the manner of `_.partialRight` instead of `_.partial`.\n *\n * The `_.curryRight.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for provided arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of curried functions.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to curry.\n * @param {number} [arity=func.length] The arity of `func`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new curried function.\n * @example\n *\n * var abc = function(a, b, c) {\n * return [a, b, c];\n * };\n *\n * var curried = _.curryRight(abc);\n *\n * curried(3)(2)(1);\n * // => [1, 2, 3]\n *\n * curried(2, 3)(1);\n * // => [1, 2, 3]\n *\n * curried(1, 2, 3);\n * // => [1, 2, 3]\n *\n * // Curried with placeholders.\n * curried(3)(1, _)(2);\n * // => [1, 2, 3]\n */\n function curryRight(func, arity, guard) {\n arity = guard ? undefined : arity;\n var result = createWrap(func, WRAP_CURRY_RIGHT_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n result.placeholder = curryRight.placeholder;\n return result;\n }\n\n /**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\n function debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n }\n\n /**\n * Defers invoking the `func` until the current call stack has cleared. Any\n * additional arguments are provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to defer.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {number} Returns the timer id.\n * @example\n *\n * _.defer(function(text) {\n * console.log(text);\n * }, 'deferred');\n * // => Logs 'deferred' after one millisecond.\n */\n var defer = baseRest(function(func, args) {\n return baseDelay(func, 1, args);\n });\n\n /**\n * Invokes `func` after `wait` milliseconds. Any additional arguments are\n * provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {number} Returns the timer id.\n * @example\n *\n * _.delay(function(text) {\n * console.log(text);\n * }, 1000, 'later');\n * // => Logs 'later' after one second.\n */\n var delay = baseRest(function(func, wait, args) {\n return baseDelay(func, toNumber(wait) || 0, args);\n });\n\n /**\n * Creates a function that invokes `func` with arguments reversed.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to flip arguments for.\n * @returns {Function} Returns the new flipped function.\n * @example\n *\n * var flipped = _.flip(function() {\n * return _.toArray(arguments);\n * });\n *\n * flipped('a', 'b', 'c', 'd');\n * // => ['d', 'c', 'b', 'a']\n */\n function flip(func) {\n return createWrap(func, WRAP_FLIP_FLAG);\n }\n\n /**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\n function memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n }\n\n // Expose `MapCache`.\n memoize.Cache = MapCache;\n\n /**\n * Creates a function that negates the result of the predicate `func`. The\n * `func` predicate is invoked with the `this` binding and arguments of the\n * created function.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} predicate The predicate to negate.\n * @returns {Function} Returns the new negated function.\n * @example\n *\n * function isEven(n) {\n * return n % 2 == 0;\n * }\n *\n * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven));\n * // => [1, 3, 5]\n */\n function negate(predicate) {\n if (typeof predicate != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return function() {\n var args = arguments;\n switch (args.length) {\n case 0: return !predicate.call(this);\n case 1: return !predicate.call(this, args[0]);\n case 2: return !predicate.call(this, args[0], args[1]);\n case 3: return !predicate.call(this, args[0], args[1], args[2]);\n }\n return !predicate.apply(this, args);\n };\n }\n\n /**\n * Creates a function that is restricted to invoking `func` once. Repeat calls\n * to the function return the value of the first invocation. The `func` is\n * invoked with the `this` binding and arguments of the created function.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * var initialize = _.once(createApplication);\n * initialize();\n * initialize();\n * // => `createApplication` is invoked once\n */\n function once(func) {\n return before(2, func);\n }\n\n /**\n * Creates a function that invokes `func` with its arguments transformed.\n *\n * @static\n * @since 4.0.0\n * @memberOf _\n * @category Function\n * @param {Function} func The function to wrap.\n * @param {...(Function|Function[])} [transforms=[_.identity]]\n * The argument transforms.\n * @returns {Function} Returns the new function.\n * @example\n *\n * function doubled(n) {\n * return n * 2;\n * }\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var func = _.overArgs(function(x, y) {\n * return [x, y];\n * }, [square, doubled]);\n *\n * func(9, 3);\n * // => [81, 6]\n *\n * func(10, 5);\n * // => [100, 10]\n */\n var overArgs = castRest(function(func, transforms) {\n transforms = (transforms.length == 1 && isArray(transforms[0]))\n ? arrayMap(transforms[0], baseUnary(getIteratee()))\n : arrayMap(baseFlatten(transforms, 1), baseUnary(getIteratee()));\n\n var funcsLength = transforms.length;\n return baseRest(function(args) {\n var index = -1,\n length = nativeMin(args.length, funcsLength);\n\n while (++index < length) {\n args[index] = transforms[index].call(this, args[index]);\n }\n return apply(func, this, args);\n });\n });\n\n /**\n * Creates a function that invokes `func` with `partials` prepended to the\n * arguments it receives. This method is like `_.bind` except it does **not**\n * alter the `this` binding.\n *\n * The `_.partial.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of partially\n * applied functions.\n *\n * @static\n * @memberOf _\n * @since 0.2.0\n * @category Function\n * @param {Function} func The function to partially apply arguments to.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new partially applied function.\n * @example\n *\n * function greet(greeting, name) {\n * return greeting + ' ' + name;\n * }\n *\n * var sayHelloTo = _.partial(greet, 'hello');\n * sayHelloTo('fred');\n * // => 'hello fred'\n *\n * // Partially applied with placeholders.\n * var greetFred = _.partial(greet, _, 'fred');\n * greetFred('hi');\n * // => 'hi fred'\n */\n var partial = baseRest(function(func, partials) {\n var holders = replaceHolders(partials, getHolder(partial));\n return createWrap(func, WRAP_PARTIAL_FLAG, undefined, partials, holders);\n });\n\n /**\n * This method is like `_.partial` except that partially applied arguments\n * are appended to the arguments it receives.\n *\n * The `_.partialRight.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of partially\n * applied functions.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Function\n * @param {Function} func The function to partially apply arguments to.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new partially applied function.\n * @example\n *\n * function greet(greeting, name) {\n * return greeting + ' ' + name;\n * }\n *\n * var greetFred = _.partialRight(greet, 'fred');\n * greetFred('hi');\n * // => 'hi fred'\n *\n * // Partially applied with placeholders.\n * var sayHelloTo = _.partialRight(greet, 'hello', _);\n * sayHelloTo('fred');\n * // => 'hello fred'\n */\n var partialRight = baseRest(function(func, partials) {\n var holders = replaceHolders(partials, getHolder(partialRight));\n return createWrap(func, WRAP_PARTIAL_RIGHT_FLAG, undefined, partials, holders);\n });\n\n /**\n * Creates a function that invokes `func` with arguments arranged according\n * to the specified `indexes` where the argument value at the first index is\n * provided as the first argument, the argument value at the second index is\n * provided as the second argument, and so on.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to rearrange arguments for.\n * @param {...(number|number[])} indexes The arranged argument indexes.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var rearged = _.rearg(function(a, b, c) {\n * return [a, b, c];\n * }, [2, 0, 1]);\n *\n * rearged('b', 'c', 'a')\n * // => ['a', 'b', 'c']\n */\n var rearg = flatRest(function(func, indexes) {\n return createWrap(func, WRAP_REARG_FLAG, undefined, undefined, undefined, indexes);\n });\n\n /**\n * Creates a function that invokes `func` with the `this` binding of the\n * created function and arguments from `start` and beyond provided as\n * an array.\n *\n * **Note:** This method is based on the\n * [rest parameter](https://mdn.io/rest_parameters).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.rest(function(what, names) {\n * return what + ' ' + _.initial(names).join(', ') +\n * (_.size(names) > 1 ? ', & ' : '') + _.last(names);\n * });\n *\n * say('hello', 'fred', 'barney', 'pebbles');\n * // => 'hello fred, barney, & pebbles'\n */\n function rest(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = start === undefined ? start : toInteger(start);\n return baseRest(func, start);\n }\n\n /**\n * Creates a function that invokes `func` with the `this` binding of the\n * create function and an array of arguments much like\n * [`Function#apply`](http://www.ecma-international.org/ecma-262/7.0/#sec-function.prototype.apply).\n *\n * **Note:** This method is based on the\n * [spread operator](https://mdn.io/spread_operator).\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Function\n * @param {Function} func The function to spread arguments over.\n * @param {number} [start=0] The start position of the spread.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.spread(function(who, what) {\n * return who + ' says ' + what;\n * });\n *\n * say(['fred', 'hello']);\n * // => 'fred says hello'\n *\n * var numbers = Promise.all([\n * Promise.resolve(40),\n * Promise.resolve(36)\n * ]);\n *\n * numbers.then(_.spread(function(x, y) {\n * return x + y;\n * }));\n * // => a Promise of 76\n */\n function spread(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = start == null ? 0 : nativeMax(toInteger(start), 0);\n return baseRest(function(args) {\n var array = args[start],\n otherArgs = castSlice(args, 0, start);\n\n if (array) {\n arrayPush(otherArgs, array);\n }\n return apply(func, this, otherArgs);\n });\n }\n\n /**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\n function throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n }\n\n /**\n * Creates a function that accepts up to one argument, ignoring any\n * additional arguments.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n * @example\n *\n * _.map(['6', '8', '10'], _.unary(parseInt));\n * // => [6, 8, 10]\n */\n function unary(func) {\n return ary(func, 1);\n }\n\n /**\n * Creates a function that provides `value` to `wrapper` as its first\n * argument. Any additional arguments provided to the function are appended\n * to those provided to the `wrapper`. The wrapper is invoked with the `this`\n * binding of the created function.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {*} value The value to wrap.\n * @param {Function} [wrapper=identity] The wrapper function.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var p = _.wrap(_.escape, function(func, text) {\n * return '

' + func(text) + '

';\n * });\n *\n * p('fred, barney, & pebbles');\n * // => '

fred, barney, & pebbles

'\n */\n function wrap(value, wrapper) {\n return partial(castFunction(wrapper), value);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Casts `value` as an array if it's not one.\n *\n * @static\n * @memberOf _\n * @since 4.4.0\n * @category Lang\n * @param {*} value The value to inspect.\n * @returns {Array} Returns the cast array.\n * @example\n *\n * _.castArray(1);\n * // => [1]\n *\n * _.castArray({ 'a': 1 });\n * // => [{ 'a': 1 }]\n *\n * _.castArray('abc');\n * // => ['abc']\n *\n * _.castArray(null);\n * // => [null]\n *\n * _.castArray(undefined);\n * // => [undefined]\n *\n * _.castArray();\n * // => []\n *\n * var array = [1, 2, 3];\n * console.log(_.castArray(array) === array);\n * // => true\n */\n function castArray() {\n if (!arguments.length) {\n return [];\n }\n var value = arguments[0];\n return isArray(value) ? value : [value];\n }\n\n /**\n * Creates a shallow clone of `value`.\n *\n * **Note:** This method is loosely based on the\n * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)\n * and supports cloning arrays, array buffers, booleans, date objects, maps,\n * numbers, `Object` objects, regexes, sets, strings, symbols, and typed\n * arrays. The own enumerable properties of `arguments` objects are cloned\n * as plain objects. An empty object is returned for uncloneable values such\n * as error objects, functions, DOM nodes, and WeakMaps.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to clone.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeep\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var shallow = _.clone(objects);\n * console.log(shallow[0] === objects[0]);\n * // => true\n */\n function clone(value) {\n return baseClone(value, CLONE_SYMBOLS_FLAG);\n }\n\n /**\n * This method is like `_.clone` except that it accepts `customizer` which\n * is invoked to produce the cloned value. If `customizer` returns `undefined`,\n * cloning is handled by the method instead. The `customizer` is invoked with\n * up to four arguments; (value [, index|key, object, stack]).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to clone.\n * @param {Function} [customizer] The function to customize cloning.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeepWith\n * @example\n *\n * function customizer(value) {\n * if (_.isElement(value)) {\n * return value.cloneNode(false);\n * }\n * }\n *\n * var el = _.cloneWith(document.body, customizer);\n *\n * console.log(el === document.body);\n * // => false\n * console.log(el.nodeName);\n * // => 'BODY'\n * console.log(el.childNodes.length);\n * // => 0\n */\n function cloneWith(value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseClone(value, CLONE_SYMBOLS_FLAG, customizer);\n }\n\n /**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\n function cloneDeep(value) {\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);\n }\n\n /**\n * This method is like `_.cloneWith` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @param {Function} [customizer] The function to customize cloning.\n * @returns {*} Returns the deep cloned value.\n * @see _.cloneWith\n * @example\n *\n * function customizer(value) {\n * if (_.isElement(value)) {\n * return value.cloneNode(true);\n * }\n * }\n *\n * var el = _.cloneDeepWith(document.body, customizer);\n *\n * console.log(el === document.body);\n * // => false\n * console.log(el.nodeName);\n * // => 'BODY'\n * console.log(el.childNodes.length);\n * // => 20\n */\n function cloneDeepWith(value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG, customizer);\n }\n\n /**\n * Checks if `object` conforms to `source` by invoking the predicate\n * properties of `source` with the corresponding property values of `object`.\n *\n * **Note:** This method is equivalent to `_.conforms` when `source` is\n * partially applied.\n *\n * @static\n * @memberOf _\n * @since 4.14.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property predicates to conform to.\n * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n *\n * _.conformsTo(object, { 'b': function(n) { return n > 1; } });\n * // => true\n *\n * _.conformsTo(object, { 'b': function(n) { return n > 2; } });\n * // => false\n */\n function conformsTo(object, source) {\n return source == null || baseConformsTo(object, source, keys(source));\n }\n\n /**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\n function eq(value, other) {\n return value === other || (value !== value && other !== other);\n }\n\n /**\n * Checks if `value` is greater than `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than `other`,\n * else `false`.\n * @see _.lt\n * @example\n *\n * _.gt(3, 1);\n * // => true\n *\n * _.gt(3, 3);\n * // => false\n *\n * _.gt(1, 3);\n * // => false\n */\n var gt = createRelationalOperation(baseGt);\n\n /**\n * Checks if `value` is greater than or equal to `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than or equal to\n * `other`, else `false`.\n * @see _.lte\n * @example\n *\n * _.gte(3, 1);\n * // => true\n *\n * _.gte(3, 3);\n * // => true\n *\n * _.gte(1, 3);\n * // => false\n */\n var gte = createRelationalOperation(function(value, other) {\n return value >= other;\n });\n\n /**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\n var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n };\n\n /**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\n var isArray = Array.isArray;\n\n /**\n * Checks if `value` is classified as an `ArrayBuffer` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n * @example\n *\n * _.isArrayBuffer(new ArrayBuffer(2));\n * // => true\n *\n * _.isArrayBuffer(new Array(2));\n * // => false\n */\n var isArrayBuffer = nodeIsArrayBuffer ? baseUnary(nodeIsArrayBuffer) : baseIsArrayBuffer;\n\n /**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\n function isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n }\n\n /**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\n function isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n }\n\n /**\n * Checks if `value` is classified as a boolean primitive or object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a boolean, else `false`.\n * @example\n *\n * _.isBoolean(false);\n * // => true\n *\n * _.isBoolean(null);\n * // => false\n */\n function isBoolean(value) {\n return value === true || value === false ||\n (isObjectLike(value) && baseGetTag(value) == boolTag);\n }\n\n /**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\n var isBuffer = nativeIsBuffer || stubFalse;\n\n /**\n * Checks if `value` is classified as a `Date` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n * @example\n *\n * _.isDate(new Date);\n * // => true\n *\n * _.isDate('Mon April 23 2012');\n * // => false\n */\n var isDate = nodeIsDate ? baseUnary(nodeIsDate) : baseIsDate;\n\n /**\n * Checks if `value` is likely a DOM element.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a DOM element, else `false`.\n * @example\n *\n * _.isElement(document.body);\n * // => true\n *\n * _.isElement('');\n * // => false\n */\n function isElement(value) {\n return isObjectLike(value) && value.nodeType === 1 && !isPlainObject(value);\n }\n\n /**\n * Checks if `value` is an empty object, collection, map, or set.\n *\n * Objects are considered empty if they have no own enumerable string keyed\n * properties.\n *\n * Array-like values such as `arguments` objects, arrays, buffers, strings, or\n * jQuery-like collections are considered empty if they have a `length` of `0`.\n * Similarly, maps and sets are considered empty if they have a `size` of `0`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is empty, else `false`.\n * @example\n *\n * _.isEmpty(null);\n * // => true\n *\n * _.isEmpty(true);\n * // => true\n *\n * _.isEmpty(1);\n * // => true\n *\n * _.isEmpty([1, 2, 3]);\n * // => false\n *\n * _.isEmpty({ 'a': 1 });\n * // => false\n */\n function isEmpty(value) {\n if (value == null) {\n return true;\n }\n if (isArrayLike(value) &&\n (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' ||\n isBuffer(value) || isTypedArray(value) || isArguments(value))) {\n return !value.length;\n }\n var tag = getTag(value);\n if (tag == mapTag || tag == setTag) {\n return !value.size;\n }\n if (isPrototype(value)) {\n return !baseKeys(value).length;\n }\n for (var key in value) {\n if (hasOwnProperty.call(value, key)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\n function isEqual(value, other) {\n return baseIsEqual(value, other);\n }\n\n /**\n * This method is like `_.isEqual` except that it accepts `customizer` which\n * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n * are handled by the method instead. The `customizer` is invoked with up to\n * six arguments: (objValue, othValue [, index|key, object, other, stack]).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * function isGreeting(value) {\n * return /^h(?:i|ello)$/.test(value);\n * }\n *\n * function customizer(objValue, othValue) {\n * if (isGreeting(objValue) && isGreeting(othValue)) {\n * return true;\n * }\n * }\n *\n * var array = ['hello', 'goodbye'];\n * var other = ['hi', 'goodbye'];\n *\n * _.isEqualWith(array, other, customizer);\n * // => true\n */\n function isEqualWith(value, other, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n var result = customizer ? customizer(value, other) : undefined;\n return result === undefined ? baseIsEqual(value, other, undefined, customizer) : !!result;\n }\n\n /**\n * Checks if `value` is an `Error`, `EvalError`, `RangeError`, `ReferenceError`,\n * `SyntaxError`, `TypeError`, or `URIError` object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an error object, else `false`.\n * @example\n *\n * _.isError(new Error);\n * // => true\n *\n * _.isError(Error);\n * // => false\n */\n function isError(value) {\n if (!isObjectLike(value)) {\n return false;\n }\n var tag = baseGetTag(value);\n return tag == errorTag || tag == domExcTag ||\n (typeof value.message == 'string' && typeof value.name == 'string' && !isPlainObject(value));\n }\n\n /**\n * Checks if `value` is a finite primitive number.\n *\n * **Note:** This method is based on\n * [`Number.isFinite`](https://mdn.io/Number/isFinite).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a finite number, else `false`.\n * @example\n *\n * _.isFinite(3);\n * // => true\n *\n * _.isFinite(Number.MIN_VALUE);\n * // => true\n *\n * _.isFinite(Infinity);\n * // => false\n *\n * _.isFinite('3');\n * // => false\n */\n function isFinite(value) {\n return typeof value == 'number' && nativeIsFinite(value);\n }\n\n /**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\n function isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n }\n\n /**\n * Checks if `value` is an integer.\n *\n * **Note:** This method is based on\n * [`Number.isInteger`](https://mdn.io/Number/isInteger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an integer, else `false`.\n * @example\n *\n * _.isInteger(3);\n * // => true\n *\n * _.isInteger(Number.MIN_VALUE);\n * // => false\n *\n * _.isInteger(Infinity);\n * // => false\n *\n * _.isInteger('3');\n * // => false\n */\n function isInteger(value) {\n return typeof value == 'number' && value == toInteger(value);\n }\n\n /**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\n function isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n }\n\n /**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\n function isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n }\n\n /**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\n function isObjectLike(value) {\n return value != null && typeof value == 'object';\n }\n\n /**\n * Checks if `value` is classified as a `Map` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\n var isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\n /**\n * Performs a partial deep comparison between `object` and `source` to\n * determine if `object` contains equivalent property values.\n *\n * **Note:** This method is equivalent to `_.matches` when `source` is\n * partially applied.\n *\n * Partial comparisons will match empty array and empty object `source`\n * values against any array or object value, respectively. See `_.isEqual`\n * for a list of supported value comparisons.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n *\n * _.isMatch(object, { 'b': 2 });\n * // => true\n *\n * _.isMatch(object, { 'b': 1 });\n * // => false\n */\n function isMatch(object, source) {\n return object === source || baseIsMatch(object, source, getMatchData(source));\n }\n\n /**\n * This method is like `_.isMatch` except that it accepts `customizer` which\n * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n * are handled by the method instead. The `customizer` is invoked with five\n * arguments: (objValue, srcValue, index|key, object, source).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n * @example\n *\n * function isGreeting(value) {\n * return /^h(?:i|ello)$/.test(value);\n * }\n *\n * function customizer(objValue, srcValue) {\n * if (isGreeting(objValue) && isGreeting(srcValue)) {\n * return true;\n * }\n * }\n *\n * var object = { 'greeting': 'hello' };\n * var source = { 'greeting': 'hi' };\n *\n * _.isMatchWith(object, source, customizer);\n * // => true\n */\n function isMatchWith(object, source, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseIsMatch(object, source, getMatchData(source), customizer);\n }\n\n /**\n * Checks if `value` is `NaN`.\n *\n * **Note:** This method is based on\n * [`Number.isNaN`](https://mdn.io/Number/isNaN) and is not the same as\n * global [`isNaN`](https://mdn.io/isNaN) which returns `true` for\n * `undefined` and other non-number values.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n * @example\n *\n * _.isNaN(NaN);\n * // => true\n *\n * _.isNaN(new Number(NaN));\n * // => true\n *\n * isNaN(undefined);\n * // => true\n *\n * _.isNaN(undefined);\n * // => false\n */\n function isNaN(value) {\n // An `NaN` primitive is the only value that is not equal to itself.\n // Perform the `toStringTag` check first to avoid errors with some\n // ActiveX objects in IE.\n return isNumber(value) && value != +value;\n }\n\n /**\n * Checks if `value` is a pristine native function.\n *\n * **Note:** This method can't reliably detect native functions in the presence\n * of the core-js package because core-js circumvents this kind of detection.\n * Despite multiple requests, the core-js maintainer has made it clear: any\n * attempt to fix the detection will be obstructed. As a result, we're left\n * with little choice but to throw an error. Unfortunately, this also affects\n * packages, like [babel-polyfill](https://www.npmjs.com/package/babel-polyfill),\n * which rely on core-js.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n * @example\n *\n * _.isNative(Array.prototype.push);\n * // => true\n *\n * _.isNative(_);\n * // => false\n */\n function isNative(value) {\n if (isMaskable(value)) {\n throw new Error(CORE_ERROR_TEXT);\n }\n return baseIsNative(value);\n }\n\n /**\n * Checks if `value` is `null`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `null`, else `false`.\n * @example\n *\n * _.isNull(null);\n * // => true\n *\n * _.isNull(void 0);\n * // => false\n */\n function isNull(value) {\n return value === null;\n }\n\n /**\n * Checks if `value` is `null` or `undefined`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is nullish, else `false`.\n * @example\n *\n * _.isNil(null);\n * // => true\n *\n * _.isNil(void 0);\n * // => true\n *\n * _.isNil(NaN);\n * // => false\n */\n function isNil(value) {\n return value == null;\n }\n\n /**\n * Checks if `value` is classified as a `Number` primitive or object.\n *\n * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are\n * classified as numbers, use the `_.isFinite` method.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a number, else `false`.\n * @example\n *\n * _.isNumber(3);\n * // => true\n *\n * _.isNumber(Number.MIN_VALUE);\n * // => true\n *\n * _.isNumber(Infinity);\n * // => true\n *\n * _.isNumber('3');\n * // => false\n */\n function isNumber(value) {\n return typeof value == 'number' ||\n (isObjectLike(value) && baseGetTag(value) == numberTag);\n }\n\n /**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\n function isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n }\n\n /**\n * Checks if `value` is classified as a `RegExp` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n * @example\n *\n * _.isRegExp(/abc/);\n * // => true\n *\n * _.isRegExp('/abc/');\n * // => false\n */\n var isRegExp = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp;\n\n /**\n * Checks if `value` is a safe integer. An integer is safe if it's an IEEE-754\n * double precision number which isn't the result of a rounded unsafe integer.\n *\n * **Note:** This method is based on\n * [`Number.isSafeInteger`](https://mdn.io/Number/isSafeInteger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a safe integer, else `false`.\n * @example\n *\n * _.isSafeInteger(3);\n * // => true\n *\n * _.isSafeInteger(Number.MIN_VALUE);\n * // => false\n *\n * _.isSafeInteger(Infinity);\n * // => false\n *\n * _.isSafeInteger('3');\n * // => false\n */\n function isSafeInteger(value) {\n return isInteger(value) && value >= -MAX_SAFE_INTEGER && value <= MAX_SAFE_INTEGER;\n }\n\n /**\n * Checks if `value` is classified as a `Set` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\n var isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\n /**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\n function isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\n }\n\n /**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\n function isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n }\n\n /**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\n var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n /**\n * Checks if `value` is `undefined`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.\n * @example\n *\n * _.isUndefined(void 0);\n * // => true\n *\n * _.isUndefined(null);\n * // => false\n */\n function isUndefined(value) {\n return value === undefined;\n }\n\n /**\n * Checks if `value` is classified as a `WeakMap` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a weak map, else `false`.\n * @example\n *\n * _.isWeakMap(new WeakMap);\n * // => true\n *\n * _.isWeakMap(new Map);\n * // => false\n */\n function isWeakMap(value) {\n return isObjectLike(value) && getTag(value) == weakMapTag;\n }\n\n /**\n * Checks if `value` is classified as a `WeakSet` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a weak set, else `false`.\n * @example\n *\n * _.isWeakSet(new WeakSet);\n * // => true\n *\n * _.isWeakSet(new Set);\n * // => false\n */\n function isWeakSet(value) {\n return isObjectLike(value) && baseGetTag(value) == weakSetTag;\n }\n\n /**\n * Checks if `value` is less than `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n * else `false`.\n * @see _.gt\n * @example\n *\n * _.lt(1, 3);\n * // => true\n *\n * _.lt(3, 3);\n * // => false\n *\n * _.lt(3, 1);\n * // => false\n */\n var lt = createRelationalOperation(baseLt);\n\n /**\n * Checks if `value` is less than or equal to `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than or equal to\n * `other`, else `false`.\n * @see _.gte\n * @example\n *\n * _.lte(1, 3);\n * // => true\n *\n * _.lte(3, 3);\n * // => true\n *\n * _.lte(3, 1);\n * // => false\n */\n var lte = createRelationalOperation(function(value, other) {\n return value <= other;\n });\n\n /**\n * Converts `value` to an array.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Array} Returns the converted array.\n * @example\n *\n * _.toArray({ 'a': 1, 'b': 2 });\n * // => [1, 2]\n *\n * _.toArray('abc');\n * // => ['a', 'b', 'c']\n *\n * _.toArray(1);\n * // => []\n *\n * _.toArray(null);\n * // => []\n */\n function toArray(value) {\n if (!value) {\n return [];\n }\n if (isArrayLike(value)) {\n return isString(value) ? stringToArray(value) : copyArray(value);\n }\n if (symIterator && value[symIterator]) {\n return iteratorToArray(value[symIterator]());\n }\n var tag = getTag(value),\n func = tag == mapTag ? mapToArray : (tag == setTag ? setToArray : values);\n\n return func(value);\n }\n\n /**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\n function toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n }\n\n /**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\n function toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n }\n\n /**\n * Converts `value` to an integer suitable for use as the length of an\n * array-like object.\n *\n * **Note:** This method is based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toLength(3.2);\n * // => 3\n *\n * _.toLength(Number.MIN_VALUE);\n * // => 0\n *\n * _.toLength(Infinity);\n * // => 4294967295\n *\n * _.toLength('3.2');\n * // => 3\n */\n function toLength(value) {\n return value ? baseClamp(toInteger(value), 0, MAX_ARRAY_LENGTH) : 0;\n }\n\n /**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\n function toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n }\n\n /**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\n function toPlainObject(value) {\n return copyObject(value, keysIn(value));\n }\n\n /**\n * Converts `value` to a safe integer. A safe integer can be compared and\n * represented correctly.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toSafeInteger(3.2);\n * // => 3\n *\n * _.toSafeInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toSafeInteger(Infinity);\n * // => 9007199254740991\n *\n * _.toSafeInteger('3.2');\n * // => 3\n */\n function toSafeInteger(value) {\n return value\n ? baseClamp(toInteger(value), -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER)\n : (value === 0 ? value : 0);\n }\n\n /**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\n function toString(value) {\n return value == null ? '' : baseToString(value);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Assigns own enumerable string keyed properties of source objects to the\n * destination object. Source objects are applied from left to right.\n * Subsequent sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object` and is loosely based on\n * [`Object.assign`](https://mdn.io/Object/assign).\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assignIn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assign({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'c': 3 }\n */\n var assign = createAssigner(function(object, source) {\n if (isPrototype(source) || isArrayLike(source)) {\n copyObject(source, keys(source), object);\n return;\n }\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n assignValue(object, key, source[key]);\n }\n }\n });\n\n /**\n * This method is like `_.assign` except that it iterates over own and\n * inherited source properties.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias extend\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assign\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assignIn({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'b': 2, 'c': 3, 'd': 4 }\n */\n var assignIn = createAssigner(function(object, source) {\n copyObject(source, keysIn(source), object);\n });\n\n /**\n * This method is like `_.assignIn` except that it accepts `customizer`\n * which is invoked to produce the assigned values. If `customizer` returns\n * `undefined`, assignment is handled by the method instead. The `customizer`\n * is invoked with five arguments: (objValue, srcValue, key, object, source).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias extendWith\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @see _.assignWith\n * @example\n *\n * function customizer(objValue, srcValue) {\n * return _.isUndefined(objValue) ? srcValue : objValue;\n * }\n *\n * var defaults = _.partialRight(_.assignInWith, customizer);\n *\n * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var assignInWith = createAssigner(function(object, source, srcIndex, customizer) {\n copyObject(source, keysIn(source), object, customizer);\n });\n\n /**\n * This method is like `_.assign` except that it accepts `customizer`\n * which is invoked to produce the assigned values. If `customizer` returns\n * `undefined`, assignment is handled by the method instead. The `customizer`\n * is invoked with five arguments: (objValue, srcValue, key, object, source).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @see _.assignInWith\n * @example\n *\n * function customizer(objValue, srcValue) {\n * return _.isUndefined(objValue) ? srcValue : objValue;\n * }\n *\n * var defaults = _.partialRight(_.assignWith, customizer);\n *\n * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var assignWith = createAssigner(function(object, source, srcIndex, customizer) {\n copyObject(source, keys(source), object, customizer);\n });\n\n /**\n * Creates an array of values corresponding to `paths` of `object`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Array} Returns the picked values.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n *\n * _.at(object, ['a[0].b.c', 'a[1]']);\n * // => [3, 4]\n */\n var at = flatRest(baseAt);\n\n /**\n * Creates an object that inherits from the `prototype` object. If a\n * `properties` object is given, its own enumerable string keyed properties\n * are assigned to the created object.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Object\n * @param {Object} prototype The object to inherit from.\n * @param {Object} [properties] The properties to assign to the object.\n * @returns {Object} Returns the new object.\n * @example\n *\n * function Shape() {\n * this.x = 0;\n * this.y = 0;\n * }\n *\n * function Circle() {\n * Shape.call(this);\n * }\n *\n * Circle.prototype = _.create(Shape.prototype, {\n * 'constructor': Circle\n * });\n *\n * var circle = new Circle;\n * circle instanceof Circle;\n * // => true\n *\n * circle instanceof Shape;\n * // => true\n */\n function create(prototype, properties) {\n var result = baseCreate(prototype);\n return properties == null ? result : baseAssign(result, properties);\n }\n\n /**\n * Assigns own and inherited enumerable string keyed properties of source\n * objects to the destination object for all destination properties that\n * resolve to `undefined`. Source objects are applied from left to right.\n * Once a property is set, additional values of the same property are ignored.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaultsDeep\n * @example\n *\n * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var defaults = baseRest(function(object, sources) {\n object = Object(object);\n\n var index = -1;\n var length = sources.length;\n var guard = length > 2 ? sources[2] : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n length = 1;\n }\n\n while (++index < length) {\n var source = sources[index];\n var props = keysIn(source);\n var propsIndex = -1;\n var propsLength = props.length;\n\n while (++propsIndex < propsLength) {\n var key = props[propsIndex];\n var value = object[key];\n\n if (value === undefined ||\n (eq(value, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n object[key] = source[key];\n }\n }\n }\n\n return object;\n });\n\n /**\n * This method is like `_.defaults` except that it recursively assigns\n * default properties.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaults\n * @example\n *\n * _.defaultsDeep({ 'a': { 'b': 2 } }, { 'a': { 'b': 1, 'c': 3 } });\n * // => { 'a': { 'b': 2, 'c': 3 } }\n */\n var defaultsDeep = baseRest(function(args) {\n args.push(undefined, customDefaultsMerge);\n return apply(mergeWith, undefined, args);\n });\n\n /**\n * This method is like `_.find` except that it returns the key of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {string|undefined} Returns the key of the matched element,\n * else `undefined`.\n * @example\n *\n * var users = {\n * 'barney': { 'age': 36, 'active': true },\n * 'fred': { 'age': 40, 'active': false },\n * 'pebbles': { 'age': 1, 'active': true }\n * };\n *\n * _.findKey(users, function(o) { return o.age < 40; });\n * // => 'barney' (iteration order is not guaranteed)\n *\n * // The `_.matches` iteratee shorthand.\n * _.findKey(users, { 'age': 1, 'active': true });\n * // => 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findKey(users, ['active', false]);\n * // => 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.findKey(users, 'active');\n * // => 'barney'\n */\n function findKey(object, predicate) {\n return baseFindKey(object, getIteratee(predicate, 3), baseForOwn);\n }\n\n /**\n * This method is like `_.findKey` except that it iterates over elements of\n * a collection in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {string|undefined} Returns the key of the matched element,\n * else `undefined`.\n * @example\n *\n * var users = {\n * 'barney': { 'age': 36, 'active': true },\n * 'fred': { 'age': 40, 'active': false },\n * 'pebbles': { 'age': 1, 'active': true }\n * };\n *\n * _.findLastKey(users, function(o) { return o.age < 40; });\n * // => returns 'pebbles' assuming `_.findKey` returns 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.findLastKey(users, { 'age': 36, 'active': true });\n * // => 'barney'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findLastKey(users, ['active', false]);\n * // => 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.findLastKey(users, 'active');\n * // => 'pebbles'\n */\n function findLastKey(object, predicate) {\n return baseFindKey(object, getIteratee(predicate, 3), baseForOwnRight);\n }\n\n /**\n * Iterates over own and inherited enumerable string keyed properties of an\n * object and invokes `iteratee` for each property. The iteratee is invoked\n * with three arguments: (value, key, object). Iteratee functions may exit\n * iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forInRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forIn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a', 'b', then 'c' (iteration order is not guaranteed).\n */\n function forIn(object, iteratee) {\n return object == null\n ? object\n : baseFor(object, getIteratee(iteratee, 3), keysIn);\n }\n\n /**\n * This method is like `_.forIn` except that it iterates over properties of\n * `object` in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forIn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forInRight(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'c', 'b', then 'a' assuming `_.forIn` logs 'a', 'b', then 'c'.\n */\n function forInRight(object, iteratee) {\n return object == null\n ? object\n : baseForRight(object, getIteratee(iteratee, 3), keysIn);\n }\n\n /**\n * Iterates over own enumerable string keyed properties of an object and\n * invokes `iteratee` for each property. The iteratee is invoked with three\n * arguments: (value, key, object). Iteratee functions may exit iteration\n * early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forOwnRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forOwn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\n function forOwn(object, iteratee) {\n return object && baseForOwn(object, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.forOwn` except that it iterates over properties of\n * `object` in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forOwn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forOwnRight(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'b' then 'a' assuming `_.forOwn` logs 'a' then 'b'.\n */\n function forOwnRight(object, iteratee) {\n return object && baseForOwnRight(object, getIteratee(iteratee, 3));\n }\n\n /**\n * Creates an array of function property names from own enumerable properties\n * of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to inspect.\n * @returns {Array} Returns the function names.\n * @see _.functionsIn\n * @example\n *\n * function Foo() {\n * this.a = _.constant('a');\n * this.b = _.constant('b');\n * }\n *\n * Foo.prototype.c = _.constant('c');\n *\n * _.functions(new Foo);\n * // => ['a', 'b']\n */\n function functions(object) {\n return object == null ? [] : baseFunctions(object, keys(object));\n }\n\n /**\n * Creates an array of function property names from own and inherited\n * enumerable properties of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @returns {Array} Returns the function names.\n * @see _.functions\n * @example\n *\n * function Foo() {\n * this.a = _.constant('a');\n * this.b = _.constant('b');\n * }\n *\n * Foo.prototype.c = _.constant('c');\n *\n * _.functionsIn(new Foo);\n * // => ['a', 'b', 'c']\n */\n function functionsIn(object) {\n return object == null ? [] : baseFunctions(object, keysIn(object));\n }\n\n /**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\n function get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n }\n\n /**\n * Checks if `path` is a direct property of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = { 'a': { 'b': 2 } };\n * var other = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.has(object, 'a');\n * // => true\n *\n * _.has(object, 'a.b');\n * // => true\n *\n * _.has(object, ['a', 'b']);\n * // => true\n *\n * _.has(other, 'a');\n * // => false\n */\n function has(object, path) {\n return object != null && hasPath(object, path, baseHas);\n }\n\n /**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\n function hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n }\n\n /**\n * Creates an object composed of the inverted keys and values of `object`.\n * If `object` contains duplicate values, subsequent values overwrite\n * property assignments of previous values.\n *\n * @static\n * @memberOf _\n * @since 0.7.0\n * @category Object\n * @param {Object} object The object to invert.\n * @returns {Object} Returns the new inverted object.\n * @example\n *\n * var object = { 'a': 1, 'b': 2, 'c': 1 };\n *\n * _.invert(object);\n * // => { '1': 'c', '2': 'b' }\n */\n var invert = createInverter(function(result, value, key) {\n if (value != null &&\n typeof value.toString != 'function') {\n value = nativeObjectToString.call(value);\n }\n\n result[value] = key;\n }, constant(identity));\n\n /**\n * This method is like `_.invert` except that the inverted object is generated\n * from the results of running each element of `object` thru `iteratee`. The\n * corresponding inverted value of each inverted key is an array of keys\n * responsible for generating the inverted value. The iteratee is invoked\n * with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.1.0\n * @category Object\n * @param {Object} object The object to invert.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Object} Returns the new inverted object.\n * @example\n *\n * var object = { 'a': 1, 'b': 2, 'c': 1 };\n *\n * _.invertBy(object);\n * // => { '1': ['a', 'c'], '2': ['b'] }\n *\n * _.invertBy(object, function(value) {\n * return 'group' + value;\n * });\n * // => { 'group1': ['a', 'c'], 'group2': ['b'] }\n */\n var invertBy = createInverter(function(result, value, key) {\n if (value != null &&\n typeof value.toString != 'function') {\n value = nativeObjectToString.call(value);\n }\n\n if (hasOwnProperty.call(result, value)) {\n result[value].push(key);\n } else {\n result[value] = [key];\n }\n }, getIteratee);\n\n /**\n * Invokes the method at `path` of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the method to invoke.\n * @param {...*} [args] The arguments to invoke the method with.\n * @returns {*} Returns the result of the invoked method.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': [1, 2, 3, 4] } }] };\n *\n * _.invoke(object, 'a[0].b.c.slice', 1, 3);\n * // => [2, 3]\n */\n var invoke = baseRest(baseInvoke);\n\n /**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\n function keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n }\n\n /**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\n function keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n }\n\n /**\n * The opposite of `_.mapValues`; this method creates an object with the\n * same values as `object` and keys generated by running each own enumerable\n * string keyed property of `object` thru `iteratee`. The iteratee is invoked\n * with three arguments: (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapValues\n * @example\n *\n * _.mapKeys({ 'a': 1, 'b': 2 }, function(value, key) {\n * return key + value;\n * });\n * // => { 'a1': 1, 'b2': 2 }\n */\n function mapKeys(object, iteratee) {\n var result = {};\n iteratee = getIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, iteratee(value, key, object), value);\n });\n return result;\n }\n\n /**\n * Creates an object with the same keys as `object` and values generated\n * by running each own enumerable string keyed property of `object` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapKeys\n * @example\n *\n * var users = {\n * 'fred': { 'user': 'fred', 'age': 40 },\n * 'pebbles': { 'user': 'pebbles', 'age': 1 }\n * };\n *\n * _.mapValues(users, function(o) { return o.age; });\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n *\n * // The `_.property` iteratee shorthand.\n * _.mapValues(users, 'age');\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n */\n function mapValues(object, iteratee) {\n var result = {};\n iteratee = getIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, key, iteratee(value, key, object));\n });\n return result;\n }\n\n /**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n * 'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n * 'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\n var merge = createAssigner(function(object, source, srcIndex) {\n baseMerge(object, source, srcIndex);\n });\n\n /**\n * This method is like `_.merge` except that it accepts `customizer` which\n * is invoked to produce the merged values of the destination and source\n * properties. If `customizer` returns `undefined`, merging is handled by the\n * method instead. The `customizer` is invoked with six arguments:\n * (objValue, srcValue, key, object, source, stack).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} customizer The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * function customizer(objValue, srcValue) {\n * if (_.isArray(objValue)) {\n * return objValue.concat(srcValue);\n * }\n * }\n *\n * var object = { 'a': [1], 'b': [2] };\n * var other = { 'a': [3], 'b': [4] };\n *\n * _.mergeWith(object, other, customizer);\n * // => { 'a': [1, 3], 'b': [2, 4] }\n */\n var mergeWith = createAssigner(function(object, source, srcIndex, customizer) {\n baseMerge(object, source, srcIndex, customizer);\n });\n\n /**\n * The opposite of `_.pick`; this method creates an object composed of the\n * own and inherited enumerable property paths of `object` that are not omitted.\n *\n * **Note:** This method is considerably slower than `_.pick`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to omit.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omit(object, ['a', 'c']);\n * // => { 'b': '2' }\n */\n var omit = flatRest(function(object, paths) {\n var result = {};\n if (object == null) {\n return result;\n }\n var isDeep = false;\n paths = arrayMap(paths, function(path) {\n path = castPath(path, object);\n isDeep || (isDeep = path.length > 1);\n return path;\n });\n copyObject(object, getAllKeysIn(object), result);\n if (isDeep) {\n result = baseClone(result, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone);\n }\n var length = paths.length;\n while (length--) {\n baseUnset(result, paths[length]);\n }\n return result;\n });\n\n /**\n * The opposite of `_.pickBy`; this method creates an object composed of\n * the own and inherited enumerable string keyed properties of `object` that\n * `predicate` doesn't return truthy for. The predicate is invoked with two\n * arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omitBy(object, _.isNumber);\n * // => { 'b': '2' }\n */\n function omitBy(object, predicate) {\n return pickBy(object, negate(getIteratee(predicate)));\n }\n\n /**\n * Creates an object composed of the picked `object` properties.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pick(object, ['a', 'c']);\n * // => { 'a': 1, 'c': 3 }\n */\n var pick = flatRest(function(object, paths) {\n return object == null ? {} : basePick(object, paths);\n });\n\n /**\n * Creates an object composed of the `object` properties `predicate` returns\n * truthy for. The predicate is invoked with two arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pickBy(object, _.isNumber);\n * // => { 'a': 1, 'c': 3 }\n */\n function pickBy(object, predicate) {\n if (object == null) {\n return {};\n }\n var props = arrayMap(getAllKeysIn(object), function(prop) {\n return [prop];\n });\n predicate = getIteratee(predicate);\n return basePickBy(object, props, function(value, path) {\n return predicate(value, path[0]);\n });\n }\n\n /**\n * This method is like `_.get` except that if the resolved value is a\n * function it's invoked with the `this` binding of its parent object and\n * its result is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to resolve.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c1': 3, 'c2': _.constant(4) } }] };\n *\n * _.result(object, 'a[0].b.c1');\n * // => 3\n *\n * _.result(object, 'a[0].b.c2');\n * // => 4\n *\n * _.result(object, 'a[0].b.c3', 'default');\n * // => 'default'\n *\n * _.result(object, 'a[0].b.c3', _.constant('default'));\n * // => 'default'\n */\n function result(object, path, defaultValue) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length;\n\n // Ensure the loop is entered when path is empty.\n if (!length) {\n length = 1;\n object = undefined;\n }\n while (++index < length) {\n var value = object == null ? undefined : object[toKey(path[index])];\n if (value === undefined) {\n index = length;\n value = defaultValue;\n }\n object = isFunction(value) ? value.call(object) : value;\n }\n return object;\n }\n\n /**\n * Sets the value at `path` of `object`. If a portion of `path` doesn't exist,\n * it's created. Arrays are created for missing index properties while objects\n * are created for all other missing properties. Use `_.setWith` to customize\n * `path` creation.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.set(object, 'a[0].b.c', 4);\n * console.log(object.a[0].b.c);\n * // => 4\n *\n * _.set(object, ['x', '0', 'y', 'z'], 5);\n * console.log(object.x[0].y.z);\n * // => 5\n */\n function set(object, path, value) {\n return object == null ? object : baseSet(object, path, value);\n }\n\n /**\n * This method is like `_.set` except that it accepts `customizer` which is\n * invoked to produce the objects of `path`. If `customizer` returns `undefined`\n * path creation is handled by the method instead. The `customizer` is invoked\n * with three arguments: (nsValue, key, nsObject).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {};\n *\n * _.setWith(object, '[0][1]', 'a', Object);\n * // => { '0': { '1': 'a' } }\n */\n function setWith(object, path, value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return object == null ? object : baseSet(object, path, value, customizer);\n }\n\n /**\n * Creates an array of own enumerable string keyed-value pairs for `object`\n * which can be consumed by `_.fromPairs`. If `object` is a map or set, its\n * entries are returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias entries\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the key-value pairs.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.toPairs(new Foo);\n * // => [['a', 1], ['b', 2]] (iteration order is not guaranteed)\n */\n var toPairs = createToPairs(keys);\n\n /**\n * Creates an array of own and inherited enumerable string keyed-value pairs\n * for `object` which can be consumed by `_.fromPairs`. If `object` is a map\n * or set, its entries are returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias entriesIn\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the key-value pairs.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.toPairsIn(new Foo);\n * // => [['a', 1], ['b', 2], ['c', 3]] (iteration order is not guaranteed)\n */\n var toPairsIn = createToPairs(keysIn);\n\n /**\n * An alternative to `_.reduce`; this method transforms `object` to a new\n * `accumulator` object which is the result of running each of its own\n * enumerable string keyed properties thru `iteratee`, with each invocation\n * potentially mutating the `accumulator` object. If `accumulator` is not\n * provided, a new object with the same `[[Prototype]]` will be used. The\n * iteratee is invoked with four arguments: (accumulator, value, key, object).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 1.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The custom accumulator value.\n * @returns {*} Returns the accumulated value.\n * @example\n *\n * _.transform([2, 3, 4], function(result, n) {\n * result.push(n *= n);\n * return n % 2 == 0;\n * }, []);\n * // => [4, 9]\n *\n * _.transform({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] }\n */\n function transform(object, iteratee, accumulator) {\n var isArr = isArray(object),\n isArrLike = isArr || isBuffer(object) || isTypedArray(object);\n\n iteratee = getIteratee(iteratee, 4);\n if (accumulator == null) {\n var Ctor = object && object.constructor;\n if (isArrLike) {\n accumulator = isArr ? new Ctor : [];\n }\n else if (isObject(object)) {\n accumulator = isFunction(Ctor) ? baseCreate(getPrototype(object)) : {};\n }\n else {\n accumulator = {};\n }\n }\n (isArrLike ? arrayEach : baseForOwn)(object, function(value, index, object) {\n return iteratee(accumulator, value, index, object);\n });\n return accumulator;\n }\n\n /**\n * Removes the property at `path` of `object`.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 7 } }] };\n * _.unset(object, 'a[0].b.c');\n * // => true\n *\n * console.log(object);\n * // => { 'a': [{ 'b': {} }] };\n *\n * _.unset(object, ['a', '0', 'b', 'c']);\n * // => true\n *\n * console.log(object);\n * // => { 'a': [{ 'b': {} }] };\n */\n function unset(object, path) {\n return object == null ? true : baseUnset(object, path);\n }\n\n /**\n * This method is like `_.set` except that accepts `updater` to produce the\n * value to set. Use `_.updateWith` to customize `path` creation. The `updater`\n * is invoked with one argument: (value).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {Function} updater The function to produce the updated value.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.update(object, 'a[0].b.c', function(n) { return n * n; });\n * console.log(object.a[0].b.c);\n * // => 9\n *\n * _.update(object, 'x[0].y.z', function(n) { return n ? n + 1 : 0; });\n * console.log(object.x[0].y.z);\n * // => 0\n */\n function update(object, path, updater) {\n return object == null ? object : baseUpdate(object, path, castFunction(updater));\n }\n\n /**\n * This method is like `_.update` except that it accepts `customizer` which is\n * invoked to produce the objects of `path`. If `customizer` returns `undefined`\n * path creation is handled by the method instead. The `customizer` is invoked\n * with three arguments: (nsValue, key, nsObject).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {Function} updater The function to produce the updated value.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {};\n *\n * _.updateWith(object, '[0][1]', _.constant('a'), Object);\n * // => { '0': { '1': 'a' } }\n */\n function updateWith(object, path, updater, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return object == null ? object : baseUpdate(object, path, castFunction(updater), customizer);\n }\n\n /**\n * Creates an array of the own enumerable string keyed property values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.values(new Foo);\n * // => [1, 2] (iteration order is not guaranteed)\n *\n * _.values('hi');\n * // => ['h', 'i']\n */\n function values(object) {\n return object == null ? [] : baseValues(object, keys(object));\n }\n\n /**\n * Creates an array of the own and inherited enumerable string keyed property\n * values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.valuesIn(new Foo);\n * // => [1, 2, 3] (iteration order is not guaranteed)\n */\n function valuesIn(object) {\n return object == null ? [] : baseValues(object, keysIn(object));\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Clamps `number` within the inclusive `lower` and `upper` bounds.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Number\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n * @example\n *\n * _.clamp(-10, -5, 5);\n * // => -5\n *\n * _.clamp(10, -5, 5);\n * // => 5\n */\n function clamp(number, lower, upper) {\n if (upper === undefined) {\n upper = lower;\n lower = undefined;\n }\n if (upper !== undefined) {\n upper = toNumber(upper);\n upper = upper === upper ? upper : 0;\n }\n if (lower !== undefined) {\n lower = toNumber(lower);\n lower = lower === lower ? lower : 0;\n }\n return baseClamp(toNumber(number), lower, upper);\n }\n\n /**\n * Checks if `n` is between `start` and up to, but not including, `end`. If\n * `end` is not specified, it's set to `start` with `start` then set to `0`.\n * If `start` is greater than `end` the params are swapped to support\n * negative ranges.\n *\n * @static\n * @memberOf _\n * @since 3.3.0\n * @category Number\n * @param {number} number The number to check.\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n * @see _.range, _.rangeRight\n * @example\n *\n * _.inRange(3, 2, 4);\n * // => true\n *\n * _.inRange(4, 8);\n * // => true\n *\n * _.inRange(4, 2);\n * // => false\n *\n * _.inRange(2, 2);\n * // => false\n *\n * _.inRange(1.2, 2);\n * // => true\n *\n * _.inRange(5.2, 4);\n * // => false\n *\n * _.inRange(-3, -2, -6);\n * // => true\n */\n function inRange(number, start, end) {\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n number = toNumber(number);\n return baseInRange(number, start, end);\n }\n\n /**\n * Produces a random number between the inclusive `lower` and `upper` bounds.\n * If only one argument is provided a number between `0` and the given number\n * is returned. If `floating` is `true`, or either `lower` or `upper` are\n * floats, a floating-point number is returned instead of an integer.\n *\n * **Note:** JavaScript follows the IEEE-754 standard for resolving\n * floating-point values which can produce unexpected results.\n *\n * @static\n * @memberOf _\n * @since 0.7.0\n * @category Number\n * @param {number} [lower=0] The lower bound.\n * @param {number} [upper=1] The upper bound.\n * @param {boolean} [floating] Specify returning a floating-point number.\n * @returns {number} Returns the random number.\n * @example\n *\n * _.random(0, 5);\n * // => an integer between 0 and 5\n *\n * _.random(5);\n * // => also an integer between 0 and 5\n *\n * _.random(5, true);\n * // => a floating-point number between 0 and 5\n *\n * _.random(1.2, 5.2);\n * // => a floating-point number between 1.2 and 5.2\n */\n function random(lower, upper, floating) {\n if (floating && typeof floating != 'boolean' && isIterateeCall(lower, upper, floating)) {\n upper = floating = undefined;\n }\n if (floating === undefined) {\n if (typeof upper == 'boolean') {\n floating = upper;\n upper = undefined;\n }\n else if (typeof lower == 'boolean') {\n floating = lower;\n lower = undefined;\n }\n }\n if (lower === undefined && upper === undefined) {\n lower = 0;\n upper = 1;\n }\n else {\n lower = toFinite(lower);\n if (upper === undefined) {\n upper = lower;\n lower = 0;\n } else {\n upper = toFinite(upper);\n }\n }\n if (lower > upper) {\n var temp = lower;\n lower = upper;\n upper = temp;\n }\n if (floating || lower % 1 || upper % 1) {\n var rand = nativeRandom();\n return nativeMin(lower + (rand * (upper - lower + freeParseFloat('1e-' + ((rand + '').length - 1)))), upper);\n }\n return baseRandom(lower, upper);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the camel cased string.\n * @example\n *\n * _.camelCase('Foo Bar');\n * // => 'fooBar'\n *\n * _.camelCase('--foo-bar--');\n * // => 'fooBar'\n *\n * _.camelCase('__FOO_BAR__');\n * // => 'fooBar'\n */\n var camelCase = createCompounder(function(result, word, index) {\n word = word.toLowerCase();\n return result + (index ? capitalize(word) : word);\n });\n\n /**\n * Converts the first character of `string` to upper case and the remaining\n * to lower case.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to capitalize.\n * @returns {string} Returns the capitalized string.\n * @example\n *\n * _.capitalize('FRED');\n * // => 'Fred'\n */\n function capitalize(string) {\n return upperFirst(toString(string).toLowerCase());\n }\n\n /**\n * Deburrs `string` by converting\n * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)\n * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)\n * letters to basic Latin letters and removing\n * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to deburr.\n * @returns {string} Returns the deburred string.\n * @example\n *\n * _.deburr('déjà vu');\n * // => 'deja vu'\n */\n function deburr(string) {\n string = toString(string);\n return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');\n }\n\n /**\n * Checks if `string` ends with the given target string.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {string} [target] The string to search for.\n * @param {number} [position=string.length] The position to search up to.\n * @returns {boolean} Returns `true` if `string` ends with `target`,\n * else `false`.\n * @example\n *\n * _.endsWith('abc', 'c');\n * // => true\n *\n * _.endsWith('abc', 'b');\n * // => false\n *\n * _.endsWith('abc', 'b', 2);\n * // => true\n */\n function endsWith(string, target, position) {\n string = toString(string);\n target = baseToString(target);\n\n var length = string.length;\n position = position === undefined\n ? length\n : baseClamp(toInteger(position), 0, length);\n\n var end = position;\n position -= target.length;\n return position >= 0 && string.slice(position, end) == target;\n }\n\n /**\n * Converts the characters \"&\", \"<\", \">\", '\"', and \"'\" in `string` to their\n * corresponding HTML entities.\n *\n * **Note:** No other characters are escaped. To escape additional\n * characters use a third-party library like [_he_](https://mths.be/he).\n *\n * Though the \">\" character is escaped for symmetry, characters like\n * \">\" and \"/\" don't need escaping in HTML and have no special meaning\n * unless they're part of a tag or unquoted attribute value. See\n * [Mathias Bynens's article](https://mathiasbynens.be/notes/ambiguous-ampersands)\n * (under \"semi-related fun fact\") for more details.\n *\n * When working with HTML you should always\n * [quote attribute values](http://wonko.com/post/html-escaping) to reduce\n * XSS vectors.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escape('fred, barney, & pebbles');\n * // => 'fred, barney, & pebbles'\n */\n function escape(string) {\n string = toString(string);\n return (string && reHasUnescapedHtml.test(string))\n ? string.replace(reUnescapedHtml, escapeHtmlChar)\n : string;\n }\n\n /**\n * Escapes the `RegExp` special characters \"^\", \"$\", \"\\\", \".\", \"*\", \"+\",\n * \"?\", \"(\", \")\", \"[\", \"]\", \"{\", \"}\", and \"|\" in `string`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escapeRegExp('[lodash](https://lodash.com/)');\n * // => '\\[lodash\\]\\(https://lodash\\.com/\\)'\n */\n function escapeRegExp(string) {\n string = toString(string);\n return (string && reHasRegExpChar.test(string))\n ? string.replace(reRegExpChar, '\\\\$&')\n : string;\n }\n\n /**\n * Converts `string` to\n * [kebab case](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the kebab cased string.\n * @example\n *\n * _.kebabCase('Foo Bar');\n * // => 'foo-bar'\n *\n * _.kebabCase('fooBar');\n * // => 'foo-bar'\n *\n * _.kebabCase('__FOO_BAR__');\n * // => 'foo-bar'\n */\n var kebabCase = createCompounder(function(result, word, index) {\n return result + (index ? '-' : '') + word.toLowerCase();\n });\n\n /**\n * Converts `string`, as space separated words, to lower case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the lower cased string.\n * @example\n *\n * _.lowerCase('--Foo-Bar--');\n * // => 'foo bar'\n *\n * _.lowerCase('fooBar');\n * // => 'foo bar'\n *\n * _.lowerCase('__FOO_BAR__');\n * // => 'foo bar'\n */\n var lowerCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + word.toLowerCase();\n });\n\n /**\n * Converts the first character of `string` to lower case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.lowerFirst('Fred');\n * // => 'fred'\n *\n * _.lowerFirst('FRED');\n * // => 'fRED'\n */\n var lowerFirst = createCaseFirst('toLowerCase');\n\n /**\n * Pads `string` on the left and right sides if it's shorter than `length`.\n * Padding characters are truncated if they can't be evenly divided by `length`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.pad('abc', 8);\n * // => ' abc '\n *\n * _.pad('abc', 8, '_-');\n * // => '_-abc_-_'\n *\n * _.pad('abc', 3);\n * // => 'abc'\n */\n function pad(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n if (!length || strLength >= length) {\n return string;\n }\n var mid = (length - strLength) / 2;\n return (\n createPadding(nativeFloor(mid), chars) +\n string +\n createPadding(nativeCeil(mid), chars)\n );\n }\n\n /**\n * Pads `string` on the right side if it's shorter than `length`. Padding\n * characters are truncated if they exceed `length`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.padEnd('abc', 6);\n * // => 'abc '\n *\n * _.padEnd('abc', 6, '_-');\n * // => 'abc_-_'\n *\n * _.padEnd('abc', 3);\n * // => 'abc'\n */\n function padEnd(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n return (length && strLength < length)\n ? (string + createPadding(length - strLength, chars))\n : string;\n }\n\n /**\n * Pads `string` on the left side if it's shorter than `length`. Padding\n * characters are truncated if they exceed `length`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.padStart('abc', 6);\n * // => ' abc'\n *\n * _.padStart('abc', 6, '_-');\n * // => '_-_abc'\n *\n * _.padStart('abc', 3);\n * // => 'abc'\n */\n function padStart(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n return (length && strLength < length)\n ? (createPadding(length - strLength, chars) + string)\n : string;\n }\n\n /**\n * Converts `string` to an integer of the specified radix. If `radix` is\n * `undefined` or `0`, a `radix` of `10` is used unless `value` is a\n * hexadecimal, in which case a `radix` of `16` is used.\n *\n * **Note:** This method aligns with the\n * [ES5 implementation](https://es5.github.io/#x15.1.2.2) of `parseInt`.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category String\n * @param {string} string The string to convert.\n * @param {number} [radix=10] The radix to interpret `value` by.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.parseInt('08');\n * // => 8\n *\n * _.map(['6', '08', '10'], _.parseInt);\n * // => [6, 8, 10]\n */\n function parseInt(string, radix, guard) {\n if (guard || radix == null) {\n radix = 0;\n } else if (radix) {\n radix = +radix;\n }\n return nativeParseInt(toString(string).replace(reTrimStart, ''), radix || 0);\n }\n\n /**\n * Repeats the given string `n` times.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to repeat.\n * @param {number} [n=1] The number of times to repeat the string.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the repeated string.\n * @example\n *\n * _.repeat('*', 3);\n * // => '***'\n *\n * _.repeat('abc', 2);\n * // => 'abcabc'\n *\n * _.repeat('abc', 0);\n * // => ''\n */\n function repeat(string, n, guard) {\n if ((guard ? isIterateeCall(string, n, guard) : n === undefined)) {\n n = 1;\n } else {\n n = toInteger(n);\n }\n return baseRepeat(toString(string), n);\n }\n\n /**\n * Replaces matches for `pattern` in `string` with `replacement`.\n *\n * **Note:** This method is based on\n * [`String#replace`](https://mdn.io/String/replace).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to modify.\n * @param {RegExp|string} pattern The pattern to replace.\n * @param {Function|string} replacement The match replacement.\n * @returns {string} Returns the modified string.\n * @example\n *\n * _.replace('Hi Fred', 'Fred', 'Barney');\n * // => 'Hi Barney'\n */\n function replace() {\n var args = arguments,\n string = toString(args[0]);\n\n return args.length < 3 ? string : string.replace(args[1], args[2]);\n }\n\n /**\n * Converts `string` to\n * [snake case](https://en.wikipedia.org/wiki/Snake_case).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the snake cased string.\n * @example\n *\n * _.snakeCase('Foo Bar');\n * // => 'foo_bar'\n *\n * _.snakeCase('fooBar');\n * // => 'foo_bar'\n *\n * _.snakeCase('--FOO-BAR--');\n * // => 'foo_bar'\n */\n var snakeCase = createCompounder(function(result, word, index) {\n return result + (index ? '_' : '') + word.toLowerCase();\n });\n\n /**\n * Splits `string` by `separator`.\n *\n * **Note:** This method is based on\n * [`String#split`](https://mdn.io/String/split).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to split.\n * @param {RegExp|string} separator The separator pattern to split by.\n * @param {number} [limit] The length to truncate results to.\n * @returns {Array} Returns the string segments.\n * @example\n *\n * _.split('a-b-c', '-', 2);\n * // => ['a', 'b']\n */\n function split(string, separator, limit) {\n if (limit && typeof limit != 'number' && isIterateeCall(string, separator, limit)) {\n separator = limit = undefined;\n }\n limit = limit === undefined ? MAX_ARRAY_LENGTH : limit >>> 0;\n if (!limit) {\n return [];\n }\n string = toString(string);\n if (string && (\n typeof separator == 'string' ||\n (separator != null && !isRegExp(separator))\n )) {\n separator = baseToString(separator);\n if (!separator && hasUnicode(string)) {\n return castSlice(stringToArray(string), 0, limit);\n }\n }\n return string.split(separator, limit);\n }\n\n /**\n * Converts `string` to\n * [start case](https://en.wikipedia.org/wiki/Letter_case#Stylistic_or_specialised_usage).\n *\n * @static\n * @memberOf _\n * @since 3.1.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the start cased string.\n * @example\n *\n * _.startCase('--foo-bar--');\n * // => 'Foo Bar'\n *\n * _.startCase('fooBar');\n * // => 'Foo Bar'\n *\n * _.startCase('__FOO_BAR__');\n * // => 'FOO BAR'\n */\n var startCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + upperFirst(word);\n });\n\n /**\n * Checks if `string` starts with the given target string.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {string} [target] The string to search for.\n * @param {number} [position=0] The position to search from.\n * @returns {boolean} Returns `true` if `string` starts with `target`,\n * else `false`.\n * @example\n *\n * _.startsWith('abc', 'a');\n * // => true\n *\n * _.startsWith('abc', 'b');\n * // => false\n *\n * _.startsWith('abc', 'b', 1);\n * // => true\n */\n function startsWith(string, target, position) {\n string = toString(string);\n position = position == null\n ? 0\n : baseClamp(toInteger(position), 0, string.length);\n\n target = baseToString(target);\n return string.slice(position, position + target.length) == target;\n }\n\n /**\n * Creates a compiled template function that can interpolate data properties\n * in \"interpolate\" delimiters, HTML-escape interpolated data properties in\n * \"escape\" delimiters, and execute JavaScript in \"evaluate\" delimiters. Data\n * properties may be accessed as free variables in the template. If a setting\n * object is given, it takes precedence over `_.templateSettings` values.\n *\n * **Note:** In the development build `_.template` utilizes\n * [sourceURLs](http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/#toc-sourceurl)\n * for easier debugging.\n *\n * For more information on precompiling templates see\n * [lodash's custom builds documentation](https://lodash.com/custom-builds).\n *\n * For more information on Chrome extension sandboxes see\n * [Chrome's extensions documentation](https://developer.chrome.com/extensions/sandboxingEval).\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category String\n * @param {string} [string=''] The template string.\n * @param {Object} [options={}] The options object.\n * @param {RegExp} [options.escape=_.templateSettings.escape]\n * The HTML \"escape\" delimiter.\n * @param {RegExp} [options.evaluate=_.templateSettings.evaluate]\n * The \"evaluate\" delimiter.\n * @param {Object} [options.imports=_.templateSettings.imports]\n * An object to import into the template as free variables.\n * @param {RegExp} [options.interpolate=_.templateSettings.interpolate]\n * The \"interpolate\" delimiter.\n * @param {string} [options.sourceURL='lodash.templateSources[n]']\n * The sourceURL of the compiled template.\n * @param {string} [options.variable='obj']\n * The data object variable name.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the compiled template function.\n * @example\n *\n * // Use the \"interpolate\" delimiter to create a compiled template.\n * var compiled = _.template('hello <%= user %>!');\n * compiled({ 'user': 'fred' });\n * // => 'hello fred!'\n *\n * // Use the HTML \"escape\" delimiter to escape data property values.\n * var compiled = _.template('<%- value %>');\n * compiled({ 'value': '