@mochabug/adapt-web 1.0.0-rc53 → 1.0.0-rc55
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/esm/AdaptAutomationElement.js +28 -2
- package/dist/esm/AdaptCapElement.js +0 -1
- package/dist/esm/AdaptCapWidget.js +0 -1
- package/dist/esm/cap-adapter.js +0 -1
- package/dist/esm/elements.js +0 -1
- package/dist/esm/iframe-url.js +0 -1
- package/dist/esm/index.js +253 -3
- package/dist/esm/types.js +0 -1
- package/dist/types/AdaptAutomationElement.d.ts +8 -1
- package/dist/types/index.d.ts +21 -1
- package/dist/types/types.d.ts +21 -0
- package/dist/umd/adapt-web.js +232 -5
- package/dist/umd/adapt-web.min.js +6 -6
- package/package.json +2 -2
- package/dist/esm/AdaptAutomationElement.js.map +0 -1
- package/dist/esm/AdaptCapElement.js.map +0 -1
- package/dist/esm/AdaptCapWidget.js.map +0 -1
- package/dist/esm/cap-adapter.js.map +0 -1
- package/dist/esm/elements.js.map +0 -1
- package/dist/esm/iframe-url.js.map +0 -1
- package/dist/esm/index.js.map +0 -1
- package/dist/esm/types.js.map +0 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
"use strict";var MbAdapt=(()=>{var Ca=Object.create;var Pe=Object.defineProperty;var Va=Object.getOwnPropertyDescriptor;var xa=Object.getOwnPropertyNames;var
|
|
2
|
-
<\/script></body></html>`,document.body.appendChild(p)})}let o=null,a=()=>{if(o)return o;let f=window.CAP_CUSTOM_WASM_URL||"https://cdn.jsdelivr.net/npm/@cap.js/wasm@0.0.6/browser/cap_wasm_bg.wasm";return o=fetch(f).then(l=>{if(!l.ok)throw new Error(`Failed to fetch wasm: ${l.status}`);return l.arrayBuffer()}).then(l=>WebAssembly.compile(l)).catch(l=>{throw o=null,l}),o};typeof WebAssembly=="object"&&typeof WebAssembly.compile=="function"&&a().catch(()=>{});let i=null;function s(){return i||(i=URL.createObjectURL(new Blob(['(()=>{const e=async({salt:e,target:t})=>{let n=0;const r=new TextEncoder,o=4*t.length,s=Math.floor(o/8),l=o%8,a=t.length%2==0?t:t+"0",c=a.length/2,i=new Uint8Array(c);for(let e=0;e<c;e++)i[e]=parseInt(a.substring(2*e,2*e+2),16);const f=l>0?255<<8-l&255:0;for(;;)try{for(let t=0;t<5e4;t++){const t=e+n,o=r.encode(t),a=await crypto.subtle.digest("SHA-256",o),c=new Uint8Array(a);let g=!0;for(let e=0;e<s;e++)if(c[e]!==i[e]){g=!1;break}if(g&&l>0&&(c[s]&f)!==(i[s]&f)&&(g=!1),g)return void self.postMessage({nonce:n,found:!0});n++}}catch(e){return console.error("[cap worker]",e),void self.postMessage({found:!1,error:e.message})}};if("object"!=typeof WebAssembly||"function"!=typeof WebAssembly?.instantiate)return console.warn("[cap worker] wasm not supported, falling back to alternative solver. this will be significantly slower."),void(self.onmessage=async({data:{salt:t,target:n}})=>e({salt:t,target:n}));let t=null;self.onmessage=async({data:{salt:n,target:r,wasmModule:o}})=>{if(o instanceof WebAssembly.Module&&null===t){const s=(e=>{try{let n,r=0,o=null;const s=()=>(null!==o&&0!==o.byteLength||(o=new Uint8Array(n.memory.buffer)),o),l=new TextEncoder,a=(e,t,n)=>{if(void 0===n){const n=l.encode(e),o=t(n.length,1)>>>0;return s().subarray(o,o+n.length).set(n),r=n.length,o}let o=e.length,a=t(o,1)>>>0;const c=s();let i=0;for(;i<o;i++){const t=e.charCodeAt(i);if(t>127)break;c[a+i]=t}if(i!==o){0!==i&&(e=e.slice(i)),a=n(a,o,o=i+3*e.length,1)>>>0;const t=s().subarray(a+i,a+o),{written:r}=l.encodeInto(e,t);i+=r,a=n(a,o,i,1)>>>0}return r=i,a},c={wbg:{}};c.wbg.__wbindgen_init_externref_table=()=>{const e=n.__wbindgen_export_0,t=e.grow(4);e.set(0,void 0),e.set(t+0,void 0),e.set(t+1,null),e.set(t+2,!0),e.set(t+3,!1)};const i=new WebAssembly.Instance(e,c);return n=i.exports,n.__wbindgen_start&&n.__wbindgen_start(),t=(e,t)=>{const o=a(e,n.__wbindgen_malloc,n.__wbindgen_realloc),s=r,l=a(t,n.__wbindgen_malloc,n.__wbindgen_realloc),c=r;return BigInt.asUintN(64,n.solve_pow(o,s,l,c))},!0}catch(e){return console.error("[cap worker] failed to init wasm from module:",e),!1}})(o);if(!s)return console.warn("[cap worker] wasm init failed, falling back to JS solver."),e({salt:n,target:r})}if(null===t)return console.warn("[cap worker] no wasm module provided, falling back to JS solver."),e({salt:n,target:r});try{const e=performance.now(),o=t(n,r),s=performance.now();self.postMessage({nonce:Number(o),found:!0,durationMs:(s-e).toFixed(2)})}catch(e){console.error("[cap worker]",e),self.postMessage({found:!1,error:e.message||String(e)})}},self.onerror=e=>{self.postMessage({found:!1,error:e})}})();'],{type:"application/javascript"})),i)}class m{constructor(l){this._size=l,this._workers=[],this._idle=[],this._queue=[],this._wasmModule=null,this._spawnFailures=0}setWasm(l){this._wasmModule=l}_spawn(){let l=s(),c=new Worker(l);return c._busy=!1,this._workers.push(c),this._idle.push(c),c}_replaceWorker(l){let c=this._workers.indexOf(l);c!==-1&&this._workers.splice(c,1);let g=this._idle.indexOf(l);g!==-1&&this._idle.splice(g,1);try{l.terminate()}catch{}return this._spawnFailures++,this._spawnFailures>3?(console.error("[cap] worker spawn failed repeatedly, not retrying"),null):this._spawn()}_ensureSize(l){for(;this._workers.length<l;)this._spawn()}run(l,c){return new Promise((g,h)=>{this._queue.push({salt:l,target:c,resolve:g,reject:h}),this._dispatch()})}_dispatch(){for(;this._idle.length>0&&this._queue.length>0;){let l=this._idle.shift(),{salt:c,target:g,resolve:h,reject:p}=this._queue.shift(),b=!1,V=({data:v})=>{b||(b=!0,l.removeEventListener("message",V),l.removeEventListener("error",Z),this._spawnFailures=0,this._idle.push(l),v.found?h(v.nonce):p(new Error(v.error||"worker failed")),this._dispatch())},Z=v=>{if(b)return;b=!0,l.removeEventListener("message",V),l.removeEventListener("error",Z);let E=this._replaceWorker(l);p(v),E&&this._dispatch()};l.addEventListener("message",V),l.addEventListener("error",Z),this._wasmModule?l.postMessage({salt:c,target:g,wasmModule:this._wasmModule},[]):l.postMessage({salt:c,target:g})}}terminate(){for(let l of this._workers)try{l.terminate()}catch{}this._workers=[],this._idle=[],this._queue=[]}}class u extends HTMLElement{#n=null;#a=navigator.hardwareConcurrency||8;token=null;#o;#t;#u;#c=!1;#i;#e=null;#s=null;#r=null;#l=null;#g(){return{state:"idle",challengeResp:null,challenges:null,results:[],completedCount:0,solvePromise:null,promoteFn:null,_listeners:[],pendingPromotion:null,token:null,tokenExpires:null,notify(){for(let l of this._listeners)l();this._listeners=[]},onSettled(l){this.state==="done"||this.state==="error"?l():this._listeners.push(l)}}}#d(){this.#e=this.#g(),this.#p()}#m(){this.#l&&(window.removeEventListener("mousemove",this.#l),window.removeEventListener("touchstart",this.#l),window.removeEventListener("keydown",this.#l),this.#l=null)}#p(){this.#m();let l=()=>{this.#m(),this.#f()};this.#l=l,window.addEventListener("mousemove",l,{passive:!0}),window.addEventListener("touchstart",l,{passive:!0}),window.addEventListener("keydown",l,{passive:!0})}#b(){return typeof this.checkVisibility=="function"?this.checkVisibility({checkOpacity:!0,checkVisibilityCSS:!0}):!!(this.offsetParent||this.getClientRects().length>0)}#f(){this.#e.state==="idle"&&this.#b()&&(this.#e.state="waiting",this.#s=setTimeout(()=>{this.#h()},2500))}async#h(){if(this.#e.state!=="waiting")return;this.#e.state="fetching";let l=this.getAttribute("data-cap-api-endpoint");if(!l&&window?.CAP_CUSTOM_FETCH&&(l="/"),l){l.endsWith("/")||(l+="/");try{let c=await t(`${l}challenge`,{method:"POST"}),g;try{g=await c.json()}catch{throw new Error("Failed to parse speculative challenge response")}if(g.error)throw new Error(g.error);g._apiEndpoint=l,this.#e.challengeResp=g;let{challenge:h,token:p}=g,b=h;if(!Array.isArray(b)){let V=0;b=Array.from({length:h.c},()=>(V++,[n(`${p}${V}`,h.s),n(`${p}${V}d`,h.d)]))}this.#e.challenges=b,this.#e.state="solving",this.#e.solvePromise=this.#y(b)}catch(c){console.warn("[cap] speculative challenge fetch failed:",c),this.#e.state="error",this.#e.notify()}}else this.#e.state="idle"}async#y(l){s();let c=null;try{c=await a()}catch{}this.#r||(this.#r=new m(1),this.#r._spawn()),this.#r.setWasm(c);let g=l.length,h=new Array(g),p=1,b=!1;this.#e.promoteFn=Z=>{b||(b=!0,p=Z,this.#r._size=Z,this.#r._ensureSize(Z))},this.#e.pendingPromotion!==null&&(this.#e.promoteFn(this.#e.pendingPromotion),this.#e.pendingPromotion=null);let V=0;for(;V<g;){let Z=p,v=[],E=[];for(let x=0;x<Z&&V<g;x++)E.push(V),v.push(l[V]),V++;this.#r._ensureSize(Math.max(p,Z));let R=await Promise.all(v.map(x=>this.#r.run(x[0],x[1]).then(J=>(this.#e.completedCount++,J))));for(let x=0;x<E.length;x++)h[E[x]]=R[x];!b&&V<g&&await new Promise(x=>setTimeout(x,120))}return this.#e.results=h,this.#e.state="redeeming",this.#I(h),h}async#I(l){try{let c=this.#e.challengeResp,g=c._apiEndpoint;if(!g)throw new Error("[cap] speculative redeem: missing apiEndpoint");let h=null;if(c.instrumentation&&(h=await r(c.instrumentation),h?.__timeout||h?.__blocked))return this.#e.state="done",void this.#e.notify();let p=await t(`${g}redeem`,{method:"POST",body:JSON.stringify({token:c.token,solutions:l,...h&&{instr:h}}),headers:{"Content-Type":"application/json"}}),b;try{b=await p.json()}catch{throw new Error("Failed to parse speculative redeem response")}if(!b.success)throw new Error(b.error||"Speculative redeem failed");this.#e.token=b.token,this.#e.tokenExpires=new Date(b.expires).getTime(),this.#e.state="done",this.#e.notify()}catch(c){console.warn("[cap] speculative redeem failed (will redo on click):",c),this.#e.state="done",this.#e.notify()}}getI18nText(l,c){return this.getAttribute(`data-cap-i18n-${l}`)||c}static get observedAttributes(){return["onsolve","onprogress","onreset","onerror","data-cap-worker-count","data-cap-i18n-initial-state"]}constructor(){super(),this.#i&&this.#i.forEach((l,c)=>{this.removeEventListener(c.slice(2),l)}),this.#i=new Map,this.boundHandleProgress=this.handleProgress.bind(this),this.boundHandleSolve=this.handleSolve.bind(this),this.boundHandleError=this.handleError.bind(this),this.boundHandleReset=this.handleReset.bind(this)}initialize(){s(),this.#e||(this.#e=this.#g()),this.#r||(this.#r=new m(1),this.#r._spawn())}attributeChangedCallback(l,c,g){if(l.startsWith("on")){let h=l.slice(2),p=this.#i.get(l);if(p&&this.removeEventListener(h,p),g){let b=V=>{let Z=this.getAttribute(l);typeof window[Z]=="function"&&window[Z].call(this,V)};this.#i.set(l,b),this.addEventListener(h,b)}}l==="data-cap-worker-count"&&this.setWorkersCount(parseInt(g,10)),l==="data-cap-i18n-initial-state"&&this.#t&&this.#t?.querySelector(".label.active")&&this.animateLabel(this.getI18nText("initial-state","Verify you're human"))}async connectedCallback(){this.#u=this,this.#o=this.attachShadow({mode:"open"}),this.#t=document.createElement("div"),this.createUI(),this.addEventListeners(),this.initialize(),this.#t.removeAttribute("disabled");let l=this.getAttribute("data-cap-worker-count"),c=l?parseInt(l,10):null;this.setWorkersCount(c||navigator.hardwareConcurrency||8);let g=this.getAttribute("data-cap-hidden-field-name")||"cap-token";this.#u.innerHTML=`<input type="hidden" name="${g}">`,this.#p()}async solve(){if(!this.#c)try{this.#c=!0,this.updateUI("verifying",this.getI18nText("verifying-label","Verifying..."),!0),this.#t.setAttribute("aria-label",this.getI18nText("verifying-aria-label","Verifying you're a human, please wait")),this.dispatchEvent("progress",{progress:0});try{let l,c,g=this.getAttribute("data-cap-api-endpoint");if(!g&&window?.CAP_CUSTOM_FETCH)g="/";else if(!g)throw new Error("Missing API endpoint. Either custom fetch or an API endpoint must be provided.");if(g.endsWith("/")||(g+="/"),this.#e.state==="done"&&this.#e.token&&this.#e.tokenExpires&&Date.now()<this.#e.tokenExpires){this.dispatchEvent("progress",{progress:100});let R=this.getAttribute("data-cap-hidden-field-name")||"cap-token";this.querySelector(`input[name='${R}']`)&&(this.querySelector(`input[name='${R}']`).value=this.#e.token),this.dispatchEvent("solve",{token:this.#e.token}),this.token=this.#e.token;let x=this.#e.tokenExpires-Date.now();return this.#n&&clearTimeout(this.#n),this.#n=setTimeout(()=>this.reset(),x),this.#t.setAttribute("aria-label",this.getI18nText("verified-aria-label","We have verified you're a human, you may now continue")),e&&navigator.vibrate([10,50,20,30,40]),this.#d(),this.#c=!1,{success:!0,token:this.token}}if(this.#e.state==="done")l=this.#e.results,c=this.#e.challengeResp,this.dispatchEvent("progress",{progress:100});else if(this.#e.state==="solving"||this.#e.state==="redeeming"||this.#e.state==="fetching"||this.#e.state==="waiting"){this.#e.state==="waiting"&&(this.#s&&(clearTimeout(this.#s),this.#s=null),this.#e.state="waiting",this.#h()),this.#e.pendingPromotion=this.#a,this.#e.promoteFn&&this.#e.promoteFn(this.#a);let R=setInterval(()=>{if(this.#e.state!=="solving"&&this.#e.state!=="redeeming")return void clearInterval(R);let x=this.#e.challenges?this.#e.challenges.length:1,J=this.#e.completedCount,z=this.#e.state==="redeeming"?99:Math.min(98,Math.round(J/x*100));this.dispatchEvent("progress",{progress:z})},150);if(await new Promise(x=>this.#e.onSettled(x)),clearInterval(R),this.#e.state!=="done")throw new Error("Speculative solve failed \u2013 please try again");if(this.#e.token&&this.#e.tokenExpires&&Date.now()<this.#e.tokenExpires){this.dispatchEvent("progress",{progress:100});let x=this.getAttribute("data-cap-hidden-field-name")||"cap-token";this.querySelector(`input[name='${x}']`)&&(this.querySelector(`input[name='${x}']`).value=this.#e.token),this.dispatchEvent("solve",{token:this.#e.token}),this.token=this.#e.token;let J=this.#e.tokenExpires-Date.now();return this.#n&&clearTimeout(this.#n),this.#n=setTimeout(()=>this.reset(),J),this.#t.setAttribute("aria-label",this.getI18nText("verified-aria-label","We have verified you're a human, you may now continue")),e&&navigator.vibrate([10,50,20,30,40]),this.#d(),this.#c=!1,{success:!0,token:this.token}}l=this.#e.results,c=this.#e.challengeResp,this.dispatchEvent("progress",{progress:100})}else{let R=await t(`${g}challenge`,{method:"POST"});try{c=await R.json()}catch{throw new Error("Failed to parse challenge response from server")}if(c.error)throw new Error(c.error);let{challenge:x,token:J}=c,z=x;if(!Array.isArray(z)){let y=0;z=Array.from({length:x.c},()=>(y++,[n(`${J}${y}`,x.s),n(`${J}${y}d`,x.d)]))}l=await this.solveChallenges(z)}let h=c.instrumentation?r(c.instrumentation):Promise.resolve(null),p=await h;if(p?.__timeout||p?.__blocked){this.updateUIBlocked(this.getI18nText("error-label","Error"),p?.__blocked),this.#t.setAttribute("aria-label",this.getI18nText("error-aria-label","An error occurred, please try again")),this.removeEventListener("error",this.boundHandleError);let R=new CustomEvent("error",{bubbles:!0,composed:!0,detail:{isCap:!0,message:"Instrumentation failed"}});return super.dispatchEvent(R),this.addEventListener("error",this.boundHandleError),this.executeAttributeCode("onerror",R),console.error("[cap]","Instrumentation failed"),void(this.#c=!1)}let{token:b}=c,V=await t(`${g}redeem`,{method:"POST",body:JSON.stringify({token:b,solutions:l,...p&&{instr:p}}),headers:{"Content-Type":"application/json"}}),Z;try{Z=await V.json()}catch{throw new Error("Failed to parse server response")}if(this.dispatchEvent("progress",{progress:100}),!Z.success)throw new Error(Z.error||"Invalid solution");let v=this.getAttribute("data-cap-hidden-field-name")||"cap-token";this.querySelector(`input[name='${v}']`)&&(this.querySelector(`input[name='${v}']`).value=Z.token),this.dispatchEvent("solve",{token:Z.token}),this.token=Z.token,this.#d(),this.#n&&clearTimeout(this.#n);let E=new Date(Z.expires).getTime()-Date.now();return E>0&&E<864e5?this.#n=setTimeout(()=>this.reset(),E):this.error("Invalid expiration time"),this.#t.setAttribute("aria-label",this.getI18nText("verified-aria-label","We have verified you're a human, you may now continue")),e&&navigator.vibrate([10,50,20,30,40]),{success:!0,token:this.token}}catch(l){throw this.#t.setAttribute("aria-label",this.getI18nText("error-aria-label","An error occurred, please try again")),this.error(l.message),l}}finally{this.#c=!1}}async solveChallenges(l){let c=l.length,g=0,h=null,p=typeof WebAssembly=="object"&&typeof WebAssembly.instantiate=="function";if(p)try{h=await a()}catch(Z){console.warn("[cap] wasm unavailable, falling back to JS solver:",Z)}if(!p&&!this.#o.querySelector(".warning")){let Z=document.createElement("div");Z.className="warning",Z.style.cssText="width:var(--cap-widget-width,230px);background:rgb(237,56,46);color:white;padding:4px 6px;padding-bottom:calc(var(--cap-border-radius,14px) + 5px);font-size:10px;box-sizing:border-box;font-family:system-ui;border-top-left-radius:8px;border-top-right-radius:8px;text-align:center;user-select:none;margin-bottom:-35.5px;opacity:0;transition:margin-bottom .3s,opacity .3s;",Z.innerText=this.getI18nText("wasm-disabled","Enable WASM for significantly faster solving"),this.#o.insertBefore(Z,this.#o.firstChild),setTimeout(()=>{Z.style.marginBottom="calc(-1 * var(--cap-border-radius, 14px))",Z.style.opacity=1},10)}let b=new m(this.#a);b.setWasm(h),b._ensureSize(this.#a);let V=[];try{for(let Z=0;Z<l.length;Z+=this.#a){let v=l.slice(Z,Math.min(Z+this.#a,l.length)),E=await Promise.all(v.map(([R,x])=>b.run(R,x).then(J=>{g++;let z=Math.min(99,Math.round((0+g)/c*100));return this.dispatchEvent("progress",{progress:z}),J})));V.push(...E)}}finally{b.terminate()}return V}setWorkersCount(l){let c=parseInt(l,10),g=Math.min(navigator.hardwareConcurrency||8,16);this.#a=!Number.isNaN(c)&&c>0&&c<=g?c:navigator.hardwareConcurrency||8}createUI(){this.#t.classList.add("captcha"),this.#t.setAttribute("role","button"),this.#t.setAttribute("tabindex","0"),this.#t.setAttribute("aria-label",this.getI18nText("verify-aria-label","Click to verify you're a human")),this.#t.setAttribute("aria-live","polite"),this.#t.setAttribute("disabled","true"),this.#t.innerHTML=`<div class="checkbox" part="checkbox"><svg class="progress-ring" viewBox="0 0 32 32"><circle class="progress-ring-bg" cx="16" cy="16" r="14"></circle><circle class="progress-ring-circle" cx="16" cy="16" r="14"></circle></svg></div><p part="label" class="label-wrapper"><span class="label active">${this.getI18nText("initial-state","Verify you're human")}</span></p><a part="attribution" aria-label="Secured by Cap" href="https://capjs.js.org/" class="credits" target="_blank" rel="follow noopener" title="Secured by Cap: Self-hosted CAPTCHA for the modern web.">Cap</a>`,this.#o.innerHTML=`<style${window.CAP_CSS_NONCE?` nonce=${window.CAP_CSS_NONCE}`:""}>@media (prefers-reduced-motion:reduce){.captcha,.captcha *{transition:none!important;animation:none!important}.label{filter:none!important;opacity:1!important;transition:none!important;transform:none!important}.label:not(.active),.label.exit{display:none!important}}.captcha,.captcha *{box-sizing:border-box}.captcha{background-color:var(--cap-background,#fdfdfd);border:1px solid var(--cap-border-color,#dddddd8f);border-radius:var(--cap-border-radius,14px);-webkit-user-select:none;user-select:none;height:var(--cap-widget-height,58px);width:var(--cap-widget-width,260px);padding:var(--cap-widget-padding,14px);align-items:center;gap:var(--cap-gap,15px);cursor:pointer;-webkit-tap-highlight-color:#fff0;color:var(--cap-color,#212121);transition:filter .2s,transform .2s;display:flex;position:relative;overflow:hidden}.captcha:not([data-state]):active{transform:scale(.97)}.captcha:hover{filter:brightness(98%)}.captcha *{font-family:var(--cap-font,system, -apple-system, "BlinkMacSystemFont", ".SFNSText-Regular", "San Francisco", "Roboto", "Segoe UI", "Helvetica Neue", "Lucida Grande", "Ubuntu", "arial", sans-serif)}.checkbox{width:var(--cap-checkbox-size,25px);height:var(--cap-checkbox-size,25px);border:var(--cap-checkbox-border,1px solid #aaaaaad1);border-radius:var(--cap-checkbox-border-radius,6px);background-color:var(--cap-checkbox-background,#fafafa91);margin-top:var(--cap-checkbox-margin,2px);margin-bottom:var(--cap-checkbox-margin,2px);transition:opacity .2s}.captcha p{-webkit-user-select:none;user-select:none;margin:0;font-size:15px;font-weight:500}.label-wrapper{flex:1;align-items:center;min-width:0;height:2em;display:flex;position:relative;overflow:hidden}.label-wrapper:before,.label-wrapper:after{content:"";pointer-events:none;z-index:1;width:100%;height:.6em;position:absolute;left:0}.label-wrapper:before{background:linear-gradient(to bottom, var(--cap-background,#fdfdfd), transparent);top:0}.label-wrapper:after{background:linear-gradient(to top, var(--cap-background,#fdfdfd), transparent);bottom:0}.label{white-space:nowrap;opacity:0;filter:blur(2px);transition:transform .5s cubic-bezier(.25,1,.5,1),opacity .5s,filter .5s;position:absolute;transform:translateY(100%)}.label.active{opacity:1;filter:none;transform:translateY(0)}.label.exit{opacity:0;filter:blur(2px);transform:translateY(-100%)}.checkbox .progress-ring{width:100%;height:100%;display:none;transform:rotate(-90deg)}.checkbox .progress-ring-bg{fill:none;stroke:var(--cap-spinner-background-color,#eee);stroke-width:var(--cap-spinner-thickness,3)}.checkbox .progress-ring-circle{fill:none;stroke:var(--cap-spinner-color,#000);stroke-width:var(--cap-spinner-thickness,3);stroke-linecap:round;stroke-dasharray:87.96;stroke-dashoffset:87.96px;transition:stroke-dashoffset .3s}.captcha[data-state=verifying] .checkbox{background:0 0;border:none;border-radius:50%;justify-content:center;align-items:center;display:flex;transform:scale(1.1)}.captcha[data-state=verifying] .checkbox .progress-ring{display:block}.captcha[data-state=done] .checkbox{background-image:var(--cap-checkmark,url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%3E%3Cstyle%3E%40keyframes%20anim%7B0%25%7Bstroke-dashoffset%3A23.21320343017578px%7Dto%7Bstroke-dashoffset%3A0%7D%7D%3C%2Fstyle%3E%3Cpath%20fill%3D%22none%22%20stroke%3D%22%2300a67d%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20stroke-width%3D%222%22%20d%3D%22m5%2012%205%205L20%207%22%20style%3D%22stroke-dashoffset%3A0%3Bstroke-dasharray%3A23.21320343017578px%3Banimation%3Aanim%20.5s%20ease%22%2F%3E%3C%2Fsvg%3E));background-size:cover;border:1px solid #0000}.captcha[data-state=done] .checkbox .progress-ring{display:none}.captcha[data-state=error] .checkbox{background-image:var(--cap-error-cross,url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='96' height='96' viewBox='0 0 24 24'%3E%3Cpath fill='%23f55b50' d='M11 15h2v2h-2zm0-8h2v6h-2zm1-5C6.47 2 2 6.5 2 12a10 10 0 0 0 10 10a10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18a8 8 0 0 1-8-8a8 8 0 0 1 8-8a8 8 0 0 1 8 8a8 8 0 0 1-8 8'/%3E%3C%2Fsvg%3E"));background-size:cover;border:1px solid #0000}.captcha[data-state=error] .checkbox .progress-ring{display:none}.captcha[disabled]{cursor:not-allowed}.captcha[disabled][data-state=verifying]{cursor:progress}.captcha[disabled][data-state=done]{cursor:default}.captcha .credits{color:var(--cap-color,#212121);opacity:.8;text-underline-offset:.18em;z-index:6;font-size:12px;text-decoration-thickness:.08em;position:absolute;bottom:10px;right:10px}.cap-troubleshoot-link{color:#06c;text-underline-offset:.15em;cursor:pointer;font-weight:500;font-size:inherit;text-decoration:underline;text-decoration-thickness:.08em}.cap-troubleshoot-link:hover{opacity:.8}</style>`,this.#o.appendChild(this.#t)}addEventListeners(){this.#t&&(this.#t.querySelector("a").addEventListener("click",l=>{l.stopPropagation(),l.preventDefault(),window.open("https://capjs.js.org","_blank")}),this.#t.addEventListener("click",()=>{this.#t.hasAttribute("disabled")||this.solve()}),this.#t.addEventListener("mousedown",()=>{!this.#t.hasAttribute("disabled")&&e&&navigator.vibrate(5)}),this.#t.addEventListener("keydown",l=>{l.key!=="Enter"&&l.key!==" "||this.#t.hasAttribute("disabled")||(l.preventDefault(),l.stopPropagation(),this.solve())}),this.addEventListener("progress",this.boundHandleProgress),this.addEventListener("solve",this.boundHandleSolve),this.addEventListener("error",this.boundHandleError),this.addEventListener("reset",this.boundHandleReset))}animateLabel(l){if(!this.#t)return;let c=this.#t.querySelector(".label-wrapper");if(!c)return;if(window.matchMedia?.("(prefers-reduced-motion: reduce)").matches){let p=c.querySelector(".label.active");if(p)p.textContent=l;else{let b=document.createElement("span");b.className="label active",b.textContent=l,c.appendChild(b)}return}let g=c.querySelector(".label.active"),h=document.createElement("span");h.className="label",h.textContent=l,c.appendChild(h),h.offsetWidth,h.classList.add("active"),g&&(g.classList.remove("active"),g.classList.add("exit"),g.addEventListener("transitionend",()=>g.remove(),{once:!0}))}updateUI(l,c,g=!1){this.#t&&(this.#t.setAttribute("data-state",l),this.animateLabel(c),g?this.#t.setAttribute("disabled","true"):this.#t.removeAttribute("disabled"))}updateUIBlocked(l,c=!1){if(!this.#t)return;this.#t.setAttribute("data-state","error"),this.#t.removeAttribute("disabled");let g=this.#t.querySelector(".label-wrapper");if(!g)return;let h=this.getAttribute("data-cap-troubleshooting-url")||"https://capjs.js.org/guide/troubleshooting/instrumentation.html",p=g.querySelector(".label.active"),b=document.createElement("span");b.className="label",b.innerHTML=c?`${l} \xB7 <a class="cap-troubleshoot-link" href="${h}" target="_blank" rel="noopener">${this.getI18nText("troubleshooting-label","Troubleshoot")}</a>`:l,g.appendChild(b),b.offsetWidth,b.classList.add("active"),p&&(p.classList.remove("active"),p.classList.add("exit"),p.addEventListener("transitionend",()=>p.remove(),{once:!0}));let V=b.querySelector(".cap-troubleshoot-link");V&&V.addEventListener("click",Z=>{Z.stopPropagation()})}handleProgress(l){if(!this.#t)return;let c=this.#t.querySelector(".progress-ring-circle");if(c){let h=2*Math.PI*14,p=h-l.detail.progress/100*h;c.style.strokeDashoffset=p}let g=this.#t.querySelector(".label-wrapper");if(g){let h=g.querySelector(".label.active");h&&(h.textContent=`${this.getI18nText("verifying-label","Verifying...")}`)}this.executeAttributeCode("onprogress",l)}handleSolve(l){this.updateUI("done",this.getI18nText("solved-label","You're a human"),!0),this.executeAttributeCode("onsolve",l)}handleError(l){this.updateUI("error",this.getI18nText("error-label","Error. Try again.")),this.executeAttributeCode("onerror",l),e&&navigator.vibrate([10,40,10])}handleReset(l){this.updateUI("",this.getI18nText("initial-state","I'm a human")),this.executeAttributeCode("onreset",l)}executeAttributeCode(l,c){let g=this.getAttribute(l);g&&(console.error("[cap] using `onxxx='\u2026'` is strongly discouraged and will be deprecated soon. please use `addEventListener` callbacks instead."),new Function("event",g).call(this,c))}error(l="Unknown error"){console.error("[cap]",l),this.dispatchEvent("error",{isCap:!0,message:l})}dispatchEvent(l,c={}){let g=new CustomEvent(l,{bubbles:!0,composed:!0,detail:c});super.dispatchEvent(g)}reset(){this.#n&&(clearTimeout(this.#n),this.#n=null),this.dispatchEvent("reset"),this.token=null;let l=this.getAttribute("data-cap-hidden-field-name")||"cap-token";this.querySelector(`input[name='${l}']`)&&(this.querySelector(`input[name='${l}']`).value="")}get tokenValue(){return this.token}disconnectedCallback(){this.removeEventListener("progress",this.boundHandleProgress),this.removeEventListener("solve",this.boundHandleSolve),this.removeEventListener("error",this.boundHandleError),this.removeEventListener("reset",this.boundHandleReset),this.#i.forEach((l,c)=>{this.removeEventListener(c.slice(2),l)}),this.#i.clear(),this.#o&&(this.#o.innerHTML=""),this.reset(),this.cleanup()}cleanup(){this.#n&&(clearTimeout(this.#n),this.#n=null),this.#m(),this.#s&&(clearTimeout(this.#s),this.#s=null),this.#r&&(this.#r.terminate(),this.#r=null),this.#e&&(this.#e.state="error",this.#e.notify(),this.#e=null)}}class I{constructor(l={},c){let g=c||document.createElement("cap-widget");if(Object.entries(l).forEach(([h,p])=>{g.setAttribute(h,p)}),!l.apiEndpoint&&!window?.CAP_CUSTOM_FETCH)throw g.remove(),new Error("Missing API endpoint. Either custom fetch or an API endpoint must be provided.");l.apiEndpoint&&g.setAttribute("data-cap-api-endpoint",l.apiEndpoint),this.widget=g,this.solve=this.widget.solve.bind(this.widget),this.reset=this.widget.reset.bind(this.widget),this.addEventListener=this.widget.addEventListener.bind(this.widget),Object.defineProperty(this,"token",{get:()=>g.token,configurable:!0,enumerable:!0}),c||(g.style.display="none",document.documentElement.appendChild(g))}}window.Cap=I,customElements.get("cap-widget")||window?.CAP_DONT_SKIP_REDEFINE?customElements.get("cap-widget")&&console.warn(`[cap] the cap-widget element has already been defined, skipping re-defining it.
|
|
3
|
-
to prevent this, set window.CAP_DONT_SKIP_REDEFINE to true`):customElements.define("cap-widget",u),typeof kt=="object"&&typeof Dn<"u"?Dn.exports=I:typeof define=="function"&&define.amd&&define([],()=>I),typeof kt<"u"&&(kt.default=I)})()});var Ws={};Wa(Ws,{AdaptAutomationElement:()=>Qe,AdaptCapElement:()=>Oe,AdaptCapWidget:()=>ie,AdaptWebClient:()=>_e,configure:()=>Hn,createChallenge:()=>Un,createConnectClient:()=>Kn,redeemChallenge:()=>Tn,resetConfig:()=>Ln});function Xe(e,t){return e!==null&&typeof e=="object"&&"$typeName"in e&&typeof e.$typeName=="string"?t===void 0?!0:t.typeName===e.$typeName:!1}var d;(function(e){e[e.DOUBLE=1]="DOUBLE",e[e.FLOAT=2]="FLOAT",e[e.INT64=3]="INT64",e[e.UINT64=4]="UINT64",e[e.INT32=5]="INT32",e[e.FIXED64=6]="FIXED64",e[e.FIXED32=7]="FIXED32",e[e.BOOL=8]="BOOL",e[e.STRING=9]="STRING",e[e.BYTES=12]="BYTES",e[e.UINT32=13]="UINT32",e[e.SFIXED32=15]="SFIXED32",e[e.SFIXED64=16]="SFIXED64",e[e.SINT32=17]="SINT32",e[e.SINT64=18]="SINT64"})(d||(d={}));function Pn(){let e=0,t=0;for(let r=0;r<28;r+=7){let o=this.buf[this.pos++];if(e|=(o&127)<<r,(o&128)==0)return this.assertBounds(),[e,t]}let n=this.buf[this.pos++];if(e|=(n&15)<<28,t=(n&112)>>4,(n&128)==0)return this.assertBounds(),[e,t];for(let r=3;r<=31;r+=7){let o=this.buf[this.pos++];if(t|=(o&127)<<r,(o&128)==0)return this.assertBounds(),[e,t]}throw new Error("invalid varint")}function $e(e,t,n){for(let a=0;a<28;a=a+7){let i=e>>>a,s=!(!(i>>>7)&&t==0),m=(s?i|128:i)&255;if(n.push(m),!s)return}let r=e>>>28&15|(t&7)<<4,o=t>>3!=0;if(n.push((o?r|128:r)&255),!!o){for(let a=3;a<31;a=a+7){let i=t>>>a,s=!!(i>>>7),m=(s?i|128:i)&255;if(n.push(m),!s)return}n.push(t>>>31&1)}}var je=4294967296;function Yt(e){let t=e[0]==="-";t&&(e=e.slice(1));let n=1e6,r=0,o=0;function a(i,s){let m=Number(e.slice(i,s));o*=n,r=r*n+m,r>=je&&(o=o+(r/je|0),r=r%je)}return a(-24,-18),a(-18,-12),a(-12,-6),a(-6),t?$n(r,o):Nt(r,o)}function jn(e,t){let n=Nt(e,t),r=n.hi&2147483648;r&&(n=$n(n.lo,n.hi));let o=Ft(n.lo,n.hi);return r?"-"+o:o}function Ft(e,t){if({lo:e,hi:t}=va(e,t),t<=2097151)return String(je*t+e);let n=e&16777215,r=(e>>>24|t<<8)&16777215,o=t>>16&65535,a=n+r*6777216+o*6710656,i=r+o*8147497,s=o*2,m=1e7;return a>=m&&(i+=Math.floor(a/m),a%=m),i>=m&&(s+=Math.floor(i/m),i%=m),s.toString()+On(i)+On(a)}function va(e,t){return{lo:e>>>0,hi:t>>>0}}function Nt(e,t){return{lo:e|0,hi:t|0}}function $n(e,t){return t=~t,e?e=~e+1:t+=1,Nt(e,t)}var On=e=>{let t=String(e);return"0000000".slice(t.length)+t};function Se(e,t){if(e>=0){for(;e>127;)t.push(e&127|128),e=e>>>7;t.push(e)}else{for(let n=0;n<9;n++)t.push(e&127|128),e=e>>7;t.push(1)}}function qn(){let e=this.buf[this.pos++],t=e&127;if((e&128)==0)return this.assertBounds(),t;if(e=this.buf[this.pos++],t|=(e&127)<<7,(e&128)==0)return this.assertBounds(),t;if(e=this.buf[this.pos++],t|=(e&127)<<14,(e&128)==0)return this.assertBounds(),t;if(e=this.buf[this.pos++],t|=(e&127)<<21,(e&128)==0)return this.assertBounds(),t;e=this.buf[this.pos++],t|=(e&15)<<28;for(let n=5;(e&128)!==0&&n<10;n++)e=this.buf[this.pos++];if((e&128)!=0)throw new Error("invalid varint");return this.assertBounds(),t>>>0}var B=Ra();function Ra(){let e=new DataView(new ArrayBuffer(8));if(typeof BigInt=="function"&&typeof e.getBigInt64=="function"&&typeof e.getBigUint64=="function"&&typeof e.setBigInt64=="function"&&typeof e.setBigUint64=="function"&&(!!globalThis.Deno||typeof process!="object"||typeof process.env!="object"||process.env.BUF_BIGINT_DISABLE!=="1")){let n=BigInt("-9223372036854775808"),r=BigInt("9223372036854775807"),o=BigInt("0"),a=BigInt("18446744073709551615");return{zero:BigInt(0),supported:!0,parse(i){let s=typeof i=="bigint"?i:BigInt(i);if(s>r||s<n)throw new Error(`invalid int64: ${i}`);return s},uParse(i){let s=typeof i=="bigint"?i:BigInt(i);if(s>a||s<o)throw new Error(`invalid uint64: ${i}`);return s},enc(i){return e.setBigInt64(0,this.parse(i),!0),{lo:e.getInt32(0,!0),hi:e.getInt32(4,!0)}},uEnc(i){return e.setBigInt64(0,this.uParse(i),!0),{lo:e.getInt32(0,!0),hi:e.getInt32(4,!0)}},dec(i,s){return e.setInt32(0,i,!0),e.setInt32(4,s,!0),e.getBigInt64(0,!0)},uDec(i,s){return e.setInt32(0,i,!0),e.setInt32(4,s,!0),e.getBigUint64(0,!0)}}}return{zero:"0",supported:!1,parse(n){return typeof n!="string"&&(n=n.toString()),er(n),n},uParse(n){return typeof n!="string"&&(n=n.toString()),tr(n),n},enc(n){return typeof n!="string"&&(n=n.toString()),er(n),Yt(n)},uEnc(n){return typeof n!="string"&&(n=n.toString()),tr(n),Yt(n)},dec(n,r){return jn(n,r)},uDec(n,r){return Ft(n,r)}}}function er(e){if(!/^-?[0-9]+$/.test(e))throw new Error("invalid int64: "+e)}function tr(e){if(!/^[0-9]+$/.test(e))throw new Error("invalid uint64: "+e)}function O(e,t){switch(e){case d.STRING:return"";case d.BOOL:return!1;case d.DOUBLE:case d.FLOAT:return 0;case d.INT64:case d.UINT64:case d.SFIXED64:case d.FIXED64:case d.SINT64:return t?"0":B.zero;case d.BYTES:return new Uint8Array(0);default:return 0}}function nr(e,t){switch(e){case d.BOOL:return t===!1;case d.STRING:return t==="";case d.BYTES:return t instanceof Uint8Array&&!t.byteLength;default:return t==0}}var rr=2,P=Symbol.for("reflect unsafe local");function qe(e,t){let n=e[t.localName].case;return n===void 0?n:t.fields.find(r=>r.localName===n)}function or(e,t){let n=t.localName;if(t.oneof)return e[t.oneof.localName].case===n;if(t.presence!=rr)return e[n]!==void 0&&Object.prototype.hasOwnProperty.call(e,n);switch(t.fieldKind){case"list":return e[n].length>0;case"map":return Object.keys(e[n]).length>0;case"scalar":return!nr(t.scalar,e[n]);case"enum":return e[n]!==t.enum.values[0].number}throw new Error("message field with implicit presence")}function ce(e,t){return Object.prototype.hasOwnProperty.call(e,t)&&e[t]!==void 0}function et(e,t){if(t.oneof){let n=e[t.oneof.localName];return n.case===t.localName?n.value:void 0}return e[t.localName]}function tt(e,t,n){t.oneof?e[t.oneof.localName]={case:t.localName,value:n}:e[t.localName]=n}function ar(e,t){let n=t.localName;if(t.oneof){let r=t.oneof.localName;e[r].case===n&&(e[r]={case:void 0})}else if(t.presence!=rr)delete e[n];else switch(t.fieldKind){case"map":e[n]={};break;case"list":e[n]=[];break;case"enum":e[n]=t.enum.values[0].number;break;case"scalar":e[n]=O(t.scalar,t.longAsString);break}}function ee(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function Be(e,t){var n,r,o,a;if(ee(e)&&P in e&&"add"in e&&"field"in e&&typeof e.field=="function"){if(t!==void 0){let i=t,s=e.field();return i.listKind==s.listKind&&i.scalar===s.scalar&&((n=i.message)===null||n===void 0?void 0:n.typeName)===((r=s.message)===null||r===void 0?void 0:r.typeName)&&((o=i.enum)===null||o===void 0?void 0:o.typeName)===((a=s.enum)===null||a===void 0?void 0:a.typeName)}return!0}return!1}function We(e,t){var n,r,o,a;if(ee(e)&&P in e&&"has"in e&&"field"in e&&typeof e.field=="function"){if(t!==void 0){let i=t,s=e.field();return i.mapKey===s.mapKey&&i.mapKind==s.mapKind&&i.scalar===s.scalar&&((n=i.message)===null||n===void 0?void 0:n.typeName)===((r=s.message)===null||r===void 0?void 0:r.typeName)&&((o=i.enum)===null||o===void 0?void 0:o.typeName)===((a=s.enum)===null||a===void 0?void 0:a.typeName)}return!0}return!1}function Ee(e,t){return ee(e)&&P in e&&"desc"in e&&ee(e.desc)&&e.desc.kind==="message"&&(t===void 0||e.desc.typeName==t.typeName)}function ir(e){return sr(e.$typeName)}function te(e){let t=e.fields[0];return sr(e.typeName)&&t!==void 0&&t.fieldKind=="scalar"&&t.name=="value"&&t.number==1}function sr(e){return e.startsWith("google.protobuf.")&&["DoubleValue","FloatValue","Int64Value","UInt64Value","Int32Value","UInt32Value","BoolValue","StringValue","BytesValue"].includes(e.substring(16))}var wa=999,ka=998,nt=2;function k(e,t){if(Xe(t,e))return t;let n=Ma(e);return t!==void 0&&Ya(e,n,t),n}function Ya(e,t,n){for(let r of e.members){let o=n[r.localName];if(o==null)continue;let a;if(r.kind=="oneof"){let i=qe(n,r);if(!i)continue;a=i,o=et(n,i)}else a=r;switch(a.fieldKind){case"message":o=Mt(a,o);break;case"scalar":o=dr(a,o);break;case"list":o=Na(a,o);break;case"map":o=Fa(a,o);break}tt(t,a,o)}return t}function dr(e,t){return e.scalar==d.BYTES?Lt(t):t}function Fa(e,t){if(ee(t)){if(e.scalar==d.BYTES)return cr(t,Lt);if(e.mapKind=="message")return cr(t,n=>Mt(e,n))}return t}function Na(e,t){if(Array.isArray(t)){if(e.scalar==d.BYTES)return t.map(Lt);if(e.listKind=="message")return t.map(n=>Mt(e,n))}return t}function Mt(e,t){if(e.fieldKind=="message"&&!e.oneof&&te(e.message))return dr(e.message.fields[0],t);if(ee(t)){if(e.message.typeName=="google.protobuf.Struct"&&e.parent.typeName!=="google.protobuf.Value")return t;if(!Xe(t,e.message))return k(e.message,t)}return t}function Lt(e){return Array.isArray(e)?new Uint8Array(e):e}function cr(e,t){let n={};for(let r of Object.entries(e))n[r[0]]=t(r[1]);return n}var Ha=Symbol(),lr=new WeakMap;function Ma(e){let t;if(La(e)){let n=lr.get(e),r,o;if(n)({prototype:r,members:o}=n);else{r={},o=new Set;for(let a of e.members)a.kind!="oneof"&&(a.fieldKind!="scalar"&&a.fieldKind!="enum"||a.presence!=nt&&(o.add(a),r[a.localName]=Ht(a)));lr.set(e,{prototype:r,members:o})}t=Object.create(r),t.$typeName=e.typeName;for(let a of e.members)o.has(a)||a.kind=="field"&&(a.fieldKind=="message"||(a.fieldKind=="scalar"||a.fieldKind=="enum")&&a.presence!=nt)||(t[a.localName]=Ht(a))}else{t={$typeName:e.typeName};for(let n of e.members)(n.kind=="oneof"||n.presence==nt)&&(t[n.localName]=Ht(n))}return t}function La(e){switch(e.file.edition){case wa:return!1;case ka:return!0;default:return e.fields.some(t=>t.presence!=nt&&t.fieldKind!="message"&&!t.oneof)}}function Ht(e){if(e.kind=="oneof")return{case:void 0};if(e.fieldKind=="list")return[];if(e.fieldKind=="map")return{};if(e.fieldKind=="message")return Ha;let t=e.getDefaultValue();return t!==void 0?e.fieldKind=="scalar"&&e.longAsString?t.toString():t:e.fieldKind=="scalar"?O(e.scalar,e.longAsString):e.enum.values[0].number}var za=["FieldValueInvalidError","FieldListRangeError","ForeignFieldError"],L=class extends Error{constructor(t,n,r="FieldValueInvalidError"){super(n),this.name=r,this.field=()=>t}};function mr(e){return e instanceof Error&&za.includes(e.name)&&"field"in e&&typeof e.field=="function"}var zt=Symbol.for("@bufbuild/protobuf/text-encoding");function Je(){if(globalThis[zt]==null){let e=new globalThis.TextEncoder,t=new globalThis.TextDecoder;globalThis[zt]={encodeUtf8(n){return e.encode(n)},decodeUtf8(n){return t.decode(n)},checkUtf8(n){try{return encodeURIComponent(n),!0}catch{return!1}}}}return globalThis[zt]}var Y;(function(e){e[e.Varint=0]="Varint",e[e.Bit64=1]="Bit64",e[e.LengthDelimited=2]="LengthDelimited",e[e.StartGroup=3]="StartGroup",e[e.EndGroup=4]="EndGroup",e[e.Bit32=5]="Bit32"})(Y||(Y={}));var Ut=34028234663852886e22,Tt=-34028234663852886e22,Dt=4294967295,Qt=2147483647,_t=-2147483648,ge=class{constructor(t=Je().encodeUtf8){this.encodeUtf8=t,this.stack=[],this.chunks=[],this.buf=[]}finish(){this.buf.length&&(this.chunks.push(new Uint8Array(this.buf)),this.buf=[]);let t=0;for(let o=0;o<this.chunks.length;o++)t+=this.chunks[o].length;let n=new Uint8Array(t),r=0;for(let o=0;o<this.chunks.length;o++)n.set(this.chunks[o],r),r+=this.chunks[o].length;return this.chunks=[],n}fork(){return this.stack.push({chunks:this.chunks,buf:this.buf}),this.chunks=[],this.buf=[],this}join(){let t=this.finish(),n=this.stack.pop();if(!n)throw new Error("invalid state, fork stack empty");return this.chunks=n.chunks,this.buf=n.buf,this.uint32(t.byteLength),this.raw(t)}tag(t,n){return this.uint32((t<<3|n)>>>0)}raw(t){return this.buf.length&&(this.chunks.push(new Uint8Array(this.buf)),this.buf=[]),this.chunks.push(t),this}uint32(t){for(ur(t);t>127;)this.buf.push(t&127|128),t=t>>>7;return this.buf.push(t),this}int32(t){return Kt(t),Se(t,this.buf),this}bool(t){return this.buf.push(t?1:0),this}bytes(t){return this.uint32(t.byteLength),this.raw(t)}string(t){let n=this.encodeUtf8(t);return this.uint32(n.byteLength),this.raw(n)}float(t){Ka(t);let n=new Uint8Array(4);return new DataView(n.buffer).setFloat32(0,t,!0),this.raw(n)}double(t){let n=new Uint8Array(8);return new DataView(n.buffer).setFloat64(0,t,!0),this.raw(n)}fixed32(t){ur(t);let n=new Uint8Array(4);return new DataView(n.buffer).setUint32(0,t,!0),this.raw(n)}sfixed32(t){Kt(t);let n=new Uint8Array(4);return new DataView(n.buffer).setInt32(0,t,!0),this.raw(n)}sint32(t){return Kt(t),t=(t<<1^t>>31)>>>0,Se(t,this.buf),this}sfixed64(t){let n=new Uint8Array(8),r=new DataView(n.buffer),o=B.enc(t);return r.setInt32(0,o.lo,!0),r.setInt32(4,o.hi,!0),this.raw(n)}fixed64(t){let n=new Uint8Array(8),r=new DataView(n.buffer),o=B.uEnc(t);return r.setInt32(0,o.lo,!0),r.setInt32(4,o.hi,!0),this.raw(n)}int64(t){let n=B.enc(t);return $e(n.lo,n.hi,this.buf),this}sint64(t){let n=B.enc(t),r=n.hi>>31,o=n.lo<<1^r,a=(n.hi<<1|n.lo>>>31)^r;return $e(o,a,this.buf),this}uint64(t){let n=B.uEnc(t);return $e(n.lo,n.hi,this.buf),this}},le=class{constructor(t,n=Je().decodeUtf8){this.decodeUtf8=n,this.varint64=Pn,this.uint32=qn,this.buf=t,this.len=t.length,this.pos=0,this.view=new DataView(t.buffer,t.byteOffset,t.byteLength)}tag(){let t=this.uint32(),n=t>>>3,r=t&7;if(n<=0||r<0||r>5)throw new Error("illegal tag: field no "+n+" wire type "+r);return[n,r]}skip(t,n){let r=this.pos;switch(t){case Y.Varint:for(;this.buf[this.pos++]&128;);break;case Y.Bit64:this.pos+=4;case Y.Bit32:this.pos+=4;break;case Y.LengthDelimited:let o=this.uint32();this.pos+=o;break;case Y.StartGroup:for(;;){let[a,i]=this.tag();if(i===Y.EndGroup){if(n!==void 0&&a!==n)throw new Error("invalid end group tag");break}this.skip(i,a)}break;default:throw new Error("cant skip wire type "+t)}return this.assertBounds(),this.buf.subarray(r,this.pos)}assertBounds(){if(this.pos>this.len)throw new RangeError("premature EOF")}int32(){return this.uint32()|0}sint32(){let t=this.uint32();return t>>>1^-(t&1)}int64(){return B.dec(...this.varint64())}uint64(){return B.uDec(...this.varint64())}sint64(){let[t,n]=this.varint64(),r=-(t&1);return t=(t>>>1|(n&1)<<31)^r,n=n>>>1^r,B.dec(t,n)}bool(){let[t,n]=this.varint64();return t!==0||n!==0}fixed32(){return this.view.getUint32((this.pos+=4)-4,!0)}sfixed32(){return this.view.getInt32((this.pos+=4)-4,!0)}fixed64(){return B.uDec(this.sfixed32(),this.sfixed32())}sfixed64(){return B.dec(this.sfixed32(),this.sfixed32())}float(){return this.view.getFloat32((this.pos+=4)-4,!0)}double(){return this.view.getFloat64((this.pos+=8)-8,!0)}bytes(){let t=this.uint32(),n=this.pos;return this.pos+=t,this.assertBounds(),this.buf.subarray(n,n+t)}string(){return this.decodeUtf8(this.bytes())}};function Kt(e){if(typeof e=="string")e=Number(e);else if(typeof e!="number")throw new Error("invalid int32: "+typeof e);if(!Number.isInteger(e)||e>Qt||e<_t)throw new Error("invalid int32: "+e)}function ur(e){if(typeof e=="string")e=Number(e);else if(typeof e!="number")throw new Error("invalid uint32: "+typeof e);if(!Number.isInteger(e)||e>Dt||e<0)throw new Error("invalid uint32: "+e)}function Ka(e){if(typeof e=="string"){let t=e;if(e=Number(e),Number.isNaN(e)&&t!=="NaN")throw new Error("invalid float32: "+t)}else if(typeof e!="number")throw new Error("invalid float32: "+typeof e);if(Number.isFinite(e)&&(e>Ut||e<Tt))throw new Error("invalid float32: "+e)}function ne(e,t){let n=e.fieldKind=="list"?Be(t,e):e.fieldKind=="map"?We(t,e):Pt(e,t);if(n===!0)return;let r;switch(e.fieldKind){case"list":r=`expected ${br(e)}, got ${F(t)}`;break;case"map":r=`expected ${fr(e)}, got ${F(t)}`;break;default:r=rt(e,t,n)}return new L(e,r)}function Ot(e,t,n){let r=Pt(e,n);if(r!==!0)return new L(e,`list item #${t+1}: ${rt(e,n,r)}`)}function gr(e,t,n){let r=pr(t,e.mapKey);if(r!==!0)return new L(e,`invalid map key: ${rt({scalar:e.mapKey},t,r)}`);let o=Pt(e,n);if(o!==!0)return new L(e,`map entry ${F(t)}: ${rt(e,n,o)}`)}function Pt(e,t){return e.scalar!==void 0?pr(t,e.scalar):e.enum!==void 0?e.enum.open?Number.isInteger(t):e.enum.values.some(n=>n.number===t):Ee(t,e.message)}function pr(e,t){switch(t){case d.DOUBLE:return typeof e=="number";case d.FLOAT:return typeof e!="number"?!1:Number.isNaN(e)||!Number.isFinite(e)?!0:e>Ut||e<Tt?`${e.toFixed()} out of range`:!0;case d.INT32:case d.SFIXED32:case d.SINT32:return typeof e!="number"||!Number.isInteger(e)?!1:e>Qt||e<_t?`${e.toFixed()} out of range`:!0;case d.FIXED32:case d.UINT32:return typeof e!="number"||!Number.isInteger(e)?!1:e>Dt||e<0?`${e.toFixed()} out of range`:!0;case d.BOOL:return typeof e=="boolean";case d.STRING:return typeof e!="string"?!1:Je().checkUtf8(e)||"invalid UTF8";case d.BYTES:return e instanceof Uint8Array;case d.INT64:case d.SFIXED64:case d.SINT64:if(typeof e=="bigint"||typeof e=="number"||typeof e=="string"&&e.length>0)try{return B.parse(e),!0}catch{return`${e} out of range`}return!1;case d.FIXED64:case d.UINT64:if(typeof e=="bigint"||typeof e=="number"||typeof e=="string"&&e.length>0)try{return B.uParse(e),!0}catch{return`${e} out of range`}return!1}}function rt(e,t,n){return n=typeof n=="string"?`: ${n}`:`, got ${F(t)}`,e.scalar!==void 0?`expected ${Ua(e.scalar)}`+n:e.enum!==void 0?`expected ${e.enum.toString()}`+n:`expected ${hr(e.message)}`+n}function F(e){switch(typeof e){case"object":return e===null?"null":e instanceof Uint8Array?`Uint8Array(${e.length})`:Array.isArray(e)?`Array(${e.length})`:Be(e)?br(e.field()):We(e)?fr(e.field()):Ee(e)?hr(e.desc):Xe(e)?`message ${e.$typeName}`:"object";case"string":return e.length>30?"string":`"${e.split('"').join('\\"')}"`;case"boolean":return String(e);case"number":return String(e);case"bigint":return String(e)+"n";default:return typeof e}}function hr(e){return`ReflectMessage (${e.typeName})`}function br(e){switch(e.listKind){case"message":return`ReflectList (${e.message.toString()})`;case"enum":return`ReflectList (${e.enum.toString()})`;case"scalar":return`ReflectList (${d[e.scalar]})`}}function fr(e){switch(e.mapKind){case"message":return`ReflectMap (${d[e.mapKey]}, ${e.message.toString()})`;case"enum":return`ReflectMap (${d[e.mapKey]}, ${e.enum.toString()})`;case"scalar":return`ReflectMap (${d[e.mapKey]}, ${d[e.scalar]})`}}function Ua(e){switch(e){case d.STRING:return"string";case d.BOOL:return"boolean";case d.INT64:case d.SINT64:case d.SFIXED64:return"bigint (int64)";case d.UINT64:case d.FIXED64:return"bigint (uint64)";case d.BYTES:return"Uint8Array";case d.DOUBLE:return"number (float64)";case d.FLOAT:return"number (float32)";case d.FIXED32:case d.UINT32:return"number (uint32)";case d.INT32:case d.SFIXED32:case d.SINT32:return"number (int32)"}}function U(e,t,n=!0){return new at(e,t,n)}var yr=new WeakMap,at=class{get sortedFields(){let t=yr.get(this.desc);if(t)return t;let n=this.desc.fields.concat().sort((r,o)=>r.number-o.number);return yr.set(this.desc,n),n}constructor(t,n,r=!0){this.lists=new Map,this.maps=new Map,this.check=r,this.desc=t,this.message=this[P]=n??k(t),this.fields=t.fields,this.oneofs=t.oneofs,this.members=t.members}findNumber(t){return this._fieldsByNumber||(this._fieldsByNumber=new Map(this.desc.fields.map(n=>[n.number,n]))),this._fieldsByNumber.get(t)}oneofCase(t){return ve(this.message,t),qe(this.message,t)}isSet(t){return ve(this.message,t),or(this.message,t)}clear(t){ve(this.message,t),ar(this.message,t)}get(t){ve(this.message,t);let n=et(this.message,t);switch(t.fieldKind){case"list":let r=this.lists.get(t);return(!r||r[P]!==n)&&this.lists.set(t,r=new qt(t,n,this.check)),r;case"map":let o=this.maps.get(t);return(!o||o[P]!==n)&&this.maps.set(t,o=new en(t,n,this.check)),o;case"message":return nn(t,n,this.check);case"scalar":return n===void 0?O(t.scalar,!1):rn(t,n);case"enum":return n??t.enum.values[0].number}}set(t,n){if(ve(this.message,t),this.check){let o=ne(t,n);if(o)throw o}let r;t.fieldKind=="message"?r=tn(t,n):We(n)||Be(n)?r=n[P]:r=on(t,n),tt(this.message,t,r)}getUnknown(){return this.message.$unknown}setUnknown(t){this.message.$unknown=t}};function ve(e,t){if(t.parent.typeName!==e.$typeName)throw new L(t,`cannot use ${t.toString()} with message ${e.$typeName}`,"ForeignFieldError")}var qt=class{field(){return this._field}get size(){return this._arr.length}constructor(t,n,r){this._field=t,this._arr=this[P]=n,this.check=r}get(t){let n=this._arr[t];return n===void 0?void 0:jt(this._field,n,this.check)}set(t,n){if(t<0||t>=this._arr.length)throw new L(this._field,`list item #${t+1}: out of range`);if(this.check){let r=Ot(this._field,t,n);if(r)throw r}this._arr[t]=Ir(this._field,n)}add(t){if(this.check){let n=Ot(this._field,this._arr.length,t);if(n)throw n}this._arr.push(Ir(this._field,t))}clear(){this._arr.splice(0,this._arr.length)}[Symbol.iterator](){return this.values()}keys(){return this._arr.keys()}*values(){for(let t of this._arr)yield jt(this._field,t,this.check)}*entries(){for(let t=0;t<this._arr.length;t++)yield[t,jt(this._field,this._arr[t],this.check)]}};var en=class{constructor(t,n,r=!0){this.obj=this[P]=n??{},this.check=r,this._field=t}field(){return this._field}set(t,n){if(this.check){let r=gr(this._field,t,n);if(r)throw r}return this.obj[ot(t)]=Ta(this._field,n),this}delete(t){let n=ot(t),r=Object.prototype.hasOwnProperty.call(this.obj,n);return r&&delete this.obj[n],r}clear(){for(let t of Object.keys(this.obj))delete this.obj[t]}get(t){let n=this.obj[ot(t)];return n!==void 0&&(n=$t(this._field,n,this.check)),n}has(t){return Object.prototype.hasOwnProperty.call(this.obj,ot(t))}*keys(){for(let t of Object.keys(this.obj))yield Gr(t,this._field.mapKey)}*entries(){for(let t of Object.entries(this.obj))yield[Gr(t[0],this._field.mapKey),$t(this._field,t[1],this.check)]}[Symbol.iterator](){return this.entries()}get size(){return Object.keys(this.obj).length}*values(){for(let t of Object.values(this.obj))yield $t(this._field,t,this.check)}forEach(t,n){for(let r of this.entries())t.call(n,r[1],r[0],this)}};function tn(e,t){return Ee(t)?ir(t.message)&&!e.oneof&&e.fieldKind=="message"?t.message.value:t.desc.typeName=="google.protobuf.Struct"&&e.parent.typeName!="google.protobuf.Value"?Ar(t.message):t.message:t}function nn(e,t,n){return t!==void 0&&(te(e.message)&&!e.oneof&&e.fieldKind=="message"?t={$typeName:e.message.typeName,value:rn(e.message.fields[0],t)}:e.message.typeName=="google.protobuf.Struct"&&e.parent.typeName!="google.protobuf.Value"&&ee(t)&&(t=Zr(t))),new at(e.message,t,n)}function Ir(e,t){return e.listKind=="message"?tn(e,t):on(e,t)}function jt(e,t,n){return e.listKind=="message"?nn(e,t,n):rn(e,t)}function Ta(e,t){return e.mapKind=="message"?tn(e,t):on(e,t)}function $t(e,t,n){return e.mapKind=="message"?nn(e,t,n):t}function ot(e){return typeof e=="string"||typeof e=="number"?e:String(e)}function Gr(e,t){switch(t){case d.STRING:return e;case d.INT32:case d.FIXED32:case d.UINT32:case d.SFIXED32:case d.SINT32:{let n=Number.parseInt(e);if(Number.isFinite(n))return n;break}case d.BOOL:switch(e){case"true":return!0;case"false":return!1}break;case d.UINT64:case d.FIXED64:try{return B.uParse(e)}catch{}break;default:try{return B.parse(e)}catch{}break}return e}function rn(e,t){switch(e.scalar){case d.INT64:case d.SFIXED64:case d.SINT64:"longAsString"in e&&e.longAsString&&typeof t=="string"&&(t=B.parse(t));break;case d.FIXED64:case d.UINT64:"longAsString"in e&&e.longAsString&&typeof t=="string"&&(t=B.uParse(t));break}return t}function on(e,t){switch(e.scalar){case d.INT64:case d.SFIXED64:case d.SINT64:"longAsString"in e&&e.longAsString?t=String(t):(typeof t=="string"||typeof t=="number")&&(t=B.parse(t));break;case d.FIXED64:case d.UINT64:"longAsString"in e&&e.longAsString?t=String(t):(typeof t=="string"||typeof t=="number")&&(t=B.uParse(t));break}return t}function Zr(e){let t={$typeName:"google.protobuf.Struct",fields:{}};if(ee(e))for(let[n,r]of Object.entries(e))t.fields[n]=Vr(r);return t}function Ar(e){let t={};for(let[n,r]of Object.entries(e.fields))t[n]=Cr(r);return t}function Cr(e){switch(e.kind.case){case"structValue":return Ar(e.kind.value);case"listValue":return e.kind.value.values.map(Cr);case"nullValue":case void 0:return null;default:return e.kind.value}}function Vr(e){let t={$typeName:"google.protobuf.Value",kind:{case:void 0}};switch(typeof e){case"number":t.kind={case:"numberValue",value:e};break;case"string":t.kind={case:"stringValue",value:e};break;case"boolean":t.kind={case:"boolValue",value:e};break;case"object":if(e===null)t.kind={case:"nullValue",value:0};else if(Array.isArray(e)){let n={$typeName:"google.protobuf.ListValue",values:[]};if(Array.isArray(e))for(let r of e)n.values.push(Vr(r));t.kind={case:"listValue",value:n}}else t.kind={case:"structValue",value:Zr(e)};break}return t}function he(e){let t=Da(),n=e.length*3/4;e[e.length-2]=="="?n-=2:e[e.length-1]=="="&&(n-=1);let r=new Uint8Array(n),o=0,a=0,i,s=0;for(let m=0;m<e.length;m++){if(i=t[e.charCodeAt(m)],i===void 0)switch(e[m]){case"=":a=0;case`
|
|
4
|
-
`:case"\r":case" ":case" ":continue;default:throw Error("invalid base64 string")}switch(a){case 0:s=i,a=1;break;case 1:r[o++]=s<<2|(i&48)>>4,s=i,a=2;break;case 2:r[o++]=(s&15)<<4|(i&60)>>2,s=i,a=3;break;case 3:r[o++]=(s&3)<<6|i,a=0;break}}if(a==1)throw Error("invalid base64 string");return r.subarray(0,o)}function Re(e,t="std"){let n=Xr(t),r=t=="std",o="",a=0,i,s=0;for(let m=0;m<e.length;m++)switch(i=e[m],a){case 0:o+=n[i>>2],s=(i&3)<<4,a=1;break;case 1:o+=n[s|i>>4],s=(i&15)<<2,a=2;break;case 2:o+=n[s|i>>6],o+=n[i&63],a=0;break}return a&&(o+=n[s],r&&(o+="=",a==1&&(o+="="))),o}var it,xr,pe;function Xr(e){return it||(it="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split(""),xr=it.slice(0,-2).concat("-","_")),e=="url"?xr:it}function Da(){if(!pe){pe=[];let e=Xr("std");for(let t=0;t<e.length;t++)pe[e[t].charCodeAt(0)]=t;pe[45]=e.indexOf("+"),pe[95]=e.indexOf("/")}return pe}function re(e){let t=!1,n=[];for(let r=0;r<e.length;r++){let o=e.charAt(r);switch(o){case"_":t=!0;break;case"0":case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":n.push(o),t=!1;break;default:t&&(t=!1,o=o.toUpperCase()),n.push(o);break}}return n.join("")}function st(e){return e.replace(/[A-Z]/g,t=>"_"+t.toLowerCase())}var Qa=new Set(["constructor","toString","toJSON","valueOf"]);function be(e){return Qa.has(e)?e+"$":e}function we(e){for(let t of e.field)ce(t,"jsonName")||(t.jsonName=re(t.name));e.nestedType.forEach(we)}function Sr(e,t){let n=e.values.find(r=>r.name===t);if(!n)throw new Error(`cannot parse ${e} default value: ${t}`);return n.number}function Br(e,t){switch(e){case d.STRING:return t;case d.BYTES:{let n=_a(t);if(n===!1)throw new Error(`cannot parse ${d[e]} default value: ${t}`);return n}case d.INT64:case d.SFIXED64:case d.SINT64:return B.parse(t);case d.UINT64:case d.FIXED64:return B.uParse(t);case d.DOUBLE:case d.FLOAT:switch(t){case"inf":return Number.POSITIVE_INFINITY;case"-inf":return Number.NEGATIVE_INFINITY;case"nan":return Number.NaN;default:return parseFloat(t)}case d.BOOL:return t==="true";case d.INT32:case d.UINT32:case d.SINT32:case d.FIXED32:case d.SFIXED32:return parseInt(t,10)}}function _a(e){let t=[],n={tail:e,c:"",next(){return this.tail.length==0?!1:(this.c=this.tail[0],this.tail=this.tail.substring(1),!0)},take(r){if(this.tail.length>=r){let o=this.tail.substring(0,r);return this.tail=this.tail.substring(r),o}return!1}};for(;n.next();)switch(n.c){case"\\":if(n.next())switch(n.c){case"\\":t.push(n.c.charCodeAt(0));break;case"b":t.push(8);break;case"f":t.push(12);break;case"n":t.push(10);break;case"r":t.push(13);break;case"t":t.push(9);break;case"v":t.push(11);break;case"0":case"1":case"2":case"3":case"4":case"5":case"6":case"7":{let r=n.c,o=n.take(2);if(o===!1)return!1;let a=parseInt(r+o,8);if(Number.isNaN(a))return!1;t.push(a);break}case"x":{let r=n.c,o=n.take(2);if(o===!1)return!1;let a=parseInt(r+o,16);if(Number.isNaN(a))return!1;t.push(a);break}case"u":{let r=n.c,o=n.take(4);if(o===!1)return!1;let a=parseInt(r+o,16);if(Number.isNaN(a))return!1;let i=new Uint8Array(4);new DataView(i.buffer).setInt32(0,a,!0),t.push(i[0],i[1],i[2],i[3]);break}case"U":{let r=n.c,o=n.take(8);if(o===!1)return!1;let a=B.uEnc(r+o),i=new Uint8Array(8),s=new DataView(i.buffer);s.setInt32(0,a.lo,!0),s.setInt32(4,a.hi,!0),t.push(i[0],i[1],i[2],i[3],i[4],i[5],i[6],i[7]);break}}break;default:t.push(n.c.charCodeAt(0))}return new Uint8Array(t)}function*ct(e){switch(e.kind){case"file":for(let t of e.messages)yield t,yield*ct(t);yield*e.enums,yield*e.services,yield*e.extensions;break;case"message":for(let t of e.nestedMessages)yield t,yield*ct(t);yield*e.nestedEnums,yield*e.nestedExtensions;break}}function lt(...e){let t=Oa();if(!e.length)return t;if("$typeName"in e[0]&&e[0].$typeName=="google.protobuf.FileDescriptorSet"){for(let n of e[0].file)vr(n,t);return t}if("$typeName"in e[0]){let a=function(i){let s=[];for(let m of i.dependency){if(t.getFile(m)!=null||o.has(m))continue;let u=r(m);if(!u)throw new Error(`Unable to resolve ${m}, imported by ${i.name}`);"kind"in u?t.addFile(u,!1,!0):(o.add(u.name),s.push(u))}return s.concat(...s.map(a))},n=e[0],r=e[1],o=new Set;for(let i of[n,...a(n)].reverse())vr(i,t)}else for(let n of e)for(let r of n.files)t.addFile(r);return t}function Oa(){let e=new Map,t=new Map,n=new Map;return{kind:"registry",types:e,extendees:t,[Symbol.iterator](){return e.values()},get files(){return n.values()},addFile(r,o,a){if(n.set(r.proto.name,r),!o)for(let i of ct(r))this.add(i);if(a)for(let i of r.dependencies)this.addFile(i,o,a)},add(r){if(r.kind=="extension"){let o=t.get(r.extendee.typeName);o||t.set(r.extendee.typeName,o=new Map),o.set(r.number,r)}e.set(r.typeName,r)},get(r){return e.get(r)},getFile(r){return n.get(r)},getMessage(r){let o=e.get(r);return o?.kind=="message"?o:void 0},getEnum(r){let o=e.get(r);return o?.kind=="enum"?o:void 0},getExtension(r){let o=e.get(r);return o?.kind=="extension"?o:void 0},getExtensionFor(r,o){var a;return(a=t.get(r.typeName))===null||a===void 0?void 0:a.get(o)},getService(r){let o=e.get(r);return o?.kind=="service"?o:void 0}}}var Pa=998,ja=999,$a=9,Ye=10,ke=11,qa=12,Wr=14,dn=3,ei=2,Er=1,ti=0,an=1,Jr=2,ni=3,ri=1,oi=2,ai=1;var wr={998:{fieldPresence:1,enumType:2,repeatedFieldEncoding:2,utf8Validation:3,messageEncoding:1,jsonFormat:2,enforceNamingStyle:2,defaultSymbolVisibility:1},999:{fieldPresence:2,enumType:1,repeatedFieldEncoding:1,utf8Validation:2,messageEncoding:1,jsonFormat:1,enforceNamingStyle:2,defaultSymbolVisibility:1},1e3:{fieldPresence:1,enumType:1,repeatedFieldEncoding:1,utf8Validation:2,messageEncoding:1,jsonFormat:1,enforceNamingStyle:2,defaultSymbolVisibility:1},1001:{fieldPresence:1,enumType:1,repeatedFieldEncoding:1,utf8Validation:2,messageEncoding:1,jsonFormat:1,enforceNamingStyle:1,defaultSymbolVisibility:2}};function vr(e,t){var n,r;let o={kind:"file",proto:e,deprecated:(r=(n=e.options)===null||n===void 0?void 0:n.deprecated)!==null&&r!==void 0?r:!1,edition:li(e),name:e.name.replace(/\.proto$/,""),dependencies:di(e,t),enums:[],messages:[],extensions:[],services:[],toString(){return`file ${e.name}`}},a=new Map,i={get(s){return a.get(s)},add(s){var m;j(((m=s.proto.options)===null||m===void 0?void 0:m.mapEntry)===!0),a.set(s.typeName,s)}};for(let s of e.enumType)kr(s,o,void 0,t);for(let s of e.messageType)Yr(s,o,void 0,t,i);for(let s of e.service)ii(s,o,t);sn(o,t);for(let s of a.values())cn(s,t,i);for(let s of o.messages)cn(s,t,i),sn(s,t);t.addFile(o,!0)}function sn(e,t){switch(e.kind){case"file":for(let n of e.proto.extension){let r=ln(n,e,t);e.extensions.push(r),t.add(r)}break;case"message":for(let n of e.proto.extension){let r=ln(n,e,t);e.nestedExtensions.push(r),t.add(r)}for(let n of e.nestedMessages)sn(n,t);break}}function cn(e,t,n){let r=e.proto.oneofDecl.map(a=>ci(a,e)),o=new Set;for(let a of e.proto.field){let i=gi(a,r),s=ln(a,e,t,i,n);e.fields.push(s),e.field[s.localName]=s,i===void 0?e.members.push(s):(i.fields.push(s),o.has(i)||(o.add(i),e.members.push(i)))}for(let a of r.filter(i=>o.has(i)))e.oneofs.push(a);for(let a of e.nestedMessages)cn(a,t,n)}function kr(e,t,n,r){var o,a,i,s,m;let u=mi(e.name,e.value),I={kind:"enum",proto:e,deprecated:(a=(o=e.options)===null||o===void 0?void 0:o.deprecated)!==null&&a!==void 0?a:!1,file:t,parent:n,open:!0,name:e.name,typeName:dt(e,n,t),value:{},values:[],sharedPrefix:u,toString(){return`enum ${this.typeName}`}};I.open=fi(I),r.add(I);for(let f of e.value){let l=f.name;I.values.push(I.value[f.number]={kind:"enum_value",proto:f,deprecated:(s=(i=f.options)===null||i===void 0?void 0:i.deprecated)!==null&&s!==void 0?s:!1,parent:I,name:l,localName:be(u==null?l:l.substring(u.length)),number:f.number,toString(){return`enum value ${I.typeName}.${l}`}})}((m=n?.nestedEnums)!==null&&m!==void 0?m:t.enums).push(I)}function Yr(e,t,n,r,o){var a,i,s,m;let u={kind:"message",proto:e,deprecated:(i=(a=e.options)===null||a===void 0?void 0:a.deprecated)!==null&&i!==void 0?i:!1,file:t,parent:n,name:e.name,typeName:dt(e,n,t),fields:[],field:{},oneofs:[],members:[],nestedEnums:[],nestedMessages:[],nestedExtensions:[],toString(){return`message ${this.typeName}`}};((s=e.options)===null||s===void 0?void 0:s.mapEntry)===!0?o.add(u):(((m=n?.nestedMessages)!==null&&m!==void 0?m:t.messages).push(u),r.add(u));for(let I of e.enumType)kr(I,t,u,r);for(let I of e.nestedType)Yr(I,t,u,r,o)}function ii(e,t,n){var r,o;let a={kind:"service",proto:e,deprecated:(o=(r=e.options)===null||r===void 0?void 0:r.deprecated)!==null&&o!==void 0?o:!1,file:t,name:e.name,typeName:dt(e,void 0,t),methods:[],method:{},toString(){return`service ${this.typeName}`}};t.services.push(a),n.add(a);for(let i of e.method){let s=si(i,a,n);a.methods.push(s),a.method[s.localName]=s}}function si(e,t,n){var r,o,a,i;let s;e.clientStreaming&&e.serverStreaming?s="bidi_streaming":e.clientStreaming?s="client_streaming":e.serverStreaming?s="server_streaming":s="unary";let m=n.getMessage(oe(e.inputType)),u=n.getMessage(oe(e.outputType));j(m,`invalid MethodDescriptorProto: input_type ${e.inputType} not found`),j(u,`invalid MethodDescriptorProto: output_type ${e.inputType} not found`);let I=e.name;return{kind:"rpc",proto:e,deprecated:(o=(r=e.options)===null||r===void 0?void 0:r.deprecated)!==null&&o!==void 0?o:!1,parent:t,name:I,localName:be(I.length?be(I[0].toLowerCase()+I.substring(1)):I),methodKind:s,input:m,output:u,idempotency:(i=(a=e.options)===null||a===void 0?void 0:a.idempotencyLevel)!==null&&i!==void 0?i:ti,toString(){return`rpc ${t.typeName}.${I}`}}}function ci(e,t){return{kind:"oneof",proto:e,deprecated:!1,parent:t,fields:[],name:e.name,localName:be(re(e.name)),toString(){return`oneof ${t.typeName}.${this.name}`}}}function ln(e,t,n,r,o){var a,i,s;let m=o===void 0,u={kind:"field",proto:e,deprecated:(i=(a=e.options)===null||a===void 0?void 0:a.deprecated)!==null&&i!==void 0?i:!1,name:e.name,number:e.number,scalar:void 0,message:void 0,enum:void 0,presence:pi(e,r,m,t),listKind:void 0,mapKind:void 0,mapKey:void 0,delimitedEncoding:void 0,packed:void 0,longAsString:!1,getDefaultValue:void 0};if(m){let c=t.kind=="file"?t:t.file,g=t.kind=="file"?void 0:t,h=dt(e,g,c);u.kind="extension",u.file=c,u.parent=g,u.oneof=void 0,u.typeName=h,u.jsonName=`[${h}]`,u.toString=()=>`extension ${h}`;let p=n.getMessage(oe(e.extendee));j(p,`invalid FieldDescriptorProto: extendee ${e.extendee} not found`),u.extendee=p}else{let c=t;j(c.kind=="message"),u.parent=c,u.oneof=r,u.localName=r?re(e.name):be(re(e.name)),u.jsonName=e.jsonName,u.toString=()=>`field ${c.typeName}.${e.name}`}let I=e.label,f=e.type,l=(s=e.options)===null||s===void 0?void 0:s.jstype;if(I===dn){let c=f==ke?o?.get(oe(e.typeName)):void 0;if(c){u.fieldKind="map";let{key:g,value:h}=bi(c);return u.mapKey=g.scalar,u.mapKind=h.fieldKind,u.message=h.message,u.delimitedEncoding=!1,u.enum=h.enum,u.scalar=h.scalar,u}switch(u.fieldKind="list",f){case ke:case Ye:u.listKind="message",u.message=n.getMessage(oe(e.typeName)),j(u.message),u.delimitedEncoding=Rr(e,t);break;case Wr:u.listKind="enum",u.enum=n.getEnum(oe(e.typeName)),j(u.enum);break;default:u.listKind="scalar",u.scalar=f,u.longAsString=l==Er;break}return u.packed=hi(e,t),u}switch(f){case ke:case Ye:u.fieldKind="message",u.message=n.getMessage(oe(e.typeName)),j(u.message,`invalid FieldDescriptorProto: type_name ${e.typeName} not found`),u.delimitedEncoding=Rr(e,t),u.getDefaultValue=()=>{};break;case Wr:{let c=n.getEnum(oe(e.typeName));j(c!==void 0,`invalid FieldDescriptorProto: type_name ${e.typeName} not found`),u.fieldKind="enum",u.enum=n.getEnum(oe(e.typeName)),u.getDefaultValue=()=>ce(e,"defaultValue")?Sr(c,e.defaultValue):void 0;break}default:{u.fieldKind="scalar",u.scalar=f,u.longAsString=l==Er,u.getDefaultValue=()=>ce(e,"defaultValue")?Br(f,e.defaultValue):void 0;break}}return u}function li(e){switch(e.syntax){case"":case"proto2":return Pa;case"proto3":return ja;case"editions":if(e.edition in wr)return e.edition;throw new Error(`${e.name}: unsupported edition`);default:throw new Error(`${e.name}: unsupported syntax "${e.syntax}"`)}}function di(e,t){return e.dependency.map(n=>{let r=t.getFile(n);if(!r)throw new Error(`Cannot find ${n}, imported by ${e.name}`);return r})}function mi(e,t){let n=ui(e)+"_";for(let r of t){if(!r.name.toLowerCase().startsWith(n))return;let o=r.name.substring(n.length);if(o.length==0||/^\d/.test(o))return}return n}function ui(e){return(e.substring(0,1)+e.substring(1).replace(/[A-Z]/g,t=>"_"+t)).toLowerCase()}function dt(e,t,n){let r;return t?r=`${t.typeName}.${e.name}`:n.proto.package.length>0?r=`${n.proto.package}.${e.name}`:r=`${e.name}`,r}function oe(e){return e.startsWith(".")?e.substring(1):e}function gi(e,t){if(!ce(e,"oneofIndex")||e.proto3Optional)return;let n=t[e.oneofIndex];return j(n,`invalid FieldDescriptorProto: oneof #${e.oneofIndex} for field #${e.number} not found`),n}function pi(e,t,n,r){if(e.label==ei)return ni;if(e.label==dn)return Jr;if(t||e.proto3Optional||n)return an;let o=fe("fieldPresence",{proto:e,parent:r});return o==Jr&&(e.type==ke||e.type==Ye)?an:o}function hi(e,t){if(e.label!=dn)return!1;switch(e.type){case $a:case qa:case Ye:case ke:return!1}let n=e.options;return n&&ce(n,"packed")?n.packed:ri==fe("repeatedFieldEncoding",{proto:e,parent:t})}function bi(e){let t=e.fields.find(r=>r.number===1),n=e.fields.find(r=>r.number===2);return j(t&&t.fieldKind=="scalar"&&t.scalar!=d.BYTES&&t.scalar!=d.FLOAT&&t.scalar!=d.DOUBLE&&n&&n.fieldKind!="list"&&n.fieldKind!="map"),{key:t,value:n}}function fi(e){var t;return ai==fe("enumType",{proto:e.proto,parent:(t=e.parent)!==null&&t!==void 0?t:e.file})}function Rr(e,t){return e.type==Ye?!0:oi==fe("messageEncoding",{proto:e,parent:t})}function fe(e,t){var n,r;let o=(n=t.proto.options)===null||n===void 0?void 0:n.features;if(o){let a=o[e];if(a!=0)return a}if("kind"in t){if(t.kind=="message")return fe(e,(r=t.parent)!==null&&r!==void 0?r:t.file);let a=wr[t.edition];if(!a)throw new Error(`feature default for edition ${t.edition} not found`);return a[e]}return fe(e,t.parent)}function j(e,t){if(!e)throw new Error(t)}function Fr(e){let t=yi(e);return t.messageType.forEach(we),lt(t,()=>{}).getFile(t.name)}function yi(e){return Object.assign(Object.create({syntax:"",edition:0}),Object.assign(Object.assign({$typeName:"google.protobuf.FileDescriptorProto",dependency:[],publicDependency:[],weakDependency:[],optionDependency:[],service:[],extension:[]},e),{messageType:e.messageType.map(Nr),enumType:e.enumType.map(Hr)}))}function Nr(e){var t,n,r,o,a,i,s,m;return Object.assign(Object.create({visibility:0}),{$typeName:"google.protobuf.DescriptorProto",name:e.name,field:(n=(t=e.field)===null||t===void 0?void 0:t.map(Ii))!==null&&n!==void 0?n:[],extension:[],nestedType:(o=(r=e.nestedType)===null||r===void 0?void 0:r.map(Nr))!==null&&o!==void 0?o:[],enumType:(i=(a=e.enumType)===null||a===void 0?void 0:a.map(Hr))!==null&&i!==void 0?i:[],extensionRange:(m=(s=e.extensionRange)===null||s===void 0?void 0:s.map(I=>Object.assign({$typeName:"google.protobuf.DescriptorProto.ExtensionRange"},I)))!==null&&m!==void 0?m:[],oneofDecl:[],reservedRange:[],reservedName:[]})}function Ii(e){return Object.assign(Object.create({label:1,typeName:"",extendee:"",defaultValue:"",oneofIndex:0,jsonName:"",proto3Optional:!1}),Object.assign(Object.assign({$typeName:"google.protobuf.FieldDescriptorProto"},e),{options:e.options?Gi(e.options):void 0}))}function Gi(e){var t,n,r;return Object.assign(Object.create({ctype:0,packed:!1,jstype:0,lazy:!1,unverifiedLazy:!1,deprecated:!1,weak:!1,debugRedact:!1,retention:0}),Object.assign(Object.assign({$typeName:"google.protobuf.FieldOptions"},e),{targets:(t=e.targets)!==null&&t!==void 0?t:[],editionDefaults:(r=(n=e.editionDefaults)===null||n===void 0?void 0:n.map(a=>Object.assign({$typeName:"google.protobuf.FieldOptions.EditionDefault"},a)))!==null&&r!==void 0?r:[],uninterpretedOption:[]}))}function Hr(e){return Object.assign(Object.create({visibility:0}),{$typeName:"google.protobuf.EnumDescriptorProto",name:e.name,reservedName:[],reservedRange:[],value:e.value.map(n=>Object.assign({$typeName:"google.protobuf.EnumValueDescriptorProto"},n))})}function K(e,t,...n){return n.reduce((r,o)=>r.nestedMessages[o],e.messages[t])}function Fe(e,t,...n){if(n.length==0)return e.enums[t];let r=n.pop();return n.reduce((o,a)=>o.nestedMessages[a],e.messages[t]).nestedEnums[r]}var de=Fr({name:"google/protobuf/descriptor.proto",package:"google.protobuf",messageType:[{name:"FileDescriptorSet",field:[{name:"file",number:1,type:11,label:3,typeName:".google.protobuf.FileDescriptorProto"}],extensionRange:[{start:536e6,end:536000001}]},{name:"FileDescriptorProto",field:[{name:"name",number:1,type:9,label:1},{name:"package",number:2,type:9,label:1},{name:"dependency",number:3,type:9,label:3},{name:"public_dependency",number:10,type:5,label:3},{name:"weak_dependency",number:11,type:5,label:3},{name:"option_dependency",number:15,type:9,label:3},{name:"message_type",number:4,type:11,label:3,typeName:".google.protobuf.DescriptorProto"},{name:"enum_type",number:5,type:11,label:3,typeName:".google.protobuf.EnumDescriptorProto"},{name:"service",number:6,type:11,label:3,typeName:".google.protobuf.ServiceDescriptorProto"},{name:"extension",number:7,type:11,label:3,typeName:".google.protobuf.FieldDescriptorProto"},{name:"options",number:8,type:11,label:1,typeName:".google.protobuf.FileOptions"},{name:"source_code_info",number:9,type:11,label:1,typeName:".google.protobuf.SourceCodeInfo"},{name:"syntax",number:12,type:9,label:1},{name:"edition",number:14,type:14,label:1,typeName:".google.protobuf.Edition"}]},{name:"DescriptorProto",field:[{name:"name",number:1,type:9,label:1},{name:"field",number:2,type:11,label:3,typeName:".google.protobuf.FieldDescriptorProto"},{name:"extension",number:6,type:11,label:3,typeName:".google.protobuf.FieldDescriptorProto"},{name:"nested_type",number:3,type:11,label:3,typeName:".google.protobuf.DescriptorProto"},{name:"enum_type",number:4,type:11,label:3,typeName:".google.protobuf.EnumDescriptorProto"},{name:"extension_range",number:5,type:11,label:3,typeName:".google.protobuf.DescriptorProto.ExtensionRange"},{name:"oneof_decl",number:8,type:11,label:3,typeName:".google.protobuf.OneofDescriptorProto"},{name:"options",number:7,type:11,label:1,typeName:".google.protobuf.MessageOptions"},{name:"reserved_range",number:9,type:11,label:3,typeName:".google.protobuf.DescriptorProto.ReservedRange"},{name:"reserved_name",number:10,type:9,label:3},{name:"visibility",number:11,type:14,label:1,typeName:".google.protobuf.SymbolVisibility"}],nestedType:[{name:"ExtensionRange",field:[{name:"start",number:1,type:5,label:1},{name:"end",number:2,type:5,label:1},{name:"options",number:3,type:11,label:1,typeName:".google.protobuf.ExtensionRangeOptions"}]},{name:"ReservedRange",field:[{name:"start",number:1,type:5,label:1},{name:"end",number:2,type:5,label:1}]}]},{name:"ExtensionRangeOptions",field:[{name:"uninterpreted_option",number:999,type:11,label:3,typeName:".google.protobuf.UninterpretedOption"},{name:"declaration",number:2,type:11,label:3,typeName:".google.protobuf.ExtensionRangeOptions.Declaration",options:{retention:2}},{name:"features",number:50,type:11,label:1,typeName:".google.protobuf.FeatureSet"},{name:"verification",number:3,type:14,label:1,typeName:".google.protobuf.ExtensionRangeOptions.VerificationState",defaultValue:"UNVERIFIED",options:{retention:2}}],nestedType:[{name:"Declaration",field:[{name:"number",number:1,type:5,label:1},{name:"full_name",number:2,type:9,label:1},{name:"type",number:3,type:9,label:1},{name:"reserved",number:5,type:8,label:1},{name:"repeated",number:6,type:8,label:1}]}],enumType:[{name:"VerificationState",value:[{name:"DECLARATION",number:0},{name:"UNVERIFIED",number:1}]}],extensionRange:[{start:1e3,end:536870912}]},{name:"FieldDescriptorProto",field:[{name:"name",number:1,type:9,label:1},{name:"number",number:3,type:5,label:1},{name:"label",number:4,type:14,label:1,typeName:".google.protobuf.FieldDescriptorProto.Label"},{name:"type",number:5,type:14,label:1,typeName:".google.protobuf.FieldDescriptorProto.Type"},{name:"type_name",number:6,type:9,label:1},{name:"extendee",number:2,type:9,label:1},{name:"default_value",number:7,type:9,label:1},{name:"oneof_index",number:9,type:5,label:1},{name:"json_name",number:10,type:9,label:1},{name:"options",number:8,type:11,label:1,typeName:".google.protobuf.FieldOptions"},{name:"proto3_optional",number:17,type:8,label:1}],enumType:[{name:"Type",value:[{name:"TYPE_DOUBLE",number:1},{name:"TYPE_FLOAT",number:2},{name:"TYPE_INT64",number:3},{name:"TYPE_UINT64",number:4},{name:"TYPE_INT32",number:5},{name:"TYPE_FIXED64",number:6},{name:"TYPE_FIXED32",number:7},{name:"TYPE_BOOL",number:8},{name:"TYPE_STRING",number:9},{name:"TYPE_GROUP",number:10},{name:"TYPE_MESSAGE",number:11},{name:"TYPE_BYTES",number:12},{name:"TYPE_UINT32",number:13},{name:"TYPE_ENUM",number:14},{name:"TYPE_SFIXED32",number:15},{name:"TYPE_SFIXED64",number:16},{name:"TYPE_SINT32",number:17},{name:"TYPE_SINT64",number:18}]},{name:"Label",value:[{name:"LABEL_OPTIONAL",number:1},{name:"LABEL_REPEATED",number:3},{name:"LABEL_REQUIRED",number:2}]}]},{name:"OneofDescriptorProto",field:[{name:"name",number:1,type:9,label:1},{name:"options",number:2,type:11,label:1,typeName:".google.protobuf.OneofOptions"}]},{name:"EnumDescriptorProto",field:[{name:"name",number:1,type:9,label:1},{name:"value",number:2,type:11,label:3,typeName:".google.protobuf.EnumValueDescriptorProto"},{name:"options",number:3,type:11,label:1,typeName:".google.protobuf.EnumOptions"},{name:"reserved_range",number:4,type:11,label:3,typeName:".google.protobuf.EnumDescriptorProto.EnumReservedRange"},{name:"reserved_name",number:5,type:9,label:3},{name:"visibility",number:6,type:14,label:1,typeName:".google.protobuf.SymbolVisibility"}],nestedType:[{name:"EnumReservedRange",field:[{name:"start",number:1,type:5,label:1},{name:"end",number:2,type:5,label:1}]}]},{name:"EnumValueDescriptorProto",field:[{name:"name",number:1,type:9,label:1},{name:"number",number:2,type:5,label:1},{name:"options",number:3,type:11,label:1,typeName:".google.protobuf.EnumValueOptions"}]},{name:"ServiceDescriptorProto",field:[{name:"name",number:1,type:9,label:1},{name:"method",number:2,type:11,label:3,typeName:".google.protobuf.MethodDescriptorProto"},{name:"options",number:3,type:11,label:1,typeName:".google.protobuf.ServiceOptions"}]},{name:"MethodDescriptorProto",field:[{name:"name",number:1,type:9,label:1},{name:"input_type",number:2,type:9,label:1},{name:"output_type",number:3,type:9,label:1},{name:"options",number:4,type:11,label:1,typeName:".google.protobuf.MethodOptions"},{name:"client_streaming",number:5,type:8,label:1,defaultValue:"false"},{name:"server_streaming",number:6,type:8,label:1,defaultValue:"false"}]},{name:"FileOptions",field:[{name:"java_package",number:1,type:9,label:1},{name:"java_outer_classname",number:8,type:9,label:1},{name:"java_multiple_files",number:10,type:8,label:1,defaultValue:"false"},{name:"java_generate_equals_and_hash",number:20,type:8,label:1,options:{deprecated:!0}},{name:"java_string_check_utf8",number:27,type:8,label:1,defaultValue:"false"},{name:"optimize_for",number:9,type:14,label:1,typeName:".google.protobuf.FileOptions.OptimizeMode",defaultValue:"SPEED"},{name:"go_package",number:11,type:9,label:1},{name:"cc_generic_services",number:16,type:8,label:1,defaultValue:"false"},{name:"java_generic_services",number:17,type:8,label:1,defaultValue:"false"},{name:"py_generic_services",number:18,type:8,label:1,defaultValue:"false"},{name:"deprecated",number:23,type:8,label:1,defaultValue:"false"},{name:"cc_enable_arenas",number:31,type:8,label:1,defaultValue:"true"},{name:"objc_class_prefix",number:36,type:9,label:1},{name:"csharp_namespace",number:37,type:9,label:1},{name:"swift_prefix",number:39,type:9,label:1},{name:"php_class_prefix",number:40,type:9,label:1},{name:"php_namespace",number:41,type:9,label:1},{name:"php_metadata_namespace",number:44,type:9,label:1},{name:"ruby_package",number:45,type:9,label:1},{name:"features",number:50,type:11,label:1,typeName:".google.protobuf.FeatureSet"},{name:"uninterpreted_option",number:999,type:11,label:3,typeName:".google.protobuf.UninterpretedOption"}],enumType:[{name:"OptimizeMode",value:[{name:"SPEED",number:1},{name:"CODE_SIZE",number:2},{name:"LITE_RUNTIME",number:3}]}],extensionRange:[{start:1e3,end:536870912}]},{name:"MessageOptions",field:[{name:"message_set_wire_format",number:1,type:8,label:1,defaultValue:"false"},{name:"no_standard_descriptor_accessor",number:2,type:8,label:1,defaultValue:"false"},{name:"deprecated",number:3,type:8,label:1,defaultValue:"false"},{name:"map_entry",number:7,type:8,label:1},{name:"deprecated_legacy_json_field_conflicts",number:11,type:8,label:1,options:{deprecated:!0}},{name:"features",number:12,type:11,label:1,typeName:".google.protobuf.FeatureSet"},{name:"uninterpreted_option",number:999,type:11,label:3,typeName:".google.protobuf.UninterpretedOption"}],extensionRange:[{start:1e3,end:536870912}]},{name:"FieldOptions",field:[{name:"ctype",number:1,type:14,label:1,typeName:".google.protobuf.FieldOptions.CType",defaultValue:"STRING"},{name:"packed",number:2,type:8,label:1},{name:"jstype",number:6,type:14,label:1,typeName:".google.protobuf.FieldOptions.JSType",defaultValue:"JS_NORMAL"},{name:"lazy",number:5,type:8,label:1,defaultValue:"false"},{name:"unverified_lazy",number:15,type:8,label:1,defaultValue:"false"},{name:"deprecated",number:3,type:8,label:1,defaultValue:"false"},{name:"weak",number:10,type:8,label:1,defaultValue:"false",options:{deprecated:!0}},{name:"debug_redact",number:16,type:8,label:1,defaultValue:"false"},{name:"retention",number:17,type:14,label:1,typeName:".google.protobuf.FieldOptions.OptionRetention"},{name:"targets",number:19,type:14,label:3,typeName:".google.protobuf.FieldOptions.OptionTargetType"},{name:"edition_defaults",number:20,type:11,label:3,typeName:".google.protobuf.FieldOptions.EditionDefault"},{name:"features",number:21,type:11,label:1,typeName:".google.protobuf.FeatureSet"},{name:"feature_support",number:22,type:11,label:1,typeName:".google.protobuf.FieldOptions.FeatureSupport"},{name:"uninterpreted_option",number:999,type:11,label:3,typeName:".google.protobuf.UninterpretedOption"}],nestedType:[{name:"EditionDefault",field:[{name:"edition",number:3,type:14,label:1,typeName:".google.protobuf.Edition"},{name:"value",number:2,type:9,label:1}]},{name:"FeatureSupport",field:[{name:"edition_introduced",number:1,type:14,label:1,typeName:".google.protobuf.Edition"},{name:"edition_deprecated",number:2,type:14,label:1,typeName:".google.protobuf.Edition"},{name:"deprecation_warning",number:3,type:9,label:1},{name:"edition_removed",number:4,type:14,label:1,typeName:".google.protobuf.Edition"}]}],enumType:[{name:"CType",value:[{name:"STRING",number:0},{name:"CORD",number:1},{name:"STRING_PIECE",number:2}]},{name:"JSType",value:[{name:"JS_NORMAL",number:0},{name:"JS_STRING",number:1},{name:"JS_NUMBER",number:2}]},{name:"OptionRetention",value:[{name:"RETENTION_UNKNOWN",number:0},{name:"RETENTION_RUNTIME",number:1},{name:"RETENTION_SOURCE",number:2}]},{name:"OptionTargetType",value:[{name:"TARGET_TYPE_UNKNOWN",number:0},{name:"TARGET_TYPE_FILE",number:1},{name:"TARGET_TYPE_EXTENSION_RANGE",number:2},{name:"TARGET_TYPE_MESSAGE",number:3},{name:"TARGET_TYPE_FIELD",number:4},{name:"TARGET_TYPE_ONEOF",number:5},{name:"TARGET_TYPE_ENUM",number:6},{name:"TARGET_TYPE_ENUM_ENTRY",number:7},{name:"TARGET_TYPE_SERVICE",number:8},{name:"TARGET_TYPE_METHOD",number:9}]}],extensionRange:[{start:1e3,end:536870912}]},{name:"OneofOptions",field:[{name:"features",number:1,type:11,label:1,typeName:".google.protobuf.FeatureSet"},{name:"uninterpreted_option",number:999,type:11,label:3,typeName:".google.protobuf.UninterpretedOption"}],extensionRange:[{start:1e3,end:536870912}]},{name:"EnumOptions",field:[{name:"allow_alias",number:2,type:8,label:1},{name:"deprecated",number:3,type:8,label:1,defaultValue:"false"},{name:"deprecated_legacy_json_field_conflicts",number:6,type:8,label:1,options:{deprecated:!0}},{name:"features",number:7,type:11,label:1,typeName:".google.protobuf.FeatureSet"},{name:"uninterpreted_option",number:999,type:11,label:3,typeName:".google.protobuf.UninterpretedOption"}],extensionRange:[{start:1e3,end:536870912}]},{name:"EnumValueOptions",field:[{name:"deprecated",number:1,type:8,label:1,defaultValue:"false"},{name:"features",number:2,type:11,label:1,typeName:".google.protobuf.FeatureSet"},{name:"debug_redact",number:3,type:8,label:1,defaultValue:"false"},{name:"feature_support",number:4,type:11,label:1,typeName:".google.protobuf.FieldOptions.FeatureSupport"},{name:"uninterpreted_option",number:999,type:11,label:3,typeName:".google.protobuf.UninterpretedOption"}],extensionRange:[{start:1e3,end:536870912}]},{name:"ServiceOptions",field:[{name:"features",number:34,type:11,label:1,typeName:".google.protobuf.FeatureSet"},{name:"deprecated",number:33,type:8,label:1,defaultValue:"false"},{name:"uninterpreted_option",number:999,type:11,label:3,typeName:".google.protobuf.UninterpretedOption"}],extensionRange:[{start:1e3,end:536870912}]},{name:"MethodOptions",field:[{name:"deprecated",number:33,type:8,label:1,defaultValue:"false"},{name:"idempotency_level",number:34,type:14,label:1,typeName:".google.protobuf.MethodOptions.IdempotencyLevel",defaultValue:"IDEMPOTENCY_UNKNOWN"},{name:"features",number:35,type:11,label:1,typeName:".google.protobuf.FeatureSet"},{name:"uninterpreted_option",number:999,type:11,label:3,typeName:".google.protobuf.UninterpretedOption"}],enumType:[{name:"IdempotencyLevel",value:[{name:"IDEMPOTENCY_UNKNOWN",number:0},{name:"NO_SIDE_EFFECTS",number:1},{name:"IDEMPOTENT",number:2}]}],extensionRange:[{start:1e3,end:536870912}]},{name:"UninterpretedOption",field:[{name:"name",number:2,type:11,label:3,typeName:".google.protobuf.UninterpretedOption.NamePart"},{name:"identifier_value",number:3,type:9,label:1},{name:"positive_int_value",number:4,type:4,label:1},{name:"negative_int_value",number:5,type:3,label:1},{name:"double_value",number:6,type:1,label:1},{name:"string_value",number:7,type:12,label:1},{name:"aggregate_value",number:8,type:9,label:1}],nestedType:[{name:"NamePart",field:[{name:"name_part",number:1,type:9,label:2},{name:"is_extension",number:2,type:8,label:2}]}]},{name:"FeatureSet",field:[{name:"field_presence",number:1,type:14,label:1,typeName:".google.protobuf.FeatureSet.FieldPresence",options:{retention:1,targets:[4,1],editionDefaults:[{value:"EXPLICIT",edition:900},{value:"IMPLICIT",edition:999},{value:"EXPLICIT",edition:1e3}]}},{name:"enum_type",number:2,type:14,label:1,typeName:".google.protobuf.FeatureSet.EnumType",options:{retention:1,targets:[6,1],editionDefaults:[{value:"CLOSED",edition:900},{value:"OPEN",edition:999}]}},{name:"repeated_field_encoding",number:3,type:14,label:1,typeName:".google.protobuf.FeatureSet.RepeatedFieldEncoding",options:{retention:1,targets:[4,1],editionDefaults:[{value:"EXPANDED",edition:900},{value:"PACKED",edition:999}]}},{name:"utf8_validation",number:4,type:14,label:1,typeName:".google.protobuf.FeatureSet.Utf8Validation",options:{retention:1,targets:[4,1],editionDefaults:[{value:"NONE",edition:900},{value:"VERIFY",edition:999}]}},{name:"message_encoding",number:5,type:14,label:1,typeName:".google.protobuf.FeatureSet.MessageEncoding",options:{retention:1,targets:[4,1],editionDefaults:[{value:"LENGTH_PREFIXED",edition:900}]}},{name:"json_format",number:6,type:14,label:1,typeName:".google.protobuf.FeatureSet.JsonFormat",options:{retention:1,targets:[3,6,1],editionDefaults:[{value:"LEGACY_BEST_EFFORT",edition:900},{value:"ALLOW",edition:999}]}},{name:"enforce_naming_style",number:7,type:14,label:1,typeName:".google.protobuf.FeatureSet.EnforceNamingStyle",options:{retention:2,targets:[1,2,3,4,5,6,7,8,9],editionDefaults:[{value:"STYLE_LEGACY",edition:900},{value:"STYLE2024",edition:1001}]}},{name:"default_symbol_visibility",number:8,type:14,label:1,typeName:".google.protobuf.FeatureSet.VisibilityFeature.DefaultSymbolVisibility",options:{retention:2,targets:[1],editionDefaults:[{value:"EXPORT_ALL",edition:900},{value:"EXPORT_TOP_LEVEL",edition:1001}]}}],nestedType:[{name:"VisibilityFeature",enumType:[{name:"DefaultSymbolVisibility",value:[{name:"DEFAULT_SYMBOL_VISIBILITY_UNKNOWN",number:0},{name:"EXPORT_ALL",number:1},{name:"EXPORT_TOP_LEVEL",number:2},{name:"LOCAL_ALL",number:3},{name:"STRICT",number:4}]}]}],enumType:[{name:"FieldPresence",value:[{name:"FIELD_PRESENCE_UNKNOWN",number:0},{name:"EXPLICIT",number:1},{name:"IMPLICIT",number:2},{name:"LEGACY_REQUIRED",number:3}]},{name:"EnumType",value:[{name:"ENUM_TYPE_UNKNOWN",number:0},{name:"OPEN",number:1},{name:"CLOSED",number:2}]},{name:"RepeatedFieldEncoding",value:[{name:"REPEATED_FIELD_ENCODING_UNKNOWN",number:0},{name:"PACKED",number:1},{name:"EXPANDED",number:2}]},{name:"Utf8Validation",value:[{name:"UTF8_VALIDATION_UNKNOWN",number:0},{name:"VERIFY",number:2},{name:"NONE",number:3}]},{name:"MessageEncoding",value:[{name:"MESSAGE_ENCODING_UNKNOWN",number:0},{name:"LENGTH_PREFIXED",number:1},{name:"DELIMITED",number:2}]},{name:"JsonFormat",value:[{name:"JSON_FORMAT_UNKNOWN",number:0},{name:"ALLOW",number:1},{name:"LEGACY_BEST_EFFORT",number:2}]},{name:"EnforceNamingStyle",value:[{name:"ENFORCE_NAMING_STYLE_UNKNOWN",number:0},{name:"STYLE2024",number:1},{name:"STYLE_LEGACY",number:2}]}],extensionRange:[{start:1e3,end:9995},{start:9995,end:1e4},{start:1e4,end:10001}]},{name:"FeatureSetDefaults",field:[{name:"defaults",number:1,type:11,label:3,typeName:".google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault"},{name:"minimum_edition",number:4,type:14,label:1,typeName:".google.protobuf.Edition"},{name:"maximum_edition",number:5,type:14,label:1,typeName:".google.protobuf.Edition"}],nestedType:[{name:"FeatureSetEditionDefault",field:[{name:"edition",number:3,type:14,label:1,typeName:".google.protobuf.Edition"},{name:"overridable_features",number:4,type:11,label:1,typeName:".google.protobuf.FeatureSet"},{name:"fixed_features",number:5,type:11,label:1,typeName:".google.protobuf.FeatureSet"}]}]},{name:"SourceCodeInfo",field:[{name:"location",number:1,type:11,label:3,typeName:".google.protobuf.SourceCodeInfo.Location"}],nestedType:[{name:"Location",field:[{name:"path",number:1,type:5,label:3,options:{packed:!0}},{name:"span",number:2,type:5,label:3,options:{packed:!0}},{name:"leading_comments",number:3,type:9,label:1},{name:"trailing_comments",number:4,type:9,label:1},{name:"leading_detached_comments",number:6,type:9,label:3}]}],extensionRange:[{start:536e6,end:536000001}]},{name:"GeneratedCodeInfo",field:[{name:"annotation",number:1,type:11,label:3,typeName:".google.protobuf.GeneratedCodeInfo.Annotation"}],nestedType:[{name:"Annotation",field:[{name:"path",number:1,type:5,label:3,options:{packed:!0}},{name:"source_file",number:2,type:9,label:1},{name:"begin",number:3,type:5,label:1},{name:"end",number:4,type:5,label:1},{name:"semantic",number:5,type:14,label:1,typeName:".google.protobuf.GeneratedCodeInfo.Annotation.Semantic"}],enumType:[{name:"Semantic",value:[{name:"NONE",number:0},{name:"SET",number:1},{name:"ALIAS",number:2}]}]}]}],enumType:[{name:"Edition",value:[{name:"EDITION_UNKNOWN",number:0},{name:"EDITION_LEGACY",number:900},{name:"EDITION_PROTO2",number:998},{name:"EDITION_PROTO3",number:999},{name:"EDITION_2023",number:1e3},{name:"EDITION_2024",number:1001},{name:"EDITION_UNSTABLE",number:9999},{name:"EDITION_1_TEST_ONLY",number:1},{name:"EDITION_2_TEST_ONLY",number:2},{name:"EDITION_99997_TEST_ONLY",number:99997},{name:"EDITION_99998_TEST_ONLY",number:99998},{name:"EDITION_99999_TEST_ONLY",number:99999},{name:"EDITION_MAX",number:2147483647}]},{name:"SymbolVisibility",value:[{name:"VISIBILITY_UNSET",number:0},{name:"VISIBILITY_LOCAL",number:1},{name:"VISIBILITY_EXPORT",number:2}]}]});var ao=K(de,1);var Mr;(function(e){e[e.DECLARATION=0]="DECLARATION",e[e.UNVERIFIED=1]="UNVERIFIED"})(Mr||(Mr={}));var Lr;(function(e){e[e.DOUBLE=1]="DOUBLE",e[e.FLOAT=2]="FLOAT",e[e.INT64=3]="INT64",e[e.UINT64=4]="UINT64",e[e.INT32=5]="INT32",e[e.FIXED64=6]="FIXED64",e[e.FIXED32=7]="FIXED32",e[e.BOOL=8]="BOOL",e[e.STRING=9]="STRING",e[e.GROUP=10]="GROUP",e[e.MESSAGE=11]="MESSAGE",e[e.BYTES=12]="BYTES",e[e.UINT32=13]="UINT32",e[e.ENUM=14]="ENUM",e[e.SFIXED32=15]="SFIXED32",e[e.SFIXED64=16]="SFIXED64",e[e.SINT32=17]="SINT32",e[e.SINT64=18]="SINT64"})(Lr||(Lr={}));var zr;(function(e){e[e.OPTIONAL=1]="OPTIONAL",e[e.REPEATED=3]="REPEATED",e[e.REQUIRED=2]="REQUIRED"})(zr||(zr={}));var Kr;(function(e){e[e.SPEED=1]="SPEED",e[e.CODE_SIZE=2]="CODE_SIZE",e[e.LITE_RUNTIME=3]="LITE_RUNTIME"})(Kr||(Kr={}));var Ur;(function(e){e[e.STRING=0]="STRING",e[e.CORD=1]="CORD",e[e.STRING_PIECE=2]="STRING_PIECE"})(Ur||(Ur={}));var Tr;(function(e){e[e.JS_NORMAL=0]="JS_NORMAL",e[e.JS_STRING=1]="JS_STRING",e[e.JS_NUMBER=2]="JS_NUMBER"})(Tr||(Tr={}));var Dr;(function(e){e[e.RETENTION_UNKNOWN=0]="RETENTION_UNKNOWN",e[e.RETENTION_RUNTIME=1]="RETENTION_RUNTIME",e[e.RETENTION_SOURCE=2]="RETENTION_SOURCE"})(Dr||(Dr={}));var Qr;(function(e){e[e.TARGET_TYPE_UNKNOWN=0]="TARGET_TYPE_UNKNOWN",e[e.TARGET_TYPE_FILE=1]="TARGET_TYPE_FILE",e[e.TARGET_TYPE_EXTENSION_RANGE=2]="TARGET_TYPE_EXTENSION_RANGE",e[e.TARGET_TYPE_MESSAGE=3]="TARGET_TYPE_MESSAGE",e[e.TARGET_TYPE_FIELD=4]="TARGET_TYPE_FIELD",e[e.TARGET_TYPE_ONEOF=5]="TARGET_TYPE_ONEOF",e[e.TARGET_TYPE_ENUM=6]="TARGET_TYPE_ENUM",e[e.TARGET_TYPE_ENUM_ENTRY=7]="TARGET_TYPE_ENUM_ENTRY",e[e.TARGET_TYPE_SERVICE=8]="TARGET_TYPE_SERVICE",e[e.TARGET_TYPE_METHOD=9]="TARGET_TYPE_METHOD"})(Qr||(Qr={}));var mt;(function(e){e[e.IDEMPOTENCY_UNKNOWN=0]="IDEMPOTENCY_UNKNOWN",e[e.NO_SIDE_EFFECTS=1]="NO_SIDE_EFFECTS",e[e.IDEMPOTENT=2]="IDEMPOTENT"})(mt||(mt={}));var _r;(function(e){e[e.DEFAULT_SYMBOL_VISIBILITY_UNKNOWN=0]="DEFAULT_SYMBOL_VISIBILITY_UNKNOWN",e[e.EXPORT_ALL=1]="EXPORT_ALL",e[e.EXPORT_TOP_LEVEL=2]="EXPORT_TOP_LEVEL",e[e.LOCAL_ALL=3]="LOCAL_ALL",e[e.STRICT=4]="STRICT"})(_r||(_r={}));var Or;(function(e){e[e.FIELD_PRESENCE_UNKNOWN=0]="FIELD_PRESENCE_UNKNOWN",e[e.EXPLICIT=1]="EXPLICIT",e[e.IMPLICIT=2]="IMPLICIT",e[e.LEGACY_REQUIRED=3]="LEGACY_REQUIRED"})(Or||(Or={}));var Pr;(function(e){e[e.ENUM_TYPE_UNKNOWN=0]="ENUM_TYPE_UNKNOWN",e[e.OPEN=1]="OPEN",e[e.CLOSED=2]="CLOSED"})(Pr||(Pr={}));var jr;(function(e){e[e.REPEATED_FIELD_ENCODING_UNKNOWN=0]="REPEATED_FIELD_ENCODING_UNKNOWN",e[e.PACKED=1]="PACKED",e[e.EXPANDED=2]="EXPANDED"})(jr||(jr={}));var $r;(function(e){e[e.UTF8_VALIDATION_UNKNOWN=0]="UTF8_VALIDATION_UNKNOWN",e[e.VERIFY=2]="VERIFY",e[e.NONE=3]="NONE"})($r||($r={}));var qr;(function(e){e[e.MESSAGE_ENCODING_UNKNOWN=0]="MESSAGE_ENCODING_UNKNOWN",e[e.LENGTH_PREFIXED=1]="LENGTH_PREFIXED",e[e.DELIMITED=2]="DELIMITED"})(qr||(qr={}));var eo;(function(e){e[e.JSON_FORMAT_UNKNOWN=0]="JSON_FORMAT_UNKNOWN",e[e.ALLOW=1]="ALLOW",e[e.LEGACY_BEST_EFFORT=2]="LEGACY_BEST_EFFORT"})(eo||(eo={}));var to;(function(e){e[e.ENFORCE_NAMING_STYLE_UNKNOWN=0]="ENFORCE_NAMING_STYLE_UNKNOWN",e[e.STYLE2024=1]="STYLE2024",e[e.STYLE_LEGACY=2]="STYLE_LEGACY"})(to||(to={}));var no;(function(e){e[e.NONE=0]="NONE",e[e.SET=1]="SET",e[e.ALIAS=2]="ALIAS"})(no||(no={}));var ro;(function(e){e[e.EDITION_UNKNOWN=0]="EDITION_UNKNOWN",e[e.EDITION_LEGACY=900]="EDITION_LEGACY",e[e.EDITION_PROTO2=998]="EDITION_PROTO2",e[e.EDITION_PROTO3=999]="EDITION_PROTO3",e[e.EDITION_2023=1e3]="EDITION_2023",e[e.EDITION_2024=1001]="EDITION_2024",e[e.EDITION_UNSTABLE=9999]="EDITION_UNSTABLE",e[e.EDITION_1_TEST_ONLY=1]="EDITION_1_TEST_ONLY",e[e.EDITION_2_TEST_ONLY=2]="EDITION_2_TEST_ONLY",e[e.EDITION_99997_TEST_ONLY=99997]="EDITION_99997_TEST_ONLY",e[e.EDITION_99998_TEST_ONLY=99998]="EDITION_99998_TEST_ONLY",e[e.EDITION_99999_TEST_ONLY=99999]="EDITION_99999_TEST_ONLY",e[e.EDITION_MAX=2147483647]="EDITION_MAX"})(ro||(ro={}));var oo;(function(e){e[e.VISIBILITY_UNSET=0]="VISIBILITY_UNSET",e[e.VISIBILITY_LOCAL=1]="VISIBILITY_LOCAL",e[e.VISIBILITY_EXPORT=2]="VISIBILITY_EXPORT"})(oo||(oo={}));var io={readUnknownFields:!0};function Zi(e){return e?Object.assign(Object.assign({},io),e):io}function ae(e,t,n){let r=U(e,void 0,!1);return so(r,new le(t),Zi(n),!1,t.byteLength),r.message}function so(e,t,n,r,o){var a;let i=r?t.len:t.pos+o,s,m,u=(a=e.getUnknown())!==null&&a!==void 0?a:[];for(;t.pos<i&&([s,m]=t.tag(),!(r&&m==Y.EndGroup));){let I=e.findNumber(s);if(!I){let f=t.skip(m,s);n.readUnknownFields&&u.push({no:s,wireType:m,data:f});continue}mn(e,t,I,m,n)}if(r&&(m!=Y.EndGroup||s!==o))throw new Error("invalid end group tag");u.length>0&&e.setUnknown(u)}function mn(e,t,n,r,o){var a;switch(n.fieldKind){case"scalar":e.set(n,ye(t,n.scalar));break;case"enum":let i=ye(t,d.INT32);if(n.enum.open)e.set(n,i);else if(n.enum.values.some(m=>m.number===i))e.set(n,i);else if(o.readUnknownFields){let m=[];Se(i,m);let u=(a=e.getUnknown())!==null&&a!==void 0?a:[];u.push({no:n.number,wireType:r,data:new Uint8Array(m)}),e.setUnknown(u)}break;case"message":e.set(n,un(t,o,n,e.get(n)));break;case"list":Ci(t,r,e.get(n),o);break;case"map":Ai(t,e.get(n),o);break}}function Ai(e,t,n){let r=t.field(),o,a,i=e.uint32(),s=e.pos+i;for(;e.pos<s;){let[m]=e.tag();switch(m){case 1:o=ye(e,r.mapKey);break;case 2:switch(r.mapKind){case"scalar":a=ye(e,r.scalar);break;case"enum":a=e.int32();break;case"message":a=un(e,n,r);break}break}}if(o===void 0&&(o=O(r.mapKey,!1)),a===void 0)switch(r.mapKind){case"scalar":a=O(r.scalar,!1);break;case"enum":a=r.enum.values[0].number;break;case"message":a=U(r.message,void 0,!1);break}t.set(o,a)}function Ci(e,t,n,r){var o;let a=n.field();if(a.listKind==="message"){n.add(un(e,r,a));return}let i=(o=a.scalar)!==null&&o!==void 0?o:d.INT32;if(!(t==Y.LengthDelimited&&i!=d.STRING&&i!=d.BYTES)){n.add(ye(e,i));return}let m=e.uint32()+e.pos;for(;e.pos<m;)n.add(ye(e,i))}function un(e,t,n,r){let o=n.delimitedEncoding,a=r??U(n.message,void 0,!1);return so(a,e,t,o,o?n.number:e.uint32()),a}function ye(e,t){switch(t){case d.STRING:return e.string();case d.BOOL:return e.bool();case d.DOUBLE:return e.double();case d.FLOAT:return e.float();case d.INT32:return e.int32();case d.INT64:return e.int64();case d.UINT64:return e.uint64();case d.FIXED64:return e.fixed64();case d.BYTES:return e.bytes();case d.FIXED32:return e.fixed32();case d.SFIXED32:return e.sfixed32();case d.SFIXED64:return e.sfixed64();case d.SINT64:return e.sint64();case d.UINT32:return e.uint32();case d.SINT32:return e.sint32()}}function w(e,t){var n;let r=ae(ao,he(e));return r.messageType.forEach(we),r.dependency=(n=t?.map(a=>a.proto.name))!==null&&n!==void 0?n:[],lt(r,a=>t?.find(i=>i.proto.name===a)).getFile(r.name)}var ut=w("Ch9nb29nbGUvcHJvdG9idWYvdGltZXN0YW1wLnByb3RvEg9nb29nbGUucHJvdG9idWYiKwoJVGltZXN0YW1wEg8KB3NlY29uZHMYASABKAMSDQoFbmFub3MYAiABKAVChQEKE2NvbS5nb29nbGUucHJvdG9idWZCDlRpbWVzdGFtcFByb3RvUAFaMmdvb2dsZS5nb2xhbmcub3JnL3Byb3RvYnVmL3R5cGVzL2tub3duL3RpbWVzdGFtcHBi+AEBogIDR1BCqgIeR29vZ2xlLlByb3RvYnVmLldlbGxLbm93blR5cGVzYgZwcm90bzM");function Q(e){return new Date(Vi(e))}function Vi(e){return Number(e.seconds)*1e3+Math.round(e.nanos/1e6)}var gt=w("Ch5nb29nbGUvcHJvdG9idWYvZHVyYXRpb24ucHJvdG8SD2dvb2dsZS5wcm90b2J1ZiIqCghEdXJhdGlvbhIPCgdzZWNvbmRzGAEgASgDEg0KBW5hbm9zGAIgASgFQoMBChNjb20uZ29vZ2xlLnByb3RvYnVmQg1EdXJhdGlvblByb3RvUAFaMWdvb2dsZS5nb2xhbmcub3JnL3Byb3RvYnVmL3R5cGVzL2tub3duL2R1cmF0aW9ucGL4AQGiAgNHUEKqAh5Hb29nbGUuUHJvdG9idWYuV2VsbEtub3duVHlwZXNiBnByb3RvMw");var xi=w("Chlnb29nbGUvcHJvdG9idWYvYW55LnByb3RvEg9nb29nbGUucHJvdG9idWYiJgoDQW55EhAKCHR5cGVfdXJsGAEgASgJEg0KBXZhbHVlGAIgASgMQnYKE2NvbS5nb29nbGUucHJvdG9idWZCCEFueVByb3RvUAFaLGdvb2dsZS5nb2xhbmcub3JnL3Byb3RvYnVmL3R5cGVzL2tub3duL2FueXBiogIDR1BCqgIeR29vZ2xlLlByb3RvYnVmLldlbGxLbm93blR5cGVzYgZwcm90bzM"),co=K(xi,0);var Xi=3,lo={writeUnknownFields:!0};function Si(e){return e?Object.assign(Object.assign({},lo),e):lo}function Ne(e,t,n){return pt(new ge,Si(n),U(e,t)).finish()}function pt(e,t,n){var r;for(let o of n.sortedFields){if(!n.isSet(o)){if(o.presence==Xi)throw new Error(`cannot encode ${o} to binary: required field not set`);continue}gn(e,t,n,o)}if(t.writeUnknownFields)for(let{no:o,wireType:a,data:i}of(r=n.getUnknown())!==null&&r!==void 0?r:[])e.tag(o,a).raw(i);return e}function gn(e,t,n,r){var o;switch(r.fieldKind){case"scalar":case"enum":ht(e,n.desc.typeName,r.name,(o=r.scalar)!==null&&o!==void 0?o:d.INT32,r.number,n.get(r));break;case"list":Bi(e,t,r,n.get(r));break;case"message":mo(e,t,r,n.get(r));break;case"map":for(let[a,i]of n.get(r))Wi(e,t,r,a,i);break}}function ht(e,t,n,r,o,a){uo(e.tag(o,Ei(r)),t,n,r,a)}function mo(e,t,n,r){n.delimitedEncoding?pt(e.tag(n.number,Y.StartGroup),t,r).tag(n.number,Y.EndGroup):pt(e.tag(n.number,Y.LengthDelimited).fork(),t,r).join()}function Bi(e,t,n,r){var o;if(n.listKind=="message"){for(let i of r)mo(e,t,n,i);return}let a=(o=n.scalar)!==null&&o!==void 0?o:d.INT32;if(n.packed){if(!r.size)return;e.tag(n.number,Y.LengthDelimited).fork();for(let i of r)uo(e,n.parent.typeName,n.name,a,i);e.join();return}for(let i of r)ht(e,n.parent.typeName,n.name,a,n.number,i)}function Wi(e,t,n,r,o){var a;switch(e.tag(n.number,Y.LengthDelimited).fork(),ht(e,n.parent.typeName,n.name,n.mapKey,1,r),n.mapKind){case"scalar":case"enum":ht(e,n.parent.typeName,n.name,(a=n.scalar)!==null&&a!==void 0?a:d.INT32,2,o);break;case"message":pt(e.tag(2,Y.LengthDelimited).fork(),t,o).join();break}e.join()}function uo(e,t,n,r,o){try{switch(r){case d.STRING:e.string(o);break;case d.BOOL:e.bool(o);break;case d.DOUBLE:e.double(o);break;case d.FLOAT:e.float(o);break;case d.INT32:e.int32(o);break;case d.INT64:e.int64(o);break;case d.UINT64:e.uint64(o);break;case d.FIXED64:e.fixed64(o);break;case d.BYTES:e.bytes(o);break;case d.FIXED32:e.fixed32(o);break;case d.SFIXED32:e.sfixed32(o);break;case d.SFIXED64:e.sfixed64(o);break;case d.SINT64:e.sint64(o);break;case d.UINT32:e.uint32(o);break;case d.SINT32:e.sint32(o);break}}catch(a){throw a instanceof Error?new Error(`cannot encode field ${t}.${n} to binary: ${a.message}`):a}}function Ei(e){switch(e){case d.BYTES:case d.STRING:return Y.LengthDelimited;case d.DOUBLE:case d.FIXED64:case d.SFIXED64:return Y.Bit64;case d.FIXED32:case d.SFIXED32:case d.FLOAT:return Y.Bit32;default:return Y.Varint}}function go(e,t,n){let r=!1;return n||(n=k(co),r=!0),n.value=Ne(e,t),n.typeUrl=Ri(t.$typeName),r?n:void 0}function vi(e,t){if(e.typeUrl==="")return!1;let n=typeof t=="string"?t:t.typeName,r=ho(e.typeUrl);return n===r}function po(e,t){if(e.typeUrl==="")return;let n=t.kind=="message"?t:t.getMessage(ho(e.typeUrl));if(!(!n||!vi(e,n)))return ae(n,e.value)}function Ri(e){return`type.googleapis.com/${e}`}function ho(e){let t=e.lastIndexOf("/"),n=t>=0?e.substring(t+1):e;if(!n.length)throw new Error(`invalid type url: ${e}`);return n}var bo=w("CiBnb29nbGUvcHJvdG9idWYvZmllbGRfbWFzay5wcm90bxIPZ29vZ2xlLnByb3RvYnVmIhoKCUZpZWxkTWFzaxINCgVwYXRocxgBIAMoCUKFAQoTY29tLmdvb2dsZS5wcm90b2J1ZkIORmllbGRNYXNrUHJvdG9QAVoyZ29vZ2xlLmdvbGFuZy5vcmcvcHJvdG9idWYvdHlwZXMva25vd24vZmllbGRtYXNrcGL4AQGiAgNHUEKqAh5Hb29nbGUuUHJvdG9idWYuV2VsbEtub3duVHlwZXNiBnByb3RvMw");var pn=w("Chxnb29nbGUvcHJvdG9idWYvc3RydWN0LnByb3RvEg9nb29nbGUucHJvdG9idWYihAEKBlN0cnVjdBIzCgZmaWVsZHMYASADKAsyIy5nb29nbGUucHJvdG9idWYuU3RydWN0LkZpZWxkc0VudHJ5GkUKC0ZpZWxkc0VudHJ5EgsKA2tleRgBIAEoCRIlCgV2YWx1ZRgCIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZToCOAEi6gEKBVZhbHVlEjAKCm51bGxfdmFsdWUYASABKA4yGi5nb29nbGUucHJvdG9idWYuTnVsbFZhbHVlSAASFgoMbnVtYmVyX3ZhbHVlGAIgASgBSAASFgoMc3RyaW5nX3ZhbHVlGAMgASgJSAASFAoKYm9vbF92YWx1ZRgEIAEoCEgAEi8KDHN0cnVjdF92YWx1ZRgFIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIABIwCgpsaXN0X3ZhbHVlGAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLkxpc3RWYWx1ZUgAQgYKBGtpbmQiMwoJTGlzdFZhbHVlEiYKBnZhbHVlcxgBIAMoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZSobCglOdWxsVmFsdWUSDgoKTlVMTF9WQUxVRRAAQn8KE2NvbS5nb29nbGUucHJvdG9idWZCC1N0cnVjdFByb3RvUAFaL2dvb2dsZS5nb2xhbmcub3JnL3Byb3RvYnVmL3R5cGVzL2tub3duL3N0cnVjdHBi+AEBogIDR1BCqgIeR29vZ2xlLlByb3RvYnVmLldlbGxLbm93blR5cGVzYgZwcm90bzM"),fo=K(pn,0),hn=K(pn,1),yo=K(pn,2),bt;(function(e){e[e.NULL_VALUE=0]="NULL_VALUE"})(bt||(bt={}));function Io(e,t){Zo(t,e);let n=wi(e.$unknown,t),[r,o,a]=Ie(t);for(let i of n)mn(r,new le(i.data),o,i.wireType,{readUnknownFields:!0});return a()}function Go(e,t,n){var r;Zo(t,e);let o=((r=e.$unknown)!==null&&r!==void 0?r:[]).filter(u=>u.no!==t.number),[a,i]=Ie(t,n),s=new ge;gn(s,{writeUnknownFields:!0},a,i);let m=new le(s.finish());for(;m.pos<m.len;){let[u,I]=m.tag(),f=m.skip(I,u);o.push({no:u,wireType:I,data:f})}e.$unknown=o}function wi(e,t){if(e===void 0)return[];if(t.fieldKind==="enum"||t.fieldKind==="scalar"){for(let n=e.length-1;n>=0;--n)if(e[n].no==t.number)return[e[n]];return[]}return e.filter(n=>n.no===t.number)}function Ie(e,t){let n=e.typeName,r=Object.assign(Object.assign({},e),{kind:"field",parent:e.extendee,localName:n}),o=Object.assign(Object.assign({},e.extendee),{fields:[r],members:[r],oneofs:[]}),a=k(o,t!==void 0?{[n]:t}:void 0);return[U(o,a),r,()=>{let i=a[n];if(i===void 0){let s=e.message;return te(s)?O(s.fields[0].scalar,s.fields[0].longAsString):k(s)}return i}]}function Zo(e,t){if(e.extendee.typeName!=t.$typeName)throw new Error(`extension ${e.typeName} can only be applied to message ${e.extendee.typeName}`)}var ki=3,Yi=2,Ao={alwaysEmitImplicit:!1,enumAsInteger:!1,useProtoFieldName:!1};function Fi(e){return e?Object.assign(Object.assign({},Ao),e):Ao}function Ni(e,t,n){return He(U(e,t),Fi(n))}function Vo(e,t,n){var r;let o=Ni(e,t,n);return JSON.stringify(o,null,(r=n?.prettySpaces)!==null&&r!==void 0?r:0)}function Ge(e,t){var n;if(e.typeName=="google.protobuf.NullValue")return null;let r=(n=e.value[t])===null||n===void 0?void 0:n.name;if(r===void 0)throw new Error(`${t} is not a value in ${e}`);return r}function He(e,t){var n;let r=zi(e,t);if(r!==void 0)return r;let o={};for(let a of e.sortedFields){if(!e.isSet(a)){if(a.presence==ki)throw new Error(`cannot encode ${a} to JSON: required field not set`);if(!t.alwaysEmitImplicit||a.presence!==Yi)continue}let i=Co(a,e.get(a),t);i!==void 0&&(o[Li(a,t)]=i)}if(t.registry){let a=new Set;for(let{no:i}of(n=e.getUnknown())!==null&&n!==void 0?n:[])if(!a.has(i)){a.add(i);let s=t.registry.getExtensionFor(e.desc,i);if(!s)continue;let m=Io(e.message,s),[u,I]=Ie(s,m),f=Co(I,u.get(I),t);f!==void 0&&(o[s.jsonName]=f)}}return o}function Co(e,t,n){switch(e.fieldKind){case"scalar":return ft(e,t);case"message":return He(t,n);case"enum":return bn(e.enum,t,n.enumAsInteger);case"list":return Mi(t,n);case"map":return Hi(t,n)}}function Hi(e,t){let n=e.field(),r={};switch(n.mapKind){case"scalar":for(let[o,a]of e)r[o]=ft(n,a);break;case"message":for(let[o,a]of e)r[o]=He(a,t);break;case"enum":for(let[o,a]of e)r[o]=bn(n.enum,a,t.enumAsInteger);break}return t.alwaysEmitImplicit||e.size>0?r:void 0}function Mi(e,t){let n=e.field(),r=[];switch(n.listKind){case"scalar":for(let o of e)r.push(ft(n,o));break;case"enum":for(let o of e)r.push(bn(n.enum,o,t.enumAsInteger));break;case"message":for(let o of e)r.push(He(o,t));break}return t.alwaysEmitImplicit||r.length>0?r:void 0}function bn(e,t,n){var r;if(typeof t!="number")throw new Error(`cannot encode ${e} to JSON: expected number, got ${F(t)}`);if(e.typeName=="google.protobuf.NullValue")return null;if(n)return t;let o=e.value[t];return(r=o?.name)!==null&&r!==void 0?r:t}function ft(e,t){var n,r,o,a,i,s;switch(e.scalar){case d.INT32:case d.SFIXED32:case d.SINT32:case d.FIXED32:case d.UINT32:if(typeof t!="number")throw new Error(`cannot encode ${e} to JSON: ${(n=ne(e,t))===null||n===void 0?void 0:n.message}`);return t;case d.FLOAT:case d.DOUBLE:if(typeof t!="number")throw new Error(`cannot encode ${e} to JSON: ${(r=ne(e,t))===null||r===void 0?void 0:r.message}`);return Number.isNaN(t)?"NaN":t===Number.POSITIVE_INFINITY?"Infinity":t===Number.NEGATIVE_INFINITY?"-Infinity":t;case d.STRING:if(typeof t!="string")throw new Error(`cannot encode ${e} to JSON: ${(o=ne(e,t))===null||o===void 0?void 0:o.message}`);return t;case d.BOOL:if(typeof t!="boolean")throw new Error(`cannot encode ${e} to JSON: ${(a=ne(e,t))===null||a===void 0?void 0:a.message}`);return t;case d.UINT64:case d.FIXED64:case d.INT64:case d.SFIXED64:case d.SINT64:if(typeof t!="bigint"&&typeof t!="string")throw new Error(`cannot encode ${e} to JSON: ${(i=ne(e,t))===null||i===void 0?void 0:i.message}`);return t.toString();case d.BYTES:if(t instanceof Uint8Array)return Re(t);throw new Error(`cannot encode ${e} to JSON: ${(s=ne(e,t))===null||s===void 0?void 0:s.message}`)}}function Li(e,t){return t.useProtoFieldName?e.name:e.jsonName}function zi(e,t){if(e.desc.typeName.startsWith("google.protobuf."))switch(e.desc.typeName){case"google.protobuf.Any":return Ki(e.message,t);case"google.protobuf.Timestamp":return Di(e.message);case"google.protobuf.Duration":return Ui(e.message);case"google.protobuf.FieldMask":return Ti(e.message);case"google.protobuf.Struct":return xo(e.message);case"google.protobuf.Value":return fn(e.message);case"google.protobuf.ListValue":return Xo(e.message);default:if(te(e.desc)){let n=e.desc.fields[0];return ft(n,e.get(n))}return}}function Ki(e,t){if(e.typeUrl==="")return{};let{registry:n}=t,r,o;if(n&&(r=po(e,n),r&&(o=n.getMessage(r.$typeName))),!o||!r)throw new Error(`cannot encode message ${e.$typeName} to JSON: "${e.typeUrl}" is not in the type registry`);let a=He(U(o,r),t);return(o.typeName.startsWith("google.protobuf.")||a===null||Array.isArray(a)||typeof a!="object")&&(a={value:a}),a["@type"]=e.typeUrl,a}function Ui(e){let t=Number(e.seconds),n=e.nanos;if(t>315576e6||t<-315576e6)throw new Error(`cannot encode message ${e.$typeName} to JSON: value out of range`);if(t>0&&n<0||t<0&&n>0)throw new Error(`cannot encode message ${e.$typeName} to JSON: nanos sign must match seconds sign`);let r=e.seconds.toString();if(n!==0){let o=Math.abs(n).toString();o="0".repeat(9-o.length)+o,o.substring(3)==="000000"?o=o.substring(0,3):o.substring(6)==="000"&&(o=o.substring(0,6)),r+="."+o,n<0&&t==0&&(r="-"+r)}return r+"s"}function Ti(e){return e.paths.map(t=>{if(st(re(t))!==t)throw new Error(`cannot encode message ${e.$typeName} to JSON: lowerCamelCase of path name "${t}" is irreversible`);return re(t)}).join(",")}function xo(e){let t={};for(let[n,r]of Object.entries(e.fields))t[n]=fn(r);return t}function fn(e){switch(e.kind.case){case"nullValue":return null;case"numberValue":if(!Number.isFinite(e.kind.value))throw new Error(`${e.$typeName} cannot be NaN or Infinity`);return e.kind.value;case"boolValue":return e.kind.value;case"stringValue":return e.kind.value;case"structValue":return xo(e.kind.value);case"listValue":return Xo(e.kind.value);default:throw new Error(`${e.$typeName} must have a value`)}}function Xo(e){return e.values.map(fn)}function Di(e){let t=Number(e.seconds)*1e3;if(t<Date.parse("0001-01-01T00:00:00Z")||t>Date.parse("9999-12-31T23:59:59Z"))throw new Error(`cannot encode message ${e.$typeName} to JSON: must be from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59Z inclusive`);if(e.nanos<0)throw new Error(`cannot encode message ${e.$typeName} to JSON: nanos must not be negative`);if(e.nanos>999999999)throw new Error(`cannot encode message ${e.$typeName} to JSON: nanos must not be greater than 99999999`);let n="Z";if(e.nanos>0){let r=(e.nanos+1e9).toString().substring(1);r.substring(3)==="000000"?n="."+r.substring(0,3)+"Z":r.substring(6)==="000"?n="."+r.substring(0,6)+"Z":n="."+r+"Z"}return new Date(t).toISOString().replace(".000Z",n)}var So={ignoreUnknownFields:!1};function Qi(e){return e?Object.assign(Object.assign({},So),e):So}function Wo(e,t,n){return In(e,ts(t,e.typeName),n)}function In(e,t,n){let r=U(e);try{Me(r,t,Qi(n))}catch(o){throw mr(o)?new Error(`cannot decode ${o.field()} from JSON: ${o.message}`,{cause:o}):o}return r.message}var yn=new WeakMap;function _i(e,t){var n;if(!yn.has(e)){let r=new Map;for(let o of e.fields)r.set(o.name,o).set(o.jsonName,o);yn.set(e,r)}return(n=yn.get(e))===null||n===void 0?void 0:n.get(t)}function Me(e,t,n){var r;if(ns(e,t,n))return;if(t==null||Array.isArray(t)||typeof t!="object")throw new Error(`cannot decode ${e.desc} from JSON: ${F(t)}`);let o=new Map;for(let[a,i]of Object.entries(t)){let s=_i(e.desc,a);if(s){if(s.oneof){if(i===null&&s.fieldKind=="scalar")continue;let m=o.get(s.oneof);if(m!==void 0)throw new L(s.oneof,`oneof set multiple times by ${m.name} and ${s.name}`);o.set(s.oneof,s)}Bo(e,s,i,n)}else{let m;if(a.startsWith("[")&&a.endsWith("]")&&(m=(r=n.registry)===null||r===void 0?void 0:r.getExtension(a.substring(1,a.length-1)))&&m.extendee.typeName===e.desc.typeName){let[u,I,f]=Ie(m);Bo(u,I,i,n),Go(e.message,m,f())}if(!m&&!n.ignoreUnknownFields)throw new Error(`cannot decode ${e.desc} from JSON: key "${a}" is unknown`)}}}function Bo(e,t,n,r){switch(t.fieldKind){case"scalar":qi(e,t,n);break;case"enum":$i(e,t,n,r);break;case"message":ji(e,t,n,r);break;case"list":Pi(e.get(t),n,r);break;case"map":Oi(e.get(t),n,r);break}}function Eo(e,t,n){if(e.scalar&&t!==null)return Gn(e,t);if(e.message&&!yt(e,t)){let r=U(e.message);return Me(r,t,n),r}if(e.enum&&!yt(e,t))return Jo(e.enum,t,n.ignoreUnknownFields);throw new L(e,`${e.fieldKind==="list"?"list item":"map value"} must not be null`)}function Oi(e,t,n){if(t===null)return;let r=e.field();if(typeof t!="object"||Array.isArray(t))throw new L(r,"expected object, got "+F(t));for(let[o,a]of Object.entries(t)){let i=es(r.mapKey,o),s=Eo(r,a,n);s!==It&&e.set(i,s)}}function Pi(e,t,n){if(t===null)return;let r=e.field();if(!Array.isArray(t))throw new L(r,"expected Array, got "+F(t));for(let o of t){let a=Eo(r,o,n);a!==It&&e.add(a)}}function ji(e,t,n,r){if(yt(t,n)){e.clear(t);return}let o=e.isSet(t)?e.get(t):U(t.message);Me(o,n,r),e.set(t,o)}function $i(e,t,n,r){if(yt(t,n)){e.clear(t);return}let o=Jo(t.enum,n,r.ignoreUnknownFields);o!==It&&e.set(t,o)}function qi(e,t,n){n===null?e.clear(t):e.set(t,Gn(t,n))}function yt(e,t){var n,r;return t===null&&((n=e.message)===null||n===void 0?void 0:n.typeName)!="google.protobuf.Value"&&((r=e.enum)===null||r===void 0?void 0:r.typeName)!="google.protobuf.NullValue"}var It=Symbol();function Jo(e,t,n){if(t===null)return e.values[0].number;switch(typeof t){case"number":if(Number.isInteger(t))return t;break;case"string":let r=e.values.find(o=>o.name===t);if(r!==void 0)return r.number;if(n)return It;break}throw new Error(`cannot decode ${e} from JSON: ${F(t)}`)}function Gn(e,t){switch(e.scalar){case d.DOUBLE:case d.FLOAT:if(t==="NaN")return NaN;if(t==="Infinity")return Number.POSITIVE_INFINITY;if(t==="-Infinity")return Number.NEGATIVE_INFINITY;if(typeof t=="number"){if(Number.isNaN(t))throw new L(e,"unexpected NaN number");if(!Number.isFinite(t))throw new L(e,"unexpected infinite number");break}if(typeof t=="string"){if(t===""||t.trim().length!==t.length)break;let n=Number(t);if(!Number.isFinite(n))break;return n}break;case d.INT32:case d.FIXED32:case d.SFIXED32:case d.SINT32:case d.UINT32:return vo(t);case d.BYTES:if(typeof t=="string"){if(t==="")return new Uint8Array(0);try{return he(t)}catch(n){let r=n instanceof Error?n.message:String(n);throw new L(e,r)}}break}return t}function es(e,t){switch(e){case d.BOOL:switch(t){case"true":return!0;case"false":return!1}return t;case d.INT32:case d.FIXED32:case d.UINT32:case d.SFIXED32:case d.SINT32:return vo(t);default:return t}}function vo(e){if(typeof e=="string"){if(e===""||e.trim().length!==e.length)return e;let t=Number(e);return Number.isNaN(t)?e:t}return e}function ts(e,t){try{return JSON.parse(e)}catch(n){let r=n instanceof Error?n.message:String(n);throw new Error(`cannot decode message ${t} from JSON: ${r}`,{cause:n})}}function ns(e,t,n){if(!e.desc.typeName.startsWith("google.protobuf."))return!1;switch(e.desc.typeName){case"google.protobuf.Any":return rs(e.message,t,n),!0;case"google.protobuf.Timestamp":return os(e.message,t),!0;case"google.protobuf.Duration":return as(e.message,t),!0;case"google.protobuf.FieldMask":return is(e.message,t),!0;case"google.protobuf.Struct":return Ro(e.message,t),!0;case"google.protobuf.Value":return Zn(e.message,t),!0;case"google.protobuf.ListValue":return wo(e.message,t),!0;default:if(te(e.desc)){let r=e.desc.fields[0];return t===null?e.clear(r):e.set(r,Gn(r,t)),!0}return!1}}function rs(e,t,n){var r;if(t===null||Array.isArray(t)||typeof t!="object")throw new Error(`cannot decode message ${e.$typeName} from JSON: expected object but got ${F(t)}`);if(Object.keys(t).length==0)return;let o=t["@type"];if(typeof o!="string"||o=="")throw new Error(`cannot decode message ${e.$typeName} from JSON: "@type" is empty`);let a=o.includes("/")?o.substring(o.lastIndexOf("/")+1):o;if(!a.length)throw new Error(`cannot decode message ${e.$typeName} from JSON: "@type" is invalid`);let i=(r=n.registry)===null||r===void 0?void 0:r.getMessage(a);if(!i)throw new Error(`cannot decode message ${e.$typeName} from JSON: ${o} is not in the type registry`);let s=U(i);if(a.startsWith("google.protobuf.")&&Object.prototype.hasOwnProperty.call(t,"value")){let m=t.value;Me(s,m,n)}else{let m=Object.assign({},t);delete m["@type"],Me(s,m,n)}go(s.desc,s.message,e)}function os(e,t){if(typeof t!="string")throw new Error(`cannot decode message ${e.$typeName} from JSON: ${F(t)}`);let n=t.match(/^([0-9]{4})-([0-9]{2})-([0-9]{2})T([0-9]{2}):([0-9]{2}):([0-9]{2})(?:\.([0-9]{1,9}))?(?:Z|([+-][0-9][0-9]:[0-9][0-9]))$/);if(!n)throw new Error(`cannot decode message ${e.$typeName} from JSON: invalid RFC 3339 string`);let r=Date.parse(n[1]+"-"+n[2]+"-"+n[3]+"T"+n[4]+":"+n[5]+":"+n[6]+(n[8]?n[8]:"Z"));if(Number.isNaN(r))throw new Error(`cannot decode message ${e.$typeName} from JSON: invalid RFC 3339 string`);if(r<Date.parse("0001-01-01T00:00:00Z")||r>Date.parse("9999-12-31T23:59:59Z"))throw new Error(`cannot decode message ${e.$typeName} from JSON: must be from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59Z inclusive`);e.seconds=B.parse(r/1e3),e.nanos=0,n[7]&&(e.nanos=parseInt("1"+n[7]+"0".repeat(9-n[7].length))-1e9)}function as(e,t){if(typeof t!="string")throw new Error(`cannot decode message ${e.$typeName} from JSON: ${F(t)}`);let n=t.match(/^(-?[0-9]+)(?:\.([0-9]+))?s/);if(n===null)throw new Error(`cannot decode message ${e.$typeName} from JSON: ${F(t)}`);let r=Number(n[1]);if(r>315576e6||r<-315576e6)throw new Error(`cannot decode message ${e.$typeName} from JSON: ${F(t)}`);if(e.seconds=B.parse(r),typeof n[2]!="string")return;let o=n[2]+"0".repeat(9-n[2].length);e.nanos=parseInt(o),(r<0||Object.is(r,-0))&&(e.nanos=-e.nanos)}function is(e,t){if(typeof t!="string")throw new Error(`cannot decode message ${e.$typeName} from JSON: ${F(t)}`);t!==""&&(e.paths=t.split(",").map(n=>{if(n.includes("_"))throw new Error(`cannot decode message ${e.$typeName} from JSON: path names must be lowerCamelCase`);return st(n)}))}function Ro(e,t){if(typeof t!="object"||t==null||Array.isArray(t))throw new Error(`cannot decode message ${e.$typeName} from JSON ${F(t)}`);for(let[n,r]of Object.entries(t)){let o=k(hn);Zn(o,r),e.fields[n]=o}}function Zn(e,t){switch(typeof t){case"number":e.kind={case:"numberValue",value:t};break;case"string":e.kind={case:"stringValue",value:t};break;case"boolean":e.kind={case:"boolValue",value:t};break;case"object":if(t===null)e.kind={case:"nullValue",value:bt.NULL_VALUE};else if(Array.isArray(t)){let n=k(yo);wo(n,t),e.kind={case:"listValue",value:n}}else{let n=k(fo);Ro(n,t),e.kind={case:"structValue",value:n}}break;default:throw new Error(`cannot decode message ${e.$typeName} from JSON ${F(t)}`)}return e}function wo(e,t){if(!Array.isArray(t))throw new Error(`cannot decode message ${e.$typeName} from JSON ${F(t)}`);for(let n of t){let r=k(hn);Zn(r,n),e.values.push(r)}}var C;(function(e){e[e.Canceled=1]="Canceled",e[e.Unknown=2]="Unknown",e[e.InvalidArgument=3]="InvalidArgument",e[e.DeadlineExceeded=4]="DeadlineExceeded",e[e.NotFound=5]="NotFound",e[e.AlreadyExists=6]="AlreadyExists",e[e.PermissionDenied=7]="PermissionDenied",e[e.ResourceExhausted=8]="ResourceExhausted",e[e.FailedPrecondition=9]="FailedPrecondition",e[e.Aborted=10]="Aborted",e[e.OutOfRange=11]="OutOfRange",e[e.Unimplemented=12]="Unimplemented",e[e.Internal=13]="Internal",e[e.Unavailable=14]="Unavailable",e[e.DataLoss=15]="DataLoss",e[e.Unauthenticated=16]="Unauthenticated"})(C||(C={}));function Le(e){let t=C[e];return typeof t!="string"?e.toString():t[0].toLowerCase()+t.substring(1).replace(/[A-Z]/g,n=>"_"+n.toLowerCase())}var Gt;function ko(e){if(!Gt){Gt={};for(let t of Object.values(C))typeof t!="string"&&(Gt[Le(t)]=t)}return Gt[e]}var W=class e extends Error{constructor(t,n=C.Unknown,r,o,a){super(ss(t,n)),this.name="ConnectError",Object.setPrototypeOf(this,new.target.prototype),this.rawMessage=t,this.code=n,this.metadata=new Headers(r??{}),this.details=o??[],this.cause=a}static from(t,n=C.Unknown){return t instanceof e?t:t instanceof Error?t.name=="AbortError"||t.name=="TimeoutError"?new e(t.message,C.Canceled):new e(t.message,n,void 0,void 0,t):new e(String(t),n,void 0,void 0,t)}static[Symbol.hasInstance](t){return t instanceof Error?Object.getPrototypeOf(t)===e.prototype?!0:t.name==="ConnectError"&&"code"in t&&typeof t.code=="number"&&"metadata"in t&&"details"in t&&Array.isArray(t.details)&&"rawMessage"in t&&typeof t.rawMessage=="string"&&"cause"in t:!1}findDetails(t){let n=t.kind==="message"?{getMessage:o=>o===t.typeName?t:void 0}:t,r=[];for(let o of this.details){if("desc"in o){n.getMessage(o.desc.typeName)&&r.push(k(o.desc,o.value));continue}let a=n.getMessage(o.type);if(a)try{r.push(ae(a,o.value))}catch{}}return r}};function ss(e,t){return e.length?`[${Le(t)}] ${e}`:`[${Le(t)}]`}function An(...e){let t=new Headers;for(let n of e)n.forEach((r,o)=>{t.append(o,r)});return t}function Yo(e,t){let n={};for(let r of e.methods){let o=t(r);o!=null&&(n[r.localName]=o)}return n}var Zt=1;function Fo(e,t,n=!1){if(t>e){let r=`message size is larger than configured readMaxBytes ${e}`;throw n&&(r=`message size ${t} is larger than configured readMaxBytes ${e}`),new W(r,C.ResourceExhausted)}}function cs(e){return new Cn(e)}var Cn=class{constructor(t){this.readMaxBytes=t,this.header=new Uint8Array(5),this.headerView=new DataView(this.header.buffer),this.buf=[]}get byteLength(){return this.buf.reduce((t,n)=>t+n.byteLength,0)}decode(t){this.buf.push(t);let n=[];for(;;){let r=this.pop();if(!r)break;n.push(r)}return n}pop(){if(!(!this.env&&(this.env=this.head(),!this.env))&&this.cons(this.env.data)){let t=this.env;return this.env=void 0,t}}head(){if(!this.cons(this.header))return;let t=this.headerView.getUint8(0),n=this.headerView.getUint32(1);return Fo(this.readMaxBytes,n,!0),{flags:t,data:new Uint8Array(n)}}cons(t){let n=t.byteLength;if(this.byteLength<n)return!1;let r=0;for(;r<n;){let o=this.buf.shift();o.byteLength>n-r?(t.set(o.subarray(0,n-r),r),this.buf.unshift(o.subarray(n-r)),r+=n-r):(t.set(o,r),r+=o.byteLength)}return!0}};function Vn(e){let t,n=cs(4294967295);return new ReadableStream({start(){t=e.getReader()},async pull(r){let o=!1;for(;!o;){let a=await t.read();if(a.done)n.byteLength>0&&r.error(new W("protocol error: incomplete envelope",C.InvalidArgument)),r.close();else for(let i of n.decode(a.value))r.enqueue(i),o=!0}}})}function xn(e,t){let n=new Uint8Array(t.length+5);n.set(t,5);let r=new DataView(n.buffer,n.byteOffset,n.byteLength);return r.setUint8(0,e),r.setUint32(1,t.length),n}var ls=function(e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var t=e[Symbol.asyncIterator],n;return t?t.call(e):(e=typeof __values=="function"?__values(e):e[Symbol.iterator](),n={},r("next"),r("throw"),r("return"),n[Symbol.asyncIterator]=function(){return this},n);function r(a){n[a]=e[a]&&function(i){return new Promise(function(s,m){i=e[a](i),o(s,m,i.done,i.value)})}}function o(a,i,s,m){Promise.resolve(m).then(function(u){a({value:u,done:s})},i)}},ze=function(e){return this instanceof ze?(this.v=e,this):new ze(e)},ds=function(e,t,n){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var r=n.apply(e,t||[]),o,a=[];return o=Object.create((typeof AsyncIterator=="function"?AsyncIterator:Object).prototype),s("next"),s("throw"),s("return",i),o[Symbol.asyncIterator]=function(){return this},o;function i(c){return function(g){return Promise.resolve(g).then(c,f)}}function s(c,g){r[c]&&(o[c]=function(h){return new Promise(function(p,b){a.push([c,h,p,b])>1||m(c,h)})},g&&(o[c]=g(o[c])))}function m(c,g){try{u(r[c](g))}catch(h){l(a[0][3],h)}}function u(c){c.value instanceof ze?Promise.resolve(c.value.v).then(I,f):l(a[0][2],c)}function I(c){m("next",c)}function f(c){m("throw",c)}function l(c,g){c(g),a.shift(),a.length&&m(a[0][0],a[0][1])}},ms=function(e){var t,n;return t={},r("next"),r("throw",function(o){throw o}),r("return"),t[Symbol.iterator]=function(){return this},t;function r(o,a){t[o]=e[o]?function(i){return(n=!n)?{value:ze(e[o](i)),done:!1}:a?a(i):i}:a}};function No(e){return ds(this,arguments,function*(){yield ze(yield*ms(ls(e)))})}var Ho=function(e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var t=e[Symbol.asyncIterator],n;return t?t.call(e):(e=typeof __values=="function"?__values(e):e[Symbol.iterator](),n={},r("next"),r("throw"),r("return"),n[Symbol.asyncIterator]=function(){return this},n);function r(a){n[a]=e[a]&&function(i){return new Promise(function(s,m){i=e[a](i),o(s,m,i.done,i.value)})}}function o(a,i,s,m){Promise.resolve(m).then(function(u){a({value:u,done:s})},i)}},Ze=function(e){return this instanceof Ze?(this.v=e,this):new Ze(e)},us=function(e){var t,n;return t={},r("next"),r("throw",function(o){throw o}),r("return"),t[Symbol.iterator]=function(){return this},t;function r(o,a){t[o]=e[o]?function(i){return(n=!n)?{value:Ze(e[o](i)),done:!1}:a?a(i):i}:a}},gs=function(e,t,n){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var r=n.apply(e,t||[]),o,a=[];return o=Object.create((typeof AsyncIterator=="function"?AsyncIterator:Object).prototype),s("next"),s("throw"),s("return",i),o[Symbol.asyncIterator]=function(){return this},o;function i(c){return function(g){return Promise.resolve(g).then(c,f)}}function s(c,g){r[c]&&(o[c]=function(h){return new Promise(function(p,b){a.push([c,h,p,b])>1||m(c,h)})},g&&(o[c]=g(o[c])))}function m(c,g){try{u(r[c](g))}catch(h){l(a[0][3],h)}}function u(c){c.value instanceof Ze?Promise.resolve(c.value.v).then(I,f):l(a[0][2],c)}function I(c){m("next",c)}function f(c){m("throw",c)}function l(c,g){c(g),a.shift(),a.length&&m(a[0][0],a[0][1])}};function Xn(e,t){return Yo(e,n=>{switch(n.methodKind){case"unary":return ps(t,n);case"server_streaming":return hs(t,n);case"client_streaming":return bs(t,n);case"bidi_streaming":return fs(t,n);default:return null}})}function ps(e,t){return async(n,r)=>{var o,a;let i=await e.unary(t,r?.signal,r?.timeoutMs,r?.headers,n,r?.contextValues);return(o=r?.onHeader)===null||o===void 0||o.call(r,i.header),(a=r?.onTrailer)===null||a===void 0||a.call(r,i.trailer),i.message}}function hs(e,t){return(n,r)=>Mo(e.stream(t,r?.signal,r?.timeoutMs,r?.headers,No([n]),r?.contextValues),r)}function bs(e,t){return async(n,r)=>{var o,a,i,s,m,u;let I=await e.stream(t,r?.signal,r?.timeoutMs,r?.headers,n,r?.contextValues);(m=r?.onHeader)===null||m===void 0||m.call(r,I.header);let f,l=0;try{for(var c=!0,g=Ho(I.message),h;h=await g.next(),o=h.done,!o;c=!0)s=h.value,c=!1,f=s,l++}catch(p){a={error:p}}finally{try{!c&&!o&&(i=g.return)&&await i.call(g)}finally{if(a)throw a.error}}if(!f)throw new W("protocol error: missing response message",C.Unimplemented);if(l>1)throw new W("protocol error: received extra messages for client streaming method",C.Unimplemented);return(u=r?.onTrailer)===null||u===void 0||u.call(r,I.trailer),f}}function fs(e,t){return(n,r)=>Mo(e.stream(t,r?.signal,r?.timeoutMs,r?.headers,n,r?.contextValues),r)}function Mo(e,t){let n=(function(){return gs(this,arguments,function*(){var r,o;let a=yield Ze(e);(r=t?.onHeader)===null||r===void 0||r.call(t,a.header),yield Ze(yield*us(Ho(a.message))),(o=t?.onTrailer)===null||o===void 0||o.call(t,a.trailer)})})()[Symbol.asyncIterator]();return{[Symbol.asyncIterator]:()=>({next:()=>n.next()})}}function Lo(...e){let t=new AbortController,n=e.filter(o=>o!==void 0).concat(t.signal);for(let o of n){if(o.aborted){r.apply(o);break}o.addEventListener("abort",r)}function r(){t.signal.aborted||t.abort(Sn(this));for(let o of n)o.removeEventListener("abort",r)}return t}function zo(e){let t=new AbortController,n=()=>{t.abort(new W("the operation timed out",C.DeadlineExceeded))},r;return e!==void 0&&(e<=0?n():r=setTimeout(n,e)),{signal:t.signal,cleanup:()=>clearTimeout(r)}}function Sn(e){if(!e.aborted)return;if(e.reason!==void 0)return e.reason;let t=new Error("This operation was aborted");return t.name="AbortError",t}function At(){return{get(e){return e.id in this?this[e.id]:e.defaultValue},set(e,t){return this[e.id]=t,this},delete(e){return delete this[e.id],this}}}function Ko(e,t,...n){if(n.length>0)throw new Error;return e.services[t]}function Ct(e,t){return e.toString().replace(/\/?$/,`/${t.parent.typeName}/${t.name}`)}function Bn(e,t){return k(e,t)}function Uo(e,t){function n(r){return r.done===!0?r:{done:r.done,value:Bn(e,r.value)}}return{[Symbol.asyncIterator](){let r=t[Symbol.asyncIterator](),o={next:()=>r.next().then(n)};return r.throw!==void 0&&(o.throw=a=>r.throw(a).then(n)),r.return!==void 0&&(o.return=a=>r.return(a).then(n)),o}}}function Wn(e,t){if(!t)return e;for(let n of t.concat().reverse())e=n(e);return e}function Vt(e){var t;let n=Object.assign({},e);return(t=n.ignoreUnknownFields)!==null&&t!==void 0||(n.ignoreUnknownFields=!0),n}function xt(e,t,n,r){let o=t?To(e.input,r):Do(e.input,n);return{parse:(t?To(e.output,r):Do(e.output,n)).parse,serialize:o.serialize}}function To(e,t){return{parse(n){try{return ae(e,n,t)}catch(r){let o=r instanceof Error?r.message:String(r);throw new W(`parse binary: ${o}`,C.Internal)}},serialize(n){try{return Ne(e,n,t)}catch(r){let o=r instanceof Error?r.message:String(r);throw new W(`serialize binary: ${o}`,C.Internal)}}}}function Do(e,t){var n,r;let o=(n=t?.textEncoder)!==null&&n!==void 0?n:new TextEncoder,a=(r=t?.textDecoder)!==null&&r!==void 0?r:new TextDecoder,i=Vt(t);return{parse(s){try{let m=a.decode(s);return Wo(e,m,i)}catch(m){throw W.from(m,C.InvalidArgument)}},serialize(s){try{let m=Vo(e,s,i);return o.encode(m)}catch(m){throw W.from(m,C.Internal)}}}}var ys=/^application\/(connect\+)?(?:(json)(?:; ?charset=utf-?8)?|(proto))$/i;var Qo="application/proto",_o="application/json",Oo="application/connect+proto",Po="application/connect+json";function jo(e){let t=e?.match(ys);if(!t)return;let n=!!t[1],r=!!t[3];return{stream:n,binary:r}}function Ke(e,t,n){var r;if(t&&new Headers(t).forEach((s,m)=>n.metadata.append(m,s)),typeof e!="object"||e==null||Array.isArray(e))throw n;let o=n.code;"code"in e&&typeof e.code=="string"&&(o=(r=ko(e.code))!==null&&r!==void 0?r:o);let a=e.message;if(a!=null&&typeof a!="string")throw n;let i=new W(a??"",o,t);if("details"in e&&Array.isArray(e.details))for(let s of e.details){if(s===null||typeof s!="object"||Array.isArray(s)||typeof s.type!="string"||typeof s.value!="string")throw n;try{i.details.push({type:s.type,value:he(s.value),debug:s.debug})}catch{throw n}}return i}var Xt=2;function En(e){let t=new W("invalid end stream",C.Unknown),n;try{n=JSON.parse(typeof e=="string"?e:new TextDecoder().decode(e))}catch{throw t}if(typeof n!="object"||n==null||Array.isArray(n))throw t;let r=new Headers;if("metadata"in n){if(typeof n.metadata!="object"||n.metadata==null||Array.isArray(n.metadata))throw t;for(let[a,i]of Object.entries(n.metadata)){if(!Array.isArray(i)||i.some(s=>typeof s!="string"))throw t;for(let s of i)r.append(a,s)}}let o="error"in n&&n.error!=null?Ke(n.error,r,t):void 0;return{metadata:r,error:o}}var me="Content-Type",$o="Content-Length",Ue="Content-Encoding";var Jn="Accept-Encoding";var qo="Connect-Timeout-Ms",St="Connect-Protocol-Version",vn="User-Agent";function ea(e){switch(e){case 400:return C.Internal;case 401:return C.Unauthenticated;case 403:return C.PermissionDenied;case 404:return C.Unimplemented;case 429:return C.Unavailable;case 502:return C.Unavailable;case 503:return C.Unavailable;case 504:return C.Unavailable;default:return C.Unknown}}function Bt(e){let t=new Headers,n=new Headers;return e.forEach((r,o)=>{o.toLowerCase().startsWith("trailer-")?n.append(o.substring(8),r):t.append(o,r)}),[t,n]}var Wt="1";function Et(e,t,n,r,o){let a=new Headers(r??{});return n!==void 0&&a.set(qo,`${n}`),a.set(me,e=="unary"?t?Qo:_o:t?Oo:Po),a.set(St,Wt),!a.has(vn)&&o&&a.set(vn,"connect-es/2.1.1"),a}function Jt(e,t,n,r){let o=r.get(me),a=jo(o);if(n!==200){let s=new W(`HTTP ${n}`,ea(n),r);if(e=="unary"&&a&&!a.binary)return{isUnaryError:!0,unaryError:s};throw s}let i={binary:t,stream:e!=="unary"};if(a?.binary!==i.binary||a.stream!==i.stream)throw new W(`unsupported content type ${o}`,a===void 0?C.Unknown:C.Internal,r);return{isUnaryError:!1}}var ta="application/";function Zs(e,t){return t?Re(e,"url"):encodeURIComponent(new TextDecoder().decode(e))}function Rn(e,t,n){let r=`?connect=v${Wt}`,o=e.header.get(me);o?.indexOf(ta)===0&&(r+="&encoding="+encodeURIComponent(o.slice(ta.length)));let a=e.header.get(Ue);a!==null&&a!=="identity"&&(r+="&compression="+encodeURIComponent(a),n=!0),n&&(r+="&base64=1"),r+="&message="+Zs(t,n);let i=e.url+r,s=new Headers(e.header);for(let m of[St,me,$o,Ue,Jn])s.delete(m);return Object.assign(Object.assign({},e),{requestMethod:"GET",url:i,header:s})}function wn(e){let t=Wn(e.next,e.interceptors),[n,r,o]=na(e),a=Object.assign(Object.assign({},e.req),{message:Bn(e.req.method.input,e.req.message),signal:n});return t(a).then(i=>(o(),i),r)}function kn(e){let t=Wn(e.next,e.interceptors),[n,r,o]=na(e),a=Object.assign(Object.assign({},e.req),{message:Uo(e.req.method.input,e.req.message),signal:n}),i=!1;return n.addEventListener("abort",function(){var s,m;let u=e.req.message[Symbol.asyncIterator]();i||(s=u.throw)===null||s===void 0||s.call(u,this.reason).catch(()=>{}),(m=u.return)===null||m===void 0||m.call(u).catch(()=>{})}),t(a).then(s=>Object.assign(Object.assign({},s),{message:{[Symbol.asyncIterator](){let m=s.message[Symbol.asyncIterator]();return{next(){return m.next().then(u=>(u.done==!0&&(i=!0,o()),u),r)}}}}}),r)}function na(e){let{signal:t,cleanup:n}=zo(e.timeoutMs),r=Lo(e.signal,t);return[r.signal,function(a){let i=W.from(t.aborted?Sn(t):a);return r.abort(i),n(),Promise.reject(i)},function(){n(),r.abort()}]}var vt=w("ChtidWYvdmFsaWRhdGUvdmFsaWRhdGUucHJvdG8SDGJ1Zi52YWxpZGF0ZSI3CgRSdWxlEgoKAmlkGAEgASgJEg8KB21lc3NhZ2UYAiABKAkSEgoKZXhwcmVzc2lvbhgDIAEoCSKGAQoMTWVzc2FnZVJ1bGVzEhYKDmNlbF9leHByZXNzaW9uGAUgAygJEh8KA2NlbBgDIAMoCzISLmJ1Zi52YWxpZGF0ZS5SdWxlEi0KBW9uZW9mGAQgAygLMh4uYnVmLnZhbGlkYXRlLk1lc3NhZ2VPbmVvZlJ1bGVKBAgBEAJSCGRpc2FibGVkIjQKEE1lc3NhZ2VPbmVvZlJ1bGUSDgoGZmllbGRzGAEgAygJEhAKCHJlcXVpcmVkGAIgASgIIh4KCk9uZW9mUnVsZXMSEAoIcmVxdWlyZWQYASABKAgiiwkKCkZpZWxkUnVsZXMSFgoOY2VsX2V4cHJlc3Npb24YHSADKAkSHwoDY2VsGBcgAygLMhIuYnVmLnZhbGlkYXRlLlJ1bGUSEAoIcmVxdWlyZWQYGSABKAgSJAoGaWdub3JlGBsgASgOMhQuYnVmLnZhbGlkYXRlLklnbm9yZRIpCgVmbG9hdBgBIAEoCzIYLmJ1Zi52YWxpZGF0ZS5GbG9hdFJ1bGVzSAASKwoGZG91YmxlGAIgASgLMhkuYnVmLnZhbGlkYXRlLkRvdWJsZVJ1bGVzSAASKQoFaW50MzIYAyABKAsyGC5idWYudmFsaWRhdGUuSW50MzJSdWxlc0gAEikKBWludDY0GAQgASgLMhguYnVmLnZhbGlkYXRlLkludDY0UnVsZXNIABIrCgZ1aW50MzIYBSABKAsyGS5idWYudmFsaWRhdGUuVUludDMyUnVsZXNIABIrCgZ1aW50NjQYBiABKAsyGS5idWYudmFsaWRhdGUuVUludDY0UnVsZXNIABIrCgZzaW50MzIYByABKAsyGS5idWYudmFsaWRhdGUuU0ludDMyUnVsZXNIABIrCgZzaW50NjQYCCABKAsyGS5idWYudmFsaWRhdGUuU0ludDY0UnVsZXNIABItCgdmaXhlZDMyGAkgASgLMhouYnVmLnZhbGlkYXRlLkZpeGVkMzJSdWxlc0gAEi0KB2ZpeGVkNjQYCiABKAsyGi5idWYudmFsaWRhdGUuRml4ZWQ2NFJ1bGVzSAASLwoIc2ZpeGVkMzIYCyABKAsyGy5idWYudmFsaWRhdGUuU0ZpeGVkMzJSdWxlc0gAEi8KCHNmaXhlZDY0GAwgASgLMhsuYnVmLnZhbGlkYXRlLlNGaXhlZDY0UnVsZXNIABInCgRib29sGA0gASgLMhcuYnVmLnZhbGlkYXRlLkJvb2xSdWxlc0gAEisKBnN0cmluZxgOIAEoCzIZLmJ1Zi52YWxpZGF0ZS5TdHJpbmdSdWxlc0gAEikKBWJ5dGVzGA8gASgLMhguYnVmLnZhbGlkYXRlLkJ5dGVzUnVsZXNIABInCgRlbnVtGBAgASgLMhcuYnVmLnZhbGlkYXRlLkVudW1SdWxlc0gAEi8KCHJlcGVhdGVkGBIgASgLMhsuYnVmLnZhbGlkYXRlLlJlcGVhdGVkUnVsZXNIABIlCgNtYXAYEyABKAsyFi5idWYudmFsaWRhdGUuTWFwUnVsZXNIABIlCgNhbnkYFCABKAsyFi5idWYudmFsaWRhdGUuQW55UnVsZXNIABIvCghkdXJhdGlvbhgVIAEoCzIbLmJ1Zi52YWxpZGF0ZS5EdXJhdGlvblJ1bGVzSAASMgoKZmllbGRfbWFzaxgcIAEoCzIcLmJ1Zi52YWxpZGF0ZS5GaWVsZE1hc2tSdWxlc0gAEjEKCXRpbWVzdGFtcBgWIAEoCzIcLmJ1Zi52YWxpZGF0ZS5UaW1lc3RhbXBSdWxlc0gAQgYKBHR5cGVKBAgYEBlKBAgaEBtSB3NraXBwZWRSDGlnbm9yZV9lbXB0eSJVCg9QcmVkZWZpbmVkUnVsZXMSHwoDY2VsGAEgAygLMhIuYnVmLnZhbGlkYXRlLlJ1bGVKBAgYEBlKBAgaEBtSB3NraXBwZWRSDGlnbm9yZV9lbXB0eSLaFwoKRmxvYXRSdWxlcxKDAQoFY29uc3QYASABKAJCdMJIcQpvCgtmbG9hdC5jb25zdBpgdGhpcyAhPSBnZXRGaWVsZChydWxlcywgJ2NvbnN0JykgPyAndmFsdWUgbXVzdCBlcXVhbCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2NvbnN0JyldKSA6ICcnEp8BCgJsdBgCIAEoAkKQAcJIjAEKiQEKCGZsb2F0Lmx0Gn0haGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgKHRoaXMuaXNOYW4oKSB8fCB0aGlzID49IHJ1bGVzLmx0KT8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmx0XSkgOiAnJ0gAEq8BCgNsdGUYAyABKAJCnwHCSJsBCpgBCglmbG9hdC5sdGUaigEhaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgKHRoaXMuaXNOYW4oKSB8fCB0aGlzID4gcnVsZXMubHRlKT8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmx0ZV0pIDogJydIABLvBwoCZ3QYBCABKAJC4AfCSNwHCo0BCghmbG9hdC5ndBqAASFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiAodGhpcy5pc05hbigpIHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RdKSA6ICcnCsMBCgtmbG9hdC5ndF9sdBqzAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3QgJiYgKHRoaXMuaXNOYW4oKSB8fCB0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCs0BChVmbG9hdC5ndF9sdF9leGNsdXNpdmUaswFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3QgJiYgKHRoaXMuaXNOYW4oKSB8fCAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwrTAQoMZmxvYXQuZ3RfbHRlGsIBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ICYmICh0aGlzLmlzTmFuKCkgfHwgdGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJycK3QEKFmZsb2F0Lmd0X2x0ZV9leGNsdXNpdmUawgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndCAmJiAodGhpcy5pc05hbigpIHx8IChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJ0gBEroICgNndGUYBSABKAJCqgjCSKYICpsBCglmbG9hdC5ndGUajQEhaGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgKHRoaXMuaXNOYW4oKSB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZV0pIDogJycK0gEKDGZsb2F0Lmd0ZV9sdBrBAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3RlICYmICh0aGlzLmlzTmFuKCkgfHwgdGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycK3AEKFmZsb2F0Lmd0ZV9sdF9leGNsdXNpdmUawQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3RlICYmICh0aGlzLmlzTmFuKCkgfHwgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSkpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCuIBCg1mbG9hdC5ndGVfbHRlGtABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ZSAmJiAodGhpcy5pc05hbigpIHx8IHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJwrsAQoXZmxvYXQuZ3RlX2x0ZV9leGNsdXNpdmUa0AFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndGUgJiYgKHRoaXMuaXNOYW4oKSB8fCAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnSAESfwoCaW4YBiADKAJCc8JIcApuCghmbG9hdC5pbhpiISh0aGlzIGluIGdldEZpZWxkKHJ1bGVzLCAnaW4nKSkgPyAndmFsdWUgbXVzdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnaW4nKV0pIDogJycSdgoGbm90X2luGAcgAygCQmbCSGMKYQoMZmxvYXQubm90X2luGlF0aGlzIGluIHJ1bGVzLm5vdF9pbiA/ICd2YWx1ZSBtdXN0IG5vdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW3J1bGVzLm5vdF9pbl0pIDogJycSdQoGZmluaXRlGAggASgIQmXCSGIKYAoMZmxvYXQuZmluaXRlGlBydWxlcy5maW5pdGUgPyAodGhpcy5pc05hbigpIHx8IHRoaXMuaXNJbmYoKSA/ICd2YWx1ZSBtdXN0IGJlIGZpbml0ZScgOiAnJykgOiAnJxIrCgdleGFtcGxlGAkgAygCQhrCSBcKFQoNZmxvYXQuZXhhbXBsZRoEdHJ1ZSoJCOgHEICAgIACQgsKCWxlc3NfdGhhbkIOCgxncmVhdGVyX3RoYW4i7RcKC0RvdWJsZVJ1bGVzEoQBCgVjb25zdBgBIAEoAUJ1wkhyCnAKDGRvdWJsZS5jb25zdBpgdGhpcyAhPSBnZXRGaWVsZChydWxlcywgJ2NvbnN0JykgPyAndmFsdWUgbXVzdCBlcXVhbCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2NvbnN0JyldKSA6ICcnEqABCgJsdBgCIAEoAUKRAcJIjQEKigEKCWRvdWJsZS5sdBp9IWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmICh0aGlzLmlzTmFuKCkgfHwgdGhpcyA+PSBydWxlcy5sdCk/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5sdF0pIDogJydIABKwAQoDbHRlGAMgASgBQqABwkicAQqZAQoKZG91YmxlLmx0ZRqKASFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiAodGhpcy5pc05hbigpIHx8IHRoaXMgPiBydWxlcy5sdGUpPyAndmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMubHRlXSkgOiAnJ0gAEvQHCgJndBgEIAEoAULlB8JI4QcKjgEKCWRvdWJsZS5ndBqAASFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiAodGhpcy5pc05hbigpIHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RdKSA6ICcnCsQBCgxkb3VibGUuZ3RfbHQaswFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ICYmICh0aGlzLmlzTmFuKCkgfHwgdGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwrOAQoWZG91YmxlLmd0X2x0X2V4Y2x1c2l2ZRqzAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndCAmJiAodGhpcy5pc05hbigpIHx8IChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCtQBCg1kb3VibGUuZ3RfbHRlGsIBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ICYmICh0aGlzLmlzTmFuKCkgfHwgdGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJycK3gEKF2RvdWJsZS5ndF9sdGVfZXhjbHVzaXZlGsIBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3QgJiYgKHRoaXMuaXNOYW4oKSB8fCAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJydIARK/CAoDZ3RlGAUgASgBQq8IwkirCAqcAQoKZG91YmxlLmd0ZRqNASFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiAodGhpcy5pc05hbigpIHx8IHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlXSkgOiAnJwrTAQoNZG91YmxlLmd0ZV9sdBrBAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3RlICYmICh0aGlzLmlzTmFuKCkgfHwgdGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycK3QEKF2RvdWJsZS5ndGVfbHRfZXhjbHVzaXZlGsEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ZSAmJiAodGhpcy5pc05hbigpIHx8IChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrjAQoOZG91YmxlLmd0ZV9sdGUa0AFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3RlICYmICh0aGlzLmlzTmFuKCkgfHwgdGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnCu0BChhkb3VibGUuZ3RlX2x0ZV9leGNsdXNpdmUa0AFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndGUgJiYgKHRoaXMuaXNOYW4oKSB8fCAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnSAESgAEKAmluGAYgAygBQnTCSHEKbwoJZG91YmxlLmluGmIhKHRoaXMgaW4gZ2V0RmllbGQocnVsZXMsICdpbicpKSA/ICd2YWx1ZSBtdXN0IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdpbicpXSkgOiAnJxJ3CgZub3RfaW4YByADKAFCZ8JIZApiCg1kb3VibGUubm90X2luGlF0aGlzIGluIHJ1bGVzLm5vdF9pbiA/ICd2YWx1ZSBtdXN0IG5vdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW3J1bGVzLm5vdF9pbl0pIDogJycSdgoGZmluaXRlGAggASgIQmbCSGMKYQoNZG91YmxlLmZpbml0ZRpQcnVsZXMuZmluaXRlID8gKHRoaXMuaXNOYW4oKSB8fCB0aGlzLmlzSW5mKCkgPyAndmFsdWUgbXVzdCBiZSBmaW5pdGUnIDogJycpIDogJycSLAoHZXhhbXBsZRgJIAMoAUIbwkgYChYKDmRvdWJsZS5leGFtcGxlGgR0cnVlKgkI6AcQgICAgAJCCwoJbGVzc190aGFuQg4KDGdyZWF0ZXJfdGhhbiKMFQoKSW50MzJSdWxlcxKDAQoFY29uc3QYASABKAVCdMJIcQpvCgtpbnQzMi5jb25zdBpgdGhpcyAhPSBnZXRGaWVsZChydWxlcywgJ2NvbnN0JykgPyAndmFsdWUgbXVzdCBlcXVhbCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2NvbnN0JyldKSA6ICcnEooBCgJsdBgCIAEoBUJ8wkh5CncKCGludDMyLmx0GmshaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+PSBydWxlcy5sdD8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmx0XSkgOiAnJ0gAEpwBCgNsdGUYAyABKAVCjAHCSIgBCoUBCglpbnQzMi5sdGUaeCFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiB0aGlzID4gcnVsZXMubHRlPyAndmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMubHRlXSkgOiAnJ0gAEpcHCgJndBgEIAEoBUKIB8JIhAcKegoIaW50MzIuZ3QabiFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDw9IHJ1bGVzLmd0PyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RdKSA6ICcnCrMBCgtpbnQzMi5ndF9sdBqjAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKuwEKFWludDMyLmd0X2x0X2V4Y2x1c2l2ZRqhAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndCAmJiAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCsMBCgxpbnQzMi5ndF9sdGUasgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnCssBChZpbnQzMi5ndF9sdGVfZXhjbHVzaXZlGrABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJydIARLjBwoDZ3RlGAUgASgFQtMHwkjPBwqIAQoJaW50MzIuZ3RlGnshaGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8IHJ1bGVzLmd0ZT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZV0pIDogJycKwgEKDGludDMyLmd0ZV9sdBqxAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3RlICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrKAQoWaW50MzIuZ3RlX2x0X2V4Y2x1c2l2ZRqvAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycK0gEKDWludDMyLmd0ZV9sdGUawAFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3RlICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJycK2gEKF2ludDMyLmd0ZV9sdGVfZXhjbHVzaXZlGr4BaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJ0gBEn8KAmluGAYgAygFQnPCSHAKbgoIaW50MzIuaW4aYiEodGhpcyBpbiBnZXRGaWVsZChydWxlcywgJ2luJykpID8gJ3ZhbHVlIG11c3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2luJyldKSA6ICcnEnYKBm5vdF9pbhgHIAMoBUJmwkhjCmEKDGludDMyLm5vdF9pbhpRdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAndmFsdWUgbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnEisKB2V4YW1wbGUYCCADKAVCGsJIFwoVCg1pbnQzMi5leGFtcGxlGgR0cnVlKgkI6AcQgICAgAJCCwoJbGVzc190aGFuQg4KDGdyZWF0ZXJfdGhhbiKMFQoKSW50NjRSdWxlcxKDAQoFY29uc3QYASABKANCdMJIcQpvCgtpbnQ2NC5jb25zdBpgdGhpcyAhPSBnZXRGaWVsZChydWxlcywgJ2NvbnN0JykgPyAndmFsdWUgbXVzdCBlcXVhbCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2NvbnN0JyldKSA6ICcnEooBCgJsdBgCIAEoA0J8wkh5CncKCGludDY0Lmx0GmshaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+PSBydWxlcy5sdD8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmx0XSkgOiAnJ0gAEpwBCgNsdGUYAyABKANCjAHCSIgBCoUBCglpbnQ2NC5sdGUaeCFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiB0aGlzID4gcnVsZXMubHRlPyAndmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMubHRlXSkgOiAnJ0gAEpcHCgJndBgEIAEoA0KIB8JIhAcKegoIaW50NjQuZ3QabiFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDw9IHJ1bGVzLmd0PyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RdKSA6ICcnCrMBCgtpbnQ2NC5ndF9sdBqjAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKuwEKFWludDY0Lmd0X2x0X2V4Y2x1c2l2ZRqhAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndCAmJiAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCsMBCgxpbnQ2NC5ndF9sdGUasgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnCssBChZpbnQ2NC5ndF9sdGVfZXhjbHVzaXZlGrABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJydIARLjBwoDZ3RlGAUgASgDQtMHwkjPBwqIAQoJaW50NjQuZ3RlGnshaGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8IHJ1bGVzLmd0ZT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZV0pIDogJycKwgEKDGludDY0Lmd0ZV9sdBqxAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3RlICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrKAQoWaW50NjQuZ3RlX2x0X2V4Y2x1c2l2ZRqvAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycK0gEKDWludDY0Lmd0ZV9sdGUawAFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3RlICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJycK2gEKF2ludDY0Lmd0ZV9sdGVfZXhjbHVzaXZlGr4BaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJ0gBEn8KAmluGAYgAygDQnPCSHAKbgoIaW50NjQuaW4aYiEodGhpcyBpbiBnZXRGaWVsZChydWxlcywgJ2luJykpID8gJ3ZhbHVlIG11c3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2luJyldKSA6ICcnEnYKBm5vdF9pbhgHIAMoA0JmwkhjCmEKDGludDY0Lm5vdF9pbhpRdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAndmFsdWUgbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnEisKB2V4YW1wbGUYCSADKANCGsJIFwoVCg1pbnQ2NC5leGFtcGxlGgR0cnVlKgkI6AcQgICAgAJCCwoJbGVzc190aGFuQg4KDGdyZWF0ZXJfdGhhbiKeFQoLVUludDMyUnVsZXMShAEKBWNvbnN0GAEgASgNQnXCSHIKcAoMdWludDMyLmNvbnN0GmB0aGlzICE9IGdldEZpZWxkKHJ1bGVzLCAnY29uc3QnKSA/ICd2YWx1ZSBtdXN0IGVxdWFsICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnY29uc3QnKV0pIDogJycSiwEKAmx0GAIgASgNQn3CSHoKeAoJdWludDMyLmx0GmshaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+PSBydWxlcy5sdD8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmx0XSkgOiAnJ0gAEp0BCgNsdGUYAyABKA1CjQHCSIkBCoYBCgp1aW50MzIubHRlGnghaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+IHJ1bGVzLmx0ZT8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmx0ZV0pIDogJydIABKcBwoCZ3QYBCABKA1CjQfCSIkHCnsKCXVpbnQzMi5ndBpuIWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPD0gcnVsZXMuZ3Q/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndF0pIDogJycKtAEKDHVpbnQzMi5ndF9sdBqjAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKvAEKFnVpbnQzMi5ndF9sdF9leGNsdXNpdmUaoQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwrEAQoNdWludDMyLmd0X2x0ZRqyAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndCAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJycKzAEKF3VpbnQzMi5ndF9sdGVfZXhjbHVzaXZlGrABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJydIARLoBwoDZ3RlGAUgASgNQtgHwkjUBwqJAQoKdWludDMyLmd0ZRp7IWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPCBydWxlcy5ndGU/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGVdKSA6ICcnCsMBCg11aW50MzIuZ3RlX2x0GrEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCssBChd1aW50MzIuZ3RlX2x0X2V4Y2x1c2l2ZRqvAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycK0wEKDnVpbnQzMi5ndGVfbHRlGsABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnCtsBChh1aW50MzIuZ3RlX2x0ZV9leGNsdXNpdmUavgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnSAESgAEKAmluGAYgAygNQnTCSHEKbwoJdWludDMyLmluGmIhKHRoaXMgaW4gZ2V0RmllbGQocnVsZXMsICdpbicpKSA/ICd2YWx1ZSBtdXN0IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdpbicpXSkgOiAnJxJ3CgZub3RfaW4YByADKA1CZ8JIZApiCg11aW50MzIubm90X2luGlF0aGlzIGluIHJ1bGVzLm5vdF9pbiA/ICd2YWx1ZSBtdXN0IG5vdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW3J1bGVzLm5vdF9pbl0pIDogJycSLAoHZXhhbXBsZRgIIAMoDUIbwkgYChYKDnVpbnQzMi5leGFtcGxlGgR0cnVlKgkI6AcQgICAgAJCCwoJbGVzc190aGFuQg4KDGdyZWF0ZXJfdGhhbiKeFQoLVUludDY0UnVsZXMShAEKBWNvbnN0GAEgASgEQnXCSHIKcAoMdWludDY0LmNvbnN0GmB0aGlzICE9IGdldEZpZWxkKHJ1bGVzLCAnY29uc3QnKSA/ICd2YWx1ZSBtdXN0IGVxdWFsICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnY29uc3QnKV0pIDogJycSiwEKAmx0GAIgASgEQn3CSHoKeAoJdWludDY0Lmx0GmshaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+PSBydWxlcy5sdD8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmx0XSkgOiAnJ0gAEp0BCgNsdGUYAyABKARCjQHCSIkBCoYBCgp1aW50NjQubHRlGnghaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+IHJ1bGVzLmx0ZT8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmx0ZV0pIDogJydIABKcBwoCZ3QYBCABKARCjQfCSIkHCnsKCXVpbnQ2NC5ndBpuIWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPD0gcnVsZXMuZ3Q/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndF0pIDogJycKtAEKDHVpbnQ2NC5ndF9sdBqjAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKvAEKFnVpbnQ2NC5ndF9sdF9leGNsdXNpdmUaoQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwrEAQoNdWludDY0Lmd0X2x0ZRqyAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndCAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJycKzAEKF3VpbnQ2NC5ndF9sdGVfZXhjbHVzaXZlGrABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJydIARLoBwoDZ3RlGAUgASgEQtgHwkjUBwqJAQoKdWludDY0Lmd0ZRp7IWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPCBydWxlcy5ndGU/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGVdKSA6ICcnCsMBCg11aW50NjQuZ3RlX2x0GrEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCssBChd1aW50NjQuZ3RlX2x0X2V4Y2x1c2l2ZRqvAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycK0wEKDnVpbnQ2NC5ndGVfbHRlGsABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnCtsBChh1aW50NjQuZ3RlX2x0ZV9leGNsdXNpdmUavgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnSAESgAEKAmluGAYgAygEQnTCSHEKbwoJdWludDY0LmluGmIhKHRoaXMgaW4gZ2V0RmllbGQocnVsZXMsICdpbicpKSA/ICd2YWx1ZSBtdXN0IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdpbicpXSkgOiAnJxJ3CgZub3RfaW4YByADKARCZ8JIZApiCg11aW50NjQubm90X2luGlF0aGlzIGluIHJ1bGVzLm5vdF9pbiA/ICd2YWx1ZSBtdXN0IG5vdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW3J1bGVzLm5vdF9pbl0pIDogJycSLAoHZXhhbXBsZRgIIAMoBEIbwkgYChYKDnVpbnQ2NC5leGFtcGxlGgR0cnVlKgkI6AcQgICAgAJCCwoJbGVzc190aGFuQg4KDGdyZWF0ZXJfdGhhbiKeFQoLU0ludDMyUnVsZXMShAEKBWNvbnN0GAEgASgRQnXCSHIKcAoMc2ludDMyLmNvbnN0GmB0aGlzICE9IGdldEZpZWxkKHJ1bGVzLCAnY29uc3QnKSA/ICd2YWx1ZSBtdXN0IGVxdWFsICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnY29uc3QnKV0pIDogJycSiwEKAmx0GAIgASgRQn3CSHoKeAoJc2ludDMyLmx0GmshaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+PSBydWxlcy5sdD8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmx0XSkgOiAnJ0gAEp0BCgNsdGUYAyABKBFCjQHCSIkBCoYBCgpzaW50MzIubHRlGnghaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+IHJ1bGVzLmx0ZT8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmx0ZV0pIDogJydIABKcBwoCZ3QYBCABKBFCjQfCSIkHCnsKCXNpbnQzMi5ndBpuIWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPD0gcnVsZXMuZ3Q/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndF0pIDogJycKtAEKDHNpbnQzMi5ndF9sdBqjAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKvAEKFnNpbnQzMi5ndF9sdF9leGNsdXNpdmUaoQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwrEAQoNc2ludDMyLmd0X2x0ZRqyAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndCAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJycKzAEKF3NpbnQzMi5ndF9sdGVfZXhjbHVzaXZlGrABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJydIARLoBwoDZ3RlGAUgASgRQtgHwkjUBwqJAQoKc2ludDMyLmd0ZRp7IWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPCBydWxlcy5ndGU/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGVdKSA6ICcnCsMBCg1zaW50MzIuZ3RlX2x0GrEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCssBChdzaW50MzIuZ3RlX2x0X2V4Y2x1c2l2ZRqvAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycK0wEKDnNpbnQzMi5ndGVfbHRlGsABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnCtsBChhzaW50MzIuZ3RlX2x0ZV9leGNsdXNpdmUavgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnSAESgAEKAmluGAYgAygRQnTCSHEKbwoJc2ludDMyLmluGmIhKHRoaXMgaW4gZ2V0RmllbGQocnVsZXMsICdpbicpKSA/ICd2YWx1ZSBtdXN0IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdpbicpXSkgOiAnJxJ3CgZub3RfaW4YByADKBFCZ8JIZApiCg1zaW50MzIubm90X2luGlF0aGlzIGluIHJ1bGVzLm5vdF9pbiA/ICd2YWx1ZSBtdXN0IG5vdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW3J1bGVzLm5vdF9pbl0pIDogJycSLAoHZXhhbXBsZRgIIAMoEUIbwkgYChYKDnNpbnQzMi5leGFtcGxlGgR0cnVlKgkI6AcQgICAgAJCCwoJbGVzc190aGFuQg4KDGdyZWF0ZXJfdGhhbiKeFQoLU0ludDY0UnVsZXMShAEKBWNvbnN0GAEgASgSQnXCSHIKcAoMc2ludDY0LmNvbnN0GmB0aGlzICE9IGdldEZpZWxkKHJ1bGVzLCAnY29uc3QnKSA/ICd2YWx1ZSBtdXN0IGVxdWFsICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnY29uc3QnKV0pIDogJycSiwEKAmx0GAIgASgSQn3CSHoKeAoJc2ludDY0Lmx0GmshaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+PSBydWxlcy5sdD8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmx0XSkgOiAnJ0gAEp0BCgNsdGUYAyABKBJCjQHCSIkBCoYBCgpzaW50NjQubHRlGnghaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+IHJ1bGVzLmx0ZT8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmx0ZV0pIDogJydIABKcBwoCZ3QYBCABKBJCjQfCSIkHCnsKCXNpbnQ2NC5ndBpuIWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPD0gcnVsZXMuZ3Q/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndF0pIDogJycKtAEKDHNpbnQ2NC5ndF9sdBqjAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKvAEKFnNpbnQ2NC5ndF9sdF9leGNsdXNpdmUaoQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwrEAQoNc2ludDY0Lmd0X2x0ZRqyAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndCAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJycKzAEKF3NpbnQ2NC5ndF9sdGVfZXhjbHVzaXZlGrABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJydIARLoBwoDZ3RlGAUgASgSQtgHwkjUBwqJAQoKc2ludDY0Lmd0ZRp7IWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPCBydWxlcy5ndGU/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGVdKSA6ICcnCsMBCg1zaW50NjQuZ3RlX2x0GrEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCssBChdzaW50NjQuZ3RlX2x0X2V4Y2x1c2l2ZRqvAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycK0wEKDnNpbnQ2NC5ndGVfbHRlGsABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnCtsBChhzaW50NjQuZ3RlX2x0ZV9leGNsdXNpdmUavgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnSAESgAEKAmluGAYgAygSQnTCSHEKbwoJc2ludDY0LmluGmIhKHRoaXMgaW4gZ2V0RmllbGQocnVsZXMsICdpbicpKSA/ICd2YWx1ZSBtdXN0IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdpbicpXSkgOiAnJxJ3CgZub3RfaW4YByADKBJCZ8JIZApiCg1zaW50NjQubm90X2luGlF0aGlzIGluIHJ1bGVzLm5vdF9pbiA/ICd2YWx1ZSBtdXN0IG5vdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW3J1bGVzLm5vdF9pbl0pIDogJycSLAoHZXhhbXBsZRgIIAMoEkIbwkgYChYKDnNpbnQ2NC5leGFtcGxlGgR0cnVlKgkI6AcQgICAgAJCCwoJbGVzc190aGFuQg4KDGdyZWF0ZXJfdGhhbiKvFQoMRml4ZWQzMlJ1bGVzEoUBCgVjb25zdBgBIAEoB0J2wkhzCnEKDWZpeGVkMzIuY29uc3QaYHRoaXMgIT0gZ2V0RmllbGQocnVsZXMsICdjb25zdCcpID8gJ3ZhbHVlIG11c3QgZXF1YWwgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdjb25zdCcpXSkgOiAnJxKMAQoCbHQYAiABKAdCfsJIewp5CgpmaXhlZDMyLmx0GmshaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+PSBydWxlcy5sdD8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmx0XSkgOiAnJ0gAEp4BCgNsdGUYAyABKAdCjgHCSIoBCocBCgtmaXhlZDMyLmx0ZRp4IWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPiBydWxlcy5sdGU/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5sdGVdKSA6ICcnSAASoQcKAmd0GAQgASgHQpIHwkiOBwp8CgpmaXhlZDMyLmd0Gm4haGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8PSBydWxlcy5ndD8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0XSkgOiAnJwq1AQoNZml4ZWQzMi5ndF9sdBqjAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKvQEKF2ZpeGVkMzIuZ3RfbHRfZXhjbHVzaXZlGqEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKxQEKDmZpeGVkMzIuZ3RfbHRlGrIBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJwrNAQoYZml4ZWQzMi5ndF9sdGVfZXhjbHVzaXZlGrABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJydIARLtBwoDZ3RlGAUgASgHQt0HwkjZBwqKAQoLZml4ZWQzMi5ndGUaeyFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDwgcnVsZXMuZ3RlPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlXSkgOiAnJwrEAQoOZml4ZWQzMi5ndGVfbHQasQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycKzAEKGGZpeGVkMzIuZ3RlX2x0X2V4Y2x1c2l2ZRqvAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycK1AEKD2ZpeGVkMzIuZ3RlX2x0ZRrAAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJwrcAQoZZml4ZWQzMi5ndGVfbHRlX2V4Y2x1c2l2ZRq+AWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJydIARKBAQoCaW4YBiADKAdCdcJIcgpwCgpmaXhlZDMyLmluGmIhKHRoaXMgaW4gZ2V0RmllbGQocnVsZXMsICdpbicpKSA/ICd2YWx1ZSBtdXN0IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdpbicpXSkgOiAnJxJ4CgZub3RfaW4YByADKAdCaMJIZQpjCg5maXhlZDMyLm5vdF9pbhpRdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAndmFsdWUgbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnEi0KB2V4YW1wbGUYCCADKAdCHMJIGQoXCg9maXhlZDMyLmV4YW1wbGUaBHRydWUqCQjoBxCAgICAAkILCglsZXNzX3RoYW5CDgoMZ3JlYXRlcl90aGFuIq8VCgxGaXhlZDY0UnVsZXMShQEKBWNvbnN0GAEgASgGQnbCSHMKcQoNZml4ZWQ2NC5jb25zdBpgdGhpcyAhPSBnZXRGaWVsZChydWxlcywgJ2NvbnN0JykgPyAndmFsdWUgbXVzdCBlcXVhbCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2NvbnN0JyldKSA6ICcnEowBCgJsdBgCIAEoBkJ+wkh7CnkKCmZpeGVkNjQubHQaayFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiB0aGlzID49IHJ1bGVzLmx0PyAndmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMubHRdKSA6ICcnSAASngEKA2x0ZRgDIAEoBkKOAcJIigEKhwEKC2ZpeGVkNjQubHRlGnghaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+IHJ1bGVzLmx0ZT8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmx0ZV0pIDogJydIABKhBwoCZ3QYBCABKAZCkgfCSI4HCnwKCmZpeGVkNjQuZ3QabiFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDw9IHJ1bGVzLmd0PyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RdKSA6ICcnCrUBCg1maXhlZDY0Lmd0X2x0GqMBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndCAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwq9AQoXZml4ZWQ2NC5ndF9sdF9leGNsdXNpdmUaoQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwrFAQoOZml4ZWQ2NC5ndF9sdGUasgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnCs0BChhmaXhlZDY0Lmd0X2x0ZV9leGNsdXNpdmUasAFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndCAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJ0gBEu0HCgNndGUYBSABKAZC3QfCSNkHCooBCgtmaXhlZDY0Lmd0ZRp7IWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPCBydWxlcy5ndGU/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGVdKSA6ICcnCsQBCg5maXhlZDY0Lmd0ZV9sdBqxAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3RlICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrMAQoYZml4ZWQ2NC5ndGVfbHRfZXhjbHVzaXZlGq8BaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrUAQoPZml4ZWQ2NC5ndGVfbHRlGsABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnCtwBChlmaXhlZDY0Lmd0ZV9sdGVfZXhjbHVzaXZlGr4BaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJ0gBEoEBCgJpbhgGIAMoBkJ1wkhyCnAKCmZpeGVkNjQuaW4aYiEodGhpcyBpbiBnZXRGaWVsZChydWxlcywgJ2luJykpID8gJ3ZhbHVlIG11c3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2luJyldKSA6ICcnEngKBm5vdF9pbhgHIAMoBkJowkhlCmMKDmZpeGVkNjQubm90X2luGlF0aGlzIGluIHJ1bGVzLm5vdF9pbiA/ICd2YWx1ZSBtdXN0IG5vdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW3J1bGVzLm5vdF9pbl0pIDogJycSLQoHZXhhbXBsZRgIIAMoBkIcwkgZChcKD2ZpeGVkNjQuZXhhbXBsZRoEdHJ1ZSoJCOgHEICAgIACQgsKCWxlc3NfdGhhbkIOCgxncmVhdGVyX3RoYW4iwBUKDVNGaXhlZDMyUnVsZXMShgEKBWNvbnN0GAEgASgPQnfCSHQKcgoOc2ZpeGVkMzIuY29uc3QaYHRoaXMgIT0gZ2V0RmllbGQocnVsZXMsICdjb25zdCcpID8gJ3ZhbHVlIG11c3QgZXF1YWwgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdjb25zdCcpXSkgOiAnJxKNAQoCbHQYAiABKA9Cf8JIfAp6CgtzZml4ZWQzMi5sdBprIWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPj0gcnVsZXMubHQ/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5sdF0pIDogJydIABKfAQoDbHRlGAMgASgPQo8BwkiLAQqIAQoMc2ZpeGVkMzIubHRlGnghaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+IHJ1bGVzLmx0ZT8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmx0ZV0pIDogJydIABKmBwoCZ3QYBCABKA9ClwfCSJMHCn0KC3NmaXhlZDMyLmd0Gm4haGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8PSBydWxlcy5ndD8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0XSkgOiAnJwq2AQoOc2ZpeGVkMzIuZ3RfbHQaowFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCr4BChhzZml4ZWQzMi5ndF9sdF9leGNsdXNpdmUaoQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwrGAQoPc2ZpeGVkMzIuZ3RfbHRlGrIBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJwrOAQoZc2ZpeGVkMzIuZ3RfbHRlX2V4Y2x1c2l2ZRqwAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnSAES8gcKA2d0ZRgFIAEoD0LiB8JI3gcKiwEKDHNmaXhlZDMyLmd0ZRp7IWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPCBydWxlcy5ndGU/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGVdKSA6ICcnCsUBCg9zZml4ZWQzMi5ndGVfbHQasQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycKzQEKGXNmaXhlZDMyLmd0ZV9sdF9leGNsdXNpdmUarwFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCtUBChBzZml4ZWQzMi5ndGVfbHRlGsABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnCt0BChpzZml4ZWQzMi5ndGVfbHRlX2V4Y2x1c2l2ZRq+AWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJydIARKCAQoCaW4YBiADKA9CdsJIcwpxCgtzZml4ZWQzMi5pbhpiISh0aGlzIGluIGdldEZpZWxkKHJ1bGVzLCAnaW4nKSkgPyAndmFsdWUgbXVzdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnaW4nKV0pIDogJycSeQoGbm90X2luGAcgAygPQmnCSGYKZAoPc2ZpeGVkMzIubm90X2luGlF0aGlzIGluIHJ1bGVzLm5vdF9pbiA/ICd2YWx1ZSBtdXN0IG5vdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW3J1bGVzLm5vdF9pbl0pIDogJycSLgoHZXhhbXBsZRgIIAMoD0IdwkgaChgKEHNmaXhlZDMyLmV4YW1wbGUaBHRydWUqCQjoBxCAgICAAkILCglsZXNzX3RoYW5CDgoMZ3JlYXRlcl90aGFuIsAVCg1TRml4ZWQ2NFJ1bGVzEoYBCgVjb25zdBgBIAEoEEJ3wkh0CnIKDnNmaXhlZDY0LmNvbnN0GmB0aGlzICE9IGdldEZpZWxkKHJ1bGVzLCAnY29uc3QnKSA/ICd2YWx1ZSBtdXN0IGVxdWFsICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnY29uc3QnKV0pIDogJycSjQEKAmx0GAIgASgQQn/CSHwKegoLc2ZpeGVkNjQubHQaayFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiB0aGlzID49IHJ1bGVzLmx0PyAndmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMubHRdKSA6ICcnSAASnwEKA2x0ZRgDIAEoEEKPAcJIiwEKiAEKDHNmaXhlZDY0Lmx0ZRp4IWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPiBydWxlcy5sdGU/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5sdGVdKSA6ICcnSAASpgcKAmd0GAQgASgQQpcHwkiTBwp9CgtzZml4ZWQ2NC5ndBpuIWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPD0gcnVsZXMuZ3Q/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndF0pIDogJycKtgEKDnNmaXhlZDY0Lmd0X2x0GqMBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndCAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwq+AQoYc2ZpeGVkNjQuZ3RfbHRfZXhjbHVzaXZlGqEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKxgEKD3NmaXhlZDY0Lmd0X2x0ZRqyAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndCAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJycKzgEKGXNmaXhlZDY0Lmd0X2x0ZV9leGNsdXNpdmUasAFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndCAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJ0gBEvIHCgNndGUYBSABKBBC4gfCSN4HCosBCgxzZml4ZWQ2NC5ndGUaeyFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDwgcnVsZXMuZ3RlPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlXSkgOiAnJwrFAQoPc2ZpeGVkNjQuZ3RlX2x0GrEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCs0BChlzZml4ZWQ2NC5ndGVfbHRfZXhjbHVzaXZlGq8BaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrVAQoQc2ZpeGVkNjQuZ3RlX2x0ZRrAAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJwrdAQoac2ZpeGVkNjQuZ3RlX2x0ZV9leGNsdXNpdmUavgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnSAESggEKAmluGAYgAygQQnbCSHMKcQoLc2ZpeGVkNjQuaW4aYiEodGhpcyBpbiBnZXRGaWVsZChydWxlcywgJ2luJykpID8gJ3ZhbHVlIG11c3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2luJyldKSA6ICcnEnkKBm5vdF9pbhgHIAMoEEJpwkhmCmQKD3NmaXhlZDY0Lm5vdF9pbhpRdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAndmFsdWUgbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnEi4KB2V4YW1wbGUYCCADKBBCHcJIGgoYChBzZml4ZWQ2NC5leGFtcGxlGgR0cnVlKgkI6AcQgICAgAJCCwoJbGVzc190aGFuQg4KDGdyZWF0ZXJfdGhhbiLHAQoJQm9vbFJ1bGVzEoIBCgVjb25zdBgBIAEoCEJzwkhwCm4KCmJvb2wuY29uc3QaYHRoaXMgIT0gZ2V0RmllbGQocnVsZXMsICdjb25zdCcpID8gJ3ZhbHVlIG11c3QgZXF1YWwgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdjb25zdCcpXSkgOiAnJxIqCgdleGFtcGxlGAIgAygIQhnCSBYKFAoMYm9vbC5leGFtcGxlGgR0cnVlKgkI6AcQgICAgAIiiDkKC1N0cmluZ1J1bGVzEoYBCgVjb25zdBgBIAEoCUJ3wkh0CnIKDHN0cmluZy5jb25zdBpidGhpcyAhPSBnZXRGaWVsZChydWxlcywgJ2NvbnN0JykgPyAndmFsdWUgbXVzdCBlcXVhbCBgJXNgJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnY29uc3QnKV0pIDogJycSfgoDbGVuGBMgASgEQnHCSG4KbAoKc3RyaW5nLmxlbhpedWludCh0aGlzLnNpemUoKSkgIT0gcnVsZXMubGVuID8gJ3ZhbHVlIGxlbmd0aCBtdXN0IGJlICVzIGNoYXJhY3RlcnMnLmZvcm1hdChbcnVsZXMubGVuXSkgOiAnJxKZAQoHbWluX2xlbhgCIAEoBEKHAcJIgwEKgAEKDnN0cmluZy5taW5fbGVuGm51aW50KHRoaXMuc2l6ZSgpKSA8IHJ1bGVzLm1pbl9sZW4gPyAndmFsdWUgbGVuZ3RoIG11c3QgYmUgYXQgbGVhc3QgJXMgY2hhcmFjdGVycycuZm9ybWF0KFtydWxlcy5taW5fbGVuXSkgOiAnJxKXAQoHbWF4X2xlbhgDIAEoBEKFAcJIgQEKfwoOc3RyaW5nLm1heF9sZW4abXVpbnQodGhpcy5zaXplKCkpID4gcnVsZXMubWF4X2xlbiA/ICd2YWx1ZSBsZW5ndGggbXVzdCBiZSBhdCBtb3N0ICVzIGNoYXJhY3RlcnMnLmZvcm1hdChbcnVsZXMubWF4X2xlbl0pIDogJycSmwEKCWxlbl9ieXRlcxgUIAEoBEKHAcJIgwEKgAEKEHN0cmluZy5sZW5fYnl0ZXMabHVpbnQoYnl0ZXModGhpcykuc2l6ZSgpKSAhPSBydWxlcy5sZW5fYnl0ZXMgPyAndmFsdWUgbGVuZ3RoIG11c3QgYmUgJXMgYnl0ZXMnLmZvcm1hdChbcnVsZXMubGVuX2J5dGVzXSkgOiAnJxKjAQoJbWluX2J5dGVzGAQgASgEQo8BwkiLAQqIAQoQc3RyaW5nLm1pbl9ieXRlcxp0dWludChieXRlcyh0aGlzKS5zaXplKCkpIDwgcnVsZXMubWluX2J5dGVzID8gJ3ZhbHVlIGxlbmd0aCBtdXN0IGJlIGF0IGxlYXN0ICVzIGJ5dGVzJy5mb3JtYXQoW3J1bGVzLm1pbl9ieXRlc10pIDogJycSogEKCW1heF9ieXRlcxgFIAEoBEKOAcJIigEKhwEKEHN0cmluZy5tYXhfYnl0ZXMac3VpbnQoYnl0ZXModGhpcykuc2l6ZSgpKSA+IHJ1bGVzLm1heF9ieXRlcyA/ICd2YWx1ZSBsZW5ndGggbXVzdCBiZSBhdCBtb3N0ICVzIGJ5dGVzJy5mb3JtYXQoW3J1bGVzLm1heF9ieXRlc10pIDogJycSjQEKB3BhdHRlcm4YBiABKAlCfMJIeQp3Cg5zdHJpbmcucGF0dGVybhplIXRoaXMubWF0Y2hlcyhydWxlcy5wYXR0ZXJuKSA/ICd2YWx1ZSBkb2VzIG5vdCBtYXRjaCByZWdleCBwYXR0ZXJuIGAlc2AnLmZvcm1hdChbcnVsZXMucGF0dGVybl0pIDogJycShAEKBnByZWZpeBgHIAEoCUJ0wkhxCm8KDXN0cmluZy5wcmVmaXgaXiF0aGlzLnN0YXJ0c1dpdGgocnVsZXMucHJlZml4KSA/ICd2YWx1ZSBkb2VzIG5vdCBoYXZlIHByZWZpeCBgJXNgJy5mb3JtYXQoW3J1bGVzLnByZWZpeF0pIDogJycSggEKBnN1ZmZpeBgIIAEoCUJywkhvCm0KDXN0cmluZy5zdWZmaXgaXCF0aGlzLmVuZHNXaXRoKHJ1bGVzLnN1ZmZpeCkgPyAndmFsdWUgZG9lcyBub3QgaGF2ZSBzdWZmaXggYCVzYCcuZm9ybWF0KFtydWxlcy5zdWZmaXhdKSA6ICcnEpABCghjb250YWlucxgJIAEoCUJ+wkh7CnkKD3N0cmluZy5jb250YWlucxpmIXRoaXMuY29udGFpbnMocnVsZXMuY29udGFpbnMpID8gJ3ZhbHVlIGRvZXMgbm90IGNvbnRhaW4gc3Vic3RyaW5nIGAlc2AnLmZvcm1hdChbcnVsZXMuY29udGFpbnNdKSA6ICcnEpgBCgxub3RfY29udGFpbnMYFyABKAlCgQHCSH4KfAoTc3RyaW5nLm5vdF9jb250YWlucxpldGhpcy5jb250YWlucyhydWxlcy5ub3RfY29udGFpbnMpID8gJ3ZhbHVlIGNvbnRhaW5zIHN1YnN0cmluZyBgJXNgJy5mb3JtYXQoW3J1bGVzLm5vdF9jb250YWluc10pIDogJycSgAEKAmluGAogAygJQnTCSHEKbwoJc3RyaW5nLmluGmIhKHRoaXMgaW4gZ2V0RmllbGQocnVsZXMsICdpbicpKSA/ICd2YWx1ZSBtdXN0IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdpbicpXSkgOiAnJxJ3CgZub3RfaW4YCyADKAlCZ8JIZApiCg1zdHJpbmcubm90X2luGlF0aGlzIGluIHJ1bGVzLm5vdF9pbiA/ICd2YWx1ZSBtdXN0IG5vdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW3J1bGVzLm5vdF9pbl0pIDogJycS3wEKBWVtYWlsGAwgASgIQs0BwkjJAQphCgxzdHJpbmcuZW1haWwSI3ZhbHVlIG11c3QgYmUgYSB2YWxpZCBlbWFpbCBhZGRyZXNzGiwhcnVsZXMuZW1haWwgfHwgdGhpcyA9PSAnJyB8fCB0aGlzLmlzRW1haWwoKQpkChJzdHJpbmcuZW1haWxfZW1wdHkSMnZhbHVlIGlzIGVtcHR5LCB3aGljaCBpcyBub3QgYSB2YWxpZCBlbWFpbCBhZGRyZXNzGhohcnVsZXMuZW1haWwgfHwgdGhpcyAhPSAnJ0gAEucBCghob3N0bmFtZRgNIAEoCELSAcJIzgEKZQoPc3RyaW5nLmhvc3RuYW1lEh52YWx1ZSBtdXN0IGJlIGEgdmFsaWQgaG9zdG5hbWUaMiFydWxlcy5ob3N0bmFtZSB8fCB0aGlzID09ICcnIHx8IHRoaXMuaXNIb3N0bmFtZSgpCmUKFXN0cmluZy5ob3N0bmFtZV9lbXB0eRItdmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIGhvc3RuYW1lGh0hcnVsZXMuaG9zdG5hbWUgfHwgdGhpcyAhPSAnJ0gAEscBCgJpcBgOIAEoCEK4AcJItAEKVQoJc3RyaW5nLmlwEiB2YWx1ZSBtdXN0IGJlIGEgdmFsaWQgSVAgYWRkcmVzcxomIXJ1bGVzLmlwIHx8IHRoaXMgPT0gJycgfHwgdGhpcy5pc0lwKCkKWwoPc3RyaW5nLmlwX2VtcHR5Ei92YWx1ZSBpcyBlbXB0eSwgd2hpY2ggaXMgbm90IGEgdmFsaWQgSVAgYWRkcmVzcxoXIXJ1bGVzLmlwIHx8IHRoaXMgIT0gJydIABLWAQoEaXB2NBgPIAEoCELFAcJIwQEKXAoLc3RyaW5nLmlwdjQSInZhbHVlIG11c3QgYmUgYSB2YWxpZCBJUHY0IGFkZHJlc3MaKSFydWxlcy5pcHY0IHx8IHRoaXMgPT0gJycgfHwgdGhpcy5pc0lwKDQpCmEKEXN0cmluZy5pcHY0X2VtcHR5EjF2YWx1ZSBpcyBlbXB0eSwgd2hpY2ggaXMgbm90IGEgdmFsaWQgSVB2NCBhZGRyZXNzGhkhcnVsZXMuaXB2NCB8fCB0aGlzICE9ICcnSAAS1gEKBGlwdjYYECABKAhCxQHCSMEBClwKC3N0cmluZy5pcHY2EiJ2YWx1ZSBtdXN0IGJlIGEgdmFsaWQgSVB2NiBhZGRyZXNzGikhcnVsZXMuaXB2NiB8fCB0aGlzID09ICcnIHx8IHRoaXMuaXNJcCg2KQphChFzdHJpbmcuaXB2Nl9lbXB0eRIxdmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIElQdjYgYWRkcmVzcxoZIXJ1bGVzLmlwdjYgfHwgdGhpcyAhPSAnJ0gAEr8BCgN1cmkYESABKAhCrwHCSKsBClEKCnN0cmluZy51cmkSGXZhbHVlIG11c3QgYmUgYSB2YWxpZCBVUkkaKCFydWxlcy51cmkgfHwgdGhpcyA9PSAnJyB8fCB0aGlzLmlzVXJpKCkKVgoQc3RyaW5nLnVyaV9lbXB0eRIodmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIFVSSRoYIXJ1bGVzLnVyaSB8fCB0aGlzICE9ICcnSAAScAoHdXJpX3JlZhgSIAEoCEJdwkhaClgKDnN0cmluZy51cmlfcmVmEiN2YWx1ZSBtdXN0IGJlIGEgdmFsaWQgVVJJIFJlZmVyZW5jZRohIXJ1bGVzLnVyaV9yZWYgfHwgdGhpcy5pc1VyaVJlZigpSAASkAIKB2FkZHJlc3MYFSABKAhC/AHCSPgBCoEBCg5zdHJpbmcuYWRkcmVzcxItdmFsdWUgbXVzdCBiZSBhIHZhbGlkIGhvc3RuYW1lLCBvciBpcCBhZGRyZXNzGkAhcnVsZXMuYWRkcmVzcyB8fCB0aGlzID09ICcnIHx8IHRoaXMuaXNIb3N0bmFtZSgpIHx8IHRoaXMuaXNJcCgpCnIKFHN0cmluZy5hZGRyZXNzX2VtcHR5Ejx2YWx1ZSBpcyBlbXB0eSwgd2hpY2ggaXMgbm90IGEgdmFsaWQgaG9zdG5hbWUsIG9yIGlwIGFkZHJlc3MaHCFydWxlcy5hZGRyZXNzIHx8IHRoaXMgIT0gJydIABKYAgoEdXVpZBgWIAEoCEKHAsJIgwIKpQEKC3N0cmluZy51dWlkEhp2YWx1ZSBtdXN0IGJlIGEgdmFsaWQgVVVJRBp6IXJ1bGVzLnV1aWQgfHwgdGhpcyA9PSAnJyB8fCB0aGlzLm1hdGNoZXMoJ15bMC05YS1mQS1GXXs4fS1bMC05YS1mQS1GXXs0fS1bMC05YS1mQS1GXXs0fS1bMC05YS1mQS1GXXs0fS1bMC05YS1mQS1GXXsxMn0kJykKWQoRc3RyaW5nLnV1aWRfZW1wdHkSKXZhbHVlIGlzIGVtcHR5LCB3aGljaCBpcyBub3QgYSB2YWxpZCBVVUlEGhkhcnVsZXMudXVpZCB8fCB0aGlzICE9ICcnSAAS8AEKBXR1dWlkGCEgASgIQt4BwkjaAQpzCgxzdHJpbmcudHV1aWQSInZhbHVlIG11c3QgYmUgYSB2YWxpZCB0cmltbWVkIFVVSUQaPyFydWxlcy50dXVpZCB8fCB0aGlzID09ICcnIHx8IHRoaXMubWF0Y2hlcygnXlswLTlhLWZBLUZdezMyfSQnKQpjChJzdHJpbmcudHV1aWRfZW1wdHkSMXZhbHVlIGlzIGVtcHR5LCB3aGljaCBpcyBub3QgYSB2YWxpZCB0cmltbWVkIFVVSUQaGiFydWxlcy50dXVpZCB8fCB0aGlzICE9ICcnSAASlgIKEWlwX3dpdGhfcHJlZml4bGVuGBogASgIQvgBwkj0AQp4ChhzdHJpbmcuaXBfd2l0aF9wcmVmaXhsZW4SH3ZhbHVlIG11c3QgYmUgYSB2YWxpZCBJUCBwcmVmaXgaOyFydWxlcy5pcF93aXRoX3ByZWZpeGxlbiB8fCB0aGlzID09ICcnIHx8IHRoaXMuaXNJcFByZWZpeCgpCngKHnN0cmluZy5pcF93aXRoX3ByZWZpeGxlbl9lbXB0eRIudmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIElQIHByZWZpeBomIXJ1bGVzLmlwX3dpdGhfcHJlZml4bGVuIHx8IHRoaXMgIT0gJydIABLPAgoTaXB2NF93aXRoX3ByZWZpeGxlbhgbIAEoCEKvAsJIqwIKkwEKGnN0cmluZy5pcHY0X3dpdGhfcHJlZml4bGVuEjV2YWx1ZSBtdXN0IGJlIGEgdmFsaWQgSVB2NCBhZGRyZXNzIHdpdGggcHJlZml4IGxlbmd0aBo+IXJ1bGVzLmlwdjRfd2l0aF9wcmVmaXhsZW4gfHwgdGhpcyA9PSAnJyB8fCB0aGlzLmlzSXBQcmVmaXgoNCkKkgEKIHN0cmluZy5pcHY0X3dpdGhfcHJlZml4bGVuX2VtcHR5EkR2YWx1ZSBpcyBlbXB0eSwgd2hpY2ggaXMgbm90IGEgdmFsaWQgSVB2NCBhZGRyZXNzIHdpdGggcHJlZml4IGxlbmd0aBooIXJ1bGVzLmlwdjRfd2l0aF9wcmVmaXhsZW4gfHwgdGhpcyAhPSAnJ0gAEs8CChNpcHY2X3dpdGhfcHJlZml4bGVuGBwgASgIQq8CwkirAgqTAQoac3RyaW5nLmlwdjZfd2l0aF9wcmVmaXhsZW4SNXZhbHVlIG11c3QgYmUgYSB2YWxpZCBJUHY2IGFkZHJlc3Mgd2l0aCBwcmVmaXggbGVuZ3RoGj4hcnVsZXMuaXB2Nl93aXRoX3ByZWZpeGxlbiB8fCB0aGlzID09ICcnIHx8IHRoaXMuaXNJcFByZWZpeCg2KQqSAQogc3RyaW5nLmlwdjZfd2l0aF9wcmVmaXhsZW5fZW1wdHkSRHZhbHVlIGlzIGVtcHR5LCB3aGljaCBpcyBub3QgYSB2YWxpZCBJUHY2IGFkZHJlc3Mgd2l0aCBwcmVmaXggbGVuZ3RoGighcnVsZXMuaXB2Nl93aXRoX3ByZWZpeGxlbiB8fCB0aGlzICE9ICcnSAAS8gEKCWlwX3ByZWZpeBgdIAEoCELcAcJI2AEKbAoQc3RyaW5nLmlwX3ByZWZpeBIfdmFsdWUgbXVzdCBiZSBhIHZhbGlkIElQIHByZWZpeBo3IXJ1bGVzLmlwX3ByZWZpeCB8fCB0aGlzID09ICcnIHx8IHRoaXMuaXNJcFByZWZpeCh0cnVlKQpoChZzdHJpbmcuaXBfcHJlZml4X2VtcHR5Ei52YWx1ZSBpcyBlbXB0eSwgd2hpY2ggaXMgbm90IGEgdmFsaWQgSVAgcHJlZml4Gh4hcnVsZXMuaXBfcHJlZml4IHx8IHRoaXMgIT0gJydIABKDAgoLaXB2NF9wcmVmaXgYHiABKAhC6wHCSOcBCnUKEnN0cmluZy5pcHY0X3ByZWZpeBIhdmFsdWUgbXVzdCBiZSBhIHZhbGlkIElQdjQgcHJlZml4GjwhcnVsZXMuaXB2NF9wcmVmaXggfHwgdGhpcyA9PSAnJyB8fCB0aGlzLmlzSXBQcmVmaXgoNCwgdHJ1ZSkKbgoYc3RyaW5nLmlwdjRfcHJlZml4X2VtcHR5EjB2YWx1ZSBpcyBlbXB0eSwgd2hpY2ggaXMgbm90IGEgdmFsaWQgSVB2NCBwcmVmaXgaICFydWxlcy5pcHY0X3ByZWZpeCB8fCB0aGlzICE9ICcnSAASgwIKC2lwdjZfcHJlZml4GB8gASgIQusBwkjnAQp1ChJzdHJpbmcuaXB2Nl9wcmVmaXgSIXZhbHVlIG11c3QgYmUgYSB2YWxpZCBJUHY2IHByZWZpeBo8IXJ1bGVzLmlwdjZfcHJlZml4IHx8IHRoaXMgPT0gJycgfHwgdGhpcy5pc0lwUHJlZml4KDYsIHRydWUpCm4KGHN0cmluZy5pcHY2X3ByZWZpeF9lbXB0eRIwdmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIElQdjYgcHJlZml4GiAhcnVsZXMuaXB2Nl9wcmVmaXggfHwgdGhpcyAhPSAnJ0gAErUCCg1ob3N0X2FuZF9wb3J0GCAgASgIQpsCwkiXAgqZAQoUc3RyaW5nLmhvc3RfYW5kX3BvcnQSQXZhbHVlIG11c3QgYmUgYSB2YWxpZCBob3N0IChob3N0bmFtZSBvciBJUCBhZGRyZXNzKSBhbmQgcG9ydCBwYWlyGj4hcnVsZXMuaG9zdF9hbmRfcG9ydCB8fCB0aGlzID09ICcnIHx8IHRoaXMuaXNIb3N0QW5kUG9ydCh0cnVlKQp5ChpzdHJpbmcuaG9zdF9hbmRfcG9ydF9lbXB0eRI3dmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIGhvc3QgYW5kIHBvcnQgcGFpchoiIXJ1bGVzLmhvc3RfYW5kX3BvcnQgfHwgdGhpcyAhPSAnJ0gAEvUBCgR1bGlkGCMgASgIQuQBwkjgAQqCAQoLc3RyaW5nLnVsaWQSGnZhbHVlIG11c3QgYmUgYSB2YWxpZCBVTElEGlchcnVsZXMudWxpZCB8fCB0aGlzID09ICcnIHx8IHRoaXMubWF0Y2hlcygnXlswLTddWzAtOUEtSEpLTU5QLVRWLVphLWhqa21ucC10di16XXsyNX0kJykKWQoRc3RyaW5nLnVsaWRfZW1wdHkSKXZhbHVlIGlzIGVtcHR5LCB3aGljaCBpcyBub3QgYSB2YWxpZCBVTElEGhkhcnVsZXMudWxpZCB8fCB0aGlzICE9ICcnSAASqAUKEHdlbGxfa25vd25fcmVnZXgYGCABKA4yGC5idWYudmFsaWRhdGUuS25vd25SZWdleELxBMJI7QQK8AEKI3N0cmluZy53ZWxsX2tub3duX3JlZ2V4LmhlYWRlcl9uYW1lEiZ2YWx1ZSBtdXN0IGJlIGEgdmFsaWQgSFRUUCBoZWFkZXIgbmFtZRqgAXJ1bGVzLndlbGxfa25vd25fcmVnZXggIT0gMSB8fCB0aGlzID09ICcnIHx8IHRoaXMubWF0Y2hlcyghaGFzKHJ1bGVzLnN0cmljdCkgfHwgcnVsZXMuc3RyaWN0ID8nXjo/WzAtOWEtekEtWiEjJCUmXCcqKy0uXl98flx4NjBdKyQnIDonXlteXHUwMDAwXHUwMDBBXHUwMDBEXSskJykKjQEKKXN0cmluZy53ZWxsX2tub3duX3JlZ2V4LmhlYWRlcl9uYW1lX2VtcHR5EjV2YWx1ZSBpcyBlbXB0eSwgd2hpY2ggaXMgbm90IGEgdmFsaWQgSFRUUCBoZWFkZXIgbmFtZRopcnVsZXMud2VsbF9rbm93bl9yZWdleCAhPSAxIHx8IHRoaXMgIT0gJycK5wEKJHN0cmluZy53ZWxsX2tub3duX3JlZ2V4LmhlYWRlcl92YWx1ZRIndmFsdWUgbXVzdCBiZSBhIHZhbGlkIEhUVFAgaGVhZGVyIHZhbHVlGpUBcnVsZXMud2VsbF9rbm93bl9yZWdleCAhPSAyIHx8IHRoaXMubWF0Y2hlcyghaGFzKHJ1bGVzLnN0cmljdCkgfHwgcnVsZXMuc3RyaWN0ID8nXlteXHUwMDAwLVx1MDAwOFx1MDAwQS1cdTAwMUZcdTAwN0ZdKiQnIDonXlteXHUwMDAwXHUwMDBBXHUwMDBEXSokJylIABIOCgZzdHJpY3QYGSABKAgSLAoHZXhhbXBsZRgiIAMoCUIbwkgYChYKDnN0cmluZy5leGFtcGxlGgR0cnVlKgkI6AcQgICAgAJCDAoKd2VsbF9rbm93biLCEgoKQnl0ZXNSdWxlcxKAAQoFY29uc3QYASABKAxCccJIbgpsCgtieXRlcy5jb25zdBpddGhpcyAhPSBnZXRGaWVsZChydWxlcywgJ2NvbnN0JykgPyAndmFsdWUgbXVzdCBiZSAleCcuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2NvbnN0JyldKSA6ICcnEngKA2xlbhgNIAEoBEJrwkhoCmYKCWJ5dGVzLmxlbhpZdWludCh0aGlzLnNpemUoKSkgIT0gcnVsZXMubGVuID8gJ3ZhbHVlIGxlbmd0aCBtdXN0IGJlICVzIGJ5dGVzJy5mb3JtYXQoW3J1bGVzLmxlbl0pIDogJycSkAEKB21pbl9sZW4YAiABKARCf8JIfAp6Cg1ieXRlcy5taW5fbGVuGml1aW50KHRoaXMuc2l6ZSgpKSA8IHJ1bGVzLm1pbl9sZW4gPyAndmFsdWUgbGVuZ3RoIG11c3QgYmUgYXQgbGVhc3QgJXMgYnl0ZXMnLmZvcm1hdChbcnVsZXMubWluX2xlbl0pIDogJycSiAEKB21heF9sZW4YAyABKARCd8JIdApyCg1ieXRlcy5tYXhfbGVuGmF1aW50KHRoaXMuc2l6ZSgpKSA+IHJ1bGVzLm1heF9sZW4gPyAndmFsdWUgbXVzdCBiZSBhdCBtb3N0ICVzIGJ5dGVzJy5mb3JtYXQoW3J1bGVzLm1heF9sZW5dKSA6ICcnEpABCgdwYXR0ZXJuGAQgASgJQn/CSHwKegoNYnl0ZXMucGF0dGVybhppIXN0cmluZyh0aGlzKS5tYXRjaGVzKHJ1bGVzLnBhdHRlcm4pID8gJ3ZhbHVlIG11c3QgbWF0Y2ggcmVnZXggcGF0dGVybiBgJXNgJy5mb3JtYXQoW3J1bGVzLnBhdHRlcm5dKSA6ICcnEoEBCgZwcmVmaXgYBSABKAxCccJIbgpsCgxieXRlcy5wcmVmaXgaXCF0aGlzLnN0YXJ0c1dpdGgocnVsZXMucHJlZml4KSA/ICd2YWx1ZSBkb2VzIG5vdCBoYXZlIHByZWZpeCAleCcuZm9ybWF0KFtydWxlcy5wcmVmaXhdKSA6ICcnEn8KBnN1ZmZpeBgGIAEoDEJvwkhsCmoKDGJ5dGVzLnN1ZmZpeBpaIXRoaXMuZW5kc1dpdGgocnVsZXMuc3VmZml4KSA/ICd2YWx1ZSBkb2VzIG5vdCBoYXZlIHN1ZmZpeCAleCcuZm9ybWF0KFtydWxlcy5zdWZmaXhdKSA6ICcnEoMBCghjb250YWlucxgHIAEoDEJxwkhuCmwKDmJ5dGVzLmNvbnRhaW5zGlohdGhpcy5jb250YWlucyhydWxlcy5jb250YWlucykgPyAndmFsdWUgZG9lcyBub3QgY29udGFpbiAleCcuZm9ybWF0KFtydWxlcy5jb250YWluc10pIDogJycSpwEKAmluGAggAygMQpoBwkiWAQqTAQoIYnl0ZXMuaW4ahgFnZXRGaWVsZChydWxlcywgJ2luJykuc2l6ZSgpID4gMCAmJiAhKHRoaXMgaW4gZ2V0RmllbGQocnVsZXMsICdpbicpKSA/ICd2YWx1ZSBtdXN0IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdpbicpXSkgOiAnJxJ2CgZub3RfaW4YCSADKAxCZsJIYwphCgxieXRlcy5ub3RfaW4aUXRoaXMgaW4gcnVsZXMubm90X2luID8gJ3ZhbHVlIG11c3Qgbm90IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbcnVsZXMubm90X2luXSkgOiAnJxLrAQoCaXAYCiABKAhC3AHCSNgBCnQKCGJ5dGVzLmlwEiB2YWx1ZSBtdXN0IGJlIGEgdmFsaWQgSVAgYWRkcmVzcxpGIXJ1bGVzLmlwIHx8IHRoaXMuc2l6ZSgpID09IDAgfHwgdGhpcy5zaXplKCkgPT0gNCB8fCB0aGlzLnNpemUoKSA9PSAxNgpgCg5ieXRlcy5pcF9lbXB0eRIvdmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIElQIGFkZHJlc3MaHSFydWxlcy5pcCB8fCB0aGlzLnNpemUoKSAhPSAwSAAS5AEKBGlwdjQYCyABKAhC0wHCSM8BCmUKCmJ5dGVzLmlwdjQSInZhbHVlIG11c3QgYmUgYSB2YWxpZCBJUHY0IGFkZHJlc3MaMyFydWxlcy5pcHY0IHx8IHRoaXMuc2l6ZSgpID09IDAgfHwgdGhpcy5zaXplKCkgPT0gNApmChBieXRlcy5pcHY0X2VtcHR5EjF2YWx1ZSBpcyBlbXB0eSwgd2hpY2ggaXMgbm90IGEgdmFsaWQgSVB2NCBhZGRyZXNzGh8hcnVsZXMuaXB2NCB8fCB0aGlzLnNpemUoKSAhPSAwSAAS5QEKBGlwdjYYDCABKAhC1AHCSNABCmYKCmJ5dGVzLmlwdjYSInZhbHVlIG11c3QgYmUgYSB2YWxpZCBJUHY2IGFkZHJlc3MaNCFydWxlcy5pcHY2IHx8IHRoaXMuc2l6ZSgpID09IDAgfHwgdGhpcy5zaXplKCkgPT0gMTYKZgoQYnl0ZXMuaXB2Nl9lbXB0eRIxdmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIElQdjYgYWRkcmVzcxofIXJ1bGVzLmlwdjYgfHwgdGhpcy5zaXplKCkgIT0gMEgAEtUBCgR1dWlkGA8gASgIQsQBwkjAAQpeCgpieXRlcy51dWlkEhp2YWx1ZSBtdXN0IGJlIGEgdmFsaWQgVVVJRBo0IXJ1bGVzLnV1aWQgfHwgdGhpcy5zaXplKCkgPT0gMCB8fCB0aGlzLnNpemUoKSA9PSAxNgpeChBieXRlcy51dWlkX2VtcHR5Eil2YWx1ZSBpcyBlbXB0eSwgd2hpY2ggaXMgbm90IGEgdmFsaWQgVVVJRBofIXJ1bGVzLnV1aWQgfHwgdGhpcy5zaXplKCkgIT0gMEgAEisKB2V4YW1wbGUYDiADKAxCGsJIFwoVCg1ieXRlcy5leGFtcGxlGgR0cnVlKgkI6AcQgICAgAJCDAoKd2VsbF9rbm93biLUAwoJRW51bVJ1bGVzEoIBCgVjb25zdBgBIAEoBUJzwkhwCm4KCmVudW0uY29uc3QaYHRoaXMgIT0gZ2V0RmllbGQocnVsZXMsICdjb25zdCcpID8gJ3ZhbHVlIG11c3QgZXF1YWwgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdjb25zdCcpXSkgOiAnJxIUCgxkZWZpbmVkX29ubHkYAiABKAgSfgoCaW4YAyADKAVCcsJIbwptCgdlbnVtLmluGmIhKHRoaXMgaW4gZ2V0RmllbGQocnVsZXMsICdpbicpKSA/ICd2YWx1ZSBtdXN0IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdpbicpXSkgOiAnJxJ1CgZub3RfaW4YBCADKAVCZcJIYgpgCgtlbnVtLm5vdF9pbhpRdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAndmFsdWUgbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnEioKB2V4YW1wbGUYBSADKAVCGcJIFgoUCgxlbnVtLmV4YW1wbGUaBHRydWUqCQjoBxCAgICAAiL7AwoNUmVwZWF0ZWRSdWxlcxKeAQoJbWluX2l0ZW1zGAEgASgEQooBwkiGAQqDAQoScmVwZWF0ZWQubWluX2l0ZW1zGm11aW50KHRoaXMuc2l6ZSgpKSA8IHJ1bGVzLm1pbl9pdGVtcyA/ICd2YWx1ZSBtdXN0IGNvbnRhaW4gYXQgbGVhc3QgJWQgaXRlbShzKScuZm9ybWF0KFtydWxlcy5taW5faXRlbXNdKSA6ICcnEqIBCgltYXhfaXRlbXMYAiABKARCjgHCSIoBCocBChJyZXBlYXRlZC5tYXhfaXRlbXMacXVpbnQodGhpcy5zaXplKCkpID4gcnVsZXMubWF4X2l0ZW1zID8gJ3ZhbHVlIG11c3QgY29udGFpbiBubyBtb3JlIHRoYW4gJXMgaXRlbShzKScuZm9ybWF0KFtydWxlcy5tYXhfaXRlbXNdKSA6ICcnEnAKBnVuaXF1ZRgDIAEoCEJgwkhdClsKD3JlcGVhdGVkLnVuaXF1ZRIocmVwZWF0ZWQgdmFsdWUgbXVzdCBjb250YWluIHVuaXF1ZSBpdGVtcxoeIXJ1bGVzLnVuaXF1ZSB8fCB0aGlzLnVuaXF1ZSgpEicKBWl0ZW1zGAQgASgLMhguYnVmLnZhbGlkYXRlLkZpZWxkUnVsZXMqCQjoBxCAgICAAiKKAwoITWFwUnVsZXMSjwEKCW1pbl9wYWlycxgBIAEoBEJ8wkh5CncKDW1hcC5taW5fcGFpcnMaZnVpbnQodGhpcy5zaXplKCkpIDwgcnVsZXMubWluX3BhaXJzID8gJ21hcCBtdXN0IGJlIGF0IGxlYXN0ICVkIGVudHJpZXMnLmZvcm1hdChbcnVsZXMubWluX3BhaXJzXSkgOiAnJxKOAQoJbWF4X3BhaXJzGAIgASgEQnvCSHgKdgoNbWFwLm1heF9wYWlycxpldWludCh0aGlzLnNpemUoKSkgPiBydWxlcy5tYXhfcGFpcnMgPyAnbWFwIG11c3QgYmUgYXQgbW9zdCAlZCBlbnRyaWVzJy5mb3JtYXQoW3J1bGVzLm1heF9wYWlyc10pIDogJycSJgoEa2V5cxgEIAEoCzIYLmJ1Zi52YWxpZGF0ZS5GaWVsZFJ1bGVzEigKBnZhbHVlcxgFIAEoCzIYLmJ1Zi52YWxpZGF0ZS5GaWVsZFJ1bGVzKgkI6AcQgICAgAIiJgoIQW55UnVsZXMSCgoCaW4YAiADKAkSDgoGbm90X2luGAMgAygJIpkXCg1EdXJhdGlvblJ1bGVzEqEBCgVjb25zdBgCIAEoCzIZLmdvb2dsZS5wcm90b2J1Zi5EdXJhdGlvbkJ3wkh0CnIKDmR1cmF0aW9uLmNvbnN0GmB0aGlzICE9IGdldEZpZWxkKHJ1bGVzLCAnY29uc3QnKSA/ICd2YWx1ZSBtdXN0IGVxdWFsICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnY29uc3QnKV0pIDogJycSqAEKAmx0GAMgASgLMhkuZ29vZ2xlLnByb3RvYnVmLkR1cmF0aW9uQn/CSHwKegoLZHVyYXRpb24ubHQaayFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiB0aGlzID49IHJ1bGVzLmx0PyAndmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMubHRdKSA6ICcnSAASugEKA2x0ZRgEIAEoCzIZLmdvb2dsZS5wcm90b2J1Zi5EdXJhdGlvbkKPAcJIiwEKiAEKDGR1cmF0aW9uLmx0ZRp4IWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPiBydWxlcy5sdGU/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5sdGVdKSA6ICcnSAASwQcKAmd0GAUgASgLMhkuZ29vZ2xlLnByb3RvYnVmLkR1cmF0aW9uQpcHwkiTBwp9CgtkdXJhdGlvbi5ndBpuIWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPD0gcnVsZXMuZ3Q/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndF0pIDogJycKtgEKDmR1cmF0aW9uLmd0X2x0GqMBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndCAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwq+AQoYZHVyYXRpb24uZ3RfbHRfZXhjbHVzaXZlGqEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKxgEKD2R1cmF0aW9uLmd0X2x0ZRqyAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndCAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJycKzgEKGWR1cmF0aW9uLmd0X2x0ZV9leGNsdXNpdmUasAFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndCAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJ0gBEo0ICgNndGUYBiABKAsyGS5nb29nbGUucHJvdG9idWYuRHVyYXRpb25C4gfCSN4HCosBCgxkdXJhdGlvbi5ndGUaeyFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDwgcnVsZXMuZ3RlPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlXSkgOiAnJwrFAQoPZHVyYXRpb24uZ3RlX2x0GrEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCs0BChlkdXJhdGlvbi5ndGVfbHRfZXhjbHVzaXZlGq8BaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrVAQoQZHVyYXRpb24uZ3RlX2x0ZRrAAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJwrdAQoaZHVyYXRpb24uZ3RlX2x0ZV9leGNsdXNpdmUavgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnSAESnQEKAmluGAcgAygLMhkuZ29vZ2xlLnByb3RvYnVmLkR1cmF0aW9uQnbCSHMKcQoLZHVyYXRpb24uaW4aYiEodGhpcyBpbiBnZXRGaWVsZChydWxlcywgJ2luJykpID8gJ3ZhbHVlIG11c3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2luJyldKSA6ICcnEpQBCgZub3RfaW4YCCADKAsyGS5nb29nbGUucHJvdG9idWYuRHVyYXRpb25CacJIZgpkCg9kdXJhdGlvbi5ub3RfaW4aUXRoaXMgaW4gcnVsZXMubm90X2luID8gJ3ZhbHVlIG11c3Qgbm90IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbcnVsZXMubm90X2luXSkgOiAnJxJJCgdleGFtcGxlGAkgAygLMhkuZ29vZ2xlLnByb3RvYnVmLkR1cmF0aW9uQh3CSBoKGAoQZHVyYXRpb24uZXhhbXBsZRoEdHJ1ZSoJCOgHEICAgIACQgsKCWxlc3NfdGhhbkIOCgxncmVhdGVyX3RoYW4i/QUKDkZpZWxkTWFza1J1bGVzEr8BCgVjb25zdBgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5GaWVsZE1hc2tCkwHCSI8BCowBChBmaWVsZF9tYXNrLmNvbnN0Gnh0aGlzLnBhdGhzICE9IGdldEZpZWxkKHJ1bGVzLCAnY29uc3QnKS5wYXRocyA/ICd2YWx1ZSBtdXN0IGVxdWFsIHBhdGhzICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnY29uc3QnKS5wYXRoc10pIDogJycS2QEKAmluGAIgAygJQswBwkjIAQrFAQoNZmllbGRfbWFzay5pbhqzASF0aGlzLnBhdGhzLmFsbChwLCBwIGluIGdldEZpZWxkKHJ1bGVzLCAnaW4nKSB8fCBnZXRGaWVsZChydWxlcywgJ2luJykuZXhpc3RzKGYsIHAuc3RhcnRzV2l0aChmKycuJykpKSA/ICd2YWx1ZSBtdXN0IG9ubHkgY29udGFpbiBwYXRocyBpbiAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2luJyldKSA6ICcnEvMBCgZub3RfaW4YAyADKAlC4gHCSN4BCtsBChFmaWVsZF9tYXNrLm5vdF9pbhrFASF0aGlzLnBhdGhzLmFsbChwLCAhKHAgaW4gZ2V0RmllbGQocnVsZXMsICdub3RfaW4nKSB8fCBnZXRGaWVsZChydWxlcywgJ25vdF9pbicpLmV4aXN0cyhmLCBwLnN0YXJ0c1dpdGgoZisnLicpKSkpID8gJ3ZhbHVlIG11c3Qgbm90IGNvbnRhaW4gYW55IHBhdGhzIGluICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnbm90X2luJyldKSA6ICcnEkwKB2V4YW1wbGUYBCADKAsyGi5nb29nbGUucHJvdG9idWYuRmllbGRNYXNrQh/CSBwKGgoSZmllbGRfbWFzay5leGFtcGxlGgR0cnVlKgkI6AcQgICAgAIikhgKDlRpbWVzdGFtcFJ1bGVzEqMBCgVjb25zdBgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCeMJIdQpzCg90aW1lc3RhbXAuY29uc3QaYHRoaXMgIT0gZ2V0RmllbGQocnVsZXMsICdjb25zdCcpID8gJ3ZhbHVlIG11c3QgZXF1YWwgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdjb25zdCcpXSkgOiAnJxKrAQoCbHQYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQoABwkh9CnsKDHRpbWVzdGFtcC5sdBprIWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPj0gcnVsZXMubHQ/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5sdF0pIDogJydIABK8AQoDbHRlGAQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEKQAcJIjAEKiQEKDXRpbWVzdGFtcC5sdGUaeCFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiB0aGlzID4gcnVsZXMubHRlPyAndmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMubHRlXSkgOiAnJ0gAEmwKBmx0X25vdxgHIAEoCEJawkhXClUKEHRpbWVzdGFtcC5sdF9ub3caQShydWxlcy5sdF9ub3cgJiYgdGhpcyA+IG5vdykgPyAndmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gbm93JyA6ICcnSAASxwcKAmd0GAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEKcB8JImAcKfgoMdGltZXN0YW1wLmd0Gm4haGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8PSBydWxlcy5ndD8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0XSkgOiAnJwq3AQoPdGltZXN0YW1wLmd0X2x0GqMBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndCAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwq/AQoZdGltZXN0YW1wLmd0X2x0X2V4Y2x1c2l2ZRqhAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndCAmJiAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCscBChB0aW1lc3RhbXAuZ3RfbHRlGrIBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJwrPAQoadGltZXN0YW1wLmd0X2x0ZV9leGNsdXNpdmUasAFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndCAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJ0gBEpMICgNndGUYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQucHwkjjBwqMAQoNdGltZXN0YW1wLmd0ZRp7IWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPCBydWxlcy5ndGU/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGVdKSA6ICcnCsYBChB0aW1lc3RhbXAuZ3RlX2x0GrEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCs4BChp0aW1lc3RhbXAuZ3RlX2x0X2V4Y2x1c2l2ZRqvAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycK1gEKEXRpbWVzdGFtcC5ndGVfbHRlGsABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnCt4BCht0aW1lc3RhbXAuZ3RlX2x0ZV9leGNsdXNpdmUavgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnSAESbwoGZ3Rfbm93GAggASgIQl3CSFoKWAoQdGltZXN0YW1wLmd0X25vdxpEKHJ1bGVzLmd0X25vdyAmJiB0aGlzIDwgbm93KSA/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBub3cnIDogJydIARK4AQoGd2l0aGluGAkgASgLMhkuZ29vZ2xlLnByb3RvYnVmLkR1cmF0aW9uQowBwkiIAQqFAQoQdGltZXN0YW1wLndpdGhpbhpxdGhpcyA8IG5vdy1ydWxlcy53aXRoaW4gfHwgdGhpcyA+IG5vdytydWxlcy53aXRoaW4gPyAndmFsdWUgbXVzdCBiZSB3aXRoaW4gJXMgb2Ygbm93Jy5mb3JtYXQoW3J1bGVzLndpdGhpbl0pIDogJycSSwoHZXhhbXBsZRgKIAMoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCHsJIGwoZChF0aW1lc3RhbXAuZXhhbXBsZRoEdHJ1ZSoJCOgHEICAgIACQgsKCWxlc3NfdGhhbkIOCgxncmVhdGVyX3RoYW4iOQoKVmlvbGF0aW9ucxIrCgp2aW9sYXRpb25zGAEgAygLMhcuYnVmLnZhbGlkYXRlLlZpb2xhdGlvbiKfAQoJVmlvbGF0aW9uEiYKBWZpZWxkGAUgASgLMhcuYnVmLnZhbGlkYXRlLkZpZWxkUGF0aBIlCgRydWxlGAYgASgLMhcuYnVmLnZhbGlkYXRlLkZpZWxkUGF0aBIPCgdydWxlX2lkGAIgASgJEg8KB21lc3NhZ2UYAyABKAkSDwoHZm9yX2tleRgEIAEoCEoECAEQAlIKZmllbGRfcGF0aCI9CglGaWVsZFBhdGgSMAoIZWxlbWVudHMYASADKAsyHi5idWYudmFsaWRhdGUuRmllbGRQYXRoRWxlbWVudCLpAgoQRmllbGRQYXRoRWxlbWVudBIUCgxmaWVsZF9udW1iZXIYASABKAUSEgoKZmllbGRfbmFtZRgCIAEoCRI+CgpmaWVsZF90eXBlGAMgASgOMiouZ29vZ2xlLnByb3RvYnVmLkZpZWxkRGVzY3JpcHRvclByb3RvLlR5cGUSPAoIa2V5X3R5cGUYBCABKA4yKi5nb29nbGUucHJvdG9idWYuRmllbGREZXNjcmlwdG9yUHJvdG8uVHlwZRI+Cgp2YWx1ZV90eXBlGAUgASgOMiouZ29vZ2xlLnByb3RvYnVmLkZpZWxkRGVzY3JpcHRvclByb3RvLlR5cGUSDwoFaW5kZXgYBiABKARIABISCghib29sX2tleRgHIAEoCEgAEhEKB2ludF9rZXkYCCABKANIABISCgh1aW50X2tleRgJIAEoBEgAEhQKCnN0cmluZ19rZXkYCiABKAlIAEILCglzdWJzY3JpcHQqoQEKBklnbm9yZRIWChJJR05PUkVfVU5TUEVDSUZJRUQQABIYChRJR05PUkVfSUZfWkVST19WQUxVRRABEhEKDUlHTk9SRV9BTFdBWVMQAyIECAIQAioMSUdOT1JFX0VNUFRZKg5JR05PUkVfREVGQVVMVCoXSUdOT1JFX0lGX0RFRkFVTFRfVkFMVUUqFUlHTk9SRV9JRl9VTlBPUFVMQVRFRCpuCgpLbm93blJlZ2V4EhsKF0tOT1dOX1JFR0VYX1VOU1BFQ0lGSUVEEAASIAocS05PV05fUkVHRVhfSFRUUF9IRUFERVJfTkFNRRABEiEKHUtOT1dOX1JFR0VYX0hUVFBfSEVBREVSX1ZBTFVFEAI6VgoHbWVzc2FnZRIfLmdvb2dsZS5wcm90b2J1Zi5NZXNzYWdlT3B0aW9ucxiHCSABKAsyGi5idWYudmFsaWRhdGUuTWVzc2FnZVJ1bGVzUgdtZXNzYWdlOk4KBW9uZW9mEh0uZ29vZ2xlLnByb3RvYnVmLk9uZW9mT3B0aW9ucxiHCSABKAsyGC5idWYudmFsaWRhdGUuT25lb2ZSdWxlc1IFb25lb2Y6TgoFZmllbGQSHS5nb29nbGUucHJvdG9idWYuRmllbGRPcHRpb25zGIcJIAEoCzIYLmJ1Zi52YWxpZGF0ZS5GaWVsZFJ1bGVzUgVmaWVsZDpdCgpwcmVkZWZpbmVkEh0uZ29vZ2xlLnByb3RvYnVmLkZpZWxkT3B0aW9ucxiICSABKAsyHS5idWYudmFsaWRhdGUuUHJlZGVmaW5lZFJ1bGVzUgpwcmVkZWZpbmVkQm4KEmJ1aWxkLmJ1Zi52YWxpZGF0ZUINVmFsaWRhdGVQcm90b1ABWkdidWYuYnVpbGQvZ2VuL2dvL2J1ZmJ1aWxkL3Byb3RvdmFsaWRhdGUvcHJvdG9jb2xidWZmZXJzL2dvL2J1Zi92YWxpZGF0ZQ",[de,gt,bo,ut]);var ra;(function(e){e[e.UNSPECIFIED=0]="UNSPECIFIED",e[e.IF_ZERO_VALUE=1]="IF_ZERO_VALUE",e[e.ALWAYS=3]="ALWAYS"})(ra||(ra={}));var oa;(function(e){e[e.UNSPECIFIED=0]="UNSPECIFIED",e[e.HTTP_HEADER_NAME=1]="HTTP_HEADER_NAME",e[e.HTTP_HEADER_VALUE=2]="HTTP_HEADER_VALUE"})(oa||(oa={}));var ia=w("ChVnb29nbGUvYXBpL2h0dHAucHJvdG8SCmdvb2dsZS5hcGkiVAoESHR0cBIjCgVydWxlcxgBIAMoCzIULmdvb2dsZS5hcGkuSHR0cFJ1bGUSJwofZnVsbHlfZGVjb2RlX3Jlc2VydmVkX2V4cGFuc2lvbhgCIAEoCCKBAgoISHR0cFJ1bGUSEAoIc2VsZWN0b3IYASABKAkSDQoDZ2V0GAIgASgJSAASDQoDcHV0GAMgASgJSAASDgoEcG9zdBgEIAEoCUgAEhAKBmRlbGV0ZRgFIAEoCUgAEg8KBXBhdGNoGAYgASgJSAASLwoGY3VzdG9tGAggASgLMh0uZ29vZ2xlLmFwaS5DdXN0b21IdHRwUGF0dGVybkgAEgwKBGJvZHkYByABKAkSFQoNcmVzcG9uc2VfYm9keRgMIAEoCRIxChNhZGRpdGlvbmFsX2JpbmRpbmdzGAsgAygLMhQuZ29vZ2xlLmFwaS5IdHRwUnVsZUIJCgdwYXR0ZXJuIi8KEUN1c3RvbUh0dHBQYXR0ZXJuEgwKBGtpbmQYASABKAkSDAoEcGF0aBgCIAEoCUJnCg5jb20uZ29vZ2xlLmFwaUIJSHR0cFByb3RvUAFaQWdvb2dsZS5nb2xhbmcub3JnL2dlbnByb3RvL2dvb2dsZWFwaXMvYXBpL2Fubm90YXRpb25zO2Fubm90YXRpb25zogIER0FQSWIGcHJvdG8z");var sa=w("Chxnb29nbGUvYXBpL2Fubm90YXRpb25zLnByb3RvEgpnb29nbGUuYXBpOksKBGh0dHASHi5nb29nbGUucHJvdG9idWYuTWV0aG9kT3B0aW9ucxiwyrwiIAEoCzIULmdvb2dsZS5hcGkuSHR0cFJ1bGVSBGh0dHBCbgoOY29tLmdvb2dsZS5hcGlCEEFubm90YXRpb25zUHJvdG9QAVpBZ29vZ2xlLmdvbGFuZy5vcmcvZ2VucHJvdG8vZ29vZ2xlYXBpcy9hcGkvYW5ub3RhdGlvbnM7YW5ub3RhdGlvbnOiAgRHQVBJYgZwcm90bzM",[ia,de]);var la=w("Ch1nb29nbGUvYXBpL2xhdW5jaF9zdGFnZS5wcm90bxIKZ29vZ2xlLmFwaSqMAQoLTGF1bmNoU3RhZ2USHAoYTEFVTkNIX1NUQUdFX1VOU1BFQ0lGSUVEEAASEQoNVU5JTVBMRU1FTlRFRBAGEg0KCVBSRUxBVU5DSBAHEhAKDEVBUkxZX0FDQ0VTUxABEgkKBUFMUEhBEAISCAoEQkVUQRADEgYKAkdBEAQSDgoKREVQUkVDQVRFRBAFQloKDmNvbS5nb29nbGUuYXBpQhBMYXVuY2hTdGFnZVByb3RvUAFaLWdvb2dsZS5nb2xhbmcub3JnL2dlbnByb3RvL2dvb2dsZWFwaXMvYXBpO2FwaaICBEdBUEliBnByb3RvMw"),ca;(function(e){e[e.LAUNCH_STAGE_UNSPECIFIED=0]="LAUNCH_STAGE_UNSPECIFIED",e[e.UNIMPLEMENTED=6]="UNIMPLEMENTED",e[e.PRELAUNCH=7]="PRELAUNCH",e[e.EARLY_ACCESS=1]="EARLY_ACCESS",e[e.ALPHA=2]="ALPHA",e[e.BETA=3]="BETA",e[e.GA=4]="GA",e[e.DEPRECATED=5]="DEPRECATED"})(ca||(ca={}));var ua=w("Chdnb29nbGUvYXBpL2NsaWVudC5wcm90bxIKZ29vZ2xlLmFwaSK+AQoWQ29tbW9uTGFuZ3VhZ2VTZXR0aW5ncxIeChJyZWZlcmVuY2VfZG9jc191cmkYASABKAlCAhgBEjoKDGRlc3RpbmF0aW9ucxgCIAMoDjIkLmdvb2dsZS5hcGkuQ2xpZW50TGlicmFyeURlc3RpbmF0aW9uEkgKGnNlbGVjdGl2ZV9nYXBpY19nZW5lcmF0aW9uGAMgASgLMiQuZ29vZ2xlLmFwaS5TZWxlY3RpdmVHYXBpY0dlbmVyYXRpb24i+wMKFUNsaWVudExpYnJhcnlTZXR0aW5ncxIPCgd2ZXJzaW9uGAEgASgJEi0KDGxhdW5jaF9zdGFnZRgCIAEoDjIXLmdvb2dsZS5hcGkuTGF1bmNoU3RhZ2USGgoScmVzdF9udW1lcmljX2VudW1zGAMgASgIEi8KDWphdmFfc2V0dGluZ3MYFSABKAsyGC5nb29nbGUuYXBpLkphdmFTZXR0aW5ncxItCgxjcHBfc2V0dGluZ3MYFiABKAsyFy5nb29nbGUuYXBpLkNwcFNldHRpbmdzEi0KDHBocF9zZXR0aW5ncxgXIAEoCzIXLmdvb2dsZS5hcGkuUGhwU2V0dGluZ3MSMwoPcHl0aG9uX3NldHRpbmdzGBggASgLMhouZ29vZ2xlLmFwaS5QeXRob25TZXR0aW5ncxIvCg1ub2RlX3NldHRpbmdzGBkgASgLMhguZ29vZ2xlLmFwaS5Ob2RlU2V0dGluZ3MSMwoPZG90bmV0X3NldHRpbmdzGBogASgLMhouZ29vZ2xlLmFwaS5Eb3RuZXRTZXR0aW5ncxIvCg1ydWJ5X3NldHRpbmdzGBsgASgLMhguZ29vZ2xlLmFwaS5SdWJ5U2V0dGluZ3MSKwoLZ29fc2V0dGluZ3MYHCABKAsyFi5nb29nbGUuYXBpLkdvU2V0dGluZ3MiqAMKClB1Ymxpc2hpbmcSMwoPbWV0aG9kX3NldHRpbmdzGAIgAygLMhouZ29vZ2xlLmFwaS5NZXRob2RTZXR0aW5ncxIVCg1uZXdfaXNzdWVfdXJpGGUgASgJEhkKEWRvY3VtZW50YXRpb25fdXJpGGYgASgJEhYKDmFwaV9zaG9ydF9uYW1lGGcgASgJEhQKDGdpdGh1Yl9sYWJlbBhoIAEoCRIeChZjb2Rlb3duZXJfZ2l0aHViX3RlYW1zGGkgAygJEhYKDmRvY190YWdfcHJlZml4GGogASgJEjsKDG9yZ2FuaXphdGlvbhhrIAEoDjIlLmdvb2dsZS5hcGkuQ2xpZW50TGlicmFyeU9yZ2FuaXphdGlvbhI7ChBsaWJyYXJ5X3NldHRpbmdzGG0gAygLMiEuZ29vZ2xlLmFwaS5DbGllbnRMaWJyYXJ5U2V0dGluZ3MSKQohcHJvdG9fcmVmZXJlbmNlX2RvY3VtZW50YXRpb25fdXJpGG4gASgJEigKIHJlc3RfcmVmZXJlbmNlX2RvY3VtZW50YXRpb25fdXJpGG8gASgJIuMBCgxKYXZhU2V0dGluZ3MSFwoPbGlicmFyeV9wYWNrYWdlGAEgASgJEkwKE3NlcnZpY2VfY2xhc3NfbmFtZXMYAiADKAsyLy5nb29nbGUuYXBpLkphdmFTZXR0aW5ncy5TZXJ2aWNlQ2xhc3NOYW1lc0VudHJ5EjIKBmNvbW1vbhgDIAEoCzIiLmdvb2dsZS5hcGkuQ29tbW9uTGFuZ3VhZ2VTZXR0aW5ncxo4ChZTZXJ2aWNlQ2xhc3NOYW1lc0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEiQQoLQ3BwU2V0dGluZ3MSMgoGY29tbW9uGAEgASgLMiIuZ29vZ2xlLmFwaS5Db21tb25MYW5ndWFnZVNldHRpbmdzIkEKC1BocFNldHRpbmdzEjIKBmNvbW1vbhgBIAEoCzIiLmdvb2dsZS5hcGkuQ29tbW9uTGFuZ3VhZ2VTZXR0aW5ncyKbAgoOUHl0aG9uU2V0dGluZ3MSMgoGY29tbW9uGAEgASgLMiIuZ29vZ2xlLmFwaS5Db21tb25MYW5ndWFnZVNldHRpbmdzEk4KFWV4cGVyaW1lbnRhbF9mZWF0dXJlcxgCIAEoCzIvLmdvb2dsZS5hcGkuUHl0aG9uU2V0dGluZ3MuRXhwZXJpbWVudGFsRmVhdHVyZXMahAEKFEV4cGVyaW1lbnRhbEZlYXR1cmVzEh0KFXJlc3RfYXN5bmNfaW9fZW5hYmxlZBgBIAEoCBInCh9wcm90b2J1Zl9weXRob25pY190eXBlc19lbmFibGVkGAIgASgIEiQKHHVudmVyc2lvbmVkX3BhY2thZ2VfZGlzYWJsZWQYAyABKAgiQgoMTm9kZVNldHRpbmdzEjIKBmNvbW1vbhgBIAEoCzIiLmdvb2dsZS5hcGkuQ29tbW9uTGFuZ3VhZ2VTZXR0aW5ncyKqAwoORG90bmV0U2V0dGluZ3MSMgoGY29tbW9uGAEgASgLMiIuZ29vZ2xlLmFwaS5Db21tb25MYW5ndWFnZVNldHRpbmdzEkkKEHJlbmFtZWRfc2VydmljZXMYAiADKAsyLy5nb29nbGUuYXBpLkRvdG5ldFNldHRpbmdzLlJlbmFtZWRTZXJ2aWNlc0VudHJ5EksKEXJlbmFtZWRfcmVzb3VyY2VzGAMgAygLMjAuZ29vZ2xlLmFwaS5Eb3RuZXRTZXR0aW5ncy5SZW5hbWVkUmVzb3VyY2VzRW50cnkSGQoRaWdub3JlZF9yZXNvdXJjZXMYBCADKAkSIAoYZm9yY2VkX25hbWVzcGFjZV9hbGlhc2VzGAUgAygJEh4KFmhhbmR3cml0dGVuX3NpZ25hdHVyZXMYBiADKAkaNgoUUmVuYW1lZFNlcnZpY2VzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ARo3ChVSZW5hbWVkUmVzb3VyY2VzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASJCCgxSdWJ5U2V0dGluZ3MSMgoGY29tbW9uGAEgASgLMiIuZ29vZ2xlLmFwaS5Db21tb25MYW5ndWFnZVNldHRpbmdzIr8BCgpHb1NldHRpbmdzEjIKBmNvbW1vbhgBIAEoCzIiLmdvb2dsZS5hcGkuQ29tbW9uTGFuZ3VhZ2VTZXR0aW5ncxJFChByZW5hbWVkX3NlcnZpY2VzGAIgAygLMisuZ29vZ2xlLmFwaS5Hb1NldHRpbmdzLlJlbmFtZWRTZXJ2aWNlc0VudHJ5GjYKFFJlbmFtZWRTZXJ2aWNlc0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEizwIKDk1ldGhvZFNldHRpbmdzEhAKCHNlbGVjdG9yGAEgASgJEjwKDGxvbmdfcnVubmluZxgCIAEoCzImLmdvb2dsZS5hcGkuTWV0aG9kU2V0dGluZ3MuTG9uZ1J1bm5pbmcSHQoVYXV0b19wb3B1bGF0ZWRfZmllbGRzGAMgAygJGs0BCgtMb25nUnVubmluZxI1ChJpbml0aWFsX3BvbGxfZGVsYXkYASABKAsyGS5nb29nbGUucHJvdG9idWYuRHVyYXRpb24SHQoVcG9sbF9kZWxheV9tdWx0aXBsaWVyGAIgASgCEjEKDm1heF9wb2xsX2RlbGF5GAMgASgLMhkuZ29vZ2xlLnByb3RvYnVmLkR1cmF0aW9uEjUKEnRvdGFsX3BvbGxfdGltZW91dBgEIAEoCzIZLmdvb2dsZS5wcm90b2J1Zi5EdXJhdGlvbiJRChhTZWxlY3RpdmVHYXBpY0dlbmVyYXRpb24SDwoHbWV0aG9kcxgBIAMoCRIkChxnZW5lcmF0ZV9vbWl0dGVkX2FzX2ludGVybmFsGAIgASgIKqMBChlDbGllbnRMaWJyYXJ5T3JnYW5pemF0aW9uEisKJ0NMSUVOVF9MSUJSQVJZX09SR0FOSVpBVElPTl9VTlNQRUNJRklFRBAAEgkKBUNMT1VEEAESBwoDQURTEAISCgoGUEhPVE9TEAMSDwoLU1RSRUVUX1ZJRVcQBBIMCghTSE9QUElORxAFEgcKA0dFTxAGEhEKDUdFTkVSQVRJVkVfQUkQBypnChhDbGllbnRMaWJyYXJ5RGVzdGluYXRpb24SKgomQ0xJRU5UX0xJQlJBUllfREVTVElOQVRJT05fVU5TUEVDSUZJRUQQABIKCgZHSVRIVUIQChITCg9QQUNLQUdFX01BTkFHRVIQFDpKChBtZXRob2Rfc2lnbmF0dXJlEh4uZ29vZ2xlLnByb3RvYnVmLk1ldGhvZE9wdGlvbnMYmwggAygJUg9tZXRob2RTaWduYXR1cmU6QwoMZGVmYXVsdF9ob3N0Eh8uZ29vZ2xlLnByb3RvYnVmLlNlcnZpY2VPcHRpb25zGJkIIAEoCVILZGVmYXVsdEhvc3Q6QwoMb2F1dGhfc2NvcGVzEh8uZ29vZ2xlLnByb3RvYnVmLlNlcnZpY2VPcHRpb25zGJoIIAEoCVILb2F1dGhTY29wZXM6RAoLYXBpX3ZlcnNpb24SHy5nb29nbGUucHJvdG9idWYuU2VydmljZU9wdGlvbnMYwbqr+gEgASgJUgphcGlWZXJzaW9uQmkKDmNvbS5nb29nbGUuYXBpQgtDbGllbnRQcm90b1ABWkFnb29nbGUuZ29sYW5nLm9yZy9nZW5wcm90by9nb29nbGVhcGlzL2FwaS9hbm5vdGF0aW9uczthbm5vdGF0aW9uc6ICBEdBUEliBnByb3RvMw",[la,de,gt]);var da;(function(e){e[e.CLIENT_LIBRARY_ORGANIZATION_UNSPECIFIED=0]="CLIENT_LIBRARY_ORGANIZATION_UNSPECIFIED",e[e.CLOUD=1]="CLOUD",e[e.ADS=2]="ADS",e[e.PHOTOS=3]="PHOTOS",e[e.STREET_VIEW=4]="STREET_VIEW",e[e.SHOPPING=5]="SHOPPING",e[e.GEO=6]="GEO",e[e.GENERATIVE_AI=7]="GENERATIVE_AI"})(da||(da={}));var ma;(function(e){e[e.CLIENT_LIBRARY_DESTINATION_UNSPECIFIED=0]="CLIENT_LIBRARY_DESTINATION_UNSPECIFIED",e[e.GITHUB=10]="GITHUB",e[e.PACKAGE_MANAGER=20]="PACKAGE_MANAGER"})(ma||(ma={}));var Yn=w("Ciptb2NoYWJ1Z2FwaXMvYWRhcHQvZ3JhcGgvc2lnbmFsX2RhdGEucHJvdG8SGG1vY2hhYnVnYXBpcy5hZGFwdC5ncmFwaCKmCgoKU2lnbmFsRGF0YRL3BQoIZmlsZW5hbWUYASABKAlC3wW6SNsFugGvAQobZmlsZW5hbWUubm9fcGF0aF9zZXBhcmF0b3JzEmNGaWxlbmFtZSBjYW5ub3QgY29udGFpbiBwYXRoIHNlcGFyYXRvcnMgKCcvJyBvciAnXCcpLiBVc2Ugb25seSB0aGUgZmlsZW5hbWUgd2l0aG91dCBkaXJlY3RvcnkgcGF0aC4aKyF0aGlzLmNvbnRhaW5zKCcvJykgJiYgIXRoaXMuY29udGFpbnMoJ1xcJym6AbsBCh5maWxlbmFtZS5ub19jb250cm9sX2NoYXJhY3RlcnMSOUZpbGVuYW1lIGNhbm5vdCBjb250YWluIGNvbnRyb2wgY2hhcmFjdGVycyBvciBudWxsIGJ5dGVzLhpeIXRoaXMuY29udGFpbnMoJ1x4MDAnKSAmJiAhdGhpcy5jb250YWlucygnXG4nKSAmJiAhdGhpcy5jb250YWlucygnXHInKSAmJiAhdGhpcy5jb250YWlucygnXHQnKboBbQonZmlsZW5hbWUubm9fbGVhZGluZ190cmFpbGluZ193aGl0ZXNwYWNlEi1GaWxlbmFtZSBjYW5ub3Qgc3RhcnQgb3IgZW5kIHdpdGggd2hpdGVzcGFjZS4aE3RoaXMgPT0gdGhpcy50cmltKCm6AdMBChxmaWxlbmFtZS5ub193aW5kb3dzX3Jlc2VydmVkEmpGaWxlbmFtZSBjYW5ub3QgYmUgYSBXaW5kb3dzIHJlc2VydmVkIG5hbWUgKENPTiwgUFJOLCBBVVgsIE5VTCwgQ09NMS05LCBMUFQxLTkpIHdpdGggb3Igd2l0aG91dCBleHRlbnNpb24uGkchdGhpcy5tYXRjaGVzKCdeKD9pKShDT058UFJOfEFVWHxOVUx8Q09NWzEtOV18TFBUWzEtOV0pKD86XFwuW14uXSopPyQnKXIgEAEY/wEyGV5bXi88PjoifD8qXHgwMC1ceDFGXFxdKyRIAIgBARKCBAoJbWltZV90eXBlGAIgASgJQu4DukjqA7oByQEKFm1pbWVfdHlwZS5ub193aWxkY2FyZHMSmQFNSU1FIHR5cGUgd2lsZGNhcmRzIGFyZSBub3QgYWxsb3dlZCBpbiBTaWduYWxEYXRhLiBVc2UgYSBjb25jcmV0ZSBNSU1FIHR5cGUgbGlrZSAnaW1hZ2UvcG5nJyBvciAnYXBwbGljYXRpb24vcGRmJywgbm90IHdpbGRjYXJkcyBsaWtlICdpbWFnZS8qJyBvciAnKi8qJy4aEyF0aGlzLmNvbnRhaW5zKCcqJym6Ab8BChdtaW1lX3R5cGUubm9fcGFyYW1ldGVycxKOAU1JTUUgdHlwZSBwYXJhbWV0ZXJzIGFyZSBub3QgYWxsb3dlZC4gVXNlICd0ZXh0L3BsYWluJyBpbnN0ZWFkIG9mICd0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04Jy4gVVRGLTggZW5jb2RpbmcgaXMgYXNzdW1lZCBmb3IgYWxsIHRleHQgZm9ybWF0cy4aEyF0aGlzLmNvbnRhaW5zKCc7JylyWBADGP8BMlFeW2EtekEtWjAtOV1bYS16QS1aMC05ISMkJlwtXl8uK117MCwxMjZ9L1thLXpBLVowLTldW2EtekEtWjAtOSEjJCZcLV5fLitdezAsMTI2fSQSDAoEZGF0YRgDIAEoDEILCglfZmlsZW5hbWViBnByb3RvMw",[vt]),Fn=K(Yn,0);var Te=w("CjNtb2NoYWJ1Z2FwaXMvYWRhcHQvYXV0b21hdGlvbnMvdjEvYXV0b21hdGlvbnMucHJvdG8SIW1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MSIwChZDcmVhdGVDaGFsbGVuZ2VSZXF1ZXN0EhYKAmlkGAEgASgJQgq6SAdyBRABGPQDIqIBChdDcmVhdGVDaGFsbGVuZ2VSZXNwb25zZRINCgVjb3VudBgBIAEoDRIMCgRzaXplGAIgASgNEhIKCmRpZmZpY3VsdHkYAyABKA0SKwoHZXhwaXJlcxgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASDQoFdG9rZW4YBSABKAkSGgoSdmVyaWZpY2F0aW9uX3Rva2VuGAYgASgJIngKFlJlZGVlbUNoYWxsZW5nZVJlcXVlc3QSFgoCaWQYASABKAlCCrpIB3IFEAEY9AMSJgoSdmVyaWZpY2F0aW9uX3Rva2VuGAIgASgJQgq6SAdyBRABGNAPEh4KCXNvbHV0aW9ucxgDIAMoA0ILukgIkgEFCAEQ6AciVQoXUmVkZWVtQ2hhbGxlbmdlUmVzcG9uc2USDQoFdG9rZW4YASABKAkSKwoHZXhwaXJlcxgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAiLwoVSW5oZXJpdFNlc3Npb25SZXF1ZXN0EhYKAmlkGAEgASgJQgq6SAdyBRABGPQDImUKFkluaGVyaXRTZXNzaW9uUmVzcG9uc2USDQoFdG9rZW4YASABKAkSMAoHZXhwaXJlcxgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAIgBAUIKCghfZXhwaXJlcyKvAQoRUmVhZE91dHB1dFJlcXVlc3QSFgoCaWQYASABKAlCCrpIB3IFEAEY9AMSGgoJcGFnZV9zaXplGAIgASgNQge6SAQqAhhkEikKBnZlcnRleBgDIAEoCUIUukgRcg8yDV5bMC05YS16XXs0fSRIAIgBARIhCgpuZXdlcl90aGFuGAQgASgJQgi6SAVyA7ABAUgBiAEBQgkKB192ZXJ0ZXhCDQoLX25ld2VyX3RoYW4iywEKElJlYWRPdXRwdXRSZXNwb25zZRI7CgdzZXNzaW9uGAEgASgLMioubW9jaGFidWdhcGlzLmFkYXB0LmF1dG9tYXRpb25zLnYxLlNlc3Npb24SOgoHb3V0cHV0cxgCIAMoCzIpLm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5PdXRwdXQSJwoQbmV4dF9wYWdlX2N1cnNvchgDIAEoCUIIukgFcgOwAQFIAIgBAUITChFfbmV4dF9wYWdlX2N1cnNvciJ3Cg9SZWFkVXJsc1JlcXVlc3QSFgoCaWQYASABKAlCCrpIB3IFEAEY9AMSGgoJcGFnZV9zaXplGAIgASgNQge6SAQqAhhkEiEKCm5ld2VyX3RoYW4YAyABKAlCCLpIBXIDsAEBSACIAQFCDQoLX25ld2VyX3RoYW4iwwEKEFJlYWRVcmxzUmVzcG9uc2USOwoHc2Vzc2lvbhgBIAEoCzIqLm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5TZXNzaW9uEjQKBHVybHMYAiADKAsyJi5tb2NoYWJ1Z2FwaXMuYWRhcHQuYXV0b21hdGlvbnMudjEuVXJsEicKEG5leHRfcGFnZV9jdXJzb3IYAyABKAlCCLpIBXIDsAEBSACIAQFCEwoRX25leHRfcGFnZV9jdXJzb3IikQMKE1N0YXJ0U2Vzc2lvblJlcXVlc3QSFgoCaWQYASABKAlCCrpIB3IFEAEY9AMSOwoLdHJhbnNtaXR0ZXIYAiABKAlCIbpIHnIcEAEYZDIWXlthLXpBLVowLTlfLV17MSwxMDB9JEgAiAEBEoABCgdzaWduYWxzGAMgAygLMkMubW9jaGFidWdhcGlzLmFkYXB0LmF1dG9tYXRpb25zLnYxLlN0YXJ0U2Vzc2lvblJlcXVlc3QuU2lnbmFsc0VudHJ5Qiq6SCeaASQiInIgEAEYZDIaXltfJGEtekEtWl1bXyRhLXpBLVowLTldKiQSKAoPY2hhbGxlbmdlX3Rva2VuGAQgASgJQgq6SAdyBRABGPQDSAGIAQEaVAoMU2lnbmFsc0VudHJ5EgsKA2tleRgBIAEoCRIzCgV2YWx1ZRgCIAEoCzIkLm1vY2hhYnVnYXBpcy5hZGFwdC5ncmFwaC5TaWduYWxEYXRhOgI4AUIOCgxfdHJhbnNtaXR0ZXJCEgoQX2NoYWxsZW5nZV90b2tlbiJjChRTdGFydFNlc3Npb25SZXNwb25zZRINCgV0b2tlbhgBIAEoCRIwCgdleHBpcmVzGAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgAiAEBQgoKCF9leHBpcmVzIlIKElN0b3BTZXNzaW9uUmVxdWVzdBIWCgJpZBgBIAEoCUIKukgHcgUQARj0AxIbCgRmb3JrGAIgASgJQgi6SAVyAxjoB0gAiAEBQgcKBV9mb3JrIhUKE1N0b3BTZXNzaW9uUmVzcG9uc2UiKwoRR2V0U2Vzc2lvblJlcXVlc3QSFgoCaWQYASABKAlCCrpIB3IFEAEY9AMiWQoSR2V0U2Vzc2lvblJlc3BvbnNlEkMKB3Nlc3Npb24YASABKAsyKi5tb2NoYWJ1Z2FwaXMuYWRhcHQuYXV0b21hdGlvbnMudjEuU2Vzc2lvbkIGukgDyAEBIukBCgZPdXRwdXQSDgoGdmVydGV4GAEgASgJEgwKBGZvcmsYAiABKAkSQQoEZGF0YRgDIAMoCzIzLm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5PdXRwdXQuRGF0YUVudHJ5EisKB2NyZWF0ZWQYBCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wGlEKCURhdGFFbnRyeRILCgNrZXkYASABKAkSMwoFdmFsdWUYAiABKAsyJC5tb2NoYWJ1Z2FwaXMuYWRhcHQuZ3JhcGguU2lnbmFsRGF0YToCOAEiiwEKA1VybBILCgN1cmwYASABKAkSDAoEZm9yaxgCIAEoCRIOCgZ2ZXJ0ZXgYAyABKAkSDAoEZG9uZRgEIAEoCBIrCgdjcmVhdGVkGAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBINCgV0b2tlbhgGIAEoCRIPCgdzdG9wcGVkGAcgASgIIlIKB1Nlc3Npb24SDAoEZm9yaxgBIAEoCRI5CgZzdGF0dXMYAiABKA4yKS5tb2NoYWJ1Z2FwaXMuYWRhcHQuYXV0b21hdGlvbnMudjEuU3RhdHVzIi4KFFN0cmVhbVNlc3Npb25SZXF1ZXN0EhYKAmlkGAEgASgJQgq6SAdyBRABGPQDIkkKEUFja01lc3NhZ2VSZXF1ZXN0EhYKAmlkGAEgASgJQgq6SAdyBRABGPQDEhwKCm1lc3NhZ2VfaWQYAiABKAlCCLpIBXIDsAEBIhQKEkFja01lc3NhZ2VSZXNwb25zZSLrAQoVU3RyZWFtU2Vzc2lvblJlc3BvbnNlEhQKAmlkGAEgASgJQgi6SAVyA7ABARI7CgZvdXRwdXQYAiABKAsyKS5tb2NoYWJ1Z2FwaXMuYWRhcHQuYXV0b21hdGlvbnMudjEuT3V0cHV0SAASNQoDdXJsGAMgASgLMiYubW9jaGFidWdhcGlzLmFkYXB0LmF1dG9tYXRpb25zLnYxLlVybEgAEj0KB3Nlc3Npb24YBCABKAsyKi5tb2NoYWJ1Z2FwaXMuYWRhcHQuYXV0b21hdGlvbnMudjEuU2Vzc2lvbkgAQgkKB21lc3NhZ2UijAMKEVJ1blNlc3Npb25SZXF1ZXN0EhYKAmlkGAEgASgJQgq6SAdyBRABGPQDEjsKC3RyYW5zbWl0dGVyGAIgASgJQiG6SB5yHBABGGQyFl5bYS16QS1aMC05Xy1dezEsMTAwfSRIAIgBARJ+CgdzaWduYWxzGAMgAygLMkEubW9jaGFidWdhcGlzLmFkYXB0LmF1dG9tYXRpb25zLnYxLlJ1blNlc3Npb25SZXF1ZXN0LlNpZ25hbHNFbnRyeUIqukgnmgEkIiJyIBABGGQyGl5bXyRhLXpBLVpdW18kYS16QS1aMC05XSokEigKD2NoYWxsZW5nZV90b2tlbhgEIAEoCUIKukgHcgUQARj0A0gBiAEBGlQKDFNpZ25hbHNFbnRyeRILCgNrZXkYASABKAkSMwoFdmFsdWUYAiABKAsyJC5tb2NoYWJ1Z2FwaXMuYWRhcHQuZ3JhcGguU2lnbmFsRGF0YToCOAFCDgoMX3RyYW5zbWl0dGVyQhIKEF9jaGFsbGVuZ2VfdG9rZW4isQIKElJ1blNlc3Npb25SZXNwb25zZRIUCgJpZBgBIAEoCUIIukgFcgOwAQESRwoHc3RhcnRlZBgCIAEoCzI0Lm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5SdW5TZXNzaW9uU3RhcnRlZEgAEjsKBm91dHB1dBgDIAEoCzIpLm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5PdXRwdXRIABI1CgN1cmwYBCABKAsyJi5tb2NoYWJ1Z2FwaXMuYWRhcHQuYXV0b21hdGlvbnMudjEuVXJsSAASPQoHc2Vzc2lvbhgFIAEoCzIqLm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5TZXNzaW9uSABCCQoHbWVzc2FnZSJgChFSdW5TZXNzaW9uU3RhcnRlZBINCgV0b2tlbhgBIAEoCRIwCgdleHBpcmVzGAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgAiAEBQgoKCF9leHBpcmVzIisKEVJ1bkluaGVyaXRSZXF1ZXN0EhYKAmlkGAEgASgJQgq6SAdyBRABGPQDIrMCChJSdW5Jbmhlcml0UmVzcG9uc2USFAoCaWQYASABKAlCCLpIBXIDsAEBEkkKCWluaGVyaXRlZBgCIAEoCzI0Lm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5SdW5Jbmhlcml0U3RhcnRlZEgAEjsKBm91dHB1dBgDIAEoCzIpLm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5PdXRwdXRIABI1CgN1cmwYBCABKAsyJi5tb2NoYWJ1Z2FwaXMuYWRhcHQuYXV0b21hdGlvbnMudjEuVXJsSAASPQoHc2Vzc2lvbhgFIAEoCzIqLm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5TZXNzaW9uSABCCQoHbWVzc2FnZSJgChFSdW5Jbmhlcml0U3RhcnRlZBINCgV0b2tlbhgBIAEoCRIwCgdleHBpcmVzGAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgAiAEBQgoKCF9leHBpcmVzKsgBCgZTdGF0dXMSFgoSU1RBVFVTX1VOU1BFQ0lGSUVEEAASEgoOU1RBVFVTX1JVTk5JTkcQARISCg5TVEFUVVNfU1RPUFBFRBACEhMKD1NUQVRVU19TVE9QUElORxADEhQKEFNUQVRVU19DT01QTEVURUQQBBISCg5TVEFUVVNfRVhQSVJFRBAFEhIKDlNUQVRVU19FUlJPUkVEEAYSFQoRU1RBVFVTX0RFTEVHQVRJTkcQBxIUChBTVEFUVVNfREVMRUdBVEVEEAgyyBEKEUF1dG9tYXRpb25TZXJ2aWNlErMBCg9DcmVhdGVDaGFsbGVuZ2USOS5tb2NoYWJ1Z2FwaXMuYWRhcHQuYXV0b21hdGlvbnMudjEuQ3JlYXRlQ2hhbGxlbmdlUmVxdWVzdBo6Lm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5DcmVhdGVDaGFsbGVuZ2VSZXNwb25zZSIpgtPkkwIjOgEqIh4vdjEvYXV0b21hdGlvbnMve2lkfS9jaGFsbGVuZ2USugEKD1JlZGVlbUNoYWxsZW5nZRI5Lm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5SZWRlZW1DaGFsbGVuZ2VSZXF1ZXN0GjoubW9jaGFidWdhcGlzLmFkYXB0LmF1dG9tYXRpb25zLnYxLlJlZGVlbUNoYWxsZW5nZVJlc3BvbnNlIjCC0+STAio6ASoiJS92MS9hdXRvbWF0aW9ucy97aWR9L2NoYWxsZW5nZS9yZWRlZW0SrgEKDFN0YXJ0U2Vzc2lvbhI2Lm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5TdGFydFNlc3Npb25SZXF1ZXN0GjcubW9jaGFidWdhcGlzLmFkYXB0LmF1dG9tYXRpb25zLnYxLlN0YXJ0U2Vzc2lvblJlc3BvbnNlIi2C0+STAic6ASoiIi92MS9hdXRvbWF0aW9ucy97aWR9L3Nlc3Npb24vc3RhcnQSogEKC1N0b3BTZXNzaW9uEjUubW9jaGFidWdhcGlzLmFkYXB0LmF1dG9tYXRpb25zLnYxLlN0b3BTZXNzaW9uUmVxdWVzdBo2Lm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5TdG9wU2Vzc2lvblJlc3BvbnNlIiSC0+STAh4qHC92MS9hdXRvbWF0aW9ucy97aWR9L3Nlc3Npb24StgEKDkluaGVyaXRTZXNzaW9uEjgubW9jaGFidWdhcGlzLmFkYXB0LmF1dG9tYXRpb25zLnYxLkluaGVyaXRTZXNzaW9uUmVxdWVzdBo5Lm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5Jbmhlcml0U2Vzc2lvblJlc3BvbnNlIi+C0+STAik6ASoiJC92MS9hdXRvbWF0aW9ucy97aWR9L3Nlc3Npb24vaW5oZXJpdBKfAQoKR2V0U2Vzc2lvbhI0Lm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5HZXRTZXNzaW9uUmVxdWVzdBo1Lm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5HZXRTZXNzaW9uUmVzcG9uc2UiJILT5JMCHhIcL3YxL2F1dG9tYXRpb25zL3tpZH0vc2Vzc2lvbhKmAQoKUmVhZE91dHB1dBI0Lm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5SZWFkT3V0cHV0UmVxdWVzdBo1Lm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5SZWFkT3V0cHV0UmVzcG9uc2UiK4LT5JMCJRIjL3YxL2F1dG9tYXRpb25zL3tpZH0vc2Vzc2lvbi9vdXRwdXQSngEKCFJlYWRVcmxzEjIubW9jaGFidWdhcGlzLmFkYXB0LmF1dG9tYXRpb25zLnYxLlJlYWRVcmxzUmVxdWVzdBozLm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5SZWFkVXJsc1Jlc3BvbnNlIimC0+STAiMSIS92MS9hdXRvbWF0aW9ucy97aWR9L3Nlc3Npb24vdXJscxKxAQoNU3RyZWFtU2Vzc2lvbhI3Lm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5TdHJlYW1TZXNzaW9uUmVxdWVzdBo4Lm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5TdHJlYW1TZXNzaW9uUmVzcG9uc2UiK4LT5JMCJRIjL3YxL2F1dG9tYXRpb25zL3tpZH0vc2Vzc2lvbi9zdHJlYW0wARKmAQoKQWNrTWVzc2FnZRI0Lm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5BY2tNZXNzYWdlUmVxdWVzdBo1Lm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5BY2tNZXNzYWdlUmVzcG9uc2UiK4LT5JMCJToBKiIgL3YxL2F1dG9tYXRpb25zL3tpZH0vc2Vzc2lvbi9hY2sSqAEKClJ1blNlc3Npb24SNC5tb2NoYWJ1Z2FwaXMuYWRhcHQuYXV0b21hdGlvbnMudjEuUnVuU2Vzc2lvblJlcXVlc3QaNS5tb2NoYWJ1Z2FwaXMuYWRhcHQuYXV0b21hdGlvbnMudjEuUnVuU2Vzc2lvblJlc3BvbnNlIiuC0+STAiU6ASoiIC92MS9hdXRvbWF0aW9ucy97aWR9L3Nlc3Npb24vcnVuMAESsAEKClJ1bkluaGVyaXQSNC5tb2NoYWJ1Z2FwaXMuYWRhcHQuYXV0b21hdGlvbnMudjEuUnVuSW5oZXJpdFJlcXVlc3QaNS5tb2NoYWJ1Z2FwaXMuYWRhcHQuYXV0b21hdGlvbnMudjEuUnVuSW5oZXJpdFJlc3BvbnNlIjOC0+STAi06ASoiKC92MS9hdXRvbWF0aW9ucy97aWR9L3Nlc3Npb24vcnVuLWluaGVyaXQwARqJAcpBFmFkYXB0Lm1vY2hhYnVnYXBpcy5jb23SQW1odHRwczovL3d3dy5tb2NoYWJ1Z2FwaXMuY29tL2F1dGgvYWRhcHQuYXV0b21hdGlvbnMsaHR0cHM6Ly93d3cubW9jaGFidWdhcGlzLmNvbS9hdXRoL2FkYXB0LmF1dG9tYXRpb25zLnN0YXJ0YgZwcm90bzM",[vt,sa,ua,ut,Yn]);var ga=K(Te,10);var pa=K(Te,23);var ha=K(Te,26);var ue;(function(e){e[e.UNSPECIFIED=0]="UNSPECIFIED",e[e.RUNNING=1]="RUNNING",e[e.STOPPED=2]="STOPPED",e[e.STOPPING=3]="STOPPING",e[e.COMPLETED=4]="COMPLETED",e[e.EXPIRED=5]="EXPIRED",e[e.ERRORED=6]="ERRORED",e[e.DELEGATING=7]="DELEGATING",e[e.DELEGATED=8]="DELEGATED"})(ue||(ue={}));var Ae=Fe(Te,0),Nn=Ko(Te,0);var ba={webUrl:"https://adapt.mochabugapis.com/v1/automations",grpcUrl:"https://adapt-grpc.mochabugapis.com"},Rt={...ba};function Hn(e){Rt={...Rt,...e}}function Mn(){return{...Rt}}function Ln(){Rt={...ba}}var As=[ue.STOPPED,ue.COMPLETED,ue.ERRORED,ue.EXPIRED];function fa(e,t,n){let r=n?.debug??!1,o=y=>({Authorization:`Bearer ${y}`}),a=(y,A,G)=>{if(!r&&y==="info")return;(y==="error"?console.error:y==="warn"?console.warn:console.log)(`[Adapt] ${A}`,G??"")},i=null,s=null,m=null,u=0,I=null,f=new Set,l=[],c=1e3,g=()=>{I&&(clearTimeout(I),I=null)},h=[C.NotFound,C.PermissionDenied,C.Unauthenticated,C.InvalidArgument,C.FailedPrecondition],p=y=>y instanceof W?!h.includes(y.code):!0,b=async(y,A=3)=>{for(let G=0;G<=A;G++)try{return await y()}catch(X){if(G===A||!p(X))throw X;let S=Math.min(500*(1<<G),5e3);await new Promise(N=>setTimeout(N,Math.random()*S))}throw new Error("unreachable")},V=()=>{f.clear(),l.length=0},Z=y=>{if(!f.has(y)){if(f.size>=c){let A=l.shift();f.delete(A)}f.add(y),l.push(y)}},v=y=>f.has(y),E=y=>{let{case:A,value:G}=y.message;switch(A){case"output":return s?.onOutput?.({vertex:G.vertex,fork:G.fork,data:G.data,created:Q(G.created)}),!1;case"url":return s?.onUrl?.({url:G.url,vertex:G.vertex,done:G.done,stopped:G.stopped,created:Q(G.created),token:G.token,fork:G.fork}),!1;case"session":{let X=As.includes(G.status),S=Ge(Ae,G.status);return s?.onSession?.({status:S,fork:G.fork}),X&&a("info",`Session ended: ${S}`),X}case"started":case"inherited":throw new Error(`Unexpected '${A}' message in stream - should only be first message`);default:return a("warn",`Unknown message type: ${A}`),!1}},R=(y,A)=>{let G=v(y.id);G||Z(y.id);let X=G?!1:E(y);return!X&&s&&e.ackMessage({id:t,messageId:y.id},{headers:A}).catch(S=>a("error",`ACK failed: ${y.id}`,S)),X},x=()=>{if(!s||!m)return;u++;let y=u===1?0:Math.min(50*Math.pow(2,u-2),3e4);a("info",`Reconnecting in ${y}ms (attempt ${u})`),y===0?J():I=setTimeout(()=>{I=null,J()},y)},J=async()=>{if(!s||!m)return;let y=new AbortController;i=y;let A=o(m);a("info",`Connecting to stream: ${t}`);let G=null,X=!1,S=()=>{X||(X=!0,u=0,G&&(clearTimeout(G),G=null))};try{let N=e.streamSession({id:t},{signal:y.signal,headers:A});G=setTimeout(S,1e3);for await(let q of N)if(S(),R(q,A))break;a("info","Stream ended normally")}catch(N){if(G&&(clearTimeout(G),G=null),y.signal.aborted)return;a("error","Stream error",N),p(N)?x():s?.onError?.(N)}},z=y=>{if(!y)return;let A={};for(let[G,X]of Object.entries(y))X?.data instanceof Uint8Array&&typeof X?.mimeType=="string"&&X.mimeType?A[G]=k(Fn,{data:X.data,mimeType:X.mimeType,filename:X.filename}):A[G]=k(Fn,{data:new TextEncoder().encode(JSON.stringify(X)),mimeType:"application/json"});return Object.keys(A).length>0?A:void 0};return{raw:e,async run(y){a("info","run",{transmitter:y?.transmitter}),i&&await this.unsubscribe();let A=k(pa,{id:t,transmitter:y?.transmitter,signals:z(y?.signals),challengeToken:y?.challengeToken}),G=new AbortController;i=G,s=y??{},u=0;let X={...y?.authToken?o(y.authToken):{},"x-idempotency-key":crypto.randomUUID()},S,N,q=new Promise((_,H)=>{S=_,N=H}),se=async()=>{let _=e.runSession(A,{signal:G.signal,headers:X}),H,T=null,Ve=!1,xe=()=>{Ve||(Ve=!0,u=0,T&&(clearTimeout(T),T=null))};try{T=setTimeout(xe,1e3);for await(let M of _){if(xe(),!H){if(M.message.case!=="started"){N(new Error("Expected started message as first response"));return}let D=M.message.value;H=D.token,m=H,a("info","run success",{token:H}),S({sessionToken:H,expiresAt:D.expires?Q(D.expires):void 0});continue}if(R(M,o(H)))break}a("info","Stream ended normally")}catch(M){if(T&&(clearTimeout(T),T=null),G.signal.aborted)return;if(a("error","Stream error",M),H)p(M)?x():s?.onError?.(M);else if(p(M)){u++;let D=u===1?0:Math.min(50*Math.pow(2,u-2),3e4);a("info",`Retrying runSession in ${D}ms (attempt ${u})`),D===0?se():I=setTimeout(()=>{I=null,se()},D)}else N(M)}};se();try{return await q}catch(_){throw i=null,s=null,m=null,_}},async runInherit(y,A){a("info","runInherit"),i&&await this.unsubscribe();let G=new AbortController;i=G,s=A??{},u=0;let X=k(ha,{id:t}),S,N,q=new Promise((_,H)=>{S=_,N=H}),se=async()=>{let _=e.runInherit(X,{signal:G.signal,headers:o(y)}),H,T=null,Ve=!1,xe=()=>{Ve||(Ve=!0,u=0,T&&(clearTimeout(T),T=null))};try{T=setTimeout(xe,1e3);for await(let M of _){if(xe(),!H){if(M.message.case!=="inherited"){N(new Error("Expected inherited message as first response"));return}let D=M.message.value;H=D.token,m=H,a("info","runInherit success",{token:H}),S({sessionToken:H,expiresAt:D.expires?Q(D.expires):void 0});continue}if(R(M,o(H)))break}a("info","Stream ended normally")}catch(M){if(T&&(clearTimeout(T),T=null),G.signal.aborted)return;if(a("error","Stream error",M),H)p(M)?x():s?.onError?.(M);else if(p(M)){u++;let D=u===1?0:Math.min(50*Math.pow(2,u-2),3e4);a("info",`Retrying runInherit in ${D}ms (attempt ${u})`),D===0?se():I=setTimeout(()=>{I=null,se()},D)}else N(M)}};se();try{return await q}catch(_){throw i=null,s=null,m=null,_}},async start(y){a("info","start",{transmitter:y?.transmitter});let A=k(ga,{id:t,transmitter:y?.transmitter,signals:z(y?.signals),challengeToken:y?.challengeToken}),G={...y?.authToken?o(y.authToken):{},"x-idempotency-key":crypto.randomUUID()},X=await b(()=>e.startSession(A,{headers:G}));return a("info","start success",{token:X.token}),{sessionToken:X.token,expiresAt:X.expires?Q(X.expires):void 0}},async inherit(y){a("info","inherit");let A=await b(()=>e.inheritSession({id:t},{headers:o(y)}));return a("info","inherit success",{token:A.token}),{sessionToken:A.token,expiresAt:A.expires?Q(A.expires):void 0}},async subscribe(y,A){a("info","subscribe"),i&&await this.unsubscribe(),m=y,s=A,u=0,await J()},async stop(y,A){a("info","stop",A?{fork:A}:void 0),await b(()=>e.stopSession({id:t,fork:A},{headers:o(y)})),a("info","stop success")},async unsubscribe(){a("info","unsubscribe"),g(),V(),i?.abort(),i=null,s=null,m=null},async getSession(y){a("info","getSession");let A=await b(()=>e.getSession({id:t},{headers:o(y)})),G={status:Ge(Ae,A.session.status),fork:A.session.fork};return a("info","getSession success",G),G},async readOutput(y,A){a("info","readOutput",A);let G=await b(()=>e.readOutput({id:t,pageSize:A?.pageSize,vertex:A?.vertex,newerThan:A?.newerThan?.toISOString()},{headers:o(y)})),X={session:{status:Ge(Ae,G.session.status),fork:G.session.fork},nextPageCursor:G.nextPageCursor,outputs:G.outputs.map(S=>({vertex:S.vertex,fork:S.fork,created:Q(S.created),data:Object.fromEntries(Object.entries(S.data).map(([N,q])=>{if(q.mimeType==="application/json")try{return[N,JSON.parse(new TextDecoder().decode(q.data))]}catch{return[N,q]}return[N,q]}))}))};return a("info","readOutput success",{outputCount:X.outputs.length}),X},async readOutputBinary(y,A){a("info","readOutputBinary",A);let G=await b(()=>e.readOutput({id:t,pageSize:A?.pageSize,vertex:A?.vertex,newerThan:A?.newerThan?.toISOString()},{headers:o(y)})),X={session:{status:Ge(Ae,G.session.status),fork:G.session.fork},nextPageCursor:G.nextPageCursor,outputs:G.outputs.map(S=>({vertex:S.vertex,fork:S.fork,created:Q(S.created),data:S.data}))};return a("info","readOutputBinary success",{outputCount:X.outputs.length}),X},async readUrls(y,A){a("info","readUrls",A);let G=await b(()=>e.readUrls({id:t,pageSize:A?.pageSize,newerThan:A?.newerThan},{headers:o(y)})),X={session:{status:Ge(Ae,G.session.status),fork:G.session.fork},nextPageCursor:G.nextPageCursor,urls:G.urls.map(S=>({url:S.url,vertex:S.vertex,done:S.done,stopped:S.stopped,created:Q(S.created),token:S.token,fork:S.fork}))};return a("info","readUrls success",{urlCount:X.urls.length}),X}}}function ya(){try{new Headers}catch{throw new Error("connect-web requires the fetch API. Are you running on an old version of Node.js? Node.js is not supported in Connect for Web - please stay tuned for Connect for Node.")}}var De=function(e){return this instanceof De?(this.v=e,this):new De(e)},Cs=function(e,t,n){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var r=n.apply(e,t||[]),o,a=[];return o=Object.create((typeof AsyncIterator=="function"?AsyncIterator:Object).prototype),s("next"),s("throw"),s("return",i),o[Symbol.asyncIterator]=function(){return this},o;function i(c){return function(g){return Promise.resolve(g).then(c,f)}}function s(c,g){r[c]&&(o[c]=function(h){return new Promise(function(p,b){a.push([c,h,p,b])>1||m(c,h)})},g&&(o[c]=g(o[c])))}function m(c,g){try{u(r[c](g))}catch(h){l(a[0][3],h)}}function u(c){c.value instanceof De?Promise.resolve(c.value.v).then(I,f):l(a[0][2],c)}function I(c){m("next",c)}function f(c){m("throw",c)}function l(c,g){c(g),a.shift(),a.length&&m(a[0][0],a[0][1])}},Ia={redirect:"error"};function zn(e){var t;ya();let n=(t=e.useBinaryFormat)!==null&&t!==void 0?t:!1;return{async unary(r,o,a,i,s,m){let{serialize:u,parse:I}=xt(r,n,e.jsonOptions,e.binaryOptions);return a=a===void 0?e.defaultTimeoutMs:a<=0?void 0:a,await wn({interceptors:e.interceptors,signal:o,timeoutMs:a,req:{stream:!1,service:r.parent,method:r,requestMethod:"POST",url:Ct(e.baseUrl,r),header:Et(r.methodKind,n,a,i,!1),contextValues:m??At(),message:s},next:async f=>{var l;let c=e.useHttpGet===!0&&r.idempotency===mt.NO_SIDE_EFFECTS,g=null;c?f=Rn(f,u(f.message),n):g=u(f.message);let p=await((l=e.fetch)!==null&&l!==void 0?l:globalThis.fetch)(f.url,Object.assign(Object.assign({},Ia),{method:f.requestMethod,headers:f.header,signal:f.signal,body:g})),{isUnaryError:b,unaryError:V}=Jt(r.methodKind,n,p.status,p.headers);if(b)throw Ke(await p.json(),An(...Bt(p.headers)),V);let[Z,v]=Bt(p.headers);return{stream:!1,service:r.parent,method:r,header:Z,message:n?I(new Uint8Array(await p.arrayBuffer())):In(r.output,await p.json(),Vt(e.jsonOptions)),trailer:v}}})},async stream(r,o,a,i,s,m){let{serialize:u,parse:I}=xt(r,n,e.jsonOptions,e.binaryOptions);function f(c,g,h,p){return Cs(this,arguments,function*(){let V=Vn(c).getReader(),Z=!1;for(;;){let v=yield De(V.read());if(v.done)break;let{flags:E,data:R}=v.value;if((E&Zt)===Zt)throw new W("protocol error: received unsupported compressed output",C.Internal);if((E&Xt)===Xt){Z=!0;let x=En(R);if(x.error){let J=x.error;throw h.forEach((z,y)=>{J.metadata.append(y,z)}),J}x.metadata.forEach((J,z)=>g.set(z,J));continue}yield yield De(I(R))}if("throwIfAborted"in p&&p.throwIfAborted(),!Z)throw"missing EndStreamResponse"})}async function l(c){if(r.methodKind!="server_streaming")throw"The fetch API does not support streaming request bodies";let g=await c[Symbol.asyncIterator]().next();if(g.done==!0)throw"missing request message";return xn(0,u(g.value))}return a=a===void 0?e.defaultTimeoutMs:a<=0?void 0:a,await kn({interceptors:e.interceptors,timeoutMs:a,signal:o,req:{stream:!0,service:r.parent,method:r,requestMethod:"POST",url:Ct(e.baseUrl,r),header:Et(r.methodKind,n,a,i,!1),contextValues:m??At(),message:s},next:async c=>{var g;let p=await((g=e.fetch)!==null&&g!==void 0?g:globalThis.fetch)(c.url,Object.assign(Object.assign({},Ia),{method:c.requestMethod,headers:c.header,signal:c.signal,body:await l(c.message)}));if(Jt(r.methodKind,n,p.status,p.headers),p.body===null)throw"missing response body";let b=new Headers;return Object.assign(Object.assign({},c),{header:p.headers,trailer:b,message:f(p.body,b,p.headers,c.signal)})}})}}}function Kn(e){let t=Mn(),n=zn({baseUrl:`${t.webUrl}/${e.id}`,useBinaryFormat:!0});return Xn(Nn,n)}var Ce=null,$=null,wt=new Map;async function Un(e,t){let n=await e.createChallenge({id:t});return{count:n.count,size:n.size,difficulty:n.difficulty,expires:n.expires?Q(n.expires):new Date,token:n.token,verificationToken:n.verificationToken}}async function Tn(e,t,n,r){let o=await e.redeemChallenge({id:t,verificationToken:n,solutions:r});return{token:o.token,expires:o.expires?Q(o.expires):new Date}}typeof window<"u"&&(window.CAP_CUSTOM_FETCH=async(e,t)=>{let n=e.toString();if(n.endsWith("/challenge")){if(!Ce||!$)return new Response(JSON.stringify({error:"Cap adapter not initialized"}),{status:500,headers:{"Content-Type":"application/json"}});try{let r=await Un(Ce,$);return wt.set($,r.verificationToken),new Response(JSON.stringify({challenge:{c:r.count,s:r.size,d:r.difficulty},token:r.token,expires:r.expires.toISOString()}),{status:200,headers:{"Content-Type":"application/json"}})}catch(r){return new Response(JSON.stringify({error:String(r)}),{status:500,headers:{"Content-Type":"application/json"}})}}if(n.endsWith("/redeem")){if(!Ce||!$)return new Response(JSON.stringify({error:"Cap adapter not initialized"}),{status:500,headers:{"Content-Type":"application/json"}});let r=wt.get($);if(!r)return new Response(JSON.stringify({error:"No verification token found - challenge must be created first"}),{status:400,headers:{"Content-Type":"application/json"}});try{let a=((t?.body?JSON.parse(t.body):{}).solutions||[]).map(s=>BigInt(s)),i=await Tn(Ce,$,r,a);return wt.delete($),new Response(JSON.stringify({success:!0,token:i.token,expires:i.expires.toISOString()}),{status:200,headers:{"Content-Type":"application/json"}})}catch(o){return new Response(JSON.stringify({error:String(o)}),{status:500,headers:{"Content-Type":"application/json"}})}}return fetch(e,t)});function Ga(e,t){Ce=e,$=t}function Za(){$&&wt.delete($),Ce=null,$=null}var dg=Ea(Aa(),1),ie=class{constructor(t){this.widgetContainer=null;this.widgetElement=null;this.destroyed=!1;this.options=t;let n=typeof t.container=="string"?document.getElementById(t.container):t.container;if(!n)throw new Error(`Container ${typeof t.container=="string"?`with id '${t.container}'`:""} not found`);this.containerElement=n,this.injectStyles(),Ga(t.client,t.automationId),this.mountWidget()}injectStyles(){if(document.getElementById("mb-adapt-cap-styles"))return;let t=document.createElement("style");t.id="mb-adapt-cap-styles",t.textContent=`
|
|
1
|
+
"use strict";var MbAdapt=(()=>{var Ca=Object.create;var Pe=Object.defineProperty;var Va=Object.getOwnPropertyDescriptor;var xa=Object.getOwnPropertyNames;var Sa=Object.getPrototypeOf,Xa=Object.prototype.hasOwnProperty;var Ba=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),Wa=(e,t)=>{for(var n in t)Pe(e,n,{get:t[n],enumerable:!0})},_n=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of xa(t))!Xa.call(e,o)&&o!==n&&Pe(e,o,{get:()=>t[o],enumerable:!(r=Va(t,o))||r.enumerable});return e};var Ea=(e,t,n)=>(n=e!=null?Ca(Sa(e)):{},_n(t||!e||!e.__esModule?Pe(n,"default",{value:e,enumerable:!0}):n,e)),Ja=e=>_n(Pe({},"__esModule",{value:!0}),e);var Aa=Ba((kt,Qn)=>{(()=>{let e="vibrate"in navigator&&!window.matchMedia("(prefers-reduced-motion: reduce)").matches;if(typeof window>"u")return;let t=(f,l={})=>window?.CAP_CUSTOM_FETCH?window.CAP_CUSTOM_FETCH(f,l):fetch(f,l);function n(f,l){let c=(function(h){let b=2166136261;for(let V=0;V<h.length;V++)b^=h.charCodeAt(V),b+=(b<<1)+(b<<4)+(b<<7)+(b<<8)+(b<<24);return b>>>0})(f),p="";function g(){return c^=c<<13,c^=c>>>17,c^=c<<5,c>>>0}for(;p.length<l;)p+=g().toString(16).padStart(8,"0");return p.substring(0,l)}async function r(f){var l=(p=>{let g=atob(p),h=new Uint8Array(g.length);for(let b=0;b<g.length;b++)h[b]=g.charCodeAt(b);return h})(f);let c=await new Promise((p,g)=>{try{var h=new DecompressionStream("deflate-raw"),b=h.writable.getWriter(),V=h.readable.getReader(),Z=[];V.read().then(function v(E){if(E.done){for(var R=0,x=0,J=0;J<Z.length;J++)R+=Z[J].length;var z=new Uint8Array(R);for(J=0;J<Z.length;J++)z.set(Z[J],x),x+=Z[J].length;p(new TextDecoder().decode(z))}else Z.push(E.value),V.read().then(v).catch(g)}).catch(g),b.write(l).then(()=>{b.close()}).catch(g)}catch(v){g(v)}});return new Promise(p=>{var g=setTimeout(()=>{V(),p({__timeout:!0})},2e4),h=document.createElement("iframe");h.setAttribute("sandbox","allow-scripts"),h.setAttribute("aria-hidden","true"),h.style.cssText="position:absolute;width:1px;height:1px;top:-9999px;left:-9999px;border:none;opacity:0;pointer-events:none;";var b=!1;function V(){b||(b=!0,clearTimeout(g),window.removeEventListener("message",Z),h.parentNode&&h.parentNode.removeChild(h))}function Z(v){var E=v.data;E&&typeof E=="object"&&(E.type==="cap:instr"?(V(),E.blocked?p({__blocked:!0,blockReason:E.blockReason||"automated_browser"}):E.result?p(E.result):p({__timeout:!0})):E.type==="cap:error"&&(V(),p({__timeout:!0})))}window.addEventListener("message",Z),h.srcdoc='<!DOCTYPE html><html><head><meta charset="UTF-8"></head><body><script>'+c+`
|
|
2
|
+
<\/script></body></html>`,document.body.appendChild(h)})}let o=null,a=()=>{if(o)return o;let f=window.CAP_CUSTOM_WASM_URL||"https://cdn.jsdelivr.net/npm/@cap.js/wasm@0.0.6/browser/cap_wasm_bg.wasm";return o=fetch(f).then(l=>{if(!l.ok)throw new Error(`Failed to fetch wasm: ${l.status}`);return l.arrayBuffer()}).then(l=>WebAssembly.compile(l)).catch(l=>{throw o=null,l}),o};typeof WebAssembly=="object"&&typeof WebAssembly.compile=="function"&&a().catch(()=>{});let i=null;function s(){return i||(i=URL.createObjectURL(new Blob(['(()=>{const e=async({salt:e,target:t})=>{let n=0;const r=new TextEncoder,o=4*t.length,s=Math.floor(o/8),l=o%8,a=t.length%2==0?t:t+"0",c=a.length/2,i=new Uint8Array(c);for(let e=0;e<c;e++)i[e]=parseInt(a.substring(2*e,2*e+2),16);const f=l>0?255<<8-l&255:0;for(;;)try{for(let t=0;t<5e4;t++){const t=e+n,o=r.encode(t),a=await crypto.subtle.digest("SHA-256",o),c=new Uint8Array(a);let g=!0;for(let e=0;e<s;e++)if(c[e]!==i[e]){g=!1;break}if(g&&l>0&&(c[s]&f)!==(i[s]&f)&&(g=!1),g)return void self.postMessage({nonce:n,found:!0});n++}}catch(e){return console.error("[cap worker]",e),void self.postMessage({found:!1,error:e.message})}};if("object"!=typeof WebAssembly||"function"!=typeof WebAssembly?.instantiate)return console.warn("[cap worker] wasm not supported, falling back to alternative solver. this will be significantly slower."),void(self.onmessage=async({data:{salt:t,target:n}})=>e({salt:t,target:n}));let t=null;self.onmessage=async({data:{salt:n,target:r,wasmModule:o}})=>{if(o instanceof WebAssembly.Module&&null===t){const s=(e=>{try{let n,r=0,o=null;const s=()=>(null!==o&&0!==o.byteLength||(o=new Uint8Array(n.memory.buffer)),o),l=new TextEncoder,a=(e,t,n)=>{if(void 0===n){const n=l.encode(e),o=t(n.length,1)>>>0;return s().subarray(o,o+n.length).set(n),r=n.length,o}let o=e.length,a=t(o,1)>>>0;const c=s();let i=0;for(;i<o;i++){const t=e.charCodeAt(i);if(t>127)break;c[a+i]=t}if(i!==o){0!==i&&(e=e.slice(i)),a=n(a,o,o=i+3*e.length,1)>>>0;const t=s().subarray(a+i,a+o),{written:r}=l.encodeInto(e,t);i+=r,a=n(a,o,i,1)>>>0}return r=i,a},c={wbg:{}};c.wbg.__wbindgen_init_externref_table=()=>{const e=n.__wbindgen_export_0,t=e.grow(4);e.set(0,void 0),e.set(t+0,void 0),e.set(t+1,null),e.set(t+2,!0),e.set(t+3,!1)};const i=new WebAssembly.Instance(e,c);return n=i.exports,n.__wbindgen_start&&n.__wbindgen_start(),t=(e,t)=>{const o=a(e,n.__wbindgen_malloc,n.__wbindgen_realloc),s=r,l=a(t,n.__wbindgen_malloc,n.__wbindgen_realloc),c=r;return BigInt.asUintN(64,n.solve_pow(o,s,l,c))},!0}catch(e){return console.error("[cap worker] failed to init wasm from module:",e),!1}})(o);if(!s)return console.warn("[cap worker] wasm init failed, falling back to JS solver."),e({salt:n,target:r})}if(null===t)return console.warn("[cap worker] no wasm module provided, falling back to JS solver."),e({salt:n,target:r});try{const e=performance.now(),o=t(n,r),s=performance.now();self.postMessage({nonce:Number(o),found:!0,durationMs:(s-e).toFixed(2)})}catch(e){console.error("[cap worker]",e),self.postMessage({found:!1,error:e.message||String(e)})}},self.onerror=e=>{self.postMessage({found:!1,error:e})}})();'],{type:"application/javascript"})),i)}class u{constructor(l){this._size=l,this._workers=[],this._idle=[],this._queue=[],this._wasmModule=null,this._spawnFailures=0}setWasm(l){this._wasmModule=l}_spawn(){let l=s(),c=new Worker(l);return c._busy=!1,this._workers.push(c),this._idle.push(c),c}_replaceWorker(l){let c=this._workers.indexOf(l);c!==-1&&this._workers.splice(c,1);let p=this._idle.indexOf(l);p!==-1&&this._idle.splice(p,1);try{l.terminate()}catch{}return this._spawnFailures++,this._spawnFailures>3?(console.error("[cap] worker spawn failed repeatedly, not retrying"),null):this._spawn()}_ensureSize(l){for(;this._workers.length<l;)this._spawn()}run(l,c){return new Promise((p,g)=>{this._queue.push({salt:l,target:c,resolve:p,reject:g}),this._dispatch()})}_dispatch(){for(;this._idle.length>0&&this._queue.length>0;){let l=this._idle.shift(),{salt:c,target:p,resolve:g,reject:h}=this._queue.shift(),b=!1,V=({data:v})=>{b||(b=!0,l.removeEventListener("message",V),l.removeEventListener("error",Z),this._spawnFailures=0,this._idle.push(l),v.found?g(v.nonce):h(new Error(v.error||"worker failed")),this._dispatch())},Z=v=>{if(b)return;b=!0,l.removeEventListener("message",V),l.removeEventListener("error",Z);let E=this._replaceWorker(l);h(v),E&&this._dispatch()};l.addEventListener("message",V),l.addEventListener("error",Z),this._wasmModule?l.postMessage({salt:c,target:p,wasmModule:this._wasmModule},[]):l.postMessage({salt:c,target:p})}}terminate(){for(let l of this._workers)try{l.terminate()}catch{}this._workers=[],this._idle=[],this._queue=[]}}class m extends HTMLElement{#n=null;#a=navigator.hardwareConcurrency||8;token=null;#o;#t;#m;#c=!1;#i;#e=null;#s=null;#r=null;#l=null;#p(){return{state:"idle",challengeResp:null,challenges:null,results:[],completedCount:0,solvePromise:null,promoteFn:null,_listeners:[],pendingPromotion:null,token:null,tokenExpires:null,notify(){for(let l of this._listeners)l();this._listeners=[]},onSettled(l){this.state==="done"||this.state==="error"?l():this._listeners.push(l)}}}#d(){this.#e=this.#p(),this.#h()}#u(){this.#l&&(window.removeEventListener("mousemove",this.#l),window.removeEventListener("touchstart",this.#l),window.removeEventListener("keydown",this.#l),this.#l=null)}#h(){this.#u();let l=()=>{this.#u(),this.#f()};this.#l=l,window.addEventListener("mousemove",l,{passive:!0}),window.addEventListener("touchstart",l,{passive:!0}),window.addEventListener("keydown",l,{passive:!0})}#b(){return typeof this.checkVisibility=="function"?this.checkVisibility({checkOpacity:!0,checkVisibilityCSS:!0}):!!(this.offsetParent||this.getClientRects().length>0)}#f(){this.#e.state==="idle"&&this.#b()&&(this.#e.state="waiting",this.#s=setTimeout(()=>{this.#g()},2500))}async#g(){if(this.#e.state!=="waiting")return;this.#e.state="fetching";let l=this.getAttribute("data-cap-api-endpoint");if(!l&&window?.CAP_CUSTOM_FETCH&&(l="/"),l){l.endsWith("/")||(l+="/");try{let c=await t(`${l}challenge`,{method:"POST"}),p;try{p=await c.json()}catch{throw new Error("Failed to parse speculative challenge response")}if(p.error)throw new Error(p.error);p._apiEndpoint=l,this.#e.challengeResp=p;let{challenge:g,token:h}=p,b=g;if(!Array.isArray(b)){let V=0;b=Array.from({length:g.c},()=>(V++,[n(`${h}${V}`,g.s),n(`${h}${V}d`,g.d)]))}this.#e.challenges=b,this.#e.state="solving",this.#e.solvePromise=this.#y(b)}catch(c){console.warn("[cap] speculative challenge fetch failed:",c),this.#e.state="error",this.#e.notify()}}else this.#e.state="idle"}async#y(l){s();let c=null;try{c=await a()}catch{}this.#r||(this.#r=new u(1),this.#r._spawn()),this.#r.setWasm(c);let p=l.length,g=new Array(p),h=1,b=!1;this.#e.promoteFn=Z=>{b||(b=!0,h=Z,this.#r._size=Z,this.#r._ensureSize(Z))},this.#e.pendingPromotion!==null&&(this.#e.promoteFn(this.#e.pendingPromotion),this.#e.pendingPromotion=null);let V=0;for(;V<p;){let Z=h,v=[],E=[];for(let x=0;x<Z&&V<p;x++)E.push(V),v.push(l[V]),V++;this.#r._ensureSize(Math.max(h,Z));let R=await Promise.all(v.map(x=>this.#r.run(x[0],x[1]).then(J=>(this.#e.completedCount++,J))));for(let x=0;x<E.length;x++)g[E[x]]=R[x];!b&&V<p&&await new Promise(x=>setTimeout(x,120))}return this.#e.results=g,this.#e.state="redeeming",this.#I(g),g}async#I(l){try{let c=this.#e.challengeResp,p=c._apiEndpoint;if(!p)throw new Error("[cap] speculative redeem: missing apiEndpoint");let g=null;if(c.instrumentation&&(g=await r(c.instrumentation),g?.__timeout||g?.__blocked))return this.#e.state="done",void this.#e.notify();let h=await t(`${p}redeem`,{method:"POST",body:JSON.stringify({token:c.token,solutions:l,...g&&{instr:g}}),headers:{"Content-Type":"application/json"}}),b;try{b=await h.json()}catch{throw new Error("Failed to parse speculative redeem response")}if(!b.success)throw new Error(b.error||"Speculative redeem failed");this.#e.token=b.token,this.#e.tokenExpires=new Date(b.expires).getTime(),this.#e.state="done",this.#e.notify()}catch(c){console.warn("[cap] speculative redeem failed (will redo on click):",c),this.#e.state="done",this.#e.notify()}}getI18nText(l,c){return this.getAttribute(`data-cap-i18n-${l}`)||c}static get observedAttributes(){return["onsolve","onprogress","onreset","onerror","data-cap-worker-count","data-cap-i18n-initial-state"]}constructor(){super(),this.#i&&this.#i.forEach((l,c)=>{this.removeEventListener(c.slice(2),l)}),this.#i=new Map,this.boundHandleProgress=this.handleProgress.bind(this),this.boundHandleSolve=this.handleSolve.bind(this),this.boundHandleError=this.handleError.bind(this),this.boundHandleReset=this.handleReset.bind(this)}initialize(){s(),this.#e||(this.#e=this.#p()),this.#r||(this.#r=new u(1),this.#r._spawn())}attributeChangedCallback(l,c,p){if(l.startsWith("on")){let g=l.slice(2),h=this.#i.get(l);if(h&&this.removeEventListener(g,h),p){let b=V=>{let Z=this.getAttribute(l);typeof window[Z]=="function"&&window[Z].call(this,V)};this.#i.set(l,b),this.addEventListener(g,b)}}l==="data-cap-worker-count"&&this.setWorkersCount(parseInt(p,10)),l==="data-cap-i18n-initial-state"&&this.#t&&this.#t?.querySelector(".label.active")&&this.animateLabel(this.getI18nText("initial-state","Verify you're human"))}async connectedCallback(){this.#m=this,this.#o=this.attachShadow({mode:"open"}),this.#t=document.createElement("div"),this.createUI(),this.addEventListeners(),this.initialize(),this.#t.removeAttribute("disabled");let l=this.getAttribute("data-cap-worker-count"),c=l?parseInt(l,10):null;this.setWorkersCount(c||navigator.hardwareConcurrency||8);let p=this.getAttribute("data-cap-hidden-field-name")||"cap-token";this.#m.innerHTML=`<input type="hidden" name="${p}">`,this.#h()}async solve(){if(!this.#c)try{this.#c=!0,this.updateUI("verifying",this.getI18nText("verifying-label","Verifying..."),!0),this.#t.setAttribute("aria-label",this.getI18nText("verifying-aria-label","Verifying you're a human, please wait")),this.dispatchEvent("progress",{progress:0});try{let l,c,p=this.getAttribute("data-cap-api-endpoint");if(!p&&window?.CAP_CUSTOM_FETCH)p="/";else if(!p)throw new Error("Missing API endpoint. Either custom fetch or an API endpoint must be provided.");if(p.endsWith("/")||(p+="/"),this.#e.state==="done"&&this.#e.token&&this.#e.tokenExpires&&Date.now()<this.#e.tokenExpires){this.dispatchEvent("progress",{progress:100});let R=this.getAttribute("data-cap-hidden-field-name")||"cap-token";this.querySelector(`input[name='${R}']`)&&(this.querySelector(`input[name='${R}']`).value=this.#e.token),this.dispatchEvent("solve",{token:this.#e.token}),this.token=this.#e.token;let x=this.#e.tokenExpires-Date.now();return this.#n&&clearTimeout(this.#n),this.#n=setTimeout(()=>this.reset(),x),this.#t.setAttribute("aria-label",this.getI18nText("verified-aria-label","We have verified you're a human, you may now continue")),e&&navigator.vibrate([10,50,20,30,40]),this.#d(),this.#c=!1,{success:!0,token:this.token}}if(this.#e.state==="done")l=this.#e.results,c=this.#e.challengeResp,this.dispatchEvent("progress",{progress:100});else if(this.#e.state==="solving"||this.#e.state==="redeeming"||this.#e.state==="fetching"||this.#e.state==="waiting"){this.#e.state==="waiting"&&(this.#s&&(clearTimeout(this.#s),this.#s=null),this.#e.state="waiting",this.#g()),this.#e.pendingPromotion=this.#a,this.#e.promoteFn&&this.#e.promoteFn(this.#a);let R=setInterval(()=>{if(this.#e.state!=="solving"&&this.#e.state!=="redeeming")return void clearInterval(R);let x=this.#e.challenges?this.#e.challenges.length:1,J=this.#e.completedCount,z=this.#e.state==="redeeming"?99:Math.min(98,Math.round(J/x*100));this.dispatchEvent("progress",{progress:z})},150);if(await new Promise(x=>this.#e.onSettled(x)),clearInterval(R),this.#e.state!=="done")throw new Error("Speculative solve failed \u2013 please try again");if(this.#e.token&&this.#e.tokenExpires&&Date.now()<this.#e.tokenExpires){this.dispatchEvent("progress",{progress:100});let x=this.getAttribute("data-cap-hidden-field-name")||"cap-token";this.querySelector(`input[name='${x}']`)&&(this.querySelector(`input[name='${x}']`).value=this.#e.token),this.dispatchEvent("solve",{token:this.#e.token}),this.token=this.#e.token;let J=this.#e.tokenExpires-Date.now();return this.#n&&clearTimeout(this.#n),this.#n=setTimeout(()=>this.reset(),J),this.#t.setAttribute("aria-label",this.getI18nText("verified-aria-label","We have verified you're a human, you may now continue")),e&&navigator.vibrate([10,50,20,30,40]),this.#d(),this.#c=!1,{success:!0,token:this.token}}l=this.#e.results,c=this.#e.challengeResp,this.dispatchEvent("progress",{progress:100})}else{let R=await t(`${p}challenge`,{method:"POST"});try{c=await R.json()}catch{throw new Error("Failed to parse challenge response from server")}if(c.error)throw new Error(c.error);let{challenge:x,token:J}=c,z=x;if(!Array.isArray(z)){let y=0;z=Array.from({length:x.c},()=>(y++,[n(`${J}${y}`,x.s),n(`${J}${y}d`,x.d)]))}l=await this.solveChallenges(z)}let g=c.instrumentation?r(c.instrumentation):Promise.resolve(null),h=await g;if(h?.__timeout||h?.__blocked){this.updateUIBlocked(this.getI18nText("error-label","Error"),h?.__blocked),this.#t.setAttribute("aria-label",this.getI18nText("error-aria-label","An error occurred, please try again")),this.removeEventListener("error",this.boundHandleError);let R=new CustomEvent("error",{bubbles:!0,composed:!0,detail:{isCap:!0,message:"Instrumentation failed"}});return super.dispatchEvent(R),this.addEventListener("error",this.boundHandleError),this.executeAttributeCode("onerror",R),console.error("[cap]","Instrumentation failed"),void(this.#c=!1)}let{token:b}=c,V=await t(`${p}redeem`,{method:"POST",body:JSON.stringify({token:b,solutions:l,...h&&{instr:h}}),headers:{"Content-Type":"application/json"}}),Z;try{Z=await V.json()}catch{throw new Error("Failed to parse server response")}if(this.dispatchEvent("progress",{progress:100}),!Z.success)throw new Error(Z.error||"Invalid solution");let v=this.getAttribute("data-cap-hidden-field-name")||"cap-token";this.querySelector(`input[name='${v}']`)&&(this.querySelector(`input[name='${v}']`).value=Z.token),this.dispatchEvent("solve",{token:Z.token}),this.token=Z.token,this.#d(),this.#n&&clearTimeout(this.#n);let E=new Date(Z.expires).getTime()-Date.now();return E>0&&E<864e5?this.#n=setTimeout(()=>this.reset(),E):this.error("Invalid expiration time"),this.#t.setAttribute("aria-label",this.getI18nText("verified-aria-label","We have verified you're a human, you may now continue")),e&&navigator.vibrate([10,50,20,30,40]),{success:!0,token:this.token}}catch(l){throw this.#t.setAttribute("aria-label",this.getI18nText("error-aria-label","An error occurred, please try again")),this.error(l.message),l}}finally{this.#c=!1}}async solveChallenges(l){let c=l.length,p=0,g=null,h=typeof WebAssembly=="object"&&typeof WebAssembly.instantiate=="function";if(h)try{g=await a()}catch(Z){console.warn("[cap] wasm unavailable, falling back to JS solver:",Z)}if(!h&&!this.#o.querySelector(".warning")){let Z=document.createElement("div");Z.className="warning",Z.style.cssText="width:var(--cap-widget-width,230px);background:rgb(237,56,46);color:white;padding:4px 6px;padding-bottom:calc(var(--cap-border-radius,14px) + 5px);font-size:10px;box-sizing:border-box;font-family:system-ui;border-top-left-radius:8px;border-top-right-radius:8px;text-align:center;user-select:none;margin-bottom:-35.5px;opacity:0;transition:margin-bottom .3s,opacity .3s;",Z.innerText=this.getI18nText("wasm-disabled","Enable WASM for significantly faster solving"),this.#o.insertBefore(Z,this.#o.firstChild),setTimeout(()=>{Z.style.marginBottom="calc(-1 * var(--cap-border-radius, 14px))",Z.style.opacity=1},10)}let b=new u(this.#a);b.setWasm(g),b._ensureSize(this.#a);let V=[];try{for(let Z=0;Z<l.length;Z+=this.#a){let v=l.slice(Z,Math.min(Z+this.#a,l.length)),E=await Promise.all(v.map(([R,x])=>b.run(R,x).then(J=>{p++;let z=Math.min(99,Math.round((0+p)/c*100));return this.dispatchEvent("progress",{progress:z}),J})));V.push(...E)}}finally{b.terminate()}return V}setWorkersCount(l){let c=parseInt(l,10),p=Math.min(navigator.hardwareConcurrency||8,16);this.#a=!Number.isNaN(c)&&c>0&&c<=p?c:navigator.hardwareConcurrency||8}createUI(){this.#t.classList.add("captcha"),this.#t.setAttribute("role","button"),this.#t.setAttribute("tabindex","0"),this.#t.setAttribute("aria-label",this.getI18nText("verify-aria-label","Click to verify you're a human")),this.#t.setAttribute("aria-live","polite"),this.#t.setAttribute("disabled","true"),this.#t.innerHTML=`<div class="checkbox" part="checkbox"><svg class="progress-ring" viewBox="0 0 32 32"><circle class="progress-ring-bg" cx="16" cy="16" r="14"></circle><circle class="progress-ring-circle" cx="16" cy="16" r="14"></circle></svg></div><p part="label" class="label-wrapper"><span class="label active">${this.getI18nText("initial-state","Verify you're human")}</span></p><a part="attribution" aria-label="Secured by Cap" href="https://capjs.js.org/" class="credits" target="_blank" rel="follow noopener" title="Secured by Cap: Self-hosted CAPTCHA for the modern web.">Cap</a>`,this.#o.innerHTML=`<style${window.CAP_CSS_NONCE?` nonce=${window.CAP_CSS_NONCE}`:""}>@media (prefers-reduced-motion:reduce){.captcha,.captcha *{transition:none!important;animation:none!important}.label{filter:none!important;opacity:1!important;transition:none!important;transform:none!important}.label:not(.active),.label.exit{display:none!important}}.captcha,.captcha *{box-sizing:border-box}.captcha{background-color:var(--cap-background,#fdfdfd);border:1px solid var(--cap-border-color,#dddddd8f);border-radius:var(--cap-border-radius,14px);-webkit-user-select:none;user-select:none;height:var(--cap-widget-height,58px);width:var(--cap-widget-width,260px);padding:var(--cap-widget-padding,14px);align-items:center;gap:var(--cap-gap,15px);cursor:pointer;-webkit-tap-highlight-color:#fff0;color:var(--cap-color,#212121);transition:filter .2s,transform .2s;display:flex;position:relative;overflow:hidden}.captcha:not([data-state]):active{transform:scale(.97)}.captcha:hover{filter:brightness(98%)}.captcha *{font-family:var(--cap-font,system, -apple-system, "BlinkMacSystemFont", ".SFNSText-Regular", "San Francisco", "Roboto", "Segoe UI", "Helvetica Neue", "Lucida Grande", "Ubuntu", "arial", sans-serif)}.checkbox{width:var(--cap-checkbox-size,25px);height:var(--cap-checkbox-size,25px);border:var(--cap-checkbox-border,1px solid #aaaaaad1);border-radius:var(--cap-checkbox-border-radius,6px);background-color:var(--cap-checkbox-background,#fafafa91);margin-top:var(--cap-checkbox-margin,2px);margin-bottom:var(--cap-checkbox-margin,2px);transition:opacity .2s}.captcha p{-webkit-user-select:none;user-select:none;margin:0;font-size:15px;font-weight:500}.label-wrapper{flex:1;align-items:center;min-width:0;height:2em;display:flex;position:relative;overflow:hidden}.label-wrapper:before,.label-wrapper:after{content:"";pointer-events:none;z-index:1;width:100%;height:.6em;position:absolute;left:0}.label-wrapper:before{background:linear-gradient(to bottom, var(--cap-background,#fdfdfd), transparent);top:0}.label-wrapper:after{background:linear-gradient(to top, var(--cap-background,#fdfdfd), transparent);bottom:0}.label{white-space:nowrap;opacity:0;filter:blur(2px);transition:transform .5s cubic-bezier(.25,1,.5,1),opacity .5s,filter .5s;position:absolute;transform:translateY(100%)}.label.active{opacity:1;filter:none;transform:translateY(0)}.label.exit{opacity:0;filter:blur(2px);transform:translateY(-100%)}.checkbox .progress-ring{width:100%;height:100%;display:none;transform:rotate(-90deg)}.checkbox .progress-ring-bg{fill:none;stroke:var(--cap-spinner-background-color,#eee);stroke-width:var(--cap-spinner-thickness,3)}.checkbox .progress-ring-circle{fill:none;stroke:var(--cap-spinner-color,#000);stroke-width:var(--cap-spinner-thickness,3);stroke-linecap:round;stroke-dasharray:87.96;stroke-dashoffset:87.96px;transition:stroke-dashoffset .3s}.captcha[data-state=verifying] .checkbox{background:0 0;border:none;border-radius:50%;justify-content:center;align-items:center;display:flex;transform:scale(1.1)}.captcha[data-state=verifying] .checkbox .progress-ring{display:block}.captcha[data-state=done] .checkbox{background-image:var(--cap-checkmark,url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%3E%3Cstyle%3E%40keyframes%20anim%7B0%25%7Bstroke-dashoffset%3A23.21320343017578px%7Dto%7Bstroke-dashoffset%3A0%7D%7D%3C%2Fstyle%3E%3Cpath%20fill%3D%22none%22%20stroke%3D%22%2300a67d%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20stroke-width%3D%222%22%20d%3D%22m5%2012%205%205L20%207%22%20style%3D%22stroke-dashoffset%3A0%3Bstroke-dasharray%3A23.21320343017578px%3Banimation%3Aanim%20.5s%20ease%22%2F%3E%3C%2Fsvg%3E));background-size:cover;border:1px solid #0000}.captcha[data-state=done] .checkbox .progress-ring{display:none}.captcha[data-state=error] .checkbox{background-image:var(--cap-error-cross,url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='96' height='96' viewBox='0 0 24 24'%3E%3Cpath fill='%23f55b50' d='M11 15h2v2h-2zm0-8h2v6h-2zm1-5C6.47 2 2 6.5 2 12a10 10 0 0 0 10 10a10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18a8 8 0 0 1-8-8a8 8 0 0 1 8-8a8 8 0 0 1 8 8a8 8 0 0 1-8 8'/%3E%3C%2Fsvg%3E"));background-size:cover;border:1px solid #0000}.captcha[data-state=error] .checkbox .progress-ring{display:none}.captcha[disabled]{cursor:not-allowed}.captcha[disabled][data-state=verifying]{cursor:progress}.captcha[disabled][data-state=done]{cursor:default}.captcha .credits{color:var(--cap-color,#212121);opacity:.8;text-underline-offset:.18em;z-index:6;font-size:12px;text-decoration-thickness:.08em;position:absolute;bottom:10px;right:10px}.cap-troubleshoot-link{color:#06c;text-underline-offset:.15em;cursor:pointer;font-weight:500;font-size:inherit;text-decoration:underline;text-decoration-thickness:.08em}.cap-troubleshoot-link:hover{opacity:.8}</style>`,this.#o.appendChild(this.#t)}addEventListeners(){this.#t&&(this.#t.querySelector("a").addEventListener("click",l=>{l.stopPropagation(),l.preventDefault(),window.open("https://capjs.js.org","_blank")}),this.#t.addEventListener("click",()=>{this.#t.hasAttribute("disabled")||this.solve()}),this.#t.addEventListener("mousedown",()=>{!this.#t.hasAttribute("disabled")&&e&&navigator.vibrate(5)}),this.#t.addEventListener("keydown",l=>{l.key!=="Enter"&&l.key!==" "||this.#t.hasAttribute("disabled")||(l.preventDefault(),l.stopPropagation(),this.solve())}),this.addEventListener("progress",this.boundHandleProgress),this.addEventListener("solve",this.boundHandleSolve),this.addEventListener("error",this.boundHandleError),this.addEventListener("reset",this.boundHandleReset))}animateLabel(l){if(!this.#t)return;let c=this.#t.querySelector(".label-wrapper");if(!c)return;if(window.matchMedia?.("(prefers-reduced-motion: reduce)").matches){let h=c.querySelector(".label.active");if(h)h.textContent=l;else{let b=document.createElement("span");b.className="label active",b.textContent=l,c.appendChild(b)}return}let p=c.querySelector(".label.active"),g=document.createElement("span");g.className="label",g.textContent=l,c.appendChild(g),g.offsetWidth,g.classList.add("active"),p&&(p.classList.remove("active"),p.classList.add("exit"),p.addEventListener("transitionend",()=>p.remove(),{once:!0}))}updateUI(l,c,p=!1){this.#t&&(this.#t.setAttribute("data-state",l),this.animateLabel(c),p?this.#t.setAttribute("disabled","true"):this.#t.removeAttribute("disabled"))}updateUIBlocked(l,c=!1){if(!this.#t)return;this.#t.setAttribute("data-state","error"),this.#t.removeAttribute("disabled");let p=this.#t.querySelector(".label-wrapper");if(!p)return;let g=this.getAttribute("data-cap-troubleshooting-url")||"https://capjs.js.org/guide/troubleshooting/instrumentation.html",h=p.querySelector(".label.active"),b=document.createElement("span");b.className="label",b.innerHTML=c?`${l} \xB7 <a class="cap-troubleshoot-link" href="${g}" target="_blank" rel="noopener">${this.getI18nText("troubleshooting-label","Troubleshoot")}</a>`:l,p.appendChild(b),b.offsetWidth,b.classList.add("active"),h&&(h.classList.remove("active"),h.classList.add("exit"),h.addEventListener("transitionend",()=>h.remove(),{once:!0}));let V=b.querySelector(".cap-troubleshoot-link");V&&V.addEventListener("click",Z=>{Z.stopPropagation()})}handleProgress(l){if(!this.#t)return;let c=this.#t.querySelector(".progress-ring-circle");if(c){let g=2*Math.PI*14,h=g-l.detail.progress/100*g;c.style.strokeDashoffset=h}let p=this.#t.querySelector(".label-wrapper");if(p){let g=p.querySelector(".label.active");g&&(g.textContent=`${this.getI18nText("verifying-label","Verifying...")}`)}this.executeAttributeCode("onprogress",l)}handleSolve(l){this.updateUI("done",this.getI18nText("solved-label","You're a human"),!0),this.executeAttributeCode("onsolve",l)}handleError(l){this.updateUI("error",this.getI18nText("error-label","Error. Try again.")),this.executeAttributeCode("onerror",l),e&&navigator.vibrate([10,40,10])}handleReset(l){this.updateUI("",this.getI18nText("initial-state","I'm a human")),this.executeAttributeCode("onreset",l)}executeAttributeCode(l,c){let p=this.getAttribute(l);p&&(console.error("[cap] using `onxxx='\u2026'` is strongly discouraged and will be deprecated soon. please use `addEventListener` callbacks instead."),new Function("event",p).call(this,c))}error(l="Unknown error"){console.error("[cap]",l),this.dispatchEvent("error",{isCap:!0,message:l})}dispatchEvent(l,c={}){let p=new CustomEvent(l,{bubbles:!0,composed:!0,detail:c});super.dispatchEvent(p)}reset(){this.#n&&(clearTimeout(this.#n),this.#n=null),this.dispatchEvent("reset"),this.token=null;let l=this.getAttribute("data-cap-hidden-field-name")||"cap-token";this.querySelector(`input[name='${l}']`)&&(this.querySelector(`input[name='${l}']`).value="")}get tokenValue(){return this.token}disconnectedCallback(){this.removeEventListener("progress",this.boundHandleProgress),this.removeEventListener("solve",this.boundHandleSolve),this.removeEventListener("error",this.boundHandleError),this.removeEventListener("reset",this.boundHandleReset),this.#i.forEach((l,c)=>{this.removeEventListener(c.slice(2),l)}),this.#i.clear(),this.#o&&(this.#o.innerHTML=""),this.reset(),this.cleanup()}cleanup(){this.#n&&(clearTimeout(this.#n),this.#n=null),this.#u(),this.#s&&(clearTimeout(this.#s),this.#s=null),this.#r&&(this.#r.terminate(),this.#r=null),this.#e&&(this.#e.state="error",this.#e.notify(),this.#e=null)}}class I{constructor(l={},c){let p=c||document.createElement("cap-widget");if(Object.entries(l).forEach(([g,h])=>{p.setAttribute(g,h)}),!l.apiEndpoint&&!window?.CAP_CUSTOM_FETCH)throw p.remove(),new Error("Missing API endpoint. Either custom fetch or an API endpoint must be provided.");l.apiEndpoint&&p.setAttribute("data-cap-api-endpoint",l.apiEndpoint),this.widget=p,this.solve=this.widget.solve.bind(this.widget),this.reset=this.widget.reset.bind(this.widget),this.addEventListener=this.widget.addEventListener.bind(this.widget),Object.defineProperty(this,"token",{get:()=>p.token,configurable:!0,enumerable:!0}),c||(p.style.display="none",document.documentElement.appendChild(p))}}window.Cap=I,customElements.get("cap-widget")||window?.CAP_DONT_SKIP_REDEFINE?customElements.get("cap-widget")&&console.warn(`[cap] the cap-widget element has already been defined, skipping re-defining it.
|
|
3
|
+
to prevent this, set window.CAP_DONT_SKIP_REDEFINE to true`):customElements.define("cap-widget",m),typeof kt=="object"&&typeof Qn<"u"?Qn.exports=I:typeof define=="function"&&define.amd&&define([],()=>I),typeof kt<"u"&&(kt.default=I)})()});var Es={};Wa(Es,{AdaptAutomationElement:()=>Qe,AdaptCapElement:()=>Oe,AdaptCapWidget:()=>ie,AdaptWebClient:()=>_e,clearPersistedState:()=>Bs,configure:()=>Mn,createChallenge:()=>Tn,createConnectClient:()=>Un,redeemChallenge:()=>Dn,resetConfig:()=>zn});function Se(e,t){return e!==null&&typeof e=="object"&&"$typeName"in e&&typeof e.$typeName=="string"?t===void 0?!0:t.typeName===e.$typeName:!1}var d;(function(e){e[e.DOUBLE=1]="DOUBLE",e[e.FLOAT=2]="FLOAT",e[e.INT64=3]="INT64",e[e.UINT64=4]="UINT64",e[e.INT32=5]="INT32",e[e.FIXED64=6]="FIXED64",e[e.FIXED32=7]="FIXED32",e[e.BOOL=8]="BOOL",e[e.STRING=9]="STRING",e[e.BYTES=12]="BYTES",e[e.UINT32=13]="UINT32",e[e.SFIXED32=15]="SFIXED32",e[e.SFIXED64=16]="SFIXED64",e[e.SINT32=17]="SINT32",e[e.SINT64=18]="SINT64"})(d||(d={}));function Pn(){let e=0,t=0;for(let r=0;r<28;r+=7){let o=this.buf[this.pos++];if(e|=(o&127)<<r,(o&128)==0)return this.assertBounds(),[e,t]}let n=this.buf[this.pos++];if(e|=(n&15)<<28,t=(n&112)>>4,(n&128)==0)return this.assertBounds(),[e,t];for(let r=3;r<=31;r+=7){let o=this.buf[this.pos++];if(t|=(o&127)<<r,(o&128)==0)return this.assertBounds(),[e,t]}throw new Error("invalid varint")}function $e(e,t,n){for(let a=0;a<28;a=a+7){let i=e>>>a,s=!(!(i>>>7)&&t==0),u=(s?i|128:i)&255;if(n.push(u),!s)return}let r=e>>>28&15|(t&7)<<4,o=t>>3!=0;if(n.push((o?r|128:r)&255),!!o){for(let a=3;a<31;a=a+7){let i=t>>>a,s=!!(i>>>7),u=(s?i|128:i)&255;if(n.push(u),!s)return}n.push(t>>>31&1)}}var je=4294967296;function Yt(e){let t=e[0]==="-";t&&(e=e.slice(1));let n=1e6,r=0,o=0;function a(i,s){let u=Number(e.slice(i,s));o*=n,r=r*n+u,r>=je&&(o=o+(r/je|0),r=r%je)}return a(-24,-18),a(-18,-12),a(-12,-6),a(-6),t?$n(r,o):Ht(r,o)}function jn(e,t){let n=Ht(e,t),r=n.hi&2147483648;r&&(n=$n(n.lo,n.hi));let o=Nt(n.lo,n.hi);return r?"-"+o:o}function Nt(e,t){if({lo:e,hi:t}=va(e,t),t<=2097151)return String(je*t+e);let n=e&16777215,r=(e>>>24|t<<8)&16777215,o=t>>16&65535,a=n+r*6777216+o*6710656,i=r+o*8147497,s=o*2,u=1e7;return a>=u&&(i+=Math.floor(a/u),a%=u),i>=u&&(s+=Math.floor(i/u),i%=u),s.toString()+On(i)+On(a)}function va(e,t){return{lo:e>>>0,hi:t>>>0}}function Ht(e,t){return{lo:e|0,hi:t|0}}function $n(e,t){return t=~t,e?e=~e+1:t+=1,Ht(e,t)}var On=e=>{let t=String(e);return"0000000".slice(t.length)+t};function Xe(e,t){if(e>=0){for(;e>127;)t.push(e&127|128),e=e>>>7;t.push(e)}else{for(let n=0;n<9;n++)t.push(e&127|128),e=e>>7;t.push(1)}}function qn(){let e=this.buf[this.pos++],t=e&127;if((e&128)==0)return this.assertBounds(),t;if(e=this.buf[this.pos++],t|=(e&127)<<7,(e&128)==0)return this.assertBounds(),t;if(e=this.buf[this.pos++],t|=(e&127)<<14,(e&128)==0)return this.assertBounds(),t;if(e=this.buf[this.pos++],t|=(e&127)<<21,(e&128)==0)return this.assertBounds(),t;e=this.buf[this.pos++],t|=(e&15)<<28;for(let n=5;(e&128)!==0&&n<10;n++)e=this.buf[this.pos++];if((e&128)!=0)throw new Error("invalid varint");return this.assertBounds(),t>>>0}var B=Ra();function Ra(){let e=new DataView(new ArrayBuffer(8));if(typeof BigInt=="function"&&typeof e.getBigInt64=="function"&&typeof e.getBigUint64=="function"&&typeof e.setBigInt64=="function"&&typeof e.setBigUint64=="function"&&(!!globalThis.Deno||typeof process!="object"||typeof process.env!="object"||process.env.BUF_BIGINT_DISABLE!=="1")){let n=BigInt("-9223372036854775808"),r=BigInt("9223372036854775807"),o=BigInt("0"),a=BigInt("18446744073709551615");return{zero:BigInt(0),supported:!0,parse(i){let s=typeof i=="bigint"?i:BigInt(i);if(s>r||s<n)throw new Error(`invalid int64: ${i}`);return s},uParse(i){let s=typeof i=="bigint"?i:BigInt(i);if(s>a||s<o)throw new Error(`invalid uint64: ${i}`);return s},enc(i){return e.setBigInt64(0,this.parse(i),!0),{lo:e.getInt32(0,!0),hi:e.getInt32(4,!0)}},uEnc(i){return e.setBigInt64(0,this.uParse(i),!0),{lo:e.getInt32(0,!0),hi:e.getInt32(4,!0)}},dec(i,s){return e.setInt32(0,i,!0),e.setInt32(4,s,!0),e.getBigInt64(0,!0)},uDec(i,s){return e.setInt32(0,i,!0),e.setInt32(4,s,!0),e.getBigUint64(0,!0)}}}return{zero:"0",supported:!1,parse(n){return typeof n!="string"&&(n=n.toString()),er(n),n},uParse(n){return typeof n!="string"&&(n=n.toString()),tr(n),n},enc(n){return typeof n!="string"&&(n=n.toString()),er(n),Yt(n)},uEnc(n){return typeof n!="string"&&(n=n.toString()),tr(n),Yt(n)},dec(n,r){return jn(n,r)},uDec(n,r){return Nt(n,r)}}}function er(e){if(!/^-?[0-9]+$/.test(e))throw new Error("invalid int64: "+e)}function tr(e){if(!/^[0-9]+$/.test(e))throw new Error("invalid uint64: "+e)}function O(e,t){switch(e){case d.STRING:return"";case d.BOOL:return!1;case d.DOUBLE:case d.FLOAT:return 0;case d.INT64:case d.UINT64:case d.SFIXED64:case d.FIXED64:case d.SINT64:return t?"0":B.zero;case d.BYTES:return new Uint8Array(0);default:return 0}}function nr(e,t){switch(e){case d.BOOL:return t===!1;case d.STRING:return t==="";case d.BYTES:return t instanceof Uint8Array&&!t.byteLength;default:return t==0}}var rr=2,P=Symbol.for("reflect unsafe local");function qe(e,t){let n=e[t.localName].case;return n===void 0?n:t.fields.find(r=>r.localName===n)}function or(e,t){let n=t.localName;if(t.oneof)return e[t.oneof.localName].case===n;if(t.presence!=rr)return e[n]!==void 0&&Object.prototype.hasOwnProperty.call(e,n);switch(t.fieldKind){case"list":return e[n].length>0;case"map":return Object.keys(e[n]).length>0;case"scalar":return!nr(t.scalar,e[n]);case"enum":return e[n]!==t.enum.values[0].number}throw new Error("message field with implicit presence")}function ce(e,t){return Object.prototype.hasOwnProperty.call(e,t)&&e[t]!==void 0}function et(e,t){if(t.oneof){let n=e[t.oneof.localName];return n.case===t.localName?n.value:void 0}return e[t.localName]}function tt(e,t,n){t.oneof?e[t.oneof.localName]={case:t.localName,value:n}:e[t.localName]=n}function ar(e,t){let n=t.localName;if(t.oneof){let r=t.oneof.localName;e[r].case===n&&(e[r]={case:void 0})}else if(t.presence!=rr)delete e[n];else switch(t.fieldKind){case"map":e[n]={};break;case"list":e[n]=[];break;case"enum":e[n]=t.enum.values[0].number;break;case"scalar":e[n]=O(t.scalar,t.longAsString);break}}function ee(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function Be(e,t){var n,r,o,a;if(ee(e)&&P in e&&"add"in e&&"field"in e&&typeof e.field=="function"){if(t!==void 0){let i=t,s=e.field();return i.listKind==s.listKind&&i.scalar===s.scalar&&((n=i.message)===null||n===void 0?void 0:n.typeName)===((r=s.message)===null||r===void 0?void 0:r.typeName)&&((o=i.enum)===null||o===void 0?void 0:o.typeName)===((a=s.enum)===null||a===void 0?void 0:a.typeName)}return!0}return!1}function We(e,t){var n,r,o,a;if(ee(e)&&P in e&&"has"in e&&"field"in e&&typeof e.field=="function"){if(t!==void 0){let i=t,s=e.field();return i.mapKey===s.mapKey&&i.mapKind==s.mapKind&&i.scalar===s.scalar&&((n=i.message)===null||n===void 0?void 0:n.typeName)===((r=s.message)===null||r===void 0?void 0:r.typeName)&&((o=i.enum)===null||o===void 0?void 0:o.typeName)===((a=s.enum)===null||a===void 0?void 0:a.typeName)}return!0}return!1}function Ee(e,t){return ee(e)&&P in e&&"desc"in e&&ee(e.desc)&&e.desc.kind==="message"&&(t===void 0||e.desc.typeName==t.typeName)}function ir(e){return sr(e.$typeName)}function te(e){let t=e.fields[0];return sr(e.typeName)&&t!==void 0&&t.fieldKind=="scalar"&&t.name=="value"&&t.number==1}function sr(e){return e.startsWith("google.protobuf.")&&["DoubleValue","FloatValue","Int64Value","UInt64Value","Int32Value","UInt32Value","BoolValue","StringValue","BytesValue"].includes(e.substring(16))}var wa=999,ka=998,nt=2;function k(e,t){if(Se(t,e))return t;let n=Ma(e);return t!==void 0&&Fa(e,n,t),n}function Fa(e,t,n){for(let r of e.members){let o=n[r.localName];if(o==null)continue;let a;if(r.kind=="oneof"){let i=qe(n,r);if(!i)continue;a=i,o=et(n,i)}else a=r;switch(a.fieldKind){case"message":o=Lt(a,o);break;case"scalar":o=dr(a,o);break;case"list":o=Na(a,o);break;case"map":o=Ya(a,o);break}tt(t,a,o)}return t}function dr(e,t){return e.scalar==d.BYTES?zt(t):t}function Ya(e,t){if(ee(t)){if(e.scalar==d.BYTES)return cr(t,zt);if(e.mapKind=="message")return cr(t,n=>Lt(e,n))}return t}function Na(e,t){if(Array.isArray(t)){if(e.scalar==d.BYTES)return t.map(zt);if(e.listKind=="message")return t.map(n=>Lt(e,n))}return t}function Lt(e,t){if(e.fieldKind=="message"&&!e.oneof&&te(e.message))return dr(e.message.fields[0],t);if(ee(t)){if(e.message.typeName=="google.protobuf.Struct"&&e.parent.typeName!=="google.protobuf.Value")return t;if(!Se(t,e.message))return k(e.message,t)}return t}function zt(e){return Array.isArray(e)?new Uint8Array(e):e}function cr(e,t){let n={};for(let r of Object.entries(e))n[r[0]]=t(r[1]);return n}var Ha=Symbol(),lr=new WeakMap;function Ma(e){let t;if(La(e)){let n=lr.get(e),r,o;if(n)({prototype:r,members:o}=n);else{r={},o=new Set;for(let a of e.members)a.kind!="oneof"&&(a.fieldKind!="scalar"&&a.fieldKind!="enum"||a.presence!=nt&&(o.add(a),r[a.localName]=Mt(a)));lr.set(e,{prototype:r,members:o})}t=Object.create(r),t.$typeName=e.typeName;for(let a of e.members)o.has(a)||a.kind=="field"&&(a.fieldKind=="message"||(a.fieldKind=="scalar"||a.fieldKind=="enum")&&a.presence!=nt)||(t[a.localName]=Mt(a))}else{t={$typeName:e.typeName};for(let n of e.members)(n.kind=="oneof"||n.presence==nt)&&(t[n.localName]=Mt(n))}return t}function La(e){switch(e.file.edition){case wa:return!1;case ka:return!0;default:return e.fields.some(t=>t.presence!=nt&&t.fieldKind!="message"&&!t.oneof)}}function Mt(e){if(e.kind=="oneof")return{case:void 0};if(e.fieldKind=="list")return[];if(e.fieldKind=="map")return{};if(e.fieldKind=="message")return Ha;let t=e.getDefaultValue();return t!==void 0?e.fieldKind=="scalar"&&e.longAsString?t.toString():t:e.fieldKind=="scalar"?O(e.scalar,e.longAsString):e.enum.values[0].number}var za=["FieldValueInvalidError","FieldListRangeError","ForeignFieldError"],L=class extends Error{constructor(t,n,r="FieldValueInvalidError"){super(n),this.name=r,this.field=()=>t}};function ur(e){return e instanceof Error&&za.includes(e.name)&&"field"in e&&typeof e.field=="function"}var Kt=Symbol.for("@bufbuild/protobuf/text-encoding");function Je(){if(globalThis[Kt]==null){let e=new globalThis.TextEncoder,t=new globalThis.TextDecoder;globalThis[Kt]={encodeUtf8(n){return e.encode(n)},decodeUtf8(n){return t.decode(n)},checkUtf8(n){try{return encodeURIComponent(n),!0}catch{return!1}}}}return globalThis[Kt]}var F;(function(e){e[e.Varint=0]="Varint",e[e.Bit64=1]="Bit64",e[e.LengthDelimited=2]="LengthDelimited",e[e.StartGroup=3]="StartGroup",e[e.EndGroup=4]="EndGroup",e[e.Bit32=5]="Bit32"})(F||(F={}));var Tt=34028234663852886e22,Dt=-34028234663852886e22,Qt=4294967295,_t=2147483647,Ot=-2147483648,pe=class{constructor(t=Je().encodeUtf8){this.encodeUtf8=t,this.stack=[],this.chunks=[],this.buf=[]}finish(){this.buf.length&&(this.chunks.push(new Uint8Array(this.buf)),this.buf=[]);let t=0;for(let o=0;o<this.chunks.length;o++)t+=this.chunks[o].length;let n=new Uint8Array(t),r=0;for(let o=0;o<this.chunks.length;o++)n.set(this.chunks[o],r),r+=this.chunks[o].length;return this.chunks=[],n}fork(){return this.stack.push({chunks:this.chunks,buf:this.buf}),this.chunks=[],this.buf=[],this}join(){let t=this.finish(),n=this.stack.pop();if(!n)throw new Error("invalid state, fork stack empty");return this.chunks=n.chunks,this.buf=n.buf,this.uint32(t.byteLength),this.raw(t)}tag(t,n){return this.uint32((t<<3|n)>>>0)}raw(t){return this.buf.length&&(this.chunks.push(new Uint8Array(this.buf)),this.buf=[]),this.chunks.push(t),this}uint32(t){for(mr(t);t>127;)this.buf.push(t&127|128),t=t>>>7;return this.buf.push(t),this}int32(t){return Ut(t),Xe(t,this.buf),this}bool(t){return this.buf.push(t?1:0),this}bytes(t){return this.uint32(t.byteLength),this.raw(t)}string(t){let n=this.encodeUtf8(t);return this.uint32(n.byteLength),this.raw(n)}float(t){Ka(t);let n=new Uint8Array(4);return new DataView(n.buffer).setFloat32(0,t,!0),this.raw(n)}double(t){let n=new Uint8Array(8);return new DataView(n.buffer).setFloat64(0,t,!0),this.raw(n)}fixed32(t){mr(t);let n=new Uint8Array(4);return new DataView(n.buffer).setUint32(0,t,!0),this.raw(n)}sfixed32(t){Ut(t);let n=new Uint8Array(4);return new DataView(n.buffer).setInt32(0,t,!0),this.raw(n)}sint32(t){return Ut(t),t=(t<<1^t>>31)>>>0,Xe(t,this.buf),this}sfixed64(t){let n=new Uint8Array(8),r=new DataView(n.buffer),o=B.enc(t);return r.setInt32(0,o.lo,!0),r.setInt32(4,o.hi,!0),this.raw(n)}fixed64(t){let n=new Uint8Array(8),r=new DataView(n.buffer),o=B.uEnc(t);return r.setInt32(0,o.lo,!0),r.setInt32(4,o.hi,!0),this.raw(n)}int64(t){let n=B.enc(t);return $e(n.lo,n.hi,this.buf),this}sint64(t){let n=B.enc(t),r=n.hi>>31,o=n.lo<<1^r,a=(n.hi<<1|n.lo>>>31)^r;return $e(o,a,this.buf),this}uint64(t){let n=B.uEnc(t);return $e(n.lo,n.hi,this.buf),this}},le=class{constructor(t,n=Je().decodeUtf8){this.decodeUtf8=n,this.varint64=Pn,this.uint32=qn,this.buf=t,this.len=t.length,this.pos=0,this.view=new DataView(t.buffer,t.byteOffset,t.byteLength)}tag(){let t=this.uint32(),n=t>>>3,r=t&7;if(n<=0||r<0||r>5)throw new Error("illegal tag: field no "+n+" wire type "+r);return[n,r]}skip(t,n){let r=this.pos;switch(t){case F.Varint:for(;this.buf[this.pos++]&128;);break;case F.Bit64:this.pos+=4;case F.Bit32:this.pos+=4;break;case F.LengthDelimited:let o=this.uint32();this.pos+=o;break;case F.StartGroup:for(;;){let[a,i]=this.tag();if(i===F.EndGroup){if(n!==void 0&&a!==n)throw new Error("invalid end group tag");break}this.skip(i,a)}break;default:throw new Error("cant skip wire type "+t)}return this.assertBounds(),this.buf.subarray(r,this.pos)}assertBounds(){if(this.pos>this.len)throw new RangeError("premature EOF")}int32(){return this.uint32()|0}sint32(){let t=this.uint32();return t>>>1^-(t&1)}int64(){return B.dec(...this.varint64())}uint64(){return B.uDec(...this.varint64())}sint64(){let[t,n]=this.varint64(),r=-(t&1);return t=(t>>>1|(n&1)<<31)^r,n=n>>>1^r,B.dec(t,n)}bool(){let[t,n]=this.varint64();return t!==0||n!==0}fixed32(){return this.view.getUint32((this.pos+=4)-4,!0)}sfixed32(){return this.view.getInt32((this.pos+=4)-4,!0)}fixed64(){return B.uDec(this.sfixed32(),this.sfixed32())}sfixed64(){return B.dec(this.sfixed32(),this.sfixed32())}float(){return this.view.getFloat32((this.pos+=4)-4,!0)}double(){return this.view.getFloat64((this.pos+=8)-8,!0)}bytes(){let t=this.uint32(),n=this.pos;return this.pos+=t,this.assertBounds(),this.buf.subarray(n,n+t)}string(){return this.decodeUtf8(this.bytes())}};function Ut(e){if(typeof e=="string")e=Number(e);else if(typeof e!="number")throw new Error("invalid int32: "+typeof e);if(!Number.isInteger(e)||e>_t||e<Ot)throw new Error("invalid int32: "+e)}function mr(e){if(typeof e=="string")e=Number(e);else if(typeof e!="number")throw new Error("invalid uint32: "+typeof e);if(!Number.isInteger(e)||e>Qt||e<0)throw new Error("invalid uint32: "+e)}function Ka(e){if(typeof e=="string"){let t=e;if(e=Number(e),Number.isNaN(e)&&t!=="NaN")throw new Error("invalid float32: "+t)}else if(typeof e!="number")throw new Error("invalid float32: "+typeof e);if(Number.isFinite(e)&&(e>Tt||e<Dt))throw new Error("invalid float32: "+e)}function ne(e,t){let n=e.fieldKind=="list"?Be(t,e):e.fieldKind=="map"?We(t,e):jt(e,t);if(n===!0)return;let r;switch(e.fieldKind){case"list":r=`expected ${br(e)}, got ${Y(t)}`;break;case"map":r=`expected ${fr(e)}, got ${Y(t)}`;break;default:r=rt(e,t,n)}return new L(e,r)}function Pt(e,t,n){let r=jt(e,n);if(r!==!0)return new L(e,`list item #${t+1}: ${rt(e,n,r)}`)}function pr(e,t,n){let r=hr(t,e.mapKey);if(r!==!0)return new L(e,`invalid map key: ${rt({scalar:e.mapKey},t,r)}`);let o=jt(e,n);if(o!==!0)return new L(e,`map entry ${Y(t)}: ${rt(e,n,o)}`)}function jt(e,t){return e.scalar!==void 0?hr(t,e.scalar):e.enum!==void 0?e.enum.open?Number.isInteger(t):e.enum.values.some(n=>n.number===t):Ee(t,e.message)}function hr(e,t){switch(t){case d.DOUBLE:return typeof e=="number";case d.FLOAT:return typeof e!="number"?!1:Number.isNaN(e)||!Number.isFinite(e)?!0:e>Tt||e<Dt?`${e.toFixed()} out of range`:!0;case d.INT32:case d.SFIXED32:case d.SINT32:return typeof e!="number"||!Number.isInteger(e)?!1:e>_t||e<Ot?`${e.toFixed()} out of range`:!0;case d.FIXED32:case d.UINT32:return typeof e!="number"||!Number.isInteger(e)?!1:e>Qt||e<0?`${e.toFixed()} out of range`:!0;case d.BOOL:return typeof e=="boolean";case d.STRING:return typeof e!="string"?!1:Je().checkUtf8(e)||"invalid UTF8";case d.BYTES:return e instanceof Uint8Array;case d.INT64:case d.SFIXED64:case d.SINT64:if(typeof e=="bigint"||typeof e=="number"||typeof e=="string"&&e.length>0)try{return B.parse(e),!0}catch{return`${e} out of range`}return!1;case d.FIXED64:case d.UINT64:if(typeof e=="bigint"||typeof e=="number"||typeof e=="string"&&e.length>0)try{return B.uParse(e),!0}catch{return`${e} out of range`}return!1}}function rt(e,t,n){return n=typeof n=="string"?`: ${n}`:`, got ${Y(t)}`,e.scalar!==void 0?`expected ${Ua(e.scalar)}`+n:e.enum!==void 0?`expected ${e.enum.toString()}`+n:`expected ${gr(e.message)}`+n}function Y(e){switch(typeof e){case"object":return e===null?"null":e instanceof Uint8Array?`Uint8Array(${e.length})`:Array.isArray(e)?`Array(${e.length})`:Be(e)?br(e.field()):We(e)?fr(e.field()):Ee(e)?gr(e.desc):Se(e)?`message ${e.$typeName}`:"object";case"string":return e.length>30?"string":`"${e.split('"').join('\\"')}"`;case"boolean":return String(e);case"number":return String(e);case"bigint":return String(e)+"n";default:return typeof e}}function gr(e){return`ReflectMessage (${e.typeName})`}function br(e){switch(e.listKind){case"message":return`ReflectList (${e.message.toString()})`;case"enum":return`ReflectList (${e.enum.toString()})`;case"scalar":return`ReflectList (${d[e.scalar]})`}}function fr(e){switch(e.mapKind){case"message":return`ReflectMap (${d[e.mapKey]}, ${e.message.toString()})`;case"enum":return`ReflectMap (${d[e.mapKey]}, ${e.enum.toString()})`;case"scalar":return`ReflectMap (${d[e.mapKey]}, ${d[e.scalar]})`}}function Ua(e){switch(e){case d.STRING:return"string";case d.BOOL:return"boolean";case d.INT64:case d.SINT64:case d.SFIXED64:return"bigint (int64)";case d.UINT64:case d.FIXED64:return"bigint (uint64)";case d.BYTES:return"Uint8Array";case d.DOUBLE:return"number (float64)";case d.FLOAT:return"number (float32)";case d.FIXED32:case d.UINT32:return"number (uint32)";case d.INT32:case d.SFIXED32:case d.SINT32:return"number (int32)"}}function U(e,t,n=!0){return new at(e,t,n)}var yr=new WeakMap,at=class{get sortedFields(){let t=yr.get(this.desc);if(t)return t;let n=this.desc.fields.concat().sort((r,o)=>r.number-o.number);return yr.set(this.desc,n),n}constructor(t,n,r=!0){this.lists=new Map,this.maps=new Map,this.check=r,this.desc=t,this.message=this[P]=n??k(t),this.fields=t.fields,this.oneofs=t.oneofs,this.members=t.members}findNumber(t){return this._fieldsByNumber||(this._fieldsByNumber=new Map(this.desc.fields.map(n=>[n.number,n]))),this._fieldsByNumber.get(t)}oneofCase(t){return ve(this.message,t),qe(this.message,t)}isSet(t){return ve(this.message,t),or(this.message,t)}clear(t){ve(this.message,t),ar(this.message,t)}get(t){ve(this.message,t);let n=et(this.message,t);switch(t.fieldKind){case"list":let r=this.lists.get(t);return(!r||r[P]!==n)&&this.lists.set(t,r=new en(t,n,this.check)),r;case"map":let o=this.maps.get(t);return(!o||o[P]!==n)&&this.maps.set(t,o=new tn(t,n,this.check)),o;case"message":return rn(t,n,this.check);case"scalar":return n===void 0?O(t.scalar,!1):on(t,n);case"enum":return n??t.enum.values[0].number}}set(t,n){if(ve(this.message,t),this.check){let o=ne(t,n);if(o)throw o}let r;t.fieldKind=="message"?r=nn(t,n):We(n)||Be(n)?r=n[P]:r=an(t,n),tt(this.message,t,r)}getUnknown(){return this.message.$unknown}setUnknown(t){this.message.$unknown=t}};function ve(e,t){if(t.parent.typeName!==e.$typeName)throw new L(t,`cannot use ${t.toString()} with message ${e.$typeName}`,"ForeignFieldError")}var en=class{field(){return this._field}get size(){return this._arr.length}constructor(t,n,r){this._field=t,this._arr=this[P]=n,this.check=r}get(t){let n=this._arr[t];return n===void 0?void 0:$t(this._field,n,this.check)}set(t,n){if(t<0||t>=this._arr.length)throw new L(this._field,`list item #${t+1}: out of range`);if(this.check){let r=Pt(this._field,t,n);if(r)throw r}this._arr[t]=Ir(this._field,n)}add(t){if(this.check){let n=Pt(this._field,this._arr.length,t);if(n)throw n}this._arr.push(Ir(this._field,t))}clear(){this._arr.splice(0,this._arr.length)}[Symbol.iterator](){return this.values()}keys(){return this._arr.keys()}*values(){for(let t of this._arr)yield $t(this._field,t,this.check)}*entries(){for(let t=0;t<this._arr.length;t++)yield[t,$t(this._field,this._arr[t],this.check)]}};var tn=class{constructor(t,n,r=!0){this.obj=this[P]=n??{},this.check=r,this._field=t}field(){return this._field}set(t,n){if(this.check){let r=pr(this._field,t,n);if(r)throw r}return this.obj[ot(t)]=Ta(this._field,n),this}delete(t){let n=ot(t),r=Object.prototype.hasOwnProperty.call(this.obj,n);return r&&delete this.obj[n],r}clear(){for(let t of Object.keys(this.obj))delete this.obj[t]}get(t){let n=this.obj[ot(t)];return n!==void 0&&(n=qt(this._field,n,this.check)),n}has(t){return Object.prototype.hasOwnProperty.call(this.obj,ot(t))}*keys(){for(let t of Object.keys(this.obj))yield Gr(t,this._field.mapKey)}*entries(){for(let t of Object.entries(this.obj))yield[Gr(t[0],this._field.mapKey),qt(this._field,t[1],this.check)]}[Symbol.iterator](){return this.entries()}get size(){return Object.keys(this.obj).length}*values(){for(let t of Object.values(this.obj))yield qt(this._field,t,this.check)}forEach(t,n){for(let r of this.entries())t.call(n,r[1],r[0],this)}};function nn(e,t){return Ee(t)?ir(t.message)&&!e.oneof&&e.fieldKind=="message"?t.message.value:t.desc.typeName=="google.protobuf.Struct"&&e.parent.typeName!="google.protobuf.Value"?Ar(t.message):t.message:t}function rn(e,t,n){return t!==void 0&&(te(e.message)&&!e.oneof&&e.fieldKind=="message"?t={$typeName:e.message.typeName,value:on(e.message.fields[0],t)}:e.message.typeName=="google.protobuf.Struct"&&e.parent.typeName!="google.protobuf.Value"&&ee(t)&&(t=Zr(t))),new at(e.message,t,n)}function Ir(e,t){return e.listKind=="message"?nn(e,t):an(e,t)}function $t(e,t,n){return e.listKind=="message"?rn(e,t,n):on(e,t)}function Ta(e,t){return e.mapKind=="message"?nn(e,t):an(e,t)}function qt(e,t,n){return e.mapKind=="message"?rn(e,t,n):t}function ot(e){return typeof e=="string"||typeof e=="number"?e:String(e)}function Gr(e,t){switch(t){case d.STRING:return e;case d.INT32:case d.FIXED32:case d.UINT32:case d.SFIXED32:case d.SINT32:{let n=Number.parseInt(e);if(Number.isFinite(n))return n;break}case d.BOOL:switch(e){case"true":return!0;case"false":return!1}break;case d.UINT64:case d.FIXED64:try{return B.uParse(e)}catch{}break;default:try{return B.parse(e)}catch{}break}return e}function on(e,t){switch(e.scalar){case d.INT64:case d.SFIXED64:case d.SINT64:"longAsString"in e&&e.longAsString&&typeof t=="string"&&(t=B.parse(t));break;case d.FIXED64:case d.UINT64:"longAsString"in e&&e.longAsString&&typeof t=="string"&&(t=B.uParse(t));break}return t}function an(e,t){switch(e.scalar){case d.INT64:case d.SFIXED64:case d.SINT64:"longAsString"in e&&e.longAsString?t=String(t):(typeof t=="string"||typeof t=="number")&&(t=B.parse(t));break;case d.FIXED64:case d.UINT64:"longAsString"in e&&e.longAsString?t=String(t):(typeof t=="string"||typeof t=="number")&&(t=B.uParse(t));break}return t}function Zr(e){let t={$typeName:"google.protobuf.Struct",fields:{}};if(ee(e))for(let[n,r]of Object.entries(e))t.fields[n]=Vr(r);return t}function Ar(e){let t={};for(let[n,r]of Object.entries(e.fields))t[n]=Cr(r);return t}function Cr(e){switch(e.kind.case){case"structValue":return Ar(e.kind.value);case"listValue":return e.kind.value.values.map(Cr);case"nullValue":case void 0:return null;default:return e.kind.value}}function Vr(e){let t={$typeName:"google.protobuf.Value",kind:{case:void 0}};switch(typeof e){case"number":t.kind={case:"numberValue",value:e};break;case"string":t.kind={case:"stringValue",value:e};break;case"boolean":t.kind={case:"boolValue",value:e};break;case"object":if(e===null)t.kind={case:"nullValue",value:0};else if(Array.isArray(e)){let n={$typeName:"google.protobuf.ListValue",values:[]};if(Array.isArray(e))for(let r of e)n.values.push(Vr(r));t.kind={case:"listValue",value:n}}else t.kind={case:"structValue",value:Zr(e)};break}return t}function ge(e){let t=Da(),n=e.length*3/4;e[e.length-2]=="="?n-=2:e[e.length-1]=="="&&(n-=1);let r=new Uint8Array(n),o=0,a=0,i,s=0;for(let u=0;u<e.length;u++){if(i=t[e.charCodeAt(u)],i===void 0)switch(e[u]){case"=":a=0;case`
|
|
4
|
+
`:case"\r":case" ":case" ":continue;default:throw Error("invalid base64 string")}switch(a){case 0:s=i,a=1;break;case 1:r[o++]=s<<2|(i&48)>>4,s=i,a=2;break;case 2:r[o++]=(s&15)<<4|(i&60)>>2,s=i,a=3;break;case 3:r[o++]=(s&3)<<6|i,a=0;break}}if(a==1)throw Error("invalid base64 string");return r.subarray(0,o)}function Re(e,t="std"){let n=Sr(t),r=t=="std",o="",a=0,i,s=0;for(let u=0;u<e.length;u++)switch(i=e[u],a){case 0:o+=n[i>>2],s=(i&3)<<4,a=1;break;case 1:o+=n[s|i>>4],s=(i&15)<<2,a=2;break;case 2:o+=n[s|i>>6],o+=n[i&63],a=0;break}return a&&(o+=n[s],r&&(o+="=",a==1&&(o+="="))),o}var it,xr,he;function Sr(e){return it||(it="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split(""),xr=it.slice(0,-2).concat("-","_")),e=="url"?xr:it}function Da(){if(!he){he=[];let e=Sr("std");for(let t=0;t<e.length;t++)he[e[t].charCodeAt(0)]=t;he[45]=e.indexOf("+"),he[95]=e.indexOf("/")}return he}function re(e){let t=!1,n=[];for(let r=0;r<e.length;r++){let o=e.charAt(r);switch(o){case"_":t=!0;break;case"0":case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":n.push(o),t=!1;break;default:t&&(t=!1,o=o.toUpperCase()),n.push(o);break}}return n.join("")}function st(e){return e.replace(/[A-Z]/g,t=>"_"+t.toLowerCase())}var Qa=new Set(["constructor","toString","toJSON","valueOf"]);function be(e){return Qa.has(e)?e+"$":e}function we(e){for(let t of e.field)ce(t,"jsonName")||(t.jsonName=re(t.name));e.nestedType.forEach(we)}function Xr(e,t){let n=e.values.find(r=>r.name===t);if(!n)throw new Error(`cannot parse ${e} default value: ${t}`);return n.number}function Br(e,t){switch(e){case d.STRING:return t;case d.BYTES:{let n=_a(t);if(n===!1)throw new Error(`cannot parse ${d[e]} default value: ${t}`);return n}case d.INT64:case d.SFIXED64:case d.SINT64:return B.parse(t);case d.UINT64:case d.FIXED64:return B.uParse(t);case d.DOUBLE:case d.FLOAT:switch(t){case"inf":return Number.POSITIVE_INFINITY;case"-inf":return Number.NEGATIVE_INFINITY;case"nan":return Number.NaN;default:return parseFloat(t)}case d.BOOL:return t==="true";case d.INT32:case d.UINT32:case d.SINT32:case d.FIXED32:case d.SFIXED32:return parseInt(t,10)}}function _a(e){let t=[],n={tail:e,c:"",next(){return this.tail.length==0?!1:(this.c=this.tail[0],this.tail=this.tail.substring(1),!0)},take(r){if(this.tail.length>=r){let o=this.tail.substring(0,r);return this.tail=this.tail.substring(r),o}return!1}};for(;n.next();)switch(n.c){case"\\":if(n.next())switch(n.c){case"\\":t.push(n.c.charCodeAt(0));break;case"b":t.push(8);break;case"f":t.push(12);break;case"n":t.push(10);break;case"r":t.push(13);break;case"t":t.push(9);break;case"v":t.push(11);break;case"0":case"1":case"2":case"3":case"4":case"5":case"6":case"7":{let r=n.c,o=n.take(2);if(o===!1)return!1;let a=parseInt(r+o,8);if(Number.isNaN(a))return!1;t.push(a);break}case"x":{let r=n.c,o=n.take(2);if(o===!1)return!1;let a=parseInt(r+o,16);if(Number.isNaN(a))return!1;t.push(a);break}case"u":{let r=n.c,o=n.take(4);if(o===!1)return!1;let a=parseInt(r+o,16);if(Number.isNaN(a))return!1;let i=new Uint8Array(4);new DataView(i.buffer).setInt32(0,a,!0),t.push(i[0],i[1],i[2],i[3]);break}case"U":{let r=n.c,o=n.take(8);if(o===!1)return!1;let a=B.uEnc(r+o),i=new Uint8Array(8),s=new DataView(i.buffer);s.setInt32(0,a.lo,!0),s.setInt32(4,a.hi,!0),t.push(i[0],i[1],i[2],i[3],i[4],i[5],i[6],i[7]);break}}break;default:t.push(n.c.charCodeAt(0))}return new Uint8Array(t)}function*ct(e){switch(e.kind){case"file":for(let t of e.messages)yield t,yield*ct(t);yield*e.enums,yield*e.services,yield*e.extensions;break;case"message":for(let t of e.nestedMessages)yield t,yield*ct(t);yield*e.nestedEnums,yield*e.nestedExtensions;break}}function lt(...e){let t=Oa();if(!e.length)return t;if("$typeName"in e[0]&&e[0].$typeName=="google.protobuf.FileDescriptorSet"){for(let n of e[0].file)vr(n,t);return t}if("$typeName"in e[0]){let a=function(i){let s=[];for(let u of i.dependency){if(t.getFile(u)!=null||o.has(u))continue;let m=r(u);if(!m)throw new Error(`Unable to resolve ${u}, imported by ${i.name}`);"kind"in m?t.addFile(m,!1,!0):(o.add(m.name),s.push(m))}return s.concat(...s.map(a))},n=e[0],r=e[1],o=new Set;for(let i of[n,...a(n)].reverse())vr(i,t)}else for(let n of e)for(let r of n.files)t.addFile(r);return t}function Oa(){let e=new Map,t=new Map,n=new Map;return{kind:"registry",types:e,extendees:t,[Symbol.iterator](){return e.values()},get files(){return n.values()},addFile(r,o,a){if(n.set(r.proto.name,r),!o)for(let i of ct(r))this.add(i);if(a)for(let i of r.dependencies)this.addFile(i,o,a)},add(r){if(r.kind=="extension"){let o=t.get(r.extendee.typeName);o||t.set(r.extendee.typeName,o=new Map),o.set(r.number,r)}e.set(r.typeName,r)},get(r){return e.get(r)},getFile(r){return n.get(r)},getMessage(r){let o=e.get(r);return o?.kind=="message"?o:void 0},getEnum(r){let o=e.get(r);return o?.kind=="enum"?o:void 0},getExtension(r){let o=e.get(r);return o?.kind=="extension"?o:void 0},getExtensionFor(r,o){var a;return(a=t.get(r.typeName))===null||a===void 0?void 0:a.get(o)},getService(r){let o=e.get(r);return o?.kind=="service"?o:void 0}}}var Pa=998,ja=999,$a=9,Fe=10,ke=11,qa=12,Wr=14,un=3,ei=2,Er=1,ti=0,sn=1,Jr=2,ni=3,ri=1,oi=2,ai=1;var wr={998:{fieldPresence:1,enumType:2,repeatedFieldEncoding:2,utf8Validation:3,messageEncoding:1,jsonFormat:2,enforceNamingStyle:2,defaultSymbolVisibility:1},999:{fieldPresence:2,enumType:1,repeatedFieldEncoding:1,utf8Validation:2,messageEncoding:1,jsonFormat:1,enforceNamingStyle:2,defaultSymbolVisibility:1},1e3:{fieldPresence:1,enumType:1,repeatedFieldEncoding:1,utf8Validation:2,messageEncoding:1,jsonFormat:1,enforceNamingStyle:2,defaultSymbolVisibility:1},1001:{fieldPresence:1,enumType:1,repeatedFieldEncoding:1,utf8Validation:2,messageEncoding:1,jsonFormat:1,enforceNamingStyle:1,defaultSymbolVisibility:2}};function vr(e,t){var n,r;let o={kind:"file",proto:e,deprecated:(r=(n=e.options)===null||n===void 0?void 0:n.deprecated)!==null&&r!==void 0?r:!1,edition:li(e),name:e.name.replace(/\.proto$/,""),dependencies:di(e,t),enums:[],messages:[],extensions:[],services:[],toString(){return`file ${e.name}`}},a=new Map,i={get(s){return a.get(s)},add(s){var u;j(((u=s.proto.options)===null||u===void 0?void 0:u.mapEntry)===!0),a.set(s.typeName,s)}};for(let s of e.enumType)kr(s,o,void 0,t);for(let s of e.messageType)Fr(s,o,void 0,t,i);for(let s of e.service)ii(s,o,t);cn(o,t);for(let s of a.values())ln(s,t,i);for(let s of o.messages)ln(s,t,i),cn(s,t);t.addFile(o,!0)}function cn(e,t){switch(e.kind){case"file":for(let n of e.proto.extension){let r=dn(n,e,t);e.extensions.push(r),t.add(r)}break;case"message":for(let n of e.proto.extension){let r=dn(n,e,t);e.nestedExtensions.push(r),t.add(r)}for(let n of e.nestedMessages)cn(n,t);break}}function ln(e,t,n){let r=e.proto.oneofDecl.map(a=>ci(a,e)),o=new Set;for(let a of e.proto.field){let i=pi(a,r),s=dn(a,e,t,i,n);e.fields.push(s),e.field[s.localName]=s,i===void 0?e.members.push(s):(i.fields.push(s),o.has(i)||(o.add(i),e.members.push(i)))}for(let a of r.filter(i=>o.has(i)))e.oneofs.push(a);for(let a of e.nestedMessages)ln(a,t,n)}function kr(e,t,n,r){var o,a,i,s,u;let m=ui(e.name,e.value),I={kind:"enum",proto:e,deprecated:(a=(o=e.options)===null||o===void 0?void 0:o.deprecated)!==null&&a!==void 0?a:!1,file:t,parent:n,open:!0,name:e.name,typeName:dt(e,n,t),value:{},values:[],sharedPrefix:m,toString(){return`enum ${this.typeName}`}};I.open=fi(I),r.add(I);for(let f of e.value){let l=f.name;I.values.push(I.value[f.number]={kind:"enum_value",proto:f,deprecated:(s=(i=f.options)===null||i===void 0?void 0:i.deprecated)!==null&&s!==void 0?s:!1,parent:I,name:l,localName:be(m==null?l:l.substring(m.length)),number:f.number,toString(){return`enum value ${I.typeName}.${l}`}})}((u=n?.nestedEnums)!==null&&u!==void 0?u:t.enums).push(I)}function Fr(e,t,n,r,o){var a,i,s,u;let m={kind:"message",proto:e,deprecated:(i=(a=e.options)===null||a===void 0?void 0:a.deprecated)!==null&&i!==void 0?i:!1,file:t,parent:n,name:e.name,typeName:dt(e,n,t),fields:[],field:{},oneofs:[],members:[],nestedEnums:[],nestedMessages:[],nestedExtensions:[],toString(){return`message ${this.typeName}`}};((s=e.options)===null||s===void 0?void 0:s.mapEntry)===!0?o.add(m):(((u=n?.nestedMessages)!==null&&u!==void 0?u:t.messages).push(m),r.add(m));for(let I of e.enumType)kr(I,t,m,r);for(let I of e.nestedType)Fr(I,t,m,r,o)}function ii(e,t,n){var r,o;let a={kind:"service",proto:e,deprecated:(o=(r=e.options)===null||r===void 0?void 0:r.deprecated)!==null&&o!==void 0?o:!1,file:t,name:e.name,typeName:dt(e,void 0,t),methods:[],method:{},toString(){return`service ${this.typeName}`}};t.services.push(a),n.add(a);for(let i of e.method){let s=si(i,a,n);a.methods.push(s),a.method[s.localName]=s}}function si(e,t,n){var r,o,a,i;let s;e.clientStreaming&&e.serverStreaming?s="bidi_streaming":e.clientStreaming?s="client_streaming":e.serverStreaming?s="server_streaming":s="unary";let u=n.getMessage(oe(e.inputType)),m=n.getMessage(oe(e.outputType));j(u,`invalid MethodDescriptorProto: input_type ${e.inputType} not found`),j(m,`invalid MethodDescriptorProto: output_type ${e.inputType} not found`);let I=e.name;return{kind:"rpc",proto:e,deprecated:(o=(r=e.options)===null||r===void 0?void 0:r.deprecated)!==null&&o!==void 0?o:!1,parent:t,name:I,localName:be(I.length?be(I[0].toLowerCase()+I.substring(1)):I),methodKind:s,input:u,output:m,idempotency:(i=(a=e.options)===null||a===void 0?void 0:a.idempotencyLevel)!==null&&i!==void 0?i:ti,toString(){return`rpc ${t.typeName}.${I}`}}}function ci(e,t){return{kind:"oneof",proto:e,deprecated:!1,parent:t,fields:[],name:e.name,localName:be(re(e.name)),toString(){return`oneof ${t.typeName}.${this.name}`}}}function dn(e,t,n,r,o){var a,i,s;let u=o===void 0,m={kind:"field",proto:e,deprecated:(i=(a=e.options)===null||a===void 0?void 0:a.deprecated)!==null&&i!==void 0?i:!1,name:e.name,number:e.number,scalar:void 0,message:void 0,enum:void 0,presence:hi(e,r,u,t),listKind:void 0,mapKind:void 0,mapKey:void 0,delimitedEncoding:void 0,packed:void 0,longAsString:!1,getDefaultValue:void 0};if(u){let c=t.kind=="file"?t:t.file,p=t.kind=="file"?void 0:t,g=dt(e,p,c);m.kind="extension",m.file=c,m.parent=p,m.oneof=void 0,m.typeName=g,m.jsonName=`[${g}]`,m.toString=()=>`extension ${g}`;let h=n.getMessage(oe(e.extendee));j(h,`invalid FieldDescriptorProto: extendee ${e.extendee} not found`),m.extendee=h}else{let c=t;j(c.kind=="message"),m.parent=c,m.oneof=r,m.localName=r?re(e.name):be(re(e.name)),m.jsonName=e.jsonName,m.toString=()=>`field ${c.typeName}.${e.name}`}let I=e.label,f=e.type,l=(s=e.options)===null||s===void 0?void 0:s.jstype;if(I===un){let c=f==ke?o?.get(oe(e.typeName)):void 0;if(c){m.fieldKind="map";let{key:p,value:g}=bi(c);return m.mapKey=p.scalar,m.mapKind=g.fieldKind,m.message=g.message,m.delimitedEncoding=!1,m.enum=g.enum,m.scalar=g.scalar,m}switch(m.fieldKind="list",f){case ke:case Fe:m.listKind="message",m.message=n.getMessage(oe(e.typeName)),j(m.message),m.delimitedEncoding=Rr(e,t);break;case Wr:m.listKind="enum",m.enum=n.getEnum(oe(e.typeName)),j(m.enum);break;default:m.listKind="scalar",m.scalar=f,m.longAsString=l==Er;break}return m.packed=gi(e,t),m}switch(f){case ke:case Fe:m.fieldKind="message",m.message=n.getMessage(oe(e.typeName)),j(m.message,`invalid FieldDescriptorProto: type_name ${e.typeName} not found`),m.delimitedEncoding=Rr(e,t),m.getDefaultValue=()=>{};break;case Wr:{let c=n.getEnum(oe(e.typeName));j(c!==void 0,`invalid FieldDescriptorProto: type_name ${e.typeName} not found`),m.fieldKind="enum",m.enum=n.getEnum(oe(e.typeName)),m.getDefaultValue=()=>ce(e,"defaultValue")?Xr(c,e.defaultValue):void 0;break}default:{m.fieldKind="scalar",m.scalar=f,m.longAsString=l==Er,m.getDefaultValue=()=>ce(e,"defaultValue")?Br(f,e.defaultValue):void 0;break}}return m}function li(e){switch(e.syntax){case"":case"proto2":return Pa;case"proto3":return ja;case"editions":if(e.edition in wr)return e.edition;throw new Error(`${e.name}: unsupported edition`);default:throw new Error(`${e.name}: unsupported syntax "${e.syntax}"`)}}function di(e,t){return e.dependency.map(n=>{let r=t.getFile(n);if(!r)throw new Error(`Cannot find ${n}, imported by ${e.name}`);return r})}function ui(e,t){let n=mi(e)+"_";for(let r of t){if(!r.name.toLowerCase().startsWith(n))return;let o=r.name.substring(n.length);if(o.length==0||/^\d/.test(o))return}return n}function mi(e){return(e.substring(0,1)+e.substring(1).replace(/[A-Z]/g,t=>"_"+t)).toLowerCase()}function dt(e,t,n){let r;return t?r=`${t.typeName}.${e.name}`:n.proto.package.length>0?r=`${n.proto.package}.${e.name}`:r=`${e.name}`,r}function oe(e){return e.startsWith(".")?e.substring(1):e}function pi(e,t){if(!ce(e,"oneofIndex")||e.proto3Optional)return;let n=t[e.oneofIndex];return j(n,`invalid FieldDescriptorProto: oneof #${e.oneofIndex} for field #${e.number} not found`),n}function hi(e,t,n,r){if(e.label==ei)return ni;if(e.label==un)return Jr;if(t||e.proto3Optional||n)return sn;let o=fe("fieldPresence",{proto:e,parent:r});return o==Jr&&(e.type==ke||e.type==Fe)?sn:o}function gi(e,t){if(e.label!=un)return!1;switch(e.type){case $a:case qa:case Fe:case ke:return!1}let n=e.options;return n&&ce(n,"packed")?n.packed:ri==fe("repeatedFieldEncoding",{proto:e,parent:t})}function bi(e){let t=e.fields.find(r=>r.number===1),n=e.fields.find(r=>r.number===2);return j(t&&t.fieldKind=="scalar"&&t.scalar!=d.BYTES&&t.scalar!=d.FLOAT&&t.scalar!=d.DOUBLE&&n&&n.fieldKind!="list"&&n.fieldKind!="map"),{key:t,value:n}}function fi(e){var t;return ai==fe("enumType",{proto:e.proto,parent:(t=e.parent)!==null&&t!==void 0?t:e.file})}function Rr(e,t){return e.type==Fe?!0:oi==fe("messageEncoding",{proto:e,parent:t})}function fe(e,t){var n,r;let o=(n=t.proto.options)===null||n===void 0?void 0:n.features;if(o){let a=o[e];if(a!=0)return a}if("kind"in t){if(t.kind=="message")return fe(e,(r=t.parent)!==null&&r!==void 0?r:t.file);let a=wr[t.edition];if(!a)throw new Error(`feature default for edition ${t.edition} not found`);return a[e]}return fe(e,t.parent)}function j(e,t){if(!e)throw new Error(t)}function Yr(e){let t=yi(e);return t.messageType.forEach(we),lt(t,()=>{}).getFile(t.name)}function yi(e){return Object.assign(Object.create({syntax:"",edition:0}),Object.assign(Object.assign({$typeName:"google.protobuf.FileDescriptorProto",dependency:[],publicDependency:[],weakDependency:[],optionDependency:[],service:[],extension:[]},e),{messageType:e.messageType.map(Nr),enumType:e.enumType.map(Hr)}))}function Nr(e){var t,n,r,o,a,i,s,u;return Object.assign(Object.create({visibility:0}),{$typeName:"google.protobuf.DescriptorProto",name:e.name,field:(n=(t=e.field)===null||t===void 0?void 0:t.map(Ii))!==null&&n!==void 0?n:[],extension:[],nestedType:(o=(r=e.nestedType)===null||r===void 0?void 0:r.map(Nr))!==null&&o!==void 0?o:[],enumType:(i=(a=e.enumType)===null||a===void 0?void 0:a.map(Hr))!==null&&i!==void 0?i:[],extensionRange:(u=(s=e.extensionRange)===null||s===void 0?void 0:s.map(I=>Object.assign({$typeName:"google.protobuf.DescriptorProto.ExtensionRange"},I)))!==null&&u!==void 0?u:[],oneofDecl:[],reservedRange:[],reservedName:[]})}function Ii(e){return Object.assign(Object.create({label:1,typeName:"",extendee:"",defaultValue:"",oneofIndex:0,jsonName:"",proto3Optional:!1}),Object.assign(Object.assign({$typeName:"google.protobuf.FieldDescriptorProto"},e),{options:e.options?Gi(e.options):void 0}))}function Gi(e){var t,n,r;return Object.assign(Object.create({ctype:0,packed:!1,jstype:0,lazy:!1,unverifiedLazy:!1,deprecated:!1,weak:!1,debugRedact:!1,retention:0}),Object.assign(Object.assign({$typeName:"google.protobuf.FieldOptions"},e),{targets:(t=e.targets)!==null&&t!==void 0?t:[],editionDefaults:(r=(n=e.editionDefaults)===null||n===void 0?void 0:n.map(a=>Object.assign({$typeName:"google.protobuf.FieldOptions.EditionDefault"},a)))!==null&&r!==void 0?r:[],uninterpretedOption:[]}))}function Hr(e){return Object.assign(Object.create({visibility:0}),{$typeName:"google.protobuf.EnumDescriptorProto",name:e.name,reservedName:[],reservedRange:[],value:e.value.map(n=>Object.assign({$typeName:"google.protobuf.EnumValueDescriptorProto"},n))})}function K(e,t,...n){return n.reduce((r,o)=>r.nestedMessages[o],e.messages[t])}function Ye(e,t,...n){if(n.length==0)return e.enums[t];let r=n.pop();return n.reduce((o,a)=>o.nestedMessages[a],e.messages[t]).nestedEnums[r]}var de=Yr({name:"google/protobuf/descriptor.proto",package:"google.protobuf",messageType:[{name:"FileDescriptorSet",field:[{name:"file",number:1,type:11,label:3,typeName:".google.protobuf.FileDescriptorProto"}],extensionRange:[{start:536e6,end:536000001}]},{name:"FileDescriptorProto",field:[{name:"name",number:1,type:9,label:1},{name:"package",number:2,type:9,label:1},{name:"dependency",number:3,type:9,label:3},{name:"public_dependency",number:10,type:5,label:3},{name:"weak_dependency",number:11,type:5,label:3},{name:"option_dependency",number:15,type:9,label:3},{name:"message_type",number:4,type:11,label:3,typeName:".google.protobuf.DescriptorProto"},{name:"enum_type",number:5,type:11,label:3,typeName:".google.protobuf.EnumDescriptorProto"},{name:"service",number:6,type:11,label:3,typeName:".google.protobuf.ServiceDescriptorProto"},{name:"extension",number:7,type:11,label:3,typeName:".google.protobuf.FieldDescriptorProto"},{name:"options",number:8,type:11,label:1,typeName:".google.protobuf.FileOptions"},{name:"source_code_info",number:9,type:11,label:1,typeName:".google.protobuf.SourceCodeInfo"},{name:"syntax",number:12,type:9,label:1},{name:"edition",number:14,type:14,label:1,typeName:".google.protobuf.Edition"}]},{name:"DescriptorProto",field:[{name:"name",number:1,type:9,label:1},{name:"field",number:2,type:11,label:3,typeName:".google.protobuf.FieldDescriptorProto"},{name:"extension",number:6,type:11,label:3,typeName:".google.protobuf.FieldDescriptorProto"},{name:"nested_type",number:3,type:11,label:3,typeName:".google.protobuf.DescriptorProto"},{name:"enum_type",number:4,type:11,label:3,typeName:".google.protobuf.EnumDescriptorProto"},{name:"extension_range",number:5,type:11,label:3,typeName:".google.protobuf.DescriptorProto.ExtensionRange"},{name:"oneof_decl",number:8,type:11,label:3,typeName:".google.protobuf.OneofDescriptorProto"},{name:"options",number:7,type:11,label:1,typeName:".google.protobuf.MessageOptions"},{name:"reserved_range",number:9,type:11,label:3,typeName:".google.protobuf.DescriptorProto.ReservedRange"},{name:"reserved_name",number:10,type:9,label:3},{name:"visibility",number:11,type:14,label:1,typeName:".google.protobuf.SymbolVisibility"}],nestedType:[{name:"ExtensionRange",field:[{name:"start",number:1,type:5,label:1},{name:"end",number:2,type:5,label:1},{name:"options",number:3,type:11,label:1,typeName:".google.protobuf.ExtensionRangeOptions"}]},{name:"ReservedRange",field:[{name:"start",number:1,type:5,label:1},{name:"end",number:2,type:5,label:1}]}]},{name:"ExtensionRangeOptions",field:[{name:"uninterpreted_option",number:999,type:11,label:3,typeName:".google.protobuf.UninterpretedOption"},{name:"declaration",number:2,type:11,label:3,typeName:".google.protobuf.ExtensionRangeOptions.Declaration",options:{retention:2}},{name:"features",number:50,type:11,label:1,typeName:".google.protobuf.FeatureSet"},{name:"verification",number:3,type:14,label:1,typeName:".google.protobuf.ExtensionRangeOptions.VerificationState",defaultValue:"UNVERIFIED",options:{retention:2}}],nestedType:[{name:"Declaration",field:[{name:"number",number:1,type:5,label:1},{name:"full_name",number:2,type:9,label:1},{name:"type",number:3,type:9,label:1},{name:"reserved",number:5,type:8,label:1},{name:"repeated",number:6,type:8,label:1}]}],enumType:[{name:"VerificationState",value:[{name:"DECLARATION",number:0},{name:"UNVERIFIED",number:1}]}],extensionRange:[{start:1e3,end:536870912}]},{name:"FieldDescriptorProto",field:[{name:"name",number:1,type:9,label:1},{name:"number",number:3,type:5,label:1},{name:"label",number:4,type:14,label:1,typeName:".google.protobuf.FieldDescriptorProto.Label"},{name:"type",number:5,type:14,label:1,typeName:".google.protobuf.FieldDescriptorProto.Type"},{name:"type_name",number:6,type:9,label:1},{name:"extendee",number:2,type:9,label:1},{name:"default_value",number:7,type:9,label:1},{name:"oneof_index",number:9,type:5,label:1},{name:"json_name",number:10,type:9,label:1},{name:"options",number:8,type:11,label:1,typeName:".google.protobuf.FieldOptions"},{name:"proto3_optional",number:17,type:8,label:1}],enumType:[{name:"Type",value:[{name:"TYPE_DOUBLE",number:1},{name:"TYPE_FLOAT",number:2},{name:"TYPE_INT64",number:3},{name:"TYPE_UINT64",number:4},{name:"TYPE_INT32",number:5},{name:"TYPE_FIXED64",number:6},{name:"TYPE_FIXED32",number:7},{name:"TYPE_BOOL",number:8},{name:"TYPE_STRING",number:9},{name:"TYPE_GROUP",number:10},{name:"TYPE_MESSAGE",number:11},{name:"TYPE_BYTES",number:12},{name:"TYPE_UINT32",number:13},{name:"TYPE_ENUM",number:14},{name:"TYPE_SFIXED32",number:15},{name:"TYPE_SFIXED64",number:16},{name:"TYPE_SINT32",number:17},{name:"TYPE_SINT64",number:18}]},{name:"Label",value:[{name:"LABEL_OPTIONAL",number:1},{name:"LABEL_REPEATED",number:3},{name:"LABEL_REQUIRED",number:2}]}]},{name:"OneofDescriptorProto",field:[{name:"name",number:1,type:9,label:1},{name:"options",number:2,type:11,label:1,typeName:".google.protobuf.OneofOptions"}]},{name:"EnumDescriptorProto",field:[{name:"name",number:1,type:9,label:1},{name:"value",number:2,type:11,label:3,typeName:".google.protobuf.EnumValueDescriptorProto"},{name:"options",number:3,type:11,label:1,typeName:".google.protobuf.EnumOptions"},{name:"reserved_range",number:4,type:11,label:3,typeName:".google.protobuf.EnumDescriptorProto.EnumReservedRange"},{name:"reserved_name",number:5,type:9,label:3},{name:"visibility",number:6,type:14,label:1,typeName:".google.protobuf.SymbolVisibility"}],nestedType:[{name:"EnumReservedRange",field:[{name:"start",number:1,type:5,label:1},{name:"end",number:2,type:5,label:1}]}]},{name:"EnumValueDescriptorProto",field:[{name:"name",number:1,type:9,label:1},{name:"number",number:2,type:5,label:1},{name:"options",number:3,type:11,label:1,typeName:".google.protobuf.EnumValueOptions"}]},{name:"ServiceDescriptorProto",field:[{name:"name",number:1,type:9,label:1},{name:"method",number:2,type:11,label:3,typeName:".google.protobuf.MethodDescriptorProto"},{name:"options",number:3,type:11,label:1,typeName:".google.protobuf.ServiceOptions"}]},{name:"MethodDescriptorProto",field:[{name:"name",number:1,type:9,label:1},{name:"input_type",number:2,type:9,label:1},{name:"output_type",number:3,type:9,label:1},{name:"options",number:4,type:11,label:1,typeName:".google.protobuf.MethodOptions"},{name:"client_streaming",number:5,type:8,label:1,defaultValue:"false"},{name:"server_streaming",number:6,type:8,label:1,defaultValue:"false"}]},{name:"FileOptions",field:[{name:"java_package",number:1,type:9,label:1},{name:"java_outer_classname",number:8,type:9,label:1},{name:"java_multiple_files",number:10,type:8,label:1,defaultValue:"false"},{name:"java_generate_equals_and_hash",number:20,type:8,label:1,options:{deprecated:!0}},{name:"java_string_check_utf8",number:27,type:8,label:1,defaultValue:"false"},{name:"optimize_for",number:9,type:14,label:1,typeName:".google.protobuf.FileOptions.OptimizeMode",defaultValue:"SPEED"},{name:"go_package",number:11,type:9,label:1},{name:"cc_generic_services",number:16,type:8,label:1,defaultValue:"false"},{name:"java_generic_services",number:17,type:8,label:1,defaultValue:"false"},{name:"py_generic_services",number:18,type:8,label:1,defaultValue:"false"},{name:"deprecated",number:23,type:8,label:1,defaultValue:"false"},{name:"cc_enable_arenas",number:31,type:8,label:1,defaultValue:"true"},{name:"objc_class_prefix",number:36,type:9,label:1},{name:"csharp_namespace",number:37,type:9,label:1},{name:"swift_prefix",number:39,type:9,label:1},{name:"php_class_prefix",number:40,type:9,label:1},{name:"php_namespace",number:41,type:9,label:1},{name:"php_metadata_namespace",number:44,type:9,label:1},{name:"ruby_package",number:45,type:9,label:1},{name:"features",number:50,type:11,label:1,typeName:".google.protobuf.FeatureSet"},{name:"uninterpreted_option",number:999,type:11,label:3,typeName:".google.protobuf.UninterpretedOption"}],enumType:[{name:"OptimizeMode",value:[{name:"SPEED",number:1},{name:"CODE_SIZE",number:2},{name:"LITE_RUNTIME",number:3}]}],extensionRange:[{start:1e3,end:536870912}]},{name:"MessageOptions",field:[{name:"message_set_wire_format",number:1,type:8,label:1,defaultValue:"false"},{name:"no_standard_descriptor_accessor",number:2,type:8,label:1,defaultValue:"false"},{name:"deprecated",number:3,type:8,label:1,defaultValue:"false"},{name:"map_entry",number:7,type:8,label:1},{name:"deprecated_legacy_json_field_conflicts",number:11,type:8,label:1,options:{deprecated:!0}},{name:"features",number:12,type:11,label:1,typeName:".google.protobuf.FeatureSet"},{name:"uninterpreted_option",number:999,type:11,label:3,typeName:".google.protobuf.UninterpretedOption"}],extensionRange:[{start:1e3,end:536870912}]},{name:"FieldOptions",field:[{name:"ctype",number:1,type:14,label:1,typeName:".google.protobuf.FieldOptions.CType",defaultValue:"STRING"},{name:"packed",number:2,type:8,label:1},{name:"jstype",number:6,type:14,label:1,typeName:".google.protobuf.FieldOptions.JSType",defaultValue:"JS_NORMAL"},{name:"lazy",number:5,type:8,label:1,defaultValue:"false"},{name:"unverified_lazy",number:15,type:8,label:1,defaultValue:"false"},{name:"deprecated",number:3,type:8,label:1,defaultValue:"false"},{name:"weak",number:10,type:8,label:1,defaultValue:"false",options:{deprecated:!0}},{name:"debug_redact",number:16,type:8,label:1,defaultValue:"false"},{name:"retention",number:17,type:14,label:1,typeName:".google.protobuf.FieldOptions.OptionRetention"},{name:"targets",number:19,type:14,label:3,typeName:".google.protobuf.FieldOptions.OptionTargetType"},{name:"edition_defaults",number:20,type:11,label:3,typeName:".google.protobuf.FieldOptions.EditionDefault"},{name:"features",number:21,type:11,label:1,typeName:".google.protobuf.FeatureSet"},{name:"feature_support",number:22,type:11,label:1,typeName:".google.protobuf.FieldOptions.FeatureSupport"},{name:"uninterpreted_option",number:999,type:11,label:3,typeName:".google.protobuf.UninterpretedOption"}],nestedType:[{name:"EditionDefault",field:[{name:"edition",number:3,type:14,label:1,typeName:".google.protobuf.Edition"},{name:"value",number:2,type:9,label:1}]},{name:"FeatureSupport",field:[{name:"edition_introduced",number:1,type:14,label:1,typeName:".google.protobuf.Edition"},{name:"edition_deprecated",number:2,type:14,label:1,typeName:".google.protobuf.Edition"},{name:"deprecation_warning",number:3,type:9,label:1},{name:"edition_removed",number:4,type:14,label:1,typeName:".google.protobuf.Edition"}]}],enumType:[{name:"CType",value:[{name:"STRING",number:0},{name:"CORD",number:1},{name:"STRING_PIECE",number:2}]},{name:"JSType",value:[{name:"JS_NORMAL",number:0},{name:"JS_STRING",number:1},{name:"JS_NUMBER",number:2}]},{name:"OptionRetention",value:[{name:"RETENTION_UNKNOWN",number:0},{name:"RETENTION_RUNTIME",number:1},{name:"RETENTION_SOURCE",number:2}]},{name:"OptionTargetType",value:[{name:"TARGET_TYPE_UNKNOWN",number:0},{name:"TARGET_TYPE_FILE",number:1},{name:"TARGET_TYPE_EXTENSION_RANGE",number:2},{name:"TARGET_TYPE_MESSAGE",number:3},{name:"TARGET_TYPE_FIELD",number:4},{name:"TARGET_TYPE_ONEOF",number:5},{name:"TARGET_TYPE_ENUM",number:6},{name:"TARGET_TYPE_ENUM_ENTRY",number:7},{name:"TARGET_TYPE_SERVICE",number:8},{name:"TARGET_TYPE_METHOD",number:9}]}],extensionRange:[{start:1e3,end:536870912}]},{name:"OneofOptions",field:[{name:"features",number:1,type:11,label:1,typeName:".google.protobuf.FeatureSet"},{name:"uninterpreted_option",number:999,type:11,label:3,typeName:".google.protobuf.UninterpretedOption"}],extensionRange:[{start:1e3,end:536870912}]},{name:"EnumOptions",field:[{name:"allow_alias",number:2,type:8,label:1},{name:"deprecated",number:3,type:8,label:1,defaultValue:"false"},{name:"deprecated_legacy_json_field_conflicts",number:6,type:8,label:1,options:{deprecated:!0}},{name:"features",number:7,type:11,label:1,typeName:".google.protobuf.FeatureSet"},{name:"uninterpreted_option",number:999,type:11,label:3,typeName:".google.protobuf.UninterpretedOption"}],extensionRange:[{start:1e3,end:536870912}]},{name:"EnumValueOptions",field:[{name:"deprecated",number:1,type:8,label:1,defaultValue:"false"},{name:"features",number:2,type:11,label:1,typeName:".google.protobuf.FeatureSet"},{name:"debug_redact",number:3,type:8,label:1,defaultValue:"false"},{name:"feature_support",number:4,type:11,label:1,typeName:".google.protobuf.FieldOptions.FeatureSupport"},{name:"uninterpreted_option",number:999,type:11,label:3,typeName:".google.protobuf.UninterpretedOption"}],extensionRange:[{start:1e3,end:536870912}]},{name:"ServiceOptions",field:[{name:"features",number:34,type:11,label:1,typeName:".google.protobuf.FeatureSet"},{name:"deprecated",number:33,type:8,label:1,defaultValue:"false"},{name:"uninterpreted_option",number:999,type:11,label:3,typeName:".google.protobuf.UninterpretedOption"}],extensionRange:[{start:1e3,end:536870912}]},{name:"MethodOptions",field:[{name:"deprecated",number:33,type:8,label:1,defaultValue:"false"},{name:"idempotency_level",number:34,type:14,label:1,typeName:".google.protobuf.MethodOptions.IdempotencyLevel",defaultValue:"IDEMPOTENCY_UNKNOWN"},{name:"features",number:35,type:11,label:1,typeName:".google.protobuf.FeatureSet"},{name:"uninterpreted_option",number:999,type:11,label:3,typeName:".google.protobuf.UninterpretedOption"}],enumType:[{name:"IdempotencyLevel",value:[{name:"IDEMPOTENCY_UNKNOWN",number:0},{name:"NO_SIDE_EFFECTS",number:1},{name:"IDEMPOTENT",number:2}]}],extensionRange:[{start:1e3,end:536870912}]},{name:"UninterpretedOption",field:[{name:"name",number:2,type:11,label:3,typeName:".google.protobuf.UninterpretedOption.NamePart"},{name:"identifier_value",number:3,type:9,label:1},{name:"positive_int_value",number:4,type:4,label:1},{name:"negative_int_value",number:5,type:3,label:1},{name:"double_value",number:6,type:1,label:1},{name:"string_value",number:7,type:12,label:1},{name:"aggregate_value",number:8,type:9,label:1}],nestedType:[{name:"NamePart",field:[{name:"name_part",number:1,type:9,label:2},{name:"is_extension",number:2,type:8,label:2}]}]},{name:"FeatureSet",field:[{name:"field_presence",number:1,type:14,label:1,typeName:".google.protobuf.FeatureSet.FieldPresence",options:{retention:1,targets:[4,1],editionDefaults:[{value:"EXPLICIT",edition:900},{value:"IMPLICIT",edition:999},{value:"EXPLICIT",edition:1e3}]}},{name:"enum_type",number:2,type:14,label:1,typeName:".google.protobuf.FeatureSet.EnumType",options:{retention:1,targets:[6,1],editionDefaults:[{value:"CLOSED",edition:900},{value:"OPEN",edition:999}]}},{name:"repeated_field_encoding",number:3,type:14,label:1,typeName:".google.protobuf.FeatureSet.RepeatedFieldEncoding",options:{retention:1,targets:[4,1],editionDefaults:[{value:"EXPANDED",edition:900},{value:"PACKED",edition:999}]}},{name:"utf8_validation",number:4,type:14,label:1,typeName:".google.protobuf.FeatureSet.Utf8Validation",options:{retention:1,targets:[4,1],editionDefaults:[{value:"NONE",edition:900},{value:"VERIFY",edition:999}]}},{name:"message_encoding",number:5,type:14,label:1,typeName:".google.protobuf.FeatureSet.MessageEncoding",options:{retention:1,targets:[4,1],editionDefaults:[{value:"LENGTH_PREFIXED",edition:900}]}},{name:"json_format",number:6,type:14,label:1,typeName:".google.protobuf.FeatureSet.JsonFormat",options:{retention:1,targets:[3,6,1],editionDefaults:[{value:"LEGACY_BEST_EFFORT",edition:900},{value:"ALLOW",edition:999}]}},{name:"enforce_naming_style",number:7,type:14,label:1,typeName:".google.protobuf.FeatureSet.EnforceNamingStyle",options:{retention:2,targets:[1,2,3,4,5,6,7,8,9],editionDefaults:[{value:"STYLE_LEGACY",edition:900},{value:"STYLE2024",edition:1001}]}},{name:"default_symbol_visibility",number:8,type:14,label:1,typeName:".google.protobuf.FeatureSet.VisibilityFeature.DefaultSymbolVisibility",options:{retention:2,targets:[1],editionDefaults:[{value:"EXPORT_ALL",edition:900},{value:"EXPORT_TOP_LEVEL",edition:1001}]}}],nestedType:[{name:"VisibilityFeature",enumType:[{name:"DefaultSymbolVisibility",value:[{name:"DEFAULT_SYMBOL_VISIBILITY_UNKNOWN",number:0},{name:"EXPORT_ALL",number:1},{name:"EXPORT_TOP_LEVEL",number:2},{name:"LOCAL_ALL",number:3},{name:"STRICT",number:4}]}]}],enumType:[{name:"FieldPresence",value:[{name:"FIELD_PRESENCE_UNKNOWN",number:0},{name:"EXPLICIT",number:1},{name:"IMPLICIT",number:2},{name:"LEGACY_REQUIRED",number:3}]},{name:"EnumType",value:[{name:"ENUM_TYPE_UNKNOWN",number:0},{name:"OPEN",number:1},{name:"CLOSED",number:2}]},{name:"RepeatedFieldEncoding",value:[{name:"REPEATED_FIELD_ENCODING_UNKNOWN",number:0},{name:"PACKED",number:1},{name:"EXPANDED",number:2}]},{name:"Utf8Validation",value:[{name:"UTF8_VALIDATION_UNKNOWN",number:0},{name:"VERIFY",number:2},{name:"NONE",number:3}]},{name:"MessageEncoding",value:[{name:"MESSAGE_ENCODING_UNKNOWN",number:0},{name:"LENGTH_PREFIXED",number:1},{name:"DELIMITED",number:2}]},{name:"JsonFormat",value:[{name:"JSON_FORMAT_UNKNOWN",number:0},{name:"ALLOW",number:1},{name:"LEGACY_BEST_EFFORT",number:2}]},{name:"EnforceNamingStyle",value:[{name:"ENFORCE_NAMING_STYLE_UNKNOWN",number:0},{name:"STYLE2024",number:1},{name:"STYLE_LEGACY",number:2}]}],extensionRange:[{start:1e3,end:9995},{start:9995,end:1e4},{start:1e4,end:10001}]},{name:"FeatureSetDefaults",field:[{name:"defaults",number:1,type:11,label:3,typeName:".google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault"},{name:"minimum_edition",number:4,type:14,label:1,typeName:".google.protobuf.Edition"},{name:"maximum_edition",number:5,type:14,label:1,typeName:".google.protobuf.Edition"}],nestedType:[{name:"FeatureSetEditionDefault",field:[{name:"edition",number:3,type:14,label:1,typeName:".google.protobuf.Edition"},{name:"overridable_features",number:4,type:11,label:1,typeName:".google.protobuf.FeatureSet"},{name:"fixed_features",number:5,type:11,label:1,typeName:".google.protobuf.FeatureSet"}]}]},{name:"SourceCodeInfo",field:[{name:"location",number:1,type:11,label:3,typeName:".google.protobuf.SourceCodeInfo.Location"}],nestedType:[{name:"Location",field:[{name:"path",number:1,type:5,label:3,options:{packed:!0}},{name:"span",number:2,type:5,label:3,options:{packed:!0}},{name:"leading_comments",number:3,type:9,label:1},{name:"trailing_comments",number:4,type:9,label:1},{name:"leading_detached_comments",number:6,type:9,label:3}]}],extensionRange:[{start:536e6,end:536000001}]},{name:"GeneratedCodeInfo",field:[{name:"annotation",number:1,type:11,label:3,typeName:".google.protobuf.GeneratedCodeInfo.Annotation"}],nestedType:[{name:"Annotation",field:[{name:"path",number:1,type:5,label:3,options:{packed:!0}},{name:"source_file",number:2,type:9,label:1},{name:"begin",number:3,type:5,label:1},{name:"end",number:4,type:5,label:1},{name:"semantic",number:5,type:14,label:1,typeName:".google.protobuf.GeneratedCodeInfo.Annotation.Semantic"}],enumType:[{name:"Semantic",value:[{name:"NONE",number:0},{name:"SET",number:1},{name:"ALIAS",number:2}]}]}]}],enumType:[{name:"Edition",value:[{name:"EDITION_UNKNOWN",number:0},{name:"EDITION_LEGACY",number:900},{name:"EDITION_PROTO2",number:998},{name:"EDITION_PROTO3",number:999},{name:"EDITION_2023",number:1e3},{name:"EDITION_2024",number:1001},{name:"EDITION_UNSTABLE",number:9999},{name:"EDITION_1_TEST_ONLY",number:1},{name:"EDITION_2_TEST_ONLY",number:2},{name:"EDITION_99997_TEST_ONLY",number:99997},{name:"EDITION_99998_TEST_ONLY",number:99998},{name:"EDITION_99999_TEST_ONLY",number:99999},{name:"EDITION_MAX",number:2147483647}]},{name:"SymbolVisibility",value:[{name:"VISIBILITY_UNSET",number:0},{name:"VISIBILITY_LOCAL",number:1},{name:"VISIBILITY_EXPORT",number:2}]}]});var ao=K(de,1);var Mr;(function(e){e[e.DECLARATION=0]="DECLARATION",e[e.UNVERIFIED=1]="UNVERIFIED"})(Mr||(Mr={}));var Lr;(function(e){e[e.DOUBLE=1]="DOUBLE",e[e.FLOAT=2]="FLOAT",e[e.INT64=3]="INT64",e[e.UINT64=4]="UINT64",e[e.INT32=5]="INT32",e[e.FIXED64=6]="FIXED64",e[e.FIXED32=7]="FIXED32",e[e.BOOL=8]="BOOL",e[e.STRING=9]="STRING",e[e.GROUP=10]="GROUP",e[e.MESSAGE=11]="MESSAGE",e[e.BYTES=12]="BYTES",e[e.UINT32=13]="UINT32",e[e.ENUM=14]="ENUM",e[e.SFIXED32=15]="SFIXED32",e[e.SFIXED64=16]="SFIXED64",e[e.SINT32=17]="SINT32",e[e.SINT64=18]="SINT64"})(Lr||(Lr={}));var zr;(function(e){e[e.OPTIONAL=1]="OPTIONAL",e[e.REPEATED=3]="REPEATED",e[e.REQUIRED=2]="REQUIRED"})(zr||(zr={}));var Kr;(function(e){e[e.SPEED=1]="SPEED",e[e.CODE_SIZE=2]="CODE_SIZE",e[e.LITE_RUNTIME=3]="LITE_RUNTIME"})(Kr||(Kr={}));var Ur;(function(e){e[e.STRING=0]="STRING",e[e.CORD=1]="CORD",e[e.STRING_PIECE=2]="STRING_PIECE"})(Ur||(Ur={}));var Tr;(function(e){e[e.JS_NORMAL=0]="JS_NORMAL",e[e.JS_STRING=1]="JS_STRING",e[e.JS_NUMBER=2]="JS_NUMBER"})(Tr||(Tr={}));var Dr;(function(e){e[e.RETENTION_UNKNOWN=0]="RETENTION_UNKNOWN",e[e.RETENTION_RUNTIME=1]="RETENTION_RUNTIME",e[e.RETENTION_SOURCE=2]="RETENTION_SOURCE"})(Dr||(Dr={}));var Qr;(function(e){e[e.TARGET_TYPE_UNKNOWN=0]="TARGET_TYPE_UNKNOWN",e[e.TARGET_TYPE_FILE=1]="TARGET_TYPE_FILE",e[e.TARGET_TYPE_EXTENSION_RANGE=2]="TARGET_TYPE_EXTENSION_RANGE",e[e.TARGET_TYPE_MESSAGE=3]="TARGET_TYPE_MESSAGE",e[e.TARGET_TYPE_FIELD=4]="TARGET_TYPE_FIELD",e[e.TARGET_TYPE_ONEOF=5]="TARGET_TYPE_ONEOF",e[e.TARGET_TYPE_ENUM=6]="TARGET_TYPE_ENUM",e[e.TARGET_TYPE_ENUM_ENTRY=7]="TARGET_TYPE_ENUM_ENTRY",e[e.TARGET_TYPE_SERVICE=8]="TARGET_TYPE_SERVICE",e[e.TARGET_TYPE_METHOD=9]="TARGET_TYPE_METHOD"})(Qr||(Qr={}));var ut;(function(e){e[e.IDEMPOTENCY_UNKNOWN=0]="IDEMPOTENCY_UNKNOWN",e[e.NO_SIDE_EFFECTS=1]="NO_SIDE_EFFECTS",e[e.IDEMPOTENT=2]="IDEMPOTENT"})(ut||(ut={}));var _r;(function(e){e[e.DEFAULT_SYMBOL_VISIBILITY_UNKNOWN=0]="DEFAULT_SYMBOL_VISIBILITY_UNKNOWN",e[e.EXPORT_ALL=1]="EXPORT_ALL",e[e.EXPORT_TOP_LEVEL=2]="EXPORT_TOP_LEVEL",e[e.LOCAL_ALL=3]="LOCAL_ALL",e[e.STRICT=4]="STRICT"})(_r||(_r={}));var Or;(function(e){e[e.FIELD_PRESENCE_UNKNOWN=0]="FIELD_PRESENCE_UNKNOWN",e[e.EXPLICIT=1]="EXPLICIT",e[e.IMPLICIT=2]="IMPLICIT",e[e.LEGACY_REQUIRED=3]="LEGACY_REQUIRED"})(Or||(Or={}));var Pr;(function(e){e[e.ENUM_TYPE_UNKNOWN=0]="ENUM_TYPE_UNKNOWN",e[e.OPEN=1]="OPEN",e[e.CLOSED=2]="CLOSED"})(Pr||(Pr={}));var jr;(function(e){e[e.REPEATED_FIELD_ENCODING_UNKNOWN=0]="REPEATED_FIELD_ENCODING_UNKNOWN",e[e.PACKED=1]="PACKED",e[e.EXPANDED=2]="EXPANDED"})(jr||(jr={}));var $r;(function(e){e[e.UTF8_VALIDATION_UNKNOWN=0]="UTF8_VALIDATION_UNKNOWN",e[e.VERIFY=2]="VERIFY",e[e.NONE=3]="NONE"})($r||($r={}));var qr;(function(e){e[e.MESSAGE_ENCODING_UNKNOWN=0]="MESSAGE_ENCODING_UNKNOWN",e[e.LENGTH_PREFIXED=1]="LENGTH_PREFIXED",e[e.DELIMITED=2]="DELIMITED"})(qr||(qr={}));var eo;(function(e){e[e.JSON_FORMAT_UNKNOWN=0]="JSON_FORMAT_UNKNOWN",e[e.ALLOW=1]="ALLOW",e[e.LEGACY_BEST_EFFORT=2]="LEGACY_BEST_EFFORT"})(eo||(eo={}));var to;(function(e){e[e.ENFORCE_NAMING_STYLE_UNKNOWN=0]="ENFORCE_NAMING_STYLE_UNKNOWN",e[e.STYLE2024=1]="STYLE2024",e[e.STYLE_LEGACY=2]="STYLE_LEGACY"})(to||(to={}));var no;(function(e){e[e.NONE=0]="NONE",e[e.SET=1]="SET",e[e.ALIAS=2]="ALIAS"})(no||(no={}));var ro;(function(e){e[e.EDITION_UNKNOWN=0]="EDITION_UNKNOWN",e[e.EDITION_LEGACY=900]="EDITION_LEGACY",e[e.EDITION_PROTO2=998]="EDITION_PROTO2",e[e.EDITION_PROTO3=999]="EDITION_PROTO3",e[e.EDITION_2023=1e3]="EDITION_2023",e[e.EDITION_2024=1001]="EDITION_2024",e[e.EDITION_UNSTABLE=9999]="EDITION_UNSTABLE",e[e.EDITION_1_TEST_ONLY=1]="EDITION_1_TEST_ONLY",e[e.EDITION_2_TEST_ONLY=2]="EDITION_2_TEST_ONLY",e[e.EDITION_99997_TEST_ONLY=99997]="EDITION_99997_TEST_ONLY",e[e.EDITION_99998_TEST_ONLY=99998]="EDITION_99998_TEST_ONLY",e[e.EDITION_99999_TEST_ONLY=99999]="EDITION_99999_TEST_ONLY",e[e.EDITION_MAX=2147483647]="EDITION_MAX"})(ro||(ro={}));var oo;(function(e){e[e.VISIBILITY_UNSET=0]="VISIBILITY_UNSET",e[e.VISIBILITY_LOCAL=1]="VISIBILITY_LOCAL",e[e.VISIBILITY_EXPORT=2]="VISIBILITY_EXPORT"})(oo||(oo={}));var io={readUnknownFields:!0};function Zi(e){return e?Object.assign(Object.assign({},io),e):io}function ae(e,t,n){let r=U(e,void 0,!1);return so(r,new le(t),Zi(n),!1,t.byteLength),r.message}function so(e,t,n,r,o){var a;let i=r?t.len:t.pos+o,s,u,m=(a=e.getUnknown())!==null&&a!==void 0?a:[];for(;t.pos<i&&([s,u]=t.tag(),!(r&&u==F.EndGroup));){let I=e.findNumber(s);if(!I){let f=t.skip(u,s);n.readUnknownFields&&m.push({no:s,wireType:u,data:f});continue}mn(e,t,I,u,n)}if(r&&(u!=F.EndGroup||s!==o))throw new Error("invalid end group tag");m.length>0&&e.setUnknown(m)}function mn(e,t,n,r,o){var a;switch(n.fieldKind){case"scalar":e.set(n,ye(t,n.scalar));break;case"enum":let i=ye(t,d.INT32);if(n.enum.open)e.set(n,i);else if(n.enum.values.some(u=>u.number===i))e.set(n,i);else if(o.readUnknownFields){let u=[];Xe(i,u);let m=(a=e.getUnknown())!==null&&a!==void 0?a:[];m.push({no:n.number,wireType:r,data:new Uint8Array(u)}),e.setUnknown(m)}break;case"message":e.set(n,pn(t,o,n,e.get(n)));break;case"list":Ci(t,r,e.get(n),o);break;case"map":Ai(t,e.get(n),o);break}}function Ai(e,t,n){let r=t.field(),o,a,i=e.uint32(),s=e.pos+i;for(;e.pos<s;){let[u]=e.tag();switch(u){case 1:o=ye(e,r.mapKey);break;case 2:switch(r.mapKind){case"scalar":a=ye(e,r.scalar);break;case"enum":a=e.int32();break;case"message":a=pn(e,n,r);break}break}}if(o===void 0&&(o=O(r.mapKey,!1)),a===void 0)switch(r.mapKind){case"scalar":a=O(r.scalar,!1);break;case"enum":a=r.enum.values[0].number;break;case"message":a=U(r.message,void 0,!1);break}t.set(o,a)}function Ci(e,t,n,r){var o;let a=n.field();if(a.listKind==="message"){n.add(pn(e,r,a));return}let i=(o=a.scalar)!==null&&o!==void 0?o:d.INT32;if(!(t==F.LengthDelimited&&i!=d.STRING&&i!=d.BYTES)){n.add(ye(e,i));return}let u=e.uint32()+e.pos;for(;e.pos<u;)n.add(ye(e,i))}function pn(e,t,n,r){let o=n.delimitedEncoding,a=r??U(n.message,void 0,!1);return so(a,e,t,o,o?n.number:e.uint32()),a}function ye(e,t){switch(t){case d.STRING:return e.string();case d.BOOL:return e.bool();case d.DOUBLE:return e.double();case d.FLOAT:return e.float();case d.INT32:return e.int32();case d.INT64:return e.int64();case d.UINT64:return e.uint64();case d.FIXED64:return e.fixed64();case d.BYTES:return e.bytes();case d.FIXED32:return e.fixed32();case d.SFIXED32:return e.sfixed32();case d.SFIXED64:return e.sfixed64();case d.SINT64:return e.sint64();case d.UINT32:return e.uint32();case d.SINT32:return e.sint32()}}function w(e,t){var n;let r=ae(ao,ge(e));return r.messageType.forEach(we),r.dependency=(n=t?.map(a=>a.proto.name))!==null&&n!==void 0?n:[],lt(r,a=>t?.find(i=>i.proto.name===a)).getFile(r.name)}var mt=w("Ch9nb29nbGUvcHJvdG9idWYvdGltZXN0YW1wLnByb3RvEg9nb29nbGUucHJvdG9idWYiKwoJVGltZXN0YW1wEg8KB3NlY29uZHMYASABKAMSDQoFbmFub3MYAiABKAVChQEKE2NvbS5nb29nbGUucHJvdG9idWZCDlRpbWVzdGFtcFByb3RvUAFaMmdvb2dsZS5nb2xhbmcub3JnL3Byb3RvYnVmL3R5cGVzL2tub3duL3RpbWVzdGFtcHBi+AEBogIDR1BCqgIeR29vZ2xlLlByb3RvYnVmLldlbGxLbm93blR5cGVzYgZwcm90bzM");function Q(e){return new Date(Vi(e))}function Vi(e){return Number(e.seconds)*1e3+Math.round(e.nanos/1e6)}var pt=w("Ch5nb29nbGUvcHJvdG9idWYvZHVyYXRpb24ucHJvdG8SD2dvb2dsZS5wcm90b2J1ZiIqCghEdXJhdGlvbhIPCgdzZWNvbmRzGAEgASgDEg0KBW5hbm9zGAIgASgFQoMBChNjb20uZ29vZ2xlLnByb3RvYnVmQg1EdXJhdGlvblByb3RvUAFaMWdvb2dsZS5nb2xhbmcub3JnL3Byb3RvYnVmL3R5cGVzL2tub3duL2R1cmF0aW9ucGL4AQGiAgNHUEKqAh5Hb29nbGUuUHJvdG9idWYuV2VsbEtub3duVHlwZXNiBnByb3RvMw");var xi=w("Chlnb29nbGUvcHJvdG9idWYvYW55LnByb3RvEg9nb29nbGUucHJvdG9idWYiJgoDQW55EhAKCHR5cGVfdXJsGAEgASgJEg0KBXZhbHVlGAIgASgMQnYKE2NvbS5nb29nbGUucHJvdG9idWZCCEFueVByb3RvUAFaLGdvb2dsZS5nb2xhbmcub3JnL3Byb3RvYnVmL3R5cGVzL2tub3duL2FueXBiogIDR1BCqgIeR29vZ2xlLlByb3RvYnVmLldlbGxLbm93blR5cGVzYgZwcm90bzM"),co=K(xi,0);var Si=3,lo={writeUnknownFields:!0};function Xi(e){return e?Object.assign(Object.assign({},lo),e):lo}function Ne(e,t,n){return ht(new pe,Xi(n),U(e,t)).finish()}function ht(e,t,n){var r;for(let o of n.sortedFields){if(!n.isSet(o)){if(o.presence==Si)throw new Error(`cannot encode ${o} to binary: required field not set`);continue}hn(e,t,n,o)}if(t.writeUnknownFields)for(let{no:o,wireType:a,data:i}of(r=n.getUnknown())!==null&&r!==void 0?r:[])e.tag(o,a).raw(i);return e}function hn(e,t,n,r){var o;switch(r.fieldKind){case"scalar":case"enum":gt(e,n.desc.typeName,r.name,(o=r.scalar)!==null&&o!==void 0?o:d.INT32,r.number,n.get(r));break;case"list":Bi(e,t,r,n.get(r));break;case"message":uo(e,t,r,n.get(r));break;case"map":for(let[a,i]of n.get(r))Wi(e,t,r,a,i);break}}function gt(e,t,n,r,o,a){mo(e.tag(o,Ei(r)),t,n,r,a)}function uo(e,t,n,r){n.delimitedEncoding?ht(e.tag(n.number,F.StartGroup),t,r).tag(n.number,F.EndGroup):ht(e.tag(n.number,F.LengthDelimited).fork(),t,r).join()}function Bi(e,t,n,r){var o;if(n.listKind=="message"){for(let i of r)uo(e,t,n,i);return}let a=(o=n.scalar)!==null&&o!==void 0?o:d.INT32;if(n.packed){if(!r.size)return;e.tag(n.number,F.LengthDelimited).fork();for(let i of r)mo(e,n.parent.typeName,n.name,a,i);e.join();return}for(let i of r)gt(e,n.parent.typeName,n.name,a,n.number,i)}function Wi(e,t,n,r,o){var a;switch(e.tag(n.number,F.LengthDelimited).fork(),gt(e,n.parent.typeName,n.name,n.mapKey,1,r),n.mapKind){case"scalar":case"enum":gt(e,n.parent.typeName,n.name,(a=n.scalar)!==null&&a!==void 0?a:d.INT32,2,o);break;case"message":ht(e.tag(2,F.LengthDelimited).fork(),t,o).join();break}e.join()}function mo(e,t,n,r,o){try{switch(r){case d.STRING:e.string(o);break;case d.BOOL:e.bool(o);break;case d.DOUBLE:e.double(o);break;case d.FLOAT:e.float(o);break;case d.INT32:e.int32(o);break;case d.INT64:e.int64(o);break;case d.UINT64:e.uint64(o);break;case d.FIXED64:e.fixed64(o);break;case d.BYTES:e.bytes(o);break;case d.FIXED32:e.fixed32(o);break;case d.SFIXED32:e.sfixed32(o);break;case d.SFIXED64:e.sfixed64(o);break;case d.SINT64:e.sint64(o);break;case d.UINT32:e.uint32(o);break;case d.SINT32:e.sint32(o);break}}catch(a){throw a instanceof Error?new Error(`cannot encode field ${t}.${n} to binary: ${a.message}`):a}}function Ei(e){switch(e){case d.BYTES:case d.STRING:return F.LengthDelimited;case d.DOUBLE:case d.FIXED64:case d.SFIXED64:return F.Bit64;case d.FIXED32:case d.SFIXED32:case d.FLOAT:return F.Bit32;default:return F.Varint}}function po(e,t,n){let r=!1;return n||(n=k(co),r=!0),n.value=Ne(e,t),n.typeUrl=Ri(t.$typeName),r?n:void 0}function vi(e,t){if(e.typeUrl==="")return!1;let n=typeof t=="string"?t:t.typeName,r=go(e.typeUrl);return n===r}function ho(e,t){if(e.typeUrl==="")return;let n=t.kind=="message"?t:t.getMessage(go(e.typeUrl));if(!(!n||!vi(e,n)))return ae(n,e.value)}function Ri(e){return`type.googleapis.com/${e}`}function go(e){let t=e.lastIndexOf("/"),n=t>=0?e.substring(t+1):e;if(!n.length)throw new Error(`invalid type url: ${e}`);return n}var bo=w("CiBnb29nbGUvcHJvdG9idWYvZmllbGRfbWFzay5wcm90bxIPZ29vZ2xlLnByb3RvYnVmIhoKCUZpZWxkTWFzaxINCgVwYXRocxgBIAMoCUKFAQoTY29tLmdvb2dsZS5wcm90b2J1ZkIORmllbGRNYXNrUHJvdG9QAVoyZ29vZ2xlLmdvbGFuZy5vcmcvcHJvdG9idWYvdHlwZXMva25vd24vZmllbGRtYXNrcGL4AQGiAgNHUEKqAh5Hb29nbGUuUHJvdG9idWYuV2VsbEtub3duVHlwZXNiBnByb3RvMw");var gn=w("Chxnb29nbGUvcHJvdG9idWYvc3RydWN0LnByb3RvEg9nb29nbGUucHJvdG9idWYihAEKBlN0cnVjdBIzCgZmaWVsZHMYASADKAsyIy5nb29nbGUucHJvdG9idWYuU3RydWN0LkZpZWxkc0VudHJ5GkUKC0ZpZWxkc0VudHJ5EgsKA2tleRgBIAEoCRIlCgV2YWx1ZRgCIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZToCOAEi6gEKBVZhbHVlEjAKCm51bGxfdmFsdWUYASABKA4yGi5nb29nbGUucHJvdG9idWYuTnVsbFZhbHVlSAASFgoMbnVtYmVyX3ZhbHVlGAIgASgBSAASFgoMc3RyaW5nX3ZhbHVlGAMgASgJSAASFAoKYm9vbF92YWx1ZRgEIAEoCEgAEi8KDHN0cnVjdF92YWx1ZRgFIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIABIwCgpsaXN0X3ZhbHVlGAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLkxpc3RWYWx1ZUgAQgYKBGtpbmQiMwoJTGlzdFZhbHVlEiYKBnZhbHVlcxgBIAMoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZSobCglOdWxsVmFsdWUSDgoKTlVMTF9WQUxVRRAAQn8KE2NvbS5nb29nbGUucHJvdG9idWZCC1N0cnVjdFByb3RvUAFaL2dvb2dsZS5nb2xhbmcub3JnL3Byb3RvYnVmL3R5cGVzL2tub3duL3N0cnVjdHBi+AEBogIDR1BCqgIeR29vZ2xlLlByb3RvYnVmLldlbGxLbm93blR5cGVzYgZwcm90bzM"),fo=K(gn,0),bn=K(gn,1),yo=K(gn,2),bt;(function(e){e[e.NULL_VALUE=0]="NULL_VALUE"})(bt||(bt={}));function Io(e,t){Zo(t,e);let n=wi(e.$unknown,t),[r,o,a]=Ie(t);for(let i of n)mn(r,new le(i.data),o,i.wireType,{readUnknownFields:!0});return a()}function Go(e,t,n){var r;Zo(t,e);let o=((r=e.$unknown)!==null&&r!==void 0?r:[]).filter(m=>m.no!==t.number),[a,i]=Ie(t,n),s=new pe;hn(s,{writeUnknownFields:!0},a,i);let u=new le(s.finish());for(;u.pos<u.len;){let[m,I]=u.tag(),f=u.skip(I,m);o.push({no:m,wireType:I,data:f})}e.$unknown=o}function wi(e,t){if(e===void 0)return[];if(t.fieldKind==="enum"||t.fieldKind==="scalar"){for(let n=e.length-1;n>=0;--n)if(e[n].no==t.number)return[e[n]];return[]}return e.filter(n=>n.no===t.number)}function Ie(e,t){let n=e.typeName,r=Object.assign(Object.assign({},e),{kind:"field",parent:e.extendee,localName:n}),o=Object.assign(Object.assign({},e.extendee),{fields:[r],members:[r],oneofs:[]}),a=k(o,t!==void 0?{[n]:t}:void 0);return[U(o,a),r,()=>{let i=a[n];if(i===void 0){let s=e.message;return te(s)?O(s.fields[0].scalar,s.fields[0].longAsString):k(s)}return i}]}function Zo(e,t){if(e.extendee.typeName!=t.$typeName)throw new Error(`extension ${e.typeName} can only be applied to message ${e.extendee.typeName}`)}var ki=3,Fi=2,Ao={alwaysEmitImplicit:!1,enumAsInteger:!1,useProtoFieldName:!1};function Yi(e){return e?Object.assign(Object.assign({},Ao),e):Ao}function Ni(e,t,n){return He(U(e,t),Yi(n))}function Vo(e,t,n){var r;let o=Ni(e,t,n);return JSON.stringify(o,null,(r=n?.prettySpaces)!==null&&r!==void 0?r:0)}function Ge(e,t){var n;if(e.typeName=="google.protobuf.NullValue")return null;let r=(n=e.value[t])===null||n===void 0?void 0:n.name;if(r===void 0)throw new Error(`${t} is not a value in ${e}`);return r}function He(e,t){var n;let r=zi(e,t);if(r!==void 0)return r;let o={};for(let a of e.sortedFields){if(!e.isSet(a)){if(a.presence==ki)throw new Error(`cannot encode ${a} to JSON: required field not set`);if(!t.alwaysEmitImplicit||a.presence!==Fi)continue}let i=Co(a,e.get(a),t);i!==void 0&&(o[Li(a,t)]=i)}if(t.registry){let a=new Set;for(let{no:i}of(n=e.getUnknown())!==null&&n!==void 0?n:[])if(!a.has(i)){a.add(i);let s=t.registry.getExtensionFor(e.desc,i);if(!s)continue;let u=Io(e.message,s),[m,I]=Ie(s,u),f=Co(I,m.get(I),t);f!==void 0&&(o[s.jsonName]=f)}}return o}function Co(e,t,n){switch(e.fieldKind){case"scalar":return ft(e,t);case"message":return He(t,n);case"enum":return fn(e.enum,t,n.enumAsInteger);case"list":return Mi(t,n);case"map":return Hi(t,n)}}function Hi(e,t){let n=e.field(),r={};switch(n.mapKind){case"scalar":for(let[o,a]of e)r[o]=ft(n,a);break;case"message":for(let[o,a]of e)r[o]=He(a,t);break;case"enum":for(let[o,a]of e)r[o]=fn(n.enum,a,t.enumAsInteger);break}return t.alwaysEmitImplicit||e.size>0?r:void 0}function Mi(e,t){let n=e.field(),r=[];switch(n.listKind){case"scalar":for(let o of e)r.push(ft(n,o));break;case"enum":for(let o of e)r.push(fn(n.enum,o,t.enumAsInteger));break;case"message":for(let o of e)r.push(He(o,t));break}return t.alwaysEmitImplicit||r.length>0?r:void 0}function fn(e,t,n){var r;if(typeof t!="number")throw new Error(`cannot encode ${e} to JSON: expected number, got ${Y(t)}`);if(e.typeName=="google.protobuf.NullValue")return null;if(n)return t;let o=e.value[t];return(r=o?.name)!==null&&r!==void 0?r:t}function ft(e,t){var n,r,o,a,i,s;switch(e.scalar){case d.INT32:case d.SFIXED32:case d.SINT32:case d.FIXED32:case d.UINT32:if(typeof t!="number")throw new Error(`cannot encode ${e} to JSON: ${(n=ne(e,t))===null||n===void 0?void 0:n.message}`);return t;case d.FLOAT:case d.DOUBLE:if(typeof t!="number")throw new Error(`cannot encode ${e} to JSON: ${(r=ne(e,t))===null||r===void 0?void 0:r.message}`);return Number.isNaN(t)?"NaN":t===Number.POSITIVE_INFINITY?"Infinity":t===Number.NEGATIVE_INFINITY?"-Infinity":t;case d.STRING:if(typeof t!="string")throw new Error(`cannot encode ${e} to JSON: ${(o=ne(e,t))===null||o===void 0?void 0:o.message}`);return t;case d.BOOL:if(typeof t!="boolean")throw new Error(`cannot encode ${e} to JSON: ${(a=ne(e,t))===null||a===void 0?void 0:a.message}`);return t;case d.UINT64:case d.FIXED64:case d.INT64:case d.SFIXED64:case d.SINT64:if(typeof t!="bigint"&&typeof t!="string")throw new Error(`cannot encode ${e} to JSON: ${(i=ne(e,t))===null||i===void 0?void 0:i.message}`);return t.toString();case d.BYTES:if(t instanceof Uint8Array)return Re(t);throw new Error(`cannot encode ${e} to JSON: ${(s=ne(e,t))===null||s===void 0?void 0:s.message}`)}}function Li(e,t){return t.useProtoFieldName?e.name:e.jsonName}function zi(e,t){if(e.desc.typeName.startsWith("google.protobuf."))switch(e.desc.typeName){case"google.protobuf.Any":return Ki(e.message,t);case"google.protobuf.Timestamp":return Di(e.message);case"google.protobuf.Duration":return Ui(e.message);case"google.protobuf.FieldMask":return Ti(e.message);case"google.protobuf.Struct":return xo(e.message);case"google.protobuf.Value":return yn(e.message);case"google.protobuf.ListValue":return So(e.message);default:if(te(e.desc)){let n=e.desc.fields[0];return ft(n,e.get(n))}return}}function Ki(e,t){if(e.typeUrl==="")return{};let{registry:n}=t,r,o;if(n&&(r=ho(e,n),r&&(o=n.getMessage(r.$typeName))),!o||!r)throw new Error(`cannot encode message ${e.$typeName} to JSON: "${e.typeUrl}" is not in the type registry`);let a=He(U(o,r),t);return(o.typeName.startsWith("google.protobuf.")||a===null||Array.isArray(a)||typeof a!="object")&&(a={value:a}),a["@type"]=e.typeUrl,a}function Ui(e){let t=Number(e.seconds),n=e.nanos;if(t>315576e6||t<-315576e6)throw new Error(`cannot encode message ${e.$typeName} to JSON: value out of range`);if(t>0&&n<0||t<0&&n>0)throw new Error(`cannot encode message ${e.$typeName} to JSON: nanos sign must match seconds sign`);let r=e.seconds.toString();if(n!==0){let o=Math.abs(n).toString();o="0".repeat(9-o.length)+o,o.substring(3)==="000000"?o=o.substring(0,3):o.substring(6)==="000"&&(o=o.substring(0,6)),r+="."+o,n<0&&t==0&&(r="-"+r)}return r+"s"}function Ti(e){return e.paths.map(t=>{if(st(re(t))!==t)throw new Error(`cannot encode message ${e.$typeName} to JSON: lowerCamelCase of path name "${t}" is irreversible`);return re(t)}).join(",")}function xo(e){let t={};for(let[n,r]of Object.entries(e.fields))t[n]=yn(r);return t}function yn(e){switch(e.kind.case){case"nullValue":return null;case"numberValue":if(!Number.isFinite(e.kind.value))throw new Error(`${e.$typeName} cannot be NaN or Infinity`);return e.kind.value;case"boolValue":return e.kind.value;case"stringValue":return e.kind.value;case"structValue":return xo(e.kind.value);case"listValue":return So(e.kind.value);default:throw new Error(`${e.$typeName} must have a value`)}}function So(e){return e.values.map(yn)}function Di(e){let t=Number(e.seconds)*1e3;if(t<Date.parse("0001-01-01T00:00:00Z")||t>Date.parse("9999-12-31T23:59:59Z"))throw new Error(`cannot encode message ${e.$typeName} to JSON: must be from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59Z inclusive`);if(e.nanos<0)throw new Error(`cannot encode message ${e.$typeName} to JSON: nanos must not be negative`);if(e.nanos>999999999)throw new Error(`cannot encode message ${e.$typeName} to JSON: nanos must not be greater than 99999999`);let n="Z";if(e.nanos>0){let r=(e.nanos+1e9).toString().substring(1);r.substring(3)==="000000"?n="."+r.substring(0,3)+"Z":r.substring(6)==="000"?n="."+r.substring(0,6)+"Z":n="."+r+"Z"}return new Date(t).toISOString().replace(".000Z",n)}var Xo={ignoreUnknownFields:!1};function Qi(e){return e?Object.assign(Object.assign({},Xo),e):Xo}function Wo(e,t,n){return Gn(e,ts(t,e.typeName),n)}function Gn(e,t,n){let r=U(e);try{Me(r,t,Qi(n))}catch(o){throw ur(o)?new Error(`cannot decode ${o.field()} from JSON: ${o.message}`,{cause:o}):o}return r.message}var In=new WeakMap;function _i(e,t){var n;if(!In.has(e)){let r=new Map;for(let o of e.fields)r.set(o.name,o).set(o.jsonName,o);In.set(e,r)}return(n=In.get(e))===null||n===void 0?void 0:n.get(t)}function Me(e,t,n){var r;if(ns(e,t,n))return;if(t==null||Array.isArray(t)||typeof t!="object")throw new Error(`cannot decode ${e.desc} from JSON: ${Y(t)}`);let o=new Map;for(let[a,i]of Object.entries(t)){let s=_i(e.desc,a);if(s){if(s.oneof){if(i===null&&s.fieldKind=="scalar")continue;let u=o.get(s.oneof);if(u!==void 0)throw new L(s.oneof,`oneof set multiple times by ${u.name} and ${s.name}`);o.set(s.oneof,s)}Bo(e,s,i,n)}else{let u;if(a.startsWith("[")&&a.endsWith("]")&&(u=(r=n.registry)===null||r===void 0?void 0:r.getExtension(a.substring(1,a.length-1)))&&u.extendee.typeName===e.desc.typeName){let[m,I,f]=Ie(u);Bo(m,I,i,n),Go(e.message,u,f())}if(!u&&!n.ignoreUnknownFields)throw new Error(`cannot decode ${e.desc} from JSON: key "${a}" is unknown`)}}}function Bo(e,t,n,r){switch(t.fieldKind){case"scalar":qi(e,t,n);break;case"enum":$i(e,t,n,r);break;case"message":ji(e,t,n,r);break;case"list":Pi(e.get(t),n,r);break;case"map":Oi(e.get(t),n,r);break}}function Eo(e,t,n){if(e.scalar&&t!==null)return Zn(e,t);if(e.message&&!yt(e,t)){let r=U(e.message);return Me(r,t,n),r}if(e.enum&&!yt(e,t))return Jo(e.enum,t,n.ignoreUnknownFields);throw new L(e,`${e.fieldKind==="list"?"list item":"map value"} must not be null`)}function Oi(e,t,n){if(t===null)return;let r=e.field();if(typeof t!="object"||Array.isArray(t))throw new L(r,"expected object, got "+Y(t));for(let[o,a]of Object.entries(t)){let i=es(r.mapKey,o),s=Eo(r,a,n);s!==It&&e.set(i,s)}}function Pi(e,t,n){if(t===null)return;let r=e.field();if(!Array.isArray(t))throw new L(r,"expected Array, got "+Y(t));for(let o of t){let a=Eo(r,o,n);a!==It&&e.add(a)}}function ji(e,t,n,r){if(yt(t,n)){e.clear(t);return}let o=e.isSet(t)?e.get(t):U(t.message);Me(o,n,r),e.set(t,o)}function $i(e,t,n,r){if(yt(t,n)){e.clear(t);return}let o=Jo(t.enum,n,r.ignoreUnknownFields);o!==It&&e.set(t,o)}function qi(e,t,n){n===null?e.clear(t):e.set(t,Zn(t,n))}function yt(e,t){var n,r;return t===null&&((n=e.message)===null||n===void 0?void 0:n.typeName)!="google.protobuf.Value"&&((r=e.enum)===null||r===void 0?void 0:r.typeName)!="google.protobuf.NullValue"}var It=Symbol();function Jo(e,t,n){if(t===null)return e.values[0].number;switch(typeof t){case"number":if(Number.isInteger(t))return t;break;case"string":let r=e.values.find(o=>o.name===t);if(r!==void 0)return r.number;if(n)return It;break}throw new Error(`cannot decode ${e} from JSON: ${Y(t)}`)}function Zn(e,t){switch(e.scalar){case d.DOUBLE:case d.FLOAT:if(t==="NaN")return NaN;if(t==="Infinity")return Number.POSITIVE_INFINITY;if(t==="-Infinity")return Number.NEGATIVE_INFINITY;if(typeof t=="number"){if(Number.isNaN(t))throw new L(e,"unexpected NaN number");if(!Number.isFinite(t))throw new L(e,"unexpected infinite number");break}if(typeof t=="string"){if(t===""||t.trim().length!==t.length)break;let n=Number(t);if(!Number.isFinite(n))break;return n}break;case d.INT32:case d.FIXED32:case d.SFIXED32:case d.SINT32:case d.UINT32:return vo(t);case d.BYTES:if(typeof t=="string"){if(t==="")return new Uint8Array(0);try{return ge(t)}catch(n){let r=n instanceof Error?n.message:String(n);throw new L(e,r)}}break}return t}function es(e,t){switch(e){case d.BOOL:switch(t){case"true":return!0;case"false":return!1}return t;case d.INT32:case d.FIXED32:case d.UINT32:case d.SFIXED32:case d.SINT32:return vo(t);default:return t}}function vo(e){if(typeof e=="string"){if(e===""||e.trim().length!==e.length)return e;let t=Number(e);return Number.isNaN(t)?e:t}return e}function ts(e,t){try{return JSON.parse(e)}catch(n){let r=n instanceof Error?n.message:String(n);throw new Error(`cannot decode message ${t} from JSON: ${r}`,{cause:n})}}function ns(e,t,n){if(!e.desc.typeName.startsWith("google.protobuf."))return!1;switch(e.desc.typeName){case"google.protobuf.Any":return rs(e.message,t,n),!0;case"google.protobuf.Timestamp":return os(e.message,t),!0;case"google.protobuf.Duration":return as(e.message,t),!0;case"google.protobuf.FieldMask":return is(e.message,t),!0;case"google.protobuf.Struct":return Ro(e.message,t),!0;case"google.protobuf.Value":return An(e.message,t),!0;case"google.protobuf.ListValue":return wo(e.message,t),!0;default:if(te(e.desc)){let r=e.desc.fields[0];return t===null?e.clear(r):e.set(r,Zn(r,t)),!0}return!1}}function rs(e,t,n){var r;if(t===null||Array.isArray(t)||typeof t!="object")throw new Error(`cannot decode message ${e.$typeName} from JSON: expected object but got ${Y(t)}`);if(Object.keys(t).length==0)return;let o=t["@type"];if(typeof o!="string"||o=="")throw new Error(`cannot decode message ${e.$typeName} from JSON: "@type" is empty`);let a=o.includes("/")?o.substring(o.lastIndexOf("/")+1):o;if(!a.length)throw new Error(`cannot decode message ${e.$typeName} from JSON: "@type" is invalid`);let i=(r=n.registry)===null||r===void 0?void 0:r.getMessage(a);if(!i)throw new Error(`cannot decode message ${e.$typeName} from JSON: ${o} is not in the type registry`);let s=U(i);if(a.startsWith("google.protobuf.")&&Object.prototype.hasOwnProperty.call(t,"value")){let u=t.value;Me(s,u,n)}else{let u=Object.assign({},t);delete u["@type"],Me(s,u,n)}po(s.desc,s.message,e)}function os(e,t){if(typeof t!="string")throw new Error(`cannot decode message ${e.$typeName} from JSON: ${Y(t)}`);let n=t.match(/^([0-9]{4})-([0-9]{2})-([0-9]{2})T([0-9]{2}):([0-9]{2}):([0-9]{2})(?:\.([0-9]{1,9}))?(?:Z|([+-][0-9][0-9]:[0-9][0-9]))$/);if(!n)throw new Error(`cannot decode message ${e.$typeName} from JSON: invalid RFC 3339 string`);let r=Date.parse(n[1]+"-"+n[2]+"-"+n[3]+"T"+n[4]+":"+n[5]+":"+n[6]+(n[8]?n[8]:"Z"));if(Number.isNaN(r))throw new Error(`cannot decode message ${e.$typeName} from JSON: invalid RFC 3339 string`);if(r<Date.parse("0001-01-01T00:00:00Z")||r>Date.parse("9999-12-31T23:59:59Z"))throw new Error(`cannot decode message ${e.$typeName} from JSON: must be from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59Z inclusive`);e.seconds=B.parse(r/1e3),e.nanos=0,n[7]&&(e.nanos=parseInt("1"+n[7]+"0".repeat(9-n[7].length))-1e9)}function as(e,t){if(typeof t!="string")throw new Error(`cannot decode message ${e.$typeName} from JSON: ${Y(t)}`);let n=t.match(/^(-?[0-9]+)(?:\.([0-9]+))?s/);if(n===null)throw new Error(`cannot decode message ${e.$typeName} from JSON: ${Y(t)}`);let r=Number(n[1]);if(r>315576e6||r<-315576e6)throw new Error(`cannot decode message ${e.$typeName} from JSON: ${Y(t)}`);if(e.seconds=B.parse(r),typeof n[2]!="string")return;let o=n[2]+"0".repeat(9-n[2].length);e.nanos=parseInt(o),(r<0||Object.is(r,-0))&&(e.nanos=-e.nanos)}function is(e,t){if(typeof t!="string")throw new Error(`cannot decode message ${e.$typeName} from JSON: ${Y(t)}`);t!==""&&(e.paths=t.split(",").map(n=>{if(n.includes("_"))throw new Error(`cannot decode message ${e.$typeName} from JSON: path names must be lowerCamelCase`);return st(n)}))}function Ro(e,t){if(typeof t!="object"||t==null||Array.isArray(t))throw new Error(`cannot decode message ${e.$typeName} from JSON ${Y(t)}`);for(let[n,r]of Object.entries(t)){let o=k(bn);An(o,r),e.fields[n]=o}}function An(e,t){switch(typeof t){case"number":e.kind={case:"numberValue",value:t};break;case"string":e.kind={case:"stringValue",value:t};break;case"boolean":e.kind={case:"boolValue",value:t};break;case"object":if(t===null)e.kind={case:"nullValue",value:bt.NULL_VALUE};else if(Array.isArray(t)){let n=k(yo);wo(n,t),e.kind={case:"listValue",value:n}}else{let n=k(fo);Ro(n,t),e.kind={case:"structValue",value:n}}break;default:throw new Error(`cannot decode message ${e.$typeName} from JSON ${Y(t)}`)}return e}function wo(e,t){if(!Array.isArray(t))throw new Error(`cannot decode message ${e.$typeName} from JSON ${Y(t)}`);for(let n of t){let r=k(bn);An(r,n),e.values.push(r)}}var C;(function(e){e[e.Canceled=1]="Canceled",e[e.Unknown=2]="Unknown",e[e.InvalidArgument=3]="InvalidArgument",e[e.DeadlineExceeded=4]="DeadlineExceeded",e[e.NotFound=5]="NotFound",e[e.AlreadyExists=6]="AlreadyExists",e[e.PermissionDenied=7]="PermissionDenied",e[e.ResourceExhausted=8]="ResourceExhausted",e[e.FailedPrecondition=9]="FailedPrecondition",e[e.Aborted=10]="Aborted",e[e.OutOfRange=11]="OutOfRange",e[e.Unimplemented=12]="Unimplemented",e[e.Internal=13]="Internal",e[e.Unavailable=14]="Unavailable",e[e.DataLoss=15]="DataLoss",e[e.Unauthenticated=16]="Unauthenticated"})(C||(C={}));function Le(e){let t=C[e];return typeof t!="string"?e.toString():t[0].toLowerCase()+t.substring(1).replace(/[A-Z]/g,n=>"_"+n.toLowerCase())}var Gt;function ko(e){if(!Gt){Gt={};for(let t of Object.values(C))typeof t!="string"&&(Gt[Le(t)]=t)}return Gt[e]}var W=class e extends Error{constructor(t,n=C.Unknown,r,o,a){super(ss(t,n)),this.name="ConnectError",Object.setPrototypeOf(this,new.target.prototype),this.rawMessage=t,this.code=n,this.metadata=new Headers(r??{}),this.details=o??[],this.cause=a}static from(t,n=C.Unknown){return t instanceof e?t:t instanceof Error?t.name=="AbortError"||t.name=="TimeoutError"?new e(t.message,C.Canceled):new e(t.message,n,void 0,void 0,t):new e(String(t),n,void 0,void 0,t)}static[Symbol.hasInstance](t){return t instanceof Error?Object.getPrototypeOf(t)===e.prototype?!0:t.name==="ConnectError"&&"code"in t&&typeof t.code=="number"&&"metadata"in t&&"details"in t&&Array.isArray(t.details)&&"rawMessage"in t&&typeof t.rawMessage=="string"&&"cause"in t:!1}findDetails(t){let n=t.kind==="message"?{getMessage:o=>o===t.typeName?t:void 0}:t,r=[];for(let o of this.details){if("desc"in o){n.getMessage(o.desc.typeName)&&r.push(k(o.desc,o.value));continue}let a=n.getMessage(o.type);if(a)try{r.push(ae(a,o.value))}catch{}}return r}};function ss(e,t){return e.length?`[${Le(t)}] ${e}`:`[${Le(t)}]`}function Cn(...e){let t=new Headers;for(let n of e)n.forEach((r,o)=>{t.append(o,r)});return t}function Fo(e,t){let n={};for(let r of e.methods){let o=t(r);o!=null&&(n[r.localName]=o)}return n}var Zt=1;function Yo(e,t,n=!1){if(t>e){let r=`message size is larger than configured readMaxBytes ${e}`;throw n&&(r=`message size ${t} is larger than configured readMaxBytes ${e}`),new W(r,C.ResourceExhausted)}}function cs(e){return new Vn(e)}var Vn=class{constructor(t){this.readMaxBytes=t,this.header=new Uint8Array(5),this.headerView=new DataView(this.header.buffer),this.buf=[]}get byteLength(){return this.buf.reduce((t,n)=>t+n.byteLength,0)}decode(t){this.buf.push(t);let n=[];for(;;){let r=this.pop();if(!r)break;n.push(r)}return n}pop(){if(!(!this.env&&(this.env=this.head(),!this.env))&&this.cons(this.env.data)){let t=this.env;return this.env=void 0,t}}head(){if(!this.cons(this.header))return;let t=this.headerView.getUint8(0),n=this.headerView.getUint32(1);return Yo(this.readMaxBytes,n,!0),{flags:t,data:new Uint8Array(n)}}cons(t){let n=t.byteLength;if(this.byteLength<n)return!1;let r=0;for(;r<n;){let o=this.buf.shift();o.byteLength>n-r?(t.set(o.subarray(0,n-r),r),this.buf.unshift(o.subarray(n-r)),r+=n-r):(t.set(o,r),r+=o.byteLength)}return!0}};function xn(e){let t,n=cs(4294967295);return new ReadableStream({start(){t=e.getReader()},async pull(r){let o=!1;for(;!o;){let a=await t.read();if(a.done)n.byteLength>0&&r.error(new W("protocol error: incomplete envelope",C.InvalidArgument)),r.close();else for(let i of n.decode(a.value))r.enqueue(i),o=!0}}})}function Sn(e,t){let n=new Uint8Array(t.length+5);n.set(t,5);let r=new DataView(n.buffer,n.byteOffset,n.byteLength);return r.setUint8(0,e),r.setUint32(1,t.length),n}var ls=function(e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var t=e[Symbol.asyncIterator],n;return t?t.call(e):(e=typeof __values=="function"?__values(e):e[Symbol.iterator](),n={},r("next"),r("throw"),r("return"),n[Symbol.asyncIterator]=function(){return this},n);function r(a){n[a]=e[a]&&function(i){return new Promise(function(s,u){i=e[a](i),o(s,u,i.done,i.value)})}}function o(a,i,s,u){Promise.resolve(u).then(function(m){a({value:m,done:s})},i)}},ze=function(e){return this instanceof ze?(this.v=e,this):new ze(e)},ds=function(e,t,n){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var r=n.apply(e,t||[]),o,a=[];return o=Object.create((typeof AsyncIterator=="function"?AsyncIterator:Object).prototype),s("next"),s("throw"),s("return",i),o[Symbol.asyncIterator]=function(){return this},o;function i(c){return function(p){return Promise.resolve(p).then(c,f)}}function s(c,p){r[c]&&(o[c]=function(g){return new Promise(function(h,b){a.push([c,g,h,b])>1||u(c,g)})},p&&(o[c]=p(o[c])))}function u(c,p){try{m(r[c](p))}catch(g){l(a[0][3],g)}}function m(c){c.value instanceof ze?Promise.resolve(c.value.v).then(I,f):l(a[0][2],c)}function I(c){u("next",c)}function f(c){u("throw",c)}function l(c,p){c(p),a.shift(),a.length&&u(a[0][0],a[0][1])}},us=function(e){var t,n;return t={},r("next"),r("throw",function(o){throw o}),r("return"),t[Symbol.iterator]=function(){return this},t;function r(o,a){t[o]=e[o]?function(i){return(n=!n)?{value:ze(e[o](i)),done:!1}:a?a(i):i}:a}};function No(e){return ds(this,arguments,function*(){yield ze(yield*us(ls(e)))})}var Ho=function(e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var t=e[Symbol.asyncIterator],n;return t?t.call(e):(e=typeof __values=="function"?__values(e):e[Symbol.iterator](),n={},r("next"),r("throw"),r("return"),n[Symbol.asyncIterator]=function(){return this},n);function r(a){n[a]=e[a]&&function(i){return new Promise(function(s,u){i=e[a](i),o(s,u,i.done,i.value)})}}function o(a,i,s,u){Promise.resolve(u).then(function(m){a({value:m,done:s})},i)}},Ze=function(e){return this instanceof Ze?(this.v=e,this):new Ze(e)},ms=function(e){var t,n;return t={},r("next"),r("throw",function(o){throw o}),r("return"),t[Symbol.iterator]=function(){return this},t;function r(o,a){t[o]=e[o]?function(i){return(n=!n)?{value:Ze(e[o](i)),done:!1}:a?a(i):i}:a}},ps=function(e,t,n){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var r=n.apply(e,t||[]),o,a=[];return o=Object.create((typeof AsyncIterator=="function"?AsyncIterator:Object).prototype),s("next"),s("throw"),s("return",i),o[Symbol.asyncIterator]=function(){return this},o;function i(c){return function(p){return Promise.resolve(p).then(c,f)}}function s(c,p){r[c]&&(o[c]=function(g){return new Promise(function(h,b){a.push([c,g,h,b])>1||u(c,g)})},p&&(o[c]=p(o[c])))}function u(c,p){try{m(r[c](p))}catch(g){l(a[0][3],g)}}function m(c){c.value instanceof Ze?Promise.resolve(c.value.v).then(I,f):l(a[0][2],c)}function I(c){u("next",c)}function f(c){u("throw",c)}function l(c,p){c(p),a.shift(),a.length&&u(a[0][0],a[0][1])}};function Xn(e,t){return Fo(e,n=>{switch(n.methodKind){case"unary":return hs(t,n);case"server_streaming":return gs(t,n);case"client_streaming":return bs(t,n);case"bidi_streaming":return fs(t,n);default:return null}})}function hs(e,t){return async(n,r)=>{var o,a;let i=await e.unary(t,r?.signal,r?.timeoutMs,r?.headers,n,r?.contextValues);return(o=r?.onHeader)===null||o===void 0||o.call(r,i.header),(a=r?.onTrailer)===null||a===void 0||a.call(r,i.trailer),i.message}}function gs(e,t){return(n,r)=>Mo(e.stream(t,r?.signal,r?.timeoutMs,r?.headers,No([n]),r?.contextValues),r)}function bs(e,t){return async(n,r)=>{var o,a,i,s,u,m;let I=await e.stream(t,r?.signal,r?.timeoutMs,r?.headers,n,r?.contextValues);(u=r?.onHeader)===null||u===void 0||u.call(r,I.header);let f,l=0;try{for(var c=!0,p=Ho(I.message),g;g=await p.next(),o=g.done,!o;c=!0)s=g.value,c=!1,f=s,l++}catch(h){a={error:h}}finally{try{!c&&!o&&(i=p.return)&&await i.call(p)}finally{if(a)throw a.error}}if(!f)throw new W("protocol error: missing response message",C.Unimplemented);if(l>1)throw new W("protocol error: received extra messages for client streaming method",C.Unimplemented);return(m=r?.onTrailer)===null||m===void 0||m.call(r,I.trailer),f}}function fs(e,t){return(n,r)=>Mo(e.stream(t,r?.signal,r?.timeoutMs,r?.headers,n,r?.contextValues),r)}function Mo(e,t){let n=(function(){return ps(this,arguments,function*(){var r,o;let a=yield Ze(e);(r=t?.onHeader)===null||r===void 0||r.call(t,a.header),yield Ze(yield*ms(Ho(a.message))),(o=t?.onTrailer)===null||o===void 0||o.call(t,a.trailer)})})()[Symbol.asyncIterator]();return{[Symbol.asyncIterator]:()=>({next:()=>n.next()})}}function Lo(...e){let t=new AbortController,n=e.filter(o=>o!==void 0).concat(t.signal);for(let o of n){if(o.aborted){r.apply(o);break}o.addEventListener("abort",r)}function r(){t.signal.aborted||t.abort(Bn(this));for(let o of n)o.removeEventListener("abort",r)}return t}function zo(e){let t=new AbortController,n=()=>{t.abort(new W("the operation timed out",C.DeadlineExceeded))},r;return e!==void 0&&(e<=0?n():r=setTimeout(n,e)),{signal:t.signal,cleanup:()=>clearTimeout(r)}}function Bn(e){if(!e.aborted)return;if(e.reason!==void 0)return e.reason;let t=new Error("This operation was aborted");return t.name="AbortError",t}function At(){return{get(e){return e.id in this?this[e.id]:e.defaultValue},set(e,t){return this[e.id]=t,this},delete(e){return delete this[e.id],this}}}function Ko(e,t,...n){if(n.length>0)throw new Error;return e.services[t]}function Ct(e,t){return e.toString().replace(/\/?$/,`/${t.parent.typeName}/${t.name}`)}function Wn(e,t){return k(e,t)}function Uo(e,t){function n(r){return r.done===!0?r:{done:r.done,value:Wn(e,r.value)}}return{[Symbol.asyncIterator](){let r=t[Symbol.asyncIterator](),o={next:()=>r.next().then(n)};return r.throw!==void 0&&(o.throw=a=>r.throw(a).then(n)),r.return!==void 0&&(o.return=a=>r.return(a).then(n)),o}}}function En(e,t){if(!t)return e;for(let n of t.concat().reverse())e=n(e);return e}function Vt(e){var t;let n=Object.assign({},e);return(t=n.ignoreUnknownFields)!==null&&t!==void 0||(n.ignoreUnknownFields=!0),n}function xt(e,t,n,r){let o=t?To(e.input,r):Do(e.input,n);return{parse:(t?To(e.output,r):Do(e.output,n)).parse,serialize:o.serialize}}function To(e,t){return{parse(n){try{return ae(e,n,t)}catch(r){let o=r instanceof Error?r.message:String(r);throw new W(`parse binary: ${o}`,C.Internal)}},serialize(n){try{return Ne(e,n,t)}catch(r){let o=r instanceof Error?r.message:String(r);throw new W(`serialize binary: ${o}`,C.Internal)}}}}function Do(e,t){var n,r;let o=(n=t?.textEncoder)!==null&&n!==void 0?n:new TextEncoder,a=(r=t?.textDecoder)!==null&&r!==void 0?r:new TextDecoder,i=Vt(t);return{parse(s){try{let u=a.decode(s);return Wo(e,u,i)}catch(u){throw W.from(u,C.InvalidArgument)}},serialize(s){try{let u=Vo(e,s,i);return o.encode(u)}catch(u){throw W.from(u,C.Internal)}}}}var ys=/^application\/(connect\+)?(?:(json)(?:; ?charset=utf-?8)?|(proto))$/i;var Qo="application/proto",_o="application/json",Oo="application/connect+proto",Po="application/connect+json";function jo(e){let t=e?.match(ys);if(!t)return;let n=!!t[1],r=!!t[3];return{stream:n,binary:r}}function Ke(e,t,n){var r;if(t&&new Headers(t).forEach((s,u)=>n.metadata.append(u,s)),typeof e!="object"||e==null||Array.isArray(e))throw n;let o=n.code;"code"in e&&typeof e.code=="string"&&(o=(r=ko(e.code))!==null&&r!==void 0?r:o);let a=e.message;if(a!=null&&typeof a!="string")throw n;let i=new W(a??"",o,t);if("details"in e&&Array.isArray(e.details))for(let s of e.details){if(s===null||typeof s!="object"||Array.isArray(s)||typeof s.type!="string"||typeof s.value!="string")throw n;try{i.details.push({type:s.type,value:ge(s.value),debug:s.debug})}catch{throw n}}return i}var St=2;function Jn(e){let t=new W("invalid end stream",C.Unknown),n;try{n=JSON.parse(typeof e=="string"?e:new TextDecoder().decode(e))}catch{throw t}if(typeof n!="object"||n==null||Array.isArray(n))throw t;let r=new Headers;if("metadata"in n){if(typeof n.metadata!="object"||n.metadata==null||Array.isArray(n.metadata))throw t;for(let[a,i]of Object.entries(n.metadata)){if(!Array.isArray(i)||i.some(s=>typeof s!="string"))throw t;for(let s of i)r.append(a,s)}}let o="error"in n&&n.error!=null?Ke(n.error,r,t):void 0;return{metadata:r,error:o}}var ue="Content-Type",$o="Content-Length",Ue="Content-Encoding";var vn="Accept-Encoding";var qo="Connect-Timeout-Ms",Xt="Connect-Protocol-Version",Rn="User-Agent";function ea(e){switch(e){case 400:return C.Internal;case 401:return C.Unauthenticated;case 403:return C.PermissionDenied;case 404:return C.Unimplemented;case 429:return C.Unavailable;case 502:return C.Unavailable;case 503:return C.Unavailable;case 504:return C.Unavailable;default:return C.Unknown}}function Bt(e){let t=new Headers,n=new Headers;return e.forEach((r,o)=>{o.toLowerCase().startsWith("trailer-")?n.append(o.substring(8),r):t.append(o,r)}),[t,n]}var Wt="1";function Et(e,t,n,r,o){let a=new Headers(r??{});return n!==void 0&&a.set(qo,`${n}`),a.set(ue,e=="unary"?t?Qo:_o:t?Oo:Po),a.set(Xt,Wt),!a.has(Rn)&&o&&a.set(Rn,"connect-es/2.1.1"),a}function Jt(e,t,n,r){let o=r.get(ue),a=jo(o);if(n!==200){let s=new W(`HTTP ${n}`,ea(n),r);if(e=="unary"&&a&&!a.binary)return{isUnaryError:!0,unaryError:s};throw s}let i={binary:t,stream:e!=="unary"};if(a?.binary!==i.binary||a.stream!==i.stream)throw new W(`unsupported content type ${o}`,a===void 0?C.Unknown:C.Internal,r);return{isUnaryError:!1}}var ta="application/";function Zs(e,t){return t?Re(e,"url"):encodeURIComponent(new TextDecoder().decode(e))}function wn(e,t,n){let r=`?connect=v${Wt}`,o=e.header.get(ue);o?.indexOf(ta)===0&&(r+="&encoding="+encodeURIComponent(o.slice(ta.length)));let a=e.header.get(Ue);a!==null&&a!=="identity"&&(r+="&compression="+encodeURIComponent(a),n=!0),n&&(r+="&base64=1"),r+="&message="+Zs(t,n);let i=e.url+r,s=new Headers(e.header);for(let u of[Xt,ue,$o,Ue,vn])s.delete(u);return Object.assign(Object.assign({},e),{requestMethod:"GET",url:i,header:s})}function kn(e){let t=En(e.next,e.interceptors),[n,r,o]=na(e),a=Object.assign(Object.assign({},e.req),{message:Wn(e.req.method.input,e.req.message),signal:n});return t(a).then(i=>(o(),i),r)}function Fn(e){let t=En(e.next,e.interceptors),[n,r,o]=na(e),a=Object.assign(Object.assign({},e.req),{message:Uo(e.req.method.input,e.req.message),signal:n}),i=!1;return n.addEventListener("abort",function(){var s,u;let m=e.req.message[Symbol.asyncIterator]();i||(s=m.throw)===null||s===void 0||s.call(m,this.reason).catch(()=>{}),(u=m.return)===null||u===void 0||u.call(m).catch(()=>{})}),t(a).then(s=>Object.assign(Object.assign({},s),{message:{[Symbol.asyncIterator](){let u=s.message[Symbol.asyncIterator]();return{next(){return u.next().then(m=>(m.done==!0&&(i=!0,o()),m),r)}}}}}),r)}function na(e){let{signal:t,cleanup:n}=zo(e.timeoutMs),r=Lo(e.signal,t);return[r.signal,function(a){let i=W.from(t.aborted?Bn(t):a);return r.abort(i),n(),Promise.reject(i)},function(){n(),r.abort()}]}var vt=w("ChtidWYvdmFsaWRhdGUvdmFsaWRhdGUucHJvdG8SDGJ1Zi52YWxpZGF0ZSI3CgRSdWxlEgoKAmlkGAEgASgJEg8KB21lc3NhZ2UYAiABKAkSEgoKZXhwcmVzc2lvbhgDIAEoCSKGAQoMTWVzc2FnZVJ1bGVzEhYKDmNlbF9leHByZXNzaW9uGAUgAygJEh8KA2NlbBgDIAMoCzISLmJ1Zi52YWxpZGF0ZS5SdWxlEi0KBW9uZW9mGAQgAygLMh4uYnVmLnZhbGlkYXRlLk1lc3NhZ2VPbmVvZlJ1bGVKBAgBEAJSCGRpc2FibGVkIjQKEE1lc3NhZ2VPbmVvZlJ1bGUSDgoGZmllbGRzGAEgAygJEhAKCHJlcXVpcmVkGAIgASgIIh4KCk9uZW9mUnVsZXMSEAoIcmVxdWlyZWQYASABKAgiiwkKCkZpZWxkUnVsZXMSFgoOY2VsX2V4cHJlc3Npb24YHSADKAkSHwoDY2VsGBcgAygLMhIuYnVmLnZhbGlkYXRlLlJ1bGUSEAoIcmVxdWlyZWQYGSABKAgSJAoGaWdub3JlGBsgASgOMhQuYnVmLnZhbGlkYXRlLklnbm9yZRIpCgVmbG9hdBgBIAEoCzIYLmJ1Zi52YWxpZGF0ZS5GbG9hdFJ1bGVzSAASKwoGZG91YmxlGAIgASgLMhkuYnVmLnZhbGlkYXRlLkRvdWJsZVJ1bGVzSAASKQoFaW50MzIYAyABKAsyGC5idWYudmFsaWRhdGUuSW50MzJSdWxlc0gAEikKBWludDY0GAQgASgLMhguYnVmLnZhbGlkYXRlLkludDY0UnVsZXNIABIrCgZ1aW50MzIYBSABKAsyGS5idWYudmFsaWRhdGUuVUludDMyUnVsZXNIABIrCgZ1aW50NjQYBiABKAsyGS5idWYudmFsaWRhdGUuVUludDY0UnVsZXNIABIrCgZzaW50MzIYByABKAsyGS5idWYudmFsaWRhdGUuU0ludDMyUnVsZXNIABIrCgZzaW50NjQYCCABKAsyGS5idWYudmFsaWRhdGUuU0ludDY0UnVsZXNIABItCgdmaXhlZDMyGAkgASgLMhouYnVmLnZhbGlkYXRlLkZpeGVkMzJSdWxlc0gAEi0KB2ZpeGVkNjQYCiABKAsyGi5idWYudmFsaWRhdGUuRml4ZWQ2NFJ1bGVzSAASLwoIc2ZpeGVkMzIYCyABKAsyGy5idWYudmFsaWRhdGUuU0ZpeGVkMzJSdWxlc0gAEi8KCHNmaXhlZDY0GAwgASgLMhsuYnVmLnZhbGlkYXRlLlNGaXhlZDY0UnVsZXNIABInCgRib29sGA0gASgLMhcuYnVmLnZhbGlkYXRlLkJvb2xSdWxlc0gAEisKBnN0cmluZxgOIAEoCzIZLmJ1Zi52YWxpZGF0ZS5TdHJpbmdSdWxlc0gAEikKBWJ5dGVzGA8gASgLMhguYnVmLnZhbGlkYXRlLkJ5dGVzUnVsZXNIABInCgRlbnVtGBAgASgLMhcuYnVmLnZhbGlkYXRlLkVudW1SdWxlc0gAEi8KCHJlcGVhdGVkGBIgASgLMhsuYnVmLnZhbGlkYXRlLlJlcGVhdGVkUnVsZXNIABIlCgNtYXAYEyABKAsyFi5idWYudmFsaWRhdGUuTWFwUnVsZXNIABIlCgNhbnkYFCABKAsyFi5idWYudmFsaWRhdGUuQW55UnVsZXNIABIvCghkdXJhdGlvbhgVIAEoCzIbLmJ1Zi52YWxpZGF0ZS5EdXJhdGlvblJ1bGVzSAASMgoKZmllbGRfbWFzaxgcIAEoCzIcLmJ1Zi52YWxpZGF0ZS5GaWVsZE1hc2tSdWxlc0gAEjEKCXRpbWVzdGFtcBgWIAEoCzIcLmJ1Zi52YWxpZGF0ZS5UaW1lc3RhbXBSdWxlc0gAQgYKBHR5cGVKBAgYEBlKBAgaEBtSB3NraXBwZWRSDGlnbm9yZV9lbXB0eSJVCg9QcmVkZWZpbmVkUnVsZXMSHwoDY2VsGAEgAygLMhIuYnVmLnZhbGlkYXRlLlJ1bGVKBAgYEBlKBAgaEBtSB3NraXBwZWRSDGlnbm9yZV9lbXB0eSLaFwoKRmxvYXRSdWxlcxKDAQoFY29uc3QYASABKAJCdMJIcQpvCgtmbG9hdC5jb25zdBpgdGhpcyAhPSBnZXRGaWVsZChydWxlcywgJ2NvbnN0JykgPyAndmFsdWUgbXVzdCBlcXVhbCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2NvbnN0JyldKSA6ICcnEp8BCgJsdBgCIAEoAkKQAcJIjAEKiQEKCGZsb2F0Lmx0Gn0haGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgKHRoaXMuaXNOYW4oKSB8fCB0aGlzID49IHJ1bGVzLmx0KT8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmx0XSkgOiAnJ0gAEq8BCgNsdGUYAyABKAJCnwHCSJsBCpgBCglmbG9hdC5sdGUaigEhaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgKHRoaXMuaXNOYW4oKSB8fCB0aGlzID4gcnVsZXMubHRlKT8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmx0ZV0pIDogJydIABLvBwoCZ3QYBCABKAJC4AfCSNwHCo0BCghmbG9hdC5ndBqAASFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiAodGhpcy5pc05hbigpIHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RdKSA6ICcnCsMBCgtmbG9hdC5ndF9sdBqzAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3QgJiYgKHRoaXMuaXNOYW4oKSB8fCB0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCs0BChVmbG9hdC5ndF9sdF9leGNsdXNpdmUaswFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3QgJiYgKHRoaXMuaXNOYW4oKSB8fCAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwrTAQoMZmxvYXQuZ3RfbHRlGsIBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ICYmICh0aGlzLmlzTmFuKCkgfHwgdGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJycK3QEKFmZsb2F0Lmd0X2x0ZV9leGNsdXNpdmUawgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndCAmJiAodGhpcy5pc05hbigpIHx8IChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJ0gBEroICgNndGUYBSABKAJCqgjCSKYICpsBCglmbG9hdC5ndGUajQEhaGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgKHRoaXMuaXNOYW4oKSB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZV0pIDogJycK0gEKDGZsb2F0Lmd0ZV9sdBrBAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3RlICYmICh0aGlzLmlzTmFuKCkgfHwgdGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycK3AEKFmZsb2F0Lmd0ZV9sdF9leGNsdXNpdmUawQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3RlICYmICh0aGlzLmlzTmFuKCkgfHwgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSkpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCuIBCg1mbG9hdC5ndGVfbHRlGtABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ZSAmJiAodGhpcy5pc05hbigpIHx8IHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJwrsAQoXZmxvYXQuZ3RlX2x0ZV9leGNsdXNpdmUa0AFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndGUgJiYgKHRoaXMuaXNOYW4oKSB8fCAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnSAESfwoCaW4YBiADKAJCc8JIcApuCghmbG9hdC5pbhpiISh0aGlzIGluIGdldEZpZWxkKHJ1bGVzLCAnaW4nKSkgPyAndmFsdWUgbXVzdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnaW4nKV0pIDogJycSdgoGbm90X2luGAcgAygCQmbCSGMKYQoMZmxvYXQubm90X2luGlF0aGlzIGluIHJ1bGVzLm5vdF9pbiA/ICd2YWx1ZSBtdXN0IG5vdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW3J1bGVzLm5vdF9pbl0pIDogJycSdQoGZmluaXRlGAggASgIQmXCSGIKYAoMZmxvYXQuZmluaXRlGlBydWxlcy5maW5pdGUgPyAodGhpcy5pc05hbigpIHx8IHRoaXMuaXNJbmYoKSA/ICd2YWx1ZSBtdXN0IGJlIGZpbml0ZScgOiAnJykgOiAnJxIrCgdleGFtcGxlGAkgAygCQhrCSBcKFQoNZmxvYXQuZXhhbXBsZRoEdHJ1ZSoJCOgHEICAgIACQgsKCWxlc3NfdGhhbkIOCgxncmVhdGVyX3RoYW4i7RcKC0RvdWJsZVJ1bGVzEoQBCgVjb25zdBgBIAEoAUJ1wkhyCnAKDGRvdWJsZS5jb25zdBpgdGhpcyAhPSBnZXRGaWVsZChydWxlcywgJ2NvbnN0JykgPyAndmFsdWUgbXVzdCBlcXVhbCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2NvbnN0JyldKSA6ICcnEqABCgJsdBgCIAEoAUKRAcJIjQEKigEKCWRvdWJsZS5sdBp9IWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmICh0aGlzLmlzTmFuKCkgfHwgdGhpcyA+PSBydWxlcy5sdCk/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5sdF0pIDogJydIABKwAQoDbHRlGAMgASgBQqABwkicAQqZAQoKZG91YmxlLmx0ZRqKASFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiAodGhpcy5pc05hbigpIHx8IHRoaXMgPiBydWxlcy5sdGUpPyAndmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMubHRlXSkgOiAnJ0gAEvQHCgJndBgEIAEoAULlB8JI4QcKjgEKCWRvdWJsZS5ndBqAASFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiAodGhpcy5pc05hbigpIHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RdKSA6ICcnCsQBCgxkb3VibGUuZ3RfbHQaswFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ICYmICh0aGlzLmlzTmFuKCkgfHwgdGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwrOAQoWZG91YmxlLmd0X2x0X2V4Y2x1c2l2ZRqzAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndCAmJiAodGhpcy5pc05hbigpIHx8IChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCtQBCg1kb3VibGUuZ3RfbHRlGsIBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ICYmICh0aGlzLmlzTmFuKCkgfHwgdGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJycK3gEKF2RvdWJsZS5ndF9sdGVfZXhjbHVzaXZlGsIBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3QgJiYgKHRoaXMuaXNOYW4oKSB8fCAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJydIARK/CAoDZ3RlGAUgASgBQq8IwkirCAqcAQoKZG91YmxlLmd0ZRqNASFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiAodGhpcy5pc05hbigpIHx8IHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlXSkgOiAnJwrTAQoNZG91YmxlLmd0ZV9sdBrBAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3RlICYmICh0aGlzLmlzTmFuKCkgfHwgdGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycK3QEKF2RvdWJsZS5ndGVfbHRfZXhjbHVzaXZlGsEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ZSAmJiAodGhpcy5pc05hbigpIHx8IChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrjAQoOZG91YmxlLmd0ZV9sdGUa0AFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3RlICYmICh0aGlzLmlzTmFuKCkgfHwgdGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnCu0BChhkb3VibGUuZ3RlX2x0ZV9leGNsdXNpdmUa0AFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndGUgJiYgKHRoaXMuaXNOYW4oKSB8fCAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnSAESgAEKAmluGAYgAygBQnTCSHEKbwoJZG91YmxlLmluGmIhKHRoaXMgaW4gZ2V0RmllbGQocnVsZXMsICdpbicpKSA/ICd2YWx1ZSBtdXN0IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdpbicpXSkgOiAnJxJ3CgZub3RfaW4YByADKAFCZ8JIZApiCg1kb3VibGUubm90X2luGlF0aGlzIGluIHJ1bGVzLm5vdF9pbiA/ICd2YWx1ZSBtdXN0IG5vdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW3J1bGVzLm5vdF9pbl0pIDogJycSdgoGZmluaXRlGAggASgIQmbCSGMKYQoNZG91YmxlLmZpbml0ZRpQcnVsZXMuZmluaXRlID8gKHRoaXMuaXNOYW4oKSB8fCB0aGlzLmlzSW5mKCkgPyAndmFsdWUgbXVzdCBiZSBmaW5pdGUnIDogJycpIDogJycSLAoHZXhhbXBsZRgJIAMoAUIbwkgYChYKDmRvdWJsZS5leGFtcGxlGgR0cnVlKgkI6AcQgICAgAJCCwoJbGVzc190aGFuQg4KDGdyZWF0ZXJfdGhhbiKMFQoKSW50MzJSdWxlcxKDAQoFY29uc3QYASABKAVCdMJIcQpvCgtpbnQzMi5jb25zdBpgdGhpcyAhPSBnZXRGaWVsZChydWxlcywgJ2NvbnN0JykgPyAndmFsdWUgbXVzdCBlcXVhbCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2NvbnN0JyldKSA6ICcnEooBCgJsdBgCIAEoBUJ8wkh5CncKCGludDMyLmx0GmshaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+PSBydWxlcy5sdD8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmx0XSkgOiAnJ0gAEpwBCgNsdGUYAyABKAVCjAHCSIgBCoUBCglpbnQzMi5sdGUaeCFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiB0aGlzID4gcnVsZXMubHRlPyAndmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMubHRlXSkgOiAnJ0gAEpcHCgJndBgEIAEoBUKIB8JIhAcKegoIaW50MzIuZ3QabiFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDw9IHJ1bGVzLmd0PyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RdKSA6ICcnCrMBCgtpbnQzMi5ndF9sdBqjAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKuwEKFWludDMyLmd0X2x0X2V4Y2x1c2l2ZRqhAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndCAmJiAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCsMBCgxpbnQzMi5ndF9sdGUasgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnCssBChZpbnQzMi5ndF9sdGVfZXhjbHVzaXZlGrABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJydIARLjBwoDZ3RlGAUgASgFQtMHwkjPBwqIAQoJaW50MzIuZ3RlGnshaGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8IHJ1bGVzLmd0ZT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZV0pIDogJycKwgEKDGludDMyLmd0ZV9sdBqxAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3RlICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrKAQoWaW50MzIuZ3RlX2x0X2V4Y2x1c2l2ZRqvAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycK0gEKDWludDMyLmd0ZV9sdGUawAFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3RlICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJycK2gEKF2ludDMyLmd0ZV9sdGVfZXhjbHVzaXZlGr4BaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJ0gBEn8KAmluGAYgAygFQnPCSHAKbgoIaW50MzIuaW4aYiEodGhpcyBpbiBnZXRGaWVsZChydWxlcywgJ2luJykpID8gJ3ZhbHVlIG11c3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2luJyldKSA6ICcnEnYKBm5vdF9pbhgHIAMoBUJmwkhjCmEKDGludDMyLm5vdF9pbhpRdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAndmFsdWUgbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnEisKB2V4YW1wbGUYCCADKAVCGsJIFwoVCg1pbnQzMi5leGFtcGxlGgR0cnVlKgkI6AcQgICAgAJCCwoJbGVzc190aGFuQg4KDGdyZWF0ZXJfdGhhbiKMFQoKSW50NjRSdWxlcxKDAQoFY29uc3QYASABKANCdMJIcQpvCgtpbnQ2NC5jb25zdBpgdGhpcyAhPSBnZXRGaWVsZChydWxlcywgJ2NvbnN0JykgPyAndmFsdWUgbXVzdCBlcXVhbCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2NvbnN0JyldKSA6ICcnEooBCgJsdBgCIAEoA0J8wkh5CncKCGludDY0Lmx0GmshaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+PSBydWxlcy5sdD8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmx0XSkgOiAnJ0gAEpwBCgNsdGUYAyABKANCjAHCSIgBCoUBCglpbnQ2NC5sdGUaeCFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiB0aGlzID4gcnVsZXMubHRlPyAndmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMubHRlXSkgOiAnJ0gAEpcHCgJndBgEIAEoA0KIB8JIhAcKegoIaW50NjQuZ3QabiFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDw9IHJ1bGVzLmd0PyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RdKSA6ICcnCrMBCgtpbnQ2NC5ndF9sdBqjAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKuwEKFWludDY0Lmd0X2x0X2V4Y2x1c2l2ZRqhAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndCAmJiAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCsMBCgxpbnQ2NC5ndF9sdGUasgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnCssBChZpbnQ2NC5ndF9sdGVfZXhjbHVzaXZlGrABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJydIARLjBwoDZ3RlGAUgASgDQtMHwkjPBwqIAQoJaW50NjQuZ3RlGnshaGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8IHJ1bGVzLmd0ZT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZV0pIDogJycKwgEKDGludDY0Lmd0ZV9sdBqxAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3RlICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrKAQoWaW50NjQuZ3RlX2x0X2V4Y2x1c2l2ZRqvAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycK0gEKDWludDY0Lmd0ZV9sdGUawAFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3RlICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJycK2gEKF2ludDY0Lmd0ZV9sdGVfZXhjbHVzaXZlGr4BaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJ0gBEn8KAmluGAYgAygDQnPCSHAKbgoIaW50NjQuaW4aYiEodGhpcyBpbiBnZXRGaWVsZChydWxlcywgJ2luJykpID8gJ3ZhbHVlIG11c3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2luJyldKSA6ICcnEnYKBm5vdF9pbhgHIAMoA0JmwkhjCmEKDGludDY0Lm5vdF9pbhpRdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAndmFsdWUgbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnEisKB2V4YW1wbGUYCSADKANCGsJIFwoVCg1pbnQ2NC5leGFtcGxlGgR0cnVlKgkI6AcQgICAgAJCCwoJbGVzc190aGFuQg4KDGdyZWF0ZXJfdGhhbiKeFQoLVUludDMyUnVsZXMShAEKBWNvbnN0GAEgASgNQnXCSHIKcAoMdWludDMyLmNvbnN0GmB0aGlzICE9IGdldEZpZWxkKHJ1bGVzLCAnY29uc3QnKSA/ICd2YWx1ZSBtdXN0IGVxdWFsICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnY29uc3QnKV0pIDogJycSiwEKAmx0GAIgASgNQn3CSHoKeAoJdWludDMyLmx0GmshaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+PSBydWxlcy5sdD8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmx0XSkgOiAnJ0gAEp0BCgNsdGUYAyABKA1CjQHCSIkBCoYBCgp1aW50MzIubHRlGnghaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+IHJ1bGVzLmx0ZT8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmx0ZV0pIDogJydIABKcBwoCZ3QYBCABKA1CjQfCSIkHCnsKCXVpbnQzMi5ndBpuIWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPD0gcnVsZXMuZ3Q/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndF0pIDogJycKtAEKDHVpbnQzMi5ndF9sdBqjAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKvAEKFnVpbnQzMi5ndF9sdF9leGNsdXNpdmUaoQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwrEAQoNdWludDMyLmd0X2x0ZRqyAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndCAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJycKzAEKF3VpbnQzMi5ndF9sdGVfZXhjbHVzaXZlGrABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJydIARLoBwoDZ3RlGAUgASgNQtgHwkjUBwqJAQoKdWludDMyLmd0ZRp7IWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPCBydWxlcy5ndGU/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGVdKSA6ICcnCsMBCg11aW50MzIuZ3RlX2x0GrEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCssBChd1aW50MzIuZ3RlX2x0X2V4Y2x1c2l2ZRqvAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycK0wEKDnVpbnQzMi5ndGVfbHRlGsABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnCtsBChh1aW50MzIuZ3RlX2x0ZV9leGNsdXNpdmUavgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnSAESgAEKAmluGAYgAygNQnTCSHEKbwoJdWludDMyLmluGmIhKHRoaXMgaW4gZ2V0RmllbGQocnVsZXMsICdpbicpKSA/ICd2YWx1ZSBtdXN0IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdpbicpXSkgOiAnJxJ3CgZub3RfaW4YByADKA1CZ8JIZApiCg11aW50MzIubm90X2luGlF0aGlzIGluIHJ1bGVzLm5vdF9pbiA/ICd2YWx1ZSBtdXN0IG5vdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW3J1bGVzLm5vdF9pbl0pIDogJycSLAoHZXhhbXBsZRgIIAMoDUIbwkgYChYKDnVpbnQzMi5leGFtcGxlGgR0cnVlKgkI6AcQgICAgAJCCwoJbGVzc190aGFuQg4KDGdyZWF0ZXJfdGhhbiKeFQoLVUludDY0UnVsZXMShAEKBWNvbnN0GAEgASgEQnXCSHIKcAoMdWludDY0LmNvbnN0GmB0aGlzICE9IGdldEZpZWxkKHJ1bGVzLCAnY29uc3QnKSA/ICd2YWx1ZSBtdXN0IGVxdWFsICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnY29uc3QnKV0pIDogJycSiwEKAmx0GAIgASgEQn3CSHoKeAoJdWludDY0Lmx0GmshaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+PSBydWxlcy5sdD8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmx0XSkgOiAnJ0gAEp0BCgNsdGUYAyABKARCjQHCSIkBCoYBCgp1aW50NjQubHRlGnghaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+IHJ1bGVzLmx0ZT8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmx0ZV0pIDogJydIABKcBwoCZ3QYBCABKARCjQfCSIkHCnsKCXVpbnQ2NC5ndBpuIWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPD0gcnVsZXMuZ3Q/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndF0pIDogJycKtAEKDHVpbnQ2NC5ndF9sdBqjAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKvAEKFnVpbnQ2NC5ndF9sdF9leGNsdXNpdmUaoQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwrEAQoNdWludDY0Lmd0X2x0ZRqyAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndCAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJycKzAEKF3VpbnQ2NC5ndF9sdGVfZXhjbHVzaXZlGrABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJydIARLoBwoDZ3RlGAUgASgEQtgHwkjUBwqJAQoKdWludDY0Lmd0ZRp7IWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPCBydWxlcy5ndGU/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGVdKSA6ICcnCsMBCg11aW50NjQuZ3RlX2x0GrEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCssBChd1aW50NjQuZ3RlX2x0X2V4Y2x1c2l2ZRqvAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycK0wEKDnVpbnQ2NC5ndGVfbHRlGsABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnCtsBChh1aW50NjQuZ3RlX2x0ZV9leGNsdXNpdmUavgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnSAESgAEKAmluGAYgAygEQnTCSHEKbwoJdWludDY0LmluGmIhKHRoaXMgaW4gZ2V0RmllbGQocnVsZXMsICdpbicpKSA/ICd2YWx1ZSBtdXN0IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdpbicpXSkgOiAnJxJ3CgZub3RfaW4YByADKARCZ8JIZApiCg11aW50NjQubm90X2luGlF0aGlzIGluIHJ1bGVzLm5vdF9pbiA/ICd2YWx1ZSBtdXN0IG5vdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW3J1bGVzLm5vdF9pbl0pIDogJycSLAoHZXhhbXBsZRgIIAMoBEIbwkgYChYKDnVpbnQ2NC5leGFtcGxlGgR0cnVlKgkI6AcQgICAgAJCCwoJbGVzc190aGFuQg4KDGdyZWF0ZXJfdGhhbiKeFQoLU0ludDMyUnVsZXMShAEKBWNvbnN0GAEgASgRQnXCSHIKcAoMc2ludDMyLmNvbnN0GmB0aGlzICE9IGdldEZpZWxkKHJ1bGVzLCAnY29uc3QnKSA/ICd2YWx1ZSBtdXN0IGVxdWFsICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnY29uc3QnKV0pIDogJycSiwEKAmx0GAIgASgRQn3CSHoKeAoJc2ludDMyLmx0GmshaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+PSBydWxlcy5sdD8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmx0XSkgOiAnJ0gAEp0BCgNsdGUYAyABKBFCjQHCSIkBCoYBCgpzaW50MzIubHRlGnghaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+IHJ1bGVzLmx0ZT8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmx0ZV0pIDogJydIABKcBwoCZ3QYBCABKBFCjQfCSIkHCnsKCXNpbnQzMi5ndBpuIWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPD0gcnVsZXMuZ3Q/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndF0pIDogJycKtAEKDHNpbnQzMi5ndF9sdBqjAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKvAEKFnNpbnQzMi5ndF9sdF9leGNsdXNpdmUaoQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwrEAQoNc2ludDMyLmd0X2x0ZRqyAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndCAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJycKzAEKF3NpbnQzMi5ndF9sdGVfZXhjbHVzaXZlGrABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJydIARLoBwoDZ3RlGAUgASgRQtgHwkjUBwqJAQoKc2ludDMyLmd0ZRp7IWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPCBydWxlcy5ndGU/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGVdKSA6ICcnCsMBCg1zaW50MzIuZ3RlX2x0GrEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCssBChdzaW50MzIuZ3RlX2x0X2V4Y2x1c2l2ZRqvAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycK0wEKDnNpbnQzMi5ndGVfbHRlGsABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnCtsBChhzaW50MzIuZ3RlX2x0ZV9leGNsdXNpdmUavgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnSAESgAEKAmluGAYgAygRQnTCSHEKbwoJc2ludDMyLmluGmIhKHRoaXMgaW4gZ2V0RmllbGQocnVsZXMsICdpbicpKSA/ICd2YWx1ZSBtdXN0IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdpbicpXSkgOiAnJxJ3CgZub3RfaW4YByADKBFCZ8JIZApiCg1zaW50MzIubm90X2luGlF0aGlzIGluIHJ1bGVzLm5vdF9pbiA/ICd2YWx1ZSBtdXN0IG5vdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW3J1bGVzLm5vdF9pbl0pIDogJycSLAoHZXhhbXBsZRgIIAMoEUIbwkgYChYKDnNpbnQzMi5leGFtcGxlGgR0cnVlKgkI6AcQgICAgAJCCwoJbGVzc190aGFuQg4KDGdyZWF0ZXJfdGhhbiKeFQoLU0ludDY0UnVsZXMShAEKBWNvbnN0GAEgASgSQnXCSHIKcAoMc2ludDY0LmNvbnN0GmB0aGlzICE9IGdldEZpZWxkKHJ1bGVzLCAnY29uc3QnKSA/ICd2YWx1ZSBtdXN0IGVxdWFsICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnY29uc3QnKV0pIDogJycSiwEKAmx0GAIgASgSQn3CSHoKeAoJc2ludDY0Lmx0GmshaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+PSBydWxlcy5sdD8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmx0XSkgOiAnJ0gAEp0BCgNsdGUYAyABKBJCjQHCSIkBCoYBCgpzaW50NjQubHRlGnghaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+IHJ1bGVzLmx0ZT8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmx0ZV0pIDogJydIABKcBwoCZ3QYBCABKBJCjQfCSIkHCnsKCXNpbnQ2NC5ndBpuIWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPD0gcnVsZXMuZ3Q/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndF0pIDogJycKtAEKDHNpbnQ2NC5ndF9sdBqjAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKvAEKFnNpbnQ2NC5ndF9sdF9leGNsdXNpdmUaoQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwrEAQoNc2ludDY0Lmd0X2x0ZRqyAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndCAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJycKzAEKF3NpbnQ2NC5ndF9sdGVfZXhjbHVzaXZlGrABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJydIARLoBwoDZ3RlGAUgASgSQtgHwkjUBwqJAQoKc2ludDY0Lmd0ZRp7IWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPCBydWxlcy5ndGU/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGVdKSA6ICcnCsMBCg1zaW50NjQuZ3RlX2x0GrEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCssBChdzaW50NjQuZ3RlX2x0X2V4Y2x1c2l2ZRqvAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycK0wEKDnNpbnQ2NC5ndGVfbHRlGsABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnCtsBChhzaW50NjQuZ3RlX2x0ZV9leGNsdXNpdmUavgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnSAESgAEKAmluGAYgAygSQnTCSHEKbwoJc2ludDY0LmluGmIhKHRoaXMgaW4gZ2V0RmllbGQocnVsZXMsICdpbicpKSA/ICd2YWx1ZSBtdXN0IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdpbicpXSkgOiAnJxJ3CgZub3RfaW4YByADKBJCZ8JIZApiCg1zaW50NjQubm90X2luGlF0aGlzIGluIHJ1bGVzLm5vdF9pbiA/ICd2YWx1ZSBtdXN0IG5vdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW3J1bGVzLm5vdF9pbl0pIDogJycSLAoHZXhhbXBsZRgIIAMoEkIbwkgYChYKDnNpbnQ2NC5leGFtcGxlGgR0cnVlKgkI6AcQgICAgAJCCwoJbGVzc190aGFuQg4KDGdyZWF0ZXJfdGhhbiKvFQoMRml4ZWQzMlJ1bGVzEoUBCgVjb25zdBgBIAEoB0J2wkhzCnEKDWZpeGVkMzIuY29uc3QaYHRoaXMgIT0gZ2V0RmllbGQocnVsZXMsICdjb25zdCcpID8gJ3ZhbHVlIG11c3QgZXF1YWwgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdjb25zdCcpXSkgOiAnJxKMAQoCbHQYAiABKAdCfsJIewp5CgpmaXhlZDMyLmx0GmshaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+PSBydWxlcy5sdD8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmx0XSkgOiAnJ0gAEp4BCgNsdGUYAyABKAdCjgHCSIoBCocBCgtmaXhlZDMyLmx0ZRp4IWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPiBydWxlcy5sdGU/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5sdGVdKSA6ICcnSAASoQcKAmd0GAQgASgHQpIHwkiOBwp8CgpmaXhlZDMyLmd0Gm4haGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8PSBydWxlcy5ndD8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0XSkgOiAnJwq1AQoNZml4ZWQzMi5ndF9sdBqjAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKvQEKF2ZpeGVkMzIuZ3RfbHRfZXhjbHVzaXZlGqEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKxQEKDmZpeGVkMzIuZ3RfbHRlGrIBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJwrNAQoYZml4ZWQzMi5ndF9sdGVfZXhjbHVzaXZlGrABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJydIARLtBwoDZ3RlGAUgASgHQt0HwkjZBwqKAQoLZml4ZWQzMi5ndGUaeyFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDwgcnVsZXMuZ3RlPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlXSkgOiAnJwrEAQoOZml4ZWQzMi5ndGVfbHQasQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycKzAEKGGZpeGVkMzIuZ3RlX2x0X2V4Y2x1c2l2ZRqvAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycK1AEKD2ZpeGVkMzIuZ3RlX2x0ZRrAAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJwrcAQoZZml4ZWQzMi5ndGVfbHRlX2V4Y2x1c2l2ZRq+AWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJydIARKBAQoCaW4YBiADKAdCdcJIcgpwCgpmaXhlZDMyLmluGmIhKHRoaXMgaW4gZ2V0RmllbGQocnVsZXMsICdpbicpKSA/ICd2YWx1ZSBtdXN0IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdpbicpXSkgOiAnJxJ4CgZub3RfaW4YByADKAdCaMJIZQpjCg5maXhlZDMyLm5vdF9pbhpRdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAndmFsdWUgbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnEi0KB2V4YW1wbGUYCCADKAdCHMJIGQoXCg9maXhlZDMyLmV4YW1wbGUaBHRydWUqCQjoBxCAgICAAkILCglsZXNzX3RoYW5CDgoMZ3JlYXRlcl90aGFuIq8VCgxGaXhlZDY0UnVsZXMShQEKBWNvbnN0GAEgASgGQnbCSHMKcQoNZml4ZWQ2NC5jb25zdBpgdGhpcyAhPSBnZXRGaWVsZChydWxlcywgJ2NvbnN0JykgPyAndmFsdWUgbXVzdCBlcXVhbCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2NvbnN0JyldKSA6ICcnEowBCgJsdBgCIAEoBkJ+wkh7CnkKCmZpeGVkNjQubHQaayFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiB0aGlzID49IHJ1bGVzLmx0PyAndmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMubHRdKSA6ICcnSAASngEKA2x0ZRgDIAEoBkKOAcJIigEKhwEKC2ZpeGVkNjQubHRlGnghaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+IHJ1bGVzLmx0ZT8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmx0ZV0pIDogJydIABKhBwoCZ3QYBCABKAZCkgfCSI4HCnwKCmZpeGVkNjQuZ3QabiFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDw9IHJ1bGVzLmd0PyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RdKSA6ICcnCrUBCg1maXhlZDY0Lmd0X2x0GqMBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndCAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwq9AQoXZml4ZWQ2NC5ndF9sdF9leGNsdXNpdmUaoQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwrFAQoOZml4ZWQ2NC5ndF9sdGUasgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnCs0BChhmaXhlZDY0Lmd0X2x0ZV9leGNsdXNpdmUasAFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndCAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJ0gBEu0HCgNndGUYBSABKAZC3QfCSNkHCooBCgtmaXhlZDY0Lmd0ZRp7IWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPCBydWxlcy5ndGU/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGVdKSA6ICcnCsQBCg5maXhlZDY0Lmd0ZV9sdBqxAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3RlICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrMAQoYZml4ZWQ2NC5ndGVfbHRfZXhjbHVzaXZlGq8BaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrUAQoPZml4ZWQ2NC5ndGVfbHRlGsABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnCtwBChlmaXhlZDY0Lmd0ZV9sdGVfZXhjbHVzaXZlGr4BaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJ0gBEoEBCgJpbhgGIAMoBkJ1wkhyCnAKCmZpeGVkNjQuaW4aYiEodGhpcyBpbiBnZXRGaWVsZChydWxlcywgJ2luJykpID8gJ3ZhbHVlIG11c3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2luJyldKSA6ICcnEngKBm5vdF9pbhgHIAMoBkJowkhlCmMKDmZpeGVkNjQubm90X2luGlF0aGlzIGluIHJ1bGVzLm5vdF9pbiA/ICd2YWx1ZSBtdXN0IG5vdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW3J1bGVzLm5vdF9pbl0pIDogJycSLQoHZXhhbXBsZRgIIAMoBkIcwkgZChcKD2ZpeGVkNjQuZXhhbXBsZRoEdHJ1ZSoJCOgHEICAgIACQgsKCWxlc3NfdGhhbkIOCgxncmVhdGVyX3RoYW4iwBUKDVNGaXhlZDMyUnVsZXMShgEKBWNvbnN0GAEgASgPQnfCSHQKcgoOc2ZpeGVkMzIuY29uc3QaYHRoaXMgIT0gZ2V0RmllbGQocnVsZXMsICdjb25zdCcpID8gJ3ZhbHVlIG11c3QgZXF1YWwgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdjb25zdCcpXSkgOiAnJxKNAQoCbHQYAiABKA9Cf8JIfAp6CgtzZml4ZWQzMi5sdBprIWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPj0gcnVsZXMubHQ/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5sdF0pIDogJydIABKfAQoDbHRlGAMgASgPQo8BwkiLAQqIAQoMc2ZpeGVkMzIubHRlGnghaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+IHJ1bGVzLmx0ZT8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmx0ZV0pIDogJydIABKmBwoCZ3QYBCABKA9ClwfCSJMHCn0KC3NmaXhlZDMyLmd0Gm4haGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8PSBydWxlcy5ndD8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0XSkgOiAnJwq2AQoOc2ZpeGVkMzIuZ3RfbHQaowFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCr4BChhzZml4ZWQzMi5ndF9sdF9leGNsdXNpdmUaoQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwrGAQoPc2ZpeGVkMzIuZ3RfbHRlGrIBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJwrOAQoZc2ZpeGVkMzIuZ3RfbHRlX2V4Y2x1c2l2ZRqwAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnSAES8gcKA2d0ZRgFIAEoD0LiB8JI3gcKiwEKDHNmaXhlZDMyLmd0ZRp7IWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPCBydWxlcy5ndGU/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGVdKSA6ICcnCsUBCg9zZml4ZWQzMi5ndGVfbHQasQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycKzQEKGXNmaXhlZDMyLmd0ZV9sdF9leGNsdXNpdmUarwFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCtUBChBzZml4ZWQzMi5ndGVfbHRlGsABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnCt0BChpzZml4ZWQzMi5ndGVfbHRlX2V4Y2x1c2l2ZRq+AWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJydIARKCAQoCaW4YBiADKA9CdsJIcwpxCgtzZml4ZWQzMi5pbhpiISh0aGlzIGluIGdldEZpZWxkKHJ1bGVzLCAnaW4nKSkgPyAndmFsdWUgbXVzdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnaW4nKV0pIDogJycSeQoGbm90X2luGAcgAygPQmnCSGYKZAoPc2ZpeGVkMzIubm90X2luGlF0aGlzIGluIHJ1bGVzLm5vdF9pbiA/ICd2YWx1ZSBtdXN0IG5vdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW3J1bGVzLm5vdF9pbl0pIDogJycSLgoHZXhhbXBsZRgIIAMoD0IdwkgaChgKEHNmaXhlZDMyLmV4YW1wbGUaBHRydWUqCQjoBxCAgICAAkILCglsZXNzX3RoYW5CDgoMZ3JlYXRlcl90aGFuIsAVCg1TRml4ZWQ2NFJ1bGVzEoYBCgVjb25zdBgBIAEoEEJ3wkh0CnIKDnNmaXhlZDY0LmNvbnN0GmB0aGlzICE9IGdldEZpZWxkKHJ1bGVzLCAnY29uc3QnKSA/ICd2YWx1ZSBtdXN0IGVxdWFsICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnY29uc3QnKV0pIDogJycSjQEKAmx0GAIgASgQQn/CSHwKegoLc2ZpeGVkNjQubHQaayFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiB0aGlzID49IHJ1bGVzLmx0PyAndmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMubHRdKSA6ICcnSAASnwEKA2x0ZRgDIAEoEEKPAcJIiwEKiAEKDHNmaXhlZDY0Lmx0ZRp4IWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPiBydWxlcy5sdGU/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5sdGVdKSA6ICcnSAASpgcKAmd0GAQgASgQQpcHwkiTBwp9CgtzZml4ZWQ2NC5ndBpuIWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPD0gcnVsZXMuZ3Q/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndF0pIDogJycKtgEKDnNmaXhlZDY0Lmd0X2x0GqMBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndCAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwq+AQoYc2ZpeGVkNjQuZ3RfbHRfZXhjbHVzaXZlGqEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKxgEKD3NmaXhlZDY0Lmd0X2x0ZRqyAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndCAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJycKzgEKGXNmaXhlZDY0Lmd0X2x0ZV9leGNsdXNpdmUasAFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndCAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJ0gBEvIHCgNndGUYBSABKBBC4gfCSN4HCosBCgxzZml4ZWQ2NC5ndGUaeyFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDwgcnVsZXMuZ3RlPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlXSkgOiAnJwrFAQoPc2ZpeGVkNjQuZ3RlX2x0GrEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCs0BChlzZml4ZWQ2NC5ndGVfbHRfZXhjbHVzaXZlGq8BaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrVAQoQc2ZpeGVkNjQuZ3RlX2x0ZRrAAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJwrdAQoac2ZpeGVkNjQuZ3RlX2x0ZV9leGNsdXNpdmUavgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnSAESggEKAmluGAYgAygQQnbCSHMKcQoLc2ZpeGVkNjQuaW4aYiEodGhpcyBpbiBnZXRGaWVsZChydWxlcywgJ2luJykpID8gJ3ZhbHVlIG11c3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2luJyldKSA6ICcnEnkKBm5vdF9pbhgHIAMoEEJpwkhmCmQKD3NmaXhlZDY0Lm5vdF9pbhpRdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAndmFsdWUgbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnEi4KB2V4YW1wbGUYCCADKBBCHcJIGgoYChBzZml4ZWQ2NC5leGFtcGxlGgR0cnVlKgkI6AcQgICAgAJCCwoJbGVzc190aGFuQg4KDGdyZWF0ZXJfdGhhbiLHAQoJQm9vbFJ1bGVzEoIBCgVjb25zdBgBIAEoCEJzwkhwCm4KCmJvb2wuY29uc3QaYHRoaXMgIT0gZ2V0RmllbGQocnVsZXMsICdjb25zdCcpID8gJ3ZhbHVlIG11c3QgZXF1YWwgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdjb25zdCcpXSkgOiAnJxIqCgdleGFtcGxlGAIgAygIQhnCSBYKFAoMYm9vbC5leGFtcGxlGgR0cnVlKgkI6AcQgICAgAIiiDkKC1N0cmluZ1J1bGVzEoYBCgVjb25zdBgBIAEoCUJ3wkh0CnIKDHN0cmluZy5jb25zdBpidGhpcyAhPSBnZXRGaWVsZChydWxlcywgJ2NvbnN0JykgPyAndmFsdWUgbXVzdCBlcXVhbCBgJXNgJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnY29uc3QnKV0pIDogJycSfgoDbGVuGBMgASgEQnHCSG4KbAoKc3RyaW5nLmxlbhpedWludCh0aGlzLnNpemUoKSkgIT0gcnVsZXMubGVuID8gJ3ZhbHVlIGxlbmd0aCBtdXN0IGJlICVzIGNoYXJhY3RlcnMnLmZvcm1hdChbcnVsZXMubGVuXSkgOiAnJxKZAQoHbWluX2xlbhgCIAEoBEKHAcJIgwEKgAEKDnN0cmluZy5taW5fbGVuGm51aW50KHRoaXMuc2l6ZSgpKSA8IHJ1bGVzLm1pbl9sZW4gPyAndmFsdWUgbGVuZ3RoIG11c3QgYmUgYXQgbGVhc3QgJXMgY2hhcmFjdGVycycuZm9ybWF0KFtydWxlcy5taW5fbGVuXSkgOiAnJxKXAQoHbWF4X2xlbhgDIAEoBEKFAcJIgQEKfwoOc3RyaW5nLm1heF9sZW4abXVpbnQodGhpcy5zaXplKCkpID4gcnVsZXMubWF4X2xlbiA/ICd2YWx1ZSBsZW5ndGggbXVzdCBiZSBhdCBtb3N0ICVzIGNoYXJhY3RlcnMnLmZvcm1hdChbcnVsZXMubWF4X2xlbl0pIDogJycSmwEKCWxlbl9ieXRlcxgUIAEoBEKHAcJIgwEKgAEKEHN0cmluZy5sZW5fYnl0ZXMabHVpbnQoYnl0ZXModGhpcykuc2l6ZSgpKSAhPSBydWxlcy5sZW5fYnl0ZXMgPyAndmFsdWUgbGVuZ3RoIG11c3QgYmUgJXMgYnl0ZXMnLmZvcm1hdChbcnVsZXMubGVuX2J5dGVzXSkgOiAnJxKjAQoJbWluX2J5dGVzGAQgASgEQo8BwkiLAQqIAQoQc3RyaW5nLm1pbl9ieXRlcxp0dWludChieXRlcyh0aGlzKS5zaXplKCkpIDwgcnVsZXMubWluX2J5dGVzID8gJ3ZhbHVlIGxlbmd0aCBtdXN0IGJlIGF0IGxlYXN0ICVzIGJ5dGVzJy5mb3JtYXQoW3J1bGVzLm1pbl9ieXRlc10pIDogJycSogEKCW1heF9ieXRlcxgFIAEoBEKOAcJIigEKhwEKEHN0cmluZy5tYXhfYnl0ZXMac3VpbnQoYnl0ZXModGhpcykuc2l6ZSgpKSA+IHJ1bGVzLm1heF9ieXRlcyA/ICd2YWx1ZSBsZW5ndGggbXVzdCBiZSBhdCBtb3N0ICVzIGJ5dGVzJy5mb3JtYXQoW3J1bGVzLm1heF9ieXRlc10pIDogJycSjQEKB3BhdHRlcm4YBiABKAlCfMJIeQp3Cg5zdHJpbmcucGF0dGVybhplIXRoaXMubWF0Y2hlcyhydWxlcy5wYXR0ZXJuKSA/ICd2YWx1ZSBkb2VzIG5vdCBtYXRjaCByZWdleCBwYXR0ZXJuIGAlc2AnLmZvcm1hdChbcnVsZXMucGF0dGVybl0pIDogJycShAEKBnByZWZpeBgHIAEoCUJ0wkhxCm8KDXN0cmluZy5wcmVmaXgaXiF0aGlzLnN0YXJ0c1dpdGgocnVsZXMucHJlZml4KSA/ICd2YWx1ZSBkb2VzIG5vdCBoYXZlIHByZWZpeCBgJXNgJy5mb3JtYXQoW3J1bGVzLnByZWZpeF0pIDogJycSggEKBnN1ZmZpeBgIIAEoCUJywkhvCm0KDXN0cmluZy5zdWZmaXgaXCF0aGlzLmVuZHNXaXRoKHJ1bGVzLnN1ZmZpeCkgPyAndmFsdWUgZG9lcyBub3QgaGF2ZSBzdWZmaXggYCVzYCcuZm9ybWF0KFtydWxlcy5zdWZmaXhdKSA6ICcnEpABCghjb250YWlucxgJIAEoCUJ+wkh7CnkKD3N0cmluZy5jb250YWlucxpmIXRoaXMuY29udGFpbnMocnVsZXMuY29udGFpbnMpID8gJ3ZhbHVlIGRvZXMgbm90IGNvbnRhaW4gc3Vic3RyaW5nIGAlc2AnLmZvcm1hdChbcnVsZXMuY29udGFpbnNdKSA6ICcnEpgBCgxub3RfY29udGFpbnMYFyABKAlCgQHCSH4KfAoTc3RyaW5nLm5vdF9jb250YWlucxpldGhpcy5jb250YWlucyhydWxlcy5ub3RfY29udGFpbnMpID8gJ3ZhbHVlIGNvbnRhaW5zIHN1YnN0cmluZyBgJXNgJy5mb3JtYXQoW3J1bGVzLm5vdF9jb250YWluc10pIDogJycSgAEKAmluGAogAygJQnTCSHEKbwoJc3RyaW5nLmluGmIhKHRoaXMgaW4gZ2V0RmllbGQocnVsZXMsICdpbicpKSA/ICd2YWx1ZSBtdXN0IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdpbicpXSkgOiAnJxJ3CgZub3RfaW4YCyADKAlCZ8JIZApiCg1zdHJpbmcubm90X2luGlF0aGlzIGluIHJ1bGVzLm5vdF9pbiA/ICd2YWx1ZSBtdXN0IG5vdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW3J1bGVzLm5vdF9pbl0pIDogJycS3wEKBWVtYWlsGAwgASgIQs0BwkjJAQphCgxzdHJpbmcuZW1haWwSI3ZhbHVlIG11c3QgYmUgYSB2YWxpZCBlbWFpbCBhZGRyZXNzGiwhcnVsZXMuZW1haWwgfHwgdGhpcyA9PSAnJyB8fCB0aGlzLmlzRW1haWwoKQpkChJzdHJpbmcuZW1haWxfZW1wdHkSMnZhbHVlIGlzIGVtcHR5LCB3aGljaCBpcyBub3QgYSB2YWxpZCBlbWFpbCBhZGRyZXNzGhohcnVsZXMuZW1haWwgfHwgdGhpcyAhPSAnJ0gAEucBCghob3N0bmFtZRgNIAEoCELSAcJIzgEKZQoPc3RyaW5nLmhvc3RuYW1lEh52YWx1ZSBtdXN0IGJlIGEgdmFsaWQgaG9zdG5hbWUaMiFydWxlcy5ob3N0bmFtZSB8fCB0aGlzID09ICcnIHx8IHRoaXMuaXNIb3N0bmFtZSgpCmUKFXN0cmluZy5ob3N0bmFtZV9lbXB0eRItdmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIGhvc3RuYW1lGh0hcnVsZXMuaG9zdG5hbWUgfHwgdGhpcyAhPSAnJ0gAEscBCgJpcBgOIAEoCEK4AcJItAEKVQoJc3RyaW5nLmlwEiB2YWx1ZSBtdXN0IGJlIGEgdmFsaWQgSVAgYWRkcmVzcxomIXJ1bGVzLmlwIHx8IHRoaXMgPT0gJycgfHwgdGhpcy5pc0lwKCkKWwoPc3RyaW5nLmlwX2VtcHR5Ei92YWx1ZSBpcyBlbXB0eSwgd2hpY2ggaXMgbm90IGEgdmFsaWQgSVAgYWRkcmVzcxoXIXJ1bGVzLmlwIHx8IHRoaXMgIT0gJydIABLWAQoEaXB2NBgPIAEoCELFAcJIwQEKXAoLc3RyaW5nLmlwdjQSInZhbHVlIG11c3QgYmUgYSB2YWxpZCBJUHY0IGFkZHJlc3MaKSFydWxlcy5pcHY0IHx8IHRoaXMgPT0gJycgfHwgdGhpcy5pc0lwKDQpCmEKEXN0cmluZy5pcHY0X2VtcHR5EjF2YWx1ZSBpcyBlbXB0eSwgd2hpY2ggaXMgbm90IGEgdmFsaWQgSVB2NCBhZGRyZXNzGhkhcnVsZXMuaXB2NCB8fCB0aGlzICE9ICcnSAAS1gEKBGlwdjYYECABKAhCxQHCSMEBClwKC3N0cmluZy5pcHY2EiJ2YWx1ZSBtdXN0IGJlIGEgdmFsaWQgSVB2NiBhZGRyZXNzGikhcnVsZXMuaXB2NiB8fCB0aGlzID09ICcnIHx8IHRoaXMuaXNJcCg2KQphChFzdHJpbmcuaXB2Nl9lbXB0eRIxdmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIElQdjYgYWRkcmVzcxoZIXJ1bGVzLmlwdjYgfHwgdGhpcyAhPSAnJ0gAEr8BCgN1cmkYESABKAhCrwHCSKsBClEKCnN0cmluZy51cmkSGXZhbHVlIG11c3QgYmUgYSB2YWxpZCBVUkkaKCFydWxlcy51cmkgfHwgdGhpcyA9PSAnJyB8fCB0aGlzLmlzVXJpKCkKVgoQc3RyaW5nLnVyaV9lbXB0eRIodmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIFVSSRoYIXJ1bGVzLnVyaSB8fCB0aGlzICE9ICcnSAAScAoHdXJpX3JlZhgSIAEoCEJdwkhaClgKDnN0cmluZy51cmlfcmVmEiN2YWx1ZSBtdXN0IGJlIGEgdmFsaWQgVVJJIFJlZmVyZW5jZRohIXJ1bGVzLnVyaV9yZWYgfHwgdGhpcy5pc1VyaVJlZigpSAASkAIKB2FkZHJlc3MYFSABKAhC/AHCSPgBCoEBCg5zdHJpbmcuYWRkcmVzcxItdmFsdWUgbXVzdCBiZSBhIHZhbGlkIGhvc3RuYW1lLCBvciBpcCBhZGRyZXNzGkAhcnVsZXMuYWRkcmVzcyB8fCB0aGlzID09ICcnIHx8IHRoaXMuaXNIb3N0bmFtZSgpIHx8IHRoaXMuaXNJcCgpCnIKFHN0cmluZy5hZGRyZXNzX2VtcHR5Ejx2YWx1ZSBpcyBlbXB0eSwgd2hpY2ggaXMgbm90IGEgdmFsaWQgaG9zdG5hbWUsIG9yIGlwIGFkZHJlc3MaHCFydWxlcy5hZGRyZXNzIHx8IHRoaXMgIT0gJydIABKYAgoEdXVpZBgWIAEoCEKHAsJIgwIKpQEKC3N0cmluZy51dWlkEhp2YWx1ZSBtdXN0IGJlIGEgdmFsaWQgVVVJRBp6IXJ1bGVzLnV1aWQgfHwgdGhpcyA9PSAnJyB8fCB0aGlzLm1hdGNoZXMoJ15bMC05YS1mQS1GXXs4fS1bMC05YS1mQS1GXXs0fS1bMC05YS1mQS1GXXs0fS1bMC05YS1mQS1GXXs0fS1bMC05YS1mQS1GXXsxMn0kJykKWQoRc3RyaW5nLnV1aWRfZW1wdHkSKXZhbHVlIGlzIGVtcHR5LCB3aGljaCBpcyBub3QgYSB2YWxpZCBVVUlEGhkhcnVsZXMudXVpZCB8fCB0aGlzICE9ICcnSAAS8AEKBXR1dWlkGCEgASgIQt4BwkjaAQpzCgxzdHJpbmcudHV1aWQSInZhbHVlIG11c3QgYmUgYSB2YWxpZCB0cmltbWVkIFVVSUQaPyFydWxlcy50dXVpZCB8fCB0aGlzID09ICcnIHx8IHRoaXMubWF0Y2hlcygnXlswLTlhLWZBLUZdezMyfSQnKQpjChJzdHJpbmcudHV1aWRfZW1wdHkSMXZhbHVlIGlzIGVtcHR5LCB3aGljaCBpcyBub3QgYSB2YWxpZCB0cmltbWVkIFVVSUQaGiFydWxlcy50dXVpZCB8fCB0aGlzICE9ICcnSAASlgIKEWlwX3dpdGhfcHJlZml4bGVuGBogASgIQvgBwkj0AQp4ChhzdHJpbmcuaXBfd2l0aF9wcmVmaXhsZW4SH3ZhbHVlIG11c3QgYmUgYSB2YWxpZCBJUCBwcmVmaXgaOyFydWxlcy5pcF93aXRoX3ByZWZpeGxlbiB8fCB0aGlzID09ICcnIHx8IHRoaXMuaXNJcFByZWZpeCgpCngKHnN0cmluZy5pcF93aXRoX3ByZWZpeGxlbl9lbXB0eRIudmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIElQIHByZWZpeBomIXJ1bGVzLmlwX3dpdGhfcHJlZml4bGVuIHx8IHRoaXMgIT0gJydIABLPAgoTaXB2NF93aXRoX3ByZWZpeGxlbhgbIAEoCEKvAsJIqwIKkwEKGnN0cmluZy5pcHY0X3dpdGhfcHJlZml4bGVuEjV2YWx1ZSBtdXN0IGJlIGEgdmFsaWQgSVB2NCBhZGRyZXNzIHdpdGggcHJlZml4IGxlbmd0aBo+IXJ1bGVzLmlwdjRfd2l0aF9wcmVmaXhsZW4gfHwgdGhpcyA9PSAnJyB8fCB0aGlzLmlzSXBQcmVmaXgoNCkKkgEKIHN0cmluZy5pcHY0X3dpdGhfcHJlZml4bGVuX2VtcHR5EkR2YWx1ZSBpcyBlbXB0eSwgd2hpY2ggaXMgbm90IGEgdmFsaWQgSVB2NCBhZGRyZXNzIHdpdGggcHJlZml4IGxlbmd0aBooIXJ1bGVzLmlwdjRfd2l0aF9wcmVmaXhsZW4gfHwgdGhpcyAhPSAnJ0gAEs8CChNpcHY2X3dpdGhfcHJlZml4bGVuGBwgASgIQq8CwkirAgqTAQoac3RyaW5nLmlwdjZfd2l0aF9wcmVmaXhsZW4SNXZhbHVlIG11c3QgYmUgYSB2YWxpZCBJUHY2IGFkZHJlc3Mgd2l0aCBwcmVmaXggbGVuZ3RoGj4hcnVsZXMuaXB2Nl93aXRoX3ByZWZpeGxlbiB8fCB0aGlzID09ICcnIHx8IHRoaXMuaXNJcFByZWZpeCg2KQqSAQogc3RyaW5nLmlwdjZfd2l0aF9wcmVmaXhsZW5fZW1wdHkSRHZhbHVlIGlzIGVtcHR5LCB3aGljaCBpcyBub3QgYSB2YWxpZCBJUHY2IGFkZHJlc3Mgd2l0aCBwcmVmaXggbGVuZ3RoGighcnVsZXMuaXB2Nl93aXRoX3ByZWZpeGxlbiB8fCB0aGlzICE9ICcnSAAS8gEKCWlwX3ByZWZpeBgdIAEoCELcAcJI2AEKbAoQc3RyaW5nLmlwX3ByZWZpeBIfdmFsdWUgbXVzdCBiZSBhIHZhbGlkIElQIHByZWZpeBo3IXJ1bGVzLmlwX3ByZWZpeCB8fCB0aGlzID09ICcnIHx8IHRoaXMuaXNJcFByZWZpeCh0cnVlKQpoChZzdHJpbmcuaXBfcHJlZml4X2VtcHR5Ei52YWx1ZSBpcyBlbXB0eSwgd2hpY2ggaXMgbm90IGEgdmFsaWQgSVAgcHJlZml4Gh4hcnVsZXMuaXBfcHJlZml4IHx8IHRoaXMgIT0gJydIABKDAgoLaXB2NF9wcmVmaXgYHiABKAhC6wHCSOcBCnUKEnN0cmluZy5pcHY0X3ByZWZpeBIhdmFsdWUgbXVzdCBiZSBhIHZhbGlkIElQdjQgcHJlZml4GjwhcnVsZXMuaXB2NF9wcmVmaXggfHwgdGhpcyA9PSAnJyB8fCB0aGlzLmlzSXBQcmVmaXgoNCwgdHJ1ZSkKbgoYc3RyaW5nLmlwdjRfcHJlZml4X2VtcHR5EjB2YWx1ZSBpcyBlbXB0eSwgd2hpY2ggaXMgbm90IGEgdmFsaWQgSVB2NCBwcmVmaXgaICFydWxlcy5pcHY0X3ByZWZpeCB8fCB0aGlzICE9ICcnSAASgwIKC2lwdjZfcHJlZml4GB8gASgIQusBwkjnAQp1ChJzdHJpbmcuaXB2Nl9wcmVmaXgSIXZhbHVlIG11c3QgYmUgYSB2YWxpZCBJUHY2IHByZWZpeBo8IXJ1bGVzLmlwdjZfcHJlZml4IHx8IHRoaXMgPT0gJycgfHwgdGhpcy5pc0lwUHJlZml4KDYsIHRydWUpCm4KGHN0cmluZy5pcHY2X3ByZWZpeF9lbXB0eRIwdmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIElQdjYgcHJlZml4GiAhcnVsZXMuaXB2Nl9wcmVmaXggfHwgdGhpcyAhPSAnJ0gAErUCCg1ob3N0X2FuZF9wb3J0GCAgASgIQpsCwkiXAgqZAQoUc3RyaW5nLmhvc3RfYW5kX3BvcnQSQXZhbHVlIG11c3QgYmUgYSB2YWxpZCBob3N0IChob3N0bmFtZSBvciBJUCBhZGRyZXNzKSBhbmQgcG9ydCBwYWlyGj4hcnVsZXMuaG9zdF9hbmRfcG9ydCB8fCB0aGlzID09ICcnIHx8IHRoaXMuaXNIb3N0QW5kUG9ydCh0cnVlKQp5ChpzdHJpbmcuaG9zdF9hbmRfcG9ydF9lbXB0eRI3dmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIGhvc3QgYW5kIHBvcnQgcGFpchoiIXJ1bGVzLmhvc3RfYW5kX3BvcnQgfHwgdGhpcyAhPSAnJ0gAEvUBCgR1bGlkGCMgASgIQuQBwkjgAQqCAQoLc3RyaW5nLnVsaWQSGnZhbHVlIG11c3QgYmUgYSB2YWxpZCBVTElEGlchcnVsZXMudWxpZCB8fCB0aGlzID09ICcnIHx8IHRoaXMubWF0Y2hlcygnXlswLTddWzAtOUEtSEpLTU5QLVRWLVphLWhqa21ucC10di16XXsyNX0kJykKWQoRc3RyaW5nLnVsaWRfZW1wdHkSKXZhbHVlIGlzIGVtcHR5LCB3aGljaCBpcyBub3QgYSB2YWxpZCBVTElEGhkhcnVsZXMudWxpZCB8fCB0aGlzICE9ICcnSAASqAUKEHdlbGxfa25vd25fcmVnZXgYGCABKA4yGC5idWYudmFsaWRhdGUuS25vd25SZWdleELxBMJI7QQK8AEKI3N0cmluZy53ZWxsX2tub3duX3JlZ2V4LmhlYWRlcl9uYW1lEiZ2YWx1ZSBtdXN0IGJlIGEgdmFsaWQgSFRUUCBoZWFkZXIgbmFtZRqgAXJ1bGVzLndlbGxfa25vd25fcmVnZXggIT0gMSB8fCB0aGlzID09ICcnIHx8IHRoaXMubWF0Y2hlcyghaGFzKHJ1bGVzLnN0cmljdCkgfHwgcnVsZXMuc3RyaWN0ID8nXjo/WzAtOWEtekEtWiEjJCUmXCcqKy0uXl98flx4NjBdKyQnIDonXlteXHUwMDAwXHUwMDBBXHUwMDBEXSskJykKjQEKKXN0cmluZy53ZWxsX2tub3duX3JlZ2V4LmhlYWRlcl9uYW1lX2VtcHR5EjV2YWx1ZSBpcyBlbXB0eSwgd2hpY2ggaXMgbm90IGEgdmFsaWQgSFRUUCBoZWFkZXIgbmFtZRopcnVsZXMud2VsbF9rbm93bl9yZWdleCAhPSAxIHx8IHRoaXMgIT0gJycK5wEKJHN0cmluZy53ZWxsX2tub3duX3JlZ2V4LmhlYWRlcl92YWx1ZRIndmFsdWUgbXVzdCBiZSBhIHZhbGlkIEhUVFAgaGVhZGVyIHZhbHVlGpUBcnVsZXMud2VsbF9rbm93bl9yZWdleCAhPSAyIHx8IHRoaXMubWF0Y2hlcyghaGFzKHJ1bGVzLnN0cmljdCkgfHwgcnVsZXMuc3RyaWN0ID8nXlteXHUwMDAwLVx1MDAwOFx1MDAwQS1cdTAwMUZcdTAwN0ZdKiQnIDonXlteXHUwMDAwXHUwMDBBXHUwMDBEXSokJylIABIOCgZzdHJpY3QYGSABKAgSLAoHZXhhbXBsZRgiIAMoCUIbwkgYChYKDnN0cmluZy5leGFtcGxlGgR0cnVlKgkI6AcQgICAgAJCDAoKd2VsbF9rbm93biLCEgoKQnl0ZXNSdWxlcxKAAQoFY29uc3QYASABKAxCccJIbgpsCgtieXRlcy5jb25zdBpddGhpcyAhPSBnZXRGaWVsZChydWxlcywgJ2NvbnN0JykgPyAndmFsdWUgbXVzdCBiZSAleCcuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2NvbnN0JyldKSA6ICcnEngKA2xlbhgNIAEoBEJrwkhoCmYKCWJ5dGVzLmxlbhpZdWludCh0aGlzLnNpemUoKSkgIT0gcnVsZXMubGVuID8gJ3ZhbHVlIGxlbmd0aCBtdXN0IGJlICVzIGJ5dGVzJy5mb3JtYXQoW3J1bGVzLmxlbl0pIDogJycSkAEKB21pbl9sZW4YAiABKARCf8JIfAp6Cg1ieXRlcy5taW5fbGVuGml1aW50KHRoaXMuc2l6ZSgpKSA8IHJ1bGVzLm1pbl9sZW4gPyAndmFsdWUgbGVuZ3RoIG11c3QgYmUgYXQgbGVhc3QgJXMgYnl0ZXMnLmZvcm1hdChbcnVsZXMubWluX2xlbl0pIDogJycSiAEKB21heF9sZW4YAyABKARCd8JIdApyCg1ieXRlcy5tYXhfbGVuGmF1aW50KHRoaXMuc2l6ZSgpKSA+IHJ1bGVzLm1heF9sZW4gPyAndmFsdWUgbXVzdCBiZSBhdCBtb3N0ICVzIGJ5dGVzJy5mb3JtYXQoW3J1bGVzLm1heF9sZW5dKSA6ICcnEpABCgdwYXR0ZXJuGAQgASgJQn/CSHwKegoNYnl0ZXMucGF0dGVybhppIXN0cmluZyh0aGlzKS5tYXRjaGVzKHJ1bGVzLnBhdHRlcm4pID8gJ3ZhbHVlIG11c3QgbWF0Y2ggcmVnZXggcGF0dGVybiBgJXNgJy5mb3JtYXQoW3J1bGVzLnBhdHRlcm5dKSA6ICcnEoEBCgZwcmVmaXgYBSABKAxCccJIbgpsCgxieXRlcy5wcmVmaXgaXCF0aGlzLnN0YXJ0c1dpdGgocnVsZXMucHJlZml4KSA/ICd2YWx1ZSBkb2VzIG5vdCBoYXZlIHByZWZpeCAleCcuZm9ybWF0KFtydWxlcy5wcmVmaXhdKSA6ICcnEn8KBnN1ZmZpeBgGIAEoDEJvwkhsCmoKDGJ5dGVzLnN1ZmZpeBpaIXRoaXMuZW5kc1dpdGgocnVsZXMuc3VmZml4KSA/ICd2YWx1ZSBkb2VzIG5vdCBoYXZlIHN1ZmZpeCAleCcuZm9ybWF0KFtydWxlcy5zdWZmaXhdKSA6ICcnEoMBCghjb250YWlucxgHIAEoDEJxwkhuCmwKDmJ5dGVzLmNvbnRhaW5zGlohdGhpcy5jb250YWlucyhydWxlcy5jb250YWlucykgPyAndmFsdWUgZG9lcyBub3QgY29udGFpbiAleCcuZm9ybWF0KFtydWxlcy5jb250YWluc10pIDogJycSpwEKAmluGAggAygMQpoBwkiWAQqTAQoIYnl0ZXMuaW4ahgFnZXRGaWVsZChydWxlcywgJ2luJykuc2l6ZSgpID4gMCAmJiAhKHRoaXMgaW4gZ2V0RmllbGQocnVsZXMsICdpbicpKSA/ICd2YWx1ZSBtdXN0IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdpbicpXSkgOiAnJxJ2CgZub3RfaW4YCSADKAxCZsJIYwphCgxieXRlcy5ub3RfaW4aUXRoaXMgaW4gcnVsZXMubm90X2luID8gJ3ZhbHVlIG11c3Qgbm90IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbcnVsZXMubm90X2luXSkgOiAnJxLrAQoCaXAYCiABKAhC3AHCSNgBCnQKCGJ5dGVzLmlwEiB2YWx1ZSBtdXN0IGJlIGEgdmFsaWQgSVAgYWRkcmVzcxpGIXJ1bGVzLmlwIHx8IHRoaXMuc2l6ZSgpID09IDAgfHwgdGhpcy5zaXplKCkgPT0gNCB8fCB0aGlzLnNpemUoKSA9PSAxNgpgCg5ieXRlcy5pcF9lbXB0eRIvdmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIElQIGFkZHJlc3MaHSFydWxlcy5pcCB8fCB0aGlzLnNpemUoKSAhPSAwSAAS5AEKBGlwdjQYCyABKAhC0wHCSM8BCmUKCmJ5dGVzLmlwdjQSInZhbHVlIG11c3QgYmUgYSB2YWxpZCBJUHY0IGFkZHJlc3MaMyFydWxlcy5pcHY0IHx8IHRoaXMuc2l6ZSgpID09IDAgfHwgdGhpcy5zaXplKCkgPT0gNApmChBieXRlcy5pcHY0X2VtcHR5EjF2YWx1ZSBpcyBlbXB0eSwgd2hpY2ggaXMgbm90IGEgdmFsaWQgSVB2NCBhZGRyZXNzGh8hcnVsZXMuaXB2NCB8fCB0aGlzLnNpemUoKSAhPSAwSAAS5QEKBGlwdjYYDCABKAhC1AHCSNABCmYKCmJ5dGVzLmlwdjYSInZhbHVlIG11c3QgYmUgYSB2YWxpZCBJUHY2IGFkZHJlc3MaNCFydWxlcy5pcHY2IHx8IHRoaXMuc2l6ZSgpID09IDAgfHwgdGhpcy5zaXplKCkgPT0gMTYKZgoQYnl0ZXMuaXB2Nl9lbXB0eRIxdmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIElQdjYgYWRkcmVzcxofIXJ1bGVzLmlwdjYgfHwgdGhpcy5zaXplKCkgIT0gMEgAEtUBCgR1dWlkGA8gASgIQsQBwkjAAQpeCgpieXRlcy51dWlkEhp2YWx1ZSBtdXN0IGJlIGEgdmFsaWQgVVVJRBo0IXJ1bGVzLnV1aWQgfHwgdGhpcy5zaXplKCkgPT0gMCB8fCB0aGlzLnNpemUoKSA9PSAxNgpeChBieXRlcy51dWlkX2VtcHR5Eil2YWx1ZSBpcyBlbXB0eSwgd2hpY2ggaXMgbm90IGEgdmFsaWQgVVVJRBofIXJ1bGVzLnV1aWQgfHwgdGhpcy5zaXplKCkgIT0gMEgAEisKB2V4YW1wbGUYDiADKAxCGsJIFwoVCg1ieXRlcy5leGFtcGxlGgR0cnVlKgkI6AcQgICAgAJCDAoKd2VsbF9rbm93biLUAwoJRW51bVJ1bGVzEoIBCgVjb25zdBgBIAEoBUJzwkhwCm4KCmVudW0uY29uc3QaYHRoaXMgIT0gZ2V0RmllbGQocnVsZXMsICdjb25zdCcpID8gJ3ZhbHVlIG11c3QgZXF1YWwgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdjb25zdCcpXSkgOiAnJxIUCgxkZWZpbmVkX29ubHkYAiABKAgSfgoCaW4YAyADKAVCcsJIbwptCgdlbnVtLmluGmIhKHRoaXMgaW4gZ2V0RmllbGQocnVsZXMsICdpbicpKSA/ICd2YWx1ZSBtdXN0IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdpbicpXSkgOiAnJxJ1CgZub3RfaW4YBCADKAVCZcJIYgpgCgtlbnVtLm5vdF9pbhpRdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAndmFsdWUgbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnEioKB2V4YW1wbGUYBSADKAVCGcJIFgoUCgxlbnVtLmV4YW1wbGUaBHRydWUqCQjoBxCAgICAAiL7AwoNUmVwZWF0ZWRSdWxlcxKeAQoJbWluX2l0ZW1zGAEgASgEQooBwkiGAQqDAQoScmVwZWF0ZWQubWluX2l0ZW1zGm11aW50KHRoaXMuc2l6ZSgpKSA8IHJ1bGVzLm1pbl9pdGVtcyA/ICd2YWx1ZSBtdXN0IGNvbnRhaW4gYXQgbGVhc3QgJWQgaXRlbShzKScuZm9ybWF0KFtydWxlcy5taW5faXRlbXNdKSA6ICcnEqIBCgltYXhfaXRlbXMYAiABKARCjgHCSIoBCocBChJyZXBlYXRlZC5tYXhfaXRlbXMacXVpbnQodGhpcy5zaXplKCkpID4gcnVsZXMubWF4X2l0ZW1zID8gJ3ZhbHVlIG11c3QgY29udGFpbiBubyBtb3JlIHRoYW4gJXMgaXRlbShzKScuZm9ybWF0KFtydWxlcy5tYXhfaXRlbXNdKSA6ICcnEnAKBnVuaXF1ZRgDIAEoCEJgwkhdClsKD3JlcGVhdGVkLnVuaXF1ZRIocmVwZWF0ZWQgdmFsdWUgbXVzdCBjb250YWluIHVuaXF1ZSBpdGVtcxoeIXJ1bGVzLnVuaXF1ZSB8fCB0aGlzLnVuaXF1ZSgpEicKBWl0ZW1zGAQgASgLMhguYnVmLnZhbGlkYXRlLkZpZWxkUnVsZXMqCQjoBxCAgICAAiKKAwoITWFwUnVsZXMSjwEKCW1pbl9wYWlycxgBIAEoBEJ8wkh5CncKDW1hcC5taW5fcGFpcnMaZnVpbnQodGhpcy5zaXplKCkpIDwgcnVsZXMubWluX3BhaXJzID8gJ21hcCBtdXN0IGJlIGF0IGxlYXN0ICVkIGVudHJpZXMnLmZvcm1hdChbcnVsZXMubWluX3BhaXJzXSkgOiAnJxKOAQoJbWF4X3BhaXJzGAIgASgEQnvCSHgKdgoNbWFwLm1heF9wYWlycxpldWludCh0aGlzLnNpemUoKSkgPiBydWxlcy5tYXhfcGFpcnMgPyAnbWFwIG11c3QgYmUgYXQgbW9zdCAlZCBlbnRyaWVzJy5mb3JtYXQoW3J1bGVzLm1heF9wYWlyc10pIDogJycSJgoEa2V5cxgEIAEoCzIYLmJ1Zi52YWxpZGF0ZS5GaWVsZFJ1bGVzEigKBnZhbHVlcxgFIAEoCzIYLmJ1Zi52YWxpZGF0ZS5GaWVsZFJ1bGVzKgkI6AcQgICAgAIiJgoIQW55UnVsZXMSCgoCaW4YAiADKAkSDgoGbm90X2luGAMgAygJIpkXCg1EdXJhdGlvblJ1bGVzEqEBCgVjb25zdBgCIAEoCzIZLmdvb2dsZS5wcm90b2J1Zi5EdXJhdGlvbkJ3wkh0CnIKDmR1cmF0aW9uLmNvbnN0GmB0aGlzICE9IGdldEZpZWxkKHJ1bGVzLCAnY29uc3QnKSA/ICd2YWx1ZSBtdXN0IGVxdWFsICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnY29uc3QnKV0pIDogJycSqAEKAmx0GAMgASgLMhkuZ29vZ2xlLnByb3RvYnVmLkR1cmF0aW9uQn/CSHwKegoLZHVyYXRpb24ubHQaayFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiB0aGlzID49IHJ1bGVzLmx0PyAndmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMubHRdKSA6ICcnSAASugEKA2x0ZRgEIAEoCzIZLmdvb2dsZS5wcm90b2J1Zi5EdXJhdGlvbkKPAcJIiwEKiAEKDGR1cmF0aW9uLmx0ZRp4IWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPiBydWxlcy5sdGU/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5sdGVdKSA6ICcnSAASwQcKAmd0GAUgASgLMhkuZ29vZ2xlLnByb3RvYnVmLkR1cmF0aW9uQpcHwkiTBwp9CgtkdXJhdGlvbi5ndBpuIWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPD0gcnVsZXMuZ3Q/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndF0pIDogJycKtgEKDmR1cmF0aW9uLmd0X2x0GqMBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndCAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwq+AQoYZHVyYXRpb24uZ3RfbHRfZXhjbHVzaXZlGqEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKxgEKD2R1cmF0aW9uLmd0X2x0ZRqyAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndCAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJycKzgEKGWR1cmF0aW9uLmd0X2x0ZV9leGNsdXNpdmUasAFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndCAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJ0gBEo0ICgNndGUYBiABKAsyGS5nb29nbGUucHJvdG9idWYuRHVyYXRpb25C4gfCSN4HCosBCgxkdXJhdGlvbi5ndGUaeyFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDwgcnVsZXMuZ3RlPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlXSkgOiAnJwrFAQoPZHVyYXRpb24uZ3RlX2x0GrEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCs0BChlkdXJhdGlvbi5ndGVfbHRfZXhjbHVzaXZlGq8BaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrVAQoQZHVyYXRpb24uZ3RlX2x0ZRrAAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJwrdAQoaZHVyYXRpb24uZ3RlX2x0ZV9leGNsdXNpdmUavgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnSAESnQEKAmluGAcgAygLMhkuZ29vZ2xlLnByb3RvYnVmLkR1cmF0aW9uQnbCSHMKcQoLZHVyYXRpb24uaW4aYiEodGhpcyBpbiBnZXRGaWVsZChydWxlcywgJ2luJykpID8gJ3ZhbHVlIG11c3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2luJyldKSA6ICcnEpQBCgZub3RfaW4YCCADKAsyGS5nb29nbGUucHJvdG9idWYuRHVyYXRpb25CacJIZgpkCg9kdXJhdGlvbi5ub3RfaW4aUXRoaXMgaW4gcnVsZXMubm90X2luID8gJ3ZhbHVlIG11c3Qgbm90IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbcnVsZXMubm90X2luXSkgOiAnJxJJCgdleGFtcGxlGAkgAygLMhkuZ29vZ2xlLnByb3RvYnVmLkR1cmF0aW9uQh3CSBoKGAoQZHVyYXRpb24uZXhhbXBsZRoEdHJ1ZSoJCOgHEICAgIACQgsKCWxlc3NfdGhhbkIOCgxncmVhdGVyX3RoYW4i/QUKDkZpZWxkTWFza1J1bGVzEr8BCgVjb25zdBgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5GaWVsZE1hc2tCkwHCSI8BCowBChBmaWVsZF9tYXNrLmNvbnN0Gnh0aGlzLnBhdGhzICE9IGdldEZpZWxkKHJ1bGVzLCAnY29uc3QnKS5wYXRocyA/ICd2YWx1ZSBtdXN0IGVxdWFsIHBhdGhzICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnY29uc3QnKS5wYXRoc10pIDogJycS2QEKAmluGAIgAygJQswBwkjIAQrFAQoNZmllbGRfbWFzay5pbhqzASF0aGlzLnBhdGhzLmFsbChwLCBwIGluIGdldEZpZWxkKHJ1bGVzLCAnaW4nKSB8fCBnZXRGaWVsZChydWxlcywgJ2luJykuZXhpc3RzKGYsIHAuc3RhcnRzV2l0aChmKycuJykpKSA/ICd2YWx1ZSBtdXN0IG9ubHkgY29udGFpbiBwYXRocyBpbiAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2luJyldKSA6ICcnEvMBCgZub3RfaW4YAyADKAlC4gHCSN4BCtsBChFmaWVsZF9tYXNrLm5vdF9pbhrFASF0aGlzLnBhdGhzLmFsbChwLCAhKHAgaW4gZ2V0RmllbGQocnVsZXMsICdub3RfaW4nKSB8fCBnZXRGaWVsZChydWxlcywgJ25vdF9pbicpLmV4aXN0cyhmLCBwLnN0YXJ0c1dpdGgoZisnLicpKSkpID8gJ3ZhbHVlIG11c3Qgbm90IGNvbnRhaW4gYW55IHBhdGhzIGluICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnbm90X2luJyldKSA6ICcnEkwKB2V4YW1wbGUYBCADKAsyGi5nb29nbGUucHJvdG9idWYuRmllbGRNYXNrQh/CSBwKGgoSZmllbGRfbWFzay5leGFtcGxlGgR0cnVlKgkI6AcQgICAgAIikhgKDlRpbWVzdGFtcFJ1bGVzEqMBCgVjb25zdBgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCeMJIdQpzCg90aW1lc3RhbXAuY29uc3QaYHRoaXMgIT0gZ2V0RmllbGQocnVsZXMsICdjb25zdCcpID8gJ3ZhbHVlIG11c3QgZXF1YWwgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdjb25zdCcpXSkgOiAnJxKrAQoCbHQYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQoABwkh9CnsKDHRpbWVzdGFtcC5sdBprIWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPj0gcnVsZXMubHQ/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5sdF0pIDogJydIABK8AQoDbHRlGAQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEKQAcJIjAEKiQEKDXRpbWVzdGFtcC5sdGUaeCFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiB0aGlzID4gcnVsZXMubHRlPyAndmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMubHRlXSkgOiAnJ0gAEmwKBmx0X25vdxgHIAEoCEJawkhXClUKEHRpbWVzdGFtcC5sdF9ub3caQShydWxlcy5sdF9ub3cgJiYgdGhpcyA+IG5vdykgPyAndmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gbm93JyA6ICcnSAASxwcKAmd0GAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEKcB8JImAcKfgoMdGltZXN0YW1wLmd0Gm4haGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8PSBydWxlcy5ndD8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0XSkgOiAnJwq3AQoPdGltZXN0YW1wLmd0X2x0GqMBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndCAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwq/AQoZdGltZXN0YW1wLmd0X2x0X2V4Y2x1c2l2ZRqhAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndCAmJiAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCscBChB0aW1lc3RhbXAuZ3RfbHRlGrIBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJwrPAQoadGltZXN0YW1wLmd0X2x0ZV9leGNsdXNpdmUasAFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndCAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJ0gBEpMICgNndGUYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQucHwkjjBwqMAQoNdGltZXN0YW1wLmd0ZRp7IWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPCBydWxlcy5ndGU/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGVdKSA6ICcnCsYBChB0aW1lc3RhbXAuZ3RlX2x0GrEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCs4BChp0aW1lc3RhbXAuZ3RlX2x0X2V4Y2x1c2l2ZRqvAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycK1gEKEXRpbWVzdGFtcC5ndGVfbHRlGsABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnCt4BCht0aW1lc3RhbXAuZ3RlX2x0ZV9leGNsdXNpdmUavgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnSAESbwoGZ3Rfbm93GAggASgIQl3CSFoKWAoQdGltZXN0YW1wLmd0X25vdxpEKHJ1bGVzLmd0X25vdyAmJiB0aGlzIDwgbm93KSA/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBub3cnIDogJydIARK4AQoGd2l0aGluGAkgASgLMhkuZ29vZ2xlLnByb3RvYnVmLkR1cmF0aW9uQowBwkiIAQqFAQoQdGltZXN0YW1wLndpdGhpbhpxdGhpcyA8IG5vdy1ydWxlcy53aXRoaW4gfHwgdGhpcyA+IG5vdytydWxlcy53aXRoaW4gPyAndmFsdWUgbXVzdCBiZSB3aXRoaW4gJXMgb2Ygbm93Jy5mb3JtYXQoW3J1bGVzLndpdGhpbl0pIDogJycSSwoHZXhhbXBsZRgKIAMoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCHsJIGwoZChF0aW1lc3RhbXAuZXhhbXBsZRoEdHJ1ZSoJCOgHEICAgIACQgsKCWxlc3NfdGhhbkIOCgxncmVhdGVyX3RoYW4iOQoKVmlvbGF0aW9ucxIrCgp2aW9sYXRpb25zGAEgAygLMhcuYnVmLnZhbGlkYXRlLlZpb2xhdGlvbiKfAQoJVmlvbGF0aW9uEiYKBWZpZWxkGAUgASgLMhcuYnVmLnZhbGlkYXRlLkZpZWxkUGF0aBIlCgRydWxlGAYgASgLMhcuYnVmLnZhbGlkYXRlLkZpZWxkUGF0aBIPCgdydWxlX2lkGAIgASgJEg8KB21lc3NhZ2UYAyABKAkSDwoHZm9yX2tleRgEIAEoCEoECAEQAlIKZmllbGRfcGF0aCI9CglGaWVsZFBhdGgSMAoIZWxlbWVudHMYASADKAsyHi5idWYudmFsaWRhdGUuRmllbGRQYXRoRWxlbWVudCLpAgoQRmllbGRQYXRoRWxlbWVudBIUCgxmaWVsZF9udW1iZXIYASABKAUSEgoKZmllbGRfbmFtZRgCIAEoCRI+CgpmaWVsZF90eXBlGAMgASgOMiouZ29vZ2xlLnByb3RvYnVmLkZpZWxkRGVzY3JpcHRvclByb3RvLlR5cGUSPAoIa2V5X3R5cGUYBCABKA4yKi5nb29nbGUucHJvdG9idWYuRmllbGREZXNjcmlwdG9yUHJvdG8uVHlwZRI+Cgp2YWx1ZV90eXBlGAUgASgOMiouZ29vZ2xlLnByb3RvYnVmLkZpZWxkRGVzY3JpcHRvclByb3RvLlR5cGUSDwoFaW5kZXgYBiABKARIABISCghib29sX2tleRgHIAEoCEgAEhEKB2ludF9rZXkYCCABKANIABISCgh1aW50X2tleRgJIAEoBEgAEhQKCnN0cmluZ19rZXkYCiABKAlIAEILCglzdWJzY3JpcHQqoQEKBklnbm9yZRIWChJJR05PUkVfVU5TUEVDSUZJRUQQABIYChRJR05PUkVfSUZfWkVST19WQUxVRRABEhEKDUlHTk9SRV9BTFdBWVMQAyIECAIQAioMSUdOT1JFX0VNUFRZKg5JR05PUkVfREVGQVVMVCoXSUdOT1JFX0lGX0RFRkFVTFRfVkFMVUUqFUlHTk9SRV9JRl9VTlBPUFVMQVRFRCpuCgpLbm93blJlZ2V4EhsKF0tOT1dOX1JFR0VYX1VOU1BFQ0lGSUVEEAASIAocS05PV05fUkVHRVhfSFRUUF9IRUFERVJfTkFNRRABEiEKHUtOT1dOX1JFR0VYX0hUVFBfSEVBREVSX1ZBTFVFEAI6VgoHbWVzc2FnZRIfLmdvb2dsZS5wcm90b2J1Zi5NZXNzYWdlT3B0aW9ucxiHCSABKAsyGi5idWYudmFsaWRhdGUuTWVzc2FnZVJ1bGVzUgdtZXNzYWdlOk4KBW9uZW9mEh0uZ29vZ2xlLnByb3RvYnVmLk9uZW9mT3B0aW9ucxiHCSABKAsyGC5idWYudmFsaWRhdGUuT25lb2ZSdWxlc1IFb25lb2Y6TgoFZmllbGQSHS5nb29nbGUucHJvdG9idWYuRmllbGRPcHRpb25zGIcJIAEoCzIYLmJ1Zi52YWxpZGF0ZS5GaWVsZFJ1bGVzUgVmaWVsZDpdCgpwcmVkZWZpbmVkEh0uZ29vZ2xlLnByb3RvYnVmLkZpZWxkT3B0aW9ucxiICSABKAsyHS5idWYudmFsaWRhdGUuUHJlZGVmaW5lZFJ1bGVzUgpwcmVkZWZpbmVkQm4KEmJ1aWxkLmJ1Zi52YWxpZGF0ZUINVmFsaWRhdGVQcm90b1ABWkdidWYuYnVpbGQvZ2VuL2dvL2J1ZmJ1aWxkL3Byb3RvdmFsaWRhdGUvcHJvdG9jb2xidWZmZXJzL2dvL2J1Zi92YWxpZGF0ZQ",[de,pt,bo,mt]);var ra;(function(e){e[e.UNSPECIFIED=0]="UNSPECIFIED",e[e.IF_ZERO_VALUE=1]="IF_ZERO_VALUE",e[e.ALWAYS=3]="ALWAYS"})(ra||(ra={}));var oa;(function(e){e[e.UNSPECIFIED=0]="UNSPECIFIED",e[e.HTTP_HEADER_NAME=1]="HTTP_HEADER_NAME",e[e.HTTP_HEADER_VALUE=2]="HTTP_HEADER_VALUE"})(oa||(oa={}));var ia=w("ChVnb29nbGUvYXBpL2h0dHAucHJvdG8SCmdvb2dsZS5hcGkiVAoESHR0cBIjCgVydWxlcxgBIAMoCzIULmdvb2dsZS5hcGkuSHR0cFJ1bGUSJwofZnVsbHlfZGVjb2RlX3Jlc2VydmVkX2V4cGFuc2lvbhgCIAEoCCKBAgoISHR0cFJ1bGUSEAoIc2VsZWN0b3IYASABKAkSDQoDZ2V0GAIgASgJSAASDQoDcHV0GAMgASgJSAASDgoEcG9zdBgEIAEoCUgAEhAKBmRlbGV0ZRgFIAEoCUgAEg8KBXBhdGNoGAYgASgJSAASLwoGY3VzdG9tGAggASgLMh0uZ29vZ2xlLmFwaS5DdXN0b21IdHRwUGF0dGVybkgAEgwKBGJvZHkYByABKAkSFQoNcmVzcG9uc2VfYm9keRgMIAEoCRIxChNhZGRpdGlvbmFsX2JpbmRpbmdzGAsgAygLMhQuZ29vZ2xlLmFwaS5IdHRwUnVsZUIJCgdwYXR0ZXJuIi8KEUN1c3RvbUh0dHBQYXR0ZXJuEgwKBGtpbmQYASABKAkSDAoEcGF0aBgCIAEoCUJnCg5jb20uZ29vZ2xlLmFwaUIJSHR0cFByb3RvUAFaQWdvb2dsZS5nb2xhbmcub3JnL2dlbnByb3RvL2dvb2dsZWFwaXMvYXBpL2Fubm90YXRpb25zO2Fubm90YXRpb25zogIER0FQSWIGcHJvdG8z");var sa=w("Chxnb29nbGUvYXBpL2Fubm90YXRpb25zLnByb3RvEgpnb29nbGUuYXBpOksKBGh0dHASHi5nb29nbGUucHJvdG9idWYuTWV0aG9kT3B0aW9ucxiwyrwiIAEoCzIULmdvb2dsZS5hcGkuSHR0cFJ1bGVSBGh0dHBCbgoOY29tLmdvb2dsZS5hcGlCEEFubm90YXRpb25zUHJvdG9QAVpBZ29vZ2xlLmdvbGFuZy5vcmcvZ2VucHJvdG8vZ29vZ2xlYXBpcy9hcGkvYW5ub3RhdGlvbnM7YW5ub3RhdGlvbnOiAgRHQVBJYgZwcm90bzM",[ia,de]);var la=w("Ch1nb29nbGUvYXBpL2xhdW5jaF9zdGFnZS5wcm90bxIKZ29vZ2xlLmFwaSqMAQoLTGF1bmNoU3RhZ2USHAoYTEFVTkNIX1NUQUdFX1VOU1BFQ0lGSUVEEAASEQoNVU5JTVBMRU1FTlRFRBAGEg0KCVBSRUxBVU5DSBAHEhAKDEVBUkxZX0FDQ0VTUxABEgkKBUFMUEhBEAISCAoEQkVUQRADEgYKAkdBEAQSDgoKREVQUkVDQVRFRBAFQloKDmNvbS5nb29nbGUuYXBpQhBMYXVuY2hTdGFnZVByb3RvUAFaLWdvb2dsZS5nb2xhbmcub3JnL2dlbnByb3RvL2dvb2dsZWFwaXMvYXBpO2FwaaICBEdBUEliBnByb3RvMw"),ca;(function(e){e[e.LAUNCH_STAGE_UNSPECIFIED=0]="LAUNCH_STAGE_UNSPECIFIED",e[e.UNIMPLEMENTED=6]="UNIMPLEMENTED",e[e.PRELAUNCH=7]="PRELAUNCH",e[e.EARLY_ACCESS=1]="EARLY_ACCESS",e[e.ALPHA=2]="ALPHA",e[e.BETA=3]="BETA",e[e.GA=4]="GA",e[e.DEPRECATED=5]="DEPRECATED"})(ca||(ca={}));var ma=w("Chdnb29nbGUvYXBpL2NsaWVudC5wcm90bxIKZ29vZ2xlLmFwaSK+AQoWQ29tbW9uTGFuZ3VhZ2VTZXR0aW5ncxIeChJyZWZlcmVuY2VfZG9jc191cmkYASABKAlCAhgBEjoKDGRlc3RpbmF0aW9ucxgCIAMoDjIkLmdvb2dsZS5hcGkuQ2xpZW50TGlicmFyeURlc3RpbmF0aW9uEkgKGnNlbGVjdGl2ZV9nYXBpY19nZW5lcmF0aW9uGAMgASgLMiQuZ29vZ2xlLmFwaS5TZWxlY3RpdmVHYXBpY0dlbmVyYXRpb24i+wMKFUNsaWVudExpYnJhcnlTZXR0aW5ncxIPCgd2ZXJzaW9uGAEgASgJEi0KDGxhdW5jaF9zdGFnZRgCIAEoDjIXLmdvb2dsZS5hcGkuTGF1bmNoU3RhZ2USGgoScmVzdF9udW1lcmljX2VudW1zGAMgASgIEi8KDWphdmFfc2V0dGluZ3MYFSABKAsyGC5nb29nbGUuYXBpLkphdmFTZXR0aW5ncxItCgxjcHBfc2V0dGluZ3MYFiABKAsyFy5nb29nbGUuYXBpLkNwcFNldHRpbmdzEi0KDHBocF9zZXR0aW5ncxgXIAEoCzIXLmdvb2dsZS5hcGkuUGhwU2V0dGluZ3MSMwoPcHl0aG9uX3NldHRpbmdzGBggASgLMhouZ29vZ2xlLmFwaS5QeXRob25TZXR0aW5ncxIvCg1ub2RlX3NldHRpbmdzGBkgASgLMhguZ29vZ2xlLmFwaS5Ob2RlU2V0dGluZ3MSMwoPZG90bmV0X3NldHRpbmdzGBogASgLMhouZ29vZ2xlLmFwaS5Eb3RuZXRTZXR0aW5ncxIvCg1ydWJ5X3NldHRpbmdzGBsgASgLMhguZ29vZ2xlLmFwaS5SdWJ5U2V0dGluZ3MSKwoLZ29fc2V0dGluZ3MYHCABKAsyFi5nb29nbGUuYXBpLkdvU2V0dGluZ3MiqAMKClB1Ymxpc2hpbmcSMwoPbWV0aG9kX3NldHRpbmdzGAIgAygLMhouZ29vZ2xlLmFwaS5NZXRob2RTZXR0aW5ncxIVCg1uZXdfaXNzdWVfdXJpGGUgASgJEhkKEWRvY3VtZW50YXRpb25fdXJpGGYgASgJEhYKDmFwaV9zaG9ydF9uYW1lGGcgASgJEhQKDGdpdGh1Yl9sYWJlbBhoIAEoCRIeChZjb2Rlb3duZXJfZ2l0aHViX3RlYW1zGGkgAygJEhYKDmRvY190YWdfcHJlZml4GGogASgJEjsKDG9yZ2FuaXphdGlvbhhrIAEoDjIlLmdvb2dsZS5hcGkuQ2xpZW50TGlicmFyeU9yZ2FuaXphdGlvbhI7ChBsaWJyYXJ5X3NldHRpbmdzGG0gAygLMiEuZ29vZ2xlLmFwaS5DbGllbnRMaWJyYXJ5U2V0dGluZ3MSKQohcHJvdG9fcmVmZXJlbmNlX2RvY3VtZW50YXRpb25fdXJpGG4gASgJEigKIHJlc3RfcmVmZXJlbmNlX2RvY3VtZW50YXRpb25fdXJpGG8gASgJIuMBCgxKYXZhU2V0dGluZ3MSFwoPbGlicmFyeV9wYWNrYWdlGAEgASgJEkwKE3NlcnZpY2VfY2xhc3NfbmFtZXMYAiADKAsyLy5nb29nbGUuYXBpLkphdmFTZXR0aW5ncy5TZXJ2aWNlQ2xhc3NOYW1lc0VudHJ5EjIKBmNvbW1vbhgDIAEoCzIiLmdvb2dsZS5hcGkuQ29tbW9uTGFuZ3VhZ2VTZXR0aW5ncxo4ChZTZXJ2aWNlQ2xhc3NOYW1lc0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEiQQoLQ3BwU2V0dGluZ3MSMgoGY29tbW9uGAEgASgLMiIuZ29vZ2xlLmFwaS5Db21tb25MYW5ndWFnZVNldHRpbmdzIkEKC1BocFNldHRpbmdzEjIKBmNvbW1vbhgBIAEoCzIiLmdvb2dsZS5hcGkuQ29tbW9uTGFuZ3VhZ2VTZXR0aW5ncyKbAgoOUHl0aG9uU2V0dGluZ3MSMgoGY29tbW9uGAEgASgLMiIuZ29vZ2xlLmFwaS5Db21tb25MYW5ndWFnZVNldHRpbmdzEk4KFWV4cGVyaW1lbnRhbF9mZWF0dXJlcxgCIAEoCzIvLmdvb2dsZS5hcGkuUHl0aG9uU2V0dGluZ3MuRXhwZXJpbWVudGFsRmVhdHVyZXMahAEKFEV4cGVyaW1lbnRhbEZlYXR1cmVzEh0KFXJlc3RfYXN5bmNfaW9fZW5hYmxlZBgBIAEoCBInCh9wcm90b2J1Zl9weXRob25pY190eXBlc19lbmFibGVkGAIgASgIEiQKHHVudmVyc2lvbmVkX3BhY2thZ2VfZGlzYWJsZWQYAyABKAgiQgoMTm9kZVNldHRpbmdzEjIKBmNvbW1vbhgBIAEoCzIiLmdvb2dsZS5hcGkuQ29tbW9uTGFuZ3VhZ2VTZXR0aW5ncyKqAwoORG90bmV0U2V0dGluZ3MSMgoGY29tbW9uGAEgASgLMiIuZ29vZ2xlLmFwaS5Db21tb25MYW5ndWFnZVNldHRpbmdzEkkKEHJlbmFtZWRfc2VydmljZXMYAiADKAsyLy5nb29nbGUuYXBpLkRvdG5ldFNldHRpbmdzLlJlbmFtZWRTZXJ2aWNlc0VudHJ5EksKEXJlbmFtZWRfcmVzb3VyY2VzGAMgAygLMjAuZ29vZ2xlLmFwaS5Eb3RuZXRTZXR0aW5ncy5SZW5hbWVkUmVzb3VyY2VzRW50cnkSGQoRaWdub3JlZF9yZXNvdXJjZXMYBCADKAkSIAoYZm9yY2VkX25hbWVzcGFjZV9hbGlhc2VzGAUgAygJEh4KFmhhbmR3cml0dGVuX3NpZ25hdHVyZXMYBiADKAkaNgoUUmVuYW1lZFNlcnZpY2VzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ARo3ChVSZW5hbWVkUmVzb3VyY2VzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASJCCgxSdWJ5U2V0dGluZ3MSMgoGY29tbW9uGAEgASgLMiIuZ29vZ2xlLmFwaS5Db21tb25MYW5ndWFnZVNldHRpbmdzIr8BCgpHb1NldHRpbmdzEjIKBmNvbW1vbhgBIAEoCzIiLmdvb2dsZS5hcGkuQ29tbW9uTGFuZ3VhZ2VTZXR0aW5ncxJFChByZW5hbWVkX3NlcnZpY2VzGAIgAygLMisuZ29vZ2xlLmFwaS5Hb1NldHRpbmdzLlJlbmFtZWRTZXJ2aWNlc0VudHJ5GjYKFFJlbmFtZWRTZXJ2aWNlc0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEizwIKDk1ldGhvZFNldHRpbmdzEhAKCHNlbGVjdG9yGAEgASgJEjwKDGxvbmdfcnVubmluZxgCIAEoCzImLmdvb2dsZS5hcGkuTWV0aG9kU2V0dGluZ3MuTG9uZ1J1bm5pbmcSHQoVYXV0b19wb3B1bGF0ZWRfZmllbGRzGAMgAygJGs0BCgtMb25nUnVubmluZxI1ChJpbml0aWFsX3BvbGxfZGVsYXkYASABKAsyGS5nb29nbGUucHJvdG9idWYuRHVyYXRpb24SHQoVcG9sbF9kZWxheV9tdWx0aXBsaWVyGAIgASgCEjEKDm1heF9wb2xsX2RlbGF5GAMgASgLMhkuZ29vZ2xlLnByb3RvYnVmLkR1cmF0aW9uEjUKEnRvdGFsX3BvbGxfdGltZW91dBgEIAEoCzIZLmdvb2dsZS5wcm90b2J1Zi5EdXJhdGlvbiJRChhTZWxlY3RpdmVHYXBpY0dlbmVyYXRpb24SDwoHbWV0aG9kcxgBIAMoCRIkChxnZW5lcmF0ZV9vbWl0dGVkX2FzX2ludGVybmFsGAIgASgIKqMBChlDbGllbnRMaWJyYXJ5T3JnYW5pemF0aW9uEisKJ0NMSUVOVF9MSUJSQVJZX09SR0FOSVpBVElPTl9VTlNQRUNJRklFRBAAEgkKBUNMT1VEEAESBwoDQURTEAISCgoGUEhPVE9TEAMSDwoLU1RSRUVUX1ZJRVcQBBIMCghTSE9QUElORxAFEgcKA0dFTxAGEhEKDUdFTkVSQVRJVkVfQUkQBypnChhDbGllbnRMaWJyYXJ5RGVzdGluYXRpb24SKgomQ0xJRU5UX0xJQlJBUllfREVTVElOQVRJT05fVU5TUEVDSUZJRUQQABIKCgZHSVRIVUIQChITCg9QQUNLQUdFX01BTkFHRVIQFDpKChBtZXRob2Rfc2lnbmF0dXJlEh4uZ29vZ2xlLnByb3RvYnVmLk1ldGhvZE9wdGlvbnMYmwggAygJUg9tZXRob2RTaWduYXR1cmU6QwoMZGVmYXVsdF9ob3N0Eh8uZ29vZ2xlLnByb3RvYnVmLlNlcnZpY2VPcHRpb25zGJkIIAEoCVILZGVmYXVsdEhvc3Q6QwoMb2F1dGhfc2NvcGVzEh8uZ29vZ2xlLnByb3RvYnVmLlNlcnZpY2VPcHRpb25zGJoIIAEoCVILb2F1dGhTY29wZXM6RAoLYXBpX3ZlcnNpb24SHy5nb29nbGUucHJvdG9idWYuU2VydmljZU9wdGlvbnMYwbqr+gEgASgJUgphcGlWZXJzaW9uQmkKDmNvbS5nb29nbGUuYXBpQgtDbGllbnRQcm90b1ABWkFnb29nbGUuZ29sYW5nLm9yZy9nZW5wcm90by9nb29nbGVhcGlzL2FwaS9hbm5vdGF0aW9uczthbm5vdGF0aW9uc6ICBEdBUEliBnByb3RvMw",[la,de,pt]);var da;(function(e){e[e.CLIENT_LIBRARY_ORGANIZATION_UNSPECIFIED=0]="CLIENT_LIBRARY_ORGANIZATION_UNSPECIFIED",e[e.CLOUD=1]="CLOUD",e[e.ADS=2]="ADS",e[e.PHOTOS=3]="PHOTOS",e[e.STREET_VIEW=4]="STREET_VIEW",e[e.SHOPPING=5]="SHOPPING",e[e.GEO=6]="GEO",e[e.GENERATIVE_AI=7]="GENERATIVE_AI"})(da||(da={}));var ua;(function(e){e[e.CLIENT_LIBRARY_DESTINATION_UNSPECIFIED=0]="CLIENT_LIBRARY_DESTINATION_UNSPECIFIED",e[e.GITHUB=10]="GITHUB",e[e.PACKAGE_MANAGER=20]="PACKAGE_MANAGER"})(ua||(ua={}));var Yn=w("Ciptb2NoYWJ1Z2FwaXMvYWRhcHQvZ3JhcGgvc2lnbmFsX2RhdGEucHJvdG8SGG1vY2hhYnVnYXBpcy5hZGFwdC5ncmFwaCKmCgoKU2lnbmFsRGF0YRL3BQoIZmlsZW5hbWUYASABKAlC3wW6SNsFugGvAQobZmlsZW5hbWUubm9fcGF0aF9zZXBhcmF0b3JzEmNGaWxlbmFtZSBjYW5ub3QgY29udGFpbiBwYXRoIHNlcGFyYXRvcnMgKCcvJyBvciAnXCcpLiBVc2Ugb25seSB0aGUgZmlsZW5hbWUgd2l0aG91dCBkaXJlY3RvcnkgcGF0aC4aKyF0aGlzLmNvbnRhaW5zKCcvJykgJiYgIXRoaXMuY29udGFpbnMoJ1xcJym6AbsBCh5maWxlbmFtZS5ub19jb250cm9sX2NoYXJhY3RlcnMSOUZpbGVuYW1lIGNhbm5vdCBjb250YWluIGNvbnRyb2wgY2hhcmFjdGVycyBvciBudWxsIGJ5dGVzLhpeIXRoaXMuY29udGFpbnMoJ1x4MDAnKSAmJiAhdGhpcy5jb250YWlucygnXG4nKSAmJiAhdGhpcy5jb250YWlucygnXHInKSAmJiAhdGhpcy5jb250YWlucygnXHQnKboBbQonZmlsZW5hbWUubm9fbGVhZGluZ190cmFpbGluZ193aGl0ZXNwYWNlEi1GaWxlbmFtZSBjYW5ub3Qgc3RhcnQgb3IgZW5kIHdpdGggd2hpdGVzcGFjZS4aE3RoaXMgPT0gdGhpcy50cmltKCm6AdMBChxmaWxlbmFtZS5ub193aW5kb3dzX3Jlc2VydmVkEmpGaWxlbmFtZSBjYW5ub3QgYmUgYSBXaW5kb3dzIHJlc2VydmVkIG5hbWUgKENPTiwgUFJOLCBBVVgsIE5VTCwgQ09NMS05LCBMUFQxLTkpIHdpdGggb3Igd2l0aG91dCBleHRlbnNpb24uGkchdGhpcy5tYXRjaGVzKCdeKD9pKShDT058UFJOfEFVWHxOVUx8Q09NWzEtOV18TFBUWzEtOV0pKD86XFwuW14uXSopPyQnKXIgEAEY/wEyGV5bXi88PjoifD8qXHgwMC1ceDFGXFxdKyRIAIgBARKCBAoJbWltZV90eXBlGAIgASgJQu4DukjqA7oByQEKFm1pbWVfdHlwZS5ub193aWxkY2FyZHMSmQFNSU1FIHR5cGUgd2lsZGNhcmRzIGFyZSBub3QgYWxsb3dlZCBpbiBTaWduYWxEYXRhLiBVc2UgYSBjb25jcmV0ZSBNSU1FIHR5cGUgbGlrZSAnaW1hZ2UvcG5nJyBvciAnYXBwbGljYXRpb24vcGRmJywgbm90IHdpbGRjYXJkcyBsaWtlICdpbWFnZS8qJyBvciAnKi8qJy4aEyF0aGlzLmNvbnRhaW5zKCcqJym6Ab8BChdtaW1lX3R5cGUubm9fcGFyYW1ldGVycxKOAU1JTUUgdHlwZSBwYXJhbWV0ZXJzIGFyZSBub3QgYWxsb3dlZC4gVXNlICd0ZXh0L3BsYWluJyBpbnN0ZWFkIG9mICd0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04Jy4gVVRGLTggZW5jb2RpbmcgaXMgYXNzdW1lZCBmb3IgYWxsIHRleHQgZm9ybWF0cy4aEyF0aGlzLmNvbnRhaW5zKCc7JylyWBADGP8BMlFeW2EtekEtWjAtOV1bYS16QS1aMC05ISMkJlwtXl8uK117MCwxMjZ9L1thLXpBLVowLTldW2EtekEtWjAtOSEjJCZcLV5fLitdezAsMTI2fSQSDAoEZGF0YRgDIAEoDEILCglfZmlsZW5hbWViBnByb3RvMw",[vt]),Nn=K(Yn,0);var Te=w("CjNtb2NoYWJ1Z2FwaXMvYWRhcHQvYXV0b21hdGlvbnMvdjEvYXV0b21hdGlvbnMucHJvdG8SIW1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MSIwChZDcmVhdGVDaGFsbGVuZ2VSZXF1ZXN0EhYKAmlkGAEgASgJQgq6SAdyBRABGPQDIqIBChdDcmVhdGVDaGFsbGVuZ2VSZXNwb25zZRINCgVjb3VudBgBIAEoDRIMCgRzaXplGAIgASgNEhIKCmRpZmZpY3VsdHkYAyABKA0SKwoHZXhwaXJlcxgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASDQoFdG9rZW4YBSABKAkSGgoSdmVyaWZpY2F0aW9uX3Rva2VuGAYgASgJIngKFlJlZGVlbUNoYWxsZW5nZVJlcXVlc3QSFgoCaWQYASABKAlCCrpIB3IFEAEY9AMSJgoSdmVyaWZpY2F0aW9uX3Rva2VuGAIgASgJQgq6SAdyBRABGNAPEh4KCXNvbHV0aW9ucxgDIAMoA0ILukgIkgEFCAEQ6AciVQoXUmVkZWVtQ2hhbGxlbmdlUmVzcG9uc2USDQoFdG9rZW4YASABKAkSKwoHZXhwaXJlcxgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAiLwoVSW5oZXJpdFNlc3Npb25SZXF1ZXN0EhYKAmlkGAEgASgJQgq6SAdyBRABGPQDImUKFkluaGVyaXRTZXNzaW9uUmVzcG9uc2USDQoFdG9rZW4YASABKAkSMAoHZXhwaXJlcxgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAIgBAUIKCghfZXhwaXJlcyKvAQoRUmVhZE91dHB1dFJlcXVlc3QSFgoCaWQYASABKAlCCrpIB3IFEAEY9AMSGgoJcGFnZV9zaXplGAIgASgNQge6SAQqAhhkEikKBnZlcnRleBgDIAEoCUIUukgRcg8yDV5bMC05YS16XXs0fSRIAIgBARIhCgpuZXdlcl90aGFuGAQgASgJQgi6SAVyA7ABAUgBiAEBQgkKB192ZXJ0ZXhCDQoLX25ld2VyX3RoYW4iywEKElJlYWRPdXRwdXRSZXNwb25zZRI7CgdzZXNzaW9uGAEgASgLMioubW9jaGFidWdhcGlzLmFkYXB0LmF1dG9tYXRpb25zLnYxLlNlc3Npb24SOgoHb3V0cHV0cxgCIAMoCzIpLm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5PdXRwdXQSJwoQbmV4dF9wYWdlX2N1cnNvchgDIAEoCUIIukgFcgOwAQFIAIgBAUITChFfbmV4dF9wYWdlX2N1cnNvciJ3Cg9SZWFkVXJsc1JlcXVlc3QSFgoCaWQYASABKAlCCrpIB3IFEAEY9AMSGgoJcGFnZV9zaXplGAIgASgNQge6SAQqAhhkEiEKCm5ld2VyX3RoYW4YAyABKAlCCLpIBXIDsAEBSACIAQFCDQoLX25ld2VyX3RoYW4iwwEKEFJlYWRVcmxzUmVzcG9uc2USOwoHc2Vzc2lvbhgBIAEoCzIqLm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5TZXNzaW9uEjQKBHVybHMYAiADKAsyJi5tb2NoYWJ1Z2FwaXMuYWRhcHQuYXV0b21hdGlvbnMudjEuVXJsEicKEG5leHRfcGFnZV9jdXJzb3IYAyABKAlCCLpIBXIDsAEBSACIAQFCEwoRX25leHRfcGFnZV9jdXJzb3IikQMKE1N0YXJ0U2Vzc2lvblJlcXVlc3QSFgoCaWQYASABKAlCCrpIB3IFEAEY9AMSOwoLdHJhbnNtaXR0ZXIYAiABKAlCIbpIHnIcEAEYZDIWXlthLXpBLVowLTlfLV17MSwxMDB9JEgAiAEBEoABCgdzaWduYWxzGAMgAygLMkMubW9jaGFidWdhcGlzLmFkYXB0LmF1dG9tYXRpb25zLnYxLlN0YXJ0U2Vzc2lvblJlcXVlc3QuU2lnbmFsc0VudHJ5Qiq6SCeaASQiInIgEAEYZDIaXltfJGEtekEtWl1bXyRhLXpBLVowLTldKiQSKAoPY2hhbGxlbmdlX3Rva2VuGAQgASgJQgq6SAdyBRABGPQDSAGIAQEaVAoMU2lnbmFsc0VudHJ5EgsKA2tleRgBIAEoCRIzCgV2YWx1ZRgCIAEoCzIkLm1vY2hhYnVnYXBpcy5hZGFwdC5ncmFwaC5TaWduYWxEYXRhOgI4AUIOCgxfdHJhbnNtaXR0ZXJCEgoQX2NoYWxsZW5nZV90b2tlbiJjChRTdGFydFNlc3Npb25SZXNwb25zZRINCgV0b2tlbhgBIAEoCRIwCgdleHBpcmVzGAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgAiAEBQgoKCF9leHBpcmVzIlIKElN0b3BTZXNzaW9uUmVxdWVzdBIWCgJpZBgBIAEoCUIKukgHcgUQARj0AxIbCgRmb3JrGAIgASgJQgi6SAVyAxjoB0gAiAEBQgcKBV9mb3JrIhUKE1N0b3BTZXNzaW9uUmVzcG9uc2UiKwoRR2V0U2Vzc2lvblJlcXVlc3QSFgoCaWQYASABKAlCCrpIB3IFEAEY9AMiWQoSR2V0U2Vzc2lvblJlc3BvbnNlEkMKB3Nlc3Npb24YASABKAsyKi5tb2NoYWJ1Z2FwaXMuYWRhcHQuYXV0b21hdGlvbnMudjEuU2Vzc2lvbkIGukgDyAEBIukBCgZPdXRwdXQSDgoGdmVydGV4GAEgASgJEgwKBGZvcmsYAiABKAkSQQoEZGF0YRgDIAMoCzIzLm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5PdXRwdXQuRGF0YUVudHJ5EisKB2NyZWF0ZWQYBCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wGlEKCURhdGFFbnRyeRILCgNrZXkYASABKAkSMwoFdmFsdWUYAiABKAsyJC5tb2NoYWJ1Z2FwaXMuYWRhcHQuZ3JhcGguU2lnbmFsRGF0YToCOAEiiwEKA1VybBILCgN1cmwYASABKAkSDAoEZm9yaxgCIAEoCRIOCgZ2ZXJ0ZXgYAyABKAkSDAoEZG9uZRgEIAEoCBIrCgdjcmVhdGVkGAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBINCgV0b2tlbhgGIAEoCRIPCgdzdG9wcGVkGAcgASgIIlIKB1Nlc3Npb24SDAoEZm9yaxgBIAEoCRI5CgZzdGF0dXMYAiABKA4yKS5tb2NoYWJ1Z2FwaXMuYWRhcHQuYXV0b21hdGlvbnMudjEuU3RhdHVzIi4KFFN0cmVhbVNlc3Npb25SZXF1ZXN0EhYKAmlkGAEgASgJQgq6SAdyBRABGPQDIkkKEUFja01lc3NhZ2VSZXF1ZXN0EhYKAmlkGAEgASgJQgq6SAdyBRABGPQDEhwKCm1lc3NhZ2VfaWQYAiABKAlCCLpIBXIDsAEBIhQKEkFja01lc3NhZ2VSZXNwb25zZSLrAQoVU3RyZWFtU2Vzc2lvblJlc3BvbnNlEhQKAmlkGAEgASgJQgi6SAVyA7ABARI7CgZvdXRwdXQYAiABKAsyKS5tb2NoYWJ1Z2FwaXMuYWRhcHQuYXV0b21hdGlvbnMudjEuT3V0cHV0SAASNQoDdXJsGAMgASgLMiYubW9jaGFidWdhcGlzLmFkYXB0LmF1dG9tYXRpb25zLnYxLlVybEgAEj0KB3Nlc3Npb24YBCABKAsyKi5tb2NoYWJ1Z2FwaXMuYWRhcHQuYXV0b21hdGlvbnMudjEuU2Vzc2lvbkgAQgkKB21lc3NhZ2UijAMKEVJ1blNlc3Npb25SZXF1ZXN0EhYKAmlkGAEgASgJQgq6SAdyBRABGPQDEjsKC3RyYW5zbWl0dGVyGAIgASgJQiG6SB5yHBABGGQyFl5bYS16QS1aMC05Xy1dezEsMTAwfSRIAIgBARJ+CgdzaWduYWxzGAMgAygLMkEubW9jaGFidWdhcGlzLmFkYXB0LmF1dG9tYXRpb25zLnYxLlJ1blNlc3Npb25SZXF1ZXN0LlNpZ25hbHNFbnRyeUIqukgnmgEkIiJyIBABGGQyGl5bXyRhLXpBLVpdW18kYS16QS1aMC05XSokEigKD2NoYWxsZW5nZV90b2tlbhgEIAEoCUIKukgHcgUQARj0A0gBiAEBGlQKDFNpZ25hbHNFbnRyeRILCgNrZXkYASABKAkSMwoFdmFsdWUYAiABKAsyJC5tb2NoYWJ1Z2FwaXMuYWRhcHQuZ3JhcGguU2lnbmFsRGF0YToCOAFCDgoMX3RyYW5zbWl0dGVyQhIKEF9jaGFsbGVuZ2VfdG9rZW4isQIKElJ1blNlc3Npb25SZXNwb25zZRIUCgJpZBgBIAEoCUIIukgFcgOwAQESRwoHc3RhcnRlZBgCIAEoCzI0Lm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5SdW5TZXNzaW9uU3RhcnRlZEgAEjsKBm91dHB1dBgDIAEoCzIpLm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5PdXRwdXRIABI1CgN1cmwYBCABKAsyJi5tb2NoYWJ1Z2FwaXMuYWRhcHQuYXV0b21hdGlvbnMudjEuVXJsSAASPQoHc2Vzc2lvbhgFIAEoCzIqLm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5TZXNzaW9uSABCCQoHbWVzc2FnZSJgChFSdW5TZXNzaW9uU3RhcnRlZBINCgV0b2tlbhgBIAEoCRIwCgdleHBpcmVzGAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgAiAEBQgoKCF9leHBpcmVzIisKEVJ1bkluaGVyaXRSZXF1ZXN0EhYKAmlkGAEgASgJQgq6SAdyBRABGPQDIrMCChJSdW5Jbmhlcml0UmVzcG9uc2USFAoCaWQYASABKAlCCLpIBXIDsAEBEkkKCWluaGVyaXRlZBgCIAEoCzI0Lm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5SdW5Jbmhlcml0U3RhcnRlZEgAEjsKBm91dHB1dBgDIAEoCzIpLm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5PdXRwdXRIABI1CgN1cmwYBCABKAsyJi5tb2NoYWJ1Z2FwaXMuYWRhcHQuYXV0b21hdGlvbnMudjEuVXJsSAASPQoHc2Vzc2lvbhgFIAEoCzIqLm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5TZXNzaW9uSABCCQoHbWVzc2FnZSJgChFSdW5Jbmhlcml0U3RhcnRlZBINCgV0b2tlbhgBIAEoCRIwCgdleHBpcmVzGAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgAiAEBQgoKCF9leHBpcmVzKsgBCgZTdGF0dXMSFgoSU1RBVFVTX1VOU1BFQ0lGSUVEEAASEgoOU1RBVFVTX1JVTk5JTkcQARISCg5TVEFUVVNfU1RPUFBFRBACEhMKD1NUQVRVU19TVE9QUElORxADEhQKEFNUQVRVU19DT01QTEVURUQQBBISCg5TVEFUVVNfRVhQSVJFRBAFEhIKDlNUQVRVU19FUlJPUkVEEAYSFQoRU1RBVFVTX0RFTEVHQVRJTkcQBxIUChBTVEFUVVNfREVMRUdBVEVEEAgyyBEKEUF1dG9tYXRpb25TZXJ2aWNlErMBCg9DcmVhdGVDaGFsbGVuZ2USOS5tb2NoYWJ1Z2FwaXMuYWRhcHQuYXV0b21hdGlvbnMudjEuQ3JlYXRlQ2hhbGxlbmdlUmVxdWVzdBo6Lm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5DcmVhdGVDaGFsbGVuZ2VSZXNwb25zZSIpgtPkkwIjOgEqIh4vdjEvYXV0b21hdGlvbnMve2lkfS9jaGFsbGVuZ2USugEKD1JlZGVlbUNoYWxsZW5nZRI5Lm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5SZWRlZW1DaGFsbGVuZ2VSZXF1ZXN0GjoubW9jaGFidWdhcGlzLmFkYXB0LmF1dG9tYXRpb25zLnYxLlJlZGVlbUNoYWxsZW5nZVJlc3BvbnNlIjCC0+STAio6ASoiJS92MS9hdXRvbWF0aW9ucy97aWR9L2NoYWxsZW5nZS9yZWRlZW0SrgEKDFN0YXJ0U2Vzc2lvbhI2Lm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5TdGFydFNlc3Npb25SZXF1ZXN0GjcubW9jaGFidWdhcGlzLmFkYXB0LmF1dG9tYXRpb25zLnYxLlN0YXJ0U2Vzc2lvblJlc3BvbnNlIi2C0+STAic6ASoiIi92MS9hdXRvbWF0aW9ucy97aWR9L3Nlc3Npb24vc3RhcnQSogEKC1N0b3BTZXNzaW9uEjUubW9jaGFidWdhcGlzLmFkYXB0LmF1dG9tYXRpb25zLnYxLlN0b3BTZXNzaW9uUmVxdWVzdBo2Lm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5TdG9wU2Vzc2lvblJlc3BvbnNlIiSC0+STAh4qHC92MS9hdXRvbWF0aW9ucy97aWR9L3Nlc3Npb24StgEKDkluaGVyaXRTZXNzaW9uEjgubW9jaGFidWdhcGlzLmFkYXB0LmF1dG9tYXRpb25zLnYxLkluaGVyaXRTZXNzaW9uUmVxdWVzdBo5Lm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5Jbmhlcml0U2Vzc2lvblJlc3BvbnNlIi+C0+STAik6ASoiJC92MS9hdXRvbWF0aW9ucy97aWR9L3Nlc3Npb24vaW5oZXJpdBKfAQoKR2V0U2Vzc2lvbhI0Lm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5HZXRTZXNzaW9uUmVxdWVzdBo1Lm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5HZXRTZXNzaW9uUmVzcG9uc2UiJILT5JMCHhIcL3YxL2F1dG9tYXRpb25zL3tpZH0vc2Vzc2lvbhKmAQoKUmVhZE91dHB1dBI0Lm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5SZWFkT3V0cHV0UmVxdWVzdBo1Lm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5SZWFkT3V0cHV0UmVzcG9uc2UiK4LT5JMCJRIjL3YxL2F1dG9tYXRpb25zL3tpZH0vc2Vzc2lvbi9vdXRwdXQSngEKCFJlYWRVcmxzEjIubW9jaGFidWdhcGlzLmFkYXB0LmF1dG9tYXRpb25zLnYxLlJlYWRVcmxzUmVxdWVzdBozLm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5SZWFkVXJsc1Jlc3BvbnNlIimC0+STAiMSIS92MS9hdXRvbWF0aW9ucy97aWR9L3Nlc3Npb24vdXJscxKxAQoNU3RyZWFtU2Vzc2lvbhI3Lm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5TdHJlYW1TZXNzaW9uUmVxdWVzdBo4Lm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5TdHJlYW1TZXNzaW9uUmVzcG9uc2UiK4LT5JMCJRIjL3YxL2F1dG9tYXRpb25zL3tpZH0vc2Vzc2lvbi9zdHJlYW0wARKmAQoKQWNrTWVzc2FnZRI0Lm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5BY2tNZXNzYWdlUmVxdWVzdBo1Lm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5BY2tNZXNzYWdlUmVzcG9uc2UiK4LT5JMCJToBKiIgL3YxL2F1dG9tYXRpb25zL3tpZH0vc2Vzc2lvbi9hY2sSqAEKClJ1blNlc3Npb24SNC5tb2NoYWJ1Z2FwaXMuYWRhcHQuYXV0b21hdGlvbnMudjEuUnVuU2Vzc2lvblJlcXVlc3QaNS5tb2NoYWJ1Z2FwaXMuYWRhcHQuYXV0b21hdGlvbnMudjEuUnVuU2Vzc2lvblJlc3BvbnNlIiuC0+STAiU6ASoiIC92MS9hdXRvbWF0aW9ucy97aWR9L3Nlc3Npb24vcnVuMAESsAEKClJ1bkluaGVyaXQSNC5tb2NoYWJ1Z2FwaXMuYWRhcHQuYXV0b21hdGlvbnMudjEuUnVuSW5oZXJpdFJlcXVlc3QaNS5tb2NoYWJ1Z2FwaXMuYWRhcHQuYXV0b21hdGlvbnMudjEuUnVuSW5oZXJpdFJlc3BvbnNlIjOC0+STAi06ASoiKC92MS9hdXRvbWF0aW9ucy97aWR9L3Nlc3Npb24vcnVuLWluaGVyaXQwARqJAcpBFmFkYXB0Lm1vY2hhYnVnYXBpcy5jb23SQW1odHRwczovL3d3dy5tb2NoYWJ1Z2FwaXMuY29tL2F1dGgvYWRhcHQuYXV0b21hdGlvbnMsaHR0cHM6Ly93d3cubW9jaGFidWdhcGlzLmNvbS9hdXRoL2FkYXB0LmF1dG9tYXRpb25zLnN0YXJ0YgZwcm90bzM",[vt,sa,ma,mt,Yn]);var pa=K(Te,10);var ha=K(Te,23);var ga=K(Te,26);var me;(function(e){e[e.UNSPECIFIED=0]="UNSPECIFIED",e[e.RUNNING=1]="RUNNING",e[e.STOPPED=2]="STOPPED",e[e.STOPPING=3]="STOPPING",e[e.COMPLETED=4]="COMPLETED",e[e.EXPIRED=5]="EXPIRED",e[e.ERRORED=6]="ERRORED",e[e.DELEGATING=7]="DELEGATING",e[e.DELEGATED=8]="DELEGATED"})(me||(me={}));var Ae=Ye(Te,0),Hn=Ko(Te,0);var ba={webUrl:"https://adapt.mochabugapis.com/v1/automations",grpcUrl:"https://adapt-grpc.mochabugapis.com"},Rt={...ba};function Mn(e){Rt={...Rt,...e}}function Ln(){return{...Rt}}function zn(){Rt={...ba}}var As=[me.STOPPED,me.COMPLETED,me.ERRORED,me.EXPIRED];function fa(e,t,n){let r=n?.debug??!1,o=y=>({Authorization:`Bearer ${y}`}),a=(y,A,G)=>{if(!r&&y==="info")return;(y==="error"?console.error:y==="warn"?console.warn:console.log)(`[Adapt] ${A}`,G??"")},i=null,s=null,u=null,m=0,I=null,f=new Set,l=[],c=1e3,p=()=>{I&&(clearTimeout(I),I=null)},g=[C.NotFound,C.PermissionDenied,C.Unauthenticated,C.InvalidArgument,C.FailedPrecondition],h=y=>y instanceof W?!g.includes(y.code):!0,b=async(y,A=3)=>{for(let G=0;G<=A;G++)try{return await y()}catch(S){if(G===A||!h(S))throw S;let X=Math.min(500*(1<<G),5e3);await new Promise(N=>setTimeout(N,Math.random()*X))}throw new Error("unreachable")},V=()=>{f.clear(),l.length=0},Z=y=>{if(!f.has(y)){if(f.size>=c){let A=l.shift();f.delete(A)}f.add(y),l.push(y)}},v=y=>f.has(y),E=y=>{let{case:A,value:G}=y.message;switch(A){case"output":return s?.onOutput?.({vertex:G.vertex,fork:G.fork,data:G.data,created:Q(G.created)}),!1;case"url":return s?.onUrl?.({url:G.url,vertex:G.vertex,done:G.done,stopped:G.stopped,created:Q(G.created),token:G.token,fork:G.fork}),!1;case"session":{let S=As.includes(G.status)&&!G.fork,X=Ge(Ae,G.status);return s?.onSession?.({status:X,fork:G.fork}),S&&a("info",`Session ended: ${X}`),S}case"started":case"inherited":throw new Error(`Unexpected '${A}' message in stream - should only be first message`);default:return a("warn",`Unknown message type: ${A}`),!1}},R=(y,A)=>{let G=v(y.id);G||Z(y.id);let S=G?!1:E(y);return!S&&s&&e.ackMessage({id:t,messageId:y.id},{headers:A}).catch(X=>a("error",`ACK failed: ${y.id}`,X)),S},x=()=>{if(!s||!u)return;m++;let y=m===1?0:Math.min(50*Math.pow(2,m-2),3e4);a("info",`Reconnecting in ${y}ms (attempt ${m})`),y===0?J():I=setTimeout(()=>{I=null,J()},y)},J=async()=>{if(!s||!u)return;let y=new AbortController;i=y;let A=o(u);a("info",`Connecting to stream: ${t}`);let G=null,S=!1,X=()=>{S||(S=!0,m=0,G&&(clearTimeout(G),G=null))};try{let N=e.streamSession({id:t},{signal:y.signal,headers:A});G=setTimeout(X,1e3);for await(let q of N)if(X(),R(q,A))break;a("info","Stream ended normally")}catch(N){if(G&&(clearTimeout(G),G=null),y.signal.aborted)return;a("error","Stream error",N),h(N)?x():s?.onError?.(N)}},z=y=>{if(!y)return;let A={};for(let[G,S]of Object.entries(y))S?.data instanceof Uint8Array&&typeof S?.mimeType=="string"&&S.mimeType?A[G]=k(Nn,{data:S.data,mimeType:S.mimeType,filename:S.filename}):A[G]=k(Nn,{data:new TextEncoder().encode(JSON.stringify(S)),mimeType:"application/json"});return Object.keys(A).length>0?A:void 0};return{raw:e,async run(y){a("info","run",{transmitter:y?.transmitter}),i&&await this.unsubscribe();let A=k(ha,{id:t,transmitter:y?.transmitter,signals:z(y?.signals),challengeToken:y?.challengeToken}),G=new AbortController;i=G,s=y??{},m=0;let S={...y?.authToken?o(y.authToken):{},"x-idempotency-key":crypto.randomUUID()},X,N,q=new Promise((_,H)=>{X=_,N=H}),se=async()=>{let _=e.runSession(A,{signal:G.signal,headers:S}),H,T=null,Ve=!1,xe=()=>{Ve||(Ve=!0,m=0,T&&(clearTimeout(T),T=null))};try{T=setTimeout(xe,1e3);for await(let M of _){if(xe(),!H){if(M.message.case!=="started"){N(new Error("Expected started message as first response"));return}let D=M.message.value;H=D.token,u=H,a("info","run success",{token:H}),X({sessionToken:H,expiresAt:D.expires?Q(D.expires):void 0});continue}if(R(M,o(H)))break}a("info","Stream ended normally")}catch(M){if(T&&(clearTimeout(T),T=null),G.signal.aborted)return;if(a("error","Stream error",M),H)h(M)?x():s?.onError?.(M);else if(h(M)){m++;let D=m===1?0:Math.min(50*Math.pow(2,m-2),3e4);a("info",`Retrying runSession in ${D}ms (attempt ${m})`),D===0?se():I=setTimeout(()=>{I=null,se()},D)}else N(M)}};se();try{return await q}catch(_){throw i=null,s=null,u=null,_}},async runInherit(y,A){a("info","runInherit"),i&&await this.unsubscribe();let G=new AbortController;i=G,s=A??{},m=0;let S=k(ga,{id:t}),X,N,q=new Promise((_,H)=>{X=_,N=H}),se=async()=>{let _=e.runInherit(S,{signal:G.signal,headers:o(y)}),H,T=null,Ve=!1,xe=()=>{Ve||(Ve=!0,m=0,T&&(clearTimeout(T),T=null))};try{T=setTimeout(xe,1e3);for await(let M of _){if(xe(),!H){if(M.message.case!=="inherited"){N(new Error("Expected inherited message as first response"));return}let D=M.message.value;H=D.token,u=H,a("info","runInherit success",{token:H}),X({sessionToken:H,expiresAt:D.expires?Q(D.expires):void 0});continue}if(R(M,o(H)))break}a("info","Stream ended normally")}catch(M){if(T&&(clearTimeout(T),T=null),G.signal.aborted)return;if(a("error","Stream error",M),H)h(M)?x():s?.onError?.(M);else if(h(M)){m++;let D=m===1?0:Math.min(50*Math.pow(2,m-2),3e4);a("info",`Retrying runInherit in ${D}ms (attempt ${m})`),D===0?se():I=setTimeout(()=>{I=null,se()},D)}else N(M)}};se();try{return await q}catch(_){throw i=null,s=null,u=null,_}},async start(y){a("info","start",{transmitter:y?.transmitter});let A=k(pa,{id:t,transmitter:y?.transmitter,signals:z(y?.signals),challengeToken:y?.challengeToken}),G={...y?.authToken?o(y.authToken):{},"x-idempotency-key":crypto.randomUUID()},S=await b(()=>e.startSession(A,{headers:G}));return a("info","start success",{token:S.token}),{sessionToken:S.token,expiresAt:S.expires?Q(S.expires):void 0}},async inherit(y){a("info","inherit");let A=await b(()=>e.inheritSession({id:t},{headers:o(y)}));return a("info","inherit success",{token:A.token}),{sessionToken:A.token,expiresAt:A.expires?Q(A.expires):void 0}},async subscribe(y,A){a("info","subscribe"),i&&await this.unsubscribe(),u=y,s=A,m=0,await J()},async stop(y,A){a("info","stop",A?{fork:A}:void 0),await b(()=>e.stopSession({id:t,fork:A},{headers:o(y)})),a("info","stop success")},async unsubscribe(){a("info","unsubscribe"),p(),V(),i?.abort(),i=null,s=null,u=null},async getSession(y){a("info","getSession");let A=await b(()=>e.getSession({id:t},{headers:o(y)})),G={status:Ge(Ae,A.session.status),fork:A.session.fork};return a("info","getSession success",G),G},async readOutput(y,A){a("info","readOutput",A);let G=await b(()=>e.readOutput({id:t,pageSize:A?.pageSize,vertex:A?.vertex,newerThan:A?.newerThan?.toISOString()},{headers:o(y)})),S={session:{status:Ge(Ae,G.session.status),fork:G.session.fork},nextPageCursor:G.nextPageCursor,outputs:G.outputs.map(X=>({vertex:X.vertex,fork:X.fork,created:Q(X.created),data:Object.fromEntries(Object.entries(X.data).map(([N,q])=>{if(q.mimeType==="application/json")try{return[N,JSON.parse(new TextDecoder().decode(q.data))]}catch{return[N,q]}return[N,q]}))}))};return a("info","readOutput success",{outputCount:S.outputs.length}),S},async readOutputBinary(y,A){a("info","readOutputBinary",A);let G=await b(()=>e.readOutput({id:t,pageSize:A?.pageSize,vertex:A?.vertex,newerThan:A?.newerThan?.toISOString()},{headers:o(y)})),S={session:{status:Ge(Ae,G.session.status),fork:G.session.fork},nextPageCursor:G.nextPageCursor,outputs:G.outputs.map(X=>({vertex:X.vertex,fork:X.fork,created:Q(X.created),data:X.data}))};return a("info","readOutputBinary success",{outputCount:S.outputs.length}),S},async readUrls(y,A){a("info","readUrls",A);let G=await b(()=>e.readUrls({id:t,pageSize:A?.pageSize,newerThan:A?.newerThan},{headers:o(y)})),S={session:{status:Ge(Ae,G.session.status),fork:G.session.fork},nextPageCursor:G.nextPageCursor,urls:G.urls.map(X=>({url:X.url,vertex:X.vertex,done:X.done,stopped:X.stopped,created:Q(X.created),token:X.token,fork:X.fork}))};return a("info","readUrls success",{urlCount:S.urls.length}),S}}}function ya(){try{new Headers}catch{throw new Error("connect-web requires the fetch API. Are you running on an old version of Node.js? Node.js is not supported in Connect for Web - please stay tuned for Connect for Node.")}}var De=function(e){return this instanceof De?(this.v=e,this):new De(e)},Cs=function(e,t,n){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var r=n.apply(e,t||[]),o,a=[];return o=Object.create((typeof AsyncIterator=="function"?AsyncIterator:Object).prototype),s("next"),s("throw"),s("return",i),o[Symbol.asyncIterator]=function(){return this},o;function i(c){return function(p){return Promise.resolve(p).then(c,f)}}function s(c,p){r[c]&&(o[c]=function(g){return new Promise(function(h,b){a.push([c,g,h,b])>1||u(c,g)})},p&&(o[c]=p(o[c])))}function u(c,p){try{m(r[c](p))}catch(g){l(a[0][3],g)}}function m(c){c.value instanceof De?Promise.resolve(c.value.v).then(I,f):l(a[0][2],c)}function I(c){u("next",c)}function f(c){u("throw",c)}function l(c,p){c(p),a.shift(),a.length&&u(a[0][0],a[0][1])}},Ia={redirect:"error"};function Kn(e){var t;ya();let n=(t=e.useBinaryFormat)!==null&&t!==void 0?t:!1;return{async unary(r,o,a,i,s,u){let{serialize:m,parse:I}=xt(r,n,e.jsonOptions,e.binaryOptions);return a=a===void 0?e.defaultTimeoutMs:a<=0?void 0:a,await kn({interceptors:e.interceptors,signal:o,timeoutMs:a,req:{stream:!1,service:r.parent,method:r,requestMethod:"POST",url:Ct(e.baseUrl,r),header:Et(r.methodKind,n,a,i,!1),contextValues:u??At(),message:s},next:async f=>{var l;let c=e.useHttpGet===!0&&r.idempotency===ut.NO_SIDE_EFFECTS,p=null;c?f=wn(f,m(f.message),n):p=m(f.message);let h=await((l=e.fetch)!==null&&l!==void 0?l:globalThis.fetch)(f.url,Object.assign(Object.assign({},Ia),{method:f.requestMethod,headers:f.header,signal:f.signal,body:p})),{isUnaryError:b,unaryError:V}=Jt(r.methodKind,n,h.status,h.headers);if(b)throw Ke(await h.json(),Cn(...Bt(h.headers)),V);let[Z,v]=Bt(h.headers);return{stream:!1,service:r.parent,method:r,header:Z,message:n?I(new Uint8Array(await h.arrayBuffer())):Gn(r.output,await h.json(),Vt(e.jsonOptions)),trailer:v}}})},async stream(r,o,a,i,s,u){let{serialize:m,parse:I}=xt(r,n,e.jsonOptions,e.binaryOptions);function f(c,p,g,h){return Cs(this,arguments,function*(){let V=xn(c).getReader(),Z=!1;for(;;){let v=yield De(V.read());if(v.done)break;let{flags:E,data:R}=v.value;if((E&Zt)===Zt)throw new W("protocol error: received unsupported compressed output",C.Internal);if((E&St)===St){Z=!0;let x=Jn(R);if(x.error){let J=x.error;throw g.forEach((z,y)=>{J.metadata.append(y,z)}),J}x.metadata.forEach((J,z)=>p.set(z,J));continue}yield yield De(I(R))}if("throwIfAborted"in h&&h.throwIfAborted(),!Z)throw"missing EndStreamResponse"})}async function l(c){if(r.methodKind!="server_streaming")throw"The fetch API does not support streaming request bodies";let p=await c[Symbol.asyncIterator]().next();if(p.done==!0)throw"missing request message";return Sn(0,m(p.value))}return a=a===void 0?e.defaultTimeoutMs:a<=0?void 0:a,await Fn({interceptors:e.interceptors,timeoutMs:a,signal:o,req:{stream:!0,service:r.parent,method:r,requestMethod:"POST",url:Ct(e.baseUrl,r),header:Et(r.methodKind,n,a,i,!1),contextValues:u??At(),message:s},next:async c=>{var p;let h=await((p=e.fetch)!==null&&p!==void 0?p:globalThis.fetch)(c.url,Object.assign(Object.assign({},Ia),{method:c.requestMethod,headers:c.header,signal:c.signal,body:await l(c.message)}));if(Jt(r.methodKind,n,h.status,h.headers),h.body===null)throw"missing response body";let b=new Headers;return Object.assign(Object.assign({},c),{header:h.headers,trailer:b,message:f(h.body,b,h.headers,c.signal)})}})}}}function Un(e){let t=Ln(),n=Kn({baseUrl:`${t.webUrl}/${e.id}`,useBinaryFormat:!0});return Xn(Hn,n)}var Ce=null,$=null,wt=new Map;async function Tn(e,t){let n=await e.createChallenge({id:t});return{count:n.count,size:n.size,difficulty:n.difficulty,expires:n.expires?Q(n.expires):new Date,token:n.token,verificationToken:n.verificationToken}}async function Dn(e,t,n,r){let o=await e.redeemChallenge({id:t,verificationToken:n,solutions:r});return{token:o.token,expires:o.expires?Q(o.expires):new Date}}typeof window<"u"&&(window.CAP_CUSTOM_FETCH=async(e,t)=>{let n=e.toString();if(n.endsWith("/challenge")){if(!Ce||!$)return new Response(JSON.stringify({error:"Cap adapter not initialized"}),{status:500,headers:{"Content-Type":"application/json"}});try{let r=await Tn(Ce,$);return wt.set($,r.verificationToken),new Response(JSON.stringify({challenge:{c:r.count,s:r.size,d:r.difficulty},token:r.token,expires:r.expires.toISOString()}),{status:200,headers:{"Content-Type":"application/json"}})}catch(r){return new Response(JSON.stringify({error:String(r)}),{status:500,headers:{"Content-Type":"application/json"}})}}if(n.endsWith("/redeem")){if(!Ce||!$)return new Response(JSON.stringify({error:"Cap adapter not initialized"}),{status:500,headers:{"Content-Type":"application/json"}});let r=wt.get($);if(!r)return new Response(JSON.stringify({error:"No verification token found - challenge must be created first"}),{status:400,headers:{"Content-Type":"application/json"}});try{let a=((t?.body?JSON.parse(t.body):{}).solutions||[]).map(s=>BigInt(s)),i=await Dn(Ce,$,r,a);return wt.delete($),new Response(JSON.stringify({success:!0,token:i.token,expires:i.expires.toISOString()}),{status:200,headers:{"Content-Type":"application/json"}})}catch(o){return new Response(JSON.stringify({error:String(o)}),{status:500,headers:{"Content-Type":"application/json"}})}}return fetch(e,t)});function Ga(e,t){Ce=e,$=t}function Za(){$&&wt.delete($),Ce=null,$=null}var up=Ea(Aa(),1),ie=class{constructor(t){this.widgetContainer=null;this.widgetElement=null;this.destroyed=!1;this.options=t;let n=typeof t.container=="string"?document.getElementById(t.container):t.container;if(!n)throw new Error(`Container ${typeof t.container=="string"?`with id '${t.container}'`:""} not found`);this.containerElement=n,this.injectStyles(),Ga(t.client,t.automationId),this.mountWidget()}injectStyles(){if(document.getElementById("mb-adapt-cap-styles"))return;let t=document.createElement("style");t.id="mb-adapt-cap-styles",t.textContent=`
|
|
5
5
|
/* ============================================
|
|
6
6
|
Mochabug Adapt Cap Widget - Premium Design
|
|
7
7
|
============================================ */
|
|
@@ -138,7 +138,7 @@ to prevent this, set window.CAP_DONT_SKIP_REDEFINE to true`):customElements.defi
|
|
|
138
138
|
--mb-cap-font-size: 14px;
|
|
139
139
|
}
|
|
140
140
|
}
|
|
141
|
-
`,document.head.appendChild(t)}mountWidget(){this.widgetContainer=document.createElement("div"),this.widgetContainer.className="mb-adapt-cap";let t=document.createElement("div");if(t.className="mb-adapt-cap__container",this.widgetElement=document.createElement("cap-widget"),this.widgetElement.setAttribute("data-cap-api-endpoint",`/adapt-cap-${this.options.automationId}/`),this.options.workerCount&&this.widgetElement.setAttribute("data-cap-worker-count",String(this.options.workerCount)),this.options.i18n){let{i18n:n}=this.options;n.verifyingLabel&&this.widgetElement.setAttribute("data-cap-i18n-verifying-label",n.verifyingLabel),n.initialState&&this.widgetElement.setAttribute("data-cap-i18n-initial-state",n.initialState),n.solvedLabel&&this.widgetElement.setAttribute("data-cap-i18n-solved-label",n.solvedLabel),n.errorLabel&&this.widgetElement.setAttribute("data-cap-i18n-error-label",n.errorLabel)}this.widgetElement.addEventListener("solve",(n=>{if(this.destroyed)return;let r=n.detail?.token,o=n.detail?.expires,a=o?new Date(o):new Date;queueMicrotask(()=>this.destroy()),r?this.options.onSolve(r,a):this.options.onError?.(new Error("No token received from Cap.js"))})),this.widgetElement.addEventListener("error",(n=>{this.destroyed||(console.error("[AdaptCapWidget] Cap.js error:",n.detail),queueMicrotask(()=>this.destroy()),this.options.onError?.(new Error(n.detail?.message||"Cap.js error")))})),t.appendChild(this.widgetElement),this.widgetContainer.appendChild(t),this.containerElement.appendChild(this.widgetContainer)}setDarkMode(t){this.widgetContainer&&(t?this.widgetContainer.classList.add("mb-adapt-cap--dark"):this.widgetContainer.classList.remove("mb-adapt-cap--dark"))}destroy(){this.destroyed||(this.destroyed=!0,Za(),this.widgetContainer&&this.widgetContainer.parentNode&&this.widgetContainer.parentNode.removeChild(this.widgetContainer),this.widgetContainer=null,this.widgetElement=null)}};function
|
|
141
|
+
`,document.head.appendChild(t)}mountWidget(){this.widgetContainer=document.createElement("div"),this.widgetContainer.className="mb-adapt-cap";let t=document.createElement("div");if(t.className="mb-adapt-cap__container",this.widgetElement=document.createElement("cap-widget"),this.widgetElement.setAttribute("data-cap-api-endpoint",`/adapt-cap-${this.options.automationId}/`),this.options.workerCount&&this.widgetElement.setAttribute("data-cap-worker-count",String(this.options.workerCount)),this.options.i18n){let{i18n:n}=this.options;n.verifyingLabel&&this.widgetElement.setAttribute("data-cap-i18n-verifying-label",n.verifyingLabel),n.initialState&&this.widgetElement.setAttribute("data-cap-i18n-initial-state",n.initialState),n.solvedLabel&&this.widgetElement.setAttribute("data-cap-i18n-solved-label",n.solvedLabel),n.errorLabel&&this.widgetElement.setAttribute("data-cap-i18n-error-label",n.errorLabel)}this.widgetElement.addEventListener("solve",(n=>{if(this.destroyed)return;let r=n.detail?.token,o=n.detail?.expires,a=o?new Date(o):new Date;queueMicrotask(()=>this.destroy()),r?this.options.onSolve(r,a):this.options.onError?.(new Error("No token received from Cap.js"))})),this.widgetElement.addEventListener("error",(n=>{this.destroyed||(console.error("[AdaptCapWidget] Cap.js error:",n.detail),queueMicrotask(()=>this.destroy()),this.options.onError?.(new Error(n.detail?.message||"Cap.js error")))})),t.appendChild(this.widgetElement),this.widgetContainer.appendChild(t),this.containerElement.appendChild(this.widgetContainer)}setDarkMode(t){this.widgetContainer&&(t?this.widgetContainer.classList.add("mb-adapt-cap--dark"):this.widgetContainer.classList.remove("mb-adapt-cap--dark"))}destroy(){this.destroyed||(this.destroyed=!0,Za(),this.widgetContainer&&this.widgetContainer.parentNode&&this.widgetContainer.parentNode.removeChild(this.widgetContainer),this.widgetContainer=null,this.widgetElement=null)}};function Ft(e,t){return`${e}${t?`#mb_token=${encodeURIComponent(t)}`:""}`}var Vs=["automation-id","session-token","auth-token","transmitter","challenge-token","requires-challenge","inherit-token","fork-display-mode","side-by-side-split","dialog-backdrop-close","dialog-resize-to-content","dark-mode","auto-resizing","persist"],xs=typeof HTMLElement<"u"?HTMLElement:class{},Qe=class extends xs{constructor(){super();this._client=null}static get observedAttributes(){return Vs}get automationId(){return this.getAttribute("automation-id")}set automationId(n){n===null?this.removeAttribute("automation-id"):this.setAttribute("automation-id",n)}get darkMode(){return this.hasAttribute("dark-mode")}set darkMode(n){n?this.setAttribute("dark-mode",""):this.removeAttribute("dark-mode")}get autoResizing(){return this.hasAttribute("auto-resizing")}set autoResizing(n){n?this.setAttribute("auto-resizing",""):this.removeAttribute("auto-resizing")}get forkDisplayMode(){return this.getAttribute("fork-display-mode")==="dialog"?"dialog":"side-by-side"}set forkDisplayMode(n){this.setAttribute("fork-display-mode",n)}get dialogBackdropClose(){return this.hasAttribute("dialog-backdrop-close")}set dialogBackdropClose(n){n?this.setAttribute("dialog-backdrop-close",""):this.removeAttribute("dialog-backdrop-close")}get dialogResizeToContent(){return this.hasAttribute("dialog-resize-to-content")}set dialogResizeToContent(n){n?this.setAttribute("dialog-resize-to-content",""):this.removeAttribute("dialog-resize-to-content")}get persist(){return this.hasAttribute("persist")}set persist(n){n?this.setAttribute("persist",""):this.removeAttribute("persist")}async newSession(){this._client&&await this._client.newSession()}connectedCallback(){queueMicrotask(()=>this._tryInit())}disconnectedCallback(){this._destroyClient()}attributeChangedCallback(n,r,o){if(r!==o){if(n==="automation-id"||n==="persist"){this._destroyClient(),queueMicrotask(()=>this._tryInit());return}if(this._client)switch(n){case"fork-display-mode":this._client.setForkDisplayMode(this.forkDisplayMode);break;case"dialog-backdrop-close":this._client.setDialogBackdropClose(this.dialogBackdropClose);break;case"dialog-resize-to-content":this._client.setDialogResizeToContent(this.dialogResizeToContent);break;case"dark-mode":this._client.setDarkMode(this.darkMode);break;case"auto-resizing":this._client.setAutoResizing(this.autoResizing);break}}}_tryInit(){if(this._client||!this.isConnected)return;let n=this.automationId;if(!n)return;let r=this.getAttribute("session-token"),o=this.getAttribute("auth-token"),a=this.getAttribute("transmitter"),i=this.getAttribute("challenge-token"),s=this.hasAttribute("requires-challenge"),u=this.getAttribute("inherit-token"),m=this.getAttribute("side-by-side-split"),I;this.forkDisplayMode==="dialog"?I={mode:"dialog",backdropClose:this.dialogBackdropClose,resizeToContent:this.dialogResizeToContent}:I={mode:"side-by-side",...m!==null&&{split:Number(m)}};let f={container:this,id:n,forkDisplay:I,darkMode:this.darkMode,autoResizing:this.autoResizing,onSession:(l,c)=>{this.onSessionCallback?.(l,c),this.dispatchEvent(new CustomEvent("adapt-session",{detail:{status:l,fork:c},bubbles:!0}))},onOutput:l=>{this.onOutputCallback?.(l),this.dispatchEvent(new CustomEvent("adapt-output",{detail:{output:l},bubbles:!0}))},onForkActive:l=>{this.onForkActiveCallback?.(l),this.dispatchEvent(new CustomEvent("adapt-fork-active",{detail:{active:l},bubbles:!0}))}};r&&(f.sessionToken=r),o&&(f.authToken=o),a&&(f.transmitter=a),i&&(f.challengeToken=i),s&&(f.requiresChallenge=!0),u&&(f.inheritToken=u),this.signals!==void 0&&(f.signals=this.signals),this.capWidgetOptions!==void 0&&(f.capWidgetOptions=this.capWidgetOptions),this.inheritFrom!==void 0&&(f.inheritFrom=this.inheritFrom),this.classNames!==void 0&&(f.classNames=this.classNames),this.styles!==void 0&&(f.styles=this.styles),this.persistOptions!==void 0?f.persist=this.persistOptions:this.persist&&(f.persist=!0),this._client=new _e(f)}_destroyClient(){this._client&&(this._client.destroy(),this._client=null)}};if(typeof customElements<"u"&&!customElements.get("adapt-automation")){customElements.define("adapt-automation",Qe);let e="adapt-element-display";if(!document.getElementById(e)){let t=document.createElement("style");t.id=e,t.textContent="adapt-automation, adapt-cap { display: block; }",document.head.appendChild(t)}}var Ss=["automation-id","dark-mode","worker-count"],Xs=typeof HTMLElement<"u"?HTMLElement:class{},Oe=class extends Xs{constructor(){super();this._widget=null}static get observedAttributes(){return Ss}get client(){return this._client}set client(n){this._client=n,this._destroyWidget(),this._tryInit()}get automationId(){return this.getAttribute("automation-id")}set automationId(n){n===null?this.removeAttribute("automation-id"):this.setAttribute("automation-id",n)}get darkMode(){return this.hasAttribute("dark-mode")}set darkMode(n){n?this.setAttribute("dark-mode",""):this.removeAttribute("dark-mode")}connectedCallback(){this._tryInit()}disconnectedCallback(){this._destroyWidget()}attributeChangedCallback(n,r,o){if(r!==o){if(n==="automation-id"){this._destroyWidget(),this._tryInit();return}if(n==="dark-mode"){this._widget?.setDarkMode(this.darkMode);return}}}_tryInit(){if(this._widget||!this.isConnected)return;let n=this.automationId;if(!n||!this._client)return;let r=this.getAttribute("worker-count");this._widget=new ie({container:this,automationId:n,client:this._client,onSolve:(o,a)=>{this.onSolveCallback?.(o,a),this.dispatchEvent(new CustomEvent("adapt-cap-solve",{detail:{token:o,expires:a},bubbles:!0}))},onError:o=>{this.onErrorCallback?.(o),this.dispatchEvent(new CustomEvent("adapt-cap-error",{detail:{error:o},bubbles:!0}))},...r!==null&&{workerCount:Number(r)},...this.i18n!==void 0&&{i18n:this.i18n}}),this.darkMode&&this._widget.setDarkMode(!0)}_destroyWidget(){this._widget&&(this._widget.destroy(),this._widget=null)}};if(typeof customElements<"u"&&!customElements.get("adapt-cap")){customElements.define("adapt-cap",Oe);let e="adapt-element-display";if(!document.getElementById(e)){let t=document.createElement("style");t.id=e,t.textContent="adapt-automation, adapt-cap { display: block; }",document.head.appendChild(t)}}typeof window<"u"&&!window.CAP_CUSTOM_WASM_URL&&(window.CAP_CUSTOM_WASM_URL=new URL("https://cdn.mochabug.com/adapt/web/1.0.0-rc55/cap_wasm.js",window.location.href).href);function Bs(e,t="both"){let n=`mb_adapt_${e}`;(t==="session"||t==="both")&&sessionStorage.removeItem(n),(t==="local"||t==="both")&&localStorage.removeItem(n)}var Ws=`
|
|
142
142
|
.mb-adapt {
|
|
143
143
|
width: 100%;
|
|
144
144
|
min-height: inherit;
|
|
@@ -672,4 +672,4 @@ cap-widget::part(attribution) {
|
|
|
672
672
|
background: var(--mb-adapt-banner-bg);
|
|
673
673
|
border: 1px solid var(--mb-adapt-banner-border);
|
|
674
674
|
}
|
|
675
|
-
`,_e=class e{constructor(t){this.rootElement=null;this.mainUrl=null;this.forkQueue=[];this.currentFork=null;this.sessionToken=null;this.isDragging=!1;this.responsiveShowMain=!1;this.wrapperElement=null;this.mainFrameElement=null;this.forkFrameElement=null;this.mainIframe=null;this.forkIframe=null;this.dragHandleElement=null;this.forkExpandButton=null;this.forkToolbarElement=null;this.mainContainer=null;this.dialogBackdrop=null;this.dialogElement=null;this.dialogExpandButton=null;this.mouseMoveHandler=null;this.mouseUpHandler=null;this.resizeObserver=null;this.messageHandler=null;this.backdropClickHandler=null;this.destroyed=!1;this.lastForkActive=null;this.stoppedPlaceholder=null;this.capWidgetInstance=null;this.options=t;let n=t.forkDisplay??{mode:"side-by-side"};n.mode==="dialog"?this.forkDisplay={...n,resizeToContent:n.resizeToContent??!0,backdropClose:n.backdropClose??!0}:this.forkDisplay=n,this.splitPercentage=this.forkDisplay.mode==="side-by-side"?this.forkDisplay.split??50:50,this.darkMode=t.darkMode??!1,this.autoResizing=t.autoResizing??!1;let r=typeof t.container=="string"?document.getElementById(t.container):t.container;if(!r)throw new Error(`Container with id '${t.container}' not found`);this.container=r;let o=Kn({id:t.id});this.client=fa(o,t.id),this.injectDefaultStyles(),this.createRootElement(),this.createInitialStructure(),this.setupDragListeners(),this.setupResizeObserver(),this.setupMessageListener(),this.init()}static{this.COLLAPSE_THRESHOLD=15}static{this.RESPONSIVE_BREAKPOINT=900}static{this.DIALOG_FULLSCREEN_BREAKPOINT=639}createInitialStructure(){this.forkDisplay.mode==="dialog"?this.createDialogStructure():this.createSideBySideStructure()}setupResizeObserver(){this.rootElement&&(this.resizeObserver=new ResizeObserver(()=>{this.forkDisplay.mode==="side-by-side"&&this.currentFork&&this.updateSideBySideVisibility(),this.forkDisplay.mode==="dialog"&&this.dialogElement&&window.innerWidth<=e.DIALOG_FULLSCREEN_BREAKPOINT&&(this.dialogElement.style.height="")}),this.resizeObserver.observe(this.rootElement))}getOrigin(t){try{return new URL(t).origin}catch{return null}}isValidMessageOrigin(t){if(this.mainUrl){let n=this.getOrigin(this.mainUrl);if(n&&t===n)return!0}if(this.currentFork?.url){let n=this.getOrigin(this.currentFork.url);if(n&&t===n)return!0}return!1}setupMessageListener(){this.messageHandler=t=>{if(!this.isValidMessageOrigin(t.origin))return;let n=t.data;if(!n||typeof n!="object"||n.type!=="adapt-resize")return;let{height:r}=n;if(typeof r!="number"||!Number.isFinite(r)||r<1)return;let o=t.source;if(this.mainIframe?.contentWindow===o)this.autoResizing&&(this.mainIframe.style.height=`${r}px`);else if(this.forkIframe?.contentWindow===o&&(this.autoResizing&&(this.forkIframe.style.height=`${r}px`),this.forkDisplay.mode==="dialog"&&this.forkDisplay.resizeToContent&&this.dialogElement&&window.innerWidth>e.DIALOG_FULLSCREEN_BREAKPOINT)){let a=this.forkToolbarElement?.offsetHeight??36,m=Math.ceil(r)+a+24+2;this.dialogElement.style.height=`clamp(300px, ${m}px, 90vh)`}},window.addEventListener("message",this.messageHandler)}sendDarkModeToIframe(t){if(!t)return;let n=t.src,r=n?this.getOrigin(n):null;if(!r)return;let o={type:"adapt-darkMode",darkMode:this.darkMode};try{t.contentWindow?.postMessage(o,r)}catch{}}sendAutoResizingToIframe(t){if(!t)return;let n=t.src,r=n?this.getOrigin(n):null;if(!r)return;let o=this.autoResizing;t===this.forkIframe&&this.forkDisplay.mode==="dialog"&&this.forkDisplay.resizeToContent&&(o=!0);let a={type:"adapt-autoResizing",autoResizing:o};try{t.contentWindow?.postMessage(a,r)}catch{}}sendAutoResizingToForkIframe(t){if(!this.forkIframe)return;let n=this.forkIframe.src,r=n?this.getOrigin(n):null;if(!r)return;let o={type:"adapt-autoResizing",autoResizing:t};try{this.forkIframe.contentWindow?.postMessage(o,r)}catch{}}setDarkMode(t){this.darkMode!==t&&(this.darkMode=t,this.rootElement&&(t?this.rootElement.classList.add("mb-adapt--dark"):this.rootElement.classList.remove("mb-adapt--dark")),this.capWidgetInstance?.setDarkMode(t),this.sendDarkModeToIframe(this.mainIframe),this.sendDarkModeToIframe(this.forkIframe))}setAutoResizing(t){this.autoResizing!==t&&(this.autoResizing=t,this.sendAutoResizingToIframe(this.mainIframe),this.sendAutoResizingToIframe(this.forkIframe),t||(this.mainIframe&&(this.mainIframe.style.height=""),this.forkIframe&&(this.forkIframe.style.height="")))}setForkDisplayMode(t){this.forkDisplay.mode!==t&&(t==="side-by-side"?this.forkDisplay={mode:"side-by-side",split:this.splitPercentage}:this.forkDisplay={mode:"dialog",resizeToContent:!0,backdropClose:!0},this.mainIframe?.parentNode&&this.mainIframe.parentNode.removeChild(this.mainIframe),this.forkIframe?.parentNode&&this.forkIframe.parentNode.removeChild(this.forkIframe),this.rootElement&&(this.rootElement.innerHTML=""),this.wrapperElement=null,this.mainFrameElement=null,this.forkFrameElement=null,this.dragHandleElement=null,this.forkExpandButton=null,this.forkToolbarElement=null,this.mainContainer=null,this.dialogBackdrop=null,this.dialogElement=null,this.dialogExpandButton=null,this.backdropClickHandler=null,t==="dialog"?this.createDialogStructure():this.createSideBySideStructure(),t==="side-by-side"?this.updateSideBySideVisibility():this.updateDialogVisibility(),this.mainUrl&&this.mainIframe&&this.showIframe(this.mainIframe),this.currentFork&&this.forkIframe&&this.showIframe(this.forkIframe),this.autoResizing&&(this.sendAutoResizingToIframe(this.mainIframe),this.sendAutoResizingToIframe(this.forkIframe)),t==="side-by-side"&&!this.currentFork&&this.forkQueue.length>0&&this.activateNextFork())}setDialogBackdropClose(t){this.forkDisplay.mode==="dialog"&&this.forkDisplay.backdropClose!==t&&(this.forkDisplay={...this.forkDisplay,backdropClose:t},this.dialogBackdrop&&(this.backdropClickHandler&&(this.dialogBackdrop.removeEventListener("click",this.backdropClickHandler),this.backdropClickHandler=null),t&&(this.backdropClickHandler=()=>{this.handleForkMinimize()},this.dialogBackdrop.addEventListener("click",this.backdropClickHandler))))}setDialogResizeToContent(t){this.forkDisplay.mode==="dialog"&&this.forkDisplay.resizeToContent!==t&&(this.forkDisplay={...this.forkDisplay,resizeToContent:t},t?this.sendAutoResizingToForkIframe(!0):(this.dialogElement&&(this.dialogElement.style.height=""),this.autoResizing||this.sendAutoResizingToForkIframe(!1)))}setupDragListeners(){let t=this.splitPercentage,n=!1,r=a=>{if(!this.isDragging||!this.rootElement)return;let i=this.rootElement.getBoundingClientRect();if(i.width===0)return;t=(a.clientX-i.left)/i.width*100;let m=t,u=100-t;m<e.COLLAPSE_THRESHOLD?n||(n=!0,this.splitPercentage=0,this.updateSideBySideVisibility()):u<e.COLLAPSE_THRESHOLD?n||(n=!0,this.splitPercentage=100,this.updateSideBySideVisibility()):(n=!1,this.splitPercentage=Math.max(e.COLLAPSE_THRESHOLD,Math.min(100-e.COLLAPSE_THRESHOLD,t)),this.updateSideBySideWidths())},o=()=>{this.isDragging&&(this.isDragging=!1,n=!1,document.getElementById("mb-adapt-drag-overlay")?.remove(),this.rootElement?.querySelectorAll(".mb-adapt__iframe-overlay").forEach(a=>a.remove()),this.mainFrameElement&&(this.mainFrameElement.style.transition=""),this.forkFrameElement&&(this.forkFrameElement.style.transition=""),this.dragHandleElement&&(this.dragHandleElement.style.transition=""),this.splitPercentage!==0&&this.splitPercentage!==100&&t>=e.COLLAPSE_THRESHOLD&&100-t>=e.COLLAPSE_THRESHOLD&&(this.splitPercentage=t),t=this.splitPercentage)};this.mouseMoveHandler=r,this.mouseUpHandler=o,document.addEventListener("mousemove",this.mouseMoveHandler),document.addEventListener("mouseup",this.mouseUpHandler)}injectDefaultStyles(){if(document.getElementById("mb-adapt-styles"))return;let t=document.createElement("style");t.id="mb-adapt-styles",t.textContent=Bs,document.head.appendChild(t)}createRootElement(){this.rootElement=document.createElement("div"),this.rootElement.className=this.options.classNames?.root||"mb-adapt",this.darkMode&&this.rootElement.classList.add("mb-adapt--dark"),this.options.styles&&Object.assign(this.rootElement.style,this.options.styles),this.container.appendChild(this.rootElement)}parseInheritToken(){let t=this.options.inheritFrom;return t?"hash"in t?this.parseFromHash(t.hash):this.parseFromParam(t.param):null}parseFromHash(t){let n=window.location.hash.slice(1);if(!n)return null;let r=new URLSearchParams(n),o=r.get(t);if(!o)return null;r.delete(t);let a=r.toString(),i=window.location.pathname+window.location.search+(a?"#"+a:"");return history.replaceState(null,"",i),decodeURIComponent(o)}parseFromParam(t){let n=new URLSearchParams(window.location.search),r=n.get(t);if(!r)return null;n.delete(t);let o=n.toString(),a=window.location.pathname+(o?"?"+o:"")+window.location.hash;return history.replaceState(null,"",a),decodeURIComponent(r)}async init(){let t={onUrl:n=>this.onUrl(n),onSession:n=>{n.status==="STATUS_COMPLETED"&&!n.fork&&this.handleSessionComplete(),this.options.onSession&&this.options.onSession(n.status||"STATUS_UNSPECIFIED",n.fork)}};if(this.options.onOutput&&(t.onOutput=this.options.onOutput),this.options.sessionToken)this.sessionToken=this.options.sessionToken,await this.client.subscribe(this.sessionToken,t);else{let n=this.parseInheritToken(),r=n||this.options.inheritToken;if(this.options.inheritFrom&&!n){let i="hash"in this.options.inheritFrom?`hash key '${this.options.inheritFrom.hash}'`:`param '${this.options.inheritFrom.param}'`;console.error(`[AdaptWebClient] No inherit token found in URL ${i}`);return}let o=this.options.challengeToken;if(this.options.requiresChallenge&&!o&&!r&&(o=await this.showCapWidgetAndSolve(),!o)){console.error("[AdaptWebClient] Failed to solve challenge");return}let a;if(r)a=await this.client.runInherit(r,t);else{let i={...t};this.options.transmitter!==void 0&&(i.transmitter=this.options.transmitter),this.options.signals!==void 0&&(i.signals=this.options.signals),this.options.authToken!==void 0&&(i.authToken=this.options.authToken),o!==void 0&&(i.challengeToken=o),a=await this.client.run(i)}this.sessionToken=a.sessionToken}}async showCapWidgetAndSolve(){return new Promise(t=>{this.capWidgetInstance=new ie({container:this.rootElement,automationId:this.options.id,client:this.client.raw,...this.options.capWidgetOptions?.workerCount!==void 0&&{workerCount:this.options.capWidgetOptions.workerCount},...this.options.capWidgetOptions?.i18n&&{i18n:this.options.capWidgetOptions.i18n},onSolve:n=>{this.capWidgetInstance=null,t(n)},onError:n=>{console.error("[AdaptWebClient] Cap.js error:",n),this.capWidgetInstance=null,t(void 0)}}),this.darkMode&&this.capWidgetInstance.setDarkMode(!0)})}destroyCapWidget(){this.capWidgetInstance&&(this.capWidgetInstance.destroy(),this.capWidgetInstance=null)}async destroy(){this.destroyed=!0,this.destroyCapWidget(),this.sessionToken&&this.client.stop(this.sessionToken).catch(()=>{}),await this.client.unsubscribe(),this.mouseMoveHandler&&document.removeEventListener("mousemove",this.mouseMoveHandler),this.mouseUpHandler&&document.removeEventListener("mouseup",this.mouseUpHandler),this.messageHandler&&window.removeEventListener("message",this.messageHandler),this.resizeObserver&&this.resizeObserver.disconnect(),this.rootElement?.parentNode?.removeChild(this.rootElement),this.mainUrl=null,this.mainToken=void 0,this.forkQueue=[],this.currentFork=null,this.sessionToken=null,this.lastForkActive=null,this.rootElement=null,this.wrapperElement=null,this.mainFrameElement=null,this.forkFrameElement=null,this.mainIframe=null,this.forkIframe=null,this.dragHandleElement=null,this.forkExpandButton=null,this.forkToolbarElement=null,this.mainContainer=null,this.dialogBackdrop=null,this.dialogElement=null,this.dialogExpandButton=null,this.mouseMoveHandler=null,this.mouseUpHandler=null,this.resizeObserver=null,this.messageHandler=null,this.backdropClickHandler=null,this.stoppedPlaceholder=null}onUrl(t){if(this.destroyed)return;let n=t.fork||"";if(t.stopped){this.handleStoppedMessage(n);return}if(t.done){this.handleDoneMessage(n);return}t.url&&(n?this.handleForkUrl(t.url,t.token,n):this.handleMainUrl(t.url,t.token))}handleSessionComplete(){this.currentFork=null,this.forkQueue=[],this.forkDisplay.mode==="side-by-side"?this.updateSideBySideVisibility():this.forkDisplay.mode==="dialog"&&this.updateDialogVisibility()}handleDoneMessage(t){t&&(this.forkQueue=this.forkQueue.filter(n=>n.fork!==t&&!n.completed),this.currentFork?.fork===t?this.forkQueue.length>0?(this.currentFork=null,this.activateNextFork()):this.currentFork.completed=!0:this.forkDisplay.mode==="dialog"&&this.updateDialogVisibility())}handleStoppedMessage(t){if(!t){this.mainUrl=null,this.mainToken=void 0,this.mainIframe&&(this.mainIframe.src="about:blank",this.mainIframe.classList.remove("mb-adapt__iframe--visible"),this.mainIframe.classList.add("mb-adapt__iframe--hidden")),this.showStoppedPlaceholder();return}this.forkQueue=this.forkQueue.filter(n=>n.fork!==t),this.currentFork?.fork===t?(this.currentFork=null,this.forkQueue.length>0?this.activateNextFork():(this.forkIframe&&(this.forkIframe.src="about:blank",this.forkIframe.classList.remove("mb-adapt__iframe--visible"),this.forkIframe.classList.add("mb-adapt__iframe--hidden")),this.forkDisplay.mode==="side-by-side"?this.updateSideBySideVisibility():this.updateDialogVisibility())):this.forkDisplay.mode==="dialog"&&this.updateDialogVisibility()}handleMainUrl(t,n){this.removeStoppedPlaceholder(),this.mainUrl=t,this.mainToken=n,this.updateMainIframe()}handleForkUrl(t,n,r){let o=(r.match(/\//g)||[]).length,a={url:t,token:n,fork:r,depth:o,time:Date.now()};this.mainUrl||(this.mainUrl=t,this.mainToken=n,this.updateMainIframe()),this.forkQueue.push(a),(!this.currentFork||this.currentFork.completed)&&(this.currentFork=null,this.activateNextFork())}activateNextFork(){this.forkQueue.length!==0&&(this.forkQueue.sort((t,n)=>t.depth!==n.depth?n.depth-t.depth:n.time-t.time),this.currentFork=this.forkQueue.shift(),this.updateForkIframe(),this.forkDisplay.mode==="dialog"?this.updateDialogVisibility():this.updateSideBySideVisibility())}updateMainIframe(){if(!this.rootElement||!this.mainUrl||!this.mainIframe)return;let t=Qn(this.mainUrl,this.mainToken);this.mainIframe.src!==t&&(this.mainIframe.src=t),this.showIframe(this.mainIframe),this.forkDisplay.mode==="side-by-side"&&this.updateSideBySideVisibility()}updateForkIframe(){if(!this.currentFork||!this.forkIframe)return;let t=Qn(this.currentFork.url,this.currentFork.token),n=this.forkIframe.parentElement;if(n){let r=this.createHiddenIframe();n.replaceChild(r,this.forkIframe),this.forkIframe=r}this.forkIframe.src=t,this.showIframe(this.forkIframe)}createSideBySideStructure(){this.wrapperElement||(this.rootElement.innerHTML="",this.wrapperElement=document.createElement("div"),this.wrapperElement.className=this.options.classNames?.wrapper||"mb-adapt__wrapper",this.mainFrameElement=document.createElement("div"),this.mainFrameElement.className=this.options.classNames?.frameMain||`${this.options.classNames?.frame||"mb-adapt__frame"} mb-adapt__frame--main`,this.mainFrameElement.classList.add("mb-adapt__frame--hidden"),this.forkFrameElement=document.createElement("div"),this.forkFrameElement.className=this.options.classNames?.frameFork||`${this.options.classNames?.frame||"mb-adapt__frame"} mb-adapt__frame--fork`,this.forkFrameElement.classList.add("mb-adapt__frame--hidden"),this.mainIframe||(this.mainIframe=this.createHiddenIframe()),this.forkIframe||(this.forkIframe=this.createHiddenIframe()),this.forkIframe.style.borderRadius="",this.mainFrameElement.appendChild(this.mainIframe),this.forkToolbarElement=this.createForkToolbar(),this.forkFrameElement.classList.add("mb-adapt__frame--has-toolbar"),this.forkFrameElement.appendChild(this.forkToolbarElement),this.forkFrameElement.appendChild(this.forkIframe),this.dragHandleElement=document.createElement("div"),this.dragHandleElement.className=this.options.classNames?.dragHandle||"mb-adapt__drag-handle",this.dragHandleElement.classList.add("mb-adapt__frame--hidden"),this.dragHandleElement.style.transform="translateX(-50%)",this.dragHandleElement.addEventListener("mousedown",t=>{t.preventDefault(),this.isDragging=!0,this.mainFrameElement&&(this.mainFrameElement.style.transition="none"),this.forkFrameElement&&(this.forkFrameElement.style.transition="none"),this.dragHandleElement&&(this.dragHandleElement.style.transition="none");let n=document.createElement("div");n.className="mb-adapt__drag-overlay",n.id="mb-adapt-drag-overlay",this.rootElement.appendChild(n),[this.mainFrameElement,this.forkFrameElement].forEach(r=>{if(r){let o=document.createElement("div");o.className="mb-adapt__iframe-overlay",r.appendChild(o)}})}),this.forkExpandButton=document.createElement("button"),this.forkExpandButton.className=this.options.classNames?.expandButton||"mb-adapt__expand-button",this.forkExpandButton.classList.add("mb-adapt__expand-button--right"),this.forkExpandButton.innerHTML="\u2039",this.forkExpandButton.setAttribute("aria-label","Expand fork frame"),this.forkExpandButton.setAttribute("title","Expand fork frame"),this.forkExpandButton.addEventListener("click",()=>{this.isResponsiveMode()?this.responsiveShowMain=!1:this.splitPercentage=50,this.updateSideBySideVisibility()}),this.wrapperElement.appendChild(this.mainFrameElement),this.wrapperElement.appendChild(this.forkFrameElement),this.wrapperElement.appendChild(this.dragHandleElement),this.wrapperElement.appendChild(this.forkExpandButton),this.rootElement.appendChild(this.wrapperElement))}isResponsiveMode(){return this.rootElement?this.rootElement.offsetWidth<e.RESPONSIVE_BREAKPOINT:!1}emitForkActive(){if(!this.options.onForkActive)return;let t;this.currentFork?this.forkDisplay.mode==="dialog"?t=!0:t=100-this.splitPercentage>=e.COLLAPSE_THRESHOLD&&!this.isResponsiveMode():t=!1,t!==this.lastForkActive&&(this.lastForkActive=t,this.options.onForkActive(t))}updateSideBySideVisibility(){if(!this.mainFrameElement||!this.forkFrameElement||!this.dragHandleElement)return;if(!this.currentFork){this.mainFrameElement.style.width="100%",this.mainFrameElement.classList.remove("mb-adapt__frame--hidden"),this.forkFrameElement.classList.add("mb-adapt__frame--hidden"),this.mainFrameElement.style.paddingRight="",this.dragHandleElement.classList.add("mb-adapt__frame--hidden"),this.forkExpandButton.classList.remove("mb-adapt__expand-button--visible"),this.emitForkActive();return}if(this.isResponsiveMode()){this.dragHandleElement.classList.add("mb-adapt__frame--hidden"),this.responsiveShowMain?(this.mainFrameElement.style.width="100%",this.mainFrameElement.classList.remove("mb-adapt__frame--hidden"),this.forkFrameElement.style.width="0%",this.forkFrameElement.classList.add("mb-adapt__frame--hidden"),this.forkExpandButton.classList.add("mb-adapt__expand-button--visible"),this.mainFrameElement.style.paddingRight="24px"):(this.mainFrameElement.style.width="0%",this.mainFrameElement.classList.add("mb-adapt__frame--hidden"),this.forkFrameElement.style.width="100%",this.forkFrameElement.classList.remove("mb-adapt__frame--hidden"),this.forkExpandButton.classList.remove("mb-adapt__expand-button--visible"),this.mainFrameElement.style.paddingRight=""),this.emitForkActive();return}this.responsiveShowMain=!1;let t=this.splitPercentage,n=100-this.splitPercentage,r=t<e.COLLAPSE_THRESHOLD,o=n<e.COLLAPSE_THRESHOLD;this.mainFrameElement.style.width=r?"0%":`${t}%`,r?this.mainFrameElement.classList.add("mb-adapt__frame--hidden"):this.mainFrameElement.classList.remove("mb-adapt__frame--hidden"),this.forkFrameElement.style.width=o?"0%":`${n}%`,o?this.forkFrameElement.classList.add("mb-adapt__frame--hidden"):this.forkFrameElement.classList.remove("mb-adapt__frame--hidden"),this.dragHandleElement.style.left=`${this.splitPercentage}%`,this.dragHandleElement.classList.remove("mb-adapt__frame--hidden"),r||o?this.dragHandleElement.classList.add("mb-adapt__drag-handle--disabled"):this.dragHandleElement.classList.remove("mb-adapt__drag-handle--disabled"),o?(this.forkExpandButton.classList.add("mb-adapt__expand-button--visible"),this.mainFrameElement.style.paddingRight="24px"):(this.forkExpandButton.classList.remove("mb-adapt__expand-button--visible"),this.mainFrameElement.style.paddingRight=""),this.emitForkActive()}updateSideBySideWidths(){if(!this.mainFrameElement||!this.forkFrameElement||!this.dragHandleElement)return;let t=this.splitPercentage,n=100-this.splitPercentage;this.mainFrameElement.style.width=`${t}%`,this.forkFrameElement.style.width=`${n}%`,this.dragHandleElement.style.left=`${this.splitPercentage}%`}createForkToolbar(){let t=document.createElement("div");t.className=this.options.classNames?.toolbar||"mb-adapt__toolbar";let n=document.createElement("div");n.className="mb-adapt__toolbar-actions";let r=document.createElement("button");r.className=this.options.classNames?.toolbarButton||"mb-adapt__toolbar-btn",r.setAttribute("aria-label","Minimize fork"),r.setAttribute("title","Minimize"),r.innerHTML='<svg viewBox="0 0 16 16"><line x1="3" y1="8" x2="13" y2="8"/></svg>',r.addEventListener("click",()=>{this.handleForkMinimize()});let o=document.createElement("button");return o.className=`${this.options.classNames?.toolbarButton||"mb-adapt__toolbar-btn"} mb-adapt__toolbar-btn--exit`,o.setAttribute("aria-label","Close fork"),o.setAttribute("title","Close"),o.innerHTML='<svg viewBox="0 0 16 16"><line x1="4" y1="4" x2="12" y2="12"/><line x1="12" y1="4" x2="4" y2="12"/></svg>',o.addEventListener("click",()=>{this.handleForkExit()}),n.appendChild(r),n.appendChild(o),t.appendChild(n),t}handleForkMinimize(){this.currentFork&&(this.forkDisplay.mode==="side-by-side"?(this.isResponsiveMode()&&(this.responsiveShowMain=!0),this.splitPercentage=100,this.updateSideBySideVisibility()):(this.forkQueue.unshift(this.currentFork),this.currentFork=null,this.updateDialogVisibility()))}handleForkExit(){if(!this.currentFork)return;let t=this.currentFork.fork;this.sessionToken&&this.client.stop(this.sessionToken,t).catch(()=>{}),this.forkQueue=this.forkQueue.filter(n=>n.fork!==t),this.currentFork=null,this.forkQueue.length>0?this.activateNextFork():(this.forkIframe&&(this.forkIframe.src="about:blank",this.forkIframe.classList.remove("mb-adapt__iframe--visible"),this.forkIframe.classList.add("mb-adapt__iframe--hidden")),this.forkDisplay.mode==="side-by-side"?this.updateSideBySideVisibility():this.updateDialogVisibility())}createDialogStructure(){if(this.mainContainer)return;this.rootElement.innerHTML="",this.mainContainer=document.createElement("div"),this.mainContainer.className="mb-adapt__main-container",this.mainIframe||(this.mainIframe=this.createHiddenIframe()),this.mainContainer.appendChild(this.mainIframe),this.dialogExpandButton=document.createElement("button"),this.dialogExpandButton.className=this.options.classNames?.expandButton||"mb-adapt__expand-button",this.dialogExpandButton.classList.add("mb-adapt__expand-button--dialog"),this.dialogExpandButton.innerHTML="\u2304",this.dialogExpandButton.setAttribute("aria-label","Open fork dialog"),this.dialogExpandButton.setAttribute("title","Open fork dialog"),this.dialogExpandButton.addEventListener("click",()=>{this.activateNextFork()}),this.dialogBackdrop=document.createElement("div"),this.dialogBackdrop.className=this.options.classNames?.dialogBackdrop||"mb-adapt__dialog-backdrop",this.forkDisplay.mode==="dialog"&&this.forkDisplay.backdropClose&&(this.backdropClickHandler=()=>{this.handleForkMinimize()},this.dialogBackdrop.addEventListener("click",this.backdropClickHandler)),this.dialogElement=document.createElement("div"),this.dialogElement.className=this.options.classNames?.dialog||"mb-adapt__dialog",this.forkDisplay.mode==="dialog"&&this.forkDisplay.resizeToContent&&window.innerWidth>e.DIALOG_FULLSCREEN_BREAKPOINT&&(this.dialogElement.style.height="min(var(--mb-adapt-dialog-min-height), 90vh)"),this.forkToolbarElement=this.createForkToolbar(),this.dialogElement.appendChild(this.forkToolbarElement);let t=document.createElement("div");t.style.flex="1",t.style.overflow="auto",t.style.minHeight="0",t.style.padding="12px",this.forkIframe||(this.forkIframe=this.createHiddenIframe()),this.forkIframe.style.borderRadius="0",t.appendChild(this.forkIframe),this.dialogElement.appendChild(t),this.mainContainer.appendChild(this.dialogExpandButton),this.rootElement.appendChild(this.mainContainer),this.rootElement.appendChild(this.dialogBackdrop),this.rootElement.appendChild(this.dialogElement)}updateDialogVisibility(){if(!this.dialogExpandButton||!this.dialogBackdrop||!this.dialogElement)return;let t=this.forkQueue.length>0,n=this.currentFork!==null;!n&&t?(this.dialogExpandButton.classList.add("mb-adapt__expand-button--visible"),this.mainContainer.style.paddingTop="26px"):(this.dialogExpandButton.classList.remove("mb-adapt__expand-button--visible"),this.mainContainer.style.paddingTop=""),n?(this.dialogBackdrop.classList.add("mb-adapt__dialog-backdrop--visible"),this.dialogElement.classList.add("mb-adapt__dialog--visible")):(this.dialogBackdrop.classList.remove("mb-adapt__dialog-backdrop--visible"),this.dialogElement.classList.remove("mb-adapt__dialog--visible"),this.dialogElement.style.height=""),this.emitForkActive()}createHiddenIframe(){let t=document.createElement("iframe");return t.className=this.options.classNames?.iframe||"mb-adapt__iframe",t.setAttribute("sandbox","allow-downloads allow-same-origin allow-scripts allow-popups allow-forms allow-modals"),t.setAttribute("allow","geolocation; accelerometer; midi; microphone; camera; magnetometer; gyroscope; fullscreen; payment;"),t.src="about:blank",t.addEventListener("load",()=>{t.src&&t.src!=="about:blank"&&(this.sendDarkModeToIframe(t),this.sendAutoResizingToIframe(t))}),t}showStoppedPlaceholder(){if(!this.mainFrameElement&&!this.mainContainer)return;this.removeStoppedPlaceholder(),this.stoppedPlaceholder=document.createElement("div"),this.stoppedPlaceholder.className="mb-adapt__stopped-placeholder",this.stoppedPlaceholder.textContent="This session has been stopped",(this.mainFrameElement||this.mainContainer).appendChild(this.stoppedPlaceholder)}removeStoppedPlaceholder(){this.stoppedPlaceholder&&(this.stoppedPlaceholder.remove(),this.stoppedPlaceholder=null)}showIframe(t){t.classList.remove("mb-adapt__iframe--hidden"),t.offsetHeight,t.classList.add("mb-adapt__iframe--visible")}};return Ja(Ws);})();
|
|
675
|
+
`,_e=class e{constructor(t){this.rootElement=null;this.mainUrl=null;this.forkQueue=[];this.currentFork=null;this.sessionToken=null;this.isDragging=!1;this.responsiveShowMain=!1;this.wrapperElement=null;this.mainFrameElement=null;this.forkFrameElement=null;this.mainIframe=null;this.forkIframe=null;this.dragHandleElement=null;this.forkExpandButton=null;this.forkToolbarElement=null;this.mainContainer=null;this.dialogBackdrop=null;this.dialogElement=null;this.dialogExpandButton=null;this.mouseMoveHandler=null;this.mouseUpHandler=null;this.resizeObserver=null;this.messageHandler=null;this.backdropClickHandler=null;this.destroyed=!1;this.lastForkActive=null;this.stoppedPlaceholder=null;this.capWidgetInstance=null;this.options=t;let n=t.forkDisplay??{mode:"side-by-side"};n.mode==="dialog"?this.forkDisplay={...n,resizeToContent:n.resizeToContent??!0,backdropClose:n.backdropClose??!0}:this.forkDisplay=n,this.splitPercentage=this.forkDisplay.mode==="side-by-side"?this.forkDisplay.split??50:50,this.darkMode=t.darkMode??!1,this.autoResizing=t.autoResizing??!1;let r=typeof t.container=="string"?document.getElementById(t.container):t.container;if(!r)throw new Error(`Container with id '${t.container}' not found`);this.container=r;let o=Un({id:t.id});this.client=fa(o,t.id),this.injectDefaultStyles(),this.createRootElement(),this.createInitialStructure(),this.setupDragListeners(),this.setupResizeObserver(),this.setupMessageListener(),this.init()}static{this.COLLAPSE_THRESHOLD=15}static{this.RESPONSIVE_BREAKPOINT=900}static{this.DIALOG_FULLSCREEN_BREAKPOINT=639}createInitialStructure(){this.forkDisplay.mode==="dialog"?this.createDialogStructure():this.createSideBySideStructure()}setupResizeObserver(){this.rootElement&&(this.resizeObserver=new ResizeObserver(()=>{this.forkDisplay.mode==="side-by-side"&&this.currentFork&&this.updateSideBySideVisibility(),this.forkDisplay.mode==="dialog"&&this.dialogElement&&window.innerWidth<=e.DIALOG_FULLSCREEN_BREAKPOINT&&(this.dialogElement.style.height="")}),this.resizeObserver.observe(this.rootElement))}getOrigin(t){try{return new URL(t).origin}catch{return null}}isValidMessageOrigin(t){if(this.mainUrl){let n=this.getOrigin(this.mainUrl);if(n&&t===n)return!0}if(this.currentFork?.url){let n=this.getOrigin(this.currentFork.url);if(n&&t===n)return!0}return!1}setupMessageListener(){this.messageHandler=t=>{if(!this.isValidMessageOrigin(t.origin))return;let n=t.data;if(!n||typeof n!="object"||n.type!=="adapt-resize")return;let{height:r}=n;if(typeof r!="number"||!Number.isFinite(r)||r<1)return;let o=t.source;if(this.mainIframe?.contentWindow===o)this.autoResizing&&(this.mainIframe.style.height=`${r}px`);else if(this.forkIframe?.contentWindow===o&&(this.autoResizing&&(this.forkIframe.style.height=`${r}px`),this.forkDisplay.mode==="dialog"&&this.forkDisplay.resizeToContent&&this.dialogElement&&window.innerWidth>e.DIALOG_FULLSCREEN_BREAKPOINT)){let a=this.forkToolbarElement?.offsetHeight??36,u=Math.ceil(r)+a+24+2;this.dialogElement.style.height=`clamp(300px, ${u}px, 90vh)`}},window.addEventListener("message",this.messageHandler)}sendDarkModeToIframe(t){if(!t)return;let n=t.src,r=n?this.getOrigin(n):null;if(!r)return;let o={type:"adapt-darkMode",darkMode:this.darkMode};try{t.contentWindow?.postMessage(o,r)}catch{}}sendAutoResizingToIframe(t){if(!t)return;let n=t.src,r=n?this.getOrigin(n):null;if(!r)return;let o=this.autoResizing;t===this.forkIframe&&this.forkDisplay.mode==="dialog"&&this.forkDisplay.resizeToContent&&(o=!0);let a={type:"adapt-autoResizing",autoResizing:o};try{t.contentWindow?.postMessage(a,r)}catch{}}sendAutoResizingToForkIframe(t){if(!this.forkIframe)return;let n=this.forkIframe.src,r=n?this.getOrigin(n):null;if(!r)return;let o={type:"adapt-autoResizing",autoResizing:t};try{this.forkIframe.contentWindow?.postMessage(o,r)}catch{}}setDarkMode(t){this.darkMode!==t&&(this.darkMode=t,this.rootElement&&(t?this.rootElement.classList.add("mb-adapt--dark"):this.rootElement.classList.remove("mb-adapt--dark")),this.capWidgetInstance?.setDarkMode(t),this.sendDarkModeToIframe(this.mainIframe),this.sendDarkModeToIframe(this.forkIframe))}setAutoResizing(t){this.autoResizing!==t&&(this.autoResizing=t,this.sendAutoResizingToIframe(this.mainIframe),this.sendAutoResizingToIframe(this.forkIframe),t||(this.mainIframe&&(this.mainIframe.style.height=""),this.forkIframe&&(this.forkIframe.style.height="")))}setForkDisplayMode(t){this.forkDisplay.mode!==t&&(t==="side-by-side"?this.forkDisplay={mode:"side-by-side",split:this.splitPercentage}:this.forkDisplay={mode:"dialog",resizeToContent:!0,backdropClose:!0},this.mainIframe?.parentNode&&this.mainIframe.parentNode.removeChild(this.mainIframe),this.forkIframe?.parentNode&&this.forkIframe.parentNode.removeChild(this.forkIframe),this.rootElement&&(this.rootElement.innerHTML=""),this.wrapperElement=null,this.mainFrameElement=null,this.forkFrameElement=null,this.dragHandleElement=null,this.forkExpandButton=null,this.forkToolbarElement=null,this.mainContainer=null,this.dialogBackdrop=null,this.dialogElement=null,this.dialogExpandButton=null,this.backdropClickHandler=null,t==="dialog"?this.createDialogStructure():this.createSideBySideStructure(),t==="side-by-side"?this.updateSideBySideVisibility():this.updateDialogVisibility(),this.mainUrl&&this.mainIframe&&this.showIframe(this.mainIframe),this.currentFork&&this.forkIframe&&this.showIframe(this.forkIframe),this.autoResizing&&(this.sendAutoResizingToIframe(this.mainIframe),this.sendAutoResizingToIframe(this.forkIframe)),t==="side-by-side"&&!this.currentFork&&this.forkQueue.length>0&&this.activateNextFork())}setDialogBackdropClose(t){this.forkDisplay.mode==="dialog"&&this.forkDisplay.backdropClose!==t&&(this.forkDisplay={...this.forkDisplay,backdropClose:t},this.dialogBackdrop&&(this.backdropClickHandler&&(this.dialogBackdrop.removeEventListener("click",this.backdropClickHandler),this.backdropClickHandler=null),t&&(this.backdropClickHandler=()=>{this.handleForkMinimize()},this.dialogBackdrop.addEventListener("click",this.backdropClickHandler))))}setDialogResizeToContent(t){this.forkDisplay.mode==="dialog"&&this.forkDisplay.resizeToContent!==t&&(this.forkDisplay={...this.forkDisplay,resizeToContent:t},t?this.sendAutoResizingToForkIframe(!0):(this.dialogElement&&(this.dialogElement.style.height=""),this.autoResizing||this.sendAutoResizingToForkIframe(!1)))}setupDragListeners(){let t=this.splitPercentage,n=!1,r=a=>{if(!this.isDragging||!this.rootElement)return;let i=this.rootElement.getBoundingClientRect();if(i.width===0)return;t=(a.clientX-i.left)/i.width*100;let u=t,m=100-t;u<e.COLLAPSE_THRESHOLD?n||(n=!0,this.splitPercentage=0,this.updateSideBySideVisibility()):m<e.COLLAPSE_THRESHOLD?n||(n=!0,this.splitPercentage=100,this.updateSideBySideVisibility()):(n=!1,this.splitPercentage=Math.max(e.COLLAPSE_THRESHOLD,Math.min(100-e.COLLAPSE_THRESHOLD,t)),this.updateSideBySideWidths())},o=()=>{this.isDragging&&(this.isDragging=!1,n=!1,document.getElementById("mb-adapt-drag-overlay")?.remove(),this.rootElement?.querySelectorAll(".mb-adapt__iframe-overlay").forEach(a=>a.remove()),this.mainFrameElement&&(this.mainFrameElement.style.transition=""),this.forkFrameElement&&(this.forkFrameElement.style.transition=""),this.dragHandleElement&&(this.dragHandleElement.style.transition=""),this.splitPercentage!==0&&this.splitPercentage!==100&&t>=e.COLLAPSE_THRESHOLD&&100-t>=e.COLLAPSE_THRESHOLD&&(this.splitPercentage=t),t=this.splitPercentage,this.saveState())};this.mouseMoveHandler=r,this.mouseUpHandler=o,document.addEventListener("mousemove",this.mouseMoveHandler),document.addEventListener("mouseup",this.mouseUpHandler)}injectDefaultStyles(){if(document.getElementById("mb-adapt-styles"))return;let t=document.createElement("style");t.id="mb-adapt-styles",t.textContent=Ws,document.head.appendChild(t)}createRootElement(){this.rootElement=document.createElement("div"),this.rootElement.className=this.options.classNames?.root||"mb-adapt",this.darkMode&&this.rootElement.classList.add("mb-adapt--dark"),this.options.styles&&Object.assign(this.rootElement.style,this.options.styles),this.container.appendChild(this.rootElement)}parseInheritToken(){let t=this.options.inheritFrom;return t?"hash"in t?this.parseFromHash(t.hash):this.parseFromParam(t.param):null}parseFromHash(t){let n=window.location.hash.slice(1);if(!n)return null;let r=new URLSearchParams(n),o=r.get(t);if(!o)return null;r.delete(t);let a=r.toString(),i=window.location.pathname+window.location.search+(a?"#"+a:"");return history.replaceState(null,"",i),decodeURIComponent(o)}parseFromParam(t){let n=new URLSearchParams(window.location.search),r=n.get(t);if(!r)return null;n.delete(t);let o=n.toString(),a=window.location.pathname+(o?"?"+o:"")+window.location.hash;return history.replaceState(null,"",a),decodeURIComponent(r)}async init(){let t={onUrl:n=>this.onUrl(n),onSession:n=>{n.status==="STATUS_COMPLETED"&&!n.fork&&this.handleSessionComplete(),!n.fork&&(n.status==="STATUS_COMPLETED"||n.status==="STATUS_STOPPED"||n.status==="STATUS_ERRORED")&&this.clearState(),this.options.onSession&&this.options.onSession(n.status||"STATUS_UNSPECIFIED",n.fork)}};if(this.options.onOutput&&(t.onOutput=this.options.onOutput),!(!this.options.sessionToken&&this.resolvePersistOptions()&&await this.tryRestoreSession(t)))if(this.options.sessionToken)this.sessionToken=this.options.sessionToken,await this.client.subscribe(this.sessionToken,t);else{let n=this.parseInheritToken(),r=n||this.options.inheritToken;if(this.options.inheritFrom&&!n){let i="hash"in this.options.inheritFrom?`hash key '${this.options.inheritFrom.hash}'`:`param '${this.options.inheritFrom.param}'`;console.error(`[AdaptWebClient] No inherit token found in URL ${i}`);return}let o=this.options.challengeToken;if(this.options.requiresChallenge&&!o&&!r&&(o=await this.showCapWidgetAndSolve(),!o)){console.error("[AdaptWebClient] Failed to solve challenge");return}let a;if(r)a=await this.client.runInherit(r,t);else{let i={...t};this.options.transmitter!==void 0&&(i.transmitter=this.options.transmitter),this.options.signals!==void 0&&(i.signals=this.options.signals),this.options.authToken!==void 0&&(i.authToken=this.options.authToken),o!==void 0&&(i.challengeToken=o),a=await this.client.run(i)}this.sessionToken=a.sessionToken,this.sessionExpiresAt=a.expiresAt,this.saveState()}}async showCapWidgetAndSolve(){return new Promise(t=>{this.capWidgetInstance=new ie({container:this.rootElement,automationId:this.options.id,client:this.client.raw,...this.options.capWidgetOptions?.workerCount!==void 0&&{workerCount:this.options.capWidgetOptions.workerCount},...this.options.capWidgetOptions?.i18n&&{i18n:this.options.capWidgetOptions.i18n},onSolve:n=>{this.capWidgetInstance=null,t(n)},onError:n=>{console.error("[AdaptWebClient] Cap.js error:",n),this.capWidgetInstance=null,t(void 0)}}),this.darkMode&&this.capWidgetInstance.setDarkMode(!0)})}destroyCapWidget(){this.capWidgetInstance&&(this.capWidgetInstance.destroy(),this.capWidgetInstance=null)}resolvePersistOptions(){let t=this.options.persist;return t?t===!0?{storage:"session",ttl:3600}:{storage:t.storage??"session",ttl:t.ttl??3600}:null}getStorageKey(){return`mb_adapt_${this.options.id}`}getStorage(){let t=this.resolvePersistOptions();return t?t.storage==="local"?localStorage:sessionStorage:null}saveState(){let t=this.getStorage();if(!t||!this.sessionToken)return;let n=this.resolvePersistOptions(),r={v:1,token:this.sessionToken,expiresAt:this.sessionExpiresAt?this.sessionExpiresAt.toISOString():null,savedAt:Date.now(),ttl:n.ttl,mainUrl:this.mainUrl,mainToken:this.mainToken,currentFork:this.currentFork?{url:this.currentFork.url,token:this.currentFork.token,fork:this.currentFork.fork,depth:this.currentFork.depth,time:this.currentFork.time,completed:this.currentFork.completed}:null,forkQueue:this.forkQueue.map(o=>({url:o.url,token:o.token,fork:o.fork,depth:o.depth,time:o.time,completed:o.completed})),forkDisplayMode:this.forkDisplay.mode,splitPercentage:this.splitPercentage};t.setItem(this.getStorageKey(),JSON.stringify(r))}loadState(){let t=this.getStorage();if(!t)return null;let n=t.getItem(this.getStorageKey());if(!n)return null;let r;try{r=JSON.parse(n)}catch{return this.clearState(),null}if(r.v!==1)return this.clearState(),null;let o=Date.now(),a=3e4;if(o-r.savedAt>r.ttl*1e3+a)return this.clearState(),null;if(r.expiresAt){let i=new Date(r.expiresAt).getTime();if(o>i+a)return this.clearState(),null}return r}clearState(){let t=this.getStorage();t&&t.removeItem(this.getStorageKey())}async tryRestoreSession(t){let n=this.loadState();if(!n)return!1;if(this.sessionToken=n.token,this.sessionExpiresAt=n.expiresAt?new Date(n.expiresAt):void 0,this.mainUrl=n.mainUrl,this.mainToken=n.mainToken,this.forkQueue=n.forkQueue,this.currentFork=n.currentFork,n.forkDisplayMode===this.forkDisplay.mode&&this.forkDisplay.mode==="side-by-side"&&(this.splitPercentage=n.splitPercentage),this.mainUrl&&this.mainIframe){let r=Ft(this.mainUrl,this.mainToken);this.mainIframe.src!==r&&(this.mainIframe.src=r),this.showIframe(this.mainIframe)}this.currentFork&&this.forkIframe&&this.updateForkIframe(),this.forkDisplay.mode==="dialog"?this.updateDialogVisibility():this.updateSideBySideVisibility();try{await this.client.subscribe(n.token,t),t.onSession?.({status:"STATUS_RUNNING"})}catch{return this.clearState(),this.sessionToken=null,this.sessionExpiresAt=void 0,this.mainUrl=null,this.mainToken=void 0,this.forkQueue=[],this.currentFork=null,this.mainIframe&&(this.mainIframe.src="about:blank",this.mainIframe.classList.remove("mb-adapt__iframe--visible")),this.forkIframe&&(this.forkIframe.src="about:blank",this.forkIframe.classList.remove("mb-adapt__iframe--visible"),this.forkIframe.classList.add("mb-adapt__iframe--hidden")),this.forkDisplay.mode==="side-by-side"?this.updateSideBySideVisibility():this.updateDialogVisibility(),!1}return!0}async newSession(){this.clearState(),this.sessionToken&&this.client.stop(this.sessionToken).catch(()=>{}),await this.client.unsubscribe(),this.mainUrl=null,this.mainToken=void 0,this.forkQueue=[],this.currentFork=null,this.sessionToken=null,this.sessionExpiresAt=void 0,this.lastForkActive=null,this.mainIframe&&(this.mainIframe.src="about:blank",this.mainIframe.classList.remove("mb-adapt__iframe--visible")),this.forkIframe&&(this.forkIframe.src="about:blank",this.forkIframe.classList.remove("mb-adapt__iframe--visible"),this.forkIframe.classList.add("mb-adapt__iframe--hidden")),this.removeStoppedPlaceholder(),this.forkDisplay.mode==="side-by-side"?this.updateSideBySideVisibility():this.updateDialogVisibility(),await this.init()}async destroy(){this.destroyed=!0,this.destroyCapWidget(),this.sessionToken&&!this.loadState()&&this.client.stop(this.sessionToken).catch(()=>{}),await this.client.unsubscribe(),this.mouseMoveHandler&&document.removeEventListener("mousemove",this.mouseMoveHandler),this.mouseUpHandler&&document.removeEventListener("mouseup",this.mouseUpHandler),this.messageHandler&&window.removeEventListener("message",this.messageHandler),this.resizeObserver&&this.resizeObserver.disconnect(),this.rootElement?.parentNode?.removeChild(this.rootElement),this.mainUrl=null,this.mainToken=void 0,this.forkQueue=[],this.currentFork=null,this.sessionToken=null,this.lastForkActive=null,this.rootElement=null,this.wrapperElement=null,this.mainFrameElement=null,this.forkFrameElement=null,this.mainIframe=null,this.forkIframe=null,this.dragHandleElement=null,this.forkExpandButton=null,this.forkToolbarElement=null,this.mainContainer=null,this.dialogBackdrop=null,this.dialogElement=null,this.dialogExpandButton=null,this.mouseMoveHandler=null,this.mouseUpHandler=null,this.resizeObserver=null,this.messageHandler=null,this.backdropClickHandler=null,this.stoppedPlaceholder=null}onUrl(t){if(this.destroyed)return;let n=t.fork||"";if(t.stopped){this.handleStoppedMessage(n),this.saveState();return}if(t.done){this.handleDoneMessage(n),this.saveState();return}t.url&&(n?this.handleForkUrl(t.url,t.token,n):this.handleMainUrl(t.url,t.token),this.saveState())}handleSessionComplete(){this.currentFork=null,this.forkQueue=[],this.forkDisplay.mode==="side-by-side"?this.updateSideBySideVisibility():this.forkDisplay.mode==="dialog"&&this.updateDialogVisibility()}handleDoneMessage(t){t&&(this.forkQueue=this.forkQueue.filter(n=>n.fork!==t&&!n.completed),this.currentFork?.fork===t?this.forkQueue.length>0?(this.currentFork=null,this.activateNextFork()):this.currentFork.completed=!0:this.forkDisplay.mode==="dialog"&&this.updateDialogVisibility())}handleStoppedMessage(t){if(!t){this.mainUrl=null,this.mainToken=void 0,this.mainIframe&&(this.mainIframe.src="about:blank",this.mainIframe.classList.remove("mb-adapt__iframe--visible"),this.mainIframe.classList.add("mb-adapt__iframe--hidden")),this.showStoppedPlaceholder();return}this.forkQueue=this.forkQueue.filter(n=>n.fork!==t),this.currentFork?.fork===t?(this.currentFork=null,this.forkQueue.length>0?this.activateNextFork():(this.forkIframe&&(this.forkIframe.src="about:blank",this.forkIframe.classList.remove("mb-adapt__iframe--visible"),this.forkIframe.classList.add("mb-adapt__iframe--hidden")),this.forkDisplay.mode==="side-by-side"?this.updateSideBySideVisibility():this.updateDialogVisibility())):this.forkDisplay.mode==="dialog"&&this.updateDialogVisibility()}handleMainUrl(t,n){this.removeStoppedPlaceholder(),this.mainUrl=t,this.mainToken=n,this.updateMainIframe()}handleForkUrl(t,n,r){let o=(r.match(/\//g)||[]).length,a={url:t,token:n,fork:r,depth:o,time:Date.now()};this.mainUrl||(this.mainUrl=t,this.mainToken=n,this.updateMainIframe()),this.forkQueue.push(a),(!this.currentFork||this.currentFork.completed)&&(this.currentFork=null,this.activateNextFork())}activateNextFork(){this.forkQueue.length!==0&&(this.forkQueue.sort((t,n)=>t.depth!==n.depth?n.depth-t.depth:n.time-t.time),this.currentFork=this.forkQueue.shift(),this.updateForkIframe(),this.forkDisplay.mode==="dialog"?this.updateDialogVisibility():this.updateSideBySideVisibility(),this.saveState())}updateMainIframe(){if(!this.rootElement||!this.mainUrl||!this.mainIframe)return;let t=Ft(this.mainUrl,this.mainToken);this.mainIframe.src!==t&&(this.mainIframe.src=t),this.showIframe(this.mainIframe),this.forkDisplay.mode==="side-by-side"&&this.updateSideBySideVisibility()}updateForkIframe(){if(!this.currentFork||!this.forkIframe)return;let t=Ft(this.currentFork.url,this.currentFork.token),n=this.forkIframe.parentElement;if(n){let r=this.createHiddenIframe();n.replaceChild(r,this.forkIframe),this.forkIframe=r}this.forkIframe.src=t,this.showIframe(this.forkIframe)}createSideBySideStructure(){this.wrapperElement||(this.rootElement.innerHTML="",this.wrapperElement=document.createElement("div"),this.wrapperElement.className=this.options.classNames?.wrapper||"mb-adapt__wrapper",this.mainFrameElement=document.createElement("div"),this.mainFrameElement.className=this.options.classNames?.frameMain||`${this.options.classNames?.frame||"mb-adapt__frame"} mb-adapt__frame--main`,this.mainFrameElement.classList.add("mb-adapt__frame--hidden"),this.forkFrameElement=document.createElement("div"),this.forkFrameElement.className=this.options.classNames?.frameFork||`${this.options.classNames?.frame||"mb-adapt__frame"} mb-adapt__frame--fork`,this.forkFrameElement.classList.add("mb-adapt__frame--hidden"),this.mainIframe||(this.mainIframe=this.createHiddenIframe()),this.forkIframe||(this.forkIframe=this.createHiddenIframe()),this.forkIframe.style.borderRadius="",this.mainFrameElement.appendChild(this.mainIframe),this.forkToolbarElement=this.createForkToolbar(),this.forkFrameElement.classList.add("mb-adapt__frame--has-toolbar"),this.forkFrameElement.appendChild(this.forkToolbarElement),this.forkFrameElement.appendChild(this.forkIframe),this.dragHandleElement=document.createElement("div"),this.dragHandleElement.className=this.options.classNames?.dragHandle||"mb-adapt__drag-handle",this.dragHandleElement.classList.add("mb-adapt__frame--hidden"),this.dragHandleElement.style.transform="translateX(-50%)",this.dragHandleElement.addEventListener("mousedown",t=>{t.preventDefault(),this.isDragging=!0,this.mainFrameElement&&(this.mainFrameElement.style.transition="none"),this.forkFrameElement&&(this.forkFrameElement.style.transition="none"),this.dragHandleElement&&(this.dragHandleElement.style.transition="none");let n=document.createElement("div");n.className="mb-adapt__drag-overlay",n.id="mb-adapt-drag-overlay",this.rootElement.appendChild(n),[this.mainFrameElement,this.forkFrameElement].forEach(r=>{if(r){let o=document.createElement("div");o.className="mb-adapt__iframe-overlay",r.appendChild(o)}})}),this.forkExpandButton=document.createElement("button"),this.forkExpandButton.className=this.options.classNames?.expandButton||"mb-adapt__expand-button",this.forkExpandButton.classList.add("mb-adapt__expand-button--right"),this.forkExpandButton.innerHTML="\u2039",this.forkExpandButton.setAttribute("aria-label","Expand fork frame"),this.forkExpandButton.setAttribute("title","Expand fork frame"),this.forkExpandButton.addEventListener("click",()=>{this.isResponsiveMode()?this.responsiveShowMain=!1:this.splitPercentage=50,this.updateSideBySideVisibility(),this.saveState()}),this.wrapperElement.appendChild(this.mainFrameElement),this.wrapperElement.appendChild(this.forkFrameElement),this.wrapperElement.appendChild(this.dragHandleElement),this.wrapperElement.appendChild(this.forkExpandButton),this.rootElement.appendChild(this.wrapperElement))}isResponsiveMode(){return this.rootElement?this.rootElement.offsetWidth<e.RESPONSIVE_BREAKPOINT:!1}emitForkActive(){if(!this.options.onForkActive)return;let t;this.currentFork?this.forkDisplay.mode==="dialog"?t=!0:t=100-this.splitPercentage>=e.COLLAPSE_THRESHOLD&&!this.isResponsiveMode():t=!1,t!==this.lastForkActive&&(this.lastForkActive=t,this.options.onForkActive(t))}updateSideBySideVisibility(){if(!this.mainFrameElement||!this.forkFrameElement||!this.dragHandleElement)return;if(!this.currentFork){this.mainFrameElement.style.width="100%",this.mainFrameElement.classList.remove("mb-adapt__frame--hidden"),this.forkFrameElement.classList.add("mb-adapt__frame--hidden"),this.mainFrameElement.style.paddingRight="",this.dragHandleElement.classList.add("mb-adapt__frame--hidden"),this.forkExpandButton.classList.remove("mb-adapt__expand-button--visible"),this.emitForkActive();return}if(this.isResponsiveMode()){this.dragHandleElement.classList.add("mb-adapt__frame--hidden"),this.responsiveShowMain?(this.mainFrameElement.style.width="100%",this.mainFrameElement.classList.remove("mb-adapt__frame--hidden"),this.forkFrameElement.style.width="0%",this.forkFrameElement.classList.add("mb-adapt__frame--hidden"),this.forkExpandButton.classList.add("mb-adapt__expand-button--visible"),this.mainFrameElement.style.paddingRight="24px"):(this.mainFrameElement.style.width="0%",this.mainFrameElement.classList.add("mb-adapt__frame--hidden"),this.forkFrameElement.style.width="100%",this.forkFrameElement.classList.remove("mb-adapt__frame--hidden"),this.forkExpandButton.classList.remove("mb-adapt__expand-button--visible"),this.mainFrameElement.style.paddingRight=""),this.emitForkActive();return}this.responsiveShowMain=!1;let t=this.splitPercentage,n=100-this.splitPercentage,r=t<e.COLLAPSE_THRESHOLD,o=n<e.COLLAPSE_THRESHOLD;this.mainFrameElement.style.width=r?"0%":`${t}%`,r?this.mainFrameElement.classList.add("mb-adapt__frame--hidden"):this.mainFrameElement.classList.remove("mb-adapt__frame--hidden"),this.forkFrameElement.style.width=o?"0%":`${n}%`,o?this.forkFrameElement.classList.add("mb-adapt__frame--hidden"):this.forkFrameElement.classList.remove("mb-adapt__frame--hidden"),this.dragHandleElement.style.left=`${this.splitPercentage}%`,this.dragHandleElement.classList.remove("mb-adapt__frame--hidden"),r||o?this.dragHandleElement.classList.add("mb-adapt__drag-handle--disabled"):this.dragHandleElement.classList.remove("mb-adapt__drag-handle--disabled"),o?(this.forkExpandButton.classList.add("mb-adapt__expand-button--visible"),this.mainFrameElement.style.paddingRight="24px"):(this.forkExpandButton.classList.remove("mb-adapt__expand-button--visible"),this.mainFrameElement.style.paddingRight=""),this.emitForkActive()}updateSideBySideWidths(){if(!this.mainFrameElement||!this.forkFrameElement||!this.dragHandleElement)return;let t=this.splitPercentage,n=100-this.splitPercentage;this.mainFrameElement.style.width=`${t}%`,this.forkFrameElement.style.width=`${n}%`,this.dragHandleElement.style.left=`${this.splitPercentage}%`}createForkToolbar(){let t=document.createElement("div");t.className=this.options.classNames?.toolbar||"mb-adapt__toolbar";let n=document.createElement("div");n.className="mb-adapt__toolbar-actions";let r=document.createElement("button");r.className=this.options.classNames?.toolbarButton||"mb-adapt__toolbar-btn",r.setAttribute("aria-label","Minimize fork"),r.setAttribute("title","Minimize"),r.innerHTML='<svg viewBox="0 0 16 16"><line x1="3" y1="8" x2="13" y2="8"/></svg>',r.addEventListener("click",()=>{this.handleForkMinimize()});let o=document.createElement("button");return o.className=`${this.options.classNames?.toolbarButton||"mb-adapt__toolbar-btn"} mb-adapt__toolbar-btn--exit`,o.setAttribute("aria-label","Close fork"),o.setAttribute("title","Close"),o.innerHTML='<svg viewBox="0 0 16 16"><line x1="4" y1="4" x2="12" y2="12"/><line x1="12" y1="4" x2="4" y2="12"/></svg>',o.addEventListener("click",()=>{this.handleForkExit()}),n.appendChild(r),n.appendChild(o),t.appendChild(n),t}handleForkMinimize(){this.currentFork&&(this.forkDisplay.mode==="side-by-side"?(this.isResponsiveMode()&&(this.responsiveShowMain=!0),this.splitPercentage=100,this.updateSideBySideVisibility()):(this.forkQueue.unshift(this.currentFork),this.currentFork=null,this.updateDialogVisibility()),this.saveState())}handleForkExit(){if(!this.currentFork)return;let t=this.currentFork.fork;this.sessionToken&&this.client.stop(this.sessionToken,t).catch(()=>{}),this.forkQueue=this.forkQueue.filter(n=>n.fork!==t),this.currentFork=null,this.forkQueue.length>0?this.activateNextFork():(this.forkIframe&&(this.forkIframe.src="about:blank",this.forkIframe.classList.remove("mb-adapt__iframe--visible"),this.forkIframe.classList.add("mb-adapt__iframe--hidden")),this.forkDisplay.mode==="side-by-side"?this.updateSideBySideVisibility():this.updateDialogVisibility()),this.saveState()}createDialogStructure(){if(this.mainContainer)return;this.rootElement.innerHTML="",this.mainContainer=document.createElement("div"),this.mainContainer.className="mb-adapt__main-container",this.mainIframe||(this.mainIframe=this.createHiddenIframe()),this.mainContainer.appendChild(this.mainIframe),this.dialogExpandButton=document.createElement("button"),this.dialogExpandButton.className=this.options.classNames?.expandButton||"mb-adapt__expand-button",this.dialogExpandButton.classList.add("mb-adapt__expand-button--dialog"),this.dialogExpandButton.innerHTML="\u2304",this.dialogExpandButton.setAttribute("aria-label","Open fork dialog"),this.dialogExpandButton.setAttribute("title","Open fork dialog"),this.dialogExpandButton.addEventListener("click",()=>{this.activateNextFork()}),this.dialogBackdrop=document.createElement("div"),this.dialogBackdrop.className=this.options.classNames?.dialogBackdrop||"mb-adapt__dialog-backdrop",this.forkDisplay.mode==="dialog"&&this.forkDisplay.backdropClose&&(this.backdropClickHandler=()=>{this.handleForkMinimize()},this.dialogBackdrop.addEventListener("click",this.backdropClickHandler)),this.dialogElement=document.createElement("div"),this.dialogElement.className=this.options.classNames?.dialog||"mb-adapt__dialog",this.forkDisplay.mode==="dialog"&&this.forkDisplay.resizeToContent&&window.innerWidth>e.DIALOG_FULLSCREEN_BREAKPOINT&&(this.dialogElement.style.height="min(var(--mb-adapt-dialog-min-height), 90vh)"),this.forkToolbarElement=this.createForkToolbar(),this.dialogElement.appendChild(this.forkToolbarElement);let t=document.createElement("div");t.style.flex="1",t.style.overflow="auto",t.style.minHeight="0",t.style.padding="12px",this.forkIframe||(this.forkIframe=this.createHiddenIframe()),this.forkIframe.style.borderRadius="0",t.appendChild(this.forkIframe),this.dialogElement.appendChild(t),this.mainContainer.appendChild(this.dialogExpandButton),this.rootElement.appendChild(this.mainContainer),this.rootElement.appendChild(this.dialogBackdrop),this.rootElement.appendChild(this.dialogElement)}updateDialogVisibility(){if(!this.dialogExpandButton||!this.dialogBackdrop||!this.dialogElement)return;let t=this.forkQueue.length>0,n=this.currentFork!==null;!n&&t?(this.dialogExpandButton.classList.add("mb-adapt__expand-button--visible"),this.mainContainer.style.paddingTop="26px"):(this.dialogExpandButton.classList.remove("mb-adapt__expand-button--visible"),this.mainContainer.style.paddingTop=""),n?(this.dialogBackdrop.classList.add("mb-adapt__dialog-backdrop--visible"),this.dialogElement.classList.add("mb-adapt__dialog--visible")):(this.dialogBackdrop.classList.remove("mb-adapt__dialog-backdrop--visible"),this.dialogElement.classList.remove("mb-adapt__dialog--visible"),this.dialogElement.style.height=""),this.emitForkActive()}createHiddenIframe(){let t=document.createElement("iframe");return t.className=this.options.classNames?.iframe||"mb-adapt__iframe",t.setAttribute("sandbox","allow-downloads allow-same-origin allow-scripts allow-popups allow-forms allow-modals"),t.setAttribute("allow","geolocation; accelerometer; midi; microphone; camera; magnetometer; gyroscope; fullscreen; payment;"),t.src="about:blank",t.addEventListener("load",()=>{t.src&&t.src!=="about:blank"&&(this.sendDarkModeToIframe(t),this.sendAutoResizingToIframe(t))}),t}showStoppedPlaceholder(){if(!this.mainFrameElement&&!this.mainContainer)return;this.removeStoppedPlaceholder(),this.stoppedPlaceholder=document.createElement("div"),this.stoppedPlaceholder.className="mb-adapt__stopped-placeholder",this.stoppedPlaceholder.textContent="This session has been stopped",(this.mainFrameElement||this.mainContainer).appendChild(this.stoppedPlaceholder)}removeStoppedPlaceholder(){this.stoppedPlaceholder&&(this.stoppedPlaceholder.remove(),this.stoppedPlaceholder=null)}showIframe(t){t.classList.remove("mb-adapt__iframe--hidden"),t.offsetHeight,t.classList.add("mb-adapt__iframe--visible")}};return Ja(Es);})();
|